]> Cypherpunks repositories - gostls13.git/commitdiff
[dev.simd] cmd/compile: fix incorrect mapping of SHA256MSG2128
authorNeal Patel <nealpatel@google.com>
Thu, 20 Nov 2025 22:28:41 +0000 (22:28 +0000)
committerDavid Chase <drchase@google.com>
Fri, 21 Nov 2025 19:07:17 +0000 (11:07 -0800)
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>
src/cmd/compile/internal/amd64/simdssa.go
src/cmd/compile/internal/ssa/_gen/simdAMD64.rules
src/cmd/compile/internal/ssa/_gen/simdAMD64ops.go
src/cmd/compile/internal/ssa/opGen.go
src/cmd/compile/internal/ssa/rewriteAMD64.go
src/simd/_gen/simdgen/ops/Others/go.yaml
src/simd/ops_amd64.go

index b70a72b2f85f82805f11337da20dcf0f5ae88dd4..841f57581fff67ada0cc01ec705668225525d70f 100644 (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:
index db426f6615f68936659795f739ddbbfe1e71cfd7..24d9f1a3d30ff5ea27e6efbebc15f01e137a0eb2 100644 (file)
 (SHA1Message2Uint32x4 ...) => (SHA1MSG2128 ...)
 (SHA1NextEUint32x4 ...) => (SHA1NEXTE128 ...)
 (SHA256Message1Uint32x4 ...) => (SHA256MSG1128 ...)
-(SHA256Message2Uint32x4 ...) => (SHA256MSG1128 ...)
+(SHA256Message2Uint32x4 ...) => (SHA256MSG2128 ...)
 (SHA256TwoRoundsUint32x4 ...) => (SHA256RNDS2128 ...)
 (ScaleFloat32x4 ...) => (VSCALEFPS128 ...)
 (ScaleFloat32x8 ...) => (VSCALEFPS256 ...)
index 404354d38701afc760f113751bb486ed353cf571..cf8351beb0e5f5b36597356ee5e13b67566eff2b 100644 (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},
index bb40ff411786e1721bca0a3b99b5d2bb5523d0c5..5b8c35bec6e290b0d36937d89d9f6ad6597fe6ec 100644 (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,
index c7995c5c9e5eeabf21551877cbc0bd21f713b97f..34175c11b8ef57d220f41bcb4cff26cc628efbf2 100644 (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
index c098d28968e0c8608d7310907abdf5d7064a2ca0..6099ce4a10a9e35069fd9b44ff1b40f64332c63d 100644 (file)
@@ -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
index 8acf3e897c2616422df1e5c6cd9f2a16d19f8546..2be59cf4858f8f8539e9fda1a9ca2ec127bd38e0 100644 (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 */