summaryrefslogtreecommitdiff
path: root/lib/Target/ARM/ARMInstrFormats.td
diff options
context:
space:
mode:
authorJim Grosbach <grosbach@apple.com>2011-11-14 23:11:19 +0000
committerJim Grosbach <grosbach@apple.com>2011-11-14 23:11:19 +0000
commitef448767a35148261d6c82a8e55e6e2f4be8e631 (patch)
tree18491e072b893baac1ab2da33875cb90464a9726 /lib/Target/ARM/ARMInstrFormats.td
parent2c42b8c912b62071c27454182cdef60e3b584083 (diff)
downloadllvm-ef448767a35148261d6c82a8e55e6e2f4be8e631.tar.gz
llvm-ef448767a35148261d6c82a8e55e6e2f4be8e631.tar.bz2
llvm-ef448767a35148261d6c82a8e55e6e2f4be8e631.tar.xz
ARM parsing optional datatype suffix for VAND/VEOR/VORR instructions.
rdar://10435076 git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@144587 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'lib/Target/ARM/ARMInstrFormats.td')
-rw-r--r--lib/Target/ARM/ARMInstrFormats.td21
1 files changed, 20 insertions, 1 deletions
diff --git a/lib/Target/ARM/ARMInstrFormats.td b/lib/Target/ARM/ARMInstrFormats.td
index 841ca741fd..90ee0183c0 100644
--- a/lib/Target/ARM/ARMInstrFormats.td
+++ b/lib/Target/ARM/ARMInstrFormats.td
@@ -1995,6 +1995,20 @@ class NEONFPPat<dag pattern, dag result> : Pat<pattern, result> {
// VFP/NEON Instruction aliases for type suffices.
class VFPDataTypeInstAlias<string opc, string dt, string asm, dag Result> :
InstAlias<!strconcat(opc, dt, asm), Result>;
+multiclass VFPDT8InstAlias<string opc, string asm, dag Result> {
+ def _8 : VFPDataTypeInstAlias<opc, ".8", asm, Result>;
+ def I8 : VFPDataTypeInstAlias<opc, ".i8", asm, Result>;
+ def S8 : VFPDataTypeInstAlias<opc, ".s8", asm, Result>;
+ def U8 : VFPDataTypeInstAlias<opc, ".u8", asm, Result>;
+ def F8 : VFPDataTypeInstAlias<opc, ".p8", asm, Result>;
+}
+multiclass VFPDT16InstAlias<string opc, string asm, dag Result> {
+ def _16 : VFPDataTypeInstAlias<opc, ".16", asm, Result>;
+ def I16 : VFPDataTypeInstAlias<opc, ".i16", asm, Result>;
+ def S16 : VFPDataTypeInstAlias<opc, ".s16", asm, Result>;
+ def U16 : VFPDataTypeInstAlias<opc, ".u16", asm, Result>;
+ def F16 : VFPDataTypeInstAlias<opc, ".p16", asm, Result>;
+}
multiclass VFPDT32InstAlias<string opc, string asm, dag Result> {
def _32 : VFPDataTypeInstAlias<opc, ".32", asm, Result>;
def I32 : VFPDataTypeInstAlias<opc, ".i32", asm, Result>;
@@ -2011,4 +2025,9 @@ multiclass VFPDT64InstAlias<string opc, string asm, dag Result> {
def F64 : VFPDataTypeInstAlias<opc, ".f64", asm, Result>;
def D : VFPDataTypeInstAlias<opc, ".d", asm, Result>;
}
-
+multiclass VFPDTAnyInstAlias<string opc, string asm, dag Result> {
+ defm : VFPDT8InstAlias<opc, asm, Result>;
+ defm : VFPDT16InstAlias<opc, asm, Result>;
+ defm : VFPDT32InstAlias<opc, asm, Result>;
+ defm : VFPDT64InstAlias<opc, asm, Result>;
+}