[aarch64-port-dev ] RFR: 8157906: aarch64: some more integer rotate instructions are never emitted
Felix Yang
felix.yang at linaro.org
Thu May 26 17:26:49 UTC 2016
Hi,
Please review webrev: http://cr.openjdk.java.net/~fyang/8157906/webrev.00
JIRA issue: https://bugs.openjdk.java.net/browse/JDK-8157906
This patch has been contributed by teng.lu at linaro.org
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.
Tested with fastdebug jtreg hotspot and langtools, OK to push?
Simple 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);
}
}
}
JIT code snippet before change:
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 at 7 (line 1751)
JIT code snippet after change:
0x0000007f6cd135d4: neg w8, w2
0x0000007f6cd135d8: ror w0, w1, w8 ;*ior {reexecute=0 rethrow=0
return_oop=0}
; -
java.lang.Integer::rotateLeft at 7 (line 1751)
More information about the aarch64-port-dev
mailing list