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 * AVX-512 CD (Conflict Detection) instructions 18 */ 19 20.text 21.align 16 22.globl libdis_test 23.type libdis_test, @function 24libdis_test: 25 vpconflictd %xmm0, %xmm1 26 vpconflictd %xmm2, %xmm3{%k1} 27 vpconflictd %xmm4, %xmm5{%k2}{z} 28 vpconflictd (%eax), %xmm6 29 vpconflictd 0x167(%eax), %xmm6{%k3} 30 vpconflictd -0x23(%eax,%ebx,4), %xmm7{%k4} 31 vpconflictd (%ecx){1to4}, %xmm5 32 vpconflictd 0x10(%edx){1to4}, %xmm3{%k5} 33 vpconflictd 0x88(%ecx){1to4}, %xmm3{%k5}{z} 34 35 vpconflictd %ymm0, %ymm1 36 vpconflictd %ymm2, %ymm3{%k1} 37 vpconflictd %ymm4, %ymm5{%k2}{z} 38 vpconflictd (%eax), %ymm6 39 vpconflictd 0x167(%eax), %ymm6{%k3} 40 vpconflictd -0x23(%eax,%ebx,4), %ymm7{%k4} 41 vpconflictd (%ecx){1to8}, %ymm5 42 vpconflictd 0x10(%edx){1to8}, %ymm3{%k5} 43 vpconflictd 0x88(%ecx){1to8}, %ymm3{%k5}{z} 44 45 vpconflictd %zmm0, %zmm1 46 vpconflictd %zmm2, %zmm3{%k1} 47 vpconflictd %zmm4, %zmm5{%k2}{z} 48 vpconflictd (%eax), %zmm6 49 vpconflictd 0x167(%eax), %zmm6{%k3} 50 vpconflictd -0x23(%eax,%ebx,4), %zmm7{%k4} 51 vpconflictd (%ecx){1to16}, %zmm5 52 vpconflictd 0x10(%edx){1to16}, %zmm3{%k5} 53 vpconflictd 0x88(%ecx){1to16}, %zmm3{%k5}{z} 54 55 vpconflictq %xmm0, %xmm1 56 vpconflictq %xmm2, %xmm3{%k1} 57 vpconflictq %xmm4, %xmm5{%k2}{z} 58 vpconflictq (%eax), %xmm6 59 vpconflictq 0x167(%eax), %xmm6{%k3} 60 vpconflictq -0x23(%eax,%ebx,4), %xmm7{%k4} 61 vpconflictq (%ecx){1to2}, %xmm5 62 vpconflictq 0x10(%edx){1to2}, %xmm3{%k5} 63 vpconflictq 0x88(%ecx){1to2}, %xmm3{%k5}{z} 64 65 vpconflictq %ymm0, %ymm1 66 vpconflictq %ymm2, %ymm3{%k1} 67 vpconflictq %ymm4, %ymm5{%k2}{z} 68 vpconflictq (%eax), %ymm6 69 vpconflictq 0x167(%eax), %ymm6{%k3} 70 vpconflictq -0x23(%eax,%ebx,4), %ymm7{%k4} 71 vpconflictq (%ecx){1to4}, %ymm5 72 vpconflictq 0x10(%edx){1to4}, %ymm3{%k5} 73 vpconflictq 0x88(%ecx){1to4}, %ymm3{%k5}{z} 74 75 vpconflictq %zmm0, %zmm1 76 vpconflictq %zmm2, %zmm3{%k1} 77 vpconflictq %zmm4, %zmm5{%k2}{z} 78 vpconflictq (%eax), %zmm6 79 vpconflictq 0x167(%eax), %zmm6{%k3} 80 vpconflictq -0x23(%eax,%ebx,4), %zmm7{%k4} 81 vpconflictq (%ecx){1to8}, %zmm5 82 vpconflictq 0x10(%edx){1to8}, %zmm3{%k5} 83 vpconflictq 0x88(%ecx){1to8}, %zmm3{%k5}{z} 84 85 vplzcntd %xmm0, %xmm1 86 vplzcntd %xmm2, %xmm3{%k1} 87 vplzcntd %xmm4, %xmm5{%k2}{z} 88 vplzcntd (%eax), %xmm6 89 vplzcntd 0x167(%eax), %xmm6{%k3} 90 vplzcntd -0x23(%eax,%ebx,4), %xmm7{%k4} 91 vplzcntd (%ecx){1to4}, %xmm5 92 vplzcntd 0x10(%edx){1to4}, %xmm3{%k5} 93 vplzcntd 0x88(%ecx){1to4}, %xmm3{%k5}{z} 94 95 vplzcntd %ymm0, %ymm1 96 vplzcntd %ymm2, %ymm3{%k1} 97 vplzcntd %ymm4, %ymm5{%k2}{z} 98 vplzcntd (%eax), %ymm6 99 vplzcntd 0x167(%eax), %ymm6{%k3} 100 vplzcntd -0x23(%eax,%ebx,4), %ymm7{%k4} 101 vplzcntd (%ecx){1to8}, %ymm5 102 vplzcntd 0x10(%edx){1to8}, %ymm3{%k5} 103 vplzcntd 0x88(%ecx){1to8}, %ymm3{%k5}{z} 104 105 vplzcntd %zmm0, %zmm1 106 vplzcntd %zmm2, %zmm3{%k1} 107 vplzcntd %zmm4, %zmm5{%k2}{z} 108 vplzcntd (%eax), %zmm6 109 vplzcntd 0x167(%eax), %zmm6{%k3} 110 vplzcntd -0x23(%eax,%ebx,4), %zmm7{%k4} 111 vplzcntd (%ecx){1to16}, %zmm5 112 vplzcntd 0x10(%edx){1to16}, %zmm3{%k5} 113 vplzcntd 0x88(%ecx){1to16}, %zmm3{%k5}{z} 114 115 vplzcntq %xmm0, %xmm1 116 vplzcntq %xmm2, %xmm3{%k1} 117 vplzcntq %xmm4, %xmm5{%k2}{z} 118 vplzcntq (%eax), %xmm6 119 vplzcntq 0x167(%eax), %xmm6{%k3} 120 vplzcntq -0x23(%eax,%ebx,4), %xmm7{%k4} 121 vplzcntq (%ecx){1to2}, %xmm5 122 vplzcntq 0x10(%edx){1to2}, %xmm3{%k5} 123 vplzcntq 0x88(%ecx){1to2}, %xmm3{%k5}{z} 124 125 vplzcntq %ymm0, %ymm1 126 vplzcntq %ymm2, %ymm3{%k1} 127 vplzcntq %ymm4, %ymm5{%k2}{z} 128 vplzcntq (%eax), %ymm6 129 vplzcntq 0x167(%eax), %ymm6{%k3} 130 vplzcntq -0x23(%eax,%ebx,4), %ymm7{%k4} 131 vplzcntq (%ecx){1to4}, %ymm5 132 vplzcntq 0x10(%edx){1to4}, %ymm3{%k5} 133 vplzcntq 0x88(%ecx){1to4}, %ymm3{%k5}{z} 134 135 vplzcntq %zmm0, %zmm1 136 vplzcntq %zmm2, %zmm3{%k1} 137 vplzcntq %zmm4, %zmm5{%k2}{z} 138 vplzcntq (%eax), %zmm6 139 vplzcntq 0x167(%eax), %zmm6{%k3} 140 vplzcntq -0x23(%eax,%ebx,4), %zmm7{%k4} 141 vplzcntq (%ecx){1to8}, %zmm5 142 vplzcntq 0x10(%edx){1to8}, %zmm3{%k5} 143 vplzcntq 0x88(%ecx){1to8}, %zmm3{%k5}{z} 144 145 vpbroadcastmb2q %k1, %xmm1 146 vpbroadcastmb2q %k2, %xmm4 147 vpbroadcastmb2q %k3, %ymm2 148 vpbroadcastmb2q %k4, %ymm5 149 vpbroadcastmb2q %k5, %zmm3 150 vpbroadcastmb2q %k6, %zmm6 151 152 vpbroadcastmw2d %k1, %xmm1 153 vpbroadcastmw2d %k2, %xmm4 154 vpbroadcastmw2d %k3, %ymm2 155 vpbroadcastmw2d %k4, %ymm5 156 vpbroadcastmw2d %k5, %zmm3 157 vpbroadcastmw2d %k6, %zmm6 158.size libdis_test, [.-libdis_test] 159