On 4/20/23 09:07, Song Gao wrote:
+#define SETANYEQZ(NAME, MO) \ +void HELPER(NAME)(CPULoongArchState *env, uint32_t cd, uint32_t vj) \ +{ \ + bool ret = false; \ + VReg *Vj = &(env->fpr[vj].vreg); \ + \ + ret = do_match2(0, Vj->D(0), Vj->D(1), MO); \ + env->cf[cd & 0x7] = ret; \ +}
Good.
+ +#define SETALLNEZ(NAME, BIT, E) \ +void HELPER(NAME)(CPULoongArchState *env, uint32_t cd, uint32_t vj) \ +{ \ + int i; \ + bool ret = true; \ + VReg *Vj = &(env->fpr[vj].vreg); \ + \ + for (i = 0; i < LSX_LEN/BIT; i++) { \ + ret &= (Vj->E(i) != 0); \ + } \ + env->cf[cd & 0x7] = ret; \ +}
setallnez = !setanyeqz, so use !do_match2(). r~