src/cpu/x86/vm/assembler_x86.hpp

changeset 7152
166d744df0de
parent 7025
b1bc1af04c6e
child 7535
7ae4e26cb1e0
child 7854
e8260b6328fb
equal deleted inserted replaced
7151:bddcb33dadf4 7152:166d744df0de
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);

mercurial