Move compare "decomposition" code
authorMike Danes <onemihaid@hotmail.com>
Mon, 2 Jan 2017 09:05:31 +0000 (11:05 +0200)
committerMike Danes <onemihaid@hotmail.com>
Tue, 17 Jan 2017 18:27:39 +0000 (20:27 +0200)
commitaa5a21a9067982e6ffdc490afc82752243b48757
tree8dcb5fcf5b263eb2669df885407744cffb04cee9
parent2ad70e7508fcf43488fe0956939bbc18d1e47f4a
Move compare "decomposition" code

In the original implementation long compares were decomposed in LowerCompare and the rest of the work was done in TreeNodeInfoInitCmp, this restores that ordering.

This enables the and-cmp to test transform for the high part comparison of a long comparison on 32 bit. The low part is unfortunately not handled because the CMP and the AND are in different BBs.

Code like
       mov      eax, dword ptr [edi]
       mov      edi, dword ptr [edi+4]
       and      eax, 0xD1FFAB1E
       and      edi, 0xD1FFAB1E
       jne      SHORT G_M14457_IG11
       test     eax, eax
       je       G_M14457_IG15
becomes
       mov      eax, dword ptr [edi]
       and      eax, 0xD1FFAB1E
       test     dword ptr [edi+4], 0xD1FFAB1E
       jne      SHORT G_M14457_IG11
       test     eax, eax
       je       G_M14457_IG15
src/jit/lower.cpp