aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJim Grosbach <grosbach@apple.com>2013-06-18 21:49:21 +0000
committerJim Grosbach <grosbach@apple.com>2013-06-18 21:49:21 +0000
commita95e3091eb9ba5010f6c5f6f51958b01ca3a85f6 (patch)
treed7e3a73cb48794f66c85402d6b3bb2d18846f81d
parenta7bd8549fdcb18c686bdadf46000452c927d3b5d (diff)
downloadexternal_llvm-a95e3091eb9ba5010f6c5f6f51958b01ca3a85f6.zip
external_llvm-a95e3091eb9ba5010f6c5f6f51958b01ca3a85f6.tar.gz
external_llvm-a95e3091eb9ba5010f6c5f6f51958b01ca3a85f6.tar.bz2
ARM: Add optional datatype suffix to NEON mvn asm syntax.
rdar://14194152 git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@184244 91177308-0d34-0410-b5e6-96231b3b80d8
-rw-r--r--lib/Target/ARM/ARMInstrNEON.td7
-rw-r--r--test/MC/ARM/neon-mov-encoding.s39
2 files changed, 45 insertions, 1 deletions
diff --git a/lib/Target/ARM/ARMInstrNEON.td b/lib/Target/ARM/ARMInstrNEON.td
index 9d1a8ea..32b8d67 100644
--- a/lib/Target/ARM/ARMInstrNEON.td
+++ b/lib/Target/ARM/ARMInstrNEON.td
@@ -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",
diff --git a/test/MC/ARM/neon-mov-encoding.s b/test/MC/ARM/neon-mov-encoding.s
index 6f26a13..ba66d7e 100644
--- a/test/MC/ARM/neon-mov-encoding.s
+++ b/test/MC/ARM/neon-mov-encoding.s
@@ -128,3 +128,42 @@
@ 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]