RFR: 8291809: Convert compiler/c2/cr7200264/TestSSE2IntVect.java to IR verification test [v2]

Daniel Lundén dlunden at openjdk.org
Wed Jan 24 15:06:31 UTC 2024


On Wed, 24 Jan 2024 13:50:19 GMT, Christian Hagedorn <chagedorn at openjdk.org> wrote:

>> I was curious about that and it actually does:
>> 
>> TraceNewVectors [SuperWord]:  744  LoadVector  === 380 693 677  [[ 675 671 669 664 660 658 558 554 552 145 150 154 ]]  @int[int:>=0] (java/lang/Cloneable,java/io/Serializable):NotNull:exact+any *, idx=5; mismatched #vectorx[4]:{int} !orig=[676],[559],[134] !jvms: Test::test_divc @ bci:12 (line 36)
>> TraceNewVectors [SuperWord]:  746  RShiftVI  === _ 744 745  [[ 668 657 551 155 ]]  #vectorx[4]:{int} !orig=[669],[552],[154] !jvms: Test::test_divc @ bci:15 (line 36)
>> TraceNewVectors [SuperWord]:  747  VectorCastI2X  === _ 744  [[ 674 663 557 146 ]]  #vectory[4]:{long} !orig=[675],[558],[145] !jvms: Test::test_divc @ bci:15 (line 36)
>> TraceNewVectors [SuperWord]:  748  Replicate  === _ 144  [[ ]]  #vectory[4]:{long}
>> TraceNewVectors [SuperWord]:  749  MulVL  === _ 747 748  [[ 673 662 556 148 ]]  #vectory[4]:{long} !orig=[674],[557],[146] !jvms: Test::test_divc @ bci:15 (line 36)
>> TraceNewVectors [SuperWord]:  751  RShiftVL  === _ 749 750  [[ 672 661 555 149 ]]  #vectory[4]:{long} !orig=[673],[556],[148] !jvms: Test::test_divc @ bci:15 (line 36)
>> TraceNewVectors [SuperWord]:  752  VectorCastL2X  === _ 751  [[ 671 660 554 150 ]]  #vectorx[4]:{int} !orig=[672],[555],[149] !jvms: Test::test_divc @ bci:15 (line 36)
>> TraceNewVectors [SuperWord]:  753  AddVI  === _ 752 744  [[ 670 659 553 152 ]]  #vectorx[4]:{int} !orig=[671],[554],[150] !jvms: Test::test_divc @ bci:15 (line 36)
>> TraceNewVectors [SuperWord]:  755  RShiftVI  === _ 753 754  [[ 668 657 551 155 ]]  #vectorx[4]:{int} !orig=[670],[553],[152] !jvms: Test::test_divc @ bci:15 (line 36)
>> TraceNewVectors [SuperWord]:  756  SubVI  === _ 755 746  [[ 666 656 549 176 ]]  #vectorx[4]:{int} !orig=[668],[551],[155] !jvms: Test::test_divc @ bci:15 (line 36)
>> TraceNewVectors [SuperWord]:  757  StoreVector  === 687 693 667 756  [[ 374 693 372 179 ]]  @int[int:>=0] (java/lang/Cloneable,java/io/Serializable):NotNull:exact+any *, idx=5; mismatched  Memory: @int[int:>=0] (java/lang/Cloneable,java/io/Serializable):NotNull:exact+any *, idx=5; !orig=[666],[549],[176],575 !jvms: Test::test_divc @ bci:16 (line 36)
>> 
>> I have not checked any other methods but it might indeed be possible to vectorize some them. I think it's a good idea to check all methods and add a comment with a short explanation why it's not possible or if there are plans to support vectorization in the future. All these tests look like a good collection of (seemingly good) vectorization opportuniti...
>
> Should we also add checks for these vectors (same for `test_divc_n()`)?

@chhagedorn: Do you mean that `test_divc` and `test_divc_n` vectorize after JDK-8282365? They don't vectorize on my machine (on this PR).

-------------

PR Review Comment: https://git.openjdk.org/jdk/pull/17428#discussion_r1465053003


More information about the hotspot-compiler-dev mailing list