Adding the ns32k arch to gcc2.

This commit is contained in:
phil 1994-03-10 21:11:39 +00:00
parent fa491c1bc9
commit 30f778234a
18 changed files with 15960 additions and 0 deletions

View File

@ -0,0 +1,3 @@
# $Id: Makefile,v 1.1 1994/03/10 21:11:39 phil Exp $
.include <bsd.prog.mk>

View File

@ -0,0 +1,712 @@
/* Subroutines for assembler code output on the NS32000.
Copyright (C) 1988 Free Software Foundation, Inc.
This file is part of GNU CC.
GNU CC is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 2, or (at your option)
any later version.
GNU CC is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with GNU CC; see the file COPYING. If not, write to
the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA. */
/* Some output-actions in ns32k.md need these. */
#include <stdio.h>
#include "config.h"
#include "rtl.h"
#include "regs.h"
#include "hard-reg-set.h"
#include "real.h"
#include "insn-config.h"
#include "conditions.h"
#include "insn-flags.h"
#include "output.h"
#include "insn-attr.h"
#ifdef OSF_OS
int ns32k_num_files = 0;
#endif
void
trace (s, s1, s2)
char *s, *s1, *s2;
{
fprintf (stderr, s, s1, s2);
}
/* Value is 1 if hard register REGNO can hold a value of machine-mode MODE. */
int
hard_regno_mode_ok (regno, mode)
int regno;
enum machine_mode mode;
{
switch (mode)
{
case QImode:
case HImode:
case PSImode:
case SImode:
case PDImode:
case VOIDmode:
case BLKmode:
if (regno < 8 || regno == 16 || regno == 17)
return 1;
else
return 0;
case DImode:
if (regno < 8 && (regno & 1) == 0)
return 1;
else
return 0;
case SFmode:
case SCmode:
if (TARGET_32081)
{
if (regno < 16)
return 1;
else
return 0;
}
else
{
if (regno < 8)
return 1;
else
return 0;
}
case DFmode:
case DCmode:
if ((regno & 1) == 0)
{
if (TARGET_32081)
{
if (regno < 16)
return 1;
else
return 0;
}
else
{
if (regno < 8)
return 1;
else
return 0;
}
}
else
return 0;
}
/* Used to abort here, but simply saying "no" handles TImode
much better. */
return 0;
}
/* ADDRESS_COST calls this. This function is not optimal
for the 32032 & 32332, but it probably is better than
the default. */
int
calc_address_cost (operand)
rtx operand;
{
int i;
int cost = 0;
if (GET_CODE (operand) == MEM)
cost += 3;
if (GET_CODE (operand) == MULT)
cost += 2;
#if 0
if (GET_CODE (operand) == REG)
cost += 1; /* not really, but the documentation
says different amount of registers
shouldn't return the same costs */
#endif
switch (GET_CODE (operand))
{
case REG:
case CONST:
case CONST_INT:
case CONST_DOUBLE:
case SYMBOL_REF:
case LABEL_REF:
case POST_DEC:
case PRE_DEC:
break;
case MULT:
case MEM:
case PLUS:
for (i = 0; i < GET_RTX_LENGTH (GET_CODE (operand)); i++)
{
cost += calc_address_cost (XEXP (operand, i));
}
default:
break;
}
return cost;
}
/* Return the register class of a scratch register needed to copy IN into
or out of a register in CLASS in MODE. If it can be done directly,
NO_REGS is returned. */
enum reg_class
secondary_reload_class (class, mode, in)
enum reg_class class;
enum machine_mode mode;
rtx in;
{
int regno = true_regnum (in);
if (regno >= FIRST_PSEUDO_REGISTER)
regno = -1;
/* We can place anything into GENERAL_REGS and can put GENERAL_REGS
into anything. */
if (class == GENERAL_REGS || (regno >= 0 && regno < 8))
return NO_REGS;
/* Constants, memory, and FP registers can go into FP registers. */
if ((regno == -1 || (regno >= 8 && regno < 16)) && (class == FLOAT_REGS))
return NO_REGS;
#if 0 /* This isn't strictly true (can't move fp to sp or vice versa),
so it's cleaner to use PREFERRED_RELOAD_CLASS
to make the right things happen. */
if (regno >= 16 && class == GEN_AND_MEM_REGS)
return NO_REGS;
#endif
/* Otherwise, we need GENERAL_REGS. */
return GENERAL_REGS;
}
/* Generate the rtx that comes from an address expression in the md file */
/* The expression to be build is BASE[INDEX:SCALE]. To recognize this,
scale must be converted from an exponent (from ASHIFT) to a
multiplier (for MULT). */
rtx
gen_indexed_expr (base, index, scale)
rtx base, index, scale;
{
rtx addr;
/* This generates an illegal addressing mode, if BASE is
fp or sp. This is handled by PRINT_OPERAND_ADDRESS. */
if (GET_CODE (base) != REG && GET_CODE (base) != CONST_INT)
base = gen_rtx (MEM, SImode, base);
addr = gen_rtx (MULT, SImode, index,
gen_rtx (CONST_INT, VOIDmode, 1 << INTVAL (scale)));
addr = gen_rtx (PLUS, SImode, base, addr);
return addr;
}
/* Return 1 if OP is a valid operand of mode MODE. This
predicate rejects operands which do not have a mode
(such as CONST_INT which are VOIDmode). */
int
reg_or_mem_operand (op, mode)
register rtx op;
enum machine_mode mode;
{
return (GET_MODE (op) == mode
&& (GET_CODE (op) == REG
|| GET_CODE (op) == SUBREG
|| GET_CODE (op) == MEM));
}
/* Return the best assembler insn template
for moving operands[1] into operands[0] as a fullword. */
static char *
singlemove_string (operands)
rtx *operands;
{
if (GET_CODE (operands[1]) == CONST_INT
&& INTVAL (operands[1]) <= 7
&& INTVAL (operands[1]) >= -8)
return "movqd %1,%0";
return "movd %1,%0";
}
char *
output_move_double (operands)
rtx *operands;
{
enum anon1 { REGOP, OFFSOP, POPOP, CNSTOP, RNDOP } optype0, optype1;
rtx latehalf[2];
/* First classify both operands. */
if (REG_P (operands[0]))
optype0 = REGOP;
else if (offsettable_memref_p (operands[0]))
optype0 = OFFSOP;
else if (GET_CODE (XEXP (operands[0], 0)) == PRE_DEC)
optype0 = POPOP;
else
optype0 = RNDOP;
if (REG_P (operands[1]))
optype1 = REGOP;
else if (CONSTANT_ADDRESS_P (operands[1])
|| GET_CODE (operands[1]) == CONST_DOUBLE)
optype1 = CNSTOP;
else if (offsettable_memref_p (operands[1]))
optype1 = OFFSOP;
else if (GET_CODE (XEXP (operands[1], 0)) == PRE_DEC)
optype1 = POPOP;
else
optype1 = RNDOP;
/* Check for the cases that the operand constraints are not
supposed to allow to happen. Abort if we get one,
because generating code for these cases is painful. */
if (optype0 == RNDOP || optype1 == RNDOP)
abort ();
/* Ok, we can do one word at a time.
Normally we do the low-numbered word first,
but if either operand is autodecrementing then we
do the high-numbered word first.
In either case, set up in LATEHALF the operands to use
for the high-numbered word and in some cases alter the
operands in OPERANDS to be suitable for the low-numbered word. */
if (optype0 == REGOP)
latehalf[0] = gen_rtx (REG, SImode, REGNO (operands[0]) + 1);
else if (optype0 == OFFSOP)
latehalf[0] = adj_offsettable_operand (operands[0], 4);
else
latehalf[0] = operands[0];
if (optype1 == REGOP)
latehalf[1] = gen_rtx (REG, SImode, REGNO (operands[1]) + 1);
else if (optype1 == OFFSOP)
latehalf[1] = adj_offsettable_operand (operands[1], 4);
else if (optype1 == CNSTOP)
{
if (CONSTANT_ADDRESS_P (operands[1]))
latehalf[1] = const0_rtx;
else if (GET_CODE (operands[1]) == CONST_DOUBLE)
split_double (operands[1], &operands[1], &latehalf[1]);
}
else
latehalf[1] = operands[1];
/* If one or both operands autodecrementing,
do the two words, high-numbered first. */
if (optype0 == POPOP || optype1 == POPOP)
{
output_asm_insn (singlemove_string (latehalf), latehalf);
return singlemove_string (operands);
}
/* Not autodecrementing. Do the two words, low-numbered first. */
output_asm_insn (singlemove_string (operands), operands);
operands[0] = latehalf[0];
operands[1] = latehalf[1];
return singlemove_string (operands);
}
int
check_reg (oper, reg)
rtx oper;
int reg;
{
register int i;
if (oper == 0)
return 0;
switch (GET_CODE(oper))
{
case REG:
return (REGNO(oper) == reg) ? 1 : 0;
case MEM:
return check_reg(XEXP(oper, 0), reg);
case PLUS:
case MULT:
return check_reg(XEXP(oper, 0), reg) || check_reg(XEXP(oper, 1), reg);
}
return 0;
}
/* PRINT_OPERAND is defined to call this function,
which is easier to debug than putting all the code in
a macro definition in ns32k.h. */
void
print_operand (file, x, code)
FILE *file;
rtx x;
char code;
{
if (code == '$')
PUT_IMMEDIATE_PREFIX (file);
else if (code == '?')
PUT_EXTERNAL_PREFIX (file);
else if (GET_CODE (x) == REG)
fprintf (file, "%s", reg_names[REGNO (x)]);
else if (GET_CODE (x) == MEM)
{
rtx tmp = XEXP (x, 0);
#if ! (defined (PC_RELATIVE) || defined (NO_ABSOLUTE_PREFIX_IF_SYMBOLIC))
if (GET_CODE (tmp) != CONST_INT)
{
char *out = XSTR (tmp, 0);
if (out[0] == '*')
{
PUT_ABSOLUTE_PREFIX (file);
fprintf (file, "%s", &out[1]);
}
else
ASM_OUTPUT_LABELREF (file, out);
}
else
#endif
output_address (XEXP (x, 0));
}
else if (GET_CODE (x) == CONST_DOUBLE && GET_MODE (x) != DImode)
{
if (GET_MODE (x) == DFmode)
{
union { double d; int i[2]; } u;
u.i[0] = CONST_DOUBLE_LOW (x); u.i[1] = CONST_DOUBLE_HIGH (x);
PUT_IMMEDIATE_PREFIX(file);
#ifdef SEQUENT_ASM
/* Sequent likes it's floating point constants as integers */
fprintf (file, "0Dx%08x%08x", u.i[1], u.i[0]);
#else
#ifdef ENCORE_ASM
fprintf (file, "0f%.20e", u.d);
#else
fprintf (file, "0d%.20e", u.d);
#endif
#endif
}
else
{
union { double d; int i[2]; } u;
u.i[0] = CONST_DOUBLE_LOW (x); u.i[1] = CONST_DOUBLE_HIGH (x);
PUT_IMMEDIATE_PREFIX (file);
#ifdef SEQUENT_ASM
/* We have no way of winning if we can't get the bits
for a sequent floating point number. */
#if HOST_FLOAT_FORMAT != TARGET_FLOAT_FORMAT
abort ();
#endif
{
union { float f; long l; } uu;
uu.f = u.d;
fprintf (file, "0Fx%08x", uu.l);
}
#else
fprintf (file, "0f%.20e", u.d);
#endif
}
}
else
{
#ifdef NO_IMMEDIATE_PREFIX_IF_SYMBOLIC
if (GET_CODE (x) == CONST_INT)
#endif
PUT_IMMEDIATE_PREFIX (file);
output_addr_const (file, x);
}
}
/* PRINT_OPERAND_ADDRESS is defined to call this function,
which is easier to debug than putting all the code in
a macro definition in ns32k.h . */
/* Completely rewritten to get this to work with Gas for PC532 Mach.
This function didn't work and I just wasn't able (nor very willing) to
figure out how it worked.
90-11-25 Tatu Yl|nen <ylo@cs.hut.fi> */
print_operand_address (file, addr)
register FILE *file;
register rtx addr;
{
static char scales[] = { 'b', 'w', 'd', 0, 'q', };
rtx offset, base, indexexp, tmp;
int scale;
if (GET_CODE (addr) == PRE_DEC || GET_CODE (addr) == POST_DEC)
{
fprintf (file, "tos");
return;
}
offset = NULL;
base = NULL;
indexexp = NULL;
while (addr != NULL)
{
if (GET_CODE (addr) == PLUS)
{
if (GET_CODE (XEXP (addr, 0)) == PLUS)
{
tmp = XEXP (addr, 1);
addr = XEXP (addr, 0);
}
else
{
tmp = XEXP (addr,0);
addr = XEXP (addr,1);
}
}
else
{
tmp = addr;
addr = NULL;
}
switch (GET_CODE (tmp))
{
case PLUS:
abort ();
case MEM:
if (base)
{
indexexp = base;
base = tmp;
}
else
base = tmp;
break;
case REG:
if (REGNO (tmp) < 8)
if (base)
{
indexexp = tmp;
}
else
base = tmp;
else
if (base)
{
indexexp = base;
base = tmp;
}
else
base = tmp;
break;
case MULT:
indexexp = tmp;
break;
case CONST:
case CONST_INT:
case SYMBOL_REF:
case LABEL_REF:
if (offset)
offset = gen_rtx (PLUS, SImode, tmp, offset);
else
offset = tmp;
break;
default:
abort ();
}
}
if (! offset)
offset = const0_rtx;
#ifdef INDEX_RATHER_THAN_BASE
/* This is a re-implementation of the SEQUENT_ADDRESS_BUG fix. */
if (base && !indexexp && GET_CODE (base) == REG
&& REG_OK_FOR_INDEX_P (base))
{
indexexp = base;
base = 0;
}
#endif
/* now, offset, base and indexexp are set */
if (! base)
{
#if defined (PC_RELATIVE) || defined (NO_ABSOLUTE_PREFIX_IF_SYMBOLIC)
if (GET_CODE (offset) == CONST_INT)
/* if (! (GET_CODE (offset) == LABEL_REF
|| GET_CODE (offset) == SYMBOL_REF)) */
#endif
PUT_ABSOLUTE_PREFIX (file);
}
output_addr_const (file, offset);
if (base) /* base can be (REG ...) or (MEM ...) */
switch (GET_CODE (base))
{
/* now we must output base. Possible alternatives are:
(rN) (REG ...)
(sp) (REG ...)
(fp) (REG ...)
(pc) (REG ...) used for SYMBOL_REF and LABEL_REF, output
(disp(fp)) (MEM ...) just before possible [rX:y]
(disp(sp)) (MEM ...)
(disp(sb)) (MEM ...)
*/
case REG:
fprintf (file, "(%s)", reg_names[REGNO (base)]);
break;
case MEM:
addr = XEXP(base,0);
base = NULL;
offset = NULL;
while (addr != NULL)
{
if (GET_CODE (addr) == PLUS)
{
if (GET_CODE (XEXP (addr, 0)) == PLUS)
{
tmp = XEXP (addr, 1);
addr = XEXP (addr, 0);
}
else
{
tmp = XEXP (addr, 0);
addr = XEXP (addr, 1);
}
}
else
{
tmp = addr;
addr = NULL;
}
switch (GET_CODE (tmp))
{
case REG:
base = tmp;
break;
case CONST:
case CONST_INT:
case SYMBOL_REF:
case LABEL_REF:
if (offset)
offset = gen_rtx (PLUS, SImode, tmp, offset);
else
offset = tmp;
break;
default:
abort ();
}
}
if (! offset)
offset = const0_rtx;
fprintf (file, "(");
output_addr_const (file, offset);
if (base)
fprintf (file, "(%s)", reg_names[REGNO (base)]);
#ifdef BASE_REG_NEEDED
else if (TARGET_SB)
fprintf (file, "(sb)");
else
abort ();
#endif
fprintf (file, ")");
break;
default:
abort ();
}
#ifdef PC_RELATIVE
else /* no base */
if (GET_CODE (offset) == LABEL_REF || GET_CODE (offset) == SYMBOL_REF)
fprintf (file, "(pc)");
#endif
#ifdef BASE_REG_NEEDED /* this is defined if the assembler always
needs a base register */
else if (TARGET_SB)
fprintf (file, "(sb)");
else
abort ();
#endif
/* now print index if we have one */
if (indexexp)
{
if (GET_CODE (indexexp) == MULT)
{
scale = INTVAL (XEXP (indexexp, 1)) >> 1;
indexexp = XEXP (indexexp, 0);
}
else
scale = 0;
if (GET_CODE (indexexp) != REG || REGNO (indexexp) >= 8)
abort ();
#ifdef UTEK_ASM
fprintf (file, "[%c`%s]",
scales[scale],
reg_names[REGNO (indexexp)]);
#else
fprintf (file, "[%s:%c]",
reg_names[REGNO (indexexp)],
scales[scale]);
#endif
}
}
/* National 32032 shifting is so bad that we can get
better performance in many common cases by using other
techniques. */
char *
output_shift_insn (operands)
rtx *operands;
{
if (GET_CODE (operands[2]) == CONST_INT
&& INTVAL (operands[2]) > 0
&& INTVAL (operands[2]) <= 3)
if (GET_CODE (operands[0]) == REG)
{
if (GET_CODE (operands[1]) == REG)
{
if (REGNO (operands[0]) == REGNO (operands[1]))
{
if (operands[2] == const1_rtx)
return "addd %0,%0";
else if (INTVAL (operands[2]) == 2)
return "addd %0,%0\n\taddd %0,%0";
}
if (operands[2] == const1_rtx)
return "movd %1,%0\n\taddd %0,%0";
operands[1] = gen_indexed_expr (const0_rtx, operands[1], operands[2]);
return "addr %a1,%0";
}
if (operands[2] == const1_rtx)
return "movd %1,%0\n\taddd %0,%0";
}
else if (GET_CODE (operands[1]) == REG)
{
operands[1] = gen_indexed_expr (const0_rtx, operands[1], operands[2]);
return "addr %a1,%0";
}
else if (INTVAL (operands[2]) == 1
&& GET_CODE (operands[1]) == MEM
&& rtx_equal_p (operands [0], operands[1]))
{
rtx temp = XEXP (operands[1], 0);
if (GET_CODE (temp) == REG
|| (GET_CODE (temp) == PLUS
&& GET_CODE (XEXP (temp, 0)) == REG
&& GET_CODE (XEXP (temp, 1)) == CONST_INT))
return "addd %0,%0";
}
else return "ashd %2,%0";
return "ashd %2,%0";
}

