/* 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 L500;
  x = XEXP (pat, 0);
  operands[0] = x;
  if (! gpc_reg_operand (x, DFmode)) goto L500;
  x = XEXP (pat, 1);
  operands[1] = x;
  if (! memory_operand (x, DFmode)) goto L500;
  do { insn = NEXT_INSN (insn);
       if (insn == 0) goto L500; }
  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 L500;
  pat = PATTERN (insn);
  x = pat;
  if (GET_CODE (x) != SET) goto L500;
  x = XEXP (pat, 0);
  operands[2] = x;
  if (! gpc_reg_operand (x, DFmode)) goto L500;
  x = XEXP (pat, 1);
  operands[3] = x;
  if (! memory_operand (x, DFmode)) goto L500;
  if (! (TARGET_POWER2
   && TARGET_HARD_FLOAT
   && registers_ok_for_quad_peep (operands[0], operands[2])
   && ! MEM_VOLATILE_P (operands[1]) && ! MEM_VOLATILE_P (operands[3])
   && addrs_ok_for_quad_peep (XEXP (operands[1], 0), XEXP (operands[3], 0)))) goto L500;
  PATTERN (ins1) = gen_rtx_PARALLEL (VOIDmode, gen_rtvec_v (4, operands));
  INSN_CODE (ins1) = 500;
  delete_for_peephole (NEXT_INSN (ins1), insn);
  return NEXT_INSN (insn);
 L500:

  insn = ins1;
  pat = PATTERN (insn);
  x = pat;
  if (GET_CODE (x) != SET) goto L501;
  x = XEXP (pat, 0);
  operands[0] = x;
  if (! memory_operand (x, DFmode)) goto L501;
  x = XEXP (pat, 1);
  operands[1] = x;
  if (! gpc_reg_operand (x, DFmode)) goto L501;
  do { insn = NEXT_INSN (insn);
       if (insn == 0) goto L501; }
  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 L501;
  pat = PATTERN (insn);
  x = pat;
  if (GET_CODE (x) != SET) goto L501;
  x = XEXP (pat, 0);
  operands[2] = x;
  if (! memory_operand (x, DFmode)) goto L501;
  x = XEXP (pat, 1);
  operands[3] = x;
  if (! gpc_reg_operand (x, DFmode)) goto L501;
  if (! (TARGET_POWER2
   && TARGET_HARD_FLOAT
   && registers_ok_for_quad_peep (operands[1], operands[3])
   && ! MEM_VOLATILE_P (operands[0]) && ! MEM_VOLATILE_P (operands[2])
   && addrs_ok_for_quad_peep (XEXP (operands[0], 0), XEXP (operands[2], 0)))) goto L501;
  PATTERN (ins1) = gen_rtx_PARALLEL (VOIDmode, gen_rtvec_v (4, operands));
  INSN_CODE (ins1) = 501;
  delete_for_peephole (NEXT_INSN (ins1), insn);
  return NEXT_INSN (insn);
 L501:

  insn = ins1;
  pat = PATTERN (insn);
  x = pat;
  if (GET_CODE (x) != SET) goto L573;
  x = XEXP (pat, 0);
  operands[0] = x;
  if (! gpc_reg_operand (x, SImode)) goto L573;
  x = XEXP (pat, 1);
  operands[1] = x;
  if (! scc_comparison_operator (x, SImode)) goto L573;
  x = XEXP (XEXP (pat, 1), 0);
  operands[2] = x;
  if (! cc_reg_operand (x, VOIDmode)) goto L573;
  x = XEXP (XEXP (pat, 1), 1);
  if (GET_CODE (x) != CONST_INT) goto L573;
  if (XWINT (x, 0) != 0) goto L573;
  do { insn = NEXT_INSN (insn);
       if (insn == 0) goto L573; }
  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 L573;
  pat = PATTERN (insn);
  x = pat;
  if (GET_CODE (x) != SET) goto L573;
  x = XEXP (pat, 0);
  operands[3] = x;
  if (! gpc_reg_operand (x, SImode)) goto L573;
  x = XEXP (pat, 1);
  operands[4] = x;
  if (! scc_comparison_operator (x, SImode)) goto L573;
  x = XEXP (XEXP (pat, 1), 0);
  operands[5] = x;
  if (! cc_reg_operand (x, VOIDmode)) goto L573;
  x = XEXP (XEXP (pat, 1), 1);
  if (GET_CODE (x) != CONST_INT) goto L573;
  if (XWINT (x, 0) != 0) goto L573;
  if (! (REGNO (operands[2]) != REGNO (operands[5]))) goto L573;
  PATTERN (ins1) = gen_rtx_PARALLEL (VOIDmode, gen_rtvec_v (6, operands));
  INSN_CODE (ins1) = 573;
  delete_for_peephole (NEXT_INSN (ins1), insn);
  return NEXT_INSN (insn);
 L573:

  return 0;
}

rtx peep_operand[6];
