• 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
.github Loading commit data...
api Loading commit data...
doc Loading commit data...
lib/time Loading commit data...
misc Loading commit data...
src Loading commit data...
test Loading commit data...
.gitattributes Loading commit data...
.gitignore Loading commit data...
AUTHORS Loading commit data...
CONTRIBUTING.md Loading commit data...
CONTRIBUTORS Loading commit data...
LICENSE Loading commit data...
PATENTS Loading commit data...
README.md Loading commit data...
favicon.ico Loading commit data...
robots.txt Loading commit data...