[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~
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- Re: [RFC PATCH v2 21/44] target/loongarch: Implement vmskltz/vmskgez/vmsknz,
Richard Henderson <=