All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH] mk: gcc -march support for intel processors code names
@ 2016-08-15 15:02 Reshma Pattan
  2016-08-22 11:25 ` Thomas Monjalon
  2016-08-22 14:19 ` [PATCH v2] " Reshma Pattan
  0 siblings, 2 replies; 13+ messages in thread
From: Reshma Pattan @ 2016-08-15 15:02 UTC (permalink / raw)
  To: dev; +Cc: Reshma Pattan

The GCC 4.9 -march option supports the intel code names for processors,
for example -march=silvermont, -march=broadwell.
The RTE_MACHINE config flag can be used to pass code name to
the compiler as -march flag. Also old gcc versions compatibility code
for the intel platform is removed from
mk/toolchain/gcc/rte.toolchain-compat.mk

Release notes is updated.

Signed-off-by: Reshma Pattan <reshma.pattan@intel.com>
---
 doc/guides/rel_notes/release_16_11.rst   |  5 ++++
 mk/target/generic/rte.vars.mk            |  4 +++
 mk/toolchain/gcc/rte.toolchain-compat.mk | 47 ++------------------------------
 3 files changed, 11 insertions(+), 45 deletions(-)

diff --git a/doc/guides/rel_notes/release_16_11.rst b/doc/guides/rel_notes/release_16_11.rst
index 0b9022d..9f58133 100644
--- a/doc/guides/rel_notes/release_16_11.rst
+++ b/doc/guides/rel_notes/release_16_11.rst
@@ -36,6 +36,11 @@ New Features
 
      This section is a comment. Make sure to start the actual text at the margin.
 
+* **Added support for new gcc -march option.**
+
+  The GCC 4.9 ``-march`` option supports the Intel processor code names.
+  The config option ``RTE_MACHINE`` can be used to pass code names to the compiler as ``-march`` flag.
+
 
 Resolved Issues
 ---------------
diff --git a/mk/target/generic/rte.vars.mk b/mk/target/generic/rte.vars.mk
index 75a616a..b31e426 100644
--- a/mk/target/generic/rte.vars.mk
+++ b/mk/target/generic/rte.vars.mk
@@ -50,7 +50,11 @@
 #   - can define CPU_ASFLAGS variable (overriden by cmdline value) that
 #     overrides the one defined in arch.
 #
+ifneq ($(wildcard $(RTE_SDK)/mk/machine/$(RTE_MACHINE)/rte.vars.mk),)
 include $(RTE_SDK)/mk/machine/$(RTE_MACHINE)/rte.vars.mk
+else
+MACHINE_CFLAGS := -march=$(RTE_MACHINE)
+endif
 
 #
 # arch:
diff --git a/mk/toolchain/gcc/rte.toolchain-compat.mk b/mk/toolchain/gcc/rte.toolchain-compat.mk
index 6eed20c..7f23721 100644
--- a/mk/toolchain/gcc/rte.toolchain-compat.mk
+++ b/mk/toolchain/gcc/rte.toolchain-compat.mk
@@ -42,51 +42,8 @@ GCC_MAJOR = $(shell echo __GNUC__ | $(CC) -E -x c - | tail -n 1)
 GCC_MINOR = $(shell echo __GNUC_MINOR__ | $(CC) -E -x c - | tail -n 1)
 GCC_VERSION = $(GCC_MAJOR)$(GCC_MINOR)
 
-# if GCC is older than 4.x
-ifeq ($(shell test $(GCC_VERSION) -lt 40 && echo 1), 1)
-	MACHINE_CFLAGS =
-$(warning You are using GCC < 4.x. This is neither supported, nor tested.)
-
-
-else
-# GCC graceful degradation
-# GCC 4.2.x - added support for generic target
-# GCC 4.3.x - added support for core2, ssse3, sse4.1, sse4.2
-# GCC 4.4.x - added support for avx, aes, pclmul
-# GCC 4.5.x - added support for atom
-# GCC 4.6.x - added support for corei7, corei7-avx
-# GCC 4.7.x - added support for fsgsbase, rdrnd, f16c, core-avx-i, core-avx2
 # GCC 4.9.x - added support for armv8-a+crc
 #
-	ifeq ($(shell test $(GCC_VERSION) -le 49 && echo 1), 1)
-		MACHINE_CFLAGS := $(patsubst -march=armv8-a+crc,-march=armv8-a+crc -D__ARM_FEATURE_CRC32=1,$(MACHINE_CFLAGS))
-	endif
-	ifeq ($(shell test $(GCC_VERSION) -le 47 && echo 1), 1)
-		MACHINE_CFLAGS := $(patsubst -march=core-avx-i,-march=corei7-avx,$(MACHINE_CFLAGS))
-		MACHINE_CFLAGS := $(patsubst -march=core-avx2,-march=core-avx2,$(MACHINE_CFLAGS))
-	endif
-	ifeq ($(shell test $(GCC_VERSION) -lt 46 && echo 1), 1)
-		MACHINE_CFLAGS := $(patsubst -march=corei7-avx,-march=core2 -maes -mpclmul -mavx,$(MACHINE_CFLAGS))
-		MACHINE_CFLAGS := $(patsubst -march=corei7,-march=core2 -maes -mpclmul,$(MACHINE_CFLAGS))
-	endif
-	ifeq ($(shell test $(GCC_VERSION) -lt 45 && echo 1), 1)
-		MACHINE_CFLAGS := $(patsubst -march=atom,-march=core2 -mssse3,$(MACHINE_CFLAGS))
-	endif
-	ifeq ($(shell test $(GCC_VERSION) -lt 44 && echo 1), 1)
-		MACHINE_CFLAGS := $(filter-out -mavx -mpclmul -maes,$(MACHINE_CFLAGS))
-		ifneq ($(findstring SSE4_2, $(CPUFLAGS)),)
-			MACHINE_CFLAGS += -msse4.2
-		endif
-		ifneq ($(findstring SSE4_1, $(CPUFLAGS)),)
-			MACHINE_CFLAGS += -msse4.1
-		endif
-	endif
-	ifeq ($(shell test $(GCC_VERSION) -lt 43 && echo 1), 1)
-		MACHINE_CFLAGS := $(filter-out -msse% -mssse%,$(MACHINE_CFLAGS))
-		MACHINE_CFLAGS := $(patsubst -march=core2,-march=generic,$(MACHINE_CFLAGS))
-		MACHINE_CFLAGS += -msse3
-	endif
-	ifeq ($(shell test $(GCC_VERSION) -lt 42 && echo 1), 1)
-		MACHINE_CFLAGS := $(filter-out -march% -mtune% -msse%,$(MACHINE_CFLAGS))
-	endif
+ifeq ($(shell test $(GCC_VERSION) -le 49 && echo 1), 1)
+MACHINE_CFLAGS := $(patsubst -march=armv8-a+crc,-march=armv8-a+crc -D__ARM_FEATURE_CRC32=1,$(MACHINE_CFLAGS))
 endif
-- 
2.7.4

^ permalink raw reply related	[flat|nested] 13+ messages in thread

* Re: [PATCH] mk: gcc -march support for intel processors code names
  2016-08-15 15:02 [PATCH] mk: gcc -march support for intel processors code names Reshma Pattan
@ 2016-08-22 11:25 ` Thomas Monjalon
  2016-08-22 11:46   ` Pattan, Reshma
  2016-08-22 14:19 ` [PATCH v2] " Reshma Pattan
  1 sibling, 1 reply; 13+ messages in thread
From: Thomas Monjalon @ 2016-08-22 11:25 UTC (permalink / raw)
  To: Reshma Pattan; +Cc: dev

2016-08-15 16:02, Reshma Pattan:
> The GCC 4.9 -march option supports the intel code names for processors,
> for example -march=silvermont, -march=broadwell.
> The RTE_MACHINE config flag can be used to pass code name to
> the compiler as -march flag. Also old gcc versions compatibility code
> for the intel platform is removed from
> mk/toolchain/gcc/rte.toolchain-compat.mk

Do you mean to not support GCC < 4.9 ?

^ permalink raw reply	[flat|nested] 13+ messages in thread

* Re: [PATCH] mk: gcc -march support for intel processors code names
  2016-08-22 11:25 ` Thomas Monjalon
@ 2016-08-22 11:46   ` Pattan, Reshma
  2016-08-22 12:36     ` Thomas Monjalon
  2016-09-05  3:24     ` Liu, Yong
  0 siblings, 2 replies; 13+ messages in thread
From: Pattan, Reshma @ 2016-08-22 11:46 UTC (permalink / raw)
  To: Thomas Monjalon; +Cc: dev



> -----Original Message-----
> From: Thomas Monjalon [mailto:thomas.monjalon@6wind.com]
> Sent: Monday, August 22, 2016 12:25 PM
> To: Pattan, Reshma <reshma.pattan@intel.com>
> Cc: dev@dpdk.org
> Subject: Re: [dpdk-dev] [PATCH] mk: gcc -march support for intel processors
> code names
> 
> 2016-08-15 16:02, Reshma Pattan:
> > The GCC 4.9 -march option supports the intel code names for
> > processors, for example -march=silvermont, -march=broadwell.
> > The RTE_MACHINE config flag can be used to pass code name to the
> > compiler as -march flag. Also old gcc versions compatibility code for
> > the intel platform is removed from
> > mk/toolchain/gcc/rte.toolchain-compat.mk
> 
> Do you mean to not support GCC < 4.9 ?

Yes. 

^ permalink raw reply	[flat|nested] 13+ messages in thread

* Re: [PATCH] mk: gcc -march support for intel processors code names
  2016-08-22 11:46   ` Pattan, Reshma
@ 2016-08-22 12:36     ` Thomas Monjalon
  2016-09-05  3:24     ` Liu, Yong
  1 sibling, 0 replies; 13+ messages in thread
From: Thomas Monjalon @ 2016-08-22 12:36 UTC (permalink / raw)
  To: Pattan, Reshma; +Cc: dev

2016-08-22 11:46, Pattan, Reshma:
> From: Thomas Monjalon [mailto:thomas.monjalon@6wind.com]
> > 2016-08-15 16:02, Reshma Pattan:
> > > The GCC 4.9 -march option supports the intel code names for
> > > processors, for example -march=silvermont, -march=broadwell.
> > > The RTE_MACHINE config flag can be used to pass code name to the
> > > compiler as -march flag. Also old gcc versions compatibility code for
> > > the intel platform is removed from
> > > mk/toolchain/gcc/rte.toolchain-compat.mk
> > 
> > Do you mean to not support GCC < 4.9 ?
> 
> Yes. 

It can be discussed but you must, at least, update the requirements:
	http://dpdk.org/doc/guides/linux_gsg/sys_reqs.html#compilation-of-the-dpdk

^ permalink raw reply	[flat|nested] 13+ messages in thread

* [PATCH v2] mk: gcc -march support for intel processors code names
  2016-08-15 15:02 [PATCH] mk: gcc -march support for intel processors code names Reshma Pattan
  2016-08-22 11:25 ` Thomas Monjalon
@ 2016-08-22 14:19 ` Reshma Pattan
  2016-09-02 14:17   ` Pattan, Reshma
                     ` (2 more replies)
  1 sibling, 3 replies; 13+ messages in thread
From: Reshma Pattan @ 2016-08-22 14:19 UTC (permalink / raw)
  To: dev; +Cc: Reshma Pattan

The GCC 4.9 -march option supports the intel code names for processors,
for example -march=silvermont, -march=broadwell.
The RTE_MACHINE config flag can be used to pass code name to
the compiler as -march flag. Also old gcc versions compatibility code
for the intel platform is removed from
mk/toolchain/gcc/rte.toolchain-compat.mk

Release notes is updated.

Linux and FreeBSD getting started guides are updated with recommended
gcc version as 4.9 and above.

Some of the gmake command examples in sample application guide and driver
guides are updated with gcc version as 4.9.

Signed-off-by: Reshma Pattan <reshma.pattan@intel.com>
---
 doc/guides/freebsd_gsg/build_dpdk.rst        |  4 +--
 doc/guides/freebsd_gsg/build_sample_apps.rst |  6 ++--
 doc/guides/linux_gsg/sys_reqs.rst            |  6 ++--
 doc/guides/nics/bnx2x.rst                    |  4 +--
 doc/guides/nics/qede.rst                     |  2 +-
 doc/guides/rel_notes/release_16_11.rst       |  5 +++
 mk/target/generic/rte.vars.mk                |  4 +++
 mk/toolchain/gcc/rte.toolchain-compat.mk     | 47 ++--------------------------
 8 files changed, 22 insertions(+), 56 deletions(-)

v2:
Updated Linux and FreeBSD gsg guides, sample application guide and other driver doc
with recommended gcc version as 4.9 and above.

diff --git a/doc/guides/freebsd_gsg/build_dpdk.rst b/doc/guides/freebsd_gsg/build_dpdk.rst
index 93c4366..7d5e9dc 100644
--- a/doc/guides/freebsd_gsg/build_dpdk.rst
+++ b/doc/guides/freebsd_gsg/build_dpdk.rst
@@ -88,7 +88,7 @@ The ports required and their locations are as follows:
 For compiling and using the DPDK with gcc, the compiler must be installed
 from the ports collection:
 
-* gcc: version 4.8 is recommended ``/usr/ports/lang/gcc48``.
+* gcc: version 4.9 is recommended ``/usr/ports/lang/gcc49``.
   Ensure that ``CPU_OPTS`` is selected (default is OFF).
 
 When running the make config-recursive command, a dialog may be presented to the
@@ -168,7 +168,7 @@ For example to compile for FreeBSD use:
    If the compiler binary to be used does not correspond to that given in the
    TOOLCHAIN part of the target, the compiler command may need to be explicitly
    specified. For example, if compiling for gcc, where the gcc binary is called
-   gcc4.8, the command would need to be ``gmake install T=<target> CC=gcc4.8``.
+   gcc4.9, the command would need to be ``gmake install T=<target> CC=gcc4.9``.
 
 Browsing the Installed DPDK Environment Target
 ----------------------------------------------
diff --git a/doc/guides/freebsd_gsg/build_sample_apps.rst b/doc/guides/freebsd_gsg/build_sample_apps.rst
index 2662303..fffc4c0 100644
--- a/doc/guides/freebsd_gsg/build_sample_apps.rst
+++ b/doc/guides/freebsd_gsg/build_sample_apps.rst
@@ -54,7 +54,7 @@ the following variables must be exported:
 
 The following is an example of creating the ``helloworld`` application, which runs
 in the DPDK FreeBSD environment. While the example demonstrates compiling
-using gcc version 4.8, compiling with clang will be similar, except that the ``CC=``
+using gcc version 4.9, compiling with clang will be similar, except that the ``CC=``
 parameter can probably be omitted. The ``helloworld`` example may be found in the
 ``${RTE_SDK}/examples`` directory.
 
@@ -72,7 +72,7 @@ in the build directory.
     setenv RTE_SDK $HOME/DPDK
     setenv RTE_TARGET x86_64-native-bsdapp-gcc
 
-    gmake CC=gcc48
+    gmake CC=gcc49
       CC main.o
       LD helloworld
       INSTALL-APP helloworld
@@ -96,7 +96,7 @@ in the build directory.
     cd my_rte_app/
     setenv RTE_TARGET x86_64-native-bsdapp-gcc
 
-    gmake CC=gcc48
+    gmake CC=gcc49
       CC main.o
       LD helloworld
       INSTALL-APP helloworld
diff --git a/doc/guides/linux_gsg/sys_reqs.rst b/doc/guides/linux_gsg/sys_reqs.rst
index b321544..3d74342 100644
--- a/doc/guides/linux_gsg/sys_reqs.rst
+++ b/doc/guides/linux_gsg/sys_reqs.rst
@@ -61,8 +61,8 @@ Compilation of the DPDK
 
 *   coreutils: ``cmp``, ``sed``, ``grep``, ``arch``, etc.
 
-*   gcc: versions 4.5.x or later is recommended for ``i686/x86_64``. Versions 4.8.x or later is recommended
-    for ``ppc_64`` and ``x86_x32`` ABI. On some distributions, some specific compiler flags and linker flags are enabled by
+*   gcc: versions 4.9 or later is recommended for all platforms.
+    On some distributions, some specific compiler flags and linker flags are enabled by
     default and affect performance (``-fstack-protector``, for example). Please refer to the documentation
     of your distribution and to ``gcc -dumpspecs``.
 
@@ -82,7 +82,7 @@ Compilation of the DPDK
 .. note::
 
     x86_x32 ABI is currently supported with distribution packages only on Ubuntu
-    higher than 13.10 or recent Debian distribution. The only supported  compiler is gcc 4.8+.
+    higher than 13.10 or recent Debian distribution. The only supported  compiler is gcc 4.9+.
 
 .. note::
 
