diff options
Diffstat (limited to 'llvm/lib/Target/AMDGPU/SIFoldOperands.cpp')
-rw-r--r-- | llvm/lib/Target/AMDGPU/SIFoldOperands.cpp | 12 |
1 files changed, 8 insertions, 4 deletions
diff --git a/llvm/lib/Target/AMDGPU/SIFoldOperands.cpp b/llvm/lib/Target/AMDGPU/SIFoldOperands.cpp index 00698e2dd4e..4a1fc1332c3 100644 --- a/llvm/lib/Target/AMDGPU/SIFoldOperands.cpp +++ b/llvm/lib/Target/AMDGPU/SIFoldOperands.cpp @@ -516,8 +516,10 @@ void SIFoldOperands::foldOperand( // => // %sgpr = S_MOV_B32 imm if (FoldingImm) { - if (!isEXECMaskConstantBetweenDefAndUses( - UseMI->getOperand(UseOpIdx).getReg(), *MRI)) + if (execMayBeModifiedBeforeUse(*MRI, + UseMI->getOperand(UseOpIdx).getReg(), + *OpToFold.getParent(), + UseMI)) return; UseMI->setDesc(TII->get(AMDGPU::S_MOV_B32)); @@ -527,8 +529,10 @@ void SIFoldOperands::foldOperand( } if (OpToFold.isReg() && TRI->isSGPRReg(*MRI, OpToFold.getReg())) { - if (!isEXECMaskConstantBetweenDefAndUses( - UseMI->getOperand(UseOpIdx).getReg(), *MRI)) + if (execMayBeModifiedBeforeUse(*MRI, + UseMI->getOperand(UseOpIdx).getReg(), + *OpToFold.getParent(), + UseMI)) return; // %vgpr = COPY %sgpr0 |