brintos

brintos / llvm-project-archived public Read only

0
0
Text · 6.4 KiB · 62335e4 Raw
125 lines · plain
1; NOTE: Assertions have been autogenerated by utils/update_test_checks.py UTC_ARGS: --version 62; RUN: opt -passes=slp-vectorizer -S -slp-threshold=-100 -mtriple=x86_64-unknown-linux-gnu < %s | FileCheck %s3 4define i32 @main(ptr %c, i32 %0, i1 %tobool4.not, i16 %1) {5; CHECK-LABEL: define i32 @main(6; CHECK-SAME: ptr [[C:%.*]], i32 [[TMP0:%.*]], i1 [[TOBOOL4_NOT:%.*]], i16 [[TMP1:%.*]]) {7; CHECK-NEXT:  [[ENTRY:.*]]:8; CHECK-NEXT:    [[TMP2:%.*]] = insertelement <2 x i32> <i32 0, i32 poison>, i32 [[TMP0]], i32 19; CHECK-NEXT:    br label %[[IF_END:.*]]10; CHECK:       [[IF_END]]:11; CHECK-NEXT:    [[B_0_PH:%.*]] = phi i32 [ 0, %[[ENTRY]] ], [ [[TMP32:%.*]], %[[WHILE_COND_PREHEADER:.*]] ]12; CHECK-NEXT:    [[TMP3:%.*]] = phi <2 x i32> [ zeroinitializer, %[[ENTRY]] ], [ [[TMP33:%.*]], %[[WHILE_COND_PREHEADER]] ]13; CHECK-NEXT:    [[TMP4:%.*]] = insertelement <2 x i32> <i32 poison, i32 1>, i32 [[B_0_PH]], i32 014; CHECK-NEXT:    br i1 [[TOBOOL4_NOT]], label %[[R:.*]], label %[[IF_END9:.*]]15; CHECK:       [[IF_END9]]:16; CHECK-NEXT:    [[CONV11:%.*]] = sext i16 [[TMP1]] to i3217; CHECK-NEXT:    [[TMP5:%.*]] = insertelement <2 x i32> <i32 poison, i32 0>, i32 [[CONV11]], i32 018; CHECK-NEXT:    br label %[[R]]19; CHECK:       [[R]]:20; CHECK-NEXT:    [[TMP6:%.*]] = phi <2 x i32> [ <i32 1, i32 0>, %[[IF_END9]] ], [ [[TMP2]], %[[IF_END]] ]21; CHECK-NEXT:    [[TMP7:%.*]] = phi <2 x i32> [ [[TMP5]], %[[IF_END9]] ], [ [[TMP4]], %[[IF_END]] ]22; CHECK-NEXT:    [[TOBOOL12_NOT:%.*]] = icmp eq i32 [[B_0_PH]], 023; CHECK-NEXT:    br i1 [[TOBOOL12_NOT]], label %[[IF_END14:.*]], label %[[IF_THEN13:.*]]24; CHECK:       [[IF_THEN13]]:25; CHECK-NEXT:    br label %[[IF_END14]]26; CHECK:       [[IF_END14]]:27; CHECK-NEXT:    [[TMP8:%.*]] = extractelement <2 x i32> [[TMP3]], i32 128; CHECK-NEXT:    [[AND:%.*]] = and i32 [[TMP8]], 129; CHECK-NEXT:    [[NOT:%.*]] = xor i32 [[AND]], 130; CHECK-NEXT:    [[TMP9:%.*]] = extractelement <2 x i32> [[TMP3]], i32 031; CHECK-NEXT:    [[AND17:%.*]] = and i32 [[TMP9]], 132; CHECK-NEXT:    [[DIV20:%.*]] = sdiv i32 [[AND17]], [[TMP0]]33; CHECK-NEXT:    [[TMP10:%.*]] = load i32, ptr [[C]], align 434; CHECK-NEXT:    [[AND25:%.*]] = and i32 [[TMP0]], 135; CHECK-NEXT:    [[TMP11:%.*]] = shufflevector <2 x i32> [[TMP7]], <2 x i32> poison, <4 x i32> <i32 0, i32 1, i32 poison, i32 poison>36; CHECK-NEXT:    [[TMP12:%.*]] = insertelement <4 x i32> [[TMP11]], i32 [[AND17]], i32 137; CHECK-NEXT:    [[TMP13:%.*]] = insertelement <4 x i32> [[TMP12]], i32 [[TMP10]], i32 238; CHECK-NEXT:    [[TMP14:%.*]] = insertelement <4 x i32> [[TMP13]], i32 [[AND25]], i32 339; CHECK-NEXT:    [[TMP15:%.*]] = insertelement <4 x i32> <i32 0, i32 1, i32 poison, i32 1>, i32 [[DIV20]], i32 240; CHECK-NEXT:    [[TMP16:%.*]] = xor <4 x i32> [[TMP14]], [[TMP15]]41; CHECK-NEXT:    [[TMP17:%.*]] = insertelement <4 x i32> poison, i32 [[NOT]], i32 242; CHECK-NEXT:    [[TMP18:%.*]] = shufflevector <4 x i32> [[TMP17]], <4 x i32> [[TMP11]], <4 x i32> <i32 poison, i32 poison, i32 2, i32 5>43; CHECK-NEXT:    [[TMP19:%.*]] = shufflevector <2 x i32> [[TMP6]], <2 x i32> poison, <4 x i32> <i32 0, i32 1, i32 poison, i32 poison>44; CHECK-NEXT:    [[TMP20:%.*]] = shufflevector <4 x i32> [[TMP18]], <4 x i32> [[TMP19]], <4 x i32> <i32 4, i32 5, i32 2, i32 3>45; CHECK-NEXT:    [[TMP21:%.*]] = insertelement <4 x i32> <i32 poison, i32 0, i32 0, i32 0>, i32 [[B_0_PH]], i32 046; CHECK-NEXT:    [[TMP22:%.*]] = insertelement <4 x i32> <i32 0, i32 0, i32 poison, i32 0>, i32 [[TMP0]], i32 247; CHECK-NEXT:    br label %[[AH:.*]]48; CHECK:       [[AH]]:49; CHECK-NEXT:    [[TMP23:%.*]] = phi <4 x i32> [ [[TMP21]], %[[AH]] ], [ [[TMP16]], %[[IF_END14]] ]50; CHECK-NEXT:    [[TMP24:%.*]] = phi <4 x i32> [ [[TMP22]], %[[AH]] ], [ [[TMP20]], %[[IF_END14]] ]51; CHECK-NEXT:    [[TMP25:%.*]] = extractelement <4 x i32> [[TMP23]], i32 252; CHECK-NEXT:    [[TMP26:%.*]] = extractelement <4 x i32> [[TMP24]], i32 253; CHECK-NEXT:    [[TMP27:%.*]] = shufflevector <4 x i32> [[TMP23]], <4 x i32> [[TMP24]], <2 x i32> <i32 2, i32 6>54; CHECK-NEXT:    [[ADD:%.*]] = add i32 [[TMP25]], [[TMP26]]55; CHECK-NEXT:    [[TMP28:%.*]] = extractelement <4 x i32> [[TMP23]], i32 156; CHECK-NEXT:    [[TMP29:%.*]] = or i32 [[ADD]], [[TMP28]]57; CHECK-NEXT:    [[TMP30:%.*]] = extractelement <4 x i32> [[TMP23]], i32 358; CHECK-NEXT:    [[OR27:%.*]] = or i32 [[TMP29]], [[TMP30]]59; CHECK-NEXT:    store i32 [[OR27]], ptr [[C]], align 460; CHECK-NEXT:    br i1 [[TOBOOL4_NOT]], label %[[WHILE_COND_PREHEADER]], label %[[AH]]61; CHECK:       [[WHILE_COND_PREHEADER]]:62; CHECK-NEXT:    [[TMP31:%.*]] = extractelement <4 x i32> [[TMP24]], i32 363; CHECK-NEXT:    [[CALL69:%.*]] = tail call i32 @s(i32 [[TMP31]])64; CHECK-NEXT:    [[TMP32]] = extractelement <4 x i32> [[TMP23]], i32 065; CHECK-NEXT:    [[TMP33]] = shufflevector <4 x i32> [[TMP24]], <4 x i32> poison, <2 x i32> <i32 0, i32 1>66; CHECK-NEXT:    br label %[[IF_END]]67;68entry:69  br label %if.end70 71if.end:72  %n.0.ph = phi i32 [ 0, %entry ], [ %.us-phi52, %while.cond.preheader ]73  %b.0.ph = phi i32 [ 0, %entry ], [ %b.2, %while.cond.preheader ]74  %a.0.ph = phi i32 [ 0, %entry ], [ %a.2, %while.cond.preheader ]75  br i1 %tobool4.not, label %r, label %if.end976 77if.end9:78  %conv11 = sext i16 %1 to i3279  br label %r80 81r:82  %.us-phi51642 = phi i32 [ 0, %if.end9 ], [ %0, %if.end ]83  %.us-phi415662 = phi i32 [ 0, %if.end9 ], [ 1, %if.end ]84  %b.1 = phi i32 [ %conv11, %if.end9 ], [ %b.0.ph, %if.end ]85  %a.1 = phi i32 [ 1, %if.end9 ], [ 0, %if.end ]86  %tobool12.not = icmp eq i32 %b.0.ph, 087  br i1 %tobool12.not, label %if.end14, label %if.then1388 89if.then13:90  br label %if.end1491 92if.end14:93  %and = and i32 %n.0.ph, 194  %not = xor i32 %and, 195  %and17 = and i32 %a.0.ph, 196  %not18 = xor i32 %and17, 197  %div20 = sdiv i32 %and17, %098  %2 = load i32, ptr %c, align 499  %3 = xor i32 %2, %div20100  %and25 = and i32 %0, 1101  %not26 = xor i32 %and25, 1102  br label %ah103 104ah:105  %.us-phi4154 = phi i32 [ 0, %ah ], [ %.us-phi415662, %if.end14 ]106  %.us-phi52 = phi i32 [ 0, %ah ], [ %.us-phi51642, %if.end14 ]107  %b.2 = phi i32 [ %b.0.ph, %ah ], [ %b.1, %if.end14 ]108  %a.2 = phi i32 [ 0, %ah ], [ %a.1, %if.end14 ]109  %l.1 = phi i32 [ %0, %ah ], [ %not, %if.end14 ]110  %p16.1 = phi i32 [ 0, %ah ], [ %not18, %if.end14 ]111  %q.1 = phi i32 [ 0, %ah ], [ %3, %if.end14 ]112  %r23.1 = phi i32 [ 0, %ah ], [ %not26, %if.end14 ]113  %add = add i32 %q.1, %l.1114  %4 = or i32 %add, %p16.1115  %or27 = or i32 %4, %r23.1116  store i32 %or27, ptr %c, align 4117  br i1 %tobool4.not, label %while.cond.preheader, label %ah118 119while.cond.preheader:120  %call69 = tail call i32 @s(i32 %.us-phi4154)121  br label %if.end122}123 124declare i32 @s(i32)125