]> Cypherpunks repositories - gostls13.git/commitdiff
cmd/internal/obj/riscv: fix LMUL encoding for MF2 and MF8
authorMark Ryan <markdryan@rivosinc.com>
Tue, 6 May 2025 11:02:34 +0000 (13:02 +0200)
committerMark Ryan <markdryan@rivosinc.com>
Thu, 8 May 2025 08:52:12 +0000 (01:52 -0700)
The encodings for the riscv64 special operands SPOP_MF2 and SPOP_MF8
are incorrect, i.e., their values are swapped.  This leads to
incorrect encodings for the VSETVLI and VSETIVLI instructions.  The
assembler currently encodes

VSETVLI X10, E32, MF8, TA, MA, X12

as

VSETVLI X10, E32, MF2, TA, MA, X12

We update the encodings for SPOP_MF2 and SPOP_MF8 so that they match
the LMUL table in section "31.3.4. Vector type register, vtype" of
the "RISC-V Instruction Set Manual Volume 1".

Change-Id: Ic73355533d7c2a901ee060b35c2f7af6d58453e4
Reviewed-on: https://go-review.googlesource.com/c/go/+/670016
LUCI-TryBot-Result: Go LUCI <golang-scoped@luci-project-accounts.iam.gserviceaccount.com>
Reviewed-by: Cherry Mui <cherryyz@google.com>
Reviewed-by: Carlos Amedee <carlos@golang.org>
Reviewed-by: Meng Zhuo <mengzhuo1203@gmail.com>
Reviewed-by: Joel Sing <joel@sing.id.au>
src/cmd/asm/internal/asm/testdata/riscv64.s
src/cmd/internal/obj/riscv/cpu.go

index a9447861bd4c8a5338125687d923a0b3d0b94429..0db846a3a1243c9f3e46d3b68e6eba8978134794 100644 (file)
@@ -438,9 +438,9 @@ start:
        VSETVLI X10, E32, M2, TA, MA, X12               // 5776150d
        VSETVLI X10, E32, M4, TA, MA, X12               // 5776250d
        VSETVLI X10, E32, M8, TA, MA, X12               // 5776350d
-       VSETVLI X10, E32, MF2, TA, MA, X12              // 5776550d
+       VSETVLI X10, E32, MF8, TA, MA, X12              // 5776550d
        VSETVLI X10, E32, MF4, TA, MA, X12              // 5776650d
-       VSETVLI X10, E32, MF8, TA, MA, X12              // 5776750d
+       VSETVLI X10, E32, MF2, TA, MA, X12              // 5776750d
        VSETVLI X10, E32, M1, TA, MA, X12               // 5776050d
        VSETVLI $15, E32, M1, TA, MA, X12               // 57f607cd
        VSETIVLI $0, E32, M1, TA, MA, X12               // 577600cd
index d87b6b1efbd4e05d1ce1d177f28706c8cb92d96a..382c08a9d96f5f76b38c17cfa5d0a3a4966c7b37 100644 (file)
@@ -1297,9 +1297,9 @@ var specialOperands = map[SpecialOperand]struct {
        SPOP_M2:  {encoding: 1, name: "M2"},
        SPOP_M4:  {encoding: 2, name: "M4"},
        SPOP_M8:  {encoding: 3, name: "M8"},
-       SPOP_MF2: {encoding: 5, name: "MF2"},
+       SPOP_MF8: {encoding: 5, name: "MF8"},
        SPOP_MF4: {encoding: 6, name: "MF4"},
-       SPOP_MF8: {encoding: 7, name: "MF8"},
+       SPOP_MF2: {encoding: 7, name: "MF2"},
 
        SPOP_E8:  {encoding: 0, name: "E8"},
        SPOP_E16: {encoding: 1, name: "E16"},