Re: Question on SSE intrinsics
On Sunday, 30 July 2017 at 02:05:32 UTC, Nicholas Wilson wrote: On Saturday, 29 July 2017 at 22:45:12 UTC, piotrekg2 wrote: What about __builtin_ctz? https://github.com/ldc-developers/druntime/blob/ldc/src/ldc/intrinsics.di#L325 you can also make it out of bsf or bsr (i can't remember which) from `core.bitop`
Re: Question on SSE intrinsics
On Saturday, 29 July 2017 at 22:45:12 UTC, piotrekg2 wrote: On Saturday, 29 July 2017 at 18:19:47 UTC, Johan Engelen wrote: On Saturday, 29 July 2017 at 16:01:07 UTC, piotrekg2 wrote: Hi, I'm trying to port some of my c++ code which uses sse2 instructions into D. The code calls the following intrinsics: - _mm256_loadu_si256 - _mm256_movemask_epi8 Do they have any equivalent intrinsics in D? Yes, with LDC (probably GDC too). But unfortunately we don't have the "_mm256" functions (yet?), instead we have GCC's "__builtin_ia32..." functions. The first one you mention I think is just an unaligned load? That can be done with the template `loadUnaligned` from module ldc.simd. The second one has a synonym, "__builtin_ia32_pmovmskb256". -Johan What about __builtin_ctz? https://github.com/ldc-developers/druntime/blob/ldc/src/ldc/intrinsics.di#L325
Re: Question on SSE intrinsics
On Saturday, 29 July 2017 at 18:19:47 UTC, Johan Engelen wrote: On Saturday, 29 July 2017 at 16:01:07 UTC, piotrekg2 wrote: Hi, I'm trying to port some of my c++ code which uses sse2 instructions into D. The code calls the following intrinsics: - _mm256_loadu_si256 - _mm256_movemask_epi8 Do they have any equivalent intrinsics in D? Yes, with LDC (probably GDC too). But unfortunately we don't have the "_mm256" functions (yet?), instead we have GCC's "__builtin_ia32..." functions. The first one you mention I think is just an unaligned load? That can be done with the template `loadUnaligned` from module ldc.simd. The second one has a synonym, "__builtin_ia32_pmovmskb256". -Johan What about __builtin_ctz?
Re: Question on SSE intrinsics
On Saturday, 29 July 2017 at 16:01:07 UTC, piotrekg2 wrote: Hi, I'm trying to port some of my c++ code which uses sse2 instructions into D. The code calls the following intrinsics: - _mm256_loadu_si256 - _mm256_movemask_epi8 Do they have any equivalent intrinsics in D? Yes, with LDC (probably GDC too). But unfortunately we don't have the "_mm256" functions (yet?), instead we have GCC's "__builtin_ia32..." functions. The first one you mention I think is just an unaligned load? That can be done with the template `loadUnaligned` from module ldc.simd. The second one has a synonym, "__builtin_ia32_pmovmskb256". -Johan
Re: Question on SSE intrinsics
On Saturday, 29 July 2017 at 16:01:07 UTC, piotrekg2 wrote: Hi, I'm trying to port some of my c++ code which uses sse2 instructions into D. The code calls the following intrinsics: - _mm256_loadu_si256 - _mm256_movemask_epi8 Do they have any equivalent intrinsics in D? I'm compiling my c++ code using gcc. Thanks, Piotr https://stackoverflow.com/questions/14002946/explicit-simd-code-in-d I don't think something has changed since then.
Question on SSE intrinsics
Hi, I'm trying to port some of my c++ code which uses sse2 instructions into D. The code calls the following intrinsics: - _mm256_loadu_si256 - _mm256_movemask_epi8 Do they have any equivalent intrinsics in D? I'm compiling my c++ code using gcc. Thanks, Piotr