// vmulhsu.vv vd, vs2, vs1 VI_LOOP_BASE switch(sew) { case e8: { auto &vd = P.VU.elt(rd_num, i); auto vs2 = P.VU.elt(rs2_num, i); auto vs1 = P.VU.elt(rs1_num, i); vd = ((int16_t)vs2 * (uint16_t)vs1) >> sew; break; } case e16: { auto &vd = P.VU.elt(rd_num, i); auto vs2 = P.VU.elt(rs2_num, i); auto vs1 = P.VU.elt(rs1_num, i); vd = ((int32_t)vs2 * (uint32_t)vs1) >> sew; break; } case e32: { auto &vd = P.VU.elt(rd_num, i); auto vs2 = P.VU.elt(rs2_num, i); auto vs1 = P.VU.elt(rs1_num, i); vd = ((int64_t)vs2 * (uint64_t)vs1) >> sew; break; } default: { auto &vd = P.VU.elt(rd_num, i); auto vs2 = P.VU.elt(rs2_num, i); auto vs1 = P.VU.elt(rs1_num, i); vd = ((int128_t)vs2 * (uint128_t)vs1) >> sew; break; } } VI_LOOP_END