1
Fork 0
mirror of https://git.savannah.gnu.org/git/guile.git synced 2025-06-21 03:00:19 +02:00

MIPS: Build and pass all test cases on mips64.

* include/lightning/jit_mips.h, lib/jit_mips-cpu.c,
	lib/jit_mips-sz.c, lib/jit_mips.c, size: Build and
	pass all test cases on Irix big endian mips using
	the 64 bit abi.
This commit is contained in:
pcpa 2013-10-04 00:01:31 -03:00
parent 485584546a
commit 52bfc67192
6 changed files with 704 additions and 263 deletions

View file

@ -1,3 +1,10 @@
2013-10-03 Paulo Andrade <pcpa@gnu.org>
* include/lightning/jit_mips.h, lib/jit_mips-cpu.c,
lib/jit_mips-sz.c, lib/jit_mips.c, size: Build and
pass all test cases on Irix big endian mips using
the 64 bit abi.
2013-10-02 Paulo Andrade <pcpa@gnu.org> 2013-10-02 Paulo Andrade <pcpa@gnu.org>
* include/lightning/jit_mips.h: Add proper mips abi detection. * include/lightning/jit_mips.h: Add proper mips abi detection.

View file

@ -23,11 +23,8 @@
#define JIT_HASH_CONSTS 1 #define JIT_HASH_CONSTS 1
#define JIT_NUM_OPERANDS 3 #define JIT_NUM_OPERANDS 3
#if _MIPS_SIM == _ABIN32 #if _MIPS_SIM != _ABIO32
# define NEW_ABI 1 # define NEW_ABI 1
#elif _MIPS_SIM != _ABIO32
/* FIXME port to _ABI64 */
# error "Unsupported ABI"
#endif #endif
/* /*

File diff suppressed because it is too large Load diff

View file

@ -1,6 +1,6 @@
#if __WORDSIZE == 32 #if __WORDSIZE == 32
#if defined(_ABIN32) #if NEW_ABI
#define JIT_INSTR_MAX 44 #define JIT_INSTR_MAX 44
0, 0,
0, 0,
@ -348,11 +348,11 @@
12, 12,
0, 0,
0, 0,
#endif /* _ABIN32 */ #endif /* NEW_ABI */
#endif /* __WORDSIZE */ #endif /* __WORDSIZE */
#if __WORDSIZE == 32 #if __WORDSIZE == 32
#if !defined(_ABIN32) #if !NEW_ABI
#define JIT_INSTR_MAX 96 #define JIT_INSTR_MAX 96
0, 0,
0, 0,
@ -700,5 +700,355 @@
0, 0,
0, 0,
0, 0,
#endif /* _ABIN32 */ #endif /* NEW_ABI */
#endif /* __WORDSIZE */
#if __WORDSIZE == 64
#define JIT_INSTR_MAX 44
0,
0,
0,
0,
0,
0,
0,
44,
0,
4,
28,
12,
36,
28,
28,
4,
28,
12,
36,
28,
28,
8,
32,
12,
32,
12,
32,
8,
32,
8,
32,
12,
16,
12,
16,
8,
32,
8,
32,
4,
28,
4,
28,
4,
28,
4,
4,
4,
4,
4,
4,
4,
8,
4,
4,
4,
4,
8,
12,
8,
12,
12,
12,
8,
12,
8,
12,
4,
8,
4,
8,
8,
8,
4,
28,
8,
4,
8,
4,
4,
8,
4,
4,
12,
4,
12,
4,
12,
4,
12,
4,
12,
4,
12,
4,
12,
8,
4,
8,
4,
8,
4,
8,
4,
8,
4,
8,
4,
8,
4,
4,
12,
4,
12,
4,
12,
4,
12,
8,
4,
8,
4,
8,
4,
8,
4,
12,
12,
12,
12,
12,
16,
12,
16,
8,
36,
12,
12,
12,
12,
12,
16,
12,
16,
8,
32,
12,
12,
12,
12,
28,
28,
16,
20,
28,
28,
16,
20,
28,
28,
16,
20,
28,
28,
16,
20,
0,
8,
12,
32,
44,
0,
4,
16,
4,
16,
4,
16,
4,
16,
4,
4,
4,
16,
28,
16,
28,
16,
28,
16,
28,
16,
28,
16,
28,
16,
28,
16,
28,
16,
28,
16,
28,
16,
28,
16,
28,
16,
28,
16,
28,
8,
8,
8,
4,
4,
12,
4,
12,
8,
4,
4,
12,
8,
4,
12,
24,
12,
24,
12,
24,
12,
24,
12,
24,
12,
24,
12,
24,
12,
24,
12,
24,
12,
24,
12,
24,
12,
24,
12,
24,
12,
24,
0,
4,
16,
4,
16,
4,
16,
4,
16,
4,
4,
4,
16,
28,
16,
28,
16,
28,
16,
28,
16,
28,
16,
28,
16,
28,
16,
28,
16,
28,
16,
28,
16,
28,
16,
28,
16,
28,
16,
28,
8,
8,
8,
4,
4,
12,
4,
12,
8,
4,
4,
12,
8,
4,
12,
24,
12,
24,
12,
24,
12,
24,
12,
24,
12,
24,
12,
24,
12,
24,
12,
24,
12,
24,
12,
24,
12,
24,
12,
24,
12,
24,
0,
0,
0,
0,
0,
0,
0,
4,
12,
0,
0,
#endif /* __WORDSIZE */ #endif /* __WORDSIZE */

View file

@ -1074,7 +1074,7 @@ _emit_code(jit_state_t *_jit)
case_wr(st, _i); case_wr(st, _i);
#if __WORDSIZE == 64 #if __WORDSIZE == 64
case_rr(st, _l); case_rr(st, _l);
case_rw(st, _l); case_wr(st, _l);
#endif #endif
case_rrr(stx, _c); case_rrr(stx, _c);
case_wrr(stx, _c); case_wrr(stx, _c);

12
size.c
View file

@ -55,10 +55,12 @@ main(int argc, char *argv[])
fprintf(fp, "#if !defined(__ARM_PCS_VFP)\n"); fprintf(fp, "#if !defined(__ARM_PCS_VFP)\n");
# endif # endif
#elif defined(__mips__) #elif defined(__mips__)
# if defined(_ABIN32) # if __WORDSIZE == 32
fprintf(fp, "#if defined(_ABIN32)\n"); # if NEW_ABI
fprintf(fp, "#if NEW_ABI\n");
# else # else
fprintf(fp, "#if !defined(_ABIN32)\n"); fprintf(fp, "#if !NEW_ABI\n");
# endif
# endif # endif
#elif defined(__ppc__) #elif defined(__ppc__)
fprintf(fp, "#if defined(__ppc__)\n"); fprintf(fp, "#if defined(__ppc__)\n");
@ -71,7 +73,9 @@ main(int argc, char *argv[])
#if defined(__arm__) #if defined(__arm__)
fprintf(fp, "#undef /* __ARM_PCS_VFP */\n"); fprintf(fp, "#undef /* __ARM_PCS_VFP */\n");
#elif defined(__mips__) #elif defined(__mips__)
fprintf(fp, "#endif /* _ABIN32 */\n"); # if __WORDSIZE == 32
fprintf(fp, "#endif /* NEW_ABI */\n");
# endif
#elif defined(__ppc__) #elif defined(__ppc__)
fprintf(fp, "#endif /* __ppc__ */\n"); fprintf(fp, "#endif /* __ppc__ */\n");
#elif defined(__powerpc__) #elif defined(__powerpc__)