It is common to generate constants in simd registers. It typically begins by clearing the simd register to all-one, by pcmp* family. For example: pcmpeqw xmm0, xmm0 However, valgrind 3.12 (Ubuntu x64) fails to recognize this combination and populates uninitialized values around. (Changing it to load or load+shuffle will suppress the warning)
The title of the bug report indicates x86, but below you indicate x64. Is this a problem with 32 bits intel or 64 bits intel ? Do you have a small compilable reproducer ? I am sure that will help the knowledgeable people (i.e. not me :)) to analyse and maybe fix your problem.
Might be related to: https://github.com/libjpeg-turbo/libjpeg-turbo/issues/238
This is probably easy to fix, but we need a test case that shows the problem for all pcmpeq variants that you are interested in. Can you supply one?
The specific case of `pcmpeqw xmm0, xmm0` is claimed to be fixed in issue https://bugs.kde.org/show_bug.cgi?id=290006. Yet, there are still issues with valgrind on libjpeg-turbo (see https://github.com/libjpeg-turbo/libjpeg-turbo/issues/277#issuecomment-581198382), suggesting that either the fix is incomplete or that other instructions are involved.
Also related: https://bugs.kde.org/show_bug.cgi?id=398153