[vectorIntrinsics+mask] RFR: 8264563: Add basic masking feature support for Vector API mask operations
Xiaohong Gong
xgong at openjdk.java.net
Fri Apr 2 09:37:35 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!
-------------
Commit messages:
- 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=00
Issue: https://bugs.openjdk.java.net/browse/JDK-8264563
Stats: 2360 lines in 76 files changed: 1647 ins; 223 del; 490 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