ConditionalSelect is used to mask an API. For methods that reduce down to a scalar value (eg all the Across methods), this would be done via:
a = Sve.AddAcross(Sve.ConditionalSelect(mask, a, zero));
Currently this will produce an SEL instruction to select the correct entries. Then will feed this into an
SADDV (or UADDV) that uses an all-true mask.
Instead, the SEL needs merging into the SADDV to produce a single SADDV instruction using the mask.
See #101770 for history.
ConditionalSelect is used to mask an API. For methods that reduce down to a scalar value (eg all the Across methods), this would be done via:
a = Sve.AddAcross(Sve.ConditionalSelect(mask, a, zero));Currently this will produce an
SELinstruction to select the correct entries. Then will feed this into anSADDV(orUADDV) that uses an all-true mask.Instead, the
SELneeds merging into theSADDVto produce a singleSADDVinstruction using the mask.See #101770 for history.