[dev.simd] cmd/compile, simd: add shift operations

This CL is generated by CL 683475.

Change-Id: I9e3ac6aff6f711cb26ff85e4c8729d9e2cc38e7d
Reviewed-on: https://go-review.googlesource.com/c/go/+/683715
LUCI-TryBot-Result: Go LUCI <golang-scoped@luci-project-accounts.iam.gserviceaccount.com>
Reviewed-by: David Chase <drchase@google.com>
This commit is contained in:
Junyang Shao 2025-06-24 15:21:29 +00:00
parent 35b8cf7fed
commit e61ebfce56
9 changed files with 16257 additions and 3 deletions

View file

@ -247,6 +247,18 @@ func ssaGenSIMDValue(s *ssagen.State, v *ssa.Value) bool {
ssa.OpAMD64VPHSUBW256,
ssa.OpAMD64VPHSUBD128,
ssa.OpAMD64VPHSUBD256,
ssa.OpAMD64VPROLVD128,
ssa.OpAMD64VPROLVD256,
ssa.OpAMD64VPROLVD512,
ssa.OpAMD64VPROLVQ128,
ssa.OpAMD64VPROLVQ256,
ssa.OpAMD64VPROLVQ512,
ssa.OpAMD64VPRORVD128,
ssa.OpAMD64VPRORVD256,
ssa.OpAMD64VPRORVD512,
ssa.OpAMD64VPRORVQ128,
ssa.OpAMD64VPRORVQ256,
ssa.OpAMD64VPRORVQ512,
ssa.OpAMD64VPADDSB128,
ssa.OpAMD64VPADDSB256,
ssa.OpAMD64VPADDSB512,
@ -266,6 +278,33 @@ func ssaGenSIMDValue(s *ssagen.State, v *ssa.Value) bool {
ssa.OpAMD64VPMADDUBSW128,
ssa.OpAMD64VPMADDUBSW256,
ssa.OpAMD64VPMADDUBSW512,
ssa.OpAMD64VPSLLVW128,
ssa.OpAMD64VPSLLVW256,
ssa.OpAMD64VPSLLVW512,
ssa.OpAMD64VPSLLVD128,
ssa.OpAMD64VPSLLVD256,
ssa.OpAMD64VPSLLVD512,
ssa.OpAMD64VPSLLVQ128,
ssa.OpAMD64VPSLLVQ256,
ssa.OpAMD64VPSLLVQ512,
ssa.OpAMD64VPSRLVW128,
ssa.OpAMD64VPSRLVW256,
ssa.OpAMD64VPSRLVW512,
ssa.OpAMD64VPSRLVD128,
ssa.OpAMD64VPSRLVD256,
ssa.OpAMD64VPSRLVD512,
ssa.OpAMD64VPSRLVQ128,
ssa.OpAMD64VPSRLVQ256,
ssa.OpAMD64VPSRLVQ512,
ssa.OpAMD64VPSRAVW128,
ssa.OpAMD64VPSRAVW256,
ssa.OpAMD64VPSRAVW512,
ssa.OpAMD64VPSRAVD128,
ssa.OpAMD64VPSRAVD256,
ssa.OpAMD64VPSRAVD512,
ssa.OpAMD64VPSRAVQ128,
ssa.OpAMD64VPSRAVQ256,
ssa.OpAMD64VPSRAVQ512,
ssa.OpAMD64VPSIGNB128,
ssa.OpAMD64VPSIGNB256,
ssa.OpAMD64VPSIGNW128,
@ -464,6 +503,18 @@ func ssaGenSIMDValue(s *ssagen.State, v *ssa.Value) bool {
ssa.OpAMD64VPMADDWDMasked128,
ssa.OpAMD64VPMADDWDMasked256,
ssa.OpAMD64VPMADDWDMasked512,
ssa.OpAMD64VPROLVDMasked128,
ssa.OpAMD64VPROLVDMasked256,
ssa.OpAMD64VPROLVDMasked512,
ssa.OpAMD64VPROLVQMasked128,
ssa.OpAMD64VPROLVQMasked256,
ssa.OpAMD64VPROLVQMasked512,
ssa.OpAMD64VPRORVDMasked128,
ssa.OpAMD64VPRORVDMasked256,
ssa.OpAMD64VPRORVDMasked512,
ssa.OpAMD64VPRORVQMasked128,
ssa.OpAMD64VPRORVQMasked256,
ssa.OpAMD64VPRORVQMasked512,
ssa.OpAMD64VPADDSBMasked128,
ssa.OpAMD64VPADDSBMasked256,
ssa.OpAMD64VPADDSBMasked512,
@ -479,6 +530,33 @@ func ssaGenSIMDValue(s *ssagen.State, v *ssa.Value) bool {
ssa.OpAMD64VPMADDUBSWMasked128,
ssa.OpAMD64VPMADDUBSWMasked256,
ssa.OpAMD64VPMADDUBSWMasked512,
ssa.OpAMD64VPSLLVWMasked128,
ssa.OpAMD64VPSLLVWMasked256,
ssa.OpAMD64VPSLLVWMasked512,
ssa.OpAMD64VPSLLVDMasked128,
ssa.OpAMD64VPSLLVDMasked256,
ssa.OpAMD64VPSLLVDMasked512,
ssa.OpAMD64VPSLLVQMasked128,
ssa.OpAMD64VPSLLVQMasked256,
ssa.OpAMD64VPSLLVQMasked512,
ssa.OpAMD64VPSRLVWMasked128,
ssa.OpAMD64VPSRLVWMasked256,
ssa.OpAMD64VPSRLVWMasked512,
ssa.OpAMD64VPSRLVDMasked128,
ssa.OpAMD64VPSRLVDMasked256,
ssa.OpAMD64VPSRLVDMasked512,
ssa.OpAMD64VPSRLVQMasked128,
ssa.OpAMD64VPSRLVQMasked256,
ssa.OpAMD64VPSRLVQMasked512,
ssa.OpAMD64VPSRAVWMasked128,
ssa.OpAMD64VPSRAVWMasked256,
ssa.OpAMD64VPSRAVWMasked512,
ssa.OpAMD64VPSRAVDMasked128,
ssa.OpAMD64VPSRAVDMasked256,
ssa.OpAMD64VPSRAVDMasked512,
ssa.OpAMD64VPSRAVQMasked128,
ssa.OpAMD64VPSRAVQMasked256,
ssa.OpAMD64VPSRAVQMasked512,
ssa.OpAMD64VSUBPSMasked128,
ssa.OpAMD64VSUBPSMasked256,
ssa.OpAMD64VSUBPSMasked512,
@ -570,7 +648,19 @@ func ssaGenSIMDValue(s *ssagen.State, v *ssa.Value) bool {
ssa.OpAMD64VREDUCEPS512,
ssa.OpAMD64VREDUCEPD128,
ssa.OpAMD64VREDUCEPD256,
ssa.OpAMD64VREDUCEPD512:
ssa.OpAMD64VREDUCEPD512,
ssa.OpAMD64VPROLD128,
ssa.OpAMD64VPROLD256,
ssa.OpAMD64VPROLD512,
ssa.OpAMD64VPROLQ128,
ssa.OpAMD64VPROLQ256,
ssa.OpAMD64VPROLQ512,
ssa.OpAMD64VPRORD128,
ssa.OpAMD64VPRORD256,
ssa.OpAMD64VPRORD512,
ssa.OpAMD64VPRORQ128,
ssa.OpAMD64VPRORQ256,
ssa.OpAMD64VPRORQ512:
p = simdFp11Imm8(s, v)
case ssa.OpAMD64VRNDSCALEPSMasked128,
@ -584,14 +674,44 @@ func ssaGenSIMDValue(s *ssagen.State, v *ssa.Value) bool {
ssa.OpAMD64VREDUCEPSMasked512,
ssa.OpAMD64VREDUCEPDMasked128,
ssa.OpAMD64VREDUCEPDMasked256,
ssa.OpAMD64VREDUCEPDMasked512:
ssa.OpAMD64VREDUCEPDMasked512,
ssa.OpAMD64VPROLDMasked128,
ssa.OpAMD64VPROLDMasked256,
ssa.OpAMD64VPROLDMasked512,
ssa.OpAMD64VPROLQMasked128,
ssa.OpAMD64VPROLQMasked256,
ssa.OpAMD64VPROLQMasked512,
ssa.OpAMD64VPRORDMasked128,
ssa.OpAMD64VPRORDMasked256,
ssa.OpAMD64VPRORDMasked512,
ssa.OpAMD64VPRORQMasked128,
ssa.OpAMD64VPRORQMasked256,
ssa.OpAMD64VPRORQMasked512:
p = simdFpkfpImm8(s, v)
case ssa.OpAMD64VDPPD128,
ssa.OpAMD64VCMPPS128,
ssa.OpAMD64VCMPPS256,
ssa.OpAMD64VCMPPD128,
ssa.OpAMD64VCMPPD256:
ssa.OpAMD64VCMPPD256,
ssa.OpAMD64VPSHLDW128,
ssa.OpAMD64VPSHLDW256,
ssa.OpAMD64VPSHLDW512,
ssa.OpAMD64VPSHLDD128,
ssa.OpAMD64VPSHLDD256,
ssa.OpAMD64VPSHLDD512,
ssa.OpAMD64VPSHLDQ128,
ssa.OpAMD64VPSHLDQ256,
ssa.OpAMD64VPSHLDQ512,
ssa.OpAMD64VPSHRDW128,
ssa.OpAMD64VPSHRDW256,
ssa.OpAMD64VPSHRDW512,
ssa.OpAMD64VPSHRDD128,
ssa.OpAMD64VPSHRDD256,
ssa.OpAMD64VPSHRDD512,
ssa.OpAMD64VPSHRDQ128,
ssa.OpAMD64VPSHRDQ256,
ssa.OpAMD64VPSHRDQ512:
p = simdFp21Imm8(s, v)
case ssa.OpAMD64VCMPPS512,
@ -681,6 +801,24 @@ func ssaGenSIMDValue(s *ssagen.State, v *ssa.Value) bool {
ssa.OpAMD64VPDPBUSDS128,
ssa.OpAMD64VPDPBUSDS256,
ssa.OpAMD64VPDPBUSDS512,
ssa.OpAMD64VPSHLDVW128,
ssa.OpAMD64VPSHLDVW256,
ssa.OpAMD64VPSHLDVW512,
ssa.OpAMD64VPSHLDVD128,
ssa.OpAMD64VPSHLDVD256,
ssa.OpAMD64VPSHLDVD512,
ssa.OpAMD64VPSHLDVQ128,
ssa.OpAMD64VPSHLDVQ256,
ssa.OpAMD64VPSHLDVQ512,
ssa.OpAMD64VPSHRDVW128,
ssa.OpAMD64VPSHRDVW256,
ssa.OpAMD64VPSHRDVW512,
ssa.OpAMD64VPSHRDVD128,
ssa.OpAMD64VPSHRDVD256,
ssa.OpAMD64VPSHRDVD512,
ssa.OpAMD64VPSHRDVQ128,
ssa.OpAMD64VPSHRDVQ256,
ssa.OpAMD64VPSHRDVQ512,
ssa.OpAMD64VPDPBUSD128,
ssa.OpAMD64VPDPBUSD256,
ssa.OpAMD64VPDPBUSD512:
@ -713,11 +851,63 @@ func ssaGenSIMDValue(s *ssagen.State, v *ssa.Value) bool {
ssa.OpAMD64VPDPBUSDSMasked128,
ssa.OpAMD64VPDPBUSDSMasked256,
ssa.OpAMD64VPDPBUSDSMasked512,
ssa.OpAMD64VPSHLDVWMasked128,
ssa.OpAMD64VPSHLDVWMasked256,
ssa.OpAMD64VPSHLDVWMasked512,
ssa.OpAMD64VPSHLDVDMasked128,
ssa.OpAMD64VPSHLDVDMasked256,
ssa.OpAMD64VPSHLDVDMasked512,
ssa.OpAMD64VPSHLDVQMasked128,
ssa.OpAMD64VPSHLDVQMasked256,
ssa.OpAMD64VPSHLDVQMasked512,
ssa.OpAMD64VPSHRDVWMasked128,
ssa.OpAMD64VPSHRDVWMasked256,
ssa.OpAMD64VPSHRDVWMasked512,
ssa.OpAMD64VPSHRDVDMasked128,
ssa.OpAMD64VPSHRDVDMasked256,
ssa.OpAMD64VPSHRDVDMasked512,
ssa.OpAMD64VPSHRDVQMasked128,
ssa.OpAMD64VPSHRDVQMasked256,
ssa.OpAMD64VPSHRDVQMasked512,
ssa.OpAMD64VPDPBUSDMasked128,
ssa.OpAMD64VPDPBUSDMasked256,
ssa.OpAMD64VPDPBUSDMasked512:
p = simdFp3kfpResultInArg0(s, v)
case ssa.OpAMD64VPSLLW128,
ssa.OpAMD64VPSLLW256,
ssa.OpAMD64VPSLLD128,
ssa.OpAMD64VPSLLD256,
ssa.OpAMD64VPSLLQ128,
ssa.OpAMD64VPSLLQ256,
ssa.OpAMD64VPSLLQ512,
ssa.OpAMD64VPSRLW128,
ssa.OpAMD64VPSRLW256,
ssa.OpAMD64VPSRLD128,
ssa.OpAMD64VPSRLD256,
ssa.OpAMD64VPSRLQ128,
ssa.OpAMD64VPSRLQ256,
ssa.OpAMD64VPSRLQ512,
ssa.OpAMD64VPSRAW128,
ssa.OpAMD64VPSRAW256,
ssa.OpAMD64VPSRAD128,
ssa.OpAMD64VPSRAD256,
ssa.OpAMD64VPSRAQ128,
ssa.OpAMD64VPSRAQ256,
ssa.OpAMD64VPSRAQ512:
p = simdFpXfp(s, v)
case ssa.OpAMD64VPSLLQMasked128,
ssa.OpAMD64VPSLLQMasked256,
ssa.OpAMD64VPSLLQMasked512,
ssa.OpAMD64VPSRLQMasked128,
ssa.OpAMD64VPSRLQMasked256,
ssa.OpAMD64VPSRLQMasked512,
ssa.OpAMD64VPSRAQMasked128,
ssa.OpAMD64VPSRAQMasked256,
ssa.OpAMD64VPSRAQMasked512:
p = simdFpXkfp(s, v)
case ssa.OpAMD64VPINSRB128,
ssa.OpAMD64VPINSRW128,
ssa.OpAMD64VPINSRD128,
@ -730,6 +920,26 @@ func ssaGenSIMDValue(s *ssagen.State, v *ssa.Value) bool {
ssa.OpAMD64VPEXTRQ128:
p = simdFpgpImm8(s, v)
case ssa.OpAMD64VPSHLDWMasked128,
ssa.OpAMD64VPSHLDWMasked256,
ssa.OpAMD64VPSHLDWMasked512,
ssa.OpAMD64VPSHLDDMasked128,
ssa.OpAMD64VPSHLDDMasked256,
ssa.OpAMD64VPSHLDDMasked512,
ssa.OpAMD64VPSHLDQMasked128,
ssa.OpAMD64VPSHLDQMasked256,
ssa.OpAMD64VPSHLDQMasked512,
ssa.OpAMD64VPSHRDWMasked128,
ssa.OpAMD64VPSHRDWMasked256,
ssa.OpAMD64VPSHRDWMasked512,
ssa.OpAMD64VPSHRDDMasked128,
ssa.OpAMD64VPSHRDDMasked256,
ssa.OpAMD64VPSHRDDMasked512,
ssa.OpAMD64VPSHRDQMasked128,
ssa.OpAMD64VPSHRDQMasked256,
ssa.OpAMD64VPSHRDQMasked512:
p = simdFp2kfpImm8(s, v)
default:
// Unknown reg shape
return false
@ -968,6 +1178,30 @@ func ssaGenSIMDValue(s *ssagen.State, v *ssa.Value) bool {
ssa.OpAMD64VPOPCNTQMasked128,
ssa.OpAMD64VPOPCNTQMasked256,
ssa.OpAMD64VPOPCNTQMasked512,
ssa.OpAMD64VPROLDMasked128,
ssa.OpAMD64VPROLDMasked256,
ssa.OpAMD64VPROLDMasked512,
ssa.OpAMD64VPROLQMasked128,
ssa.OpAMD64VPROLQMasked256,
ssa.OpAMD64VPROLQMasked512,
ssa.OpAMD64VPRORDMasked128,
ssa.OpAMD64VPRORDMasked256,
ssa.OpAMD64VPRORDMasked512,
ssa.OpAMD64VPRORQMasked128,
ssa.OpAMD64VPRORQMasked256,
ssa.OpAMD64VPRORQMasked512,
ssa.OpAMD64VPROLVDMasked128,
ssa.OpAMD64VPROLVDMasked256,
ssa.OpAMD64VPROLVDMasked512,
ssa.OpAMD64VPROLVQMasked128,
ssa.OpAMD64VPROLVQMasked256,
ssa.OpAMD64VPROLVQMasked512,
ssa.OpAMD64VPRORVDMasked128,
ssa.OpAMD64VPRORVDMasked256,
ssa.OpAMD64VPRORVDMasked512,
ssa.OpAMD64VPRORVQMasked128,
ssa.OpAMD64VPRORVQMasked256,
ssa.OpAMD64VPRORVQMasked512,
ssa.OpAMD64VPADDSBMasked128,
ssa.OpAMD64VPADDSBMasked256,
ssa.OpAMD64VPADDSBMasked512,
@ -989,6 +1223,78 @@ func ssaGenSIMDValue(s *ssagen.State, v *ssa.Value) bool {
ssa.OpAMD64VPDPBUSDSMasked128,
ssa.OpAMD64VPDPBUSDSMasked256,
ssa.OpAMD64VPDPBUSDSMasked512,
ssa.OpAMD64VPSLLQMasked128,
ssa.OpAMD64VPSLLQMasked256,
ssa.OpAMD64VPSLLQMasked512,
ssa.OpAMD64VPSHLDWMasked128,
ssa.OpAMD64VPSHLDWMasked256,
ssa.OpAMD64VPSHLDWMasked512,
ssa.OpAMD64VPSHLDDMasked128,
ssa.OpAMD64VPSHLDDMasked256,
ssa.OpAMD64VPSHLDDMasked512,
ssa.OpAMD64VPSHLDQMasked128,
ssa.OpAMD64VPSHLDQMasked256,
ssa.OpAMD64VPSHLDQMasked512,
ssa.OpAMD64VPSRLQMasked128,
ssa.OpAMD64VPSRLQMasked256,
ssa.OpAMD64VPSRLQMasked512,
ssa.OpAMD64VPSHRDWMasked128,
ssa.OpAMD64VPSHRDWMasked256,
ssa.OpAMD64VPSHRDWMasked512,
ssa.OpAMD64VPSHRDDMasked128,
ssa.OpAMD64VPSHRDDMasked256,
ssa.OpAMD64VPSHRDDMasked512,
ssa.OpAMD64VPSHRDQMasked128,
ssa.OpAMD64VPSHRDQMasked256,
ssa.OpAMD64VPSHRDQMasked512,
ssa.OpAMD64VPSRAQMasked128,
ssa.OpAMD64VPSRAQMasked256,
ssa.OpAMD64VPSRAQMasked512,
ssa.OpAMD64VPSLLVWMasked128,
ssa.OpAMD64VPSLLVWMasked256,
ssa.OpAMD64VPSLLVWMasked512,
ssa.OpAMD64VPSLLVDMasked128,
ssa.OpAMD64VPSLLVDMasked256,
ssa.OpAMD64VPSLLVDMasked512,
ssa.OpAMD64VPSLLVQMasked128,
ssa.OpAMD64VPSLLVQMasked256,
ssa.OpAMD64VPSLLVQMasked512,
ssa.OpAMD64VPSHLDVWMasked128,
ssa.OpAMD64VPSHLDVWMasked256,
ssa.OpAMD64VPSHLDVWMasked512,
ssa.OpAMD64VPSHLDVDMasked128,
ssa.OpAMD64VPSHLDVDMasked256,
ssa.OpAMD64VPSHLDVDMasked512,
ssa.OpAMD64VPSHLDVQMasked128,
ssa.OpAMD64VPSHLDVQMasked256,
ssa.OpAMD64VPSHLDVQMasked512,
ssa.OpAMD64VPSRLVWMasked128,
ssa.OpAMD64VPSRLVWMasked256,
ssa.OpAMD64VPSRLVWMasked512,
ssa.OpAMD64VPSRLVDMasked128,
ssa.OpAMD64VPSRLVDMasked256,
ssa.OpAMD64VPSRLVDMasked512,
ssa.OpAMD64VPSRLVQMasked128,
ssa.OpAMD64VPSRLVQMasked256,
ssa.OpAMD64VPSRLVQMasked512,
ssa.OpAMD64VPSHRDVWMasked128,
ssa.OpAMD64VPSHRDVWMasked256,
ssa.OpAMD64VPSHRDVWMasked512,
ssa.OpAMD64VPSHRDVDMasked128,
ssa.OpAMD64VPSHRDVDMasked256,
ssa.OpAMD64VPSHRDVDMasked512,
ssa.OpAMD64VPSHRDVQMasked128,
ssa.OpAMD64VPSHRDVQMasked256,
ssa.OpAMD64VPSHRDVQMasked512,
ssa.OpAMD64VPSRAVWMasked128,
ssa.OpAMD64VPSRAVWMasked256,
ssa.OpAMD64VPSRAVWMasked512,
ssa.OpAMD64VPSRAVDMasked128,
ssa.OpAMD64VPSRAVDMasked256,
ssa.OpAMD64VPSRAVDMasked512,
ssa.OpAMD64VPSRAVQMasked128,
ssa.OpAMD64VPSRAVQMasked256,
ssa.OpAMD64VPSRAVQMasked512,
ssa.OpAMD64VSQRTPSMasked128,
ssa.OpAMD64VSQRTPSMasked256,
ssa.OpAMD64VSQRTPSMasked512,