View File

@ -0,0 +1,46 @@
/* Configuration for GNU C-compiler for Vax.
Copyright (C) 1987 Free Software Foundation, Inc.
This file is part of GNU CC.
GNU CC is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 2, or (at your option)
any later version.
GNU CC is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with GNU CC; see the file COPYING. If not, write to
the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA. */
/* #defines that need visibility everywhere. */
#define FALSE 0
#define TRUE 1
/* target machine dependencies.
tm.h is a symbolic link to the actual target specific file. */
#include "tm.h"
/* This describes the machine the compiler is hosted on. */
#define HOST_BITS_PER_CHAR 8
#define HOST_BITS_PER_SHORT 16
#define HOST_BITS_PER_INT 32
#define HOST_BITS_PER_LONG 32
#define HOST_BITS_PER_LONGLONG 64
/* Arguments to use with `exit'. */
#define SUCCESS_EXIT_CODE 0
#define FATAL_EXIT_CODE 33
#define memcpy(src,dst,len) bcopy ((dst),(src),(len))
#define memset gcc_memset
#define memcmp(left,right,len) bcmp ((left),(right),(len))
/* If compiled with GNU C, use the built-in alloca */
#ifdef __GNUC__
#define alloca __builtin_alloca
#endif

View File

@ -0,0 +1,19 @@
/* Generated automatically by the program `genattr'
from the machine description file `md'. */
#ifndef PROTO
#if defined (USE_PROTOTYPES) ? USE_PROTOTYPES : defined (__STDC__)
#define PROTO(ARGS) ARGS
#else
#define PROTO(ARGS) ()
#endif
#endif
#define HAVE_ATTR_alternative
#define get_attr_alternative(insn) which_alternative
#define ATTR_FLAG_forward 0x1
#define ATTR_FLAG_backward 0x2
#define ATTR_FLAG_likely 0x4
#define ATTR_FLAG_very_likely 0x8
#define ATTR_FLAG_unlikely 0x10
#define ATTR_FLAG_very_unlikely 0x20

