diff options
| -rw-r--r-- | src/buildvm_ppc.dasc | 28 |
1 files changed, 27 insertions, 1 deletions
diff --git a/src/buildvm_ppc.dasc b/src/buildvm_ppc.dasc index 9cdc3643..9c5bc437 100644 --- a/src/buildvm_ppc.dasc +++ b/src/buildvm_ppc.dasc | |||
| @@ -981,7 +981,33 @@ static void build_subroutines(BuildCtx *ctx) | |||
| 981 | |// Compute x op y for basic arithmetic operators (+ - * / % ^ and unary -) | 981 | |// Compute x op y for basic arithmetic operators (+ - * / % ^ and unary -) |
| 982 | |// and basic math functions. ORDER ARITH | 982 | |// and basic math functions. ORDER ARITH |
| 983 | |->vm_foldarith: | 983 | |->vm_foldarith: |
| 984 | | NYI | 984 | | evmergelo CARG2, CARG1, CARG2 |
| 985 | | cmplwi CARG5, 1 | ||
| 986 | | evmergelo CARG4, CARG3, CARG4 | ||
| 987 | | beq >1; bgt >2 | ||
| 988 | | efdadd CRET2, CARG2, CARG4; evmergehi CRET1, CRET2, CRET2; blr | ||
| 989 | |1: | ||
| 990 | | efdsub CRET2, CARG2, CARG4; evmergehi CRET1, CRET2, CRET2; blr | ||
| 991 | |2: | ||
| 992 | | cmplwi CARG5, 3; beq >1; bgt >2 | ||
| 993 | | efdmul CRET2, CARG2, CARG4; evmergehi CRET1, CRET2, CRET2; blr | ||
| 994 | |1: | ||
| 995 | | efddiv CRET2, CARG2, CARG4; evmergehi CRET1, CRET2, CRET2; blr | ||
| 996 | |2: | ||
| 997 | | cmplwi CARG5, 5; beq >1; bgt >2 | ||
| 998 | | evmr CARG3, CARG2; efddiv CRET2, CARG2, CARG4 | ||
| 999 | | mflr SAVE0; bl ->vm_floor; mtlr SAVE0 | ||
| 1000 | | efdmul CRET2, CRET2, CARG4; efdsub CRET2, CARG3, CRET2 | ||
| 1001 | | evmergehi CRET1, CRET2, CRET2; blr | ||
| 1002 | |1: | ||
| 1003 | | b extern pow | ||
| 1004 | |2: | ||
| 1005 | | cmplwi CARG5, 7; beq >1; bgt >2 | ||
| 1006 | | xoris CARG1, CARG1, 0x8000; blr | ||
| 1007 | |1: | ||
| 1008 | | rlwinm CARG1, CARG1, 0, 1, 31; blr | ||
| 1009 | |2: | ||
| 1010 | | NYI // Other operations only needed by JIT compiler. | ||
| 985 | | | 1011 | | |
| 986 | |//----------------------------------------------------------------------- | 1012 | |//----------------------------------------------------------------------- |
| 987 | |//-- Miscellaneous functions -------------------------------------------- | 1013 | |//-- Miscellaneous functions -------------------------------------------- |
