root/usr/src/test/util-tests/tests/dis/i386/64.ifma.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
 */

/*
 * AVX-512 Integer Fused Multiply Accumulate (IFMA) instructions.
 */

.text
.align 16
.globl libdis_test
.type libdis_test, @function
libdis_test:
        vpmadd52huq     %xmm0, %xmm1, %xmm2
        vpmadd52huq     %xmm3, %xmm4, %xmm5{%k1}
        vpmadd52huq     %xmm23, %xmm24, %xmm25{%k2}{z}
        vpmadd52huq     (%rax), %xmm16, %xmm17{%k5}{z}
        vpmadd52huq     0x23(%rax), %xmm18, %xmm19{%k3}
        vpmadd52huq     0x123(%rax,%rbx,4), %xmm3, %xmm30
        vpmadd52huq     (%rax){1to2}, %xmm6, %xmm7
        vpmadd52huq     0x54(%rax){1to2}, %xmm6, %xmm7{%k4}

        vpmadd52huq     %ymm0, %ymm1, %ymm2
        vpmadd52huq     %ymm3, %ymm4, %ymm5{%k1}
        vpmadd52huq     %ymm23, %ymm24, %ymm25{%k2}{z}
        vpmadd52huq     (%rax), %ymm16, %ymm17{%k5}{z}
        vpmadd52huq     0x23(%rax), %ymm18, %ymm19{%k3}
        vpmadd52huq     0x123(%rax,%rbx,4), %ymm3, %ymm30
        vpmadd52huq     (%rax){1to4}, %ymm6, %ymm7
        vpmadd52huq     0x54(%rax){1to4}, %ymm6, %ymm7{%k4}

        vpmadd52huq     %zmm0, %zmm1, %zmm2
        vpmadd52huq     %zmm3, %zmm4, %zmm5{%k1}
        vpmadd52huq     %zmm23, %zmm24, %zmm25{%k2}{z}
        vpmadd52huq     (%rax), %zmm16, %zmm17{%k5}{z}
        vpmadd52huq     0x23(%rax), %zmm18, %zmm19{%k3}
        vpmadd52huq     0x123(%rax,%rbx,4), %zmm3, %zmm30
        vpmadd52huq     (%rax){1to8}, %zmm6, %zmm7
        vpmadd52huq     0x54(%rax){1to8}, %zmm6, %zmm7{%k4}

        vpmadd52luq     %xmm0, %xmm1, %xmm2
        vpmadd52luq     %xmm3, %xmm4, %xmm5{%k1}
        vpmadd52luq     %xmm23, %xmm24, %xmm25{%k2}{z}
        vpmadd52luq     (%rax), %xmm16, %xmm17{%k5}{z}
        vpmadd52luq     0x23(%rax), %xmm18, %xmm19{%k3}
        vpmadd52luq     0x123(%rax,%rbx,4), %xmm3, %xmm30
        vpmadd52luq     (%rax){1to2}, %xmm6, %xmm7
        vpmadd52luq     0x54(%rax){1to2}, %xmm6, %xmm7{%k4}

        vpmadd52luq     %ymm0, %ymm1, %ymm2
        vpmadd52luq     %ymm3, %ymm4, %ymm5{%k1}
        vpmadd52luq     %ymm23, %ymm24, %ymm25{%k2}{z}
        vpmadd52luq     (%rax), %ymm16, %ymm17{%k5}{z}
        vpmadd52luq     0x23(%rax), %ymm18, %ymm19{%k3}
        vpmadd52luq     0x123(%rax,%rbx,4), %ymm3, %ymm30
        vpmadd52luq     (%rax){1to4}, %ymm6, %ymm7
        vpmadd52luq     0x54(%rax){1to4}, %ymm6, %ymm7{%k4}

        vpmadd52luq     %zmm0, %zmm1, %zmm2
        vpmadd52luq     %zmm3, %zmm4, %zmm5{%k1}
        vpmadd52luq     %zmm23, %zmm24, %zmm25{%k2}{z}
        vpmadd52luq     (%rax), %zmm16, %zmm17{%k5}{z}
        vpmadd52luq     0x23(%rax), %zmm18, %zmm19{%k3}
        vpmadd52luq     0x123(%rax,%rbx,4), %zmm3, %zmm30
        vpmadd52luq     (%rax){1to8}, %zmm6, %zmm7
        vpmadd52luq     0x54(%rax){1to8}, %zmm6, %zmm7{%k4}
.size libdis_test, [.-libdis_test]