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
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
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