• Michael Munday's avatar
    cmd/compile: merge loads into operations on s390x · 1cfb5c3f
    Michael Munday authored
    Adds the new canMergeLoad function which can be used by rules to
    decide whether a load can be merged into an operation. The function
    ensures that the merge will not reorder the load relative to memory
    operations (for example, stores) in such a way that the block can no
    longer be scheduled.
    
    This new function enables transformations such as:
    
    MOVD 0(R1), R2
    ADD  R2, R3
    
    to:
    
    ADD  0(R1), R3
    
    The two-operand form of the following instructions can now read a
    single memory operand:
    
     - ADD
     - ADDC
     - ADDW
     - MULLD
     - MULLW
     - SUB
     - SUBC
     - SUBE
     - SUBW
     - AND
     - ANDW
     - OR
     - ORW
     - XOR
     - XORW
    
    Improves SHA3 performance by 6-8%.
    
    Updates #15054.
    
    Change-Id: Ibcb9122126cd1a26f2c01c0dfdbb42fe5e7b5b94
    Reviewed-on: https://go-review.googlesource.com/29272
    Run-TryBot: Michael Munday <munday@ca.ibm.com>
    TryBot-Result: Gobot Gobot <gobot@golang.org>
    Reviewed-by: 's avatarKeith Randall <khr@golang.org>
    1cfb5c3f
Name
Last commit
Last update
..
gen Loading commit data...
TODO Loading commit data...
block.go Loading commit data...
check.go Loading commit data...
checkbce.go Loading commit data...
compile.go Loading commit data...
config.go Loading commit data...
copyelim.go Loading commit data...
copyelim_test.go Loading commit data...
critical.go Loading commit data...
cse.go Loading commit data...
cse_test.go Loading commit data...
deadcode.go Loading commit data...
deadcode_test.go Loading commit data...
deadstore.go Loading commit data...
deadstore_test.go Loading commit data...
decompose.go Loading commit data...
dom.go Loading commit data...
dom_test.go Loading commit data...
export_test.go Loading commit data...
flagalloc.go Loading commit data...
func.go Loading commit data...
func_test.go Loading commit data...
fuse.go Loading commit data...
fuse_test.go Loading commit data...
html.go Loading commit data...
id.go Loading commit data...
layout.go Loading commit data...
lca.go Loading commit data...
lca_test.go Loading commit data...
likelyadjust.go Loading commit data...
location.go Loading commit data...
loopbce.go Loading commit data...
lower.go Loading commit data...
magic.go Loading commit data...
nilcheck.go Loading commit data...
nilcheck_test.go Loading commit data...
op.go Loading commit data...
opGen.go Loading commit data...
opt.go Loading commit data...
passbm_test.go Loading commit data...
phielim.go Loading commit data...
phiopt.go Loading commit data...
print.go Loading commit data...
prove.go Loading commit data...
redblack32.go Loading commit data...
redblack32_test.go Loading commit data...
regalloc.go Loading commit data...
regalloc_test.go Loading commit data...
rewrite.go Loading commit data...
rewrite386.go Loading commit data...
rewriteAMD64.go Loading commit data...
rewriteARM.go Loading commit data...
rewriteARM64.go Loading commit data...
rewriteMIPS64.go Loading commit data...
rewritePPC64.go Loading commit data...
rewriteS390X.go Loading commit data...
rewrite_test.go Loading commit data...
rewritedec.go Loading commit data...
rewritedec64.go Loading commit data...
rewritegeneric.go Loading commit data...
schedule.go Loading commit data...
schedule_test.go Loading commit data...
shift_test.go Loading commit data...
shortcircuit.go Loading commit data...
shortcircuit_test.go Loading commit data...
sizeof_test.go Loading commit data...
sparsemap.go Loading commit data...
sparseset.go Loading commit data...
sparsetree.go Loading commit data...
sparsetreemap.go Loading commit data...
stackalloc.go Loading commit data...
stackframe.go Loading commit data...
tighten.go Loading commit data...
trim.go Loading commit data...
type.go Loading commit data...
type_test.go Loading commit data...
value.go Loading commit data...
zcse.go Loading commit data...