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" top fn __hfloat16__to_int16(x: (bits[1], bits[5], bits[10]) id=135) -> bits[16] { x_bexp__2: bits[5] = tuple_index(x, index=1, id=338, pos=[(1,266,6), (1,2642,31), (1,2698,29), (2,108,49)]) literal.339: bits[5] = literal(value=17, id=339, pos=[(1,266,6), (1,2642,31), (1,2698,29), (2,108,49)]) exp: bits[5] = add(x_bexp__2, literal.339, id=340, pos=[(1,266,6), (1,2642,31), (1,2698,29), (2,108,49)]) bit_slice.399: bits[4] = bit_slice(exp, start=1, width=4, id=399, pos=[(1,2664,29), (1,2698,29), (2,108,49)]) sign_ext.400: bits[5] = sign_ext(bit_slice.399, new_bit_count=5, id=400, pos=[(1,2664,29), (1,2698,29), (2,108,49)]) literal.397: bits[5] = literal(value=27, id=397, pos=[(1,2664,29), (1,2698,29), (2,108,49)]) add.394: bits[5] = add(sign_ext.400, literal.397, id=394, pos=[(1,2664,29), (1,2698,29), (2,108,49)]) bit_slice.398: bits[1] = bit_slice(exp, start=0, width=1, id=398, pos=[(1,2664,29), (1,2698,29), (2,108,49)]) concat.396: bits[6] = concat(add.394, bit_slice.398, id=396, pos=[(1,2664,29), (1,2698,29), (2,108,49)]) literal.344: bits[6] = literal(value=1, id=344, pos=[(1,2698,29), (2,108,49)]) x_fraction__2: bits[10] = tuple_index(x, index=2, id=345, pos=[(1,2646,21), (1,2698,29), (2,108,49)]) literal.346: bits[1] = literal(value=1, id=346, pos=[(1,2646,21), (1,2698,29), (2,108,49)]) neg.387: bits[6] = neg(concat.396, id=387, pos=[(1,2664,29), (1,2698,29), (2,108,49)]) literal.352: bits[5] = literal(value=31, id=352, pos=[(1,71,29), (1,2654,20), (1,2698,29), (2,108,49)]) literal.353: bits[10] = literal(value=0, id=353, pos=[(1,71,57), (1,2654,20), (1,2698,29), (2,108,49)]) literal.348: bits[6] = literal(value=0, id=348, pos=[(1,2667,18), (1,2698,29), (2,108,49)]) fraction: bits[16] = concat(literal.344, x_fraction__2, id=349, pos=[(1,2698,29), (2,108,49)]) effective_exp: bits[32] = sign_ext(concat.396, new_bit_count=32, id=347, pos=[(1,2664,29), (1,2698,29), (2,108,49)]) fraction_shift_bits: bits[11] = concat(literal.346, x_fraction__2, id=350, pos=[(1,2646,21), (1,2698,29), (2,108,49)]) sign_ext.388: bits[32] = sign_ext(neg.387, new_bit_count=32, id=388, pos=[(1,2666,26), (1,2698,29), (2,108,49)]) eq.358: bits[1] = eq(x_bexp__2, literal.352, id=358, pos=[(1,71,6), (1,2654,20), (1,2698,29), (2,108,49)]) ne.359: bits[1] = ne(x_fraction__2, literal.353, id=359, pos=[(1,71,44), (1,2654,20), (1,2698,29), (2,108,49)]) sgt.354: bits[1] = sgt(concat.396, literal.348, id=354, pos=[(1,2667,18), (1,2698,29), (2,108,49)]) shll.355: bits[16] = shll(fraction, effective_exp, id=355, pos=[(1,2668,13), (1,2698,29), (2,108,49)]) literal.356: bits[5] = literal(value=0, id=356, pos=[(1,2666,13), (1,2698,29), (2,108,49)]) shrl.357: bits[11] = shrl(fraction_shift_bits, sign_ext.388, id=357, pos=[(1,2666,13), (1,2698,29), (2,108,49)]) and.365: bits[1] = and(eq.358, ne.359, id=365, pos=[(1,71,6), (1,2654,20), (1,2698,29), (2,108,49)]) bit_slice.366: bits[1] = bit_slice(exp, start=4, width=1, id=366, pos=[(1,2656,14), (1,2698,29), (2,108,49)]) literal.360: bits[5] = literal(value=15, id=360, pos=[(1,2658,14), (1,2698,29), (2,108,49)]) bit_slice.361: bits[1] = bit_slice(effective_exp, start=31, width=1, id=361, pos=[(1,2665,11), (1,2698,29), (2,108,49)]) sel.362: bits[16] = sel(sgt.354, cases=[fraction, shll.355], id=362, pos=[(1,2667,15), (1,2698,29), (2,108,49)]) concat.363: bits[16] = concat(literal.356, shrl.357, id=363, pos=[(1,2666,13), (1,2698,29), (2,108,49)]) or.372: bits[1] = or(and.365, bit_slice.366, id=372, pos=[(1,2654,11), (1,2698,29), (2,108,49)]) not.385: bits[1] = not(eq.358, id=385, pos=[(1,96,6), (1,2651,37), (1,2698,29), (2,108,49)]) eq.367: bits[1] = eq(x_bexp__2, literal.360, id=367, pos=[(1,2658,14), (1,2698,29), (2,108,49)]) sel.368: bits[16] = sel(bit_slice.361, cases=[sel.362, concat.363], id=368, pos=[(1,2665,8), (1,2698,29), (2,108,49)]) literal.369: bits[16] = literal(value=1, id=369, pos=[(1,2659,8), (1,2698,29), (2,108,49)]) not.389: bits[1] = not(or.372, id=389, pos=[(1,2654,11), (1,2698,29), (2,108,49)]) exp_oob: bits[1] = sge(exp, literal.360, id=370, pos=[(1,2650,18), (1,2698,29), (2,108,49)]) nor.386: bits[1] = nor(not.385, ne.359, id=386, pos=[(1,96,6), (1,2651,37), (1,2698,29), (2,108,49)]) sel.373: bits[16] = sel(eq.367, cases=[sel.368, literal.369], id=373, pos=[(1,2658,11), (1,2698,29), (2,108,49)]) sign_ext.390: bits[16] = sign_ext(not.389, new_bit_count=16, id=390, pos=[(1,2654,11), (1,2698,29), (2,108,49)]) x_sign__1: bits[1] = tuple_index(x, index=0, id=375, pos=[(1,2653,12), (1,2698,29), (2,108,49)]) INT_MAX: bits[16] = literal(value=32767, id=376, pos=[(1,2636,20), (1,2698,29), (2,108,49)]) INT_MIN: bits[16] = literal(value=32768, id=377, pos=[(1,2631,20), (1,2698,29), (2,108,49)]) or.378: bits[1] = or(exp_oob, nor.386, id=378, pos=[(1,2651,20), (1,2698,29), (2,108,49)]) and.391: bits[16] = and(sel.373, sign_ext.390, id=391, pos=[(1,2654,11), (1,2698,29), (2,108,49)]) sel.380: bits[16] = sel(x_sign__1, cases=[INT_MAX, INT_MIN], id=380, pos=[(1,2653,8), (1,2698,29), (2,108,49)]) result: bits[16] = sel(or.378, cases=[and.391, sel.380], id=381, pos=[(1,2651,17), (1,2698,29), (2,108,49)]) neg.382: bits[16] = neg(result, id=382, pos=[(1,2679,50), (1,2698,29), (2,108,49)]) ret result__2: bits[16] = sel(x_sign__1, cases=[result, neg.382], id=383, pos=[(1,2679,21), (1,2698,29), (2,108,49)]) }