First guess at a gcc configuration for NetBSD Sparc.
This commit is contained in:
parent
39d94328c9
commit
0197ba45f2
File diff suppressed because it is too large
Load Diff
|
@ -0,0 +1,55 @@
|
|||
/* Configuration for GNU C-compiler for Sun Sparc.
|
||||
Copyright (C) 1988 Free Software Foundation, Inc.
|
||||
Contributed by Michael Tiemann (tiemann@cygnus.com).
|
||||
|
||||
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
|
||||
|
||||
/* 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
|
||||
|
||||
/* Doubles are stored in memory with the high order word first. This
|
||||
matters when cross-compiling. */
|
||||
#define HOST_WORDS_BIG_ENDIAN 1
|
||||
|
||||
/* target machine dependencies.
|
||||
tm.h is a symbolic link to the actual target specific file. */
|
||||
#include "tm.h"
|
||||
|
||||
/* Arguments to use with `exit'. */
|
||||
#define SUCCESS_EXIT_CODE 0
|
||||
#define FATAL_EXIT_CODE 33
|
||||
|
||||
/* If compiled with Sun CC, the use of alloca requires this #include. */
|
||||
#ifndef __GNUC__
|
||||
#include "alloca.h"
|
||||
#endif
|
||||
|
||||
/* If compiled with GNU C, use the built-in alloca. */
|
||||
#ifdef __GNUC__
|
||||
/* Use an arg in this macro because that's what some other
|
||||
system does--let's avoid conflict. */
|
||||
#define alloca(x) __builtin_alloca(x)
|
||||
#endif
|
|
@ -0,0 +1,95 @@
|
|||
/* 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 HAVE_ATTR_type
|
||||
enum attr_type {TYPE_MOVE, TYPE_UNARY, TYPE_BINARY, TYPE_COMPARE, TYPE_LOAD, TYPE_STORE, TYPE_UNCOND_BRANCH, TYPE_BRANCH, TYPE_CALL, TYPE_CALL_NO_DELAY_SLOT, TYPE_ADDRESS, TYPE_FPLOAD, TYPE_FPSTORE, TYPE_FP, TYPE_FPCMP, TYPE_FPMUL, TYPE_FPDIV, TYPE_FPSQRT, TYPE_MULTI, TYPE_MISC};
|
||||
extern enum attr_type get_attr_type ();
|
||||
|
||||
#define HAVE_ATTR_use_clobbered
|
||||
enum attr_use_clobbered {USE_CLOBBERED_FALSE, USE_CLOBBERED_TRUE};
|
||||
extern enum attr_use_clobbered get_attr_use_clobbered ();
|
||||
|
||||
#define HAVE_ATTR_length
|
||||
extern int get_attr_length ();
|
||||
extern void init_lengths ();
|
||||
extern void shorten_branches PROTO((rtx));
|
||||
extern int insn_default_length PROTO((rtx));
|
||||
extern int insn_variable_length_p PROTO((rtx));
|
||||
extern int insn_current_length PROTO((rtx));
|
||||
|
||||
extern int *insn_addresses;
|
||||
extern int insn_current_address;
|
||||
|
||||
#define HAVE_ATTR_in_call_delay
|
||||
enum attr_in_call_delay {IN_CALL_DELAY_FALSE, IN_CALL_DELAY_TRUE};
|
||||
extern enum attr_in_call_delay get_attr_in_call_delay ();
|
||||
|
||||
#define DELAY_SLOTS
|
||||
extern int num_delay_slots PROTO((rtx));
|
||||
extern int eligible_for_delay PROTO((rtx, int, rtx, int));
|
||||
|
||||
extern int const_num_delay_slots PROTO((rtx));
|
||||
|
||||
#define HAVE_ATTR_in_branch_delay
|
||||
enum attr_in_branch_delay {IN_BRANCH_DELAY_FALSE, IN_BRANCH_DELAY_TRUE};
|
||||
extern enum attr_in_branch_delay get_attr_in_branch_delay ();
|
||||
|
||||
#define HAVE_ATTR_in_uncond_branch_delay
|
||||
enum attr_in_uncond_branch_delay {IN_UNCOND_BRANCH_DELAY_FALSE, IN_UNCOND_BRANCH_DELAY_TRUE};
|
||||
extern enum attr_in_uncond_branch_delay get_attr_in_uncond_branch_delay ();
|
||||
|
||||
#define HAVE_ATTR_in_annul_branch_delay
|
||||
enum attr_in_annul_branch_delay {IN_ANNUL_BRANCH_DELAY_FALSE, IN_ANNUL_BRANCH_DELAY_TRUE};
|
||||
extern enum attr_in_annul_branch_delay get_attr_in_annul_branch_delay ();
|
||||
|
||||
#define ANNUL_IFFALSE_SLOTS
|
||||
extern int eligible_for_annul_false ();
|
||||
#define INSN_SCHEDULING
|
||||
|
||||
extern int result_ready_cost PROTO((rtx));
|
||||
extern int function_units_used PROTO((rtx));
|
||||
|
||||
extern struct function_unit_desc
|
||||
{
|
||||
char *name;
|
||||
int bitmask;
|
||||
int multiplicity;
|
||||
int simultaneity;
|
||||
int default_cost;
|
||||
int max_issue_delay;
|
||||
int (*ready_cost_function) ();
|
||||
int (*conflict_cost_function) ();
|
||||
int max_blockage;
|
||||
unsigned int (*blockage_range_function) ();
|
||||
int (*blockage_function) ();
|
||||
} function_units[];
|
||||
|
||||
#define FUNCTION_UNITS_SIZE 3
|
||||
#define MIN_MULTIPLICITY 1
|
||||
#define MAX_MULTIPLICITY 1
|
||||
#define MIN_SIMULTANEITY 1
|
||||
#define MAX_SIMULTANEITY 1
|
||||
#define MIN_READY_COST 2
|
||||
#define MAX_READY_COST 63
|
||||
#define MIN_ISSUE_DELAY 1
|
||||
#define MAX_ISSUE_DELAY 1
|
||||
#define MIN_BLOCKAGE 2
|
||||
#define MAX_BLOCKAGE 63
|
||||
#define BLOCKAGE_BITS 7
|
||||
#define INSN_QUEUE_SIZE 64
|
||||
|
||||
#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
|
File diff suppressed because it is too large
Load Diff
|
@ -0,0 +1,125 @@
|
|||
/* Generated automatically by the program `gencodes'
|
||||
from the machine description file `md'. */
|
||||
|
||||
#ifndef MAX_INSN_CODE
|
||||
|
||||
enum insn_code {
|
||||
CODE_FOR_cmpsi = 0,
|
||||
CODE_FOR_cmpsf = 1,
|
||||
CODE_FOR_cmpdf = 2,
|
||||
CODE_FOR_cmptf = 3,
|
||||
CODE_FOR_seq_special = 4,
|
||||
CODE_FOR_sne_special = 5,
|
||||
CODE_FOR_seq = 6,
|
||||
CODE_FOR_sne = 7,
|
||||
CODE_FOR_sgt = 8,
|
||||
CODE_FOR_slt = 9,
|
||||
CODE_FOR_sge = 10,
|
||||
CODE_FOR_sle = 11,
|
||||
CODE_FOR_sgtu = 12,
|
||||
CODE_FOR_sltu = 13,
|
||||
CODE_FOR_sgeu = 14,
|
||||
CODE_FOR_sleu = 15,
|
||||
CODE_FOR_beq = 45,
|
||||
CODE_FOR_bne = 46,
|
||||
CODE_FOR_bgt = 47,
|
||||
CODE_FOR_bgtu = 48,
|
||||
CODE_FOR_blt = 49,
|
||||
CODE_FOR_bltu = 50,
|
||||
CODE_FOR_bge = 51,
|
||||
CODE_FOR_bgeu = 52,
|
||||
CODE_FOR_ble = 53,
|
||||
CODE_FOR_bleu = 54,
|
||||
CODE_FOR_movsi = 57,
|
||||
CODE_FOR_reload_insi = 58,
|
||||
CODE_FOR_movhi = 69,
|
||||
CODE_FOR_movqi = 73,
|
||||
CODE_FOR_movtf = 78,
|
||||
CODE_FOR_movdf = 83,
|
||||
CODE_FOR_movdi = 88,
|
||||
CODE_FOR_movsf = 91,
|
||||
CODE_FOR_zero_extendhisi2 = 95,
|
||||
CODE_FOR_zero_extendqihi2 = 97,
|
||||
CODE_FOR_zero_extendqisi2 = 99,
|
||||
CODE_FOR_extendhisi2 = 105,
|
||||
CODE_FOR_extendqihi2 = 107,
|
||||
CODE_FOR_extendqisi2 = 109,
|
||||
CODE_FOR_extendsfdf2 = 112,
|
||||
CODE_FOR_extendsftf2 = 113,
|
||||
CODE_FOR_extenddftf2 = 114,
|
||||
CODE_FOR_truncdfsf2 = 115,
|
||||
CODE_FOR_trunctfsf2 = 116,
|
||||
CODE_FOR_trunctfdf2 = 117,
|
||||
CODE_FOR_floatsisf2 = 118,
|
||||
CODE_FOR_floatsidf2 = 119,
|
||||
CODE_FOR_floatsitf2 = 120,
|
||||
CODE_FOR_fix_truncsfsi2 = 121,
|
||||
CODE_FOR_fix_truncdfsi2 = 122,
|
||||
CODE_FOR_fix_trunctfsi2 = 123,
|
||||
CODE_FOR_adddi3 = 124,
|
||||
CODE_FOR_addsi3 = 125,
|
||||
CODE_FOR_subdi3 = 128,
|
||||
CODE_FOR_subsi3 = 129,
|
||||
CODE_FOR_mulsi3 = 132,
|
||||
CODE_FOR_mulsidi3 = 134,
|
||||
CODE_FOR_const_mulsidi3 = 136,
|
||||
CODE_FOR_umulsidi3 = 137,
|
||||
CODE_FOR_const_umulsidi3 = 139,
|
||||
CODE_FOR_divsi3 = 140,
|
||||
CODE_FOR_udivsi3 = 142,
|
||||
CODE_FOR_anddi3 = 144,
|
||||
CODE_FOR_andsi3 = 146,
|
||||
CODE_FOR_iordi3 = 150,
|
||||
CODE_FOR_iorsi3 = 152,
|
||||
CODE_FOR_xordi3 = 156,
|
||||
CODE_FOR_xorsi3 = 158,
|
||||
CODE_FOR_negdi2 = 169,
|
||||
CODE_FOR_negsi2 = 170,
|
||||
CODE_FOR_one_cmpldi2 = 173,
|
||||
CODE_FOR_one_cmplsi2 = 175,
|
||||
CODE_FOR_addtf3 = 178,
|
||||
CODE_FOR_adddf3 = 179,
|
||||
CODE_FOR_addsf3 = 180,
|
||||
CODE_FOR_subtf3 = 181,
|
||||
CODE_FOR_subdf3 = 182,
|
||||
CODE_FOR_subsf3 = 183,
|
||||
CODE_FOR_multf3 = 184,
|
||||
CODE_FOR_muldf3 = 185,
|
||||
CODE_FOR_mulsf3 = 186,
|
||||
CODE_FOR_divtf3 = 189,
|
||||
CODE_FOR_divdf3 = 190,
|
||||
CODE_FOR_divsf3 = 191,
|
||||
CODE_FOR_negtf2 = 192,
|
||||
CODE_FOR_negdf2 = 193,
|
||||
CODE_FOR_negsf2 = 194,
|
||||
CODE_FOR_abstf2 = 195,
|
||||
CODE_FOR_absdf2 = 196,
|
||||
CODE_FOR_abssf2 = 197,
|
||||
CODE_FOR_sqrttf2 = 198,
|
||||
CODE_FOR_sqrtdf2 = 199,
|
||||
CODE_FOR_sqrtsf2 = 200,
|
||||
CODE_FOR_ashldi3 = 201,
|
||||
CODE_FOR_ashlsi3 = 203,
|
||||
CODE_FOR_lshldi3 = 204,
|
||||
CODE_FOR_ashrsi3 = 207,
|
||||
CODE_FOR_lshrsi3 = 208,
|
||||
CODE_FOR_lshrdi3 = 209,
|
||||
CODE_FOR_jump = 212,
|
||||
CODE_FOR_tablejump = 213,
|
||||
CODE_FOR_pic_tablejump = 214,
|
||||
CODE_FOR_call = 217,
|
||||
CODE_FOR_call_value = 220,
|
||||
CODE_FOR_untyped_call = 222,
|
||||
CODE_FOR_untyped_return = 224,
|
||||
CODE_FOR_update_return = 225,
|
||||
CODE_FOR_return = 226,
|
||||
CODE_FOR_nop = 227,
|
||||
CODE_FOR_indirect_jump = 228,
|
||||
CODE_FOR_nonlocal_goto = 229,
|
||||
CODE_FOR_flush_register_windows = 230,
|
||||
CODE_FOR_goto_handler_and_restore = 231,
|
||||
CODE_FOR_ffssi2 = 232,
|
||||
CODE_FOR_nothing };
|
||||
|
||||
#define MAX_INSN_CODE ((int) CODE_FOR_nothing)
|
||||
#endif /* MAX_INSN_CODE */
|
|
@ -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 2
|
||||
#ifndef MAX_INSNS_PER_SPLIT
|
||||
#define MAX_INSNS_PER_SPLIT 2
|
||||
#endif
|
||||
#define REGISTER_CONSTRAINTS
|
||||
#define HAVE_lo_sum
|
File diff suppressed because it is too large
Load Diff
|
@ -0,0 +1,487 @@
|
|||
/* 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 270:
|
||||
case 269:
|
||||
case 268:
|
||||
case 261:
|
||||
case 260:
|
||||
case 259:
|
||||
case 258:
|
||||
case 257:
|
||||
case 256:
|
||||
case 255:
|
||||
case 254:
|
||||
case 253:
|
||||
case 252:
|
||||
case 251:
|
||||
case 250:
|
||||
case 249:
|
||||
case 248:
|
||||
case 247:
|
||||
#if __GNUC__ > 1 && !defined (bcopy)
|
||||
#define bcopy(FROM,TO,COUNT) __builtin_memcpy(TO,FROM,COUNT)
|
||||
#endif
|
||||
bcopy (&XVECEXP (pat, 0, 0), ro,
|
||||
sizeof (rtx) * XVECLEN (pat, 0));
|
||||
break;
|
||||
|
||||
case 267:
|
||||
ro[0] = *(ro_loc[0] = &XEXP (XVECEXP (pat, 0, 0), 1));
|
||||
break;
|
||||
|
||||
case 232:
|
||||
ro[0] = *(ro_loc[0] = &XEXP (XVECEXP (pat, 0, 0), 0));
|
||||
ro[1] = *(ro_loc[1] = &XEXP (XEXP (XVECEXP (pat, 0, 0), 1), 0));
|
||||
ro[2] = *(ro_loc[2] = &XEXP (XVECEXP (pat, 0, 1), 0));
|
||||
break;
|
||||
|
||||
case 228:
|
||||
ro[0] = *(ro_loc[0] = &XEXP (pat, 1));
|
||||
break;
|
||||
|
||||
case 231:
|
||||
case 230:
|
||||
case 227:
|
||||
case 226:
|
||||
break;
|
||||
|
||||
case 225:
|
||||
ro[0] = *(ro_loc[0] = &XVECEXP (pat, 0, 0));
|
||||
ro[1] = *(ro_loc[1] = &XVECEXP (pat, 0, 1));
|
||||
break;
|
||||
|
||||
case 223:
|
||||
ro[0] = *(ro_loc[0] = &XEXP (XEXP (XVECEXP (pat, 0, 0), 0), 0));
|
||||
ro[1] = *(ro_loc[1] = &XVECEXP (pat, 0, 1));
|
||||
ro[2] = *(ro_loc[2] = &XVECEXP (pat, 0, 2));
|
||||
break;
|
||||
|
||||
case 219:
|
||||
ro[0] = *(ro_loc[0] = &XEXP (XEXP (XVECEXP (pat, 0, 0), 0), 0));
|
||||
ro[1] = *(ro_loc[1] = &XEXP (XVECEXP (pat, 0, 0), 1));
|
||||
ro[2] = *(ro_loc[2] = &XVECEXP (pat, 0, 1));
|
||||
break;
|
||||
|
||||
case 218:
|
||||
ro[0] = *(ro_loc[0] = &XEXP (XEXP (XVECEXP (pat, 0, 0), 0), 0));
|
||||
ro[1] = *(ro_loc[1] = &XEXP (XVECEXP (pat, 0, 0), 1));
|
||||
break;
|
||||
|
||||
case 216:
|
||||
ro[0] = *(ro_loc[0] = &XEXP (XEXP (XVECEXP (pat, 0, 0), 1), 0));
|
||||
recog_dup_loc[0] = &XEXP (XEXP (XVECEXP (pat, 0, 1), 1), 0);
|
||||
recog_dup_num[0] = 0;
|
||||
break;
|
||||
|
||||
case 215:
|
||||
case 214:
|
||||
ro[0] = *(ro_loc[0] = &XEXP (XVECEXP (pat, 0, 0), 1));
|
||||
ro[1] = *(ro_loc[1] = &XEXP (XEXP (XVECEXP (pat, 0, 1), 0), 0));
|
||||
break;
|
||||
|
||||
case 212:
|
||||
ro[0] = *(ro_loc[0] = &XEXP (XEXP (pat, 1), 0));
|
||||
break;
|
||||
|
||||
case 202:
|
||||
ro[0] = *(ro_loc[0] = &XEXP (XVECEXP (pat, 0, 0), 0));
|
||||
ro[1] = *(ro_loc[1] = &XEXP (XEXP (XVECEXP (pat, 0, 0), 1), 1));
|
||||
break;
|
||||
|
||||
case 168:
|
||||
ro[0] = *(ro_loc[0] = &XEXP (XVECEXP (pat, 0, 1), 0));
|
||||
ro[1] = *(ro_loc[1] = &XEXP (XEXP (XEXP (XEXP (XVECEXP (pat, 0, 0), 1), 0), 0), 0));
|
||||
ro[2] = *(ro_loc[2] = &XEXP (XEXP (XEXP (XVECEXP (pat, 0, 0), 1), 0), 1));
|
||||
ro[3] = *(ro_loc[3] = &XEXP (XEXP (XVECEXP (pat, 0, 0), 1), 0));
|
||||
recog_dup_loc[0] = &XEXP (XVECEXP (pat, 0, 1), 1);
|
||||
recog_dup_num[0] = 3;
|
||||
break;
|
||||
|
||||
case 167:
|
||||
ro[0] = *(ro_loc[0] = &XEXP (XEXP (XEXP (XEXP (pat, 1), 0), 0), 0));
|
||||
ro[1] = *(ro_loc[1] = &XEXP (XEXP (XEXP (pat, 1), 0), 1));
|
||||
ro[2] = *(ro_loc[2] = &XEXP (XEXP (pat, 1), 0));
|
||||
break;
|
||||
|
||||
case 166:
|
||||
ro[0] = *(ro_loc[0] = &XEXP (XVECEXP (pat, 0, 1), 0));
|
||||
ro[1] = *(ro_loc[1] = &XEXP (XEXP (XEXP (XEXP (XVECEXP (pat, 0, 0), 1), 0), 0), 0));
|
||||
ro[2] = *(ro_loc[2] = &XEXP (XEXP (XEXP (XEXP (XVECEXP (pat, 0, 0), 1), 0), 0), 1));
|
||||
recog_dup_loc[0] = &XEXP (XEXP (XEXP (XVECEXP (pat, 0, 1), 1), 0), 0);
|
||||
recog_dup_num[0] = 1;
|
||||
recog_dup_loc[1] = &XEXP (XEXP (XEXP (XVECEXP (pat, 0, 1), 1), 0), 1);
|
||||
recog_dup_num[1] = 2;
|
||||
break;
|
||||
|
||||
case 165:
|
||||
ro[0] = *(ro_loc[0] = &XEXP (XEXP (XEXP (XEXP (pat, 1), 0), 0), 0));
|
||||
ro[1] = *(ro_loc[1] = &XEXP (XEXP (XEXP (XEXP (pat, 1), 0), 0), 1));
|
||||
break;
|
||||
|
||||
case 164:
|
||||
ro[0] = *(ro_loc[0] = &XEXP (XVECEXP (pat, 0, 1), 0));
|
||||
ro[1] = *(ro_loc[1] = &XEXP (XEXP (XEXP (XVECEXP (pat, 0, 0), 1), 0), 0));
|
||||
ro[2] = *(ro_loc[2] = &XEXP (XEXP (XEXP (XVECEXP (pat, 0, 0), 1), 0), 1));
|
||||
ro[3] = *(ro_loc[3] = &XEXP (XEXP (XVECEXP (pat, 0, 0), 1), 0));
|
||||
recog_dup_loc[0] = &XEXP (XVECEXP (pat, 0, 1), 1);
|
||||
recog_dup_num[0] = 3;
|
||||
break;
|
||||
|
||||
case 163:
|
||||
ro[0] = *(ro_loc[0] = &XEXP (XEXP (XEXP (pat, 1), 0), 0));
|
||||
ro[1] = *(ro_loc[1] = &XEXP (XEXP (XEXP (pat, 1), 0), 1));
|
||||
ro[2] = *(ro_loc[2] = &XEXP (XEXP (pat, 1), 0));
|
||||
break;
|
||||
|
||||
case 141:
|
||||
ro[0] = *(ro_loc[0] = &XEXP (XVECEXP (pat, 0, 0), 0));
|
||||
ro[1] = *(ro_loc[1] = &XEXP (XEXP (XVECEXP (pat, 0, 0), 1), 0));
|
||||
ro[2] = *(ro_loc[2] = &XEXP (XEXP (XVECEXP (pat, 0, 0), 1), 1));
|
||||
ro[3] = *(ro_loc[3] = &XEXP (XVECEXP (pat, 0, 2), 0));
|
||||
recog_dup_loc[0] = &XEXP (XEXP (XEXP (XVECEXP (pat, 0, 1), 1), 0), 0);
|
||||
recog_dup_num[0] = 1;
|
||||
recog_dup_loc[1] = &XEXP (XEXP (XEXP (XVECEXP (pat, 0, 1), 1), 0), 1);
|
||||
recog_dup_num[1] = 2;
|
||||
break;
|
||||
|
||||
case 211:
|
||||
case 210:
|
||||
case 206:
|
||||
case 205:
|
||||
case 140:
|
||||
ro[0] = *(ro_loc[0] = &XEXP (XVECEXP (pat, 0, 0), 0));
|
||||
ro[1] = *(ro_loc[1] = &XEXP (XEXP (XVECEXP (pat, 0, 0), 1), 0));
|
||||
ro[2] = *(ro_loc[2] = &XEXP (XEXP (XVECEXP (pat, 0, 0), 1), 1));
|
||||
ro[3] = *(ro_loc[3] = &XEXP (XVECEXP (pat, 0, 1), 0));
|
||||
break;
|
||||
|
||||
case 155:
|
||||
case 154:
|
||||
case 149:
|
||||
case 148:
|
||||
case 139:
|
||||
case 136:
|
||||
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 188:
|
||||
case 187:
|
||||
case 138:
|
||||
case 135:
|
||||
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 143:
|
||||
case 133:
|
||||
ro[0] = *(ro_loc[0] = &XEXP (XVECEXP (pat, 0, 0), 0));
|
||||
ro[1] = *(ro_loc[1] = &XEXP (XEXP (XVECEXP (pat, 0, 0), 1), 0));
|
||||
ro[2] = *(ro_loc[2] = &XEXP (XEXP (XVECEXP (pat, 0, 0), 1), 1));
|
||||
recog_dup_loc[0] = &XEXP (XEXP (XEXP (XVECEXP (pat, 0, 1), 1), 0), 0);
|
||||
recog_dup_num[0] = 1;
|
||||
recog_dup_loc[1] = &XEXP (XEXP (XEXP (XVECEXP (pat, 0, 1), 1), 0), 1);
|
||||
recog_dup_num[1] = 2;
|
||||
break;
|
||||
|
||||
case 131:
|
||||
case 127:
|
||||
ro[0] = *(ro_loc[0] = &XEXP (XVECEXP (pat, 0, 1), 0));
|
||||
ro[1] = *(ro_loc[1] = &XEXP (XEXP (XEXP (XVECEXP (pat, 0, 0), 1), 0), 0));
|
||||
ro[2] = *(ro_loc[2] = &XEXP (XEXP (XEXP (XVECEXP (pat, 0, 0), 1), 0), 1));
|
||||
recog_dup_loc[0] = &XEXP (XEXP (XVECEXP (pat, 0, 1), 1), 0);
|
||||
recog_dup_num[0] = 1;
|
||||
recog_dup_loc[1] = &XEXP (XEXP (XVECEXP (pat, 0, 1), 1), 1);
|
||||
recog_dup_num[1] = 2;
|
||||
break;
|
||||
|
||||
case 130:
|
||||
case 126:
|
||||
ro[0] = *(ro_loc[0] = &XEXP (XEXP (XEXP (pat, 1), 0), 0));
|
||||
ro[1] = *(ro_loc[1] = &XEXP (XEXP (XEXP (pat, 1), 0), 1));
|
||||
break;
|
||||
|
||||
case 266:
|
||||
case 128:
|
||||
case 124:
|
||||
ro[0] = *(ro_loc[0] = &XEXP (XVECEXP (pat, 0, 0), 0));
|
||||
ro[1] = *(ro_loc[1] = &XEXP (XEXP (XVECEXP (pat, 0, 0), 1), 0));
|
||||
ro[2] = *(ro_loc[2] = &XEXP (XEXP (XVECEXP (pat, 0, 0), 1), 1));
|
||||
break;
|
||||
|
||||
case 123:
|
||||
case 122:
|
||||
case 121:
|
||||
ro[0] = *(ro_loc[0] = &XEXP (pat, 0));
|
||||
ro[1] = *(ro_loc[1] = &XEXP (XEXP (XEXP (pat, 1), 0), 0));
|
||||
break;
|
||||
|
||||
case 111:
|
||||
ro[0] = *(ro_loc[0] = &XEXP (XEXP (XEXP (pat, 1), 0), 0));
|
||||
ro[1] = *(ro_loc[1] = &XEXP (XEXP (XEXP (pat, 1), 0), 1));
|
||||
ro[2] = *(ro_loc[2] = &XEXP (XEXP (XEXP (pat, 1), 0), 2));
|
||||
break;
|
||||
|
||||
case 104:
|
||||
ro[0] = *(ro_loc[0] = &XEXP (XVECEXP (pat, 0, 1), 0));
|
||||
ro[1] = *(ro_loc[1] = &XEXP (XEXP (XEXP (XVECEXP (pat, 0, 0), 1), 0), 0));
|
||||
recog_dup_loc[0] = &XEXP (XVECEXP (pat, 0, 1), 1);
|
||||
recog_dup_num[0] = 1;
|
||||
break;
|
||||
|
||||
case 177:
|
||||
case 172:
|
||||
case 102:
|
||||
ro[0] = *(ro_loc[0] = &XEXP (XVECEXP (pat, 0, 1), 0));
|
||||
ro[1] = *(ro_loc[1] = &XEXP (XEXP (XEXP (XVECEXP (pat, 0, 0), 1), 0), 0));
|
||||
recog_dup_loc[0] = &XEXP (XEXP (XVECEXP (pat, 0, 1), 1), 0);
|
||||
recog_dup_num[0] = 1;
|
||||
break;
|
||||
|
||||
case 176:
|
||||
case 171:
|
||||
case 103:
|
||||
case 101:
|
||||
ro[0] = *(ro_loc[0] = &XEXP (XEXP (XEXP (pat, 1), 0), 0));
|
||||
break;
|
||||
|
||||
case 94:
|
||||
case 87:
|
||||
case 81:
|
||||
case 76:
|
||||
case 72:
|
||||
case 68:
|
||||
ro[0] = *(ro_loc[0] = &XEXP (XEXP (XVECEXP (pat, 0, 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 66:
|
||||
ro[0] = *(ro_loc[0] = &XEXP (pat, 0));
|
||||
ro[1] = *(ro_loc[1] = &XEXP (XEXP (pat, 1), 0));
|
||||
ro[2] = *(ro_loc[2] = &XVECEXP (XEXP (XEXP (pat, 1), 1), 0, 0));
|
||||
break;
|
||||
|
||||
case 208:
|
||||
case 207:
|
||||
case 203:
|
||||
case 191:
|
||||
case 190:
|
||||
case 189:
|
||||
case 186:
|
||||
case 185:
|
||||
case 184:
|
||||
case 183:
|
||||
case 182:
|
||||
case 181:
|
||||
case 180:
|
||||
case 179:
|
||||
case 178:
|
||||
case 158:
|
||||
case 157:
|
||||
case 152:
|
||||
case 151:
|
||||
case 146:
|
||||
case 145:
|
||||
case 142:
|
||||
case 132:
|
||||
case 129:
|
||||
case 125:
|
||||
case 71:
|
||||
case 67:
|
||||
case 65:
|
||||
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 62:
|
||||
ro[0] = *(ro_loc[0] = &XEXP (pat, 0));
|
||||
ro[1] = *(ro_loc[1] = &XVECEXP (XEXP (XEXP (pat, 1), 0), 0, 0));
|
||||
break;
|
||||
|
||||
case 265:
|
||||
case 264:
|
||||
case 263:
|
||||
case 262:
|
||||
case 60:
|
||||
ro[0] = *(ro_loc[0] = &XEXP (XVECEXP (pat, 0, 0), 0));
|
||||
ro[1] = *(ro_loc[1] = &XEXP (XVECEXP (pat, 0, 0), 1));
|
||||
break;
|
||||
|
||||
case 56:
|
||||
ro[0] = *(ro_loc[0] = &XEXP (XEXP (pat, 1), 0));
|
||||
ro[1] = *(ro_loc[1] = &XEXP (XEXP (XEXP (pat, 1), 2), 0));
|
||||
break;
|
||||
|
||||
case 55:
|
||||
ro[0] = *(ro_loc[0] = &XEXP (XEXP (pat, 1), 0));
|
||||
ro[1] = *(ro_loc[1] = &XEXP (XEXP (XEXP (pat, 1), 1), 0));
|
||||
break;
|
||||
|
||||
case 93:
|
||||
case 92:
|
||||
case 90:
|
||||
case 89:
|
||||
case 85:
|
||||
case 84:
|
||||
case 82:
|
||||
case 80:
|
||||
case 79:
|
||||
case 77:
|
||||
case 74:
|
||||
case 70:
|
||||
case 59:
|
||||
case 44:
|
||||
ro[0] = *(ro_loc[0] = &XEXP (pat, 0));
|
||||
ro[1] = *(ro_loc[1] = &XEXP (pat, 1));
|
||||
break;
|
||||
|
||||
case 41:
|
||||
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), 1));
|
||||
break;
|
||||
|
||||
case 162:
|
||||
case 161:
|
||||
case 75:
|
||||
case 40:
|
||||
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), 0), 1));
|
||||
break;
|
||||
|
||||
case 200:
|
||||
case 199:
|
||||
case 198:
|
||||
case 197:
|
||||
case 196:
|
||||
case 195:
|
||||
case 194:
|
||||
case 193:
|
||||
case 192:
|
||||
case 175:
|
||||
case 174:
|
||||
case 170:
|
||||
case 120:
|
||||
case 119:
|
||||
case 118:
|
||||
case 117:
|
||||
case 116:
|
||||
case 115:
|
||||
case 114:
|
||||
case 113:
|
||||
case 112:
|
||||
case 110:
|
||||
case 108:
|
||||
case 106:
|
||||
case 100:
|
||||
case 98:
|
||||
case 96:
|
||||
case 64:
|
||||
case 63:
|
||||
case 61:
|
||||
case 43:
|
||||
case 39:
|
||||
ro[0] = *(ro_loc[0] = &XEXP (pat, 0));
|
||||
ro[1] = *(ro_loc[1] = &XEXP (XEXP (pat, 1), 0));
|
||||
break;
|
||||
|
||||
case 38:
|
||||
ro[0] = *(ro_loc[0] = &XEXP (pat, 0));
|
||||
ro[1] = *(ro_loc[1] = &XEXP (XEXP (XEXP (pat, 1), 1), 0));
|
||||
ro[2] = *(ro_loc[2] = &XEXP (XEXP (XEXP (pat, 1), 1), 1));
|
||||
break;
|
||||
|
||||
case 34:
|
||||
ro[0] = *(ro_loc[0] = &XEXP (pat, 0));
|
||||
ro[1] = *(ro_loc[1] = &XEXP (XEXP (XEXP (pat, 1), 0), 1));
|
||||
break;
|
||||
|
||||
case 42:
|
||||
case 37:
|
||||
case 33:
|
||||
ro[0] = *(ro_loc[0] = &XEXP (pat, 0));
|
||||
ro[1] = *(ro_loc[1] = &XEXP (XEXP (pat, 1), 1));
|
||||
break;
|
||||
|
||||
case 36:
|
||||
case 35:
|
||||
case 32:
|
||||
case 31:
|
||||
ro[0] = *(ro_loc[0] = &XEXP (pat, 0));
|
||||
break;
|
||||
|
||||
case 30:
|
||||
case 28:
|
||||
ro[0] = *(ro_loc[0] = &XEXP (XVECEXP (pat, 0, 0), 0));
|
||||
ro[1] = *(ro_loc[1] = &XEXP (XEXP (XEXP (XVECEXP (pat, 0, 0), 1), 1), 0));
|
||||
ro[2] = *(ro_loc[2] = &XEXP (XEXP (XVECEXP (pat, 0, 0), 1), 0));
|
||||
break;
|
||||
|
||||
case 221:
|
||||
case 29:
|
||||
case 27:
|
||||
ro[0] = *(ro_loc[0] = &XEXP (XVECEXP (pat, 0, 0), 0));
|
||||
ro[1] = *(ro_loc[1] = &XEXP (XEXP (XEXP (XVECEXP (pat, 0, 0), 1), 0), 0));
|
||||
ro[2] = *(ro_loc[2] = &XEXP (XEXP (XVECEXP (pat, 0, 0), 1), 1));
|
||||
break;
|
||||
|
||||
case 26:
|
||||
case 24:
|
||||
ro[0] = *(ro_loc[0] = &XEXP (XVECEXP (pat, 0, 0), 0));
|
||||
ro[1] = *(ro_loc[1] = &XEXP (XEXP (XEXP (XVECEXP (pat, 0, 0), 1), 0), 0));
|
||||
break;
|
||||
|
||||
case 169:
|
||||
case 25:
|
||||
case 23:
|
||||
ro[0] = *(ro_loc[0] = &XEXP (XVECEXP (pat, 0, 0), 0));
|
||||
ro[1] = *(ro_loc[1] = &XEXP (XEXP (XVECEXP (pat, 0, 0), 1), 0));
|
||||
break;
|
||||
|
||||
case 22:
|
||||
case 21:
|
||||
case 20:
|
||||
case 19:
|
||||
case 18:
|
||||
case 17:
|
||||
case 16:
|
||||
ro[0] = *(ro_loc[0] = &XEXP (XEXP (pat, 1), 0));
|
||||
ro[1] = *(ro_loc[1] = &XEXP (XEXP (pat, 1), 1));
|
||||
break;
|
||||
|
||||
default:
|
||||
abort ();
|
||||
}
|
||||
}
|
|
@ -0,0 +1,360 @@
|
|||
/* Generated automatically by the program `genflags'
|
||||
from the machine description file `md'. */
|
||||
|
||||
#define HAVE_cmpsi 1
|
||||
#define HAVE_cmpsf (TARGET_FPU)
|
||||
#define HAVE_cmpdf (TARGET_FPU)
|
||||
#define HAVE_cmptf (TARGET_FPU)
|
||||
#define HAVE_seq_special 1
|
||||
#define HAVE_sne_special 1
|
||||
#define HAVE_seq 1
|
||||
#define HAVE_sne 1
|
||||
#define HAVE_sgt 1
|
||||
#define HAVE_slt 1
|
||||
#define HAVE_sge 1
|
||||
#define HAVE_sle 1
|
||||
#define HAVE_sgtu 1
|
||||
#define HAVE_sltu 1
|
||||
#define HAVE_sgeu 1
|
||||
#define HAVE_sleu 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_movsi 1
|
||||
#define HAVE_reload_insi 1
|
||||
#define HAVE_movhi 1
|
||||
#define HAVE_movqi 1
|
||||
#define HAVE_movtf 1
|
||||
#define HAVE_movdf 1
|
||||
#define HAVE_movdi 1
|
||||
#define HAVE_movsf 1
|
||||
#define HAVE_zero_extendhisi2 1
|
||||
#define HAVE_zero_extendqihi2 1
|
||||
#define HAVE_zero_extendqisi2 1
|
||||
#define HAVE_extendhisi2 1
|
||||
#define HAVE_extendqihi2 1
|
||||
#define HAVE_extendqisi2 1
|
||||
#define HAVE_extendsfdf2 (TARGET_FPU)
|
||||
#define HAVE_extendsftf2 (TARGET_FPU)
|
||||
#define HAVE_extenddftf2 (TARGET_FPU)
|
||||
#define HAVE_truncdfsf2 (TARGET_FPU)
|
||||
#define HAVE_trunctfsf2 (TARGET_FPU)
|
||||
#define HAVE_trunctfdf2 (TARGET_FPU)
|
||||
#define HAVE_floatsisf2 (TARGET_FPU)
|
||||
#define HAVE_floatsidf2 (TARGET_FPU)
|
||||
#define HAVE_floatsitf2 (TARGET_FPU)
|
||||
#define HAVE_fix_truncsfsi2 (TARGET_FPU)
|
||||
#define HAVE_fix_truncdfsi2 (TARGET_FPU)
|
||||
#define HAVE_fix_trunctfsi2 (TARGET_FPU)
|
||||
#define HAVE_adddi3 1
|
||||
#define HAVE_addsi3 1
|
||||
#define HAVE_subdi3 1
|
||||
#define HAVE_subsi3 1
|
||||
#define HAVE_mulsi3 (TARGET_V8 || TARGET_SPARCLITE)
|
||||
#define HAVE_mulsidi3 (TARGET_V8 || TARGET_SPARCLITE)
|
||||
#define HAVE_const_mulsidi3 (TARGET_V8 || TARGET_SPARCLITE)
|
||||
#define HAVE_umulsidi3 (TARGET_V8 || TARGET_SPARCLITE)
|
||||
#define HAVE_const_umulsidi3 (TARGET_V8 || TARGET_SPARCLITE)
|
||||
#define HAVE_divsi3 (TARGET_V8)
|
||||
#define HAVE_udivsi3 (TARGET_V8)
|
||||
#define HAVE_anddi3 1
|
||||
#define HAVE_andsi3 1
|
||||
#define HAVE_iordi3 1
|
||||
#define HAVE_iorsi3 1
|
||||
#define HAVE_xordi3 1
|
||||
#define HAVE_xorsi3 1
|
||||
#define HAVE_negdi2 1
|
||||
#define HAVE_negsi2 1
|
||||
#define HAVE_one_cmpldi2 1
|
||||
#define HAVE_one_cmplsi2 1
|
||||
#define HAVE_addtf3 (TARGET_FPU)
|
||||
#define HAVE_adddf3 (TARGET_FPU)
|
||||
#define HAVE_addsf3 (TARGET_FPU)
|
||||
#define HAVE_subtf3 (TARGET_FPU)
|
||||
#define HAVE_subdf3 (TARGET_FPU)
|
||||
#define HAVE_subsf3 (TARGET_FPU)
|
||||
#define HAVE_multf3 (TARGET_FPU)
|
||||
#define HAVE_muldf3 (TARGET_FPU)
|
||||
#define HAVE_mulsf3 (TARGET_FPU)
|
||||
#define HAVE_divtf3 (TARGET_FPU)
|
||||
#define HAVE_divdf3 (TARGET_FPU)
|
||||
#define HAVE_divsf3 (TARGET_FPU)
|
||||
#define HAVE_negtf2 (TARGET_FPU)
|
||||
#define HAVE_negdf2 (TARGET_FPU)
|
||||
#define HAVE_negsf2 (TARGET_FPU)
|
||||
#define HAVE_abstf2 (TARGET_FPU)
|
||||
#define HAVE_absdf2 (TARGET_FPU)
|
||||
#define HAVE_abssf2 (TARGET_FPU)
|
||||
#define HAVE_sqrttf2 (TARGET_FPU)
|
||||
#define HAVE_sqrtdf2 (TARGET_FPU)
|
||||
#define HAVE_sqrtsf2 (TARGET_FPU)
|
||||
#define HAVE_ashldi3 1
|
||||
#define HAVE_ashlsi3 1
|
||||
#define HAVE_lshldi3 1
|
||||
#define HAVE_ashrsi3 1
|
||||
#define HAVE_lshrsi3 1
|
||||
#define HAVE_lshrdi3 1
|
||||
#define HAVE_jump 1
|
||||
#define HAVE_tablejump 1
|
||||
#define HAVE_pic_tablejump 1
|
||||
#define HAVE_call 1
|
||||
#define HAVE_call_value 1
|
||||
#define HAVE_untyped_call 1
|
||||
#define HAVE_untyped_return 1
|
||||
#define HAVE_update_return 1
|
||||
#define HAVE_return (! TARGET_EPILOGUE)
|
||||
#define HAVE_nop 1
|
||||
#define HAVE_indirect_jump 1
|
||||
#define HAVE_nonlocal_goto 1
|
||||
#define HAVE_flush_register_windows 1
|
||||
#define HAVE_goto_handler_and_restore 1
|
||||
#define HAVE_ffssi2 (TARGET_SPARCLITE)
|
||||
|
||||
#ifndef NO_MD_PROTOTYPES
|
||||
extern rtx gen_cmpsi PROTO((rtx, rtx));
|
||||
extern rtx gen_cmpsf PROTO((rtx, rtx));
|
||||
extern rtx gen_cmpdf PROTO((rtx, rtx));
|
||||
extern rtx gen_cmptf PROTO((rtx, rtx));
|
||||
extern rtx gen_seq_special PROTO((rtx, rtx, rtx));
|
||||
extern rtx gen_sne_special PROTO((rtx, rtx, rtx));
|
||||
extern rtx gen_seq PROTO((rtx));
|
||||
extern rtx gen_sne PROTO((rtx));
|
||||
extern rtx gen_sgt PROTO((rtx));
|
||||
extern rtx gen_slt PROTO((rtx));
|
||||
extern rtx gen_sge PROTO((rtx));
|
||||
extern rtx gen_sle PROTO((rtx));
|
||||
extern rtx gen_sgtu PROTO((rtx));
|
||||
extern rtx gen_sltu PROTO((rtx));
|
||||
extern rtx gen_sgeu PROTO((rtx));
|
||||
extern rtx gen_sleu 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_movsi PROTO((rtx, rtx));
|
||||
extern rtx gen_reload_insi PROTO((rtx, rtx, rtx));
|
||||
extern rtx gen_movhi PROTO((rtx, rtx));
|
||||
extern rtx gen_movqi PROTO((rtx, rtx));
|
||||
extern rtx gen_movtf PROTO((rtx, rtx));
|
||||
extern rtx gen_movdf PROTO((rtx, rtx));
|
||||
extern rtx gen_movdi PROTO((rtx, rtx));
|
||||
extern rtx gen_movsf 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_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_extendsftf2 PROTO((rtx, rtx));
|
||||
extern rtx gen_extenddftf2 PROTO((rtx, rtx));
|
||||
extern rtx gen_truncdfsf2 PROTO((rtx, rtx));
|
||||
extern rtx gen_trunctfsf2 PROTO((rtx, rtx));
|
||||
extern rtx gen_trunctfdf2 PROTO((rtx, rtx));
|
||||
extern rtx gen_floatsisf2 PROTO((rtx, rtx));
|
||||
extern rtx gen_floatsidf2 PROTO((rtx, rtx));
|
||||
extern rtx gen_floatsitf2 PROTO((rtx, rtx));
|
||||
extern rtx gen_fix_truncsfsi2 PROTO((rtx, rtx));
|
||||
extern rtx gen_fix_truncdfsi2 PROTO((rtx, rtx));
|
||||
extern rtx gen_fix_trunctfsi2 PROTO((rtx, rtx));
|
||||
extern rtx gen_adddi3 PROTO((rtx, rtx, rtx));
|
||||
extern rtx gen_addsi3 PROTO((rtx, rtx, rtx));
|
||||
extern rtx gen_subdi3 PROTO((rtx, rtx, rtx));
|
||||
extern rtx gen_subsi3 PROTO((rtx, rtx, rtx));
|
||||
extern rtx gen_mulsi3 PROTO((rtx, rtx, rtx));
|
||||
extern rtx gen_mulsidi3 PROTO((rtx, rtx, rtx));
|
||||
extern rtx gen_const_mulsidi3 PROTO((rtx, rtx, rtx));
|
||||
extern rtx gen_umulsidi3 PROTO((rtx, rtx, rtx));
|
||||
extern rtx gen_const_umulsidi3 PROTO((rtx, rtx, rtx));
|
||||
extern rtx gen_divsi3 PROTO((rtx, rtx, rtx));
|
||||
extern rtx gen_udivsi3 PROTO((rtx, rtx, rtx));
|
||||
extern rtx gen_anddi3 PROTO((rtx, rtx, rtx));
|
||||
extern rtx gen_andsi3 PROTO((rtx, rtx, rtx));
|
||||
extern rtx gen_iordi3 PROTO((rtx, rtx, rtx));
|
||||
extern rtx gen_iorsi3 PROTO((rtx, rtx, rtx));
|
||||
extern rtx gen_xordi3 PROTO((rtx, rtx, rtx));
|
||||
extern rtx gen_xorsi3 PROTO((rtx, rtx, rtx));
|
||||
extern rtx gen_negdi2 PROTO((rtx, rtx));
|
||||
extern rtx gen_negsi2 PROTO((rtx, rtx));
|
||||
extern rtx gen_one_cmpldi2 PROTO((rtx, rtx));
|
||||
extern rtx gen_one_cmplsi2 PROTO((rtx, rtx));
|
||||
extern rtx gen_addtf3 PROTO((rtx, rtx, rtx));
|
||||
extern rtx gen_adddf3 PROTO((rtx, rtx, rtx));
|
||||
extern rtx gen_addsf3 PROTO((rtx, rtx, rtx));
|
||||
extern rtx gen_subtf3 PROTO((rtx, rtx, rtx));
|
||||
extern rtx gen_subdf3 PROTO((rtx, rtx, rtx));
|
||||
extern rtx gen_subsf3 PROTO((rtx, rtx, rtx));
|
||||
extern rtx gen_multf3 PROTO((rtx, rtx, rtx));
|
||||
extern rtx gen_muldf3 PROTO((rtx, rtx, rtx));
|
||||
extern rtx gen_mulsf3 PROTO((rtx, rtx, rtx));
|
||||
extern rtx gen_divtf3 PROTO((rtx, rtx, rtx));
|
||||
extern rtx gen_divdf3 PROTO((rtx, rtx, rtx));
|
||||
extern rtx gen_divsf3 PROTO((rtx, rtx, rtx));
|
||||
extern rtx gen_negtf2 PROTO((rtx, rtx));
|
||||
extern rtx gen_negdf2 PROTO((rtx, rtx));
|
||||
extern rtx gen_negsf2 PROTO((rtx, rtx));
|
||||
extern rtx gen_abstf2 PROTO((rtx, rtx));
|
||||
extern rtx gen_absdf2 PROTO((rtx, rtx));
|
||||
extern rtx gen_abssf2 PROTO((rtx, rtx));
|
||||
extern rtx gen_sqrttf2 PROTO((rtx, rtx));
|
||||
extern rtx gen_sqrtdf2 PROTO((rtx, rtx));
|
||||
extern rtx gen_sqrtsf2 PROTO((rtx, rtx));
|
||||
extern rtx gen_ashldi3 PROTO((rtx, rtx, rtx));
|
||||
extern rtx gen_ashlsi3 PROTO((rtx, rtx, rtx));
|
||||
extern rtx gen_lshldi3 PROTO((rtx, rtx, rtx));
|
||||
extern rtx gen_ashrsi3 PROTO((rtx, rtx, rtx));
|
||||
extern rtx gen_lshrsi3 PROTO((rtx, rtx, rtx));
|
||||
extern rtx gen_lshrdi3 PROTO((rtx, rtx, rtx));
|
||||
extern rtx gen_jump PROTO((rtx));
|
||||
extern rtx gen_tablejump PROTO((rtx, rtx));
|
||||
extern rtx gen_pic_tablejump PROTO((rtx, rtx));
|
||||
extern rtx gen_untyped_call PROTO((rtx, rtx, rtx));
|
||||
extern rtx gen_untyped_return PROTO((rtx, rtx));
|
||||
extern rtx gen_update_return PROTO((rtx, rtx));
|
||||
extern rtx gen_return PROTO((void));
|
||||
extern rtx gen_nop PROTO((void));
|
||||
extern rtx gen_indirect_jump PROTO((rtx));
|
||||
extern rtx gen_nonlocal_goto PROTO((rtx, rtx, rtx, rtx));
|
||||
extern rtx gen_flush_register_windows PROTO((void));
|
||||
extern rtx gen_goto_handler_and_restore PROTO((void));
|
||||
extern rtx gen_ffssi2 PROTO((rtx, 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_cmpsi ();
|
||||
extern rtx gen_cmpsf ();
|
||||
extern rtx gen_cmpdf ();
|
||||
extern rtx gen_cmptf ();
|
||||
extern rtx gen_seq_special ();
|
||||
extern rtx gen_sne_special ();
|
||||
extern rtx gen_seq ();
|
||||
extern rtx gen_sne ();
|
||||
extern rtx gen_sgt ();
|
||||
extern rtx gen_slt ();
|
||||
extern rtx gen_sge ();
|
||||
extern rtx gen_sle ();
|
||||
extern rtx gen_sgtu ();
|
||||
extern rtx gen_sltu ();
|
||||
extern rtx gen_sgeu ();
|
||||
extern rtx gen_sleu ();
|
||||
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_movsi ();
|
||||
extern rtx gen_reload_insi ();
|
||||
extern rtx gen_movhi ();
|
||||
extern rtx gen_movqi ();
|
||||
extern rtx gen_movtf ();
|
||||
extern rtx gen_movdf ();
|
||||
extern rtx gen_movdi ();
|
||||
extern rtx gen_movsf ();
|
||||
extern rtx gen_zero_extendhisi2 ();
|
||||
extern rtx gen_zero_extendqihi2 ();
|
||||
extern rtx gen_zero_extendqisi2 ();
|
||||
extern rtx gen_extendhisi2 ();
|
||||
extern rtx gen_extendqihi2 ();
|
||||
extern rtx gen_extendqisi2 ();
|
||||
extern rtx gen_extendsfdf2 ();
|
||||
extern rtx gen_extendsftf2 ();
|
||||
extern rtx gen_extenddftf2 ();
|
||||
extern rtx gen_truncdfsf2 ();
|
||||
extern rtx gen_trunctfsf2 ();
|
||||
extern rtx gen_trunctfdf2 ();
|
||||
extern rtx gen_floatsisf2 ();
|
||||
extern rtx gen_floatsidf2 ();
|
||||
extern rtx gen_floatsitf2 ();
|
||||
extern rtx gen_fix_truncsfsi2 ();
|
||||
extern rtx gen_fix_truncdfsi2 ();
|
||||
extern rtx gen_fix_trunctfsi2 ();
|
||||
extern rtx gen_adddi3 ();
|
||||
extern rtx gen_addsi3 ();
|
||||
extern rtx gen_subdi3 ();
|
||||
extern rtx gen_subsi3 ();
|
||||
extern rtx gen_mulsi3 ();
|
||||
extern rtx gen_mulsidi3 ();
|
||||
extern rtx gen_const_mulsidi3 ();
|
||||
extern rtx gen_umulsidi3 ();
|
||||
extern rtx gen_const_umulsidi3 ();
|
||||
extern rtx gen_divsi3 ();
|
||||
extern rtx gen_udivsi3 ();
|
||||
extern rtx gen_anddi3 ();
|
||||
extern rtx gen_andsi3 ();
|
||||
extern rtx gen_iordi3 ();
|
||||
extern rtx gen_iorsi3 ();
|
||||
extern rtx gen_xordi3 ();
|
||||
extern rtx gen_xorsi3 ();
|
||||
extern rtx gen_negdi2 ();
|
||||
extern rtx gen_negsi2 ();
|
||||
extern rtx gen_one_cmpldi2 ();
|
||||
extern rtx gen_one_cmplsi2 ();
|
||||
extern rtx gen_addtf3 ();
|
||||
extern rtx gen_adddf3 ();
|
||||
extern rtx gen_addsf3 ();
|
||||
extern rtx gen_subtf3 ();
|
||||
extern rtx gen_subdf3 ();
|
||||
extern rtx gen_subsf3 ();
|
||||
extern rtx gen_multf3 ();
|
||||
extern rtx gen_muldf3 ();
|
||||
extern rtx gen_mulsf3 ();
|
||||
extern rtx gen_divtf3 ();
|
||||
extern rtx gen_divdf3 ();
|
||||
extern rtx gen_divsf3 ();
|
||||
extern rtx gen_negtf2 ();
|
||||
extern rtx gen_negdf2 ();
|
||||
extern rtx gen_negsf2 ();
|
||||
extern rtx gen_abstf2 ();
|
||||
extern rtx gen_absdf2 ();
|
||||
extern rtx gen_abssf2 ();
|
||||
extern rtx gen_sqrttf2 ();
|
||||
extern rtx gen_sqrtdf2 ();
|
||||
extern rtx gen_sqrtsf2 ();
|
||||
extern rtx gen_ashldi3 ();
|
||||
extern rtx gen_ashlsi3 ();
|
||||
extern rtx gen_lshldi3 ();
|
||||
extern rtx gen_ashrsi3 ();
|
||||
extern rtx gen_lshrsi3 ();
|
||||
extern rtx gen_lshrdi3 ();
|
||||
extern rtx gen_jump ();
|
||||
extern rtx gen_tablejump ();
|
||||
extern rtx gen_pic_tablejump ();
|
||||
extern rtx gen_untyped_call ();
|
||||
extern rtx gen_untyped_return ();
|
||||
extern rtx gen_update_return ();
|
||||
extern rtx gen_return ();
|
||||
extern rtx gen_nop ();
|
||||
extern rtx gen_indirect_jump ();
|
||||
extern rtx gen_nonlocal_goto ();
|
||||
extern rtx gen_flush_register_windows ();
|
||||
extern rtx gen_goto_handler_and_restore ();
|
||||
extern rtx gen_ffssi2 ();
|
||||
extern rtx gen_call ();
|
||||
extern rtx gen_call_value ();
|
||||
#endif /* NO_MD_PROTOTYPES */
|
|
@ -0,0 +1,150 @@
|
|||
/* 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 ()
|
||||
{
|
||||
cmp_optab->handlers[(int) SImode].insn_code = CODE_FOR_cmpsi;
|
||||
if (HAVE_cmpsf)
|
||||
cmp_optab->handlers[(int) SFmode].insn_code = CODE_FOR_cmpsf;
|
||||
if (HAVE_cmpdf)
|
||||
cmp_optab->handlers[(int) DFmode].insn_code = CODE_FOR_cmpdf;
|
||||
if (HAVE_cmptf)
|
||||
cmp_optab->handlers[(int) TFmode].insn_code = CODE_FOR_cmptf;
|
||||
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) LT] = CODE_FOR_slt;
|
||||
setcc_gen_code[(int) GE] = CODE_FOR_sge;
|
||||
setcc_gen_code[(int) LE] = CODE_FOR_sle;
|
||||
setcc_gen_code[(int) GTU] = CODE_FOR_sgtu;
|
||||
setcc_gen_code[(int) LTU] = CODE_FOR_sltu;
|
||||
setcc_gen_code[(int) GEU] = CODE_FOR_sgeu;
|
||||
setcc_gen_code[(int) LEU] = CODE_FOR_sleu;
|
||||
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;
|
||||
mov_optab->handlers[(int) SImode].insn_code = CODE_FOR_movsi;
|
||||
reload_in_optab[(int) SImode] = CODE_FOR_reload_insi;
|
||||
mov_optab->handlers[(int) HImode].insn_code = CODE_FOR_movhi;
|
||||
mov_optab->handlers[(int) QImode].insn_code = CODE_FOR_movqi;
|
||||
mov_optab->handlers[(int) TFmode].insn_code = CODE_FOR_movtf;
|
||||
mov_optab->handlers[(int) DFmode].insn_code = CODE_FOR_movdf;
|
||||
mov_optab->handlers[(int) DImode].insn_code = CODE_FOR_movdi;
|
||||
mov_optab->handlers[(int) SFmode].insn_code = CODE_FOR_movsf;
|
||||
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;
|
||||
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;
|
||||
if (HAVE_extendsftf2)
|
||||
extendtab[(int) TFmode][(int) SFmode][0] = CODE_FOR_extendsftf2;
|
||||
if (HAVE_extenddftf2)
|
||||
extendtab[(int) TFmode][(int) DFmode][0] = CODE_FOR_extenddftf2;
|
||||
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_floatsitf2)
|
||||
floattab[(int) TFmode][(int) SImode][0] = CODE_FOR_floatsitf2;
|
||||
if (HAVE_fix_truncsfsi2)
|
||||
fixtrunctab[(int) SFmode][(int) SImode][0] = CODE_FOR_fix_truncsfsi2;
|
||||
if (HAVE_fix_truncdfsi2)
|
||||
fixtrunctab[(int) DFmode][(int) SImode][0] = CODE_FOR_fix_truncdfsi2;
|
||||
if (HAVE_fix_trunctfsi2)
|
||||
fixtrunctab[(int) TFmode][(int) SImode][0] = CODE_FOR_fix_trunctfsi2;
|
||||
add_optab->handlers[(int) DImode].insn_code = CODE_FOR_adddi3;
|
||||
add_optab->handlers[(int) SImode].insn_code = CODE_FOR_addsi3;
|
||||
sub_optab->handlers[(int) DImode].insn_code = CODE_FOR_subdi3;
|
||||
sub_optab->handlers[(int) SImode].insn_code = CODE_FOR_subsi3;
|
||||
if (HAVE_mulsi3)
|
||||
smul_optab->handlers[(int) SImode].insn_code = CODE_FOR_mulsi3;
|
||||
if (HAVE_mulsidi3)
|
||||
smul_widen_optab->handlers[(int) DImode].insn_code = CODE_FOR_mulsidi3;
|
||||
if (HAVE_umulsidi3)
|
||||
umul_widen_optab->handlers[(int) DImode].insn_code = CODE_FOR_umulsidi3;
|
||||
if (HAVE_divsi3)
|
||||
sdiv_optab->handlers[(int) SImode].insn_code = CODE_FOR_divsi3;
|
||||
if (HAVE_udivsi3)
|
||||
udiv_optab->handlers[(int) SImode].insn_code = CODE_FOR_udivsi3;
|
||||
and_optab->handlers[(int) DImode].insn_code = CODE_FOR_anddi3;
|
||||
and_optab->handlers[(int) SImode].insn_code = CODE_FOR_andsi3;
|
||||
ior_optab->handlers[(int) DImode].insn_code = CODE_FOR_iordi3;
|
||||
ior_optab->handlers[(int) SImode].insn_code = CODE_FOR_iorsi3;
|
||||
xor_optab->handlers[(int) DImode].insn_code = CODE_FOR_xordi3;
|
||||
xor_optab->handlers[(int) SImode].insn_code = CODE_FOR_xorsi3;
|
||||
neg_optab->handlers[(int) DImode].insn_code = CODE_FOR_negdi2;
|
||||
neg_optab->handlers[(int) SImode].insn_code = CODE_FOR_negsi2;
|
||||
one_cmpl_optab->handlers[(int) DImode].insn_code = CODE_FOR_one_cmpldi2;
|
||||
one_cmpl_optab->handlers[(int) SImode].insn_code = CODE_FOR_one_cmplsi2;
|
||||
if (HAVE_addtf3)
|
||||
add_optab->handlers[(int) TFmode].insn_code = CODE_FOR_addtf3;
|
||||
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;
|
||||
if (HAVE_subtf3)
|
||||
sub_optab->handlers[(int) TFmode].insn_code = CODE_FOR_subtf3;
|
||||
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;
|
||||
if (HAVE_multf3)
|
||||
smul_optab->handlers[(int) TFmode].insn_code = CODE_FOR_multf3;
|
||||
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;
|
||||
if (HAVE_divtf3)
|
||||
flodiv_optab->handlers[(int) TFmode].insn_code = CODE_FOR_divtf3;
|
||||
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;
|
||||
if (HAVE_negtf2)
|
||||
neg_optab->handlers[(int) TFmode].insn_code = CODE_FOR_negtf2;
|
||||
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;
|
||||
if (HAVE_abstf2)
|
||||
abs_optab->handlers[(int) TFmode].insn_code = CODE_FOR_abstf2;
|
||||
if (HAVE_absdf2)
|
||||
abs_optab->handlers[(int) DFmode].insn_code = CODE_FOR_absdf2;
|
||||
if (HAVE_abssf2)
|
||||
abs_optab->handlers[(int) SFmode].insn_code = CODE_FOR_abssf2;
|
||||
if (HAVE_sqrttf2)
|
||||
sqrt_optab->handlers[(int) TFmode].insn_code = CODE_FOR_sqrttf2;
|
||||
if (HAVE_sqrtdf2)
|
||||
sqrt_optab->handlers[(int) DFmode].insn_code = CODE_FOR_sqrtdf2;
|
||||
if (HAVE_sqrtsf2)
|
||||
sqrt_optab->handlers[(int) SFmode].insn_code = CODE_FOR_sqrtsf2;
|
||||
ashl_optab->handlers[(int) DImode].insn_code = CODE_FOR_ashldi3;
|
||||
ashl_optab->handlers[(int) SImode].insn_code = CODE_FOR_ashlsi3;
|
||||
lshl_optab->handlers[(int) DImode].insn_code = CODE_FOR_lshldi3;
|
||||
ashr_optab->handlers[(int) SImode].insn_code = CODE_FOR_ashrsi3;
|
||||
lshr_optab->handlers[(int) SImode].insn_code = CODE_FOR_lshrsi3;
|
||||
lshr_optab->handlers[(int) DImode].insn_code = CODE_FOR_lshrdi3;
|
||||
if (HAVE_ffssi2)
|
||||
ffs_optab->handlers[(int) SImode].insn_code = CODE_FOR_ffssi2;
|
||||
}
|
File diff suppressed because it is too large
Load Diff
|
@ -0,0 +1,797 @@
|
|||
/* 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;
|
||||
|
||||
insn = ins1;
|
||||
pat = PATTERN (insn);
|
||||
x = pat;
|
||||
if (GET_CODE (x) != SET) goto L247;
|
||||
x = XEXP (pat, 0);
|
||||
operands[0] = x;
|
||||
if (! register_operand (x, SImode)) goto L247;
|
||||
x = XEXP (pat, 1);
|
||||
operands[1] = x;
|
||||
if (! memory_operand (x, SImode)) goto L247;
|
||||
do { insn = NEXT_INSN (insn);
|
||||
if (insn == 0) goto L247; }
|
||||
while (GET_CODE (insn) == NOTE
|
||||
|| (GET_CODE (insn) == INSN
|
||||
&& (GET_CODE (PATTERN (insn)) == USE
|
||||
|| GET_CODE (PATTERN (insn)) == CLOBBER)));
|
||||
if (GET_CODE (insn) == CODE_LABEL
|
||||
|| GET_CODE (insn) == BARRIER)
|
||||
goto L247;
|
||||
pat = PATTERN (insn);
|
||||
x = pat;
|
||||
if (GET_CODE (x) != SET) goto L247;
|
||||
x = XEXP (pat, 0);
|
||||
operands[2] = x;
|
||||
if (! register_operand (x, SImode)) goto L247;
|
||||
x = XEXP (pat, 1);
|
||||
operands[3] = x;
|
||||
if (! memory_operand (x, SImode)) goto L247;
|
||||
if (! (registers_ok_for_ldd_peep (operands[0], operands[2])
|
||||
&& ! MEM_VOLATILE_P (operands[1]) && ! MEM_VOLATILE_P (operands[3])
|
||||
&& addrs_ok_for_ldd_peep (XEXP (operands[1], 0), XEXP (operands[3], 0)))) goto L247;
|
||||
PATTERN (ins1) = gen_rtx (PARALLEL, VOIDmode, gen_rtvec_v (4, operands));
|
||||
INSN_CODE (ins1) = 247;
|
||||
delete_for_peephole (NEXT_INSN (ins1), insn);
|
||||
return NEXT_INSN (insn);
|
||||
L247:
|
||||
|
||||
insn = ins1;
|
||||
pat = PATTERN (insn);
|
||||
x = pat;
|
||||
if (GET_CODE (x) != SET) goto L248;
|
||||
x = XEXP (pat, 0);
|
||||
operands[0] = x;
|
||||
if (! memory_operand (x, SImode)) goto L248;
|
||||
x = XEXP (pat, 1);
|
||||
operands[1] = x;
|
||||
if (! register_operand (x, SImode)) goto L248;
|
||||
do { insn = NEXT_INSN (insn);
|
||||
if (insn == 0) goto L248; }
|
||||
while (GET_CODE (insn) == NOTE
|
||||
|| (GET_CODE (insn) == INSN
|
||||
&& (GET_CODE (PATTERN (insn)) == USE
|
||||
|| GET_CODE (PATTERN (insn)) == CLOBBER)));
|
||||
if (GET_CODE (insn) == CODE_LABEL
|
||||
|| GET_CODE (insn) == BARRIER)
|
||||
goto L248;
|
||||
pat = PATTERN (insn);
|
||||
x = pat;
|
||||
if (GET_CODE (x) != SET) goto L248;
|
||||
x = XEXP (pat, 0);
|
||||
operands[2] = x;
|
||||
if (! memory_operand (x, SImode)) goto L248;
|
||||
x = XEXP (pat, 1);
|
||||
operands[3] = x;
|
||||
if (! register_operand (x, SImode)) goto L248;
|
||||
if (! (registers_ok_for_ldd_peep (operands[1], operands[3])
|
||||
&& ! MEM_VOLATILE_P (operands[0]) && ! MEM_VOLATILE_P (operands[2])
|
||||
&& addrs_ok_for_ldd_peep (XEXP (operands[0], 0), XEXP (operands[2], 0)))) goto L248;
|
||||
PATTERN (ins1) = gen_rtx (PARALLEL, VOIDmode, gen_rtvec_v (4, operands));
|
||||
INSN_CODE (ins1) = 248;
|
||||
delete_for_peephole (NEXT_INSN (ins1), insn);
|
||||
return NEXT_INSN (insn);
|
||||
L248:
|
||||
|
||||
insn = ins1;
|
||||
pat = PATTERN (insn);
|
||||
x = pat;
|
||||
if (GET_CODE (x) != SET) goto L249;
|
||||
x = XEXP (pat, 0);
|
||||
operands[0] = x;
|
||||
if (! register_operand (x, SFmode)) goto L249;
|
||||
x = XEXP (pat, 1);
|
||||
operands[1] = x;
|
||||
if (! memory_operand (x, SFmode)) goto L249;
|
||||
do { insn = NEXT_INSN (insn);
|
||||
if (insn == 0) goto L249; }
|
||||
while (GET_CODE (insn) == NOTE
|
||||
|| (GET_CODE (insn) == INSN
|
||||
&& (GET_CODE (PATTERN (insn)) == USE
|
||||
|| GET_CODE (PATTERN (insn)) == CLOBBER)));
|
||||
if (GET_CODE (insn) == CODE_LABEL
|
||||
|| GET_CODE (insn) == BARRIER)
|
||||
goto L249;
|
||||
pat = PATTERN (insn);
|
||||
x = pat;
|
||||
if (GET_CODE (x) != SET) goto L249;
|
||||
x = XEXP (pat, 0);
|
||||
operands[2] = x;
|
||||
if (! register_operand (x, SFmode)) goto L249;
|
||||
x = XEXP (pat, 1);
|
||||
operands[3] = x;
|
||||
if (! memory_operand (x, SFmode)) goto L249;
|
||||
if (! (registers_ok_for_ldd_peep (operands[0], operands[2])
|
||||
&& ! MEM_VOLATILE_P (operands[1]) && ! MEM_VOLATILE_P (operands[3])
|
||||
&& addrs_ok_for_ldd_peep (XEXP (operands[1], 0), XEXP (operands[3], 0)))) goto L249;
|
||||
PATTERN (ins1) = gen_rtx (PARALLEL, VOIDmode, gen_rtvec_v (4, operands));
|
||||
INSN_CODE (ins1) = 249;
|
||||
delete_for_peephole (NEXT_INSN (ins1), insn);
|
||||
return NEXT_INSN (insn);
|
||||
L249:
|
||||
|
||||
insn = ins1;
|
||||
pat = PATTERN (insn);
|
||||
x = pat;
|
||||
if (GET_CODE (x) != SET) goto L250;
|
||||
x = XEXP (pat, 0);
|
||||
operands[0] = x;
|
||||
if (! memory_operand (x, SFmode)) goto L250;
|
||||
x = XEXP (pat, 1);
|
||||
operands[1] = x;
|
||||
if (! register_operand (x, SFmode)) goto L250;
|
||||
do { insn = NEXT_INSN (insn);
|
||||
if (insn == 0) goto L250; }
|
||||
while (GET_CODE (insn) == NOTE
|
||||
|| (GET_CODE (insn) == INSN
|
||||
&& (GET_CODE (PATTERN (insn)) == USE
|
||||
|| GET_CODE (PATTERN (insn)) == CLOBBER)));
|
||||
if (GET_CODE (insn) == CODE_LABEL
|
||||
|| GET_CODE (insn) == BARRIER)
|
||||
goto L250;
|
||||
pat = PATTERN (insn);
|
||||
x = pat;
|
||||
if (GET_CODE (x) != SET) goto L250;
|
||||
x = XEXP (pat, 0);
|
||||
operands[2] = x;
|
||||
if (! memory_operand (x, SFmode)) goto L250;
|
||||
x = XEXP (pat, 1);
|
||||
operands[3] = x;
|
||||
if (! register_operand (x, SFmode)) goto L250;
|
||||
if (! (registers_ok_for_ldd_peep (operands[1], operands[3])
|
||||
&& ! MEM_VOLATILE_P (operands[0]) && ! MEM_VOLATILE_P (operands[2])
|
||||
&& addrs_ok_for_ldd_peep (XEXP (operands[0], 0), XEXP (operands[2], 0)))) goto L250;
|
||||
PATTERN (ins1) = gen_rtx (PARALLEL, VOIDmode, gen_rtvec_v (4, operands));
|
||||
INSN_CODE (ins1) = 250;
|
||||
delete_for_peephole (NEXT_INSN (ins1), insn);
|
||||
return NEXT_INSN (insn);
|
||||
L250:
|
||||
|
||||
insn = ins1;
|
||||
pat = PATTERN (insn);
|
||||
x = pat;
|
||||
if (GET_CODE (x) != SET) goto L251;
|
||||
x = XEXP (pat, 0);
|
||||
operands[0] = x;
|
||||
if (! register_operand (x, SImode)) goto L251;
|
||||
x = XEXP (pat, 1);
|
||||
operands[1] = x;
|
||||
if (! memory_operand (x, SImode)) goto L251;
|
||||
do { insn = NEXT_INSN (insn);
|
||||
if (insn == 0) goto L251; }
|
||||
while (GET_CODE (insn) == NOTE
|
||||
|| (GET_CODE (insn) == INSN
|
||||
&& (GET_CODE (PATTERN (insn)) == USE
|
||||
|| GET_CODE (PATTERN (insn)) == CLOBBER)));
|
||||
if (GET_CODE (insn) == CODE_LABEL
|
||||
|| GET_CODE (insn) == BARRIER)
|
||||
goto L251;
|
||||
pat = PATTERN (insn);
|
||||
x = pat;
|
||||
if (GET_CODE (x) != SET) goto L251;
|
||||
x = XEXP (pat, 0);
|
||||
operands[2] = x;
|
||||
if (! register_operand (x, SImode)) goto L251;
|
||||
x = XEXP (pat, 1);
|
||||
operands[3] = x;
|
||||
if (! memory_operand (x, SImode)) goto L251;
|
||||
if (! (registers_ok_for_ldd_peep (operands[2], operands[0])
|
||||
&& ! MEM_VOLATILE_P (operands[3]) && ! MEM_VOLATILE_P (operands[1])
|
||||
&& addrs_ok_for_ldd_peep (XEXP (operands[3], 0), XEXP (operands[1], 0)))) goto L251;
|
||||
PATTERN (ins1) = gen_rtx (PARALLEL, VOIDmode, gen_rtvec_v (4, operands));
|
||||
INSN_CODE (ins1) = 251;
|
||||
delete_for_peephole (NEXT_INSN (ins1), insn);
|
||||
return NEXT_INSN (insn);
|
||||
L251:
|
||||
|
||||
insn = ins1;
|
||||
pat = PATTERN (insn);
|
||||
x = pat;
|
||||
if (GET_CODE (x) != SET) goto L252;
|
||||
x = XEXP (pat, 0);
|
||||
operands[0] = x;
|
||||
if (! memory_operand (x, SImode)) goto L252;
|
||||
x = XEXP (pat, 1);
|
||||
operands[1] = x;
|
||||
if (! register_operand (x, SImode)) goto L252;
|
||||
do { insn = NEXT_INSN (insn);
|
||||
if (insn == 0) goto L252; }
|
||||
while (GET_CODE (insn) == NOTE
|
||||
|| (GET_CODE (insn) == INSN
|
||||
&& (GET_CODE (PATTERN (insn)) == USE
|
||||
|| GET_CODE (PATTERN (insn)) == CLOBBER)));
|
||||
if (GET_CODE (insn) == CODE_LABEL
|
||||
|| GET_CODE (insn) == BARRIER)
|
||||
goto L252;
|
||||
pat = PATTERN (insn);
|
||||
x = pat;
|
||||
if (GET_CODE (x) != SET) goto L252;
|
||||
x = XEXP (pat, 0);
|
||||
operands[2] = x;
|
||||
if (! memory_operand (x, SImode)) goto L252;
|
||||
x = XEXP (pat, 1);
|
||||
operands[3] = x;
|
||||
if (! register_operand (x, SImode)) goto L252;
|
||||
if (! (registers_ok_for_ldd_peep (operands[3], operands[1])
|
||||
&& ! MEM_VOLATILE_P (operands[2]) && ! MEM_VOLATILE_P (operands[0])
|
||||
&& addrs_ok_for_ldd_peep (XEXP (operands[2], 0), XEXP (operands[0], 0)))) goto L252;
|
||||
PATTERN (ins1) = gen_rtx (PARALLEL, VOIDmode, gen_rtvec_v (4, operands));
|
||||
INSN_CODE (ins1) = 252;
|
||||
delete_for_peephole (NEXT_INSN (ins1), insn);
|
||||
return NEXT_INSN (insn);
|
||||
L252:
|
||||
|
||||
insn = ins1;
|
||||
pat = PATTERN (insn);
|
||||
x = pat;
|
||||
if (GET_CODE (x) != SET) goto L253;
|
||||
x = XEXP (pat, 0);
|
||||
operands[0] = x;
|
||||
if (! register_operand (x, SFmode)) goto L253;
|
||||
x = XEXP (pat, 1);
|
||||
operands[1] = x;
|
||||
if (! memory_operand (x, SFmode)) goto L253;
|
||||
do { insn = NEXT_INSN (insn);
|
||||
if (insn == 0) goto L253; }
|
||||
while (GET_CODE (insn) == NOTE
|
||||
|| (GET_CODE (insn) == INSN
|
||||
&& (GET_CODE (PATTERN (insn)) == USE
|
||||
|| GET_CODE (PATTERN (insn)) == CLOBBER)));
|
||||
if (GET_CODE (insn) == CODE_LABEL
|
||||
|| GET_CODE (insn) == BARRIER)
|
||||
goto L253;
|
||||
pat = PATTERN (insn);
|
||||
x = pat;
|
||||
if (GET_CODE (x) != SET) goto L253;
|
||||
x = XEXP (pat, 0);
|
||||
operands[2] = x;
|
||||
if (! register_operand (x, SFmode)) goto L253;
|
||||
x = XEXP (pat, 1);
|
||||
operands[3] = x;
|
||||
if (! memory_operand (x, SFmode)) goto L253;
|
||||
if (! (registers_ok_for_ldd_peep (operands[2], operands[0])
|
||||
&& ! MEM_VOLATILE_P (operands[3]) && ! MEM_VOLATILE_P (operands[1])
|
||||
&& addrs_ok_for_ldd_peep (XEXP (operands[3], 0), XEXP (operands[1], 0)))) goto L253;
|
||||
PATTERN (ins1) = gen_rtx (PARALLEL, VOIDmode, gen_rtvec_v (4, operands));
|
||||
INSN_CODE (ins1) = 253;
|
||||
delete_for_peephole (NEXT_INSN (ins1), insn);
|
||||
return NEXT_INSN (insn);
|
||||
L253:
|
||||
|
||||
insn = ins1;
|
||||
pat = PATTERN (insn);
|
||||
x = pat;
|
||||
if (GET_CODE (x) != SET) goto L254;
|
||||
x = XEXP (pat, 0);
|
||||
operands[0] = x;
|
||||
if (! memory_operand (x, SFmode)) goto L254;
|
||||
x = XEXP (pat, 1);
|
||||
operands[1] = x;
|
||||
if (! register_operand (x, SFmode)) goto L254;
|
||||
do { insn = NEXT_INSN (insn);
|
||||
if (insn == 0) goto L254; }
|
||||
while (GET_CODE (insn) == NOTE
|
||||
|| (GET_CODE (insn) == INSN
|
||||
&& (GET_CODE (PATTERN (insn)) == USE
|
||||
|| GET_CODE (PATTERN (insn)) == CLOBBER)));
|
||||
if (GET_CODE (insn) == CODE_LABEL
|
||||
|| GET_CODE (insn) == BARRIER)
|
||||
goto L254;
|
||||
pat = PATTERN (insn);
|
||||
x = pat;
|
||||
if (GET_CODE (x) != SET) goto L254;
|
||||
x = XEXP (pat, 0);
|
||||
operands[2] = x;
|
||||
if (! memory_operand (x, SFmode)) goto L254;
|
||||
x = XEXP (pat, 1);
|
||||
operands[3] = x;
|
||||
if (! register_operand (x, SFmode)) goto L254;
|
||||
if (! (registers_ok_for_ldd_peep (operands[3], operands[1])
|
||||
&& ! MEM_VOLATILE_P (operands[2]) && ! MEM_VOLATILE_P (operands[0])
|
||||
&& addrs_ok_for_ldd_peep (XEXP (operands[2], 0), XEXP (operands[0], 0)))) goto L254;
|
||||
PATTERN (ins1) = gen_rtx (PARALLEL, VOIDmode, gen_rtvec_v (4, operands));
|
||||
INSN_CODE (ins1) = 254;
|
||||
delete_for_peephole (NEXT_INSN (ins1), insn);
|
||||
return NEXT_INSN (insn);
|
||||
L254:
|
||||
|
||||
insn = ins1;
|
||||
pat = PATTERN (insn);
|
||||
x = pat;
|
||||
if (GET_CODE (x) != SET) goto L255;
|
||||
x = XEXP (pat, 0);
|
||||
operands[0] = x;
|
||||
if (! register_operand (x, SImode)) goto L255;
|
||||
x = XEXP (pat, 1);
|
||||
operands[1] = x;
|
||||
if (! register_operand (x, SImode)) goto L255;
|
||||
do { insn = NEXT_INSN (insn);
|
||||
if (insn == 0) goto L255; }
|
||||
while (GET_CODE (insn) == NOTE
|
||||
|| (GET_CODE (insn) == INSN
|
||||
&& (GET_CODE (PATTERN (insn)) == USE
|
||||
|| GET_CODE (PATTERN (insn)) == CLOBBER)));
|
||||
if (GET_CODE (insn) == CODE_LABEL
|
||||
|| GET_CODE (insn) == BARRIER)
|
||||
goto L255;
|
||||
pat = PATTERN (insn);
|
||||
x = pat;
|
||||
if (GET_CODE (x) != SET) goto L255;
|
||||
x = XEXP (pat, 0);
|
||||
if (GET_CODE (x) != REG) goto L255;
|
||||
if (GET_MODE (x) != CCmode) goto L255;
|
||||
if (XINT (x, 0) != 0) goto L255;
|
||||
x = XEXP (pat, 1);
|
||||
if (GET_CODE (x) != COMPARE) goto L255;
|
||||
if (GET_MODE (x) != CCmode) goto L255;
|
||||
x = XEXP (XEXP (pat, 1), 0);
|
||||
operands[2] = x;
|
||||
if (! register_operand (x, SImode)) goto L255;
|
||||
x = XEXP (XEXP (pat, 1), 1);
|
||||
if (GET_CODE (x) != CONST_INT) goto L255;
|
||||
if (XWINT (x, 0) != 0) goto L255;
|
||||
if (! ((rtx_equal_p (operands[2], operands[0])
|
||||
|| rtx_equal_p (operands[2], operands[1]))
|
||||
&& ! FP_REG_P (operands[0]) && ! FP_REG_P (operands[1]))) goto L255;
|
||||
PATTERN (ins1) = gen_rtx (PARALLEL, VOIDmode, gen_rtvec_v (3, operands));
|
||||
INSN_CODE (ins1) = 255;
|
||||
delete_for_peephole (NEXT_INSN (ins1), insn);
|
||||
return NEXT_INSN (insn);
|
||||
L255:
|
||||
|
||||
insn = ins1;
|
||||
pat = PATTERN (insn);
|
||||
x = pat;
|
||||
if (GET_CODE (x) != SET) goto L256;
|
||||
x = XEXP (pat, 0);
|
||||
operands[0] = x;
|
||||
if (! register_operand (x, HImode)) goto L256;
|
||||
x = XEXP (pat, 1);
|
||||
operands[1] = x;
|
||||
if (! memory_operand (x, HImode)) goto L256;
|
||||
do { insn = NEXT_INSN (insn);
|
||||
if (insn == 0) goto L256; }
|
||||
while (GET_CODE (insn) == NOTE
|
||||
|| (GET_CODE (insn) == INSN
|
||||
&& (GET_CODE (PATTERN (insn)) == USE
|
||||
|| GET_CODE (PATTERN (insn)) == CLOBBER)));
|
||||
if (GET_CODE (insn) == CODE_LABEL
|
||||
|| GET_CODE (insn) == BARRIER)
|
||||
goto L256;
|
||||
pat = PATTERN (insn);
|
||||
x = pat;
|
||||
if (GET_CODE (x) != SET) goto L256;
|
||||
x = XEXP (pat, 0);
|
||||
operands[2] = x;
|
||||
if (! register_operand (x, SImode)) goto L256;
|
||||
x = XEXP (pat, 1);
|
||||
if (GET_CODE (x) != SIGN_EXTEND) goto L256;
|
||||
if (GET_MODE (x) != SImode) goto L256;
|
||||
x = XEXP (XEXP (pat, 1), 0);
|
||||
if (!rtx_equal_p (operands[0], x)) goto L256;
|
||||
do { insn = NEXT_INSN (insn);
|
||||
if (insn == 0) goto L256; }
|
||||
while (GET_CODE (insn) == NOTE
|
||||
|| (GET_CODE (insn) == INSN
|
||||
&& (GET_CODE (PATTERN (insn)) == USE
|
||||
|| GET_CODE (PATTERN (insn)) == CLOBBER)));
|
||||
if (GET_CODE (insn) == CODE_LABEL
|
||||
|| GET_CODE (insn) == BARRIER)
|
||||
goto L256;
|
||||
pat = PATTERN (insn);
|
||||
x = pat;
|
||||
if (GET_CODE (x) != SET) goto L256;
|
||||
x = XEXP (pat, 0);
|
||||
if (GET_CODE (x) != REG) goto L256;
|
||||
if (GET_MODE (x) != CCmode) goto L256;
|
||||
if (XINT (x, 0) != 0) goto L256;
|
||||
x = XEXP (pat, 1);
|
||||
if (GET_CODE (x) != COMPARE) goto L256;
|
||||
if (GET_MODE (x) != CCmode) goto L256;
|
||||
x = XEXP (XEXP (pat, 1), 0);
|
||||
if (!rtx_equal_p (operands[2], x)) goto L256;
|
||||
x = XEXP (XEXP (pat, 1), 1);
|
||||
if (GET_CODE (x) != CONST_INT) goto L256;
|
||||
if (XWINT (x, 0) != 0) goto L256;
|
||||
PATTERN (ins1) = gen_rtx (PARALLEL, VOIDmode, gen_rtvec_v (3, operands));
|
||||
INSN_CODE (ins1) = 256;
|
||||
delete_for_peephole (NEXT_INSN (ins1), insn);
|
||||
return NEXT_INSN (insn);
|
||||
L256:
|
||||
|
||||
insn = ins1;
|
||||
pat = PATTERN (insn);
|
||||
x = pat;
|
||||
if (GET_CODE (x) != SET) goto L257;
|
||||
x = XEXP (pat, 0);
|
||||
operands[0] = x;
|
||||
if (! register_operand (x, QImode)) goto L257;
|
||||
x = XEXP (pat, 1);
|
||||
operands[1] = x;
|
||||
if (! memory_operand (x, QImode)) goto L257;
|
||||
do { insn = NEXT_INSN (insn);
|
||||
if (insn == 0) goto L257; }
|
||||
while (GET_CODE (insn) == NOTE
|
||||
|| (GET_CODE (insn) == INSN
|
||||
&& (GET_CODE (PATTERN (insn)) == USE
|
||||
|| GET_CODE (PATTERN (insn)) == CLOBBER)));
|
||||
if (GET_CODE (insn) == CODE_LABEL
|
||||
|| GET_CODE (insn) == BARRIER)
|
||||
goto L257;
|
||||
pat = PATTERN (insn);
|
||||
x = pat;
|
||||
if (GET_CODE (x) != SET) goto L257;
|
||||
x = XEXP (pat, 0);
|
||||
operands[2] = x;
|
||||
if (! register_operand (x, SImode)) goto L257;
|
||||
x = XEXP (pat, 1);
|
||||
if (GET_CODE (x) != SIGN_EXTEND) goto L257;
|
||||
if (GET_MODE (x) != SImode) goto L257;
|
||||
x = XEXP (XEXP (pat, 1), 0);
|
||||
if (!rtx_equal_p (operands[0], x)) goto L257;
|
||||
do { insn = NEXT_INSN (insn);
|
||||
if (insn == 0) goto L257; }
|
||||
while (GET_CODE (insn) == NOTE
|
||||
|| (GET_CODE (insn) == INSN
|
||||
&& (GET_CODE (PATTERN (insn)) == USE
|
||||
|| GET_CODE (PATTERN (insn)) == CLOBBER)));
|
||||
if (GET_CODE (insn) == CODE_LABEL
|
||||
|| GET_CODE (insn) == BARRIER)
|
||||
goto L257;
|
||||
pat = PATTERN (insn);
|
||||
x = pat;
|
||||
if (GET_CODE (x) != SET) goto L257;
|
||||
x = XEXP (pat, 0);
|
||||
if (GET_CODE (x) != REG) goto L257;
|
||||
if (GET_MODE (x) != CCmode) goto L257;
|
||||
if (XINT (x, 0) != 0) goto L257;
|
||||
x = XEXP (pat, 1);
|
||||
if (GET_CODE (x) != COMPARE) goto L257;
|
||||
if (GET_MODE (x) != CCmode) goto L257;
|
||||
x = XEXP (XEXP (pat, 1), 0);
|
||||
if (!rtx_equal_p (operands[2], x)) goto L257;
|
||||
x = XEXP (XEXP (pat, 1), 1);
|
||||
if (GET_CODE (x) != CONST_INT) goto L257;
|
||||
if (XWINT (x, 0) != 0) goto L257;
|
||||
PATTERN (ins1) = gen_rtx (PARALLEL, VOIDmode, gen_rtvec_v (3, operands));
|
||||
INSN_CODE (ins1) = 257;
|
||||
delete_for_peephole (NEXT_INSN (ins1), insn);
|
||||
return NEXT_INSN (insn);
|
||||
L257:
|
||||
|
||||
insn = ins1;
|
||||
pat = PATTERN (insn);
|
||||
x = pat;
|
||||
if (GET_CODE (x) != SET) goto L258;
|
||||
x = XEXP (pat, 0);
|
||||
operands[0] = x;
|
||||
if (! register_operand (x, HImode)) goto L258;
|
||||
x = XEXP (pat, 1);
|
||||
operands[1] = x;
|
||||
if (! memory_operand (x, HImode)) goto L258;
|
||||
do { insn = NEXT_INSN (insn);
|
||||
if (insn == 0) goto L258; }
|
||||
while (GET_CODE (insn) == NOTE
|
||||
|| (GET_CODE (insn) == INSN
|
||||
&& (GET_CODE (PATTERN (insn)) == USE
|
||||
|| GET_CODE (PATTERN (insn)) == CLOBBER)));
|
||||
if (GET_CODE (insn) == CODE_LABEL
|
||||
|| GET_CODE (insn) == BARRIER)
|
||||
goto L258;
|
||||
pat = PATTERN (insn);
|
||||
x = pat;
|
||||
if (GET_CODE (x) != SET) goto L258;
|
||||
x = XEXP (pat, 0);
|
||||
operands[2] = x;
|
||||
if (! register_operand (x, SImode)) goto L258;
|
||||
x = XEXP (pat, 1);
|
||||
if (GET_CODE (x) != SIGN_EXTEND) goto L258;
|
||||
if (GET_MODE (x) != SImode) goto L258;
|
||||
x = XEXP (XEXP (pat, 1), 0);
|
||||
if (!rtx_equal_p (operands[0], x)) goto L258;
|
||||
if (! (dead_or_set_p (insn, operands[0]))) goto L258;
|
||||
PATTERN (ins1) = gen_rtx (PARALLEL, VOIDmode, gen_rtvec_v (3, operands));
|
||||
INSN_CODE (ins1) = 258;
|
||||
delete_for_peephole (NEXT_INSN (ins1), insn);
|
||||
return NEXT_INSN (insn);
|
||||
L258:
|
||||
|
||||
insn = ins1;
|
||||
pat = PATTERN (insn);
|
||||
x = pat;
|
||||
if (GET_CODE (x) != SET) goto L259;
|
||||
x = XEXP (pat, 0);
|
||||
operands[0] = x;
|
||||
if (! register_operand (x, QImode)) goto L259;
|
||||
x = XEXP (pat, 1);
|
||||
operands[1] = x;
|
||||
if (! memory_operand (x, QImode)) goto L259;
|
||||
do { insn = NEXT_INSN (insn);
|
||||
if (insn == 0) goto L259; }
|
||||
while (GET_CODE (insn) == NOTE
|
||||
|| (GET_CODE (insn) == INSN
|
||||
&& (GET_CODE (PATTERN (insn)) == USE
|
||||
|| GET_CODE (PATTERN (insn)) == CLOBBER)));
|
||||
if (GET_CODE (insn) == CODE_LABEL
|
||||
|| GET_CODE (insn) == BARRIER)
|
||||
goto L259;
|
||||
pat = PATTERN (insn);
|
||||
x = pat;
|
||||
if (GET_CODE (x) != SET) goto L259;
|
||||
x = XEXP (pat, 0);
|
||||
operands[2] = x;
|
||||
if (! register_operand (x, SImode)) goto L259;
|
||||
x = XEXP (pat, 1);
|
||||
if (GET_CODE (x) != SIGN_EXTEND) goto L259;
|
||||
if (GET_MODE (x) != SImode) goto L259;
|
||||
x = XEXP (XEXP (pat, 1), 0);
|
||||
if (!rtx_equal_p (operands[0], x)) goto L259;
|
||||
if (! (dead_or_set_p (insn, operands[0]))) goto L259;
|
||||
PATTERN (ins1) = gen_rtx (PARALLEL, VOIDmode, gen_rtvec_v (3, operands));
|
||||
INSN_CODE (ins1) = 259;
|
||||
delete_for_peephole (NEXT_INSN (ins1), insn);
|
||||
return NEXT_INSN (insn);
|
||||
L259:
|
||||
|
||||
insn = ins1;
|
||||
pat = PATTERN (insn);
|
||||
x = pat;
|
||||
if (GET_CODE (x) != SET) goto L260;
|
||||
x = XEXP (pat, 0);
|
||||
operands[0] = x;
|
||||
if (! register_operand (x, SImode)) goto L260;
|
||||
x = XEXP (pat, 1);
|
||||
if (GET_CODE (x) != LO_SUM) goto L260;
|
||||
if (GET_MODE (x) != SImode) goto L260;
|
||||
x = XEXP (XEXP (pat, 1), 0);
|
||||
if (!rtx_equal_p (operands[0], x)) goto L260;
|
||||
x = XEXP (XEXP (pat, 1), 1);
|
||||
operands[1] = x;
|
||||
if (! immediate_operand (x, SImode)) goto L260;
|
||||
do { insn = NEXT_INSN (insn);
|
||||
if (insn == 0) goto L260; }
|
||||
while (GET_CODE (insn) == NOTE
|
||||
|| (GET_CODE (insn) == INSN
|
||||
&& (GET_CODE (PATTERN (insn)) == USE
|
||||
|| GET_CODE (PATTERN (insn)) == CLOBBER)));
|
||||
if (GET_CODE (insn) == CODE_LABEL
|
||||
|| GET_CODE (insn) == BARRIER)
|
||||
goto L260;
|
||||
pat = PATTERN (insn);
|
||||
x = pat;
|
||||
if (GET_CODE (x) != SET) goto L260;
|
||||
x = XEXP (pat, 0);
|
||||
operands[2] = x;
|
||||
if (! register_operand (x, DFmode)) goto L260;
|
||||
x = XEXP (pat, 1);
|
||||
if (GET_CODE (x) != MEM) goto L260;
|
||||
if (GET_MODE (x) != DFmode) goto L260;
|
||||
x = XEXP (XEXP (pat, 1), 0);
|
||||
if (!rtx_equal_p (operands[0], x)) goto L260;
|
||||
if (! (RTX_UNCHANGING_P (operands[1]) && reg_unused_after (operands[0], insn))) goto L260;
|
||||
PATTERN (ins1) = gen_rtx (PARALLEL, VOIDmode, gen_rtvec_v (3, operands));
|
||||
INSN_CODE (ins1) = 260;
|
||||
delete_for_peephole (NEXT_INSN (ins1), insn);
|
||||
return NEXT_INSN (insn);
|
||||
L260:
|
||||
|
||||
insn = ins1;
|
||||
pat = PATTERN (insn);
|
||||
x = pat;
|
||||
if (GET_CODE (x) != SET) goto L261;
|
||||
x = XEXP (pat, 0);
|
||||
operands[0] = x;
|
||||
if (! register_operand (x, SImode)) goto L261;
|
||||
x = XEXP (pat, 1);
|
||||
if (GET_CODE (x) != LO_SUM) goto L261;
|
||||
if (GET_MODE (x) != SImode) goto L261;
|
||||
x = XEXP (XEXP (pat, 1), 0);
|
||||
if (!rtx_equal_p (operands[0], x)) goto L261;
|
||||
x = XEXP (XEXP (pat, 1), 1);
|
||||
operands[1] = x;
|
||||
if (! immediate_operand (x, SImode)) goto L261;
|
||||
do { insn = NEXT_INSN (insn);
|
||||
if (insn == 0) goto L261; }
|
||||
while (GET_CODE (insn) == NOTE
|
||||
|| (GET_CODE (insn) == INSN
|
||||
&& (GET_CODE (PATTERN (insn)) == USE
|
||||
|| GET_CODE (PATTERN (insn)) == CLOBBER)));
|
||||
if (GET_CODE (insn) == CODE_LABEL
|
||||
|| GET_CODE (insn) == BARRIER)
|
||||
goto L261;
|
||||
pat = PATTERN (insn);
|
||||
x = pat;
|
||||
if (GET_CODE (x) != SET) goto L261;
|
||||
x = XEXP (pat, 0);
|
||||
operands[2] = x;
|
||||
if (! register_operand (x, SFmode)) goto L261;
|
||||
x = XEXP (pat, 1);
|
||||
if (GET_CODE (x) != MEM) goto L261;
|
||||
if (GET_MODE (x) != SFmode) goto L261;
|
||||
x = XEXP (XEXP (pat, 1), 0);
|
||||
if (!rtx_equal_p (operands[0], x)) goto L261;
|
||||
if (! (RTX_UNCHANGING_P (operands[1]) && reg_unused_after (operands[0], insn))) goto L261;
|
||||
PATTERN (ins1) = gen_rtx (PARALLEL, VOIDmode, gen_rtvec_v (3, operands));
|
||||
INSN_CODE (ins1) = 261;
|
||||
delete_for_peephole (NEXT_INSN (ins1), insn);
|
||||
return NEXT_INSN (insn);
|
||||
L261:
|
||||
|
||||
insn = ins1;
|
||||
pat = PATTERN (insn);
|
||||
x = pat;
|
||||
if (GET_CODE (x) != PARALLEL) goto L268;
|
||||
if (XVECLEN (x, 0) != 2) goto L268;
|
||||
x = XVECEXP (pat, 0, 0);
|
||||
if (GET_CODE (x) != SET) goto L268;
|
||||
x = XEXP (XVECEXP (pat, 0, 0), 0);
|
||||
operands[0] = x;
|
||||
x = XEXP (XVECEXP (pat, 0, 0), 1);
|
||||
if (GET_CODE (x) != CALL) goto L268;
|
||||
x = XEXP (XEXP (XVECEXP (pat, 0, 0), 1), 0);
|
||||
if (GET_CODE (x) != MEM) goto L268;
|
||||
if (GET_MODE (x) != SImode) goto L268;
|
||||
x = XEXP (XEXP (XEXP (XVECEXP (pat, 0, 0), 1), 0), 0);
|
||||
operands[1] = x;
|
||||
if (! call_operand_address (x, SImode)) goto L268;
|
||||
x = XEXP (XEXP (XVECEXP (pat, 0, 0), 1), 1);
|
||||
operands[2] = x;
|
||||
x = XVECEXP (pat, 0, 1);
|
||||
if (GET_CODE (x) != CLOBBER) goto L268;
|
||||
x = XEXP (XVECEXP (pat, 0, 1), 0);
|
||||
if (GET_CODE (x) != REG) goto L268;
|
||||
if (GET_MODE (x) != SImode) goto L268;
|
||||
if (XINT (x, 0) != 15) goto L268;
|
||||
do { insn = NEXT_INSN (insn);
|
||||
if (insn == 0) goto L268; }
|
||||
while (GET_CODE (insn) == NOTE
|
||||
|| (GET_CODE (insn) == INSN
|
||||
&& (GET_CODE (PATTERN (insn)) == USE
|
||||
|| GET_CODE (PATTERN (insn)) == CLOBBER)));
|
||||
if (GET_CODE (insn) == CODE_LABEL
|
||||
|| GET_CODE (insn) == BARRIER)
|
||||
goto L268;
|
||||
pat = PATTERN (insn);
|
||||
x = pat;
|
||||
if (GET_CODE (x) != SET) goto L268;
|
||||
x = XEXP (pat, 0);
|
||||
if (GET_CODE (x) != PC) goto L268;
|
||||
x = XEXP (pat, 1);
|
||||
if (GET_CODE (x) != LABEL_REF) goto L268;
|
||||
x = XEXP (XEXP (pat, 1), 0);
|
||||
operands[3] = x;
|
||||
if (! (short_branch (INSN_UID (insn), INSN_UID (operands[3])))) goto L268;
|
||||
PATTERN (ins1) = gen_rtx (PARALLEL, VOIDmode, gen_rtvec_v (4, operands));
|
||||
INSN_CODE (ins1) = 268;
|
||||
delete_for_peephole (NEXT_INSN (ins1), insn);
|
||||
return NEXT_INSN (insn);
|
||||
L268:
|
||||
|
||||
insn = ins1;
|
||||
pat = PATTERN (insn);
|
||||
x = pat;
|
||||
if (GET_CODE (x) != PARALLEL) goto L269;
|
||||
if (XVECLEN (x, 0) != 2) goto L269;
|
||||
x = XVECEXP (pat, 0, 0);
|
||||
if (GET_CODE (x) != CALL) goto L269;
|
||||
x = XEXP (XVECEXP (pat, 0, 0), 0);
|
||||
if (GET_CODE (x) != MEM) goto L269;
|
||||
if (GET_MODE (x) != SImode) goto L269;
|
||||
x = XEXP (XEXP (XVECEXP (pat, 0, 0), 0), 0);
|
||||
operands[0] = x;
|
||||
if (! call_operand_address (x, SImode)) goto L269;
|
||||
x = XEXP (XVECEXP (pat, 0, 0), 1);
|
||||
operands[1] = x;
|
||||
x = XVECEXP (pat, 0, 1);
|
||||
if (GET_CODE (x) != CLOBBER) goto L269;
|
||||
x = XEXP (XVECEXP (pat, 0, 1), 0);
|
||||
if (GET_CODE (x) != REG) goto L269;
|
||||
if (GET_MODE (x) != SImode) goto L269;
|
||||
if (XINT (x, 0) != 15) goto L269;
|
||||
do { insn = NEXT_INSN (insn);
|
||||
if (insn == 0) goto L269; }
|
||||
while (GET_CODE (insn) == NOTE
|
||||
|| (GET_CODE (insn) == INSN
|
||||
&& (GET_CODE (PATTERN (insn)) == USE
|
||||
|| GET_CODE (PATTERN (insn)) == CLOBBER)));
|
||||
if (GET_CODE (insn) == CODE_LABEL
|
||||
|| GET_CODE (insn) == BARRIER)
|
||||
goto L269;
|
||||
pat = PATTERN (insn);
|
||||
x = pat;
|
||||
if (GET_CODE (x) != SET) goto L269;
|
||||
x = XEXP (pat, 0);
|
||||
if (GET_CODE (x) != PC) goto L269;
|
||||
x = XEXP (pat, 1);
|
||||
if (GET_CODE (x) != LABEL_REF) goto L269;
|
||||
x = XEXP (XEXP (pat, 1), 0);
|
||||
operands[2] = x;
|
||||
if (! (short_branch (INSN_UID (insn), INSN_UID (operands[2])))) goto L269;
|
||||
PATTERN (ins1) = gen_rtx (PARALLEL, VOIDmode, gen_rtvec_v (3, operands));
|
||||
INSN_CODE (ins1) = 269;
|
||||
delete_for_peephole (NEXT_INSN (ins1), insn);
|
||||
return NEXT_INSN (insn);
|
||||
L269:
|
||||
|
||||
insn = ins1;
|
||||
pat = PATTERN (insn);
|
||||
x = pat;
|
||||
if (GET_CODE (x) != PARALLEL) goto L270;
|
||||
if (XVECLEN (x, 0) != 2) goto L270;
|
||||
x = XVECEXP (pat, 0, 0);
|
||||
if (GET_CODE (x) != SET) goto L270;
|
||||
x = XEXP (XVECEXP (pat, 0, 0), 0);
|
||||
operands[0] = x;
|
||||
if (! register_operand (x, SImode)) goto L270;
|
||||
x = XEXP (XVECEXP (pat, 0, 0), 1);
|
||||
if (GET_CODE (x) != MINUS) goto L270;
|
||||
if (GET_MODE (x) != SImode) goto L270;
|
||||
x = XEXP (XEXP (XVECEXP (pat, 0, 0), 1), 0);
|
||||
operands[1] = x;
|
||||
if (! reg_or_0_operand (x, SImode)) goto L270;
|
||||
x = XEXP (XEXP (XVECEXP (pat, 0, 0), 1), 1);
|
||||
if (GET_CODE (x) != REG) goto L270;
|
||||
if (GET_MODE (x) != SImode) goto L270;
|
||||
if (XINT (x, 0) != 0) goto L270;
|
||||
x = XVECEXP (pat, 0, 1);
|
||||
if (GET_CODE (x) != CLOBBER) goto L270;
|
||||
x = XEXP (XVECEXP (pat, 0, 1), 0);
|
||||
if (GET_CODE (x) != REG) goto L270;
|
||||
if (GET_MODE (x) != CCmode) goto L270;
|
||||
if (XINT (x, 0) != 0) goto L270;
|
||||
do { insn = NEXT_INSN (insn);
|
||||
if (insn == 0) goto L270; }
|
||||
while (GET_CODE (insn) == NOTE
|
||||
|| (GET_CODE (insn) == INSN
|
||||
&& (GET_CODE (PATTERN (insn)) == USE
|
||||
|| GET_CODE (PATTERN (insn)) == CLOBBER)));
|
||||
if (GET_CODE (insn) == CODE_LABEL
|
||||
|| GET_CODE (insn) == BARRIER)
|
||||
goto L270;
|
||||
pat = PATTERN (insn);
|
||||
x = pat;
|
||||
if (GET_CODE (x) != SET) goto L270;
|
||||
x = XEXP (pat, 0);
|
||||
if (GET_CODE (x) != REG) goto L270;
|
||||
if (GET_MODE (x) != CCmode) goto L270;
|
||||
if (XINT (x, 0) != 0) goto L270;
|
||||
x = XEXP (pat, 1);
|
||||
if (GET_CODE (x) != COMPARE) goto L270;
|
||||
x = XEXP (XEXP (pat, 1), 0);
|
||||
if (!rtx_equal_p (operands[0], x)) goto L270;
|
||||
x = XEXP (XEXP (pat, 1), 1);
|
||||
if (GET_CODE (x) != CONST_INT) goto L270;
|
||||
if (XWINT (x, 0) != 0) goto L270;
|
||||
PATTERN (ins1) = gen_rtx (PARALLEL, VOIDmode, gen_rtvec_v (2, operands));
|
||||
INSN_CODE (ins1) = 270;
|
||||
delete_for_peephole (NEXT_INSN (ins1), insn);
|
||||
return NEXT_INSN (insn);
|
||||
L270:
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
rtx peep_operand[4];
|
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
|
@ -0,0 +1,55 @@
|
|||
/* Configuration for GNU C-compiler for Sun Sparc.
|
||||
Copyright (C) 1988 Free Software Foundation, Inc.
|
||||
Contributed by Michael Tiemann (tiemann@cygnus.com).
|
||||
|
||||
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
|
||||
|
||||
/* 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
|
||||
|
||||
/* Doubles are stored in memory with the high order word first. This
|
||||
matters when cross-compiling. */
|
||||
#define HOST_WORDS_BIG_ENDIAN 1
|
||||
|
||||
/* target machine dependencies.
|
||||
tm.h is a symbolic link to the actual target specific file. */
|
||||
#include "tm.h"
|
||||
|
||||
/* Arguments to use with `exit'. */
|
||||
#define SUCCESS_EXIT_CODE 0
|
||||
#define FATAL_EXIT_CODE 33
|
||||
|
||||
/* If compiled with Sun CC, the use of alloca requires this #include. */
|
||||
#ifndef __GNUC__
|
||||
#include "alloca.h"
|
||||
#endif
|
||||
|
||||
/* If compiled with GNU C, use the built-in alloca. */
|
||||
#ifdef __GNUC__
|
||||
/* Use an arg in this macro because that's what some other
|
||||
system does--let's avoid conflict. */
|
||||
#define alloca(x) __builtin_alloca(x)
|
||||
#endif
|
|
@ -0,0 +1,101 @@
|
|||
/* Configuration for NetBSD Sparc */
|
||||
/* $Id: tm.h,v 1.1 1993/11/30 23:09:15 pk Exp $ */
|
||||
|
||||
#include "sparc/sparc.h"
|
||||
|
||||
#undef LIB_SPEC
|
||||
#define LIB_SPEC "%{!p:%{!pg:-lc}}%{p:-lc_p}%{pg:-lc_p} %{g:-lg}"
|
||||
|
||||
#undef CPP_PREDEFINES
|
||||
#define CPP_PREDEFINES "-Dsparc -D__NetBSD__ -D__BSD_NET2__ -Dunix"
|
||||
/* Provide required defaults for linker -e and -d switches. */
|
||||
|
||||
#define LINK_SPEC \
|
||||
"%{!nostdlib:%{!r*:%{!e*:-e start}}} -dc -dp %{static:-Bstatic} %{assert*}"
|
||||
|
||||
#define HAVE_ATEXIT
|
||||
|
||||
#ifdef notyet
|
||||
/*
|
||||
* Some imports from svr4.h in support of shared libraries.
|
||||
* Currently, we need the DECLARE_OBJECT_SIZE stuff.
|
||||
*/
|
||||
|
||||
/* Define the strings used for the special svr4 .type and .size directives.
|
||||
These strings generally do not vary from one system running svr4 to
|
||||
another, but if a given system (e.g. m88k running svr) needs to use
|
||||
different pseudo-op names for these, they may be overridden in the
|
||||
file which includes this one. */
|
||||
|
||||
#define TYPE_ASM_OP ".type"
|
||||
#define SIZE_ASM_OP ".size"
|
||||
#define WEAK_ASM_OP ".weak"
|
||||
|
||||
/* The following macro defines the format used to output the second
|
||||
operand of the .type assembler directive. Different svr4 assemblers
|
||||
expect various different forms for this operand. The one given here
|
||||
is just a default. You may need to override it in your machine-
|
||||
specific tm.h file (depending upon the particulars of your assembler). */
|
||||
|
||||
#define TYPE_OPERAND_FMT "@%s"
|
||||
|
||||
/* These macros generate the special .type and .size directives which
|
||||
are used to set the corresponding fields of the linker symbol table
|
||||
entries in an ELF object file under SVR4. These macros also output
|
||||
the starting labels for the relevant functions/objects. */
|
||||
|
||||
/* Write the extra assembler code needed to declare a function properly.
|
||||
Some svr4 assemblers need to also have something extra said about the
|
||||
function's return value. We allow for that here. */
|
||||
|
||||
#define ASM_DECLARE_FUNCTION_NAME(FILE, NAME, DECL) \
|
||||
do { \
|
||||
fprintf (FILE, "\t%s\t ", TYPE_ASM_OP); \
|
||||
assemble_name (FILE, NAME); \
|
||||
putc (',', FILE); \
|
||||
fprintf (FILE, TYPE_OPERAND_FMT, "function"); \
|
||||
putc ('\n', FILE); \
|
||||
ASM_DECLARE_RESULT (FILE, DECL_RESULT (DECL)); \
|
||||
ASM_OUTPUT_LABEL(FILE, NAME); \
|
||||
} while (0)
|
||||
|
||||
/* Write the extra assembler code needed to declare an object properly. */
|
||||
|
||||
#define ASM_DECLARE_OBJECT_NAME(FILE, NAME, DECL) \
|
||||
do { \
|
||||
fprintf (FILE, "\t%s\t ", TYPE_ASM_OP); \
|
||||
assemble_name (FILE, NAME); \
|
||||
putc (',', FILE); \
|
||||
fprintf (FILE, TYPE_OPERAND_FMT, "object"); \
|
||||
putc ('\n', FILE); \
|
||||
if (!flag_inhibit_size_directive) \
|
||||
{ \
|
||||
fprintf (FILE, "\t%s\t ", SIZE_ASM_OP); \
|
||||
assemble_name (FILE, NAME); \
|
||||
fprintf (FILE, ",%d\n", int_size_in_bytes (TREE_TYPE (decl))); \
|
||||
} \
|
||||
ASM_OUTPUT_LABEL(FILE, NAME); \
|
||||
} while (0)
|
||||
|
||||
/* This is how to declare the size of a function. */
|
||||
|
||||
#define ASM_DECLARE_FUNCTION_SIZE(FILE, FNAME, DECL) \
|
||||
do { \
|
||||
if (!flag_inhibit_size_directive) \
|
||||
{ \
|
||||
char label[256]; \
|
||||
static int labelno; \
|
||||
labelno++; \
|
||||
ASM_GENERATE_INTERNAL_LABEL (label, "Lfe", labelno); \
|
||||
ASM_OUTPUT_INTERNAL_LABEL (FILE, "Lfe", labelno); \
|
||||
fprintf (FILE, "\t%s\t ", SIZE_ASM_OP); \
|
||||
assemble_name (FILE, (FNAME)); \
|
||||
fprintf (FILE, ","); \
|
||||
assemble_name (FILE, label); \
|
||||
fprintf (FILE, "-"); \
|
||||
assemble_name (FILE, (FNAME)); \
|
||||
putc ('\n', FILE); \
|
||||
} \
|
||||
} while (0)
|
||||
#endif /*notyet*/
|
||||
|
Loading…
Reference in New Issue