$(regression_dir)/%:

$(addprefix $(torture_dir)/, $(addsuffix .elf, $(torture-tests))): $(torture_dir)/%.elf: $(regression_dir)/%
	mkdir -p $(torture_dir)
	ln -fs $(regression_dir)/$* $@

.PRECIOUS: $(torture_dir)/%.rtlsim.sig
$(torture_dir)/%.rtlsim.sig: $(torture_dir)/%.elf $(sim_dir)/dramsim2_ini $(simv)
	cd $(sim_dir) && $(exec_simv) +dramsim +verbose +max-cycles=$(timeout_cycles) +signature=$@ $< $(disasm) $(torture_dir)/$*.rtlsim.out && [ $$PIPESTATUS -eq 0 ]

.PRECIOUS: $(torture_dir)/%.spike.sig
$(torture_dir)/%.spike.sig: $(torture_dir)/%.elf
	cd $(sim_dir) && spike --extension=hwacha +signature=$@ $< > $(torture_dir)/$*.spike.out

$(torture_dir)/%.diff: $(torture_dir)/%.rtlsim.sig $(torture_dir)/%.spike.sig
	cd $(sim_dir) && diff $(torture_dir)/$*.rtlsim.sig $(torture_dir)/$*.spike.sig > $@

$(torture_dir)/%.rtlsim.vpd: $(torture_dir)/%.elf $(sim_dir)/dramsim2_ini $(simv_debug)
	cd $(sim_dir) && $(exec_simv_debug) +dramsim +verbose +max-cycles=$(timeout_cycles) +vcdplusfile=$@ $< $(disasm) $(torture_dir)/$*.rtlsim.out && [ $$PIPESTATUS -eq 0 ]

run-torture-tests: $(addprefix $(torture_dir)/, $(addsuffix .diff, $(torture-tests)))
