OSDN Git Service

ARM two-operand aliases for VADDW instructions.
authorJim Grosbach <grosbach@apple.com>
Wed, 7 Dec 2011 23:01:10 +0000 (23:01 +0000)
committerJim Grosbach <grosbach@apple.com>
Wed, 7 Dec 2011 23:01:10 +0000 (23:01 +0000)
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@146093 91177308-0d34-0410-b5e6-96231b3b80d8

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

index 4828f3a..11c8e0b 100644 (file)
@@ -5321,6 +5321,20 @@ def : NEONInstAlias<"vadd${p}.f32 $Vdn, $Vm",
 def : NEONInstAlias<"vadd${p}.f32 $Vdn, $Vm",
                     (VADDfq QPR:$Vdn, QPR:$Vdn, QPR:$Vm, pred:$p)>;
 
+// VADDW two-operand aliases.
+def : NEONInstAlias<"vaddw${p}.s8 $Vdn, $Vm",
+                    (VADDWsv8i16 QPR:$Vdn, QPR:$Vdn, DPR:$Vm, pred:$p)>;
+def : NEONInstAlias<"vaddw${p}.s16 $Vdn, $Vm",
+                    (VADDWsv4i32 QPR:$Vdn, QPR:$Vdn, DPR:$Vm, pred:$p)>;
+def : NEONInstAlias<"vaddw${p}.s32 $Vdn, $Vm",
+                    (VADDWsv2i64 QPR:$Vdn, QPR:$Vdn, DPR:$Vm, pred:$p)>;
+def : NEONInstAlias<"vaddw${p}.u8 $Vdn, $Vm",
+                    (VADDWuv8i16 QPR:$Vdn, QPR:$Vdn, DPR:$Vm, pred:$p)>;
+def : NEONInstAlias<"vaddw${p}.u16 $Vdn, $Vm",
+                    (VADDWuv4i32 QPR:$Vdn, QPR:$Vdn, DPR:$Vm, pred:$p)>;
+def : NEONInstAlias<"vaddw${p}.u32 $Vdn, $Vm",
+                    (VADDWuv2i64 QPR:$Vdn, QPR:$Vdn, DPR:$Vm, pred:$p)>;
+
 // VAND/VEOR/VORR accept but do not require a type suffix.
 defm : VFPDTAnyInstAlias<"vand${p}", "$Vd, $Vn, $Vm",
                          (VANDd DPR:$Vd, DPR:$Vn, DPR:$Vm, pred:$p)>;
index fb5c7e1..19d5b7e 100644 (file)
 @ CHECK: vadd.i16      q7, q7, q1      @ encoding: [0x42,0xe8,0x1e,0xf2]
 @ CHECK: vadd.i32      q8, q8, q2      @ encoding: [0xc4,0x08,0x60,0xf2]
 @ CHECK: vadd.i64      q9, q9, q3      @ encoding: [0xc6,0x28,0x72,0xf2]
+
+
+       vaddw.s8  q6, d5
+       vaddw.s16 q7, d1
+       vaddw.s32 q8, d2
+
+       vaddw.u8  q6, d5
+       vaddw.u16 q7, d1
+       vaddw.u32 q8, d2
+
+@ CHECK: vaddw.s8      q6, q6, d5      @ encoding: [0x05,0xc1,0x8c,0xf2]
+@ CHECK: vaddw.s16     q7, q7, d1      @ encoding: [0x01,0xe1,0x9e,0xf2]
+@ CHECK: vaddw.s32     q8, q8, d2      @ encoding: [0x82,0x01,0xe0,0xf2]
+
+@ CHECK: vaddw.u8      q6, q6, d5      @ encoding: [0x05,0xc1,0x8c,0xf3]
+@ CHECK: vaddw.u16     q7, q7, d1      @ encoding: [0x01,0xe1,0x9e,0xf3]
+@ CHECK: vaddw.u32     q8, q8, d2      @ encoding: [0x82,0x01,0xe0,0xf3]