mirror of
https://github.com/LuaJIT/LuaJIT.git
synced 2025-02-08 15:34:09 +00:00
Implement POW.
Allows use of the '^' operator, for example: x = 2 y = 3 print(x ^ y) -- prints 8
This commit is contained in:
parent
230a4aa424
commit
29223bb979
@ -2059,9 +2059,24 @@ static void build_ins(BuildCtx *ctx, BCOp op, int defop)
|
|||||||
| j ->vmeta_arith_vvo
|
| j ->vmeta_arith_vvo
|
||||||
break;
|
break;
|
||||||
case BC_POW:
|
case BC_POW:
|
||||||
| stg r0, 0(r0)
|
| ins_ABC
|
||||||
| stg r0, 0(r0)
|
| sllg RB, RB, 3(r0)
|
||||||
|
| sllg RC, RC, 3(r0)
|
||||||
|
| ld FARG1, 0(RB, BASE)
|
||||||
|
| ld FARG2, 0(RC, BASE)
|
||||||
|
| lg TMPR2, 0(RB, BASE)
|
||||||
|
| checknumtp TMPR2, ->vmeta_arith_vvo
|
||||||
|
| lg TMPR2, 0(RC, BASE)
|
||||||
|
| checknumtp TMPR2, ->vmeta_arith_vvo
|
||||||
|
| lgr RB, BASE // TODO: redundant, BASE is currently callee-saved.
|
||||||
|
| brasl r14, extern pow // double pow(double x, double y), result in f0.
|
||||||
|
| llgc RA, PC_RA
|
||||||
|
| lgr BASE, RB
|
||||||
|
| sllg RA, RA, 3(r0)
|
||||||
|
| std f0, 0(RA, BASE)
|
||||||
|
| ins_next
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case BC_CAT:
|
case BC_CAT:
|
||||||
| stg r0, 0(r0)
|
| stg r0, 0(r0)
|
||||||
| stg r0, 0(r0)
|
| stg r0, 0(r0)
|
||||||
|
Loading…
Reference in New Issue
Block a user