[dev.simd] cmd/compile: add fused mul add sub ops

This CL is generated by CL 680595.

Change-Id: I5e06ea9bc6a62593fc3b00fd44c119a5ed0d9e90
Reviewed-on: https://go-review.googlesource.com/c/go/+/681299
Reviewed-by: David Chase <drchase@google.com>
LUCI-TryBot-Result: Go LUCI <golang-scoped@luci-project-accounts.iam.gserviceaccount.com>
This commit is contained in:
Junyang Shao 2025-06-12 16:45:00 +00:00
parent ded6e0ac71
commit ca01eab9c7
8 changed files with 10046 additions and 2 deletions

View file

@ -679,7 +679,115 @@ func ssaGenSIMDValue(s *ssagen.State, v *ssa.Value) bool {
ssa.OpAMD64VPCMPBMasked512:
p = simdFp2k1k1Imm8(s, v)
case ssa.OpAMD64VPDPWSSD128,
case ssa.OpAMD64VFMADD132PS512,
ssa.OpAMD64VFMADD132PS128,
ssa.OpAMD64VFMADD132PS256,
ssa.OpAMD64VFMADD132PD128,
ssa.OpAMD64VFMADD132PD256,
ssa.OpAMD64VFMADD132PD512,
ssa.OpAMD64VFMADD213PS512,
ssa.OpAMD64VFMADD213PS128,
ssa.OpAMD64VFMADD213PS256,
ssa.OpAMD64VFMADD213PD128,
ssa.OpAMD64VFMADD213PD256,
ssa.OpAMD64VFMADD213PD512,
ssa.OpAMD64VFMADD231PS512,
ssa.OpAMD64VFMADD231PS128,
ssa.OpAMD64VFMADD231PS256,
ssa.OpAMD64VFMADD231PD128,
ssa.OpAMD64VFMADD231PD256,
ssa.OpAMD64VFMADD231PD512,
ssa.OpAMD64VFMADDSUB132PS512,
ssa.OpAMD64VFMADDSUB132PS128,
ssa.OpAMD64VFMADDSUB132PS256,
ssa.OpAMD64VFMADDSUB132PD128,
ssa.OpAMD64VFMADDSUB132PD256,
ssa.OpAMD64VFMADDSUB132PD512,
ssa.OpAMD64VFMADDSUB213PS512,
ssa.OpAMD64VFMADDSUB213PS128,
ssa.OpAMD64VFMADDSUB213PS256,
ssa.OpAMD64VFMADDSUB213PD128,
ssa.OpAMD64VFMADDSUB213PD256,
ssa.OpAMD64VFMADDSUB213PD512,
ssa.OpAMD64VFMADDSUB231PS512,
ssa.OpAMD64VFMADDSUB231PS128,
ssa.OpAMD64VFMADDSUB231PS256,
ssa.OpAMD64VFMADDSUB231PD128,
ssa.OpAMD64VFMADDSUB231PD256,
ssa.OpAMD64VFMADDSUB231PD512,
ssa.OpAMD64VFMSUB132PS512,
ssa.OpAMD64VFMSUB132PS128,
ssa.OpAMD64VFMSUB132PS256,
ssa.OpAMD64VFMSUB132PD128,
ssa.OpAMD64VFMSUB132PD256,
ssa.OpAMD64VFMSUB132PD512,
ssa.OpAMD64VFMSUB213PS512,
ssa.OpAMD64VFMSUB213PS128,
ssa.OpAMD64VFMSUB213PS256,
ssa.OpAMD64VFMSUB213PD128,
ssa.OpAMD64VFMSUB213PD256,
ssa.OpAMD64VFMSUB213PD512,
ssa.OpAMD64VFMSUB231PS512,
ssa.OpAMD64VFMSUB231PS128,
ssa.OpAMD64VFMSUB231PS256,
ssa.OpAMD64VFMSUB231PD128,
ssa.OpAMD64VFMSUB231PD256,
ssa.OpAMD64VFMSUB231PD512,
ssa.OpAMD64VFMSUBADD132PS512,
ssa.OpAMD64VFMSUBADD132PS128,
ssa.OpAMD64VFMSUBADD132PS256,
ssa.OpAMD64VFMSUBADD132PD128,
ssa.OpAMD64VFMSUBADD132PD256,
ssa.OpAMD64VFMSUBADD132PD512,
ssa.OpAMD64VFMSUBADD213PS512,
ssa.OpAMD64VFMSUBADD213PS128,
ssa.OpAMD64VFMSUBADD213PS256,
ssa.OpAMD64VFMSUBADD213PD128,
ssa.OpAMD64VFMSUBADD213PD256,
ssa.OpAMD64VFMSUBADD213PD512,
ssa.OpAMD64VFMSUBADD231PS512,
ssa.OpAMD64VFMSUBADD231PS128,
ssa.OpAMD64VFMSUBADD231PS256,
ssa.OpAMD64VFMSUBADD231PD128,
ssa.OpAMD64VFMSUBADD231PD256,
ssa.OpAMD64VFMSUBADD231PD512,
ssa.OpAMD64VFNMADD132PS512,
ssa.OpAMD64VFNMADD132PS128,
ssa.OpAMD64VFNMADD132PS256,
ssa.OpAMD64VFNMADD132PD128,
ssa.OpAMD64VFNMADD132PD256,
ssa.OpAMD64VFNMADD132PD512,
ssa.OpAMD64VFNMADD213PS512,
ssa.OpAMD64VFNMADD213PS128,
ssa.OpAMD64VFNMADD213PS256,
ssa.OpAMD64VFNMADD213PD128,
ssa.OpAMD64VFNMADD213PD256,
ssa.OpAMD64VFNMADD213PD512,
ssa.OpAMD64VFNMADD231PS512,
ssa.OpAMD64VFNMADD231PS128,
ssa.OpAMD64VFNMADD231PS256,
ssa.OpAMD64VFNMADD231PD128,
ssa.OpAMD64VFNMADD231PD256,
ssa.OpAMD64VFNMADD231PD512,
ssa.OpAMD64VFNMSUB132PS512,
ssa.OpAMD64VFNMSUB132PS128,
ssa.OpAMD64VFNMSUB132PS256,
ssa.OpAMD64VFNMSUB132PD128,
ssa.OpAMD64VFNMSUB132PD256,
ssa.OpAMD64VFNMSUB132PD512,
ssa.OpAMD64VFNMSUB213PS512,
ssa.OpAMD64VFNMSUB213PS128,
ssa.OpAMD64VFNMSUB213PS256,
ssa.OpAMD64VFNMSUB213PD128,
ssa.OpAMD64VFNMSUB213PD256,
ssa.OpAMD64VFNMSUB213PD512,
ssa.OpAMD64VFNMSUB231PS512,
ssa.OpAMD64VFNMSUB231PS128,
ssa.OpAMD64VFNMSUB231PS256,
ssa.OpAMD64VFNMSUB231PD128,
ssa.OpAMD64VFNMSUB231PD256,
ssa.OpAMD64VFNMSUB231PD512,
ssa.OpAMD64VPDPWSSD128,
ssa.OpAMD64VPDPWSSD256,
ssa.OpAMD64VPDPWSSD512,
ssa.OpAMD64VPDPWSSDS128,
@ -693,7 +801,115 @@ func ssaGenSIMDValue(s *ssagen.State, v *ssa.Value) bool {
ssa.OpAMD64VPDPBUSD512:
p = simdFp31ResultInArg0(s, v)
case ssa.OpAMD64VPDPWSSDMasked512,
case ssa.OpAMD64VFMADD132PSMasked512,
ssa.OpAMD64VFMADD132PSMasked128,
ssa.OpAMD64VFMADD132PSMasked256,
ssa.OpAMD64VFMADD132PDMasked128,
ssa.OpAMD64VFMADD132PDMasked256,
ssa.OpAMD64VFMADD132PDMasked512,
ssa.OpAMD64VFMADD213PSMasked512,
ssa.OpAMD64VFMADD213PSMasked128,
ssa.OpAMD64VFMADD213PSMasked256,
ssa.OpAMD64VFMADD213PDMasked128,
ssa.OpAMD64VFMADD213PDMasked256,
ssa.OpAMD64VFMADD213PDMasked512,
ssa.OpAMD64VFMADD231PSMasked512,
ssa.OpAMD64VFMADD231PSMasked128,
ssa.OpAMD64VFMADD231PSMasked256,
ssa.OpAMD64VFMADD231PDMasked128,
ssa.OpAMD64VFMADD231PDMasked256,
ssa.OpAMD64VFMADD231PDMasked512,
ssa.OpAMD64VFMADDSUB132PSMasked512,
ssa.OpAMD64VFMADDSUB132PSMasked128,
ssa.OpAMD64VFMADDSUB132PSMasked256,
ssa.OpAMD64VFMADDSUB132PDMasked128,
ssa.OpAMD64VFMADDSUB132PDMasked256,
ssa.OpAMD64VFMADDSUB132PDMasked512,
ssa.OpAMD64VFMADDSUB213PSMasked512,
ssa.OpAMD64VFMADDSUB213PSMasked128,
ssa.OpAMD64VFMADDSUB213PSMasked256,
ssa.OpAMD64VFMADDSUB213PDMasked128,
ssa.OpAMD64VFMADDSUB213PDMasked256,
ssa.OpAMD64VFMADDSUB213PDMasked512,
ssa.OpAMD64VFMADDSUB231PSMasked512,
ssa.OpAMD64VFMADDSUB231PSMasked128,
ssa.OpAMD64VFMADDSUB231PSMasked256,
ssa.OpAMD64VFMADDSUB231PDMasked128,
ssa.OpAMD64VFMADDSUB231PDMasked256,
ssa.OpAMD64VFMADDSUB231PDMasked512,
ssa.OpAMD64VFMSUB132PSMasked512,
ssa.OpAMD64VFMSUB132PSMasked128,
ssa.OpAMD64VFMSUB132PSMasked256,
ssa.OpAMD64VFMSUB132PDMasked128,
ssa.OpAMD64VFMSUB132PDMasked256,
ssa.OpAMD64VFMSUB132PDMasked512,
ssa.OpAMD64VFMSUB213PSMasked512,
ssa.OpAMD64VFMSUB213PSMasked128,
ssa.OpAMD64VFMSUB213PSMasked256,
ssa.OpAMD64VFMSUB213PDMasked128,
ssa.OpAMD64VFMSUB213PDMasked256,
ssa.OpAMD64VFMSUB213PDMasked512,
ssa.OpAMD64VFMSUB231PSMasked512,
ssa.OpAMD64VFMSUB231PSMasked128,
ssa.OpAMD64VFMSUB231PSMasked256,
ssa.OpAMD64VFMSUB231PDMasked128,
ssa.OpAMD64VFMSUB231PDMasked256,
ssa.OpAMD64VFMSUB231PDMasked512,
ssa.OpAMD64VFMSUBADD132PSMasked512,
ssa.OpAMD64VFMSUBADD132PSMasked128,
ssa.OpAMD64VFMSUBADD132PSMasked256,
ssa.OpAMD64VFMSUBADD132PDMasked128,
ssa.OpAMD64VFMSUBADD132PDMasked256,
ssa.OpAMD64VFMSUBADD132PDMasked512,
ssa.OpAMD64VFMSUBADD213PSMasked512,
ssa.OpAMD64VFMSUBADD213PSMasked128,
ssa.OpAMD64VFMSUBADD213PSMasked256,
ssa.OpAMD64VFMSUBADD213PDMasked128,
ssa.OpAMD64VFMSUBADD213PDMasked256,
ssa.OpAMD64VFMSUBADD213PDMasked512,
ssa.OpAMD64VFMSUBADD231PSMasked512,
ssa.OpAMD64VFMSUBADD231PSMasked128,
ssa.OpAMD64VFMSUBADD231PSMasked256,
ssa.OpAMD64VFMSUBADD231PDMasked128,
ssa.OpAMD64VFMSUBADD231PDMasked256,
ssa.OpAMD64VFMSUBADD231PDMasked512,
ssa.OpAMD64VFNMADD132PSMasked512,
ssa.OpAMD64VFNMADD132PSMasked128,
ssa.OpAMD64VFNMADD132PSMasked256,
ssa.OpAMD64VFNMADD132PDMasked128,
ssa.OpAMD64VFNMADD132PDMasked256,
ssa.OpAMD64VFNMADD132PDMasked512,
ssa.OpAMD64VFNMADD213PSMasked512,
ssa.OpAMD64VFNMADD213PSMasked128,
ssa.OpAMD64VFNMADD213PSMasked256,
ssa.OpAMD64VFNMADD213PDMasked128,
ssa.OpAMD64VFNMADD213PDMasked256,
ssa.OpAMD64VFNMADD213PDMasked512,
ssa.OpAMD64VFNMADD231PSMasked512,
ssa.OpAMD64VFNMADD231PSMasked128,
ssa.OpAMD64VFNMADD231PSMasked256,
ssa.OpAMD64VFNMADD231PDMasked128,
ssa.OpAMD64VFNMADD231PDMasked256,
ssa.OpAMD64VFNMADD231PDMasked512,
ssa.OpAMD64VFNMSUB132PSMasked512,
ssa.OpAMD64VFNMSUB132PSMasked128,
ssa.OpAMD64VFNMSUB132PSMasked256,
ssa.OpAMD64VFNMSUB132PDMasked128,
ssa.OpAMD64VFNMSUB132PDMasked256,
ssa.OpAMD64VFNMSUB132PDMasked512,
ssa.OpAMD64VFNMSUB213PSMasked512,
ssa.OpAMD64VFNMSUB213PSMasked128,
ssa.OpAMD64VFNMSUB213PSMasked256,
ssa.OpAMD64VFNMSUB213PDMasked128,
ssa.OpAMD64VFNMSUB213PDMasked256,
ssa.OpAMD64VFNMSUB213PDMasked512,
ssa.OpAMD64VFNMSUB231PSMasked512,
ssa.OpAMD64VFNMSUB231PSMasked128,
ssa.OpAMD64VFNMSUB231PSMasked256,
ssa.OpAMD64VFNMSUB231PDMasked128,
ssa.OpAMD64VFNMSUB231PDMasked256,
ssa.OpAMD64VFNMSUB231PDMasked512,
ssa.OpAMD64VPDPWSSDMasked512,
ssa.OpAMD64VPDPWSSDMasked128,
ssa.OpAMD64VPDPWSSDMasked256,
ssa.OpAMD64VPDPWSSDSMasked512,
@ -804,6 +1020,114 @@ func ssaGenSIMDValue(s *ssagen.State, v *ssa.Value) bool {
ssa.OpAMD64VDIVPDMasked128,
ssa.OpAMD64VDIVPDMasked256,
ssa.OpAMD64VDIVPDMasked512,
ssa.OpAMD64VFMADD132PSMasked512,
ssa.OpAMD64VFMADD132PSMasked128,
ssa.OpAMD64VFMADD132PSMasked256,
ssa.OpAMD64VFMADD132PDMasked128,
ssa.OpAMD64VFMADD132PDMasked256,
ssa.OpAMD64VFMADD132PDMasked512,
ssa.OpAMD64VFMADD213PSMasked512,
ssa.OpAMD64VFMADD213PSMasked128,
ssa.OpAMD64VFMADD213PSMasked256,
ssa.OpAMD64VFMADD213PDMasked128,
ssa.OpAMD64VFMADD213PDMasked256,
ssa.OpAMD64VFMADD213PDMasked512,
ssa.OpAMD64VFMADD231PSMasked512,
ssa.OpAMD64VFMADD231PSMasked128,
ssa.OpAMD64VFMADD231PSMasked256,
ssa.OpAMD64VFMADD231PDMasked128,
ssa.OpAMD64VFMADD231PDMasked256,
ssa.OpAMD64VFMADD231PDMasked512,
ssa.OpAMD64VFMADDSUB132PSMasked512,
ssa.OpAMD64VFMADDSUB132PSMasked128,
ssa.OpAMD64VFMADDSUB132PSMasked256,
ssa.OpAMD64VFMADDSUB132PDMasked128,
ssa.OpAMD64VFMADDSUB132PDMasked256,
ssa.OpAMD64VFMADDSUB132PDMasked512,
ssa.OpAMD64VFMADDSUB213PSMasked512,
ssa.OpAMD64VFMADDSUB213PSMasked128,
ssa.OpAMD64VFMADDSUB213PSMasked256,
ssa.OpAMD64VFMADDSUB213PDMasked128,
ssa.OpAMD64VFMADDSUB213PDMasked256,
ssa.OpAMD64VFMADDSUB213PDMasked512,
ssa.OpAMD64VFMADDSUB231PSMasked512,
ssa.OpAMD64VFMADDSUB231PSMasked128,
ssa.OpAMD64VFMADDSUB231PSMasked256,
ssa.OpAMD64VFMADDSUB231PDMasked128,
ssa.OpAMD64VFMADDSUB231PDMasked256,
ssa.OpAMD64VFMADDSUB231PDMasked512,
ssa.OpAMD64VFMSUB132PSMasked512,
ssa.OpAMD64VFMSUB132PSMasked128,
ssa.OpAMD64VFMSUB132PSMasked256,
ssa.OpAMD64VFMSUB132PDMasked128,
ssa.OpAMD64VFMSUB132PDMasked256,
ssa.OpAMD64VFMSUB132PDMasked512,
ssa.OpAMD64VFMSUB213PSMasked512,
ssa.OpAMD64VFMSUB213PSMasked128,
ssa.OpAMD64VFMSUB213PSMasked256,
ssa.OpAMD64VFMSUB213PDMasked128,
ssa.OpAMD64VFMSUB213PDMasked256,
ssa.OpAMD64VFMSUB213PDMasked512,
ssa.OpAMD64VFMSUB231PSMasked512,
ssa.OpAMD64VFMSUB231PSMasked128,
ssa.OpAMD64VFMSUB231PSMasked256,
ssa.OpAMD64VFMSUB231PDMasked128,
ssa.OpAMD64VFMSUB231PDMasked256,
ssa.OpAMD64VFMSUB231PDMasked512,
ssa.OpAMD64VFMSUBADD132PSMasked512,
ssa.OpAMD64VFMSUBADD132PSMasked128,
ssa.OpAMD64VFMSUBADD132PSMasked256,
ssa.OpAMD64VFMSUBADD132PDMasked128,
ssa.OpAMD64VFMSUBADD132PDMasked256,
ssa.OpAMD64VFMSUBADD132PDMasked512,
ssa.OpAMD64VFMSUBADD213PSMasked512,
ssa.OpAMD64VFMSUBADD213PSMasked128,
ssa.OpAMD64VFMSUBADD213PSMasked256,
ssa.OpAMD64VFMSUBADD213PDMasked128,
ssa.OpAMD64VFMSUBADD213PDMasked256,
ssa.OpAMD64VFMSUBADD213PDMasked512,
ssa.OpAMD64VFMSUBADD231PSMasked512,
ssa.OpAMD64VFMSUBADD231PSMasked128,
ssa.OpAMD64VFMSUBADD231PSMasked256,
ssa.OpAMD64VFMSUBADD231PDMasked128,
ssa.OpAMD64VFMSUBADD231PDMasked256,
ssa.OpAMD64VFMSUBADD231PDMasked512,
ssa.OpAMD64VFNMADD132PSMasked512,
ssa.OpAMD64VFNMADD132PSMasked128,
ssa.OpAMD64VFNMADD132PSMasked256,
ssa.OpAMD64VFNMADD132PDMasked128,
ssa.OpAMD64VFNMADD132PDMasked256,
ssa.OpAMD64VFNMADD132PDMasked512,
ssa.OpAMD64VFNMADD213PSMasked512,
ssa.OpAMD64VFNMADD213PSMasked128,
ssa.OpAMD64VFNMADD213PSMasked256,
ssa.OpAMD64VFNMADD213PDMasked128,
ssa.OpAMD64VFNMADD213PDMasked256,
ssa.OpAMD64VFNMADD213PDMasked512,
ssa.OpAMD64VFNMADD231PSMasked512,
ssa.OpAMD64VFNMADD231PSMasked128,
ssa.OpAMD64VFNMADD231PSMasked256,
ssa.OpAMD64VFNMADD231PDMasked128,
ssa.OpAMD64VFNMADD231PDMasked256,
ssa.OpAMD64VFNMADD231PDMasked512,
ssa.OpAMD64VFNMSUB132PSMasked512,
ssa.OpAMD64VFNMSUB132PSMasked128,
ssa.OpAMD64VFNMSUB132PSMasked256,
ssa.OpAMD64VFNMSUB132PDMasked128,
ssa.OpAMD64VFNMSUB132PDMasked256,
ssa.OpAMD64VFNMSUB132PDMasked512,
ssa.OpAMD64VFNMSUB213PSMasked512,
ssa.OpAMD64VFNMSUB213PSMasked128,
ssa.OpAMD64VFNMSUB213PSMasked256,
ssa.OpAMD64VFNMSUB213PDMasked128,
ssa.OpAMD64VFNMSUB213PDMasked256,
ssa.OpAMD64VFNMSUB213PDMasked512,
ssa.OpAMD64VFNMSUB231PSMasked512,
ssa.OpAMD64VFNMSUB231PSMasked128,
ssa.OpAMD64VFNMSUB231PSMasked256,
ssa.OpAMD64VFNMSUB231PDMasked128,
ssa.OpAMD64VFNMSUB231PDMasked256,
ssa.OpAMD64VFNMSUB231PDMasked512,
ssa.OpAMD64VMAXPSMasked512,
ssa.OpAMD64VMAXPSMasked128,
ssa.OpAMD64VMAXPSMasked256,