[vectorIntrinsics] RFR: 8285281: [x86] Add C2 mid-end and back-end implementation for COMPRESS_BITS and EXPAND_BITS operations

Jatin Bhateja jbhateja at openjdk.java.net
Thu Apr 21 13:21:24 UTC 2022


Summary of changes:
- Patch intrinsifies following newly added Java SE APIs
   1.  Integer.compress  
   2.  Integer.expand
   3.  Long.compress
   4.  Long.expand
- Adds C2 IR nodes and corresponding ideal transformations for new operations.
- Inline expansion of  new vector operations COMPRESS_BITS and  EXPAND_BITS are performed using their scalar counterparts and lane insertion/extraction operations.
- Performance of JIT sequence generated using above approach vs directly vectorizing scalar algorithm using existing vector APIs is within in +/-%10 range depending on the width of the operation, since X86 offers direct instructions PEXT/PDEP for parallel bit extraction and deposition operations hence performance of scalar loop is always superior to corresponding vector  operations.
- Adds an  IR framework based test to validate newly introduced IR transformations.

Kindly review and share your feedback.

Best Regards,
Jatin

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

Commit messages:
 - 8285281: Removing redundant import statement.
 - 8285281: Add C2 mid-end and back-end implementation for bit COMPRESS_BITS and EXPAND_BITS operations

Changes: https://git.openjdk.java.net/panama-vector/pull/195/files
 Webrev: https://webrevs.openjdk.java.net/?repo=panama-vector&pr=195&range=00
  Issue: https://bugs.openjdk.java.net/browse/JDK-8285281
  Stats: 708 lines in 21 files changed: 669 ins; 19 del; 20 mod
  Patch: https://git.openjdk.java.net/panama-vector/pull/195.diff
  Fetch: git fetch https://git.openjdk.java.net/panama-vector pull/195/head:pull/195

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


More information about the panama-dev mailing list