View File

@ -0,0 +1,14 @@
/* Generated automatically by the program `genattrtab'
from the machine description file `md'. */
#include "config.h"
#include "rtl.h"
#include "insn-config.h"
#include "recog.h"
#include "regs.h"
#include "real.h"
#include "output.h"
#include "insn-attr.h"
#define operands recog_operand

View File

@ -0,0 +1,165 @@
/* Generated automatically by the program `gencodes'
from the machine description file `md'. */
#ifndef MAX_INSN_CODE
enum insn_code {
CODE_FOR_tstsi = 0,
CODE_FOR_tsthi = 1,
CODE_FOR_tstqi = 2,
CODE_FOR_tstdf = 3,
CODE_FOR_tstsf = 4,
CODE_FOR_cmpsi = 5,
CODE_FOR_cmphi = 6,
CODE_FOR_cmpqi = 7,
CODE_FOR_cmpdf = 8,
CODE_FOR_cmpsf = 9,
CODE_FOR_movdf = 10,
CODE_FOR_movsf = 11,
CODE_FOR_movdi = 13,
CODE_FOR_movsi = 15,
CODE_FOR_movhi = 16,
CODE_FOR_movstricthi = 17,
CODE_FOR_movqi = 18,
CODE_FOR_movstrictqi = 19,
CODE_FOR_movstrsi = 20,
CODE_FOR_movstrsi1 = 21,
CODE_FOR_truncsiqi2 = 22,
CODE_FOR_truncsihi2 = 23,
CODE_FOR_trunchiqi2 = 24,
CODE_FOR_extendhisi2 = 25,
CODE_FOR_extendqihi2 = 26,
CODE_FOR_extendqisi2 = 27,
CODE_FOR_extendsfdf2 = 28,
CODE_FOR_truncdfsf2 = 29,
CODE_FOR_zero_extendhisi2 = 30,
CODE_FOR_zero_extendqihi2 = 31,
CODE_FOR_zero_extendqisi2 = 32,
CODE_FOR_floatsisf2 = 33,
CODE_FOR_floatsidf2 = 34,
CODE_FOR_floathisf2 = 35,
CODE_FOR_floathidf2 = 36,
CODE_FOR_floatqisf2 = 37,
CODE_FOR_fixsfqi2 = 38,
CODE_FOR_fixsfhi2 = 39,
CODE_FOR_fixsfsi2 = 40,
CODE_FOR_fixdfqi2 = 41,
CODE_FOR_fixdfhi2 = 42,
CODE_FOR_fixdfsi2 = 43,
CODE_FOR_fixunssfqi2 = 44,
CODE_FOR_fixunssfhi2 = 45,
CODE_FOR_fixunssfsi2 = 46,
CODE_FOR_fixunsdfqi2 = 47,
CODE_FOR_fixunsdfhi2 = 48,
CODE_FOR_fixunsdfsi2 = 49,
CODE_FOR_fix_truncsfqi2 = 50,
CODE_FOR_fix_truncsfhi2 = 51,
CODE_FOR_fix_truncsfsi2 = 52,
CODE_FOR_fix_truncdfqi2 = 53,
CODE_FOR_fix_truncdfhi2 = 54,
CODE_FOR_fix_truncdfsi2 = 55,
CODE_FOR_adddf3 = 56,
CODE_FOR_addsf3 = 57,
CODE_FOR_addsi3 = 61,
CODE_FOR_addhi3 = 62,
CODE_FOR_addqi3 = 64,
CODE_FOR_subdf3 = 66,
CODE_FOR_subsf3 = 67,
CODE_FOR_subsi3 = 69,
CODE_FOR_subhi3 = 70,
CODE_FOR_subqi3 = 72,
CODE_FOR_muldf3 = 74,
CODE_FOR_mulsf3 = 75,
CODE_FOR_mulsi3 = 76,
CODE_FOR_mulhi3 = 77,
CODE_FOR_mulqi3 = 78,
CODE_FOR_umulsidi3 = 79,
CODE_FOR_divdf3 = 80,
CODE_FOR_divsf3 = 81,
CODE_FOR_divsi3 = 82,
CODE_FOR_divhi3 = 83,
CODE_FOR_divqi3 = 84,
CODE_FOR_udivsi3 = 85,
CODE_FOR_udivhi3 = 86,
CODE_FOR_udivqi3 = 87,
CODE_FOR_modsi3 = 88,
CODE_FOR_modhi3 = 89,
CODE_FOR_modqi3 = 90,
CODE_FOR_umodsi3 = 91,
CODE_FOR_umodhi3 = 92,
CODE_FOR_umodqi3 = 93,
CODE_FOR_andsi3 = 94,
CODE_FOR_andhi3 = 95,
CODE_FOR_andqi3 = 96,
CODE_FOR_iorsi3 = 100,
CODE_FOR_iorhi3 = 101,
CODE_FOR_iorqi3 = 102,
CODE_FOR_xorsi3 = 103,
CODE_FOR_xorhi3 = 104,
CODE_FOR_xorqi3 = 105,
CODE_FOR_negdf2 = 106,
CODE_FOR_negsf2 = 107,
CODE_FOR_negsi2 = 108,
CODE_FOR_neghi2 = 109,
CODE_FOR_negqi2 = 110,
CODE_FOR_one_cmplsi2 = 111,
CODE_FOR_one_cmplhi2 = 112,
CODE_FOR_one_cmplqi2 = 113,
CODE_FOR_ashlsi3 = 114,
CODE_FOR_ashlhi3 = 115,
CODE_FOR_ashlqi3 = 116,
CODE_FOR_ashrsi3 = 117,
CODE_FOR_ashrhi3 = 120,
CODE_FOR_ashrqi3 = 123,
CODE_FOR_lshlsi3 = 126,
CODE_FOR_lshlhi3 = 127,
CODE_FOR_lshlqi3 = 128,
CODE_FOR_lshrsi3 = 129,
CODE_FOR_lshrhi3 = 132,
CODE_FOR_lshrqi3 = 135,
CODE_FOR_rotlsi3 = 138,
CODE_FOR_rotlhi3 = 139,
CODE_FOR_rotlqi3 = 140,
CODE_FOR_rotrsi3 = 141,
CODE_FOR_rotrhi3 = 144,
CODE_FOR_rotrqi3 = 147,
CODE_FOR_extzv = 158,
CODE_FOR_insv = 161,
CODE_FOR_jump = 162,
CODE_FOR_beq = 163,
CODE_FOR_bne = 164,
CODE_FOR_bgt = 165,
CODE_FOR_bgtu = 166,
CODE_FOR_blt = 167,
CODE_FOR_bltu = 168,
CODE_FOR_bge = 169,
CODE_FOR_bgeu = 170,
CODE_FOR_ble = 171,
CODE_FOR_bleu = 172,
CODE_FOR_call = 185,
CODE_FOR_call_value = 186,
CODE_FOR_untyped_call = 187,
CODE_FOR_blockage = 188,
CODE_FOR_return = 189,
CODE_FOR_abssf2 = 190,
CODE_FOR_absdf2 = 191,
CODE_FOR_abssi2 = 192,
CODE_FOR_abshi2 = 193,
CODE_FOR_absqi2 = 194,
CODE_FOR_nop = 195,
CODE_FOR_indirect_jump = 196,
CODE_FOR_tablejump = 197,
CODE_FOR_seq = 198,
CODE_FOR_sne = 201,
CODE_FOR_sgt = 204,
CODE_FOR_sgtu = 207,
CODE_FOR_slt = 210,
CODE_FOR_sltu = 213,
CODE_FOR_sge = 216,
CODE_FOR_sgeu = 219,
CODE_FOR_sle = 222,
CODE_FOR_sleu = 225,
CODE_FOR_nothing };
#define MAX_INSN_CODE ((int) CODE_FOR_nothing)
#endif /* MAX_INSN_CODE */

View File

