diff --git a/src/lj_asm_mips.h b/src/lj_asm_mips.h index 37160c05..5d4115a9 100644 --- a/src/lj_asm_mips.h +++ b/src/lj_asm_mips.h @@ -1827,6 +1827,8 @@ static void asm_ir(ASMState *as, IRIns *ir) break; if (ir->op2 <= IRFPM_TRUNC) asm_callround(as, ir, IRCALL_lj_vm_floor + ir->op2); + else if (ir->op2 == IRFPM_SQRT) + asm_fpunary(as, ir, MIPSI_SQRT_D); else asm_callid(as, ir, IRCALL_lj_vm_floor + ir->op2); break; diff --git a/src/lj_target_mips.h b/src/lj_target_mips.h index 1b7727d0..4d079eaa 100644 --- a/src/lj_target_mips.h +++ b/src/lj_target_mips.h @@ -223,6 +223,7 @@ typedef enum MIPSIns { MIPSI_SUB_D = 0x46200001, MIPSI_MUL_D = 0x46200002, MIPSI_DIV_D = 0x46200003, + MIPSI_SQRT_D = 0x46200004, MIPSI_ADD_S = 0x46000000, MIPSI_SUB_S = 0x46000001,