| Commit message (Collapse) | Author | Age | Files | Lines |
| |
|
|
| |
llvm-svn: 48169
|
| |
|
|
| |
llvm-svn: 48167
|
| |
|
|
| |
llvm-svn: 48166
|
| |
|
|
| |
llvm-svn: 48158
|
| |
|
|
| |
llvm-svn: 48152
|
| |
|
|
|
|
|
|
| |
return ValueType can depend its operands' ValueType.
This is a cosmetic change, no functionality impacted.
llvm-svn: 48145
|
| |
|
|
| |
llvm-svn: 48143
|
| |
|
|
|
|
|
| |
Change insert/extract subreg instructions to be able to be used in TableGen patterns.
Use the above features to reimplement an x86-64 pseudo instruction as a pattern.
llvm-svn: 48130
|
| |
|
|
|
|
|
|
|
|
| |
field to 32 bits, thus enabling correct handling of ByVal
structs bigger than 0x1ffff. Abstract interface a bit.
Fixes gcc.c-torture/execute/pr23135.c and
gcc.c-torture/execute/pr28982b.c in gcc testsuite (were ICE'ing
on ppc32, quietly producing wrong code on x86-32.)
llvm-svn: 48122
|
| |
|
|
|
|
|
|
| |
two regression tests:
test/CodeGen/PowerPC/2007-10-21-LocalRegAllocAssert.ll
test/CodeGen/PowerPC/2007-10-21-LocalRegAllocAssert2.ll
llvm-svn: 48120
|
| |
|
|
|
|
| |
different regclasses, and the code is not consistent when it comes to value tracking.
llvm-svn: 48119
|
| |
|
|
| |
llvm-svn: 48118
|
| |
|
|
|
|
|
|
|
|
|
|
| |
an RFP register class.
Teach ScheduleDAG how to handle CopyToReg with different src/dst
reg classes.
This allows us to compile trivial inline asms that expect stuff
on the top of x87-fp stack.
llvm-svn: 48107
|
| |
|
|
|
|
| |
RST -> RFP{32/64/80}. We only handle ST(0) for now.
llvm-svn: 48104
|
| |
|
|
| |
llvm-svn: 48101
|
| |
|
|
|
|
| |
codegen yet because these can't be spilled (they don't exist until after RA).
llvm-svn: 48098
|
| |
|
|
| |
llvm-svn: 48094
|
| |
|
|
|
|
|
| |
isel'ing value preserving FP roundings from one fp stack reg to another
into a noop, instead of stack traffic.
llvm-svn: 48093
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
into a vector of zeros or undef, and when the top part is obviously
zero, we can just use movd + shuffle. This allows us to compile
vec_set-B.ll into:
_test3:
movl $1234567, %eax
andl 4(%esp), %eax
movd %eax, %xmm0
ret
instead of:
_test3:
subl $28, %esp
movl $1234567, %eax
andl 32(%esp), %eax
movl %eax, (%esp)
movl $0, 4(%esp)
movq (%esp), %xmm0
addl $28, %esp
ret
llvm-svn: 48090
|
| |
|
|
| |
llvm-svn: 48064
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
| |
#include <xmmintrin.h>
__m128i doload64(short x) {return _mm_set_epi16(0,0,0,0,0,0,0,1);}
into:
movl $1, %eax
movd %eax, %xmm0
ret
instead of a constant pool load.
llvm-svn: 48063
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
2) Don't try to insert an i64 value into the low part of a
vector with movq on an x86-32 target. This allows us to
compile:
__m128i doload64(short x) {return _mm_set_epi16(0,0,0,0,0,0,0,1);}
into:
_doload64:
movaps LCPI1_0, %xmm0
ret
instead of:
_doload64:
subl $28, %esp
movl $0, 4(%esp)
movl $1, (%esp)
movq (%esp), %xmm0
addl $28, %esp
ret
llvm-svn: 48057
|
| |
|
|
|
|
| |
SCALAR_TO_VECTOR on paths that end up not using it.
llvm-svn: 48056
|
| |
|
|
| |
llvm-svn: 48055
|
| |
|
|
| |
llvm-svn: 48054
|
| |
|
|
|
|
| |
are looking pretty good now.
llvm-svn: 48043
|
| |
|
|
|
|
| |
and prefetchnta instructions.
llvm-svn: 48042
|
| |
|
|
| |
llvm-svn: 48041
|
| |
|
|
|
|
|
| |
by promoting smaller integral values (i32 at this point) to i64, then truncating
to get the wanted size.
llvm-svn: 48030
|
| |
|
|
| |
llvm-svn: 48029
|
| |
|
|
|
|
| |
but there are bugs.
llvm-svn: 48028
|
| |
|
|
| |
llvm-svn: 48027
|
| |
|
|
|
|
| |
with 32 or 64-bit operands/results.
llvm-svn: 48026
|
| |
|
|
|
|
| |
we're using SSE or not. This fixes PR2122.
llvm-svn: 48006
|
| |
|
|
| |
llvm-svn: 47996
|
| |
|
|
|
|
| |
upper and lower 32-bits are the same (in addition to 0 and -1 previously.)
llvm-svn: 47985
|
| |
|
|
| |
llvm-svn: 47981
|
| |
|
|
|
|
| |
correct now.
llvm-svn: 47978
|
| |
|
|
|
|
|
|
|
|
|
| |
using IL, ILA, et. al. v2i64 and i64 are now supported by
the select bits (SELB) instruction.
- Add missing comparison operations (testcase forthcoming)
- More multiclass refactoring.
llvm-svn: 47973
|
| |
|
|
| |
llvm-svn: 47948
|
| |
|
|
| |
llvm-svn: 47941
|
| |
|
|
| |
llvm-svn: 47940
|
| |
|
|
| |
llvm-svn: 47939
|
| |
|
|
| |
llvm-svn: 47934
|
| |
|
|
| |
llvm-svn: 47933
|
| |
|
|
|
|
|
|
| |
constant.
For x86, if sse2 is available, it's not a good idea since cvtss2sd is slower than a movsd load and it prevents load folding. On x87, it's important to shrink fp constant since fldt is very expensive.
llvm-svn: 47931
|
| |
|
|
| |
llvm-svn: 47929
|
| |
|
|
|
|
| |
findRegisterUseOperandIdx, findRegisterDefOperandIndx. Fix some naming inconsistencies.
llvm-svn: 47927
|
| |
|
|
| |
llvm-svn: 47918
|
| |
|
|
|
|
|
| |
class (cosmetic). First piece of byval implementation;
this doesn't work yet. No functional change.
llvm-svn: 47917
|