ARM assembly parsing for data type suffices on NEON VMOV aliases.
authorJim Grosbach <grosbach@apple.com>
Tue, 15 Nov 2011 22:54:42 +0000 (22:54 +0000)
committerJim Grosbach <grosbach@apple.com>
Tue, 15 Nov 2011 22:54:42 +0000 (22:54 +0000)
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@144722 91177308-0d34-0410-b5e6-96231b3b80d8

lib/Target/ARM/ARMInstrFormats.td
lib/Target/ARM/ARMInstrNEON.td

index 06ee2c82260d249123ff42a3cb587cc71bb6206e..6940156c7b8fe3a95450ca140d81718225112fa6 100644 (file)
@@ -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>;
+}
index 1c64aae23d3b0a0d138703152b166bca61a7f269..f2ca9637edda264a9934fec14a59f2028d7233fa 100644 (file)
@@ -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)