summaryrefslogtreecommitdiffstats
path: root/llvm/lib/Target/AMDGPU/SIFoldOperands.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'llvm/lib/Target/AMDGPU/SIFoldOperands.cpp')
-rw-r--r--llvm/lib/Target/AMDGPU/SIFoldOperands.cpp12
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
OpenPOWER on IntegriCloud