diff --git a/doc/guides/nics/bnx2x.rst b/doc/guides/nics/bnx2x.rst
index 6453168..6d1768a 100644
--- a/doc/guides/nics/bnx2x.rst
+++ b/doc/guides/nics/bnx2x.rst
@@ -162,7 +162,7 @@ To compile BNX2X PMD for FreeBSD x86_64 gcc target, run the following "gmake"
 command::
 
    cd <DPDK-source-directory>
-   gmake config T=x86_64-native-bsdapp-gcc install -Wl,-rpath=/usr/local/lib/gcc48 CC=gcc48
+   gmake config T=x86_64-native-bsdapp-gcc install -Wl,-rpath=/usr/local/lib/gcc49 CC=gcc49
 
 To compile BNX2X PMD for FreeBSD x86_64 gcc target, run the following "gmake"
 command:
@@ -170,7 +170,7 @@ command:
 .. code-block:: console
 
    cd <DPDK-source-directory>
-   gmake config T=x86_64-native-bsdapp-gcc install -Wl,-rpath=/usr/local/lib/gcc48 CC=gcc48
+   gmake config T=x86_64-native-bsdapp-gcc install -Wl,-rpath=/usr/local/lib/gcc49 CC=gcc49
 
 Linux
 -----
diff --git a/doc/guides/nics/qede.rst b/doc/guides/nics/qede.rst
index 53d749c..3af755e 100644
--- a/doc/guides/nics/qede.rst
+++ b/doc/guides/nics/qede.rst
@@ -150,7 +150,7 @@ command::
 
    cd <DPDK-source-directory>
    gmake config T=x86_64-native-bsdapp-gcc install -Wl,-rpath=\
-                                        /usr/local/lib/gcc48 CC=gcc48
+                                        /usr/local/lib/gcc49 CC=gcc49
 
 
 Sample Application Notes
diff --git a/doc/guides/rel_notes/release_16_11.rst b/doc/guides/rel_notes/release_16_11.rst
index 0b9022d..9f58133 100644
--- a/doc/guides/rel_notes/release_16_11.rst
+++ b/doc/guides/rel_notes/release_16_11.rst
@@ -36,6 +36,11 @@ New Features
 
      This section is a comment. Make sure to start the actual text at the margin.
 
+* **Added support for new gcc -march option.**
+
+  The GCC 4.9 ``-march`` option supports the Intel processor code names.
+  The config option ``RTE_MACHINE`` can be used to pass code names to the compiler as ``-march`` flag.
+
 
 Resolved Issues
 ---------------
diff --git a/mk/target/generic/rte.vars.mk b/mk/target/generic/rte.vars.mk
index 75a616a..b31e426 100644
--- a/mk/target/generic/rte.vars.mk
+++ b/mk/target/generic/rte.vars.mk
@@ -50,7 +50,11 @@
 #   - can define CPU_ASFLAGS variable (overriden by cmdline value) that
 #     overrides the one defined in arch.
 #
+ifneq ($(wildcard $(RTE_SDK)/mk/machine/$(RTE_MACHINE)/rte.vars.mk),)
 include $(RTE_SDK)/mk/machine/$(RTE_MACHINE)/rte.vars.mk
+else
+MACHINE_CFLAGS := -march=$(RTE_MACHINE)
+endif
 
 #
 # arch:
diff --git a/mk/toolchain/gcc/rte.toolchain-compat.mk b/mk/toolchain/gcc/rte.toolchain-compat.mk
index 6eed20c..7f23721 100644
--- a/mk/toolchain/gcc/rte.toolchain-compat.mk
+++ b/mk/toolchain/gcc/rte.toolchain-compat.mk
@@ -42,51 +42,8 @@ GCC_MAJOR = $(shell echo __GNUC__ | $(CC) -E -x c - | tail -n 1)
 GCC_MINOR = $(shell echo __GNUC_MINOR__ | $(CC) -E -x c - | tail -n 1)
 GCC_VERSION = $(GCC_MAJOR)$(GCC_MINOR)
 
-# if GCC is older than 4.x
-ifeq ($(shell test $(GCC_VERSION) -lt 40 && echo 1), 1)
-	MACHINE_CFLAGS =
-$(warning You are using GCC < 4.x. This is neither supported, nor tested.)
-
-
-else
-# GCC graceful degradation
-# GCC 4.2.x - added support for generic target
-# GCC 4.3.x - added support for core2, ssse3, sse4.1, sse4.2
-# GCC 4.4.x - added support for avx, aes, pclmul
-# GCC 4.5.x - added support for atom
-# GCC 4.6.x - added support for corei7, corei7-avx
-# GCC 4.7.x - added support for fsgsbase, rdrnd, f16c, core-avx-i, core-avx2
 # GCC 4.9.x - added support for armv8-a+crc
 #
