ARM: Add optional datatype suffix to NEON mvn asm syntax.
authorJim Grosbach <grosbach@apple.com>
Tue, 18 Jun 2013 21:49:21 +0000 (21:49 +0000)
committerJim Grosbach <grosbach@apple.com>
Tue, 18 Jun 2013 21:49:21 +0000 (21:49 +0000)
rdar://14194152

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@184244 91177308-0d34-0410-b5e6-96231b3b80d8

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

index 9d1a8ea38b1ceaded59e7beaf341b7a6dc96b5df..32b8d67b05ad4c527e53dc7c4a1c2ad3d8e4958c 100644 (file)
@@ -6698,12 +6698,17 @@ def VST4qWB_register_Asm_32 :
                   (ins VecListFourQ:$list, addrmode6:$addr,
                        rGPR:$Rm, pred:$p)>;
 
-// VMOV takes an optional datatype suffix
+// VMOV/VMVN takes an optional datatype suffix
 defm : NEONDTAnyInstAlias<"vmov${p}", "$Vd, $Vm",
                          (VORRd DPR:$Vd, DPR:$Vm, DPR:$Vm, pred:$p)>;
 defm : NEONDTAnyInstAlias<"vmov${p}", "$Vd, $Vm",
                          (VORRq QPR:$Vd, QPR:$Vm, QPR:$Vm, pred:$p)>;
 
+defm : NEONDTAnyInstAlias<"vmvn${p}", "$Vd, $Vm",
+                         (VMVNd DPR:$Vd, DPR:$Vm, pred:$p)>;
+defm : NEONDTAnyInstAlias<"vmvn${p}", "$Vd, $Vm",
+                         (VMVNq QPR:$Vd, QPR:$Vm, pred:$p)>;
+
 // VCLT (register) is an assembler alias for VCGT w/ the operands reversed.
 // D-register versions.
 def : NEONInstAlias<"vcle${p}.s8 $Dd, $Dn, $Dm",
index 6f26a13c3ea96928cec4895893a767fb48264152..ba66d7e14be1dfbf1c21d2e1caa6552767739c5b 100644 (file)
 @ CHECK: vmov.8        d18[1], r1              @ encoding: [0xb0,0x1b,0x42,0xee]
 @ CHECK: vmov.16       d18[1], r1      @ encoding: [0xf0,0x1b,0x02,0xee]
 @ CHECK: vmov.32       d18[1], r1      @ encoding: [0x90,0x1b,0x22,0xee]
+
+
+        vmvn.8 d1, d2
+        vmvn.16 d1, d2
+        vmvn.32 d1, d2
+        vmvn.64 d1, d2
+        vmvn.i8 d1, d2
+        vmvn.i16 d1, d2
+        vmvn.i32 d1, d2
+        vmvn.i64 d1, d2
+        vmvn.s8 d1, d2
+        vmvn.s16 d1, d2
+        vmvn.s32 d1, d2
+        vmvn.s64 d1, d2
+        vmvn.u8 d1, d2
+        vmvn.u16 d1, d2
+        vmvn.u32 d1, d2
+        vmvn.u64 d1, d2
+        vmvn.f32 d1, d2
+        vmvn.f64 d1, d2
+
+@ CHECK: vmvn  d1, d2                  @ encoding: [0x82,0x15,0xb0,0xf3]
+@ CHECK: vmvn  d1, d2                  @ encoding: [0x82,0x15,0xb0,0xf3]
+@ CHECK: vmvn  d1, d2                  @ encoding: [0x82,0x15,0xb0,0xf3]
+@ CHECK: vmvn  d1, d2                  @ encoding: [0x82,0x15,0xb0,0xf3]
+@ CHECK: vmvn  d1, d2                  @ encoding: [0x82,0x15,0xb0,0xf3]
+@ CHECK: vmvn  d1, d2                  @ encoding: [0x82,0x15,0xb0,0xf3]
+@ CHECK: vmvn  d1, d2                  @ encoding: [0x82,0x15,0xb0,0xf3]
+@ CHECK: vmvn  d1, d2                  @ encoding: [0x82,0x15,0xb0,0xf3]
+@ CHECK: vmvn  d1, d2                  @ encoding: [0x82,0x15,0xb0,0xf3]
+@ CHECK: vmvn  d1, d2                  @ encoding: [0x82,0x15,0xb0,0xf3]
+@ CHECK: vmvn  d1, d2                  @ encoding: [0x82,0x15,0xb0,0xf3]
+@ CHECK: vmvn  d1, d2                  @ encoding: [0x82,0x15,0xb0,0xf3]
+@ CHECK: vmvn  d1, d2                  @ encoding: [0x82,0x15,0xb0,0xf3]
+@ CHECK: vmvn  d1, d2                  @ encoding: [0x82,0x15,0xb0,0xf3]
+@ CHECK: vmvn  d1, d2                  @ encoding: [0x82,0x15,0xb0,0xf3]
+@ CHECK: vmvn  d1, d2                  @ encoding: [0x82,0x15,0xb0,0xf3]
+@ CHECK: vmvn  d1, d2                  @ encoding: [0x82,0x15,0xb0,0xf3]
+@ CHECK: vmvn  d1, d2                  @ encoding: [0x82,0x15,0xb0,0xf3]