brintos

brintos / llvm-project-archived public Read only

0
0
Text · 5.5 KiB · 02e82b4 Raw
119 lines · plain
1; NOTE: Assertions have been autogenerated by utils/update_test_checks.py UTC_ARGS: --version 42; RUN: opt -passes=loop-vectorize -mtriple=s390x -mcpu=z14 -S %s | FileCheck %s3 4define void @test(ptr %p, i40 %a) {5; CHECK-LABEL: define void @test(6; CHECK-SAME: ptr [[P:%.*]], i40 [[A:%.*]]) #[[ATTR0:[0-9]+]] {7; CHECK-NEXT:  entry:8; CHECK-NEXT:    br label [[VECTOR_PH:%.*]]9; CHECK:       vector.ph:10; CHECK-NEXT:    br label [[VECTOR_BODY:%.*]]11; CHECK:       vector.body:12; CHECK-NEXT:    br i1 true, label [[PRED_STORE_IF:%.*]], label [[PRED_STORE_CONTINUE:%.*]]13; CHECK:       pred.store.if:14; CHECK-NEXT:    store i1 false, ptr [[P]], align 115; CHECK-NEXT:    br label [[PRED_STORE_CONTINUE]]16; CHECK:       pred.store.continue:17; CHECK-NEXT:    br i1 true, label [[PRED_STORE_IF1:%.*]], label [[PRED_STORE_CONTINUE2:%.*]]18; CHECK:       pred.store.if1:19; CHECK-NEXT:    store i1 false, ptr [[P]], align 120; CHECK-NEXT:    br label [[PRED_STORE_CONTINUE2]]21; CHECK:       pred.store.continue2:22; CHECK-NEXT:    br i1 true, label [[PRED_STORE_IF3:%.*]], label [[PRED_STORE_CONTINUE4:%.*]]23; CHECK:       pred.store.if3:24; CHECK-NEXT:    store i1 false, ptr [[P]], align 125; CHECK-NEXT:    br label [[PRED_STORE_CONTINUE4]]26; CHECK:       pred.store.continue4:27; CHECK-NEXT:    br i1 true, label [[PRED_STORE_IF5:%.*]], label [[PRED_STORE_CONTINUE6:%.*]]28; CHECK:       pred.store.if5:29; CHECK-NEXT:    store i1 false, ptr [[P]], align 130; CHECK-NEXT:    br label [[PRED_STORE_CONTINUE6]]31; CHECK:       pred.store.continue6:32; CHECK-NEXT:    br i1 true, label [[PRED_STORE_IF7:%.*]], label [[PRED_STORE_CONTINUE8:%.*]]33; CHECK:       pred.store.if7:34; CHECK-NEXT:    store i1 false, ptr [[P]], align 135; CHECK-NEXT:    br label [[PRED_STORE_CONTINUE8]]36; CHECK:       pred.store.continue8:37; CHECK-NEXT:    br i1 true, label [[PRED_STORE_IF9:%.*]], label [[PRED_STORE_CONTINUE10:%.*]]38; CHECK:       pred.store.if9:39; CHECK-NEXT:    store i1 false, ptr [[P]], align 140; CHECK-NEXT:    br label [[PRED_STORE_CONTINUE10]]41; CHECK:       pred.store.continue10:42; CHECK-NEXT:    br i1 true, label [[PRED_STORE_IF11:%.*]], label [[PRED_STORE_CONTINUE12:%.*]]43; CHECK:       pred.store.if11:44; CHECK-NEXT:    store i1 false, ptr [[P]], align 145; CHECK-NEXT:    br label [[PRED_STORE_CONTINUE12]]46; CHECK:       pred.store.continue12:47; CHECK-NEXT:    br i1 true, label [[PRED_STORE_IF13:%.*]], label [[PRED_STORE_CONTINUE14:%.*]]48; CHECK:       pred.store.if13:49; CHECK-NEXT:    store i1 false, ptr [[P]], align 150; CHECK-NEXT:    br label [[PRED_STORE_CONTINUE14]]51; CHECK:       pred.store.continue14:52; CHECK-NEXT:    br i1 true, label [[PRED_STORE_IF15:%.*]], label [[PRED_STORE_CONTINUE16:%.*]]53; CHECK:       pred.store.if15:54; CHECK-NEXT:    store i1 false, ptr [[P]], align 155; CHECK-NEXT:    br label [[PRED_STORE_CONTINUE16]]56; CHECK:       pred.store.continue16:57; CHECK-NEXT:    br i1 true, label [[PRED_STORE_IF17:%.*]], label [[PRED_STORE_CONTINUE18:%.*]]58; CHECK:       pred.store.if17:59; CHECK-NEXT:    store i1 false, ptr [[P]], align 160; CHECK-NEXT:    br label [[PRED_STORE_CONTINUE18]]61; CHECK:       pred.store.continue18:62; CHECK-NEXT:    br i1 false, label [[PRED_STORE_IF19:%.*]], label [[PRED_STORE_CONTINUE20:%.*]]63; CHECK:       pred.store.if19:64; CHECK-NEXT:    store i1 false, ptr [[P]], align 165; CHECK-NEXT:    br label [[PRED_STORE_CONTINUE20]]66; CHECK:       pred.store.continue20:67; CHECK-NEXT:    br i1 false, label [[PRED_STORE_IF21:%.*]], label [[PRED_STORE_CONTINUE22:%.*]]68; CHECK:       pred.store.if21:69; CHECK-NEXT:    store i1 false, ptr [[P]], align 170; CHECK-NEXT:    br label [[PRED_STORE_CONTINUE22]]71; CHECK:       pred.store.continue22:72; CHECK-NEXT:    br i1 false, label [[PRED_STORE_IF23:%.*]], label [[PRED_STORE_CONTINUE24:%.*]]73; CHECK:       pred.store.if23:74; CHECK-NEXT:    store i1 false, ptr [[P]], align 175; CHECK-NEXT:    br label [[PRED_STORE_CONTINUE24]]76; CHECK:       pred.store.continue24:77; CHECK-NEXT:    br i1 false, label [[PRED_STORE_IF25:%.*]], label [[PRED_STORE_CONTINUE26:%.*]]78; CHECK:       pred.store.if25:79; CHECK-NEXT:    store i1 false, ptr [[P]], align 180; CHECK-NEXT:    br label [[PRED_STORE_CONTINUE26]]81; CHECK:       pred.store.continue26:82; CHECK-NEXT:    br i1 false, label [[PRED_STORE_IF27:%.*]], label [[PRED_STORE_CONTINUE28:%.*]]83; CHECK:       pred.store.if27:84; CHECK-NEXT:    store i1 false, ptr [[P]], align 185; CHECK-NEXT:    br label [[PRED_STORE_CONTINUE28]]86; CHECK:       pred.store.continue28:87; CHECK-NEXT:    br i1 false, label [[PRED_STORE_IF29:%.*]], label [[PRED_STORE_CONTINUE30:%.*]]88; CHECK:       pred.store.if29:89; CHECK-NEXT:    store i1 false, ptr [[P]], align 190; CHECK-NEXT:    br label [[PRED_STORE_CONTINUE30]]91; CHECK:       pred.store.continue30:92; CHECK-NEXT:    br label [[MIDDLE_BLOCK:%.*]]93; CHECK:       middle.block:94; CHECK-NEXT:    br label [[FOR_BODY:%.*]]95; CHECK:       exit:96; CHECK-NEXT:    ret void97;98entry:99  br label %for.body100 101for.body:                                         ; preds = %for.body, %entry102  %iv = phi i32 [ 0, %entry ], [ %iv.next, %for.body ]103  %shl = shl i40 %a, 24104  %ashr = ashr i40 %shl, 28105  %trunc = trunc i40 %ashr to i32106  %icmp.eq = icmp eq i32 %trunc, 0107  %zext = zext i1 %icmp.eq to i32108  %icmp.ult = icmp ult i32 0, %zext109  %or = or i1 %icmp.ult, true110  %icmp.sgt = icmp sgt i1 %or, false111  store i1 %icmp.sgt, ptr %p, align 1112  %iv.next = add i32 %iv, 1113  %cond = icmp ult i32 %iv.next, 10114  br i1 %cond, label %for.body, label %exit115 116exit:                                             ; preds = %for.body117  ret void118}119