-	ifeq ($(shell test $(GCC_VERSION) -le 49 && echo 1), 1)
-		MACHINE_CFLAGS := $(patsubst -march=armv8-a+crc,-march=armv8-a+crc -D__ARM_FEATURE_CRC32=1,$(MACHINE_CFLAGS))
-	endif
-	ifeq ($(shell test $(GCC_VERSION) -le 47 && echo 1), 1)
-		MACHINE_CFLAGS := $(patsubst -march=core-avx-i,-march=corei7-avx,$(MACHINE_CFLAGS))
-		MACHINE_CFLAGS := $(patsubst -march=core-avx2,-march=core-avx2,$(MACHINE_CFLAGS))
-	endif
-	ifeq ($(shell test $(GCC_VERSION) -lt 46 && echo 1), 1)
-		MACHINE_CFLAGS := $(patsubst -march=corei7-avx,-march=core2 -maes -mpclmul -mavx,$(MACHINE_CFLAGS))
-		MACHINE_CFLAGS := $(patsubst -march=corei7,-march=core2 -maes -mpclmul,$(MACHINE_CFLAGS))
-	endif
-	ifeq ($(shell test $(GCC_VERSION) -lt 45 && echo 1), 1)
-		MACHINE_CFLAGS := $(patsubst -march=atom,-march=core2 -mssse3,$(MACHINE_CFLAGS))
-	endif
-	ifeq ($(shell test $(GCC_VERSION) -lt 44 && echo 1), 1)
-		MACHINE_CFLAGS := $(filter-out -mavx -mpclmul -maes,$(MACHINE_CFLAGS))
-		ifneq ($(findstring SSE4_2, $(CPUFLAGS)),)
-			MACHINE_CFLAGS += -msse4.2
-		endif
-		ifneq ($(findstring SSE4_1, $(CPUFLAGS)),)
-			MACHINE_CFLAGS += -msse4.1
-		endif
-	endif
-	ifeq ($(shell test $(GCC_VERSION) -lt 43 && echo 1), 1)
-		MACHINE_CFLAGS := $(filter-out -msse% -mssse%,$(MACHINE_CFLAGS))
-		MACHINE_CFLAGS := $(patsubst -march=core2,-march=generic,$(MACHINE_CFLAGS))
-		MACHINE_CFLAGS += -msse3
-	endif
-	ifeq ($(shell test $(GCC_VERSION) -lt 42 && echo 1), 1)
-		MACHINE_CFLAGS := $(filter-out -march% -mtune% -msse%,$(MACHINE_CFLAGS))
-	endif
+ifeq ($(shell test $(GCC_VERSION) -le 49 && echo 1), 1)
+MACHINE_CFLAGS := $(patsubst -march=armv8-a+crc,-march=armv8-a+crc -D__ARM_FEATURE_CRC32=1,$(MACHINE_CFLAGS))
 endif
-- 
2.7.4

^ permalink raw reply related	[flat|nested] 13+ messages in thread

* Re: [PATCH v2] mk: gcc -march support for intel processors code names
  2016-08-22 14:19 ` [PATCH v2] " Reshma Pattan
@ 2016-09-02 14:17   ` Pattan, Reshma
  2016-09-28 10:21   ` [dpdk-dev, " Remy Horton
  2016-10-10 21:33   ` [PATCH v3] " Reshma Pattan
  2 siblings, 0 replies; 13+ messages in thread
From: Pattan, Reshma @ 2016-09-02 14:17 UTC (permalink / raw)
  To: dev

Hi,

Gentle remainder for review.

Thanks,
Reshma

^ permalink raw reply	[flat|nested] 13+ messages in thread

* Re: [PATCH] mk: gcc -march support for intel processors code names
  2016-08-22 11:46   ` Pattan, Reshma
  2016-08-22 12:36     ` Thomas Monjalon
@ 2016-09-05  3:24     ` Liu, Yong
  1 sibling, 0 replies; 13+ messages in thread
From: Liu, Yong @ 2016-09-05  3:24 UTC (permalink / raw)
  To: Pattan, Reshma, Thomas Monjalon; +Cc: dev

> -----Original Message-----
> From: dev [mailto:dev-bounces@dpdk.org] On Behalf Of Pattan, Reshma
> Sent: Monday, August 22, 2016 7:46 PM
> To: Thomas Monjalon
> Cc: dev@dpdk.org
> Subject: Re: [dpdk-dev] [PATCH] mk: gcc -march support for intel
> processors code names
> 
> 
> 
> > -----Original Message-----
> > From: Thomas Monjalon [mailto:thomas.monjalon@6wind.com]
> > Sent: Monday, August 22, 2016 12:25 PM
> > To: Pattan, Reshma <reshma.pattan@intel.com>
> > Cc: dev@dpdk.org
> > Subject: Re: [dpdk-dev] [PATCH] mk: gcc -march support for intel
> processors
> > code names
> >
> > 2016-08-15 16:02, Reshma Pattan:
> > > The GCC 4.9 -march option supports the intel code names for
> > > processors, for example -march=silvermont, -march=broadwell.
> > > The RTE_MACHINE config flag can be used to pass code name to the
> > > compiler as -march flag. Also old gcc versions compatibility code for
> > > the intel platform is removed from
> > > mk/toolchain/gcc/rte.toolchain-compat.mk
> >
> > Do you mean to not support GCC < 4.9 ?
> 
> Yes.
> 
> 

Reshma, 
In our regression plan, lots of distribution's default gcc version are < 4.9. 
This patch will block gcc related test on the OSs listed below. 

Ubuntu 12.04/14.04
Fedora18/20
Suse11SP2/Suse12SP3
RHEL7.0/7.2, CentOS7.0
FreeBSD10.0/10.3

^ permalink raw reply	[flat|nested] 13+ messages in thread

* Re: [dpdk-dev, v2] mk: gcc -march support for intel processors code names
  2016-08-22 14:19 ` [PATCH v2] " Reshma Pattan
  2016-09-02 14:17   ` Pattan, Reshma
@ 2016-09-28 10:21   ` Remy Horton
  2016-09-29  1:11     ` Liu, Yong
  2016-10-10 21:33   ` [PATCH v3] " Reshma Pattan
  2 siblings, 1 reply; 13+ messages in thread
From: Remy Horton @ 2016-09-28 10:21 UTC (permalink / raw)
  To: Reshma Pattan, dev


