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 2019 Joyent, Inc.
14 * Copyright 2024 Oxide Computer Company
15 */
16
17/*
18 * 32-bit AVX-512 VNNI instruction disassembly.
19 */
20
21.text
22.align 16
23.globl libdis_test
24.type libdis_test, @function
25libdis_test:
26	vpdpbusd	%xmm0, %xmm1, %xmm2
27	vpdpbusd	%ymm3, %ymm4, %ymm5
28	vpdpbusd	%zmm6, %zmm7, %zmm0
29	vpdpbusd	%xmm1, %xmm2, %xmm3{%k1}
30	vpdpbusd	%xmm4, %xmm5, %xmm6{%k2}{z}
31	vpdpbusd	%ymm7, %ymm0, %ymm1{%k3}
32	vpdpbusd	%ymm2, %ymm3, %ymm4{%k4}{z}
33	vpdpbusd	%zmm5, %zmm6, %zmm7{%k5}
34	vpdpbusd	%zmm0, %zmm1, %zmm2{%k6}{z}
35	vpdpbusd	0x64(%eax), %zmm3, %zmm4
36	vpdpbusd	0x123456(%ebx, %ecx, 8), %zmm5, %zmm6
37	vpdpbusd	(%edx){1to4}, %xmm1, %xmm2
38	vpdpbusd	0x23(%edx){1to4}, %xmm1, %xmm2
39	vpdpbusd	(%edx){1to8}, %ymm1, %ymm2
40	vpdpbusd	0x23(%edx){1to8}, %ymm1, %ymm2
41	vpdpbusd	(%edx){1to16}, %zmm1, %zmm2
42	vpdpbusd	0x23(%edx){1to16}, %zmm1, %zmm2
43
44	vpdpbusds	%xmm0, %xmm1, %xmm2
45	vpdpbusds	%ymm3, %ymm4, %ymm5
46	vpdpbusds	%zmm6, %zmm7, %zmm0
47	vpdpbusds	%xmm1, %xmm2, %xmm3{%k1}
48	vpdpbusds	%xmm4, %xmm5, %xmm6{%k2}{z}
49	vpdpbusds	%ymm7, %ymm0, %ymm1{%k3}
50	vpdpbusds	%ymm2, %ymm3, %ymm4{%k4}{z}
51	vpdpbusds	%zmm5, %zmm6, %zmm7{%k5}
52	vpdpbusds	%zmm0, %zmm1, %zmm2{%k6}{z}
53	vpdpbusds	0x64(%eax), %zmm3, %zmm4
54	vpdpbusds	0x123456(%ebx, %ecx, 8), %zmm5, %zmm6
55	vpdpbusds	(%edx){1to4}, %xmm1, %xmm2
56	vpdpbusds	0x23(%edx){1to4}, %xmm1, %xmm2
57	vpdpbusds	(%edx){1to8}, %ymm1, %ymm2
58	vpdpbusds	0x23(%edx){1to8}, %ymm1, %ymm2
59	vpdpbusds	(%edx){1to16}, %zmm1, %zmm2
60	vpdpbusds	0x23(%edx){1to16}, %zmm1, %zmm2
61
62	vpdpwssd	%xmm0, %xmm1, %xmm2
63	vpdpwssd	%ymm3, %ymm4, %ymm5
64	vpdpwssd	%zmm6, %zmm7, %zmm0
65	vpdpwssd	%xmm1, %xmm2, %xmm3{%k1}
66	vpdpwssd	%xmm4, %xmm5, %xmm6{%k2}{z}
67	vpdpwssd	%ymm7, %ymm0, %ymm1{%k3}
68	vpdpwssd	%ymm2, %ymm3, %ymm4{%k4}{z}
69	vpdpwssd	%zmm5, %zmm6, %zmm7{%k5}
70	vpdpwssd	%zmm0, %zmm1, %zmm2{%k6}{z}
71	vpdpwssd	0x64(%eax), %zmm3, %zmm4
72	vpdpwssd	0x123456(%ebx, %ecx, 8), %zmm5, %zmm6
73	vpdpwssd	(%edx){1to4}, %xmm1, %xmm2
74	vpdpwssd	0x23(%edx){1to4}, %xmm1, %xmm2
75	vpdpwssd	(%edx){1to8}, %ymm1, %ymm2
76	vpdpwssd	0x23(%edx){1to8}, %ymm1, %ymm2
77	vpdpwssd	(%edx){1to16}, %zmm1, %zmm2
78	vpdpwssd	0x23(%edx){1to16}, %zmm1, %zmm2
79
80	vpdpwssds	%xmm0, %xmm1, %xmm2
81	vpdpwssds	%ymm3, %ymm4, %ymm5
82	vpdpwssds	%zmm6, %zmm7, %zmm0
83	vpdpwssds	%xmm1, %xmm2, %xmm3{%k1}
84	vpdpwssds	%xmm4, %xmm5, %xmm6{%k2}{z}
85	vpdpwssds	%ymm7, %ymm0, %ymm1{%k3}
86	vpdpwssds	%ymm2, %ymm3, %ymm4{%k4}{z}
87	vpdpwssds	%zmm5, %zmm6, %zmm7{%k5}
88	vpdpwssds	%zmm0, %zmm1, %zmm2{%k6}{z}
89	vpdpwssds	0x64(%eax), %zmm3, %zmm4
90	vpdpwssds	0x123456(%ebx, %ecx, 8), %zmm5, %zmm6
91	vpdpwssds	(%edx){1to4}, %xmm1, %xmm2
92	vpdpwssds	0x23(%edx){1to4}, %xmm1, %xmm2
93	vpdpwssds	(%edx){1to8}, %ymm1, %ymm2
94	vpdpwssds	0x23(%edx){1to8}, %ymm1, %ymm2
95	vpdpwssds	(%edx){1to16}, %zmm1, %zmm2
96	vpdpwssds	0x23(%edx){1to16}, %zmm1, %zmm2
97.size libdis_test, [.-libdis_test]
98