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]

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.

@@ -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.


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