diff options
author | Dhruv Chawla <dhruvc@nvidia.com> | 2024-04-23 21:38:41 +0530 |
---|---|---|
committer | GitHub <noreply@github.com> | 2024-04-23 21:38:41 +0530 |
commit | 143be6a60186d6c1a6a298d0b7acdc1a4d69a321 (patch) | |
tree | 6a1df2df8789d0ed598ea849896f8b4ef4821176 /llvm/lib/CodeGen/MachinePassManager.cpp | |
parent | 3197146cc6ae1cefe0b21326f0509add3369decb (diff) | |
download | llvm-143be6a60186d6c1a6a298d0b7acdc1a4d69a321.zip llvm-143be6a60186d6c1a6a298d0b7acdc1a4d69a321.tar.gz llvm-143be6a60186d6c1a6a298d0b7acdc1a4d69a321.tar.bz2 |
[AArch64][GISel] Avoid scalarizing G_IMPLICIT_DEF and G_FREEZE in the Legalizer (#88469)
It does not make sense to scalarize G_FREEZE as it leads to the generation
of pairs of G_UNMERGE_VALUES and G_BUILD_VECTORs which are difficult to
optimize especially when operations like G_TRUNC operate before G_FREEZE
but after G_UNMERGE_VALUES.
Instead, it is better to legalize G_FREEZE like any other vector type
would be, as it gets lowered to a COPY during instruction selection
anyways.
This is an issue that was encountered when looking at the TSVC
benchmark, where the legalization of G_FREEZE would cause generation of
unnecessary MOVs that adversely affected the performance.
Diffstat (limited to 'llvm/lib/CodeGen/MachinePassManager.cpp')
0 files changed, 0 insertions, 0 deletions