OpenCores
URL https://opencores.org/ocsvn/openrisc/openrisc/trunk

Subversion Repositories openrisc

[/] [openrisc/] [trunk/] [gnu-old/] [gcc-4.2.2/] [gcc/] [config/] [score/] [score-mdaux.h] - Blame information for rev 816

Details | Compare with Previous | View Log

Line No. Rev Author Line
1 38 julius
/* score-mdaux.h for Sunplus S+CORE processor
2
   Copyright (C) 2005, 2007 Free Software Foundation, Inc.
3
   Contributed by Sunnorth
4
 
5
   This file is part of GCC.
6
 
7
   GCC is free software; you can redistribute it and/or modify it
8
   under the terms of the GNU General Public License as published
9
   by the Free Software Foundation; either version 3, or (at your
10
   option) any later version.
11
 
12
   GCC is distributed in the hope that it will be useful, but WITHOUT
13
   ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
14
   or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public
15
   License for more details.
16
 
17
   You should have received a copy of the GNU General Public License
18
   along with GCC; see the file COPYING3.  If not see
19
   <http://www.gnu.org/licenses/>.  */
20
 
21
#ifndef SCORE_MDAUX_0621
22
#define SCORE_MDAUX_0621
23
 
24
/* Machine Auxiliary Functions.  */
25
enum score_address_type
26
{
27
  ADD_REG,
28
  ADD_CONST_INT,
29
  ADD_SYMBOLIC
30
};
31
#ifdef RTX_CODE
32
struct score_address_info
33
{
34
  enum score_address_type type;
35
  rtx reg;
36
  rtx offset;
37
  enum rtx_code code;
38
  enum score_symbol_type symbol_type;
39
};
40
#endif
41
 
42
struct score_frame_info
43
{
44
  HOST_WIDE_INT total_size;       /* bytes that the entire frame takes up  */
45
  HOST_WIDE_INT var_size;         /* bytes that variables take up  */
46
  HOST_WIDE_INT args_size;        /* bytes that outgoing arguments take up  */
47
  HOST_WIDE_INT gp_reg_size;      /* bytes needed to store gp regs  */
48
  HOST_WIDE_INT gp_sp_offset;     /* offset from new sp to store gp registers  */
49
  HOST_WIDE_INT cprestore_size;   /* # bytes that the .cprestore slot takes up  */
50
  unsigned int  mask;             /* mask of saved gp registers  */
51
  int num_gp;                     /* number of gp registers saved  */
52
};
53
 
54
typedef void (*score_save_restore_fn) (rtx, rtx);
55
 
56
int mda_valid_base_register_p (rtx x, int strict);
57
 
58
#ifdef RTX_CODE
59
int mda_classify_address (struct score_address_info *info,
60
                          enum machine_mode mode, rtx x, int strict);
61
 
62
struct score_frame_info *mda_compute_frame_size (HOST_WIDE_INT size);
63
 
64
struct score_frame_info *mda_cached_frame (void);
65
 
66
void mda_gen_cmp (enum machine_mode mode);
67
#endif
68
 
69
int mda_symbolic_constant_p (rtx x, enum score_symbol_type *symbol_type);
70
 
71
int mda_bp (void);
72
 
73
/* Machine Expand.  */
74
void mdx_prologue (void);
75
 
76
void mdx_epilogue (int sibcall_p);
77
 
78
void mdx_movsicc (rtx *ops);
79
 
80
void mdx_call (rtx *ops, bool sibcall);
81
 
82
void mdx_call_value (rtx *ops, bool sibcall);
83
 
84
/* Machine Split.  */
85
void mds_movdi (rtx *ops);
86
 
87
void mds_zero_extract_andi (rtx *ops);
88
 
89
/* Machine Print.  */
90
enum mda_mem_unit {MDA_BYTE = 0, MDA_HWORD = 1, MDA_WORD = 2};
91
 
92
#define MDA_ALIGN_UNIT(V, UNIT)   !(V & ((1 << UNIT) - 1))
93
 
94
const char * mdp_linsn (rtx *ops, enum mda_mem_unit unit, bool sign);
95
 
96
const char * mdp_sinsn (rtx *ops, enum mda_mem_unit unit);
97
 
98
const char * mdp_select_add_imm (rtx *ops, bool set_cc);
99
 
100
const char * mdp_select (rtx *ops, const char *inst_pre,
101
                        bool commu, const char *letter, bool set_cc);
102
 
103
const char * mdp_limm (rtx *ops);
104
 
105
const char * mdp_move (rtx *ops);
106
 
107
/* Machine unaligned memory load/store. */
108
bool mdx_unaligned_load (rtx* ops);
109
 
110
bool mdx_unaligned_store (rtx* ops);
111
 
112
bool mdx_block_move (rtx* ops);
113
 
114
#endif
115
 

powered by: WebSVN 2.1.0

© copyright 1999-2024 OpenCores.org, equivalent to Oliscience, all rights reserved. OpenCores®, registered trademark.