mirror of
https://github.com/golang/go.git
synced 2026-02-06 18:00:01 +00:00
[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:
parent
74ebdd28d1
commit
d3a0321dba
7 changed files with 24 additions and 6 deletions
|
|
@ -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:
|
||||
|
|
|
|||
|
|
@ -931,7 +931,7 @@
|
|||
(SHA1Message2Uint32x4 ...) => (SHA1MSG2128 ...)
|
||||
(SHA1NextEUint32x4 ...) => (SHA1NEXTE128 ...)
|
||||
(SHA256Message1Uint32x4 ...) => (SHA256MSG1128 ...)
|
||||
(SHA256Message2Uint32x4 ...) => (SHA256MSG1128 ...)
|
||||
(SHA256Message2Uint32x4 ...) => (SHA256MSG2128 ...)
|
||||
(SHA256TwoRoundsUint32x4 ...) => (SHA256RNDS2128 ...)
|
||||
(ScaleFloat32x4 ...) => (VSCALEFPS128 ...)
|
||||
(ScaleFloat32x8 ...) => (VSCALEFPS256 ...)
|
||||
|
|
|
|||
|
|
@ -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},
|
||||
|
|
|
|||
|
|
@ -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,
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -93,6 +93,6 @@
|
|||
in: *2uint
|
||||
out: *1uint
|
||||
- go: SHA256Message2
|
||||
asm: SHA256MSG1
|
||||
asm: SHA256MSG2
|
||||
in: *2uint
|
||||
out: *1uint
|
||||
out: *1uint
|
||||
|
|
|
|||
|
|
@ -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 */
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue