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

Investigate use of vector sequence for fselect #5002

Closed
fjeremic opened this issue Mar 30, 2020 · 0 comments · Fixed by #7130
Closed

Investigate use of vector sequence for fselect #5002

fjeremic opened this issue Mar 30, 2020 · 0 comments · Fixed by #7130

Comments

@fjeremic
Copy link
Contributor

Over in #4996 there was a review comment made [1] about the potential of using the vector sequence to handle float data types as well. It seems some issues were encountered when this was first attempted which we need to further investigate. We should try to enable vector support for floats in the dselectEvaluator as well.

[1] #4996 (comment)

@0xdaryl 0xdaryl added the backlog label Feb 1, 2021
sarwat12 added a commit to sarwat12/omr that referenced this issue Nov 6, 2023
Previously vector instructions were not produced for handling floats alongside double data types within the select evaluator. This PR addresses the use of vector instructions for both data types by:

- Use of LLGFR instruction for doubles for zero-extending a 32 bit conditionReg to 64 bits
- Use of separate SLLG instruction for floats to preserve the float representation of the first 32 bits as it is later moved into FPR
- Addition of mask values in the VFCE instruction to get the element size mask for floats and doubles respectively

Closes: eclipse#5002

Signed-off-by: Sarwat Shaheen [email protected]
sarwat12 added a commit to sarwat12/omr that referenced this issue Nov 6, 2023
This PR addresses the use of vector instructions to handle short format floats in the **fselect** evaluator on z14 and newer platforms, by taking advantage of the long format in vector instructions already supported for the **dselect** evaluator.

- Use of LLGFR instruction for doubles for zero-extending a 32 bit conditionReg to 64 bits
- Use of separate SLLG instruction for floats to preserve the float representation of the first 32 bits as it is later moved into FPR
- Addition of mask values in the VFCE instruction to get the element size mask for floats and doubles respectively

Closes: eclipse#5002

Signed-off-by: Sarwat Shaheen [email protected]
sarwat12 added a commit to sarwat12/omr that referenced this issue Nov 6, 2023
This commit addresses the use of vector instructions to handle short format floats in the **select** evaluator.
Previously, the use of vector instructions for short format in the select evaluator was disabled, even though on z14 and newer platforms it is supported. The issue was caused by not correctly converting the condition code from GPR to FPR for short format. Changes for enabling vector instructions for short format:

- Use of LLGFR instruction for long format doubles for zero-extending a 32 bit conditionReg to 64 bits
- Use of separate SLLG instruction for short format floats to preserve the float representation of the first 32 bits as it is later moved into FPR
- Addition of mask values in the VFCE instruction to get the element size mask for floats and doubles respectively

Closes: eclipse#5002

Signed-off-by: Sarwat Shaheen [email protected]
sarwat12 added a commit to sarwat12/omr that referenced this issue Nov 6, 2023
This commit addresses the use of vector instructions to handle short format in the **select** evaluator.
Previously, the use of vector instructions for short format in the select evaluator was disabled, even though on z14 and newer platforms, it is supported. The issue was caused by not correctly converting the condition code from GPR to FPR for short format. Changes for enabling vector instructions for short format:

- Use of LLGFR instruction for long format for zero-extending a 32 bit conditionReg to 64 bits
- Use of separate SLLG instruction for short format floats to preserve the float representation of the first 32 bits as it is later moved into FPR
- Addition of mask values in the VFCE instruction to get the element size mask for floats and doubles respectively

Closes: eclipse#5002

Signed-off-by: Sarwat Shaheen [email protected]
sarwat12 added a commit to sarwat12/omr that referenced this issue Nov 6, 2023
This commit addresses the use of vector instructions to handle short format in the **select** evaluator.
Previously, the use of vector instructions for short format in the select evaluator was disabled, even though on z14 and newer platforms, it is supported. The issue was caused by not correctly converting the condition code from GPR to FPR for short format. Changes for enabling vector instructions for short format:

- Use of LLGFR instruction for long format for zero-extending a 32 bit conditionReg to 64 bits
- Use of separate SLLG instruction for short format floats to preserve the float representation of the first 32 bits as it is later moved into FPR
- Addition of mask values in the VFCE instruction to get the element size mask for floats and doubles respectively

Closes: eclipse#5002

Signed-off-by: Sarwat Shaheen [email protected]
sarwat12 added a commit to sarwat12/omr that referenced this issue Nov 7, 2023
This commit addresses the use of vector instructions to handle short format in the **select** evaluator.
Previously, the use of vector instructions for short format in the select evaluator was disabled, even though on z14 and newer platforms, it is supported. The issue was caused by not correctly converting the condition code from GPR to FPR for short format. Changes for enabling vector instructions for short format:

- Use of LLGFR instruction for long format for zero-extending a 32 bit conditionReg to 64 bits
- Use of separate SLLG instruction for short format floats to preserve the float representation of the first 32 bits as it is later moved into FPR
- Addition of mask values in the VFCE instruction to get the element size mask for floats and doubles respectively

Closes: eclipse#5002

Signed-off-by: Sarwat Shaheen [email protected]
sarwat12 added a commit to sarwat12/omr that referenced this issue Nov 23, 2023
This commit addresses the use of vector instructions to handle short format in the **select** evaluator.
Previously, the use of vector instructions for short format in the select evaluator was disabled, even though on z14 and newer platforms, it is supported. The issue was caused by not correctly converting the condition code from GPR to FPR for short format. Changes for enabling vector instructions for short format:

- Use of LLGFR instruction for long format for zero-extending a 32 bit conditionReg to 64 bits
- Use of separate SLLG instruction for short format floats to preserve the float representation of the first 32 bits as it is later moved into FPR
- Addition of mask values in the VFCE instruction to get the element size mask for floats and doubles respectively

Closes: eclipse#5002

Signed-off-by: Sarwat Shaheen [email protected]
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

Successfully merging a pull request may close this issue.

2 participants