On 22/08/2016 15:19, Reshma Pattan wrote:
> The GCC 4.9 -march option supports the intel code names for processors,
> for example -march=silvermont, -march=broadwell.
> The RTE_MACHINE config flag can be used to pass code name to
> the compiler as -march flag. Also old gcc versions compatibility code
> for the intel platform is removed from
> mk/toolchain/gcc/rte.toolchain-compat.mk
>
> Release notes is updated.
>
> Linux and FreeBSD getting started guides are updated with recommended
> gcc version as 4.9 and above.
>
> Some of the gmake command examples in sample application guide and driver
> guides are updated with gcc version as 4.9.
>
> Signed-off-by: Reshma Pattan <reshma.pattan@intel.com>

Acked-by: Remy Horton <remy.horton@intel.com>

^ permalink raw reply	[flat|nested] 13+ messages in thread

* Re: [dpdk-dev, v2] mk: gcc -march support for intel processors code names
  2016-09-28 10:21   ` [dpdk-dev, " Remy Horton
@ 2016-09-29  1:11     ` Liu, Yong
  0 siblings, 0 replies; 13+ messages in thread
From: Liu, Yong @ 2016-09-29  1:11 UTC (permalink / raw)
  To: Horton, Remy, Pattan, Reshma, dev

> -----Original Message-----
> From: dev [mailto:dev-bounces@dpdk.org] On Behalf Of Remy Horton
> Sent: Wednesday, September 28, 2016 6:22 PM
> To: Pattan, Reshma; dev@dpdk.org
> Subject: Re: [dpdk-dev] [dpdk-dev, v2] mk: gcc -march support for intel
> processors code names
> 
> 
> On 22/08/2016 15:19, Reshma Pattan wrote:
> > The GCC 4.9 -march option supports the intel code names for processors,
> > for example -march=silvermont, -march=broadwell.
> > The RTE_MACHINE config flag can be used to pass code name to
> > the compiler as -march flag. Also old gcc versions compatibility code
> > for the intel platform is removed from
> > mk/toolchain/gcc/rte.toolchain-compat.mk
> >
> > Release notes is updated.
> >
> > Linux and FreeBSD getting started guides are updated with recommended
> > gcc version as 4.9 and above.
> >
> > Some of the gmake command examples in sample application guide and
> driver
> > guides are updated with gcc version as 4.9.
> >
> > Signed-off-by: Reshma Pattan <reshma.pattan@intel.com>
> 
> Acked-by: Remy Horton <remy.horton@intel.com>

Tested-by: Marvin Liu <yong.liu@intel.com>

^ permalink raw reply	[flat|nested] 13+ messages in thread

