mirror of
https://github.com/luau-lang/luau.git
synced 2025-01-07 11:59:11 +00:00
59 lines
3.2 KiB
C
59 lines
3.2 KiB
C
|
// This file is part of the Luau programming language and is licensed under MIT License; see LICENSE.txt for details
|
||
|
#pragma once
|
||
|
|
||
|
#include <stdint.h>
|
||
|
|
||
|
#include "ltm.h"
|
||
|
|
||
|
typedef uint32_t Instruction;
|
||
|
|
||
|
namespace Luau
|
||
|
{
|
||
|
namespace CodeGen
|
||
|
{
|
||
|
|
||
|
enum class IrCondition : uint8_t;
|
||
|
struct IrOp;
|
||
|
struct IrBuilder;
|
||
|
|
||
|
void translateInstLoadNil(IrBuilder& build, const Instruction* pc);
|
||
|
void translateInstLoadB(IrBuilder& build, const Instruction* pc, int pcpos);
|
||
|
void translateInstLoadN(IrBuilder& build, const Instruction* pc);
|
||
|
void translateInstLoadK(IrBuilder& build, const Instruction* pc);
|
||
|
void translateInstLoadKX(IrBuilder& build, const Instruction* pc);
|
||
|
void translateInstMove(IrBuilder& build, const Instruction* pc);
|
||
|
void translateInstJump(IrBuilder& build, const Instruction* pc, int pcpos);
|
||
|
void translateInstJumpBack(IrBuilder& build, const Instruction* pc, int pcpos);
|
||
|
void translateInstJumpIf(IrBuilder& build, const Instruction* pc, int pcpos, bool not_);
|
||
|
void translateInstJumpIfEq(IrBuilder& build, const Instruction* pc, int pcpos, bool not_);
|
||
|
void translateInstJumpIfCond(IrBuilder& build, const Instruction* pc, int pcpos, IrCondition cond);
|
||
|
void translateInstJumpX(IrBuilder& build, const Instruction* pc, int pcpos);
|
||
|
void translateInstJumpxEqNil(IrBuilder& build, const Instruction* pc, int pcpos);
|
||
|
void translateInstJumpxEqB(IrBuilder& build, const Instruction* pc, int pcpos);
|
||
|
void translateInstJumpxEqN(IrBuilder& build, const Instruction* pc, int pcpos);
|
||
|
void translateInstJumpxEqS(IrBuilder& build, const Instruction* pc, int pcpos);
|
||
|
void translateInstBinary(IrBuilder& build, const Instruction* pc, int pcpos, TMS tm);
|
||
|
void translateInstBinaryK(IrBuilder& build, const Instruction* pc, int pcpos, TMS tm);
|
||
|
void translateInstNot(IrBuilder& build, const Instruction* pc);
|
||
|
void translateInstMinus(IrBuilder& build, const Instruction* pc, int pcpos);
|
||
|
void translateInstLength(IrBuilder& build, const Instruction* pc, int pcpos);
|
||
|
void translateInstNewTable(IrBuilder& build, const Instruction* pc, int pcpos);
|
||
|
void translateInstDupTable(IrBuilder& build, const Instruction* pc, int pcpos);
|
||
|
void translateInstGetUpval(IrBuilder& build, const Instruction* pc, int pcpos);
|
||
|
void translateInstSetUpval(IrBuilder& build, const Instruction* pc, int pcpos);
|
||
|
void translateInstCloseUpvals(IrBuilder& build, const Instruction* pc);
|
||
|
void translateInstGetTableN(IrBuilder& build, const Instruction* pc, int pcpos);
|
||
|
void translateInstSetTableN(IrBuilder& build, const Instruction* pc, int pcpos);
|
||
|
void translateInstGetTable(IrBuilder& build, const Instruction* pc, int pcpos);
|
||
|
void translateInstSetTable(IrBuilder& build, const Instruction* pc, int pcpos);
|
||
|
void translateInstGetImport(IrBuilder& build, const Instruction* pc, int pcpos);
|
||
|
void translateInstGetTableKS(IrBuilder& build, const Instruction* pc, int pcpos);
|
||
|
void translateInstSetTableKS(IrBuilder& build, const Instruction* pc, int pcpos);
|
||
|
void translateInstGetGlobal(IrBuilder& build, const Instruction* pc, int pcpos);
|
||
|
void translateInstSetGlobal(IrBuilder& build, const Instruction* pc, int pcpos);
|
||
|
void translateInstConcat(IrBuilder& build, const Instruction* pc, int pcpos);
|
||
|
void translateInstCapture(IrBuilder& build, const Instruction* pc, int pcpos);
|
||
|
|
||
|
} // namespace CodeGen
|
||
|
} // namespace Luau
|