From: Srinivas Pokala Date: Tue, 11 Nov 2025 04:52:28 +0000 (+0100) Subject: cmd/compile, internal/buildcfg: enable regABI on s390x, and add s390x X-Git-Tag: go1.26rc1~151 X-Git-Url: http://www.git.cypherpunks.su/?a=commitdiff_plain;h=89552911b383b78cd8807ec747ca5df8ba52e239;p=gostls13.git cmd/compile, internal/buildcfg: enable regABI on s390x, and add s390x in test func hasRegisterABI ``` goos: linux goarch: s390x shortname: minio pkg: github.com/minio/minio/cmd │ old │ new │ │ sec/op │ sec/op vs base │ DecodehealingTracker-128 1227.5n ± 1% 894.6n ± 1% -27.12% (p=0.000 n=10) AppendMsgResyncTargetsInfo-128 8.755n ± 0% 4.942n ± 20% -43.55% (p=0.000 n=10) DataUpdateTracker-128 2.075µ ± 1% 1.949µ ± 1% -6.10% (p=0.000 n=10) MarshalMsgdataUsageCacheInfo-128 64.32n ± 2% 50.57n ± 6% -21.37% (p=0.000 n=10) geomean 194.6n 144.5n -25.76% shortname: gonum_topo pkg: gonum.org/v1/gonum/graph/topo │ old │ new │ │ sec/op │ sec/op vs base │ TarjanSCCGnp_10_tenth-128 8.733µ ± 1% 6.953µ ± 2% -20.38% (p=0.000 n=10) TarjanSCCGnp_1000_half-128 101.60m ± 0% 72.79m ± 1% -28.36% (p=0.000 n=10) geomean 942.0µ 711.4µ -24.48% shortname: gonum_traverse pkg: gonum.org/v1/gonum/graph/traverse │ old │ new │ │ sec/op │ sec/op vs base │ WalkAllBreadthFirstGnp_10_tenth-128 3.871µ ± 2% 3.242µ ± 2% -16.25% (p=0.000 n=10) WalkAllBreadthFirstGnp_1000_tenth-128 11.879m ± 1% 9.034m ± 1% -23.95% (p=0.000 n=10) geomean 214.4µ 171.1µ -20.19% hortname: ericlagergren_decimal pkg: github.com/ericlagergren/decimal/benchmarks │ old │ new │ │ sec/op │ sec/op vs base │ Pi/foo=ericlagergren_(Go)/prec=100-128 181.6µ ± 0% 145.3µ ± 2% -20.01% (p=0.000 n=10) Pi/foo=ericlagergren_(GDA)/prec=100-128 356.4µ ± 1% 298.2µ ± 2% -16.33% (p=0.000 n=10) Pi/foo=shopspring/prec=100-128 426.5µ ± 2% 403.1µ ± 4% -5.47% (p=0.000 n=10) Pi/foo=apmckinlay/prec=100-128 4.943µ ± 0% 3.903µ ± 1% -21.03% (p=0.000 n=10) Pi/foo=go-inf/prec=100-128 132.1µ ± 4% 119.7µ ± 3% -9.37% (p=0.000 n=10) Pi/foo=float64/prec=100-128 4.210µ ± 0% 4.210µ ± 0% ~ (p=0.269 n=10) geomean 65.07µ 57.02µ -12.37% shortname: uber_tally pkg: github.com/uber-go/tally │ old │ new │ │ sec/op │ sec/op vs base │ ScopeTaggedNoCachedSubscopes-128 3.511µ ± 12% 3.067µ ± 6% -12.63% (p=0.000 n=10) HistogramAllocation-128 1.085µ ± 15% 1.011µ ± 6% -6.87% (p=0.001 n=10) geomean 1.952µ 1.760µ -9.80% shortname: uber_zap pkg: go.uber.org/zap/zapcore │ old │ new │ │ sec/op │ sec/op vs base │ BufferedWriteSyncer/write_file_with_buffer-128 119.0n ± 3% 101.7n ± 5% -14.54% (p=0.000 n=10) MultiWriteSyncer/2_discarder-128 13.320n ± 34% 9.410n ± 28% -29.35% (p=0.005 n=10) MultiWriteSyncer/4_discarder-128 10.830n ± 10% 8.883n ± 8% -17.98% (p=0.000 n=10) MultiWriteSyncer/4_discarder_with_buffer-128 119.0n ± 5% 104.1n ± 4% -12.52% (p=0.000 n=10) WriteSyncer/write_file_with_no_buffer-128 1.393µ ± 10% 1.409µ ± 7% ~ (p=1.000 n=10) ZapConsole-128 796.9n ± 14% 722.2n ± 7% -9.37% (p=0.003 n=10) JSONLogMarshalerFunc-128 1.233µ ± 5% 1.095µ ± 8% -11.20% (p=0.002 n=10) ZapJSON-128 560.7n ± 9% 547.9n ± 6% ~ (p=0.289 n=10) StandardJSON-128 628.7n ± 7% 566.2n ± 7% -9.95% (p=0.001 n=10) Sampler_Check/7_keys-128 8.068n ± 17% 8.232n ± 4% ~ (p=0.382 n=10) Sampler_Check/50_keys-128 4.064n ± 13% 3.610n ± 17% ~ (p=0.063 n=10) Sampler_Check/100_keys-128 6.559n ± 5% 6.386n ± 6% ~ (p=0.063 n=10) Sampler_CheckWithHook/7_keys-128 40.04n ± 3% 36.82n ± 6% -8.05% (p=0.000 n=10) Sampler_CheckWithHook/50_keys-128 39.48n ± 3% 36.48n ± 4% -7.61% (p=0.000 n=10) Sampler_CheckWithHook/100_keys-128 41.27n ± 5% 40.85n ± 9% ~ (p=0.353 n=10) TeeCheck-128 135.2n ± 11% 128.2n ± 10% ~ (p=0.190 n=10) geomean 77.98n 70.91n -9.07% shortname: spexs2 pkg: github.com/egonelbre/spexs2/_benchmark │ old │ new │ │ sec/op │ sec/op vs base │ Run/10k/1-128 21.58 ± 2% 19.68 ± 12% -8.84% (p=0.015 n=10) Run/10k/16-128 4.539 ± 6% 4.063 ± 7% -10.48% (p=0.000 n=10) geomean 9.898 8.941 -9.67% ``` Update #40724 Change-Id: I3c3c02e766e2f7402e385eddadbfe09361d82387 Reviewed-on: https://go-review.googlesource.com/c/go/+/719482 Reviewed-by: Vishwanatha HD Reviewed-by: Keith Randall Reviewed-by: Michael Pratt Reviewed-by: Keith Randall LUCI-TryBot-Result: Go LUCI --- diff --git a/src/cmd/compile/internal/ssa/config.go b/src/cmd/compile/internal/ssa/config.go index cb41bc5ed5..6b419e7da7 100644 --- a/src/cmd/compile/internal/ssa/config.go +++ b/src/cmd/compile/internal/ssa/config.go @@ -305,8 +305,8 @@ func NewConfig(arch string, types Types, ctxt *obj.Link, optimize, softfloat boo c.registers = registersS390X[:] c.gpRegMask = gpRegMaskS390X c.fpRegMask = fpRegMaskS390X - //c.intParamRegs = paramIntRegS390X - //c.floatParamRegs = paramFloatRegS390X + c.intParamRegs = paramIntRegS390X + c.floatParamRegs = paramFloatRegS390X c.FPReg = framepointerRegS390X c.LinkReg = linkRegS390X c.hasGReg = true diff --git a/src/cmd/compile/internal/ssa/debug_lines_test.go b/src/cmd/compile/internal/ssa/debug_lines_test.go index 79dbd91c2f..5dbfdeb7f6 100644 --- a/src/cmd/compile/internal/ssa/debug_lines_test.go +++ b/src/cmd/compile/internal/ssa/debug_lines_test.go @@ -45,7 +45,7 @@ func testGoArch() string { func hasRegisterABI() bool { switch testGoArch() { - case "amd64", "arm64", "loong64", "ppc64", "ppc64le", "riscv": + case "amd64", "arm64", "loong64", "ppc64", "ppc64le", "riscv", "s390x": return true } return false diff --git a/src/internal/buildcfg/exp.go b/src/internal/buildcfg/exp.go index f1a1d8632e..d33c9e65fb 100644 --- a/src/internal/buildcfg/exp.go +++ b/src/internal/buildcfg/exp.go @@ -65,6 +65,8 @@ func ParseGOEXPERIMENT(goos, goarch, goexp string) (*ExperimentFlags, error) { case "amd64", "arm64", "loong64", "ppc64le", "ppc64", "riscv64": regabiAlwaysOn = true regabiSupported = true + case "s390x": + regabiSupported = true } // Older versions (anything before V16) of dsymutil don't handle @@ -143,7 +145,7 @@ func ParseGOEXPERIMENT(goos, goarch, goexp string) (*ExperimentFlags, error) { flags.RegabiWrappers = true flags.RegabiArgs = true } - // regabi is only supported on amd64, arm64, loong64, riscv64, ppc64 and ppc64le. + // regabi is only supported on amd64, arm64, loong64, riscv64, s390x, ppc64 and ppc64le. if !regabiSupported { flags.RegabiWrappers = false flags.RegabiArgs = false