# Assembler command lines
#
# Uasm is a MASM-compatible assembler that is supported much better than MASM.
# It can be downloaded at http://www.terraspace.co.uk/uasm.html
#
# objconv comes courtesy of Agner Fog.  Download available at
# http://www.agner.org/optimize/#objconv

#### -EP can be useful instead of a listing
masm64=uasm64 /c /DX86_64 /DWINDOWS64 -win64 -safeseh
#masm64=uasm64 /c /DX86_64 /DWINDOWS64 /Fl /Sf /Sa -win64 -safeseh
#masm64=ml64 /c /DX86_64 /DWINDOWS64
#masm64=ml64 /c /DX86_64 /DWINDOWS64 /Fl /Sf /Sa
masm64lx=uasm64 /c /DX86_64 /DLINUX64 -win64 -safeseh
#masm64lx=uasm64 /c /DX86_64 /DLINUX64 /Fl /Sf /Sa -win64 -safeseh
#masm64lx=ml64 /c /DX86_64 /DLINUX64
objconv=c:\objconv\objconv

# Use the 64-bit C compiler

cl64=cl /GF /W3 /MT /DX86_64 /D_CRT_SECURE_NO_DEPRECATE /O2 /c
cl64o1=cl /GF /W3 /MT /DX86_64 /D_CRT_SECURE_NO_DEPRECATE /O1 /c
cl64d=cl /GF /W3 /MTd /DX86_64 /D_CRT_SECURE_NO_DEPRECATE /DGDEBUG /Z7 /c
cl64do=cl /GF /W3 /MTd /DX86_64 /D_CRT_SECURE_NO_DEPRECATE /DGDEBUG /Z7 /O2 /c

# List of all buildables in this makefile

all:	gwnum64.lib gwnum64d.lib polymult64.lib polymult64d.lib linux64\gwnum.a macosx64\gwnum.a
#all:	linux64\gwnum.a

# Make libraries out of the object files
# Recently removed (empty) object files
#	     amd64\r4delay_core.obj amd64\r4delay_p4.obj amd64\r4delay_k8.obj amd64\r4delay_k10.obj \
#	     amd64\r4delay3_core.obj amd64\r4delay3_p4.obj amd64\r4delay3_k8.obj amd64\r4delay3_k10.obj \
#	     amd64\r4delay5_core.obj amd64\r4delay5_p4.obj amd64\r4delay5_k8.obj amd64\r4delay5_k10.obj \

gwnum64.lib: amd64\release\cpuid.obj amd64\release\gwnum.obj amd64\release\gwtables.obj amd64\release\gwthread.obj \
	     amd64\release\gwini.obj amd64\release\gwbench.obj amd64\release\gwutil.obj amd64\release\gwdbldbl.obj \
	     amd64\release\giants.obj amd64\release\radix.obj amd64\xmult1ax.obj amd64\xmult2.obj amd64\xmult2a_core.obj \
	     amd64\xmult2a_k8.obj amd64\xmult2ax.obj amd64\xmult3.obj amd64\xmult3a_core.obj amd64\xmult3a_k8.obj amd64\xmult3ax.obj \
	     amd64\hg_blend.obj amd64\hg_core.obj amd64\hg_p4.obj amd64\hg_k8.obj amd64\hg_k10.obj \
	     amd64\r4_core.obj amd64\r4_p4.obj amd64\r4_k8.obj amd64\r4_k10.obj \
	     amd64\r4dwpn_core.obj amd64\r4dwpn_p4.obj amd64\r4dwpn_k8.obj amd64\r4dwpn_k10.obj \
	     amd64\r4dwpn3_core.obj amd64\r4dwpn3_p4.obj amd64\r4dwpn3_k8.obj amd64\r4dwpn3_k10.obj \
	     amd64\r4dwpn5_core.obj amd64\r4dwpn5_p4.obj amd64\r4dwpn5_k8.obj amd64\r4dwpn5_k10.obj \
	     amd64\ymult1ax_core.obj amd64\ymult1ax_fma3.obj amd64\yr4_core.obj amd64\yr4_fma3.obj \
	     amd64\ymult3.obj amd64\ymult3a_core.obj amd64\ymult3a_fma3.obj amd64\ymult3ax.obj \
	     amd64\yr4dwpn_core.obj amd64\yr4dwpn3_core.obj amd64\yr4dwpn4_core.obj amd64\yr4dwpn5_core.obj \
	     amd64\yr4dwpn_fma3.obj amd64\yr4dwpn3_fma3.obj amd64\yr4dwpn4_fma3.obj amd64\yr4dwpn5_fma3.obj \
	     amd64\zmult1ax_skx.obj amd64\zr4_skx.obj \
	     amd64\zmult3.obj amd64\zmult3a_skx.obj amd64\zmult3ax.obj amd64\zr4dwpn_skx.obj amd64\zr4dwpn2_skx.obj \
	     amd64\cpuidhlp.obj amd64\hyperhlp.obj amd64\mult.obj amd64\gianthlp.obj amd64\timeit.obj
    del gwnum64.lib
    lib /OUT:gwnum64.lib amd64\release\*.obj amd64\*.obj

gwnum64d.lib: amd64\debug\cpuid.obj amd64\debug\gwnum.obj amd64\debug\gwtables.obj amd64\debug\gwthread.obj \
	      amd64\debug\gwini.obj amd64\debug\gwbench.obj amd64\debug\gwutil.obj amd64\debug\gwdbldbl.obj \
	      amd64\debug\giants.obj amd64\debug\radix.obj amd64\xmult1ax.obj amd64\xmult2.obj amd64\xmult2a_core.obj \
	      amd64\xmult2a_k8.obj amd64\xmult2ax.obj amd64\xmult3.obj amd64\xmult3a_core.obj amd64\xmult3a_k8.obj amd64\xmult3ax.obj \
	      amd64\hg_blend.obj amd64\hg_core.obj amd64\hg_p4.obj amd64\hg_k8.obj amd64\hg_k10.obj \
	      amd64\r4_core.obj amd64\r4_p4.obj amd64\r4_k8.obj amd64\r4_k10.obj \
	      amd64\r4dwpn_core.obj amd64\r4dwpn_p4.obj amd64\r4dwpn_k8.obj amd64\r4dwpn_k10.obj \
	      amd64\r4dwpn3_core.obj amd64\r4dwpn3_p4.obj amd64\r4dwpn3_k8.obj amd64\r4dwpn3_k10.obj \
	      amd64\r4dwpn5_core.obj amd64\r4dwpn5_p4.obj amd64\r4dwpn5_k8.obj amd64\r4dwpn5_k10.obj \
	      amd64\ymult1ax_core.obj amd64\ymult1ax_fma3.obj amd64\yr4_core.obj amd64\yr4_fma3.obj \
	      amd64\ymult3.obj amd64\ymult3a_core.obj amd64\ymult3a_fma3.obj amd64\ymult3ax.obj \
	      amd64\yr4dwpn_core.obj amd64\yr4dwpn3_core.obj amd64\yr4dwpn4_core.obj amd64\yr4dwpn5_core.obj \
	      amd64\yr4dwpn_fma3.obj amd64\yr4dwpn3_fma3.obj amd64\yr4dwpn4_fma3.obj amd64\yr4dwpn5_fma3.obj \
	      amd64\zmult1ax_skx.obj amd64\zr4_skx.obj \
	      amd64\zmult3.obj amd64\zmult3a_skx.obj amd64\zmult3ax.obj amd64\zr4dwpn_skx.obj amd64\zr4dwpn2_skx.obj \
	      amd64\cpuidhlp.obj amd64\hyperhlp.obj amd64\mult.obj amd64\gianthlp.obj amd64\timeit.obj
    del gwnum64d.lib
    lib /OUT:gwnum64d.lib amd64\debug\*.obj amd64\*.obj

