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
|
result code = 0
standard error = {
ir_global_var @_SV01s : Ptr<@ThreadGroup vector<float,4>[64]>;
ir_global_var @_SV05input : Ptr<StructuredBuffer<vector<float,4>>>;
ir_func @_S031GroupMemoryBarrierWithGroupSyncp0pV : () -> void;
ir_global_var @_SV06output : Ptr<RWStructuredBuffer<vector<float,4>>>;
ir_func @_S04mainp3puuuV : (uint, uint, uint) -> void
{
block %1(
param %2 : uint,
param %3 : uint,
param %4 : uint):
let %5 : Ptr<vector<float,4>> = getElementPtr(@_SV01s, %3)
let %6 : StructuredBuffer<vector<float,4>> = load(@_SV05input)
let %7 : vector<float,4> = bufferLoad(%6, %2)
store(%5, %7)
let %8 : @ConstExpr uint = construct(1)
loop(%9, %10, %11, %8)
block %9(
param %12 : uint):
let %13 : @ConstExpr uint = construct(64)
let %14 : bool = cmpLT(%12, %13)
ifElse(%14, %15, %10, %15)
block %15:
call(@_S031GroupMemoryBarrierWithGroupSyncp0pV)
let %16 : Ptr<vector<float,4>> = getElementPtr(@_SV01s, %3)
let %17 : vector<float,4> = load(%16)
let %18 : uint = sub(%3, %12)
let %19 : Ptr<vector<float,4>> = getElementPtr(@_SV01s, %18)
let %20 : vector<float,4> = load(%19)
let %21 : vector<float,4> = add(%17, %20)
store(%16, %21)
unconditionalBranch(%11)
block %11:
let %22 : @ConstExpr uint = construct(1)
let %23 : uint = shl(%12, %22)
unconditionalBranch(%9, %23)
block %10:
call(@_S031GroupMemoryBarrierWithGroupSyncp0pV)
let %24 : RWStructuredBuffer<vector<float,4>> = load(@_SV06output)
let %25 : Ptr<vector<float,4>> = bufferElementRef(%24, %2)
let %26 : Ptr<vector<float,4>> = getElementPtr(@_SV01s, 0)
let %27 : vector<float,4> = load(%26)
store(%25, %27)
return_void()
}
}
standard output = {
}
|