2 * Copyright (C) 2013-2019 Free Software Foundation, Inc.
4 * This file is part of GNU lightning.
6 * GNU lightning is free software; you can redistribute it and/or modify it
7 * under the terms of the GNU Lesser General Public License as published
8 * by the Free Software Foundation; either version 3, or (at your option)
11 * GNU lightning is distributed in the hope that it will be useful, but
12 * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
13 * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public
14 * License for more details.
17 * Paulo Cesar Pereira de Andrade
20 #include <lightning.h>
21 #include <lightning/jit_private.h>
23 #include "lib/jit_names.c"
25 jit_int16_t _szs[jit_code_last_code];
28 main(int argc, char *argv[])
34 if ((fp = fopen(JIT_SIZE_PATH, "r")) == NULL)
36 while (fscanf(fp, "%d %d\n", &code, &size) == 2) {
37 if (_szs[code] < size)
43 for (offset = 0; offset < jit_code_last_code; offset++)
44 if (max < _szs[offset])
47 if ((fp = fopen(JIT_SIZE_PATH, "w")) == NULL)
53 fprintf(fp, "#if __X64\n");
55 fprintf(fp, "# if __X64_32\n");
57 fprintf(fp, "# if !__X64_32\n");
60 fprintf(fp, "#if __X32\n");
63 fprintf(fp, "#if __WORDSIZE == %d\n", __WORDSIZE);
66 # if defined(__ARM_PCS_VFP)
67 fprintf(fp, "#if defined(__ARM_PCS_VFP)\n");
69 fprintf(fp, "#if !defined(__ARM_PCS_VFP)\n");
71 #elif defined(__mips__)
74 fprintf(fp, "#if NEW_ABI\n");
76 fprintf(fp, "#if !NEW_ABI\n");
79 #elif defined(__powerpc__)
80 fprintf(fp, "#if defined(__powerpc__)\n");
81 fprintf(fp, "#if __BYTE_ORDER == %s\n",
82 __BYTE_ORDER == __BIG_ENDIAN ? "__BIG_ENDIAN" : "__LITTLE_ENDIAN");
84 fprintf(fp, "#if %s\n",
92 fprintf(fp, "#define JIT_INSTR_MAX %d\n", max);
93 for (offset = 0; offset < jit_code_last_code; offset++)
94 fprintf(fp, " %d, /* %s */\n", _szs[offset], code_name[offset]);
96 fprintf(fp, "#endif /* __ARM_PCS_VFP */\n");
97 #elif defined(__mips__)
99 fprintf(fp, "#endif /* NEW_ABI */\n");
101 #elif defined(__powerpc__)
102 fprintf(fp, "#endif /* "
108 fprintf(fp, "#endif /* __BYTE_ORDER */\n");
109 fprintf(fp, "#endif /* __powerpc__ */\n");
113 fprintf(fp, "# endif /* __X64_32 */\n");
114 fprintf(fp, "#endif /* __X64 */\n");
116 fprintf(fp, "#endif /* __X32 */\n");
119 fprintf(fp, "#endif /* __WORDSIZE */\n");