- #else /* HAVE_FAST_LZ_EXTEND */
-
- /* The bytes at indices 'best_len - 1' and '0' are less
- * important to check separately. But doing so still gives a
- * slight performance improvement, at least on x86_64, probably
- * because they create separate branches for the CPU to predict
- * independently of the branches in the main comparison loops.
- */
- if (matchptr[best_len - 1] != strptr[best_len - 1] ||
- matchptr[0] != strptr[0])
- goto next_match;
-
- for (len = 1; len < best_len - 1; len++)
- if (matchptr[len] != strptr[len])
- goto next_match;
-
- /* The match is the longest found so far ---
- * at least 'best_len' + 1 bytes. Continue extending it. */
-
- if (++best_len != max_len && strptr[best_len] == matchptr[best_len])
- while (++best_len != max_len)
- if (strptr[best_len] != matchptr[best_len])
- break;
-
- /* Record the match. */
- *lz_matchptr++ = (struct lz_match) {
- .len = best_len,
- .offset = strptr - matchptr,
- };
-
- /* Terminate the search if 'nice_len' was reached. */
- if (best_len >= nice_len)
- break;
- #endif /* !HAVE_FAST_LZ_EXTEND */
-