Displaying 6 results from an estimated 6 matches for "sse_maddubs_epi16".
2020 May 19
5
[PATCHv2] SSE2/SSSE3 optimized version of get_checksum1() for x86-64
...se_interleave_even_epi16(a, b),
+ sse_interleave_odd_epi16(a, b)
+ );
+}
+
+__attribute__ ((target ("ssse3"))) static inline __m128i
sse_hadds_epi16(__m128i a, __m128i b) {
+ return _mm_hadds_epi16(a, b);
+}
+
+__attribute__ ((target ("sse2"))) static inline __m128i
sse_maddubs_epi16(__m128i a, __m128i b) {
+ return _mm_adds_epi16(
+ sse_mulu_even_epi8(a, b),
+ sse_mulu_odd_epi8(a, b)
+ );
+}
+
+__attribute__ ((target ("ssse3"))) static inline __m128i
sse_maddubs_epi16(__m128i a, __m128i b) {
+ return _mm_maddubs_epi16(a, b);
+}
+
+__attribute__...
2020 May 20
0
[PATCHv2] SSE2/SSSE3 optimized version of get_checksum1() for x86-64
...leave_odd_epi16(a, b)
> + );
> +}
> +
> +__attribute__ ((target ("ssse3"))) static inline __m128i
> sse_hadds_epi16(__m128i a, __m128i b) {
> + return _mm_hadds_epi16(a, b);
> +}
> +
> +__attribute__ ((target ("sse2"))) static inline __m128i
> sse_maddubs_epi16(__m128i a, __m128i b) {
> + return _mm_adds_epi16(
> + sse_mulu_even_epi8(a, b),
> + sse_mulu_odd_epi8(a, b)
> + );
> +}
> +
> +__attribute__ ((target ("ssse3"))) static inline __m128i
> sse_maddubs_epi16(__m128i a, __m128i b) {
> + return...
2020 May 18
6
[PATCH] SSE2/SSSE3 optimized version of get_checksum1() for x86-64
...)
+ );
+}
+#endif
+
+static inline __m128i sse_hadds_epi16(__m128i a, __m128i b) {
+#ifdef __SSSE3__
+ return _mm_hadds_epi16(a, b);
+#else
+ return _mm_adds_epi16(
+ sse_interleave_even_epi16(a, b),
+ sse_interleave_odd_epi16(a, b)
+ );
+#endif
+}
+
+static inline __m128i sse_maddubs_epi16(__m128i a, __m128i b) {
+#ifdef __SSSE3__
+ return _mm_maddubs_epi16(a, b);
+#else
+ return _mm_adds_epi16(
+ sse_mulu_even_epi8(a, b),
+ sse_mulu_odd_epi8(a, b)
+ );
+#endif
+}
+
+/*
+ a simple 32 bit checksum that can be updated from either end
+ (inspired by Mark Adler...
2020 May 18
3
[PATCH] SSE2/SSSE3 optimized version of get_checksum1() for x86-64
What do you base this on?
Per https://gcc.gnu.org/onlinedocs/gcc/x86-Options.html :
"For the x86-32 compiler, you must use -march=cpu-type, -msse or
-msse2 switches to enable SSE extensions and make this option
effective. For the x86-64 compiler, these extensions are enabled by
default."
That reads to me like we're fine for SSE2. As stated in my comments,
SSSE3 support must be
2020 May 18
0
[PATCH] SSE2/SSSE3 optimized version of get_checksum1() for x86-64
..._epi16(__m128i a, __m128i b) {
> +#ifdef __SSSE3__
> + return _mm_hadds_epi16(a, b);
> +#else
> + return _mm_adds_epi16(
> + sse_interleave_even_epi16(a, b),
> + sse_interleave_odd_epi16(a, b)
> + );
> +#endif
> +}
> +
> +static inline __m128i sse_maddubs_epi16(__m128i a, __m128i b) {
> +#ifdef __SSSE3__
> + return _mm_maddubs_epi16(a, b);
> +#else
> + return _mm_adds_epi16(
> + sse_mulu_even_epi8(a, b),
> + sse_mulu_odd_epi8(a, b)
> + );
> +#endif
> +}
> +
> +/*
> + a simple 32 bit checksum that...
2020 May 18
2
[PATCH] SSE2/SSSE3 optimized version of get_checksum1() for x86-64
...def __SSSE3__
>> + return _mm_hadds_epi16(a, b);
>> +#else
>> + return _mm_adds_epi16(
>> + sse_interleave_even_epi16(a, b),
>> + sse_interleave_odd_epi16(a, b)
>> + );
>> +#endif
>> +}
>> +
>> +static inline __m128i sse_maddubs_epi16(__m128i a, __m128i b) {
>> +#ifdef __SSSE3__
>> + return _mm_maddubs_epi16(a, b);
>> +#else
>> + return _mm_adds_epi16(
>> + sse_mulu_even_epi8(a, b),
>> + sse_mulu_odd_epi8(a, b)
>> + );
>> +#endif
>> +}
>> +
>&g...