brintos

brintos / llvm-project-archived public Read only

0
0
Text · 3.8 KiB · 057e700 Raw
125 lines · plain
1; RUN: llvm-extract -bb 'foo:if;then;else' -bb 'bar:bb14;bb20' -S %s  | FileCheck %s2; Extract two groups of basic blocks in two different functions.3 4 5; The first extracted function is the region composed by the6; blocks if, then, and else from foo.7; CHECK: define dso_local void @foo.if.split(i32 %arg1, i32 %arg, ptr %tmp.0.ce.out) {8; CHECK: newFuncRoot:9; CHECK:   br label %if.split10;11; CHECK: then:                                             ; preds = %if.split12; CHECK:   %tmp12 = shl i32 %arg1, 213; CHECK:   %tmp13 = add nsw i32 %tmp12, %arg14; CHECK:   br label %end.split15;16; CHECK: else:                                             ; preds = %if.split17; CHECK:   %tmp22 = mul nsw i32 %arg, 318; CHECK:   %tmp24 = sdiv i32 %arg1, 619; CHECK:   %tmp25 = add nsw i32 %tmp24, %tmp2220; CHECK:   br label %end.split21;22; CHECK: if.split:                                         ; preds = %newFuncRoot23; CHECK:   %tmp5 = icmp sgt i32 %arg, 024; CHECK:   %tmp8 = icmp sgt i32 %arg1, 025; CHECK:   %or.cond = and i1 %tmp5, %tmp826; CHECK:   br i1 %or.cond, label %then, label %else27;28; CHECK: end.split:                                        ; preds = %then, %else29; CHECK:   %tmp.0.ce = phi i32 [ %tmp13, %then ], [ %tmp25, %else ]30; CHECK:   store i32 %tmp.0.ce, ptr %tmp.0.ce.out31; CHECK:   br label %end.exitStub32;33; CHECK: end.exitStub:                                     ; preds = %end.split34; CHECK:   ret void35; CHECK: }36 37; The second extracted function is the region composed by the blocks38; bb14 and bb20 from bar.39; CHECK: define dso_local i1 @bar.bb14(i32 %arg1, i32 %arg, ptr %tmp25.out) {40; CHECK: newFuncRoot:41; CHECK:   br label %bb1442;43; CHECK: bb14:                                             ; preds = %newFuncRoot44; CHECK:   %tmp0 = and i32 %arg1, %arg45; CHECK:   %tmp1 = icmp slt i32 %tmp0, 046; CHECK:   br i1 %tmp1, label %bb20, label %bb26.exitStub47;48; CHECK: bb20:                                             ; preds = %bb1449; CHECK:   %tmp22 = mul nsw i32 %arg, 350; CHECK:   %tmp24 = sdiv i32 %arg1, 651; CHECK:   %tmp25 = add nsw i32 %tmp24, %tmp2252; CHECK:   store i32 %tmp25, ptr %tmp25.out53; CHECK:   br label %bb30.exitStub54;55; CHECK: bb26.exitStub:                                    ; preds = %bb1456; CHECK:   ret i1 true57;58; CHECK: bb30.exitStub:                                    ; preds = %bb2059; CHECK:   ret i1 false60; CHECK: }61 62define i32 @foo(i32 %arg, i32 %arg1) {63if:64  %tmp5 = icmp sgt i32 %arg, 065  %tmp8 = icmp sgt i32 %arg1, 066  %or.cond = and i1 %tmp5, %tmp867  br i1 %or.cond, label %then, label %else68 69then:70  %tmp12 = shl i32 %arg1, 271  %tmp13 = add nsw i32 %tmp12, %arg72  br label %end73 74else:75  %tmp22 = mul nsw i32 %arg, 376  %tmp24 = sdiv i32 %arg1, 677  %tmp25 = add nsw i32 %tmp24, %tmp2278  br label %end79 80end:81  %tmp.0 = phi i32 [ %tmp13, %then ], [ %tmp25, %else ]82  %and0 = and i32 %tmp.0, %arg83  %cmp1 = icmp slt i32 %and0, 084  br i1 %cmp1, label %ret0, label %ret185 86ret0:87  ret i32 088 89ret1:90  ret i32 191}92 93define i32 @bar(i32 %arg, i32 %arg1) {94bb:95  %tmp5 = icmp sgt i32 %arg, 096  %tmp8 = icmp sgt i32 %arg1, 097  %or.cond = and i1 %tmp5, %tmp898  br i1 %or.cond, label %bb9, label %bb1499 100bb9:                                              ; preds = %bb101  %tmp12 = shl i32 %arg1, 2102  %tmp13 = add nsw i32 %tmp12, %arg103  br label %bb30104 105bb14:                                             ; preds = %bb106  %tmp0 = and i32 %arg1, %arg107  %tmp1 = icmp slt i32 %tmp0, 0108  br i1 %tmp1, label %bb20, label %bb26109 110bb20:                                             ; preds = %bb14111  %tmp22 = mul nsw i32 %arg, 3112  %tmp24 = sdiv i32 %arg1, 6113  %tmp25 = add nsw i32 %tmp24, %tmp22114  br label %bb30115 116bb26:                                             ; preds = %bb14117  %tmp29 = sub nsw i32 %arg, %arg1118  br label %bb30119 120bb30:                                             ; preds = %bb26, %bb20, %bb9121  %tmp.0 = phi i32 [ %tmp13, %bb9 ], [ %tmp25, %bb20 ], [ %tmp29, %bb26 ]122  ret i32 %tmp.0123}124 125