From 31b664d40b823259fc96253b7e6e4a0aba093dca Mon Sep 17 00:00:00 2001 From: David Chase Date: Thu, 11 Sep 2025 06:51:20 -0400 Subject: [PATCH] [dev.simd] cmd/compile: widen index for simd intrinsics jumptable Feeding an unconverted uint8 to the jumptable can cause problems either in constant propagation or later at runtime, depending on details of the input code. Change-Id: I5fa2299a77a73172349a165f773cf9d1198212bc Reviewed-on: https://go-review.googlesource.com/c/go/+/702755 LUCI-TryBot-Result: Go LUCI Reviewed-by: Junyang Shao --- src/cmd/compile/internal/ssagen/intrinsics.go | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/src/cmd/compile/internal/ssagen/intrinsics.go b/src/cmd/compile/internal/ssagen/intrinsics.go index 95da078bba..ce9a76f6b8 100644 --- a/src/cmd/compile/internal/ssagen/intrinsics.go +++ b/src/cmd/compile/internal/ssagen/intrinsics.go @@ -1697,11 +1697,13 @@ func immJumpTable(s *state, idx *ssa.Value, intrinsicCall *ir.CallExpr, genOp fu // Make blocks we'll need. bEnd := s.f.NewBlock(ssa.BlockPlain) - t := types.Types[types.TUINT8] if !idx.Type.IsKind(types.TUINT8) { panic("immJumpTable expects uint8 value") } + // We will exhaust 0-255, so no need to check the bounds. + t := types.Types[types.TUINTPTR] + idx = s.conv(nil, idx, idx.Type, t) b := s.curBlock b.Kind = ssa.BlockJumpTable -- 2.52.0