Fix arg check for two-arg SSE math functions in interpreter.

This commit is contained in:
Mike Pall 2010-07-14 14:11:48 +02:00
parent 0d3f190d94
commit 2ca58aa67d
4 changed files with 19 additions and 19 deletions

View File

@ -1206,7 +1206,7 @@ static void build_subroutines(BuildCtx *ctx, int cmov, int sse)
} }
dasm_put(Dst, 4774, 2+1, LJ_TISNUM, LJ_TISNUM); dasm_put(Dst, 4774, 2+1, LJ_TISNUM, LJ_TISNUM);
if (sse) { if (sse) {
dasm_put(Dst, 4826, 1+1, LJ_TISNUM, LJ_TISNUM); dasm_put(Dst, 4826, 2+1, LJ_TISNUM, LJ_TISNUM);
} else { } else {
dasm_put(Dst, 4873, 2+1, LJ_TISNUM, LJ_TISNUM); dasm_put(Dst, 4873, 2+1, LJ_TISNUM, LJ_TISNUM);
} }
@ -1319,27 +1319,27 @@ static void build_subroutines(BuildCtx *ctx, int cmov, int sse)
} }
dasm_put(Dst, 6405); dasm_put(Dst, 6405);
if (sse) { if (sse) {
dasm_put(Dst, 6416, 1+1, LJ_TISNUM, LJ_TISNUM, (unsigned int)(U64x(43380000,00000000)), (unsigned int)((U64x(43380000,00000000))>>32)); dasm_put(Dst, 6416, 2+1, LJ_TISNUM, LJ_TISNUM, (unsigned int)(U64x(43380000,00000000)), (unsigned int)((U64x(43380000,00000000))>>32));
} else { } else {
} }
dasm_put(Dst, 6485); dasm_put(Dst, 6485);
if (sse) { if (sse) {
dasm_put(Dst, 6494, 1+1, LJ_TISNUM, LJ_TISNUM, (unsigned int)(U64x(43380000,00000000)), (unsigned int)((U64x(43380000,00000000))>>32)); dasm_put(Dst, 6494, 2+1, LJ_TISNUM, LJ_TISNUM, (unsigned int)(U64x(43380000,00000000)), (unsigned int)((U64x(43380000,00000000))>>32));
} else { } else {
} }
dasm_put(Dst, 6563); dasm_put(Dst, 6563);
if (sse) { if (sse) {
dasm_put(Dst, 6573, 1+1, LJ_TISNUM, LJ_TISNUM, (unsigned int)(U64x(43380000,00000000)), (unsigned int)((U64x(43380000,00000000))>>32)); dasm_put(Dst, 6573, 2+1, LJ_TISNUM, LJ_TISNUM, (unsigned int)(U64x(43380000,00000000)), (unsigned int)((U64x(43380000,00000000))>>32));
} else { } else {
} }
dasm_put(Dst, 6642); dasm_put(Dst, 6642);
if (sse) { if (sse) {
dasm_put(Dst, 6652, 1+1, LJ_TISNUM, LJ_TISNUM, (unsigned int)(U64x(43380000,00000000)), (unsigned int)((U64x(43380000,00000000))>>32)); dasm_put(Dst, 6652, 2+1, LJ_TISNUM, LJ_TISNUM, (unsigned int)(U64x(43380000,00000000)), (unsigned int)((U64x(43380000,00000000))>>32));
} else { } else {
} }
dasm_put(Dst, 6721); dasm_put(Dst, 6721);
if (sse) { if (sse) {
dasm_put(Dst, 6730, 1+1, LJ_TISNUM, LJ_TISNUM, (unsigned int)(U64x(43380000,00000000)), (unsigned int)((U64x(43380000,00000000))>>32)); dasm_put(Dst, 6730, 2+1, LJ_TISNUM, LJ_TISNUM, (unsigned int)(U64x(43380000,00000000)), (unsigned int)((U64x(43380000,00000000))>>32));
} else { } else {
} }
dasm_put(Dst, 6799, 1+2, 1+1, Dt1(->base), 8*LUA_MINSTACK, Dt1(->top), Dt1(->maxstack), Dt8(->f), Dt1(->base)); dasm_put(Dst, 6799, 1+2, 1+1, Dt1(->base), 8*LUA_MINSTACK, Dt1(->top), Dt1(->maxstack), Dt8(->f), Dt1(->base));

