]> Cypherpunks repositories - gostls13.git/commitdiff
internal/buildcfg: enable register ABI for PPC64
authorLynn Boger <laboger@linux.vnet.ibm.com>
Mon, 4 Oct 2021 17:13:41 +0000 (12:13 -0500)
committerLynn Boger <laboger@linux.vnet.ibm.com>
Tue, 5 Oct 2021 19:15:03 +0000 (19:15 +0000)
This enables the new register ABI for all PPC64 targets
by default including linux/ppc64, linux/ppc64le, and aix/ppc64.

Improvements with the new register ABI on a power9:

name old time/op (ns/op) new time/op (ns/op) delta
BinaryTree17     3882070000 3274900000 -15.64%
Fannkuch11         3787620000 3614740000 -4.56%
FmtFprintfEmpty         58.705         51.1875  -12.81%
FmtFprintfString 101.675         94.4725  -7.08%
FmtFprintfInt         112.725  104.075  -7.67%
FmtFprintfIntInt 166.475  158.05   -5.06%
FmtFprintfPrefixedInt 183.7         178.975  -2.57%
FmtFprintfFloat         246.55         258.8         +4.97%
FmtManyArgs         648.325  665.875  +2.71%
GobDecode         8004660         6802210  -15.02%
GobEncode        7289780  5675710  -22.14%
Gzip             326931000 323586000 -1.02%
Gunzip           47544700 37808000 -20.48%
HTTPClientServer     46927.2  42357.8  -9.74%
JSONEncode         12098300 9621450         -20.47%
JSONDecode       62305300 55410200 -11.07%
Mandelbrot200         5841540  5934590  +1.59%
GoParse          5594880  4003360  -28.45%
RegexpMatchEasy0_32 96.185         89.6325  -6.81%
RegexpMatchEasy0_1K 255.775  210.45   -17.72%
RegexpMatchEasy1_32 102.95   93.8825  -8.81%
RegexpMatchEasy1_1K 511.65   385.075  -24.74%
RegexpMatchMedium_32 1414.75  1236.75  -12.58%
RegexpMatchMedium_1K 42114.5  37022.5  -12.09%
RegexpMatchHard_32 2110.5   1901.5   -9.90%
RegexpMatchHard_1K 63559.5  59494    -6.40%
Revcomp          532981000 480640000 -9.82%
Template         81903600 65743300 -19.73%
TimeParse        310.75         276.525  -11.01%
TimeFormat         483.4    355.475   -26.46%

Change-Id: Ib7c5dfe8ddc2f17050943912048f55667dabde39
Reviewed-on: https://go-review.googlesource.com/c/go/+/353969
Trust: Lynn Boger <laboger@linux.vnet.ibm.com>
Reviewed-by: Cherry Mui <cherryyz@google.com>
src/internal/buildcfg/exp.go

index 7cbe4c804d0bff04cddb0c90650665858c2ec633..043d079cf649a6784860af98dc61cc02068b4439 100644 (file)
@@ -46,7 +46,11 @@ var FramePointerEnabled = GOARCH == "amd64" || GOARCH == "arm64"
 //
 // TODO(mdempsky): Move to internal/goexperiment.
 func ParseGOEXPERIMENT(goos, goarch, goexp string) (flags, baseline goexperiment.Flags, err error) {
-       regabiSupported := goarch == "amd64" || goarch == "arm64"
+       regabiSupported := false
+       switch goarch {
+       case "amd64", "arm64", "ppc64le", "ppc64":
+               regabiSupported = true
+       }
 
        baseline = goexperiment.Flags{
                RegabiWrappers: regabiSupported,
@@ -112,7 +116,7 @@ func ParseGOEXPERIMENT(goos, goarch, goexp string) (flags, baseline goexperiment
                flags.RegabiArgs = true
        }
        // regabi is only supported on amd64, arm64, ppc64 and ppc64le.
-       if goarch != "amd64" && goarch != "arm64" && goarch != "ppc64le" && goarch != "ppc64" {
+       if !regabiSupported {
                flags.RegabiReflect = false
                flags.RegabiArgs = false
        }