00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025 #include "hconfig.h"
00026 #include "system.h"
00027 #include "rtl.h"
00028 #include "errors.h"
00029 #include "gensupport.h"
00030
00031 static void gen_insn PARAMS ((rtx, int));
00032
00033 static void
00034 gen_insn (insn, code)
00035 rtx insn;
00036 int code;
00037 {
00038 const char *name = XSTR (insn, 0);
00039 int truth = maybe_eval_c_test (XSTR (insn, 2));
00040
00041
00042
00043
00044 if (name[0] != 0 && name[0] != '*')
00045 {
00046 if (truth == 0)
00047 printf ("#define CODE_FOR_%s CODE_FOR_nothing\n", name);
00048 else
00049 printf (" CODE_FOR_%s = %d,\n", name, code);
00050 }
00051 }
00052
00053 extern int main PARAMS ((int, char **));
00054
00055 int
00056 main (argc, argv)
00057 int argc;
00058 char **argv;
00059 {
00060 rtx desc;
00061
00062 progname = "gencodes";
00063
00064
00065
00066 insn_elision = 0;
00067
00068 if (argc <= 1)
00069 fatal ("no input file name");
00070
00071 if (init_md_reader_args (argc, argv) != SUCCESS_EXIT_CODE)
00072 return (FATAL_EXIT_CODE);
00073
00074 puts ("\
00075 /* Generated automatically by the program `gencodes'\n\
00076 from the machine description file `md'. */\n\
00077 \n\
00078 #ifndef GCC_INSN_CODES_H\n\
00079 #define GCC_INSN_CODES_H\n\
00080 \n\
00081 enum insn_code {");
00082
00083
00084
00085 while (1)
00086 {
00087 int line_no;
00088 int insn_code_number;
00089
00090 desc = read_md_rtx (&line_no, &insn_code_number);
00091 if (desc == NULL)
00092 break;
00093
00094 if (GET_CODE (desc) == DEFINE_INSN || GET_CODE (desc) == DEFINE_EXPAND)
00095 gen_insn (desc, insn_code_number);
00096 }
00097
00098 puts (" CODE_FOR_nothing\n\
00099 };\n\
00100 \n\
00101 #endif /* GCC_INSN_CODES_H */");
00102
00103 if (ferror (stdout) || fflush (stdout) || fclose (stdout))
00104 return FATAL_EXIT_CODE;
00105
00106 return SUCCESS_EXIT_CODE;
00107 }
00108
00109
00110
00111 const char *
00112 get_insn_name (code)
00113 int code ATTRIBUTE_UNUSED;
00114 {
00115 return NULL;
00116 }