📄 d30v.c
字号:
} if (GET_CODE (op) != REG) return FALSE; if (ACCUM_P (REGNO (op))) return TRUE; return GPR_OR_PSEUDO_P (REGNO (op));}/* Return true if operand is a CR register. */intcr_operand (op, mode) rtx op; enum machine_mode mode;{ if (GET_MODE (op) != mode && mode != VOIDmode) return FALSE; if (GET_CODE (op) == SUBREG) { if (GET_CODE (SUBREG_REG (op)) != REG) return register_operand (op, mode); op = SUBREG_REG (op); } if (GET_CODE (op) != REG) return FALSE; return CR_OR_PSEUDO_P (REGNO (op));}/* Return true if operand is the repeat count register. */intrepeat_operand (op, mode) rtx op; enum machine_mode mode;{ if (GET_MODE (op) != mode && mode != VOIDmode) return FALSE; if (GET_CODE (op) == SUBREG) { if (GET_CODE (SUBREG_REG (op)) != REG) return register_operand (op, mode); op = SUBREG_REG (op); } if (GET_CODE (op) != REG) return FALSE; return (REGNO (op) == CR_RPT_C || REGNO (op) >= FIRST_PSEUDO_REGISTER);}/* Return true if operand is a FLAG register. */intflag_operand (op, mode) rtx op; enum machine_mode mode;{ if (GET_MODE (op) != mode && mode != VOIDmode) return FALSE; if (GET_CODE (op) == SUBREG) { if (GET_CODE (SUBREG_REG (op)) != REG) return register_operand (op, mode); op = SUBREG_REG (op); } if (GET_CODE (op) != REG) return FALSE; return FLAG_OR_PSEUDO_P (REGNO (op));}/* Return true if operand is either F0 or F1. */intbr_flag_operand (op, mode) rtx op; enum machine_mode mode;{ if (GET_MODE (op) != mode && mode != VOIDmode) return FALSE; if (GET_CODE (op) == SUBREG) { if (GET_CODE (SUBREG_REG (op)) != REG) return register_operand (op, mode); op = SUBREG_REG (op); } if (GET_CODE (op) != REG) return FALSE; return BR_FLAG_OR_PSEUDO_P (REGNO (op));}/* Return true if operand is either F0/F1 or the constants 0/1. */intbr_flag_or_constant_operand (op, mode) rtx op; enum machine_mode mode;{ if (GET_MODE (op) != mode && mode != VOIDmode) return FALSE; if (GET_CODE (op) == SUBREG) { if (GET_CODE (SUBREG_REG (op)) != REG) return register_operand (op, mode); op = SUBREG_REG (op); } if (GET_CODE (op) == CONST_INT) return (INTVAL (op) == 0 || INTVAL (op) == 1); if (GET_CODE (op) != REG) return FALSE; return BR_FLAG_OR_PSEUDO_P (REGNO (op));}/* Return true if operand is either F0 or F1, or a GPR register. */intgpr_or_br_flag_operand (op, mode) rtx op; enum machine_mode mode;{ if (GET_MODE (op) != mode && mode != VOIDmode) return FALSE; if (GET_CODE (op) == SUBREG) { if (GET_CODE (SUBREG_REG (op)) != REG) return register_operand (op, mode); op = SUBREG_REG (op); } if (GET_CODE (op) != REG) return FALSE; return GPR_OR_PSEUDO_P (REGNO (op)) || BR_FLAG_P (REGNO (op));}/* Return true if operand is the F0 register. */intf0_operand (op, mode) rtx op; enum machine_mode mode;{ if (GET_MODE (op) != mode && mode != VOIDmode) return FALSE; if (GET_CODE (op) == SUBREG) { if (GET_CODE (SUBREG_REG (op)) != REG) return register_operand (op, mode); op = SUBREG_REG (op); } if (GET_CODE (op) != REG) return FALSE; return (REGNO (op) == FLAG_F0 || REGNO (op) >= FIRST_PSEUDO_REGISTER);}/* Return true if operand is the F1 register. */intf1_operand (op, mode) rtx op; enum machine_mode mode;{ if (GET_MODE (op) != mode && mode != VOIDmode) return FALSE; if (GET_CODE (op) == SUBREG) { if (GET_CODE (SUBREG_REG (op)) != REG) return register_operand (op, mode); op = SUBREG_REG (op); } if (GET_CODE (op) != REG) return FALSE; return (REGNO (op) == FLAG_F1 || REGNO (op) >= FIRST_PSEUDO_REGISTER);}/* Return true if operand is the F1 register. */intcarry_operand (op, mode) rtx op; enum machine_mode mode;{ if (GET_MODE (op) != mode && mode != VOIDmode) return FALSE; if (GET_CODE (op) == SUBREG) { if (GET_CODE (SUBREG_REG (op)) != REG) return register_operand (op, mode); op = SUBREG_REG (op); } if (GET_CODE (op) != REG) return FALSE; return (REGNO (op) == FLAG_CARRY || REGNO (op) >= FIRST_PSEUDO_REGISTER);}/* Return true if operand is a register of any flavor or a 0 of the appropriate type. */intreg_or_0_operand (op, mode) rtx op; enum machine_mode mode;{ switch (GET_CODE (op)) { default: break; case REG: case SUBREG: if (GET_MODE (op) != mode && mode != VOIDmode) return FALSE; return register_operand (op, mode); case CONST_INT: return INTVAL (op) == 0; case CONST_DOUBLE: return CONST_DOUBLE_HIGH (op) == 0 && CONST_DOUBLE_LOW (op) == 0; } return FALSE;}/* Return true if operand is a GPR register or a signed 6 bit immediate. */intgpr_or_signed6_operand (op, mode) rtx op; enum machine_mode mode;{ if (GET_CODE (op) == SUBREG) { if (GET_CODE (SUBREG_REG (op)) != REG) return register_operand (op, mode); op = SUBREG_REG (op); } if (GET_CODE (op) == CONST_INT) return IN_RANGE_P (INTVAL (op), -32, 31); if (GET_CODE (op) != REG) return FALSE; if (GET_MODE (op) != mode && mode != VOIDmode) return FALSE; return GPR_OR_PSEUDO_P (REGNO (op));}/* Return true if operand is a GPR register or an unsigned 5 bit immediate. */intgpr_or_unsigned5_operand (op, mode) rtx op; enum machine_mode mode;{ if (GET_CODE (op) == SUBREG) { if (GET_CODE (SUBREG_REG (op)) != REG) return register_operand (op, mode); op = SUBREG_REG (op); } if (GET_CODE (op) == CONST_INT) return IN_RANGE_P (INTVAL (op), 0, 31); if (GET_CODE (op) != REG) return FALSE; if (GET_MODE (op) != mode && mode != VOIDmode) return FALSE; return GPR_OR_PSEUDO_P (REGNO (op));}/* Return true if operand is a GPR register or an unsigned 6 bit immediate. */intgpr_or_unsigned6_operand (op, mode) rtx op; enum machine_mode mode;{ if (GET_CODE (op) == SUBREG) { if (GET_CODE (SUBREG_REG (op)) != REG) return register_operand (op, mode); op = SUBREG_REG (op); } if (GET_CODE (op) == CONST_INT) return IN_RANGE_P (INTVAL (op), 0, 63); if (GET_CODE (op) != REG) return FALSE; if (GET_MODE (op) != mode && mode != VOIDmode) return FALSE; return GPR_OR_PSEUDO_P (REGNO (op));}/* Return true if operand is a GPR register or a constant of some form. */intgpr_or_constant_operand (op, mode) rtx op; enum machine_mode mode;{ switch (GET_CODE (op)) { default: break; case CONST_INT: case SYMBOL_REF: case LABEL_REF: case CONST: return TRUE; case SUBREG: if (GET_CODE (SUBREG_REG (op)) != REG) return register_operand (op, mode); op = SUBREG_REG (op); /* fall through */ case REG: if (GET_MODE (op) != mode && mode != VOIDmode) return FALSE; return GPR_OR_PSEUDO_P (REGNO (op)); } return FALSE;}/* Return true if operand is a GPR register or a constant of some form, including a CONST_DOUBLE, which gpr_or_constant_operand doesn't recognize. */intgpr_or_dbl_const_operand (op, mode) rtx op; enum machine_mode mode;{ switch (GET_CODE (op)) { default: break; case CONST_INT: case CONST_DOUBLE: case SYMBOL_REF: case LABEL_REF: case CONST: return TRUE; case SUBREG: if (GET_CODE (SUBREG_REG (op)) != REG) return register_operand (op, mode); op = SUBREG_REG (op); /* fall through */ case REG: if (GET_MODE (op) != mode && mode != VOIDmode) return FALSE; return GPR_OR_PSEUDO_P (REGNO (op)); } return FALSE;}/* Return true if operand is a gpr register or a valid memory operation. */intgpr_or_memory_operand (op, mode) rtx op; enum machine_mode mode;{ switch (GET_CODE (op)) { default: break; case SUBREG: if (GET_CODE (SUBREG_REG (op)) != REG) return register_operand (op, mode); op = SUBREG_REG (op); /* fall through */ case REG: if (GET_MODE (op) != mode && mode != VOIDmode) return FALSE; return GPR_OR_PSEUDO_P (REGNO (op)); case MEM: return d30v_legitimate_address_p (mode, XEXP (op, 0), reload_completed); } return FALSE;}/* Return true if operand is something that can be an input for a move operation. */intmove_input_operand (op, mode) rtx op; enum machine_mode mode;{ rtx subreg; enum rtx_code code; switch (GET_CODE (op)) { default: break; case CONST_INT: case CONST_DOUBLE: case SYMBOL_REF: case LABEL_REF: case CONST: return TRUE; case SUBREG: if (GET_MODE (op) != mode && mode != VOIDmode) return FALSE; subreg = SUBREG_REG (op); code = GET_CODE (subreg); if (code == MEM) return d30v_legitimate_address_p ((int)mode, XEXP (subreg, 0), reload_completed); return (code == REG); case REG: if (GET_MODE (op) != mode && mode != VOIDmode) return FALSE; return TRUE; case MEM: if (GET_CODE (XEXP (op, 0)) == ADDRESSOF) return TRUE; return d30v_legitimate_address_p (mode, XEXP (op, 0), reload_completed); } return FALSE;}/* Return true if operand is something that can be an output for a move operation. */intmove_output_operand (op, mode) rtx op; enum machine_mode mode;{ rtx subreg; enum rtx_code code; switch (GET_CODE (op)) { default: break; case SUBREG:
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -