Gentoo Archives: gentoo-commits

From: Mike Pagano <mpagano@g.o>
To: gentoo-commits@l.g.o
Subject: [gentoo-commits] proj/linux-patches:4.6 commit in: /
Date: Fri, 01 Jul 2016 00:31:44
Message-Id: 1467333070.fd28e3ad763ea79a262ca9d96d6d812817ec60fe.mpagano@gentoo
1 commit: fd28e3ad763ea79a262ca9d96d6d812817ec60fe
2 Author: Mike Pagano <mpagano <AT> gentoo <DOT> org>
3 AuthorDate: Fri Jul 1 00:31:10 2016 +0000
4 Commit: Mike Pagano <mpagano <AT> gentoo <DOT> org>
5 CommitDate: Fri Jul 1 00:31:10 2016 +0000
6 URL: https://gitweb.gentoo.org/proj/linux-patches.git/commit/?id=fd28e3ad
7
8 Update gcc 4.9+ optimization patch. Bug #587578
9
10 ...-additional-cpu-optimizations-for-gcc-4.9.patch | 90 ++++++++++++++--------
11 1 file changed, 57 insertions(+), 33 deletions(-)
12
13 diff --git a/5010_enable-additional-cpu-optimizations-for-gcc-4.9.patch b/5010_enable-additional-cpu-optimizations-for-gcc-4.9.patch
14 index 418201d..d9729b2 100644
15 --- a/5010_enable-additional-cpu-optimizations-for-gcc-4.9.patch
16 +++ b/5010_enable-additional-cpu-optimizations-for-gcc-4.9.patch
17 @@ -21,11 +21,12 @@ bug report to see if I'm right: https://bugzilla.kernel.org/show_bug.cgi?id=7746
18 This patch will expand the number of microarchitectures to include newer
19 processors including: AMD K10-family, AMD Family 10h (Barcelona), AMD Family
20 14h (Bobcat), AMD Family 15h (Bulldozer), AMD Family 15h (Piledriver), AMD
21 -Family 16h (Jaguar), Intel 1st Gen Core i3/i5/i7 (Nehalem), Intel 1.5 Gen Core
22 -i3/i5/i7 (Westmere), Intel 2nd Gen Core i3/i5/i7 (Sandybridge), Intel 3rd Gen
23 -Core i3/i5/i7 (Ivybridge), Intel 4th Gen Core i3/i5/i7 (Haswell), Intel 5th
24 -Gen Core i3/i5/i7 (Broadwell), and the low power Silvermont series of Atom
25 -processors (Silvermont). It also offers the compiler the 'native' flag.
26 +Family 15h (Steamroller), Family 16h (Jaguar), Intel 1st Gen Core i3/i5/i7
27 +(Nehalem), Intel 1.5 Gen Core i3/i5/i7 (Westmere), Intel 2nd Gen Core i3/i5/i7
28 +(Sandybridge), Intel 3rd Gen Core i3/i5/i7 (Ivybridge), Intel 4th Gen Core
29 +i3/i5/i7 (Haswell), Intel 5th Gen Core i3/i5/i7 (Broadwell), and the low power
30 +Silvermont series of Atom processors (Silvermont). It also offers the compiler
31 +the 'native' flag.
32
33 Small but real speed increases are measurable using a make endpoint comparing
34 a generic kernel to one built with one of the respective microarchs.
35 @@ -37,9 +38,9 @@ REQUIREMENTS
36 linux version >=3.15
37 gcc version >=4.9
38
39 ---- a/arch/x86/include/asm/module.h 2014-06-16 16:44:27.000000000 -0400
40 -+++ b/arch/x86/include/asm/module.h 2015-03-07 03:27:32.556672424 -0500
41 -@@ -15,6 +15,22 @@
42 +--- a/arch/x86/include/asm/module.h 2015-08-30 14:34:09.000000000 -0400
43 ++++ b/arch/x86/include/asm/module.h 2015-11-06 14:18:24.234941036 -0500
44 +@@ -15,6 +15,24 @@
45 #define MODULE_PROC_FAMILY "586MMX "
46 #elif defined CONFIG_MCORE2
47 #define MODULE_PROC_FAMILY "CORE2 "
48 @@ -59,10 +60,12 @@ gcc version >=4.9
49 +#define MODULE_PROC_FAMILY "HASWELL "
50 +#elif defined CONFIG_MBROADWELL
51 +#define MODULE_PROC_FAMILY "BROADWELL "
52 ++#elif defined CONFIG_MSKYLAKE
53 ++#define MODULE_PROC_FAMILY "SKYLAKE "
54 #elif defined CONFIG_MATOM
55 #define MODULE_PROC_FAMILY "ATOM "
56 #elif defined CONFIG_M686
57 -@@ -33,6 +49,20 @@
58 +@@ -33,6 +51,22 @@
59 #define MODULE_PROC_FAMILY "K7 "
60 #elif defined CONFIG_MK8
61 #define MODULE_PROC_FAMILY "K8 "
62 @@ -77,14 +80,16 @@ gcc version >=4.9
63 +#elif defined CONFIG_MBULLDOZER
64 +#define MODULE_PROC_FAMILY "BULLDOZER "
65 +#elif defined CONFIG_MPILEDRIVER
66 ++#define MODULE_PROC_FAMILY "STEAMROLLER "
67 ++#elif defined CONFIG_MSTEAMROLLER
68 +#define MODULE_PROC_FAMILY "PILEDRIVER "
69 +#elif defined CONFIG_MJAGUAR
70 +#define MODULE_PROC_FAMILY "JAGUAR "
71 #elif defined CONFIG_MELAN
72 #define MODULE_PROC_FAMILY "ELAN "
73 #elif defined CONFIG_MCRUSOE
74 ---- a/arch/x86/Kconfig.cpu 2014-06-16 16:44:27.000000000 -0400
75 -+++ b/arch/x86/Kconfig.cpu 2015-03-07 03:32:14.337713226 -0500
76 +--- a/arch/x86/Kconfig.cpu 2015-08-30 14:34:09.000000000 -0400
77 ++++ b/arch/x86/Kconfig.cpu 2015-11-06 14:20:14.948369244 -0500
78 @@ -137,9 +137,8 @@ config MPENTIUM4
79 -Paxville
80 -Dempsey
81 @@ -105,7 +110,7 @@ gcc version >=4.9
82 depends on X86_32
83 ---help---
84 Select this for an AMD Athlon K7-family processor. Enables use of
85 -@@ -155,12 +154,62 @@ config MK7
86 +@@ -155,12 +154,69 @@ config MK7
87 flags to GCC.
88
89 config MK8
90 @@ -159,6 +164,13 @@ gcc version >=4.9
91 +
92 + Enables -march=bdver2
93 +
94 ++config MSTEAMROLLER
95 ++ bool "AMD Steamroller"
96 ++ ---help---
97 ++ Select this for AMD Steamroller processors.
98 ++
99 ++ Enables -march=bdver3
100 ++
101 +config MJAGUAR
102 + bool "AMD Jaguar"
103 + ---help---
104 @@ -169,7 +181,7 @@ gcc version >=4.9
105 config MCRUSOE
106 bool "Crusoe"
107 depends on X86_32
108 -@@ -251,8 +300,17 @@ config MPSC
109 +@@ -251,8 +307,17 @@ config MPSC
110 using the cpu family field
111 in /proc/cpuinfo. Family 15 is an older Xeon, Family 6 a newer one.
112
113 @@ -188,7 +200,7 @@ gcc version >=4.9
114 ---help---
115
116 Select this for Intel Core 2 and newer Core 2 Xeons (Xeon 51xx and
117 -@@ -260,14 +318,63 @@ config MCORE2
118 +@@ -260,14 +325,71 @@ config MCORE2
119 family in /proc/cpuinfo. Newer ones have 6 and older ones 15
120 (not a typo)
121
122 @@ -255,10 +267,18 @@ gcc version >=4.9
123 + Select this for 5th Gen Core processors in the Broadwell family.
124 +
125 + Enables -march=broadwell
126 ++
127 ++config MSKYLAKE
128 ++ bool "Intel Skylake"
129 ++ ---help---
130 ++
131 ++ Select this for 6th Gen Core processors in the Skylake family.
132 ++
133 ++ Enables -march=skylake
134
135 config GENERIC_CPU
136 bool "Generic-x86-64"
137 -@@ -276,6 +383,19 @@ config GENERIC_CPU
138 +@@ -276,6 +398,19 @@ config GENERIC_CPU
139 Generic x86-64 CPU.
140 Run equally well on all x86-64 CPUs.
141
142 @@ -278,54 +298,54 @@ gcc version >=4.9
143 endchoice
144
145 config X86_GENERIC
146 -@@ -300,7 +420,7 @@ config X86_INTERNODE_CACHE_SHIFT
147 +@@ -300,7 +435,7 @@ config X86_INTERNODE_CACHE_SHIFT
148 config X86_L1_CACHE_SHIFT
149 int
150 default "7" if MPENTIUM4 || MPSC
151 - default "6" if MK7 || MK8 || MPENTIUMM || MCORE2 || MATOM || MVIAC7 || X86_GENERIC || GENERIC_CPU
152 -+ default "6" if MK7 || MK8 || MK8SSE3 || MK10 || MBARCELONA || MBOBCAT || MBULLDOZER || MPILEDRIVER || MJAGUAR || MPENTIUMM || MCORE2 || MNEHALEM || MWESTMERE || MSILVERMONT || MSANDYBRIDGE || MIVYBRIDGE || MHASWELL || MBROADWELL || MNATIVE || MATOM || MVIAC7 || X86_GENERIC || GENERIC_CPU
153 ++ default "6" if MK7 || MK8 || MK8SSE3 || MK10 || MBARCELONA || MBOBCAT || MBULLDOZER || MPILEDRIVER || MSTEAMROLLER || MJAGUAR || MPENTIUMM || MCORE2 || MNEHALEM || MWESTMERE || MSILVERMONT || MSANDYBRIDGE || MIVYBRIDGE || MHASWELL || MBROADWELL || MSKYLAKE || MNATIVE || MATOM || MVIAC7 || X86_GENERIC || GENERIC_CPU
154 default "4" if MELAN || M486 || MGEODEGX1
155 default "5" if MWINCHIP3D || MWINCHIPC6 || MCRUSOE || MEFFICEON || MCYRIXIII || MK6 || MPENTIUMIII || MPENTIUMII || M686 || M586MMX || M586TSC || M586 || MVIAC3_2 || MGEODE_LX
156
157 -@@ -331,11 +451,11 @@ config X86_ALIGNMENT_16
158 +@@ -331,11 +466,11 @@ config X86_ALIGNMENT_16
159
160 config X86_INTEL_USERCOPY
161 def_bool y
162 - depends on MPENTIUM4 || MPENTIUMM || MPENTIUMIII || MPENTIUMII || M586MMX || X86_GENERIC || MK8 || MK7 || MEFFICEON || MCORE2
163 -+ depends on MPENTIUM4 || MPENTIUMM || MPENTIUMIII || MPENTIUMII || M586MMX || X86_GENERIC || MK8 || MK8SSE3 || MK7 || MEFFICEON || MCORE2 || MK10 || MBARCELONA || MNEHALEM || MWESTMERE || MSILVERMONT || MSANDYBRIDGE || MIVYBRIDGE || MHASWELL || MBROADWELL || MNATIVE
164 ++ depends on MPENTIUM4 || MPENTIUMM || MPENTIUMIII || MPENTIUMII || M586MMX || X86_GENERIC || MK8 || MK8SSE3 || MK7 || MEFFICEON || MCORE2 || MK10 || MBARCELONA || MNEHALEM || MWESTMERE || MSILVERMONT || MSANDYBRIDGE || MIVYBRIDGE || MHASWELL || MBROADWELL || MSKYLAKE || MNATIVE
165
166 config X86_USE_PPRO_CHECKSUM
167 def_bool y
168 - depends on MWINCHIP3D || MWINCHIPC6 || MCYRIXIII || MK7 || MK6 || MPENTIUM4 || MPENTIUMM || MPENTIUMIII || MPENTIUMII || M686 || MK8 || MVIAC3_2 || MVIAC7 || MEFFICEON || MGEODE_LX || MCORE2 || MATOM
169 -+ depends on MWINCHIP3D || MWINCHIPC6 || MCYRIXIII || MK7 || MK6 || MK10 || MPENTIUM4 || MPENTIUMM || MPENTIUMIII || MPENTIUMII || M686 || MK8 || MK8SSE3 || MVIAC3_2 || MVIAC7 || MEFFICEON || MGEODE_LX || MCORE2 || MNEHALEM || MWESTMERE || MSILVERMONT || MSANDYBRIDGE || MIVYBRIDGE || MHASWELL || MBROADWELL || MATOM || MNATIVE
170 ++ depends on MWINCHIP3D || MWINCHIPC6 || MCYRIXIII || MK7 || MK6 || MK10 || MPENTIUM4 || MPENTIUMM || MPENTIUMIII || MPENTIUMII || M686 || MK8 || MK8SSE3 || MVIAC3_2 || MVIAC7 || MEFFICEON || MGEODE_LX || MCORE2 || MNEHALEM || MWESTMERE || MSILVERMONT || MSANDYBRIDGE || MIVYBRIDGE || MHASWELL || MBROADWELL || MSKYLAKE || MATOM || MNATIVE
171
172 config X86_USE_3DNOW
173 def_bool y
174 -@@ -359,17 +479,17 @@ config X86_P6_NOP
175 +@@ -359,17 +494,17 @@ config X86_P6_NOP
176
177 config X86_TSC
178 def_bool y
179 - depends on (MWINCHIP3D || MCRUSOE || MEFFICEON || MCYRIXIII || MK7 || MK6 || MPENTIUM4 || MPENTIUMM || MPENTIUMIII || MPENTIUMII || M686 || M586MMX || M586TSC || MK8 || MVIAC3_2 || MVIAC7 || MGEODEGX1 || MGEODE_LX || MCORE2 || MATOM) || X86_64
180 -+ depends on (MWINCHIP3D || MCRUSOE || MEFFICEON || MCYRIXIII || MK7 || MK6 || MPENTIUM4 || MPENTIUMM || MPENTIUMIII || MPENTIUMII || M686 || M586MMX || M586TSC || MK8 || MK8SSE3 || MVIAC3_2 || MVIAC7 || MGEODEGX1 || MGEODE_LX || MCORE2 || MNEHALEM || MWESTMERE || MSILVERMONT || MSANDYBRIDGE || MIVYBRIDGE || MHASWELL || MBROADWELL || MNATIVE || MATOM) || X86_64
181 ++ depends on (MWINCHIP3D || MCRUSOE || MEFFICEON || MCYRIXIII || MK7 || MK6 || MPENTIUM4 || MPENTIUMM || MPENTIUMIII || MPENTIUMII || M686 || M586MMX || M586TSC || MK8 || MK8SSE3 || MVIAC3_2 || MVIAC7 || MGEODEGX1 || MGEODE_LX || MCORE2 || MNEHALEM || MWESTMERE || MSILVERMONT || MSANDYBRIDGE || MIVYBRIDGE || MHASWELL || MBROADWELL || MSKYLAKE || MNATIVE || MATOM) || X86_64
182
183 config X86_CMPXCHG64
184 def_bool y
185 - depends on X86_PAE || X86_64 || MCORE2 || MPENTIUM4 || MPENTIUMM || MPENTIUMIII || MPENTIUMII || M686 || MATOM
186 -+ depends on X86_PAE || X86_64 || MCORE2 || MNEHALEM || MWESTMERE || MSILVERMONT || MSANDYBRIDGE || MIVYBRIDGE || MHASWELL || MBROADWELL || MPENTIUM4 || MPENTIUMM || MPENTIUMIII || MPENTIUMII || M686 || MATOM || MNATIVE
187 ++ depends on X86_PAE || X86_64 || MCORE2 || MNEHALEM || MWESTMERE || MSILVERMONT || MSANDYBRIDGE || MIVYBRIDGE || MHASWELL || MBROADWELL || MSKYLAKE || MPENTIUM4 || MPENTIUMM || MPENTIUMIII || MPENTIUMII || M686 || MATOM || MNATIVE
188
189 # this should be set for all -march=.. options where the compiler
190 # generates cmov.
191 config X86_CMOV
192 def_bool y
193 - depends on (MK8 || MK7 || MCORE2 || MPENTIUM4 || MPENTIUMM || MPENTIUMIII || MPENTIUMII || M686 || MVIAC3_2 || MVIAC7 || MCRUSOE || MEFFICEON || X86_64 || MATOM || MGEODE_LX)
194 -+ depends on (MK8 || MK8SSE3 || MK10 || MBARCELONA || MBOBCAT || MBULLDOZER || MPILEDRIVER || MJAGUAR || MK7 || MCORE2 || MNEHALEM || MWESTMERE || MSILVERMONT || MSANDYBRIDGE || MIVYBRIDGE || MHASWELL || MBROADWELL || MPENTIUM4 || MPENTIUMM || MPENTIUMIII || MPENTIUMII || M686 || MVIAC3_2 || MVIAC7 || MCRUSOE || MEFFICEON || X86_64 || MNATIVE || MATOM || MGEODE_LX)
195 ++ depends on (MK8 || MK8SSE3 || MK10 || MBARCELONA || MBOBCAT || MBULLDOZER || MPILEDRIVER || MSTEAMROLLER || MJAGUAR || MK7 || MCORE2 || MNEHALEM || MWESTMERE || MSILVERMONT || MSANDYBRIDGE || MIVYBRIDGE || MHASWELL || MBROADWELL || MSKYLAKE || MPENTIUM4 || MPENTIUMM || MPENTIUMIII || MPENTIUMII || M686 || MVIAC3_2 || MVIAC7 || MCRUSOE || MEFFICEON || X86_64 || MNATIVE || MATOM || MGEODE_LX)
196
197 config X86_MINIMUM_CPU_FAMILY
198 int
199 ---- a/arch/x86/Makefile 2014-06-16 16:44:27.000000000 -0400
200 -+++ b/arch/x86/Makefile 2015-03-07 03:33:27.650843211 -0500
201 -@@ -92,13 +92,35 @@ else
202 - KBUILD_CFLAGS += $(call cc-option,-mpreferred-stack-boundary=3)
203 +--- a/arch/x86/Makefile 2015-08-30 14:34:09.000000000 -0400
204 ++++ b/arch/x86/Makefile 2015-11-06 14:21:05.708983344 -0500
205 +@@ -94,13 +94,38 @@ else
206 + KBUILD_CFLAGS += $(call cc-option,-mskip-rax-setup)
207
208 # FIXME - should be integrated in Makefile.cpu (Makefile_32.cpu)
209 + cflags-$(CONFIG_MNATIVE) += $(call cc-option,-march=native)
210 @@ -336,6 +356,7 @@ gcc version >=4.9
211 + cflags-$(CONFIG_MBOBCAT) += $(call cc-option,-march=btver1)
212 + cflags-$(CONFIG_MBULLDOZER) += $(call cc-option,-march=bdver1)
213 + cflags-$(CONFIG_MPILEDRIVER) += $(call cc-option,-march=bdver2)
214 ++ cflags-$(CONFIG_MSTEAMROLLER) += $(call cc-option,-march=bdver3)
215 + cflags-$(CONFIG_MJAGUAR) += $(call cc-option,-march=btver2)
216 cflags-$(CONFIG_MPSC) += $(call cc-option,-march=nocona)
217
218 @@ -358,14 +379,16 @@ gcc version >=4.9
219 + $(call cc-option,-march=haswell,$(call cc-option,-mtune=haswell))
220 + cflags-$(CONFIG_MBROADWELL) += \
221 + $(call cc-option,-march=broadwell,$(call cc-option,-mtune=broadwell))
222 ++ cflags-$(CONFIG_MSKYLAKE) += \
223 ++ $(call cc-option,-march=skylake,$(call cc-option,-mtune=skylake))
224 + cflags-$(CONFIG_MATOM) += $(call cc-option,-march=bonnell) \
225 + $(call cc-option,-mtune=bonnell,$(call cc-option,-mtune=generic))
226 cflags-$(CONFIG_GENERIC_CPU) += $(call cc-option,-mtune=generic)
227 KBUILD_CFLAGS += $(cflags-y)
228
229 ---- a/arch/x86/Makefile_32.cpu 2014-06-16 16:44:27.000000000 -0400
230 -+++ b/arch/x86/Makefile_32.cpu 2015-03-07 03:34:15.203586024 -0500
231 -@@ -23,7 +23,15 @@ cflags-$(CONFIG_MK6) += -march=k6
232 +--- a/arch/x86/Makefile_32.cpu 2015-08-30 14:34:09.000000000 -0400
233 ++++ b/arch/x86/Makefile_32.cpu 2015-11-06 14:21:43.604429077 -0500
234 +@@ -23,7 +23,16 @@ cflags-$(CONFIG_MK6) += -march=k6
235 # Please note, that patches that add -march=athlon-xp and friends are pointless.
236 # They make zero difference whatsosever to performance at this time.
237 cflags-$(CONFIG_MK7) += -march=athlon
238 @@ -377,11 +400,12 @@ gcc version >=4.9
239 +cflags-$(CONFIG_MBOBCAT) += $(call cc-option,-march=btver1,-march=athlon)
240 +cflags-$(CONFIG_MBULLDOZER) += $(call cc-option,-march=bdver1,-march=athlon)
241 +cflags-$(CONFIG_MPILEDRIVER) += $(call cc-option,-march=bdver2,-march=athlon)
242 ++cflags-$(CONFIG_MSTEAMROLLER) += $(call cc-option,-march=bdver3,-march=athlon)
243 +cflags-$(CONFIG_MJAGUAR) += $(call cc-option,-march=btver2,-march=athlon)
244 cflags-$(CONFIG_MCRUSOE) += -march=i686 $(align)-functions=0 $(align)-jumps=0 $(align)-loops=0
245 cflags-$(CONFIG_MEFFICEON) += -march=i686 $(call tune,pentium3) $(align)-functions=0 $(align)-jumps=0 $(align)-loops=0
246 cflags-$(CONFIG_MWINCHIPC6) += $(call cc-option,-march=winchip-c6,-march=i586)
247 -@@ -32,8 +40,15 @@ cflags-$(CONFIG_MCYRIXIII) += $(call cc-
248 +@@ -32,8 +41,16 @@ cflags-$(CONFIG_MCYRIXIII) += $(call cc-
249 cflags-$(CONFIG_MVIAC3_2) += $(call cc-option,-march=c3-2,-march=i686)
250 cflags-$(CONFIG_MVIAC7) += -march=i686
251 cflags-$(CONFIG_MCORE2) += -march=i686 $(call tune,core2)
252 @@ -394,9 +418,9 @@ gcc version >=4.9
253 +cflags-$(CONFIG_MIVYBRIDGE) += -march=i686 $(call tune,ivybridge)
254 +cflags-$(CONFIG_MHASWELL) += -march=i686 $(call tune,haswell)
255 +cflags-$(CONFIG_MBROADWELL) += -march=i686 $(call tune,broadwell)
256 ++cflags-$(CONFIG_MSKYLAKE) += -march=i686 $(call tune,skylake)
257 +cflags-$(CONFIG_MATOM) += $(call cc-option,-march=bonnell,$(call cc-option,-march=core2,-march=i686)) \
258 + $(call cc-option,-mtune=bonnell,$(call cc-option,-mtune=generic))
259
260 # AMD Elan support
261 cflags-$(CONFIG_MELAN) += -march=i486
262 -