package hfloat16 file_number 0 "/inputs/subtree/xls/dslx/stdlib/apfloat.x" file_number 1 "/inputs/subtree/xls/dslx/stdlib/std.x" file_number 2 "/inputs/subtree/xls/dslx/stdlib/abs_diff.x" file_number 3 "/inputs/subtree/xls/dslx/stdlib/hfloat16.x" top fn __hfloat16__fma(a: (bits[1], bits[5], bits[10]) id=517, b: (bits[1], bits[5], bits[10]) id=518, c: (bits[1], bits[5], bits[10]) id=519) -> (bits[1], bits[5], bits[10]) { a_bexp__1: bits[5] = tuple_index(a, index=1, id=1494, pos=[(0,3448,16), (0,3574,29), (0,3636,25), (3,122,60)]) literal.1496: bits[5] = literal(value=0, id=1496, pos=[(0,804,14), (0,3431,40), (0,3574,29), (0,3636,25), (3,122,60)]) b_bexp__1: bits[5] = tuple_index(b, index=1, id=1495, pos=[(0,3448,45), (0,3574,29), (0,3636,25), (3,122,60)]) cancel__1: bits[1] = literal(value=0, id=1493, pos=[(0,3574,29), (0,3636,25), (3,122,60)]) bnot__1: bits[1] = literal(value=1, id=1497, pos=[(0,3434,24), (0,3574,29), (0,3636,25), (3,122,60)]) a_fraction__1: bits[10] = tuple_index(a, index=2, id=1498, pos=[(0,3434,33), (0,3574,29), (0,3636,25), (3,122,60)]) b_fraction__1: bits[10] = tuple_index(b, index=2, id=1499, pos=[(0,3435,33), (0,3574,29), (0,3636,25), (3,122,60)]) eq.1502: bits[1] = eq(a_bexp__1, literal.1496, id=1502, pos=[(0,804,5), (0,3431,40), (0,3574,29), (0,3636,25), (3,122,60)]) eq.1503: bits[1] = eq(b_bexp__1, literal.1496, id=1503, pos=[(0,804,5), (0,3431,67), (0,3574,29), (0,3636,25), (3,122,60)]) concat.1500: bits[6] = concat(cancel__1, a_bexp__1, id=1500, pos=[(0,3574,29), (0,3636,25), (3,122,60)]) concat.1501: bits[6] = concat(cancel__1, b_bexp__1, id=1501, pos=[(0,3574,29), (0,3636,25), (3,122,60)]) a_significand__1: bits[11] = concat(bnot__1, a_fraction__1, id=1504, pos=[(0,3434,24), (0,3574,29), (0,3636,25), (3,122,60)]) b_significand__1: bits[11] = concat(bnot__1, b_fraction__1, id=1505, pos=[(0,3435,24), (0,3574,29), (0,3636,25), (3,122,60)]) nor.1800: bits[1] = nor(eq.1502, eq.1503, id=1800, pos=[(0,3439,8), (0,3574,29), (0,3636,25), (3,122,60)]) add.1506: bits[6] = add(concat.1500, concat.1501, id=1506, pos=[(0,3448,16), (0,3574,29), (0,3636,25), (3,122,60)]) umul.1508: bits[22] = umul(a_significand__1, b_significand__1, id=1508, pos=[(1,224,5), (0,3439,61), (0,3574,29), (0,3636,25), (3,122,60)]) sign_ext.1756: bits[22] = sign_ext(nor.1800, new_bit_count=22, id=1756, pos=[(0,3439,8), (0,3574,29), (0,3636,25), (3,122,60)]) max_exp: bits[5] = literal(value=31, id=1510, pos=[(0,96,29), (0,3488,28), (0,3574,29), (0,3636,25), (3,122,60)]) literal.1511: bits[10] = literal(value=0, id=1511, pos=[(0,96,57), (0,3488,28), (0,3574,29), (0,3636,25), (3,122,60)]) concat.1512: bits[7] = concat(cancel__1, add.1506, id=1512, pos=[(0,3448,16), (0,3574,29), (0,3636,25), (3,122,60)]) literal.1513: bits[7] = literal(value=113, id=1513, pos=[(0,3448,16), (0,3574,29), (0,3636,25), (3,122,60)]) full_product: bits[22] = and(umul.1508, sign_ext.1756, id=1757, pos=[(0,3439,8), (0,3574,29), (0,3636,25), (3,122,60)]) eq.1515: bits[1] = eq(a_bexp__1, max_exp, id=1515, pos=[(0,96,6), (0,3488,28), (0,3574,29), (0,3636,25), (3,122,60)]) eq.1516: bits[1] = eq(a_fraction__1, literal.1511, id=1516, pos=[(0,96,44), (0,3488,28), (0,3574,29), (0,3636,25), (3,122,60)]) eq.1517: bits[1] = eq(b_bexp__1, max_exp, id=1517, pos=[(0,96,6), (0,3488,41), (0,3574,29), (0,3636,25), (3,122,60)]) eq.1518: bits[1] = eq(b_fraction__1, literal.1511, id=1518, pos=[(0,96,44), (0,3488,41), (0,3574,29), (0,3636,25), (3,122,60)]) exp: bits[7] = add(concat.1512, literal.1513, id=1519, pos=[(0,3448,16), (0,3574,29), (0,3636,25), (3,122,60)]) sign_ext.1759: bits[7] = sign_ext(nor.1800, new_bit_count=7, id=1759, pos=[(0,3457,14), (0,3574,29), (0,3636,25), (3,122,60)]) literal.1521: bits[6] = literal(value=0, id=1521, pos=[(0,3574,29), (0,3636,25), (3,122,60)]) in_upper_binade: bits[1] = bit_slice(full_product, start=21, width=1, id=1522, pos=[(1,357,61), (0,3463,34), (0,3574,29), (0,3636,25), (3,122,60)]) and.1523: bits[1] = and(eq.1515, eq.1516, id=1523, pos=[(0,96,6), (0,3488,28), (0,3574,29), (0,3636,25), (3,122,60)]) and.1524: bits[1] = and(eq.1517, eq.1518, id=1524, pos=[(0,96,6), (0,3488,41), (0,3574,29), (0,3636,25), (3,122,60)]) exp__1: bits[7] = and(exp, sign_ext.1759, id=1760, pos=[(0,3457,14), (0,3574,29), (0,3636,25), (3,122,60)]) concat.1526: bits[7] = concat(literal.1521, in_upper_binade, id=1526, pos=[(0,3574,29), (0,3636,25), (3,122,60)]) has_inf_arg: bits[1] = or(and.1523, and.1524, id=1527, pos=[(0,3488,28), (0,3574,29), (0,3636,25), (3,122,60)]) result_exp__3: bits[7] = add(exp__1, concat.1526, id=1528, pos=[(0,3468,14), (0,3574,29), (0,3636,25), (3,122,60)]) literal.1529: bits[7] = literal(value=63, id=1529, pos=[(0,3482,62), (0,3574,29), (0,3636,25), (3,122,60)]) result_exp__4: bits[7] = sel(has_inf_arg, cases=[result_exp__3, literal.1529], id=1533, pos=[(0,3482,21), (0,3574,29), (0,3636,25), (3,122,60)]) literal.1520: bits[7] = literal(value=0, id=1520, pos=[(0,3457,29), (0,3574,29), (0,3636,25), (3,122,60)]) is_subnormal: bits[1] = sle(result_exp__4, literal.1520, id=1538, pos=[(0,3580,34), (0,3636,25), (3,122,60)]) not.1531: bits[1] = not(eq.1515, id=1531, pos=[(0,71,6), (0,3487,28), (0,3574,29), (0,3636,25), (3,122,60)]) not.1532: bits[1] = not(eq.1517, id=1532, pos=[(0,71,6), (0,3487,41), (0,3574,29), (0,3636,25), (3,122,60)]) has_0_arg: bits[1] = or(eq.1502, eq.1503, id=1507, pos=[(0,3431,40), (0,3574,29), (0,3636,25), (3,122,60)]) not.1761: bits[1] = not(is_subnormal, id=1761, pos=[(0,3581,21), (0,3636,25), (3,122,60)]) nor.1535: bits[1] = nor(not.1531, eq.1516, id=1535, pos=[(0,71,6), (0,3487,28), (0,3574,29), (0,3636,25), (3,122,60)]) nor.1536: bits[1] = nor(not.1532, eq.1518, id=1536, pos=[(0,71,6), (0,3487,41), (0,3574,29), (0,3636,25), (3,122,60)]) and.1537: bits[1] = and(has_0_arg, has_inf_arg, id=1537, pos=[(0,3489,40), (0,3574,29), (0,3636,25), (3,122,60)]) bit_slice.1539: bits[6] = bit_slice(result_exp__4, start=0, width=6, id=1539, pos=[(0,3583,45), (0,3636,25), (3,122,60)]) sign_ext.1762: bits[6] = sign_ext(not.1761, new_bit_count=6, id=1762, pos=[(0,3581,21), (0,3636,25), (3,122,60)]) is_result_nan__1: bits[1] = or(nor.1535, nor.1536, and.1537, id=1542, pos=[(0,3489,24), (0,3574,29), (0,3636,25), (3,122,60)]) result_exp__5: bits[6] = and(bit_slice.1539, sign_ext.1762, id=1763, pos=[(0,3581,21), (0,3636,25), (3,122,60)]) literal.1544: bits[6] = literal(value=63, id=1544, pos=[(0,3588,4), (0,3636,25), (3,122,60)]) c_bexp__2: bits[5] = tuple_index(c, index=1, id=1530, pos=[(0,3639,44), (3,122,60)]) ab_bexp__2: bits[6] = sel(is_result_nan__1, cases=[result_exp__5, literal.1544], id=1547, pos=[(0,3588,4), (0,3636,25), (3,122,60)]) literal.1740: bits[2] = literal(value=1, id=1740, pos=[(2,91,63), (0,3009,44), (0,3639,33), (3,122,60)]) bnot__2: bits[5] = not(c_bexp__2, id=1545, pos=[(2,90,15), (0,3009,44), (0,3639,33), (3,122,60)]) ab_bexp_extended__1: bits[7] = concat(cancel__1, ab_bexp__2, id=1550, pos=[(2,91,63), (0,3009,44), (0,3639,33), (3,122,60)]) bnot_extended__2: bits[7] = concat(literal.1740, bnot__2, id=1741, pos=[(2,91,63), (0,3009,44), (0,3639,33), (3,122,60)]) full_result: bits[7] = add(ab_bexp_extended__1, bnot_extended__2, id=1554, pos=[(1,1120,45), (2,91,63), (0,3009,44), (0,3639,33), (3,122,60)]) overflow_detected: bits[1] = bit_slice(full_result, start=6, width=1, id=1556, pos=[(1,1122,49), (2,91,63), (0,3009,44), (0,3639,33), (3,122,60)]) bit_slice.1541: bits[21] = bit_slice(full_product, start=0, width=21, id=1541, pos=[(0,3464,74), (0,3574,29), (0,3636,25), (3,122,60)]) nc: bits[1] = not(overflow_detected, id=1560, pos=[(2,92,19), (0,3009,44), (0,3639,33), (3,122,60)]) concat.1546: bits[22] = concat(bit_slice.1541, cancel__1, id=1546, pos=[(0,3464,74), (0,3574,29), (0,3636,25), (3,122,60)]) not.1764: bits[1] = not(has_inf_arg, id=1764, pos=[(0,3483,26), (0,3574,29), (0,3636,25), (3,122,60)]) narrowed_result: bits[6] = bit_slice(full_result, start=0, width=6, id=1566, pos=[(2,91,63), (0,3009,44), (0,3639,33), (3,122,60)]) ab_bexpor_mask__2: bits[6] = sign_ext(nc, new_bit_count=6, id=1567, pos=[(2,94,32), (0,3009,44), (0,3639,33), (3,122,60)]) result_fraction__5: bits[22] = sel(in_upper_binade, cases=[concat.1546, umul.1508], id=1549, pos=[(0,3464,30), (0,3574,29), (0,3636,25), (3,122,60)]) sign_ext.1765: bits[22] = sign_ext(not.1764, new_bit_count=22, id=1765, pos=[(0,3483,26), (0,3574,29), (0,3636,25), (3,122,60)]) neg.1553: bits[6] = neg(bit_slice.1539, id=1553, pos=[(0,3583,33), (0,3636,25), (3,122,60)]) sign_ext.1767: bits[6] = sign_ext(is_subnormal, new_bit_count=6, id=1767) result: bits[6] = xor(narrowed_result, ab_bexpor_mask__2, id=1571, pos=[(2,95,18), (0,3009,44), (0,3639,33), (3,122,60)]) concat.1572: bits[6] = concat(literal.1496, overflow_detected, id=1572, pos=[(0,3010,68), (0,3639,33), (3,122,60)]) result_fraction__6: bits[22] = and(result_fraction__5, sign_ext.1765, id=1766, pos=[(0,3483,26), (0,3574,29), (0,3636,25), (3,122,60)]) and.1768: bits[6] = and(neg.1553, sign_ext.1767, id=1768) exp_difference: bits[6] = add(result, concat.1572, id=1575, pos=[(2,54,7), (0,3010,68), (0,3639,33), (3,122,60)]) sign_ext.1772: bits[6] = sign_ext(overflow_detected, new_bit_count=6, id=1772, pos=[(0,3657,19), (3,122,60)]) result_fraction__7: bits[22] = shrl(result_fraction__6, and.1768, id=1754) literal.1559: bits[22] = literal(value=3145728, id=1559, pos=[(0,3588,4), (0,3636,25), (3,122,60)]) literal.1579: bits[34] = literal(value=17179869183, id=1579, pos=[(1,1412,19), (1,1502,17), (1,1529,22), (0,3660,38), (3,122,60)]) rshift_ab: bits[6] = and(exp_difference, ab_bexpor_mask__2, id=1771, pos=[(0,3656,20), (3,122,60)]) c_fraction__2: bits[10] = tuple_index(c, index=2, id=1557, pos=[(0,3645,18), (3,122,60)]) ne.1797: bits[1] = ne(c_bexp__2, literal.1496, id=1797, pos=[(0,3646,17), (3,122,60)]) rshift_c: bits[6] = and(exp_difference, sign_ext.1772, id=1773, pos=[(0,3657,19), (3,122,60)]) ab_fraction__2: bits[22] = sel(is_result_nan__1, cases=[result_fraction__7, literal.1559], id=1564, pos=[(0,3588,4), (0,3636,25), (3,122,60)]) shll.1585: bits[34] = shll(literal.1579, rshift_ab, id=1585, pos=[(1,1412,19), (1,1502,17), (1,1529,22), (0,3660,38), (3,122,60)]) not.1815: bits[10] = not(c_fraction__2, id=1815, pos=[(1,1412,4), (1,1502,17), (1,1529,22), (0,3661,37), (3,122,60)]) sign_ext.1775: bits[11] = sign_ext(ne.1797, new_bit_count=11, id=1775, pos=[(0,3646,17), (3,122,60)]) shll.1587: bits[34] = shll(literal.1579, rshift_c, id=1587, pos=[(1,1412,19), (1,1502,17), (1,1529,22), (0,3661,37), (3,122,60)]) not.1577: bits[22] = not(ab_fraction__2, id=1577, pos=[(1,1412,4), (1,1502,17), (1,1529,22), (0,3660,38), (3,122,60)]) bit_slice.1589: bits[22] = bit_slice(shll.1585, start=12, width=22, id=1589, pos=[(1,1412,19), (1,1502,17), (1,1529,22), (0,3660,38), (3,122,60)]) concat.1562: bits[11] = concat(bnot__1, c_fraction__2, id=1562, pos=[(0,3646,17), (3,122,60)]) concat.1818: bits[11] = concat(cancel__1, not.1815, id=1818, pos=[(1,1412,4), (1,1502,17), (1,1529,22), (0,3661,37), (3,122,60)]) not.1803: bits[11] = not(sign_ext.1775, id=1803, pos=[(1,1412,4), (1,1502,17), (1,1529,22), (0,3661,37), (3,122,60)]) bit_slice.1591: bits[11] = bit_slice(shll.1587, start=23, width=11, id=1591, pos=[(1,1412,19), (1,1502,17), (1,1529,22), (0,3661,37), (3,122,60)]) a_sign__1: bits[1] = tuple_index(a, index=0, id=1594, pos=[(0,3471,23), (0,3574,29), (0,3636,25), (3,122,60)]) b_sign__1: bits[1] = tuple_index(b, index=0, id=1595, pos=[(0,3471,33), (0,3574,29), (0,3636,25), (3,122,60)]) literal.1565: bits[12] = literal(value=0, id=1565, pos=[(0,3651,11), (3,122,60)]) nor.1592: bits[22] = nor(not.1577, bit_slice.1589, id=1592, pos=[(1,1412,4), (1,1502,17), (1,1529,22), (0,3660,38), (3,122,60)]) literal.1509: bits[22] = literal(value=0, id=1509, pos=[(0,3439,23), (0,3574,29), (0,3636,25), (3,122,60)]) wide_c__3: bits[11] = and(concat.1562, sign_ext.1775, id=1776, pos=[(0,3646,17), (3,122,60)]) literal.1569: bits[23] = literal(value=0, id=1569, pos=[(0,3652,17), (3,122,60)]) nor.1804: bits[11] = nor(concat.1818, not.1803, bit_slice.1591, id=1804, pos=[(1,1412,4), (1,1502,17), (1,1529,22), (0,3661,37), (3,122,60)]) literal.1563: bits[11] = literal(value=0, id=1563, pos=[(0,3646,17), (3,122,60)]) result_sign__3: bits[1] = xor(a_sign__1, b_sign__1, id=1599, pos=[(0,3471,23), (0,3574,29), (0,3636,25), (3,122,60)]) wide_ab: bits[34] = concat(ab_fraction__2, literal.1565, id=1570, pos=[(0,3651,11), (3,122,60)]) literal.1596: bits[33] = literal(value=0, id=1596, pos=[(3,122,60)]) ne.1597: bits[1] = ne(nor.1592, literal.1509, id=1597, pos=[(1,1502,17), (1,1529,22), (0,3660,38), (3,122,60)]) wide_c__2: bits[34] = concat(wide_c__3, literal.1569, id=1573, pos=[(0,3652,17), (3,122,60)]) ne.1598: bits[1] = ne(nor.1804, literal.1563, id=1598, pos=[(1,1502,17), (1,1529,22), (0,3661,37), (3,122,60)]) not.1604: bits[1] = not(result_sign__3, id=1604, pos=[(0,3588,4), (0,3636,25), (3,122,60)]) shifted_ab: bits[34] = shrl(wide_ab, rshift_ab, id=1600, pos=[(0,3658,21), (3,122,60)]) sticky_ab: bits[34] = concat(literal.1596, ne.1597, id=1601, pos=[(3,122,60)]) shifted_c: bits[34] = shrl(wide_c__2, rshift_c, id=1602, pos=[(0,3659,20), (3,122,60)]) sticky_c: bits[34] = concat(literal.1596, ne.1598, id=1603, pos=[(3,122,60)]) c_sign__2: bits[1] = tuple_index(c, index=0, id=1608, pos=[(0,3641,55), (3,122,60)]) ab_sign__2: bits[1] = nor(is_result_nan__1, not.1604, id=1607, pos=[(0,3588,4), (0,3636,25), (3,122,60)]) or.1605: bits[34] = or(shifted_ab, sticky_ab, id=1605, pos=[(0,3664,22), (3,122,60)]) or.1606: bits[34] = or(shifted_c, sticky_c, id=1606, pos=[(0,3665,21), (3,122,60)]) greater_sign: bits[1] = sel(overflow_detected, cases=[c_sign__2, ab_sign__2], id=1729, pos=[(0,3641,8), (3,122,60)]) shifted_ab__1_squeezed: bits[35] = concat(cancel__1, or.1605, id=1609, pos=[(0,3668,50), (3,122,60)]) shifted_c__1_squeezed: bits[35] = concat(cancel__1, or.1606, id=1610, pos=[(0,3669,48), (3,122,60)]) xor.1615: bits[1] = xor(ab_sign__2, greater_sign, id=1615, pos=[(0,3668,26), (3,122,60)]) neg.1613: bits[35] = neg(shifted_ab__1_squeezed, id=1613, pos=[(0,3668,50), (3,122,60)]) xor.1618: bits[1] = xor(c_sign__2, greater_sign, id=1618, pos=[(0,3669,24), (3,122,60)]) neg.1614: bits[35] = neg(shifted_c__1_squeezed, id=1614, pos=[(0,3669,48), (3,122,60)]) shifted_ab__2_squeezed: bits[35] = sel(xor.1615, cases=[shifted_ab__1_squeezed, neg.1613], id=1824, pos=[(0,3668,21), (3,122,60)]) shifted_c__2_squeezed: bits[35] = sel(xor.1618, cases=[shifted_c__1_squeezed, neg.1614], id=1828, pos=[(0,3669,20), (3,122,60)]) shifted_ab__2: bits[36] = sign_ext(shifted_ab__2_squeezed, new_bit_count=36, id=1825, pos=[(0,3668,21), (3,122,60)]) shifted_c__2: bits[36] = sign_ext(shifted_c__2_squeezed, new_bit_count=36, id=1829, pos=[(0,3669,20), (3,122,60)]) sum_fraction: bits[36] = add(shifted_ab__2, shifted_c__2, id=1623, pos=[(0,3672,23), (3,122,60)]) bit_slice.1624: bits[35] = bit_slice(sum_fraction, start=0, width=35, id=1624, pos=[(0,3672,23), (3,122,60)]) bit_slice.1625: bits[1] = bit_slice(sum_fraction, start=35, width=1, id=1625, pos=[(0,3681,27), (3,122,60)]) neg.1626: bits[35] = neg(bit_slice.1624, id=1626, pos=[(0,3682,27), (3,122,60)]) abs_fraction__2: bits[35] = sel(bit_slice.1625, cases=[bit_slice.1624, neg.1626], id=1627, pos=[(0,3681,24), (3,122,60)]) reverse.1628: bits[35] = reverse(abs_fraction__2, id=1628, pos=[(0,3695,28), (3,122,60)]) one_hot.1629: bits[36] = one_hot(reverse.1628, lsb_prio=true, id=1629, pos=[(0,3695,28), (3,122,60)]) encode.1630: bits[6] = encode(one_hot.1629, id=1630, pos=[(0,3695,28), (3,122,60)]) bit_slice.1631: bits[5] = bit_slice(encode.1630, start=1, width=5, id=1631, pos=[(0,3696,17), (3,122,60)]) cancel__2: bits[1] = or_reduce(bit_slice.1631, id=1632, pos=[(0,3696,17), (3,122,60)]) carry_bit__2: bits[1] = bit_slice(abs_fraction__2, start=34, width=1, id=1633, pos=[(0,3689,32), (3,122,60)]) concat.1634: bits[7] = concat(cancel__1, encode.1630, id=1634, pos=[(0,3695,28), (3,122,60)]) literal.1635: bits[7] = literal(value=127, id=1635, pos=[(0,3698,26), (3,122,60)]) not.1636: bits[1] = not(cancel__2, id=1636, pos=[(3,122,60)]) not.1637: bits[1] = not(carry_bit__2, id=1637, pos=[(3,122,60)]) bit_slice.1638: bits[1] = bit_slice(abs_fraction__2, start=0, width=1, id=1638, pos=[(0,3691,55), (3,122,60)]) add.1639: bits[7] = add(concat.1634, literal.1635, id=1639, pos=[(0,3698,26), (3,122,60)]) nor.1640: bits[1] = nor(carry_bit__2, cancel__2, id=1640, pos=[(3,122,60)]) nor.1641: bits[1] = nor(carry_bit__2, not.1636, id=1641, pos=[(3,122,60)]) nor.1642: bits[1] = nor(not.1637, cancel__2, id=1642, pos=[(3,122,60)]) carry_fraction__1: bits[34] = bit_slice(abs_fraction__2, start=1, width=34, id=1643, pos=[(0,3690,26), (3,122,60)]) concat.1644: bits[34] = concat(literal.1596, bit_slice.1638, id=1644, pos=[(3,122,60)]) bit_slice.1645: bits[34] = bit_slice(abs_fraction__2, start=0, width=34, id=1645, pos=[(0,3698,9), (3,122,60)]) sign_ext.1646: bits[35] = sign_ext(add.1639, new_bit_count=35, id=1646, pos=[(0,3698,26), (3,122,60)]) concat.1647: bits[3] = concat(nor.1640, nor.1641, nor.1642, id=1647, pos=[(3,122,60)]) carry_fraction__4: bits[34] = or(carry_fraction__1, concat.1644, id=1648, pos=[(0,3691,25), (3,122,60)]) cancel_fraction__2: bits[34] = shll(bit_slice.1645, sign_ext.1646, id=1649, pos=[(3,122,60)]) literal.1650: bits[34] = literal(value=0, id=1650, pos=[(0,3703,39), (3,122,60)]) shifted_fraction: bits[34] = priority_sel(concat.1647, cases=[carry_fraction__4, cancel_fraction__2, bit_slice.1645], default=literal.1650, id=1651, pos=[(3,122,60)]) normal_chunk: bits[23] = bit_slice(shifted_fraction, start=0, width=23, id=1652, pos=[(0,3710,39), (3,122,60)]) half_of_extra: bits[23] = literal(value=4194304, id=1653, pos=[(0,3713,24), (3,122,60)]) half_way_chunk: bits[2] = bit_slice(shifted_fraction, start=22, width=2, id=1654, pos=[(0,3712,24), (3,122,60)]) literal.1655: bits[2] = literal(value=3, id=1655, pos=[(0,3715,63), (3,122,60)]) bit_slice.1806: bits[11] = bit_slice(shifted_fraction, start=23, width=11, id=1806, pos=[(0,3717,8), (3,122,60)]) ugt.1658: bits[1] = ugt(normal_chunk, half_of_extra, id=1658, pos=[(0,3715,12), (3,122,60)]) eq.1659: bits[1] = eq(half_way_chunk, literal.1655, id=1659, pos=[(0,3715,45), (3,122,60)]) concat.1807: bits[12] = concat(cancel__1, bit_slice.1806, id=1807, pos=[(0,3717,8), (3,122,60)]) literal.1798: bits[12] = literal(value=1, id=1798, pos=[(0,3717,8), (3,122,60)]) or.1662: bits[1] = or(ugt.1658, eq.1659, id=1662, pos=[(0,3715,12), (3,122,60)]) add.1788: bits[12] = add(concat.1807, literal.1798, id=1788, pos=[(0,3717,8), (3,122,60)]) concat.1534: bits[6] = concat(cancel__1, c_bexp__2, id=1534, pos=[(3,122,60)]) rounded_fraction__1: bits[12] = sel(or.1662, cases=[concat.1807, add.1788], id=1665, pos=[(0,3716,27), (3,122,60)]) concat.1811: bits[6] = concat(cancel__1, bit_slice.1631, id=1811, pos=[(0,3728,15), (3,122,60)]) bit_slice.1812: bits[1] = bit_slice(encode.1630, start=0, width=1, id=1812, pos=[(0,3728,15), (3,122,60)]) greater_exp: bits[6] = sel(overflow_detected, cases=[concat.1534, ab_bexp__2], id=1730, pos=[(0,3641,8), (3,122,60)]) rounding_carry: bits[1] = bit_slice(rounded_fraction__1, start=11, width=1, id=1667, pos=[(0,3723,41), (3,122,60)]) literal.1671: bits[36] = literal(value=0, id=1671, pos=[(0,3673,43), (3,122,60)]) sub.1793: bits[6] = sub(literal.1521, concat.1811, id=1793, pos=[(0,3728,15), (3,122,60)]) not.1795: bits[1] = not(bit_slice.1812, id=1795, pos=[(0,3728,15), (3,122,60)]) concat.1669: bits[7] = concat(cancel__1, greater_exp, id=1669, pos=[(3,122,60)]) concat.1670: bits[7] = concat(literal.1521, rounding_carry, id=1670, pos=[(3,122,60)]) fraction_is_zero: bits[1] = eq(sum_fraction, literal.1671, id=1674, pos=[(0,3673,27), (3,122,60)]) bexp_associative_element__1: bits[7] = concat(sub.1793, not.1795, id=1796, pos=[(0,3728,15), (3,122,60)]) bexp_associative_element__4: bits[7] = add(concat.1669, concat.1670, id=1673, pos=[(0,3728,15), (3,122,60)]) not.1777: bits[1] = not(fraction_is_zero, id=1777, pos=[(0,3730,15), (3,122,60)]) bexp__1: bits[7] = add(bexp_associative_element__1, bexp_associative_element__4, id=1675, pos=[(0,3728,15), (3,122,60)]) sign_ext.1778: bits[7] = sign_ext(not.1777, new_bit_count=7, id=1778, pos=[(0,3730,15), (3,122,60)]) bexp__2: bits[7] = and(bexp__1, sign_ext.1778, id=1779, pos=[(0,3730,15), (3,122,60)]) bit_slice.1685: bits[1] = bit_slice(bexp__2, start=6, width=1, id=1685, pos=[(0,3731,18), (3,122,60)]) not.1780: bits[1] = not(bit_slice.1685, id=1780, pos=[(0,3731,15), (3,122,60)]) bit_slice.1686: bits[6] = bit_slice(bexp__2, start=0, width=6, id=1686, pos=[(3,122,60)]) sign_ext.1781: bits[6] = sign_ext(not.1780, new_bit_count=6, id=1781, pos=[(0,3731,15), (3,122,60)]) eq.1676: bits[1] = eq(ab_bexp__2, literal.1544, id=1676, pos=[(0,3550,5), (0,3749,37), (3,122,60)]) eq.1677: bits[1] = eq(ab_fraction__2, literal.1509, id=1677, pos=[(0,3550,46), (0,3749,37), (3,122,60)]) eq.1678: bits[1] = eq(c_bexp__2, max_exp, id=1678, pos=[(0,96,6), (0,3749,72), (3,122,60)]) eq.1679: bits[1] = eq(c_fraction__2, literal.1511, id=1679, pos=[(0,96,44), (0,3749,72), (3,122,60)]) bexp__6: bits[6] = and(bit_slice.1686, sign_ext.1781, id=1782, pos=[(0,3731,15), (3,122,60)]) nand.1681: bits[1] = nand(eq.1676, eq.1677, id=1681, pos=[(0,3749,37), (3,122,60)]) not.1682: bits[1] = not(eq.1678, id=1682, pos=[(0,3749,72), (3,122,60)]) not.1683: bits[1] = not(eq.1679, id=1683, pos=[(0,3749,72), (3,122,60)]) and.1684: bits[1] = and(eq.1676, eq.1677, id=1684, pos=[(0,3550,5), (0,3749,37), (3,122,60)]) and.1698: bits[1] = and(eq.1678, eq.1679, id=1698, pos=[(0,96,6), (0,3749,72), (3,122,60)]) bit_slice.1699: bits[5] = bit_slice(bexp__6, start=0, width=5, id=1699, pos=[(0,3742,24), (3,122,60)]) nor.1687: bits[1] = nor(nand.1681, ab_sign__2, id=1687, pos=[(0,3749,37), (3,122,60)]) nor.1688: bits[1] = nor(not.1682, not.1683, c_sign__2, id=1688, pos=[(0,3749,72), (3,122,60)]) and.1689: bits[1] = and(and.1684, ab_sign__2, id=1689, pos=[(0,3754,37), (3,122,60)]) and.1690: bits[1] = and(eq.1678, eq.1679, c_sign__2, id=1690, pos=[(0,3754,72), (3,122,60)]) is_operand_inf: bits[1] = or(and.1684, and.1698, id=1705, pos=[(0,3745,39), (3,122,60)]) bit_slice.1706: bits[1] = bit_slice(bexp__6, start=5, width=1, id=1706, pos=[(0,3742,24), (3,122,60)]) and_reduce.1707: bits[1] = and_reduce(bit_slice.1699, id=1707, pos=[(0,3742,24), (3,122,60)]) eq.1708: bits[1] = eq(bexp__6, literal.1521, id=1708, pos=[(0,3736,29), (3,122,60)]) not.1742: bits[1] = not(eq.1676, id=1742, pos=[(0,3556,5), (0,3755,38), (3,122,60)]) has_pos_inf: bits[1] = or(nor.1687, nor.1688, id=1695, pos=[(0,3749,37), (3,122,60)]) has_neg_inf: bits[1] = or(and.1689, and.1690, id=1696, pos=[(0,3754,37), (3,122,60)]) or.1712: bits[1] = or(is_operand_inf, bit_slice.1706, and_reduce.1707, eq.1708, id=1712, pos=[(0,3747,26), (3,122,60)]) nor.1743: bits[1] = nor(not.1742, eq.1677, id=1743, pos=[(0,3556,5), (0,3755,38), (3,122,60)]) nor.1745: bits[1] = nor(not.1682, eq.1679, id=1745, pos=[(0,71,6), (0,3755,51), (3,122,60)]) and.1702: bits[1] = and(has_pos_inf, has_neg_inf, id=1702, pos=[(0,3755,58), (3,122,60)]) concat.1703: bits[2] = concat(bit_slice.1625, fraction_is_zero, id=1703, pos=[(3,122,60)]) not.1704: bits[1] = not(greater_sign, id=1704, pos=[(0,3676,25), (3,122,60)]) not.1783: bits[1] = not(or.1712, id=1783, pos=[(0,3747,26), (3,122,60)]) is_result_nan: bits[1] = or(nor.1743, nor.1745, and.1702, id=1709, pos=[(0,3755,38), (3,122,60)]) result_sign: bits[1] = priority_sel(concat.1703, cases=[cancel__1, not.1704], default=greater_sign, id=1710, pos=[(3,122,60)]) not.1711: bits[1] = not(has_pos_inf, id=1711, pos=[(0,3750,42), (3,122,60)]) result_fraction: bits[10] = bit_slice(rounded_fraction__1, start=0, width=10, id=1713, pos=[(3,122,60)]) sign_ext.1784: bits[10] = sign_ext(not.1783, new_bit_count=10, id=1784, pos=[(0,3747,26), (3,122,60)]) not.1714: bits[1] = not(is_result_nan, id=1714, pos=[(0,3759,22), (3,122,60)]) result_sign__1: bits[1] = sel(is_operand_inf, cases=[result_sign, not.1711], id=1715, pos=[(0,3750,22), (3,122,60)]) or.1716: bits[1] = or(is_result_nan, is_operand_inf, bit_slice.1706, and_reduce.1707, id=1716, pos=[(0,3756,21), (3,122,60)]) result_fraction__3: bits[10] = and(result_fraction, sign_ext.1784, id=1785, pos=[(0,3747,26), (3,122,60)]) literal.1718: bits[10] = literal(value=64, id=1718, pos=[(0,3758,27), (3,122,60)]) after_all.520: token = after_all(id=520) nand.1731: bits[1] = nand(carry_bit__2, cancel__2, id=1731, pos=[(3,122,60)]) result_sign__2: bits[1] = and(not.1714, result_sign__1, id=1720, pos=[(0,3759,22), (3,122,60)]) result_exp__2: bits[5] = sel(or.1716, cases=[bit_slice.1699, max_exp], id=1721, pos=[(0,3756,21), (3,122,60)]) result_fraction__4: bits[10] = sel(is_result_nan, cases=[result_fraction__3, literal.1718], id=1722, pos=[(0,3758,8), (3,122,60)]) assert_1489__2: token = assert(after_all.520, nand.1731, message="Assertion failure via fail! @ /inputs/subtree/xls/dslx/stdlib/apfloat.x:3704:19-3704:60", label="carry_and_cancel", id=1726, pos=[(3,122,60)]) ret tuple.1724: (bits[1], bits[5], bits[10]) = tuple(result_sign__2, result_exp__2, result_fraction__4, id=1724, pos=[(0,3761,33), (3,122,60)]) }