136 lines · plain
1; RUN: llc < %s -O1 -verify-machineinstrs -mtriple=powerpc64-unknown-linux-gnu -ppc-use-branch-hint=false | FileCheck %s2; RUN: llc < %s -O1 -verify-machineinstrs -mtriple=powerpc64-unknown-linux-gnu -ppc-use-branch-hint=true | FileCheck %s -check-prefix=CHECK-HINT3define void @branch_hint_1(i32 %src) {4entry:5 %cmp = icmp eq i32 %src, 06 br i1 %cmp, label %if.then, label %if.end7 8if.then:9 tail call void @foo() #010 unreachable11 12if.end:13 call void @goo()14 ret void15 16; CHECK-LABEL: branch_hint_1:17; CHECK: beq18 19; CHECK-HINT-LABEL: branch_hint_1:20; CHECK-HINT: beq-21}22 23define void @branch_hint_2(i32 %src) {24entry:25 %cmp = icmp eq i32 %src, 026 br i1 %cmp, label %if.then, label %if.end27 28if.then:29 call void @goo()30 ret void31 32if.end:33 tail call void @foo() #034 unreachable35 36; CHECK-LABEL: @branch_hint_237; CHECK: bne38 39; CHECK-HINT-LABEL: @branch_hint_240; CHECK-HINT: bne-41}42 43declare void @foo()44attributes #0 = { noreturn }45 46define void @branch_hint_3(i32 %src) {47entry:48 %cmp = icmp eq i32 %src, 049 br i1 %cmp, label %if.then, label %if.end, !prof !050 51if.then:52 call void @foo()53 ret void54 55if.end:56 call void @goo()57 ret void58 59; CHECK-LABEL: @branch_hint_360; CHECK: bne61 62; CHECK-HINT-LABEL: @branch_hint_363; CHECK-HINT: bne64}65 66!0 = !{!"branch_weights", i32 64, i32 4}67 68define void @branch_hint_4(i32 %src) {69entry:70 %cmp = icmp eq i32 %src, 071 br i1 %cmp, label %if.then, label %if.end, !prof !172 73if.then:74 call void @foo()75 ret void76 77if.end:78 call void @goo()79 ret void80 81; CHECK-HINT-LABEL: branch_hint_482; CHECK-HINT: bne83}84 85!1 = !{!"branch_weights", i32 64, i32 8}86 87define void @branch_hint_5(i32 %src) {88entry:89 %cmp = icmp eq i32 %src, 090 br i1 %cmp, label %if.then, label %if.end91 92if.then:93 ret void94 95if.end:96 call void @goo()97 ret void98 99; CHECK-HINT-LABEL: branch_hint_5:100; CHECK-HINT: beq101}102 103declare void @goo()104 105define void @branch_hint_6(i32 %src1, i32 %src2, i32 %src3) {106entry:107 %cmp = icmp eq i32 %src1, 0108 br i1 %cmp, label %if.end.6, label %if.end, !prof !3109 110if.end:111 %cmp1 = icmp eq i32 %src2, 0112 br i1 %cmp1, label %if.end.3, label %if.then.2113 114if.then.2:115 tail call void @foo() #0116 unreachable117 118if.end.3:119 %cmp4 = icmp eq i32 %src3, 1120 br i1 %cmp4, label %if.then.5, label %if.end.6121 122if.then.5:123 tail call void @foo() #0124 unreachable125 126if.end.6:127 ret void128 129; CHECK-HINT-LABEL: branch_hint_6:130; CHECK-HINT: bne131; CHECK-HINT: bne-132; CHECK-HINT: bne+133}134 135!3 = !{!"branch_weights", i32 64, i32 4}136