• Lynn Boger's avatar
    cmd/asm, cmd/internal/obj/ppc64: avoid unnecessary load zeros · 5b14c7b3
    Lynn Boger authored
    When instructions add, and, or, xor, and movd have
    constant operands in some cases more instructions are
    generated than necessary by the assembler.
    
    This adds more opcode/operand combinations to the optab
    and improves the code generation for the cases where the
    size and sign of the constant allows the use of 1
    instructions instead of 2.
    
    Example of previous code:
    	oris r3, r0, 0
    	ori  r3, r3, 65533
    
    now:
    	ori r3, r0, 65533
    
    This does not significantly reduce the overall binary size
    because the improvement depends on the constant value.
    Some procedures show a 1-2% reduction in size. This improvement
    could also be significant in cases where the extra instructions
    occur in a critical loop.
    
    Testcase ppc64enc.s was added to cmd/asm/internal/asm/testdata
    with the variations affected by this change.
    
    Updates #23845
    
    Change-Id: I7fdf2320c95815d99f2755ba77d0c6921cd7fad7
    Reviewed-on: https://go-review.googlesource.com/95135
    Run-TryBot: Lynn Boger <laboger@linux.vnet.ibm.com>
    TryBot-Result: Gobot Gobot <gobot@golang.org>
    Reviewed-by: 's avatarDavid Chase <drchase@google.com>
    5b14c7b3
Name
Last commit
Last update
..
arch Loading commit data...
asm Loading commit data...
flags Loading commit data...
lex Loading commit data...