@@ -3910,8 +3910,8 @@ define void @wrappingindvars2(i8 %t, i32 %len, ptr %A) {
39103910; IND-NEXT: [[N_VEC:%.*]] = and i32 [[TMP0]], 510
39113911; IND-NEXT: [[DOTCAST:%.*]] = trunc i32 [[N_VEC]] to i8
39123912; IND-NEXT: [[IND_END:%.*]] = add i8 [[DOTCAST]], [[T]]
3913- ; IND-NEXT: [[EXT_MUL5 :%.*]] = add nuw nsw i32 [[N_VEC]], [[EXT]]
3914- ; IND-NEXT: [[IND_END1:%.*]] = shl nuw nsw i32 [[EXT_MUL5 ]], 2
3913+ ; IND-NEXT: [[TMP10 :%.*]] = shl nuw nsw i32 [[N_VEC]], 2
3914+ ; IND-NEXT: [[IND_END1:%.*]] = add nuw nsw i32 [[EXT_MUL ]], [[TMP10]]
39153915; IND-NEXT: [[DOTSPLATINSERT:%.*]] = insertelement <2 x i32> poison, i32 [[EXT_MUL]], i64 0
39163916; IND-NEXT: [[DOTSPLAT:%.*]] = shufflevector <2 x i32> [[DOTSPLATINSERT]], <2 x i32> poison, <2 x i32> zeroinitializer
39173917; IND-NEXT: [[INDUCTION:%.*]] = add nuw nsw <2 x i32> [[DOTSPLAT]], <i32 0, i32 4>
@@ -3921,13 +3921,13 @@ define void @wrappingindvars2(i8 %t, i32 %len, ptr %A) {
39213921; IND-NEXT: [[VEC_IND:%.*]] = phi <2 x i32> [ [[INDUCTION]], [[VECTOR_PH]] ], [ [[VEC_IND_NEXT:%.*]], [[VECTOR_BODY]] ]
39223922; IND-NEXT: [[DOTCAST4:%.*]] = trunc i32 [[INDEX]] to i8
39233923; IND-NEXT: [[OFFSET_IDX:%.*]] = add i8 [[DOTCAST4]], [[T]]
3924- ; IND-NEXT: [[TMP10 :%.*]] = sext i8 [[OFFSET_IDX]] to i64
3925- ; IND-NEXT: [[TMP11 :%.*]] = getelementptr inbounds i32, ptr [[A:%.*]], i64 [[TMP10 ]]
3926- ; IND-NEXT: store <2 x i32> [[VEC_IND]], ptr [[TMP11 ]], align 4
3924+ ; IND-NEXT: [[TMP11 :%.*]] = sext i8 [[OFFSET_IDX]] to i64
3925+ ; IND-NEXT: [[TMP12 :%.*]] = getelementptr inbounds i32, ptr [[A:%.*]], i64 [[TMP11 ]]
3926+ ; IND-NEXT: store <2 x i32> [[VEC_IND]], ptr [[TMP12 ]], align 4
39273927; IND-NEXT: [[INDEX_NEXT]] = add nuw i32 [[INDEX]], 2
39283928; IND-NEXT: [[VEC_IND_NEXT]] = add <2 x i32> [[VEC_IND]], <i32 8, i32 8>
3929- ; IND-NEXT: [[TMP12 :%.*]] = icmp eq i32 [[INDEX_NEXT]], [[N_VEC]]
3930- ; IND-NEXT: br i1 [[TMP12 ]], label [[MIDDLE_BLOCK:%.*]], label [[VECTOR_BODY]], !llvm.loop [[LOOP38:![0-9]+]]
3929+ ; IND-NEXT: [[TMP13 :%.*]] = icmp eq i32 [[INDEX_NEXT]], [[N_VEC]]
3930+ ; IND-NEXT: br i1 [[TMP13 ]], label [[MIDDLE_BLOCK:%.*]], label [[VECTOR_BODY]], !llvm.loop [[LOOP38:![0-9]+]]
39313931; IND: middle.block:
39323932; IND-NEXT: [[CMP_N:%.*]] = icmp eq i32 [[TMP0]], [[N_VEC]]
39333933; IND-NEXT: br i1 [[CMP_N]], label [[EXIT_LOOPEXIT:%.*]], label [[SCALAR_PH]]
@@ -3940,8 +3940,8 @@ define void @wrappingindvars2(i8 %t, i32 %len, ptr %A) {
39403940; IND-NEXT: [[IDX:%.*]] = phi i8 [ [[IDX_INC:%.*]], [[LOOP]] ], [ [[BC_RESUME_VAL]], [[SCALAR_PH]] ]
39413941; IND-NEXT: [[SPHI:%.*]] = phi i32 [ [[MUL:%.*]], [[LOOP]] ], [ [[BC_RESUME_VAL2]], [[SCALAR_PH]] ]
39423942; IND-NEXT: [[IDX_B:%.*]] = phi i32 [ [[IDX_B_INC:%.*]], [[LOOP]] ], [ [[BC_RESUME_VAL3]], [[SCALAR_PH]] ]
3943- ; IND-NEXT: [[TMP13 :%.*]] = sext i8 [[IDX]] to i64
3944- ; IND-NEXT: [[PTR:%.*]] = getelementptr inbounds i32, ptr [[A]], i64 [[TMP13 ]]
3943+ ; IND-NEXT: [[TMP14 :%.*]] = sext i8 [[IDX]] to i64
3944+ ; IND-NEXT: [[PTR:%.*]] = getelementptr inbounds i32, ptr [[A]], i64 [[TMP14 ]]
39453945; IND-NEXT: store i32 [[SPHI]], ptr [[PTR]], align 4
39463946; IND-NEXT: [[IDX_INC]] = add i8 [[IDX]], 1
39473947; IND-NEXT: [[IDX_INC_EXT:%.*]] = zext i8 [[IDX_INC]] to i32
@@ -3979,8 +3979,8 @@ define void @wrappingindvars2(i8 %t, i32 %len, ptr %A) {
39793979; UNROLL-NEXT: [[N_VEC:%.*]] = and i32 [[TMP0]], 508
39803980; UNROLL-NEXT: [[DOTCAST:%.*]] = trunc i32 [[N_VEC]] to i8
39813981; UNROLL-NEXT: [[IND_END:%.*]] = add i8 [[DOTCAST]], [[T]]
3982- ; UNROLL-NEXT: [[EXT_MUL6 :%.*]] = add nuw nsw i32 [[N_VEC]], [[EXT]]
3983- ; UNROLL-NEXT: [[IND_END1:%.*]] = shl nuw nsw i32 [[EXT_MUL6 ]], 2
3982+ ; UNROLL-NEXT: [[TMP10 :%.*]] = shl nuw nsw i32 [[N_VEC]], 2
3983+ ; UNROLL-NEXT: [[IND_END1:%.*]] = add nuw nsw i32 [[EXT_MUL ]], [[TMP10]]
39843984; UNROLL-NEXT: [[DOTSPLATINSERT:%.*]] = insertelement <2 x i32> poison, i32 [[EXT_MUL]], i64 0
39853985; UNROLL-NEXT: [[DOTSPLAT:%.*]] = shufflevector <2 x i32> [[DOTSPLATINSERT]], <2 x i32> poison, <2 x i32> zeroinitializer
39863986; UNROLL-NEXT: [[INDUCTION:%.*]] = add nuw nsw <2 x i32> [[DOTSPLAT]], <i32 0, i32 4>
@@ -3991,15 +3991,15 @@ define void @wrappingindvars2(i8 %t, i32 %len, ptr %A) {
39913991; UNROLL-NEXT: [[STEP_ADD:%.*]] = add <2 x i32> [[VEC_IND]], <i32 8, i32 8>
39923992; UNROLL-NEXT: [[DOTCAST5:%.*]] = trunc i32 [[INDEX]] to i8
39933993; UNROLL-NEXT: [[OFFSET_IDX:%.*]] = add i8 [[DOTCAST5]], [[T]]
3994- ; UNROLL-NEXT: [[TMP10 :%.*]] = sext i8 [[OFFSET_IDX]] to i64
3995- ; UNROLL-NEXT: [[TMP11 :%.*]] = getelementptr inbounds i32, ptr [[A:%.*]], i64 [[TMP10 ]]
3996- ; UNROLL-NEXT: [[TMP12 :%.*]] = getelementptr inbounds i8, ptr [[TMP11 ]], i64 8
3997- ; UNROLL-NEXT: store <2 x i32> [[VEC_IND]], ptr [[TMP11 ]], align 4
3998- ; UNROLL-NEXT: store <2 x i32> [[STEP_ADD]], ptr [[TMP12 ]], align 4
3994+ ; UNROLL-NEXT: [[TMP11 :%.*]] = sext i8 [[OFFSET_IDX]] to i64
3995+ ; UNROLL-NEXT: [[TMP12 :%.*]] = getelementptr inbounds i32, ptr [[A:%.*]], i64 [[TMP11 ]]
3996+ ; UNROLL-NEXT: [[TMP13 :%.*]] = getelementptr inbounds i8, ptr [[TMP12 ]], i64 8
3997+ ; UNROLL-NEXT: store <2 x i32> [[VEC_IND]], ptr [[TMP12 ]], align 4
3998+ ; UNROLL-NEXT: store <2 x i32> [[STEP_ADD]], ptr [[TMP13 ]], align 4
39993999; UNROLL-NEXT: [[INDEX_NEXT]] = add nuw i32 [[INDEX]], 4
40004000; UNROLL-NEXT: [[VEC_IND_NEXT]] = add <2 x i32> [[VEC_IND]], <i32 16, i32 16>
4001- ; UNROLL-NEXT: [[TMP13 :%.*]] = icmp eq i32 [[INDEX_NEXT]], [[N_VEC]]
4002- ; UNROLL-NEXT: br i1 [[TMP13 ]], label [[MIDDLE_BLOCK:%.*]], label [[VECTOR_BODY]], !llvm.loop [[LOOP38:![0-9]+]]
4001+ ; UNROLL-NEXT: [[TMP14 :%.*]] = icmp eq i32 [[INDEX_NEXT]], [[N_VEC]]
4002+ ; UNROLL-NEXT: br i1 [[TMP14 ]], label [[MIDDLE_BLOCK:%.*]], label [[VECTOR_BODY]], !llvm.loop [[LOOP38:![0-9]+]]
40034003; UNROLL: middle.block:
40044004; UNROLL-NEXT: [[CMP_N:%.*]] = icmp eq i32 [[TMP0]], [[N_VEC]]
40054005; UNROLL-NEXT: br i1 [[CMP_N]], label [[EXIT_LOOPEXIT:%.*]], label [[SCALAR_PH]]
@@ -4012,8 +4012,8 @@ define void @wrappingindvars2(i8 %t, i32 %len, ptr %A) {
40124012; UNROLL-NEXT: [[IDX:%.*]] = phi i8 [ [[IDX_INC:%.*]], [[LOOP]] ], [ [[BC_RESUME_VAL]], [[SCALAR_PH]] ]
40134013; UNROLL-NEXT: [[SPHI:%.*]] = phi i32 [ [[MUL:%.*]], [[LOOP]] ], [ [[BC_RESUME_VAL2]], [[SCALAR_PH]] ]
40144014; UNROLL-NEXT: [[IDX_B:%.*]] = phi i32 [ [[IDX_B_INC:%.*]], [[LOOP]] ], [ [[BC_RESUME_VAL3]], [[SCALAR_PH]] ]
4015- ; UNROLL-NEXT: [[TMP14 :%.*]] = sext i8 [[IDX]] to i64
4016- ; UNROLL-NEXT: [[PTR:%.*]] = getelementptr inbounds i32, ptr [[A]], i64 [[TMP14 ]]
4015+ ; UNROLL-NEXT: [[TMP15 :%.*]] = sext i8 [[IDX]] to i64
4016+ ; UNROLL-NEXT: [[PTR:%.*]] = getelementptr inbounds i32, ptr [[A]], i64 [[TMP15 ]]
40174017; UNROLL-NEXT: store i32 [[SPHI]], ptr [[PTR]], align 4
40184018; UNROLL-NEXT: [[IDX_INC]] = add i8 [[IDX]], 1
40194019; UNROLL-NEXT: [[IDX_INC_EXT:%.*]] = zext i8 [[IDX_INC]] to i32
@@ -4129,8 +4129,8 @@ define void @wrappingindvars2(i8 %t, i32 %len, ptr %A) {
41294129; INTERLEAVE-NEXT: [[N_VEC:%.*]] = and i32 [[TMP0]], 504
41304130; INTERLEAVE-NEXT: [[DOTCAST:%.*]] = trunc i32 [[N_VEC]] to i8
41314131; INTERLEAVE-NEXT: [[IND_END:%.*]] = add i8 [[DOTCAST]], [[T]]
4132- ; INTERLEAVE-NEXT: [[EXT_MUL6 :%.*]] = add nuw nsw i32 [[N_VEC]], [[EXT]]
4133- ; INTERLEAVE-NEXT: [[IND_END1:%.*]] = shl nuw nsw i32 [[EXT_MUL6 ]], 2
4132+ ; INTERLEAVE-NEXT: [[TMP10 :%.*]] = shl nuw nsw i32 [[N_VEC]], 2
4133+ ; INTERLEAVE-NEXT: [[IND_END1:%.*]] = add nuw nsw i32 [[EXT_MUL ]], [[TMP10]]
41344134; INTERLEAVE-NEXT: [[DOTSPLATINSERT:%.*]] = insertelement <4 x i32> poison, i32 [[EXT_MUL]], i64 0
41354135; INTERLEAVE-NEXT: [[DOTSPLAT:%.*]] = shufflevector <4 x i32> [[DOTSPLATINSERT]], <4 x i32> poison, <4 x i32> zeroinitializer
41364136; INTERLEAVE-NEXT: [[INDUCTION:%.*]] = add nuw nsw <4 x i32> [[DOTSPLAT]], <i32 0, i32 4, i32 8, i32 12>
@@ -4141,15 +4141,15 @@ define void @wrappingindvars2(i8 %t, i32 %len, ptr %A) {
41414141; INTERLEAVE-NEXT: [[STEP_ADD:%.*]] = add <4 x i32> [[VEC_IND]], <i32 16, i32 16, i32 16, i32 16>
41424142; INTERLEAVE-NEXT: [[DOTCAST5:%.*]] = trunc i32 [[INDEX]] to i8
41434143; INTERLEAVE-NEXT: [[OFFSET_IDX:%.*]] = add i8 [[DOTCAST5]], [[T]]
4144- ; INTERLEAVE-NEXT: [[TMP10 :%.*]] = sext i8 [[OFFSET_IDX]] to i64
4145- ; INTERLEAVE-NEXT: [[TMP11 :%.*]] = getelementptr inbounds i32, ptr [[A:%.*]], i64 [[TMP10 ]]
4146- ; INTERLEAVE-NEXT: [[TMP12 :%.*]] = getelementptr inbounds i8, ptr [[TMP11 ]], i64 16
4147- ; INTERLEAVE-NEXT: store <4 x i32> [[VEC_IND]], ptr [[TMP11 ]], align 4
4148- ; INTERLEAVE-NEXT: store <4 x i32> [[STEP_ADD]], ptr [[TMP12 ]], align 4
4144+ ; INTERLEAVE-NEXT: [[TMP11 :%.*]] = sext i8 [[OFFSET_IDX]] to i64
4145+ ; INTERLEAVE-NEXT: [[TMP12 :%.*]] = getelementptr inbounds i32, ptr [[A:%.*]], i64 [[TMP11 ]]
4146+ ; INTERLEAVE-NEXT: [[TMP13 :%.*]] = getelementptr inbounds i8, ptr [[TMP12 ]], i64 16
4147+ ; INTERLEAVE-NEXT: store <4 x i32> [[VEC_IND]], ptr [[TMP12 ]], align 4
4148+ ; INTERLEAVE-NEXT: store <4 x i32> [[STEP_ADD]], ptr [[TMP13 ]], align 4
41494149; INTERLEAVE-NEXT: [[INDEX_NEXT]] = add nuw i32 [[INDEX]], 8
41504150; INTERLEAVE-NEXT: [[VEC_IND_NEXT]] = add <4 x i32> [[VEC_IND]], <i32 32, i32 32, i32 32, i32 32>
4151- ; INTERLEAVE-NEXT: [[TMP13 :%.*]] = icmp eq i32 [[INDEX_NEXT]], [[N_VEC]]
4152- ; INTERLEAVE-NEXT: br i1 [[TMP13 ]], label [[MIDDLE_BLOCK:%.*]], label [[VECTOR_BODY]], !llvm.loop [[LOOP38:![0-9]+]]
4151+ ; INTERLEAVE-NEXT: [[TMP14 :%.*]] = icmp eq i32 [[INDEX_NEXT]], [[N_VEC]]
4152+ ; INTERLEAVE-NEXT: br i1 [[TMP14 ]], label [[MIDDLE_BLOCK:%.*]], label [[VECTOR_BODY]], !llvm.loop [[LOOP38:![0-9]+]]
41534153; INTERLEAVE: middle.block:
41544154; INTERLEAVE-NEXT: [[CMP_N:%.*]] = icmp eq i32 [[TMP0]], [[N_VEC]]
41554155; INTERLEAVE-NEXT: br i1 [[CMP_N]], label [[EXIT_LOOPEXIT:%.*]], label [[SCALAR_PH]]
@@ -4162,8 +4162,8 @@ define void @wrappingindvars2(i8 %t, i32 %len, ptr %A) {
41624162; INTERLEAVE-NEXT: [[IDX:%.*]] = phi i8 [ [[IDX_INC:%.*]], [[LOOP]] ], [ [[BC_RESUME_VAL]], [[SCALAR_PH]] ]
41634163; INTERLEAVE-NEXT: [[SPHI:%.*]] = phi i32 [ [[MUL:%.*]], [[LOOP]] ], [ [[BC_RESUME_VAL2]], [[SCALAR_PH]] ]
41644164; INTERLEAVE-NEXT: [[IDX_B:%.*]] = phi i32 [ [[IDX_B_INC:%.*]], [[LOOP]] ], [ [[BC_RESUME_VAL3]], [[SCALAR_PH]] ]
4165- ; INTERLEAVE-NEXT: [[TMP14 :%.*]] = sext i8 [[IDX]] to i64
4166- ; INTERLEAVE-NEXT: [[PTR:%.*]] = getelementptr inbounds i32, ptr [[A]], i64 [[TMP14 ]]
4165+ ; INTERLEAVE-NEXT: [[TMP15 :%.*]] = sext i8 [[IDX]] to i64
4166+ ; INTERLEAVE-NEXT: [[PTR:%.*]] = getelementptr inbounds i32, ptr [[A]], i64 [[TMP15 ]]
41674167; INTERLEAVE-NEXT: store i32 [[SPHI]], ptr [[PTR]], align 4
41684168; INTERLEAVE-NEXT: [[IDX_INC]] = add i8 [[IDX]], 1
41694169; INTERLEAVE-NEXT: [[IDX_INC_EXT:%.*]] = zext i8 [[IDX_INC]] to i32
0 commit comments