aboutsummaryrefslogtreecommitdiffstats
path: root/lib
diff options
context:
space:
mode:
authorJim Grosbach <grosbach@apple.com>2011-11-15 22:54:42 +0000
committerJim Grosbach <grosbach@apple.com>2011-11-15 22:54:42 +0000
commit5b2fb2083c387009607f438a2a986c3e0a2cd0be (patch)
tree1ab345eb094a2c56a088efb6356c43655af213d7 /lib
parentde631128d69dc95f9f6b0c225a52fc08593be59f (diff)
downloadexternal_llvm-5b2fb2083c387009607f438a2a986c3e0a2cd0be.zip
external_llvm-5b2fb2083c387009607f438a2a986c3e0a2cd0be.tar.gz
external_llvm-5b2fb2083c387009607f438a2a986c3e0a2cd0be.tar.bz2
ARM assembly parsing for data type suffices on NEON VMOV aliases.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@144722 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'lib')
-rw-r--r--lib/Target/ARM/ARMInstrFormats.td17
-rw-r--r--lib/Target/ARM/ARMInstrNEON.td4
2 files changed, 21 insertions, 0 deletions
diff --git a/lib/Target/ARM/ARMInstrFormats.td b/lib/Target/ARM/ARMInstrFormats.td
index 06ee2c8..6940156 100644
--- a/lib/Target/ARM/ARMInstrFormats.td
+++ b/lib/Target/ARM/ARMInstrFormats.td
@@ -2041,9 +2041,26 @@ multiclass VFPDT64InstAlias<string opc, string asm, dag Result> {
def _64 : VFPDataTypeInstAlias<opc, ".64", asm, Result>;
defm : VFPDT64ReqInstAlias<opc, asm, Result>;
}
+multiclass VFPDT64NoF64ReqInstAlias<string opc, string asm, dag Result> {
+ def I64 : VFPDataTypeInstAlias<opc, ".i64", asm, Result>;
+ def S64 : VFPDataTypeInstAlias<opc, ".s64", asm, Result>;
+ def U64 : VFPDataTypeInstAlias<opc, ".u64", asm, Result>;
+ def D : VFPDataTypeInstAlias<opc, ".d", asm, Result>;
+}
+// VFPDT64ReqInstAlias plus plain ".64"
+multiclass VFPDT64NoF64InstAlias<string opc, string asm, dag Result> {
+ def _64 : VFPDataTypeInstAlias<opc, ".64", asm, Result>;
+ defm : VFPDT64ReqInstAlias<opc, 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>;
}
+multiclass VFPDTAnyNoF64InstAlias<string opc, string asm, dag Result> {
+ defm : VFPDT8InstAlias<opc, asm, Result>;
+ defm : VFPDT16InstAlias<opc, asm, Result>;
+ defm : VFPDT32InstAlias<opc, asm, Result>;
+ defm : VFPDT64NoF64InstAlias<opc, asm, Result>;
+}
diff --git a/lib/Target/ARM/ARMInstrNEON.td b/lib/Target/ARM/ARMInstrNEON.td
index 1c64aae..f2ca963 100644
--- a/lib/Target/ARM/ARMInstrNEON.td
+++ b/lib/Target/ARM/ARMInstrNEON.td
@@ -4469,6 +4469,10 @@ def : InstAlias<"vmov${p} $Vd, $Vm",
(VORRd DPR:$Vd, DPR:$Vm, DPR:$Vm, pred:$p)>;
def : InstAlias<"vmov${p} $Vd, $Vm",
(VORRq QPR:$Vd, QPR:$Vm, QPR:$Vm, pred:$p)>;
+defm : VFPDTAnyNoF64InstAlias<"vmov${p}", "$Vd, $Vm",
+ (VORRd DPR:$Vd, DPR:$Vm, DPR:$Vm, pred:$p)>;
+defm : VFPDTAnyNoF64InstAlias<"vmov${p}", "$Vd, $Vm",
+ (VORRq QPR:$Vd, QPR:$Vm, QPR:$Vm, pred:$p)>;
// VMOV : Vector Move (Immediate)