FazBrowse GitHub Viewer
|
Trending
|
URL:
|
Home
Tools:
[Download Repo ZIP]
[View Raw Code]
[Original HTTPS Page]
DirectXShaderCompiler/lib/Support/RandomNumberGenerator.cpp at main · microsoft/DirectXShaderCompiler · GitHub
Uh oh!
There was an error while loading.
Please reload this page
.
microsoft
/
DirectXShaderCompiler
Public
Notifications
You must be signed in to change notification settings
Fork
897
Star
3.6k
Code
Issues
653
Pull requests
141
Discussions
Actions
Projects
Wiki
Security and quality
0
Insights
Additional navigation options
Code
Issues
Pull requests
Discussions
Actions
Projects
Wiki
Security and quality
Insights
Expand file tree
Breadcrumbs
DirectXShaderCompiler
/
lib
/
Support
/
RandomNumberGenerator.cpp
Copy path
More file actions
More file actions
Latest commit
History
History
History
61 lines (52 loc) · 2.03 KB
Breadcrumbs
DirectXShaderCompiler
/
lib
/
Support
/
RandomNumberGenerator.cpp
Copy path
File metadata and controls
61 lines (52 loc) · 2.03 KB
Raw
Copy raw file
Download raw file
Open symbols panel
Edit and raw actions
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
//
===-- RandomNumberGenerator.cpp - Implement RNG class -------------------===//
//
//
The LLVM Compiler Infrastructure
//
//
This file is distributed under the University of Illinois Open Source
//
License. See LICENSE.TXT for details.
//
//
===----------------------------------------------------------------------===//
//
//
This file implements deterministic random number generation (RNG).
//
The current implementation is NOT cryptographically secure as it uses
//
the C++11 <random> facilities.
//
//
===----------------------------------------------------------------------===//
#
include
"
llvm/Support/RandomNumberGenerator.h
"
#
include
"
llvm/Support/CommandLine.h
"
#
include
"
llvm/Support/Debug.h
"
#
include
"
llvm/Support/raw_ostream.h
"
using
namespace
llvm
;
#
define
DEBUG_TYPE
"
rng
"
//
Tracking BUG: 19665
//
http://llvm.org/bugs/show_bug.cgi?id=19665
//
//
Do not change to cl::opt<uint64_t> since this silently breaks argument parsing.
#
if
0
// HLSL Change Starts - option pending
static cl::opt<unsigned long long>
Seed("rng-seed", cl::value_desc("seed"),
cl::desc("Seed for the random number generator"), cl::init(0));
#
else
static
const
unsigned
long
long
Seed =
0
;
//
will go boom in the constructor, can't be set yet
#
endif
//
HLSL Change Ends
RandomNumberGenerator::RandomNumberGenerator
(StringRef Salt) {
DEBUG
(
if
(Seed ==
0
)
dbgs
() <<
"
Warning! Using unseeded random number generator.
\n
"
);
//
Combine seed and salts using std::seed_seq.
//
Data: Seed-low, Seed-high, Salt
//
Note: std::seed_seq can only store 32-bit values, even though we
//
are using a 64-bit RNG. This isn't a problem since the Mersenne
//
twister constructor copies these correctly into its initial state.
std::vector<
uint32_t
> Data;
Data.
reserve
(
2
+ Salt.
size
());
Data.
push_back
(Seed);
Data.
push_back
(Seed >>
32
);
std::copy
(Salt.
begin
(), Salt.
end
(), Data.
end
());
std::seed_seq
SeedSeq
(Data.
begin
(), Data.
end
());
Generator.
seed
(SeedSeq);
}
uint_fast64_t
RandomNumberGenerator::operator
()() {
return
Generator
();
}
Back
|
FazBrowse Home
|
New Git URL