This is the mail archive of the
gcc-patches@gcc.gnu.org
mailing list for the GCC project.
RE: Add support for CLZERO ISA
- From: "Kumar, Venkataramanan" <Venkataramanan dot Kumar at amd dot com>
- To: Uros Bizjak <ubizjak at gmail dot com>, "Stepanyan, Victoria" <Victoria dot Stepanyan at amd dot com>
- Cc: "gcc-patches at gcc dot gnu dot org" <gcc-patches at gcc dot gnu dot org>
- Date: Sun, 6 Dec 2015 17:13:35 +0000
- Subject: RE: Add support for CLZERO ISA
- Authentication-results: sourceware.org; auth=none
- Authentication-results: spf=none (sender IP is ) smtp dot mailfrom=Venkataramanan dot Kumar at amd dot com;
- References: <CAFULd4ZE+6XWwD=WbrNq1S0=S-8ZQSTm1hUvy3-K0NvSU=bR5A at mail dot gmail dot com> <DM2PR12MB0137617B245DD5DF110019DB85050 at DM2PR12MB0137 dot namprd12 dot prod dot outlook dot com>
Hi Uros,
> -----Original Message-----
> From: Stepanyan, Victoria
> Sent: Thursday, November 26, 2015 1:43 AM
> To: Uros Bizjak; gcc-patches@gcc.gnu.org
> Cc: Kumar, Venkataramanan
> Subject: RE: Add support for CLZERO ISA
>
> Thank you for the feedback, PFA fixed patch.
>
> Victoria
>
>
> -----Original Message-----
> From: Uros Bizjak [mailto:ubizjak@gmail.com]
> Sent: Wednesday, November 25, 2015 11:32
> To: gcc-patches@gcc.gnu.org
> Cc: Stepanyan, Victoria; Kumar, Venkataramanan
> Subject: Re: Add support for CLZERO ISA
>
> Hello!
>
> > 2015-11-25 Victoria Stepanyan <victoria.stepanyan@amd.com>
> >
> > * common/config/i386/i386-common.c
> > (OPTION_MASK_ISA_CLZERO_SET): New.
> > (ix86_handle_option): Handle clzero.
> > * config.gcc (i[34567]86-*-*): Add clzerointrin.h,
> > (x86_64-*-*): Likewise.
> > * config/i386/clzerointrin.h: New header.
> > * config/i386/cpuid.h (bit_CLZERO): Define.
> > * config/i386/driver-i386.c (host_detect_local_cpu): Detect
> > CLZERO support.
> > * config/i386/i386.opt (clzero): New.
> > * config/i386/i386-c.c: Define __CLZERO__ if needed.
> > * config/i386/i386.c (ix86_target_string): Define -mclzero option.
> > (PTA_CLZERO): New.
> > (ix86_option_override_internal): Handle new option.
> > (processor_alias_table): Added PTA_CLZERO.
> > (ix86_valid_target_attribute_inner_p): Add OPT_mclzero.
> > (ix86_builtins): Add IX86_BUILTIN_CLZERO, IX86_BUILTIN_CLZERO.
> > (ix86_expand_builtin): Handle IX86_BUILTIN_CLZERO and
> > IX86_BUILTIN_CLZERO built-ins.
> > * config/i386/i386.h (TARGET_CLZERO): New.
> > * config/i386/i386.md (unspecv): Add UNSPEC_CLZERO.
> > (clzero): New pattern.
> > (clzero_<mode>): New pattern.
> > * config/i386/x86intrin.h: Include clzerointrin.h.
> > * doc/extend.texi: Document clzero builtins.
> > * doc/invoke.texi: Document -mclzero option.
> >
> > gcc/testsuite/ChangeLog:
> >
> > 2015-11-25 Victoria Stepanyan <victoria.stepanyan@amd.com>
> >
> > * gcc.target/i386/clzero.c: New.
> > * gcc.target/i386/sse-12.c: Add -mclzero.
> > * gcc.target/i386/sse-13.c: Ditto.
> > * gcc.target/i386/sse-14.c: Ditto.
> > * gcc.target/i386/sse-22.c: Ditto.
> > * gcc.target/i386/sse-23.c: Ditto.
> > * g++.dg/other/i386-2.C: Ditto.
> > * g++.dg/other/i386-3.C: Ditto.
> >
> > Ok for trunk ?
>
> OK for mainline SVN with a few issues, mentioned below fixed.
Up streamed the patch on behalf of Victoria.
https://gcc.gnu.org/viewcvs/gcc?limit_changes=0&view=revision&revision=231340
Regards,
Venkat.
>
> @@ -5902,6 +5905,7 @@
> IX86_ATTR_ISA ("clwb", OPT_mclwb),
> IX86_ATTR_ISA ("pcommit", OPT_mpcommit),
> IX86_ATTR_ISA ("mwaitx", OPT_mmwaitx),
> + IX86_ATTR_ISA ("clzero", OPT_mclzero),
>
> Please use tab instead of spaces before OPT_mclzero.
>
> @@ -116,8 +116,8 @@
> #define TARGET_SHA_P(x) TARGET_ISA_SHA_P(x) #define
> TARGET_CLFLUSHOPT TARGET_ISA_CLFLUSHOPT #define
> TARGET_CLFLUSHOPT_P(x) TARGET_ISA_CLFLUSHOPT_P(x) -#define
> TARGET_CLZERO TARGET_ISA_CLZERO -#define TARGET_CLZERO_P(x)
> TARGET_ISA_CLZERO_P(x)
> +#define TARGET_CLZERO TARGET_ISA_CLZERO
> +#define TARGET_CLZERO_P(x) TARGET_ISA_CLZERO_P(x)
> #define TARGET_XSAVEC TARGET_ISA_XSAVEC #define
> TARGET_XSAVEC_P(x) TARGET_ISA_XSAVEC_P(x) #define TARGET_XSAVES
> TARGET_ISA_XSAVES
>
> Unwanted change.
>
> +;; CLZERO
> +(define_insn "clzero_<mode>"
> + [(unspec_volatile [(match_operand:P 0 "register_operand" "a")]
> + UNSPECV_CLZERO)]
> + "TARGET_CLZERO"
> + "clzero"
> + [(set_attr "memory" "unknown")])
> +
>
> Please also add (probably invariant) "length" attribute, see e.g. mwaitx insn.
>
> @@ -310,7 +310,7 @@
> -fsanitize=@var{style} -fsanitize-recover -fsanitize-recover=@var{style}
> @gol -fasan-shadow-offset=@var{number} -fsanitize-
> sections=@var{s1},@var{s2},... @gol -fsanitize-undefined-trap-on-error
> @gol --fcheck-pointer-bounds -fchecking -fchkp-check-incomplete-type
> @gol
> +-fcheck-pointer-bounds -fchkp-check-incomplete-type @gol
> -fchkp-first-field-has-own-bounds -fchkp-narrow-bounds @gol -fchkp-
> narrow-to-innermost-array -fchkp-optimize @gol -fchkp-use-fast-string-
> functions -fchkp-use-nochk-string-functions @gol
>
> Unwanted change.
>
> @@ -6145,12 +6145,6 @@
> functions for controlling the Pointer Bounds Checker. @xref{Pointer
> Bounds Checker builtins}, for more information.
>
> -@item -fchecking
> -@opindex fchecking
> -@opindex fno-checking
> -Enable internal consistency checking. The default depends on -the compiler
> configuration.
> -
> @item -fchkp-check-incomplete-type
> @opindex fchkp-check-incomplete-type
> @opindex fno-chkp-check-incomplete-type
>
> Unwanted change.
>
> Thanks,
> Uros.