Add nodes & dummy matchers for some v{zip,uzp,trn} instructions
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@79622 91177308-0d34-0410-b5e6-96231b3b80d8
diff --git a/lib/Target/ARM/ARMISelDAGToDAG.cpp b/lib/Target/ARM/ARMISelDAGToDAG.cpp
index 3ef15a1..3b394b0 100644
--- a/lib/Target/ARM/ARMISelDAGToDAG.cpp
+++ b/lib/Target/ARM/ARMISelDAGToDAG.cpp
@@ -1415,6 +1415,36 @@
N->getOperand(4), N->getOperand(5), Chain };
return CurDAG->getTargetNode(Opc, dl, MVT::Other, Ops, 8);
}
+ case ARMISD::VZIP16: {
+ EVT VT = N->getValueType(0);
+ return CurDAG->getTargetNode(ARM::VZIPd16, dl, VT, VT,
+ N->getOperand(0), N->getOperand(1));
+ }
+ case ARMISD::VZIP32: {
+ EVT VT = N->getValueType(0);
+ return CurDAG->getTargetNode(ARM::VZIPq32, dl, VT, VT,
+ N->getOperand(0), N->getOperand(1));
+ }
+ case ARMISD::VUZP16: {
+ EVT VT = N->getValueType(0);
+ return CurDAG->getTargetNode(ARM::VUZPd16, dl, VT, VT,
+ N->getOperand(0), N->getOperand(1));
+ }
+ case ARMISD::VUZP32: {
+ EVT VT = N->getValueType(0);
+ return CurDAG->getTargetNode(ARM::VUZPq32, dl, VT, VT,
+ N->getOperand(0), N->getOperand(1));
+ }
+ case ARMISD::VTRN16: {
+ EVT VT = N->getValueType(0);
+ return CurDAG->getTargetNode(ARM::VTRNd16, dl, VT, VT,
+ N->getOperand(0), N->getOperand(1));
+ }
+ case ARMISD::VTRN32: {
+ EVT VT = N->getValueType(0);
+ return CurDAG->getTargetNode(ARM::VTRNq32, dl, VT, VT,
+ N->getOperand(0), N->getOperand(1));
+ }
}
return SelectCode(Op);