Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

...

Sixth, investigate Ajit's work (IBM) to exploit cases where masking can be viewed as zero-extension within REE.


Seventh, in the extension elimination pass, handle things like (any_extend:DI (ashift: SI ...)).  The extension will be replaced by a SUBREG, which we can then push into the operands creating word-sized operations.  That eliminates the unnecessary extension can can help code like this:


Code Block
void foo(unsigned char *data, unsigned int lo_bit) {
  unsigned int mask = ((1UL << 1) - 1) << lo_bit;
  *data = (*data & ~mask) | ((1 << lo_bit) & mask);
}



Stakeholders/Partners

RISE:

...

Page Properties


Development

Status
colourBlue
titleIN PROGRESS


Development Timeline1H2024
Upstreaming

Status
colourBlue
titleIN PROGRESS


Upstream Version

gcc-15

Spring 2025




Contacts

Jeff Law (Ventana)


Dependencies

None




Updates

  • Note additional case we should add to ext-dce. 

 

  • 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.

...