int x86_64_szext_nonmemory_operand (rtx op, enum machine_mode mode ATTRIBUTE_UNUSED) { return ( #line 329 "../.././gcc/config/i386/predicates.md" (TARGET_64BIT)) ? ((register_operand (op, mode)) || ((x86_64_immediate_operand (op, mode)) || (x86_64_zext_immediate_operand (op, mode)))) : (nonmemory_operand (op, mode)); }
int shiftdi_operand (rtx op, enum machine_mode mode ATTRIBUTE_UNUSED) { return ( #line 734 "../.././gcc/config/i386/predicates.md" (TARGET_64BIT)) ? (nonimmediate_operand (op, mode)) : (register_operand (op, mode)); }
int reg_or_pm1_operand (rtx op, enum machine_mode mode ATTRIBUTE_UNUSED) { return (register_operand (op, mode)) || ((GET_CODE (op) == CONST_INT) && ( #line 730 "../.././gcc/config/i386/predicates.md" (op == const1_rtx || op == constm1_rtx))); }
int tp_or_register_operand (rtx op, enum machine_mode mode ATTRIBUTE_UNUSED) { return (register_operand (op, mode)) || (((GET_CODE (op) == UNSPEC) && ( #line 496 "../.././gcc/config/i386/predicates.md" (XINT (op, 1) == UNSPEC_TP))) && ( (mode == VOIDmode || GET_MODE (op) == mode))); }
int reg_not_xmm0_operand (rtx op, enum machine_mode mode ATTRIBUTE_UNUSED) { return (register_operand (op, mode)) && ( #line 82 "../.././gcc/config/i386/predicates.md" (GET_CODE (op) != REG || REGNO (op) != FIRST_SSE_REG)); }
int x86_64_movabs_operand (rtx op, enum machine_mode mode ATTRIBUTE_UNUSED) { return ( #line 359 "../.././gcc/config/i386/predicates.md" (!TARGET_64BIT || !flag_pic)) ? (nonmemory_operand (op, mode)) : ((register_operand (op, mode)) || ((const_double_operand (op, mode)) && ( #line 363 "../.././gcc/config/i386/predicates.md" (GET_MODE_SIZE (mode) <= 8)))); }
static void gen_int_relational (enum rtx_code code, rtx result, rtx cmp0, rtx cmp1, rtx destination) { machine_mode mode; int branch_p; mode = GET_MODE (cmp0); if (mode == VOIDmode) mode = GET_MODE (cmp1); /* Is this a branch or compare. */ branch_p = (destination != 0); /* Instruction set doesn't support LE or LT, so swap operands and use GE, GT. */ switch (code) { case LE: case LT: case LEU: case LTU: { rtx temp; code = swap_condition (code); temp = cmp0; cmp0 = cmp1; cmp1 = temp; break; } default: break; } if (branch_p) { rtx insn, cond, label; /* Operands must be in registers. */ if (!register_operand (cmp0, mode)) cmp0 = force_reg (mode, cmp0); if (!register_operand (cmp1, mode)) cmp1 = force_reg (mode, cmp1); /* Generate conditional branch instruction. */ cond = gen_rtx_fmt_ee (code, mode, cmp0, cmp1); label = gen_rtx_LABEL_REF (VOIDmode, destination); insn = gen_rtx_SET (pc_rtx, gen_rtx_IF_THEN_ELSE (VOIDmode, cond, label, pc_rtx)); emit_jump_insn (insn); } else { /* We can't have const_ints in cmp0, other than 0. */ if ((GET_CODE (cmp0) == CONST_INT) && (INTVAL (cmp0) != 0)) cmp0 = force_reg (mode, cmp0); /* If the comparison is against an int not in legal range move it into a register. */ if (GET_CODE (cmp1) == CONST_INT) { switch (code) { case EQ: case NE: case LE: case LT: case GE: case GT: if (!satisfies_constraint_K (cmp1)) cmp1 = force_reg (mode, cmp1); break; case LEU: case LTU: case GEU: case GTU: if (!satisfies_constraint_L (cmp1)) cmp1 = force_reg (mode, cmp1); break; default: gcc_unreachable (); } } /* Generate compare instruction. */ emit_move_insn (result, gen_rtx_fmt_ee (code, mode, cmp0, cmp1)); } }
void gen_int_relational (enum rtx_code code, /* relational test (EQ, etc) */ rtx result, /* result to store comp. or 0 if branch */ rtx cmp0, /* first operand to compare */ rtx cmp1, /* second operand to compare */ rtx destination) /* destination of the branch, or 0 if compare */ { enum machine_mode mode; int branch_p; mode = GET_MODE (cmp0); if (mode == VOIDmode) mode = GET_MODE (cmp1); /* Is this a branch or compare */ branch_p = (destination != 0); /* Instruction set doesn't support LE or LT, so swap operands and use GE, GT */ switch (code) { case LE: case LT: case LEU: case LTU: code = swap_condition (code); rtx temp = cmp0; cmp0 = cmp1; cmp1 = temp; break; default: break; } if (branch_p) { rtx insn; /* Operands must be in registers */ if (!register_operand (cmp0, mode)) cmp0 = force_reg (mode, cmp0); if (!register_operand (cmp1, mode)) cmp1 = force_reg (mode, cmp1); /* Generate conditional branch instruction */ rtx cond = gen_rtx_fmt_ee (code, mode, cmp0, cmp1); rtx label = gen_rtx_LABEL_REF (VOIDmode, destination); insn = gen_rtx_SET (VOIDmode, pc_rtx, gen_rtx_IF_THEN_ELSE (VOIDmode, cond, label, pc_rtx)); emit_jump_insn (insn); } else { /* We can't have const_ints in cmp0, other than 0 */ if ((GET_CODE (cmp0) == CONST_INT) && (INTVAL (cmp0) != 0)) cmp0 = force_reg (mode, cmp0); /* If the comparison is against an int not in legal range move it into a register */ if (GET_CODE (cmp1) == CONST_INT) { HOST_WIDE_INT value = INTVAL (cmp1); switch (code) { case EQ: case NE: case LE: case LT: case GE: case GT: if (!MEDIUM_INT(value)) cmp1 = force_reg (mode, cmp1); break; case LEU: case LTU: case GEU: case GTU: if (!MEDIUM_UINT(value)) cmp1 = force_reg (mode, cmp1); break; default: abort (); } } /* Generate compare instruction */ emit_move_insn (result, gen_rtx_fmt_ee (code, mode, cmp0, cmp1)); } }
int ext_register_operand (rtx op, enum machine_mode mode ATTRIBUTE_UNUSED) { return (register_operand (op, mode)) && ( (ext_register_operand_1 (op, mode))); }
int call_register_no_elim_operand (rtx op, enum machine_mode mode ATTRIBUTE_UNUSED) { return (register_operand (op, mode)) && ( (call_register_no_elim_operand_1 (op, mode))); }
int reg_or_0_operand (rtx op, enum machine_mode mode ATTRIBUTE_UNUSED) { return (register_operand (op, mode)) || (const0_operand (op, mode)); }