Re: [PATCH][ARM] Implement CRC32 intrinsics for AArch32 in ARMv8-A
On 19/12/13 17:58, Kyrill Tkachov wrote: On 18/12/13 15:32, Ramana Radhakrishnan wrote: On Tue, Dec 3, 2013 at 1:46 PM, Kyrill Tkachov kyrylo.tkac...@arm.com wrote: Ping? http://gcc.gnu.org/ml/gcc-patches/2013-11/msg02351.html Thanks, Kyrill Ok if no objections in 24 hours. Thanks Ramana, I've committed it as r206128 together with this obvious change that sets the conds attribute on the md pattern. I just noticed that I committed the first version of the patch posted at: http://gcc.gnu.org/ml/gcc-patches/2013-11/msg02250.html instead of the second version posted at: http://gcc.gnu.org/ml/gcc-patches/2013-11/msg02351.html that was approved. The difference is only that the second one has underscores under the variable names in arm_acle.h. I've committed the attached patch to add them as obvious with r206149. Tested arm-none-eabi on a model. Sorry for the noise, Kyrill 2013-12-20 Kyrylo Tkachov kyrylo.tkac...@arm.com * config/arm/arm_acle.h: Add underscores before variables. Kyrill Ramana On 26/11/13 09:44, Kyrill Tkachov wrote: Ping? Thanks, Kyrill On 19/11/13 17:04, Kyrill Tkachov wrote: On 19/11/13 16:26, Joseph S. Myers wrote: In any target header installed for user use, such as arm_acle.h, you need to be namespace-clean. In this case, that means you need to use implementation-namespace identifiers such as __a, __b and __d in case the user has defined macros with names such as a, b and d (unless the ACLE says that identifiers a, b and d are in the implementation's namespace when this header is included, which would be a very odd thing for it to do). Hi Joseph, Thanks for the catch. ACLE doesn't expect a,b,d to be in the implementation namespace. I've added underscores before them. Made sure tests pass. Revised patch attached. How's this? Kyrill gcc/ 2013-11-19 Kyrylo Tkachov kyrylo.tkac...@arm.com * Makefile.in (TEXI_GCC_FILES): Add arm-acle-intrinsics.texi. * config.gcc (extra_headers): Add arm_acle.h. * config/arm/arm.c (FL_CRC32): Define. (arm_have_crc): Likewise. (arm_option_override): Set arm_have_crc. (arm_builtins): Add CRC32 builtins. (bdesc_2arg): Likewise. (arm_init_crc32_builtins): New function. (arm_init_builtins): Initialise CRC32 builtins. (arm_file_start): Handle architecture extensions. * config/arm/arm.h (TARGET_CPU_CPP_BUILTINS): Define __ARM_FEATURE_CRC32. Define __ARM_32BIT_STATE. (TARGET_CRC32): Define. * config/arm/arm-arches.def: Add armv8-a+crc. * config/arm/arm-tables.opt: Regenerate. * config/arm/arm.md (type): Add crc. (crc_variant): New insn. * config/arm/arm_acle.h: New file. * config/arm/iterators.md (CRC): New int iterator. (crc_variant, crc_mode): New int attributes. * confg/arm/unspecs.md (UNSPEC_CRC32B, UNSPEC_CRC32H, UNSPEC_CRC32W, UNSPEC_CRC32CB, UNSPEC_CRC32CH, UNSPEC_CRC32CW): New unspecs. * doc/invoke.texi: Document -march=armv8-a+crc option. * doc/extend.texi: Document ACLE intrinsics. * doc/arm-acle-intrinsics.texi: New. gcc/testsuite 2013-11-19 Kyrylo Tkachov kyrylo.tkac...@arm.com * lib/target-supports.exp (add_options_for_arm_crc): New procedure. (check_effective_target_arm_crc_ok_nocache): Likewise. (check_effective_target_arm_crc_ok): Likewise. * gcc.target/arm/acle/: New directory. * gcc.target/arm/acle/acle.exp: New. * gcc.target/arm/acle/crc32b.c: New test. * gcc.target/arm/acle/crc32h.c: Likewise. * gcc.target/arm/acle/crc32w.c: Likewise. * gcc.target/arm/acle/crc32d.c: Likewise. * gcc.target/arm/acle/crc32cb.c: Likewise. * gcc.target/arm/acle/crc32ch.c: Likewise. * gcc.target/arm/acle/crc32cw.c: Likewise. * gcc.target/arm/acle/crc32cd.c: Likewise. Index: gcc/config/arm/arm_acle.h === --- gcc/config/arm/arm_acle.h (revision 206132) +++ gcc/config/arm/arm_acle.h (working copy) @@ -34,60 +34,60 @@ #ifdef __ARM_FEATURE_CRC32 __extension__ static __inline uint32_t __attribute__ ((__always_inline__)) -__crc32b (uint32_t a, uint8_t b) +__crc32b (uint32_t __a, uint8_t __b) { - return __builtin_arm_crc32b (a, b); + return __builtin_arm_crc32b (__a, __b); } __extension__ static __inline uint32_t __attribute__ ((__always_inline__)) -__crc32h (uint32_t a, uint16_t b) +__crc32h (uint32_t __a, uint16_t __b) { - return __builtin_arm_crc32h (a, b); + return __builtin_arm_crc32h (__a, __b); } __extension__ static __inline uint32_t __attribute__ ((__always_inline__)) -__crc32w (uint32_t a, uint32_t b) +__crc32w (uint32_t __a, uint32_t __b) { - return __builtin_arm_crc32w (a, b); + return __builtin_arm_crc32w (__a, __b); } #ifdef __ARM_32BIT_STATE __extension__ static __inline uint32_t
Re: [PATCH][ARM] Implement CRC32 intrinsics for AArch32 in ARMv8-A
On 18/12/13 15:32, Ramana Radhakrishnan wrote: On Tue, Dec 3, 2013 at 1:46 PM, Kyrill Tkachov kyrylo.tkac...@arm.com wrote: Ping? http://gcc.gnu.org/ml/gcc-patches/2013-11/msg02351.html Thanks, Kyrill Ok if no objections in 24 hours. Thanks Ramana, I've committed it as r206128 together with this obvious change that sets the conds attribute on the md pattern. Kyrill Ramana On 26/11/13 09:44, Kyrill Tkachov wrote: Ping? Thanks, Kyrill On 19/11/13 17:04, Kyrill Tkachov wrote: On 19/11/13 16:26, Joseph S. Myers wrote: In any target header installed for user use, such as arm_acle.h, you need to be namespace-clean. In this case, that means you need to use implementation-namespace identifiers such as __a, __b and __d in case the user has defined macros with names such as a, b and d (unless the ACLE says that identifiers a, b and d are in the implementation's namespace when this header is included, which would be a very odd thing for it to do). Hi Joseph, Thanks for the catch. ACLE doesn't expect a,b,d to be in the implementation namespace. I've added underscores before them. Made sure tests pass. Revised patch attached. How's this? Kyrill gcc/ 2013-11-19 Kyrylo Tkachov kyrylo.tkac...@arm.com * Makefile.in (TEXI_GCC_FILES): Add arm-acle-intrinsics.texi. * config.gcc (extra_headers): Add arm_acle.h. * config/arm/arm.c (FL_CRC32): Define. (arm_have_crc): Likewise. (arm_option_override): Set arm_have_crc. (arm_builtins): Add CRC32 builtins. (bdesc_2arg): Likewise. (arm_init_crc32_builtins): New function. (arm_init_builtins): Initialise CRC32 builtins. (arm_file_start): Handle architecture extensions. * config/arm/arm.h (TARGET_CPU_CPP_BUILTINS): Define __ARM_FEATURE_CRC32. Define __ARM_32BIT_STATE. (TARGET_CRC32): Define. * config/arm/arm-arches.def: Add armv8-a+crc. * config/arm/arm-tables.opt: Regenerate. * config/arm/arm.md (type): Add crc. (crc_variant): New insn. * config/arm/arm_acle.h: New file. * config/arm/iterators.md (CRC): New int iterator. (crc_variant, crc_mode): New int attributes. * confg/arm/unspecs.md (UNSPEC_CRC32B, UNSPEC_CRC32H, UNSPEC_CRC32W, UNSPEC_CRC32CB, UNSPEC_CRC32CH, UNSPEC_CRC32CW): New unspecs. * doc/invoke.texi: Document -march=armv8-a+crc option. * doc/extend.texi: Document ACLE intrinsics. * doc/arm-acle-intrinsics.texi: New. gcc/testsuite 2013-11-19 Kyrylo Tkachov kyrylo.tkac...@arm.com * lib/target-supports.exp (add_options_for_arm_crc): New procedure. (check_effective_target_arm_crc_ok_nocache): Likewise. (check_effective_target_arm_crc_ok): Likewise. * gcc.target/arm/acle/: New directory. * gcc.target/arm/acle/acle.exp: New. * gcc.target/arm/acle/crc32b.c: New test. * gcc.target/arm/acle/crc32h.c: Likewise. * gcc.target/arm/acle/crc32w.c: Likewise. * gcc.target/arm/acle/crc32d.c: Likewise. * gcc.target/arm/acle/crc32cb.c: Likewise. * gcc.target/arm/acle/crc32ch.c: Likewise. * gcc.target/arm/acle/crc32cw.c: Likewise. * gcc.target/arm/acle/crc32cd.c: Likewise. diff --git a/gcc/config/arm/arm.md b/gcc/config/arm/arm.md index 397df01..e8b8125 100644 --- a/gcc/config/arm/arm.md +++ b/gcc/config/arm/arm.md @@ -12880,7 +12880,8 @@ CRC))] TARGET_CRC32 crc_variant\\t%0, %1, %2 - [(set_attr type crc)] + [(set_attr type crc) + (set_attr conds unconditional)] ) ;; Load the load/store double peephole optimizations.
Re: [PATCH][ARM] Implement CRC32 intrinsics for AArch32 in ARMv8-A
On Tue, Dec 3, 2013 at 1:46 PM, Kyrill Tkachov kyrylo.tkac...@arm.com wrote: Ping? http://gcc.gnu.org/ml/gcc-patches/2013-11/msg02351.html Thanks, Kyrill Ok if no objections in 24 hours. Ramana On 26/11/13 09:44, Kyrill Tkachov wrote: Ping? Thanks, Kyrill On 19/11/13 17:04, Kyrill Tkachov wrote: On 19/11/13 16:26, Joseph S. Myers wrote: In any target header installed for user use, such as arm_acle.h, you need to be namespace-clean. In this case, that means you need to use implementation-namespace identifiers such as __a, __b and __d in case the user has defined macros with names such as a, b and d (unless the ACLE says that identifiers a, b and d are in the implementation's namespace when this header is included, which would be a very odd thing for it to do). Hi Joseph, Thanks for the catch. ACLE doesn't expect a,b,d to be in the implementation namespace. I've added underscores before them. Made sure tests pass. Revised patch attached. How's this? Kyrill gcc/ 2013-11-19 Kyrylo Tkachov kyrylo.tkac...@arm.com * Makefile.in (TEXI_GCC_FILES): Add arm-acle-intrinsics.texi. * config.gcc (extra_headers): Add arm_acle.h. * config/arm/arm.c (FL_CRC32): Define. (arm_have_crc): Likewise. (arm_option_override): Set arm_have_crc. (arm_builtins): Add CRC32 builtins. (bdesc_2arg): Likewise. (arm_init_crc32_builtins): New function. (arm_init_builtins): Initialise CRC32 builtins. (arm_file_start): Handle architecture extensions. * config/arm/arm.h (TARGET_CPU_CPP_BUILTINS): Define __ARM_FEATURE_CRC32. Define __ARM_32BIT_STATE. (TARGET_CRC32): Define. * config/arm/arm-arches.def: Add armv8-a+crc. * config/arm/arm-tables.opt: Regenerate. * config/arm/arm.md (type): Add crc. (crc_variant): New insn. * config/arm/arm_acle.h: New file. * config/arm/iterators.md (CRC): New int iterator. (crc_variant, crc_mode): New int attributes. * confg/arm/unspecs.md (UNSPEC_CRC32B, UNSPEC_CRC32H, UNSPEC_CRC32W, UNSPEC_CRC32CB, UNSPEC_CRC32CH, UNSPEC_CRC32CW): New unspecs. * doc/invoke.texi: Document -march=armv8-a+crc option. * doc/extend.texi: Document ACLE intrinsics. * doc/arm-acle-intrinsics.texi: New. gcc/testsuite 2013-11-19 Kyrylo Tkachov kyrylo.tkac...@arm.com * lib/target-supports.exp (add_options_for_arm_crc): New procedure. (check_effective_target_arm_crc_ok_nocache): Likewise. (check_effective_target_arm_crc_ok): Likewise. * gcc.target/arm/acle/: New directory. * gcc.target/arm/acle/acle.exp: New. * gcc.target/arm/acle/crc32b.c: New test. * gcc.target/arm/acle/crc32h.c: Likewise. * gcc.target/arm/acle/crc32w.c: Likewise. * gcc.target/arm/acle/crc32d.c: Likewise. * gcc.target/arm/acle/crc32cb.c: Likewise. * gcc.target/arm/acle/crc32ch.c: Likewise. * gcc.target/arm/acle/crc32cw.c: Likewise. * gcc.target/arm/acle/crc32cd.c: Likewise.
Re: [PATCH][ARM] Implement CRC32 intrinsics for AArch32 in ARMv8-A
Ping? http://gcc.gnu.org/ml/gcc-patches/2013-11/msg02351.html Thanks, Kyrill On 26/11/13 09:44, Kyrill Tkachov wrote: Ping? Thanks, Kyrill On 19/11/13 17:04, Kyrill Tkachov wrote: On 19/11/13 16:26, Joseph S. Myers wrote: In any target header installed for user use, such as arm_acle.h, you need to be namespace-clean. In this case, that means you need to use implementation-namespace identifiers such as __a, __b and __d in case the user has defined macros with names such as a, b and d (unless the ACLE says that identifiers a, b and d are in the implementation's namespace when this header is included, which would be a very odd thing for it to do). Hi Joseph, Thanks for the catch. ACLE doesn't expect a,b,d to be in the implementation namespace. I've added underscores before them. Made sure tests pass. Revised patch attached. How's this? Kyrill gcc/ 2013-11-19 Kyrylo Tkachov kyrylo.tkac...@arm.com * Makefile.in (TEXI_GCC_FILES): Add arm-acle-intrinsics.texi. * config.gcc (extra_headers): Add arm_acle.h. * config/arm/arm.c (FL_CRC32): Define. (arm_have_crc): Likewise. (arm_option_override): Set arm_have_crc. (arm_builtins): Add CRC32 builtins. (bdesc_2arg): Likewise. (arm_init_crc32_builtins): New function. (arm_init_builtins): Initialise CRC32 builtins. (arm_file_start): Handle architecture extensions. * config/arm/arm.h (TARGET_CPU_CPP_BUILTINS): Define __ARM_FEATURE_CRC32. Define __ARM_32BIT_STATE. (TARGET_CRC32): Define. * config/arm/arm-arches.def: Add armv8-a+crc. * config/arm/arm-tables.opt: Regenerate. * config/arm/arm.md (type): Add crc. (crc_variant): New insn. * config/arm/arm_acle.h: New file. * config/arm/iterators.md (CRC): New int iterator. (crc_variant, crc_mode): New int attributes. * confg/arm/unspecs.md (UNSPEC_CRC32B, UNSPEC_CRC32H, UNSPEC_CRC32W, UNSPEC_CRC32CB, UNSPEC_CRC32CH, UNSPEC_CRC32CW): New unspecs. * doc/invoke.texi: Document -march=armv8-a+crc option. * doc/extend.texi: Document ACLE intrinsics. * doc/arm-acle-intrinsics.texi: New. gcc/testsuite 2013-11-19 Kyrylo Tkachov kyrylo.tkac...@arm.com * lib/target-supports.exp (add_options_for_arm_crc): New procedure. (check_effective_target_arm_crc_ok_nocache): Likewise. (check_effective_target_arm_crc_ok): Likewise. * gcc.target/arm/acle/: New directory. * gcc.target/arm/acle/acle.exp: New. * gcc.target/arm/acle/crc32b.c: New test. * gcc.target/arm/acle/crc32h.c: Likewise. * gcc.target/arm/acle/crc32w.c: Likewise. * gcc.target/arm/acle/crc32d.c: Likewise. * gcc.target/arm/acle/crc32cb.c: Likewise. * gcc.target/arm/acle/crc32ch.c: Likewise. * gcc.target/arm/acle/crc32cw.c: Likewise. * gcc.target/arm/acle/crc32cd.c: Likewise.
Re: [PATCH][ARM] Implement CRC32 intrinsics for AArch32 in ARMv8-A
Ping? Thanks, Kyrill On 19/11/13 17:04, Kyrill Tkachov wrote: On 19/11/13 16:26, Joseph S. Myers wrote: In any target header installed for user use, such as arm_acle.h, you need to be namespace-clean. In this case, that means you need to use implementation-namespace identifiers such as __a, __b and __d in case the user has defined macros with names such as a, b and d (unless the ACLE says that identifiers a, b and d are in the implementation's namespace when this header is included, which would be a very odd thing for it to do). Hi Joseph, Thanks for the catch. ACLE doesn't expect a,b,d to be in the implementation namespace. I've added underscores before them. Made sure tests pass. Revised patch attached. How's this? Kyrill gcc/ 2013-11-19 Kyrylo Tkachov kyrylo.tkac...@arm.com * Makefile.in (TEXI_GCC_FILES): Add arm-acle-intrinsics.texi. * config.gcc (extra_headers): Add arm_acle.h. * config/arm/arm.c (FL_CRC32): Define. (arm_have_crc): Likewise. (arm_option_override): Set arm_have_crc. (arm_builtins): Add CRC32 builtins. (bdesc_2arg): Likewise. (arm_init_crc32_builtins): New function. (arm_init_builtins): Initialise CRC32 builtins. (arm_file_start): Handle architecture extensions. * config/arm/arm.h (TARGET_CPU_CPP_BUILTINS): Define __ARM_FEATURE_CRC32. Define __ARM_32BIT_STATE. (TARGET_CRC32): Define. * config/arm/arm-arches.def: Add armv8-a+crc. * config/arm/arm-tables.opt: Regenerate. * config/arm/arm.md (type): Add crc. (crc_variant): New insn. * config/arm/arm_acle.h: New file. * config/arm/iterators.md (CRC): New int iterator. (crc_variant, crc_mode): New int attributes. * confg/arm/unspecs.md (UNSPEC_CRC32B, UNSPEC_CRC32H, UNSPEC_CRC32W, UNSPEC_CRC32CB, UNSPEC_CRC32CH, UNSPEC_CRC32CW): New unspecs. * doc/invoke.texi: Document -march=armv8-a+crc option. * doc/extend.texi: Document ACLE intrinsics. * doc/arm-acle-intrinsics.texi: New. gcc/testsuite 2013-11-19 Kyrylo Tkachov kyrylo.tkac...@arm.com * lib/target-supports.exp (add_options_for_arm_crc): New procedure. (check_effective_target_arm_crc_ok_nocache): Likewise. (check_effective_target_arm_crc_ok): Likewise. * gcc.target/arm/acle/: New directory. * gcc.target/arm/acle/acle.exp: New. * gcc.target/arm/acle/crc32b.c: New test. * gcc.target/arm/acle/crc32h.c: Likewise. * gcc.target/arm/acle/crc32w.c: Likewise. * gcc.target/arm/acle/crc32d.c: Likewise. * gcc.target/arm/acle/crc32cb.c: Likewise. * gcc.target/arm/acle/crc32ch.c: Likewise. * gcc.target/arm/acle/crc32cw.c: Likewise. * gcc.target/arm/acle/crc32cd.c: Likewise.
Re: [PATCH][ARM] Implement CRC32 intrinsics for AArch32 in ARMv8-A
In any target header installed for user use, such as arm_acle.h, you need to be namespace-clean. In this case, that means you need to use implementation-namespace identifiers such as __a, __b and __d in case the user has defined macros with names such as a, b and d (unless the ACLE says that identifiers a, b and d are in the implementation's namespace when this header is included, which would be a very odd thing for it to do). -- Joseph S. Myers jos...@codesourcery.com
Re: [PATCH][ARM] Implement CRC32 intrinsics for AArch32 in ARMv8-A
On 19/11/13 16:26, Joseph S. Myers wrote: In any target header installed for user use, such as arm_acle.h, you need to be namespace-clean. In this case, that means you need to use implementation-namespace identifiers such as __a, __b and __d in case the user has defined macros with names such as a, b and d (unless the ACLE says that identifiers a, b and d are in the implementation's namespace when this header is included, which would be a very odd thing for it to do). Hi Joseph, Thanks for the catch. ACLE doesn't expect a,b,d to be in the implementation namespace. I've added underscores before them. Made sure tests pass. Revised patch attached. How's this? Kyrill gcc/ 2013-11-19 Kyrylo Tkachov kyrylo.tkac...@arm.com * Makefile.in (TEXI_GCC_FILES): Add arm-acle-intrinsics.texi. * config.gcc (extra_headers): Add arm_acle.h. * config/arm/arm.c (FL_CRC32): Define. (arm_have_crc): Likewise. (arm_option_override): Set arm_have_crc. (arm_builtins): Add CRC32 builtins. (bdesc_2arg): Likewise. (arm_init_crc32_builtins): New function. (arm_init_builtins): Initialise CRC32 builtins. (arm_file_start): Handle architecture extensions. * config/arm/arm.h (TARGET_CPU_CPP_BUILTINS): Define __ARM_FEATURE_CRC32. Define __ARM_32BIT_STATE. (TARGET_CRC32): Define. * config/arm/arm-arches.def: Add armv8-a+crc. * config/arm/arm-tables.opt: Regenerate. * config/arm/arm.md (type): Add crc. (crc_variant): New insn. * config/arm/arm_acle.h: New file. * config/arm/iterators.md (CRC): New int iterator. (crc_variant, crc_mode): New int attributes. * confg/arm/unspecs.md (UNSPEC_CRC32B, UNSPEC_CRC32H, UNSPEC_CRC32W, UNSPEC_CRC32CB, UNSPEC_CRC32CH, UNSPEC_CRC32CW): New unspecs. * doc/invoke.texi: Document -march=armv8-a+crc option. * doc/extend.texi: Document ACLE intrinsics. * doc/arm-acle-intrinsics.texi: New. gcc/testsuite 2013-11-19 Kyrylo Tkachov kyrylo.tkac...@arm.com * lib/target-supports.exp (add_options_for_arm_crc): New procedure. (check_effective_target_arm_crc_ok_nocache): Likewise. (check_effective_target_arm_crc_ok): Likewise. * gcc.target/arm/acle/: New directory. * gcc.target/arm/acle/acle.exp: New. * gcc.target/arm/acle/crc32b.c: New test. * gcc.target/arm/acle/crc32h.c: Likewise. * gcc.target/arm/acle/crc32w.c: Likewise. * gcc.target/arm/acle/crc32d.c: Likewise. * gcc.target/arm/acle/crc32cb.c: Likewise. * gcc.target/arm/acle/crc32ch.c: Likewise. * gcc.target/arm/acle/crc32cw.c: Likewise. * gcc.target/arm/acle/crc32cd.c: Likewise. diff --git a/gcc/Makefile.in b/gcc/Makefile.in index 8cc8341..455c80b 100644 --- a/gcc/Makefile.in +++ b/gcc/Makefile.in @@ -2793,7 +2793,8 @@ TEXI_GCC_FILES = gcc.texi gcc-common.texi gcc-vers.texi frontends.texi \ gcov.texi trouble.texi bugreport.texi service.texi \ contribute.texi compat.texi funding.texi gnu.texi gpl_v3.texi \ fdl.texi contrib.texi cppenv.texi cppopts.texi avr-mmcu.texi \ - implement-c.texi implement-cxx.texi arm-neon-intrinsics.texi + implement-c.texi implement-cxx.texi arm-neon-intrinsics.texi \ + arm-acle-intrinsics.texi # we explicitly use $(srcdir)/doc/tm.texi here to avoid confusion with # the generated tm.texi; the latter might have a more recent timestamp, diff --git a/gcc/config.gcc b/gcc/config.gcc index 2907018..ebbdc59 100644 --- a/gcc/config.gcc +++ b/gcc/config.gcc @@ -329,8 +329,8 @@ arc*-*-*) ;; arm*-*-*) cpu_type=arm - extra_headers=mmintrin.h arm_neon.h extra_objs=aarch-common.o + extra_headers=mmintrin.h arm_neon.h arm_acle.h target_type_format_char='%' c_target_objs=arm-c.o cxx_target_objs=arm-c.o diff --git a/gcc/config/arm/arm-arches.def b/gcc/config/arm/arm-arches.def index fcf3401..9b7d20c 100644 --- a/gcc/config/arm/arm-arches.def +++ b/gcc/config/arm/arm-arches.def @@ -54,5 +54,6 @@ ARM_ARCH(armv7-r, cortexr4, 7R, FL_CO_PROC | FL_FOR_ARCH7R) ARM_ARCH(armv7-m, cortexm3, 7M, FL_CO_PROC | FL_FOR_ARCH7M) ARM_ARCH(armv7e-m, cortexm4, 7EM, FL_CO_PROC | FL_FOR_ARCH7EM) ARM_ARCH(armv8-a, cortexa53, 8A, FL_CO_PROC | FL_FOR_ARCH8A) +ARM_ARCH(armv8-a+crc,cortexa53, 8A,FL_CO_PROC | FL_CRC32 | FL_FOR_ARCH8A) ARM_ARCH(iwmmxt, iwmmxt, 5TE, FL_LDSCHED | FL_STRONG | FL_FOR_ARCH5TE | FL_XSCALE | FL_IWMMXT) ARM_ARCH(iwmmxt2, iwmmxt2,5TE, FL_LDSCHED | FL_STRONG | FL_FOR_ARCH5TE | FL_XSCALE | FL_IWMMXT | FL_IWMMXT2) diff --git a/gcc/config/arm/arm-tables.opt b/gcc/config/arm/arm-tables.opt index b3e7a7c..8851876 100644 --- a/gcc/config/arm/arm-tables.opt +++ b/gcc/config/arm/arm-tables.opt @@ -362,10 +362,13 @@ EnumValue Enum(arm_arch) String(armv8-a) Value(23) EnumValue -Enum(arm_arch) String(iwmmxt) Value(24) +Enum(arm_arch) String(armv8-a+crc) Value(24) EnumValue -Enum(arm_arch) String(iwmmxt2) Value(25) +Enum(arm_arch) String(iwmmxt) Value(25) + +EnumValue +Enum(arm_arch) String(iwmmxt2) Value(26) Enum