1# Check 64bit AVX512{VBMI,VL} instructions 2 3 .allow_index_reg 4 .text 5_start: 6 vpermb %xmm28, %xmm29, %xmm30 # AVX512{VBMI,VL} 7 vpermb %xmm28, %xmm29, %xmm30{%k7} # AVX512{VBMI,VL} 8 vpermb %xmm28, %xmm29, %xmm30{%k7}{z} # AVX512{VBMI,VL} 9 vpermb (%rcx), %xmm29, %xmm30 # AVX512{VBMI,VL} 10 vpermb 0x123(%rax,%r14,8), %xmm29, %xmm30 # AVX512{VBMI,VL} 11 vpermb 2032(%rdx), %xmm29, %xmm30 # AVX512{VBMI,VL} Disp8 12 vpermb 2048(%rdx), %xmm29, %xmm30 # AVX512{VBMI,VL} 13 vpermb -2048(%rdx), %xmm29, %xmm30 # AVX512{VBMI,VL} Disp8 14 vpermb -2064(%rdx), %xmm29, %xmm30 # AVX512{VBMI,VL} 15 vpermb %ymm28, %ymm29, %ymm30 # AVX512{VBMI,VL} 16 vpermb %ymm28, %ymm29, %ymm30{%k7} # AVX512{VBMI,VL} 17 vpermb %ymm28, %ymm29, %ymm30{%k7}{z} # AVX512{VBMI,VL} 18 vpermb (%rcx), %ymm29, %ymm30 # AVX512{VBMI,VL} 19 vpermb 0x123(%rax,%r14,8), %ymm29, %ymm30 # AVX512{VBMI,VL} 20 vpermb 4064(%rdx), %ymm29, %ymm30 # AVX512{VBMI,VL} Disp8 21 vpermb 4096(%rdx), %ymm29, %ymm30 # AVX512{VBMI,VL} 22 vpermb -4096(%rdx), %ymm29, %ymm30 # AVX512{VBMI,VL} Disp8 23 vpermb -4128(%rdx), %ymm29, %ymm30 # AVX512{VBMI,VL} 24 vpermi2b %xmm28, %xmm29, %xmm30 # AVX512{VBMI,VL} 25 vpermi2b %xmm28, %xmm29, %xmm30{%k7} # AVX512{VBMI,VL} 26 vpermi2b %xmm28, %xmm29, %xmm30{%k7}{z} # AVX512{VBMI,VL} 27 vpermi2b (%rcx), %xmm29, %xmm30 # AVX512{VBMI,VL} 28 vpermi2b 0x123(%rax,%r14,8), %xmm29, %xmm30 # AVX512{VBMI,VL} 29 vpermi2b 2032(%rdx), %xmm29, %xmm30 # AVX512{VBMI,VL} Disp8 30 vpermi2b 2048(%rdx), %xmm29, %xmm30 # AVX512{VBMI,VL} 31 vpermi2b -2048(%rdx), %xmm29, %xmm30 # AVX512{VBMI,VL} Disp8 32 vpermi2b -2064(%rdx), %xmm29, %xmm30 # AVX512{VBMI,VL} 33 vpermi2b %ymm28, %ymm29, %ymm30 # AVX512{VBMI,VL} 34 vpermi2b %ymm28, %ymm29, %ymm30{%k7} # AVX512{VBMI,VL} 35 vpermi2b %ymm28, %ymm29, %ymm30{%k7}{z} # AVX512{VBMI,VL} 36 vpermi2b (%rcx), %ymm29, %ymm30 # AVX512{VBMI,VL} 37 vpermi2b 0x123(%rax,%r14,8), %ymm29, %ymm30 # AVX512{VBMI,VL} 38 vpermi2b 4064(%rdx), %ymm29, %ymm30 # AVX512{VBMI,VL} Disp8 39 vpermi2b 4096(%rdx), %ymm29, %ymm30 # AVX512{VBMI,VL} 40 vpermi2b -4096(%rdx), %ymm29, %ymm30 # AVX512{VBMI,VL} Disp8 41 vpermi2b -4128(%rdx), %ymm29, %ymm30 # AVX512{VBMI,VL} 42 vpermt2b %xmm28, %xmm29, %xmm30 # AVX512{VBMI,VL} 43 vpermt2b %xmm28, %xmm29, %xmm30{%k7} # AVX512{VBMI,VL} 44 vpermt2b %xmm28, %xmm29, %xmm30{%k7}{z} # AVX512{VBMI,VL} 45 vpermt2b (%rcx), %xmm29, %xmm30 # AVX512{VBMI,VL} 46 vpermt2b 0x123(%rax,%r14,8), %xmm29, %xmm30 # AVX512{VBMI,VL} 47 vpermt2b 2032(%rdx), %xmm29, %xmm30 # AVX512{VBMI,VL} Disp8 48 vpermt2b 2048(%rdx), %xmm29, %xmm30 # AVX512{VBMI,VL} 49 vpermt2b -2048(%rdx), %xmm29, %xmm30 # AVX512{VBMI,VL} Disp8 50 vpermt2b -2064(%rdx), %xmm29, %xmm30 # AVX512{VBMI,VL} 51 vpermt2b %ymm28, %ymm29, %ymm30 # AVX512{VBMI,VL} 52 vpermt2b %ymm28, %ymm29, %ymm30{%k7} # AVX512{VBMI,VL} 53 vpermt2b %ymm28, %ymm29, %ymm30{%k7}{z} # AVX512{VBMI,VL} 54 vpermt2b (%rcx), %ymm29, %ymm30 # AVX512{VBMI,VL} 55 vpermt2b 0x123(%rax,%r14,8), %ymm29, %ymm30 # AVX512{VBMI,VL} 56 vpermt2b 4064(%rdx), %ymm29, %ymm30 # AVX512{VBMI,VL} Disp8 57 vpermt2b 4096(%rdx), %ymm29, %ymm30 # AVX512{VBMI,VL} 58 vpermt2b -4096(%rdx), %ymm29, %ymm30 # AVX512{VBMI,VL} Disp8 59 vpermt2b -4128(%rdx), %ymm29, %ymm30 # AVX512{VBMI,VL} 60 vpmultishiftqb %xmm28, %xmm29, %xmm30 # AVX512{VBMI,VL} 61 vpmultishiftqb %xmm28, %xmm29, %xmm30{%k7} # AVX512{VBMI,VL} 62 vpmultishiftqb %xmm28, %xmm29, %xmm30{%k7}{z} # AVX512{VBMI,VL} 63 vpmultishiftqb (%rcx), %xmm29, %xmm30 # AVX512{VBMI,VL} 64 vpmultishiftqb 0x123(%rax,%r14,8), %xmm29, %xmm30 # AVX512{VBMI,VL} 65 vpmultishiftqb (%rcx){1to2}, %xmm29, %xmm30 # AVX512{VBMI,VL} 66 vpmultishiftqb 2032(%rdx), %xmm29, %xmm30 # AVX512{VBMI,VL} Disp8 67 vpmultishiftqb 2048(%rdx), %xmm29, %xmm30 # AVX512{VBMI,VL} 68 vpmultishiftqb -2048(%rdx), %xmm29, %xmm30 # AVX512{VBMI,VL} Disp8 69 vpmultishiftqb -2064(%rdx), %xmm29, %xmm30 # AVX512{VBMI,VL} 70 vpmultishiftqb 1016(%rdx){1to2}, %xmm29, %xmm30 # AVX512{VBMI,VL} Disp8 71 vpmultishiftqb 1024(%rdx){1to2}, %xmm29, %xmm30 # AVX512{VBMI,VL} 72 vpmultishiftqb -1024(%rdx){1to2}, %xmm29, %xmm30 # AVX512{VBMI,VL} Disp8 73 vpmultishiftqb -1032(%rdx){1to2}, %xmm29, %xmm30 # AVX512{VBMI,VL} 74 vpmultishiftqb %ymm28, %ymm29, %ymm30 # AVX512{VBMI,VL} 75 vpmultishiftqb %ymm28, %ymm29, %ymm30{%k7} # AVX512{VBMI,VL} 76 vpmultishiftqb %ymm28, %ymm29, %ymm30{%k7}{z} # AVX512{VBMI,VL} 77 vpmultishiftqb (%rcx), %ymm29, %ymm30 # AVX512{VBMI,VL} 78 vpmultishiftqb 0x123(%rax,%r14,8), %ymm29, %ymm30 # AVX512{VBMI,VL} 79 vpmultishiftqb (%rcx){1to4}, %ymm29, %ymm30 # AVX512{VBMI,VL} 80 vpmultishiftqb 4064(%rdx), %ymm29, %ymm30 # AVX512{VBMI,VL} Disp8 81 vpmultishiftqb 4096(%rdx), %ymm29, %ymm30 # AVX512{VBMI,VL} 82 vpmultishiftqb -4096(%rdx), %ymm29, %ymm30 # AVX512{VBMI,VL} Disp8 83 vpmultishiftqb -4128(%rdx), %ymm29, %ymm30 # AVX512{VBMI,VL} 84 vpmultishiftqb 1016(%rdx){1to4}, %ymm29, %ymm30 # AVX512{VBMI,VL} Disp8 85 vpmultishiftqb 1024(%rdx){1to4}, %ymm29, %ymm30 # AVX512{VBMI,VL} 86 vpmultishiftqb -1024(%rdx){1to4}, %ymm29, %ymm30 # AVX512{VBMI,VL} Disp8 87 vpmultishiftqb -1032(%rdx){1to4}, %ymm29, %ymm30 # AVX512{VBMI,VL} 88 89 .intel_syntax noprefix 90 vpermb xmm30, xmm29, xmm28 # AVX512{VBMI,VL} 91 vpermb xmm30{k7}, xmm29, xmm28 # AVX512{VBMI,VL} 92 vpermb xmm30{k7}{z}, xmm29, xmm28 # AVX512{VBMI,VL} 93 vpermb xmm30, xmm29, XMMWORD PTR [rcx] # AVX512{VBMI,VL} 94 vpermb xmm30, xmm29, XMMWORD PTR [rax+r14*8+0x1234] # AVX512{VBMI,VL} 95 vpermb xmm30, xmm29, XMMWORD PTR [rdx+2032] # AVX512{VBMI,VL} Disp8 96 vpermb xmm30, xmm29, XMMWORD PTR [rdx+2048] # AVX512{VBMI,VL} 97 vpermb xmm30, xmm29, XMMWORD PTR [rdx-2048] # AVX512{VBMI,VL} Disp8 98 vpermb xmm30, xmm29, XMMWORD PTR [rdx-2064] # AVX512{VBMI,VL} 99 vpermb ymm30, ymm29, ymm28 # AVX512{VBMI,VL} 100 vpermb ymm30{k7}, ymm29, ymm28 # AVX512{VBMI,VL} 101 vpermb ymm30{k7}{z}, ymm29, ymm28 # AVX512{VBMI,VL} 102 vpermb ymm30, ymm29, YMMWORD PTR [rcx] # AVX512{VBMI,VL} 103 vpermb ymm30, ymm29, YMMWORD PTR [rax+r14*8+0x1234] # AVX512{VBMI,VL} 104 vpermb ymm30, ymm29, YMMWORD PTR [rdx+4064] # AVX512{VBMI,VL} Disp8 105 vpermb ymm30, ymm29, YMMWORD PTR [rdx+4096] # AVX512{VBMI,VL} 106 vpermb ymm30, ymm29, YMMWORD PTR [rdx-4096] # AVX512{VBMI,VL} Disp8 107 vpermb ymm30, ymm29, YMMWORD PTR [rdx-4128] # AVX512{VBMI,VL} 108 vpermi2b xmm30, xmm29, xmm28 # AVX512{VBMI,VL} 109 vpermi2b xmm30{k7}, xmm29, xmm28 # AVX512{VBMI,VL} 110 vpermi2b xmm30{k7}{z}, xmm29, xmm28 # AVX512{VBMI,VL} 111 vpermi2b xmm30, xmm29, XMMWORD PTR [rcx] # AVX512{VBMI,VL} 112 vpermi2b xmm30, xmm29, XMMWORD PTR [rax+r14*8+0x1234] # AVX512{VBMI,VL} 113 vpermi2b xmm30, xmm29, XMMWORD PTR [rdx+2032] # AVX512{VBMI,VL} Disp8 114 vpermi2b xmm30, xmm29, XMMWORD PTR [rdx+2048] # AVX512{VBMI,VL} 115 vpermi2b xmm30, xmm29, XMMWORD PTR [rdx-2048] # AVX512{VBMI,VL} Disp8 116 vpermi2b xmm30, xmm29, XMMWORD PTR [rdx-2064] # AVX512{VBMI,VL} 117 vpermi2b ymm30, ymm29, ymm28 # AVX512{VBMI,VL} 118 vpermi2b ymm30{k7}, ymm29, ymm28 # AVX512{VBMI,VL} 119 vpermi2b ymm30{k7}{z}, ymm29, ymm28 # AVX512{VBMI,VL} 120 vpermi2b ymm30, ymm29, YMMWORD PTR [rcx] # AVX512{VBMI,VL} 121 vpermi2b ymm30, ymm29, YMMWORD PTR [rax+r14*8+0x1234] # AVX512{VBMI,VL} 122 vpermi2b ymm30, ymm29, YMMWORD PTR [rdx+4064] # AVX512{VBMI,VL} Disp8 123 vpermi2b ymm30, ymm29, YMMWORD PTR [rdx+4096] # AVX512{VBMI,VL} 124 vpermi2b ymm30, ymm29, YMMWORD PTR [rdx-4096] # AVX512{VBMI,VL} Disp8 125 vpermi2b ymm30, ymm29, YMMWORD PTR [rdx-4128] # AVX512{VBMI,VL} 126 vpermt2b xmm30, xmm29, xmm28 # AVX512{VBMI,VL} 127 vpermt2b xmm30{k7}, xmm29, xmm28 # AVX512{VBMI,VL} 128 vpermt2b xmm30{k7}{z}, xmm29, xmm28 # AVX512{VBMI,VL} 129 vpermt2b xmm30, xmm29, XMMWORD PTR [rcx] # AVX512{VBMI,VL} 130 vpermt2b xmm30, xmm29, XMMWORD PTR [rax+r14*8+0x1234] # AVX512{VBMI,VL} 131 vpermt2b xmm30, xmm29, XMMWORD PTR [rdx+2032] # AVX512{VBMI,VL} Disp8 132 vpermt2b xmm30, xmm29, XMMWORD PTR [rdx+2048] # AVX512{VBMI,VL} 133 vpermt2b xmm30, xmm29, XMMWORD PTR [rdx-2048] # AVX512{VBMI,VL} Disp8 134 vpermt2b xmm30, xmm29, XMMWORD PTR [rdx-2064] # AVX512{VBMI,VL} 135 vpermt2b ymm30, ymm29, ymm28 # AVX512{VBMI,VL} 136 vpermt2b ymm30{k7}, ymm29, ymm28 # AVX512{VBMI,VL} 137 vpermt2b ymm30{k7}{z}, ymm29, ymm28 # AVX512{VBMI,VL} 138 vpermt2b ymm30, ymm29, YMMWORD PTR [rcx] # AVX512{VBMI,VL} 139 vpermt2b ymm30, ymm29, YMMWORD PTR [rax+r14*8+0x1234] # AVX512{VBMI,VL} 140 vpermt2b ymm30, ymm29, YMMWORD PTR [rdx+4064] # AVX512{VBMI,VL} Disp8 141 vpermt2b ymm30, ymm29, YMMWORD PTR [rdx+4096] # AVX512{VBMI,VL} 142 vpermt2b ymm30, ymm29, YMMWORD PTR [rdx-4096] # AVX512{VBMI,VL} Disp8 143 vpermt2b ymm30, ymm29, YMMWORD PTR [rdx-4128] # AVX512{VBMI,VL} 144 vpmultishiftqb xmm30, xmm29, xmm28 # AVX512{VBMI,VL} 145 vpmultishiftqb xmm30{k7}, xmm29, xmm28 # AVX512{VBMI,VL} 146 vpmultishiftqb xmm30{k7}{z}, xmm29, xmm28 # AVX512{VBMI,VL} 147 vpmultishiftqb xmm30, xmm29, XMMWORD PTR [rcx] # AVX512{VBMI,VL} 148 vpmultishiftqb xmm30, xmm29, XMMWORD PTR [rax+r14*8+0x1234] # AVX512{VBMI,VL} 149 vpmultishiftqb xmm30, xmm29, [rcx]{1to2} # AVX512{VBMI,VL} 150 vpmultishiftqb xmm30, xmm29, XMMWORD PTR [rdx+2032] # AVX512{VBMI,VL} Disp8 151 vpmultishiftqb xmm30, xmm29, XMMWORD PTR [rdx+2048] # AVX512{VBMI,VL} 152 vpmultishiftqb xmm30, xmm29, XMMWORD PTR [rdx-2048] # AVX512{VBMI,VL} Disp8 153 vpmultishiftqb xmm30, xmm29, XMMWORD PTR [rdx-2064] # AVX512{VBMI,VL} 154 vpmultishiftqb xmm30, xmm29, [rdx+1016]{1to2} # AVX512{VBMI,VL} Disp8 155 vpmultishiftqb xmm30, xmm29, [rdx+1024]{1to2} # AVX512{VBMI,VL} 156 vpmultishiftqb xmm30, xmm29, [rdx-1024]{1to2} # AVX512{VBMI,VL} Disp8 157 vpmultishiftqb xmm30, xmm29, [rdx-1032]{1to2} # AVX512{VBMI,VL} 158 vpmultishiftqb ymm30, ymm29, ymm28 # AVX512{VBMI,VL} 159 vpmultishiftqb ymm30{k7}, ymm29, ymm28 # AVX512{VBMI,VL} 160 vpmultishiftqb ymm30{k7}{z}, ymm29, ymm28 # AVX512{VBMI,VL} 161 vpmultishiftqb ymm30, ymm29, YMMWORD PTR [rcx] # AVX512{VBMI,VL} 162 vpmultishiftqb ymm30, ymm29, YMMWORD PTR [rax+r14*8+0x1234] # AVX512{VBMI,VL} 163 vpmultishiftqb ymm30, ymm29, [rcx]{1to4} # AVX512{VBMI,VL} 164 vpmultishiftqb ymm30, ymm29, YMMWORD PTR [rdx+4064] # AVX512{VBMI,VL} Disp8 165 vpmultishiftqb ymm30, ymm29, YMMWORD PTR [rdx+4096] # AVX512{VBMI,VL} 166 vpmultishiftqb ymm30, ymm29, YMMWORD PTR [rdx-4096] # AVX512{VBMI,VL} Disp8 167 vpmultishiftqb ymm30, ymm29, YMMWORD PTR [rdx-4128] # AVX512{VBMI,VL} 168 vpmultishiftqb ymm30, ymm29, [rdx+1016]{1to4} # AVX512{VBMI,VL} Disp8 169 vpmultishiftqb ymm30, ymm29, [rdx+1024]{1to4} # AVX512{VBMI,VL} 170 vpmultishiftqb ymm30, ymm29, [rdx-1024]{1to4} # AVX512{VBMI,VL} Disp8 171 vpmultishiftqb ymm30, ymm29, [rdx-1032]{1to4} # AVX512{VBMI,VL} 172