Skip to content

Conversation

@erifan
Copy link
Contributor

@erifan erifan commented Jun 13, 2025

If the input long value l of VectorMask.fromLong(SPECIES, l) would set or unset all lanes, VectorMask.fromLong(SPECIES, l) is equivalent to maskAll(true) or maskAll(false). But the cost of the maskAll is
relative smaller than that of fromLong. So this patch does the conversion for these cases.

The conversion is done in C2's IGVN phase. And on platforms (like Arm NEON) that don't support VectorLongToMask, the conversion is done during intrinsiication process if MaskAll or Replicate is supported.

Since this optimization requires the input long value of VectorMask.fromLong to be specific compile-time constants, and such expressions are usually hoisted out of the loop. So we can't see noticeable performance change.

This conversion also enables further optimizations that recognize maskAll patterns, see [1]. And we can observe a performance improvement of about 7% on both aarch64 and x64.

As VectorLongToMask is converted to MaskAll or Replicate, some existing optimizations recognizing the VectorLongToMask will be affected, like

  VectorMaskToLong (VectorLongToMask x) => x

Hence, this patch also added the following optimizations:

  VectorMaskToLong (MaskAll x) => (x & (-1ULL >> (64 - vlen)))    // x is -1 or 0
  VectorMaskToLong (VectorStoreMask (Replicate x)) => (x & (-1ULL >> (64 - vlen)))  // x is -1 or 0

  VectorMaskCast (VectorMaskCast x) => x

And we can see noticeable performance improvement with the above optimizations for floating-point types.

Benchmarks on Nvidia Grace machine with option -XX:UseSVE=2:

Benchmark				Unit	Before		Error		After		Error		Uplift
microMaskFromLongToLong_Double128	ops/s	1522384.986	1324881.46	2835774480	403575069.7	1862.71
microMaskFromLongToLong_Double256	ops/s	4275.415598	28.560622	4285.587451	27.633101	1
microMaskFromLongToLong_Double512	ops/s	3702.171936	9.528497	3692.747579	18.47744	0.99
microMaskFromLongToLong_Double64	ops/s	4624.452243	37.388427	4616.320519	23.455954	0.99
microMaskFromLongToLong_Float128	ops/s	1239661.887	1286803.852	2842927993	360468218.3	2293.3
microMaskFromLongToLong_Float256	ops/s	3681.64954	15.153633	3685.411771	21.737124	1
microMaskFromLongToLong_Float512	ops/s	3007.563025	10.189944	3022.002986	14.137287	1
microMaskFromLongToLong_Float64		ops/s	1646664.258	1375451.279	2948453900	397472562.4	1790.56

Benchmarks on AMD EPYC 9124 16-Core Processor with option -XX:UseAVX=3:

Benchmark				Unit	Before		Error		After		Error		Uplift
microMaskFromLongToLong_Double128	ops/s	4522.856461	13.457697	4519.659724	14.611082	0.99
microMaskFromLongToLong_Double256	ops/s	10162952.55	6596295.113	2825194160	812748824.8	277.98
microMaskFromLongToLong_Double512	ops/s	6866433.746	6180824.695	2167261438	1066056898	315.63
microMaskFromLongToLong_Double64	ops/s	4899.463108	22.800255	4743.207045	133.213369	0.96
microMaskFromLongToLong_Float128	ops/s	10544037.9	6370627.873	2810755845	822602731.5	266.57
microMaskFromLongToLong_Float256	ops/s	6481127.038	6219583.411	2249979678	1062806666	347.15
microMaskFromLongToLong_Float512	ops/s	2214751.551	4095711.71	1722653861	1145629272	777.8
microMaskFromLongToLong_Float64		ops/s	4526.130633	13.947008	4366.884556	141.754894	0.96

There's no obvious performance changes for integers types because the optimization VectorMaskToLong (VectorLongToMask x) => x has supported integers types before.

Some JTReg test cases are added for the above changes. And the patch was tested on both aarch64 and x64, all of tier1 tier2 and tier3 tests passed.

[1] #24674


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-8356760: VectorAPI: Optimize VectorMask.fromLong for all-true/all-false cases (Enhancement - P4)

Reviewers

Reviewing

Using git

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

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

Using Skara CLI tools

Checkout this PR locally:
$ git pr checkout 25793

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

Using diff file

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

Using Webrev

Link to Webrev Comment

…se cases

If the input long value `l` of `VectorMask.fromLong(SPECIES, l)` would
set or unset all lanes, `VectorMask.fromLong(SPECIES, l)` is equivalent
to `maskAll(true)` or `maskAll(false)`. But the cost of `maskAll` is
relative smaller than that of `fromLong`. This patch does the conversion
for these cases if `l` is a compile time constant.

And this conversion also enables further optimizations that recognize
maskAll patterns, see [1].

Some JTReg test cases are added to ensure the optimization is effective.

I tried many different ways to write a JMH benchmark, but failed. Since
the input of `VectorMask.fromLong(SPECIES, l)` needs to be a specific
compile-time constant, the statement will be hoisted out of the loop.
If we don't use a loop, the hotspot will become other instructions, and
no obvious performance change was observed. However, combined with the
optimization of [1], we can observe a performance improvement of about
7% on both aarch64 and x64.

The patch was tested on both aarch64 and x64, all of tier1 tier2 and
tier3 tests passed.

[1] openjdk#24674
@bridgekeeper
Copy link

bridgekeeper bot commented Jun 13, 2025

👋 Welcome back erifan! 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 Jun 13, 2025

@erifan This change now passes all automated pre-integration checks.

ℹ️ This project also has non-automated pre-integration requirements. Please see the file CONTRIBUTING.md for details.

After integration, the commit message for the final commit will be:

8356760: VectorAPI: Optimize VectorMask.fromLong for all-true/all-false cases

Reviewed-by: xgong, jbhateja

You can use pull request commands such as /summary, /contributor and /issue to adjust it as needed.

At the time when this comment was updated there had been 182 new commits pushed to the master branch:

As there are no conflicts, your changes will automatically be rebased on top of these commits when integrating. If you prefer to avoid this automatic rebasing, please check the documentation for the /integrate command for further details.

As you do not have Committer status in this project an existing Committer must agree to sponsor your change. Possible candidates are the reviewers of this PR (@XiaohongGong, @jatin-bhateja) but any other Committer may sponsor as well.

➡️ To flag this PR as ready for integration with the above commit message, type /integrate in a new comment. (Afterwards, your sponsor types /sponsor in a new comment to perform the integration).

@openjdk openjdk bot added the rfr Pull request is ready for review label Jun 13, 2025
@openjdk
Copy link

openjdk bot commented Jun 13, 2025

@erifan 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.

@mlbridge
Copy link

mlbridge bot commented Jun 13, 2025

erifan added 2 commits July 3, 2025 01:39
Add support for the following patterns:
  toLong(maskAll(true))  => (-1ULL >> (64 -vlen))
  toLong(maskAll(false)) => 0

And add more test cases.
Copy link
Contributor Author

@erifan erifan left a comment

Choose a reason for hiding this comment

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

Thanks for your review! Would you mind taking another look, thanks!

Copy link

@XiaohongGong XiaohongGong left a comment

Choose a reason for hiding this comment

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

Looks much better to me. Thanks for your updating!

@erifan
Copy link
Contributor Author

erifan commented Jul 3, 2025

Hi @eme64 @jatin-bhateja , could you help review this PR? Thanks~

@jatin-bhateja
Copy link
Member

jatin-bhateja commented Jul 4, 2025

Can you kindly include a micro with this patch?

public static final VectorSpecies<Float> FSP = FloatVector.SPECIES_512;
public static long micro1(long a) {
   long mask = Math.min(-1, Math.max(-1, a));
   return VectorMask.fromLong(FSP, mask).toLong();
}
public static long micro2() {
   return FSP.maskAll(true).toLong();
}

Your patch now removes L2M and M2L IR nodes.

Baseline:-
SPR2>java --add-modules=jdk.incubator.vector -Xbatch  -XX:CompileCommand=PrintIdealPhase,test_mask_all::micro1,BEFORE_MATCHING -XX:-TieredCompilation -cp .
test_mask_all 0
AFTER: BEFORE_MATCHING
  65  ConL  === 0  [[ 377 ]]  #long:65535
 369  Return  === 5 6 7 8 9 returns 399  [[ 0 ]]
 377  VectorLongToMask  === _ 65  [[ 398 ]]  #vectormask<F,16> !jvms: VectorMask::fromLong @ bci:39 (line 243) test_mask_all::micro1 @ bci:18 (line 9)
 398  VectorMaskCast  === _ 377  [[ 399 ]]  #vectormask<I,16> !jvms: Float512Vector$Float512Mask::toLong @ bci:35 (line 765) test_mask_all::micro1 @ bci:21 (line 9)
 399  VectorMaskToLong  === _ 398  [[ 369 ]]  #long !jvms: Float512Vector$Float512Mask::toLong @ bci:35 (line 765) test_mask_all::micro1 @ bci:21 (line 9)
[time] 5 ms  [res] 1310700000000

With patch:-
XX:CompileCommand=PrintIdealPhase,test_mask_all::micro1,BEFORE_MATCHING -XX:-TieredCompilation -cp . test_mask_all 0
CompileCommand: PrintIdealPhase test_mask_all.micro1 const char* PrintIdealPhase = 'BEFORE_MATCHING'
WARNING: Using incubator modules: jdk.incubator.vector
AFTER: BEFORE_MATCHING
  65  ConL  === 0  [[ 369 ]]  #long:65535
 369  Return  === 5 6 7 8 9 returns 65  [[ 0 ]]
[time] 3 ms  [res] 1310700000000

@erifan
Copy link
Contributor Author

erifan commented Jul 4, 2025

public static final VectorSpecies FSP = FloatVector.SPECIES_512;
public static long micro1(long a) {
long mask = Math.min(-1, Math.max(-1, a));
return VectorMask.fromLong(FSP, mask).toLong();
}
public static long micro2() {
return FSP.maskAll(true).toLong();
}

With this JMH method we can not see obvious performance improvement, because the hot spots are other instructions. Adding a loop is better.

    @Benchmark
    public long micro_3() {
        long result = 0;
        for (int i = 0; i < ITERATION; i++) {
            long mask = Math.min(-1, Math.max(-1, result));
            result += VectorMask.fromLong(FSP, mask).toLong();
        }
        return result;
    }

But if it is not a floating point type, there will be no obvious performance improvement. Because the pattern VectorMaskToLong(VectorLongToMask (l)) for integer types has been implemented, and VectorMaskToLong(VectorMaskCast (VectorLongToMask (l))) for floating-point types is not implemented. So if we add JMH benchmarks for this optimization, we can only see good performance gain from floating point types. So do you think it is necessary?

@jatin-bhateja Thanks for your review!

@jatin-bhateja
Copy link
Member

jatin-bhateja commented Jul 4, 2025

public static final VectorSpecies FSP = FloatVector.SPECIES_512;
public static long micro1(long a) {
long mask = Math.min(-1, Math.max(-1, a));
return VectorMask.fromLong(FSP, mask).toLong();
}
public static long micro2() {
return FSP.maskAll(true).toLong();
}

With this JMH method we can not see obvious performance improvement, because the hot spots are other instructions. Adding a loop is better.

There is no hard and fast rule for the inclusion of a loop in a JMH micro in that case?

@erifan
Copy link
Contributor Author

erifan commented Jul 7, 2025

public static final VectorSpecies FSP = FloatVector.SPECIES_512;
public static long micro1(long a) {
long mask = Math.min(-1, Math.max(-1, a));
return VectorMask.fromLong(FSP, mask).toLong();
}
public static long micro2() {
return FSP.maskAll(true).toLong();
}

With this JMH method we can not see obvious performance improvement, because the hot spots are other instructions. Adding a loop is better.

There is no hard and fast rule for the inclusion of a loop in a JMH micro in that case?

You mean adding a loop is not a block, right ?

@jatin-bhateja
Copy link
Member

jatin-bhateja commented Jul 7, 2025

public static final VectorSpecies FSP = FloatVector.SPECIES_512;
public static long micro1(long a) {
long mask = Math.min(-1, Math.max(-1, a));
return VectorMask.fromLong(FSP, mask).toLong();
}
public static long micro2() {
return FSP.maskAll(true).toLong();
}

With this JMH method we can not see obvious performance improvement, because the hot spots are other instructions. Adding a loop is better.

There is no hard and fast rule for the inclusion of a loop in a JMH micro in that case?

You mean adding a loop is not a block, right ?

Yes. If you see gains without loop go for it.

erifan added 2 commits July 17, 2025 08:54
Do the convertion in C2's IGVN phase to cover more cases.
@erifan
Copy link
Contributor Author

erifan commented Jul 17, 2025

As @jatin-bhateja suggested, I have refactored the implementation and updated the commit message, please help review this PR, thanks!

@jatin-bhateja
Copy link
Member

jatin-bhateja commented Jul 18, 2025

As @jatin-bhateja suggested, I have refactored the implementation and updated the commit message. please help review this PR, thanks!

Thanks a lot @erifan , I am out for the rest of the week, will re-review early next week.

Copy link
Member

@jatin-bhateja jatin-bhateja left a comment

Choose a reason for hiding this comment

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

Rest of the patch looks good to me, apart from minor proposed changes

Copy link
Contributor Author

@erifan erifan left a comment

Choose a reason for hiding this comment

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

Thanks for your review, I'll update the code soon.

@chhagedorn
Copy link
Member

chhagedorn commented Jul 29, 2025

Testing is currently slow - still running but I report what I have so far. There is one test failure on linux-aarch64-debug and macosx-aarch64-debug with the new test VectorMaskToLongTest.java:

