[go/dev.simd] [dev.simd] simdgen: add ImmMax to limit immediate jump table size

12 views
Skip to first unread message

Alexander Musman (Gerrit)

unread,
Mar 8, 2026, 7:37:27 AMMar 8
to goph...@pubsubhelper.golang.org, golang-co...@googlegroups.com

Alexander Musman has uploaded the change for review

Commit message

[dev.simd] simdgen: add ImmMax to limit immediate jump table size

Add ImmMax field to specify maximum immediate value for operations
with bounded indices (e.g., arm64 vector element access). This limits
jump table generation to the actual valid range instead of always
0-255.

Updates immJumpTable and adds opLen1Imm/opLen2Imm/opLen3Imm
variants that accept immMax parameter.
Change-Id: I8c95b3862da28d3cfe8de31bb6d25d731a5bb926

Change diff

diff --git a/src/cmd/compile/internal/ssagen/intrinsics.go b/src/cmd/compile/internal/ssagen/intrinsics.go
index f42d98d..770c98d 100644
--- a/src/cmd/compile/internal/ssagen/intrinsics.go
+++ b/src/cmd/compile/internal/ssagen/intrinsics.go
@@ -1942,7 +1942,7 @@
}
}

-func immJumpTable(s *state, idx *ssa.Value, intrinsicCall *ir.CallExpr, genOp func(*state, int)) *ssa.Value {
+func immJumpTable(s *state, idx *ssa.Value, intrinsicCall *ir.CallExpr, immMax int, genOp func(*state, int)) *ssa.Value {
// Make blocks we'll need.
bEnd := s.f.NewBlock(ssa.BlockPlain)

@@ -1950,20 +1950,49 @@
panic("immJumpTable expects uint8 value")
}

- // We will exhaust 0-255, so no need to check the bounds.
+ if immMax > 255 {
+ panic("immJumpTable expects immMax <= 255")
+ }
+
t := types.Types[types.TUINTPTR]
idx = s.conv(nil, idx, idx.Type, t)

- b := s.curBlock
- b.Kind = ssa.BlockJumpTable
- b.Pos = intrinsicCall.Pos()
+ var b *ssa.Block
+ // If immMax < 255, add bounds check before jump table.
+ if immMax < 255 {
+ // Check idx <= immMax
+ cmp := s.newValue2(s.ssaOp(ir.OLE, t), types.Types[types.TBOOL], idx, s.uintptrConstant(uint64(immMax)))
+ b = s.endBlock()
+ b.Kind = ssa.BlockIf
+ b.SetControl(cmp)
+ jt := s.f.NewBlock(ssa.BlockJumpTable)
+ panicBlock := s.f.NewBlock(ssa.BlockExit)
+ b.AddEdgeTo(jt)
+ b.AddEdgeTo(panicBlock)
+ b.Likely = ssa.BranchLikely
+
+ // Panic block for out-of-bounds index
+ s.startBlock(panicBlock)
+ s.rtcall(ir.Syms.PanicSimdImm, false, nil)
+ s.endBlock()
+
+ s.startBlock(jt)
+ b = s.curBlock
+ b.Pos = intrinsicCall.Pos()
+ } else {
+ // We will exhaust 0-255, so no need to check the bounds.
+ b = s.curBlock
+ b.Kind = ssa.BlockJumpTable
+ b.Pos = intrinsicCall.Pos()
+ }
+
if base.Flag.Cfg.SpectreIndex {
// Potential Spectre vulnerability hardening?
- idx = s.newValue2(ssa.OpSpectreSliceIndex, t, idx, s.uintptrConstant(255))
+ idx = s.newValue2(ssa.OpSpectreSliceIndex, t, idx, s.uintptrConstant(uint64(immMax)))
}
b.SetControl(idx)
targets := [256]*ssa.Block{}
- for i := range 256 {
+ for i := range immMax + 1 {
t := s.f.NewBlock(ssa.BlockPlain)
targets[i] = t
b.AddEdgeTo(t)
@@ -1971,11 +2000,12 @@
s.endBlock()

for i, t := range targets {
+ if i > immMax {
+ break
+ }
s.startBlock(t)
genOp(s, i)
- if t.Kind != ssa.BlockExit {
- t.AddEdgeTo(bEnd)
- }
+ t.AddEdgeTo(bEnd)
s.endBlock()
}

@@ -1984,48 +2014,60 @@
return ret
}

-func opLen1Imm8(op ssa.Op, t *types.Type, offset int) func(s *state, n *ir.CallExpr, args []*ssa.Value) *ssa.Value {
+func opLen1Imm(op ssa.Op, t *types.Type, offset int, immMax int) func(s *state, n *ir.CallExpr, args []*ssa.Value) *ssa.Value {
return func(s *state, n *ir.CallExpr, args []*ssa.Value) *ssa.Value {
if args[1].Op == ssa.OpConst8 {
return s.newValue1I(op, t, args[1].AuxInt<<int64(offset), args[0])
}
- return immJumpTable(s, args[1], n, func(sNew *state, idx int) {
+ return immJumpTable(s, args[1], n, immMax, func(sNew *state, idx int) {
// Encode as int8 due to requirement of AuxInt, check its comment for details.
s.vars[n] = sNew.newValue1I(op, t, int64(int8(idx<<offset)), args[0])
})
}
}

-func opLen2Imm8(op ssa.Op, t *types.Type, offset int) func(s *state, n *ir.CallExpr, args []*ssa.Value) *ssa.Value {
+func opLen1Imm8(op ssa.Op, t *types.Type, offset int) func(s *state, n *ir.CallExpr, args []*ssa.Value) *ssa.Value {
+ return opLen1Imm(op, t, offset, 255)
+}
+
+func opLen2Imm(op ssa.Op, t *types.Type, offset int, immMax int) func(s *state, n *ir.CallExpr, args []*ssa.Value) *ssa.Value {
return func(s *state, n *ir.CallExpr, args []*ssa.Value) *ssa.Value {
if args[1].Op == ssa.OpConst8 {
return s.newValue2I(op, t, args[1].AuxInt<<int64(offset), args[0], args[2])
}
- return immJumpTable(s, args[1], n, func(sNew *state, idx int) {
+ return immJumpTable(s, args[1], n, immMax, func(sNew *state, idx int) {
// Encode as int8 due to requirement of AuxInt, check its comment for details.
s.vars[n] = sNew.newValue2I(op, t, int64(int8(idx<<offset)), args[0], args[2])
})
}
}

-func opLen3Imm8(op ssa.Op, t *types.Type, offset int) func(s *state, n *ir.CallExpr, args []*ssa.Value) *ssa.Value {
+func opLen2Imm8(op ssa.Op, t *types.Type, offset int) func(s *state, n *ir.CallExpr, args []*ssa.Value) *ssa.Value {
+ return opLen2Imm(op, t, offset, 255)
+}
+
+func opLen3Imm(op ssa.Op, t *types.Type, offset int, immMax int) func(s *state, n *ir.CallExpr, args []*ssa.Value) *ssa.Value {
return func(s *state, n *ir.CallExpr, args []*ssa.Value) *ssa.Value {
if args[1].Op == ssa.OpConst8 {
return s.newValue3I(op, t, args[1].AuxInt<<int64(offset), args[0], args[2], args[3])
}
- return immJumpTable(s, args[1], n, func(sNew *state, idx int) {
+ return immJumpTable(s, args[1], n, immMax, func(sNew *state, idx int) {
// Encode as int8 due to requirement of AuxInt, check its comment for details.
s.vars[n] = sNew.newValue3I(op, t, int64(int8(idx<<offset)), args[0], args[2], args[3])
})
}
}

+func opLen3Imm8(op ssa.Op, t *types.Type, offset int) func(s *state, n *ir.CallExpr, args []*ssa.Value) *ssa.Value {
+ return opLen3Imm(op, t, offset, 255)
+}
+
func opLen2Imm8_2I(op ssa.Op, t *types.Type, offset int) func(s *state, n *ir.CallExpr, args []*ssa.Value) *ssa.Value {
return func(s *state, n *ir.CallExpr, args []*ssa.Value) *ssa.Value {
if args[2].Op == ssa.OpConst8 {
return s.newValue2I(op, t, args[2].AuxInt<<int64(offset), args[0], args[1])
}
- return immJumpTable(s, args[2], n, func(sNew *state, idx int) {
+ return immJumpTable(s, args[2], n, 255, func(sNew *state, idx int) {
// Encode as int8 due to requirement of AuxInt, check its comment for details.
s.vars[n] = sNew.newValue2I(op, t, int64(int8(idx<<offset)), args[0], args[1])
})
@@ -2042,7 +2084,7 @@
four := s.constInt64(types.Types[types.TUINT8], 4)
shifted := s.newValue2(ssa.OpLsh8x8, types.Types[types.TUINT8], args[2], four)
combined := s.newValue2(ssa.OpAdd8, types.Types[types.TUINT8], args[1], shifted)
- return immJumpTable(s, combined, n, func(sNew *state, idx int) {
+ return immJumpTable(s, combined, n, 255, func(sNew *state, idx int) {
// Encode as int8 due to requirement of AuxInt, check its comment for details.
// TODO for "zeroing" values, panic instead.
if idx & ^(3+3<<4) == 0 {
@@ -2060,7 +2102,7 @@
if args[1].Op == ssa.OpConst8 {
return s.newValue2I(op, t, (args[1].AuxInt<<int64(offset))&0b11, args[0], args[2])
}
- return immJumpTable(s, args[1], n, func(sNew *state, idx int) {
+ return immJumpTable(s, args[1], n, 255, func(sNew *state, idx int) {
// Encode as int8 due to requirement of AuxInt, check its comment for details.
s.vars[n] = sNew.newValue2I(op, t, int64(int8(idx<<offset))&0b11, args[0], args[2])
})
@@ -2072,7 +2114,7 @@
if args[2].Op == ssa.OpConst8 {
return s.newValue3I(op, t, args[2].AuxInt<<int64(offset), args[0], args[1], args[3])
}
- return immJumpTable(s, args[2], n, func(sNew *state, idx int) {
+ return immJumpTable(s, args[2], n, 255, func(sNew *state, idx int) {
// Encode as int8 due to requirement of AuxInt, check its comment for details.
s.vars[n] = sNew.newValue3I(op, t, int64(int8(idx<<offset)), args[0], args[1], args[3])
})
@@ -2084,7 +2126,7 @@
if args[1].Op == ssa.OpConst8 {
return s.newValue4I(op, t, args[1].AuxInt<<int64(offset), args[0], args[2], args[3], args[4])
}
- return immJumpTable(s, args[1], n, func(sNew *state, idx int) {
+ return immJumpTable(s, args[1], n, 255, func(sNew *state, idx int) {
// Encode as int8 due to requirement of AuxInt, check its comment for details.
s.vars[n] = sNew.newValue4I(op, t, int64(int8(idx<<offset)), args[0], args[2], args[3], args[4])
})
diff --git a/src/simd/archsimd/_gen/simdgen/gen_simdGenericOps.go b/src/simd/archsimd/_gen/simdgen/gen_simdGenericOps.go
index 97a1b48..03cfecb 100644
--- a/src/simd/archsimd/_gen/simdgen/gen_simdGenericOps.go
+++ b/src/simd/archsimd/_gen/simdgen/gen_simdGenericOps.go
@@ -51,7 +51,7 @@
}
_, _, _, immType, gOp := op.shape()
gOpData := genericOpsData{gOp.GenericName(), len(gOp.In), op.Commutative}
- if immType == VarImm || immType == ConstVarImm {
+ if immType == VarImm || immType == VarImmLim || immType == ConstVarImm {
opsData.OpsImm = append(opsData.OpsImm, gOpData)
} else {
opsData.Ops = append(opsData.Ops, gOpData)
diff --git a/src/simd/archsimd/_gen/simdgen/gen_simdIntrinsics.go b/src/simd/archsimd/_gen/simdgen/gen_simdIntrinsics.go
index 4e0ce87..d1a9f83 100644
--- a/src/simd/archsimd/_gen/simdgen/gen_simdIntrinsics.go
+++ b/src/simd/archsimd/_gen/simdgen/gen_simdIntrinsics.go
@@ -49,8 +49,12 @@
{{end}}
{{define "op4_31"}} addF(simdPackage, "{{(index .In 2).Go}}.{{.Go}}", opLen4_31(ssa.Op{{.GenericName}}, {{.SSAType}}), {{GetSysArch}})
{{end}}
+{{define "op1Imm"}} addF(simdPackage, "{{(index .In 1).Go}}.{{.Go}}", opLen1Imm(ssa.Op{{.GenericName}}, {{.SSAType}}, {{(index .In 0).ImmOffset}}, {{(index .In 0).ImmMax}}), {{GetSysArch}})
+{{end}}
{{define "op1Imm8"}} addF(simdPackage, "{{(index .In 1).Go}}.{{.Go}}", opLen1Imm8(ssa.Op{{.GenericName}}, {{.SSAType}}, {{(index .In 0).ImmOffset}}), {{GetSysArch}})
{{end}}
+{{define "op2Imm"}} addF(simdPackage, "{{(index .In 1).Go}}.{{.Go}}", opLen2Imm(ssa.Op{{.GenericName}}, {{.SSAType}}, {{(index .In 0).ImmOffset}}, {{(index .In 0).ImmMax}}), {{GetSysArch}})
+{{end}}
{{define "op2Imm8"}} addF(simdPackage, "{{(index .In 1).Go}}.{{.Go}}", opLen2Imm8(ssa.Op{{.GenericName}}, {{.SSAType}}, {{(index .In 0).ImmOffset}}), {{GetSysArch}})
{{end}}
{{define "op2Imm8_2I"}} addF(simdPackage, "{{(index .In 1).Go}}.{{.Go}}", opLen2Imm8_2I(ssa.Op{{.GenericName}}, {{.SSAType}}, {{(index .In 0).ImmOffset}}), {{GetSysArch}})
diff --git a/src/simd/archsimd/_gen/simdgen/gen_simdTypes.go b/src/simd/archsimd/_gen/simdgen/gen_simdTypes.go
index 30723a2..fa6cf3b 100644
--- a/src/simd/archsimd/_gen/simdgen/gen_simdTypes.go
+++ b/src/simd/archsimd/_gen/simdgen/gen_simdTypes.go
@@ -377,6 +377,8 @@
func ({{.Op1NameAndType "x"}}) {{.Go}}({{.ImmName}} uint8) {{.GoType}}
{{end}}

+{{define "op1Imm"}}{{template "op1Imm8" .}}{{end}}
+
{{define "op2Imm8"}}
{{if .Documentation}}{{.Documentation}}
//{{end}}
@@ -386,6 +388,8 @@
func ({{.Op1NameAndType "x"}}) {{.Go}}({{.ImmName}} uint8, {{.Op2NameAndType "y"}}) {{.GoType}}
{{end}}

+{{define "op2Imm"}}{{template "op2Imm8" .}}{{end}}
+
{{define "op2Imm8_2I"}}
{{if .Documentation}}{{.Documentation}}
//{{end}}
diff --git a/src/simd/archsimd/_gen/simdgen/gen_utility.go b/src/simd/archsimd/_gen/simdgen/gen_utility.go
index 60d5900..3972c84 100644
--- a/src/simd/archsimd/_gen/simdgen/gen_utility.go
+++ b/src/simd/archsimd/_gen/simdgen/gen_utility.go
@@ -112,6 +112,7 @@
ConstImm // const only immediate
VarImm // pure imm argument provided by the users
ConstVarImm // a combination of user arg and const
+ VarImmLim // pure imm argument provided by the users, up to maximum in op.ImmMax
)

const (
@@ -187,7 +188,11 @@
immType = ConstImm
}
} else if op.In[0].ImmOffset != nil {
- immType = VarImm
+ if op.In[0].ImmMax != nil {
+ immType = VarImmLim
+ } else {
+ immType = VarImm
+ }
} else {
panic(fmt.Errorf("simdgen requires imm to have at least one of ImmOffset or Const set: %s", op))
}
@@ -481,7 +486,7 @@
return op.In[4].OpNameAndType(s)
}

-var immClasses []string = []string{"BAD0Imm", "BAD1Imm", "op1Imm8", "op2Imm8", "op3Imm8", "op4Imm8"}
+var immClasses []string = []string{"BAD0Imm", "BAD1Imm", "op1Imm", "op2Imm", "op3Imm", "op4Imm"}
var classes []string = []string{"BAD0", "op1", "op2", "op3", "op4"}

// classifyOp returns a classification string, modified operation, and perhaps error based
@@ -495,12 +500,20 @@

var class string

- if immType == VarImm || immType == ConstVarImm {
+ if immType == VarImm || immType == VarImmLim || immType == ConstVarImm {
switch l := len(op.In); l {
case 1:
return "", op, fmt.Errorf("simdgen does not recognize this operation of only immediate input: %s", op)
case 2, 3, 4, 5:
- class = immClasses[l]
+ if immType == VarImmLim {
+ if len(op.In)-len(gOp.In) == 2 {
+ class = immClasses[l-1] // arm64: do not account const 0 imm in INS Vn[0], Vd[imm]
+ } else {
+ class = immClasses[l] // known immediate maximum value
+ }
+ } else {
+ class = immClasses[l] + "8" // default: imm up to 256
+ }
default:
return "", op, fmt.Errorf("simdgen does not recognize this operation of input length %d: %s", len(op.In), op)
}
diff --git a/src/simd/archsimd/_gen/simdgen/godefs.go b/src/simd/archsimd/_gen/simdgen/godefs.go
index 1f10442..670966a 100644
--- a/src/simd/archsimd/_gen/simdgen/godefs.go
+++ b/src/simd/archsimd/_gen/simdgen/godefs.go
@@ -302,6 +302,7 @@
// The compiler will right-shift the user-passed value by ImmOffset and set it as the AuxInt
// field of the operation.
ImmOffset *string
+ ImmMax *int // optional maximum immediate, also highest case in immediate jump table
Name *string // optional name in the Go intrinsic declaration
Lanes *int // *Lanes equals Bits/ElemBits except for scalars, when *Lanes == 1
// TreatLikeAScalarOfSize means only the lower $TreatLikeAScalarOfSize bits of the vector

Change information

Files:
  • M src/cmd/compile/internal/ssagen/intrinsics.go
  • M src/simd/archsimd/_gen/simdgen/gen_simdGenericOps.go
  • M src/simd/archsimd/_gen/simdgen/gen_simdIntrinsics.go
  • M src/simd/archsimd/_gen/simdgen/gen_simdTypes.go
  • M src/simd/archsimd/_gen/simdgen/gen_utility.go
  • M src/simd/archsimd/_gen/simdgen/godefs.go
Change size: M
Delta: 6 files changed, 90 insertions(+), 26 deletions(-)
Open in Gerrit

Related details

Attention set is empty
Submit Requirements:
  • requirement is not satisfiedCode-Review
  • requirement satisfiedNo-Unresolved-Comments
  • requirement is not satisfiedReview-Enforcement
  • requirement is not satisfiedTryBots-Pass
Inspect html for hidden footers to help with email filtering. To unsubscribe visit settings. DiffyGerrit
Gerrit-MessageType: newchange
Gerrit-Project: go
Gerrit-Branch: dev.simd
Gerrit-Change-Id: I8c95b3862da28d3cfe8de31bb6d25d731a5bb926
Gerrit-Change-Number: 752801
Gerrit-PatchSet: 1
Gerrit-Owner: Alexander Musman <alexande...@gmail.com>
unsatisfied_requirement
satisfied_requirement
open
diffy

Alexander Musman (Gerrit)

unread,
Mar 10, 2026, 7:54:21 AMMar 10
to goph...@pubsubhelper.golang.org, David Chase, Junyang Shao, golang-co...@googlegroups.com
Attention needed from David Chase and Junyang Shao

Alexander Musman added 1 comment

Patchset-level comments
File-level comment, Patchset 1 (Latest):
Alexander Musman . resolved

This change is independent of the rest changes ( except that name `immMax` should be same as the one used by xml specifications parser, CL 739100 ). I think it's ready for review as well.

Open in Gerrit

Related details

Attention is currently required from:
  • David Chase
  • Junyang Shao
Submit Requirements:
  • requirement is not satisfiedCode-Review
  • requirement satisfiedNo-Unresolved-Comments
  • requirement is not satisfiedReview-Enforcement
  • requirement is not satisfiedTryBots-Pass
Inspect html for hidden footers to help with email filtering. To unsubscribe visit settings. DiffyGerrit
Gerrit-MessageType: comment
Gerrit-Project: go
Gerrit-Branch: dev.simd
Gerrit-Change-Id: I8c95b3862da28d3cfe8de31bb6d25d731a5bb926
Gerrit-Change-Number: 752801
Gerrit-PatchSet: 1
Gerrit-Owner: Alexander Musman <alexande...@gmail.com>
Gerrit-Reviewer: David Chase <drc...@google.com>
Gerrit-Reviewer: Junyang Shao <shaoj...@google.com>
Gerrit-Attention: David Chase <drc...@google.com>
Gerrit-Attention: Junyang Shao <shaoj...@google.com>
Gerrit-Comment-Date: Tue, 10 Mar 2026 11:54:13 +0000
Gerrit-HasComments: Yes
Gerrit-Has-Labels: No
unsatisfied_requirement
satisfied_requirement
open
diffy

David Chase (Gerrit)

unread,
Apr 25, 2026, 8:54:22 PMApr 25
to Alexander Musman, goph...@pubsubhelper.golang.org, Junyang Shao, golang-co...@googlegroups.com
Attention needed from Alexander Musman and Junyang Shao

David Chase voted and added 1 comment

Votes added by David Chase

Commit-Queue+1

1 comment

Patchset-level comments
File-level comment, Patchset 4 (Latest):
David Chase . resolved

I think this one has a problem with the AMD64 simdtests, or it did, working with a rebased patch series (I think).

Open in Gerrit

Related details

Attention is currently required from:
  • Alexander Musman
  • Junyang Shao
Submit Requirements:
  • requirement is not satisfiedCode-Review
  • requirement satisfiedNo-Unresolved-Comments
  • requirement is not satisfiedReview-Enforcement
  • requirement is not satisfiedTryBots-Pass
Inspect html for hidden footers to help with email filtering. To unsubscribe visit settings. DiffyGerrit
Gerrit-MessageType: comment
Gerrit-Project: go
Gerrit-Branch: dev.simd
Gerrit-Change-Id: I8c95b3862da28d3cfe8de31bb6d25d731a5bb926
Gerrit-Change-Number: 752801
Gerrit-PatchSet: 4
Gerrit-Owner: Alexander Musman <alexande...@gmail.com>
Gerrit-Reviewer: David Chase <drc...@google.com>
Gerrit-Reviewer: Junyang Shao <shaoj...@google.com>
Gerrit-Attention: Alexander Musman <alexande...@gmail.com>
Gerrit-Attention: Junyang Shao <shaoj...@google.com>
Gerrit-Comment-Date: Sun, 26 Apr 2026 00:54:19 +0000
Gerrit-HasComments: Yes
Gerrit-Has-Labels: Yes
unsatisfied_requirement
satisfied_requirement
open
diffy

Alexander Musman (Gerrit)

unread,
Apr 26, 2026, 12:24:50 PMApr 26
to goph...@pubsubhelper.golang.org, golang-co...@googlegroups.com
Attention needed from Alexander Musman, David Chase and Junyang Shao

Alexander Musman uploaded new patchset

Alexander Musman uploaded patch set #5 to this change.
Following approvals got outdated and were removed:
Open in Gerrit

Related details

Attention is currently required from:
  • Alexander Musman
  • David Chase
  • Junyang Shao
Submit Requirements:
  • requirement is not satisfiedCode-Review
  • requirement satisfiedNo-Unresolved-Comments
  • requirement is not satisfiedReview-Enforcement
  • requirement is not satisfiedTryBots-Pass
Inspect html for hidden footers to help with email filtering. To unsubscribe visit settings. DiffyGerrit
Gerrit-MessageType: newpatchset
Gerrit-Project: go
Gerrit-Branch: dev.simd
Gerrit-Change-Id: I8c95b3862da28d3cfe8de31bb6d25d731a5bb926
Gerrit-Change-Number: 752801
Gerrit-PatchSet: 5
Gerrit-Owner: Alexander Musman <alexande...@gmail.com>
Gerrit-Reviewer: David Chase <drc...@google.com>
Gerrit-Reviewer: Junyang Shao <shaoj...@google.com>
unsatisfied_requirement
satisfied_requirement
open
diffy

Alexander Musman (Gerrit)

unread,
Apr 26, 2026, 12:25:43 PMApr 26
to goph...@pubsubhelper.golang.org, golang...@luci-project-accounts.iam.gserviceaccount.com, David Chase, Junyang Shao, golang-co...@googlegroups.com
Attention needed from David Chase and Junyang Shao

Alexander Musman voted Commit-Queue+1

Commit-Queue+1
Open in Gerrit

Related details

Attention is currently required from:
  • David Chase
  • Junyang Shao
Submit Requirements:
  • requirement is not satisfiedCode-Review
  • requirement satisfiedNo-Unresolved-Comments
  • requirement is not satisfiedReview-Enforcement
  • requirement is not satisfiedTryBots-Pass
Inspect html for hidden footers to help with email filtering. To unsubscribe visit settings. DiffyGerrit
Gerrit-MessageType: comment
Gerrit-Project: go
Gerrit-Branch: dev.simd
Gerrit-Change-Id: I8c95b3862da28d3cfe8de31bb6d25d731a5bb926
Gerrit-Change-Number: 752801
Gerrit-PatchSet: 5
Gerrit-Owner: Alexander Musman <alexande...@gmail.com>
Gerrit-Reviewer: Alexander Musman <alexande...@gmail.com>
Gerrit-Reviewer: David Chase <drc...@google.com>
Gerrit-Reviewer: Junyang Shao <shaoj...@google.com>
Gerrit-Attention: David Chase <drc...@google.com>
Gerrit-Attention: Junyang Shao <shaoj...@google.com>
Gerrit-Comment-Date: Sun, 26 Apr 2026 16:25:37 +0000
Gerrit-HasComments: No
Gerrit-Has-Labels: Yes
unsatisfied_requirement
satisfied_requirement
open
diffy

David Chase (Gerrit)

unread,
Apr 29, 2026, 3:20:02 PMApr 29
to Alexander Musman, goph...@pubsubhelper.golang.org, golang...@luci-project-accounts.iam.gserviceaccount.com, Junyang Shao, golang-co...@googlegroups.com
Attention needed from Alexander Musman and Junyang Shao

David Chase voted and added 1 comment

Votes added by David Chase

Code-Review+2

1 comment

File src/simd/archsimd/_gen/simdgen/gen_utility.go
Line 515, Patchset 5 (Latest): class = immClasses[l] + "8" // default: imm up to 256
David Chase . unresolved

This looks completely magic. How is this supposed to work?
Aaaah, "Imm" -> "Imm8". There should be a comment.

Open in Gerrit

Related details

Attention is currently required from:
  • Alexander Musman
  • Junyang Shao
Submit Requirements:
  • requirement satisfiedCode-Review
  • requirement is not satisfiedNo-Unresolved-Comments
  • requirement is not satisfiedReview-Enforcement
  • requirement satisfiedTryBots-Pass
Inspect html for hidden footers to help with email filtering. To unsubscribe visit settings. DiffyGerrit
Gerrit-MessageType: comment
Gerrit-Project: go
Gerrit-Branch: dev.simd
Gerrit-Change-Id: I8c95b3862da28d3cfe8de31bb6d25d731a5bb926
Gerrit-Change-Number: 752801
Gerrit-PatchSet: 5
Gerrit-Owner: Alexander Musman <alexande...@gmail.com>
Gerrit-Reviewer: Alexander Musman <alexande...@gmail.com>
Gerrit-Reviewer: David Chase <drc...@google.com>
Gerrit-Reviewer: Junyang Shao <shaoj...@google.com>
Gerrit-Attention: Alexander Musman <alexande...@gmail.com>
Gerrit-Attention: Junyang Shao <shaoj...@google.com>
Gerrit-Comment-Date: Wed, 29 Apr 2026 19:19:58 +0000
Gerrit-HasComments: Yes
Gerrit-Has-Labels: Yes
satisfied_requirement
unsatisfied_requirement
open
diffy

Alexander Musman (Gerrit)

unread,
May 2, 2026, 4:56:23 AMMay 2
to goph...@pubsubhelper.golang.org, golang-co...@googlegroups.com
Attention needed from Alexander Musman, David Chase and Junyang Shao

Alexander Musman uploaded new patchset

Alexander Musman uploaded patch set #6 to this change.
Following approvals got outdated and were removed:
Open in Gerrit

Related details

Attention is currently required from:
  • Alexander Musman
  • David Chase
  • Junyang Shao
Submit Requirements:
  • requirement is not satisfiedCode-Review
  • requirement is not satisfiedNo-Unresolved-Comments
  • requirement is not satisfiedReview-Enforcement
  • requirement is not satisfiedTryBots-Pass
Inspect html for hidden footers to help with email filtering. To unsubscribe visit settings. DiffyGerrit
Gerrit-MessageType: newpatchset
Gerrit-Project: go
Gerrit-Branch: dev.simd
Gerrit-Change-Id: I8c95b3862da28d3cfe8de31bb6d25d731a5bb926
Gerrit-Change-Number: 752801
Gerrit-PatchSet: 6
Gerrit-Owner: Alexander Musman <alexande...@gmail.com>
Gerrit-Reviewer: Alexander Musman <alexande...@gmail.com>
Gerrit-Reviewer: David Chase <drc...@google.com>
Gerrit-Reviewer: Junyang Shao <shaoj...@google.com>
Gerrit-Attention: David Chase <drc...@google.com>
unsatisfied_requirement
open
diffy

Alexander Musman (Gerrit)

unread,
May 2, 2026, 4:58:32 AMMay 2
to goph...@pubsubhelper.golang.org, David Chase, golang...@luci-project-accounts.iam.gserviceaccount.com, Junyang Shao, golang-co...@googlegroups.com
Attention needed from David Chase and Junyang Shao

Alexander Musman added 1 comment

File src/simd/archsimd/_gen/simdgen/gen_utility.go
Line 515, Patchset 5: class = immClasses[l] + "8" // default: imm up to 256
David Chase . resolved

This looks completely magic. How is this supposed to work?
Aaaah, "Imm" -> "Imm8". There should be a comment.

Alexander Musman

Done

Open in Gerrit

Related details

Attention is currently required from:
  • David Chase
  • Junyang Shao
Submit Requirements:
    • requirement is not satisfiedCode-Review
    • requirement satisfiedNo-Unresolved-Comments
    • requirement is not satisfiedReview-Enforcement
    • requirement is not satisfiedTryBots-Pass
    Inspect html for hidden footers to help with email filtering. To unsubscribe visit settings. DiffyGerrit
    Gerrit-MessageType: comment
    Gerrit-Project: go
    Gerrit-Branch: dev.simd
    Gerrit-Change-Id: I8c95b3862da28d3cfe8de31bb6d25d731a5bb926
    Gerrit-Change-Number: 752801
    Gerrit-PatchSet: 6
    Gerrit-Owner: Alexander Musman <alexande...@gmail.com>
    Gerrit-Reviewer: Alexander Musman <alexande...@gmail.com>
    Gerrit-Reviewer: David Chase <drc...@google.com>
    Gerrit-Reviewer: Junyang Shao <shaoj...@google.com>
    Gerrit-Attention: David Chase <drc...@google.com>
    Gerrit-Attention: Junyang Shao <shaoj...@google.com>
    Gerrit-Comment-Date: Sat, 02 May 2026 08:58:25 +0000
    Gerrit-HasComments: Yes
    Gerrit-Has-Labels: No
    Comment-In-Reply-To: David Chase <drc...@google.com>
    unsatisfied_requirement
    satisfied_requirement
    open
    diffy

    David Chase (Gerrit)

    unread,
    May 4, 2026, 11:47:47 AMMay 4
    to Alexander Musman, goph...@pubsubhelper.golang.org, golang...@luci-project-accounts.iam.gserviceaccount.com, Junyang Shao, golang-co...@googlegroups.com
    Attention needed from Alexander Musman and Junyang Shao

    David Chase voted Commit-Queue+1

    Commit-Queue+1
    Open in Gerrit

    Related details

    Attention is currently required from:
    • Alexander Musman
    • Junyang Shao
    Submit Requirements:
    • requirement is not satisfiedCode-Review
    • requirement satisfiedNo-Unresolved-Comments
    • requirement is not satisfiedReview-Enforcement
    • requirement is not satisfiedTryBots-Pass
    Inspect html for hidden footers to help with email filtering. To unsubscribe visit settings. DiffyGerrit
    Gerrit-MessageType: comment
    Gerrit-Project: go
    Gerrit-Branch: dev.simd
    Gerrit-Change-Id: I8c95b3862da28d3cfe8de31bb6d25d731a5bb926
    Gerrit-Change-Number: 752801
    Gerrit-PatchSet: 7
    Gerrit-Owner: Alexander Musman <alexande...@gmail.com>
    Gerrit-Reviewer: Alexander Musman <alexande...@gmail.com>
    Gerrit-Reviewer: David Chase <drc...@google.com>
    Gerrit-Reviewer: Junyang Shao <shaoj...@google.com>
    Gerrit-Attention: Alexander Musman <alexande...@gmail.com>
    Gerrit-Attention: Junyang Shao <shaoj...@google.com>
    Gerrit-Comment-Date: Mon, 04 May 2026 15:47:42 +0000
    Gerrit-HasComments: No
    Gerrit-Has-Labels: Yes
    unsatisfied_requirement
    satisfied_requirement
    open
    diffy

    Alexander Musman (Gerrit)

    unread,
    May 9, 2026, 3:44:15 AM (10 days ago) May 9
    to goph...@pubsubhelper.golang.org, golang...@luci-project-accounts.iam.gserviceaccount.com, David Chase, Junyang Shao, golang-co...@googlegroups.com
    Attention needed from Junyang Shao

    Alexander Musman voted Commit-Queue+1

    Commit-Queue+1
    Open in Gerrit

    Related details

    Attention is currently required from:
    • Junyang Shao
    Submit Requirements:
    • requirement is not satisfiedCode-Review
    • requirement satisfiedNo-Unresolved-Comments
    • requirement is not satisfiedReview-Enforcement
    • requirement is not satisfiedTryBots-Pass
    Inspect html for hidden footers to help with email filtering. To unsubscribe visit settings. DiffyGerrit
    Gerrit-MessageType: comment
    Gerrit-Project: go
    Gerrit-Branch: dev.simd
    Gerrit-Change-Id: I8c95b3862da28d3cfe8de31bb6d25d731a5bb926
    Gerrit-Change-Number: 752801
    Gerrit-PatchSet: 10
    Gerrit-Owner: Alexander Musman <alexande...@gmail.com>
    Gerrit-Reviewer: Alexander Musman <alexande...@gmail.com>
    Gerrit-Reviewer: David Chase <drc...@google.com>
    Gerrit-Reviewer: Junyang Shao <shaoj...@google.com>
    Gerrit-Attention: Junyang Shao <shaoj...@google.com>
    Gerrit-Comment-Date: Sat, 09 May 2026 07:44:08 +0000
    Gerrit-HasComments: No
    Gerrit-Has-Labels: Yes
    unsatisfied_requirement
    satisfied_requirement
    open
    diffy

    David Chase (Gerrit)

    unread,
    May 18, 2026, 2:26:21 PM (18 hours ago) May 18
    to Alexander Musman, goph...@pubsubhelper.golang.org, golang...@luci-project-accounts.iam.gserviceaccount.com, Junyang Shao, golang-co...@googlegroups.com
    Attention needed from Alexander Musman and Junyang Shao

    David Chase voted

    Auto-Submit+1
    Code-Review+2
    Commit-Queue+1
    Open in Gerrit

    Related details

    Attention is currently required from:
    • Alexander Musman
    • Junyang Shao
    Submit Requirements:
    • requirement satisfiedCode-Review
    • requirement satisfiedNo-Unresolved-Comments
    • requirement is not satisfiedReview-Enforcement
    • requirement is not satisfiedTryBots-Pass
    Inspect html for hidden footers to help with email filtering. To unsubscribe visit settings. DiffyGerrit
    Gerrit-MessageType: comment
    Gerrit-Project: go
    Gerrit-Branch: dev.simd
    Gerrit-Change-Id: I8c95b3862da28d3cfe8de31bb6d25d731a5bb926
    Gerrit-Change-Number: 752801
    Gerrit-PatchSet: 11
    Gerrit-Owner: Alexander Musman <alexande...@gmail.com>
    Gerrit-Reviewer: Alexander Musman <alexande...@gmail.com>
    Gerrit-Reviewer: David Chase <drc...@google.com>
    Gerrit-Reviewer: Junyang Shao <shaoj...@google.com>
    Gerrit-Attention: Alexander Musman <alexande...@gmail.com>
    Gerrit-Attention: Junyang Shao <shaoj...@google.com>
    Gerrit-Comment-Date: Mon, 18 May 2026 18:26:18 +0000
    Gerrit-HasComments: No
    Gerrit-Has-Labels: Yes
    satisfied_requirement
    unsatisfied_requirement
    open
    diffy

    Alexander Musman (Gerrit)

    unread,
    6:23 AM (2 hours ago) 6:23 AM
    to goph...@pubsubhelper.golang.org, golang...@luci-project-accounts.iam.gserviceaccount.com, David Chase, Junyang Shao, golang-co...@googlegroups.com
    Attention needed from David Chase and Junyang Shao

    Alexander Musman voted Commit-Queue+1

    Commit-Queue+1
    Open in Gerrit

    Related details

    Attention is currently required from:
    • David Chase
    • Junyang Shao
    Submit Requirements:
    • requirement satisfiedCode-Review
    • requirement satisfiedNo-Unresolved-Comments
    • requirement is not satisfiedReview-Enforcement
    • requirement is not satisfiedTryBots-Pass
    Inspect html for hidden footers to help with email filtering. To unsubscribe visit settings. DiffyGerrit
    Gerrit-MessageType: comment
    Gerrit-Project: go
    Gerrit-Branch: dev.simd
    Gerrit-Change-Id: I8c95b3862da28d3cfe8de31bb6d25d731a5bb926
    Gerrit-Change-Number: 752801
    Gerrit-PatchSet: 12
    Gerrit-Owner: Alexander Musman <alexande...@gmail.com>
    Gerrit-Reviewer: Alexander Musman <alexande...@gmail.com>
    Gerrit-Reviewer: David Chase <drc...@google.com>
    Gerrit-Reviewer: Junyang Shao <shaoj...@google.com>
    Gerrit-Attention: David Chase <drc...@google.com>
    Gerrit-Attention: Junyang Shao <shaoj...@google.com>
    Gerrit-Comment-Date: Tue, 19 May 2026 10:23:49 +0000
    Gerrit-HasComments: No
    Gerrit-Has-Labels: Yes
    satisfied_requirement
    unsatisfied_requirement
    open
    diffy
    Reply all
    Reply to author
    Forward
    0 new messages