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 2019 Joyent, Inc. 14 */ 15 16/* 17 * Basic test for AVX512 instructions 18 */ 19 20.text 21.align 16 22.globl libdis_test 23.type libdis_test, @function 24libdis_test: 25 /* bound is not AVX512, but shares the 0x62 opcode on 32-bit. */ 26 bound %eax, (%ebx) 27 28 vmovaps %xmm0, %xmm1 29 vmovaps %xmm2, %xmm3 30 vmovaps %xmm4, %xmm5 31 vmovaps %xmm6, %xmm7 32 33 vmovaps %ymm0, %ymm1 34 vmovaps %ymm2, %ymm3 35 vmovaps %ymm4, %ymm5 36 vmovaps %ymm6, %ymm7 37 38 vmovaps %zmm0, %zmm1 39 vmovaps %zmm2, %zmm3 40 vmovaps %zmm4, %zmm5 41 vmovaps %zmm6, %zmm7 42 43 vmovaps %zmm4, 0x8(%esp) 44 vmovaps 0x8(%esp), %zmm3 45 vmovaps %zmm1, %zmm7{%k1}{z} 46 vmovaps %zmm6, %zmm4{%k7} 47 vmovaps %zmm2, %zmm3 48 49 vmovaps %xmm7, %xmm2{%k3}{z} 50 vmovaps %ymm1, %ymm3{%k5} 51 52 vmovapd %zmm2, %zmm7 53 54 vmovups %zmm7, 0x20(%ebp) 55 vmovups 0x8(%esp), %zmm7 56 vmovups (%eax), %zmm3 57 58 vmovupd (%esp), %zmm1{%k2} 59 vmovupd %zmm6, (%esp) 60 61 /* Test offset handling for both disp8*N and full. */ 62 vmovaps %zmm5, (%esp) 63 vmovaps %zmm5, 0x20(%esp) 64 vmovaps %zmm4, 0x40(%esp) 65 vmovaps %zmm4, 0x60(%esp) 66 vmovaps %zmm4, 0x80(%esp) 67 vmovaps %zmm4, -0x80(%esp) 68 vmovaps %zmm4, -0x20(%esp) 69 70 vmovaps (%esp), %zmm5 71 vmovaps 0x20(%esp), %zmm5 72 vmovaps 0x40(%esp), %zmm5 73 vmovaps 0x60(%esp), %zmm5 74 vmovaps 0x80(%esp), %zmm5 75 vmovaps -0x80(%esp), %zmm5 76 vmovaps -0x20(%esp), %zmm5 77 78 vmovdqa32 %zmm6, 0x100(%esp) 79 vmovdqa32 %ymm6, 0x100(%esp) 80 vmovdqa32 %xmm6, 0x100(%esp) 81 vmovdqa32 (%eax), %zmm6 82 vmovdqa32 (%eax), %ymm6 83 vmovdqa32 (%eax), %xmm6 84 85 vmovdqa64 %zmm6, 0x100(%esp) 86 vmovdqa64 %ymm6, 0x100(%esp) 87 vmovdqa64 %xmm6, 0x100(%esp) 88 vmovdqa64 0x800(%esp), %zmm6 89 vmovdqa64 0x800(%esp), %ymm6 90 vmovdqa64 0x800(%esp), %xmm6 91 92 vmovdqu8 %zmm0, (%esp) 93 vmovdqu16 %zmm0, (%esp) 94 vmovdqu32 %zmm0, (%esp) 95 vmovdqu64 %zmm0, (%esp) 96 vmovdqu8 (%esp), %zmm0 97 vmovdqu16 (%esp), %zmm0 98 vmovdqu32 (%esp), %zmm0 99 vmovdqu64 (%esp), %zmm0 100 101 vandnpd %xmm0, %xmm1, %xmm2{%k1}{z} 102 vandnpd (%eax), %xmm3, %xmm4{%k1}{z} 103 vandnpd 0x42(%ecx), %xmm5, %xmm6{%k1}{z} 104 vandnpd %ymm0, %ymm1, %ymm2{%k1} 105 vandnpd (%ebx), %ymm3, %ymm4{%k1} 106 vandnpd 0x42(%edx), %ymm5, %ymm6{%k1} 107 vandnpd %zmm0, %zmm1, %zmm2 108 vandnpd (%ebx), %zmm3, %zmm4 109 vandnpd 0x42(%edx), %zmm5, %zmm6 110 111 vandnps %xmm0, %xmm1, %xmm2{%k1}{z} 112 vandnps (%eax), %xmm3, %xmm4{%k1}{z} 113 vandnps 0x42(%ecx), %xmm5, %xmm6{%k1}{z} 114 vandnps %ymm0, %ymm1, %ymm2{%k1} 115 vandnps (%ebx), %ymm3, %ymm4{%k1} 116 vandnps 0x42(%edx), %ymm5, %ymm6{%k1} 117 vandnps %zmm0, %zmm1, %zmm2 118 vandnps (%ebx), %zmm3, %zmm4 119 vandnps 0x42(%edx), %zmm5, %zmm6 120 121 vandpd %xmm0, %xmm1, %xmm2{%k1}{z} 122 vandpd (%eax), %xmm3, %xmm4{%k1}{z} 123 vandpd 0x42(%ecx), %xmm5, %xmm6{%k1}{z} 124 vandpd %ymm0, %ymm1, %ymm2{%k1} 125 vandpd (%ebx), %ymm3, %ymm4{%k1} 126 vandpd 0x42(%edx), %ymm5, %ymm6{%k1} 127 vandpd %zmm0, %zmm1, %zmm2 128 vandpd (%ebx), %zmm3, %zmm4 129 vandpd 0x42(%edx), %zmm5, %zmm6 130 131 vandps %xmm0, %xmm1, %xmm2{%k1}{z} 132 vandps (%eax), %xmm3, %xmm4{%k1}{z} 133 vandps 0x42(%ecx), %xmm5, %xmm6{%k1}{z} 134 vandps %ymm0, %ymm1, %ymm2{%k1} 135 vandps (%ebx), %ymm3, %ymm4{%k1} 136 vandps 0x42(%edx), %ymm5, %ymm6{%k1} 137 vandps %zmm0, %zmm1, %zmm2 138 vandps (%ebx), %zmm3, %zmm4 139 vandps 0x42(%edx), %zmm5, %zmm6 140 141 vpandd %xmm0, %xmm1, %xmm2 142 vpandd (%eax), %xmm3, %xmm4 143 vpandd 0x42(%ecx), %xmm5, %xmm6 144 vpandd %ymm0, %ymm1, %ymm2 145 vpandd (%ebx), %ymm3, %ymm4 146 vpandd 0x42(%edx), %ymm5, %ymm6 147 vpandd %zmm0, %zmm1, %zmm2 148 vpandd (%ebx), %zmm3, %zmm4 149 vpandd 0x42(%edx), %zmm5, %zmm6 150 151 vpandq %xmm0, %xmm1, %xmm2 152 vpandq (%eax), %xmm3, %xmm4 153 vpandq 0x42(%ecx), %xmm5, %xmm6 154 vpandq %ymm0, %ymm1, %ymm2 155 vpandq (%ebx), %ymm3, %ymm4 156 vpandq 0x42(%edx), %ymm5, %ymm6 157 vpandq %zmm0, %zmm1, %zmm2 158 vpandq (%ebx), %zmm3, %zmm4 159 vpandq 0x42(%edx), %zmm5, %zmm6 160 161 vpandnd %xmm0, %xmm1, %xmm2 162 vpandnd (%eax), %xmm3, %xmm4 163 vpandnd 0x42(%ecx), %xmm5, %xmm6 164 vpandnd %ymm0, %ymm1, %ymm2 165 vpandnd (%ebx), %ymm3, %ymm4 166 vpandnd 0x42(%edx), %ymm5, %ymm6 167 vpandnd %zmm0, %zmm1, %zmm2 168 vpandnd (%ebx), %zmm3, %zmm4 169 vpandnd 0x42(%edx), %zmm5, %zmm6 170 171 vpandnq %xmm0, %xmm1, %xmm2 172 vpandnq (%eax), %xmm3, %xmm4 173 vpandnq 0x42(%ecx), %xmm5, %xmm6 174 vpandnq %ymm0, %ymm1, %ymm2 175 vpandnq (%ebx), %ymm3, %ymm4 176 vpandnq 0x42(%edx), %ymm5, %ymm6 177 vpandnq %zmm0, %zmm1, %zmm2 178 vpandnq (%ebx), %zmm3, %zmm4 179 vpandnq 0x42(%edx), %zmm5, %zmm6 180 181 vorpd %xmm0, %xmm1, %xmm2{%k1}{z} 182 vorpd (%eax), %xmm3, %xmm4{%k1}{z} 183 vorpd 0x42(%ecx), %xmm5, %xmm6{%k1}{z} 184 vorpd %ymm0, %ymm1, %ymm2{%k1} 185 vorpd (%ebx), %ymm3, %ymm4{%k1} 186 vorpd 0x42(%edx), %ymm5, %ymm6{%k1} 187 vorpd %zmm0, %zmm1, %zmm2 188 vorpd (%eax), %zmm3, %zmm4 189 vorpd 0x42(%ecx), %zmm5, %zmm6 190 191 vorps %xmm0, %xmm1, %xmm2{%k1}{z} 192 vorps (%eax), %xmm3, %xmm4{%k1}{z} 193 vorps 0x42(%ecx), %xmm5, %xmm6{%k1}{z} 194 vorps %ymm0, %ymm1, %ymm2{%k1} 195 vorps (%ebx), %ymm3, %ymm4{%k1} 196 vorps 0x42(%edx), %ymm5, %ymm6{%k1} 197 vorps %zmm0, %zmm1, %zmm2 198 vorps (%eax), %zmm3, %zmm4 199 vorps 0x42(%ecx), %zmm5, %zmm6 200 201 vpord %xmm0, %xmm1, %xmm2 202 vpord (%eax), %xmm3, %xmm4 203 vpord 0x42(%ecx), %xmm5, %xmm6 204 vpord %ymm0, %ymm1, %ymm2 205 vpord (%ebx), %ymm3, %ymm4 206 vpord 0x42(%edx), %ymm5, %ymm6 207 vpord %zmm0, %zmm1, %zmm2 208 vpord (%eax), %zmm3, %zmm4 209 vpord 0x42(%ecx), %zmm5, %zmm6 210 211 vporq %xmm0, %xmm1, %xmm2 212 vporq (%eax), %xmm3, %xmm4 213 vporq 0x42(%ecx), %xmm5, %xmm6 214 vporq %ymm0, %ymm1, %ymm2 215 vporq (%ebx), %ymm3, %ymm4 216 vporq 0x42(%edx), %ymm5, %ymm6 217 vporq %zmm0, %zmm1, %zmm2 218 vporq (%eax), %zmm3, %zmm4 219 vporq 0x42(%ecx), %zmm5, %zmm6 220 221 vpxord %xmm0, %xmm1, %xmm2 222 vpxord (%eax), %xmm3, %xmm4 223 vpxord 0x42(%ecx), %xmm5, %xmm6 224 vpxord %ymm0, %ymm1, %ymm2 225 vpxord (%ebx), %ymm3, %ymm4 226 vpxord 0x42(%edx), %ymm5, %ymm6 227 vpxord %zmm0, %zmm1, %zmm2 228 vpxord (%eax), %zmm3, %zmm4 229 vpxord 0x42(%ecx), %zmm5, %zmm6 230 231 vpxorq %xmm0, %xmm1, %xmm2 232 vpxorq (%eax), %xmm3, %xmm4 233 vpxorq 0x42(%ecx), %xmm5, %xmm6 234 vpxorq %ymm0, %ymm1, %ymm2 235 vpxorq (%ebx), %ymm3, %ymm4 236 vpxorq 0x42(%edx), %ymm5, %ymm6 237 vpxorq %zmm0, %zmm1, %zmm2 238 vpxorq (%eax), %zmm3, %zmm4 239 vpxorq 0x42(%ecx), %zmm5, %zmm6 240 241 vxorpd %xmm0, %xmm1, %xmm2{%k1}{z} 242 vxorpd (%eax), %xmm3, %xmm4{%k1}{z} 243 vxorpd 0x42(%ecx), %xmm5, %xmm6{%k1}{z} 244 vxorpd %ymm0, %ymm1, %ymm2{%k1} 245 vxorpd (%ebx), %ymm3, %ymm4{%k1} 246 vxorpd 0x42(%edx), %ymm5, %ymm6{%k1} 247 vxorpd %zmm0, %zmm1, %zmm2 248 vxorpd (%ebx), %zmm3, %zmm4 249 vxorpd 0x42(%edx), %zmm5, %zmm6 250 251 vxorps %xmm0, %xmm1, %xmm2{%k1}{z} 252 vxorps (%eax), %xmm3, %xmm4{%k1}{z} 253 vxorps 0x42(%ecx), %xmm5, %xmm6{%k1}{z} 254 vxorps %ymm0, %ymm1, %ymm2{%k1} 255 vxorps (%ebx), %ymm3, %ymm4{%k1} 256 vxorps 0x42(%edx), %ymm5, %ymm6{%k1} 257 vxorps %zmm0, %zmm1, %zmm2 258 vxorps (%ebx), %zmm3, %zmm4 259 vxorps 0x42(%edx), %zmm5, %zmm6 260.size libdis_test, [.-libdis_test] 261