Richard Kenner wrote: >Michael Collison wrote: > > On Aarc64 SHIFT_COUNT_TRUNCATED is only true if SIMD code generation > > is disabled. This is because the simd instructions can be used for > > shifting but they do not truncate the shift count. > > In that case, the change isn't safe! Consider if the value was > negative, for example. Yes, it's technically undefined, but I'm not > sure I'd want to rely on that.
No it's perfectly safe - it becomes an integer-only shift after the split since it keeps the masking as part of the pattern. But generally the SHIFT_COUNT_TRUNCATED is a mess, and so are other ways of doing this - note the extremely complex subregs in the patch, none of that should be required as there are no QI registers on AArch64! So it would be great if there was a better way to describe the number of bits used by a particular shift alternative. Wilco