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 #define FAST_PDEP 1
#endif #endif
#include <immintrin.h> #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 #endif
#if !USE_VALGRIND #if !USE_VALGRIND

View File

@ -29,7 +29,7 @@ NORETURN NOINLINE void fatal(char* s) {
vm_pstLive(); fflush(stderr); fflush(stdout); vm_pstLive(); fflush(stderr); fflush(stdout);
print_vmStack(); fflush(stderr); print_vmStack(); fflush(stderr);
before_exit(); before_exit();
#if DEBUG #if DEBUG || USE_VALGRIND
__builtin_trap(); __builtin_trap();
#endif #endif
exit(1); 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) #define unpacked_vqtbl4q_u8(A,B,C,D,I) vqtbl4q_u8((uint8x16x4_t){A,B,C,D}, I)
#endif #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 BCALL(N, X) N(b(X))
#define interp_f64(X) b(X).f #define interp_f64(X) b(X).f

View File

@ -53,7 +53,7 @@ B vg_validateResult(B x) {
u64 exp = (1ULL<<left) - 1; u64 exp = (1ULL<<left) - 1;
u64 got = vg_getDefined_u64(last); u64 got = vg_getDefined_u64(last);
if ((got&exp) != exp) { 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); vg_printDefined_u64(NULL, last);
fatal(""); fatal("");
} }
@ -68,7 +68,7 @@ B vg_validateResult(B x) {
len = sizeof(B) * ia; len = sizeof(B) * ia;
} }
if (VALGRIND_CHECK_MEM_IS_DEFINED(data, len)) { 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); vg_printDump_p(NULL, data, len);
fatal(""); fatal("");
} }