From: LIU Zhiwei <zhiwei_liu@linux.alibaba.com>
To: Richard Henderson <richard.henderson@linaro.org>, qemu-devel@nongnu.org
Cc: qemu-riscv@nongnu.org, palmer@dabbelt.com,
alistair.francis@wdc.com, dbarboza@ventanamicro.com,
liwei1518@gmail.com, bmeng.cn@gmail.com,
TANG Tiancheng <tangtiancheng.ttc@alibaba-inc.com>
Subject: Re: [PATCH v1 03/15] tcg: Fix register allocation constraints
Date: Wed, 14 Aug 2024 15:47:07 +0800 [thread overview]
Message-ID: <acdede99-bfb0-499f-9544-6d2fc163ebbf@linux.alibaba.com> (raw)
In-Reply-To: <447a4be7-ffb7-4409-8703-a29e14bb7352@linaro.org>
On 2024/8/14 12:18, Richard Henderson wrote:
> On 8/14/24 13:30, LIU Zhiwei wrote:
>>
>> On 2024/8/14 11:08, Richard Henderson wrote:
>>> On 8/14/24 12:27, LIU Zhiwei wrote:
>>>>
>>>> On 2024/8/14 10:04, Richard Henderson wrote:
>>>>> On 8/14/24 10:58, LIU Zhiwei wrote:
>>>>>> Thus if we want to use all registers of vectors, we have to add a
>>>>>> dynamic constraint on register allocation based on IR types.
>>>>>
>>>>> My comment vs patch 4 is that you can't do that, at least not
>>>>> without large changes to TCG.
>>>>>
>>>>> In addition, I said that the register pressure on vector regs is
>>>>> not high enough to justify such changes. There is, so far, little
>>>>> benefit in having more than 4 or 5 vector registers, much less 32.
>>>>> Thus 7 (lmul 4, omitting v0) is sufficient.
>>>>
>>>> At least on QEMU, SVE can support 2048 bit vector length with
>>>> 'sve-default-vector- length=256'. Software optimized with SVE,
>>>> such as X264 can benefit with long SVE length in less dynamic A64
>>>> instructions.
>>>>
>>>> We want to expose all host vector ability. Thus the largest
>>>> TCG_TYPE_V256 is not enough, as 128-bit RVV can give 8*128=1024
>>>> width operation. We have expand TCG_TYPE_V512/1024/2048 types(not
>>>> in this patch set, but intend to upstream later).
>>>> With large TCG_TYPE_V1024/2048, we get better performance on RISC-V
>>>> board with much less translated RISC-V vector instructions. We can
>>>> give a more detailed experiment result if needed.
>>>>
>>>> However, we will only have 3 vector register when support
>>>> TCG_TYPE_V1024. And even less for TCG_TYPE_V2048. Current
>>>> approach will give more vectors TCG_TYPE_V128 even with support
>>>> TCG_TYPE_V1024, which will relax some guest NEON register pressure.
>>>
>>> Then you will have to teach TCG about one operand consuming and
>>> clobbering N hard registers, so that you get the spills and fills
>>> done correctly.
>> I think we have done this in patch 6.
>
> No, you have not.
>
> There are no modifications to tcg_reg_alloc, and there are no
> additional calls to tcg_reg_free, which is where spills are generated.
> There would also need to be changes on the fill side, temp_load.
Thanks. I choose the simple design as you suggest for this patch set.
And We will fix this problem when send the longer vector operations
implementation.
>
>
>>> I think you should make longer vector operations a longer term project,
>>
>> Does longer vector operations implementation deserves to upstream? We
>> can contribute it sooner as it is ready.
>
> Sure.
Good news!
Thanks,
Zhiwei
>
>
> r~
next prev parent reply other threads:[~2024-08-14 7:48 UTC|newest]
Thread overview: 49+ messages / expand[flat|nested] mbox.gz Atom feed top
2024-08-13 11:34 [PATCH v1 00/15] tcg/riscv: Add support for vector LIU Zhiwei
2024-08-13 11:34 ` [PATCH v1 01/15] util: Add RISC-V vector extension probe in cpuinfo LIU Zhiwei
2024-08-13 11:34 ` [PATCH v1 02/15] tcg/op-gvec: Fix iteration step in 32-bit operation LIU Zhiwei
2024-08-13 11:34 ` [PATCH v1 03/15] tcg: Fix register allocation constraints LIU Zhiwei
2024-08-13 11:52 ` Richard Henderson
2024-08-14 0:58 ` LIU Zhiwei
2024-08-14 2:04 ` Richard Henderson
2024-08-14 2:27 ` LIU Zhiwei
2024-08-14 3:08 ` Richard Henderson
2024-08-14 3:30 ` LIU Zhiwei
2024-08-14 4:18 ` Richard Henderson
2024-08-14 7:47 ` LIU Zhiwei [this message]
2024-08-13 11:34 ` [PATCH v1 04/15] tcg/riscv: Add basic support for vector LIU Zhiwei
2024-08-13 12:19 ` Richard Henderson
2024-08-13 11:34 ` [PATCH v1 05/15] tcg/riscv: Add riscv vset{i}vli support LIU Zhiwei
2024-08-14 8:24 ` Richard Henderson
2024-08-19 1:34 ` LIU Zhiwei
2024-08-19 2:35 ` Richard Henderson
2024-08-19 2:53 ` LIU Zhiwei
2024-08-13 11:34 ` [PATCH v1 06/15] tcg/riscv: Implement vector load/store LIU Zhiwei
2024-08-14 9:01 ` Richard Henderson
2024-08-19 1:41 ` LIU Zhiwei
2024-08-13 11:34 ` [PATCH v1 07/15] tcg/riscv: Implement vector mov/dup{m/i} LIU Zhiwei
2024-08-14 9:11 ` Richard Henderson
2024-08-15 10:49 ` LIU Zhiwei
2024-08-20 9:00 ` Richard Henderson
2024-08-20 9:26 ` LIU Zhiwei
2024-08-13 11:34 ` [PATCH v1 08/15] tcg/riscv: Add support for basic vector opcodes LIU Zhiwei
2024-08-14 9:13 ` Richard Henderson
2024-08-20 1:56 ` LIU Zhiwei
2024-08-14 9:17 ` Richard Henderson
2024-08-20 1:57 ` LIU Zhiwei
2024-08-20 5:14 ` Richard Henderson
2024-08-13 11:34 ` [PATCH v1 09/15] tcg/riscv: Implement vector cmp ops LIU Zhiwei
2024-08-14 9:39 ` Richard Henderson
2024-08-27 7:50 ` LIU Zhiwei
2024-08-13 11:34 ` [PATCH v1 10/15] tcg/riscv: Implement vector not/neg ops LIU Zhiwei
2024-08-14 9:45 ` Richard Henderson
2024-08-27 7:55 ` LIU Zhiwei
2024-08-13 11:34 ` [PATCH v1 11/15] tcg/riscv: Implement vector sat/mul ops LIU Zhiwei
2024-08-13 11:34 ` [PATCH v1 12/15] tcg/riscv: Implement vector min/max ops LIU Zhiwei
2024-08-13 11:34 ` [PATCH v1 13/15] tcg/riscv: Implement vector shs/v ops LIU Zhiwei
2024-08-13 11:34 ` [PATCH v1 14/15] tcg/riscv: Implement vector roti/v/x shi ops LIU Zhiwei
2024-08-14 9:55 ` Richard Henderson
2024-08-27 7:57 ` LIU Zhiwei
2024-08-13 11:34 ` [PATCH v1 15/15] tcg/riscv: Enable vector TCG host-native LIU Zhiwei
2024-08-14 10:15 ` Richard Henderson
2024-08-27 8:31 ` LIU Zhiwei
2024-08-28 23:35 ` Richard Henderson
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=acdede99-bfb0-499f-9544-6d2fc163ebbf@linux.alibaba.com \
--to=zhiwei_liu@linux.alibaba.com \
--cc=alistair.francis@wdc.com \
--cc=bmeng.cn@gmail.com \
--cc=dbarboza@ventanamicro.com \
--cc=liwei1518@gmail.com \
--cc=palmer@dabbelt.com \
--cc=qemu-devel@nongnu.org \
--cc=qemu-riscv@nongnu.org \
--cc=richard.henderson@linaro.org \
--cc=tangtiancheng.ttc@alibaba-inc.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.