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