Lines Matching refs:regnd

79 int PhaseChaitin::yank( Node *old, Block *current_block, Node_List *value, Node_List *regnd ) {
87 if( regnd && (*regnd)[old_reg]==old ) { // Instruction is currently available?
88 value->map(old_reg,NULL); // Yank from value/regnd maps
89 regnd->map(old_reg,NULL); // This register's value is now unknown
124 Node_List *value, Node_List *regnd) {
139 blk_adjust += yank(old, current_block, value, regnd);
145 blk_adjust += yank_if_dead_recurse(n, orig_old, current_block, value, regnd);
158 int PhaseChaitin::use_prior_register( Node *n, uint idx, Node *def, Block *current_block, Node_List &value, Node_List &regnd ) {
204 return yank_if_dead(old,current_block,&value,&regnd);
225 int PhaseChaitin::elide_copy( Node *n, int k, Block *current_block, Node_List &value, Node_List &regnd, bool can_change_regs ) {
238 blk_adjust += use_prior_register(n,k,copy,current_block,value,regnd);
258 regnd[nk_reg] != NULL && regnd[nk_reg] != x &&
259 n2lidx(x) == n2lidx(regnd[nk_reg])) {
265 n->set_req(k, regnd[nk_reg]);
266 blk_adjust += yank_if_dead(val, current_block, &value, &regnd);
280 blk_adjust += use_prior_register(n,k,regnd[val_reg],current_block,value,regnd);
281 if( n->in(k) == regnd[val_reg] ) // Success! Quit trying
322 regnd[reg]->outcnt()==1 ) { // last use of a spill-load turns into a CISC use
323 blk_adjust += use_prior_register(n,k,regnd[reg],current_block,value,regnd);
324 if( n->in(k) == regnd[reg] ) // Success! Quit trying
341 Node_List& value, Node_List& regnd,
365 yank_if_dead(use, current_block, &value, &regnd);
457 Node_List &regnd = *(free_list.is_empty() ? new Node_List() : free_list.pop());
461 regnd.map(_max_reg,NULL);
464 blk2regnd[b->_pre_order] = &regnd;
466 // Initialize value & regnd for this block
471 regnd.map(k,NULL);
481 regnd.map(k,f_regnd[k]);
490 if( regnd[k] != p_regnd[k] ) { // Conflict on reaching defs?
492 regnd.map(k,NULL);
531 regnd.map(preg,phi);
536 regnd.map(preg_lo,phi);
548 j -= yank_if_dead(n,b,&value,&regnd);
573 regnd.map(ureg, def);
583 regnd.map(ureg_lo, def);
594 j -= elide_copy( n, k, b, value, regnd, two_adr!=k );
611 if (regnd[nreg] != NULL && regnd[nreg]->outcnt() == 0) {
612 regnd.map(nreg, NULL);
623 if (eliminate_copy_of_constant(val, n, b, value, regnd, nreg, OptoReg::Bad)) {
624 j -= replace_and_yank_if_dead(n, nreg, b, value, regnd);
627 regnd.map(nreg,n);
634 j -= replace_and_yank_if_dead(n, nreg, b, value, regnd);
642 regnd.map(nreg,n);
648 regnd.map(nreg_lo, n );
653 j -= replace_and_yank_if_dead(n, nreg, b, value, regnd);
668 if (eliminate_copy_of_constant(val, n, b, value, regnd, nreg, nreg_lo)) {
669 j -= replace_and_yank_if_dead(n, nreg, b, value, regnd);
671 regnd.map(nreg , n );
672 regnd.map(nreg_lo, n );
678 j -= replace_and_yank_if_dead(n, nreg, b, value, regnd);
690 regnd.map(nreg,n);