886 void addq(Address dst, Register src); |
886 void addq(Address dst, Register src); |
887 void addq(Register dst, int32_t imm32); |
887 void addq(Register dst, int32_t imm32); |
888 void addq(Register dst, Address src); |
888 void addq(Register dst, Address src); |
889 void addq(Register dst, Register src); |
889 void addq(Register dst, Register src); |
890 |
890 |
|
891 #ifdef _LP64 |
|
892 //Add Unsigned Integers with Carry Flag |
|
893 void adcxq(Register dst, Register src); |
|
894 |
|
895 //Add Unsigned Integers with Overflow Flag |
|
896 void adoxq(Register dst, Register src); |
|
897 #endif |
|
898 |
891 void addr_nop_4(); |
899 void addr_nop_4(); |
892 void addr_nop_5(); |
900 void addr_nop_5(); |
893 void addr_nop_7(); |
901 void addr_nop_7(); |
894 void addr_nop_8(); |
902 void addr_nop_8(); |
895 |
903 |
1202 void hlt(); |
1210 void hlt(); |
1203 |
1211 |
1204 void idivl(Register src); |
1212 void idivl(Register src); |
1205 void divl(Register src); // Unsigned division |
1213 void divl(Register src); // Unsigned division |
1206 |
1214 |
|
1215 #ifdef _LP64 |
1207 void idivq(Register src); |
1216 void idivq(Register src); |
|
1217 #endif |
1208 |
1218 |
1209 void imull(Register dst, Register src); |
1219 void imull(Register dst, Register src); |
1210 void imull(Register dst, Register src, int value); |
1220 void imull(Register dst, Register src, int value); |
1211 void imull(Register dst, Address src); |
1221 void imull(Register dst, Address src); |
1212 |
1222 |
|
1223 #ifdef _LP64 |
1213 void imulq(Register dst, Register src); |
1224 void imulq(Register dst, Register src); |
1214 void imulq(Register dst, Register src, int value); |
1225 void imulq(Register dst, Register src, int value); |
1215 #ifdef _LP64 |
|
1216 void imulq(Register dst, Address src); |
1226 void imulq(Register dst, Address src); |
1217 #endif |
1227 #endif |
1218 |
|
1219 |
1228 |
1220 // jcc is the generic conditional branch generator to run- |
1229 // jcc is the generic conditional branch generator to run- |
1221 // time routines, jcc is used for branches to labels. jcc |
1230 // time routines, jcc is used for branches to labels. jcc |
1222 // takes a branch opcode (cc) and a label (L) and generates |
1231 // takes a branch opcode (cc) and a label (L) and generates |
1223 // either a backward branch or a forward branch and links it |
1232 // either a backward branch or a forward branch and links it |
1406 #ifdef _LP64 |
1415 #ifdef _LP64 |
1407 void movzwq(Register dst, Address src); |
1416 void movzwq(Register dst, Address src); |
1408 void movzwq(Register dst, Register src); |
1417 void movzwq(Register dst, Register src); |
1409 #endif |
1418 #endif |
1410 |
1419 |
|
1420 // Unsigned multiply with RAX destination register |
1411 void mull(Address src); |
1421 void mull(Address src); |
1412 void mull(Register src); |
1422 void mull(Register src); |
|
1423 |
|
1424 #ifdef _LP64 |
|
1425 void mulq(Address src); |
|
1426 void mulq(Register src); |
|
1427 void mulxq(Register dst1, Register dst2, Register src); |
|
1428 #endif |
1413 |
1429 |
1414 // Multiply Scalar Double-Precision Floating-Point Values |
1430 // Multiply Scalar Double-Precision Floating-Point Values |
1415 void mulsd(XMMRegister dst, Address src); |
1431 void mulsd(XMMRegister dst, Address src); |
1416 void mulsd(XMMRegister dst, XMMRegister src); |
1432 void mulsd(XMMRegister dst, XMMRegister src); |
1417 |
1433 |
1538 void rclq(Register dst, int imm8); |
1554 void rclq(Register dst, int imm8); |
1539 |
1555 |
1540 void rdtsc(); |
1556 void rdtsc(); |
1541 |
1557 |
1542 void ret(int imm16); |
1558 void ret(int imm16); |
|
1559 |
|
1560 #ifdef _LP64 |
|
1561 void rorq(Register dst, int imm8); |
|
1562 void rorxq(Register dst, Register src, int imm8); |
|
1563 #endif |
1543 |
1564 |
1544 void sahf(); |
1565 void sahf(); |
1545 |
1566 |
1546 void sarl(Register dst, int imm8); |
1567 void sarl(Register dst, int imm8); |
1547 void sarl(Register dst); |
1568 void sarl(Register dst); |