qemu-devel
[Top][All Lists]
Advanced

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

Re: [RFC PATCH 21/43] target/loongarch: Implement vmskltz/vmskgez/vmsknz


From: Richard Henderson
Subject: Re: [RFC PATCH 21/43] target/loongarch: Implement vmskltz/vmskgez/vmsknz
Date: Sat, 24 Dec 2022 10:31:02 -0800
User-agent: Mozilla/5.0 (X11; Linux x86_64; rv:102.0) Gecko/20100101 Thunderbird/102.4.2

On 12/24/22 00:16, Song Gao wrote:
+static void do_vmskltz(vec_t *Vd, vec_t *Vj, int bit, int n)
+{
+    switch (bit) {
+    case 8:
+        Vd->H[0] |= ((0x80 & Vj->B[n]) == 0) << n;
+        break;
+    case 16:
+        Vd->H[0] |= ((0x8000 & Vj->H[n]) == 0) << n;
+        break;
+    case 32:
+        Vd->H[0] |= ((0x80000000 & Vj->W[n]) == 0) << n;
+        break;
+    case 64:
+        Vd->H[0] |= ((0x8000000000000000 & Vj->D[n]) == 0) << n;
+        break;
+    default:
+        g_assert_not_reached();
+    }
+}
+
+static void do_vmskgez(vec_t *Vd, vec_t *Vj, int bit, int n)
+{
+    Vd->H[0] |= !((0x80 & Vj->B[n]) == 0) << n;
+}
+
+static void do_vmsknz(vec_t *Vd, vec_t *Vj, int bit, int n)
+{
+    Vd->H[0] |=  (Vj->B[n] == 0) << n;
+}
The bit collection and compaction can be done with a set of integer shifts.
E.g. helper_cmpbe0 in target/alpha/int_helper.c.


r~



reply via email to

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