blob: b02c8aeba174b0790d687c77590af49d005dafef [file] [log] [blame]
Lei Huang263dc4e2017-10-11 20:20:58 +00001; RUN: llc -verify-machineinstrs -mtriple=powerpc64le-unknown-linux-gnu -mcpu=pwr8 < %s | FileCheck %s
2; RUN: llc -verify-machineinstrs -mtriple=powerpc64le-unknown-linux-gnu -mcpu=pwr9 < %s | FileCheck -check-prefix=CHECK-PWR9 %s
3
4define <4 x i32> @testSpill(<4 x i32> %a, <4 x i32> %b) {
5
6; CHECK-LABEL: testSpill:
Stefan Pintilie17127002018-01-09 21:57:49 +00007; CHECK-DAG: li [[REG64:[0-9]+]], -64
8; CHECK-DAG: li [[REG48:[0-9]+]], -48
9; CHECK-DAG: li [[REG32:[0-9]+]], -32
10; CHECK-DAG: li [[REG16:[0-9]+]], -16
11; CHECK-NOT: li
12; CHECK-DAG: stxvd2x 60, 1, [[REG64]] # 16-byte Folded Spill
13; CHECK-DAG: stxvd2x 61, 1, [[REG48]] # 16-byte Folded Spill
14; CHECK-DAG: stxvd2x 62, 1, [[REG32]] # 16-byte Folded Spill
15; CHECK-DAG: stxvd2x 63, 1, [[REG16]] # 16-byte Folded Spill
16; CHECK: std 0, 16(1)
17; CHECK-DAG: li [[REG16:[0-9]+]], -16
18; CHECK-DAG: li [[REG32:[0-9]+]], -32
19; CHECK-DAG: li [[REG48:[0-9]+]], -48
20; CHECK-DAG: li [[REG64:[0-9]+]], -64
Lei Huang263dc4e2017-10-11 20:20:58 +000021; CHECK: mtlr 0
Stefan Pintilie17127002018-01-09 21:57:49 +000022; CHECK-DAG: lxvd2x 63, 1, [[REG16]] # 16-byte Folded Reload
23; CHECK-DAG: lxvd2x 62, 1, [[REG32]] # 16-byte Folded Reload
24; CHECK-DAG: lxvd2x 61, 1, [[REG48]] # 16-byte Folded Reload
25; CHECK-DAG: lxvd2x 60, 1, [[REG64]] # 16-byte Folded Reload
Lei Huang263dc4e2017-10-11 20:20:58 +000026; CHECK-NEXT: blr
27;
28; CHECK-PWR9-LABEL: testSpill:
Stefan Pintilie17127002018-01-09 21:57:49 +000029; CHECK-PWR9-DAG: stxv 60, -64(1) # 16-byte Folded Spill
30; CHECK-PWR9-DAG: stxv 61, -48(1) # 16-byte Folded Spill
31; CHECK-PWR9-DAG: stxv 62, -32(1) # 16-byte Folded Spill
32; CHECK-PWR9-DAG: stxv 63, -16(1) # 16-byte Folded Spill
Lei Huang263dc4e2017-10-11 20:20:58 +000033; CHECK-PWR9: mtlr 0
Stefan Pintilie17127002018-01-09 21:57:49 +000034; CHECK-PWR9-DAG: lxv 63, -16(1) # 16-byte Folded Reload
35; CHECK-PWR9-DAG: lxv 62, -32(1) # 16-byte Folded Reload
36; CHECK-PWR9-DAG: lxv 61, -48(1) # 16-byte Folded Reload
37; CHECK-PWR9-DAG: lxv 60, -64(1) # 16-byte Folded Reload
Lei Huang263dc4e2017-10-11 20:20:58 +000038; CHECK-PWR9-NEXT: blr
39
40entry:
41 %0 = tail call i32 @llvm.ppc.altivec.vcmpgtsw.p(i32 2, <4 x i32> %a, <4 x i32> %b)
42 %tobool = icmp eq i32 %0, 0
43 br i1 %tobool, label %if.else, label %if.then
44
45if.then: ; preds = %entry
46 %call = tail call <4 x i32> @test1(<4 x i32> %a, <4 x i32> %b)
47 br label %if.end
48
49if.else: ; preds = %entry
50 %call1 = tail call <4 x i32> @test2(<4 x i32> %b, <4 x i32> %a)
51 br label %if.end
52
53if.end: ; preds = %if.else, %if.then
54 %c.0.in = phi <4 x i32> [ %call, %if.then ], [ %call1, %if.else ]
55 %call3 = tail call <4 x i32> @test1(<4 x i32> %b, <4 x i32> %a)
56 %call5 = tail call <4 x i32> @test2(<4 x i32> %a, <4 x i32> %b)
57 %add4 = add <4 x i32> %a, <i32 0, i32 0, i32 2, i32 2>
58 %add6 = add <4 x i32> %add4, %c.0.in
59 %c.0 = add <4 x i32> %add6, %call3
60 %add7 = add <4 x i32> %c.0, %call5
61 ret <4 x i32> %add7
62}
63
64; Function Attrs: nounwind readnone
65declare i32 @llvm.ppc.altivec.vcmpgtsw.p(i32, <4 x i32>, <4 x i32>)
66declare <4 x i32> @test1(<4 x i32>, <4 x i32>)
67declare <4 x i32> @test2(<4 x i32>, <4 x i32>)