brintos

brintos / llvm-project-archived public Read only

0
0
Text · 6.1 KiB · e65e254 Raw
127 lines · plain
1; NOTE: Assertions have been autogenerated by utils/update_test_checks.py UTC_ARGS: --version 52; RUN: opt < %s -passes='unify-loop-exits' -S | FileCheck %s3 4define fastcc void @undef_phi(i64 %i5247, i1 %i4530, i1 %i4936.not) {5; CHECK-LABEL: define fastcc void @undef_phi(6; CHECK-SAME: i64 [[I5247:%.*]], i1 [[I4530:%.*]], i1 [[I4936_NOT:%.*]]) {7; CHECK-NEXT:  [[BB:.*:]]8; CHECK-NEXT:    br label %[[MBB3932:.*]]9; CHECK:       [[MBB3932]]:10; CHECK-NEXT:    br label %[[MBB4454:.*]]11; CHECK:       [[MBB4321:.*]]:12; CHECK-NEXT:    [[TMP0:%.*]] = trunc i64 [[I5247]] to i3213; CHECK-NEXT:    [[I5290:%.*]] = icmp eq i32 [[TMP0]], 014; CHECK-NEXT:    br i1 [[I5290]], label %[[MBB3932]], label %[[LOOP_EXIT_GUARD:.*]]15; CHECK:       [[MBB4454]]:16; CHECK-NEXT:    br i1 [[I4530]], label %[[MBB4535:.*]], label %[[LOOP_EXIT_GUARD1:.*]]17; CHECK:       [[MBB4531:.*]]:18; CHECK-NEXT:    ret void19; CHECK:       [[MBB4535]]:20; CHECK-NEXT:    br i1 [[I4936_NOT]], label %[[LOOP_EXIT_GUARD1]], label %[[MBB4454]]21; CHECK:       [[MBB5291:.*]]:22; CHECK-NEXT:    [[I5293:%.*]] = insertvalue [2 x i32] zeroinitializer, i32 [[DOTMOVED:%.*]], 123; CHECK-NEXT:    store volatile [2 x i32] [[I5293]], ptr addrspace(5) null, align 424; CHECK-NEXT:    ret void25; CHECK:       [[LOOP_EXIT_GUARD]]:26; CHECK-NEXT:    [[DOTMOVED]] = phi i32 [ [[TMP0]], %[[MBB4321]] ], [ poison, %[[LOOP_EXIT_GUARD1]] ]27; CHECK-NEXT:    [[GUARD_MBB4531:%.*]] = phi i1 [ false, %[[MBB4321]] ], [ [[GUARD_MBB4531_MOVED:%.*]], %[[LOOP_EXIT_GUARD1]] ]28; CHECK-NEXT:    br i1 [[GUARD_MBB4531]], label %[[MBB4531]], label %[[MBB5291]]29; CHECK:       [[LOOP_EXIT_GUARD1]]:30; CHECK-NEXT:    [[GUARD_MBB4531_MOVED]] = phi i1 [ true, %[[MBB4454]] ], [ poison, %[[MBB4535]] ]31; CHECK-NEXT:    [[GUARD_LOOP_EXIT_GUARD:%.*]] = phi i1 [ true, %[[MBB4454]] ], [ false, %[[MBB4535]] ]32; CHECK-NEXT:    br i1 [[GUARD_LOOP_EXIT_GUARD]], label %[[LOOP_EXIT_GUARD]], label %[[MBB4321]]33;34mbb:35  br label %mbb393236 37mbb3932:                                           ; preds = %mbb4321, %mbb38  br label %mbb445439 40mbb4321:                                           ; preds = %mbb453541  %0 = trunc i64 %i5247 to i3242  %i5290 = icmp eq i32 %0, 043  br i1 %i5290, label %mbb3932, label %mbb529144 45mbb4454:                                           ; preds = %mbb4535, %mbb393246  br i1 %i4530, label %mbb4535, label %mbb453147 48mbb4531:                                           ; preds = %mbb445449  ret void50 51mbb4535:                                           ; preds = %mbb445452  br i1 %i4936.not, label %mbb4321, label %mbb445453 54mbb5291:                                           ; preds = %mbb432155  %i5293 = insertvalue [2 x i32] zeroinitializer, i32 %0, 156  store volatile [2 x i32] %i5293, ptr addrspace(5) null, align 457  ret void58}59 60define fastcc void @undef_phi_callbr(i64 %i5247, i1 %i4530, i1 %i4936.not) {61; CHECK-LABEL: define fastcc void @undef_phi_callbr(62; CHECK-SAME: i64 [[I5247:%.*]], i1 [[I4530:%.*]], i1 [[I4936_NOT:%.*]]) {63; CHECK-NEXT:  [[MBB:.*:]]64; CHECK-NEXT:    callbr void asm "", ""()65; CHECK-NEXT:            to label %[[MBB3932:.*]] []66; CHECK:       [[MBB3932]]:67; CHECK-NEXT:    callbr void asm "", ""()68; CHECK-NEXT:            to label %[[MBB4454:.*]] []69; CHECK:       [[MBB4321:.*]]:70; CHECK-NEXT:    [[TMP0:%.*]] = trunc i64 [[I5247]] to i3271; CHECK-NEXT:    [[I5290:%.*]] = icmp eq i32 [[TMP0]], 072; CHECK-NEXT:    callbr void asm "", "r,!i"(i1 [[I5290]])73; CHECK-NEXT:            to label %[[MBB3932]] [label %mbb4321.target.mbb5291]74; CHECK:       [[MBB4454]]:75; CHECK-NEXT:    callbr void asm "", "r,!i"(i1 [[I4530]])76; CHECK-NEXT:            to label %[[MBB4535:.*]] [label %mbb4454.target.mbb4454.target.mbb4531]77; CHECK:       [[MBB4531:.*]]:78; CHECK-NEXT:    ret void79; CHECK:       [[MBB4535]]:80; CHECK-NEXT:    callbr void asm "", "r,!i"(i1 [[I4936_NOT]])81; CHECK-NEXT:            to label %[[MBB4535_TARGET_MBB4321:.*]] [label %mbb4454]82; CHECK:       [[MBB5291:.*]]:83; CHECK-NEXT:    [[I5293:%.*]] = insertvalue [2 x i32] zeroinitializer, i32 [[DOTMOVED:%.*]], 184; CHECK-NEXT:    store volatile [2 x i32] [[I5293]], ptr addrspace(5) null, align 485; CHECK-NEXT:    ret void86; CHECK:       [[MBB4454_TARGET_MBB4531:.*]]:87; CHECK-NEXT:    br label %[[LOOP_EXIT_GUARD:.*]]88; CHECK:       [[MBB4321_TARGET_MBB5291:.*]]:89; CHECK-NEXT:    br label %[[LOOP_EXIT_GUARD]]90; CHECK:       [[LOOP_EXIT_GUARD]]:91; CHECK-NEXT:    [[DOTMOVED]] = phi i32 [ poison, %[[MBB4454_TARGET_MBB4531]] ], [ [[TMP0]], %[[MBB4321_TARGET_MBB5291]] ]92; CHECK-NEXT:    [[GUARD_MBB4531:%.*]] = phi i1 [ true, %[[MBB4454_TARGET_MBB4531]] ], [ false, %[[MBB4321_TARGET_MBB5291]] ]93; CHECK-NEXT:    br i1 [[GUARD_MBB4531]], label %[[MBB4531]], label %[[MBB5291]]94; CHECK:       [[MBB4454_TARGET_MBB4454_TARGET_MBB4531:.*]]:95; CHECK-NEXT:    br label %[[LOOP_EXIT_GUARD1:.*]]96; CHECK:       [[MBB4535_TARGET_MBB4321]]:97; CHECK-NEXT:    br label %[[LOOP_EXIT_GUARD1]]98; CHECK:       [[LOOP_EXIT_GUARD1]]:99; CHECK-NEXT:    [[GUARD_MBB4454_TARGET_MBB4531:%.*]] = phi i1 [ true, %[[MBB4454_TARGET_MBB4454_TARGET_MBB4531]] ], [ false, %[[MBB4535_TARGET_MBB4321]] ]100; CHECK-NEXT:    br i1 [[GUARD_MBB4454_TARGET_MBB4531]], label %[[MBB4454_TARGET_MBB4531]], label %[[MBB4321]]101;102mbb:103  callbr void asm "", ""() to label %mbb3932 []104 105mbb3932:                                           ; preds = %mbb4321, %mbb106  callbr void asm "", ""() to label %mbb4454 []107 108mbb4321:                                           ; preds = %mbb4535109  %0 = trunc i64 %i5247 to i32110  %i5290 = icmp eq i32 %0, 0111  callbr void asm "", "r,!i"(i1 %i5290) to label %mbb3932 [label %mbb5291]112 113mbb4454:                                           ; preds = %mbb4535, %mbb3932114  callbr void asm "", "r,!i"(i1 %i4530) to label %mbb4535 [label %mbb4531]115 116mbb4531:                                           ; preds = %mbb4454117  ret void118 119mbb4535:                                           ; preds = %mbb4454120  callbr void asm "", "r,!i"(i1 %i4936.not) to label %mbb4321 [label %mbb4454]121 122mbb5291:                                           ; preds = %mbb4321123  %i5293 = insertvalue [2 x i32] zeroinitializer, i32 %0, 1124  store volatile [2 x i32] %i5293, ptr addrspace(5) null, align 4125  ret void126}127