Commit d67b3db
committed
PPC64: P10 prefixed-load fast paths for loadPtr/loadDouble/loadFloat32/loadUnalignedSimd128 (Address)
Adds a HasPOWER10()+34-bit-signed-offset fast path before the
movePtr+indexed-load fallback in:
- loadPtr(Address) → as_pld
- loadDouble(Address) → as_plfd
- loadFloat32(Address) → as_plfs
- loadUnalignedSimd128(Address) → as_plxv
Each replaces the 2-insn `movePtr scratch + lXdx` sequence (plus a
GPR scratch acquire) with a single 8-byte prefixed load when the
offset fits 34-bit signed. Hot on deep stack frames where slot
offsets exceed 16-bit signed (loadPtr) and on FP/SIMD reads from
constant-offset structure fields. The DS-form (loadPtr) and 16-bit-
signed (loadDouble/Float32) fast paths are still preferred when
applicable — they're 4 bytes vs 8 for the prefixed form.
All four emitters (`as_pld` / `as_plfd` / `as_plfs` / `as_plxv`)
were already wired and used elsewhere; this commit only plumbs them
into the Address-form load helpers.
Verified across the verification matrix:
- Real-P9 (`obj-sm-dbgopt`): wasm/large-memory + wasm/memory +
wasm/spec/spec/address + ion + basic 3958/0
- Real-P10 (`power10`): same suite 3958/0
- ARM64 sim FORCE_POWER10: same suite 3958/0
Closes PLAN.md candidates mozilla-firefox#19 (read-side), mozilla-firefox#29, mozilla-firefox#30. Item mozilla-firefox#31
(prefixed-store side) still pending — it needs new emitters
(as_pstd/as_pstfd/as_pstfs/as_pstxv) and matching sim decoders.1 parent ec23585 commit d67b3db
2 files changed
Lines changed: 21 additions & 0 deletions
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
3315 | 3315 | | |
3316 | 3316 | | |
3317 | 3317 | | |
| 3318 | + | |
| 3319 | + | |
| 3320 | + | |
| 3321 | + | |
| 3322 | + | |
| 3323 | + | |
3318 | 3324 | | |
3319 | 3325 | | |
3320 | 3326 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
1439 | 1439 | | |
1440 | 1440 | | |
1441 | 1441 | | |
| 1442 | + | |
| 1443 | + | |
| 1444 | + | |
| 1445 | + | |
| 1446 | + | |
1442 | 1447 | | |
1443 | 1448 | | |
1444 | 1449 | | |
| |||
1474 | 1479 | | |
1475 | 1480 | | |
1476 | 1481 | | |
| 1482 | + | |
| 1483 | + | |
| 1484 | + | |
| 1485 | + | |
| 1486 | + | |
1477 | 1487 | | |
1478 | 1488 | | |
1479 | 1489 | | |
| |||
1495 | 1505 | | |
1496 | 1506 | | |
1497 | 1507 | | |
| 1508 | + | |
| 1509 | + | |
| 1510 | + | |
| 1511 | + | |
| 1512 | + | |
1498 | 1513 | | |
1499 | 1514 | | |
1500 | 1515 | | |
| |||
0 commit comments