/* * 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 2019, Joyent, Inc. */ /* * 32-bit AVX-512 VNNI instruction disassembly. * * The support for VNNI instructions in gas is not present in the commonly used * versions of gas in illumos (it's not present in 2.26.1 or older). Support is * present in at least 2.30 (though maybe earlier). Rather than have the test * suite force a version upgrade, we instead encode each instruction as the * corresponding series of .byte expressions. Each .byte line follows a group of * commented out assembly instructions and has a one to one mapping between * them. */ .text .align 16 .globl libdis_test .type libdis_test, @function libdis_test: /* * vpdpbusd %xmm0, %xmm1, %xmm2 * vpdpbusd %ymm3, %ymm4, %ymm5 * vpdpbusd %zmm6, %zmm7, %zmm0 * vpdpbusd %xmm1, %xmm2, %xmm3{%k1} * vpdpbusd %xmm4, %xmm5, %xmm6{%k2}{z} * vpdpbusd %ymm7, %ymm0, %ymm1{%k3} * vpdpbusd %ymm2, %ymm3, %ymm4{%k4}{z} * vpdpbusd %zmm5, %zmm6, %zmm7{%k5} * vpdpbusd %zmm0, %zmm1, %zmm2{%k6}{z} * vpdpbusd 0x64(%eax), %zmm3, %zmm4 * vpdpbusd 0x123456(%ebx, %ecx, 8), %zmm5, %zmm6 */ .byte 0x62, 0xf2, 0x75, 0x08, 0x50, 0xd0 .byte 0x62, 0xf2, 0x5d, 0x28, 0x50, 0xeb .byte 0x62, 0xf2, 0x45, 0x48, 0x50, 0xc6 .byte 0x62, 0xf2, 0x6d, 0x09, 0x50, 0xd9 .byte 0x62, 0xf2, 0x55, 0x8a, 0x50, 0xf4 .byte 0x62, 0xf2, 0x7d, 0x2b, 0x50, 0xcf .byte 0x62, 0xf2, 0x65, 0xac, 0x50, 0xe2 .byte 0x62, 0xf2, 0x4d, 0x4d, 0x50, 0xfd .byte 0x62, 0xf2, 0x75, 0xce, 0x50, 0xd0 .byte 0x62, 0xf2, 0x65, 0x48, 0x50, 0xa0, 0x64, 0x00, 0x00, 0x00 .byte 0x62, 0xf2, 0x55, 0x48, 0x50, 0xb4, 0xcb, 0x56, 0x34, 0x12, 0x00 /* * vpdpbusds %xmm0, %xmm1, %xmm2 * vpdpbusds %ymm3, %ymm4, %ymm5 * vpdpbusds %zmm6, %zmm7, %zmm0 * vpdpbusds %xmm1, %xmm2, %xmm3{%k1} * vpdpbusds %xmm4, %xmm5, %xmm6{%k2}{z} * vpdpbusds %ymm7, %ymm0, %ymm1{%k3} * vpdpbusds %ymm2, %ymm3, %ymm4{%k4}{z} * vpdpbusds %zmm5, %zmm6, %zmm7{%k5} * vpdpbusds %zmm0, %zmm1, %zmm2{%k6}{z} * vpdpbusds 0x64(%eax), %zmm3, %zmm4 * vpdpbusds 0x123456(%ebx, %ecx, 8), %zmm5, %zmm6 */ .byte 0x62, 0xf2, 0x75, 0x08, 0x51, 0xd0 .byte 0x62, 0xf2, 0x5d, 0x28, 0x51, 0xeb .byte 0x62, 0xf2, 0x45, 0x48, 0x51, 0xc6 .byte 0x62, 0xf2, 0x6d, 0x09, 0x51, 0xd9 .byte 0x62, 0xf2, 0x55, 0x8a, 0x51, 0xf4 .byte 0x62, 0xf2, 0x7d, 0x2b, 0x51, 0xcf .byte 0x62, 0xf2, 0x65, 0xac, 0x51, 0xe2 .byte 0x62, 0xf2, 0x4d, 0x4d, 0x51, 0xfd .byte 0x62, 0xf2, 0x75, 0xce, 0x51, 0xd0 .byte 0x62, 0xf2, 0x65, 0x48, 0x51, 0xa0, 0x64, 0x00, 0x00, 0x00 .byte 0x62, 0xf2, 0x55, 0x48, 0x51, 0xb4, 0xcb, 0x56, 0x34, 0x12, 0x00 /* * vpdpwssd %xmm0, %xmm1, %xmm2 * vpdpwssd %ymm3, %ymm4, %ymm5 * vpdpwssd %zmm6, %zmm7, %zmm0 * vpdpwssd %xmm1, %xmm2, %xmm3{%k1} * vpdpwssd %xmm4, %xmm5, %xmm6{%k2}{z} * vpdpwssd %ymm7, %ymm0, %ymm1{%k3} * vpdpwssd %ymm2, %ymm3, %ymm4{%k4}{z} * vpdpwssd %zmm5, %zmm6, %zmm7{%k5} * vpdpwssd %zmm0, %zmm1, %zmm2{%k6}{z} * vpdpwssd 0x64(%eax), %zmm3, %zmm4 * vpdpwssd 0x123456(%ebx, %ecx, 8), %zmm5, %zmm6 */ .byte 0x62, 0xf2, 0x75, 0x08, 0x52, 0xd0 .byte 0x62, 0xf2, 0x5d, 0x28, 0x52, 0xeb .byte 0x62, 0xf2, 0x45, 0x48, 0x52, 0xc6 .byte 0x62, 0xf2, 0x6d, 0x09, 0x52, 0xd9 .byte 0x62, 0xf2, 0x55, 0x8a, 0x52, 0xf4 .byte 0x62, 0xf2, 0x7d, 0x2b, 0x52, 0xcf .byte 0x62, 0xf2, 0x65, 0xac, 0x52, 0xe2 .byte 0x62, 0xf2, 0x4d, 0x4d, 0x52, 0xfd .byte 0x62, 0xf2, 0x75, 0xce, 0x52, 0xd0 .byte 0x62, 0xf2, 0x65, 0x48, 0x52, 0xa0, 0x64, 0x00, 0x00, 0x00 .byte 0x62, 0xf2, 0x55, 0x48, 0x52, 0xb4, 0xcb, 0x56, 0x34, 0x12, 0x00 /* * vpdpwssds %xmm0, %xmm1, %xmm2 * vpdpwssds %ymm3, %ymm4, %ymm5 * vpdpwssds %zmm6, %zmm7, %zmm0 * vpdpwssds %xmm1, %xmm2, %xmm3{%k1} * vpdpwssds %xmm4, %xmm5, %xmm6{%k2}{z} * vpdpwssds %ymm7, %ymm0, %ymm1{%k3} * vpdpwssds %ymm2, %ymm3, %ymm4{%k4}{z} * vpdpwssds %zmm5, %zmm6, %zmm7{%k5} * vpdpwssds %zmm0, %zmm1, %zmm2{%k6}{z} * vpdpwssds 0x64(%eax), %zmm3, %zmm4 * vpdpwssds 0x123456(%ebx, %ecx, 8), %zmm5, %zmm6 */ .byte 0x62, 0xf2, 0x75, 0x08, 0x53, 0xd0 .byte 0x62, 0xf2, 0x5d, 0x28, 0x53, 0xeb .byte 0x62, 0xf2, 0x45, 0x48, 0x53, 0xc6 .byte 0x62, 0xf2, 0x6d, 0x09, 0x53, 0xd9 .byte 0x62, 0xf2, 0x55, 0x8a, 0x53, 0xf4 .byte 0x62, 0xf2, 0x7d, 0x2b, 0x53, 0xcf .byte 0x62, 0xf2, 0x65, 0xac, 0x53, 0xe2 .byte 0x62, 0xf2, 0x4d, 0x4d, 0x53, 0xfd .byte 0x62, 0xf2, 0x75, 0xce, 0x53, 0xd0 .byte 0x62, 0xf2, 0x65, 0x48, 0x53, 0xa0, 0x64, 0x00, 0x00, 0x00 .byte 0x62, 0xf2, 0x55, 0x48, 0x53, 0xb4, 0xcb, 0x56, 0x34, 0x12, 0x00 .size libdis_test, [.-libdis_test]