package float32 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/float32.x" top fn __float32__mul(x: (bits[1], bits[8], bits[23]) id=161, y: (bits[1], bits[8], bits[23]) id=162) -> (bits[1], bits[8], bits[23]) { x_bexp__1: bits[8] = tuple_index(x, index=1, id=418, pos=[(0,804,5), (0,3287,40), (2,367,48)]) literal.419: bits[8] = literal(value=0, id=419, pos=[(0,804,14), (0,3287,40), (2,367,48)]) y_bexp__2: bits[8] = tuple_index(y, index=1, id=420, pos=[(0,804,5), (0,3287,67), (2,367,48)]) literal.421: bits[1] = literal(value=1, id=421, pos=[(0,3290,23), (2,367,48)]) x_fraction__1: bits[23] = tuple_index(x, index=2, id=422, pos=[(0,3290,23), (2,367,48)]) y_fraction__1: bits[23] = tuple_index(y, index=2, id=423, pos=[(0,3292,23), (2,367,48)]) eq.425: bits[1] = eq(x_bexp__1, literal.419, id=425, pos=[(0,804,5), (0,3287,40), (2,367,48)]) eq.426: bits[1] = eq(y_bexp__2, literal.419, id=426, pos=[(0,804,5), (0,3287,67), (2,367,48)]) literal.424: bits[1] = literal(value=0, id=424, pos=[(2,367,48)]) x_fraction__3: bits[24] = concat(literal.421, x_fraction__1, id=427, pos=[(0,3290,23), (2,367,48)]) y_fraction__3: bits[24] = concat(literal.421, y_fraction__1, id=428, pos=[(0,3292,23), (2,367,48)]) nor.535: bits[1] = nor(eq.425, eq.426, id=535, pos=[(0,3296,19), (2,367,48)]) concat.429: bits[9] = concat(literal.424, x_bexp__1, id=429, pos=[(2,367,48)]) concat.430: bits[9] = concat(literal.424, y_bexp__2, id=430, pos=[(2,367,48)]) umul.432: bits[48] = umul(x_fraction__3, y_fraction__3, id=432, pos=[(0,3296,63), (2,367,48)]) sign_ext.522: bits[48] = sign_ext(nor.535, new_bit_count=48, id=522, pos=[(0,3296,19), (2,367,48)]) add.434: bits[9] = add(concat.429, concat.430, id=434, pos=[(0,3305,16), (2,367,48)]) fraction: bits[48] = and(umul.432, sign_ext.522, id=523, pos=[(0,3296,19), (2,367,48)]) concat.436: bits[10] = concat(literal.424, add.434, id=436, pos=[(0,3305,16), (2,367,48)]) literal.437: bits[10] = literal(value=897, id=437, pos=[(0,3305,16), (2,367,48)]) bit_slice.438: bits[1] = bit_slice(fraction, start=47, width=1, id=438, pos=[(0,3320,33), (2,367,48)]) exp: bits[10] = add(concat.436, literal.437, id=439, pos=[(0,3305,16), (2,367,48)]) sign_ext.525: bits[10] = sign_ext(nor.535, new_bit_count=10, id=525, pos=[(0,3314,14), (2,367,48)]) literal.441: bits[9] = literal(value=0, id=441, pos=[(0,3380,39), (2,367,48)]) fraction__1: bits[48] = shrl(fraction, bit_slice.438, id=442, pos=[(0,3326,19), (2,367,48)]) exp__1: bits[10] = and(exp, sign_ext.525, id=526, pos=[(0,3314,14), (2,367,48)]) concat.444: bits[10] = concat(literal.441, bit_slice.438, id=444, pos=[(2,367,48)]) bit_slice.445: bits[1] = bit_slice(fraction__1, start=0, width=1, id=445, pos=[(0,3327,19), (2,367,48)]) bit_slice.446: bits[1] = bit_slice(fraction, start=0, width=1, id=446, pos=[(0,3325,25), (2,367,48)]) exp__2: bits[10] = add(exp__1, concat.444, id=447, pos=[(0,3330,14), (2,367,48)]) literal.440: bits[10] = literal(value=0, id=440, pos=[(0,3314,29), (2,367,48)]) bit_slice.448: bits[47] = bit_slice(fraction__1, start=1, width=47, id=448, pos=[(0,3327,19), (2,367,48)]) fraction__8: bits[1] = or(bit_slice.445, bit_slice.446, id=449, pos=[(0,3327,19), (2,367,48)]) sle.450: bits[1] = sle(exp__2, literal.440, id=450, pos=[(0,3342,22), (2,367,48)]) fraction__2: bits[48] = concat(bit_slice.448, fraction__8, id=451, pos=[(0,3327,19), (2,367,48)]) concat.452: bits[48] = concat(literal.424, bit_slice.448, id=452, pos=[(0,3342,48), (2,367,48)]) fraction__3: bits[48] = sel(sle.450, cases=[fraction__2, concat.452], id=453, pos=[(0,3342,19), (2,367,48)]) bit_slice.454: bits[21] = bit_slice(fraction__3, start=1, width=21, id=454, pos=[(0,3354,31), (2,367,48)]) literal.455: bits[21] = literal(value=0, id=455, pos=[(0,3354,67), (2,367,48)]) ne.457: bits[1] = ne(bit_slice.454, literal.455, id=457, pos=[(0,3356,41), (2,367,48)]) bit_slice.456: bits[1] = bit_slice(fraction__3, start=0, width=1, id=456, pos=[(0,3343,19), (2,367,48)]) or.510: bits[1] = or(ne.457, bit_slice.456, bit_slice.445, bit_slice.446, id=510, pos=[(0,3356,41), (2,367,48)]) bit_slice.460: bits[1] = bit_slice(fraction__3, start=22, width=1, id=460, pos=[(0,3353,30), (2,367,48)]) not.461: bits[1] = not(or.510, id=461, pos=[(0,3354,31), (2,367,48)]) bit_slice.462: bits[1] = bit_slice(fraction__3, start=23, width=1, id=462, pos=[(0,3359,45), (2,367,48)]) greater_than_half_way: bits[1] = and(bit_slice.460, or.510, id=464, pos=[(0,3355,40), (2,367,48)]) and.465: bits[1] = and(bit_slice.460, not.461, bit_slice.462, id=465, pos=[(0,3359,23), (2,367,48)]) fraction__5: bits[23] = bit_slice(fraction__3, start=23, width=23, id=463, pos=[(2,367,48)]) literal.476: bits[23] = literal(value=0, id=476, pos=[(0,3381,44), (2,367,48)]) do_round_up: bits[1] = or(greater_than_half_way, and.465, id=468, pos=[(0,3358,22), (2,367,48)]) fraction__6: bits[24] = concat(literal.424, fraction__5, id=466, pos=[(2,367,48)]) concat.542: bits[24] = concat(literal.476, do_round_up, id=542) fraction__7: bits[24] = add(fraction__6, concat.542, id=520) literal.471: bits[10] = literal(value=1, id=471, pos=[(0,3370,39), (2,367,48)]) bit_slice.472: bits[1] = bit_slice(fraction__7, start=23, width=1, id=472, pos=[(0,3370,25), (2,367,48)]) add.473: bits[10] = add(exp__2, literal.471, id=473, pos=[(0,3370,33), (2,367,48)]) exp__3: bits[10] = sel(bit_slice.472, cases=[exp__2, add.473], id=474, pos=[(0,3370,14), (2,367,48)]) is_subnormal: bits[1] = sle(exp__3, literal.440, id=477, pos=[(0,3371,23), (2,367,48)]) not.529: bits[1] = not(is_subnormal, id=529, pos=[(0,3380,21), (2,367,48)]) high_exp: bits[8] = literal(value=255, id=475, pos=[(0,3384,33), (2,367,48)]) result_exp: bits[9] = bit_slice(exp__3, start=0, width=9, id=478, pos=[(2,367,48)]) sign_ext.530: bits[9] = sign_ext(not.529, new_bit_count=9, id=530, pos=[(0,3380,21), (2,367,48)]) eq.479: bits[1] = eq(x_bexp__1, high_exp, id=479, pos=[(0,71,6), (0,3397,28), (2,367,48)]) eq.480: bits[1] = eq(x_fraction__1, literal.476, id=480, pos=[(0,96,44), (0,3391,31), (2,367,48)]) eq.481: bits[1] = eq(y_bexp__2, high_exp, id=481, pos=[(0,71,6), (0,3397,62), (2,367,48)]) eq.482: bits[1] = eq(y_fraction__1, literal.476, id=482, pos=[(0,96,44), (0,3391,65), (2,367,48)]) result_exp__1: bits[9] = and(result_exp, sign_ext.530, id=531, pos=[(0,3380,21), (2,367,48)]) and.484: bits[1] = and(eq.479, eq.480, id=484, pos=[(0,96,6), (0,3391,31), (2,367,48)]) and.485: bits[1] = and(eq.481, eq.482, id=485, pos=[(0,96,6), (0,3391,65), (2,367,48)]) bit_slice.486: bits[8] = bit_slice(result_exp__1, start=0, width=8, id=486, pos=[(2,367,48)]) has_inf_arg: bits[1] = or(and.484, and.485, id=489, pos=[(0,3398,28), (2,367,48)]) bit_slice.490: bits[1] = bit_slice(result_exp__1, start=8, width=1, id=490, pos=[(0,3386,11), (2,367,48)]) and_reduce.491: bits[1] = and_reduce(bit_slice.486, id=491, pos=[(0,3386,11), (2,367,48)]) not.514: bits[1] = not(eq.479, id=514, pos=[(0,71,6), (0,3397,28), (2,367,48)]) not.516: bits[1] = not(eq.481, id=516, pos=[(0,71,6), (0,3397,62), (2,367,48)]) has_0_arg: bits[1] = or(eq.425, eq.426, id=431, pos=[(0,3287,40), (2,367,48)]) or.511: bits[1] = or(has_inf_arg, bit_slice.490, and_reduce.491, is_subnormal, id=511, pos=[(0,3393,26), (2,367,48)]) nor.515: bits[1] = nor(not.514, eq.480, id=515, pos=[(0,71,6), (0,3397,28), (2,367,48)]) nor.517: bits[1] = nor(not.516, eq.482, id=517, pos=[(0,71,6), (0,3397,62), (2,367,48)]) and.494: bits[1] = and(has_0_arg, has_inf_arg, id=494, pos=[(0,3399,40), (2,367,48)]) not.532: bits[1] = not(or.511, id=532, pos=[(0,3393,26), (2,367,48)]) is_result_nan: bits[1] = or(nor.515, nor.517, and.494, id=496, pos=[(0,3399,24), (2,367,48)]) x_sign__1: bits[1] = tuple_index(x, index=0, id=497, pos=[(0,3374,23), (2,367,48)]) y_sign__1: bits[1] = tuple_index(y, index=0, id=498, pos=[(0,3374,33), (2,367,48)]) result_fraction: bits[23] = bit_slice(fraction__7, start=0, width=23, id=500, pos=[(2,367,48)]) sign_ext.533: bits[23] = sign_ext(not.532, new_bit_count=23, id=533, pos=[(0,3393,26), (2,367,48)]) not.501: bits[1] = not(is_result_nan, id=501, pos=[(0,3403,22), (2,367,48)]) result_sign: bits[1] = xor(x_sign__1, y_sign__1, id=502, pos=[(0,3374,23), (2,367,48)]) or.503: bits[1] = or(is_result_nan, has_inf_arg, bit_slice.490, and_reduce.491, id=503, pos=[(0,3400,21), (2,367,48)]) result_fraction__3: bits[23] = and(result_fraction, sign_ext.533, id=534, pos=[(0,3393,26), (2,367,48)]) nan_fraction: bits[23] = literal(value=4194304, id=505, pos=[(0,3401,23), (2,367,48)]) result_sign__1: bits[1] = and(not.501, result_sign, id=506, pos=[(0,3403,22), (2,367,48)]) result_exp__4: bits[8] = sel(or.503, cases=[bit_slice.486, high_exp], id=507, pos=[(0,3400,21), (2,367,48)]) result_fraction__4: bits[23] = sel(is_result_nan, cases=[result_fraction__3, nan_fraction], id=508, pos=[(0,3402,26), (2,367,48)]) ret tuple.509: (bits[1], bits[8], bits[23]) = tuple(result_sign__1, result_exp__4, result_fraction__4, id=509, pos=[(0,3405,33), (2,367,48)]) }