/* Generated automatically by the program `genrecog' from the target
   machine description file.  */

#include "config.h"
#include "system.h"
#include "rtl.h"
#include "tm_p.h"
#include "function.h"
#include "insn-config.h"
#include "recog.h"
#include "real.h"
#include "output.h"
#include "flags.h"
#include "hard-reg-set.h"
#include "resource.h"
#include "toplev.h"
#include "reload.h"



/* `recog' contains a decision tree that recognizes whether the rtx
   X0 is a valid instruction.

   recog returns -1 if the rtx is not valid.  If the rtx is valid, recog
   returns a nonnegative number which is the insn code number for the
   pattern that matched.  This is the same as the order in the machine
   description of the entry that matched.  This number can be used as an
   index into `insn_data' and other tables.

   The third argument to recog is an optional pointer to an int.  If
   present, recog will accept a pattern if it matches except for missing
   CLOBBER expressions at the end.  In that case, the value pointed to by
   the optional pointer will be set to the number of CLOBBERs that need
   to be added (it should be initialized to zero by the caller).  If it
   is set nonzero, the caller should allocate a PARALLEL of the
   appropriate size, copy the initial entries, and call add_clobbers
   (found in insn-emit.c) to fill in the CLOBBERs.


   The function split_insns returns 0 if the rtl could not
   be split or the split rtl in a SEQUENCE if it can be.

   The function peephole2_insns returns 0 if the rtl could not
   be matched. If there was a match, the new rtl is returned in a SEQUENCE,
   and LAST_INSN will point to the last recognized insn in the old sequence.
*/


extern rtx gen_split_110 PARAMS ((rtx *));
extern rtx gen_split_112 PARAMS ((rtx *));



