diff options
author | Robert Swiecki <robert@swiecki.net> | 2017-02-03 02:08:14 +0100 |
---|---|---|
committer | Robert Swiecki <robert@swiecki.net> | 2017-02-03 02:08:14 +0100 |
commit | 0ec9811056c4813a61d735f07969c3760610eade (patch) | |
tree | 2bf6d9cbaf6e7be3ec71f51f631232fb4e95d9b3 /libhfuzz/instrument.c | |
parent | f5f19844445f1a057a3cad672cda5c3568b3f520 (diff) | |
download | honggfuzz-0ec9811056c4813a61d735f07969c3760610eade.tar.gz |
Libhfuzz: get rid of global -msse4.2 for intel
Diffstat (limited to 'libhfuzz/instrument.c')
-rw-r--r-- | libhfuzz/instrument.c | 15 |
1 files changed, 15 insertions, 0 deletions
diff --git a/libhfuzz/instrument.c b/libhfuzz/instrument.c index 1d59b2cc..3bb6073a 100644 --- a/libhfuzz/instrument.c +++ b/libhfuzz/instrument.c @@ -17,6 +17,16 @@ #include "../util.h" +/* + * We require SSE4.2 with x86-(32|64) for the 'popcnt', as it's much faster than the software + * emulation of gcc/clang + */ +#if defined(__x86_64__) || defined(__i386__) + #define ATTRIBUTE_X86_REQUIRE_SSE42 __attribute__((__target__("sse4.2"))) +#else + #define ATTRIBUTE_X86_REQUIRE_SSE42 +#endif /* defined(__x86_64__) || defined(__i386__) */ + static feedback_t bbMapFb; feedback_t *feedback = &bbMapFb; uint32_t my_thread_no = 0; @@ -98,6 +108,7 @@ void __sanitizer_cov_trace_pc_indir(void *callee) } } +ATTRIBUTE_X86_REQUIRE_SSE42 void __sanitizer_cov_trace_cmp1(uint8_t Arg1, uint8_t Arg2) { uintptr_t pos = (uintptr_t) __builtin_return_address(0) % _HF_PERF_BITMAP_SIZE_16M; @@ -109,6 +120,7 @@ void __sanitizer_cov_trace_cmp1(uint8_t Arg1, uint8_t Arg2) } } +ATTRIBUTE_X86_REQUIRE_SSE42 void __sanitizer_cov_trace_cmp2(uint16_t Arg1, uint16_t Arg2) { uintptr_t pos = (uintptr_t) __builtin_return_address(0) % _HF_PERF_BITMAP_SIZE_16M; @@ -120,6 +132,7 @@ void __sanitizer_cov_trace_cmp2(uint16_t Arg1, uint16_t Arg2) } } +ATTRIBUTE_X86_REQUIRE_SSE42 void __sanitizer_cov_trace_cmp4(uint32_t Arg1, uint32_t Arg2) { uintptr_t pos = (uintptr_t) __builtin_return_address(0) % _HF_PERF_BITMAP_SIZE_16M; @@ -131,6 +144,7 @@ void __sanitizer_cov_trace_cmp4(uint32_t Arg1, uint32_t Arg2) } } +ATTRIBUTE_X86_REQUIRE_SSE42 void __sanitizer_cov_trace_cmp8(uint64_t Arg1, uint64_t Arg2) { uintptr_t pos = (uintptr_t) __builtin_return_address(0) % _HF_PERF_BITMAP_SIZE_16M; @@ -146,6 +160,7 @@ void __sanitizer_cov_trace_cmp8(uint64_t Arg1, uint64_t Arg2) * Cases[0] is number of comparison entries * Cases[1] is length of Val in bits */ +ATTRIBUTE_X86_REQUIRE_SSE42 void __sanitizer_cov_trace_switch(uint64_t Val, uint64_t * Cases) { for (uint64_t i = 0; i < Cases[0]; i++) { |