- Apr 18, 2006
-
-
Chris Lattner authored
llvm-svn: 27795
-
Chris Lattner authored
llvm-svn: 27794
-
Chris Lattner authored
even/odd halves. Thanks to Nate telling me what's what. llvm-svn: 27793
-
Chris Lattner authored
vmuloub v5, v3, v2 vmuleub v2, v3, v2 vperm v2, v2, v5, v4 This implements CodeGen/PowerPC/vec_mul.ll. With this, v16i8 multiplies are 6.79x faster than before. Overall, UnitTests/Vector/multiplies.c is now 2.45x faster with LLVM than with GCC. Remove the 'integer multiplies' todo from the README file. llvm-svn: 27792
-
Chris Lattner authored
llvm-svn: 27791
-
Evan Cheng authored
llvm-svn: 27790
-
Chris Lattner authored
li r5, lo16(LCPI1_0) lis r6, ha16(LCPI1_0) lvx v4, r6, r5 vmulouh v5, v3, v2 vmuleuh v2, v3, v2 vperm v2, v2, v5, v4 where v4 is: LCPI1_0: ; <16 x ubyte> .byte 2 .byte 3 .byte 18 .byte 19 .byte 6 .byte 7 .byte 22 .byte 23 .byte 10 .byte 11 .byte 26 .byte 27 .byte 14 .byte 15 .byte 30 .byte 31 This is 5.07x faster on the G5 (measured) than lowering to scalar code + loads/stores. llvm-svn: 27789
-
Chris Lattner authored
scalarize the sequence into 4 mullw's and a bunch of load/store traffic. This speeds up v4i32 multiplies 4.1x (measured) on a G5. This implements PowerPC/vec_mul.ll llvm-svn: 27788
-
Chris Lattner authored
llvm-svn: 27787
-
Evan Cheng authored
llvm-svn: 27786
-
Chris Lattner authored
llvm-svn: 27785
-
Evan Cheng authored
llvm-svn: 27784
-
Evan Cheng authored
llvm-svn: 27782
-
Chris Lattner authored
if the pointer is known aligned. llvm-svn: 27781
-
Chris Lattner authored
the code in GCC PR26546. llvm-svn: 27780
-
Evan Cheng authored
llvm-svn: 27779
-
- Apr 17, 2006
-
-
Chris Lattner authored
llvm-svn: 27778
-
Chris Lattner authored
allows us to codegen functions as: _test_rol: vspltisw v2, -12 vrlw v2, v2, v2 blr instead of: _test_rol: mfvrsave r2, 256 mr r3, r2 mtvrsave r3 vspltisw v2, -12 vrlw v2, v2, v2 mtvrsave r2 blr Testcase here: CodeGen/PowerPC/vec_vrsave.ll llvm-svn: 27777
-
Chris Lattner authored
llvm-svn: 27776
-
Chris Lattner authored
llvm-svn: 27775
-
Chris Lattner authored
llvm-svn: 27774
-
Evan Cheng authored
llvm-svn: 27773
-
Chris Lattner authored
the vrsave register for the caller. This allows us to codegen a function as: _test_rol: mfspr r2, 256 mr r3, r2 mtspr 256, r3 vspltisw v2, -12 vrlw v2, v2, v2 mtspr 256, r2 blr instead of: _test_rol: mfspr r2, 256 oris r3, r2, 40960 mtspr 256, r3 vspltisw v0, -12 vrlw v2, v0, v0 mtspr 256, r2 blr llvm-svn: 27772
-
Chris Lattner authored
vspltisw v2, -12 vrlw v2, v2, v2 instead of: vspltisw v0, -12 vrlw v2, v0, v0 when a function is returning a value. llvm-svn: 27771
-
Chris Lattner authored
llvm-svn: 27770
-
Chris Lattner authored
llvm-svn: 27769
-
Evan Cheng authored
llvm-svn: 27768
-
Chris Lattner authored
llvm-svn: 27767
-
Chris Lattner authored
llvm-svn: 27766
-
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
-
Chris Lattner authored
being a bit more clever, add support for odd splats from -31 to -17. llvm-svn: 27764
-
Evan Cheng authored
llvm-svn: 27763
-
Evan Cheng authored
llvm-svn: 27762
-
Jeff Cohen authored
llvm-svn: 27761
-
Chris Lattner authored
This implements vec_constants.ll:test_vsldoi and test_rol llvm-svn: 27760
-
Chris Lattner authored
llvm-svn: 27759
-
Chris Lattner authored
llvm-svn: 27758
-
Evan Cheng authored
llvm-svn: 27755
-
Chris Lattner authored
new patterns. llvm-svn: 27754
-
Chris Lattner authored
llvm-svn: 27753
-