- Sep 28, 2009
-
-
Evan Cheng authored
instruction. This makes it re-materializable. Thumb2 will split it back out into two instructions so IT pass will generate the right mask. Also, this expose opportunies to optimize the movw to a 16-bit move. llvm-svn: 82982
-
- Aug 27, 2009
-
-
Evan Cheng authored
Fix PR4789. Teach eliminateFrameIndex how to handle VLDRQ and VSTRQ which cannot fold any immediate offset. llvm-svn: 80191
-
- Aug 15, 2009
-
-
Evan Cheng authored
llvm-svn: 79084
-
- Aug 11, 2009
-
-
Jim Grosbach authored
llvm-svn: 78666
-
- Aug 10, 2009
-
-
Evan Cheng authored
llvm-svn: 78550
-
- Aug 08, 2009
-
-
Evan Cheng authored
llvm-svn: 78455
-
Evan Cheng authored
llvm-svn: 78418
-
- Aug 02, 2009
-
-
Chris Lattner authored
the only real caller (GetFunctionSizeInBytes) uses it. The custom ARM implementation of this is basically reimplementing an assembler poorly for negligible gain. It should be removed IMNSHO, but I'll leave that to ARMish folks to decide. llvm-svn: 77877
-
- Jul 28, 2009
-
-
Evan Cheng authored
- This change also makes it possible to switch between ARM / Thumb on a per-function basis. - Fixed thumb2 routine which expand reg + arbitrary immediate. It was using using ARM so_imm logic. - Use movw and movt to do reg + imm when profitable. - Other code clean ups and minor optimizations. llvm-svn: 77300
-
- Jul 27, 2009
-
-
Evan Cheng authored
llvm-svn: 77231
-
Evan Cheng authored
llvm-svn: 77227
-
Evan Cheng authored
llvm-svn: 77221
-
Evan Cheng authored
This also fixes potential problems in ARMBaseInstrInfo routines not recognizing thumb1 instructions when 32-bit and 16-bit instructions mix. llvm-svn: 77218
-
Evan Cheng authored
llvm-svn: 77181
-
- Jul 25, 2009
-
-
Evan Cheng authored
Before: adr r12, #LJTI3_0_0 ldr pc, [r12, +r0, lsl #2] LJTI3_0_0: .long LBB3_24 .long LBB3_30 .long LBB3_31 .long LBB3_32 After: adr r12, #LJTI3_0_0 add pc, r12, +r0, lsl #2 LJTI3_0_0: b.w LBB3_24 b.w LBB3_30 b.w LBB3_31 b.w LBB3_32 This has several advantages. 1. This will make it easier to optimize this to a TBB / TBH instruction + (smaller) table. 2. This eliminate the need for ugly asm printer hack to force the address into thumb addresses (bit 0 is one). 3. Same codegen for pic and non-pic. 4. This eliminate the need to align the table so constantpool island pass won't have to over-estimate the size. Based on my calculation, the later is probably slightly faster as well since ldr pc with shifter address is very slow. That is, it should be a win as long as the HW implementation can do a reasonable job of branch predict the second branch. llvm-svn: 77024
-
- Jul 24, 2009
-
-
Eli Friedman authored
llvm-svn: 76960
-
Evan Cheng authored
FLDD, FLDS, FCPYD, FCPYS, FSTD, FSTS, VMOVD, VMOVQ maps to the same instructions on all sub-targets. llvm-svn: 76925
-
David Goodwin authored
Correctly handle the Thumb-2 imm8 addrmode. Specialize frame index elimination more exactly for Thumb-2 to get better code gen. llvm-svn: 76919
-
- Jul 23, 2009
-
-
David Goodwin authored
Fix frame index elimination to correctly handle thumb-2 addressing modes that don't allow negative offsets. During frame elimination convert *i12 opcode to a *i8 when necessary due to a negative offset. llvm-svn: 76883
-
- Jul 19, 2009
-
-
Evan Cheng authored
llvm-svn: 76374
-
- Jul 17, 2009
-
-
Anton Korobeynikov authored
Minor code duplication cleanup. llvm-svn: 76124
-
- Jul 10, 2009
-
-
Evan Cheng authored
llvm-svn: 75217
-
- Jul 08, 2009
-
-
David Goodwin authored
llvm-svn: 75036
-
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
-
Evan Cheng authored
Add a Thumb2 instruction flag to that indicates whether the instruction can be transformed to 16-bit variant. llvm-svn: 74988
-
- Jul 03, 2009
-
-
David Goodwin authored
Checkpoint refactoring of ThumbInstrInfo and ThumbRegisterInfo into Thumb1InstrInfo, Thumb2InstrInfo, Thumb1RegisterInfo and Thumb2RegisterInfo. Move methods from ARMInstrInfo to ARMBaseInstrInfo to prepare for sharing with Thumb2. llvm-svn: 74731
-
- Jul 02, 2009
-
-
Bob Wilson authored
llvm-svn: 74658
-
- Jun 30, 2009
-
-
Evan Cheng authored
llvm-svn: 74500
-
- Jun 29, 2009
-
-
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
-
-
Anton Korobeynikov authored
llvm-svn: 74384
-
- Jun 26, 2009
-
-
Anton Korobeynikov authored
Step 1: ARMInstructionInfo => {ARM,Thumb}InstructionInfo llvm-svn: 74329
-
- Jun 23, 2009
-
-
Bob Wilson authored
This is still a work in progress but most of the NEON instruction set is supported. llvm-svn: 73919
-
- Feb 09, 2009
-
-
Evan Cheng authored
suprise to some callers, e.g. register coalescer. For now, add an parameter that tells AnalyzeBranch whether it's safe to modify the mbb. A better solution is out there, but I don't have time to deal with it right now. llvm-svn: 64124
-
- Feb 06, 2009
-
-
Evan Cheng authored
llvm-svn: 63938
-
- Jan 20, 2009
-
-
Evan Cheng authored
llvm-svn: 62600
-
- Dec 03, 2008
-
-
Dan Gohman authored
parts, and add target-independent code to add/preserve MachineMemOperands. llvm-svn: 60488
-
- Nov 18, 2008
-
-
Dan Gohman authored
llvm-svn: 59542
-
- Nov 14, 2008
-
-
Evan Cheng authored
llvm-svn: 59275
-
- Nov 13, 2008
-
-
Evan Cheng authored
llvm-svn: 59230
-
- Nov 12, 2008
-
-
Evan Cheng authored
llvm-svn: 59109
-