This would end up killing part of the result super-register, resulting
in a verifier error on a later use of the overlapping registers. We
could add kills of any non-aliasing registers, but we should be moving
away from relying on kill flags.
Details
Details
- Reviewers
rampitec critson tpr scott.linder kerbowa
Diff Detail
Diff Detail
Event Timeline
Comment Actions
LGTM, although it might require checking liveness of all aliasing registers.
llvm/lib/Target/AMDGPU/SIInstrInfo.cpp | ||
---|---|---|
924 | It could be some other unrelated superreg? |
llvm/lib/Target/AMDGPU/SIInstrInfo.cpp | ||
---|---|---|
924 | If it's unrelated, we can kill the original source like was done before |
llvm/lib/Target/AMDGPU/SIInstrInfo.cpp | ||
---|---|---|
924 | Say the source is v[0:1] and we are killing it. But there is somewhere v[1:2] used, not in this instruction. We will kill that v[1:2] as well, right? |
llvm/lib/Target/AMDGPU/SIInstrInfo.cpp | ||
---|---|---|
924 | It kills the v1 portion, so a later instruction would be reading an undef value |
It could be some other unrelated superreg?