On 11/19/20 8:35 PM, Maciej W. Rozycki wrote:
> The middle end does not refer to `ctzqi2'/`ctzhi2' or `ffsqi2'/`ffshi2'
> patterns by name where `__builtin_ctz' or `__builtin_ffs' respectively
> is invoked for an argument of the QImode or HImode type, and instead it
> extends the data type before passing it to `ctzsi2' or `ffssi2'.
>
> Avoid the redundant operation and use a peephole2 to convert it to the
> right RTL expression that will collapse the two operations into a single
> machine instruction instead unless we need the extended intermediate
> result for another purpose.
>
>       gcc/
>       * config/vax/builtins.md: Add a peephole2 for QImode and HImode
>       `ctz' operations.
>       (any_extend): New code iterator.
>
>       gcc/testsuite/
>       * gcc.target/vax/ctzhi.c: New test.
>       * gcc.target/vax/ctzqi.c: New test.
>       * gcc.target/vax/ffshi.c: New test.
>       * gcc.target/vax/ffsqi.c: New test.
OK
jeff

Reply via email to