From 4cffc0436451cb192fb041a4b2be6fa8db5eda8e Mon Sep 17 00:00:00 2001 From: cinap_lenrek Date: Mon, 24 Jun 2019 19:38:46 +0200 Subject: [PATCH] 8c, 6c: LEA x, R; MOV (R), R -> MOV x, R --- sys/src/cmd/6c/peep.c | 18 ++++++++++++++++++ sys/src/cmd/8c/peep.c | 19 +++++++++++++++++++ 2 files changed, 37 insertions(+) diff --git a/sys/src/cmd/6c/peep.c b/sys/src/cmd/6c/peep.c index 1da2dcc7e..941f98904 100644 --- a/sys/src/cmd/6c/peep.c +++ b/sys/src/cmd/6c/peep.c @@ -170,6 +170,24 @@ loop1: } break; + case ALEAQ: + if(regtyp(&p->to)) { + r1 = rnops(uniqs(r)); + if(r1 != R){ + p1 = r1->prog; + if((p1->as == AMOVL || p1->as == AMOVQ) + && p1->to.type == p->to.type + && p1->from.type-D_INDIR == p->to.type + && p1->from.index == D_NONE + && p1->from.offset == 0){ + p->as = p1->as; + excise(r1); + t++; + } + } + } + break; + case AADDL: case AADDQ: case AADDW: diff --git a/sys/src/cmd/8c/peep.c b/sys/src/cmd/8c/peep.c index 482f17a65..439adbc4f 100644 --- a/sys/src/cmd/8c/peep.c +++ b/sys/src/cmd/8c/peep.c @@ -99,6 +99,25 @@ loop1: } } break; + + case ALEAL: + if(regtyp(&p->to)) { + r1 = uniqs(r); + if(r1 != R){ + p1 = r1->prog; + if(p1->as == AMOVL + && p1->to.type == p->to.type + && p1->from.type-D_INDIR == p->to.type + && p1->from.index == D_NONE + && p1->from.offset == 0){ + p->as = p1->as; + excise(r1); + t++; + } + } + } + break; + case AADDL: case AADDW: if(p->from.type != D_CONST || needc(p->link))