aboutsummaryrefslogtreecommitdiff
path: root/src/net/interface_linux.go
diff options
context:
space:
mode:
authorLynn Boger <laboger@linux.vnet.ibm.com>2022-08-16 12:06:10 -0500
committerLynn Boger <laboger@linux.vnet.ibm.com>2022-08-26 19:15:02 +0000
commit897ad2fe907b98eae4cf60d78b7a262a221931fc (patch)
tree2fc2a90d5ef104b8a27d0c6e637bd8eab19e05c3 /src/net/interface_linux.go
parent3d6ba27f4ffef372d9a41bc488ca329c2786187f (diff)
downloadgo-897ad2fe907b98eae4cf60d78b7a262a221931fc.tar.xz
cmd/compile: fix score for Select{0,1} with type flags
A recent change was made for ppc64x to treat ANDCCconst as a tuple, allowing ANDconst to be removed from the list of ops. Included in that change were some improvements to the rules to avoid some extra code, mainly the elimination of a cmp 0 following an andi. and in some cases the following isel. While those changes worked for most cases, in a few cases some extra unnecessary code was generated. Currently the snippet appears in archive/zip.(*FileHeader).Mode: ANDCC R4,$1,R5 // andi. r5,r4,1 ANDCC R4,$16,R5 // andi. r5,r4,16 CMPW R5,R0 // cmpw r5,r0 ADDIS $0,$-32768,R5 // lis r5,-32768 OR R5,$511,R5 // ori r5,r5,511 MOVD $438,R6 // li r6,438 ISEL $2,R6,R5,R5 // isel r5,r6,r5,eq MOVD $-147,R6 // li r6,-147 AND R6,R5,R6 // and r6,r5,r6 ANDCC R4,$1,R4 // andi. r4,r4,1 ISEL $2,R5,R6,R4 // isel r4,r5,r6,eq The first ANDCC is never used and should not be there. From the ssa.html file, the scheduler is not putting the Select1 close to the ISEL, which results in the flag being clobbered before it can be used. By changing the score for a Select0 or Select1 with type Flags, the extra ANDCC does not occur. Change-Id: I82f4bc7c02afb1c2b1c048dc6995e0b3f9363fb3 Reviewed-on: https://go-review.googlesource.com/c/go/+/424294 Run-TryBot: Lynn Boger <laboger@linux.vnet.ibm.com> Reviewed-by: Than McIntosh <thanm@google.com> TryBot-Result: Gopher Robot <gobot@golang.org> Reviewed-by: David Chase <drchase@google.com> Reviewed-by: Paul Murphy <murp@ibm.com>
Diffstat (limited to 'src/net/interface_linux.go')
0 files changed, 0 insertions, 0 deletions