- May 05, 2008
-
-
Dan Gohman authored
the code being generated does not require an executable stack. Also, add target-specific code to make use of this on Linux on x86. llvm-svn: 50634
-
- May 02, 2008
-
-
Dan Gohman authored
llvm-svn: 50591
-
Dan Gohman authored
llvm-svn: 50562
-
Dan Gohman authored
llvm-svn: 50561
-
Dan Gohman authored
llvm-svn: 50558
-
- May 01, 2008
-
-
Chris Lattner authored
ffastmath mode. This fixes rdar://5902801, a miscompilation of gcc.dg/builtins-8.c. Bill, please pull this into Tak. llvm-svn: 50523
-
- 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
-
Dale Johannesen authored
llvm-svn: 50463
-
Scott Michel authored
DAG.UpdateNodeOperands() is called before (not after) the call to TLI.LowerOperation(). llvm-svn: 50461
-
Dale Johannesen authored
targets. llvm-svn: 50451
-
- Apr 29, 2008
-
-
Roman Levenstein authored
This removes the existing bottleneck related to the removal of elements from the middle of the queue. Also fixes a subtle bug in ScheduleDAGRRList::CapturePred: It was updating the state of the SUnit before removing it. As a result, the comparison operators were working incorrectly and this SUnit could not be removed from the queue properly. Reviewed by Evan and Dan. Approved by Dan. llvm-svn: 50412
-
Chris Lattner authored
We now compile test2/test3 to: _test2: ## InlineAsm Start set %xmm0, %xmm1 ## InlineAsm End addps %xmm1, %xmm0 ret _test3: ## InlineAsm Start set %xmm0, %xmm1 ## InlineAsm End paddd %xmm1, %xmm0 ret as expected. llvm-svn: 50389
-
Chris Lattner authored
towards PR2094. It now compiles the attached .ll file to: _sad16_sse2: movslq %ecx, %rax ## InlineAsm Start %ecx %rdx %rax %rax %r8d %rdx %rsi ## InlineAsm End ## InlineAsm Start set %eax ## InlineAsm End ret which is pretty decent for a 3 output, 4 input asm. llvm-svn: 50386
-
Evan Cheng authored
e.g. vr1024<2> extract_subreg vr1025, 2 If vr1024 do not have the same register class as vr1025, it's not safe to coalesce this away. For example, vr1024 might be a GPR32 while vr1025 might be a GPR64. llvm-svn: 50385
-
Evan Cheng authored
Fix a bug in RegsForValue::getCopyToRegs() that causes cyclical scheduling units. If it's creating multiple CopyToReg nodes that are "flagged" together, it should not create a TokenFactor for it's chain outputs: c1, f1 = CopyToReg c2, f2 = CopyToReg c3 = TokenFactor c1, c2 ... = user c3, ..., f2 Now that the two CopyToReg's and the user are "flagged" together. They effectively forms a single scheduling unit. The TokenFactor is now both an operand and a successor of the Flagged nodes. llvm-svn: 50376
-
- Apr 28, 2008
-
-
Dan Gohman authored
if the zext is not legal. llvm-svn: 50368
-
Dan Gohman authored
llvm-svn: 50367
-
Dan Gohman authored
aggregate types. llvm-svn: 50366
-
Dan Gohman authored
reorder some of the members for clarity. llvm-svn: 50365
-
Dan Gohman authored
llvm-svn: 50361
-
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
-
Dan Gohman authored
ComputeMaskedBits knows about cttz, ctlz, and ctpop. Teach SelectionDAG's ComputeMaskedBits what InstCombine's knows about SRem. And teach them both some things about high bits in Mul, UDiv, URem, and Sub. This allows instcombine and dagcombine to eliminate sign-extension operations in several new cases. llvm-svn: 50358
-
Dan Gohman authored
sign-bit of x is known to be zero. llvm-svn: 50357
-
Chris Lattner authored
llvm-svn: 50341
-
Chris Lattner authored
conversion open the door for many nasty implicit conversion issues, and can be easily solved by initializing with (V.begin(), V.end()) when needed. This patch includes many small cleanups for sdisel also. llvm-svn: 50340
-
Chris Lattner authored
heap thrash on tiny (usually single-element) vectors. llvm-svn: 50335
-
Chris Lattner authored
llvm-svn: 50330
-
Chris Lattner authored
llvm-svn: 50329
-
- Apr 27, 2008
-
-
Chris Lattner authored
llvm-svn: 50316
-
Chris Lattner authored
When choosing between constraints with multiple options, like "ir", test to see if we can use the 'i' constraint and go with that if possible. This produces more optimal ASM in all cases (sparing a register and an instruction to load it), and fixes inline asm like this: void test () { asm volatile (" %c0 %1 " : : "imr" (42), "imr"(14)); } Previously we would dump "42" into a memory location (which is ok for the 'm' constraint) which would cause a problem because the 'c' modifier is not valid on memory operands. Isn't it great how inline asm turns 'missed optimization' into 'compile failed'?? Incidentally, this was the todo in PowerPC/2007-04-24-InlineAsm-I-Modifier.ll Please do NOT pull this into Tak. llvm-svn: 50315
-
Chris Lattner authored
llvm-svn: 50314
-
Chris Lattner authored
llvm-svn: 50313
-
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
-
-
Dan Gohman authored
to the block that defines their operands. This doesn't work in the case that the operand is an invoke, because invoke is a terminator and must be the last instruction in a block. Replace it with support in SelectionDAGISel for copying struct values into sequences of virtual registers. llvm-svn: 50279
-
Nate Begeman authored
function, and then use it to fix a bug in SplitVectorOp that expected inserts to always have constant insertion indices. llvm-svn: 50273
-
- Apr 24, 2008
-
-
Evan Cheng authored
- Do not iterate over SmallPtrSet, the order of iteration is not deterministic. llvm-svn: 50209
-
- Apr 23, 2008
-
-
Dan Gohman authored
llvm-svn: 50181
-
Dan Gohman authored
llvm-svn: 50180
-
Anton Korobeynikov authored
llvm-svn: 50173
-
Anton Korobeynikov authored
llvm-svn: 50165
-