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