1%_pm.h: passes/pmgen/pmgen.py %.pmg
2	$(P) mkdir -p passes/pmgen && $(PYTHON_EXECUTABLE) $< -o $@ -p $(subst _pm.h,,$(notdir $@)) $(filter-out $<,$^)
3
4# --------------------------------------
5
6OBJS += passes/pmgen/test_pmgen.o
7GENFILES += passes/pmgen/test_pmgen_pm.h
8passes/pmgen/test_pmgen.o: passes/pmgen/test_pmgen_pm.h passes/pmgen/ice40_dsp_pm.h passes/pmgen/peepopt_pm.h passes/pmgen/xilinx_srl_pm.h
9$(eval $(call add_extra_objs,passes/pmgen/test_pmgen_pm.h))
10
11# --------------------------------------
12
13OBJS += passes/pmgen/ice40_dsp.o
14GENFILES += passes/pmgen/ice40_dsp_pm.h
15passes/pmgen/ice40_dsp.o: passes/pmgen/ice40_dsp_pm.h
16$(eval $(call add_extra_objs,passes/pmgen/ice40_dsp_pm.h))
17
18# --------------------------------------
19
20OBJS += passes/pmgen/ice40_wrapcarry.o
21GENFILES += passes/pmgen/ice40_wrapcarry_pm.h
22passes/pmgen/ice40_wrapcarry.o: passes/pmgen/ice40_wrapcarry_pm.h
23$(eval $(call add_extra_objs,passes/pmgen/ice40_wrapcarry_pm.h))
24
25# --------------------------------------
26
27OBJS += passes/pmgen/xilinx_dsp.o
28GENFILES += passes/pmgen/xilinx_dsp_pm.h
29GENFILES += passes/pmgen/xilinx_dsp48a_pm.h
30GENFILES += passes/pmgen/xilinx_dsp_CREG_pm.h
31GENFILES += passes/pmgen/xilinx_dsp_cascade_pm.h
32passes/pmgen/xilinx_dsp.o: passes/pmgen/xilinx_dsp_pm.h passes/pmgen/xilinx_dsp48a_pm.h passes/pmgen/xilinx_dsp_CREG_pm.h passes/pmgen/xilinx_dsp_cascade_pm.h
33$(eval $(call add_extra_objs,passes/pmgen/xilinx_dsp_pm.h))
34$(eval $(call add_extra_objs,passes/pmgen/xilinx_dsp48a_pm.h))
35$(eval $(call add_extra_objs,passes/pmgen/xilinx_dsp_CREG_pm.h))
36$(eval $(call add_extra_objs,passes/pmgen/xilinx_dsp_cascade_pm.h))
37
38# --------------------------------------
39
40OBJS += passes/pmgen/peepopt.o
41GENFILES += passes/pmgen/peepopt_pm.h
42passes/pmgen/peepopt.o: passes/pmgen/peepopt_pm.h
43$(eval $(call add_extra_objs,passes/pmgen/peepopt_pm.h))
44
45PEEPOPT_PATTERN  = passes/pmgen/peepopt_shiftmul.pmg
46PEEPOPT_PATTERN += passes/pmgen/peepopt_muldiv.pmg
47
48passes/pmgen/peepopt_pm.h: passes/pmgen/pmgen.py $(PEEPOPT_PATTERN)
49	$(P) mkdir -p passes/pmgen && $(PYTHON_EXECUTABLE) $< -o $@ -p peepopt $(filter-out $<,$^)
50
51# --------------------------------------
52
53OBJS += passes/pmgen/xilinx_srl.o
54GENFILES += passes/pmgen/xilinx_srl_pm.h
55passes/pmgen/xilinx_srl.o: passes/pmgen/xilinx_srl_pm.h
56$(eval $(call add_extra_objs,passes/pmgen/xilinx_srl_pm.h))
57