Version: 3.7 SVN OS: Linux Memcheck should replace __intel_new_memcpy() with its own memcpy (./memcheck/mc_replace_strmem.c). Reproducible: Didn't try Steps to Reproduce: . Expected Results: .
Can you get a list of all such functions? I'm sure there will be others for string related functions, memset, and so on.
Here is the list I could extract from a few libraries compiled with ICC: _intel_atan_fixup __intel_cpu_dispatch_fail __intel_cpu_indicator __intel_cpu_indicator_init __intel_dgcopyan_em64t __intel_dgcopyat_em64t __intel_dgcopybn_psc __intel_dgcopybt_psc __intel_dinner_em64t __intel_dinnerz_roll_em64t _intel_fast_memcmp _intel_fast_memcpy _intel_fast_memcpy.A _intel_fast_memcpy.J _intel_fast_memset _intel_fast_memset.A _intel_fast_memset.J __intel_get_memcpy_largest_cachelinesize __intel_get_memcpy_largest_cache_size __intel_get_mem_ops_method __intel_get_new_mem_ops_cpuid __intel_get_new_mem_ops_cpuid4 __intel_init_mem_ops_method __intel_memcpy_largest_cachelinesize __intel_memcpy_largest_cache_size __intel_memcpy_mem_ops_method __intel_new_memcmp __intel_new_memcpy __intel_new_memmove __intel_new_memset __intel_new_proc_init __intel_new_proc_init.A __intel_new_proc_init_B __intel_new_proc_init_B.A __intel_new_proc_init_B.J __intel_new_proc_init_B.K __intel_new_proc_init_B.L __intel_new_proc_init_H __intel_new_proc_init.H __intel_new_proc_init_H.A __intel_new_proc_init_H.P __intel_new_proc_init_N __intel_new_proc_init_N.A __intel_new_proc_init_N.J __intel_new_proc_init_N.K __intel_new_proc_init_N.L __intel_new_proc_init_P __intel_new_proc_init_P.A __intel_new_proc_init_P.L __intel_new_proc_init_S __intel_new_proc_init_S.A __intel_new_proc_init_S.N __intel_new_proc_init_T __intel_new_proc_init_T.A __intel_new_proc_init_T.M __intel_new_strlen _intel_order_fixup __intel_override_mem_ops_method _intel_pow_fixup __intel_proc_init __intel_proc_init.A __intel_proc_init_B __intel_proc_init_B.A __intel_proc_init_B.J __intel_proc_init_B.K __intel_proc_init_B.L __intel_proc_init.H __intel_proc_init_N __intel_proc_init_N.A __intel_proc_init_N.J __intel_proc_init_N.K __intel_proc_init_N.L __intel_proc_init_P __intel_proc_init_P.A __intel_proc_init_P.L __intel_proc_init_T __intel_proc_init_T.A __intel_proc_init_T.M __intel_rtc_uninit_use __intel_security_check_cookie __intel_security_cookie __intel_security_init_cookie __intel_set_memcpy_largest_cachelinesize __intel_set_memcpy_largest_cache_size __intel_VEC_memcpy __intel_VEC_memset __intel_VEC_memzero
(In reply to comment #2) > Here is the list I could extract from a few libraries compiled with ICC: From the list there are interesting: _intel_fast_memcmp _intel_fast_memcpy _intel_fast_memset __intel_new_memcmp __intel_new_memcpy __intel_new_memmove __intel_new_memset __intel_new_strlen __intel_VEC_memcpy __intel_VEC_memset __intel_VEC_memzero It is curious, that there is only one function to deal with strings.. What do you know about the __intel_VEC_... functions? E.g. What is the difference between __intel_new_memcpy and __intel_VEC_memcpy? Perhaps browsing header files sheds some light on how they are used.
I have no clue. I'm just linking with a library compiled with ICC. The assembly of the intel_VEC_* functions is pretty confusing. They use the rdtsc instruction multiple times, in addition to what you would expect (e.g., movdqa and movntdq).