package acm_random file_number 0 "/inputs/subtree/xls/dslx/stdlib/std.x" file_number 1 "/inputs/subtree/xls/dslx/stdlib/acm_random.x" fn __std__sgt__32(x: bits[32] id=1, y: bits[32] id=2) -> bits[1] { zero_ext.4: bits[32] = zero_ext(x, new_bit_count=32, id=4) zero_ext.5: bits[32] = zero_ext(y, new_bit_count=32, id=5) N: bits[32] = literal(value=32, id=3, pos=[(0,939,11)]) ret sgt.6: bits[1] = sgt(zero_ext.4, zero_ext.5, id=6, pos=[(0,939,50)]) } fn __acm_random__rng_next(s: (bits[32]) id=7) -> ((bits[32]), bits[32]) { s_seed: bits[32] = tuple_index(s, index=0, id=10, pos=[(1,36,20)]) zero_ext.11: bits[64] = zero_ext(s_seed, new_bit_count=64, id=11) A: bits[64] = literal(value=16807, id=9, pos=[(1,35,14)]) M: bits[32] = literal(value=2147483647, id=8, pos=[(1,26,10)]) product: bits[64] = umul(zero_ext.11, A, id=12, pos=[(1,36,20)]) literal.13: bits[64] = literal(value=31, id=13, pos=[(1,37,32)]) zero_ext.15: bits[64] = zero_ext(M, new_bit_count=64, id=15) shrl.14: bits[64] = shrl(product, literal.13, id=14, pos=[(1,37,21)]) and.16: bits[64] = and(product, zero_ext.15, id=16, pos=[(1,37,43)]) add.17: bits[64] = add(shrl.14, and.16, id=17, pos=[(1,37,21)]) new_seed: bits[32] = bit_slice(add.17, start=0, width=32, id=18) invoke.19: bits[1] = invoke(new_seed, M, to_apply=__std__sgt__32, id=19, pos=[(1,38,30)]) sub.20: bits[32] = sub(new_seed, M, id=20, pos=[(1,38,46)]) new_seed__1: bits[32] = sel(invoke.19, cases=[new_seed, sub.20], id=21, pos=[(1,38,19)]) tuple.22: (bits[32]) = tuple(new_seed__1, id=22, pos=[(1,39,11)]) ret tuple.23: ((bits[32]), bits[32]) = tuple(tuple.22, new_seed__1, id=23, pos=[(1,39,4)]) } top fn __acm_random__rng_next64(s: (bits[32]) id=24) -> ((bits[32]), bits[64]) { invoke.26: ((bits[32]), bits[32]) = invoke(s, to_apply=__acm_random__rng_next, id=26, pos=[(1,46,29)]) M: bits[32] = literal(value=2147483647, id=25, pos=[(1,26,10)]) next0: bits[32] = tuple_index(invoke.26, index=1, id=28, pos=[(1,46,12)]) zero_ext.35: bits[64] = zero_ext(M, new_bit_count=64, id=35) literal.36: bits[64] = literal(value=1, id=36, pos=[(1,48,64)]) s__1: (bits[32]) = tuple_index(invoke.26, index=0, id=27, pos=[(1,46,9)]) zero_ext.32: bits[64] = zero_ext(next0, new_bit_count=64, id=32) literal.33: bits[64] = literal(value=1, id=33, pos=[(1,48,40)]) sub.37: bits[64] = sub(zero_ext.35, literal.36, id=37, pos=[(1,48,52)]) invoke.29: ((bits[32]), bits[32]) = invoke(s__1, to_apply=__acm_random__rng_next, id=29, pos=[(1,47,29)]) sub.34: bits[64] = sub(zero_ext.32, literal.33, id=34, pos=[(1,48,24)]) sign_ext.38: bits[64] = sign_ext(sub.37, new_bit_count=64, id=38) next1: bits[32] = tuple_index(invoke.29, index=1, id=31, pos=[(1,47,12)]) smul.39: bits[64] = smul(sub.34, sign_ext.38, id=39, pos=[(1,48,24)]) zero_ext.40: bits[64] = zero_ext(next1, new_bit_count=64, id=40) result: bits[64] = add(smul.39, zero_ext.40, id=41, pos=[(1,48,24)]) s__2: (bits[32]) = tuple_index(invoke.29, index=0, id=30, pos=[(1,47,9)]) sign_ext.42: bits[64] = sign_ext(result, new_bit_count=64, id=42) ret tuple.43: ((bits[32]), bits[64]) = tuple(s__2, sign_ext.42, id=43, pos=[(1,49,4)]) }