luaur_compiler/methods/
compiler_get_binary_op_arith.rs1use crate::records::compiler::Compiler;
2use luaur_ast::records::ast_expr_binary::AstExprBinaryOp;
3use luaur_common::enums::luau_opcode::LuauOpcode;
4
5use luaur_common::macros::luau_assert::LUAU_ASSERT;
6
7impl Compiler {
8 pub fn get_binary_op_arith(&mut self, op: AstExprBinaryOp, k: bool) -> LuauOpcode {
9 match op {
10 AstExprBinaryOp::Add => {
11 if k {
12 LuauOpcode::LOP_ADDK
13 } else {
14 LuauOpcode::LOP_ADD
15 }
16 }
17 AstExprBinaryOp::Sub => {
18 if k {
19 LuauOpcode::LOP_SUBK
20 } else {
21 LuauOpcode::LOP_SUB
22 }
23 }
24 AstExprBinaryOp::Mul => {
25 if k {
26 LuauOpcode::LOP_MULK
27 } else {
28 LuauOpcode::LOP_MUL
29 }
30 }
31 AstExprBinaryOp::Div => {
32 if k {
33 LuauOpcode::LOP_DIVK
34 } else {
35 LuauOpcode::LOP_DIV
36 }
37 }
38 AstExprBinaryOp::FloorDiv => {
39 if k {
40 LuauOpcode::LOP_IDIVK
41 } else {
42 LuauOpcode::LOP_IDIV
43 }
44 }
45 AstExprBinaryOp::Mod => {
46 if k {
47 LuauOpcode::LOP_MODK
48 } else {
49 LuauOpcode::LOP_MOD
50 }
51 }
52 AstExprBinaryOp::Pow => {
53 if k {
54 LuauOpcode::LOP_POWK
55 } else {
56 LuauOpcode::LOP_POW
57 }
58 }
59 _ => {
60 LUAU_ASSERT!(false);
61 LuauOpcode::LOP_NOP
62 }
63 }
64 }
65}