1;RUN: llc --march=cellspu %s -o - | FileCheck %s 2%vec = type <2 x i32> 3 4define %vec @test_ret(%vec %param) 5{ 6;CHECK: bi $lr 7 ret %vec %param 8} 9 10define %vec @test_add(%vec %param) 11{ 12;CHECK: shufb 13;CHECK: addx 14 %1 = add %vec %param, %param 15;CHECK: bi $lr 16 ret %vec %1 17} 18 19define %vec @test_sub(%vec %param) 20{ 21 %1 = sub %vec %param, <i32 1, i32 1> 22;CHECK: bi $lr 23 ret %vec %1 24} 25 26define %vec @test_mul(%vec %param) 27{ 28 %1 = mul %vec %param, %param 29;CHECK: bi $lr 30 ret %vec %1 31} 32 33define <2 x i32> @test_splat(i32 %param ) { 34;see svn log for why this is here... 35;CHECK-NOT: or $3, $3, $3 36;CHECK: lqa 37;CHECK: shufb 38 %sv = insertelement <1 x i32> undef, i32 %param, i32 0 39 %rv = shufflevector <1 x i32> %sv, <1 x i32> undef, <2 x i32> zeroinitializer 40;CHECK: bi $lr 41 ret <2 x i32> %rv 42} 43 44define i32 @test_extract() { 45;CHECK: shufb $3 46 %rv = extractelement <2 x i32> zeroinitializer, i32 undef ; <i32> [#uses=1] 47;CHECK: bi $lr 48 ret i32 %rv 49} 50 51define void @test_store( %vec %val, %vec* %ptr) 52{ 53 store %vec %val, %vec* %ptr 54 ret void 55} 56 57define <2 x i32>* @test_alignment( [2 x <2 x i32>]* %ptr) 58{ 59 %rv = getelementptr [2 x <2 x i32>]* %ptr, i32 0, i32 1 60 ret <2 x i32>* %rv 61} 62