From: "Alex Bennée" <alex.bennee@linaro.org>
To: Alistair Francis <alistair23@gmail.com>
Cc: liuzhiwei <zhiwei_liu@c-sky.com>,
"qemu-devel\@nongnu.org Developers" <qemu-devel@nongnu.org>,
"open list\:RISC-V" <qemu-riscv@nongnu.org>,
Peter Maydell <peter.maydell@linaro.org>,
Palmer Dabbelt <palmer@sifive.com>,
Sagar Karandikar <sagark@eecs.berkeley.edu>,
Bastian Koppelmann <kbastian@mail.uni-paderborn.de>,
Riku Voipio <riku.voipio@iki.fi>,
Laurent Vivier <laurent@vivier.eu>,
Alistair Francis <Alistair.Francis@wdc.com>,
Aurelien Jarno <aurelien@aurel32.net>
Subject: Re: [Qemu-riscv] [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
WARNING: multiple messages have this Message-ID (diff)
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:07 UTC|newest]
Thread overview: 52+ messages / expand[flat|nested] mbox.gz Atom feed top
2019-08-28 2:36 [Qemu-riscv] [PATCH] RISCV: support riscv vector extension 0.7.1 liuzhiwei
2019-08-28 9:08 ` Alex Bennée
2019-08-28 9:08 ` [Qemu-devel] " Alex Bennée
2019-08-28 16:39 ` [Qemu-riscv] " Richard Henderson
2019-08-28 16:39 ` Richard Henderson
2019-08-29 13:35 ` [Qemu-riscv] " liuzhiwei
2019-08-29 13:35 ` [Qemu-devel] " liuzhiwei
2019-08-28 18:54 ` [Qemu-riscv] " Richard Henderson
2019-08-28 18:54 ` Richard Henderson
2019-08-28 20:43 ` [Qemu-riscv] " Richard Henderson
2019-08-28 20:43 ` Richard Henderson
2019-08-29 12:45 ` [Qemu-riscv] " liuzhiwei
2019-08-29 12:45 ` liuzhiwei
2019-08-29 15:09 ` [Qemu-riscv] " Richard Henderson
2019-08-29 15:09 ` Richard Henderson
2019-09-02 7:45 ` [Qemu-riscv] " liuzhiwei
2019-09-02 7:45 ` liuzhiwei
2019-09-03 14:38 ` [Qemu-riscv] " Richard Henderson
2019-09-03 14:38 ` Richard Henderson
2019-09-02 9:43 ` [Qemu-riscv] " liuzhiwei
2019-09-02 9:43 ` liuzhiwei
2019-09-03 14:21 ` [Qemu-riscv] " Richard Henderson
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 19:20 ` [Qemu-riscv] " Aleksandar Markovic
2019-08-29 12:56 ` liuzhiwei
2019-08-29 18:32 ` Aleksandar Markovic
2019-08-29 18:32 ` Aleksandar Markovic
2019-08-28 21:34 ` [Qemu-riscv] " Alistair Francis
2019-08-28 21:34 ` Alistair Francis
2019-08-29 12:00 ` [Qemu-riscv] " liuzhiwei
2019-08-29 12:00 ` liuzhiwei
2019-08-29 15:14 ` [Qemu-riscv] " Richard Henderson
2019-08-29 15:14 ` Richard Henderson
2019-09-02 6:54 ` [Qemu-riscv] " liuzhiwei
2019-09-02 6:54 ` liuzhiwei
2019-08-29 21:50 ` [Qemu-riscv] " Alistair Francis
2019-08-29 21:50 ` Alistair Francis
2019-08-30 9:06 ` Alex Bennée [this message]
2019-08-30 9:06 ` Alex Bennée
2019-08-30 18:39 ` [Qemu-riscv] " Alistair Francis
2019-08-30 18:39 ` Alistair Francis
2019-09-02 6:36 ` [Qemu-riscv] " liuzhiwei
2019-09-02 6:36 ` liuzhiwei
2019-08-29 14:06 ` [Qemu-riscv] " Chih-Min Chao
2019-09-02 8:17 ` liuzhiwei
2019-09-02 8:17 ` [Qemu-devel] " 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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.