ARM parsing optional datatype suffix for VAND/VEOR/VORR instructions.
[oota-llvm.git] / lib / Target / ARM / ARMInstrFormats.td
index 841ca741fd93b960f15d627da5170d565ec1ca5d..90ee0183c08a832fc66c60afa881cc93bf72b958 100644 (file)
@@ -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>;
+}