Skip to content

Commit d13da63

Browse files
sophie-zhaoabner-chenc
authored andcommitted
cmd/internal/obj/loong64: add [X]VFRINT[{RNE/RZ/RP/RM}].{S/D} instructions
Go asm syntax: VFRINT[{RNE/RZ/RP/RM}]{F/D} VJ, VD XVFRINT[{RNE/RZ/RP/RM}]{F/D} XJ, XD Equivalent platform assembler syntax: vfrint[{rne/rz/rp/rm}].{s/d} vd, vj xvfrint[{rne/rz/rp/rm}].{s/d} xd, xj Change-Id: I4ed8782289ae3329d675239f799d5f75b1adc4ad Reviewed-on: https://go-review.googlesource.com/c/go/+/670235 Reviewed-by: abner chenc <chenguoqi@loongson.cn> Reviewed-by: Cherry Mui <cherryyz@google.com> LUCI-TryBot-Result: Go LUCI <golang-scoped@luci-project-accounts.iam.gserviceaccount.com> Reviewed-by: Carlos Amedee <carlos@golang.org>
1 parent ec7d955 commit d13da63

File tree

4 files changed

+124
-0
lines changed

4 files changed

+124
-0
lines changed

src/cmd/asm/internal/asm/testdata/loong64enc1.s

Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -964,3 +964,25 @@ lable2:
964964
XVSETALLNEH X1, FCC0 // 20b49c76
965965
XVSETALLNEW X1, FCC0 // 20b89c76
966966
XVSETALLNEV X1, FCC0 // 20bc9c76
967+
968+
// [X]VFRINT[{RNE/RZ/RP/RM}].{S/D} instructions
969+
VFRINTRNEF V1, V2 // 22749d72
970+
VFRINTRNED V1, V2 // 22789d72
971+
VFRINTRZF V1, V2 // 22649d72
972+
VFRINTRZD V1, V2 // 22689d72
973+
VFRINTRPF V1, V2 // 22549d72
974+
VFRINTRPD V1, V2 // 22589d72
975+
VFRINTRMF V1, V2 // 22449d72
976+
VFRINTRMD V1, V2 // 22489d72
977+
VFRINTF V1, V2 // 22349d72
978+
VFRINTD V1, V2 // 22389d72
979+
XVFRINTRNEF X1, X2 // 22749d76
980+
XVFRINTRNED X1, X2 // 22789d76
981+
XVFRINTRZF X1, X2 // 22649d76
982+
XVFRINTRZD X1, X2 // 22689d76
983+
XVFRINTRPF X1, X2 // 22549d76
984+
XVFRINTRPD X1, X2 // 22589d76
985+
XVFRINTRMF X1, X2 // 22449d76
986+
XVFRINTRMD X1, X2 // 22489d76
987+
XVFRINTF X1, X2 // 22349d76
988+
XVFRINTD X1, X2 // 22389d76

