Skip to content

Conversation

missa-prime
Copy link
Contributor

@missa-prime missa-prime commented Aug 25, 2025

Intel® AVX10 ISA [1] extensions added new saturating floating point conversion instructions which comply with definitions in section 5.8 of the 2019 IEEE-754 standard. They can compute floating point to integral type conversions while also handling special inputs such as NaN, +Infinity, and -Infinity.

Without AVX10.2, the current approach starts by converting the floating point value(s) in the source register to the desired integral value(s) in the destination register. In the scalar case, the CVTTSS2SI (single precision) or CVTTSD2SI (double precision) instruction is used. In the vector case, the CVTTPS2DQ (single precision) or CVTTPD2DQ (double precision) is used. However, if the source contains a special value (NaN, -Infinity, +Infinity, <= Integer.MIN_VALUE, or >= Integer.MAX_VALUE), extra handling is required. The specific sequence of instructions involved depends on the source (single precision vs double precision), destination (long, integer, short, or byte), level of parallelization (scalar vs vector), and supported AVX extension type. Essentially though, the special values are mapped to values (NaN -> 0, -Infinity, <= Integer.MIN_VALUE -> Integer.MIN_VALUE, +Infinity, >= Integer.MAX_VALUE -> Integer.MAX_VALUE) in the integer range with the help of a few temporary registers to store intermediate results.

This change uses the new AVX10.2 scalar (VCVTTSS2SIS or VCVTTSD2SIS) and vector (VCVTTPS2QQS, VCVTTPS2DQS, VCVTTPD2QQS, and VCVTTPD2DQS) instructions on supported platforms to avoid the extra handling described above. Also, the JTREG tests listed below were used to verify correctness with -XX:-UseSuperWord / -XX:+UseSuperWord options to exercise both scalar and vector paths. The baseline build used is OpenJDK v26-b11.

  1. jtreg:test/hotspot/jtreg/compiler/codegen/TestByteDoubleVect.java
  2. jtreg:test/hotspot/jtreg/compiler/codegen/TestByteFloatVect.java
  3. jtreg:test/hotspot/jtreg/compiler/codegen/TestIntDoubleVect.java
  4. jtreg:test/hotspot/jtreg/compiler/codegen/TestIntFloatVect.java
  5. jtreg:test/hotspot/jtreg/compiler/codegen/TestLongDoubleVect.java
  6. jtreg:test/hotspot/jtreg/compiler/codegen/TestLongFloatVect.java
  7. jtreg:test/hotspot/jtreg/compiler/codegen/TestShortDoubleVect.java
  8. jtreg:test/hotspot/jtreg/compiler/codegen/TestShortFloatVect.java
  9. jtreg:test/hotspot/jtreg/compiler/vectorapi/VectorFPtoIntCastTest.java
  10. jtreg:test/hotspot/jtreg/compiler/vectorization/runner/ArrayTypeConvertTest.java

[1] https://www.intel.com/content/www/us/en/content-details/856721/intel-advanced-vector-extensions-10-2-intel-avx10-2-architecture-specification.html?wapkw=AVX10


Progress

  • Change must be properly reviewed (1 review required, with at least 1 Reviewer)
  • Change must not contain extraneous whitespace
  • Commit message must refer to an issue

Issue

  • JDK-8364305: Support AVX10 saturating floating point conversion instructions (Enhancement - P4)

Reviewing

Using git

Checkout this PR locally:
$ git fetch https://git.openjdk.org/jdk.git pull/26919/head:pull/26919
$ git checkout pull/26919

Update a local copy of the PR:
$ git checkout pull/26919
$ git pull https://git.openjdk.org/jdk.git pull/26919/head

Using Skara CLI tools

Checkout this PR locally:
$ git pr checkout 26919

View PR using the GUI difftool:
$ git pr show -t 26919

Using diff file

Download this PR as a diff file:
https://git.openjdk.org/jdk/pull/26919.diff

Using Webrev

Link to Webrev Comment

@bridgekeeper
Copy link

bridgekeeper bot commented Aug 25, 2025

👋 Welcome back missa! A progress list of the required criteria for merging this PR into master will be added to the body of your pull request. There are additional pull request commands available for use with this pull request.

@openjdk
Copy link

openjdk bot commented Aug 25, 2025

❗ This change is not yet ready to be integrated.
See the Progress checklist in the description for automated requirements.

@openjdk
Copy link

openjdk bot commented Aug 25, 2025

@missa-prime The following label will be automatically applied to this pull request:

  • hotspot-compiler

