-
Bug
-
Resolution: Fixed
-
P3
-
19, 20
-
b28
-
aarch64
Issue | Fix Version | Assignee | Priority | Status | Resolution | Resolved In Build |
---|---|---|---|---|---|---|
JDK-8288774 | 20 | Xiaohong Gong | P3 | Resolved | Fixed | b03 |
JDK-8291265 | 19.0.2 | Xiaohong Gong | P3 | Resolved | Fixed | b01 |
JDK-8291097 | 19.0.1 | Xiaohong Gong | P3 | Resolved | Fixed | b04 |
There are register issues in the sve backend match rules like "and_masked", "gatherL/scatterL".
The predicated vector "not" rules didn't use the same register for "src" and "dst", which is necessary to make sure the inactive lanes in "dst" save the same elements as "src". This could make the following results in array "ir" incorrect:
```
VectorMask<Integer> mask = VectorMask.fromArray(I_SPECIES, m, 0);
IntVector av = IntVector.fromArray(I_SPECIES, ia, 0);
av.lanewise(VectorOperators.NOT, mask).add(av).intoArray(ir, 0);
```
And the input idx register in "gatherL/scatterL" rules was overwritten by the first unpack instruction. The same issue also existed in the partial and predicated gatherL/scatterL rules. The following case could reproduce this issue that the results in "ir" are incorrect:
```
LongVector av = LongVector.fromArray(L_SPECIES, la, 0, ia, 0);
av.intoArray(lr, 0);
IntVector bv = IntVector.fromArray(I_SPECIES, ia, 0);
bv.add(0).intoArray(ir, 0);
```
The predicated vector "not" rules didn't use the same register for "src" and "dst", which is necessary to make sure the inactive lanes in "dst" save the same elements as "src". This could make the following results in array "ir" incorrect:
```
VectorMask<Integer> mask = VectorMask.fromArray(I_SPECIES, m, 0);
IntVector av = IntVector.fromArray(I_SPECIES, ia, 0);
av.lanewise(VectorOperators.NOT, mask).add(av).intoArray(ir, 0);
```
And the input idx register in "gatherL/scatterL" rules was overwritten by the first unpack instruction. The same issue also existed in the partial and predicated gatherL/scatterL rules. The following case could reproduce this issue that the results in "ir" are incorrect:
```
LongVector av = LongVector.fromArray(L_SPECIES, la, 0, ia, 0);
av.intoArray(lr, 0);
IntVector bv = IntVector.fromArray(I_SPECIES, ia, 0);
bv.add(0).intoArray(ir, 0);
```
- backported by
-
JDK-8288774 AArch64: Fix register issues in SVE backend match rules
-
- Resolved
-
-
JDK-8291097 AArch64: Fix register issues in SVE backend match rules
-
- Resolved
-
-
JDK-8291265 AArch64: Fix register issues in SVE backend match rules
-
- Resolved
-
- relates to
-
JDK-8271515 Integration of JEP 417: Vector API (Third Incubator)
-
- Resolved
-
(1 links to)