1002 #ifdef _LP64
1003 void bsfq(Register dst, Register src);
1004 void bsrq(Register dst, Register src);
1005 #endif
1006
1007 void bswapl(Register reg);
1008
1009 void bswapq(Register reg);
1010
1011 void call(Label& L, relocInfo::relocType rtype);
1012 void call(Register reg); // push pc; pc <- reg
1013 void call(Address adr); // push pc; pc <- adr
1014
1015 void cdql();
1016
1017 void cdqq();
1018
1019 void cld();
1020
1021 void clflush(Address adr);
1022
1023 void cmovl(Condition cc, Register dst, Register src);
1024 void cmovl(Condition cc, Register dst, Address src);
1025
1026 void cmovq(Condition cc, Register dst, Register src);
1027 void cmovq(Condition cc, Register dst, Address src);
1028
1029
1030 void cmpb(Address dst, int imm8);
1031
1032 void cmpl(Address dst, int32_t imm32);
1033
1034 void cmpl(Register dst, int32_t imm32);
1035 void cmpl(Register dst, Register src);
1036 void cmpl(Register dst, Address src);
1037
1038 void cmpq(Address dst, int32_t imm32);
1039 void cmpq(Address dst, Register src);
1040
1041 void cmpq(Register dst, int32_t imm32);
1363 // with locked ops against the cache line. Our choice of offset
1364 // is bounded by x86 operand encoding, which should stay within
1365 // [-128; +127] to have the 8-byte displacement encoding.
1366 //
1367 // Any change to this code may need to revisit other places in
1368 // the code where this idiom is used, in particular the
1369 // orderAccess code.
1370
1371 int offset = -VM_Version::L1_line_size();
1372 if (offset < -128) {
1373 offset = -128;
1374 }
1375
1376 lock();
1377 addl(Address(rsp, offset), 0);// Assert the lock# signal here
1378 }
1379 }
1380 }
1381
1382 void mfence();
1383
1384 // Moves
1385
1386 void mov64(Register dst, int64_t imm64);
1387
1388 void movb(Address dst, Register src);
1389 void movb(Address dst, int imm8);
1390 void movb(Register dst, Address src);
1391
1392 void movddup(XMMRegister dst, XMMRegister src);
1393
1394 void kmovbl(KRegister dst, Register src);
1395 void kmovbl(Register dst, KRegister src);
1396 void kmovwl(KRegister dst, Register src);
1397 void kmovwl(KRegister dst, Address src);
1398 void kmovwl(Register dst, KRegister src);
1399 void kmovdl(KRegister dst, Register src);
1400 void kmovdl(Register dst, KRegister src);
1401 void kmovql(KRegister dst, KRegister src);
1402 void kmovql(Address dst, KRegister src);
|
1002 #ifdef _LP64
1003 void bsfq(Register dst, Register src);
1004 void bsrq(Register dst, Register src);
1005 #endif
1006
1007 void bswapl(Register reg);
1008
1009 void bswapq(Register reg);
1010
1011 void call(Label& L, relocInfo::relocType rtype);
1012 void call(Register reg); // push pc; pc <- reg
1013 void call(Address adr); // push pc; pc <- adr
1014
1015 void cdql();
1016
1017 void cdqq();
1018
1019 void cld();
1020
1021 void clflush(Address adr);
1022 void clflushopt(Address adr);
1023 void clwb(Address adr);
1024
1025 void cmovl(Condition cc, Register dst, Register src);
1026 void cmovl(Condition cc, Register dst, Address src);
1027
1028 void cmovq(Condition cc, Register dst, Register src);
1029 void cmovq(Condition cc, Register dst, Address src);
1030
1031
1032 void cmpb(Address dst, int imm8);
1033
1034 void cmpl(Address dst, int32_t imm32);
1035
1036 void cmpl(Register dst, int32_t imm32);
1037 void cmpl(Register dst, Register src);
1038 void cmpl(Register dst, Address src);
1039
1040 void cmpq(Address dst, int32_t imm32);
1041 void cmpq(Address dst, Register src);
1042
1043 void cmpq(Register dst, int32_t imm32);
1365 // with locked ops against the cache line. Our choice of offset
1366 // is bounded by x86 operand encoding, which should stay within
1367 // [-128; +127] to have the 8-byte displacement encoding.
1368 //
1369 // Any change to this code may need to revisit other places in
1370 // the code where this idiom is used, in particular the
1371 // orderAccess code.
1372
1373 int offset = -VM_Version::L1_line_size();
1374 if (offset < -128) {
1375 offset = -128;
1376 }
1377
1378 lock();
1379 addl(Address(rsp, offset), 0);// Assert the lock# signal here
1380 }
1381 }
1382 }
1383
1384 void mfence();
1385 void sfence();
1386
1387 // Moves
1388
1389 void mov64(Register dst, int64_t imm64);
1390
1391 void movb(Address dst, Register src);
1392 void movb(Address dst, int imm8);
1393 void movb(Register dst, Address src);
1394
1395 void movddup(XMMRegister dst, XMMRegister src);
1396
1397 void kmovbl(KRegister dst, Register src);
1398 void kmovbl(Register dst, KRegister src);
1399 void kmovwl(KRegister dst, Register src);
1400 void kmovwl(KRegister dst, Address src);
1401 void kmovwl(Register dst, KRegister src);
1402 void kmovdl(KRegister dst, Register src);
1403 void kmovdl(Register dst, KRegister src);
1404 void kmovql(KRegister dst, KRegister src);
1405 void kmovql(Address dst, KRegister src);
|