Merge pull request #3588 from martin-frbg/fix3586
[platform/upstream/openblas.git] / Makefile.arm64
1 ifneq ($(C_COMPILER), PGI)
2
3 ifeq ($(C_COMPILER), CLANG)
4 ISCLANG=1
5 endif
6 ifneq (1, $(filter 1,$(GCCVERSIONGT4) $(ISCLANG)))
7 CCOMMON_OPT += -march=armv8-a
8 ifneq ($(F_COMPILER), NAG)
9 FCOMMON_OPT += -march=armv8-a
10 endif
11
12
13 else 
14
15
16 ifeq ($(CORE), ARMV8)
17 CCOMMON_OPT += -march=armv8-a
18 ifneq ($(F_COMPILER), NAG)
19 FCOMMON_OPT += -march=armv8-a
20 endif
21 endif
22
23 ifeq ($(CORE), ARMV8SVE)
24 CCOMMON_OPT += -march=armv8-a+sve
25 ifneq ($(F_COMPILER), NAG)
26 FCOMMON_OPT += -march=armv8-a+sve
27 endif
28 endif
29
30 ifeq ($(CORE), CORTEXA53)
31 CCOMMON_OPT += -march=armv8-a -mtune=cortex-a53
32 ifneq ($(F_COMPILER), NAG)
33 FCOMMON_OPT += -march=armv8-a -mtune=cortex-a53
34 endif
35 endif
36
37 ifeq ($(CORE), CORTEXA57)
38 CCOMMON_OPT += -march=armv8-a -mtune=cortex-a57
39 ifneq ($(F_COMPILER), NAG)
40 FCOMMON_OPT += -march=armv8-a -mtune=cortex-a57
41 endif
42 endif
43
44 ifeq ($(CORE), CORTEXA72)
45 CCOMMON_OPT += -march=armv8-a -mtune=cortex-a72
46 ifneq ($(F_COMPILER), NAG)
47 FCOMMON_OPT += -march=armv8-a -mtune=cortex-a72
48 endif
49 endif
50
51 ifeq ($(CORE), CORTEXA73)
52 CCOMMON_OPT += -march=armv8-a -mtune=cortex-a73
53 ifneq ($(F_COMPILER), NAG)
54 FCOMMON_OPT += -march=armv8-a -mtune=cortex-a73
55 endif
56 endif
57
58 ifeq ($(CORE), FT2000)
59 CCOMMON_OPT += -march=armv8-a -mtune=cortex-a72
60 ifneq ($(F_COMPILER), NAG)
61 FCOMMON_OPT += -march=armv8-a -mtune=cortex-a72
62 endif
63 endif
64
65 # Use a72 tunings because Neoverse-N1 is only available
66 # in GCC>=9
67 ifeq ($(CORE), NEOVERSEN1)
68 ifeq (1, $(filter 1,$(GCCVERSIONGTEQ7) $(ISCLANG)))
69 ifeq ($(GCCVERSIONGTEQ9), 1)
70 CCOMMON_OPT += -march=armv8.2-a -mtune=neoverse-n1
71 ifneq ($(F_COMPILER), NAG)
72 FCOMMON_OPT += -march=armv8.2-a -mtune=neoverse-n1
73 endif
74 else
75 CCOMMON_OPT += -march=armv8.2-a -mtune=cortex-a72
76 ifneq ($(F_COMPILER), NAG)
77 FCOMMON_OPT += -march=armv8.2-a -mtune=cortex-a72
78 endif
79 endif
80 else
81 CCOMMON_OPT += -march=armv8-a -mtune=cortex-a72
82 ifneq ($(F_COMPILER), NAG)
83 FCOMMON_OPT += -march=armv8-a -mtune=cortex-a72
84 endif
85 endif
86 endif
87
88 # Use a72 tunings because Neoverse-V1 is only available
89 # in GCC>=9.4
90 ifeq ($(CORE), NEOVERSEV1)
91 ifeq (1, $(filter 1,$(GCCVERSIONGTEQ7) $(ISCLANG)))
92 ifeq ($(GCCVERSIONGTEQ9), 1)
93 ifeq (1, $(filter 1,$(GCCMINORVERSIONGTEQ4) $(GCCVERSIONGTEQ10)))
94 CCOMMON_OPT += -march=armv8.4-a -mtune=neoverse-v1
95 ifneq ($(F_COMPILER), NAG)
96 FCOMMON_OPT += -march=armv8.4-a -mtune=neoverse-v1
97 endif
98 else
99 CCOMMON_OPT += -march=armv8.4-a -mtune=native
100 ifneq ($(F_COMPILER), NAG)
101 FCOMMON_OPT += -march=armv8.4-a -mtune=native
102 endif
103 endif
104 else
105 CCOMMON_OPT += -march=armv8.2-a -mtune=cortex-a72
106 ifneq ($(F_COMPILER), NAG)
107 FCOMMON_OPT += -march=armv8.2-a -mtune=cortex-a72
108 endif
109 endif
110 else
111 CCOMMON_OPT += -march=armv8-a -mtune=cortex-a72
112 ifneq ($(F_COMPILER), NAG)
113 FCOMMON_OPT += -march=armv8-a -mtune=cortex-a72
114 endif
115 endif
116 endif
117
118 # Use a72 tunings because Neoverse-N2 is only available
119 # in GCC>=9.4
120 ifeq ($(CORE), NEOVERSEN2)
121 ifeq (1, $(filter 1,$(GCCVERSIONGTEQ7) $(ISCLANG)))
122 ifeq ($(GCCVERSIONGTEQ9), 1)
123 ifeq (1, $(filter 1,$(GCCMINORVERSIONGTEQ4) $(GCCVERSIONGTEQ10)))
124 CCOMMON_OPT += -march=armv8.5-a -mtune=neoverse-n2
125 ifneq ($(F_COMPILER), NAG)
126 FCOMMON_OPT += -march=armv8.5-a -mtune=neoverse-n2
127 endif
128 else
129 CCOMMON_OPT += -march=armv8.5-a -mtune=native
130 ifneq ($(F_COMPILER), NAG)
131 FCOMMON_OPT += -march=armv8.5-a -mtune=native
132 endif
133 endif
134 else
135 CCOMMON_OPT += -march=armv8.2-a -mtune=cortex-a72
136 ifneq ($(F_COMPILER), NAG)
137 FCOMMON_OPT += -march=armv8.2-a -mtune=cortex-a72
138 endif
139 endif
140 else
141 CCOMMON_OPT += -march=armv8-a -mtune=cortex-a72
142 ifneq ($(F_COMPILER), NAG)
143 FCOMMON_OPT += -march=armv8-a -mtune=cortex-a72
144 endif
145 endif
146 endif
147
148 # Use a53 tunings because a55 is only available in GCC>=8.1
149 ifeq ($(CORE), CORTEXA55)
150 ifeq (1, $(filter 1,$(GCCVERSIONGTEQ7) $(ISCLANG)))
151 ifeq ($(GCCVERSIONGTEQ8), 1)
152 CCOMMON_OPT += -march=armv8.2-a -mtune=cortex-a55
153 ifneq ($(F_COMPILER), NAG)
154 FCOMMON_OPT += -march=armv8.2-a -mtune=cortex-a55
155 endif
156 else
157 CCOMMON_OPT += -march=armv8.2-a -mtune=cortex-a53
158 ifneq ($(F_COMPILER), NAG)
159 FCOMMON_OPT += -march=armv8.2-a -mtune=cortex-a53
160 endif
161 endif
162 else
163 CCOMMON_OPT += -march=armv8-a -mtune=cortex-a53
164 ifneq ($(F_COMPILER), NAG)
165 FCOMMON_OPT += -march=armv8-a -mtune=cortex-a53
166 endif
167 endif
168 endif
169
170 ifeq ($(CORE), THUNDERX)
171 CCOMMON_OPT += -march=armv8-a -mtune=thunderx
172 ifneq ($(F_COMPILER), NAG)
173 FCOMMON_OPT += -march=armv8-a -mtune=thunderx
174 endif
175 endif
176
177 ifeq ($(CORE), FALKOR)
178 CCOMMON_OPT += -march=armv8-a -mtune=falkor
179 ifneq ($(F_COMPILER), NAG)
180 FCOMMON_OPT += -march=armv8-a -mtune=falkor
181 endif
182 endif
183
184 ifeq ($(CORE), THUNDERX2T99)
185 CCOMMON_OPT += -march=armv8.1-a -mtune=thunderx2t99
186 ifneq ($(F_COMPILER), NAG)
187 FCOMMON_OPT += -march=armv8.1-a -mtune=thunderx2t99
188 endif
189 endif
190
191 ifeq ($(CORE), THUNDERX3T110)
192 ifeq ($(GCCVERSIONGTEQ10), 1)
193 CCOMMON_OPT += -march=armv8.3-a -mtune=thunderx3t110
194 ifneq ($(F_COMPILER), NAG)
195 FCOMMON_OPT += -march=armv8.3-a -mtune=thunderx3t110
196 endif
197 else
198 CCOMMON_OPT += -march=armv8.1-a -mtune=thunderx2t99
199 ifneq ($(F_COMPILER), NAG)
200 FCOMMON_OPT += -march=armv8.1-a -mtune=thunderx2t99
201 endif
202 endif
203 endif
204
205 ifeq ($(CORE), VORTEX)
206 CCOMMON_OPT += -march=armv8.3-a
207 ifneq ($(F_COMPILER), NAG)
208 FCOMMON_OPT += -march=armv8.3-a
209 endif
210 endif
211
212 ifeq (1, $(filter 1,$(GCCVERSIONGTEQ9) $(ISCLANG)))
213 ifeq ($(CORE), TSV110)
214 CCOMMON_OPT += -march=armv8.2-a -mtune=tsv110
215 ifneq ($(F_COMPILER), NAG)
216 FCOMMON_OPT += -march=armv8.2-a -mtune=tsv110
217 endif
218 endif
219 endif
220
221 ifeq ($(GCCVERSIONGTEQ9), 1)
222 ifeq ($(CORE), EMAG8180)
223 CCOMMON_OPT += -march=armv8-a -mtune=emag
224 ifneq ($(F_COMPILER), NAG)
225 FCOMMON_OPT += -march=armv8-a -mtune=emag
226 endif
227 endif
228 endif
229
230 ifeq (1, $(filter 1,$(GCCVERSIONGTEQ11) $(ISCLANG)))
231 ifeq ($(CORE), A64FX)
232 CCOMMON_OPT += -march=armv8.2-a+sve -mtune=a64fx
233 ifneq ($(F_COMPILER), NAG)
234 FCOMMON_OPT += -march=armv8.2-a+sve -mtune=a64fx
235 endif
236 endif
237 endif
238
239 ifeq (1, $(filter 1,$(GCCVERSIONGTEQ11) $(ISCLANG)))
240 ifeq ($(CORE), CORTEXX1)
241 CCOMMON_OPT += -march=armv8.2-a -mtune=cortexa72
242 ifneq ($(F_COMPILER), NAG)
243 FCOMMON_OPT += -march=armv8.2-a -mtune=cortexa72
244 endif
245 endif
246 endif
247
248 ifeq (1, $(filter 1,$(GCCVERSIONGTEQ11) $(ISCLANG)))
249 ifeq ($(CORE), CORTEXX2)
250 CCOMMON_OPT += -march=armv8.4-a+sve
251 ifneq ($(F_COMPILER), NAG)
252 FCOMMON_OPT += -march=armv8.4-a+sve
253 endif
254 endif
255 endif
256
257 #ifeq (1, $(filter 1,$(ISCLANG)))
258 ifeq (1, $(filter 1,$(GCCVERSIONGTEQ11) $(ISCLANG)))
259 ifeq ($(CORE), CORTEXA510)
260 CCOMMON_OPT += -march=armv8.4-a+sve
261 ifneq ($(F_COMPILER), NAG)
262 FCOMMON_OPT += -march=armv8.4-a+sve
263 endif
264 endif
265 endif
266
267 ifeq (1, $(filter 1,$(GCCVERSIONGTEQ11) $(ISCLANG)))
268 ifeq ($(CORE), CORTEXA710)
269 CCOMMON_OPT += -march=armv8.4-a+sve
270 ifneq ($(F_COMPILER), NAG)
271 FCOMMON_OPT += -march=armv8.4-a+sve
272 endif
273 endif
274 endif
275
276 endif
277
278 endif