package fixed_point file_number 0 "/inputs/subtree/xls/dslx/stdlib/fixed_point.x" file_number 1 "/inputs/subtree/xls/dslx/stdlib/std.x" fn __fixed_point__most_significant_bit_position(NB: bits[32] id=1, BE: bits[32] id=2) -> bits[33] { zero_ext.3: bits[33] = zero_ext(NB, new_bit_count=33, id=3) sign_ext.4: bits[33] = sign_ext(BE, new_bit_count=33, id=4) add.5: bits[33] = add(zero_ext.3, sign_ext.4, id=5, pos=[(0,193,60)]) literal.6: bits[33] = literal(value=1, id=6, pos=[(0,193,84)]) ret sub.7: bits[33] = sub(add.5, literal.6, id=7, pos=[(0,193,60)]) } fn __fixed_point__least_significant_bit_position(NB: bits[32] id=8, BE: bits[32] id=9) -> bits[32] { ret BE: bits[32] = param(name=BE, id=9) } fn __std__max__33_1(x: bits[33] id=10, y: bits[33] id=11) -> bits[33] { sgt.14: bits[1] = sgt(x, y, id=14, pos=[(1,93,71)]) S: bits[1] = literal(value=1, id=12, pos=[(1,93,11)]) N: bits[32] = literal(value=33, id=13, pos=[(1,93,20)]) ret sel.15: bits[33] = sel(sgt.14, cases=[y, x], id=15, pos=[(1,93,68)]) } fn __std__min__32_1(x: bits[32] id=16, y: bits[32] id=17) -> bits[32] { slt.20: bits[1] = slt(x, y, id=20, pos=[(1,110,71)]) S: bits[1] = literal(value=1, id=18, pos=[(1,110,11)]) N: bits[32] = literal(value=32, id=19, pos=[(1,110,20)]) ret sel.21: bits[32] = sel(slt.20, cases=[y, x], id=21, pos=[(1,110,68)]) } fn __itok__fixed_point__aligned_width(__token: token id=22, __activated: bits[1] id=23, NB_A: bits[32] id=24, BE_A: bits[32] id=25, NB_B: bits[32] id=26, BE_B: bits[32] id=27) -> (token, bits[32]) { lsb_a: bits[32] = invoke(NB_A, BE_A, to_apply=__fixed_point__least_significant_bit_position, id=44, pos=[(0,229,46)]) lsb_b: bits[32] = invoke(NB_B, BE_B, to_apply=__fixed_point__least_significant_bit_position, id=45, pos=[(0,230,46)]) literal.28: bits[32] = literal(value=0, id=28, pos=[(0,224,19)]) literal.35: bits[32] = literal(value=0, id=35, pos=[(0,225,19)]) msb_a: bits[33] = invoke(NB_A, BE_A, to_apply=__fixed_point__most_significant_bit_position, id=42, pos=[(0,227,45)]) msb_b: bits[33] = invoke(NB_B, BE_B, to_apply=__fixed_point__most_significant_bit_position, id=43, pos=[(0,228,45)]) invoke.47: bits[32] = invoke(lsb_a, lsb_b, to_apply=__std__min__32_1, id=47, pos=[(0,232,22)]) not.31: bits[1] = not(__activated, id=31) ugt.29: bits[1] = ugt(NB_A, literal.28, id=29, pos=[(0,224,12)]) not.38: bits[1] = not(__activated, id=38) ugt.36: bits[1] = ugt(NB_B, literal.35, id=36, pos=[(0,225,12)]) msb: bits[33] = invoke(msb_a, msb_b, to_apply=__std__max__33_1, id=46, pos=[(0,231,22)]) lsb: bits[33] = sign_ext(invoke.47, new_bit_count=33, id=48) or.32: bits[1] = or(not.31, ugt.29, id=32) or.39: bits[1] = or(not.38, ugt.36, id=39) sub.49: bits[33] = sub(msb, lsb, id=49, pos=[(0,233,19)]) literal.50: bits[33] = literal(value=1, id=50, pos=[(0,233,31)]) assert.33: token = assert(__token, or.32, message="Assertion failure via assert! @ /inputs/subtree/xls/dslx/stdlib/fixed_point.x:225:12-225:68", label="0_width_will_yield_nonsensical_results", id=33) assert.40: token = assert(__token, or.39, message="Assertion failure via assert! @ /inputs/subtree/xls/dslx/stdlib/fixed_point.x:226:12-226:68", label="0_width_will_yield_nonsensical_results", id=40) num_bits: bits[33] = add(sub.49, literal.50, id=51, pos=[(0,233,19)]) after_all.53: token = after_all(assert.33, assert.40, id=53) bit_slice.52: bits[32] = bit_slice(num_bits, start=0, width=32, id=52) literal.30: bits[8][38] = literal(value=[48, 95, 119, 105, 100, 116, 104, 95, 119, 105, 108, 108, 95, 121, 105, 101, 108, 100, 95, 110, 111, 110, 115, 101, 110, 115, 105, 99, 97, 108, 95, 114, 101, 115, 117, 108, 116, 115], id=30, pos=[(0,224,26)]) tuple.34: () = tuple(id=34) literal.37: bits[8][38] = literal(value=[48, 95, 119, 105, 100, 116, 104, 95, 119, 105, 108, 108, 95, 121, 105, 101, 108, 100, 95, 110, 111, 110, 115, 101, 110, 115, 105, 99, 97, 108, 95, 114, 101, 115, 117, 108, 116, 115], id=37, pos=[(0,225,26)]) tuple.41: () = tuple(id=41) ret tuple.54: (token, bits[32]) = tuple(after_all.53, bit_slice.52, id=54) } top fn __fixed_point__aligned_width(NB_A: bits[32] id=55, BE_A: bits[32] id=56, NB_B: bits[32] id=57, BE_B: bits[32] id=58) -> bits[32] { after_all.59: token = after_all(id=59) literal.60: bits[1] = literal(value=1, id=60) invoke.61: (token, bits[32]) = invoke(after_all.59, literal.60, NB_A, BE_A, NB_B, BE_B, to_apply=__itok__fixed_point__aligned_width, id=61) ret tuple_index.62: bits[32] = tuple_index(invoke.61, index=1, id=62) }