From: "Alex Bennée" <alex.bennee@linaro.org>
To: Alistair Francis <alistair23@gmail.com>
Cc: Peter Maydell <peter.maydell@linaro.org>,
Riku Voipio <riku.voipio@iki.fi>,
"open list:RISC-V" <qemu-riscv@nongnu.org>,
Sagar Karandikar <sagark@eecs.berkeley.edu>,
Bastian Koppelmann <kbastian@mail.uni-paderborn.de>,
Palmer Dabbelt <palmer@sifive.com>,
"qemu-devel@nongnu.org Developers" <qemu-devel@nongnu.org>,
Laurent Vivier <laurent@vivier.eu>,
Alistair Francis <Alistair.Francis@wdc.com>,
liuzhiwei <zhiwei_liu@c-sky.com>,
Aurelien Jarno <aurelien@aurel32.net>
Subject: Re: [Qemu-devel] [PATCH] RISCV: support riscv vector extension 0.7.1
Date: Fri, 30 Aug 2019 10:06:11 +0100 [thread overview]
Message-ID: <87tv9z3tvg.fsf@linaro.org> (raw)
In-Reply-To: <CAKmqyKPUxyMZnnOd896aK4ZRoG+6iiBQ0E3MJbEqRv9KudbN7Q@mail.gmail.com>
Alistair Francis <alistair23@gmail.com> writes:
> On Thu, Aug 29, 2019 at 5:05 AM liuzhiwei <zhiwei_liu@c-sky.com> wrote:
>>
>> On 2019/8/29 上午5:34, Alistair Francis wrote:
>> > On Wed, Aug 28, 2019 at 12:04 AM liuzhiwei <zhiwei_liu@c-sky.com> wrote:
>> >> Change-Id: I3cf891bc400713b95f47ecca82b1bf773f3dcb25
>> >> Signed-off-by: liuzhiwei <zhiwei_liu@c-sky.com>
>> >> ---
>> >> fpu/softfloat.c | 119 +
>> >> include/fpu/softfloat.h | 4 +
>> >> linux-user/riscv/cpu_loop.c | 8 +-
>> >> target/riscv/Makefile.objs | 2 +-
>> >> target/riscv/cpu.h | 30 +
>> >> target/riscv/cpu_bits.h | 15 +
>> >> target/riscv/cpu_helper.c | 7 +
>> >> target/riscv/csr.c | 65 +-
>> >> target/riscv/helper.h | 354 +
>> >> target/riscv/insn32.decode | 374 +-
>> >> target/riscv/insn_trans/trans_rvv.inc.c | 484 +
>> >> target/riscv/translate.c | 1 +
>> >> target/riscv/vector_helper.c | 26563 ++++++++++++++++++++++++++++++
>> >> 13 files changed, 28017 insertions(+), 9 deletions(-)
>> >> create mode 100644 target/riscv/insn_trans/trans_rvv.inc.c
>> >> create mode 100644 target/riscv/vector_helper.c
>> >>
>> > Hello,
>> >
>> > Thanks for the patch!
>> >
>> > As others have pointed out you will need to split the patch up into
>> > multiple smaller patches, otherwise it is too hard to review almost
>> > 30,000 lines of code.
>>
>> Hi, Alistair
>>
>> I'm so sorry for the inconvenience. It will be a patch set with a cover
>> letter in V2.
>
> No worries.
>
>>
>> > Can you also include a cover letter with your patch series describing
>> > how you are testing this? AFAIK vector extension support isn't in any
>> > compiler so I'm assuming you are handwriting the assembly or have
>> > toolchain patches. Either way it will help if you can share that so
>> > others can test your implementation.
>>
>> Yes, it's handwriting assembly. The assembler in Binutils has support
>> Vector extension. First define an function test_vadd_vv_8 in assembly
>> and then it can be called from a C program.
>>
>> The function is something like
>>
>> /* vadd.vv */
>> TEST_FUNC(test_vadd_vv_8)
>> vsetvli t1, x0, e8, m2
>> vlb.v v6, (a4)
>> vsb.v v6, (a3)
>> vsetvli t1, a0, e8, m2
>> vlb.v v0, (a1)
>> vlb.v v2, (a2)
>> vadd.vv v4, v0, v2
>> vsb.v v4, (a3)
>> ret
>> .size test_vadd_vv_8, .-test_vadd_vv_8
>
> If possible it might be worth releasing the code that you are using for testing.
>
>>
>> It takes more time to test than to implement the instructions. Maybe
>> there is some better test method or some forced test cases in QEMU.
>> Could you give me some advice for testing?
>
> Richard's idea of risu seems like a good option.
>
> Thinking about it a bit more we are going to have other extensions in
> the future that will need assembly testing so setting up a test
> framework seems like a good idea. I am happy to help try and get this
> going as well.
tests/tcg already has the bits you need for both linux-user and system
based testing. The main problem is getting a version of gcc that is new
enough to emit the newer instructions. I recently updated the images to
buster so gcc is pretty recent now (8.3).
I did start down the road of a general "op" test frame work which tried
to come up with a common framework/boilerplate so all you needed to do
was supply a new function (possible with a hex encoded instruction) and
a list of expected inputs and outputs:
https://github.com/stsquad/qemu/commits/testing/generic-op-tester
I suspect it was over engineered but perhaps it would be worth reviving
it (or something like it) to make adding a simple single instruction
test case with minimal additional verbiage?
>
> Alistair
>
>>
>> Best Regards,
>>
>> Zhiwei
>>
>> > Alex and Richard have kindly started the review. Once you have
>> > addressed their comments and split this patch up into smaller patches
>> > you can send a v2 and we can go from there.
>> >
>> > Once again thanks for doing this implementation for QEMU!
>> >
>> > Alistair
>> >
--
Alex Bennée
next prev parent reply other threads:[~2019-08-30 9:10 UTC|newest]
Thread overview: 27+ messages / expand[flat|nested] mbox.gz Atom feed top
[not found] <1566959818-38369-1-git-send-email-zhiwei_liu@c-sky.com>
2019-08-28 9:08 ` [Qemu-devel] [PATCH] RISCV: support riscv vector extension 0.7.1 Alex Bennée
2019-08-28 16:39 ` Richard Henderson
2019-08-29 13:35 ` liuzhiwei
2019-08-28 18:54 ` Richard Henderson
2019-08-28 20:43 ` Richard Henderson
2019-08-29 12:45 ` liuzhiwei
2019-08-29 15:09 ` Richard Henderson
2019-09-02 7:45 ` liuzhiwei
2019-09-03 14:38 ` Richard Henderson
2019-09-02 9:43 ` liuzhiwei
2019-09-03 14:21 ` Richard Henderson
2019-12-19 9:11 ` LIU Zhiwei
2019-12-19 20:38 ` Richard Henderson
2019-12-25 9:36 ` LIU Zhiwei
2019-12-28 1:14 ` Richard Henderson
2019-12-30 8:11 ` LIU Zhiwei
2020-01-05 20:19 ` Richard Henderson
2019-08-28 21:34 ` Alistair Francis
2019-08-29 12:00 ` liuzhiwei
2019-08-29 15:14 ` Richard Henderson
2019-09-02 6:54 ` liuzhiwei
2019-08-29 21:50 ` Alistair Francis
2019-08-30 9:06 ` Alex Bennée [this message]
2019-08-30 18:39 ` Alistair Francis
2019-09-02 6:36 ` liuzhiwei
[not found] ` <CAL1e-=iHangj7w+HgJ+FM=iqRLmaY-_CYeUv0gx+c8bpScb9RQ@mail.gmail.com>
[not found] ` <46ade3da-d642-bd19-7975-7dc228d401e4@c-sky.com>
2019-08-29 18:32 ` Aleksandar Markovic
[not found] ` <CAEiOBXXofjrY2=sjuMDb9dTV2fk9yUVKnr+qmf+7mg9vki6OCw@mail.gmail.com>
2019-09-02 8:17 ` [Qemu-devel] [Qemu-riscv] " liuzhiwei
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=87tv9z3tvg.fsf@linaro.org \
--to=alex.bennee@linaro.org \
--cc=Alistair.Francis@wdc.com \
--cc=alistair23@gmail.com \
--cc=aurelien@aurel32.net \
--cc=kbastian@mail.uni-paderborn.de \
--cc=laurent@vivier.eu \
--cc=palmer@sifive.com \
--cc=peter.maydell@linaro.org \
--cc=qemu-devel@nongnu.org \
--cc=qemu-riscv@nongnu.org \
--cc=riku.voipio@iki.fi \
--cc=sagark@eecs.berkeley.edu \
--cc=zhiwei_liu@c-sky.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).