On 04/08/14 13:22, Kyrill Tkachov wrote:
> Hi all,
>
> While working on another patch and looking at the rbit and clz patterns,
> I noticed that in aarch32 the relevant patterns are not adjusted for
> -mrestrict-it.
> A program like:
> int
> foo (int a, int b)
> {
> if (a + 5 == b)
> return __builtin_ctz (a);
>
> return 1;
> }
>
> compiled with -march=armv8-a -mthumb could generate clz and rbit
> instructions inside an IT block, thus earning an assembler warning.
> Whilst there I also noticed that the output templates for the arm_rev
> pattern have a %? that is used to print out condition codes during
> predication but the pattern is not marked as predicable.
> So I set the predicable attribute there and adjusted it for
> -mrestrict-it while at it.
>
> Ok for trunk?
>
> 2014-08-04 Kyrylo Tkachov <[email protected]>
>
> * config/arm/arm.md (clzsi2): Set predicable_short_it attr to no.
> (rbitsi2): Likewise.
> (*arm_rev): Set predicable and predicable_short_it attributes.
>
OK.
R.