From 37f375ddebbd0f2918c0036f7f9468bfd73cb86e Mon Sep 17 00:00:00 2001 From: Ilya Tokar Date: Fri, 18 Nov 2022 21:51:44 +0000 Subject: [PATCH] Add prefetch to zippy decompess, PiperOrigin-RevId: 489554313 --- snappy.cc | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/snappy.cc b/snappy.cc index c830fb9..903a7f7 100644 --- a/snappy.cc +++ b/snappy.cc @@ -69,6 +69,12 @@ #include #endif +#if defined(__GNUC__) +#define SNAPPY_PREFETCH(ptr) __builtin_prefetch(ptr, 0, 3) +#else +#define SNAPPY_PREFETCH(ptr) (void)(ptr) +#endif + #include #include #include @@ -1192,6 +1198,8 @@ std::pair DecompressBranchless( // The throughput is limited by instructions, unrolling the inner loop // twice reduces the amount of instructions checking limits and also // leads to reduced mov's. + + SNAPPY_PREFETCH(ip+128); for (int i = 0; i < 2; i++) { const uint8_t* old_ip = ip; assert(tag == ip[-1]);