Additional flags: -ea -esa -XX:CompileThreshold=100 -XX:+UnlockExperimentalVMOptions -server -XX:-TieredCompilation (probably only related to -XX:-TieredComilation, maybe we have not enough profiling and need to increase the warm-up but that's just a wild guess without looking at the test)

Log ``` Compilations (5) of Failed Methods (5) -------------------------------------- 1) Compilation of "public static void compiler.vectorapi.VectorMaskToLongTest.testFromLongToLongByte()": > Phase "PrintIdeal": AFTER: print_ideal 0 Root === 0 203 230 269 270 [[ 0 1 3 225 198 189 23 186 167 28 44 124 104 54 277 295 ]] inner 1 Con === 0 [[ ]] #top 3 Start === 3 0 [[ 3 5 6 7 8 9 ]] #{0:control, 1:abIO, 2:memory, 3:rawptr:BotPTR, 4:return_address} 5 Parm === 3 [[ 168 ]] Control !jvms: VectorMaskToLongTest::testFromLongToLongByte @ bci:-1 (line 182) 6 Parm === 3 [[ 168 ]] I_O !jvms: VectorMaskToLongTest::testFromLongToLongByte @ bci:-1 (line 182) 7 Parm === 3 [[ 168 279 286 ]] Memory Memory: @BotPTR *+bot, idx=Bot; !jvms: VectorMaskToLongTest::testFromLongToLongByte @ bci:-1 (line 182) 8 Parm === 3 [[ 270 269 255 233 230 199 203 168 226 ]] FramePtr !jvms: VectorMaskToLongTest::testFromLongToLongByte @ bci:-1 (line 182) 9 Parm === 3 [[ 270 269 199 226 ]] ReturnAdr !jvms: VectorMaskToLongTest::testFromLongToLongByte @ bci:-1 (line 182) 23 ConP === 0 [[ 255 168 ]] #jdk/incubator/vector/ByteVector$ByteSpecies (jdk/incubator/vector/VectorSpecies):exact * Oop:jdk/incubator/vector/ByteVector$ByteSpecies (jdk/incubator/vector/VectorSpecies):exact * 28 ConI === 0 [[ 168 ]] #int:1 44 ConI === 0 [[ 168 ]] #int:16 54 ConL === 0 [[ 255 233 168 168 199 ]] #long:65534 104 ConP === 0 [[ 168 ]] #java/lang/Class (java/io/Serializable,java/lang/constant/Constable,java/lang/reflect/AnnotatedElement,java/lang/invoke/TypeDescriptor,java/lang/reflect/GenericDeclaration,java/lang/reflect/Type,java/lang/invoke/TypeDescriptor$OfField):exact * Oop:java/lang/Class (java/io/Serializable,java/lang/constant/Constable,java/lang/reflect/AnnotatedElement,java/lang/invoke/TypeDescriptor,java/lang/reflect/GenericDeclaration,java/lang/reflect/Type,java/lang/invoke/TypeDescriptor$OfField):exact * 124 ConP === 0 [[ 168 ]] #java/lang/Class (java/io/Serializable,java/lang/constant/Constable,java/lang/reflect/AnnotatedElement,java/lang/invoke/TypeDescriptor,java/lang/reflect/GenericDeclaration,java/lang/reflect/Type,java/lang/invoke/TypeDescriptor$OfField):exact * Oop:java/lang/Class (java/io/Serializable,java/lang/constant/Constable,java/lang/reflect/AnnotatedElement,java/lang/invoke/TypeDescriptor,java/lang/reflect/GenericDeclaration,java/lang/reflect/Type,java/lang/invoke/TypeDescriptor$OfField):exact * 167 ConP === 0 [[ 168 ]] #jdk/incubator/vector/VectorMask$$Lambda+0x0000060001060748 (jdk/internal/vm/vector/VectorSupport$FromBitsCoercedOperation):exact * Oop:jdk/incubator/vector/VectorMask$$Lambda+0x0000060001060748 (jdk/internal/vm/vector/VectorSupport$FromBitsCoercedOperation):exact * 168 CallStaticJava === 5 6 7 8 1 (104 124 44 54 1 28 23 167 54 1 1 1 1 1 1 1 ) [[ 169 181 182 173 ]] # Static jdk.internal.vm.vector.VectorSupport::fromBitsCoerced jdk/internal/vm/vector/VectorSupport$VectorPayload * ( java/lang/Class (java/io/Serializable,java/lang/constant/Constable,java/lang/reflect/AnnotatedElement,java/lang/invoke/TypeDescriptor,java/lang/reflect/GenericDeclaration,java/lang/reflect/Type,java/lang/invoke/TypeDescriptor$OfField):exact *, java/lang/Class (java/io/Serializable,java/lang/constant/Constable,java/lang/reflect/AnnotatedElement,java/lang/invoke/TypeDescriptor,java/lang/reflect/GenericDeclaration,java/lang/reflect/Type,java/lang/invoke/TypeDescriptor$OfField):exact *, int, long, half, int, jdk/internal/vm/vector/VectorSupport$VectorSpecies *, java/lang/Object * ) VectorMask::fromLong @ bci:39 (line 243) VectorMaskToLongTest::testFromLongToLongByte @ bci:22 (line 183) !jvms: VectorMask::fromLong @ bci:39 (line 243) VectorMaskToLongTest::testFromLongToLongByte @ bci:22 (line 183) 169 Proj === 168 [[ 175 ]] #0 !jvms: VectorMask::fromLong @ bci:39 (line 243) VectorMaskToLongTest::testFromLongToLongByte @ bci:22 (line 183) 173 Proj === 168 [[ 226 190 278 278 222 ]] #5 Oop:jdk/internal/vm/vector/VectorSupport$VectorPayload * !jvms: VectorMask::fromLong @ bci:39 (line 243) VectorMaskToLongTest::testFromLongToLongByte @ bci:22 (line 183) 175 Catch === 169 181 [[ 176 177 ]] !jvms: VectorMask::fromLong @ bci:39 (line 243) VectorMaskToLongTest::testFromLongToLongByte @ bci:22 (line 183) 176 CatchProj === 175 [[ 192 ]] #0@bci -1 !jvms: VectorMask::fromLong @ bci:39 (line 243) VectorMaskToLongTest::testFromLongToLongByte @ bci:22 (line 183) 177 CatchProj === 175 [[ 251 180 ]] #1@bci -1 !jvms: VectorMask::fromLong @ bci:39 (line 243) VectorMaskToLongTest::testFromLongToLongByte @ bci:22 (line 183) 180 CreateEx === 177 181 [[ 254 ]] #java/lang/Throwable (java/io/Serializable):NotNull * Oop:java/lang/Throwable (java/io/Serializable):NotNull * !jvms: VectorMask::fromLong @ bci:39 (line 243) VectorMaskToLongTest::testFromLongToLongByte @ bci:22 (line 183) 181 Proj === 168 [[ 233 199 226 252 175 180 ]] #1 !jvms: VectorMask::fromLong @ bci:39 (line 243) VectorMaskToLongTest::testFromLongToLongByte @ bci:22 (line 183) 182 Proj === 168 [[ 233 226 199 253 ]] #2 Memory: @BotPTR *+bot, idx=Bot; !jvms: VectorMask::fromLong @ bci:39 (line 243) VectorMaskToLongTest::testFromLongToLongByte @ bci:22 (line 183) 186 ConP === 0 [[ 296 ]] #precise jdk/incubator/vector/VectorMask: 0x0000000148423080:Constant:exact * Klass:precise jdk/incubator/vector/VectorMask: 0x0000000148423080:Constant:exact * 189 ConP === 0 [[ 190 199 ]] #null 190 CmpP === _ 173 189 [[ 191 ]] !jvms: VectorMask::fromLong @ bci:42 (line 243) VectorMaskToLongTest::testFromLongToLongByte @ bci:22 (line 183) 191 Bool === _ 190 [[ 192 ]] [ne] !jvms: VectorMask::fromLong @ bci:42 (line 243) VectorMaskToLongTest::testFromLongToLongByte @ bci:22 (line 183) 192 If === 176 191 [[ 193 194 ]] P=0.999999, C=-1.000000 !jvms: VectorMask::fromLong @ bci:42 (line 243) VectorMaskToLongTest::testFromLongToLongByte @ bci:22 (line 183) 193 IfFalse === 192 [[ 199 ]] #0 !jvms: VectorMask::fromLong @ bci:42 (line 243) VectorMaskToLongTest::testFromLongToLongByte @ bci:22 (line 183) 194 IfTrue === 192 [[ 299 279 ]] #1 !jvms: VectorMask::fromLong @ bci:42 (line 243) VectorMaskToLongTest::testFromLongToLongByte @ bci:22 (line 183) 198 ConI === 0 [[ 199 ]] #int:-12 199 CallStaticJava === 193 181 182 8 9 (198 54 1 1 1 1 1 1 1 189 ) [[ 200 ]] # Static uncommon_trap(reason='null_check' action='make_not_entrant' debug_id='0') void ( int ) C=0.000100 VectorMask::fromLong @ bci:42 (line 243) VectorMaskToLongTest::testFromLongToLongByte @ bci:22 (line 183) !jvms: VectorMask::fromLong @ bci:42 (line 243) VectorMaskToLongTest::testFromLongToLongByte @ bci:22 (line 183) 200 Proj === 199 [[ 203 ]] #0 !jvms: VectorMask::fromLong @ bci:42 (line 243) VectorMaskToLongTest::testFromLongToLongByte @ bci:22 (line 183) 203 Halt === 200 1 1 8 1 [[ 0 ]] !jvms: VectorMask::fromLong @ bci:42 (line 243) VectorMaskToLongTest::testFromLongToLongByte @ bci:22 (line 183) 222 CheckCastPP === 300 173 [[ 233 ]] #jdk/incubator/vector/VectorMask:NotNull * Oop:jdk/incubator/vector/VectorMask:NotNull * !jvms: VectorMask::fromLong @ bci:42 (line 243) VectorMaskToLongTest::testFromLongToLongByte @ bci:22 (line 183) 225 ConI === 0 [[ 226 ]] #int:-34 226 CallStaticJava === 301 181 182 8 9 (225 1 1 1 1 1 1 1 1 173 ) [[ 227 ]] # Static uncommon_trap(reason='class_check' action='maybe_recompile' debug_id='0') void ( int ) C=0.000100 VectorMask::fromLong @ bci:42 (line 243) VectorMaskToLongTest::testFromLongToLongByte @ bci:22 (line 183) !jvms: VectorMask::fromLong @ bci:42 (line 243) VectorMaskToLongTest::testFromLongToLongByte @ bci:22 (line 183) 227 Proj === 226 [[ 230 ]] #0 !jvms: VectorMask::fromLong @ bci:42 (line 243) VectorMaskToLongTest::testFromLongToLongByte @ bci:22 (line 183) 230 Halt === 227 1 1 8 1 [[ 0 ]] !jvms: VectorMask::fromLong @ bci:42 (line 243) VectorMaskToLongTest::testFromLongToLongByte @ bci:22 (line 183) 233 CallDynamicJava === 300 181 182 8 1 (222 54 1 1 1 ) [[ 234 246 247 238 ]] # Dynamic jdk.incubator.vector.VectorMask::toLong long/half ( jdk/incubator/vector/VectorMask:NotNull * ) VectorMaskToLongTest::testFromLongToLongByte @ bci:25 (line 183) !jvms: VectorMaskToLongTest::testFromLongToLongByte @ bci:25 (line 183) 234 Proj === 233 [[ 240 ]] #0 !jvms: VectorMaskToLongTest::testFromLongToLongByte @ bci:25 (line 183) 238 Proj === 233 [[ 255 ]] #5 !jvms: VectorMaskToLongTest::testFromLongToLongByte @ bci:25 (line 183) 240 Catch === 234 246 [[ 241 242 ]] !jvms: VectorMaskToLongTest::testFromLongToLongByte @ bci:25 (line 183) 241 CatchProj === 240 [[ 255 ]] #0@bci -1 !jvms: VectorMaskToLongTest::testFromLongToLongByte @ bci:25 (line 183) 242 CatchProj === 240 [[ 251 245 ]] #1@bci -1 !jvms: VectorMaskToLongTest::testFromLongToLongByte @ bci:25 (line 183) 245 CreateEx === 242 246 [[ 254 ]] #java/lang/Throwable (java/io/Serializable):NotNull * Oop:java/lang/Throwable (java/io/Serializable):NotNull * !jvms: VectorMaskToLongTest::testFromLongToLongByte @ bci:25 (line 183) 246 Proj === 233 [[ 255 252 240 245 ]] #1 !jvms: VectorMaskToLongTest::testFromLongToLongByte @ bci:25 (line 183) 247 Proj === 233 [[ 255 253 ]] #2 Memory: @BotPTR *+bot, idx=Bot; !jvms: VectorMaskToLongTest::testFromLongToLongByte @ bci:25 (line 183) 251 Region === 251 177 242 263 [[ 251 252 253 254 270 ]] !jvms: VectorMaskToLongTest::testFromLongToLongByte @ bci:25 (line 183) 252 Phi === 251 181 246 257 [[ 270 ]] #abIO !jvms: VectorMaskToLongTest::testFromLongToLongByte @ bci:25 (line 183) 253 Phi === 251 182 247 258 [[ 270 ]] #memory Memory: @BotPTR *+bot, idx=Bot; !jvms: VectorMaskToLongTest::testFromLongToLongByte @ bci:25 (line 183) 254 Phi === 251 180 245 266 [[ 270 ]] #java/lang/Throwable (java/io/Serializable):NotNull * Oop:java/lang/Throwable (java/io/Serializable):NotNull * !jvms: VectorMaskToLongTest::testFromLongToLongByte @ bci:25 (line 183) 255 CallStaticJava === 241 246 247 8 1 (23 54 1 238 1 1 1 1 1 ) [[ 256 257 258 ]] # Static compiler.vectorapi.VectorMaskToLongTest::verifyMaskToLong void ( java/lang/Object *, long, half, long, half ) VectorMaskToLongTest::testFromLongToLongByte @ bci:34 (line 184) !jvms: VectorMaskToLongTest::testFromLongToLongByte @ bci:34 (line 184) 256 Proj === 255 [[ 261 ]] #0 !jvms: VectorMaskToLongTest::testFromLongToLongByte @ bci:34 (line 184) 257 Proj === 255 [[ 269 261 252 266 ]] #1 !jvms: VectorMaskToLongTest::testFromLongToLongByte @ bci:34 (line 184) 258 Proj === 255 [[ 269 253 ]] #2 Memory: @BotPTR *+bot, idx=Bot; !jvms: VectorMaskToLongTest::testFromLongToLongByte @ bci:34 (line 184) 261 Catch === 256 257 [[ 262 263 ]] !jvms: VectorMaskToLongTest::testFromLongToLongByte @ bci:34 (line 184) 262 CatchProj === 261 [[ 269 ]] #0@bci -1 !jvms: VectorMaskToLongTest::testFromLongToLongByte @ bci:34 (line 184) 263 CatchProj === 261 [[ 251 266 ]] #1@bci -1 !jvms: VectorMaskToLongTest::testFromLongToLongByte @ bci:34 (line 184) 266 CreateEx === 263 257 [[ 254 ]] #java/lang/Throwable (java/io/Serializable):NotNull * Oop:java/lang/Throwable (java/io/Serializable):NotNull * !jvms: VectorMaskToLongTest::testFromLongToLongByte @ bci:34 (line 184) 269 Return === 262 257 258 8 9 [[ 0 ]] 270 Rethrow === 251 252 253 8 9 exception 254 [[ 0 ]] 277 ConL === 0 [[ 278 ]] #long:8 278 AddP === _ 173 173 277 [[ 279 ]] Oop:jdk/internal/vm/vector/VectorSupport$VectorPayload+8 * [narrowklass] !jvms: VectorMask::fromLong @ bci:39 (line 243) VectorMaskToLongTest::testFromLongToLongByte @ bci:22 (line 183) 279 LoadNKlass === 194 7 278 [[ 280 ]] @java/lang/Object+8 * [narrowklass], idx=5; #narrowklass: jdk/internal/vm/vector/VectorSupport$VectorPayload: 0x000000014800e0e8 * !jvms: VectorMask::fromLong @ bci:39 (line 243) VectorMaskToLongTest::testFromLongToLongByte @ bci:22 (line 183) 280 DecodeNKlass === _ 279 [[ 285 285 ]] #jdk/internal/vm/vector/VectorSupport$VectorPayload: 0x000000014800e0e8 * Klass:jdk/internal/vm/vector/VectorSupport$VectorPayload: 0x000000014800e0e8 * !jvms: VectorMask::fromLong @ bci:39 (line 243) VectorMaskToLongTest::testFromLongToLongByte @ bci:22 (line 183) 285 AddP === _ 280 280 295 [[ 286 ]] Klass:jdk/internal/vm/vector/VectorSupport$VectorPayload: 0x000000014800e0e8+80 * !jvms: VectorMask::fromLong @ bci:39 (line 243) VectorMaskToLongTest::testFromLongToLongByte @ bci:22 (line 183) 286 LoadKlass === _ 7 285 [[ 296 ]] @java/lang/Object: 0x000000014800a050+any *, idx=6; # * Klass: * !jvms: VectorMask::fromLong @ bci:39 (line 243) VectorMaskToLongTest::testFromLongToLongByte @ bci:22 (line 183) 295 ConL === 0 [[ 285 ]] #long:80 296 CmpP === _ 286 186 [[ 298 ]] !orig=[289] !jvms: VectorMask::fromLong @ bci:39 (line 243) VectorMaskToLongTest::testFromLongToLongByte @ bci:22 (line 183) 298 Bool === _ 296 [[ 299 ]] [ne] !jvms: VectorMask::fromLong @ bci:39 (line 243) VectorMaskToLongTest::testFromLongToLongByte @ bci:22 (line 183) 299 If === 194 298 [[ 300 301 ]] P=0.170000, C=-1.000000 !orig=[291] !jvms: VectorMask::fromLong @ bci:39 (line 243) VectorMaskToLongTest::testFromLongToLongByte @ bci:22 (line 183) 300 IfFalse === 299 [[ 222 233 ]] #0 !orig=[292],[273],[220] !jvms: VectorMask::fromLong @ bci:39 (line 243) VectorMaskToLongTest::testFromLongToLongByte @ bci:22 (line 183) 301 IfTrue === 299 [[ 226 ]] #1 !orig=[293],[274],[221] !jvms: VectorMask::fromLong @ bci:39 (line 243) VectorMaskToLongTest::testFromLongToLongByte @ bci:22 (line 183)
  1. Compilation of "public static void compiler.vectorapi.VectorMaskToLongTest.testFromLongToLongDouble()":

Phase "PrintIdeal":
AFTER: print_ideal
0 Root === 0 203 230 269 270 [[ 0 1 3 225 198 189 23 186 167 28 44 124 104 54 277 295 ]] inner
1 Con === 0 [[ ]] #top
3 Start === 3 0 [[ 3 5 6 7 8 9 ]] #{0:control, 1:abIO, 2:memory, 3:rawptr:BotPTR, 4:return_address}
5 Parm === 3 [[ 168 ]] Control !jvms: VectorMaskToLongTest::testFromLongToLongDouble @ bci:-1 (line 252)
6 Parm === 3 [[ 168 ]] I_O !jvms: VectorMaskToLongTest::testFromLongToLongDouble @ bci:-1 (line 252)
7 Parm === 3 [[ 168 279 286 ]] Memory Memory: @BotPTR *+bot, idx=Bot; !jvms: VectorMaskToLongTest::testFromLongToLongDouble @ bci:-1 (line 252)
8 Parm === 3 [[ 270 269 255 233 230 199 203 168 226 ]] FramePtr !jvms: VectorMaskToLongTest::testFromLongToLongDouble @ bci:-1 (line 252)
9 Parm === 3 [[ 270 269 199 226 ]] ReturnAdr !jvms: VectorMaskToLongTest::testFromLongToLongDouble @ bci:-1 (line 252)
23 ConP === 0 [[ 255 168 ]] #jdk/incubator/vector/DoubleVector$DoubleSpecies (jdk/incubator/vector/VectorSpecies):exact * Oop:jdk/incubator/vector/DoubleVector$DoubleSpecies (jdk/incubator/vector/VectorSpecies):exact *
28 ConI === 0 [[ 168 ]] #int:1
44 ConI === 0 [[ 168 ]] #int:2
54 ConL === 0 [[ 255 233 168 168 199 ]] #long:2
104 ConP === 0 [[ 168 ]] #java/lang/Class (java/io/Serializable,java/lang/constant/Constable,java/lang/reflect/AnnotatedElement,java/lang/invoke/TypeDescriptor,java/lang/reflect/GenericDeclaration,java/lang/reflect/Type,java/lang/invoke/TypeDescriptor$OfField):exact * Oop:java/lang/Class (java/io/Serializable,java/lang/constant/Constable,java/lang/reflect/AnnotatedElement,java/lang/invoke/TypeDescriptor,java/lang/reflect/GenericDeclaration,java/lang/reflect/Type,java/lang/invoke/TypeDescriptor$OfField):exact *
124 ConP === 0 [[ 168 ]] #java/lang/Class (java/io/Serializable,java/lang/constant/Constable,java/lang/reflect/AnnotatedElement,java/lang/invoke/TypeDescriptor,java/lang/reflect/GenericDeclaration,java/lang/reflect/Type,java/lang/invoke/TypeDescriptor$OfField):exact * Oop:java/lang/Class (java/io/Serializable,java/lang/constant/Constable,java/lang/reflect/AnnotatedElement,java/lang/invoke/TypeDescriptor,java/lang/reflect/GenericDeclaration,java/lang/reflect/Type,java/lang/invoke/TypeDescriptor$OfField):exact *
167 ConP === 0 [[ 168 ]] #jdk/incubator/vector/VectorMask$$Lambda+0x0000060001060748 (jdk/internal/vm/vector/VectorSupport$FromBitsCoercedOperation):exact * Oop:jdk/incubator/vector/VectorMask$$Lambda+0x0000060001060748 (jdk/internal/vm/vector/VectorSupport$FromBitsCoercedOperation):exact *
168 CallStaticJava === 5 6 7 8 1 (104 124 44 54 1 28 23 167 54 1 1 1 1 1 1 1 ) [[ 169 181 182 173 ]] # Static jdk.internal.vm.vector.VectorSupport::fromBitsCoerced jdk/internal/vm/vector/VectorSupport$VectorPayload * ( java/lang/Class (java/io/Serializable,java/lang/constant/Constable,java/lang/reflect/AnnotatedElement,java/lang/invoke/TypeDescriptor,java/lang/reflect/GenericDeclaration,java/lang/reflect/Type,java/lang/invoke/TypeDescriptor$OfField):exact *, java/lang/Class (java/io/Serializable,java/lang/constant/Constable,java/lang/reflect/AnnotatedElement,java/lang/invoke/TypeDescriptor,java/lang/reflect/GenericDeclaration,java/lang/reflect/Type,java/lang/invoke/TypeDescriptor$OfField):exact *, int, long, half, int, jdk/internal/vm/vector/VectorSupport$VectorSpecies *, java/lang/Object * ) VectorMask::fromLong @ bci:39 (line 243) VectorMaskToLongTest::testFromLongToLongDouble @ bci:22 (line 253) !jvms: VectorMask::fromLong @ bci:39 (line 243) VectorMaskToLongTest::testFromLongToLongDouble @ bci:22 (line 253)
169 Proj === 168 [[ 175 ]] #0 !jvms: VectorMask::fromLong @ bci:39 (line 243) VectorMaskToLongTest::testFromLongToLongDouble @ bci:22 (line 253)
173 Proj === 168 [[ 226 190 278 278 222 ]] #5 Oop:jdk/internal/vm/vector/VectorSupport$VectorPayload * !jvms: VectorMask::fromLong @ bci:39 (line 243) VectorMaskToLongTest::testFromLongToLongDouble @ bci:22 (line 253)
175 Catch === 169 181 [[ 176 177 ]] !jvms: VectorMask::fromLong @ bci:39 (line 243) VectorMaskToLongTest::testFromLongToLongDouble @ bci:22 (line 253)
176 CatchProj === 175 [[ 192 ]] #0@bci -1 !jvms: VectorMask::fromLong @ bci:39 (line 243) VectorMaskToLongTest::testFromLongToLongDouble @ bci:22 (line 253)
177 CatchProj === 175 [[ 251 180 ]] #1@bci -1 !jvms: VectorMask::fromLong @ bci:39 (line 243) VectorMaskToLongTest::testFromLongToLongDouble @ bci:22 (line 253)
180 CreateEx === 177 181 [[ 254 ]] #java/lang/Throwable (java/io/Serializable):NotNull * Oop:java/lang/Throwable (java/io/Serializable):NotNull * !jvms: VectorMask::fromLong @ bci:39 (line 243) VectorMaskToLongTest::testFromLongToLongDouble @ bci:22 (line 253)
181 Proj === 168 [[ 233 199 226 252 175 180 ]] #1 !jvms: VectorMask::fromLong @ bci:39 (line 243) VectorMaskToLongTest::testFromLongToLongDouble @ bci:22 (line 253)
182 Proj === 168 [[ 233 226 199 253 ]] #2 Memory: @BotPTR *+bot, idx=Bot; !jvms: VectorMask::fromLong @ bci:39 (line 243) VectorMaskToLongTest::testFromLongToLongDouble @ bci:22 (line 253)
186 ConP === 0 [[ 296 ]] #precise jdk/incubator/vector/VectorMask: 0x00000001484db080:Constant:exact * Klass:precise jdk/incubator/vector/VectorMask: 0x00000001484db080:Constant:exact *
189 ConP === 0 [[ 190 199 ]] #null
190 CmpP === _ 173 189 [[ 191 ]] !jvms: VectorMask::fromLong @ bci:42 (line 243) VectorMaskToLongTest::testFromLongToLongDouble @ bci:22 (line 253)
191 Bool === _ 190 [[ 192 ]] [ne] !jvms: VectorMask::fromLong @ bci:42 (line 243) VectorMaskToLongTest::testFromLongToLongDouble @ bci:22 (line 253)
192 If === 176 191 [[ 193 194 ]] P=0.999999, C=-1.000000 !jvms: VectorMask::fromLong @ bci:42 (line 243) VectorMaskToLongTest::testFromLongToLongDouble @ bci:22 (line 253)
193 IfFalse === 192 [[ 199 ]] #0 !jvms: VectorMask::fromLong @ bci:42 (line 243) VectorMaskToLongTest::testFromLongToLongDouble @ bci:22 (line 253)
194 IfTrue === 192 [[ 299 279 ]] #1 !jvms: VectorMask::fromLong @ bci:42 (line 243) VectorMaskToLongTest::testFromLongToLongDouble @ bci:22 (line 253)
198 ConI === 0 [[ 199 ]] #int:-12
199 CallStaticJava === 193 181 182 8 9 (198 54 1 1 1 1 1 1 1 189 ) [[ 200 ]] # Static uncommon_trap(reason='null_check' action='make_not_entrant' debug_id='0') void ( int ) C=0.000100 VectorMask::fromLong @ bci:42 (line 243) VectorMaskToLongTest::testFromLongToLongDouble @ bci:22 (line 253) !jvms: VectorMask::fromLong @ bci:42 (line 243) VectorMaskToLongTest::testFromLongToLongDouble @ bci:22 (line 253)
200 Proj === 199 [[ 203 ]] #0 !jvms: VectorMask::fromLong @ bci:42 (line 243) VectorMaskToLongTest::testFromLongToLongDouble @ bci:22 (line 253)
203 Halt === 200 1 1 8 1 [[ 0 ]] !jvms: VectorMask::fromLong @ bci:42 (line 243) VectorMaskToLongTest::testFromLongToLongDouble @ bci:22 (line 253)
222 CheckCastPP === 300 173 [[ 233 ]] #jdk/incubator/vector/VectorMask:NotNull * Oop:jdk/incubator/vector/VectorMask:NotNull * !jvms: VectorMask::fromLong @ bci:42 (line 243) VectorMaskToLongTest::testFromLongToLongDouble @ bci:22 (line 253)
225 ConI === 0 [[ 226 ]] #int:-34
226 CallStaticJava === 301 181 182 8 9 (225 1 1 1 1 1 1 1 1 173 ) [[ 227 ]] # Static uncommon_trap(reason='class_check' action='maybe_recompile' debug_id='0') void ( int ) C=0.000100 VectorMask::fromLong @ bci:42 (line 243) VectorMaskToLongTest::testFromLongToLongDouble @ bci:22 (line 253) !jvms: VectorMask::fromLong @ bci:42 (line 243) VectorMaskToLongTest::testFromLongToLongDouble @ bci:22 (line 253)
227 Proj === 226 [[ 230 ]] #0 !jvms: VectorMask::fromLong @ bci:42 (line 243) VectorMaskToLongTest::testFromLongToLongDouble @ bci:22 (line 253)
230 Halt === 227 1 1 8 1 [[ 0 ]] !jvms: VectorMask::fromLong @ bci:42 (line 243) VectorMaskToLongTest::testFromLongToLongDouble @ bci:22 (line 253)
233 CallDynamicJava === 300 181 182 8 1 (222 54 1 1 1 ) [[ 234 246 247 238 ]] # Dynamic jdk.incubator.vector.VectorMask::toLong long/half ( jdk/incubator/vector/VectorMask:NotNull * ) VectorMaskToLongTest::testFromLongToLongDouble @ bci:25 (line 253) !jvms: VectorMaskToLongTest::testFromLongToLongDouble @ bci:25 (line 253)
234 Proj === 233 [[ 240 ]] #0 !jvms: VectorMaskToLongTest::testFromLongToLongDouble @ bci:25 (line 253)
238 Proj === 233 [[ 255 ]] #5 !jvms: VectorMaskToLongTest::testFromLongToLongDouble @ bci:25 (line 253)
240 Catch === 234 246 [[ 241 242 ]] !jvms: VectorMaskToLongTest::testFromLongToLongDouble @ bci:25 (line 253)
241 CatchProj === 240 [[ 255 ]] #0@bci -1 !jvms: VectorMaskToLongTest::testFromLongToLongDouble @ bci:25 (line 253)
242 CatchProj === 240 [[ 251 245 ]] #1@bci -1 !jvms: VectorMaskToLongTest::testFromLongToLongDouble @ bci:25 (line 253)
245 CreateEx === 242 246 [[ 254 ]] #java/lang/Throwable (java/io/Serializable):NotNull * Oop:java/lang/Throwable (java/io/Serializable):NotNull * !jvms: VectorMaskToLongTest::testFromLongToLongDouble @ bci:25 (line 253)
246 Proj === 233 [[ 255 252 240 245 ]] #1 !jvms: VectorMaskToLongTest::testFromLongToLongDouble @ bci:25 (line 253)
247 Proj === 233 [[ 255 253 ]] #2 Memory: @BotPTR *+bot, idx=Bot; !jvms: VectorMaskToLongTest::testFromLongToLongDouble @ bci:25 (line 253)
251 Region === 251 177 242 263 [[ 251 252 253 254 270 ]] !jvms: VectorMaskToLongTest::testFromLongToLongDouble @ bci:25 (line 253)
252 Phi === 251 181 246 257 [[ 270 ]] #abIO !jvms: VectorMaskToLongTest::testFromLongToLongDouble @ bci:25 (line 253)
253 Phi === 251 182 247 258 [[ 270 ]] #memory Memory: @BotPTR *+bot, idx=Bot; !jvms: VectorMaskToLongTest::testFromLongToLongDouble @ bci:25 (line 253)
254 Phi === 251 180 245 266 [[ 270 ]] #java/lang/Throwable (java/io/Serializable):NotNull * Oop:java/lang/Throwable (java/io/Serializable):NotNull * !jvms: VectorMaskToLongTest::testFromLongToLongDouble @ bci:25 (line 253)
255 CallStaticJava === 241 246 247 8 1 (23 54 1 238 1 1 1 1 1 ) [[ 256 257 258 ]] # Static compiler.vectorapi.VectorMaskToLongTest::verifyMaskToLong void ( java/lang/Object *, long, half, long, half ) VectorMaskToLongTest::testFromLongToLongDouble @ bci:34 (line 254) !jvms: VectorMaskToLongTest::testFromLongToLongDouble @ bci:34 (line 254)
256 Proj === 255 [[ 261 ]] #0 !jvms: VectorMaskToLongTest::testFromLongToLongDouble @ bci:34 (line 254)
257 Proj === 255 [[ 269 261 252 266 ]] #1 !jvms: VectorMaskToLongTest::testFromLongToLongDouble @ bci:34 (line 254)
258 Proj === 255 [[ 269 253 ]] #2 Memory: @BotPTR *+bot, idx=Bot; !jvms: VectorMaskToLongTest::testFromLongToLongDouble @ bci:34 (line 254)
261 Catch === 256 257 [[ 262 263 ]] !jvms: VectorMaskToLongTest::testFromLongToLongDouble @ bci:34 (line 254)
262 CatchProj === 261 [[ 269 ]] #0@bci -1 !jvms: VectorMaskToLongTest::testFromLongToLongDouble @ bci:34 (line 254)
263 CatchProj === 261 [[ 251 266 ]] #1@bci -1 !jvms: VectorMaskToLongTest::testFromLongToLongDouble @ bci:34 (line 254)
266 CreateEx === 263 257 [[ 254 ]] #java/lang/Throwable (java/io/Serializable):NotNull * Oop:java/lang/Throwable (java/io/Serializable):NotNull * !jvms: VectorMaskToLongTest::testFromLongToLongDouble @ bci:34 (line 254)
269 Return === 262 257 258 8 9 [[ 0 ]]
270 Rethrow === 251 252 253 8 9 exception 254 [[ 0 ]]
277 ConL === 0 [[ 278 ]] #long:8
278 AddP === _ 173 173 277 [[ 279 ]] Oop:jdk/internal/vm/vector/VectorSupport$VectorPayload+8 * [narrowklass] !jvms: VectorMask::fromLong @ bci:39 (line 243) VectorMaskToLongTest::testFromLongToLongDouble @ bci:22 (line 253)
279 LoadNKlass === 194 7 278 [[ 280 ]] @java/lang/Object+8 * [narrowklass], idx=5; #narrowklass: jdk/internal/vm/vector/VectorSupport$VectorPayload: 0x000000014800e0e8 * !jvms: VectorMask::fromLong @ bci:39 (line 243) VectorMaskToLongTest::testFromLongToLongDouble @ bci:22 (line 253)
280 DecodeNKlass === _ 279 [[ 285 285 ]] #jdk/internal/vm/vector/VectorSupport$VectorPayload: 0x000000014800e0e8 * Klass:jdk/internal/vm/vector/VectorSupport$VectorPayload: 0x000000014800e0e8 * !jvms: VectorMask::fromLong @ bci:39 (line 243) VectorMaskToLongTest::testFromLongToLongDouble @ bci:22 (line 253)
285 AddP === _ 280 280 295 [[ 286 ]] Klass:jdk/internal/vm/vector/VectorSupport$VectorPayload: 0x000000014800e0e8+80 * !jvms: VectorMask::fromLong @ bci:39 (line 243) VectorMaskToLongTest::testFromLongToLongDouble @ bci:22 (line 253)
286 LoadKlass === _ 7 285 [[ 296 ]] @java/lang/Object: 0x000000014800a050+any *, idx=6; # * Klass: * !jvms: VectorMask::fromLong @ bci:39 (line 243) VectorMaskToLongTest::testFromLongToLongDouble @ bci:22 (line 253)
295 ConL === 0 [[ 285 ]] #long:80
296 CmpP === _ 286 186 [[ 298 ]] !orig=[289] !jvms: VectorMask::fromLong @ bci:39 (line 243) VectorMaskToLongTest::testFromLongToLongDouble @ bci:22 (line 253)
298 Bool === _ 296 [[ 299 ]] [ne] !jvms: VectorMask::fromLong @ bci:39 (line 243) VectorMaskToLongTest::testFromLongToLongDouble @ bci:22 (line 253)
299 If === 194 298 [[ 300 301 ]] P=0.170000, C=-1.000000 !orig=[291] !jvms: VectorMask::fromLong @ bci:39 (line 243) VectorMaskToLongTest::testFromLongToLongDouble @ bci:22 (line 253)
300 IfFalse === 299 [[ 222 233 ]] #0 !orig=[292],[273],[220] !jvms: VectorMask::fromLong @ bci:39 (line 243) VectorMaskToLongTest::testFromLongToLongDouble @ bci:22 (line 253)
301 IfTrue === 299 [[ 226 ]] #1 !orig=[293],[274],[221] !jvms: VectorMask::fromLong @ bci:39 (line 243) VectorMaskToLongTest::testFromLongToLongDouble @ bci:22 (line 253)

  1. Compilation of "public static void compiler.vectorapi.VectorMaskToLongTest.testFromLongToLongInt()":

Phase "PrintIdeal":
AFTER: print_ideal
0 Root === 0 203 230 269 270 [[ 0 1 3 225 198 189 23 186 167 28 44 124 104 54 277 295 ]] inner
1 Con === 0 [[ ]] #top
3 Start === 3 0 [[ 3 5 6 7 8 9 ]] #{0:control, 1:abIO, 2:memory, 3:rawptr:BotPTR, 4:return_address}
5 Parm === 3 [[ 168 ]] Control !jvms: VectorMaskToLongTest::testFromLongToLongInt @ bci:-1 (line 210)
6 Parm === 3 [[ 168 ]] I_O !jvms: VectorMaskToLongTest::testFromLongToLongInt @ bci:-1 (line 210)
7 Parm === 3 [[ 168 279 286 ]] Memory Memory: @BotPTR *+bot, idx=Bot; !jvms: VectorMaskToLongTest::testFromLongToLongInt @ bci:-1 (line 210)
8 Parm === 3 [[ 270 269 255 233 230 199 203 168 226 ]] FramePtr !jvms: VectorMaskToLongTest::testFromLongToLongInt @ bci:-1 (line 210)
9 Parm === 3 [[ 270 269 199 226 ]] ReturnAdr !jvms: VectorMaskToLongTest::testFromLongToLongInt @ bci:-1 (line 210)
23 ConP === 0 [[ 255 168 ]] #jdk/incubator/vector/IntVector$IntSpecies (jdk/incubator/vector/VectorSpecies):exact * Oop:jdk/incubator/vector/IntVector$IntSpecies (jdk/incubator/vector/VectorSpecies):exact *
28 ConI === 0 [[ 168 ]] #int:1
44 ConI === 0 [[ 168 ]] #int:4
54 ConL === 0 [[ 255 233 168 168 199 ]] #long:14
104 ConP === 0 [[ 168 ]] #java/lang/Class (java/io/Serializable,java/lang/constant/Constable,java/lang/reflect/AnnotatedElement,java/lang/invoke/TypeDescriptor,java/lang/reflect/GenericDeclaration,java/lang/reflect/Type,java/lang/invoke/TypeDescriptor$OfField):exact * Oop:java/lang/Class (java/io/Serializable,java/lang/constant/Constable,java/lang/reflect/AnnotatedElement,java/lang/invoke/TypeDescriptor,java/lang/reflect/GenericDeclaration,java/lang/reflect/Type,java/lang/invoke/TypeDescriptor$OfField):exact *
124 ConP === 0 [[ 168 ]] #java/lang/Class (java/io/Serializable,java/lang/constant/Constable,java/lang/reflect/AnnotatedElement,java/lang/invoke/TypeDescriptor,java/lang/reflect/GenericDeclaration,java/lang/reflect/Type,java/lang/invoke/TypeDescriptor$OfField):exact * Oop:java/lang/Class (java/io/Serializable,java/lang/constant/Constable,java/lang/reflect/AnnotatedElement,java/lang/invoke/TypeDescriptor,java/lang/reflect/GenericDeclaration,java/lang/reflect/Type,java/lang/invoke/TypeDescriptor$OfField):exact *
167 ConP === 0 [[ 168 ]] #jdk/incubator/vector/VectorMask$$Lambda+0x0000060001060748 (jdk/internal/vm/vector/VectorSupport$FromBitsCoercedOperation):exact * Oop:jdk/incubator/vector/VectorMask$$Lambda+0x0000060001060748 (jdk/internal/vm/vector/VectorSupport$FromBitsCoercedOperation):exact *
168 CallStaticJava === 5 6 7 8 1 (104 124 44 54 1 28 23 167 54 1 1 1 1 1 1 1 ) [[ 169 181 182 173 ]] # Static jdk.internal.vm.vector.VectorSupport::fromBitsCoerced jdk/internal/vm/vector/VectorSupport$VectorPayload * ( java/lang/Class (java/io/Serializable,java/lang/constant/Constable,java/lang/reflect/AnnotatedElement,java/lang/invoke/TypeDescriptor,java/lang/reflect/GenericDeclaration,java/lang/reflect/Type,java/lang/invoke/TypeDescriptor$OfField):exact *, java/lang/Class (java/io/Serializable,java/lang/constant/Constable,java/lang/reflect/AnnotatedElement,java/lang/invoke/TypeDescriptor,java/lang/reflect/GenericDeclaration,java/lang/reflect/Type,java/lang/invoke/TypeDescriptor$OfField):exact *, int, long, half, int, jdk/internal/vm/vector/VectorSupport$VectorSpecies *, java/lang/Object * ) VectorMask::fromLong @ bci:39 (line 243) VectorMaskToLongTest::testFromLongToLongInt @ bci:22 (line 211) !jvms: VectorMask::fromLong @ bci:39 (line 243) VectorMaskToLongTest::testFromLongToLongInt @ bci:22 (line 211)
169 Proj === 168 [[ 175 ]] #0 !jvms: VectorMask::fromLong @ bci:39 (line 243) VectorMaskToLongTest::testFromLongToLongInt @ bci:22 (line 211)
173 Proj === 168 [[ 226 190 278 278 222 ]] #5 Oop:jdk/internal/vm/vector/VectorSupport$VectorPayload * !jvms: VectorMask::fromLong @ bci:39 (line 243) VectorMaskToLongTest::testFromLongToLongInt @ bci:22 (line 211)
175 Catch === 169 181 [[ 176 177 ]] !jvms: VectorMask::fromLong @ bci:39 (line 243) VectorMaskToLongTest::testFromLongToLongInt @ bci:22 (line 211)
176 CatchProj === 175 [[ 192 ]] #0@bci -1 !jvms: VectorMask::fromLong @ bci:39 (line 243) VectorMaskToLongTest::testFromLongToLongInt @ bci:22 (line 211)
177 CatchProj === 175 [[ 251 180 ]] #1@bci -1 !jvms: VectorMask::fromLong @ bci:39 (line 243) VectorMaskToLongTest::testFromLongToLongInt @ bci:22 (line 211)
180 CreateEx === 177 181 [[ 254 ]] #java/lang/Throwable (java/io/Serializable):NotNull * Oop:java/lang/Throwable (java/io/Serializable):NotNull * !jvms: VectorMask::fromLong @ bci:39 (line 243) VectorMaskToLongTest::testFromLongToLongInt @ bci:22 (line 211)
181 Proj === 168 [[ 233 199 226 252 175 180 ]] #1 !jvms: VectorMask::fromLong @ bci:39 (line 243) VectorMaskToLongTest::testFromLongToLongInt @ bci:22 (line 211)
182 Proj === 168 [[ 233 226 199 253 ]] #2 Memory: @BotPTR *+bot, idx=Bot; !jvms: VectorMask::fromLong @ bci:39 (line 243) VectorMaskToLongTest::testFromLongToLongInt @ bci:22 (line 211)
186 ConP === 0 [[ 296 ]] #precise jdk/incubator/vector/VectorMask: 0x000000015829b080:Constant:exact * Klass:precise jdk/incubator/vector/VectorMask: 0x000000015829b080:Constant:exact *
189 ConP === 0 [[ 190 199 ]] #null
190 CmpP === _ 173 189 [[ 191 ]] !jvms: VectorMask::fromLong @ bci:42 (line 243) VectorMaskToLongTest::testFromLongToLongInt @ bci:22 (line 211)
191 Bool === _ 190 [[ 192 ]] [ne] !jvms: VectorMask::fromLong @ bci:42 (line 243) VectorMaskToLongTest::testFromLongToLongInt @ bci:22 (line 211)
192 If === 176 191 [[ 193 194 ]] P=0.999999, C=-1.000000 !jvms: VectorMask::fromLong @ bci:42 (line 243) VectorMaskToLongTest::testFromLongToLongInt @ bci:22 (line 211)
193 IfFalse === 192 [[ 199 ]] #0 !jvms: VectorMask::fromLong @ bci:42 (line 243) VectorMaskToLongTest::testFromLongToLongInt @ bci:22 (line 211)
194 IfTrue === 192 [[ 299 279 ]] #1 !jvms: VectorMask::fromLong @ bci:42 (line 243) VectorMaskToLongTest::testFromLongToLongInt @ bci:22 (line 211)
198 ConI === 0 [[ 199 ]] #int:-12
199 CallStaticJava === 193 181 182 8 9 (198 54 1 1 1 1 1 1 1 189 ) [[ 200 ]] # Static uncommon_trap(reason='null_check' action='make_not_entrant' debug_id='0') void ( int ) C=0.000100 VectorMask::fromLong @ bci:42 (line 243) VectorMaskToLongTest::testFromLongToLongInt @ bci:22 (line 211) !jvms: VectorMask::fromLong @ bci:42 (line 243) VectorMaskToLongTest::testFromLongToLongInt @ bci:22 (line 211)
200 Proj === 199 [[ 203 ]] #0 !jvms: VectorMask::fromLong @ bci:42 (line 243) VectorMaskToLongTest::testFromLongToLongInt @ bci:22 (line 211)
203 Halt === 200 1 1 8 1 [[ 0 ]] !jvms: VectorMask::fromLong @ bci:42 (line 243) VectorMaskToLongTest::testFromLongToLongInt @ bci:22 (line 211)
222 CheckCastPP === 300 173 [[ 233 ]] #jdk/incubator/vector/VectorMask:NotNull * Oop:jdk/incubator/vector/VectorMask:NotNull * !jvms: VectorMask::fromLong @ bci:42 (line 243) VectorMaskToLongTest::testFromLongToLongInt @ bci:22 (line 211)
225 ConI === 0 [[ 226 ]] #int:-34
226 CallStaticJava === 301 181 182 8 9 (225 1 1 1 1 1 1 1 1 173 ) [[ 227 ]] # Static uncommon_trap(reason='class_check' action='maybe_recompile' debug_id='0') void ( int ) C=0.000100 VectorMask::fromLong @ bci:42 (line 243) VectorMaskToLongTest::testFromLongToLongInt @ bci:22 (line 211) !jvms: VectorMask::fromLong @ bci:42 (line 243) VectorMaskToLongTest::testFromLongToLongInt @ bci:22 (line 211)
227 Proj === 226 [[ 230 ]] #0 !jvms: VectorMask::fromLong @ bci:42 (line 243) VectorMaskToLongTest::testFromLongToLongInt @ bci:22 (line 211)
230 Halt === 227 1 1 8 1 [[ 0 ]] !jvms: VectorMask::fromLong @ bci:42 (line 243) VectorMaskToLongTest::testFromLongToLongInt @ bci:22 (line 211)
233 CallDynamicJava === 300 181 182 8 1 (222 54 1 1 1 ) [[ 234 246 247 238 ]] # Dynamic jdk.incubator.vector.VectorMask::toLong long/half ( jdk/incubator/vector/VectorMask:NotNull * ) VectorMaskToLongTest::testFromLongToLongInt @ bci:25 (line 211) !jvms: VectorMaskToLongTest::testFromLongToLongInt @ bci:25 (line 211)
234 Proj === 233 [[ 240 ]] #0 !jvms: VectorMaskToLongTest::testFromLongToLongInt @ bci:25 (line 211)
238 Proj === 233 [[ 255 ]] #5 !jvms: VectorMaskToLongTest::testFromLongToLongInt @ bci:25 (line 211)
240 Catch === 234 246 [[ 241 242 ]] !jvms: VectorMaskToLongTest::testFromLongToLongInt @ bci:25 (line 211)
241 CatchProj === 240 [[ 255 ]] #0@bci -1 !jvms: VectorMaskToLongTest::testFromLongToLongInt @ bci:25 (line 211)
242 CatchProj === 240 [[ 251 245 ]] #1@bci -1 !jvms: VectorMaskToLongTest::testFromLongToLongInt @ bci:25 (line 211)
245 CreateEx === 242 246 [[ 254 ]] #java/lang/Throwable (java/io/Serializable):NotNull * Oop:java/lang/Throwable (java/io/Serializable):NotNull * !jvms: VectorMaskToLongTest::testFromLongToLongInt @ bci:25 (line 211)
246 Proj === 233 [[ 255 252 240 245 ]] #1 !jvms: VectorMaskToLongTest::testFromLongToLongInt @ bci:25 (line 211)
247 Proj === 233 [[ 255 253 ]] #2 Memory: @BotPTR *+bot, idx=Bot; !jvms: VectorMaskToLongTest::testFromLongToLongInt @ bci:25 (line 211)
251 Region === 251 177 242 263 [[ 251 252 253 254 270 ]] !jvms: VectorMaskToLongTest::testFromLongToLongInt @ bci:25 (line 211)
252 Phi === 251 181 246 257 [[ 270 ]] #abIO !jvms: VectorMaskToLongTest::testFromLongToLongInt @ bci:25 (line 211)
253 Phi === 251 182 247 258 [[ 270 ]] #memory Memory: @BotPTR *+bot, idx=Bot; !jvms: VectorMaskToLongTest::testFromLongToLongInt @ bci:25 (line 211)
254 Phi === 251 180 245 266 [[ 270 ]] #java/lang/Throwable (java/io/Serializable):NotNull * Oop:java/lang/Throwable (java/io/Serializable):NotNull * !jvms: VectorMaskToLongTest::testFromLongToLongInt @ bci:25 (line 211)
255 CallStaticJava === 241 246 247 8 1 (23 54 1 238 1 1 1 1 1 ) [[ 256 257 258 ]] # Static compiler.vectorapi.VectorMaskToLongTest::verifyMaskToLong void ( java/lang/Object *, long, half, long, half ) VectorMaskToLongTest::testFromLongToLongInt @ bci:34 (line 212) !jvms: VectorMaskToLongTest::testFromLongToLongInt @ bci:34 (line 212)
256 Proj === 255 [[ 261 ]] #0 !jvms: VectorMaskToLongTest::testFromLongToLongInt @ bci:34 (line 212)
257 Proj === 255 [[ 269 261 252 266 ]] #1 !jvms: VectorMaskToLongTest::testFromLongToLongInt @ bci:34 (line 212)
258 Proj === 255 [[ 269 253 ]] #2 Memory: @BotPTR *+bot, idx=Bot; !jvms: VectorMaskToLongTest::testFromLongToLongInt @ bci:34 (line 212)
261 Catch === 256 257 [[ 262 263 ]] !jvms: VectorMaskToLongTest::testFromLongToLongInt @ bci:34 (line 212)
262 CatchProj === 261 [[ 269 ]] #0@bci -1 !jvms: VectorMaskToLongTest::testFromLongToLongInt @ bci:34 (line 212)
263 CatchProj === 261 [[ 251 266 ]] #1@bci -1 !jvms: VectorMaskToLongTest::testFromLongToLongInt @ bci:34 (line 212)
266 CreateEx === 263 257 [[ 254 ]] #java/lang/Throwable (java/io/Serializable):NotNull * Oop:java/lang/Throwable (java/io/Serializable):NotNull * !jvms: VectorMaskToLongTest::testFromLongToLongInt @ bci:34 (line 212)
269 Return === 262 257 258 8 9 [[ 0 ]]
270 Rethrow === 251 252 253 8 9 exception 254 [[ 0 ]]
277 ConL === 0 [[ 278 ]] #long:8
278 AddP === _ 173 173 277 [[ 279 ]] Oop:jdk/internal/vm/vector/VectorSupport$VectorPayload+8 * [narrowklass] !jvms: VectorMask::fromLong @ bci:39 (line 243) VectorMaskToLongTest::testFromLongToLongInt @ bci:22 (line 211)
279 LoadNKlass === 194 7 278 [[ 280 ]] @java/lang/Object+8 * [narrowklass], idx=5; #narrowklass: jdk/internal/vm/vector/VectorSupport$VectorPayload: 0x000000014800e0e8 * !jvms: VectorMask::fromLong @ bci:39 (line 243) VectorMaskToLongTest::testFromLongToLongInt @ bci:22 (line 211)
280 DecodeNKlass === _ 279 [[ 285 285 ]] #jdk/internal/vm/vector/VectorSupport$VectorPayload: 0x000000014800e0e8 * Klass:jdk/internal/vm/vector/VectorSupport$VectorPayload: 0x000000014800e0e8 * !jvms: VectorMask::fromLong @ bci:39 (line 243) VectorMaskToLongTest::testFromLongToLongInt @ bci:22 (line 211)
285 AddP === _ 280 280 295 [[ 286 ]] Klass:jdk/internal/vm/vector/VectorSupport$VectorPayload: 0x000000014800e0e8+80 * !jvms: VectorMask::fromLong @ bci:39 (line 243) VectorMaskToLongTest::testFromLongToLongInt @ bci:22 (line 211)
286 LoadKlass === _ 7 285 [[ 296 ]] @java/lang/Object: 0x000000014800a050+any *, idx=6; # * Klass: * !jvms: VectorMask::fromLong @ bci:39 (line 243) VectorMaskToLongTest::testFromLongToLongInt @ bci:22 (line 211)
295 ConL === 0 [[ 285 ]] #long:80
296 CmpP === _ 286 186 [[ 298 ]] !orig=[289] !jvms: VectorMask::fromLong @ bci:39 (line 243) VectorMaskToLongTest::testFromLongToLongInt @ bci:22 (line 211)
298 Bool === _ 296 [[ 299 ]] [ne] !jvms: VectorMask::fromLong @ bci:39 (line 243) VectorMaskToLongTest::testFromLongToLongInt @ bci:22 (line 211)
299 If === 194 298 [[ 300 301 ]] P=0.170000, C=-1.000000 !orig=[291] !jvms: VectorMask::fromLong @ bci:39 (line 243) VectorMaskToLongTest::testFromLongToLongInt @ bci:22 (line 211)
300 IfFalse === 299 [[ 222 233 ]] #0 !orig=[292],[273],[220] !jvms: VectorMask::fromLong @ bci:39 (line 243) VectorMaskToLongTest::testFromLongToLongInt @ bci:22 (line 211)
301 IfTrue === 299 [[ 226 ]] #1 !orig=[293],[274],[221] !jvms: VectorMask::fromLong @ bci:39 (line 243) VectorMaskToLongTest::testFromLongToLongInt @ bci:22 (line 211)

  1. Compilation of "public static void compiler.vectorapi.VectorMaskToLongTest.testFromLongToLongLong()":

Phase "PrintIdeal":
AFTER: print_ideal
0 Root === 0 203 230 269 270 [[ 0 1 3 225 198 189 23 186 167 28 44 124 104 54 277 295 ]] inner
1 Con === 0 [[ ]] #top
3 Start === 3 0 [[ 3 5 6 7 8 9 ]] #{0:control, 1:abIO, 2:memory, 3:rawptr:BotPTR, 4:return_address}
5 Parm === 3 [[ 168 ]] Control !jvms: VectorMaskToLongTest::testFromLongToLongLong @ bci:-1 (line 224)
6 Parm === 3 [[ 168 ]] I_O !jvms: VectorMaskToLongTest::testFromLongToLongLong @ bci:-1 (line 224)
7 Parm === 3 [[ 168 279 286 ]] Memory Memory: @BotPTR *+bot, idx=Bot; !jvms: VectorMaskToLongTest::testFromLongToLongLong @ bci:-1 (line 224)
8 Parm === 3 [[ 270 269 255 233 230 199 203 168 226 ]] FramePtr !jvms: VectorMaskToLongTest::testFromLongToLongLong @ bci:-1 (line 224)
9 Parm === 3 [[ 270 269 199 226 ]] ReturnAdr !jvms: VectorMaskToLongTest::testFromLongToLongLong @ bci:-1 (line 224)
23 ConP === 0 [[ 255 168 ]] #jdk/incubator/vector/LongVector$LongSpecies (jdk/incubator/vector/VectorSpecies):exact * Oop:jdk/incubator/vector/LongVector$LongSpecies (jdk/incubator/vector/VectorSpecies):exact *
28 ConI === 0 [[ 168 ]] #int:1
44 ConI === 0 [[ 168 ]] #int:2
54 ConL === 0 [[ 255 233 168 168 199 ]] #long:2
104 ConP === 0 [[ 168 ]] #java/lang/Class (java/io/Serializable,java/lang/constant/Constable,java/lang/reflect/AnnotatedElement,java/lang/invoke/TypeDescriptor,java/lang/reflect/GenericDeclaration,java/lang/reflect/Type,java/lang/invoke/TypeDescriptor$OfField):exact * Oop:java/lang/Class (java/io/Serializable,java/lang/constant/Constable,java/lang/reflect/AnnotatedElement,java/lang/invoke/TypeDescriptor,java/lang/reflect/GenericDeclaration,java/lang/reflect/Type,java/lang/invoke/TypeDescriptor$OfField):exact *
124 ConP === 0 [[ 168 ]] #java/lang/Class (java/io/Serializable,java/lang/constant/Constable,java/lang/reflect/AnnotatedElement,java/lang/invoke/TypeDescriptor,java/lang/reflect/GenericDeclaration,java/lang/reflect/Type,java/lang/invoke/TypeDescriptor$OfField):exact * Oop:java/lang/Class (java/io/Serializable,java/lang/constant/Constable,java/lang/reflect/AnnotatedElement,java/lang/invoke/TypeDescriptor,java/lang/reflect/GenericDeclaration,java/lang/reflect/Type,java/lang/invoke/TypeDescriptor$OfField):exact *
167 ConP === 0 [[ 168 ]] #jdk/incubator/vector/VectorMask$$Lambda+0x0000060001060748 (jdk/internal/vm/vector/VectorSupport$FromBitsCoercedOperation):exact * Oop:jdk/incubator/vector/VectorMask$$Lambda+0x0000060001060748 (jdk/internal/vm/vector/VectorSupport$FromBitsCoercedOperation):exact *
168 CallStaticJava === 5 6 7 8 1 (104 124 44 54 1 28 23 167 54 1 1 1 1 1 1 1 ) [[ 169 181 182 173 ]] # Static jdk.internal.vm.vector.VectorSupport::fromBitsCoerced jdk/internal/vm/vector/VectorSupport$VectorPayload * ( java/lang/Class (java/io/Serializable,java/lang/constant/Constable,java/lang/reflect/AnnotatedElement,java/lang/invoke/TypeDescriptor,java/lang/reflect/GenericDeclaration,java/lang/reflect/Type,java/lang/invoke/TypeDescriptor$OfField):exact *, java/lang/Class (java/io/Serializable,java/lang/constant/Constable,java/lang/reflect/AnnotatedElement,java/lang/invoke/TypeDescriptor,java/lang/reflect/GenericDeclaration,java/lang/reflect/Type,java/lang/invoke/TypeDescriptor$OfField):exact *, int, long, half, int, jdk/internal/vm/vector/VectorSupport$VectorSpecies *, java/lang/Object * ) VectorMask::fromLong @ bci:39 (line 243) VectorMaskToLongTest::testFromLongToLongLong @ bci:22 (line 225) !jvms: VectorMask::fromLong @ bci:39 (line 243) VectorMaskToLongTest::testFromLongToLongLong @ bci:22 (line 225)
169 Proj === 168 [[ 175 ]] #0 !jvms: VectorMask::fromLong @ bci:39 (line 243) VectorMaskToLongTest::testFromLongToLongLong @ bci:22 (line 225)
173 Proj === 168 [[ 226 190 278 278 222 ]] #5 Oop:jdk/internal/vm/vector/VectorSupport$VectorPayload * !jvms: VectorMask::fromLong @ bci:39 (line 243) VectorMaskToLongTest::testFromLongToLongLong @ bci:22 (line 225)
175 Catch === 169 181 [[ 176 177 ]] !jvms: VectorMask::fromLong @ bci:39 (line 243) VectorMaskToLongTest::testFromLongToLongLong @ bci:22 (line 225)
176 CatchProj === 175 [[ 192 ]] #0@bci -1 !jvms: VectorMask::fromLong @ bci:39 (line 243) VectorMaskToLongTest::testFromLongToLongLong @ bci:22 (line 225)
177 CatchProj === 175 [[ 251 180 ]] #1@bci -1 !jvms: VectorMask::fromLong @ bci:39 (line 243) VectorMaskToLongTest::testFromLongToLongLong @ bci:22 (line 225)
180 CreateEx === 177 181 [[ 254 ]] #java/lang/Throwable (java/io/Serializable):NotNull * Oop:java/lang/Throwable (java/io/Serializable):NotNull * !jvms: VectorMask::fromLong @ bci:39 (line 243) VectorMaskToLongTest::testFromLongToLongLong @ bci:22 (line 225)
181 Proj === 168 [[ 233 199 226 252 175 180 ]] #1 !jvms: VectorMask::fromLong @ bci:39 (line 243) VectorMaskToLongTest::testFromLongToLongLong @ bci:22 (line 225)
182 Proj === 168 [[ 233 226 199 253 ]] #2 Memory: @BotPTR *+bot, idx=Bot; !jvms: VectorMask::fromLong @ bci:39 (line 243) VectorMaskToLongTest::testFromLongToLongLong @ bci:22 (line 225)
186 ConP === 0 [[ 296 ]] #precise jdk/incubator/vector/VectorMask: 0x0000000158383080:Constant:exact * Klass:precise jdk/incubator/vector/VectorMask: 0x0000000158383080:Constant:exact *
189 ConP === 0 [[ 190 199 ]] #null
190 CmpP === _ 173 189 [[ 191 ]] !jvms: VectorMask::fromLong @ bci:42 (line 243) VectorMaskToLongTest::testFromLongToLongLong @ bci:22 (line 225)
191 Bool === _ 190 [[ 192 ]] [ne] !jvms: VectorMask::fromLong @ bci:42 (line 243) VectorMaskToLongTest::testFromLongToLongLong @ bci:22 (line 225)
192 If === 176 191 [[ 193 194 ]] P=0.999999, C=-1.000000 !jvms: VectorMask::fromLong @ bci:42 (line 243) VectorMaskToLongTest::testFromLongToLongLong @ bci:22 (line 225)
193 IfFalse === 192 [[ 199 ]] #0 !jvms: VectorMask::fromLong @ bci:42 (line 243) VectorMaskToLongTest::testFromLongToLongLong @ bci:22 (line 225)
194 IfTrue === 192 [[ 299 279 ]] #1 !jvms: VectorMask::fromLong @ bci:42 (line 243) VectorMaskToLongTest::testFromLongToLongLong @ bci:22 (line 225)
198 ConI === 0 [[ 199 ]] #int:-12
199 CallStaticJava === 193 181 182 8 9 (198 54 1 1 1 1 1 1 1 189 ) [[ 200 ]] # Static uncommon_trap(reason='null_check' action='make_not_entrant' debug_id='0') void ( int ) C=0.000100 VectorMask::fromLong @ bci:42 (line 243) VectorMaskToLongTest::testFromLongToLongLong @ bci:22 (line 225) !jvms: VectorMask::fromLong @ bci:42 (line 243) VectorMaskToLongTest::testFromLongToLongLong @ bci:22 (line 225)
200 Proj === 199 [[ 203 ]] #0 !jvms: VectorMask::fromLong @ bci:42 (line 243) VectorMaskToLongTest::testFromLongToLongLong @ bci:22 (line 225)
203 Halt === 200 1 1 8 1 [[ 0 ]] !jvms: VectorMask::fromLong @ bci:42 (line 243) VectorMaskToLongTest::testFromLongToLongLong @ bci:22 (line 225)
222 CheckCastPP === 300 173 [[ 233 ]] #jdk/incubator/vector/VectorMask:NotNull * Oop:jdk/incubator/vector/VectorMask:NotNull * !jvms: VectorMask::fromLong @ bci:42 (line 243) VectorMaskToLongTest::testFromLongToLongLong @ bci:22 (line 225)
225 ConI === 0 [[ 226 ]] #int:-34
226 CallStaticJava === 301 181 182 8 9 (225 1 1 1 1 1 1 1 1 173 ) [[ 227 ]] # Static uncommon_trap(reason='class_check' action='maybe_recompile' debug_id='0') void ( int ) C=0.000100 VectorMask::fromLong @ bci:42 (line 243) VectorMaskToLongTest::testFromLongToLongLong @ bci:22 (line 225) !jvms: VectorMask::fromLong @ bci:42 (line 243) VectorMaskToLongTest::testFromLongToLongLong @ bci:22 (line 225)
227 Proj === 226 [[ 230 ]] #0 !jvms: VectorMask::fromLong @ bci:42 (line 243) VectorMaskToLongTest::testFromLongToLongLong @ bci:22 (line 225)
230 Halt === 227 1 1 8 1 [[ 0 ]] !jvms: VectorMask::fromLong @ bci:42 (line 243) VectorMaskToLongTest::testFromLongToLongLong @ bci:22 (line 225)
233 CallDynamicJava === 300 181 182 8 1 (222 54 1 1 1 ) [[ 234 246 247 238 ]] # Dynamic jdk.incubator.vector.VectorMask::toLong long/half ( jdk/incubator/vector/VectorMask:NotNull * ) VectorMaskToLongTest::testFromLongToLongLong @ bci:25 (line 225) !jvms: VectorMaskToLongTest::testFromLongToLongLong @ bci:25 (line 225)
234 Proj === 233 [[ 240 ]] #0 !jvms: VectorMaskToLongTest::testFromLongToLongLong @ bci:25 (line 225)
238 Proj === 233 [[ 255 ]] #5 !jvms: VectorMaskToLongTest::testFromLongToLongLong @ bci:25 (line 225)
240 Catch === 234 246 [[ 241 242 ]] !jvms: VectorMaskToLongTest::testFromLongToLongLong @ bci:25 (line 225)
241 CatchProj === 240 [[ 255 ]] #0@bci -1 !jvms: VectorMaskToLongTest::testFromLongToLongLong @ bci:25 (line 225)
242 CatchProj === 240 [[ 251 245 ]] #1@bci -1 !jvms: VectorMaskToLongTest::testFromLongToLongLong @ bci:25 (line 225)
245 CreateEx === 242 246 [[ 254 ]] #java/lang/Throwable (java/io/Serializable):NotNull * Oop:java/lang/Throwable (java/io/Serializable):NotNull * !jvms: VectorMaskToLongTest::testFromLongToLongLong @ bci:25 (line 225)
246 Proj === 233 [[ 255 252 240 245 ]] #1 !jvms: VectorMaskToLongTest::testFromLongToLongLong @ bci:25 (line 225)
247 Proj === 233 [[ 255 253 ]] #2 Memory: @BotPTR *+bot, idx=Bot; !jvms: VectorMaskToLongTest::testFromLongToLongLong @ bci:25 (line 225)
251 Region === 251 177 242 263 [[ 251 252 253 254 270 ]] !jvms: VectorMaskToLongTest::testFromLongToLongLong @ bci:25 (line 225)
252 Phi === 251 181 246 257 [[ 270 ]] #abIO !jvms: VectorMaskToLongTest::testFromLongToLongLong @ bci:25 (line 225)
253 Phi === 251 182 247 258 [[ 270 ]] #memory Memory: @BotPTR *+bot, idx=Bot; !jvms: VectorMaskToLongTest::testFromLongToLongLong @ bci:25 (line 225)
254 Phi === 251 180 245 266 [[ 270 ]] #java/lang/Throwable (java/io/Serializable):NotNull * Oop:java/lang/Throwable (java/io/Serializable):NotNull * !jvms: VectorMaskToLongTest::testFromLongToLongLong @ bci:25 (line 225)
255 CallStaticJava === 241 246 247 8 1 (23 54 1 238 1 1 1 1 1 ) [[ 256 257 258 ]] # Static compiler.vectorapi.VectorMaskToLongTest::verifyMaskToLong void ( java/lang/Object *, long, half, long, half ) VectorMaskToLongTest::testFromLongToLongLong @ bci:34 (line 226) !jvms: VectorMaskToLongTest::testFromLongToLongLong @ bci:34 (line 226)
256 Proj === 255 [[ 261 ]] #0 !jvms: VectorMaskToLongTest::testFromLongToLongLong @ bci:34 (line 226)
257 Proj === 255 [[ 269 261 252 266 ]] #1 !jvms: VectorMaskToLongTest::testFromLongToLongLong @ bci:34 (line 226)
258 Proj === 255 [[ 269 253 ]] #2 Memory: @BotPTR *+bot, idx=Bot; !jvms: VectorMaskToLongTest::testFromLongToLongLong @ bci:34 (line 226)
261 Catch === 256 257 [[ 262 263 ]] !jvms: VectorMaskToLongTest::testFromLongToLongLong @ bci:34 (line 226)
262 CatchProj === 261 [[ 269 ]] #0@bci -1 !jvms: VectorMaskToLongTest::testFromLongToLongLong @ bci:34 (line 226)
263 CatchProj === 261 [[ 251 266 ]] #1@bci -1 !jvms: VectorMaskToLongTest::testFromLongToLongLong @ bci:34 (line 226)
266 CreateEx === 263 257 [[ 254 ]] #java/lang/Throwable (java/io/Serializable):NotNull * Oop:java/lang/Throwable (java/io/Serializable):NotNull * !jvms: VectorMaskToLongTest::testFromLongToLongLong @ bci:34 (line 226)
269 Return === 262 257 258 8 9 [[ 0 ]]
270 Rethrow === 251 252 253 8 9 exception 254 [[ 0 ]]
277 ConL === 0 [[ 278 ]] #long:8
278 AddP === _ 173 173 277 [[ 279 ]] Oop:jdk/internal/vm/vector/VectorSupport$VectorPayload+8 * [narrowklass] !jvms: VectorMask::fromLong @ bci:39 (line 243) VectorMaskToLongTest::testFromLongToLongLong @ bci:22 (line 225)
279 LoadNKlass === 194 7 278 [[ 280 ]] @java/lang/Object+8 * [narrowklass], idx=5; #narrowklass: jdk/internal/vm/vector/VectorSupport$VectorPayload: 0x000000014800e0e8 * !jvms: VectorMask::fromLong @ bci:39 (line 243) VectorMaskToLongTest::testFromLongToLongLong @ bci:22 (line 225)
280 DecodeNKlass === _ 279 [[ 285 285 ]] #jdk/internal/vm/vector/VectorSupport$VectorPayload: 0x000000014800e0e8 * Klass:jdk/internal/vm/vector/VectorSupport$VectorPayload: 0x000000014800e0e8 * !jvms: VectorMask::fromLong @ bci:39 (line 243) VectorMaskToLongTest::testFromLongToLongLong @ bci:22 (line 225)
285 AddP === _ 280 280 295 [[ 286 ]] Klass:jdk/internal/vm/vector/VectorSupport$VectorPayload: 0x000000014800e0e8+80 * !jvms: VectorMask::fromLong @ bci:39 (line 243) VectorMaskToLongTest::testFromLongToLongLong @ bci:22 (line 225)
286 LoadKlass === _ 7 285 [[ 296 ]] @java/lang/Object: 0x000000014800a050+any *, idx=6; # * Klass: * !jvms: VectorMask::fromLong @ bci:39 (line 243) VectorMaskToLongTest::testFromLongToLongLong @ bci:22 (line 225)
295 ConL === 0 [[ 285 ]] #long:80
296 CmpP === _ 286 186 [[ 298 ]] !orig=[289] !jvms: VectorMask::fromLong @ bci:39 (line 243) VectorMaskToLongTest::testFromLongToLongLong @ bci:22 (line 225)
298 Bool === _ 296 [[ 299 ]] [ne] !jvms: VectorMask::fromLong @ bci:39 (line 243) VectorMaskToLongTest::testFromLongToLongLong @ bci:22 (line 225)
299 If === 194 298 [[ 300 301 ]] P=0.170000, C=-1.000000 !orig=[291] !jvms: VectorMask::fromLong @ bci:39 (line 243) VectorMaskToLongTest::testFromLongToLongLong @ bci:22 (line 225)
300 IfFalse === 299 [[ 222 233 ]] #0 !orig=[292],[273],[220] !jvms: VectorMask::fromLong @ bci:39 (line 243) VectorMaskToLongTest::testFromLongToLongLong @ bci:22 (line 225)
301 IfTrue === 299 [[ 226 ]] #1 !orig=[293],[274],[221] !jvms: VectorMask::fromLong @ bci:39 (line 243) VectorMaskToLongTest::testFromLongToLongLong @ bci:22 (line 225)

  1. Compilation of "public static void compiler.vectorapi.VectorMaskToLongTest.testFromLongToLongShort()":

Phase "PrintIdeal":
AFTER: print_ideal
0 Root === 0 203 230 269 270 [[ 0 1 3 225 198 189 23 186 167 28 44 124 104 54 277 295 ]] inner
1 Con === 0 [[ ]] #top
3 Start === 3 0 [[ 3 5 6 7 8 9 ]] #{0:control, 1:abIO, 2:memory, 3:rawptr:BotPTR, 4:return_address}
5 Parm === 3 [[ 168 ]] Control !jvms: VectorMaskToLongTest::testFromLongToLongShort @ bci:-1 (line 196)
6 Parm === 3 [[ 168 ]] I_O !jvms: VectorMaskToLongTest::testFromLongToLongShort @ bci:-1 (line 196)
7 Parm === 3 [[ 168 279 286 ]] Memory Memory: @BotPTR *+bot, idx=Bot; !jvms: VectorMaskToLongTest::testFromLongToLongShort @ bci:-1 (line 196)
8 Parm === 3 [[ 270 269 255 233 230 199 203 168 226 ]] FramePtr !jvms: VectorMaskToLongTest::testFromLongToLongShort @ bci:-1 (line 196)
9 Parm === 3 [[ 270 269 199 226 ]] ReturnAdr !jvms: VectorMaskToLongTest::testFromLongToLongShort @ bci:-1 (line 196)
23 ConP === 0 [[ 255 168 ]] #jdk/incubator/vector/ShortVector$ShortSpecies (jdk/incubator/vector/VectorSpecies):exact * Oop:jdk/incubator/vector/ShortVector$ShortSpecies (jdk/incubator/vector/VectorSpecies):exact *
28 ConI === 0 [[ 168 ]] #int:1
44 ConI === 0 [[ 168 ]] #int:8
54 ConL === 0 [[ 255 233 168 168 199 ]] #long:254
104 ConP === 0 [[ 168 ]] #java/lang/Class (java/io/Serializable,java/lang/constant/Constable,java/lang/reflect/AnnotatedElement,java/lang/invoke/TypeDescriptor,java/lang/reflect/GenericDeclaration,java/lang/reflect/Type,java/lang/invoke/TypeDescriptor$OfField):exact * Oop:java/lang/Class (java/io/Serializable,java/lang/constant/Constable,java/lang/reflect/AnnotatedElement,java/lang/invoke/TypeDescriptor,java/lang/reflect/GenericDeclaration,java/lang/reflect/Type,java/lang/invoke/TypeDescriptor$OfField):exact *
124 ConP === 0 [[ 168 ]] #java/lang/Class (java/io/Serializable,java/lang/constant/Constable,java/lang/reflect/AnnotatedElement,java/lang/invoke/TypeDescriptor,java/lang/reflect/GenericDeclaration,java/lang/reflect/Type,java/lang/invoke/TypeDescriptor$OfField):exact * Oop:java/lang/Class (java/io/Serializable,java/lang/constant/Constable,java/lang/reflect/AnnotatedElement,java/lang/invoke/TypeDescriptor,java/lang/reflect/GenericDeclaration,java/lang/reflect/Type,java/lang/invoke/TypeDescriptor$OfField):exact *
167 ConP === 0 [[ 168 ]] #jdk/incubator/vector/VectorMask$$Lambda+0x0000060001060748 (jdk/internal/vm/vector/VectorSupport$FromBitsCoercedOperation):exact * Oop:jdk/incubator/vector/VectorMask$$Lambda+0x0000060001060748 (jdk/internal/vm/vector/VectorSupport$FromBitsCoercedOperation):exact *
168 CallStaticJava === 5 6 7 8 1 (104 124 44 54 1 28 23 167 54 1 1 1 1 1 1 1 ) [[ 169 181 182 173 ]] # Static jdk.internal.vm.vector.VectorSupport::fromBitsCoerced jdk/internal/vm/vector/VectorSupport$VectorPayload * ( java/lang/Class (java/io/Serializable,java/lang/constant/Constable,java/lang/reflect/AnnotatedElement,java/lang/invoke/TypeDescriptor,java/lang/reflect/GenericDeclaration,java/lang/reflect/Type,java/lang/invoke/TypeDescriptor$OfField):exact *, java/lang/Class (java/io/Serializable,java/lang/constant/Constable,java/lang/reflect/AnnotatedElement,java/lang/invoke/TypeDescriptor,java/lang/reflect/GenericDeclaration,java/lang/reflect/Type,java/lang/invoke/TypeDescriptor$OfField):exact *, int, long, half, int, jdk/internal/vm/vector/VectorSupport$VectorSpecies *, java/lang/Object * ) VectorMask::fromLong @ bci:39 (line 243) VectorMaskToLongTest::testFromLongToLongShort @ bci:22 (line 197) !jvms: VectorMask::fromLong @ bci:39 (line 243) VectorMaskToLongTest::testFromLongToLongShort @ bci:22 (line 197)
169 Proj === 168 [[ 175 ]] #0 !jvms: VectorMask::fromLong @ bci:39 (line 243) VectorMaskToLongTest::testFromLongToLongShort @ bci:22 (line 197)
173 Proj === 168 [[ 226 190 278 278 222 ]] #5 Oop:jdk/internal/vm/vector/VectorSupport$VectorPayload * !jvms: VectorMask::fromLong @ bci:39 (line 243) VectorMaskToLongTest::testFromLongToLongShort @ bci:22 (line 197)
175 Catch === 169 181 [[ 176 177 ]] !jvms: VectorMask::fromLong @ bci:39 (line 243) VectorMaskToLongTest::testFromLongToLongShort @ bci:22 (line 197)
176 CatchProj === 175 [[ 192 ]] #0@bci -1 !jvms: VectorMask::fromLong @ bci:39 (line 243) VectorMaskToLongTest::testFromLongToLongShort @ bci:22 (line 197)
177 CatchProj === 175 [[ 251 180 ]] #1@bci -1 !jvms: VectorMask::fromLong @ bci:39 (line 243) VectorMaskToLongTest::testFromLongToLongShort @ bci:22 (line 197)
180 CreateEx === 177 181 [[ 254 ]] #java/lang/Throwable (java/io/Serializable):NotNull * Oop:java/lang/Throwable (java/io/Serializable):NotNull * !jvms: VectorMask::fromLong @ bci:39 (line 243) VectorMaskToLongTest::testFromLongToLongShort @ bci:22 (line 197)
181 Proj === 168 [[ 233 199 226 252 175 180 ]] #1 !jvms: VectorMask::fromLong @ bci:39 (line 243) VectorMaskToLongTest::testFromLongToLongShort @ bci:22 (line 197)
182 Proj === 168 [[ 233 226 199 253 ]] #2 Memory: @BotPTR *+bot, idx=Bot; !jvms: VectorMask::fromLong @ bci:39 (line 243) VectorMaskToLongTest::testFromLongToLongShort @ bci:22 (line 197)
186 ConP === 0 [[ 296 ]] #precise jdk/incubator/vector/VectorMask: 0x00000001484bb080:Constant:exact * Klass:precise jdk/incubator/vector/VectorMask: 0x00000001484bb080:Constant:exact *
189 ConP === 0 [[ 190 199 ]] #null
190 CmpP === _ 173 189 [[ 191 ]] !jvms: VectorMask::fromLong @ bci:42 (line 243) VectorMaskToLongTest::testFromLongToLongShort @ bci:22 (line 197)
191 Bool === _ 190 [[ 192 ]] [ne] !jvms: VectorMask::fromLong @ bci:42 (line 243) VectorMaskToLongTest::testFromLongToLongShort @ bci:22 (line 197)
192 If === 176 191 [[ 193 194 ]] P=0.999999, C=-1.000000 !jvms: VectorMask::fromLong @ bci:42 (line 243) VectorMaskToLongTest::testFromLongToLongShort @ bci:22 (line 197)
193 IfFalse === 192 [[ 199 ]] #0 !jvms: VectorMask::fromLong @ bci:42 (line 243) VectorMaskToLongTest::testFromLongToLongShort @ bci:22 (line 197)
194 IfTrue === 192 [[ 299 279 ]] #1 !jvms: VectorMask::fromLong @ bci:42 (line 243) VectorMaskToLongTest::testFromLongToLongShort @ bci:22 (line 197)
198 ConI === 0 [[ 199 ]] #int:-12
199 CallStaticJava === 193 181 182 8 9 (198 54 1 1 1 1 1 1 1 189 ) [[ 200 ]] # Static uncommon_trap(reason='null_check' action='make_not_entrant' debug_id='0') void ( int ) C=0.000100 VectorMask::fromLong @ bci:42 (line 243) VectorMaskToLongTest::testFromLongToLongShort @ bci:22 (line 197) !jvms: VectorMask::fromLong @ bci:42 (line 243) VectorMaskToLongTest::testFromLongToLongShort @ bci:22 (line 197)
200 Proj === 199 [[ 203 ]] #0 !jvms: VectorMask::fromLong @ bci:42 (line 243) VectorMaskToLongTest::testFromLongToLongShort @ bci:22 (line 197)
203 Halt === 200 1 1 8 1 [[ 0 ]] !jvms: VectorMask::fromLong @ bci:42 (line 243) VectorMaskToLongTest::testFromLongToLongShort @ bci:22 (line 197)
222 CheckCastPP === 300 173 [[ 233 ]] #jdk/incubator/vector/VectorMask:NotNull * Oop:jdk/incubator/vector/VectorMask:NotNull * !jvms: VectorMask::fromLong @ bci:42 (line 243) VectorMaskToLongTest::testFromLongToLongShort @ bci:22 (line 197)
225 ConI === 0 [[ 226 ]] #int:-34
226 CallStaticJava === 301 181 182 8 9 (225 1 1 1 1 1 1 1 1 173 ) [[ 227 ]] # Static uncommon_trap(reason='class_check' action='maybe_recompile' debug_id='0') void ( int ) C=0.000100 VectorMask::fromLong @ bci:42 (line 243) VectorMaskToLongTest::testFromLongToLongShort @ bci:22 (line 197) !jvms: VectorMask::fromLong @ bci:42 (line 243) VectorMaskToLongTest::testFromLongToLongShort @ bci:22 (line 197)
227 Proj === 226 [[ 230 ]] #0 !jvms: VectorMask::fromLong @ bci:42 (line 243) VectorMaskToLongTest::testFromLongToLongShort @ bci:22 (line 197)
230 Halt === 227 1 1 8 1 [[ 0 ]] !jvms: VectorMask::fromLong @ bci:42 (line 243) VectorMaskToLongTest::testFromLongToLongShort @ bci:22 (line 197)
233 CallDynamicJava === 300 181 182 8 1 (222 54 1 1 1 ) [[ 234 246 247 238 ]] # Dynamic jdk.incubator.vector.VectorMask::toLong long/half ( jdk/incubator/vector/VectorMask:NotNull * ) VectorMaskToLongTest::testFromLongToLongShort @ bci:25 (line 197) !jvms: VectorMaskToLongTest::testFromLongToLongShort @ bci:25 (line 197)
234 Proj === 233 [[ 240 ]] #0 !jvms: VectorMaskToLongTest::testFromLongToLongShort @ bci:25 (line 197)
238 Proj === 233 [[ 255 ]] #5 !jvms: VectorMaskToLongTest::testFromLongToLongShort @ bci:25 (line 197)
240 Catch === 234 246 [[ 241 242 ]] !jvms: VectorMaskToLongTest::testFromLongToLongShort @ bci:25 (line 197)
241 CatchProj === 240 [[ 255 ]] #0@bci -1 !jvms: VectorMaskToLongTest::testFromLongToLongShort @ bci:25 (line 197)
242 CatchProj === 240 [[ 251 245 ]] #1@bci -1 !jvms: VectorMaskToLongTest::testFromLongToLongShort @ bci:25 (line 197)
245 CreateEx === 242 246 [[ 254 ]] #java/lang/Throwable (java/io/Serializable):NotNull * Oop:java/lang/Throwable (java/io/Serializable):NotNull * !jvms: VectorMaskToLongTest::testFromLongToLongShort @ bci:25 (line 197)
246 Proj === 233 [[ 255 252 240 245 ]] #1 !jvms: VectorMaskToLongTest::testFromLongToLongShort @ bci:25 (line 197)
247 Proj === 233 [[ 255 253 ]] #2 Memory: @BotPTR *+bot, idx=Bot; !jvms: VectorMaskToLongTest::testFromLongToLongShort @ bci:25 (line 197)
251 Region === 251 177 242 263 [[ 251 252 253 254 270 ]] !jvms: VectorMaskToLongTest::testFromLongToLongShort @ bci:25 (line 197)
252 Phi === 251 181 246 257 [[ 270 ]] #abIO !jvms: VectorMaskToLongTest::testFromLongToLongShort @ bci:25 (line 197)
253 Phi === 251 182 247 258 [[ 270 ]] #memory Memory: @BotPTR *+bot, idx=Bot; !jvms: VectorMaskToLongTest::testFromLongToLongShort @ bci:25 (line 197)
254 Phi === 251 180 245 266 [[ 270 ]] #java/lang/Throwable (java/io/Serializable):NotNull * Oop:java/lang/Throwable (java/io/Serializable):NotNull * !jvms: VectorMaskToLongTest::testFromLongToLongShort @ bci:25 (line 197)
255 CallStaticJava === 241 246 247 8 1 (23 54 1 238 1 1 1 1 1 ) [[ 256 257 258 ]] # Static compiler.vectorapi.VectorMaskToLongTest::verifyMaskToLong void ( java/lang/Object *, long, half, long, half ) VectorMaskToLongTest::testFromLongToLongShort @ bci:34 (line 198) !jvms: VectorMaskToLongTest::testFromLongToLongShort @ bci:34 (line 198)
256 Proj === 255 [[ 261 ]] #0 !jvms: VectorMaskToLongTest::testFromLongToLongShort @ bci:34 (line 198)
257 Proj === 255 [[ 269 261 252 266 ]] #1 !jvms: VectorMaskToLongTest::testFromLongToLongShort @ bci:34 (line 198)
258 Proj === 255 [[ 269 253 ]] #2 Memory: @BotPTR *+bot, idx=Bot; !jvms: VectorMaskToLongTest::testFromLongToLongShort @ bci:34 (line 198)
261 Catch === 256 257 [[ 262 263 ]] !jvms: VectorMaskToLongTest::testFromLongToLongShort @ bci:34 (line 198)
262 CatchProj === 261 [[ 269 ]] #0@bci -1 !jvms: VectorMaskToLongTest::testFromLongToLongShort @ bci:34 (line 198)
263 CatchProj === 261 [[ 251 266 ]] #1@bci -1 !jvms: VectorMaskToLongTest::testFromLongToLongShort @ bci:34 (line 198)
266 CreateEx === 263 257 [[ 254 ]] #java/lang/Throwable (java/io/Serializable):NotNull * Oop:java/lang/Throwable (java/io/Serializable):NotNull * !jvms: VectorMaskToLongTest::testFromLongToLongShort @ bci:34 (line 198)
269 Return === 262 257 258 8 9 [[ 0 ]]
270 Rethrow === 251 252 253 8 9 exception 254 [[ 0 ]]
277 ConL === 0 [[ 278 ]] #long:8
278 AddP === _ 173 173 277 [[ 279 ]] Oop:jdk/internal/vm/vector/VectorSupport$VectorPayload+8 * [narrowklass] !jvms: VectorMask::fromLong @ bci:39 (line 243) VectorMaskToLongTest::testFromLongToLongShort @ bci:22 (line 197)
279 LoadNKlass === 194 7 278 [[ 280 ]] @java/lang/Object+8 * [narrowklass], idx=5; #narrowklass: jdk/internal/vm/vector/VectorSupport$VectorPayload: 0x000000014800e0e8 * !jvms: VectorMask::fromLong @ bci:39 (line 243) VectorMaskToLongTest::testFromLongToLongShort @ bci:22 (line 197)
280 DecodeNKlass === _ 279 [[ 285 285 ]] #jdk/internal/vm/vector/VectorSupport$VectorPayload: 0x000000014800e0e8 * Klass:jdk/internal/vm/vector/VectorSupport$VectorPayload: 0x000000014800e0e8 * !jvms: VectorMask::fromLong @ bci:39 (line 243) VectorMaskToLongTest::testFromLongToLongShort @ bci:22 (line 197)
285 AddP === _ 280 280 295 [[ 286 ]] Klass:jdk/internal/vm/vector/VectorSupport$VectorPayload: 0x000000014800e0e8+80 * !jvms: VectorMask::fromLong @ bci:39 (line 243) VectorMaskToLongTest::testFromLongToLongShort @ bci:22 (line 197)
286 LoadKlass === _ 7 285 [[ 296 ]] @java/lang/Object: 0x000000014800a050+any *, idx=6; # * Klass: * !jvms: VectorMask::fromLong @ bci:39 (line 243) VectorMaskToLongTest::testFromLongToLongShort @ bci:22 (line 197)
295 ConL === 0 [[ 285 ]] #long:80
296 CmpP === _ 286 186 [[ 298 ]] !orig=[289] !jvms: VectorMask::fromLong @ bci:39 (line 243) VectorMaskToLongTest::testFromLongToLongShort @ bci:22 (line 197)
298 Bool === _ 296 [[ 299 ]] [ne] !jvms: VectorMask::fromLong @ bci:39 (line 243) VectorMaskToLongTest::testFromLongToLongShort @ bci:22 (line 197)
299 If === 194 298 [[ 300 301 ]] P=0.170000, C=-1.000000 !orig=[291] !jvms: VectorMask::fromLong @ bci:39 (line 243) VectorMaskToLongTest::testFromLongToLongShort @ bci:22 (line 197)
300 IfFalse === 299 [[ 222 233 ]] #0 !orig=[292],[273],[220] !jvms: VectorMask::fromLong @ bci:39 (line 243) VectorMaskToLongTest::testFromLongToLongShort @ bci:22 (line 197)
301 IfTrue === 299 [[ 226 ]] #1 !orig=[293],[274],[221] !jvms: VectorMask::fromLong @ bci:39 (line 243) VectorMaskToLongTest::testFromLongToLongShort @ bci:22 (line 197)

[...]

One or more @ir rules failed:

Failed IR Rules (5) of Methods (5)

  1. Method "public static void compiler.vectorapi.VectorMaskToLongTest.testFromLongToLongByte()" - [Failed IR rules: 1]:

    • @ir rule 2: "@compiler.lib.ir_framework.IR(phase={DEFAULT}, applyIfPlatformAnd={}, applyIfCPUFeatureOr={}, counts={"#VECTOR_LONG_TO_MASK#", "= 0", "#VECTOR_MASK_TO_LONG#", "= 1"}, failOn={}, applyIfPlatformOr={}, applyIfPlatform={}, applyIfOr={}, applyIfCPUFeatureAnd={"asimd", "true", "sve", "false"}, applyIf={}, applyIfCPUFeature={}, applyIfAnd={}, applyIfNot={})"

      Phase "PrintIdeal":

      • counts: Graph contains wrong number of nodes:
        • Constraint 2: "(\d+(\s){2}(VectorMaskToLong.)+(\s){2}===.)"
          • Failed comparison: [found] 0 = 1 [given]
          • No nodes matched!
  2. Method "public static void compiler.vectorapi.VectorMaskToLongTest.testFromLongToLongDouble()" - [Failed IR rules: 1]:

    • @ir rule 2: "@compiler.lib.ir_framework.IR(phase={DEFAULT}, applyIfPlatformAnd={}, applyIfCPUFeatureOr={}, counts={"#VECTOR_LONG_TO_MASK#", "= 0", "#VECTOR_MASK_TO_LONG#", "= 1"}, failOn={}, applyIfPlatformOr={}, applyIfPlatform={}, applyIfOr={}, applyIfCPUFeatureAnd={"asimd", "true", "sve", "false"}, applyIf={}, applyIfCPUFeature={}, applyIfAnd={}, applyIfNot={})"

      Phase "PrintIdeal":

      • counts: Graph contains wrong number of nodes:
        • Constraint 2: "(\d+(\s){2}(VectorMaskToLong.)+(\s){2}===.)"
          • Failed comparison: [found] 0 = 1 [given]
          • No nodes matched!
  3. Method "public static void compiler.vectorapi.VectorMaskToLongTest.testFromLongToLongInt()" - [Failed IR rules: 1]:

    • @ir rule 2: "@compiler.lib.ir_framework.IR(phase={DEFAULT}, applyIfPlatformAnd={}, applyIfCPUFeatureOr={}, counts={"#VECTOR_LONG_TO_MASK#", "= 0", "#VECTOR_MASK_TO_LONG#", "= 1"}, failOn={}, applyIfPlatformOr={}, applyIfPlatform={}, applyIfOr={}, applyIfCPUFeatureAnd={"asimd", "true", "sve", "false"}, applyIf={}, applyIfCPUFeature={}, applyIfAnd={}, applyIfNot={})"

      Phase "PrintIdeal":

      • counts: Graph contains wrong number of nodes:
        • Constraint 2: "(\d+(\s){2}(VectorMaskToLong.)+(\s){2}===.)"
          • Failed comparison: [found] 0 = 1 [given]
          • No nodes matched!
  4. Method "public static void compiler.vectorapi.VectorMaskToLongTest.testFromLongToLongLong()" - [Failed IR rules: 1]:

    • @ir rule 2: "@compiler.lib.ir_framework.IR(phase={DEFAULT}, applyIfPlatformAnd={}, applyIfCPUFeatureOr={}, counts={"#VECTOR_LONG_TO_MASK#", "= 0", "#VECTOR_MASK_TO_LONG#", "= 1"}, failOn={}, applyIfPlatformOr={}, applyIfPlatform={}, applyIfOr={}, applyIfCPUFeatureAnd={"asimd", "true", "sve", "false"}, applyIf={}, applyIfCPUFeature={}, applyIfAnd={}, applyIfNot={})"

      Phase "PrintIdeal":

      • counts: Graph contains wrong number of nodes:
        • Constraint 2: "(\d+(\s){2}(VectorMaskToLong.)+(\s){2}===.)"
          • Failed comparison: [found] 0 = 1 [given]
          • No nodes matched!
  5. Method "public static void compiler.vectorapi.VectorMaskToLongTest.testFromLongToLongShort()" - [Failed IR rules: 1]:

    • @ir rule 2: "@compiler.lib.ir_framework.IR(phase={DEFAULT}, applyIfPlatformAnd={}, applyIfCPUFeatureOr={}, counts={"#VECTOR_LONG_TO_MASK#", "= 0", "#VECTOR_MASK_TO_LONG#", "= 1"}, failOn={}, applyIfPlatformOr={}, applyIfPlatform={}, applyIfOr={}, applyIfCPUFeatureAnd={"asimd", "true", "sve", "false"}, applyIf={}, applyIfCPUFeature={}, applyIfAnd={}, applyIfNot={})"

      Phase "PrintIdeal":

      • counts: Graph contains wrong number of nodes:
        • Constraint 2: "(\d+(\s){2}(VectorMaskToLong.)+(\s){2}===.)"
          • Failed comparison: [found] 0 = 1 [given]
          • No nodes matched!
</details>

@erifan
Copy link
Contributor Author

erifan commented Jul 29, 2025

Testing is currently slow - still running but I report what I have so far. There is one test failure on linux-aarch64-debug and macosx-aarch64-debug with the new test VectorMaskToLongTest.java:

Additional flags: -ea -esa -XX:CompileThreshold=100 -XX:+UnlockExperimentalVMOptions -server -XX:-TieredCompilation (probably only related to -XX:-TieredComilation, maybe we have not enough profiling and need to increase the warm-up but that's just a wild guess without looking at the test)

Log

Thanks @chhagedorn , and yes you are right. I can reproduce the failure with -XX:-TieredComilation on NEON system. And increasing the default warm up value fixes the issue. I'll update the code tomorrow.

@erifan
Copy link
Contributor Author

erifan commented Jul 30, 2025

Hi @chhagedorn , I have increased the warm up times, could you help test the PR again ? Thanks!

@SirYwell
Copy link
Member

I think there are a few (follow-up?) improvements that can be made:

  1. Using KnownBits and checking against that rather than requiring a constant in is_maskall_type. This is probably a bit difficult to test for now.
  2. If the range of an input is known to be [-1, 0], we can use that as an input for a MaskAllNode.

@chhagedorn
Copy link
Member

chhagedorn commented Jul 30, 2025

And increasing the default warm up value fixes the issue.

Nice, that's good to hear!

Hi @chhagedorn , I have increased the warm up times, could you help test the PR again ? Thanks!

Thanks for coming back with a fix! I'll resubmit testing and report back again.

@erifan
Copy link
Contributor Author

erifan commented Jul 31, 2025

Hi @SirYwell thanks for your suggestions. But I'm not quite understand what you meant, can you elaborate?

@jatin-bhateja
Copy link
Member

jatin-bhateja commented Jul 31, 2025

I think there are a few (follow-up?) improvements that can be made:

  1. Using KnownBits and checking against that rather than requiring a constant in is_maskall_type. This is probably a bit difficult to test for now.
  2. If the range of an input is known to be [-1, 0], we can use that as an input for a MaskAllNode.

Constants are the limiting case of KnownBits where all the bits are known, i.e., KnownBits.ZEROS | Known.Bits.ONES = -1, since the pattern check is especially over -1 / 0 constant values, hence what we have currently looks reasonable, though we may not need to check all the bits of long for narrower vectors.

Here is one example of the KnownBits application for bit compression/expansion.
https://github.com/jatin-bhateja/external_staging/blob/main/Code/java/knownBits_DFA/bit_compress_expand_KnownBits.java

@SirYwell
Copy link
Member

Hi @SirYwell thanks for your suggestions. But I'm not quite understand what you meant, can you elaborate?

@erifan for my first point, knowing that the lower n bits are all 0 or all 1 is enough, i.e., whether (type->_bits._ones & mask) == mask (equivalent to maskAll(true)) or (type->_bits._zeros & mask) == mask (equivalent to maskAll(false)). I think we can't test that part well right now because other nodes are missing KnownBits specific Value() implementations.

For the second one, if type->_lo == -1 && type->_hi == 0, then we know that the node with this type can be used to represent true or false respectively.

I hacked something together to clarify what I mean: SirYwell@02e13a4

Please let me know if there's still something unclear.

(That said I'm completely fine with the PR as-is, especially as the KnownBits part is hard to test right now.)

@erifan
Copy link
Contributor Author

erifan commented Jul 31, 2025

@SirYwell, thanks for your explanation, now I got your points. It's a good idea, with your suggestions, this optimization may apply to more cases. As you said, the KnownBits part is hard to test right now, so that's it for now.

@chhagedorn
Copy link
Member

Testing looked good!

Copy link

@XiaohongGong XiaohongGong left a comment

Choose a reason for hiding this comment

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

Still LGTM!

@erifan
Copy link
Contributor Author

erifan commented Aug 1, 2025

Testing looked good!

Thanks~

Copy link
Member

@jatin-bhateja jatin-bhateja left a comment

Choose a reason for hiding this comment

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

LGTM

Best Regards

@openjdk openjdk bot added the ready Pull request is ready to be integrated label Aug 2, 2025
@erifan
Copy link
Contributor Author

erifan commented Aug 2, 2025

/integrate

@openjdk openjdk bot added the sponsor Pull request is ready to be sponsored label Aug 2, 2025
@openjdk
Copy link

openjdk bot commented Aug 2, 2025

@erifan
Your change (at version b1a768e) is now ready to be sponsored by a Committer.

@jatin-bhateja
Copy link
Member

/sponsor

@openjdk
Copy link

openjdk bot commented Aug 2, 2025

Going to push as commit f40381e.
Since your change was applied there have been 183 commits pushed to the master branch:

Your commit was automatically rebased without conflicts.

@openjdk openjdk bot added the integrated Pull request has been integrated label Aug 2, 2025
@openjdk openjdk bot closed this Aug 2, 2025
@openjdk openjdk bot removed ready Pull request is ready to be integrated rfr Pull request is ready for review sponsor Pull request is ready to be sponsored labels Aug 2, 2025
@openjdk
Copy link

openjdk bot commented Aug 2, 2025

@jatin-bhateja @erifan Pushed as commit f40381e.

💡 You may see a message that your pull request was closed with unmerged commits. This can be safely ignored.

@erifan erifan deleted the JDK-8356760 branch August 4, 2025 03:07
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

hotspot-compiler [email protected] integrated Pull request has been integrated

Development

Successfully merging this pull request may close these issues.

5 participants