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 11:16:27 +0100

On Dec 11, 2018 10:54 AM, "Aleksandar Markovic" <address@hidden>
wrote:
>
>
> 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),
>

Correction: 74Kf supports DSP R2 too. So this is the only MIPS32R2 cpu with
DSP R2 support. While mips64dspr2 is the only MIPS64R2 cpu with DSP R2
support.

> (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]