package hfloat16 file_number 0 "/inputs/subtree/xls/dslx/stdlib/std.x" file_number 1 "/inputs/subtree/xls/dslx/stdlib/apfloat.x" file_number 2 "/inputs/subtree/xls/dslx/stdlib/hfloat16.x" fn __std__mask_bits__5() -> bits[5] { literal.2: bits[5] = literal(value=0, id=2, pos=[(0,835,41)]) X: bits[32] = literal(value=5, id=1, pos=[(0,835,17)]) ret not.3: bits[5] = not(literal.2, id=3, pos=[(0,835,40)]) } fn __apfloat__is_nan__5_10(x: (bits[1], bits[5], bits[10]) id=4) -> bits[1] { x_bexp: bits[5] = tuple_index(x, index=1, id=7, pos=[(1,71,6)]) invoke.8: bits[5] = invoke(to_apply=__std__mask_bits__5, id=8, pos=[(1,71,29)]) x_fraction: bits[10] = tuple_index(x, index=2, id=10, pos=[(1,71,44)]) literal.11: bits[10] = literal(value=0, id=11, pos=[(1,71,57)]) eq.9: bits[1] = eq(x_bexp, invoke.8, id=9, pos=[(1,71,6)]) ne.12: bits[1] = ne(x_fraction, literal.11, id=12, pos=[(1,71,44)]) EXP_SZ: bits[32] = literal(value=5, id=5, pos=[(1,70,14)]) FRACTION_SZ: bits[32] = literal(value=10, id=6, pos=[(1,70,27)]) ret and.13: bits[1] = and(eq.9, ne.12, id=13, pos=[(1,71,6)]) } fn __apfloat__flatten__5_10_16(x: (bits[1], bits[5], bits[10]) id=14) -> bits[16] { x_sign: bits[1] = tuple_index(x, index=0, id=18, pos=[(1,370,5)]) x_bexp: bits[5] = tuple_index(x, index=1, id=19, pos=[(1,370,15)]) concat.20: bits[6] = concat(x_sign, x_bexp, id=20, pos=[(1,370,5)]) x_fraction: bits[10] = tuple_index(x, index=2, id=21, pos=[(1,370,25)]) EXP_SZ: bits[32] = literal(value=5, id=15, pos=[(1,368,15)]) FRACTION_SZ: bits[32] = literal(value=10, id=16, pos=[(1,368,28)]) TOTAL_SZ: bits[32] = literal(value=16, id=17, pos=[(1,368,46)]) ret concat.22: bits[16] = concat(concat.20, x_fraction, id=22, pos=[(1,370,5)]) } fn __apfloat__is_zero_or_subnormal__5_10(x: (bits[1], bits[5], bits[10]) id=23) -> bits[1] { x_bexp: bits[5] = tuple_index(x, index=1, id=26, pos=[(1,804,5)]) literal.27: bits[5] = literal(value=0, id=27, pos=[(1,804,14)]) EXP_SZ: bits[32] = literal(value=5, id=24, pos=[(1,802,28)]) FRACTION_SZ: bits[32] = literal(value=10, id=25, pos=[(1,802,41)]) ret eq.28: bits[1] = eq(x_bexp, literal.27, id=28, pos=[(1,804,5)]) } fn __apfloat__eq_2__5_10(x: (bits[1], bits[5], bits[10]) id=29, y: (bits[1], bits[5], bits[10]) id=30) -> bits[1] { invoke.33: bits[1] = invoke(x, to_apply=__apfloat__is_nan__5_10, id=33, pos=[(1,2300,15)]) invoke.34: bits[1] = invoke(y, to_apply=__apfloat__is_nan__5_10, id=34, pos=[(1,2300,28)]) invoke.37: bits[16] = invoke(x, to_apply=__apfloat__flatten__5_10_16, id=37, pos=[(1,2301,17)]) invoke.38: bits[16] = invoke(y, to_apply=__apfloat__flatten__5_10_16, id=38, pos=[(1,2301,31)]) invoke.40: bits[1] = invoke(x, to_apply=__apfloat__is_zero_or_subnormal__5_10, id=40, pos=[(1,2301,60)]) invoke.41: bits[1] = invoke(y, to_apply=__apfloat__is_zero_or_subnormal__5_10, id=41, pos=[(1,2301,87)]) or.35: bits[1] = or(invoke.33, invoke.34, id=35, pos=[(1,2300,15)]) eq.39: bits[1] = eq(invoke.37, invoke.38, id=39, pos=[(1,2301,17)]) and.42: bits[1] = and(invoke.40, invoke.41, id=42, pos=[(1,2301,60)]) not.36: bits[1] = not(or.35, id=36, pos=[(1,2300,7)]) literal.44: bits[1] = literal(value=0, id=44, pos=[(1,2303,8)]) or.43: bits[1] = or(eq.39, and.42, id=43, pos=[(1,2301,17)]) EXP_SZ: bits[32] = literal(value=5, id=31, pos=[(1,2298,12)]) FRACTION_SZ: bits[32] = literal(value=10, id=32, pos=[(1,2298,25)]) ret sel.45: bits[1] = sel(not.36, cases=[literal.44, or.43], id=45, pos=[(1,2300,4)]) } top fn __hfloat16__eq_2(x: (bits[1], bits[5], bits[10]) id=46, y: (bits[1], bits[5], bits[10]) id=47) -> bits[1] { ret invoke.48: bits[1] = invoke(x, y, to_apply=__apfloat__eq_2__5_10, id=48, pos=[(2,88,53)]) }