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 17 Next »

About

The ZiCondops extension provides a conditional zero primitive upon which subsets of conditional move and conditional arithmetic/logical operations can be implemented.   Transforming control flow into conditional operations can improve code performance by eliminating branch mispredict costs as well as reducing the load on the branch predictors.  The earlier in the optimizer pipeline these transformations are performed the more likely they are to expose secondary optimization opportunities as well since the transformations result in larger basic blocks (a fundamental unit of code most compiler optimizations work on).


This work consists of 3 subprojects:

  1. Basic ZICondops patterns in the RISC-V target description
    1. VRULL + Ventana
  2. Improvements to generate those patterns early in the RTL optimizer pipeline
    1. Ventana (primarily Raphael's work with bugfixing from Jeff)
  3. Improvements to the if-converter to consistently utilize the conditional zero primitive provided by ZICondops
    1. Mixed work from VRULL and Ventana


Evaluation of the initial implementation has indicated that idioms to implement 32 bit operations on rv64 are consistently not if-converted.  Improvements to capture those cases are in progress.

Stakeholders/Partners

RISE:

Ventana: 1 FTE (Christoph Muellner and Philipp Tomsich) for initial development

Ventana: 1 FTE, ~12 wks.  Raphael Zinsly. Revamped basic support in preparation for upstreaming, support for conditional 32bit ops, conditional move support early in the compiler optimization pipeline

Ventana: Jeff Law.  Integration of Raphael's work with upcoming changes from Philipp.

Rivos: Oversight & review

SiFive: Oversight

External:

VRULL: Philipp Tomsich.  Ongoing updates


Dependencies

Binutils needs to have ZICondops approved before compilers can utilize it.

QEMU needs Zicondops support if it hasn't been upstreamed already


Status

Development

ONGOING


Development TimelineNA
Upstreaming

ONGOING


Upstream Version





Contacts

Philip Tomsich (VRULL)

Raphael Zinsly (Ventana)

Jeff Law (Ventana)


Dependencies

QEMU Zicond



Updates

 

  • Slow movement here has resulted in a "competing" implementation.

 

  • Manolis from VRULL has started posting some of the generic work to facilitate use of Zicond/Xventanacondops
  • Jeff from Ventana continues to fix bugs in code which exposes Zicond/Xventanacondops to tree→RTL expansion code  (internal to Ventana right now, but definitely planned to upstream)

 

  • Binutils dependency has been resolved (Zicondops will appear in binutils-2.41 in July)
  • VRULL will repost their work.  Ventana will coordinate with VRULL on review/updates
  • Note QEMU dependency
  • Consistent reporting of stakeholders/partners

 

  • ZICondops binutils patch (re)approved

– Dates on or before June 15 are approximate

 

  • Project reported as priority for 2H23


  • No labels