On 25/07/17 18:33 +0100, Jonathan Wakely wrote:
On 25/07/17 18:31 +0100, Jonathan Wakely wrote:
On 18/07/17 05:53 +0000, Michael Collison wrote:
This is the second version of a patch for Aarc64 to add a vectorized mersenne twister to
libstdc++. The first version used intrinsics and included "arm_neon.h". After
feedback from the community this version uses only GCC vector extensions and Aarch64 simd
data types.
This patch adds an vectorized implementation of the mersenne twister random
number generator. This implementation is approximately 2.6 times faster than
the non-vectorized implementation.
Sample code to use the new generator would look like this:
#include <random>
#include <ext/random>
#include <iostream>
int
main()
{
__gnu_cxx::sfmt19937 mt(1729);
std::uniform_int_distribution<int> dist(0,1008);
for (int i = 0; i < 16; ++i)
{
std::cout << dist(mt) << " ";
}
}
Okay for trunk?
2017-07-16 Michael Collison <michael.colli...@arm.com>
Add optimized implementation of mersenne twister for aarch64
* config/cpu/aarch64/opt/ext/opt_random.h: New file.
(__arch64_recursion): New function.
(__aarch64_lsr_128): New function.
(__aarch64_lsl_128): New function.
(operator==): New function.
(simd_fast_mersenne_twister_engine): Implement
method _M_gen_rand.
* config/cpu/aarch64/opt/bits/opt_random.h: New file.
* include/ext/random: (simd_fast_mersenne_twister_engine):
add _M_state private array.
This has been committed, was it actually approved?
It looks OK anyway, apart from the doxygen comment on ext/opt_random.h
which names the wrong file: @file ext/random.tcc
Oh, it looks like this mail was sent to "gcc--patc...@gcc.gnu.org" and
then another copy was sent to gcc-patches, but without CCing the
libstdc++ list.
I'm not sure if Ulrich's "looks OK" was an explicit approval, but he
is a libstdc++ maintainer so let's say yes :)
https://gcc.gnu.org/ml/gcc-patches/2017-07/msg01017.html