[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