Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

wazevo: scaffolds amd64 backend #1893

Merged
merged 2 commits into from
Jan 4, 2024
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
188 changes: 188 additions & 0 deletions internal/engine/wazevo/backend/isa/amd64/machine.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,188 @@
package amd64

import (
"context"

"github.com/tetratelabs/wazero/internal/engine/wazevo/backend"
"github.com/tetratelabs/wazero/internal/engine/wazevo/backend/regalloc"
"github.com/tetratelabs/wazero/internal/engine/wazevo/ssa"
"github.com/tetratelabs/wazero/internal/engine/wazevo/wazevoapi"
)

// NewBackend returns a new backend for arm64.
func NewBackend() backend.Machine {
m := &machine{}
return m
}

// machine implements backend.Machine for amd64.
type machine struct {
stackBoundsCheckDisabled bool
}

// DisableStackCheck implements backend.Machine.
func (m *machine) DisableStackCheck() {
m.stackBoundsCheckDisabled = true
}

// RegisterInfo implements backend.Machine.
func (m *machine) RegisterInfo() *regalloc.RegisterInfo {
// TODO implement me
panic("implement me")
}

// InitializeABI implements backend.Machine.
func (m *machine) InitializeABI(sig *ssa.Signature) {
// TODO implement me
panic("implement me")
}

// ABI implements backend.Machine.
func (m *machine) ABI() backend.FunctionABI {
// TODO implement me
panic("implement me")
}

// SetCompiler implements backend.Machine.
func (m *machine) SetCompiler(compiler backend.Compiler) {
// TODO implement me
panic("implement me")
}

// StartLoweringFunction implements backend.Machine.
func (m *machine) StartLoweringFunction(maximumBlockID ssa.BasicBlockID) {
// TODO implement me
panic("implement me")
}

// StartBlock implements backend.Machine.
func (m *machine) StartBlock(block ssa.BasicBlock) {
// TODO implement me
panic("implement me")
}

// LowerSingleBranch implements backend.Machine.
func (m *machine) LowerSingleBranch(b *ssa.Instruction) {
// TODO implement me
panic("implement me")
}

// LowerConditionalBranch implements backend.Machine.
func (m *machine) LowerConditionalBranch(b *ssa.Instruction) {
// TODO implement me
panic("implement me")
}

// LowerInstr implements backend.Machine.
func (m *machine) LowerInstr(instruction *ssa.Instruction) {
// TODO implement me
panic("implement me")
}

// EndBlock implements backend.Machine.
func (m *machine) EndBlock() {
// TODO implement me
panic("implement me")
}

// LinkAdjacentBlocks implements backend.Machine.
func (m *machine) LinkAdjacentBlocks(prev, next ssa.BasicBlock) {
// TODO implement me
panic("implement me")
}

// EndLoweringFunction implements backend.Machine.
func (m *machine) EndLoweringFunction() {
// TODO implement me
panic("implement me")
}

// Reset implements backend.Machine.
func (m *machine) Reset() {
// TODO implement me
panic("implement me")
}

// FlushPendingInstructions implements backend.Machine.
func (m *machine) FlushPendingInstructions() {
// TODO implement me
panic("implement me")
}

// InsertMove implements backend.Machine.
func (m *machine) InsertMove(dst, src regalloc.VReg, typ ssa.Type) {
// TODO implement me
panic("implement me")
}

// InsertReturn implements backend.Machine.
func (m *machine) InsertReturn() {
// TODO implement me
panic("implement me")
}

// InsertLoadConstant implements backend.Machine.
func (m *machine) InsertLoadConstant(instr *ssa.Instruction, vr regalloc.VReg) {
// TODO implement me
panic("implement me")
}

// Format implements backend.Machine.
func (m *machine) Format() string {
// TODO implement me
panic("implement me")
}

// Function implements backend.Machine.
func (m *machine) Function() regalloc.Function {
// TODO implement me
panic("implement me")
}

// SetupPrologue implements backend.Machine.
func (m *machine) SetupPrologue() {
// TODO implement me
panic("implement me")
}

// SetupEpilogue implements backend.Machine.
func (m *machine) SetupEpilogue() {
// TODO implement me
panic("implement me")
}

// ResolveRelativeAddresses implements backend.Machine.
func (m *machine) ResolveRelativeAddresses(ctx context.Context) {
// TODO implement me
panic("implement me")
}

// ResolveRelocations implements backend.Machine.
func (m *machine) ResolveRelocations(refToBinaryOffset map[ssa.FuncRef]int, binary []byte, relocations []backend.RelocationInfo) {
// TODO implement me
panic("implement me")
}

// Encode implements backend.Machine.
func (m *machine) Encode() {
// TODO implement me
panic("implement me")
}

// CompileGoFunctionTrampoline implements backend.Machine.
func (m *machine) CompileGoFunctionTrampoline(exitCode wazevoapi.ExitCode, sig *ssa.Signature, needModuleContextPtr bool) []byte {
// TODO implement me
panic("implement me")
}

// CompileStackGrowCallSequence implements backend.Machine.
func (m *machine) CompileStackGrowCallSequence() []byte {
// TODO implement me
panic("implement me")
}

// CompileEntryPreamble implements backend.Machine.
func (m *machine) CompileEntryPreamble(signature *ssa.Signature) []byte {
// TODO implement me
panic("implement me")
}
11 changes: 11 additions & 0 deletions internal/engine/wazevo/backend/isa/amd64/unwind_stack.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
package amd64

func UnwindStack(sp, top uintptr, returnAddresses []uintptr) []uintptr {
panic("implement me")
}

// GoCallStackView is a function to get a view of the stack before a Go call, which
// is the view of the stack allocated in CompileGoFunctionTrampoline.
func GoCallStackView(stackPointerBeforeGoCall *uint64) []uint64 {
panic("implement me")
}
Loading