polymult64.lib: amd64\release\polymult\polymult.obj amd64\release\polymult\polymult_sse2.obj amd64\release\polymult\polymult_avx.obj \
		amd64\release\polymult\polymult_fma.obj amd64\release\polymult\polymult_avx512.obj
    del polymult64.lib
    lib /OUT:polymult64.lib amd64\release\polymult\*.obj

polymult64d.lib: amd64\debug\polymult\polymult.obj amd64\debug\polymult\polymult_sse2.obj amd64\debug\polymult\polymult_avx.obj \
		 amd64\debug\polymult\polymult_fma.obj amd64\debug\polymult\polymult_avx512.obj
    del polymult64d.lib
    lib /OUT:polymult64d.lib amd64\debug\polymult\*.obj

linux64\gwnum.a: linux64\xmult1ax.obj linux64\xmult2.obj linux64\xmult2a_core.obj linux64\xmult2a_k8.obj linux64\xmult2ax.obj \
		 linux64\xmult3.obj linux64\xmult3a_core.obj linux64\xmult3a_k8.obj linux64\xmult3ax.obj \
		 linux64\hg_blend.obj linux64\hg_core.obj linux64\hg_p4.obj linux64\hg_k8.obj linux64\hg_k10.obj \
		 linux64\r4_core.obj linux64\r4_p4.obj linux64\r4_k8.obj linux64\r4_k10.obj \
		 linux64\r4delay_core.obj linux64\r4delay_p4.obj linux64\r4delay_k8.obj linux64\r4delay_k10.obj \
		 linux64\r4delay3_core.obj linux64\r4delay3_p4.obj linux64\r4delay3_k8.obj linux64\r4delay3_k10.obj \
		 linux64\r4delay5_core.obj linux64\r4delay5_p4.obj linux64\r4delay5_k8.obj linux64\r4delay5_k10.obj \
		 linux64\r4dwpn_core.obj linux64\r4dwpn_p4.obj linux64\r4dwpn_k8.obj linux64\r4dwpn_k10.obj \
		 linux64\r4dwpn3_core.obj linux64\r4dwpn3_p4.obj linux64\r4dwpn3_k8.obj linux64\r4dwpn3_k10.obj \
		 linux64\r4dwpn5_core.obj linux64\r4dwpn5_p4.obj linux64\r4dwpn5_k8.obj linux64\r4dwpn5_k10.obj \
		 linux64\ymult1ax_core.obj linux64\ymult1ax_fma3.obj linux64\yr4_core.obj linux64\yr4_fma3.obj \
		 linux64\ymult3.obj linux64\ymult3a_core.obj linux64\ymult3a_fma3.obj linux64\ymult3ax.obj \
		 linux64\yr4dwpn_core.obj linux64\yr4dwpn3_core.obj linux64\yr4dwpn4_core.obj linux64\yr4dwpn5_core.obj \
		 linux64\yr4dwpn_fma3.obj linux64\yr4dwpn3_fma3.obj linux64\yr4dwpn4_fma3.obj linux64\yr4dwpn5_fma3.obj \
		 linux64\zmult1ax_skx.obj linux64\zr4_skx.obj \
		 linux64\zmult3.obj linux64\zmult3a_skx.obj linux64\zmult3ax.obj linux64\zr4dwpn_skx.obj linux64\zr4dwpn2_skx.obj \
		 linux64\cpuidhlp.obj linux64\hyperhlp.obj linux64\mult.obj linux64\gianthlp.obj linux64\timeit.obj
    attrib -r linux64\gwnum.a
    del linux64\gwnum.a
    lib /OUT:linux64\gwnum.lib linux64\*.obj
    $(objconv) -felf64 linux64\gwnum.lib linux64\gwnum.a
    attrib -r linux64\gwnum.a
    del linux64\gwnum.lib

macosx64\gwnum.a: linux64\xmult1ax.obj linux64\xmult2.obj linux64\xmult2a_core.obj linux64\xmult2ax.obj \
		  linux64\xmult3.obj linux64\xmult3a_core.obj linux64\xmult3ax.obj \
		  linux64\hg_blend.obj linux64\hg_core.obj linux64\hg_p4.obj \
		  linux64\r4_core.obj linux64\r4_p4.obj \
		  linux64\r4delay_core.obj linux64\r4delay_p4.obj \
		  linux64\r4delay3_core.obj linux64\r4delay3_p4.obj \
		  linux64\r4delay5_core.obj linux64\r4delay5_p4.obj \
		  linux64\r4dwpn_core.obj linux64\r4dwpn_p4.obj \
		  linux64\r4dwpn3_core.obj linux64\r4dwpn3_p4.obj \
		  linux64\r4dwpn5_core.obj linux64\r4dwpn5_p4.obj \
		  linux64\ymult1ax_core.obj linux64\ymult1ax_fma3.obj linux64\yr4_core.obj linux64\yr4_fma3.obj \
		  linux64\ymult3.obj linux64\ymult3a_core.obj linux64\ymult3a_fma3.obj linux64\ymult3ax.obj \
		  linux64\yr4dwpn_core.obj linux64\yr4dwpn3_core.obj linux64\yr4dwpn4_core.obj linux64\yr4dwpn5_core.obj \
		  linux64\yr4dwpn_fma3.obj linux64\yr4dwpn3_fma3.obj linux64\yr4dwpn4_fma3.obj linux64\yr4dwpn5_fma3.obj \
		  linux64\zmult1ax_skx.obj linux64\zr4_skx.obj \
		  linux64\zmult3.obj linux64\zmult3a_skx.obj linux64\zmult3ax.obj linux64\zr4dwpn_skx.obj linux64\zr4dwpn2_skx.obj \
		  linux64\cpuidhlp.obj linux64\hyperhlp.obj macosx64\mult.obj linux64\gianthlp.obj linux64\timeit.obj
    attrib -r macosx64\gwnum.a
    del /q macosx64\foo
    del macosx64\gwnum.a
    del macosx64\gwnum.lib
    mkdir macosx64\foo
    copy macosx64\mult.obj macosx64\foo
    del macosx64\*.obj
    xcopy /q linux64\*.obj macosx64
    del macosx64\*_k8.obj
    del macosx64\*_k10.obj
    xcopy /y /q macosx64\foo macosx64
    lib /OUT:macosx64\gwnum.lib macosx64\*.obj
    $(objconv) -fmacho64 -wd1050 -nu+ macosx64\gwnum.lib macosx64\gwnum.a
    attrib -r macosx64\gwnum.a
    del macosx64\gwnum.lib
    del macosx64\*.obj
    xcopy /q macosx64\foo macosx64
    del /q macosx64\foo
    rmdir macosx64\foo

# Compile C code for 64-bit

amd64\release\cpuid.obj: cpuid.c cpuid.h
    $(cl64) /Foamd64\release\cpuid.obj cpuid.c

amd64\debug\cpuid.obj: cpuid.c cpuid.h
    $(cl64d) /Foamd64\debug\cpuid.obj cpuid.c

amd64\release\gwnum.obj: gwnum.c gwnum.h gwdbldbl.h
    $(cl64) /Foamd64\release\gwnum.obj gwnum.c

amd64\debug\gwnum.obj: gwnum.c gwnum.h gwdbldbl.h
    $(cl64d) /Foamd64\debug\gwnum.obj gwnum.c

amd64\release\gwtables.obj: gwtables.c gwnum.h
    $(cl64) /Foamd64\release\gwtables.obj gwtables.c

amd64\debug\gwtables.obj: gwtables.c gwnum.h
    $(cl64d) /Foamd64\debug\gwtables.obj gwtables.c

