diff options
author | Dominik Steenken <dost@de.ibm.com> | 2024-04-12 18:05:30 +0200 |
---|---|---|
committer | GitHub <noreply@github.com> | 2024-04-12 18:05:30 +0200 |
commit | b794dc23255505dd7735f995b8ff1192305a072e (patch) | |
tree | 87825d610148c0a1f551f5df088a40f2acc2b5ec /llvm/unittests/Support/VirtualFileSystemTest.cpp | |
parent | b614e5b0340f783ad355899248c52cb22a04b014 (diff) | |
download | llvm-b794dc23255505dd7735f995b8ff1192305a072e.zip llvm-b794dc23255505dd7735f995b8ff1192305a072e.tar.gz llvm-b794dc23255505dd7735f995b8ff1192305a072e.tar.bz2 |
[SystemZ] Add custom handling of legal vectors with reduce-add. (#88495)
This commit skips the expansion of the `vector.reduce.add` intrinsic on
vector-enabled SystemZ targets in order to introduce custom handling of
`vector.reduce.add` for legal vector types using the VSUM instructions.
This is limited to full vectors with scalar types up to `i32` due to
performance concerns.
It also adds testing for the generation of such custom handling, and
adapts the related cost computation, as well as the testing for that.
The expected result is a performance boost in certain benchmarks that
make heavy use of `vector.reduce.add` with other benchmarks remaining
constant.
For instance, the assembly for `vector.reduce.add<4 x i32>` changes from
```hlasm
vmrlg %v0, %v24, %v24
vaf %v0, %v24, %v0
vrepf %v1, %v0, 1
vaf %v0, %v0, %v1
vlgvf %r2, %v0, 0
```
to
```hlasm
vgbm %v0, 0
vsumqf %v0, %v24, %v0
vlgvf %r2, %v0, 3
```
Diffstat (limited to 'llvm/unittests/Support/VirtualFileSystemTest.cpp')
0 files changed, 0 insertions, 0 deletions