1 // RUN: llvm-mc -triple x86_64-unknown-unknown --show-encoding %s | FileCheck %s 2 3 ////////////////////////// 4 // 2 operand instructions 5 ///////////////////////// 6 7 // vphsubwd 8 // CHECK: vphsubwd (%rcx,%rax), %xmm1 9 // CHECK: encoding: [0x8f,0xe9,0x78,0xe2,0x0c,0x01] 10 vphsubwd (%rcx,%rax), %xmm1 11 // CHECK: vphsubwd %xmm0, %xmm1 12 // CHECK: encoding: [0x8f,0xe9,0x78,0xe2,0xc8] 13 vphsubwd %xmm0, %xmm1 14 15 // vphsubdq 16 // CHECK: vphsubdq (%rcx,%rax), %xmm1 17 // CHECK: encoding: [0x8f,0xe9,0x78,0xe3,0x0c,0x01] 18 vphsubdq (%rcx,%rax), %xmm1 19 // CHECK: vphsubdq %xmm0, %xmm1 20 // CHECK: encoding: [0x8f,0xe9,0x78,0xe3,0xc8] 21 vphsubdq %xmm0, %xmm1 22 23 // vphsubbw 24 // CHECK: vphsubbw (%rax), %xmm1 25 // CHECK: encoding: [0x8f,0xe9,0x78,0xe1,0x08] 26 vphsubbw (%rax), %xmm1 27 // CHECK: vphsubbw %xmm2, %xmm1 28 // CHECK: encoding: [0x8f,0xe9,0x78,0xe1,0xca] 29 vphsubbw %xmm2, %xmm1 30 31 // vphaddwq 32 // CHECK: vphaddwq (%rcx), %xmm4 33 // CHECK: encoding: [0x8f,0xe9,0x78,0xc7,0x21] 34 vphaddwq (%rcx), %xmm4 35 // CHECK: vphaddwq %xmm6, %xmm2 36 // CHECK: encoding: [0x8f,0xe9,0x78,0xc7,0xd6] 37 vphaddwq %xmm6, %xmm2 38 39 // vphaddwd 40 // CHECK: vphaddwd (%rdx,%rax), %xmm7 41 // CHECK: encoding: [0x8f,0xe9,0x78,0xc6,0x3c,0x02] 42 vphaddwd (%rdx,%rax), %xmm7 43 // CHECK: vphaddwd %xmm3, %xmm4 44 // CHECK: encoding: [0x8f,0xe9,0x78,0xc6,0xe3] 45 vphaddwd %xmm3, %xmm4 46 47 // vphadduwq 48 // CHECK: vphadduwq (%rcx,%rax), %xmm6 49 // CHECK: encoding: [0x8f,0xe9,0x78,0xd7,0x34,0x01] 50 vphadduwq (%rcx,%rax), %xmm6 51 // CHECK: vphadduwq %xmm7, %xmm0 52 // CHECK: encoding: [0x8f,0xe9,0x78,0xd7,0xc7] 53 vphadduwq %xmm7, %xmm0 54 55 // vphadduwd 56 // CHECK: vphadduwd (%rax), %xmm5 57 // CHECK: encoding: [0x8f,0xe9,0x78,0xd6,0x28] 58 vphadduwd (%rax), %xmm5 59 // CHECK: vphadduwd %xmm2, %xmm1 60 // CHECK: encoding: [0x8f,0xe9,0x78,0xd6,0xca] 61 vphadduwd %xmm2, %xmm1 62 63 // vphaddudq 64 // CHECK: vphaddudq 8(%rcx,%rax), %xmm4 65 // CHECK: encoding: [0x8f,0xe9,0x78,0xdb,0x64,0x01,0x08] 66 vphaddudq 8(%rcx,%rax), %xmm4 67 // CHECK: vphaddudq %xmm6, %xmm2 68 // CHECK: encoding: [0x8f,0xe9,0x78,0xdb,0xd6] 69 vphaddudq %xmm6, %xmm2 70 71 // vphaddubw 72 // CHECK: vphaddubw (%rcx), %xmm3 73 // CHECK: encoding: [0x8f,0xe9,0x78,0xd1,0x19] 74 vphaddubw (%rcx), %xmm3 75 // CHECK: vphaddubw %xmm5, %xmm0 76 // CHECK: encoding: [0x8f,0xe9,0x78,0xd1,0xc5] 77 vphaddubw %xmm5, %xmm0 78 79 // vphaddubq 80 // CHECK: vphaddubq (%rcx), %xmm4 81 // CHECK: encoding: [0x8f,0xe9,0x78,0xd3,0x21] 82 vphaddubq (%rcx), %xmm4 83 // CHECK: vphaddubq %xmm2, %xmm2 84 // CHECK: encoding: [0x8f,0xe9,0x78,0xd3,0xd2] 85 vphaddubq %xmm2, %xmm2 86 87 // vphaddubd 88 // CHECK: vphaddubd (%rax), %xmm5 89 // CHECK: encoding: [0x8f,0xe9,0x78,0xd2,0x28] 90 vphaddubd (%rax), %xmm5 91 // CHECK: vphaddubd %xmm5, %xmm7 92 // CHECK: encoding: [0x8f,0xe9,0x78,0xd2,0xfd] 93 vphaddubd %xmm5, %xmm7 94 95 // vphadddq 96 // CHECK: vphadddq (%rdx), %xmm4 97 // CHECK: encoding: [0x8f,0xe9,0x78,0xcb,0x22] 98 vphadddq (%rdx), %xmm4 99 // CHECK: vphadddq %xmm4, %xmm5 100 // CHECK: encoding: [0x8f,0xe9,0x78,0xcb,0xec] 101 vphadddq %xmm4, %xmm5 102 103 // vphaddbw 104 // CHECK: vphaddbw (%rcx,%rax), %xmm1 105 // CHECK: encoding: [0x8f,0xe9,0x78,0xc1,0x0c,0x01] 106 vphaddbw (%rcx,%rax), %xmm1 107 // CHECK: vphaddbw %xmm5, %xmm6 108 // CHECK: encoding: [0x8f,0xe9,0x78,0xc1,0xf5] 109 vphaddbw %xmm5, %xmm6 110 111 // vphaddbq 112 // CHECK: vphaddbq (%rcx,%rax), %xmm1 113 // CHECK: encoding: [0x8f,0xe9,0x78,0xc3,0x0c,0x01] 114 vphaddbq (%rcx,%rax), %xmm1 115 // CHECK: vphaddbq %xmm2, %xmm0 116 // CHECK: encoding: [0x8f,0xe9,0x78,0xc3,0xc2] 117 vphaddbq %xmm2, %xmm0 118 119 // vphaddbd 120 // CHECK: vphaddbd (%rcx,%rax), %xmm1 121 // CHECK: encoding: [0x8f,0xe9,0x78,0xc2,0x0c,0x01] 122 vphaddbd (%rcx,%rax), %xmm1 123 // CHECK: vphaddbd %xmm1, %xmm3 124 // CHECK: encoding: [0x8f,0xe9,0x78,0xc2,0xd9] 125 vphaddbd %xmm1, %xmm3 126 127 // vfrczss 128 // CHECK: vfrczss (%rcx,%rax), %xmm1 129 // CHECK: encoding: [0x8f,0xe9,0x78,0x82,0x0c,0x01] 130 vfrczss (%rcx,%rax), %xmm1 131 // CHECK: vfrczss %xmm5, %xmm7 132 // CHECK: encoding: [0x8f,0xe9,0x78,0x82,0xfd] 133 vfrczss %xmm5, %xmm7 134 135 // vfrczsd 136 // CHECK: vfrczsd (%rcx,%rax), %xmm1 137 // CHECK: encoding: [0x8f,0xe9,0x78,0x83,0x0c,0x01] 138 vfrczsd (%rcx,%rax), %xmm1 139 // CHECK: vfrczsd %xmm7, %xmm0 140 // CHECK: encoding: [0x8f,0xe9,0x78,0x83,0xc7] 141 vfrczsd %xmm7, %xmm0 142 143 // vfrczps 144 // CHECK: vfrczps 4(%rax), %xmm3 145 // CHECK: encoding: [0x8f,0xe9,0x78,0x80,0x58,0x04] 146 vfrczps 4(%rax), %xmm3 147 // CHECK: vfrczps %xmm6, %xmm5 148 // CHECK: encoding: [0x8f,0xe9,0x78,0x80,0xee] 149 vfrczps %xmm6, %xmm5 150 // CHECK: vfrczps (%rcx), %xmm1 151 // CHECK: encoding: [0x8f,0xe9,0x78,0x80,0x09] 152 vfrczps (%rcx), %xmm1 153 // CHECK: vfrczps %ymm2, %ymm4 154 // CHECK: encoding: [0x8f,0xe9,0x7c,0x80,0xe2] 155 vfrczps %ymm2, %ymm4 156 157 // vfrczpd 158 // CHECK: vfrczpd (%rcx,%rax), %xmm1 159 // CHECK: encoding: [0x8f,0xe9,0x78,0x81,0x0c,0x01] 160 vfrczpd (%rcx,%rax), %xmm1 161 // CHECK: vfrczpd %xmm7, %xmm0 162 // CHECK: encoding: [0x8f,0xe9,0x78,0x81,0xc7] 163 vfrczpd %xmm7, %xmm0 164 // CHECK: vfrczpd (%rcx,%rax), %ymm2 165 // CHECK: encoding: [0x8f,0xe9,0x7c,0x81,0x14,0x01] 166 vfrczpd (%rcx,%rax), %ymm2 167 // CHECK: vfrczpd %ymm5, %ymm3 168 // CHECK: encoding: [0x8f,0xe9,0x7c,0x81,0xdd] 169 vfrczpd %ymm5, %ymm3 170 171 172 173 ////////////////////////// 174 // 3 operand instructions 175 ///////////////////////// 176 177 // vpshlw 178 // CHECK: vpshlw %xmm0, %xmm1, %xmm2 179 // CHECK: encoding: [0x8f,0xe9,0x78,0x95,0xd1] 180 vpshlw %xmm0, %xmm1, %xmm2 181 // CHECK: vpshlw (%rax), %xmm1, %xmm2 182 // CHECK: encoding: [0x8f,0xe9,0xf0,0x95,0x10] 183 vpshlw (%rax), %xmm1, %xmm2 184 // CHECK: vpshlw %xmm0, (%rax,%rcx), %xmm2 185 // CHECK: encoding: [0x8f,0xe9,0x78,0x95,0x14,0x08] 186 vpshlw %xmm0, (%rax,%rcx), %xmm2 187 188 // vpshlq 189 // CHECK: vpshlq %xmm2, %xmm4, %xmm6 190 // CHECK: encoding: [0x8f,0xe9,0x68,0x97,0xf4] 191 vpshlq %xmm2, %xmm4, %xmm6 192 // CHECK: vpshlq (%rcx), %xmm2, %xmm1 193 // CHECK: encoding: [0x8f,0xe9,0xe8,0x97,0x09] 194 vpshlq (%rcx), %xmm2, %xmm1 195 // CHECK: vpshlq %xmm5, (%rdx,%rcx), %xmm6 196 // CHECK: encoding: [0x8f,0xe9,0x50,0x97,0x34,0x0a] 197 vpshlq %xmm5, (%rdx,%rcx), %xmm6 198 199 // vpshld 200 // CHECK: vpshld %xmm7, %xmm5, %xmm3 201 // CHECK: encoding: [0x8f,0xe9,0x40,0x96,0xdd] 202 vpshld %xmm7, %xmm5, %xmm3 203 // CHECK: vpshld 4(%rax), %xmm3, %xmm3 204 // CHECK: encoding: [0x8f,0xe9,0xe0,0x96,0x58,0x04] 205 vpshld 4(%rax), %xmm3, %xmm3 206 // CHECK: vpshld %xmm1, (%rax,%rcx), %xmm5 207 // CHECK: encoding: [0x8f,0xe9,0x70,0x96,0x2c,0x08] 208 vpshld %xmm1, (%rax,%rcx), %xmm5 209 210 // vpshlb 211 // CHECK: vpshlb %xmm1, %xmm2, %xmm3 212 // CHECK: encoding: [0x8f,0xe9,0x70,0x94,0xda] 213 vpshlb %xmm1, %xmm2, %xmm3 214 // CHECK: vpshlb (%rcx), %xmm0, %xmm7 215 // CHECK: encoding: [0x8f,0xe9,0xf8,0x94,0x39] 216 vpshlb (%rcx), %xmm0, %xmm7 217 // CHECK: vpshlb %xmm2, (%rax,%rdx), %xmm3 218 // CHECK: encoding: [0x8f,0xe9,0x68,0x94,0x1c,0x10] 219 vpshlb %xmm2, (%rax,%rdx), %xmm3 220 221 // vpshaw 222 // CHECK: vpshaw %xmm7, %xmm5, %xmm3 223 // CHECK: encoding: [0x8f,0xe9,0x40,0x99,0xdd] 224 vpshaw %xmm7, %xmm5, %xmm3 225 // CHECK: vpshaw (%rax), %xmm2, %xmm1 226 // CHECK: encoding: [0x8f,0xe9,0xe8,0x99,0x08] 227 vpshaw (%rax), %xmm2, %xmm1 228 // CHECK: vpshaw %xmm0, 8(%rax,%rcx), %xmm3 229 // CHECK: encoding: [0x8f,0xe9,0x78,0x99,0x5c,0x08,0x08] 230 vpshaw %xmm0, 8(%rax,%rcx), %xmm3 231 232 // vpshaq 233 // CHECK: vpshaq %xmm4, %xmm4, %xmm4 234 // CHECK: encoding: [0x8f,0xe9,0x58,0x9b,0xe4] 235 vpshaq %xmm4, %xmm4, %xmm4 236 // CHECK: vpshaq (%rcx), %xmm2, %xmm0 237 // CHECK: encoding: [0x8f,0xe9,0xe8,0x9b,0x01] 238 vpshaq (%rcx), %xmm2, %xmm0 239 // CHECK: vpshaq %xmm6, (%rax,%rcx), %xmm5 240 // CHECK: encoding: [0x8f,0xe9,0x48,0x9b,0x2c,0x08] 241 vpshaq %xmm6, (%rax,%rcx), %xmm5 242 243 // vpshad 244 // CHECK: vpshad %xmm5, %xmm4, %xmm0 245 // CHECK: encoding: [0x8f,0xe9,0x50,0x9a,0xc4] 246 vpshad %xmm5, %xmm4, %xmm0 247 // CHECK: vpshad (%rax), %xmm2, %xmm5 248 // CHECK: encoding: [0x8f,0xe9,0xe8,0x9a,0x28] 249 vpshad (%rax), %xmm2, %xmm5 250 // CHECK: vpshad %xmm2, (%rax), %xmm5 251 // CHECK: encoding: [0x8f,0xe9,0x68,0x9a,0x28] 252 vpshad %xmm2, (%rax), %xmm5 253 254 // vpshab 255 // CHECK: vpshab %xmm1, %xmm1, %xmm0 256 // CHECK: encoding: [0x8f,0xe9,0x70,0x98,0xc1] 257 vpshab %xmm1, %xmm1, %xmm0 258 // CHECK: vpshab (%rcx), %xmm4, %xmm0 259 // CHECK: encoding: [0x8f,0xe9,0xd8,0x98,0x01] 260 vpshab (%rcx), %xmm4, %xmm0 261 // CHECK: vpshab %xmm5, (%rcx), %xmm3 262 // CHECK: encoding: [0x8f,0xe9,0x50,0x98,0x19] 263 vpshab %xmm5, (%rcx), %xmm3 264 265 // vprotw 266 // CHECK: vprotw (%rax), %xmm3, %xmm6 267 // CHECK: encoding: [0x8f,0xe9,0xe0,0x91,0x30] 268 vprotw (%rax), %xmm3, %xmm6 269 // CHECK: vprotw %xmm5, (%rax,%rcx), %xmm1 270 // CHECK: encoding: [0x8f,0xe9,0x50,0x91,0x0c,0x08] 271 vprotw %xmm5, (%rax,%rcx), %xmm1 272 // CHECK: vprotw %xmm0, %xmm1, %xmm2 273 // CHECK: encoding: [0x8f,0xe9,0x78,0x91,0xd1] 274 vprotw %xmm0, %xmm1, %xmm2 275 // CHECK: vprotw $42, (%rcx), %xmm1 276 // CHECK: encoding: [0x8f,0xe8,0x78,0xc1,0x09,0x2a] 277 vprotw $42, (%rcx), %xmm1 278 // CHECK: vprotw $41, (%rax), %xmm4 279 // CHECK: encoding: [0x8f,0xe8,0x78,0xc1,0x20,0x29] 280 vprotw $41, (%rax), %xmm4 281 // CHECK: vprotw $40, %xmm1, %xmm3 282 // CHECK: encoding: [0x8f,0xe8,0x78,0xc1,0xd9,0x28] 283 vprotw $40, %xmm1, %xmm3 284 285 // vprotq 286 // CHECK: vprotq (%rax), %xmm1, %xmm2 287 // CHECK: encoding: [0x8f,0xe9,0xf0,0x93,0x10] 288 vprotq (%rax), %xmm1, %xmm2 289 // CHECK: vprotq (%rax,%rcx), %xmm1, %xmm2 290 // CHECK: encoding: [0x8f,0xe9,0xf0,0x93,0x14,0x08] 291 vprotq (%rax,%rcx), %xmm1, %xmm2 292 // CHECK: vprotq %xmm0, %xmm1, %xmm2 293 // CHECK: encoding: [0x8f,0xe9,0x78,0x93,0xd1] 294 vprotq %xmm0, %xmm1, %xmm2 295 // CHECK: vprotq $42, (%rax), %xmm2 296 // CHECK: encoding: [0x8f,0xe8,0x78,0xc3,0x10,0x2a] 297 vprotq $42, (%rax), %xmm2 298 // CHECK: vprotq $42, (%rax,%rcx), %xmm2 299 // CHECK: encoding: [0x8f,0xe8,0x78,0xc3,0x14,0x08,0x2a] 300 vprotq $42, (%rax,%rcx), %xmm2 301 // CHECK: vprotq $42, %xmm1, %xmm2 302 // CHECK: encoding: [0x8f,0xe8,0x78,0xc3,0xd1,0x2a] 303 vprotq $42, %xmm1, %xmm2 304 305 // vprotd 306 // CHECK: vprotd (%rax), %xmm0, %xmm3 307 // CHECK: encoding: [0x8f,0xe9,0xf8,0x92,0x18] 308 vprotd (%rax), %xmm0, %xmm3 309 // CHECK: vprotd %xmm2, (%rax,%rcx), %xmm4 310 // CHECK: encoding: [0x8f,0xe9,0x68,0x92,0x24,0x08] 311 vprotd %xmm2, (%rax,%rcx), %xmm4 312 // CHECK: vprotd %xmm5, %xmm3, %xmm2 313 // CHECK: encoding: [0x8f,0xe9,0x50,0x92,0xd3] 314 vprotd %xmm5, %xmm3, %xmm2 315 // CHECK: vprotd $43, (%rcx), %xmm6 316 // CHECK: encoding: [0x8f,0xe8,0x78,0xc2,0x31,0x2b] 317 vprotd $43, (%rcx), %xmm6 318 // CHECK: vprotd $44, (%rax,%rcx), %xmm7 319 // CHECK: encoding: [0x8f,0xe8,0x78,0xc2,0x3c,0x08,0x2c] 320 vprotd $44, (%rax,%rcx), %xmm7 321 // CHECK: vprotd $45, %xmm4, %xmm4 322 // CHECK: encoding: [0x8f,0xe8,0x78,0xc2,0xe4,0x2d] 323 vprotd $45, %xmm4, %xmm4 324 325 // vprotb 326 // CHECK: vprotb (%rcx), %xmm2, %xmm5 327 // CHECK: encoding: [0x8f,0xe9,0xe8,0x90,0x29] 328 vprotb (%rcx), %xmm2, %xmm5 329 // CHECK: vprotb %xmm5, (%rax,%rcx), %xmm4 330 // CHECK: encoding: [0x8f,0xe9,0x50,0x90,0x24,0x08] 331 vprotb %xmm5, (%rax,%rcx), %xmm4 332 // CHECK: vprotb %xmm4, %xmm3, %xmm2 333 // CHECK: encoding: [0x8f,0xe9,0x58,0x90,0xd3] 334 vprotb %xmm4, %xmm3, %xmm2 335 // CHECK: vprotb $46, (%rax), %xmm3 336 // CHECK: encoding: [0x8f,0xe8,0x78,0xc0,0x18,0x2e] 337 vprotb $46, (%rax), %xmm3 338 // CHECK: vprotb $47, (%rax,%rcx), %xmm7 339 // CHECK: encoding: [0x8f,0xe8,0x78,0xc0,0x3c,0x08,0x2f] 340 vprotb $47, (%rax,%rcx), %xmm7 341 // CHECK: vprotb $48, %xmm5, %xmm5 342 // CHECK: encoding: [0x8f,0xe8,0x78,0xc0,0xed,0x30] 343 vprotb $48, %xmm5, %xmm5 344 345 ////////////////////////// 346 // 4 operand instructions 347 ///////////////////////// 348 349 // vpmadcswd 350 // CHECK: vpmadcswd %xmm1, %xmm2, %xmm3, %xmm4 351 // CHECK: encoding: [0x8f,0xe8,0x60,0xb6,0xe2,0x10] 352 vpmadcswd %xmm1, %xmm2, %xmm3, %xmm4 353 // CHECK: vpmadcswd %xmm1, (%rax), %xmm3, %xmm4 354 // CHECK: encoding: [0x8f,0xe8,0x60,0xb6,0x20,0x10] 355 vpmadcswd %xmm1, (%rax), %xmm3, %xmm4 356 357 // vpmadcsswd 358 // CHECK: vpmadcsswd %xmm1, %xmm4, %xmm6, %xmm4 359 // CHECK: encoding: [0x8f,0xe8,0x48,0xa6,0xe4,0x10] 360 vpmadcsswd %xmm1, %xmm4, %xmm6, %xmm4 361 // CHECK: vpmadcsswd %xmm1, (%rax,%rcx), %xmm3, %xmm4 362 // CHECK: encoding: [0x8f,0xe8,0x60,0xa6,0x24,0x08,0x10] 363 vpmadcsswd %xmm1, (%rax,%rcx), %xmm3, %xmm4 364 365 // vpmacsww 366 // CHECK: vpmacsww %xmm0, %xmm2, %xmm5, %xmm4 367 // CHECK: encoding: [0x8f,0xe8,0x50,0x95,0xe2,0x00] 368 vpmacsww %xmm0, %xmm2, %xmm5, %xmm4 369 // CHECK: vpmacsww %xmm1, (%rax), %xmm6, %xmm4 370 // CHECK: encoding: [0x8f,0xe8,0x48,0x95,0x20,0x10] 371 vpmacsww %xmm1, (%rax), %xmm6, %xmm4 372 373 // vpmacswd 374 // CHECK: vpmacswd %xmm4, %xmm5, %xmm6, %xmm7 375 // CHECK: encoding: [0x8f,0xe8,0x48,0x96,0xfd,0x40] 376 vpmacswd %xmm4, %xmm5, %xmm6, %xmm7 377 // CHECK: vpmacswd %xmm0, (%rax), %xmm1, %xmm2 378 // CHECK: encoding: [0x8f,0xe8,0x70,0x96,0x10,0x00] 379 vpmacswd %xmm0, (%rax), %xmm1, %xmm2 380 381 // vpmacssww 382 // CHECK: vpmacssww %xmm4, %xmm3, %xmm2, %xmm1 383 // CHECK: encoding: [0x8f,0xe8,0x68,0x85,0xcb,0x40] 384 vpmacssww %xmm4, %xmm3, %xmm2, %xmm1 385 // CHECK: vpmacssww %xmm6, (%rcx), %xmm7, %xmm7 386 // CHECK: encoding: [0x8f,0xe8,0x40,0x85,0x39,0x60] 387 vpmacssww %xmm6, (%rcx), %xmm7, %xmm7 388 389 // vpmacsswd 390 // CHECK: vpmacsswd %xmm4, %xmm2, %xmm4, %xmm2 391 // CHECK: encoding: [0x8f,0xe8,0x58,0x86,0xd2,0x40] 392 vpmacsswd %xmm4, %xmm2, %xmm4, %xmm2 393 // CHECK: vpmacsswd %xmm0, 8(%rax,%rcx), %xmm1, %xmm0 394 // CHECK: encoding: [0x8f,0xe8,0x70,0x86,0x44,0x08,0x08,0x00] 395 vpmacsswd %xmm0, 8(%rax,%rcx), %xmm1, %xmm0 396 397 // vpmacssdql 398 // CHECK: vpmacssdql %xmm1, %xmm1, %xmm2, %xmm4 399 // CHECK: encoding: [0x8f,0xe8,0x68,0x87,0xe1,0x10] 400 vpmacssdql %xmm1, %xmm1, %xmm2, %xmm4 401 // CHECK: vpmacssdql %xmm7, (%rcx), %xmm6, %xmm5 402 // CHECK: encoding: [0x8f,0xe8,0x48,0x87,0x29,0x70] 403 vpmacssdql %xmm7, (%rcx), %xmm6, %xmm5 404 405 // vpmacssdqh 406 // CHECK: vpmacssdqh %xmm3, %xmm2, %xmm0, %xmm1 407 // CHECK: encoding: [0x8f,0xe8,0x78,0x8f,0xca,0x30] 408 vpmacssdqh %xmm3, %xmm2, %xmm0, %xmm1 409 // CHECK: vpmacssdqh %xmm7, (%rax,%rcx), %xmm2, %xmm3 410 // CHECK: encoding: [0x8f,0xe8,0x68,0x8f,0x1c,0x08,0x70] 411 vpmacssdqh %xmm7, (%rax,%rcx), %xmm2, %xmm3 412 413 // vpmacssdd 414 // CHECK: vpmacssdd %xmm2, %xmm2, %xmm3, %xmm5 415 // CHECK: encoding: [0x8f,0xe8,0x60,0x8e,0xea,0x20] 416 vpmacssdd %xmm2, %xmm2, %xmm3, %xmm5 417 // CHECK: vpmacssdd %xmm4, (%rax), %xmm1, %xmm2 418 // CHECK: encoding: [0x8f,0xe8,0x70,0x8e,0x10,0x40] 419 vpmacssdd %xmm4, (%rax), %xmm1, %xmm2 420 421 // vpmacsdql 422 // CHECK: vpmacsdql %xmm3, %xmm0, %xmm6, %xmm7 423 // CHECK: encoding: [0x8f,0xe8,0x48,0x97,0xf8,0x30] 424 vpmacsdql %xmm3, %xmm0, %xmm6, %xmm7 425 // CHECK: vpmacsdql %xmm5, 8(%rcx), %xmm3, %xmm5 426 // CHECK: encoding: [0x8f,0xe8,0x60,0x97,0x69,0x08,0x50] 427 vpmacsdql %xmm5, 8(%rcx), %xmm3, %xmm5 428 429 // vpmacsdqh 430 // CHECK: vpmacsdqh %xmm7, %xmm5, %xmm3, %xmm2 431 // CHECK: encoding: [0x8f,0xe8,0x60,0x9f,0xd5,0x70] 432 vpmacsdqh %xmm7, %xmm5, %xmm3, %xmm2 433 // CHECK: vpmacsdqh %xmm5, 4(%rax), %xmm2, %xmm0 434 // CHECK: encoding: [0x8f,0xe8,0x68,0x9f,0x40,0x04,0x50] 435 vpmacsdqh %xmm5, 4(%rax), %xmm2, %xmm0 436 437 // vpmacsdd 438 // CHECK: vpmacsdd %xmm4, %xmm6, %xmm4, %xmm2 439 // CHECK: encoding: [0x8f,0xe8,0x58,0x9e,0xd6,0x40] 440 vpmacsdd %xmm4, %xmm6, %xmm4, %xmm2 441 // CHECK: vpmacsdd %xmm4, (%rax,%rcx), %xmm4, %xmm3 442 // CHECK: encoding: [0x8f,0xe8,0x58,0x9e,0x1c,0x08,0x40] 443 vpmacsdd %xmm4, (%rax,%rcx), %xmm4, %xmm3 444 445 // vpcomw 446 // CHECK: vpcomw $42, %xmm2, %xmm3, %xmm4 447 // CHECK: encoding: [0x8f,0xe8,0x60,0xcd,0xe2,0x2a] 448 vpcomw $42, %xmm2, %xmm3, %xmm4 449 // CHECK: vpcomw $42, (%rax), %xmm3, %xmm4 450 // CHECK: encoding: [0x8f,0xe8,0x60,0xcd,0x20,0x2a] 451 vpcomw $42, (%rax), %xmm3, %xmm4 452 453 // vpcomuw 454 // CHECK: vpcomuw $43, %xmm1, %xmm3, %xmm5 455 // CHECK: encoding: [0x8f,0xe8,0x60,0xed,0xe9,0x2b] 456 vpcomuw $43, %xmm1, %xmm3, %xmm5 457 // CHECK: vpcomuw $44, (%rax,%rcx), %xmm0, %xmm6 458 // CHECK: encoding: [0x8f,0xe8,0x78,0xed,0x34,0x08,0x2c] 459 vpcomuw $44, (%rax,%rcx), %xmm0, %xmm6 460 461 // vpcomuq 462 // CHECK: vpcomuq $45, %xmm3, %xmm3, %xmm7 463 // CHECK: encoding: [0x8f,0xe8,0x60,0xef,0xfb,0x2d] 464 vpcomuq $45, %xmm3, %xmm3, %xmm7 465 // CHECK: vpcomuq $46, (%rax), %xmm3, %xmm1 466 // CHECK: encoding: [0x8f,0xe8,0x60,0xef,0x08,0x2e] 467 vpcomuq $46, (%rax), %xmm3, %xmm1 468 469 // vpcomud 470 // CHECK: vpcomud $47, %xmm0, %xmm1, %xmm2 471 // CHECK: encoding: [0x8f,0xe8,0x70,0xee,0xd0,0x2f] 472 vpcomud $47, %xmm0, %xmm1, %xmm2 473 // CHECK: vpcomud $48, 4(%rax), %xmm6, %xmm3 474 // CHECK: encoding: [0x8f,0xe8,0x48,0xee,0x58,0x04,0x30] 475 vpcomud $48, 4(%rax), %xmm6, %xmm3 476 477 // vpcomub 478 // CHECK: vpcomub $49, %xmm3, %xmm4, %xmm5 479 // CHECK: encoding: [0x8f,0xe8,0x58,0xec,0xeb,0x31] 480 vpcomub $49, %xmm3, %xmm4, %xmm5 481 // CHECK: vpcomub $50, (%rcx), %xmm6, %xmm2 482 // CHECK: encoding: [0x8f,0xe8,0x48,0xec,0x11,0x32] 483 vpcomub $50, (%rcx), %xmm6, %xmm2 484 485 // vpcomq 486 // CHECK: vpcomq $51, %xmm3, %xmm0, %xmm5 487 // CHECK: encoding: [0x8f,0xe8,0x78,0xcf,0xeb,0x33] 488 vpcomq $51, %xmm3, %xmm0, %xmm5 489 // CHECK: vpcomq $52, (%rax), %xmm1, %xmm7 490 // CHECK: encoding: [0x8f,0xe8,0x70,0xcf,0x38,0x34] 491 vpcomq $52, (%rax), %xmm1, %xmm7 492 493 // vpcomd 494 // CHECK: vpcomd $53, %xmm3, %xmm3, %xmm0 495 // CHECK: encoding: [0x8f,0xe8,0x60,0xce,0xc3,0x35] 496 vpcomd $53, %xmm3, %xmm3, %xmm0 497 // CHECK: vpcomd $54, (%rcx), %xmm2, %xmm2 498 // CHECK: encoding: [0x8f,0xe8,0x68,0xce,0x11,0x36] 499 vpcomd $54, (%rcx), %xmm2, %xmm2 500 501 // vpcomb 502 // CHECK: vpcomb $55, %xmm6, %xmm4, %xmm2 503 // CHECK: encoding: [0x8f,0xe8,0x58,0xcc,0xd6,0x37] 504 vpcomb $55, %xmm6, %xmm4, %xmm2 505 // CHECK: vpcomb $56, 8(%rax), %xmm3, %xmm2 506 // CHECK: encoding: [0x8f,0xe8,0x60,0xcc,0x50,0x08,0x38] 507 vpcomb $56, 8(%rax), %xmm3, %xmm2 508 509 // CHECK: vpcomltw %xmm2, %xmm3, %xmm4 510 // CHECK: encoding: [0x8f,0xe8,0x60,0xcd,0xe2,0x00] 511 vpcomltw %xmm2, %xmm3, %xmm4 512 513 // CHECK: vpcomlew %xmm2, %xmm3, %xmm4 514 // CHECK: encoding: [0x8f,0xe8,0x60,0xcd,0xe2,0x01] 515 vpcomlew %xmm2, %xmm3, %xmm4 516 517 // CHECK: vpcomgtw %xmm2, %xmm3, %xmm4 518 // CHECK: encoding: [0x8f,0xe8,0x60,0xcd,0xe2,0x02] 519 vpcomgtw %xmm2, %xmm3, %xmm4 520 521 // CHECK: vpcomgew %xmm2, %xmm3, %xmm4 522 // CHECK: encoding: [0x8f,0xe8,0x60,0xcd,0xe2,0x03] 523 vpcomgew %xmm2, %xmm3, %xmm4 524 525 // CHECK: vpcomeqw %xmm2, %xmm3, %xmm4 526 // CHECK: encoding: [0x8f,0xe8,0x60,0xcd,0xe2,0x04] 527 vpcomeqw %xmm2, %xmm3, %xmm4 528 529 // CHECK: vpcomneqw %xmm2, %xmm3, %xmm4 530 // CHECK: encoding: [0x8f,0xe8,0x60,0xcd,0xe2,0x05] 531 vpcomneqw %xmm2, %xmm3, %xmm4 532 533 // CHECK: vpcomfalsew %xmm2, %xmm3, %xmm4 534 // CHECK: encoding: [0x8f,0xe8,0x60,0xcd,0xe2,0x06] 535 vpcomfalsew %xmm2, %xmm3, %xmm4 536 537 // CHECK: vpcomtruew %xmm2, %xmm3, %xmm4 538 // CHECK: encoding: [0x8f,0xe8,0x60,0xcd,0xe2,0x07] 539 vpcomtruew %xmm2, %xmm3, %xmm4 540 541 542 // CHECK: vpcomltuw %xmm2, %xmm3, %xmm4 543 // CHECK: encoding: [0x8f,0xe8,0x60,0xed,0xe2,0x00] 544 vpcomltuw %xmm2, %xmm3, %xmm4 545 546 // CHECK: vpcomleuw %xmm2, %xmm3, %xmm4 547 // CHECK: encoding: [0x8f,0xe8,0x60,0xed,0xe2,0x01] 548 vpcomleuw %xmm2, %xmm3, %xmm4 549 550 // CHECK: vpcomgtuw %xmm2, %xmm3, %xmm4 551 // CHECK: encoding: [0x8f,0xe8,0x60,0xed,0xe2,0x02] 552 vpcomgtuw %xmm2, %xmm3, %xmm4 553 554 // CHECK: vpcomgeuw %xmm2, %xmm3, %xmm4 555 // CHECK: encoding: [0x8f,0xe8,0x60,0xed,0xe2,0x03] 556 vpcomgeuw %xmm2, %xmm3, %xmm4 557 558 // CHECK: vpcomequw %xmm2, %xmm3, %xmm4 559 // CHECK: encoding: [0x8f,0xe8,0x60,0xed,0xe2,0x04] 560 vpcomequw %xmm2, %xmm3, %xmm4 561 562 // CHECK: vpcomnequw %xmm2, %xmm3, %xmm4 563 // CHECK: encoding: [0x8f,0xe8,0x60,0xed,0xe2,0x05] 564 vpcomnequw %xmm2, %xmm3, %xmm4 565 566 // CHECK: vpcomfalseuw %xmm2, %xmm3, %xmm4 567 // CHECK: encoding: [0x8f,0xe8,0x60,0xed,0xe2,0x06] 568 vpcomfalseuw %xmm2, %xmm3, %xmm4 569 570 // CHECK: vpcomtrueuw %xmm2, %xmm3, %xmm4 571 // CHECK: encoding: [0x8f,0xe8,0x60,0xed,0xe2,0x07] 572 vpcomtrueuw %xmm2, %xmm3, %xmm4 573 574 // vpperm 575 // CHECK: vpperm %xmm1, %xmm2, %xmm3, %xmm4 576 // CHECK: encoding: [0x8f,0xe8,0x60,0xa3,0xe2,0x10] 577 vpperm %xmm1, %xmm2, %xmm3, %xmm4 578 // CHECK: vpperm (%rax), %xmm2, %xmm3, %xmm4 579 // CHECK: encoding: [0x8f,0xe8,0xe0,0xa3,0x20,0x20] 580 vpperm (%rax), %xmm2, %xmm3, %xmm4 581 // CHECK: vpperm %xmm1, (%rax), %xmm3, %xmm4 582 // CHECK: encoding: [0x8f,0xe8,0x60,0xa3,0x20,0x10] 583 vpperm %xmm1, (%rax), %xmm3, %xmm4 584 585 // vpcmov 586 // CHECK: vpcmov %xmm1, %xmm2, %xmm3, %xmm4 587 // CHECK: encoding: [0x8f,0xe8,0x60,0xa2,0xe2,0x10] 588 vpcmov %xmm1, %xmm2, %xmm3, %xmm4 589 // CHECK: vpcmov (%rax), %xmm2, %xmm3, %xmm4 590 // CHECK: encoding: [0x8f,0xe8,0xe0,0xa2,0x20,0x20] 591 vpcmov (%rax), %xmm2, %xmm3, %xmm4 592 // CHECK: vpcmov %xmm1, (%rax), %xmm3, %xmm4 593 // CHECK: encoding: [0x8f,0xe8,0x60,0xa2,0x20,0x10] 594 vpcmov %xmm1, (%rax), %xmm3, %xmm4 595 // CHECK: vpcmov %ymm1, %ymm2, %ymm3, %ymm4 596 // CHECK: encoding: [0x8f,0xe8,0x64,0xa2,0xe2,0x10] 597 vpcmov %ymm1, %ymm2, %ymm3, %ymm4 598 // CHECK: vpcmov (%rax), %ymm2, %ymm3, %ymm4 599 // CHECK: encoding: [0x8f,0xe8,0xe4,0xa2,0x20,0x20] 600 vpcmov (%rax), %ymm2, %ymm3, %ymm4 601 // CHECK: vpcmov %ymm1, (%rax), %ymm3, %ymm4 602 // CHECK: encoding: [0x8f,0xe8,0x64,0xa2,0x20,0x10] 603 vpcmov %ymm1, (%rax), %ymm3, %ymm4 604 605 606 ////////////////////////// 607 // 5 operand instructions 608 ///////////////////////// 609 // vpermil2pd 610 // CHECK: vpermil2pd $1, %xmm5, %xmm2, %xmm1, %xmm7 611 // CHECK: encoding: [0xc4,0xe3,0x71,0x49,0xfa,0x51] 612 vpermil2pd $1, %xmm5, %xmm2, %xmm1, %xmm7 613 // CHECK: vpermil2pd $2, (%rax), %xmm3, %xmm3, %xmm4 614 // CHECK: encoding: [0xc4,0xe3,0xe1,0x49,0x20,0x32] 615 vpermil2pd $2, (%rax), %xmm3, %xmm3, %xmm4 616 // CHECK: vpermil2pd $3, 8(%rax), %ymm0, %ymm4, %ymm6 617 // CHECK: encoding: [0xc4,0xe3,0xdd,0x49,0x70,0x08,0x03] 618 vpermil2pd $3, 8(%rax), %ymm0, %ymm4, %ymm6 619 // CHECK: vpermil2pd $0, %xmm3, (%rax,%rcx), %xmm1, %xmm0 620 // CHECK: encoding: [0xc4,0xe3,0x71,0x49,0x04,0x08,0x30] 621 vpermil2pd $0, %xmm3, (%rax,%rcx), %xmm1, %xmm0 622 // CHECK: vpermil2pd $1, %ymm1, %ymm2, %ymm3, %ymm4 623 // CHECK: encoding: [0xc4,0xe3,0x65,0x49,0xe2,0x11] 624 vpermil2pd $1, %ymm1, %ymm2, %ymm3, %ymm4 625 // CHECK: vpermil2pd $2, %ymm1, (%rax), %ymm3, %ymm4 626 // CHECK: encoding: [0xc4,0xe3,0x65,0x49,0x20,0x12] 627 vpermil2pd $2, %ymm1, (%rax), %ymm3, %ymm4 628 629 // vpermil2ps 630 // CHECK: vpermil2ps $0, %xmm4, %xmm3, %xmm2, %xmm1 631 // CHECK: encoding: [0xc4,0xe3,0x69,0x48,0xcb,0x40] 632 vpermil2ps $0, %xmm4, %xmm3, %xmm2, %xmm1 633 // CHECK: vpermil2ps $1, 4(%rax), %xmm2, %xmm3, %xmm0 634 // CHECK: encoding: [0xc4,0xe3,0xe1,0x48,0x40,0x04,0x21] 635 vpermil2ps $1, 4(%rax), %xmm2, %xmm3, %xmm0 636 // CHECK: vpermil2ps $2, (%rax), %ymm1, %ymm5, %ymm6 637 // CHECK: encoding: [0xc4,0xe3,0xd5,0x48,0x30,0x12] 638 vpermil2ps $2, (%rax), %ymm1, %ymm5, %ymm6 639 // CHECK: vpermil2ps $3, %xmm1, (%rax), %xmm3, %xmm4 640 // CHECK: encoding: [0xc4,0xe3,0x61,0x48,0x20,0x13] 641 vpermil2ps $3, %xmm1, (%rax), %xmm3, %xmm4 642 // CHECK: vpermil2ps $0, %ymm4, %ymm4, %ymm2, %ymm2 643 // CHECK: encoding: [0xc4,0xe3,0x6d,0x48,0xd4,0x40] 644 vpermil2ps $0, %ymm4, %ymm4, %ymm2, %ymm2 645 // CHECK: vpermil2pd $1, %ymm1, 4(%rax), %ymm1, %ymm0 646 // CHECK: encoding: [0xc4,0xe3,0x75,0x49,0x40,0x04,0x11] 647 vpermil2pd $1, %ymm1, 4(%rax), %ymm1, %ymm0 648 649