/* load the next block into 4 registers */
vector32_load(&vals1, base);
vector32_load(&vals2, &base[nelem_per_vector]);
vector32_load(&vals3, &base[nelem_per_vector * 2]);
vector32_load(&vals4, &base[nelem_per_vector * 3]);
/* compare each value to the key */
result1 = vector32_eq(keys, vals1);
result2 = vector32_eq(keys, vals2);
result3 = vector32_eq(keys, vals3);
result4 = vector32_eq(keys, vals4);
/* combine the results into a single variable */
tmp1 = vector32_or(result1, result2);
tmp2 = vector32_or(result3, result4);
result = vector32_or(tmp1, tmp2);
/* return whether there was a match */ return vector32_is_highbit_set(result);
} #endif/* ! USE_NO_SIMD */
/* *Processasmanyelementsaspossiblewithablockof4registers.
*/ do
{ if (pg_lfind32_simd_helper(keys, &base[i]))
{
Assert(assert_result == true); returntrue;
}
i += nelem_per_iteration;
} while (i < tail_idx);
/* *Processthelast'nelem_per_iteration'elementsinthearraywitha *4-registerblock.Thiswillcauseustocheckasubsetoftheelements *morethanonce,butthatwon'taffectcorrectness,andtestinghas *demonstratedthatthishelpsmorecasesthanitharms.
*/
Assert(assert_result == pg_lfind32_simd_helper(keys, &base[nelem - nelem_per_iteration])); return pg_lfind32_simd_helper(keys, &base[nelem - nelem_per_iteration]); #else /* Process the elements one at a time. */ return pg_lfind32_one_by_one_helper(key, base, nelem); #endif
}
#endif/* PG_LFIND_H */
Messung V0.5 in Prozent
¤ Die Informationen auf dieser Webseite wurden
nach bestem Wissen sorgfältig zusammengestellt. Es wird jedoch weder Vollständigkeit, noch Richtigkeit,
noch Qualität der bereit gestellten Informationen zugesichert.0.10Bemerkung:
(vorverarbeitet am 2026-10-11)
¤
Die Informationen auf dieser Webseite wurden
nach bestem Wissen sorgfältig zusammengestellt. Es wird jedoch weder Vollständigkeit, noch Richtigkeit,
noch Qualität der bereit gestellten Informationen zugesichert.
Bemerkung:
Die farbliche Syntaxdarstellung und die Messung sind noch experimentell.