...
xalancbmk's bitset implementation has a redundant bit clear before setting the same bit. This can be fixed in a generic way with an additional logical simplification patternbext can be used to extract a single bit, storing the result into an SImode object, even for rv64 since bits 1..63 will be zero'd by the (&1) operation in the bext specification.~(1 << N) & C can be safely used for a 32bit object on rv64 when C has 33 or more leading zeros(1 << N) | C and (1 << N) ^ C can be safely used when the logical XOR/IOR is done in DImode since we don't have to worry about sign-extending a DImode objectAn explicit extension of SImode (1 << N) to DImode can be handled with a simple bset with x0 as a source operandOccasionally GCC will use a "zero_extract" as a destination for some bifield insertions which can be handled with bset/bclrWhen the shift count is masked such that we know bit 31 is not changed we can more aggressively generate Zbs instructions. Two formsBit position is masked via AND.Bit position is masked via NAND
Stakeholders/Partners
RISE:
...
Page Properties | ||||||||||||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
|
Updates
- Last patch in series committed (exploiting masks of count).
- Generalization of IOR patterns to include XOR submitted.
- Wrapped up new version of patch to exploit masking of bit position.
- Marking as development complete.
- (1 <<N) | C and (1 << N) ^ C for DImode objects has been integrated
- Explicit zero extension of (1 << N) in SImode using bset has been submitted & integrated
- Handling of zero_extract destinations for single bit insertions has been submitted & integrated
...