-
Enhancement
-
Resolution: Fixed
-
P4
-
17, 21, 22
-
b26
-
generic
-
generic
Issue | Fix Version | Assignee | Priority | Status | Resolution | Resolved In Build |
---|---|---|---|---|---|---|
JDK-8334141 | 21.0.5 | Aleksey Shipilev | P4 | Resolved | Fixed | b01 |
JDK-8334266 | 17.0.13 | Xiaolong Peng | P4 | Resolved | Fixed | b01 |
Macro-assembler on aarch64 can merge adjacent loads or stores
into ldp/stp. For example, it can merge:
```
str w20, [sp, #16]
str w10, [sp, #20]
```
into
```
stp w20, w10, [sp, #16]
```
But C2 may generate a sequence like:
```
str x21, [sp, #8]
str w20, [sp, #16]
str x19, [sp, #24]
str w10, [sp, #20]
str x11, [sp, #40]
str w13, [sp, #48]
str x16, [sp, #56]
```
We can't do any merging for non-adjacent loads or stores.
into ldp/stp. For example, it can merge:
```
str w20, [sp, #16]
str w10, [sp, #20]
```
into
```
stp w20, w10, [sp, #16]
```
But C2 may generate a sequence like:
```
str x21, [sp, #8]
str w20, [sp, #16]
str x19, [sp, #24]
str w10, [sp, #20]
str x11, [sp, #40]
str w13, [sp, #48]
str x16, [sp, #56]
```
We can't do any merging for non-adjacent loads or stores.
- backported by
-
JDK-8334141 C2: Sort spilling/unspilling sequence for better ld/st merging into ldp/stp on AArch64
- Resolved
-
JDK-8334266 C2: Sort spilling/unspilling sequence for better ld/st merging into ldp/stp on AArch64
- Resolved
- links to
-
Commit openjdk/jdk17u-dev/dad6c6bb
-
Commit openjdk/jdk21u-dev/a86d0429
-
Commit openjdk/jdk/3ccd02f1
-
Review openjdk/jdk17u-dev/2535
-
Review openjdk/jdk21u-dev/665
-
Review openjdk/jdk/16754
(3 links to)