* [PATCH v3] mk: gcc -march support for intel processors code names
  2016-08-22 14:19 ` [PATCH v2] " Reshma Pattan
  2016-09-02 14:17   ` Pattan, Reshma
  2016-09-28 10:21   ` [dpdk-dev, " Remy Horton
@ 2016-10-10 21:33   ` Reshma Pattan
  2016-10-12 12:33     ` Thomas Monjalon
  2 siblings, 1 reply; 13+ messages in thread
From: Reshma Pattan @ 2016-10-10 21:33 UTC (permalink / raw)
  To: dev; +Cc: Reshma Pattan

The GCC 4.9 -march option supports the intel code names for processors,
for example -march=silvermont, -march=broadwell.
The RTE_MACHINE config flag can be used to pass code name to
the compiler as -march flag.

Release notes is updated.

Linux and FreeBSD getting started guides are updated with recommended
gcc version as 4.9 and above.

Some of the gmake command examples in sample application guide and driver
guides are updated with gcc version as 4.9.

Signed-off-by: Reshma Pattan <reshma.pattan@intel.com>
---
 doc/guides/freebsd_gsg/build_dpdk.rst        | 4 ++--
 doc/guides/freebsd_gsg/build_sample_apps.rst | 6 +++---
 doc/guides/linux_gsg/sys_reqs.rst            | 6 +++---
 doc/guides/nics/bnx2x.rst                    | 4 ++--
 doc/guides/nics/qede.rst                     | 2 +-
 doc/guides/rel_notes/release_16_11.rst       | 5 +++++
 mk/target/generic/rte.vars.mk                | 4 ++++
 7 files changed, 20 insertions(+), 11 deletions(-)

v3:
Reverted changes of mk/toolchain/gcc/rte.toolchain-compat.mk.

v2:
Updated Linux and FreeBSD gsg guides, sample application guide and other driver doc
with recommended gcc version as 4.9 and above.

diff --git a/doc/guides/freebsd_gsg/build_dpdk.rst b/doc/guides/freebsd_gsg/build_dpdk.rst
index 27f21de..24a9f87 100644
--- a/doc/guides/freebsd_gsg/build_dpdk.rst
+++ b/doc/guides/freebsd_gsg/build_dpdk.rst
@@ -88,7 +88,7 @@ The ports required and their locations are as follows:
 For compiling and using the DPDK with gcc, the compiler must be installed
 from the ports collection:
 
-* gcc: version 4.8 is recommended ``/usr/ports/lang/gcc48``.
+* gcc: version 4.9 is recommended ``/usr/ports/lang/gcc49``.
   Ensure that ``CPU_OPTS`` is selected (default is OFF).
 
 When running the make config-recursive command, a dialog may be presented to the
@@ -164,7 +164,7 @@ For example to compile for FreeBSD use:
    If the compiler binary to be used does not correspond to that given in the
    TOOLCHAIN part of the target, the compiler command may need to be explicitly
    specified. For example, if compiling for gcc, where the gcc binary is called
-   gcc4.8, the command would need to be ``gmake install T=<target> CC=gcc4.8``.
+   gcc4.9, the command would need to be ``gmake install T=<target> CC=gcc4.9``.
 
 Browsing the Installed DPDK Environment Target
 ----------------------------------------------
diff --git a/doc/guides/freebsd_gsg/build_sample_apps.rst b/doc/guides/freebsd_gsg/build_sample_apps.rst
index 2662303..fffc4c0 100644
--- a/doc/guides/freebsd_gsg/build_sample_apps.rst
+++ b/doc/guides/freebsd_gsg/build_sample_apps.rst
@@ -54,7 +54,7 @@ the following variables must be exported:
 
 The following is an example of creating the ``helloworld`` application, which runs
 in the DPDK FreeBSD environment. While the example demonstrates compiling
-using gcc version 4.8, compiling with clang will be similar, except that the ``CC=``
+using gcc version 4.9, compiling with clang will be similar, except that the ``CC=``
 parameter can probably be omitted. The ``helloworld`` example may be found in the
 ``${RTE_SDK}/examples`` directory.
 
@@ -72,7 +72,7 @@ in the build directory.
     setenv RTE_SDK $HOME/DPDK
     setenv RTE_TARGET x86_64-native-bsdapp-gcc
 
-    gmake CC=gcc48
+    gmake CC=gcc49
       CC main.o
       LD helloworld
       INSTALL-APP helloworld
@@ -96,7 +96,7 @@ in the build directory.
     cd my_rte_app/
     setenv RTE_TARGET x86_64-native-bsdapp-gcc
 
-    gmake CC=gcc48
+    gmake CC=gcc49
       CC main.o
       LD helloworld
       INSTALL-APP helloworld
diff --git a/doc/guides/linux_gsg/sys_reqs.rst b/doc/guides/linux_gsg/sys_reqs.rst
index b321544..3d74342 100644
--- a/doc/guides/linux_gsg/sys_reqs.rst
+++ b/doc/guides/linux_gsg/sys_reqs.rst
@@ -61,8 +61,8 @@ Compilation of the DPDK
 
 *   coreutils: ``cmp``, ``sed``, ``grep``, ``arch``, etc.
 
-*   gcc: versions 4.5.x or later is recommended for ``i686/x86_64``. Versions 4.8.x or later is recommended
-    for ``ppc_64`` and ``x86_x32`` ABI. On some distributions, some specific compiler flags and linker flags are enabled by
+*   gcc: versions 4.9 or later is recommended for all platforms.
+    On some distributions, some specific compiler flags and linker flags are enabled by
     default and affect performance (``-fstack-protector``, for example). Please refer to the documentation
     of your distribution and to ``gcc -dumpspecs``.
 
@@ -82,7 +82,7 @@ Compilation of the DPDK
 .. note::
 
     x86_x32 ABI is currently supported with distribution packages only on Ubuntu
-    higher than 13.10 or recent Debian distribution. The only supported  compiler is gcc 4.8+.
+    higher than 13.10 or recent Debian distribution. The only supported  compiler is gcc 4.9+.
 
 .. note::
 
diff --git a/doc/guides/nics/bnx2x.rst b/doc/guides/nics/bnx2x.rst
index 6453168..6d1768a 100644
--- a/doc/guides/nics/bnx2x.rst
+++ b/doc/guides/nics/bnx2x.rst
@@ -162,7 +162,7 @@ To compile BNX2X PMD for FreeBSD x86_64 gcc target, run the following "gmake"
 command::
 
    cd <DPDK-source-directory>
-   gmake config T=x86_64-native-bsdapp-gcc install -Wl,-rpath=/usr/local/lib/gcc48 CC=gcc48
+   gmake config T=x86_64-native-bsdapp-gcc install -Wl,-rpath=/usr/local/lib/gcc49 CC=gcc49
 
 To compile BNX2X PMD for FreeBSD x86_64 gcc target, run the following "gmake"
 command:
@@ -170,7 +170,7 @@ command:
 .. code-block:: console
 
    cd <DPDK-source-directory>
-   gmake config T=x86_64-native-bsdapp-gcc install -Wl,-rpath=/usr/local/lib/gcc48 CC=gcc48
+   gmake config T=x86_64-native-bsdapp-gcc install -Wl,-rpath=/usr/local/lib/gcc49 CC=gcc49
 
 Linux
 -----
diff --git a/doc/guides/nics/qede.rst b/doc/guides/nics/qede.rst
index 53d749c..3af755e 100644
--- a/doc/guides/nics/qede.rst
+++ b/doc/guides/nics/qede.rst
@@ -150,7 +150,7 @@ command::
 
    cd <DPDK-source-directory>
    gmake config T=x86_64-native-bsdapp-gcc install -Wl,-rpath=\
-                                        /usr/local/lib/gcc48 CC=gcc48
+                                        /usr/local/lib/gcc49 CC=gcc49
 
 
 Sample Application Notes
diff --git a/doc/guides/rel_notes/release_16_11.rst b/doc/guides/rel_notes/release_16_11.rst
index 905186a..f55bac4 100644
--- a/doc/guides/rel_notes/release_16_11.rst
+++ b/doc/guides/rel_notes/release_16_11.rst
@@ -89,6 +89,11 @@ New Features
   * AES CBC IV generation with cipher forward function
   * AES GCM/CTR mode
 
+* **Added support for new gcc -march option.**
+
+  The GCC 4.9 ``-march`` option supports the Intel processor code names.
+  The config option ``RTE_MACHINE`` can be used to pass code names to the compiler as ``-march`` flag.
+
 
 Resolved Issues
 ---------------
diff --git a/mk/target/generic/rte.vars.mk b/mk/target/generic/rte.vars.mk
index 75a616a..b31e426 100644
--- a/mk/target/generic/rte.vars.mk
+++ b/mk/target/generic/rte.vars.mk
@@ -50,7 +50,11 @@
 #   - can define CPU_ASFLAGS variable (overriden by cmdline value) that
 #     overrides the one defined in arch.
 #
+ifneq ($(wildcard $(RTE_SDK)/mk/machine/$(RTE_MACHINE)/rte.vars.mk),)
 include $(RTE_SDK)/mk/machine/$(RTE_MACHINE)/rte.vars.mk
+else
+MACHINE_CFLAGS := -march=$(RTE_MACHINE)
+endif
 
 #
 # arch:
-- 
2.7.4

^ permalink raw reply related	[flat|nested] 13+ messages in thread

* Re: [PATCH v3] mk: gcc -march support for intel processors code names
  2016-10-10 21:33   ` [PATCH v3] " Reshma Pattan
