@@ -2846,6 +2846,13 @@ void Assembler::kxorbl(KRegister dst, KRegister src1, KRegister src2) {
28462846 emit_int16(0x47, (0xC0 | encode));
28472847}
28482848
2849+ void Assembler::kxnorwl(KRegister dst, KRegister src1, KRegister src2) {
2850+ assert(VM_Version::supports_evex(), "");
2851+ InstructionAttr attributes(AVX_256bit, /* rex_w */ false, /* legacy_mode */ true, /* no_mask_reg */ true, /* uses_vl */ false);
2852+ int encode = vex_prefix_and_encode(dst->encoding(), src1->encoding(), src2->encoding(), VEX_SIMD_NONE, VEX_OPCODE_0F, &attributes);
2853+ emit_int16(0x46, (0xC0 | encode));
2854+ }
2855+
28492856void Assembler::kxorwl(KRegister dst, KRegister src1, KRegister src2) {
28502857 assert(VM_Version::supports_evex(), "");
28512858 InstructionAttr attributes(AVX_256bit, /* rex_w */ false, /* legacy_mode */ true, /* no_mask_reg */ true, /* uses_vl */ false);
@@ -10771,7 +10778,7 @@ void Assembler::vpgatherdd(XMMRegister dst, Address src, XMMRegister mask, int v
1077110778 assert(src.isxmmindex(),"expected to be xmm index");
1077210779 assert(dst != src.xmmindex(), "instruction will #UD if dst and index are the same");
1077310780 InstructionMark im(this);
10774- InstructionAttr attributes(vector_len, /* vex_w */ false, /* legacy_mode */ true, /* no_mask_reg */ true, /* uses_vl */ true );
10781+ InstructionAttr attributes(vector_len, /* vex_w */ false, /* legacy_mode */ true, /* no_mask_reg */ true, /* uses_vl */ false );
1077510782 vex_prefix(src, mask->encoding(), dst->encoding(), VEX_SIMD_66, VEX_OPCODE_0F_38, &attributes);
1077610783 emit_int8((unsigned char)0x90);
1077710784 emit_operand(dst, src, 0);
@@ -10784,7 +10791,7 @@ void Assembler::vpgatherdq(XMMRegister dst, Address src, XMMRegister mask, int v
1078410791 assert(src.isxmmindex(),"expected to be xmm index");
1078510792 assert(dst != src.xmmindex(), "instruction will #UD if dst and index are the same");
1078610793 InstructionMark im(this);
10787- InstructionAttr attributes(vector_len, /* vex_w */ true, /* legacy_mode */ true, /* no_mask_reg */ true, /* uses_vl */ true );
10794+ InstructionAttr attributes(vector_len, /* vex_w */ true, /* legacy_mode */ true, /* no_mask_reg */ true, /* uses_vl */ false );
1078810795 vex_prefix(src, mask->encoding(), dst->encoding(), VEX_SIMD_66, VEX_OPCODE_0F_38, &attributes);
1078910796 emit_int8((unsigned char)0x90);
1079010797 emit_operand(dst, src, 0);
@@ -10797,7 +10804,7 @@ void Assembler::vgatherdpd(XMMRegister dst, Address src, XMMRegister mask, int v
1079710804 assert(src.isxmmindex(),"expected to be xmm index");
1079810805 assert(dst != src.xmmindex(), "instruction will #UD if dst and index are the same");
1079910806 InstructionMark im(this);
10800- InstructionAttr attributes(vector_len, /* vex_w */ true, /* legacy_mode */ true, /* no_mask_reg */ true, /* uses_vl */ true );
10807+ InstructionAttr attributes(vector_len, /* vex_w */ true, /* legacy_mode */ true, /* no_mask_reg */ true, /* uses_vl */ false );
1080110808 vex_prefix(src, mask->encoding(), dst->encoding(), VEX_SIMD_66, VEX_OPCODE_0F_38, &attributes);
1080210809 emit_int8((unsigned char)0x92);
1080310810 emit_operand(dst, src, 0);
@@ -10810,7 +10817,7 @@ void Assembler::vgatherdps(XMMRegister dst, Address src, XMMRegister mask, int v
1081010817 assert(src.isxmmindex(),"expected to be xmm index");
1081110818 assert(dst != src.xmmindex(), "instruction will #UD if dst and index are the same");
1081210819 InstructionMark im(this);
10813- InstructionAttr attributes(vector_len, /* vex_w */ false, /* legacy_mode */ true, /* no_mask_reg */ false, /* uses_vl */ true );
10820+ InstructionAttr attributes(vector_len, /* vex_w */ false, /* legacy_mode */ true, /* no_mask_reg */ false, /* uses_vl */ false );
1081410821 vex_prefix(src, mask->encoding(), dst->encoding(), VEX_SIMD_66, VEX_OPCODE_0F_38, &attributes);
1081510822 emit_int8((unsigned char)0x92);
1081610823 emit_operand(dst, src, 0);
0 commit comments