On 6/18/20 10:37 PM, Lijun Pan wrote: > Do you mean writing two functions directly, > > void helper_vmulhsw(ppc_avr_t *r, ppc_avr_t *a, ppc_avr_t *b) > { > int i; > > for (i = 0; i < 4; i++) { > r->s32[i] = (int32_t)((int64_t)a->s32[i] * (int64_t)b->s32[i]) >> 32); > } > } > > void helper_vmulhuw(ppc_avr_t *r, ppc_avr_t *a, ppc_avr_t *b) > { > int i; > > for (i = 0; i < 4; i++) { > r->u32[i] = (uint32_t)((uint64_t)a->u32[i] * (uint64_t)b->u32[i]) >> > 32); > } > }
That works for me. r~