diff options
author | Craig Topper <craig.topper@sifive.com> | 2024-12-15 22:08:43 -0800 |
---|---|---|
committer | GitHub <noreply@github.com> | 2024-12-15 22:08:43 -0800 |
commit | 6dc24f6a2fcf0a199e007dc127ca5a4901a3a24e (patch) | |
tree | e53c343e46e0d3dcadd589a4341f4abfb4d76368 /llvm/lib/CodeGen/MachineVerifier.cpp | |
parent | 1100d6a995fe392b3885b8d2bd5afed2bd57e80c (diff) | |
download | llvm-6dc24f6a2fcf0a199e007dc127ca5a4901a3a24e.zip llvm-6dc24f6a2fcf0a199e007dc127ca5a4901a3a24e.tar.gz llvm-6dc24f6a2fcf0a199e007dc127ca5a4901a3a24e.tar.bz2 |
[GISel] Improve MachineVerifier for G_SCMP/UCMP. (#120017)
-Ensure destination type is at least 2 bits.
-Remove unnecessary check that both sources are the same type. The
verifier already handles this generically.
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: { |