]> Cypherpunks repositories - gostls13.git/commitdiff
cmd/internal/obj/ppc64: fix MOVFL REG, CONST
authorIan Lance Taylor <iant@golang.org>
Fri, 2 Jun 2017 22:51:18 +0000 (15:51 -0700)
committerIan Lance Taylor <iant@golang.org>
Mon, 5 Jun 2017 19:59:33 +0000 (19:59 +0000)
The MOVFL instruction (which external PPC64 docs call mtcrf) can take
either a CR register or a constant. It doesn't make sense to specify
both, as the CR register implies the constant value. Specifying either
a register or a constant is enforced by the implementation in the
asmout method (case 69).

However, the optab was providing a form that specified both a constant
and a CR register, and was not providing a form that specified only a
constant. This CL fixes the optab table to provide a form that takes
only a constant.

No test because I don't know where to write it. The next CL in this
series will use the new instruction format.

Change-Id: I8bb5d3ed60f483b54c341ce613931e126f7d7be6
Reviewed-on: https://go-review.googlesource.com/44732
Run-TryBot: Ian Lance Taylor <iant@golang.org>
TryBot-Result: Gobot Gobot <gobot@golang.org>
Reviewed-by: Lynn Boger <laboger@linux.vnet.ibm.com>
src/cmd/internal/obj/ppc64/asm9.go

index 53cdb5f92b7ec082200f59b766dcd9d3da034831..bdbac03f9c043324547bdf0ba9e369dea4a6f4b8 100644 (file)
@@ -520,7 +520,7 @@ var optab = []Optab{
        {AMOVFL, C_CREG, C_NONE, C_NONE, C_CREG, 67, 4, 0},
        {AMOVW, C_CREG, C_NONE, C_NONE, C_REG, 68, 4, 0},
        {AMOVWZ, C_CREG, C_NONE, C_NONE, C_REG, 68, 4, 0},
-       {AMOVFL, C_REG, C_NONE, C_LCON, C_CREG, 69, 4, 0},
+       {AMOVFL, C_REG, C_NONE, C_NONE, C_LCON, 69, 4, 0},
        {AMOVFL, C_REG, C_NONE, C_NONE, C_CREG, 69, 4, 0},
        {AMOVW, C_REG, C_NONE, C_NONE, C_CREG, 69, 4, 0},
        {AMOVWZ, C_REG, C_NONE, C_NONE, C_CREG, 69, 4, 0},