summaryrefslogtreecommitdiff
path: root/llvm/lib/CodeGen/MachineVerifier.cpp
diff options
context:
space:
mode:
authorMichael Maitland <michaeltmaitland@gmail.com>2024-03-07 09:50:29 -0500
committerMichael Maitland <michaeltmaitland@gmail.com>2024-03-07 09:10:03 -0800
commit96049fcf4e5f2eb0271bdfa89e113eef9c5fa9f6 (patch)
tree0019935a8fed1540ebcb93af14ca8da45252c0fa /llvm/lib/CodeGen/MachineVerifier.cpp
parent8f79cdd8da97c131ae7d8a3210bb69cb6654903d (diff)
[GISEL] Add IRTranslation for shufflevector on scalable vector types (#80378)
Recommits llvm/llvm-project#80378 which was reverted in llvm/llvm-project#84330. The problem was that the change in llvm/test/CodeGen/AArch64/GlobalISel/legalizer-info-validation.mir used 217 as an opcode instead of a regex.
Diffstat (limited to 'llvm/lib/CodeGen/MachineVerifier.cpp')
-rw-r--r--llvm/lib/CodeGen/MachineVerifier.cpp18
1 files changed, 18 insertions, 0 deletions
diff --git a/llvm/lib/CodeGen/MachineVerifier.cpp b/llvm/lib/CodeGen/MachineVerifier.cpp
index 1d0757c5d7f5..ecb3bd33bdfd 100644
--- a/llvm/lib/CodeGen/MachineVerifier.cpp
+++ b/llvm/lib/CodeGen/MachineVerifier.cpp
@@ -1640,6 +1640,24 @@ void MachineVerifier::verifyPreISelGenericInstruction(const MachineInstr *MI) {
break;
}
+
+ case TargetOpcode::G_SPLAT_VECTOR: {
+ LLT DstTy = MRI->getType(MI->getOperand(0).getReg());
+ LLT SrcTy = MRI->getType(MI->getOperand(1).getReg());
+
+ if (!DstTy.isScalableVector())
+ report("Destination type must be a scalable vector", MI);
+
+ if (!SrcTy.isScalar())
+ report("Source type must be a scalar", MI);
+
+ if (DstTy.getScalarType() != SrcTy)
+ report("Element type of the destination must be the same type as the "
+ "source type",
+ MI);
+
+ break;
+ }
case TargetOpcode::G_DYN_STACKALLOC: {
const MachineOperand &DstOp = MI->getOperand(0);
const MachineOperand &AllocOp = MI->getOperand(1);