static void max_operand_1 (rtx x) { RTX_CODE code; int i; int len; const char *fmt; if (x == 0) return; code = GET_CODE (x); if (code == MATCH_OPERAND || code == MATCH_OPERATOR || code == MATCH_PARALLEL) max_opno = MAX (max_opno, XINT (x, 0)); fmt = GET_RTX_FORMAT (code); len = GET_RTX_LENGTH (code); for (i = 0; i < len; i++) { if (fmt[i] == 'e' || fmt[i] == 'u') max_operand_1 (XEXP (x, i)); else if (fmt[i] == 'E') { int j; for (j = 0; j < XVECLEN (x, i); j++) max_operand_1 (XVECEXP (x, i, j)); } } }
static int num_operands (rtx insn) { int len = XVECLEN (insn, 1); int i; max_opno = -1; for (i = 0; i < len; i++) max_operand_1 (XVECEXP (insn, 1, i)); return max_opno + 1; }
static int max_operand_vec (rtx insn, int arg) { int len = XVECLEN (insn, arg); int i; max_opno = -1; max_dup_opno = -1; max_scratch_opno = -1; for (i = 0; i < len; i++) max_operand_1 (XVECEXP (insn, arg, i)); return max_opno + 1; }