cannam@95: # This Makefile.am specifies a set of codelets, efficient transforms cannam@95: # of small sizes, that are used as building blocks (kernels) by FFTW cannam@95: # to build up large transforms, as well as the options for generating cannam@95: # and compiling them. cannam@95: cannam@95: # You can customize FFTW for special needs, e.g. to handle certain cannam@95: # sizes more efficiently, by adding new codelets to the lists of those cannam@95: # included by default. If you change the list of codelets, any new cannam@95: # ones you added will be automatically generated when you run the cannam@95: # bootstrap script (see "Generating your own code" in the FFTW cannam@95: # manual). cannam@95: cannam@95: ########################################################################### cannam@95: AM_CPPFLAGS = -I$(top_srcdir)/kernel -I$(top_srcdir)/dft \ cannam@95: -I$(top_srcdir)/dft/scalar cannam@95: noinst_LTLIBRARIES = libdft_scalar_codelets.la cannam@95: cannam@95: ########################################################################### cannam@95: # n1_ is a hard-coded FFT of size (base cases of FFT recursion) cannam@95: N1 = n1_2.c n1_3.c n1_4.c n1_5.c n1_6.c n1_7.c n1_8.c n1_9.c n1_10.c \ cannam@95: n1_11.c n1_12.c n1_13.c n1_14.c n1_15.c n1_16.c n1_32.c n1_64.c \ cannam@95: n1_20.c n1_25.c # n1_30.c n1_40.c n1_50.c cannam@95: cannam@95: ########################################################################### cannam@95: # t1_ is a "twiddle" FFT of size , implementing a radix-r DIT step cannam@95: T1 = t1_2.c t1_3.c t1_4.c t1_5.c t1_6.c t1_7.c t1_8.c t1_9.c \ cannam@95: t1_10.c t1_12.c t1_15.c t1_16.c t1_32.c t1_64.c \ cannam@95: t1_20.c t1_25.c # t1_30.c t1_40.c t1_50.c cannam@95: cannam@95: # t2_ is also a twiddle FFT, but instead of using a complete lookup table cannam@95: # of trig. functions, it partially generates the trig. values on the fly cannam@95: # (this is faster for large sizes). cannam@95: T2 = t2_4.c t2_8.c t2_16.c t2_32.c t2_64.c \ cannam@95: t2_5.c t2_10.c t2_20.c t2_25.c cannam@95: cannam@95: ########################################################################### cannam@95: # The F (DIF) codelets are used for a kind of in-place transform algorithm, cannam@95: # but the planner seems to never (or hardly ever) use them on the machines cannam@95: # we have access to, preferring the Q codelets and the use of buffers cannam@95: # for sub-transforms. So, we comment them out, at least for now. cannam@95: cannam@95: # f1_ is a "twiddle" FFT of size , implementing a radix-r DIF step cannam@95: F1 = # f1_2.c f1_3.c f1_4.c f1_5.c f1_6.c f1_7.c f1_8.c f1_9.c f1_10.c f1_12.c f1_15.c f1_16.c f1_32.c f1_64.c cannam@95: cannam@95: # like f1, but partially generates its trig. table on the fly cannam@95: F2 = # f2_4.c f2_8.c f2_16.c f2_32.c f2_64.c cannam@95: cannam@95: ########################################################################### cannam@95: # q1_ is twiddle FFTs of size (DIF step), where the output is cannam@95: # transposed. This is used for in-place transposes in sizes that are cannam@95: # divisible by ^2. These codelets have size ~ ^2, so you should cannam@95: # probably not use bigger than 8 or so. cannam@95: Q1 = q1_2.c q1_4.c q1_8.c q1_3.c q1_5.c q1_6.c cannam@95: cannam@95: ########################################################################### cannam@95: ALL_CODELETS = $(N1) $(T1) $(T2) $(F1) $(F2) $(Q1) cannam@95: BUILT_SOURCES= $(ALL_CODELETS) $(CODLIST) cannam@95: cannam@95: libdft_scalar_codelets_la_SOURCES = $(BUILT_SOURCES) cannam@95: cannam@95: SOLVTAB_NAME = X(solvtab_dft_standard) cannam@95: XRENAME=X cannam@95: cannam@95: # special rules for regenerating codelets. cannam@95: include $(top_srcdir)/support/Makefile.codelets cannam@95: cannam@95: if MAINTAINER_MODE cannam@95: FLAGS_N1=$(DFT_FLAGS_COMMON) cannam@95: FLAGS_T1=$(DFT_FLAGS_COMMON) cannam@95: FLAGS_T2=$(DFT_FLAGS_COMMON) -twiddle-log3 -precompute-twiddles cannam@95: FLAGS_F1=$(DFT_FLAGS_COMMON) cannam@95: FLAGS_F2=$(DFT_FLAGS_COMMON) -twiddle-log3 -precompute-twiddles cannam@95: FLAGS_Q1=$(DFT_FLAGS_COMMON) -reload-twiddle cannam@95: FLAGS_Q2=$(DFT_FLAGS_COMMON) -twiddle-log3 -precompute-twiddles cannam@95: cannam@95: n1_%.c: $(CODELET_DEPS) $(GEN_NOTW) cannam@95: ($(PRELUDE_COMMANDS_DFT); $(TWOVERS) $(GEN_NOTW) $(FLAGS_N1) -n $* -name n1_$* -include "n.h") | $(ADD_DATE) | $(INDENT) >$@ cannam@95: cannam@95: t1_%.c: $(CODELET_DEPS) $(GEN_TWIDDLE) cannam@95: ($(PRELUDE_COMMANDS_DFT); $(TWOVERS) $(GEN_TWIDDLE) $(FLAGS_T1) -n $* -name t1_$* -include "t.h") | $(ADD_DATE) | $(INDENT) >$@ cannam@95: cannam@95: t2_%.c: $(CODELET_DEPS) $(GEN_TWIDDLE) cannam@95: ($(PRELUDE_COMMANDS_DFT); $(TWOVERS) $(GEN_TWIDDLE) $(FLAGS_T2) -n $* -name t2_$* -include "t.h") | $(ADD_DATE) | $(INDENT) >$@ cannam@95: cannam@95: f1_%.c: $(CODELET_DEPS) $(GEN_TWIDDLE) cannam@95: ($(PRELUDE_COMMANDS_DFT); $(TWOVERS) $(GEN_TWIDDLE) $(FLAGS_F1) -dif -n $* -name f1_$* -include "f.h") | $(ADD_DATE) | $(INDENT) >$@ cannam@95: cannam@95: f2_%.c: $(CODELET_DEPS) $(GEN_TWIDDLE) cannam@95: ($(PRELUDE_COMMANDS_DFT); $(TWOVERS) $(GEN_TWIDDLE) $(FLAGS_F2) -dif -n $* -name f2_$* -include "f.h") | $(ADD_DATE) | $(INDENT) >$@ cannam@95: cannam@95: q1_%.c: $(CODELET_DEPS) $(GEN_TWIDSQ) cannam@95: ($(PRELUDE_COMMANDS_DFT); $(TWOVERS) $(GEN_TWIDSQ) $(FLAGS_Q1) -dif -n $* -name q1_$* -include "q.h") | $(ADD_DATE) | $(INDENT) >$@ cannam@95: cannam@95: q2_%.c: $(CODELET_DEPS) $(GEN_TWIDSQ) cannam@95: ($(PRELUDE_COMMANDS_DFT); $(TWOVERS) $(GEN_TWIDSQ) $(FLAGS_Q2) -dif -n $* -name q2_$* -include "q.h") | $(ADD_DATE) | $(INDENT) >$@ cannam@95: cannam@95: endif # MAINTAINER_MODE