1
Fork 0
mirror of https://git.savannah.gnu.org/git/guile.git synced 2025-05-04 22:40:25 +02:00
guile/size.c
pcpa 624cf33d08 Add string representation of IR codes to -sz.c files
* lib/jit_names.c: New file with single definition of string
	representation of lightning IR codes.

	* size.c: Modified to append the code name in a C comment
	after the maximum instruction size.

	* lib/jit_print.c: Minor change to not duplicate jit_names.c
	contents.

	* lib/jit_aarch64-sz.c, lib/jit_alpha-sz.c, lib/jit_arm-sz.c,
	lib/jit_hppa-sz.c, lib/jit_ia64-sz.c, lib/jit_mips-sz.c,
	lib/jit_ppc-sz.c, lib/jit_s390x-sz.c, lib/jit_sparc-sz.c,
	lib/jit_x86-sz.c: Rewritten to add string representation of
	IR codes in a C comment.
2014-10-17 13:48:56 -03:00

89 lines
2.3 KiB
C

/*
* Copyright (C) 2013 Free Software Foundation, Inc.
*
* This file is part of GNU lightning.
*
* GNU lightning is free software; you can redistribute it and/or modify it
* under the terms of the GNU Lesser General Public License as published
* by the Free Software Foundation; either version 3, or (at your option)
* any later version.
*
* GNU lightning 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 Lesser General Public
* License for more details.
*
* Authors:
* Paulo Cesar Pereira de Andrade
*/
#include <lightning.h>
#include <lightning/jit_private.h>
#include <stdio.h>
#include "lib/jit_names.c"
jit_int16_t _szs[jit_code_last_code + 1];
int
main(int argc, char *argv[])
{
FILE *fp;
jit_word_t offset;
int code, size, max;
if ((fp = fopen(JIT_SIZE_PATH, "r")) == NULL)
exit(-1);
while (fscanf(fp, "%d %d\n", &code, &size) == 2) {
if (_szs[code] < size)
_szs[code] = size;
}
fclose(fp);
max = 0;
for (offset = 0; offset <= jit_code_last_code; offset++)
if (max < _szs[offset])
max = _szs[offset];
if ((fp = fopen(JIT_SIZE_PATH, "w")) == NULL)
exit(-1);
fprintf(fp, "#if __WORDSIZE == %d\n", __WORDSIZE);
#if defined(__arm__)
# if defined(__ARM_PCS_VFP)
fprintf(fp, "#if defined(__ARM_PCS_VFP)\n");
# else
fprintf(fp, "#if !defined(__ARM_PCS_VFP)\n");
# endif
#elif defined(__mips__)
# if __WORDSIZE == 32
# if NEW_ABI
fprintf(fp, "#if NEW_ABI\n");
# else
fprintf(fp, "#if !NEW_ABI\n");
# endif
# endif
#elif defined(__ppc__)
fprintf(fp, "#if defined(__ppc__)\n");
#elif defined(__powerpc__)
fprintf(fp, "#if defined(__powerpc__)\n");
#endif
fprintf(fp, "#define JIT_INSTR_MAX %d\n", max);
for (offset = 0; offset <= jit_code_last_code; offset++)
fprintf(fp, " %d, /* %s */\n", _szs[offset], code_name[offset]);
#if defined(__arm__)
fprintf(fp, "#endif /* __ARM_PCS_VFP */\n");
#elif defined(__mips__)
# if __WORDSIZE == 32
fprintf(fp, "#endif /* NEW_ABI */\n");
# endif
#elif defined(__ppc__)
fprintf(fp, "#endif /* __ppc__ */\n");
#elif defined(__powerpc__)
fprintf(fp, "#endif /* __powerpc__ */\n");
#endif
fprintf(fp, "#endif /* __WORDSIZE */\n");
fclose(fp);
return (0);
}