qemu-devel.nongnu.org archive mirror
 help / color / mirror / Atom feed
From: Richard Henderson <richard.henderson@linaro.org>
To: Song Gao <gaosong@loongson.cn>, qemu-devel@nongnu.org
Subject: Re: [PATCH v4 32/48] target/loongarch: Implement xvssrln xvssran
Date: Wed, 30 Aug 2023 16:22:29 -0700	[thread overview]
Message-ID: <8c857e08-16bd-160b-69da-afffcab8a31c@linaro.org> (raw)
In-Reply-To: <20230830084902.2113960-33-gaosong@loongson.cn>

On 8/30/23 01:48, Song Gao wrote:
>   void HELPER(vssrlni_d_q)(void *vd, void *vj, uint64_t imm, uint32_t desc)
>   {
> -    Int128 shft_res1, shft_res2, mask;
> +    int i, j;
> +    Int128 shft_res[4], mask;
>       VReg *Vd = (VReg *)vd;
>       VReg *Vj = (VReg *)vj;
> +    int oprsz = simd_oprsz(desc);
>   
> -    if (imm == 0) {
> -        shft_res1 = Vj->Q(0);
> -        shft_res2 = Vd->Q(0);
> -    } else {
> -        shft_res1 = int128_urshift(Vj->Q(0), imm);
> -        shft_res2 = int128_urshift(Vd->Q(0), imm);
> -    }
>       mask = int128_sub(int128_lshift(int128_one(), 63), int128_one());
>   
> -    if (int128_ult(mask, shft_res1)) {
> -        Vd->D(0) = int128_getlo(mask);
> -    }else {
> -        Vd->D(0) = int128_getlo(shft_res1);
> -    }
> -
> -    if (int128_ult(mask, shft_res2)) {
> -        Vd->D(1) = int128_getlo(mask);
> -    }else {
> -        Vd->D(1) = int128_getlo(shft_res2);
> +    for (i = 0; i < oprsz / 16; i++) {
> +        if (imm == 0) {
> +            shft_res[2 * i] = Vj->Q(i);
> +            shft_res[2 * i + 1] = Vd->Q(i);
> +        } else {
> +            shft_res[2 * i] = int128_urshift(Vj->Q(i), imm);
> +            shft_res[2 * i + 1] = int128_urshift(Vd->Q(i), imm);
> +        }
> +        for (j = 2 * i; j <= 2 * i + 1; j++) {
> +            if (int128_ult(mask, shft_res[j])) {
> +                Vd->D(j) = int128_getlo(mask);
> +            }else {
> +                Vd->D(j) = int128_getlo(shft_res[j]);
> +            }
> +        }
>       }
>   }

This does not require an array of shift_res.
In fact, I encourage you to split out a helper.


r~


  reply	other threads:[~2023-08-30 23:23 UTC|newest]

Thread overview: 86+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2023-08-30  8:48 [PATCH v4 00/48] Add LoongArch LASX instructions Song Gao
2023-08-30  8:48 ` [PATCH v4 01/48] target/loongarch: Add LASX data support Song Gao
2023-08-30  8:48 ` [PATCH v4 02/48] target/loongarch: meson.build support build LASX Song Gao
2023-08-30  8:48 ` [PATCH v4 03/48] target/loongarch: Add CHECK_ASXE maccro for check LASX enable Song Gao
2023-08-30  8:48 ` [PATCH v4 04/48] target/loongarch: Add avail_LASX to check LASX instructions Song Gao
2023-08-30 14:20   ` Richard Henderson
2023-08-30  8:48 ` [PATCH v4 05/48] target/loongarch: Implement xvadd/xvsub Song Gao
2023-08-30 15:38   ` Richard Henderson
2023-08-30  8:48 ` [PATCH v4 06/48] target/loongarch: Implement xvreplgr2vr Song Gao
2023-08-30 16:09   ` Richard Henderson
2023-08-31  7:17     ` gaosong
2023-08-30  8:48 ` [PATCH v4 07/48] target/loongarch: Implement xvaddi/xvsubi Song Gao
2023-08-30  8:48 ` [PATCH v4 08/48] target/loongarch: Implement xvneg Song Gao
2023-08-30  8:48 ` [PATCH v4 09/48] target/loongarch: Implement xvsadd/xvssub Song Gao
2023-08-30  8:48 ` [PATCH v4 10/48] target/loongarch: rename lsx_helper.c to vec_helper.c Song Gao
2023-08-30 18:06   ` Richard Henderson
2023-08-31  7:17     ` gaosong
2023-08-30  8:48 ` [PATCH v4 11/48] target/loongarch: Implement xvhaddw/xvhsubw Song Gao
2023-08-30 18:12   ` Richard Henderson
2023-08-31  7:17     ` gaosong
2023-08-31 15:06       ` Richard Henderson
2023-08-30  8:48 ` [PATCH v4 12/48] target/loongarch: Implement xvaddw/xvsubw Song Gao
2023-08-30  8:48 ` [PATCH v4 13/48] target/loongarch: Implement xavg/xvagr Song Gao
2023-08-30 18:14   ` Richard Henderson
2023-08-30  8:48 ` [PATCH v4 14/48] target/loongarch: Implement xvabsd Song Gao
2023-08-30  8:48 ` [PATCH v4 15/48] target/loongarch: Implement xvadda Song Gao
2023-08-30 20:45   ` Richard Henderson
2023-08-30  8:48 ` [PATCH v4 16/48] target/loongarch: Implement xvmax/xvmin Song Gao
2023-08-30 20:50   ` Richard Henderson
2023-08-30  8:48 ` [PATCH v4 17/48] target/loongarch: Implement xvmul/xvmuh/xvmulw{ev/od} Song Gao
2023-08-30 18:23   ` Richard Henderson
2023-08-30  8:48 ` [PATCH v4 18/48] target/loongarch: Implement xvmadd/xvmsub/xvmaddw{ev/od} Song Gao
2023-08-30 21:05   ` Richard Henderson
2023-08-30  8:48 ` [PATCH v4 19/48] target/loongarch; Implement xvdiv/xvmod Song Gao
2023-08-30 22:14   ` Richard Henderson
2023-08-30  8:48 ` [PATCH v4 20/48] target/loongarch: Implement xvsat Song Gao
2023-08-30 22:19   ` Richard Henderson
2023-08-30  8:48 ` [PATCH v4 21/48] target/loongarch: Implement xvexth Song Gao
2023-08-30 22:34   ` Richard Henderson
2023-08-30  8:48 ` [PATCH v4 22/48] target/loongarch: Implement vext2xv Song Gao
2023-08-30 22:36   ` Richard Henderson
2023-08-30  8:48 ` [PATCH v4 23/48] target/loongarch: Implement xvsigncov Song Gao
2023-08-30  8:48 ` [PATCH v4 24/48] target/loongarch: Implement xvmskltz/xvmskgez/xvmsknz Song Gao
2023-08-30 22:44   ` Richard Henderson
2023-08-30  8:48 ` [PATCH v4 25/48] target/loognarch: Implement xvldi Song Gao
2023-08-30  8:48 ` [PATCH v4 26/48] target/loongarch: Implement LASX logic instructions Song Gao
2023-08-30 22:46   ` Richard Henderson
2023-08-30  8:48 ` [PATCH v4 27/48] target/loongarch: Implement xvsll xvsrl xvsra xvrotr Song Gao
2023-08-30  8:48 ` [PATCH v4 28/48] target/loongarch: Implement xvsllwil xvextl Song Gao
2023-08-30 22:52   ` Richard Henderson
2023-08-30  8:48 ` [PATCH v4 29/48] target/loongarch: Implement xvsrlr xvsrar Song Gao
2023-08-30 22:54   ` Richard Henderson
2023-08-30  8:48 ` [PATCH v4 30/48] target/loongarch: Implement xvsrln xvsran Song Gao
2023-08-30 22:57   ` Richard Henderson
2023-08-30  8:48 ` [PATCH v4 31/48] target/loongarch: Implement xvsrlrn xvsrarn Song Gao
2023-08-30 23:00   ` Richard Henderson
2023-08-30  8:48 ` [PATCH v4 32/48] target/loongarch: Implement xvssrln xvssran Song Gao
2023-08-30 23:22   ` Richard Henderson [this message]
2023-08-30  8:48 ` [PATCH v4 33/48] target/loongarch: Implement xvssrlrn xvssrarn Song Gao
2023-08-30 23:26   ` Richard Henderson
2023-08-30  8:48 ` [PATCH v4 34/48] target/loongarch: Implement xvclo xvclz Song Gao
2023-08-30 23:27   ` Richard Henderson
2023-08-30  8:48 ` [PATCH v4 35/48] target/loongarch: Implement xvpcnt Song Gao
2023-08-30 23:28   ` Richard Henderson
2023-08-30  8:48 ` [PATCH v4 36/48] target/loongarch: Implement xvbitclr xvbitset xvbitrev Song Gao
2023-08-30 23:30   ` Richard Henderson
2023-08-30  8:48 ` [PATCH v4 37/48] target/loongarch: Implement xvfrstp Song Gao
2023-08-30 23:34   ` Richard Henderson
2023-08-30  8:48 ` [PATCH v4 38/48] target/loongarch: Implement LASX fpu arith instructions Song Gao
2023-08-30 23:37   ` Richard Henderson
2023-08-30  8:48 ` [PATCH v4 39/48] target/loongarch: Implement LASX fpu fcvt instructions Song Gao
2023-08-30 23:40   ` Richard Henderson
2023-08-30  8:48 ` [PATCH v4 40/48] target/loongarch: Implement xvseq xvsle xvslt Song Gao
2023-08-30 23:41   ` Richard Henderson
2023-08-30  8:48 ` [PATCH v4 41/48] target/loongarch: Implement xvfcmp Song Gao
2023-08-31  0:30   ` Richard Henderson
2023-08-30  8:48 ` [PATCH v4 42/48] target/loongarch: Implement xvbitsel xvset Song Gao
2023-08-31  0:32   ` Richard Henderson
2023-08-30  8:48 ` [PATCH v4 43/48] target/loongarch: Implement xvinsgr2vr xvpickve2gr Song Gao
2023-08-30  8:48 ` [PATCH v4 44/48] target/loongarch: Implement xvreplve xvinsve0 xvpickve xvb{sll/srl}v Song Gao
2023-08-30  8:48 ` [PATCH v4 45/48] target/loongarch: Implement xvpack xvpick xvilv{l/h} Song Gao
2023-08-31  0:35   ` Richard Henderson
2023-08-30  8:49 ` [PATCH v4 46/48] target/loongarch: Implement xvshuf xvperm{i} xvshuf4i xvextrins Song Gao
2023-08-30  8:49 ` [PATCH v4 47/48] target/loongarch: Implement xvld xvst Song Gao
2023-08-30  8:49 ` [PATCH v4 48/48] target/loongarch: CPUCFG support LASX Song Gao
2023-08-31  0:38   ` 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=8c857e08-16bd-160b-69da-afffcab8a31c@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).