CT_00_042 -- Additional Constant Synthesis Improvements

Constant synthesis was greatly improved during 2024.  The areas noted here are exploratory and thus some ideas may be useful, some may not. 


Areas to explore:

  1. When possible derive the upper and lower halves from a common sequence, so for example sharing a lui
    1. This can be handled during synthesis
    2. May also be capturable during reload_move2add
  2. Reevaluate the mvconst_internal pattern.   There's some belief that it could be eliminated or used much less often.  Right now it "lies" to the combiner and indicates it can load an arbitrary 64bit constant as a single instruction.  That's a useful property when we can to combine the constant in another instruction, but it's painful in other ways such as its interaction with the code to improve additional of constants that are not simm12, but are 2*simm12.


Stakeholders/Partners

RISE:

Ventana: Jeff Law & Raphael Zinsly – general oversight / guidance and implementation work.

Rivos: Vineet Gupta – generally interested in constant synthesis and has some state on #5 above.

External:



Dependencies



Status

Development

NOT STARTED


Development Timeline1H2025
Upstreaming

NOT STARTED



Upstream Version

gcc-16 (target)

(Spring 2026)





Contacts

Jeff Law (Ventana)


DependenciesNone


Updates

 

  • Items not likely to land in 2H 2024 moved out into new item for 2025