aboutsummaryrefslogtreecommitdiff
path: root/src/cmd/internal/obj
diff options
context:
space:
mode:
authorXiaolin Zhao <zhaoxiaolin@loongson.cn>2025-05-06 11:14:31 +0800
committerabner chenc <chenguoqi@loongson.cn>2025-05-11 19:39:22 -0700
commitf49ca5f525334e98a8f0f1bd2b2f121bc003573e (patch)
treefbb104ce3a2266cd3afecf1709d2b2588a54e499 /src/cmd/internal/obj
parente282cbb11256db717b95f9d8cf8c050cd4c4f7c2 (diff)
downloadgo-f49ca5f525334e98a8f0f1bd2b2f121bc003573e.tar.xz
cmd/internal/obj/loong64: add [X]VFCLASS.{S/D} instructions
Go asm syntax: VFCLASS{F/D} VJ, VD XVFCLASS{F/D} XJ, XD Equivalent platform assembler syntax: vfclass.{s/d} vd, vj xvfclass.{s/d} xd, xj Change-Id: Iec373f393be315696d1fefc747a4a5882f993195 Reviewed-on: https://go-review.googlesource.com/c/go/+/670256 Reviewed-by: Cherry Mui <cherryyz@google.com> Reviewed-by: Dustin Turner <dustin.turner44@gmail.com> LUCI-TryBot-Result: Go LUCI <golang-scoped@luci-project-accounts.iam.gserviceaccount.com> Reviewed-by: Carlos Amedee <carlos@golang.org> Reviewed-by: abner chenc <chenguoqi@loongson.cn>
Diffstat (limited to 'src/cmd/internal/obj')
-rw-r--r--src/cmd/internal/obj/loong64/a.out.go5
-rw-r--r--src/cmd/internal/obj/loong64/anames.go4
-rw-r--r--src/cmd/internal/obj/loong64/asm.go12
3 files changed, 21 insertions, 0 deletions
diff --git a/src/cmd/internal/obj/loong64/a.out.go b/src/cmd/internal/obj/loong64/a.out.go
index c88c556bfe..97a4d6c179 100644
--- a/src/cmd/internal/obj/loong64/a.out.go
+++ b/src/cmd/internal/obj/loong64/a.out.go
@@ -967,6 +967,11 @@ const (
AXVDIVF
AXVDIVD
+ AVFCLASSF
+ AVFCLASSD
+ AXVFCLASSF
+ AXVFCLASSD
+
// LSX and LASX floating point conversion instructions
AVFRINTRNEF
AVFRINTRNED
diff --git a/src/cmd/internal/obj/loong64/anames.go b/src/cmd/internal/obj/loong64/anames.go
index 533e5f4154..0c1a6ea0c6 100644
--- a/src/cmd/internal/obj/loong64/anames.go
+++ b/src/cmd/internal/obj/loong64/anames.go
@@ -465,6 +465,10 @@ var Anames = []string{
"XVMULD",
"XVDIVF",
"XVDIVD",
+ "VFCLASSF",
+ "VFCLASSD",
+ "XVFCLASSF",
+ "XVFCLASSD",
"VFRINTRNEF",
"VFRINTRNED",
"VFRINTRZF",
diff --git a/src/cmd/internal/obj/loong64/asm.go b/src/cmd/internal/obj/loong64/asm.go
index dc9fafc0e2..6723c67b3f 100644
--- a/src/cmd/internal/obj/loong64/asm.go
+++ b/src/cmd/internal/obj/loong64/asm.go
@@ -1748,6 +1748,8 @@ func buildop(ctxt *obj.Link) {
opset(AVFRINTRMD, r0)
opset(AVFRINTF, r0)
opset(AVFRINTD, r0)
+ opset(AVFCLASSF, r0)
+ opset(AVFCLASSD, r0)
case AXVPCNTB:
opset(AXVPCNTH, r0)
@@ -1773,6 +1775,8 @@ func buildop(ctxt *obj.Link) {
opset(AXVFRINTRMD, r0)
opset(AXVFRINTF, r0)
opset(AXVFRINTD, r0)
+ opset(AXVFCLASSF, r0)
+ opset(AXVFCLASSD, r0)
case AVADDB:
opset(AVADDH, r0)
@@ -3691,6 +3695,14 @@ func (c *ctxt0) oprr(a obj.As) uint32 {
return 0x1da74d << 10 // xvfrint.s
case AXVFRINTD:
return 0x1da74e << 10 // xvfrint.d
+ case AVFCLASSF:
+ return 0x1ca735 << 10 // vfclass.s
+ case AVFCLASSD:
+ return 0x1ca736 << 10 // vfclass.d
+ case AXVFCLASSF:
+ return 0x1da735 << 10 // xvfclass.s
+ case AXVFCLASSD:
+ return 0x1da736 << 10 // xvfclass.d
case AVSETEQV:
return 0x1ca726<<10 | 0x0<<3 // vseteqz.v
case AVSETNEV: