| 1 | # Check i386 AVX2 instructions |
| 2 | |
| 3 | .allow_index_reg |
| 4 | .text |
| 5 | _start: |
| 6 | |
| 7 | # Tests for op mem256, mask, ymm |
| 8 | # Tests for op ymm, mask, mem256 |
| 9 | vpmaskmovd (%ecx),%ymm4,%ymm6 |
| 10 | vpmaskmovd %ymm4,%ymm6,(%ecx) |
| 11 | vpmaskmovq (%ecx),%ymm4,%ymm6 |
| 12 | vpmaskmovq %ymm4,%ymm6,(%ecx) |
| 13 | |
| 14 | # Tests for op imm8, ymm/mem256, ymm |
| 15 | vpermpd $7,%ymm6,%ymm2 |
| 16 | vpermpd $7,(%ecx),%ymm6 |
| 17 | vpermq $7,%ymm6,%ymm2 |
| 18 | vpermq $7,(%ecx),%ymm6 |
| 19 | |
| 20 | # Tests for op ymm/mem256, ymm, ymm |
| 21 | vpermd %ymm4,%ymm6,%ymm2 |
| 22 | vpermd (%ecx),%ymm6,%ymm2 |
| 23 | vpermps %ymm4,%ymm6,%ymm2 |
| 24 | vpermps (%ecx),%ymm6,%ymm2 |
| 25 | vpsllvd %ymm4,%ymm6,%ymm2 |
| 26 | vpsllvd (%ecx),%ymm6,%ymm2 |
| 27 | vpsllvq %ymm4,%ymm6,%ymm2 |
| 28 | vpsllvq (%ecx),%ymm6,%ymm2 |
| 29 | vpsravd %ymm4,%ymm6,%ymm2 |
| 30 | vpsravd (%ecx),%ymm6,%ymm2 |
| 31 | vpsrlvd %ymm4,%ymm6,%ymm2 |
| 32 | vpsrlvd (%ecx),%ymm6,%ymm2 |
| 33 | vpsrlvq %ymm4,%ymm6,%ymm2 |
| 34 | vpsrlvq (%ecx),%ymm6,%ymm2 |
| 35 | |
| 36 | # Tests for op mem256, ymm |
| 37 | vmovntdqa (%ecx),%ymm4 |
| 38 | |
| 39 | # Tests for op ymm, xmm |
| 40 | vbroadcastsd %xmm4,%ymm6 |
| 41 | vbroadcastss %xmm4,%ymm6 |
| 42 | |
| 43 | # Tests for op imm8, ymm/mem256, ymm, ymm |
| 44 | vpblendd $7,%ymm4,%ymm6,%ymm2 |
| 45 | vpblendd $7,(%ecx),%ymm6,%ymm2 |
| 46 | vperm2i128 $7,%ymm4,%ymm6,%ymm2 |
| 47 | vperm2i128 $7,(%ecx),%ymm6,%ymm2 |
| 48 | |
| 49 | # Tests for op imm8, xmm/mem128, ymm, ymm |
| 50 | vinserti128 $7,%xmm4,%ymm4,%ymm6 |
| 51 | vinserti128 $7,(%ecx),%ymm4,%ymm6 |
| 52 | |
| 53 | # Tests for op mem128, ymm |
| 54 | vbroadcasti128 (%ecx),%ymm4 |
| 55 | |
| 56 | # Tests for op xmm/mem128, xmm, xmm |
| 57 | vpsllvd %xmm4,%xmm6,%xmm2 |
| 58 | vpsllvd (%ecx),%xmm6,%xmm7 |
| 59 | vpsllvq %xmm4,%xmm6,%xmm2 |
| 60 | vpsllvq (%ecx),%xmm6,%xmm7 |
| 61 | vpsravd %xmm4,%xmm6,%xmm2 |
| 62 | vpsravd (%ecx),%xmm6,%xmm7 |
| 63 | vpsrlvd %xmm4,%xmm6,%xmm2 |
| 64 | vpsrlvd (%ecx),%xmm6,%xmm7 |
| 65 | vpsrlvq %xmm4,%xmm6,%xmm2 |
| 66 | vpsrlvq (%ecx),%xmm6,%xmm7 |
| 67 | |
| 68 | # Tests for op mem128, xmm, xmm |
| 69 | vpmaskmovd (%ecx),%xmm4,%xmm6 |
| 70 | vpmaskmovq (%ecx),%xmm4,%xmm6 |
| 71 | |
| 72 | # Tests for op imm8, ymm, xmm128/mem |
| 73 | vextracti128 $7,%ymm4,%xmm6 |
| 74 | vextracti128 $7,%ymm4,(%ecx) |
| 75 | |
| 76 | # Tests for op xmm, xmm, mem128 |
| 77 | vpmaskmovd %xmm4,%xmm6,(%ecx) |
| 78 | vpmaskmovq %xmm4,%xmm6,(%ecx) |
| 79 | |
| 80 | # Tests for op imm8, xmm/mem128, xmm, xmm |
| 81 | vpblendd $7,%xmm4,%xmm6,%xmm2 |
| 82 | vpblendd $7,(%ecx),%xmm6,%xmm2 |
| 83 | |
| 84 | # Tests for op xmm/mem64, xmm |
| 85 | vpbroadcastq %xmm4,%xmm6 |
| 86 | vpbroadcastq (%ecx),%xmm4 |
| 87 | |
| 88 | # Tests for op xmm/mem64, ymm |
| 89 | vpbroadcastq %xmm4,%ymm6 |
| 90 | vpbroadcastq (%ecx),%ymm4 |
| 91 | |
| 92 | # Tests for op xmm/mem32, ymm |
| 93 | vpbroadcastd %xmm4,%ymm4 |
| 94 | vpbroadcastd (%ecx),%ymm4 |
| 95 | |
| 96 | # Tests for op xmm/mem32, xmm |
| 97 | vpbroadcastd %xmm4,%xmm6 |
| 98 | vpbroadcastd (%ecx),%xmm4 |
| 99 | |
| 100 | # Tests for op xmm/m16, xmm |
| 101 | vpbroadcastw %xmm4,%xmm6 |
| 102 | vpbroadcastw (%ecx),%xmm4 |
| 103 | |
| 104 | # Tests for op xmm/m16, ymm |
| 105 | vpbroadcastw %xmm4,%ymm6 |
| 106 | vpbroadcastw (%ecx),%ymm4 |
| 107 | |
| 108 | # Tests for op xmm/m8, xmm |
| 109 | vpbroadcastb %xmm4,%xmm6 |
| 110 | vpbroadcastb (%ecx),%xmm4 |
| 111 | |
| 112 | # Tests for op xmm/m8, ymm |
| 113 | vpbroadcastb %xmm4,%ymm6 |
| 114 | vpbroadcastb (%ecx),%ymm4 |
| 115 | |
| 116 | # Tests for op xmm, xmm |
| 117 | vbroadcastss %xmm4,%xmm6 |
| 118 | |
| 119 | .intel_syntax noprefix |
| 120 | |
| 121 | # Tests for op mem256, mask, ymm |
| 122 | # Tests for op ymm, mask, mem256 |
| 123 | vpmaskmovd ymm6,ymm4,YMMWORD PTR [ecx] |
| 124 | vpmaskmovd YMMWORD PTR [ecx],ymm6,ymm4 |
| 125 | vpmaskmovd ymm6,ymm4,[ecx] |
| 126 | vpmaskmovd [ecx],ymm6,ymm4 |
| 127 | vpmaskmovq ymm6,ymm4,YMMWORD PTR [ecx] |
| 128 | vpmaskmovq YMMWORD PTR [ecx],ymm6,ymm4 |
| 129 | vpmaskmovq ymm6,ymm4,[ecx] |
| 130 | vpmaskmovq [ecx],ymm6,ymm4 |
| 131 | |
| 132 | # Tests for op imm8, ymm/mem256, ymm |
| 133 | vpermpd ymm2,ymm6,7 |
| 134 | vpermpd ymm6,YMMWORD PTR [ecx],7 |
| 135 | vpermpd ymm6,[ecx],7 |
| 136 | vpermq ymm2,ymm6,7 |
| 137 | vpermq ymm6,YMMWORD PTR [ecx],7 |
| 138 | vpermq ymm6,[ecx],7 |
| 139 | |
| 140 | # Tests for op ymm/mem256, ymm, ymm |
| 141 | vpermd ymm2,ymm6,ymm4 |
| 142 | vpermd ymm2,ymm6,YMMWORD PTR [ecx] |
| 143 | vpermd ymm2,ymm6,[ecx] |
| 144 | vpermps ymm2,ymm6,ymm4 |
| 145 | vpermps ymm2,ymm6,YMMWORD PTR [ecx] |
| 146 | vpermps ymm2,ymm6,[ecx] |
| 147 | vpsllvd ymm2,ymm6,ymm4 |
| 148 | vpsllvd ymm2,ymm6,YMMWORD PTR [ecx] |
| 149 | vpsllvd ymm2,ymm6,[ecx] |
| 150 | vpsllvq ymm2,ymm6,ymm4 |
| 151 | vpsllvq ymm2,ymm6,YMMWORD PTR [ecx] |
| 152 | vpsllvq ymm2,ymm6,[ecx] |
| 153 | vpsravd ymm2,ymm6,ymm4 |
| 154 | vpsravd ymm2,ymm6,YMMWORD PTR [ecx] |
| 155 | vpsravd ymm2,ymm6,[ecx] |
| 156 | vpsrlvd ymm2,ymm6,ymm4 |
| 157 | vpsrlvd ymm2,ymm6,YMMWORD PTR [ecx] |
| 158 | vpsrlvd ymm2,ymm6,[ecx] |
| 159 | vpsrlvq ymm2,ymm6,ymm4 |
| 160 | vpsrlvq ymm2,ymm6,YMMWORD PTR [ecx] |
| 161 | vpsrlvq ymm2,ymm6,[ecx] |
| 162 | |
| 163 | # Tests for op mem256, ymm |
| 164 | vmovntdqa ymm4,YMMWORD PTR [ecx] |
| 165 | vmovntdqa ymm4,[ecx] |
| 166 | |
| 167 | # Tests for op ymm, xmm |
| 168 | vbroadcastsd ymm6,xmm4 |
| 169 | vbroadcastss ymm6,xmm4 |
| 170 | |
| 171 | # Tests for op imm8, ymm/mem256, ymm, ymm |
| 172 | vpblendd ymm2,ymm6,ymm4,7 |
| 173 | vpblendd ymm2,ymm6,YMMWORD PTR [ecx],7 |
| 174 | vpblendd ymm2,ymm6,[ecx],7 |
| 175 | vperm2i128 ymm2,ymm6,ymm4,7 |
| 176 | vperm2i128 ymm2,ymm6,YMMWORD PTR [ecx],7 |
| 177 | vperm2i128 ymm2,ymm6,[ecx],7 |
| 178 | |
| 179 | # Tests for op imm8, xmm/mem128, ymm, ymm |
| 180 | vinserti128 ymm6,ymm4,xmm4,7 |
| 181 | vinserti128 ymm6,ymm4,XMMWORD PTR [ecx],7 |
| 182 | vinserti128 ymm6,ymm4,[ecx],7 |
| 183 | |
| 184 | # Tests for op mem128, ymm |
| 185 | vbroadcasti128 ymm4,XMMWORD PTR [ecx] |
| 186 | vbroadcasti128 ymm4,[ecx] |
| 187 | |
| 188 | # Tests for op xmm/mem128, xmm, xmm |
| 189 | vpsllvd xmm2,xmm6,xmm4 |
| 190 | vpsllvd xmm7,xmm6,XMMWORD PTR [ecx] |
| 191 | vpsllvd xmm7,xmm6,[ecx] |
| 192 | vpsllvq xmm2,xmm6,xmm4 |
| 193 | vpsllvq xmm7,xmm6,XMMWORD PTR [ecx] |
| 194 | vpsllvq xmm7,xmm6,[ecx] |
| 195 | vpsravd xmm2,xmm6,xmm4 |
| 196 | vpsravd xmm7,xmm6,XMMWORD PTR [ecx] |
| 197 | vpsravd xmm7,xmm6,[ecx] |
| 198 | vpsrlvd xmm2,xmm6,xmm4 |
| 199 | vpsrlvd xmm7,xmm6,XMMWORD PTR [ecx] |
| 200 | vpsrlvd xmm7,xmm6,[ecx] |
| 201 | vpsrlvq xmm2,xmm6,xmm4 |
| 202 | vpsrlvq xmm7,xmm6,XMMWORD PTR [ecx] |
| 203 | vpsrlvq xmm7,xmm6,[ecx] |
| 204 | |
| 205 | # Tests for op mem128, xmm, xmm |
| 206 | vpmaskmovd xmm6,xmm4,XMMWORD PTR [ecx] |
| 207 | vpmaskmovd xmm6,xmm4,[ecx] |
| 208 | vpmaskmovq xmm6,xmm4,XMMWORD PTR [ecx] |
| 209 | vpmaskmovq xmm6,xmm4,[ecx] |
| 210 | |
| 211 | # Tests for op imm8, ymm, xmm128/mem |
| 212 | vextracti128 xmm6,ymm4,7 |
| 213 | vextracti128 XMMWORD PTR [ecx],ymm4,7 |
| 214 | vextracti128 [ecx],ymm4,7 |
| 215 | |
| 216 | # Tests for op xmm, xmm, mem128 |
| 217 | vpmaskmovd XMMWORD PTR [ecx],xmm6,xmm4 |
| 218 | vpmaskmovd [ecx],xmm6,xmm4 |
| 219 | vpmaskmovq XMMWORD PTR [ecx],xmm6,xmm4 |
| 220 | vpmaskmovq [ecx],xmm6,xmm4 |
| 221 | |
| 222 | # Tests for op imm8, xmm/mem128, xmm, xmm |
| 223 | vpblendd xmm2,xmm6,xmm4,7 |
| 224 | vpblendd xmm2,xmm6,XMMWORD PTR [ecx],7 |
| 225 | vpblendd xmm2,xmm6,[ecx],7 |
| 226 | |
| 227 | # Tests for op xmm/mem64, xmm |
| 228 | vpbroadcastq xmm6,xmm4 |
| 229 | vpbroadcastq xmm4,QWORD PTR [ecx] |
| 230 | vpbroadcastq xmm4,[ecx] |
| 231 | |
| 232 | # Tests for op xmm/mem64, ymm |
| 233 | vpbroadcastq ymm6,xmm4 |
| 234 | vpbroadcastq ymm4,QWORD PTR [ecx] |
| 235 | vpbroadcastq ymm4,[ecx] |
| 236 | |
| 237 | # Tests for op xmm/mem32, ymm |
| 238 | vpbroadcastd ymm4,xmm4 |
| 239 | vpbroadcastd ymm4,DWORD PTR [ecx] |
| 240 | vpbroadcastd ymm4,[ecx] |
| 241 | |
| 242 | # Tests for op xmm/mem32, xmm |
| 243 | vpbroadcastd xmm6,xmm4 |
| 244 | vpbroadcastd xmm4,DWORD PTR [ecx] |
| 245 | vpbroadcastd xmm4,[ecx] |
| 246 | |
| 247 | # Tests for op xmm/m16, xmm |
| 248 | vpbroadcastw xmm6,xmm4 |
| 249 | vpbroadcastw xmm4,WORD PTR [ecx] |
| 250 | vpbroadcastw xmm4,[ecx] |
| 251 | |
| 252 | # Tests for op xmm/m16, ymm |
| 253 | vpbroadcastw ymm6,xmm4 |
| 254 | vpbroadcastw ymm4,WORD PTR [ecx] |
| 255 | vpbroadcastw ymm4,[ecx] |
| 256 | |
| 257 | # Tests for op xmm/m8, xmm |
| 258 | vpbroadcastb xmm6,xmm4 |
| 259 | vpbroadcastb xmm4,BYTE PTR [ecx] |
| 260 | vpbroadcastb xmm4,[ecx] |
| 261 | |
| 262 | # Tests for op xmm/m8, ymm |
| 263 | vpbroadcastb ymm6,xmm4 |
| 264 | vpbroadcastb ymm4,BYTE PTR [ecx] |
| 265 | vpbroadcastb ymm4,[ecx] |
| 266 | |
| 267 | # Tests for op xmm, xmm |
| 268 | vbroadcastss xmm6,xmm4 |