aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/buildvm_ppc.dasc43
1 files changed, 38 insertions, 5 deletions
diff --git a/src/buildvm_ppc.dasc b/src/buildvm_ppc.dasc
index 47409b03..ce79d67f 100644
--- a/src/buildvm_ppc.dasc
+++ b/src/buildvm_ppc.dasc
@@ -1206,7 +1206,7 @@ static void build_subroutines(BuildCtx *ctx)
1206 |//-- Math library ------------------------------------------------------- 1206 |//-- Math library -------------------------------------------------------
1207 | 1207 |
1208 |.ffunc_n math_abs 1208 |.ffunc_n math_abs
1209 | NYI 1209 | efdabs CRET1, CARG1
1210 | // Fallthrough. 1210 | // Fallthrough.
1211 | 1211 |
1212 |->fff_restv: 1212 |->fff_restv:
@@ -1241,12 +1241,30 @@ static void build_subroutines(BuildCtx *ctx)
1241 | 1241 |
1242 |.macro math_extern, func 1242 |.macro math_extern, func
1243 | .ffunc math_ .. func 1243 | .ffunc math_ .. func
1244 | NYI 1244 | cmplwi NARGS8:RC, 8
1245 | evldd CARG2, 0(BASE)
1246 | blt ->fff_fallback
1247 | checknum CARG2
1248 | evmergehi CARG1, CARG2, CARG2
1249 | checkfail ->fff_fallback
1250 | bl extern func
1251 | evmergelo CRET1, CRET1, CRET2
1252 | b ->fff_restv
1245 |.endmacro 1253 |.endmacro
1246 | 1254 |
1247 |.macro math_extern2, func 1255 |.macro math_extern2, func
1248 | .ffunc math_ .. func 1256 | .ffunc math_ .. func
1249 | NYI 1257 | cmplwi NARGS8:RC, 16
1258 | evldd CARG2, 0(BASE)
1259 | evldd CARG4, 8(BASE)
1260 | blt ->fff_fallback
1261 | evmergehi CARG1, CARG4, CARG2
1262 | checknum CARG1
1263 | evmergehi CARG3, CARG4, CARG4
1264 | checkanyfail ->fff_fallback
1265 | bl extern func
1266 | evmergelo CRET1, CRET1, CRET2
1267 | b ->fff_restv
1250 |.endmacro 1268 |.endmacro
1251 | 1269 |
1252 | math_extern floor 1270 | math_extern floor
@@ -1271,7 +1289,9 @@ static void build_subroutines(BuildCtx *ctx)
1271 | 1289 |
1272 |->ff_math_deg: 1290 |->ff_math_deg:
1273 |.ffunc_1 math_rad 1291 |.ffunc_1 math_rad
1274 | NYI 1292 | evldd CARG2, CFUNC:RB->upvalue[0]
1293 | efdmul CRET1, CARG1, CARG2
1294 | b ->fff_restv
1275 | 1295 |
1276 |.ffunc_nn math_ldexp; NYI 1296 |.ffunc_nn math_ldexp; NYI
1277 |.ffunc_n math_frexp; NYI 1297 |.ffunc_n math_frexp; NYI
@@ -1279,7 +1299,20 @@ static void build_subroutines(BuildCtx *ctx)
1279 | 1299 |
1280 |.macro math_minmax, name, cmpop 1300 |.macro math_minmax, name, cmpop
1281 | .ffunc_1 name 1301 | .ffunc_1 name
1282 | NYI 1302 | checknum CARG1
1303 | li TMP1, 8
1304 | checkfail ->fff_fallback
1305 |1:
1306 | evlddx CARG2, BASE, TMP1
1307 | cmplw cr1, TMP1, NARGS8:RC
1308 | checknum CARG2
1309 | bge cr1, ->fff_restv // Ok, since CRET1 = CARG1.
1310 | checkfail ->fff_fallback
1311 | cmpop CARG2, CARG1
1312 | addi TMP1, TMP1, 8
1313 | crmove 4*cr0+lt, 4*cr0+gt
1314 | evsel CARG1, CARG2, CARG1
1315 | b <1
1283 |.endmacro 1316 |.endmacro
1284 | 1317 |
1285 | math_minmax math_min, efdtstlt 1318 | math_minmax math_min, efdtstlt