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

--- Comment #1 from [email protected] ---
Reproducer:

$ cat test.c
#include <smmintrin.h>
#include <stdio.h>


// $ grep -R "cmpgt_epi64" $(gcc -print-file-name=include)  | fgrep -v avx
// /usr/lib/gcc/x86_64-redhat-linux/16/include/smmintrin.h:_mm_cmpgt_epi64
(__m128i __X, __m128i __Y)
// $ 

int main() {
   __m128i a = _mm_set_epi64x(3, 7);
   __m128i b = _mm_set_epi64x(7, 3);

   __m128i r = _mm_cmpgt_epi64(a, b);

   unsigned long long x[2];
   _mm_storeu_si128((__m128i*)x, r);

   printf("XXX %016llx, %016llx\n", x[0], x[1]);
   return 0;
}
$ 


$ gcc -msse4.2 -m64 test.c -o a64.out
$ gcc -msse4.2 -m32 test.c -o a32.out
$ 

$ ./vg-in-place ./a64.out 
==1454953== Memcheck, a memory error detector
==1454953== Copyright (C) 2002-2026, and GNU GPL'd, by Julian Seward et al.
==1454953== Using Valgrind-3.28.0.GIT and LibVEX; rerun with -h for copyright
info
==1454953== Command: ./a64.out
==1454953== 
XXX ffffffffffffffff, 0000000000000000
==1454953== 
==1454953== HEAP SUMMARY:
==1454953==     in use at exit: 0 bytes in 0 blocks
==1454953==   total heap usage: 1 allocs, 1 frees, 1,024 bytes allocated
==1454953== 
==1454953== All heap blocks were freed -- no leaks are possible
==1454953== 
==1454953== For lists of detected and suppressed errors, rerun with: -s
==1454953== ERROR SUMMARY: 0 errors from 0 contexts (suppressed: 0 from 0)
$


$ ./vg-in-place ./a32.out 
==1454121== Memcheck, a memory error detector
==1454121== Copyright (C) 2002-2026, and GNU GPL'd, by Julian Seward et al.
==1454121== Using Valgrind-3.28.0.GIT and LibVEX; rerun with -h for copyright
info
==1454121== Command: ./a32.out
==1454121== 
vex x86->IR: unhandled instruction bytes: 0x66 0xF 0x38 0x37
==1454121== valgrind: Unrecognised instruction at address 0x80483e9.
==1454121==    at 0x80483E9: main (in
/home/mcermak/WORK/valgrind/valgrind-src/a32.out)
==1454121== Your program just tried to execute an instruction that Valgrind
==1454121== did not recognise.  There are two possible reasons for this.
==1454121== 1. Your program has a bug and erroneously jumped to a non-code
==1454121==    location.  If you are running Memcheck and you just saw a
==1454121==    warning about a bad jump, it's probably your program's fault.
==1454121== 2. The instruction is legitimate but Valgrind doesn't handle it,
==1454121==    i.e. it's Valgrind's fault.  If you think this is the case or
==1454121==    you are not sure, please let us know and we'll try to fix it.
==1454121== Either way, Valgrind will now raise a SIGILL signal which will
==1454121== probably kill your program.
==1454121== 
==1454121== Process terminating with default action of signal 4 (SIGILL):
dumping core
==1454121==  Illegal opcode at address 0x80483E9
==1454121==    at 0x80483E9: main (in
/home/mcermak/WORK/valgrind/valgrind-src/a32.out)
==1454121== 
==1454121== HEAP SUMMARY:
==1454121==     in use at exit: 0 bytes in 0 blocks
==1454121==   total heap usage: 0 allocs, 0 frees, 0 bytes allocated
==1454121== 
==1454121== All heap blocks were freed -- no leaks are possible
==1454121== 
==1454121== For lists of detected and suppressed errors, rerun with: -s
==1454121== ERROR SUMMARY: 0 errors from 0 contexts (suppressed: 0 from 0)
Illegal instruction        (core dumped) ./vg-in-place ./a32.out
$

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

Reply via email to