< prev index next >

src/hotspot/cpu/x86/assembler_x86.cpp

Print this page




8929   // not using emit_arith because test
8930   // doesn't support sign-extension of
8931   // 8bit operands
8932   int encode = dst->encoding();
8933   if (encode == 0) {
8934     prefix(REX_W);
8935     emit_int8((unsigned char)0xA9);
8936   } else {
8937     encode = prefixq_and_encode(encode);
8938     emit_int8((unsigned char)0xF7);
8939     emit_int8((unsigned char)(0xC0 | encode));
8940   }
8941   emit_int32(imm32);
8942 }
8943 
8944 void Assembler::testq(Register dst, Register src) {
8945   (void) prefixq_and_encode(dst->encoding(), src->encoding());
8946   emit_arith(0x85, 0xC0, dst, src);
8947 }
8948 
8949 void Assembler::testq(Register dst, Address  src) {
8950   InstructionMark im(this);
8951   prefixq(src, dst);
8952   emit_int8((unsigned char)0x85);
8953   emit_operand(dst, src);
8954 }
8955 
8956 void Assembler::xaddq(Address dst, Register src) {
8957   InstructionMark im(this);
8958   prefixq(dst, src);
8959   emit_int8(0x0F);
8960   emit_int8((unsigned char)0xC1);
8961   emit_operand(src, dst);
8962 }
8963 
8964 void Assembler::xchgq(Register dst, Address src) {
8965   InstructionMark im(this);
8966   prefixq(src, dst);
8967   emit_int8((unsigned char)0x87);
8968   emit_operand(dst, src);
8969 }


8929   // not using emit_arith because test
8930   // doesn't support sign-extension of
8931   // 8bit operands
8932   int encode = dst->encoding();
8933   if (encode == 0) {
8934     prefix(REX_W);
8935     emit_int8((unsigned char)0xA9);
8936   } else {
8937     encode = prefixq_and_encode(encode);
8938     emit_int8((unsigned char)0xF7);
8939     emit_int8((unsigned char)(0xC0 | encode));
8940   }
8941   emit_int32(imm32);
8942 }
8943 
8944 void Assembler::testq(Register dst, Register src) {
8945   (void) prefixq_and_encode(dst->encoding(), src->encoding());
8946   emit_arith(0x85, 0xC0, dst, src);
8947 }
8948 
8949 void Assembler::testq(Register dst, Address src) {
8950   InstructionMark im(this);
8951   prefixq(src, dst);
8952   emit_int8((unsigned char)0x85);
8953   emit_operand(dst, src);
8954 }
8955 
8956 void Assembler::xaddq(Address dst, Register src) {
8957   InstructionMark im(this);
8958   prefixq(dst, src);
8959   emit_int8(0x0F);
8960   emit_int8((unsigned char)0xC1);
8961   emit_operand(src, dst);
8962 }
8963 
8964 void Assembler::xchgq(Register dst, Address src) {
8965   InstructionMark im(this);
8966   prefixq(src, dst);
8967   emit_int8((unsigned char)0x87);
8968   emit_operand(dst, src);
8969 }
< prev index next >