- Jun 19, 2008
-
-
Eli Friedman authored
shuffle could be skipped. The check is invalid because the loop index i doesn't correspond to the element actually inserted. The correct check is already done a few lines earlier, for whether the element is already in the right spot, so this shouldn't have any effect on the codegen for code that was already correct. llvm-svn: 52486
-
- Jun 17, 2008
-
-
Evan Cheng authored
Rather than avoiding to wrap ISD::DECLARE GV operand in X86ISD::Wrapper, simply handle it at dagisel time with x86 specific isel code. llvm-svn: 52377
-
- Jun 14, 2008
-
-
Andrew Lenharth authored
llvm-svn: 52270
-
- Jun 11, 2008
-
-
Anton Korobeynikov authored
CALLSEQ_BEGIN & CALLSEQ_END. llvm-svn: 52225
-
- Jun 08, 2008
-
-
Duncan Sands authored
of apint codegen failure is the DAG combiner doing the wrong thing because it was comparing MVT's using < rather than comparing the number of bits. Removing the < method makes this mistake impossible to commit. Instead, add helper methods for comparing bits and use them. llvm-svn: 52098
-
- Jun 06, 2008
-
-
Duncan Sands authored
and better control the abstraction. Rename the type to MVT. To update out-of-tree patches, the main thing to do is to rename MVT::ValueType to MVT, and rewrite expressions like MVT::getSizeInBits(VT) in the form VT.getSizeInBits(). Use VT.getSimpleVT() to extract a MVT::SimpleValueType for use in switch statements (you will get an assert failure if VT is an extended value type - these shouldn't exist after type legalization). This results in a small speedup of codegen and no new testsuite failures (x86-64 linux). llvm-svn: 52044
-
- May 29, 2008
-
-
Dan Gohman authored
memmove to a more plausible value, now that it's actually being used. llvm-svn: 51696
-
Evan Cheng authored
llvm-svn: 51667
-
- May 28, 2008
-
-
Nate Begeman authored
code generator would do something like this: f64 = load f32 <anyext>, f32mem v2f64 = insertelt undef, %0, 0 v2f64 = insertelt %1, 0.0, 1 into v2f64 = vzext_load f32mem which on x86 is movsd, when you really wanted a cvtss2sd/movsd pair. llvm-svn: 51624
-
- May 23, 2008
-
-
Dan Gohman authored
load-folding table entries for PMULDQ and PMULLD. llvm-svn: 51489
-
- May 16, 2008
-
-
Evan Cheng authored
llvm-svn: 51165
-
- May 15, 2008
-
-
Evan Cheng authored
Make use of vector load and store operations to implement memcpy, memmove, and memset. Currently only X86 target is taking advantage of these. llvm-svn: 51140
-
- May 14, 2008
-
-
Dan Gohman authored
This eliminates the need for several awkward casts, including the last dynamic_cast under lib/Target. llvm-svn: 51091
-
- May 13, 2008
-
-
Evan Cheng authored
Instead of a vector load, shuffle and then extract an element. Load the element from address with an offset. pshufd $1, (%rdi), %xmm0 movd %xmm0, %eax => movl 4(%rdi), %eax llvm-svn: 51026
-
Evan Cheng authored
Xform bitconvert(build_pair(load a, load b)) to a single load if the load locations are at the right offset from each other. llvm-svn: 51008
-
- May 12, 2008
-
-
Nate Begeman authored
llvm-svn: 51000
-
Evan Cheng authored
llvm-svn: 50991
-
Dan Gohman authored
in a non-void function that calls abort. llvm-svn: 50969
-
- May 10, 2008
-
-
Evan Cheng authored
llvm-svn: 50940
-
Dan Gohman authored
than silently generate invalid code. llvm-gcc does not currently use VAArgInst; it lowers va_arg in the front-end. llvm-svn: 50930
-
Evan Cheng authored
llvm-svn: 50928
-
- May 09, 2008
-
-
Evan Cheng authored
Note, some of the code will be moved into target independent part of DAG combiner in a subsequent patch. llvm-svn: 50918
-
- May 08, 2008
-
-
Evan Cheng authored
Handle vector move / load which zero the destination register top bits (i.e. movd, movq, movss (addr), movsd (addr)) with X86 specific dag combine. llvm-svn: 50838
-
- May 06, 2008
-
-
Mon P Wang authored
llvm-svn: 50677
-
Evan Cheng authored
llvm-svn: 50675
-
- May 05, 2008
-
-
Mon P Wang authored
llvm-svn: 50663
-
- May 04, 2008
-
-
Anton Korobeynikov authored
but should work. Work is in progress, more models will follow llvm-svn: 50630
-
Evan Cheng authored
Select vector shift with non-immediate i32 shift amount operand by first moving the operand into the right register. llvm-svn: 50619
-
- Apr 30, 2008
-
-
Arnold Schwaighofer authored
Move platform independent code (lowering of possibly overwritten arguments, check for tail call optimization eligibility) from target X86ISelectionLowering.cpp to TargetLowering.h and SelectionDAGISel.cpp. Initial PowerPC tail call implementation: Support ppc32 implemented and tested (passes my tests and test-suite llvm-test). Support ppc64 implemented and half tested (passes my tests). On ppc tail call optimization is performed if caller and callee are fastcc call is a tail call (in tail call position, call followed by ret) no variable argument lists or byval arguments option -tailcallopt is enabled Supported: * non pic tail calls on linux/darwin * module-local tail calls on linux(PIC/GOT)/darwin(PIC) * inter-module tail calls on darwin(PIC) If constraints are not met a normal call will be emitted. A test checking the argument lowering behaviour on x86-64 was added. llvm-svn: 50477
-
- Apr 28, 2008
-
-
Dan Gohman authored
memcpy/memset expansion. It was a bug for the SVOffset value to be used in the actual address calculations. llvm-svn: 50359
-
Anton Korobeynikov authored
llvm-svn: 50325
-
- Apr 27, 2008
-
-
Chris Lattner authored
- Make targetlowering.h fit in 80 cols. - Make LowerAsmOperandForConstraint const. - Make lowerXConstraint -> LowerXConstraint - Make LowerXConstraint return a const char* instead of taking a string byref. llvm-svn: 50312
-
- Apr 25, 2008
-
-
Evan Cheng authored
llvm-svn: 50292
-
Evan Cheng authored
llvm-svn: 50289
-
Evan Cheng authored
On Darwin / Linux x86-32, v8i8, v4i16, v2i32 values are passed in MM[0-2]. On Darwin / Linux x86-32, v1i64 values are passed in memory. On Darwin x86-64, v8i8, v4i16, v2i32 values are passed in XMM[0-7]. On Darwin x86-64, v1i64 values are passed in 64-bit GPRs. llvm-svn: 50257
-
Evan Cheng authored
Fix bug in x86 memcpy / memset lowering. If there are trailing bytes not handled by rep instructions, a new memcpy / memset is introduced for them. However, since source / destination addresses are already adjusted, their offsets should be zero. llvm-svn: 50239
-
- Apr 22, 2008
-
-
Dan Gohman authored
argument. The x86-64 ABI requires the incoming value of %rdi to be copied to %rax on exit from a function that is returning a large C struct. Also, add a README-X86-64 entry detailing the missed optimization opportunity and proposing an alternative approach. llvm-svn: 50075
-
- Apr 20, 2008
-
-
Chris Lattner authored
llvm-svn: 49977
-
- Apr 18, 2008
-
-
Dan Gohman authored
llvm-gcc is now lowering va_copy on x86-64, so this completes the fix for PR2230. llvm-svn: 49922
-
- Apr 16, 2008
-
-
Roman Levenstein authored
Rename SDOperandImpl back to SDOperand. Introduce the SDUse class that represents a use of the SDNode referred by an SDOperand. Now it is more similar to Use/Value classes. Patch is approved by Dan Gohman. llvm-svn: 49795
-