1 //RUN
: not llvm-mc
-triple thumb-none-linux-gnu
-mattr
=+v8.1
a -mattr
=neon
-show-encoding
< %s
2>%t | FileCheck
%s
--check-prefix
=CHECK-V81aTHUMB
2 //RUN
: FileCheck
--check-prefix
=CHECK-ERROR
<%t %s
3 //RUN
: not llvm-mc
-triple arm-none-linux-gnu
-mattr
=+v8.1
a -mattr
=neon
-show-encoding
< %s
2>%t | FileCheck
%s
--check-prefix
=CHECK-V81aARM
4 //RUN
: FileCheck
--check-prefix
=CHECK-ERROR
<%t %s
6 //RUN
: not llvm-mc
-triple thumb-none-linux-gnu
-mattr
=+v8
-mattr
=neon
-show-encoding
< %s
2>&1 | FileCheck
%s
--check-prefix
=CHECK-V8
7 //RUN
: not llvm-mc
-triple arm-none-linux-gnu
-mattr
=+v8
-mattr
=neon
-show-encoding
< %s
2>&1 | FileCheck
%s
--check-prefix
=CHECK-V8
11 //CHECK-V8THUMB
: .text
13 vqrdmlah.i8 q0
, q1
, q2
14 vqrdmlah.u16 d0
, d1
, d2
15 vqrdmlsh.f32 q3
, q4
, q5
16 vqrdmlsh.f64 d3
, d5
, d5
18 //CHECK-ERROR
: error
: invalid operand for instruction
19 //CHECK-ERROR
: vqrdmlah.i8 q0
, q1
, q2
21 //CHECK-ERROR
: error
: invalid operand for instruction
22 //CHECK-ERROR
: vqrdmlah.u16 d0
, d1
, d2
24 //CHECK-ERROR
: error
: invalid operand for instruction
25 //CHECK-ERROR
: vqrdmlsh.f32 q3
, q4
, q5
27 //CHECK-ERROR
: error
: invalid operand for instruction
28 //CHECK-ERROR
: vqrdmlsh.f64 d3
, d5
, d5
30 //CHECK-V8
: error
: invalid instruction
31 //CHECK-V8
: vqrdmlah.i8 q0
, q1
, q2
33 //CHECK-V8
: error
: invalid instruction
34 //CHECK-V8
: vqrdmlah.u16 d0
, d1
, d2
36 //CHECK-V8
: error
: invalid instruction
37 //CHECK-V8
: vqrdmlsh.f32 q3
, q4
, q5
39 //CHECK-V8
: error
: invalid instruction
40 //CHECK-V8
: vqrdmlsh.f64 d3
, d5
, d5
43 vqrdmlah.s16 d0
, d1
, d2
44 //CHECK-V81aARM
: vqrdmlah.s16 d0
, d1
, d2 @ encoding
: [0x12,0x0b,0x11,0xf3]
45 //CHECK-V81aTHUMB
: vqrdmlah.s16 d0
, d1
, d2 @ encoding
: [0x11,0xff,0x12,0x0b]
46 //CHECK-V8
: error
: instruction requires
: armv8.1
a
47 //CHECK-V8
: vqrdmlah.s16 d0
, d1
, d2
50 vqrdmlah.s32 d0
, d1
, d2
51 //CHECK-V81aARM
: vqrdmlah.s32 d0
, d1
, d2 @ encoding
: [0x12,0x0b,0x21,0xf3]
52 //CHECK-V81aTHUMB
: vqrdmlah.s32 d0
, d1
, d2 @ encoding
: [0x21,0xff,0x12,0x0b]
53 //CHECK-V8
: error
: instruction requires
: armv8.1
a
54 //CHECK-V8
: vqrdmlah.s32 d0
, d1
, d2
57 vqrdmlah.s16 q0
, q1
, q2
58 //CHECK-V81aARM
: vqrdmlah.s16 q0
, q1
, q2 @ encoding
: [0x54,0x0b,0x12,0xf3]
59 //CHECK-V81aTHUMB
: vqrdmlah.s16 q0
, q1
, q2 @ encoding
: [0x12,0xff,0x54,0x0b]
60 //CHECK-V8
: error
: instruction requires
: armv8.1
a
61 //CHECK-V8
: vqrdmlah.s16 q0
, q1
, q2
64 vqrdmlah.s32 q2
, q3
, q0
65 //CHECK-V81aARM
: vqrdmlah.s32 q2
, q3
, q0 @ encoding
: [0x50,0x4b,0x26,0xf3]
66 //CHECK-V81aTHUMB
: vqrdmlah.s32 q2
, q3
, q0 @ encoding
: [0x26,0xff,0x50,0x4b]
67 //CHECK-V8
: error
: instruction requires
: armv8.1
a
68 //CHECK-V8
: vqrdmlah.s32 q2
, q3
, q0
72 vqrdmlsh.s16 d7
, d6
, d5
73 //CHECK-V81aARM
: vqrdmlsh.s16 d7
, d6
, d5 @ encoding
: [0x15,0x7c,0x16,0xf3]
74 //CHECK-V81aTHUMB
: vqrdmlsh.s16 d7
, d6
, d5 @ encoding
: [0x16,0xff,0x15,0x7c]
75 //CHECK-V8
: error
: instruction requires
: armv8.1
a
76 //CHECK-V8
: vqrdmlsh.s16 d7
, d6
, d5
79 vqrdmlsh.s32 d0
, d1
, d2
80 //CHECK-V81aARM
: vqrdmlsh.s32 d0
, d1
, d2 @ encoding
: [0x12,0x0c,0x21,0xf3]
81 //CHECK-V81aTHUMB
: vqrdmlsh.s32 d0
, d1
, d2 @ encoding
: [0x21,0xff,0x12,0x0c]
82 //CHECK-V8
: error
: instruction requires
: armv8.1
a
83 //CHECK-V8
: vqrdmlsh.s32 d0
, d1
, d2
86 vqrdmlsh.s16 q0
, q1
, q2
87 //CHECK-V81aARM
: vqrdmlsh.s16 q0
, q1
, q2 @ encoding
: [0x54,0x0c,0x12,0xf3]
88 //CHECK-V81aTHUMB
: vqrdmlsh.s16 q0
, q1
, q2 @ encoding
: [0x12,0xff,0x54,0x0c]
89 //CHECK-V8
: error
: instruction requires
: armv8.1
a
90 //CHECK-V8
: vqrdmlsh.s16 q0
, q1
, q2
93 vqrdmlsh.s32 q3
, q4
, q5
94 //CHECK-V81aARM
: vqrdmlsh.s32 q3
, q4
, q5 @ encoding
: [0x5a,0x6c,0x28,0xf3]
95 //CHECK-V81aTHUMB
: vqrdmlsh.s32 q3
, q4
, q5 @ encoding
: [0x28,0xff,0x5a,0x6c]
96 //CHECK-V8
: error
: instruction requires
: armv8.1
a
97 //CHECK-V8
: vqrdmlsh.s32 q3
, q4
, q5
101 vqrdmlah.i8 q0
, q1
, d9
[0]
102 vqrdmlah.s32 q0
, q1
, d9
[7]
103 vqrdmlah.u16 d0
, d1
, d2
[3]
104 vqrdmlsh.f32 q3
, q4
, d5
[1]
105 vqrdmlsh.f64 d3
, d5
, d5
[0]
107 //CHECK-ERROR
: error
: invalid operand for instruction
108 //CHECK-ERROR
: vqrdmlah.i8 q0
, q1
, d9
[0]
110 //CHECK-ERROR
: error
: invalid operand for instruction
111 //CHECK-ERROR
: vqrdmlah.s32 q0
, q1
, d9
[7]
113 //CHECK-ERROR
: error
: invalid operand for instruction
114 //CHECK-ERROR
: vqrdmlah.u16 d0
, d1
, d2
[3]
116 //CHECK-ERROR
: error
: invalid operand for instruction
117 //CHECK-ERROR
: vqrdmlsh.f32 q3
, q4
, d5
[1]
119 //CHECK-ERROR
: error
: invalid operand for instruction
120 //CHECK-ERROR
: vqrdmlsh.f64 d3
, d5
, d5
[0]
123 vqrdmlah.s16 d0
, d1
, d2
[0]
124 //CHECK-V81aARM
: vqrdmlah.s16 d0
, d1
, d2
[0] @ encoding
: [0x42,0x0e,0x91,0xf2]
125 //CHECK-V81aTHUMB
: vqrdmlah.s16 d0
, d1
, d2
[0] @ encoding
: [0x91,0xef,0x42,0x0e]
126 //CHECK-V8
: error
: instruction requires
: armv8.1
a
127 //CHECK-V8
: vqrdmlah.s16 d0
, d1
, d2
[0]
130 vqrdmlah.s32 d0
, d1
, d2
[0]
131 //CHECK-V81aARM
: vqrdmlah.s32 d0
, d1
, d2
[0] @ encoding
: [0x42,0x0e,0xa1,0xf2]
132 //CHECK-V81aTHUMB
: vqrdmlah.s32 d0
, d1
, d2
[0] @ encoding
: [0xa1,0xef,0x42,0x0e]
133 //CHECK-V8
: error
: instruction requires
: armv8.1
a
134 //CHECK-V8
: vqrdmlah.s32 d0
, d1
, d2
[0]
137 vqrdmlah.s16 q0
, q1
, d2
[0]
138 //CHECK-V81aARM
: vqrdmlah.s16 q0
, q1
, d2
[0] @ encoding
: [0x42,0x0e,0x92,0xf3]
139 //CHECK-V81aTHUMB
: vqrdmlah.s16 q0
, q1
, d2
[0] @ encoding
: [0x92,0xff,0x42,0x0e]
140 //CHECK-V8
: error
: instruction requires
: armv8.1
a
141 //CHECK-V8
: vqrdmlah.s16 q0
, q1
, d2
[0]
144 vqrdmlah.s32 q0
, q1
, d2
[0]
145 //CHECK-V81aARM
: vqrdmlah.s32 q0
, q1
, d2
[0] @ encoding
: [0x42,0x0e,0xa2,0xf3]
146 //CHECK-V81aTHUMB
: vqrdmlah.s32 q0
, q1
, d2
[0] @ encoding
: [0xa2,0xff,0x42,0x0e]
147 //CHECK-V8
: error
: instruction requires
: armv8.1
a
148 //CHECK-V8
: vqrdmlah.s32 q0
, q1
, d2
[0]
152 vqrdmlsh.s16 d0
, d1
, d2
[0]
153 //CHECK-V81aARM
: vqrdmlsh.s16 d0
, d1
, d2
[0] @ encoding
: [0x42,0x0f,0x91,0xf2]
154 //CHECK-V81aTHUMB
: vqrdmlsh.s16 d0
, d1
, d2
[0] @ encoding
: [0x91,0xef,0x42,0x0f]
155 //CHECK-V8
: error
: instruction requires
: armv8.1
a
156 //CHECK-V8
: vqrdmlsh.s16 d0
, d1
, d2
[0]
159 vqrdmlsh.s32 d0
, d1
, d2
[0]
160 //CHECK-V81aARM
: vqrdmlsh.s32 d0
, d1
, d2
[0] @ encoding
: [0x42,0x0f,0xa1,0xf2]
161 //CHECK-V81aTHUMB
: vqrdmlsh.s32 d0
, d1
, d2
[0] @ encoding
: [0xa1,0xef,0x42,0x0f]
162 //CHECK-V8
: error
: instruction requires
: armv8.1
a
163 //CHECK-V8
: vqrdmlsh.s32 d0
, d1
, d2
[0]
166 vqrdmlsh.s16 q0
, q1
, d2
[0]
167 //CHECK-V81aARM
: vqrdmlsh.s16 q0
, q1
, d2
[0] @ encoding
: [0x42,0x0f,0x92,0xf3]
168 //CHECK-V81aTHUMB
: vqrdmlsh.s16 q0
, q1
, d2
[0] @ encoding
: [0x92,0xff,0x42,0x0f]
169 //CHECK-V8
: error
: instruction requires
: armv8.1
a
170 //CHECK-V8
: vqrdmlsh.s16 q0
, q1
, d2
[0]
173 vqrdmlsh.s32 q0
, q1
, d2
[0]
174 //CHECK-V81aARM
: vqrdmlsh.s32 q0
, q1
, d2
[0] @ encoding
: [0x42,0x0f,0xa2,0xf3]
175 //CHECK-V81aTHUMB
: vqrdmlsh.s32 q0
, q1
, d2
[0] @ encoding
: [0xa2,0xff,0x42,0x0f]
176 //CHECK-V8
: error
: instruction requires
: armv8.1
a
177 //CHECK-V8
: vqrdmlsh.s32 q0
, q1
, d2
[0]
181 //CHECK-V81aTHUMB
: setpan
#0 @ encoding: [0x10,0xb6]
182 //CHECK-V81aARM
: setpan
#0 @ encoding: [0x00,0x00,0x10,0xf1]
183 //CHECK-V8
: instruction requires
: armv8.1
a
184 //CHECK-V8
: setpan
#0
188 //CHECK-V81aTHUMB
: setpan
#1 @ encoding: [0x18,0xb6]
189 //CHECK-V81aARM
: setpan
#1 @ encoding: [0x00,0x02,0x10,0xf1]
190 //CHECK-V8
: instruction requires
: armv8.1
a
191 //CHECK-V8
: setpan
#1
196 //CHECK-ERROR
: error
: too few operands for instruction
197 //CHECK-ERROR
: setpan
199 //CHECK-ERROR
: error
: operand must
be an immediate in the range
[0,1]
200 //CHECK-ERROR
: setpan
#-1
202 //CHECK-ERROR
: error
: operand must
be an immediate in the range
[0,1]
203 //CHECK-ERROR
: setpan
#2
208 //CHECK-THUMB-ERROR
: error
: instruction
'setpan' is
not predicable
, but condition code specified
209 //CHECK-THUMB-ERROR
: setpaneq
#0
210 //CHECK-THUMB-ERROR
: ^