xref: /llvm-project/llvm/test/MC/ARM/mve-float.s (revision c9b2cd4674c072f4c361875698568f3618b3dcc6)
1*c9b2cd46SSimon Tatham# RUN: not llvm-mc -triple=thumbv8.1m.main-none-eabi -mattr=+mve -show-encoding  < %s \
2*c9b2cd46SSimon Tatham# RUN:   | FileCheck --check-prefix=CHECK-NOFP %s
3*c9b2cd46SSimon Tatham# RUN: not llvm-mc -triple=thumbv8.1m.main-none-eabi -mattr=+mve.fp,+fp64 -show-encoding  < %s 2>%t \
4*c9b2cd46SSimon Tatham# RUN:   | FileCheck --check-prefix=CHECK %s
5*c9b2cd46SSimon Tatham# RUN:     FileCheck --check-prefix=ERROR < %t %s
6*c9b2cd46SSimon Tatham
7*c9b2cd46SSimon Tatham# CHECK: vrintn.f16 q1, q0  @ encoding: [0xb6,0xff,0x40,0x24]
8*c9b2cd46SSimon Tatham# CHECK-NOFP-NOT: vrintn.f16 q1, q0  @ encoding: [0xb6,0xff,0x40,0x24]
9*c9b2cd46SSimon Tathamvrintn.f16 q1, q0
10*c9b2cd46SSimon Tatham
11*c9b2cd46SSimon Tatham# CHECK: vrintn.f32 q0, q4  @ encoding: [0xba,0xff,0x48,0x04]
12*c9b2cd46SSimon Tatham# CHECK-NOFP-NOT: vrintn.f32 q0, q4  @ encoding: [0xba,0xff,0x48,0x04]
13*c9b2cd46SSimon Tathamvrintn.f32 q0, q4
14*c9b2cd46SSimon Tatham
15*c9b2cd46SSimon Tatham# CHECK: vrinta.f16 q0, q1  @ encoding: [0xb6,0xff,0x42,0x05]
16*c9b2cd46SSimon Tatham# CHECK-NOFP-NOT: vrinta.f16 q0, q1  @ encoding: [0xb6,0xff,0x42,0x05]
17*c9b2cd46SSimon Tathamvrinta.f16 q0, q1
18*c9b2cd46SSimon Tatham
19*c9b2cd46SSimon Tatham# CHECK: vrinta.f32 q1, q3  @ encoding: [0xba,0xff,0x46,0x25]
20*c9b2cd46SSimon Tatham# CHECK-NOFP-NOT: vrinta.f32 q1, q3  @ encoding: [0xba,0xff,0x46,0x25]
21*c9b2cd46SSimon Tathamvrinta.f32 q1, q3
22*c9b2cd46SSimon Tatham
23*c9b2cd46SSimon Tatham# CHECK: vrintm.f16 q0, q5  @ encoding: [0xb6,0xff,0xca,0x06]
24*c9b2cd46SSimon Tatham# CHECK-NOFP-NOT: vrintm.f16 q0, q5  @ encoding: [0xb6,0xff,0xca,0x06]
25*c9b2cd46SSimon Tathamvrintm.f16 q0, q5
26*c9b2cd46SSimon Tatham
27*c9b2cd46SSimon Tatham# CHECK: vrintm.f32 q0, q4  @ encoding: [0xba,0xff,0xc8,0x06]
28*c9b2cd46SSimon Tatham# CHECK-NOFP-NOT: vrintm.f32 q0, q4  @ encoding: [0xba,0xff,0xc8,0x06]
29*c9b2cd46SSimon Tathamvrintm.f32 q0, q4
30*c9b2cd46SSimon Tatham
31*c9b2cd46SSimon Tatham# CHECK: vrintp.f16 q1, q0  @ encoding: [0xb6,0xff,0xc0,0x27]
32*c9b2cd46SSimon Tatham# CHECK-NOFP-NOT: vrintp.f16 q1, q0  @ encoding: [0xb6,0xff,0xc0,0x27]
33*c9b2cd46SSimon Tathamvrintp.f16 q1, q0
34*c9b2cd46SSimon Tatham
35*c9b2cd46SSimon Tatham# CHECK: vrintp.f32 q0, q1  @ encoding: [0xba,0xff,0xc2,0x07]
36*c9b2cd46SSimon Tatham# CHECK-NOFP-NOT: vrintp.f32 q0, q1  @ encoding: [0xba,0xff,0xc2,0x07]
37*c9b2cd46SSimon Tathamvrintp.f32 q0, q1
38*c9b2cd46SSimon Tatham
39*c9b2cd46SSimon Tatham# CHECK: vrintx.f16 q1, q2  @ encoding: [0xb6,0xff,0xc4,0x24]
40*c9b2cd46SSimon Tatham# CHECK-NOFP-NOT: vrintx.f16 q1, q2  @ encoding: [0xb6,0xff,0xc4,0x24]
41*c9b2cd46SSimon Tathamvrintx.f16 q1, q2
42*c9b2cd46SSimon Tatham
43*c9b2cd46SSimon Tatham# CHECK: vrintx.f32 q1, q1  @ encoding: [0xba,0xff,0xc2,0x24]
44*c9b2cd46SSimon Tatham# CHECK-NOFP-NOT: vrintx.f32 q1, q1  @ encoding: [0xba,0xff,0xc2,0x24]
45*c9b2cd46SSimon Tathamvrintx.f32 q1, q1
46*c9b2cd46SSimon Tatham
47*c9b2cd46SSimon Tatham# CHECK: vrintz.f16 q1, q6  @ encoding: [0xb6,0xff,0xcc,0x25]
48*c9b2cd46SSimon Tatham# CHECK-NOFP-NOT: vrintz.f16 q1, q6  @ encoding: [0xb6,0xff,0xcc,0x25]
49*c9b2cd46SSimon Tathamvrintz.f16 q1, q6
50*c9b2cd46SSimon Tatham
51*c9b2cd46SSimon Tatham# CHECK: vrintz.f32 q1, q0  @ encoding: [0xba,0xff,0xc0,0x25]
52*c9b2cd46SSimon Tatham# CHECK-NOFP-NOT: vrintz.f32 q1, q0  @ encoding: [0xba,0xff,0xc0,0x25]
53*c9b2cd46SSimon Tathamvrintz.f32 q1, q0
54*c9b2cd46SSimon Tatham
55*c9b2cd46SSimon Tatham# CHECK: vrintr.f32 s0, s1 @ encoding: [0xb6,0xee,0x60,0x0a]
56*c9b2cd46SSimon Tatham# CHECK-NOFP-NOT: vrintr.f32 s0, s1 @ encoding: [0xb6,0xee,0x60,0x0a]
57*c9b2cd46SSimon Tathamvrintr.f32.f32 s0, s1
58*c9b2cd46SSimon Tatham
59*c9b2cd46SSimon Tatham# CHECK: vrintr.f64 d0, d1 @ encoding: [0xb6,0xee,0x41,0x0b]
60*c9b2cd46SSimon Tatham# CHECK-NOFP-NOT: vrintr.f64 d0, d1 @ encoding: [0xb6,0xee,0x41,0x0b]
61*c9b2cd46SSimon Tathamvrintr.f64.f64 d0, d1
62*c9b2cd46SSimon Tatham
63*c9b2cd46SSimon Tatham# ERROR: [[@LINE+1]]:{{[0-9]+}}: {{error|note}}: invalid instruction
64*c9b2cd46SSimon Tathamvrintr.f32.f32 q0, q1
65*c9b2cd46SSimon Tatham
66*c9b2cd46SSimon Tatham# ERROR: [[@LINE+1]]:{{[0-9]+}}: {{error|note}}: invalid instruction
67*c9b2cd46SSimon Tathamvrintr.f64 q0, q1
68*c9b2cd46SSimon Tatham
69*c9b2cd46SSimon Tatham# CHECK: vmul.f16 q2, q1, q3  @ encoding: [0x12,0xff,0x56,0x4d]
70*c9b2cd46SSimon Tatham# CHECK-NOFP-NOT: vmul.f16 q2, q1, q3  @ encoding: [0x12,0xff,0x56,0x4d]
71*c9b2cd46SSimon Tathamvmul.f16 q2, q1, q3
72*c9b2cd46SSimon Tatham
73*c9b2cd46SSimon Tatham# CHECK: vmul.f32 q0, q0, q5  @ encoding: [0x00,0xff,0x5a,0x0d]
74*c9b2cd46SSimon Tatham# CHECK-NOFP-NOT: vmul.f32 q0, q0, q5  @ encoding: [0x00,0xff,0x5a,0x0d]
75*c9b2cd46SSimon Tathamvmul.f32 q0, q0, q5
76*c9b2cd46SSimon Tatham
77*c9b2cd46SSimon Tatham# CHECK: vcmla.f16 q3, q2, q1, #0  @ encoding: [0x24,0xfc,0x42,0x68]
78*c9b2cd46SSimon Tatham# CHECK-NOFP-NOT: vcmla.f16 q3, q2, q1, #0  @ encoding: [0x24,0xfc,0x42,0x68]
79*c9b2cd46SSimon Tathamvcmla.f16 q3, q2, q1, #0
80*c9b2cd46SSimon Tatham
81*c9b2cd46SSimon Tatham# CHECK: vcmla.f16 q0, q0, q5, #90  @ encoding: [0xa0,0xfc,0x4a,0x08]
82*c9b2cd46SSimon Tatham# CHECK-NOFP-NOT: vcmla.f16 q0, q0, q5, #90  @ encoding: [0xa0,0xfc,0x4a,0x08]
83*c9b2cd46SSimon Tathamvcmla.f16 q0, q0, q5, #90
84*c9b2cd46SSimon Tatham
85*c9b2cd46SSimon Tatham# CHECK: vcmla.f16 q3, q7, q2, #180  @ encoding: [0x2e,0xfd,0x44,0x68]
86*c9b2cd46SSimon Tatham# CHECK-NOFP-NOT: vcmla.f16 q3, q7, q2, #180  @ encoding: [0x2e,0xfd,0x44,0x68]
87*c9b2cd46SSimon Tathamvcmla.f16 q3, q7, q2, #180
88*c9b2cd46SSimon Tatham
89*c9b2cd46SSimon Tatham# CHECK: vcmla.f16 q2, q7, q6, #270  @ encoding: [0xae,0xfd,0x4c,0x48]
90*c9b2cd46SSimon Tatham# CHECK-NOFP-NOT: vcmla.f16 q2, q7, q6, #270  @ encoding: [0xae,0xfd,0x4c,0x48]
91*c9b2cd46SSimon Tathamvcmla.f16 q2, q7, q6, #270
92*c9b2cd46SSimon Tatham
93*c9b2cd46SSimon Tatham# ERROR: [[@LINE+1]]:{{[0-9]+}}: {{error|note}}: complex rotation must be 0, 90, 180 or 270
94*c9b2cd46SSimon Tathamvcmla.f16 q3, q2, q1, #200
95*c9b2cd46SSimon Tatham
96*c9b2cd46SSimon Tatham# CHECK: vcmla.f32 q2, q6, q6, #0  @ encoding: [0x3c,0xfc,0x4c,0x48]
97*c9b2cd46SSimon Tatham# CHECK-NOFP-NOT: vcmla.f32 q2, q6, q6, #0  @ encoding: [0x3c,0xfc,0x4c,0x48]
98*c9b2cd46SSimon Tathamvcmla.f32 q2, q6, q6, #0
99*c9b2cd46SSimon Tatham
100*c9b2cd46SSimon Tatham# CHECK: vcmla.f32 q7, q1, q3, #90  @ encoding: [0xb2,0xfc,0x46,0xe8]
101*c9b2cd46SSimon Tatham# CHECK-NOFP-NOT: vcmla.f32 q7, q1, q3, #90  @ encoding: [0xb2,0xfc,0x46,0xe8]
102*c9b2cd46SSimon Tathamvcmla.f32 q7, q1, q3, #90
103*c9b2cd46SSimon Tatham
104*c9b2cd46SSimon Tatham# CHECK: vcmla.f32 q4, q5, q3, #180  @ encoding: [0x3a,0xfd,0x46,0x88]
105*c9b2cd46SSimon Tatham# CHECK-NOFP-NOT: vcmla.f32 q4, q5, q3, #180  @ encoding: [0x3a,0xfd,0x46,0x88]
106*c9b2cd46SSimon Tathamvcmla.f32 q4, q5, q3, #180
107*c9b2cd46SSimon Tatham
108*c9b2cd46SSimon Tatham# CHECK: vcmla.f32 q3, q2, q7, #270  @ encoding: [0xb4,0xfd,0x4e,0x68]
109*c9b2cd46SSimon Tatham# CHECK-NOFP-NOT: vcmla.f32 q3, q2, q7, #270  @ encoding: [0xb4,0xfd,0x4e,0x68]
110*c9b2cd46SSimon Tathamvcmla.f32 q3, q2, q7, #270
111*c9b2cd46SSimon Tatham
112*c9b2cd46SSimon Tatham# ERROR: [[@LINE+1]]:{{[0-9]+}}: {{error|note}}: complex rotation must be 0, 90, 180 or 270
113*c9b2cd46SSimon Tathamvcmla.f32 q3, q2, q1, #16
114*c9b2cd46SSimon Tatham
115*c9b2cd46SSimon Tatham# CHECK: vfma.f16 q0, q2, q3  @ encoding: [0x14,0xef,0x56,0x0c]
116*c9b2cd46SSimon Tatham# CHECK-NOFP-NOT: vfma.f16 q0, q2, q3  @ encoding: [0x14,0xef,0x56,0x0c]
117*c9b2cd46SSimon Tathamvfma.f16 q0, q2, q3
118*c9b2cd46SSimon Tatham
119*c9b2cd46SSimon Tatham# CHECK: vfma.f32 q0, q3, q7  @ encoding: [0x06,0xef,0x5e,0x0c]
120*c9b2cd46SSimon Tatham# CHECK-NOFP-NOT: vfma.f32 q0, q3, q7  @ encoding: [0x06,0xef,0x5e,0x0c]
121*c9b2cd46SSimon Tathamvfma.f32 q0, q3, q7
122*c9b2cd46SSimon Tatham
123*c9b2cd46SSimon Tatham# CHECK: vfms.f16 q0, q2, q5  @ encoding: [0x34,0xef,0x5a,0x0c]
124*c9b2cd46SSimon Tatham# CHECK-NOFP-NOT: vfms.f16 q0, q2, q5  @ encoding: [0x34,0xef,0x5a,0x0c]
125*c9b2cd46SSimon Tathamvfms.f16 q0, q2, q5
126*c9b2cd46SSimon Tatham
127*c9b2cd46SSimon Tatham# CHECK: vfms.f32 q1, q1, q2  @ encoding: [0x22,0xef,0x54,0x2c]
128*c9b2cd46SSimon Tatham# CHECK-NOFP-NOT: vfms.f32 q1, q1, q2  @ encoding: [0x22,0xef,0x54,0x2c]
129*c9b2cd46SSimon Tathamvfms.f32 q1, q1, q2
130*c9b2cd46SSimon Tatham
131*c9b2cd46SSimon Tatham# CHECK: vadd.f16 q0, q0, q5  @ encoding: [0x10,0xef,0x4a,0x0d]
132*c9b2cd46SSimon Tatham# CHECK-NOFP-NOT: vadd.f16 q0, q0, q5  @ encoding: [0x10,0xef,0x4a,0x0d]
133*c9b2cd46SSimon Tathamvadd.f16 q0, q0, q5
134*c9b2cd46SSimon Tatham
135*c9b2cd46SSimon Tatham# CHECK: vadd.f32 q1, q3, q0  @ encoding: [0x06,0xef,0x40,0x2d]
136*c9b2cd46SSimon Tatham# CHECK-NOFP-NOT: vadd.f32 q1, q3, q0  @ encoding: [0x06,0xef,0x40,0x2d]
137*c9b2cd46SSimon Tathamvadd.f32 q1, q3, q0
138*c9b2cd46SSimon Tatham
139*c9b2cd46SSimon Tatham# ERROR: [[@LINE+1]]:{{[0-9]+}}: {{error|note}}: invalid instruction
140*c9b2cd46SSimon Tathamvaddeq.f32 q0, q1, q2
141*c9b2cd46SSimon Tatham
142*c9b2cd46SSimon Tatham# CHECK:  vadd.f32  q0, q1, q2 @ encoding: [0x02,0xef,0x44,0x0d]
143*c9b2cd46SSimon Tatham# CHECK-NOFP-NOT:  vadd.f32  q0, q1, q2 @ encoding: [0x02,0xef,0x44,0x0d]
144*c9b2cd46SSimon Tathamvadd.f32 q0, q1, q2
145*c9b2cd46SSimon Tatham
146*c9b2cd46SSimon Tatham# CHECK: vcadd.f16 q2, q1, q7, #90  @ encoding: [0x82,0xfc,0x4e,0x48]
147*c9b2cd46SSimon Tatham# CHECK-NOFP-NOT: vcadd.f16 q2, q1, q7, #90  @ encoding: [0x82,0xfc,0x4e,0x48]
148*c9b2cd46SSimon Tathamvcadd.f16 q2, q1, q7, #90
149*c9b2cd46SSimon Tatham
150*c9b2cd46SSimon Tatham# CHECK: vcadd.f16 q2, q5, q7, #270  @ encoding: [0x8a,0xfd,0x4e,0x48]
151*c9b2cd46SSimon Tatham# CHECK-NOFP-NOT: vcadd.f16 q2, q5, q7, #270  @ encoding: [0x8a,0xfd,0x4e,0x48]
152*c9b2cd46SSimon Tathamvcadd.f16 q2, q5, q7, #270
153*c9b2cd46SSimon Tatham
154*c9b2cd46SSimon Tatham# ERROR: [[@LINE+1]]:{{[0-9]+}}: {{error|note}}: complex rotation must be 90 or 270
155*c9b2cd46SSimon Tathamvcadd.f16 q2, q5, q7, #180
156*c9b2cd46SSimon Tatham
157*c9b2cd46SSimon Tatham# CHECK: vcadd.f32 q0, q4, q7, #90  @ encoding: [0x98,0xfc,0x4e,0x08]
158*c9b2cd46SSimon Tatham# CHECK-NOFP-NOT: vcadd.f32 q0, q4, q7, #90  @ encoding: [0x98,0xfc,0x4e,0x08]
159*c9b2cd46SSimon Tathamvcadd.f32 q0, q4, q7, #90
160*c9b2cd46SSimon Tatham
161*c9b2cd46SSimon Tatham# CHECK: vcadd.f32 q2, q2, q3, #270  @ encoding: [0x94,0xfd,0x46,0x48]
162*c9b2cd46SSimon Tatham# CHECK-NOFP-NOT: vcadd.f32 q2, q2, q3, #270  @ encoding: [0x94,0xfd,0x46,0x48]
163*c9b2cd46SSimon Tathamvcadd.f32 q2, q2, q3, #270
164*c9b2cd46SSimon Tatham
165*c9b2cd46SSimon Tatham# ERROR: [[@LINE+1]]:{{[0-9]+}}: {{error|note}}: complex rotation must be 90 or 270
166*c9b2cd46SSimon Tathamvcadd.f32 q2, q5, q7, #0
167*c9b2cd46SSimon Tatham
168*c9b2cd46SSimon Tatham# CHECK: vabd.f16 q0, q0, q6  @ encoding: [0x30,0xff,0x4c,0x0d]
169*c9b2cd46SSimon Tatham# CHECK-NOFP-NOT: vabd.f16 q0, q0, q6  @ encoding: [0x30,0xff,0x4c,0x0d]
170*c9b2cd46SSimon Tathamvabd.f16 q0, q0, q6
171*c9b2cd46SSimon Tatham
172*c9b2cd46SSimon Tatham# CHECK: vabd.f32 q0, q1, q4  @ encoding: [0x22,0xff,0x48,0x0d]
173*c9b2cd46SSimon Tatham# CHECK-NOFP-NOT: vabd.f32 q0, q1, q4  @ encoding: [0x22,0xff,0x48,0x0d]
174*c9b2cd46SSimon Tathamvabd.f32 q0, q1, q4
175*c9b2cd46SSimon Tatham
176*c9b2cd46SSimon Tatham# CHECK: vcvt.f16.s16 q1, q7, #1  @ encoding: [0xbf,0xef,0x5e,0x2c]
177*c9b2cd46SSimon Tatham# CHECK-NOFP-NOT: vcvt.f16.s16 q1, q7, #1  @ encoding: [0xbf,0xef,0x5e,0x2c]
178*c9b2cd46SSimon Tathamvcvt.f16.s16 q1, q7, #1
179*c9b2cd46SSimon Tatham
180*c9b2cd46SSimon Tatham# CHECK: vcvt.f16.s16 q1, q7, #16  @ encoding: [0xb0,0xef,0x5e,0x2c]
181*c9b2cd46SSimon Tatham# CHECK-NOFP-NOT: vcvt.f16.s16 q1, q7, #16  @ encoding: [0xb0,0xef,0x5e,0x2c]
182*c9b2cd46SSimon Tathamvcvt.f16.s16 q1, q7, #16
183*c9b2cd46SSimon Tatham
184*c9b2cd46SSimon Tatham# CHECK: vcvt.f16.s16 q1, q7, #11  @ encoding: [0xb5,0xef,0x5e,0x2c]
185*c9b2cd46SSimon Tatham# CHECK-NOFP-NOT: vcvt.f16.s16 q1, q7, #11  @ encoding: [0xb5,0xef,0x5e,0x2c]
186*c9b2cd46SSimon Tathamvcvt.f16.s16 q1, q7, #11
187*c9b2cd46SSimon Tatham
188*c9b2cd46SSimon Tatham# CHECK: vcvt.s16.f16 q1, q1, #3  @ encoding: [0xbd,0xef,0x52,0x2d]
189*c9b2cd46SSimon Tatham# CHECK-NOFP-NOT: vcvt.s16.f16 q1, q1, #3  @ encoding: [0xbd,0xef,0x52,0x2d]
190*c9b2cd46SSimon Tathamvcvt.s16.f16 q1, q1, #3
191*c9b2cd46SSimon Tatham
192*c9b2cd46SSimon Tatham# CHECK: vcvt.f16.u16 q2, q1, #10  @ encoding: [0xb6,0xff,0x52,0x4c]
193*c9b2cd46SSimon Tatham# CHECK-NOFP-NOT: vcvt.f16.u16 q2, q1, #10  @ encoding: [0xb6,0xff,0x52,0x4c]
194*c9b2cd46SSimon Tathamvcvt.f16.u16 q2, q1, #10
195*c9b2cd46SSimon Tatham
196*c9b2cd46SSimon Tatham# CHECK: vcvt.u16.f16 q0, q0, #3  @ encoding: [0xbd,0xff,0x50,0x0d]
197*c9b2cd46SSimon Tatham# CHECK-NOFP-NOT: vcvt.u16.f16 q0, q0, #3  @ encoding: [0xbd,0xff,0x50,0x0d]
198*c9b2cd46SSimon Tathamvcvt.u16.f16 q0, q0, #3
199*c9b2cd46SSimon Tatham
200*c9b2cd46SSimon Tatham# CHECK: vcvt.f32.s32 q1, q7, #1  @ encoding: [0xbf,0xef,0x5e,0x2e]
201*c9b2cd46SSimon Tatham# CHECK-NOFP-NOT: vcvt.f32.s32 q1, q7, #1  @ encoding: [0xbf,0xef,0x5e,0x2e]
202*c9b2cd46SSimon Tathamvcvt.f32.s32 q1, q7, #1
203*c9b2cd46SSimon Tatham
204*c9b2cd46SSimon Tatham# CHECK: vcvt.f32.s32 q1, q7, #32  @ encoding: [0xa0,0xef,0x5e,0x2e]
205*c9b2cd46SSimon Tatham# CHECK-NOFP-NOT: vcvt.f32.s32 q1, q7, #32  @ encoding: [0xa0,0xef,0x5e,0x2e]
206*c9b2cd46SSimon Tathamvcvt.f32.s32 q1, q7, #32
207*c9b2cd46SSimon Tatham
208*c9b2cd46SSimon Tatham# CHECK: vcvt.f32.s32 q1, q7, #6  @ encoding: [0xba,0xef,0x5e,0x2e]
209*c9b2cd46SSimon Tatham# CHECK-NOFP-NOT: vcvt.f32.s32 q1, q7, #6  @ encoding: [0xba,0xef,0x5e,0x2e]
210*c9b2cd46SSimon Tathamvcvt.f32.s32 q1, q7, #6
211*c9b2cd46SSimon Tatham
212*c9b2cd46SSimon Tatham# CHECK: vcvt.s32.f32 q1, q0, #21  @ encoding: [0xab,0xef,0x50,0x2f]
213*c9b2cd46SSimon Tatham# CHECK-NOFP-NOT: vcvt.s32.f32 q1, q0, #21  @ encoding: [0xab,0xef,0x50,0x2f]
214*c9b2cd46SSimon Tathamvcvt.s32.f32 q1, q0, #21
215*c9b2cd46SSimon Tatham
216*c9b2cd46SSimon Tatham# CHECK: vcvt.f32.u32 q1, q4, #4  @ encoding: [0xbc,0xff,0x58,0x2e]
217*c9b2cd46SSimon Tatham# CHECK-NOFP-NOT: vcvt.f32.u32 q1, q4, #4  @ encoding: [0xbc,0xff,0x58,0x2e]
218*c9b2cd46SSimon Tathamvcvt.f32.u32 q1, q4, #4
219*c9b2cd46SSimon Tatham
220*c9b2cd46SSimon Tatham# CHECK: vcvt.u32.f32 q1, q5, #8  @ encoding: [0xb8,0xff,0x5a,0x2f]
221*c9b2cd46SSimon Tatham# CHECK-NOFP-NOT: vcvt.u32.f32 q1, q5, #8  @ encoding: [0xb8,0xff,0x5a,0x2f]
222*c9b2cd46SSimon Tathamvcvt.u32.f32 q1, q5, #8
223*c9b2cd46SSimon Tatham
224*c9b2cd46SSimon Tatham# ERROR: [[@LINE+1]]:{{[0-9]+}}: {{error|note}}: MVE fixed-point immediate operand must be between 1 and 16
225*c9b2cd46SSimon Tathamvcvt.f16.s16 q0, q1, #-1
226*c9b2cd46SSimon Tatham
227*c9b2cd46SSimon Tatham# ERROR: [[@LINE+1]]:{{[0-9]+}}: {{error|note}}: MVE fixed-point immediate operand must be between 1 and 16
228*c9b2cd46SSimon Tathamvcvt.f16.s16 q0, q1, #0
229*c9b2cd46SSimon Tatham
230*c9b2cd46SSimon Tatham# ERROR: [[@LINE+1]]:{{[0-9]+}}: {{error|note}}: MVE fixed-point immediate operand must be between 1 and 16
231*c9b2cd46SSimon Tathamvcvt.f16.s16 q0, q1, #17
232*c9b2cd46SSimon Tatham
233*c9b2cd46SSimon Tatham# ERROR: [[@LINE+1]]:{{[0-9]+}}: {{error|note}}: MVE fixed-point immediate operand must be between 1 and 32
234*c9b2cd46SSimon Tathamvcvt.f32.s32 q0, q1, #-1
235*c9b2cd46SSimon Tatham
236*c9b2cd46SSimon Tatham# ERROR: [[@LINE+1]]:{{[0-9]+}}: {{error|note}}: MVE fixed-point immediate operand must be between 1 and 32
237*c9b2cd46SSimon Tathamvcvt.f32.s32 q0, q1, #0
238*c9b2cd46SSimon Tatham
239*c9b2cd46SSimon Tatham# ERROR: [[@LINE+1]]:{{[0-9]+}}: {{error|note}}: MVE fixed-point immediate operand must be between 1 and 32
240*c9b2cd46SSimon Tathamvcvt.f32.s32 q0, q1, #33
241*c9b2cd46SSimon Tatham
242*c9b2cd46SSimon Tatham# CHECK: vcvt.f16.s16 q0, q1  @ encoding: [0xb7,0xff,0x42,0x06]
243*c9b2cd46SSimon Tatham# CHECK-NOFP-NOT: vcvt.f16.s16 q0, q1  @ encoding: [0xb7,0xff,0x42,0x06]
244*c9b2cd46SSimon Tathamvcvt.f16.s16 q0, q1
245*c9b2cd46SSimon Tatham
246*c9b2cd46SSimon Tatham# CHECK: vcvt.f16.u16 q0, q4  @ encoding: [0xb7,0xff,0xc8,0x06]
247*c9b2cd46SSimon Tatham# CHECK-NOFP-NOT: vcvt.f16.u16 q0, q4  @ encoding: [0xb7,0xff,0xc8,0x06]
248*c9b2cd46SSimon Tathamvcvt.f16.u16 q0, q4
249*c9b2cd46SSimon Tatham
250*c9b2cd46SSimon Tatham# CHECK: vcvt.s16.f16 q0, q0  @ encoding: [0xb7,0xff,0x40,0x07]
251*c9b2cd46SSimon Tatham# CHECK-NOFP-NOT: vcvt.s16.f16 q0, q0  @ encoding: [0xb7,0xff,0x40,0x07]
252*c9b2cd46SSimon Tathamvcvt.s16.f16 q0, q0
253*c9b2cd46SSimon Tatham
254*c9b2cd46SSimon Tatham# CHECK: vcvt.u16.f16 q0, q0  @ encoding: [0xb7,0xff,0xc0,0x07]
255*c9b2cd46SSimon Tatham# CHECK-NOFP-NOT: vcvt.u16.f16 q0, q0  @ encoding: [0xb7,0xff,0xc0,0x07]
256*c9b2cd46SSimon Tathamvcvt.u16.f16 q0, q0
257*c9b2cd46SSimon Tatham
258*c9b2cd46SSimon Tatham# CHECK: vcvt.f32.s32 q0, q0  @ encoding: [0xbb,0xff,0x40,0x06]
259*c9b2cd46SSimon Tatham# CHECK-NOFP-NOT: vcvt.f32.s32 q0, q0  @ encoding: [0xbb,0xff,0x40,0x06]
260*c9b2cd46SSimon Tathamvcvt.f32.s32 q0, q0
261*c9b2cd46SSimon Tatham
262*c9b2cd46SSimon Tatham# CHECK: vcvt.f32.u32 q0, q0  @ encoding: [0xbb,0xff,0xc0,0x06]
263*c9b2cd46SSimon Tatham# CHECK-NOFP-NOT: vcvt.f32.u32 q0, q0  @ encoding: [0xbb,0xff,0xc0,0x06]
264*c9b2cd46SSimon Tathamvcvt.f32.u32 q0, q0
265*c9b2cd46SSimon Tatham
266*c9b2cd46SSimon Tatham# CHECK: vcvt.s32.f32 q0, q0  @ encoding: [0xbb,0xff,0x40,0x07]
267*c9b2cd46SSimon Tatham# CHECK-NOFP-NOT: vcvt.s32.f32 q0, q0  @ encoding: [0xbb,0xff,0x40,0x07]
268*c9b2cd46SSimon Tathamvcvt.s32.f32 q0, q0
269*c9b2cd46SSimon Tatham
270*c9b2cd46SSimon Tatham# CHECK: vcvt.u32.f32 q0, q2  @ encoding: [0xbb,0xff,0xc4,0x07]
271*c9b2cd46SSimon Tatham# CHECK-NOFP-NOT: vcvt.u32.f32 q0, q2  @ encoding: [0xbb,0xff,0xc4,0x07]
272*c9b2cd46SSimon Tathamvcvt.u32.f32 q0, q2
273*c9b2cd46SSimon Tatham
274*c9b2cd46SSimon Tatham# CHECK: vcvta.s16.f16 q0, q7  @ encoding: [0xb7,0xff,0x4e,0x00]
275*c9b2cd46SSimon Tatham# CHECK-NOFP-NOT: vcvta.s16.f16 q0, q7  @ encoding: [0xb7,0xff,0x4e,0x00]
276*c9b2cd46SSimon Tathamvcvta.s16.f16 q0, q7
277*c9b2cd46SSimon Tatham
278*c9b2cd46SSimon Tatham# CHECK: vcvta.s32.f32 s2, s3 @ encoding: [0xbc,0xfe,0xe1,0x1a]
279*c9b2cd46SSimon Tatham# CHECK-NOFP-NOT: vcvta.s32.f32 s2, s3 @ encoding: [0xbc,0xfe,0xe1,0x1a]
280*c9b2cd46SSimon Tathamvcvta.s32.f32 s2, s3
281*c9b2cd46SSimon Tatham
282*c9b2cd46SSimon Tatham# CHECK: vcvta.s16.f16 q0, q7 @ encoding: [0xb7,0xff,0x4e,0x00]
283*c9b2cd46SSimon Tatham# CHECK-NOFP-NOT: vcvta.s16.f16 q0, q7 @ encoding: [0xb7,0xff,0x4e,0x00]
284*c9b2cd46SSimon Tathamvcvta.s16.f16 q0, q7
285*c9b2cd46SSimon Tatham
286*c9b2cd46SSimon Tatham# CHECK: vcvtn.u32.f32 q7, q6  @ encoding: [0xbb,0xff,0xcc,0xe1]
287*c9b2cd46SSimon Tatham# CHECK-NOFP-NOT: vcvtn.u32.f32 q7, q6  @ encoding: [0xbb,0xff,0xcc,0xe1]
288*c9b2cd46SSimon Tathamvcvtn.u32.f32 q7, q6
289*c9b2cd46SSimon Tatham
290*c9b2cd46SSimon Tatham# CHECK: vcvtp.s32.f32 q0, q7  @ encoding: [0xbb,0xff,0x4e,0x02]
291*c9b2cd46SSimon Tatham# CHECK-NOFP-NOT: vcvtp.s32.f32 q0, q7  @ encoding: [0xbb,0xff,0x4e,0x02]
292*c9b2cd46SSimon Tathamvcvtp.s32.f32 q0, q7
293*c9b2cd46SSimon Tatham
294*c9b2cd46SSimon Tatham# CHECK: vcvtm.u32.f32 q1, q4  @ encoding: [0xbb,0xff,0xc8,0x23]
295*c9b2cd46SSimon Tatham# CHECK-NOFP-NOT: vcvtm.u32.f32 q1, q4  @ encoding: [0xbb,0xff,0xc8,0x23]
296*c9b2cd46SSimon Tathamvcvtm.u32.f32 q1, q4
297*c9b2cd46SSimon Tatham
298*c9b2cd46SSimon Tatham# CHECK: vneg.f16 q0, q7  @ encoding: [0xb5,0xff,0xce,0x07]
299*c9b2cd46SSimon Tatham# CHECK-NOFP-NOT: vneg.f16 q0, q7  @ encoding: [0xb5,0xff,0xce,0x07]
300*c9b2cd46SSimon Tathamvneg.f16 q0, q7
301*c9b2cd46SSimon Tatham
302*c9b2cd46SSimon Tatham# CHECK: vneg.f32 q0, q2  @ encoding: [0xb9,0xff,0xc4,0x07]
303*c9b2cd46SSimon Tatham# CHECK-NOFP-NOT: vneg.f32 q0, q2  @ encoding: [0xb9,0xff,0xc4,0x07]
304*c9b2cd46SSimon Tathamvneg.f32 q0, q2
305*c9b2cd46SSimon Tatham
306*c9b2cd46SSimon Tatham# CHECK: vabs.f16 q0, q2  @ encoding: [0xb5,0xff,0x44,0x07]
307*c9b2cd46SSimon Tatham# CHECK-NOFP-NOT: vabs.f16 q0, q2  @ encoding: [0xb5,0xff,0x44,0x07]
308*c9b2cd46SSimon Tathamvabs.f16 q0, q2
309*c9b2cd46SSimon Tatham
310*c9b2cd46SSimon Tatham# CHECK: vabs.f32 q0, q0  @ encoding: [0xb9,0xff,0x40,0x07]
311*c9b2cd46SSimon Tatham# CHECK-NOFP-NOT: vabs.f32 q0, q0  @ encoding: [0xb9,0xff,0x40,0x07]
312*c9b2cd46SSimon Tathamvabs.f32 q0, q0
313*c9b2cd46SSimon Tatham
314*c9b2cd46SSimon Tatham# CHECK: vmaxnma.f16 q1, q1  @ encoding: [0x3f,0xfe,0x83,0x2e]
315*c9b2cd46SSimon Tatham# CHECK-NOFP-NOT: vmaxnma.f16 q1, q1  @ encoding: [0x3f,0xfe,0x83,0x2e]
316*c9b2cd46SSimon Tathamvmaxnma.f16 q1, q1
317*c9b2cd46SSimon Tatham
318*c9b2cd46SSimon Tatham# CHECK: vmaxnma.f32 q2, q6  @ encoding: [0x3f,0xee,0x8d,0x4e]
319*c9b2cd46SSimon Tatham# CHECK-NOFP-NOT: vmaxnma.f32 q2, q6  @ encoding: [0x3f,0xee,0x8d,0x4e]
320*c9b2cd46SSimon Tathamvmaxnma.f32 q2, q6
321*c9b2cd46SSimon Tatham
322*c9b2cd46SSimon Tatham# CHECK: vminnma.f16 q0, q2  @ encoding: [0x3f,0xfe,0x85,0x1e]
323*c9b2cd46SSimon Tatham# CHECK-NOFP-NOT: vminnma.f16 q0, q2  @ encoding: [0x3f,0xfe,0x85,0x1e]
324*c9b2cd46SSimon Tathamvminnma.f16 q0, q2
325*c9b2cd46SSimon Tatham
326*c9b2cd46SSimon Tatham# CHECK: vminnma.f32 q0, q1  @ encoding: [0x3f,0xee,0x83,0x1e]
327*c9b2cd46SSimon Tatham# CHECK-NOFP-NOT: vminnma.f32 q0, q1  @ encoding: [0x3f,0xee,0x83,0x1e]
328*c9b2cd46SSimon Tathamvminnma.f32 q0, q1
329*c9b2cd46SSimon Tatham
330*c9b2cd46SSimon Tathamit eq
331*c9b2cd46SSimon Tathamvaddeq.f32 s0, s1
332*c9b2cd46SSimon Tatham# CHECK:  it  eq @ encoding: [0x08,0xbf]
333*c9b2cd46SSimon Tatham# CHECK: vaddeq.f32  s0, s0, s1 @ encoding: [0x30,0xee,0x20,0x0a]
334*c9b2cd46SSimon Tatham# CHECK-NOFP-NOT: vaddeq.f32  s0, s0, s1 @ encoding: [0x30,0xee,0x20,0x0a]
335*c9b2cd46SSimon Tatham
336*c9b2cd46SSimon Tathamvpst
337*c9b2cd46SSimon Tathamvaddt.f16 q0, q1, q2
338*c9b2cd46SSimon Tatham# CHECK: vpst @ encoding: [0x71,0xfe,0x4d,0x0f]
339*c9b2cd46SSimon Tatham# CHECK: vaddt.f16 q0, q1, q2 @ encoding: [0x12,0xef,0x44,0x0d]
340*c9b2cd46SSimon Tatham# CHECK-NOFP-NOT: vaddt.f16 q0, q1, q2 @ encoding: [0x12,0xef,0x44,0x0d]
341*c9b2cd46SSimon Tatham
342*c9b2cd46SSimon Tathamvpste
343*c9b2cd46SSimon Tathamvcvtmt.u32.f32 q0, q1
344*c9b2cd46SSimon Tathamvcvtne.s32.f32 q0, q1
345*c9b2cd46SSimon Tatham# CHECK: vpste @ encoding: [0x71,0xfe,0x4d,0x8f]
346*c9b2cd46SSimon Tatham# CHECK: vtmt.u32.f32 q0, q1 @ encoding: [0xbb,0xff,0xc2,0x03]
347*c9b2cd46SSimon Tatham# CHECK-NOFP-NOT: vtmt.u32.f32 q0, q1 @ encoding: [0xbb,0xff,0xc2,0x03]
348*c9b2cd46SSimon Tatham# CHECK: vcvtne.s32.f32 q0, q1 @ encoding: [0xbb,0xff,0x42,0x01]
349*c9b2cd46SSimon Tatham# CHECK-NOFP-NOT: vcvtne.s32.f32 q0, q1 @ encoding: [0xbb,0xff,0x42,0x01]
350*c9b2cd46SSimon Tatham
351*c9b2cd46SSimon Tathamit ne
352*c9b2cd46SSimon Tathamvcvtne.s32.f32 s0, s1
353*c9b2cd46SSimon Tatham# CHECK: it ne @ encoding: [0x18,0xbf]
354*c9b2cd46SSimon Tatham# CHECK: vcvtne.s32.f32 s0, s1 @ encoding: [0xbd,0xee,0xe0,0x0a]
355*c9b2cd46SSimon Tatham# CHECK-NOFP-NOT: vcvtne.s32.f32 s0, s1 @ encoding: [0xbd,0xee,0xe0,0x0a]
356*c9b2cd46SSimon Tatham
357*c9b2cd46SSimon Tathamit ge
358*c9b2cd46SSimon Tathamvcvttge.f64.f16 d3, s1
359*c9b2cd46SSimon Tatham# CHECK: it ge @ encoding: [0xa8,0xbf]
360*c9b2cd46SSimon Tatham# CHECK: vcvttge.f64.f16 d3, s1 @ encoding: [0xb2,0xee,0xe0,0x3b]
361*c9b2cd46SSimon Tatham# CHECK-NOFP-NOT: vcvttge.f64.f16 d3, s1 @ encoding: [0xb2,0xee,0xe0,0x3b]
362*c9b2cd46SSimon Tatham
363*c9b2cd46SSimon Tatham# ----------------------------------------------------------------------
364*c9b2cd46SSimon Tatham# The following tests have to go last because of the NOFP-NOT checks inside the
365*c9b2cd46SSimon Tatham# VPT block.
366*c9b2cd46SSimon Tatham
367*c9b2cd46SSimon Tathamvpte.f32 lt, q3, r1
368*c9b2cd46SSimon Tathamvcvtt.u32.f32 q2, q0
369*c9b2cd46SSimon Tathamvcvte.u32.f32 q1, q0
370*c9b2cd46SSimon Tatham# CHECK: vpte.f32 lt, q3, r1      @ encoding: [0x77,0xee,0xc1,0x9f]
371*c9b2cd46SSimon Tatham# CHECK-NOFP-NOT: vpte.f32 lt, q3, r1      @ encoding: [0x77,0xee,0xe1,0x8f]
372*c9b2cd46SSimon Tatham# CHECK: vcvtt.u32.f32 q2, q0          @ encoding: [0xbb,0xff,0xc0,0x47]
373*c9b2cd46SSimon Tatham# CHECK-NOFP-NOT: vcvtt.u32.f32 q2, q0          @ encoding: [0xbb,0xff,0xc0,0x47]
374*c9b2cd46SSimon Tatham# CHECK: vcvte.u32.f32 q1, q0          @ encoding: [0xbb,0xff,0xc0,0x27]
375*c9b2cd46SSimon Tatham# CHECK-NOFP-NOT: vcvte.u32.f32 q1, q0          @ encoding: [0xbb,0xff,0xc0,0x27]
376*c9b2cd46SSimon Tatham
377*c9b2cd46SSimon Tathamite eq
378*c9b2cd46SSimon Tathamvcvteq.u32.f32 s0, s1
379*c9b2cd46SSimon Tathamvcvtne.f32.u32 s0, s1
380*c9b2cd46SSimon Tatham# CHECK: ite eq                      @ encoding: [0x0c,0xbf]
381*c9b2cd46SSimon Tatham# CHECK: vcvteq.u32.f32 s0, s1          @ encoding: [0xbc,0xee,0xe0,0x0a]
382*c9b2cd46SSimon Tatham# CHECK-NOFP-NOT: vcvteq.u32.f32 s0, s1          @ encoding: [0xbc,0xee,0xe0,0x0a]
383*c9b2cd46SSimon Tatham# CHECK: vcvtne.f32.u32  s0, s1          @ encoding: [0xb8,0xee,0x60,0x0a]
384*c9b2cd46SSimon Tatham# CHECK-NOFP-NOT: vcvtne.f32.u32  s0, s1          @ encoding: [0xb8,0xee,0x60,0x0a]
385*c9b2cd46SSimon Tatham
386*c9b2cd46SSimon Tathamvpste
387*c9b2cd46SSimon Tathamvmult.f16 q0, q1, q2
388*c9b2cd46SSimon Tathamvmule.f16 q0, q1, q2
389*c9b2cd46SSimon Tatham# CHECK: vpste @ encoding: [0x71,0xfe,0x4d,0x8f]
390*c9b2cd46SSimon Tatham# CHECK: vmult.f16 q0, q1, q2 @ encoding: [0x12,0xff,0x54,0x0d]
391*c9b2cd46SSimon Tatham# CHECK-NOFP-NOT: vmult.f16 q0, q1, q2 @ encoding: [0x12,0xff,0x54,0x0d]
392*c9b2cd46SSimon Tatham# CHECK: vmule.f16 q0, q1, q2 @ encoding: [0x12,0xff,0x54,0x0d]
393*c9b2cd46SSimon Tatham# CHECK-NOFP-NOT: vmule.f16 q0, q1, q2 @ encoding: [0x12,0xff,0x54,0x0d]
394*c9b2cd46SSimon Tatham
395*c9b2cd46SSimon Tathamite eq
396*c9b2cd46SSimon Tathamvmuleq.f64 d0, d0, d1
397*c9b2cd46SSimon Tathamvmulne.f64 d1, d0, d2
398*c9b2cd46SSimon Tatham# CHECK: ite eq @ encoding: [0x0c,0xbf]
399*c9b2cd46SSimon Tatham# CHECK: vmuleq.f64 d0, d0, d1 @ encoding: [0x20,0xee,0x01,0x0b]
400*c9b2cd46SSimon Tatham# CHECK-NOFP-NOT: vmuleq.f64 d0, d0, d1 @ encoding: [0x20,0xee,0x01,0x0b]
401*c9b2cd46SSimon Tatham# CHECK: vmulne.f64 d1, d0, d2 @ encoding: [0x20,0xee,0x02,0x1b]
402*c9b2cd46SSimon Tatham# CHECK-NOFP-NOT: vmulne.f64 d1, d0, d2 @ encoding: [0x20,0xee,0x02,0x1b]
403*c9b2cd46SSimon Tatham
404*c9b2cd46SSimon Tathamit eq
405*c9b2cd46SSimon Tathamvnegeq.f32 s0, s1
406*c9b2cd46SSimon Tatham# CHECK: it eq @ encoding: [0x08,0xbf]
407*c9b2cd46SSimon Tatham# CHECK: vnegeq.f32 s0, s1 @ encoding: [0xb1,0xee,0x60,0x0a]
408*c9b2cd46SSimon Tatham# CHECK-NOFP-NOT: vnegeq.f32 s0, s1 @ encoding: [0xb1,0xee,0x60,0x0a]
409*c9b2cd46SSimon Tatham
410*c9b2cd46SSimon Tathamitt eq
411*c9b2cd46SSimon Tathamvnmuleq.f32 s0, s1, s2
412*c9b2cd46SSimon Tathamvmuleq.f32 s0, s1, s2
413*c9b2cd46SSimon Tatham# CHECK: itt eq @ encoding: [0x04,0xbf]
414*c9b2cd46SSimon Tatham# CHECK: vnmuleq.f32 s0, s1, s2 @ encoding: [0x20,0xee,0xc1,0x0a]
415*c9b2cd46SSimon Tatham# CHECK-NOFP-NOT: vnmuleq.f32 s0, s1, s2 @ encoding: [0x20,0xee,0xc1,0x0a]
416*c9b2cd46SSimon Tatham# CHECK: vmuleq.f32 s0, s1, s2 @ encoding: [0x20,0xee,0x81,0x0a]
417*c9b2cd46SSimon Tatham# CHECK-NOFP-NOT: vmuleq.f32 s0, s1, s2 @ encoding: [0x20,0xee,0x81,0x0a]
418*c9b2cd46SSimon Tatham
419*c9b2cd46SSimon Tathamvpste
420*c9b2cd46SSimon Tathamvrintnt.f16 q0, q1
421*c9b2cd46SSimon Tathamvrintne.f32 q0, q1
422*c9b2cd46SSimon Tatham# CHECK: vpste @ encoding: [0x71,0xfe,0x4d,0x8f]
423*c9b2cd46SSimon Tatham# CHECK: vrintnt.f16 q0, q1 @ encoding: [0xb6,0xff,0x42,0x04]
424*c9b2cd46SSimon Tatham# CHECK-NOFP-NOT: vrintnt.f16 q0, q1 @ encoding: [0xb6,0xff,0x42,0x04]
425*c9b2cd46SSimon Tatham# CHECK: vrintne.f32 q0, q1 @ encoding: [0xba,0xff,0x42,0x04]
426*c9b2cd46SSimon Tatham# CHECK-NOFP-NOT: vrintne.f32 q0, q1 @ encoding: [0xba,0xff,0x42,0x04]
427