src/hotspot/cpu/x86/assembler_x86.cpp
changeset 49384 b242a1e3f9cf
parent 49347 edb65305d3ac
child 49396 647ee5457fd1
--- a/src/hotspot/cpu/x86/assembler_x86.cpp	Tue Mar 13 17:13:35 2018 +0100
+++ b/src/hotspot/cpu/x86/assembler_x86.cpp	Tue Mar 13 10:22:15 2018 -0700
@@ -8709,6 +8709,15 @@
   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);