This is the mail archive of the gcc-patches@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

[arm-embedded][committed][PATCH 5/6] ARM ACLE Coprocessor MCR and MRC intrinsics


On 09/11/16 10:12, Andre Vieira (lists) wrote:
> Hi,
> 
> This patch implements support for the ARM ACLE Coprocessor MCR and MRC
> intrinsics. See below a table mapping the intrinsics to their respective
> instructions:
> 
> +-------------------------------------------------------------------+---------------------------------------+
> | Intrinsic signature                                               |
> Instruction pattern                   |
> +-------------------------------------------------------------------+---------------------------------------+
> |void __arm_mcr(coproc, opc1, uint32_t value, CRn, CRm, opc2)       |
> MCR coproc, opc1, Rt, CRn, CRm, opc2  |
> +-------------------------------------------------------------------+---------------------------------------+
> |void __arm_mcr2(coproc, opc1, uint32_t value, CRn, CRm, opc2)      |
> MCR2 coproc, opc1, Rt, CRn, CRm, opc2 |
> +-------------------------------------------------------------------+---------------------------------------+
> |uint32_t __arm_mrc(coproc, opc1, CRn, CRm, opc2)                   |
> MRC coproc, opc1, Rt, CRn, CRm, opc2  |
> +-------------------------------------------------------------------+---------------------------------------+
> |uint32_t __arm_mrc2(coproc, opc1, CRn, CRm, opc2)                  |
> MRC2 coproc, opc1, Rt, CRn, CRm, opc2 |
> +-------------------------------------------------------------------+---------------------------------------+
> Note that any untyped variable in the intrinsic signature is required to
> be a compiler-time constant and has the type 'unsigned int'.  We do some
> boundary checks for coproc:[0-15], opc1[0-7] CR*:[0-31],opc2:[0-7].  If
> either of these requirements are not met a diagnostic is issued.
> 
> Is this OK for trunk?
> 
> Regards,
> Andre
> 
> gcc/ChangeLog:
> 2016-11-09  Andre Vieira  <andre.simoesdiasvieira@arm.com>
> 
>   * config/arm/arm.md (<mcr>): New.
>   (<mrc>): New.
>   * config/arm/arm.c (arm_coproc_builtin_available): Add
>   support for mcr, mrc, mcr2 and mrc2.
>   * config/arm/arm-builtins.c (MCR_QUALIFIERS): Define to...
>   (arm_mcr_qualifiers): ... this. New.
>   (MRC_QUALIFIERS): Define to ...
>   (arm_mrc_qualifiers): ... this. New.
>   (MCR_QUALIFIERS): Define to ...
>   (arm_mcr_qualifiers): ... this. New.
>   * config/arm/arm_acle.h (__arm_mcr, __arm_mrc, __arm_mcr2,
>   __arm_mrc2): New.
>   * config/arm/arm_acle_builtins.def (mcr, mcr2, mrc, mrc2): New.
>   * config/arm/iterators.md (MCRI, mcr, MCR, MRCI, mrc, MRC): New.
>   * config/arm/unspecs.md (VUNSPEC_MCR, VUNSPEC_MCR2, VUNSPEC_MRC,
>   VUNSPEC_MRC2): New.
> 
> 
> gcc/ChangeLog:
> 2016-11-09  Andre Vieira  <andre.simoesdiasvieira@arm.com>
> 
>   * gcc.target/arm/acle/mcr.c: New.
>   * gcc.target/arm/acle/mrc.c: New.
>   * gcc.target/arm/acle/mcr2.c: New.
>   * gcc.target/arm/acle/mrc2.c: New.
> 
Hi,

I committed this patch to the embedded-6-branch in revision r243263.

Cheers,
Andre

gcc/ChangeLog.arm:
2016-12-05  Andre Vieira  <andre.simoesdiasvieira@arm.com>

	* config/arm/arm.md (<mcr>): New.
	(<mrc>): New.
	* config/arm/arm.c (arm_coproc_builtin_available): Add
	support for mcr, mrc, mcr2 and mrc2.
	* config/arm/arm-builtins.c (MCR_QUALIFIERS): Define to...
	(arm_mcr_qualifiers): ... this. New.
	(MRC_QUALIFIERS): Define to ...
	(arm_mrc_qualifiers): ... this. New.
	(MCR_QUALIFIERS): Define to ...
	(arm_mcr_qualifiers): ... this. New.
	* config/arm/arm_acle.h (__arm_mcr, __arm_mrc, __arm_mcr2,
	__arm_mrc2): New.
	* config/arm/arm_acle_builtins.def (mcr, mcr2, mrc, mrc2): New.
	* config/arm/iterators.md (MCRI, mcr, MCR, MRCI, mrc, MRC): New.
	* config/arm/unspecs.md (VUNSPEC_MCR, VUNSPEC_MCR2, VUNSPEC_MRC,
	VUNSPEC_MRC2): New.

gcc/testsuite/ChangeLog.arm:
2016-12-05  Andre Vieira  <andre.simoesdiasvieira@arm.com>

	* gcc.target/arm/acle/mcr.c: New.
	* gcc.target/arm/acle/mrc.c: New.
	* gcc.target/arm/acle/mcr2.c: New.
	* gcc.target/arm/acle/mrc2.c: New.

Attachment: diff5
Description: Text document


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]