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