Move int/long compare tweak to LowerCompare
authorMike Danes <onemihaid@hotmail.com>
Sun, 1 Jan 2017 11:31:31 +0000 (13:31 +0200)
committerMike Danes <onemihaid@hotmail.com>
Tue, 17 Jan 2017 18:26:28 +0000 (20:26 +0200)
commitb0b432dd4976c1b76b8ef599b6d0d1403b35507d
tree8a37abdf922946cc63e586945920c3f04f9ca51c
parent062215a5eb9edbdef27492972a59fcf88d6a4b99
Move int/long compare tweak to LowerCompare

Normally we should not get int/long compares but the JIT accidentally produces such compares sometimes.

Doing this in lowering requires to add a cast node but since this rarely happens the cost of adding a new node is not a concern.

FX diff shows a 151 bytes improvement without any regressions. All differences are due to narrowing int/long compares to int/int when the long operand is a constant.

Such narrowing usually avoids the need for a REX prefix and in some rare cases also allows a memory operand to be contained.

Commit migrated from https://github.com/dotnet/coreclr/commit/b10faae7579c2f22c34ee1fe7c1995ec674828ed
src/coreclr/src/jit/codegenxarch.cpp
src/coreclr/src/jit/lower.cpp