aboutsummaryrefslogtreecommitdiff
path: root/llvm/lib/CodeGen/MachinePassManager.cpp
diff options
context:
space:
mode:
authorDhruv Chawla <dhruvc@nvidia.com>2024-04-23 21:38:41 +0530
committerGitHub <noreply@github.com>2024-04-23 21:38:41 +0530
commit143be6a60186d6c1a6a298d0b7acdc1a4d69a321 (patch)
tree6a1df2df8789d0ed598ea849896f8b4ef4821176 /llvm/lib/CodeGen/MachinePassManager.cpp
parent3197146cc6ae1cefe0b21326f0509add3369decb (diff)
downloadllvm-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