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 Workeruint32_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 Workeruint32_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 Workeruint32_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