Commit e4a4bb0
[PowerPC] Replace vspltisw+vadduwm instructions with xxleqv+vsubuwm for adding the vector {1, 1, 1, 1} (#160882)
This patch optimizes vector addition operations involving **`all-ones`**
vectors by leveraging the generation of vectors of -1s(using `xxleqv`,
which is cheaper than generating vectors of 1s(`vspltisw`). These are
the respective vector types.
`v2i64`: **`A + vector {1, 1}`**
`v4i32`: **`A + vector {1, 1, 1, 1}`**
`v8i16`: **`A + vector {1, 1, 1, 1, 1, 1, 1, 1}`**
`v16i8`: **`A + vector {1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1}`**
The optimized version replaces `vspltisw (4 cycles)` with `xxleqv (2
cycles)` using the following identity:
`A - (-1) = A + 1`.
---------
Co-authored-by: himadhith <[email protected]>
Co-authored-by: Tony Varghese <[email protected]>1 parent cc5185b commit e4a4bb0
File tree
3 files changed
+56
-13
lines changed- llvm
- lib/Target/PowerPC
- test/CodeGen/PowerPC
3 files changed
+56
-13
lines changed| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
19280 | 19280 | | |
19281 | 19281 | | |
19282 | 19282 | | |
| 19283 | + | |
| 19284 | + | |
| 19285 | + | |
| 19286 | + | |
| 19287 | + | |
| 19288 | + | |
| 19289 | + | |
| 19290 | + | |
| 19291 | + | |
| 19292 | + | |
| 19293 | + | |
| 19294 | + | |
| 19295 | + | |
| 19296 | + | |
| 19297 | + | |
| 19298 | + | |
| 19299 | + | |
| 19300 | + | |
| 19301 | + | |
| 19302 | + | |
| 19303 | + | |
| 19304 | + | |
| 19305 | + | |
| 19306 | + | |
| 19307 | + | |
| 19308 | + | |
| 19309 | + | |
| 19310 | + | |
| 19311 | + | |
| 19312 | + | |
| 19313 | + | |
| 19314 | + | |
| 19315 | + | |
| 19316 | + | |
| 19317 | + | |
| 19318 | + | |
| 19319 | + | |
| 19320 | + | |
| 19321 | + | |
| 19322 | + | |
| 19323 | + | |
| 19324 | + | |
| 19325 | + | |
19283 | 19326 | | |
19284 | 19327 | | |
19285 | 19328 | | |
19286 | 19329 | | |
19287 | 19330 | | |
19288 | 19331 | | |
19289 | 19332 | | |
| 19333 | + | |
| 19334 | + | |
19290 | 19335 | | |
19291 | 19336 | | |
19292 | 19337 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
8 | 8 | | |
9 | 9 | | |
10 | 10 | | |
11 | | - | |
| 11 | + | |
12 | 12 | | |
13 | 13 | | |
14 | 14 | | |
15 | 15 | | |
16 | 16 | | |
17 | | - | |
18 | | - | |
19 | | - | |
| 17 | + | |
| 18 | + | |
20 | 19 | | |
21 | 20 | | |
22 | 21 | | |
| |||
27 | 26 | | |
28 | 27 | | |
29 | 28 | | |
30 | | - | |
31 | | - | |
| 29 | + | |
| 30 | + | |
32 | 31 | | |
33 | 32 | | |
34 | 33 | | |
| |||
39 | 38 | | |
40 | 39 | | |
41 | 40 | | |
42 | | - | |
43 | | - | |
| 41 | + | |
| 42 | + | |
44 | 43 | | |
45 | 44 | | |
46 | 45 | | |
| |||
51 | 50 | | |
52 | 51 | | |
53 | 52 | | |
54 | | - | |
55 | | - | |
| 53 | + | |
| 54 | + | |
56 | 55 | | |
57 | 56 | | |
58 | 57 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
16 | 16 | | |
17 | 17 | | |
18 | 18 | | |
19 | | - | |
20 | | - | |
21 | | - | |
| 19 | + | |
| 20 | + | |
22 | 21 | | |
23 | 22 | | |
24 | 23 | | |
| |||
0 commit comments