brintos

brintos / llvm-project-archived public Read only

0
0
Text · 3.2 KiB · ab4d6f6 Raw
104 lines · plain
1; RUN: opt < %s -passes='print<branch-prob>' -disable-output 2>&1 | FileCheck %s2 3@A = global i32 0, align 44@B = global i32 0, align 45 6; CHECK-LABEL: eq_opaque_minus_one7define void @eq_opaque_minus_one(ptr %base) {8entry:9  %const = bitcast i32 -1 to i3210  %tmp1 = load i32, ptr @B, align 411  br label %for.body12 13; CHECK: edge %for.body -> %if.then probability is 0x30000000 / 0x80000000 = 37.50%14; CHECK: edge %for.body -> %for.inc probability is 0x50000000 / 0x80000000 = 62.50%15for.body:16  %tmp4 = phi i32 [ %tmp1, %entry ], [ %tmp7, %for.inc ]17  %inc.iv = phi i32 [ 0, %entry ], [ %inc, %for.inc ]18  %storemerge176.in = getelementptr inbounds i32, ptr %base, i32 %inc.iv19  %storemerge176 = load i32, ptr %storemerge176.in, align 420  store i32 %storemerge176, ptr @A, align 421  %cmp20 = icmp eq i32 %storemerge176, %const22  br i1 %cmp20, label %if.then, label %for.inc23 24if.then:25  %lnot.ext = zext i1 %cmp20 to i3226  store i32 %lnot.ext, ptr @B, align 427  br label %for.inc28 29for.inc:30  %tmp7 = phi i32 [ %tmp4, %for.body ], [ %lnot.ext, %if.then ]31  %inc = add nuw nsw i32 %inc.iv, 132  %cmp9 = icmp ult i32 %inc, 40133  br i1 %cmp9, label %for.body, label %exit34 35exit:36  ret void37}38 39; CHECK-LABEL: ne_opaque_minus_one40define void @ne_opaque_minus_one(ptr %base) {41entry:42  %const = bitcast i32 -1 to i3243  %tmp1 = load i32, ptr @B, align 444  br label %for.body45 46; CHECK: edge %for.body -> %if.then probability is 0x50000000 / 0x80000000 = 62.50%47; CHECK: edge %for.body -> %for.inc probability is 0x30000000 / 0x80000000 = 37.50%48for.body:49  %tmp4 = phi i32 [ %tmp1, %entry ], [ %tmp7, %for.inc ]50  %inc.iv = phi i32 [ 0, %entry ], [ %inc, %for.inc ]51  %storemerge176.in = getelementptr inbounds i32, ptr %base, i32 %inc.iv52  %storemerge176 = load i32, ptr %storemerge176.in, align 453  store i32 %storemerge176, ptr @A, align 454  %cmp20 = icmp ne i32 %storemerge176, %const55  br i1 %cmp20, label %if.then, label %for.inc56 57if.then:58  %lnot.ext = zext i1 %cmp20 to i3259  store i32 %lnot.ext, ptr @B, align 460  br label %for.inc61 62for.inc:63  %tmp7 = phi i32 [ %tmp4, %for.body ], [ %lnot.ext, %if.then ]64  %inc = add nuw nsw i32 %inc.iv, 165  %cmp9 = icmp ult i32 %inc, 40166  br i1 %cmp9, label %for.body, label %exit67 68exit:69  ret void70}71 72; CHECK-LABEL: sgt_opaque_minus_one73define void @sgt_opaque_minus_one(ptr %base) {74entry:75  %const = bitcast i32 -1 to i3276  %tmp1 = load i32, ptr @B, align 477  br label %for.body78 79; CHECK: edge %for.body -> %if.then probability is 0x50000000 / 0x80000000 = 62.50%80; CHECK: edge %for.body -> %for.inc probability is 0x30000000 / 0x80000000 = 37.50%81for.body:82  %tmp4 = phi i32 [ %tmp1, %entry ], [ %tmp7, %for.inc ]83  %inc.iv = phi i32 [ 0, %entry ], [ %inc, %for.inc ]84  %storemerge176.in = getelementptr inbounds i32, ptr %base, i32 %inc.iv85  %storemerge176 = load i32, ptr %storemerge176.in, align 486  store i32 %storemerge176, ptr @A, align 487  %cmp20 = icmp sgt i32 %storemerge176, %const88  br i1 %cmp20, label %if.then, label %for.inc89 90if.then:91  %lnot.ext = zext i1 %cmp20 to i3292  store i32 %lnot.ext, ptr @B, align 493  br label %for.inc94 95for.inc:96  %tmp7 = phi i32 [ %tmp4, %for.body ], [ %lnot.ext, %if.then ]97  %inc = add nuw nsw i32 %inc.iv, 198  %cmp9 = icmp ult i32 %inc, 40199  br i1 %cmp9, label %for.body, label %exit100 101exit:102  ret void103}104