aboutsummaryrefslogtreecommitdiff
path: root/riscv/insns/vadc_vxm.h
blob: 6c6e6dcbcfd09a22cfd901c96d31b50cf68c4225 (plain)
1
2
3
4
5
6
7
8
9
10
11
// vadc.vxm vd, vs2, rs1
require(!(insn.rd() == 0 && P.VU.vlmul > 1));
VI_VX_LOOP
({
  auto &v0 = P.VU.elt<uint64_t>(0, midx);
  const uint128_t op_mask = (UINT64_MAX >> (64 - sew));
  uint64_t carry = (v0 >> mpos) & 0x1;

  uint128_t res = (op_mask & rs1) + (op_mask & vs2) + carry;
  vd = res;
})