Home | History | Annotate | Download | only in x64

Lines Matching refs:dst

586                                         Register dst,
590 emit_rex(dst, size);
593 emit_modrm(subcode, dst);
595 } else if (dst.is(rax)) {
600 emit_modrm(subcode, dst);
606 const Operand& dst,
610 emit_rex(dst, size);
613 emit_operand(subcode, dst);
617 emit_operand(subcode, dst);
624 Register dst,
628 emit_optional_rex_32(dst);
631 emit_modrm(subcode, dst);
633 } else if (dst.is(rax)) {
638 emit_modrm(subcode, dst);
645 const Operand& dst,
649 emit_optional_rex_32(dst);
652 emit_operand(subcode, dst);
656 emit_operand(subcode, dst);
663 const Operand& dst,
666 emit_optional_rex_32(dst);
669 emit_operand(subcode, dst);
675 Register dst,
678 if (!dst.is_byte_register()) {
680 emit_rex_32(dst);
684 emit_modrm(subcode, dst);
689 void Assembler::shift(Register dst,
697 emit_rex(dst, size);
699 emit_modrm(subcode, dst);
701 emit_rex(dst, size);
703 emit_modrm(subcode, dst);
709 void Assembler::shift(Operand dst, Immediate shift_amount, int subcode,
715 emit_rex(dst, size);
717 emit_operand(subcode, dst);
719 emit_rex(dst, size);
721 emit_operand(subcode, dst);
727 void Assembler::shift(Register dst, int subcode, int size) {
729 emit_rex(dst, size);
731 emit_modrm(subcode, dst);
735 void Assembler::shift(Operand dst, int subcode, int size) {
737 emit_rex(dst, size);
739 emit_operand(subcode, dst);
743 void Assembler::bt(const Operand& dst, Register src) {
745 emit_rex_64(src, dst);
748 emit_operand(src, dst);
752 void Assembler::bts(const Operand& dst, Register src) {
754 emit_rex_64(src, dst);
757 emit_operand(src, dst);
761 void Assembler::bsrl(Register dst, Register src) {
763 emit_optional_rex_32(dst, src);
766 emit_modrm(dst, src);
770 void Assembler::bsrl(Register dst, const Operand& src) {
772 emit_optional_rex_32(dst, src);
775 emit_operand(dst, src);
779 void Assembler::bsrq(Register dst, Register src) {
781 emit_rex_64(dst, src);
784 emit_modrm(dst, src);
788 void Assembler::bsrq(Register dst, const Operand& src) {
790 emit_rex_64(dst, src);
793 emit_operand(dst, src);
797 void Assembler::bsfl(Register dst, Register src) {
799 emit_optional_rex_32(dst, src);
802 emit_modrm(dst, src);
806 void Assembler::bsfl(Register dst, const Operand& src) {
808 emit_optional_rex_32(dst, src);
811 emit_operand(dst, src);
815 void Assembler::bsfq(Register dst, Register src) {
817 emit_rex_64(dst, src);
820 emit_modrm(dst, src);
824 void Assembler::bsfq(Register dst, const Operand& src) {
826 emit_rex_64(dst, src);
829 emit_operand(dst, src);
923 void Assembler::cmovq(Condition cc, Register dst, Register src) {
925 movq(dst, src);
934 emit_rex_64(dst, src);
937 emit_modrm(dst, src);
941 void Assembler::cmovq(Condition cc, Register dst, const Operand& src) {
943 movq(dst, src);
950 emit_rex_64(dst, src);
953 emit_operand(dst, src);
957 void Assembler::cmovl(Condition cc, Register dst, Register src) {
959 movl(dst, src);
966 emit_optional_rex_32(dst, src);
969 emit_modrm(dst, src);
973 void Assembler::cmovl(Condition cc, Register dst, const Operand& src) {
975 movl(dst, src);
982 emit_optional_rex_32(dst, src);
985 emit_operand(dst, src);
1001 void Assembler::cmpxchgb(const Operand& dst, Register src) {
1005 emit_rex_32(src, dst);
1007 emit_optional_rex_32(src, dst);
1011 emit_operand(src, dst);
1014 void Assembler::cmpxchgw(const Operand& dst, Register src) {
1017 emit_optional_rex_32(src, dst);
1020 emit_operand(src, dst);
1023 void Assembler::emit_cmpxchg(const Operand& dst, Register src, int size) {
1025 emit_rex(src, dst, size);
1028 emit_operand(src, dst);
1045 void Assembler::emit_dec(Register dst, int size) {
1047 emit_rex(dst, size);
1049 emit_modrm(0x1, dst);
1053 void Assembler::emit_dec(const Operand& dst, int size) {
1055 emit_rex(dst, size);
1057 emit_operand(1, dst);
1061 void Assembler::decb(Register dst) {
1063 if (!dst.is_byte_register()) {
1065 emit_rex_32(dst);
1068 emit_modrm(0x1, dst);
1072 void Assembler::decb(const Operand& dst) {
1074 emit_optional_rex_32(dst);
1076 emit_operand(1, dst);
1126 void Assembler::emit_imul(Register dst, Register src, int size) {
1128 emit_rex(dst, src, size);
1131 emit_modrm(dst, src);
1135 void Assembler::emit_imul(Register dst, const Operand& src, int size) {
1137 emit_rex(dst, src, size);
1140 emit_operand(dst, src);
1144 void Assembler::emit_imul(Register dst, Register src, Immediate imm, int size) {
1146 emit_rex(dst, src, size);
1149 emit_modrm(dst, src);
1153 emit_modrm(dst, src);
1159 void Assembler::emit_imul(Register dst, const Operand& src, Immediate imm,
1162 emit_rex(dst, src, size);
1165 emit_operand(dst, src);
1169 emit_operand(dst, src);
1175 void Assembler::emit_inc(Register dst, int size) {
1177 emit_rex(dst, size);
1179 emit_modrm(0x0, dst);
1183 void Assembler::emit_inc(const Operand& dst, int size) {
1185 emit_rex(dst, size);
1187 emit_operand(0, dst);
1357 void Assembler::emit_lea(Register dst, const Operand& src, int size) {
1359 emit_rex(dst, src, size);
1361 emit_operand(dst, src);
1394 void Assembler::movb(Register dst, const Operand& src) {
1396 if (!dst.is_byte_register()) {
1398 emit_rex_32(dst, src);
1400 emit_optional_rex_32(dst, src);
1403 emit_operand(dst, src);
1407 void Assembler::movb(Register dst, Immediate imm) {
1409 if (!dst.is_byte_register()) {
1411 emit_rex_32(dst);
1413 emit(0xB0 + dst.low_bits());
1418 void Assembler::movb(const Operand& dst, Register src) {
1422 emit_rex_32(src, dst);
1424 emit_optional_rex_32(src, dst);
1427 emit_operand(src, dst);
1431 void Assembler::movb(const Operand& dst, Immediate imm) {
1433 emit_optional_rex_32(dst);
1435 emit_operand(0x0, dst);
1440 void Assembler::movw(Register dst, const Operand& src) {
1443 emit_optional_rex_32(dst, src);
1445 emit_operand(dst, src);
1449 void Assembler::movw(const Operand& dst, Register src) {
1452 emit_optional_rex_32(src, dst);
1454 emit_operand(src, dst);
1458 void Assembler::movw(const Operand& dst, Immediate imm) {
1461 emit_optional_rex_32(dst);
1463 emit_operand(0x0, dst);
1469 void Assembler::emit_mov(Register dst, const Operand& src, int size) {
1471 emit_rex(dst, src, size);
1473 emit_operand(dst, src);
1477 void Assembler::emit_mov(Register dst, Register src, int size) {
1480 emit_rex(src, dst, size);
1482 emit_modrm(src, dst);
1484 emit_rex(dst, src, size);
1486 emit_modrm(dst, src);
1491 void Assembler::emit_mov(const Operand& dst, Register src, int size) {
1493 emit_rex(src, dst, size);
1495 emit_operand(src, dst);
1499 void Assembler::emit_mov(Register dst, Immediate value, int size) {
1501 emit_rex(dst, size);
1504 emit_modrm(0x0, dst);
1507 emit(0xB8 + dst.low_bits());
1513 void Assembler::emit_mov(const Operand& dst, Immediate value, int size) {
1515 emit_rex(dst, size);
1517 emit_operand(0x0, dst);
1522 void Assembler::movp(Register dst, void* value, RelocInfo::Mode rmode) {
1524 emit_rex(dst, kPointerSize);
1525 emit(0xB8 | dst.low_bits());
1529 void Assembler::movq(Register dst, int64_t value, RelocInfo::Mode rmode) {
1531 emit_rex_64(dst);
1532 emit(0xB8 | dst.low_bits());
1539 void Assembler::movq(Register dst, uint64_t value, RelocInfo::Mode rmode) {
1540 movq(dst, static_cast<int64_t>(value), rmode);
1545 void Assembler::movl(const Operand& dst, Label* src) {
1547 emit_optional_rex_32(dst);
1549 emit_operand(0, dst);
1566 void Assembler::movsxbl(Register dst, Register src) {
1570 emit_rex_32(dst, src);
1572 emit_optional_rex_32(dst, src);
1576 emit_modrm(dst, src);
1580 void Assembler::movsxbl(Register dst, const Operand& src) {
1582 emit_optional_rex_32(dst, src);
1585 emit_operand(dst, src);
1589 void Assembler::movsxbq(Register dst, const Operand& src) {
1591 emit_rex_64(dst, src);
1594 emit_operand(dst, src);
1597 void Assembler::movsxbq(Register dst, Register src) {
1599 emit_rex_64(dst, src);
1602 emit_modrm(dst, src);
1605 void Assembler::movsxwl(Register dst, Register src) {
1607 emit_optional_rex_32(dst, src);
1610 emit_modrm(dst, src);
1614 void Assembler::movsxwl(Register dst, const Operand& src) {
1616 emit_optional_rex_32(dst, src);
1619 emit_operand(dst, src);
1623 void Assembler::movsxwq(Register dst, const Operand& src) {
1625 emit_rex_64(dst, src);
1628 emit_operand(dst, src);
1631 void Assembler::movsxwq(Register dst, Register src) {
1633 emit_rex_64(dst, src);
1636 emit_modrm(dst, src);
1639 void Assembler::movsxlq(Register dst, Register src) {
1641 emit_rex_64(dst, src);
1643 emit_modrm(dst, src);
1647 void Assembler::movsxlq(Register dst, const Operand& src) {
1649 emit_rex_64(dst, src);
1651 emit_operand(dst, src);
1655 void Assembler::emit_movzxb(Register dst, const Operand& src, int size) {
1659 emit_optional_rex_32(dst, src);
1662 emit_operand(dst, src);
1666 void Assembler::emit_movzxb(Register dst, Register src, int size) {
1672 emit_rex_32(dst, src);
1674 emit_optional_rex_32(dst, src);
1678 emit_modrm(dst, src);
1682 void Assembler::emit_movzxw(Register dst, const Operand& src, int size) {
1686 emit_optional_rex_32(dst, src);
1689 emit_operand(dst, src);
1693 void Assembler::emit_movzxw(Register dst, Register src, int size) {
1697 emit_optional_rex_32(dst, src);
1700 emit_modrm(dst, src);
1751 void Assembler::emit_neg(Register dst, int size) {
1753 emit_rex(dst, size);
1755 emit_modrm(0x3, dst);
1759 void Assembler::emit_neg(const Operand& dst, int size) {
1761 emit_rex_64(dst);
1763 emit_operand(3, dst);
1773 void Assembler::emit_not(Register dst, int size) {
1775 emit_rex(dst, size);
1777 emit_modrm(0x2, dst);
1781 void Assembler::emit_not(const Operand& dst, int size) {
1783 emit_rex(dst, size);
1785 emit_operand(2, dst);
1866 void Assembler::popq(Register dst) {
1868 emit_optional_rex_32(dst);
1869 emit(0x58 | dst.low_bits());
1873 void Assembler::popq(const Operand& dst) {
1875 emit_optional_rex_32(dst);
1877 emit_operand(0, dst);
1964 void Assembler::shld(Register dst, Register src) {
1966 emit_rex_64(src, dst);
1969 emit_modrm(src, dst);
1973 void Assembler::shrd(Register dst, Register src) {
1975 emit_rex_64(src, dst);
1978 emit_modrm(src, dst);
2001 void Assembler::emit_xchg(Register dst, Register src, int size) {
2003 if (src.is(rax) || dst.is(rax)) { // Single-byte encoding
2004 Register other = src.is(rax) ? dst : src;
2007 } else if (dst.low_bits() == 4) {
2008 emit_rex(dst, src, size);
2010 emit_modrm(dst, src);
2012 emit_rex(src, dst, size);
2014 emit_modrm(src, dst);
2019 void Assembler::emit_xchg(Register dst, const Operand& src, int size) {
2021 emit_rex(dst, src, size);
2023 emit_operand(dst, src);
2027 void Assembler::store_rax(void* dst, RelocInfo::Mode mode) {
2032 emitp(dst, mode);
2036 emitp(dst, mode);
2050 void Assembler::testb(Register dst, Register src) {
2052 emit_test(dst, src, sizeof(int8_t));
2070 void Assembler::testw(Register dst, Register src) {
2071 emit_test(dst, src, sizeof(uint16_t));
2086 void Assembler::emit_test(Register dst, Register src, int size) {
2088 if (src.low_bits() == 4) std::swap(dst, src);
2096 if (!src.is_byte_register() || !dst.is_byte_register()) {
2097 emit_rex_32(dst, src);
2100 emit_rex(dst, src, size);
2103 emit_modrm(dst, src);
2571 void Assembler::andps(XMMRegister dst, XMMRegister src) {
2573 emit_optional_rex_32(dst, src);
2576 emit_sse_operand(dst, src);
2580 void Assembler::andps(XMMRegister dst, const Operand& src) {
2582 emit_optional_rex_32(dst, src);
2585 emit_sse_operand(dst, src);
2589 void Assembler::orps(XMMRegister dst, XMMRegister src) {
2591 emit_optional_rex_32(dst, src);
2594 emit_sse_operand(dst, src);
2598 void Assembler::orps(XMMRegister dst, const Operand& src) {
2600 emit_optional_rex_32(dst, src);
2603 emit_sse_operand(dst, src);
2607 void Assembler::xorps(XMMRegister dst, XMMRegister src) {
2610 emit_optional_rex_32(dst, src);
2613 emit_sse_operand(dst, src);
2617 void Assembler::xorps(XMMRegister dst, const Operand& src) {
2620 emit_optional_rex_32(dst, src);
2623 emit_sse_operand(dst, src);
2627 void Assembler::addps(XMMRegister dst, XMMRegister src) {
2629 emit_optional_rex_32(dst, src);
2632 emit_sse_operand(dst, src);
2636 void Assembler::addps(XMMRegister dst, const Operand& src) {
2638 emit_optional_rex_32(dst, src);
2641 emit_sse_operand(dst, src);
2645 void Assembler::subps(XMMRegister dst, XMMRegister src) {
2647 emit_optional_rex_32(dst, src);
2650 emit_sse_operand(dst, src);
2654 void Assembler::subps(XMMRegister dst, const Operand& src) {
2656 emit_optional_rex_32(dst, src);
2659 emit_sse_operand(dst, src);
2663 void Assembler::mulps(XMMRegister dst, XMMRegister src) {
2665 emit_optional_rex_32(dst, src);
2668 emit_sse_operand(dst, src);
2672 void Assembler::mulps(XMMRegister dst, const Operand& src) {
2674 emit_optional_rex_32(dst, src);
2677 emit_sse_operand(dst, src);
2681 void Assembler::divps(XMMRegister dst, XMMRegister src) {
2683 emit_optional_rex_32(dst, src);
2686 emit_sse_operand(dst, src);
2690 void Assembler::divps(XMMRegister dst, const Operand& src) {
2692 emit_optional_rex_32(dst, src);
2695 emit_sse_operand(dst, src);
2701 void Assembler::movd(XMMRegister dst, Register src) {
2705 emit_optional_rex_32(dst, src);
2708 emit_sse_operand(dst, src);
2712 void Assembler::movd(XMMRegister dst, const Operand& src) {
2716 emit_optional_rex_32(dst, src);
2719 emit_sse_operand(dst, src);
2723 void Assembler::movd(Register dst, XMMRegister src) {
2727 emit_optional_rex_32(src, dst);
2730 emit_sse_operand(src, dst);
2734 void Assembler::movq(XMMRegister dst, Register src) {
2738 emit_rex_64(dst, src);
2741 emit_sse_operand(dst, src);
2745 void Assembler::movq(Register dst, XMMRegister src) {
2749 emit_rex_64(src, dst);
2752 emit_sse_operand(src, dst);
2756 void Assembler::movq(XMMRegister dst, XMMRegister src) {
2759 if (dst.low_bits() == 4) {
2762 emit_optional_rex_32(dst, src);
2765 emit_sse_operand(dst, src);
2768 emit_optional_rex_32(src, dst);
2771 emit_sse_operand(src, dst);
2776 void Assembler::movdqa(const Operand& dst, XMMRegister src) {
2779 emit_rex_64(src, dst);
2782 emit_sse_operand(src, dst);
2786 void Assembler::movdqa(XMMRegister dst, const Operand& src) {
2789 emit_rex_64(dst, src);
2792 emit_sse_operand(dst, src);
2796 void Assembler::movdqu(const Operand& dst, XMMRegister src) {
2799 emit_rex_64(src, dst);
2802 emit_sse_operand(src, dst);
2806 void Assembler::movdqu(XMMRegister dst, const Operand& src) {
2809 emit_rex_64(dst, src);
2812 emit_sse_operand(dst, src);
2816 void Assembler::extractps(Register dst, XMMRegister src, byte imm8) {
2821 emit_optional_rex_32(src, dst);
2825 emit_sse_operand(src, dst);
2829 void Assembler::pextrb(Register dst, XMMRegister src, int8_t imm8) {
2834 emit_optional_rex_32(src, dst);
2838 emit_sse_operand(src, dst);
2842 void Assembler::pextrb(const Operand& dst, XMMRegister src, int8_t imm8) {
2847 emit_optional_rex_32(src, dst);
2851 emit_sse_operand(src, dst);
2855 void Assembler::pinsrw(XMMRegister dst, Register src, int8_t imm8) {
2859 emit_optional_rex_32(dst, src);
2862 emit_sse_operand(dst, src);
2866 void Assembler::pinsrw(XMMRegister dst, const Operand& src, int8_t imm8) {
2870 emit_optional_rex_32(dst, src);
2873 emit_sse_operand(dst, src);
2877 void Assembler::pextrw(Register dst, XMMRegister src, int8_t imm8) {
2881 emit_optional_rex_32(src, dst);
2884 emit_sse_operand(src, dst);
2888 void Assembler::pextrw(const Operand& dst, XMMRegister src, int8_t imm8) {
2893 emit_optional_rex_32(src, dst);
2897 emit_sse_operand(src, dst);
2901 void Assembler::pextrd(Register dst, XMMRegister src, int8_t imm8) {
2905 emit_optional_rex_32(src, dst);
2909 emit_sse_operand(src, dst);
2913 void Assembler::pextrd(const Operand& dst, XMMRegister src, int8_t imm8) {
2917 emit_optional_rex_32(src, dst);
2921 emit_sse_operand(src, dst);
2925 void Assembler::pinsrd(XMMRegister dst, Register src, int8_t imm8) {
2929 emit_optional_rex_32(dst, src);
2933 emit_sse_operand(dst, src);
2938 void Assembler::pinsrd(XMMRegister dst, const Operand& src, int8_t imm8) {
2942 emit_optional_rex_32(dst, src);
2946 emit_sse_operand(dst, src);
2950 void Assembler::pinsrb(XMMRegister dst, Register src, int8_t imm8) {
2954 emit_optional_rex_32(dst, src);
2958 emit_sse_operand(dst, src);
2962 void Assembler::pinsrb(XMMRegister dst, const Operand& src, int8_t imm8) {
2966 emit_optional_rex_32(dst, src);
2970 emit_sse_operand(dst, src);
2974 void Assembler::insertps(XMMRegister dst, XMMRegister src, byte imm8) {
2979 emit_optional_rex_32(dst, src);
2983 emit_sse_operand(dst, src);
2987 void Assembler::movsd(const Operand& dst, XMMRegister src) {
2991 emit_optional_rex_32(src, dst);
2994 emit_sse_operand(src, dst);
2998 void Assembler::movsd(XMMRegister dst, XMMRegister src) {
3002 emit_optional_rex_32(dst, src);
3005 emit_sse_operand(dst, src);
3009 void Assembler::movsd(XMMRegister dst, const Operand& src) {
3013 emit_optional_rex_32(dst, src);
3016 emit_sse_operand(dst, src);
3020 void Assembler::movaps(XMMRegister dst, XMMRegister src) {
3025 emit_optional_rex_32(src, dst);
3028 emit_sse_operand(src, dst);
3030 emit_optional_rex_32(dst, src);
3033 emit_sse_operand(dst, src);
3038 void Assembler::shufps(XMMRegister dst, XMMRegister src, byte imm8) {
3041 emit_optional_rex_32(dst, src);
3044 emit_sse_operand(dst, src);
3049 void Assembler::movapd(XMMRegister dst, XMMRegister src) {
3055 emit_optional_rex_32(src, dst);
3058 emit_sse_operand(src, dst);
3061 emit_optional_rex_32(dst, src);
3064 emit_sse_operand(dst, src);
3069 void Assembler::movupd(XMMRegister dst, const Operand& src) {
3072 emit_optional_rex_32(dst, src);
3075 emit_sse_operand(dst, src);
3078 void Assembler::movupd(const Operand& dst, XMMRegister src) {
3081 emit_optional_rex_32(src, dst);
3084 emit_sse_operand(src, dst);
3087 void Assembler::addss(XMMRegister dst, XMMRegister src) {
3090 emit_optional_rex_32(dst, src);
3093 emit_sse_operand(dst, src);
3097 void Assembler::addss(XMMRegister dst, const Operand& src) {
3100 emit_optional_rex_32(dst, src);
3103 emit_sse_operand(dst, src);
3107 void Assembler::subss(XMMRegister dst, XMMRegister src) {
3110 emit_optional_rex_32(dst, src);
3113 emit_sse_operand(dst, src);
3117 void Assembler::subss(XMMRegister dst, const Operand& src) {
3120 emit_optional_rex_32(dst, src);
3123 emit_sse_operand(dst, src);
3127 void Assembler::mulss(XMMRegister dst, XMMRegister src) {
3130 emit_optional_rex_32(dst, src);
3133 emit_sse_operand(dst, src);
3137 void Assembler::mulss(XMMRegister dst, const Operand& src) {
3140 emit_optional_rex_32(dst, src);
3143 emit_sse_operand(dst, src);
3147 void Assembler::divss(XMMRegister dst, XMMRegister src) {
3150 emit_optional_rex_32(dst, src);
3153 emit_sse_operand(dst, src);
3157 void Assembler::divss(XMMRegister dst, const Operand& src) {
3160 emit_optional_rex_32(dst, src);
3163 emit_sse_operand(dst, src);
3167 void Assembler::maxss(XMMRegister dst, XMMRegister src) {
3170 emit_optional_rex_32(dst, src);
3173 emit_sse_operand(dst, src);
3177 void Assembler::maxss(XMMRegister dst, const Operand& src) {
3180 emit_optional_rex_32(dst, src);
3183 emit_sse_operand(dst, src);
3187 void Assembler::minss(XMMRegister dst, XMMRegister src) {
3190 emit_optional_rex_32(dst, src);
3193 emit_sse_operand(dst, src);
3197 void Assembler::minss(XMMRegister dst, const Operand& src) {
3200 emit_optional_rex_32(dst, src);
3203 emit_sse_operand(dst, src);
3207 void Assembler::sqrtss(XMMRegister dst, XMMRegister src) {
3210 emit_optional_rex_32(dst, src);
3213 emit_sse_operand(dst, src);
3217 void Assembler::sqrtss(XMMRegister dst, const Operand& src) {
3220 emit_optional_rex_32(dst, src);
3223 emit_sse_operand(dst, src);
3227 void Assembler::ucomiss(XMMRegister dst, XMMRegister src) {
3230 emit_optional_rex_32(dst, src);
3233 emit_sse_operand(dst, src);
3237 void Assembler::ucomiss(XMMRegister dst, const Operand& src) {
3240 emit_optional_rex_32(dst, src);
3243 emit_sse_operand(dst, src);
3247 void Assembler::movss(XMMRegister dst, XMMRegister src) {
3251 emit_optional_rex_32(dst, src);
3254 emit_sse_operand(dst, src);
3258 void Assembler::movss(XMMRegister dst, const Operand& src) {
3262 emit_optional_rex_32(dst, src);
3265 emit_sse_operand(dst, src);
3269 void Assembler::movss(const Operand& src, XMMRegister dst) {
3273 emit_optional_rex_32(dst, src);
3276 emit_sse_operand(dst, src);
3363 void Assembler::cmpps(XMMRegister dst, XMMRegister src, int8_t cmp) {
3365 emit_optional_rex_32(dst, src);
3368 emit_sse_operand(dst, src);
3372 void Assembler::cmpps(XMMRegister dst, const Operand& src, int8_t cmp) {
3374 emit_optional_rex_32(dst, src);
3377 emit_sse_operand(dst, src);
3381 void Assembler::cmppd(XMMRegister dst, XMMRegister src, int8_t cmp) {
3383 emit_optional_rex_32(dst, src);
3387 emit_sse_operand(dst, src);
3391 void Assembler::cmppd(XMMRegister dst, const Operand& src, int8_t cmp) {
3393 emit_optional_rex_32(dst, src);
3397 emit_sse_operand(dst, src);
3401 void Assembler::cvttss2si(Register dst, const Operand& src) {
3405 emit_optional_rex_32(dst, src);
3408 emit_operand(dst, src);
3412 void Assembler::cvttss2si(Register dst, XMMRegister src) {
3416 emit_optional_rex_32(dst, src);
3419 emit_sse_operand(dst, src);
3423 void Assembler::cvttsd2si(Register dst, const Operand& src) {
3427 emit_optional_rex_32(dst, src);
3430 emit_operand(dst, src);
3434 void Assembler::cvttsd2si(Register dst, XMMRegister src) {
3438 emit_optional_rex_32(dst, src);
3441 emit_sse_operand(dst, src);
3445 void Assembler::cvttss2siq(Register dst, XMMRegister src) {
3449 emit_rex_64(dst, src);
3452 emit_sse_operand(dst, src);
3456 void Assembler::cvttss2siq(Register dst, const Operand& src) {
3460 emit_rex_64(dst, src);
3463 emit_sse_operand(dst, src);
3467 void Assembler::cvttsd2siq(Register dst, XMMRegister src) {
3471 emit_rex_64(dst, src);
3474 emit_sse_operand(dst, src);
3478 void Assembler::cvttsd2siq(Register dst, const Operand& src) {
3482 emit_rex_64(dst, src);
3485 emit_sse_operand(dst, src);
3489 void Assembler::cvtlsi2sd(XMMRegister dst, const Operand& src) {
3493 emit_optional_rex_32(dst, src);
3496 emit_sse_operand(dst, src);
3500 void Assembler::cvtlsi2sd(XMMRegister dst, Register src) {
3504 emit_optional_rex_32(dst, src);
3507 emit_sse_operand(dst, src);
3511 void Assembler::cvtlsi2ss(XMMRegister dst, const Operand& src) {
3515 emit_optional_rex_32(dst, src);
3518 emit_sse_operand(dst, src);
3522 void Assembler::cvtlsi2ss(XMMRegister dst, Register src) {
3525 emit_optional_rex_32(dst, src);
3528 emit_sse_operand(dst, src);
3532 void Assembler::cvtqsi2ss(XMMRegister dst, const Operand& src) {
3536 emit_rex_64(dst, src);
3539 emit_sse_operand(dst, src);
3543 void Assembler::cvtqsi2ss(XMMRegister dst, Register src) {
3547 emit_rex_64(dst, src);
3550 emit_sse_operand(dst, src);
3554 void Assembler::cvtqsi2sd(XMMRegister dst, const Operand& src) {
3558 emit_rex_64(dst, src);
3561 emit_sse_operand(dst, src);
3565 void Assembler::cvtqsi2sd(XMMRegister dst, Register src) {
3569 emit_rex_64(dst, src);
3572 emit_sse_operand(dst, src);
3576 void Assembler::cvtss2sd(XMMRegister dst, XMMRegister src) {
3580 emit_optional_rex_32(dst, src);
3583 emit_sse_operand(dst, src);
3587 void Assembler::cvtss2sd(XMMRegister dst, const Operand& src) {
3591 emit_optional_rex_32(dst, src);
3594 emit_sse_operand(dst, src);
3598 void Assembler::cvtsd2ss(XMMRegister dst, XMMRegister src) {
3602 emit_optional_rex_32(dst, src);
3605 emit_sse_operand(dst, src);
3609 void Assembler::cvtsd2ss(XMMRegister dst, const Operand& src) {
3613 emit_optional_rex_32(dst, src);
3616 emit_sse_operand(dst, src);
3620 void Assembler::cvtsd2si(Register dst, XMMRegister src) {
3624 emit_optional_rex_32(dst, src);
3627 emit_sse_operand(dst, src);
3631 void Assembler::cvtsd2siq(Register dst, XMMRegister src) {
3635 emit_rex_64(dst, src);
3638 emit_sse_operand(dst, src);
3642 void Assembler::addsd(XMMRegister dst, XMMRegister src) {
3645 emit_optional_rex_32(dst, src);
3648 emit_sse_operand(dst, src);
3652 void Assembler::addsd(XMMRegister dst, const Operand& src) {
3655 emit_optional_rex_32(dst, src);
3658 emit_sse_operand(dst, src);
3662 void Assembler::mulsd(XMMRegister dst, XMMRegister src) {
3665 emit_optional_rex_32(dst, src);
3668 emit_sse_operand(dst, src);
3672 void Assembler::mulsd(XMMRegister dst, const Operand& src) {
3675 emit_optional_rex_32(dst, src);
3678 emit_sse_operand(dst, src);
3682 void Assembler::subsd(XMMRegister dst, XMMRegister src) {
3685 emit_optional_rex_32(dst, src);
3688 emit_sse_operand(dst, src);
3692 void Assembler::subsd(XMMRegister dst, const Operand& src) {
3695 emit_optional_rex_32(dst, src);
3698 emit_sse_operand(dst, src);
3702 void Assembler::divsd(XMMRegister dst, XMMRegister src) {
3705 emit_optional_rex_32(dst, src);
3708 emit_sse_operand(dst, src);
3712 void Assembler::divsd(XMMRegister dst, const Operand& src) {
3715 emit_optional_rex_32(dst, src);
3718 emit_sse_operand(dst, src);
3722 void Assembler::maxsd(XMMRegister dst, XMMRegister src) {
3725 emit_optional_rex_32(dst, src);
3728 emit_sse_operand(dst, src);
3732 void Assembler::maxsd(XMMRegister dst, const Operand& src) {
3735 emit_optional_rex_32(dst, src);
3738 emit_sse_operand(dst, src);
3742 void Assembler::minsd(XMMRegister dst, XMMRegister src) {
3745 emit_optional_rex_32(dst, src);
3748 emit_sse_operand(dst, src);
3752 void Assembler::minsd(XMMRegister dst, const Operand& src) {
3755 emit_optional_rex_32(dst, src);
3758 emit_sse_operand(dst, src);
3762 void Assembler::andpd(XMMRegister dst, XMMRegister src) {
3765 emit_optional_rex_32(dst, src);
3768 emit_sse_operand(dst, src);
3772 void Assembler::andpd(XMMRegister dst, const Operand& src) {
3775 emit_optional_rex_32(dst, src);
3778 emit_sse_operand(dst, src);
3782 void Assembler::orpd(XMMRegister dst, XMMRegister src) {
3785 emit_optional_rex_32(dst, src);
3788 emit_sse_operand(dst, src);
3792 void Assembler::orpd(XMMRegister dst, const Operand& src) {
3795 emit_optional_rex_32(dst, src);
3798 emit_sse_operand(dst, src);
3802 void Assembler::xorpd(XMMRegister dst, XMMRegister src) {
3806 emit_optional_rex_32(dst, src);
3809 emit_sse_operand(dst, src);
3813 void Assembler::xorpd(XMMRegister dst, const Operand& src) {
3817 emit_optional_rex_32(dst, src);
3820 emit_sse_operand(dst, src);
3824 void Assembler::sqrtsd(XMMRegister dst, XMMRegister src) {
3828 emit_optional_rex_32(dst, src);
3831 emit_sse_operand(dst, src);
3835 void Assembler::sqrtsd(XMMRegister dst, const Operand& src) {
3839 emit_optional_rex_32(dst, src);
3842 emit_sse_operand(dst, src);
3846 void Assembler::ucomisd(XMMRegister dst, XMMRegister src) {
3850 emit_optional_rex_32(dst, src);
3853 emit_sse_operand(dst, src);
3857 void Assembler::ucomisd(XMMRegister dst, const Operand& src) {
3861 emit_optional_rex_32(dst, src);
3864 emit_sse_operand(dst, src);
3868 void Assembler::cmpltsd(XMMRegister dst, XMMRegister src) {
3871 emit_optional_rex_32(dst, src);
3874 emit_sse_operand(dst, src);
3879 void Assembler::roundss(XMMRegister dst, XMMRegister src, RoundingMode mode) {
3884 emit_optional_rex_32(dst, src);
3888 emit_sse_operand(dst, src);
3894 void Assembler::roundsd(XMMRegister dst, XMMRegister src, RoundingMode mode) {
3899 emit_optional_rex_32(dst, src);
3903 emit_sse_operand(dst, src);
3909 void Assembler::movmskpd(Register dst, XMMRegister src) {
3912 emit_optional_rex_32(dst, src);
3915 emit_sse_operand(dst, src);
3919 void Assembler::movmskps(Register dst, XMMRegister src) {
3921 emit_optional_rex_32(dst, src);
3924 emit_sse_operand(dst, src);
3928 void Assembler::punpckldq(XMMRegister dst, XMMRegister src) {
3931 emit_optional_rex_32(dst, src);
3934 emit_sse_operand(dst, src);
3937 void Assembler::punpckldq(XMMRegister dst, const Operand& src) {
3940 emit_optional_rex_32(dst, src);
3943 emit_sse_operand(dst, src);
3946 void Assembler::punpckhdq(XMMRegister dst, XMMRegister src) {
3949 emit_optional_rex_32(dst, src);
3952 emit_sse_operand(dst, src);
3957 void Assembler::vfmasd(byte op, XMMRegister dst, XMMRegister src1,
3961 emit_vex_prefix(dst, src1, src2, kLIG, k66, k0F38, kW1);
3963 emit_sse_operand(dst, src2);
3967 void Assembler::vfmasd(byte op, XMMRegister dst, XMMRegister src1,
3971 emit_vex_prefix(dst, src1, src2, kLIG, k66, k0F38, kW1);
3973 emit_sse_operand(dst, src2);
3977 void Assembler::vfmass(byte op, XMMRegister dst, XMMRegister src1,
3981 emit_vex_prefix(dst, src1, src2, kLIG, k66, k0F38, kW0);
3983 emit_sse_operand(dst, src2);
3987 void Assembler::vfmass(byte op, XMMRegister dst, XMMRegister src1,
3991 emit_vex_prefix(dst, src1, src2, kLIG, k66, k0F38, kW0);
3993 emit_sse_operand(dst, src2);
3997 void Assembler::vmovd(XMMRegister dst, Register src) {
4001 emit_vex_prefix(dst, xmm0, isrc, kL128, k66, k0F, kW0);
4003 emit_sse_operand(dst, src);
4007 void Assembler::vmovd(XMMRegister dst, const Operand& src) {
4010 emit_vex_prefix(dst, xmm0, src, kL128, k66, k0F, kW0);
4012 emit_sse_operand(dst, src);
4016 void Assembler::vmovd(Register dst, XMMRegister src) {
4019 XMMRegister idst = {dst.code()};
4022 emit_sse_operand(src, dst);
4026 void Assembler::vmovq(XMMRegister dst, Register src) {
4030 emit_vex_prefix(dst, xmm0, isrc, kL128, k66, k0F, kW1);
4032 emit_sse_operand(dst, src);
4036 void Assembler::vmovq(XMMRegister dst, const Operand& src) {
4039 emit_vex_prefix(dst, xmm0, src, kL128, k66, k0F, kW1);
4041 emit_sse_operand(dst, src);
4045 void Assembler::vmovq(Register dst, XMMRegister src) {
4048 XMMRegister idst = {dst.code()};
4051 emit_sse_operand(src, dst);
4054 void Assembler::vinstr(byte op, XMMRegister dst, XMMRegister src1,
4059 emit_vex_prefix(dst, src1, src2, kLIG, pp, m, w);
4061 emit_sse_operand(dst, src2);
4064 void Assembler::vinstr(byte op, XMMRegister dst, XMMRegister src1,
4069 emit_vex_prefix(dst, src1, src2, kLIG, pp, m, w);
4071 emit_sse_operand(dst, src2);
4075 void Assembler::vps(byte op, XMMRegister dst, XMMRegister src1,
4079 emit_vex_prefix(dst, src1, src2, kL128, kNone, k0F, kWIG);
4081 emit_sse_operand(dst, src2);
4085 void Assembler::vps(byte op, XMMRegister dst, XMMRegister src1,
4089 emit_vex_prefix(dst, src1, src2, kL128, kNone, k0F, kWIG);
4091 emit_sse_operand(dst, src2);
4095 void Assembler::vpd(byte op, XMMRegister dst, XMMRegister src1,
4099 emit_vex_prefix(dst, src1, src2, kL128, k66, k0F, kWIG);
4101 emit_sse_operand(dst, src2);
4105 void Assembler::vpd(byte op, XMMRegister dst, XMMRegister src1,
4109 emit_vex_prefix(dst, src1, src2, kL128, k66, k0F, kWIG);
4111 emit_sse_operand(dst, src2);
4115 void Assembler::vucomiss(XMMRegister dst, XMMRegister src) {
4118 emit_vex_prefix(dst, xmm0, src, kLIG, kNone, k0F, kWIG);
4120 emit_sse_operand(dst, src);
4124 void Assembler::vucomiss(XMMRegister dst, const Operand& src) {
4127 emit_vex_prefix(dst, xmm0, src, kLIG, kNone, k0F, kWIG);
4129 emit_sse_operand(dst, src);
4133 void Assembler::vss(byte op, XMMRegister dst, XMMRegister src1,
4137 emit_vex_prefix(dst, src1, src2, kLIG, kF3, k0F, kWIG);
4139 emit_sse_operand(dst, src2);
4143 void Assembler::vss(byte op, XMMRegister dst, XMMRegister src1,
4147 emit_vex_prefix(dst, src1, src2, kLIG, kF3, k0F, kWIG);
4149 emit_sse_operand(dst, src2);
4189 void Assembler::tzcntq(Register dst, Register src) {
4193 emit_rex_64(dst, src);
4196 emit_modrm(dst, src);
4200 void Assembler::tzcntq(Register dst, const Operand& src) {
4204 emit_rex_64(dst, src);
4207 emit_operand(dst, src);
4211 void Assembler::tzcntl(Register dst, Register src) {
4215 emit_optional_rex_32(dst, src);
4218 emit_modrm(dst, src);
4222 void Assembler::tzcntl(Register dst, const Operand& src) {
4226 emit_optional_rex_32(dst, src);
4229 emit_operand(dst, src);
4233 void Assembler::lzcntq(Register dst, Register src) {
4237 emit_rex_64(dst, src);
4240 emit_modrm(dst, src);
4244 void Assembler::lzcntq(Register dst, const Operand& src) {
4248 emit_rex_64(dst, src);
4251 emit_operand(dst, src);
4255 void Assembler::lzcntl(Register dst, Register src) {
4259 emit_optional_rex_32(dst, src);
4262 emit_modrm(dst, src);
4266 void Assembler::lzcntl(Register dst, const Operand& src) {
4270 emit_optional_rex_32(dst, src);
4273 emit_operand(dst, src);
4277 void Assembler::popcntq(Register dst, Register src) {
4281 emit_rex_64(dst, src);
4284 emit_modrm(dst, src);
4288 void Assembler::popcntq(Register dst, const Operand& src) {
4292 emit_rex_64(dst, src);
4295 emit_operand(dst, src);
4299 void Assembler::popcntl(Register dst, Register src) {
4303 emit_optional_rex_32(dst, src);
4306 emit_modrm(dst, src);
4310 void Assembler::popcntl(Register dst, const Operand& src) {
4314 emit_optional_rex_32(dst, src);
4317 emit_operand(dst, src);
4361 void Assembler::rorxq(Register dst, Register src, byte imm8) {
4366 emit_vex_prefix(dst, vreg, src, kLZ, kF2, k0F3A, kW1);
4368 emit_modrm(dst, src);
4373 void Assembler::rorxq(Register dst, const Operand& src, byte imm8) {
4378 emit_vex_prefix(dst, vreg, src, kLZ, kF2, k0F3A, kW1);
4380 emit_operand(dst, src);
4385 void Assembler::rorxl(Register dst, Register src, byte imm8) {
4390 emit_vex_prefix(dst, vreg, src, kLZ, kF2, k0F3A, kW0);
4392 emit_modrm(dst, src);
4397 void Assembler::rorxl(Register dst, const Operand& src, byte imm8) {
4402 emit_vex_prefix(dst, vreg, src, kLZ, kF2, k0F3A, kW0);
4404 emit_operand(dst, src);
4408 void Assembler::minps(XMMRegister dst, XMMRegister src) {
4410 emit_optional_rex_32(dst, src);
4413 emit_sse_operand(dst, src);
4416 void Assembler::minps(XMMRegister dst, const Operand& src) {
4418 emit_optional_rex_32(dst, src);
4421 emit_sse_operand(dst, src);
4424 void Assembler::maxps(XMMRegister dst, XMMRegister src) {
4426 emit_optional_rex_32(dst, src);
4429 emit_sse_operand(dst, src);
4432 void Assembler::maxps(XMMRegister dst, const Operand& src) {
4434 emit_optional_rex_32(dst, src);
4437 emit_sse_operand(dst, src);
4440 void Assembler::rcpps(XMMRegister dst, XMMRegister src) {
4442 emit_optional_rex_32(dst, src);
4445 emit_sse_operand(dst, src);
4448 void Assembler::rcpps(XMMRegister dst, const Operand& src) {
4450 emit_optional_rex_32(dst, src);
4453 emit_sse_operand(dst, src);
4456 void Assembler::rsqrtps(XMMRegister dst, XMMRegister src) {
4458 emit_optional_rex_32(dst, src);
4461 emit_sse_operand(dst, src);
4464 void Assembler::rsqrtps(XMMRegister dst, const Operand& src) {
4466 emit_optional_rex_32(dst, src);
4469 emit_sse_operand(dst, src);
4472 void Assembler::sqrtps(XMMRegister dst, XMMRegister src) {
4474 emit_optional_rex_32(dst, src);
4477 emit_sse_operand(dst, src);
4480 void Assembler::sqrtps(XMMRegister dst, const Operand& src) {
4482 emit_optional_rex_32(dst, src);
4485 emit_sse_operand(dst, src);
4488 void Assembler::cvtdq2ps(XMMRegister dst, XMMRegister src) {
4490 emit_optional_rex_32(dst, src);
4493 emit_sse_operand(dst, src);
4496 void Assembler::cvtdq2ps(XMMRegister dst, const Operand& src) {
4498 emit_optional_rex_32(dst, src);
4501 emit_sse_operand(dst, src);
4504 void Assembler::movups(XMMRegister dst, XMMRegister src) {
4508 emit_optional_rex_32(src, dst);
4511 emit_sse_operand(src, dst);
4513 emit_optional_rex_32(dst, src);
4516 emit_sse_operand(dst, src);
4520 void Assembler::movups(XMMRegister dst, const Operand& src) {
4522 emit_optional_rex_32(dst, src);
4525 emit_sse_operand(dst, src);
4528 void Assembler::movups(const Operand& dst, XMMRegister src) {
4530 emit_optional_rex_32(src, dst);
4533 emit_sse_operand(src, dst);
4536 void Assembler::sse2_instr(XMMRegister dst, XMMRegister src, byte prefix,
4540 emit_optional_rex_32(dst, src);
4543 emit_sse_operand(dst, src);
4546 void Assembler::sse2_instr(XMMRegister dst, const Operand& src, byte prefix,
4550 emit_optional_rex_32(dst, src);
4553 emit_sse_operand(dst, src);
4556 void Assembler::ssse3_instr(XMMRegister dst, XMMRegister src, byte prefix,
4561 emit_optional_rex_32(dst, src);
4565 emit_sse_operand(dst, src);
4568 void Assembler::ssse3_instr(XMMRegister dst, const Operand& src, byte prefix,
4573 emit_optional_rex_32(dst, src);
4577 emit_sse_operand(dst, src);
4580 void Assembler::sse4_instr(XMMRegister dst, XMMRegister src, byte prefix,
4585 emit_optional_rex_32(dst, src);
4589 emit_sse_operand(dst, src);
4592 void Assembler::sse4_instr(XMMRegister dst, const Operand& src, byte prefix,
4597 emit_optional_rex_32(dst, src);
4601 emit_sse_operand(dst, src);
4604 void Assembler::lddqu(XMMRegister dst, const Operand& src) {
4608 emit_optional_rex_32(dst, src);
4611 emit_sse_operand(dst, src);
4614 void Assembler::psrldq(XMMRegister dst, uint8_t shift) {
4617 emit_optional_rex_32(dst);
4620 emit_sse_operand(dst);
4624 void Assembler::pshufd(XMMRegister dst, XMMRegister src, uint8_t shuffle) {
4627 emit_optional_rex_32(dst, src);
4630 emit_sse_operand(dst, src);
4634 void Assembler::pshufd(XMMRegister dst, const Operand& src, uint8_t shuffle) {
4637 emit_optional_rex_32(dst, src);
4640 emit_sse_operand(dst, src);
4656 void Assembler::emit_sse_operand(XMMRegister dst, XMMRegister src) {
4657 emit(0xC0 | (dst.low_bits() << 3) | src.low_bits());
4661 void Assembler::emit_sse_operand(XMMRegister dst, Register src) {
4662 emit(0xC0 | (dst.low_bits() << 3) | src.low_bits());
4666 void Assembler::emit_sse_operand(Register dst, XMMRegister src) {
4667 emit(0xC0 | (dst.low_bits() << 3) | src.low_bits());
4670 void Assembler::emit_sse_operand(XMMRegister dst) {
4671 emit(0xD8 | dst.low_bits());