diff options
| author | Xiaolin Zhao <zhaoxiaolin@loongson.cn> | 2024-09-13 15:32:03 +0800 |
|---|---|---|
| committer | Gopher Robot <gobot@golang.org> | 2024-09-13 17:05:38 +0000 |
| commit | b895dd56308304bedcea17852c01dc0cd794bfb8 (patch) | |
| tree | ae7ec3e40c9caa75cd22dda98d5289b703549e8b /src/cmd/internal/obj | |
| parent | 76650b60eb05e8b8215f2b1bb667b4a797ccdacc (diff) | |
| download | go-b895dd56308304bedcea17852c01dc0cd794bfb8.tar.xz | |
cmd/internal/obj/loong64: add support for instructions FSCALEB{F/D} and FLOGB{F/D}
Go asm syntax:
FSCALEB{F/D} FK, FJ, FD
FLOGB{F/D} FJ, FD
Equivalent platform assembler syntax:
fscaleb.{s/d} fd, fj, fk
flogb.{s/d} fd, fj
Ref: https://loongson.github.io/LoongArch-Documentation/LoongArch-Vol1-EN.html
Change-Id: I6cd75c7605adbb572dae86d6470ec7cf20ce0f6c
Reviewed-on: https://go-review.googlesource.com/c/go/+/612975
Auto-Submit: abner chenc <chenguoqi@loongson.cn>
Reviewed-by: Cherry Mui <cherryyz@google.com>
Reviewed-by: Tim King <taking@google.com>
Reviewed-by: Meidan Li <limeidan@loongson.cn>
Reviewed-by: abner chenc <chenguoqi@loongson.cn>
LUCI-TryBot-Result: Go LUCI <golang-scoped@luci-project-accounts.iam.gserviceaccount.com>
Diffstat (limited to 'src/cmd/internal/obj')
| -rw-r--r-- | src/cmd/internal/obj/loong64/a.out.go | 4 | ||||
| -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, 20 insertions, 0 deletions
diff --git a/src/cmd/internal/obj/loong64/a.out.go b/src/cmd/internal/obj/loong64/a.out.go index 60b0a62180..a2a809cbc0 100644 --- a/src/cmd/internal/obj/loong64/a.out.go +++ b/src/cmd/internal/obj/loong64/a.out.go @@ -462,6 +462,10 @@ const ( // 3.2.1.7 AFCOPYSGF AFCOPYSGD + AFSCALEBF + AFSCALEBD + AFLOGBF + AFLOGBD // 3.2.1.8 AFCLASSF diff --git a/src/cmd/internal/obj/loong64/anames.go b/src/cmd/internal/obj/loong64/anames.go index ddf13eec6e..2dc6319c4b 100644 --- a/src/cmd/internal/obj/loong64/anames.go +++ b/src/cmd/internal/obj/loong64/anames.go @@ -191,6 +191,10 @@ var Anames = []string{ "FMAXD", "FCOPYSGF", "FCOPYSGD", + "FSCALEBF", + "FSCALEBD", + "FLOGBF", + "FLOGBD", "FCLASSF", "FCLASSD", "FFINTFW", diff --git a/src/cmd/internal/obj/loong64/asm.go b/src/cmd/internal/obj/loong64/asm.go index 4e5bc15d33..926b9952a2 100644 --- a/src/cmd/internal/obj/loong64/asm.go +++ b/src/cmd/internal/obj/loong64/asm.go @@ -1042,6 +1042,8 @@ func buildop(ctxt *obj.Link) { opset(ASQRTD, r0) opset(AFCLASSF, r0) opset(AFCLASSD, r0) + opset(AFLOGBF, r0) + opset(AFLOGBD, r0) case AMOVVF: opset(AMOVVD, r0) @@ -1096,6 +1098,8 @@ func buildop(ctxt *obj.Link) { opset(AFMAXD, r0) opset(AFCOPYSGF, r0) opset(AFCOPYSGD, r0) + opset(AFSCALEBF, r0) + opset(AFSCALEBD, r0) case AAND: opset(AOR, r0) @@ -1969,6 +1973,10 @@ func (c *ctxt0) oprrr(a obj.As) uint32 { return 0x211 << 15 // fmax.s case AFMAXD: return 0x212 << 15 // fmax.d + case AFSCALEBF: + return 0x221 << 15 // fscaleb.s + case AFSCALEBD: + return 0x222 << 15 // fscaleb.d case AFCOPYSGF: return 0x225 << 15 // fcopysign.s case AFCOPYSGD: @@ -2071,6 +2079,10 @@ func (c *ctxt0) oprr(a obj.As) uint32 { return 0x4511 << 10 case ASQRTD: return 0x4512 << 10 + case AFLOGBF: + return 0x4509 << 10 // flogb.s + case AFLOGBD: + return 0x450a << 10 // flogb.d case AFCLASSF: return 0x450d << 10 // fclass.s case AFCLASSD: |
