package float64 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/float64.x" top fn __float64__mul(x: (bits[1], bits[11], bits[52]) id=161, y: (bits[1], bits[11], bits[52]) id=162) -> (bits[1], bits[11], bits[52]) { x_bexp__1: bits[11] = tuple_index(x, index=1, id=387, pos=[(0,804,5), (0,3291,40), (2,170,48)]) literal.388: bits[11] = literal(value=0, id=388, pos=[(0,804,14), (0,3291,40), (2,170,48)]) y_bexp__2: bits[11] = tuple_index(y, index=1, id=389, pos=[(0,804,5), (0,3291,67), (2,170,48)]) literal.390: bits[1] = literal(value=1, id=390, pos=[(0,3294,23), (2,170,48)]) x_fraction__1: bits[52] = tuple_index(x, index=2, id=391, pos=[(0,3294,23), (2,170,48)]) y_fraction__1: bits[52] = tuple_index(y, index=2, id=392, pos=[(0,3296,23), (2,170,48)]) eq.394: bits[1] = eq(x_bexp__1, literal.388, id=394, pos=[(0,804,5), (0,3291,40), (2,170,48)]) eq.395: bits[1] = eq(y_bexp__2, literal.388, id=395, pos=[(0,804,5), (0,3291,67), (2,170,48)]) literal.393: bits[1] = literal(value=0, id=393, pos=[(2,170,48)]) x_fraction__3: bits[53] = concat(literal.390, x_fraction__1, id=396, pos=[(0,3294,23), (2,170,48)]) y_fraction__3: bits[53] = concat(literal.390, y_fraction__1, id=397, pos=[(0,3296,23), (2,170,48)]) nor.504: bits[1] = nor(eq.394, eq.395, id=504, pos=[(0,3300,19), (2,170,48)]) concat.398: bits[12] = concat(literal.393, x_bexp__1, id=398, pos=[(2,170,48)]) concat.399: bits[12] = concat(literal.393, y_bexp__2, id=399, pos=[(2,170,48)]) umul.401: bits[106] = umul(x_fraction__3, y_fraction__3, id=401, pos=[(0,3300,63), (2,170,48)]) sign_ext.491: bits[106] = sign_ext(nor.504, new_bit_count=106, id=491, pos=[(0,3300,19), (2,170,48)]) add.403: bits[12] = add(concat.398, concat.399, id=403, pos=[(0,3309,16), (2,170,48)]) fraction: bits[106] = and(umul.401, sign_ext.491, id=492, pos=[(0,3300,19), (2,170,48)]) concat.405: bits[13] = concat(literal.393, add.403, id=405, pos=[(0,3309,16), (2,170,48)]) literal.406: bits[13] = literal(value=7169, id=406, pos=[(0,3309,16), (2,170,48)]) bit_slice.407: bits[1] = bit_slice(fraction, start=105, width=1, id=407, pos=[(0,3324,33), (2,170,48)]) literal.408: bits[105] = literal(value=0x0, id=408, pos=[(2,170,48)]) bit_slice.409: bits[1] = bit_slice(fraction, start=0, width=1, id=409, pos=[(0,3329,25), (2,170,48)]) exp: bits[13] = add(concat.405, literal.406, id=410, pos=[(0,3309,16), (2,170,48)]) sign_ext.494: bits[13] = sign_ext(nor.504, new_bit_count=13, id=494, pos=[(0,3318,14), (2,170,48)]) literal.412: bits[12] = literal(value=0, id=412, pos=[(2,170,48)]) fraction__1: bits[106] = shrl(fraction, bit_slice.407, id=413, pos=[(0,3330,19), (2,170,48)]) sticky: bits[106] = concat(literal.408, bit_slice.409, id=414, pos=[(2,170,48)]) exp__1: bits[13] = and(exp, sign_ext.494, id=495, pos=[(0,3318,14), (2,170,48)]) concat.416: bits[13] = concat(literal.412, bit_slice.407, id=416, pos=[(2,170,48)]) fraction__2: bits[106] = or(fraction__1, sticky, id=417, pos=[(0,3331,19), (2,170,48)]) exp__2: bits[13] = add(exp__1, concat.416, id=418, pos=[(0,3334,14), (2,170,48)]) literal.411: bits[13] = literal(value=0, id=411, pos=[(0,3318,29), (2,170,48)]) bit_slice.419: bits[105] = bit_slice(fraction__2, start=1, width=105, id=419, pos=[(0,3346,48), (2,170,48)]) sle.420: bits[1] = sle(exp__2, literal.411, id=420, pos=[(0,3346,22), (2,170,48)]) concat.421: bits[106] = concat(literal.393, bit_slice.419, id=421, pos=[(0,3346,48), (2,170,48)]) bit_slice.422: bits[1] = bit_slice(fraction__2, start=0, width=1, id=422, pos=[(0,3345,25), (2,170,48)]) fraction__3: bits[106] = sel(sle.420, cases=[fraction__2, concat.421], id=423, pos=[(0,3346,19), (2,170,48)]) sticky__1: bits[106] = concat(literal.408, bit_slice.422, id=424, pos=[(2,170,48)]) fraction__4: bits[106] = or(fraction__3, sticky__1, id=425, pos=[(0,3347,19), (2,170,48)]) bit_slice.426: bits[51] = bit_slice(fraction__4, start=0, width=51, id=426, pos=[(0,3360,41), (2,170,48)]) literal.427: bits[51] = literal(value=0, id=427, pos=[(0,3361,32), (2,170,48)]) bit_slice.428: bits[1] = bit_slice(fraction__4, start=51, width=1, id=428, pos=[(0,3359,40), (2,170,48)]) bit_slice.429: bits[1] = bit_slice(fraction__4, start=52, width=1, id=429, pos=[(0,3363,45), (2,170,48)]) ne.430: bits[1] = ne(bit_slice.426, literal.427, id=430, pos=[(0,3360,41), (2,170,48)]) not.431: bits[1] = not(bit_slice.428, id=431, pos=[(0,3363,23), (2,170,48)]) not.432: bits[1] = not(bit_slice.429, id=432, pos=[(0,3363,23), (2,170,48)]) greater_than_half_way: bits[1] = and(bit_slice.428, ne.430, id=434, pos=[(0,3359,40), (2,170,48)]) nor.435: bits[1] = nor(not.431, ne.430, not.432, id=435, pos=[(0,3363,23), (2,170,48)]) fraction__5: bits[52] = bit_slice(fraction__4, start=52, width=52, id=433, pos=[(2,170,48)]) literal.507: bits[52] = literal(value=0, id=507) do_round_up: bits[1] = or(greater_than_half_way, nor.435, id=438, pos=[(0,3362,22), (2,170,48)]) fraction__6: bits[53] = concat(literal.393, fraction__5, id=436, pos=[(2,170,48)]) concat.511: bits[53] = concat(literal.507, do_round_up, id=511) fraction__7: bits[53] = add(fraction__6, concat.511, id=489) literal.441: bits[13] = literal(value=1, id=441, pos=[(0,3374,39), (2,170,48)]) bit_slice.442: bits[1] = bit_slice(fraction__7, start=52, width=1, id=442, pos=[(0,3374,25), (2,170,48)]) add.443: bits[13] = add(exp__2, literal.441, id=443, pos=[(0,3374,33), (2,170,48)]) exp__3: bits[13] = sel(bit_slice.442, cases=[exp__2, add.443], id=444, pos=[(0,3374,14), (2,170,48)]) is_subnormal: bits[1] = sle(exp__3, literal.411, id=447, pos=[(0,3375,23), (2,170,48)]) not.498: bits[1] = not(is_subnormal, id=498, pos=[(0,3384,21), (2,170,48)]) high_exp: bits[11] = literal(value=2047, id=445, pos=[(0,96,29), (0,3402,28), (2,170,48)]) result_exp: bits[12] = bit_slice(exp__3, start=0, width=12, id=448, pos=[(2,170,48)]) sign_ext.499: bits[12] = sign_ext(not.498, new_bit_count=12, id=499, pos=[(0,3384,21), (2,170,48)]) eq.449: bits[1] = eq(x_bexp__1, high_exp, id=449, pos=[(0,96,6), (0,3402,28), (2,170,48)]) eq.450: bits[1] = eq(x_fraction__1, literal.507, id=450, pos=[(0,96,44), (0,3402,28), (2,170,48)]) eq.451: bits[1] = eq(y_bexp__2, high_exp, id=451, pos=[(0,96,6), (0,3402,62), (2,170,48)]) eq.452: bits[1] = eq(y_fraction__1, literal.507, id=452, pos=[(0,96,44), (0,3402,62), (2,170,48)]) result_exp__1: bits[12] = and(result_exp, sign_ext.499, id=500, pos=[(0,3384,21), (2,170,48)]) and.454: bits[1] = and(eq.449, eq.450, id=454, pos=[(0,96,6), (0,3402,28), (2,170,48)]) and.455: bits[1] = and(eq.451, eq.452, id=455, pos=[(0,96,6), (0,3402,62), (2,170,48)]) bit_slice.456: bits[11] = bit_slice(result_exp__1, start=0, width=11, id=456, pos=[(0,3392,11), (2,170,48)]) has_inf_arg: bits[1] = or(and.454, and.455, id=459, pos=[(0,3402,28), (2,170,48)]) bit_slice.460: bits[1] = bit_slice(result_exp__1, start=11, width=1, id=460, pos=[(0,3392,11), (2,170,48)]) and_reduce.461: bits[1] = and_reduce(bit_slice.456, id=461, pos=[(0,3392,11), (2,170,48)]) not.483: bits[1] = not(eq.449, id=483, pos=[(0,71,6), (0,3401,28), (2,170,48)]) not.485: bits[1] = not(eq.451, id=485, pos=[(0,71,6), (0,3401,62), (2,170,48)]) has_0_arg: bits[1] = or(eq.394, eq.395, id=400, pos=[(0,3291,40), (2,170,48)]) or.480: bits[1] = or(has_inf_arg, bit_slice.460, and_reduce.461, is_subnormal, id=480, pos=[(0,3397,26), (2,170,48)]) nor.484: bits[1] = nor(not.483, eq.450, id=484, pos=[(0,71,6), (0,3401,28), (2,170,48)]) nor.486: bits[1] = nor(not.485, eq.452, id=486, pos=[(0,71,6), (0,3401,62), (2,170,48)]) and.464: bits[1] = and(has_0_arg, has_inf_arg, id=464, pos=[(0,3403,40), (2,170,48)]) not.501: bits[1] = not(or.480, id=501, pos=[(0,3397,26), (2,170,48)]) is_result_nan: bits[1] = or(nor.484, nor.486, and.464, id=466, pos=[(0,3403,24), (2,170,48)]) x_sign__1: bits[1] = tuple_index(x, index=0, id=467, pos=[(0,3378,23), (2,170,48)]) y_sign__1: bits[1] = tuple_index(y, index=0, id=468, pos=[(0,3378,33), (2,170,48)]) result_fraction: bits[52] = bit_slice(fraction__7, start=0, width=52, id=470, pos=[(2,170,48)]) sign_ext.502: bits[52] = sign_ext(not.501, new_bit_count=52, id=502, pos=[(0,3397,26), (2,170,48)]) not.471: bits[1] = not(is_result_nan, id=471, pos=[(0,3407,22), (2,170,48)]) result_sign: bits[1] = xor(x_sign__1, y_sign__1, id=472, pos=[(0,3378,23), (2,170,48)]) or.473: bits[1] = or(is_result_nan, has_inf_arg, bit_slice.460, and_reduce.461, id=473, pos=[(0,3404,21), (2,170,48)]) result_fraction__3: bits[52] = and(result_fraction, sign_ext.502, id=503, pos=[(0,3397,26), (2,170,48)]) nan_fraction: bits[52] = literal(value=2251799813685248, id=475, pos=[(0,3405,23), (2,170,48)]) result_sign__1: bits[1] = and(not.471, result_sign, id=476, pos=[(0,3407,22), (2,170,48)]) result_exp__4: bits[11] = sel(or.473, cases=[bit_slice.456, high_exp], id=477, pos=[(0,3404,21), (2,170,48)]) result_fraction__4: bits[52] = sel(is_result_nan, cases=[result_fraction__3, nan_fraction], id=478, pos=[(0,3406,26), (2,170,48)]) ret tuple.479: (bits[1], bits[11], bits[52]) = tuple(result_sign__1, result_exp__4, result_fraction__4, id=479, pos=[(0,3409,33), (2,170,48)]) }