e1b526f1d8
The Hexagon Programmer's Reference Manual says that the exception 0x1e should be raised upon an unaligned program counter. Let's implement that and also add some tests. Signed-off-by: Matheus Tavares Bernardino <quic_mathbern@quicinc.com> Reviewed-by: Richard Henderson <richard.henderson@linaro.org> Reviewed-by: Taylor Simpson <ltaylorsimpson@gmail.com> Reviewed-by: Brian Cain <bcain@quicinc.com> Message-Id: <277b7aeda2c717a96d4dde936b3ac77707cb6517.1714755107.git.quic_mathbern@quicinc.com> Signed-off-by: Brian Cain <bcain@quicinc.com>
133 lines
3.9 KiB
Makefile
133 lines
3.9 KiB
Makefile
##
|
|
## Copyright(c) 2019-2023 Qualcomm Innovation Center, Inc. All Rights Reserved.
|
|
##
|
|
## This program is free software; you can redistribute it and/or modify
|
|
## it under the terms of the GNU General Public License as published by
|
|
## the Free Software Foundation; either version 2 of the License, or
|
|
## (at your option) any later version.
|
|
##
|
|
## This program is distributed in the hope that it will be useful,
|
|
## but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
## MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
## GNU General Public License for more details.
|
|
##
|
|
## You should have received a copy of the GNU General Public License
|
|
## along with this program; if not, see <http://www.gnu.org/licenses/>.
|
|
##
|
|
|
|
# Hexagon doesn't support gdb, so skip the EXTRA_RUNS
|
|
EXTRA_RUNS =
|
|
|
|
CFLAGS += -Wno-incompatible-pointer-types -Wno-undefined-internal
|
|
CFLAGS += -fno-unroll-loops -fno-stack-protector
|
|
|
|
HEX_SRC=$(SRC_PATH)/tests/tcg/hexagon
|
|
VPATH += $(HEX_SRC)
|
|
|
|
%: $(HEX_SRC)/%.S $(HEX_SRC)/crt.S
|
|
$(CC) -static -mv67 -nostdlib $^ -o $@
|
|
|
|
HEX_TESTS = first
|
|
HEX_TESTS += hex_sigsegv
|
|
HEX_TESTS += misc
|
|
HEX_TESTS += usr
|
|
HEX_TESTS += preg_alias
|
|
HEX_TESTS += dual_stores
|
|
HEX_TESTS += multi_result
|
|
HEX_TESTS += mem_noshuf
|
|
HEX_TESTS += mem_noshuf_exception
|
|
HEX_TESTS += circ
|
|
HEX_TESTS += brev
|
|
HEX_TESTS += load_unpack
|
|
HEX_TESTS += load_align
|
|
HEX_TESTS += atomics
|
|
HEX_TESTS += fpstuff
|
|
HEX_TESTS += overflow
|
|
HEX_TESTS += signal_context
|
|
HEX_TESTS += reg_mut
|
|
HEX_TESTS += read_write_overlap
|
|
HEX_TESTS += vector_add_int
|
|
HEX_TESTS += scatter_gather
|
|
HEX_TESTS += hvx_misc
|
|
HEX_TESTS += hvx_histogram
|
|
HEX_TESTS += invalid-slots
|
|
HEX_TESTS += unaligned_pc
|
|
|
|
run-and-check-exception = $(call run-test,$2,$3 2>$2.stderr; \
|
|
test $$? -eq 1 && grep -q "exception $(strip $1)" $2.stderr)
|
|
|
|
run-invalid-slots: invalid-slots
|
|
$(call run-and-check-exception, 0x15, $@, $(QEMU) $(QEMU_OPTS) $<)
|
|
|
|
HEX_TESTS += test_abs
|
|
HEX_TESTS += test_bitcnt
|
|
HEX_TESTS += test_bitsplit
|
|
HEX_TESTS += test_call
|
|
HEX_TESTS += test_clobber
|
|
HEX_TESTS += test_cmp
|
|
HEX_TESTS += test_dotnew
|
|
HEX_TESTS += test_ext
|
|
HEX_TESTS += test_fibonacci
|
|
HEX_TESTS += test_hl
|
|
HEX_TESTS += test_hwloops
|
|
HEX_TESTS += test_jmp
|
|
HEX_TESTS += test_lsr
|
|
HEX_TESTS += test_mpyi
|
|
HEX_TESTS += test_packet
|
|
HEX_TESTS += test_reorder
|
|
HEX_TESTS += test_round
|
|
HEX_TESTS += test_vavgw
|
|
HEX_TESTS += test_vcmpb
|
|
HEX_TESTS += test_vcmpw
|
|
HEX_TESTS += test_vlsrw
|
|
HEX_TESTS += test_vmaxh
|
|
HEX_TESTS += test_vminh
|
|
HEX_TESTS += test_vpmpyh
|
|
HEX_TESTS += test_vspliceb
|
|
|
|
HEX_TESTS += v68_scalar
|
|
HEX_TESTS += v68_hvx
|
|
HEX_TESTS += v69_hvx
|
|
HEX_TESTS += v73_scalar
|
|
|
|
TESTS += $(HEX_TESTS)
|
|
|
|
atomics: atomics.c hex_test.h
|
|
brev: brev.c hex_test.h
|
|
circ: circ.c hex_test.h
|
|
dual_stores: dual_stores.c hex_test.h
|
|
fpstuff: fpstuff.c hex_test.h
|
|
hex_sigsegv: hex_sigsegv.c hex_test.h
|
|
load_align: load_align.c hex_test.h
|
|
load_unpack: load_unpack.c hex_test.h
|
|
mem_noshuf_exception: mem_noshuf_exception.c hex_test.h
|
|
mem_noshuf: mem_noshuf.c hex_test.h
|
|
misc: misc.c hex_test.h
|
|
multi_result: multi_result.c hex_test.h
|
|
overflow: overflow.c hex_test.h
|
|
preg_alias: preg_alias.c hex_test.h
|
|
read_write_overlap: read_write_overlap.c hex_test.h
|
|
reg_mut: reg_mut.c hex_test.h
|
|
unaligned_pc: unaligned_pc.c
|
|
|
|
# This test has to be compiled for the -mv67t target
|
|
usr: usr.c hex_test.h
|
|
$(CC) $(CFLAGS) -mv67t -O2 -Wno-inline-asm -Wno-expansion-to-defined $< -o $@ $(LDFLAGS)
|
|
|
|
# Build this test with -mv71 to exercise the CABAC instruction
|
|
misc: misc.c
|
|
$(CC) $(CFLAGS) -mv71 -O2 $< -o $@ $(LDFLAGS)
|
|
scatter_gather: CFLAGS += -mhvx
|
|
vector_add_int: CFLAGS += -mhvx -fvectorize
|
|
hvx_misc: hvx_misc.c hvx_misc.h
|
|
hvx_misc: CFLAGS += -mhvx
|
|
hvx_histogram: CFLAGS += -mhvx -Wno-gnu-folding-constant
|
|
v68_hvx: v68_hvx.c hvx_misc.h v6mpy_ref.c.inc
|
|
v68_hvx: CFLAGS += -mhvx -Wno-unused-function
|
|
v69_hvx: v69_hvx.c hvx_misc.h
|
|
v69_hvx: CFLAGS += -mhvx -Wno-unused-function
|
|
v73_scalar: CFLAGS += -Wno-unused-function
|
|
|
|
hvx_histogram: hvx_histogram.c hvx_histogram_row.S
|
|
$(CC) $(CFLAGS) $(CROSS_CC_GUEST_CFLAGS) $^ -o $@ $(LDFLAGS)
|