blob: ca8af6ae74219eca1fadf91e4fa9ac4a1583be72 [file] [log] [blame]
Kalle Raiskila82fe4672010-08-02 08:54:39 +00001;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: a $3, $3, $3
13 %1 = add %vec %param, %param
14;CHECK: bi $lr
15 ret %vec %1
16}
17
18define %vec @test_sub(%vec %param)
19{
20;CHECK: sf $3, $4, $3
21 %1 = sub %vec %param, <i32 1, i32 1>
22
23;CHECK: bi $lr
24 ret %vec %1
25}
26
27define %vec @test_mul(%vec %param)
28{
29;CHECK: mpyu
30;CHECK: mpyh
31;CHECK: a
32;CHECK: a $3
33 %1 = mul %vec %param, %param
34
35;CHECK: bi $lr
36 ret %vec %1
37}
38
39define <2 x i32> @test_splat(i32 %param ) {
40;TODO insertelement transforms to a PREFSLOT2VEC, that trasforms to the
41; somewhat redundant:
42;CHECK-NOT or $3, $3, $3
43;CHECK: lqa
44;CHECK: shufb
45 %sv = insertelement <1 x i32> undef, i32 %param, i32 0
46 %rv = shufflevector <1 x i32> %sv, <1 x i32> undef, <2 x i32> zeroinitializer
47;CHECK: bi $lr
48 ret <2 x i32> %rv
49}
50
51define i32 @test_extract() {
52;CHECK: shufb $3
53 %rv = extractelement <2 x i32> zeroinitializer, i32 undef ; <i32> [#uses=1]
54;CHECK: bi $lr
55 ret i32 %rv
56}
57
Kalle Raiskilabc2697c2010-08-04 13:59:48 +000058define void @test_store( %vec %val, %vec* %ptr)
59{
60;CHECK: stqd $3, 0($4)
61;CHECK: bi $lr
62 store %vec %val, %vec* %ptr
63 ret void
64}