@@ -117,52 +117,52 @@ define void @vector_reverse_i64(i64 %N, ptr %a, ptr %b) #0 {
117
117
; CHECK: vector.memcheck:
118
118
; CHECK-NEXT: [[TMP2:%.*]] = call i64 @llvm.vscale.i64()
119
119
; CHECK-NEXT: [[TMP3:%.*]] = shl i64 [[TMP2]], 7
120
- ; CHECK-NEXT: [[TMP7 :%.*]] = sub i64 [[B1]], [[A2]]
121
- ; CHECK-NEXT: [[DIFF_CHECK:%.*]] = icmp ult i64 [[TMP7 ]], [[TMP3]]
120
+ ; CHECK-NEXT: [[TMP4 :%.*]] = sub i64 [[B1]], [[A2]]
121
+ ; CHECK-NEXT: [[DIFF_CHECK:%.*]] = icmp ult i64 [[TMP4 ]], [[TMP3]]
122
122
; CHECK-NEXT: br i1 [[DIFF_CHECK]], label [[SCALAR_PH]], label [[VECTOR_PH:%.*]]
123
123
; CHECK: vector.ph:
124
- ; CHECK-NEXT: [[TMP8 :%.*]] = call i64 @llvm.vscale.i64()
125
- ; CHECK-NEXT: [[TMP9 :%.*]] = shl i64 [[TMP8 ]], 4
126
- ; CHECK-NEXT: [[N_MOD_VF:%.*]] = urem i64 [[N]], [[TMP9 ]]
124
+ ; CHECK-NEXT: [[TMP5 :%.*]] = call i64 @llvm.vscale.i64()
125
+ ; CHECK-NEXT: [[TMP6 :%.*]] = shl i64 [[TMP5 ]], 4
126
+ ; CHECK-NEXT: [[N_MOD_VF:%.*]] = urem i64 [[N]], [[TMP6 ]]
127
127
; CHECK-NEXT: [[N_VEC:%.*]] = sub i64 [[N]], [[N_MOD_VF]]
128
128
; CHECK-NEXT: br label [[VECTOR_BODY:%.*]]
129
129
; CHECK: vector.body:
130
130
; CHECK-NEXT: [[INDEX:%.*]] = phi i64 [ 0, [[VECTOR_PH]] ], [ [[INDEX_NEXT:%.*]], [[VECTOR_BODY]] ]
131
- ; CHECK-NEXT: [[TMP10 :%.*]] = xor i64 [[INDEX]], -1
132
- ; CHECK-NEXT: [[TMP11 :%.*]] = add i64 [[TMP10 ]], [[N]]
133
- ; CHECK-NEXT: [[TMP12 :%.*]] = getelementptr inbounds i64, ptr [[B]], i64 [[TMP11 ]]
134
- ; CHECK-NEXT: [[TMP13 :%.*]] = call i64 @llvm.vscale.i64()
135
- ; CHECK-NEXT: [[TMP14 :%.*]] = shl i64 [[TMP13 ]], 3
136
- ; CHECK-NEXT: [[TMP15 :%.*]] = sub i64 1, [[TMP14 ]]
137
- ; CHECK-NEXT: [[TMP16 :%.*]] = getelementptr inbounds i64, ptr [[TMP12 ]], i64 [[TMP15 ]]
138
- ; CHECK-NEXT: [[WIDE_LOAD:%.*]] = load <vscale x 8 x i64>, ptr [[TMP16 ]], align 8
139
- ; CHECK-NEXT: [[TMP17 :%.*]] = call i64 @llvm.vscale.i64()
140
- ; CHECK-NEXT: [[TMP18 :%.*]] = shl i64 [[TMP17 ]], 3
141
- ; CHECK-NEXT: [[TMP19 :%.*]] = sub i64 0, [[TMP18 ]]
142
- ; CHECK-NEXT: [[TMP20 :%.*]] = sub i64 1, [[TMP18 ]]
143
- ; CHECK-NEXT: [[TMP21 :%.*]] = getelementptr inbounds i64, ptr [[TMP12 ]], i64 [[TMP19 ]]
144
- ; CHECK-NEXT: [[TMP22 :%.*]] = getelementptr inbounds i64, ptr [[TMP21 ]], i64 [[TMP20 ]]
145
- ; CHECK-NEXT: [[WIDE_LOAD3:%.*]] = load <vscale x 8 x i64>, ptr [[TMP22 ]], align 8
146
- ; CHECK-NEXT: [[TMP23 :%.*]] = add <vscale x 8 x i64> [[WIDE_LOAD]], shufflevector (<vscale x 8 x i64> insertelement (<vscale x 8 x i64> poison, i64 1, i64 0), <vscale x 8 x i64> poison, <vscale x 8 x i32> zeroinitializer)
147
- ; CHECK-NEXT: [[TMP24 :%.*]] = add <vscale x 8 x i64> [[WIDE_LOAD3]], shufflevector (<vscale x 8 x i64> insertelement (<vscale x 8 x i64> poison, i64 1, i64 0), <vscale x 8 x i64> poison, <vscale x 8 x i32> zeroinitializer)
148
- ; CHECK-NEXT: [[TMP25 :%.*]] = getelementptr inbounds i64, ptr [[A]], i64 [[TMP11 ]]
149
- ; CHECK-NEXT: [[TMP26 :%.*]] = call i64 @llvm.vscale.i64()
150
- ; CHECK-NEXT: [[TMP27 :%.*]] = shl i64 [[TMP26 ]], 3
151
- ; CHECK-NEXT: [[TMP28 :%.*]] = sub i64 1, [[TMP27 ]]
152
- ; CHECK-NEXT: [[TMP29 :%.*]] = getelementptr inbounds i64, ptr [[TMP25 ]], i64 [[TMP28 ]]
153
- ; CHECK-NEXT: store <vscale x 8 x i64> [[TMP23 ]], ptr [[TMP29 ]], align 8
154
- ; CHECK-NEXT: [[TMP30 :%.*]] = call i64 @llvm.vscale.i64()
155
- ; CHECK-NEXT: [[TMP31 :%.*]] = shl i64 [[TMP30 ]], 3
156
- ; CHECK-NEXT: [[TMP32 :%.*]] = sub i64 0, [[TMP31 ]]
157
- ; CHECK-NEXT: [[TMP33 :%.*]] = sub i64 1, [[TMP31 ]]
158
- ; CHECK-NEXT: [[TMP34 :%.*]] = getelementptr inbounds i64, ptr [[TMP25 ]], i64 [[TMP32 ]]
159
- ; CHECK-NEXT: [[TMP35 :%.*]] = getelementptr inbounds i64, ptr [[TMP34 ]], i64 [[TMP33 ]]
160
- ; CHECK-NEXT: store <vscale x 8 x i64> [[TMP24 ]], ptr [[TMP35 ]], align 8
161
- ; CHECK-NEXT: [[TMP36 :%.*]] = call i64 @llvm.vscale.i64()
162
- ; CHECK-NEXT: [[TMP37 :%.*]] = shl i64 [[TMP36 ]], 4
163
- ; CHECK-NEXT: [[INDEX_NEXT]] = add nuw i64 [[INDEX]], [[TMP37 ]]
164
- ; CHECK-NEXT: [[TMP38 :%.*]] = icmp eq i64 [[INDEX_NEXT]], [[N_VEC]]
165
- ; CHECK-NEXT: br i1 [[TMP38 ]], label [[MIDDLE_BLOCK:%.*]], label [[VECTOR_BODY]], !llvm.loop [[LOOP5:![0-9]+]]
131
+ ; CHECK-NEXT: [[TMP7 :%.*]] = xor i64 [[INDEX]], -1
132
+ ; CHECK-NEXT: [[TMP8 :%.*]] = add i64 [[TMP7 ]], [[N]]
133
+ ; CHECK-NEXT: [[TMP9 :%.*]] = getelementptr inbounds i64, ptr [[B]], i64 [[TMP8 ]]
134
+ ; CHECK-NEXT: [[TMP10 :%.*]] = call i64 @llvm.vscale.i64()
135
+ ; CHECK-NEXT: [[TMP11 :%.*]] = shl i64 [[TMP10 ]], 3
136
+ ; CHECK-NEXT: [[TMP12 :%.*]] = sub i64 1, [[TMP11 ]]
137
+ ; CHECK-NEXT: [[TMP13 :%.*]] = getelementptr inbounds i64, ptr [[TMP9 ]], i64 [[TMP12 ]]
138
+ ; CHECK-NEXT: [[WIDE_LOAD:%.*]] = load <vscale x 8 x i64>, ptr [[TMP13 ]], align 8
139
+ ; CHECK-NEXT: [[TMP14 :%.*]] = call i64 @llvm.vscale.i64()
140
+ ; CHECK-NEXT: [[TMP15 :%.*]] = shl i64 [[TMP14 ]], 3
141
+ ; CHECK-NEXT: [[TMP16 :%.*]] = sub i64 0, [[TMP15 ]]
142
+ ; CHECK-NEXT: [[TMP17 :%.*]] = sub i64 1, [[TMP15 ]]
143
+ ; CHECK-NEXT: [[TMP18 :%.*]] = getelementptr inbounds i64, ptr [[TMP9 ]], i64 [[TMP16 ]]
144
+ ; CHECK-NEXT: [[TMP19 :%.*]] = getelementptr inbounds i64, ptr [[TMP18 ]], i64 [[TMP17 ]]
145
+ ; CHECK-NEXT: [[WIDE_LOAD3:%.*]] = load <vscale x 8 x i64>, ptr [[TMP19 ]], align 8
146
+ ; CHECK-NEXT: [[TMP20 :%.*]] = add <vscale x 8 x i64> [[WIDE_LOAD]], shufflevector (<vscale x 8 x i64> insertelement (<vscale x 8 x i64> poison, i64 1, i64 0), <vscale x 8 x i64> poison, <vscale x 8 x i32> zeroinitializer)
147
+ ; CHECK-NEXT: [[TMP21 :%.*]] = add <vscale x 8 x i64> [[WIDE_LOAD3]], shufflevector (<vscale x 8 x i64> insertelement (<vscale x 8 x i64> poison, i64 1, i64 0), <vscale x 8 x i64> poison, <vscale x 8 x i32> zeroinitializer)
148
+ ; CHECK-NEXT: [[TMP22 :%.*]] = getelementptr inbounds i64, ptr [[A]], i64 [[TMP8 ]]
149
+ ; CHECK-NEXT: [[TMP23 :%.*]] = call i64 @llvm.vscale.i64()
150
+ ; CHECK-NEXT: [[TMP24 :%.*]] = shl i64 [[TMP23 ]], 3
151
+ ; CHECK-NEXT: [[TMP25 :%.*]] = sub i64 1, [[TMP24 ]]
152
+ ; CHECK-NEXT: [[TMP26 :%.*]] = getelementptr inbounds i64, ptr [[TMP22 ]], i64 [[TMP25 ]]
153
+ ; CHECK-NEXT: store <vscale x 8 x i64> [[TMP20 ]], ptr [[TMP26 ]], align 8
154
+ ; CHECK-NEXT: [[TMP27 :%.*]] = call i64 @llvm.vscale.i64()
155
+ ; CHECK-NEXT: [[TMP28 :%.*]] = shl i64 [[TMP27 ]], 3
156
+ ; CHECK-NEXT: [[TMP29 :%.*]] = sub i64 0, [[TMP28 ]]
157
+ ; CHECK-NEXT: [[TMP30 :%.*]] = sub i64 1, [[TMP28 ]]
158
+ ; CHECK-NEXT: [[TMP31 :%.*]] = getelementptr inbounds i64, ptr [[TMP22 ]], i64 [[TMP29 ]]
159
+ ; CHECK-NEXT: [[TMP32 :%.*]] = getelementptr inbounds i64, ptr [[TMP31 ]], i64 [[TMP30 ]]
160
+ ; CHECK-NEXT: store <vscale x 8 x i64> [[TMP21 ]], ptr [[TMP32 ]], align 8
161
+ ; CHECK-NEXT: [[TMP33 :%.*]] = call i64 @llvm.vscale.i64()
162
+ ; CHECK-NEXT: [[TMP34 :%.*]] = shl i64 [[TMP33 ]], 4
163
+ ; CHECK-NEXT: [[INDEX_NEXT]] = add nuw i64 [[INDEX]], [[TMP34 ]]
164
+ ; CHECK-NEXT: [[TMP35 :%.*]] = icmp eq i64 [[INDEX_NEXT]], [[N_VEC]]
165
+ ; CHECK-NEXT: br i1 [[TMP35 ]], label [[MIDDLE_BLOCK:%.*]], label [[VECTOR_BODY]], !llvm.loop [[LOOP5:![0-9]+]]
166
166
; CHECK: middle.block:
167
167
; CHECK-NEXT: [[CMP_N:%.*]] = icmp eq i64 [[N_MOD_VF]], 0
168
168
; CHECK-NEXT: br i1 [[CMP_N]], label [[FOR_COND_CLEANUP_LOOPEXIT:%.*]], label [[SCALAR_PH]]
@@ -177,8 +177,8 @@ define void @vector_reverse_i64(i64 %N, ptr %a, ptr %b) #0 {
177
177
; CHECK-NEXT: [[I_09_IN:%.*]] = phi i64 [ [[I_09:%.*]], [[FOR_BODY]] ], [ [[BC_RESUME_VAL]], [[SCALAR_PH]] ]
178
178
; CHECK-NEXT: [[I_09]] = add nsw i64 [[I_09_IN]], -1
179
179
; CHECK-NEXT: [[ARRAYIDX:%.*]] = getelementptr inbounds i64, ptr [[B]], i64 [[I_09]]
180
- ; CHECK-NEXT: [[TMP39 :%.*]] = load i64, ptr [[ARRAYIDX]], align 8
181
- ; CHECK-NEXT: [[ADD:%.*]] = add i64 [[TMP39 ]], 1
180
+ ; CHECK-NEXT: [[TMP36 :%.*]] = load i64, ptr [[ARRAYIDX]], align 8
181
+ ; CHECK-NEXT: [[ADD:%.*]] = add i64 [[TMP36 ]], 1
182
182
; CHECK-NEXT: [[ARRAYIDX2:%.*]] = getelementptr inbounds i64, ptr [[A]], i64 [[I_09]]
183
183
; CHECK-NEXT: store i64 [[ADD]], ptr [[ARRAYIDX2]], align 8
184
184
; CHECK-NEXT: [[CMP:%.*]] = icmp sgt i64 [[I_09_IN]], 1
0 commit comments