static int recog_1 PARAMS ((rtx, rtx, int *));
static int
recog_1 (x0, insn, pnum_clobbers)
     rtx x0 ATTRIBUTE_UNUSED;
     rtx insn ATTRIBUTE_UNUSED;
     int *pnum_clobbers ATTRIBUTE_UNUSED;
{
  rtx * const operands ATTRIBUTE_UNUSED = &recog_data.operand[0];
  rtx x1 ATTRIBUTE_UNUSED;
  rtx x2 ATTRIBUTE_UNUSED;
  rtx x3 ATTRIBUTE_UNUSED;
  rtx x4 ATTRIBUTE_UNUSED;
  rtx x5 ATTRIBUTE_UNUSED;
  rtx x6 ATTRIBUTE_UNUSED;
  int tem ATTRIBUTE_UNUSED;

  x1 = XVECEXP (x0, 0, 0);
  x2 = XEXP (x1, 0);
  switch (GET_MODE (x2))
    {
    case HImode:
      goto L696;
    case SImode:
      goto L697;
    case QImode:
      goto L698;
    default:
      break;
    }
 L413: ATTRIBUTE_UNUSED_LABEL
  if (GET_CODE (x2) == PC)
    goto L414;
  goto ret0;

 L696: ATTRIBUTE_UNUSED_LABEL
  if (GET_CODE (x2) == REG
      && XINT (x2, 0) == 7)
    goto L3;
 L699: ATTRIBUTE_UNUSED_LABEL
  if (register_operand (x2, HImode))
    {
      operands[0] = x2;
      goto L288;
    }
  goto L413;

 L3: ATTRIBUTE_UNUSED_LABEL
  x2 = XEXP (x1, 1);
  if (GET_MODE (x2) == HImode
      && GET_CODE (x2) == PLUS)
    goto L4;
  x2 = XEXP (x1, 0);
  goto L699;

 L4: ATTRIBUTE_UNUSED_LABEL
  x3 = XEXP (x2, 0);
  if (GET_MODE (x3) == HImode
      && GET_CODE (x3) == REG
      && XINT (x3, 0) == 7)
    goto L5;
  x2 = XEXP (x1, 0);
  goto L699;

 L5: ATTRIBUTE_UNUSED_LABEL
  x3 = XEXP (x2, 1);
  if (GET_CODE (x3) == CONST_INT
      && XWINT (x3, 0) == -2)
    goto L6;
  x2 = XEXP (x1, 0);
  goto L699;

 L6: ATTRIBUTE_UNUSED_LABEL
  x1 = XVECEXP (x0, 0, 1);
  if (GET_CODE (x1) == SET)
    goto L7;
  x1 = XVECEXP (x0, 0, 0);
  x2 = XEXP (x1, 0);
  goto L699;

 L7: ATTRIBUTE_UNUSED_LABEL
  x2 = XEXP (x1, 0);
  if (GET_MODE (x2) == QImode
      && GET_CODE (x2) == MEM)
    goto L8;
  x1 = XVECEXP (x0, 0, 0);
  x2 = XEXP (x1, 0);
  goto L699;

 L8: ATTRIBUTE_UNUSED_LABEL
  x3 = XEXP (x2, 0);
  if (GET_MODE (x3) == HImode
      && GET_CODE (x3) == PLUS)
    goto L9;
  x1 = XVECEXP (x0, 0, 0);
  x2 = XEXP (x1, 0);
  goto L699;

 L9: ATTRIBUTE_UNUSED_LABEL
  x4 = XEXP (x3, 0);
  if (GET_MODE (x4) == HImode
      && GET_CODE (x4) == REG
      && XINT (x4, 0) == 7)
    goto L10;
  x1 = XVECEXP (x0, 0, 0);
  x2 = XEXP (x1, 0);
  goto L699;

 L10: ATTRIBUTE_UNUSED_LABEL
  x4 = XEXP (x3, 1);
  if (GET_CODE (x4) == CONST_INT
      && XWINT (x4, 0) == -1)
    goto L11;
  x1 = XVECEXP (x0, 0, 0);
  x2 = XEXP (x1, 0);
  goto L699;

 L11: ATTRIBUTE_UNUSED_LABEL
  x2 = XEXP (x1, 1);
  if (register_operand (x2, QImode))
    {
      operands[0] = x2;
      goto L12;
    }
  x1 = XVECEXP (x0, 0, 0);
  x2 = XEXP (x1, 0);
  goto L699;

 L12: ATTRIBUTE_UNUSED_LABEL
  if ((TARGET_H8300))
    {
      return 0;
    }
  x1 = XVECEXP (x0, 0, 0);
  x2 = XEXP (x1, 0);
  goto L699;

 L288: ATTRIBUTE_UNUSED_LABEL
  x2 = XEXP (x1, 1);
  if (GET_MODE (x2) == HImode
      && GET_CODE (x2) == TRUNCATE)
    goto L289;
 L511: ATTRIBUTE_UNUSED_LABEL
  if (nshift_operator (x2, HImode))
    {
      operands[3] = x2;
      goto L512;
    }
  x2 = XEXP (x1, 0);
  goto L413;

 L289: ATTRIBUTE_UNUSED_LABEL
  x3 = XEXP (x2, 0);
  if (GET_MODE (x3) == SImode)
    goto L701;
  goto L511;

 L701: ATTRIBUTE_UNUSED_LABEL
  switch (GET_CODE (x3))
    {
    case UDIV:
      goto L290;
    case DIV:
      goto L305;
    default:
     break;
   }
  goto L511;

 L290: ATTRIBUTE_UNUSED_LABEL
  x4 = XEXP (x3, 0);
  if (register_operand (x4, SImode))
    {
      operands[1] = x4;
      goto L291;
    }
  goto L511;

 L291: ATTRIBUTE_UNUSED_LABEL
  x4 = XEXP (x3, 1);
  if (GET_MODE (x4) == SImode
      && GET_CODE (x4) == ZERO_EXTEND)
    goto L292;
  goto L511;

 L292: ATTRIBUTE_UNUSED_LABEL
  x5 = XEXP (x4, 0);
  if (register_operand (x5, HImode))
    {
      operands[2] = x5;
      goto L293;
    }
  goto L511;

 L293: ATTRIBUTE_UNUSED_LABEL
  x1 = XVECEXP (x0, 0, 1);
  if (GET_CODE (x1) == SET)
    goto L294;
  x1 = XVECEXP (x0, 0, 0);
  x2 = XEXP (x1, 1);
  goto L511;

 L294: ATTRIBUTE_UNUSED_LABEL
  x2 = XEXP (x1, 0);
  if (register_operand (x2, HImode))
    {
      operands[3] = x2;
      goto L295;
    }
  x1 = XVECEXP (x0, 0, 0);
  x2 = XEXP (x1, 1);
  goto L511;

 L295: ATTRIBUTE_UNUSED_LABEL
  x2 = XEXP (x1, 1);
  if (GET_MODE (x2) == HImode
      && GET_CODE (x2) == TRUNCATE)
    goto L296;
  x1 = XVECEXP (x0, 0, 0);
  x2 = XEXP (x1, 1);
  goto L511;

 L296: ATTRIBUTE_UNUSED_LABEL
  x3 = XEXP (x2, 0);
  if (GET_MODE (x3) == SImode
      && GET_CODE (x3) == UMOD)
    goto L297;
  x1 = XVECEXP (x0, 0, 0);
  x2 = XEXP (x1, 1);
  goto L511;

 L297: ATTRIBUTE_UNUSED_LABEL
  x4 = XEXP (x3, 0);
  if (rtx_equal_p (x4, operands[1]))
    goto L298;
  x1 = XVECEXP (x0, 0, 0);
  x2 = XEXP (x1, 1);
  goto L511;

 L298: ATTRIBUTE_UNUSED_LABEL
  x4 = XEXP (x3, 1);
  if (GET_MODE (x4) == SImode
      && GET_CODE (x4) == ZERO_EXTEND)
    goto L299;
  x1 = XVECEXP (x0, 0, 0);
  x2 = XEXP (x1, 1);
  goto L511;

 L299: ATTRIBUTE_UNUSED_LABEL
  x5 = XEXP (x4, 0);
  if (rtx_equal_p (x5, operands[2])
      && (TARGET_H8300H || TARGET_H8300S))
    {
      return 42;
    }
  x1 = XVECEXP (x0, 0, 0);
  x2 = XEXP (x1, 1);
  goto L511;

 L305: ATTRIBUTE_UNUSED_LABEL
  x4 = XEXP (x3, 0);
  if (register_operand (x4, SImode))
    {
      operands[1] = x4;
      goto L306;
    }
  goto L511;

 L306: ATTRIBUTE_UNUSED_LABEL
  x4 = XEXP (x3, 1);
  if (GET_MODE (x4) == SImode
      && GET_CODE (x4) == SIGN_EXTEND)
    goto L307;
  goto L511;

 L307: ATTRIBUTE_UNUSED_LABEL
  x5 = XEXP (x4, 0);
  if (register_operand (x5, HImode))
    {
      operands[2] = x5;
      goto L308;
    }
  goto L511;

 L308: ATTRIBUTE_UNUSED_LABEL
  x1 = XVECEXP (x0, 0, 1);
  if (GET_CODE (x1) == SET)
    goto L309;
  x1 = XVECEXP (x0, 0, 0);
  x2 = XEXP (x1, 1);
  goto L511;

 L309: ATTRIBUTE_UNUSED_LABEL
  x2 = XEXP (x1, 0);
  if (register_operand (x2, HImode))
    {
      operands[3] = x2;
      goto L310;
    }
  x1 = XVECEXP (x0, 0, 0);
  x2 = XEXP (x1, 1);
  goto L511;

 L310: ATTRIBUTE_UNUSED_LABEL
  x2 = XEXP (x1, 1);
  if (GET_MODE (x2) == HImode
      && GET_CODE (x2) == TRUNCATE)
    goto L311;
  x1 = XVECEXP (x0, 0, 0);
  x2 = XEXP (x1, 1);
  goto L511;

 L311: ATTRIBUTE_UNUSED_LABEL
  x3 = XEXP (x2, 0);
  if (GET_MODE (x3) == SImode
      && GET_CODE (x3) == MOD)
    goto L312;
  x1 = XVECEXP (x0, 0, 0);
  x2 = XEXP (x1, 1);
  goto L511;

 L312: ATTRIBUTE_UNUSED_LABEL
  x4 = XEXP (x3, 0);
  if (rtx_equal_p (x4, operands[1]))
    goto L313;
  x1 = XVECEXP (x0, 0, 0);
  x2 = XEXP (x1, 1);
  goto L511;

 L313: ATTRIBUTE_UNUSED_LABEL
  x4 = XEXP (x3, 1);
  if (GET_MODE (x4) == SImode
      && GET_CODE (x4) == SIGN_EXTEND)
    goto L314;
  x1 = XVECEXP (x0, 0, 0);
  x2 = XEXP (x1, 1);
  goto L511;

 L314: ATTRIBUTE_UNUSED_LABEL
  x5 = XEXP (x4, 0);
  if (rtx_equal_p (x5, operands[2])
      && (TARGET_H8300H || TARGET_H8300S))
    {
      return 43;
    }
  x1 = XVECEXP (x0, 0, 0);
  x2 = XEXP (x1, 1);
  goto L511;

 L512: ATTRIBUTE_UNUSED_LABEL
  x3 = XEXP (x2, 0);
  if (register_operand (x3, HImode))
    {
      operands[1] = x3;
      goto L513;
    }
  x2 = XEXP (x1, 0);
  goto L413;

 L513: ATTRIBUTE_UNUSED_LABEL
  x3 = XEXP (x2, 1);
  if (nonmemory_operand (x3, QImode))
    {
      operands[2] = x3;
      goto L514;
    }
  x2 = XEXP (x1, 0);
  goto L413;

 L514: ATTRIBUTE_UNUSED_LABEL
  x1 = XVECEXP (x0, 0, 1);
  if (GET_CODE (x1) == CLOBBER)
    goto L515;
  x1 = XVECEXP (x0, 0, 0);
  x2 = XEXP (x1, 0);
  goto L413;

 L515: ATTRIBUTE_UNUSED_LABEL
  x2 = XEXP (x1, 0);
  if (scratch_operand (x2, QImode))
    {
      operands[4] = x2;
      return 79;
    }
  x1 = XVECEXP (x0, 0, 0);
  x2 = XEXP (x1, 0);
  goto L413;

 L697: ATTRIBUTE_UNUSED_LABEL
  if (GET_CODE (x2) == REG
      && XINT (x2, 0) == 7)
    goto L16;
 L700: ATTRIBUTE_UNUSED_LABEL
  if (register_operand (x2, SImode))
    {
      operands[0] = x2;
      goto L525;
    }
  goto L413;

 L16: ATTRIBUTE_UNUSED_LABEL
  x2 = XEXP (x1, 1);
  if (GET_MODE (x2) == SImode
      && GET_CODE (x2) == PLUS)
    goto L17;
  x2 = XEXP (x1, 0);
  goto L700;

 L17: ATTRIBUTE_UNUSED_LABEL
  x3 = XEXP (x2, 0);
  if (GET_MODE (x3) == SImode
      && GET_CODE (x3) == REG
      && XINT (x3, 0) == 7)
    goto L18;
  x2 = XEXP (x1, 0);
  goto L700;

 L18: ATTRIBUTE_UNUSED_LABEL
  x3 = XEXP (x2, 1);
  if (GET_CODE (x3) == CONST_INT
      && XWINT (x3, 0) == -4)
    goto L19;
  x2 = XEXP (x1, 0);
  goto L700;

 L19: ATTRIBUTE_UNUSED_LABEL
  x1 = XVECEXP (x0, 0, 1);
  if (GET_CODE (x1) == SET)
    goto L20;
  x1 = XVECEXP (x0, 0, 0);
  x2 = XEXP (x1, 0);
  goto L700;

 L20: ATTRIBUTE_UNUSED_LABEL
  x2 = XEXP (x1, 0);
  switch (GET_MODE (x2))
    {
    case QImode:
      goto L703;
    case HImode:
      goto L704;
    default:
      break;
    }
  x1 = XVECEXP (x0, 0, 0);
  x2 = XEXP (x1, 0);
  goto L700;

 L703: ATTRIBUTE_UNUSED_LABEL
  if (GET_CODE (x2) == MEM)
    goto L21;
  x1 = XVECEXP (x0, 0, 0);
  x2 = XEXP (x1, 0);
  goto L700;

 L21: ATTRIBUTE_UNUSED_LABEL
  x3 = XEXP (x2, 0);
  if (GET_MODE (x3) == SImode
      && GET_CODE (x3) == PLUS)
    goto L22;
  x1 = XVECEXP (x0, 0, 0);
  x2 = XEXP (x1, 0);
  goto L700;

 L22: ATTRIBUTE_UNUSED_LABEL
  x4 = XEXP (x3, 0);
  if (GET_MODE (x4) == SImode
      && GET_CODE (x4) == REG
      && XINT (x4, 0) == 7)
    goto L23;
  x1 = XVECEXP (x0, 0, 0);
  x2 = XEXP (x1, 0);
  goto L700;

 L23: ATTRIBUTE_UNUSED_LABEL
  x4 = XEXP (x3, 1);
  if (GET_CODE (x4) == CONST_INT
      && XWINT (x4, 0) == -3)
    goto L24;
  x1 = XVECEXP (x0, 0, 0);
  x2 = XEXP (x1, 0);
  goto L700;

 L24: ATTRIBUTE_UNUSED_LABEL
  x2 = XEXP (x1, 1);
  if (register_operand (x2, QImode))
    {
      operands[0] = x2;
      goto L25;
    }
  x1 = XVECEXP (x0, 0, 0);
  x2 = XEXP (x1, 0);
  goto L700;

 L25: ATTRIBUTE_UNUSED_LABEL
  if ((TARGET_H8300H || TARGET_H8300S))
    {
      return 1;
    }
  x1 = XVECEXP (x0, 0, 0);
  x2 = XEXP (x1, 0);
  goto L700;

 L704: ATTRIBUTE_UNUSED_LABEL
  if (GET_CODE (x2) == MEM)
    goto L46;
  x1 = XVECEXP (x0, 0, 0);
  x2 = XEXP (x1, 0);
  goto L700;

 L46: ATTRIBUTE_UNUSED_LABEL
  x3 = XEXP (x2, 0);
  if (GET_MODE (x3) == SImode
      && GET_CODE (x3) == PLUS)
    goto L47;
  x1 = XVECEXP (x0, 0, 0);
  x2 = XEXP (x1, 0);
  goto L700;

 L47: ATTRIBUTE_UNUSED_LABEL
  x4 = XEXP (x3, 0);
  if (GET_MODE (x4) == SImode
      && GET_CODE (x4) == REG
      && XINT (x4, 0) == 7)
    goto L48;
  x1 = XVECEXP (x0, 0, 0);
  x2 = XEXP (x1, 0);
  goto L700;

 L48: ATTRIBUTE_UNUSED_LABEL
  x4 = XEXP (x3, 1);
  if (GET_CODE (x4) == CONST_INT
      && XWINT (x4, 0) == -2)
    goto L49;
  x1 = XVECEXP (x0, 0, 0);
  x2 = XEXP (x1, 0);
  goto L700;

 L49: ATTRIBUTE_UNUSED_LABEL
  x2 = XEXP (x1, 1);
  if (register_operand (x2, HImode))
    {
      operands[0] = x2;
      goto L50;
    }
  x1 = XVECEXP (x0, 0, 0);
  x2 = XEXP (x1, 0);
  goto L700;

 L50: ATTRIBUTE_UNUSED_LABEL
  if ((TARGET_H8300H || TARGET_H8300S))
    {
      return 5;
    }
  x1 = XVECEXP (x0, 0, 0);
  x2 = XEXP (x1, 0);
  goto L700;

 L525: ATTRIBUTE_UNUSED_LABEL
  x2 = XEXP (x1, 1);
  if (nshift_operator (x2, SImode))
    {
      operands[3] = x2;
      goto L526;
    }
  x2 = XEXP (x1, 0);
  goto L413;

 L526: ATTRIBUTE_UNUSED_LABEL
  x3 = XEXP (x2, 0);
  if (register_operand (x3, SImode))
    {
      operands[1] = x3;
      goto L527;
    }
  x2 = XEXP (x1, 0);
  goto L413;

 L527: ATTRIBUTE_UNUSED_LABEL
  x3 = XEXP (x2, 1);
  if (nonmemory_operand (x3, QImode))
    {
      operands[2] = x3;
      goto L528;
    }
  x2 = XEXP (x1, 0);
  goto L413;

 L528: ATTRIBUTE_UNUSED_LABEL
  x1 = XVECEXP (x0, 0, 1);
  if (GET_CODE (x1) == CLOBBER)
    goto L529;
  x1 = XVECEXP (x0, 0, 0);
  x2 = XEXP (x1, 0);
  goto L413;

 L529: ATTRIBUTE_UNUSED_LABEL
  x2 = XEXP (x1, 0);
  if (scratch_operand (x2, QImode))
    {
      operands[4] = x2;
      return 80;
    }
  x1 = XVECEXP (x0, 0, 0);
  x2 = XEXP (x1, 0);
  goto L413;

 L698: ATTRIBUTE_UNUSED_LABEL
  if (register_operand (x2, QImode))
    {
      operands[0] = x2;
      goto L258;
    }
  goto L413;

 L258: ATTRIBUTE_UNUSED_LABEL
  x2 = XEXP (x1, 1);
  if (GET_MODE (x2) == QImode
      && GET_CODE (x2) == TRUNCATE)
    goto L259;
 L497: ATTRIBUTE_UNUSED_LABEL
  if (nshift_operator (x2, QImode))
    {
      operands[3] = x2;
      goto L498;
    }
  x2 = XEXP (x1, 0);
  goto L413;

 L259: ATTRIBUTE_UNUSED_LABEL
  x3 = XEXP (x2, 0);
  if (GET_MODE (x3) == HImode)
    goto L705;
  goto L497;

 L705: ATTRIBUTE_UNUSED_LABEL
  switch (GET_CODE (x3))
    {
    case UDIV:
      goto L260;
    case DIV:
      goto L275;
    default:
     break;
   }
  goto L497;

 L260: ATTRIBUTE_UNUSED_LABEL
  x4 = XEXP (x3, 0);
  if (register_operand (x4, HImode))
    {
      operands[1] = x4;
      goto L261;
    }
  goto L497;

 L261: ATTRIBUTE_UNUSED_LABEL
  x4 = XEXP (x3, 1);
  if (GET_MODE (x4) == HImode
      && GET_CODE (x4) == ZERO_EXTEND)
    goto L262;
  goto L497;

 L262: ATTRIBUTE_UNUSED_LABEL
  x5 = XEXP (x4, 0);
  if (register_operand (x5, QImode))
    {
      operands[2] = x5;
      goto L263;
    }
  goto L497;

 L263: ATTRIBUTE_UNUSED_LABEL
  x1 = XVECEXP (x0, 0, 1);
  if (GET_CODE (x1) == SET)
    goto L264;
  x1 = XVECEXP (x0, 0, 0);
  x2 = XEXP (x1, 1);
  goto L497;

 L264: ATTRIBUTE_UNUSED_LABEL
  x2 = XEXP (x1, 0);
  if (register_operand (x2, QImode))
    {
      operands[3] = x2;
      goto L265;
    }
  x1 = XVECEXP (x0, 0, 0);
  x2 = XEXP (x1, 1);
  goto L497;

 L265: ATTRIBUTE_UNUSED_LABEL
  x2 = XEXP (x1, 1);
  if (GET_MODE (x2) == QImode
      && GET_CODE (x2) == TRUNCATE)
    goto L266;
  x1 = XVECEXP (x0, 0, 0);
  x2 = XEXP (x1, 1);
  goto L497;

 L266: ATTRIBUTE_UNUSED_LABEL
  x3 = XEXP (x2, 0);
  if (GET_MODE (x3) == HImode
      && GET_CODE (x3) == UMOD)
    goto L267;
  x1 = XVECEXP (x0, 0, 0);
  x2 = XEXP (x1, 1);
  goto L497;

 L267: ATTRIBUTE_UNUSED_LABEL
  x4 = XEXP (x3, 0);
  if (rtx_equal_p (x4, operands[1]))
    goto L268;
  x1 = XVECEXP (x0, 0, 0);
  x2 = XEXP (x1, 1);
  goto L497;

 L268: ATTRIBUTE_UNUSED_LABEL
  x4 = XEXP (x3, 1);
  if (GET_MODE (x4) == HImode
      && GET_CODE (x4) == ZERO_EXTEND)
    goto L269;
  x1 = XVECEXP (x0, 0, 0);
  x2 = XEXP (x1, 1);
  goto L497;

 L269: ATTRIBUTE_UNUSED_LABEL
  x5 = XEXP (x4, 0);
  if (rtx_equal_p (x5, operands[2])
      && (TARGET_H8300H || TARGET_H8300S))
    {
      return 40;
    }
  x1 = XVECEXP (x0, 0, 0);
  x2 = XEXP (x1, 1);
  goto L497;

 L275: ATTRIBUTE_UNUSED_LABEL
  x4 = XEXP (x3, 0);
  if (register_operand (x4, HImode))
    {
      operands[1] = x4;
      goto L276;
    }
  goto L497;

 L276: ATTRIBUTE_UNUSED_LABEL
  x4 = XEXP (x3, 1);
  if (GET_MODE (x4) == HImode
      && GET_CODE (x4) == SIGN_EXTEND)
    goto L277;
  goto L497;

 L277: ATTRIBUTE_UNUSED_LABEL
  x5 = XEXP (x4, 0);
  if (register_operand (x5, QImode))
    {
      operands[2] = x5;
      goto L278;
    }
  goto L497;

 L278: ATTRIBUTE_UNUSED_LABEL
  x1 = XVECEXP (x0, 0, 1);
  if (GET_CODE (x1) == SET)
    goto L279;
  x1 = XVECEXP (x0, 0, 0);
  x2 = XEXP (x1, 1);
  goto L497;

 L279: ATTRIBUTE_UNUSED_LABEL
  x2 = XEXP (x1, 0);
  if (register_operand (x2, QImode))
    {
      operands[3] = x2;
      goto L280;
    }
  x1 = XVECEXP (x0, 0, 0);
  x2 = XEXP (x1, 1);
  goto L497;

 L280: ATTRIBUTE_UNUSED_LABEL
  x2 = XEXP (x1, 1);
  if (GET_MODE (x2) == QImode
      && GET_CODE (x2) == TRUNCATE)
    goto L281;
  x1 = XVECEXP (x0, 0, 0);
  x2 = XEXP (x1, 1);
  goto L497;

 L281: ATTRIBUTE_UNUSED_LABEL
  x3 = XEXP (x2, 0);
  if (GET_MODE (x3) == HImode
      && GET_CODE (x3) == MOD)
    goto L282;
  x1 = XVECEXP (x0, 0, 0);
  x2 = XEXP (x1, 1);
  goto L497;

 L282: ATTRIBUTE_UNUSED_LABEL
  x4 = XEXP (x3, 0);
  if (rtx_equal_p (x4, operands[1]))
    goto L283;
  x1 = XVECEXP (x0, 0, 0);
  x2 = XEXP (x1, 1);
  goto L497;

 L283: ATTRIBUTE_UNUSED_LABEL
  x4 = XEXP (x3, 1);
  if (GET_MODE (x4) == HImode
      && GET_CODE (x4) == SIGN_EXTEND)
    goto L284;
  x1 = XVECEXP (x0, 0, 0);
  x2 = XEXP (x1, 1);
  goto L497;

 L284: ATTRIBUTE_UNUSED_LABEL
  x5 = XEXP (x4, 0);
  if (rtx_equal_p (x5, operands[2])
      && (TARGET_H8300H || TARGET_H8300S))
    {
      return 41;
    }
  x1 = XVECEXP (x0, 0, 0);
  x2 = XEXP (x1, 1);
  goto L497;

 L498: ATTRIBUTE_UNUSED_LABEL
  x3 = XEXP (x2, 0);
  if (register_operand (x3, QImode))
    {
      operands[1] = x3;
      goto L499;
    }
  x2 = XEXP (x1, 0);
  goto L413;

 L499: ATTRIBUTE_UNUSED_LABEL
  x3 = XEXP (x2, 1);
  if (nonmemory_operand (x3, QImode))
    {
      operands[2] = x3;
      goto L500;
    }
  x2 = XEXP (x1, 0);
  goto L413;

 L500: ATTRIBUTE_UNUSED_LABEL
  x1 = XVECEXP (x0, 0, 1);
  if (GET_CODE (x1) == CLOBBER)
    goto L501;
  x1 = XVECEXP (x0, 0, 0);
  x2 = XEXP (x1, 0);
  goto L413;

 L501: ATTRIBUTE_UNUSED_LABEL
  x2 = XEXP (x1, 0);
  if (scratch_operand (x2, QImode))
    {
      operands[4] = x2;
      return 78;
    }
  x1 = XVECEXP (x0, 0, 0);
  x2 = XEXP (x1, 0);
  goto L413;

 L414: ATTRIBUTE_UNUSED_LABEL
  x2 = XEXP (x1, 1);
  switch (GET_MODE (x2))
    {
    case HImode:
      goto L707;
    case SImode:
      goto L708;
    default:
      break;
    }
  goto ret0;

 L707: ATTRIBUTE_UNUSED_LABEL
  if (register_operand (x2, HImode))
    {
      operands[0] = x2;
      goto L415;
    }
  goto ret0;

 L415: ATTRIBUTE_UNUSED_LABEL
  x1 = XVECEXP (x0, 0, 1);
  if (GET_CODE (x1) == USE)
    goto L416;
  goto ret0;

 L416: ATTRIBUTE_UNUSED_LABEL
  x2 = XEXP (x1, 0);
  if (GET_CODE (x2) == LABEL_REF)
    goto L417;
  goto ret0;

 L417: ATTRIBUTE_UNUSED_LABEL
  x3 = XEXP (x2, 0);
  operands[1] = x3;
  goto L418;

 L418: ATTRIBUTE_UNUSED_LABEL
  if ((TARGET_H8300))
    {
      return 61;
    }
  goto ret0;

 L708: ATTRIBUTE_UNUSED_LABEL
  if (register_operand (x2, SImode))
    {
      operands[0] = x2;
      goto L423;
    }
  goto ret0;

 L423: ATTRIBUTE_UNUSED_LABEL
  x1 = XVECEXP (x0, 0, 1);
  if (GET_CODE (x1) == USE)
    goto L424;
  goto ret0;

 L424: ATTRIBUTE_UNUSED_LABEL
  x2 = XEXP (x1, 0);
  if (GET_CODE (x2) == LABEL_REF)
    goto L425;
  goto ret0;

 L425: ATTRIBUTE_UNUSED_LABEL
  x3 = XEXP (x2, 0);
  operands[1] = x3;
  goto L426;

 L426: ATTRIBUTE_UNUSED_LABEL
  if ((TARGET_H8300H || TARGET_H8300S))
    {
      return 62;
    }
  goto ret0;
 ret0:
  return -1;
}

static int recog_2 PARAMS ((rtx, rtx, int *));
static int
recog_2 (x0, insn, pnum_clobbers)
     rtx x0 ATTRIBUTE_UNUSED;
     rtx insn ATTRIBUTE_UNUSED;
     int *pnum_clobbers ATTRIBUTE_UNUSED;
{
  rtx * const operands ATTRIBUTE_UNUSED = &recog_data.operand[0];
  rtx x1 ATTRIBUTE_UNUSED;
  rtx x2 ATTRIBUTE_UNUSED;
  rtx x3 ATTRIBUTE_UNUSED;
  rtx x4 ATTRIBUTE_UNUSED;
  rtx x5 ATTRIBUTE_UNUSED;
  rtx x6 ATTRIBUTE_UNUSED;
  int tem ATTRIBUTE_UNUSED;

  x1 = XEXP (x0, 0);
  if (general_operand_dst (x1, QImode))
    {
      operands[0] = x1;
      goto L28;
    }
 L141: ATTRIBUTE_UNUSED_LABEL
  if (register_operand (x1, QImode))
    {
      operands[0] = x1;
      goto L142;
    }
  if (GET_CODE (x1) == STRICT_LOW_PART)
    goto L36;
 L52: ATTRIBUTE_UNUSED_LABEL
  if (general_operand_dst (x1, HImode))
    {
      operands[0] = x1;
      goto L53;
    }
 L146: ATTRIBUTE_UNUSED_LABEL
  if (register_operand (x1, HImode))
    {
      operands[0] = x1;
      goto L147;
    }
  switch (GET_CODE (x1))
    {
    case STRICT_LOW_PART:
      goto L61;
    case CC0:
      goto L81;
    default:
     break;
   }
 L64: ATTRIBUTE_UNUSED_LABEL
  if (general_operand_dst (x1, SImode))
    {
      operands[0] = x1;
      goto L65;
    }
 L68: ATTRIBUTE_UNUSED_LABEL
  if (general_operand_dst (x1, SFmode))
    {
      operands[0] = x1;
      goto L69;
    }
 L72: ATTRIBUTE_UNUSED_LABEL
  if (general_operand_dst (x1, SImode))
    {
      operands[0] = x1;
      goto L73;
    }
 L158: ATTRIBUTE_UNUSED_LABEL
  if (register_operand (x1, SImode))
    {
      operands[0] = x1;
      goto L159;
    }
  if (GET_CODE (x1) == CC0)
    goto L95;
 L76: ATTRIBUTE_UNUSED_LABEL
  if (general_operand_dst (x1, SFmode))
    {
      operands[0] = x1;
      goto L77;
    }
 L390: ATTRIBUTE_UNUSED_LABEL
  if (GET_CODE (x1) == PC)
    goto L391;
 L316: ATTRIBUTE_UNUSED_LABEL
  if (bit_operand (x1, QImode))
    {
      operands[0] = x1;
      goto L317;
    }
 L439: ATTRIBUTE_UNUSED_LABEL
  operands[0] = x1;
  goto L440;
 L445: ATTRIBUTE_UNUSED_LABEL
  switch (GET_MODE (x1))
    {
    case HImode:
      goto L712;
    case SImode:
      goto L710;
    case QImode:
      goto L711;
    default:
      break;
    }
 L607: ATTRIBUTE_UNUSED_LABEL
  if (bit_operand (x1, HImode))
    {
      operands[0] = x1;
      goto L608;
    }
  goto ret0;

 L28: ATTRIBUTE_UNUSED_LABEL
  x1 = XEXP (x0, 1);
  if (general_operand_src (x1, QImode))
    {
      operands[1] = x1;
      goto L29;
    }
  x1 = XEXP (x0, 0);
  goto L141;

 L29: ATTRIBUTE_UNUSED_LABEL
  if ((TARGET_H8300
   && (register_operand (operands[0], QImode)
       || register_operand (operands[1], QImode))))
    {
      return 2;
    }
 L33: ATTRIBUTE_UNUSED_LABEL
  if (((TARGET_H8300H || TARGET_H8300S)
   && (register_operand (operands[0], QImode)
       || register_operand (operands[1], QImode))))
    {
      return 3;
    }
  x1 = XEXP (x0, 0);
  goto L141;

 L142: ATTRIBUTE_UNUSED_LABEL
  x1 = XEXP (x0, 1);
  if (GET_MODE (x1) == QImode)
    goto L713;
  x1 = XEXP (x0, 0);
  goto L316;

 L713: ATTRIBUTE_UNUSED_LABEL
  switch (GET_CODE (x1))
    {
    case PLUS:
      goto L143;
    case MINUS:
      goto L172;
    case NEG:
      goto L354;
    case NOT:
      goto L368;
    default:
     break;
   }
  x1 = XEXP (x0, 0);
  goto L316;

 L143: ATTRIBUTE_UNUSED_LABEL
  x2 = XEXP (x1, 0);
  if (register_operand (x2, QImode))
    {
      operands[1] = x2;
      goto L144;
    }
  x1 = XEXP (x0, 0);
  goto L316;

 L144: ATTRIBUTE_UNUSED_LABEL
  x2 = XEXP (x1, 1);
  if (nonmemory_operand (x2, QImode))
    {
      operands[2] = x2;
      return 24;
    }
  x1 = XEXP (x0, 0);
  goto L316;

 L172: ATTRIBUTE_UNUSED_LABEL
  x2 = XEXP (x1, 0);
  if (register_operand (x2, QImode))
    {
      operands[1] = x2;
      goto L173;
    }
  x1 = XEXP (x0, 0);
  goto L316;

 L173: ATTRIBUTE_UNUSED_LABEL
  x2 = XEXP (x1, 1);
  if (register_operand (x2, QImode))
    {
      operands[2] = x2;
      return 29;
    }
  x1 = XEXP (x0, 0);
  goto L316;

 L354: ATTRIBUTE_UNUSED_LABEL
  x2 = XEXP (x1, 0);
  if (register_operand (x2, QImode))
    {
      operands[1] = x2;
      return 50;
    }
  x1 = XEXP (x0, 0);
  goto L316;

 L368: ATTRIBUTE_UNUSED_LABEL
  x2 = XEXP (x1, 0);
  if (register_operand (x2, QImode))
    {
      operands[1] = x2;
      return 53;
    }
  x1 = XEXP (x0, 0);
  goto L316;

 L36: ATTRIBUTE_UNUSED_LABEL
  x2 = XEXP (x1, 0);
  if (general_operand_dst (x2, QImode))
    {
      operands[0] = x2;
      goto L37;
    }
  goto L52;

 L37: ATTRIBUTE_UNUSED_LABEL
  x1 = XEXP (x0, 1);
  if (general_operand_src (x1, QImode))
    {
      operands[1] = x1;
      return 4;
    }
  x1 = XEXP (x0, 0);
  goto L52;

 L53: ATTRIBUTE_UNUSED_LABEL
  x1 = XEXP (x0, 1);
  if (general_operand_src (x1, HImode))
    {
      operands[1] = x1;
      goto L54;
    }
  x1 = XEXP (x0, 0);
  goto L146;

 L54: ATTRIBUTE_UNUSED_LABEL
  if ((TARGET_H8300
   && (register_operand (operands[0], HImode)
       || register_operand (operands[1], HImode))
   && !(GET_CODE (operands[0]) == MEM
	&& GET_CODE (XEXP (operands[0], 0)) == PRE_DEC
	&& GET_CODE (XEXP (XEXP (operands[0], 0), 0)) == REG
	&& GET_CODE (operands[1]) == REG
	&& REGNO (XEXP (XEXP (operands[0], 0), 0)) == REGNO (operands[1]))))
    {
      return 6;
    }
 L58: ATTRIBUTE_UNUSED_LABEL
  if (((TARGET_H8300H || TARGET_H8300S)
   && (register_operand (operands[0], HImode)
       || register_operand (operands[1], HImode))))
    {
      return 7;
    }
  x1 = XEXP (x0, 0);
  goto L146;

 L147: ATTRIBUTE_UNUSED_LABEL
  x1 = XEXP (x0, 1);
  if (GET_MODE (x1) == HImode)
    goto L717;
 L343: ATTRIBUTE_UNUSED_LABEL
  if (bit_operator (x1, HImode))
    {
      operands[3] = x1;
      goto L344;
    }
 L357: ATTRIBUTE_UNUSED_LABEL
  if (GET_MODE (x1) == HImode)
    goto L721;
  x1 = XEXP (x0, 0);
  goto L439;

 L717: ATTRIBUTE_UNUSED_LABEL
  switch (GET_CODE (x1))
    {
    case PLUS:
      goto L148;
    case MINUS:
      goto L177;
    case MULT:
      goto L201;
    case IOR:
      goto L324;
    default:
     break;
   }
  goto L343;

 L148: ATTRIBUTE_UNUSED_LABEL
  x2 = XEXP (x1, 0);
  if (register_operand (x2, HImode))
    {
      operands[1] = x2;
      goto L149;
    }
  goto L343;

 L149: ATTRIBUTE_UNUSED_LABEL
  x2 = XEXP (x1, 1);
  if (nonmemory_operand (x2, HImode))
    {
      operands[2] = x2;
      goto L150;
    }
  goto L343;

 L150: ATTRIBUTE_UNUSED_LABEL
  if ((TARGET_H8300))
    {
      return 25;
    }
 L156: ATTRIBUTE_UNUSED_LABEL
  if ((TARGET_H8300H || TARGET_H8300S))
    {
      return 26;
    }
  x1 = XEXP (x0, 1);
  goto L343;

 L177: ATTRIBUTE_UNUSED_LABEL
  x2 = XEXP (x1, 0);
  if (general_operand (x2, HImode))
    {
      operands[1] = x2;
      goto L178;
    }
  goto L343;

 L178: ATTRIBUTE_UNUSED_LABEL
  x2 = XEXP (x1, 1);
  if (nonmemory_operand (x2, HImode))
    {
      operands[2] = x2;
      goto L179;
    }
  goto L343;

 L179: ATTRIBUTE_UNUSED_LABEL
  if ((TARGET_H8300))
    {
      return 30;
    }
 L185: ATTRIBUTE_UNUSED_LABEL
  if ((TARGET_H8300H || TARGET_H8300S))
    {
      return 31;
    }
  x1 = XEXP (x0, 1);
  goto L343;

 L201: ATTRIBUTE_UNUSED_LABEL
  x2 = XEXP (x1, 0);
  if (GET_MODE (x2) == HImode)
    goto L723;
  goto L343;

 L723: ATTRIBUTE_UNUSED_LABEL
  switch (GET_CODE (x2))
    {
    case SIGN_EXTEND:
      goto L202;
    case ZERO_EXTEND:
      goto L218;
    default:
     break;
   }
  goto L343;

 L202: ATTRIBUTE_UNUSED_LABEL
  x3 = XEXP (x2, 0);
  if (register_operand (x3, QImode))
    {
      operands[1] = x3;
      goto L203;
    }
  goto L343;

 L203: ATTRIBUTE_UNUSED_LABEL
  x2 = XEXP (x1, 1);
  if (GET_MODE (x2) == HImode
      && GET_CODE (x2) == SIGN_EXTEND)
    goto L204;
  goto L343;

 L204: ATTRIBUTE_UNUSED_LABEL
  x3 = XEXP (x2, 0);
  if (register_operand (x3, QImode))
    {
      operands[2] = x3;
      goto L205;
    }
  goto L343;

 L205: ATTRIBUTE_UNUSED_LABEL
  if ((TARGET_H8300H || TARGET_H8300S))
    {
      return 34;
    }
  x1 = XEXP (x0, 1);
  goto L343;

 L218: ATTRIBUTE_UNUSED_LABEL
  x3 = XEXP (x2, 0);
  if (register_operand (x3, QImode))
    {
      operands[1] = x3;
      goto L219;
    }
  goto L343;

 L219: ATTRIBUTE_UNUSED_LABEL
  x2 = XEXP (x1, 1);
  if (GET_MODE (x2) == HImode
      && GET_CODE (x2) == ZERO_EXTEND)
    goto L220;
  goto L343;

 L220: ATTRIBUTE_UNUSED_LABEL
  x3 = XEXP (x2, 0);
  if (register_operand (x3, QImode))
    {
      operands[2] = x3;
      return 36;
    }
  goto L343;

 L324: ATTRIBUTE_UNUSED_LABEL
  x2 = XEXP (x1, 0);
  if (GET_MODE (x2) == HImode
      && GET_CODE (x2) == AND)
    goto L325;
  goto L343;

 L325: ATTRIBUTE_UNUSED_LABEL
  x3 = XEXP (x2, 0);
  if (register_operand (x3, HImode))
    {
      operands[2] = x3;
      goto L326;
    }
  goto L343;

 L326: ATTRIBUTE_UNUSED_LABEL
  x3 = XEXP (x2, 1);
  if (const_int_operand (x3, HImode))
    {
      operands[3] = x3;
      goto L327;
    }
  goto L343;

 L327: ATTRIBUTE_UNUSED_LABEL
  x2 = XEXP (x1, 1);
  if (register_operand (x2, HImode))
    {
      operands[1] = x2;
      goto L328;
    }
  goto L343;

 L328: ATTRIBUTE_UNUSED_LABEL
  if ((exact_log2 (INTVAL (operands[3]) & 0xffff) != -1))
    {
      return 45;
    }
  x1 = XEXP (x0, 1);
  goto L343;

 L344: ATTRIBUTE_UNUSED_LABEL
  x2 = XEXP (x1, 0);
  if (register_operand (x2, HImode))
    {
      operands[1] = x2;
      goto L345;
    }
  goto L357;

 L345: ATTRIBUTE_UNUSED_LABEL
  x2 = XEXP (x1, 1);
  if (nonmemory_operand (x2, HImode))
    {
      operands[2] = x2;
      return 48;
    }
  goto L357;

 L721: ATTRIBUTE_UNUSED_LABEL
  switch (GET_CODE (x1))
    {
    case NEG:
      goto L358;
    case NOT:
      goto L372;
    default:
     break;
   }
  x1 = XEXP (x0, 0);
  goto L439;

 L358: ATTRIBUTE_UNUSED_LABEL
  x2 = XEXP (x1, 0);
  if (register_operand (x2, HImode))
    {
      operands[1] = x2;
      goto L359;
    }
  x1 = XEXP (x0, 0);
  goto L439;

 L359: ATTRIBUTE_UNUSED_LABEL
  if ((TARGET_H8300H || TARGET_H8300S))
    {
      return 51;
    }
  x1 = XEXP (x0, 0);
  goto L439;

 L372: ATTRIBUTE_UNUSED_LABEL
  x2 = XEXP (x1, 0);
  if (register_operand (x2, HImode))
    {
      operands[1] = x2;
      goto L373;
    }
  x1 = XEXP (x0, 0);
  goto L439;

 L373: ATTRIBUTE_UNUSED_LABEL
  if ((TARGET_H8300))
    {
      return 54;
    }
 L378: ATTRIBUTE_UNUSED_LABEL
  if ((TARGET_H8300H || TARGET_H8300S))
    {
      return 55;
    }
  x1 = XEXP (x0, 0);
  goto L439;

 L61: ATTRIBUTE_UNUSED_LABEL
  x2 = XEXP (x1, 0);
  if (general_operand_dst (x2, HImode))
    {
      operands[0] = x2;
      goto L62;
    }
  goto L64;

 L62: ATTRIBUTE_UNUSED_LABEL
  x1 = XEXP (x0, 1);
  if (general_operand_src (x1, HImode))
    {
      operands[1] = x1;
      return 8;
    }
  x1 = XEXP (x0, 0);
  goto L64;

 L81: ATTRIBUTE_UNUSED_LABEL
  x1 = XEXP (x0, 1);
  if (GET_MODE (x1) == HImode
      && GET_CODE (x1) == ZERO_EXTRACT)
    goto L89;
  x1 = XEXP (x0, 0);
  goto L64;

 L89: ATTRIBUTE_UNUSED_LABEL
  x2 = XEXP (x1, 0);
  if (register_operand (x2, HImode))
    {
      operands[0] = x2;
      goto L90;
    }
  if (bit_memory_operand (x2, QImode))
    {
      operands[0] = x2;
      goto L83;
    }
  x1 = XEXP (x0, 0);
  goto L64;

 L90: ATTRIBUTE_UNUSED_LABEL
  x2 = XEXP (x1, 1);
  if (GET_CODE (x2) == CONST_INT
      && XWINT (x2, 0) == 1)
    goto L91;
  x1 = XEXP (x0, 0);
  goto L64;

 L91: ATTRIBUTE_UNUSED_LABEL
  x2 = XEXP (x1, 2);
  if (const_int_operand (x2, VOIDmode))
    {
      operands[1] = x2;
      goto L92;
    }
  x1 = XEXP (x0, 0);
  goto L64;

 L92: ATTRIBUTE_UNUSED_LABEL
  if ((TARGET_H8300))
    {
      return 14;
    }
  x1 = XEXP (x0, 0);
  goto L64;

 L83: ATTRIBUTE_UNUSED_LABEL
  x2 = XEXP (x1, 1);
  if (GET_CODE (x2) == CONST_INT
      && XWINT (x2, 0) == 1)
    goto L84;
  x1 = XEXP (x0, 0);
  goto L64;

 L84: ATTRIBUTE_UNUSED_LABEL
  x2 = XEXP (x1, 2);
  if (const_int_operand (x2, VOIDmode))
    {
      operands[1] = x2;
      goto L85;
    }
  x1 = XEXP (x0, 0);
  goto L64;

 L85: ATTRIBUTE_UNUSED_LABEL
  if ((TARGET_H8300))
    {
      return 13;
    }
  x1 = XEXP (x0, 0);
  goto L64;

 L65: ATTRIBUTE_UNUSED_LABEL
  x1 = XEXP (x0, 1);
  if (general_operand_src (x1, SImode))
    {
      operands[1] = x1;
      goto L66;
    }
  x1 = XEXP (x0, 0);
  goto L68;

 L66: ATTRIBUTE_UNUSED_LABEL
  if ((TARGET_H8300
   && (register_operand (operands[0], SImode)
       || register_operand (operands[1], SImode))))
    {
      return 9;
    }
  x1 = XEXP (x0, 0);
  goto L68;

 L69: ATTRIBUTE_UNUSED_LABEL
  x1 = XEXP (x0, 1);
  if (general_operand_src (x1, SFmode))
    {
      operands[1] = x1;
      goto L70;
    }
  x1 = XEXP (x0, 0);
  goto L72;

 L70: ATTRIBUTE_UNUSED_LABEL
  if ((TARGET_H8300
   && (register_operand (operands[0], SFmode)
       || register_operand (operands[1], SFmode))))
    {
      return 10;
    }
  x1 = XEXP (x0, 0);
  goto L72;

 L73: ATTRIBUTE_UNUSED_LABEL
  x1 = XEXP (x0, 1);
  if (general_operand_src (x1, SImode))
    {
      operands[1] = x1;
      goto L74;
    }
  x1 = XEXP (x0, 0);
  goto L158;

 L74: ATTRIBUTE_UNUSED_LABEL
  if (((TARGET_H8300S || TARGET_H8300H)
   && (register_operand (operands[0], SImode)
       || register_operand (operands[1], SImode))
   && !(GET_CODE (operands[0]) == MEM
	&& GET_CODE (XEXP (operands[0], 0)) == PRE_DEC
	&& GET_CODE (XEXP (XEXP (operands[0], 0), 0)) == REG
	&& GET_CODE (operands[1]) == REG
	&& REGNO (XEXP (XEXP (operands[0], 0), 0)) == REGNO (operands[1]))))
    {
      return 11;
    }
  x1 = XEXP (x0, 0);
  goto L158;

 L159: ATTRIBUTE_UNUSED_LABEL
  x1 = XEXP (x0, 1);
  if (GET_MODE (x1) == SImode)
    goto L725;
 L348: ATTRIBUTE_UNUSED_LABEL
  if (bit_operator (x1, SImode))
    {
      operands[3] = x1;
      goto L349;
    }
 L362: ATTRIBUTE_UNUSED_LABEL
  if (GET_MODE (x1) == SImode)
    goto L728;
  x1 = XEXP (x0, 0);
  goto L439;

 L725: ATTRIBUTE_UNUSED_LABEL
  switch (GET_CODE (x1))
    {
    case PLUS:
      goto L160;
    case MINUS:
      goto L189;
    case MULT:
      goto L209;
    default:
     break;
   }
  goto L348;

 L160: ATTRIBUTE_UNUSED_LABEL
  x2 = XEXP (x1, 0);
  if (GET_MODE (x2) == SImode)
    goto L731;
  goto L348;

 L731: ATTRIBUTE_UNUSED_LABEL
  if (GET_CODE (x2) == MULT)
    goto L245;
  if (register_operand (x2, SImode))
    {
      operands[1] = x2;
      goto L161;
    }
  goto L348;

 L245: ATTRIBUTE_UNUSED_LABEL
  x3 = XEXP (x2, 0);
  if (GET_MODE (x3) == SImode
      && GET_CODE (x3) == SIGN_EXTEND)
    goto L246;
  goto L348;

 L246: ATTRIBUTE_UNUSED_LABEL
  x4 = XEXP (x3, 0);
  if (GET_MODE (x4) == HImode
      && GET_CODE (x4) == MEM)
    goto L247;
  goto L348;

 L247: ATTRIBUTE_UNUSED_LABEL
  x5 = XEXP (x4, 0);
  if (GET_MODE (x5) == SImode
      && GET_CODE (x5) == POST_INC)
    goto L248;
  goto L348;

 L248: ATTRIBUTE_UNUSED_LABEL
  x6 = XEXP (x5, 0);
  if (register_operand (x6, SImode))
    {
      operands[1] = x6;
      goto L249;
    }
  goto L348;

 L249: ATTRIBUTE_UNUSED_LABEL
  x3 = XEXP (x2, 1);
  if (GET_MODE (x3) == SImode
      && GET_CODE (x3) == SIGN_EXTEND)
    goto L250;
  goto L348;

 L250: ATTRIBUTE_UNUSED_LABEL
  x4 = XEXP (x3, 0);
  if (GET_MODE (x4) == HImode
      && GET_CODE (x4) == MEM)
    goto L251;
  goto L348;

 L251: ATTRIBUTE_UNUSED_LABEL
  x5 = XEXP (x4, 0);
  if (GET_MODE (x5) == SImode
      && GET_CODE (x5) == POST_INC)
    goto L252;
  goto L348;

 L252: ATTRIBUTE_UNUSED_LABEL
  x6 = XEXP (x5, 0);
  if (register_operand (x6, SImode))
    {
      operands[2] = x6;
      goto L253;
    }
  goto L348;

 L253: ATTRIBUTE_UNUSED_LABEL
  x2 = XEXP (x1, 1);
  if (register_operand (x2, SImode))
    {
      operands[3] = x2;
      goto L254;
    }
  goto L348;

 L254: ATTRIBUTE_UNUSED_LABEL
  if ((TARGET_MAC))
    {
      return 39;
    }
  x1 = XEXP (x0, 1);
  goto L348;

 L161: ATTRIBUTE_UNUSED_LABEL
  x2 = XEXP (x1, 1);
  if (nonmemory_operand (x2, SImode))
    {
      operands[2] = x2;
      goto L162;
    }
  goto L348;

 L162: ATTRIBUTE_UNUSED_LABEL
  if ((TARGET_H8300))
    {
      return 27;
    }
 L168: ATTRIBUTE_UNUSED_LABEL
  if ((TARGET_H8300H || TARGET_H8300S))
    {
      return 28;
    }
  x1 = XEXP (x0, 1);
  goto L348;

 L189: ATTRIBUTE_UNUSED_LABEL
  x2 = XEXP (x1, 0);
  if (register_operand (x2, SImode))
    {
      operands[1] = x2;
      goto L190;
    }
 L195: ATTRIBUTE_UNUSED_LABEL
  if (general_operand (x2, SImode))
    {
      operands[1] = x2;
      goto L196;
    }
  goto L348;

 L190: ATTRIBUTE_UNUSED_LABEL
  x2 = XEXP (x1, 1);
  if (register_operand (x2, SImode))
    {
      operands[2] = x2;
      goto L191;
    }
  x2 = XEXP (x1, 0);
  goto L195;

 L191: ATTRIBUTE_UNUSED_LABEL
  if ((TARGET_H8300))
    {
      return 32;
    }
  x1 = XEXP (x0, 1);
  x2 = XEXP (x1, 0);
  goto L195;

 L196: ATTRIBUTE_UNUSED_LABEL
  x2 = XEXP (x1, 1);
  if (nonmemory_operand (x2, SImode))
    {
      operands[2] = x2;
      goto L197;
    }
  goto L348;

 L197: ATTRIBUTE_UNUSED_LABEL
  if ((TARGET_H8300H || TARGET_H8300S))
    {
      return 33;
    }
  x1 = XEXP (x0, 1);
  goto L348;

 L209: ATTRIBUTE_UNUSED_LABEL
  x2 = XEXP (x1, 0);
  if (GET_MODE (x2) == SImode)
    goto L732;
  goto L348;

 L732: ATTRIBUTE_UNUSED_LABEL
  switch (GET_CODE (x2))
    {
    case SIGN_EXTEND:
      goto L210;
    case ZERO_EXTEND:
      goto L225;
    default:
     break;
   }
  goto L348;

 L210: ATTRIBUTE_UNUSED_LABEL
  x3 = XEXP (x2, 0);
  if (GET_MODE (x3) == HImode)
    goto L735;
  goto L348;

 L735: ATTRIBUTE_UNUSED_LABEL
  if (GET_CODE (x3) == MEM)
    goto L234;
  if (register_operand (x3, HImode))
    {
      operands[1] = x3;
      goto L211;
    }
  goto L348;

 L234: ATTRIBUTE_UNUSED_LABEL
  x4 = XEXP (x3, 0);
  if (GET_MODE (x4) == SImode
      && GET_CODE (x4) == POST_INC)
    goto L235;
  goto L348;

 L235: ATTRIBUTE_UNUSED_LABEL
  x5 = XEXP (x4, 0);
  if (register_operand (x5, SImode))
    {
      operands[1] = x5;
      goto L236;
    }
  goto L348;

 L236: ATTRIBUTE_UNUSED_LABEL
  x2 = XEXP (x1, 1);
  if (GET_MODE (x2) == SImode
      && GET_CODE (x2) == SIGN_EXTEND)
    goto L237;
  goto L348;

 L237: ATTRIBUTE_UNUSED_LABEL
  x3 = XEXP (x2, 0);
  if (GET_MODE (x3) == HImode
      && GET_CODE (x3) == MEM)
    goto L238;
  goto L348;

 L238: ATTRIBUTE_UNUSED_LABEL
  x4 = XEXP (x3, 0);
  if (GET_MODE (x4) == SImode
      && GET_CODE (x4) == POST_INC)
    goto L239;
  goto L348;

 L239: ATTRIBUTE_UNUSED_LABEL
  x5 = XEXP (x4, 0);
  if (register_operand (x5, SImode))
    {
      operands[2] = x5;
      goto L240;
    }
  goto L348;

 L240: ATTRIBUTE_UNUSED_LABEL
  if ((TARGET_MAC))
    {
      return 38;
    }
  x1 = XEXP (x0, 1);
  goto L348;

 L211: ATTRIBUTE_UNUSED_LABEL
  x2 = XEXP (x1, 1);
  if (GET_MODE (x2) == SImode
      && GET_CODE (x2) == SIGN_EXTEND)
    goto L212;
  goto L348;

 L212: ATTRIBUTE_UNUSED_LABEL
  x3 = XEXP (x2, 0);
  if (register_operand (x3, HImode))
    {
      operands[2] = x3;
      goto L213;
    }
  goto L348;

 L213: ATTRIBUTE_UNUSED_LABEL
  if ((TARGET_H8300H || TARGET_H8300S))
    {
      return 35;
    }
  x1 = XEXP (x0, 1);
  goto L348;

 L225: ATTRIBUTE_UNUSED_LABEL
  x3 = XEXP (x2, 0);
  if (register_operand (x3, HImode))
    {
      operands[1] = x3;
      goto L226;
    }
  goto L348;

 L226: ATTRIBUTE_UNUSED_LABEL
  x2 = XEXP (x1, 1);
  if (GET_MODE (x2) == SImode
      && GET_CODE (x2) == ZERO_EXTEND)
    goto L227;
  goto L348;

 L227: ATTRIBUTE_UNUSED_LABEL
  x3 = XEXP (x2, 0);
  if (register_operand (x3, HImode))
    {
      operands[2] = x3;
      goto L228;
    }
  goto L348;

 L228: ATTRIBUTE_UNUSED_LABEL
  if ((TARGET_H8300H || TARGET_H8300S))
    {
      return 37;
    }
  x1 = XEXP (x0, 1);
  goto L348;

 L349: ATTRIBUTE_UNUSED_LABEL
  x2 = XEXP (x1, 0);
  if (register_operand (x2, SImode))
    {
      operands[1] = x2;
      goto L350;
    }
  goto L362;

 L350: ATTRIBUTE_UNUSED_LABEL
  x2 = XEXP (x1, 1);
  if (nonmemory_operand (x2, SImode))
    {
      operands[2] = x2;
      return 49;
    }
  goto L362;

 L728: ATTRIBUTE_UNUSED_LABEL
  switch (GET_CODE (x1))
    {
    case NEG:
      goto L363;
    case NOT:
      goto L382;
    default:
     break;
   }
  x1 = XEXP (x0, 0);
  goto L439;

 L363: ATTRIBUTE_UNUSED_LABEL
  x2 = XEXP (x1, 0);
  if (register_operand (x2, SImode))
    {
      operands[1] = x2;
      goto L364;
    }
  x1 = XEXP (x0, 0);
  goto L439;

 L364: ATTRIBUTE_UNUSED_LABEL
  if ((TARGET_H8300H || TARGET_H8300S))
    {
      return 52;
    }
  x1 = XEXP (x0, 0);
  goto L439;

 L382: ATTRIBUTE_UNUSED_LABEL
  x2 = XEXP (x1, 0);
  if (register_operand (x2, SImode))
    {
      operands[1] = x2;
      goto L383;
    }
  x1 = XEXP (x0, 0);
  goto L439;

 L383: ATTRIBUTE_UNUSED_LABEL
  if ((TARGET_H8300))
    {
      return 56;
    }
 L388: ATTRIBUTE_UNUSED_LABEL
  if ((TARGET_H8300H || TARGET_H8300S))
    {
      return 57;
    }
  x1 = XEXP (x0, 0);
  goto L439;

 L95: ATTRIBUTE_UNUSED_LABEL
  x1 = XEXP (x0, 1);
  switch (GET_MODE (x1))
    {
    case SImode:
      goto L736;
    case QImode:
      goto L740;
    case HImode:
      goto L741;
    default:
      break;
    }
  x1 = XEXP (x0, 0);
  goto L76;

 L736: ATTRIBUTE_UNUSED_LABEL
  switch (GET_CODE (x1))
    {
    case ZERO_EXTRACT:
      goto L103;
    case COMPARE:
      goto L137;
    case SUBREG:
    case REG:
      goto L739;
    default:
      x1 = XEXP (x0, 0);
      goto L76;
   }
 L739: ATTRIBUTE_UNUSED_LABEL
  if (register_operand (x1, SImode))
    {
      operands[0] = x1;
      goto L116;
    }
  x1 = XEXP (x0, 0);
  goto L76;

 L103: ATTRIBUTE_UNUSED_LABEL
  x2 = XEXP (x1, 0);
  if (register_operand (x2, SImode))
    {
      operands[0] = x2;
      goto L104;
    }
  if (bit_memory_operand (x2, QImode))
    {
      operands[0] = x2;
      goto L97;
    }
  x1 = XEXP (x0, 0);
  goto L76;

 L104: ATTRIBUTE_UNUSED_LABEL
  x2 = XEXP (x1, 1);
  if (GET_CODE (x2) == CONST_INT
      && XWINT (x2, 0) == 1)
    goto L105;
  x1 = XEXP (x0, 0);
  goto L76;

 L105: ATTRIBUTE_UNUSED_LABEL
  x2 = XEXP (x1, 2);
  if (const_int_operand (x2, VOIDmode))
    {
      operands[1] = x2;
      goto L106;
    }
  x1 = XEXP (x0, 0);
  goto L76;

 L106: ATTRIBUTE_UNUSED_LABEL
  if (((TARGET_H8300H || TARGET_H8300S)
   && INTVAL (operands[1]) <= 15))
    {
      return 16;
    }
  x1 = XEXP (x0, 0);
  goto L76;

 L97: ATTRIBUTE_UNUSED_LABEL
  x2 = XEXP (x1, 1);
  if (GET_CODE (x2) == CONST_INT
      && XWINT (x2, 0) == 1)
    goto L98;
  x1 = XEXP (x0, 0);
  goto L76;

 L98: ATTRIBUTE_UNUSED_LABEL
  x2 = XEXP (x1, 2);
  if (const_int_operand (x2, VOIDmode))
    {
      operands[1] = x2;
      goto L99;
    }
  x1 = XEXP (x0, 0);
  goto L76;

 L99: ATTRIBUTE_UNUSED_LABEL
  if ((TARGET_H8300H || TARGET_H8300S))
    {
      return 15;
    }
  x1 = XEXP (x0, 0);
  goto L76;

 L137: ATTRIBUTE_UNUSED_LABEL
  x2 = XEXP (x1, 0);
  if (register_operand (x2, SImode))
    {
      operands[0] = x2;
      goto L138;
    }
  x1 = XEXP (x0, 0);
  goto L76;

 L138: ATTRIBUTE_UNUSED_LABEL
  x2 = XEXP (x1, 1);
  if (nonmemory_operand (x2, SImode))
    {
      operands[1] = x2;
      goto L139;
    }
  x1 = XEXP (x0, 0);
  goto L76;

 L139: ATTRIBUTE_UNUSED_LABEL
  if ((TARGET_H8300H || TARGET_H8300S))
    {
      return 23;
    }
  x1 = XEXP (x0, 0);
  goto L76;

 L116: ATTRIBUTE_UNUSED_LABEL
  if ((TARGET_H8300H || TARGET_H8300S))
    {
      return 19;
    }
  x1 = XEXP (x0, 0);
  goto L76;

 L740: ATTRIBUTE_UNUSED_LABEL
  if (GET_CODE (x1) == COMPARE)
    goto L120;
  if (register_operand (x1, QImode))
    {
      operands[0] = x1;
      return 17;
    }
  x1 = XEXP (x0, 0);
  goto L76;

 L120: ATTRIBUTE_UNUSED_LABEL
  x2 = XEXP (x1, 0);
  if (register_operand (x2, QImode))
    {
      operands[0] = x2;
      goto L121;
    }
  x1 = XEXP (x0, 0);
  goto L76;

 L121: ATTRIBUTE_UNUSED_LABEL
  x2 = XEXP (x1, 1);
  if (nonmemory_operand (x2, QImode))
    {
      operands[1] = x2;
      return 20;
    }
  x1 = XEXP (x0, 0);
  goto L76;

 L741: ATTRIBUTE_UNUSED_LABEL
  if (GET_CODE (x1) == COMPARE)
    goto L125;
  if (register_operand (x1, HImode))
    {
      operands[0] = x1;
      return 18;
    }
  x1 = XEXP (x0, 0);
  goto L76;

 L125: ATTRIBUTE_UNUSED_LABEL
  x2 = XEXP (x1, 0);
  if (register_operand (x2, HImode))
    {
      operands[0] = x2;
      goto L126;
    }
  x1 = XEXP (x0, 0);
  goto L76;

 L126: ATTRIBUTE_UNUSED_LABEL
  x2 = XEXP (x1, 1);
  if (register_operand (x2, HImode))
    {
      operands[1] = x2;
      goto L127;
    }
 L132: ATTRIBUTE_UNUSED_LABEL
  if (nonmemory_operand (x2, HImode))
    {
      operands[1] = x2;
      goto L133;
    }
  x1 = XEXP (x0, 0);
  goto L76;

 L127: ATTRIBUTE_UNUSED_LABEL
  if ((TARGET_H8300))
    {
      return 21;
    }
  x1 = XEXP (x0, 1);
  x2 = XEXP (x1, 1);
  goto L132;

 L133: ATTRIBUTE_UNUSED_LABEL
  if ((TARGET_H8300H || TARGET_H8300S))
    {
      return 22;
    }
  x1 = XEXP (x0, 0);
  goto L76;

 L77: ATTRIBUTE_UNUSED_LABEL
  x1 = XEXP (x0, 1);
  if (general_operand_src (x1, SFmode))
    {
      operands[1] = x1;
      goto L78;
    }
  x1 = XEXP (x0, 0);
  goto L390;

 L78: ATTRIBUTE_UNUSED_LABEL
  if (((TARGET_H8300H || TARGET_H8300S)
   && (register_operand (operands[0], SFmode)
       || register_operand (operands[1], SFmode))))
    {
      return 12;
    }
  x1 = XEXP (x0, 0);
  goto L390;

 L391: ATTRIBUTE_UNUSED_LABEL
  x1 = XEXP (x0, 1);
  switch (GET_CODE (x1))
    {
    case IF_THEN_ELSE:
      goto L392;
    case LABEL_REF:
      goto L410;
    default:
     break;
   }
 L429: ATTRIBUTE_UNUSED_LABEL
  if (jump_address_operand (x1, HImode))
    {
      operands[0] = x1;
      goto L430;
    }
 L433: ATTRIBUTE_UNUSED_LABEL
  if (jump_address_operand (x1, SImode))
    {
      operands[0] = x1;
      goto L434;
    }
  x1 = XEXP (x0, 0);
  goto L316;

 L392: ATTRIBUTE_UNUSED_LABEL
  x2 = XEXP (x1, 0);
  if (comparison_operator (x2, VOIDmode))
    {
      operands[1] = x2;
      goto L393;
    }
  goto L429;

 L393: ATTRIBUTE_UNUSED_LABEL
  x3 = XEXP (x2, 0);
  if (GET_CODE (x3) == CC0)
    goto L394;
  goto L429;

 L394: ATTRIBUTE_UNUSED_LABEL
  x3 = XEXP (x2, 1);
  if (GET_CODE (x3) == CONST_INT
      && XWINT (x3, 0) == 0)
    goto L395;
  goto L429;

 L395: ATTRIBUTE_UNUSED_LABEL
  x2 = XEXP (x1, 1);
  switch (GET_CODE (x2))
    {
    case LABEL_REF:
      goto L396;
    case PC:
      goto L405;
    default:
     break;
   }
  goto L429;

 L396: ATTRIBUTE_UNUSED_LABEL
  x3 = XEXP (x2, 0);
  operands[0] = x3;
  goto L397;

 L397: ATTRIBUTE_UNUSED_LABEL
  x2 = XEXP (x1, 2);
  if (GET_CODE (x2) == PC)
    {
      return 58;
    }
  goto L429;

 L405: ATTRIBUTE_UNUSED_LABEL
  x2 = XEXP (x1, 2);
  if (GET_CODE (x2) == LABEL_REF)
    goto L406;
  goto L429;

 L406: ATTRIBUTE_UNUSED_LABEL
  x3 = XEXP (x2, 0);
  operands[0] = x3;
  return 59;

 L410: ATTRIBUTE_UNUSED_LABEL
  x2 = XEXP (x1, 0);
  operands[0] = x2;
  return 60;

 L430: ATTRIBUTE_UNUSED_LABEL
  if ((TARGET_H8300))
    {
      return 63;
    }
  x1 = XEXP (x0, 1);
  goto L433;

 L434: ATTRIBUTE_UNUSED_LABEL
  if ((TARGET_H8300H || TARGET_H8300S))
    {
      return 64;
    }
  x1 = XEXP (x0, 0);
  goto L316;

 L317: ATTRIBUTE_UNUSED_LABEL
  x1 = XEXP (x0, 1);
  if (GET_MODE (x1) == QImode)
    goto L743;
  x1 = XEXP (x0, 0);
  goto L439;

 L743: ATTRIBUTE_UNUSED_LABEL
  switch (GET_CODE (x1))
    {
    case AND:
      goto L318;
    case IOR:
      goto L332;
    case XOR:
      goto L338;
    default:
     break;
   }
  x1 = XEXP (x0, 0);
  goto L439;

 L318: ATTRIBUTE_UNUSED_LABEL
  x2 = XEXP (x1, 0);
  if (bit_operand (x2, QImode))
    {
      operands[1] = x2;
      goto L319;
    }
  x1 = XEXP (x0, 0);
  goto L439;

 L319: ATTRIBUTE_UNUSED_LABEL
  x2 = XEXP (x1, 1);
  if (nonmemory_operand (x2, QImode))
    {
      operands[2] = x2;
      goto L320;
    }
  x1 = XEXP (x0, 0);
  goto L439;

 L320: ATTRIBUTE_UNUSED_LABEL
  if ((register_operand (operands[0], QImode) || o_operand (operands[2], QImode)))
    {
      return 44;
    }
  x1 = XEXP (x0, 0);
  goto L439;

 L332: ATTRIBUTE_UNUSED_LABEL
  x2 = XEXP (x1, 0);
  if (bit_operand (x2, QImode))
    {
      operands[1] = x2;
      goto L333;
    }
  x1 = XEXP (x0, 0);
  goto L439;

 L333: ATTRIBUTE_UNUSED_LABEL
  x2 = XEXP (x1, 1);
  if (nonmemory_operand (x2, QImode))
    {
      operands[2] = x2;
      goto L334;
    }
  x1 = XEXP (x0, 0);
  goto L439;

 L334: ATTRIBUTE_UNUSED_LABEL
  if ((register_operand (operands[0], QImode)
   || (GET_CODE (operands[2]) == CONST_INT
       && exact_log2 (INTVAL (operands[2]) & 0xff) != -1)))
    {
      return 46;
    }
  x1 = XEXP (x0, 0);
  goto L439;

 L338: ATTRIBUTE_UNUSED_LABEL
  x2 = XEXP (x1, 0);
  if (bit_operand (x2, QImode))
    {
      operands[1] = x2;
      goto L339;
    }
  x1 = XEXP (x0, 0);
  goto L439;

 L339: ATTRIBUTE_UNUSED_LABEL
  x2 = XEXP (x1, 1);
  if (nonmemory_operand (x2, QImode))
    {
      operands[2] = x2;
      goto L340;
    }
  x1 = XEXP (x0, 0);
  goto L439;

 L340: ATTRIBUTE_UNUSED_LABEL
  if ((register_operand (operands[0], QImode)
   || (GET_CODE (operands[2]) == CONST_INT
       && exact_log2 (INTVAL (operands[2]) & 0xff) != -1)))
    {
      return 47;
    }
  x1 = XEXP (x0, 0);
  goto L439;

 L440: ATTRIBUTE_UNUSED_LABEL
  x1 = XEXP (x0, 1);
  if (GET_CODE (x1) == CALL)
    goto L441;
  x1 = XEXP (x0, 0);
  goto L445;

 L441: ATTRIBUTE_UNUSED_LABEL
  x2 = XEXP (x1, 0);
  if (call_insn_operand (x2, QImode))
    {
      operands[1] = x2;
      goto L442;
    }
  x1 = XEXP (x0, 0);
  goto L445;

 L442: ATTRIBUTE_UNUSED_LABEL
  x2 = XEXP (x1, 1);
  if (general_operand (x2, HImode))
    {
      operands[2] = x2;
      return 66;
    }
  x1 = XEXP (x0, 0);
  goto L445;

 L712: ATTRIBUTE_UNUSED_LABEL
  if (GET_CODE (x1) == ZERO_EXTRACT)
    goto L602;
  if (register_operand (x1, HImode))
    {
      operands[0] = x1;
      goto L446;
    }
  goto L607;

 L602: ATTRIBUTE_UNUSED_LABEL
  x2 = XEXP (x1, 0);
  if (register_operand (x2, HImode))
    {
      operands[0] = x2;
      goto L603;
    }
  goto L607;

 L603: ATTRIBUTE_UNUSED_LABEL
  x2 = XEXP (x1, 1);
  if (GET_CODE (x2) == CONST_INT
      && XWINT (x2, 0) == 1)
    goto L604;
  goto L607;

 L604: ATTRIBUTE_UNUSED_LABEL
  x2 = XEXP (x1, 2);
  if (immediate_operand (x2, HImode))
    {
      operands[1] = x2;
      goto L605;
    }
  goto L607;

 L605: ATTRIBUTE_UNUSED_LABEL
  x1 = XEXP (x0, 1);
  if (register_operand (x1, HImode))
    {
      operands[2] = x1;
      return 90;
    }
  x1 = XEXP (x0, 0);
  goto L607;

 L446: ATTRIBUTE_UNUSED_LABEL
  x1 = XEXP (x0, 1);
  if (GET_MODE (x1) == HImode)
    goto L746;
 L518: ATTRIBUTE_UNUSED_LABEL
  if (nshift_operator (x1, HImode))
    {
      operands[3] = x1;
      goto L519;
    }
 L543: ATTRIBUTE_UNUSED_LABEL
  if (GET_MODE (x1) == HImode)
    goto L750;
  x1 = XEXP (x0, 0);
  goto L607;

 L746: ATTRIBUTE_UNUSED_LABEL
  switch (GET_CODE (x1))
    {
    case ZERO_EXTEND:
      goto L447;
    case SIGN_EXTEND:
      goto L472;
    case IOR:
      goto L628;
    case XOR:
      goto L649;
    default:
     break;
   }
  goto L518;

 L447: ATTRIBUTE_UNUSED_LABEL
  x2 = XEXP (x1, 0);
  if (general_operand_src (x2, QImode))
    {
      operands[1] = x2;
      goto L448;
    }
  goto L518;

 L448: ATTRIBUTE_UNUSED_LABEL
  if ((TARGET_H8300))
    {
      return 68;
    }
 L453: ATTRIBUTE_UNUSED_LABEL
  if ((TARGET_H8300H || TARGET_H8300S))
    {
      return 69;
    }
  x1 = XEXP (x0, 1);
  goto L518;

 L472: ATTRIBUTE_UNUSED_LABEL
  x2 = XEXP (x1, 0);
  if (general_operand_src (x2, QImode))
    {
      operands[1] = x2;
      goto L473;
    }
 L477: ATTRIBUTE_UNUSED_LABEL
  if (register_operand (x2, QImode))
    {
      operands[1] = x2;
      goto L478;
    }
  goto L518;

 L473: ATTRIBUTE_UNUSED_LABEL
  if ((TARGET_H8300))
    {
      return 73;
    }
  x1 = XEXP (x0, 1);
  x2 = XEXP (x1, 0);
  goto L477;

 L478: ATTRIBUTE_UNUSED_LABEL
  if ((TARGET_H8300H || TARGET_H8300S))
    {
      return 74;
    }
  x1 = XEXP (x0, 1);
  goto L518;

 L628: ATTRIBUTE_UNUSED_LABEL
  x2 = XEXP (x1, 0);
  if (GET_MODE (x2) == HImode
      && GET_CODE (x2) == ZERO_EXTEND)
    goto L629;
  goto L518;

 L629: ATTRIBUTE_UNUSED_LABEL
  x3 = XEXP (x2, 0);
  if (register_operand (x3, QImode))
    {
      operands[1] = x3;
      goto L630;
    }
  goto L518;

 L630: ATTRIBUTE_UNUSED_LABEL
  x2 = XEXP (x1, 1);
  if (GET_MODE (x2) == HImode)
    goto L753;
  goto L518;

 L753: ATTRIBUTE_UNUSED_LABEL
  if (GET_CODE (x2) == ASHIFT)
    goto L673;
  if (register_operand (x2, HImode))
    {
      operands[2] = x2;
      goto L631;
    }
  goto L518;

 L673: ATTRIBUTE_UNUSED_LABEL
  x3 = XEXP (x2, 0);
  if (register_operand (x3, HImode))
    {
      operands[2] = x3;
      goto L674;
    }
  goto L518;

 L674: ATTRIBUTE_UNUSED_LABEL
  x3 = XEXP (x2, 1);
  if (GET_CODE (x3) == CONST_INT
      && XWINT (x3, 0) == 8
      && (REG_P (operands[0])
   && REG_P (operands[2])
   && REGNO (operands[0]) != REGNO (operands[2])))
    {
      return 99;
    }
  goto L518;

 L631: ATTRIBUTE_UNUSED_LABEL
  if ((REG_P (operands[0])
   && REG_P (operands[1])
   && REGNO (operands[0]) != REGNO (operands[1])))
    {
      return 93;
    }
  x1 = XEXP (x0, 1);
  goto L518;

 L649: ATTRIBUTE_UNUSED_LABEL
  x2 = XEXP (x1, 0);
  if (GET_MODE (x2) == HImode
      && GET_CODE (x2) == ZERO_EXTEND)
    goto L650;
  goto L518;

 L650: ATTRIBUTE_UNUSED_LABEL
  x3 = XEXP (x2, 0);
  if (register_operand (x3, QImode))
    {
      operands[1] = x3;
      goto L651;
    }
  goto L518;

 L651: ATTRIBUTE_UNUSED_LABEL
  x2 = XEXP (x1, 1);
  if (register_operand (x2, HImode))
    {
      operands[2] = x2;
      goto L652;
    }
  goto L518;

 L652: ATTRIBUTE_UNUSED_LABEL
  if ((REG_P (operands[0])
   && REG_P (operands[1])
   && REGNO (operands[0]) != REGNO (operands[1])))
    {
      return 96;
    }
  x1 = XEXP (x0, 1);
  goto L518;

 L519: ATTRIBUTE_UNUSED_LABEL
  x2 = XEXP (x1, 0);
  if (register_operand (x2, HImode))
    {
      operands[1] = x2;
      goto L520;
    }
  goto L543;

 L520: ATTRIBUTE_UNUSED_LABEL
  x2 = XEXP (x1, 1);
  if (nonmemory_operand (x2, QImode))
    {
      operands[2] = x2;
      goto L521;
    }
  goto L543;

 L521: ATTRIBUTE_UNUSED_LABEL
  if (pnum_clobbers != NULL)
    {
      *pnum_clobbers = 1;
      return 79;
    }
  x1 = XEXP (x0, 1);
  goto L543;

 L750: ATTRIBUTE_UNUSED_LABEL
  switch (GET_CODE (x1))
    {
    case ROTATE:
      goto L544;
    case ZERO_EXTRACT:
      goto L555;
    default:
     break;
   }
  x1 = XEXP (x0, 0);
  goto L607;

 L544: ATTRIBUTE_UNUSED_LABEL
  x2 = XEXP (x1, 0);
  if (register_operand (x2, HImode))
    {
      operands[1] = x2;
      goto L545;
    }
  x1 = XEXP (x0, 0);
  goto L607;

 L545: ATTRIBUTE_UNUSED_LABEL
  x2 = XEXP (x1, 1);
  if (immediate_operand (x2, QImode))
    {
      operands[2] = x2;
      return 82;
    }
  x1 = XEXP (x0, 0);
  goto L607;

 L555: ATTRIBUTE_UNUSED_LABEL
  x2 = XEXP (x1, 0);
  if (GET_MODE (x2) == HImode)
    goto L755;
  x1 = XEXP (x0, 0);
  goto L607;

 L755: ATTRIBUTE_UNUSED_LABEL
  if (GET_CODE (x2) == XOR)
    goto L563;
  if (register_operand (x2, HImode))
    {
      operands[1] = x2;
      goto L556;
    }
  x1 = XEXP (x0, 0);
  goto L607;

 L563: ATTRIBUTE_UNUSED_LABEL
  x3 = XEXP (x2, 0);
  if (register_operand (x3, HImode))
    {
      operands[1] = x3;
      goto L564;
    }
  x1 = XEXP (x0, 0);
  goto L607;

 L564: ATTRIBUTE_UNUSED_LABEL
  x3 = XEXP (x2, 1);
  if (const_int_operand (x3, HImode))
    {
      operands[3] = x3;
      goto L565;
    }
  x1 = XEXP (x0, 0);
  goto L607;

 L565: ATTRIBUTE_UNUSED_LABEL
  x2 = XEXP (x1, 1);
  if (GET_CODE (x2) == CONST_INT
      && XWINT (x2, 0) == 1)
    goto L566;
  x1 = XEXP (x0, 0);
  goto L607;

 L566: ATTRIBUTE_UNUSED_LABEL
  x2 = XEXP (x1, 2);
  if (const_int_operand (x2, HImode))
    {
      operands[2] = x2;
      goto L567;
    }
  x1 = XEXP (x0, 0);
  goto L607;

 L567: ATTRIBUTE_UNUSED_LABEL
  if ((TARGET_H8300
   && (1 << INTVAL (operands[2])) == INTVAL (operands[3])))
    {
      return 85;
    }
  x1 = XEXP (x0, 0);
  goto L607;

 L556: ATTRIBUTE_UNUSED_LABEL
  x2 = XEXP (x1, 1);
  if (GET_CODE (x2) == CONST_INT
      && XWINT (x2, 0) == 1)
    goto L557;
  x1 = XEXP (x0, 0);
  goto L607;

 L557: ATTRIBUTE_UNUSED_LABEL
  x2 = XEXP (x1, 2);
  if (immediate_operand (x2, HImode))
    {
      operands[2] = x2;
      goto L558;
    }
  x1 = XEXP (x0, 0);
  goto L607;

 L558: ATTRIBUTE_UNUSED_LABEL
  if ((TARGET_H8300))
    {
      return 84;
    }
  x1 = XEXP (x0, 0);
  goto L607;

 L710: ATTRIBUTE_UNUSED_LABEL
  if (register_operand (x1, SImode))
    {
      operands[0] = x1;
      goto L456;
    }
  goto ret0;

 L456: ATTRIBUTE_UNUSED_LABEL
  x1 = XEXP (x0, 1);
  if (GET_MODE (x1) == SImode)
    goto L756;
 L532: ATTRIBUTE_UNUSED_LABEL
  if (nshift_operator (x1, SImode))
    {
      operands[3] = x1;
      goto L533;
    }
 L548: ATTRIBUTE_UNUSED_LABEL
  if (GET_MODE (x1) == SImode)
    goto L761;
  goto ret0;

 L756: ATTRIBUTE_UNUSED_LABEL
  switch (GET_CODE (x1))
    {
    case ZERO_EXTEND:
      goto L457;
    case SIGN_EXTEND:
      goto L482;
    case ZERO_EXTRACT:
      goto L571;
    case IOR:
      goto L635;
    case XOR:
      goto L656;
    default:
     break;
   }
  goto L532;

 L457: ATTRIBUTE_UNUSED_LABEL
  x2 = XEXP (x1, 0);
  if (general_operand_src (x2, QImode))
    {
      operands[1] = x2;
      goto L458;
    }
 L462: ATTRIBUTE_UNUSED_LABEL
  if (general_operand_src (x2, HImode))
    {
      operands[1] = x2;
      goto L463;
    }
 L467: ATTRIBUTE_UNUSED_LABEL
  if (register_operand (x2, HImode))
    {
      operands[1] = x2;
      goto L468;
    }
  goto L532;

 L458: ATTRIBUTE_UNUSED_LABEL
  if ((TARGET_H8300))
    {
      return 70;
    }
  x1 = XEXP (x0, 1);
  x2 = XEXP (x1, 0);
  goto L462;

 L463: ATTRIBUTE_UNUSED_LABEL
  if ((TARGET_H8300))
    {
      return 71;
    }
  x1 = XEXP (x0, 1);
  x2 = XEXP (x1, 0);
  goto L467;

 L468: ATTRIBUTE_UNUSED_LABEL
  if ((TARGET_H8300H || TARGET_H8300S))
    {
      return 72;
    }
  x1 = XEXP (x0, 1);
  goto L532;

 L482: ATTRIBUTE_UNUSED_LABEL
  x2 = XEXP (x1, 0);
  if (general_operand_src (x2, QImode))
    {
      operands[1] = x2;
      goto L483;
    }
 L487: ATTRIBUTE_UNUSED_LABEL
  if (general_operand_src (x2, HImode))
    {
      operands[1] = x2;
      goto L488;
    }
 L492: ATTRIBUTE_UNUSED_LABEL
  if (register_operand (x2, HImode))
    {
      operands[1] = x2;
      goto L493;
    }
  goto L532;

 L483: ATTRIBUTE_UNUSED_LABEL
  if ((TARGET_H8300))
    {
      return 75;
    }
  x1 = XEXP (x0, 1);
  x2 = XEXP (x1, 0);
  goto L487;

 L488: ATTRIBUTE_UNUSED_LABEL
  if ((TARGET_H8300))
    {
      return 76;
    }
  x1 = XEXP (x0, 1);
  x2 = XEXP (x1, 0);
  goto L492;

 L493: ATTRIBUTE_UNUSED_LABEL
  if ((TARGET_H8300H || TARGET_H8300S))
    {
      return 77;
    }
  x1 = XEXP (x0, 1);
  goto L532;

 L571: ATTRIBUTE_UNUSED_LABEL
  x2 = XEXP (x1, 0);
  if (register_operand (x2, HImode))
    {
      operands[1] = x2;
      goto L572;
    }
  goto L532;

 L572: ATTRIBUTE_UNUSED_LABEL
  x2 = XEXP (x1, 1);
  if (GET_CODE (x2) == CONST_INT
      && XWINT (x2, 0) == 1)
    goto L573;
  goto L532;

 L573: ATTRIBUTE_UNUSED_LABEL
  x2 = XEXP (x1, 2);
  if (const_int_operand (x2, VOIDmode))
    {
      operands[2] = x2;
      goto L574;
    }
  goto L532;

 L574: ATTRIBUTE_UNUSED_LABEL
  if ((TARGET_H8300
   && INTVAL (operands[2]) < 16))
    {
      return 86;
    }
  x1 = XEXP (x0, 1);
  goto L532;

 L635: ATTRIBUTE_UNUSED_LABEL
  x2 = XEXP (x1, 0);
  if (GET_MODE (x2) == SImode
      && GET_CODE (x2) == ZERO_EXTEND)
    goto L636;
  goto L532;

 L636: ATTRIBUTE_UNUSED_LABEL
  x3 = XEXP (x2, 0);
  switch (GET_MODE (x3))
    {
    case HImode:
      goto L763;
    case QImode:
      goto L764;
    default:
      break;
    }
  goto L532;

 L763: ATTRIBUTE_UNUSED_LABEL
  if (register_operand (x3, HImode))
    {
      operands[1] = x3;
      goto L637;
    }
  goto L532;

 L637: ATTRIBUTE_UNUSED_LABEL
  x2 = XEXP (x1, 1);
  if (GET_MODE (x2) == SImode)
    goto L766;
  goto L532;

 L766: ATTRIBUTE_UNUSED_LABEL
  if (GET_CODE (x2) == ASHIFT)
    goto L681;
  if (register_operand (x2, SImode))
    {
      operands[2] = x2;
      goto L638;
    }
  goto L532;

 L681: ATTRIBUTE_UNUSED_LABEL
  x3 = XEXP (x2, 0);
  if (register_operand (x3, SImode))
    {
      operands[2] = x3;
      goto L682;
    }
  goto L532;

 L682: ATTRIBUTE_UNUSED_LABEL
  x3 = XEXP (x2, 1);
  if (GET_CODE (x3) == CONST_INT
      && XWINT (x3, 0) == 16
      && ((TARGET_H8300H || TARGET_H8300S)
   && REG_P (operands[0])
   && REG_P (operands[2])
   && (REGNO (operands[0]) != REGNO (operands[2]))))
    {
      return 100;
    }
  goto L532;

 L638: ATTRIBUTE_UNUSED_LABEL
  if (((TARGET_H8300H || TARGET_H8300S)
   && REG_P (operands[0])
   && REG_P (operands[1])
   && (REGNO (operands[0]) != REGNO (operands[1]))))
    {
      return 94;
    }
  x1 = XEXP (x0, 1);
  goto L532;

 L764: ATTRIBUTE_UNUSED_LABEL
  if (register_operand (x3, QImode))
    {
      operands[1] = x3;
      goto L644;
    }
  goto L532;

 L644: ATTRIBUTE_UNUSED_LABEL
  x2 = XEXP (x1, 1);
  if (register_operand (x2, SImode))
    {
      operands[2] = x2;
      goto L645;
    }
  goto L532;

 L645: ATTRIBUTE_UNUSED_LABEL
  if ((REG_P (operands[0])
   && REG_P (operands[1])
   && REGNO (operands[0]) != REGNO (operands[1])))
    {
      return 95;
    }
  x1 = XEXP (x0, 1);
  goto L532;

 L656: ATTRIBUTE_UNUSED_LABEL
  x2 = XEXP (x1, 0);
  if (GET_MODE (x2) == SImode
      && GET_CODE (x2) == ZERO_EXTEND)
    goto L657;
  goto L532;

 L657: ATTRIBUTE_UNUSED_LABEL
  x3 = XEXP (x2, 0);
  switch (GET_MODE (x3))
    {
    case HImode:
      goto L767;
    case QImode:
      goto L768;
    default:
      break;
    }
  goto L532;

 L767: ATTRIBUTE_UNUSED_LABEL
  if (register_operand (x3, HImode))
    {
      operands[1] = x3;
      goto L658;
    }
  goto L532;

 L658: ATTRIBUTE_UNUSED_LABEL
  x2 = XEXP (x1, 1);
  if (register_operand (x2, SImode))
    {
      operands[2] = x2;
      goto L659;
    }
  goto L532;

 L659: ATTRIBUTE_UNUSED_LABEL
  if (((TARGET_H8300H || TARGET_H8300S)
   && REG_P (operands[0])
   && REG_P (operands[1])
   && (REGNO (operands[0]) != REGNO (operands[1]))))
    {
      return 97;
    }
  x1 = XEXP (x0, 1);
  goto L532;

 L768: ATTRIBUTE_UNUSED_LABEL
  if (register_operand (x3, QImode))
    {
      operands[1] = x3;
      goto L665;
    }
  goto L532;

 L665: ATTRIBUTE_UNUSED_LABEL
  x2 = XEXP (x1, 1);
  if (register_operand (x2, SImode))
    {
      operands[2] = x2;
      goto L666;
    }
  goto L532;

 L666: ATTRIBUTE_UNUSED_LABEL
  if ((REG_P (operands[0])
   && REG_P (operands[1])
   && REGNO (operands[0]) != REGNO (operands[1])))
    {
      return 98;
    }
  x1 = XEXP (x0, 1);
  goto L532;

 L533: ATTRIBUTE_UNUSED_LABEL
  x2 = XEXP (x1, 0);
  if (register_operand (x2, SImode))
    {
      operands[1] = x2;
      goto L534;
    }
  goto L548;

 L534: ATTRIBUTE_UNUSED_LABEL
  x2 = XEXP (x1, 1);
  if (nonmemory_operand (x2, QImode))
    {
      operands[2] = x2;
      goto L535;
    }
  goto L548;

 L535: ATTRIBUTE_UNUSED_LABEL
  if (pnum_clobbers != NULL)
    {
      *pnum_clobbers = 1;
      return 80;
    }
  x1 = XEXP (x0, 1);
  goto L548;

 L761: ATTRIBUTE_UNUSED_LABEL
  switch (GET_CODE (x1))
    {
    case ROTATE:
      goto L549;
    case ZERO_EXTRACT:
      goto L578;
    default:
     break;
   }
  goto ret0;

 L549: ATTRIBUTE_UNUSED_LABEL
  x2 = XEXP (x1, 0);
  if (register_operand (x2, SImode))
    {
      operands[1] = x2;
      goto L550;
    }
  goto ret0;

 L550: ATTRIBUTE_UNUSED_LABEL
  x2 = XEXP (x1, 1);
  if (immediate_operand (x2, QImode))
    {
      operands[2] = x2;
      goto L551;
    }
  goto ret0;

 L551: ATTRIBUTE_UNUSED_LABEL
  if ((TARGET_H8300H || TARGET_H8300S))
    {
      return 83;
    }
  goto ret0;

 L578: ATTRIBUTE_UNUSED_LABEL
  x2 = XEXP (x1, 0);
  switch (GET_MODE (x2))
    {
    case SImode:
      goto L771;
    case HImode:
      goto L770;
    default:
      break;
    }
  goto ret0;

 L771: ATTRIBUTE_UNUSED_LABEL
  if (GET_CODE (x2) == XOR)
    goto L595;
  if (register_operand (x2, SImode))
    {
      operands[1] = x2;
      goto L579;
    }
  goto ret0;

 L595: ATTRIBUTE_UNUSED_LABEL
  x3 = XEXP (x2, 0);
  if (register_operand (x3, SImode))
    {
      operands[1] = x3;
      goto L596;
    }
  goto ret0;

 L596: ATTRIBUTE_UNUSED_LABEL
  x3 = XEXP (x2, 1);
  if (const_int_operand (x3, VOIDmode))
    {
      operands[3] = x3;
      goto L597;
    }
  goto ret0;

 L597: ATTRIBUTE_UNUSED_LABEL
  x2 = XEXP (x1, 1);
  if (GET_CODE (x2) == CONST_INT
      && XWINT (x2, 0) == 1)
    goto L598;
  goto ret0;

 L598: ATTRIBUTE_UNUSED_LABEL
  x2 = XEXP (x1, 2);
  if (const_int_operand (x2, VOIDmode))
    {
      operands[2] = x2;
      goto L599;
    }
  goto ret0;

 L599: ATTRIBUTE_UNUSED_LABEL
  if (((TARGET_H8300H || TARGET_H8300S)
   && INTVAL (operands[2]) < 16
   && (1 << INTVAL (operands[2])) == INTVAL (operands[3])))
    {
      return 89;
    }
  goto ret0;

 L579: ATTRIBUTE_UNUSED_LABEL
  x2 = XEXP (x1, 1);
  if (GET_CODE (x2) == CONST_INT
      && XWINT (x2, 0) == 1)
    goto L580;
  goto ret0;

 L580: ATTRIBUTE_UNUSED_LABEL
  x2 = XEXP (x1, 2);
  if (const_int_operand (x2, VOIDmode))
    {
      operands[2] = x2;
      goto L581;
    }
  goto ret0;

 L581: ATTRIBUTE_UNUSED_LABEL
  if (((TARGET_H8300H || TARGET_H8300S)
   && INTVAL (operands[2]) < 16))
    {
      return 87;
    }
  goto ret0;

 L770: ATTRIBUTE_UNUSED_LABEL
  if (GET_CODE (x2) == XOR)
    goto L586;
  goto ret0;

 L586: ATTRIBUTE_UNUSED_LABEL
  x3 = XEXP (x2, 0);
  if (register_operand (x3, HImode))
    {
      operands[1] = x3;
      goto L587;
    }
  goto ret0;

 L587: ATTRIBUTE_UNUSED_LABEL
  x3 = XEXP (x2, 1);
  if (const_int_operand (x3, HImode))
    {
      operands[3] = x3;
      goto L588;
    }
  goto ret0;

 L588: ATTRIBUTE_UNUSED_LABEL
  x2 = XEXP (x1, 1);
  if (GET_CODE (x2) == CONST_INT
      && XWINT (x2, 0) == 1)
    goto L589;
  goto ret0;

 L589: ATTRIBUTE_UNUSED_LABEL
  x2 = XEXP (x1, 2);
  if (const_int_operand (x2, VOIDmode))
    {
      operands[2] = x2;
      goto L590;
    }
  goto ret0;

 L590: ATTRIBUTE_UNUSED_LABEL
  if ((TARGET_H8300
   && INTVAL (operands[2]) < 16
   && (1 << INTVAL (operands[2])) == INTVAL (operands[3])))
    {
      return 88;
    }
  goto ret0;

 L711: ATTRIBUTE_UNUSED_LABEL
  if (register_operand (x1, QImode))
    {
      operands[0] = x1;
      goto L504;
    }
  goto ret0;

 L504: ATTRIBUTE_UNUSED_LABEL
  x1 = XEXP (x0, 1);
  if (nshift_operator (x1, QImode))
    {
      operands[3] = x1;
      goto L505;
    }
 L538: ATTRIBUTE_UNUSED_LABEL
  if (GET_MODE (x1) == QImode
      && GET_CODE (x1) == ROTATE)
    goto L539;
  goto ret0;

 L505: ATTRIBUTE_UNUSED_LABEL
  x2 = XEXP (x1, 0);
  if (register_operand (x2, QImode))
    {
      operands[1] = x2;
      goto L506;
    }
  goto L538;

 L506: ATTRIBUTE_UNUSED_LABEL
  x2 = XEXP (x1, 1);
  if (nonmemory_operand (x2, QImode))
    {
      operands[2] = x2;
      goto L507;
    }
  goto L538;

 L507: ATTRIBUTE_UNUSED_LABEL
  if (pnum_clobbers != NULL)
    {
      *pnum_clobbers = 1;
      return 78;
    }
  x1 = XEXP (x0, 1);
  goto L538;

 L539: ATTRIBUTE_UNUSED_LABEL
  x2 = XEXP (x1, 0);
  if (register_operand (x2, QImode))
    {
      operands[1] = x2;
      goto L540;
    }
  goto ret0;

 L540: ATTRIBUTE_UNUSED_LABEL
  x2 = XEXP (x1, 1);
  if (immediate_operand (x2, QImode))
    {
      operands[2] = x2;
      return 81;
    }
  goto ret0;

 L608: ATTRIBUTE_UNUSED_LABEL
  x1 = XEXP (x0, 1);
  if (bit_operator (x1, HImode))
    {
      operands[4] = x1;
      goto L609;
    }
 L616: ATTRIBUTE_UNUSED_LABEL
  if (bit_operator (x1, HImode))
    {
      operands[5] = x1;
      goto L617;
    }
  goto ret0;

 L609: ATTRIBUTE_UNUSED_LABEL
  x2 = XEXP (x1, 0);
  if (GET_MODE (x2) == HImode
      && GET_CODE (x2) == ZERO_EXTRACT)
    goto L610;
  goto L616;

 L610: ATTRIBUTE_UNUSED_LABEL
  x3 = XEXP (x2, 0);
  if (register_operand (x3, HImode))
    {
      operands[1] = x3;
      goto L611;
    }
  goto L616;

 L611: ATTRIBUTE_UNUSED_LABEL
  x3 = XEXP (x2, 1);
  if (GET_CODE (x3) == CONST_INT
      && XWINT (x3, 0) == 1)
    goto L612;
  goto L616;

 L612: ATTRIBUTE_UNUSED_LABEL
  x3 = XEXP (x2, 2);
  if (immediate_operand (x3, HImode))
    {
      operands[2] = x3;
      goto L613;
    }
  goto L616;

 L613: ATTRIBUTE_UNUSED_LABEL
  x2 = XEXP (x1, 1);
  if (bit_operand (x2, HImode))
    {
      operands[3] = x2;
      return 91;
    }
  goto L616;

 L617: ATTRIBUTE_UNUSED_LABEL
  x2 = XEXP (x1, 0);
  if (GET_MODE (x2) == HImode
      && GET_CODE (x2) == ZERO_EXTRACT)
    goto L618;
  goto ret0;

 L618: ATTRIBUTE_UNUSED_LABEL
  x3 = XEXP (x2, 0);
  if (register_operand (x3, HImode))
    {
      operands[1] = x3;
      goto L619;
    }
  goto ret0;

 L619: ATTRIBUTE_UNUSED_LABEL
  x3 = XEXP (x2, 1);
  if (GET_CODE (x3) == CONST_INT
      && XWINT (x3, 0) == 1)
    goto L620;
  goto ret0;

 L620: ATTRIBUTE_UNUSED_LABEL
  x3 = XEXP (x2, 2);
  if (immediate_operand (x3, HImode))
    {
      operands[2] = x3;
      goto L621;
    }
  goto ret0;

 L621: ATTRIBUTE_UNUSED_LABEL
  x2 = XEXP (x1, 1);
  if (GET_MODE (x2) == HImode
      && GET_CODE (x2) == ZERO_EXTRACT)
    goto L622;
  goto ret0;

 L622: ATTRIBUTE_UNUSED_LABEL
  x3 = XEXP (x2, 0);
  if (register_operand (x3, HImode))
    {
      operands[3] = x3;
      goto L623;
    }
  goto ret0;

 L623: ATTRIBUTE_UNUSED_LABEL
  x3 = XEXP (x2, 1);
  if (GET_CODE (x3) == CONST_INT
      && XWINT (x3, 0) == 1)
    goto L624;
  goto ret0;

 L624: ATTRIBUTE_UNUSED_LABEL
  x3 = XEXP (x2, 2);
  if (immediate_operand (x3, HImode))
    {
      operands[4] = x3;
      return 92;
    }
  goto ret0;
 ret0:
  return -1;
}

