luau/CodeGen/src/EmitInstructionX64.h

40 lines
1.9 KiB
C
Raw Normal View History

2022-10-13 23:59:53 +01:00
// 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>
2022-10-21 18:33:43 +01:00
#include "ltm.h"
2022-10-13 23:59:53 +01:00
typedef uint32_t Instruction;
typedef struct lua_TValue TValue;
namespace Luau
{
namespace CodeGen
{
class AssemblyBuilderX64;
struct Label;
2022-10-27 23:22:49 +01:00
struct ModuleHelpers;
2022-10-13 23:59:53 +01:00
2023-01-13 20:36:28 +00:00
void emitInstNameCall(AssemblyBuilderX64& build, const Instruction* pc, int pcpos, const TValue* k, Label& next, Label& fallback);
2022-12-09 18:07:25 +00:00
void emitInstCall(AssemblyBuilderX64& build, ModuleHelpers& helpers, const Instruction* pc, int pcpos);
void emitInstReturn(AssemblyBuilderX64& build, ModuleHelpers& helpers, const Instruction* pc, int pcpos);
void emitInstSetList(AssemblyBuilderX64& build, const Instruction* pc, Label& next);
2023-02-24 18:24:22 +00:00
void emitInstFastCall1(AssemblyBuilderX64& build, const Instruction* pc, int pcpos, Label& fallback);
void emitInstFastCall2(AssemblyBuilderX64& build, const Instruction* pc, int pcpos, Label& fallback);
void emitInstFastCall2K(AssemblyBuilderX64& build, const Instruction* pc, int pcpos, Label& fallback);
void emitInstFastCall(AssemblyBuilderX64& build, const Instruction* pc, int pcpos, Label& fallback);
2022-12-09 18:07:25 +00:00
void emitinstForGLoop(AssemblyBuilderX64& build, const Instruction* pc, int pcpos, Label& loopRepeat, Label& loopExit, Label& fallback);
void emitinstForGLoopFallback(AssemblyBuilderX64& build, const Instruction* pc, int pcpos, Label& loopRepeat);
void emitInstForGPrepXnextFallback(AssemblyBuilderX64& build, const Instruction* pc, int pcpos, Label& target);
2022-10-13 23:59:53 +01:00
void emitInstAnd(AssemblyBuilderX64& build, const Instruction* pc);
void emitInstAndK(AssemblyBuilderX64& build, const Instruction* pc);
void emitInstOr(AssemblyBuilderX64& build, const Instruction* pc);
void emitInstOrK(AssemblyBuilderX64& build, const Instruction* pc);
2022-12-09 18:07:25 +00:00
void emitInstGetImportFallback(AssemblyBuilderX64& build, int ra, uint32_t aux);
2023-01-13 20:36:28 +00:00
void emitInstCoverage(AssemblyBuilderX64& build, int pcpos);
2022-10-13 23:59:53 +01:00
} // namespace CodeGen
} // namespace Luau