Home | History | Annotate | Download | only in gcc

Lines Matching refs:cand

300 /* Given a insn (CURR_INSN), an extension candidate for removal (CAND)
318 combine_set_extension (ext_cand *cand, rtx_insn *curr_insn, rtx *orig_set)
323 rtx cand_pat = single_set (cand->insn);
333 new_reg = gen_rtx_REG (cand->mode, REGNO (SET_DEST (cand_pat)));
335 new_reg = gen_rtx_REG (cand->mode, REGNO (SET_DEST (*orig_set)));
340 && HWI_COMPUTABLE_MODE_P (cand->mode))
342 if (INTVAL (orig_src) >= 0 || cand->code == SIGN_EXTEND)
359 else if (GET_CODE (orig_src) == cand->code)
363 = gen_rtx_fmt_e (cand->code, cand->mode, XEXP (orig_src, 0));
379 = gen_rtx_fmt_e (cand->code, cand->mode, orig_src);
389 && update_reg_equal_equiv_notes (curr_insn, cand->mode, orig_mode,
390 cand->code))
414 transform_ifelse (ext_cand *cand, rtx_insn *def_insn)
432 >= GET_MODE_UNIT_SIZE (cand->mode))
435 map_srcreg = gen_rtx_REG (cand->mode, REGNO (srcreg));
436 map_srcreg2 = gen_rtx_REG (cand->mode, REGNO (srcreg2));
437 map_dstreg = gen_rtx_REG (cand->mode, REGNO (dstreg));
438 ifexpr = gen_rtx_IF_THEN_ELSE (cand->mode, cond, map_srcreg, map_srcreg2);
442 && update_reg_equal_equiv_notes (def_insn, cand->mode, GET_MODE (dstreg),
443 cand->code))
705 merge_def_and_ext (ext_cand *cand, rtx_insn *def_insn, ext_state *state)
710 ext_src_mode = GET_MODE (XEXP (SET_SRC (cand->expr), 0));
718 == (cand->code == ZERO_EXTEND
724 >= GET_MODE_UNIT_SIZE (cand->mode))
730 if (combine_set_extension (cand, def_insn, sub_rtx))
754 of the candidate for elimination (CAND) and tries to combine
763 combine_reaching_defs (ext_cand *cand, const_rtx set_pat, ext_state *state)
774 outcome = make_defs_and_copies_lists (cand->insn, set_pat, state);
787 rtx set = single_set (cand->insn);
821 if (state->modified[INSN_UID (cand->insn)].kind != EXT_MODIFIED_NONE)
847 basic_block bb = BLOCK_FOR_INSN (cand->insn);
849 || DF_INSN_LUID (def_insn) > DF_INSN_LUID (cand->insn))
853 CAND->insn, then this transformation is not safe. Note we have
884 used or set between the def_insn and cand->insn exclusive. */
885 if (reg_used_between_p (SET_DEST (set), def_insn, cand->insn)
886 || reg_set_between_p (SET_DEST (set), def_insn, cand->insn))
896 Make sure to get the mode from the extension (cand->insn). This
989 /* If cand->insn has been already modified, update cand->mode to a wider
991 if (state->modified[INSN_UID (cand->insn)].kind != EXT_MODIFIED_NONE)
995 if (state->modified[INSN_UID (cand->insn)].kind
996 != (cand->code == ZERO_EXTEND
998 || state->modified[INSN_UID (cand->insn)].mode != cand->mode
1003 >= GET_MODE_UNIT_SIZE (cand->mode));
1004 cand->mode = mode;
1014 if (merge_def_and_ext (cand, def_insn, state))
1029 if (transform_ifelse (cand, def_insn))
1055 modified->kind = (cand->code == ZERO_EXTEND ? EXT_MODIFIED_ZEXT
1114 ext_cand *cand;
1151 && (cand = &(*insn_list)[idx - 1])
1152 && cand->code != code)