@@ -17,23 +17,23 @@ define void @pr63602_1(ptr %arr) {
17
17
; CHECK: vector.body:
18
18
; CHECK-NEXT: [[INDEX:%.*]] = phi i64 [ 0, [[VECTOR_PH]] ], [ [[INDEX_NEXT:%.*]], [[VECTOR_BODY]] ]
19
19
; CHECK-NEXT: [[TMP0:%.*]] = mul i64 [[INDEX]], 3
20
- ; CHECK-NEXT: [[OFFSET_IDX:%.*]] = add i64 4 , [[TMP0]]
20
+ ; CHECK-NEXT: [[OFFSET_IDX:%.*]] = add i64 1 , [[TMP0]]
21
21
; CHECK-NEXT: [[TMP1:%.*]] = add i64 [[OFFSET_IDX]], 0
22
- ; CHECK-NEXT: [[TMP2:%.*]] = add i64 [[OFFSET_IDX ]], 3
23
- ; CHECK-NEXT: [[TMP3 :%.*]] = add i64 [[OFFSET_IDX]], 6
24
- ; CHECK-NEXT: [[TMP4 :%.*]] = add i64 [[OFFSET_IDX ]], 9
25
- ; CHECK-NEXT: [[TMP5 :%.*]] = mul i64 [[INDEX ]], 3
26
- ; CHECK-NEXT: [[OFFSET_IDX2 :%.*]] = add i64 1, [[TMP5]]
27
- ; CHECK-NEXT: [[TMP6:%.*]] = add i64 [[OFFSET_IDX2]], 0
28
- ; CHECK-NEXT: [[TMP7:%.*]] = add nuw nsw i64 [[TMP6 ]], 4
22
+ ; CHECK-NEXT: [[TMP2:%.*]] = mul i64 [[INDEX ]], 3
23
+ ; CHECK-NEXT: [[OFFSET_IDX2 :%.*]] = add i64 4, [[TMP2]]
24
+ ; CHECK-NEXT: [[TMP3 :%.*]] = add i64 [[OFFSET_IDX2 ]], 0
25
+ ; CHECK-NEXT: [[TMP4 :%.*]] = add i64 [[OFFSET_IDX2 ]], 3
26
+ ; CHECK-NEXT: [[TMP5 :%.*]] = add i64 [[OFFSET_IDX2]], 6
27
+ ; CHECK-NEXT: [[TMP6:%.*]] = add i64 [[OFFSET_IDX2]], 9
28
+ ; CHECK-NEXT: [[TMP7:%.*]] = add nuw nsw i64 [[TMP1 ]], 4
29
29
; CHECK-NEXT: [[TMP8:%.*]] = getelementptr inbounds i32, ptr [[ARR]], i64 [[TMP7]]
30
30
; CHECK-NEXT: [[TMP9:%.*]] = getelementptr inbounds i32, ptr [[TMP8]], i32 0
31
31
; CHECK-NEXT: [[WIDE_VEC:%.*]] = load <12 x i32>, ptr [[TMP9]], align 4
32
32
; CHECK-NEXT: [[STRIDED_VEC:%.*]] = shufflevector <12 x i32> [[WIDE_VEC]], <12 x i32> poison, <4 x i32> <i32 0, i32 3, i32 6, i32 9>
33
- ; CHECK-NEXT: [[TMP10:%.*]] = getelementptr inbounds i32, ptr [[ARR]], i64 [[TMP1 ]]
34
- ; CHECK-NEXT: [[TMP11:%.*]] = getelementptr inbounds i32, ptr [[ARR]], i64 [[TMP2 ]]
35
- ; CHECK-NEXT: [[TMP12:%.*]] = getelementptr inbounds i32, ptr [[ARR]], i64 [[TMP3 ]]
36
- ; CHECK-NEXT: [[TMP13:%.*]] = getelementptr inbounds i32, ptr [[ARR]], i64 [[TMP4 ]]
33
+ ; CHECK-NEXT: [[TMP10:%.*]] = getelementptr inbounds i32, ptr [[ARR]], i64 [[TMP3 ]]
34
+ ; CHECK-NEXT: [[TMP11:%.*]] = getelementptr inbounds i32, ptr [[ARR]], i64 [[TMP4 ]]
35
+ ; CHECK-NEXT: [[TMP12:%.*]] = getelementptr inbounds i32, ptr [[ARR]], i64 [[TMP5 ]]
36
+ ; CHECK-NEXT: [[TMP13:%.*]] = getelementptr inbounds i32, ptr [[ARR]], i64 [[TMP6 ]]
37
37
; CHECK-NEXT: [[TMP14:%.*]] = extractelement <4 x i32> [[STRIDED_VEC]], i32 0
38
38
; CHECK-NEXT: store i32 [[TMP14]], ptr [[TMP10]], align 4
39
39
; CHECK-NEXT: [[TMP15:%.*]] = extractelement <4 x i32> [[STRIDED_VEC]], i32 1
@@ -42,7 +42,7 @@ define void @pr63602_1(ptr %arr) {
42
42
; CHECK-NEXT: store i32 [[TMP16]], ptr [[TMP12]], align 4
43
43
; CHECK-NEXT: [[TMP17:%.*]] = extractelement <4 x i32> [[STRIDED_VEC]], i32 3
44
44
; CHECK-NEXT: store i32 [[TMP17]], ptr [[TMP13]], align 4
45
- ; CHECK-NEXT: [[TMP18:%.*]] = add nuw nsw i64 [[TMP6 ]], 2
45
+ ; CHECK-NEXT: [[TMP18:%.*]] = add nuw nsw i64 [[TMP1 ]], 2
46
46
; CHECK-NEXT: [[TMP19:%.*]] = getelementptr inbounds i32, ptr [[ARR]], i64 [[TMP18]]
47
47
; CHECK-NEXT: [[TMP20:%.*]] = getelementptr inbounds i32, ptr [[TMP19]], i32 0
48
48
; CHECK-NEXT: [[WIDE_VEC3:%.*]] = load <12 x i32>, ptr [[TMP20]], align 4
@@ -131,26 +131,26 @@ define void @pr63602_2(ptr %arr) {
131
131
; CHECK: vector.body:
132
132
; CHECK-NEXT: [[INDEX:%.*]] = phi i64 [ 0, [[VECTOR_PH]] ], [ [[INDEX_NEXT:%.*]], [[VECTOR_BODY]] ]
133
133
; CHECK-NEXT: [[TMP0:%.*]] = mul i64 [[INDEX]], 3
134
- ; CHECK-NEXT: [[OFFSET_IDX:%.*]] = add i64 4 , [[TMP0]]
134
+ ; CHECK-NEXT: [[OFFSET_IDX:%.*]] = add i64 1 , [[TMP0]]
135
135
; CHECK-NEXT: [[TMP1:%.*]] = add i64 [[OFFSET_IDX]], 0
136
136
; CHECK-NEXT: [[TMP2:%.*]] = add i64 [[OFFSET_IDX]], 3
137
137
; CHECK-NEXT: [[TMP3:%.*]] = add i64 [[OFFSET_IDX]], 6
138
138
; CHECK-NEXT: [[TMP4:%.*]] = add i64 [[OFFSET_IDX]], 9
139
139
; CHECK-NEXT: [[TMP5:%.*]] = mul i64 [[INDEX]], 3
140
- ; CHECK-NEXT: [[OFFSET_IDX2:%.*]] = add i64 1 , [[TMP5]]
140
+ ; CHECK-NEXT: [[OFFSET_IDX2:%.*]] = add i64 4 , [[TMP5]]
141
141
; CHECK-NEXT: [[TMP6:%.*]] = add i64 [[OFFSET_IDX2]], 0
142
142
; CHECK-NEXT: [[TMP7:%.*]] = add i64 [[OFFSET_IDX2]], 3
143
143
; CHECK-NEXT: [[TMP8:%.*]] = add i64 [[OFFSET_IDX2]], 6
144
144
; CHECK-NEXT: [[TMP9:%.*]] = add i64 [[OFFSET_IDX2]], 9
145
- ; CHECK-NEXT: [[TMP10:%.*]] = add nuw nsw i64 [[TMP6 ]], 4
145
+ ; CHECK-NEXT: [[TMP10:%.*]] = add nuw nsw i64 [[TMP1 ]], 4
146
146
; CHECK-NEXT: [[TMP11:%.*]] = getelementptr inbounds i32, ptr [[ARR]], i64 [[TMP10]]
147
147
; CHECK-NEXT: [[TMP12:%.*]] = getelementptr inbounds i32, ptr [[TMP11]], i32 0
148
148
; CHECK-NEXT: [[WIDE_VEC:%.*]] = load <12 x i32>, ptr [[TMP12]], align 4
149
149
; CHECK-NEXT: [[STRIDED_VEC:%.*]] = shufflevector <12 x i32> [[WIDE_VEC]], <12 x i32> poison, <4 x i32> <i32 0, i32 3, i32 6, i32 9>
150
- ; CHECK-NEXT: [[TMP13:%.*]] = getelementptr inbounds i32, ptr [[ARR]], i64 [[TMP1 ]]
151
- ; CHECK-NEXT: [[TMP14:%.*]] = getelementptr inbounds i32, ptr [[ARR]], i64 [[TMP2 ]]
152
- ; CHECK-NEXT: [[TMP15:%.*]] = getelementptr inbounds i32, ptr [[ARR]], i64 [[TMP3 ]]
153
- ; CHECK-NEXT: [[TMP16:%.*]] = getelementptr inbounds i32, ptr [[ARR]], i64 [[TMP4 ]]
150
+ ; CHECK-NEXT: [[TMP13:%.*]] = getelementptr inbounds i32, ptr [[ARR]], i64 [[TMP6 ]]
151
+ ; CHECK-NEXT: [[TMP14:%.*]] = getelementptr inbounds i32, ptr [[ARR]], i64 [[TMP7 ]]
152
+ ; CHECK-NEXT: [[TMP15:%.*]] = getelementptr inbounds i32, ptr [[ARR]], i64 [[TMP8 ]]
153
+ ; CHECK-NEXT: [[TMP16:%.*]] = getelementptr inbounds i32, ptr [[ARR]], i64 [[TMP9 ]]
154
154
; CHECK-NEXT: [[TMP17:%.*]] = extractelement <4 x i32> [[STRIDED_VEC]], i32 0
155
155
; CHECK-NEXT: store i32 [[TMP17]], ptr [[TMP13]], align 4
156
156
; CHECK-NEXT: [[TMP18:%.*]] = extractelement <4 x i32> [[STRIDED_VEC]], i32 1
@@ -159,10 +159,10 @@ define void @pr63602_2(ptr %arr) {
159
159
; CHECK-NEXT: store i32 [[TMP19]], ptr [[TMP15]], align 4
160
160
; CHECK-NEXT: [[TMP20:%.*]] = extractelement <4 x i32> [[STRIDED_VEC]], i32 3
161
161
; CHECK-NEXT: store i32 [[TMP20]], ptr [[TMP16]], align 4
162
- ; CHECK-NEXT: [[TMP21:%.*]] = add nuw nsw i64 [[TMP6 ]], 2
163
- ; CHECK-NEXT: [[TMP22:%.*]] = add nuw nsw i64 [[TMP7 ]], 2
164
- ; CHECK-NEXT: [[TMP23:%.*]] = add nuw nsw i64 [[TMP8 ]], 2
165
- ; CHECK-NEXT: [[TMP24:%.*]] = add nuw nsw i64 [[TMP9 ]], 2
162
+ ; CHECK-NEXT: [[TMP21:%.*]] = add nuw nsw i64 [[TMP1 ]], 2
163
+ ; CHECK-NEXT: [[TMP22:%.*]] = add nuw nsw i64 [[TMP2 ]], 2
164
+ ; CHECK-NEXT: [[TMP23:%.*]] = add nuw nsw i64 [[TMP3 ]], 2
165
+ ; CHECK-NEXT: [[TMP24:%.*]] = add nuw nsw i64 [[TMP4 ]], 2
166
166
; CHECK-NEXT: [[TMP25:%.*]] = getelementptr inbounds i32, ptr [[ARR]], i64 [[TMP21]]
167
167
; CHECK-NEXT: [[TMP26:%.*]] = getelementptr inbounds i32, ptr [[ARR]], i64 [[TMP22]]
168
168
; CHECK-NEXT: [[TMP27:%.*]] = getelementptr inbounds i32, ptr [[ARR]], i64 [[TMP23]]
0 commit comments