• Michael Munday's avatar
    cmd/compile: simplify shift lowering on s390x · 8af0c77d
    Michael Munday authored
    Use conditional moves instead of subtractions with borrow to handle
    saturation cases. This allows us to delete the SUBE/SUBEW ops and
    associated rules from the SSA backend. Using conditional moves also
    means we can detect when shift values are masked so I've added some
    new rules to constant fold the relevant comparisons and masking ops.
    
    Also use the new shiftIsBounded() function to avoid generating code
    to handle saturation cases where possible.
    
    Updates #25167 for s390x.
    
    Change-Id: Ief9991c91267c9151ce4c5ec07642abb4dcc1c0d
    Reviewed-on: https://go-review.googlesource.com/110070
    Run-TryBot: Michael Munday <mike.munday@ibm.com>
    TryBot-Result: Gobot Gobot <gobot@golang.org>
    Reviewed-by: 's avatarBrad Fitzpatrick <bradfitz@golang.org>
    8af0c77d
shift.go 1.92 KB