< prev index next >

src/hotspot/cpu/x86/assembler_x86.cpp

Print this page




3321 
3322 void Assembler::orl(Register dst, Address src) {
3323   InstructionMark im(this);
3324   prefix(src, dst);
3325   emit_int8(0x0B);
3326   emit_operand(dst, src);
3327 }
3328 
3329 void Assembler::orl(Register dst, Register src) {
3330   (void) prefix_and_encode(dst->encoding(), src->encoding());
3331   emit_arith(0x0B, 0xC0, dst, src);
3332 }
3333 
3334 void Assembler::orl(Address dst, Register src) {
3335   InstructionMark im(this);
3336   prefix(dst, src);
3337   emit_int8(0x09);
3338   emit_operand(src, dst);
3339 }
3340 








3341 void Assembler::packuswb(XMMRegister dst, Address src) {
3342   NOT_LP64(assert(VM_Version::supports_sse2(), ""));
3343   assert((UseAVX > 0), "SSE mode requires address alignment 16 bytes");
3344   InstructionMark im(this);
3345   InstructionAttr attributes(AVX_128bit, /* rex_w */ false, /* legacy_mode */ _legacy_mode_bw, /* no_mask_reg */ true, /* uses_vl */ true);
3346   attributes.set_address_attributes(/* tuple_type */ EVEX_FV, /* input_size_in_bits */ EVEX_32bit);
3347   simd_prefix(dst, dst, src, VEX_SIMD_66, VEX_OPCODE_0F, &attributes);
3348   emit_int8(0x67);
3349   emit_operand(dst, src);
3350 }
3351 
3352 void Assembler::packuswb(XMMRegister dst, XMMRegister src) {
3353   NOT_LP64(assert(VM_Version::supports_sse2(), ""));
3354   InstructionAttr attributes(AVX_128bit, /* rex_w */ false, /* legacy_mode */ _legacy_mode_bw, /* no_mask_reg */ true, /* uses_vl */ true);
3355   int encode = simd_prefix_and_encode(dst, dst, src, VEX_SIMD_66, VEX_OPCODE_0F, &attributes);
3356   emit_int8(0x67);
3357   emit_int8((unsigned char)(0xC0 | encode));
3358 }
3359 
3360 void Assembler::vpackuswb(XMMRegister dst, XMMRegister nds, XMMRegister src, int vector_len) {




3321 
3322 void Assembler::orl(Register dst, Address src) {
3323   InstructionMark im(this);
3324   prefix(src, dst);
3325   emit_int8(0x0B);
3326   emit_operand(dst, src);
3327 }
3328 
3329 void Assembler::orl(Register dst, Register src) {
3330   (void) prefix_and_encode(dst->encoding(), src->encoding());
3331   emit_arith(0x0B, 0xC0, dst, src);
3332 }
3333 
3334 void Assembler::orl(Address dst, Register src) {
3335   InstructionMark im(this);
3336   prefix(dst, src);
3337   emit_int8(0x09);
3338   emit_operand(src, dst);
3339 }
3340 
3341 void Assembler::orb(Address dst, int imm8) {
3342   InstructionMark im(this);
3343   prefix(dst);
3344   emit_int8((unsigned char)0x80);
3345   emit_operand(rcx, dst, 1);
3346   emit_int8(imm8);
3347 }
3348 
3349 void Assembler::packuswb(XMMRegister dst, Address src) {
3350   NOT_LP64(assert(VM_Version::supports_sse2(), ""));
3351   assert((UseAVX > 0), "SSE mode requires address alignment 16 bytes");
3352   InstructionMark im(this);
3353   InstructionAttr attributes(AVX_128bit, /* rex_w */ false, /* legacy_mode */ _legacy_mode_bw, /* no_mask_reg */ true, /* uses_vl */ true);
3354   attributes.set_address_attributes(/* tuple_type */ EVEX_FV, /* input_size_in_bits */ EVEX_32bit);
3355   simd_prefix(dst, dst, src, VEX_SIMD_66, VEX_OPCODE_0F, &attributes);
3356   emit_int8(0x67);
3357   emit_operand(dst, src);
3358 }
3359 
3360 void Assembler::packuswb(XMMRegister dst, XMMRegister src) {
3361   NOT_LP64(assert(VM_Version::supports_sse2(), ""));
3362   InstructionAttr attributes(AVX_128bit, /* rex_w */ false, /* legacy_mode */ _legacy_mode_bw, /* no_mask_reg */ true, /* uses_vl */ true);
3363   int encode = simd_prefix_and_encode(dst, dst, src, VEX_SIMD_66, VEX_OPCODE_0F, &attributes);
3364   emit_int8(0x67);
3365   emit_int8((unsigned char)(0xC0 | encode));
3366 }
3367 
3368 void Assembler::vpackuswb(XMMRegister dst, XMMRegister nds, XMMRegister src, int vector_len) {


< prev index next >