/* Generated automatically by the program `genpeep'
from the machine description file `md'.  */

#include "config.h"
#include "system.h"
#include "insn-config.h"
#include "rtl.h"
#include "regs.h"
#include "output.h"
#include "real.h"
#include "recog.h"
#include "except.h"

extern rtx peep_operand[];

#define operands peep_operand

rtx
peephole (ins1)
     rtx ins1;
{
  rtx insn ATTRIBUTE_UNUSED, x ATTRIBUTE_UNUSED, pat ATTRIBUTE_UNUSED;

  if (NEXT_INSN (ins1)
      && GET_CODE (NEXT_INSN (ins1)) == BARRIER)
    return 0;

  insn = ins1;
  pat = PATTERN (insn);
  x = pat;
  if (GET_CODE (x) != SET) goto L425;
  x = XEXP (pat, 0);
  if (GET_CODE (x) != REG) goto L425;
  if (GET_MODE (x) != SImode) goto L425;
  if (XINT (x, 0) != 15) goto L425;
  x = XEXP (pat, 1);
  if (GET_CODE (x) != PLUS) goto L425;
  if (GET_MODE (x) != SImode) goto L425;
  x = XEXP (XEXP (pat, 1), 0);
  if (GET_CODE (x) != REG) goto L425;
  if (GET_MODE (x) != SImode) goto L425;
  if (XINT (x, 0) != 15) goto L425;
  x = XEXP (XEXP (pat, 1), 1);
  if (GET_CODE (x) != CONST_INT) goto L425;
  if (XWINT (x, 0) != 4) goto L425;
  do { insn = NEXT_INSN (insn);
       if (insn == 0) goto L425; }
  while (GET_CODE (insn) == NOTE
	 || (GET_CODE (insn) == INSN
	     && (GET_CODE (PATTERN (insn)) == USE
		 || GET_CODE (PATTERN (insn)) == CLOBBER)));
  if (GET_CODE (insn) == CODE_LABEL
      || GET_CODE (insn) == BARRIER)
    goto L425;
  pat = PATTERN (insn);
  x = pat;
  if (GET_CODE (x) != SET) goto L425;
  x = XEXP (pat, 0);
  operands[0] = x;
  if (! register_operand (x, DFmode)) goto L425;
  x = XEXP (pat, 1);
  operands[1] = x;
  if (! register_operand (x, DFmode)) goto L425;
  if (! (FP_REG_P (operands[0]) && ! FP_REG_P (operands[1]))) goto L425;
  PATTERN (ins1) = gen_rtx_PARALLEL (VOIDmode, gen_rtvec_v (2, operands));
  INSN_CODE (ins1) = 425;
  delete_for_peephole (NEXT_INSN (ins1), insn);
  return NEXT_INSN (insn);
 L425:

  insn = ins1;
  pat = PATTERN (insn);
  x = pat;
  if (GET_CODE (x) != SET) goto L426;
  x = XEXP (pat, 0);
  if (GET_CODE (x) != REG) goto L426;
  if (GET_MODE (x) != SImode) goto L426;
  if (XINT (x, 0) != 15) goto L426;
  x = XEXP (pat, 1);
  if (GET_CODE (x) != PLUS) goto L426;
  if (GET_MODE (x) != SImode) goto L426;
  x = XEXP (XEXP (pat, 1), 0);
  if (GET_CODE (x) != REG) goto L426;
  if (GET_MODE (x) != SImode) goto L426;
  if (XINT (x, 0) != 15) goto L426;
  x = XEXP (XEXP (pat, 1), 1);
  operands[0] = x;
  if (! const_int_operand (x, SImode)) goto L426;
  do { insn = NEXT_INSN (insn);
       if (insn == 0) goto L426; }
  while (GET_CODE (insn) == NOTE
	 || (GET_CODE (insn) == INSN
	     && (GET_CODE (PATTERN (insn)) == USE
		 || GET_CODE (PATTERN (insn)) == CLOBBER)));
  if (GET_CODE (insn) == CODE_LABEL
      || GET_CODE (insn) == BARRIER)
    goto L426;
  pat = PATTERN (insn);
  x = pat;
  if (GET_CODE (x) != SET) goto L426;
  x = XEXP (pat, 0);
  operands[1] = x;
  if (! push_operand (x, SFmode)) goto L426;
  x = XEXP (pat, 1);
  operands[2] = x;
  if (! general_operand (x, SFmode)) goto L426;
  if (! (INTVAL (operands[0]) >= 4
   && ! reg_mentioned_p (stack_pointer_rtx, operands[2]))) goto L426;
  PATTERN (ins1) = gen_rtx_PARALLEL (VOIDmode, gen_rtvec_v (3, operands));
  INSN_CODE (ins1) = 426;
  delete_for_peephole (NEXT_INSN (ins1), insn);
  return NEXT_INSN (insn);
 L426:

  insn = ins1;
  pat = PATTERN (insn);
  x = pat;
  if (GET_CODE (x) != SET) goto L427;
  x = XEXP (pat, 0);
  if (GET_CODE (x) != REG) goto L427;
  if (GET_MODE (x) != SImode) goto L427;
  if (XINT (x, 0) != 15) goto L427;
  x = XEXP (pat, 1);
  if (GET_CODE (x) != PLUS) goto L427;
  if (GET_MODE (x) != SImode) goto L427;
  x = XEXP (XEXP (pat, 1), 0);
  if (GET_CODE (x) != REG) goto L427;
  if (GET_MODE (x) != SImode) goto L427;
  if (XINT (x, 0) != 15) goto L427;
  x = XEXP (XEXP (pat, 1), 1);
  operands[0] = x;
  if (! const_int_operand (x, SImode)) goto L427;
  do { insn = NEXT_INSN (insn);
       if (insn == 0) goto L427; }
  while (GET_CODE (insn) == NOTE
	 || (GET_CODE (insn) == INSN
	     && (GET_CODE (PATTERN (insn)) == USE
		 || GET_CODE (PATTERN (insn)) == CLOBBER)));
  if (GET_CODE (insn) == CODE_LABEL
      || GET_CODE (insn) == BARRIER)
    goto L427;
  pat = PATTERN (insn);
  x = pat;
  if (GET_CODE (x) != SET) goto L427;
  x = XEXP (pat, 0);
  operands[1] = x;
  if (! push_operand (x, SImode)) goto L427;
  x = XEXP (pat, 1);
  operands[2] = x;
  if (! general_operand (x, SImode)) goto L427;
  if (! (INTVAL (operands[0]) >= 4
   && ! reg_mentioned_p (stack_pointer_rtx, operands[2]))) goto L427;
  PATTERN (ins1) = gen_rtx_PARALLEL (VOIDmode, gen_rtvec_v (3, operands));
  INSN_CODE (ins1) = 427;
  delete_for_peephole (NEXT_INSN (ins1), insn);
  return NEXT_INSN (insn);
 L427:

  insn = ins1;
  pat = PATTERN (insn);
  x = pat;
  if (GET_CODE (x) != SET) goto L428;
  x = XEXP (pat, 0);
  if (GET_CODE (x) != MEM) goto L428;
  if (GET_MODE (x) != QImode) goto L428;
  x = XEXP (XEXP (pat, 0), 0);
  if (GET_CODE (x) != PRE_DEC) goto L428;
  if (GET_MODE (x) != SImode) goto L428;
  x = XEXP (XEXP (XEXP (pat, 0), 0), 0);
  if (GET_CODE (x) != REG) goto L428;
  if (GET_MODE (x) != SImode) goto L428;
  if (XINT (x, 0) != 15) goto L428;
  x = XEXP (pat, 1);
  operands[1] = x;
  if (! general_operand (x, QImode)) goto L428;
  do { insn = NEXT_INSN (insn);
       if (insn == 0) goto L428; }
  while (GET_CODE (insn) == NOTE
	 || (GET_CODE (insn) == INSN
	     && (GET_CODE (PATTERN (insn)) == USE
		 || GET_CODE (PATTERN (insn)) == CLOBBER)));
  if (GET_CODE (insn) == CODE_LABEL
      || GET_CODE (insn) == BARRIER)
    goto L428;
  pat = PATTERN (insn);
  x = pat;
  if (GET_CODE (x) != SET) goto L428;
  x = XEXP (pat, 0);
  if (GET_CODE (x) != REG) goto L428;
  if (GET_MODE (x) != SImode) goto L428;
  if (XINT (x, 0) != 15) goto L428;
  x = XEXP (pat, 1);
  if (GET_CODE (x) != MINUS) goto L428;
  if (GET_MODE (x) != SImode) goto L428;
  x = XEXP (XEXP (pat, 1), 0);
  if (GET_CODE (x) != REG) goto L428;
  if (GET_MODE (x) != SImode) goto L428;
  if (XINT (x, 0) != 15) goto L428;
  x = XEXP (XEXP (pat, 1), 1);
  if (GET_CODE (x) != CONST_INT) goto L428;
  if (XWINT (x, 0) != 2) goto L428;
  if (! (! reg_mentioned_p (stack_pointer_rtx, operands[1]))) goto L428;
  PATTERN (ins1) = gen_rtx_PARALLEL (VOIDmode, gen_rtvec_v (2, operands));
  INSN_CODE (ins1) = 428;
  delete_for_peephole (NEXT_INSN (ins1), insn);
  return NEXT_INSN (insn);
 L428:

  insn = ins1;
  pat = PATTERN (insn);
  x = pat;
  if (GET_CODE (x) != SET) goto L429;
  x = XEXP (pat, 0);
  operands[0] = x;
  if (! register_operand (x, SImode)) goto L429;
  x = XEXP (pat, 1);
  if (GET_CODE (x) != CONST_INT) goto L429;
  if (XWINT (x, 0) != 0) goto L429;
  do { insn = NEXT_INSN (insn);
       if (insn == 0) goto L429; }
  while (GET_CODE (insn) == NOTE
	 || (GET_CODE (insn) == INSN
	     && (GET_CODE (PATTERN (insn)) == USE
		 || GET_CODE (PATTERN (insn)) == CLOBBER)));
  if (GET_CODE (insn) == CODE_LABEL
      || GET_CODE (insn) == BARRIER)
    goto L429;
  pat = PATTERN (insn);
  x = pat;
  if (GET_CODE (x) != SET) goto L429;
  x = XEXP (pat, 0);
  if (GET_CODE (x) != STRICT_LOW_PART) goto L429;
  x = XEXP (XEXP (pat, 0), 0);
  if (GET_CODE (x) != SUBREG) goto L429;
  if (GET_MODE (x) != HImode) goto L429;
  x = XEXP (XEXP (XEXP (pat, 0), 0), 0);
  if (!rtx_equal_p (operands[0], x)) goto L429;
  x = XEXP (XEXP (pat, 0), 0);
  if (XINT (x, 1) != 0) goto L429;
  x = XEXP (pat, 1);
  operands[1] = x;
  if (! general_operand (x, HImode)) goto L429;
  if (! (strict_low_part_peephole_ok (HImode, prev_nonnote_insn (insn), operands[0]))) goto L429;
  PATTERN (ins1) = gen_rtx_PARALLEL (VOIDmode, gen_rtvec_v (2, operands));
  INSN_CODE (ins1) = 429;
  delete_for_peephole (NEXT_INSN (ins1), insn);
  return NEXT_INSN (insn);
 L429:

  insn = ins1;
  pat = PATTERN (insn);
  x = pat;
  if (GET_CODE (x) != SET) goto L430;
  x = XEXP (pat, 0);
  if (GET_CODE (x) != PC) goto L430;
  x = XEXP (pat, 1);
  if (GET_CODE (x) != IF_THEN_ELSE) goto L430;
  x = XEXP (XEXP (pat, 1), 0);
  operands[3] = x;
  if (! valid_dbcc_comparison_p (x, VOIDmode)) goto L430;
  x = XEXP (XEXP (XEXP (pat, 1), 0), 0);
  if (GET_CODE (x) != CC0) goto L430;
  x = XEXP (XEXP (XEXP (pat, 1), 0), 1);
  if (GET_CODE (x) != CONST_INT) goto L430;
  if (XWINT (x, 0) != 0) goto L430;
  x = XEXP (XEXP (pat, 1), 1);
  if (GET_CODE (x) != LABEL_REF) goto L430;
  x = XEXP (XEXP (XEXP (pat, 1), 1), 0);
  operands[2] = x;
  x = XEXP (XEXP (pat, 1), 2);
  if (GET_CODE (x) != PC) goto L430;
  do { insn = NEXT_INSN (insn);
       if (insn == 0) goto L430; }
  while (GET_CODE (insn) == NOTE
	 || (GET_CODE (insn) == INSN
	     && (GET_CODE (PATTERN (insn)) == USE
		 || GET_CODE (PATTERN (insn)) == CLOBBER)));
  if (GET_CODE (insn) == CODE_LABEL
      || GET_CODE (insn) == BARRIER)
    goto L430;
  pat = PATTERN (insn);
  x = pat;
  if (GET_CODE (x) != PARALLEL) goto L430;
  if (XVECLEN (x, 0) != 2) goto L430;
  x = XVECEXP (pat, 0, 0);
  if (GET_CODE (x) != SET) goto L430;
  x = XEXP (XVECEXP (pat, 0, 0), 0);
  if (GET_CODE (x) != PC) goto L430;
  x = XEXP (XVECEXP (pat, 0, 0), 1);
  if (GET_CODE (x) != IF_THEN_ELSE) goto L430;
  x = XEXP (XEXP (XVECEXP (pat, 0, 0), 1), 0);
  if (GET_CODE (x) != GE) goto L430;
  x = XEXP (XEXP (XEXP (XVECEXP (pat, 0, 0), 1), 0), 0);
  if (GET_CODE (x) != PLUS) goto L430;
  if (GET_MODE (x) != HImode) goto L430;
  x = XEXP (XEXP (XEXP (XEXP (XVECEXP (pat, 0, 0), 1), 0), 0), 0);
  operands[0] = x;
  if (! register_operand (x, HImode)) goto L430;
  x = XEXP (XEXP (XEXP (XEXP (XVECEXP (pat, 0, 0), 1), 0), 0), 1);
  if (GET_CODE (x) != CONST_INT) goto L430;
  if (XWINT (x, 0) != -1) goto L430;
  x = XEXP (XEXP (XEXP (XVECEXP (pat, 0, 0), 1), 0), 1);
  if (GET_CODE (x) != CONST_INT) goto L430;
  if (XWINT (x, 0) != 0) goto L430;
  x = XEXP (XEXP (XVECEXP (pat, 0, 0), 1), 1);
  if (GET_CODE (x) != LABEL_REF) goto L430;
  x = XEXP (XEXP (XEXP (XVECEXP (pat, 0, 0), 1), 1), 0);
  operands[1] = x;
  x = XEXP (XEXP (XVECEXP (pat, 0, 0), 1), 2);
  if (GET_CODE (x) != PC) goto L430;
  x = XVECEXP (pat, 0, 1);
  if (GET_CODE (x) != SET) goto L430;
  x = XEXP (XVECEXP (pat, 0, 1), 0);
  if (!rtx_equal_p (operands[0], x)) goto L430;
  x = XEXP (XVECEXP (pat, 0, 1), 1);
  if (GET_CODE (x) != PLUS) goto L430;
  if (GET_MODE (x) != HImode) goto L430;
  x = XEXP (XEXP (XVECEXP (pat, 0, 1), 1), 0);
  if (!rtx_equal_p (operands[0], x)) goto L430;
  x = XEXP (XEXP (XVECEXP (pat, 0, 1), 1), 1);
  if (GET_CODE (x) != CONST_INT) goto L430;
  if (XWINT (x, 0) != -1) goto L430;
  if (! (!TARGET_5200 && DATA_REG_P (operands[0]) && ! flags_in_68881 ())) goto L430;
  PATTERN (ins1) = gen_rtx_PARALLEL (VOIDmode, gen_rtvec_v (4, operands));
  INSN_CODE (ins1) = 430;
  delete_for_peephole (NEXT_INSN (ins1), insn);
  return NEXT_INSN (insn);
 L430:

  insn = ins1;
  pat = PATTERN (insn);
  x = pat;
  if (GET_CODE (x) != SET) goto L431;
  x = XEXP (pat, 0);
  if (GET_CODE (x) != PC) goto L431;
  x = XEXP (pat, 1);
  if (GET_CODE (x) != IF_THEN_ELSE) goto L431;
  x = XEXP (XEXP (pat, 1), 0);
  operands[3] = x;
  if (! valid_dbcc_comparison_p (x, VOIDmode)) goto L431;
  x = XEXP (XEXP (XEXP (pat, 1), 0), 0);
  if (GET_CODE (x) != CC0) goto L431;
  x = XEXP (XEXP (XEXP (pat, 1), 0), 1);
  if (GET_CODE (x) != CONST_INT) goto L431;
  if (XWINT (x, 0) != 0) goto L431;
  x = XEXP (XEXP (pat, 1), 1);
  if (GET_CODE (x) != LABEL_REF) goto L431;
  x = XEXP (XEXP (XEXP (pat, 1), 1), 0);
  operands[2] = x;
  x = XEXP (XEXP (pat, 1), 2);
  if (GET_CODE (x) != PC) goto L431;
  do { insn = NEXT_INSN (insn);
       if (insn == 0) goto L431; }
  while (GET_CODE (insn) == NOTE
	 || (GET_CODE (insn) == INSN
	     && (GET_CODE (PATTERN (insn)) == USE
		 || GET_CODE (PATTERN (insn)) == CLOBBER)));
  if (GET_CODE (insn) == CODE_LABEL
      || GET_CODE (insn) == BARRIER)
    goto L431;
  pat = PATTERN (insn);
  x = pat;
  if (GET_CODE (x) != PARALLEL) goto L431;
  if (XVECLEN (x, 0) != 2) goto L431;
  x = XVECEXP (pat, 0, 0);
  if (GET_CODE (x) != SET) goto L431;
  x = XEXP (XVECEXP (pat, 0, 0), 0);
  if (GET_CODE (x) != PC) goto L431;
  x = XEXP (XVECEXP (pat, 0, 0), 1);
  if (GET_CODE (x) != IF_THEN_ELSE) goto L431;
  x = XEXP (XEXP (XVECEXP (pat, 0, 0), 1), 0);
  if (GET_CODE (x) != GE) goto L431;
  x = XEXP (XEXP (XEXP (XVECEXP (pat, 0, 0), 1), 0), 0);
  if (GET_CODE (x) != PLUS) goto L431;
  if (GET_MODE (x) != SImode) goto L431;
  x = XEXP (XEXP (XEXP (XEXP (XVECEXP (pat, 0, 0), 1), 0), 0), 0);
  operands[0] = x;
  if (! register_operand (x, SImode)) goto L431;
  x = XEXP (XEXP (XEXP (XEXP (XVECEXP (pat, 0, 0), 1), 0), 0), 1);
  if (GET_CODE (x) != CONST_INT) goto L431;
  if (XWINT (x, 0) != -1) goto L431;
  x = XEXP (XEXP (XEXP (XVECEXP (pat, 0, 0), 1), 0), 1);
  if (GET_CODE (x) != CONST_INT) goto L431;
  if (XWINT (x, 0) != 0) goto L431;
  x = XEXP (XEXP (XVECEXP (pat, 0, 0), 1), 1);
  if (GET_CODE (x) != LABEL_REF) goto L431;
  x = XEXP (XEXP (XEXP (XVECEXP (pat, 0, 0), 1), 1), 0);
  operands[1] = x;
  x = XEXP (XEXP (XVECEXP (pat, 0, 0), 1), 2);
  if (GET_CODE (x) != PC) goto L431;
  x = XVECEXP (pat, 0, 1);
  if (GET_CODE (x) != SET) goto L431;
  x = XEXP (XVECEXP (pat, 0, 1), 0);
  if (!rtx_equal_p (operands[0], x)) goto L431;
  x = XEXP (XVECEXP (pat, 0, 1), 1);
  if (GET_CODE (x) != PLUS) goto L431;
  if (GET_MODE (x) != SImode) goto L431;
  x = XEXP (XEXP (XVECEXP (pat, 0, 1), 1), 0);
  if (!rtx_equal_p (operands[0], x)) goto L431;
  x = XEXP (XEXP (XVECEXP (pat, 0, 1), 1), 1);
  if (GET_CODE (x) != CONST_INT) goto L431;
  if (XWINT (x, 0) != -1) goto L431;
  if (! (!TARGET_5200 && DATA_REG_P (operands[0]) && ! flags_in_68881 ())) goto L431;
  PATTERN (ins1) = gen_rtx_PARALLEL (VOIDmode, gen_rtvec_v (4, operands));
  INSN_CODE (ins1) = 431;
  delete_for_peephole (NEXT_INSN (ins1), insn);
  return NEXT_INSN (insn);
 L431:

  return 0;
}

rtx peep_operand[4];
