| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970 |
- #include "../all.h"
- typedef struct Amd64Op Amd64Op;
- enum Amd64Reg {
- RAX = RXX+1, /* caller-save */
- RCX,
- RDX,
- RSI,
- RDI,
- R8,
- R9,
- R10,
- R11,
- RBX, /* callee-save */
- R12,
- R13,
- R14,
- R15,
- RBP, /* globally live */
- RSP,
- XMM0, /* sse */
- XMM1,
- XMM2,
- XMM3,
- XMM4,
- XMM5,
- XMM6,
- XMM7,
- XMM8,
- XMM9,
- XMM10,
- XMM11,
- XMM12,
- XMM13,
- XMM14,
- XMM15,
- NFPR = XMM14 - XMM0 + 1, /* reserve XMM15 */
- NGPR = RSP - RAX + 1,
- NGPS = R11 - RAX + 1,
- NFPS = NFPR,
- NCLR = R15 - RBX + 1,
- };
- MAKESURE(reg_not_tmp, XMM15 < (int)Tmp0);
- struct Amd64Op {
- char nmem;
- char zflag;
- char lflag;
- };
- /* targ.c */
- extern Amd64Op amd64_op[];
- /* sysv.c (abi) */
- extern int amd64_sysv_rsave[];
- extern int amd64_sysv_rclob[];
- bits amd64_sysv_retregs(Ref, int[2]);
- bits amd64_sysv_argregs(Ref, int[2]);
- void amd64_sysv_abi(Fn *);
- /* isel.c */
- void amd64_isel(Fn *);
- /* emit.c */
- void amd64_emitfn(Fn *, FILE *);
|