[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Ahem again, here's the makefile



include Make.inc

default : xmmsearch
$(SYSdir)/time.o:
	cd $(SYSdir) ; make time.o

$(INCdir)/atlas_type.h : 
	cd $(SYSdir) ; $(MAKE) RunTyp

RunL1 : force_build
	rm -f res/L1CacheSize
	cd $(SYSdir) ; $(MAKE) res/L1CacheSize
	ln -s $(SYSdir)/res/L1CacheSize res/L1CacheSize

RunTLB : 
	cd $(SYSdir) ; $(MAKE) RunTLB

RunMulAdd: force_build
	rm -f res/$(pre)MULADD
	cd $(SYSdir) ; $(MAKE) res/$(pre)MULADD pre=$(pre) maxlat=$(maxlat) \
                                         mflop=$(mflop)
	ln -s $(SYSdir)/res/$(pre)MULADD res/$(pre)MULADD

RunTyp: force_build
	cd $(SYSdir) ; $(MAKE) RunTyp

$(INCdir)/atlas_sfc.h :
	touch $(INCdir)/atlas_sfc.h
$(INCdir)/atlas_dfc.h :
	touch $(INCdir)/atlas_dfc.h
$(INCdir)/atlas_qfc.h :
	touch $(INCdir)/atlas_qfc.h
$(INCdir)/atlas_cfc.h : $(INCdir)/atlas_sfc.h
	rm -f $(INCdir)/atlas_cfc.h
	ln -s $(INCdir)/atlas_sfc.h $(INCdir)/atlas_cfc.h
$(INCdir)/atlas_zfc.h : $(INCdir)/atlas_dfc.h
	rm -f $(INCdir)/atlas_zfc.h
	ln -s $(INCdir)/atlas_dfc.h $(INCdir)/atlas_zfc.h



L3INCdep = $(INCdir)/../atlas_misc.h $(INCdir)/../atlas_lvl3.h \
           $(INCdir)/../atlas_f77.h $(INCdir)/atlas_type.h
if = -1
nf = 0
ff = 0
beta = 1
ldc = $(nb)
regs = 32
nb = 28
mmrout=JIKNBmm

pre = d
muladd = 1
ta = t
tb = n
lat = 4
mu = 4
nu = 4
ku = 1
nb = 4
mb = $(nb)
kb = $(nb)
M = $(nb)
N = $(mb)
K = $(kb)
lda = $(kb)
ldb = $(kb)
ldc = 0
csA = 1
csB = 1
csC = 1
alpha = 1
beta = 1
loopO = JIK
F0 = 16
FN = 0
moves = -DMoveA -DMoveB
cleanup = 0
casnam =
bnb = 28
mmrout = $(pre)mm0.c

RunMMDef : xmmsearch
	./xmmsearch -p $(pre) -R -2

xmmsearch : $(INCdir)/atlas_type.h mmsearch.o
	$(XCC) $(XCCFLAGS) $(NM) $@ mmsearch.o

res/L1CacheSize :
	$(MAKE) RunL1

res/$(pre)MULADD :
	$(MAKE) RunMulAdd pre=$(pre)

res/atlas_ssysinfo.h : res/sMULADD res/L1CacheSize GetSysSum
	cp -f $(INCdir)/atlas_ssysinfo.h res/.
res/atlas_dsysinfo.h : res/dMULADD res/L1CacheSize GetSysSum
	cp -f $(INCdir)/atlas_dsysinfo.h res/.
res/atlas_csysinfo.h : res/sMULADD res/L1CacheSize GetSysSum
	cp -f $(INCdir)/atlas_csysinfo.h res/.
res/atlas_zsysinfo.h : res/dMULADD res/L1CacheSize GetSysSum
	cp -f $(INCdir)/atlas_zsysinfo.h res/.

GetSysSum : xsys_sum
	$(ATLRUN) $(MMTdir) xsys_sum $(pre) $(INCdir)/atlas_$(pre)sysinfo.h

xsys_sum : GetSysSum.o
	$(CLINKER) $(CLINKFLAGS) $(NM) $@ GetSysSum.o

res/$(pre)bestTT_$(bnb)x$(bnb)x$(bnb) : xmmsearch xemit_mm 
	./xmmsearch -p $(pre)
	./xemit_mm  -p $(pre) -R -2
	$(MAKE) install pre=$(pre)
res/$(pre)bestTT_0x0x$(bnb) : xmmsearch xemit_mm 
	./xmmsearch -p $(pre)
	./xemit_mm  -p $(pre) -R -2
	$(MAKE) install pre=$(pre)
res/$(pre)bestTT_0x0x0 : xmmsearch xemit_mm 
	./xmmsearch -p $(pre)
	./xemit_mm  -p $(pre) -R -2
	$(MAKE) install pre=$(pre)
res/$(pre)bestTN_$(bnb)x$(bnb)x$(bnb) : xmmsearch xemit_mm 
	./xmmsearch -p $(pre)
	./xemit_mm  -p $(pre) -R -2
	$(MAKE) install pre=$(pre)
res/$(pre)bestTN_0x0x$(bnb) : xmmsearch xemit_mm 
	./xmmsearch -p $(pre)
	./xemit_mm  -p $(pre) -R -2
	$(MAKE) install pre=$(pre)
res/$(pre)bestTN_0x0x0 : xmmsearch xemit_mm 
	./xmmsearch -p $(pre)
	./xemit_mm  -p $(pre) -R -2
	$(MAKE) install pre=$(pre)
res/$(pre)bestNT_$(bnb)x$(bnb)x$(bnb) : xmmsearch xemit_mm 
	./xmmsearch -p $(pre)
	./xemit_mm  -p $(pre) -R -2
	$(MAKE) install pre=$(pre)
res/$(pre)bestNT_0x0x$(bnb) : xmmsearch xemit_mm 
	./xmmsearch -p $(pre)
	./xemit_mm  -p $(pre) -R -2
	$(MAKE) install pre=$(pre)
res/$(pre)bestNT_0x0x0 : xmmsearch xemit_mm 
	./xmmsearch -p $(pre)
	./xemit_mm  -p $(pre) -R -2
	$(MAKE) install pre=$(pre)
res/$(pre)bestNN_$(bnb)x$(bnb)x$(bnb) : xmmsearch xemit_mm 
	./xmmsearch -p $(pre)
	./xemit_mm  -p $(pre) -R -2
	$(MAKE) install pre=$(pre)
res/$(pre)bestNN_0x0x$(bnb) : xmmsearch xemit_mm 
	./xmmsearch -p $(pre)
	./xemit_mm  -p $(pre) -R -2
	$(MAKE) install pre=$(pre)
res/$(pre)bestNN_0x0x0 : xmmsearch xemit_mm 
	./xmmsearch -p $(pre)
	./xemit_mm  -p $(pre) -R -2
	$(MAKE) install pre=$(pre)
res/$(pre)BEST : xmmsearch
	./xmmsearch -p $(pre)
	
res/$(pre)MMRES : xmmsearch xemit_mm 
	./xmmsearch -p $(pre)
res/$(pre)NCNB  : xmmsearch xemit_mm 
	./xmmsearch -p $(pre)
res/$(pre)Xover.h :
	$(MAKE) $(pre)Run_tfc pre=$(pre)

RunFindCE :
	$(MAKE) dRunFindCE

res/atlas_cacheedge.h :
	$(MAKE) $(pre)RunFindCE


xemit_mm  : emit_mm.o
	$(XCC) $(XCCFLAGS) $(NM) xemit_mm emit_mm.o

xemit_reg : emit_reg.o
	$(XCC) $(XCCFLAGS) $(NM) xemit_reg emit_reg.o

xemit_cmm : emit_cmm.o
	$(XCC) $(XCCFLAGS) $(NM) xemit_cmm emit_cmm.o

xemit_fmm : emit_fmm.o
	$(XCC) $(XCCFLAGS) $(NM) xemit_fmm emit_fmm.o
xhcsearch : hcsearch.o
	$(XCC) $(XCCFLAGS) $(NM) xhcsearch hcsearch.o

RunHCtest : xhcsearch
	rm -f $(INCdir)/$(pre)mmcase.h
	touch $(INCdir)/$(pre)mmcase.h
	./xhcsearch -p $(pre) -n $(nb)
	mv res/$(pre)mmcase.h $(INCdir)/.

$(pre)killclean :
	rm -f res/$(pre)Clean?
$(pre)killNC :
	rm -f res/$(pre)best*
$(pre)killMM : $(pre)killclean $(pre)killNC
	rm -f res/$(pre)MMRES res/$(pre)*NB


sRun_tfc : stfc
	$(ATLRUN) $(MMTdir) xstfc
	cp -f $(INCdir)/sXover.h res/.

stfc :
	$(MAKE) xstfc pre=s typ=SREAL

sinstall :
	./xemit_mm  -p s -R -2
	mv -f ATL_$(pre)NBmm*.c $(GMMdir)/.
	mv -f $(pre)mm.h $(INCdir)/.
	cd $(GMMdir)/CLEANUP ; rm -f ATL_$(pre)*.o
	cd $(GMMdir)/CLEANUP ; rm -f ATL_$(pre)*
	cd $(GMMdir)/CLEANUP ; rm -f $(pre)Makefile
	mv -f CLEANUP/ATL_$(pre)* $(GMMdir)/CLEANUP/.
	mv -f CLEANUP/$(pre)Makefile $(GMMdir)/CLEANUP/.
	$(MAKE) sNCinstall
	$(MAKE) res/atlas_cacheedge.h
	$(MAKE) res/$(pre)Xover.h
	$(MAKE) smmlib
	touch sinstall

sRunFindCE : xsfindCE
	$(ATLRUN) $(MMTdir) xsfindCE -f res/atlas_cacheedge.h
	cp -f res/atlas_cacheedge.h $(INCdir)/atlas_cacheedge.h


dRun_tfc : dtfc
	$(ATLRUN) $(MMTdir) xdtfc
	cp -f $(INCdir)/dXover.h res/.

dtfc :
	$(MAKE) xdtfc pre=d typ=DREAL

dinstall :
	./xemit_mm  -p d -R -2
	mv -f ATL_$(pre)NBmm*.c $(GMMdir)/.
	mv -f $(pre)mm.h $(INCdir)/.
	cd $(GMMdir)/CLEANUP ; rm -f ATL_$(pre)*.o
	cd $(GMMdir)/CLEANUP ; rm -f ATL_$(pre)*
	cd $(GMMdir)/CLEANUP ; rm -f $(pre)Makefile
	mv -f CLEANUP/ATL_$(pre)* $(GMMdir)/CLEANUP/.
	mv -f CLEANUP/$(pre)Makefile $(GMMdir)/CLEANUP/.
	$(MAKE) dNCinstall
	$(MAKE) res/atlas_cacheedge.h
	$(MAKE) res/$(pre)Xover.h
	$(MAKE) dmmlib
	touch dinstall

dRunFindCE : xdfindCE
	$(ATLRUN) $(MMTdir) xdfindCE -f res/atlas_cacheedge.h
	cp -f res/atlas_cacheedge.h $(INCdir)/atlas_cacheedge.h


qRun_tfc : qtfc
	$(ATLRUN) $(MMTdir) xqtfc
	cp -f $(INCdir)/qXover.h res/.

qtfc :
	$(MAKE) xqtfc pre=q typ=QREAL

qinstall :
	./xemit_mm  -p q -R -2
	mv -f ATL_$(pre)NBmm*.c $(GMMdir)/.
	mv -f $(pre)mm.h $(INCdir)/.
	cd $(GMMdir)/CLEANUP ; rm -f ATL_$(pre)*.o
	cd $(GMMdir)/CLEANUP ; rm -f ATL_$(pre)*
	cd $(GMMdir)/CLEANUP ; rm -f $(pre)Makefile
	mv -f CLEANUP/ATL_$(pre)* $(GMMdir)/CLEANUP/.
	mv -f CLEANUP/$(pre)Makefile $(GMMdir)/CLEANUP/.
	$(MAKE) qNCinstall
	$(MAKE) res/atlas_cacheedge.h
	$(MAKE) res/$(pre)Xover.h
	$(MAKE) qmmlib
	touch qinstall

qRunFindCE : xqfindCE
	$(ATLRUN) $(MMTdir) xqfindCE -f res/atlas_cacheedge.h
	cp -f res/atlas_cacheedge.h $(INCdir)/atlas_cacheedge.h


cRun_tfc : ctfc
	$(ATLRUN) $(MMTdir) xctfc
	cp -f $(INCdir)/cXover.h res/.

ctfc :
	$(MAKE) xctfc pre=c typ=SCPLX

cinstall :
	./xemit_mm  -p c -R -2
	mv -f ATL_$(pre)NBmm*.c $(GMMdir)/.
	mv -f $(pre)mm.h $(INCdir)/.
	cd $(GMMdir)/CLEANUP ; rm -f ATL_$(pre)*.o
	cd $(GMMdir)/CLEANUP ; rm -f ATL_$(pre)*
	cd $(GMMdir)/CLEANUP ; rm -f $(pre)Makefile
	mv -f CLEANUP/ATL_$(pre)* $(GMMdir)/CLEANUP/.
	mv -f CLEANUP/$(pre)Makefile $(GMMdir)/CLEANUP/.
	$(MAKE) cNCinstall
	$(MAKE) res/atlas_cacheedge.h
	$(MAKE) res/$(pre)Xover.h
	$(MAKE) cmmlib
	touch cinstall

cRunFindCE : xcfindCE
	$(ATLRUN) $(MMTdir) xcfindCE -f res/atlas_cacheedge.h
	cp -f res/atlas_cacheedge.h $(INCdir)/atlas_cacheedge.h


zRun_tfc : ztfc
	$(ATLRUN) $(MMTdir) xztfc
	cp -f $(INCdir)/zXover.h res/.

ztfc :
	$(MAKE) xztfc pre=z typ=DCPLX

zinstall :
	./xemit_mm  -p z -R -2
	mv -f ATL_$(pre)NBmm*.c $(GMMdir)/.
	mv -f $(pre)mm.h $(INCdir)/.
	cd $(GMMdir)/CLEANUP ; rm -f ATL_$(pre)*.o
	cd $(GMMdir)/CLEANUP ; rm -f ATL_$(pre)*
	cd $(GMMdir)/CLEANUP ; rm -f $(pre)Makefile
	mv -f CLEANUP/ATL_$(pre)* $(GMMdir)/CLEANUP/.
	mv -f CLEANUP/$(pre)Makefile $(GMMdir)/CLEANUP/.
	$(MAKE) zNCinstall
	$(MAKE) res/atlas_cacheedge.h
	$(MAKE) res/$(pre)Xover.h
	$(MAKE) zmmlib
	touch zinstall

zRunFindCE : xzfindCE
	$(ATLRUN) $(MMTdir) xzfindCE -f res/atlas_cacheedge.h
	cp -f res/atlas_cacheedge.h $(INCdir)/atlas_cacheedge.h


smmlib:
	cd $(GMMdir) ; make slib

sstandard : force_build
	$(MAKE) sready $(sATLres)
	$(MAKE) sinstall


$(GMMdir)/ATL_sFindCE_mm.o : 
	cd $(GMMdir) ; $(MAKE) ATL_sFindCE_mm.o pre=s typ=SREAL

sfindCE.o : ../findCE.c
	$(CC) $(CCFLAGS) $(OJ) -DSREAL $(NM) $@ ../findCE.c


xsfindCE : $(INCdir)/atlas_type.h $(L3INCdep) smmlib \
                $(GMMdir)/ATL_sFindCE_mm.o sfindCE.o $(SYSdir)/time.o
	$(CLINKER) $(CLINKFLAGS) $(NM) $@ sfindCE.o $(SYSdir)/time.o \
                   $(GMMdir)/ATL_sFindCE_mm.o $(ATLASlib) $(LIBS)
	
dmmlib:
	cd $(GMMdir) ; make dlib

dstandard : force_build
	$(MAKE) dready $(dATLres)
	$(MAKE) dinstall


$(GMMdir)/ATL_dFindCE_mm.o : 
	cd $(GMMdir) ; $(MAKE) ATL_dFindCE_mm.o pre=d typ=DREAL

dfindCE.o : ../findCE.c
	$(CC) $(CCFLAGS) $(OJ) -DDREAL $(NM) $@ ../findCE.c


xdfindCE : $(INCdir)/atlas_type.h $(L3INCdep) dmmlib \
                $(GMMdir)/ATL_dFindCE_mm.o dfindCE.o $(SYSdir)/time.o
	$(CLINKER) $(CLINKFLAGS) $(NM) $@ dfindCE.o $(SYSdir)/time.o \
                   $(GMMdir)/ATL_dFindCE_mm.o $(ATLASlib) $(LIBS)
	
cmmlib:
	cd $(GMMdir) ; make clib

cstandard : force_build
	$(MAKE) cready $(cATLres)
	$(MAKE) cinstall


$(GMMdir)/ATL_cFindCE_mm.o : 
	cd $(GMMdir) ; $(MAKE) ATL_cFindCE_mm.o pre=c typ=SCPLX

cfindCE.o : ../findCE.c
	$(CC) $(CCFLAGS) $(OJ) -DSCPLX $(NM) $@ ../findCE.c


xcfindCE : $(INCdir)/atlas_type.h $(L3INCdep) cmmlib \
                $(GMMdir)/ATL_cFindCE_mm.o cfindCE.o $(SYSdir)/time.o
	$(CLINKER) $(CLINKFLAGS) $(NM) $@ cfindCE.o $(SYSdir)/time.o \
                   $(GMMdir)/ATL_cFindCE_mm.o $(ATLASlib) $(LIBS)
	
zmmlib:
	cd $(GMMdir) ; make zlib

zstandard : force_build
	$(MAKE) zready $(zATLres)
	$(MAKE) zinstall


$(GMMdir)/ATL_zFindCE_mm.o : 
	cd $(GMMdir) ; $(MAKE) ATL_zFindCE_mm.o pre=z typ=DCPLX

zfindCE.o : ../findCE.c
	$(CC) $(CCFLAGS) $(OJ) -DDCPLX $(NM) $@ ../findCE.c


xzfindCE : $(INCdir)/atlas_type.h $(L3INCdep) zmmlib \
                $(GMMdir)/ATL_zFindCE_mm.o zfindCE.o $(SYSdir)/time.o
	$(CLINKER) $(CLINKFLAGS) $(NM) $@ zfindCE.o $(SYSdir)/time.o \
                   $(GMMdir)/ATL_zFindCE_mm.o $(ATLASlib) $(LIBS)
	


x$(pre)tfc : $(INCdir)/atlas_type.h $(L3INCdep) \
             $(pre)tfc.o $(pre)mmlib $(SYSdir)/time.o
	$(CLINKER) $(CLINKFLAGS) $(NM) $@ $(pre)tfc.o $(SYSdir)/time.o \
              $(GMMdir)/ATL_$(pre)big_mm.o $(GMMdir)/ATL_$(pre)small_mm.o \
              $(ATLASlib) $(LIBS)

fbob : $(SYSdir)/time.o xemit_fmm $(INCdir)/atlas_type.h \
       $(INCdir)/atlas_$(pre)fc.h
	rm -f fc.o mm.o mm.c
	./xemit_fmm $(pre) F $(lat) $(nb) $(mu) $(nu) $(ku) > mm.f
	$(CC) $(CCFLAGS) -D$(pre)REAL -DNB=$(nb) -DKU=$(ku) -DNU=$(nu) \
              -DMU=$(mu) -DLAT=$(lat) $(OJ) -DLangF77 -DNBmm=$(pre)f77nbmm_ ../fc.c
	$(F77) $(F77FLAGS) $(OJ) mm.f
	$(CLINKER) $(CLINKFLAGS) $(NM) xfc fc.o mm.o $(SYSdir)/time.o
	$(ATLRUN) $(MMTdir) xfc

bob2 : $(SYSdir)/time.o $(INCdir)/atlas_type.h $(INCdir)/atlas_$(pre)fc.h
	rm -f fc.o NBmm.o
	$(CC) $(CCFLAGS) -D$(pre)REAL -DNB=$(nb) -DKU=$(ku) -DNU=$(nu) \
              -DMU=$(mu) -DLAT=$(lat) $(OJ) -DNBmm=ATL_$(pre)NBmm ../fc.c
	$(MCC) $(MMFLAGS) $(OJ) NBmm.c
	$(CLINKER) $(CLINKFLAGS) $(NM) xfc fc.o NBmm.o $(SYSdir)/time.o
	$(ATLRUN) $(MMTdir) xfc
mbob : $(SYSdir)/time.o xemit_mm $(INCdir)/atlas_type.h \
       $(INCdir)/atlas_$(pre)fc.h
	rm -f fc.o mm.o mm.c
	./xemit_mm -p $(pre) -M $(muladd) -m $(mu) -n $(nu) -k $(ku) -l $(lat) \
                    -b $(beta) > mm.c
	$(CC) $(CCFLAGS) -D$(pre)REAL -DNB=$(nb) -DKU=$(ku) -DNU=$(nu) \
              -DMU=$(mu) -DLAT=$(lat) -DMULADD=$(muladd) \
              -DNBmm=ATL_$(pre)smmNN -DLDC=$(ldc) -DBETA=$(beta) \
              -DFULLMM $(OJ) ../fc.c
	$(MCC) $(MMFLAGS) $(OJ) mm.c
	$(CLINKER) $(CLINKFLAGS) $(NM) xfc fc.o mm.o $(SYSdir)/time.o
	$(ATLRUN) $(MMTdir) xfc

rbob : $(SYSdir)/time.o xemit_reg $(INCdir)/atlas_type.h \
       $(INCdir)/atlas_$(pre)fc.h
	rm -f fc.o $(pre)mm.o $(pre)mm.c
	./xemit_reg x $(pre) $(muladd) $(mmrout) $(mb) $(nb) $(kb) $(if) $(nf) \
                    $(mu) $(nu) $(ku) $(lat) $(beta) > $(pre)mm.c
	$(CC) $(CCFLAGS) -D$(pre)REAL -DMB=$(mb) -DNB=$(nb) -DKB=$(kb) \
              -DKU=$(ku) -DNU=$(nu) -DMU=$(mu) -DLAT=$(lat) -DMULADD=$(muladd) \
              -DNBmm=ATL_$(pre)$(mmrout) -DLDC=$(ldc) -DBETA=$(beta) $(moves) \
              $(NM) $(pre)fc.o $(OJ) ../fc.c
	$(MCC) $(MMFLAGS) $(OJ) $(pre)mm.c
	$(CLINKER) $(CLINKFLAGS) $(NM) x$(pre)fc $(pre)fc.o $(pre)mm.o \
                                    $(SYSdir)/time.o
	$(ATLRUN) $(MMTdir) x$(pre)fc


mmcugen  : xemit_mm
	rm -f CLEANUP/$(pre)Makefile CLEANUP/ATL_$(pre)pKB*.c
	./xemit_mm -p $(pre) -ta $(ta) -tb $(tb) -muladd $(muladd) -l $(lat) \
        -L $(loopO) -M $(mb) -N $(nb) -K $(kb) -m $(mu) -n $(nu) -k $(ku0) \
        -lda $(lda) -ldb $(ldb) -ldc $(ldc) -csA $(csA) -csB $(csB) -csC $(csC)\
        -F0 $(if) -FN $(nf) -b $(beta) -a $(alpha) -Z 1 -C $(cleanup) -R -3
	
mmcase0: $(SYSdir)/time.o $(INCdir)/atlas_type.h \
       $(INCdir)/atlas_$(pre)fc.h
	rm -f $(pre)fc.o $(pre)mm.o
	$(CC) $(CCFLAGS) -D$(pre)REAL -DtranA$(ta) -DtranB$(tb) \
              -DMULADD=$(muladd) -DLAT=$(lat) -D$(loopO) \
              -DMB=$(M) -DNB=$(N) -DKB=$(K) \
              -DMB0=$(mb) -DNB0=$(nb) -DKB0=$(kb) \
              -DKU=$(ku) -DNU=$(nu) -DMU=$(mu) \
              -DLDA=$(lda) -DLDB=$(ldb) -DLDC=$(ldc) \
              -DcsA=$(csA) -DcsB=$(csB) -DcsC=$(csC) \
              -DALPHA=$(alpha) -DBETA=$(beta) $(moves) \
              -DCLEANUP=$(cleanup) \
              $(NM) $(pre)fc.o $(OJ) ../fc.c
	$(MCC) $(MMFLAGS) $(OJ) $(pre)mm.c 
	$(CLINKER) $(CLINKFLAGS) $(NM) x$(pre)fc $(pre)fc.o $(pre)mm.o \
                                    $(SYSdir)/time.o
	$(ATLRUN) $(MMTdir) x$(pre)fc $(casnam)

casarg = pre=$(pre) ta=$(ta) tb=$(tb) muladd=$(muladd) lat=$(lat) \
         loopO=$(loopO) M=$(M) N=$(N) K=$(K) mb=$(mb) nb=$(nb) kb=$(kb) \
         mu=$(mu) nu=$(nu) ku=$(ku) lda=$(lda) ldb=$(ldb) ldc=$(ldc) \
         csA=$(csA) csB=$(csB) csC=$(csC) alpha=$(alpha) beta=$(beta) \
         moves="$(moves)" cleanup=$(cleanup)

mmucase : xemit_mm
	rm -f $(pre)mm.c
	./xemit_mm -p $(pre) -ta $(ta) -tb $(tb) -muladd $(muladd) -l $(lat) \
        -L $(loopO) -M $(mb) -N $(nb) -K $(kb) -m $(mu) -n $(nu) -k $(ku) \
        -lda $(lda) -ldb $(ldb) -ldc $(ldc) -csA $(csA) -csB $(csB) -csC $(csC)\
        -F0 $(if) -FN $(nf) -FF $(ff) -b $(beta) -a $(alpha) -Z 1 -C $(cleanup)\
        -R -3            > $(pre)mm.c
	cat $(mmrout) >> $(pre)mm.c
	$(MAKE) mmcase0 $(casarg) casnam=$(casnam)

BuildCobjs: xemit_mm
	rm -f $(pre)mm_b[1,0,X].[o,c]
	./xemit_mm -p $(pre) -b 0 -M $(mb) -N $(nb) -K $(kb) -R -3 \
                   > $(pre)mm_b0.c
	cat $(mmrout) >> $(pre)mm_b0.c
	./xemit_mm -p $(pre) -b 1 -M $(mb) -N $(nb) -K $(kb) -R -3 \
                   > $(pre)mm_b1.c
	cat $(mmrout) >> $(pre)mm_b1.c
	./xemit_mm -p $(pre) -b 8 -M $(mb) -N $(nb) -K $(kb) -R -3 \
                   > $(pre)mm_bX.c
	cat $(mmrout) >> $(pre)mm_bX.c
	$(MCC) $(MMFLAGS) $(OJ) $(pre)mm_b1.c 
	$(MCC) $(MMFLAGS) $(OJ) $(pre)mm_b0.c 
	$(MCC) $(MMFLAGS) $(OJ) $(pre)mm_bX.c 
	
cmmucase : xemit_mm $(SYSdir)/time.o $(INCdir)/atlas_type.h \
           $(INCdir)/atlas_$(pre)fc.h
	rm -f $(pre)fc.o 
	$(MAKE) BuildCobjs pre=$(pre) mb=$(mb) nb=$(nb) kb=$(kb)
	$(CC) $(CCFLAGS) -D$(pre)REAL -DtranA$(ta) -DtranB$(tb) \
              -DMULADD=$(muladd) -DLAT=$(lat) -D$(loopO) \
              -DMB=$(M) -DNB=$(N) -DKB=$(K) \
              -DMB0=$(mb) -DNB0=$(nb) -DKB0=$(kb) \
              -DKU=$(ku) -DNU=$(nu) -DMU=$(mu) \
              -DLDA=$(lda) -DLDB=$(ldb) -DLDC=$(ldc) \
              -DcsA=$(csA) -DcsB=$(csB) -DcsC=$(csC) \
              -DALPHA=$(alpha) -DBETA=$(beta) $(moves) \
              -DCLEANUP=$(cleanup) \
              $(NM) $(pre)fc.o $(OJ) ../fc.c
	$(CLINKER) $(CLINKFLAGS) $(NM) x$(pre)fc $(pre)fc.o $(pre)mm_b0.o \
                   $(pre)mm_b1.o $(pre)mm_bX.o $(SYSdir)/time.o
	$(ATLRUN) $(MMTdir) x$(pre)fc $(casnam)

ummcase:
	$(MAKE) mmucase $(casarg) casnam=res/ignore
	
mmutstcase:
	rm -f $(pre)mm.c $(pre)mm.[o,c]
	./xemit_mm -p $(pre) -b $(beta) -M $(mb) -N $(nb) -K $(kb) -R -3 \
                   > $(pre)mm.c
	cat $(mmrout) >> $(pre)mm.c
	$(MCC) $(MMFLAGS) $(OJ) $(pre)mm.c
	$(MAKE) mmtstcase0 $(casarg) mmobjs=$(pre)mm.o

cmmutstcase:
	rm -f $(pre)mm.c
	$(MAKE) BuildCobjs pre=$(pre) mb=$(mb) nb=$(nb) kb=$(kb) \
                mmrout=$(mmrout)
	$(MAKE) mmtstcase0 $(casarg) csC=2 \
                mmobjs="$(pre)mm_b0.o $(pre)mm_b1.o $(pre)mm_bX.o"

mmcase : xemit_mm
	rm -f $(pre)mm.c
	./xemit_mm -p $(pre) -ta $(ta) -tb $(tb) -muladd $(muladd) -l $(lat) \
        -L $(loopO) -M $(mb) -N $(nb) -K $(kb) -m $(mu) -n $(nu) -k $(ku) \
        -lda $(lda) -ldb $(ldb) -ldc $(ldc) -csA $(csA) -csB $(csB) -csC $(csC)\
        -F0 $(if) -FN $(nf) -FF $(ff) -b $(beta) -a $(alpha) -Z 1 -C $(cleanup)\
                    > $(pre)mm.c
	$(MAKE) mmcase0 $(casarg) casnam=$(casnam)

mmtstcase : xemit_mm $(INCdir)/atlas_type.h
	rm -f $(pre)mm.c
	./xemit_mm -p $(pre) -ta $(ta) -tb $(tb) -muladd $(muladd) -l $(lat) \
        -L $(loopO) -M $(mb) -N $(nb) -K $(kb) -m $(mu) -n $(nu) -k $(ku) \
        -lda $(lda) -ldb $(ldb) -ldc $(ldc) -csA $(csA) -csB $(csB) -csC $(csC)\
        -F0 $(if) -FN $(nf) -FF $(ff) -b $(beta) -a $(alpha) -Z 1 -C $(cleanup)\
                    > $(pre)mm.c
	$(MCC) $(MMFLAGS) $(OJ) $(pre)mm.c
	$(MAKE) mmtstcase0 $(casarg) mmobjs=$(pre)mm.o

mmtstcase0: $(SYSdir)/time.o $(INCdir)/atlas_type.h
	rm -f $(pre)mmtst.o
	$(CC) $(CCFLAGS) -D$(pre)REAL -DtranA$(ta) -DtranB$(tb) \
              -DMULADD=$(muladd) -DLAT=$(lat) -D$(loopO) \
              -DMB0=$(mb) -DNB0=$(nb) -DKB0=$(kb) \
              -DMB=$(M) -DNB=$(N) -DKB=$(K) \
              -DKU=$(ku) -DNU=$(nu) -DMU=$(mu) \
              -DLDA=$(lda) -DLDB=$(ldb) -DLDC=$(ldc) \
              -DcsA=$(csA) -DcsB=$(csB) -DcsC=$(csC) \
              -DALPHA=$(alpha) -DBETA=$(beta) $(moves) \
              -DCLEANUP=$(cleanup) \
              $(NM) $(pre)mmtst.o $(OJ) ../mmtst.c
	$(CLINKER) $(CLINKFLAGS) $(NM) x$(pre)mmtst $(pre)mmtst.o $(mmobjs)
	$(ATLRUN) $(MMTdir) x$(pre)mmtst

NCemit : xemit_mm
	rm -f $(mmnam)
	./xemit_mm -p $(pre) -ta $(ta) -tb $(tb) -muladd $(muladd) -l $(lat) \
        -L $(loopO) -M $(mb) -N $(nb) -K $(kb) -m $(mu) -n $(nu) -k $(ku) \
        -lda $(lda) -ldb $(ldb) -ldc $(ldc) -csA $(csA) -csB $(csB) -csC $(csC)\
        -F0 $(if) -FN $(nf) -b $(beta) -a $(alpha) -Z 0 -C $(cleanup) \
                    > $(mmnam)
NCready :  xemit_mm $(INCdir)/atlas_type.h
	rm -f atlas_$(pre)NCmm.h
	./xemit_mm -p $(pre) -N $(nb) -R -2 > atlas_$(pre)NCmm.h
	$(MAKE) NCemit `head -n 1 res/$(pre)bestNN_$(nb)x$(nb)x$(nb)` \
                       alpha=1 beta=0 \
                       mmnam=ATL_$(pre)NCmmNN_a1_b0.c
	$(MAKE) NCemit `head -n 1 res/$(pre)bestNN_$(nb)x$(nb)x$(nb)` \
                       alpha=1 beta=1 \
                       mmnam=ATL_$(pre)NCmmNN_a1_b1.c
	$(MAKE) NCemit `head -n 1 res/$(pre)bestNN_$(nb)x$(nb)x$(nb)` \
                       alpha=1 beta=12 \
                       mmnam=ATL_$(pre)NCmmNN_a1_bX.c
	$(MAKE) NCemit `head -n 1 res/$(pre)bestNN_$(nb)x$(nb)x$(nb)` \
                       alpha=3 beta=0 \
                       mmnam=ATL_$(pre)NCmmNN_aX_b0.c
	$(MAKE) NCemit `head -n 1 res/$(pre)bestNN_$(nb)x$(nb)x$(nb)` \
                       alpha=3 beta=12 \
                       mmnam=ATL_$(pre)NCmmNN_aX_bX.c
	$(MAKE) NCemit `head -n 1 res/$(pre)bestNN_0x0x$(nb)` \
                       alpha=12 beta=12 mmnam=ATL_$(pre)NCCUmmNN_K.c
	$(MAKE) NCemit `head -n 1 res/$(pre)bestNN_0x0x0` \
                       alpha=12 beta=12 mmnam=ATL_$(pre)NCCUmmNN.c
	$(MAKE) NCemit `head -n 1 res/$(pre)bestNT_$(nb)x$(nb)x$(nb)` \
                       alpha=1 beta=0 \
                       mmnam=ATL_$(pre)NCmmNT_a1_b0.c
	$(MAKE) NCemit `head -n 1 res/$(pre)bestNT_$(nb)x$(nb)x$(nb)` \
                       alpha=1 beta=1 \
                       mmnam=ATL_$(pre)NCmmNT_a1_b1.c
	$(MAKE) NCemit `head -n 1 res/$(pre)bestNT_$(nb)x$(nb)x$(nb)` \
                       alpha=1 beta=12 \
                       mmnam=ATL_$(pre)NCmmNT_a1_bX.c
	$(MAKE) NCemit `head -n 1 res/$(pre)bestNT_$(nb)x$(nb)x$(nb)` \
                       alpha=3 beta=0 \
                       mmnam=ATL_$(pre)NCmmNT_aX_b0.c
	$(MAKE) NCemit `head -n 1 res/$(pre)bestNT_$(nb)x$(nb)x$(nb)` \
                       alpha=3 beta=12 \
                       mmnam=ATL_$(pre)NCmmNT_aX_bX.c
	$(MAKE) NCemit `head -n 1 res/$(pre)bestNT_0x0x$(nb)` \
                       alpha=12 beta=12 mmnam=ATL_$(pre)NCCUmmNT_K.c
	$(MAKE) NCemit `head -n 1 res/$(pre)bestNT_0x0x0` \
                       alpha=12 beta=12 mmnam=ATL_$(pre)NCCUmmNT.c
	$(MAKE) NCemit `head -n 1 res/$(pre)bestTN_$(nb)x$(nb)x$(nb)` \
                       alpha=1 beta=0 \
                       mmnam=ATL_$(pre)NCmmTN_a1_b0.c
	$(MAKE) NCemit `head -n 1 res/$(pre)bestTN_$(nb)x$(nb)x$(nb)` \
                       alpha=1 beta=1 \
                       mmnam=ATL_$(pre)NCmmTN_a1_b1.c
	$(MAKE) NCemit `head -n 1 res/$(pre)bestTN_$(nb)x$(nb)x$(nb)` \
                       alpha=1 beta=12 \
                       mmnam=ATL_$(pre)NCmmTN_a1_bX.c
	$(MAKE) NCemit `head -n 1 res/$(pre)bestTN_$(nb)x$(nb)x$(nb)` \
                       alpha=3 beta=0 \
                       mmnam=ATL_$(pre)NCmmTN_aX_b0.c
	$(MAKE) NCemit `head -n 1 res/$(pre)bestTN_$(nb)x$(nb)x$(nb)` \
                       alpha=3 beta=12 \
                       mmnam=ATL_$(pre)NCmmTN_aX_bX.c
	$(MAKE) NCemit `head -n 1 res/$(pre)bestTN_0x0x$(nb)` \
                       alpha=12 beta=12 mmnam=ATL_$(pre)NCCUmmTN_K.c
	$(MAKE) NCemit `head -n 1 res/$(pre)bestTN_0x0x0` \
                       alpha=12 beta=12 mmnam=ATL_$(pre)NCCUmmTN.c
	$(MAKE) NCemit `head -n 1 res/$(pre)bestTT_$(nb)x$(nb)x$(nb)` \
                       alpha=1 beta=0 \
                       mmnam=ATL_$(pre)NCmmTT_a1_b0.c
	$(MAKE) NCemit `head -n 1 res/$(pre)bestTT_$(nb)x$(nb)x$(nb)` \
                       alpha=1 beta=1 \
                       mmnam=ATL_$(pre)NCmmTT_a1_b1.c
	$(MAKE) NCemit `head -n 1 res/$(pre)bestTT_$(nb)x$(nb)x$(nb)` \
                       alpha=1 beta=12 \
                       mmnam=ATL_$(pre)NCmmTT_a1_bX.c
	$(MAKE) NCemit `head -n 1 res/$(pre)bestTT_$(nb)x$(nb)x$(nb)` \
                       alpha=3 beta=0 \
                       mmnam=ATL_$(pre)NCmmTT_aX_b0.c
	$(MAKE) NCemit `head -n 1 res/$(pre)bestTT_$(nb)x$(nb)x$(nb)` \
                       alpha=3 beta=12 \
                       mmnam=ATL_$(pre)NCmmTT_aX_bX.c
	$(MAKE) NCemit `head -n 1 res/$(pre)bestTT_0x0x$(nb)` \
                       alpha=12 beta=12 mmnam=ATL_$(pre)NCCUmmTT_K.c
	$(MAKE) NCemit `head -n 1 res/$(pre)bestTT_0x0x0` \
                       alpha=12 beta=12 mmnam=ATL_$(pre)NCCUmmTT.c


force_build :

install :
	$(MAKE) $(pre)install
dNCinstall :
	$(MAKE) NCinstall pre=d
sNCinstall :
	$(MAKE) NCinstall pre=s
zNCinstall :
	$(MAKE) NCinstall pre=z
cNCinstall :
	$(MAKE) NCinstall pre=c

NCinstall:
	mv -f atlas_$(pre)NCmm.h $(INCdir)/.
	mv -f ATL_$(pre)NCmm[T,N][T,N]_a[1,X]_b[0,1,X].c \
              ATL_$(pre)NCCUmm[T,N][T,N].c ATL_$(pre)NCCUmm[T,N][T,N]_K.c \
              $(GMMdir)/.
GetSysSum.o : ../GetSysSum.c
	$(CC) $(OJ) $(CCFLAGS) ../GetSysSum.c

emit_mm.o : ../emit_mm.c
	$(XCC) $(OJ) $(XCCFLAGS) ../emit_mm.c

emit_reg.o : ../emit_reg.c
	$(XCC) $(OJ) $(XCCFLAGS) ../emit_reg.c

emit_cmm.o : ../emit_cmm.c
	$(XCC) $(OJ) $(XCCFLAGS) ../emit_cmm.c

emit_fmm.o : ../emit_fmm.c
	$(XCC) $(OJ) $(XCCFLAGS) ../emit_fmm.c

mmsearch.o : ../mmsearch.c
	$(XCC) $(OJ) $(XCCFLAGS) ../mmsearch.c

hcsearch.o : $(L3INCdep) ../hcsearch.c
	$(XCC) $(OJ) $(XCCFLAGS) ../hcsearch.c

gemmtst.o : ../gemmtst.c $(INCdir)../atlas_misc.h $(INCdir)../atlas_lvl3.h \
            $(INCdir)/../atlas_tst.h $(INCdir)/../cblas.h
	$(CC) $(OJ) $(CCFLAGS) ../gemmtst.c

clean :
	rm -f *.o *.grd

$(pre)tfc.o : ../tfc.c $(INCdir)/../atlas_misc.h $(INCdir)/$(pre)mm.h \
              $(INCdir)/atlas_$(pre)fc.h
	$(CC) $(NM) $@ $(OJ) $(CCFLAGS) -D$(typ) ../tfc.c \
                 -DSM_FOUT=$(INCdir)/$(pre)Xover.h