- Aug 28, 2010
-
-
Bob Wilson authored
all the other LDM/STM instructions. This fixes asm printer crashes when compiling with -O0. I've changed one of the NEON tests (vst3.ll) to run with -O0 to check this in the future. Prior to this change VLDM/VSTM used addressing mode #5, but not really. The offset field was used to hold a count of the number of registers being loaded or stored, and the AM5 opcode field was expanded to specify the IA or DB mode, instead of the standard ADD/SUB specifier. Much of the backend was not aware of these special cases. The crashes occured when rewriting a frameindex caused the AM5 offset field to be changed so that it did not have a valid submode. I don't know exactly what changed to expose this now. Maybe we've never done much with -O0 and NEON. Regardless, there's no longer any reason to keep a count of the VLDM/VSTM registers, so we can use addressing mode #4 and clean things up in a lot of places. llvm-svn: 112322
-
- Aug 27, 2010
-
-
Bob Wilson authored
llvm-svn: 112300
-
Jim Grosbach authored
to try to re-use scavenged frame index reference registers. rdar://8277890 llvm-svn: 112241
-
- Aug 26, 2010
-
-
Jim Grosbach authored
llvm-svn: 112228
-
Jim Grosbach authored
still having a significant effect. It shouldn't be now that the pre-RA virtual base reg stuff is in. Assuming that's valididated by the nightly testers, we can simplify a lot of the PEI frame index code. llvm-svn: 112220
-
Bob Wilson authored
llvm-svn: 112208
-
Bill Wendling authored
llvm-svn: 112206
-
Jim Grosbach authored
encodable as a 16-bit wide instruction. llvm-svn: 112195
-
Dan Gohman authored
llvm-svn: 112191
-
Bill Wendling authored
comparison with 0. These two pieces of code should give identical results: rsbs r1, r1, 0 cmp r0, r1 mov r0, #0 it ls mov r0, #1 and: cmn r0, r1 mov r0, #0 it ls mov r0, #1 However, the CMN gives the *opposite* result when r1 is 0. This is because the carry flag is set in the CMP case but not in the CMN case. In short, the CMP instruction doesn't perform a truncate of the (logical) NOT of 0 plus the value of r0 and the carry bit (because the "carry bit" parameter to AddWithCarry is defined as 1 in this case, the carry flag will always be set when r0 >= 0). The CMN instruction doesn't perform a NOT of 0 so there is never a "carry" when this AddWithCarry is performed (because the "carry bit" parameter to AddWithCarry is defined as 0). The AddWithCarry in the CMP case seems to be relying upon the identity: ~x + 1 = -x However when x is 0 and unsigned, this doesn't hold: x = 0 ~x = 0xFFFF FFFF ~x + 1 = 0x1 0000 0000 (-x = 0) != (0x1 0000 0000 = ~x + 1) Therefore, we should disable *all* versions of CMN, especially when comparing against zero, until we can limit when the CMN instruction is used (when we know that the RHS is not 0) or when we have a hardware fix for this. (See the ARM docs for the "AddWithCarry" pseudo-code.) This is related to <rdar://problem/7569620>. llvm-svn: 112176
-
Bob Wilson authored
llvm-svn: 112170
-
-
Bob Wilson authored
a VLD result was not used (Radar 8355607). It should also fix pr7988, but I haven't verified that yet. llvm-svn: 112118
-
Bob Wilson authored
with the VST4 instructions. Until after register allocation, we want to represent sets of adjacent registers by a single super-register. These VST4 pseudo instructions have a single QQ or QQQQ source register operand. They get expanded to the real VST4 instructions with 4 separate D register operands. Once this conversion is complete, we'll be able to remove the NEONPreAllocPass and avoid some fragile and hacky code elsewhere. llvm-svn: 112108
-
- Aug 25, 2010
-
-
Jim Grosbach authored
When doing copy/paste/modify, it's apparently rather important to remember the 'modify' bit... llvm-svn: 112075
-
Daniel Dunbar authored
comparison that would overflow. - The other under/overflow cases can't actually happen because the immediates which would trigger them are legal (so we don't enter this code), but adjusted the style to make it clear the transform is always valid. llvm-svn: 112053
-
Eric Christopher authored
llvm-svn: 112039
-
Eric Christopher authored
Fix some todos. No functional change. llvm-svn: 112031
-
Eric Christopher authored
llvm-svn: 111981
-
Eric Christopher authored
llvm-svn: 111974
-
Eric Christopher authored
to fix this in the port. llvm-svn: 111973
-
- Aug 24, 2010
-
-
Jim Grosbach authored
access. rdar://8277890&7352504 llvm-svn: 111968
-
Jim Grosbach authored
For now it's still a command line option, but the interface to the generic code doesn't need to know that. llvm-svn: 111942
-
Jim Grosbach authored
Intended to help ease reproducing problems by increasing base register usage after heuristics for only using the when needed are in place. llvm-svn: 111930
-
Bill Wendling authored
llvm-svn: 111889
-
Eric Christopher authored
llvm-svn: 111887
-
Eric Christopher authored
llvm-svn: 111885
-
Eric Christopher authored
that it needs to go away. Use loadRegFromStackSlot where possible. Also, remember to update the value map. llvm-svn: 111883
-
Eric Christopher authored
getting an address for an object and select some default values. llvm-svn: 111871
-
Eric Christopher authored
llvm-svn: 111864
-
Eric Christopher authored
llvm-svn: 111860
-
Eric Christopher authored
llvm-svn: 111854
-
- Aug 23, 2010
-
-
Eric Christopher authored
llvm-svn: 111850
-
- Aug 20, 2010
-
-
Bob Wilson authored
zero-extend operations. llvm-svn: 111614
-
Eric Christopher authored
move some constraints around. llvm-svn: 111594
-
Eric Christopher authored
llvm-svn: 111592
-
-
- Aug 19, 2010
-
-
Jim Grosbach authored
rdar://8277890 llvm-svn: 111533
-
Eric Christopher authored
llvm-svn: 111518
-
Eric Christopher authored
llvm-svn: 111489
-