mirror of
https://github.com/c64scene-ar/llvm-6502.git
synced 2024-08-29 13:29:28 +00:00
On ARM NEON, VAND with immediate (16/32 bits) is an alias to VBIC ~imm with the same type size. Adding that logic to the parser, and generating VBIC instructions from VAND asm files. This patch also fixes the validation routines for NEON splat immediates which were wrong. Fixes PR20702. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@218450 91177308-0d34-0410-b5e6-96231b3b80d8
66 lines
2.4 KiB
ArmAsm
66 lines
2.4 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 operand for instruction
|
|
@ CHECK: vorr.i32 d2, #0xffffffff
|
|
@ CHECK: error: invalid operand for instruction
|
|
@ CHECK: vorr.i32 q2, #0xffffffff
|
|
@ CHECK: error: invalid operand for instruction
|
|
@ CHECK: vorr.i32 d2, #0xabababab
|
|
@ CHECK: error: invalid operand for instruction
|
|
@ CHECK: vorr.i32 q2, #0xabababab
|
|
@ CHECK: error: invalid operand for instruction
|
|
@ CHECK: vorr.i16 q2, #0xabab
|
|
@ CHECK: error: 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
|