target-i386: fix pcmpxstrx equal-ordered (strstr) mode
commit54c54f8b56047d3c2420e1ae06a6a8890c220ac4
authorPaolo Bonzini <pbonzini@redhat.com>
Mon, 12 Oct 2015 09:50:27 +0000 (12 11:50 +0200)
committerPaolo Bonzini <pbonzini@redhat.com>
Wed, 4 Nov 2015 14:02:30 +0000 (4 15:02 +0100)
tree9656342440da30780cc4bbd2d7ec870e0b906c77
parentaa5ccadcca3e6018ebd9d2e8b0a0604f7cb0cd59
target-i386: fix pcmpxstrx equal-ordered (strstr) mode

In this mode, referring an invalid element of the source forces the
result to false (table 4-7, last column) but referring an invalid
element of the destination forces the result to true, so the outer
loop should still be run even if some elements of the destination
will be invalid.  They will be avoided in the inner loop, which
correctly bounds "i" to validd, but they will still contribute to a
positive outcome of the search.

This fixes tst_strstr in glibc 2.17.

Reported-by: Florian Weimer <fweimer@redhat.com>
Cc: Richard Henderson <rth@twiddle.net>
Cc: Eduardo Habkost <ehabkost@redhat.com>
Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
target-i386/ops_sse.h