This instruction was introduced on the z14 to accelerate "limbified"
multiplications for certain cryptographic algorithms. This change allows
it to be used in Go assembly.
Change-Id: Ic93dae7fec1756f662874c08a5abc435bce9dd9e
Reviewed-on: https://go-review.googlesource.com/109695
Run-TryBot: Michael Munday <mike.munday@ibm.com>
TryBot-Result: Gobot Gobot <gobot@golang.org>
Reviewed-by: Brad Fitzpatrick <bradfitz@golang.org>
VSTEF $3, V2, (R9) // e7209000300b
VSTEH $7, V31, (R2) // e7f020007809
VSTEB $15, V29, 4094(R12) // e7d0cffef808
+ VMSLG V21, V22, V23, V24 // e78563007fb8
RET
RET foo(SB)
AVUPLB
AVUPLHW
AVUPLF
+ AVMSLG
// binary
ABYTE
"VUPLB",
"VUPLHW",
"VUPLF",
+ "VMSLG",
"BYTE",
"WORD",
"DWORD",
opset(AVSTRCZFS, r)
opset(AVSBCBIQ, r)
opset(AVSBIQ, r)
+ opset(AVMSLG, r)
case AVSEL:
opset(AVFMADB, r)
opset(AWFMADB, r)
op_VUPLH uint32 = 0xE7D5 // VRR-a VECTOR UNPACK LOGICAL HIGH
op_VUPLL uint32 = 0xE7D4 // VRR-a VECTOR UNPACK LOGICAL LOW
op_VUPL uint32 = 0xE7D6 // VRR-a VECTOR UNPACK LOW
+ op_VMSL uint32 = 0xE7B8 // VRR-d VECTOR MULTIPLY SUM LOGICAL
)
func oclass(a *obj.Addr) int {
return op_VAC, 0, 0
case AVACQ:
return op_VAC, 4, 0
+ case AVMSLG:
+ return op_VMSL, 3, 0
case AVACCC:
return op_VACCC, 0, 0
case AVACCCQ: