ARM VQADD implied destination operand form aliases.
authorJim Grosbach <grosbach@apple.com>
Thu, 8 Dec 2011 20:49:43 +0000 (20:49 +0000)
committerJim Grosbach <grosbach@apple.com>
Thu, 8 Dec 2011 20:49:43 +0000 (20:49 +0000)
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@146179 91177308-0d34-0410-b5e6-96231b3b80d8

lib/Target/ARM/ARMInstrNEON.td
test/MC/ARM/neon-add-encoding.s

index dc41c68492fd66a20e00cff7f66431e1b520e6f5..271afe681daec02ab7b4b2c8779a1e1a933f5f3f 100644 (file)
@@ -5420,6 +5420,41 @@ def : NEONInstAlias<"vmul${p}.f32 $Qdn, $Dm$lane",
                     (VMULslfq QPR:$Qdn, QPR:$Qdn, DPR_VFP2:$Dm,
                               VectorIndex32:$lane, pred:$p)>;
 
+// VQADD (register) two-operand aliases.
+def : NEONInstAlias<"vqadd${p}.s8 $Vdn, $Vm",
+                    (VQADDsv8i8 DPR:$Vdn, DPR:$Vdn, DPR:$Vm, pred:$p)>;
+def : NEONInstAlias<"vqadd${p}.s16 $Vdn, $Vm",
+                    (VQADDsv4i16 DPR:$Vdn, DPR:$Vdn, DPR:$Vm, pred:$p)>;
+def : NEONInstAlias<"vqadd${p}.s32 $Vdn, $Vm",
+                    (VQADDsv2i32 DPR:$Vdn, DPR:$Vdn, DPR:$Vm, pred:$p)>;
+def : NEONInstAlias<"vqadd${p}.s64 $Vdn, $Vm",
+                    (VQADDsv1i64 DPR:$Vdn, DPR:$Vdn, DPR:$Vm, pred:$p)>;
+def : NEONInstAlias<"vqadd${p}.u8 $Vdn, $Vm",
+                    (VQADDuv8i8 DPR:$Vdn, DPR:$Vdn, DPR:$Vm, pred:$p)>;
+def : NEONInstAlias<"vqadd${p}.u16 $Vdn, $Vm",
+                    (VQADDuv4i16 DPR:$Vdn, DPR:$Vdn, DPR:$Vm, pred:$p)>;
+def : NEONInstAlias<"vqadd${p}.u32 $Vdn, $Vm",
+                    (VQADDuv2i32 DPR:$Vdn, DPR:$Vdn, DPR:$Vm, pred:$p)>;
+def : NEONInstAlias<"vqadd${p}.u64 $Vdn, $Vm",
+                    (VQADDuv1i64 DPR:$Vdn, DPR:$Vdn, DPR:$Vm, pred:$p)>;
+
+def : NEONInstAlias<"vqadd${p}.s8 $Vdn, $Vm",
+                    (VQADDsv16i8 QPR:$Vdn, QPR:$Vdn, QPR:$Vm, pred:$p)>;
+def : NEONInstAlias<"vqadd${p}.s16 $Vdn, $Vm",
+                    (VQADDsv8i16 QPR:$Vdn, QPR:$Vdn, QPR:$Vm, pred:$p)>;
+def : NEONInstAlias<"vqadd${p}.s32 $Vdn, $Vm",
+                    (VQADDsv4i32 QPR:$Vdn, QPR:$Vdn, QPR:$Vm, pred:$p)>;
+def : NEONInstAlias<"vqadd${p}.s64 $Vdn, $Vm",
+                    (VQADDsv2i64 QPR:$Vdn, QPR:$Vdn, QPR:$Vm, pred:$p)>;
+def : NEONInstAlias<"vqadd${p}.u8 $Vdn, $Vm",
+                    (VQADDuv16i8 QPR:$Vdn, QPR:$Vdn, QPR:$Vm, pred:$p)>;
+def : NEONInstAlias<"vqadd${p}.u16 $Vdn, $Vm",
+                    (VQADDuv8i16 QPR:$Vdn, QPR:$Vdn, QPR:$Vm, pred:$p)>;
+def : NEONInstAlias<"vqadd${p}.u32 $Vdn, $Vm",
+                    (VQADDuv4i32 QPR:$Vdn, QPR:$Vdn, QPR:$Vm, pred:$p)>;
+def : NEONInstAlias<"vqadd${p}.u64 $Vdn, $Vm",
+                    (VQADDuv2i64 QPR:$Vdn, QPR:$Vdn, QPR:$Vm, pred:$p)>;
+
 // VSHL (immediate) two-operand aliases.
 def : NEONInstAlias<"vshl${p}.i8 $Vdn, $imm",
                     (VSHLiv8i8 DPR:$Vdn, DPR:$Vdn, imm0_7:$imm, pred:$p)>;
