1487 if (offset < -128) { 1488 offset = -128; 1489 } 1490 1491 lock(); 1492 addl(Address(rsp, offset), 0);// Assert the lock# signal here 1493 } 1494 } 1495 } 1496 1497 void mfence(); 1498 1499 // Moves 1500 1501 void mov64(Register dst, int64_t imm64); 1502 1503 void movb(Address dst, Register src); 1504 void movb(Address dst, int imm8); 1505 void movb(Register dst, Address src); 1506 1507 void kmovql(KRegister dst, KRegister src); 1508 void kmovql(KRegister dst, Register src); 1509 void kmovdl(KRegister dst, Register src); 1510 void kmovwl(KRegister dst, Register src); 1511 void kmovql(Address dst, KRegister src); 1512 void kmovql(KRegister dst, Address src); 1513 1514 void movdl(XMMRegister dst, Register src); 1515 void movdl(Register dst, XMMRegister src); 1516 void movdl(XMMRegister dst, Address src); 1517 void movdl(Address dst, XMMRegister src); 1518 1519 // Move Double Quadword 1520 void movdq(XMMRegister dst, Register src); 1521 void movdq(Register dst, XMMRegister src); 1522 1523 // Move Aligned Double Quadword 1524 void movdqa(XMMRegister dst, XMMRegister src); 1525 void movdqa(XMMRegister dst, Address src); 1526 1750 void punpcklbw(XMMRegister dst, Address src); 1751 1752 // Interleave Low Doublewords 1753 void punpckldq(XMMRegister dst, XMMRegister src); 1754 void punpckldq(XMMRegister dst, Address src); 1755 1756 // Interleave Low Quadwords 1757 void punpcklqdq(XMMRegister dst, XMMRegister src); 1758 1759 #ifndef _LP64 // no 32bit push/pop on amd64 1760 void pushl(Address src); 1761 #endif 1762 1763 void pushq(Address src); 1764 1765 void rcll(Register dst, int imm8); 1766 1767 void rclq(Register dst, int imm8); 1768 1769 void rcrq(Register dst, int imm8); 1770 1771 void rdtsc(); 1772 1773 void ret(int imm16); 1774 1775 #ifdef _LP64 1776 void rorq(Register dst, int imm8); 1777 void rorxq(Register dst, Register src, int imm8); 1778 #endif 1779 1780 void sahf(); 1781 1782 void sarl(Register dst, int imm8); 1783 void sarl(Register dst); 1784 1785 void sarq(Register dst, int imm8); 1786 void sarq(Register dst); 1787 1788 void sbbl(Address dst, int32_t imm32); 1789 void sbbl(Register dst, int32_t imm32); | 1487 if (offset < -128) { 1488 offset = -128; 1489 } 1490 1491 lock(); 1492 addl(Address(rsp, offset), 0);// Assert the lock# signal here 1493 } 1494 } 1495 } 1496 1497 void mfence(); 1498 1499 // Moves 1500 1501 void mov64(Register dst, int64_t imm64); 1502 1503 void movb(Address dst, Register src); 1504 void movb(Address dst, int imm8); 1505 void movb(Register dst, Address src); 1506 1507 void movddup(XMMRegister dst, XMMRegister src); 1508 1509 void kmovql(KRegister dst, KRegister src); 1510 void kmovql(KRegister dst, Register src); 1511 void kmovdl(KRegister dst, Register src); 1512 void kmovwl(KRegister dst, Register src); 1513 void kmovql(Address dst, KRegister src); 1514 void kmovql(KRegister dst, Address src); 1515 1516 void movdl(XMMRegister dst, Register src); 1517 void movdl(Register dst, XMMRegister src); 1518 void movdl(XMMRegister dst, Address src); 1519 void movdl(Address dst, XMMRegister src); 1520 1521 // Move Double Quadword 1522 void movdq(XMMRegister dst, Register src); 1523 void movdq(Register dst, XMMRegister src); 1524 1525 // Move Aligned Double Quadword 1526 void movdqa(XMMRegister dst, XMMRegister src); 1527 void movdqa(XMMRegister dst, Address src); 1528 1752 void punpcklbw(XMMRegister dst, Address src); 1753 1754 // Interleave Low Doublewords 1755 void punpckldq(XMMRegister dst, XMMRegister src); 1756 void punpckldq(XMMRegister dst, Address src); 1757 1758 // Interleave Low Quadwords 1759 void punpcklqdq(XMMRegister dst, XMMRegister src); 1760 1761 #ifndef _LP64 // no 32bit push/pop on amd64 1762 void pushl(Address src); 1763 #endif 1764 1765 void pushq(Address src); 1766 1767 void rcll(Register dst, int imm8); 1768 1769 void rclq(Register dst, int imm8); 1770 1771 void rcrq(Register dst, int imm8); 1772 1773 void rcpps(XMMRegister dst, XMMRegister src); 1774 1775 void rcpss(XMMRegister dst, XMMRegister src); 1776 1777 void rdtsc(); 1778 1779 void ret(int imm16); 1780 1781 #ifdef _LP64 1782 void rorq(Register dst, int imm8); 1783 void rorxq(Register dst, Register src, int imm8); 1784 #endif 1785 1786 void sahf(); 1787 1788 void sarl(Register dst, int imm8); 1789 void sarl(Register dst); 1790 1791 void sarq(Register dst, int imm8); 1792 void sarq(Register dst); 1793 1794 void sbbl(Address dst, int32_t imm32); 1795 void sbbl(Register dst, int32_t imm32); |