mirror of
https://github.com/RPCS3/llvm-mirror.git
synced 2024-11-23 03:02:36 +01:00
f5744d66e0
This adds support for the new family of conditional selection / increment / negation instructions; the low-overhead branch instructions (e.g. BF, WLS, DLS); the CLRM instruction to zero a whole list of registers at once; the new VMRS/VMSR and VLDR/VSTR instructions to get data in and out of 8.1-M system registers, particularly including the new VPR register used by MVE vector predication. To support this, we also add a register name 'zr' (used by the CSEL family to force one of the inputs to the constant 0), and operand types for lists of registers that are also allowed to include APSR or VPR (used by CLRM). The VLDR/VSTR instructions also need a new addressing mode. The low-overhead branch instructions exist in their own separate architecture extension, which we treat as enabled by default, but you can say -mattr=-lob or equivalent to turn it off. Reviewers: dmgreen, samparker, SjoerdMeijer, t.p.northover Reviewed By: samparker Subscribers: miyuki, javed.absar, kristof.beyls, hiraditya, llvm-commits Tags: #llvm Differential Revision: https://reviews.llvm.org/D62667 llvm-svn: 363039
462 lines
22 KiB
ArmAsm
462 lines
22 KiB
ArmAsm
// RUN: not llvm-mc -triple=thumbv8.1m.main-none-eabi -mattr=+vfp2,+mve,+8msecext -show-encoding < %s 2>%t \
|
|
// RUN: | FileCheck --check-prefix=CHECK %s
|
|
// RUN: FileCheck --check-prefix=ERROR < %t %s
|
|
// RUN: not llvm-mc -triple=thumbv8.1m.main-none-eabi -mattr=-vfp2,+mve,+8msecext -show-encoding < %s 2>%t \
|
|
// RUN: | FileCheck --check-prefix=CHECK-NOVFP %s
|
|
// RUN: FileCheck --check-prefix=ERROR-NOVFP < %t %s
|
|
// RUN: not llvm-mc -triple=thumbv8.1m.main-none-eabi -mattr=+vfp2,-mve,+8msecext -show-encoding < %s 2>%t \
|
|
// RUN: | FileCheck --check-prefix=CHECK-NOMVE %s
|
|
// RUN: FileCheck --check-prefix=ERROR-NOMVE < %t %s
|
|
// RUN: not llvm-mc -triple=thumbv8.1m.main-none-eabi -mattr=+vfp2,+mve,-8msecext -show-encoding < %s 2>%t \
|
|
// RUN: | FileCheck --check-prefix=CHECK-NOSEC %s
|
|
// RUN: FileCheck --check-prefix=ERROR-NOSEC < %t %s
|
|
// RUN: not llvm-mc -triple=thumbv8.1m.main-none-eabi -mattr=-vfp2,-mve,-8msecext -show-encoding < %s 2>%t
|
|
// RUN: FileCheck --check-prefix=ERROR-NONE < %t %s
|
|
// RUN: not llvm-mc -triple=thumbv8m.main-none-eabi -mattr=+vfp2,+8msecext -show-encoding < %s 2>%t
|
|
// RUN: FileCheck --check-prefix=ERROR-V8M < %t %s
|
|
|
|
// ERROR-V8M: instruction requires: armv8.1m.main
|
|
// ERROR-NONE: instruction requires: fp registers
|
|
// CHECK-NOSEC: vstr fpscr, [r0] @ encoding: [0x80,0xed,0x80,0x2f]
|
|
// CHECK-NOMVE: vstr fpscr, [r0] @ encoding: [0x80,0xed,0x80,0x2f]
|
|
// CHECK-NOVFP: vstr fpscr, [r0] @ encoding: [0x80,0xed,0x80,0x2f]
|
|
// CHECK: vstr fpscr, [r0] @ encoding: [0x80,0xed,0x80,0x2f]
|
|
vstr fpscr, [r0]
|
|
|
|
// ERROR-V8M: instruction requires: armv8.1m.main
|
|
// ERROR-NONE: instruction requires: fp registers
|
|
// CHECK-NOSEC: vstr fpscr_nzcvqc, [r9, #-24] @ encoding: [0x09,0xed,0x86,0x4f]
|
|
// CHECK-NOMVE: vstr fpscr_nzcvqc, [r9, #-24] @ encoding: [0x09,0xed,0x86,0x4f]
|
|
// CHECK-NOVFP: vstr fpscr_nzcvqc, [r9, #-24] @ encoding: [0x09,0xed,0x86,0x4f]
|
|
// CHECK: vstr fpscr_nzcvqc, [r9, #-24] @ encoding: [0x09,0xed,0x86,0x4f]
|
|
vstr fpscr_nzcvqc, [r9, #-24]
|
|
|
|
// ERROR-V8M: instruction requires: armv8.1m.main
|
|
// ERROR-NONE: instruction requires: fp registers
|
|
// CHECK-NOSEC: vstr fpscr_nzcvqc, [r9, #-24]! @ encoding: [0x29,0xed,0x86,0x4f]
|
|
// CHECK-NOMVE: vstr fpscr_nzcvqc, [r9, #-24]! @ encoding: [0x29,0xed,0x86,0x4f]
|
|
// CHECK-NOVFP: vstr fpscr_nzcvqc, [r9, #-24]! @ encoding: [0x29,0xed,0x86,0x4f]
|
|
// CHECK: vstr fpscr_nzcvqc, [r9, #-24]! @ encoding: [0x29,0xed,0x86,0x4f]
|
|
vstr fpscr_nzcvqc, [r9, #-24]!
|
|
|
|
// ERROR-V8M: instruction requires: armv8.1m.main
|
|
// ERROR-NONE: instruction requires: fp registers
|
|
// CHECK-NOSEC: vstr fpscr_nzcvqc, [r9], #-24 @ encoding: [0x29,0xec,0x86,0x4f]
|
|
// CHECK-NOMVE: vstr fpscr_nzcvqc, [r9], #-24 @ encoding: [0x29,0xec,0x86,0x4f]
|
|
// CHECK-NOVFP: vstr fpscr_nzcvqc, [r9], #-24 @ encoding: [0x29,0xec,0x86,0x4f]
|
|
// CHECK: vstr fpscr_nzcvqc, [r9], #-24 @ encoding: [0x29,0xec,0x86,0x4f]
|
|
vstr fpscr_nzcvqc, [r9], #-24
|
|
|
|
// CHECK-NOSEC: it hi @ encoding: [0x88,0xbf]
|
|
// CHECK-NOMVE: it hi @ encoding: [0x88,0xbf]
|
|
// CHECK-NOVFP: it hi @ encoding: [0x88,0xbf]
|
|
// CHECK: it hi @ encoding: [0x88,0xbf]
|
|
it hi
|
|
|
|
// ERROR-V8M: instruction requires: armv8.1m.main
|
|
// ERROR-NONE: instruction requires: fp registers
|
|
// CHECK-NOSEC: vstrhi fpscr, [r0] @ encoding: [0x80,0xed,0x80,0x2f]
|
|
// CHECK-NOMVE: vstrhi fpscr, [r0] @ encoding: [0x80,0xed,0x80,0x2f]
|
|
// CHECK-NOVFP: vstrhi fpscr, [r0] @ encoding: [0x80,0xed,0x80,0x2f]
|
|
// CHECK: vstrhi fpscr, [r0] @ encoding: [0x80,0xed,0x80,0x2f]
|
|
vstrhi fpscr, [r0]
|
|
|
|
// ERROR-V8M: instruction requires: armv8.1m.main
|
|
// ERROR-NONE: instruction requires: fp registers
|
|
// CHECK-NOSEC: vldr fpscr, [r0] @ encoding: [0x90,0xed,0x80,0x2f]
|
|
// CHECK-NOMVE: vldr fpscr, [r0] @ encoding: [0x90,0xed,0x80,0x2f]
|
|
// CHECK-NOVFP: vldr fpscr, [r0] @ encoding: [0x90,0xed,0x80,0x2f]
|
|
// CHECK: vldr fpscr, [r0] @ encoding: [0x90,0xed,0x80,0x2f]
|
|
vldr fpscr, [r0]
|
|
|
|
// ERROR-V8M: instruction requires: armv8.1m.main
|
|
// ERROR-NONE: instruction requires: fp registers
|
|
// CHECK-NOSEC: vldr fpscr_nzcvqc, [r9, #-24] @ encoding: [0x19,0xed,0x86,0x4f]
|
|
// CHECK-NOMVE: vldr fpscr_nzcvqc, [r9, #-24] @ encoding: [0x19,0xed,0x86,0x4f]
|
|
// CHECK-NOVFP: vldr fpscr_nzcvqc, [r9, #-24] @ encoding: [0x19,0xed,0x86,0x4f]
|
|
// CHECK: vldr fpscr_nzcvqc, [r9, #-24] @ encoding: [0x19,0xed,0x86,0x4f]
|
|
vldr fpscr_nzcvqc, [r9, #-24]
|
|
|
|
// ERROR-V8M: instruction requires: armv8.1m.main
|
|
// ERROR-NONE: instruction requires: fp registers
|
|
// CHECK-NOSEC: vldr fpscr_nzcvqc, [r9, #-24]! @ encoding: [0x39,0xed,0x86,0x4f]
|
|
// CHECK-NOMVE: vldr fpscr_nzcvqc, [r9, #-24]! @ encoding: [0x39,0xed,0x86,0x4f]
|
|
// CHECK-NOVFP: vldr fpscr_nzcvqc, [r9, #-24]! @ encoding: [0x39,0xed,0x86,0x4f]
|
|
// CHECK: vldr fpscr_nzcvqc, [r9, #-24]! @ encoding: [0x39,0xed,0x86,0x4f]
|
|
vldr fpscr_nzcvqc, [r9, #-24]!
|
|
|
|
// ERROR-V8M: instruction requires: armv8.1m.main
|
|
// ERROR-NONE: instruction requires: fp registers
|
|
// CHECK-NOSEC: vldr fpscr_nzcvqc, [r9], #-24 @ encoding: [0x39,0xec,0x86,0x4f]
|
|
// CHECK-NOMVE: vldr fpscr_nzcvqc, [r9], #-24 @ encoding: [0x39,0xec,0x86,0x4f]
|
|
// CHECK-NOVFP: vldr fpscr_nzcvqc, [r9], #-24 @ encoding: [0x39,0xec,0x86,0x4f]
|
|
// CHECK: vldr fpscr_nzcvqc, [r9], #-24 @ encoding: [0x39,0xec,0x86,0x4f]
|
|
vldr fpscr_nzcvqc, [r9], #-24
|
|
|
|
// ERROR-V8M: instruction requires: armv8.1m.main
|
|
// ERROR-NONE: instruction requires: fp registers
|
|
// CHECK-NOSEC: vldr fpscr_nzcvqc, [sp], #-52 @ encoding: [0x3d,0xec,0x8d,0x4f]
|
|
// CHECK-NOMVE: vldr fpscr_nzcvqc, [sp], #-52 @ encoding: [0x3d,0xec,0x8d,0x4f]
|
|
// CHECK-NOVFP: vldr fpscr_nzcvqc, [sp], #-52 @ encoding: [0x3d,0xec,0x8d,0x4f]
|
|
// CHECK: vldr fpscr_nzcvqc, [sp], #-52 @ encoding: [0x3d,0xec,0x8d,0x4f]
|
|
vldr fpscr_nzcvqc, [sp], #-52
|
|
|
|
// CHECK-NOSEC: it hi @ encoding: [0x88,0xbf]
|
|
// CHECK-NOMVE: it hi @ encoding: [0x88,0xbf]
|
|
// CHECK-NOVFP: it hi @ encoding: [0x88,0xbf]
|
|
// CHECK: it hi @ encoding: [0x88,0xbf]
|
|
it hi
|
|
|
|
// ERROR-V8M: instruction requires: armv8.1m.main
|
|
// ERROR-NONE: instruction requires: fp registers
|
|
// CHECK-NOSEC: vldrhi fpscr, [r0] @ encoding: [0x90,0xed,0x80,0x2f]
|
|
// CHECK-NOMVE: vldrhi fpscr, [r0] @ encoding: [0x90,0xed,0x80,0x2f]
|
|
// CHECK-NOVFP: vldrhi fpscr, [r0] @ encoding: [0x90,0xed,0x80,0x2f]
|
|
// CHECK: vldrhi fpscr, [r0] @ encoding: [0x90,0xed,0x80,0x2f]
|
|
vldrhi fpscr, [r0]
|
|
|
|
// ERROR-V8M: instruction requires: armv8.1m.main
|
|
// ERROR-NONE: instruction requires: ARMv8-M Security Extensions
|
|
// ERROR-NOSEC: instruction requires: ARMv8-M Security Extensions
|
|
// CHECK-NOMVE: vstr fpcxts, [r12, #508] @ encoding: [0xcc,0xed,0xff,0xef]
|
|
// CHECK-NOVFP: vstr fpcxts, [r12, #508] @ encoding: [0xcc,0xed,0xff,0xef]
|
|
// CHECK: vstr fpcxts, [r12, #508] @ encoding: [0xcc,0xed,0xff,0xef]
|
|
vstr fpcxts, [r12, #508]
|
|
|
|
// ERROR-V8M: instruction requires: armv8.1m.main
|
|
// ERROR-NONE: instruction requires: ARMv8-M Security Extensions
|
|
// ERROR-NOSEC: instruction requires: ARMv8-M Security Extensions
|
|
// CHECK-NOMVE: vstr fpcxts, [r12, #508]! @ encoding: [0xec,0xed,0xff,0xef]
|
|
// CHECK-NOVFP: vstr fpcxts, [r12, #508]! @ encoding: [0xec,0xed,0xff,0xef]
|
|
// CHECK: vstr fpcxts, [r12, #508]! @ encoding: [0xec,0xed,0xff,0xef]
|
|
vstr fpcxts, [r12, #508]!
|
|
|
|
// ERROR-V8M: instruction requires: armv8.1m.main
|
|
// ERROR-NONE: instruction requires: ARMv8-M Security Extensions
|
|
// ERROR-NOSEC: instruction requires: ARMv8-M Security Extensions
|
|
// CHECK-NOMVE: vstr fpcxts, [r12], #508 @ encoding: [0xec,0xec,0xff,0xef]
|
|
// CHECK-NOVFP: vstr fpcxts, [r12], #508 @ encoding: [0xec,0xec,0xff,0xef]
|
|
// CHECK: vstr fpcxts, [r12], #508 @ encoding: [0xec,0xec,0xff,0xef]
|
|
vstr fpcxts, [r12], #508
|
|
|
|
// ERROR-V8M: instruction requires: armv8.1m.main
|
|
// ERROR-NONE: instruction requires: ARMv8-M Security Extensions
|
|
// ERROR-NOSEC: instruction requires: ARMv8-M Security Extensions
|
|
// CHECK-NOMVE: vstr fpcxts, [sp], #-24 @ encoding: [0x6d,0xec,0x86,0xef]
|
|
// CHECK-NOVFP: vstr fpcxts, [sp], #-24 @ encoding: [0x6d,0xec,0x86,0xef]
|
|
// CHECK: vstr fpcxts, [sp], #-24 @ encoding: [0x6d,0xec,0x86,0xef]
|
|
vstr fpcxts, [sp], #-24
|
|
|
|
// ERROR-V8M: instruction requires: armv8.1m.main
|
|
// ERROR-NONE: instruction requires: ARMv8-M Security Extensions
|
|
// ERROR-NOSEC: instruction requires: ARMv8-M Security Extensions
|
|
// CHECK-NOMVE: vldr fpcxts, [r12, #508] @ encoding: [0xdc,0xed,0xff,0xef]
|
|
// CHECK-NOVFP: vldr fpcxts, [r12, #508] @ encoding: [0xdc,0xed,0xff,0xef]
|
|
// CHECK: vldr fpcxts, [r12, #508] @ encoding: [0xdc,0xed,0xff,0xef]
|
|
vldr fpcxts, [r12, #508]
|
|
|
|
// ERROR-V8M: instruction requires: armv8.1m.main
|
|
// ERROR-NONE: instruction requires: ARMv8-M Security Extensions
|
|
// ERROR-NOSEC: instruction requires: ARMv8-M Security Extensions
|
|
// CHECK-NOMVE: vldr fpcxts, [r12, #508]! @ encoding: [0xfc,0xed,0xff,0xef]
|
|
// CHECK-NOVFP: vldr fpcxts, [r12, #508]! @ encoding: [0xfc,0xed,0xff,0xef]
|
|
// CHECK: vldr fpcxts, [r12, #508]! @ encoding: [0xfc,0xed,0xff,0xef]
|
|
vldr fpcxts, [r12, #508]!
|
|
|
|
// ERROR-V8M: instruction requires: armv8.1m.main
|
|
// ERROR-NONE: instruction requires: ARMv8-M Security Extensions
|
|
// ERROR-NOSEC: instruction requires: ARMv8-M Security Extensions
|
|
// CHECK-NOMVE: vldr fpcxts, [r12], #508 @ encoding: [0xfc,0xec,0xff,0xef]
|
|
// CHECK-NOVFP: vldr fpcxts, [r12], #508 @ encoding: [0xfc,0xec,0xff,0xef]
|
|
// CHECK: vldr fpcxts, [r12], #508 @ encoding: [0xfc,0xec,0xff,0xef]
|
|
vldr fpcxts, [r12], #508
|
|
|
|
// ERROR-V8M: instruction requires: armv8.1m.main
|
|
// ERROR-NONE: instruction requires: ARMv8-M Security Extensions
|
|
// ERROR-NOSEC: instruction requires: ARMv8-M Security Extensions
|
|
// CHECK-NOMVE: vldr fpcxts, [sp], #-24 @ encoding: [0x7d,0xec,0x86,0xef]
|
|
// CHECK-NOVFP: vldr fpcxts, [sp], #-24 @ encoding: [0x7d,0xec,0x86,0xef]
|
|
// CHECK: vldr fpcxts, [sp], #-24 @ encoding: [0x7d,0xec,0x86,0xef]
|
|
vldr fpcxts, [sp], #-24
|
|
|
|
// ERROR-V8M: instruction requires: armv8.1m.main
|
|
// ERROR-NONE: instruction requires: ARMv8-M Security Extensions
|
|
// ERROR-NOSEC: instruction requires: ARMv8-M Security Extensions
|
|
// CHECK-NOMVE: vstr fpcxtns, [r0] @ encoding: [0xc0,0xed,0x80,0xcf]
|
|
// CHECK-NOVFP: vstr fpcxtns, [r0] @ encoding: [0xc0,0xed,0x80,0xcf]
|
|
// CHECK: vstr fpcxtns, [r0] @ encoding: [0xc0,0xed,0x80,0xcf]
|
|
vstr fpcxtns, [r0]
|
|
|
|
// ERROR-V8M: instruction requires: armv8.1m.main
|
|
// ERROR-NONE: instruction requires: ARMv8-M Security Extensions
|
|
// ERROR-NOSEC: instruction requires: ARMv8-M Security Extensions
|
|
// CHECK-NOMVE: vstr fpcxtns, [r9, #-24] @ encoding: [0x49,0xed,0x86,0xcf]
|
|
// CHECK-NOVFP: vstr fpcxtns, [r9, #-24] @ encoding: [0x49,0xed,0x86,0xcf]
|
|
// CHECK: vstr fpcxtns, [r9, #-24] @ encoding: [0x49,0xed,0x86,0xcf]
|
|
vstr fpcxtns, [r9, #-24]
|
|
|
|
// ERROR-V8M: instruction requires: armv8.1m.main
|
|
// ERROR-NONE: instruction requires: ARMv8-M Security Extensions
|
|
// ERROR-NOSEC: instruction requires: ARMv8-M Security Extensions
|
|
// CHECK-NOMVE: vstr fpcxtns, [r6, #500] @ encoding: [0xc6,0xed,0xfd,0xcf]
|
|
// CHECK-NOVFP: vstr fpcxtns, [r6, #500] @ encoding: [0xc6,0xed,0xfd,0xcf]
|
|
// CHECK: vstr fpcxtns, [r6, #500] @ encoding: [0xc6,0xed,0xfd,0xcf]
|
|
vstr fpcxtns, [r6, #500]
|
|
|
|
// ERROR-V8M: instruction requires: armv8.1m.main
|
|
// ERROR-NONE: instruction requires: ARMv8-M Security Extensions
|
|
// ERROR-NOSEC: instruction requires: ARMv8-M Security Extensions
|
|
// CHECK-NOMVE: vstr fpcxtns, [lr, #-508] @ encoding: [0x4e,0xed,0xff,0xcf]
|
|
// CHECK-NOVFP: vstr fpcxtns, [lr, #-508] @ encoding: [0x4e,0xed,0xff,0xcf]
|
|
// CHECK: vstr fpcxtns, [lr, #-508] @ encoding: [0x4e,0xed,0xff,0xcf]
|
|
vstr fpcxtns, [lr, #-508]
|
|
|
|
// ERROR-V8M: instruction requires: armv8.1m.main
|
|
// ERROR-NONE: instruction requires: ARMv8-M Security Extensions
|
|
// ERROR-NOSEC: instruction requires: ARMv8-M Security Extensions
|
|
// CHECK-NOMVE: vstr fpcxtns, [r12, #508] @ encoding: [0xcc,0xed,0xff,0xcf]
|
|
// CHECK-NOVFP: vstr fpcxtns, [r12, #508] @ encoding: [0xcc,0xed,0xff,0xcf]
|
|
// CHECK: vstr fpcxtns, [r12, #508] @ encoding: [0xcc,0xed,0xff,0xcf]
|
|
vstr fpcxtns, [r12, #508]
|
|
|
|
// ERROR-V8M: instruction requires: armv8.1m.main
|
|
// ERROR-NONE: instruction requires: ARMv8-M Security Extensions
|
|
// ERROR-NOSEC: instruction requires: ARMv8-M Security Extensions
|
|
// CHECK-NOMVE: vstr fpcxtns, [sp], #-24 @ encoding: [0x6d,0xec,0x86,0xcf]
|
|
// CHECK-NOVFP: vstr fpcxtns, [sp], #-24 @ encoding: [0x6d,0xec,0x86,0xcf]
|
|
// CHECK: vstr fpcxtns, [sp], #-24 @ encoding: [0x6d,0xec,0x86,0xcf]
|
|
vstr fpcxtns, [sp], #-24
|
|
|
|
// ERROR-V8M: instruction requires: armv8.1m.main
|
|
// ERROR-NONE: instruction requires: ARMv8-M Security Extensions
|
|
// ERROR-NOSEC: instruction requires: ARMv8-M Security Extensions
|
|
// CHECK-NOMVE: vldr fpcxtns, [r0] @ encoding: [0xd0,0xed,0x80,0xcf]
|
|
// CHECK-NOVFP: vldr fpcxtns, [r0] @ encoding: [0xd0,0xed,0x80,0xcf]
|
|
// CHECK: vldr fpcxtns, [r0] @ encoding: [0xd0,0xed,0x80,0xcf]
|
|
vldr fpcxtns, [r0]
|
|
|
|
// ERROR-V8M: instruction requires: armv8.1m.main
|
|
// ERROR-NONE: instruction requires: ARMv8-M Security Extensions
|
|
// ERROR-NOSEC: instruction requires: ARMv8-M Security Extensions
|
|
// CHECK-NOMVE: vldr fpcxtns, [r9, #-24] @ encoding: [0x59,0xed,0x86,0xcf]
|
|
// CHECK-NOVFP: vldr fpcxtns, [r9, #-24] @ encoding: [0x59,0xed,0x86,0xcf]
|
|
// CHECK: vldr fpcxtns, [r9, #-24] @ encoding: [0x59,0xed,0x86,0xcf]
|
|
vldr fpcxtns, [r9, #-24]
|
|
|
|
// ERROR-V8M: instruction requires: armv8.1m.main
|
|
// ERROR-NONE: instruction requires: ARMv8-M Security Extensions
|
|
// ERROR-NOSEC: instruction requires: ARMv8-M Security Extensions
|
|
// CHECK-NOMVE: vldr fpcxtns, [r6, #500] @ encoding: [0xd6,0xed,0xfd,0xcf]
|
|
// CHECK-NOVFP: vldr fpcxtns, [r6, #500] @ encoding: [0xd6,0xed,0xfd,0xcf]
|
|
// CHECK: vldr fpcxtns, [r6, #500] @ encoding: [0xd6,0xed,0xfd,0xcf]
|
|
vldr fpcxtns, [r6, #500]
|
|
|
|
// ERROR-V8M: instruction requires: armv8.1m.main
|
|
// ERROR-NONE: instruction requires: ARMv8-M Security Extensions
|
|
// ERROR-NOSEC: instruction requires: ARMv8-M Security Extensions
|
|
// CHECK-NOMVE: vldr fpcxtns, [lr, #-508] @ encoding: [0x5e,0xed,0xff,0xcf]
|
|
// CHECK-NOVFP: vldr fpcxtns, [lr, #-508] @ encoding: [0x5e,0xed,0xff,0xcf]
|
|
// CHECK: vldr fpcxtns, [lr, #-508] @ encoding: [0x5e,0xed,0xff,0xcf]
|
|
vldr fpcxtns, [lr, #-508]
|
|
|
|
// ERROR-V8M: instruction requires: armv8.1m.main
|
|
// ERROR-NONE: instruction requires: ARMv8-M Security Extensions
|
|
// ERROR-NOSEC: instruction requires: ARMv8-M Security Extensions
|
|
// CHECK-NOMVE: vldr fpcxtns, [r12, #508] @ encoding: [0xdc,0xed,0xff,0xcf]
|
|
// CHECK-NOVFP: vldr fpcxtns, [r12, #508] @ encoding: [0xdc,0xed,0xff,0xcf]
|
|
// CHECK: vldr fpcxtns, [r12, #508] @ encoding: [0xdc,0xed,0xff,0xcf]
|
|
vldr fpcxtns, [r12, #508]
|
|
|
|
// ERROR-V8M: instruction requires: armv8.1m.main
|
|
// ERROR-NONE: instruction requires: ARMv8-M Security Extensions
|
|
// ERROR-NOSEC: instruction requires: ARMv8-M Security Extensions
|
|
// CHECK-NOMVE: vldr fpcxtns, [sp], #-24 @ encoding: [0x7d,0xec,0x86,0xcf]
|
|
// CHECK-NOVFP: vldr fpcxtns, [sp], #-24 @ encoding: [0x7d,0xec,0x86,0xcf]
|
|
// CHECK: vldr fpcxtns, [sp], #-24 @ encoding: [0x7d,0xec,0x86,0xcf]
|
|
vldr fpcxtns, [sp], #-24
|
|
|
|
// ERROR-V8M: instruction requires: mve armv8.1m.main
|
|
// ERROR-NONE: instruction requires: mve
|
|
// CHECK-NOSEC: vstr vpr, [r6, #500] @ encoding: [0xc6,0xed,0xfd,0x8f]
|
|
// ERROR-NOMVE: instruction requires: mve
|
|
// CHECK-NOVFP: vstr vpr, [r6, #500] @ encoding: [0xc6,0xed,0xfd,0x8f]
|
|
// CHECK: vstr vpr, [r6, #500] @ encoding: [0xc6,0xed,0xfd,0x8f]
|
|
vstr vpr, [r6, #500]
|
|
|
|
// ERROR-V8M: instruction requires: mve armv8.1m.main
|
|
// ERROR-NONE: instruction requires: mve
|
|
// CHECK-NOSEC: vstr p0, [lr, #-508] @ encoding: [0x4e,0xed,0xff,0xaf]
|
|
// ERROR-NOMVE: instruction requires: mve
|
|
// CHECK-NOVFP: vstr p0, [lr, #-508] @ encoding: [0x4e,0xed,0xff,0xaf]
|
|
// CHECK: vstr p0, [lr, #-508] @ encoding: [0x4e,0xed,0xff,0xaf]
|
|
vstr p0, [lr, #-508]
|
|
|
|
// ERROR-V8M: instruction requires: mve armv8.1m.main
|
|
// ERROR-NONE: instruction requires: mve
|
|
// CHECK-NOSEC: vstr vpr, [r6, #500]! @ encoding: [0xe6,0xed,0xfd,0x8f]
|
|
// ERROR-NOMVE: instruction requires: mve
|
|
// CHECK-NOVFP: vstr vpr, [r6, #500]! @ encoding: [0xe6,0xed,0xfd,0x8f]
|
|
// CHECK: vstr vpr, [r6, #500]! @ encoding: [0xe6,0xed,0xfd,0x8f]
|
|
vstr vpr, [r6, #500]!
|
|
|
|
// ERROR-V8M: instruction requires: mve armv8.1m.main
|
|
// ERROR-NONE: instruction requires: mve
|
|
// CHECK-NOSEC: vstr p0, [lr, #-508]! @ encoding: [0x6e,0xed,0xff,0xaf]
|
|
// ERROR-NOMVE: instruction requires: mve
|
|
// CHECK-NOVFP: vstr p0, [lr, #-508]! @ encoding: [0x6e,0xed,0xff,0xaf]
|
|
// CHECK: vstr p0, [lr, #-508]! @ encoding: [0x6e,0xed,0xff,0xaf]
|
|
vstr p0, [lr, #-508]!
|
|
|
|
// ERROR-V8M: instruction requires: mve armv8.1m.main
|
|
// ERROR-NONE: instruction requires: mve
|
|
// CHECK-NOSEC: vstr vpr, [r6], #500 @ encoding: [0xe6,0xec,0xfd,0x8f]
|
|
// ERROR-NOMVE: instruction requires: mve
|
|
// CHECK-NOVFP: vstr vpr, [r6], #500 @ encoding: [0xe6,0xec,0xfd,0x8f]
|
|
// CHECK: vstr vpr, [r6], #500 @ encoding: [0xe6,0xec,0xfd,0x8f]
|
|
vstr vpr, [r6], #500
|
|
|
|
// ERROR-V8M: instruction requires: mve armv8.1m.main
|
|
// ERROR-NONE: instruction requires: mve
|
|
// CHECK-NOSEC: vstr p0, [lr], #-508 @ encoding: [0x6e,0xec,0xff,0xaf]
|
|
// ERROR-NOMVE: instruction requires: mve
|
|
// CHECK-NOVFP: vstr p0, [lr], #-508 @ encoding: [0x6e,0xec,0xff,0xaf]
|
|
// CHECK: vstr p0, [lr], #-508 @ encoding: [0x6e,0xec,0xff,0xaf]
|
|
vstr p0, [lr], #-508
|
|
|
|
// ERROR-V8M: instruction requires: mve armv8.1m.main
|
|
// ERROR-NONE: instruction requires: mve
|
|
// CHECK-NOSEC: vstr p0, [sp], #-24 @ encoding: [0x6d,0xec,0x86,0xaf]
|
|
// ERROR-NOMVE: instruction requires: mve
|
|
// CHECK-NOVFP: vstr p0, [sp], #-24 @ encoding: [0x6d,0xec,0x86,0xaf]
|
|
// CHECK: vstr p0, [sp], #-24 @ encoding: [0x6d,0xec,0x86,0xaf]
|
|
vstr p0, [sp], #-24
|
|
|
|
// ERROR-V8M: instruction requires: mve armv8.1m.main
|
|
// ERROR-NONE: instruction requires: mve
|
|
// CHECK-NOSEC: vldr vpr, [r6, #500] @ encoding: [0xd6,0xed,0xfd,0x8f]
|
|
// ERROR-NOMVE: instruction requires: mve
|
|
// CHECK-NOVFP: vldr vpr, [r6, #500] @ encoding: [0xd6,0xed,0xfd,0x8f]
|
|
// CHECK: vldr vpr, [r6, #500] @ encoding: [0xd6,0xed,0xfd,0x8f]
|
|
vldr vpr, [r6, #500]
|
|
|
|
// ERROR-V8M: instruction requires: mve armv8.1m.main
|
|
// ERROR-NONE: instruction requires: mve
|
|
// CHECK-NOSEC: vldr p0, [lr, #-508] @ encoding: [0x5e,0xed,0xff,0xaf]
|
|
// ERROR-NOMVE: instruction requires: mve
|
|
// CHECK-NOVFP: vldr p0, [lr, #-508] @ encoding: [0x5e,0xed,0xff,0xaf]
|
|
// CHECK: vldr p0, [lr, #-508] @ encoding: [0x5e,0xed,0xff,0xaf]
|
|
vldr p0, [lr, #-508]
|
|
|
|
// ERROR-V8M: instruction requires: mve armv8.1m.main
|
|
// ERROR-NONE: instruction requires: mve
|
|
// CHECK-NOSEC: vldr vpr, [r6, #500]! @ encoding: [0xf6,0xed,0xfd,0x8f]
|
|
// ERROR-NOMVE: instruction requires: mve
|
|
// CHECK-NOVFP: vldr vpr, [r6, #500]! @ encoding: [0xf6,0xed,0xfd,0x8f]
|
|
// CHECK: vldr vpr, [r6, #500]! @ encoding: [0xf6,0xed,0xfd,0x8f]
|
|
vldr vpr, [r6, #500]!
|
|
|
|
// ERROR-V8M: instruction requires: mve armv8.1m.main
|
|
// ERROR-NONE: instruction requires: mve
|
|
// CHECK-NOSEC: vldr p0, [lr, #-508]! @ encoding: [0x7e,0xed,0xff,0xaf]
|
|
// ERROR-NOMVE: instruction requires: mve
|
|
// CHECK-NOVFP: vldr p0, [lr, #-508]! @ encoding: [0x7e,0xed,0xff,0xaf]
|
|
// CHECK: vldr p0, [lr, #-508]! @ encoding: [0x7e,0xed,0xff,0xaf]
|
|
vldr p0, [lr, #-508]!
|
|
|
|
// ERROR-V8M: instruction requires: mve armv8.1m.main
|
|
// ERROR-NONE: instruction requires: mve
|
|
// CHECK-NOSEC: vldr vpr, [r6], #500 @ encoding: [0xf6,0xec,0xfd,0x8f]
|
|
// ERROR-NOMVE: instruction requires: mve
|
|
// CHECK-NOVFP: vldr vpr, [r6], #500 @ encoding: [0xf6,0xec,0xfd,0x8f]
|
|
// CHECK: vldr vpr, [r6], #500 @ encoding: [0xf6,0xec,0xfd,0x8f]
|
|
vldr vpr, [r6], #500
|
|
|
|
// ERROR-V8M: instruction requires: mve armv8.1m.main
|
|
// ERROR-NONE: instruction requires: mve
|
|
// CHECK-NOSEC: vldr p0, [lr], #-508 @ encoding: [0x7e,0xec,0xff,0xaf]
|
|
// ERROR-NOMVE: instruction requires: mve
|
|
// CHECK-NOVFP: vldr p0, [lr], #-508 @ encoding: [0x7e,0xec,0xff,0xaf]
|
|
// CHECK: vldr p0, [lr], #-508 @ encoding: [0x7e,0xec,0xff,0xaf]
|
|
vldr p0, [lr], #-508
|
|
|
|
// ERROR-V8M: instruction requires: mve armv8.1m.main
|
|
// ERROR-NONE: instruction requires: mve
|
|
// CHECK-NOSEC: vldr p0, [sp], #-24 @ encoding: [0x7d,0xec,0x86,0xaf]
|
|
// ERROR-NOMVE: instruction requires: mve
|
|
// CHECK-NOVFP: vldr p0, [sp], #-24 @ encoding: [0x7d,0xec,0x86,0xaf]
|
|
// CHECK: vldr p0, [sp], #-24 @ encoding: [0x7d,0xec,0x86,0xaf]
|
|
vldr p0, [sp], #-24
|
|
|
|
// ERROR-NOSEC: invalid instruction
|
|
// ERROR-NOMVE: invalid operand for instruction
|
|
// ERROR-NOVFP: invalid operand for instruction
|
|
// ERROR: invalid operand for instruction
|
|
vldr fpcxtns, [pc, #4]!
|
|
|
|
// ERROR-NOSEC: invalid instruction
|
|
// ERROR-NOMVE: invalid operand for instruction
|
|
// ERROR-NOVFP: invalid operand for instruction
|
|
// ERROR: invalid operand for instruction
|
|
vstr fpcxtns, [r0, #-507]
|
|
|
|
// ERROR-NOSEC: invalid instruction
|
|
// ERROR-NOMVE: invalid operand for instruction
|
|
// ERROR-NOVFP: invalid operand for instruction
|
|
// ERROR: invalid operand for instruction
|
|
vldr fpcxtns, [r2, #512]
|
|
|
|
// ERROR-NOSEC: invalid instruction
|
|
// ERROR-NOMVE: invalid operand for instruction
|
|
// ERROR-NOVFP: invalid operand for instruction
|
|
// ERROR: invalid operand for instruction
|
|
vldr fpcxtns, [pc], #-24
|
|
|
|
// ERROR-NOSEC: invalid operand for instruction
|
|
// ERROR-NOMVE: invalid operand for instruction
|
|
// ERROR-NOVFP: invalid operand for instruction
|
|
// ERROR: invalid operand for instruction
|
|
vstr vpr, [r0, #-507]
|
|
|
|
// ERROR-NOSEC: invalid operand for instruction
|
|
// ERROR-NOMVE: invalid instruction
|
|
// ERROR-NOVFP: invalid operand for instruction
|
|
// ERROR: invalid operand for instruction
|
|
vldr p0, [r2, #512]
|
|
|
|
// ERROR-NOSEC: invalid operand for instruction
|
|
// ERROR-NOMVE: invalid instruction
|
|
// ERROR-NOVFP: invalid operand for instruction
|
|
// ERROR: invalid operand for instruction
|
|
vldr p0, [r2, #2]
|
|
|
|
// ERROR-NOSEC: invalid operand for instruction
|
|
// ERROR-NOMVE: invalid instruction
|
|
// ERROR-NOVFP: invalid operand for instruction
|
|
// ERROR: invalid operand for instruction
|
|
vldr p0, [pc], #4
|
|
|
|
// ERROR-NOSEC: invalid operand for instruction
|
|
// ERROR-NOMVE: invalid instruction
|
|
// ERROR-NOVFP: invalid operand for instruction
|
|
// ERROR: invalid operand for instruction
|
|
vldr fpscr, [pc, #4]!
|
|
|
|
// ERROR-NOSEC: invalid operand for instruction
|
|
// ERROR-NOMVE: invalid operand for instruction
|
|
// ERROR-NOVFP: invalid operand for instruction
|
|
// ERROR: invalid operand for instruction
|
|
vldr fpscr_nzcvqc, [r8], #-53
|
|
|
|
// ERROR-NOSEC: invalid operand for instruction
|
|
// ERROR-NOMVE: invalid operand for instruction
|
|
// ERROR-NOVFP: invalid operand for instruction
|
|
// ERROR: invalid operand for instruction
|
|
vldr fpscr_nzcvqc, [r8], #2
|
|
|
|
// ERROR-NOSEC: invalid operand for instruction
|
|
// ERROR-NOMVE: invalid operand for instruction
|
|
// ERROR-NOVFP: invalid operand for instruction
|
|
// ERROR: invalid operand for instruction
|
|
vldr fpscr_nzcvqc, [pc], #-52
|
|
|