- Oct 18, 2009
-
-
Evan Cheng authored
stack slots and giving them different PseudoSourceValue's did not fix the problem of post-alloc scheduling miscompiling llvm itself. - Apply Dan's conservative workaround by assuming any non fixed stack slots can alias other memory locations. This means a load from spill slot #1 cannot move above a store of spill slot #2. - Enable post-alloc scheduling for x86 at optimization leverl Default and above. llvm-svn: 84424
-
- Oct 17, 2009
-
-
Evan Cheng authored
Distinquish stack slots from other stack objects. They (and fixed objects) get FixedStack PseudoSourceValues. llvm-svn: 84326
-
Evan Cheng authored
llvm-svn: 84321
-
Evan Cheng authored
necessarily fixed. Only those will negative frame indices are "fixed." llvm-svn: 84315
-
- Oct 07, 2009
-
-
Anton Korobeynikov authored
and register spills. llvm-svn: 83435
-
- Sep 28, 2009
-
-
Jakob Stoklund Olesen authored
unused DECLARE instruction. KILL is not yet used anywhere, it will replace TargetInstrInfo::IMPLICIT_DEF in the places where IMPLICIT_DEF is just used to alter liveness of physical registers. llvm-svn: 83006
-
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
-
- Sep 13, 2009
-
-
Anton Korobeynikov authored
constraint the register usage. llvm-svn: 81635
-
- Sep 08, 2009
-
-
Anton Korobeynikov authored
makes the code faster. llvm-svn: 81220
-
- 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 22, 2009
-
-
Chris Lattner authored
llvm-svn: 79777
-
Chris Lattner authored
llvm-svn: 79763
-
Devang Patel authored
llvm-svn: 79742
-
- Aug 11, 2009
-
-
Jim Grosbach authored
llvm-svn: 78701
-
Jim Grosbach authored
llvm-svn: 78683
-
Jim Grosbach authored
llvm-svn: 78666
-
- Aug 10, 2009
-
-
Evan Cheng authored
llvm-svn: 78558
-
Evan Cheng authored
llvm-svn: 78557
-
- Aug 08, 2009
-
-
Anton Korobeynikov authored
llvm-svn: 78468
-
Evan Cheng authored
llvm-svn: 78455
-
- Aug 07, 2009
-
-
Evan Cheng authored
llvm-svn: 78397
-
Evan Cheng authored
It turns out most of the thumb2 instructions are not allowed to touch SP. The semantics of such instructions are unpredictable. We have just been lucky that tests have been passing. This patch takes pain to ensure all the PEI lowering code does the right thing when lowering frame indices, insert code to manipulate stack pointers, etc. It's also custom lowering dynamic stack alloc into pseudo instructions so we can insert the right instructions at scheduling time. This fixes PR4659 and PR4682. llvm-svn: 78361
-
- Aug 05, 2009
-
-
David Goodwin authored
When using NEON for single-precision FP, the NEON result must be placed in D0-D15 as these are the only D registers with S subregs. Introduce a new regclass to represent D0-D15 and use it in the NEON single-precision FP patterns. llvm-svn: 78244
-
- 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
-
- Aug 01, 2009
-
-
Evan Cheng authored
llvm-svn: 77781
-
Evan Cheng authored
llvm-svn: 77744
-
- Jul 31, 2009
-
-
Evan Cheng authored
is scaled by two. - Teach GetInstSizeInBytes about TBB and TBH. llvm-svn: 77701
-
- 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
convertToThreeAddress can't handle Thumb2 instructions (which don't have same address mode as ARM instructions). llvm-svn: 77230
-
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: 77182
-
Evan Cheng authored
llvm-svn: 77181
-
Evan Cheng authored
Use the right instructions to copy between GPR and the more strictive tGPR classes. t2MOV does not match the RC requirements. llvm-svn: 77175
-
Evan Cheng authored
llvm-svn: 77174
-
Evan Cheng authored
llvm-svn: 77173
-
- 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
-
-
Evan Cheng authored
llvm-svn: 76986
-
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
-