ARM: Add optional datatype suffix to NEON mvn asm syntax.

rdar://14194152

llvm-svn: 184244
This commit is contained in:
Jim Grosbach 2013-06-18 21:49:21 +00:00
parent 8c8c6fab4c
commit a6ed57d8dd
2 changed files with 45 additions and 1 deletions

View File

@ -6698,12 +6698,17 @@ def VST4qWB_register_Asm_32 :
(ins VecListFourQ:$list, addrmode6:$addr, (ins VecListFourQ:$list, addrmode6:$addr,
rGPR:$Rm, pred:$p)>; rGPR:$Rm, pred:$p)>;
// VMOV takes an optional datatype suffix // VMOV/VMVN takes an optional datatype suffix
defm : NEONDTAnyInstAlias<"vmov${p}", "$Vd, $Vm", defm : NEONDTAnyInstAlias<"vmov${p}", "$Vd, $Vm",
(VORRd DPR:$Vd, DPR:$Vm, DPR:$Vm, pred:$p)>; (VORRd DPR:$Vd, DPR:$Vm, DPR:$Vm, pred:$p)>;
defm : NEONDTAnyInstAlias<"vmov${p}", "$Vd, $Vm", defm : NEONDTAnyInstAlias<"vmov${p}", "$Vd, $Vm",
(VORRq QPR:$Vd, QPR:$Vm, QPR:$Vm, pred:$p)>; (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. // VCLT (register) is an assembler alias for VCGT w/ the operands reversed.
// D-register versions. // D-register versions.
def : NEONInstAlias<"vcle${p}.s8 $Dd, $Dn, $Dm", def : NEONInstAlias<"vcle${p}.s8 $Dd, $Dn, $Dm",

View File

@ -128,3 +128,42 @@
@ CHECK: vmov.8 d18[1], r1 @ encoding: [0xb0,0x1b,0x42,0xee] @ CHECK: vmov.8 d18[1], r1 @ encoding: [0xb0,0x1b,0x42,0xee]
@ CHECK: vmov.16 d18[1], r1 @ encoding: [0xf0,0x1b,0x02,0xee] @ CHECK: vmov.16 d18[1], r1 @ encoding: [0xf0,0x1b,0x02,0xee]
@ CHECK: vmov.32 d18[1], r1 @ encoding: [0x90,0x1b,0x22,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]