[vectorIntrinsics+compress] RFR: 8274889: Intrinsify Vector.expand/compress APIs for X86 [v4]

Joshua Zhu jzhu at openjdk.java.net
Mon Oct 11 08:36:31 UTC 2021


On Sun, 10 Oct 2021 04:12:37 GMT, Jatin Bhateja <jbhateja at openjdk.org> wrote:

>> - Common C2 compiler entry point for compress/expand APIs.
>> - Inline expansion handling and C2 graph creation.
>> - For X86 current backed support is added for AVX512 which offers direct compress/expand instructions.
>
> Jatin Bhateja has updated the pull request incrementally with two additional commits since the last revision:
> 
>  - 8274889: Backing out generic handling for background vectors in compression/expansion operation.
>  - 8274889: Review comments resolved.

Jatin, your change will bring around 15% performance degradation for SelectiveStore benchmark using compress VectorAPI.

src/hotspot/cpu/x86/assembler_x86.cpp line 7859:

> 7857: }
> 7858: 
> 7859: void Assembler::evexpandb(XMMRegister dst, KRegister mask, XMMRegister src, bool merge, int vector_len) {

Function "evpexpandb" for instruction "VPEXPANDB"

src/hotspot/cpu/x86/assembler_x86.cpp line 7872:

> 7870: }
> 7871: 
> 7872: void Assembler::evexpandw(XMMRegister dst, KRegister mask, XMMRegister src, bool merge, int vector_len) {

Function "evpexpandw" for instruction "VPEXPANDW"

src/hotspot/cpu/x86/assembler_x86.cpp line 7885:

> 7883: }
> 7884: 
> 7885: void Assembler::evexpandd(XMMRegister dst, KRegister mask, XMMRegister src, bool merge, int vector_len) {

Function "evpexpandd" for instruction "VPEXPANDD"

src/hotspot/cpu/x86/assembler_x86.cpp line 7898:

> 7896: }
> 7897: 
> 7898: void Assembler::evexpandq(XMMRegister dst, KRegister mask, XMMRegister src, bool merge, int vector_len) {

Function "evpexpandq" for instruction "VPEXPANDQ"

src/hotspot/cpu/x86/assembler_x86.cpp line 11436:

> 11434: }
> 11435: 
> 11436: void Assembler::evcompressb(XMMRegister dst, KRegister mask, XMMRegister src, bool merge, int vector_len) {

No need to rename this function name. The corresponding instruction is "VPCOMPRESSB".

src/hotspot/cpu/x86/assembler_x86.cpp line 11448:

> 11446: }
> 11447: 
> 11448: void Assembler::evcompressw(XMMRegister dst, KRegister mask, XMMRegister src, bool merge, int vector_len) {

No need to rename this function name. The corresponding instruction is "VPCOMPRESSW".

src/hotspot/cpu/x86/assembler_x86.cpp line 11460:

> 11458: }
> 11459: 
> 11460: void Assembler::evcompressd(XMMRegister dst, KRegister mask, XMMRegister src, bool merge, int vector_len) {

No need to rename this function name. The corresponding instruction is "VPCOMPRESSD".

src/hotspot/cpu/x86/assembler_x86.cpp line 11472:

> 11470: }
> 11471: 
> 11472: void Assembler::evcompressq(XMMRegister dst, KRegister mask, XMMRegister src, bool merge, int vector_len) {

No need to rename this function name. The corresponding instruction is "VPCOMPRESSQ".

src/hotspot/cpu/x86/assembler_x86.hpp line 2551:

> 2549:   void evcompressq(XMMRegister dst, KRegister mask, XMMRegister src, bool merge, int vector_len);
> 2550:   void evcompressps(XMMRegister dst, KRegister mask, XMMRegister src, bool merge, int vector_len);
> 2551:   void evcompresspd(XMMRegister dst, KRegister mask, XMMRegister src, bool merge, int vector_len);

No need to change them. The function name in your change is not align with instruction name.

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

PR: https://git.openjdk.java.net/panama-vector/pull/146


More information about the panama-dev mailing list