static void put_vec_to_lval(ivl_statement_t net, struct vec_slice_info*slices) { unsigned lidx; unsigned cur_bit; unsigned wid = ivl_stmt_lwidth(net); cur_bit = 0; for (lidx = 0 ; lidx < ivl_stmt_lvals(net) ; lidx += 1) { ivl_lval_t lval; unsigned bit_limit = wid - cur_bit; lval = ivl_stmt_lval(net, lidx); if (bit_limit > ivl_lval_width(lval)) bit_limit = ivl_lval_width(lval); if (lidx+1 < ivl_stmt_lvals(net)) fprintf(vvp_out, " %%split/vec4 %u;\n", bit_limit); put_vec_to_lval_slice(lval, slices+lidx, bit_limit); cur_bit += bit_limit; } }
static void put_vec_to_lval(ivl_statement_t net, struct vec_slice_info*slices, struct vector_info res) { unsigned lidx; unsigned cur_bit; cur_bit = 0; for (lidx = 0 ; lidx < ivl_stmt_lvals(net) ; lidx += 1) { unsigned bidx; ivl_lval_t lval; unsigned bit_limit = res.wid - cur_bit; lval = ivl_stmt_lval(net, lidx); if (bit_limit > ivl_lval_width(lval)) bit_limit = ivl_lval_width(lval); bidx = res.base + cur_bit; put_vec_to_lval_slice(lval, slices+lidx, bidx, bit_limit); cur_bit += bit_limit; } }