aboutsummaryrefslogtreecommitdiff
path: root/riscv/insns/vwmulsu_vv.h
blob: 9786adb9ec312423aa3ee1bcb24b63da68c4a5c2 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
// vwmulsu.vv vd, vs2, vs1
VI_CHECK_DSS(true);
VI_VV_LOOP_WIDEN
({
  switch(P.VU.vsew) {
  case e8:
    P.VU.elt<uint16_t>(rd_num, i) = (int16_t)(int8_t)vs2 * (int16_t)(uint8_t)vs1;
    break;
  case e16:
    P.VU.elt<uint32_t>(rd_num, i) = (int32_t)(int16_t)vs2 * (int32_t)(uint16_t)vs1;
    break;
  default:
    P.VU.elt<uint64_t>(rd_num, i) = (int64_t)(int32_t)vs2 * (int64_t)(uint32_t)vs1;
    break;
  }
})