@ 2016-10-12 12:33     ` Thomas Monjalon
  2016-10-12 13:38       ` Pattan, Reshma
  0 siblings, 1 reply; 13+ messages in thread
From: Thomas Monjalon @ 2016-10-12 12:33 UTC (permalink / raw)
  To: Reshma Pattan; +Cc: dev

2016-10-10 22:33, Reshma Pattan:
> The GCC 4.9 -march option supports the intel code names for processors,
> for example -march=silvermont, -march=broadwell.
> The RTE_MACHINE config flag can be used to pass code name to
> the compiler as -march flag.
> 
> Release notes is updated.
> 
> Linux and FreeBSD getting started guides are updated with recommended
> gcc version as 4.9 and above.
> 
> Some of the gmake command examples in sample application guide and driver
> guides are updated with gcc version as 4.9.
> 
> Signed-off-by: Reshma Pattan <reshma.pattan@intel.com>

Applied, thanks

How the -march=broadwell option will work with icc and clang?

^ permalink raw reply	[flat|nested] 13+ messages in thread

* Re: [PATCH v3] mk: gcc -march support for intel processors code names
  2016-10-12 12:33     ` Thomas Monjalon
@ 2016-10-12 13:38       ` Pattan, Reshma
  2016-10-12 14:20         ` Thomas Monjalon
  0 siblings, 1 reply; 13+ messages in thread
From: Pattan, Reshma @ 2016-10-12 13:38 UTC (permalink / raw)
  To: Thomas Monjalon; +Cc: dev

Hi

> -----Original Message-----
> From: Thomas Monjalon [mailto:thomas.monjalon@6wind.com]
> Sent: Wednesday, October 12, 2016 1:34 PM
> To: Pattan, Reshma <reshma.pattan@intel.com>
> Cc: dev@dpdk.org
> Subject: Re: [dpdk-dev] [PATCH v3] mk: gcc -march support for intel processors
> code names
> 
> 2016-10-10 22:33, Reshma Pattan:
> > The GCC 4.9 -march option supports the intel code names for
> > processors, for example -march=silvermont, -march=broadwell.
> > The RTE_MACHINE config flag can be used to pass code name to the
> > compiler as -march flag.
> >
> > Signed-off-by: Reshma Pattan <reshma.pattan@intel.com>
> 
> Applied, thanks
> 
> How the -march=broadwell option will work with icc and clang?

Clang does support broadwell option.
And I do have Icc version" icc (ICC) 16.0.3 20160415" which doesn't support code names.

Any other info you are explicitly looking for?

Thanks,
Reshma

^ permalink raw reply	[flat|nested] 13+ messages in thread

* Re: [PATCH v3] mk: gcc -march support for intel processors code names
  2016-10-12 13:38       ` Pattan, Reshma
@ 2016-10-12 14:20         ` Thomas Monjalon
  0 siblings, 0 replies; 13+ messages in thread
From: Thomas Monjalon @ 2016-10-12 14:20 UTC (permalink / raw)
  To: Pattan, Reshma; +Cc: dev

2016-10-12 13:38, Pattan, Reshma:
> From: Thomas Monjalon [mailto:thomas.monjalon@6wind.com]
> > 2016-10-10 22:33, Reshma Pattan:
> > > The GCC 4.9 -march option supports the intel code names for
> > > processors, for example -march=silvermont, -march=broadwell.
> > > The RTE_MACHINE config flag can be used to pass code name to the
> > > compiler as -march flag.
> > >
> > > Signed-off-by: Reshma Pattan <reshma.pattan@intel.com>
> > 
> > Applied, thanks
> > 
> > How the -march=broadwell option will work with icc and clang?
> 
> Clang does support broadwell option.
> And I do have Icc version" icc (ICC) 16.0.3 20160415" which doesn't support code names.
> 
> Any other info you are explicitly looking for?

Yes, why are we still supporting ICC?

Clearly this patch does not care about ICC.
Note that it is not an acceptance blocker but it would be interesting
to have some news of ICC from time to time, regarding supported archs
and performance of the generated code.

^ permalink raw reply	[flat|nested] 13+ messages in thread

end of thread, other threads:[~2016-10-12 14:21 UTC | newest]

Thread overview: 13+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2016-08-15 15:02 [PATCH] mk: gcc -march support for intel processors code names Reshma Pattan
2016-08-22 11:25 ` Thomas Monjalon
2016-08-22 11:46   ` Pattan, Reshma
2016-08-22 12:36     ` Thomas Monjalon
2016-09-05  3:24     ` Liu, Yong
2016-08-22 14:19 ` [PATCH v2] " Reshma Pattan
2016-09-02 14:17   ` Pattan, Reshma
2016-09-28 10:21   ` [dpdk-dev, " Remy Horton
2016-09-29  1:11     ` Liu, Yong
2016-10-10 21:33   ` [PATCH v3] " Reshma Pattan
2016-10-12 12:33     ` Thomas Monjalon
2016-10-12 13:38       ` Pattan, Reshma
2016-10-12 14:20         ` Thomas Monjalon

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.