Skip to content

Feature request #2

bacelar edited this page Dec 11, 2021 · 3 revisions

allow aliasing between in/out reg ptr arguments (update in-place)

Goal

Sometimes, the checks performed by Jasmin in checking non-aliasing between input and output reg ptr arguments. Specifically, ...

fn _bn_mulm
( reg ptr u64[NLIMBS] a b r
) -> reg ptr u64[NLIMBS] {
  stack u64[NLIMBS] tmp;
  stack u64[2*NLIMBS] tmp2;
  tmp2 = __bn_muln(a, b, tmp2);
  r = __bn_rdcn(tmp2, r, tmp);
  return r;
}

fn _bn_mulmU // update inplace
( reg ptr u64[NLIMBS] a b
) -> reg ptr u64[NLIMBS] {
  stack u64[NLIMBS] tmp;
  stack u64[2*NLIMBS] tmp2;
  tmp2 = __bn_muln(a, b, tmp2);
  a = __bn_rdcn(tmp2, a, tmp);
  return a;
}
Clone this wiki locally