[vectorIntrinsics+mask] RFR: 8264563: Add masked vector intrinsics for binary/store operations [v3]

Xiaohong Gong xgong at openjdk.java.net
Thu Apr 8 09:15:48 UTC 2021


> Hi, this is the basic masking support PR for Vector API mask operations on platforms like SVE/AVX-512. The main codes are from [1], which contains:
> 
> - The predicate register allocation for Arm SVE, and vector mask type definition.
> - The basic optimization for parts of the mask operations with masking feature. It contains:   
>  
>   1. Vector API java implementation changes for masked binary/store.
>   2. C2 compiler mid-end changes, including new vector intrinsics implementation and mask IRs.
> 
> Note that for easier discussion, this PR only provides the changes for limited masked operations (e.g. binary/store) and the mask generations (e.g. load/compare/maskAll). We will continue working on the following missing parts:
> 
> - Mask support for other operations (unary,ternary,reduction,load,etc.)
> - More mask IRs implementation (and/or/xor, toVector, allTrue, anyTrue, trueCount, eq, etc)
> - Vector boxing/unboxing support for mask type (deoptimization support for predicate registers)
> 
> Also note that this PR doesn't contain any backend implementations. So the blend pattern will be generated as before. Regarding to the AArch64 SVE backend support, we will create a separate PR based on this one in future.
>   
> [1] https://github.com/openjdk/panama-vector/pull/40
> 
> See more details from:
> http://cr.openjdk.java.net/~xgong/rfr/mask/Vector%20API%20masking%20support%20proposal%20for%20Arm%20SVE.pdf
> http://cr.openjdk.java.net/~xgong/rfr/mask/VectorAPI%20masking%20support.pdf
> 
> Any suggestions and discussions are welcome! Thanks a lot!

Xiaohong Gong has updated the pull request with a new target base due to a merge or a rebase. The pull request now contains four commits:

 - Merge branch 'vectorIntrinsics+mask' into 8264563
 - Revert changes of register allocation and new added mask IRs
 - 8264563: Add basic masking feature support for Vector API mask operations
 - SVE predicate register allocation support

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

Changes: https://git.openjdk.java.net/panama-vector/pull/57/files
 Webrev: https://webrevs.openjdk.java.net/?repo=panama-vector&pr=57&range=02
  Stats: 1590 lines in 52 files changed: 998 ins; 215 del; 377 mod
  Patch: https://git.openjdk.java.net/panama-vector/pull/57.diff
  Fetch: git fetch https://git.openjdk.java.net/panama-vector pull/57/head:pull/57

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


More information about the panama-dev mailing list