Commit 1d0b65d3 authored by Kai Backman's avatar Kai Backman

added missing sgen reverse character copy code.

R=rsc
http://go/go-review/1018006
parent 770b8727
......@@ -1084,7 +1084,7 @@ sgen(Node *n, Node *res, int32 w)
regalloc(&dst, types[tptr], res);
if(n->ullman >= res->ullman) {
agen(n, &dst);
agen(n, &dst); // temporarily use dst
regalloc(&src, types[tptr], N);
gins(AMOVW, &dst, &src);
agen(res, &dst);
......@@ -1137,6 +1137,29 @@ sgen(Node *n, Node *res, int32 w)
patch(gbranch(ABNE, T), ploop);
regfree(&nend);
} else {
// move src and dest to the end of block
p = gins(AMOVW, &src, &src);
p->from.type = D_CONST;
p->from.offset = (q-1)*4;
p = gins(AMOVW, &dst, &dst);
p->from.type = D_CONST;
p->from.offset = (q-1)*4;
while(q > 0) {
p = gins(AMOVW, &src, &tmp);
p->from.type = D_OREG;
p->from.offset = -4;
p->scond |= C_PBIT;
p = gins(AMOVW, &tmp, &dst);
p->to.type = D_OREG;
p->to.offset = -4;
p->scond |= C_PBIT;
q--;
}
}
} else {
// normal direction
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment