aboutsummaryrefslogtreecommitdiffstats
path: root/lib/Target/ARM/ARMInstrNEON.td
diff options
context:
space:
mode:
Diffstat (limited to 'lib/Target/ARM/ARMInstrNEON.td')
-rw-r--r--lib/Target/ARM/ARMInstrNEON.td12
1 files changed, 12 insertions, 0 deletions
diff --git a/lib/Target/ARM/ARMInstrNEON.td b/lib/Target/ARM/ARMInstrNEON.td
index 00e6c8a..b893c58 100644
--- a/lib/Target/ARM/ARMInstrNEON.td
+++ b/lib/Target/ARM/ARMInstrNEON.td
@@ -109,6 +109,18 @@ def NEONvrev64 : SDNode<"ARMISD::VREV64", SDTARMVSHUF>;
def NEONvrev32 : SDNode<"ARMISD::VREV32", SDTARMVSHUF>;
def NEONvrev16 : SDNode<"ARMISD::VREV16", SDTARMVSHUF>;
+def SDTARMVSHUF2 : SDTypeProfile<2, 2, [SDTCisVec<0>, SDTCisSameAs<0, 1>,
+ SDTCisSameAs<0, 2>, SDTCisSameAs<0, 3>]>;
+def NEONzip32 : SDNode<"ARMISD::VZIP32", SDTARMVSHUF2>;
+def NEONzip16 : SDNode<"ARMISD::VZIP16", SDTARMVSHUF2>;
+def NEONzip8 : SDNode<"ARMISD::VZIP8", SDTARMVSHUF2>;
+def NEONuzp32 : SDNode<"ARMISD::VUZP32", SDTARMVSHUF2>;
+def NEONuzp16 : SDNode<"ARMISD::VUZP16", SDTARMVSHUF2>;
+def NEONuzp8 : SDNode<"ARMISD::VUZP16", SDTARMVSHUF2>;
+def NEONtrn32 : SDNode<"ARMISD::VTRN32", SDTARMVSHUF2>;
+def NEONtrn16 : SDNode<"ARMISD::VTRN16", SDTARMVSHUF2>;
+def NEONtrn8 : SDNode<"ARMISD::VTRN8", SDTARMVSHUF2>;
+
//===----------------------------------------------------------------------===//
// NEON operand definitions
//===----------------------------------------------------------------------===//