@@ -2225,6 +2225,44 @@ void Assembler::cvttss2sil(Register dst, XMMRegister src) {
22252225 emit_int16(0x2C, (0xC0 | encode));
22262226}
22272227
2228+ void Assembler::evcvttss2sisl(Register dst, XMMRegister src) {
2229+ assert(VM_Version::supports_avx10_2(), "");
2230+ InstructionAttr attributes(AVX_128bit, /* vex_w */ false, /* legacy_mode */ false, /* no_mask_reg */ true, /* uses_vl */ false);
2231+ attributes.set_is_evex_instruction();
2232+ int encode = vex_prefix_and_encode(dst->encoding(), 0, src->encoding(), VEX_SIMD_F3, VEX_OPCODE_MAP5, &attributes);
2233+ emit_int16(0x6D, (0xC0 | encode));
2234+ }
2235+
2236+ void Assembler::evcvttss2sisl(Register dst, Address src) {
2237+ assert(VM_Version::supports_avx10_2(), "");
2238+ InstructionMark im(this);
2239+ InstructionAttr attributes(AVX_128bit, /* vex_w */ false, /* legacy_mode */ false, /* no_mask_reg */ true, /* uses_vl */ false);
2240+ attributes.set_address_attributes(/* tuple_type */ EVEX_T1S, /* input_size_in_bits */ EVEX_32bit);
2241+ attributes.set_is_evex_instruction();
2242+ vex_prefix(src, 0, dst->encoding(), VEX_SIMD_F3, VEX_OPCODE_MAP5, &attributes);
2243+ emit_int8((unsigned char)0x6D);
2244+ emit_operand(dst, src, 0);
2245+ }
2246+
2247+ void Assembler::evcvttss2sisq(Register dst, XMMRegister src) {
2248+ assert(VM_Version::supports_avx10_2(), "");
2249+ InstructionAttr attributes(AVX_128bit, /* vex_w */ true, /* legacy_mode */ false, /* no_mask_reg */ true, /* uses_vl */ false);
2250+ attributes.set_is_evex_instruction();
2251+ int encode = vex_prefix_and_encode(dst->encoding(), 0, src->encoding(), VEX_SIMD_F3, VEX_OPCODE_MAP5, &attributes);
2252+ emit_int16(0x6D, (0xC0 | encode));
2253+ }
2254+
2255+ void Assembler::evcvttss2sisq(Register dst, Address src) {
2256+ assert(VM_Version::supports_avx10_2(), "");
2257+ InstructionMark im(this);
2258+ InstructionAttr attributes(AVX_128bit, /* vex_w */ true, /* legacy_mode */ false, /* no_mask_reg */ true, /* uses_vl */ false);
2259+ attributes.set_address_attributes(/* tuple_type */ EVEX_T1S, /* input_size_in_bits */ EVEX_32bit);
2260+ attributes.set_is_evex_instruction();
2261+ vex_prefix(src, 0, dst->encoding(), VEX_SIMD_F3, VEX_OPCODE_MAP5, &attributes);
2262+ emit_int8((unsigned char)0x6D);
2263+ emit_operand(dst, src, 0);
2264+ }
2265+
22282266void Assembler::cvttpd2dq(XMMRegister dst, XMMRegister src) {
22292267 int vector_len = VM_Version::supports_avx512novl() ? AVX_512bit : AVX_128bit;
22302268 InstructionAttr attributes(vector_len, /* rex_w */ true, /* legacy_mode */ false, /* no_mask_reg */ true, /* uses_vl */ true);
@@ -2310,13 +2348,51 @@ void Assembler::vcvttps2dq(XMMRegister dst, XMMRegister src, int vector_len) {
23102348 emit_int16(0x5B, (0xC0 | encode));
23112349}
23122350
2351+ void Assembler::evcvttps2dqs(XMMRegister dst, XMMRegister src, int vector_len) {
2352+ assert(VM_Version::supports_avx10_2(), "");
2353+ InstructionAttr attributes(vector_len, /* rex_w */ false, /* legacy_mode */ false, /* no_mask_reg */ true, /* uses_vl */ true);
2354+ attributes.set_is_evex_instruction();
2355+ int encode = vex_prefix_and_encode(dst->encoding(), 0, src->encoding(), VEX_SIMD_NONE, VEX_OPCODE_MAP5, &attributes);
2356+ emit_int16(0x6D, (0xC0 | encode));
2357+ }
2358+
2359+ void Assembler::evcvttps2dqs(XMMRegister dst, Address src, int vector_len) {
2360+ assert(VM_Version::supports_avx10_2(), "");
2361+ InstructionMark im(this);
2362+ InstructionAttr attributes(vector_len, /* rex_w */ false, /* legacy_mode */ false, /* no_mask_reg */ true, /* uses_vl */ true);
2363+ attributes.set_address_attributes(/* tuple_type */ EVEX_FV, /* input_size_in_bits */ EVEX_32bit);
2364+ attributes.set_is_evex_instruction();
2365+ vex_prefix(src, 0, dst->encoding(), VEX_SIMD_NONE, VEX_OPCODE_MAP5, &attributes);
2366+ emit_int8((unsigned char)0x6D);
2367+ emit_operand(dst, src, 0);
2368+ }
2369+
23132370void Assembler::vcvttpd2dq(XMMRegister dst, XMMRegister src, int vector_len) {
23142371 assert(vector_len <= AVX_256bit ? VM_Version::supports_avx() : VM_Version::supports_evex(), "");
23152372 InstructionAttr attributes(vector_len, /* rex_w */ true, /* legacy_mode */ false, /* no_mask_reg */ true, /* uses_vl */ true);
23162373 int encode = vex_prefix_and_encode(dst->encoding(), 0, src->encoding(), VEX_SIMD_66, VEX_OPCODE_0F, &attributes);
23172374 emit_int16((unsigned char)0xE6, (0xC0 | encode));
23182375}
23192376
2377+ void Assembler::evcvttpd2dqs(XMMRegister dst, XMMRegister src, int vector_len) {
2378+ assert(VM_Version::supports_avx10_2(), "");
2379+ InstructionAttr attributes(vector_len, /* rex_w */ true, /* legacy_mode */ false, /* no_mask_reg */ true, /* uses_vl */ true);
2380+ attributes.set_is_evex_instruction();
2381+ int encode = vex_prefix_and_encode(dst->encoding(), 0, src->encoding(), VEX_SIMD_NONE, VEX_OPCODE_MAP5, &attributes);
2382+ emit_int16(0x6D, (0xC0 | encode));
2383+ }
2384+
2385+ void Assembler::evcvttpd2dqs(XMMRegister dst, Address src, int vector_len) {
2386+ assert(VM_Version::supports_avx10_2(), "");
2387+ InstructionMark im(this);
2388+ InstructionAttr attributes(vector_len, /* rex_w */ true, /* legacy_mode */ false, /* no_mask_reg */ true, /* uses_vl */ true);
2389+ attributes.set_address_attributes(/* tuple_type */ EVEX_FV, /* input_size_in_bits */ EVEX_64bit);
2390+ attributes.set_is_evex_instruction();
2391+ vex_prefix(src, 0, dst->encoding(), VEX_SIMD_NONE, VEX_OPCODE_MAP5, &attributes);
2392+ emit_int8((unsigned char)0x6D);
2393+ emit_operand(dst, src, 0);
2394+ }
2395+
23202396void Assembler::vcvtps2dq(XMMRegister dst, XMMRegister src, int vector_len) {
23212397 assert(vector_len <= AVX_256bit ? VM_Version::supports_avx() : VM_Version::supports_evex(), "");
23222398 InstructionAttr attributes(vector_len, /* rex_w */ false, /* legacy_mode */ false, /* no_mask_reg */ true, /* uses_vl */ true);
@@ -2332,6 +2408,25 @@ void Assembler::evcvttps2qq(XMMRegister dst, XMMRegister src, int vector_len) {
23322408 emit_int16(0x7A, (0xC0 | encode));
23332409}
23342410
2411+ void Assembler::evcvttps2qqs(XMMRegister dst, XMMRegister src, int vector_len) {
2412+ assert(VM_Version::supports_avx10_2(), "");
2413+ InstructionAttr attributes(vector_len, /* rex_w */ false, /* legacy_mode */ false, /* no_mask_reg */ true, /* uses_vl */ true);
2414+ attributes.set_is_evex_instruction();
2415+ int encode = vex_prefix_and_encode(dst->encoding(), 0, src->encoding(), VEX_SIMD_66, VEX_OPCODE_MAP5, &attributes);
2416+ emit_int16(0x6D, (0xC0 | encode));
2417+ }
2418+
2419+ void Assembler::evcvttps2qqs(XMMRegister dst, Address src, int vector_len) {
2420+ assert(VM_Version::supports_avx10_2(), "");
2421+ InstructionMark im(this);
2422+ InstructionAttr attributes(vector_len, /* rex_w */ false, /* legacy_mode */ false, /* no_mask_reg */ true, /* uses_vl */ true);
2423+ attributes.set_address_attributes(/* tuple_type */ EVEX_HV, /* input_size_in_bits */ EVEX_32bit);
2424+ attributes.set_is_evex_instruction();
2425+ vex_prefix(src, 0, dst->encoding(), VEX_SIMD_66, VEX_OPCODE_MAP5, &attributes);
2426+ emit_int8((unsigned char)0x6D);
2427+ emit_operand(dst, src, 0);
2428+ }
2429+
23352430void Assembler::evcvtpd2qq(XMMRegister dst, XMMRegister src, int vector_len) {
23362431 assert(VM_Version::supports_avx512dq(), "");
23372432 InstructionAttr attributes(vector_len, /* rex_w */ true, /* legacy_mode */ false, /* no_mask_reg */ true, /* uses_vl */ true);
@@ -2356,6 +2451,25 @@ void Assembler::evcvttpd2qq(XMMRegister dst, XMMRegister src, int vector_len) {
23562451 emit_int16(0x7A, (0xC0 | encode));
23572452}
23582453
2454+ void Assembler::evcvttpd2qqs(XMMRegister dst, XMMRegister src, int vector_len) {
2455+ assert(VM_Version::supports_avx10_2(), "");
2456+ InstructionAttr attributes(vector_len, /* rex_w */ true, /* legacy_mode */ false, /* no_mask_reg */ true, /* uses_vl */ true);
2457+ attributes.set_is_evex_instruction();
2458+ int encode = vex_prefix_and_encode(dst->encoding(), 0, src->encoding(), VEX_SIMD_66, VEX_OPCODE_MAP5, &attributes);
2459+ emit_int16(0x6D, (0xC0 | encode));
2460+ }
2461+
2462+ void Assembler::evcvttpd2qqs(XMMRegister dst, Address src, int vector_len) {
2463+ assert(VM_Version::supports_avx10_2(), "");
2464+ InstructionMark im(this);
2465+ InstructionAttr attributes(vector_len, /* rex_w */ true, /* legacy_mode */ false, /* no_mask_reg */ true, /* uses_vl */ true);
2466+ attributes.set_address_attributes(/* tuple_type */ EVEX_FV, /* input_size_in_bits */ EVEX_64bit);
2467+ attributes.set_is_evex_instruction();
2468+ vex_prefix(src, 0, dst->encoding(), VEX_SIMD_66, VEX_OPCODE_MAP5, &attributes);
2469+ emit_int8((unsigned char)0x6D);
2470+ emit_operand(dst, src, 0);
2471+ }
2472+
23592473void Assembler::evcvtqq2pd(XMMRegister dst, XMMRegister src, int vector_len) {
23602474 assert(VM_Version::supports_avx512dq(), "");
23612475 InstructionAttr attributes(vector_len, /* rex_w */ true, /* legacy_mode */ false, /* no_mask_reg */ true, /* uses_vl */ true);
@@ -14988,6 +15102,44 @@ void Assembler::cvttsd2siq(Register dst, Address src) {
1498815102 emit_operand(dst, src, 0);
1498915103}
1499015104
15105+ void Assembler::evcvttsd2sisl(Register dst, XMMRegister src) {
15106+ assert(VM_Version::supports_avx10_2(), "");
15107+ InstructionAttr attributes(AVX_128bit, /* vex_w */ false, /* legacy_mode */ false, /* no_mask_reg */ true, /* uses_vl */ false);
15108+ attributes.set_is_evex_instruction();
15109+ int encode = vex_prefix_and_encode(dst->encoding(), 0, src->encoding(), VEX_SIMD_F2, VEX_OPCODE_MAP5, &attributes);
15110+ emit_int16(0x6D, (0xC0 | encode));
15111+ }
15112+
15113+ void Assembler::evcvttsd2sisl(Register dst, Address src) {
15114+ assert(VM_Version::supports_avx10_2(), "");
15115+ InstructionMark im(this);
15116+ InstructionAttr attributes(AVX_128bit, /* vex_w */ false, /* legacy_mode */ false, /* no_mask_reg */ true, /* uses_vl */ false);
15117+ attributes.set_address_attributes(/* tuple_type */ EVEX_T1S, /* input_size_in_bits */ EVEX_64bit);
15118+ attributes.set_is_evex_instruction();
15119+ vex_prefix(src, 0, dst->encoding(), VEX_SIMD_F2, VEX_OPCODE_MAP5, &attributes);
15120+ emit_int8((unsigned char)0x6D);
15121+ emit_operand(dst, src, 0);
15122+ }
15123+
15124+ void Assembler::evcvttsd2sisq(Register dst, XMMRegister src) {
15125+ assert(VM_Version::supports_avx10_2(), "");
15126+ InstructionAttr attributes(AVX_128bit, /* vex_w */ true, /* legacy_mode */ false, /* no_mask_reg */ true, /* uses_vl */ false);
15127+ attributes.set_is_evex_instruction();
15128+ int encode = vex_prefix_and_encode(dst->encoding(), 0, src->encoding(), VEX_SIMD_F2, VEX_OPCODE_MAP5, &attributes);
15129+ emit_int16(0x6D, (0xC0 | encode));
15130+ }
15131+
15132+ void Assembler::evcvttsd2sisq(Register dst, Address src) {
15133+ assert(VM_Version::supports_avx10_2(), "");
15134+ InstructionMark im(this);
15135+ InstructionAttr attributes(AVX_128bit, /* vex_w */ true, /* legacy_mode */ false, /* no_mask_reg */ true, /* uses_vl */ false);
15136+ attributes.set_address_attributes(/* tuple_type */ EVEX_T1S, /* input_size_in_bits */ EVEX_64bit);
15137+ attributes.set_is_evex_instruction();
15138+ vex_prefix(src, 0, dst->encoding(), VEX_SIMD_F2, VEX_OPCODE_MAP5, &attributes);
15139+ emit_int8((unsigned char)0x6D);
15140+ emit_operand(dst, src, 0);
15141+ }
15142+
1499115143void Assembler::cvttsd2siq(Register dst, XMMRegister src) {
1499215144 InstructionAttr attributes(AVX_128bit, /* rex_w */ true, /* legacy_mode */ false, /* no_mask_reg */ true, /* uses_vl */ false);
1499315145 int encode = simd_prefix_and_encode(as_XMMRegister(dst->encoding()), xnoreg, src, VEX_SIMD_F2, VEX_OPCODE_0F, &attributes);
0 commit comments