amd64\release\gwthread.obj: gwthread.cpp gwthread.h
    $(cl64) /Foamd64\release\gwthread.obj gwthread.cpp

amd64\debug\gwthread.obj: gwthread.cpp gwthread.h
    $(cl64do) /Foamd64\debug\gwthread.obj gwthread.cpp

amd64\release\gwini.obj: gwini.c gwini.h
    $(cl64) /Foamd64\release\gwini.obj gwini.c

amd64\debug\gwini.obj: gwini.c gwini.h
    $(cl64d) /Foamd64\debug\gwini.obj gwini.c

# Compiler problem with /O2.  SQL data does not commit properly.  That is, freshly added
# autobench data is not used when workers restart.  Prime95 must exit and restart for
# new benchmark data to be used in FFT implementation selection.
amd64\release\gwbench.obj: gwbench.c gwbench.h gwnum.h
    $(cl64o1) /I..\sqlite-amalgamation-3420000 /Foamd64\release\gwbench.obj gwbench.c

amd64\debug\gwbench.obj: gwbench.c gwbench.h gwnum.h
    $(cl64d) /I..\sqlite-amalgamation-3420000 /Foamd64\debug\gwbench.obj gwbench.c

amd64\release\gwutil.obj: gwutil.c gwutil.h
    $(cl64) /Foamd64\release\gwutil.obj gwutil.c

amd64\debug\gwutil.obj: gwutil.c gwutil.h
    $(cl64d) /Foamd64\debug\gwutil.obj gwutil.c

amd64\release\gwdbldbl.obj: gwdbldbl.cpp gwdbldbl.h
    $(cl64) /I..\qd /Foamd64\release\gwdbldbl.obj gwdbldbl.cpp

amd64\debug\gwdbldbl.obj: gwdbldbl.cpp gwdbldbl.h
    $(cl64do) /I..\qd /Foamd64\debug\gwdbldbl.obj gwdbldbl.cpp

amd64\release\giants.obj: giants.c giants.h
    $(cl64) /Foamd64\release\giants.obj giants.c

amd64\debug\giants.obj: giants.c giants.h
    $(cl64do) /Foamd64\debug\giants.obj giants.c

amd64\release\radix.obj: radix.c radix.h gwnum.h
    $(cl64) /Foamd64\release\radix.obj radix.c

amd64\debug\radix.obj: radix.c radix.h gwnum.h
    $(cl64d) /Foamd64\debug\radix.obj radix.c

amd64\release\polymult\polymult.obj: polymult.c polymult.h gwnum.h
    $(cl64) /Foamd64\release\polymult\polymult.obj polymult.c

amd64\debug\polymult\polymult.obj: polymult.c polymult.h gwnum.h
    $(cl64d) /Foamd64\debug\polymult\polymult.obj polymult.c

amd64\release\polymult\polymult_sse2.obj: polymult.c polymult.h gwnum.h
    $(cl64) /DSSE2 /Foamd64\release\polymult\polymult_sse2.obj polymult.c

amd64\debug\polymult\polymult_sse2.obj: polymult.c polymult.h gwnum.h
    $(cl64d) /DSSE2 /Foamd64\debug\polymult\polymult_sse2.obj polymult.c

amd64\release\polymult\polymult_avx.obj: polymult.c polymult.h gwnum.h
    $(cl64) /arch:AVX /DAVX /Foamd64\release\polymult\polymult_avx.obj polymult.c

amd64\debug\polymult\polymult_avx.obj: polymult.c polymult.h gwnum.h
    $(cl64d) /arch:AVX /DAVX /Foamd64\debug\polymult\polymult_avx.obj polymult.c

amd64\release\polymult\polymult_fma.obj: polymult.c polymult.h gwnum.h
    $(cl64) /arch:AVX2 /DFMA /Foamd64\release\polymult\polymult_fma.obj polymult.c

amd64\debug\polymult\polymult_fma.obj: polymult.c polymult.h gwnum.h
    $(cl64d) /arch:AVX2 /DFMA /Foamd64\debug\polymult\polymult_fma.obj polymult.c

amd64\release\polymult\polymult_avx512.obj: polymult.c polymult.h gwnum.h
    $(cl64) /arch:AVX512 /DAVX512 /Foamd64\release\polymult\polymult_avx512.obj polymult.c

amd64\debug\polymult\polymult_avx512.obj: polymult.c polymult.h gwnum.h
    $(cl64d) /arch:AVX512 /DAVX512 /Foamd64\debug\polymult\polymult_avx512.obj polymult.c

# Create 64-bit object files

amd64\xmult1ax.obj: xmult1ax.asm xmult.mac xnormal.mac
    $(masm64) /DARCH=BLEND /Foamd64\xmult1ax.obj xmult1ax.asm
    strip amd64\xmult1ax.obj

amd64\xmult2.obj: xmult2.asm xmult.mac xnormal.mac
    $(masm64) /DARCH=BLEND /Foamd64\xmult2.obj xmult2.asm
    strip amd64\xmult2.obj

amd64\xmult2a_core.obj: xmult2a.asm xmult.mac xnormal.mac
    $(masm64) /DARCH=CORE /Foamd64\xmult2a_core.obj xmult2a.asm
    strip amd64\xmult2a_core.obj

amd64\xmult2a_k8.obj: xmult2a.asm xmult.mac xnormal.mac
    $(masm64) /DARCH=K8 /Foamd64\xmult2a_k8.obj xmult2a.asm
    strip amd64\xmult2a_k8.obj

amd64\xmult2ax.obj: xmult2ax.asm xmult.mac xnormal.mac
    $(masm64) /DARCH=BLEND /Foamd64\xmult2ax.obj xmult2ax.asm
    strip amd64\xmult2ax.obj

amd64\xmult3.obj: xmult3.asm xmult.mac xnormal.mac
    $(masm64) /DARCH=BLEND /Foamd64\xmult3.obj xmult3.asm
    strip amd64\xmult3.obj

amd64\xmult3a_core.obj: xmult3a.asm xmult.mac xnormal.mac
    $(masm64) /DARCH=CORE /Foamd64\xmult3a_core.obj xmult3a.asm
    strip amd64\xmult3a_core.obj

amd64\xmult3a_k8.obj: xmult3a.asm xmult.mac xnormal.mac
    $(masm64) /DARCH=K8 /Foamd64\xmult3a_k8.obj xmult3a.asm
    strip amd64\xmult3a_k8.obj

amd64\xmult3ax.obj: xmult3ax.asm xmult.mac xnormal.mac
    $(masm64) /DARCH=BLEND /Foamd64\xmult3ax.obj xmult3ax.asm
    strip amd64\xmult3ax.obj

amd64\hg_blend.obj: hg.asm xmult.mac hg.mac hgpass1sc.mac hgpass2.mac
    $(masm64) /DARCH=BLEND /Foamd64\hg_blend.obj hg.asm
    strip amd64\hg_blend.obj

amd64\hg_core.obj: hg.asm xmult.mac hg.mac hgpass1sc.mac hgpass2.mac
    $(masm64) /DARCH=CORE /Foamd64\hg_core.obj hg.asm
    strip amd64\hg_core.obj

amd64\hg_p4.obj: hg.asm xmult.mac hg.mac hgpass1sc.mac hgpass2.mac
    $(masm64) /DARCH=P4 /Foamd64\hg_p4.obj hg.asm
    strip amd64\hg_p4.obj

amd64\hg_k8.obj: hg.asm xmult.mac hg.mac hgpass1sc.mac hgpass2.mac
    $(masm64) /DARCH=K8 /Foamd64\hg_k8.obj hg.asm
    strip amd64\hg_k8.obj

