yum-mirror/slang

Making it easier to work with shaders

git clone https://git.yummers.dev/yum-mirror/slang

Tim FoleyIR: next phase of "everything is an instruction" (#433)1fef9b4ab

master
1.8 KiB62 linesraw
1result code = 0
2standard error = {
3
4ir_global_var @_SV01s	: Ptr<@ThreadGroup vector<float,4>[64]>;
5
6ir_global_var @_SV05input	: Ptr<StructuredBuffer<vector<float,4>>>;
7let  %1	: int	= integer_constant(1)
8let  %2	: int	= integer_constant(64)
9
10ir_func @_S031GroupMemoryBarrierWithGroupSyncp0pV	: () -> void;
11
12ir_global_var @_SV06output	: Ptr<RWStructuredBuffer<vector<float,4>>>;
13let  %3	: int	= integer_constant(0)
14
15ir_func @_S04mainp3puuuV	: (uint, uint, uint) -> void
16{
17block %4(
18		param %5	: uint,
19		param %6	: uint,
20		param %7	: uint):
21	let  %8	: Ptr<vector<float,4>>	= getElementPtr(@_SV01s, %6)
22	let  %9	: StructuredBuffer<vector<float,4>>	= load(@_SV05input)
23	let  %10	: vector<float,4>	= bufferLoad(%9, %5)
24	store(%8, %10)
25	let  %11	: @ConstExpr uint	= construct(1)
26	loop(%12, %13, %14, %11)
27
28block %12(
29		param %15	: uint):
30	let  %16	: @ConstExpr uint	= construct(64)
31	let  %17	: bool	= cmpLT(%15, %16)
32	ifElse(%17, %18, %13, %18)
33
34block %18:
35	call @_S031GroupMemoryBarrierWithGroupSyncp0pV()
36	let  %19	: Ptr<vector<float,4>>	= getElementPtr(@_SV01s, %6)
37	let  %20	: vector<float,4>	= load(%19)
38	let  %21	: uint	= sub(%6, %15)
39	let  %22	: Ptr<vector<float,4>>	= getElementPtr(@_SV01s, %21)
40	let  %23	: vector<float,4>	= load(%22)
41	let  %24	: vector<float,4>	= add(%20, %23)
42	store(%19, %24)
43	unconditionalBranch(%14)
44
45block %14:
46	let  %25	: @ConstExpr uint	= construct(1)
47	let  %26	: uint	= shl(%15, %25)
48	unconditionalBranch(%12, %26)
49
50block %13:
51	call @_S031GroupMemoryBarrierWithGroupSyncp0pV()
52	let  %27	: RWStructuredBuffer<vector<float,4>>	= load(@_SV06output)
53	let  %28	: Ptr<vector<float,4>>	= bufferElementRef(%27, %5)
54	let  %29	: Ptr<vector<float,4>>	= getElementPtr(@_SV01s, 0)
55	let  %30	: vector<float,4>	= load(%29)
56	store(%28, %30)
57	return_void()
58}
59
60}
61standard output = {
62}