llvm-6502/test/MC/ARM/vmov-vmvn-illegal-cases.s
Stepan Dyatkovskiy 5c025f2f6e 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.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@207080 91177308-0d34-0410-b5e6-96231b3b80d8
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