index 19d5b7e010f76a1b8aca96f0402e328c92b30edd..1fdfa4c13dfb81c3681329b4d89665e7e0086c76 100644 (file)
 @ CHECK: vrhadd.u32    q8, q8, q9      @ encoding: [0xe2,0x01,0x60,0xf3]
        vrhadd.u32      q8, q8, q9
 
-@ CHECK: vqadd.s8      d16, d16, d17   @ encoding: [0xb1,0x00,0x40,0xf2]
        vqadd.s8        d16, d16, d17
-@ CHECK: vqadd.s16     d16, d16, d17   @ encoding: [0xb1,0x00,0x50,0xf2]
        vqadd.s16       d16, d16, d17
-@ CHECK: vqadd.s32     d16, d16, d17   @ encoding: [0xb1,0x00,0x60,0xf2]
        vqadd.s32       d16, d16, d17
-@ CHECK: vqadd.s64     d16, d16, d17   @ encoding: [0xb1,0x00,0x70,0xf2]
        vqadd.s64       d16, d16, d17
-@ CHECK: vqadd.u8      d16, d16, d17   @ encoding: [0xb1,0x00,0x40,0xf3]
        vqadd.u8        d16, d16, d17
-@ CHECK: vqadd.u16     d16, d16, d17   @ encoding: [0xb1,0x00,0x50,0xf3]
        vqadd.u16       d16, d16, d17
-@ CHECK: vqadd.u32     d16, d16, d17   @ encoding: [0xb1,0x00,0x60,0xf3]
        vqadd.u32       d16, d16, d17
-@ CHECK: vqadd.u64     d16, d16, d17   @ encoding: [0xb1,0x00,0x70,0xf3]
        vqadd.u64       d16, d16, d17
-@ CHECK: vqadd.s8      q8, q8, q9      @ encoding: [0xf2,0x00,0x40,0xf2]
+
+@ CHECK: vqadd.s8      d16, d16, d17   @ encoding: [0xb1,0x00,0x40,0xf2]
+@ CHECK: vqadd.s16     d16, d16, d17   @ encoding: [0xb1,0x00,0x50,0xf2]
+@ CHECK: vqadd.s32     d16, d16, d17   @ encoding: [0xb1,0x00,0x60,0xf2]
+@ CHECK: vqadd.s64     d16, d16, d17   @ encoding: [0xb1,0x00,0x70,0xf2]
+@ CHECK: vqadd.u8      d16, d16, d17   @ encoding: [0xb1,0x00,0x40,0xf3]
+@ CHECK: vqadd.u16     d16, d16, d17   @ encoding: [0xb1,0x00,0x50,0xf3]
+@ CHECK: vqadd.u32     d16, d16, d17   @ encoding: [0xb1,0x00,0x60,0xf3]
+@ CHECK: vqadd.u64     d16, d16, d17   @ encoding: [0xb1,0x00,0x70,0xf3]
+
        vqadd.s8        q8, q8, q9
-@ CHECK: vqadd.s16     q8, q8, q9      @ encoding: [0xf2,0x00,0x50,0xf2]
        vqadd.s16       q8, q8, q9
-@ CHECK: vqadd.s32     q8, q8, q9      @ encoding: [0xf2,0x00,0x60,0xf2]
        vqadd.s32       q8, q8, q9
-@ CHECK: vqadd.s64     q8, q8, q9      @ encoding: [0xf2,0x00,0x70,0xf2]
        vqadd.s64       q8, q8, q9
-@ CHECK: vqadd.u8      q8, q8, q9      @ encoding: [0xf2,0x00,0x40,0xf3]
        vqadd.u8        q8, q8, q9
-@ CHECK: vqadd.u16     q8, q8, q9      @ encoding: [0xf2,0x00,0x50,0xf3]
        vqadd.u16       q8, q8, q9
