1 #=======================================================================
2 # Makefile for riscv-tests/isa
3 #-----------------------------------------------------------------------
5 include rv64ui
/Makefrag
6 include rv64uf
/Makefrag
7 include rv64uv
/Makefrag
8 include rv64si
/Makefrag
9 include rv64sv
/Makefrag
10 include rv32ui
/Makefrag
14 #--------------------------------------------------------------------
16 #--------------------------------------------------------------------
19 RISCV_GCC_OPTS
= -nostdlib
-nostartfiles
20 RISCV_OBJDUMP
= riscv-objdump
--disassemble-all
--disassemble-zeroes
--section
=.text
--section
=.data
--section
=.bss
23 #------------------------------------------------------------
24 # Build assembly tests
27 elf2hex
16 16384 $< > $@
30 $(RISCV_OBJDUMP
) $< > $@
35 define compile_template
37 $$($(1)_p_tests
): $(1)-p-
%: $(1)/%.S
38 $$(RISCV_GCC
) $(2) $$(RISCV_GCC_OPTS
) -I..
/env
/p
-I.
/macros
/scalar
-T..
/env
/p
/link.
ld $$< -o
$$@
39 tests
+= $$($(1)_p_tests
)
41 $$($(1)_pt_tests
): $(1)-pt-
%: $(1)/%.S
42 $$(RISCV_GCC
) $(2) $$(RISCV_GCC_OPTS
) -I..
/env
/pt
-I.
/macros
/scalar
-T..
/env
/p
/link.
ld $$< -o
$$@
43 tests
+= $$($(1)_pt_tests
)
45 $$($(1)_pm_tests
): $(1)-pm-
%: $(1)/%.S
46 $$(RISCV_GCC
) $(2) $$(RISCV_GCC_OPTS
) -I..
/env
/pm
-I.
/macros
/scalar
-T..
/env
/pm
/link.
ld $$< -o
$$@
47 tests
+= $$($(1)_pm_tests
)
49 $$($(1)_v_tests
): $(1)-v-
%: $(1)/%.S
50 $$(RISCV_GCC
) $(2) $$(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
$$@
51 tests
+= $$($(1)_v_tests
)
53 $$($(1)_p_vec_tests
): $(1)-p-vec-
%: $(1)/%.S
54 $$(RISCV_GCC
) $(2) $$(RISCV_GCC_OPTS
) -I..
/env
/p
-I.
/macros
/vector
-T..
/env
/p
/link.
ld $$< -o
$$@
55 tests
+= $$($(1)_p_vec_tests
)
57 $$($(1)_pt_vec_tests
): $(1)-pt-vec-
%: $(1)/%.S
58 $$(RISCV_GCC
) $(2) $$(RISCV_GCC_OPTS
) -I..
/env
/pt
-I.
/macros
/vector
-T..
/env
/pt
/link.
ld $$< -o
$$@
59 tests
+= $$($(1)_pt_vec_tests
)
61 $$($(1)_v_vec_tests
): $(1)-v-vec-
%: $(1)/%.S
62 $$(RISCV_GCC
) $(2) $$(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
$$@
63 tests
+= $$($(1)_v_vec_tests
)
67 $(eval
$(call compile_template
,rv32ui
,-m32
))
68 $(eval
$(call compile_template
,rv64ui
))
69 $(eval
$(call compile_template
,rv64uf
))
70 $(eval
$(call compile_template
,rv64uv
))
71 $(eval
$(call compile_template
,rv64si
))
72 $(eval
$(call compile_template
,rv64sv
))
74 tests_dump
= $(addsuffix .dump
, $(tests
))
75 tests_hex
= $(addsuffix .hex
, $(tests
))
76 tests_out
= $(addsuffix .out
, $(spike_tests
))
79 echo
; perl
-ne
'print " [$$1] $$ARGV \t$$2\n" if /\*{3}(.{8})\*{3}(.*)/' \
82 junk
+= $(tests
) $(tests_dump
) $(tests_hex
) $(tests_out
)
84 #------------------------------------------------------------
87 all: $(tests_dump
) $(tests_hex
)
89 #------------------------------------------------------------