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 tests for AVX512 instructions 18 */ 19 20.text 21.align 16 22.globl libdis_test 23.type libdis_test, @function 24libdis_test: 25 vmovaps %xmm0, %xmm1 26 vmovaps %xmm2, %xmm3 27 vmovaps %xmm4, %xmm5 28 vmovaps %xmm6, %xmm7 29 vmovaps %xmm8, %xmm9 30 vmovaps %xmm10, %xmm11 31 vmovaps %xmm12, %xmm13 32 vmovaps %xmm14, %xmm15 33 vmovaps %xmm16, %xmm17 34 vmovaps %xmm18, %xmm19 35 vmovaps %xmm20, %xmm21 36 vmovaps %xmm22, %xmm23 37 vmovaps %xmm24, %xmm25 38 vmovaps %xmm26, %xmm27 39 vmovaps %xmm28, %xmm29 40 vmovaps %xmm30, %xmm31 41 42 vmovaps %ymm0, %ymm1 43 vmovaps %ymm2, %ymm3 44 vmovaps %ymm4, %ymm5 45 vmovaps %ymm6, %ymm7 46 vmovaps %ymm8, %ymm9 47 vmovaps %ymm10, %ymm11 48 vmovaps %ymm12, %ymm13 49 vmovaps %ymm14, %ymm15 50 vmovaps %ymm16, %ymm17 51 vmovaps %ymm18, %ymm19 52 vmovaps %ymm20, %ymm21 53 vmovaps %ymm22, %ymm23 54 vmovaps %ymm24, %ymm25 55 vmovaps %ymm26, %ymm27 56 vmovaps %ymm28, %ymm29 57 vmovaps %ymm30, %ymm31 58 59 vmovaps %zmm0, %zmm1 60 vmovaps %zmm2, %zmm3 61 vmovaps %zmm4, %zmm5 62 vmovaps %zmm6, %zmm7 63 vmovaps %zmm8, %zmm9 64 vmovaps %zmm10, %zmm11 65 vmovaps %zmm12, %zmm13 66 vmovaps %zmm14, %zmm15 67 vmovaps %zmm16, %zmm17 68 vmovaps %zmm18, %zmm19 69 vmovaps %zmm20, %zmm21 70 vmovaps %zmm22, %zmm23 71 vmovaps %zmm24, %zmm25 72 vmovaps %zmm26, %zmm27 73 vmovaps %zmm28, %zmm29 74 vmovaps %zmm30, %zmm31 75 76 vmovaps %zmm24, 0x8(%rsp) 77 vmovaps 0x8(%rsp), %zmm31 78 vmovaps %zmm13, %zmm17{%k1}{z} 79 vmovaps %zmm16, %zmm24{%k7} 80 vmovaps %zmm28, %zmm29 81 82 vmovaps %xmm16, %xmm25 83 vmovaps %xmm7, %xmm20{%k3}{z} 84 vmovaps %ymm1, %ymm16 85 vmovaps %ymm19, %ymm30{%k5} 86 87 vmovapd %zmm2, %zmm7 88 vmovapd %xmm16, %xmm25 89 vmovapd %ymm16, %ymm29 90 91 vmovups %zmm7, 0x20(%rbp) 92 vmovups 0x8(%rsp), %zmm17 93 vmovups (%rax), %zmm23 94 vmovups %xmm16, %xmm25 95 vmovups %ymm16, %ymm29 96 97 vmovupd (%r10), %zmm31{%k2} 98 vmovupd %zmm16, (%r11) 99 vmovupd %xmm16, %xmm25 100 vmovupd %ymm16, %ymm29 101 102 /* Test offset handling for both disp8*N and full. */ 103 vmovaps %zmm25, (%rsp) 104 vmovaps %zmm25, 0x20(%rsp) 105 vmovaps %zmm24, 0x40(%rsp) 106 vmovaps %zmm24, 0x60(%rsp) 107 vmovaps %zmm24, 0x80(%rsp) 108 vmovaps %zmm24, -0x80(%rsp) 109 vmovaps %zmm24, -0x20(%rsp) 110 111 vmovaps %ymm24, 0x10(%rsp) 112 vmovaps %ymm24, 0x20(%rsp) 113 vmovaps %ymm24, 0x40(%rsp) 114 115 vmovaps %xmm24, 0x8(%rsp) 116 vmovaps %xmm24, 0x10(%rsp) 117 vmovaps %xmm24, 0x20(%rsp) 118 119 vmovaps (%rsp), %zmm25 120 vmovaps 0x20(%rsp), %zmm25 121 vmovaps 0x40(%rsp), %zmm25 122 vmovaps 0x60(%rsp), %zmm25 123 vmovaps 0x80(%rsp), %zmm25 124 vmovaps -0x80(%rsp), %zmm25 125 vmovaps -0x20(%rsp), %zmm25 126 127 vmovaps 0x10(%rsp), %ymm25 128 vmovaps 0x20(%rsp), %ymm25 129 vmovaps 0x40(%rsp), %ymm25 130 131 vmovaps 0x8(%rsp), %xmm25 132 vmovaps 0x10(%rsp), %xmm25 133 vmovaps 0x20(%rsp), %xmm25 134 135 vmovdqa32 %zmm6, 0x100(%rsp) 136 vmovdqa32 %ymm26, 0x100(%rsp) 137 vmovdqa32 %xmm16, 0x100(%rsp) 138 vmovdqa32 (%rcx), %zmm6 139 vmovdqa32 (%rcx), %ymm26 140 vmovdqa32 (%rcx), %xmm16 141 142 vmovdqa64 %zmm16, 0x100(%rsp) 143 vmovdqa64 %ymm26, 0x100(%rsp) 144 vmovdqa64 %xmm16, 0x100(%rsp) 145 vmovdqa64 0x800(%rsp), %zmm16 146 vmovdqa64 0x800(%rsp), %ymm26 147 vmovdqa64 0x800(%rsp), %xmm16 148 149 vmovdqu8 %zmm20, (%rsp) 150 vmovdqu16 %zmm20, (%rsp) 151 vmovdqu32 %zmm20, (%rsp) 152 vmovdqu64 %zmm20, (%rsp) 153 vmovdqu8 (%rsp), %zmm20 154 vmovdqu16 (%rsp), %zmm20 155 vmovdqu32 (%rsp), %zmm20 156 vmovdqu64 (%rsp), %zmm20 157 158 vandnpd %xmm0, %xmm1, %xmm2{%k1}{z} 159 vandnpd (%rax), %xmm3, %xmm4{%k1}{z} 160 vandnpd 0x42(%rcx), %xmm5, %xmm6{%k1}{z} 161 vandnpd %ymm0, %ymm1, %ymm2{%k1}{z} 162 vandnpd (%rbx), %ymm3, %ymm4{%k1}{z} 163 vandnpd 0x42(%rdx), %ymm5, %ymm6{%k1}{z} 164 vandnpd %zmm0, %zmm1, %zmm2 165 vandnpd (%rbx), %zmm3, %zmm4 166 vandnpd 0x42(%rdx), %zmm5, %zmm6 167 168 vandnps %xmm0, %xmm1, %xmm2{%k1}{z} 169 vandnps (%rax), %xmm3, %xmm4{%k1}{z} 170 vandnps 0x42(%rcx), %xmm5, %xmm6{%k1}{z} 171 vandnps %ymm0, %ymm1, %ymm2{%k1} 172 vandnps (%rbx), %ymm3, %ymm4{%k1} 173 vandnps 0x42(%rdx), %ymm5, %ymm6{%k1} 174 vandnps %zmm0, %zmm1, %zmm2 175 vandnps (%rbx), %zmm3, %zmm4 176 vandnps 0x42(%rdx), %zmm5, %zmm6 177 178 vandpd %xmm0, %xmm1, %xmm2{%k1}{z} 179 vandpd (%rax), %xmm3, %xmm4{%k1}{z} 180 vandpd 0x42(%rcx), %xmm5, %xmm6{%k1}{z} 181 vandpd %ymm0, %ymm1, %ymm2{%k1} 182 vandpd (%rbx), %ymm3, %ymm4{%k1} 183 vandpd 0x42(%rdx), %ymm5, %ymm6{%k1} 184 vandpd %zmm0, %zmm1, %zmm2 185 vandpd (%rbx), %zmm3, %zmm4 186 vandpd 0x42(%rdx), %zmm5, %zmm6 187 188 vandps %xmm0, %xmm1, %xmm2{%k1}{z} 189 vandps (%rax), %xmm3, %xmm4{%k1}{z} 190 vandps 0x42(%rcx), %xmm5, %xmm6{%k1}{z} 191 vandps %ymm0, %ymm1, %ymm2{%k1} 192 vandps (%rbx), %ymm3, %ymm4{%k1} 193 vandps 0x42(%rdx), %ymm5, %ymm6{%k1} 194 vandps %zmm0, %zmm1, %zmm2 195 vandps (%rbx), %zmm3, %zmm4 196 vandps 0x42(%rdx), %zmm5, %zmm6 197 198 vpandd %xmm0, %xmm1, %xmm2 199 vpandd (%rax), %xmm3, %xmm4 200 vpandd 0x42(%rcx), %xmm5, %xmm6 201 vpandd %ymm0, %ymm1, %ymm2 202 vpandd (%rbx), %ymm3, %ymm4 203 vpandd 0x42(%rdx), %ymm5, %ymm6 204 vpandd %zmm0, %zmm1, %zmm2 205 vpandd (%rbx), %zmm3, %zmm4 206 vpandd 0x42(%rdx), %zmm5, %zmm6 207 208 vpandq %xmm0, %xmm1, %xmm2 209 vpandq (%rax), %xmm3, %xmm4 210 vpandq 0x42(%rcx), %xmm5, %xmm6 211 vpandq %ymm0, %ymm1, %ymm2 212 vpandq (%rbx), %ymm3, %ymm4 213 vpandq 0x42(%rdx), %ymm5, %ymm6 214 vpandq %zmm0, %zmm1, %zmm2 215 vpandq (%rbx), %zmm3, %zmm4 216 vpandq 0x42(%rdx), %zmm5, %zmm6 217 218 vpandnd %xmm0, %xmm1, %xmm2 219 vpandnd (%rax), %xmm3, %xmm4 220 vpandnd 0x42(%rcx), %xmm5, %xmm6 221 vpandnd %ymm0, %ymm1, %ymm2 222 vpandnd (%rbx), %ymm3, %ymm4 223 vpandnd 0x42(%rdx), %ymm5, %ymm6 224 vpandnd %zmm0, %zmm1, %zmm2 225 vpandnd (%rbx), %zmm3, %zmm4 226 vpandnd 0x42(%rdx), %zmm5, %zmm6 227 228 vpandnq %xmm0, %xmm1, %xmm2 229 vpandnq (%rax), %xmm3, %xmm4 230 vpandnq 0x42(%rcx), %xmm5, %xmm6 231 vpandnq %ymm0, %ymm1, %ymm2 232 vpandnq (%rbx), %ymm3, %ymm4 233 vpandnq 0x42(%rdx), %ymm5, %ymm6 234 vpandnq %zmm0, %zmm1, %zmm2 235 vpandnq (%rbx), %zmm3, %zmm4 236 vpandnq 0x42(%rdx), %zmm5, %zmm6 237 238 vorpd %xmm0, %xmm1, %xmm2{%k1}{z} 239 vorpd (%rax), %xmm3, %xmm4{%k1}{z} 240 vorpd 0x42(%rcx), %xmm5, %xmm6{%k1}{z} 241 vorpd %ymm0, %ymm1, %ymm2{%k1} 242 vorpd (%rbx), %ymm3, %ymm4{%k1} 243 vorpd 0x42(%rdx), %ymm5, %ymm6{%k1} 244 vorpd %zmm0, %zmm1, %zmm2 245 vorpd (%rax), %zmm3, %zmm4 246 vorpd 0x42(%rcx), %zmm5, %zmm6 247 248 vorps %xmm0, %xmm1, %xmm2{%k1}{z} 249 vorps (%rax), %xmm3, %xmm4{%k1}{z} 250 vorps 0x42(%rcx), %xmm5, %xmm6{%k1}{z} 251 vorps %ymm0, %ymm1, %ymm2{%k1} 252 vorps (%rbx), %ymm3, %ymm4{%k1} 253 vorps 0x42(%rdx), %ymm5, %ymm6{%k1} 254 vorps %zmm0, %zmm1, %zmm2 255 vorps (%rax), %zmm3, %zmm4 256 vorps 0x42(%rcx), %zmm5, %zmm6 257 258 vpord %xmm0, %xmm1, %xmm2 259 vpord (%rax), %xmm3, %xmm4 260 vpord 0x42(%rcx), %xmm5, %xmm6 261 vpord %ymm0, %ymm1, %ymm2 262 vpord (%rbx), %ymm3, %ymm4 263 vpord 0x42(%rdx), %ymm5, %ymm6 264 vpord %zmm0, %zmm1, %zmm2 265 vpord (%rax), %zmm3, %zmm4 266 vpord 0x42(%rcx), %zmm5, %zmm6 267 268 vporq %xmm0, %xmm1, %xmm2 269 vporq (%rax), %xmm3, %xmm4 270 vporq 0x42(%rcx), %xmm5, %xmm6 271 vporq %ymm0, %ymm1, %ymm2 272 vporq (%rbx), %ymm3, %ymm4 273 vporq 0x42(%rdx), %ymm5, %ymm6 274 vporq %zmm0, %zmm1, %zmm2 275 vporq (%rax), %zmm3, %zmm4 276 vporq 0x42(%rcx), %zmm5, %zmm6 277 278 vpxord %xmm0, %xmm1, %xmm2 279 vpxord (%rax), %xmm3, %xmm4 280 vpxord 0x42(%rcx), %xmm5, %xmm6 281 vpxord %ymm0, %ymm1, %ymm2 282 vpxord (%rbx), %ymm3, %ymm4 283 vpxord 0x42(%rdx), %ymm5, %ymm6 284 vpxord %zmm0, %zmm1, %zmm2 285 vpxord (%rax), %zmm3, %zmm4 286 vpxord 0x42(%rcx), %zmm5, %zmm6 287 288 vpxorq %xmm0, %xmm1, %xmm2 289 vpxorq (%rax), %xmm3, %xmm4 290 vpxorq 0x42(%rcx), %xmm5, %xmm6 291 vpxorq %ymm0, %ymm1, %ymm2 292 vpxorq (%rbx), %ymm3, %ymm4 293 vpxorq 0x42(%rdx), %ymm5, %ymm6 294 vpxorq %zmm0, %zmm1, %zmm2 295 vpxorq (%rax), %zmm3, %zmm4 296 vpxorq 0x42(%rcx), %zmm5, %zmm6 297 298 vxorpd %xmm0, %xmm1, %xmm2{%k1}{z} 299 vxorpd (%rax), %xmm3, %xmm4{%k1}{z} 300 vxorpd 0x42(%rcx), %xmm5, %xmm6{%k1}{z} 301 vxorpd %ymm0, %ymm1, %ymm2{%k1} 302 vxorpd (%rbx), %ymm3, %ymm4{%k1} 303 vxorpd 0x42(%rdx), %ymm5, %ymm6{%k1} 304 vxorpd %zmm0, %zmm1, %zmm2 305 vxorpd (%rbx), %zmm3, %zmm4 306 vxorpd 0x42(%rdx), %zmm5, %zmm6 307 308 vxorps %xmm0, %xmm1, %xmm2{%k1}{z} 309 vxorps (%rax), %xmm3, %xmm4{%k1}{z} 310 vxorps 0x42(%rcx), %xmm5, %xmm6{%k1}{z} 311 vxorps %ymm0, %ymm1, %ymm2{%k1} 312 vxorps (%rbx), %ymm3, %ymm4{%k1} 313 vxorps 0x42(%rdx), %ymm5, %ymm6{%k1} 314 vxorps %zmm0, %zmm1, %zmm2 315 vxorps (%rbx), %zmm3, %zmm4 316 vxorps 0x42(%rdx), %zmm5, %zmm6 317 318.size libdis_test, [.-libdis_test] 319