• 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
..
bio Loading commit data...
browser Loading commit data...
buildid Loading commit data...
dwarf Loading commit data...
edit Loading commit data...
gcprog Loading commit data...
goobj Loading commit data...
obj Loading commit data...
objabi Loading commit data...
objfile Loading commit data...
src Loading commit data...
sys Loading commit data...
test2json Loading commit data...