1 # RUN: llvm-mc --disassemble %s -triple=x86_64-apple-darwin9 | FileCheck %s 2 3 # CHECK: int $33 4 0xCD 0x21 5 6 # CHECK: int $33 7 0xCD 0x21 8 9 10 # CHECK: addb %al, (%rax) 11 0 0 12 13 # CHECK: callq -1234 14 0xe8 0x2e 0xfb 0xff 0xff 15 16 # CHECK: lfence 17 0x0f 0xae 0xe8 18 19 # CHECK: mfence 20 0x0f 0xae 0xf0 21 22 # CHECK: monitor 23 0x0f 0x01 0xc8 24 25 # CHECK: mwait 26 0x0f 0x01 0xc9 27 28 # CHECK: vmcall 29 0x0f 0x01 0xc1 30 31 # CHECK: vmlaunch 32 0x0f 0x01 0xc2 33 34 # CHECK: vmresume 35 0x0f 0x01 0xc3 36 37 # CHECK: vmxoff 38 0x0f 0x01 0xc4 39 40 # CHECK: swapgs 41 0x0f 0x01 0xf8 42 43 # CHECK: rdtscp 44 0x0f 0x01 0xf9 45 46 # CHECK: vmxon 47 0xf3 0x0f 0xc7 0x30 48 49 # CHECK: vmptrld 50 0x0f 0xc7 0x30 51 52 # CHECK: vmptrst 53 0x0f 0xc7 0x38 54 55 # CHECK: movl $0, -4(%rbp) 56 0xc7 0x45 0xfc 0x00 0x00 0x00 0x00 57 58 # CHECK: movq %cr0, %rcx 59 0x0f 0x20 0xc1 60 61 # CHECK: leal 4(%rsp), %ecx 62 0x8d 0x4c 0x24 0x04 63 64 # CHECK: enter $1, $2 65 0xc8 0x01 0x00 0x02 66 67 # CHECK: movw $47416, -66(%rbp) 68 0x66 0xc7 0x45 0xbe 0x38 0xb9 69 70 # CHECK: vaddpd %ymm13, %ymm1, %ymm0 71 0xc4 0xc1 0x75 0x58 0xc5 72 73 # CHECK: vaddps %ymm3, %ymm1, %ymm0 74 0xc5 0xf4 0x58 0xc3 75 76 # CHECK: vandpd %ymm13, %ymm1, %ymm0 77 0xc4 0xc1 0x75 0x54 0xc5 78 79 # CHECK: vandps %ymm3, %ymm1, %ymm0 80 0xc5 0xf4 0x54 0xc3 81 82 # CHECK: vzeroall 83 0xc5 0xfc 0x77 84 85 # CHECK: vcvtps2pd %xmm0, %ymm0 86 0xc5 0xfc 0x5a 0xc0 87 88 # CHECK: vandps (%rdx), %xmm1, %xmm7 89 0xc5 0xf0 0x54 0x3a 90 91 # CHECK: vcvtss2sil %xmm0, %eax 92 0xc5 0xfa 0x2d 0xc0 93 94 # CHECK: vcvtsd2si %xmm0, %eax 95 0xc5 0xfb 0x2d 0xc0 96 97 # CHECK: vcvtsd2si %xmm0, %rax 98 0xc4 0xe1 0xfb 0x2d 0xc0 99 100 # CHECK: vmaskmovpd %xmm0, %xmm1, (%rax) 101 0xc4 0xe2 0x71 0x2f 0x00 102 103 # CHECK: vmovapd %xmm0, %xmm2 104 0xc5 0xf9 0x28 0xd0 105 106 # Check X86 immediates print as signed values by default. radr://8795217 107 # CHECK: andq $-16, %rsp 108 0x48 0x83 0xe4 0xf0 109 110 # Check these special case instructions that the immediate is not sign-extend. 111 # CHECK: blendps $129, %xmm2, %xmm1 112 0x66 0x0f 0x3a 0x0c 0xca 0x81 113 114 # CHECK: blendpd $129, %xmm2, %xmm1 115 0x66 0x0f 0x3a 0x0d 0xca 0x81 116 117 # CHECK: pblendw $129, %xmm2, %xmm1 118 0x66 0x0f 0x3a 0x0e 0xca 0x81 119 120 # CHECK: mpsadbw $129, %xmm2, %xmm1 121 0x66 0x0f 0x3a 0x42 0xca 0x81 122 123 # CHECK: dpps $129, %xmm2, %xmm1 124 0x66 0x0f 0x3a 0x40 0xca 0x81 125 126 # CHECK: dppd $129, %xmm2, %xmm1 127 0x66 0x0f 0x3a 0x41 0xca 0x81 128 129 # CHECK: insertps $129, %xmm2, %xmm1 130 0x66 0x0f 0x3a 0x21 0xca 0x81 131 132 # CHECK: vblendps $129, %ymm2, %ymm5, %ymm1 133 0xc4 0xe3 0x55 0x0c 0xca 0x81 134 135 # CHECK: vblendps $129, (%rax), %ymm5, %ymm1 136 0xc4 0xe3 0x55 0x0c 0x08 0x81 137 138 # CHECK: vblendpd $129, %ymm2, %ymm5, %ymm1 139 0xc4 0xe3 0x55 0x0d 0xca 0x81 140 141 # CHECK: vblendpd $129, (%rax), %ymm5, %ymm1 142 0xc4 0xe3 0x55 0x0d 0x08 0x81 143 144 # CHECK: vpblendw $129, %xmm2, %xmm5, %xmm1 145 0xc4 0xe3 0x51 0x0e 0xca 0x81 146 147 # CHECK: vmpsadbw $129, %xmm2, %xmm5, %xmm1 148 0xc4 0xe3 0x51 0x42 0xca 0x81 149 150 # CHECK: vdpps $129, %ymm2, %ymm5, %ymm1 151 0xc4 0xe3 0x55 0x40 0xca 0x81 152 153 # CHECK: vdpps $129, (%rax), %ymm5, %ymm1 154 0xc4 0xe3 0x55 0x40 0x08 0x81 155 156 # CHECK: vdppd $129, %xmm2, %xmm5, %xmm1 157 0xc4 0xe3 0x51 0x41 0xca 0x81 158 159 # CHECK: vinsertps $129, %xmm3, %xmm2, %xmm1 160 0xc4 0xe3 0x69 0x21 0xcb 0x81 161 162 # CHECK: pause 163 0xf3 0x90 164 165 # CHECK: addl %eax, %edi 166 0x01 0xc7 167 168 # CHECK: addl %edi, %eax 169 0x03 0xc7 170 171 # CHECK: movl %eax, %edi 172 0x89 0xc7 173 174 # CHECK: movl %edi, %eax 175 0x8b 0xc7 176 177 # CHECK: movups %xmm1, %xmm0 178 0x0f 0x10 0xc1 179 180 # CHECK: movups %xmm0, %xmm1 181 0x0f 0x11 0xc1 182 183 # CHECK: movaps %xmm1, %xmm0 184 0x0f 0x28 0xc1 185 186 # CHECK: movaps %xmm0, %xmm1 187 0x0f 0x29 0xc1 188 189 # CHECK: movupd %xmm1, %xmm0 190 0x66 0x0f 0x10 0xc1 191 192 # CHECK: movupd %xmm0, %xmm1 193 0x66 0x0f 0x11 0xc1 194 195 # CHECK: movapd %xmm1, %xmm0 196 0x66 0x0f 0x28 0xc1 197 198 # CHECK: movapd %xmm0, %xmm1 199 0x66 0x0f 0x29 0xc1 200 201 # CHECK: vmovups %xmm1, %xmm0 202 0xc5 0xf8 0x10 0xc1 203 204 # CHECK: vmovups %xmm0, %xmm1 205 0xc5 0xf8 0x11 0xc1 206 207 # CHECK: vmovaps %xmm1, %xmm0 208 0xc5 0xf8 0x28 0xc1 209 210 # CHECK: vmovaps %xmm0, %xmm1 211 0xc5 0xf8 0x29 0xc1 212 213 # CHECK: vmovupd %xmm1, %xmm0 214 0xc5 0xf9 0x10 0xc1 215 216 # CHECK: vmovupd %xmm0, %xmm1 217 0xc5 0xf9 0x11 0xc1 218 219 # CHECK: vmovapd %xmm1, %xmm0 220 0xc5 0xf9 0x28 0xc1 221 222 # CHECK: vmovapd %xmm0, %xmm1 223 0xc5 0xf9 0x29 0xc1 224 225 # CHECK: vmovups %ymm1, %ymm0 226 0xc5 0xfc 0x10 0xc1 227 228 # CHECK: vmovups %ymm0, %ymm1 229 0xc5 0xfc 0x11 0xc1 230 231 # CHECK: vmovaps %ymm1, %ymm0 232 0xc5 0xfc 0x28 0xc1 233 234 # CHECK: vmovaps %ymm0, %ymm1 235 0xc5 0xfc 0x29 0xc1 236 237 # CHECK: movdqa %xmm1, %xmm0 238 0x66 0x0f 0x6f 0xc1 239 240 # CHECK: movdqa %xmm0, %xmm1 241 0x66 0x0f 0x7f 0xc1 242 243 # CHECK: movdqu %xmm1, %xmm0 244 0xf3 0x0f 0x6f 0xc1 245 246 # CHECK: movdqu %xmm0, %xmm1 247 0xf3 0x0f 0x7f 0xc1 248 249 # CHECK: vmovdqa %xmm1, %xmm0 250 0xc5 0xf9 0x6f 0xc1 251 252 # CHECK: vmovdqa %xmm0, %xmm1 253 0xc5 0xf9 0x7f 0xc1 254 255 # CHECK: vmovdqa %ymm1, %ymm0 256 0xc5 0xfd 0x6f 0xc1 257 258 # CHECK: vmovdqa %ymm0, %ymm1 259 0xc5 0xfd 0x7f 0xc1 260 261 # CHECK: vmovdqu %xmm1, %xmm0 262 0xc5 0xfa 0x6f 0xc1 263 264 # CHECK: vmovdqu %xmm0, %xmm1 265 0xc5 0xfa 0x7f 0xc1 266 267 # CHECK: vmovdqu %ymm1, %ymm0 268 0xc5 0xfe 0x6f 0xc1 269 270 # CHECK: vmovdqu %ymm0, %ymm1 271 0xc5 0xfe 0x7f 0xc1 272 273 # CHECK: vblendvps %xmm4, %xmm1, %xmm2, %xmm3 274 0xc4 0xe3 0x69 0x4a 0xd9 0x41 275 276 # CHECK: vroundpd $0, %xmm0, %xmm0 277 0xc4 0xe3 0x79 0x09 0xc0 0x00 278 279 # CHECK: vroundps $0, %xmm0, %xmm0 280 0xc4 0xe3 0x79 0x08 0xc0 0x00 281 282 # CHECK: vroundpd $0, %ymm0, %ymm0 283 0xc4 0xe3 0x7d 0x09 0xc0 0x00 284 285 # CHECK: vroundps $0, %ymm0, %ymm0 286 0xc4 0xe3 0x7d 0x08 0xc0 0x00 287 288 # CHECK: vroundss $0, %xmm0, %xmm0, %xmm0 289 0xc4 0xe3 0x79 0x0a 0xc0 0x00 290 291 # CHECK: vroundsd $0, %xmm0, %xmm0, %xmm0 292 0xc4 0xe3 0x79 0x0b 0xc0 0x00 293 294 # CHECK: crc32b %al, %eax 295 0xf2 0x0f 0x38 0xf0 0xc0 296 297 # CHECK: crc32w %ax, %eax 298 0x66 0xf2 0x0f 0x38 0xf1 0xc0 299 300 # CHECK: crc32l %eax, %eax 301 0xf2 0x0f 0x38 0xf1 0xc0 302 303 # CHECK: crc32q %rax, %rax 304 0xf2 0x48 0x0f 0x38 0xf1 0xc0 305 306 # CHECK: invept (%rax), %rax 307 0x66 0x0f 0x38 0x80 0x00 308 309 # CHECK: invvpid (%rax), %rax 310 0x66 0x0f 0x38 0x81 0x00 311 312 # CHECK: nop 313 0x90 314 315 # CHECK: xchgl %r8d, %eax 316 0x41 0x90 317 318 # CHECK: xchgq %r8, %rax 319 0x49 0x90 320 321 # CHECK: addb $0, %al 322 0x04 0x00 323 324 # CHECK: addw $0, %ax 325 0x66 0x05 0x00 0x00 326 327 # CHECK: addl $0, %eax 328 0x05 0x00 0x00 0x00 0x00 329 330 # CHECK: addq $0, %rax 331 0x48 0x05 0x00 0x00 0x00 0x00 332 333 # CHECK: adcb $0, %al 334 0x14 0x00 335 336 # CHECK: adcw $0, %ax 337 0x66 0x15 0x00 0x00 338 339 # CHECK: adcl $0, %eax 340 0x15 0x00 0x00 0x00 0x00 341 342 # CHECK: adcq $0, %rax 343 0x48 0x15 0x00 0x00 0x00 0x00 344 345 # CHECK: cmpb $0, %al 346 0x3c 0x00 347 348 # CHECK: cmpw $0, %ax 349 0x66 0x3d 0x00 0x00 350 351 # CHECK: cmpl $0, %eax 352 0x3d 0x00 0x00 0x00 0x00 353 354 # CHECK: cmpq $0, %rax 355 0x48 0x3d 0x00 0x00 0x00 0x00 356 357 # CHECK: testb $0, %al 358 0xa8 0x00 359 360 # CHECK: testw $0, %ax 361 0x66 0xa9 0x00 0x00 362 363 # CHECK: testl $0, %eax 364 0xa9 0x00 0x00 0x00 0x00 365 366 # CHECK: testq $0, %rax 367 0x48 0xa9 0x00 0x00 0x00 0x00 368 369 # CHECK: vaddps %xmm3, %xmm15, %xmm0 370 0xc4 0xe1 0x00 0x58 0xc3 371 372 # CHECK: movbel (%rax), %eax 373 0x0f 0x38 0xf0 0x00 374 375 # CHECK: movbel %eax, (%rax) 376 0x0f 0x38 0xf1 0x00 377 378 # CHECK: movbew (%rax), %ax 379 0x66 0x0f 0x38 0xf0 0x00 380 381 # CHECK: movbew %ax, (%rax) 382 0x66 0x0f 0x38 0xf1 0x00 383 384 # CHECK: movbeq (%rax), %rax 385 0x48 0x0f 0x38 0xf0 0x00 386 387 # CHECK: movbeq %rax, (%rax) 388 0x48 0x0f 0x38 0xf1 0x00 389 390 # CHECK: rdrandw %ax 391 0x66 0x0f 0xc7 0xf0 392 393 # CHECK: rdrandl %eax 394 0x0f 0xc7 0xf0 395 396 # CHECK: rdrandq %rax 397 0x48 0x0f 0xc7 0xf0 398 399 # CHECK: vroundss $0, %xmm0, %xmm0, %xmm0 400 0xc4 0xe3 0x7d 0x0a 0xc0 0x00 401 402 # CHECK: vroundsd $0, %xmm0, %xmm0, %xmm0 403 0xc4 0xe3 0x7d 0x0b 0xc0 0x00 404 405 # CHECK: vcvtsd2si %xmm0, %eax 406 0xc4 0xe1 0x7f 0x2d 0xc0 407 408 # CHECK: vcvtsd2si %xmm0, %rax 409 0xc4 0xe1 0xff 0x2d 0xc0 410 411 # CHECK: vucomisd %xmm1, %xmm0 412 0xc5 0xfd 0x2e 0xc1 413 414 # CHECK: vucomiss %xmm1, %xmm0 415 0xc5 0xfc 0x2e 0xc1 416 417 # CHECK: vcomisd %xmm1, %xmm0 418 0xc5 0xfd 0x2f 0xc1 419 420 # CHECK: vcomiss %xmm1, %xmm0 421 0xc5 0xfc 0x2f 0xc1 422 423 # CHECK: vaddss %xmm1, %xmm0, %xmm0 424 0xc5 0xfe 0x58 0xc1 425 426 # CHECK: xsave (%rax) 427 0x0f 0xae 0x20 428 429 # CHECK: xrstor (%rax) 430 0x0f 0xae 0x28 431 432 # CHECK: xsaveopt (%rax) 433 0x0f 0xae 0x30 434 435 # CHECK: rdfsbasel %eax 436 0xf3 0x0f 0xae 0xc0 437 438 # CHECK: rdgsbasel %eax 439 0xf3 0x0f 0xae 0xc8 440 441 # CHECK: wrfsbasel %eax 442 0xf3 0x0f 0xae 0xd0 443 444 # CHECK: wrgsbasel %eax 445 0xf3 0x0f 0xae 0xd8 446 447 # CHECK: rdfsbaseq %rax 448 0xf3 0x48 0x0f 0xae 0xc0 449 450 # CHECK: rdgsbaseq %rax 451 0xf3 0x48 0x0f 0xae 0xc8 452 453 # CHECK: wrfsbaseq %rax 454 0xf3 0x48 0x0f 0xae 0xd0 455 456 # CHECK: wrgsbaseq %rax 457 0xf3 0x48 0x0f 0xae 0xd8 458 459 # CHECK: vcvtph2ps %xmm0, %xmm0 460 0xc4 0xe2 0x79 0x13 0xc0 461 462 # CHECK: vcvtph2ps (%rax), %xmm0 463 0xc4 0xe2 0x79 0x13 0x00 464 465 # CHECK: vcvtph2ps %xmm0, %ymm0 466 0xc4 0xe2 0x7d 0x13 0xc0 467 468 # CHECK: vcvtph2ps (%rax), %ymm0 469 0xc4 0xe2 0x7d 0x13 0x00 470 471 # CHECK: vcvtps2ph $0, %xmm0, %xmm0 472 0xc4 0xe3 0x79 0x1d 0xc0 0x00 473 474 # CHECK: vcvtps2ph $0, %xmm0, (%rax) 475 0xc4 0xe3 0x79 0x1d 0x00 0x00 476 477 # CHECK: vcvtps2ph $0, %ymm0, %xmm0 478 0xc4 0xe3 0x7d 0x1d 0xc0 0x00 479 480 # CHECK: vcvtps2ph $0, %ymm0, (%rax) 481 0xc4 0xe3 0x7d 0x1d 0x00 0x00 482 483 # CHECK: popcntl %eax, %eax 484 0xf3 0x0f 0xb8 0xc0 485 486 # CHECK: popcntw %ax, %ax 487 0x66 0xf3 0x0f 0xb8 0xc0 488 489 # CHECK: popcntq %rax, %rax 490 0xf3 0x48 0x0f 0xb8 0xc0 491 492 # CHECK: lzcntl %eax, %eax 493 0xf3 0x0f 0xbd 0xc0 494 495 # CHECK: lzcntw %ax, %ax 496 0x66 0xf3 0x0f 0xbd 0xc0 497 498 # CHECK: lzcntq %rax, %rax 499 0xf3 0x48 0x0f 0xbd 0xc0 500 501 # CHECK: tzcntl %eax, %eax 502 0xf3 0x0f 0xbc 0xc0 503 504 # CHECK: tzcntw %ax, %ax 505 0x66 0xf3 0x0f 0xbc 0xc0 506 507 # CHECK: tzcntq %rax, %rax 508 0xf3 0x48 0x0f 0xbc 0xc0 509 510 # CHECK: andnl %ecx, %r15d, %eax 511 0xc4 0xe2 0x00 0xf2 0xc1 512 513 # CHECK: andnq %rax, %r15, %rax 514 0xc4 0xe2 0x80 0xf2 0xc0 515 516 # CHECK: andnl (%rax), %r15d, %eax 517 0xc4 0xe2 0x00 0xf2 0x00 518 519 # CHECK: andnq (%rax), %r15, %rax 520 0xc4 0xe2 0x80 0xf2 0x00 521