Commit fc9324f
Automerge: [LV] Add support for partial reductions without a binary op (#133922)
Consider IR such as this:
for.body:
%iv = phi i64 [ 0, %entry ], [ %iv.next, %for.body ]
%accum = phi i32 [ 0, %entry ], [ %add, %for.body ]
%gep.a = getelementptr i8, ptr %a, i64 %iv
%load.a = load i8, ptr %gep.a, align 1
%ext.a = zext i8 %load.a to i32
%add = add i32 %ext.a, %accum
%iv.next = add i64 %iv, 1
%exitcond.not = icmp eq i64 %iv.next, 1025
br i1 %exitcond.not, label %for.exit, label %for.body
Conceptually we can vectorise this using partial reductions too,
although the current loop vectoriser implementation requires the
accumulation of a multiply. For AArch64 this is easily done with
a udot or sdot with an identity operand, i.e. a vector of (i16 1).
In order to do this I had to teach getScaledReductions that the
accumulated value may come from a unary op, hence there is only
one extension to consider. Similarly, I updated the vplan and
AArch64 TTI cost model to understand the possible unary op.
---------
Co-authored-by: Matt Devereau <[email protected]>File tree
10 files changed
+1579
-640
lines changed- llvm
- include/llvm/Analysis
- lib
- Target/AArch64
- Transforms/Vectorize
- test
- CodeGen/AArch64
- Transforms/LoopVectorize/AArch64
10 files changed
+1579
-640
lines changed| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
1325 | 1325 | | |
1326 | 1326 | | |
1327 | 1327 | | |
1328 | | - | |
1329 | | - | |
1330 | | - | |
| 1328 | + | |
| 1329 | + | |
| 1330 | + | |
| 1331 | + | |
| 1332 | + | |
| 1333 | + | |
| 1334 | + | |
| 1335 | + | |
| 1336 | + | |
| 1337 | + | |
| 1338 | + | |
| 1339 | + | |
| 1340 | + | |
| 1341 | + | |
| 1342 | + | |
1331 | 1343 | | |
1332 | 1344 | | |
1333 | 1345 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
5405 | 5405 | | |
5406 | 5406 | | |
5407 | 5407 | | |
5408 | | - | |
| 5408 | + | |
| 5409 | + | |
5409 | 5410 | | |
5410 | 5411 | | |
5411 | | - | |
| 5412 | + | |
| 5413 | + | |
| 5414 | + | |
| 5415 | + | |
| 5416 | + | |
| 5417 | + | |
| 5418 | + | |
| 5419 | + | |
5412 | 5420 | | |
| 5421 | + | |
| 5422 | + | |
5413 | 5423 | | |
5414 | 5424 | | |
5415 | 5425 | | |
| |||
5456 | 5466 | | |
5457 | 5467 | | |
5458 | 5468 | | |
5459 | | - | |
5460 | | - | |
5461 | | - | |
5462 | | - | |
5463 | | - | |
5464 | | - | |
5465 | | - | |
5466 | | - | |
5467 | | - | |
5468 | 5469 | | |
5469 | 5470 | | |
5470 | 5471 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
8149 | 8149 | | |
8150 | 8150 | | |
8151 | 8151 | | |
8152 | | - | |
8153 | | - | |
| 8152 | + | |
| 8153 | + | |
8154 | 8154 | | |
8155 | | - | |
| 8155 | + | |
8156 | 8156 | | |
8157 | 8157 | | |
8158 | | - | |
| 8158 | + | |
8159 | 8159 | | |
8160 | | - | |
| 8160 | + | |
8161 | 8161 | | |
8162 | 8162 | | |
8163 | 8163 | | |
| |||
8166 | 8166 | | |
8167 | 8167 | | |
8168 | 8168 | | |
8169 | | - | |
| 8169 | + | |
8170 | 8170 | | |
8171 | 8171 | | |
8172 | 8172 | | |
8173 | 8173 | | |
8174 | 8174 | | |
8175 | 8175 | | |
8176 | 8176 | | |
8177 | | - | |
8178 | 8177 | | |
8179 | 8178 | | |
8180 | 8179 | | |
| |||
8203 | 8202 | | |
8204 | 8203 | | |
8205 | 8204 | | |
8206 | | - | |
8207 | | - | |
8208 | | - | |
8209 | | - | |
8210 | 8205 | | |
8211 | | - | |
8212 | | - | |
8213 | | - | |
8214 | 8206 | | |
8215 | | - | |
8216 | | - | |
8217 | | - | |
8218 | | - | |
| 8207 | + | |
| 8208 | + | |
| 8209 | + | |
| 8210 | + | |
| 8211 | + | |
| 8212 | + | |
| 8213 | + | |
| 8214 | + | |
| 8215 | + | |
| 8216 | + | |
| 8217 | + | |
| 8218 | + | |
| 8219 | + | |
| 8220 | + | |
| 8221 | + | |
| 8222 | + | |
| 8223 | + | |
| 8224 | + | |
| 8225 | + | |
| 8226 | + | |
| 8227 | + | |
| 8228 | + | |
| 8229 | + | |
| 8230 | + | |
| 8231 | + | |
8219 | 8232 | | |
8220 | | - | |
8221 | | - | |
| 8233 | + | |
| 8234 | + | |
| 8235 | + | |
| 8236 | + | |
| 8237 | + | |
| 8238 | + | |
| 8239 | + | |
| 8240 | + | |
| 8241 | + | |
| 8242 | + | |
| 8243 | + | |
| 8244 | + | |
| 8245 | + | |
| 8246 | + | |
| 8247 | + | |
| 8248 | + | |
| 8249 | + | |
| 8250 | + | |
| 8251 | + | |
8222 | 8252 | | |
8223 | 8253 | | |
8224 | | - | |
| 8254 | + | |
8225 | 8255 | | |
8226 | | - | |
8227 | | - | |
8228 | | - | |
| 8256 | + | |
| 8257 | + | |
8229 | 8258 | | |
8230 | 8259 | | |
8231 | | - | |
8232 | | - | |
| 8260 | + | |
8233 | 8261 | | |
8234 | 8262 | | |
8235 | | - | |
8236 | 8263 | | |
8237 | 8264 | | |
8238 | 8265 | | |
8239 | 8266 | | |
8240 | 8267 | | |
8241 | | - | |
8242 | | - | |
| 8268 | + | |
| 8269 | + | |
8243 | 8270 | | |
8244 | 8271 | | |
8245 | 8272 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
24 | 24 | | |
25 | 25 | | |
26 | 26 | | |
27 | | - | |
28 | | - | |
| 27 | + | |
| 28 | + | |
| 29 | + | |
29 | 30 | | |
30 | 31 | | |
31 | | - | |
32 | | - | |
33 | | - | |
| 32 | + | |
| 33 | + | |
| 34 | + | |
34 | 35 | | |
35 | 36 | | |
36 | 37 | | |
37 | 38 | | |
38 | 39 | | |
39 | 40 | | |
40 | 41 | | |
41 | | - | |
42 | | - | |
| 42 | + | |
| 43 | + | |
43 | 44 | | |
44 | 45 | | |
45 | 46 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
296 | 296 | | |
297 | 297 | | |
298 | 298 | | |
299 | | - | |
300 | | - | |
| 299 | + | |
| 300 | + | |
| 301 | + | |
301 | 302 | | |
302 | | - | |
303 | | - | |
| 303 | + | |
304 | 304 | | |
305 | | - | |
306 | | - | |
307 | | - | |
308 | | - | |
309 | | - | |
310 | | - | |
311 | | - | |
312 | | - | |
313 | | - | |
314 | | - | |
315 | | - | |
316 | | - | |
317 | | - | |
| 305 | + | |
| 306 | + | |
| 307 | + | |
318 | 308 | | |
319 | | - | |
320 | | - | |
321 | | - | |
322 | | - | |
323 | | - | |
| 309 | + | |
| 310 | + | |
| 311 | + | |
324 | 312 | | |
325 | 313 | | |
326 | | - | |
327 | 314 | | |
328 | | - | |
| 315 | + | |
329 | 316 | | |
330 | 317 | | |
331 | | - | |
| 318 | + | |
332 | 319 | | |
333 | | - | |
| 320 | + | |
334 | 321 | | |
335 | | - | |
336 | | - | |
| 322 | + | |
| 323 | + | |
337 | 324 | | |
338 | 325 | | |
339 | | - | |
340 | | - | |
341 | | - | |
| 326 | + | |
| 327 | + | |
| 328 | + | |
| 329 | + | |
| 330 | + | |
| 331 | + | |
| 332 | + | |
| 333 | + | |
| 334 | + | |
| 335 | + | |
| 336 | + | |
| 337 | + | |
| 338 | + | |
| 339 | + | |
| 340 | + | |
| 341 | + | |
| 342 | + | |
| 343 | + | |
| 344 | + | |
| 345 | + | |
| 346 | + | |
| 347 | + | |
| 348 | + | |
| 349 | + | |
| 350 | + | |
| 351 | + | |
| 352 | + | |
| 353 | + | |
| 354 | + | |
| 355 | + | |
| 356 | + | |
| 357 | + | |
| 358 | + | |
| 359 | + | |
| 360 | + | |
| 361 | + | |
| 362 | + | |
342 | 363 | | |
343 | 364 | | |
344 | 365 | | |
| |||
Lines changed: 0 additions & 1 deletion
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
1255 | 1255 | | |
1256 | 1256 | | |
1257 | 1257 | | |
1258 | | - | |
0 commit comments