diff options
| author | Oliver Stannard <oliver.stannard@arm.com> | 2015-12-16 12:37:39 +0000 |
|---|---|---|
| committer | Oliver Stannard <oliver.stannard@arm.com> | 2015-12-16 12:37:39 +0000 |
| commit | 2de8c1691304420d2f1050f31c9f25e043ab7874 (patch) | |
| tree | 64bfdc49f345b7df8a2890fd573b528bcb58db67 /llvm/test/MC/Disassembler | |
| parent | 25e241b006559ec6cb188ac32fb7fba0f358bc1b (diff) | |
| download | bcm5719-llvm-2de8c1691304420d2f1050f31c9f25e043ab7874.tar.gz bcm5719-llvm-2de8c1691304420d2f1050f31c9f25e043ab7874.zip | |
[ARM] Add ARMv8.2-A FP16 vector instructions
ARMv8.2-A adds 16-bit floating point versions of all existing SIMD
floating-point instructions. This is an optional extension, so all of
these instructions require the FeatureFullFP16 subtarget feature.
Note that VFP without SIMD is not a valid combination for any version of
ARMv8-A, but I have ensured that these instructions all depend on both
FeatureNEON and FeatureFullFP16 for consistency.
Differential Revision: http://reviews.llvm.org/D15039
llvm-svn: 255764
Diffstat (limited to 'llvm/test/MC/Disassembler')
| -rw-r--r-- | llvm/test/MC/Disassembler/ARM/fullfp16-neon-arm-neg.txt | 274 | ||||
| -rw-r--r-- | llvm/test/MC/Disassembler/ARM/fullfp16-neon-arm.txt | 309 | ||||
| -rw-r--r-- | llvm/test/MC/Disassembler/ARM/fullfp16-neon-thumb-neg.txt | 274 | ||||
| -rw-r--r-- | llvm/test/MC/Disassembler/ARM/fullfp16-neon-thumb.txt | 309 |
4 files changed, 1166 insertions, 0 deletions
diff --git a/llvm/test/MC/Disassembler/ARM/fullfp16-neon-arm-neg.txt b/llvm/test/MC/Disassembler/ARM/fullfp16-neon-arm-neg.txt new file mode 100644 index 00000000000..9c8be171d28 --- /dev/null +++ b/llvm/test/MC/Disassembler/ARM/fullfp16-neon-arm-neg.txt @@ -0,0 +1,274 @@ +# RUN: not llvm-mc -disassemble -triple armv8a-none-eabi -mattr=-fullfp16,+neon -show-encoding < %s 2>&1 | FileCheck %s + +# CHECK: warning: invalid instruction encoding +# CHECK: warning: invalid instruction encoding +[0x02,0x0d,0x11,0xf2] +[0x44,0x0d,0x12,0xf2] + +# CHECK: warning: invalid instruction encoding +# CHECK: warning: invalid instruction encoding +[0x02,0x0d,0x31,0xf2] +[0x44,0x0d,0x32,0xf2] + +# CHECK: warning: invalid instruction encoding +# CHECK: warning: invalid instruction encoding +[0x12,0x0d,0x11,0xf3] +[0x54,0x0d,0x12,0xf3] + +# CHECK: warning: invalid instruction encoding +# CHECK: warning: invalid instruction encoding +[0x63,0x19,0x92,0xf2] +[0x6e,0x89,0x9a,0xf3] + +# CHECK: warning: invalid instruction encoding +# CHECK: warning: invalid instruction encoding +[0x12,0x0d,0x11,0xf2] +[0x54,0x0d,0x12,0xf2] + +# CHECK: warning: invalid instruction encoding +# CHECK: warning: invalid instruction encoding +[0x67,0x51,0x96,0xf2] +[0x6f,0xa1,0x9c,0xf3] + +# CHECK: warning: invalid instruction encoding +# CHECK: warning: invalid instruction encoding +[0x12,0x0d,0x31,0xf2] +[0x54,0x0d,0x32,0xf2] + +# CHECK: warning: invalid instruction encoding +# CHECK: warning: invalid instruction encoding +[0x67,0x55,0x96,0xf2] +[0x6f,0xa5,0x9c,0xf3] + +# CHECK: warning: invalid instruction encoding +# CHECK: warning: invalid instruction encoding +[0x12,0x0c,0x11,0xf2] +[0x54,0x0c,0x12,0xf2] + +# CHECK: warning: invalid instruction encoding +# CHECK: warning: invalid instruction encoding +[0x12,0x0c,0x31,0xf2] +[0x54,0x0c,0x32,0xf2] + +# CHECK: warning: invalid instruction encoding +# CHECK: warning: invalid instruction encoding +[0x04,0x2e,0x13,0xf2] +[0x48,0x4e,0x16,0xf2] + +# CHECK: warning: invalid instruction encoding +# CHECK: warning: invalid instruction encoding +[0x03,0x25,0xb5,0xf3] +[0x46,0x45,0xb5,0xf3] + +# CHECK: warning: invalid instruction encoding +# CHECK: warning: invalid instruction encoding +[0x04,0x2e,0x13,0xf3] +[0x48,0x4e,0x16,0xf3] + +# CHECK: warning: invalid instruction encoding +# CHECK: warning: invalid instruction encoding +[0x83,0x24,0xb5,0xf3] +[0xc6,0x44,0xb5,0xf3] + +# CHECK: warning: invalid instruction encoding +# CHECK: warning: invalid instruction encoding +[0x04,0x2e,0x33,0xf3] +[0x48,0x4e,0x36,0xf3] + +# CHECK: warning: invalid instruction encoding +# CHECK: warning: invalid instruction encoding +[0x03,0x24,0xb5,0xf3] +[0x46,0x44,0xb5,0xf3] + +# CHECK: warning: invalid instruction encoding +# CHECK: warning: invalid instruction encoding +[0x83,0x25,0xb5,0xf3] +[0xc6,0x45,0xb5,0xf3] + +# CHECK: warning: invalid instruction encoding +# CHECK: warning: invalid instruction encoding +[0x03,0x26,0xb5,0xf3] +[0x46,0x46,0xb5,0xf3] + +# CHECK: warning: invalid instruction encoding +# CHECK: warning: invalid instruction encoding +[0x12,0x0e,0x11,0xf3] +[0x54,0x0e,0x12,0xf3] + +# CHECK: warning: invalid instruction encoding +# CHECK: warning: invalid instruction encoding +[0x12,0x0e,0x31,0xf3] +[0x54,0x0e,0x32,0xf3] + +# CHECK: warning: invalid instruction encoding +# CHECK: warning: invalid instruction encoding +[0x02,0x0d,0x31,0xf3] +[0x44,0x0d,0x32,0xf3] + +# CHECK: warning: invalid instruction encoding +# CHECK: warning: invalid instruction encoding +[0x01,0x07,0xb5,0xf3] +[0x42,0x07,0xb5,0xf3] + +# CHECK: warning: invalid instruction encoding +# CHECK: warning: invalid instruction encoding +[0x02,0x0f,0x11,0xf2] +[0x44,0x0f,0x12,0xf2] + +# CHECK: warning: invalid instruction encoding +# CHECK: warning: invalid instruction encoding +[0x02,0x0f,0x31,0xf2] +[0x44,0x0f,0x32,0xf2] + +# CHECK: warning: invalid instruction encoding +# CHECK: warning: invalid instruction encoding +[0x12,0x0f,0x11,0xf3] +[0x54,0x0f,0x12,0xf3] + +# CHECK: warning: invalid instruction encoding +# CHECK: warning: invalid instruction encoding +[0x12,0x0f,0x31,0xf3] +[0x54,0x0f,0x32,0xf3] + +# CHECK: warning: invalid instruction encoding +[0x02,0x0d,0x11,0xf3] + +# CHECK: warning: invalid instruction encoding +[0x02,0x0f,0x11,0xf3] + +# CHECK: warning: invalid instruction encoding +[0x02,0x0f,0x31,0xf3] + +# CHECK: warning: invalid instruction encoding +# CHECK: warning: invalid instruction encoding +[0x01,0x05,0xb7,0xf3] +[0x42,0x05,0xb7,0xf3] + +# CHECK: warning: invalid instruction encoding +# CHECK: warning: invalid instruction encoding +[0x12,0x0f,0x11,0xf2] +[0x54,0x0f,0x12,0xf2] + +# CHECK: warning: invalid instruction encoding +# CHECK: warning: invalid instruction encoding +[0x81,0x05,0xb7,0xf3] +[0xc2,0x05,0xb7,0xf3] + +# CHECK: warning: invalid instruction encoding +# CHECK: warning: invalid instruction encoding +[0x12,0x0f,0x31,0xf2] +[0x54,0x0f,0x32,0xf2] + +# CHECK: warning: invalid instruction encoding +# CHECK: warning: invalid instruction encoding +[0x81,0x07,0xb5,0xf3] +[0xc2,0x07,0xb5,0xf3] + +# CHECK: warning: invalid instruction encoding +# CHECK: warning: invalid instruction encoding +# CHECK: warning: invalid instruction encoding +# CHECK: warning: invalid instruction encoding +# CHECK: warning: invalid instruction encoding +# CHECK: warning: invalid instruction encoding +# CHECK: warning: invalid instruction encoding +# CHECK: warning: invalid instruction encoding +[0x01,0x07,0xb7,0xf3] +[0x81,0x07,0xb7,0xf3] +[0x01,0x06,0xb7,0xf3] +[0x81,0x06,0xb7,0xf3] +[0x42,0x07,0xb7,0xf3] +[0xc2,0x07,0xb7,0xf3] +[0x42,0x06,0xb7,0xf3] +[0xc2,0x06,0xb7,0xf3] + +# CHECK: warning: invalid instruction encoding +# CHECK: warning: invalid instruction encoding +# CHECK: warning: invalid instruction encoding +# CHECK: warning: invalid instruction encoding +[0x01,0x00,0xb7,0xf3] +[0x42,0x00,0xb7,0xf3] +[0x81,0x00,0xb7,0xf3] +[0xc2,0x00,0xb7,0xf3] + +# CHECK: warning: invalid instruction encoding +# CHECK: warning: invalid instruction encoding +# CHECK: warning: invalid instruction encoding +# CHECK: warning: invalid instruction encoding +[0x01,0x03,0xb7,0xf3] +[0x42,0x03,0xb7,0xf3] +[0x81,0x03,0xb7,0xf3] +[0xc2,0x03,0xb7,0xf3] + +# CHECK: warning: invalid instruction encoding +# CHECK: warning: invalid instruction encoding +# CHECK: warning: invalid instruction encoding +# CHECK: warning: invalid instruction encoding +[0x01,0x01,0xb7,0xf3] +[0x42,0x01,0xb7,0xf3] +[0x81,0x01,0xb7,0xf3] +[0xc2,0x01,0xb7,0xf3] + +# CHECK: warning: invalid instruction encoding +# CHECK: warning: invalid instruction encoding +# CHECK: warning: invalid instruction encoding +# CHECK: warning: invalid instruction encoding +[0x01,0x02,0xb7,0xf3] +[0x42,0x02,0xb7,0xf3] +[0x81,0x02,0xb7,0xf3] +[0xc2,0x02,0xb7,0xf3] + +# CHECK: warning: invalid instruction encoding +# CHECK: warning: invalid instruction encoding +# CHECK: warning: invalid instruction encoding +# CHECK: warning: invalid instruction encoding +# CHECK: warning: invalid instruction encoding +# CHECK: warning: invalid instruction encoding +# CHECK: warning: invalid instruction encoding +# CHECK: warning: invalid instruction encoding +[0x11,0x0d,0xbf,0xf2] +[0x11,0x0d,0xbe,0xf3] +[0x11,0x0c,0xbd,0xf2] +[0x11,0x0c,0xbc,0xf3] +[0x52,0x0d,0xbb,0xf2] +[0x52,0x0d,0xba,0xf3] +[0x52,0x0c,0xb9,0xf2] +[0x52,0x0c,0xb8,0xf3] + +# CHECK: warning: invalid instruction encoding +# CHECK: warning: invalid instruction encoding +[0x01,0x05,0xb6,0xf3] +[0x42,0x05,0xb6,0xf3] + +# CHECK: warning: invalid instruction encoding +# CHECK: warning: invalid instruction encoding +[0x81,0x06,0xb6,0xf3] +[0xc2,0x06,0xb6,0xf3] + +# CHECK: warning: invalid instruction encoding +# CHECK: warning: invalid instruction encoding +[0x01,0x04,0xb6,0xf3] +[0x42,0x04,0xb6,0xf3] + +# CHECK: warning: invalid instruction encoding +# CHECK: warning: invalid instruction encoding +[0x81,0x07,0xb6,0xf3] +[0xc2,0x07,0xb6,0xf3] + +# CHECK: warning: invalid instruction encoding +# CHECK: warning: invalid instruction encoding +[0x81,0x04,0xb6,0xf3] +[0xc2,0x04,0xb6,0xf3] + +# CHECK: warning: invalid instruction encoding +# CHECK: warning: invalid instruction encoding +[0x81,0x05,0xb6,0xf3] +[0xc2,0x05,0xb6,0xf3] + +# CHECK: warning: invalid instruction encoding +# CHECK: warning: invalid instruction encoding +# CHECK: warning: invalid instruction encoding +[0x20,0x0d,0xc7,0xf2] +[0x20,0x0f,0xc7,0xf2] +[0x70,0x0f,0xc7,0xf2] + +# CHECK-NOT: warning: invalid instruction encoding diff --git a/llvm/test/MC/Disassembler/ARM/fullfp16-neon-arm.txt b/llvm/test/MC/Disassembler/ARM/fullfp16-neon-arm.txt new file mode 100644 index 00000000000..232bd641f05 --- /dev/null +++ b/llvm/test/MC/Disassembler/ARM/fullfp16-neon-arm.txt @@ -0,0 +1,309 @@ +# RUN: not llvm-mc -disassemble -triple armv8a-none-eabi -mattr=+fullfp16,+neon -show-encoding < %s 2>%t | FileCheck %s +# RUN FileCheck %s < %t --check-prefix=STDERR + +# CHECK: vadd.f16 d0, d1, d2 +# CHECK: vadd.f16 q0, q1, q2 +[0x02,0x0d,0x11,0xf2] +[0x44,0x0d,0x12,0xf2] + +# CHECK: vsub.f16 d0, d1, d2 +# CHECK: vsub.f16 q0, q1, q2 +[0x02,0x0d,0x31,0xf2] +[0x44,0x0d,0x32,0xf2] + +# CHECK: vmul.f16 d0, d1, d2 +# CHECK: vmul.f16 q0, q1, q2 +[0x12,0x0d,0x11,0xf3] +[0x54,0x0d,0x12,0xf3] + +# CHECK: vmul.f16 d1, d2, d3[2] +# CHECK: vmul.f16 q4, q5, d6[3] +[0x63,0x19,0x92,0xf2] +[0x6e,0x89,0x9a,0xf3] + +# CHECK: vmla.f16 d0, d1, d2 +# CHECK: vmla.f16 q0, q1, q2 +[0x12,0x0d,0x11,0xf2] +[0x54,0x0d,0x12,0xf2] + +# CHECK: vmla.f16 d5, d6, d7[2] +# CHECK: vmla.f16 q5, q6, d7[3] +[0x67,0x51,0x96,0xf2] +[0x6f,0xa1,0x9c,0xf3] + +# CHECK: vmls.f16 d0, d1, d2 +# CHECK: vmls.f16 q0, q1, q2 +[0x12,0x0d,0x31,0xf2] +[0x54,0x0d,0x32,0xf2] + +# CHECK: vmls.f16 d5, d6, d7[2] +# CHECK: vmls.f16 q5, q6, d7[3] +[0x67,0x55,0x96,0xf2] +[0x6f,0xa5,0x9c,0xf3] + +# CHECK: vfma.f16 d0, d1, d2 +# CHECK: vfma.f16 q0, q1, q2 +[0x12,0x0c,0x11,0xf2] +[0x54,0x0c,0x12,0xf2] + +# CHECK: vfms.f16 d0, d1, d2 +# CHECK: vfms.f16 q0, q1, q2 +[0x12,0x0c,0x31,0xf2] +[0x54,0x0c,0x32,0xf2] + +# CHECK: vceq.f16 d2, d3, d4 +# CHECK: vceq.f16 q2, q3, q4 +[0x04,0x2e,0x13,0xf2] +[0x48,0x4e,0x16,0xf2] + +# CHECK: vceq.f16 d2, d3, #0 +# CHECK: vceq.f16 q2, q3, #0 +[0x03,0x25,0xb5,0xf3] +[0x46,0x45,0xb5,0xf3] + +# CHECK: vcge.f16 d2, d3, d4 +# CHECK: vcge.f16 q2, q3, q4 +[0x04,0x2e,0x13,0xf3] +[0x48,0x4e,0x16,0xf3] + +# CHECK: vcge.f16 d2, d3, #0 +# CHECK: vcge.f16 q2, q3, #0 +[0x83,0x24,0xb5,0xf3] +[0xc6,0x44,0xb5,0xf3] + +# CHECK: vcgt.f16 d2, d3, d4 +# CHECK: vcgt.f16 q2, q3, q4 +[0x04,0x2e,0x33,0xf3] +[0x48,0x4e,0x36,0xf3] + +# CHECK: vcgt.f16 d2, d3, #0 +# CHECK: vcgt.f16 q2, q3, #0 +[0x03,0x24,0xb5,0xf3] +[0x46,0x44,0xb5,0xf3] + +# CHECK: vcle.f16 d2, d3, #0 +# CHECK: vcle.f16 q2, q3, #0 +[0x83,0x25,0xb5,0xf3] +[0xc6,0x45,0xb5,0xf3] + +# CHECK: vclt.f16 d2, d3, #0 +# CHECK: vclt.f16 q2, q3, #0 +[0x03,0x26,0xb5,0xf3] +[0x46,0x46,0xb5,0xf3] + +# CHECK: vacge.f16 d0, d1, d2 +# CHECK: vacge.f16 q0, q1, q2 +[0x12,0x0e,0x11,0xf3] +[0x54,0x0e,0x12,0xf3] + +# CHECK: vacgt.f16 d0, d1, d2 +# CHECK: vacgt.f16 q0, q1, q2 +[0x12,0x0e,0x31,0xf3] +[0x54,0x0e,0x32,0xf3] + +# CHECK: vabd.f16 d0, d1, d2 +# CHECK: vabd.f16 q0, q1, q2 +[0x02,0x0d,0x31,0xf3] +[0x44,0x0d,0x32,0xf3] + +# CHECK: vabs.f16 d0, d1 +# CHECK: vabs.f16 q0, q1 +[0x01,0x07,0xb5,0xf3] +[0x42,0x07,0xb5,0xf3] + +# CHECK: vmax.f16 d0, d1, d2 +# CHECK: vmax.f16 q0, q1, q2 +[0x02,0x0f,0x11,0xf2] +[0x44,0x0f,0x12,0xf2] + +# CHECK: vmin.f16 d0, d1, d2 +# CHECK: vmin.f16 q0, q1, q2 +[0x02,0x0f,0x31,0xf2] +[0x44,0x0f,0x32,0xf2] + +# CHECK: vmaxnm.f16 d0, d1, d2 +# CHECK: vmaxnm.f16 q0, q1, q2 +[0x12,0x0f,0x11,0xf3] +[0x54,0x0f,0x12,0xf3] + +# CHECK: vminnm.f16 d0, d1, d2 +# CHECK: vminnm.f16 q0, q1, q2 +[0x12,0x0f,0x31,0xf3] +[0x54,0x0f,0x32,0xf3] + +# CHECK: vpadd.f16 d0, d1, d2 +[0x02,0x0d,0x11,0xf3] + +# CHECK: vpmax.f16 d0, d1, d2 +[0x02,0x0f,0x11,0xf3] + +# CHECK: vpmin.f16 d0, d1, d2 +[0x02,0x0f,0x31,0xf3] + +# CHECK: vrecpe.f16 d0, d1 +# CHECK: vrecpe.f16 q0, q1 +[0x01,0x05,0xb7,0xf3] +[0x42,0x05,0xb7,0xf3] + +# CHECK: vrecps.f16 d0, d1, d2 +# CHECK: vrecps.f16 q0, q1, q2 +[0x12,0x0f,0x11,0xf2] +[0x54,0x0f,0x12,0xf2] + +# CHECK: vrsqrte.f16 d0, d1 +# CHECK: vrsqrte.f16 q0, q1 +[0x81,0x05,0xb7,0xf3] +[0xc2,0x05,0xb7,0xf3] + +# CHECK: vrsqrts.f16 d0, d1, d2 +# CHECK: vrsqrts.f16 q0, q1, q2 +[0x12,0x0f,0x31,0xf2] +[0x54,0x0f,0x32,0xf2] + +# CHECK: vneg.f16 d0, d1 +# CHECK: vneg.f16 q0, q1 +[0x81,0x07,0xb5,0xf3] +[0xc2,0x07,0xb5,0xf3] + +# CHECK: vcvt.s16.f16 d0, d1 +# CHECK: vcvt.u16.f16 d0, d1 +# CHECK: vcvt.f16.s16 d0, d1 +# CHECK: vcvt.f16.u16 d0, d1 +# CHECK: vcvt.s16.f16 q0, q1 +# CHECK: vcvt.u16.f16 q0, q1 +# CHECK: vcvt.f16.s16 q0, q1 +# CHECK: vcvt.f16.u16 q0, q1 +[0x01,0x07,0xb7,0xf3] +[0x81,0x07,0xb7,0xf3] +[0x01,0x06,0xb7,0xf3] +[0x81,0x06,0xb7,0xf3] +[0x42,0x07,0xb7,0xf3] +[0xc2,0x07,0xb7,0xf3] +[0x42,0x06,0xb7,0xf3] +[0xc2,0x06,0xb7,0xf3] + +# CHECK: vcvta.s16.f16 d0, d1 +# CHECK: vcvta.s16.f16 q0, q1 +# CHECK: vcvta.u16.f16 d0, d1 +# CHECK: vcvta.u16.f16 q0, q1 +[0x01,0x00,0xb7,0xf3] +[0x42,0x00,0xb7,0xf3] +[0x81,0x00,0xb7,0xf3] +[0xc2,0x00,0xb7,0xf3] + +# CHECK: vcvtm.s16.f16 d0, d1 +# CHECK: vcvtm.s16.f16 q0, q1 +# CHECK: vcvtm.u16.f16 d0, d1 +# CHECK: vcvtm.u16.f16 q0, q1 +[0x01,0x03,0xb7,0xf3] +[0x42,0x03,0xb7,0xf3] +[0x81,0x03,0xb7,0xf3] +[0xc2,0x03,0xb7,0xf3] + +# CHECK: vcvtn.s16.f16 d0, d1 +# CHECK: vcvtn.s16.f16 q0, q1 +# CHECK: vcvtn.u16.f16 d0, d1 +# CHECK: vcvtn.u16.f16 q0, q1 +[0x01,0x01,0xb7,0xf3] +[0x42,0x01,0xb7,0xf3] +[0x81,0x01,0xb7,0xf3] +[0xc2,0x01,0xb7,0xf3] + +# CHECK: vcvtp.s16.f16 d0, d1 +# CHECK: vcvtp.s16.f16 q0, q1 +# CHECK: vcvtp.u16.f16 d0, d1 +# CHECK: vcvtp.u16.f16 q0, q1 +[0x01,0x02,0xb7,0xf3] +[0x42,0x02,0xb7,0xf3] +[0x81,0x02,0xb7,0xf3] +[0xc2,0x02,0xb7,0xf3] + +# CHECK: vcvt.s16.f16 d0, d1, #1 +# CHECK: vcvt.u16.f16 d0, d1, #2 +# CHECK: vcvt.f16.s16 d0, d1, #3 +# CHECK: vcvt.f16.u16 d0, d1, #4 +# CHECK: vcvt.s16.f16 q0, q1, #5 +# CHECK: vcvt.u16.f16 q0, q1, #6 +# CHECK: vcvt.f16.s16 q0, q1, #7 +# CHECK: vcvt.f16.u16 q0, q1, #8 +[0x11,0x0d,0xbf,0xf2] +[0x11,0x0d,0xbe,0xf3] +[0x11,0x0c,0xbd,0xf2] +[0x11,0x0c,0xbc,0xf3] +[0x52,0x0d,0xbb,0xf2] +[0x52,0x0d,0xba,0xf3] +[0x52,0x0c,0xb9,0xf2] +[0x52,0x0c,0xb8,0xf3] + +# CHECK: vrinta.f16 d0, d1 +# CHECK: vrinta.f16 q0, q1 +[0x01,0x05,0xb6,0xf3] +[0x42,0x05,0xb6,0xf3] + +# CHECK: vrintm.f16 d0, d1 +# CHECK: vrintm.f16 q0, q1 +[0x81,0x06,0xb6,0xf3] +[0xc2,0x06,0xb6,0xf3] + +# CHECK: vrintn.f16 d0, d1 +# CHECK: vrintn.f16 q0, q1 +[0x01,0x04,0xb6,0xf3] +[0x42,0x04,0xb6,0xf3] + +# CHECK: vrintp.f16 d0, d1 +# CHECK: vrintp.f16 q0, q1 +[0x81,0x07,0xb6,0xf3] +[0xc2,0x07,0xb6,0xf3] + +# CHECK: vrintx.f16 d0, d1 +# CHECK: vrintx.f16 q0, q1 +[0x81,0x04,0xb6,0xf3] +[0xc2,0x04,0xb6,0xf3] + +# CHECK: vrintz.f16 d0, d1 +# CHECK: vrintz.f16 q0, q1 +[0x81,0x05,0xb6,0xf3] +[0xc2,0x05,0xb6,0xf3] + +# Existing VMOV(immediate, Advanced SIMD) instructions within the encoding +# space of the new FP16 VCVT(between floating - point and fixed - point, +# Advanced SIMD): +# 4 -- Q +# 2 -- VMOV op +# 1 -- VCVT op +# 2 -- VCVT FP size +[0x10,0x0c,0xc7,0xf2] +[0x10,0x0d,0xc7,0xf2] +[0x10,0x0e,0xc7,0xf2] +[0x10,0x0f,0xc7,0xf2] +[0x20,0x0c,0xc7,0xf2] +[0x20,0x0d,0xc7,0xf2] +[0x20,0x0e,0xc7,0xf2] +[0x20,0x0f,0xc7,0xf2] +[0x50,0x0c,0xc7,0xf2] +[0x50,0x0d,0xc7,0xf2] +[0x50,0x0e,0xc7,0xf2] +[0x50,0x0f,0xc7,0xf2] +[0x70,0x0c,0xc7,0xf2] +[0x70,0x0d,0xc7,0xf2] +[0x70,0x0e,0xc7,0xf2] +[0x70,0x0f,0xc7,0xf2] +# CHECK: vmov.i32 d16, #0x70ff +# CHECK: vmov.i32 d16, #0x70ffff +# CHECK: vmov.i8 d16, #0x70 +# CHECK: vmov.f32 d16, #1.000000e+00 +# CHECK: vmull.s8 q8, d7, d16 +# STDERR: warning: invalid instruction encoding +# STDERR-NEXT: [0x20,0x0d,0xc7,0xf2] +# CHECK: vmull.p8 q8, d7, d16 +# STDERR: warning: invalid instruction encoding +# STDERR-NEXT: [0x20,0x0f,0xc7,0xf2] +# CHECK: vmov.i32 q8, #0x70ff +# CHECK: vmov.i32 q8, #0x70ffff +# CHECK: vmov.i8 q8, #0x70 +# CHECK: vmov.f32 q8, #1.000000e+00 +# CHECK: vmvn.i32 q8, #0x70ff +# CHECK: vmvn.i32 q8, #0x70ffff +# CHECK: vmov.i64 q8, #0xffffff0000000 +# STDERR: warning: invalid instruction encoding +# STDERR-NEXT: [0x70,0x0f,0xc7,0xf2] diff --git a/llvm/test/MC/Disassembler/ARM/fullfp16-neon-thumb-neg.txt b/llvm/test/MC/Disassembler/ARM/fullfp16-neon-thumb-neg.txt new file mode 100644 index 00000000000..f7561bb4096 --- /dev/null +++ b/llvm/test/MC/Disassembler/ARM/fullfp16-neon-thumb-neg.txt @@ -0,0 +1,274 @@ +# RUN: not llvm-mc -disassemble -triple thumbv8a-none-eabi -mattr=-fullfp16,+neon,+thumb-mode -show-encoding < %s 2>&1 | FileCheck %s + +# CHECK: warning: invalid instruction encoding +# CHECK: warning: invalid instruction encoding +[0x11,0xef,0x02,0x0d] +[0x12,0xef,0x44,0x0d] + +# CHECK: warning: invalid instruction encoding +# CHECK: warning: invalid instruction encoding +[0x31,0xef,0x02,0x0d] +[0x32,0xef,0x44,0x0d] + +# CHECK: warning: invalid instruction encoding +# CHECK: warning: invalid instruction encoding +[0x11,0xff,0x12,0x0d] +[0x12,0xff,0x54,0x0d] + +# CHECK: warning: invalid instruction encoding +# CHECK: warning: invalid instruction encoding +[0x92,0xef,0x63,0x19] +[0x9a,0xff,0x6e,0x89] + +# CHECK: warning: invalid instruction encoding +# CHECK: warning: invalid instruction encoding +[0x11,0xef,0x12,0x0d] +[0x12,0xef,0x54,0x0d] + +# CHECK: warning: invalid instruction encoding +# CHECK: warning: invalid instruction encoding +[0x96,0xef,0x67,0x51] +[0x9c,0xff,0x6f,0xa1] + +# CHECK: warning: invalid instruction encoding +# CHECK: warning: invalid instruction encoding +[0x31,0xef,0x12,0x0d] +[0x32,0xef,0x54,0x0d] + +# CHECK: warning: invalid instruction encoding +# CHECK: warning: invalid instruction encoding +[0x96,0xef,0x67,0x55] +[0x9c,0xff,0x6f,0xa5] + +# CHECK: warning: invalid instruction encoding +# CHECK: warning: invalid instruction encoding +[0x11,0xef,0x12,0x0c] +[0x12,0xef,0x54,0x0c] + +# CHECK: warning: invalid instruction encoding +# CHECK: warning: invalid instruction encoding +[0x31,0xef,0x12,0x0c] +[0x32,0xef,0x54,0x0c] + +# CHECK: warning: invalid instruction encoding +# CHECK: warning: invalid instruction encoding +[0x13,0xef,0x04,0x2e] +[0x16,0xef,0x48,0x4e] + +# CHECK: warning: invalid instruction encoding +# CHECK: warning: invalid instruction encoding +[0xb5,0xff,0x03,0x25] +[0xb5,0xff,0x46,0x45] + +# CHECK: warning: invalid instruction encoding +# CHECK: warning: invalid instruction encoding +[0x13,0xff,0x04,0x2e] +[0x16,0xff,0x48,0x4e] + +# CHECK: warning: invalid instruction encoding +# CHECK: warning: invalid instruction encoding +[0xb5,0xff,0x83,0x24] +[0xb5,0xff,0xc6,0x44] + +# CHECK: warning: invalid instruction encoding +# CHECK: warning: invalid instruction encoding +[0x33,0xff,0x04,0x2e] +[0x36,0xff,0x48,0x4e] + +# CHECK: warning: invalid instruction encoding +# CHECK: warning: invalid instruction encoding +[0xb5,0xff,0x03,0x24] +[0xb5,0xff,0x46,0x44] + +# CHECK: warning: invalid instruction encoding +# CHECK: warning: invalid instruction encoding +[0xb5,0xff,0x83,0x25] +[0xb5,0xff,0xc6,0x45] + +# CHECK: warning: invalid instruction encoding +# CHECK: warning: invalid instruction encoding +[0xb5,0xff,0x03,0x26] +[0xb5,0xff,0x46,0x46] + +# CHECK: warning: invalid instruction encoding +# CHECK: warning: invalid instruction encoding +[0x11,0xff,0x12,0x0e] +[0x12,0xff,0x54,0x0e] + +# CHECK: warning: invalid instruction encoding +# CHECK: warning: invalid instruction encoding +[0x31,0xff,0x12,0x0e] +[0x32,0xff,0x54,0x0e] + +# CHECK: warning: invalid instruction encoding +# CHECK: warning: invalid instruction encoding +[0x31,0xff,0x02,0x0d] +[0x32,0xff,0x44,0x0d] + +# CHECK: warning: invalid instruction encoding +# CHECK: warning: invalid instruction encoding +[0xb5,0xff,0x01,0x07] +[0xb5,0xff,0x42,0x07] + +# CHECK: warning: invalid instruction encoding +# CHECK: warning: invalid instruction encoding +[0x11,0xef,0x02,0x0f] +[0x12,0xef,0x44,0x0f] + +# CHECK: warning: invalid instruction encoding +# CHECK: warning: invalid instruction encoding +[0x31,0xef,0x02,0x0f] +[0x32,0xef,0x44,0x0f] + +# CHECK: warning: invalid instruction encoding +# CHECK: warning: invalid instruction encoding +[0x11,0xff,0x12,0x0f] +[0x12,0xff,0x54,0x0f] + +# CHECK: warning: invalid instruction encoding +# CHECK: warning: invalid instruction encoding +[0x31,0xff,0x12,0x0f] +[0x32,0xff,0x54,0x0f] + +# CHECK: warning: invalid instruction encoding +[0x11,0xff,0x02,0x0d] + +# CHECK: warning: invalid instruction encoding +[0x11,0xff,0x02,0x0f] + +# CHECK: warning: invalid instruction encoding +[0x31,0xff,0x02,0x0f] + +# CHECK: warning: invalid instruction encoding +# CHECK: warning: invalid instruction encoding +[0xb7,0xff,0x01,0x05] +[0xb7,0xff,0x42,0x05] + +# CHECK: warning: invalid instruction encoding +# CHECK: warning: invalid instruction encoding +[0x11,0xef,0x12,0x0f] +[0x12,0xef,0x54,0x0f] + +# CHECK: warning: invalid instruction encoding +# CHECK: warning: invalid instruction encoding +[0xb7,0xff,0x81,0x05] +[0xb7,0xff,0xc2,0x05] + +# CHECK: warning: invalid instruction encoding +# CHECK: warning: invalid instruction encoding +[0x31,0xef,0x12,0x0f] +[0x32,0xef,0x54,0x0f] + +# CHECK: warning: invalid instruction encoding +# CHECK: warning: invalid instruction encoding +[0xb5,0xff,0x81,0x07] +[0xb5,0xff,0xc2,0x07] + +# CHECK: warning: invalid instruction encoding +# CHECK: warning: invalid instruction encoding +# CHECK: warning: invalid instruction encoding +# CHECK: warning: invalid instruction encoding +# CHECK: warning: invalid instruction encoding +# CHECK: warning: invalid instruction encoding +# CHECK: warning: invalid instruction encoding +# CHECK: warning: invalid instruction encoding +[0xb7,0xff,0x01,0x07] +[0xb7,0xff,0x81,0x07] +[0xb7,0xff,0x01,0x06] +[0xb7,0xff,0x81,0x06] +[0xb7,0xff,0x42,0x07] +[0xb7,0xff,0xc2,0x07] +[0xb7,0xff,0x42,0x06] +[0xb7,0xff,0xc2,0x06] + +# CHECK: warning: invalid instruction encoding +# CHECK: warning: invalid instruction encoding +# CHECK: warning: invalid instruction encoding +# CHECK: warning: invalid instruction encoding +[0xb7,0xff,0x01,0x00] +[0xb7,0xff,0x42,0x00] +[0xb7,0xff,0x81,0x00] +[0xb7,0xff,0xc2,0x00] + +# CHECK: warning: invalid instruction encoding +# CHECK: warning: invalid instruction encoding +# CHECK: warning: invalid instruction encoding +# CHECK: warning: invalid instruction encoding +[0xb7,0xff,0x01,0x03] +[0xb7,0xff,0x42,0x03] +[0xb7,0xff,0x81,0x03] +[0xb7,0xff,0xc2,0x03] + +# CHECK: warning: invalid instruction encoding +# CHECK: warning: invalid instruction encoding +# CHECK: warning: invalid instruction encoding +# CHECK: warning: invalid instruction encoding +[0xb7,0xff,0x01,0x01] +[0xb7,0xff,0x42,0x01] +[0xb7,0xff,0x81,0x01] +[0xb7,0xff,0xc2,0x01] + +# CHECK: warning: invalid instruction encoding +# CHECK: warning: invalid instruction encoding +# CHECK: warning: invalid instruction encoding +# CHECK: warning: invalid instruction encoding +[0xb7,0xff,0x01,0x02] +[0xb7,0xff,0x42,0x02] +[0xb7,0xff,0x81,0x02] +[0xb7,0xff,0xc2,0x02] + +# CHECK: warning: invalid instruction encoding +# CHECK: warning: invalid instruction encoding +# CHECK: warning: invalid instruction encoding +# CHECK: warning: invalid instruction encoding +# CHECK: warning: invalid instruction encoding +# CHECK: warning: invalid instruction encoding +# CHECK: warning: invalid instruction encoding +# CHECK: warning: invalid instruction encoding +[0xbf,0xef,0x11,0x0d] +[0xbe,0xff,0x11,0x0d] +[0xbd,0xef,0x11,0x0c] +[0xbc,0xff,0x11,0x0c] +[0xbb,0xef,0x52,0x0d] +[0xba,0xff,0x52,0x0d] +[0xb9,0xef,0x52,0x0c] +[0xb8,0xff,0x52,0x0c] + +# CHECK: warning: invalid instruction encoding +# CHECK: warning: invalid instruction encoding +[0xb6,0xff,0x01,0x05] +[0xb6,0xff,0x42,0x05] + +# CHECK: warning: invalid instruction encoding +# CHECK: warning: invalid instruction encoding +[0xb6,0xff,0x81,0x06] +[0xb6,0xff,0xc2,0x06] + +# CHECK: warning: invalid instruction encoding +# CHECK: warning: invalid instruction encoding +[0xb6,0xff,0x01,0x04] +[0xb6,0xff,0x42,0x04] + +# CHECK: warning: invalid instruction encoding +# CHECK: warning: invalid instruction encoding +[0xb6,0xff,0x81,0x07] +[0xb6,0xff,0xc2,0x07] + +# CHECK: warning: invalid instruction encoding +# CHECK: warning: invalid instruction encoding +[0xb6,0xff,0x81,0x04] +[0xb6,0xff,0xc2,0x04] + +# CHECK: warning: invalid instruction encoding +# CHECK: warning: invalid instruction encoding +[0xb6,0xff,0x81,0x05] +[0xb6,0xff,0xc2,0x05] + +# CHECK: warning: invalid instruction encoding +# CHECK: warning: invalid instruction encoding +# CHECK: warning: invalid instruction encoding +[0xc7,0xef,0x20,0x0d] +[0xc7,0xef,0x20,0x0f] +[0xc7,0xef,0x70,0x0f] + +# CHECK-NOT: warning: invalid instruction encoding diff --git a/llvm/test/MC/Disassembler/ARM/fullfp16-neon-thumb.txt b/llvm/test/MC/Disassembler/ARM/fullfp16-neon-thumb.txt new file mode 100644 index 00000000000..a776232b714 --- /dev/null +++ b/llvm/test/MC/Disassembler/ARM/fullfp16-neon-thumb.txt @@ -0,0 +1,309 @@ +# RUN: not llvm-mc -disassemble -triple thumbv8a-none-eabi -mattr=+fullfp16,+neon,+thumb-mode -show-encoding < %s 2>%t | FileCheck %s +# RUN FileCheck %s < %t --check-prefix=STDERR + +# CHECK: vadd.f16 d0, d1, d2 +# CHECK: vadd.f16 q0, q1, q2 +[0x11,0xef,0x02,0x0d] +[0x12,0xef,0x44,0x0d] + +# CHECK: vsub.f16 d0, d1, d2 +# CHECK: vsub.f16 q0, q1, q2 +[0x31,0xef,0x02,0x0d] +[0x32,0xef,0x44,0x0d] + +# CHECK: vmul.f16 d0, d1, d2 +# CHECK: vmul.f16 q0, q1, q2 +[0x11,0xff,0x12,0x0d] +[0x12,0xff,0x54,0x0d] + +# CHECK: vmul.f16 d1, d2, d3[2] +# CHECK: vmul.f16 q4, q5, d6[3] +[0x92,0xef,0x63,0x19] +[0x9a,0xff,0x6e,0x89] + +# CHECK: vmla.f16 d0, d1, d2 +# CHECK: vmla.f16 q0, q1, q2 +[0x11,0xef,0x12,0x0d] +[0x12,0xef,0x54,0x0d] + +# CHECK: vmla.f16 d5, d6, d7[2] +# CHECK: vmla.f16 q5, q6, d7[3] +[0x96,0xef,0x67,0x51] +[0x9c,0xff,0x6f,0xa1] + +# CHECK: vmls.f16 d0, d1, d2 +# CHECK: vmls.f16 q0, q1, q2 +[0x31,0xef,0x12,0x0d] +[0x32,0xef,0x54,0x0d] + +# CHECK: vmls.f16 d5, d6, d7[2] +# CHECK: vmls.f16 q5, q6, d7[3] +[0x96,0xef,0x67,0x55] +[0x9c,0xff,0x6f,0xa5] + +# CHECK: vfma.f16 d0, d1, d2 +# CHECK: vfma.f16 q0, q1, q2 +[0x11,0xef,0x12,0x0c] +[0x12,0xef,0x54,0x0c] + +# CHECK: vfms.f16 d0, d1, d2 +# CHECK: vfms.f16 q0, q1, q2 +[0x31,0xef,0x12,0x0c] +[0x32,0xef,0x54,0x0c] + +# CHECK: vceq.f16 d2, d3, d4 +# CHECK: vceq.f16 q2, q3, q4 +[0x13,0xef,0x04,0x2e] +[0x16,0xef,0x48,0x4e] + +# CHECK: vceq.f16 d2, d3, #0 +# CHECK: vceq.f16 q2, q3, #0 +[0xb5,0xff,0x03,0x25] +[0xb5,0xff,0x46,0x45] + +# CHECK: vcge.f16 d2, d3, d4 +# CHECK: vcge.f16 q2, q3, q4 +[0x13,0xff,0x04,0x2e] +[0x16,0xff,0x48,0x4e] + +# CHECK: vcge.f16 d2, d3, #0 +# CHECK: vcge.f16 q2, q3, #0 +[0xb5,0xff,0x83,0x24] +[0xb5,0xff,0xc6,0x44] + +# CHECK: vcgt.f16 d2, d3, d4 +# CHECK: vcgt.f16 q2, q3, q4 +[0x33,0xff,0x04,0x2e] +[0x36,0xff,0x48,0x4e] + +# CHECK: vcgt.f16 d2, d3, #0 +# CHECK: vcgt.f16 q2, q3, #0 +[0xb5,0xff,0x03,0x24] +[0xb5,0xff,0x46,0x44] + +# CHECK: vcle.f16 d2, d3, #0 +# CHECK: vcle.f16 q2, q3, #0 +[0xb5,0xff,0x83,0x25] +[0xb5,0xff,0xc6,0x45] + +# CHECK: vclt.f16 d2, d3, #0 +# CHECK: vclt.f16 q2, q3, #0 +[0xb5,0xff,0x03,0x26] +[0xb5,0xff,0x46,0x46] + +# CHECK: vacge.f16 d0, d1, d2 +# CHECK: vacge.f16 q0, q1, q2 +[0x11,0xff,0x12,0x0e] +[0x12,0xff,0x54,0x0e] + +# CHECK: vacgt.f16 d0, d1, d2 +# CHECK: vacgt.f16 q0, q1, q2 +[0x31,0xff,0x12,0x0e] +[0x32,0xff,0x54,0x0e] + +# CHECK: vabd.f16 d0, d1, d2 +# CHECK: vabd.f16 q0, q1, q2 +[0x31,0xff,0x02,0x0d] +[0x32,0xff,0x44,0x0d] + +# CHECK: vabs.f16 d0, d1 +# CHECK: vabs.f16 q0, q1 +[0xb5,0xff,0x01,0x07] +[0xb5,0xff,0x42,0x07] + +# CHECK: vmax.f16 d0, d1, d2 +# CHECK: vmax.f16 q0, q1, q2 +[0x11,0xef,0x02,0x0f] +[0x12,0xef,0x44,0x0f] + +# CHECK: vmin.f16 d0, d1, d2 +# CHECK: vmin.f16 q0, q1, q2 +[0x31,0xef,0x02,0x0f] +[0x32,0xef,0x44,0x0f] + +# CHECK: vmaxnm.f16 d0, d1, d2 +# CHECK: vmaxnm.f16 q0, q1, q2 +[0x11,0xff,0x12,0x0f] +[0x12,0xff,0x54,0x0f] + +# CHECK: vminnm.f16 d0, d1, d2 +# CHECK: vminnm.f16 q0, q1, q2 +[0x31,0xff,0x12,0x0f] +[0x32,0xff,0x54,0x0f] + +# CHECK: vpadd.f16 d0, d1, d2 +[0x11,0xff,0x02,0x0d] + +# CHECK: vpmax.f16 d0, d1, d2 +[0x11,0xff,0x02,0x0f] + +# CHECK: vpmin.f16 d0, d1, d2 +[0x31,0xff,0x02,0x0f] + +# CHECK: vrecpe.f16 d0, d1 +# CHECK: vrecpe.f16 q0, q1 +[0xb7,0xff,0x01,0x05] +[0xb7,0xff,0x42,0x05] + +# CHECK: vrecps.f16 d0, d1, d2 +# CHECK: vrecps.f16 q0, q1, q2 +[0x11,0xef,0x12,0x0f] +[0x12,0xef,0x54,0x0f] + +# CHECK: vrsqrte.f16 d0, d1 +# CHECK: vrsqrte.f16 q0, q1 +[0xb7,0xff,0x81,0x05] +[0xb7,0xff,0xc2,0x05] + +# CHECK: vrsqrts.f16 d0, d1, d2 +# CHECK: vrsqrts.f16 q0, q1, q2 +[0x31,0xef,0x12,0x0f] +[0x32,0xef,0x54,0x0f] + +# CHECK: vneg.f16 d0, d1 +# CHECK: vneg.f16 q0, q1 +[0xb5,0xff,0x81,0x07] +[0xb5,0xff,0xc2,0x07] + +# CHECK: vcvt.s16.f16 d0, d1 +# CHECK: vcvt.u16.f16 d0, d1 +# CHECK: vcvt.f16.s16 d0, d1 +# CHECK: vcvt.f16.u16 d0, d1 +# CHECK: vcvt.s16.f16 q0, q1 +# CHECK: vcvt.u16.f16 q0, q1 +# CHECK: vcvt.f16.s16 q0, q1 +# CHECK: vcvt.f16.u16 q0, q1 +[0xb7,0xff,0x01,0x07] +[0xb7,0xff,0x81,0x07] +[0xb7,0xff,0x01,0x06] +[0xb7,0xff,0x81,0x06] +[0xb7,0xff,0x42,0x07] +[0xb7,0xff,0xc2,0x07] +[0xb7,0xff,0x42,0x06] +[0xb7,0xff,0xc2,0x06] + +# CHECK: vcvta.s16.f16 d0, d1 +# CHECK: vcvta.s16.f16 q0, q1 +# CHECK: vcvta.u16.f16 d0, d1 +# CHECK: vcvta.u16.f16 q0, q1 +[0xb7,0xff,0x01,0x00] +[0xb7,0xff,0x42,0x00] +[0xb7,0xff,0x81,0x00] +[0xb7,0xff,0xc2,0x00] + +# CHECK: vcvtm.s16.f16 d0, d1 +# CHECK: vcvtm.s16.f16 q0, q1 +# CHECK: vcvtm.u16.f16 d0, d1 +# CHECK: vcvtm.u16.f16 q0, q1 +[0xb7,0xff,0x01,0x03] +[0xb7,0xff,0x42,0x03] +[0xb7,0xff,0x81,0x03] +[0xb7,0xff,0xc2,0x03] + +# CHECK: vcvtn.s16.f16 d0, d1 +# CHECK: vcvtn.s16.f16 q0, q1 +# CHECK: vcvtn.u16.f16 d0, d1 +# CHECK: vcvtn.u16.f16 q0, q1 +[0xb7,0xff,0x01,0x01] +[0xb7,0xff,0x42,0x01] +[0xb7,0xff,0x81,0x01] +[0xb7,0xff,0xc2,0x01] + +# CHECK: vcvtp.s16.f16 d0, d1 +# CHECK: vcvtp.s16.f16 q0, q1 +# CHECK: vcvtp.u16.f16 d0, d1 +# CHECK: vcvtp.u16.f16 q0, q1 +[0xb7,0xff,0x01,0x02] +[0xb7,0xff,0x42,0x02] +[0xb7,0xff,0x81,0x02] +[0xb7,0xff,0xc2,0x02] + +# CHECK: vcvt.s16.f16 d0, d1, #1 +# CHECK: vcvt.u16.f16 d0, d1, #2 +# CHECK: vcvt.f16.s16 d0, d1, #3 +# CHECK: vcvt.f16.u16 d0, d1, #4 +# CHECK: vcvt.s16.f16 q0, q1, #5 +# CHECK: vcvt.u16.f16 q0, q1, #6 +# CHECK: vcvt.f16.s16 q0, q1, #7 +# CHECK: vcvt.f16.u16 q0, q1, #8 +[0xbf,0xef,0x11,0x0d] +[0xbe,0xff,0x11,0x0d] +[0xbd,0xef,0x11,0x0c] +[0xbc,0xff,0x11,0x0c] +[0xbb,0xef,0x52,0x0d] +[0xba,0xff,0x52,0x0d] +[0xb9,0xef,0x52,0x0c] +[0xb8,0xff,0x52,0x0c] + +# CHECK: vrinta.f16 d0, d1 +# CHECK: vrinta.f16 q0, q1 +[0xb6,0xff,0x01,0x05] +[0xb6,0xff,0x42,0x05] + +# CHECK: vrintm.f16 d0, d1 +# CHECK: vrintm.f16 q0, q1 +[0xb6,0xff,0x81,0x06] +[0xb6,0xff,0xc2,0x06] + +# CHECK: vrintn.f16 d0, d1 +# CHECK: vrintn.f16 q0, q1 +[0xb6,0xff,0x01,0x04] +[0xb6,0xff,0x42,0x04] + +# CHECK: vrintp.f16 d0, d1 +# CHECK: vrintp.f16 q0, q1 +[0xb6,0xff,0x81,0x07] +[0xb6,0xff,0xc2,0x07] + +# CHECK: vrintx.f16 d0, d1 +# CHECK: vrintx.f16 q0, q1 +[0xb6,0xff,0x81,0x04] +[0xb6,0xff,0xc2,0x04] + +# CHECK: vrintz.f16 d0, d1 +# CHECK: vrintz.f16 q0, q1 +[0xb6,0xff,0x81,0x05] +[0xb6,0xff,0xc2,0x05] + +# Existing VMOV(immediate, Advanced SIMD) instructions within the encoding +# space of the new FP16 VCVT(between floating - point and fixed - point, +# Advanced SIMD): +# 1 -- VCVT op +# 2 -- VCVT FP size +# 4 -- Q +# 2 -- VMOV op +[0xc7,0xef,0x10,0x0c] +[0xc7,0xef,0x10,0x0d] +[0xc7,0xef,0x10,0x0e] +[0xc7,0xef,0x10,0x0f] +[0xc7,0xef,0x20,0x0c] +[0xc7,0xef,0x20,0x0d] +[0xc7,0xef,0x20,0x0e] +[0xc7,0xef,0x20,0x0f] +[0xc7,0xef,0x50,0x0c] +[0xc7,0xef,0x50,0x0d] +[0xc7,0xef,0x50,0x0e] +[0xc7,0xef,0x50,0x0f] +[0xc7,0xef,0x70,0x0c] +[0xc7,0xef,0x70,0x0d] +[0xc7,0xef,0x70,0x0e] +[0xc7,0xef,0x70,0x0f] +# CHECK: vmov.i32 d16, #0x70ff +# CHECK: vmov.i32 d16, #0x70ffff +# CHECK: vmov.i8 d16, #0x70 +# CHECK: vmov.f32 d16, #1.000000e+00 +# CHECK: vmull.s8 q8, d7, d16 +# STDERR: warning: invalid instruction encoding +# STDERR-NEXT: [0x20,0x0d,0xc7,0xf2] +# CHECK: vmull.p8 q8, d7, d16 +# STDERR: warning: invalid instruction encoding +# STDERR-NEXT: [0x20,0x0f,0xc7,0xf2] +# CHECK: vmov.i32 q8, #0x70ff +# CHECK: vmov.i32 q8, #0x70ffff +# CHECK: vmov.i8 q8, #0x70 +# CHECK: vmov.f32 q8, #1.000000e+00 +# CHECK: vmvn.i32 q8, #0x70ff +# CHECK: vmvn.i32 q8, #0x70ffff +# CHECK: vmov.i64 q8, #0xffffff0000000 +# STDERR: warning: invalid instruction encoding +# STDERR-NEXT: [0x70,0x0f,0xc7,0xf2] |

