def cr.lrw.inc
import bend-osdev-crypto@0.1.0.0/lrw.bend as Lrwimport Base
import bend-osdev-gf@0.1.0.0/gf128.bend as G
52# i + 1, modulo 2^128
53def cr.lrw.inc(i: G.Gf128) -> G.Gf128:
54 match i:
55 case G.Gf128{w0, w1, w2, w3}:
56 +a3 = U32.add(w3, 1)
57 +c3 = U32.is_eq(a3, 0)
58 +a2 = cr.lrw.carry(c3, w2)
59 +c2 = Bool.and(c3, U32.is_eq(a2, 0))
60 +a1 = cr.lrw.carry(c2, w1)
61 +c1 = Bool.and(c2, U32.is_eq(a1, 0))
62 G.Gf128{cr.lrw.carry(c1, w0), a1, a2, a3}