From 8dc741d29f9c9beff8a9f26ff23b307b9df4f8fd Mon Sep 17 00:00:00 2001 From: Joey Gouly Date: Tue, 9 Jul 2013 11:03:21 +0000 Subject: [PATCH] Add MC assembly/disassembly support for VRINT{Z, X, R} to V8FP. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@185926 91177308-0d34-0410-b5e6-96231b3b80d8 --- lib/Target/ARM/ARMInstrVFP.td | 21 +++++++++++++++++++++ test/MC/ARM/v8fp.s | 15 +++++++++++++++ test/MC/Disassembler/ARM/v8fp.txt | 19 +++++++++++++++++++ 3 files changed, 55 insertions(+) diff --git a/lib/Target/ARM/ARMInstrVFP.td b/lib/Target/ARM/ARMInstrVFP.td index 27f1578b5ea..4ee41e8aab2 100644 --- a/lib/Target/ARM/ARMInstrVFP.td +++ b/lib/Target/ARM/ARMInstrVFP.td @@ -648,6 +648,27 @@ def VNEGS : ASuIn<0b11101, 0b11, 0b0001, 0b01, 0, let D = VFPNeonA8Domain; } +multiclass vrint_inst_zrx { + def S : ASuI<0b11101, 0b11, 0b0110, 0b11, 0, + (outs SPR:$Sd), (ins SPR:$Sm), + NoItinerary, !strconcat("vrint", opc), ".f32\t$Sd, $Sm", + []>, Requires<[HasV8FP]> { + let Inst{7} = op2; + let Inst{16} = op; + } + def D : ADuI<0b11101, 0b11, 0b0110, 0b11, 0, + (outs DPR:$Dd), (ins DPR:$Dm), + NoItinerary, !strconcat("vrint", opc), ".f64\t$Dd, $Dm", + []>, Requires<[HasV8FP]> { + let Inst{7} = op2; + let Inst{16} = op; + } +} + +defm VRINTZ : vrint_inst_zrx<"z", 0, 1>; +defm VRINTR : vrint_inst_zrx<"r", 0, 0>; +defm VRINTX : vrint_inst_zrx<"x", 1, 0>; + def VSQRTD : ADuI<0b11101, 0b11, 0b0001, 0b11, 0, (outs DPR:$Dd), (ins DPR:$Dm), IIC_fpSQRT64, "vsqrt", ".f64\t$Dd, $Dm", diff --git a/test/MC/ARM/v8fp.s b/test/MC/ARM/v8fp.s index 36cec8b9874..b82705c5ec8 100644 --- a/test/MC/ARM/v8fp.s +++ b/test/MC/ARM/v8fp.s @@ -88,3 +88,18 @@ @ CHECK: vminnm.f32 s0, s0, s12 @ encoding: [0x46,0x0a,0x80,0xfe] vminnm.f64 d4, d6, d9 @ CHECK: vminnm.f64 d4, d6, d9 @ encoding: [0x49,0x4b,0x86,0xfe] + +@ VRINT{Z,R,X} + + vrintzge.f64 d3, d12 +@ CHECK: vrintzge.f64 d3, d12 @ encoding: [0xcc,0x3b,0xb6,0xae] + vrintz.f32 s3, s24 +@ CHECK: vrintz.f32 s3, s24 @ encoding: [0xcc,0x1a,0xf6,0xee] + vrintrlt.f64 d5, d0 +@ CHECK: vrintrlt.f64 d5, d0 @ encoding: [0x40,0x5b,0xb6,0xbe] + vrintr.f32 s0, s9 +@ CHECK: vrintr.f32 s0, s9 @ encoding: [0x64,0x0a,0xb6,0xee] + vrintxeq.f64 d28, d30 +@ CHECK: vrintxeq.f64 d28, d30 @ encoding: [0x6e,0xcb,0xf7,0x0e] + vrintxvs.f32 s10, s14 +@ CHECK: vrintxvs.f32 s10, s14 @ encoding: [0x47,0x5a,0xb7,0x6e] diff --git a/test/MC/Disassembler/ARM/v8fp.txt b/test/MC/Disassembler/ARM/v8fp.txt index 9c9d47058a7..795829eb1c1 100644 --- a/test/MC/Disassembler/ARM/v8fp.txt +++ b/test/MC/Disassembler/ARM/v8fp.txt @@ -110,3 +110,22 @@ 0x49 0x4b 0x86 0xfe # CHECK: vminnm.f64 d4, d6, d9 + + +0xcc 0x3b 0xb6 0xae +# CHECK: vrintzge.f64 d3, d12 + +0xcc 0x1a 0xf6 0xee +# CHECK: vrintz.f32 s3, s24 + +0x40 0x5b 0xb6 0xbe +# CHECK: vrintrlt.f64 d5, d0 + +0x64 0x0a 0xb6 0xee +# CHECK: vrintr.f32 s0, s9 + +0x6e 0xcb 0xf7 0x0e +# CHECK: vrintxeq.f64 d28, d30 + +0x47 0x5a 0xb7 0x6e +# CHECK: vrintxvs.f32 s10, s14