Lines Matching refs:dst
714 void Assembler::immediate_arithmetic_op(byte subcode, Register dst,
717 emit_rex(dst, size);
720 emit_modrm(subcode, dst);
722 } else if (dst == rax) {
727 emit_modrm(subcode, dst);
732 void Assembler::immediate_arithmetic_op(byte subcode, Operand dst,
735 emit_rex(dst, size);
738 emit_operand(subcode, dst);
742 emit_operand(subcode, dst);
747 void Assembler::immediate_arithmetic_op_16(byte subcode, Register dst,
751 emit_optional_rex_32(dst);
754 emit_modrm(subcode, dst);
756 } else if (dst == rax) {
761 emit_modrm(subcode, dst);
766 void Assembler::immediate_arithmetic_op_16(byte subcode, Operand dst,
770 emit_optional_rex_32(dst);
773 emit_operand(subcode, dst);
777 emit_operand(subcode, dst);
782 void Assembler::immediate_arithmetic_op_8(byte subcode, Operand dst,
785 emit_optional_rex_32(dst);
788 emit_operand(subcode, dst);
792 void Assembler::immediate_arithmetic_op_8(byte subcode, Register dst,
795 if (!dst.is_byte_register()) {
797 emit_rex_32(dst);
801 emit_modrm(subcode, dst);
805 void Assembler::shift(Register dst, Immediate shift_amount, int subcode,
811 emit_rex(dst, size);
813 emit_modrm(subcode, dst);
815 emit_rex(dst, size);
817 emit_modrm(subcode, dst);
822 void Assembler::shift(Operand dst, Immediate shift_amount, int subcode,
828 emit_rex(dst, size);
830 emit_operand(subcode, dst);
832 emit_rex(dst, size);
834 emit_operand(subcode, dst);
839 void Assembler::shift(Register dst, int subcode, int size) {
841 emit_rex(dst, size);
843 emit_modrm(subcode, dst);
846 void Assembler::shift(Operand dst, int subcode, int size) {
848 emit_rex(dst, size);
850 emit_operand(subcode, dst);
853 void Assembler::bswapl(Register dst) {
855 emit_rex_32(dst);
857 emit(0xC8 + dst.low_bits());
860 void Assembler::bswapq(Register dst) {
862 emit_rex_64(dst);
864 emit(0xC8 + dst.low_bits());
867 void Assembler::btq(Operand dst, Register src) {
869 emit_rex_64(src, dst);
872 emit_operand(src, dst);
875 void Assembler::btsq(Operand dst, Register src) {
877 emit_rex_64(src, dst);
880 emit_operand(src, dst);
883 void Assembler::btsq(Register dst, Immediate imm8) {
885 emit_rex_64(dst);
888 emit_modrm(0x5, dst);
892 void Assembler::btrq(Register dst, Immediate imm8) {
894 emit_rex_64(dst);
897 emit_modrm(0x6, dst);
901 void Assembler::bsrl(Register dst, Register src) {
903 emit_optional_rex_32(dst, src);
906 emit_modrm(dst, src);
909 void Assembler::bsrl(Register dst, Operand src) {
911 emit_optional_rex_32(dst, src);
914 emit_operand(dst, src);
917 void Assembler::bsrq(Register dst, Register src) {
919 emit_rex_64(dst, src);
922 emit_modrm(dst, src);
925 void Assembler::bsrq(Register dst, Operand src) {
927 emit_rex_64(dst, src);
930 emit_operand(dst, src);
933 void Assembler::bsfl(Register dst, Register src) {
935 emit_optional_rex_32(dst, src);
938 emit_modrm(dst, src);
941 void Assembler::bsfl(Register dst, Operand src) {
943 emit_optional_rex_32(dst, src);
946 emit_operand(dst, src);
949 void Assembler::bsfq(Register dst, Register src) {
951 emit_rex_64(dst, src);
954 emit_modrm(dst, src);
957 void Assembler::bsfq(Register dst, Operand src) {
959 emit_rex_64(dst, src);
962 emit_operand(dst, src);
965 void Assembler::pblendw(XMMRegister dst, Operand src, uint8_t mask) {
966 sse4_instr(dst, src, 0x66, 0x0F, 0x3A, 0x0E);
970 void Assembler::pblendw(XMMRegister dst, XMMRegister src, uint8_t mask) {
971 sse4_instr(dst, src, 0x66, 0x0F, 0x3A, 0x0E);
975 void Assembler::palignr(XMMRegister dst, Operand src, uint8_t mask) {
976 ssse3_instr(dst, src, 0x66, 0x0F, 0x3A, 0x0F);
980 void Assembler::palignr(XMMRegister dst, XMMRegister src, uint8_t mask) {
981 ssse3_instr(dst, src, 0x66, 0x0F, 0x3A, 0x0F);
1070 void Assembler::cmovq(Condition cc, Register dst, Register src) {
1072 movq(dst, src);
1081 emit_rex_64(dst, src);
1084 emit_modrm(dst, src);
1087 void Assembler::cmovq(Condition cc, Register dst, Operand src) {
1089 movq(dst, src);
1096 emit_rex_64(dst, src);
1099 emit_operand(dst, src);
1102 void Assembler::cmovl(Condition cc, Register dst, Register src) {
1104 movl(dst, src);
1111 emit_optional_rex_32(dst, src);
1114 emit_modrm(dst, src);
1117 void Assembler::cmovl(Condition cc, Register dst, Operand src) {
1119 movl(dst, src);
1126 emit_optional_rex_32(dst, src);
1129 emit_operand(dst, src);
1144 void Assembler::xaddb(Operand dst, Register src) {
1146 emit_optional_rex_8(src, dst);
1149 emit_operand(src, dst);
1152 void Assembler::xaddw(Operand dst, Register src) {
1155 emit_optional_rex_32(src, dst);
1158 emit_operand(src, dst);
1161 void Assembler::xaddl(Operand dst, Register src) {
1163 emit_optional_rex_32(src, dst);
1166 emit_operand(src, dst);
1169 void Assembler::xaddq(Operand dst, Register src) {
1171 emit_rex(src, dst, kInt64Size);
1174 emit_operand(src, dst);
1177 void Assembler::cmpxchgb(Operand dst, Register src) {
1181 emit_rex_32(src, dst);
1183 emit_optional_rex_32(src, dst);
1187 emit_operand(src, dst);
1190 void Assembler::cmpxchgw(Operand dst, Register src) {
1193 emit_optional_rex_32(src, dst);
1196 emit_operand(src, dst);
1199 void Assembler::emit_cmpxchg(Operand dst, Register src, int size) {
1201 emit_rex(src, dst, size);
1204 emit_operand(src, dst);
1233 void Assembler::emit_dec(Register dst, int size) {
1235 emit_rex(dst, size);
1237 emit_modrm(0x1, dst);
1240 void Assembler::emit_dec(Operand dst, int size) {
1242 emit_rex(dst, size);
1244 emit_operand(1, dst);
1247 void Assembler::decb(Register dst) {
1249 if (!dst.is_byte_register()) {
1251 emit_rex_32(dst);
1254 emit_modrm(0x1, dst);
1257 void Assembler::decb(Operand dst) {
1259 emit_optional_rex_32(dst);
1261 emit_operand(1, dst);
1297 void Assembler::emit_imul(Register dst, Register src, int size) {
1299 emit_rex(dst, src, size);
1302 emit_modrm(dst, src);
1305 void Assembler::emit_imul(Register dst, Operand src, int size) {
1307 emit_rex(dst, src, size);
1310 emit_operand(dst, src);
1313 void Assembler::emit_imul(Register dst, Register src, Immediate imm, int size) {
1315 emit_rex(dst, src, size);
1318 emit_modrm(dst, src);
1322 emit_modrm(dst, src);
1327 void Assembler::emit_imul(Register dst, Operand src, Immediate imm, int size) {
1329 emit_rex(dst, src, size);
1332 emit_operand(dst, src);
1336 emit_operand(dst, src);
1341 void Assembler::emit_inc(Register dst, int size) {
1343 emit_rex(dst, size);
1345 emit_modrm(0x0, dst);
1348 void Assembler::emit_inc(Operand dst, int size) {
1350 emit_rex(dst, size);
1352 emit_operand(0, dst);
1564 void Assembler::emit_lea(Register dst, Operand src, int size) {
1566 emit_rex(dst, src, size);
1568 emit_operand(dst, src);
1587 void Assembler::movb(Register dst, Operand src) {
1589 if (!dst.is_byte_register()) {
1591 emit_rex_32(dst, src);
1593 emit_optional_rex_32(dst, src);
1596 emit_operand(dst, src);
1599 void Assembler::movb(Register dst, Immediate imm) {
1601 if (!dst.is_byte_register()) {
1603 emit_rex_32(dst);
1605 emit(0xB0 + dst.low_bits());
1609 void Assembler::movb(Operand dst, Register src) {
1613 emit_rex_32(src, dst);
1615 emit_optional_rex_32(src, dst);
1618 emit_operand(src, dst);
1621 void Assembler::movb(Operand dst, Immediate imm) {
1623 emit_optional_rex_32(dst);
1625 emit_operand(0x0, dst);
1629 void Assembler::movw(Register dst, Operand src) {
1632 emit_optional_rex_32(dst, src);
1634 emit_operand(dst, src);
1637 void Assembler::movw(Operand dst, Register src) {
1640 emit_optional_rex_32(src, dst);
1642 emit_operand(src, dst);
1645 void Assembler::movw(Operand dst, Immediate imm) {
1648 emit_optional_rex_32(dst);
1650 emit_operand(0x0, dst);
1655 void Assembler::emit_mov(Register dst, Operand src, int size) {
1657 emit_rex(dst, src, size);
1659 emit_operand(dst, src);
1662 void Assembler::emit_mov(Register dst, Register src, int size) {
1665 emit_rex(src, dst, size);
1667 emit_modrm(src, dst);
1669 emit_rex(dst, src, size);
1671 emit_modrm(dst, src);
1675 if (xdata_encoder_ && dst == rbp && src == rsp) {
1681 void Assembler::emit_mov(Operand dst, Register src, int size) {
1683 emit_rex(src, dst, size);
1685 emit_operand(src, dst);
1688 void Assembler::emit_mov(Register dst, Immediate value, int size) {
1690 emit_rex(dst, size);
1693 emit_modrm(0x0, dst);
1696 emit(0xB8 + dst.low_bits());
1701 void Assembler::emit_mov(Operand dst, Immediate value, int size) {
1703 emit_rex(dst, size);
1705 emit_operand(0x0, dst);
1709 void Assembler::emit_mov(Register dst, Immediate64 value, int size) {
1714 emit_mov(dst, Operand(&label, 0), size);
1718 emit_rex(dst, size);
1719 emit(0xB8 | dst.low_bits());
1724 void Assembler::movq_imm64(Register dst, int64_t value) {
1726 emit_rex(dst, kInt64Size);
1727 emit(0xB8 | dst.low_bits());
1731 void Assembler::movq_heap_number(Register dst, double value) {
1733 emit_rex(dst, kInt64Size);
1734 emit(0xB8 | dst.low_bits());
1739 void Assembler::movq_string(Register dst, const StringConstantBase* str) {
1741 emit_rex(dst, kInt64Size);
1742 emit(0xB8 | dst.low_bits());
1749 void Assembler::movl(Operand dst, Label* src) {
1751 emit_optional_rex_32(dst);
1753 emit_operand(0, dst);
1769 void Assembler::movsxbl(Register dst, Register src) {
1773 emit_rex_32(dst, src);
1775 emit_optional_rex_32(dst, src);
1779 emit_modrm(dst, src);
1782 void Assembler::movsxbl(Register dst, Operand src) {
1784 emit_optional_rex_32(dst, src);
1787 emit_operand(dst, src);
1790 void Assembler::movsxbq(Register dst, Operand src) {
1792 emit_rex_64(dst, src);
1795 emit_operand(dst, src);
1798 void Assembler::movsxbq(Register dst, Register src) {
1800 emit_rex_64(dst, src);
1803 emit_modrm(dst, src);
1806 void Assembler::movsxwl(Register dst, Register src) {
1808 emit_optional_rex_32(dst, src);
1811 emit_modrm(dst, src);
1814 void Assembler::movsxwl(Register dst, Operand src) {
1816 emit_optional_rex_32(dst, src);
1819 emit_operand(dst, src);
1822 void Assembler::movsxwq(Register dst, Operand src) {
1824 emit_rex_64(dst, src);
1827 emit_operand(dst, src);
1830 void Assembler::movsxwq(Register dst, Register src) {
1832 emit_rex_64(dst, src);
1835 emit_modrm(dst, src);
1838 void Assembler::movsxlq(Register dst, Register src) {
1840 emit_rex_64(dst, src);
1842 emit_modrm(dst, src);
1845 void Assembler::movsxlq(Register dst, Operand src) {
1847 emit_rex_64(dst, src);
1849 emit_operand(dst, src);
1852 void Assembler::emit_movzxb(Register dst, Operand src, int size) {
1856 emit_optional_rex_32(dst, src);
1859 emit_operand(dst, src);
1862 void Assembler::emit_movzxb(Register dst, Register src, int size) {
1868 emit_rex_32(dst, src);
1870 emit_optional_rex_32(dst, src);
1874 emit_modrm(dst, src);
1877 void Assembler::emit_movzxw(Register dst, Operand src, int size) {
1881 emit_optional_rex_32(dst, src);
1884 emit_operand(dst, src);
1887 void Assembler::emit_movzxw(Register dst, Register src, int size) {
1891 emit_optional_rex_32(dst, src);
1894 emit_modrm(dst, src);
2014 void Assembler::emit_not(Register dst, int size) {
2016 emit_rex(dst, size);
2018 emit_modrm(0x2, dst);
2021 void Assembler::emit_not(Operand dst, int size) {
2023 emit_rex(dst, size);
2025 emit_operand(2, dst);
2062 void Assembler::popq(Register dst) {
2064 emit_optional_rex_32(dst);
2065 emit(0x58 | dst.low_bits());
2068 void Assembler::popq(Operand dst) {
2070 emit_optional_rex_32(dst);
2072 emit_operand(0, dst);
2164 void Assembler::shld(Register dst, Register src) {
2166 emit_rex_64(src, dst);
2169 emit_modrm(src, dst);
2172 void Assembler::shrd(Register dst, Register src) {
2174 emit_rex_64(src, dst);
2177 emit_modrm(src, dst);
2200 void Assembler::emit_xchg(Register dst, Register src, int size) {
2202 if (src == rax || dst == rax) { // Single-byte encoding
2203 Register other = src == rax ? dst : src;
2206 } else if (dst.low_bits() == 4) {
2207 emit_rex(dst, src, size);
2209 emit_modrm(dst, src);
2211 emit_rex(src, dst, size);
2213 emit_modrm(src, dst);
2217 void Assembler::emit_xchg(Register dst, Operand src, int size) {
2219 emit_rex(dst, src, size);
2221 emit_operand(dst, src);
2224 void Assembler::store_rax(Address dst, RelocInfo::Mode mode) {
2228 emit(Immediate64(dst, mode));
2242 void Assembler::testb(Register dst, Register src) {
2244 emit_test(dst, src, sizeof(int8_t));
2261 void Assembler::testw(Register dst, Register src) {
2262 emit_test(dst, src, sizeof(uint16_t));
2277 void Assembler::emit_test(Register dst, Register src, int size) {
2279 if (src.low_bits() == 4) std::swap(dst, src);
2287 if (!src.is_byte_register() || !dst.is_byte_register()) {
2288 emit_rex_32(dst, src);
2291 emit_rex(dst, src, size);
2294 emit_modrm(dst, src);
2706 void Assembler::movd(XMMRegister dst, Register src) {
2710 emit_optional_rex_32(dst, src);
2713 emit_sse_operand(dst, src);
2716 void Assembler::movd(XMMRegister dst, Operand src) {
2720 emit_optional_rex_32(dst, src);
2723 emit_sse_operand(dst, src);
2726 void Assembler::movd(Register dst, XMMRegister src) {
2730 emit_optional_rex_32(src, dst);
2733 emit_sse_operand(src, dst);
2736 void Assembler::movq(XMMRegister dst, Register src) {
2741 emit_rex_64(dst, src);
2744 emit_sse_operand(dst, src);
2747 void Assembler::movq(XMMRegister dst, Operand src) {
2752 emit_rex_64(dst, src);
2755 emit_sse_operand(dst, src);
2758 void Assembler::movq(Register dst, XMMRegister src) {
2763 emit_rex_64(src, dst);
2766 emit_sse_operand(src, dst);
2769 void Assembler::movq(XMMRegister dst, XMMRegister src) {
2773 if (dst.low_bits() == 4) {
2776 emit_optional_rex_32(dst, src);
2779 emit_sse_operand(dst, src);
2782 emit_optional_rex_32(src, dst);
2785 emit_sse_operand(src, dst);
2789 void Assembler::movdqa(Operand dst, XMMRegister src) {
2792 emit_rex_64(src, dst);
2795 emit_sse_operand(src, dst);
2798 void Assembler::movdqa(XMMRegister dst, Operand src) {
2801 emit_rex_64(dst, src);
2804 emit_sse_operand(dst, src);
2807 void Assembler::movdqa(XMMRegister dst, XMMRegister src) {
2810 emit_rex_64(src, dst);
2813 emit_sse_operand(src, dst);
2816 void Assembler::movdqu(Operand dst, XMMRegister src) {
2819 emit_rex_64(src, dst);
2822 emit_sse_operand(src, dst);
2825 void Assembler::movdqu(XMMRegister dst, Operand src) {
2828 emit_rex_64(dst, src);
2831 emit_sse_operand(dst, src);
2834 void Assembler::movdqu(XMMRegister dst, XMMRegister src) {
2837 emit_rex_64(dst, src);
2840 emit_sse_operand(dst, src);
2843 void Assembler::pinsrw(XMMRegister dst, Register src, uint8_t imm8) {
2846 emit_optional_rex_32(dst, src);
2849 emit_sse_operand(dst, src);
2853 void Assembler::pinsrw(XMMRegister dst, Operand src, uint8_t imm8) {
2856 emit_optional_rex_32(dst, src);
2859 emit_sse_operand(dst, src);
2863 void Assembler::pextrq(Register dst, XMMRegister src, int8_t imm8) {
2867 emit_rex_64(src, dst);
2871 emit_sse_operand(src, dst);
2875 void Assembler::pinsrq(XMMRegister dst, Register src, uint8_t imm8) {
2879 emit_rex_64(dst, src);
2883 emit_sse_operand(dst, src);
2887 void Assembler::pinsrq(XMMRegister dst, Operand src, uint8_t imm8) {
2891 emit_rex_64(dst, src);
2895 emit_sse_operand(dst, src);
2899 void Assembler::pinsrd(XMMRegister dst, Register src, uint8_t imm8) {
2900 sse4_instr(dst, src, 0x66, 0x0F, 0x3A, 0x22, imm8);
2903 void Assembler::pinsrd(XMMRegister dst, Operand src, uint8_t imm8) {
2904 sse4_instr(dst, src, 0x66, 0x0F, 0x3A, 0x22);
2908 void Assembler::pinsrb(XMMRegister dst, Register src, uint8_t imm8) {
2909 sse4_instr(dst, src, 0x66, 0x0F, 0x3A, 0x20, imm8);
2912 void Assembler::pinsrb(XMMRegister dst, Operand src, uint8_t imm8) {
2913 sse4_instr(dst, src, 0x66, 0x0F, 0x3A, 0x20);
2917 void Assembler::insertps(XMMRegister dst, XMMRegister src, byte imm8) {
2919 sse4_instr(dst, src, 0x66, 0x0F, 0x3A, 0x21);
2923 void Assembler::insertps(XMMRegister dst, Operand src, byte imm8) {
2925 sse4_instr(dst, src, 0x66, 0x0F, 0x3A, 0x21);
2929 void Assembler::movsd(Operand dst, XMMRegister src) {
2933 emit_optional_rex_32(src, dst);
2936 emit_sse_operand(src, dst);
2939 void Assembler::movsd(XMMRegister dst, XMMRegister src) {
2943 emit_optional_rex_32(dst, src);
2946 emit_sse_operand(dst, src);
2949 void Assembler::movsd(XMMRegister dst, Operand src) {
2953 emit_optional_rex_32(dst, src);
2956 emit_sse_operand(dst, src);
2959 void Assembler::movaps(XMMRegister dst, XMMRegister src) {
2964 emit_optional_rex_32(src, dst);
2967 emit_sse_operand(src, dst);
2969 emit_optional_rex_32(dst, src);
2972 emit_sse_operand(dst, src);
2976 void Assembler::movaps(XMMRegister dst, Operand src) {
2979 emit_optional_rex_32(dst, src);
2982 emit_sse_operand(dst, src);
2985 void Assembler::shufps(XMMRegister dst, XMMRegister src, byte imm8) {
2988 emit_optional_rex_32(dst, src);
2991 emit_sse_operand(dst, src);
2995 void Assembler::movapd(XMMRegister dst, XMMRegister src) {
3001 emit_optional_rex_32(src, dst);
3004 emit_sse_operand(src, dst);
3007 emit_optional_rex_32(dst, src);
3010 emit_sse_operand(dst, src);
3014 void Assembler::movupd(XMMRegister dst, Operand src) {
3017 emit_optional_rex_32(dst, src);
3020 emit_sse_operand(dst, src);
3023 void Assembler::movupd(Operand dst, XMMRegister src) {
3026 emit_optional_rex_32(src, dst);
3029 emit_sse_operand(src, dst);
3032 void Assembler::ucomiss(XMMRegister dst, XMMRegister src) {
3035 emit_optional_rex_32(dst, src);
3038 emit_sse_operand(dst, src);
3041 void Assembler::ucomiss(XMMRegister dst, Operand src) {
3044 emit_optional_rex_32(dst, src);
3047 emit_sse_operand(dst, src);
3050 void Assembler::movss(XMMRegister dst, XMMRegister src) {
3054 emit_optional_rex_32(dst, src);
3057 emit_sse_operand(dst, src);
3060 void Assembler::movss(XMMRegister dst, Operand src) {
3064 emit_optional_rex_32(dst, src);
3067 emit_sse_operand(dst, src);
3070 void Assembler::movss(Operand src, XMMRegister dst) {
3074 emit_optional_rex_32(dst, src);
3077 emit_sse_operand(dst, src);
3080 void Assembler::movlps(XMMRegister dst, Operand src) {
3083 emit_optional_rex_32(dst, src);
3086 emit_sse_operand(dst, src);
3089 void Assembler::movlps(Operand src, XMMRegister dst) {
3092 emit_optional_rex_32(dst, src);
3095 emit_sse_operand(dst, src);
3098 void Assembler::movhps(XMMRegister dst, Operand src) {
3101 emit_optional_rex_32(dst, src);
3104 emit_sse_operand(dst, src);
3107 void Assembler::movhps(Operand src, XMMRegister dst) {
3110 emit_optional_rex_32(dst, src);
3113 emit_sse_operand(dst, src);
3116 void Assembler::cmpps(XMMRegister dst, XMMRegister src, int8_t cmp) {
3118 emit_optional_rex_32(dst, src);
3121 emit_sse_operand(dst, src);
3125 void Assembler::cmpps(XMMRegister dst, Operand src, int8_t cmp) {
3127 emit_optional_rex_32(dst, src);
3130 emit_sse_operand(dst, src);
3134 void Assembler::cmppd(XMMRegister dst, XMMRegister src, int8_t cmp) {
3137 emit_optional_rex_32(dst, src);
3140 emit_sse_operand(dst, src);
3144 void Assembler::cmppd(XMMRegister dst, Operand src, int8_t cmp) {
3147 emit_optional_rex_32(dst, src);
3150 emit_sse_operand(dst, src);
3154 void Assembler::cvtdq2pd(XMMRegister dst, XMMRegister src) {
3155 sse2_instr(dst, src, 0xF3, 0x0F, 0xE6);
3158 void Assembler::cvttss2si(Register dst, Operand src) {
3162 emit_optional_rex_32(dst, src);
3165 emit_operand(dst, src);
3168 void Assembler::cvttss2si(Register dst, XMMRegister src) {
3172 emit_optional_rex_32(dst, src);
3175 emit_sse_operand(dst, src);
3178 void Assembler::cvttsd2si(Register dst, Operand src) {
3182 emit_optional_rex_32(dst, src);
3185 emit_operand(dst, src);
3188 void Assembler::cvttsd2si(Register dst, XMMRegister src) {
3192 emit_optional_rex_32(dst, src);
3195 emit_sse_operand(dst, src);
3198 void Assembler::cvttss2siq(Register dst, XMMRegister src) {
3202 emit_rex_64(dst, src);
3205 emit_sse_operand(dst, src);
3208 void Assembler::cvttss2siq(Register dst, Operand src) {
3212 emit_rex_64(dst, src);
3215 emit_sse_operand(dst, src);
3218 void Assembler::cvttsd2siq(Register dst, XMMRegister src) {
3222 emit_rex_64(dst, src);
3225 emit_sse_operand(dst, src);
3228 void Assembler::cvttsd2siq(Register dst, Operand src) {
3232 emit_rex_64(dst, src);
3235 emit_sse_operand(dst, src);
3238 void Assembler::cvttps2dq(XMMRegister dst, Operand src) {
3241 emit_rex_64(dst, src);
3244 emit_sse_operand(dst, src);
3247 void Assembler::cvttps2dq(XMMRegister dst, XMMRegister src) {
3250 emit_rex_64(dst, src);
3253 emit_sse_operand(dst, src);
3256 void Assembler::cvtlsi2sd(XMMRegister dst, Operand src) {
3260 emit_optional_rex_32(dst, src);
3263 emit_sse_operand(dst, src);
3266 void Assembler::cvtlsi2sd(XMMRegister dst, Register src) {
3270 emit_optional_rex_32(dst, src);
3273 emit_sse_operand(dst, src);
3276 void Assembler::cvtlsi2ss(XMMRegister dst, Operand src) {
3280 emit_optional_rex_32(dst, src);
3283 emit_sse_operand(dst, src);
3286 void Assembler::cvtlsi2ss(XMMRegister dst, Register src) {
3289 emit_optional_rex_32(dst, src);
3292 emit_sse_operand(dst, src);
3295 void Assembler::cvtqsi2ss(XMMRegister dst, Operand src) {
3299 emit_rex_64(dst, src);
3302 emit_sse_operand(dst, src);
3305 void Assembler::cvtqsi2ss(XMMRegister dst, Register src) {
3309 emit_rex_64(dst, src);
3312 emit_sse_operand(dst, src);
3315 void Assembler::cvtqsi2sd(XMMRegister dst, Operand src) {
3319 emit_rex_64(dst, src);
3322 emit_sse_operand(dst, src);
3325 void Assembler::cvtqsi2sd(XMMRegister dst, Register src) {
3329 emit_rex_64(dst, src);
3332 emit_sse_operand(dst, src);
3335 void Assembler::cvtsd2si(Register dst, XMMRegister src) {
3339 emit_optional_rex_32(dst, src);
3342 emit_sse_operand(dst, src);
3345 void Assembler::cvtsd2siq(Register dst, XMMRegister src) {
3349 emit_rex_64(dst, src);
3352 emit_sse_operand(dst, src);
3355 void Assembler::haddps(XMMRegister dst, XMMRegister src) {
3359 emit_optional_rex_32(dst, src);
3362 emit_sse_operand(dst, src);
3365 void Assembler::haddps(XMMRegister dst, Operand src) {
3369 emit_optional_rex_32(dst, src);
3372 emit_sse_operand(dst, src);
3375 void Assembler::cmpeqss(XMMRegister dst, XMMRegister src) {
3379 emit_optional_rex_32(dst, src);
3382 emit_sse_operand(dst, src);
3386 void Assembler::cmpeqsd(XMMRegister dst, XMMRegister src) {
3390 emit_optional_rex_32(dst, src);
3393 emit_sse_operand(dst, src);
3397 void Assembler::cmpltsd(XMMRegister dst, XMMRegister src) {
3400 emit_optional_rex_32(dst, src);
3403 emit_sse_operand(dst, src);
3407 void Assembler::roundss(XMMRegister dst, XMMRegister src, RoundingMode mode) {
3409 sse4_instr(dst, src, 0x66, 0x0F, 0x3A, 0x0A);
3414 void Assembler::roundss(XMMRegister dst, Operand src, RoundingMode mode) {
3416 sse4_instr(dst, src, 0x66, 0x0F, 0x3A, 0x0A);
3421 void Assembler::roundsd(XMMRegister dst, XMMRegister src, RoundingMode mode) {
3423 sse4_instr(dst, src, 0x66, 0x0F, 0x3A, 0x0B);
3428 void Assembler::roundsd(XMMRegister dst, Operand src, RoundingMode mode) {
3430 sse4_instr(dst, src, 0x66, 0x0F, 0x3A, 0x0B);
3435 void Assembler::roundps(XMMRegister dst, XMMRegister src, RoundingMode mode) {
3437 sse4_instr(dst, src, 0x66, 0x0F, 0x3A, 0x08);
3442 void Assembler::roundpd(XMMRegister dst, XMMRegister src, RoundingMode mode) {
3444 sse4_instr(dst, src, 0x66, 0x0F, 0x3A, 0x09);
3449 void Assembler::movmskpd(Register dst, XMMRegister src) {
3452 emit_optional_rex_32(dst, src);
3455 emit_sse_operand(dst, src);
3458 void Assembler::movmskps(Register dst, XMMRegister src) {
3460 emit_optional_rex_32(dst, src);
3463 emit_sse_operand(dst, src);
3466 void Assembler::pmovmskb(Register dst, XMMRegister src) {
3469 emit_optional_rex_32(dst, src);
3472 emit_sse_operand(dst, src);
3477 void Assembler::vmovddup(SIMDRegister dst, SIMDRegister src) { \
3480 emit_vex_prefix(dst, xmm0, src, k##length, kF2, k0F, kWIG); \
3482 emit_sse_operand(dst, src); \
3485 void Assembler::vmovddup(SIMDRegister dst, Operand src) { \
3488 emit_vex_prefix(dst, xmm0, src, k##length, kF2, k0F, kWIG); \
3490 emit_sse_operand(dst, src); \
3493 void Assembler::vmovshdup(SIMDRegister dst, SIMDRegister src) { \
3496 emit_vex_prefix(dst, xmm0, src, k##length, kF3, k0F, kWIG); \
3498 emit_sse_operand(dst, src); \
3505 void Assembler::vbroadcastss(SIMDRegister dst, Operand src) { \
3508 emit_vex_prefix(dst, xmm0, src, k##length, k66, k0F38, kW0); \
3510 emit_sse_operand(dst, src); \
3512 void Assembler::vbroadcastss(SIMDRegister dst, XMMRegister src) { \
3515 emit_vex_prefix(dst, xmm0, src, k##length, k66, k0F38, kW0); \
3517 emit_sse_operand(dst, src); \
3523 void Assembler::fma_instr(byte op, XMMRegister dst, XMMRegister src1,
3528 emit_vex_prefix(dst, src1, src2, l, pp, m, w);
3530 emit_sse_operand(dst, src2);
3533 void Assembler::fma_instr(byte op, XMMRegister dst, XMMRegister src1,
3538 emit_vex_prefix(dst, src1, src2, l, pp, m, w);
3540 emit_sse_operand(dst, src2);
3543 void Assembler::vmovd(XMMRegister dst, Register src) {
3547 emit_vex_prefix(dst, xmm0, isrc, kL128, k66, k0F, kW0);
3549 emit_sse_operand(dst, src);
3552 void Assembler::vmovd(XMMRegister dst, Operand src) {
3555 emit_vex_prefix(dst, xmm0, src, kL128, k66, k0F, kW0);
3557 emit_sse_operand(dst, src);
3560 void Assembler::vmovd(Register dst, XMMRegister src) {
3563 XMMRegister idst = XMMRegister::from_code(dst.code());
3566 emit_sse_operand(src, dst);
3569 void Assembler::vmovq(XMMRegister dst, Register src) {
3573 emit_vex_prefix(dst, xmm0, isrc, kL128, k66, k0F, kW1);
3575 emit_sse_operand(dst, src);
3578 void Assembler::vmovq(XMMRegister dst, Operand src) {
3581 emit_vex_prefix(dst, xmm0, src, kL128, k66, k0F, kW1);
3583 emit_sse_operand(dst, src);
3586 void Assembler::vmovq(Register dst, XMMRegister src) {
3589 XMMRegister idst = XMMRegister::from_code(dst.code());
3592 emit_sse_operand(src, dst);
3595 void Assembler::vmovdqa(XMMRegister dst, Operand src) {
3598 emit_vex_prefix(dst, xmm0, src, kL128, k66, k0F, kWIG);
3600 emit_sse_operand(dst, src);
3603 void Assembler::vmovdqa(XMMRegister dst, XMMRegister src) {
3606 emit_vex_prefix(dst, xmm0, src, kL128, k66, k0F, kWIG);
3608 emit_sse_operand(dst, src);
3611 void Assembler::vmovdqa(YMMRegister dst, Operand src) {
3614 emit_vex_prefix(dst, ymm0, src, kL256, k66, k0F, kWIG);
3616 emit_sse_operand(dst, src);
3619 void Assembler::vmovdqa(YMMRegister dst, YMMRegister src) {
3622 emit_vex_prefix(dst, ymm0, src, kL256, k66, k0F, kWIG);
3624 emit_sse_operand(dst, src);
3627 void Assembler::vmovdqu(XMMRegister dst, Operand src) {
3630 emit_vex_prefix(dst, xmm0, src, kL128, kF3, k0F, kWIG);
3632 emit_sse_operand(dst, src);
3635 void Assembler::vmovdqu(Operand dst, XMMRegister src) {
3638 emit_vex_prefix(src, xmm0, dst, kL128, kF3, k0F, kWIG);
3640 emit_sse_operand(src, dst);
3643 void Assembler::vmovdqu(XMMRegister dst, XMMRegister src) {
3646 emit_vex_prefix(src, xmm0, dst, kL128, kF3, k0F, kWIG);
3648 emit_sse_operand(src, dst);
3651 void Assembler::vmovdqu(YMMRegister dst, Operand src) {
3654 emit_vex_prefix(dst, ymm0, src, kL256, kF3, k0F, kWIG);
3656 emit_sse_operand(dst, src);
3659 void Assembler::vmovdqu(Operand dst, YMMRegister src) {
3662 emit_vex_prefix(src, ymm0, dst, kL256, kF3, k0F, kWIG);
3664 emit_sse_operand(src, dst);
3667 void Assembler::vmovdqu(YMMRegister dst, YMMRegister src) {
3670 emit_vex_prefix(src, ymm0, dst, kL256, kF3, k0F, kWIG);
3672 emit_sse_operand(src, dst);
3675 void Assembler::vmovlps(XMMRegister dst, XMMRegister src1, Operand src2) {
3678 emit_vex_prefix(dst, src1, src2, kL128, kNoPrefix, k0F, kWIG);
3680 emit_sse_operand(dst, src2);
3683 void Assembler::vmovlps(Operand dst, XMMRegister src) {
3686 emit_vex_prefix(src, xmm0, dst, kL128, kNoPrefix, k0F, kWIG);
3688 emit_sse_operand(src, dst);
3691 void Assembler::vmovhps(XMMRegister dst, XMMRegister src1, Operand src2) {
3694 emit_vex_prefix(dst, src1, src2, kL128, kNoPrefix, k0F, kWIG);
3696 emit_sse_operand(dst, src2);
3699 void Assembler::vmovhps(Operand dst, XMMRegister src) {
3702 emit_vex_prefix(src, xmm0, dst, kL128, kNoPrefix, k0F, kWIG);
3704 emit_sse_operand(src, dst);
3707 void Assembler::vinstr(byte op, XMMRegister dst, XMMRegister src1,
3713 emit_vex_prefix(dst, src1, src2, kLIG, pp, m, w);
3715 emit_sse_operand(dst, src2);
3718 void Assembler::vinstr(byte op, XMMRegister dst, XMMRegister src1, Operand src2,
3724 emit_vex_prefix(dst, src1, src2, kLIG, pp, m, w);
3726 emit_sse_operand(dst, src2);
3730 void Assembler::vinstr(byte op, Reg1 dst, Reg2 src1, Op src2, SIMDPrefix pp,
3735 emit_vex_prefix(dst, src1, src2, kL256, pp, m, w);
3737 emit_sse_operand(dst, src2);
3741 byte op, YMMRegister dst, YMMRegister src1, YMMRegister src2, SIMDPrefix pp,
3744 byte op, YMMRegister dst, XMMRegister src1, XMMRegister src2, SIMDPrefix pp,
3747 byte op, YMMRegister dst, YMMRegister src1, Operand src2, SIMDPrefix pp,
3750 byte op, YMMRegister dst, YMMRegister src1, XMMRegister src2, SIMDPrefix pp,
3753 byte op, YMMRegister dst, XMMRegister src1, Operand src2, SIMDPrefix pp,
3756 void Assembler::vps(byte op, XMMRegister dst, XMMRegister src1,
3760 emit_vex_prefix(dst, src1, src2, kL128, kNoPrefix, k0F, kWIG);
3762 emit_sse_operand(dst, src2);
3765 void Assembler::vps(byte op, YMMRegister dst, YMMRegister src1,
3769 emit_vex_prefix(dst, src1, src2, kL256, kNoPrefix, k0F, kWIG);
3771 emit_sse_operand(dst, src2);
3774 void Assembler::vps(byte op, XMMRegister dst, XMMRegister src1, Operand src2) {
3777 emit_vex_prefix(dst, src1, src2, kL128, kNoPrefix, k0F, kWIG);
3779 emit_sse_operand(dst, src2);
3782 void Assembler::vps(byte op, YMMRegister dst, YMMRegister src1, Operand src2) {
3785 emit_vex_prefix(dst, src1, src2, kL256, kNoPrefix, k0F, kWIG);
3787 emit_sse_operand(dst, src2);
3790 void Assembler::vps(byte op, XMMRegister dst, XMMRegister src1,
3794 emit_vex_prefix(dst, src1, src2, kL128, kNoPrefix, k0F, kWIG);
3796 emit_sse_operand(dst, src2);
3800 void Assembler::vps(byte op, YMMRegister dst, YMMRegister src1,
3804 emit_vex_prefix(dst, src1, src2, kL256, kNoPrefix, k0F, kWIG);
3806 emit_sse_operand(dst, src2);
3811 void Assembler::vpd(byte op, SIMDRegister dst, SIMDRegister src1, \
3815 emit_vex_prefix(dst, src1, src2, k##length, k66, k0F, kWIG); \
3817 emit_sse_operand(dst, src2); \
3820 void Assembler::vpd(byte op, SIMDRegister dst, SIMDRegister src1, \
3824 emit_vex_prefix(dst, src1, src2, k##length, k66, k0F, kWIG); \
3826 emit_sse_operand(dst, src2); \
3832 void Assembler::vucomiss(XMMRegister dst, XMMRegister src) {
3835 emit_vex_prefix(dst, xmm0, src, kLIG, kNoPrefix, k0F, kWIG);
3837 emit_sse_operand(dst, src);
3840 void Assembler::vucomiss(XMMRegister dst, Operand src) {
3843 emit_vex_prefix(dst, xmm0, src, kLIG, kNoPrefix, k0F, kWIG);
3845 emit_sse_operand(dst, src);
3848 void Assembler::vpmovmskb(Register dst, XMMRegister src) {
3849 XMMRegister idst = XMMRegister::from_code(dst.code());
3857 void Assembler::vss(byte op, XMMRegister dst, XMMRegister src1,
3861 emit_vex_prefix(dst, src1, src2, kLIG, kF3, k0F, kWIG);
3863 emit_sse_operand(dst, src2);
3866 void Assembler::vss(byte op, XMMRegister dst, XMMRegister src1, Operand src2) {
3869 emit_vex_prefix(dst, src1, src2, kLIG, kF3, k0F, kWIG);
3871 emit_sse_operand(dst, src2);
3906 void Assembler::tzcntq(Register dst, Register src) {
3910 emit_rex_64(dst, src);
3913 emit_modrm(dst, src);
3916 void Assembler::tzcntq(Register dst, Operand src) {
3920 emit_rex_64(dst, src);
3923 emit_operand(dst, src);
3926 void Assembler::tzcntl(Register dst, Register src) {
3930 emit_optional_rex_32(dst, src);
3933 emit_modrm(dst, src);
3936 void Assembler::tzcntl(Register dst, Operand src) {
3940 emit_optional_rex_32(dst, src);
3943 emit_operand(dst, src);
3946 void Assembler::lzcntq(Register dst, Register src) {
3950 emit_rex_64(dst, src);
3953 emit_modrm(dst, src);
3956 void Assembler::lzcntq(Register dst, Operand src) {
3960 emit_rex_64(dst, src);
3963 emit_operand(dst, src);
3966 void Assembler::lzcntl(Register dst, Register src) {
3970 emit_optional_rex_32(dst, src);
3973 emit_modrm(dst, src);
3976 void Assembler::lzcntl(Register dst, Operand src) {
3980 emit_optional_rex_32(dst, src);
3983 emit_operand(dst, src);
3986 void Assembler::popcntq(Register dst, Register src) {
3990 emit_rex_64(dst, src);
3993 emit_modrm(dst, src);
3996 void Assembler::popcntq(Register dst, Operand src) {
4000 emit_rex_64(dst, src);
4003 emit_operand(dst, src);
4006 void Assembler::popcntl(Register dst, Register src) {
4010 emit_optional_rex_32(dst, src);
4013 emit_modrm(dst, src);
4016 void Assembler::popcntl(Register dst, Operand src) {
4020 emit_optional_rex_32(dst, src);
4023 emit_operand(dst, src);
4062 void Assembler::rorxq(Register dst, Register src, byte imm8) {
4067 emit_vex_prefix(dst, vreg, src, kLZ, kF2, k0F3A, kW1);
4069 emit_modrm(dst, src);
4073 void Assembler::rorxq(Register dst, Operand src, byte imm8) {
4078 emit_vex_prefix(dst, vreg, src, kLZ, kF2, k0F3A, kW1);
4080 emit_operand(dst, src);
4084 void Assembler::rorxl(Register dst, Register src, byte imm8) {
4089 emit_vex_prefix(dst, vreg, src, kLZ, kF2, k0F3A, kW0);
4091 emit_modrm(dst, src);
4095 void Assembler::rorxl(Register dst, Operand src, byte imm8) {
4100 emit_vex_prefix(dst, vreg, src, kLZ, kF2, k0F3A, kW0);
4102 emit_operand(dst, src);
4111 void Assembler::movups(XMMRegister dst, XMMRegister src) {
4115 emit_optional_rex_32(src, dst);
4118 emit_sse_operand(src, dst);
4120 emit_optional_rex_32(dst, src);
4123 emit_sse_operand(dst, src);
4127 void Assembler::movups(XMMRegister dst, Operand src) {
4129 emit_optional_rex_32(dst, src);
4132 emit_sse_operand(dst, src);
4135 void Assembler::movups(Operand dst, XMMRegister src) {
4137 emit_optional_rex_32(src, dst);
4140 emit_sse_operand(src, dst);
4143 void Assembler::sse_instr(XMMRegister dst, XMMRegister src, byte escape,
4146 emit_optional_rex_32(dst, src);
4149 emit_sse_operand(dst, src);
4152 void Assembler::sse_instr(XMMRegister dst, Operand src, byte escape,
4155 emit_optional_rex_32(dst, src);
4158 emit_sse_operand(dst, src);
4161 void Assembler::sse2_instr(XMMRegister dst, XMMRegister src, byte prefix,
4165 emit_optional_rex_32(dst, src);
4168 emit_sse_operand(dst, src);
4171 void Assembler::sse2_instr(XMMRegister dst, Operand src, byte prefix,
4175 emit_optional_rex_32(dst, src);
4178 emit_sse_operand(dst, src);
4181 void Assembler::ssse3_instr(XMMRegister dst, XMMRegister src, byte prefix,
4186 emit_optional_rex_32(dst, src);
4190 emit_sse_operand(dst, src);
4193 void Assembler::ssse3_instr(XMMRegister dst, Operand src, byte prefix,
4198 emit_optional_rex_32(dst, src);
4202 emit_sse_operand(dst, src);
4205 void Assembler::sse4_instr(XMMRegister dst, Register src, byte prefix,
4212 emit_optional_rex_32(dst, src);
4216 emit_sse_operand(dst, src);
4220 void Assembler::sse4_instr(XMMRegister dst, XMMRegister src, byte prefix,
4225 emit_optional_rex_32(dst, src);
4229 emit_sse_operand(dst, src);
4232 void Assembler::sse4_instr(XMMRegister dst, Operand src, byte prefix,
4237 emit_optional_rex_32(dst, src);
4241 emit_sse_operand(dst, src);
4244 void Assembler::sse4_instr(Register dst, XMMRegister src, byte prefix,
4251 emit_optional_rex_32(src, dst);
4255 emit_sse_operand(src, dst);
4259 void Assembler::sse4_instr(Operand dst, XMMRegister src, byte prefix,
4266 emit_optional_rex_32(src, dst);
4270 emit_sse_operand(src, dst);
4274 void Assembler::sse4_2_instr(XMMRegister dst, XMMRegister src, byte prefix,
4279 emit_optional_rex_32(dst, src);
4283 emit_sse_operand(dst, src);
4286 void Assembler::sse4_2_instr(XMMRegister dst, Operand src, byte prefix,
4291 emit_optional_rex_32(dst, src);
4295 emit_sse_operand(dst, src);
4298 void Assembler::lddqu(XMMRegister dst, Operand src) {
4302 emit_optional_rex_32(dst, src);
4305 emit_sse_operand(dst, src);
4308 void Assembler::movddup(XMMRegister dst, XMMRegister src) {
4312 emit_optional_rex_32(dst, src);
4315 emit_sse_operand(dst, src);
4318 void Assembler::movddup(XMMRegister dst, Operand src) {
4322 emit_optional_rex_32(dst, src);
4325 emit_sse_operand(dst, src);
4328 void Assembler::movshdup(XMMRegister dst, XMMRegister src) {
4332 emit_optional_rex_32(dst, src);
4335 emit_sse_operand(dst, src);
4338 void Assembler::psrldq(XMMRegister dst, uint8_t shift) {
4341 emit_optional_rex_32(dst);
4344 emit_sse_operand(dst);
4348 void Assembler::pshufhw(XMMRegister dst, XMMRegister src, uint8_t shuffle) {
4351 emit_optional_rex_32(dst, src);
4354 emit_sse_operand(dst, src);
4358 void Assembler::pshufhw(XMMRegister dst, Operand src, uint8_t shuffle) {
4361 emit_optional_rex_32(dst, src);
4364 emit_sse_operand(dst, src);
4368 void Assembler::pshuflw(XMMRegister dst, XMMRegister src, uint8_t shuffle) {
4371 emit_optional_rex_32(dst, src);
4374 emit_sse_operand(dst, src);
4378 void Assembler::pshuflw(XMMRegister dst, Operand src, uint8_t shuffle) {
4381 emit_optional_rex_32(dst, src);
4384 emit_sse_operand(dst, src);
4388 void Assembler::pshufd(XMMRegister dst, XMMRegister src, uint8_t shuffle) {
4391 emit_optional_rex_32(dst, src);
4394 emit_sse_operand(dst, src);
4398 void Assembler::pshufd(XMMRegister dst, Operand src, uint8_t shuffle) {
4401 emit_optional_rex_32(dst, src);
4404 emit_sse_operand(dst, src);
4417 void Assembler::emit_sse_operand(XMMRegister dst, XMMRegister src) {
4418 emit(0xC0 | (dst.low_bits() << 3) | src.low_bits());
4421 void Assembler::emit_sse_operand(XMMRegister dst, Register src) {
4422 emit(0xC0 | (dst.low_bits() << 3) | src.low_bits());
4425 void Assembler::emit_sse_operand(Register dst, XMMRegister src) {
4426 emit(0xC0 | (dst.low_bits() << 3) | src.low_bits());
4429 void Assembler::emit_sse_operand(XMMRegister dst) {
4430 emit(0xD8 | dst.low_bits());