1
0
mirror of https://github.com/RPCS3/llvm-mirror.git synced 2024-11-23 11:13:28 +01:00
llvm-mirror/test/MC/ARM/vorr-vbic-illegal-cases.s
Oliver Stannard bbccd10c81 [ARM, Asm] Add diagnostics for floating-point register operands
This adds diagnostic strings for the ARM floating-point register
classes, which will be used when these classes are expected by the
assembler, but the provided operand is not valid.

One of these, DPR, requires C++ code to select the correct error
message, as that class contains different registers depending on the
FPU. The rest can all have their diagnostic strings stored in the
tablegen decription of them.

Differential revision: https://reviews.llvm.org/D36693

llvm-svn: 315304
2017-10-10 12:35:09 +00:00

78 lines
3.2 KiB
ArmAsm

@ RUN: not llvm-mc -triple=armv7-linux-gnueabi %s 2>&1 | FileCheck %s
.text
vorr.i32 d2, #0xffffffff
vorr.i32 q2, #0xffffffff
vorr.i32 d2, #0xabababab
vorr.i32 q2, #0xabababab
vorr.i16 q2, #0xabab
vorr.i16 q2, #0xabab
@ CHECK: error: invalid instruction, any one of the following would fix this:
@ CHECK: operand must be a register in range [d0, d31]
@ CHECK: note: invalid operand for instruction
@ CHECK: vorr.i32 d2, #0xffffffff
@ CHECK: error: invalid instruction, any one of the following would fix this:
@ CHECK: note: operand must be a register in range [q0, q15]
@ CHECK: note: invalid operand for instruction
@ CHECK: vorr.i32 q2, #0xffffffff
@ CHECK: error: invalid instruction, any one of the following would fix this:
@ CHECK: operand must be a register in range [d0, d31]
@ CHECK: note: invalid operand for instruction
@ CHECK: vorr.i32 d2, #0xabababab
@ CHECK: error: invalid instruction, any one of the following would fix this:
@ CHECK: note: operand must be a register in range [q0, q15]
@ CHECK: note: invalid operand for instruction
@ CHECK: vorr.i32 q2, #0xabababab
@ CHECK: error: invalid instruction, any one of the following would fix this:
@ CHECK: note: operand must be a register in range [q0, q15]
@ CHECK: note: invalid operand for instruction
@ CHECK: vorr.i16 q2, #0xabab
@ CHECK: error: invalid instruction, any one of the following would fix this:
@ CHECK: note: operand must be a register in range [q0, q15]
@ CHECK: note: invalid operand for instruction
@ CHECK: vorr.i16 q2, #0xabab
vbic.i32 d2, #0xffffffff
vbic.i32 q2, #0xffffffff
vbic.i32 d2, #0xabababab
vbic.i32 q2, #0xabababab
vbic.i16 d2, #0xabab
vbic.i16 q2, #0xabab
@ CHECK: error: invalid operand for instruction
@ CHECK: vbic.i32 d2, #0xffffffff
@ CHECK: error: invalid operand for instruction
@ CHECK: vbic.i32 q2, #0xffffffff
@ CHECK: error: invalid operand for instruction
@ CHECK: vbic.i32 d2, #0xabababab
@ CHECK: error: invalid operand for instruction
@ CHECK: vbic.i32 q2, #0xabababab
@ CHECK: error: invalid operand for instruction
@ CHECK: vbic.i16 d2, #0xabab
@ CHECK: error: invalid operand for instruction
@ CHECK: vbic.i16 q2, #0xabab
vbic.i32 d2, #0x03ffffff
vbic.i32 q2, #0x03ffff
vbic.i32 d2, #0x03ff
vbic.i32 d2, #0xff00ff
vbic.i16 d2, #0x03ff
vbic.i16 q2, #0xf0f0
vbic.i16 q2, #0xf0f0f0
@ CHECK: error: invalid operand for instruction
@ CHECK: vbic.i32 d2, #0x03ffffff
@ CHECK: error: invalid operand for instruction
@ CHECK: vbic.i32 q2, #0x03ffff
@ CHECK: error: invalid operand for instruction
@ CHECK: vbic.i32 d2, #0x03ff
@ CHECK: error: invalid operand for instruction
@ CHECK: vbic.i32 d2, #0xff00ff
@ CHECK: error: invalid operand for instruction
@ CHECK: vbic.i16 d2, #0x03ff
@ CHECK: error: invalid operand for instruction
@ CHECK: vbic.i16 q2, #0xf0f0
@ CHECK: error: invalid operand for instruction
@ CHECK: vbic.i16 q2, #0xf0f0f0