blob: 8cfc490e02da927adb0dbebacf2933996faca721 [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{
Kalle Raiskila86a79122010-08-18 10:04:39 +000012;CHECK: a {{\$.}}, $3, $3
Kalle Raiskila82fe4672010-08-02 08:54:39 +000013 %1 = add %vec %param, %param
14;CHECK: bi $lr
15 ret %vec %1
16}
17
18define %vec @test_sub(%vec %param)
19{
Kalle Raiskila86a79122010-08-18 10:04:39 +000020;CHECK: sf {{\$.}}, $4, $3
Kalle Raiskila82fe4672010-08-02 08:54:39 +000021 %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
Kalle Raiskila86a79122010-08-18 10:04:39 +000031;CHECK: a {{\$., \$., \$.}}
32;CHECK: a {{\$., \$., \$.}}
Kalle Raiskila82fe4672010-08-02 08:54:39 +000033 %1 = mul %vec %param, %param
34
35;CHECK: bi $lr
36 ret %vec %1
37}
38
39define <2 x i32> @test_splat(i32 %param ) {
Kalle Raiskila1cd1b0b2010-09-16 12:29:33 +000040;see svn log for why this is here...
41;CHECK-NOT: or $3, $3, $3
Kalle Raiskila82fe4672010-08-02 08:54:39 +000042;CHECK: lqa
43;CHECK: shufb
44 %sv = insertelement <1 x i32> undef, i32 %param, i32 0
45 %rv = shufflevector <1 x i32> %sv, <1 x i32> undef, <2 x i32> zeroinitializer
46;CHECK: bi $lr
47 ret <2 x i32> %rv
48}
49
50define i32 @test_extract() {
51;CHECK: shufb $3
52 %rv = extractelement <2 x i32> zeroinitializer, i32 undef ; <i32> [#uses=1]
53;CHECK: bi $lr
54 ret i32 %rv
55}
56
Kalle Raiskilabc2697c2010-08-04 13:59:48 +000057define void @test_store( %vec %val, %vec* %ptr)
58{
Kalle Raiskila86a79122010-08-18 10:04:39 +000059;CHECK: stqd $3, 0(${{.}})
Kalle Raiskilabc2697c2010-08-04 13:59:48 +000060;CHECK: bi $lr
61 store %vec %val, %vec* %ptr
62 ret void
63}