root/usr/src/test/util-tests/tests/dis/i386/64.bitalg.s
/*
 * This file and its contents are supplied under the terms of the
 * Common Development and Distribution License ("CDDL"), version 1.0.
 * You may only use this file in accordance with the terms of version
 * 1.0 of the CDDL.
 *
 * A full copy of the text of the CDDL should have accompanied this
 * source.  A copy of the CDDL is also available via the Internet at
 * http://www.illumos.org/license/CDDL.
 */

/*
 * Copyright 2024 Oxide Computer Company
 */

/*
 * AVX512 bit algorithms (BITALG) and vpopcntdq.
 */

.text
.align 16
.globl libdis_test
.type libdis_test, @function
libdis_test:
        vpopcntb        %xmm20, %xmm21
        vpopcntb        (%r10), %xmm22
        vpopcntb        0x64(%r9), %xmm23
        vpopcntb        0x64(%r10,%r11,4), %xmm19
        vpopcntb        %xmm24, %xmm25{%k2}
        vpopcntb        %xmm26, %xmm27{%k3}{z}
        vpopcntb        0x7777(%rax), %xmm28{%k4}
        vpopcntb        0x6666(%rax), %xmm29{%k5}{z}

        vpopcntb        %ymm20, %ymm21
        vpopcntb        (%r10), %ymm22
        vpopcntb        0x64(%r9), %ymm23
        vpopcntb        0x64(%r10,%r11,4), %ymm19
        vpopcntb        %ymm24, %ymm25{%k2}
        vpopcntb        %ymm26, %ymm27{%k3}{z}
        vpopcntb        0x7777(%rax), %ymm28{%k4}
        vpopcntb        0x6666(%rax), %ymm29{%k5}{z}

        vpopcntb        %zmm20, %zmm21
        vpopcntb        (%r10), %zmm22
        vpopcntb        0x64(%r9), %zmm23
        vpopcntb        0x64(%r10,%r11,4), %zmm19
        vpopcntb        %zmm24, %zmm25{%k2}
        vpopcntb        %zmm26, %zmm27{%k3}{z}
        vpopcntb        0x7777(%rax), %zmm28{%k4}
        vpopcntb        0x6666(%rax), %zmm29{%k5}{z}

        vpopcntw        %xmm20, %xmm21
        vpopcntw        (%r10), %xmm22
        vpopcntw        0x64(%r9), %xmm23
        vpopcntw        0x64(%r10,%r11,4), %xmm19
        vpopcntw        %xmm24, %xmm25{%k2}
        vpopcntw        %xmm26, %xmm27{%k3}{z}
        vpopcntw        0x7777(%rax), %xmm28{%k4}
        vpopcntw        0x6666(%rax), %xmm29{%k5}{z}

        vpopcntw        %ymm20, %ymm21
        vpopcntw        (%r10), %ymm22
        vpopcntw        0x64(%r9), %ymm23
        vpopcntw        0x64(%r10,%r11,4), %ymm19
        vpopcntw        %ymm24, %ymm25{%k2}
        vpopcntw        %ymm26, %ymm27{%k3}{z}
        vpopcntw        0x7777(%rax), %ymm28{%k4}
        vpopcntw        0x6666(%rax), %ymm29{%k5}{z}

        vpopcntw        %zmm20, %zmm21
        vpopcntw        (%r10), %zmm22
        vpopcntw        0x64(%r9), %zmm23
        vpopcntw        0x64(%r10,%r11,4), %zmm19
        vpopcntw        %zmm24, %zmm25{%k2}
        vpopcntw        %zmm26, %zmm27{%k3}{z}
        vpopcntw        0x7777(%rax), %zmm28{%k4}
        vpopcntw        0x6666(%rax), %zmm29{%k5}{z}

        vpopcntd        %xmm20, %xmm21
        vpopcntd        (%r10), %xmm22
        vpopcntd        0x64(%r9), %xmm23
        vpopcntd        0x64(%r10,%r11,4), %xmm19
        vpopcntd        %xmm24, %xmm25{%k2}
        vpopcntd        %xmm26, %xmm27{%k3}{z}
        vpopcntd        0x7777(%rax), %xmm28{%k4}
        vpopcntd        0x6666(%rax), %xmm29{%k5}{z}
        vpopcntd        (%rcx){1to4}, %xmm7
        vpopcntd        0x12345(%rcx){1to4}, %xmm7

        vpopcntd        %ymm20, %ymm21
        vpopcntd        (%r10), %ymm22
        vpopcntd        0x64(%r9), %ymm23
        vpopcntd        0x64(%r10,%r11,4), %ymm19
        vpopcntd        %ymm24, %ymm25{%k2}
        vpopcntd        %ymm26, %ymm27{%k3}{z}
        vpopcntd        0x7777(%rax), %ymm28{%k4}
        vpopcntd        0x6666(%rax), %ymm29{%k5}{z}
        vpopcntd        (%rcx){1to8}, %ymm7
        vpopcntd        0x54321(%rcx){1to8}, %ymm7

        vpopcntd        %zmm20, %zmm21
        vpopcntd        (%r10), %zmm22
        vpopcntd        0x64(%r9), %zmm23
        vpopcntd        0x64(%r10,%r11,4), %zmm19
        vpopcntd        %zmm24, %zmm25{%k2}
        vpopcntd        %zmm26, %zmm27{%k3}{z}
        vpopcntd        0x7777(%rax), %zmm28{%k4}
        vpopcntd        0x6666(%rax), %zmm29{%k5}{z}
        vpopcntd        (%rcx){1to16}, %zmm7
        vpopcntd        0x34543(%rcx){1to16}, %zmm7

        vpopcntq        %xmm20, %xmm21
        vpopcntq        (%r10), %xmm22
        vpopcntq        0x64(%r9), %xmm23
        vpopcntq        0x64(%r10,%r11,4), %xmm19
        vpopcntq        %xmm24, %xmm25{%k2}
        vpopcntq        %xmm26, %xmm27{%k3}{z}
        vpopcntq        0x7777(%rax), %xmm28{%k4}
        vpopcntq        0x6666(%rax), %xmm29{%k5}{z}
        vpopcntq        (%rcx){1to2}, %xmm7
        vpopcntq        0x12345(%rcx){1to2}, %xmm7

        vpopcntq        %ymm20, %ymm21
        vpopcntq        (%r10), %ymm22
        vpopcntq        0x64(%r9), %ymm23
        vpopcntq        0x64(%r10,%r11,4), %ymm19
        vpopcntq        %ymm24, %ymm25{%k2}
        vpopcntq        %ymm26, %ymm27{%k3}{z}
        vpopcntq        0x7777(%rax), %ymm28{%k4}
        vpopcntq        0x6666(%rax), %ymm29{%k5}{z}
        vpopcntq        (%rcx){1to4}, %ymm7
        vpopcntq        0x54321(%rcx){1to4}, %ymm7

        vpopcntq        %zmm20, %zmm21
        vpopcntq        (%r10), %zmm22
        vpopcntq        0x64(%r9), %zmm23
        vpopcntq        0x64(%r10,%r11,4), %zmm19
        vpopcntq        %zmm24, %zmm25{%k2}
        vpopcntq        %zmm26, %zmm27{%k3}{z}
        vpopcntq        0x7777(%rax), %zmm28{%k4}
        vpopcntq        0x6666(%rax), %zmm29{%k5}{z}
        vpopcntq        (%rcx){1to8}, %zmm7
        vpopcntq        0x34543(%rcx){1to8}, %zmm7

        vpshufbitqmb    %xmm1, %xmm2, %k3
        vpshufbitqmb    %xmm11, %xmm12, %k4{%k5}
        vpshufbitqmb    (%r10), %xmm22, %k0
        vpshufbitqmb    (%r10), %xmm22, %k0{%k1}
        vpshufbitqmb    0x167(%r10), %xmm22, %k0
        vpshufbitqmb    0x761(%r10), %xmm22, %k0{%k1}
        vpshufbitqmb    0x167(%r10, %r8, 4), %xmm22, %k0
        vpshufbitqmb    0x761(%r10, %r9, 8), %xmm22, %k0{%k1}

        vpshufbitqmb    %ymm1, %ymm2, %k3
        vpshufbitqmb    %ymm11, %ymm12, %k4{%k5}
        vpshufbitqmb    (%r10), %ymm22, %k0
        vpshufbitqmb    (%r10), %ymm22, %k0{%k1}
        vpshufbitqmb    0x167(%r10), %ymm22, %k0
        vpshufbitqmb    0x761(%r10), %ymm22, %k0{%k1}
        vpshufbitqmb    0x167(%r10, %r8, 4), %ymm22, %k0
        vpshufbitqmb    0x761(%r10, %r9, 8), %ymm22, %k0{%k1}

        vpshufbitqmb    %zmm1, %zmm2, %k3
        vpshufbitqmb    %zmm11, %zmm12, %k4{%k5}
        vpshufbitqmb    (%r10), %zmm22, %k0
        vpshufbitqmb    (%r10), %zmm22, %k0{%k1}
        vpshufbitqmb    0x167(%r10), %zmm22, %k0
        vpshufbitqmb    0x761(%r10), %zmm22, %k0{%k1}
        vpshufbitqmb    0x167(%r10, %r8, 4), %zmm22, %k0
        vpshufbitqmb    0x761(%r10, %r9, 8), %zmm22, %k0{%k1}
.size libdis_test, [.-libdis_test]