xref: /illumos-gate/usr/src/test/util-tests/tests/dis/i386/64.bitalg.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 * AVX512 bit algorithms (BITALG) and vpopcntdq.
18 */
19
20.text
21.align 16
22.globl libdis_test
23.type libdis_test, @function
24libdis_test:
25	vpopcntb	%xmm20, %xmm21
26	vpopcntb	(%r10), %xmm22
27	vpopcntb	0x64(%r9), %xmm23
28	vpopcntb	0x64(%r10,%r11,4), %xmm19
29	vpopcntb	%xmm24, %xmm25{%k2}
30	vpopcntb	%xmm26, %xmm27{%k3}{z}
31	vpopcntb	0x7777(%rax), %xmm28{%k4}
32	vpopcntb	0x6666(%rax), %xmm29{%k5}{z}
33
34	vpopcntb	%ymm20, %ymm21
35	vpopcntb	(%r10), %ymm22
36	vpopcntb	0x64(%r9), %ymm23
37	vpopcntb	0x64(%r10,%r11,4), %ymm19
38	vpopcntb	%ymm24, %ymm25{%k2}
39	vpopcntb	%ymm26, %ymm27{%k3}{z}
40	vpopcntb	0x7777(%rax), %ymm28{%k4}
41	vpopcntb	0x6666(%rax), %ymm29{%k5}{z}
42
43	vpopcntb	%zmm20, %zmm21
44	vpopcntb	(%r10), %zmm22
45	vpopcntb	0x64(%r9), %zmm23
46	vpopcntb	0x64(%r10,%r11,4), %zmm19
47	vpopcntb	%zmm24, %zmm25{%k2}
48	vpopcntb	%zmm26, %zmm27{%k3}{z}
49	vpopcntb	0x7777(%rax), %zmm28{%k4}
50	vpopcntb	0x6666(%rax), %zmm29{%k5}{z}
51
52	vpopcntw	%xmm20, %xmm21
53	vpopcntw	(%r10), %xmm22
54	vpopcntw	0x64(%r9), %xmm23
55	vpopcntw	0x64(%r10,%r11,4), %xmm19
56	vpopcntw	%xmm24, %xmm25{%k2}
57	vpopcntw	%xmm26, %xmm27{%k3}{z}
58	vpopcntw	0x7777(%rax), %xmm28{%k4}
59	vpopcntw	0x6666(%rax), %xmm29{%k5}{z}
60
61	vpopcntw	%ymm20, %ymm21
62	vpopcntw	(%r10), %ymm22
63	vpopcntw	0x64(%r9), %ymm23
64	vpopcntw	0x64(%r10,%r11,4), %ymm19
65	vpopcntw	%ymm24, %ymm25{%k2}
66	vpopcntw	%ymm26, %ymm27{%k3}{z}
67	vpopcntw	0x7777(%rax), %ymm28{%k4}
68	vpopcntw	0x6666(%rax), %ymm29{%k5}{z}
69
70	vpopcntw	%zmm20, %zmm21
71	vpopcntw	(%r10), %zmm22
72	vpopcntw	0x64(%r9), %zmm23
73	vpopcntw	0x64(%r10,%r11,4), %zmm19
74	vpopcntw	%zmm24, %zmm25{%k2}
75	vpopcntw	%zmm26, %zmm27{%k3}{z}
76	vpopcntw	0x7777(%rax), %zmm28{%k4}
77	vpopcntw	0x6666(%rax), %zmm29{%k5}{z}
78
79	vpopcntd	%xmm20, %xmm21
80	vpopcntd	(%r10), %xmm22
81	vpopcntd	0x64(%r9), %xmm23
82	vpopcntd	0x64(%r10,%r11,4), %xmm19
83	vpopcntd	%xmm24, %xmm25{%k2}
84	vpopcntd	%xmm26, %xmm27{%k3}{z}
85	vpopcntd	0x7777(%rax), %xmm28{%k4}
86	vpopcntd	0x6666(%rax), %xmm29{%k5}{z}
87	vpopcntd	(%rcx){1to4}, %xmm7
88	vpopcntd	0x12345(%rcx){1to4}, %xmm7
89
90	vpopcntd	%ymm20, %ymm21
91	vpopcntd	(%r10), %ymm22
92	vpopcntd	0x64(%r9), %ymm23
93	vpopcntd	0x64(%r10,%r11,4), %ymm19
94	vpopcntd	%ymm24, %ymm25{%k2}
95	vpopcntd	%ymm26, %ymm27{%k3}{z}
96	vpopcntd	0x7777(%rax), %ymm28{%k4}
97	vpopcntd	0x6666(%rax), %ymm29{%k5}{z}
98	vpopcntd	(%rcx){1to8}, %ymm7
99	vpopcntd	0x54321(%rcx){1to8}, %ymm7
100
101	vpopcntd	%zmm20, %zmm21
102	vpopcntd	(%r10), %zmm22
103	vpopcntd	0x64(%r9), %zmm23
104	vpopcntd	0x64(%r10,%r11,4), %zmm19
105	vpopcntd	%zmm24, %zmm25{%k2}
106	vpopcntd	%zmm26, %zmm27{%k3}{z}
107	vpopcntd	0x7777(%rax), %zmm28{%k4}
108	vpopcntd	0x6666(%rax), %zmm29{%k5}{z}
109	vpopcntd	(%rcx){1to16}, %zmm7
110	vpopcntd	0x34543(%rcx){1to16}, %zmm7
111
112	vpopcntq	%xmm20, %xmm21
113	vpopcntq	(%r10), %xmm22
114	vpopcntq	0x64(%r9), %xmm23
115	vpopcntq	0x64(%r10,%r11,4), %xmm19
116	vpopcntq	%xmm24, %xmm25{%k2}
117	vpopcntq	%xmm26, %xmm27{%k3}{z}
118	vpopcntq	0x7777(%rax), %xmm28{%k4}
119	vpopcntq	0x6666(%rax), %xmm29{%k5}{z}
120	vpopcntq	(%rcx){1to2}, %xmm7
121	vpopcntq	0x12345(%rcx){1to2}, %xmm7
122
123	vpopcntq	%ymm20, %ymm21
124	vpopcntq	(%r10), %ymm22
125	vpopcntq	0x64(%r9), %ymm23
126	vpopcntq	0x64(%r10,%r11,4), %ymm19
127	vpopcntq	%ymm24, %ymm25{%k2}
128	vpopcntq	%ymm26, %ymm27{%k3}{z}
129	vpopcntq	0x7777(%rax), %ymm28{%k4}
130	vpopcntq	0x6666(%rax), %ymm29{%k5}{z}
131	vpopcntq	(%rcx){1to4}, %ymm7
132	vpopcntq	0x54321(%rcx){1to4}, %ymm7
133
134	vpopcntq	%zmm20, %zmm21
135	vpopcntq	(%r10), %zmm22
136	vpopcntq	0x64(%r9), %zmm23
137	vpopcntq	0x64(%r10,%r11,4), %zmm19
138	vpopcntq	%zmm24, %zmm25{%k2}
139	vpopcntq	%zmm26, %zmm27{%k3}{z}
140	vpopcntq	0x7777(%rax), %zmm28{%k4}
141	vpopcntq	0x6666(%rax), %zmm29{%k5}{z}
142	vpopcntq	(%rcx){1to8}, %zmm7
143	vpopcntq	0x34543(%rcx){1to8}, %zmm7
144
145	vpshufbitqmb	%xmm1, %xmm2, %k3
146	vpshufbitqmb	%xmm11, %xmm12, %k4{%k5}
147	vpshufbitqmb	(%r10), %xmm22, %k0
148	vpshufbitqmb	(%r10), %xmm22, %k0{%k1}
149	vpshufbitqmb	0x167(%r10), %xmm22, %k0
150	vpshufbitqmb	0x761(%r10), %xmm22, %k0{%k1}
151	vpshufbitqmb	0x167(%r10, %r8, 4), %xmm22, %k0
152	vpshufbitqmb	0x761(%r10, %r9, 8), %xmm22, %k0{%k1}
153
154	vpshufbitqmb	%ymm1, %ymm2, %k3
155	vpshufbitqmb	%ymm11, %ymm12, %k4{%k5}
156	vpshufbitqmb	(%r10), %ymm22, %k0
157	vpshufbitqmb	(%r10), %ymm22, %k0{%k1}
158	vpshufbitqmb	0x167(%r10), %ymm22, %k0
159	vpshufbitqmb	0x761(%r10), %ymm22, %k0{%k1}
160	vpshufbitqmb	0x167(%r10, %r8, 4), %ymm22, %k0
161	vpshufbitqmb	0x761(%r10, %r9, 8), %ymm22, %k0{%k1}
162
163	vpshufbitqmb	%zmm1, %zmm2, %k3
164	vpshufbitqmb	%zmm11, %zmm12, %k4{%k5}
165	vpshufbitqmb	(%r10), %zmm22, %k0
166	vpshufbitqmb	(%r10), %zmm22, %k0{%k1}
167	vpshufbitqmb	0x167(%r10), %zmm22, %k0
168	vpshufbitqmb	0x761(%r10), %zmm22, %k0{%k1}
169	vpshufbitqmb	0x167(%r10, %r8, 4), %zmm22, %k0
170	vpshufbitqmb	0x761(%r10, %r9, 8), %zmm22, %k0{%k1}
171.size libdis_test, [.-libdis_test]
172