Lines Matching refs:sets
508 /* Total number of SETs in block. */
2676 /* Can't merge two expressions in different alias sets, since we
4141 Note that cse_main processes all sets in the instruction. Most
4143 CSE processes insns with multiple sets as well. */
4265 /* Add an entry containing RTL X into SETS. */
4267 add_to_set (vec<struct set> *sets, rtx x)
4271 sets->safe_push (entry);
4274 /* Record all the SETs in this instruction into SETS_PTR,
4275 and return the number of recorded sets. */
4283 /* Ignore SETs that are unconditional jumps.
4310 put them in the same order in the SETS array. */
4328 put them in the same order in the SETS array. */
4368 number of SETS in INSN with the canonical register.
4398 vec<struct set> sets = *psets;
4399 int n_sets = sets.length ();
4480 if (GET_CODE (SET_DEST (sets[0].rtl)) != STRICT_LOW_PART
4481 && rtx_equal_p (XEXP (tem, 0), SET_SRC (sets[0].rtl)))
4504 rtx dest = SET_DEST (sets[i].rtl);
4505 rtx src = SET_SRC (sets[i].rtl);
4508 validate_change (insn, &SET_SRC (sets[i].rtl), new_rtx, 1);
4566 /* Record all the SETs in this instruction. */
4567 auto_vec<struct set, 8> sets;
4568 n_sets = find_sets_in_insn (insn, (vec<struct set>*)&sets);
4571 canonicalize_insn (insn, (vec<struct set>*)&sets);
4582 if (GET_CODE (SET_DEST (sets[0].rtl)) != ZERO_EXTRACT
4583 && (! rtx_equal_p (XEXP (tem, 0), SET_SRC (sets[0].rtl))
4584 || GET_CODE (SET_DEST (sets[0].rtl)) == STRICT_LOW_PART))
4594 else if (GET_CODE (SET_DEST (sets[0].rtl)) == ZERO_EXTRACT
4596 && CONST_INT_P (XEXP (SET_DEST (sets[0].rtl), 1))
4597 && CONST_INT_P (XEXP (SET_DEST (sets[0].rtl), 2)))
4599 rtx dest_reg = XEXP (SET_DEST (sets[0].rtl), 0);
4603 rtx width = XEXP (SET_DEST (sets[0].rtl), 1);
4604 rtx pos = XEXP (SET_DEST (sets[0].rtl), 2);
4622 /* Set sets[i].src_elt to the class each source belongs to.
4654 dest = SET_DEST (sets[i].rtl);
4655 src = SET_SRC (sets[i].rtl);
4662 sets[i].mode = mode;
4703 if (GET_CODE (SET_DEST (sets[i].rtl)) == ZERO_EXTRACT)
4705 rtx width = XEXP (SET_DEST (sets[i].rtl), 1);
4735 sets[i].src = src;
4736 sets[i].src_hash = HASH (src, mode);
4737 sets[i].src_volatile = do_not_record;
4738 sets[i].src_in_memory = hash_arg_in_memory;
4751 sets[i].src_volatile = 1;
4759 sets[i].src_volatile = 1;
4769 sets[i].src_volatile = 1;
4784 sets[i].src_volatile = 1;
4803 if (!sets[i].src_volatile)
4804 elt = lookup (src, sets[i].src_hash, mode);
4806 sets[i].src_elt = elt;
4828 table, also set `sets[i].src_const_hash'). */
4854 sets[i].src_const_hash = HASH (src_const, mode);
4855 src_const_elt = lookup (src_const, sets[i].src_const_hash, mode);
4858 sets[i].src_const = src_const;
4859 sets[i].src_const_elt = src_const_elt;
5261 if (GET_CODE (SET_DEST (sets[i].rtl)) == ZERO_EXTRACT
5263 && CONST_INT_P (XEXP (SET_DEST (sets[i].rtl), 1))
5264 && CONST_INT_P (XEXP (SET_DEST (sets[i].rtl), 2))
5265 && REG_P (XEXP (SET_DEST (sets[i].rtl), 0))
5267 (GET_MODE_PRECISION (GET_MODE (SET_DEST (sets[i].rtl))),
5268 INTVAL (XEXP (SET_DEST (sets[i].rtl), 1))))
5269 && ((unsigned) INTVAL (XEXP (SET_DEST (sets[i].rtl), 1))
5270 + (unsigned) INTVAL (XEXP (SET_DEST (sets[i].rtl), 2))
5273 rtx dest_reg = XEXP (SET_DEST (sets[i].rtl), 0);
5274 rtx width = XEXP (SET_DEST (sets[i].rtl), 1);
5275 rtx pos = XEXP (SET_DEST (sets[i].rtl), 2);
5308 validate_unshare_change (insn, &SET_DEST (sets[i].rtl),
5310 validate_unshare_change (insn, &SET_SRC (sets[i].rtl),
5350 SET_SRC (sets[i].rtl) = trial;
5375 SET_SRC (sets[i].rtl) = trial;
5398 else if (MEM_P (trial) && !rtx_equal_p (trial, SET_SRC(sets[i].rtl)))
5403 else if (validate_unshare_change (insn, &SET_SRC (sets[i].rtl),
5406 rtx new_rtx = canon_reg (SET_SRC (sets[i].rtl), insn);
5411 validate_change (insn, &SET_SRC (sets[i].rtl), new_rtx, 1);
5445 src = SET_SRC (sets[i].rtl);
5464 && (!REG_P (sets[i].src)
5465 || REGNO (sets[i].src) >= FIRST_PSEUDO_REGISTER)
5480 if (validate_change (insn, &SET_SRC (sets[i].rtl), new_src, 0))
5487 && validate_change (insn, &SET_SRC (sets[i].rtl),
5495 if (src != sets[i].src)
5499 sets[i].src = src;
5500 sets[i].src_hash = HASH (src, mode);
5501 sets[i].src_volatile = do_not_record;
5502 sets[i].src_in_memory = hash_arg_in_memory;
5503 sets[i].src_elt = lookup (src, sets[i].src_hash, mode);
5545 sets[i].inner_dest = dest;
5563 sets[i].dest_hash = HASH (dest, mode);
5569 if (GET_CODE (SET_DEST (sets[i].rtl)) == ZERO_EXTRACT)
5571 rtx width = XEXP (SET_DEST (sets[i].rtl), 1);
5587 sets[i].src_elt = 0;
5588 sets[i].src_volatile = 1;
5602 sets[i].rtl = 0;
5612 sets[i].rtl = 0;
5624 If this insn has multiple sets, then reemitting the
5653 sets[i].rtl = 0;
5662 sets[i].rtl = 0;
5665 if (sets[i].rtl != 0 && dest != SET_DEST (sets[i].rtl))
5668 sets[i].dest_hash = HASH (SET_DEST (sets[i].rtl), mode);
5671 invalidate_dest (SET_DEST (sets[i].rtl));
5672 sets[i].rtl = 0;
5684 if (src_eqv && src_eqv_elt == 0 && sets[0].rtl != 0 && ! src_eqv_volatile
5685 && ! rtx_equal_p (src_eqv, SET_DEST (sets[0].rtl)))
5688 struct table_elt *classp = sets[0].src_elt;
5689 rtx dest = SET_DEST (sets[0].rtl);
5710 if (sets[i].rtl && sets[i].src_elt == 0
5711 && rtx_equal_p (SET_SRC (sets[i].rtl), src_eqv))
5712 sets[i].src_elt = src_eqv_elt;
5716 if (sets[i].rtl && ! sets[i].src_volatile
5717 && ! rtx_equal_p (SET_SRC (sets[i].rtl), SET_DEST (sets[i].rtl)))
5719 if (GET_CODE (SET_DEST (sets[i].rtl)) == STRICT_LOW_PART)
5726 sets[i].src_elt = src_eqv_elt;
5727 sets[i].src_hash = src_eqv_hash;
5734 rtx src = sets[i].src;
5735 rtx dest = SET_DEST (sets[i].rtl);
5747 classp = sets[i].src_const_elt;
5749 if (sets[i].src_elt == 0)
5759 sets[i].src_hash = HASH (src, mode);
5761 elt = insert (src, classp, sets[i].src_hash, mode);
5762 elt->in_memory = sets[i].src_in_memory;
5769 sets[i].src_elt = classp = elt;
5771 if (sets[i].src_const && sets[i].src_const_elt == 0
5772 && src != sets[i].src_const
5773 && ! rtx_equal_p (sets[i].src_const, src))
5774 setssets[i].src_const, classp,
5775 sets[i].src_const_hash, mode);
5778 else if (sets[i].src_elt == 0)
5782 sets[i].src_elt = src_eqv_elt;
5785 check if they are invalidated by other sets. */
5788 if (sets[i].rtl)
5790 rtx x = sets[i].inner_dest;
5805 rtx dest = SET_DEST (sets[i].rtl);
5809 sets[i].dest_hash = HASH (dest, GET_MODE (dest));
5814 sets[i].dest_addr_elt = elt;
5817 sets[i].dest_addr_elt = NULL;
5842 sets[i].rtl is still nonzero, so here we invalidate the reg
5846 if (sets[i].rtl)
5850 rtx dest = SET_DEST (sets[i].rtl);
5884 if (sets[i].rtl)
5886 rtx x = SET_DEST (sets[i].rtl);
5925 if (sets[i].rtl)
5927 if (sets[i].dest_addr_elt
5928 && sets[i].dest_addr_elt->first_same_value == 0)
5932 sets[i].rtl = NULL_RTX;
5934 else if (sets[i].src_elt && sets[i].src_elt->first_same_value == 0)
5938 struct table_elt *elt = sets[i].src_elt;
5945 sets[i].src_elt = elt ? elt->first_same_value : 0;
5952 if (sets[i].rtl)
5954 rtx dest = SET_DEST (sets[i].rtl);
5969 || sets[i].src_elt == 0)
5974 Note that in this case SETS[I].SRC_ELT is really SRC_EQV_ELT. */
5980 if (insert_regs (dest, sets[i].src_elt, 1))
5985 sets[i].dest_hash = HASH (dest, GET_MODE (dest));
5993 elt = insert (dest, sets[i].src_elt,
5994 sets[i].dest_hash, GET_MODE (dest));
6001 && GET_CODE (sets[i].src_elt->exp) == CONST_INT)
6002 insert_const_anchors (dest, sets[i].src_elt->exp, GET_MODE (dest));
6004 elt->in_memory = (MEM_P (sets[i].inner_dest)
6005 && !MEM_READONLY_P (sets[i].inner_dest));
6028 && sets[i].src_elt != 0)
6033 for (elt = sets[i].src_elt->first_same_value; elt;
6112 if (n_sets == 1 && sets[0].rtl)
6113 try_back_substitute_reg (sets[0].rtl, insn);
6431 /* Dump the path in DATA to file F. NSETS is the number of sets
6439 fprintf (f, ";; Following path with %d sets: ", nsets);
6466 the total number of SETs of all insns in the path. */
6488 /* A PARALLEL can have lots of SETs in it,
6730 /* If this basic block has no sets, skip it. */
6735 needed for this path. For this, we take the number of sets
7317 /* Check whether INSN sets CC_REG to CC_SRC. */
7376 /* INSN sets CC_REG to a value equal to CC_SRC
7387 /* We found an instruction which sets the condition
7392 /* If INSN sets CC_REG in some other way, don't look any
7480 sets the condition code register. Then look through the