package fixed_point file_number 0 "/inputs/subtree/xls/dslx/stdlib/std.x" file_number 1 "/inputs/subtree/xls/dslx/stdlib/fixed_point.x" fn __std__abs__32(x: bits[32] id=1) -> bits[32] { literal.3: bits[32] = literal(value=0, id=3, pos=[(0,515,56)]) slt.4: bits[1] = slt(x, literal.3, id=4, pos=[(0,515,52)]) neg.5: bits[32] = neg(x, id=5, pos=[(0,515,69)]) BITS: bits[32] = literal(value=32, id=2, pos=[(0,515,11)]) ret sel.6: bits[32] = sel(slt.4, cases=[x, neg.5], id=6, pos=[(0,515,49)]) } fn __fixed_point__num_nonzero_integer_bits(NUM_BITS: bits[32] id=7, BINARY_EXPONENT: bits[32] id=8) -> bits[32] { invoke.11: bits[32] = invoke(BINARY_EXPONENT, to_apply=__std__abs__32, id=11, pos=[(1,129,19)]) zero_ext.16: bits[33] = zero_ext(NUM_BITS, new_bit_count=33, id=16) sign_ext.17: bits[33] = sign_ext(BINARY_EXPONENT, new_bit_count=33, id=17) sign_ext.12: bits[33] = sign_ext(invoke.11, new_bit_count=33, id=12) zero_ext.13: bits[33] = zero_ext(NUM_BITS, new_bit_count=33, id=13) add.18: bits[33] = add(zero_ext.16, sign_ext.17, id=18, pos=[(1,132,13)]) literal.9: bits[32] = literal(value=0, id=9, pos=[(1,128,25)]) sge.14: bits[1] = sge(sign_ext.12, zero_ext.13, id=14, pos=[(1,129,19)]) bit_slice.19: bits[32] = bit_slice(add.18, start=0, width=32, id=19) literal.15: bits[32] = literal(value=0, id=15, pos=[(1,130,12)]) slt.10: bits[1] = slt(BINARY_EXPONENT, literal.9, id=10, pos=[(1,128,7)]) sel.20: bits[32] = sel(sge.14, cases=[bit_slice.19, literal.15], id=20, pos=[(1,129,8)]) ret sel.21: bits[32] = sel(slt.10, cases=[NUM_BITS, sel.20], id=21, pos=[(1,128,4)]) } top fn __fixed_point__num_nonzero_fractional_bits(NUM_BITS: bits[32] id=22, BINARY_EXPONENT: bits[32] id=23) -> bits[32] { invoke.24: bits[32] = invoke(NUM_BITS, BINARY_EXPONENT, to_apply=__fixed_point__num_nonzero_integer_bits, id=24, pos=[(1,150,39)]) ret sub.25: bits[32] = sub(NUM_BITS, invoke.24, id=25, pos=[(1,150,4)]) }