1320389d4Svporpo; NOTE: Assertions have been autogenerated by utils/update_test_checks.py UTC_ARGS: --version 5 26312beefSvporpo; RUN: opt -passes=sandbox-vectorizer -sbvec-vec-reg-bits=1024 -sbvec-allow-non-pow2 -sbvec-passes="bottom-up-vec<>" %s -S | FileCheck %s 3320389d4Svporpo 4320389d4Svporpodefine void @store_load(ptr %ptr) { 5320389d4Svporpo; CHECK-LABEL: define void @store_load( 6320389d4Svporpo; CHECK-SAME: ptr [[PTR:%.*]]) { 7320389d4Svporpo; CHECK-NEXT: [[PTR0:%.*]] = getelementptr float, ptr [[PTR]], i32 0 8320389d4Svporpo; CHECK-NEXT: [[VECL:%.*]] = load <2 x float>, ptr [[PTR0]], align 4 9320389d4Svporpo; CHECK-NEXT: store <2 x float> [[VECL]], ptr [[PTR0]], align 4 10320389d4Svporpo; CHECK-NEXT: ret void 11320389d4Svporpo; 12320389d4Svporpo %ptr0 = getelementptr float, ptr %ptr, i32 0 13320389d4Svporpo %ptr1 = getelementptr float, ptr %ptr, i32 1 14320389d4Svporpo %ld0 = load float, ptr %ptr0 15320389d4Svporpo %ld1 = load float, ptr %ptr1 16320389d4Svporpo store float %ld0, ptr %ptr0 17320389d4Svporpo store float %ld1, ptr %ptr1 18320389d4Svporpo ret void 19320389d4Svporpo} 20320389d4Svporpo 21320389d4Svporpo 22320389d4Svporpodefine void @store_fpext_load(ptr %ptr) { 23320389d4Svporpo; CHECK-LABEL: define void @store_fpext_load( 24320389d4Svporpo; CHECK-SAME: ptr [[PTR:%.*]]) { 25320389d4Svporpo; CHECK-NEXT: [[PTR0:%.*]] = getelementptr float, ptr [[PTR]], i32 0 26320389d4Svporpo; CHECK-NEXT: [[PTRD0:%.*]] = getelementptr double, ptr [[PTR]], i32 0 27320389d4Svporpo; CHECK-NEXT: [[VECL:%.*]] = load <2 x float>, ptr [[PTR0]], align 4 28320389d4Svporpo; CHECK-NEXT: [[VCAST:%.*]] = fpext <2 x float> [[VECL]] to <2 x double> 29320389d4Svporpo; CHECK-NEXT: store <2 x double> [[VCAST]], ptr [[PTRD0]], align 8 30320389d4Svporpo; CHECK-NEXT: ret void 31320389d4Svporpo; 32320389d4Svporpo %ptr0 = getelementptr float, ptr %ptr, i32 0 33320389d4Svporpo %ptr1 = getelementptr float, ptr %ptr, i32 1 34320389d4Svporpo %ptrd0 = getelementptr double, ptr %ptr, i32 0 35320389d4Svporpo %ptrd1 = getelementptr double, ptr %ptr, i32 1 36320389d4Svporpo %ld0 = load float, ptr %ptr0 37320389d4Svporpo %ld1 = load float, ptr %ptr1 38320389d4Svporpo %fpext0 = fpext float %ld0 to double 39320389d4Svporpo %fpext1 = fpext float %ld1 to double 40320389d4Svporpo store double %fpext0, ptr %ptrd0 41320389d4Svporpo store double %fpext1, ptr %ptrd1 42320389d4Svporpo ret void 43320389d4Svporpo} 44320389d4Svporpo 455942a99fSvporpodefine void @store_fcmp_zext_load(ptr %ptr) { 465942a99fSvporpo; CHECK-LABEL: define void @store_fcmp_zext_load( 475942a99fSvporpo; CHECK-SAME: ptr [[PTR:%.*]]) { 485942a99fSvporpo; CHECK-NEXT: [[PTR0:%.*]] = getelementptr float, ptr [[PTR]], i32 0 495942a99fSvporpo; CHECK-NEXT: [[PTRB0:%.*]] = getelementptr i32, ptr [[PTR]], i32 0 505942a99fSvporpo; CHECK-NEXT: [[VECL1:%.*]] = load <2 x float>, ptr [[PTR0]], align 4 515942a99fSvporpo; CHECK-NEXT: [[VECL:%.*]] = load <2 x float>, ptr [[PTR0]], align 4 525942a99fSvporpo; CHECK-NEXT: [[VCMP:%.*]] = fcmp ogt <2 x float> [[VECL]], [[VECL1]] 535942a99fSvporpo; CHECK-NEXT: [[VCAST:%.*]] = zext <2 x i1> [[VCMP]] to <2 x i32> 545942a99fSvporpo; CHECK-NEXT: store <2 x i32> [[VCAST]], ptr [[PTRB0]], align 4 555942a99fSvporpo; CHECK-NEXT: ret void 565942a99fSvporpo; 575942a99fSvporpo %ptr0 = getelementptr float, ptr %ptr, i32 0 585942a99fSvporpo %ptr1 = getelementptr float, ptr %ptr, i32 1 595942a99fSvporpo %ptrb0 = getelementptr i32, ptr %ptr, i32 0 605942a99fSvporpo %ptrb1 = getelementptr i32, ptr %ptr, i32 1 615942a99fSvporpo %ldB0 = load float, ptr %ptr0 625942a99fSvporpo %ldB1 = load float, ptr %ptr1 635942a99fSvporpo %ldA0 = load float, ptr %ptr0 645942a99fSvporpo %ldA1 = load float, ptr %ptr1 655942a99fSvporpo %fcmp0 = fcmp ogt float %ldA0, %ldB0 665942a99fSvporpo %fcmp1 = fcmp ogt float %ldA1, %ldB1 675942a99fSvporpo %zext0 = zext i1 %fcmp0 to i32 685942a99fSvporpo %zext1 = zext i1 %fcmp1 to i32 695942a99fSvporpo store i32 %zext0, ptr %ptrb0 705942a99fSvporpo store i32 %zext1, ptr %ptrb1 715942a99fSvporpo ret void 725942a99fSvporpo} 73320389d4Svporpo 74f7ef7b2fSvporpodefine void @store_fadd_load(ptr %ptr) { 75f7ef7b2fSvporpo; CHECK-LABEL: define void @store_fadd_load( 76f7ef7b2fSvporpo; CHECK-SAME: ptr [[PTR:%.*]]) { 77f7ef7b2fSvporpo; CHECK-NEXT: [[PTR0:%.*]] = getelementptr float, ptr [[PTR]], i32 0 78f7ef7b2fSvporpo; CHECK-NEXT: [[VECL:%.*]] = load <2 x float>, ptr [[PTR0]], align 4 79f7ef7b2fSvporpo; CHECK-NEXT: [[VECL1:%.*]] = load <2 x float>, ptr [[PTR0]], align 4 80f7ef7b2fSvporpo; CHECK-NEXT: [[VEC:%.*]] = fadd <2 x float> [[VECL]], [[VECL1]] 81f7ef7b2fSvporpo; CHECK-NEXT: store <2 x float> [[VEC]], ptr [[PTR0]], align 4 82f7ef7b2fSvporpo; CHECK-NEXT: ret void 83f7ef7b2fSvporpo; 84f7ef7b2fSvporpo %ptr0 = getelementptr float, ptr %ptr, i32 0 85f7ef7b2fSvporpo %ptr1 = getelementptr float, ptr %ptr, i32 1 86f7ef7b2fSvporpo %ldA0 = load float, ptr %ptr0 87f7ef7b2fSvporpo %ldA1 = load float, ptr %ptr1 88f7ef7b2fSvporpo %ldB0 = load float, ptr %ptr0 89f7ef7b2fSvporpo %ldB1 = load float, ptr %ptr1 90f7ef7b2fSvporpo %fadd0 = fadd float %ldA0, %ldB0 91f7ef7b2fSvporpo %fadd1 = fadd float %ldA1, %ldB1 92f7ef7b2fSvporpo store float %fadd0, ptr %ptr0 93f7ef7b2fSvporpo store float %fadd1, ptr %ptr1 94f7ef7b2fSvporpo ret void 95f7ef7b2fSvporpo} 96320389d4Svporpo 97320389d4Svporpodefine void @store_fneg_load(ptr %ptr) { 98320389d4Svporpo; CHECK-LABEL: define void @store_fneg_load( 99320389d4Svporpo; CHECK-SAME: ptr [[PTR:%.*]]) { 100320389d4Svporpo; CHECK-NEXT: [[PTR0:%.*]] = getelementptr float, ptr [[PTR]], i32 0 101320389d4Svporpo; CHECK-NEXT: [[VECL:%.*]] = load <2 x float>, ptr [[PTR0]], align 4 102320389d4Svporpo; CHECK-NEXT: [[VEC:%.*]] = fneg <2 x float> [[VECL]] 103320389d4Svporpo; CHECK-NEXT: store <2 x float> [[VEC]], ptr [[PTR0]], align 4 104320389d4Svporpo; CHECK-NEXT: ret void 105320389d4Svporpo; 106320389d4Svporpo %ptr0 = getelementptr float, ptr %ptr, i32 0 107320389d4Svporpo %ptr1 = getelementptr float, ptr %ptr, i32 1 108320389d4Svporpo %ld0 = load float, ptr %ptr0 109320389d4Svporpo %ld1 = load float, ptr %ptr1 110320389d4Svporpo %fneg0 = fneg float %ld0 111320389d4Svporpo %fneg1 = fneg float %ld1 112320389d4Svporpo store float %fneg0, ptr %ptr0 113320389d4Svporpo store float %fneg1, ptr %ptr1 114320389d4Svporpo ret void 115320389d4Svporpo} 116320389d4Svporpo 1177dffc96aSvporpodefine float @scalars_with_external_uses_not_dead(ptr %ptr) { 1187dffc96aSvporpo; CHECK-LABEL: define float @scalars_with_external_uses_not_dead( 1197dffc96aSvporpo; CHECK-SAME: ptr [[PTR:%.*]]) { 1207dffc96aSvporpo; CHECK-NEXT: [[PTR0:%.*]] = getelementptr float, ptr [[PTR]], i32 0 1217dffc96aSvporpo; CHECK-NEXT: [[PTR1:%.*]] = getelementptr float, ptr [[PTR]], i32 1 1227dffc96aSvporpo; CHECK-NEXT: [[LD0:%.*]] = load float, ptr [[PTR0]], align 4 1237dffc96aSvporpo; CHECK-NEXT: [[LD1:%.*]] = load float, ptr [[PTR1]], align 4 1247dffc96aSvporpo; CHECK-NEXT: [[VECL:%.*]] = load <2 x float>, ptr [[PTR0]], align 4 1257dffc96aSvporpo; CHECK-NEXT: store <2 x float> [[VECL]], ptr [[PTR0]], align 4 1267dffc96aSvporpo; CHECK-NEXT: [[USER:%.*]] = fneg float [[LD1]] 1277dffc96aSvporpo; CHECK-NEXT: ret float [[LD0]] 1287dffc96aSvporpo; 1297dffc96aSvporpo %ptr0 = getelementptr float, ptr %ptr, i32 0 1307dffc96aSvporpo %ptr1 = getelementptr float, ptr %ptr, i32 1 1317dffc96aSvporpo %ld0 = load float, ptr %ptr0 1327dffc96aSvporpo %ld1 = load float, ptr %ptr1 1337dffc96aSvporpo store float %ld0, ptr %ptr0 1347dffc96aSvporpo store float %ld1, ptr %ptr1 1357dffc96aSvporpo %user = fneg float %ld1 1367dffc96aSvporpo ret float %ld0 1377dffc96aSvporpo} 1387dffc96aSvporpo 1393be3b33eSvporpodefine void @pack_scalars(ptr %ptr, ptr %ptr2) { 1403be3b33eSvporpo; CHECK-LABEL: define void @pack_scalars( 1413be3b33eSvporpo; CHECK-SAME: ptr [[PTR:%.*]], ptr [[PTR2:%.*]]) { 1423be3b33eSvporpo; CHECK-NEXT: [[PTR0:%.*]] = getelementptr float, ptr [[PTR]], i32 0 1433be3b33eSvporpo; CHECK-NEXT: [[LD0:%.*]] = load float, ptr [[PTR0]], align 4 1443be3b33eSvporpo; CHECK-NEXT: [[LD1:%.*]] = load float, ptr [[PTR2]], align 4 1453be3b33eSvporpo; CHECK-NEXT: [[PACK:%.*]] = insertelement <2 x float> poison, float [[LD0]], i32 0 1463be3b33eSvporpo; CHECK-NEXT: [[PACK1:%.*]] = insertelement <2 x float> [[PACK]], float [[LD1]], i32 1 1473be3b33eSvporpo; CHECK-NEXT: store <2 x float> [[PACK1]], ptr [[PTR0]], align 4 1483be3b33eSvporpo; CHECK-NEXT: ret void 1493be3b33eSvporpo; 1503be3b33eSvporpo %ptr0 = getelementptr float, ptr %ptr, i32 0 1513be3b33eSvporpo %ptr1 = getelementptr float, ptr %ptr, i32 1 1523be3b33eSvporpo %ld0 = load float, ptr %ptr0 1533be3b33eSvporpo %ld1 = load float, ptr %ptr2 1543be3b33eSvporpo store float %ld0, ptr %ptr0 1553be3b33eSvporpo store float %ld1, ptr %ptr1 1563be3b33eSvporpo ret void 1573be3b33eSvporpo} 1583be3b33eSvporpo 1593be3b33eSvporpodeclare void @foo() 1603be3b33eSvporpodefine void @cant_vectorize_seeds(ptr %ptr) { 1613be3b33eSvporpo; CHECK-LABEL: define void @cant_vectorize_seeds( 1623be3b33eSvporpo; CHECK-SAME: ptr [[PTR:%.*]]) { 1633be3b33eSvporpo; CHECK-NEXT: [[PTR0:%.*]] = getelementptr float, ptr [[PTR]], i32 0 1643be3b33eSvporpo; CHECK-NEXT: [[PTR1:%.*]] = getelementptr float, ptr [[PTR]], i32 1 1653be3b33eSvporpo; CHECK-NEXT: [[LD0:%.*]] = load float, ptr [[PTR0]], align 4 1663be3b33eSvporpo; CHECK-NEXT: [[LD1:%.*]] = load float, ptr [[PTR1]], align 4 1673be3b33eSvporpo; CHECK-NEXT: store float [[LD1]], ptr [[PTR1]], align 4 1683be3b33eSvporpo; CHECK-NEXT: call void @foo() 1693be3b33eSvporpo; CHECK-NEXT: store float [[LD1]], ptr [[PTR1]], align 4 1703be3b33eSvporpo; CHECK-NEXT: ret void 1713be3b33eSvporpo; 1723be3b33eSvporpo %ptr0 = getelementptr float, ptr %ptr, i32 0 1733be3b33eSvporpo %ptr1 = getelementptr float, ptr %ptr, i32 1 1743be3b33eSvporpo %ld0 = load float, ptr %ptr0 1753be3b33eSvporpo %ld1 = load float, ptr %ptr1 1763be3b33eSvporpo store float %ld1, ptr %ptr1 1773be3b33eSvporpo call void @foo() ; This call blocks scheduling of the store seeds. 1783be3b33eSvporpo store float %ld1, ptr %ptr1 1793be3b33eSvporpo ret void 1803be3b33eSvporpo} 1813be3b33eSvporpo 1821be98277Svporpodefine void @pack_vectors(ptr %ptr, ptr %ptr2) { 1831be98277Svporpo; CHECK-LABEL: define void @pack_vectors( 1841be98277Svporpo; CHECK-SAME: ptr [[PTR:%.*]], ptr [[PTR2:%.*]]) { 1851be98277Svporpo; CHECK-NEXT: [[PTR0:%.*]] = getelementptr <2 x float>, ptr [[PTR]], i32 0 1861be98277Svporpo; CHECK-NEXT: [[LD0:%.*]] = load <2 x float>, ptr [[PTR0]], align 8 1871be98277Svporpo; CHECK-NEXT: [[LD1:%.*]] = load float, ptr [[PTR2]], align 4 1881be98277Svporpo; CHECK-NEXT: [[VPACK:%.*]] = extractelement <2 x float> [[LD0]], i32 0 1891be98277Svporpo; CHECK-NEXT: [[VPACK1:%.*]] = insertelement <3 x float> poison, float [[VPACK]], i32 0 1901be98277Svporpo; CHECK-NEXT: [[VPACK2:%.*]] = extractelement <2 x float> [[LD0]], i32 1 1911be98277Svporpo; CHECK-NEXT: [[VPACK3:%.*]] = insertelement <3 x float> [[VPACK1]], float [[VPACK2]], i32 1 1921be98277Svporpo; CHECK-NEXT: [[PACK:%.*]] = insertelement <3 x float> [[VPACK3]], float [[LD1]], i32 2 1931be98277Svporpo; CHECK-NEXT: store <3 x float> [[PACK]], ptr [[PTR0]], align 8 1941be98277Svporpo; CHECK-NEXT: ret void 1951be98277Svporpo; 1961be98277Svporpo %ptr0 = getelementptr <2 x float>, ptr %ptr, i32 0 1971be98277Svporpo %ptr1 = getelementptr float, ptr %ptr, i32 2 1981be98277Svporpo %ld0 = load <2 x float>, ptr %ptr0 1991be98277Svporpo %ld1 = load float, ptr %ptr2 2001be98277Svporpo store <2 x float> %ld0, ptr %ptr0 2011be98277Svporpo store float %ld1, ptr %ptr1 2021be98277Svporpo ret void 2031be98277Svporpo} 204e902c696Svporpo 205e902c696Svporpodefine void @diamond(ptr %ptr) { 206e902c696Svporpo; CHECK-LABEL: define void @diamond( 207e902c696Svporpo; CHECK-SAME: ptr [[PTR:%.*]]) { 208e902c696Svporpo; CHECK-NEXT: [[PTR0:%.*]] = getelementptr float, ptr [[PTR]], i32 0 209e902c696Svporpo; CHECK-NEXT: [[VECL:%.*]] = load <2 x float>, ptr [[PTR0]], align 4 210e902c696Svporpo; CHECK-NEXT: [[VEC:%.*]] = fsub <2 x float> [[VECL]], [[VECL]] 211e902c696Svporpo; CHECK-NEXT: store <2 x float> [[VEC]], ptr [[PTR0]], align 4 212e902c696Svporpo; CHECK-NEXT: ret void 213e902c696Svporpo; 214e902c696Svporpo %ptr0 = getelementptr float, ptr %ptr, i32 0 215e902c696Svporpo %ptr1 = getelementptr float, ptr %ptr, i32 1 216e902c696Svporpo %ld0 = load float, ptr %ptr0 217e902c696Svporpo %ld1 = load float, ptr %ptr1 218e902c696Svporpo %sub0 = fsub float %ld0, %ld0 219e902c696Svporpo %sub1 = fsub float %ld1, %ld1 220e902c696Svporpo store float %sub0, ptr %ptr0 221e902c696Svporpo store float %sub1, ptr %ptr1 222e902c696Svporpo ret void 223e902c696Svporpo} 22487e4b681Svporpo 22587e4b681Svporpodefine void @diamondWithShuffle(ptr %ptr) { 22687e4b681Svporpo; CHECK-LABEL: define void @diamondWithShuffle( 22787e4b681Svporpo; CHECK-SAME: ptr [[PTR:%.*]]) { 22887e4b681Svporpo; CHECK-NEXT: [[PTR0:%.*]] = getelementptr float, ptr [[PTR]], i32 0 22987e4b681Svporpo; CHECK-NEXT: [[VECL:%.*]] = load <2 x float>, ptr [[PTR0]], align 4 23087e4b681Svporpo; CHECK-NEXT: [[VSHUF:%.*]] = shufflevector <2 x float> [[VECL]], <2 x float> [[VECL]], <2 x i32> <i32 1, i32 0> 23187e4b681Svporpo; CHECK-NEXT: [[VEC:%.*]] = fsub <2 x float> [[VECL]], [[VSHUF]] 23287e4b681Svporpo; CHECK-NEXT: store <2 x float> [[VEC]], ptr [[PTR0]], align 4 23387e4b681Svporpo; CHECK-NEXT: ret void 23487e4b681Svporpo; 23587e4b681Svporpo %ptr0 = getelementptr float, ptr %ptr, i32 0 23687e4b681Svporpo %ptr1 = getelementptr float, ptr %ptr, i32 1 23787e4b681Svporpo %ld0 = load float, ptr %ptr0 23887e4b681Svporpo %ld1 = load float, ptr %ptr1 23987e4b681Svporpo %sub0 = fsub float %ld0, %ld1 24087e4b681Svporpo %sub1 = fsub float %ld1, %ld0 24187e4b681Svporpo store float %sub0, ptr %ptr0 24287e4b681Svporpo store float %sub1, ptr %ptr1 24387e4b681Svporpo ret void 24487e4b681Svporpo} 245fd087135Svporpo 246fd087135Svporpodefine void @diamondMultiInput(ptr %ptr, ptr %ptrX) { 247fd087135Svporpo; CHECK-LABEL: define void @diamondMultiInput( 248fd087135Svporpo; CHECK-SAME: ptr [[PTR:%.*]], ptr [[PTRX:%.*]]) { 249fd087135Svporpo; CHECK-NEXT: [[PTR0:%.*]] = getelementptr float, ptr [[PTR]], i32 0 250fd087135Svporpo; CHECK-NEXT: [[VECL:%.*]] = load <2 x float>, ptr [[PTR0]], align 4 251fd087135Svporpo; CHECK-NEXT: [[LDX:%.*]] = load float, ptr [[PTRX]], align 4 252fd087135Svporpo; CHECK-NEXT: [[VINS:%.*]] = insertelement <2 x float> poison, float [[LDX]], i32 0 253fd087135Svporpo; CHECK-NEXT: [[VEXT:%.*]] = extractelement <2 x float> [[VECL]], i32 0 254fd087135Svporpo; CHECK-NEXT: [[VINS1:%.*]] = insertelement <2 x float> [[VINS]], float [[VEXT]], i32 1 255fd087135Svporpo; CHECK-NEXT: [[VEC:%.*]] = fsub <2 x float> [[VECL]], [[VINS1]] 256fd087135Svporpo; CHECK-NEXT: store <2 x float> [[VEC]], ptr [[PTR0]], align 4 257fd087135Svporpo; CHECK-NEXT: ret void 258fd087135Svporpo; 259fd087135Svporpo %ptr0 = getelementptr float, ptr %ptr, i32 0 260fd087135Svporpo %ptr1 = getelementptr float, ptr %ptr, i32 1 261fd087135Svporpo %ld0 = load float, ptr %ptr0 262fd087135Svporpo %ld1 = load float, ptr %ptr1 263fd087135Svporpo 264fd087135Svporpo %ldX = load float, ptr %ptrX 265fd087135Svporpo 266fd087135Svporpo %sub0 = fsub float %ld0, %ldX 267fd087135Svporpo %sub1 = fsub float %ld1, %ld0 268fd087135Svporpo store float %sub0, ptr %ptr0 269fd087135Svporpo store float %sub1, ptr %ptr1 270fd087135Svporpo ret void 271fd087135Svporpo} 272*d2234ca1Svporpo 273*d2234ca1Svporpodefine void @diamondWithConstantVector(ptr %ptr) { 274*d2234ca1Svporpo; CHECK-LABEL: define void @diamondWithConstantVector( 275*d2234ca1Svporpo; CHECK-SAME: ptr [[PTR:%.*]]) { 276*d2234ca1Svporpo; CHECK-NEXT: [[GEPA0:%.*]] = getelementptr i32, ptr [[PTR]], i64 0 277*d2234ca1Svporpo; CHECK-NEXT: [[GEPB0:%.*]] = getelementptr i32, ptr [[PTR]], i64 10 278*d2234ca1Svporpo; CHECK-NEXT: store <2 x i32> zeroinitializer, ptr [[GEPA0]], align 4 279*d2234ca1Svporpo; CHECK-NEXT: store <2 x i32> zeroinitializer, ptr [[GEPB0]], align 4 280*d2234ca1Svporpo; CHECK-NEXT: ret void 281*d2234ca1Svporpo; 282*d2234ca1Svporpo %gepA0 = getelementptr i32, ptr %ptr, i64 0 283*d2234ca1Svporpo %gepA1 = getelementptr i32, ptr %ptr, i64 1 284*d2234ca1Svporpo 285*d2234ca1Svporpo %gepB0 = getelementptr i32, ptr %ptr, i64 10 286*d2234ca1Svporpo %gepB1 = getelementptr i32, ptr %ptr, i64 11 287*d2234ca1Svporpo 288*d2234ca1Svporpo %zext0 = zext i16 0 to i32 289*d2234ca1Svporpo %zext1 = zext i16 0 to i32 290*d2234ca1Svporpo 291*d2234ca1Svporpo store i32 %zext0, ptr %gepA0 292*d2234ca1Svporpo store i32 %zext1, ptr %gepA1 293*d2234ca1Svporpo 294*d2234ca1Svporpo %orB0 = or i32 0, %zext0 295*d2234ca1Svporpo %orB1 = or i32 0, %zext1 296*d2234ca1Svporpo store i32 %orB0, ptr %gepB0 297*d2234ca1Svporpo store i32 %orB1, ptr %gepB1 298*d2234ca1Svporpo ret void 299*d2234ca1Svporpo} 300