• mbrandy's avatar
    PPC: [crankshaft] Address the deoptimization loops of Math.floor, Math.round and Math.ceil. · 4e93ce4f
    mbrandy authored
    Port 978ad03b
    
    Original commit message:
        Fix and re-enable the flexible representation for Math.floor (which is used to
        implement Math.ceil) and Math.round, which allows Math.floor and Math.round to
        return double results instead of int32, and therefore allows values outside
        the int32 range, especially -0 is now a valid result, which doesn't deopt.
    
        Also port this feature to x64 and ia32 when the CPU supports the SSE4.1
        extension.
    
        This addresses all the known deoptimization loops related to Math.round
        in the Kraken benchmark suite, and seems to also address most of the
        deoptimization loops related to Math.floor in the Oort Online benchmark.
    
        Drive-by-fix: Import the regression tests for the broken HMathFloorOfDiv
        optimization that caused the initial revert of the feature (for arm64 only
        back then).
    
    R=bmeurer@chromium.org, joransiu@ca.ibm.com, jyan@ca.ibm.com, michael_dawson@ca.ibm.com
    BUG=chromium:476477,v8:2890,v8:4059
    LOG=n
    
    Review URL: https://codereview.chromium.org/1839643007
    
    Cr-Commit-Position: refs/heads/master@{#35659}
    4e93ce4f
hydrogen-instructions.h 228 KB