My working unpac space for OCaml projects in development
0
fork

Configure Feed

Select the types of activity you want to include in your feed.

Merge pull request #4509 from arpadpanyik-arm/revert_branch_opt

AArch64: Revert previous branch optimization

authored by

Yann Collet and committed by
GitHub
7ef9b303 7dd8bb53

+5 -22
+5 -22
vendor/git/zstd-c/lib/decompress/zstd_decompress_block.c
··· 1261 1261 const ZSTD_seqSymbol* const mlDInfo = seqState->stateML.table + seqState->stateML.state; 1262 1262 const ZSTD_seqSymbol* const ofDInfo = seqState->stateOffb.table + seqState->stateOffb.state; 1263 1263 # endif 1264 + (void)longOffsets; 1264 1265 seq.matchLength = mlDInfo->baseValue; 1265 1266 seq.litLength = llDInfo->baseValue; 1266 1267 { U32 const ofBase = ofDInfo->baseValue; ··· 1290 1291 ZSTD_STATIC_ASSERT(LONG_OFFSETS_MAX_EXTRA_BITS_32 == 5); 1291 1292 ZSTD_STATIC_ASSERT(STREAM_ACCUMULATOR_MIN_32 > LONG_OFFSETS_MAX_EXTRA_BITS_32); 1292 1293 ZSTD_STATIC_ASSERT(STREAM_ACCUMULATOR_MIN_32 - LONG_OFFSETS_MAX_EXTRA_BITS_32 >= MaxMLBits); 1293 - if (MEM_32bits() && longOffsets && (ofBits >= STREAM_ACCUMULATOR_MIN_32)) { 1294 - /* Always read extra bits, this keeps the logic simple, 1295 - * avoids branches, and avoids accidentally reading 0 bits. 1296 - */ 1297 - U32 const extraBits = LONG_OFFSETS_MAX_EXTRA_BITS_32; 1298 - offset = ofBase + (BIT_readBitsFast(&seqState->DStream, ofBits - extraBits) << extraBits); 1299 - BIT_reloadDStream(&seqState->DStream); 1300 - offset += BIT_readBitsFast(&seqState->DStream, extraBits); 1301 - } else { 1302 - offset = ofBase + BIT_readBitsFast(&seqState->DStream, ofBits/*>0*/); /* <= (ZSTD_WINDOWLOG_MAX-1) bits */ 1303 - if (MEM_32bits()) BIT_reloadDStream(&seqState->DStream); 1304 - } 1294 + offset = ofBase + BIT_readBitsFast(&seqState->DStream, ofBits/*>0*/); /* <= (ZSTD_WINDOWLOG_MAX-1) bits */ 1305 1295 prevOffset2 = prevOffset1; 1306 1296 prevOffset1 = prevOffset0; 1307 1297 prevOffset0 = offset; ··· 1332 1322 seq.offset = offset; 1333 1323 } 1334 1324 1335 - if (mlBits > 0) { 1325 + if (mlBits > 0) 1336 1326 seq.matchLength += BIT_readBitsFast(&seqState->DStream, mlBits/*>0*/); 1337 1327 1338 - if (MEM_32bits() && (mlBits+llBits >= STREAM_ACCUMULATOR_MIN_32-LONG_OFFSETS_MAX_EXTRA_BITS_32)) 1339 - BIT_reloadDStream(&seqState->DStream); 1340 - if (MEM_64bits() && (totalBits >= STREAM_ACCUMULATOR_MIN_64-(LLFSELog+MLFSELog+OffFSELog))) 1341 - BIT_reloadDStream(&seqState->DStream); 1342 - } 1328 + if (UNLIKELY(totalBits >= STREAM_ACCUMULATOR_MIN_64-(LLFSELog+MLFSELog+OffFSELog))) 1329 + BIT_reloadDStream(&seqState->DStream); 1343 1330 1344 1331 /* Ensure there are enough bits to read the rest of data in 64-bit mode. */ 1345 1332 ZSTD_STATIC_ASSERT(16+LLFSELog+MLFSELog+OffFSELog < STREAM_ACCUMULATOR_MIN_64); ··· 1347 1334 if (llBits > 0) 1348 1335 seq.litLength += BIT_readBitsFast(&seqState->DStream, llBits/*>0*/); 1349 1336 1350 - if (MEM_32bits()) 1351 - BIT_reloadDStream(&seqState->DStream); 1352 - 1353 1337 DEBUGLOG(6, "seq: litL=%u, matchL=%u, offset=%u", 1354 1338 (U32)seq.litLength, (U32)seq.matchLength, (U32)seq.offset); 1355 1339 ··· 1357 1341 /* Don't update FSE state for last sequence. */ 1358 1342 ZSTD_updateFseStateWithDInfo(&seqState->stateLL, &seqState->DStream, llNext, llnbBits); /* <= 9 bits */ 1359 1343 ZSTD_updateFseStateWithDInfo(&seqState->stateML, &seqState->DStream, mlNext, mlnbBits); /* <= 9 bits */ 1360 - if (MEM_32bits()) BIT_reloadDStream(&seqState->DStream); /* <= 18 bits */ 1361 1344 ZSTD_updateFseStateWithDInfo(&seqState->stateOffb, &seqState->DStream, ofNext, ofnbBits); /* <= 8 bits */ 1362 1345 BIT_reloadDStream(&seqState->DStream); 1363 1346 }