1; NOTE: Assertions have been autogenerated by utils/update_test_checks.py 2; RUN: opt -S -slp-vectorizer < %s | FileCheck %s 3 4target datalayout = "e-m:e-i64:64-f80:128-n8:16:32:64-S128" 5target triple = "x86_64-unknown-linux-gnu" 6 7; Function Attrs: norecurse nounwind readnone uwtable 8define zeroext i8 @foo(i32 %x, i32 %y, i32 %a, i32 %b) local_unnamed_addr #0 { 9; CHECK-LABEL: @foo( 10; CHECK-NEXT: entry: 11; CHECK-NEXT: [[CMP:%.*]] = icmp slt i32 [[X:%.*]], [[Y:%.*]] 12; CHECK-NEXT: [[B_A:%.*]] = select i1 [[CMP]], i32 [[B:%.*]], i32 [[A:%.*]] 13; CHECK-NEXT: [[RETVAL_0:%.*]] = trunc i32 [[B_A]] to i8 14; CHECK-NEXT: ret i8 [[RETVAL_0]] 15; 16entry: 17 %cmp = icmp slt i32 %x, %y 18 %b.a = select i1 %cmp, i32 %b, i32 %a 19 %retval.0 = trunc i32 %b.a to i8 20 ret i8 %retval.0 21} 22 23define void @bar(i8* noalias nocapture readonly %a, i8* noalias nocapture readonly %b, i8* noalias nocapture readonly %c, i8* noalias nocapture readonly %d, i8* noalias nocapture %e, i32 %w) local_unnamed_addr #1 { 24; CHECK-LABEL: @bar( 25; CHECK-NEXT: entry: 26; CHECK-NEXT: [[TMP0:%.*]] = insertelement <16 x i32> undef, i32 [[W:%.*]], i32 0 27; CHECK-NEXT: [[TMP1:%.*]] = insertelement <16 x i32> [[TMP0]], i32 [[W]], i32 1 28; CHECK-NEXT: [[TMP2:%.*]] = insertelement <16 x i32> [[TMP1]], i32 [[W]], i32 2 29; CHECK-NEXT: [[TMP3:%.*]] = insertelement <16 x i32> [[TMP2]], i32 [[W]], i32 3 30; CHECK-NEXT: [[TMP4:%.*]] = insertelement <16 x i32> [[TMP3]], i32 [[W]], i32 4 31; CHECK-NEXT: [[TMP5:%.*]] = insertelement <16 x i32> [[TMP4]], i32 [[W]], i32 5 32; CHECK-NEXT: [[TMP6:%.*]] = insertelement <16 x i32> [[TMP5]], i32 [[W]], i32 6 33; CHECK-NEXT: [[TMP7:%.*]] = insertelement <16 x i32> [[TMP6]], i32 [[W]], i32 7 34; CHECK-NEXT: [[TMP8:%.*]] = insertelement <16 x i32> [[TMP7]], i32 [[W]], i32 8 35; CHECK-NEXT: [[TMP9:%.*]] = insertelement <16 x i32> [[TMP8]], i32 [[W]], i32 9 36; CHECK-NEXT: [[TMP10:%.*]] = insertelement <16 x i32> [[TMP9]], i32 [[W]], i32 10 37; CHECK-NEXT: [[TMP11:%.*]] = insertelement <16 x i32> [[TMP10]], i32 [[W]], i32 11 38; CHECK-NEXT: [[TMP12:%.*]] = insertelement <16 x i32> [[TMP11]], i32 [[W]], i32 12 39; CHECK-NEXT: [[TMP13:%.*]] = insertelement <16 x i32> [[TMP12]], i32 [[W]], i32 13 40; CHECK-NEXT: [[TMP14:%.*]] = insertelement <16 x i32> [[TMP13]], i32 [[W]], i32 14 41; CHECK-NEXT: [[TMP15:%.*]] = insertelement <16 x i32> [[TMP14]], i32 [[W]], i32 15 42; CHECK-NEXT: br label [[FOR_BODY:%.*]] 43; CHECK: for.body: 44; CHECK-NEXT: [[I_0356:%.*]] = phi i32 [ 0, [[ENTRY:%.*]] ], [ [[INC:%.*]], [[FOR_BODY]] ] 45; CHECK-NEXT: [[A_ADDR_0355:%.*]] = phi i8* [ [[A:%.*]], [[ENTRY]] ], [ [[ADD_PTR:%.*]], [[FOR_BODY]] ] 46; CHECK-NEXT: [[E_ADDR_0354:%.*]] = phi i8* [ [[E:%.*]], [[ENTRY]] ], [ [[ADD_PTR192:%.*]], [[FOR_BODY]] ] 47; CHECK-NEXT: [[D_ADDR_0353:%.*]] = phi i8* [ [[D:%.*]], [[ENTRY]] ], [ [[ADD_PTR191:%.*]], [[FOR_BODY]] ] 48; CHECK-NEXT: [[C_ADDR_0352:%.*]] = phi i8* [ [[C:%.*]], [[ENTRY]] ], [ [[ADD_PTR190:%.*]], [[FOR_BODY]] ] 49; CHECK-NEXT: [[B_ADDR_0351:%.*]] = phi i8* [ [[B:%.*]], [[ENTRY]] ], [ [[ADD_PTR189:%.*]], [[FOR_BODY]] ] 50; CHECK-NEXT: [[ARRAYIDX9:%.*]] = getelementptr inbounds i8, i8* [[C_ADDR_0352]], i64 1 51; CHECK-NEXT: [[ARRAYIDX11:%.*]] = getelementptr inbounds i8, i8* [[D_ADDR_0353]], i64 1 52; CHECK-NEXT: [[ARRAYIDX13:%.*]] = getelementptr inbounds i8, i8* [[A_ADDR_0355]], i64 1 53; CHECK-NEXT: [[ARRAYIDX16:%.*]] = getelementptr inbounds i8, i8* [[B_ADDR_0351]], i64 1 54; CHECK-NEXT: [[ARRAYIDX20:%.*]] = getelementptr inbounds i8, i8* [[E_ADDR_0354]], i64 1 55; CHECK-NEXT: [[ARRAYIDX21:%.*]] = getelementptr inbounds i8, i8* [[C_ADDR_0352]], i64 2 56; CHECK-NEXT: [[ARRAYIDX23:%.*]] = getelementptr inbounds i8, i8* [[D_ADDR_0353]], i64 2 57; CHECK-NEXT: [[ARRAYIDX25:%.*]] = getelementptr inbounds i8, i8* [[A_ADDR_0355]], i64 2 58; CHECK-NEXT: [[ARRAYIDX28:%.*]] = getelementptr inbounds i8, i8* [[B_ADDR_0351]], i64 2 59; CHECK-NEXT: [[ARRAYIDX32:%.*]] = getelementptr inbounds i8, i8* [[E_ADDR_0354]], i64 2 60; CHECK-NEXT: [[ARRAYIDX33:%.*]] = getelementptr inbounds i8, i8* [[C_ADDR_0352]], i64 3 61; CHECK-NEXT: [[ARRAYIDX35:%.*]] = getelementptr inbounds i8, i8* [[D_ADDR_0353]], i64 3 62; CHECK-NEXT: [[ARRAYIDX37:%.*]] = getelementptr inbounds i8, i8* [[A_ADDR_0355]], i64 3 63; CHECK-NEXT: [[ARRAYIDX40:%.*]] = getelementptr inbounds i8, i8* [[B_ADDR_0351]], i64 3 64; CHECK-NEXT: [[ARRAYIDX44:%.*]] = getelementptr inbounds i8, i8* [[E_ADDR_0354]], i64 3 65; CHECK-NEXT: [[ARRAYIDX45:%.*]] = getelementptr inbounds i8, i8* [[C_ADDR_0352]], i64 4 66; CHECK-NEXT: [[ARRAYIDX47:%.*]] = getelementptr inbounds i8, i8* [[D_ADDR_0353]], i64 4 67; CHECK-NEXT: [[ARRAYIDX49:%.*]] = getelementptr inbounds i8, i8* [[A_ADDR_0355]], i64 4 68; CHECK-NEXT: [[ARRAYIDX52:%.*]] = getelementptr inbounds i8, i8* [[B_ADDR_0351]], i64 4 69; CHECK-NEXT: [[ARRAYIDX56:%.*]] = getelementptr inbounds i8, i8* [[E_ADDR_0354]], i64 4 70; CHECK-NEXT: [[ARRAYIDX57:%.*]] = getelementptr inbounds i8, i8* [[C_ADDR_0352]], i64 5 71; CHECK-NEXT: [[ARRAYIDX59:%.*]] = getelementptr inbounds i8, i8* [[D_ADDR_0353]], i64 5 72; CHECK-NEXT: [[ARRAYIDX61:%.*]] = getelementptr inbounds i8, i8* [[A_ADDR_0355]], i64 5 73; CHECK-NEXT: [[ARRAYIDX64:%.*]] = getelementptr inbounds i8, i8* [[B_ADDR_0351]], i64 5 74; CHECK-NEXT: [[ARRAYIDX68:%.*]] = getelementptr inbounds i8, i8* [[E_ADDR_0354]], i64 5 75; CHECK-NEXT: [[ARRAYIDX69:%.*]] = getelementptr inbounds i8, i8* [[C_ADDR_0352]], i64 6 76; CHECK-NEXT: [[ARRAYIDX71:%.*]] = getelementptr inbounds i8, i8* [[D_ADDR_0353]], i64 6 77; CHECK-NEXT: [[ARRAYIDX73:%.*]] = getelementptr inbounds i8, i8* [[A_ADDR_0355]], i64 6 78; CHECK-NEXT: [[ARRAYIDX76:%.*]] = getelementptr inbounds i8, i8* [[B_ADDR_0351]], i64 6 79; CHECK-NEXT: [[ARRAYIDX80:%.*]] = getelementptr inbounds i8, i8* [[E_ADDR_0354]], i64 6 80; CHECK-NEXT: [[ARRAYIDX81:%.*]] = getelementptr inbounds i8, i8* [[C_ADDR_0352]], i64 7 81; CHECK-NEXT: [[ARRAYIDX83:%.*]] = getelementptr inbounds i8, i8* [[D_ADDR_0353]], i64 7 82; CHECK-NEXT: [[ARRAYIDX85:%.*]] = getelementptr inbounds i8, i8* [[A_ADDR_0355]], i64 7 83; CHECK-NEXT: [[ARRAYIDX88:%.*]] = getelementptr inbounds i8, i8* [[B_ADDR_0351]], i64 7 84; CHECK-NEXT: [[ARRAYIDX92:%.*]] = getelementptr inbounds i8, i8* [[E_ADDR_0354]], i64 7 85; CHECK-NEXT: [[ARRAYIDX93:%.*]] = getelementptr inbounds i8, i8* [[C_ADDR_0352]], i64 8 86; CHECK-NEXT: [[ARRAYIDX95:%.*]] = getelementptr inbounds i8, i8* [[D_ADDR_0353]], i64 8 87; CHECK-NEXT: [[ARRAYIDX97:%.*]] = getelementptr inbounds i8, i8* [[A_ADDR_0355]], i64 8 88; CHECK-NEXT: [[ARRAYIDX100:%.*]] = getelementptr inbounds i8, i8* [[B_ADDR_0351]], i64 8 89; CHECK-NEXT: [[ARRAYIDX104:%.*]] = getelementptr inbounds i8, i8* [[E_ADDR_0354]], i64 8 90; CHECK-NEXT: [[ARRAYIDX105:%.*]] = getelementptr inbounds i8, i8* [[C_ADDR_0352]], i64 9 91; CHECK-NEXT: [[ARRAYIDX107:%.*]] = getelementptr inbounds i8, i8* [[D_ADDR_0353]], i64 9 92; CHECK-NEXT: [[ARRAYIDX109:%.*]] = getelementptr inbounds i8, i8* [[A_ADDR_0355]], i64 9 93; CHECK-NEXT: [[ARRAYIDX112:%.*]] = getelementptr inbounds i8, i8* [[B_ADDR_0351]], i64 9 94; CHECK-NEXT: [[ARRAYIDX116:%.*]] = getelementptr inbounds i8, i8* [[E_ADDR_0354]], i64 9 95; CHECK-NEXT: [[ARRAYIDX117:%.*]] = getelementptr inbounds i8, i8* [[C_ADDR_0352]], i64 10 96; CHECK-NEXT: [[ARRAYIDX119:%.*]] = getelementptr inbounds i8, i8* [[D_ADDR_0353]], i64 10 97; CHECK-NEXT: [[ARRAYIDX121:%.*]] = getelementptr inbounds i8, i8* [[A_ADDR_0355]], i64 10 98; CHECK-NEXT: [[ARRAYIDX124:%.*]] = getelementptr inbounds i8, i8* [[B_ADDR_0351]], i64 10 99; CHECK-NEXT: [[ARRAYIDX128:%.*]] = getelementptr inbounds i8, i8* [[E_ADDR_0354]], i64 10 100; CHECK-NEXT: [[ARRAYIDX129:%.*]] = getelementptr inbounds i8, i8* [[C_ADDR_0352]], i64 11 101; CHECK-NEXT: [[ARRAYIDX131:%.*]] = getelementptr inbounds i8, i8* [[D_ADDR_0353]], i64 11 102; CHECK-NEXT: [[ARRAYIDX133:%.*]] = getelementptr inbounds i8, i8* [[A_ADDR_0355]], i64 11 103; CHECK-NEXT: [[ARRAYIDX136:%.*]] = getelementptr inbounds i8, i8* [[B_ADDR_0351]], i64 11 104; CHECK-NEXT: [[ARRAYIDX140:%.*]] = getelementptr inbounds i8, i8* [[E_ADDR_0354]], i64 11 105; CHECK-NEXT: [[ARRAYIDX141:%.*]] = getelementptr inbounds i8, i8* [[C_ADDR_0352]], i64 12 106; CHECK-NEXT: [[ARRAYIDX143:%.*]] = getelementptr inbounds i8, i8* [[D_ADDR_0353]], i64 12 107; CHECK-NEXT: [[ARRAYIDX145:%.*]] = getelementptr inbounds i8, i8* [[A_ADDR_0355]], i64 12 108; CHECK-NEXT: [[ARRAYIDX148:%.*]] = getelementptr inbounds i8, i8* [[B_ADDR_0351]], i64 12 109; CHECK-NEXT: [[ARRAYIDX152:%.*]] = getelementptr inbounds i8, i8* [[E_ADDR_0354]], i64 12 110; CHECK-NEXT: [[ARRAYIDX153:%.*]] = getelementptr inbounds i8, i8* [[C_ADDR_0352]], i64 13 111; CHECK-NEXT: [[ARRAYIDX155:%.*]] = getelementptr inbounds i8, i8* [[D_ADDR_0353]], i64 13 112; CHECK-NEXT: [[ARRAYIDX157:%.*]] = getelementptr inbounds i8, i8* [[A_ADDR_0355]], i64 13 113; CHECK-NEXT: [[ARRAYIDX160:%.*]] = getelementptr inbounds i8, i8* [[B_ADDR_0351]], i64 13 114; CHECK-NEXT: [[ARRAYIDX164:%.*]] = getelementptr inbounds i8, i8* [[E_ADDR_0354]], i64 13 115; CHECK-NEXT: [[ARRAYIDX165:%.*]] = getelementptr inbounds i8, i8* [[C_ADDR_0352]], i64 14 116; CHECK-NEXT: [[ARRAYIDX167:%.*]] = getelementptr inbounds i8, i8* [[D_ADDR_0353]], i64 14 117; CHECK-NEXT: [[ARRAYIDX169:%.*]] = getelementptr inbounds i8, i8* [[A_ADDR_0355]], i64 14 118; CHECK-NEXT: [[ARRAYIDX172:%.*]] = getelementptr inbounds i8, i8* [[B_ADDR_0351]], i64 14 119; CHECK-NEXT: [[ARRAYIDX176:%.*]] = getelementptr inbounds i8, i8* [[E_ADDR_0354]], i64 14 120; CHECK-NEXT: [[ARRAYIDX177:%.*]] = getelementptr inbounds i8, i8* [[C_ADDR_0352]], i64 15 121; CHECK-NEXT: [[TMP16:%.*]] = bitcast i8* [[C_ADDR_0352]] to <16 x i8>* 122; CHECK-NEXT: [[TMP17:%.*]] = load <16 x i8>, <16 x i8>* [[TMP16]], align 1 123; CHECK-NEXT: [[ARRAYIDX179:%.*]] = getelementptr inbounds i8, i8* [[D_ADDR_0353]], i64 15 124; CHECK-NEXT: [[TMP18:%.*]] = bitcast i8* [[D_ADDR_0353]] to <16 x i8>* 125; CHECK-NEXT: [[TMP19:%.*]] = load <16 x i8>, <16 x i8>* [[TMP18]], align 1 126; CHECK-NEXT: [[ARRAYIDX181:%.*]] = getelementptr inbounds i8, i8* [[A_ADDR_0355]], i64 15 127; CHECK-NEXT: [[TMP20:%.*]] = bitcast i8* [[A_ADDR_0355]] to <16 x i8>* 128; CHECK-NEXT: [[TMP21:%.*]] = load <16 x i8>, <16 x i8>* [[TMP20]], align 1 129; CHECK-NEXT: [[ARRAYIDX184:%.*]] = getelementptr inbounds i8, i8* [[B_ADDR_0351]], i64 15 130; CHECK-NEXT: [[TMP22:%.*]] = bitcast i8* [[B_ADDR_0351]] to <16 x i8>* 131; CHECK-NEXT: [[TMP23:%.*]] = load <16 x i8>, <16 x i8>* [[TMP22]], align 1 132; CHECK-NEXT: [[TMP24:%.*]] = icmp ult <16 x i8> [[TMP17]], [[TMP19]] 133; CHECK-NEXT: [[TMP25:%.*]] = select <16 x i1> [[TMP24]], <16 x i8> [[TMP23]], <16 x i8> [[TMP21]] 134; CHECK-NEXT: [[TMP26:%.*]] = zext <16 x i8> [[TMP25]] to <16 x i32> 135; CHECK-NEXT: [[TMP27:%.*]] = mul <16 x i32> [[TMP26]], [[TMP15]] 136; CHECK-NEXT: [[TMP28:%.*]] = trunc <16 x i32> [[TMP27]] to <16 x i8> 137; CHECK-NEXT: [[ARRAYIDX188:%.*]] = getelementptr inbounds i8, i8* [[E_ADDR_0354]], i64 15 138; CHECK-NEXT: [[TMP29:%.*]] = bitcast i8* [[E_ADDR_0354]] to <16 x i8>* 139; CHECK-NEXT: store <16 x i8> [[TMP28]], <16 x i8>* [[TMP29]], align 1 140; CHECK-NEXT: [[INC]] = add nuw nsw i32 [[I_0356]], 1 141; CHECK-NEXT: [[ADD_PTR]] = getelementptr inbounds i8, i8* [[A_ADDR_0355]], i64 16 142; CHECK-NEXT: [[ADD_PTR189]] = getelementptr inbounds i8, i8* [[B_ADDR_0351]], i64 16 143; CHECK-NEXT: [[ADD_PTR190]] = getelementptr inbounds i8, i8* [[C_ADDR_0352]], i64 16 144; CHECK-NEXT: [[ADD_PTR191]] = getelementptr inbounds i8, i8* [[D_ADDR_0353]], i64 16 145; CHECK-NEXT: [[ADD_PTR192]] = getelementptr inbounds i8, i8* [[E_ADDR_0354]], i64 16 146; CHECK-NEXT: [[EXITCOND:%.*]] = icmp eq i32 [[INC]], 8 147; CHECK-NEXT: br i1 [[EXITCOND]], label [[FOR_END:%.*]], label [[FOR_BODY]] 148; CHECK: for.end: 149; CHECK-NEXT: ret void 150; 151entry: 152 br label %for.body 153 154for.body: ; preds = %for.body, %entry 155 %i.0356 = phi i32 [ 0, %entry ], [ %inc, %for.body ] 156 %a.addr.0355 = phi i8* [ %a, %entry ], [ %add.ptr, %for.body ] 157 %e.addr.0354 = phi i8* [ %e, %entry ], [ %add.ptr192, %for.body ] 158 %d.addr.0353 = phi i8* [ %d, %entry ], [ %add.ptr191, %for.body ] 159 %c.addr.0352 = phi i8* [ %c, %entry ], [ %add.ptr190, %for.body ] 160 %b.addr.0351 = phi i8* [ %b, %entry ], [ %add.ptr189, %for.body ] 161 %0 = load i8, i8* %c.addr.0352, align 1 162 %1 = load i8, i8* %d.addr.0353, align 1 163 %2 = load i8, i8* %a.addr.0355, align 1 164 %3 = load i8, i8* %b.addr.0351, align 1 165 %cmp.i = icmp ult i8 %0, %1 166 %b.a.i.v.v = select i1 %cmp.i, i8 %3, i8 %2 167 %b.a.i.v = zext i8 %b.a.i.v.v to i32 168 %b.a.i = mul i32 %b.a.i.v, %w 169 %retval.0.i = trunc i32 %b.a.i to i8 170 store i8 %retval.0.i, i8* %e.addr.0354, align 1 171 %arrayidx9 = getelementptr inbounds i8, i8* %c.addr.0352, i64 1 172 %4 = load i8, i8* %arrayidx9, align 1 173 %arrayidx11 = getelementptr inbounds i8, i8* %d.addr.0353, i64 1 174 %5 = load i8, i8* %arrayidx11, align 1 175 %arrayidx13 = getelementptr inbounds i8, i8* %a.addr.0355, i64 1 176 %6 = load i8, i8* %arrayidx13, align 1 177 %arrayidx16 = getelementptr inbounds i8, i8* %b.addr.0351, i64 1 178 %7 = load i8, i8* %arrayidx16, align 1 179 %cmp.i348 = icmp ult i8 %4, %5 180 %b.a.i349.v.v = select i1 %cmp.i348, i8 %7, i8 %6 181 %b.a.i349.v = zext i8 %b.a.i349.v.v to i32 182 %b.a.i349 = mul i32 %b.a.i349.v, %w 183 %retval.0.i350 = trunc i32 %b.a.i349 to i8 184 %arrayidx20 = getelementptr inbounds i8, i8* %e.addr.0354, i64 1 185 store i8 %retval.0.i350, i8* %arrayidx20, align 1 186 %arrayidx21 = getelementptr inbounds i8, i8* %c.addr.0352, i64 2 187 %8 = load i8, i8* %arrayidx21, align 1 188 %arrayidx23 = getelementptr inbounds i8, i8* %d.addr.0353, i64 2 189 %9 = load i8, i8* %arrayidx23, align 1 190 %arrayidx25 = getelementptr inbounds i8, i8* %a.addr.0355, i64 2 191 %10 = load i8, i8* %arrayidx25, align 1 192 %arrayidx28 = getelementptr inbounds i8, i8* %b.addr.0351, i64 2 193 %11 = load i8, i8* %arrayidx28, align 1 194 %cmp.i345 = icmp ult i8 %8, %9 195 %b.a.i346.v.v = select i1 %cmp.i345, i8 %11, i8 %10 196 %b.a.i346.v = zext i8 %b.a.i346.v.v to i32 197 %b.a.i346 = mul i32 %b.a.i346.v, %w 198 %retval.0.i347 = trunc i32 %b.a.i346 to i8 199 %arrayidx32 = getelementptr inbounds i8, i8* %e.addr.0354, i64 2 200 store i8 %retval.0.i347, i8* %arrayidx32, align 1 201 %arrayidx33 = getelementptr inbounds i8, i8* %c.addr.0352, i64 3 202 %12 = load i8, i8* %arrayidx33, align 1 203 %arrayidx35 = getelementptr inbounds i8, i8* %d.addr.0353, i64 3 204 %13 = load i8, i8* %arrayidx35, align 1 205 %arrayidx37 = getelementptr inbounds i8, i8* %a.addr.0355, i64 3 206 %14 = load i8, i8* %arrayidx37, align 1 207 %arrayidx40 = getelementptr inbounds i8, i8* %b.addr.0351, i64 3 208 %15 = load i8, i8* %arrayidx40, align 1 209 %cmp.i342 = icmp ult i8 %12, %13 210 %b.a.i343.v.v = select i1 %cmp.i342, i8 %15, i8 %14 211 %b.a.i343.v = zext i8 %b.a.i343.v.v to i32 212 %b.a.i343 = mul i32 %b.a.i343.v, %w 213 %retval.0.i344 = trunc i32 %b.a.i343 to i8 214 %arrayidx44 = getelementptr inbounds i8, i8* %e.addr.0354, i64 3 215 store i8 %retval.0.i344, i8* %arrayidx44, align 1 216 %arrayidx45 = getelementptr inbounds i8, i8* %c.addr.0352, i64 4 217 %16 = load i8, i8* %arrayidx45, align 1 218 %arrayidx47 = getelementptr inbounds i8, i8* %d.addr.0353, i64 4 219 %17 = load i8, i8* %arrayidx47, align 1 220 %arrayidx49 = getelementptr inbounds i8, i8* %a.addr.0355, i64 4 221 %18 = load i8, i8* %arrayidx49, align 1 222 %arrayidx52 = getelementptr inbounds i8, i8* %b.addr.0351, i64 4 223 %19 = load i8, i8* %arrayidx52, align 1 224 %cmp.i339 = icmp ult i8 %16, %17 225 %b.a.i340.v.v = select i1 %cmp.i339, i8 %19, i8 %18 226 %b.a.i340.v = zext i8 %b.a.i340.v.v to i32 227 %b.a.i340 = mul i32 %b.a.i340.v, %w 228 %retval.0.i341 = trunc i32 %b.a.i340 to i8 229 %arrayidx56 = getelementptr inbounds i8, i8* %e.addr.0354, i64 4 230 store i8 %retval.0.i341, i8* %arrayidx56, align 1 231 %arrayidx57 = getelementptr inbounds i8, i8* %c.addr.0352, i64 5 232 %20 = load i8, i8* %arrayidx57, align 1 233 %arrayidx59 = getelementptr inbounds i8, i8* %d.addr.0353, i64 5 234 %21 = load i8, i8* %arrayidx59, align 1 235 %arrayidx61 = getelementptr inbounds i8, i8* %a.addr.0355, i64 5 236 %22 = load i8, i8* %arrayidx61, align 1 237 %arrayidx64 = getelementptr inbounds i8, i8* %b.addr.0351, i64 5 238 %23 = load i8, i8* %arrayidx64, align 1 239 %cmp.i336 = icmp ult i8 %20, %21 240 %b.a.i337.v.v = select i1 %cmp.i336, i8 %23, i8 %22 241 %b.a.i337.v = zext i8 %b.a.i337.v.v to i32 242 %b.a.i337 = mul i32 %b.a.i337.v, %w 243 %retval.0.i338 = trunc i32 %b.a.i337 to i8 244 %arrayidx68 = getelementptr inbounds i8, i8* %e.addr.0354, i64 5 245 store i8 %retval.0.i338, i8* %arrayidx68, align 1 246 %arrayidx69 = getelementptr inbounds i8, i8* %c.addr.0352, i64 6 247 %24 = load i8, i8* %arrayidx69, align 1 248 %arrayidx71 = getelementptr inbounds i8, i8* %d.addr.0353, i64 6 249 %25 = load i8, i8* %arrayidx71, align 1 250 %arrayidx73 = getelementptr inbounds i8, i8* %a.addr.0355, i64 6 251 %26 = load i8, i8* %arrayidx73, align 1 252 %arrayidx76 = getelementptr inbounds i8, i8* %b.addr.0351, i64 6 253 %27 = load i8, i8* %arrayidx76, align 1 254 %cmp.i333 = icmp ult i8 %24, %25 255 %b.a.i334.v.v = select i1 %cmp.i333, i8 %27, i8 %26 256 %b.a.i334.v = zext i8 %b.a.i334.v.v to i32 257 %b.a.i334 = mul i32 %b.a.i334.v, %w 258 %retval.0.i335 = trunc i32 %b.a.i334 to i8 259 %arrayidx80 = getelementptr inbounds i8, i8* %e.addr.0354, i64 6 260 store i8 %retval.0.i335, i8* %arrayidx80, align 1 261 %arrayidx81 = getelementptr inbounds i8, i8* %c.addr.0352, i64 7 262 %28 = load i8, i8* %arrayidx81, align 1 263 %arrayidx83 = getelementptr inbounds i8, i8* %d.addr.0353, i64 7 264 %29 = load i8, i8* %arrayidx83, align 1 265 %arrayidx85 = getelementptr inbounds i8, i8* %a.addr.0355, i64 7 266 %30 = load i8, i8* %arrayidx85, align 1 267 %arrayidx88 = getelementptr inbounds i8, i8* %b.addr.0351, i64 7 268 %31 = load i8, i8* %arrayidx88, align 1 269 %cmp.i330 = icmp ult i8 %28, %29 270 %b.a.i331.v.v = select i1 %cmp.i330, i8 %31, i8 %30 271 %b.a.i331.v = zext i8 %b.a.i331.v.v to i32 272 %b.a.i331 = mul i32 %b.a.i331.v, %w 273 %retval.0.i332 = trunc i32 %b.a.i331 to i8 274 %arrayidx92 = getelementptr inbounds i8, i8* %e.addr.0354, i64 7 275 store i8 %retval.0.i332, i8* %arrayidx92, align 1 276 %arrayidx93 = getelementptr inbounds i8, i8* %c.addr.0352, i64 8 277 %32 = load i8, i8* %arrayidx93, align 1 278 %arrayidx95 = getelementptr inbounds i8, i8* %d.addr.0353, i64 8 279 %33 = load i8, i8* %arrayidx95, align 1 280 %arrayidx97 = getelementptr inbounds i8, i8* %a.addr.0355, i64 8 281 %34 = load i8, i8* %arrayidx97, align 1 282 %arrayidx100 = getelementptr inbounds i8, i8* %b.addr.0351, i64 8 283 %35 = load i8, i8* %arrayidx100, align 1 284 %cmp.i327 = icmp ult i8 %32, %33 285 %b.a.i328.v.v = select i1 %cmp.i327, i8 %35, i8 %34 286 %b.a.i328.v = zext i8 %b.a.i328.v.v to i32 287 %b.a.i328 = mul i32 %b.a.i328.v, %w 288 %retval.0.i329 = trunc i32 %b.a.i328 to i8 289 %arrayidx104 = getelementptr inbounds i8, i8* %e.addr.0354, i64 8 290 store i8 %retval.0.i329, i8* %arrayidx104, align 1 291 %arrayidx105 = getelementptr inbounds i8, i8* %c.addr.0352, i64 9 292 %36 = load i8, i8* %arrayidx105, align 1 293 %arrayidx107 = getelementptr inbounds i8, i8* %d.addr.0353, i64 9 294 %37 = load i8, i8* %arrayidx107, align 1 295 %arrayidx109 = getelementptr inbounds i8, i8* %a.addr.0355, i64 9 296 %38 = load i8, i8* %arrayidx109, align 1 297 %arrayidx112 = getelementptr inbounds i8, i8* %b.addr.0351, i64 9 298 %39 = load i8, i8* %arrayidx112, align 1 299 %cmp.i324 = icmp ult i8 %36, %37 300 %b.a.i325.v.v = select i1 %cmp.i324, i8 %39, i8 %38 301 %b.a.i325.v = zext i8 %b.a.i325.v.v to i32 302 %b.a.i325 = mul i32 %b.a.i325.v, %w 303 %retval.0.i326 = trunc i32 %b.a.i325 to i8 304 %arrayidx116 = getelementptr inbounds i8, i8* %e.addr.0354, i64 9 305 store i8 %retval.0.i326, i8* %arrayidx116, align 1 306 %arrayidx117 = getelementptr inbounds i8, i8* %c.addr.0352, i64 10 307 %40 = load i8, i8* %arrayidx117, align 1 308 %arrayidx119 = getelementptr inbounds i8, i8* %d.addr.0353, i64 10 309 %41 = load i8, i8* %arrayidx119, align 1 310 %arrayidx121 = getelementptr inbounds i8, i8* %a.addr.0355, i64 10 311 %42 = load i8, i8* %arrayidx121, align 1 312 %arrayidx124 = getelementptr inbounds i8, i8* %b.addr.0351, i64 10 313 %43 = load i8, i8* %arrayidx124, align 1 314 %cmp.i321 = icmp ult i8 %40, %41 315 %b.a.i322.v.v = select i1 %cmp.i321, i8 %43, i8 %42 316 %b.a.i322.v = zext i8 %b.a.i322.v.v to i32 317 %b.a.i322 = mul i32 %b.a.i322.v, %w 318 %retval.0.i323 = trunc i32 %b.a.i322 to i8 319 %arrayidx128 = getelementptr inbounds i8, i8* %e.addr.0354, i64 10 320 store i8 %retval.0.i323, i8* %arrayidx128, align 1 321 %arrayidx129 = getelementptr inbounds i8, i8* %c.addr.0352, i64 11 322 %44 = load i8, i8* %arrayidx129, align 1 323 %arrayidx131 = getelementptr inbounds i8, i8* %d.addr.0353, i64 11 324 %45 = load i8, i8* %arrayidx131, align 1 325 %arrayidx133 = getelementptr inbounds i8, i8* %a.addr.0355, i64 11 326 %46 = load i8, i8* %arrayidx133, align 1 327 %arrayidx136 = getelementptr inbounds i8, i8* %b.addr.0351, i64 11 328 %47 = load i8, i8* %arrayidx136, align 1 329 %cmp.i318 = icmp ult i8 %44, %45 330 %b.a.i319.v.v = select i1 %cmp.i318, i8 %47, i8 %46 331 %b.a.i319.v = zext i8 %b.a.i319.v.v to i32 332 %b.a.i319 = mul i32 %b.a.i319.v, %w 333 %retval.0.i320 = trunc i32 %b.a.i319 to i8 334 %arrayidx140 = getelementptr inbounds i8, i8* %e.addr.0354, i64 11 335 store i8 %retval.0.i320, i8* %arrayidx140, align 1 336 %arrayidx141 = getelementptr inbounds i8, i8* %c.addr.0352, i64 12 337 %48 = load i8, i8* %arrayidx141, align 1 338 %arrayidx143 = getelementptr inbounds i8, i8* %d.addr.0353, i64 12 339 %49 = load i8, i8* %arrayidx143, align 1 340 %arrayidx145 = getelementptr inbounds i8, i8* %a.addr.0355, i64 12 341 %50 = load i8, i8* %arrayidx145, align 1 342 %arrayidx148 = getelementptr inbounds i8, i8* %b.addr.0351, i64 12 343 %51 = load i8, i8* %arrayidx148, align 1 344 %cmp.i315 = icmp ult i8 %48, %49 345 %b.a.i316.v.v = select i1 %cmp.i315, i8 %51, i8 %50 346 %b.a.i316.v = zext i8 %b.a.i316.v.v to i32 347 %b.a.i316 = mul i32 %b.a.i316.v, %w 348 %retval.0.i317 = trunc i32 %b.a.i316 to i8 349 %arrayidx152 = getelementptr inbounds i8, i8* %e.addr.0354, i64 12 350 store i8 %retval.0.i317, i8* %arrayidx152, align 1 351 %arrayidx153 = getelementptr inbounds i8, i8* %c.addr.0352, i64 13 352 %52 = load i8, i8* %arrayidx153, align 1 353 %arrayidx155 = getelementptr inbounds i8, i8* %d.addr.0353, i64 13 354 %53 = load i8, i8* %arrayidx155, align 1 355 %arrayidx157 = getelementptr inbounds i8, i8* %a.addr.0355, i64 13 356 %54 = load i8, i8* %arrayidx157, align 1 357 %arrayidx160 = getelementptr inbounds i8, i8* %b.addr.0351, i64 13 358 %55 = load i8, i8* %arrayidx160, align 1 359 %cmp.i312 = icmp ult i8 %52, %53 360 %b.a.i313.v.v = select i1 %cmp.i312, i8 %55, i8 %54 361 %b.a.i313.v = zext i8 %b.a.i313.v.v to i32 362 %b.a.i313 = mul i32 %b.a.i313.v, %w 363 %retval.0.i314 = trunc i32 %b.a.i313 to i8 364 %arrayidx164 = getelementptr inbounds i8, i8* %e.addr.0354, i64 13 365 store i8 %retval.0.i314, i8* %arrayidx164, align 1 366 %arrayidx165 = getelementptr inbounds i8, i8* %c.addr.0352, i64 14 367 %56 = load i8, i8* %arrayidx165, align 1 368 %arrayidx167 = getelementptr inbounds i8, i8* %d.addr.0353, i64 14 369 %57 = load i8, i8* %arrayidx167, align 1 370 %arrayidx169 = getelementptr inbounds i8, i8* %a.addr.0355, i64 14 371 %58 = load i8, i8* %arrayidx169, align 1 372 %arrayidx172 = getelementptr inbounds i8, i8* %b.addr.0351, i64 14 373 %59 = load i8, i8* %arrayidx172, align 1 374 %cmp.i309 = icmp ult i8 %56, %57 375 %b.a.i310.v.v = select i1 %cmp.i309, i8 %59, i8 %58 376 %b.a.i310.v = zext i8 %b.a.i310.v.v to i32 377 %b.a.i310 = mul i32 %b.a.i310.v, %w 378 %retval.0.i311 = trunc i32 %b.a.i310 to i8 379 %arrayidx176 = getelementptr inbounds i8, i8* %e.addr.0354, i64 14 380 store i8 %retval.0.i311, i8* %arrayidx176, align 1 381 %arrayidx177 = getelementptr inbounds i8, i8* %c.addr.0352, i64 15 382 %60 = load i8, i8* %arrayidx177, align 1 383 %arrayidx179 = getelementptr inbounds i8, i8* %d.addr.0353, i64 15 384 %61 = load i8, i8* %arrayidx179, align 1 385 %arrayidx181 = getelementptr inbounds i8, i8* %a.addr.0355, i64 15 386 %62 = load i8, i8* %arrayidx181, align 1 387 %arrayidx184 = getelementptr inbounds i8, i8* %b.addr.0351, i64 15 388 %63 = load i8, i8* %arrayidx184, align 1 389 %cmp.i306 = icmp ult i8 %60, %61 390 %b.a.i307.v.v = select i1 %cmp.i306, i8 %63, i8 %62 391 %b.a.i307.v = zext i8 %b.a.i307.v.v to i32 392 %b.a.i307 = mul i32 %b.a.i307.v, %w 393 %retval.0.i308 = trunc i32 %b.a.i307 to i8 394 %arrayidx188 = getelementptr inbounds i8, i8* %e.addr.0354, i64 15 395 store i8 %retval.0.i308, i8* %arrayidx188, align 1 396 %inc = add nuw nsw i32 %i.0356, 1 397 %add.ptr = getelementptr inbounds i8, i8* %a.addr.0355, i64 16 398 %add.ptr189 = getelementptr inbounds i8, i8* %b.addr.0351, i64 16 399 %add.ptr190 = getelementptr inbounds i8, i8* %c.addr.0352, i64 16 400 %add.ptr191 = getelementptr inbounds i8, i8* %d.addr.0353, i64 16 401 %add.ptr192 = getelementptr inbounds i8, i8* %e.addr.0354, i64 16 402 %exitcond = icmp eq i32 %inc, 8 403 br i1 %exitcond, label %for.end, label %for.body 404 405for.end: ; preds = %for.body 406 ret void 407} 408 409@ib = local_unnamed_addr global [64 x i32] [i32 1, i32 1, i32 0, i32 0, i32 1, i32 0, i32 1, i32 0, i32 1, i32 1, i32 0, i32 0, i32 1, i32 0, i32 1, i32 0, i32 1, i32 1, i32 0, i32 0, i32 1, i32 0, i32 1, i32 0, i32 1, i32 1, i32 0, i32 0, i32 1, i32 0, i32 1, i32 0, i32 1, i32 1, i32 0, i32 0, i32 1, i32 0, i32 1, i32 0, i32 1, i32 1, i32 0, i32 0, i32 1, i32 0, i32 1, i32 0, i32 1, i32 1, i32 0, i32 0, i32 1, i32 0, i32 1, i32 0, i32 1, i32 1, i32 0, i32 0, i32 1, i32 0, i32 1, i32 0], align 16 410@ia = common local_unnamed_addr global [64 x i32] zeroinitializer, align 16 411 412define i32 @foo1() local_unnamed_addr #0 { 413; CHECK-LABEL: @foo1( 414; CHECK-NEXT: entry: 415; CHECK-NEXT: [[TMP0:%.*]] = load <4 x i32>, <4 x i32>* bitcast ([64 x i32]* @ib to <4 x i32>*), align 16 416; CHECK-NEXT: [[TMP1:%.*]] = xor <4 x i32> [[TMP0]], <i32 -1, i32 -1, i32 -1, i32 -1> 417; CHECK-NEXT: store <4 x i32> [[TMP1]], <4 x i32>* bitcast ([64 x i32]* @ia to <4 x i32>*), align 16 418; CHECK-NEXT: [[TMP2:%.*]] = load <4 x i32>, <4 x i32>* bitcast (i32* getelementptr inbounds ([64 x i32], [64 x i32]* @ib, i64 0, i64 4) to <4 x i32>*), align 16 419; CHECK-NEXT: [[TMP3:%.*]] = xor <4 x i32> [[TMP2]], <i32 -1, i32 -1, i32 -1, i32 -1> 420; CHECK-NEXT: store <4 x i32> [[TMP3]], <4 x i32>* bitcast (i32* getelementptr inbounds ([64 x i32], [64 x i32]* @ia, i64 0, i64 4) to <4 x i32>*), align 16 421; CHECK-NEXT: [[TMP4:%.*]] = load <4 x i32>, <4 x i32>* bitcast (i32* getelementptr inbounds ([64 x i32], [64 x i32]* @ib, i64 0, i64 8) to <4 x i32>*), align 16 422; CHECK-NEXT: [[TMP5:%.*]] = xor <4 x i32> [[TMP4]], <i32 -1, i32 -1, i32 -1, i32 -1> 423; CHECK-NEXT: store <4 x i32> [[TMP5]], <4 x i32>* bitcast (i32* getelementptr inbounds ([64 x i32], [64 x i32]* @ia, i64 0, i64 8) to <4 x i32>*), align 16 424; CHECK-NEXT: [[TMP6:%.*]] = load <4 x i32>, <4 x i32>* bitcast (i32* getelementptr inbounds ([64 x i32], [64 x i32]* @ib, i64 0, i64 12) to <4 x i32>*), align 16 425; CHECK-NEXT: [[TMP7:%.*]] = xor <4 x i32> [[TMP6]], <i32 -1, i32 -1, i32 -1, i32 -1> 426; CHECK-NEXT: store <4 x i32> [[TMP7]], <4 x i32>* bitcast (i32* getelementptr inbounds ([64 x i32], [64 x i32]* @ia, i64 0, i64 12) to <4 x i32>*), align 16 427; CHECK-NEXT: [[TMP8:%.*]] = load <4 x i32>, <4 x i32>* bitcast (i32* getelementptr inbounds ([64 x i32], [64 x i32]* @ib, i64 0, i64 16) to <4 x i32>*), align 16 428; CHECK-NEXT: [[TMP9:%.*]] = xor <4 x i32> [[TMP8]], <i32 -1, i32 -1, i32 -1, i32 -1> 429; CHECK-NEXT: store <4 x i32> [[TMP9]], <4 x i32>* bitcast (i32* getelementptr inbounds ([64 x i32], [64 x i32]* @ia, i64 0, i64 16) to <4 x i32>*), align 16 430; CHECK-NEXT: [[TMP10:%.*]] = load <4 x i32>, <4 x i32>* bitcast (i32* getelementptr inbounds ([64 x i32], [64 x i32]* @ib, i64 0, i64 20) to <4 x i32>*), align 16 431; CHECK-NEXT: [[TMP11:%.*]] = xor <4 x i32> [[TMP10]], <i32 -1, i32 -1, i32 -1, i32 -1> 432; CHECK-NEXT: store <4 x i32> [[TMP11]], <4 x i32>* bitcast (i32* getelementptr inbounds ([64 x i32], [64 x i32]* @ia, i64 0, i64 20) to <4 x i32>*), align 16 433; CHECK-NEXT: [[TMP12:%.*]] = load <4 x i32>, <4 x i32>* bitcast (i32* getelementptr inbounds ([64 x i32], [64 x i32]* @ib, i64 0, i64 24) to <4 x i32>*), align 16 434; CHECK-NEXT: [[TMP13:%.*]] = xor <4 x i32> [[TMP12]], <i32 -1, i32 -1, i32 -1, i32 -1> 435; CHECK-NEXT: store <4 x i32> [[TMP13]], <4 x i32>* bitcast (i32* getelementptr inbounds ([64 x i32], [64 x i32]* @ia, i64 0, i64 24) to <4 x i32>*), align 16 436; CHECK-NEXT: [[TMP14:%.*]] = load <4 x i32>, <4 x i32>* bitcast (i32* getelementptr inbounds ([64 x i32], [64 x i32]* @ib, i64 0, i64 28) to <4 x i32>*), align 16 437; CHECK-NEXT: [[TMP15:%.*]] = xor <4 x i32> [[TMP14]], <i32 -1, i32 -1, i32 -1, i32 -1> 438; CHECK-NEXT: store <4 x i32> [[TMP15]], <4 x i32>* bitcast (i32* getelementptr inbounds ([64 x i32], [64 x i32]* @ia, i64 0, i64 28) to <4 x i32>*), align 16 439; CHECK-NEXT: [[TMP16:%.*]] = load <4 x i32>, <4 x i32>* bitcast (i32* getelementptr inbounds ([64 x i32], [64 x i32]* @ib, i64 0, i64 32) to <4 x i32>*), align 16 440; CHECK-NEXT: [[TMP17:%.*]] = xor <4 x i32> [[TMP16]], <i32 -1, i32 -1, i32 -1, i32 -1> 441; CHECK-NEXT: store <4 x i32> [[TMP17]], <4 x i32>* bitcast (i32* getelementptr inbounds ([64 x i32], [64 x i32]* @ia, i64 0, i64 32) to <4 x i32>*), align 16 442; CHECK-NEXT: [[TMP18:%.*]] = load <4 x i32>, <4 x i32>* bitcast (i32* getelementptr inbounds ([64 x i32], [64 x i32]* @ib, i64 0, i64 36) to <4 x i32>*), align 16 443; CHECK-NEXT: [[TMP19:%.*]] = xor <4 x i32> [[TMP18]], <i32 -1, i32 -1, i32 -1, i32 -1> 444; CHECK-NEXT: store <4 x i32> [[TMP19]], <4 x i32>* bitcast (i32* getelementptr inbounds ([64 x i32], [64 x i32]* @ia, i64 0, i64 36) to <4 x i32>*), align 16 445; CHECK-NEXT: [[TMP20:%.*]] = load <4 x i32>, <4 x i32>* bitcast (i32* getelementptr inbounds ([64 x i32], [64 x i32]* @ib, i64 0, i64 40) to <4 x i32>*), align 16 446; CHECK-NEXT: [[TMP21:%.*]] = xor <4 x i32> [[TMP20]], <i32 -1, i32 -1, i32 -1, i32 -1> 447; CHECK-NEXT: store <4 x i32> [[TMP21]], <4 x i32>* bitcast (i32* getelementptr inbounds ([64 x i32], [64 x i32]* @ia, i64 0, i64 40) to <4 x i32>*), align 16 448; CHECK-NEXT: [[TMP22:%.*]] = load <4 x i32>, <4 x i32>* bitcast (i32* getelementptr inbounds ([64 x i32], [64 x i32]* @ib, i64 0, i64 44) to <4 x i32>*), align 16 449; CHECK-NEXT: [[TMP23:%.*]] = xor <4 x i32> [[TMP22]], <i32 -1, i32 -1, i32 -1, i32 -1> 450; CHECK-NEXT: store <4 x i32> [[TMP23]], <4 x i32>* bitcast (i32* getelementptr inbounds ([64 x i32], [64 x i32]* @ia, i64 0, i64 44) to <4 x i32>*), align 16 451; CHECK-NEXT: [[TMP24:%.*]] = load <4 x i32>, <4 x i32>* bitcast (i32* getelementptr inbounds ([64 x i32], [64 x i32]* @ib, i64 0, i64 48) to <4 x i32>*), align 16 452; CHECK-NEXT: [[TMP25:%.*]] = xor <4 x i32> [[TMP24]], <i32 -1, i32 -1, i32 -1, i32 -1> 453; CHECK-NEXT: store <4 x i32> [[TMP25]], <4 x i32>* bitcast (i32* getelementptr inbounds ([64 x i32], [64 x i32]* @ia, i64 0, i64 48) to <4 x i32>*), align 16 454; CHECK-NEXT: [[TMP26:%.*]] = load <4 x i32>, <4 x i32>* bitcast (i32* getelementptr inbounds ([64 x i32], [64 x i32]* @ib, i64 0, i64 52) to <4 x i32>*), align 16 455; CHECK-NEXT: [[TMP27:%.*]] = xor <4 x i32> [[TMP26]], <i32 -1, i32 -1, i32 -1, i32 -1> 456; CHECK-NEXT: store <4 x i32> [[TMP27]], <4 x i32>* bitcast (i32* getelementptr inbounds ([64 x i32], [64 x i32]* @ia, i64 0, i64 52) to <4 x i32>*), align 16 457; CHECK-NEXT: [[TMP28:%.*]] = load <4 x i32>, <4 x i32>* bitcast (i32* getelementptr inbounds ([64 x i32], [64 x i32]* @ib, i64 0, i64 56) to <4 x i32>*), align 16 458; CHECK-NEXT: [[TMP29:%.*]] = xor <4 x i32> [[TMP28]], <i32 -1, i32 -1, i32 -1, i32 -1> 459; CHECK-NEXT: store <4 x i32> [[TMP29]], <4 x i32>* bitcast (i32* getelementptr inbounds ([64 x i32], [64 x i32]* @ia, i64 0, i64 56) to <4 x i32>*), align 16 460; CHECK-NEXT: [[TMP30:%.*]] = load <4 x i32>, <4 x i32>* bitcast (i32* getelementptr inbounds ([64 x i32], [64 x i32]* @ib, i64 0, i64 60) to <4 x i32>*), align 16 461; CHECK-NEXT: [[TMP31:%.*]] = xor <4 x i32> [[TMP30]], <i32 -1, i32 -1, i32 -1, i32 -1> 462; CHECK-NEXT: store <4 x i32> [[TMP31]], <4 x i32>* bitcast (i32* getelementptr inbounds ([64 x i32], [64 x i32]* @ia, i64 0, i64 60) to <4 x i32>*), align 16 463; CHECK-NEXT: br label [[FOR_BODY5:%.*]] 464; CHECK: for.cond3: 465; CHECK-NEXT: [[INDVARS_IV_NEXT:%.*]] = add nuw nsw i64 [[INDVARS_IV:%.*]], 1 466; CHECK-NEXT: [[CMP4:%.*]] = icmp ult i64 [[INDVARS_IV]], 63 467; CHECK-NEXT: br i1 [[CMP4]], label [[FOR_BODY5]], label [[FOR_END14:%.*]] 468; CHECK: for.body5: 469; CHECK-NEXT: [[INDVARS_IV]] = phi i64 [ 0, [[ENTRY:%.*]] ], [ [[INDVARS_IV_NEXT]], [[FOR_COND3:%.*]] ] 470; CHECK-NEXT: [[ARRAYIDX7:%.*]] = getelementptr inbounds [64 x i32], [64 x i32]* @ia, i64 0, i64 [[INDVARS_IV]] 471; CHECK-NEXT: [[TMP32:%.*]] = load i32, i32* [[ARRAYIDX7]], align 4 472; CHECK-NEXT: [[ARRAYIDX9:%.*]] = getelementptr inbounds [64 x i32], [64 x i32]* @ib, i64 0, i64 [[INDVARS_IV]] 473; CHECK-NEXT: [[TMP33:%.*]] = load i32, i32* [[ARRAYIDX9]], align 4 474; CHECK-NEXT: [[NEG10:%.*]] = xor i32 [[TMP33]], -1 475; CHECK-NEXT: [[CMP11:%.*]] = icmp eq i32 [[TMP32]], [[NEG10]] 476; CHECK-NEXT: br i1 [[CMP11]], label [[FOR_COND3]], label [[IF_THEN:%.*]] 477; CHECK: if.then: 478; CHECK-NEXT: tail call void @abort() 479; CHECK-NEXT: unreachable 480; CHECK: for.end14: 481; CHECK-NEXT: ret i32 0 482; 483entry: 484 %0 = load i32, i32* getelementptr inbounds ([64 x i32], [64 x i32]* @ib, i64 0, i64 0), align 16 485 %neg = xor i32 %0, -1 486 store i32 %neg, i32* getelementptr inbounds ([64 x i32], [64 x i32]* @ia, i64 0, i64 0), align 16 487 %1 = load i32, i32* getelementptr inbounds ([64 x i32], [64 x i32]* @ib, i64 0, i64 1), align 4 488 %neg.1 = xor i32 %1, -1 489 store i32 %neg.1, i32* getelementptr inbounds ([64 x i32], [64 x i32]* @ia, i64 0, i64 1), align 4 490 %2 = load i32, i32* getelementptr inbounds ([64 x i32], [64 x i32]* @ib, i64 0, i64 2), align 8 491 %neg.2 = xor i32 %2, -1 492 store i32 %neg.2, i32* getelementptr inbounds ([64 x i32], [64 x i32]* @ia, i64 0, i64 2), align 8 493 %3 = load i32, i32* getelementptr inbounds ([64 x i32], [64 x i32]* @ib, i64 0, i64 3), align 4 494 %neg.3 = xor i32 %3, -1 495 store i32 %neg.3, i32* getelementptr inbounds ([64 x i32], [64 x i32]* @ia, i64 0, i64 3), align 4 496 %4 = load i32, i32* getelementptr inbounds ([64 x i32], [64 x i32]* @ib, i64 0, i64 4), align 16 497 %neg.4 = xor i32 %4, -1 498 store i32 %neg.4, i32* getelementptr inbounds ([64 x i32], [64 x i32]* @ia, i64 0, i64 4), align 16 499 %5 = load i32, i32* getelementptr inbounds ([64 x i32], [64 x i32]* @ib, i64 0, i64 5), align 4 500 %neg.5 = xor i32 %5, -1 501 store i32 %neg.5, i32* getelementptr inbounds ([64 x i32], [64 x i32]* @ia, i64 0, i64 5), align 4 502 %6 = load i32, i32* getelementptr inbounds ([64 x i32], [64 x i32]* @ib, i64 0, i64 6), align 8 503 %neg.6 = xor i32 %6, -1 504 store i32 %neg.6, i32* getelementptr inbounds ([64 x i32], [64 x i32]* @ia, i64 0, i64 6), align 8 505 %7 = load i32, i32* getelementptr inbounds ([64 x i32], [64 x i32]* @ib, i64 0, i64 7), align 4 506 %neg.7 = xor i32 %7, -1 507 store i32 %neg.7, i32* getelementptr inbounds ([64 x i32], [64 x i32]* @ia, i64 0, i64 7), align 4 508 %8 = load i32, i32* getelementptr inbounds ([64 x i32], [64 x i32]* @ib, i64 0, i64 8), align 16 509 %neg.8 = xor i32 %8, -1 510 store i32 %neg.8, i32* getelementptr inbounds ([64 x i32], [64 x i32]* @ia, i64 0, i64 8), align 16 511 %9 = load i32, i32* getelementptr inbounds ([64 x i32], [64 x i32]* @ib, i64 0, i64 9), align 4 512 %neg.9 = xor i32 %9, -1 513 store i32 %neg.9, i32* getelementptr inbounds ([64 x i32], [64 x i32]* @ia, i64 0, i64 9), align 4 514 %10 = load i32, i32* getelementptr inbounds ([64 x i32], [64 x i32]* @ib, i64 0, i64 10), align 8 515 %neg.10 = xor i32 %10, -1 516 store i32 %neg.10, i32* getelementptr inbounds ([64 x i32], [64 x i32]* @ia, i64 0, i64 10), align 8 517 %11 = load i32, i32* getelementptr inbounds ([64 x i32], [64 x i32]* @ib, i64 0, i64 11), align 4 518 %neg.11 = xor i32 %11, -1 519 store i32 %neg.11, i32* getelementptr inbounds ([64 x i32], [64 x i32]* @ia, i64 0, i64 11), align 4 520 %12 = load i32, i32* getelementptr inbounds ([64 x i32], [64 x i32]* @ib, i64 0, i64 12), align 16 521 %neg.12 = xor i32 %12, -1 522 store i32 %neg.12, i32* getelementptr inbounds ([64 x i32], [64 x i32]* @ia, i64 0, i64 12), align 16 523 %13 = load i32, i32* getelementptr inbounds ([64 x i32], [64 x i32]* @ib, i64 0, i64 13), align 4 524 %neg.13 = xor i32 %13, -1 525 store i32 %neg.13, i32* getelementptr inbounds ([64 x i32], [64 x i32]* @ia, i64 0, i64 13), align 4 526 %14 = load i32, i32* getelementptr inbounds ([64 x i32], [64 x i32]* @ib, i64 0, i64 14), align 8 527 %neg.14 = xor i32 %14, -1 528 store i32 %neg.14, i32* getelementptr inbounds ([64 x i32], [64 x i32]* @ia, i64 0, i64 14), align 8 529 %15 = load i32, i32* getelementptr inbounds ([64 x i32], [64 x i32]* @ib, i64 0, i64 15), align 4 530 %neg.15 = xor i32 %15, -1 531 store i32 %neg.15, i32* getelementptr inbounds ([64 x i32], [64 x i32]* @ia, i64 0, i64 15), align 4 532 %16 = load i32, i32* getelementptr inbounds ([64 x i32], [64 x i32]* @ib, i64 0, i64 16), align 16 533 %neg.16 = xor i32 %16, -1 534 store i32 %neg.16, i32* getelementptr inbounds ([64 x i32], [64 x i32]* @ia, i64 0, i64 16), align 16 535 %17 = load i32, i32* getelementptr inbounds ([64 x i32], [64 x i32]* @ib, i64 0, i64 17), align 4 536 %neg.17 = xor i32 %17, -1 537 store i32 %neg.17, i32* getelementptr inbounds ([64 x i32], [64 x i32]* @ia, i64 0, i64 17), align 4 538 %18 = load i32, i32* getelementptr inbounds ([64 x i32], [64 x i32]* @ib, i64 0, i64 18), align 8 539 %neg.18 = xor i32 %18, -1 540 store i32 %neg.18, i32* getelementptr inbounds ([64 x i32], [64 x i32]* @ia, i64 0, i64 18), align 8 541 %19 = load i32, i32* getelementptr inbounds ([64 x i32], [64 x i32]* @ib, i64 0, i64 19), align 4 542 %neg.19 = xor i32 %19, -1 543 store i32 %neg.19, i32* getelementptr inbounds ([64 x i32], [64 x i32]* @ia, i64 0, i64 19), align 4 544 %20 = load i32, i32* getelementptr inbounds ([64 x i32], [64 x i32]* @ib, i64 0, i64 20), align 16 545 %neg.20 = xor i32 %20, -1 546 store i32 %neg.20, i32* getelementptr inbounds ([64 x i32], [64 x i32]* @ia, i64 0, i64 20), align 16 547 %21 = load i32, i32* getelementptr inbounds ([64 x i32], [64 x i32]* @ib, i64 0, i64 21), align 4 548 %neg.21 = xor i32 %21, -1 549 store i32 %neg.21, i32* getelementptr inbounds ([64 x i32], [64 x i32]* @ia, i64 0, i64 21), align 4 550 %22 = load i32, i32* getelementptr inbounds ([64 x i32], [64 x i32]* @ib, i64 0, i64 22), align 8 551 %neg.22 = xor i32 %22, -1 552 store i32 %neg.22, i32* getelementptr inbounds ([64 x i32], [64 x i32]* @ia, i64 0, i64 22), align 8 553 %23 = load i32, i32* getelementptr inbounds ([64 x i32], [64 x i32]* @ib, i64 0, i64 23), align 4 554 %neg.23 = xor i32 %23, -1 555 store i32 %neg.23, i32* getelementptr inbounds ([64 x i32], [64 x i32]* @ia, i64 0, i64 23), align 4 556 %24 = load i32, i32* getelementptr inbounds ([64 x i32], [64 x i32]* @ib, i64 0, i64 24), align 16 557 %neg.24 = xor i32 %24, -1 558 store i32 %neg.24, i32* getelementptr inbounds ([64 x i32], [64 x i32]* @ia, i64 0, i64 24), align 16 559 %25 = load i32, i32* getelementptr inbounds ([64 x i32], [64 x i32]* @ib, i64 0, i64 25), align 4 560 %neg.25 = xor i32 %25, -1 561 store i32 %neg.25, i32* getelementptr inbounds ([64 x i32], [64 x i32]* @ia, i64 0, i64 25), align 4 562 %26 = load i32, i32* getelementptr inbounds ([64 x i32], [64 x i32]* @ib, i64 0, i64 26), align 8 563 %neg.26 = xor i32 %26, -1 564 store i32 %neg.26, i32* getelementptr inbounds ([64 x i32], [64 x i32]* @ia, i64 0, i64 26), align 8 565 %27 = load i32, i32* getelementptr inbounds ([64 x i32], [64 x i32]* @ib, i64 0, i64 27), align 4 566 %neg.27 = xor i32 %27, -1 567 store i32 %neg.27, i32* getelementptr inbounds ([64 x i32], [64 x i32]* @ia, i64 0, i64 27), align 4 568 %28 = load i32, i32* getelementptr inbounds ([64 x i32], [64 x i32]* @ib, i64 0, i64 28), align 16 569 %neg.28 = xor i32 %28, -1 570 store i32 %neg.28, i32* getelementptr inbounds ([64 x i32], [64 x i32]* @ia, i64 0, i64 28), align 16 571 %29 = load i32, i32* getelementptr inbounds ([64 x i32], [64 x i32]* @ib, i64 0, i64 29), align 4 572 %neg.29 = xor i32 %29, -1 573 store i32 %neg.29, i32* getelementptr inbounds ([64 x i32], [64 x i32]* @ia, i64 0, i64 29), align 4 574 %30 = load i32, i32* getelementptr inbounds ([64 x i32], [64 x i32]* @ib, i64 0, i64 30), align 8 575 %neg.30 = xor i32 %30, -1 576 store i32 %neg.30, i32* getelementptr inbounds ([64 x i32], [64 x i32]* @ia, i64 0, i64 30), align 8 577 %31 = load i32, i32* getelementptr inbounds ([64 x i32], [64 x i32]* @ib, i64 0, i64 31), align 4 578 %neg.31 = xor i32 %31, -1 579 store i32 %neg.31, i32* getelementptr inbounds ([64 x i32], [64 x i32]* @ia, i64 0, i64 31), align 4 580 %32 = load i32, i32* getelementptr inbounds ([64 x i32], [64 x i32]* @ib, i64 0, i64 32), align 16 581 %neg.32 = xor i32 %32, -1 582 store i32 %neg.32, i32* getelementptr inbounds ([64 x i32], [64 x i32]* @ia, i64 0, i64 32), align 16 583 %33 = load i32, i32* getelementptr inbounds ([64 x i32], [64 x i32]* @ib, i64 0, i64 33), align 4 584 %neg.33 = xor i32 %33, -1 585 store i32 %neg.33, i32* getelementptr inbounds ([64 x i32], [64 x i32]* @ia, i64 0, i64 33), align 4 586 %34 = load i32, i32* getelementptr inbounds ([64 x i32], [64 x i32]* @ib, i64 0, i64 34), align 8 587 %neg.34 = xor i32 %34, -1 588 store i32 %neg.34, i32* getelementptr inbounds ([64 x i32], [64 x i32]* @ia, i64 0, i64 34), align 8 589 %35 = load i32, i32* getelementptr inbounds ([64 x i32], [64 x i32]* @ib, i64 0, i64 35), align 4 590 %neg.35 = xor i32 %35, -1 591 store i32 %neg.35, i32* getelementptr inbounds ([64 x i32], [64 x i32]* @ia, i64 0, i64 35), align 4 592 %36 = load i32, i32* getelementptr inbounds ([64 x i32], [64 x i32]* @ib, i64 0, i64 36), align 16 593 %neg.36 = xor i32 %36, -1 594 store i32 %neg.36, i32* getelementptr inbounds ([64 x i32], [64 x i32]* @ia, i64 0, i64 36), align 16 595 %37 = load i32, i32* getelementptr inbounds ([64 x i32], [64 x i32]* @ib, i64 0, i64 37), align 4 596 %neg.37 = xor i32 %37, -1 597 store i32 %neg.37, i32* getelementptr inbounds ([64 x i32], [64 x i32]* @ia, i64 0, i64 37), align 4 598 %38 = load i32, i32* getelementptr inbounds ([64 x i32], [64 x i32]* @ib, i64 0, i64 38), align 8 599 %neg.38 = xor i32 %38, -1 600 store i32 %neg.38, i32* getelementptr inbounds ([64 x i32], [64 x i32]* @ia, i64 0, i64 38), align 8 601 %39 = load i32, i32* getelementptr inbounds ([64 x i32], [64 x i32]* @ib, i64 0, i64 39), align 4 602 %neg.39 = xor i32 %39, -1 603 store i32 %neg.39, i32* getelementptr inbounds ([64 x i32], [64 x i32]* @ia, i64 0, i64 39), align 4 604 %40 = load i32, i32* getelementptr inbounds ([64 x i32], [64 x i32]* @ib, i64 0, i64 40), align 16 605 %neg.40 = xor i32 %40, -1 606 store i32 %neg.40, i32* getelementptr inbounds ([64 x i32], [64 x i32]* @ia, i64 0, i64 40), align 16 607 %41 = load i32, i32* getelementptr inbounds ([64 x i32], [64 x i32]* @ib, i64 0, i64 41), align 4 608 %neg.41 = xor i32 %41, -1 609 store i32 %neg.41, i32* getelementptr inbounds ([64 x i32], [64 x i32]* @ia, i64 0, i64 41), align 4 610 %42 = load i32, i32* getelementptr inbounds ([64 x i32], [64 x i32]* @ib, i64 0, i64 42), align 8 611 %neg.42 = xor i32 %42, -1 612 store i32 %neg.42, i32* getelementptr inbounds ([64 x i32], [64 x i32]* @ia, i64 0, i64 42), align 8 613 %43 = load i32, i32* getelementptr inbounds ([64 x i32], [64 x i32]* @ib, i64 0, i64 43), align 4 614 %neg.43 = xor i32 %43, -1 615 store i32 %neg.43, i32* getelementptr inbounds ([64 x i32], [64 x i32]* @ia, i64 0, i64 43), align 4 616 %44 = load i32, i32* getelementptr inbounds ([64 x i32], [64 x i32]* @ib, i64 0, i64 44), align 16 617 %neg.44 = xor i32 %44, -1 618 store i32 %neg.44, i32* getelementptr inbounds ([64 x i32], [64 x i32]* @ia, i64 0, i64 44), align 16 619 %45 = load i32, i32* getelementptr inbounds ([64 x i32], [64 x i32]* @ib, i64 0, i64 45), align 4 620 %neg.45 = xor i32 %45, -1 621 store i32 %neg.45, i32* getelementptr inbounds ([64 x i32], [64 x i32]* @ia, i64 0, i64 45), align 4 622 %46 = load i32, i32* getelementptr inbounds ([64 x i32], [64 x i32]* @ib, i64 0, i64 46), align 8 623 %neg.46 = xor i32 %46, -1 624 store i32 %neg.46, i32* getelementptr inbounds ([64 x i32], [64 x i32]* @ia, i64 0, i64 46), align 8 625 %47 = load i32, i32* getelementptr inbounds ([64 x i32], [64 x i32]* @ib, i64 0, i64 47), align 4 626 %neg.47 = xor i32 %47, -1 627 store i32 %neg.47, i32* getelementptr inbounds ([64 x i32], [64 x i32]* @ia, i64 0, i64 47), align 4 628 %48 = load i32, i32* getelementptr inbounds ([64 x i32], [64 x i32]* @ib, i64 0, i64 48), align 16 629 %neg.48 = xor i32 %48, -1 630 store i32 %neg.48, i32* getelementptr inbounds ([64 x i32], [64 x i32]* @ia, i64 0, i64 48), align 16 631 %49 = load i32, i32* getelementptr inbounds ([64 x i32], [64 x i32]* @ib, i64 0, i64 49), align 4 632 %neg.49 = xor i32 %49, -1 633 store i32 %neg.49, i32* getelementptr inbounds ([64 x i32], [64 x i32]* @ia, i64 0, i64 49), align 4 634 %50 = load i32, i32* getelementptr inbounds ([64 x i32], [64 x i32]* @ib, i64 0, i64 50), align 8 635 %neg.50 = xor i32 %50, -1 636 store i32 %neg.50, i32* getelementptr inbounds ([64 x i32], [64 x i32]* @ia, i64 0, i64 50), align 8 637 %51 = load i32, i32* getelementptr inbounds ([64 x i32], [64 x i32]* @ib, i64 0, i64 51), align 4 638 %neg.51 = xor i32 %51, -1 639 store i32 %neg.51, i32* getelementptr inbounds ([64 x i32], [64 x i32]* @ia, i64 0, i64 51), align 4 640 %52 = load i32, i32* getelementptr inbounds ([64 x i32], [64 x i32]* @ib, i64 0, i64 52), align 16 641 %neg.52 = xor i32 %52, -1 642 store i32 %neg.52, i32* getelementptr inbounds ([64 x i32], [64 x i32]* @ia, i64 0, i64 52), align 16 643 %53 = load i32, i32* getelementptr inbounds ([64 x i32], [64 x i32]* @ib, i64 0, i64 53), align 4 644 %neg.53 = xor i32 %53, -1 645 store i32 %neg.53, i32* getelementptr inbounds ([64 x i32], [64 x i32]* @ia, i64 0, i64 53), align 4 646 %54 = load i32, i32* getelementptr inbounds ([64 x i32], [64 x i32]* @ib, i64 0, i64 54), align 8 647 %neg.54 = xor i32 %54, -1 648 store i32 %neg.54, i32* getelementptr inbounds ([64 x i32], [64 x i32]* @ia, i64 0, i64 54), align 8 649 %55 = load i32, i32* getelementptr inbounds ([64 x i32], [64 x i32]* @ib, i64 0, i64 55), align 4 650 %neg.55 = xor i32 %55, -1 651 store i32 %neg.55, i32* getelementptr inbounds ([64 x i32], [64 x i32]* @ia, i64 0, i64 55), align 4 652 %56 = load i32, i32* getelementptr inbounds ([64 x i32], [64 x i32]* @ib, i64 0, i64 56), align 16 653 %neg.56 = xor i32 %56, -1 654 store i32 %neg.56, i32* getelementptr inbounds ([64 x i32], [64 x i32]* @ia, i64 0, i64 56), align 16 655 %57 = load i32, i32* getelementptr inbounds ([64 x i32], [64 x i32]* @ib, i64 0, i64 57), align 4 656 %neg.57 = xor i32 %57, -1 657 store i32 %neg.57, i32* getelementptr inbounds ([64 x i32], [64 x i32]* @ia, i64 0, i64 57), align 4 658 %58 = load i32, i32* getelementptr inbounds ([64 x i32], [64 x i32]* @ib, i64 0, i64 58), align 8 659 %neg.58 = xor i32 %58, -1 660 store i32 %neg.58, i32* getelementptr inbounds ([64 x i32], [64 x i32]* @ia, i64 0, i64 58), align 8 661 %59 = load i32, i32* getelementptr inbounds ([64 x i32], [64 x i32]* @ib, i64 0, i64 59), align 4 662 %neg.59 = xor i32 %59, -1 663 store i32 %neg.59, i32* getelementptr inbounds ([64 x i32], [64 x i32]* @ia, i64 0, i64 59), align 4 664 %60 = load i32, i32* getelementptr inbounds ([64 x i32], [64 x i32]* @ib, i64 0, i64 60), align 16 665 %neg.60 = xor i32 %60, -1 666 store i32 %neg.60, i32* getelementptr inbounds ([64 x i32], [64 x i32]* @ia, i64 0, i64 60), align 16 667 %61 = load i32, i32* getelementptr inbounds ([64 x i32], [64 x i32]* @ib, i64 0, i64 61), align 4 668 %neg.61 = xor i32 %61, -1 669 store i32 %neg.61, i32* getelementptr inbounds ([64 x i32], [64 x i32]* @ia, i64 0, i64 61), align 4 670 %62 = load i32, i32* getelementptr inbounds ([64 x i32], [64 x i32]* @ib, i64 0, i64 62), align 8 671 %neg.62 = xor i32 %62, -1 672 store i32 %neg.62, i32* getelementptr inbounds ([64 x i32], [64 x i32]* @ia, i64 0, i64 62), align 8 673 %63 = load i32, i32* getelementptr inbounds ([64 x i32], [64 x i32]* @ib, i64 0, i64 63), align 4 674 %neg.63 = xor i32 %63, -1 675 store i32 %neg.63, i32* getelementptr inbounds ([64 x i32], [64 x i32]* @ia, i64 0, i64 63), align 4 676 br label %for.body5 677 678for.cond3: ; preds = %for.body5 679 %indvars.iv.next = add nuw nsw i64 %indvars.iv, 1 680 %cmp4 = icmp ult i64 %indvars.iv, 63 681 br i1 %cmp4, label %for.body5, label %for.end14 682 683for.body5: ; preds = %entry, %for.cond3 684 %indvars.iv = phi i64 [ 0, %entry ], [ %indvars.iv.next, %for.cond3 ] 685 %arrayidx7 = getelementptr inbounds [64 x i32], [64 x i32]* @ia, i64 0, i64 %indvars.iv 686 %64 = load i32, i32* %arrayidx7, align 4 687 %arrayidx9 = getelementptr inbounds [64 x i32], [64 x i32]* @ib, i64 0, i64 %indvars.iv 688 %65 = load i32, i32* %arrayidx9, align 4 689 %neg10 = xor i32 %65, -1 690 %cmp11 = icmp eq i32 %64, %neg10 691 br i1 %cmp11, label %for.cond3, label %if.then 692 693if.then: ; preds = %for.body5 694 tail call void @abort() #2 695 unreachable 696 697for.end14: ; preds = %for.cond3 698 ret i32 0 699} 700 701declare void @abort() #2 702