aboutsummaryrefslogtreecommitdiff
path: root/clang/lib/Format/QualifierAlignmentFixer.cpp
diff options
context:
space:
mode:
authorJay Foad <jay.foad@amd.com>2021-11-19 10:32:35 +0000
committerJay Foad <jay.foad@amd.com>2021-11-19 13:08:11 +0000
commit30b27ecfc2516c019209d2ea4b05903548635647 (patch)
tree55b6702950668a2b2c9dcb112fec910566509e6f /clang/lib/Format/QualifierAlignmentFixer.cpp
parent049799c311515c8c8b5daf91b4a731870ed54afe (diff)
downloadllvm-30b27ecfc2516c019209d2ea4b05903548635647.zip
llvm-30b27ecfc2516c019209d2ea4b05903548635647.tar.gz
llvm-30b27ecfc2516c019209d2ea4b05903548635647.tar.bz2
[AMDGPU] Use new opcode for indexed vgpr reads
Introduce V_MOV_B32_indirect_read for indexed vgpr reads (and rename the old V_MOV_B32_indirect to V_MOV_B32_indirect_write) so they can be unambiguously distinguished from regular V_MOV_B32_e32. Previously they were distinguished by looking for extra implicit operands but this is fragile because regular moves sometimes have extra implicit operands too: - either by accident, when instructions end up with duplicate implicit operands (see e.g. D100939) - or by design, when SIInstrInfo::copyPhysReg breaks a multi-dword copy into individual subreg mov instructions and adds implicit operands for the super-register. The effect of this is that SIInstrInfo::isFoldableCopy can be simplified and identifies more foldable copies. The test diffs show that more immediate 0 values have been folded as inline operands. SIInstrInfo::isReallyTriviallyReMaterializable could probably be simplified too but that is not part of this patch. Differential Revision: https://reviews.llvm.org/D114230
Diffstat (limited to 'clang/lib/Format/QualifierAlignmentFixer.cpp')
0 files changed, 0 insertions, 0 deletions