| Commit message (Collapse) | Author | Age | Files | Lines | 
| ... |  | 
| | 
| 
| 
| 
| 
|  | 
memmove to a more plausible value, now that it's actually being used.
llvm-svn: 51696
 | 
| | 
| 
| 
|  | 
llvm-svn: 51667
 | 
| | 
| 
| 
|  | 
llvm-svn: 51591
 | 
| | 
| 
| 
|  | 
llvm-svn: 51496
 | 
| | 
| 
| 
| 
| 
| 
|  | 
and/or to handle more cases (such as this add-sitofp.ll testcase), and
port it to selectiondag's ComputeNumSignBits.
llvm-svn: 51469
 | 
| | 
| 
| 
| 
| 
|  | 
exclude struct and array types.
llvm-svn: 51460
 | 
| | 
| 
| 
| 
| 
|  | 
ComputeNumSignBits to SelectionDAG's ComputeNumSignBits.
llvm-svn: 51348
 | 
| | 
| 
| 
|  | 
llvm-svn: 51345
 | 
| | 
| 
| 
| 
| 
|  | 
is a v1* vector.
llvm-svn: 51192
 | 
| | 
| 
| 
| 
| 
|  | 
original method caused gcc-4.2 to complain.
llvm-svn: 51186
 | 
| | 
| 
| 
| 
| 
|  | 
something with a v1 type.
llvm-svn: 51160
 | 
| | 
| 
| 
| 
| 
|  | 
moving toward making structs and arrays first-class types.
llvm-svn: 51157
 | 
| | 
| 
| 
| 
| 
|  | 
and memset. Currently only X86 target is taking advantage of these.
llvm-svn: 51140
 | 
| | 
| 
| 
|  | 
llvm-svn: 51131
 | 
| | 
| 
| 
|  | 
llvm-svn: 51126
 | 
| | 
| 
| 
|  | 
llvm-svn: 51123
 | 
| | 
| 
| 
|  | 
llvm-svn: 51115
 | 
| | 
| 
| 
| 
| 
|  | 
SETOEQ, is it does with (SETEQ & SETULE), map it to SETEQ.
llvm-svn: 51112
 | 
| | 
| 
| 
|  | 
llvm-svn: 51089
 | 
| | 
| 
| 
| 
| 
| 
| 
| 
| 
| 
|  | 
element from address with an offset.
        pshufd $1, (%rdi), %xmm0
        movd %xmm0, %eax
=>
        movl 4(%rdi), %eax
llvm-svn: 51026
 | 
| | 
| 
| 
| 
| 
| 
|  | 
several things that were neither in an anonymous namespace nor static
but not intended to be global.
llvm-svn: 51017
 | 
| | 
| 
| 
| 
| 
|  | 
Teach X86 a few more vsetcc patterns.  Custom lowering for unsupported ones is next.
llvm-svn: 51009
 | 
| | 
| 
| 
| 
| 
|  | 
locations are at the right offset from each other.
llvm-svn: 51008
 | 
| | 
| 
| 
| 
| 
|  | 
make use of it.
llvm-svn: 50991
 | 
| | 
| 
| 
| 
| 
|  | 
This is necessary to unbreak the build.
llvm-svn: 50988
 | 
| | 
| 
| 
|  | 
llvm-svn: 50967
 | 
| | 
| 
| 
|  | 
llvm-svn: 50836
 | 
| | 
| 
| 
|  | 
llvm-svn: 50793
 | 
| | 
| 
| 
| 
| 
|  | 
instead?)
llvm-svn: 50775
 | 
| | 
| 
| 
|  | 
llvm-svn: 50696
 | 
| | 
| 
| 
| 
| 
| 
|  | 
ComputeMaskedBits handles, just use a 'default:'. This avoids
TargetLowering's list getting out of date with SelectionDAG's.
llvm-svn: 50693
 | 
| | 
| 
| 
| 
| 
|  | 
ComputeMaskedBits.
llvm-svn: 50692
 | 
| | 
| 
| 
|  | 
llvm-svn: 50663
 | 
| | 
| 
| 
|  | 
llvm-svn: 50591
 | 
| | 
| 
| 
|  | 
llvm-svn: 50562
 | 
| | 
| 
| 
|  | 
llvm-svn: 50561
 | 
| | 
| 
| 
|  | 
llvm-svn: 50558
 | 
| | 
| 
| 
| 
| 
| 
| 
| 
|  | 
ffastmath mode.  This fixes rdar://5902801, a miscompilation
of gcc.dg/builtins-8.c.
Bill, please pull this into Tak.
llvm-svn: 50523
 | 
| | 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
|  | 
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
 | 
| | 
| 
| 
| 
| 
| 
|  | 
DAG.UpdateNodeOperands() is called before (not after) the call to
TLI.LowerOperation().
llvm-svn: 50461
 | 
| | 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
|  | 
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
 | 
| | 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
|  | 
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
 | 
| | 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
|  | 
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
 | 
| | 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
|  | 
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
 | 
| | 
| 
| 
| 
| 
|  | 
if the zext is not legal.
llvm-svn: 50368
 | 
| | 
| 
| 
|  | 
llvm-svn: 50367
 | 
| | 
| 
| 
| 
| 
|  | 
aggregate types.
llvm-svn: 50366
 | 
| | 
| 
| 
| 
| 
|  | 
reorder some of the members for clarity.
llvm-svn: 50365
 | 
| | 
| 
| 
|  | 
llvm-svn: 50361
 | 
| | 
| 
| 
| 
| 
| 
|  | 
memcpy/memset expansion. It was a bug for the SVOffset value
to be used in the actual address calculations.
llvm-svn: 50359
 |