SGPRs are generally cheaper, so try to use them over VGPRs.
Details
Diff Detail
- Repository
- rL LLVM
Event Timeline
Typo in test file name
lib/Target/AMDGPU/SIFixSGPRCopies.cpp | ||
---|---|---|
182–187 ↗ | (On Diff #102279) | This probably breaks if you have a copy that looks like a sub register extract |
192 ↗ | (On Diff #102279) | Why do you check the parent? |
193 ↗ | (On Diff #102279) | Why do you need to check this? Isn't this filtering the global isel pseudos which should never exist here? |
194 ↗ | (On Diff #102279) | Avoid doing the weird pointer arithmetic? |
198 ↗ | (On Diff #102279) | I forsee this breaking cases with multiple uses |
test/CodeGen/AMDGPU/opt-sgpr-to-vgrp-copy.ll | ||
25 ↗ | (On Diff #102279) | Probably need a MIR test to stress multiple uses |
lib/Target/AMDGPU/SIFixSGPRCopies.cpp | ||
---|---|---|
182–187 ↗ | (On Diff #102279) | The should not be a problem. I'm changing VGPR class to equivalent SGPR class, they support the same set of subregs. |
192 ↗ | (On Diff #102279) | A copy can be in a divergent control flow. If it is the same block we can be sure that is actually the value we are going to use. |
193 ↗ | (On Diff #102279) | isOperandLegal does not work with generic opcodes because they have no RC classes assigned to operands. |
194 ↗ | (On Diff #102279) | How do I get operand number otherwise? |
198 ↗ | (On Diff #102279) | Why? I'm checking all uses for operand legality. It also does not happen if there is a second def of the same register. |
test/CodeGen/AMDGPU/opt-sgpr-to-vgrp-copy.ll | ||
---|---|---|
25 ↗ | (On Diff #102279) | Can you be more specific, multiple uses of what? Do you mean multiple uses of the same COPY? |
Added subreg-extract like copy test.
Cleaned mir test.
lib/Target/AMDGPU/SIFixSGPRCopies.cpp | ||
---|---|---|
182–187 ↗ | (On Diff #102279) | I have added test for that. |
lib/Target/AMDGPU/SIFixSGPRCopies.cpp | ||
---|---|---|
198 ↗ | (On Diff #102279) | I have added test for multiple uses. |
LGTM. It's possible to reduce the mir testcase further though
test/CodeGen/AMDGPU/opt-sgpr-to-vgpr-copy.mir | ||
---|---|---|
102–117 ↗ | (On Diff #102698) | You can strip out most of this stuff |