- Sep 05, 2010
-
-
Chris Lattner authored
llvm-svn: 113119
-
- Sep 04, 2010
-
-
Chris Lattner authored
llvm-svn: 113073
-
- Sep 03, 2010
-
-
Jim Grosbach authored
"For ARM stack frames that utilize variable sized objects and have either large local stack areas or require dynamic stack realignment, allocate a base register via which to access the local frame. This allows efficient access to frame indices not accessible via the FP (either due to being out of range or due to dynamic realignment) or the SP (due to variable sized object allocation). In particular, this greatly improves efficiency of access to spill slots in Thumb functions which contain VLAs." r112986 fixed a latent bug exposed by the above. llvm-svn: 112989
-
Jim Grosbach authored
alignment should be performed. Otherwise dynamic realignment may trigger when the register allocator has already used the frame pointer as a general purpose register. That is, we need to make sure that the list of reserved registers doesn't change after register allocation. llvm-svn: 112986
-
Bob Wilson authored
instructions prior to regalloc. Since it's getting a little close to the 2.8 branch deadline, I'll have to leave the rest of the instructions handled by the NEONPreAllocPass for now, but I didn't want to leave half of the VLD instructions converted and the other half not. llvm-svn: 112983
-
Daniel Dunbar authored
Revert "For ARM stack frames that utilize variable sized objects and have either", it is breaking oggenc with Clang for ARMv6. This reverts commit 8d6e29cfda270be483abf638850311670829ee65. llvm-svn: 112962
-
Bob Wilson authored
vabd intrinsic and add and/or zext operations. In the case of vaba, this also avoids the need for a DAG combine pattern to combine vabd with add. Update tests. Auto-upgrade the old intrinsics. llvm-svn: 112941
-
Eric Christopher authored
llvm-svn: 112923
-
Eric Christopher authored
stores. llvm-svn: 112912
-
Jim Grosbach authored
large local stack areas or require dynamic stack realignment, allocate a base register via which to access the local frame. This allows efficient access to frame indices not accessible via the FP (either due to being out of range or due to dynamic realignment) or the SP (due to variable sized object allocation). In particular, this greatly improves efficiency of access to spill slots in Thumb functions which contain VLAs. rdar://7352504 rdar://8374540 rdar://8355680 llvm-svn: 112883
-
- Sep 02, 2010
-
-
Jim Grosbach authored
llvm-svn: 112852
-
Jim Grosbach authored
ARM register class allocation order functions to take advantage of that. llvm-svn: 112841
-
Bob Wilson authored
llvm-svn: 112826
-
Bob Wilson authored
after regalloc. llvm-svn: 112825
-
Eric Christopher authored
I don't need to implement this quite yet - and not for ConstantInt anyhow. llvm-svn: 112798
-
Eric Christopher authored
llvm-svn: 112795
-
Eric Christopher authored
llvm-svn: 112793
-
Jim Grosbach authored
llvm-svn: 112790
-
Eric Christopher authored
into the "address selection" routine and handle constant materialization for stores. llvm-svn: 112788
-
Jim Grosbach authored
llvm-svn: 112779
-
Jim Grosbach authored
to try to allocate reserved registers. llvm-svn: 112774
-
Bob Wilson authored
add, and subtract operations with zero-extended or sign-extended vectors. Update tests. Add auto-upgrade support for the old intrinsics. llvm-svn: 112773
-
Eric Christopher authored
llvm-svn: 112752
-
- Sep 01, 2010
-
-
Eric Christopher authored
llvm-svn: 112721
-
Chris Lattner authored
llvm-svn: 112712
-
Chris Lattner authored
the testcases should be merged. llvm-svn: 112711
-
Bill Wendling authored
int x(int t) { if (t & 256) return -26; return 0; } We generate this: tst.w r0, #256 mvn r0, #25 it eq moveq r0, #0 while gcc generates this: ands r0, r0, #256 it ne mvnne r0, #25 bx lr Scandalous really! During ISel time, we can look for this particular pattern. One where we have a "MOVCC" that uses the flag off of a CMPZ that itself is comparing an AND instruction to 0. Something like this (greatly simplified): %r0 = ISD::AND ... ARMISD::CMPZ %r0, 0 @ sets [CPSR] %r0 = ARMISD::MOVCC 0, -26 @ reads [CPSR] All we have to do is convert the "ISD::AND" into an "ARM::ANDS" that sets [CPSR] when it's zero. The zero value will all ready be in the %r0 register and we only need to change it if the AND wasn't zero. Easy! llvm-svn: 112664
-
Bill Wendling authored
llvm-svn: 112654
-
- Aug 31, 2010
-
-
Jim Grosbach authored
determining if they're likely to be in range of the SP when resolving frame references. llvm-svn: 112624
-
Jim Grosbach authored
the offset is legally encodable, not actually trying to do the encoding. llvm-svn: 112622
-
Bill Wendling authored
- Convert {0,1} and friends into 0b01, which is identical and more consistent. llvm-svn: 112593
-
Eric Christopher authored
llvm-svn: 112568
-
Eric Christopher authored
things we can't handle. llvm-svn: 112559
-
Anton Korobeynikov authored
scheduling opportunities (extra instruction can go in between MOVT / MOVW pair removing the stall). llvm-svn: 112546
-
Bill Wendling authored
is meant to do exactly the same thing. Thanks to Jim Grosbach for pointing this out! :-) llvm-svn: 112538
-
- Aug 30, 2010
-
-
Jakob Stoklund Olesen authored
kill flag. This could cause duplicate kill flags when the same register was used twice in a continuous sequence of STRs. There is no small test case. <rdar://problem/8218046> llvm-svn: 112534
-
Bob Wilson authored
Auto-upgrade the old intrinsic and update tests. llvm-svn: 112507
-
Jim Grosbach authored
Make ARM add rN, sp, #imm instructions rematerializable. That's how the address of locals is calculated, so this should help relieve register pressure a bit. Recalculating the local address is almost always going to be better than spilling. llvm-svn: 112503
-
Bob Wilson authored
operand is killed, add it to the expanded instruction as an implicit kill operand instead of marking the individual subregs with kill flags. This should work better in general and also handles the case for VST3 where one of the subregs was not referenced in the expanded instruction and so was not marked killed. llvm-svn: 112494
-
Bill Wendling authored
optional modified register (instead of reg0). Along with r112461 it will make sure that the optional define of CPSR is marked as "def" and will thus mark the instructions using these classes (t2ANDS*) as setting the 's' flag. llvm-svn: 112462
-