Skip to end of metadata
Go to start of metadata

You are viewing an old version of this page. View the current version.

Compare with Current View Page History

« Previous Version 3 Next »

Constant synthesis was greatly improved during 1H 2024.  The areas noted here are exploratory and thus some ideas may be useful, some may not.  These are primarily meant to improve pack sequences, though they may be helpful for designs without Zbkb.


Areas to explore:

  1. For a constant where the high and low halves only differ by a few bits, consider using pack as an intermediate step and the Zbs instructions to make final adjustments.
  2. When possible derive the upper and lower halves from a common sequence, so for example sharing a lui
  3. Similarly for cases where the high half can be constructed by merely shifting the low half.
  4. Improve handling of constants where the upper and lower 32bit halves are the same and zbkb is not available.  It is believed this is a relatively small adjustment to the existing code.
  5. 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 – 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 YET STARTED


Development Timeline1H2024
Upstreaming

NOT YET STARTED



Upstream Version

gcc-15 (target)

(Spring 2025)





Contacts

Jeff Law (Ventana)


DependenciesNone


Updates

 

  • Noted as 2H 2024 work item
  • No labels