- Apr 17, 2006
-
-
Chris Lattner authored
and a shuffle. For this: void %test2(<4 x float>* %F, float %f) { %tmp = load <4 x float>* %F ; <<4 x float>> [#uses=2] %tmp3 = add <4 x float> %tmp, %tmp ; <<4 x float>> [#uses=1] %tmp2 = insertelement <4 x float> %tmp3, float %f, uint 2 ; <<4 x float>> [#uses=2] %tmp6 = add <4 x float> %tmp2, %tmp2 ; <<4 x float>> [#uses=1] store <4 x float> %tmp6, <4 x float>* %F ret void } we now get this on X86 (which will get better): _test2: movl 4(%esp), %eax movaps (%eax), %xmm0 addps %xmm0, %xmm0 movaps %xmm0, %xmm1 shufps $3, %xmm1, %xmm1 movaps %xmm0, %xmm2 shufps $1, %xmm2, %xmm2 unpcklps %xmm1, %xmm2 movss 8(%esp), %xmm1 unpcklps %xmm1, %xmm0 unpcklps %xmm2, %xmm0 addps %xmm0, %xmm0 movaps %xmm0, (%eax) ret instead of: _test2: subl $28, %esp movl 32(%esp), %eax movaps (%eax), %xmm0 addps %xmm0, %xmm0 movaps %xmm0, (%esp) movss 36(%esp), %xmm0 movss %xmm0, 8(%esp) movaps (%esp), %xmm0 addps %xmm0, %xmm0 movaps %xmm0, (%eax) addl $28, %esp ret llvm-svn: 27765
-
- Apr 16, 2006
-
-
Chris Lattner authored
to write one pattern for vector stores instead of 4. llvm-svn: 27730
-
Chris Lattner authored
buildvectors. llvm-svn: 27723
-
- Apr 14, 2006
-
-
Chris Lattner authored
llvm-svn: 27695
-
- Apr 13, 2006
-
-
Reid Spencer authored
about "dereferencing type-punned pointer will break strict-aliasing rules" llvm-svn: 27671
-
- Apr 12, 2006
-
-
Evan Cheng authored
llvm-svn: 27632
-
Evan Cheng authored
llvm-svn: 27606
-
Chris Lattner authored
Implement support for the formal_arguments node. To get this, targets shouldcustom legalize it and remove their XXXTargetLowering::LowerArguments overload llvm-svn: 27604
-
Chris Lattner authored
getNode do it. This fixes CodeGen/Generic/2006-04-11-vecload.ll llvm-svn: 27602
-
- Apr 11, 2006
-
-
Evan Cheng authored
llvm-svn: 27586
-
Chris Lattner authored
llvm-svn: 27580
-
Chris Lattner authored
llvm-svn: 27578
-
Jim Laskey authored
llvm-svn: 27574
-
- Apr 10, 2006
-
-
Evan Cheng authored
llvm-svn: 27559
-
- Apr 09, 2006
-
-
Chris Lattner authored
llvm-svn: 27542
-
- Apr 08, 2006
-
-
Chris Lattner authored
to match again :) llvm-svn: 27533
-
Chris Lattner authored
llvm-svn: 27529
-
Chris Lattner authored
as its input. llvm-svn: 27528
-
Evan Cheng authored
store vector to $esp store element to $esp + sizeof(VT) * index load vector from $esp The bug is VT is the type of the vector element, not the type of the vector! llvm-svn: 27517
-
Chris Lattner authored
llvm-svn: 27514
-
Jim Laskey authored
section. llvm-svn: 27503
-
- Apr 07, 2006
-
-
Jim Laskey authored
entry point of a function. llvm-svn: 27494
-
Jim Laskey authored
llvm-svn: 27491
-
Evan Cheng authored
2. A shuffle mask element can also be an undef. llvm-svn: 27472
-
- Apr 05, 2006
-
-
Chris Lattner authored
CodeGen/X86/2006-04-04-CrossBlockCrash.ll llvm-svn: 27436
-
Evan Cheng authored
or custom lowering fails. llvm-svn: 27432
-
- Apr 04, 2006
-
-
Chris Lattner authored
legal. llvm-svn: 27402
-
Chris Lattner authored
promoted/expanded (e.g. SCALAR_TO_VECTOR from i8/i16 on PPC). * Add support for targets to request that VECTOR_SHUFFLE nodes be promoted to a canonical type, for example, we only want v16i8 shuffles on PPC. * Move isShuffleLegal out of TLI into Legalize. * Teach isShuffleLegal to allow shuffles that need to be promoted. llvm-svn: 27399
-
Chris Lattner authored
llvm-svn: 27391
-
- Apr 03, 2006
-
-
Chris Lattner authored
llvm-svn: 27380
-
Chris Lattner authored
llvm-svn: 27379
-
Chris Lattner authored
llvm-svn: 27375
-
Chris Lattner authored
llvm-svn: 27374
-
Andrew Lenharth authored
llvm-svn: 27367
-
- Apr 02, 2006
-
-
Andrew Lenharth authored
llvm-svn: 27364
-
Chris Lattner authored
int %AreSecondAndThirdElementsBothNegative(<4 x float>* %in) { entry: %tmp1 = load <4 x float>* %in ; <<4 x float>> [#uses=1] %tmp = tail call int %llvm.ppc.altivec.vcmpgefp.p( int 1, <4 x float> < float 0x7FF8000000000000, float 0.000000e+00, float 0.000000e+00, float 0x7FF8000000000000 >, <4 x float> %tmp1 ) ; <int> [#uses=1] %tmp = seteq int %tmp, 0 ; <bool> [#uses=1] %tmp3 = cast bool %tmp to int ; <int> [#uses=1] ret int %tmp3 } into this: _AreSecondAndThirdElementsBothNegative: mfspr r2, 256 oris r4, r2, 49152 mtspr 256, r4 li r4, lo16(LCPI1_0) lis r5, ha16(LCPI1_0) lvx v0, 0, r3 lvx v1, r5, r4 vcmpgefp. v0, v1, v0 mfcr r3, 2 rlwinm r3, r3, 27, 31, 31 mtspr 256, r2 blr instead of this: _AreSecondAndThirdElementsBothNegative: mfspr r2, 256 oris r4, r2, 49152 mtspr 256, r4 li r4, lo16(LCPI1_0) lis r5, ha16(LCPI1_0) lvx v0, 0, r3 lvx v1, r5, r4 vcmpgefp. v0, v1, v0 mfcr r3, 2 rlwinm r3, r3, 27, 31, 31 xori r3, r3, 1 cntlzw r3, r3 srwi r3, r3, 5 mtspr 256, r2 blr llvm-svn: 27356
-
Chris Lattner authored
llvm-svn: 27349
-
Chris Lattner authored
into elements and operate on each piece. This allows generic vector integer multiplies to work on PPC, though the generated code is horrible. llvm-svn: 27347
-
Chris Lattner authored
have to serialize against each other. This allows us to schedule lvx's across each other, for example. llvm-svn: 27346
-
Chris Lattner authored
"vector unsigned char mergeLowHigh = (vector unsigned char) ( 8, 9, 10, 11, 16, 17, 18, 19, 12, 13, 14, 15, 20, 21, 22, 23 ); vector unsigned char mergeHighLow = vec_xor( mergeLowHigh, vec_splat_u8(8));" aka: void %test2(<16 x sbyte>* %P) { store <16 x sbyte> cast (<4 x int> xor (<4 x int> cast (<16 x ubyte> < ubyte 8, ubyte 9, ubyte 10, ubyte 11, ubyte 16, ubyte 17, ubyte 18, ubyte 19, ubyte 12, ubyte 13, ubyte 14, ubyte 15, ubyte 20, ubyte 21, ubyte 22, ubyte 23 > to <4 x int>), <4 x int> cast (<16 x sbyte> < sbyte 8, sbyte 8, sbyte 8, sbyte 8, sbyte 8, sbyte 8, sbyte 8, sbyte 8, sbyte 8, sbyte 8, sbyte 8, sbyte 8, sbyte 8, sbyte 8, sbyte 8, sbyte 8 > to <4 x int>)) to <16 x sbyte>), <16 x sbyte> * %P ret void } into this: _test2: mfspr r2, 256 oris r4, r2, 32768 mtspr 256, r4 li r4, lo16(LCPI2_0) lis r5, ha16(LCPI2_0) lvx v0, r5, r4 stvx v0, 0, r3 mtspr 256, r2 blr instead of this: _test2: mfspr r2, 256 oris r4, r2, 49152 mtspr 256, r4 li r4, lo16(LCPI2_0) lis r5, ha16(LCPI2_0) vspltisb v0, 8 lvx v1, r5, r4 vxor v0, v1, v0 stvx v0, 0, r3 mtspr 256, r2 blr ... which occurs here: http://developer.apple.com/hardware/ve/calcspeed.html llvm-svn: 27343
-