When this pull request is ready to be reviewed, an "RFR" email will be sent to the corresponding mailing list. If you would like to change these labels, use the /label pull request command.

@missa-prime missa-prime marked this pull request as ready for review August 25, 2025 23:37
@openjdk openjdk bot added the rfr Pull request is ready for review label Aug 25, 2025
@mlbridge
Copy link

mlbridge bot commented Aug 25, 2025

@@ -7753,6 +7773,20 @@ instruct castDtoX_reg_evex(vec dst, vec src, vec xtmp1, vec xtmp2, kReg ktmp1, k
ins_pipe( pipe_slow );
%}

instruct cast2DtoX_reg_evex(vec dst, vec src, rFlagsReg cr) %{
Copy link
Member

@jatin-bhateja jatin-bhateja Aug 26, 2025

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Vector instruction do not effect EFLAGS register.

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I removed the EFLAGS register parameters.

predicate(VM_Version::supports_avx10_2() &&
is_integral_type(Matcher::vector_element_basic_type(n)));
match(Set dst (VectorCastD2X src));
effect(KILL cr);
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Remove effect.

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I removed the effect calls.

@@ -7753,6 +7773,20 @@ instruct castDtoX_reg_evex(vec dst, vec src, vec xtmp1, vec xtmp2, kReg ktmp1, k
ins_pipe( pipe_slow );
%}

instruct cast2DtoX_reg_evex(vec dst, vec src, rFlagsReg cr) %{
Copy link
Member

@jatin-bhateja jatin-bhateja Aug 26, 2025

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

How about adding a CICS flavour of these patterns. As now we have a single instruction to cover entire conversion semantics memory operand patterns will be useful.

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I'm not familiar with CICS. Could you elaborate? Also, I added memory variants.

@@ -2363,6 +2403,14 @@ void Assembler::evcvttpd2qq(XMMRegister dst, XMMRegister src, int vector_len) {
emit_int16(0x7A, (0xC0 | encode));
}

void Assembler::evcvttpd2qqs(XMMRegister dst, XMMRegister src, int vector_len) {
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Please also add memory operand flavour of these assembler routines.

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I added memory variants of the instructions.

@eme64
Copy link
Contributor

eme64 commented Aug 28, 2025

@missa-prime Looks like an interesting patch! Do you think you could add some sort of IR test here, to verify that the correct code is generated on AVX10 vs lower AVX?

@missa-prime
Copy link
Contributor Author

@missa-prime Looks like an interesting patch! Do you think you could add some sort of IR test here, to verify that the correct code is generated on AVX10 vs lower AVX?

@eme64 Thanks for the suggestion. This patch doesn't modify any IR though, so I'm not sure what IR test(s) to add. I could modify existing tests (test/hotspot/jtreg/compiler/vectorapi/VectorFPtoIntCastTest.java, test/hotspot/jtreg/compiler/vectorization/TestFloatConversionsVector.java, test/hotspot/jtreg/compiler/vectorization/runner/ArrayTypeConvertTest.java) that use IR nodes as dependencies though. Would that be sufficient? Or did you have something else in mind?

@eme64
Copy link
Contributor

eme64 commented Aug 30, 2025

@missa-prime Could you not match on the mach graph? See example:
test/hotspot/jtreg/compiler/vectorapi/VectorMultiplyOpt.java with CompilePhase.FINAL_CODE.

Maybe another CompilePhase is better. I have never matched on the mach graph myself, but I wonder if it may be useful here.

instruct cast2DtoX_mem_evex(vec dst, memory src) %{
predicate(VM_Version::supports_avx10_2() &&
is_integral_type(Matcher::vector_element_basic_type(n)));
match(Set dst (VectorCastD2X src));
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I assume your intent here is to feed the memory operand to the vector cast IR, a memory operand is first loaded into register using LoadVector IR, so a CISC / memory variant of pattern should consume the Load IR such that the operand is directly exposed to the instruction. Checkout https://github.com/openjdk/jdk/blob/master/src/hotspot/cpu/x86/x86.ad#L8986

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Make a similar change in all the newly added memory patterns.

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I updated the scalar and vector memory patterns. I'm not completely sure about the vector ones though, so I'll try and test further.

@@ -87,7 +87,7 @@ public VectorFPtoIntCastTest() {

@Test
@IR(counts = {IRNode.VECTOR_CAST_F2I, IRNode.VECTOR_SIZE_16, "> 0"},
applyIfCPUFeature = {"avx512f", "true"})
applyIfCPUFeatureOr = {"avx512f", "true", "avx10_2", "true"})
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

You should check for target specific Machine IR which is selected on AVX10_2 targets.

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

New checks are added.

@@ -105,7 +105,7 @@ public void checkf2int(int len) {

@Test
@IR(counts = {IRNode.VECTOR_CAST_F2L, IRNode.VECTOR_SIZE_8, "> 0"},
applyIfCPUFeature = {"avx512dq", "true"})
applyIfCPUFeatureOr = {"avx512dq", "true", "avx10_2", "true"})
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

avx10_2 is super set of AVX512DQ, we enable all AVX512 featurs during VM initialization and IRFrameWork rely on the same.

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I updated the checks to account for this.

@missa-prime
Copy link
Contributor Author

@missa-prime Could you not match on the mach graph? See example: test/hotspot/jtreg/compiler/vectorapi/VectorMultiplyOpt.java with CompilePhase.FINAL_CODE.

Maybe another CompilePhase is better. I have never matched on the mach graph myself, but I wonder if it may be useful here.

I modified existing vector conversion tests, and I'll add some matching scalar tests to get full coverage.

Comment on lines 429 to 432
@IR(counts = {"castDtoX", " >0 "}, phase = CompilePhase.FINAL_CODE,
applyIfCPUFeatureAnd = {"avx", "true", "avx10_2", "false"})
@IR(counts = {"cast2DtoX", " >0 "}, phase = CompilePhase.FINAL_CODE,
applyIfCPUFeature = {"avx10_2", "true"})
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Thanks, I added some new nodes.

@jatin-bhateja
Copy link
Member

@missa-prime , please have a look at the following failure with the current patch

2025-09-10T02:04:00.8424130Z 
2025-09-10T02:04:00.8424221Z Failed IR Rules (4) of Methods (4)
2025-09-10T02:04:00.8424462Z ----------------------------------
2025-09-10T02:04:00.8425011Z 1) Method "public char[] compiler.vectorization.runner.ArrayTypeConvertTest.convertDoubleToChar()" - [Failed IR rules: 1]:
2025-09-10T02:04:00.8426351Z    * @IR rule 3: "@compiler.lib.ir_framework.IR(phase={DEFAULT}, applyIfPlatformAnd={}, applyIfCPUFeatureOr={}, counts={"_#CAST_D2X#_", "> 0"}, failOn={}, applyIfPlatform={}, applyIfPlatformOr={}, applyIfOr={}, applyIfCPUFeatureAnd={"avx", "true", "avx10_2", "false"}, applyIf={}, applyIfCPUFeature={}, applyIfAnd={}, applyIfNot={})"
2025-09-10T02:04:00.8427967Z      > Phase "Final Code":
2025-09-10T02:04:00.8428412Z        - counts: Graph contains wrong number of nodes:
2025-09-10T02:04:00.8429037Z          * Constraint 1: "(\d+(\s){2}(castD2X_reg_(av|eve)x.*)+(\s){2}===.*)"
2025-09-10T02:04:00.8429650Z            - Failed comparison: [found] 0 > 0 [given]
2025-09-10T02:04:00.8430146Z            - No nodes matched!
2025-09-10T02:04:00.8430409Z 
2025-09-10T02:04:00.8431165Z 2) Method "public int[] compiler.vectorization.runner.ArrayTypeConvertTest.convertDoubleToInt()" - [Failed IR rules: 1]:
2025-09-10T02:04:00.8433283Z    * @IR rule 2: "@compiler.lib.ir_framework.IR(phase={DEFAULT}, applyIfPlatformAnd={}, applyIfCPUFeatureOr={}, counts={"_#CAST_D2X#_", "> 0"}, failOn={}, applyIfPlatform={}, applyIfPlatformOr={}, applyIfOr={}, applyIfCPUFeatureAnd={"avx", "true", "avx10_2", "false"}, applyIf={}, applyIfCPUFeature={}, applyIfAnd={}, applyIfNot={})"
2025-09-10T02:04:00.8434546Z      > Phase "Final Code":
2025-09-10T02:04:00.8434810Z        - counts: Graph contains wrong number of nodes:
2025-09-10T02:04:00.8435174Z          * Constraint 1: "(\d+(\s){2}(castD2X_reg_(av|eve)x.*)+(\s){2}===.*)"
2025-09-10T02:04:00.8435523Z            - Failed comparison: [found] 0 > 0 [given]
2025-09-10T02:04:00.8435792Z            - No nodes matched!
2025-09-10T02:04:00.8435937Z 
2025-09-10T02:04:00.8436340Z 3) Method "public short[] compiler.vectorization.runner.ArrayTypeConvertTest.convertDoubleToShort()" - [Failed IR rules: 1]:
2025-09-10T02:04:00.8437688Z    * @IR rule 3: "@compiler.lib.ir_framework.IR(phase={DEFAULT}, applyIfPlatformAnd={}, applyIfCPUFeatureOr={}, counts={"_#CAST_D2X#_", "> 0"}, failOn={}, applyIfPlatform={}, applyIfPlatformOr={}, applyIfOr={}, applyIfCPUFeatureAnd={"avx", "true", "avx10_2", "false"}, applyIf={}, applyIfCPUFeature={}, applyIfAnd={}, applyIfNot={})"
2025-09-10T02:04:00.8438703Z      > Phase "Final Code":
2025-09-10T02:04:00.8438956Z        - counts: Graph contains wrong number of nodes:
2025-09-10T02:04:00.8439301Z          * Constraint 1: "(\d+(\s){2}(castD2X_reg_(av|eve)x.*)+(\s){2}===.*)"
2025-09-10T02:04:00.8439647Z            - Failed comparison: [found] 0 > 0 [given]
2025-09-10T02:04:00.8439913Z            - No nodes matched!
2025-09-10T02:04:00.8440063Z 
2025-09-10T02:04:00.8440436Z 4) Method "public int[] compiler.vectorization.runner.ArrayTypeConvertTest.convertFloatToInt()" - [Failed IR rules: 1]:
2025-09-10T02:04:00.8441891Z    * @IR rule 2: "@compiler.lib.ir_framework.IR(phase={DEFAULT}, applyIfPlatformAnd={}, applyIfCPUFeatureOr={}, counts={"_#CAST_F2X#_", "> 0"}, failOn={}, applyIfPlatform={}, applyIfPlatformOr={}, applyIfOr={}, applyIfCPUFeatureAnd={"avx", "true", "avx10_2", "false"}, applyIf={}, applyIfCPUFeature={}, applyIfAnd={}, applyIfNot={})"
2025-09-10T02:04:00.8442912Z      > Phase "Final Code":
2025-09-10T02:04:00.8443155Z        - counts: Graph contains wrong number of nodes:
2025-09-10T02:04:00.8443492Z          * Constraint 1: "(\d+(\s){2}(castF2X_reg_(av|eve)x.*)+(\s){2}===.*)"
2025-09-10T02:04:00.8443951Z            - Failed comparison: [found] 0 > 0 [given]
2025-09-10T02:04:00.8444210Z            - No nodes matched!
2025-09-10T02:04:00.8444355Z 
2025-09-10T02:04:00.8444498Z >>> Check stdout for compilation output of the failed methods

