xref: /llvm-project/llvm/test/MC/ARM/mve-vcmp.s (revision 7d76f8acf00b30d2f8414aa1241e4fec18628f1f)
1*7d76f8acSSimon Tatham# RUN: not llvm-mc -triple=thumbv8.1m.main-none-eabi -mattr=+mve -show-encoding  < %s 2>%t \
2*7d76f8acSSimon Tatham# RUN:   | FileCheck --check-prefix=CHECK-NOFP %s
3*7d76f8acSSimon Tatham# RUN: FileCheck --check-prefix=ERROR-NOFP < %t %s
4*7d76f8acSSimon Tatham# RUN: not llvm-mc -triple=thumbv8.1m.main-none-eabi -mattr=+mve.fp,+fp64 -show-encoding  < %s 2>%t \
5*7d76f8acSSimon Tatham# RUN:   | FileCheck --check-prefix=CHECK %s
6*7d76f8acSSimon Tatham# RUN: FileCheck --check-prefix=ERROR < %t %s
7*7d76f8acSSimon Tatham
8*7d76f8acSSimon Tatham# CHECK: vcmp.f16 eq, q0, q4  @ encoding: [0x31,0xfe,0x08,0x0f]
9*7d76f8acSSimon Tatham# ERROR-NOFP: [[@LINE+2]]:1: {{error|note}}: instruction requires: mve.fp
10*7d76f8acSSimon Tatham# CHECK-NOFP-NOT: vcmp.f16 eq, q0, q4  @ encoding: [0x31,0xfe,0x08,0x0f]
11*7d76f8acSSimon Tathamvcmp.f16 eq, q0, q4
12*7d76f8acSSimon Tatham
13*7d76f8acSSimon Tatham# CHECK: vcmp.f16 ne, q2, q7  @ encoding: [0x35,0xfe,0x8e,0x0f]
14*7d76f8acSSimon Tatham# ERROR-NOFP: [[@LINE+2]]:1: {{error|note}}: instruction requires: mve.fp
15*7d76f8acSSimon Tatham# CHECK-NOFP-NOT: vcmp.f16 ne, q2, q7  @ encoding: [0x35,0xfe,0x8e,0x0f]
16*7d76f8acSSimon Tathamvcmp.f16 ne, q2, q7
17*7d76f8acSSimon Tatham
18*7d76f8acSSimon Tatham# CHECK: vcmp.f16 ge, q0, q0  @ encoding: [0x31,0xfe,0x00,0x1f]
19*7d76f8acSSimon Tatham# ERROR-NOFP: [[@LINE+2]]:1: {{error|note}}: instruction requires: mve.fp
20*7d76f8acSSimon Tatham# CHECK-NOFP-NOT: vcmp.f16 ge, q0, q0  @ encoding: [0x31,0xfe,0x00,0x1f]
21*7d76f8acSSimon Tathamvcmp.f16 ge, q0, q0
22*7d76f8acSSimon Tatham
23*7d76f8acSSimon Tatham# CHECK: vcmp.f16 lt, q0, q1  @ encoding: [0x31,0xfe,0x82,0x1f]
24*7d76f8acSSimon Tatham# ERROR-NOFP: [[@LINE+2]]:1: {{error|note}}: instruction requires: mve.fp
25*7d76f8acSSimon Tatham# CHECK-NOFP-NOT: vcmp.f16 lt, q0, q1  @ encoding: [0x31,0xfe,0x82,0x1f]
26*7d76f8acSSimon Tathamvcmp.f16 lt, q0, q1
27*7d76f8acSSimon Tatham
28*7d76f8acSSimon Tatham# CHECK: vcmp.f16 gt, q1, q4  @ encoding: [0x33,0xfe,0x09,0x1f]
29*7d76f8acSSimon Tatham# ERROR-NOFP: [[@LINE+2]]:1: {{error|note}}: instruction requires: mve.fp
30*7d76f8acSSimon Tatham# CHECK-NOFP-NOT: vcmp.f16 gt, q1, q4  @ encoding: [0x33,0xfe,0x09,0x1f]
31*7d76f8acSSimon Tathamvcmp.f16 gt, q1, q4
32*7d76f8acSSimon Tatham
33*7d76f8acSSimon Tatham# CHECK: vcmp.f16 le, q2, q6  @ encoding: [0x35,0xfe,0x8d,0x1f]
34*7d76f8acSSimon Tatham# ERROR-NOFP: [[@LINE+2]]:1: {{error|note}}: instruction requires: mve.fp
35*7d76f8acSSimon Tatham# CHECK-NOFP-NOT: vcmp.f16 le, q2, q6  @ encoding: [0x35,0xfe,0x8d,0x1f]
36*7d76f8acSSimon Tathamvcmp.f16 le, q2, q6
37*7d76f8acSSimon Tatham
38*7d76f8acSSimon Tatham# ERROR: [[@LINE+1]]:10: {{error|note}}: condition code for floating-point comparison must be EQ, NE, LT, GT, LE or GE
39*7d76f8acSSimon Tathamvcmp.f16 hi, q2, q6
40*7d76f8acSSimon Tatham
41*7d76f8acSSimon Tatham# ERROR: [[@LINE+1]]:10: {{error|note}}: condition code for floating-point comparison must be EQ, NE, LT, GT, LE or GE
42*7d76f8acSSimon Tathamvcmp.f16 hs, q2, q6
43*7d76f8acSSimon Tatham
44*7d76f8acSSimon Tatham# CHECK: vcmp.f32 eq, q2, q5  @ encoding: [0x35,0xee,0x0a,0x0f]
45*7d76f8acSSimon Tatham# ERROR-NOFP: [[@LINE+2]]:1: {{error|note}}: instruction requires: mve.fp
46*7d76f8acSSimon Tatham# CHECK-NOFP-NOT: vcmp.f32 eq, q2, q5  @ encoding: [0x35,0xee,0x0a,0x0f]
47*7d76f8acSSimon Tathamvcmp.f32 eq, q2, q5
48*7d76f8acSSimon Tatham
49*7d76f8acSSimon Tatham# CHECK: vcmp.f32 ne, q3, q4  @ encoding: [0x37,0xee,0x88,0x0f]
50*7d76f8acSSimon Tatham# ERROR-NOFP: [[@LINE+2]]:1: {{error|note}}: instruction requires: mve.fp
51*7d76f8acSSimon Tatham# CHECK-NOFP-NOT: vcmp.f32 ne, q3, q4  @ encoding: [0x37,0xee,0x88,0x0f]
52*7d76f8acSSimon Tathamvcmp.f32 ne, q3, q4
53*7d76f8acSSimon Tatham
54*7d76f8acSSimon Tatham# CHECK: vcmp.f32 ge, q0, q7  @ encoding: [0x31,0xee,0x0e,0x1f]
55*7d76f8acSSimon Tatham# ERROR-NOFP: [[@LINE+2]]:1: {{error|note}}: instruction requires: mve.fp
56*7d76f8acSSimon Tatham# CHECK-NOFP-NOT: vcmp.f32 ge, q0, q7  @ encoding: [0x31,0xee,0x0e,0x1f]
57*7d76f8acSSimon Tathamvcmp.f32 ge, q0, q7
58*7d76f8acSSimon Tatham
59*7d76f8acSSimon Tatham# CHECK: vcmp.f32 lt, q5, q2  @ encoding: [0x3b,0xee,0x84,0x1f]
60*7d76f8acSSimon Tatham# ERROR-NOFP: [[@LINE+2]]:1: {{error|note}}: instruction requires: mve.fp
61*7d76f8acSSimon Tatham# CHECK-NOFP-NOT: vcmp.f32 lt, q5, q2  @ encoding: [0x3b,0xee,0x84,0x1f]
62*7d76f8acSSimon Tathamvcmp.f32 lt, q5, q2
63*7d76f8acSSimon Tatham
64*7d76f8acSSimon Tatham# CHECK: vcmp.f32 gt, q2, q7  @ encoding: [0x35,0xee,0x0f,0x1f]
65*7d76f8acSSimon Tatham# ERROR-NOFP: [[@LINE+2]]:1: {{error|note}}: instruction requires: mve.fp
66*7d76f8acSSimon Tatham# CHECK-NOFP-NOT: vcmp.f32 gt, q2, q7  @ encoding: [0x35,0xee,0x0f,0x1f]
67*7d76f8acSSimon Tathamvcmp.f32 gt, q2, q7
68*7d76f8acSSimon Tatham
69*7d76f8acSSimon Tatham# CHECK: vcmp.f32 le, q2, q4  @ encoding: [0x35,0xee,0x89,0x1f]
70*7d76f8acSSimon Tatham# ERROR-NOFP: [[@LINE+2]]:1: {{error|note}}: instruction requires: mve.fp
71*7d76f8acSSimon Tatham# CHECK-NOFP-NOT: vcmp.f32 le, q2, q4  @ encoding: [0x35,0xee,0x89,0x1f]
72*7d76f8acSSimon Tathamvcmp.f32 le, q2, q4
73*7d76f8acSSimon Tatham
74*7d76f8acSSimon Tatham# ERROR: [[@LINE+1]]:10: {{error|note}}: condition code for floating-point comparison must be EQ, NE, LT, GT, LE or GE
75*7d76f8acSSimon Tathamvcmp.f32 hi, q2, q6
76*7d76f8acSSimon Tatham
77*7d76f8acSSimon Tatham# ERROR: [[@LINE+1]]:10: {{error|note}}: condition code for floating-point comparison must be EQ, NE, LT, GT, LE or GE
78*7d76f8acSSimon Tathamvcmp.f32 hs, q2, q6
79*7d76f8acSSimon Tatham
80*7d76f8acSSimon Tatham# CHECK: vcmp.i8 eq, q4, q6  @ encoding: [0x09,0xfe,0x0c,0x0f]
81*7d76f8acSSimon Tatham# CHECK-NOFP: vcmp.i8 eq, q4, q6  @ encoding: [0x09,0xfe,0x0c,0x0f]
82*7d76f8acSSimon Tathamvcmp.i8 eq, q4, q6
83*7d76f8acSSimon Tatham
84*7d76f8acSSimon Tatham# CHECK: vcmp.i8 ne, q2, q2  @ encoding: [0x05,0xfe,0x84,0x0f]
85*7d76f8acSSimon Tatham# CHECK-NOFP: vcmp.i8 ne, q2, q2  @ encoding: [0x05,0xfe,0x84,0x0f]
86*7d76f8acSSimon Tathamvcmp.i8 ne, q2, q2
87*7d76f8acSSimon Tatham
88*7d76f8acSSimon Tatham# ERROR: [[@LINE+1]]:9: {{error|note}}: condition code for sign-independent integer comparison must be EQ or NE
89*7d76f8acSSimon Tathamvcmp.i8 hs, q2, q6
90*7d76f8acSSimon Tatham
91*7d76f8acSSimon Tatham# ERROR: [[@LINE+1]]:9: {{error|note}}: condition code for sign-independent integer comparison must be EQ or NE
92*7d76f8acSSimon Tathamvcmp.i8 le, q2, q6
93*7d76f8acSSimon Tatham
94*7d76f8acSSimon Tatham# CHECK: vcmp.i8 eq, q4, q6  @ encoding: [0x09,0xfe,0x0c,0x0f]
95*7d76f8acSSimon Tatham# CHECK-NOFP: vcmp.i8 eq, q4, q6  @ encoding: [0x09,0xfe,0x0c,0x0f]
96*7d76f8acSSimon Tathamvcmp.s8 eq, q4, q6
97*7d76f8acSSimon Tatham
98*7d76f8acSSimon Tatham# CHECK: vcmp.i8 ne, q2, q2  @ encoding: [0x05,0xfe,0x84,0x0f]
99*7d76f8acSSimon Tatham# CHECK-NOFP: vcmp.i8 ne, q2, q2  @ encoding: [0x05,0xfe,0x84,0x0f]
100*7d76f8acSSimon Tathamvcmp.s8 ne, q2, q2
101*7d76f8acSSimon Tatham
102*7d76f8acSSimon Tatham# CHECK: vcmp.i8 eq, q4, q6  @ encoding: [0x09,0xfe,0x0c,0x0f]
103*7d76f8acSSimon Tatham# CHECK-NOFP: vcmp.i8 eq, q4, q6  @ encoding: [0x09,0xfe,0x0c,0x0f]
104*7d76f8acSSimon Tathamvcmp.u8 eq, q4, q6
105*7d76f8acSSimon Tatham
106*7d76f8acSSimon Tatham# CHECK: vcmp.i8 ne, q2, q2  @ encoding: [0x05,0xfe,0x84,0x0f]
107*7d76f8acSSimon Tatham# CHECK-NOFP: vcmp.i8 ne, q2, q2  @ encoding: [0x05,0xfe,0x84,0x0f]
108*7d76f8acSSimon Tathamvcmp.u8 ne, q2, q2
109*7d76f8acSSimon Tatham
110*7d76f8acSSimon Tatham# CHECK: vcmp.s8 ge, q0, q0  @ encoding: [0x01,0xfe,0x00,0x1f]
111*7d76f8acSSimon Tatham# CHECK-NOFP: vcmp.s8 ge, q0, q0  @ encoding: [0x01,0xfe,0x00,0x1f]
112*7d76f8acSSimon Tathamvcmp.s8 ge, q0, q0
113*7d76f8acSSimon Tatham
114*7d76f8acSSimon Tatham# CHECK: vcmp.s8 lt, q2, q7  @ encoding: [0x05,0xfe,0x8e,0x1f]
115*7d76f8acSSimon Tatham# CHECK-NOFP: vcmp.s8 lt, q2, q7  @ encoding: [0x05,0xfe,0x8e,0x1f]
116*7d76f8acSSimon Tathamvcmp.s8 lt, q2, q7
117*7d76f8acSSimon Tatham
118*7d76f8acSSimon Tatham# CHECK: vcmp.s8 gt, q4, q3  @ encoding: [0x09,0xfe,0x07,0x1f]
119*7d76f8acSSimon Tatham# CHECK-NOFP: vcmp.s8 gt, q4, q3  @ encoding: [0x09,0xfe,0x07,0x1f]
120*7d76f8acSSimon Tathamvcmp.s8 gt, q4, q3
121*7d76f8acSSimon Tatham
122*7d76f8acSSimon Tatham# CHECK: vcmp.s8 le, q7, q3  @ encoding: [0x0f,0xfe,0x87,0x1f]
123*7d76f8acSSimon Tatham# CHECK-NOFP: vcmp.s8 le, q7, q3  @ encoding: [0x0f,0xfe,0x87,0x1f]
124*7d76f8acSSimon Tathamvcmp.s8 le, q7, q3
125*7d76f8acSSimon Tatham
126*7d76f8acSSimon Tatham# ERROR: [[@LINE+1]]:9: {{error|note}}: condition code for signed integer comparison must be EQ, NE, LT, GT, LE or GE
127*7d76f8acSSimon Tathamvcmp.s8 hs, q2, q6
128*7d76f8acSSimon Tatham
129*7d76f8acSSimon Tatham# CHECK: vcmp.u8 hi, q1, q4  @ encoding: [0x03,0xfe,0x89,0x0f]
130*7d76f8acSSimon Tatham# CHECK-NOFP: vcmp.u8 hi, q1, q4  @ encoding: [0x03,0xfe,0x89,0x0f]
131*7d76f8acSSimon Tathamvcmp.u8 hi, q1, q4
132*7d76f8acSSimon Tatham
133*7d76f8acSSimon Tatham# CHECK: vcmp.u8 cs, q1, q4  @ encoding: [0x03,0xfe,0x09,0x0f]
134*7d76f8acSSimon Tatham# CHECK-NOFP: vcmp.u8 cs, q1, q4  @ encoding: [0x03,0xfe,0x09,0x0f]
135*7d76f8acSSimon Tathamvcmp.u8 cs, q1, q4
136*7d76f8acSSimon Tatham
137*7d76f8acSSimon Tatham# ERROR: [[@LINE+1]]:9: {{error|note}}: condition code for unsigned integer comparison must be EQ, NE, HS or HI
138*7d76f8acSSimon Tathamvcmp.u8 gt, q2, q6
139*7d76f8acSSimon Tatham
140*7d76f8acSSimon Tatham# ERROR: [[@LINE+1]]:9: {{error|note}}: condition code for unsigned integer comparison must be EQ, NE, HS or HI
141*7d76f8acSSimon Tathamvcmp.u8 lo, q2, q6
142*7d76f8acSSimon Tatham
143*7d76f8acSSimon Tatham# CHECK: vcmp.i16 eq, q4, q7  @ encoding: [0x19,0xfe,0x0e,0x0f]
144*7d76f8acSSimon Tatham# CHECK-NOFP: vcmp.i16 eq, q4, q7  @ encoding: [0x19,0xfe,0x0e,0x0f]
145*7d76f8acSSimon Tathamvcmp.i16 eq, q4, q7
146*7d76f8acSSimon Tatham
147*7d76f8acSSimon Tatham# CHECK: vcmp.i16 ne, q2, q1  @ encoding: [0x15,0xfe,0x82,0x0f]
148*7d76f8acSSimon Tatham# CHECK-NOFP: vcmp.i16 ne, q2, q1  @ encoding: [0x15,0xfe,0x82,0x0f]
149*7d76f8acSSimon Tathamvcmp.i16 ne, q2, q1
150*7d76f8acSSimon Tatham
151*7d76f8acSSimon Tatham# ERROR: [[@LINE+1]]:10: {{error|note}}: condition code for sign-independent integer comparison must be EQ or NE
152*7d76f8acSSimon Tathamvcmp.i16 hi, q2, q6
153*7d76f8acSSimon Tatham
154*7d76f8acSSimon Tatham# ERROR: [[@LINE+1]]:10: {{error|note}}: condition code for sign-independent integer comparison must be EQ or NE
155*7d76f8acSSimon Tathamvcmp.i16 lt, q2, q6
156*7d76f8acSSimon Tatham
157*7d76f8acSSimon Tatham# CHECK: vcmp.s16 ge, q1, q7  @ encoding: [0x13,0xfe,0x0e,0x1f]
158*7d76f8acSSimon Tatham# CHECK-NOFP: vcmp.s16 ge, q1, q7  @ encoding: [0x13,0xfe,0x0e,0x1f]
159*7d76f8acSSimon Tathamvcmp.s16 ge, q1, q7
160*7d76f8acSSimon Tatham
161*7d76f8acSSimon Tatham# CHECK: vcmp.s16 lt, q0, q1  @ encoding: [0x11,0xfe,0x82,0x1f]
162*7d76f8acSSimon Tatham# CHECK-NOFP: vcmp.s16 lt, q0, q1  @ encoding: [0x11,0xfe,0x82,0x1f]
163*7d76f8acSSimon Tathamvcmp.s16 lt, q0, q1
164*7d76f8acSSimon Tatham
165*7d76f8acSSimon Tatham# CHECK: vcmp.s16 gt, q1, q7  @ encoding: [0x13,0xfe,0x0f,0x1f]
166*7d76f8acSSimon Tatham# CHECK-NOFP: vcmp.s16 gt, q1, q7  @ encoding: [0x13,0xfe,0x0f,0x1f]
167*7d76f8acSSimon Tathamvcmp.s16 gt, q1, q7
168*7d76f8acSSimon Tatham
169*7d76f8acSSimon Tatham# CHECK: vcmp.s16 le, q2, q1  @ encoding: [0x15,0xfe,0x83,0x1f]
170*7d76f8acSSimon Tatham# CHECK-NOFP: vcmp.s16 le, q2, q1  @ encoding: [0x15,0xfe,0x83,0x1f]
171*7d76f8acSSimon Tathamvcmp.s16 le, q2, q1
172*7d76f8acSSimon Tatham
173*7d76f8acSSimon Tatham# ERROR: [[@LINE+1]]:10: {{error|note}}: condition code for signed integer comparison must be EQ, NE, LT, GT, LE or GE
174*7d76f8acSSimon Tathamvcmp.s16 hi, q2, q6
175*7d76f8acSSimon Tatham
176*7d76f8acSSimon Tatham# CHECK: vcmp.u16 hi, q1, q4  @ encoding: [0x13,0xfe,0x89,0x0f]
177*7d76f8acSSimon Tatham# CHECK-NOFP: vcmp.u16 hi, q1, q4  @ encoding: [0x13,0xfe,0x89,0x0f]
178*7d76f8acSSimon Tathamvcmp.u16 hi, q1, q4
179*7d76f8acSSimon Tatham
180*7d76f8acSSimon Tatham# CHECK: vcmp.u16 cs, q1, q4  @ encoding: [0x13,0xfe,0x09,0x0f]
181*7d76f8acSSimon Tatham# CHECK-NOFP: vcmp.u16 cs, q1, q4  @ encoding: [0x13,0xfe,0x09,0x0f]
182*7d76f8acSSimon Tathamvcmp.u16 cs, q1, q4
183*7d76f8acSSimon Tatham
184*7d76f8acSSimon Tatham# ERROR: [[@LINE+1]]:10: {{error|note}}: condition code for unsigned integer comparison must be EQ, NE, HS or HI
185*7d76f8acSSimon Tathamvcmp.u16 ge, q2, q6
186*7d76f8acSSimon Tatham
187*7d76f8acSSimon Tatham# ERROR: [[@LINE+1]]:10: {{error|note}}: condition code for unsigned integer comparison must be EQ, NE, HS or HI
188*7d76f8acSSimon Tathamvcmp.u16 ls, q2, q6
189*7d76f8acSSimon Tatham
190*7d76f8acSSimon Tatham# CHECK: vcmp.i32 eq, q2, q7  @ encoding: [0x25,0xfe,0x0e,0x0f]
191*7d76f8acSSimon Tatham# CHECK-NOFP: vcmp.i32 eq, q2, q7  @ encoding: [0x25,0xfe,0x0e,0x0f]
192*7d76f8acSSimon Tathamvcmp.i32 eq, q2, q7
193*7d76f8acSSimon Tatham
194*7d76f8acSSimon Tatham# CHECK: vcmp.i32 ne, q2, q4  @ encoding: [0x25,0xfe,0x88,0x0f]
195*7d76f8acSSimon Tatham# CHECK-NOFP: vcmp.i32 ne, q2, q4  @ encoding: [0x25,0xfe,0x88,0x0f]
196*7d76f8acSSimon Tathamvcmp.i32 ne, q2, q4
197*7d76f8acSSimon Tatham
198*7d76f8acSSimon Tatham# ERROR: [[@LINE+1]]:10: {{error|note}}: condition code for sign-independent integer comparison must be EQ or NE
199*7d76f8acSSimon Tathamvcmp.i32 lo, q2, q6
200*7d76f8acSSimon Tatham
201*7d76f8acSSimon Tatham# ERROR: [[@LINE+1]]:10: {{error|note}}: condition code for sign-independent integer comparison must be EQ or NE
202*7d76f8acSSimon Tathamvcmp.i32 ge, q2, q6
203*7d76f8acSSimon Tatham
204*7d76f8acSSimon Tatham# CHECK: vcmp.s32 ge, q5, q5  @ encoding: [0x2b,0xfe,0x0a,0x1f]
205*7d76f8acSSimon Tatham# CHECK-NOFP: vcmp.s32 ge, q5, q5  @ encoding: [0x2b,0xfe,0x0a,0x1f]
206*7d76f8acSSimon Tathamvcmp.s32 ge, q5, q5
207*7d76f8acSSimon Tatham
208*7d76f8acSSimon Tatham# CHECK: vcmp.s32 lt, q2, q2  @ encoding: [0x25,0xfe,0x84,0x1f]
209*7d76f8acSSimon Tatham# CHECK-NOFP: vcmp.s32 lt, q2, q2  @ encoding: [0x25,0xfe,0x84,0x1f]
210*7d76f8acSSimon Tathamvcmp.s32 lt, q2, q2
211*7d76f8acSSimon Tatham
212*7d76f8acSSimon Tatham# CHECK: vcmp.s32 gt, q0, q1  @ encoding: [0x21,0xfe,0x03,0x1f]
213*7d76f8acSSimon Tatham# CHECK-NOFP: vcmp.s32 gt, q0, q1  @ encoding: [0x21,0xfe,0x03,0x1f]
214*7d76f8acSSimon Tathamvcmp.s32 gt, q0, q1
215*7d76f8acSSimon Tatham
216*7d76f8acSSimon Tatham# CHECK: vcmp.s32 le, q5, q4  @ encoding: [0x2b,0xfe,0x89,0x1f]
217*7d76f8acSSimon Tatham# CHECK-NOFP: vcmp.s32 le, q5, q4  @ encoding: [0x2b,0xfe,0x89,0x1f]
218*7d76f8acSSimon Tathamvcmp.s32 le, q5, q4
219*7d76f8acSSimon Tatham
220*7d76f8acSSimon Tatham# ERROR: [[@LINE+1]]:10: {{error|note}}: condition code for signed integer comparison must be EQ, NE, LT, GT, LE or GE
221*7d76f8acSSimon Tathamvcmp.s32 ls, q2, q6
222*7d76f8acSSimon Tatham
223*7d76f8acSSimon Tatham# CHECK: vcmp.u32 hi, q1, q4  @ encoding: [0x23,0xfe,0x89,0x0f]
224*7d76f8acSSimon Tatham# CHECK-NOFP: vcmp.u32 hi, q1, q4  @ encoding: [0x23,0xfe,0x89,0x0f]
225*7d76f8acSSimon Tathamvcmp.u32 hi, q1, q4
226*7d76f8acSSimon Tatham
227*7d76f8acSSimon Tatham# CHECK: vcmp.u32 cs, q1, q4  @ encoding: [0x23,0xfe,0x09,0x0f]
228*7d76f8acSSimon Tatham# CHECK-NOFP: vcmp.u32 cs, q1, q4  @ encoding: [0x23,0xfe,0x09,0x0f]
229*7d76f8acSSimon Tathamvcmp.u32 cs, q1, q4
230*7d76f8acSSimon Tatham
231*7d76f8acSSimon Tatham# ERROR: [[@LINE+1]]:10: {{error|note}}: condition code for unsigned integer comparison must be EQ, NE, HS or HI
232*7d76f8acSSimon Tathamvcmp.u32 vs, q2, q6
233*7d76f8acSSimon Tatham
234*7d76f8acSSimon Tatham# ERROR: [[@LINE+1]]:10: {{error|note}}: condition code for unsigned integer comparison must be EQ, NE, HS or HI
235*7d76f8acSSimon Tathamvcmp.u32 mi, q2, q6
236*7d76f8acSSimon Tatham
237*7d76f8acSSimon Tatham# CHECK: vcmp.f16 gt, q4, zr  @ encoding: [0x39,0xfe,0x6f,0x1f]
238*7d76f8acSSimon Tatham# ERROR-NOFP: [[@LINE+2]]:1: {{error|note}}: instruction requires: mve.fp
239*7d76f8acSSimon Tatham# CHECK-NOFP-NOT: vcmp.f16 gt, q4, zr  @ encoding: [0x39,0xfe,0x6f,0x1f]
240*7d76f8acSSimon Tathamvcmp.f16 gt, q4, zr
241*7d76f8acSSimon Tatham
242*7d76f8acSSimon Tatham# CHECK: vcmp.f16 eq, q4, r12  @ encoding: [0x39,0xfe,0x4c,0x0f]
243*7d76f8acSSimon Tatham# ERROR-NOFP: [[@LINE+2]]:1: {{error|note}}: instruction requires: mve.fp
244*7d76f8acSSimon Tatham# CHECK-NOFP-NOT: vcmp.f16 eq, q4, r12  @ encoding: [0x39,0xfe,0x4c,0x0f]
245*7d76f8acSSimon Tathamvcmp.f16 eq, q4, r12
246*7d76f8acSSimon Tatham
247*7d76f8acSSimon Tatham# CHECK: vcmp.f32 ne, q3, r0  @ encoding: [0x37,0xee,0xc0,0x0f]
248*7d76f8acSSimon Tatham# ERROR-NOFP: [[@LINE+2]]:1: {{error|note}}: instruction requires: mve.fp
249*7d76f8acSSimon Tatham# CHECK-NOFP-NOT: vcmp.f32 ne, q3, r0  @ encoding: [0x37,0xee,0xc0,0x0f]
250*7d76f8acSSimon Tathamvcmp.f32 ne, q3, r0
251*7d76f8acSSimon Tatham
252*7d76f8acSSimon Tatham# CHECK: vcmp.i8 eq, q1, r0  @ encoding: [0x03,0xfe,0x40,0x0f]
253*7d76f8acSSimon Tatham# CHECK-NOFP: vcmp.i8 eq, q1, r0  @ encoding: [0x03,0xfe,0x40,0x0f]
254*7d76f8acSSimon Tathamvcmp.i8 eq, q1, r0
255*7d76f8acSSimon Tatham
256*7d76f8acSSimon Tatham# CHECK: vcmp.s8 le, q1, r0  @ encoding: [0x03,0xfe,0xe0,0x1f]
257*7d76f8acSSimon Tatham# CHECK-NOFP: vcmp.s8 le, q1, r0  @ encoding: [0x03,0xfe,0xe0,0x1f]
258*7d76f8acSSimon Tathamvcmp.s8 le, q1, r0
259*7d76f8acSSimon Tatham
260*7d76f8acSSimon Tatham# CHECK: vcmp.u8 cs, q1, r0  @ encoding: [0x03,0xfe,0x60,0x0f]
261*7d76f8acSSimon Tatham# CHECK-NOFP: vcmp.u8 cs, q1, r0  @ encoding: [0x03,0xfe,0x60,0x0f]
262*7d76f8acSSimon Tathamvcmp.u8 cs, q1, r0
263*7d76f8acSSimon Tatham
264*7d76f8acSSimon Tatham# CHECK: vcmp.i16 eq, q5, r10  @ encoding: [0x1b,0xfe,0x4a,0x0f]
265*7d76f8acSSimon Tatham# CHECK-NOFP: vcmp.i16 eq, q5, r10  @ encoding: [0x1b,0xfe,0x4a,0x0f]
266*7d76f8acSSimon Tathamvcmp.i16 eq, q5, r10
267*7d76f8acSSimon Tatham
268*7d76f8acSSimon Tatham# CHECK: vcmp.i32 eq, q1, r4  @ encoding: [0x23,0xfe,0x44,0x0f]
269*7d76f8acSSimon Tatham# CHECK-NOFP: vcmp.i32 eq, q1, r4  @ encoding: [0x23,0xfe,0x44,0x0f]
270*7d76f8acSSimon Tathamvcmp.i32 eq, q1, r4
271*7d76f8acSSimon Tatham
272*7d76f8acSSimon Tathamvpste
273*7d76f8acSSimon Tathamvcmpt.i8 eq, q0, r0
274*7d76f8acSSimon Tathamvcmpe.i16 ne, q0, r0
275*7d76f8acSSimon Tatham# CHECK: vpste @ encoding: [0x71,0xfe,0x4d,0x8f]
276*7d76f8acSSimon Tatham# CHECK-NOFP: vpste @ encoding: [0x71,0xfe,0x4d,0x8f]
277*7d76f8acSSimon Tatham# CHECK: vcmpt.i8 eq, q0, r0 @ encoding: [0x01,0xfe,0x40,0x0f]
278*7d76f8acSSimon Tatham# CHECK-NOFP: vcmpt.i8 eq, q0, r0 @ encoding: [0x01,0xfe,0x40,0x0f]
279*7d76f8acSSimon Tatham# CHECK: vcmpe.i16 ne, q0, r0 @ encoding: [0x11,0xfe,0xc0,0x0f]
280*7d76f8acSSimon Tatham# CHECK-NOFP: vcmpe.i16 ne, q0, r0 @ encoding: [0x11,0xfe,0xc0,0x0f]
281*7d76f8acSSimon Tatham
282*7d76f8acSSimon Tatham# Ensure the scalar FP instructions VCMP and VCMPE are still correctly
283*7d76f8acSSimon Tatham# distinguished, in spite of VCMPE sometimes being a VPT-suffixed
284*7d76f8acSSimon Tatham# version of VCMP with identical encoding.
285*7d76f8acSSimon Tathamvcmp.f16  s0,s1
286*7d76f8acSSimon Tathamvcmpe.f16 s0,s1
287*7d76f8acSSimon Tatham# CHECK: vcmp.f16 s0, s1 @ encoding: [0xb4,0xee,0x60,0x09]
288*7d76f8acSSimon Tatham# CHECK: vcmpe.f16 s0, s1 @ encoding: [0xb4,0xee,0xe0,0x09]
289*7d76f8acSSimon Tatham# CHECK-NOFP-NOT: vcmp.f16 s0, s1 @ encoding: [0xb4,0xee,0x60,0x09]
290*7d76f8acSSimon Tatham# CHECK-NOFP-NOT: vcmpe.f16 s0, s1 @ encoding: [0xb4,0xee,0xe0,0x09]
291*7d76f8acSSimon Tatham
292*7d76f8acSSimon Tathamitt eq
293*7d76f8acSSimon Tathamvcmpeq.f32 s0, s1
294*7d76f8acSSimon Tathamvcmpeeq.f32 s0, s1
295*7d76f8acSSimon Tatham# CHECK: itt eq @ encoding: [0x04,0xbf]
296*7d76f8acSSimon Tatham# CHECK: vcmpeq.f32 s0, s1 @ encoding: [0xb4,0xee,0x60,0x0a]
297*7d76f8acSSimon Tatham# CHECK-NOFP-NOT: vcmpeq.f32 s0, s1 @ encoding: [0xb4,0xee,0x60,0x0a]
298*7d76f8acSSimon Tatham# CHECK: vcmpeeq.f32 s0, s1 @ encoding: [0xb4,0xee,0xe0,0x0a]
299*7d76f8acSSimon Tatham# CHECK-NOFP-NOT: vcmpeeq.f32 s0, s1 @ encoding: [0xb4,0xee,0xe0,0x0a]
300