mirror of
https://github.com/golang/go.git
synced 2025-12-08 06:10:04 +00:00
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>
This commit is contained in:
parent
9abd11440c
commit
e761921688
4 changed files with 31 additions and 0 deletions
|
|
@ -269,3 +269,12 @@ lable2:
|
|||
AMMAXDBVU R14, (R13), R12 // acb97038
|
||||
AMMINDBWU R14, (R13), R12 // ac397138
|
||||
AMMINDBVU R14, (R13), R12 // acb97138
|
||||
|
||||
FMINF F4, F5, F6 // a6900a01
|
||||
FMINF F4, F5 // a5900a01
|
||||
FMIND F4, F5, F6 // a6100b01
|
||||
FMIND F4, F5 // a5100b01
|
||||
FMAXF F4, F5, F6 // a6900801
|
||||
FMAXF F4, F5 // a5900801
|
||||
FMAXD F4, F5, F6 // a6100901
|
||||
FMAXD F4, F5 // a5100901
|
||||
|
|
|
|||
|
|
@ -440,6 +440,12 @@ const (
|
|||
ARDTIMED
|
||||
ACPUCFG
|
||||
|
||||
// 3.2.1.3
|
||||
AFMINF
|
||||
AFMIND
|
||||
AFMAXF
|
||||
AFMAXD
|
||||
|
||||
ALAST
|
||||
|
||||
// aliases
|
||||
|
|
|
|||
|
|
@ -179,5 +179,9 @@ var Anames = []string{
|
|||
"RDTIMEHW",
|
||||
"RDTIMED",
|
||||
"CPUCFG",
|
||||
"FMINF",
|
||||
"FMIND",
|
||||
"FMAXF",
|
||||
"FMAXD",
|
||||
"LAST",
|
||||
}
|
||||
|
|
|
|||
|
|
@ -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 {
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue