CT_00_057 (2025-2H) - Improve Scalar code generation for cactuBSSN

CT_00_057 (2025-2H) - Improve Scalar code generation for cactuBSSN

This is an ongoing activity carries over from prior semesters: Please refer to 2024-2H and 2025-1H for background.

  • Cactu spills are coming from sched1 not reducing live range. Continue working on PR/114729 (partially addressed in gcc-15, more work to be done in this semester.
  • Paul-Antoine has noted redundant addi instructions PR/120811 that should have folded into a memory reference.  This is an unintended consequence of Vineet's fix misinteracting with mvconst_internal spiltter and is likely solveable by rewriting the addsi/addi expanders, then creating an add_ptr3 pattern that uses the same infrastructure
    • Doesn't directly solve the problem, but should set things up so that fold-mem-offsets can clean things up - this would reduce the cost of spill
  • Can we improve post-reload optimizers to help (assuming there's still notable amounts of code to fix)
    • Christophe has a major revamp of fold-mem-offsets which may help further
    • Can reload_cse help at least with removal of the totally redundant computations?
    • What about move2add?  Or is it getting neutered by hard register reuse?


Stakeholders/Partners

RISE:

Rivos: Vineet Gupta

Ventana: Jeff Law – general oversight / guidance, testing, regression fixing, etc.

External:


Dependencies



Status

Development

IN PROGRESS


Development Timeline1H2025
Upstreaming

IN PROGRESS



Upstream Version

gcc-16 (target)

(Spring 2026)




Contacts

Vineet Gupta (Rivos)

Jeff Law (Ventana)


DependenciesNone


Updates

 

  • Vineet's work dramatically reduced the number of scalar instructions, particularly those related to address computations.  I've forgotten the details, but it was a measurable improvement on Ventana's Veyron V2 design.
  • Paul-Antione has found some other scalar codegen issues PR/120811 that are being addressed under the wider space of mvconst_internal removal