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