- Aug 05, 2009
-
-
Evan Cheng authored
llvm-svn: 78126
-
- Aug 01, 2009
-
-
Evan Cheng authored
instructions for calls since BL and BLX are always 32-bit long and BX is always 16-bit long. Also, we should be using BLX to call external function stubs. llvm-svn: 77756
-
- Jul 29, 2009
-
-
Evan Cheng authored
llvm-svn: 77507
-
Evan Cheng authored
- Darwin Thumb2 call clobbers r9. llvm-svn: 77500
-
- Jul 28, 2009
-
-
Evan Cheng authored
In thumb2 mode, add pc is unpredictable. Use add + mov pc instead (that is until more optimization goes in). llvm-svn: 77364
-
- Jul 27, 2009
-
-
David Goodwin authored
Remove TPat. No patterns depend on just isThumb(). Must use either T1Pat (isThumb1Only()) or T2Pat (is Thumb2). llvm-svn: 77242
-
Evan Cheng authored
Rename tMOVhi2lor to tMOVgpr2tgpr. It's not moving from a high register to a low register. It's moving from a GPR register class to a more restrictive tGPR class. Also change tMOVlor2hir, and tMOVhir2hir. llvm-svn: 77172
-
- Jul 23, 2009
-
-
Evan Cheng authored
Since we have moved unified assembly, switch to ADR instruction instead of a the difficult-to-read .set + add syntax to materialize pc-relative address. Turns out this also fixed a poor code selection on Thumb1. I have no idea why we were using a mov + add to do the same thing as ADR before. llvm-svn: 76889
-
Evan Cheng authored
llvm-svn: 76803
-
- Jul 22, 2009
-
-
Evan Cheng authored
llvm-svn: 76729
-
Evan Cheng authored
Add R12 to the list of registers clobbered by 16-bit Thumb calls as a pre-caution. r12 could be live once we have mixed 32-bit and 16-bit instructions. llvm-svn: 76728
-
- Jul 21, 2009
-
-
Evan Cheng authored
llvm-svn: 76600
-
- Jul 17, 2009
-
-
Evan Cheng authored
llvm-svn: 76155
-
- Jul 14, 2009
-
-
Evan Cheng authored
2. BX does not "use" the link register, it defines it. 3. Fix a couple more places in thumb td file that still uses pre-UAL syntax. llvm-svn: 75585
-
- Jul 11, 2009
-
-
Evan Cheng authored
llvm-svn: 75360
-
Evan Cheng authored
Major changes to Thumb (not Thumb2). Many 16-bit instructions either modifies CPSR when they are outside the IT blocks, or they can predicated when in Thumb2. Move the implicit def of CPSR to an optional def which defaults CPSR. This allows the 's' bit to be toggled dynamically. A side-effect of this change is asm printer is now using unified assembly. There are some minor clean ups and fixes as well. llvm-svn: 75359
-
- Jul 10, 2009
-
-
Evan Cheng authored
We don't need separate thumb1 instructions tADDSi3 etc. for addc and subc. The "normal" version always modify condition register CPSR so we should just use def : pat to match to the same instructions. llvm-svn: 75219
-
Evan Cheng authored
llvm-svn: 75218
-
Evan Cheng authored
llvm-svn: 75198
-
- Jul 09, 2009
-
-
David Goodwin authored
llvm-svn: 75067
-
- Jul 08, 2009
-
-
David Goodwin authored
Checkpoint Thumb2 Instr info work. Generalized base code so that it can be shared between ARM and Thumb2. Not yet activated because register information must be generalized first. llvm-svn: 75010
-
- Jun 30, 2009
-
-
David Goodwin authored
llvm-svn: 74543
-
Evan Cheng authored
llvm-svn: 74500
-
- Jun 29, 2009
-
-
David Goodwin authored
Rename ARMcmpNZ to ARMcmpZ and use it to represent comparisons that set only the Z flag (i.e. eq and ne). Make ARMcmpZ commutative. llvm-svn: 74423
-
Evan Cheng authored
After much back and forth, I decided to deviate from ARM design and split LDR into 4 instructions (r + imm12, r + imm8, r + r << imm12, constantpool). The advantage of this is 1) it follows the latest ARM technical manual, and 2) makes it easier to reduce the width of the instruction later. The down side is this creates more inconsistency between the two sub-targets. We should split ARM LDR instruction in a similar fashion later. I've added a README entry for this. llvm-svn: 74420
-
- Jun 27, 2009
-
-
Evan Cheng authored
llvm-svn: 74368
-
- Jun 26, 2009
-
-
Evan Cheng authored
llvm-svn: 74236
-
David Goodwin authored
llvm-svn: 74219
-
- Jun 25, 2009
-
-
David Goodwin authored
llvm-svn: 74185
-
Evan Cheng authored
llvm-svn: 74152
-
Evan Cheng authored
llvm-svn: 74141
-
- Jun 23, 2009
-
-
Evan Cheng authored
Add IsThumb1Only to most 16-bit thumb instructions since we want to isel 32-bit instructions when they are available. llvm-svn: 73985
-
Bob Wilson authored
another change that makes the types ambiguous (at least as far as tablegen is concerned). llvm-svn: 73909
-
- Jun 19, 2009
-
-
Eli Friedman authored
while experimenting. I'm reasonably sure this is correct, but please tell me if these instructions have some strange property which makes this change unsafe. llvm-svn: 73746
-
- Jun 12, 2009
-
-
Evan Cheng authored
llvm-svn: 73252
-
- May 13, 2009
-
-
Jim Grosbach authored
llvm-svn: 71602
-
- Apr 07, 2009
-
-
rdar://problem/6584986Jim Grosbach authored
When compiling in Thumb mode, only the low (R0-R7) registers are available for most instructions. Breaking the low registers into a new register class handles this. Uses of R12, SP, etc, are handled explicitly where needed with copies inserted to move results into low registers where the rest of the code generator can deal with them. llvm-svn: 68545
-
- Mar 28, 2009
-
-
Jim Grosbach authored
llvm-svn: 67874
-
- Dec 03, 2008
-
-
Dan Gohman authored
llvm-svn: 60487
-
- Sep 12, 2008
-
-
Dan Gohman authored
with ConstantInt. This led to fixing a bug in TargetLowering.cpp using getValue instead of getAPIntValue. llvm-svn: 56159
-