]> git.sesse.net Git - bmusb/blobdiff - bmusb.cpp
Switch __SSE2__ defines over to __SSE4_1__, as we use ptest.
[bmusb] / bmusb.cpp
index c03b228c0d5d98fef78c56b256c96490a48ebf45..3c86d358d4ca87acfa6251d267c21653b9879488 100644 (file)
--- a/bmusb.cpp
+++ b/bmusb.cpp
@@ -13,7 +13,7 @@
 #include <fcntl.h>
 #include <stdint.h>
 #include <assert.h>
-#ifdef __SSE2__
+#ifdef __SSE4_1__
 #include <immintrin.h>
 #endif
 #include <algorithm>
@@ -281,7 +281,50 @@ void add_to_frame(FrameAllocator::Frame *current_frame, const char *frame_type_n
        }
 }
 
-#ifdef __SSE2__
+#ifdef __SSE4_1__
+
+#if 0
+void avx2_dump(const char *name, __m256i n)
+{
+       printf("%-10s:", name);
+       printf(" %02x", _mm256_extract_epi8(n, 0));
+       printf(" %02x", _mm256_extract_epi8(n, 1));
+       printf(" %02x", _mm256_extract_epi8(n, 2));
+       printf(" %02x", _mm256_extract_epi8(n, 3));
+       printf(" %02x", _mm256_extract_epi8(n, 4));
+       printf(" %02x", _mm256_extract_epi8(n, 5));
+       printf(" %02x", _mm256_extract_epi8(n, 6));
+       printf(" %02x", _mm256_extract_epi8(n, 7));
+       printf(" ");
+       printf(" %02x", _mm256_extract_epi8(n, 8));
+       printf(" %02x", _mm256_extract_epi8(n, 9));
+       printf(" %02x", _mm256_extract_epi8(n, 10));
+       printf(" %02x", _mm256_extract_epi8(n, 11));
+       printf(" %02x", _mm256_extract_epi8(n, 12));
+       printf(" %02x", _mm256_extract_epi8(n, 13));
+       printf(" %02x", _mm256_extract_epi8(n, 14));
+       printf(" %02x", _mm256_extract_epi8(n, 15));
+       printf(" ");
+       printf(" %02x", _mm256_extract_epi8(n, 16));
+       printf(" %02x", _mm256_extract_epi8(n, 17));
+       printf(" %02x", _mm256_extract_epi8(n, 18));
+       printf(" %02x", _mm256_extract_epi8(n, 19));
+       printf(" %02x", _mm256_extract_epi8(n, 20));
+       printf(" %02x", _mm256_extract_epi8(n, 21));
+       printf(" %02x", _mm256_extract_epi8(n, 22));
+       printf(" %02x", _mm256_extract_epi8(n, 23));
+       printf(" ");
+       printf(" %02x", _mm256_extract_epi8(n, 24));
+       printf(" %02x", _mm256_extract_epi8(n, 25));
+       printf(" %02x", _mm256_extract_epi8(n, 26));
+       printf(" %02x", _mm256_extract_epi8(n, 27));
+       printf(" %02x", _mm256_extract_epi8(n, 28));
+       printf(" %02x", _mm256_extract_epi8(n, 29));
+       printf(" %02x", _mm256_extract_epi8(n, 30));
+       printf(" %02x", _mm256_extract_epi8(n, 31));
+       printf("\n");
+}
+#endif
 
 // Does a memcpy and memchr in one to reduce processing time.
 // Note that the benefit is somewhat limited if your L3 cache is small,
@@ -472,7 +515,7 @@ void decode_packs(const libusb_transfer *xfr,
                const uint8_t *start = xfr->buffer + offset;
                const uint8_t *limit = start + pack->actual_length;
                while (start < limit) {  // Usually runs only one iteration.
-#ifdef __SSE2__
+#ifdef __SSE4_1__
                        start = add_to_frame_fastpath(current_frame, start, limit, sync_pattern[0]);
                        if (start == limit) break;
                        assert(start < limit);