• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 // Copyright 2019, VIXL authors
2 // All rights reserved.
3 //
4 // Redistribution and use in source and binary forms, with or without
5 // modification, are permitted provided that the following conditions are met:
6 //
7 //   * Redistributions of source code must retain the above copyright notice,
8 //     this list of conditions and the following disclaimer.
9 //   * Redistributions in binary form must reproduce the above copyright notice,
10 //     this list of conditions and the following disclaimer in the documentation
11 //     and/or other materials provided with the distribution.
12 //   * Neither the name of ARM Limited nor the names of its contributors may be
13 //     used to endorse or promote products derived from this software without
14 //     specific prior written permission.
15 //
16 // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS CONTRIBUTORS "AS IS" AND
17 // ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
18 // WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
19 // DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE
20 // FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
21 // DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
22 // SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
23 // CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
24 // OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
25 // OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
26 
27 
28 #include <cstdio>
29 #include <cstring>
30 #include <string>
31 
32 #include "test-runner.h"
33 
34 #include "aarch64/disasm-aarch64.h"
35 #include "aarch64/macro-assembler-aarch64.h"
36 #include "test-disasm-aarch64.h"
37 
38 namespace vixl {
39 namespace aarch64 {
40 
TEST(fmov_imm)41 TEST(fmov_imm) {
42   SETUP();
43 
44   COMPARE(fmov(h2, Float16(-5.0)), "fmov h2, #0x94 (-5.0000)");
45   COMPARE(fmov(h30, Float16(29.0)), "fmov h30, #0x3d (29.0000)");
46   COMPARE(fmov(s0, 1.0f), "fmov s0, #0x70 (1.0000)");
47   COMPARE(fmov(s31, -13.0f), "fmov s31, #0xaa (-13.0000)");
48   COMPARE(fmov(d1, 1.0), "fmov d1, #0x70 (1.0000)");
49   COMPARE(fmov(d29, -13.0), "fmov d29, #0xaa (-13.0000)");
50 
51   CLEANUP();
52 }
53 
TEST(fmov_reg)54 TEST(fmov_reg) {
55   SETUP();
56 
57   COMPARE(fmov(w3, s13), "fmov w3, s13");
58   COMPARE(fmov(x6, d26), "fmov x6, d26");
59   COMPARE(fmov(s11, w30), "fmov s11, w30");
60   COMPARE(fmov(d31, x2), "fmov d31, x2");
61   COMPARE(fmov(s12, s13), "fmov s12, s13");
62   COMPARE(fmov(d22, d23), "fmov d22, d23");
63   COMPARE(fmov(v0.D(), 1, x13), "fmov v0.D[1], x13");
64   COMPARE(fmov(x13, v0.D(), 1), "fmov x13, v0.D[1]");
65 
66   CLEANUP();
67 }
68 
TEST(fp_dp1)69 TEST(fp_dp1) {
70   SETUP();
71 
72   COMPARE(fabs(s0, s1), "fabs s0, s1");
73   COMPARE(fabs(s31, s30), "fabs s31, s30");
74   COMPARE(fabs(d2, d3), "fabs d2, d3");
75   COMPARE(fabs(d31, d30), "fabs d31, d30");
76   COMPARE(fneg(s4, s5), "fneg s4, s5");
77   COMPARE(fneg(s31, s30), "fneg s31, s30");
78   COMPARE(fneg(d6, d7), "fneg d6, d7");
79   COMPARE(fneg(d31, d30), "fneg d31, d30");
80   COMPARE(fsqrt(s8, s9), "fsqrt s8, s9");
81   COMPARE(fsqrt(s31, s30), "fsqrt s31, s30");
82   COMPARE(fsqrt(d10, d11), "fsqrt d10, d11");
83   COMPARE(fsqrt(d31, d30), "fsqrt d31, d30");
84   COMPARE(frint32x(s10, s11), "frint32x s10, s11");
85   COMPARE(frint32x(s31, s30), "frint32x s31, s30");
86   COMPARE(frint32x(d12, d13), "frint32x d12, d13");
87   COMPARE(frint32x(d31, d30), "frint32x d31, d30");
88   COMPARE(frint32z(s10, s11), "frint32z s10, s11");
89   COMPARE(frint32z(s31, s30), "frint32z s31, s30");
90   COMPARE(frint32z(d12, d13), "frint32z d12, d13");
91   COMPARE(frint32z(d31, d30), "frint32z d31, d30");
92   COMPARE(frint64x(s10, s11), "frint64x s10, s11");
93   COMPARE(frint64x(s31, s30), "frint64x s31, s30");
94   COMPARE(frint64x(d12, d13), "frint64x d12, d13");
95   COMPARE(frint64x(d31, d30), "frint64x d31, d30");
96   COMPARE(frint64z(s10, s11), "frint64z s10, s11");
97   COMPARE(frint64z(s31, s30), "frint64z s31, s30");
98   COMPARE(frint64z(d12, d13), "frint64z d12, d13");
99   COMPARE(frint64z(d31, d30), "frint64z d31, d30");
100   COMPARE(frinta(s10, s11), "frinta s10, s11");
101   COMPARE(frinta(s31, s30), "frinta s31, s30");
102   COMPARE(frinta(d12, d13), "frinta d12, d13");
103   COMPARE(frinta(d31, d30), "frinta d31, d30");
104   COMPARE(frinti(s10, s11), "frinti s10, s11");
105   COMPARE(frinti(s31, s30), "frinti s31, s30");
106   COMPARE(frinti(d12, d13), "frinti d12, d13");
107   COMPARE(frinti(d31, d30), "frinti d31, d30");
108   COMPARE(frintm(s10, s11), "frintm s10, s11");
109   COMPARE(frintm(s31, s30), "frintm s31, s30");
110   COMPARE(frintm(d12, d13), "frintm d12, d13");
111   COMPARE(frintm(d31, d30), "frintm d31, d30");
112   COMPARE(frintn(s10, s11), "frintn s10, s11");
113   COMPARE(frintn(s31, s30), "frintn s31, s30");
114   COMPARE(frintn(d12, d13), "frintn d12, d13");
115   COMPARE(frintn(d31, d30), "frintn d31, d30");
116   COMPARE(frintx(s10, s11), "frintx s10, s11");
117   COMPARE(frintx(s31, s30), "frintx s31, s30");
118   COMPARE(frintx(d12, d13), "frintx d12, d13");
119   COMPARE(frintx(d31, d30), "frintx d31, d30");
120   COMPARE(frintz(s10, s11), "frintz s10, s11");
121   COMPARE(frintz(s31, s30), "frintz s31, s30");
122   COMPARE(frintz(d12, d13), "frintz d12, d13");
123   COMPARE(frintz(d31, d30), "frintz d31, d30");
124   COMPARE(fcvt(d14, s15), "fcvt d14, s15");
125   COMPARE(fcvt(d31, s31), "fcvt d31, s31");
126   COMPARE(fcvt(s0, d1), "fcvt s0, d1");
127   COMPARE(fcvt(s2, h3), "fcvt s2, h3");
128   COMPARE(fcvt(d4, h5), "fcvt d4, h5");
129   COMPARE(fcvt(h6, s7), "fcvt h6, s7");
130   COMPARE(fcvt(h8, d9), "fcvt h8, d9");
131 
132   CLEANUP();
133 }
134 
TEST(fp_dp2)135 TEST(fp_dp2) {
136   SETUP();
137 
138   COMPARE(fadd(h8, h9, h10), "fadd h8, h9, h10");
139   COMPARE(fadd(s0, s1, s2), "fadd s0, s1, s2");
140   COMPARE(fadd(d3, d4, d5), "fadd d3, d4, d5");
141   COMPARE(fsub(h14, h17, h21), "fsub h14, h17, h21");
142   COMPARE(fsub(s31, s30, s29), "fsub s31, s30, s29");
143   COMPARE(fsub(d31, d30, d29), "fsub d31, d30, d29");
144   COMPARE(fmul(h13, h14, h15), "fmul h13, h14, h15");
145   COMPARE(fmul(s7, s8, s9), "fmul s7, s8, s9");
146   COMPARE(fmul(d10, d11, d12), "fmul d10, d11, d12");
147   COMPARE(fnmul(h4, h5, h6), "fnmul h4, h5, h6");
148   COMPARE(fnmul(s7, s8, s9), "fnmul s7, s8, s9");
149   COMPARE(fnmul(d10, d11, d12), "fnmul d10, d11, d12");
150   COMPARE(fdiv(h0, h1, h2), "fdiv h0, h1, h2");
151   COMPARE(fdiv(s13, s14, s15), "fdiv s13, s14, s15");
152   COMPARE(fdiv(d16, d17, d18), "fdiv d16, d17, d18");
153   COMPARE(fmax(h9, h10, h11), "fmax h9, h10, h11");
154   COMPARE(fmax(s19, s20, s21), "fmax s19, s20, s21");
155   COMPARE(fmax(d22, d23, d24), "fmax d22, d23, d24");
156   COMPARE(fmin(h13, h15, h17), "fmin h13, h15, h17");
157   COMPARE(fmin(s25, s26, s27), "fmin s25, s26, s27");
158   COMPARE(fmin(d28, d29, d30), "fmin d28, d29, d30");
159   COMPARE(fmaxnm(h4, h5, h6), "fmaxnm h4, h5, h6");
160   COMPARE(fmaxnm(s31, s0, s1), "fmaxnm s31, s0, s1");
161   COMPARE(fmaxnm(d2, d3, d4), "fmaxnm d2, d3, d4");
162   COMPARE(fminnm(h22, h23, h24), "fminnm h22, h23, h24");
163   COMPARE(fminnm(s5, s6, s7), "fminnm s5, s6, s7");
164   COMPARE(fminnm(d8, d9, d10), "fminnm d8, d9, d10");
165 
166   CLEANUP();
167 }
168 
TEST(fp_dp3)169 TEST(fp_dp3) {
170   SETUP();
171 
172   COMPARE(fmadd(h4, h5, h6, h10), "fmadd h4, h5, h6, h10");
173   COMPARE(fmadd(s7, s8, s9, s10), "fmadd s7, s8, s9, s10");
174   COMPARE(fmadd(d10, d11, d12, d10), "fmadd d10, d11, d12, d10");
175   COMPARE(fmsub(h4, h5, h6, h10), "fmsub h4, h5, h6, h10");
176   COMPARE(fmsub(s7, s8, s9, s10), "fmsub s7, s8, s9, s10");
177   COMPARE(fmsub(d10, d11, d12, d10), "fmsub d10, d11, d12, d10");
178 
179   COMPARE(fnmadd(h4, h5, h6, h10), "fnmadd h4, h5, h6, h10");
180   COMPARE(fnmadd(s7, s8, s9, s10), "fnmadd s7, s8, s9, s10");
181   COMPARE(fnmadd(d10, d11, d12, d10), "fnmadd d10, d11, d12, d10");
182   COMPARE(fnmsub(h4, h5, h6, h10), "fnmsub h4, h5, h6, h10");
183   COMPARE(fnmsub(s7, s8, s9, s10), "fnmsub s7, s8, s9, s10");
184   COMPARE(fnmsub(d10, d11, d12, d10), "fnmsub d10, d11, d12, d10");
185 
186   CLEANUP();
187 }
188 
TEST(fp_compare)189 TEST(fp_compare) {
190   SETUP();
191 
192   COMPARE(fcmp(h0, h1), "fcmp h0, h1");
193   COMPARE(fcmp(h31, h30), "fcmp h31, h30");
194   COMPARE(fcmp(s0, s1), "fcmp s0, s1");
195   COMPARE(fcmp(s31, s30), "fcmp s31, s30");
196   COMPARE(fcmp(d0, d1), "fcmp d0, d1");
197   COMPARE(fcmp(d31, d30), "fcmp d31, d30");
198   COMPARE(fcmp(h12, 0), "fcmp h12, #0.0");
199   COMPARE(fcmp(s12, 0), "fcmp s12, #0.0");
200   COMPARE(fcmp(d12, 0), "fcmp d12, #0.0");
201 
202   COMPARE(fcmpe(h0, h1), "fcmpe h0, h1");
203   COMPARE(fcmpe(h31, h30), "fcmpe h31, h30");
204   COMPARE(fcmpe(s0, s1), "fcmpe s0, s1");
205   COMPARE(fcmpe(s31, s30), "fcmpe s31, s30");
206   COMPARE(fcmpe(d0, d1), "fcmpe d0, d1");
207   COMPARE(fcmpe(d31, d30), "fcmpe d31, d30");
208   COMPARE(fcmpe(h12, 0), "fcmpe h12, #0.0");
209   COMPARE(fcmpe(s12, 0), "fcmpe s12, #0.0");
210   COMPARE(fcmpe(d12, 0), "fcmpe d12, #0.0");
211 
212   CLEANUP();
213 }
214 
TEST(fp_cond_compare)215 TEST(fp_cond_compare) {
216   SETUP();
217 
218   COMPARE(fccmp(h8, h9, NoFlag, eq), "fccmp h8, h9, #nzcv, eq");
219   COMPARE(fccmp(h10, h11, ZVFlag, ne), "fccmp h10, h11, #nZcV, ne");
220   COMPARE(fccmp(h30, h16, NCFlag, pl), "fccmp h30, h16, #NzCv, pl");
221   COMPARE(fccmp(h31, h31, NZCVFlag, le), "fccmp h31, h31, #NZCV, le");
222   COMPARE(fccmp(s0, s1, NoFlag, eq), "fccmp s0, s1, #nzcv, eq");
223   COMPARE(fccmp(s2, s3, ZVFlag, ne), "fccmp s2, s3, #nZcV, ne");
224   COMPARE(fccmp(s30, s16, NCFlag, pl), "fccmp s30, s16, #NzCv, pl");
225   COMPARE(fccmp(s31, s31, NZCVFlag, le), "fccmp s31, s31, #NZCV, le");
226   COMPARE(fccmp(d4, d5, VFlag, gt), "fccmp d4, d5, #nzcV, gt");
227   COMPARE(fccmp(d6, d7, NFlag, vs), "fccmp d6, d7, #Nzcv, vs");
228   COMPARE(fccmp(d30, d0, NZFlag, vc), "fccmp d30, d0, #NZcv, vc");
229   COMPARE(fccmp(d31, d31, ZFlag, hs), "fccmp d31, d31, #nZcv, hs");
230   COMPARE(fccmp(h12, h13, CVFlag, al), "fccmp h12, h13, #nzCV, al");
231   COMPARE(fccmp(s14, s15, CVFlag, al), "fccmp s14, s15, #nzCV, al");
232   COMPARE(fccmp(d16, d17, CFlag, nv), "fccmp d16, d17, #nzCv, nv");
233 
234   COMPARE(fccmpe(h8, h9, NoFlag, eq), "fccmpe h8, h9, #nzcv, eq");
235   COMPARE(fccmpe(h10, h11, ZVFlag, ne), "fccmpe h10, h11, #nZcV, ne");
236   COMPARE(fccmpe(h30, h16, NCFlag, pl), "fccmpe h30, h16, #NzCv, pl");
237   COMPARE(fccmpe(h31, h31, NZCVFlag, le), "fccmpe h31, h31, #NZCV, le");
238   COMPARE(fccmpe(s0, s1, NoFlag, eq), "fccmpe s0, s1, #nzcv, eq");
239   COMPARE(fccmpe(s2, s3, ZVFlag, ne), "fccmpe s2, s3, #nZcV, ne");
240   COMPARE(fccmpe(s30, s16, NCFlag, pl), "fccmpe s30, s16, #NzCv, pl");
241   COMPARE(fccmpe(s31, s31, NZCVFlag, le), "fccmpe s31, s31, #NZCV, le");
242   COMPARE(fccmpe(d4, d5, VFlag, gt), "fccmpe d4, d5, #nzcV, gt");
243   COMPARE(fccmpe(d6, d7, NFlag, vs), "fccmpe d6, d7, #Nzcv, vs");
244   COMPARE(fccmpe(d30, d0, NZFlag, vc), "fccmpe d30, d0, #NZcv, vc");
245   COMPARE(fccmpe(d31, d31, ZFlag, hs), "fccmpe d31, d31, #nZcv, hs");
246   COMPARE(fccmpe(h12, h13, CVFlag, al), "fccmpe h12, h13, #nzCV, al");
247   COMPARE(fccmpe(s14, s15, CVFlag, al), "fccmpe s14, s15, #nzCV, al");
248   COMPARE(fccmpe(d16, d17, CFlag, nv), "fccmpe d16, d17, #nzCv, nv");
249 
250   CLEANUP();
251 }
252 
TEST(fp_select)253 TEST(fp_select) {
254   SETUP();
255 
256   COMPARE(fcsel(h0, h1, h2, eq), "fcsel h0, h1, h2, eq");
257   COMPARE(fcsel(h31, h31, h30, ne), "fcsel h31, h31, h30, ne");
258   COMPARE(fcsel(s0, s1, s2, eq), "fcsel s0, s1, s2, eq");
259   COMPARE(fcsel(s31, s31, s30, ne), "fcsel s31, s31, s30, ne");
260   COMPARE(fcsel(d0, d1, d2, mi), "fcsel d0, d1, d2, mi");
261   COMPARE(fcsel(d31, d30, d31, pl), "fcsel d31, d30, d31, pl");
262   COMPARE(fcsel(h11, h12, h13, al), "fcsel h11, h12, h13, al");
263   COMPARE(fcsel(s14, s15, s16, al), "fcsel s14, s15, s16, al");
264   COMPARE(fcsel(d17, d18, d19, nv), "fcsel d17, d18, d19, nv");
265 
266   CLEANUP();
267 }
268 
TEST(fcvt_scvtf_ucvtf)269 TEST(fcvt_scvtf_ucvtf) {
270   SETUP();
271 
272   COMPARE(fcvtas(w0, s1), "fcvtas w0, s1");
273   COMPARE(fcvtas(x2, s3), "fcvtas x2, s3");
274   COMPARE(fcvtas(w4, d5), "fcvtas w4, d5");
275   COMPARE(fcvtas(x6, d7), "fcvtas x6, d7");
276   COMPARE(fcvtau(w8, s9), "fcvtau w8, s9");
277   COMPARE(fcvtau(x10, s11), "fcvtau x10, s11");
278   COMPARE(fcvtau(w12, d13), "fcvtau w12, d13");
279   COMPARE(fcvtau(x14, d15), "fcvtau x14, d15");
280   COMPARE(fcvtns(w0, s1), "fcvtns w0, s1");
281   COMPARE(fcvtns(x2, s3), "fcvtns x2, s3");
282   COMPARE(fcvtns(w4, d5), "fcvtns w4, d5");
283   COMPARE(fcvtns(x6, d7), "fcvtns x6, d7");
284   COMPARE(fcvtnu(w8, s9), "fcvtnu w8, s9");
285   COMPARE(fcvtnu(x10, s11), "fcvtnu x10, s11");
286   COMPARE(fcvtnu(w12, d13), "fcvtnu w12, d13");
287   COMPARE(fcvtnu(x14, d15), "fcvtnu x14, d15");
288   COMPARE(fcvtzu(x16, d17), "fcvtzu x16, d17");
289   COMPARE(fcvtzu(w18, d19), "fcvtzu w18, d19");
290   COMPARE(fcvtzs(x20, d21), "fcvtzs x20, d21");
291   COMPARE(fcvtzs(w22, d23), "fcvtzs w22, d23");
292   COMPARE(fcvtzu(x16, s17), "fcvtzu x16, s17");
293   COMPARE(fcvtzu(w18, s19), "fcvtzu w18, s19");
294   COMPARE(fcvtzs(x20, s21), "fcvtzs x20, s21");
295   COMPARE(fcvtzs(w22, s23), "fcvtzs w22, s23");
296   COMPARE(fcvtzs(w2, d1, 1), "fcvtzs w2, d1, #1");
297   COMPARE(fcvtzs(w2, s1, 1), "fcvtzs w2, s1, #1");
298   COMPARE(fcvtzs(x4, d3, 15), "fcvtzs x4, d3, #15");
299   COMPARE(fcvtzs(x4, s3, 15), "fcvtzs x4, s3, #15");
300   COMPARE(fcvtzs(w6, d5, 32), "fcvtzs w6, d5, #32");
301   COMPARE(fcvtzs(w6, s5, 32), "fcvtzs w6, s5, #32");
302   COMPARE(fjcvtzs(w0, d1), "fjcvtzs w0, d1");
303   COMPARE(fcvtzu(w2, d1, 1), "fcvtzu w2, d1, #1");
304   COMPARE(fcvtzu(w2, s1, 1), "fcvtzu w2, s1, #1");
305   COMPARE(fcvtzu(x4, d3, 15), "fcvtzu x4, d3, #15");
306   COMPARE(fcvtzu(x4, s3, 15), "fcvtzu x4, s3, #15");
307   COMPARE(fcvtzu(w6, d5, 32), "fcvtzu w6, d5, #32");
308   COMPARE(fcvtzu(w6, s5, 32), "fcvtzu w6, s5, #32");
309   COMPARE(fcvtpu(x24, d25), "fcvtpu x24, d25");
310   COMPARE(fcvtpu(w26, d27), "fcvtpu w26, d27");
311   COMPARE(fcvtps(x28, d29), "fcvtps x28, d29");
312   COMPARE(fcvtps(w30, d31), "fcvtps w30, d31");
313   COMPARE(fcvtpu(x0, s1), "fcvtpu x0, s1");
314   COMPARE(fcvtpu(w2, s3), "fcvtpu w2, s3");
315   COMPARE(fcvtps(x4, s5), "fcvtps x4, s5");
316   COMPARE(fcvtps(w6, s7), "fcvtps w6, s7");
317   COMPARE(scvtf(d24, w25), "scvtf d24, w25");
318   COMPARE(scvtf(s24, w25), "scvtf s24, w25");
319   COMPARE(scvtf(d26, x0), "scvtf d26, x0");
320   COMPARE(scvtf(s26, x0), "scvtf s26, x0");
321   COMPARE(ucvtf(d28, w29), "ucvtf d28, w29");
322   COMPARE(ucvtf(s28, w29), "ucvtf s28, w29");
323   COMPARE(ucvtf(d0, x1), "ucvtf d0, x1");
324   COMPARE(ucvtf(s0, x1), "ucvtf s0, x1");
325   COMPARE(ucvtf(d0, x1, 0), "ucvtf d0, x1");
326   COMPARE(ucvtf(s0, x1, 0), "ucvtf s0, x1");
327   COMPARE(scvtf(d1, x2, 1), "scvtf d1, x2, #1");
328   COMPARE(scvtf(s1, x2, 1), "scvtf s1, x2, #1");
329   COMPARE(scvtf(d3, x4, 15), "scvtf d3, x4, #15");
330   COMPARE(scvtf(s3, x4, 15), "scvtf s3, x4, #15");
331   COMPARE(scvtf(d5, x6, 32), "scvtf d5, x6, #32");
332   COMPARE(scvtf(s5, x6, 32), "scvtf s5, x6, #32");
333   COMPARE(ucvtf(d7, x8, 2), "ucvtf d7, x8, #2");
334   COMPARE(ucvtf(s7, x8, 2), "ucvtf s7, x8, #2");
335   COMPARE(ucvtf(d9, x10, 16), "ucvtf d9, x10, #16");
336   COMPARE(ucvtf(s9, x10, 16), "ucvtf s9, x10, #16");
337   COMPARE(ucvtf(d11, x12, 33), "ucvtf d11, x12, #33");
338   COMPARE(ucvtf(s11, x12, 33), "ucvtf s11, x12, #33");
339   COMPARE(fcvtms(w0, s1), "fcvtms w0, s1");
340   COMPARE(fcvtms(x2, s3), "fcvtms x2, s3");
341   COMPARE(fcvtms(w4, d5), "fcvtms w4, d5");
342   COMPARE(fcvtms(x6, d7), "fcvtms x6, d7");
343   COMPARE(fcvtmu(w8, s9), "fcvtmu w8, s9");
344   COMPARE(fcvtmu(x10, s11), "fcvtmu x10, s11");
345   COMPARE(fcvtmu(w12, d13), "fcvtmu w12, d13");
346   COMPARE(fcvtmu(x14, d15), "fcvtmu x14, d15");
347 
348   COMPARE(fcvtas(w0, h1), "fcvtas w0, h1");
349   COMPARE(fcvtas(x2, h3), "fcvtas x2, h3");
350   COMPARE(fcvtau(w8, h9), "fcvtau w8, h9");
351   COMPARE(fcvtau(x10, h11), "fcvtau x10, h11");
352   COMPARE(fcvtns(w0, h1), "fcvtns w0, h1");
353   COMPARE(fcvtns(x2, h3), "fcvtns x2, h3");
354   COMPARE(fcvtnu(w8, h9), "fcvtnu w8, h9");
355   COMPARE(fcvtnu(x10, h11), "fcvtnu x10, h11");
356   COMPARE(fcvtzu(x16, h17), "fcvtzu x16, h17");
357   COMPARE(fcvtzu(w18, h19), "fcvtzu w18, h19");
358   COMPARE(fcvtzs(x20, h21), "fcvtzs x20, h21");
359   COMPARE(fcvtzs(w22, h23), "fcvtzs w22, h23");
360   COMPARE(fcvtzs(w2, h1, 1), "fcvtzs w2, h1, #1");
361   COMPARE(fcvtzs(x4, h3, 15), "fcvtzs x4, h3, #15");
362   COMPARE(fcvtzs(w6, h5, 32), "fcvtzs w6, h5, #32");
363   COMPARE(fcvtzu(w2, h1, 1), "fcvtzu w2, h1, #1");
364   COMPARE(fcvtzu(x4, h3, 15), "fcvtzu x4, h3, #15");
365   COMPARE(fcvtzu(w6, h5, 32), "fcvtzu w6, h5, #32");
366   COMPARE(fcvtpu(x0, h1), "fcvtpu x0, h1");
367   COMPARE(fcvtpu(w2, h3), "fcvtpu w2, h3");
368   COMPARE(fcvtps(x4, h5), "fcvtps x4, h5");
369   COMPARE(fcvtps(w6, h7), "fcvtps w6, h7");
370   COMPARE(scvtf(h24, w25), "scvtf h24, w25");
371   COMPARE(scvtf(h26, x0), "scvtf h26, x0");
372   COMPARE(ucvtf(h28, w29), "ucvtf h28, w29");
373   COMPARE(ucvtf(h0, x1), "ucvtf h0, x1");
374   COMPARE(ucvtf(h0, x1, 0), "ucvtf h0, x1");
375   COMPARE(scvtf(h1, x2, 1), "scvtf h1, x2, #1");
376   COMPARE(scvtf(h3, x4, 15), "scvtf h3, x4, #15");
377   COMPARE(scvtf(h5, x6, 32), "scvtf h5, x6, #32");
378   COMPARE(ucvtf(h7, x8, 2), "ucvtf h7, x8, #2");
379   COMPARE(ucvtf(h9, x10, 16), "ucvtf h9, x10, #16");
380   COMPARE(ucvtf(h11, x12, 33), "ucvtf h11, x12, #33");
381   COMPARE(fcvtms(w0, h1), "fcvtms w0, h1");
382   COMPARE(fcvtms(x2, h3), "fcvtms x2, h3");
383   COMPARE(fcvtmu(w8, h9), "fcvtmu w8, h9");
384   COMPARE(fcvtmu(x10, h11), "fcvtmu x10, h11");
385 
386   CLEANUP();
387 }
388 
389 }  // namespace aarch64
390 }  // namespace vixl
391