hotspot/src/cpu/x86/vm/assembler_x86.cpp
changeset 35540 e001ad24dcdb
parent 35154 a9b3c1984a01
child 36066 60ce66ce3c76
equal deleted inserted replaced
35539:9a687b686976 35540:e001ad24dcdb
  1889   int encode = prefix_and_encode(src->encoding());
  1889   int encode = prefix_and_encode(src->encoding());
  1890   emit_int8((unsigned char)0xF7);
  1890   emit_int8((unsigned char)0xF7);
  1891   emit_int8((unsigned char)(0xF0 | encode));
  1891   emit_int8((unsigned char)(0xF0 | encode));
  1892 }
  1892 }
  1893 
  1893 
       
  1894 void Assembler::imull(Register src) {
       
  1895   int encode = prefix_and_encode(src->encoding());
       
  1896   emit_int8((unsigned char)0xF7);
       
  1897   emit_int8((unsigned char)(0xE8 | encode));
       
  1898 }
       
  1899 
  1894 void Assembler::imull(Register dst, Register src) {
  1900 void Assembler::imull(Register dst, Register src) {
  1895   int encode = prefix_and_encode(dst->encoding(), src->encoding());
  1901   int encode = prefix_and_encode(dst->encoding(), src->encoding());
  1896   emit_int8(0x0F);
  1902   emit_int8(0x0F);
  1897   emit_int8((unsigned char)0xAF);
  1903   emit_int8((unsigned char)0xAF);
  1898   emit_int8((unsigned char)(0xC0 | encode));
  1904   emit_int8((unsigned char)(0xC0 | encode));
  4110   NOT_LP64(assert(dst->has_byte_register(), "must have byte register"));
  4116   NOT_LP64(assert(dst->has_byte_register(), "must have byte register"));
  4111   (void) prefix_and_encode(dst->encoding(), true);
  4117   (void) prefix_and_encode(dst->encoding(), true);
  4112   emit_arith_b(0xF6, 0xC0, dst, imm8);
  4118   emit_arith_b(0xF6, 0xC0, dst, imm8);
  4113 }
  4119 }
  4114 
  4120 
       
  4121 void Assembler::testb(Address dst, int imm8) {
       
  4122   InstructionMark im(this);
       
  4123   prefix(dst);
       
  4124   emit_int8((unsigned char)0xF6);
       
  4125   emit_operand(rax, dst, 1);
       
  4126   emit_int8(imm8);
       
  4127 }
       
  4128 
  4115 void Assembler::testl(Register dst, int32_t imm32) {
  4129 void Assembler::testl(Register dst, int32_t imm32) {
  4116   // not using emit_arith because test
  4130   // not using emit_arith because test
  4117   // doesn't support sign-extension of
  4131   // doesn't support sign-extension of
  4118   // 8bit operands
  4132   // 8bit operands
  4119   int encode = dst->encoding();
  4133   int encode = dst->encoding();