mirror of
https://github.com/golang/go.git
synced 2025-12-08 06:10:04 +00:00
cmd/internal/obj/loong64: add [X]VMULW{EV/OD} series instructions support
Go asm syntax:
VMULW{EV/OD}{HB/WH/VW/QV}[U] VK, VJ, VD
XVMULW{EV/OD}{HB/WH/VW/QV}[U] XK, XJ, XD
VMULW{EV/OD}{HBUB/WHUH/VWUW/QVUV} VK, VJ, VD
XVMULW{EV/OD}{HBUB/WHUH/VWUW/QVUV} XK, XJ, XD
Equivalent platform assembler syntax:
vmulw{ev/od}.{h.b/w.h/d.w/q.d}[u] vd, vj, vk
xvmulw{ev/od}.{h.b/w.h/d.w/q.d}[u] xd, xj, xk
vmulw{ev/od}.{h.bu.b/w.hu.h/d.wu.w/q.du.d} vd, vj, vk
xvmulw{ev/od}.{h.bu.b/w.hu.h/d.wu.w/q.du.d} xd, xj, xk
Change-Id: Ib1b5fb9605417a2b81841deae40e0e2beb90d03c
Reviewed-on: https://go-review.googlesource.com/c/go/+/658375
LUCI-TryBot-Result: Go LUCI <golang-scoped@luci-project-accounts.iam.gserviceaccount.com>
Reviewed-by: abner chenc <chenguoqi@loongson.cn>
Reviewed-by: Cherry Mui <cherryyz@google.com>
Reviewed-by: David Chase <drchase@google.com>
This commit is contained in:
parent
4f5863c2ce
commit
ac8474c0a2
4 changed files with 294 additions and 0 deletions
|
|
@ -1583,6 +1583,30 @@ func buildop(ctxt *obj.Link) {
|
|||
opset(AVMODHU, r0)
|
||||
opset(AVMODWU, r0)
|
||||
opset(AVMODVU, r0)
|
||||
opset(AVMULWEVHB, r0)
|
||||
opset(AVMULWEVWH, r0)
|
||||
opset(AVMULWEVVW, r0)
|
||||
opset(AVMULWEVQV, r0)
|
||||
opset(AVMULWODHB, r0)
|
||||
opset(AVMULWODWH, r0)
|
||||
opset(AVMULWODVW, r0)
|
||||
opset(AVMULWODQV, r0)
|
||||
opset(AVMULWEVHBU, r0)
|
||||
opset(AVMULWEVWHU, r0)
|
||||
opset(AVMULWEVVWU, r0)
|
||||
opset(AVMULWEVQVU, r0)
|
||||
opset(AVMULWODHBU, r0)
|
||||
opset(AVMULWODWHU, r0)
|
||||
opset(AVMULWODVWU, r0)
|
||||
opset(AVMULWODQVU, r0)
|
||||
opset(AVMULWEVHBUB, r0)
|
||||
opset(AVMULWEVWHUH, r0)
|
||||
opset(AVMULWEVVWUW, r0)
|
||||
opset(AVMULWEVQVUV, r0)
|
||||
opset(AVMULWODHBUB, r0)
|
||||
opset(AVMULWODWHUH, r0)
|
||||
opset(AVMULWODVWUW, r0)
|
||||
opset(AVMULWODQVUV, r0)
|
||||
|
||||
case AXVSEQB:
|
||||
opset(AXVSEQH, r0)
|
||||
|
|
@ -1624,6 +1648,30 @@ func buildop(ctxt *obj.Link) {
|
|||
opset(AXVMODHU, r0)
|
||||
opset(AXVMODWU, r0)
|
||||
opset(AXVMODVU, r0)
|
||||
opset(AXVMULWEVHB, r0)
|
||||
opset(AXVMULWEVWH, r0)
|
||||
opset(AXVMULWEVVW, r0)
|
||||
opset(AXVMULWEVQV, r0)
|
||||
opset(AXVMULWODHB, r0)
|
||||
opset(AXVMULWODWH, r0)
|
||||
opset(AXVMULWODVW, r0)
|
||||
opset(AXVMULWODQV, r0)
|
||||
opset(AXVMULWEVHBU, r0)
|
||||
opset(AXVMULWEVWHU, r0)
|
||||
opset(AXVMULWEVVWU, r0)
|
||||
opset(AXVMULWEVQVU, r0)
|
||||
opset(AXVMULWODHBU, r0)
|
||||
opset(AXVMULWODWHU, r0)
|
||||
opset(AXVMULWODVWU, r0)
|
||||
opset(AXVMULWODQVU, r0)
|
||||
opset(AXVMULWEVHBUB, r0)
|
||||
opset(AXVMULWEVWHUH, r0)
|
||||
opset(AXVMULWEVVWUW, r0)
|
||||
opset(AXVMULWEVQVUV, r0)
|
||||
opset(AXVMULWODHBUB, r0)
|
||||
opset(AXVMULWODWHUH, r0)
|
||||
opset(AXVMULWODVWUW, r0)
|
||||
opset(AXVMULWODQVUV, r0)
|
||||
|
||||
case AVANDB:
|
||||
opset(AVORB, r0)
|
||||
|
|
@ -2990,6 +3038,102 @@ func (c *ctxt0) oprrr(a obj.As) uint32 {
|
|||
return 0xe9ce << 15 // xvmod.wu
|
||||
case AXVMODVU:
|
||||
return 0xe9cf << 15 // xvmod.du
|
||||
case AVMULWEVHB:
|
||||
return 0xe120 << 15 // vmulwev.h.b
|
||||
case AVMULWEVWH:
|
||||
return 0xe121 << 15 // vmulwev.w.h
|
||||
case AVMULWEVVW:
|
||||
return 0xe122 << 15 // vmulwev.d.w
|
||||
case AVMULWEVQV:
|
||||
return 0xe123 << 15 // vmulwev.q.d
|
||||
case AVMULWODHB:
|
||||
return 0xe124 << 15 // vmulwod.h.b
|
||||
case AVMULWODWH:
|
||||
return 0xe125 << 15 // vmulwod.w.h
|
||||
case AVMULWODVW:
|
||||
return 0xe126 << 15 // vmulwod.d.w
|
||||
case AVMULWODQV:
|
||||
return 0xe127 << 15 // vmulwod.q.d
|
||||
case AVMULWEVHBU:
|
||||
return 0xe130 << 15 // vmulwev.h.bu
|
||||
case AVMULWEVWHU:
|
||||
return 0xe131 << 15 // vmulwev.w.hu
|
||||
case AVMULWEVVWU:
|
||||
return 0xe132 << 15 // vmulwev.d.wu
|
||||
case AVMULWEVQVU:
|
||||
return 0xe133 << 15 // vmulwev.q.du
|
||||
case AVMULWODHBU:
|
||||
return 0xe134 << 15 // vmulwod.h.bu
|
||||
case AVMULWODWHU:
|
||||
return 0xe135 << 15 // vmulwod.w.hu
|
||||
case AVMULWODVWU:
|
||||
return 0xe136 << 15 // vmulwod.d.wu
|
||||
case AVMULWODQVU:
|
||||
return 0xe137 << 15 // vmulwod.q.du
|
||||
case AVMULWEVHBUB:
|
||||
return 0xe140 << 15 // vmulwev.h.bu.b
|
||||
case AVMULWEVWHUH:
|
||||
return 0xe141 << 15 // vmulwev.w.hu.h
|
||||
case AVMULWEVVWUW:
|
||||
return 0xe142 << 15 // vmulwev.d.wu.w
|
||||
case AVMULWEVQVUV:
|
||||
return 0xe143 << 15 // vmulwev.q.du.d
|
||||
case AVMULWODHBUB:
|
||||
return 0xe144 << 15 // vmulwod.h.bu.b
|
||||
case AVMULWODWHUH:
|
||||
return 0xe145 << 15 // vmulwod.w.hu.h
|
||||
case AVMULWODVWUW:
|
||||
return 0xe146 << 15 // vmulwod.d.wu.w
|
||||
case AVMULWODQVUV:
|
||||
return 0xe147 << 15 // vmulwod.q.du.d
|
||||
case AXVMULWEVHB:
|
||||
return 0xe920 << 15 // xvmulwev.h.b
|
||||
case AXVMULWEVWH:
|
||||
return 0xe921 << 15 // xvmulwev.w.h
|
||||
case AXVMULWEVVW:
|
||||
return 0xe922 << 15 // xvmulwev.d.w
|
||||
case AXVMULWEVQV:
|
||||
return 0xe923 << 15 // xvmulwev.q.d
|
||||
case AXVMULWODHB:
|
||||
return 0xe924 << 15 // xvmulwod.h.b
|
||||
case AXVMULWODWH:
|
||||
return 0xe925 << 15 // xvmulwod.w.h
|
||||
case AXVMULWODVW:
|
||||
return 0xe926 << 15 // xvmulwod.d.w
|
||||
case AXVMULWODQV:
|
||||
return 0xe927 << 15 // xvmulwod.q.d
|
||||
case AXVMULWEVHBU:
|
||||
return 0xe930 << 15 // xvmulwev.h.bu
|
||||
case AXVMULWEVWHU:
|
||||
return 0xe931 << 15 // xvmulwev.w.hu
|
||||
case AXVMULWEVVWU:
|
||||
return 0xe932 << 15 // xvmulwev.d.wu
|
||||
case AXVMULWEVQVU:
|
||||
return 0xe933 << 15 // xvmulwev.q.du
|
||||
case AXVMULWODHBU:
|
||||
return 0xe934 << 15 // xvmulwod.h.bu
|
||||
case AXVMULWODWHU:
|
||||
return 0xe935 << 15 // xvmulwod.w.hu
|
||||
case AXVMULWODVWU:
|
||||
return 0xe936 << 15 // xvmulwod.d.wu
|
||||
case AXVMULWODQVU:
|
||||
return 0xe937 << 15 // xvmulwod.q.du
|
||||
case AXVMULWEVHBUB:
|
||||
return 0xe940 << 15 // xvmulwev.h.bu.b
|
||||
case AXVMULWEVWHUH:
|
||||
return 0xe941 << 15 // xvmulwev.w.hu.h
|
||||
case AXVMULWEVVWUW:
|
||||
return 0xe942 << 15 // xvmulwev.d.wu.w
|
||||
case AXVMULWEVQVUV:
|
||||
return 0xe943 << 15 // xvmulwev.q.du.d
|
||||
case AXVMULWODHBUB:
|
||||
return 0xe944 << 15 // xvmulwod.h.bu.b
|
||||
case AXVMULWODWHUH:
|
||||
return 0xe945 << 15 // xvmulwod.w.hu.h
|
||||
case AXVMULWODVWUW:
|
||||
return 0xe946 << 15 // xvmulwod.d.wu.w
|
||||
case AXVMULWODQVUV:
|
||||
return 0xe947 << 15 // xvmulwod.q.du.d
|
||||
case AVSLLB:
|
||||
return 0xe1d0 << 15 // vsll.b
|
||||
case AVSLLH:
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue