2 TARGET = $(TARGET_CORE)
6 include $(TOPDIR)/Makefile.system
9 ifeq ($(C_COMPILER), GCC)
10 # AVX2 support was added in 4.7.0
11 GCCVERSIONGTEQ4 := $(shell expr `$(CC) -dumpversion | cut -f1 -d.` \>= 4)
12 GCCMINORVERSIONGTEQ7 := $(shell expr `$(CC) -dumpversion | cut -f2 -d.` \>= 7)
13 ifeq ($(GCCVERSIONGTEQ4)$(GCCMINORVERSIONGTEQ7), 11)
17 ifeq ($(C_COMPILER), CLANG)
18 # Any clang posing as gcc 4.2 should be new enough (3.4 or later)
19 GCCVERSIONGTEQ4 := $(shell expr `$(CC) -dumpversion | cut -f1 -d.` \>= 4)
20 GCCMINORVERSIONGTEQ2 := $(shell expr `$(CC) -dumpversion | cut -f2 -d.` \>= 2)
21 ifeq ($(GCCVERSIONGTEQ4)$(GCCMINORVERSIONGTEQ2), 11)
30 ifeq ($(TARGET_CORE), SKYLAKEX)
31 override CFLAGS += -DBUILD_KERNEL -DTABLE_NAME=gotoblas_$(TARGET_CORE) -march=skylake-avx512
32 ifeq ($(OSNAME), CYGWIN_NT)
33 override CFLAGS += -fno-asynchronous-unwind-tables
35 ifeq ($(OSNAME), WINNT)
36 ifeq ($(C_COMPILER), GCC)
37 override CFLAGS += -fno-asynchronous-unwind-tables
40 else ifeq ($(TARGET_CORE), HASWELL)
41 override CFLAGS += -DBUILD_KERNEL -DTABLE_NAME=gotoblas_$(TARGET_CORE) $(AVX2OPT)
43 override CFLAGS += -DBUILD_KERNEL -DTABLE_NAME=gotoblas_$(TARGET_CORE)
47 TSUFFIX = _$(TARGET_CORE)
54 -include $(KERNELDIR)/KERNEL.$(TARGET_CORE)
56 include $(KERNELDIR)/KERNEL
67 dgemm_kernel.$(SUFFIX) \
68 $(DGEMMINCOPYOBJ) $(DGEMMITCOPYOBJ) \
69 $(DGEMMONCOPYOBJ) $(DGEMMOTCOPYOBJ) \
70 dtrsm_kernel_LN.$(SUFFIX) dtrsm_kernel_LT.$(SUFFIX) \
71 dtrsm_kernel_RN.$(SUFFIX) dtrsm_kernel_RT.$(SUFFIX) \
72 daxpy_k.$(SUFFIX) dcopy_k.$(SUFFIX) ddot_k.$(SUFFIX) \
73 dger_k.$(SUFFIX) dscal_k.$(SUFFIX) idamax_k.$(SUFFIX) \
74 dgemv_n.$(SUFFIX) dgemv_t.$(SUFFIX) dgemm_beta.$(SUFFIX) \
75 dtrsm_iunucopy.$(SUFFIX) dtrsm_iunncopy.$(SUFFIX) \
76 dtrsm_ilnucopy.$(SUFFIX) dtrsm_ilnncopy.$(SUFFIX) \
77 dtrsm_iutucopy.$(SUFFIX) dtrsm_iutncopy.$(SUFFIX) \
78 dtrsm_iltucopy.$(SUFFIX) dtrsm_iltncopy.$(SUFFIX) \
79 dtrsm_ounucopy.$(SUFFIX) dtrsm_ounncopy.$(SUFFIX) \
80 dtrsm_olnucopy.$(SUFFIX) dtrsm_olnncopy.$(SUFFIX) \
81 dtrsm_outucopy.$(SUFFIX) dtrsm_outncopy.$(SUFFIX) \
82 dtrsm_oltucopy.$(SUFFIX) dtrsm_oltncopy.$(SUFFIX)
84 COMMONOBJS += lsame.$(SUFFIX) scabs1.$(SUFFIX) dcabs1.$(SUFFIX)
86 ifeq ($(DYNAMIC_ARCH), 1)
87 SBLASOBJS += setparam$(TSUFFIX).$(SUFFIX)
88 CCOMMON_OPT += -DTS=$(TSUFFIX)
91 KERNEL_INTERFACE = ../common_level1.h ../common_level2.h ../common_level3.h
92 ifneq ($(NO_LAPACK), 1)
93 KERNEL_INTERFACE += ../common_lapack.h
97 COMMONOBJS += cpuid.$(SUFFIX)
101 COMMONOBJS += qconjg.$(SUFFIX) qcabs1.$(SUFFIX)
105 COMMONOBJS += qconjg.$(SUFFIX) qcabs1.$(SUFFIX)
110 scabs1.$(SUFFIX): $(KERNELDIR)/$(SCABS_KERNEL)
111 $(CC) -c $(CFLAGS) -DCOMPLEX -UDOUBLE -DF_INTERFACE $< -o $(@F)
113 dcabs1.$(SUFFIX): $(KERNELDIR)/$(DCABS_KERNEL)
114 $(CC) -c $(CFLAGS) -DCOMPLEX -DDOUBLE -DF_INTERFACE $< -o $(@F)
116 qcabs1.$(SUFFIX): $(KERNELDIR)/$(QCABS_KERNEL)
117 $(CC) -c $(CFLAGS) -DCOMPLEX -DXDOUBLE -DF_INTERFACE $< -o $(@F)
119 qconjg.$(SUFFIX): $(KERNELDIR)/qconjg.S
120 $(CC) -c $(CFLAGS) -DCOMPLEX -DXDOUBLE -DF_INTERFACE $< -o $(@F)
122 lsame.$(SUFFIX): $(KERNELDIR)/$(LSAME_KERNEL)
123 $(CC) -c $(CFLAGS) -DF_INTERFACE $< -o $(@F)
125 setparam$(TSUFFIX).$(SUFFIX): setparam$(TSUFFIX).c kernel$(TSUFFIX).h
126 ifeq ($(USE_GEMM3M), 1)
127 $(CC) -c $(CFLAGS) -DUSE_GEMM3M $< -o $@
129 $(CC) -c $(CFLAGS) $< -o $@
132 setparam$(TSUFFIX).c : setparam-ref.c
133 sed 's/TS/$(TSUFFIX)/g' $< > $(@F)
135 kernel$(TSUFFIX).h : $(KERNEL_INTERFACE)
136 sed 's/\ *(/$(TSUFFIX)(/g' $^ > $(@F)
139 cpuid.$(SUFFIX): $(KERNELDIR)/cpuid.S
140 $(CC) -c $(CFLAGS) $< -o $(@F)
142 scabs1.$(PSUFFIX): $(KERNELDIR)/$(SCABS_KERNEL)
143 $(CC) -c $(PFLAGS) -DCOMPLEX -UDOUBLE -DF_INTERFACE $< -o $(@F)
145 dcabs1.$(PSUFFIX): $(KERNELDIR)/$(DCABS_KERNEL)
146 $(CC) -c $(PFLAGS) -DCOMPLEX -DDOUBLE -DF_INTERFACE $< -o $(@F)
148 qcabs1.$(PSUFFIX): $(KERNELDIR)/$(QCABS_KERNEL)
149 $(CC) -c $(PFLAGS) -DCOMPLEX -DXDOUBLE -DF_INTERFACE $< -o $(@F)
151 qconjg.$(PSUFFIX): $(KERNELDIR)/qconjg.S
152 $(CC) -c $(PFLAGS) -DCOMPLEX -DXDOUBLE -DF_INTERFACE $< -o $(@F)
154 lsame.$(PSUFFIX): $(KERNELDIR)/$(LSAME_KERNEL)
155 $(CC) -c $(PFLAGS) -DF_INTERFACE $< -o $(@F)
157 cpuid.$(PSUFFIX): $(KERNELDIR)/cpuid.S
158 $(CC) -c $(PFLAGS) $< -o $(@F)
162 @rm -f setparam_*.c kernel_*.h setparam.h kernel.h
166 include $(TOPDIR)/Makefile.tail