summaryrefslogtreecommitdiff
path: root/tests/ir/loop.slang.expected
blob: 0ff22c2b54f3ca65767257f661e4b9101d4ee508 (plain)
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 = {
}