View File

@ -1207,7 +1207,7 @@ static void build_subroutines(BuildCtx *ctx, int cmov, int sse)
} }
dasm_put(Dst, 4748, 2+1, LJ_TISNUM, LJ_TISNUM); dasm_put(Dst, 4748, 2+1, LJ_TISNUM, LJ_TISNUM);
if (sse) { if (sse) {
dasm_put(Dst, 4800, 1+1, LJ_TISNUM, LJ_TISNUM); dasm_put(Dst, 4800, 2+1, LJ_TISNUM, LJ_TISNUM);
} else { } else {
dasm_put(Dst, 4847, 2+1, LJ_TISNUM, LJ_TISNUM); dasm_put(Dst, 4847, 2+1, LJ_TISNUM, LJ_TISNUM);
} }
@ -1320,27 +1320,27 @@ static void build_subroutines(BuildCtx *ctx, int cmov, int sse)
} }
dasm_put(Dst, 6364); dasm_put(Dst, 6364);
if (sse) { if (sse) {
dasm_put(Dst, 6375, 1+1, LJ_TISNUM, LJ_TISNUM, (unsigned int)(U64x(43380000,00000000)), (unsigned int)((U64x(43380000,00000000))>>32)); dasm_put(Dst, 6375, 2+1, LJ_TISNUM, LJ_TISNUM, (unsigned int)(U64x(43380000,00000000)), (unsigned int)((U64x(43380000,00000000))>>32));
} else { } else {
} }
dasm_put(Dst, 6444); dasm_put(Dst, 6444);
if (sse) { if (sse) {
dasm_put(Dst, 6453, 1+1, LJ_TISNUM, LJ_TISNUM, (unsigned int)(U64x(43380000,00000000)), (unsigned int)((U64x(43380000,00000000))>>32)); dasm_put(Dst, 6453, 2+1, LJ_TISNUM, LJ_TISNUM, (unsigned int)(U64x(43380000,00000000)), (unsigned int)((U64x(43380000,00000000))>>32));
} else { } else {
} }
dasm_put(Dst, 6522); dasm_put(Dst, 6522);
if (sse) { if (sse) {
dasm_put(Dst, 6532, 1+1, LJ_TISNUM, LJ_TISNUM, (unsigned int)(U64x(43380000,00000000)), (unsigned int)((U64x(43380000,00000000))>>32)); dasm_put(Dst, 6532, 2+1, LJ_TISNUM, LJ_TISNUM, (unsigned int)(U64x(43380000,00000000)), (unsigned int)((U64x(43380000,00000000))>>32));
} else { } else {
} }
dasm_put(Dst, 6601); dasm_put(Dst, 6601);
if (sse) { if (sse) {
dasm_put(Dst, 6611, 1+1, LJ_TISNUM, LJ_TISNUM, (unsigned int)(U64x(43380000,00000000)), (unsigned int)((U64x(43380000,00000000))>>32)); dasm_put(Dst, 6611, 2+1, LJ_TISNUM, LJ_TISNUM, (unsigned int)(U64x(43380000,00000000)), (unsigned int)((U64x(43380000,00000000))>>32));
} else { } else {
} }
dasm_put(Dst, 6680); dasm_put(Dst, 6680);
if (sse) { if (sse) {
dasm_put(Dst, 6689, 1+1, LJ_TISNUM, LJ_TISNUM, (unsigned int)(U64x(43380000,00000000)), (unsigned int)((U64x(43380000,00000000))>>32)); dasm_put(Dst, 6689, 2+1, LJ_TISNUM, LJ_TISNUM, (unsigned int)(U64x(43380000,00000000)), (unsigned int)((U64x(43380000,00000000))>>32));
} else { } else {
} }
dasm_put(Dst, 6758, 1+2, 1+1, Dt1(->base), 8*LUA_MINSTACK, Dt1(->top), Dt1(->maxstack), Dt8(->f), Dt1(->base)); dasm_put(Dst, 6758, 1+2, 1+1, Dt1(->base), 8*LUA_MINSTACK, Dt1(->top), Dt1(->maxstack), Dt8(->f), Dt1(->base));

View File

