From 7e8ceadf85d1b0fc177ef0754f779a7a87b2c2b9 Mon Sep 17 00:00:00 2001 From: Joel Sing Date: Wed, 12 Mar 2025 22:55:49 +1100 Subject: [PATCH] cmd/compile/internal/ssagen: use an alias for math/bits.Len Rather than using a specific intrinsic for math/bits.Len, use a pair of aliases instead. This requires less code and automatically adapts when platforms have a math/bits.Len32 or math/bits.Len64 intrinsic. Change-Id: I28b300172daaee26ef82a7530d9e96123663f541 Reviewed-on: https://go-review.googlesource.com/c/go/+/656995 LUCI-TryBot-Result: Go LUCI Reviewed-by: David Chase Reviewed-by: Junyang Shao Auto-Submit: Jorropo Reviewed-by: Jorropo --- src/cmd/compile/internal/ssagen/intrinsics.go | 11 +++-------- 1 file changed, 3 insertions(+), 8 deletions(-) diff --git a/src/cmd/compile/internal/ssagen/intrinsics.go b/src/cmd/compile/internal/ssagen/intrinsics.go index 7a234a5b2e..abb63a99eb 100644 --- a/src/cmd/compile/internal/ssagen/intrinsics.go +++ b/src/cmd/compile/internal/ssagen/intrinsics.go @@ -938,14 +938,9 @@ func initIntrinsics(cfg *intrinsicBuildConfig) { return s.newValue1(ssa.OpBitLen8, types.Types[types.TINT], args[0]) }, sys.AMD64, sys.ARM, sys.ARM64, sys.Loong64, sys.MIPS, sys.PPC64, sys.S390X, sys.Wasm) - addF("math/bits", "Len", - func(s *state, n *ir.CallExpr, args []*ssa.Value) *ssa.Value { - if s.config.PtrSize == 4 { - return s.newValue1(ssa.OpBitLen32, types.Types[types.TINT], args[0]) - } - return s.newValue1(ssa.OpBitLen64, types.Types[types.TINT], args[0]) - }, - sys.AMD64, sys.ARM, sys.ARM64, sys.Loong64, sys.MIPS, sys.PPC64, sys.S390X, sys.Wasm) + alias("math/bits", "Len", "math/bits", "Len64", p8...) + alias("math/bits", "Len", "math/bits", "Len32", p4...) + // LeadingZeros is handled because it trivially calls Len. addF("math/bits", "Reverse64", func(s *state, n *ir.CallExpr, args []*ssa.Value) *ssa.Value { -- 2.50.0