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] |
On 05/01/17 11:11, Kyrill Tkachov wrote: > Hi Andre, > > 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_mcrr(coproc, opc1, uint64_t value, CRm) | >> MCRR coproc, opc1, Rt, Rt2, CRm | >> +-------------------------------------------------------------------+---------------------------------------+ >> >> |void __arm_mcrr2(coproc, opc1, uint64_t value, CRm) | >> MCRR2 coproc, opc1, Rt, Rt2, CRm | >> +-------------------------------------------------------------------+---------------------------------------+ >> >> |uint64_t __arm_mrrc(coproc, opc1, CRm) | >> MRRC coproc, opc1, Rt, Rt2, CRm | >> +-------------------------------------------------------------------+---------------------------------------+ >> >> |uint64_t __arm_mrrc2(coproc, opc1, CRm) | >> MRRC2 coproc, opc1, Rt, Rt2, CRm | >> +-------------------------------------------------------------------+---------------------------------------+ >> >> 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]. If either of >> these requirements are not met a diagnostic is issued. >> >> I added a new arm_arch variable for ARMv5TE to use when deciding whether >> or not the MCRR and MRCC intrinsics are available. >> >> Is this OK for trunk? > > Same as with the previous two patches the define_insns need constraints > and also I believe you'll want to rebase this patch on top of Richard's > rework of the > architecture feature bits for the ARMv5TE hunk. > > Thanks, > Kyrill > >> Regards, >> Andre >> >> gcc/ChangeLog: >> 2016-11-09 Andre Vieira <andre.simoesdiasvieira@arm.com> >> >> * config/arm/arm.md (<mcrr>): New. >> (<mrrc>): New. >> * config/arm/arm.c (arm_arch5te): New. >> (arm_option_override): Set arm_arch5te. >> (arm_coproc_builtin_available): Add support for mcrr, mcrr2, mrrc >> and mrrc2. >> * config/arm/arm-builtins.c (MCRR_QUALIFIERS): Define to... >> (arm_mcrr_qualifiers): ... this. New. >> (MRRC_QUALIFIERS): Define to... >> (arm_mrrc_qualifiers): ... this. New. >> * config/arm/arm_acle.h (__arm_mcrr, __arm_mcrr2, __arm_mrrc, >> __arm_mrrc2): New. >> * config/arm/arm_acle_builtins.def (mcrr, mcrr2, mrrc, mrrc2): New. >> * config/arm/iterators.md (MCRRI, mcrr, MCRR): New. >> (MRRCI, mrrc, MRRC): New. >> * config/arm/unspecs.md (VUNSPEC_MCRR, VUNSPEC_MCRR2, VUNSPEC_MRRC, >> VUNSPEC_MRRC2): New. >> >> gcc/testsuite/ChangeLog: >> >> 2016-11-09 Andre Vieira <andre.simoesdiasvieira@arm.com> >> >> * gcc.target/arm/acle/mcrr: New. >> * gcc.target/arm/acle/mcrr2: New. >> * gcc.target/arm/acle/mrrc: New. >> * gcc.target/arm/acle/mrrc2: New. >> > Hi, Reworked this patch according to comments, rebased and fixed the availability of MCRR2/MRRC2 to only be available for ARMv6 and later. Is this OK for trunk? Regards, Andre gcc/ChangeLog: 2017-01-xx Andre Vieira <andre.simoesdiasvieira@arm.com> * config/arm/arm.md (<mcrr>): New. (<mrrc>): New. * config/arm/arm.c (arm_arch5te): New. (arm_option_override): Set arm_arch5te. (arm_coproc_builtin_available): Add support for mcrr, mcrr2, mrrc and mrrc2. * config/arm/arm-builtins.c (MCRR_QUALIFIERS): Define to... (arm_mcrr_qualifiers): ... this. New. (MRRC_QUALIFIERS): Define to... (arm_mrrc_qualifiers): ... this. New. * config/arm/arm_acle.h (__arm_mcrr, __arm_mcrr2, __arm_mrrc, __arm_mrrc2): New. * config/arm/arm_acle_builtins.def (mcrr, mcrr2, mrrc, mrrc2): New. * config/arm/iterators.md (MCRRI, mcrr, MCRR): New. (MRRCI, mrrc, MRRC): New. * config/arm/unspecs.md (VUNSPEC_MCRR, VUNSPEC_MCRR2, VUNSPEC_MRRC, VUNSPEC_MRRC2): New. gcc/testsuite/ChangeLog: 2017-01-xx Andre Vieira <andre.simoesdiasvieira@arm.com> * gcc.target/arm/acle/mcrr: New. * gcc.target/arm/acle/mcrr2: New. * gcc.target/arm/acle/mrrc: New. * gcc.target/arm/acle/mrrc2: New.
Attachment:
diff6
Description: Text document
Index Nav: | [Date Index] [Subject Index] [Author Index] [Thread Index] | |
---|---|---|
Message Nav: | [Date Prev] [Date Next] | [Thread Prev] [Thread Next] |