summary refs log tree commit diff
path: root/amd64/targ.c
blob: 2cf1bdc55f9cced6bb87c9724c8dff3a66870331 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
#include "all.h"

Amd64Op amd64_op[NOp] = {
#define O(op, t, x) [O##op] =
#define X(nm, zf, lf) { nm, zf, lf, },
	#include "../ops.h"
};

static int
amd64_memargs(int op)
{
	return amd64_op[op].nmem;
}

Target T_amd64_sysv = {
	.name = "amd64_sysv",
	.gpr0 = RAX,
	.ngpr = NGPR,
	.fpr0 = XMM0,
	.nfpr = NFPR,
	.rglob = BIT(RBP) | BIT(RSP),
	.nrglob = 2,
	.rsave = amd64_sysv_rsave,
	.nrsave = {NGPS, NFPS},
	.retregs = amd64_sysv_retregs,
	.argregs = amd64_sysv_argregs,
	.memargs = amd64_memargs,
	.abi = amd64_sysv_abi,
	.isel = amd64_isel,
	.emitfn = amd64_emitfn,
};