-@ CHECK: vqadd.u32     q8, q8, q9      @ encoding: [0xf2,0x00,0x60,0xf3]
        vqadd.u32       q8, q8, q9
-@ CHECK: vqadd.u64     q8, q8, q9      @ encoding: [0xf2,0x00,0x70,0xf3]
        vqadd.u64       q8, q8, q9
 
+@ CHECK: vqadd.s8      q8, q8, q9      @ encoding: [0xf2,0x00,0x40,0xf2]
+@ CHECK: vqadd.s16     q8, q8, q9      @ encoding: [0xf2,0x00,0x50,0xf2]
+@ CHECK: vqadd.s32     q8, q8, q9      @ encoding: [0xf2,0x00,0x60,0xf2]
+@ CHECK: vqadd.s64     q8, q8, q9      @ encoding: [0xf2,0x00,0x70,0xf2]
+@ CHECK: vqadd.u8      q8, q8, q9      @ encoding: [0xf2,0x00,0x40,0xf3]
+@ CHECK: vqadd.u16     q8, q8, q9      @ encoding: [0xf2,0x00,0x50,0xf3]
+@ CHECK: vqadd.u32     q8, q8, q9      @ encoding: [0xf2,0x00,0x60,0xf3]
+@ CHECK: vqadd.u64     q8, q8, q9      @ encoding: [0xf2,0x00,0x70,0xf3]
+
+
+@ two-operand variants.
+       vqadd.s8        d16, d17
+       vqadd.s16       d16, d17
+       vqadd.s32       d16, d17
+       vqadd.s64       d16, d17
+       vqadd.u8        d16, d17
+       vqadd.u16       d16, d17
+       vqadd.u32       d16, d17
+       vqadd.u64       d16, d17
+
+@ CHECK: vqadd.s8      d16, d16, d17   @ encoding: [0xb1,0x00,0x40,0xf2]
+@ CHECK: vqadd.s16     d16, d16, d17   @ encoding: [0xb1,0x00,0x50,0xf2]
+@ CHECK: vqadd.s32     d16, d16, d17   @ encoding: [0xb1,0x00,0x60,0xf2]
+@ CHECK: vqadd.s64     d16, d16, d17   @ encoding: [0xb1,0x00,0x70,0xf2]
+@ CHECK: vqadd.u8      d16, d16, d17   @ encoding: [0xb1,0x00,0x40,0xf3]
+@ CHECK: vqadd.u16     d16, d16, d17   @ encoding: [0xb1,0x00,0x50,0xf3]
+@ CHECK: vqadd.u32     d16, d16, d17   @ encoding: [0xb1,0x00,0x60,0xf3]
+@ CHECK: vqadd.u64     d16, d16, d17   @ encoding: [0xb1,0x00,0x70,0xf3]
+
+       vqadd.s8        q8, q9
+       vqadd.s16       q8, q9
+       vqadd.s32       q8, q9
+       vqadd.s64       q8, q9
+       vqadd.u8        q8, q9
+       vqadd.u16       q8, q9
+       vqadd.u32       q8, q9
+       vqadd.u64       q8, q9
+
+@ CHECK: vqadd.s8      q8, q8, q9      @ encoding: [0xf2,0x00,0x40,0xf2]
+@ CHECK: vqadd.s16     q8, q8, q9      @ encoding: [0xf2,0x00,0x50,0xf2]
+@ CHECK: vqadd.s32     q8, q8, q9      @ encoding: [0xf2,0x00,0x60,0xf2]
+@ CHECK: vqadd.s64     q8, q8, q9      @ encoding: [0xf2,0x00,0x70,0xf2]
+@ CHECK: vqadd.u8      q8, q8, q9      @ encoding: [0xf2,0x00,0x40,0xf3]
+@ CHECK: vqadd.u16     q8, q8, q9      @ encoding: [0xf2,0x00,0x50,0xf3]
+@ CHECK: vqadd.u32     q8, q8, q9      @ encoding: [0xf2,0x00,0x60,0xf3]
+@ CHECK: vqadd.u64     q8, q8, q9      @ encoding: [0xf2,0x00,0x70,0xf3]
+
+
 @ CHECK: vaddhn.i16    d16, q8, q9     @ encoding: [0xa2,0x04,0xc0,0xf2]
        vaddhn.i16      d16, q8, q9
 @ CHECK: vaddhn.i32    d16, q8, q9     @ encoding: [0xa2,0x04,0xd0,0xf2]