| ## |
| ## 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 |
| |
| 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 |
| |
| 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) |
| |
| # This test has to be compiled for the -mv67t target |
| usr: usr.c |
| $(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) |