aboutsummaryrefslogtreecommitdiff
path: root/isa/rv64uf/Makefile
blob: 65470ed5f20070ad5cfdc0e01533d292be0ec003 (plain)
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)