From: Richard Henderson <richard.henderson@linaro.org>
To: gaosong <gaosong@loongson.cn>, qemu-devel@nongnu.org
Subject: Re: [RFC PATCH v2 38/44] target/loongarch: Implement vbitsel vset
Date: Wed, 12 Apr 2023 08:53:24 +0200 [thread overview]
Message-ID: <f785b8f3-d7f3-a481-81c3-3603542a0111@linaro.org> (raw)
In-Reply-To: <ac4562c5-ea37-d57a-b1dd-02b21af72985@loongson.cn>
On 4/11/23 13:37, gaosong wrote:
> static bool trans_vseteqz_v(DisasContext *ctx, arg_cv *a)
> {
> TCGv_i64 t1, t2, al, ah, zero;
>
> al = tcg_temp_new_i64();
> ah = tcg_temp_new_i64();
> t1 = tcg_temp_new_i64();
> t2 = tcg_temp_new_i64();
> zero = tcg_constant_i64(0);
>
> get_vreg64(ah, a->vj, 1);
> get_vreg64(al, a->vj, 0);
>
> CHECK_SXE;
> tcg_gen_setcond_i64(TCG_COND_EQ, t1, al, zero);
> tcg_gen_setcond_i64(TCG_COND_EQ, t2, ah, zero);
> tcg_gen_and_i64(t1, t1, t2);
tcg_gen_or_i64(t1, al, ah);
tcg_gen_setcondi_i64(TCG_COND_EQ, t1, t1, 0
But otherwise correct, yes.
>>> +#define SETANYEQZ(NAME, BIT, E) \
>>> +void HELPER(NAME)(CPULoongArchState *env, uint32_t cd, uint32_t vj) \
>>> +{ \
>>> + int i; \
>>> + bool ret = false; \
>>> + VReg *Vj = &(env->fpr[vj].vreg); \
>>> + \
>>> + for (i = 0; i < LSX_LEN/BIT; i++) { \
>>> + ret |= (Vj->E(i) == 0); \
>>> + } \
>>> + env->cf[cd & 0x7] = ret; \
>>> +}
>>> +SETANYEQZ(vsetanyeqz_b, 8, B)
>>> +SETANYEQZ(vsetanyeqz_h, 16, H)
>>> +SETANYEQZ(vsetanyeqz_w, 32, W)
>>> +SETANYEQZ(vsetanyeqz_d, 64, D)
>>
>> These could be inlined, though slightly harder.
>> C.f. target/arm/sve_helper.c, do_match2 (your n == 0).
>>
> Do you mean an inline like trans_vseteqz_v or just an inline helper function?
I meant inline tcg code generation, instead of a call to a helper.
But even if we keep this in a helper, see do_match2 for avoiding the loop over bytes.
r~
next prev parent reply other threads:[~2023-04-12 6:54 UTC|newest]
Thread overview: 114+ messages / expand[flat|nested] mbox.gz Atom feed top
2023-03-28 3:05 [RFC PATCH v2 00/44] Add LoongArch LSX instructions Song Gao
2023-03-28 3:05 ` [RFC PATCH v2 01/44] target/loongarch: Add LSX data type VReg Song Gao
2023-03-28 19:56 ` Richard Henderson
2023-03-29 2:28 ` gaosong
2023-03-28 3:05 ` [RFC PATCH v2 02/44] target/loongarch: CPUCFG support LSX Song Gao
2023-03-28 19:33 ` Richard Henderson
2023-03-28 3:05 ` [RFC PATCH v2 03/44] target/loongarch: meson.build support build LSX Song Gao
2023-03-28 19:35 ` Richard Henderson
2023-03-28 3:05 ` [RFC PATCH v2 04/44] target/loongarch: Add CHECK_SXE maccro for check LSX enable Song Gao
2023-03-28 19:42 ` Richard Henderson
2023-03-29 2:28 ` gaosong
2023-03-28 3:05 ` [RFC PATCH v2 05/44] target/loongarch: Implement vadd/vsub Song Gao
2023-03-28 19:50 ` Richard Henderson
2023-03-28 19:59 ` Richard Henderson
2023-03-29 9:59 ` gaosong
2023-03-29 15:22 ` Richard Henderson
2023-03-28 3:05 ` [RFC PATCH v2 06/44] target/loongarch: Implement vaddi/vsubi Song Gao
2023-03-28 19:58 ` Richard Henderson
2023-03-28 3:05 ` [RFC PATCH v2 07/44] target/loongarch: Implement vneg Song Gao
2023-03-28 20:02 ` Richard Henderson
2023-03-28 3:05 ` [RFC PATCH v2 08/44] target/loongarch: Implement vsadd/vssub Song Gao
2023-03-28 20:03 ` Richard Henderson
2023-03-28 3:05 ` [RFC PATCH v2 09/44] target/loongarch: Implement vhaddw/vhsubw Song Gao
2023-03-28 20:17 ` Richard Henderson
2023-03-29 3:24 ` gaosong
2023-03-29 15:25 ` Richard Henderson
2023-03-28 3:05 ` [RFC PATCH v2 10/44] target/loongarch: Implement vaddw/vsubw Song Gao
2023-03-28 20:28 ` Richard Henderson
2023-03-28 3:05 ` [RFC PATCH v2 11/44] target/loongarch: Implement vavg/vavgr Song Gao
2023-03-28 20:31 ` Richard Henderson
2023-03-28 3:05 ` [RFC PATCH v2 12/44] target/loongarch: Implement vabsd Song Gao
2023-03-28 20:32 ` Richard Henderson
2023-03-28 3:06 ` [RFC PATCH v2 13/44] target/loongarch: Implement vadda Song Gao
2023-03-28 20:33 ` Richard Henderson
2023-03-28 3:06 ` [RFC PATCH v2 14/44] target/loongarch: Implement vmax/vmin Song Gao
2023-03-28 20:39 ` Richard Henderson
2023-03-28 3:06 ` [RFC PATCH v2 15/44] target/loongarch: Implement vmul/vmuh/vmulw{ev/od} Song Gao
2023-03-28 20:46 ` Richard Henderson
2023-04-06 12:09 ` gaosong
2023-04-06 16:52 ` Richard Henderson
2023-03-28 3:06 ` [RFC PATCH v2 16/44] target/loongarch: Implement vmadd/vmsub/vmaddw{ev/od} Song Gao
2023-03-28 20:50 ` Richard Henderson
2023-03-28 3:06 ` [RFC PATCH v2 17/44] target/loongarch: Implement vdiv/vmod Song Gao
2023-03-28 20:52 ` Richard Henderson
2023-03-28 3:06 ` [RFC PATCH v2 18/44] target/loongarch: Implement vsat Song Gao
2023-04-01 5:03 ` Richard Henderson
2023-04-03 12:55 ` gaosong
2023-04-03 20:13 ` Richard Henderson
2023-04-04 2:11 ` gaosong
2023-04-04 3:46 ` Richard Henderson
2023-04-19 9:31 ` Song Gao
2023-04-19 11:06 ` Richard Henderson
2023-03-28 3:06 ` [RFC PATCH v2 19/44] target/loongarch: Implement vexth Song Gao
2023-04-01 5:07 ` Richard Henderson
2023-03-28 3:06 ` [RFC PATCH v2 20/44] target/loongarch: Implement vsigncov Song Gao
2023-04-01 5:11 ` Richard Henderson
2023-03-28 3:06 ` [RFC PATCH v2 21/44] target/loongarch: Implement vmskltz/vmskgez/vmsknz Song Gao
2023-04-01 5:20 ` Richard Henderson
2023-03-28 3:06 ` [RFC PATCH v2 22/44] target/loongarch: Implement LSX logic instructions Song Gao
2023-04-01 5:31 ` Richard Henderson
2023-03-28 3:06 ` [RFC PATCH v2 23/44] target/loongarch: Implement vsll vsrl vsra vrotr Song Gao
2023-04-01 5:38 ` Richard Henderson
2023-03-28 3:06 ` [RFC PATCH v2 24/44] target/loongarch: Implement vsllwil vextl Song Gao
2023-04-01 5:40 ` Richard Henderson
2023-03-28 3:06 ` [RFC PATCH v2 25/44] target/loongarch: Implement vsrlr vsrar Song Gao
2023-04-01 5:42 ` Richard Henderson
2023-03-28 3:06 ` [RFC PATCH v2 26/44] target/loongarch: Implement vsrln vsran Song Gao
2023-04-01 5:46 ` Richard Henderson
2023-03-28 3:06 ` [RFC PATCH v2 27/44] target/loongarch: Implement vsrlrn vsrarn Song Gao
2023-04-01 5:53 ` Richard Henderson
2023-03-28 3:06 ` [RFC PATCH v2 28/44] target/loongarch: Implement vssrln vssran Song Gao
2023-04-02 3:26 ` Richard Henderson
2023-03-28 3:06 ` [RFC PATCH v2 29/44] target/loongarch: Implement vssrlrn vssrarn Song Gao
2023-04-02 3:31 ` Richard Henderson
2023-03-28 3:06 ` [RFC PATCH v2 30/44] target/loongarch: Implement vclo vclz Song Gao
2023-04-02 3:34 ` Richard Henderson
2023-04-07 7:40 ` gaosong
2023-04-07 16:46 ` Richard Henderson
2023-03-28 3:06 ` [RFC PATCH v2 31/44] target/loongarch: Implement vpcnt Song Gao
2023-04-02 3:35 ` Richard Henderson
2023-03-28 3:06 ` [RFC PATCH v2 32/44] target/loongarch: Implement vbitclr vbitset vbitrev Song Gao
2023-04-02 5:14 ` Richard Henderson
2023-03-28 3:06 ` [RFC PATCH v2 33/44] target/loongarch: Implement vfrstp Song Gao
2023-04-02 5:17 ` Richard Henderson
2023-04-03 2:27 ` gaosong
2023-03-28 3:06 ` [RFC PATCH v2 34/44] target/loongarch: Implement LSX fpu arith instructions Song Gao
2023-04-02 5:19 ` Richard Henderson
2023-03-28 3:06 ` [RFC PATCH v2 35/44] target/loongarch: Implement LSX fpu fcvt instructions Song Gao
2023-04-02 5:22 ` Richard Henderson
2023-03-28 3:06 ` [RFC PATCH v2 36/44] target/loongarch: Implement vseq vsle vslt Song Gao
2023-04-02 5:27 ` Richard Henderson
2023-03-28 3:06 ` [RFC PATCH v2 37/44] target/loongarch: Implement vfcmp Song Gao
2023-04-04 0:47 ` Richard Henderson
2023-03-28 3:06 ` [RFC PATCH v2 38/44] target/loongarch: Implement vbitsel vset Song Gao
2023-04-04 1:03 ` Richard Henderson
2023-04-11 11:37 ` gaosong
2023-04-12 6:53 ` Richard Henderson [this message]
2023-04-13 2:53 ` gaosong
2023-04-13 10:06 ` Richard Henderson
2023-04-14 3:22 ` gaosong
2023-04-14 3:47 ` gaosong
2023-03-28 3:06 ` [RFC PATCH v2 39/44] target/loongarch: Implement vinsgr2vr vpickve2gr vreplgr2vr Song Gao
2023-04-04 1:09 ` Richard Henderson
2023-03-28 3:06 ` [RFC PATCH v2 40/44] target/loongarch: Implement vreplve vpack vpick Song Gao
2023-04-04 1:17 ` Richard Henderson
2023-03-28 3:06 ` [RFC PATCH v2 41/44] target/loongarch: Implement vilvl vilvh vextrins vshuf Song Gao
2023-04-04 1:31 ` Richard Henderson
2023-03-28 3:06 ` [RFC PATCH v2 42/44] target/loongarch: Implement vld vst Song Gao
2023-04-04 3:35 ` Richard Henderson
2023-03-28 3:06 ` [RFC PATCH v2 43/44] target/loongarch: Implement vldi Song Gao
2023-04-04 3:39 ` Richard Henderson
2023-04-18 9:03 ` Song Gao
2023-03-28 3:06 ` [RFC PATCH v2 44/44] target/loongarch: Use {set/get}_gpr replace to cpu_fpr Song Gao
2023-04-04 3:44 ` 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=f785b8f3-d7f3-a481-81c3-3603542a0111@linaro.org \
--to=richard.henderson@linaro.org \
--cc=gaosong@loongson.cn \
--cc=qemu-devel@nongnu.org \
/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).