Hi all,

This patch adjusts the patterns in thumb2.md to conform with -mrestrict-it.
16-bit alternatives are added, patterns that explicitly generate IT blocks
that don't conform are disabled or replaced with appropriate patterns for
arm_restrict_it. A new pattern thumb2_cond_arith_strict_it is added that is a
splitter version of thumb2_cond_arith but produces patterns appropriate for
arm_restrict_it.

Bootstrapped on Cortex-A15, tested on model and qemu with ARMv7 and ARMv8
architecture levels.

Ok for trunk?

Thanks,
Kyrill

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

        * config/arm/predicates.md (shiftable_operator_strict_it): New
predicate.
        * config/arm/thumb2.md (thumb_andsi_not_shiftsi_si): Disable cond_exec
version
        for arm_restrict_it.
        (thumb2_smaxsi3): Add 16-bit alternatives.
        (thumb2_sminsi3): Likewise.
        (thumb32_umaxsi3): Likewise.
        (thumb2_uminsi3): Likewise.
        (thumb2_abssi2): Adjust constraints for arm_restrict_it.
        (thumb2_neg_abssi2): Likewise.
        (thumb2_mov_scc): Add alternative for 16-bit encoding.
        (thumb2_mov_negscc): Likewise.
        (thumb2_mov_notscc): Disable for arm_restrict_it.
        (thumb2_ior_scc): Likewise.
        (thumb2_ior_scc_strict_it): New pattern.
        (thumb2_cond_move): Adjust for arm_restrict_it.
        (thumb2_cond_arith): Disable for arm_restrict_it.
        (thumb2_cond_arith_strict_it): New pattern.
        (thumb2_cond_sub): Adjust for arm_restrict_it.
        (thumb2_movcond): Likewise.
        (thumb2_extendqisi_v6): Disable cond_exec variant for arm_restrict_it.
        (thumb2_zero_extendhisi2_v6): Likewise.
        (thumb2_zero_extendqisi2_v6): Likewise.
        (orsi_notsi_si): Likewise.
        (orsi_not_shiftsi_si): Likewise.

Attachment: 11-thumb2-changes.patch
Description: Binary data

Reply via email to