summaryrefslogtreecommitdiff
path: root/pkg/qbe/patch/0002-arm64-Handle-slots-in-Ocopy-operands.patch
diff options
context:
space:
mode:
Diffstat (limited to 'pkg/qbe/patch/0002-arm64-Handle-slots-in-Ocopy-operands.patch')
-rw-r--r--pkg/qbe/patch/0002-arm64-Handle-slots-in-Ocopy-operands.patch56
1 files changed, 0 insertions, 56 deletions
diff --git a/pkg/qbe/patch/0002-arm64-Handle-slots-in-Ocopy-operands.patch b/pkg/qbe/patch/0002-arm64-Handle-slots-in-Ocopy-operands.patch
deleted file mode 100644
index 5dbd4e6e..00000000
--- a/pkg/qbe/patch/0002-arm64-Handle-slots-in-Ocopy-operands.patch
+++ /dev/null
@@ -1,56 +0,0 @@
-From d9d890583d93f1bfdc38e4aa890350d4111b848a Mon Sep 17 00:00:00 2001
-From: Michael Forney <mforney@mforney.org>
-Date: Thu, 9 May 2019 23:32:15 -0700
-Subject: [PATCH] arm64: Handle slots in Ocopy operands
-
----
- arm64/emit.c | 25 +++++++++++++++++++++----
- 1 file changed, 21 insertions(+), 4 deletions(-)
-
-diff --git a/arm64/emit.c b/arm64/emit.c
-index 9ebcfcd..5a3fe55 100644
---- a/arm64/emit.c
-+++ b/arm64/emit.c
-@@ -218,8 +218,8 @@ emitf(char *s, Ins *i, E *e)
- break;
- case 'M':
- c = *s++;
-- assert(c == '0' || c == '1');
-- r = i->arg[c - '0'];
-+ assert(c == '0' || c == '1' || c == '=');
-+ r = c == '=' ? i->to : i->arg[c - '0'];
- switch (rtype(r)) {
- default:
- die("TODO emit non reg addresses");
-@@ -307,9 +307,26 @@ emitins(Ins *i, E *e)
- case Ocopy:
- if (req(i->to, i->arg[0]))
- break;
-- if (rtype(i->arg[0]) != RCon)
-+ if (rtype(i->to) == RSlot) {
-+ if (rtype(i->arg[0]) == RSlot) {
-+ emitf("ldr %?, %M0\n\tstr %?, %M=", i, e);
-+ } else {
-+ assert(isreg(i->arg[0]));
-+ emitf("str %0, %M=", i, e);
-+ }
-+ break;
-+ }
-+ assert(isreg(i->to));
-+ switch (rtype(i->arg[0])) {
-+ case RCon:
-+ loadcon(&e->fn->con[i->arg[0].val], i->to.val, i->cls, e->f);
-+ break;
-+ case RSlot:
-+ emitf("ldr %=, %M0", i, e);
-+ break;
-+ default:
- goto Table;
-- loadcon(&e->fn->con[i->arg[0].val], i->to.val, i->cls, e->f);
-+ }
- break;
- case Oaddr:
- assert(rtype(i->arg[0]) == RSlot);
---
-2.32.0
-