Issue | Fix Version | Assignee | Priority | Status | Resolution | Resolved In Build |
---|---|---|---|---|---|---|
JDK-8260781 | openjdk8u292 | Andrew Hughes | P4 | Resolved | Fixed | b01 |
The left rotate instructions have the same issue with https://bugs.openjdk.java.net/browse/JDK-8154537.
(src << shift) | (src >>> -shift) with src an int have some support in the aarch64.ad ad file: rolI_rReg_Var_C_32 and rolI_rReg_Var_C0, but their definitions is broken and never match any ideal graph subtree.
Simpe test case:
import java.lang.Integer.*;
public class test {
public static int foo (int x) {
return Integer.rotateLeft(x, 1);
}
public static void main(String[] args) {
int x = 0x1234;
for (int i = 0; i < 50000; i++) {
x = foo(x);
}
}
}
before optimizing:
0x0000007f74d13454: neg w11, w2
0x0000007f74d13458: lsr w12, w1, w11
0x0000007f74d1345c: lsl w10, w1, w2
0x0000007f74d13460: orr w0, w10, w12 ;*ior {reexecute=0 rethrow=0 return_oop=0}
; - java.lang.Integer::rotateLeft@7 (line 1751)
after optimizing:
0x0000007f6cd135d4: neg w8, w2
0x0000007f6cd135d8: ror w0, w1, w8 ;*ior {reexecute=0 rethrow=0 return_oop=0}
; - java.lang.Integer::rotateLeft@7 (line 1751)
(src << shift) | (src >>> -shift) with src an int have some support in the aarch64.ad ad file: rolI_rReg_Var_C_32 and rolI_rReg_Var_C0, but their definitions is broken and never match any ideal graph subtree.
Simpe test case:
import java.lang.Integer.*;
public class test {
public static int foo (int x) {
return Integer.rotateLeft(x, 1);
}
public static void main(String[] args) {
int x = 0x1234;
for (int i = 0; i < 50000; i++) {
x = foo(x);
}
}
}
before optimizing:
0x0000007f74d13454: neg w11, w2
0x0000007f74d13458: lsr w12, w1, w11
0x0000007f74d1345c: lsl w10, w1, w2
0x0000007f74d13460: orr w0, w10, w12 ;*ior {reexecute=0 rethrow=0 return_oop=0}
; - java.lang.Integer::rotateLeft@7 (line 1751)
after optimizing:
0x0000007f6cd135d4: neg w8, w2
0x0000007f6cd135d8: ror w0, w1, w8 ;*ior {reexecute=0 rethrow=0 return_oop=0}
; - java.lang.Integer::rotateLeft@7 (line 1751)
- backported by
-
JDK-8260781 aarch64: some more integer rotate instructions are never emitted
- Resolved
- relates to
-
JDK-8257192 Integrate AArch64 JIT port into 8u
- Resolved