int recog PARAMS ((rtx, rtx, int *));
int
recog (x0, insn, pnum_clobbers)
     rtx x0 ATTRIBUTE_UNUSED;
     rtx insn ATTRIBUTE_UNUSED;
     int *pnum_clobbers ATTRIBUTE_UNUSED;
{
  rtx * const operands ATTRIBUTE_UNUSED = &recog_data.operand[0];
  rtx x1 ATTRIBUTE_UNUSED;
  rtx x2 ATTRIBUTE_UNUSED;
  rtx x3 ATTRIBUTE_UNUSED;
  rtx x4 ATTRIBUTE_UNUSED;
  rtx x5 ATTRIBUTE_UNUSED;
  rtx x6 ATTRIBUTE_UNUSED;
  int tem ATTRIBUTE_UNUSED;
  recog_data.insn = NULL_RTX;

  switch (GET_CODE (x0))
    {
    case PARALLEL:
      goto L694;
    case SET:
      goto L27;
    case CALL:
      goto L436;
    case CONST_INT:
      goto L695;
    default:
     break;
   }
  goto ret0;

 L694: ATTRIBUTE_UNUSED_LABEL
  if (XVECLEN (x0, 0) == 2)
    goto L1;
  goto ret0;

 L1: ATTRIBUTE_UNUSED_LABEL
  x1 = XVECEXP (x0, 0, 0);
  if (GET_CODE (x1) == SET)
    goto L2;
  goto ret0;

 L2: ATTRIBUTE_UNUSED_LABEL
  return recog_1 (x0, insn, pnum_clobbers);

 L27: ATTRIBUTE_UNUSED_LABEL
  return recog_2 (x0, insn, pnum_clobbers);

 L436: ATTRIBUTE_UNUSED_LABEL
  x1 = XEXP (x0, 0);
  if (call_insn_operand (x1, QImode))
    {
      operands[0] = x1;
      goto L437;
    }
  goto ret0;

 L437: ATTRIBUTE_UNUSED_LABEL
  x1 = XEXP (x0, 1);
  if (general_operand (x1, HImode))
    {
      operands[1] = x1;
      return 65;
    }
  goto ret0;

 L695: ATTRIBUTE_UNUSED_LABEL
  if (XWINT (x0, 0) == 0)
    {
      return 67;
    }
  goto ret0;
 ret0:
  return -1;
}

