Mercurial > hg > truffle
comparison src/cpu/x86/vm/assembler_x86.hpp @ 20804:7848fc12602b
Merge with jdk8u40-b25
author | Gilles Duboscq <gilles.m.duboscq@oracle.com> |
---|---|
date | Tue, 07 Apr 2015 14:58:49 +0200 |
parents | 52b4284cb496 166d744df0de |
children |
comparison
equal
deleted
inserted
replaced
20184:84105dcdb05b | 20804:7848fc12602b |
---|---|
890 void addq(Address dst, Register src); | 890 void addq(Address dst, Register src); |
891 void addq(Register dst, int32_t imm32); | 891 void addq(Register dst, int32_t imm32); |
892 void addq(Register dst, Address src); | 892 void addq(Register dst, Address src); |
893 void addq(Register dst, Register src); | 893 void addq(Register dst, Register src); |
894 | 894 |
895 #ifdef _LP64 | |
896 //Add Unsigned Integers with Carry Flag | |
897 void adcxq(Register dst, Register src); | |
898 | |
899 //Add Unsigned Integers with Overflow Flag | |
900 void adoxq(Register dst, Register src); | |
901 #endif | |
902 | |
895 void addr_nop_4(); | 903 void addr_nop_4(); |
896 void addr_nop_5(); | 904 void addr_nop_5(); |
897 void addr_nop_7(); | 905 void addr_nop_7(); |
898 void addr_nop_8(); | 906 void addr_nop_8(); |
899 | 907 |
1206 void hlt(); | 1214 void hlt(); |
1207 | 1215 |
1208 void idivl(Register src); | 1216 void idivl(Register src); |
1209 void divl(Register src); // Unsigned division | 1217 void divl(Register src); // Unsigned division |
1210 | 1218 |
1219 #ifdef _LP64 | |
1211 void idivq(Register src); | 1220 void idivq(Register src); |
1221 #endif | |
1212 | 1222 |
1213 void imull(Register dst, Register src); | 1223 void imull(Register dst, Register src); |
1214 void imull(Register dst, Register src, int value); | 1224 void imull(Register dst, Register src, int value); |
1215 void imull(Register dst, Address src); | 1225 void imull(Register dst, Address src); |
1216 | 1226 |
1227 #ifdef _LP64 | |
1217 void imulq(Register dst, Register src); | 1228 void imulq(Register dst, Register src); |
1218 void imulq(Register dst, Register src, int value); | 1229 void imulq(Register dst, Register src, int value); |
1219 #ifdef _LP64 | |
1220 void imulq(Register dst, Address src); | 1230 void imulq(Register dst, Address src); |
1221 #endif | 1231 #endif |
1222 | |
1223 | 1232 |
1224 // jcc is the generic conditional branch generator to run- | 1233 // jcc is the generic conditional branch generator to run- |
1225 // time routines, jcc is used for branches to labels. jcc | 1234 // time routines, jcc is used for branches to labels. jcc |
1226 // takes a branch opcode (cc) and a label (L) and generates | 1235 // takes a branch opcode (cc) and a label (L) and generates |
1227 // either a backward branch or a forward branch and links it | 1236 // either a backward branch or a forward branch and links it |
1410 #ifdef _LP64 | 1419 #ifdef _LP64 |
1411 void movzwq(Register dst, Address src); | 1420 void movzwq(Register dst, Address src); |
1412 void movzwq(Register dst, Register src); | 1421 void movzwq(Register dst, Register src); |
1413 #endif | 1422 #endif |
1414 | 1423 |
1424 // Unsigned multiply with RAX destination register | |
1415 void mull(Address src); | 1425 void mull(Address src); |
1416 void mull(Register src); | 1426 void mull(Register src); |
1427 | |
1428 #ifdef _LP64 | |
1429 void mulq(Address src); | |
1430 void mulq(Register src); | |
1431 void mulxq(Register dst1, Register dst2, Register src); | |
1432 #endif | |
1417 | 1433 |
1418 // Multiply Scalar Double-Precision Floating-Point Values | 1434 // Multiply Scalar Double-Precision Floating-Point Values |
1419 void mulsd(XMMRegister dst, Address src); | 1435 void mulsd(XMMRegister dst, Address src); |
1420 void mulsd(XMMRegister dst, XMMRegister src); | 1436 void mulsd(XMMRegister dst, XMMRegister src); |
1421 | 1437 |
1542 void rclq(Register dst, int imm8); | 1558 void rclq(Register dst, int imm8); |
1543 | 1559 |
1544 void rdtsc(); | 1560 void rdtsc(); |
1545 | 1561 |
1546 void ret(int imm16); | 1562 void ret(int imm16); |
1563 | |
1564 #ifdef _LP64 | |
1565 void rorq(Register dst, int imm8); | |
1566 void rorxq(Register dst, Register src, int imm8); | |
1567 #endif | |
1547 | 1568 |
1548 void sahf(); | 1569 void sahf(); |
1549 | 1570 |
1550 void sarl(Register dst, int imm8); | 1571 void sarl(Register dst, int imm8); |
1551 void sarl(Register dst); | 1572 void sarl(Register dst); |
1839 | 1860 |
1840 // duplicate 4-bytes integer data from src into 8 locations in dest | 1861 // duplicate 4-bytes integer data from src into 8 locations in dest |
1841 void vpbroadcastd(XMMRegister dst, XMMRegister src); | 1862 void vpbroadcastd(XMMRegister dst, XMMRegister src); |
1842 | 1863 |
1843 // Carry-Less Multiplication Quadword | 1864 // Carry-Less Multiplication Quadword |
1865 void pclmulqdq(XMMRegister dst, XMMRegister src, int mask); | |
1844 void vpclmulqdq(XMMRegister dst, XMMRegister nds, XMMRegister src, int mask); | 1866 void vpclmulqdq(XMMRegister dst, XMMRegister nds, XMMRegister src, int mask); |
1845 | 1867 |
1846 // AVX instruction which is used to clear upper 128 bits of YMM registers and | 1868 // AVX instruction which is used to clear upper 128 bits of YMM registers and |
1847 // to avoid transaction penalty between AVX and SSE states. There is no | 1869 // to avoid transaction penalty between AVX and SSE states. There is no |
1848 // penalty if legacy SSE instructions are encoded using VEX prefix because | 1870 // penalty if legacy SSE instructions are encoded using VEX prefix because |