]> Cypherpunks repositories - gostls13.git/commitdiff
cmd/asm: add LCDBR instruction on s390x
authorVishwanatha HD <Vishwanatha.HD@ibm.com>
Mon, 10 Feb 2025 10:50:59 +0000 (10:50 +0000)
committerCherry Mui <cherryyz@google.com>
Mon, 24 Mar 2025 14:05:55 +0000 (07:05 -0700)
This CL is to add LCDBR assembly instruction mnemonics, mainly used in math package.

The LCDBR instruction has the same effect as the FNEG pseudo-instructions, just that it sets the flag.

Change-Id: I3f00f1ed19148d074c3b6c5f64af0772289f2802
Reviewed-on: https://go-review.googlesource.com/c/go/+/648036
Reviewed-by: Srinivas Pokala <Pokala.Srinivas@ibm.com>
Reviewed-by: Cherry Mui <cherryyz@google.com>
Reviewed-by: Michael Munday <mike.munday@lowrisc.org>
Reviewed-by: Michael Pratt <mpratt@google.com>
Run-TryBot: Michael Munday <mike.munday@lowrisc.org>
LUCI-TryBot-Result: Go LUCI <golang-scoped@luci-project-accounts.iam.gserviceaccount.com>
TryBot-Result: Gopher Robot <gobot@golang.org>

15 files changed:
src/cmd/asm/internal/asm/testdata/s390x.s
src/cmd/internal/obj/s390x/a.out.go
src/cmd/internal/obj/s390x/anames.go
src/cmd/internal/obj/s390x/asmz.go
src/math/acos_s390x.s
src/math/asin_s390x.s
src/math/asinh_s390x.s
src/math/atan2_s390x.s
src/math/erfc_s390x.s
src/math/exp_s390x.s
src/math/expm1_s390x.s
src/math/log1p_s390x.s
src/math/log_s390x.s
src/math/pow_s390x.s
src/math/tan_s390x.s

index db2ee199cf4404fca52b970732de03c148a894ad..95a8c50dab0acc7a5e0442c47a653ac8ae2e0522 100644 (file)
@@ -401,6 +401,7 @@ TEXT main·foo(SB),DUPOK|NOSPLIT,$16-0 // TEXT main.foo(SB), DUPOK|NOSPLIT, $16-
        FMADDS  F1, F2, F3             // b30e3012
        FMSUB   F4, F5, F5             // b31f5045
        FMSUBS  F6, F6, F7             // b30f7066
+       LCDBR   F0, F2                 // b3130020
        LPDFR   F1, F2                 // b3700021
        LNDFR   F3, F4                 // b3710043
        CPSDR   F5, F6, F7             // b3725076
@@ -420,8 +421,8 @@ TEXT main·foo(SB),DUPOK|NOSPLIT,$16-0 // TEXT main.foo(SB), DUPOK|NOSPLIT, $16-
        KLMD    R2, R8                 // b93f0028
        KIMD    R0, R4                 // b93e0004
        KDSA    R0, R8                 // b93a0008
-       KMA     R2, R6, R4              // b9296024
-       KMCTR   R2, R6, R4              // b92d6024
+       KMA     R2, R6, R4             // b9296024
+       KMCTR   R2, R6, R4             // b92d6024
 
        // vector add and sub instructions
        VAB     V3, V4, V4              // e743400000f3
index 08ade519240df941c47a7bdeeae8c368b8059651..3eed4624b12930e4b9c13b9be862fbed74cf71d2 100644 (file)
@@ -329,6 +329,7 @@ const (
        AFNABS
        AFNEG
        AFNEGS
+       ALCDBR
        ALEDBR
        ALDEBR
        ALPDFR
index fa239843323f0491be3cedd7afb0d5e72167dada..ae86d2092b0ea28f5b2eee4026231ca9126bf04d 100644 (file)
@@ -96,6 +96,7 @@ var Anames = []string{
        "FNABS",
        "FNEG",
        "FNEGS",
+       "LCDBR",
        "LEDBR",
        "LDEBR",
        "LPDFR",
index 98dbc7c83459877f6d80f309e335a1b2d07dbb2f..6511549eeb3e5b31382a120a467314bc2af5922a 100644 (file)
@@ -969,6 +969,7 @@ func buildop(ctxt *obj.Link) {
                        opset(ALNDFR, r)
                        opset(AFNEG, r)
                        opset(AFNEGS, r)
+                       opset(ALCDBR, r)
                        opset(ALEDBR, r)
                        opset(ALDEBR, r)
                        opset(AFSQRT, r)
@@ -3373,6 +3374,8 @@ func (c *ctxtz) asmout(p *obj.Prog, asm *[]byte) {
                        opcode = op_LCDFR
                case AFNEGS:
                        opcode = op_LCEBR
+               case ALCDBR:
+                       opcode = op_LCDBR
                case ALEDBR:
                        opcode = op_LEDBR
                case ALDEBR:
index d2288b8cd8e6b155bfc4562eb25d51266841feb5..4431b99e1cbd7e2e41f21ee69e1ff3db712821d6 100644 (file)
@@ -121,7 +121,7 @@ L4:
 L12:
        FMOVD   24(R9), F0
        FMADD   F10, F10, F0
-       WORD    $0xB3130080     //lcdbr %f8,%f0
+       LCDBR   F0, F8
        WORD    $0xED009008     //cdb   %f0,.L37-.L13(%r9)
        BYTE    $0x00
        BYTE    $0x19
@@ -129,7 +129,7 @@ L12:
 L5:
        MOVW    R12, R4
        CMPBLE  R4, $0, L7
-       WORD    $0xB31300AA     //lcdbr %f10,%f10
+       LCDBR   F10, F10
        FMOVD   $0, F1
        BR      L3
 L9:
index dc54d053f1cab9f576a342e2a46bd72186da2bc0..e5887c9bea3336a1f1695c222377a9aa290248f4 100644 (file)
@@ -139,7 +139,7 @@ L4:
 L14:
        FMOVD   200(R9), F0
        FMADD   F8, F8, F0
-       WORD    $0xB31300A0     //lcdbr %f10,%f0
+       LCDBR   F0, F10
        WORD    $0xED009020     //cdb   %f0,.L39-.L15(%r9)
        BYTE    $0x00
        BYTE    $0x19
@@ -147,7 +147,7 @@ L14:
 L6:
        MOVW    R7, R6
        CMPBLE  R6, $0, L8
-       WORD    $0xB3130088     //lcdbr %f8,%f8
+       LCDBR   F8, F8
        FMOVD   24(R9), F1
        BR      L4
 L10:
index 1bcf2954c44d65f4f3ee6667866d1e9d1a8abb5d..94081d3b15ce0517793cb1ec97cb8db9db98bad5 100644 (file)
@@ -174,7 +174,7 @@ L6:
        MOVD    R12, R6
        CMPBGT  R6, $0, L1
 
-       WORD    $0xB3130000     //lcdbr %f0,%f0
+       LCDBR   F0, F0
        FMOVD   F0, ret+8(FP)
        RET
 L16:
@@ -206,8 +206,8 @@ L16:
        FMOVD   F0, ret+8(FP)
        RET
 L17:
-       WORD    $0xB31300A0     //lcdbr %f10,%f0
+       LCDBR   F0, F10
        BR      L4
 L15:
-       WORD    $0xB31300A0     //lcdbr %f10,%f0
+       LCDBR   F0, F10
        BR      L9
index 587b89e9b5bec0dd861d9dc14a0857e73463db7a..13ff31977b5376676c0aa622286a8ff6b0a8d719 100644 (file)
@@ -244,16 +244,16 @@ L17:
        WFDDB   V0, V2, V4
        BYTE    $0x18   //lr    %r2,%r5
        BYTE    $0x25
-       WORD    $0xB3130034     //lcdbr %f3,%f4
+       LCDBR   F4, F3
        BR      L3
 L23:
-       WORD    $0xB3130062     //lcdbr %f6,%f2
+       LCDBR   F2, F6
        BR      L4
 L22:
        VLR     V20, V0
        BR      L9
 L21:
-       WORD    $0xB3130022     //lcdbr %f2,%f2
+       LCDBR   F2, F2
        BR      L8
 L24:
        VLR     V20, V4
index 7e9d469cc6e0d2d81fa32186772f8a8ba7acb930..e03a7749ff290cafe58fea0d15eca0b0ebeadb81 100644 (file)
@@ -355,7 +355,7 @@ L10:
        WFMADB  V0, V5, V3, V5
        BR      L11
 L35:
-       WORD    $0xB3130010     //lcdbr %f1,%f0
+       LCDBR   F0, F1
        BR      L9
 L36:
        FMOVD   304(R9), F3
@@ -436,7 +436,7 @@ L30:
 L20:
        FMOVD   88(R9), F0
        WFMADB  V7, V2, V0, V2
-       WORD    $0xB3130022     //lcdbr %f2,%f2
+       LCDBR   F2, F2
        FMOVD   F2, ret+8(FP)
        RET
 L13:
index e0ec8230738ad9a07fd8ce2073f20dc05a599e55..baf0e985a1e2939410df95508eda904cf5613864 100644 (file)
@@ -116,7 +116,7 @@ L16:
        FMOVD   F0, ret+8(FP)
        RET
 L20:
-       WORD    $0xB3130020     //lcdbr %f2,%f0
+       LCDBR   F0, F2
        BR      L2
 L6:
        MOVD    $·expxaddexp<>+0(SB), R1
index 16c861bb18b605778b8716accad38d9149c3cedf..c193edc7cb8794127d8c393ef2ebdfbe44b95380 100644 (file)
@@ -100,14 +100,14 @@ L2:
        FMOVD   16(R5), F6
        WFMADB  V0, V2, V6, V2
        RISBGZ  $57, $60, $3, R1, R3
-       WORD    $0xB3130022     //lcdbr %f2,%f2
+       LCDBR   F2, F2
        MOVD    $·expm1tab<>+0(SB), R2
        WORD    $0x68432000     //ld    %f4,0(%r3,%r2)
        FMADD   F4, F0, F0
        SLD     $48, R1, R2
        WFMSDB  V2, V0, V4, V0
        LDGR    R2, F4
-       WORD    $0xB3130000     //lcdbr %f0,%f0
+       LCDBR   F0, F0
        FSUB    F4, F6
        WFMSDB  V0, V4, V6, V0
        FMOVD   F0, ret+8(FP)
@@ -126,7 +126,7 @@ L16:
        FMOVD   F0, ret+8(FP)
        RET
 L20:
-       WORD    $0xB3130020     //lcdbr %f2,%f0
+       LCDBR   F0, F2
        BR      L2
 L6:
        MOVD    $·expm1xaddexp<>+0(SB), R1
@@ -154,13 +154,13 @@ L6:
        FMOVD   16(R5), F6
        FMADD   F4, F1, F6
        LGDR    F5, R1
-       WORD    $0xB3130066     //lcdbr %f6,%f6
+       LCDBR   F6, F6
        RISBGZ  $57, $60, $3, R1, R3
        WORD    $0x68432000     //ld    %f4,0(%r3,%r2)
        FMADD   F4, F1, F1
        MOVD    $0x4086000000000000, R2
        FMSUB   F1, F6, F4
-       WORD    $0xB3130044     //lcdbr %f4,%f4
+       LCDBR   F4, F4
        WFCHDBS V2, V0, V0
        BEQ     L21
        ADDW    $0xF000, R1
index 00eb374996391fb6ce5078a31fadf795daf89022..98fe82c9c390029aebab7474bdcb536c1a414c2c 100644 (file)
@@ -114,7 +114,7 @@ TEXT        ·log1pAsm(SB), NOSPLIT, $0-16
        MOVD    $·log1pxzero<>+0(SB), R1
        FMOVD   0(R1), F2
        BVS     LEXITTAGlog1p
-       WORD    $0xB3130044     // lcdbr %f4,%f4
+       LCDBR   F4, F4
        WFCEDBS V2, V4, V6
        BEQ     L9
        WFCHDBS V4, V2, V2
@@ -129,7 +129,7 @@ L8:
        FSUB    F4, F3
        FMADD   F2, F4, F1
        MOVD    $·log1pc4<>+0(SB), R2
-       WORD    $0xB3130041     // lcdbr %f4,%f1
+       LCDBR   F1, F4
        FMOVD   0(R2), F7
        FSUB    F3, F0
        MOVD    $·log1pc3<>+0(SB), R2
index 4b514f3dd42eb11fa4ca0a3673ad6a36bd93adcf..215d7a03a7509f8a2739431f2d6fb1e0832fe428 100644 (file)
@@ -142,7 +142,7 @@ L2:
        BYTE    $0x10
        BYTE    $0x1F
        MOVD    ·logxl2<>+0(SB), R1
-       WORD    $0xB3130001     //lcdbr %f0,%f1
+       LCDBR   F1, F0
        LDGR    R1, F4
        WFMADB  V0, V4, V2, V0
 L1:
index c8758fc5f8598f78ca21f558a912eb003dd5e704..97cd48d96ec85008138c877c0ebadc0172690f53 100644 (file)
@@ -492,10 +492,10 @@ L9:
        FMOVD   F2, F1
        BR      L1
 L46:
-       WORD    $0xB3130040     //lcdbr %f4,%f0
+       LCDBR   F0, F4
        BR      L3
 L44:
-       WORD    $0xB3130030     //lcdbr %f3,%f0
+       LCDBR   F0, F3
        BR      L7
 L35:
        FMOVD   F0, F1
@@ -590,7 +590,7 @@ L32:
        FMOVD   8(R9), F4
        BR      L17
 L50:
-       WORD    $0xB3130042     //lcdbr %f4,%f2
+       LCDBR   F2, F4
        BR      L14
 xIsOne:                        // Pow(1, y) = 1 for any y
 yIsOne:                        // Pow(x, 1) = x for any x
index 6a4c449b0dfcb60c45f59fa8d0712c9d53c259ec..48cd2841e881e00c272640d792bcc25ffa91a574 100644 (file)
@@ -87,7 +87,7 @@ L2:
        WFDDB   V0, V1, V0
        WFMDB   V2, V16, V2
        WFMADB  V2, V0, V4, V0
-       WORD    $0xB3130000     //lcdbr %f0,%f0
+       LCDBR   F0, F0
        FMOVD   F0, ret+8(FP)
        RET
 L12:
@@ -102,7 +102,7 @@ L11:
        FMOVD   F0, ret+8(FP)
        RET
 L10:
-       WORD    $0xB3130020     //lcdbr %f2,%f0
+       LCDBR   F0, F2
        BR      L2
 L9:
        BR      ·tan(SB)