]> Cypherpunks repositories - gostls13.git/commitdiff
cmd/internal/obj/loong64: add F{MAXA/MINA}.{S/D} instructions
authorXiaolin Zhao <zhaoxiaolin@loongson.cn>
Mon, 30 Dec 2024 02:08:58 +0000 (10:08 +0800)
committerabner chenc <chenguoqi@loongson.cn>
Tue, 4 Mar 2025 01:01:33 +0000 (17:01 -0800)
Go asm syntax:
F{MAXA/MINA}{F/D} FK, FJ, FD

Equivalent platform assembler syntax:
f{maxa/mina}.{s/d} fd, fj, fk

Ref: https://loongson.github.io/LoongArch-Documentation/LoongArch-Vol1-EN.html

Change-Id: I6790657d2f36bdf5e6818b6c0aaa48117e782b8d
Reviewed-on: https://go-review.googlesource.com/c/go/+/653915
Reviewed-by: abner chenc <chenguoqi@loongson.cn>
Reviewed-by: Michael Pratt <mpratt@google.com>
LUCI-TryBot-Result: Go LUCI <golang-scoped@luci-project-accounts.iam.gserviceaccount.com>
Reviewed-by: Junyang Shao <shaojunyang@google.com>
src/cmd/asm/internal/asm/testdata/loong64enc1.s
src/cmd/internal/obj/loong64/a.out.go
src/cmd/internal/obj/loong64/anames.go
src/cmd/internal/obj/loong64/asm.go

index 1d34088096801c6b8c368ba39926bd0b0af7d517..3a8b8b8e5a5f122c5d4777e3d0ea683468f814a9 100644 (file)
@@ -346,6 +346,15 @@ lable2:
        FTINTVF         F0, F1          // 01241b01
        FTINTVD         F0, F1          // 01281b01
 
+       FMAXAF          F4, F5, F6      // a6900c01
+       FMAXAF          F4, F5          // a5900c01
+       FMAXAD          F4, F5, F6      // a6100d01
+       FMAXAD          F4, F5          // a5100d01
+       FMINAF          F4, F5, F6      // a6900e01
+       FMINAF          F4, F5          // a5900e01
+       FMINAD          F4, F5, F6      // a6100f01
+       FMINAD          F4, F5          // a5100f01
+
        FTINTRMWF       F0, F2          // 02041a01
        FTINTRMWD       F0, F2          // 02081a01
        FTINTRMVF       F0, F2          // 02241a01
index 6660ab3b386c93ea5099e13df3822f9ae8c03fdf..842c800bf5eae8353262744b51b87f2603fa0d9f 100644 (file)
@@ -695,6 +695,12 @@ const (
        AFMAXF
        AFMAXD
 
+       // 3.2.1.4
+       AFMAXAF
+       AFMAXAD
+       AFMINAF
+       AFMINAD
+
        // 3.2.1.7
        AFCOPYSGF
        AFCOPYSGD
index bf17058ce649a36b4ff35493335f1e4dee3265c9..82c38dde1a9c4e5ebac1bb07b3eea9e8c6b69b83 100644 (file)
@@ -223,6 +223,10 @@ var Anames = []string{
        "FMIND",
        "FMAXF",
        "FMAXD",
+       "FMAXAF",
+       "FMAXAD",
+       "FMINAF",
+       "FMINAD",
        "FCOPYSGF",
        "FCOPYSGD",
        "FSCALEBF",
index 5a5b31ab2f9005e28d237cd06690638fd5654575..96c0e7b8907b06b564e17e1589c0104f86b7dc86 100644 (file)
@@ -1362,6 +1362,10 @@ func buildop(ctxt *obj.Link) {
                        opset(AFCOPYSGD, r0)
                        opset(AFSCALEBF, r0)
                        opset(AFSCALEBD, r0)
+                       opset(AFMAXAF, r0)
+                       opset(AFMAXAD, r0)
+                       opset(AFMINAF, r0)
+                       opset(AFMINAD, r0)
 
                case AFMADDF:
                        opset(AFMADDD, r0)
@@ -2641,6 +2645,14 @@ func (c *ctxt0) oprrr(a obj.As) uint32 {
                return 0x211 << 15 // fmax.s
        case AFMAXD:
                return 0x212 << 15 // fmax.d
+       case AFMAXAF:
+               return 0x219 << 15 // fmaxa.s
+       case AFMAXAD:
+               return 0x21a << 15 // fmaxa.d
+       case AFMINAF:
+               return 0x21d << 15 // fmina.s
+       case AFMINAD:
+               return 0x21e << 15 // fmina.d
        case AFSCALEBF:
                return 0x221 << 15 // fscaleb.s
        case AFSCALEBD: