< prev index next >

src/hotspot/cpu/x86/assembler_x86.hpp

Print this page




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);


< prev index next >