- Oct 21, 2008
-
-
Dan Gohman authored
the copy instruction from the instruction list before asking the target to create the new instruction. This gets the old instruction out of the way so that it doesn't interfere with the target's rematerialization code. In the case of x86, this helps it find more cases where EFLAGS is not live. Also, in the X86InstrInfo.cpp, teach isSafeToClobberEFLAGS to check to see if it reached the end of the block after scanning each instruction, instead of just before. This lets it notice when the end of the block is only two instructions away, without doing any additional scanning. These changes allow rematerialization to clobber EFLAGS in more cases, for example using xor instead of mov to set the return value to zero in the included testcase. llvm-svn: 57872
-
Dan Gohman authored
that NaNs are less common. llvm-svn: 57871
-
Dan Gohman authored
llvm-svn: 57870
-
Oscar Fuentes authored
llvm-svn: 57869
-
Dan Gohman authored
llvm-svn: 57864
-
Chris Lattner authored
for strange asm conditions earlier. In this case, we have a double being passed in an integer reg class. Convert to like sized integer register so that we allocate the right number for the class (two i32's for the f64 in this case). llvm-svn: 57862
-
- Oct 20, 2008
-
-
Evan Cheng authored
llvm-svn: 57847
-
Jim Grosbach authored
is re-written by the callback to branch directly to the compiled code in future invocations. Added back in range-based memory permission functions for the updating of the stub on Darwin. llvm-svn: 57846
-
Dan Gohman authored
llvm-svn: 57845
-
Evan Cheng authored
llvm-svn: 57844
-
Duncan Sands authored
result type when the result type is legal but not the operand type. Add additional support for EXTRACT_SUBVECTOR and CONCAT_VECTORS, needed to handle such cases. llvm-svn: 57840
-
Duncan Sands authored
llvm-svn: 57838
-
Duncan Sands authored
with TLI.getPointerTy for a small simplification. llvm-svn: 57837
-
Duncan Sands authored
the condition of a SELECT node. Make sure that the correct extension type (any-, sign- or zero-extend) is used. llvm-svn: 57836
-
Duncan Sands authored
llvm-svn: 57834
-
Duncan Sands authored
use an MVT::i1 and simplify the code while there. llvm-svn: 57833
-
Duncan Sands authored
LowerOperation if it doesn't know what else to do. This methods should probably be factorized some, but this is good enough for the moment. Have LowerATOMIC_BINARY_64 use EXTRACT_ELEMENT rather than assuming the operand is a BUILD_PAIR (if it is then getNode will automagically simplify the EXTRACT_ELEMENT). This way LowerATOMIC_BINARY_64 usable from LegalizeTypes. llvm-svn: 57831
-
- Oct 19, 2008
-
-
Bill Wendling authored
be either deleted or referenced afterwards. llvm-svn: 57786
-
Bill Wendling authored
llvm-svn: 57785
-
Duncan Sands authored
this everywhere in LegalizeTypes. llvm-svn: 57783
-
Duncan Sands authored
elements. Otherwise LegalizeTypes will, reasonably enough, legalize the mask, which may result in it no longer being a BUILD_VECTOR node (LegalizeDAG simply ignores the legality or not of vector masks). llvm-svn: 57782
-
- Oct 18, 2008
-
-
Chris Lattner authored
the previous patch this one actually passes make check. "Fix PR2356 on PowerPC: if we have an input and output that are tied together that have different sizes (e.g. i32 and i64) make sure to reserve registers for the bigger operand." llvm-svn: 57771
-
Dan Gohman authored
llvm-svn: 57770
-
Evan Cheng authored
llvm-svn: 57766
-
Evan Cheng authored
llvm-svn: 57765
-
Dan Gohman authored
and add a TargetLowering hook for it to use to determine when this is legal (i.e. not in PIC mode, etc.) This allows instruction selection to emit folded constant offsets in more cases, such as the included testcase, eliminating the need for explicit arithmetic instructions. This eliminates the need for the C++ code in X86ISelDAGToDAG.cpp that attempted to achieve the same effect, but wasn't as effective. Also, fix handling of offsets in GlobalAddressSDNodes in several places, including changing GlobalAddressSDNode's offset from int to int64_t. The Mips, Alpha, Sparc, and CellSPU targets appear to be unaware of GlobalAddress offsets currently, so set the hook to false on those targets. llvm-svn: 57748
-
Dan Gohman authored
test/CodeGen/X86/2008-09-17-inline-asm-1.ll and a few others, and it breaks the llvm-gcc build. llvm-svn: 57747
-
- Oct 17, 2008
-
-
Dan Gohman authored
llvm-svn: 57734
-
Dan Gohman authored
llvm-svn: 57733
-
Dan Gohman authored
ISD condition opcodes into helper functions. llvm-svn: 57726
-
Evan Cheng authored
Add implicit defs of XMM8 to XMM15 on 32-bit call instructions. While this is not technically true, it tells tblgen that these instructions "clobber" the entire XMM register file. llvm-svn: 57723
-
Evan Cheng authored
Patch by Lang Hames! llvm-svn: 57720
-
Chris Lattner authored
llvm-svn: 57715
-
Bill Wendling authored
have an unreachable block in a function. This was triggering the assert. This is a horrid hack to cover this up. Oh! for a good debug info architecture! llvm-svn: 57714
-
Mon P Wang authored
touches memory and need an associated MemOperand llvm-svn: 57712
-
Dan Gohman authored
ISD condition opcodes into helper functions. llvm-svn: 57710
-
Chris Lattner authored
llvm-svn: 57709
-
Chris Lattner authored
in 32-bit mode instead of assigning a register pair. This has nothing to do with PR2356, but I happened to notice it while working on it. llvm-svn: 57704
-
Chris Lattner authored
that have different sizes (e.g. i32 and i64) make sure to reserve registers for the bigger operand. llvm-svn: 57699
-
Evan Cheng authored
Fix lfence and mfence encoding. These look like MRM5r and MRM6r instructions except they do not have any operands. The RegModRM byte is encoded with register number 0. llvm-svn: 57692
-