-
Bug
-
Resolution: Fixed
-
P5
-
17, 21, 22
-
b08
-
arm
-
generic
Issue | Fix Version | Assignee | Priority | Status | Resolution | Resolved In Build |
---|---|---|---|---|---|---|
JDK-8327065 | 21.0.4 | Liang Mao | P4 | Resolved | Fixed | b01 |
Currently, encoding of prfm literal mode is wrong.
The prfm_literal instruction requires 31 and 30 bits to be 0x11, while current assembler encodes the two bits to be 0x11, which is a ldr instruction, not prfm.
For example, if adding the following code in stubGenerator
__ prfm(Address(__ pc()))
we get a ldr instruction like
ldr x0, 0x0000ffff83f8539c
but it should be a prfm instruction like
prfm pldl1keep, 0x0000ffff8ff8539c
Only literal mode encoding is wrong, other modes are good
The prfm_literal instruction requires 31 and 30 bits to be 0x11, while current assembler encodes the two bits to be 0x11, which is a ldr instruction, not prfm.
For example, if adding the following code in stubGenerator
__ prfm(Address(__ pc()))
we get a ldr instruction like
ldr x0, 0x0000ffff83f8539c
but it should be a prfm instruction like
prfm pldl1keep, 0x0000ffff8ff8539c
Only literal mode encoding is wrong, other modes are good