qemu-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [Qemu-devel] [RFC PATCH 04/13] tests/tcg/mips: enable mips32-dsp/mip


From: Aleksandar Markovic
Subject: Re: [Qemu-devel] [RFC PATCH 04/13] tests/tcg/mips: enable mips32-dsp/mips32-dspr2/mipsr5900 linux-user (WIP)
Date: Tue, 11 Dec 2018 10:54:26 +0100

On Dec 10, 2018 4:29 PM, "Alex Bennée" <address@hidden> wrote:
>
> Convert the existing tests to use our common cross build
> infrastructure.
>
> [WIP: mips32r2 disabled to avoid name clash]
> [WIP: mipsr5900 disabled due to clashing build flags]
>
> Signed-off-by: Alex Bennée <address@hidden>
> ---
>  tests/tcg/mips/Makefile.target       |  15 ++-
>  tests/tcg/mips/mips32-dsp/Makefile   | 166 +++++----------------------
>  tests/tcg/mips/mips32-dspr2/Makefile |  83 +++-----------
>  tests/tcg/mips/mipsr5900/Makefile    |  40 +++----
>  4 files changed, 75 insertions(+), 229 deletions(-)
>

Thank you Alex for this initiative.

For DSP, following MIPS CPUs in QEMU support DSP:

DSP: 24KEc (MIPS32R2),  34Kf (MIPS32R2), 74Kf (MIPS32R2), mips64dspr2
(MIPS64R2),

DSP R2: mips64dspr2 (MIPS64R2),

(For simplicity, I didn't mention new nanoMIPS architecture, since your gcc
for sure don't support it yet)

In brackets, those are architectures that are usually required to be passed
to gcc as its option, and that explains the switch involving MIPS64R2 for
DSP R2.

Whereas while starting QEMU, CPU name should be specified in -cpu switch.

mips64dspr2 is a virtual cpu (doesn't model any real cpu) made specifically
for DSP R2 testings, hence such odd name.

Hopefully this clarifies some of your dilemmas.

What are name clashes that you mention? Are they just related to filenames?

CHEERS,
Aleksandar

> diff --git a/tests/tcg/mips/Makefile.target
b/tests/tcg/mips/Makefile.target
> index 086625f533..33bb25bf8d 100644
> --- a/tests/tcg/mips/Makefile.target
> +++ b/tests/tcg/mips/Makefile.target
> @@ -15,8 +15,17 @@ TESTS += $(MIPS_TESTS)
>  hello-mips: CFLAGS+=-ffreestanding
>  hello-mips: LDFLAGS+=-nostdlib
>
> -# For MIPS32 and 64 we have a bunch of extra tests in sub-directories
> -# however they are intended for system tests.
> -
>  run-hello-mips: hello-mips
>         $(call skip-test, $<, "BROKEN")
> +
> +# For MIPS32 and mipsr5900 we have a bunch of extra tests in
sub-directories
> +
> +ifeq ($(TARGET_NAME),mipsel)
> +-include $(MIPS_SRC)/mips32-dsp/Makefile
> +
> +# FIXME: doesn't build - names clash with mips32-dsp
> +#-include $(MIPS_SRC)/mips32-dspr2/Makefile
> +
> +# FIXME: the docker compiler can't build the binaries
> +#-include $(MIPS_SRC)/mipsr5900/Makefile
> +endif
> diff --git a/tests/tcg/mips/mips32-dsp/Makefile
b/tests/tcg/mips/mips32-dsp/Makefile
> index c3a0a00944..df2dddceaa 100644
> --- a/tests/tcg/mips/mips32-dsp/Makefile
> +++ b/tests/tcg/mips/mips32-dsp/Makefile
> @@ -1,136 +1,30 @@
> --include ../../config-host.mak
> -
> -CROSS=mips64el-unknown-linux-gnu-
> -
> -SIM=qemu-mipsel
> -SIM_FLAGS=-cpu 74Kf
> -
> -CC      = $(CROSS)gcc
> -CFLAGS  = -mabi=32 -march=mips32r2 -mgp32 -mdsp -static
> -
> -TESTCASES = absq_s_ph.tst
> -TESTCASES += absq_s_w.tst
> -TESTCASES += addq_ph.tst
> -TESTCASES += addq_s_ph.tst
> -TESTCASES += addq_s_w.tst
> -TESTCASES += addsc.tst
> -TESTCASES += addu_qb.tst
> -TESTCASES += addu_s_qb.tst
> -TESTCASES += addwc.tst
> -TESTCASES += bitrev.tst
> -TESTCASES += bposge32.tst
> -TESTCASES += cmp_eq_ph.tst
> -TESTCASES += cmpgu_eq_qb.tst
> -TESTCASES += cmpgu_le_qb.tst
> -TESTCASES += cmpgu_lt_qb.tst
> -TESTCASES += cmp_le_ph.tst
> -TESTCASES += cmp_lt_ph.tst
> -TESTCASES += cmpu_eq_qb.tst
> -TESTCASES += cmpu_le_qb.tst
> -TESTCASES += cmpu_lt_qb.tst
> -TESTCASES += dpaq_sa_l_w.tst
> -TESTCASES += dpaq_s_w_ph.tst
> -TESTCASES += dpau_h_qbl.tst
> -TESTCASES += dpau_h_qbr.tst
> -TESTCASES += dpsq_sa_l_w.tst
> -TESTCASES += dpsq_s_w_ph.tst
> -TESTCASES += dpsu_h_qbl.tst
> -TESTCASES += dpsu_h_qbr.tst
> -TESTCASES += extp.tst
> -TESTCASES += extpdp.tst
> -TESTCASES += extpdpv.tst
> -TESTCASES += extpv.tst
> -TESTCASES += extr_rs_w.tst
> -TESTCASES += extr_r_w.tst
> -TESTCASES += extr_s_h.tst
> -TESTCASES += extrv_rs_w.tst
> -TESTCASES += extrv_r_w.tst
> -TESTCASES += extrv_s_h.tst
> -TESTCASES += extrv_w.tst
> -TESTCASES += extr_w.tst
> -TESTCASES += insv.tst
> -TESTCASES += lbux.tst
> -TESTCASES += lhx.tst
> -TESTCASES += lwx.tst
> -TESTCASES += madd.tst
> -TESTCASES += maddu.tst
> -TESTCASES += maq_sa_w_phl.tst
> -TESTCASES += maq_sa_w_phr.tst
> -TESTCASES += maq_s_w_phl.tst
> -TESTCASES += maq_s_w_phr.tst
> -TESTCASES += mfhi.tst
> -TESTCASES += mflo.tst
> -TESTCASES += modsub.tst
> -TESTCASES += msub.tst
> -TESTCASES += msubu.tst
> -TESTCASES += mthi.tst
> -TESTCASES += mthlip.tst
> -TESTCASES += mtlo.tst
> -TESTCASES += muleq_s_w_phl.tst
> -TESTCASES += muleq_s_w_phr.tst
> -TESTCASES += muleu_s_ph_qbl.tst
> -TESTCASES += muleu_s_ph_qbr.tst
> -TESTCASES += mulq_rs_ph.tst
> -TESTCASES += mult.tst
> -TESTCASES += multu.tst
> -TESTCASES += packrl_ph.tst
> -TESTCASES += pick_ph.tst
> -TESTCASES += pick_qb.tst
> -TESTCASES += precequ_ph_qbla.tst
> -TESTCASES += precequ_ph_qbl.tst
> -TESTCASES += precequ_ph_qbra.tst
> -TESTCASES += precequ_ph_qbr.tst
> -TESTCASES += preceq_w_phl.tst
> -TESTCASES += preceq_w_phr.tst
> -TESTCASES += preceu_ph_qbla.tst
> -TESTCASES += preceu_ph_qbl.tst
> -TESTCASES += preceu_ph_qbra.tst
> -TESTCASES += preceu_ph_qbr.tst
> -TESTCASES += precrq_ph_w.tst
> -TESTCASES += precrq_qb_ph.tst
> -TESTCASES += precrq_rs_ph_w.tst
> -TESTCASES += precrqu_s_qb_ph.tst
> -TESTCASES += raddu_w_qb.tst
> -TESTCASES += rddsp.tst
> -TESTCASES += repl_ph.tst
> -TESTCASES += repl_qb.tst
> -TESTCASES += replv_ph.tst
> -TESTCASES += replv_qb.tst
> -TESTCASES += shilo.tst
> -TESTCASES += shilov.tst
> -TESTCASES += shll_ph.tst
> -TESTCASES += shll_qb.tst
> -TESTCASES += shll_s_ph.tst
> -TESTCASES += shll_s_w.tst
> -TESTCASES += shllv_ph.tst
> -TESTCASES += shllv_qb.tst
> -TESTCASES += shllv_s_ph.tst
> -TESTCASES += shllv_s_w.tst
> -TESTCASES += shra_ph.tst
> -TESTCASES += shra_r_ph.tst
> -TESTCASES += shra_r_w.tst
> -TESTCASES += shrav_ph.tst
> -TESTCASES += shrav_r_ph.tst
> -TESTCASES += shrav_r_w.tst
> -TESTCASES += shrl_qb.tst
> -TESTCASES += shrlv_qb.tst
> -TESTCASES += subq_ph.tst
> -TESTCASES += subq_s_ph.tst
> -TESTCASES += subq_s_w.tst
> -TESTCASES += subu_qb.tst
> -TESTCASES += subu_s_qb.tst
> -TESTCASES += wrdsp.tst
> -
> -all: $(TESTCASES)
> -
> -%.tst: %.c
> -       $(CC) $(CFLAGS) $< -o $@
> -
> -check: $(TESTCASES)
> -       @for case in $(TESTCASES); do \
> -        echo $(SIM) $(SIM_FLAGS) ./$$case;\
> -        $(SIM) $(SIM_FLAGS) ./$$case; \
> -       done
> -
> -clean:
> -       $(RM) -rf $(TESTCASES)
> +#
> +# MIPS32-DSP linux-user tests
> +#
> +# We don't set the VPATH for these tests as we re-use the VPATH from
> +# ../Makefile and add explicit paths for the source to avoid name clashes
> +# between the various sub-dirs.
> +#
> +
> +MIPS32DSP_SRC = $(SRC_PATH)/tests/tcg/mips/mips32-dsp
> +MIPS32DSP_ALL = $(wildcard $(MIPS32DSP_SRC)/*.c)
> +MIPS32DSP_TESTS = $(patsubst $(MIPS32DSP_SRC)/%.c, mips32-dsp/%,
$(MIPS32DSP_ALL))
> +MIPS32DSP_RUNS = $(patsubst %, run-%, $(MIPS32DSP_TESTS))
> +
> +# add to the list of tests
> +TESTS += $(MIPS32DSP_TESTS)
> +
> +# We need a rule to ensure we create a sub-directory to build in
> +# It is a PHONY target to prevent confusion with MIPS32DSP_SRC
> +.PHONY: mips32-dsp.build
> +mips32-dsp.build:
> +       mkdir -p mips32-dsp
> +
> +$(MIPS32DSP_TESTS): | mips32-dsp.build
> +$(MIPS32DSP_TESTS): CFLAGS+=-mabi=32 -march=mips32r2 -mgp32 -mdsp
> +
> +$(MIPS32DSP_RUNS): QEMU_OPTS=-cpu 74Kf
> +
> +# FIXME: I don't know why the general rule in tests/tcg/Makefile isn't
enough
> +run-mips32-dsp/%: mips32-dsp/%
> +       $(call run-test, $<, $(QEMU) $(QEMU_OPTS) $<, "$< on
$(TARGET_NAME) $(QEMU_OPTS)")
> diff --git a/tests/tcg/mips/mips32-dspr2/Makefile
b/tests/tcg/mips/mips32-dspr2/Makefile
> index ed19581c7e..6da966abb6 100644
> --- a/tests/tcg/mips/mips32-dspr2/Makefile
> +++ b/tests/tcg/mips/mips32-dspr2/Makefile
> @@ -1,71 +1,24 @@
> --include ../../config-host.mak
> +#
> +# MIPS32-DSPR2 linux-user tests
> +#
>
> -CROSS=mips64el-unknown-linux-gnu-
> +MIPS32_DSPR2_SRC = $(SRC_PATH)/tests/tcg/mips/mips32-dsp
> +MIPS32_DSPR2_ALL = $(wildcard $(MIPS32_DSPR2_SRC)/*.c)
> +MIPS32_DSPR2_TESTS = $(patsubst $(MIPS32_DSPR2_SRC)/%.c, mips32-dspr2/%,
$(MIPS32_DSPR2_ALL))
> +MIPS32_DSPR2_RUNS = $(patsubst %, run-%, $(MIPS32_DSPR2_TESTS))
>
> -SIM=qemu-mipsel
> -SIM_FLAGS=-cpu 74Kf
> +# add to the list of tests
> +TESTS += $(MIPS32_DSPR2_TESTS)
>
> -CC      = $(CROSS)gcc
> -CFLAGS  = -mabi=32 -march=mips32r2 -mgp32 -mdspr2 -static
> +.PHONY: mips32-dspr2.build
> +mips32-dspr2.build:
> +       mkdir -p mips32-dspr2
>
> -TESTCASES = absq_s_qb.tst
> -TESTCASES += addqh_ph.tst
> -TESTCASES += addqh_r_ph.tst
> -TESTCASES += addqh_r_w.tst
> -TESTCASES += addqh_w.tst
> -TESTCASES += adduh_qb.tst
> -TESTCASES += adduh_r_qb.tst
> -TESTCASES += addu_ph.tst
> -TESTCASES += addu_s_ph.tst
> -TESTCASES += append.tst
> -TESTCASES += balign.tst
> -TESTCASES += cmpgdu_eq_qb.tst
> -TESTCASES += cmpgdu_le_qb.tst
> -TESTCASES += cmpgdu_lt_qb.tst
> -TESTCASES += dpaqx_sa_w_ph.tst
> -TESTCASES += dpa_w_ph.tst
> -TESTCASES += dpax_w_ph.tst
> -TESTCASES += dpaqx_s_w_ph.tst
> -TESTCASES += dpsqx_sa_w_ph.tst
> -TESTCASES += dpsqx_s_w_ph.tst
> -TESTCASES += dps_w_ph.tst
> -TESTCASES += dpsx_w_ph.tst
> -TESTCASES += mul_ph.tst
> -TESTCASES += mulq_rs_w.tst
> -TESTCASES += mulq_s_ph.tst
> -TESTCASES += mulq_s_w.tst
> -TESTCASES += mulsaq_s_w_ph.tst
> -TESTCASES += mulsa_w_ph.tst
> -TESTCASES += mul_s_ph.tst
> -TESTCASES += precr_qb_ph.tst
> -TESTCASES += precr_sra_ph_w.tst
> -TESTCASES += precr_sra_r_ph_w.tst
> -TESTCASES += prepend.tst
> -TESTCASES += shra_qb.tst
> -TESTCASES += shra_r_qb.tst
> -TESTCASES += shrav_qb.tst
> -TESTCASES += shrav_r_qb.tst
> -TESTCASES += shrl_ph.tst
> -TESTCASES += shrlv_ph.tst
> -TESTCASES += subqh_ph.tst
> -TESTCASES += subqh_r_ph.tst
> -TESTCASES += subqh_r_w.tst
> -TESTCASES += subqh_w.tst
> -TESTCASES += subuh_qb.tst
> -TESTCASES += subuh_r_qb.tst
> -TESTCASES += subu_ph.tst
> -TESTCASES += subu_s_ph.tst
> +$(MIPS32_DSPR2_TESTS): | mips32-dspr2.build
> +$(MIPS32_DSPR2_TESTS): CFLAGS+=-mabi=32 -march=mips32r2 -mgp32 -mdspr2
>
> -all: $(TESTCASES)
> +$(MIPS32_DSPR2_RUNS): QEMU_OPTS=-cpu 74Kf
>
> -%.tst: %.c
> -       $(CC) $(CFLAGS) $< -o $@
> -
> -check: $(TESTCASES)
> -       @for case in $(TESTCASES); do \
> -        echo $(SIM) $(SIM_FLAGS) ./$$case;\
> -               $(SIM) $(SIM_FLAGS) ./$$case; \
> -       done
> -
> -clean:
> -       $(RM) -rf $(TESTCASES)
> +# FIXME: I don't know why the general rule in tests/tcg/Makefile isn't
enough
> +run-mips32-dspr2/%: mips32-dspr2/%
> +       $(call run-test, $<, $(QEMU) $(QEMU_OPTS) $<, "$< on
$(TARGET_NAME) $(QEMU_OPTS)")
> diff --git a/tests/tcg/mips/mipsr5900/Makefile
b/tests/tcg/mips/mipsr5900/Makefile
> index a1c388bc3c..7880e76986 100644
> --- a/tests/tcg/mips/mipsr5900/Makefile
> +++ b/tests/tcg/mips/mipsr5900/Makefile
> @@ -1,30 +1,20 @@
> --include ../../config-host.mak
> +#
> +# MIPSR5900 linux-user tests
> +#
>
> -CROSS=mipsr5900el-unknown-linux-gnu-
> +MIPSR5900_SRC = $(SRC_PATH)/tests/tcg/mips/mipsr5900
> +MIPSR5900_ALL = $(wildcard $(MIPSR5900_SRC)/*.c)
> +MIPSR5900_TESTS = $(patsubst $(MIPSR5900_SRC)/%.c, %, $(MIPSR5900_ALL))
> +MIPSR5900_RUNS = $(patsubst %, run-%, $(MIPSR5900_TESTS))
>
> -SIM=qemu-mipsel
> -SIM_FLAGS=-cpu R5900
> +# add to the list of tests
> +TESTS += $(MIPSR5900_TESTS)
>
> -CC      = $(CROSS)gcc
> -CFLAGS  = -Wall -mabi=32 -march=r5900 -static
> +.PHONY: mipsr5900.build
> +mipsr5900.build:
> +       mkdir -p mipsr5900
>
> -TESTCASES = div1.tst
> -TESTCASES += divu1.tst
> -TESTCASES += mflohi1.tst
> -TESTCASES += mtlohi1.tst
> -TESTCASES += mult.tst
> -TESTCASES += multu.tst
> +$(MIPS32DSP_TESTS): | mipsr5900.build
> +$(MIPSR5900_TESTS): CFLAGS+=-mabi=32 -march=r5900 -msingle-float
>
> -all: $(TESTCASES)
> -
> -%.tst: %.c
> -       $(CC) $(CFLAGS) $< -o $@
> -
> -check: $(TESTCASES)
> -       @for case in $(TESTCASES); do \
> -        echo $(SIM) $(SIM_FLAGS) ./$$case;\
> -        $(SIM) $(SIM_FLAGS) ./$$case; \
> -       done
> -
> -clean:
> -       $(RM) -rf $(TESTCASES)
> +$(MIPSR5900_RUNS): QEMU_OPTS=-cpu R5900
> --
> 2.17.1
>
>


reply via email to

[Prev in Thread] Current Thread [Next in Thread]