From: Neal Patel Date: Thu, 20 Nov 2025 22:28:41 +0000 (+0000) Subject: [dev.simd] cmd/compile: fix incorrect mapping of SHA256MSG2128 X-Git-Tag: go1.26rc1~147^2~9 X-Git-Url: http://www.git.cypherpunks.su/?a=commitdiff_plain;h=d3a0321dbad4c2f60bede3bd033b26a5a4839c53;p=gostls13.git [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 Reviewed-by: Junyang Shao Reviewed-by: David Chase --- diff --git a/src/cmd/compile/internal/amd64/simdssa.go b/src/cmd/compile/internal/amd64/simdssa.go index b70a72b2f8..841f57581f 100644 --- a/src/cmd/compile/internal/amd64/simdssa.go +++ b/src/cmd/compile/internal/amd64/simdssa.go @@ -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: diff --git a/src/cmd/compile/internal/ssa/_gen/simdAMD64.rules b/src/cmd/compile/internal/ssa/_gen/simdAMD64.rules index db426f6615..24d9f1a3d3 100644 --- a/src/cmd/compile/internal/ssa/_gen/simdAMD64.rules +++ b/src/cmd/compile/internal/ssa/_gen/simdAMD64.rules @@ -931,7 +931,7 @@ (SHA1Message2Uint32x4 ...) => (SHA1MSG2128 ...) (SHA1NextEUint32x4 ...) => (SHA1NEXTE128 ...) (SHA256Message1Uint32x4 ...) => (SHA256MSG1128 ...) -(SHA256Message2Uint32x4 ...) => (SHA256MSG1128 ...) +(SHA256Message2Uint32x4 ...) => (SHA256MSG2128 ...) (SHA256TwoRoundsUint32x4 ...) => (SHA256RNDS2128 ...) (ScaleFloat32x4 ...) => (VSCALEFPS128 ...) (ScaleFloat32x8 ...) => (VSCALEFPS256 ...) diff --git a/src/cmd/compile/internal/ssa/_gen/simdAMD64ops.go b/src/cmd/compile/internal/ssa/_gen/simdAMD64ops.go index 404354d387..cf8351beb0 100644 --- a/src/cmd/compile/internal/ssa/_gen/simdAMD64ops.go +++ b/src/cmd/compile/internal/ssa/_gen/simdAMD64ops.go @@ -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}, diff --git a/src/cmd/compile/internal/ssa/opGen.go b/src/cmd/compile/internal/ssa/opGen.go index bb40ff4117..5b8c35bec6 100644 --- a/src/cmd/compile/internal/ssa/opGen.go +++ b/src/cmd/compile/internal/ssa/opGen.go @@ -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, diff --git a/src/cmd/compile/internal/ssa/rewriteAMD64.go b/src/cmd/compile/internal/ssa/rewriteAMD64.go index c7995c5c9e..34175c11b8 100644 --- a/src/cmd/compile/internal/ssa/rewriteAMD64.go +++ b/src/cmd/compile/internal/ssa/rewriteAMD64.go @@ -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 diff --git a/src/simd/_gen/simdgen/ops/Others/go.yaml b/src/simd/_gen/simdgen/ops/Others/go.yaml index c098d28968..6099ce4a10 100644 --- a/src/simd/_gen/simdgen/ops/Others/go.yaml +++ b/src/simd/_gen/simdgen/ops/Others/go.yaml @@ -93,6 +93,6 @@ in: *2uint out: *1uint - go: SHA256Message2 - asm: SHA256MSG1 + asm: SHA256MSG2 in: *2uint - out: *1uint \ No newline at end of file + out: *1uint diff --git a/src/simd/ops_amd64.go b/src/simd/ops_amd64.go index 8acf3e897c..2be59cf485 100644 --- a/src/simd/ops_amd64.go +++ b/src/simd/ops_amd64.go @@ -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 */