1; 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: 6; CHECK: addi 3, 3, 2444 7; 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) 61