OpenBLAS: aarch64: Add neoverse-v1/n2 architecture specifics
[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 # Use a72 tunings because Neoverse-N1 is only available
59 # in GCC>=9
60 ifeq ($(CORE), NEOVERSEN1)
61 ifeq (1, $(filter 1,$(GCCVERSIONGTEQ7) $(ISCLANG)))
62 ifeq ($(GCCVERSIONGTEQ9), 1)
63 CCOMMON_OPT += -march=armv8.2-a -mtune=neoverse-n1
64 ifneq ($(F_COMPILER), NAG)
65 FCOMMON_OPT += -march=armv8.2-a -mtune=neoverse-n1
66 endif
67 else
68 CCOMMON_OPT += -march=armv8.2-a -mtune=cortex-a72
69 ifneq ($(F_COMPILER), NAG)
70 FCOMMON_OPT += -march=armv8.2-a -mtune=cortex-a72
71 endif
72 endif
73 else
74 CCOMMON_OPT += -march=armv8-a -mtune=cortex-a72
75 ifneq ($(F_COMPILER), NAG)
76 FCOMMON_OPT += -march=armv8-a -mtune=cortex-a72
77 endif
78 endif
79 endif
80
81 # Use a72 tunings because Neoverse-V1 is only available
82 # in GCC>=9.4
83 ifeq ($(CORE), NEOVERSEV1)
84 ifeq (1, $(filter 1,$(GCCVERSIONGTEQ7) $(ISCLANG)))
85 ifeq ($(GCCVERSIONGTEQ9), 1)
86 ifeq (1, $(filter 1,$(GCCMINORVERSIONGTEQ4) $(GCCVERSIONGTEQ10)))
87 CCOMMON_OPT += -march=armv8.4-a -mtune=neoverse-v1
88 ifneq ($(F_COMPILER), NAG)
89 FCOMMON_OPT += -march=armv8.4-a -mtune=neoverse-v1
90 endif
91 else
92 CCOMMON_OPT += -march=armv8.4-a -mtune=native
93 ifneq ($(F_COMPILER), NAG)
94 FCOMMON_OPT += -march=armv8.4-a -mtune=native
95 endif
96 endif
97 else
98 CCOMMON_OPT += -march=armv8.2-a -mtune=cortex-a72
99 ifneq ($(F_COMPILER), NAG)
100 FCOMMON_OPT += -march=armv8.2-a -mtune=cortex-a72
101 endif
102 endif
103 else
104 CCOMMON_OPT += -march=armv8-a -mtune=cortex-a72
105 ifneq ($(F_COMPILER), NAG)
106 FCOMMON_OPT += -march=armv8-a -mtune=cortex-a72
107 endif
108 endif
109 endif
110
111 # Use a72 tunings because Neoverse-N2 is only available
112 # in GCC>=9.4
113 ifeq ($(CORE), NEOVERSEN2)
114 ifeq (1, $(filter 1,$(GCCVERSIONGTEQ7) $(ISCLANG)))
115 ifeq ($(GCCVERSIONGTEQ9), 1)
116 ifeq (1, $(filter 1,$(GCCMINORVERSIONGTEQ4) $(GCCVERSIONGTEQ10)))
117 CCOMMON_OPT += -march=armv8.5-a -mtune=neoverse-n2
118 ifneq ($(F_COMPILER), NAG)
119 FCOMMON_OPT += -march=armv8.5-a -mtune=neoverse-n2
120 endif
121 else
122 CCOMMON_OPT += -march=armv8.5-a -mtune=native
123 ifneq ($(F_COMPILER), NAG)
124 FCOMMON_OPT += -march=armv8.5-a -mtune=native
125 endif
126 endif
127 else
128 CCOMMON_OPT += -march=armv8.2-a -mtune=cortex-a72
129 ifneq ($(F_COMPILER), NAG)
130 FCOMMON_OPT += -march=armv8.2-a -mtune=cortex-a72
131 endif
132 endif
133 else
134 CCOMMON_OPT += -march=armv8-a -mtune=cortex-a72
135 ifneq ($(F_COMPILER), NAG)
136 FCOMMON_OPT += -march=armv8-a -mtune=cortex-a72
137 endif
138 endif
139 endif
140
141 # Use a53 tunings because a55 is only available in GCC>=8.1
142 ifeq ($(CORE), CORTEXA55)
143 ifeq (1, $(filter 1,$(GCCVERSIONGTEQ7) $(ISCLANG)))
144 ifeq ($(GCCVERSIONGTEQ8), 1)
145 CCOMMON_OPT += -march=armv8.2-a -mtune=cortex-a55
146 ifneq ($(F_COMPILER), NAG)
147 FCOMMON_OPT += -march=armv8.2-a -mtune=cortex-a55
148 endif
149 else
150 CCOMMON_OPT += -march=armv8.2-a -mtune=cortex-a53
151 ifneq ($(F_COMPILER), NAG)
152 FCOMMON_OPT += -march=armv8.2-a -mtune=cortex-a53
153 endif
154 endif
155 else
156 CCOMMON_OPT += -march=armv8-a -mtune=cortex-a53
157 ifneq ($(F_COMPILER), NAG)
158 FCOMMON_OPT += -march=armv8-a -mtune=cortex-a53
159 endif
160 endif
161 endif
162
163 ifeq ($(CORE), THUNDERX)
164 CCOMMON_OPT += -march=armv8-a -mtune=thunderx
165 ifneq ($(F_COMPILER), NAG)
166 FCOMMON_OPT += -march=armv8-a -mtune=thunderx
167 endif
168 endif
169
170 ifeq ($(CORE), FALKOR)
171 CCOMMON_OPT += -march=armv8-a -mtune=falkor
172 ifneq ($(F_COMPILER), NAG)
173 FCOMMON_OPT += -march=armv8-a -mtune=falkor
174 endif
175 endif
176
177 ifeq ($(CORE), THUNDERX2T99)
178 CCOMMON_OPT += -march=armv8.1-a -mtune=thunderx2t99
179 ifneq ($(F_COMPILER), NAG)
180 FCOMMON_OPT += -march=armv8.1-a -mtune=thunderx2t99
181 endif
182 endif
183
184 ifeq ($(CORE), THUNDERX3T110)
185 ifeq ($(GCCVERSIONGTEQ10), 1)
186 CCOMMON_OPT += -march=armv8.3-a -mtune=thunderx3t110
187 ifneq ($(F_COMPILER), NAG)
188 FCOMMON_OPT += -march=armv8.3-a -mtune=thunderx3t110
189 endif
190 else
191 CCOMMON_OPT += -march=armv8.1-a -mtune=thunderx2t99
192 ifneq ($(F_COMPILER), NAG)
193 FCOMMON_OPT += -march=armv8.1-a -mtune=thunderx2t99
194 endif
195 endif
196 endif
197
198 ifeq ($(CORE), VORTEX)
199 CCOMMON_OPT += -march=armv8.3-a
200 ifneq ($(F_COMPILER), NAG)
201 FCOMMON_OPT += -march=armv8.3-a
202 endif
203 endif
204
205 ifeq (1, $(filter 1,$(GCCVERSIONGTEQ9) $(ISCLANG)))
206 ifeq ($(CORE), TSV110)
207 CCOMMON_OPT += -march=armv8.2-a -mtune=tsv110
208 ifneq ($(F_COMPILER), NAG)
209 FCOMMON_OPT += -march=armv8.2-a -mtune=tsv110
210 endif
211 endif
212 endif
213
214 ifeq ($(GCCVERSIONGTEQ9), 1)
215 ifeq ($(CORE), EMAG8180)
216 CCOMMON_OPT += -march=armv8-a -mtune=emag
217 ifneq ($(F_COMPILER), NAG)
218 FCOMMON_OPT += -march=armv8-a -mtune=emag
219 endif
220 endif
221 endif
222
223 ifeq (1, $(filter 1,$(GCCVERSIONGTEQ11) $(ISCLANG)))
224 ifeq ($(CORE), A64FX)
225 CCOMMON_OPT += -march=armv8.2-a+sve -mtune=a64fx
226 ifneq ($(F_COMPILER), NAG)
227 FCOMMON_OPT += -march=armv8.2-a+sve -mtune=a64fx
228 endif
229 endif
230 endif
231
232 endif
233
234 endif