- Jan 11, 2010
-
-
Evan Cheng authored
Select an OR with immediate as an ADD if the input bits are known zero. This allow the instruction to be 3address-fied if needed. llvm-svn: 93152
-
David Greene authored
Implement a feature (-vector-unaligned-mem) to allow targets to ignore alignment requirements for SIMD memory operands. This is useful on architectures like the AMD 10h that do not trap on unaligned references if a status bit is twiddled at startup time. llvm-svn: 93151
-
- Jan 09, 2010
-
-
http://llvm.org/PR5729Jeffrey Yasskin authored
R11, and then asserting that the target was in R9. Since R9 isn't reserved for the target anymore, and is used as an argument, this patch changes the assertion. llvm-svn: 93065
-
Evan Cheng authored
Fix a critical bug in 64-bit atomic operation lowering for 32-bit. The results of the cmpxchg8b instructions are being thrown away when it branches back to the top of the checking loop. This means the loop always compares against the old value and this can result in a dead lock. llvm-svn: 93028
-
- Jan 08, 2010
-
-
Evan Cheng authored
llvm-svn: 93020
-
Eric Christopher authored
putting relocations into the constant pool - this isn't needed for correctness and in the rare occasion it happens would pull us out of fast isel for the block. If fast-isel application startup time ever becomes an issue we can add better support for these addresses instead of bailing. llvm-svn: 92995
-
Evan Cheng authored
1. CMPXCHG8B and CMPXCHG16B did not specify implicit physical register defs and uses. 2. LCMPXCHG8B is loading 64 bit memory, not 32 bit. llvm-svn: 92985
-
Eric Christopher authored
llvm-svn: 92972
-
- Jan 07, 2010
-
-
Eric Christopher authored
add it to the constant pool for fast-isel. We already don't add it for the normal case. llvm-svn: 92934
-
Evan Cheng authored
Fix a minor regression from my dag combiner changes. One more place which needs to look pass truncates. llvm-svn: 92885
-
- Jan 06, 2010
-
-
Evan Cheng authored
(OP (trunc x), (trunc y)) -> (trunc (OP x, y)) Unfortunately this simple change causes dag combine to infinite looping. The problem is the shrink demanded ops optimization tend to canonicalize expressions in the opposite manner. That is badness. This patch disable those optimizations in dag combine but instead it is done as a late pass in sdisel. This also exposes some deficiencies in dag combine and x86 setcc / brcond lowering. Teach them to look pass ISD::TRUNCATE in various places. llvm-svn: 92849
-
- Jan 05, 2010
-
-
Benjamin Kramer authored
llvm-svn: 92771
-
Benjamin Kramer authored
llvm-svn: 92760
-
Evan Cheng authored
llvm-svn: 92694
-
David Greene authored
llvm-svn: 92654
-
David Greene authored
llvm-svn: 92653
-
David Greene authored
llvm-svn: 92651
-
David Greene authored
llvm-svn: 92648
-
David Greene authored
llvm-svn: 92647
-
David Greene authored
llvm-svn: 92644
-
Dan Gohman authored
clear what information these functions are actually using. This is also a micro-optimization, as passing a SDNode * around is simpler than passing a { SDNode *, int } by value or reference. llvm-svn: 92564
-
Dan Gohman authored
operators. Eli pointed out that it's not obvious what that would mean. llvm-svn: 92555
-
- Jan 04, 2010
-
-
Evan Cheng authored
(or (x << c) | (y >> (64 - c))) ==> (shld64 x, y, c) The isel patterns may not catch all the cases if general dag combine has reduced width of source operands. llvm-svn: 92513
-
Dan Gohman authored
llvm-svn: 92511
-
Dan Gohman authored
lets the test-elimination work in more conditional-move cases. llvm-svn: 92508
-
Dan Gohman authored
rules as normal add, and, or, etc. llvm-svn: 92507
-
Dan Gohman authored
This lets isel fold loads into them in more cases. llvm-svn: 92506
-
- Dec 29, 2009
-
-
Benjamin Kramer authored
llvm-svn: 92265
-
- Dec 28, 2009
-
-
Bill Wendling authored
llvm-svn: 92184
-
- Dec 26, 2009
-
-
Eli Friedman authored
do illegal stuff around it. No testcase because the issue is very fragile. llvm-svn: 92167
-
- Dec 23, 2009
-
-
Chris Lattner authored
llvm-svn: 91976
-
Chris Lattner authored
interesting part of this is the divrem changes, which are already tested by CodeGen/X86/divrem.ll. llvm-svn: 91975
-
Sean Callanan authored
static inline functions with macros. llvm-svn: 91973
-
Chris Lattner authored
instead use the appropriate subreggy thing. This generates identical code on some large apps (thanks to Evan's cross class coalescing stuff he did back in july). This means that MOV16r0 can go away completely in the future soon. llvm-svn: 91972
-
- Dec 22, 2009
-
-
Sean Callanan authored
because the Visual C++ build does not build .c files as C99 llvm-svn: 91935
-
Sean Callanan authored
Made LEA memory operands emit only 4 MCInst operands. Made the scale operand equal 1 for instructions that have no SIB byte. llvm-svn: 91919
-
Evan Cheng authored
Remove target attribute break-sse-dep. Instead, do not fold load into sse partial update instructions unless optimizing for size. llvm-svn: 91910
-
Douglas Gregor authored
llvm-svn: 91908
-
Bill Wendling authored
return partial registers. This affected the back-end lowering code some. Also patch up some places I missed before in the "get" functions. llvm-svn: 91880
-
Sean Callanan authored
with symbols in AuroraUX's global namespace. llvm-svn: 91879
-