Lines Matching refs:cum

1547 static void layout_arg_even(TCGCumulativeArgs *cum)  in layout_arg_even()  argument
1549 cum->arg_slot += cum->arg_slot & 1; in layout_arg_even()
1552 static void layout_arg_1(TCGCumulativeArgs *cum, TCGHelperInfo *info, in layout_arg_1() argument
1555 TCGCallArgumentLoc *loc = &info->in[cum->info_in_idx]; in layout_arg_1()
1559 .arg_idx = cum->arg_idx, in layout_arg_1()
1560 .arg_slot = cum->arg_slot, in layout_arg_1()
1562 cum->info_in_idx++; in layout_arg_1()
1563 cum->arg_slot++; in layout_arg_1()
1566 static void layout_arg_normal_n(TCGCumulativeArgs *cum, in layout_arg_normal_n() argument
1569 TCGCallArgumentLoc *loc = &info->in[cum->info_in_idx]; in layout_arg_normal_n()
1575 .arg_idx = cum->arg_idx, in layout_arg_normal_n()
1577 .arg_slot = cum->arg_slot + i, in layout_arg_normal_n()
1580 cum->info_in_idx += n; in layout_arg_normal_n()
1581 cum->arg_slot += n; in layout_arg_normal_n()
1584 static void layout_arg_by_ref(TCGCumulativeArgs *cum, TCGHelperInfo *info) in layout_arg_by_ref() argument
1586 TCGCallArgumentLoc *loc = &info->in[cum->info_in_idx]; in layout_arg_by_ref()
1590 layout_arg_1(cum, info, TCG_CALL_ARG_BY_REF); in layout_arg_by_ref()
1598 loc[0].ref_slot = cum->ref_slot; in layout_arg_by_ref()
1607 .arg_idx = cum->arg_idx, in layout_arg_by_ref()
1609 .ref_slot = cum->ref_slot + i, in layout_arg_by_ref()
1612 cum->info_in_idx += n - 1; /* i=0 accounted for in layout_arg_1 */ in layout_arg_by_ref()
1613 cum->ref_slot += n; in layout_arg_by_ref()
1622 TCGCumulativeArgs cum = { }; in init_call_layout() local
1663 cum.arg_slot = 1; in init_call_layout()
1676 for (typemask >>= 3; typemask; typemask >>= 3, cum.arg_idx++) { in init_call_layout()
1704 layout_arg_even(&cum); in init_call_layout()
1707 layout_arg_1(&cum, info, TCG_CALL_ARG_NORMAL); in init_call_layout()
1711 layout_arg_1(&cum, info, kind); in init_call_layout()
1721 layout_arg_even(&cum); in init_call_layout()
1725 layout_arg_normal_n(&cum, info, 2); in init_call_layout()
1727 layout_arg_1(&cum, info, TCG_CALL_ARG_NORMAL); in init_call_layout()
1738 layout_arg_even(&cum); in init_call_layout()
1741 layout_arg_normal_n(&cum, info, 128 / TCG_TARGET_REG_BITS); in init_call_layout()
1744 layout_arg_by_ref(&cum, info); in init_call_layout()
1755 info->nr_in = cum.info_in_idx; in init_call_layout()
1758 assert(cum.info_in_idx <= ARRAY_SIZE(info->in)); in init_call_layout()
1760 assert(cum.arg_slot <= max_reg_slots + max_stk_slots); in init_call_layout()
1767 if (cum.ref_slot != 0) { in init_call_layout()
1770 if (cum.arg_slot > max_reg_slots) { in init_call_layout()
1773 ref_base = cum.arg_slot - max_reg_slots; in init_call_layout()
1778 assert(ref_base + cum.ref_slot <= max_stk_slots); in init_call_layout()
1782 for (int i = cum.info_in_idx - 1; i >= 0; --i) { in init_call_layout()