amd64\hg_k10.obj: hg.asm xmult.mac hg.mac hgpass1sc.mac hgpass2.mac
    $(masm64) /DARCH=K10 /Foamd64\hg_k10.obj hg.asm
    strip amd64\hg_k10.obj

amd64\r4_core.obj: r4.asm xmult.mac r4.mac r2.mac r3.mac r5.mac r8.mac r4pass1sc.mac r4pass2.mac
    $(masm64) /DARCH=CORE /Foamd64\r4_core.obj r4.asm
    strip amd64\r4_core.obj

amd64\r4_p4.obj: r4.asm xmult.mac r4.mac r2.mac r3.mac r5.mac r8.mac r4pass1sc.mac r4pass2.mac
    $(masm64) /DARCH=P4 /Foamd64\r4_p4.obj r4.asm
    strip amd64\r4_p4.obj

amd64\r4_k8.obj: r4.asm xmult.mac r4.mac r2.mac r3.mac r5.mac r8.mac r4pass1sc.mac r4pass2.mac
    $(masm64) /DARCH=K8 /Foamd64\r4_k8.obj r4.asm
    strip amd64\r4_k8.obj

amd64\r4_k10.obj: r4.asm xmult.mac r4.mac r2.mac r3.mac r5.mac r8.mac r4pass1sc.mac r4pass2.mac
    $(masm64) /DARCH=K10 /Foamd64\r4_k10.obj r4.asm
    strip amd64\r4_k10.obj

amd64\r4delay_core.obj: r4delay.asm xmult.mac r4.mac r2.mac r3.mac r5.mac r8.mac r4delaypass1sc.mac r4delaypass2.mac
    $(masm64) /DARCH=CORE /Foamd64\r4delay_core.obj r4delay.asm
    strip amd64\r4delay_core.obj

amd64\r4delay_p4.obj: r4delay.asm xmult.mac r4.mac r2.mac r3.mac r5.mac r8.mac r4delaypass1sc.mac r4delaypass2.mac
    $(masm64) /DARCH=P4 /Foamd64\r4delay_p4.obj r4delay.asm
    strip amd64\r4delay_p4.obj

amd64\r4delay_k8.obj: r4delay.asm xmult.mac r4.mac r2.mac r3.mac r5.mac r8.mac r4delaypass1sc.mac r4delaypass2.mac
    $(masm64) /DARCH=K8 /Foamd64\r4delay_k8.obj r4delay.asm
    strip amd64\r4delay_k8.obj

amd64\r4delay_k10.obj: r4delay.asm xmult.mac r4.mac r2.mac r3.mac r5.mac r8.mac r4delaypass1sc.mac r4delaypass2.mac
    $(masm64) /DARCH=K10 /Foamd64\r4delay_k10.obj r4delay.asm
    strip amd64\r4delay_k10.obj

amd64\r4delay3_core.obj: r4delay3.asm xmult.mac r4.mac r2.mac r3.mac r5.mac r8.mac r4delaypass1sc.mac r4delaypass2.mac
    $(masm64) /DARCH=CORE /Foamd64\r4delay3_core.obj r4delay3.asm
    strip amd64\r4delay3_core.obj

amd64\r4delay3_p4.obj: r4delay3.asm xmult.mac r4.mac r2.mac r3.mac r5.mac r8.mac r4delaypass1sc.mac r4delaypass2.mac
    $(masm64) /DARCH=P4 /Foamd64\r4delay3_p4.obj r4delay3.asm
    strip amd64\r4delay3_p4.obj

amd64\r4delay3_k8.obj: r4delay3.asm xmult.mac r4.mac r2.mac r3.mac r5.mac r8.mac r4delaypass1sc.mac r4delaypass2.mac
    $(masm64) /DARCH=K8 /Foamd64\r4delay3_k8.obj r4delay3.asm
    strip amd64\r4delay3_k8.obj

amd64\r4delay3_k10.obj: r4delay3.asm xmult.mac r4.mac r2.mac r3.mac r5.mac r8.mac r4delaypass1sc.mac r4delaypass2.mac
    $(masm64) /DARCH=K10 /Foamd64\r4delay3_k10.obj r4delay3.asm
    strip amd64\r4delay3_k10.obj

amd64\r4delay5_core.obj: r4delay5.asm xmult.mac r4.mac r2.mac r3.mac r5.mac r8.mac r4delaypass1sc.mac r4delaypass2.mac
    $(masm64) /DARCH=CORE /Foamd64\r4delay5_core.obj r4delay5.asm
    strip amd64\r4delay5_core.obj

amd64\r4delay5_p4.obj: r4delay5.asm xmult.mac r4.mac r2.mac r3.mac r5.mac r8.mac r4delaypass1sc.mac r4delaypass2.mac
    $(masm64) /DARCH=P4 /Foamd64\r4delay5_p4.obj r4delay5.asm
    strip amd64\r4delay5_p4.obj

amd64\r4delay5_k8.obj: r4delay5.asm xmult.mac r4.mac r2.mac r3.mac r5.mac r8.mac r4delaypass1sc.mac r4delaypass2.mac
    $(masm64) /DARCH=K8 /Foamd64\r4delay5_k8.obj r4delay5.asm
    strip amd64\r4delay5_k8.obj

amd64\r4delay5_k10.obj: r4delay5.asm xmult.mac r4.mac r2.mac r3.mac r5.mac r8.mac r4delaypass1sc.mac r4delaypass2.mac
    $(masm64) /DARCH=K10 /Foamd64\r4delay5_k10.obj r4delay5.asm
    strip amd64\r4delay5_k10.obj

amd64\r4dwpn_core.obj: r4dwpn.asm xmult.mac r4.mac r2.mac r3.mac r5.mac r8.mac r4dwpnpass1sc.mac r4dwpnpass2.mac
    $(masm64) /DARCH=CORE /Foamd64\r4dwpn_core.obj r4dwpn.asm
    strip amd64\r4dwpn_core.obj

amd64\r4dwpn_p4.obj: r4dwpn.asm xmult.mac r4.mac r2.mac r3.mac r5.mac r8.mac r4dwpnpass1sc.mac r4dwpnpass2.mac
    $(masm64) /DARCH=P4 /Foamd64\r4dwpn_p4.obj r4dwpn.asm
    strip amd64\r4dwpn_p4.obj

amd64\r4dwpn_k8.obj: r4dwpn.asm xmult.mac r4.mac r2.mac r3.mac r5.mac r8.mac r4dwpnpass1sc.mac r4dwpnpass2.mac
    $(masm64) /DARCH=K8 /Foamd64\r4dwpn_k8.obj r4dwpn.asm
    strip amd64\r4dwpn_k8.obj

amd64\r4dwpn_k10.obj: r4dwpn.asm xmult.mac r4.mac r2.mac r3.mac r5.mac r8.mac r4dwpnpass1sc.mac r4dwpnpass2.mac
    $(masm64) /DARCH=K10 /Foamd64\r4dwpn_k10.obj r4dwpn.asm
    strip amd64\r4dwpn_k10.obj

amd64\r4dwpn3_core.obj: r4dwpn3.asm xmult.mac r4.mac r2.mac r3.mac r5.mac r8.mac r4dwpnpass1sc.mac r4dwpnpass2.mac
    $(masm64) /DARCH=CORE /Foamd64\r4dwpn3_core.obj r4dwpn3.asm
    strip amd64\r4dwpn3_core.obj

amd64\r4dwpn3_p4.obj: r4dwpn3.asm xmult.mac r4.mac r2.mac r3.mac r5.mac r8.mac r4dwpnpass1sc.mac r4dwpnpass2.mac
    $(masm64) /DARCH=P4 /Foamd64\r4dwpn3_p4.obj r4dwpn3.asm
    strip amd64\r4dwpn3_p4.obj