@ -0,0 +1,12 @@
/* Generated automatically by the program `genconfig'
from the machine description file `md'. */
#define MAX_RECOG_OPERANDS 10
#define MAX_DUP_OPERANDS 3
#ifndef MAX_INSNS_PER_SPLIT
#define MAX_INSNS_PER_SPLIT 1
#endif
#define REGISTER_CONSTRAINTS
#define HAVE_cc0

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,381 @@
/* Generated automatically by the program `genextract'
from the machine description file `md'. */
#include "config.h"
#include "rtl.h"
static rtx junk;
extern rtx recog_operand[];
extern rtx *recog_operand_loc[];
extern rtx *recog_dup_loc[];
extern char recog_dup_num[];
extern
#ifdef __GNUC__
__volatile__
#endif
void fatal_insn_not_found ();
void
insn_extract (insn)
rtx insn;
{
register rtx *ro = recog_operand;
register rtx **ro_loc = recog_operand_loc;
rtx pat = PATTERN (insn);
switch (INSN_CODE (insn))
{
case -1:
fatal_insn_not_found (insn);
case 227:
case 226:
case 225:
case 224:
case 223:
case 222:
case 221:
case 220:
case 219:
case 218:
case 217:
case 216:
case 215:
case 214:
case 213:
case 212:
case 211:
case 210:
case 209:
case 208:
case 207:
case 206:
case 205:
case 204:
case 203:
case 202:
case 201:
case 200:
case 199:
case 198:
ro[0] = *(ro_loc[0] = &XEXP (pat, 0));
break;
case 197:
ro[0] = *(ro_loc[0] = &XEXP (XEXP (XVECEXP (pat, 0, 0), 1), 1));
ro[1] = *(ro_loc[1] = &XEXP (XEXP (XVECEXP (pat, 0, 1), 0), 0));
break;
case 195:
case 189:
case 188:
break;
case 184:
ro[0] = *(ro_loc[0] = &XEXP (XEXP (XEXP (XVECEXP (pat, 0, 0), 1), 0), 0));
ro[1] = *(ro_loc[1] = &XEXP (XEXP (XEXP (XVECEXP (pat, 0, 0), 1), 0), 1));
ro[2] = *(ro_loc[2] = &XEXP (XEXP (XEXP (XVECEXP (pat, 0, 0), 1), 1), 0));
ro[3] = *(ro_loc[3] = &XEXP (XEXP (XVECEXP (pat, 0, 1), 1), 1));
recog_dup_loc[0] = &XEXP (XVECEXP (pat, 0, 1), 0);
recog_dup_num[0] = 0;
recog_dup_loc[1] = &XEXP (XEXP (XVECEXP (pat, 0, 1), 1), 0);
recog_dup_num[1] = 0;
break;
case 183:
ro[0] = *(ro_loc[0] = &XEXP (XEXP (XEXP (XVECEXP (pat, 0, 0), 1), 0), 0));
ro[1] = *(ro_loc[1] = &XEXP (XEXP (XEXP (XVECEXP (pat, 0, 0), 1), 0), 1));
ro[2] = *(ro_loc[2] = &XEXP (XEXP (XEXP (XVECEXP (pat, 0, 0), 1), 1), 0));
recog_dup_loc[0] = &XEXP (XVECEXP (pat, 0, 1), 0);
recog_dup_num[0] = 0;
recog_dup_loc[1] = &XEXP (XEXP (XVECEXP (pat, 0, 1), 1), 0);
recog_dup_num[1] = 0;
recog_dup_loc[2] = &XEXP (XEXP (XVECEXP (pat, 0, 1), 1), 1);
recog_dup_num[2] = 1;
break;
case 182:
case 181:
case 180:
case 179:
case 178:
case 177:
case 176:
case 175:
case 174:
case 173:
ro[0] = *(ro_loc[0] = &XEXP (XEXP (XEXP (pat, 1), 2), 0));
break;
case 172:
case 171:
case 170:
case 169:
case 168:
case 167:
case 166:
case 165:
case 164:
case 163:
ro[0] = *(ro_loc[0] = &XEXP (XEXP (XEXP (pat, 1), 1), 0));
break;
case 162:
ro[0] = *(ro_loc[0] = &XEXP (XEXP (pat, 1), 0));
break;
case 161:
case 160:
case 159:
ro[0] = *(ro_loc[0] = &XEXP (XEXP (pat, 0), 0));
ro[1] = *(ro_loc[1] = &XEXP (XEXP (pat, 0), 1));
ro[2] = *(ro_loc[2] = &XEXP (XEXP (pat, 0), 2));
ro[3] = *(ro_loc[3] = &XEXP (pat, 1));
break;
case 158:
case 157:
case 156:
ro[0] = *(ro_loc[0] = &XEXP (pat, 0));
ro[1] = *(ro_loc[1] = &XEXP (XEXP (pat, 1), 0));
ro[2] = *(ro_loc[2] = &XEXP (XEXP (pat, 1), 1));
ro[3] = *(ro_loc[3] = &XEXP (XEXP (pat, 1), 2));
break;
case 155:
ro[0] = *(ro_loc[0] = &XEXP (XEXP (pat, 1), 0));
ro[1] = *(ro_loc[1] = &XEXP (XEXP (pat, 1), 2));
break;
case 154:
ro[0] = *(ro_loc[0] = &XEXP (pat, 0));
ro[1] = *(ro_loc[1] = &XEXP (XEXP (XEXP (XEXP (pat, 1), 0), 0), 1));
recog_dup_loc[0] = &XEXP (XEXP (pat, 1), 1);
recog_dup_num[0] = 0;
break;
case 153:
ro[0] = *(ro_loc[0] = &XEXP (pat, 0));
ro[1] = *(ro_loc[1] = &XEXP (XEXP (XEXP (pat, 1), 0), 1));
recog_dup_loc[0] = &XEXP (XEXP (pat, 1), 1);
recog_dup_num[0] = 0;
break;
case 152:
case 151:
ro[0] = *(ro_loc[0] = &XEXP (XEXP (pat, 0), 0));
ro[1] = *(ro_loc[1] = &XEXP (XEXP (pat, 0), 2));
break;
case 149:
case 146:
case 143:
case 137:
case 134:
case 131:
case 125:
case 122:
case 119:
ro[0] = *(ro_loc[0] = &XEXP (pat, 0));
ro[1] = *(ro_loc[1] = &XEXP (XEXP (pat, 1), 0));
ro[2] = *(ro_loc[2] = &XEXP (XEXP (XEXP (pat, 1), 1), 0));
break;
case 99:
case 98:
case 97:
case 93:
case 92:
case 91:
case 87:
case 86:
case 85:
ro[0] = *(ro_loc[0] = &XEXP (pat, 0));
ro[1] = *(ro_loc[1] = &XEXP (XEXP (XEXP (pat, 1), 0), 0));
ro[2] = *(ro_loc[2] = &XEXP (XEXP (pat, 1), 1));
break;
case 79:
ro[0] = *(ro_loc[0] = &XEXP (pat, 0));
ro[1] = *(ro_loc[1] = &XEXP (XEXP (XEXP (pat, 1), 0), 0));
ro[2] = *(ro_loc[2] = &XEXP (XEXP (XEXP (pat, 1), 1), 0));
break;
case 73:
case 71:
case 65:
case 63:
ro[0] = *(ro_loc[0] = &XEXP (XEXP (pat, 0), 0));
ro[1] = *(ro_loc[1] = &XEXP (XEXP (pat, 1), 0));
ro[2] = *(ro_loc[2] = &XEXP (XEXP (pat, 1), 1));
break;
case 60:
case 59:
ro[0] = *(ro_loc[0] = &XEXP (pat, 0));
ro[1] = *(ro_loc[1] = &XEXP (XEXP (pat, 1), 1));
break;
case 68:
case 58:
ro[0] = *(ro_loc[0] = &XEXP (XEXP (pat, 1), 1));
break;
case 186:
case 148:
case 145:
case 142:
case 140:
case 139:
case 138:
case 136:
case 133:
case 130:
case 128:
case 127:
case 126:
case 124:
case 121:
case 118:
case 116:
case 115:
case 114:
case 105:
case 104:
case 103:
case 102:
case 101:
case 100:
case 96:
case 95:
case 94:
case 90:
case 89:
case 88:
case 84:
case 83:
case 82:
case 81:
case 80:
case 78:
case 77:
case 76:
case 75:
case 74:
case 72:
case 70:
case 69:
case 67:
case 66:
case 64:
case 62:
case 61:
case 57:
case 56:
ro[0] = *(ro_loc[0] = &XEXP (pat, 0));
ro[1] = *(ro_loc[1] = &XEXP (XEXP (pat, 1), 0));
ro[2] = *(ro_loc[2] = &XEXP (XEXP (pat, 1), 1));
break;
case 49:
case 48:
case 47:
case 46:
case 45:
case 44:
case 43:
case 42:
case 41:
case 40:
case 39:
case 38:
ro[0] = *(ro_loc[0] = &XEXP (pat, 0));
ro[1] = *(ro_loc[1] = &XEXP (XEXP (XEXP (pat, 1), 0), 0));
break;
case 194:
case 193:
case 192:
case 191:
case 190:
case 113:
case 112:
case 111:
case 110:
case 109:
case 108:
case 107:
case 106:
case 55:
case 54:
case 53:
case 52:
case 51:
case 50:
case 37:
case 36:
case 35:
case 34:
case 33:
case 32:
case 31:
case 30:
case 29:
case 28:
case 27:
case 26:
case 25:
case 24:
case 23:
case 22:
ro[0] = *(ro_loc[0] = &XEXP (pat, 0));
ro[1] = *(ro_loc[1] = &XEXP (XEXP (pat, 1), 0));
break;
case 21:
ro[0] = *(ro_loc[0] = &XEXP (XVECEXP (pat, 0, 0), 0));
ro[1] = *(ro_loc[1] = &XEXP (XVECEXP (pat, 0, 0), 1));
ro[2] = *(ro_loc[2] = &XEXP (XVECEXP (pat, 0, 1), 0));
break;
case 19:
case 17:
ro[0] = *(ro_loc[0] = &XEXP (XEXP (pat, 0), 0));
ro[1] = *(ro_loc[1] = &XEXP (pat, 1));
break;
case 185:
case 150:
case 18:
case 16:
case 15:
case 13:
case 12:
case 11:
case 10:
ro[0] = *(ro_loc[0] = &XEXP (pat, 0));
ro[1] = *(ro_loc[1] = &XEXP (pat, 1));
break;
case 9:
case 8:
case 7:
case 6:
case 5:
ro[0] = *(ro_loc[0] = &XEXP (XEXP (pat, 1), 0));
ro[1] = *(ro_loc[1] = &XEXP (XEXP (pat, 1), 1));
break;
case 196:
case 14:
case 4:
case 3:
case 2:
case 1:
case 0:
ro[0] = *(ro_loc[0] = &XEXP (pat, 1));
break;
default:
abort ();
}
}

View File