@@ -491,6 +491,26 @@ public class IRNode {
callOfNodes(STATIC_CALL_OF_METHOD, "CallStaticJava");
}

public static final String CAST_F2X = PREFIX + "CAST_F2X" + POSTFIX;
static {
machOnlyNameRegex(CAST_F2X, "castF2X_reg_(av|eve)x");
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This should be "castFtoX_reg_(av|eve)x".


public static final String CAST_D2X = PREFIX + "CAST_D2X" + POSTFIX;
static {
machOnlyNameRegex(CAST_D2X, "castD2X_reg_(av|eve)x");
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This should be "castDtoX_reg_(av|eve)x".


public static final String CAST2_F2X = PREFIX + "CAST2_F2X" + POSTFIX;
static {
machOnlyNameRegex(CAST2_F2X, "cast2F2X_(reg|mem)_evex");
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This should be "cast2FtoX_(reg|mem)_evex"


public static final String CAST2_D2X = PREFIX + "CAST2_D2X" + POSTFIX;
static {
machOnlyNameRegex(CAST2_D2X, "cast2D2X_(reg|mem)_evex");
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This should be "cast2DtoX_(reg|mem)_evex".

predicate(VM_Version::supports_avx10_2() &&
is_integral_type(Matcher::vector_element_basic_type(n)));
match(Set dst (VectorCastF2X src));
format %{ "vector_cast2r_f2x $dst, $src\t!" %}
Copy link
Member

@jatin-bhateja jatin-bhateja Sep 11, 2025

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
format %{ "vector_cast2r_f2x $dst, $src\t!" %}
format %{ "vector_cast_f2x_saturating $dst, $src\t!" %}

predicate(VM_Version::supports_avx10_2() &&
is_integral_type(Matcher::vector_element_basic_type(n)));
match(Set dst (VectorCastF2X (LoadVector src)));
format %{ "vector_cast2m_f2x $dst, $src\t!" %}
Copy link
Member

@jatin-bhateja jatin-bhateja Sep 11, 2025

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
format %{ "vector_cast2m_f2x $dst, $src\t!" %}
format %{ "vector_cast_f2x_saturating $dst, $src\t!" %}

src will be represented by appropriate addressing scheme for the memory operand

predicate(VM_Version::supports_avx10_2() &&
is_integral_type(Matcher::vector_element_basic_type(n)));
match(Set dst (VectorCastD2X src));
format %{ "vector_cast2r_d2x $dst, $src\t!" %}
Copy link
Member

@jatin-bhateja jatin-bhateja Sep 11, 2025

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
format %{ "vector_cast2r_d2x $dst, $src\t!" %}
format %{ "vector_cast_d2x_saturating $dst, $src\t!" %}

predicate(VM_Version::supports_avx10_2() &&
is_integral_type(Matcher::vector_element_basic_type(n)));
match(Set dst (VectorCastD2X (LoadVector src)));
format %{ "vector_cast2m_d2x $dst, $src\t!" %}
Copy link
Member

@jatin-bhateja jatin-bhateja Sep 11, 2025

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
format %{ "vector_cast2m_d2x $dst, $src\t!" %}
format %{ "vector_cast_d2x_saturating $dst, $src\t!" %}

@@ -7709,6 +7712,33 @@ instruct castFtoX_reg_evex(vec dst, vec src, vec xtmp1, vec xtmp2, kReg ktmp1, k
ins_pipe( pipe_slow );
%}

instruct cast2FtoX_reg_evex(vec dst, vec src) %{
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Could be named as castFtoX_reg_avx10.

ins_pipe( pipe_slow );
%}

instruct cast2FtoX_mem_evex(vec dst, memory src) %{
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Could be named as castFtoX_mem_avx10.

@@ -7753,6 +7786,33 @@ instruct castDtoX_reg_evex(vec dst, vec src, vec xtmp1, vec xtmp2, kReg ktmp1, k
ins_pipe( pipe_slow );
%}

instruct cast2DtoX_reg_evex(vec dst, vec src) %{
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Could be named as castDtoX_reg_avx10.

ins_pipe( pipe_slow );
%}

instruct cast2DtoX_mem_evex(vec dst, memory src) %{
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Could be named as castDtoX_mem_avx10.

@@ -11724,8 +11725,31 @@ instruct convF2I_reg_reg(rRegI dst, regF src, rFlagsReg cr)
ins_pipe(pipe_slow);
%}

instruct conv2F2I_reg_reg(rRegI dst, regF src)
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Could be named as convF2I_reg_reg_avx10.

@@ -11746,8 +11793,31 @@ instruct convD2I_reg_reg(rRegI dst, regD src, rFlagsReg cr)
ins_pipe(pipe_slow);
%}

instruct conv2D2I_reg_reg(rRegI dst, regD src)
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Could be named as convD2I_reg_reg_avx10.

ins_pipe(pipe_slow);
%}

instruct conv2D2I_reg_mem(rRegI dst, memory src)
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Could be named as convD2I_reg_mem_avx10.

@@ -11757,6 +11827,28 @@ instruct convD2L_reg_reg(rRegL dst, regD src, rFlagsReg cr)
ins_pipe(pipe_slow);
%}

instruct conv2D2L_reg_reg(rRegL dst, regD src)
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Could be named as convD2L_reg_reg_avx10.

ins_pipe(pipe_slow);
%}

instruct conv2D2L_reg_mem(rRegL dst, memory src)
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Could be named as convD2L_reg_mem_avx10.

Copy link

@sviswa7 sviswa7 Sep 11, 2025

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

IRNode.java will need name regex changes accordingly.

@@ -491,6 +491,26 @@ public class IRNode {
callOfNodes(STATIC_CALL_OF_METHOD, "CallStaticJava");
}

public static final String CAST_F2X = PREFIX + "CAST_F2X" + POSTFIX;
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

May be we can name CAST_F2X as X86_VCAST_F2X and CAST2_F2X as X86_VCAST_F2X_AVX10.
Then we can use the similar theme for other names below as well.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
hotspot-compiler [email protected] rfr Pull request is ready for review
Development

Successfully merging this pull request may close these issues.

4 participants