Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Add zNext support #7525

Open
wants to merge 7 commits into
base: master
Choose a base branch
from
Open

Add zNext support #7525

wants to merge 7 commits into from

Conversation

r30shah
Copy link
Contributor

@r30shah r30shah commented Nov 5, 2024

Changes in this PR adds following supporting changes for zNext processor and its
exploitation.

  1. Add processor recognition and facility checks for zNext
  2. Add zNext instructions
  3. Supporting changes for emulating zNext instructions on older IBM Z hardware.
  4. Use load indexed address instructions on zNext for aladd and aiadd
    -Adds support for generating load indexed address instructions for the
    add tree in axaddEvaluator when the tree has the correct shape.
  5. Add use of Count leading and trailing zeros instruction on zNext
    • For inotz/lnotz/inolz/lnolz nodes, use these new zNext instruction.
  6. Supporting changes to accelerate ExternalDecimal.checkExternalDecimal in
    OpenJ9.

Spencer-Comin and others added 7 commits November 4, 2024 21:33
Changes in this commit adds support for zNext instructions as well as
adds processor recognition and facility checks.

Signed-off-by: Spencer Comin <[email protected]>
Emulating the instructions when support is not availble on hardware
allows testing of exploitation that uses zNext instructions on older
IBM Z hardware. Changes in this commits adds necessary changes for
emulating zNext instructions.

Signed-off-by: Spencer Comin <[email protected]>
Adds support for generating load indexed address instructions for the
add tree in axaddEvaluator when the tree has the correct shape.

Signed-off-by: Spencer Comin <[email protected]>
Changes in this commit adds exploitation of Count leading and trailing
zeros on zNext for opcodes i/lnolz and i/lnotz respectively.
Apart from using the zNext instructions for these opcodes, this commit
also adds supporting changes to enable zNext emulation for these zNext
instructions.

Signed-off-by: Dhruv Chopra <[email protected]>
Accelerate Integer.expand, Integer.compress, Long.expand, and
Long.compress using the BDEPG and BEXTG instructions in zNext.

Signed-off-by: Spencer Comin <[email protected]>
Moving canEmulate enables us to check if emulation is enabled and if the
instruction op code supports emulation through a single call.

Signed-off-by: Shubham Verma <[email protected]>
Accelerate DAA ExternalDecimal.checkExternalDecimal api for verifying
Zoned/External decimals using zNext instruction, Vector Test Zoned. This
commit also includes changes required for generating Vector Test Zoned
instruction.

Signed-off-by: Shubham Verma <[email protected]>
@r30shah
Copy link
Contributor Author

r30shah commented Nov 5, 2024

FYI @dchopra001 @VermaSh @Spencer-Comin

@r30shah
Copy link
Contributor Author

r30shah commented Nov 8, 2024

@joransiu @0xdaryl Can we please get review on these changes ?

This PR should be merge with OpenJ9 PR : eclipse-openj9/openj9#20507

@0xdaryl
Copy link
Contributor

0xdaryl commented Nov 11, 2024

I can review for general structural correctness, but for the actual architectural changes I will defer to Joran's expertise.

*/
bool yankIndexScalingOp()
{
return false;
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This should probably return arch < zNext or check for LXA support instead of always returning false

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

Successfully merging this pull request may close these issues.

5 participants