use custom valgrind pdep/pext everywhere

This commit is contained in:
dzaima 2024-07-31 03:54:34 +03:00
parent d1469df96b
commit ced082cc82
4 changed files with 14 additions and 13 deletions

View File

@ -69,16 +69,6 @@
#define FAST_PDEP 1
#endif
#include <immintrin.h>
#if USE_VALGRIND
#define _pext_u32 vg_pext_u64
#define _pext_u64 vg_pext_u64
#define _pdep_u32 vg_pdep_u64
#define _pdep_u64 vg_pdep_u64
#else
#define vg_loadLUT64(p, i) p[i]
#endif
#endif
#if !USE_VALGRIND

View File

@ -29,7 +29,7 @@ NORETURN NOINLINE void fatal(char* s) {
vm_pstLive(); fflush(stderr); fflush(stdout);
print_vmStack(); fflush(stderr);
before_exit();
#if DEBUG
#if DEBUG || USE_VALGRIND
__builtin_trap();
#endif
exit(1);

View File

@ -24,6 +24,17 @@
#define unpacked_vqtbl4q_u8(A,B,C,D,I) vqtbl4q_u8((uint8x16x4_t){A,B,C,D}, I)
#endif
#if USE_VALGRIND
#if defined(__amd64__)
#include<immintrin.h>
#define _pext_u32 vg_pext_u64
#define _pext_u64 vg_pext_u64
#define _pdep_u32 vg_pdep_u64
#define _pdep_u64 vg_pdep_u64
#endif
#else
#define vg_loadLUT64(p, i) p[i]
#endif
#define BCALL(N, X) N(b(X))
#define interp_f64(X) b(X).f

View File

@ -53,7 +53,7 @@ B vg_validateResult(B x) {
u64 exp = (1ULL<<left) - 1;
u64 got = vg_getDefined_u64(last);
if ((got&exp) != exp) {
printf("Expected %d defined trailing bits, got:\n", left);
printf("Expected %d defined trailing bits in object at %p, got:\n", left, v(x));
vg_printDefined_u64(NULL, last);
fatal("");
}
@ -68,7 +68,7 @@ B vg_validateResult(B x) {
len = sizeof(B) * ia;
}
if (VALGRIND_CHECK_MEM_IS_DEFINED(data, len)) {
printf("Expected "N64d" defined bytes, got:\n", len);
printf("Expected "N64d" defined bytes in object at %p, got:\n", len, v(x));
vg_printDump_p(NULL, data, len);
fatal("");
}