https://bugs.kde.org/show_bug.cgi?id=359952

            Bug ID: 359952
           Summary: Unrecognised PCMPESTRM variants
           Product: valgrind
           Version: 3.11.0
          Platform: Compiled Sources
                OS: Linux
            Status: UNCONFIRMED
          Severity: normal
          Priority: NOR
         Component: general
          Assignee: jsew...@acm.org
          Reporter: christoficos...@gambitresearch.com

I have an application that uses SSE4.2 string instructions to speed up some
text parsing. Unfortunately, it causes valgrind to raise SIGILL:

vex amd64->IR: unhandled instruction bytes: 0xC4 0xE3 0x79 0x60 0xD1 0x70 0xC5
0xF9
vex amd64->IR:   REX=0 REX.W=0 REX.R=0 REX.X=0 REX.B=0
vex amd64->IR:   VEX=1 VEX.L=0 VEX.nVVVV=0x0 ESC=0F3A
vex amd64->IR:   PFX.66=1 PFX.F2=0 PFX.F3=0

  40255f:    c4 e3 79 60 d1 70        vpcmpestrm $0x70,%xmm1,%xmm2

The same happens if I compile with -mno-avx:

vex amd64->IR: unhandled instruction bytes: 0x66 0xF 0x3A 0x60 0xD1 0x70 0x66
0xF
vex amd64->IR:   REX=0 REX.W=0 REX.R=0 REX.X=0 REX.B=0
vex amd64->IR:   VEX=0 VEX.L=0 VEX.nVVVV=0x0 ESC=0F3A
vex amd64->IR:   PFX.66=1 PFX.F2=0 PFX.F3=0

  4024df:    66 0f 3a 60 d1 70        pcmpestrm $0x70,%xmm1,%xmm2

For completeness, the culprit is the following bit of code (g++ 4.8.4):

#include <nmmintrin.h>
...
__m128i mask = _mm_cmpestrm(separators, 2, data, 16,
    _SIDD_UBYTE_OPS | _SIDD_CMP_EQUAL_ANY |
    _SIDD_MASKED_NEGATIVE_POLARITY | _SIDD_UNIT_MASK);

-- 
You are receiving this mail because:
You are watching all bug changes.

Reply via email to