amd64\r4dwpn3_k8.obj: r4dwpn3.asm xmult.mac r4.mac r2.mac r3.mac r5.mac r8.mac r4dwpnpass1sc.mac r4dwpnpass2.mac
    $(masm64) /DARCH=K8 /Foamd64\r4dwpn3_k8.obj r4dwpn3.asm
    strip amd64\r4dwpn3_k8.obj

amd64\r4dwpn3_k10.obj: r4dwpn3.asm xmult.mac r4.mac r2.mac r3.mac r5.mac r8.mac r4dwpnpass1sc.mac r4dwpnpass2.mac
    $(masm64) /DARCH=K10 /Foamd64\r4dwpn3_k10.obj r4dwpn3.asm
    strip amd64\r4dwpn3_k10.obj

amd64\r4dwpn5_core.obj: r4dwpn5.asm xmult.mac r4.mac r2.mac r3.mac r5.mac r8.mac r4dwpnpass1sc.mac r4dwpnpass2.mac
    $(masm64) /DARCH=CORE /Foamd64\r4dwpn5_core.obj r4dwpn5.asm
    strip amd64\r4dwpn5_core.obj

amd64\r4dwpn5_p4.obj: r4dwpn5.asm xmult.mac r4.mac r2.mac r3.mac r5.mac r8.mac r4dwpnpass1sc.mac r4dwpnpass2.mac
    $(masm64) /DARCH=P4 /Foamd64\r4dwpn5_p4.obj r4dwpn5.asm
    strip amd64\r4dwpn5_p4.obj

amd64\r4dwpn5_k8.obj: r4dwpn5.asm xmult.mac r4.mac r2.mac r3.mac r5.mac r8.mac r4dwpnpass1sc.mac r4dwpnpass2.mac
    $(masm64) /DARCH=K8 /Foamd64\r4dwpn5_k8.obj r4dwpn5.asm
    strip amd64\r4dwpn5_k8.obj

amd64\r4dwpn5_k10.obj: r4dwpn5.asm xmult.mac r4.mac r2.mac r3.mac r5.mac r8.mac r4dwpnpass1sc.mac r4dwpnpass2.mac
    $(masm64) /DARCH=K10 /Foamd64\r4dwpn5_k10.obj r4dwpn5.asm
    strip amd64\r4dwpn5_k10.obj

amd64\ymult1ax_core.obj: ymult1ax.asm ymult.mac ynormal.mac
    $(masm64) /DARCH=CORE /Foamd64\ymult1ax_core.obj ymult1ax.asm
    strip amd64\ymult1ax_core.obj

amd64\ymult1ax_fma3.obj: ymult1ax.asm ymult.mac ynormal.mac
    $(masm64) /DARCH=FMA3 /Foamd64\ymult1ax_fma3.obj ymult1ax.asm
    strip amd64\ymult1ax_fma3.obj

amd64\yr4_core.obj: yr4.asm ymult.mac yonepass.mac yr4.mac yr3.mac yr5.mac yr7.mac yr8.mac
    $(masm64) /DARCH=CORE /Foamd64\yr4_core.obj yr4.asm
    strip amd64\yr4_core.obj

amd64\yr4_fma3.obj: yr4.asm ymult.mac yonepass.mac yr4.mac yr3.mac yr5.mac yr7.mac yr8.mac
    $(masm64) /DARCH=FMA3 /Foamd64\yr4_fma3.obj yr4.asm
    strip amd64\yr4_fma3.obj

amd64\ymult3.obj: ymult3.asm ymult.mac ynormal.mac
    $(masm64) /DARCH=BLEND /Foamd64\ymult3.obj ymult3.asm
    strip amd64\ymult3.obj

amd64\ymult3a_core.obj: ymult3a.asm ymult.mac ynormal.mac
    $(masm64) /DARCH=CORE /Foamd64\ymult3a_core.obj ymult3a.asm
    strip amd64\ymult3a_core.obj

amd64\ymult3a_fma3.obj: ymult3a.asm ymult.mac ynormal.mac
    $(masm64) /DARCH=FMA3 /Foamd64\ymult3a_fma3.obj ymult3a.asm
    strip amd64\ymult3a_fma3.obj

amd64\ymult3ax.obj: ymult3ax.asm ymult.mac ynormal.mac
    $(masm64) /DARCH=BLEND /Foamd64\ymult3ax.obj ymult3ax.asm
    strip amd64\ymult3ax.obj

amd64\yr4dwpn_core.obj: yr4dwpn.asm ymult.mac yr4.mac yr3.mac yr5.mac yr7.mac yr8.mac yr4dwpnpass1sc.mac yr4dwpnpass2.mac
    $(masm64) /DARCH=CORE /Foamd64\yr4dwpn_core.obj yr4dwpn.asm
    strip amd64\yr4dwpn_core.obj

amd64\yr4dwpn_fma3.obj: yr4dwpn.asm ymult.mac yr4.mac yr3.mac yr5.mac yr7.mac yr8.mac yr4dwpnpass1sc.mac yr4dwpnpass2.mac
    $(masm64) /DARCH=FMA3 /Foamd64\yr4dwpn_fma3.obj yr4dwpn.asm
    strip amd64\yr4dwpn_fma3.obj

amd64\yr4dwpn3_core.obj: yr4dwpn3.asm ymult.mac yr4.mac yr3.mac yr5.mac yr7.mac yr8.mac yr4dwpnpass1sc.mac yr4dwpnpass2.mac
    $(masm64) /DARCH=CORE /Foamd64\yr4dwpn3_core.obj yr4dwpn3.asm
    strip amd64\yr4dwpn3_core.obj

amd64\yr4dwpn3_fma3.obj: yr4dwpn3.asm ymult.mac yr4.mac yr3.mac yr5.mac yr7.mac yr8.mac yr4dwpnpass1sc.mac yr4dwpnpass2.mac
    $(masm64) /DARCH=FMA3 /Foamd64\yr4dwpn3_fma3.obj yr4dwpn3.asm
    strip amd64\yr4dwpn3_fma3.obj

amd64\yr4dwpn4_core.obj: yr4dwpn4.asm ymult.mac yr4.mac yr3.mac yr5.mac yr7.mac yr8.mac yr4dwpnpass1sc.mac yr4dwpnpass2.mac
    $(masm64) /DARCH=CORE /Foamd64\yr4dwpn4_core.obj yr4dwpn4.asm
    strip amd64\yr4dwpn4_core.obj

amd64\yr4dwpn4_fma3.obj: yr4dwpn4.asm ymult.mac yr4.mac yr3.mac yr5.mac yr7.mac yr8.mac yr4dwpnpass1sc.mac yr4dwpnpass2.mac
    $(masm64) /DARCH=FMA3 /Foamd64\yr4dwpn4_fma3.obj yr4dwpn4.asm
    strip amd64\yr4dwpn4_fma3.obj

amd64\yr4dwpn5_core.obj: yr4dwpn5.asm ymult.mac yr4.mac yr3.mac yr5.mac yr7.mac yr8.mac yr4dwpnpass1sc.mac yr4dwpnpass2.mac
    $(masm64) /DARCH=CORE /Foamd64\yr4dwpn5_core.obj yr4dwpn5.asm
    strip amd64\yr4dwpn5_core.obj

amd64\yr4dwpn5_fma3.obj: yr4dwpn5.asm ymult.mac yr4.mac yr3.mac yr5.mac yr7.mac yr8.mac yr4dwpnpass1sc.mac yr4dwpnpass2.mac
    $(masm64) /DARCH=FMA3 /Foamd64\yr4dwpn5_fma3.obj yr4dwpn5.asm
    strip amd64\yr4dwpn5_fma3.obj

amd64\zmult1ax_skx.obj: zmult1ax.asm zmult.mac znormal.mac znormal_zpad.mac
    $(masm64) /DARCH=SKX /Foamd64\zmult1ax_skx.obj zmult1ax.asm
    strip amd64\zmult1ax_skx.obj

amd64\zr4_skx.obj: zr4.asm zmult.mac zonepass.mac zr2.mac zr3.mac zr4.mac zr5.mac zr6.mac zr7.mac zr8.mac zr9.mac zr10.mac zr12.mac zr14.mac zr15.mac zr16.mac
    $(masm64) /DARCH=SKX /Foamd64\zr4_skx.obj zr4.asm
    strip amd64\zr4_skx.obj

amd64\zmult3.obj: zmult3.asm zmult.mac znormal.mac znormal_zpad.mac
    $(masm64) /DARCH=BLEND /Foamd64\zmult3.obj zmult3.asm
    strip amd64\zmult3.obj

amd64\zmult3a_skx.obj: zmult3a.asm zmult.mac znormal.mac znormal_zpad.mac
    $(masm64) /DARCH=SKX /Foamd64\zmult3a_skx.obj zmult3a.asm
    strip amd64\zmult3a_skx.obj

amd64\zmult3ax.obj: zmult3ax.asm zmult.mac znormal.mac znormal_zpad.mac
    $(masm64) /DARCH=BLEND /Foamd64\zmult3ax.obj zmult3ax.asm
    strip amd64\zmult3ax.obj

amd64\zr4dwpn_skx.obj: zr4dwpn.asm zmult.mac zr4dwpnpass1sc.mac zonepass.mac zr4.mac zr5.mac zr6.mac zr7.mac zr8.mac zr10.mac zr12.mac zr16.mac
    $(masm64) /DARCH=SKX /Foamd64\zr4dwpn_skx.obj zr4dwpn.asm
    strip amd64\zr4dwpn_skx.obj

amd64\zr4dwpn2_skx.obj: zr4dwpn2.asm zmult.mac zr4dwpnpass2.mac zr4.mac zr5.mac zr6.mac zr7.mac zr8.mac zr10.mac zr12.mac zr16.mac zr64.mac
    $(masm64) /DARCH=SKX /Foamd64\zr4dwpn2_skx.obj zr4dwpn2.asm
    strip amd64\zr4dwpn2_skx.obj

amd64\cpuidhlp.obj: cpuidhlp.asm
    $(masm64) /Foamd64\cpuidhlp.obj cpuidhlp.asm
    strip amd64\cpuidhlp.obj

amd64\hyperhlp.obj: hyperhlp.asm
    $(masm64) /Foamd64\hyperhlp.obj hyperhlp.asm
    strip amd64\hyperhlp.obj

amd64\mult.obj: mult.asm
    $(masm64) /Foamd64\mult.obj mult.asm
    strip amd64\mult.obj

amd64\gianthlp.obj: gianthlp.asm
    $(masm64) /Foamd64\gianthlp.obj gianthlp.asm
    strip amd64\gianthlp.obj

amd64\timeit.obj: timeit.asm xmult.mac hg.mac r4.mac r2.mac r3.mac r5.mac r7.mac r8.mac yr4.mac yr3.mac yr5.mac yr7.mac yr8.mac ynormal.mac zonepass.mac zr4.mac zr5.mac zr6.mac zr7.mac zr8.mac zr10.mac zr12.mac zr16.mac zr64.mac znormal.mac
    $(masm64) /DARCH=FMA3 /Foamd64\timeit.obj timeit.asm
    strip amd64\timeit.obj

# Create 64-bit linux object files.  Windows and Linux (gcc) use different
# ABI (application binary interface).  These means arguments are passed in
# different registers and thus need completely different prologs.

linux64\xmult1ax.obj: xmult1ax.asm xmult.mac xnormal.mac
    $(masm64lx) /DARCH=BLEND /Folinux64\xmult1ax.obj xmult1ax.asm

linux64\xmult2.obj: xmult2.asm xmult.mac xnormal.mac
    $(masm64lx) /DARCH=BLEND /Folinux64\xmult2.obj xmult2.asm

linux64\xmult2a_core.obj: xmult2a.asm xmult.mac xnormal.mac
    $(masm64lx) /DARCH=CORE /Folinux64\xmult2a_core.obj xmult2a.asm

linux64\xmult2a_k8.obj: xmult2a.asm xmult.mac xnormal.mac
    $(masm64lx) /DARCH=K8 /Folinux64\xmult2a_k8.obj xmult2a.asm

linux64\xmult2ax.obj: xmult2ax.asm xmult.mac xnormal.mac
    $(masm64lx) /DARCH=BLEND /Folinux64\xmult2ax.obj xmult2ax.asm

linux64\xmult3.obj: xmult3.asm xmult.mac xnormal.mac
    $(masm64lx) /DARCH=BLEND /Folinux64\xmult3.obj xmult3.asm

linux64\xmult3a_core.obj: xmult3a.asm xmult.mac xnormal.mac
    $(masm64lx) /DARCH=CORE /Folinux64\xmult3a_core.obj xmult3a.asm

linux64\xmult3a_k8.obj: xmult3a.asm xmult.mac xnormal.mac
    $(masm64lx) /DARCH=K8 /Folinux64\xmult3a_k8.obj xmult3a.asm

linux64\xmult3ax.obj: xmult3ax.asm xmult.mac xnormal.mac
    $(masm64lx) /DARCH=BLEND /Folinux64\xmult3ax.obj xmult3ax.asm

linux64\hg_blend.obj: hg.asm xmult.mac hg.mac hgpass1sc.mac hgpass2.mac
    $(masm64lx) /DARCH=BLEND /Folinux64\hg_blend.obj hg.asm

linux64\hg_core.obj: hg.asm xmult.mac hg.mac hgpass1sc.mac hgpass2.mac
    $(masm64lx) /DARCH=CORE /Folinux64\hg_core.obj hg.asm

linux64\hg_p4.obj: hg.asm xmult.mac hg.mac hgpass1sc.mac hgpass2.mac
    $(masm64lx) /DARCH=P4 /Folinux64\hg_p4.obj hg.asm

linux64\hg_k8.obj: hg.asm xmult.mac hg.mac hgpass1sc.mac hgpass2.mac
    $(masm64lx) /DARCH=K8 /Folinux64\hg_k8.obj hg.asm

linux64\hg_k10.obj: hg.asm xmult.mac hg.mac hgpass1sc.mac hgpass2.mac
    $(masm64lx) /DARCH=K10 /Folinux64\hg_k10.obj hg.asm

linux64\r4_core.obj: r4.asm xmult.mac r4.mac r2.mac r3.mac r5.mac r8.mac r4pass1sc.mac r4pass2.mac
    $(masm64lx) /DARCH=CORE /Folinux64\r4_core.obj r4.asm

linux64\r4_p4.obj: r4.asm xmult.mac r4.mac r2.mac r3.mac r5.mac r8.mac r4pass1sc.mac r4pass2.mac
    $(masm64lx) /DARCH=P4 /Folinux64\r4_p4.obj r4.asm

linux64\r4_k8.obj: r4.asm xmult.mac r4.mac r2.mac r3.mac r5.mac r8.mac r4pass1sc.mac r4pass2.mac
    $(masm64lx) /DARCH=K8 /Folinux64\r4_k8.obj r4.asm

linux64\r4_k10.obj: r4.asm xmult.mac r4.mac r2.mac r3.mac r5.mac r8.mac r4pass1sc.mac r4pass2.mac
    $(masm64lx) /DARCH=K10 /Folinux64\r4_k10.obj r4.asm

linux64\r4delay_core.obj: r4delay.asm xmult.mac r4.mac r2.mac r3.mac r5.mac r8.mac r4delaypass1sc.mac r4delaypass2.mac
    $(masm64lx) /DARCH=CORE /Folinux64\r4delay_core.obj r4delay.asm

linux64\r4delay_p4.obj: r4delay.asm xmult.mac r4.mac r2.mac r3.mac r5.mac r8.mac r4delaypass1sc.mac r4delaypass2.mac
    $(masm64lx) /DARCH=P4 /Folinux64\r4delay_p4.obj r4delay.asm

linux64\r4delay_k8.obj: r4delay.asm xmult.mac r4.mac r2.mac r3.mac r5.mac r8.mac r4delaypass1sc.mac r4delaypass2.mac
    $(masm64lx) /DARCH=K8 /Folinux64\r4delay_k8.obj r4delay.asm

linux64\r4delay_k10.obj: r4delay.asm xmult.mac r4.mac r2.mac r3.mac r5.mac r8.mac r4delaypass1sc.mac r4delaypass2.mac
    $(masm64lx) /DARCH=K10 /Folinux64\r4delay_k10.obj r4delay.asm

linux64\r4delay3_core.obj: r4delay3.asm xmult.mac r4.mac r2.mac r3.mac r5.mac r8.mac r4delaypass1sc.mac r4delaypass2.mac
    $(masm64lx) /DARCH=CORE /Folinux64\r4delay3_core.obj r4delay3.asm

linux64\r4delay3_p4.obj: r4delay3.asm xmult.mac r4.mac r2.mac r3.mac r5.mac r8.mac r4delaypass1sc.mac r4delaypass2.mac
    $(masm64lx) /DARCH=P4 /Folinux64\r4delay3_p4.obj r4delay3.asm

linux64\r4delay3_k8.obj: r4delay3.asm xmult.mac r4.mac r2.mac r3.mac r5.mac r8.mac r4delaypass1sc.mac r4delaypass2.mac
    $(masm64lx) /DARCH=K8 /Folinux64\r4delay3_k8.obj r4delay3.asm

linux64\r4delay3_k10.obj: r4delay3.asm xmult.mac r4.mac r2.mac r3.mac r5.mac r8.mac r4delaypass1sc.mac r4delaypass2.mac
    $(masm64lx) /DARCH=K10 /Folinux64\r4delay3_k10.obj r4delay3.asm

linux64\r4delay5_core.obj: r4delay5.asm xmult.mac r4.mac r2.mac r3.mac r5.mac r8.mac r4delaypass1sc.mac r4delaypass2.mac
    $(masm64lx) /DARCH=CORE /Folinux64\r4delay5_core.obj r4delay5.asm

linux64\r4delay5_p4.obj: r4delay5.asm xmult.mac r4.mac r2.mac r3.mac r5.mac r8.mac r4delaypass1sc.mac r4delaypass2.mac
    $(masm64lx) /DARCH=P4 /Folinux64\r4delay5_p4.obj r4delay5.asm

linux64\r4delay5_k8.obj: r4delay5.asm xmult.mac r4.mac r2.mac r3.mac r5.mac r8.mac r4delaypass1sc.mac r4delaypass2.mac
    $(masm64lx) /DARCH=K8 /Folinux64\r4delay5_k8.obj r4delay5.asm

linux64\r4delay5_k10.obj: r4delay5.asm xmult.mac r4.mac r2.mac r3.mac r5.mac r8.mac r4delaypass1sc.mac r4delaypass2.mac
    $(masm64lx) /DARCH=K10 /Folinux64\r4delay5_k10.obj r4delay5.asm

linux64\r4dwpn_core.obj: r4dwpn.asm xmult.mac r4.mac r2.mac r3.mac r5.mac r8.mac r4dwpnpass1sc.mac r4dwpnpass2.mac
    $(masm64lx) /DARCH=CORE /Folinux64\r4dwpn_core.obj r4dwpn.asm

linux64\r4dwpn_p4.obj: r4dwpn.asm xmult.mac r4.mac r2.mac r3.mac r5.mac r8.mac r4dwpnpass1sc.mac r4dwpnpass2.mac
    $(masm64lx) /DARCH=P4 /Folinux64\r4dwpn_p4.obj r4dwpn.asm

linux64\r4dwpn_k8.obj: r4dwpn.asm xmult.mac r4.mac r2.mac r3.mac r5.mac r8.mac r4dwpnpass1sc.mac r4dwpnpass2.mac
    $(masm64lx) /DARCH=K8 /Folinux64\r4dwpn_k8.obj r4dwpn.asm

linux64\r4dwpn_k10.obj: r4dwpn.asm xmult.mac r4.mac r2.mac r3.mac r5.mac r8.mac r4dwpnpass1sc.mac r4dwpnpass2.mac
    $(masm64lx) /DARCH=K10 /Folinux64\r4dwpn_k10.obj r4dwpn.asm

linux64\r4dwpn3_core.obj: r4dwpn3.asm xmult.mac r4.mac r2.mac r3.mac r5.mac r8.mac r4dwpnpass1sc.mac r4dwpnpass2.mac
    $(masm64lx) /DARCH=CORE /Folinux64\r4dwpn3_core.obj r4dwpn3.asm

linux64\r4dwpn3_p4.obj: r4dwpn3.asm xmult.mac r4.mac r2.mac r3.mac r5.mac r8.mac r4dwpnpass1sc.mac r4dwpnpass2.mac
    $(masm64lx) /DARCH=P4 /Folinux64\r4dwpn3_p4.obj r4dwpn3.asm

linux64\r4dwpn3_k8.obj: r4dwpn3.asm xmult.mac r4.mac r2.mac r3.mac r5.mac r8.mac r4dwpnpass1sc.mac r4dwpnpass2.mac
    $(masm64lx) /DARCH=K8 /Folinux64\r4dwpn3_k8.obj r4dwpn3.asm

linux64\r4dwpn3_k10.obj: r4dwpn3.asm xmult.mac r4.mac r2.mac r3.mac r5.mac r8.mac r4dwpnpass1sc.mac r4dwpnpass2.mac
    $(masm64lx) /DARCH=K10 /Folinux64\r4dwpn3_k10.obj r4dwpn3.asm

linux64\r4dwpn5_core.obj: r4dwpn5.asm xmult.mac r4.mac r2.mac r3.mac r5.mac r8.mac r4dwpnpass1sc.mac r4dwpnpass2.mac
    $(masm64lx) /DARCH=CORE /Folinux64\r4dwpn5_core.obj r4dwpn5.asm

linux64\r4dwpn5_p4.obj: r4dwpn5.asm xmult.mac r4.mac r2.mac r3.mac r5.mac r8.mac r4dwpnpass1sc.mac r4dwpnpass2.mac
    $(masm64lx) /DARCH=P4 /Folinux64\r4dwpn5_p4.obj r4dwpn5.asm

linux64\r4dwpn5_k8.obj: r4dwpn5.asm xmult.mac r4.mac r2.mac r3.mac r5.mac r8.mac r4dwpnpass1sc.mac r4dwpnpass2.mac
    $(masm64lx) /DARCH=K8 /Folinux64\r4dwpn5_k8.obj r4dwpn5.asm

linux64\r4dwpn5_k10.obj: r4dwpn5.asm xmult.mac r4.mac r2.mac r3.mac r5.mac r8.mac r4dwpnpass1sc.mac r4dwpnpass2.mac
    $(masm64lx) /DARCH=K10 /Folinux64\r4dwpn5_k10.obj r4dwpn5.asm

linux64\ymult1ax_core.obj: ymult1ax.asm ymult.mac ynormal.mac
    $(masm64lx) /DARCH=CORE /Folinux64\ymult1ax_core.obj ymult1ax.asm

linux64\ymult1ax_fma3.obj: ymult1ax.asm ymult.mac ynormal.mac
    $(masm64lx) /DARCH=FMA3 /Folinux64\ymult1ax_fma3.obj ymult1ax.asm

linux64\yr4_core.obj: yr4.asm ymult.mac yonepass.mac yr4.mac yr3.mac yr5.mac yr7.mac yr8.mac
    $(masm64lx) /DARCH=CORE /Folinux64\yr4_core.obj yr4.asm

linux64\yr4_fma3.obj: yr4.asm ymult.mac yonepass.mac yr4.mac yr3.mac yr5.mac yr7.mac yr8.mac
    $(masm64lx) /DARCH=FMA3 /Folinux64\yr4_fma3.obj yr4.asm

linux64\ymult3.obj: ymult3.asm ymult.mac ynormal.mac
    $(masm64lx) /DARCH=BLEND /Folinux64\ymult3.obj ymult3.asm

linux64\ymult3a_core.obj: ymult3a.asm ymult.mac ynormal.mac
    $(masm64lx) /DARCH=CORE /Folinux64\ymult3a_core.obj ymult3a.asm

linux64\ymult3a_fma3.obj: ymult3a.asm ymult.mac ynormal.mac
    $(masm64lx) /DARCH=FMA3 /Folinux64\ymult3a_fma3.obj ymult3a.asm

linux64\ymult3ax.obj: ymult3ax.asm ymult.mac ynormal.mac
    $(masm64lx) /DARCH=BLEND /Folinux64\ymult3ax.obj ymult3ax.asm

linux64\yr4dwpn_core.obj: yr4dwpn.asm ymult.mac yr4.mac yr3.mac yr5.mac yr7.mac yr8.mac yr4dwpnpass1sc.mac yr4dwpnpass2.mac
    $(masm64lx) /DARCH=CORE /Folinux64\yr4dwpn_core.obj yr4dwpn.asm

linux64\yr4dwpn_fma3.obj: yr4dwpn.asm ymult.mac yr4.mac yr3.mac yr5.mac yr7.mac yr8.mac yr4dwpnpass1sc.mac yr4dwpnpass2.mac
    $(masm64lx) /DARCH=FMA3 /Folinux64\yr4dwpn_fma3.obj yr4dwpn.asm

linux64\yr4dwpn3_core.obj: yr4dwpn3.asm ymult.mac yr4.mac yr3.mac yr5.mac yr7.mac yr8.mac yr4dwpnpass1sc.mac yr4dwpnpass2.mac
    $(masm64lx) /DARCH=CORE /Folinux64\yr4dwpn3_core.obj yr4dwpn3.asm

linux64\yr4dwpn3_fma3.obj: yr4dwpn3.asm ymult.mac yr4.mac yr3.mac yr5.mac yr7.mac yr8.mac yr4dwpnpass1sc.mac yr4dwpnpass2.mac
    $(masm64lx) /DARCH=FMA3 /Folinux64\yr4dwpn3_fma3.obj yr4dwpn3.asm

linux64\yr4dwpn4_core.obj: yr4dwpn4.asm ymult.mac yr4.mac yr3.mac yr5.mac yr7.mac yr8.mac yr4dwpnpass1sc.mac yr4dwpnpass2.mac
    $(masm64lx) /DARCH=CORE /Folinux64\yr4dwpn4_core.obj yr4dwpn4.asm

linux64\yr4dwpn4_fma3.obj: yr4dwpn4.asm ymult.mac yr4.mac yr3.mac yr5.mac yr7.mac yr8.mac yr4dwpnpass1sc.mac yr4dwpnpass2.mac
    $(masm64lx) /DARCH=FMA3 /Folinux64\yr4dwpn4_fma3.obj yr4dwpn4.asm

linux64\yr4dwpn5_core.obj: yr4dwpn5.asm ymult.mac yr4.mac yr3.mac yr5.mac yr7.mac yr8.mac yr4dwpnpass1sc.mac yr4dwpnpass2.mac
    $(masm64lx) /DARCH=CORE /Folinux64\yr4dwpn5_core.obj yr4dwpn5.asm

linux64\yr4dwpn5_fma3.obj: yr4dwpn5.asm ymult.mac yr4.mac yr3.mac yr5.mac yr7.mac yr8.mac yr4dwpnpass1sc.mac yr4dwpnpass2.mac
    $(masm64lx) /DARCH=FMA3 /Folinux64\yr4dwpn5_fma3.obj yr4dwpn5.asm

linux64\zmult1ax_skx.obj: zmult1ax.asm zmult.mac znormal.mac znormal_zpad.mac
    $(masm64lx) /DARCH=SKX /Folinux64\zmult1ax_skx.obj zmult1ax.asm

linux64\zr4_skx.obj: zr4.asm zmult.mac zonepass.mac zr2.mac zr3.mac zr4.mac zr5.mac zr6.mac zr7.mac zr8.mac zr9.mac zr10.mac zr12.mac zr14.mac zr15.mac zr16.mac
    $(masm64lx) /DARCH=SKX /Folinux64\zr4_skx.obj zr4.asm

linux64\zmult3.obj: zmult3.asm zmult.mac znormal.mac znormal_zpad.mac
    $(masm64lx) /DARCH=BLEND /Folinux64\zmult3.obj zmult3.asm

linux64\zmult3a_skx.obj: zmult3a.asm zmult.mac znormal.mac znormal_zpad.mac
    $(masm64lx) /DARCH=SKX /Folinux64\zmult3a_skx.obj zmult3a.asm

linux64\zmult3ax.obj: zmult3ax.asm zmult.mac znormal.mac znormal_zpad.mac
    $(masm64lx) /DARCH=BLEND /Folinux64\zmult3ax.obj zmult3ax.asm

linux64\zr4dwpn_skx.obj: zr4dwpn.asm zmult.mac zr4dwpnpass1sc.mac zonepass.mac zr4.mac zr5.mac zr6.mac zr7.mac zr8.mac zr10.mac zr12.mac zr16.mac
    $(masm64lx) /DARCH=SKX /Folinux64\zr4dwpn_skx.obj zr4dwpn.asm

linux64\zr4dwpn2_skx.obj: zr4dwpn2.asm zmult.mac zr4dwpnpass2.mac zr4.mac zr5.mac zr6.mac zr7.mac zr8.mac zr10.mac zr12.mac zr16.mac zr64.mac
    $(masm64lx) /DARCH=SKX /Folinux64\zr4dwpn2_skx.obj zr4dwpn2.asm

linux64\cpuidhlp.obj: cpuidhlp.asm
    $(masm64lx) /Folinux64\cpuidhlp.obj cpuidhlp.asm

linux64\hyperhlp.obj: hyperhlp.asm
    $(masm64lx) /Folinux64\hyperhlp.obj hyperhlp.asm

linux64\mult.obj: mult.asm
    $(masm64lx) /Folinux64\mult.obj mult.asm

linux64\gianthlp.obj: gianthlp.asm
    $(masm64lx) /Folinux64\gianthlp.obj gianthlp.asm

linux64\timeit.obj: timeit.asm xmult.mac hg.mac r4.mac r2.mac r3.mac r5.mac r8.mac yr4.mac yr3.mac yr5.mac yr7.mac yr8.mac ynormal.mac zonepass.mac zr4.mac zr5.mac zr6.mac zr7.mac zr8.mac zr10.mac zr12.mac zr16.mac zr64.mac znormal.mac
    $(masm64lx) /DARCH=FMA3 /Folinux64\timeit.obj timeit.asm

# Create 64-bit Mac OS X object files.

macosx64\mult.obj: mult.asm
    $(masm64lx) /Fomacosx64\mult.obj /DAPPLE mult.asm

