Hi all,

Shift operations with an immediate can generate a 16-bit encoding when the
immediate is 5-bit wide, i.e. in the range [0-31]. Therefore we can use them
in IT blocks even with the -mrestrict-it rules.

I decided to reuse the "N" constraint with a slight modification by removing
the !TARGET_32BIT condition from it. The "N" constraint is only used in a few
patterns that are predicated by TARGET_THUMB1 anyway, so there's no reason for
the constraint to check for that as well.

Tested arm-none-eabi on model and bootstrapped on Chromebook.

Ok for trunk?

Thanks,
Kyrill

2013-09-09  Kyrylo Tkachov  <kyrylo.tkac...@arm.com>

        * config/arm/arm.md (arm_shiftsi3): New alternative l/l/N.
        * config/arm/constraints.md ("N"): Remove !TARGET_32BIT condition.
        
2013-09-09  Kyrylo Tkachov  <kyrylo.tkac...@arm.com>

        * gcc.target/arm/thumb-ifcvt-2.c: New test.

Attachment: cond-shifts.patch
Description: Binary data

Reply via email to