blob: 67fd5d3e3085117ce36d698bf4b4ace808c8e260 [file] [log] [blame]
Tony Jiang2d9c5f3b2017-09-19 16:14:37 +00001; RUN: llc -verify-machineinstrs -mtriple=powerpc64-unknown-linux-gnu -mcpu=pwr8 < %s | FileCheck %s
2; RUN: llc -verify-machineinstrs -mtriple=powerpc64le-unknown-linux-gnu -mcpu=pwr8 < %s | FileCheck %s
3
4define i64 @testOptimizeLiAddToAddi(i64 %a) {
5; CHECK-LABEL: testOptimizeLiAddToAddi:
Geoff Berrya2b90112018-02-27 16:59:10 +00006; CHECK: addi 3, 3, 2444
Tony Jiang2d9c5f3b2017-09-19 16:14:37 +00007; CHECK: bl callv
8; CHECK: addi 3, 30, 234
9; CHECK: bl call
10; CHECK: blr
11entry:
12 %cmp = icmp sgt i64 %a, 33
13 br i1 %cmp, label %if.then, label %if.end
14
15if.then:
16 tail call void bitcast (void (...)* @callv to void ()*)()
17 br label %if.end
18
19if.end:
20 %add.0 = phi i64 [ 234, %if.then ], [ 2444, %entry ]
21 %add2 = add nsw i64 %add.0, %a
22 %call = tail call i64 @call(i64 %add2)
23 ret i64 %call
24}
25
26define i64 @testThreePhiIncomings(i64 %a) {
27; CHECK-LABEL: testThreePhiIncomings:
28; CHECK: bl callv
29; CHECK: addi 3, 30, 234
30; CHECK: addi 3, 30, 2444
31; CHECK: bl callv
32; CHECK: addi 3, 30, 345
33; CHECK: bl call
34; CHECK: blr
35entry:
36 %cmp = icmp slt i64 %a, 33
37 br i1 %cmp, label %if.then, label %if.else
38
39if.then:
40 tail call void bitcast (void (...)* @callv to void ()*)()
41 br label %if.end4
42
43if.else:
44 %cmp1 = icmp slt i64 %a, 55
45 br i1 %cmp1, label %if.then2, label %if.end4
46
47if.then2:
48 tail call void bitcast (void (...)* @callv to void ()*)()
49 br label %if.end4
50
51if.end4:
52 %add.0 = phi i64 [ 234, %if.then ], [ 345, %if.then2 ], [ 2444, %if.else ]
53 %add5 = add nsw i64 %add.0, %a
54 %call = tail call i64 @call(i64 %add5)
55 ret i64 %call
56}
57
58declare void @callv(...)
59
60declare i64 @call(i64)