diff options
author | Matt Arsenault <Matthew.Arsenault@amd.com> | 2015-10-02 18:58:37 +0000 |
---|---|---|
committer | Matt Arsenault <Matthew.Arsenault@amd.com> | 2015-10-02 18:58:37 +0000 |
commit | d092a068baadcbfb1da8db6d7673f02a7d817a51 (patch) | |
tree | 0840eceb7849385fad8c54831c42105f5807112f /llvm/lib/Target/AMDGPU/SIInstrInfo.cpp | |
parent | 3d3b4d0c2c3d239ce2524349f47678e22f220db0 (diff) | |
download | bcm5719-llvm-d092a068baadcbfb1da8db6d7673f02a7d817a51.tar.gz bcm5719-llvm-d092a068baadcbfb1da8db6d7673f02a7d817a51.zip |
AMDGPU/SI: Add verifier check for exec reads
Make sure we aren't accidentally not setting
these in the instruction definitions.
llvm-svn: 249170
Diffstat (limited to 'llvm/lib/Target/AMDGPU/SIInstrInfo.cpp')
-rw-r--r-- | llvm/lib/Target/AMDGPU/SIInstrInfo.cpp | 10 |
1 files changed, 10 insertions, 0 deletions
diff --git a/llvm/lib/Target/AMDGPU/SIInstrInfo.cpp b/llvm/lib/Target/AMDGPU/SIInstrInfo.cpp index 85c1e9179c9..122b65b042b 100644 --- a/llvm/lib/Target/AMDGPU/SIInstrInfo.cpp +++ b/llvm/lib/Target/AMDGPU/SIInstrInfo.cpp @@ -1445,6 +1445,16 @@ bool SIInstrInfo::verifyInstruction(const MachineInstr *MI, } } + // Make sure we aren't losing exec uses in the td files. This mostly requires + // being careful when using let Uses to try to add other use registers. + if (!isGenericOpcode(Opcode) && !isSALU(Opcode) && !isSMRD(Opcode)) { + const MachineOperand *Exec = MI->findRegisterUseOperand(AMDGPU::EXEC); + if (!Exec || !Exec->isImplicit()) { + ErrInfo = "VALU instruction does not implicitly read exec mask"; + return false; + } + } + return true; } |