1
0
mirror of https://github.com/RPCS3/llvm-mirror.git synced 2024-11-24 03:33:20 +01:00
llvm-mirror/test/MC/ARM/vmov-vmvn-illegal-cases.s
Stepan Dyatkovskiy 686d334b05 Fix for PR18921, "vmov" part.
Added support for bytes replication feature, so it could be GAS compatible.

E.g. instructions below:
"vmov.i32 d0, 0xffffffff"
"vmvn.i32 d0, 0xabababab"
"vmov.i32 d0, 0xabababab"
"vmov.i16 d0, 0xabab"
are incorrect, but we could deal with such cases.

For first one we should emit:
"vmov.i8 d0, 0xff"
For second one ("vmvn"):
"vmov.i8 d0, 0x54"
For last two instructions it should emit:
"vmov.i8 d0, 0xab"

P.S.: In ARMAsmParser.cpp I have also fixed few nearby style issues in old code.
Just for keeping method bodies in harmony with themselves.

llvm-svn: 207080
2014-04-24 06:03:01 +00:00

31 lines
1.1 KiB
ArmAsm

@ RUN: not llvm-mc -triple=armv7-linux-gnueabi %s 2>&1 | FileCheck %s
.text
@ CHECK: error: invalid operand for instruction
@ CHECK: vmov.i32 d2, #0xffffffab
@ CHECK: error: invalid operand for instruction
@ CHECK: vmov.i32 q2, #0xffffffab
@ CHECK: error: invalid operand for instruction
@ CHECK: vmov.i16 q2, #0xffab
@ CHECK: error: invalid operand for instruction
@ CHECK: vmov.i16 q2, #0xffab
@ CHECK: error: invalid operand for instruction
@ CHECK: vmvn.i32 d2, #0xffffffab
@ CHECK: error: invalid operand for instruction
@ CHECK: vmvn.i32 q2, #0xffffffab
@ CHECK: error: invalid operand for instruction
@ CHECK: vmvn.i16 q2, #0xffab
@ CHECK: error: invalid operand for instruction
@ CHECK: vmvn.i16 q2, #0xffab
vmov.i32 d2, #0xffffffab
vmov.i32 q2, #0xffffffab
vmov.i16 q2, #0xffab
vmov.i16 q2, #0xffab
vmvn.i32 d2, #0xffffffab
vmvn.i32 q2, #0xffffffab
vmvn.i16 q2, #0xffab
vmvn.i16 q2, #0xffab