1 // RUN: llvm-mc -triple x86_64-unknown-unknown -show-encoding %s > %t 2> %t.err 2 // RUN: FileCheck < %t %s 3 // RUN: FileCheck --check-prefix=CHECK-STDERR < %t.err %s 4 5 monitor 6 // CHECK: monitor 7 // CHECK: encoding: [0x0f,0x01,0xc8] 8 monitor %rax, %rcx, %rdx 9 // CHECK: monitor 10 // CHECK: encoding: [0x0f,0x01,0xc8] 11 mwait 12 // CHECK: mwait 13 // CHECK: encoding: [0x0f,0x01,0xc9] 14 mwait %rax, %rcx 15 // CHECK: mwait 16 // CHECK: encoding: [0x0f,0x01,0xc9] 17 18 // Suffix inference: 19 20 // CHECK: addl $0, %eax 21 add $0, %eax 22 // CHECK: addb $255, %al 23 add $0xFF, %al 24 // CHECK: orq %rax, %rdx 25 or %rax, %rdx 26 // CHECK: shlq $3, %rax 27 shl $3, %rax 28 29 30 // CHECK: subb %al, %al 31 subb %al, %al 32 33 // CHECK: addl $24, %eax 34 addl $24, %eax 35 36 // CHECK: movl %eax, 10(%ebp) 37 movl %eax, 10(%ebp) 38 // CHECK: movl %eax, 10(%ebp,%ebx) 39 movl %eax, 10(%ebp, %ebx) 40 // CHECK: movl %eax, 10(%ebp,%ebx,4) 41 movl %eax, 10(%ebp, %ebx, 4) 42 // CHECK: movl %eax, 10(,%ebx,4) 43 movl %eax, 10(, %ebx, 4) 44 45 // CHECK: movl 0, %eax 46 movl 0, %eax 47 // CHECK: movl $0, %eax 48 movl $0, %eax 49 50 // CHECK: ret 51 ret 52 53 // CHECK: retw 54 retw 55 56 // FIXME: Check that this matches SUB32ri8 57 // CHECK: subl $1, %eax 58 subl $1, %eax 59 60 // FIXME: Check that this matches SUB32ri8 61 // CHECK: subl $-1, %eax 62 subl $-1, %eax 63 64 // FIXME: Check that this matches SUB32ri 65 // CHECK: subl $256, %eax 66 subl $256, %eax 67 68 // FIXME: Check that this matches XOR64ri8 69 // CHECK: xorq $1, %rax 70 xorq $1, %rax 71 72 // FIXME: Check that this matches XOR64ri32 73 // CHECK: xorq $256, %rax 74 xorq $256, %rax 75 76 // FIXME: Check that this matches SUB8rr 77 // CHECK: subb %al, %bl 78 subb %al, %bl 79 80 // FIXME: Check that this matches SUB16rr 81 // CHECK: subw %ax, %bx 82 subw %ax, %bx 83 84 // FIXME: Check that this matches SUB32rr 85 // CHECK: subl %eax, %ebx 86 subl %eax, %ebx 87 88 // FIXME: Check that this matches the correct instruction. 89 // CHECK: callq *%rax 90 call *%rax 91 92 // FIXME: Check that this matches the correct instruction. 93 // CHECK: shldl %cl, %eax, %ebx 94 shldl %cl, %eax, %ebx 95 96 // CHECK: shll $2, %eax 97 shll $2, %eax 98 99 // CHECK: shll $2, %eax 100 sall $2, %eax 101 102 // CHECK: rep 103 // CHECK: insb 104 rep;insb 105 106 // CHECK: rep 107 // CHECK: outsb 108 rep;outsb 109 110 // CHECK: rep 111 // CHECK: movsb 112 rep;movsb 113 114 115 // rdar://8470918 116 smovb // CHECK: movsb 117 smovw // CHECK: movsw 118 smovl // CHECK: movsl 119 smovq // CHECK: movsq 120 121 // rdar://8456361 122 // CHECK: rep 123 // CHECK: movsl 124 rep movsd 125 126 // CHECK: rep 127 // CHECK: lodsb 128 rep;lodsb 129 130 // CHECK: rep 131 // CHECK: stosb 132 rep;stosb 133 134 // NOTE: repz and repe have the same opcode as rep 135 // CHECK: rep 136 // CHECK: cmpsb 137 repz;cmpsb 138 139 // NOTE: repnz has the same opcode as repne 140 // CHECK: repne 141 // CHECK: cmpsb 142 repnz;cmpsb 143 144 // NOTE: repe and repz have the same opcode as rep 145 // CHECK: rep 146 // CHECK: scasb 147 repe;scasb 148 149 // CHECK: repne 150 // CHECK: scasb 151 repne;scasb 152 153 // CHECK: lock 154 // CHECK: cmpxchgb %al, (%ebx) 155 lock;cmpxchgb %al, 0(%ebx) 156 157 // CHECK: cs 158 // CHECK: movb (%eax), %al 159 cs;movb 0(%eax), %al 160 161 // CHECK: ss 162 // CHECK: movb (%eax), %al 163 ss;movb 0(%eax), %al 164 165 // CHECK: ds 166 // CHECK: movb (%eax), %al 167 ds;movb 0(%eax), %al 168 169 // CHECK: es 170 // CHECK: movb (%eax), %al 171 es;movb 0(%eax), %al 172 173 // CHECK: fs 174 // CHECK: movb (%eax), %al 175 fs;movb 0(%eax), %al 176 177 // CHECK: gs 178 // CHECK: movb (%eax), %al 179 gs;movb 0(%eax), %al 180 181 // CHECK: fadd %st(0) 182 // CHECK: fadd %st(1) 183 // CHECK: fadd %st(7) 184 185 fadd %st(0) 186 fadd %st(1) 187 fadd %st(7) 188 189 // CHECK: leal 0, %eax 190 leal 0, %eax 191 192 // rdar://7986634 - Insensitivity on opcodes. 193 // CHECK: int3 194 INT3 195 196 // rdar://8735979 - int $3 -> int3 197 // CHECK: int3 198 int $3 199 200 201 // Allow scale factor without index register. 202 // CHECK: movaps %xmm3, (%esi) 203 // CHECK-STDERR: warning: scale factor without index register is ignored 204 movaps %xmm3, (%esi, 2) 205 206 // CHECK: imull $12, %eax 207 imul $12, %eax 208 209 // CHECK: imull %ecx, %eax 210 imull %ecx, %eax 211 212 213 // rdar://8208481 214 // CHECK: outb %al, $161 215 outb %al, $161 216 // CHECK: outw %ax, $128 217 outw %ax, $128 218 // CHECK: inb $161, %al 219 inb $161, %al 220 221 // rdar://8017621 222 // CHECK: pushq $1 223 push $1 224 225 // rdar://9716860 226 pushq $1 227 // CHECK: encoding: [0x6a,0x01] 228 pushq $1111111 229 // CHECK: encoding: [0x68,0x47,0xf4,0x10,0x00] 230 231 // rdar://8017530 232 // CHECK: sldtw 4 233 sldt 4 234 235 // rdar://8208499 236 // CHECK: cmovnew %bx, %ax 237 cmovnz %bx, %ax 238 // CHECK: cmovneq %rbx, %rax 239 cmovnzq %rbx, %rax 240 241 242 // rdar://8407928 243 // CHECK: inb $127, %al 244 // CHECK: inw %dx, %ax 245 // CHECK: outb %al, $127 246 // CHECK: outw %ax, %dx 247 // CHECK: inl %dx, %eax 248 inb $0x7f 249 inw %dx 250 outb $0x7f 251 outw %dx 252 inl %dx 253 254 255 // PR8114 256 // CHECK: outb %al, %dx 257 // CHECK: outb %al, %dx 258 // CHECK: outw %ax, %dx 259 // CHECK: outw %ax, %dx 260 // CHECK: outl %eax, %dx 261 // CHECK: outl %eax, %dx 262 263 out %al, (%dx) 264 outb %al, (%dx) 265 out %ax, (%dx) 266 outw %ax, (%dx) 267 out %eax, (%dx) 268 outl %eax, (%dx) 269 270 // CHECK: inb %dx, %al 271 // CHECK: inb %dx, %al 272 // CHECK: inw %dx, %ax 273 // CHECK: inw %dx, %ax 274 // CHECK: inl %dx, %eax 275 // CHECK: inl %dx, %eax 276 277 in (%dx), %al 278 inb (%dx), %al 279 in (%dx), %ax 280 inw (%dx), %ax 281 in (%dx), %eax 282 inl (%dx), %eax 283 284 //PR15455 285 286 // permitted invalid memory forms 287 outs (%rsi), (%dx) 288 // CHECK: outsw (%rsi), %dx 289 outsb (%rsi), (%dx) 290 // CHECK: outsb (%rsi), %dx 291 outsw (%rsi), (%dx) 292 // CHECK: outsw (%rsi), %dx 293 outsl (%rsi), (%dx) 294 // CHECK: outsl (%rsi), %dx 295 296 ins (%dx), %es:(%rdi) 297 // CHECK: insw %dx, %es:(%rdi) 298 insb (%dx), %es:(%rdi) 299 // CHECK: insb %dx, %es:(%rdi) 300 insw (%dx), %es:(%rdi) 301 // CHECK: insw %dx, %es:(%rdi) 302 insl (%dx), %es:(%rdi) 303 // CHECK: insl %dx, %es:(%rdi) 304 305 // rdar://8431422 306 307 // CHECK: fxch %st(1) 308 // CHECK: fucom %st(1) 309 // CHECK: fucomp %st(1) 310 // CHECK: faddp %st(1) 311 // CHECK: faddp %st(0) 312 // CHECK: fsubp %st(1) 313 // CHECK: fsubrp %st(1) 314 // CHECK: fmulp %st(1) 315 // CHECK: fdivp %st(1) 316 // CHECK: fdivrp %st(1) 317 318 fxch 319 fucom 320 fucomp 321 faddp 322 faddp %st 323 fsubp 324 fsubrp 325 fmulp 326 fdivp 327 fdivrp 328 329 // CHECK: fcomi %st(1) 330 // CHECK: fcomi %st(2) 331 // CHECK: fucomi %st(1) 332 // CHECK: fucomi %st(2) 333 // CHECK: fucomi %st(2) 334 335 fcomi 336 fcomi %st(2) 337 fucomi 338 fucomi %st(2) 339 fucomi %st(2), %st 340 341 // CHECK: fnstsw %ax 342 // CHECK: fnstsw %ax 343 // CHECK: fnstsw %ax 344 // CHECK: fnstsw %ax 345 346 fnstsw 347 fnstsw %ax 348 fnstsw %eax 349 fnstsw %al 350 351 // rdar://8431880 352 // CHECK: rclb %bl 353 // CHECK: rcll 3735928559(%ebx,%ecx,8) 354 // CHECK: rcrl %ecx 355 // CHECK: rcrl 305419896 356 rcl %bl 357 rcll 0xdeadbeef(%ebx,%ecx,8) 358 rcr %ecx 359 rcrl 0x12345678 360 361 rclb %bl // CHECK: rclb %bl # encoding: [0xd0,0xd3] 362 rclb $1, %bl // CHECK: rclb %bl # encoding: [0xd0,0xd3] 363 rclb $2, %bl // CHECK: rclb $2, %bl # encoding: [0xc0,0xd3,0x02] 364 365 // rdar://8418316 366 // PR12173 367 // CHECK: shldw %cl, %bx, %dx 368 // CHECK: shldw %cl, %bx, %dx 369 // CHECK: shldw $1, %bx, %dx 370 // CHECK: shldw %cl, %bx, (%rax) 371 // CHECK: shldw %cl, %bx, (%rax) 372 // CHECK: shrdw %cl, %bx, %dx 373 // CHECK: shrdw %cl, %bx, %dx 374 // CHECK: shrdw $1, %bx, %dx 375 // CHECK: shrdw %cl, %bx, (%rax) 376 // CHECK: shrdw %cl, %bx, (%rax) 377 378 shld %bx, %dx 379 shld %cl, %bx, %dx 380 shld $1, %bx, %dx 381 shld %bx, (%rax) 382 shld %cl, %bx, (%rax) 383 shrd %bx, %dx 384 shrd %cl, %bx, %dx 385 shrd $1, %bx, %dx 386 shrd %bx, (%rax) 387 shrd %cl, %bx, (%rax) 388 389 // CHECK: sldtl %ecx 390 // CHECK: encoding: [0x0f,0x00,0xc1] 391 // CHECK: sldtw %cx 392 // CHECK: encoding: [0x66,0x0f,0x00,0xc1] 393 394 sldt %ecx 395 sldt %cx 396 397 // CHECK: lcalll *3135175374 398 // CHECK: ljmpl *3135175374 399 lcall *0xbadeface 400 ljmp *0xbadeface 401 402 403 // rdar://8444631 404 // CHECK: enter $31438, $0 405 // CHECK: encoding: [0xc8,0xce,0x7a,0x00] 406 // CHECK: enter $31438, $1 407 // CHECK: encoding: [0xc8,0xce,0x7a,0x01] 408 // CHECK: enter $31438, $127 409 // CHECK: encoding: [0xc8,0xce,0x7a,0x7f] 410 enter $0x7ace,$0 411 enter $0x7ace,$1 412 enter $0x7ace,$0x7f 413 414 415 // rdar://8456364 416 // CHECK: movw %cs, %ax 417 mov %CS, %ax 418 419 // rdar://8456391 420 fcmovb %st(1), %st(0) // CHECK: fcmovb %st(1), %st(0) 421 fcmove %st(1), %st(0) // CHECK: fcmove %st(1), %st(0) 422 fcmovbe %st(1), %st(0) // CHECK: fcmovbe %st(1), %st(0) 423 fcmovu %st(1), %st(0) // CHECK: fcmovu %st(1), %st(0) 424 425 fcmovnb %st(1), %st(0) // CHECK: fcmovnb %st(1), %st(0) 426 fcmovne %st(1), %st(0) // CHECK: fcmovne %st(1), %st(0) 427 fcmovnbe %st(1), %st(0) // CHECK: fcmovnbe %st(1), %st(0) 428 fcmovnu %st(1), %st(0) // CHECK: fcmovnu %st(1), %st(0) 429 430 fcmovnae %st(1), %st(0) // CHECK: fcmovb %st(1), %st(0) 431 fcmovna %st(1), %st(0) // CHECK: fcmovbe %st(1), %st(0) 432 433 fcmovae %st(1), %st(0) // CHECK: fcmovnb %st(1), %st(0) 434 fcmova %st(1), %st(0) // CHECK: fcmovnbe %st(1), %st(0) 435 436 // rdar://8456417 437 .byte (88 + 1) & 15 // CHECK: .byte 9 438 439 // rdar://8456412 440 mov %rdx, %cr0 441 // CHECK: movq %rdx, %cr0 442 // CHECK: encoding: [0x0f,0x22,0xc2] 443 mov %rdx, %cr4 444 // CHECK: movq %rdx, %cr4 445 // CHECK: encoding: [0x0f,0x22,0xe2] 446 mov %rdx, %cr8 447 // CHECK: movq %rdx, %cr8 448 // CHECK: encoding: [0x44,0x0f,0x22,0xc2] 449 mov %rdx, %cr15 450 // CHECK: movq %rdx, %cr15 451 // CHECK: encoding: [0x44,0x0f,0x22,0xfa] 452 453 // rdar://8456371 - Handle commutable instructions written backward. 454 // CHECK: faddp %st(1) 455 // CHECK: fmulp %st(2) 456 faddp %st, %st(1) 457 fmulp %st, %st(2) 458 459 // rdar://8468087 - Encode these accurately, they are not synonyms. 460 // CHECK: fmul %st(0), %st(1) 461 // CHECK: encoding: [0xdc,0xc9] 462 // CHECK: fmul %st(1) 463 // CHECK: encoding: [0xd8,0xc9] 464 fmul %st, %st(1) 465 fmul %st(1), %st 466 467 // CHECK: fadd %st(0), %st(1) 468 // CHECK: encoding: [0xdc,0xc1] 469 // CHECK: fadd %st(1) 470 // CHECK: encoding: [0xd8,0xc1] 471 fadd %st, %st(1) 472 fadd %st(1), %st 473 474 475 // rdar://8416805 476 // CHECK: xorb %al, %al 477 // CHECK: encoding: [0x30,0xc0] 478 // CHECK: xorw %di, %di 479 // CHECK: encoding: [0x66,0x31,0xff] 480 // CHECK: xorl %esi, %esi 481 // CHECK: encoding: [0x31,0xf6] 482 // CHECK: xorq %rsi, %rsi 483 // CHECK: encoding: [0x48,0x31,0xf6] 484 clrb %al 485 clr %di 486 clr %esi 487 clr %rsi 488 489 // rdar://8456378 490 cltq // CHECK: cltq 491 cdqe // CHECK: cltq 492 cwde // CHECK: cwtl 493 cwtl // CHECK: cwtl 494 495 // rdar://8416805 496 cbw // CHECK: cbtw 497 cwd // CHECK: cwtd 498 cdq // CHECK: cltd 499 cqo // CHECK: cqto 500 501 // rdar://8456378 and PR7557 - fstsw 502 fstsw %ax 503 // CHECK: wait 504 // CHECK: fnstsw 505 fstsw (%rax) 506 // CHECK: wait 507 // CHECK: fnstsw (%rax) 508 509 // PR8259 510 fstcw (%rsp) 511 // CHECK: wait 512 // CHECK: fnstcw (%rsp) 513 514 // PR8259 515 fstcw (%rsp) 516 // CHECK: wait 517 // CHECK: fnstcw (%rsp) 518 519 // PR8258 520 finit 521 // CHECK: wait 522 // CHECK: fninit 523 524 fsave 32493 525 // CHECK: wait 526 // CHECK: fnsave 32493 527 528 529 // rdar://8456382 - cvtsd2si support. 530 cvtsd2si %xmm1, %rax 531 // CHECK: cvtsd2si %xmm1, %rax 532 // CHECK: encoding: [0xf2,0x48,0x0f,0x2d,0xc1] 533 cvtsd2si %xmm1, %eax 534 // CHECK: cvtsd2si %xmm1, %eax 535 // CHECK: encoding: [0xf2,0x0f,0x2d,0xc1] 536 537 cvtsd2siq %xmm0, %rax // CHECK: cvtsd2si %xmm0, %rax 538 cvtsd2sil %xmm0, %eax // CHECK: cvtsd2si %xmm0, %eax 539 cvtsd2si %xmm0, %rax // CHECK: cvtsd2si %xmm0, %rax 540 541 542 cvttpd2dq %xmm1, %xmm0 // CHECK: cvttpd2dq %xmm1, %xmm0 543 cvttpd2dq (%rax), %xmm0 // CHECK: cvttpd2dq (%rax), %xmm0 544 545 cvttps2dq %xmm1, %xmm0 // CHECK: cvttps2dq %xmm1, %xmm0 546 cvttps2dq (%rax), %xmm0 // CHECK: cvttps2dq (%rax), %xmm0 547 548 // rdar://8456376 - llvm-mc rejects 'roundss' 549 roundss $0xE, %xmm0, %xmm0 // CHECK: encoding: [0x66,0x0f,0x3a,0x0a,0xc0,0x0e] 550 roundps $0xE, %xmm0, %xmm0 // CHECK: encoding: [0x66,0x0f,0x3a,0x08,0xc0,0x0e] 551 roundsd $0xE, %xmm0, %xmm0 // CHECK: encoding: [0x66,0x0f,0x3a,0x0b,0xc0,0x0e] 552 roundpd $0xE, %xmm0, %xmm0 // CHECK: encoding: [0x66,0x0f,0x3a,0x09,0xc0,0x0e] 553 554 555 // rdar://8482675 - 32-bit mem operand support in 64-bit mode (0x67 prefix) 556 leal 8(%eax), %esi 557 // CHECK: leal 8(%eax), %esi 558 // CHECK: encoding: [0x67,0x8d,0x70,0x08] 559 leaq 8(%eax), %rsi 560 // CHECK: leaq 8(%eax), %rsi 561 // CHECK: encoding: [0x67,0x48,0x8d,0x70,0x08] 562 leaq 8(%rax), %rsi 563 // CHECK: leaq 8(%rax), %rsi 564 // CHECK: encoding: [0x48,0x8d,0x70,0x08] 565 566 567 cvttpd2dq 0xdeadbeef(%ebx,%ecx,8),%xmm5 568 // CHECK: cvttpd2dq 3735928559(%ebx,%ecx,8), %xmm5 569 // CHECK: encoding: [0x67,0x66,0x0f,0xe6,0xac,0xcb,0xef,0xbe,0xad,0xde] 570 571 // rdar://8490728 - llvm-mc rejects 'movmskpd' 572 movmskpd %xmm6, %rax 573 // CHECK: movmskpd %xmm6, %eax 574 // CHECK: encoding: [0x66,0x0f,0x50,0xc6] 575 movmskpd %xmm6, %eax 576 // CHECK: movmskpd %xmm6, %eax 577 // CHECK: encoding: [0x66,0x0f,0x50,0xc6] 578 579 // rdar://8491845 - Gas supports commuted forms of non-commutable instructions. 580 fdivrp %st(0), %st(1) // CHECK: encoding: [0xde,0xf9] 581 fdivrp %st(1), %st(0) // CHECK: encoding: [0xde,0xf9] 582 583 fsubrp %ST(0), %ST(1) // CHECK: encoding: [0xde,0xe9] 584 fsubrp %ST(1), %ST(0) // CHECK: encoding: [0xde,0xe9] 585 586 // also PR8861 587 fdivp %st(0), %st(1) // CHECK: encoding: [0xde,0xf1] 588 fdivp %st(1), %st(0) // CHECK: encoding: [0xde,0xf1] 589 590 591 movl foo(%rip), %eax 592 // CHECK: movl foo(%rip), %eax 593 // CHECK: encoding: [0x8b,0x05,A,A,A,A] 594 // CHECK: fixup A - offset: 2, value: foo-4, kind: reloc_riprel_4byte 595 596 movb $12, foo(%rip) 597 // CHECK: movb $12, foo(%rip) 598 // CHECK: encoding: [0xc6,0x05,A,A,A,A,0x0c] 599 // CHECK: fixup A - offset: 2, value: foo-5, kind: reloc_riprel_4byte 600 601 movw $12, foo(%rip) 602 // CHECK: movw $12, foo(%rip) 603 // CHECK: encoding: [0x66,0xc7,0x05,A,A,A,A,0x0c,0x00] 604 // CHECK: fixup A - offset: 3, value: foo-6, kind: reloc_riprel_4byte 605 606 movl $12, foo(%rip) 607 // CHECK: movl $12, foo(%rip) 608 // CHECK: encoding: [0xc7,0x05,A,A,A,A,0x0c,0x00,0x00,0x00] 609 // CHECK: fixup A - offset: 2, value: foo-8, kind: reloc_riprel_4byte 610 611 movq $12, foo(%rip) 612 // CHECK: movq $12, foo(%rip) 613 // CHECK: encoding: [0x48,0xc7,0x05,A,A,A,A,0x0c,0x00,0x00,0x00] 614 // CHECK: fixup A - offset: 3, value: foo-8, kind: reloc_riprel_4byte 615 616 movl foo(%eip), %eax 617 // CHECK: movl foo(%eip), %eax 618 // CHECK: encoding: [0x67,0x8b,0x05,A,A,A,A] 619 // CHECK: fixup A - offset: 3, value: foo-4, kind: reloc_riprel_4byte 620 621 movb $12, foo(%eip) 622 // CHECK: movb $12, foo(%eip) 623 // CHECK: encoding: [0x67,0xc6,0x05,A,A,A,A,0x0c] 624 // CHECK: fixup A - offset: 3, value: foo-5, kind: reloc_riprel_4byte 625 626 movw $12, foo(%eip) 627 // CHECK: movw $12, foo(%eip) 628 // CHECK: encoding: [0x67,0x66,0xc7,0x05,A,A,A,A,0x0c,0x00] 629 // CHECK: fixup A - offset: 4, value: foo-6, kind: reloc_riprel_4byte 630 631 movl $12, foo(%eip) 632 // CHECK: movl $12, foo(%eip) 633 // CHECK: encoding: [0x67,0xc7,0x05,A,A,A,A,0x0c,0x00,0x00,0x00] 634 // CHECK: fixup A - offset: 3, value: foo-8, kind: reloc_riprel_4byte 635 636 movq $12, foo(%eip) 637 // CHECK: movq $12, foo(%eip) 638 // CHECK: encoding: [0x67,0x48,0xc7,0x05,A,A,A,A,0x0c,0x00,0x00,0x00] 639 // CHECK: fixup A - offset: 4, value: foo-8, kind: reloc_riprel_4byte 640 641 // CHECK: addq $-424, %rax 642 // CHECK: encoding: [0x48,0x05,0x58,0xfe,0xff,0xff] 643 addq $-424, %rax 644 645 646 // CHECK: movq _foo@GOTPCREL(%rip), %rax 647 // CHECK: encoding: [0x48,0x8b,0x05,A,A,A,A] 648 // CHECK: fixup A - offset: 3, value: _foo@GOTPCREL-4, kind: reloc_riprel_4byte_movq_load 649 movq _foo@GOTPCREL(%rip), %rax 650 651 // CHECK: movq _foo@GOTPCREL(%rip), %r14 652 // CHECK: encoding: [0x4c,0x8b,0x35,A,A,A,A] 653 // CHECK: fixup A - offset: 3, value: _foo@GOTPCREL-4, kind: reloc_riprel_4byte_movq_load 654 movq _foo@GOTPCREL(%rip), %r14 655 656 // CHECK: movq _foo@GOTPCREL(%eip), %rax 657 // CHECK: encoding: [0x67,0x48,0x8b,0x05,A,A,A,A] 658 // CHECK: fixup A - offset: 4, value: _foo@GOTPCREL-4, kind: reloc_riprel_4byte_movq_load 659 movq _foo@GOTPCREL(%eip), %rax 660 661 // CHECK: movq _foo@GOTPCREL(%eip), %r14 662 // CHECK: encoding: [0x67,0x4c,0x8b,0x35,A,A,A,A] 663 // CHECK: fixup A - offset: 4, value: _foo@GOTPCREL-4, kind: reloc_riprel_4byte_movq_load 664 movq _foo@GOTPCREL(%eip), %r14 665 666 // CHECK: movq (%r13,%rax,8), %r13 667 // CHECK: encoding: [0x4d,0x8b,0x6c,0xc5,0x00] 668 movq 0x00(%r13,%rax,8),%r13 669 670 // CHECK: testq %rax, %rbx 671 // CHECK: encoding: [0x48,0x85,0xc3] 672 testq %rax, %rbx 673 674 // CHECK: cmpq %rbx, %r14 675 // CHECK: encoding: [0x49,0x39,0xde] 676 cmpq %rbx, %r14 677 678 // rdar://7947167 679 680 movsq 681 // CHECK: movsq 682 // CHECK: encoding: [0x48,0xa5] 683 684 movsl 685 // CHECK: movsl 686 // CHECK: encoding: [0xa5] 687 688 stosq 689 // CHECK: stosq 690 // CHECK: encoding: [0x48,0xab] 691 stosl 692 // CHECK: stosl 693 // CHECK: encoding: [0xab] 694 695 696 // Not moffset forms of moves, they are x86-32 only! rdar://7947184 697 movb 0, %al // CHECK: movb 0, %al # encoding: [0x8a,0x04,0x25,0x00,0x00,0x00,0x00] 698 movw 0, %ax // CHECK: movw 0, %ax # encoding: [0x66,0x8b,0x04,0x25,0x00,0x00,0x00,0x00] 699 movl 0, %eax // CHECK: movl 0, %eax # encoding: [0x8b,0x04,0x25,0x00,0x00,0x00,0x00] 700 701 // CHECK: pushfq # encoding: [0x9c] 702 pushf 703 // CHECK: pushfq # encoding: [0x9c] 704 pushfq 705 // CHECK: popfq # encoding: [0x9d] 706 popf 707 // CHECK: popfq # encoding: [0x9d] 708 popfq 709 710 // CHECK: movabsq $-281474976710654, %rax 711 // CHECK: encoding: [0x48,0xb8,0x02,0x00,0x00,0x00,0x00,0x00,0xff,0xff] 712 movabsq $0xFFFF000000000002, %rax 713 714 // CHECK: movabsq $-281474976710654, %rax 715 // CHECK: encoding: [0x48,0xb8,0x02,0x00,0x00,0x00,0x00,0x00,0xff,0xff] 716 movq $0xFFFF000000000002, %rax 717 718 // CHECK: movq $-65536, %rax 719 // CHECK: encoding: [0x48,0xc7,0xc0,0x00,0x00,0xff,0xff] 720 movq $0xFFFFFFFFFFFF0000, %rax 721 722 // CHECK: movq $-256, %rax 723 // CHECK: encoding: [0x48,0xc7,0xc0,0x00,0xff,0xff,0xff] 724 movq $0xFFFFFFFFFFFFFF00, %rax 725 726 // CHECK: movq $10, %rax 727 // CHECK: encoding: [0x48,0xc7,0xc0,0x0a,0x00,0x00,0x00] 728 movq $10, %rax 729 730 // CHECK: movabsb -6066930261531658096, %al 731 // CHECK: encoding: [0xa0,0x90,0x78,0x56,0x34,0x12,0xef,0xcd,0xab] 732 movabsb 0xabcdef1234567890,%al 733 734 // CHECK: movabsw -6066930261531658096, %ax 735 // CHECK: encoding: [0x66,0xa1,0x90,0x78,0x56,0x34,0x12,0xef,0xcd,0xab] 736 movabsw 0xabcdef1234567890,%ax 737 738 // CHECK: movabsl -6066930261531658096, %eax 739 // CHECK: encoding: [0xa1,0x90,0x78,0x56,0x34,0x12,0xef,0xcd,0xab] 740 movabsl 0xabcdef1234567890,%eax 741 742 // CHECK: movabsq -6066930261531658096, %rax 743 // CHECK: encoding: [0x48,0xa1,0x90,0x78,0x56,0x34,0x12,0xef,0xcd,0xab] 744 movabsq 0xabcdef1234567890, %rax 745 746 // CHECK: movabsb %al, -6066930261531658096 747 // CHECK: encoding: [0xa2,0x90,0x78,0x56,0x34,0x12,0xef,0xcd,0xab] 748 movabsb %al,0xabcdef1234567890 749 750 // CHECK: movabsw %ax, -6066930261531658096 751 // CHECK: encoding: [0x66,0xa3,0x90,0x78,0x56,0x34,0x12,0xef,0xcd,0xab] 752 movabsw %ax,0xabcdef1234567890 753 754 // CHECK: movabsl %eax, -6066930261531658096 755 // CHECK: encoding: [0xa3,0x90,0x78,0x56,0x34,0x12,0xef,0xcd,0xab] 756 movabsl %eax,0xabcdef1234567890 757 758 // CHECK: movabsq %rax, -6066930261531658096 759 // CHECK: encoding: [0x48,0xa3,0x90,0x78,0x56,0x34,0x12,0xef,0xcd,0xab] 760 movabsq %rax,0xabcdef1234567890 761 762 // rdar://8014869 763 // 764 // CHECK: ret 765 // CHECK: encoding: [0xc3] 766 retq 767 768 // CHECK: sete %al 769 // CHECK: encoding: [0x0f,0x94,0xc0] 770 setz %al 771 772 // CHECK: setne %al 773 // CHECK: encoding: [0x0f,0x95,0xc0] 774 setnz %al 775 776 // CHECK: je 0 777 // CHECK: encoding: [0x74,A] 778 jz 0 779 780 // CHECK: jne 781 // CHECK: encoding: [0x75,A] 782 jnz 0 783 784 // PR9264 785 btl $1, 0 // CHECK: btl $1, 0 # encoding: [0x0f,0xba,0x24,0x25,0x00,0x00,0x00,0x00,0x01] 786 bt $1, 0 // CHECK: btl $1, 0 # encoding: [0x0f,0xba,0x24,0x25,0x00,0x00,0x00,0x00,0x01] 787 788 // rdar://8017515 789 btq $0x01,%rdx 790 // CHECK: btq $1, %rdx 791 // CHECK: encoding: [0x48,0x0f,0xba,0xe2,0x01] 792 793 //rdar://8017633 794 // CHECK: movzbl %al, %esi 795 // CHECK: encoding: [0x0f,0xb6,0xf0] 796 movzx %al, %esi 797 798 // CHECK: movzbq %al, %rsi 799 // CHECK: encoding: [0x48,0x0f,0xb6,0xf0] 800 movzx %al, %rsi 801 802 // CHECK: movsbw %al, %ax 803 // CHECK: encoding: [0x66,0x0f,0xbe,0xc0] 804 movsx %al, %ax 805 806 // CHECK: movsbl %al, %eax 807 // CHECK: encoding: [0x0f,0xbe,0xc0] 808 movsx %al, %eax 809 810 // CHECK: movswl %ax, %eax 811 // CHECK: encoding: [0x0f,0xbf,0xc0] 812 movsx %ax, %eax 813 814 // CHECK: movsbq %bl, %rax 815 // CHECK: encoding: [0x48,0x0f,0xbe,0xc3] 816 movsx %bl, %rax 817 818 // CHECK: movswq %cx, %rax 819 // CHECK: encoding: [0x48,0x0f,0xbf,0xc1] 820 movsx %cx, %rax 821 822 // CHECK: movslq %edi, %rax 823 // CHECK: encoding: [0x48,0x63,0xc7] 824 movsx %edi, %rax 825 826 // CHECK: movzbw %al, %ax 827 // CHECK: encoding: [0x66,0x0f,0xb6,0xc0] 828 movzx %al, %ax 829 830 // CHECK: movzbl %al, %eax 831 // CHECK: encoding: [0x0f,0xb6,0xc0] 832 movzx %al, %eax 833 834 // CHECK: movzwl %ax, %eax 835 // CHECK: encoding: [0x0f,0xb7,0xc0] 836 movzx %ax, %eax 837 838 // CHECK: movzbq %bl, %rax 839 // CHECK: encoding: [0x48,0x0f,0xb6,0xc3] 840 movzx %bl, %rax 841 842 // CHECK: movzwq %cx, %rax 843 // CHECK: encoding: [0x48,0x0f,0xb7,0xc1] 844 movzx %cx, %rax 845 846 // CHECK: movsbw (%rax), %ax 847 // CHECK: encoding: [0x66,0x0f,0xbe,0x00] 848 movsx (%rax), %ax 849 850 // CHECK: movzbw (%rax), %ax 851 // CHECK: encoding: [0x66,0x0f,0xb6,0x00] 852 movzx (%rax), %ax 853 854 855 // rdar://7873482 856 // CHECK: [0x65,0x8b,0x04,0x25,0x7c,0x00,0x00,0x00] 857 movl %gs:124, %eax 858 859 // CHECK: jmpq *8(%rax) 860 // CHECK: encoding: [0xff,0x60,0x08] 861 jmp *8(%rax) 862 863 // CHECK: btq $61, -216(%rbp) 864 // CHECK: encoding: [0x48,0x0f,0xba,0xa5,0x28,0xff,0xff,0xff,0x3d] 865 btq $61, -216(%rbp) 866 867 868 // rdar://8061602 869 L1: 870 jecxz L1 871 // CHECK: jecxz L1 872 // CHECK: encoding: [0x67,0xe3,A] 873 jrcxz L1 874 // CHECK: jrcxz L1 875 // CHECK: encoding: [0xe3,A] 876 877 // PR8061 878 xchgl 368(%rax),%ecx 879 // CHECK: xchgl %ecx, 368(%rax) 880 xchgl %ecx, 368(%rax) 881 // CHECK: xchgl %ecx, 368(%rax) 882 883 // rdar://8407548 884 xchg 0xdeadbeef(%rbx,%rcx,8),%bl 885 // CHECK: xchgb %bl, 3735928559(%rbx,%rcx,8) 886 887 888 889 // PR7254 890 lock incl 1(%rsp) 891 // CHECK: lock 892 // CHECK: incl 1(%rsp) 893 894 // rdar://8741045 895 lock/incl 1(%rsp) 896 // CHECK: lock 897 // CHECK: incl 1(%rsp) 898 899 900 lock addq %rsi, (%rdi) 901 // CHECK: lock 902 // CHECK: encoding: [0xf0] 903 // CHECK: addq %rsi, (%rdi) 904 // CHECK: encoding: [0x48,0x01,0x37] 905 906 lock subq %rsi, (%rdi) 907 // CHECK: lock 908 // CHECK: encoding: [0xf0] 909 // CHECK: subq %rsi, (%rdi) 910 // CHECK: encoding: [0x48,0x29,0x37] 911 912 lock andq %rsi, (%rdi) 913 // CHECK: lock 914 // CHECK: encoding: [0xf0] 915 // CHECK: andq %rsi, (%rdi) 916 // CHECK: encoding: [0x48,0x21,0x37] 917 918 lock orq %rsi, (%rdi) 919 // CHECK: lock 920 // CHECK: encoding: [0xf0] 921 // CHECK: orq %rsi, (%rdi) 922 // CHECK: encoding: [0x48,0x09,0x37] 923 924 lock xorq %rsi, (%rdi) 925 // CHECK: lock 926 // CHECK: encoding: [0xf0] 927 // CHECK: xorq %rsi, (%rdi) 928 // CHECK: encoding: [0x48,0x31,0x37] 929 930 931 // rdar://8033482 932 rep movsl 933 // CHECK: rep 934 // CHECK: encoding: [0xf3] 935 // CHECK: movsl 936 // CHECK: encoding: [0xa5] 937 938 939 // rdar://8403974 940 iret 941 // CHECK: iretl 942 // CHECK: encoding: [0xcf] 943 iretw 944 // CHECK: iretw 945 // CHECK: encoding: [0x66,0xcf] 946 iretl 947 // CHECK: iretl 948 // CHECK: encoding: [0xcf] 949 iretq 950 // CHECK: iretq 951 // CHECK: encoding: [0x48,0xcf] 952 953 // rdar://8416805 954 // CHECK: retw $31438 955 // CHECK: encoding: [0x66,0xc2,0xce,0x7a] 956 retw $0x7ace 957 958 // CHECK: lretw $31438 959 // CHECK: encoding: [0x66,0xca,0xce,0x7a] 960 lretw $0x7ace 961 962 // PR8592 963 lretq // CHECK: lretq # encoding: [0x48,0xcb] 964 lretl // CHECK: lretl # encoding: [0xcb] 965 lret // CHECK: lretl # encoding: [0xcb] 966 lretw // CHECK: lretw # encoding: [0x66,0xcb] 967 968 // rdar://8403907 969 sysret 970 // CHECK: sysretl 971 // CHECK: encoding: [0x0f,0x07] 972 sysretl 973 // CHECK: sysretl 974 // CHECK: encoding: [0x0f,0x07] 975 sysretq 976 // CHECK: sysretq 977 // CHECK: encoding: [0x48,0x0f,0x07] 978 979 // rdar://8407242 980 push %fs 981 // CHECK: pushq %fs 982 // CHECK: encoding: [0x0f,0xa0] 983 push %gs 984 // CHECK: pushq %gs 985 // CHECK: encoding: [0x0f,0xa8] 986 987 pushw %fs 988 // CHECK: pushw %fs 989 // CHECK: encoding: [0x66,0x0f,0xa0] 990 pushw %gs 991 // CHECK: pushw %gs 992 // CHECK: encoding: [0x66,0x0f,0xa8] 993 994 995 pop %fs 996 // CHECK: popq %fs 997 // CHECK: encoding: [0x0f,0xa1] 998 pop %gs 999 // CHECK: popq %gs 1000 // CHECK: encoding: [0x0f,0xa9] 1001 1002 popw %fs 1003 // CHECK: popw %fs 1004 // CHECK: encoding: [0x66,0x0f,0xa1] 1005 popw %gs 1006 // CHECK: popw %gs 1007 // CHECK: encoding: [0x66,0x0f,0xa9] 1008 1009 // rdar://8438816 1010 fildq -8(%rsp) 1011 fildll -8(%rsp) 1012 // CHECK: fildll -8(%rsp) 1013 // CHECK: encoding: [0xdf,0x6c,0x24,0xf8] 1014 // CHECK: fildll -8(%rsp) 1015 // CHECK: encoding: [0xdf,0x6c,0x24,0xf8] 1016 1017 // CHECK: callq a 1018 callq a 1019 1020 // CHECK: leaq -40(%rbp), %r15 1021 leaq -40(%rbp), %r15 1022 1023 1024 1025 // rdar://8013734 - Alias dr6=db6 1026 mov %dr6, %rax 1027 mov %db6, %rax 1028 // CHECK: movq %dr6, %rax 1029 // CHECK: movq %dr6, %rax 1030 1031 1032 // INC/DEC encodings. 1033 incb %al // CHECK: incb %al # encoding: [0xfe,0xc0] 1034 incw %ax // CHECK: incw %ax # encoding: [0x66,0xff,0xc0] 1035 incl %eax // CHECK: incl %eax # encoding: [0xff,0xc0] 1036 decb %al // CHECK: decb %al # encoding: [0xfe,0xc8] 1037 decw %ax // CHECK: decw %ax # encoding: [0x66,0xff,0xc8] 1038 decl %eax // CHECK: decl %eax # encoding: [0xff,0xc8] 1039 1040 // rdar://8416805 1041 // CHECK: lgdtq 4(%rax) 1042 // CHECK: encoding: [0x0f,0x01,0x50,0x04] 1043 lgdt 4(%rax) 1044 1045 // CHECK: lgdtq 4(%rax) 1046 // CHECK: encoding: [0x0f,0x01,0x50,0x04] 1047 lgdtq 4(%rax) 1048 1049 // CHECK: lidtq 4(%rax) 1050 // CHECK: encoding: [0x0f,0x01,0x58,0x04] 1051 lidt 4(%rax) 1052 1053 // CHECK: lidtq 4(%rax) 1054 // CHECK: encoding: [0x0f,0x01,0x58,0x04] 1055 lidtq 4(%rax) 1056 1057 // CHECK: sgdtq 4(%rax) 1058 // CHECK: encoding: [0x0f,0x01,0x40,0x04] 1059 sgdt 4(%rax) 1060 1061 // CHECK: sgdtq 4(%rax) 1062 // CHECK: encoding: [0x0f,0x01,0x40,0x04] 1063 sgdtq 4(%rax) 1064 1065 // CHECK: sidtq 4(%rax) 1066 // CHECK: encoding: [0x0f,0x01,0x48,0x04] 1067 sidt 4(%rax) 1068 1069 // CHECK: sidtq 4(%rax) 1070 // CHECK: encoding: [0x0f,0x01,0x48,0x04] 1071 sidtq 4(%rax) 1072 1073 1074 // rdar://8208615 1075 mov (%rsi), %gs // CHECK: movl (%rsi), %gs # encoding: [0x8e,0x2e] 1076 mov %gs, (%rsi) // CHECK: movl %gs, (%rsi) # encoding: [0x8c,0x2e] 1077 1078 1079 // rdar://8431864 1080 //CHECK: divb %bl 1081 //CHECK: divw %bx 1082 //CHECK: divl %ecx 1083 //CHECK: divl 3735928559(%ebx,%ecx,8) 1084 //CHECK: divl 69 1085 //CHECK: divl 32493 1086 //CHECK: divl 3133065982 1087 //CHECK: divl 305419896 1088 //CHECK: idivb %bl 1089 //CHECK: idivw %bx 1090 //CHECK: idivl %ecx 1091 //CHECK: idivl 3735928559(%ebx,%ecx,8) 1092 //CHECK: idivl 69 1093 //CHECK: idivl 32493 1094 //CHECK: idivl 3133065982 1095 //CHECK: idivl 305419896 1096 div %bl,%al 1097 div %bx,%ax 1098 div %ecx,%eax 1099 div 0xdeadbeef(%ebx,%ecx,8),%eax 1100 div 0x45,%eax 1101 div 0x7eed,%eax 1102 div 0xbabecafe,%eax 1103 div 0x12345678,%eax 1104 idiv %bl,%al 1105 idiv %bx,%ax 1106 idiv %ecx,%eax 1107 idiv 0xdeadbeef(%ebx,%ecx,8),%eax 1108 idiv 0x45,%eax 1109 idiv 0x7eed,%eax 1110 idiv 0xbabecafe,%eax 1111 idiv 0x12345678,%eax 1112 1113 // PR8524 1114 movd %rax, %mm5 // CHECK: movd %rax, %mm5 # encoding: [0x48,0x0f,0x6e,0xe8] 1115 movd %mm5, %rbx // CHECK: movd %mm5, %rbx # encoding: [0x48,0x0f,0x7e,0xeb] 1116 movq %rax, %mm5 // CHECK: movd %rax, %mm5 # encoding: [0x48,0x0f,0x6e,0xe8] 1117 movq %mm5, %rbx // CHECK: movd %mm5, %rbx # encoding: [0x48,0x0f,0x7e,0xeb] 1118 1119 rex64 // CHECK: rex64 # encoding: [0x48] 1120 data16 // CHECK: data16 # encoding: [0x66] 1121 1122 // PR8855 1123 movq 18446744073709551615,%rbx // CHECK: movq -1, %rbx 1124 1125 // PR8946 1126 movdqu %xmm0, %xmm1 // CHECK: movdqu %xmm0, %xmm1 # encoding: [0xf3,0x0f,0x6f,0xc8] 1127 1128 // PR8935 1129 xgetbv // CHECK: xgetbv # encoding: [0x0f,0x01,0xd0] 1130 xsetbv // CHECK: xsetbv # encoding: [0x0f,0x01,0xd1] 1131 1132 // CHECK: loope 0 1133 // CHECK: encoding: [0xe1,A] 1134 loopz 0 1135 1136 // CHECK: loopne 0 1137 // CHECK: encoding: [0xe0,A] 1138 loopnz 0 1139 1140 // CHECK: outsb (%rsi), %dx # encoding: [0x6e] 1141 // CHECK: outsb 1142 // CHECK: outsb 1143 outsb 1144 outsb %ds:(%rsi), %dx 1145 outsb (%rsi), %dx 1146 1147 // CHECK: outsw (%rsi), %dx # encoding: [0x66,0x6f] 1148 // CHECK: outsw 1149 // CHECK: outsw 1150 outsw 1151 outsw %ds:(%rsi), %dx 1152 outsw (%rsi), %dx 1153 1154 // CHECK: outsl (%rsi), %dx # encoding: [0x6f] 1155 // CHECK: outsl 1156 outsl 1157 outsl %ds:(%rsi), %dx 1158 outsl (%rsi), %dx 1159 1160 // CHECK: insb %dx, %es:(%rdi) # encoding: [0x6c] 1161 // CHECK: insb 1162 insb 1163 insb %dx, %es:(%rdi) 1164 1165 // CHECK: insw %dx, %es:(%rdi) # encoding: [0x66,0x6d] 1166 // CHECK: insw 1167 insw 1168 insw %dx, %es:(%rdi) 1169 1170 // CHECK: insl %dx, %es:(%rdi) # encoding: [0x6d] 1171 // CHECK: insl 1172 insl 1173 insl %dx, %es:(%rdi) 1174 1175 // CHECK: movsb (%rsi), %es:(%rdi) # encoding: [0xa4] 1176 // CHECK: movsb 1177 // CHECK: movsb 1178 movsb 1179 movsb %ds:(%rsi), %es:(%rdi) 1180 movsb (%rsi), %es:(%rdi) 1181 1182 // CHECK: movsw (%rsi), %es:(%rdi) # encoding: [0x66,0xa5] 1183 // CHECK: movsw 1184 // CHECK: movsw 1185 movsw 1186 movsw %ds:(%rsi), %es:(%rdi) 1187 movsw (%rsi), %es:(%rdi) 1188 1189 // CHECK: movsl (%rsi), %es:(%rdi) # encoding: [0xa5] 1190 // CHECK: movsl 1191 // CHECK: movsl 1192 movsl 1193 movsl %ds:(%rsi), %es:(%rdi) 1194 movsl (%rsi), %es:(%rdi) 1195 // rdar://10883092 1196 // CHECK: movsl 1197 movsl (%rsi), (%rdi) 1198 1199 // CHECK: movsq (%rsi), %es:(%rdi) # encoding: [0x48,0xa5] 1200 // CHECK: movsq 1201 // CHECK: movsq 1202 movsq 1203 movsq %ds:(%rsi), %es:(%rdi) 1204 movsq (%rsi), %es:(%rdi) 1205 1206 // CHECK: lodsb (%rsi), %al # encoding: [0xac] 1207 // CHECK: lodsb 1208 // CHECK: lodsb 1209 // CHECK: lodsb 1210 // CHECK: lodsb 1211 lodsb 1212 lodsb %ds:(%rsi), %al 1213 lodsb (%rsi), %al 1214 lods %ds:(%rsi), %al 1215 lods (%rsi), %al 1216 1217 // CHECK: lodsw (%rsi), %ax # encoding: [0x66,0xad] 1218 // CHECK: lodsw 1219 // CHECK: lodsw 1220 // CHECK: lodsw 1221 // CHECK: lodsw 1222 lodsw 1223 lodsw %ds:(%rsi), %ax 1224 lodsw (%rsi), %ax 1225 lods %ds:(%rsi), %ax 1226 lods (%rsi), %ax 1227 1228 // CHECK: lodsl (%rsi), %eax # encoding: [0xad] 1229 // CHECK: lodsl 1230 // CHECK: lodsl 1231 // CHECK: lodsl 1232 // CHECK: lodsl 1233 lodsl 1234 lodsl %ds:(%rsi), %eax 1235 lodsl (%rsi), %eax 1236 lods %ds:(%rsi), %eax 1237 lods (%rsi), %eax 1238 1239 // CHECK: lodsq (%rsi), %rax # encoding: [0x48,0xad] 1240 // CHECK: lodsq 1241 // CHECK: lodsq 1242 // CHECK: lodsq 1243 // CHECK: lodsq 1244 lodsq 1245 lodsq %ds:(%rsi), %rax 1246 lodsq (%rsi), %rax 1247 lods %ds:(%rsi), %rax 1248 lods (%rsi), %rax 1249 1250 // CHECK: stosb %al, %es:(%rdi) # encoding: [0xaa] 1251 // CHECK: stosb 1252 // CHECK: stosb 1253 stosb 1254 stosb %al, %es:(%rdi) 1255 stos %al, %es:(%rdi) 1256 1257 // CHECK: stosw %ax, %es:(%rdi) # encoding: [0x66,0xab] 1258 // CHECK: stosw 1259 // CHECK: stosw 1260 stosw 1261 stosw %ax, %es:(%rdi) 1262 stos %ax, %es:(%rdi) 1263 1264 // CHECK: stosl %eax, %es:(%rdi) # encoding: [0xab] 1265 // CHECK: stosl 1266 // CHECK: stosl 1267 stosl 1268 stosl %eax, %es:(%rdi) 1269 stos %eax, %es:(%rdi) 1270 1271 // CHECK: stosq %rax, %es:(%rdi) # encoding: [0x48,0xab] 1272 // CHECK: stosq 1273 // CHECK: stosq 1274 stosq 1275 stosq %rax, %es:(%rdi) 1276 stos %rax, %es:(%rdi) 1277 1278 // CHECK: strw 1279 // CHECK: encoding: [0x66,0x0f,0x00,0xc8] 1280 str %ax 1281 1282 // CHECK: strl 1283 // CHECK: encoding: [0x0f,0x00,0xc8] 1284 str %eax 1285 1286 // CHECK: strw 1287 // CHECK: encoding: [0x66,0x0f,0x00,0xc8] 1288 str %ax 1289 1290 // CHECK: strq 1291 // CHECK: encoding: [0x48,0x0f,0x00,0xc8] 1292 str %rax 1293 1294 // CHECK: movd %rdi, %xmm0 1295 // CHECK: encoding: [0x66,0x48,0x0f,0x6e,0xc7] 1296 movq %rdi,%xmm0 1297 1298 // CHECK: movd %rdi, %xmm0 1299 // CHECK: encoding: [0x66,0x48,0x0f,0x6e,0xc7] 1300 movd %rdi,%xmm0 1301 1302 // CHECK: movd %xmm0, %rax 1303 // CHECK: encoding: [0x66,0x48,0x0f,0x7e,0xc0] 1304 movd %xmm0, %rax 1305 1306 // CHECK: movntil %eax, (%rdi) 1307 // CHECK: encoding: [0x0f,0xc3,0x07] 1308 // CHECK: movntil 1309 movntil %eax, (%rdi) 1310 movnti %eax, (%rdi) 1311 1312 // CHECK: movntiq %rax, (%rdi) 1313 // CHECK: encoding: [0x48,0x0f,0xc3,0x07] 1314 // CHECK: movntiq 1315 movntiq %rax, (%rdi) 1316 movnti %rax, (%rdi) 1317 1318 // CHECK: pclmulqdq $17, %xmm0, %xmm1 1319 // CHECK: encoding: [0x66,0x0f,0x3a,0x44,0xc8,0x11] 1320 pclmulhqhqdq %xmm0, %xmm1 1321 1322 // CHECK: pclmulqdq $1, %xmm0, %xmm1 1323 // CHECK: encoding: [0x66,0x0f,0x3a,0x44,0xc8,0x01] 1324 pclmulqdq $1, %xmm0, %xmm1 1325 1326 // CHECK: pclmulqdq $16, (%rdi), %xmm1 1327 // CHECK: encoding: [0x66,0x0f,0x3a,0x44,0x0f,0x10] 1328 pclmullqhqdq (%rdi), %xmm1 1329 1330 // CHECK: pclmulqdq $0, (%rdi), %xmm1 1331 // CHECK: encoding: [0x66,0x0f,0x3a,0x44,0x0f,0x00] 1332 pclmulqdq $0, (%rdi), %xmm1 1333 1334 // PR10345 1335 // CHECK: xchgq %rax, %rax 1336 // CHECK: encoding: [0x48,0x90] 1337 xchgq %rax, %rax 1338 1339 // CHECK: xchgl %eax, %eax 1340 // CHECK: encoding: [0x87,0xc0] 1341 xchgl %eax, %eax 1342 1343 // CHECK: xchgw %ax, %ax 1344 // CHECK: encoding: [0x66,0x90] 1345 xchgw %ax, %ax 1346 1347 // CHECK: xchgl %ecx, %eax 1348 // CHECK: encoding: [0x91] 1349 xchgl %ecx, %eax 1350 1351 // CHECK: xchgl %ecx, %eax 1352 // CHECK: encoding: [0x91] 1353 xchgl %eax, %ecx 1354 1355 // CHECK: sysexit 1356 // CHECK: encoding: [0x0f,0x35] 1357 sysexit 1358 1359 // CHECK: sysexitl 1360 // CHECK: encoding: [0x0f,0x35] 1361 sysexitl 1362 1363 // CHECK: sysexitq 1364 // CHECK: encoding: [0x48,0x0f,0x35] 1365 sysexitq 1366 1367 // CHECK: clac 1368 // CHECK: encoding: [0x0f,0x01,0xca] 1369 clac 1370 1371 // CHECK: stac 1372 // CHECK: encoding: [0x0f,0x01,0xcb] 1373 stac 1374 1375 // CHECK: faddp %st(1) 1376 // CHECK: fmulp %st(1) 1377 // CHECK: fsubp %st(1) 1378 // CHECK: fsubrp %st(1) 1379 // CHECK: fdivp %st(1) 1380 // CHECK: fdivrp %st(1) 1381 faddp %st(0), %st(1) 1382 fmulp %st(0), %st(1) 1383 fsubp %st(0), %st(1) 1384 fsubrp %st(0), %st(1) 1385 fdivp %st(0), %st(1) 1386 fdivrp %st(0), %st(1) 1387 1388 // CHECK: faddp %st(1) 1389 // CHECK: fmulp %st(1) 1390 // CHECK: fsubp %st(1) 1391 // CHECK: fsubrp %st(1) 1392 // CHECK: fdivp %st(1) 1393 // CHECK: fdivrp %st(1) 1394 faddp %st(1), %st(0) 1395 fmulp %st(1), %st(0) 1396 fsubp %st(1), %st(0) 1397 fsubrp %st(1), %st(0) 1398 fdivp %st(1), %st(0) 1399 fdivrp %st(1), %st(0) 1400 1401 // CHECK: faddp %st(1) 1402 // CHECK: fmulp %st(1) 1403 // CHECK: fsubp %st(1) 1404 // CHECK: fsubrp %st(1) 1405 // CHECK: fdivp %st(1) 1406 // CHECK: fdivrp %st(1) 1407 faddp %st(1) 1408 fmulp %st(1) 1409 fsubp %st(1) 1410 fsubrp %st(1) 1411 fdivp %st(1) 1412 fdivrp %st(1) 1413 1414 // CHECK: faddp %st(1) 1415 // CHECK: fmulp %st(1) 1416 // CHECK: fsubp %st(1) 1417 // CHECK: fsubrp %st(1) 1418 // CHECK: fdivp %st(1) 1419 // CHECK: fdivrp %st(1) 1420 faddp 1421 fmulp 1422 fsubp 1423 fsubrp 1424 fdivp 1425 fdivrp 1426 1427 // CHECK: fadd %st(1) 1428 // CHECK: fmul %st(1) 1429 // CHECK: fsub %st(1) 1430 // CHECK: fsubr %st(1) 1431 // CHECK: fdiv %st(1) 1432 // CHECK: fdivr %st(1) 1433 fadd %st(1), %st(0) 1434 fmul %st(1), %st(0) 1435 fsub %st(1), %st(0) 1436 fsubr %st(1), %st(0) 1437 fdiv %st(1), %st(0) 1438 fdivr %st(1), %st(0) 1439 1440 // CHECK: fadd %st(0), %st(1) 1441 // CHECK: fmul %st(0), %st(1) 1442 // CHECK: fsub %st(0), %st(1) 1443 // CHECK: fsubr %st(0), %st(1) 1444 // CHECK: fdiv %st(0), %st(1) 1445 // CHECK: fdivr %st(0), %st(1) 1446 fadd %st(0), %st(1) 1447 fmul %st(0), %st(1) 1448 fsub %st(0), %st(1) 1449 fsubr %st(0), %st(1) 1450 fdiv %st(0), %st(1) 1451 fdivr %st(0), %st(1) 1452 1453 // CHECK: fadd %st(1) 1454 // CHECK: fmul %st(1) 1455 // CHECK: fsub %st(1) 1456 // CHECK: fsubr %st(1) 1457 // CHECK: fdiv %st(1) 1458 // CHECK: fdivr %st(1) 1459 fadd %st(1) 1460 fmul %st(1) 1461 fsub %st(1) 1462 fsubr %st(1) 1463 fdiv %st(1) 1464 fdivr %st(1) 1465 1466 // CHECK: movd %xmm0, %eax 1467 // CHECK: movd %xmm0, %rax 1468 // CHECK: movd %xmm0, %rax 1469 // CHECK: vmovd %xmm0, %eax 1470 // CHECK: vmovq %xmm0, %rax 1471 // CHECK: vmovq %xmm0, %rax 1472 movd %xmm0, %eax 1473 movd %xmm0, %rax 1474 movq %xmm0, %rax 1475 vmovd %xmm0, %eax 1476 vmovd %xmm0, %rax 1477 vmovq %xmm0, %rax 1478 1479 // CHECK: seto 3735928559(%r10,%r9,8) 1480 // CHECK: encoding: [0x43,0x0f,0x90,0x84,0xca,0xef,0xbe,0xad,0xde] 1481 seto 0xdeadbeef(%r10,%r9,8) 1482 1483 // CHECK: monitorx 1484 // CHECK: encoding: [0x0f,0x01,0xfa] 1485 monitorx 1486 1487 // CHECK: monitorx 1488 // CHECK: encoding: [0x0f,0x01,0xfa] 1489 monitorx %rax, %rcx, %rdx 1490 1491 // CHECK: mwaitx 1492 // CHECK: encoding: [0x0f,0x01,0xfb] 1493 mwaitx 1494 1495 // CHECK: mwaitx 1496 // CHECK: encoding: [0x0f,0x01,0xfb] 1497 mwaitx %rax, %rcx, %rbx 1498 1499 // CHECK: movl %r15d, (%r15,%r15) 1500 // CHECK: encoding: [0x47,0x89,0x3c,0x3f] 1501 movl %r15d, (%r15,%r15) 1502