Skip to content

Commit 12ede72

Browse files
authored
Merge pull request #4192 from imciner2/im/clangfix
Fix cooperlake and sapphire rapids march flags on clang
2 parents 8d9f701 + 8a8a847 commit 12ede72

File tree

3 files changed

+57
-26
lines changed

3 files changed

+57
-26
lines changed

Makefile.system

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -384,6 +384,11 @@ GCCMINORVERSIONGTEQ4 := $(shell expr `$(CC) $(GCCDUMPVERSION_PARAM) | cut -f2 -d
384384
GCCMINORVERSIONGTEQ7 := $(shell expr `$(CC) $(GCCDUMPVERSION_PARAM) | cut -f2 -d.` \>= 7)
385385
endif
386386

387+
ifeq ($(C_COMPILER), CLANG)
388+
CLANGVERSIONGTEQ9 := $(shell expr `$(CC) -dumpversion | cut -f1 -d.` \>= 9)
389+
CLANGVERSIONGTEQ12 := $(shell expr `$(CC) -dumpversion | cut -f1 -d.` \>= 12)
390+
endif
391+
387392
#
388393
# OS dependent settings
389394
#

Makefile.x86_64

Lines changed: 50 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -75,18 +75,31 @@ endif
7575
ifeq ($(CORE), COOPERLAKE)
7676
ifndef NO_AVX512
7777
ifeq ($(C_COMPILER), GCC)
78-
# cooperlake support was added in 10.1
79-
ifeq ($(GCCVERSIONGTEQ10)$(GCCMINORVERSIONGTEQ1), 11)
80-
CCOMMON_OPT += -march=cooperlake
81-
ifneq ($(F_COMPILER), NAG)
82-
FCOMMON_OPT += -march=cooperlake
83-
endif
84-
else # gcc not support, fallback to avx512
85-
CCOMMON_OPT += -march=skylake-avx512
86-
ifneq ($(F_COMPILER), NAG)
87-
FCOMMON_OPT += -march=skylake-avx512
88-
endif
89-
endif
78+
# cooperlake support was added in 10.1
79+
ifeq ($(GCCVERSIONGTEQ10)$(GCCMINORVERSIONGTEQ1), 11)
80+
CCOMMON_OPT += -march=cooperlake
81+
ifneq ($(F_COMPILER), NAG)
82+
FCOMMON_OPT += -march=cooperlake
83+
endif
84+
else # gcc not support, fallback to avx512
85+
CCOMMON_OPT += -march=skylake-avx512
86+
ifneq ($(F_COMPILER), NAG)
87+
FCOMMON_OPT += -march=skylake-avx512
88+
endif
89+
endif
90+
else ifeq ($(C_COMPILER), CLANG)
91+
# cooperlake support was added in clang 9
92+
ifeq ($(CLANGVERSIONGTEQ9), 1)
93+
CCOMMON_OPT += -march=cooperlake
94+
ifneq ($(F_COMPILER), NAG)
95+
FCOMMON_OPT += -march=cooperlake
96+
endif
97+
else # not supported in clang, fallback to avx512
98+
CCOMMON_OPT += -march=skylake-avx512
99+
ifneq ($(F_COMPILER), NAG)
100+
FCOMMON_OPT += -march=skylake-avx512
101+
endif
102+
endif
90103
endif
91104
ifeq ($(OSNAME), CYGWIN_NT)
92105
CCOMMON_OPT += -fno-asynchronous-unwind-tables
@@ -104,18 +117,31 @@ endif
104117
ifeq ($(CORE), SAPPHIRERAPIDS)
105118
ifndef NO_AVX512
106119
ifeq ($(C_COMPILER), GCC)
107-
# sapphire rapids support was added in 11
108-
ifeq ($(GCCVERSIONGTEQ11), 1)
109-
CCOMMON_OPT += -march=sapphirerapids
110-
ifneq ($(F_COMPILER), NAG)
111-
FCOMMON_OPT += -march=sapphirerapids
112-
endif
113-
else # gcc not support, fallback to avx512
114-
CCOMMON_OPT += -march=skylake-avx512
115-
ifneq ($(F_COMPILER), NAG)
116-
FCOMMON_OPT += -march=skylake-avx512
117-
endif
118-
endif
120+
# sapphire rapids support was added in 11
121+
ifeq ($(GCCVERSIONGTEQ11), 1)
122+
CCOMMON_OPT += -march=sapphirerapids
123+
ifneq ($(F_COMPILER), NAG)
124+
FCOMMON_OPT += -march=sapphirerapids
125+
endif
126+
else # gcc not support, fallback to avx512
127+
CCOMMON_OPT += -march=skylake-avx512
128+
ifneq ($(F_COMPILER), NAG)
129+
FCOMMON_OPT += -march=skylake-avx512
130+
endif
131+
endif
132+
else ifeq ($(C_COMPILER), CLANG)
133+
# cooperlake support was added in clang 12
134+
ifeq ($(CLANGVERSIONGTEQ12), 1)
135+
CCOMMON_OPT += -march=cooperlake
136+
ifneq ($(F_COMPILER), NAG)
137+
FCOMMON_OPT += -march=cooperlake
138+
endif
139+
else # not supported in clang, fallback to avx512
140+
CCOMMON_OPT += -march=skylake-avx512
141+
ifneq ($(F_COMPILER), NAG)
142+
FCOMMON_OPT += -march=skylake-avx512
143+
endif
144+
endif
119145
endif
120146
ifeq ($(OSNAME), CYGWIN_NT)
121147
CCOMMON_OPT += -fno-asynchronous-unwind-tables

kernel/Makefile

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -33,7 +33,7 @@ endif
3333
ifdef TARGET_CORE
3434
ifeq ($(TARGET_CORE), SAPPHIRERAPIDS)
3535
override CFLAGS += -DBUILD_KERNEL -DTABLE_NAME=gotoblas_$(TARGET_CORE)
36-
ifeq ($(GCCVERSIONGTEQ11), 1)
36+
ifeq (1, $(filter 1,$(GCCVERSIONGTEQ11) $(CLANGVERSIONGTEQ12)))
3737
override CFLAGS += -march=sapphirerapids
3838
else
3939
override CFLAGS += -march=skylake-avx512 -mavx512f
@@ -48,7 +48,7 @@ ifeq ($(TARGET_CORE), SAPPHIRERAPIDS)
4848
endif
4949
else ifeq ($(TARGET_CORE), COOPERLAKE)
5050
override CFLAGS += -DBUILD_KERNEL -DTABLE_NAME=gotoblas_$(TARGET_CORE)
51-
ifeq ($(GCCVERSIONGTEQ10), 1)
51+
ifeq (1, $(filter 1,$(GCCVERSIONGTEQ10) $(CLANGVERSIONGTEQ9)))
5252
override CFLAGS += -march=cooperlake
5353
else
5454
override CFLAGS += -march=skylake-avx512 -mavx512f

0 commit comments

Comments
 (0)