diff --git a/examples/patbench.cc b/examples/patbench.cc index 20de5745..8180d2a9 100644 --- a/examples/patbench.cc +++ b/examples/patbench.cc @@ -112,6 +112,7 @@ * */ +#include #include #include #include @@ -151,6 +152,8 @@ using std::set; using std::min; using std::max; using std::copy; +using std::random_device; +using std::mt19937; enum Criterion { CRITERION_THROUGHPUT, @@ -731,7 +734,9 @@ int main(int argc, char **argv) { count++; cout << "." << std::flush; vector sv(s.begin(), s.end()); - random_shuffle(sv.begin(), sv.end()); + random_device rng; + mt19937 urng(rng()); + shuffle(sv.begin(), sv.end(), urng); unsigned groups = factor_max + 1; for (unsigned current_group = 0; current_group < groups; current_group++) { diff --git a/src/util/supervector/arch/arm/impl.cpp b/src/util/supervector/arch/arm/impl.cpp index ff1149a9..89497d3d 100644 --- a/src/util/supervector/arch/arm/impl.cpp +++ b/src/util/supervector/arch/arm/impl.cpp @@ -251,7 +251,7 @@ really_inline SuperVector<16> SuperVector<16>::eq(SuperVector<16> const &b) cons template <> really_inline typename SuperVector<16>::movemask_type SuperVector<16>::movemask(void) const { - SuperVector powers{0x8040201008040201UL}; + SuperVector powers = SuperVector::dup_u64(0x8040201008040201UL); // Compute the mask from the input uint8x16_t mask = (uint8x16_t) vpaddlq_u32(vpaddlq_u16(vpaddlq_u8(vandq_u8(u.u8x16[0], powers.u.u8x16[0]))));