]> git.sesse.net Git - stockfish/commitdiff
Replace deprecated icc with icx
authorMaxim Masiutin <maxim@masiutin.com>
Fri, 31 Mar 2023 15:16:50 +0000 (18:16 +0300)
committerJoost VandeVondele <Joost.VandeVondele@gmail.com>
Sat, 1 Apr 2023 14:16:48 +0000 (16:16 +0200)
Replace the deprecated Intel compiler icc with its newer icx variant.
This newer compiler is based on clang, and yields good performance.
As before, currently only linux is supported.

closes https://github.com/official-stockfish/Stockfish/pull/4478

No functional change

src/Makefile

index 0b22fb4e6e93eaf8c1b25653ba4bff8659a79c76..abcf11b0a1158ae73d26ff36af64ce7c5c63272c 100644 (file)
@@ -425,10 +425,11 @@ ifeq ($(COMP),mingw)
        CXXFLAGS += -pedantic -Wextra -Wshadow -Wmissing-declarations
 endif
 
-ifeq ($(COMP),icc)
-       comp=icc
-       CXX=icpc
-       CXXFLAGS += -diag-disable 1476,10120 -Wcheck -Wabi -Wdeprecated -strict-ansi
+ifeq ($(COMP),icx)
+       comp=icx
+       CXX=icpx
+       CXXFLAGS += --intel -pedantic -Wextra -Wshadow -Wmissing-prototypes \
+               -Wconditional-uninitialized -Wabi -Wdeprecated
 endif
 
 ifeq ($(COMP),clang)
@@ -499,9 +500,9 @@ ifeq ($(COMP),ndk)
        LDFLAGS += -static-libstdc++ -pie -lm -latomic
 endif
 
-ifeq ($(comp),icc)
-       profile_make = icc-profile-make
-       profile_use = icc-profile-use
+ifeq ($(comp),icx)
+       profile_make = icx-profile-make
+       profile_use = icx-profile-use
 else ifeq ($(comp),clang)
        profile_make = clang-profile-make
        profile_use = clang-profile-use
@@ -572,7 +573,7 @@ ifeq ($(optimize),yes)
        endif
 
        ifeq ($(KERNEL),Darwin)
-               ifeq ($(comp),$(filter $(comp),clang icc))
+               ifeq ($(comp),$(filter $(comp),clang icx))
                        CXXFLAGS += -mdynamic-no-pic
                endif
 
@@ -608,8 +609,6 @@ endif
 ifeq ($(popcnt),yes)
        ifeq ($(arch),$(filter $(arch),ppc64 armv7 armv8 arm64))
                CXXFLAGS += -DUSE_POPCNT
-       else ifeq ($(comp),icc)
-               CXXFLAGS += -msse3 -DUSE_POPCNT
        else
                CXXFLAGS += -msse3 -mpopcnt -DUSE_POPCNT
        endif
@@ -618,63 +617,63 @@ endif
 ### 3.6 SIMD architectures
 ifeq ($(avx2),yes)
        CXXFLAGS += -DUSE_AVX2
-       ifeq ($(comp),$(filter $(comp),gcc clang mingw))
+       ifeq ($(comp),$(filter $(comp),gcc clang mingw icx))
                CXXFLAGS += -mavx2 -mbmi
        endif
 endif
 
 ifeq ($(avxvnni),yes)
        CXXFLAGS += -DUSE_VNNI -DUSE_AVXVNNI
-       ifeq ($(comp),$(filter $(comp),gcc clang mingw))
+       ifeq ($(comp),$(filter $(comp),gcc clang mingw icx))
                CXXFLAGS += -mavxvnni
        endif
 endif
 
 ifeq ($(avx512),yes)
        CXXFLAGS += -DUSE_AVX512
-       ifeq ($(comp),$(filter $(comp),gcc clang mingw))
+       ifeq ($(comp),$(filter $(comp),gcc clang mingw icx))
                CXXFLAGS += -mavx512f -mavx512bw
        endif
 endif
 
 ifeq ($(vnni256),yes)
        CXXFLAGS += -DUSE_VNNI
-       ifeq ($(comp),$(filter $(comp),gcc clang mingw))
+       ifeq ($(comp),$(filter $(comp),gcc clang mingw icx))
                CXXFLAGS += -mavx512f -mavx512bw -mavx512vnni -mavx512dq -mavx512vl -mprefer-vector-width=256
        endif
 endif
 
 ifeq ($(vnni512),yes)
        CXXFLAGS += -DUSE_VNNI
-       ifeq ($(comp),$(filter $(comp),gcc clang mingw))
-               CXXFLAGS += -mavx512vnni -mavx512dq -mavx512vl
+       ifeq ($(comp),$(filter $(comp),gcc clang mingw icx))
+               CXXFLAGS += -mavx512f -mavx512bw -mavx512vnni -mavx512dq -mavx512vl -mprefer-vector-width=512
        endif
 endif
 
 ifeq ($(sse41),yes)
        CXXFLAGS += -DUSE_SSE41
-       ifeq ($(comp),$(filter $(comp),gcc clang mingw))
+       ifeq ($(comp),$(filter $(comp),gcc clang mingw icx))
                CXXFLAGS += -msse4.1
        endif
 endif
 
 ifeq ($(ssse3),yes)
        CXXFLAGS += -DUSE_SSSE3
