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

Subversion Repositories openrisc

[/] [openrisc/] [trunk/] [gnu-dev/] [or1k-gcc/] [gcc/] [gencodes.c] - Blame information for rev 750

Go to most recent revision | Details | Compare with Previous | View Log

Line No. Rev Author Line
1 684 jeremybenn
/* Generate from machine description:
2
   - some macros CODE_FOR_... giving the insn_code_number value
3
   for each of the defined standard insn names.
4
   Copyright (C) 1987, 1991, 1995, 1998, 1999, 2000, 2001, 2003,
5
   2004, 2007, 2010  Free Software Foundation, Inc.
6
 
7
This file is part of GCC.
8
 
9
GCC is free software; you can redistribute it and/or modify it under
10
the terms of the GNU General Public License as published by the Free
11
Software Foundation; either version 3, or (at your option) any later
12
version.
13
 
14
GCC is distributed in the hope that it will be useful, but WITHOUT ANY
15
WARRANTY; without even the implied warranty of MERCHANTABILITY or
16
FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
17
for more details.
18
 
19
You should have received a copy of the GNU General Public License
20
along with GCC; see the file COPYING3.  If not see
21
<http://www.gnu.org/licenses/>.  */
22
 
23
 
24
#include "bconfig.h"
25
#include "system.h"
26
#include "coretypes.h"
27
#include "tm.h"
28
#include "rtl.h"
29
#include "errors.h"
30
#include "gensupport.h"
31
 
32
static void
33
gen_insn (rtx insn, int code)
34
{
35
  const char *name = XSTR (insn, 0);
36
  int truth = maybe_eval_c_test (XSTR (insn, 2));
37
 
38
  /* Don't mention instructions whose names are the null string
39
     or begin with '*'.  They are in the machine description just
40
     to be recognized.  */
41
  if (name[0] != 0 && name[0] != '*')
42
    {
43
      if (truth == 0)
44
        printf ("#define CODE_FOR_%s CODE_FOR_nothing\n", name);
45
      else
46
        printf ("  CODE_FOR_%s = %d,\n", name, code);
47
    }
48
}
49
 
50
int
51
main (int argc, char **argv)
52
{
53
  rtx desc;
54
 
55
  progname = "gencodes";
56
 
57
  /* We need to see all the possibilities.  Elided insns may have
58
     direct references to CODE_FOR_xxx in C code.  */
59
  insn_elision = 0;
60
 
61
  if (!init_rtx_reader_args (argc, argv))
62
    return (FATAL_EXIT_CODE);
63
 
64
  puts ("\
65
/* Generated automatically by the program `gencodes'\n\
66
   from the machine description file `md'.  */\n\
67
\n\
68
#ifndef GCC_INSN_CODES_H\n\
69
#define GCC_INSN_CODES_H\n\
70
\n\
71
enum insn_code {");
72
 
73
  /* Read the machine description.  */
74
 
75
  while (1)
76
    {
77
      int line_no;
78
      int insn_code_number;
79
 
80
      desc = read_md_rtx (&line_no, &insn_code_number);
81
      if (desc == NULL)
82
        break;
83
 
84
      if (GET_CODE (desc) == DEFINE_INSN || GET_CODE (desc) == DEFINE_EXPAND)
85
        gen_insn (desc, insn_code_number);
86
    }
87
 
88
  puts ("  CODE_FOR_nothing\n\
89
};\n\
90
\n\
91
#endif /* GCC_INSN_CODES_H */");
92
 
93
  if (ferror (stdout) || fflush (stdout) || fclose (stdout))
94
    return FATAL_EXIT_CODE;
95
 
96
  return SUCCESS_EXIT_CODE;
97
}

powered by: WebSVN 2.1.0

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