@@ -2706,34 +2706,18 @@ void Assembler::evmovdqub(XMMRegister dst, KRegister mask, Address src, bool mer
2706
2706
emit_operand (dst, src);
2707
2707
}
2708
2708
2709
- void Assembler::evmovdqu (XMMRegister dst, KRegister mask, Address src, int vector_len, int type) {
2710
- assert (VM_Version::supports_avx512vlbw (), " " );
2711
- assert (type == T_BYTE || type == T_SHORT || type == T_CHAR || type == T_INT || type == T_LONG, " " );
2712
- InstructionMark im (this );
2713
- bool wide = type == T_SHORT || type == T_CHAR || type == T_LONG;
2714
- int prefix = (type == T_BYTE || type == T_SHORT || type == T_CHAR) ? VEX_SIMD_F2 : VEX_SIMD_F3;
2715
- InstructionAttr attributes (vector_len, /* vex_w */ wide, /* legacy_mode */ false , /* no_mask_reg */ false , /* uses_vl */ true );
2716
- attributes.set_address_attributes (/* tuple_type */ EVEX_FVM, /* input_size_in_bits */ EVEX_NObit);
2717
- attributes.set_embedded_opmask_register_specifier (mask);
2718
- attributes.set_is_evex_instruction ();
2719
- vex_prefix (src, 0 , dst->encoding (), (Assembler::VexSimdPrefix)prefix, VEX_OPCODE_0F, &attributes);
2720
- emit_int8 (0x6F );
2721
- emit_operand (dst, src);
2722
- }
2723
-
2724
- void Assembler::evmovdqu (Address dst, KRegister mask, XMMRegister src, int vector_len, int type) {
2709
+ void Assembler::evmovdqub (Address dst, KRegister mask, XMMRegister src, bool merge, int vector_len) {
2725
2710
assert (VM_Version::supports_avx512vlbw (), " " );
2726
2711
assert (src != xnoreg, " sanity" );
2727
- assert (type == T_BYTE || type == T_SHORT || type == T_CHAR || type == T_INT || type == T_LONG, " " );
2728
2712
InstructionMark im (this );
2729
- bool wide = type == T_SHORT || type == T_CHAR || type == T_LONG;
2730
- int prefix = (type == T_BYTE || type == T_SHORT || type == T_CHAR) ? VEX_SIMD_F2 : VEX_SIMD_F3;
2731
- InstructionAttr attributes (vector_len, /* vex_w */ wide, /* legacy_mode */ false , /* no_mask_reg */ false , /* uses_vl */ true );
2713
+ InstructionAttr attributes (vector_len, /* vex_w */ false , /* legacy_mode */ false , /* no_mask_reg */ false , /* uses_vl */ true );
2732
2714
attributes.set_address_attributes (/* tuple_type */ EVEX_FVM, /* input_size_in_bits */ EVEX_NObit);
2733
- attributes.reset_is_clear_context ();
2734
2715
attributes.set_embedded_opmask_register_specifier (mask);
2735
2716
attributes.set_is_evex_instruction ();
2736
- vex_prefix (dst, 0 , src->encoding (), (Assembler::VexSimdPrefix)prefix, VEX_OPCODE_0F, &attributes);
2717
+ if (merge) {
2718
+ attributes.reset_is_clear_context ();
2719
+ }
2720
+ vex_prefix (dst, 0 , src->encoding (), VEX_SIMD_F2, VEX_OPCODE_0F, &attributes);
2737
2721
emit_int8 (0x7F );
2738
2722
emit_operand (src, dst);
2739
2723
}
0 commit comments