CT_00_024 - Extension Elimination (GCC)

About

These are tasks carried forward from 2H2023 and some additional work identified in 2024


The extension-dce work that was started in 2H2024.  This is a new optimization pass which is designed to track liveness of the result of sign/zero extension instructions.  If the bits set by a sign/zero extension are never read and never escape (implicitly read), then the extension is useless and can potentially be removed.  This is expected to improve x264's scalar implementation by roughly 1%.  It is also expected to be a very small improvement to the coremark benchmark.  Other codes show very small improvements.  This code was originally targeted at gcc-14 (Spring 2024), but it was decided to wait rather than push integration of the code well after feature freeze.



Stakeholders/Partners

RISE:

Ventana: 1 FTE Jivan Hakobyan and Jeff Law

Rivos: Vineet (part time)

External:

The original idea for and implementation of the ext-dce pass was from Joern Rennecke at EMBECOSM.


Dependencies


Status

Development

COMPLETE


Development Timeline1H2024
Upstreaming

COMPLETED


Upstream Version

gcc-15

Spring 2025




Contacts

Jeff Law (Ventana)


Dependencies

None



Updates

  • New ext-dce pass has been integrated. 

  • Breaking out additional items as 2H2024 work 

  • Note additional case we should add to ext-dce. 
  • Note Jivan has taken care of extensions following fp→int conversions.   It will be submitted once gcc-15 is open for development.

 

  • Note the two additional identified opportunities to remove redundant sign extensions.  Change development state to in-progress.
  • Added yet another idea for ABI defined extension elimination in REE.

 

  • Carried over unfinished items from 2H2023 plan
  • Jivan's patch for catching corner cases of promoted objects integrated into tester