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