mirror of
https://github.com/RPCSX/llvm.git
synced 2024-12-01 15:40:46 +00:00
09e28e39f0
This patch implements a few changes related to the Thumb2 M-class MSR instruction: * better handling of unpredictable encodings, * recognition of the _g and _nzcvqg variants by the asm parser only if the DSP extension is available, preferred output of MSR APSR moves with the _<bits> suffix for v7-M. Patch by Petr Pavlu. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@216874 91177308-0d34-0410-b5e6-96231b3b80d8
95 lines
2.0 KiB
Plaintext
95 lines
2.0 KiB
Plaintext
# RUN: llvm-mc --disassemble %s -triple=thumbv7em | FileCheck %s
|
|
|
|
#------------------------------------------------------------------------------
|
|
# MRS
|
|
#------------------------------------------------------------------------------
|
|
|
|
# CHECK: mrs r0, apsr
|
|
# CHECK: mrs r0, iapsr
|
|
# CHECK: mrs r0, eapsr
|
|
# CHECK: mrs r0, xpsr
|
|
# CHECK: mrs r0, ipsr
|
|
# CHECK: mrs r0, epsr
|
|
# CHECK: mrs r0, iepsr
|
|
# CHECK: mrs r0, msp
|
|
# CHECK: mrs r0, psp
|
|
# CHECK: mrs r0, primask
|
|
# CHECK: mrs r0, basepri
|
|
# CHECK: mrs r0, basepri_max
|
|
# CHECK: mrs r0, faultmask
|
|
# CHECK: mrs r0, control
|
|
|
|
0xef 0xf3 0x00 0x80
|
|
0xef 0xf3 0x01 0x80
|
|
0xef 0xf3 0x02 0x80
|
|
0xef 0xf3 0x03 0x80
|
|
0xef 0xf3 0x05 0x80
|
|
0xef 0xf3 0x06 0x80
|
|
0xef 0xf3 0x07 0x80
|
|
0xef 0xf3 0x08 0x80
|
|
0xef 0xf3 0x09 0x80
|
|
0xef 0xf3 0x10 0x80
|
|
0xef 0xf3 0x11 0x80
|
|
0xef 0xf3 0x12 0x80
|
|
0xef 0xf3 0x13 0x80
|
|
0xef 0xf3 0x14 0x80
|
|
|
|
|
|
#------------------------------------------------------------------------------
|
|
# MSR
|
|
#------------------------------------------------------------------------------
|
|
|
|
# CHECK: msr apsr_nzcvq, r0
|
|
# CHECK: msr apsr_g, r0
|
|
# CHECK: msr apsr_nzcvqg, r0
|
|
|
|
0x80 0xf3 0x00 0x88
|
|
0x80 0xf3 0x00 0x84
|
|
0x80 0xf3 0x00 0x8c
|
|
|
|
# CHECK: msr iapsr_nzcvq, r0
|
|
# CHECK: msr iapsr_g, r0
|
|
# CHECK: msr iapsr_nzcvqg, r0
|
|
|
|
0x80 0xf3 0x01 0x88
|
|
0x80 0xf3 0x01 0x84
|
|
0x80 0xf3 0x01 0x8c
|
|
|
|
# CHECK: msr eapsr_nzcvq, r0
|
|
# CHECK: msr eapsr_g, r0
|
|
# CHECK: msr eapsr_nzcvqg, r0
|
|
|
|
0x80 0xf3 0x02 0x88
|
|
0x80 0xf3 0x02 0x84
|
|
0x80 0xf3 0x02 0x8c
|
|
|
|
# CHECK: msr xpsr_nzcvq, r0
|
|
# CHECK: msr xpsr_g, r0
|
|
# CHECK: msr xpsr_nzcvqg, r0
|
|
|
|
0x80 0xf3 0x03 0x88
|
|
0x80 0xf3 0x03 0x84
|
|
0x80 0xf3 0x03 0x8c
|
|
|
|
# CHECK: msr ipsr, r0
|
|
# CHECK: msr epsr, r0
|
|
# CHECK: msr iepsr, r0
|
|
# CHECK: msr msp, r0
|
|
# CHECK: msr psp, r0
|
|
# CHECK: msr primask, r0
|
|
# CHECK: msr basepri, r0
|
|
# CHECK: msr basepri_max, r0
|
|
# CHECK: msr faultmask, r0
|
|
# CHECK: msr control, r0
|
|
|
|
0x80 0xf3 0x05 0x88
|
|
0x80 0xf3 0x06 0x88
|
|
0x80 0xf3 0x07 0x88
|
|
0x80 0xf3 0x08 0x88
|
|
0x80 0xf3 0x09 0x88
|
|
0x80 0xf3 0x10 0x88
|
|
0x80 0xf3 0x11 0x88
|
|
0x80 0xf3 0x12 0x88
|
|
0x80 0xf3 0x13 0x88
|
|
0x80 0xf3 0x14 0x88
|