Details
-
Bug
-
Resolution: Fixed
-
P2
-
11, 17, 21
-
b23
-
aarch64
-
generic
-
Verified
Backports
Issue | Fix Version | Assignee | Priority | Status | Resolution | Resolved In Build |
---|---|---|---|---|---|---|
JDK-8310213 | 17.0.9-oracle | Tobias Hartmann | P2 | Closed | Fixed | b01 |
JDK-8309912 | 17.0.9 | Ningsheng Jian | P2 | Resolved | Fixed | b01 |
JDK-8313681 | 11.0.22-oracle | Tobias Hartmann | P2 | Closed | Fixed | b01 |
JDK-8311928 | 11.0.21 | Ningsheng Jian | P2 | Resolved | Fixed | b01 |
Description
import java.util.Arrays;
import java.util.Random;
public class RegStress {
char [] ca;
char [] cb;
char [] cc;
final int LENGTH = 1024;
final int ITER = 20000;
final int NUM = 20;
float [] fv;
int result = 0;
public void init() {
ca = new char[LENGTH];
fv = new float[NUM];
for (int i = 0; i < 20; i++) {
fv[i] = i;
}
for (int i = 0; i < LENGTH; i++) {
ca[i] = 0;
}
cb = ca.clone();
cc = ca.clone();
}
public void checkArraysEquals() {
float t1 = fv[0] + fv[1] + fv[2] + fv[3] + fv[4]
+ fv[5] + fv[6] + fv[7] + fv[8] + fv[9]
+ fv[10] + fv[11] + fv[12] + fv[13] + fv[14]
+ fv[15] + fv[16] + fv[17] + fv[18] + fv[19];
float t2 = 1.0f;
if (Arrays.equals(ca, cb)) {
t2 += fv[0] - fv[1] - fv[2] - fv[3] - fv[4]
+ fv[5] - fv[6] - fv[7] - fv[8] - fv[9]
+ fv[10] - fv[11] - fv[12] - fv[13] - fv[14]
+ fv[15] - fv[16] - fv[17] - fv[18] - fv[19];
}
fv[19] = t1 + t2;
}
public void test() {
for (int i = 0; i < ITER; i++) {
checkArraysEquals();
}
}
public void getResults() {
System.out.println(fv[19]);
}
public static void main(String [] args) {
RegStress t = new RegStress();
t.init();
t.test();
t.getResults();
}
}
Some other macroassemblers which have similar issue: encode_iso_array, string_indexof, arrays_equals, char_array_compress, byte_array_inflate, also need to be fixed.
Attachments
Issue Links
- backported by
-
JDK-8309912 AArch64: Vector registers are clobbered by some macroassemblers
- Resolved
-
JDK-8311928 AArch64: Vector registers are clobbered by some macroassemblers
- Resolved
-
JDK-8310213 AArch64: Vector registers are clobbered by some macroassemblers
- Closed
-
JDK-8313681 AArch64: Vector registers are clobbered by some macroassemblers
- Closed
- relates to
-
JDK-8187472 AARCH64: array_equals intrinsic doesn't use prefetch for large arrays
- Resolved
-
JDK-8189103 AARCH64: optimize String indexOf intrinsic
- Resolved
-
JDK-8189112 AARCH64: optimize StringUTF16 compress intrinsic
- Resolved
-
JDK-8189113 AARCH64: StringLatin1 inflate intrinsic doesn't use prefetch instruction
- Resolved
-
JDK-8313619 TestIntrinsicsRegStress.java fails on SPARC
- Resolved
- links to
-
Commit openjdk/jdk11u-dev/32e16aef
-
Commit openjdk/jdk17u-dev/e8980486
-
Commit openjdk/jdk/33d9a857
-
Review openjdk/jdk11u-dev/2032
-
Review openjdk/jdk17u-dev/1406
-
Review openjdk/jdk/13895