This is the mail archive of the
gcc-patches@gcc.gnu.org
mailing list for the GCC project.
RE: [PATCH][ARM][6/n] Partial IT block deprecation in ARMv8 AArch32 - VFP patterns
- From: "Kyrylo Tkachov" <kyrylo dot tkachov at arm dot com>
- To: <gcc-patches at gcc dot gnu dot org>
- Cc: "Richard Earnshaw" <Richard dot Earnshaw at arm dot com>, "Ramana Radhakrishnan" <Ramana dot Radhakrishnan at arm dot com>
- Date: Mon, 17 Jun 2013 10:00:33 +0100
- Subject: RE: [PATCH][ARM][6/n] Partial IT block deprecation in ARMv8 AArch32 - VFP patterns
- References: <02c201ce65c8$925e6f10$b71b4d30$ at tkachov@arm.com>
Ping?
http://gcc.gnu.org/ml/gcc-patches/2013-06/msg00493.html
Thanks,
Kyrill
> -----Original Message-----
> From: gcc-patches-owner@gcc.gnu.org [mailto:gcc-patches-
> owner@gcc.gnu.org] On Behalf Of Kyrylo Tkachov
> Sent: 10 June 2013 11:52
> To: gcc-patches@gcc.gnu.org
> Cc: Richard Earnshaw; Ramana Radhakrishnan
> Subject: [PATCH][ARM][6/n] Partial IT block deprecation in ARMv8
> AArch32 - VFP patterns
>
> Hi all,
>
> This patch makes the changes to the various floating point patterns
> in
> vfp.md. Since pretty much all floating point instruction are always
> encoded in 32 bits, they cannot be used inside an IT block by the
> -mrestrict-it rules. Therefore this patch just goes and disables
> the
> predicable variants of the offending VFP patterns.
>
> The conditional floating point move patterns are disabled
> altogether for
> arm_restrict_it because they explicitly use IT blocks in their
> output
> template and the corresponding expanders in arm.md are updated to
> make
> sure we use the new vsel instruction that is available in ARMv8
> when
> appropriate.
>
> Tested arm-none-eabi on qemu and model as part of the whole series
> and
> also independently bootstrapped with -mrestrict-it enabled on a
> Cortex-A15.
>
> Ok for trunk?
>
> Thanks,
> Kyrill
>
> 2013-06-10 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
>
> * config/arm/predicates.md (arm_cond_move_operator): New
> predicate.
> * config/arm/arm.md (movsfcc): Use arm_cond_move_operator
> predicate.
> (movdfcc): Likewise.
> * config/arm/vfp.md (*thumb2_movsf_vfp):
> Disable predication for arm_restrict_it.
> (*thumb2_movsfcc_vfp): Disable for arm_restrict_it.
> (*thumb2_movdfcc_vfp): Likewise.
> (*abssf2_vfp, *absdf2_vfp, *negsf2_vfp, *negdf2_vfp,
> *addsf3_vfp,
> *adddf3_vfp, *subsf3_vfp, *subdf3_vfpc, *divsf3_vfp,
> *divdf3_vfp,
> *mulsf3_vfp, *muldf3_vfp, *mulsf3negsf_vfp, *muldf3negdf_vfp,
> *mulsf3addsf_vfp, *muldf3adddf_vfp, *mulsf3subsf_vfp,
> *muldf3subdf_vfp, *mulsf3negsfaddsf_vfp,
> *fmuldf3negdfadddf_vfp,
> *mulsf3negsfsubsf_vfp, *muldf3negdfsubdf_vfp,
> *fma<SDF:mode>4,
> *fmsub<SDF:mode>4, *fnmsub<SDF:mode>4, *fnmadd<SDF:mode>4,
> *extendsfdf2_vfp, *truncdfsf2_vfp, *extendhfsf2, *truncsfhf2,
> *truncsisf2_vfp, *truncsidf2_vfp, fixuns_truncsfsi2,
> fixuns_truncdfsi2,
> *floatsisf2_vfp, *floatsidf2_vfp, floatunssisf2,
> floatunssidf2,
> *sqrtsf2_vfp, *sqrtdf2_vfp, *cmpsf_vfp, *cmpsf_trap_vfp,
> *cmpdf_vfp,
> *cmpdf_trap_vfp, <vrint_pattern><SDF:mode>2):
> Disable predication for arm_restrict_it.