aboutsummaryrefslogtreecommitdiffhomepage
path: root/amd64/emit.c
diff options
context:
space:
mode:
authorlemon <lsof@mailbox.org>2025-09-13 19:06:36 +0200
committerlemon <lsof@mailbox.org>2025-09-13 19:10:19 +0200
commit9fb8b66bb742ecdace257f2bdd10c4c5cd7f7310 (patch)
treed0c279136f76b3a0debc1f327bd94c6aec1be281 /amd64/emit.c
parentf91e875faf492c73e10cfb9e3183f676ba7d8d6c (diff)
regalloc: basic spilling support
Diffstat (limited to 'amd64/emit.c')
-rw-r--r--amd64/emit.c6
1 files changed, 6 insertions, 0 deletions
diff --git a/amd64/emit.c b/amd64/emit.c
index 6634c64..df4c4cd 100644
--- a/amd64/emit.c
+++ b/amd64/emit.c
@@ -952,6 +952,12 @@ emitinstr(uchar **pcode, struct function *fn, struct block *blk, int curi, struc
Xxor(pcode, cls, l, r);
}
break;
+ case Oxsave:
+ Xpush(pcode, mkregoper(ins->l).reg);
+ break;
+ case Oxrestore:
+ Xpop(pcode, mkregoper(ins->l).reg);
+ break;
case Ocall:
if (calltab.p[ins->r.i].vararg >= 0) {
struct call *call = &calltab.p[ins->r.i];