diff options
| author | Xiaolin Zhao <zhaoxiaolin@loongson.cn> | 2025-05-06 11:14:31 +0800 |
|---|---|---|
| committer | abner chenc <chenguoqi@loongson.cn> | 2025-05-11 19:39:22 -0700 |
| commit | f49ca5f525334e98a8f0f1bd2b2f121bc003573e (patch) | |
| tree | fbb104ce3a2266cd3afecf1709d2b2588a54e499 /src/cmd/internal | |
| parent | e282cbb11256db717b95f9d8cf8c050cd4c4f7c2 (diff) | |
| download | go-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')
| -rw-r--r-- | src/cmd/internal/obj/loong64/a.out.go | 5 | ||||
| -rw-r--r-- | src/cmd/internal/obj/loong64/anames.go | 4 | ||||
| -rw-r--r-- | src/cmd/internal/obj/loong64/asm.go | 12 |
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: |
