[dev.simd] cmd/compile: fix incorrect mapping of SHA256MSG2128

Change-Id: Iff00fdb5cfc83c546ad564fa7618ec34d0352fdc
Reviewed-on: https://go-review.googlesource.com/c/go/+/722640
LUCI-TryBot-Result: Go LUCI <golang-scoped@luci-project-accounts.iam.gserviceaccount.com>
Reviewed-by: Junyang Shao <shaojunyang@google.com>
Reviewed-by: David Chase <drchase@google.com>
This commit is contained in:
Neal Patel 2025-11-20 22:28:41 +00:00 committed by David Chase
parent 74ebdd28d1
commit d3a0321dba
7 changed files with 24 additions and 6 deletions

View file

@ -2291,7 +2291,8 @@ func ssaGenSIMDValue(s *ssagen.State, v *ssa.Value) bool {
case ssa.OpAMD64SHA1MSG1128,
ssa.OpAMD64SHA1MSG2128,
ssa.OpAMD64SHA1NEXTE128,
ssa.OpAMD64SHA256MSG1128:
ssa.OpAMD64SHA256MSG1128,
ssa.OpAMD64SHA256MSG2128:
p = simdV21ResultInArg0(s, v)
case ssa.OpAMD64SHA1RNDS4128:

View file

@ -931,7 +931,7 @@
(SHA1Message2Uint32x4 ...) => (SHA1MSG2128 ...)
(SHA1NextEUint32x4 ...) => (SHA1NEXTE128 ...)
(SHA256Message1Uint32x4 ...) => (SHA256MSG1128 ...)
(SHA256Message2Uint32x4 ...) => (SHA256MSG1128 ...)
(SHA256Message2Uint32x4 ...) => (SHA256MSG2128 ...)
(SHA256TwoRoundsUint32x4 ...) => (SHA256RNDS2128 ...)
(ScaleFloat32x4 ...) => (VSCALEFPS128 ...)
(ScaleFloat32x8 ...) => (VSCALEFPS256 ...)

View file

@ -9,6 +9,7 @@ func simdAMD64Ops(v11, v21, v2k, vkv, v2kv, v2kk, v31, v3kv, vgpv, vgp, vfpv, vf
{name: "SHA1MSG2128", argLength: 2, reg: v21, asm: "SHA1MSG2", commutative: false, typ: "Vec128", resultInArg0: true},
{name: "SHA1NEXTE128", argLength: 2, reg: v21, asm: "SHA1NEXTE", commutative: false, typ: "Vec128", resultInArg0: true},
{name: "SHA256MSG1128", argLength: 2, reg: v21, asm: "SHA256MSG1", commutative: false, typ: "Vec128", resultInArg0: true},
{name: "SHA256MSG2128", argLength: 2, reg: v21, asm: "SHA256MSG2", commutative: false, typ: "Vec128", resultInArg0: true},
{name: "SHA256RNDS2128", argLength: 3, reg: v31x0AtIn2, asm: "SHA256RNDS2", commutative: false, typ: "Vec128", resultInArg0: true},
{name: "VADDPD128", argLength: 2, reg: v21, asm: "VADDPD", commutative: true, typ: "Vec128", resultInArg0: false},
{name: "VADDPD256", argLength: 2, reg: v21, asm: "VADDPD", commutative: true, typ: "Vec256", resultInArg0: false},

View file

@ -1250,6 +1250,7 @@ const (
OpAMD64SHA1MSG2128
OpAMD64SHA1NEXTE128
OpAMD64SHA256MSG1128
OpAMD64SHA256MSG2128
OpAMD64SHA256RNDS2128
OpAMD64VADDPD128
OpAMD64VADDPD256
@ -20601,6 +20602,21 @@ var opcodeTable = [...]opInfo{
},
},
},
{
name: "SHA256MSG2128",
argLen: 2,
resultInArg0: true,
asm: x86.ASHA256MSG2,
reg: regInfo{
inputs: []inputInfo{
{0, 2147418112}, // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14
{1, 4294901760}, // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X15
},
outputs: []outputInfo{
{0, 2147418112}, // X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14
},
},
},
{
name: "SHA256RNDS2128",
argLen: 3,

View file

@ -4984,7 +4984,7 @@ func rewriteValueAMD64(v *Value) bool {
v.Op = OpAMD64SHA256MSG1128
return true
case OpSHA256Message2Uint32x4:
v.Op = OpAMD64SHA256MSG1128
v.Op = OpAMD64SHA256MSG2128
return true
case OpSHA256TwoRoundsUint32x4:
v.Op = OpAMD64SHA256RNDS2128

View file

@ -93,6 +93,6 @@
in: *2uint
out: *1uint
- go: SHA256Message2
asm: SHA256MSG1
asm: SHA256MSG2
in: *2uint
out: *1uint
out: *1uint

View file

@ -5549,7 +5549,7 @@ func (x Uint32x4) SHA256Message1(y Uint32x4) Uint32x4
// y = {0, 0, W14, W15}
// result = {W16, W17, W18, W19}
//
// Asm: SHA256MSG1, CPU Feature: SHA
// Asm: SHA256MSG2, CPU Feature: SHA
func (x Uint32x4) SHA256Message2(y Uint32x4) Uint32x4
/* SHA256TwoRounds */