rtx split_insns PARAMS ((rtx, rtx));
rtx
split_insns (x0, insn)
     rtx x0 ATTRIBUTE_UNUSED;
     rtx insn ATTRIBUTE_UNUSED;
{
  rtx * const operands ATTRIBUTE_UNUSED = &recog_data.operand[0];
  rtx x1 ATTRIBUTE_UNUSED;
  rtx x2 ATTRIBUTE_UNUSED;
  rtx x3 ATTRIBUTE_UNUSED;
  rtx x4 ATTRIBUTE_UNUSED;
  rtx x5 ATTRIBUTE_UNUSED;
  rtx x6 ATTRIBUTE_UNUSED;
  rtx tem ATTRIBUTE_UNUSED;
  recog_data.insn = NULL_RTX;

  if (GET_CODE (x0) == SET)
    goto L684;
  goto ret0;

 L684: ATTRIBUTE_UNUSED_LABEL
  x1 = XEXP (x0, 0);
  switch (GET_MODE (x1))
    {
    case HImode:
      goto L772;
    case SImode:
      goto L773;
    default:
      break;
    }
  goto ret0;

 L772: ATTRIBUTE_UNUSED_LABEL
  if (register_operand (x1, HImode))
    {
      operands[0] = x1;
      goto L685;
    }
  goto ret0;

 L685: ATTRIBUTE_UNUSED_LABEL
  x1 = XEXP (x0, 1);
  if (GET_MODE (x1) == HImode
      && GET_CODE (x1) == PLUS)
    goto L686;
  goto ret0;

 L686: ATTRIBUTE_UNUSED_LABEL
  x2 = XEXP (x1, 0);
  if (rtx_equal_p (x2, operands[0]))
    goto L687;
  goto ret0;

 L687: ATTRIBUTE_UNUSED_LABEL
  x2 = XEXP (x1, 1);
  if (two_insn_adds_subs_operand (x2, HImode))
    {
      operands[1] = x2;
      return gen_split_110 (operands);
    }
  goto ret0;

 L773: ATTRIBUTE_UNUSED_LABEL
  if (register_operand (x1, SImode))
    {
      operands[0] = x1;
      goto L690;
    }
  goto ret0;

 L690: ATTRIBUTE_UNUSED_LABEL
  x1 = XEXP (x0, 1);
  if (GET_MODE (x1) == SImode
      && GET_CODE (x1) == PLUS)
    goto L691;
  goto ret0;

 L691: ATTRIBUTE_UNUSED_LABEL
  x2 = XEXP (x1, 0);
  if (rtx_equal_p (x2, operands[0]))
    goto L692;
  goto ret0;

 L692: ATTRIBUTE_UNUSED_LABEL
  x2 = XEXP (x1, 1);
  if (two_insn_adds_subs_operand (x2, SImode))
    {
      operands[1] = x2;
      goto L693;
    }
  goto ret0;

 L693: ATTRIBUTE_UNUSED_LABEL
  if ((TARGET_H8300H || TARGET_H8300S))
    {
      return gen_split_112 (operands);
    }
  goto ret0;
 ret0:
  return 0;
}

