xref: /openbmc/qemu/tests/tcg/hexagon/Makefile.target (revision b2580720)
1##
2##  Copyright(c) 2019-2023 Qualcomm Innovation Center, Inc. All Rights Reserved.
3##
4##  This program is free software; you can redistribute it and/or modify
5##  it under the terms of the GNU General Public License as published by
6##  the Free Software Foundation; either version 2 of the License, or
7##  (at your option) any later version.
8##
9##  This program is distributed in the hope that it will be useful,
10##  but WITHOUT ANY WARRANTY; without even the implied warranty of
11##  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
12##  GNU General Public License for more details.
13##
14##  You should have received a copy of the GNU General Public License
15##  along with this program; if not, see <http://www.gnu.org/licenses/>.
16##
17
18# Hexagon doesn't support gdb, so skip the EXTRA_RUNS
19EXTRA_RUNS =
20
21CFLAGS += -Wno-incompatible-pointer-types -Wno-undefined-internal
22CFLAGS += -fno-unroll-loops -fno-stack-protector
23
24HEX_SRC=$(SRC_PATH)/tests/tcg/hexagon
25VPATH += $(HEX_SRC)
26
27%: $(HEX_SRC)/%.S $(HEX_SRC)/crt.S
28	$(CC) -static -mv67 -nostdlib $^ -o $@
29
30HEX_TESTS = first
31HEX_TESTS += hex_sigsegv
32HEX_TESTS += misc
33HEX_TESTS += usr
34HEX_TESTS += preg_alias
35HEX_TESTS += dual_stores
36HEX_TESTS += multi_result
37HEX_TESTS += mem_noshuf
38HEX_TESTS += mem_noshuf_exception
39HEX_TESTS += circ
40HEX_TESTS += brev
41HEX_TESTS += load_unpack
42HEX_TESTS += load_align
43HEX_TESTS += atomics
44HEX_TESTS += fpstuff
45HEX_TESTS += overflow
46HEX_TESTS += signal_context
47HEX_TESTS += reg_mut
48HEX_TESTS += read_write_overlap
49HEX_TESTS += vector_add_int
50HEX_TESTS += scatter_gather
51HEX_TESTS += hvx_misc
52HEX_TESTS += hvx_histogram
53HEX_TESTS += invalid-slots
54HEX_TESTS += unaligned_pc
55
56run-and-check-exception = $(call run-test,$2,$3 2>$2.stderr; \
57	test $$? -eq 1 && grep -q "exception $(strip $1)" $2.stderr)
58
59run-invalid-slots: invalid-slots
60	$(call run-and-check-exception, 0x15, $@, $(QEMU) $(QEMU_OPTS) $<)
61
62HEX_TESTS += test_abs
63HEX_TESTS += test_bitcnt
64HEX_TESTS += test_bitsplit
65HEX_TESTS += test_call
66HEX_TESTS += test_clobber
67HEX_TESTS += test_cmp
68HEX_TESTS += test_dotnew
69HEX_TESTS += test_ext
70HEX_TESTS += test_fibonacci
71HEX_TESTS += test_hl
72HEX_TESTS += test_hwloops
73HEX_TESTS += test_jmp
74HEX_TESTS += test_lsr
75HEX_TESTS += test_mpyi
76HEX_TESTS += test_packet
77HEX_TESTS += test_reorder
78HEX_TESTS += test_round
79HEX_TESTS += test_vavgw
80HEX_TESTS += test_vcmpb
81HEX_TESTS += test_vcmpw
82HEX_TESTS += test_vlsrw
83HEX_TESTS += test_vmaxh
84HEX_TESTS += test_vminh
85HEX_TESTS += test_vpmpyh
86HEX_TESTS += test_vspliceb
87
88HEX_TESTS += v68_scalar
89HEX_TESTS += v68_hvx
90HEX_TESTS += v69_hvx
91HEX_TESTS += v73_scalar
92
93TESTS += $(HEX_TESTS)
94
95atomics: atomics.c hex_test.h
96brev: brev.c hex_test.h
97circ: circ.c hex_test.h
98dual_stores: dual_stores.c hex_test.h
99fpstuff: fpstuff.c hex_test.h
100hex_sigsegv: hex_sigsegv.c hex_test.h
101load_align: load_align.c hex_test.h
102load_unpack: load_unpack.c hex_test.h
103mem_noshuf_exception: mem_noshuf_exception.c hex_test.h
104mem_noshuf: mem_noshuf.c hex_test.h
105misc: misc.c hex_test.h
106multi_result: multi_result.c hex_test.h
107overflow: overflow.c hex_test.h
108preg_alias: preg_alias.c hex_test.h
109read_write_overlap: read_write_overlap.c hex_test.h
110reg_mut: reg_mut.c hex_test.h
111unaligned_pc: unaligned_pc.c
112
113# This test has to be compiled for the -mv67t target
114usr: usr.c hex_test.h
115	$(CC) $(CFLAGS) -mv67t -O2 -Wno-inline-asm -Wno-expansion-to-defined $< -o $@ $(LDFLAGS)
116
117# Build this test with -mv71 to exercise the CABAC instruction
118misc: misc.c
119	$(CC) $(CFLAGS) -mv71 -O2 $< -o $@ $(LDFLAGS)
120scatter_gather: CFLAGS += -mhvx
121vector_add_int: CFLAGS += -mhvx -fvectorize
122hvx_misc: hvx_misc.c hvx_misc.h
123hvx_misc: CFLAGS += -mhvx
124hvx_histogram: CFLAGS += -mhvx -Wno-gnu-folding-constant
125v68_hvx: v68_hvx.c hvx_misc.h v6mpy_ref.c.inc
126v68_hvx: CFLAGS += -mhvx -Wno-unused-function
127v69_hvx: v69_hvx.c hvx_misc.h
128v69_hvx: CFLAGS += -mhvx -Wno-unused-function
129v73_scalar: CFLAGS += -Wno-unused-function
130
131hvx_histogram: hvx_histogram.c hvx_histogram_row.S
132	$(CC) $(CFLAGS) $(CROSS_CC_GUEST_CFLAGS) $^ -o $@ $(LDFLAGS)
133