summaryrefslogtreecommitdiffstats
path: root/tests/ir/loop.slang.expected
blob: 2a44ab8de9b20a3a1597d2a048b137c354b6adb9 (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
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 = {
}