qemu-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [RFC PATCH v2 21/44] target/loongarch: Implement vmskltz/vmskgez/vms


From: Richard Henderson
Subject: Re: [RFC PATCH v2 21/44] target/loongarch: Implement vmskltz/vmskgez/vmsknz
Date: Fri, 31 Mar 2023 22:20:37 -0700
User-agent: Mozilla/5.0 (X11; Linux x86_64; rv:102.0) Gecko/20100101 Thunderbird/102.9.0

On 3/27/23 20:06, Song Gao wrote:
+void HELPER(vmskltz_b)(CPULoongArchState *env, uint32_t vd, uint32_t vj)
+{
+    VReg temp;
+    VReg *Vd = &(env->fpr[vd].vreg);
+    VReg *Vj = &(env->fpr[vj].vreg);
+
+    temp.D(0) = 0;
+    temp.D(1) = 0;
+    temp.H(0) = do_vmskltz_b(Vj->D(0));
+    temp.H(0) |= (do_vmskltz_b(Vj->D(1)) << 8);
+    Vd->D(0) = temp.D(0);
+    Vd->D(1) = 0;
+}

Better as uint16_t temp, instead of a full VReg.

+static uint64_t do_vmskltz_d(int64_t val)
+{
+    uint64_t m = 0x8000000000000000ULL;
+    uint64_t c =  val & m;
+    c |= c << 63;
+    return c >> 63;
+}

No mask or shift left required.


r~



reply via email to

[Prev in Thread] Current Thread [Next in Thread]