mirror of
https://github.com/LuaJIT/LuaJIT.git
synced 2025-02-08 07:34:07 +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
|
||||
break;
|
||||
case BC_POW:
|
||||
| stg r0, 0(r0)
|
||||
| stg r0, 0(r0)
|
||||
| ins_ABC
|
||||
| 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;
|
||||
|
||||
case BC_CAT:
|
||||
| stg r0, 0(r0)
|
||||
| stg r0, 0(r0)
|
||||
|
Loading…
Reference in New Issue
Block a user