src/cmd/internal/obj/loong64/a.out.go

Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -950,6 +950,28 @@ const (
950950
AXVFRSQRTF
951951
AXVFRSQRTD
952952

953+
// LSX and LASX floating point conversion instructions
954+
AVFRINTRNEF
955+
AVFRINTRNED
956+
AVFRINTRZF
957+
AVFRINTRZD
958+
AVFRINTRPF
959+
AVFRINTRPD
960+
AVFRINTRMF
961+
AVFRINTRMD
962+
AVFRINTF
963+
AVFRINTD
964+
AXVFRINTRNEF
965+
AXVFRINTRNED
966+
AXVFRINTRZF
967+
AXVFRINTRZD
968+
AXVFRINTRPF
969+
AXVFRINTRPD
970+
AXVFRINTRMF
971+
AXVFRINTRMD
972+
AXVFRINTF
973+
AXVFRINTD
974+
953975
// LSX and LASX integer neg instructions
954976
AVNEGB
955977
AVNEGH

src/cmd/internal/obj/loong64/anames.go

Lines changed: 20 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

src/cmd/internal/obj/loong64/asm.go

Lines changed: 60 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1722,6 +1722,16 @@ func buildop(ctxt *obj.Link) {
17221722
opset(AVNEGH, r0)
17231723
opset(AVNEGW, r0)
17241724
opset(AVNEGV, r0)
1725+
opset(AVFRINTRNEF, r0)
1726+
opset(AVFRINTRNED, r0)
1727+
opset(AVFRINTRZF, r0)
1728+
opset(AVFRINTRZD, r0)
1729+
opset(AVFRINTRPF, r0)
1730+
opset(AVFRINTRPD, r0)
1731+
opset(AVFRINTRMF, r0)
1732+
opset(AVFRINTRMD, r0)
1733+
opset(AVFRINTF, r0)
1734+
opset(AVFRINTD, r0)
17251735

17261736
case AXVPCNTB:
17271737
opset(AXVPCNTH, r0)
@@ -1737,6 +1747,16 @@ func buildop(ctxt *obj.Link) {
17371747
opset(AXVNEGH, r0)
17381748
opset(AXVNEGW, r0)
17391749
opset(AXVNEGV, r0)
1750+
opset(AXVFRINTRNEF, r0)
1751+
opset(AXVFRINTRNED, r0)
1752+
opset(AXVFRINTRZF, r0)
1753+
opset(AXVFRINTRZD, r0)
1754+
opset(AXVFRINTRPF, r0)
1755+
opset(AXVFRINTRPD, r0)
1756+
opset(AXVFRINTRMF, r0)
1757+
opset(AXVFRINTRMD, r0)
1758+
opset(AXVFRINTF, r0)
1759+
opset(AXVFRINTD, r0)
17401760

17411761
case AVADDB:
17421762
opset(AVADDH, r0)
@@ -3583,6 +3603,46 @@ func (c *ctxt0) oprr(a obj.As) uint32 {
35833603
return 0x1da70e << 10 // xvneg.w
35843604
case AXVNEGV:
35853605
return 0x1da70f << 10 // xvneg.d
3606+
case AVFRINTRNEF:
3607+
return 0x1ca75d << 10 // vfrintrne.s
3608+
case AVFRINTRNED:
3609+
return 0x1ca75e << 10 // vfrintrne.d
3610+
case AVFRINTRZF:
3611+
return 0x1ca759 << 10 // vfrintrz.s
3612+
case AVFRINTRZD:
3613+
return 0x1ca75a << 10 // vfrintrz.d
3614+
case AVFRINTRPF:
3615+
return 0x1ca755 << 10 // vfrintrp.s
3616+
case AVFRINTRPD:
3617+
return 0x1ca756 << 10 // vfrintrp.d
3618+
case AVFRINTRMF:
3619+
return 0x1ca751 << 10 // vfrintrm.s
3620+
case AVFRINTRMD:
3621+
return 0x1ca752 << 10 // vfrintrm.d
3622+
case AVFRINTF:
3623+
return 0x1ca74d << 10 // vfrint.s
3624+
case AVFRINTD:
3625+
return 0x1ca74e << 10 // vfrint.d
3626+
case AXVFRINTRNEF:
3627+
return 0x1da75d << 10 // xvfrintrne.s
3628+
case AXVFRINTRNED:
3629+
return 0x1da75e << 10 // xvfrintrne.d
3630+
case AXVFRINTRZF:
3631+
return 0x1da759 << 10 // xvfrintrz.s
3632+
case AXVFRINTRZD:
3633+
return 0x1da75a << 10 // xvfrintrz.d
3634+
case AXVFRINTRPF:
3635+
return 0x1da755 << 10 // xvfrintrp.s
3636+
case AXVFRINTRPD:
3637+
return 0x1da756 << 10 // xvfrintrp.d
3638+
case AXVFRINTRMF:
3639+
return 0x1da751 << 10 // xvfrintrm.s
3640+
case AXVFRINTRMD:
3641+
return 0x1da752 << 10 // xvfrintrm.d
3642+
case AXVFRINTF:
3643+
return 0x1da74d << 10 // xvfrint.s
3644+
case AXVFRINTD:
3645+
return 0x1da74e << 10 // xvfrint.d
35863646
case AVSETEQV:
35873647
return 0x1ca726<<10 | 0x0<<3 // vseteqz.v
35883648
case AVSETNEV:

0 commit comments

Comments
 (0)