xref: /aosp_15_r20/external/igt-gpu-tools/lib/igt_rand.c (revision d83cc019efdc2edc6c4b16e9034a3ceb8d35d77c)
1*d83cc019SAndroid Build Coastguard Worker #include "igt_rand.h"
2*d83cc019SAndroid Build Coastguard Worker 
3*d83cc019SAndroid Build Coastguard Worker /**
4*d83cc019SAndroid Build Coastguard Worker  * SECTION:igt_rand
5*d83cc019SAndroid Build Coastguard Worker  * @short_description: Random numbers helper library
6*d83cc019SAndroid Build Coastguard Worker  * @title: Random
7*d83cc019SAndroid Build Coastguard Worker  * @include: igt_rand.h
8*d83cc019SAndroid Build Coastguard Worker  */
9*d83cc019SAndroid Build Coastguard Worker 
10*d83cc019SAndroid Build Coastguard Worker static uint32_t global = 0x12345678;
11*d83cc019SAndroid Build Coastguard Worker 
hars_petruska_f54_1_random_seed(uint32_t new_state)12*d83cc019SAndroid Build Coastguard Worker uint32_t hars_petruska_f54_1_random_seed(uint32_t new_state)
13*d83cc019SAndroid Build Coastguard Worker {
14*d83cc019SAndroid Build Coastguard Worker 	uint32_t old_state = global;
15*d83cc019SAndroid Build Coastguard Worker 	global = new_state;
16*d83cc019SAndroid Build Coastguard Worker 	return old_state;
17*d83cc019SAndroid Build Coastguard Worker }
18*d83cc019SAndroid Build Coastguard Worker 
hars_petruska_f54_1_random(uint32_t * s)19*d83cc019SAndroid Build Coastguard Worker uint32_t hars_petruska_f54_1_random(uint32_t *s)
20*d83cc019SAndroid Build Coastguard Worker {
21*d83cc019SAndroid Build Coastguard Worker #define rol(x,k) ((x << k) | (x >> (32-k)))
22*d83cc019SAndroid Build Coastguard Worker 	return *s = (*s ^ rol(*s, 5) ^ rol(*s, 24)) + 0x37798849;
23*d83cc019SAndroid Build Coastguard Worker #undef rol
24*d83cc019SAndroid Build Coastguard Worker }
25*d83cc019SAndroid Build Coastguard Worker 
hars_petruska_f54_1_random_unsafe(void)26*d83cc019SAndroid Build Coastguard Worker uint32_t hars_petruska_f54_1_random_unsafe(void)
27*d83cc019SAndroid Build Coastguard Worker {
28*d83cc019SAndroid Build Coastguard Worker 	return hars_petruska_f54_1_random(&global);
29*d83cc019SAndroid Build Coastguard Worker }
30