@ -1211,7 +1211,7 @@ static void build_subroutines(BuildCtx *ctx, int cmov, int sse)
|.endmacro |.endmacro
| |
|.macro .ffunc_nnsse, name |.macro .ffunc_nnsse, name
| .ffunc_1 name | .ffunc_2 name
| cmp dword [BASE+4], LJ_TISNUM; ja ->fff_fallback | cmp dword [BASE+4], LJ_TISNUM; ja ->fff_fallback
| cmp dword [BASE+12], LJ_TISNUM; ja ->fff_fallback | cmp dword [BASE+12], LJ_TISNUM; ja ->fff_fallback
| movsd xmm0, qword [BASE] | movsd xmm0, qword [BASE]

View File

@ -1265,7 +1265,7 @@ static void build_subroutines(BuildCtx *ctx, int cmov, int sse)
} }
dasm_put(Dst, 4858, 2+1, LJ_TISNUM, LJ_TISNUM); dasm_put(Dst, 4858, 2+1, LJ_TISNUM, LJ_TISNUM);
if (sse) { if (sse) {
dasm_put(Dst, 4910, 1+1, LJ_TISNUM, LJ_TISNUM); dasm_put(Dst, 4910, 2+1, LJ_TISNUM, LJ_TISNUM);
} else { } else {
dasm_put(Dst, 4957, 2+1, LJ_TISNUM, LJ_TISNUM); dasm_put(Dst, 4957, 2+1, LJ_TISNUM, LJ_TISNUM);
} }
@ -1404,31 +1404,31 @@ static void build_subroutines(BuildCtx *ctx, int cmov, int sse)
} }
dasm_put(Dst, 6982); dasm_put(Dst, 6982);
if (sse) { if (sse) {
dasm_put(Dst, 6993, 1+1, LJ_TISNUM, LJ_TISNUM); dasm_put(Dst, 6993, 2+1, LJ_TISNUM, LJ_TISNUM);
} else { } else {
dasm_put(Dst, 7067, 2+1, LJ_TISNUM, LJ_TISNUM); dasm_put(Dst, 7067, 2+1, LJ_TISNUM, LJ_TISNUM);
} }
dasm_put(Dst, 7133); dasm_put(Dst, 7133);
if (sse) { if (sse) {
dasm_put(Dst, 7142, 1+1, LJ_TISNUM, LJ_TISNUM); dasm_put(Dst, 7142, 2+1, LJ_TISNUM, LJ_TISNUM);
} else { } else {
dasm_put(Dst, 7216, 2+1, LJ_TISNUM, LJ_TISNUM); dasm_put(Dst, 7216, 2+1, LJ_TISNUM, LJ_TISNUM);
} }
dasm_put(Dst, 7282); dasm_put(Dst, 7282);
if (sse) { if (sse) {
dasm_put(Dst, 7292, 1+1, LJ_TISNUM, LJ_TISNUM); dasm_put(Dst, 7292, 2+1, LJ_TISNUM, LJ_TISNUM);
} else { } else {
dasm_put(Dst, 7366, 2+1, LJ_TISNUM, LJ_TISNUM); dasm_put(Dst, 7366, 2+1, LJ_TISNUM, LJ_TISNUM);
} }
dasm_put(Dst, 7432); dasm_put(Dst, 7432);
if (sse) { if (sse) {
dasm_put(Dst, 7442, 1+1, LJ_TISNUM, LJ_TISNUM); dasm_put(Dst, 7442, 2+1, LJ_TISNUM, LJ_TISNUM);
} else { } else {
dasm_put(Dst, 7516, 2+1, LJ_TISNUM, LJ_TISNUM); dasm_put(Dst, 7516, 2+1, LJ_TISNUM, LJ_TISNUM);
} }
dasm_put(Dst, 7582); dasm_put(Dst, 7582);
if (sse) { if (sse) {
dasm_put(Dst, 7591, 1+1, LJ_TISNUM, LJ_TISNUM); dasm_put(Dst, 7591, 2+1, LJ_TISNUM, LJ_TISNUM);
} else { } else {
dasm_put(Dst, 7665, 2+1, LJ_TISNUM, LJ_TISNUM); dasm_put(Dst, 7665, 2+1, LJ_TISNUM, LJ_TISNUM);
} }