-       ifeq ($(comp),$(filter $(comp),gcc clang mingw))
+       ifeq ($(comp),$(filter $(comp),gcc clang mingw icx))
                CXXFLAGS += -mssse3
        endif
 endif
 
 ifeq ($(sse2),yes)
        CXXFLAGS += -DUSE_SSE2
-       ifeq ($(comp),$(filter $(comp),gcc clang mingw))
+       ifeq ($(comp),$(filter $(comp),gcc clang mingw icx))
                CXXFLAGS += -msse2
        endif
 endif
 
 ifeq ($(mmx),yes)
        CXXFLAGS += -DUSE_MMX
-       ifeq ($(comp),$(filter $(comp),gcc clang mingw))
+       ifeq ($(comp),$(filter $(comp),gcc clang mingw icx))
                CXXFLAGS += -mmmx
        endif
 endif
@@ -697,7 +696,7 @@ endif
 ### 3.7 pext
 ifeq ($(pext),yes)
        CXXFLAGS += -DUSE_PEXT
-       ifeq ($(comp),$(filter $(comp),gcc clang mingw))
+       ifeq ($(comp),$(filter $(comp),gcc clang mingw icx))
                CXXFLAGS += -mbmi2
        endif
 endif
@@ -719,8 +718,11 @@ endif
 ### needs access to the optimization flags.
 ifeq ($(optimize),yes)
 ifeq ($(debug), no)
-       ifeq ($(comp),clang)
+       ifeq ($(comp),$(filter $(comp),clang icx))
                CXXFLAGS += -flto=full
+               ifeq ($(comp),icx)
+                       CXXFLAGS += -fwhole-program-vtables
+                endif
                ifeq ($(target_windows),yes)
                        CXXFLAGS += -fuse-ld=lld
                endif
@@ -807,7 +809,7 @@ help:
        @echo "gcc                     > Gnu compiler (default)"
        @echo "mingw                   > Gnu compiler with MinGW under Windows"
        @echo "clang                   > LLVM Clang compiler"
-       @echo "icc                     > Intel compiler"
+       @echo "icx                     > Intel oneAPI DPC++/C++ Compiler"
        @echo "ndk                     > Google NDK to cross-compile for Android"
        @echo ""
        @echo "Simple examples. If you don't know what to do, you likely want to run one of: "
@@ -833,8 +835,10 @@ endif
 
 
 .PHONY: help build profile-build strip install clean net objclean profileclean \
-        config-sanity icc-profile-use icc-profile-make gcc-profile-use gcc-profile-make \
-        clang-profile-use clang-profile-make FORCE
+       config-sanity \
+       icx-profile-use icx-profile-make \
+       gcc-profile-use gcc-profile-make \
+       clang-profile-use clang-profile-make FORCE
 
 build: net config-sanity
        $(MAKE) ARCH=$(ARCH) COMP=$(COMP) all
@@ -949,7 +953,9 @@ config-sanity: net
        @echo "vnni256: '$(vnni256)'"
        @echo "vnni512: '$(vnni512)'"
        @echo "neon: '$(neon)'"
+       @echo "dotprod: '$(dotprod)'"
        @echo "arm_version: '$(arm_version)'"
+       @echo "target_windows: '$(target_windows)'"
        @echo ""
        @echo "Flags:"
        @echo "CXX: $(CXX)"
@@ -978,7 +984,7 @@ config-sanity: net
        @test "$(vnni256)" = "yes" || test "$(vnni256)" = "no"
        @test "$(vnni512)" = "yes" || test "$(vnni512)" = "no"
        @test "$(neon)" = "yes" || test "$(neon)" = "no"
-       @test "$(comp)" = "gcc" || test "$(comp)" = "icc" || test "$(comp)" = "mingw" || test "$(comp)" = "clang" \
+       @test "$(comp)" = "gcc" || test "$(comp)" = "icx" || test "$(comp)" = "mingw" || test "$(comp)" = "clang" \
        || test "$(comp)" = "armv7a-linux-androideabi16-clang"  || test "$(comp)" = "aarch64-linux-android21-clang"
 
 $(EXE): $(OBJS)
@@ -1016,15 +1022,17 @@ gcc-profile-use:
        EXTRALDFLAGS='-lgcov' \
        all
 
-icc-profile-make:
-       @mkdir -p profdir
+icx-profile-make:
        $(MAKE) ARCH=$(ARCH) COMP=$(COMP) \
-       EXTRACXXFLAGS='-prof-gen=srcpos -prof_dir ./profdir' \
+       EXTRACXXFLAGS='-fprofile-instr-generate ' \
+       EXTRALDFLAGS=' -fprofile-instr-generate' \
        all
 
-icc-profile-use:
+icx-profile-use:
+       $(XCRUN) llvm-profdata merge -output=stockfish.profdata *.profraw
        $(MAKE) ARCH=$(ARCH) COMP=$(COMP) \
-       EXTRACXXFLAGS='-prof_use -prof_dir ./profdir' \
+       EXTRACXXFLAGS='-fprofile-instr-use=stockfish.profdata' \
+       EXTRALDFLAGS='-fprofile-use ' \
        all
 
 .depend: $(SRCS)