< prev index next >

src/hotspot/cpu/x86/assembler_x86.cpp

Print this page
rev 49225 : 8199603: Build failures after JDK-8199421 "Add support for vector popcount"
Reviewed-by: XXX

*** 3913,3922 **** --- 3913,3931 ---- emit_int8(0x0F); emit_int8((unsigned char)0xB8); emit_int8((unsigned char)(0xC0 | encode)); } + void Assembler::vpopcntd(XMMRegister dst, XMMRegister src, int vector_len) { + assert(VM_Version::supports_vpopcntdq(), "must support vpopcntdq feature"); + InstructionAttr attributes(vector_len, /* vex_w */ false, /* legacy_mode */ false, /* no_mask_reg */ false, /* uses_vl */ true); + attributes.set_is_evex_instruction(); + int encode = vex_prefix_and_encode(dst->encoding(), 0, src->encoding(), VEX_SIMD_66, VEX_OPCODE_0F_38, &attributes); + emit_int8(0x55); + emit_int8((unsigned char)(0xC0 | encode)); + } + void Assembler::popf() { emit_int8((unsigned char)0x9D); } #ifndef _LP64 // no 32bit push/pop on amd64
*** 8707,8725 **** emit_int8((unsigned char)0x0F); emit_int8((unsigned char)0xB8); emit_int8((unsigned char)(0xC0 | encode)); } - void Assembler::vpopcntd(XMMRegister dst, XMMRegister src, int vector_len) { - assert(VM_Version::supports_vpopcntdq(), "must support vpopcntdq feature"); - InstructionAttr attributes(vector_len, /* vex_w */ false, /* legacy_mode */ false, /* no_mask_reg */ false, /* uses_vl */ true); - attributes.set_is_evex_instruction(); - int encode = vex_prefix_and_encode(dst->encoding(), 0, src->encoding(), VEX_SIMD_66, VEX_OPCODE_0F_38, &attributes); - emit_int8(0x55); - emit_int8((unsigned char)(0xC0 | encode)); - } - void Assembler::popq(Address dst) { InstructionMark im(this); prefixq(dst); emit_int8((unsigned char)0x8F); emit_operand(rax, dst); --- 8716,8725 ----
< prev index next >