diff options
Diffstat (limited to 'llvm/lib/CodeGen/MachineVerifier.cpp')
-rw-r--r-- | llvm/lib/CodeGen/MachineVerifier.cpp | 13 |
1 files changed, 6 insertions, 7 deletions
diff --git a/llvm/lib/CodeGen/MachineVerifier.cpp b/llvm/lib/CodeGen/MachineVerifier.cpp index 7077580..bec36b7 100644 --- a/llvm/lib/CodeGen/MachineVerifier.cpp +++ b/llvm/lib/CodeGen/MachineVerifier.cpp @@ -1590,9 +1590,8 @@ void MachineVerifier::verifyPreISelGenericInstruction(const MachineInstr *MI) { case TargetOpcode::G_UCMP: { LLT DstTy = MRI->getType(MI->getOperand(0).getReg()); LLT SrcTy = MRI->getType(MI->getOperand(1).getReg()); - LLT SrcTy2 = MRI->getType(MI->getOperand(2).getReg()); - if (SrcTy.isPointerOrPointerVector() || SrcTy2.isPointerOrPointerVector()) { + if (SrcTy.isPointerOrPointerVector()) { report("Generic scmp/ucmp does not support pointers as operands", MI); break; } @@ -1602,6 +1601,11 @@ void MachineVerifier::verifyPreISelGenericInstruction(const MachineInstr *MI) { break; } + if (DstTy.getScalarSizeInBits() < 2) { + report("Result type must be at least 2 bits wide", MI); + break; + } + if ((DstTy.isVector() != SrcTy.isVector()) || (DstTy.isVector() && DstTy.getElementCount() != SrcTy.getElementCount())) { @@ -1609,11 +1613,6 @@ void MachineVerifier::verifyPreISelGenericInstruction(const MachineInstr *MI) { break; } - if (SrcTy != SrcTy2) { - report("Generic scmp/ucmp must have same input types", MI); - break; - } - break; } case TargetOpcode::G_EXTRACT: { |