Skip to content

Conversation

@graalvmbot
Copy link
Collaborator

Hi,

This is due to me misunderstanding what can orr v, imm do. It turns out that a vector of long and imm = 1L << 32 is not a valid combination. The solution is to change the computation from:

tmp1 = src * 2;
tmp2 = tmp1 << 32;
tmp2 = tmp2 | (1L << 32);
dst = tmp1 | tmp2

into:

tmp1 = src * 2;
tmp2 = tmp1 | ((1L << 32) | 1); // This means that we reinterpret tmp1 as a vector of int, the bit in the upper half will be shifted away
tmp2 = tmp2 << 32;
dst = tmp1 | tmp2;

Please review, thanks a lot.

@oracle-contributor-agreement oracle-contributor-agreement bot added the OCA Verified All contributors have signed the Oracle Contributor Agreement. label Apr 22, 2025
@graalvmbot graalvmbot closed this Apr 22, 2025
@graalvmbot graalvmbot deleted the qam/aarchrearrange branch April 22, 2025 15:14
@graalvmbot graalvmbot merged commit 7d39a7a into master Apr 22, 2025
3 of 13 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

OCA Verified All contributors have signed the Oracle Contributor Agreement.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants