MIPS: Fix use of ffgccheck delay slots in interpreter.

This commit is contained in:
Mike Pall 2016-03-30 16:26:27 +02:00
parent 9531eb235b
commit 62af101524

View File

@ -1621,6 +1621,7 @@ static void build_subroutines(BuildCtx *ctx)
| |
|.ffunc string_char // Only handle the 1-arg case here. |.ffunc string_char // Only handle the 1-arg case here.
| ffgccheck | ffgccheck
|. nop
| lw CARG3, HI(BASE) | lw CARG3, HI(BASE)
| ldc1 FARG1, 0(BASE) | ldc1 FARG1, 0(BASE)
| li AT, 8 | li AT, 8
@ -1648,6 +1649,7 @@ static void build_subroutines(BuildCtx *ctx)
| |
|.ffunc string_sub |.ffunc string_sub
| ffgccheck | ffgccheck
|. nop
| addiu AT, NARGS8:RC, -16 | addiu AT, NARGS8:RC, -16
| lw CARG3, 16+HI(BASE) | lw CARG3, 16+HI(BASE)
| ldc1 f0, 16(BASE) | ldc1 f0, 16(BASE)
@ -1697,6 +1699,7 @@ static void build_subroutines(BuildCtx *ctx)
| |
|.ffunc string_rep // Only handle the 1-char case inline. |.ffunc string_rep // Only handle the 1-char case inline.
| ffgccheck | ffgccheck
|. nop
| lw TMP0, HI(BASE) | lw TMP0, HI(BASE)
| addiu AT, NARGS8:RC, -16 // Exactly 2 arguments. | addiu AT, NARGS8:RC, -16 // Exactly 2 arguments.
| lw CARG4, 8+HI(BASE) | lw CARG4, 8+HI(BASE)
@ -1731,6 +1734,7 @@ static void build_subroutines(BuildCtx *ctx)
| |
|.ffunc string_reverse |.ffunc string_reverse
| ffgccheck | ffgccheck
|. nop
| lw CARG3, HI(BASE) | lw CARG3, HI(BASE)
| lw STR:CARG1, LO(BASE) | lw STR:CARG1, LO(BASE)
| beqz NARGS8:RC, ->fff_fallback | beqz NARGS8:RC, ->fff_fallback
@ -1756,6 +1760,7 @@ static void build_subroutines(BuildCtx *ctx)
|.macro ffstring_case, name, lo |.macro ffstring_case, name, lo
| .ffunc name | .ffunc name
| ffgccheck | ffgccheck
|. nop
| lw CARG3, HI(BASE) | lw CARG3, HI(BASE)
| lw STR:CARG1, LO(BASE) | lw STR:CARG1, LO(BASE)
| beqz NARGS8:RC, ->fff_fallback | beqz NARGS8:RC, ->fff_fallback