Go asm syntax:
VFCLASS{F/D} VJ, VD
XVFCLASS{F/D} XJ, XD
Equivalent platform assembler syntax:
vfclass.{s/d} vd, vj
xvfclass.{s/d} xd, xj
Change-Id: Iec373f393be315696d1fefc747a4a5882f993195
Reviewed-on: https://go-review.googlesource.com/c/go/+/670256
Reviewed-by: Cherry Mui <cherryyz@google.com>
Reviewed-by: Dustin Turner <dustin.turner44@gmail.com>
LUCI-TryBot-Result: Go LUCI <golang-scoped@luci-project-accounts.iam.gserviceaccount.com>
Reviewed-by: Carlos Amedee <carlos@golang.org>
Reviewed-by: abner chenc <chenguoqi@loongson.cn>
XVMULD X1, X2, X3 // 43043975
XVDIVF X1, X2, X3 // 43843a75
XVDIVD X1, X2, X3 // 43043b75
+
+ // [X]VFCLASS.{S/D} instructions
+ VFCLASSF V1, V2 // 22d49c72
+ VFCLASSD V1, V2 // 22d89c72
+ XVFCLASSF X1, X2 // 22d49c76
+ XVFCLASSD X1, X2 // 22d89c76
AXVDIVF
AXVDIVD
+ AVFCLASSF
+ AVFCLASSD
+ AXVFCLASSF
+ AXVFCLASSD
+
// LSX and LASX floating point conversion instructions
AVFRINTRNEF
AVFRINTRNED
"XVMULD",
"XVDIVF",
"XVDIVD",
+ "VFCLASSF",
+ "VFCLASSD",
+ "XVFCLASSF",
+ "XVFCLASSD",
"VFRINTRNEF",
"VFRINTRNED",
"VFRINTRZF",
opset(AVFRINTRMD, r0)
opset(AVFRINTF, r0)
opset(AVFRINTD, r0)
+ opset(AVFCLASSF, r0)
+ opset(AVFCLASSD, r0)
case AXVPCNTB:
opset(AXVPCNTH, r0)
opset(AXVFRINTRMD, r0)
opset(AXVFRINTF, r0)
opset(AXVFRINTD, r0)
+ opset(AXVFCLASSF, r0)
+ opset(AXVFCLASSD, r0)
case AVADDB:
opset(AVADDH, r0)
return 0x1da74d << 10 // xvfrint.s
case AXVFRINTD:
return 0x1da74e << 10 // xvfrint.d
+ case AVFCLASSF:
+ return 0x1ca735 << 10 // vfclass.s
+ case AVFCLASSD:
+ return 0x1ca736 << 10 // vfclass.d
+ case AXVFCLASSF:
+ return 0x1da735 << 10 // xvfclass.s
+ case AXVFCLASSD:
+ return 0x1da736 << 10 // xvfclass.d
case AVSETEQV:
return 0x1ca726<<10 | 0x0<<3 // vseteqz.v
case AVSETNEV: