xref: /illumos-gate/usr/src/test/util-tests/tests/dis/i386/32.bf16.s (revision 3863692f7043eea9677c6fc00e5ae1667b8ccb1b)
1/*
2 * This file and its contents are supplied under the terms of the
3 * Common Development and Distribution License ("CDDL"), version 1.0.
4 * You may only use this file in accordance with the terms of version
5 * 1.0 of the CDDL.
6 *
7 * A full copy of the text of the CDDL should have accompanied this
8 * source.  A copy of the CDDL is also available via the Internet at
9 * http://www.illumos.org/license/CDDL.
10 */
11
12/*
13 * Copyright 2024 Oxide Computer Company
14 */
15
16/*
17 * Binary floating point 16 instructions, currently just AVX related (i.e. no AMX).
18 *
19 * For the vcvtneps2bf16 instruction, gas sometimes has a variant with 'x' or
20 * 'y' appended which appear to be an indication for the target memory size,
21 * particularly for broadcasts and related. While we use those (as there's no
22 * other way to get that), dis currently does not break these apart.
23 */
24
25.text
26.align 16
27.globl libdis_test
28.type libdis_test, @function
29libdis_test:
30	vcvtne2ps2bf16	%xmm0, %xmm1, %xmm2
31	vcvtne2ps2bf16	%xmm3, %xmm4, %xmm5{%k1}
32	vcvtne2ps2bf16	%xmm6, %xmm7, %xmm0{%k2}{z}
33	vcvtne2ps2bf16	(%eax), %xmm1, %xmm2
34	vcvtne2ps2bf16	0x77(%ebx), %xmm1, %xmm2
35	vcvtne2ps2bf16	0x77(%ecx,%edx,4), %xmm1, %xmm2
36	vcvtne2ps2bf16	0x7777(%edi){1to4}, %xmm1, %xmm2
37	vcvtne2ps2bf16	0x7777(%edi){1to4}, %xmm1, %xmm2{%k3}
38	vcvtne2ps2bf16	0x7777(%edi){1to4}, %xmm1, %xmm2{%k3}{z}
39
40	vcvtne2ps2bf16	%ymm0, %ymm1, %ymm2
41	vcvtne2ps2bf16	%ymm3, %ymm4, %ymm5{%k1}
42	vcvtne2ps2bf16	%ymm6, %ymm7, %ymm0{%k2}{z}
43	vcvtne2ps2bf16	(%eax), %ymm1, %ymm2
44	vcvtne2ps2bf16	0x77(%ebx), %ymm1, %ymm2
45	vcvtne2ps2bf16	0x77(%ecx,%edx,4), %ymm1, %ymm2
46	vcvtne2ps2bf16	0x7777(%edi){1to8}, %ymm1, %ymm2
47
48	vcvtne2ps2bf16	%zmm0, %zmm1, %zmm2
49	vcvtne2ps2bf16	%zmm3, %zmm4, %zmm5{%k1}
50	vcvtne2ps2bf16	%zmm6, %zmm7, %zmm0{%k2}{z}
51	vcvtne2ps2bf16	(%eax), %zmm1, %zmm2
52	vcvtne2ps2bf16	0x77(%ebx), %zmm1, %zmm2
53	vcvtne2ps2bf16	0x77(%ecx,%edx,4), %zmm1, %zmm2
54	vcvtne2ps2bf16	0x7777(%edi){1to16}, %zmm1, %zmm2
55
56	vcvtneps2bf16	%xmm0, %xmm1
57	vcvtneps2bf16	%xmm2, %xmm3{%k4}
58	vcvtneps2bf16	%xmm5, %xmm6{%k7}{z}
59	vcvtneps2bf16x	(%edi), %xmm7
60	vcvtneps2bf16x	0x88(%ebx), %xmm6
61	vcvtneps2bf16x	0x88(%ebx,%ecx,4), %xmm5
62	vcvtneps2bf16x	0x66(%ebx,%ecx,4), %xmm5{%k3}
63	vcvtneps2bf16	(%esi){1to4}, %xmm6
64	vcvtneps2bf16	(%esi){1to4}, %xmm6{%k6}
65	vcvtneps2bf16	(%edi){1to8}, %xmm6
66
67	vcvtneps2bf16	%ymm0, %xmm1
68	vcvtneps2bf16	%ymm2, %xmm3{%k4}
69	vcvtneps2bf16	%ymm5, %xmm6{%k7}{z}
70	vcvtneps2bf16y	(%edi), %xmm7
71	vcvtneps2bf16y	0x88(%ebx), %xmm6
72	vcvtneps2bf16y	0x88(%ebx,%ecx,4), %xmm5
73	vcvtneps2bf16y	-0x66(%ebx,%ecx,4), %xmm5{%k3}
74	vcvtneps2bf16	(%esi){1to8}, %xmm6
75	vcvtneps2bf16	(%esi){1to8}, %xmm6{%k6}
76
77	vcvtneps2bf16	%zmm0, %ymm1
78	vcvtneps2bf16	%zmm2, %ymm3{%k4}
79	vcvtneps2bf16	%zmm5, %ymm6{%k7}{z}
80	vcvtneps2bf16	(%edi), %ymm7
81	vcvtneps2bf16	0x88(%ebx), %ymm6
82	vcvtneps2bf16	0x88(%ebx,%ecx,4), %ymm5
83	vcvtneps2bf16	-0x66(%ebx,%ecx,4), %ymm5{%k3}
84	vcvtneps2bf16	(%esi){1to16}, %ymm6
85	vcvtneps2bf16	(%esi){1to16}, %ymm6{%k6}
86
87	vdpbf16ps	%xmm0, %xmm1, %xmm2
88	vdpbf16ps	%xmm3, %xmm4, %xmm5{%k1}
89	vdpbf16ps	%xmm6, %xmm7, %xmm0{%k2}{z}
90	vdpbf16ps	(%eax), %xmm1, %xmm2
91	vdpbf16ps	0x77(%ebx), %xmm1, %xmm2
92	vdpbf16ps	0x77(%ecx,%edx,4), %xmm1, %xmm2
93	vdpbf16ps	0x7777(%edi){1to4}, %xmm1, %xmm2
94	vdpbf16ps	0x7777(%edi){1to4}, %xmm1, %xmm2{%k3}
95	vdpbf16ps	0x7777(%edi){1to4}, %xmm1, %xmm2{%k3}{z}
96
97	vdpbf16ps	%ymm0, %ymm1, %ymm2
98	vdpbf16ps	%ymm3, %ymm4, %ymm5{%k1}
99	vdpbf16ps	%ymm6, %ymm7, %ymm0{%k2}{z}
100	vdpbf16ps	(%eax), %ymm1, %ymm2
101	vdpbf16ps	0x77(%ebx), %ymm1, %ymm2
102	vdpbf16ps	0x77(%ecx,%edx,4), %ymm1, %ymm2
103	vdpbf16ps	0x7777(%edi){1to8}, %ymm1, %ymm2
104
105	vdpbf16ps	%zmm0, %zmm1, %zmm2
106	vdpbf16ps	%zmm3, %zmm4, %zmm5{%k1}
107	vdpbf16ps	%zmm6, %zmm7, %zmm0{%k2}{z}
108	vdpbf16ps	(%eax), %zmm1, %zmm2
109	vdpbf16ps	0x77(%ebx), %zmm1, %zmm2
110	vdpbf16ps	0x77(%ecx,%edx,4), %zmm1, %zmm2
111	vdpbf16ps	0x7777(%edi){1to16}, %zmm1, %zmm2
112.size libdis_test, [.-libdis_test]
113