Change vector equality to use pmovmskb
authorMike Danes <onemihaid@hotmail.com>
Mon, 21 Nov 2016 18:30:28 +0000 (20:30 +0200)
committerMike Danes <onemihaid@hotmail.com>
Wed, 23 Nov 2016 06:12:48 +0000 (08:12 +0200)
commitf6bb476cfd7ca8810ff8be56efa3dfbc4017711f
treefe1c351339098dbd03fd72a5e0fe2d60903720da
parentf867db6d7f695007be9df1814963d33b3cdf8919
Change vector equality to use pmovmskb

This change replaces the rather long shuffle based compare sequence with
pmovmskb which is available in SSE2 and AVX2. The following code is now
generated:

C4E16D76D1           vpcmpeqd ymm2, ymm1
C4E17DD7C2           vpmovmskbeax, ymm2
83F8FF               cmp      eax, -1
0F94C0               sete     al
0FB6C0               movzx    rax, al

Commit migrated from https://github.com/dotnet/coreclr/commit/b1643d1efb331a85e832d94f8128c75c588b1003
src/coreclr/src/jit/compiler.hpp
src/coreclr/src/jit/instrsxarch.h
src/coreclr/src/jit/lowerxarch.cpp
src/coreclr/src/jit/simdcodegenxarch.cpp