1
0
mirror of https://github.com/RPCS3/llvm-mirror.git synced 2024-11-22 18:54:02 +01:00
llvm-mirror/test/MC/ARM/fullfp16-neg.s
Sjoerd Meijer 5855d06287 [ARM] Introduce separate features for FP registers
The MVE extension in Arm v8.1-M permits the use of some move, load and
store isntructions which access the FP registers, even if there's no
actual FP support in the processor (in particular, if you have the
integer-only version of MVE).

Therefore, we need separate subtarget features to condition those
instructions on, which are implied by both FP and MVE but are not part
of either.

Patch mostly by Simon Tatham.

Differential Revision: https://reviews.llvm.org/D60694

llvm-svn: 362088
2019-05-30 12:37:05 +00:00

190 lines
5.2 KiB
ArmAsm

@ RUN: not llvm-mc -triple armv8a-none-eabi -mattr=-fullfp16 -show-encoding < %s 2>&1 | FileCheck %s
@ RUN: not llvm-mc -triple armv8a-none-eabi -mattr=-fullfp16,+thumb-mode -show-encoding < %s 2>&1 | FileCheck %s
vadd.f16 s0, s1, s0
@ CHECK: instruction requires: full half-float
vsub.f16 s0, s1, s0
@ CHECK: instruction requires: full half-float
vdiv.f16 s0, s1, s0
@ CHECK: instruction requires: full half-float
vmul.f16 s0, s1, s0
@ CHECK: instruction requires: full half-float
vnmul.f16 s0, s1, s0
@ CHECK: instruction requires: full half-float
vmla.f16 s1, s2, s0
@ CHECK: instruction requires: full half-float
vmls.f16 s1, s2, s0
@ CHECK: instruction requires: full half-float
vnmla.f16 s1, s2, s0
@ CHECK: instruction requires: full half-float
vnmls.f16 s1, s2, s0
@ CHECK: instruction requires: full half-float
vcmp.f16 s0, s1
@ CHECK: instruction requires: full half-float
vcmp.f16 s2, #0
@ CHECK: instruction requires: full half-float
vcmpe.f16 s1, s0
@ CHECK: instruction requires: full half-float
vcmpe.f16 s0, #0
@ CHECK: instruction requires: full half-float
vabs.f16 s0, s0
@ CHECK: instruction requires: full half-float
vneg.f16 s0, s0
@ CHECK: instruction requires: full half-float
vsqrt.f16 s0, s0
@ CHECK: instruction requires: full half-float
vcvt.f16.s32 s0, s0
vcvt.f16.u32 s0, s0
vcvt.s32.f16 s0, s0
vcvt.u32.f16 s0, s0
@ CHECK: instruction requires: full half-float
@ CHECK: instruction requires: full half-float
@ CHECK: instruction requires: full half-float
@ CHECK: instruction requires: full half-float
vcvtr.s32.f16 s0, s1
vcvtr.u32.f16 s0, s1
@ CHECK: instruction requires: full half-float
@ CHECK: instruction requires: full half-float
vcvt.f16.u32 s0, s0, #20
vcvt.f16.u16 s0, s0, #1
vcvt.f16.s32 s1, s1, #20
vcvt.f16.s16 s17, s17, #1
vcvt.u32.f16 s12, s12, #20
vcvt.u16.f16 s28, s28, #1
vcvt.s32.f16 s1, s1, #20
vcvt.s16.f16 s17, s17, #1
@ CHECK: instruction requires: full half-float
@ CHECK: instruction requires: full half-float
@ CHECK: instruction requires: full half-float
@ CHECK: instruction requires: full half-float
@ CHECK: instruction requires: full half-float
@ CHECK: instruction requires: full half-float
@ CHECK: instruction requires: full half-float
@ CHECK: instruction requires: full half-float
vcvta.s32.f16 s2, s3
@ CHECK: instruction requires: full half-float
vcvtn.s32.f16 s6, s23
@ CHECK: instruction requires: full half-float
vcvtp.s32.f16 s0, s4
@ CHECK: instruction requires: full half-float
vcvtm.s32.f16 s17, s8
@ CHECK: instruction requires: full half-float
vcvta.u32.f16 s2, s3
@ CHECK: instruction requires: full half-float
vcvtn.u32.f16 s6, s23
@ CHECK: instruction requires: full half-float
vcvtp.u32.f16 s0, s4
@ CHECK: instruction requires: full half-float
vcvtm.u32.f16 s17, s8
@ CHECK: instruction requires: full half-float
vselge.f16 s4, s1, s23
@ CHECK: instruction requires: full half-float
vselgt.f16 s0, s1, s0
@ CHECK: instruction requires: full half-float
vseleq.f16 s30, s28, s23
@ CHECK: instruction requires: full half-float
vselvs.f16 s21, s16, s14
@ CHECK: instruction requires: full half-float
vmaxnm.f16 s5, s12, s0
@ CHECK: instruction requires: full half-float
vminnm.f16 s0, s0, s12
@ CHECK: instruction requires: full half-float
vrintz.f16 s3, s24
@ CHECK: instruction requires: full half-float
vrintr.f16 s0, s9
@ CHECK: instruction requires: full half-float
vrintx.f16 s10, s14
@ CHECK: instruction requires: full half-float
vrinta.f16 s12, s1
@ CHECK: instruction requires: full half-float
vrintn.f16 s12, s1
@ CHECK: instruction requires: full half-float
vrintp.f16 s12, s1
@ CHECK: instruction requires: full half-float
vrintm.f16 s12, s1
@ CHECK: instruction requires: full half-float
vfma.f16 s2, s7, s4
@ CHECK: instruction requires: full half-float
vfms.f16 s2, s7, s4
@ CHECK: instruction requires: full half-float
vfnma.f16 s2, s7, s4
@ CHECK: instruction requires: full half-float
vfnms.f16 s2, s7, s4
@ CHECK: instruction requires: full half-float
vmovx.f16 s2, s5
vins.f16 s2, s5
@ CHECK: instruction requires: full half-float
@ CHECK: instruction requires: full half-float
vldr.16 s1, [pc, #6]
vldr.16 s2, [pc, #510]
vldr.16 s3, [pc, #-510]
vldr.16 s4, [r4, #-18]
@ CHECK: instruction requires: 16-bit fp registers
@ CHECK: instruction requires: 16-bit fp registers
@ CHECK: instruction requires: 16-bit fp registers
@ CHECK: instruction requires: 16-bit fp registers
vstr.16 s1, [pc, #6]
vstr.16 s2, [pc, #510]
vstr.16 s3, [pc, #-510]
vstr.16 s4, [r4, #-18]
@ CHECK: instruction requires: 16-bit fp registers
@ CHECK: instruction requires: 16-bit fp registers
@ CHECK: instruction requires: 16-bit fp registers
@ CHECK: instruction requires: 16-bit fp registers
vmov.f16 s0, #1.0
@ CHECK: instruction requires: full half-float
vmov.f16 s1, r2
vmov.f16 r3, s4
@ CHECK: instruction requires: 16-bit fp registers
@ CHECK: instruction requires: 16-bit fp registers