mirror of
https://github.com/golang/go.git
synced 2025-12-08 06:10:04 +00:00
cmd/asm: add support for loong64 CRC32 instructions
This patch is a copy of CL 478595. Co-authored-by: WANG Xuerui <git@xen0n.name> Change-Id: Ifb6e8183c83a5dfe5dec84e173a74d5de62692a0 Reviewed-on: https://go-review.googlesource.com/c/go/+/623875 Reviewed-by: Carlos Amedee <carlos@golang.org> Reviewed-by: abner chenc <chenguoqi@loongson.cn> Reviewed-by: Michael Pratt <mpratt@google.com> LUCI-TryBot-Result: Go LUCI <golang-scoped@luci-project-accounts.iam.gserviceaccount.com>
This commit is contained in:
parent
3f694f73d0
commit
7240c6cb97
4 changed files with 52 additions and 1 deletions
10
src/cmd/asm/internal/asm/testdata/loong64enc1.s
vendored
10
src/cmd/asm/internal/asm/testdata/loong64enc1.s
vendored
|
|
@ -208,6 +208,16 @@ lable2:
|
||||||
MASKEQZ R4, R5, R6 // a6101300
|
MASKEQZ R4, R5, R6 // a6101300
|
||||||
MASKNEZ R4, R5, R6 // a6901300
|
MASKNEZ R4, R5, R6 // a6901300
|
||||||
|
|
||||||
|
// CRC32
|
||||||
|
CRCWBW R4, R5, R6 // a6102400
|
||||||
|
CRCWHW R4, R5, R6 // a6902400
|
||||||
|
CRCWWW R4, R5, R6 // a6102500
|
||||||
|
CRCWVW R4, R5, R6 // a6902500
|
||||||
|
CRCCWBW R4, R5, R6 // a6102600
|
||||||
|
CRCCWHW R4, R5, R6 // a6902600
|
||||||
|
CRCCWWW R4, R5, R6 // a6102700
|
||||||
|
CRCCWVW R4, R5, R6 // a6902700
|
||||||
|
|
||||||
MOVFD F4, F5 // 85241901
|
MOVFD F4, F5 // 85241901
|
||||||
MOVDF F4, F5 // 85181901
|
MOVDF F4, F5 // 85181901
|
||||||
MOVWF F4, F5 // 85101d01
|
MOVWF F4, F5 // 85101d01
|
||||||
|
|
|
||||||
|
|
@ -477,6 +477,16 @@ const (
|
||||||
ABSTRPICKW
|
ABSTRPICKW
|
||||||
ABSTRPICKV
|
ABSTRPICKV
|
||||||
|
|
||||||
|
// 2.2.9. CRC Check Instructions
|
||||||
|
ACRCWBW
|
||||||
|
ACRCWHW
|
||||||
|
ACRCWWW
|
||||||
|
ACRCWVW
|
||||||
|
ACRCCWBW
|
||||||
|
ACRCCWHW
|
||||||
|
ACRCCWWW
|
||||||
|
ACRCCWVW
|
||||||
|
|
||||||
// 2.2.10. Other Miscellaneous Instructions
|
// 2.2.10. Other Miscellaneous Instructions
|
||||||
ARDTIMELW
|
ARDTIMELW
|
||||||
ARDTIMEHW
|
ARDTIMEHW
|
||||||
|
|
|
||||||
|
|
@ -199,6 +199,14 @@ var Anames = []string{
|
||||||
"BSTRINSV",
|
"BSTRINSV",
|
||||||
"BSTRPICKW",
|
"BSTRPICKW",
|
||||||
"BSTRPICKV",
|
"BSTRPICKV",
|
||||||
|
"CRCWBW",
|
||||||
|
"CRCWHW",
|
||||||
|
"CRCWWW",
|
||||||
|
"CRCWVW",
|
||||||
|
"CRCCWBW",
|
||||||
|
"CRCCWHW",
|
||||||
|
"CRCCWWW",
|
||||||
|
"CRCCWVW",
|
||||||
"RDTIMELW",
|
"RDTIMELW",
|
||||||
"RDTIMEHW",
|
"RDTIMEHW",
|
||||||
"RDTIMED",
|
"RDTIMED",
|
||||||
|
|
|
||||||
|
|
@ -1234,6 +1234,14 @@ func buildop(ctxt *obj.Link) {
|
||||||
|
|
||||||
case AMASKEQZ:
|
case AMASKEQZ:
|
||||||
opset(AMASKNEZ, r0)
|
opset(AMASKNEZ, r0)
|
||||||
|
opset(ACRCWBW, r0)
|
||||||
|
opset(ACRCWHW, r0)
|
||||||
|
opset(ACRCWWW, r0)
|
||||||
|
opset(ACRCWVW, r0)
|
||||||
|
opset(ACRCCWBW, r0)
|
||||||
|
opset(ACRCCWHW, r0)
|
||||||
|
opset(ACRCCWWW, r0)
|
||||||
|
opset(ACRCCWVW, r0)
|
||||||
|
|
||||||
case ANOOP:
|
case ANOOP:
|
||||||
opset(obj.AUNDEF, r0)
|
opset(obj.AUNDEF, r0)
|
||||||
|
|
@ -1949,7 +1957,22 @@ func (c *ctxt0) oprrr(a obj.As) uint32 {
|
||||||
return 0x45 << 15 // mod.d
|
return 0x45 << 15 // mod.d
|
||||||
case AREMVU:
|
case AREMVU:
|
||||||
return 0x47 << 15 // mod.du
|
return 0x47 << 15 // mod.du
|
||||||
|
case ACRCWBW:
|
||||||
|
return 0x48 << 15 // crc.w.b.w
|
||||||
|
case ACRCWHW:
|
||||||
|
return 0x49 << 15 // crc.w.h.w
|
||||||
|
case ACRCWWW:
|
||||||
|
return 0x4a << 15 // crc.w.w.w
|
||||||
|
case ACRCWVW:
|
||||||
|
return 0x4b << 15 // crc.w.d.w
|
||||||
|
case ACRCCWBW:
|
||||||
|
return 0x4c << 15 // crcc.w.b.w
|
||||||
|
case ACRCCWHW:
|
||||||
|
return 0x4d << 15 // crcc.w.h.w
|
||||||
|
case ACRCCWWW:
|
||||||
|
return 0x4e << 15 // crcc.w.w.w
|
||||||
|
case ACRCCWVW:
|
||||||
|
return 0x4f << 15 // crcc.w.d.w
|
||||||
case AJMP:
|
case AJMP:
|
||||||
return 0x13 << 26 // jirl r0, rj, 0
|
return 0x13 << 26 // jirl r0, rj, 0
|
||||||
case AJAL:
|
case AJAL:
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue