- 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
-
Anton Korobeynikov authored
value should be copied to the corresponding shadow reg as well. Patch by Cameron Esfahani! llvm-svn: 112262
-
Daniel Dunbar authored
X86: Fix an encoding issue with LOCK_ADD64mr, which could lead to very hard to find miscompiles with the integrated assembler. llvm-svn: 112250
-
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
-
Bruno Cardoso Lopes authored
llvm-svn: 112218
-
Bob Wilson authored
llvm-svn: 112208
-
Bill Wendling authored
llvm-svn: 112206
-
Bob Wilson authored
llvm-svn: 112202
-
Jim Grosbach authored
encodable as a 16-bit wide instruction. llvm-svn: 112195
-
Dan Gohman authored
llvm-svn: 112191
-
Dan Gohman authored
fix: add a flag to MapValue and friends which indicates whether any module-level mappings are being made. In the common case of inlining, no module-level mappings are needed, so MapValue doesn't need to examine non-function-local metadata, which can be very expensive in the case of a large module with really deep metadata (e.g. a large C++ program compiled with -g). This flag is a little awkward; perhaps eventually it can be moved into the ClonedCodeInfo class. llvm-svn: 112190
-
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
-
Chris Lattner authored
llvm-svn: 112171
-
Bob Wilson authored
llvm-svn: 112170
-
Chris Lattner authored
apparently try to support. llvm-svn: 112168
-
Chris Lattner authored
llvm-svn: 112131
-
Bruno Cardoso Lopes authored
llvm-svn: 112128
-
-
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
-
Chris Lattner authored
llvm-svn: 112109
-
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
-
-
Bruno Cardoso Lopes authored
llvm-svn: 112090
-
Daniel Dunbar authored
llvm-svn: 112089
-
Jim Grosbach authored
When doing copy/paste/modify, it's apparently rather important to remember the 'modify' bit... llvm-svn: 112075
-
Chris Lattner authored
llvm-svn: 112073
-
Benjamin Kramer authored
llvm-svn: 112060
-
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
-
Anton Korobeynikov authored
Mark _alloca call as clobberring EFLAGS, otherwise some DCE might remove other flags-clobberring stuff (e.g. cmp instructions) occuring after _alloca call. llvm-svn: 112034
-
Eric Christopher authored
Fix some todos. No functional change. llvm-svn: 112031
-
Bruno Cardoso Lopes authored
llvm-svn: 112020
-
Bruno Cardoso Lopes authored
teach lowering to get target specific nodes for pshufd, emulating the same isel behavior for now, so we can pass all vector shuffle tests llvm-svn: 112017
-
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
-
Daniel Dunbar authored
taking immediates. llvm-svn: 111950
-