package llvm

import (
	"fmt"

	"github.com/marzeq/qk/types"
)

type sysVI386ABIGenerator struct{}

func (sysVI386ABIGenerator) aggregateParamChunks(e *Emitter, aggregate types.Type) []abiChunk {
	_, align := e.typeSizeAlign(aggregate)
	return []abiChunk{{
		typeName:   "ptr",
		attributes: fmt.Sprintf(" byval(%s) align %d", e.TypeEmit(aggregate), max(4, align)),
		offset:     -1,
	}}
}

func (sysVI386ABIGenerator) aggregateReturnChunks(*Emitter, types.Type) []abiChunk {
	return nil
}

func (sysVI386ABIGenerator) requiresSRet(*Emitter, types.Type) bool {
	return true
}