summaryrefslogtreecommitdiff
path: root/0255-x86-Add-a-new-option-mdaz-ftz-to-enable-FTZ-and-DAZ-.patch
diff options
context:
space:
mode:
Diffstat (limited to '0255-x86-Add-a-new-option-mdaz-ftz-to-enable-FTZ-and-DAZ-.patch')
-rw-r--r--0255-x86-Add-a-new-option-mdaz-ftz-to-enable-FTZ-and-DAZ-.patch135
1 files changed, 135 insertions, 0 deletions
diff --git a/0255-x86-Add-a-new-option-mdaz-ftz-to-enable-FTZ-and-DAZ-.patch b/0255-x86-Add-a-new-option-mdaz-ftz-to-enable-FTZ-and-DAZ-.patch
new file mode 100644
index 0000000..d96f552
--- /dev/null
+++ b/0255-x86-Add-a-new-option-mdaz-ftz-to-enable-FTZ-and-DAZ-.patch
@@ -0,0 +1,135 @@
+From 1649f9fbbc5267de2a675336d3ac665528a03db8 Mon Sep 17 00:00:00 2001
+From: liuhongt <hongtao.liu@intel.com>
+Date: Wed, 10 May 2023 15:16:58 +0800
+Subject: [PATCH 01/28] x86: Add a new option -mdaz-ftz to enable FTZ and DAZ
+ flags in MXCSR.
+
+ if (mdaz-ftz)
+ link crtfastmath.o
+ else if ((Ofast || ffast-math || funsafe-math-optimizations)
+ && !mno-daz-ftz)
+ link crtfastmath.o
+ else
+ Don't link crtfastmath.o
+
+gcc/ChangeLog:
+
+ * config/i386/cygwin.h (ENDFILE_SPEC): Link crtfastmath.o
+ whenever -mdaz-ftz is specified. Don't link crtfastmath.o
+ when -mno-daz-ftz is specified.
+ * config/i386/darwin.h (ENDFILE_SPEC): Ditto.
+ * config/i386/gnu-user-common.h
+ (GNU_USER_TARGET_MATHFILE_SPEC): Ditto.
+ * config/i386/mingw32.h (ENDFILE_SPEC): Ditto.
+ * config/i386/i386.opt (mdaz-ftz): New option.
+ * doc/invoke.texi (x86 options): Document mftz-daz.
+---
+ gcc/config/i386/cygwin.h | 2 +-
+ gcc/config/i386/darwin.h | 4 ++--
+ gcc/config/i386/gnu-user-common.h | 2 +-
+ gcc/config/i386/i386.opt | 4 ++++
+ gcc/config/i386/mingw32.h | 2 +-
+ gcc/doc/invoke.texi | 11 ++++++++++-
+ 6 files changed, 19 insertions(+), 6 deletions(-)
+
+diff --git a/gcc/config/i386/cygwin.h b/gcc/config/i386/cygwin.h
+index d06eda369..5412c5d44 100644
+--- a/gcc/config/i386/cygwin.h
++++ b/gcc/config/i386/cygwin.h
+@@ -57,7 +57,7 @@ along with GCC; see the file COPYING3. If not see
+
+ #undef ENDFILE_SPEC
+ #define ENDFILE_SPEC \
+- "%{Ofast|ffast-math|funsafe-math-optimizations:crtfastmath.o%s}\
++ "%{mdaz-ftz:crtfastmath.o%s;Ofast|ffast-math|funsafe-math-optimizations:%{!mno-daz-ftz:crtfastmath.o%s}} \
+ %{!shared:%:if-exists(default-manifest.o%s)}\
+ %{fvtable-verify=none:%s; \
+ fvtable-verify=preinit:vtv_end.o%s; \
+diff --git a/gcc/config/i386/darwin.h b/gcc/config/i386/darwin.h
+index a55f6b2b8..2f773924d 100644
+--- a/gcc/config/i386/darwin.h
++++ b/gcc/config/i386/darwin.h
+@@ -109,8 +109,8 @@ along with GCC; see the file COPYING3. If not see
+ "%{!force_cpusubtype_ALL:-force_cpusubtype_ALL} "
+
+ #undef ENDFILE_SPEC
+-#define ENDFILE_SPEC \
+- "%{Ofast|ffast-math|funsafe-math-optimizations:crtfastmath.o%s} \
++#define ENDFILE_SPEC
++\ "%{mdaz-ftz:crtfastmath.o%s;Ofast|ffast-math|funsafe-math-optimizations:%{!mno-daz-ftz:crtfastmath.o%s}} \
+ %{mpc32:crtprec32.o%s} \
+ %{mpc64:crtprec64.o%s} \
+ %{mpc80:crtprec80.o%s}" TM_DESTRUCTOR
+diff --git a/gcc/config/i386/gnu-user-common.h b/gcc/config/i386/gnu-user-common.h
+index 23b54c5be..3d2a33f17 100644
+--- a/gcc/config/i386/gnu-user-common.h
++++ b/gcc/config/i386/gnu-user-common.h
+@@ -47,7 +47,7 @@ along with GCC; see the file COPYING3. If not see
+
+ /* Similar to standard GNU userspace, but adding -ffast-math support. */
+ #define GNU_USER_TARGET_MATHFILE_SPEC \
+- "%{Ofast|ffast-math|funsafe-math-optimizations:crtfastmath.o%s} \
++ "%{mdaz-ftz:crtfastmath.o%s;Ofast|ffast-math|funsafe-math-optimizations:%{!mno-daz-ftz:crtfastmath.o%s}} \
+ %{mpc32:crtprec32.o%s} \
+ %{mpc64:crtprec64.o%s} \
+ %{mpc80:crtprec80.o%s}"
+diff --git a/gcc/config/i386/i386.opt b/gcc/config/i386/i386.opt
+index fc1b944ac..498fb454d 100644
+--- a/gcc/config/i386/i386.opt
++++ b/gcc/config/i386/i386.opt
+@@ -420,6 +420,10 @@ mpc80
+ Target RejectNegative
+ Set 80387 floating-point precision to 80-bit.
+
++mdaz-ftz
++Target
++Set the FTZ and DAZ Flags.
++
+ mpreferred-stack-boundary=
+ Target RejectNegative Joined UInteger Var(ix86_preferred_stack_boundary_arg)
+ Attempt to keep stack aligned to this power of 2.
+diff --git a/gcc/config/i386/mingw32.h b/gcc/config/i386/mingw32.h
+index d3ca0cd02..ddbe6a405 100644
+--- a/gcc/config/i386/mingw32.h
++++ b/gcc/config/i386/mingw32.h
+@@ -197,7 +197,7 @@ along with GCC; see the file COPYING3. If not see
+
+ #undef ENDFILE_SPEC
+ #define ENDFILE_SPEC \
+- "%{Ofast|ffast-math|funsafe-math-optimizations:crtfastmath.o%s} \
++ "%{mdaz-ftz:crtfastmath.o%s;Ofast|ffast-math|funsafe-math-optimizations:%{!mno-daz-ftz:crtfastmath.o%s}} \
+ %{!shared:%:if-exists(default-manifest.o%s)}\
+ %{fvtable-verify=none:%s; \
+ fvtable-verify=preinit:vtv_end.o%s; \
+diff --git a/gcc/doc/invoke.texi b/gcc/doc/invoke.texi
+index 2b376e0e9..3a48655e5 100644
+--- a/gcc/doc/invoke.texi
++++ b/gcc/doc/invoke.texi
+@@ -1437,7 +1437,7 @@ See RS/6000 and PowerPC Options.
+ -m96bit-long-double -mlong-double-64 -mlong-double-80 -mlong-double-128 @gol
+ -mregparm=@var{num} -msseregparm @gol
+ -mveclibabi=@var{type} -mvect8-ret-in-mem @gol
+--mpc32 -mpc64 -mpc80 -mstackrealign @gol
++-mpc32 -mpc64 -mpc80 -mdaz-ftz -mstackrealign @gol
+ -momit-leaf-frame-pointer -mno-red-zone -mno-tls-direct-seg-refs @gol
+ -mcmodel=@var{code-model} -mabi=@var{name} -maddress-mode=@var{mode} @gol
+ -m32 -m64 -mx32 -m16 -miamcu -mlarge-data-threshold=@var{num} @gol
+@@ -32122,6 +32122,15 @@ are enabled by default; routines in such libraries could suffer significant
+ loss of accuracy, typically through so-called ``catastrophic cancellation'',
+ when this option is used to set the precision to less than extended precision.
+
++@item -mdaz-ftz
++@opindex mdaz-ftz
++
++The flush-to-zero (FTZ) and denormals-are-zero (DAZ) flags in the MXCSR register
++are used to control floating-point calculations.SSE and AVX instructions
++including scalar and vector instructions could benefit from enabling the FTZ
++and DAZ flags when @option{-mdaz-ftz} is specified. Don't set FTZ/DAZ flags
++when @option{-mno-daz-ftz} is specified.
++
+ @item -mstackrealign
+ @opindex mstackrealign
+ Realign the stack at entry. On the x86, the @option{-mstackrealign}
+--
+2.31.1
+