1acad68da50581de905a994ed3c6b9c197bcea687James Molloy@ RUN: llvm-mc -triple=thumbv7m-apple-darwin -show-encoding < %s | FileCheck %s
2acad68da50581de905a994ed3c6b9c197bcea687James Molloy  .syntax unified
3acad68da50581de905a994ed3c6b9c197bcea687James Molloy  .globl _func
4acad68da50581de905a994ed3c6b9c197bcea687James Molloy
5acad68da50581de905a994ed3c6b9c197bcea687James Molloy@ Check that the assembler can handle the documented syntax from the ARM ARM.
6acad68da50581de905a994ed3c6b9c197bcea687James Molloy@ These tests test instruction encodings specific to v7m & v7m (FeatureMClass).
7acad68da50581de905a994ed3c6b9c197bcea687James Molloy
8acad68da50581de905a994ed3c6b9c197bcea687James Molloy@------------------------------------------------------------------------------
9acad68da50581de905a994ed3c6b9c197bcea687James Molloy@ MRS
10acad68da50581de905a994ed3c6b9c197bcea687James Molloy@------------------------------------------------------------------------------
11acad68da50581de905a994ed3c6b9c197bcea687James Molloy
12acad68da50581de905a994ed3c6b9c197bcea687James Molloy        mrs  r0, apsr
13acad68da50581de905a994ed3c6b9c197bcea687James Molloy        mrs  r0, iapsr
14acad68da50581de905a994ed3c6b9c197bcea687James Molloy        mrs  r0, eapsr
15acad68da50581de905a994ed3c6b9c197bcea687James Molloy        mrs  r0, xpsr
16acad68da50581de905a994ed3c6b9c197bcea687James Molloy        mrs  r0, ipsr
17acad68da50581de905a994ed3c6b9c197bcea687James Molloy        mrs  r0, epsr
18acad68da50581de905a994ed3c6b9c197bcea687James Molloy        mrs  r0, iepsr
19acad68da50581de905a994ed3c6b9c197bcea687James Molloy        mrs  r0, msp
20acad68da50581de905a994ed3c6b9c197bcea687James Molloy        mrs  r0, psp
21acad68da50581de905a994ed3c6b9c197bcea687James Molloy        mrs  r0, primask
22acad68da50581de905a994ed3c6b9c197bcea687James Molloy        mrs  r0, basepri
23acad68da50581de905a994ed3c6b9c197bcea687James Molloy        mrs  r0, basepri_max
24acad68da50581de905a994ed3c6b9c197bcea687James Molloy        mrs  r0, faultmask
25acad68da50581de905a994ed3c6b9c197bcea687James Molloy        mrs  r0, control
26acad68da50581de905a994ed3c6b9c197bcea687James Molloy
27acad68da50581de905a994ed3c6b9c197bcea687James Molloy@ CHECK: mrs	r0, apsr                @ encoding: [0xef,0xf3,0x00,0x80]
28acad68da50581de905a994ed3c6b9c197bcea687James Molloy@ CHECK: mrs	r0, iapsr               @ encoding: [0xef,0xf3,0x01,0x80]
29acad68da50581de905a994ed3c6b9c197bcea687James Molloy@ CHECK: mrs	r0, eapsr               @ encoding: [0xef,0xf3,0x02,0x80]
30acad68da50581de905a994ed3c6b9c197bcea687James Molloy@ CHECK: mrs	r0, xpsr                @ encoding: [0xef,0xf3,0x03,0x80]
31acad68da50581de905a994ed3c6b9c197bcea687James Molloy@ CHECK: mrs	r0, ipsr                @ encoding: [0xef,0xf3,0x05,0x80]
32acad68da50581de905a994ed3c6b9c197bcea687James Molloy@ CHECK: mrs	r0, epsr                @ encoding: [0xef,0xf3,0x06,0x80]
33acad68da50581de905a994ed3c6b9c197bcea687James Molloy@ CHECK: mrs	r0, iepsr               @ encoding: [0xef,0xf3,0x07,0x80]
34acad68da50581de905a994ed3c6b9c197bcea687James Molloy@ CHECK: mrs	r0, msp                 @ encoding: [0xef,0xf3,0x08,0x80]
35acad68da50581de905a994ed3c6b9c197bcea687James Molloy@ CHECK: mrs	r0, psp                 @ encoding: [0xef,0xf3,0x09,0x80]
36acad68da50581de905a994ed3c6b9c197bcea687James Molloy@ CHECK: mrs	r0, primask             @ encoding: [0xef,0xf3,0x10,0x80]
37acad68da50581de905a994ed3c6b9c197bcea687James Molloy@ CHECK: mrs	r0, basepri             @ encoding: [0xef,0xf3,0x11,0x80]
38acad68da50581de905a994ed3c6b9c197bcea687James Molloy@ CHECK: mrs	r0, basepri_max         @ encoding: [0xef,0xf3,0x12,0x80]
39acad68da50581de905a994ed3c6b9c197bcea687James Molloy@ CHECK: mrs	r0, faultmask           @ encoding: [0xef,0xf3,0x13,0x80]
40acad68da50581de905a994ed3c6b9c197bcea687James Molloy@ CHECK: mrs	r0, control             @ encoding: [0xef,0xf3,0x14,0x80]
41acad68da50581de905a994ed3c6b9c197bcea687James Molloy
42acad68da50581de905a994ed3c6b9c197bcea687James Molloy@------------------------------------------------------------------------------
43acad68da50581de905a994ed3c6b9c197bcea687James Molloy@ MSR
44acad68da50581de905a994ed3c6b9c197bcea687James Molloy@------------------------------------------------------------------------------
45acad68da50581de905a994ed3c6b9c197bcea687James Molloy
46acad68da50581de905a994ed3c6b9c197bcea687James Molloy        msr  apsr, r0
470fd4f3c8de07e9cfe2a86093ccada82d64f38bfeKevin Enderby        msr  apsr_nzcvq, r0
480fd4f3c8de07e9cfe2a86093ccada82d64f38bfeKevin Enderby        msr  apsr_g, r0
490fd4f3c8de07e9cfe2a86093ccada82d64f38bfeKevin Enderby        msr  apsr_nzcvqg, r0
50acad68da50581de905a994ed3c6b9c197bcea687James Molloy        msr  iapsr, r0
510fd4f3c8de07e9cfe2a86093ccada82d64f38bfeKevin Enderby        msr  iapsr_nzcvq, r0
520fd4f3c8de07e9cfe2a86093ccada82d64f38bfeKevin Enderby        msr  iapsr_g, r0
530fd4f3c8de07e9cfe2a86093ccada82d64f38bfeKevin Enderby        msr  iapsr_nzcvqg, r0
54acad68da50581de905a994ed3c6b9c197bcea687James Molloy        msr  eapsr, r0
550fd4f3c8de07e9cfe2a86093ccada82d64f38bfeKevin Enderby        msr  eapsr_nzcvq, r0
560fd4f3c8de07e9cfe2a86093ccada82d64f38bfeKevin Enderby        msr  eapsr_g, r0
570fd4f3c8de07e9cfe2a86093ccada82d64f38bfeKevin Enderby        msr  eapsr_nzcvqg, r0
58acad68da50581de905a994ed3c6b9c197bcea687James Molloy        msr  xpsr, r0
590fd4f3c8de07e9cfe2a86093ccada82d64f38bfeKevin Enderby        msr  xpsr_nzcvq, r0
600fd4f3c8de07e9cfe2a86093ccada82d64f38bfeKevin Enderby        msr  xpsr_g, r0
610fd4f3c8de07e9cfe2a86093ccada82d64f38bfeKevin Enderby        msr  xpsr_nzcvqg, r0
62acad68da50581de905a994ed3c6b9c197bcea687James Molloy        msr  ipsr, r0
63acad68da50581de905a994ed3c6b9c197bcea687James Molloy        msr  epsr, r0
64acad68da50581de905a994ed3c6b9c197bcea687James Molloy        msr  iepsr, r0
65acad68da50581de905a994ed3c6b9c197bcea687James Molloy        msr  msp, r0
66acad68da50581de905a994ed3c6b9c197bcea687James Molloy        msr  psp, r0
67acad68da50581de905a994ed3c6b9c197bcea687James Molloy        msr  primask, r0
68acad68da50581de905a994ed3c6b9c197bcea687James Molloy        msr  basepri, r0
69acad68da50581de905a994ed3c6b9c197bcea687James Molloy        msr  basepri_max, r0
70acad68da50581de905a994ed3c6b9c197bcea687James Molloy        msr  faultmask, r0
71acad68da50581de905a994ed3c6b9c197bcea687James Molloy        msr  control, r0
72acad68da50581de905a994ed3c6b9c197bcea687James Molloy
730fd4f3c8de07e9cfe2a86093ccada82d64f38bfeKevin Enderby@ CHECK: msr	apsr, r0                @ encoding: [0x80,0xf3,0x00,0x88]
740fd4f3c8de07e9cfe2a86093ccada82d64f38bfeKevin Enderby@ CHECK: msr	apsr, r0                @ encoding: [0x80,0xf3,0x00,0x88]
750fd4f3c8de07e9cfe2a86093ccada82d64f38bfeKevin Enderby@ CHECK: msr	apsr_g, r0              @ encoding: [0x80,0xf3,0x00,0x84]
760fd4f3c8de07e9cfe2a86093ccada82d64f38bfeKevin Enderby@ CHECK: msr	apsr_nzcvqg, r0         @ encoding: [0x80,0xf3,0x00,0x8c]
770fd4f3c8de07e9cfe2a86093ccada82d64f38bfeKevin Enderby@ CHECK: msr	iapsr, r0               @ encoding: [0x80,0xf3,0x01,0x88]
780fd4f3c8de07e9cfe2a86093ccada82d64f38bfeKevin Enderby@ CHECK: msr	iapsr, r0               @ encoding: [0x80,0xf3,0x01,0x88]
790fd4f3c8de07e9cfe2a86093ccada82d64f38bfeKevin Enderby@ CHECK: msr	iapsr_g, r0             @ encoding: [0x80,0xf3,0x01,0x84]
800fd4f3c8de07e9cfe2a86093ccada82d64f38bfeKevin Enderby@ CHECK: msr	iapsr_nzcvqg, r0        @ encoding: [0x80,0xf3,0x01,0x8c]
810fd4f3c8de07e9cfe2a86093ccada82d64f38bfeKevin Enderby@ CHECK: msr	eapsr, r0               @ encoding: [0x80,0xf3,0x02,0x88]
820fd4f3c8de07e9cfe2a86093ccada82d64f38bfeKevin Enderby@ CHECK: msr	eapsr, r0               @ encoding: [0x80,0xf3,0x02,0x88]
830fd4f3c8de07e9cfe2a86093ccada82d64f38bfeKevin Enderby@ CHECK: msr	eapsr_g, r0             @ encoding: [0x80,0xf3,0x02,0x84]
840fd4f3c8de07e9cfe2a86093ccada82d64f38bfeKevin Enderby@ CHECK: msr	eapsr_nzcvqg, r0        @ encoding: [0x80,0xf3,0x02,0x8c]
850fd4f3c8de07e9cfe2a86093ccada82d64f38bfeKevin Enderby@ CHECK: msr	xpsr, r0                @ encoding: [0x80,0xf3,0x03,0x88]
860fd4f3c8de07e9cfe2a86093ccada82d64f38bfeKevin Enderby@ CHECK: msr	xpsr, r0                @ encoding: [0x80,0xf3,0x03,0x88]
870fd4f3c8de07e9cfe2a86093ccada82d64f38bfeKevin Enderby@ CHECK: msr	xpsr_g, r0              @ encoding: [0x80,0xf3,0x03,0x84]
880fd4f3c8de07e9cfe2a86093ccada82d64f38bfeKevin Enderby@ CHECK: msr	xpsr_nzcvqg, r0         @ encoding: [0x80,0xf3,0x03,0x8c]
89f49a4092bcf679d1634a8023efc593e98a3e5663Kevin Enderby@ CHECK: msr	ipsr, r0                @ encoding: [0x80,0xf3,0x05,0x88]
90f49a4092bcf679d1634a8023efc593e98a3e5663Kevin Enderby@ CHECK: msr	epsr, r0                @ encoding: [0x80,0xf3,0x06,0x88]
91f49a4092bcf679d1634a8023efc593e98a3e5663Kevin Enderby@ CHECK: msr	iepsr, r0               @ encoding: [0x80,0xf3,0x07,0x88]
92f49a4092bcf679d1634a8023efc593e98a3e5663Kevin Enderby@ CHECK: msr	msp, r0                 @ encoding: [0x80,0xf3,0x08,0x88]
93f49a4092bcf679d1634a8023efc593e98a3e5663Kevin Enderby@ CHECK: msr	psp, r0                 @ encoding: [0x80,0xf3,0x09,0x88]
94f49a4092bcf679d1634a8023efc593e98a3e5663Kevin Enderby@ CHECK: msr	primask, r0             @ encoding: [0x80,0xf3,0x10,0x88]
95f49a4092bcf679d1634a8023efc593e98a3e5663Kevin Enderby@ CHECK: msr	basepri, r0             @ encoding: [0x80,0xf3,0x11,0x88]
96f49a4092bcf679d1634a8023efc593e98a3e5663Kevin Enderby@ CHECK: msr	basepri_max, r0         @ encoding: [0x80,0xf3,0x12,0x88]
97f49a4092bcf679d1634a8023efc593e98a3e5663Kevin Enderby@ CHECK: msr	faultmask, r0           @ encoding: [0x80,0xf3,0x13,0x88]
98f49a4092bcf679d1634a8023efc593e98a3e5663Kevin Enderby@ CHECK: msr	control, r0             @ encoding: [0x80,0xf3,0x14,0x88]
99