Commit 860f941e authored by Shenghou Ma's avatar Shenghou Ma

[dev.power64] cmd/9c: fix endian issue in integer to floating point conversion

LGTM=rsc
R=rsc, iant
CC=golang-codereviews
https://golang.org/cl/129850043
parent 560cf4c6
......@@ -962,13 +962,22 @@ gmove(Node *f, Node *t)
regsalloc(&fxrat, t); /* should be type float */
gins(AMOVW, nodconst(0x43300000L), &fxc0);
gins(AMOVW, f, &fxc2);
gins(AMOVW, &fxc0, &fxrat);
gins(AXOR, nodconst(0x80000000L), &fxc2);
if(ctxt->arch->endian == BigEndian) {
gins(AMOVW, &fxc0, &fxrat);
fxc1 = fxrat;
fxc1.type = nodrat->type;
fxc1.etype = nodrat->etype;
fxc1.xoffset += SZ_LONG;
gins(AMOVW, &fxc2, &fxc1);
} else {
gins(AMOVW, &fxc2, &fxrat);
fxc1 = fxrat;
fxc1.type = nodrat->type;
fxc1.etype = nodrat->etype;
fxc1.xoffset += SZ_LONG;
gins(AMOVW, &fxc0, &fxc1);
}
regfree(&fxc2);
regfree(&fxc0);
regalloc(&nod, t, t); /* should be type float */
......
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