aboutsummaryrefslogtreecommitdiff
path: root/src/cmd/internal
diff options
context:
space:
mode:
authorXiaolin Zhao <zhaoxiaolin@loongson.cn>2024-04-10 11:37:56 +0800
committerGopher Robot <gobot@golang.org>2024-08-02 14:33:57 +0000
commite7619216888cdd25e445d06bc424532a922fdf94 (patch)
treeeac27b3da2b399fd3d792e00d547753181e93159 /src/cmd/internal
parent9abd11440c5fa027304d6cda051fc0a30b6b430b (diff)
downloadgo-e7619216888cdd25e445d06bc424532a922fdf94.tar.xz
cmd/internal/obj/loong64: add support for instructions F{MAX/NIN}.{S/D}
Go asm syntax: F{MAX/MIN}{F/D} FK, FJ, FD Equivalent platform assembler syntax: f{max/min}.{s/d} fd, fj, fk Ref: https://loongson.github.io/LoongArch-Documentation/LoongArch-Vol1-EN.html Change-Id: Ib11fed1fe3700be5ebba33b5818661c4071b7b7c Reviewed-on: https://go-review.googlesource.com/c/go/+/590676 Reviewed-by: abner chenc <chenguoqi@loongson.cn> Reviewed-by: Cherry Mui <cherryyz@google.com> Reviewed-by: Michael Knyszek <mknyszek@google.com> LUCI-TryBot-Result: Go LUCI <golang-scoped@luci-project-accounts.iam.gserviceaccount.com> Auto-Submit: abner chenc <chenguoqi@loongson.cn>
Diffstat (limited to 'src/cmd/internal')
-rw-r--r--src/cmd/internal/obj/loong64/a.out.go6
-rw-r--r--src/cmd/internal/obj/loong64/anames.go4
-rw-r--r--src/cmd/internal/obj/loong64/asm.go12
3 files changed, 22 insertions, 0 deletions
diff --git a/src/cmd/internal/obj/loong64/a.out.go b/src/cmd/internal/obj/loong64/a.out.go
index cf5c74fde2..9309a3b09a 100644
--- a/src/cmd/internal/obj/loong64/a.out.go
+++ b/src/cmd/internal/obj/loong64/a.out.go
@@ -440,6 +440,12 @@ const (
ARDTIMED
ACPUCFG
+ // 3.2.1.3
+ AFMINF
+ AFMIND
+ AFMAXF
+ AFMAXD
+
ALAST
// aliases
diff --git a/src/cmd/internal/obj/loong64/anames.go b/src/cmd/internal/obj/loong64/anames.go
index 9bfc57e239..42d9ea4d18 100644
--- a/src/cmd/internal/obj/loong64/anames.go
+++ b/src/cmd/internal/obj/loong64/anames.go
@@ -179,5 +179,9 @@ var Anames = []string{
"RDTIMEHW",
"RDTIMED",
"CPUCFG",
+ "FMINF",
+ "FMIND",
+ "FMAXF",
+ "FMAXD",
"LAST",
}
diff --git a/src/cmd/internal/obj/loong64/asm.go b/src/cmd/internal/obj/loong64/asm.go
index 8c9ff2096e..c0f9dee380 100644
--- a/src/cmd/internal/obj/loong64/asm.go
+++ b/src/cmd/internal/obj/loong64/asm.go
@@ -1052,6 +1052,10 @@ func buildop(ctxt *obj.Link) {
opset(ASUBF, r0)
opset(ASUBD, r0)
opset(AADDD, r0)
+ opset(AFMINF, r0)
+ opset(AFMIND, r0)
+ opset(AFMAXF, r0)
+ opset(AFMAXD, r0)
case AAND:
opset(AOR, r0)
@@ -1872,6 +1876,14 @@ func (c *ctxt0) oprrr(a obj.As) uint32 {
return 0x0c2<<20 | 0x3<<15 // FCMP.SLT.D
case ACMPGTF:
return 0x0c1<<20 | 0x3<<15 // FCMP.SLT.S
+ case AFMINF:
+ return 0x215 << 15 // fmin.s
+ case AFMIND:
+ return 0x216 << 15 // fmin.d
+ case AFMAXF:
+ return 0x211 << 15 // fmax.s
+ case AFMAXD:
+ return 0x212 << 15 // fmax.d
}
if a < 0 {