[ThinLTO] Add code comment. NFC
[llvm-complete.git] / test / MC / ARM / vmrs_vmsr.s
blob9193ae1b12ed2ac40de0caf7170813d29064f7ae
1 // RUN: not llvm-mc -triple=armv7a-arm-none-eabi -mattr=+vfp2 -show-encoding < %s 2>%t \
2 // RUN: | FileCheck --check-prefix=CHECK-V7A-ARM %s
3 // RUN: FileCheck --check-prefix=ERROR-V7A-ARM < %t %s
4 // RUN: not llvm-mc -triple=thumbv7a-arm-none-eabi -mattr=+vfp2 -show-encoding < %s 2>%t \
5 // RUN: | FileCheck --check-prefix=CHECK-V7A-THUMB %s
6 // RUN: FileCheck --check-prefix=ERROR-V7A-THUMB < %t %s
7 // RUN: not llvm-mc -triple=thumbv7m-arm-none-eabi -mattr=+vfp2 -show-encoding < %s 2>%t \
8 // RUN: | FileCheck --check-prefix=CHECK-V7M %s
9 // RUN: FileCheck --check-prefix=ERROR-V7M < %t %s
10 // RUN: not llvm-mc -triple=armv8a-arm-none-eabi -mattr=+fp-armv8 -show-encoding < %s 2>%t \
11 // RUN: | FileCheck --check-prefix=CHECK-V8A-ARM %s
12 // RUN: FileCheck --check-prefix=ERROR-V8A-ARM < %t %s
13 // RUN: not llvm-mc -triple=thumbv8a-arm-none-eabi -mattr=+fp-armv8 -show-encoding < %s 2>%t \
14 // RUN: | FileCheck --check-prefix=CHECK-V8A-THUMB %s
15 // RUN: FileCheck --check-prefix=ERROR-V8A-THUMB < %t %s
16 // RUN: not llvm-mc -triple=thumbv8m.main-arm-none-eabi -mattr=+fp-armv8 -show-encoding < %s 2>%t \
17 // RUN: | FileCheck --check-prefix=CHECK-V8M %s
18 // RUN: FileCheck --check-prefix=ERROR-V8M < %t %s
19 // RUN: not llvm-mc -triple=thumbv7m-arm-none-eabi -show-encoding < %s 2>%t
20 // RUN: FileCheck --check-prefix=ERROR-NOVFP < %t %s
22 vmrs APSR_nzcv, fpscr
23 vmrs apsr_nzcv, fpscr
24 fmstat
25 vmrs r10, fpscr
26 vmrs r2, fpsid
27 vmrs r3, FPSID
28 vmrs r4, mvfr0
29 vmrs r5, MVFR1
30 vmrs r6, mvfr2
31 vmrs sp, fpscr
32 vmrs pc, fpscr
34 // CHECK-V7A-ARM: vmrs APSR_nzcv, fpscr @ encoding: [0x10,0xfa,0xf1,0xee]
35 // CHECK-V7A-ARM: vmrs APSR_nzcv, fpscr @ encoding: [0x10,0xfa,0xf1,0xee]
36 // CHECK-V7A-ARM: vmrs APSR_nzcv, fpscr @ encoding: [0x10,0xfa,0xf1,0xee]
37 // CHECK-V7A-ARM: vmrs r10, fpscr @ encoding: [0x10,0xaa,0xf1,0xee]
38 // CHECK-V7A-ARM: vmrs r2, fpsid @ encoding: [0x10,0x2a,0xf0,0xee]
39 // CHECK-V7A-ARM: vmrs r3, fpsid @ encoding: [0x10,0x3a,0xf0,0xee]
40 // CHECK-V7A-ARM: vmrs r4, mvfr0 @ encoding: [0x10,0x4a,0xf7,0xee]
41 // CHECK-V7A-ARM: vmrs r5, mvfr1 @ encoding: [0x10,0x5a,0xf6,0xee]
42 // ERROR-V7A-ARM: instruction requires: FPARMv8
43 // CHECK-V7A-ARM: vmrs sp, fpscr @ encoding: [0x10,0xda,0xf1,0xee]
44 // ERROR-V7A-ARM: invalid operand for instruction
46 // CHECK-V7A-THUMB: vmrs APSR_nzcv, fpscr @ encoding: [0xf1,0xee,0x10,0xfa]
47 // CHECK-V7A-THUMB: vmrs APSR_nzcv, fpscr @ encoding: [0xf1,0xee,0x10,0xfa]
48 // CHECK-V7A-THUMB: vmrs APSR_nzcv, fpscr @ encoding: [0xf1,0xee,0x10,0xfa]
49 // CHECK-V7A-THUMB: vmrs r10, fpscr @ encoding: [0xf1,0xee,0x10,0xaa]
50 // CHECK-V7A-THUMB: vmrs r2, fpsid @ encoding: [0xf0,0xee,0x10,0x2a]
51 // CHECK-V7A-THUMB: vmrs r3, fpsid @ encoding: [0xf0,0xee,0x10,0x3a]
52 // CHECK-V7A-THUMB: vmrs r4, mvfr0 @ encoding: [0xf7,0xee,0x10,0x4a]
53 // CHECK-V7A-THUMB: vmrs r5, mvfr1 @ encoding: [0xf6,0xee,0x10,0x5a]
54 // ERROR-V7A-THUMB: instruction requires: FPARMv8
55 // ERROR-V7A-THUMB: invalid operand for instruction
56 // ERROR-V7A-THUMB: invalid operand for instruction
58 // CHECK-V7M: vmrs APSR_nzcv, fpscr @ encoding: [0xf1,0xee,0x10,0xfa]
59 // CHECK-V7M: vmrs APSR_nzcv, fpscr @ encoding: [0xf1,0xee,0x10,0xfa]
60 // CHECK-V7M: vmrs APSR_nzcv, fpscr @ encoding: [0xf1,0xee,0x10,0xfa]
61 // CHECK-V7M: vmrs r10, fpscr @ encoding: [0xf1,0xee,0x10,0xaa]
62 // CHECK-V7M: vmrs r2, fpsid @ encoding: [0xf0,0xee,0x10,0x2a]
63 // CHECK-V7M: vmrs r3, fpsid @ encoding: [0xf0,0xee,0x10,0x3a]
64 // CHECK-V7M: vmrs r4, mvfr0 @ encoding: [0xf7,0xee,0x10,0x4a]
65 // CHECK-V7M: vmrs r5, mvfr1 @ encoding: [0xf6,0xee,0x10,0x5a]
66 // ERROR-V7M: instruction requires: FPARMv8
67 // ERROR-V7M: invalid operand for instruction
68 // ERROR-V7M: invalid operand for instruction
70 // CHECK-V8A-ARM: vmrs APSR_nzcv, fpscr @ encoding: [0x10,0xfa,0xf1,0xee]
71 // CHECK-V8A-ARM: vmrs APSR_nzcv, fpscr @ encoding: [0x10,0xfa,0xf1,0xee]
72 // CHECK-V8A-ARM: vmrs APSR_nzcv, fpscr @ encoding: [0x10,0xfa,0xf1,0xee]
73 // CHECK-V8A-ARM: vmrs r10, fpscr @ encoding: [0x10,0xaa,0xf1,0xee]
74 // CHECK-V8A-ARM: vmrs r2, fpsid @ encoding: [0x10,0x2a,0xf0,0xee]
75 // CHECK-V8A-ARM: vmrs r3, fpsid @ encoding: [0x10,0x3a,0xf0,0xee]
76 // CHECK-V8A-ARM: vmrs r4, mvfr0 @ encoding: [0x10,0x4a,0xf7,0xee]
77 // CHECK-V8A-ARM: vmrs r5, mvfr1 @ encoding: [0x10,0x5a,0xf6,0xee]
78 // CHECK-V8A-ARM: vmrs r6, mvfr2 @ encoding: [0x10,0x6a,0xf5,0xee]
79 // CHECK-V8A-ARM: vmrs sp, fpscr @ encoding: [0x10,0xda,0xf1,0xee]
80 // ERROR-V8A-ARM: invalid operand for instruction
82 // CHECK-V8A-THUMB: vmrs APSR_nzcv, fpscr @ encoding: [0xf1,0xee,0x10,0xfa]
83 // CHECK-V8A-THUMB: vmrs APSR_nzcv, fpscr @ encoding: [0xf1,0xee,0x10,0xfa]
84 // CHECK-V8A-THUMB: vmrs APSR_nzcv, fpscr @ encoding: [0xf1,0xee,0x10,0xfa]
85 // CHECK-V8A-THUMB: vmrs r10, fpscr @ encoding: [0xf1,0xee,0x10,0xaa]
86 // CHECK-V8A-THUMB: vmrs r2, fpsid @ encoding: [0xf0,0xee,0x10,0x2a]
87 // CHECK-V8A-THUMB: vmrs r3, fpsid @ encoding: [0xf0,0xee,0x10,0x3a]
88 // CHECK-V8A-THUMB: vmrs r4, mvfr0 @ encoding: [0xf7,0xee,0x10,0x4a]
89 // CHECK-V8A-THUMB: vmrs r5, mvfr1 @ encoding: [0xf6,0xee,0x10,0x5a]
90 // CHECK-V8A-THUMB: vmrs r6, mvfr2 @ encoding: [0xf5,0xee,0x10,0x6a]
91 // CHECK-V8A-THUMB: vmrs sp, fpscr @ encoding: [0xf1,0xee,0x10,0xda]
92 // ERROR-V8A-THUMB: invalid operand for instruction
94 // CHECK-V8M: vmrs APSR_nzcv, fpscr @ encoding: [0xf1,0xee,0x10,0xfa]
95 // CHECK-V8M: vmrs APSR_nzcv, fpscr @ encoding: [0xf1,0xee,0x10,0xfa]
96 // CHECK-V8M: vmrs APSR_nzcv, fpscr @ encoding: [0xf1,0xee,0x10,0xfa]
97 // CHECK-V8M: vmrs r10, fpscr @ encoding: [0xf1,0xee,0x10,0xaa]
98 // CHECK-V8M: vmrs r2, fpsid @ encoding: [0xf0,0xee,0x10,0x2a]
99 // CHECK-V8M: vmrs r3, fpsid @ encoding: [0xf0,0xee,0x10,0x3a]
100 // CHECK-V8M: vmrs r4, mvfr0 @ encoding: [0xf7,0xee,0x10,0x4a]
101 // CHECK-V8M: vmrs r5, mvfr1 @ encoding: [0xf6,0xee,0x10,0x5a]
102 // CHECK-V8M: vmrs r6, mvfr2 @ encoding: [0xf5,0xee,0x10,0x6a]
103 // ERROR-V8M: invalid operand for instruction
104 // ERROR-V8M: invalid operand for instruction
106 // ERROR-NOVFP: instruction requires: fp registers
107 // ERROR-NOVFP: instruction requires: fp registers
108 // ERROR-NOVFP: instruction requires: fp registers
109 // ERROR-NOVFP: instruction requires: fp registers
110 // ERROR-NOVFP: instruction requires: VFP2
111 // ERROR-NOVFP: instruction requires: VFP2
112 // ERROR-NOVFP: instruction requires: VFP2
113 // ERROR-NOVFP: instruction requires: VFP2
114 // ERROR-NOVFP: instruction requires: FPARMv8
115 // ERROR-NOVFP: invalid instruction
116 // ERROR-NOVFP: invalid instruction
118 vmsr fpscr, APSR_nzcv
119 vmsr fpscr, r0
120 vmsr fpexc, r1
121 vmsr fpsid, r2
122 vmsr fpscr, r10
123 vmsr fpscr, sp
124 vmsr fpscr, pc
126 // ERROR-V7A-ARM: operand must be a register in range [r0, r14]
127 // CHECK-V7A-ARM: vmsr fpscr, r0 @ encoding: [0x10,0x0a,0xe1,0xee]
128 // CHECK-V7A-ARM: vmsr fpexc, r1 @ encoding: [0x10,0x1a,0xe8,0xee]
129 // CHECK-V7A-ARM: vmsr fpsid, r2 @ encoding: [0x10,0x2a,0xe0,0xee]
130 // CHECK-V7A-ARM: vmsr fpscr, r10 @ encoding: [0x10,0xaa,0xe1,0xee]
131 // CHECK-V7A-ARM: vmsr fpscr, sp @ encoding: [0x10,0xda,0xe1,0xee]
132 // ERROR-V7A-ARM: operand must be a register in range [r0, r14]
134 // ERROR-V7A-THUMB: operand must be a register in range [r0, r14]
135 // CHECK-V7A-THUMB: vmsr fpscr, r0 @ encoding: [0xe1,0xee,0x10,0x0a]
136 // CHECK-V7A-THUMB: vmsr fpexc, r1 @ encoding: [0xe8,0xee,0x10,0x1a]
137 // CHECK-V7A-THUMB: vmsr fpsid, r2 @ encoding: [0xe0,0xee,0x10,0x2a]
138 // CHECK-V7A-THUMB: vmsr fpscr, r10 @ encoding: [0xe1,0xee,0x10,0xaa]
139 // ERROR-V7A-THUMB: invalid operand for instruction
140 // ERROR-V7A-THUMB: operand must be a register in range [r0, r14]
142 // ERROR-V7M: operand must be a register in range [r0, r14]
143 // CHECK-V7M: vmsr fpscr, r0 @ encoding: [0xe1,0xee,0x10,0x0a]
144 // CHECK-V7M: vmsr fpexc, r1 @ encoding: [0xe8,0xee,0x10,0x1a]
145 // CHECK-V7M: vmsr fpsid, r2 @ encoding: [0xe0,0xee,0x10,0x2a]
146 // CHECK-V7M: vmsr fpscr, r10 @ encoding: [0xe1,0xee,0x10,0xaa]
147 // ERROR-V7M: invalid operand for instruction
148 // ERROR-V7M: operand must be a register in range [r0, r14]
150 // ERROR-V8A-ARM: operand must be a register in range [r0, r14]
151 // CHECK-V8A-ARM: vmsr fpscr, r0 @ encoding: [0x10,0x0a,0xe1,0xee]
152 // CHECK-V8A-ARM: vmsr fpexc, r1 @ encoding: [0x10,0x1a,0xe8,0xee]
153 // CHECK-V8A-ARM: vmsr fpsid, r2 @ encoding: [0x10,0x2a,0xe0,0xee]
154 // CHECK-V8A-ARM: vmsr fpscr, r10 @ encoding: [0x10,0xaa,0xe1,0xee]
155 // CHECK-V8A-ARM: vmsr fpscr, sp @ encoding: [0x10,0xda,0xe1,0xee]
156 // ERROR-V8A-ARM: operand must be a register in range [r0, r14]
158 // ERROR-V8A-THUMB: operand must be a register in range [r0, r14]
159 // CHECK-V8A-THUMB: vmsr fpscr, r0 @ encoding: [0xe1,0xee,0x10,0x0a]
160 // CHECK-V8A-THUMB: vmsr fpexc, r1 @ encoding: [0xe8,0xee,0x10,0x1a]
161 // CHECK-V8A-THUMB: vmsr fpsid, r2 @ encoding: [0xe0,0xee,0x10,0x2a]
162 // CHECK-V8A-THUMB: vmsr fpscr, r10 @ encoding: [0xe1,0xee,0x10,0xaa]
163 // CHECK-V8A-THUMB: vmsr fpscr, sp @ encoding: [0xe1,0xee,0x10,0xda]
164 // ERROR-V8A-THUMB: operand must be a register in range [r0, r14]
166 // ERROR-V8M: operand must be a register in range [r0, r14]
167 // CHECK-V8M: vmsr fpscr, r0 @ encoding: [0xe1,0xee,0x10,0x0a]
168 // CHECK-V8M: vmsr fpexc, r1 @ encoding: [0xe8,0xee,0x10,0x1a]
169 // CHECK-V8M: vmsr fpsid, r2 @ encoding: [0xe0,0xee,0x10,0x2a]
170 // CHECK-V8M: vmsr fpscr, r10 @ encoding: [0xe1,0xee,0x10,0xaa]
171 // ERROR-V8M: invalid operand for instruction
172 // ERROR-V8M: operand must be a register in range [r0, r14]
174 // ERROR-NOVFP: invalid instruction
175 // ERROR-NOVFP: instruction requires: fp registers
176 // ERROR-NOVFP: instruction requires: VFP2
177 // ERROR-NOVFP: instruction requires: VFP2
178 // ERROR-NOVFP: instruction requires: fp registers
179 // ERROR-NOVFP: invalid instruction
180 // ERROR-NOVFP: invalid instruction