Browse Source

rvv: vsbc/vmsbc behavior of the sub order

pull/396/head
Max Lin 6 years ago
committed by Chih-Min Chao
parent
commit
169dfe7ceb
  1. 2
      riscv/insns/vmsbc_vvm.h
  2. 2
      riscv/insns/vmsbc_vxm.h
  3. 2
      riscv/insns/vsbc_vvm.h
  4. 2
      riscv/insns/vsbc_vxm.h

2
riscv/insns/vmsbc_vvm.h

@ -6,7 +6,7 @@ VI_VV_LOOP_CARRY
const uint128_t op_mask = (UINT64_MAX >> (64 - sew));
uint64_t carry = insn.v_vm() == 0 ? (v0 >> mpos) & 0x1 : 0;
uint128_t res = (op_mask & vs1) - (op_mask & vs2) - carry;
uint128_t res = (op_mask & vs2) - (op_mask & vs1) - carry;
carry = (res >> sew) & 0x1u;
vd = (vd & ~mmask) | ((carry << mpos) & mmask);

2
riscv/insns/vmsbc_vxm.h

@ -6,7 +6,7 @@ VI_XI_LOOP_CARRY
const uint128_t op_mask = (UINT64_MAX >> (64 - sew));
uint64_t carry = insn.v_vm() == 0 ? (v0 >> mpos) & 0x1 : 0;
uint128_t res = (op_mask & rs1) - (op_mask & vs2) - carry;
uint128_t res = (op_mask & vs2) - (op_mask & rs1) - carry;
carry = (res >> sew) & 0x1u;
vd = (vd & ~mmask) | ((carry << mpos) & mmask);

2
riscv/insns/vsbc_vvm.h

@ -5,6 +5,6 @@ VI_VV_LOOP_WITH_CARRY
const uint128_t op_mask = (UINT64_MAX >> (64 - sew));
uint64_t carry = (v0 >> mpos) & 0x1;
uint128_t res = (op_mask & vs1) - (op_mask & vs2) - carry;
uint128_t res = (op_mask & vs2) - (op_mask & vs1) - carry;
vd = res;
})

2
riscv/insns/vsbc_vxm.h

@ -5,6 +5,6 @@ VI_XI_LOOP_WITH_CARRY
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;
uint128_t res = (op_mask & vs2) - (op_mask & rs1) - carry;
vd = res;
})

Loading…
Cancel
Save