...
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/bclr- When the shift count is masked such that we know bit 31 is not changed we can more aggressively generate Zbs instructions. Two forms
- Bit position is masked via AND.
- Bit position is masked via NAND
Stakeholders/Partners
RISE:
...
Page Properties | ||||||||||||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
|
Updates
- 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
...