- Mar 11, 2008
-
-
Christopher Lamb authored
llvm-svn: 48223
-
Evan Cheng authored
If there are multiple register classes that a register belongs to, return the super-class (e.g. on x86, returns GR32, not GR32_). llvm-svn: 48220
-
Evan Cheng authored
When the register allocator runs out of registers, spill a physical register around the def's and use's of the interval being allocated to make it possible for the interval to target a register and spill it right away and restore a register for uses. This likely generates terrible code but is before than aborting. llvm-svn: 48218
-
Evan Cheng authored
llvm-svn: 48217
-
Nick Lewycky authored
llvm-svn: 48212
-
Chris Lattner authored
RET instruction instead of using FpSET_ST0_32. This also generalizes the code to handling returning of multiple FP results. llvm-svn: 48209
-
Dan Gohman authored
and it's the result that requires expansion. This code is a little confusing because the TargetLoweringInfo tables for [US]INT_TO_FP use the operand type (the integer type) rather than the result type. llvm-svn: 48206
-
Chris Lattner authored
llvm-svn: 48199
-
Scott Michel authored
- Add test pattern matching in CellSPU's icmp32.ll test harness - Fix CellSPU fcmp.ll-generated assert. llvm-svn: 48197
-
Chris Lattner authored
can be live out of the block anyway, so it isn't needed. llvm-svn: 48192
-
- Mar 10, 2008
-
-
Dale Johannesen authored
local object of >16 byte alignment exists. It does not work and getting it to work is not trivial, as explained in the comment. This fixes all the remaining ppc32 failures in the struct-layout-1 part of the gcc testsuite. (gcc does not support this either, and the only way to get such an object is with __attribute__((aligned)) or generic vectors; it can't be done in a standard-conforming program, or with Altivec. So I think disabling it is OK.) llvm-svn: 48188
-
Bill Wendling authored
scavenging for 32-bit and 64-bit separately. llvm-svn: 48186
-
Chris Lattner authored
copyfromreg/copytoreg instead. llvm-svn: 48174
-
Evan Cheng authored
llvm-svn: 48169
-
Evan Cheng authored
llvm-svn: 48167
-
Chris Lattner authored
llvm-svn: 48166
-
Nicolas Geoffray authored
llvm-svn: 48158
-
Scott Michel authored
llvm-svn: 48152
-
Scott Michel authored
return ValueType can depend its operands' ValueType. This is a cosmetic change, no functionality impacted. llvm-svn: 48145
-
Nicolas Geoffray authored
llvm-svn: 48143
-
Christopher Lamb authored
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
-
Dale Johannesen authored
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
-
- Mar 09, 2008
-
-
Chris Lattner authored
two regression tests: test/CodeGen/PowerPC/2007-10-21-LocalRegAllocAssert.ll test/CodeGen/PowerPC/2007-10-21-LocalRegAllocAssert2.ll llvm-svn: 48120
-
Chris Lattner authored
cell really does support cross-regclass moves, because R3 is in lots of different regclasses, and the code is not consistent when it comes to value tracking. llvm-svn: 48119
-
Chris Lattner authored
llvm-svn: 48118
-
Chris Lattner authored
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
-
Chris Lattner authored
RST -> RFP{32/64/80}. We only handle ST(0) for now. llvm-svn: 48104
-
Chris Lattner authored
llvm-svn: 48101
-
Chris Lattner authored
codegen yet because these can't be spilled (they don't exist until after RA). llvm-svn: 48098
-
Chris Lattner authored
llvm-svn: 48094
-
Chris Lattner authored
isel'ing value preserving FP roundings from one fp stack reg to another into a noop, instead of stack traffic. llvm-svn: 48093
-
Chris Lattner authored
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
-
Chris Lattner authored
llvm-svn: 48064
-
Chris Lattner authored
#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
-
- Mar 08, 2008
-
-
Chris Lattner authored
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
-
Chris Lattner authored
SCALAR_TO_VECTOR on paths that end up not using it. llvm-svn: 48056
-
Chris Lattner authored
llvm-svn: 48055
-
Chris Lattner authored
llvm-svn: 48054
-
Dale Johannesen authored
are looking pretty good now. llvm-svn: 48043
-
Evan Cheng authored
Implement x86 support for @llvm.prefetch. It corresponds to prefetcht{0|1|2} and prefetchnta instructions. llvm-svn: 48042
-