@ -0,0 +1,480 @@
/* Generated automatically by the program `genflags'
from the machine description file `md'. */
#define HAVE_tstsi 1
#define HAVE_tsthi 1
#define HAVE_tstqi 1
#define HAVE_tstdf (TARGET_32081)
#define HAVE_tstsf (TARGET_32081)
#define HAVE_cmpsi 1
#define HAVE_cmphi 1
#define HAVE_cmpqi 1
#define HAVE_cmpdf (TARGET_32081)
#define HAVE_cmpsf (TARGET_32081)
#define HAVE_movdf 1
#define HAVE_movsf 1
#define HAVE_movdi 1
#define HAVE_movsi 1
#define HAVE_movhi 1
#define HAVE_movstricthi 1
#define HAVE_movqi 1
#define HAVE_movstrictqi 1
#define HAVE_movstrsi 1
#define HAVE_movstrsi1 1
#define HAVE_truncsiqi2 1
#define HAVE_truncsihi2 1
#define HAVE_trunchiqi2 1
#define HAVE_extendhisi2 1
#define HAVE_extendqihi2 1
#define HAVE_extendqisi2 1
#define HAVE_extendsfdf2 (TARGET_32081)
#define HAVE_truncdfsf2 (TARGET_32081)
#define HAVE_zero_extendhisi2 1
#define HAVE_zero_extendqihi2 1
#define HAVE_zero_extendqisi2 1
#define HAVE_floatsisf2 (TARGET_32081)
#define HAVE_floatsidf2 (TARGET_32081)
#define HAVE_floathisf2 (TARGET_32081)
#define HAVE_floathidf2 (TARGET_32081)
#define HAVE_floatqisf2 (TARGET_32081)
#define HAVE_fixsfqi2 (TARGET_32081)
#define HAVE_fixsfhi2 (TARGET_32081)
#define HAVE_fixsfsi2 (TARGET_32081)
#define HAVE_fixdfqi2 (TARGET_32081)
#define HAVE_fixdfhi2 (TARGET_32081)
#define HAVE_fixdfsi2 (TARGET_32081)
#define HAVE_fixunssfqi2 (TARGET_32081)
#define HAVE_fixunssfhi2 (TARGET_32081)
#define HAVE_fixunssfsi2 (TARGET_32081)
#define HAVE_fixunsdfqi2 (TARGET_32081)
#define HAVE_fixunsdfhi2 (TARGET_32081)
#define HAVE_fixunsdfsi2 (TARGET_32081)
#define HAVE_fix_truncsfqi2 (TARGET_32081)
#define HAVE_fix_truncsfhi2 (TARGET_32081)
#define HAVE_fix_truncsfsi2 (TARGET_32081)
#define HAVE_fix_truncdfqi2 (TARGET_32081)
#define HAVE_fix_truncdfhi2 (TARGET_32081)
#define HAVE_fix_truncdfsi2 (TARGET_32081)
#define HAVE_adddf3 (TARGET_32081)
#define HAVE_addsf3 (TARGET_32081)
#define HAVE_addsi3 1
#define HAVE_addhi3 1
#define HAVE_addqi3 1
#define HAVE_subdf3 (TARGET_32081)
#define HAVE_subsf3 (TARGET_32081)
#define HAVE_subsi3 1
#define HAVE_subhi3 1
#define HAVE_subqi3 1
#define HAVE_muldf3 (TARGET_32081)
#define HAVE_mulsf3 (TARGET_32081)
#define HAVE_mulsi3 1
#define HAVE_mulhi3 1
#define HAVE_mulqi3 1
#define HAVE_umulsidi3 1
#define HAVE_divdf3 (TARGET_32081)
#define HAVE_divsf3 (TARGET_32081)
#define HAVE_divsi3 1
#define HAVE_divhi3 1
#define HAVE_divqi3 1
#define HAVE_udivsi3 1
#define HAVE_udivhi3 1
#define HAVE_udivqi3 1
#define HAVE_modsi3 1
#define HAVE_modhi3 1
#define HAVE_modqi3 1
#define HAVE_umodsi3 1
#define HAVE_umodhi3 1
#define HAVE_umodqi3 1
#define HAVE_andsi3 1
#define HAVE_andhi3 1
#define HAVE_andqi3 1
#define HAVE_iorsi3 1
#define HAVE_iorhi3 1
#define HAVE_iorqi3 1
#define HAVE_xorsi3 1
#define HAVE_xorhi3 1
#define HAVE_xorqi3 1
#define HAVE_negdf2 (TARGET_32081)
#define HAVE_negsf2 (TARGET_32081)
#define HAVE_negsi2 1
#define HAVE_neghi2 1
#define HAVE_negqi2 1
#define HAVE_one_cmplsi2 1
#define HAVE_one_cmplhi2 1
#define HAVE_one_cmplqi2 1
#define HAVE_ashlsi3 1
#define HAVE_ashlhi3 1
#define HAVE_ashlqi3 1
#define HAVE_ashrsi3 1
#define HAVE_ashrhi3 1
#define HAVE_ashrqi3 1
#define HAVE_lshlsi3 1
#define HAVE_lshlhi3 1
#define HAVE_lshlqi3 1
#define HAVE_lshrsi3 1
#define HAVE_lshrhi3 1
#define HAVE_lshrqi3 1
#define HAVE_rotlsi3 1
#define HAVE_rotlhi3 1
#define HAVE_rotlqi3 1
#define HAVE_rotrsi3 1
#define HAVE_rotrhi3 1
#define HAVE_rotrqi3 1
#define HAVE_extzv 1
#define HAVE_insv 1
#define HAVE_jump 1
#define HAVE_beq 1
#define HAVE_bne 1
#define HAVE_bgt 1
#define HAVE_bgtu 1
#define HAVE_blt 1
#define HAVE_bltu 1
#define HAVE_bge 1
#define HAVE_bgeu 1
#define HAVE_ble 1
#define HAVE_bleu 1
#define HAVE_call 1
#define HAVE_call_value 1
#define HAVE_untyped_call 1
#define HAVE_blockage 1
#define HAVE_return (0)
#define HAVE_abssf2 (TARGET_32081)
#define HAVE_absdf2 (TARGET_32081)
#define HAVE_abssi2 1
#define HAVE_abshi2 1
#define HAVE_absqi2 1
#define HAVE_nop 1
#define HAVE_indirect_jump 1
#define HAVE_tablejump 1
#define HAVE_seq 1
#define HAVE_sne 1
#define HAVE_sgt 1
#define HAVE_sgtu 1
#define HAVE_slt 1
#define HAVE_sltu 1
#define HAVE_sge 1
#define HAVE_sgeu 1
#define HAVE_sle 1
#define HAVE_sleu 1
#ifndef NO_MD_PROTOTYPES
extern rtx gen_tstsi PROTO((rtx));
extern rtx gen_tsthi PROTO((rtx));
extern rtx gen_tstqi PROTO((rtx));
extern rtx gen_tstdf PROTO((rtx));
extern rtx gen_tstsf PROTO((rtx));
extern rtx gen_cmpsi PROTO((rtx, rtx));
extern rtx gen_cmphi PROTO((rtx, rtx));
extern rtx gen_cmpqi PROTO((rtx, rtx));
extern rtx gen_cmpdf PROTO((rtx, rtx));
extern rtx gen_cmpsf PROTO((rtx, rtx));
extern rtx gen_movdf PROTO((rtx, rtx));
extern rtx gen_movsf PROTO((rtx, rtx));
extern rtx gen_movdi PROTO((rtx, rtx));
extern rtx gen_movsi PROTO((rtx, rtx));
extern rtx gen_movhi PROTO((rtx, rtx));
extern rtx gen_movstricthi PROTO((rtx, rtx));
extern rtx gen_movqi PROTO((rtx, rtx));
extern rtx gen_movstrictqi PROTO((rtx, rtx));
extern rtx gen_movstrsi PROTO((rtx, rtx, rtx, rtx));
extern rtx gen_movstrsi1 PROTO((rtx, rtx, rtx));
extern rtx gen_truncsiqi2 PROTO((rtx, rtx));
extern rtx gen_truncsihi2 PROTO((rtx, rtx));
extern rtx gen_trunchiqi2 PROTO((rtx, rtx));
extern rtx gen_extendhisi2 PROTO((rtx, rtx));
extern rtx gen_extendqihi2 PROTO((rtx, rtx));
extern rtx gen_extendqisi2 PROTO((rtx, rtx));
extern rtx gen_extendsfdf2 PROTO((rtx, rtx));
extern rtx gen_truncdfsf2 PROTO((rtx, rtx));
extern rtx gen_zero_extendhisi2 PROTO((rtx, rtx));
extern rtx gen_zero_extendqihi2 PROTO((rtx, rtx));
extern rtx gen_zero_extendqisi2 PROTO((rtx, rtx));
extern rtx gen_floatsisf2 PROTO((rtx, rtx));
extern rtx gen_floatsidf2 PROTO((rtx, rtx));
extern rtx gen_floathisf2 PROTO((rtx, rtx));
extern rtx gen_floathidf2 PROTO((rtx, rtx));
extern rtx gen_floatqisf2 PROTO((rtx, rtx));
extern rtx gen_fixsfqi2 PROTO((rtx, rtx));
extern rtx gen_fixsfhi2 PROTO((rtx, rtx));
extern rtx gen_fixsfsi2 PROTO((rtx, rtx));
extern rtx gen_fixdfqi2 PROTO((rtx, rtx));
extern rtx gen_fixdfhi2 PROTO((rtx, rtx));
extern rtx gen_fixdfsi2 PROTO((rtx, rtx));
extern rtx gen_fixunssfqi2 PROTO((rtx, rtx));
extern rtx gen_fixunssfhi2 PROTO((rtx, rtx));
extern rtx gen_fixunssfsi2 PROTO((rtx, rtx));
extern rtx gen_fixunsdfqi2 PROTO((rtx, rtx));
extern rtx gen_fixunsdfhi2 PROTO((rtx, rtx));
extern rtx gen_fixunsdfsi2 PROTO((rtx, rtx));
extern rtx gen_fix_truncsfqi2 PROTO((rtx, rtx));
extern rtx gen_fix_truncsfhi2 PROTO((rtx, rtx));
extern rtx gen_fix_truncsfsi2 PROTO((rtx, rtx));
extern rtx gen_fix_truncdfqi2 PROTO((rtx, rtx));
extern rtx gen_fix_truncdfhi2 PROTO((rtx, rtx));
extern rtx gen_fix_truncdfsi2 PROTO((rtx, rtx));
extern rtx gen_adddf3 PROTO((rtx, rtx, rtx));
extern rtx gen_addsf3 PROTO((rtx, rtx, rtx));
extern rtx gen_addsi3 PROTO((rtx, rtx, rtx));
extern rtx gen_addhi3 PROTO((rtx, rtx, rtx));
extern rtx gen_addqi3 PROTO((rtx, rtx, rtx));
extern rtx gen_subdf3 PROTO((rtx, rtx, rtx));
extern rtx gen_subsf3 PROTO((rtx, rtx, rtx));
extern rtx gen_subsi3 PROTO((rtx, rtx, rtx));
extern rtx gen_subhi3 PROTO((rtx, rtx, rtx));
extern rtx gen_subqi3 PROTO((rtx, rtx, rtx));
extern rtx gen_muldf3 PROTO((rtx, rtx, rtx));
extern rtx gen_mulsf3 PROTO((rtx, rtx, rtx));
extern rtx gen_mulsi3 PROTO((rtx, rtx, rtx));
extern rtx gen_mulhi3 PROTO((rtx, rtx, rtx));
extern rtx gen_mulqi3 PROTO((rtx, rtx, rtx));
extern rtx gen_umulsidi3 PROTO((rtx, rtx, rtx));
extern rtx gen_divdf3 PROTO((rtx, rtx, rtx));
extern rtx gen_divsf3 PROTO((rtx, rtx, rtx));
extern rtx gen_divsi3 PROTO((rtx, rtx, rtx));
extern rtx gen_divhi3 PROTO((rtx, rtx, rtx));
extern rtx gen_divqi3 PROTO((rtx, rtx, rtx));
extern rtx gen_udivsi3 PROTO((rtx, rtx, rtx));
extern rtx gen_udivhi3 PROTO((rtx, rtx, rtx));
extern rtx gen_udivqi3 PROTO((rtx, rtx, rtx));
extern rtx gen_modsi3 PROTO((rtx, rtx, rtx));
extern rtx gen_modhi3 PROTO((rtx, rtx, rtx));
extern rtx gen_modqi3 PROTO((rtx, rtx, rtx));
extern rtx gen_umodsi3 PROTO((rtx, rtx, rtx));
extern rtx gen_umodhi3 PROTO((rtx, rtx, rtx));
extern rtx gen_umodqi3 PROTO((rtx, rtx, rtx));
extern rtx gen_andsi3 PROTO((rtx, rtx, rtx));
extern rtx gen_andhi3 PROTO((rtx, rtx, rtx));
extern rtx gen_andqi3 PROTO((rtx, rtx, rtx));
extern rtx gen_iorsi3 PROTO((rtx, rtx, rtx));
extern rtx gen_iorhi3 PROTO((rtx, rtx, rtx));
extern rtx gen_iorqi3 PROTO((rtx, rtx, rtx));
extern rtx gen_xorsi3 PROTO((rtx, rtx, rtx));
extern rtx gen_xorhi3 PROTO((rtx, rtx, rtx));
extern rtx gen_xorqi3 PROTO((rtx, rtx, rtx));
extern rtx gen_negdf2 PROTO((rtx, rtx));
extern rtx gen_negsf2 PROTO((rtx, rtx));
extern rtx gen_negsi2 PROTO((rtx, rtx));
extern rtx gen_neghi2 PROTO((rtx, rtx));
extern rtx gen_negqi2 PROTO((rtx, rtx));
extern rtx gen_one_cmplsi2 PROTO((rtx, rtx));
extern rtx gen_one_cmplhi2 PROTO((rtx, rtx));
extern rtx gen_one_cmplqi2 PROTO((rtx, rtx));
extern rtx gen_ashlsi3 PROTO((rtx, rtx, rtx));
extern rtx gen_ashlhi3 PROTO((rtx, rtx, rtx));
extern rtx gen_ashlqi3 PROTO((rtx, rtx, rtx));
extern rtx gen_ashrsi3 PROTO((rtx, rtx, rtx));
extern rtx gen_ashrhi3 PROTO((rtx, rtx, rtx));
extern rtx gen_ashrqi3 PROTO((rtx, rtx, rtx));
extern rtx gen_lshlsi3 PROTO((rtx, rtx, rtx));
extern rtx gen_lshlhi3 PROTO((rtx, rtx, rtx));
extern rtx gen_lshlqi3 PROTO((rtx, rtx, rtx));
extern rtx gen_lshrsi3 PROTO((rtx, rtx, rtx));
extern rtx gen_lshrhi3 PROTO((rtx, rtx, rtx));
extern rtx gen_lshrqi3 PROTO((rtx, rtx, rtx));
extern rtx gen_rotlsi3 PROTO((rtx, rtx, rtx));
extern rtx gen_rotlhi3 PROTO((rtx, rtx, rtx));
extern rtx gen_rotlqi3 PROTO((rtx, rtx, rtx));
extern rtx gen_rotrsi3 PROTO((rtx, rtx, rtx));
extern rtx gen_rotrhi3 PROTO((rtx, rtx, rtx));
extern rtx gen_rotrqi3 PROTO((rtx, rtx, rtx));
extern rtx gen_extzv PROTO((rtx, rtx, rtx, rtx));
extern rtx gen_insv PROTO((rtx, rtx, rtx, rtx));
extern rtx gen_jump PROTO((rtx));
extern rtx gen_beq PROTO((rtx));
extern rtx gen_bne PROTO((rtx));
extern rtx gen_bgt PROTO((rtx));
extern rtx gen_bgtu PROTO((rtx));
extern rtx gen_blt PROTO((rtx));
extern rtx gen_bltu PROTO((rtx));
extern rtx gen_bge PROTO((rtx));
extern rtx gen_bgeu PROTO((rtx));
extern rtx gen_ble PROTO((rtx));
extern rtx gen_bleu PROTO((rtx));
extern rtx gen_untyped_call PROTO((rtx, rtx, rtx));
extern rtx gen_blockage PROTO((void));
extern rtx gen_return PROTO((void));
extern rtx gen_abssf2 PROTO((rtx, rtx));
extern rtx gen_absdf2 PROTO((rtx, rtx));
extern rtx gen_abssi2 PROTO((rtx, rtx));
extern rtx gen_abshi2 PROTO((rtx, rtx));
extern rtx gen_absqi2 PROTO((rtx, rtx));
extern rtx gen_nop PROTO((void));
extern rtx gen_indirect_jump PROTO((rtx));
extern rtx gen_tablejump PROTO((rtx, rtx));
extern rtx gen_seq PROTO((rtx));
extern rtx gen_sne PROTO((rtx));
extern rtx gen_sgt PROTO((rtx));
extern rtx gen_sgtu PROTO((rtx));
extern rtx gen_slt PROTO((rtx));
extern rtx gen_sltu PROTO((rtx));
extern rtx gen_sge PROTO((rtx));
extern rtx gen_sgeu PROTO((rtx));
extern rtx gen_sle PROTO((rtx));
extern rtx gen_sleu PROTO((rtx));
#ifdef MD_CALL_PROTOTYPES
extern rtx gen_call PROTO((rtx, rtx));
extern rtx gen_call_value PROTO((rtx, rtx, rtx));
#else /* !MD_CALL_PROTOTYPES */
extern rtx gen_call ();
extern rtx gen_call_value ();
#endif /* !MD_CALL_PROTOTYPES */
#else /* NO_MD_PROTOTYPES */
extern rtx gen_tstsi ();
extern rtx gen_tsthi ();
extern rtx gen_tstqi ();
extern rtx gen_tstdf ();
extern rtx gen_tstsf ();
extern rtx gen_cmpsi ();
extern rtx gen_cmphi ();
extern rtx gen_cmpqi ();
extern rtx gen_cmpdf ();
extern rtx gen_cmpsf ();
extern rtx gen_movdf ();
extern rtx gen_movsf ();
extern rtx gen_movdi ();
extern rtx gen_movsi ();
extern rtx gen_movhi ();
extern rtx gen_movstricthi ();
extern rtx gen_movqi ();
extern rtx gen_movstrictqi ();
extern rtx gen_movstrsi ();
extern rtx gen_movstrsi1 ();
extern rtx gen_truncsiqi2 ();
extern rtx gen_truncsihi2 ();
extern rtx gen_trunchiqi2 ();
extern rtx gen_extendhisi2 ();
extern rtx gen_extendqihi2 ();
extern rtx gen_extendqisi2 ();
extern rtx gen_extendsfdf2 ();
extern rtx gen_truncdfsf2 ();
extern rtx gen_zero_extendhisi2 ();
extern rtx gen_zero_extendqihi2 ();
extern rtx gen_zero_extendqisi2 ();
extern rtx gen_floatsisf2 ();
extern rtx gen_floatsidf2 ();
extern rtx gen_floathisf2 ();
extern rtx gen_floathidf2 ();
extern rtx gen_floatqisf2 ();
extern rtx gen_fixsfqi2 ();
extern rtx gen_fixsfhi2 ();
extern rtx gen_fixsfsi2 ();
extern rtx gen_fixdfqi2 ();
extern rtx gen_fixdfhi2 ();
extern rtx gen_fixdfsi2 ();
extern rtx gen_fixunssfqi2 ();
extern rtx gen_fixunssfhi2 ();
extern rtx gen_fixunssfsi2 ();
extern rtx gen_fixunsdfqi2 ();
extern rtx gen_fixunsdfhi2 ();
extern rtx gen_fixunsdfsi2 ();
extern rtx gen_fix_truncsfqi2 ();
extern rtx gen_fix_truncsfhi2 ();
extern rtx gen_fix_truncsfsi2 ();
extern rtx gen_fix_truncdfqi2 ();
extern rtx gen_fix_truncdfhi2 ();
extern rtx gen_fix_truncdfsi2 ();
extern rtx gen_adddf3 ();
extern rtx gen_addsf3 ();
extern rtx gen_addsi3 ();
extern rtx gen_addhi3 ();
extern rtx gen_addqi3 ();
extern rtx gen_subdf3 ();
extern rtx gen_subsf3 ();
extern rtx gen_subsi3 ();
extern rtx gen_subhi3 ();
extern rtx gen_subqi3 ();
extern rtx gen_muldf3 ();
extern rtx gen_mulsf3 ();
extern rtx gen_mulsi3 ();
extern rtx gen_mulhi3 ();
extern rtx gen_mulqi3 ();
extern rtx gen_umulsidi3 ();
extern rtx gen_divdf3 ();
extern rtx gen_divsf3 ();
extern rtx gen_divsi3 ();
extern rtx gen_divhi3 ();
extern rtx gen_divqi3 ();
extern rtx gen_udivsi3 ();
extern rtx gen_udivhi3 ();
extern rtx gen_udivqi3 ();
extern rtx gen_modsi3 ();
extern rtx gen_modhi3 ();
extern rtx gen_modqi3 ();
extern rtx gen_umodsi3 ();
extern rtx gen_umodhi3 ();
extern rtx gen_umodqi3 ();
extern rtx gen_andsi3 ();
extern rtx gen_andhi3 ();
extern rtx gen_andqi3 ();
extern rtx gen_iorsi3 ();
extern rtx gen_iorhi3 ();
extern rtx gen_iorqi3 ();
extern rtx gen_xorsi3 ();
extern rtx gen_xorhi3 ();
extern rtx gen_xorqi3 ();
extern rtx gen_negdf2 ();
extern rtx gen_negsf2 ();
extern rtx gen_negsi2 ();
extern rtx gen_neghi2 ();
extern rtx gen_negqi2 ();
extern rtx gen_one_cmplsi2 ();
extern rtx gen_one_cmplhi2 ();
extern rtx gen_one_cmplqi2 ();
extern rtx gen_ashlsi3 ();
extern rtx gen_ashlhi3 ();
extern rtx gen_ashlqi3 ();
extern rtx gen_ashrsi3 ();
extern rtx gen_ashrhi3 ();
extern rtx gen_ashrqi3 ();
extern rtx gen_lshlsi3 ();
extern rtx gen_lshlhi3 ();
extern rtx gen_lshlqi3 ();
extern rtx gen_lshrsi3 ();
extern rtx gen_lshrhi3 ();
extern rtx gen_lshrqi3 ();
extern rtx gen_rotlsi3 ();
extern rtx gen_rotlhi3 ();
extern rtx gen_rotlqi3 ();
extern rtx gen_rotrsi3 ();
extern rtx gen_rotrhi3 ();
extern rtx gen_rotrqi3 ();
extern rtx gen_extzv ();
extern rtx gen_insv ();
extern rtx gen_jump ();
extern rtx gen_beq ();
extern rtx gen_bne ();
extern rtx gen_bgt ();
extern rtx gen_bgtu ();
extern rtx gen_blt ();
extern rtx gen_bltu ();
extern rtx gen_bge ();
extern rtx gen_bgeu ();
extern rtx gen_ble ();
extern rtx gen_bleu ();
extern rtx gen_untyped_call ();
extern rtx gen_blockage ();
extern rtx gen_return ();
extern rtx gen_abssf2 ();
extern rtx gen_absdf2 ();
extern rtx gen_abssi2 ();
extern rtx gen_abshi2 ();
extern rtx gen_absqi2 ();
extern rtx gen_nop ();
extern rtx gen_indirect_jump ();
extern rtx gen_tablejump ();
extern rtx gen_seq ();
extern rtx gen_sne ();
extern rtx gen_sgt ();
extern rtx gen_sgtu ();
extern rtx gen_slt ();
extern rtx gen_sltu ();
extern rtx gen_sge ();
extern rtx gen_sgeu ();
extern rtx gen_sle ();
extern rtx gen_sleu ();
extern rtx gen_call ();
extern rtx gen_call_value ();
#endif /* NO_MD_PROTOTYPES */

