]> Cypherpunks repositories - gostls13.git/commitdiff
cmd/5g: improve shift code generation
authorDave Cheney <dave@cheney.net>
Sun, 4 Nov 2012 09:06:37 +0000 (20:06 +1100)
committerDave Cheney <dave@cheney.net>
Sun, 4 Nov 2012 09:06:37 +0000 (20:06 +1100)
This CL is a backport of 6012049 which improves code
generation for shift operations.

benchmark       old ns/op    new ns/op    delta
BenchmarkLSL            9            5  -49.67%
BenchmarkLSR            9            4  -50.00%

R=golang-dev, minux.ma, r, rsc
CC=golang-dev
https://golang.org/cl/6813045

src/cmd/5g/ggen.c

index a60f414943baada2e5c669019a5013d0896aa6fb..8566f935dfb48566688a65c561eda22b27cfbabd 100644 (file)
@@ -407,7 +407,9 @@ cgen_asop(Node *n)
 hard:
        n2.op = 0;
        n1.op = 0;
-       if(nr->ullman >= nl->ullman || nl->addable) {
+       if(nr->op == OLITERAL) {
+               // don't allocate a register for literals.
+       } else if(nr->ullman >= nl->ullman || nl->addable) {
                regalloc(&n2, nr->type, N);
                cgen(nr, &n2);
                nr = &n2;