diff options
author | Jay Foad <jay.foad@amd.com> | 2021-11-19 10:32:35 +0000 |
---|---|---|
committer | Jay Foad <jay.foad@amd.com> | 2021-11-19 13:08:11 +0000 |
commit | 30b27ecfc2516c019209d2ea4b05903548635647 (patch) | |
tree | 55b6702950668a2b2c9dcb112fec910566509e6f /clang/lib/Format/QualifierAlignmentFixer.cpp | |
parent | 049799c311515c8c8b5daf91b4a731870ed54afe (diff) | |
download | llvm-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