View File

@ -0,0 +1,196 @@
/* Generated automatically by the program `genopinit'
from the machine description file `md'. */
#include "config.h"
#include "rtl.h"
#include "flags.h"
#include "insn-flags.h"
#include "insn-codes.h"
#include "insn-config.h"
#include "recog.h"
#include "expr.h"
#include "reload.h"
void
init_all_optabs ()
{
tst_optab->handlers[(int) SImode].insn_code = CODE_FOR_tstsi;
tst_optab->handlers[(int) HImode].insn_code = CODE_FOR_tsthi;
tst_optab->handlers[(int) QImode].insn_code = CODE_FOR_tstqi;
if (HAVE_tstdf)
tst_optab->handlers[(int) DFmode].insn_code = CODE_FOR_tstdf;
if (HAVE_tstsf)
tst_optab->handlers[(int) SFmode].insn_code = CODE_FOR_tstsf;
cmp_optab->handlers[(int) SImode].insn_code = CODE_FOR_cmpsi;
cmp_optab->handlers[(int) HImode].insn_code = CODE_FOR_cmphi;
cmp_optab->handlers[(int) QImode].insn_code = CODE_FOR_cmpqi;
if (HAVE_cmpdf)
cmp_optab->handlers[(int) DFmode].insn_code = CODE_FOR_cmpdf;
if (HAVE_cmpsf)
cmp_optab->handlers[(int) SFmode].insn_code = CODE_FOR_cmpsf;
mov_optab->handlers[(int) DFmode].insn_code = CODE_FOR_movdf;
mov_optab->handlers[(int) SFmode].insn_code = CODE_FOR_movsf;
mov_optab->handlers[(int) DImode].insn_code = CODE_FOR_movdi;
mov_optab->handlers[(int) SImode].insn_code = CODE_FOR_movsi;
mov_optab->handlers[(int) HImode].insn_code = CODE_FOR_movhi;
movstrict_optab->handlers[(int) HImode].insn_code = CODE_FOR_movstricthi;
mov_optab->handlers[(int) QImode].insn_code = CODE_FOR_movqi;
movstrict_optab->handlers[(int) QImode].insn_code = CODE_FOR_movstrictqi;
movstr_optab[(int) SImode] = CODE_FOR_movstrsi;
extendtab[(int) SImode][(int) HImode][0] = CODE_FOR_extendhisi2;
extendtab[(int) HImode][(int) QImode][0] = CODE_FOR_extendqihi2;
extendtab[(int) SImode][(int) QImode][0] = CODE_FOR_extendqisi2;
if (HAVE_extendsfdf2)
extendtab[(int) DFmode][(int) SFmode][0] = CODE_FOR_extendsfdf2;
extendtab[(int) SImode][(int) HImode][1] = CODE_FOR_zero_extendhisi2;
extendtab[(int) HImode][(int) QImode][1] = CODE_FOR_zero_extendqihi2;
extendtab[(int) SImode][(int) QImode][1] = CODE_FOR_zero_extendqisi2;
if (HAVE_floatsisf2)
floattab[(int) SFmode][(int) SImode][0] = CODE_FOR_floatsisf2;
if (HAVE_floatsidf2)
floattab[(int) DFmode][(int) SImode][0] = CODE_FOR_floatsidf2;
if (HAVE_floathisf2)
floattab[(int) SFmode][(int) HImode][0] = CODE_FOR_floathisf2;
if (HAVE_floathidf2)
floattab[(int) DFmode][(int) HImode][0] = CODE_FOR_floathidf2;
if (HAVE_floatqisf2)
floattab[(int) SFmode][(int) QImode][0] = CODE_FOR_floatqisf2;
if (HAVE_fixsfqi2)
fixtab[(int) SFmode][(int) QImode][0] = CODE_FOR_fixsfqi2;
if (HAVE_fixsfhi2)
fixtab[(int) SFmode][(int) HImode][0] = CODE_FOR_fixsfhi2;
if (HAVE_fixsfsi2)
fixtab[(int) SFmode][(int) SImode][0] = CODE_FOR_fixsfsi2;
if (HAVE_fixdfqi2)
fixtab[(int) DFmode][(int) QImode][0] = CODE_FOR_fixdfqi2;
if (HAVE_fixdfhi2)
fixtab[(int) DFmode][(int) HImode][0] = CODE_FOR_fixdfhi2;
if (HAVE_fixdfsi2)
fixtab[(int) DFmode][(int) SImode][0] = CODE_FOR_fixdfsi2;
if (HAVE_fixunssfqi2)
fixtab[(int) SFmode][(int) QImode][1] = CODE_FOR_fixunssfqi2;
if (HAVE_fixunssfhi2)
fixtab[(int) SFmode][(int) HImode][1] = CODE_FOR_fixunssfhi2;
if (HAVE_fixunssfsi2)
fixtab[(int) SFmode][(int) SImode][1] = CODE_FOR_fixunssfsi2;
if (HAVE_fixunsdfqi2)
fixtab[(int) DFmode][(int) QImode][1] = CODE_FOR_fixunsdfqi2;
if (HAVE_fixunsdfhi2)
fixtab[(int) DFmode][(int) HImode][1] = CODE_FOR_fixunsdfhi2;
if (HAVE_fixunsdfsi2)
fixtab[(int) DFmode][(int) SImode][1] = CODE_FOR_fixunsdfsi2;
if (HAVE_fix_truncsfqi2)
fixtrunctab[(int) SFmode][(int) QImode][0] = CODE_FOR_fix_truncsfqi2;
if (HAVE_fix_truncsfhi2)
fixtrunctab[(int) SFmode][(int) HImode][0] = CODE_FOR_fix_truncsfhi2;
if (HAVE_fix_truncsfsi2)
fixtrunctab[(int) SFmode][(int) SImode][0] = CODE_FOR_fix_truncsfsi2;
if (HAVE_fix_truncdfqi2)
fixtrunctab[(int) DFmode][(int) QImode][0] = CODE_FOR_fix_truncdfqi2;
if (HAVE_fix_truncdfhi2)
fixtrunctab[(int) DFmode][(int) HImode][0] = CODE_FOR_fix_truncdfhi2;
if (HAVE_fix_truncdfsi2)
fixtrunctab[(int) DFmode][(int) SImode][0] = CODE_FOR_fix_truncdfsi2;
if (HAVE_adddf3)
add_optab->handlers[(int) DFmode].insn_code = CODE_FOR_adddf3;
if (HAVE_addsf3)
add_optab->handlers[(int) SFmode].insn_code = CODE_FOR_addsf3;
add_optab->handlers[(int) SImode].insn_code = CODE_FOR_addsi3;
add_optab->handlers[(int) HImode].insn_code = CODE_FOR_addhi3;
add_optab->handlers[(int) QImode].insn_code = CODE_FOR_addqi3;
if (HAVE_subdf3)
sub_optab->handlers[(int) DFmode].insn_code = CODE_FOR_subdf3;
if (HAVE_subsf3)
sub_optab->handlers[(int) SFmode].insn_code = CODE_FOR_subsf3;
sub_optab->handlers[(int) SImode].insn_code = CODE_FOR_subsi3;
sub_optab->handlers[(int) HImode].insn_code = CODE_FOR_subhi3;
sub_optab->handlers[(int) QImode].insn_code = CODE_FOR_subqi3;
if (HAVE_muldf3)
smul_optab->handlers[(int) DFmode].insn_code = CODE_FOR_muldf3;
if (HAVE_mulsf3)
smul_optab->handlers[(int) SFmode].insn_code = CODE_FOR_mulsf3;
smul_optab->handlers[(int) SImode].insn_code = CODE_FOR_mulsi3;
smul_optab->handlers[(int) HImode].insn_code = CODE_FOR_mulhi3;
smul_optab->handlers[(int) QImode].insn_code = CODE_FOR_mulqi3;
umul_widen_optab->handlers[(int) DImode].insn_code = CODE_FOR_umulsidi3;
if (HAVE_divdf3)
flodiv_optab->handlers[(int) DFmode].insn_code = CODE_FOR_divdf3;
if (HAVE_divsf3)
flodiv_optab->handlers[(int) SFmode].insn_code = CODE_FOR_divsf3;
sdiv_optab->handlers[(int) SImode].insn_code = CODE_FOR_divsi3;
sdiv_optab->handlers[(int) HImode].insn_code = CODE_FOR_divhi3;
sdiv_optab->handlers[(int) QImode].insn_code = CODE_FOR_divqi3;
udiv_optab->handlers[(int) SImode].insn_code = CODE_FOR_udivsi3;
udiv_optab->handlers[(int) HImode].insn_code = CODE_FOR_udivhi3;
udiv_optab->handlers[(int) QImode].insn_code = CODE_FOR_udivqi3;
smod_optab->handlers[(int) SImode].insn_code = CODE_FOR_modsi3;
smod_optab->handlers[(int) HImode].insn_code = CODE_FOR_modhi3;
smod_optab->handlers[(int) QImode].insn_code = CODE_FOR_modqi3;
umod_optab->handlers[(int) SImode].insn_code = CODE_FOR_umodsi3;
umod_optab->handlers[(int) HImode].insn_code = CODE_FOR_umodhi3;
umod_optab->handlers[(int) QImode].insn_code = CODE_FOR_umodqi3;
and_optab->handlers[(int) SImode].insn_code = CODE_FOR_andsi3;
and_optab->handlers[(int) HImode].insn_code = CODE_FOR_andhi3;
and_optab->handlers[(int) QImode].insn_code = CODE_FOR_andqi3;
ior_optab->handlers[(int) SImode].insn_code = CODE_FOR_iorsi3;
ior_optab->handlers[(int) HImode].insn_code = CODE_FOR_iorhi3;
ior_optab->handlers[(int) QImode].insn_code = CODE_FOR_iorqi3;
xor_optab->handlers[(int) SImode].insn_code = CODE_FOR_xorsi3;
xor_optab->handlers[(int) HImode].insn_code = CODE_FOR_xorhi3;
xor_optab->handlers[(int) QImode].insn_code = CODE_FOR_xorqi3;
if (HAVE_negdf2)
neg_optab->handlers[(int) DFmode].insn_code = CODE_FOR_negdf2;
if (HAVE_negsf2)
neg_optab->handlers[(int) SFmode].insn_code = CODE_FOR_negsf2;
neg_optab->handlers[(int) SImode].insn_code = CODE_FOR_negsi2;
neg_optab->handlers[(int) HImode].insn_code = CODE_FOR_neghi2;
neg_optab->handlers[(int) QImode].insn_code = CODE_FOR_negqi2;
one_cmpl_optab->handlers[(int) SImode].insn_code = CODE_FOR_one_cmplsi2;
one_cmpl_optab->handlers[(int) HImode].insn_code = CODE_FOR_one_cmplhi2;
one_cmpl_optab->handlers[(int) QImode].insn_code = CODE_FOR_one_cmplqi2;
ashl_optab->handlers[(int) SImode].insn_code = CODE_FOR_ashlsi3;
ashl_optab->handlers[(int) HImode].insn_code = CODE_FOR_ashlhi3;
ashl_optab->handlers[(int) QImode].insn_code = CODE_FOR_ashlqi3;
ashr_optab->handlers[(int) SImode].insn_code = CODE_FOR_ashrsi3;
ashr_optab->handlers[(int) HImode].insn_code = CODE_FOR_ashrhi3;
ashr_optab->handlers[(int) QImode].insn_code = CODE_FOR_ashrqi3;
lshl_optab->handlers[(int) SImode].insn_code = CODE_FOR_lshlsi3;
lshl_optab->handlers[(int) HImode].insn_code = CODE_FOR_lshlhi3;
lshl_optab->handlers[(int) QImode].insn_code = CODE_FOR_lshlqi3;
lshr_optab->handlers[(int) SImode].insn_code = CODE_FOR_lshrsi3;
lshr_optab->handlers[(int) HImode].insn_code = CODE_FOR_lshrhi3;
lshr_optab->handlers[(int) QImode].insn_code = CODE_FOR_lshrqi3;
rotl_optab->handlers[(int) SImode].insn_code = CODE_FOR_rotlsi3;
rotl_optab->handlers[(int) HImode].insn_code = CODE_FOR_rotlhi3;
rotl_optab->handlers[(int) QImode].insn_code = CODE_FOR_rotlqi3;
rotr_optab->handlers[(int) SImode].insn_code = CODE_FOR_rotrsi3;
rotr_optab->handlers[(int) HImode].insn_code = CODE_FOR_rotrhi3;
rotr_optab->handlers[(int) QImode].insn_code = CODE_FOR_rotrqi3;
bcc_gen_fctn[(int) EQ] = gen_beq;
bcc_gen_fctn[(int) NE] = gen_bne;
bcc_gen_fctn[(int) GT] = gen_bgt;
bcc_gen_fctn[(int) GTU] = gen_bgtu;
bcc_gen_fctn[(int) LT] = gen_blt;
bcc_gen_fctn[(int) LTU] = gen_bltu;
bcc_gen_fctn[(int) GE] = gen_bge;
bcc_gen_fctn[(int) GEU] = gen_bgeu;
bcc_gen_fctn[(int) LE] = gen_ble;
bcc_gen_fctn[(int) LEU] = gen_bleu;
if (HAVE_abssf2)
abs_optab->handlers[(int) SFmode].insn_code = CODE_FOR_abssf2;
if (HAVE_absdf2)
abs_optab->handlers[(int) DFmode].insn_code = CODE_FOR_absdf2;
abs_optab->handlers[(int) SImode].insn_code = CODE_FOR_abssi2;
abs_optab->handlers[(int) HImode].insn_code = CODE_FOR_abshi2;
abs_optab->handlers[(int) QImode].insn_code = CODE_FOR_absqi2;
setcc_gen_code[(int) EQ] = CODE_FOR_seq;
setcc_gen_code[(int) NE] = CODE_FOR_sne;
setcc_gen_code[(int) GT] = CODE_FOR_sgt;
setcc_gen_code[(int) GTU] = CODE_FOR_sgtu;
setcc_gen_code[(int) LT] = CODE_FOR_slt;
setcc_gen_code[(int) LTU] = CODE_FOR_sltu;
setcc_gen_code[(int) GE] = CODE_FOR_sge;
setcc_gen_code[(int) GEU] = CODE_FOR_sgeu;
setcc_gen_code[(int) LE] = CODE_FOR_sle;
setcc_gen_code[(int) LEU] = CODE_FOR_sleu;
}

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,28 @@
/* Generated automatically by the program `genpeep'
from the machine description file `md'. */
#include "config.h"
#include "rtl.h"
#include "regs.h"
#include "output.h"
#include "real.h"
extern rtx peep_operand[];
#define operands peep_operand
rtx
peephole (ins1)
rtx ins1;
{
rtx insn, x, pat;
int i;
if (NEXT_INSN (ins1)
&& GET_CODE (NEXT_INSN (ins1)) == BARRIER)
return 0;
return 0;
}
rtx peep_operand[2];

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,46 @@
/* Configuration for GNU C-compiler for Vax.
Copyright (C) 1987 Free Software Foundation, Inc.
This file is part of GNU CC.
GNU CC is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 2, or (at your option)
any later version.
GNU CC is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with GNU CC; see the file COPYING. If not, write to
the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA. */
/* #defines that need visibility everywhere. */
#define FALSE 0
#define TRUE 1
/* target machine dependencies.
tm.h is a symbolic link to the actual target specific file. */
#include "tm.h"
/* This describes the machine the compiler is hosted on. */
#define HOST_BITS_PER_CHAR 8
#define HOST_BITS_PER_SHORT 16
#define HOST_BITS_PER_INT 32
#define HOST_BITS_PER_LONG 32
#define HOST_BITS_PER_LONGLONG 64
/* Arguments to use with `exit'. */
#define SUCCESS_EXIT_CODE 0
#define FATAL_EXIT_CODE 33
#define memcpy(src,dst,len) bcopy ((dst),(src),(len))
#define memset gcc_memset
#define memcmp(left,right,len) bcmp ((left),(right),(len))
/* If compiled with GNU C, use the built-in alloca */
#ifdef __GNUC__
#define alloca __builtin_alloca
#endif

