ARM/PPC: Remove assembler code for lj_vm_foldarith().

This commit is contained in:
Mike Pall
2012-06-12 17:25:52 +02:00
parent 46dc6d347c
commit c2159f8624
3 changed files with 1 additions and 102 deletions

View File

@@ -2474,62 +2474,6 @@ static void build_subroutines(BuildCtx *ctx)
| mcrxr cr0 // Clear SO for -2147483648 % -1 and return 0.
| blr
|
|// Callable from C: double lj_vm_foldarith(double x, double y, int op)
|// Compute x op y for basic arithmetic operators (+ - * / % ^ and unary -)
|// and basic math functions. ORDER ARITH
|->vm_foldarith:
| cmplwi CARG1, 1
| beq >1; bgt >2
| fadd FARG1, FARG1, FARG2; blr
|1:
| fsub FARG1, FARG1, FARG2; blr
|2:
| cmplwi CARG1, 3; beq >1; bgt >2
| fmul FARG1, FARG1, FARG2; blr
|1:
| fdiv FARG1, FARG1, FARG2; blr
|2:
| cmplwi CARG1, 5; beq >1; bgt >2
| // NYI: Use internal implementation of floor and avoid spills.
| stwu sp, -32(sp); stfd f14, 16(sp); stfd f15, 24(sp)
| mflr r0
| fmr f14, FARG1
| fdiv FARG1, FARG1, FARG2
| stw r0, 36(sp)
| fmr f15, FARG2
| bl extern floor
| lwz r0, 36(sp)
| fmul FARG1, FARG1, f15
| mtlr r0
| fsub FARG1, f14, FARG1
| lfd f14, 16(sp); lfd f15, 24(sp); addi sp, sp, 32; blr
|1:
| b extern pow
|2:
| cmplwi CARG1, 7; beq >1; bgt >2
| fneg FARG1, FARG1; blr
|1:
| fabs FARG1, FARG1; blr
|2:
|.if JIT
| cmplwi CARG1, 9; beq >9; bgt >2
| b extern atan2
| // No support needed for IR_LDEXP.
|2:
| cmplwi CARG1, 11; bgt >9
| fsub f0, FARG1, FARG2
| beq >1
| fsel FARG1, f0, FARG2, FARG1 // IR_MAX
| blr
|1:
| fsel FARG1, f0, FARG1, FARG2 // IR_MIN
| blr
|9:
| NYI // Bad op.
|.else
| NYI // Other operations only needed by JIT compiler.
|.endif
|
|//-----------------------------------------------------------------------
|//-- Miscellaneous functions --------------------------------------------
|//-----------------------------------------------------------------------