65470ed5f20070ad5cfdc0e01533d292be0ec003
[riscv-tests.git] / isa / rv64uf / Makefile
1 #=======================================================================
2 # Makefile for riscv-tests
3 #-----------------------------------------------------------------------
4
5 default: all
6
7 #--------------------------------------------------------------------
8 # Sources
9 #--------------------------------------------------------------------
10
11 rv64uf_sc_tests = \
12 fadd fcmp fcvt fcvt_w fmadd fmin fsgnj \
13 ldst move structural \
14
15 rv64uf_mc_tests =\
16
17 rv64uf_sc_vec_tests = \
18 fadd fcmp fcvt fcvt_w fmadd fmin fsgnj \
19
20 #--------------------------------------------------------------------
21 # Build rules
22 #--------------------------------------------------------------------
23
24 RISCV_GCC = riscv-gcc
25 RISCV_GCC_OPTS = -nostdlib -nostartfiles
26 RISCV_OBJDUMP = riscv-objdump --disassemble-all --disassemble-zeroes --section=.text --section=.data --section=.bss
27 RISCV_SIM = riscv-isa-run
28
29 #------------------------------------------------------------
30 # Build assembly tests
31
32 %.hex: %
33 elf2hex 16 16384 $< > $@
34
35 %.dump: %
36 $(RISCV_OBJDUMP) $< > $@
37
38 %.out: %
39 $(RISCV_SIM) $< 2> $@
40
41 rv64uf_p_tests_bin = $(addprefix rv64uf-p-, $(rv64uf_sc_tests))
42 rv64uf_p_tests_dump = $(addsuffix .dump, $(rv64uf_p_tests_bin))
43 rv64uf_p_tests_hex = $(addsuffix .hex, $(rv64uf_p_tests_bin))
44 rv64uf_p_tests_out = $(addsuffix .out, $(rv64uf_p_tests_bin))
45
46 $(rv64uf_p_tests_bin): rv64uf-p-%: %.S
47 $(RISCV_GCC) $(RISCV_GCC_OPTS) -I../../env/p -I../macros/scalar -T../../env/p/link.ld $< -o $@
48
49 rv64uf_pm_tests_bin = $(addprefix rv64uf-pm-, $(rv64uf_mc_tests))
50 rv64uf_pm_tests_dump = $(addsuffix .dump, $(rv64uf_pm_tests_bin))
51 rv64uf_pm_tests_hex = $(addsuffix .hex, $(rv64uf_pm_tests_bin))
52 rv64uf_pm_tests_out = $(addsuffix .out, $(rv64uf_pm_tests_bin))
53
54 $(rv64uf_pm_tests_bin): rv64uf-pm-%: %.S
55 $(RISCV_GCC) $(RISCV_GCC_OPTS) -I../../env/pm -I../macros/scalar -T../../env/pm/link.ld $< -o $@
56
57 rv64uf_v_tests_bin = $(addprefix rv64uf-v-, $(rv64uf_sc_tests))
58 rv64uf_v_tests_dump = $(addsuffix .dump, $(rv64uf_v_tests_bin))
59 rv64uf_v_tests_hex = $(addsuffix .hex, $(rv64uf_v_tests_bin))
60 rv64uf_v_tests_out = $(addsuffix .out, $(rv64uf_v_tests_bin))
61
62 $(rv64uf_v_tests_bin): rv64uf-v-%: %.S
63 $(RISCV_GCC) $(RISCV_GCC_OPTS) -std=gnu99 -O2 -I../../env/v -I../macros/scalar -T../../env/v/link.ld ../../env/v/entry.S ../../env/v/vm.c $< -lc -o $@
64
65 rv64uf_p_vec_tests_bin = $(addprefix rv64uf-p-vec-, $(rv64uf_sc_vec_tests))
66 rv64uf_p_vec_tests_dump = $(addsuffix .dump, $(rv64uf_p_vec_tests_bin))
67 rv64uf_p_vec_tests_hex = $(addsuffix .hex, $(rv64uf_p_vec_tests_bin))
68 rv64uf_p_vec_tests_out = $(addsuffix .out, $(rv64uf_p_vec_tests_bin))
69
70 $(rv64uf_p_vec_tests_bin): rv64uf-p-vec-%: %.S
71 $(RISCV_GCC) $(RISCV_GCC_OPTS) -I../../env/p -I../macros/vector -T../../env/p/link.ld $< -o $@
72
73 rv64uf_pt_vec_tests_bin = $(addprefix rv64uf-pt-vec-, $(rv64uf_sc_vec_tests))
74 rv64uf_pt_vec_tests_dump = $(addsuffix .dump, $(rv64uf_pt_vec_tests_bin))
75 rv64uf_pt_vec_tests_hex = $(addsuffix .hex, $(rv64uf_pt_vec_tests_bin))
76 rv64uf_pt_vec_tests_out = $(addsuffix .out, $(rv64uf_pt_vec_tests_bin))
77
78 $(rv64uf_pt_vec_tests_bin): rv64uf-pt-vec-%: %.S
79 $(RISCV_GCC) $(RISCV_GCC_OPTS) -I../../env/pt -I../macros/vector -T../../env/pt/link.ld $< -o $@
80
81 rv64uf_v_vec_tests_bin = $(addprefix rv64uf-v-vec-, $(rv64uf_sc_vec_tests))
82 rv64uf_v_vec_tests_dump = $(addsuffix .dump, $(rv64uf_v_vec_tests_bin))
83 rv64uf_v_vec_tests_hex = $(addsuffix .hex, $(rv64uf_v_vec_tests_bin))
84 rv64uf_v_vec_tests_out = $(addsuffix .out, $(rv64uf_v_vec_tests_bin))
85
86 $(rv64uf_v_vec_tests_bin): rv64uf-v-vec-%: %.S
87 $(RISCV_GCC) $(RISCV_GCC_OPTS) -std=gnu99 -O2 -I../../env/v -I../macros/vector -T../../env/v/link.ld ../../env/v/entry.S ../../env/v/vm.c $< -lc -o $@
88
89 riscv-: \
90 $(rv64uf_p_tests_dump) $(rv64uf_p_tests_hex) \
91 $(rv64uf_pm_tests_dump) $(rv64uf_pm_tests_hex) \
92 $(rv64uf_v_tests_dump) $(rv64uf_v_tests_hex) \
93 $(rv64uf_p_vec_tests_dump) $(rv64uf_p_vec_tests_hex) \
94 $(rv64uf_pt_vec_tests_dump) $(rv64uf_pt_vec_tests_hex) \
95 $(rv64uf_v_vec_tests_dump) $(rv64uf_v_vec_tests_hex) \
96
97 out = $(rv64uf_p_tests_out) $(rv64uf_pm_tests_out) $(rv64uf_v_tests_out) $(rv64uf_p_vec_tests_out) $(rv64uf_v_vec_tests_out)
98
99 run: $(out)
100 echo; perl -ne 'print " [$$1] $$ARGV \t$$2\n" if /\*{3}(.{8})\*{3}(.*)/' \
101 $(out); echo;
102
103 junk += \
104 $(rv64uf_p_tests_bin) $(rv64uf_p_tests_dump) $(rv64uf_p_tests_hex) $(rv64uf_p_tests_out) \
105 $(rv64uf_pm_tests_bin) $(rv64uf_pm_tests_dump) $(rv64uf_pm_tests_hex) $(rv64uf_pm_tests_out) \
106 $(rv64uf_v_tests_bin) $(rv64uf_v_tests_dump) $(rv64uf_v_tests_hex) $(rv64uf_v_tests_out) \
107 $(rv64uf_p_vec_tests_bin) $(rv64uf_p_vec_tests_dump) $(rv64uf_p_vec_tests_hex) $(rv64uf_p_vec_tests_out) \
108 $(rv64uf_pt_vec_tests_bin) $(rv64uf_pt_vec_tests_dump) $(rv64uf_pt_vec_tests_hex) $(rv64uf_pt_vec_tests_out) \
109 $(rv64uf_v_vec_tests_bin) $(rv64uf_v_vec_tests_dump) $(rv64uf_v_vec_tests_hex) $(rv64uf_v_vec_tests_out) \
110
111 #------------------------------------------------------------
112 # Default
113
114 all: riscv-
115
116 #------------------------------------------------------------
117 # Clean up
118
119 clean:
120 rm -rf $(junk)