View File

@ -0,0 +1,100 @@
/* Definitions of target machine for GNU compiler.
PC532 with National 32532, running NetBSD 0.9 or later.
Copyright (C) 1992 Free Software Foundation, Inc.
This file is part of GNU CC.
GNU CC is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 2, or (at your option)
any later version.
GNU CC is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with GNU CC; see the file COPYING. If not, write to
the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA. */
#include "ns32k/ns32k.h"
/* The NetBSD predefines ... */
#undef CPP_PREDEFINES
#define CPP_PREDEFINES "-Dns32532 -Dpc532 -Dunix -D__NetBSD__ -Dns32k"
/* Compile for the floating point unit & 32532 by default;
also presume SB is zero */
#define TARGET_DEFAULT 25
/* Write DBX debugging info for gdb to read */
#define DBX_DEBUGGING_INFO
/* Use the re-entrant and potentially faster method */
#undef PCC_STATIC_STRUCT_RETURN
/* 32-bit alignment for efficiency */
#undef POINTER_BOUNDARY
#define POINTER_BOUNDARY 32
/* 32-bit alignment for efficiency */
#undef FUNCTION_BOUNDARY
#define FUNCTION_BOUNDARY 32
/* 32532 spec says it can handle any alignment. Rumor from tm-ns32k.h
tells this might not be actually true (but it's for 32032, perhaps
National has fixed the bug for 32532). You might have to change this
if the bug still exists. */
#undef STRICT_ALIGNMENT
#define STRICT_ALIGNMENT 0
/* Use pc relative addressing whenever possible,
it's more efficient than absolute (ns32k.c)
You have to fix a bug in gas 1.38.1 to make this work with gas,
patch available from jkp@cs.hut.fi. */
#define PC_RELATIVE
/* Operand of bsr or jsr should be just the address. */
#define CALL_MEMREF_IMPLICIT
/* movd insns may have floating point constant operands. */
#define MOVD_FLOAT_OK
/* Every address needs to use a base reg. */
#define BASE_REG_NEEDED
/* Don't default to pcc-struct-return, because gcc is the only compiler, and
we want to retain compatibility with older gcc versions. */
#define DEFAULT_PCC_STRUCT_RETURN 0
/* Change the built-in type ideas ... */
#undef SIZE_TYPE
#define SIZE_TYPE "unsigned int"
#undef PTRDIFF_TYPE
#define PTRDIFF_TYPE "int"
#undef WCHAR_TYPE
#define WCHAR_TYPE "short unsigned int"
#define WCHAR_UNSIGNED 1
#undef WCHAR_TYPE_SIZE
#define WCHAR_TYPE_SIZE 16
/* NetBSD does have atexit. */
#define HAVE_ATEXIT