]> Cypherpunks repositories - gostls13.git/commitdiff
cmd/asm: on PPC64, fix assembling of FCMPO opcode
authorPaul E. Murphy <murp@ibm.com>
Tue, 14 May 2024 13:21:14 +0000 (08:21 -0500)
committerPaul Murphy <murp@ibm.com>
Fri, 17 May 2024 21:53:50 +0000 (21:53 +0000)
The assembler should pack 3 argument usage of FCMPO similar
to other CMP-like opcodes.

Fixes #67359

Change-Id: Icfb42a67d741431a70dd880806857b4c38f42d62
Reviewed-on: https://go-review.googlesource.com/c/go/+/585640
Reviewed-by: Cherry Mui <cherryyz@google.com>
LUCI-TryBot-Result: Go LUCI <golang-scoped@luci-project-accounts.iam.gserviceaccount.com>
Reviewed-by: Lynn Boger <laboger@linux.vnet.ibm.com>
Reviewed-by: Dmitri Shuralyov <dmitshur@google.com>
src/cmd/asm/internal/arch/ppc64.go
src/cmd/asm/internal/asm/testdata/ppc64.s

index 98a2bfedfdd0c54e2d3e7d37f4dafaf518a8eabe..c13652e960c76ebc90fbc016ad9e262d45d26f01 100644 (file)
@@ -25,7 +25,7 @@ func jumpPPC64(word string) bool {
 // one of the CMP instructions that require special handling.
 func IsPPC64CMP(op obj.As) bool {
        switch op {
-       case ppc64.ACMP, ppc64.ACMPU, ppc64.ACMPW, ppc64.ACMPWU, ppc64.AFCMPU:
+       case ppc64.ACMP, ppc64.ACMPU, ppc64.ACMPW, ppc64.ACMPWU, ppc64.AFCMPO, ppc64.AFCMPU:
                return true
        }
        return false
index 7e8c6f9cf22bc8a9b0c83d71ce001d97c5b92f9b..918c2e1681104a3c0c235a06d304648a1f6da77b 100644 (file)
@@ -763,7 +763,9 @@ TEXT asmtest(SB),DUPOK|NOSPLIT,$0
        FCPSGN F1, F2                   // fc420810
        FCPSGNCC F1, F2                 // fc420811
        FCMPO F1, F2                    // fc011040
+       FCMPO F1, F2, CR0               // FCMPO F1,CR0,F2 // fc011040
        FCMPU F1, F2                    // fc011000
+       FCMPU F1, F2, CR0               // FCMPU F1,CR0,F2 // fc011000
        LVX (R3)(R4), V1                // 7c2418ce
        LVX (R3)(R0), V1                // 7c2018ce
        LVX (R3), V1                    // 7c2018ce
@@ -1153,6 +1155,7 @@ TEXT asmtest(SB),DUPOK|NOSPLIT,$0
        MOVD XER, 4(R1)                 // 7fe102a6fbe10004
        MOVD 4(R1), SPR(3)              // ebe100047fe303a6
        MOVD 4(R1), XER                 // ebe100047fe103a6
+       OR $0, R0, R0                   // 60000000
        PNOP                            // 0700000000000000
 
        SETB CR1,R3                     // 7c640100