package bfloat16 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/bfloat16.x" top fn __bfloat16__to_int16(x: (bits[1], bits[8], bits[7]) id=135) -> bits[16] { x_bexp__2: bits[8] = tuple_index(x, index=1, id=339, pos=[(1,266,6), (1,2642,31), (1,2698,29), (2,104,49)]) literal.340: bits[8] = literal(value=129, id=340, pos=[(1,266,6), (1,2642,31), (1,2698,29), (2,104,49)]) exp: bits[8] = add(x_bexp__2, literal.340, id=341, pos=[(1,266,6), (1,2642,31), (1,2698,29), (2,104,49)]) sign_ext.342: bits[9] = sign_ext(exp, new_bit_count=9, id=342, pos=[(1,2698,29), (2,104,49)]) literal.343: bits[9] = literal(value=505, id=343, pos=[(1,2664,29), (1,2698,29), (2,104,49)]) add.344: bits[9] = add(sign_ext.342, literal.343, id=344, pos=[(1,2664,29), (1,2698,29), (2,104,49)]) literal.345: bits[9] = literal(value=1, id=345, pos=[(1,2698,29), (2,104,49)]) x_fraction__2: bits[7] = tuple_index(x, index=2, id=346, pos=[(1,2646,21), (1,2698,29), (2,104,49)]) literal.347: bits[1] = literal(value=1, id=347, pos=[(1,2646,21), (1,2698,29), (2,104,49)]) neg.389: bits[9] = neg(add.344, id=389, pos=[(1,2664,29), (1,2698,29), (2,104,49)]) literal.353: bits[8] = literal(value=255, id=353, pos=[(1,96,29), (1,2651,37), (1,2698,29), (2,104,49)]) literal.354: bits[7] = literal(value=0, id=354, pos=[(1,96,57), (1,2651,37), (1,2698,29), (2,104,49)]) literal.349: bits[9] = literal(value=0, id=349, pos=[(1,2667,18), (1,2698,29), (2,104,49)]) fraction: bits[16] = concat(literal.345, x_fraction__2, id=350, pos=[(1,2698,29), (2,104,49)]) effective_exp: bits[32] = sign_ext(add.344, new_bit_count=32, id=348, pos=[(1,2664,29), (1,2698,29), (2,104,49)]) fraction_shift_bits: bits[8] = concat(literal.347, x_fraction__2, id=351, pos=[(1,2646,21), (1,2698,29), (2,104,49)]) sign_ext.390: bits[32] = sign_ext(neg.389, new_bit_count=32, id=390, pos=[(1,2666,26), (1,2698,29), (2,104,49)]) eq.359: bits[1] = eq(x_bexp__2, literal.353, id=359, pos=[(1,96,6), (1,2651,37), (1,2698,29), (2,104,49)]) ne.360: bits[1] = ne(x_fraction__2, literal.354, id=360, pos=[(1,71,44), (1,2654,20), (1,2698,29), (2,104,49)]) sgt.355: bits[1] = sgt(add.344, literal.349, id=355, pos=[(1,2667,18), (1,2698,29), (2,104,49)]) shll.356: bits[16] = shll(fraction, effective_exp, id=356, pos=[(1,2668,13), (1,2698,29), (2,104,49)]) literal.357: bits[8] = literal(value=0, id=357, pos=[(1,2666,13), (1,2698,29), (2,104,49)]) shrl.358: bits[8] = shrl(fraction_shift_bits, sign_ext.390, id=358, pos=[(1,2666,13), (1,2698,29), (2,104,49)]) and.367: bits[1] = and(eq.359, ne.360, id=367, pos=[(1,71,6), (1,2654,20), (1,2698,29), (2,104,49)]) bit_slice.368: bits[1] = bit_slice(exp, start=7, width=1, id=368, pos=[(1,2656,14), (1,2698,29), (2,104,49)]) literal.361: bits[8] = literal(value=127, id=361, pos=[(1,2658,14), (1,2698,29), (2,104,49)]) bit_slice.362: bits[1] = bit_slice(effective_exp, start=31, width=1, id=362, pos=[(1,2665,11), (1,2698,29), (2,104,49)]) sel.363: bits[16] = sel(sgt.355, cases=[fraction, shll.356], id=363, pos=[(1,2667,15), (1,2698,29), (2,104,49)]) concat.364: bits[16] = concat(literal.357, shrl.358, id=364, pos=[(1,2666,13), (1,2698,29), (2,104,49)]) or.374: bits[1] = or(and.367, bit_slice.368, id=374, pos=[(1,2654,11), (1,2698,29), (2,104,49)]) literal.365: bits[8] = literal(value=15, id=365, pos=[(1,2650,18), (1,2698,29), (2,104,49)]) not.387: bits[1] = not(eq.359, id=387, pos=[(1,96,6), (1,2651,37), (1,2698,29), (2,104,49)]) eq.369: bits[1] = eq(x_bexp__2, literal.361, id=369, pos=[(1,2658,14), (1,2698,29), (2,104,49)]) sel.370: bits[16] = sel(bit_slice.362, cases=[sel.363, concat.364], id=370, pos=[(1,2665,8), (1,2698,29), (2,104,49)]) literal.371: bits[16] = literal(value=1, id=371, pos=[(1,2659,8), (1,2698,29), (2,104,49)]) not.391: bits[1] = not(or.374, id=391, pos=[(1,2654,11), (1,2698,29), (2,104,49)]) exp_oob: bits[1] = sge(exp, literal.365, id=372, pos=[(1,2650,18), (1,2698,29), (2,104,49)]) nor.388: bits[1] = nor(not.387, ne.360, id=388, pos=[(1,96,6), (1,2651,37), (1,2698,29), (2,104,49)]) sel.375: bits[16] = sel(eq.369, cases=[sel.370, literal.371], id=375, pos=[(1,2658,11), (1,2698,29), (2,104,49)]) sign_ext.392: bits[16] = sign_ext(not.391, new_bit_count=16, id=392, pos=[(1,2654,11), (1,2698,29), (2,104,49)]) x_sign__1: bits[1] = tuple_index(x, index=0, id=377, pos=[(1,2653,12), (1,2698,29), (2,104,49)]) INT_MAX: bits[16] = literal(value=32767, id=378, pos=[(1,2636,20), (1,2698,29), (2,104,49)]) INT_MIN: bits[16] = literal(value=32768, id=379, pos=[(1,2631,20), (1,2698,29), (2,104,49)]) or.380: bits[1] = or(exp_oob, nor.388, id=380, pos=[(1,2651,20), (1,2698,29), (2,104,49)]) and.393: bits[16] = and(sel.375, sign_ext.392, id=393, pos=[(1,2654,11), (1,2698,29), (2,104,49)]) sel.382: bits[16] = sel(x_sign__1, cases=[INT_MAX, INT_MIN], id=382, pos=[(1,2653,8), (1,2698,29), (2,104,49)]) result: bits[16] = sel(or.380, cases=[and.393, sel.382], id=383, pos=[(1,2651,17), (1,2698,29), (2,104,49)]) neg.384: bits[16] = neg(result, id=384, pos=[(1,2679,50), (1,2698,29), (2,104,49)]) ret result__2: bits[16] = sel(x_sign__1, cases=[result, neg.384], id=385, pos=[(1,2679,21), (1,2698,29), (2,104,49)]) }