Merge pull request #339 from steve-lunarg/intrinsics
HLSL: Implement atomic ops, bit conversions, fix minor intrinsics bugs
This commit is contained in:
commit
01de90bb1c
768
Test/baseResults/hlsl.intrinsics.comp.out
Normal file
768
Test/baseResults/hlsl.intrinsics.comp.out
Normal file
@ -0,0 +1,768 @@
|
||||
hlsl.intrinsics.comp
|
||||
Shader version: 450
|
||||
local_size = (1, 1, 1)
|
||||
0:? Sequence
|
||||
0:44 Function Definition: ComputeShaderFunction(f1;f1;f1;u1;u1; (temp float)
|
||||
0:17 Function Parameters:
|
||||
0:17 'inF0' (temp float)
|
||||
0:17 'inF1' (temp float)
|
||||
0:17 'inF2' (temp float)
|
||||
0:17 'inU0' (temp uint)
|
||||
0:17 'inU1' (temp uint)
|
||||
0:? Sequence
|
||||
0:21 all (global bool)
|
||||
0:21 'inF0' (temp float)
|
||||
0:24 AtomicAdd (global void)
|
||||
0:24 'gs_ua' (temp uint)
|
||||
0:24 'gs_ub' (temp uint)
|
||||
0:25 move second child to first child (temp uint)
|
||||
0:25 'out_u1' (temp uint)
|
||||
0:25 AtomicAdd (temp uint)
|
||||
0:25 'gs_ua' (temp uint)
|
||||
0:25 'gs_ub' (temp uint)
|
||||
0:26 AtomicAnd (global void)
|
||||
0:26 'gs_ua' (temp uint)
|
||||
0:26 'gs_ub' (temp uint)
|
||||
0:27 move second child to first child (temp uint)
|
||||
0:27 'out_u1' (temp uint)
|
||||
0:27 AtomicAnd (temp uint)
|
||||
0:27 'gs_ua' (temp uint)
|
||||
0:27 'gs_ub' (temp uint)
|
||||
0:28 move second child to first child (temp uint)
|
||||
0:28 'out_u1' (temp uint)
|
||||
0:28 AtomicCompSwap (temp uint)
|
||||
0:28 'gs_ua' (temp uint)
|
||||
0:28 'gs_ub' (temp uint)
|
||||
0:28 'gs_uc' (temp uint)
|
||||
0:29 move second child to first child (temp uint)
|
||||
0:29 'out_u1' (temp uint)
|
||||
0:29 AtomicExchange (temp uint)
|
||||
0:29 'gs_ua' (temp uint)
|
||||
0:29 'gs_ub' (temp uint)
|
||||
0:30 AtomicMax (global void)
|
||||
0:30 'gs_ua' (temp uint)
|
||||
0:30 'gs_ub' (temp uint)
|
||||
0:31 move second child to first child (temp uint)
|
||||
0:31 'out_u1' (temp uint)
|
||||
0:31 AtomicMax (temp uint)
|
||||
0:31 'gs_ua' (temp uint)
|
||||
0:31 'gs_ub' (temp uint)
|
||||
0:32 AtomicMin (global void)
|
||||
0:32 'gs_ua' (temp uint)
|
||||
0:32 'gs_ub' (temp uint)
|
||||
0:33 move second child to first child (temp uint)
|
||||
0:33 'out_u1' (temp uint)
|
||||
0:33 AtomicMin (temp uint)
|
||||
0:33 'gs_ua' (temp uint)
|
||||
0:33 'gs_ub' (temp uint)
|
||||
0:34 AtomicOr (global void)
|
||||
0:34 'gs_ua' (temp uint)
|
||||
0:34 'gs_ub' (temp uint)
|
||||
0:35 move second child to first child (temp uint)
|
||||
0:35 'out_u1' (temp uint)
|
||||
0:35 AtomicOr (temp uint)
|
||||
0:35 'gs_ua' (temp uint)
|
||||
0:35 'gs_ub' (temp uint)
|
||||
0:36 AtomicXor (global void)
|
||||
0:36 'gs_ua' (temp uint)
|
||||
0:36 'gs_ub' (temp uint)
|
||||
0:37 move second child to first child (temp uint)
|
||||
0:37 'out_u1' (temp uint)
|
||||
0:37 AtomicXor (temp uint)
|
||||
0:37 'gs_ua' (temp uint)
|
||||
0:37 'gs_ub' (temp uint)
|
||||
0:41 Branch: Return with expression
|
||||
0:41 Constant:
|
||||
0:41 0.000000
|
||||
0:50 Function Definition: ComputeShaderFunction(vf1;vf1;vf1; (temp 1-component vector of float)
|
||||
0:45 Function Parameters:
|
||||
0:45 'inF0' (temp 1-component vector of float)
|
||||
0:45 'inF1' (temp 1-component vector of float)
|
||||
0:45 'inF2' (temp 1-component vector of float)
|
||||
0:? Sequence
|
||||
0:47 Branch: Return with expression
|
||||
0:47 Constant:
|
||||
0:47 0.000000
|
||||
0:77 Function Definition: ComputeShaderFunction(vf2;vf2;vf2;vu2;vu2; (temp 2-component vector of float)
|
||||
0:51 Function Parameters:
|
||||
0:51 'inF0' (temp 2-component vector of float)
|
||||
0:51 'inF1' (temp 2-component vector of float)
|
||||
0:51 'inF2' (temp 2-component vector of float)
|
||||
0:51 'inU0' (temp 2-component vector of uint)
|
||||
0:51 'inU1' (temp 2-component vector of uint)
|
||||
0:? Sequence
|
||||
0:55 all (global bool)
|
||||
0:55 'inF0' (temp 2-component vector of float)
|
||||
0:58 AtomicAdd (global void)
|
||||
0:58 'gs_ua2' (temp 2-component vector of uint)
|
||||
0:58 'gs_ub2' (temp 2-component vector of uint)
|
||||
0:59 move second child to first child (temp 2-component vector of uint)
|
||||
0:59 'out_u2' (temp 2-component vector of uint)
|
||||
0:59 AtomicAdd (temp 2-component vector of uint)
|
||||
0:59 'gs_ua2' (temp 2-component vector of uint)
|
||||
0:59 'gs_ub2' (temp 2-component vector of uint)
|
||||
0:60 AtomicAnd (global void)
|
||||
0:60 'gs_ua2' (temp 2-component vector of uint)
|
||||
0:60 'gs_ub2' (temp 2-component vector of uint)
|
||||
0:61 move second child to first child (temp 2-component vector of uint)
|
||||
0:61 'out_u2' (temp 2-component vector of uint)
|
||||
0:61 AtomicAnd (temp 2-component vector of uint)
|
||||
0:61 'gs_ua2' (temp 2-component vector of uint)
|
||||
0:61 'gs_ub2' (temp 2-component vector of uint)
|
||||
0:62 move second child to first child (temp 2-component vector of uint)
|
||||
0:62 'out_u2' (temp 2-component vector of uint)
|
||||
0:62 AtomicCompSwap (temp 2-component vector of uint)
|
||||
0:62 'gs_ua2' (temp 2-component vector of uint)
|
||||
0:62 'gs_ub2' (temp 2-component vector of uint)
|
||||
0:62 'gs_uc2' (temp 2-component vector of uint)
|
||||
0:63 move second child to first child (temp 2-component vector of uint)
|
||||
0:63 'out_u2' (temp 2-component vector of uint)
|
||||
0:63 AtomicExchange (temp 2-component vector of uint)
|
||||
0:63 'gs_ua2' (temp 2-component vector of uint)
|
||||
0:63 'gs_ub2' (temp 2-component vector of uint)
|
||||
0:64 AtomicMax (global void)
|
||||
0:64 'gs_ua2' (temp 2-component vector of uint)
|
||||
0:64 'gs_ub2' (temp 2-component vector of uint)
|
||||
0:65 move second child to first child (temp 2-component vector of uint)
|
||||
0:65 'out_u2' (temp 2-component vector of uint)
|
||||
0:65 AtomicMax (temp 2-component vector of uint)
|
||||
0:65 'gs_ua2' (temp 2-component vector of uint)
|
||||
0:65 'gs_ub2' (temp 2-component vector of uint)
|
||||
0:66 AtomicMin (global void)
|
||||
0:66 'gs_ua2' (temp 2-component vector of uint)
|
||||
0:66 'gs_ub2' (temp 2-component vector of uint)
|
||||
0:67 move second child to first child (temp 2-component vector of uint)
|
||||
0:67 'out_u2' (temp 2-component vector of uint)
|
||||
0:67 AtomicMin (temp 2-component vector of uint)
|
||||
0:67 'gs_ua2' (temp 2-component vector of uint)
|
||||
0:67 'gs_ub2' (temp 2-component vector of uint)
|
||||
0:68 AtomicOr (global void)
|
||||
0:68 'gs_ua2' (temp 2-component vector of uint)
|
||||
0:68 'gs_ub2' (temp 2-component vector of uint)
|
||||
0:69 move second child to first child (temp 2-component vector of uint)
|
||||
0:69 'out_u2' (temp 2-component vector of uint)
|
||||
0:69 AtomicOr (temp 2-component vector of uint)
|
||||
0:69 'gs_ua2' (temp 2-component vector of uint)
|
||||
0:69 'gs_ub2' (temp 2-component vector of uint)
|
||||
0:70 AtomicXor (global void)
|
||||
0:70 'gs_ua2' (temp 2-component vector of uint)
|
||||
0:70 'gs_ub2' (temp 2-component vector of uint)
|
||||
0:71 move second child to first child (temp 2-component vector of uint)
|
||||
0:71 'out_u2' (temp 2-component vector of uint)
|
||||
0:71 AtomicXor (temp 2-component vector of uint)
|
||||
0:71 'gs_ua2' (temp 2-component vector of uint)
|
||||
0:71 'gs_ub2' (temp 2-component vector of uint)
|
||||
0:74 Branch: Return with expression
|
||||
0:? Constant:
|
||||
0:? 1.000000
|
||||
0:? 2.000000
|
||||
0:104 Function Definition: ComputeShaderFunction(vf3;vf3;vf3;vu3;vu3; (temp 3-component vector of float)
|
||||
0:78 Function Parameters:
|
||||
0:78 'inF0' (temp 3-component vector of float)
|
||||
0:78 'inF1' (temp 3-component vector of float)
|
||||
0:78 'inF2' (temp 3-component vector of float)
|
||||
0:78 'inU0' (temp 3-component vector of uint)
|
||||
0:78 'inU1' (temp 3-component vector of uint)
|
||||
0:? Sequence
|
||||
0:82 all (global bool)
|
||||
0:82 'inF0' (temp 3-component vector of float)
|
||||
0:85 AtomicAdd (global void)
|
||||
0:85 'gs_ua3' (temp 3-component vector of uint)
|
||||
0:85 'gs_ub3' (temp 3-component vector of uint)
|
||||
0:86 move second child to first child (temp 3-component vector of uint)
|
||||
0:86 'out_u3' (temp 3-component vector of uint)
|
||||
0:86 AtomicAdd (temp 3-component vector of uint)
|
||||
0:86 'gs_ua3' (temp 3-component vector of uint)
|
||||
0:86 'gs_ub3' (temp 3-component vector of uint)
|
||||
0:87 AtomicAnd (global void)
|
||||
0:87 'gs_ua3' (temp 3-component vector of uint)
|
||||
0:87 'gs_ub3' (temp 3-component vector of uint)
|
||||
0:88 move second child to first child (temp 3-component vector of uint)
|
||||
0:88 'out_u3' (temp 3-component vector of uint)
|
||||
0:88 AtomicAnd (temp 3-component vector of uint)
|
||||
0:88 'gs_ua3' (temp 3-component vector of uint)
|
||||
0:88 'gs_ub3' (temp 3-component vector of uint)
|
||||
0:89 move second child to first child (temp 3-component vector of uint)
|
||||
0:89 'out_u3' (temp 3-component vector of uint)
|
||||
0:89 AtomicCompSwap (temp 3-component vector of uint)
|
||||
0:89 'gs_ua3' (temp 3-component vector of uint)
|
||||
0:89 'gs_ub3' (temp 3-component vector of uint)
|
||||
0:89 'gs_uc3' (temp 3-component vector of uint)
|
||||
0:90 move second child to first child (temp 3-component vector of uint)
|
||||
0:90 'out_u3' (temp 3-component vector of uint)
|
||||
0:90 AtomicExchange (temp 3-component vector of uint)
|
||||
0:90 'gs_ua3' (temp 3-component vector of uint)
|
||||
0:90 'gs_ub3' (temp 3-component vector of uint)
|
||||
0:91 AtomicMax (global void)
|
||||
0:91 'gs_ua3' (temp 3-component vector of uint)
|
||||
0:91 'gs_ub3' (temp 3-component vector of uint)
|
||||
0:92 move second child to first child (temp 3-component vector of uint)
|
||||
0:92 'out_u3' (temp 3-component vector of uint)
|
||||
0:92 AtomicMax (temp 3-component vector of uint)
|
||||
0:92 'gs_ua3' (temp 3-component vector of uint)
|
||||
0:92 'gs_ub3' (temp 3-component vector of uint)
|
||||
0:93 AtomicMin (global void)
|
||||
0:93 'gs_ua3' (temp 3-component vector of uint)
|
||||
0:93 'gs_ub3' (temp 3-component vector of uint)
|
||||
0:94 move second child to first child (temp 3-component vector of uint)
|
||||
0:94 'out_u3' (temp 3-component vector of uint)
|
||||
0:94 AtomicMin (temp 3-component vector of uint)
|
||||
0:94 'gs_ua3' (temp 3-component vector of uint)
|
||||
0:94 'gs_ub3' (temp 3-component vector of uint)
|
||||
0:95 AtomicOr (global void)
|
||||
0:95 'gs_ua3' (temp 3-component vector of uint)
|
||||
0:95 'gs_ub3' (temp 3-component vector of uint)
|
||||
0:96 move second child to first child (temp 3-component vector of uint)
|
||||
0:96 'out_u3' (temp 3-component vector of uint)
|
||||
0:96 AtomicOr (temp 3-component vector of uint)
|
||||
0:96 'gs_ua3' (temp 3-component vector of uint)
|
||||
0:96 'gs_ub3' (temp 3-component vector of uint)
|
||||
0:97 AtomicXor (global void)
|
||||
0:97 'gs_ua3' (temp 3-component vector of uint)
|
||||
0:97 'gs_ub3' (temp 3-component vector of uint)
|
||||
0:98 move second child to first child (temp 3-component vector of uint)
|
||||
0:98 'out_u3' (temp 3-component vector of uint)
|
||||
0:98 AtomicXor (temp 3-component vector of uint)
|
||||
0:98 'gs_ua3' (temp 3-component vector of uint)
|
||||
0:98 'gs_ub3' (temp 3-component vector of uint)
|
||||
0:101 Branch: Return with expression
|
||||
0:? Constant:
|
||||
0:? 1.000000
|
||||
0:? 2.000000
|
||||
0:? 3.000000
|
||||
0:130 Function Definition: ComputeShaderFunction(vf4;vf4;vf4;vu4;vu4; (temp 4-component vector of float)
|
||||
0:105 Function Parameters:
|
||||
0:105 'inF0' (temp 4-component vector of float)
|
||||
0:105 'inF1' (temp 4-component vector of float)
|
||||
0:105 'inF2' (temp 4-component vector of float)
|
||||
0:105 'inU0' (temp 4-component vector of uint)
|
||||
0:105 'inU1' (temp 4-component vector of uint)
|
||||
0:? Sequence
|
||||
0:109 all (global bool)
|
||||
0:109 'inF0' (temp 4-component vector of float)
|
||||
0:112 AtomicAdd (global void)
|
||||
0:112 'gs_ua4' (temp 4-component vector of uint)
|
||||
0:112 'gs_ub4' (temp 4-component vector of uint)
|
||||
0:113 move second child to first child (temp 4-component vector of uint)
|
||||
0:113 'out_u4' (temp 4-component vector of uint)
|
||||
0:113 AtomicAdd (temp 4-component vector of uint)
|
||||
0:113 'gs_ua4' (temp 4-component vector of uint)
|
||||
0:113 'gs_ub4' (temp 4-component vector of uint)
|
||||
0:114 AtomicAnd (global void)
|
||||
0:114 'gs_ua4' (temp 4-component vector of uint)
|
||||
0:114 'gs_ub4' (temp 4-component vector of uint)
|
||||
0:115 move second child to first child (temp 4-component vector of uint)
|
||||
0:115 'out_u4' (temp 4-component vector of uint)
|
||||
0:115 AtomicAnd (temp 4-component vector of uint)
|
||||
0:115 'gs_ua4' (temp 4-component vector of uint)
|
||||
0:115 'gs_ub4' (temp 4-component vector of uint)
|
||||
0:116 move second child to first child (temp 4-component vector of uint)
|
||||
0:116 'out_u4' (temp 4-component vector of uint)
|
||||
0:116 AtomicCompSwap (temp 4-component vector of uint)
|
||||
0:116 'gs_ua4' (temp 4-component vector of uint)
|
||||
0:116 'gs_ub4' (temp 4-component vector of uint)
|
||||
0:116 'gs_uc4' (temp 4-component vector of uint)
|
||||
0:117 move second child to first child (temp 4-component vector of uint)
|
||||
0:117 'out_u4' (temp 4-component vector of uint)
|
||||
0:117 AtomicExchange (temp 4-component vector of uint)
|
||||
0:117 'gs_ua4' (temp 4-component vector of uint)
|
||||
0:117 'gs_ub4' (temp 4-component vector of uint)
|
||||
0:118 AtomicMax (global void)
|
||||
0:118 'gs_ua4' (temp 4-component vector of uint)
|
||||
0:118 'gs_ub4' (temp 4-component vector of uint)
|
||||
0:119 move second child to first child (temp 4-component vector of uint)
|
||||
0:119 'out_u4' (temp 4-component vector of uint)
|
||||
0:119 AtomicMax (temp 4-component vector of uint)
|
||||
0:119 'gs_ua4' (temp 4-component vector of uint)
|
||||
0:119 'gs_ub4' (temp 4-component vector of uint)
|
||||
0:120 AtomicMin (global void)
|
||||
0:120 'gs_ua4' (temp 4-component vector of uint)
|
||||
0:120 'gs_ub4' (temp 4-component vector of uint)
|
||||
0:121 move second child to first child (temp 4-component vector of uint)
|
||||
0:121 'out_u4' (temp 4-component vector of uint)
|
||||
0:121 AtomicMin (temp 4-component vector of uint)
|
||||
0:121 'gs_ua4' (temp 4-component vector of uint)
|
||||
0:121 'gs_ub4' (temp 4-component vector of uint)
|
||||
0:122 AtomicOr (global void)
|
||||
0:122 'gs_ua4' (temp 4-component vector of uint)
|
||||
0:122 'gs_ub4' (temp 4-component vector of uint)
|
||||
0:123 move second child to first child (temp 4-component vector of uint)
|
||||
0:123 'out_u4' (temp 4-component vector of uint)
|
||||
0:123 AtomicOr (temp 4-component vector of uint)
|
||||
0:123 'gs_ua4' (temp 4-component vector of uint)
|
||||
0:123 'gs_ub4' (temp 4-component vector of uint)
|
||||
0:124 AtomicXor (global void)
|
||||
0:124 'gs_ua4' (temp 4-component vector of uint)
|
||||
0:124 'gs_ub4' (temp 4-component vector of uint)
|
||||
0:125 move second child to first child (temp 4-component vector of uint)
|
||||
0:125 'out_u4' (temp 4-component vector of uint)
|
||||
0:125 AtomicXor (temp 4-component vector of uint)
|
||||
0:125 'gs_ua4' (temp 4-component vector of uint)
|
||||
0:125 'gs_ub4' (temp 4-component vector of uint)
|
||||
0:128 Branch: Return with expression
|
||||
0:? Constant:
|
||||
0:? 1.000000
|
||||
0:? 2.000000
|
||||
0:? 3.000000
|
||||
0:? 4.000000
|
||||
0:? Linker Objects
|
||||
0:? 'gs_ua' (temp uint)
|
||||
0:? 'gs_ub' (temp uint)
|
||||
0:? 'gs_uc' (temp uint)
|
||||
0:? 'gs_ua2' (temp 2-component vector of uint)
|
||||
0:? 'gs_ub2' (temp 2-component vector of uint)
|
||||
0:? 'gs_uc2' (temp 2-component vector of uint)
|
||||
0:? 'gs_ua3' (temp 3-component vector of uint)
|
||||
0:? 'gs_ub3' (temp 3-component vector of uint)
|
||||
0:? 'gs_uc3' (temp 3-component vector of uint)
|
||||
0:? 'gs_ua4' (temp 4-component vector of uint)
|
||||
0:? 'gs_ub4' (temp 4-component vector of uint)
|
||||
0:? 'gs_uc4' (temp 4-component vector of uint)
|
||||
|
||||
|
||||
Linked compute stage:
|
||||
|
||||
|
||||
Shader version: 450
|
||||
local_size = (1, 1, 1)
|
||||
0:? Sequence
|
||||
0:44 Function Definition: ComputeShaderFunction(f1;f1;f1;u1;u1; (temp float)
|
||||
0:17 Function Parameters:
|
||||
0:17 'inF0' (temp float)
|
||||
0:17 'inF1' (temp float)
|
||||
0:17 'inF2' (temp float)
|
||||
0:17 'inU0' (temp uint)
|
||||
0:17 'inU1' (temp uint)
|
||||
0:? Sequence
|
||||
0:21 all (global bool)
|
||||
0:21 'inF0' (temp float)
|
||||
0:24 AtomicAdd (global void)
|
||||
0:24 'gs_ua' (temp uint)
|
||||
0:24 'gs_ub' (temp uint)
|
||||
0:25 move second child to first child (temp uint)
|
||||
0:25 'out_u1' (temp uint)
|
||||
0:25 AtomicAdd (temp uint)
|
||||
0:25 'gs_ua' (temp uint)
|
||||
0:25 'gs_ub' (temp uint)
|
||||
0:26 AtomicAnd (global void)
|
||||
0:26 'gs_ua' (temp uint)
|
||||
0:26 'gs_ub' (temp uint)
|
||||
0:27 move second child to first child (temp uint)
|
||||
0:27 'out_u1' (temp uint)
|
||||
0:27 AtomicAnd (temp uint)
|
||||
0:27 'gs_ua' (temp uint)
|
||||
0:27 'gs_ub' (temp uint)
|
||||
0:28 move second child to first child (temp uint)
|
||||
0:28 'out_u1' (temp uint)
|
||||
0:28 AtomicCompSwap (temp uint)
|
||||
0:28 'gs_ua' (temp uint)
|
||||
0:28 'gs_ub' (temp uint)
|
||||
0:28 'gs_uc' (temp uint)
|
||||
0:29 move second child to first child (temp uint)
|
||||
0:29 'out_u1' (temp uint)
|
||||
0:29 AtomicExchange (temp uint)
|
||||
0:29 'gs_ua' (temp uint)
|
||||
0:29 'gs_ub' (temp uint)
|
||||
0:30 AtomicMax (global void)
|
||||
0:30 'gs_ua' (temp uint)
|
||||
0:30 'gs_ub' (temp uint)
|
||||
0:31 move second child to first child (temp uint)
|
||||
0:31 'out_u1' (temp uint)
|
||||
0:31 AtomicMax (temp uint)
|
||||
0:31 'gs_ua' (temp uint)
|
||||
0:31 'gs_ub' (temp uint)
|
||||
0:32 AtomicMin (global void)
|
||||
0:32 'gs_ua' (temp uint)
|
||||
0:32 'gs_ub' (temp uint)
|
||||
0:33 move second child to first child (temp uint)
|
||||
0:33 'out_u1' (temp uint)
|
||||
0:33 AtomicMin (temp uint)
|
||||
0:33 'gs_ua' (temp uint)
|
||||
0:33 'gs_ub' (temp uint)
|
||||
0:34 AtomicOr (global void)
|
||||
0:34 'gs_ua' (temp uint)
|
||||
0:34 'gs_ub' (temp uint)
|
||||
0:35 move second child to first child (temp uint)
|
||||
0:35 'out_u1' (temp uint)
|
||||
0:35 AtomicOr (temp uint)
|
||||
0:35 'gs_ua' (temp uint)
|
||||
0:35 'gs_ub' (temp uint)
|
||||
0:36 AtomicXor (global void)
|
||||
0:36 'gs_ua' (temp uint)
|
||||
0:36 'gs_ub' (temp uint)
|
||||
0:37 move second child to first child (temp uint)
|
||||
0:37 'out_u1' (temp uint)
|
||||
0:37 AtomicXor (temp uint)
|
||||
0:37 'gs_ua' (temp uint)
|
||||
0:37 'gs_ub' (temp uint)
|
||||
0:41 Branch: Return with expression
|
||||
0:41 Constant:
|
||||
0:41 0.000000
|
||||
0:50 Function Definition: ComputeShaderFunction(vf1;vf1;vf1; (temp 1-component vector of float)
|
||||
0:45 Function Parameters:
|
||||
0:45 'inF0' (temp 1-component vector of float)
|
||||
0:45 'inF1' (temp 1-component vector of float)
|
||||
0:45 'inF2' (temp 1-component vector of float)
|
||||
0:? Sequence
|
||||
0:47 Branch: Return with expression
|
||||
0:47 Constant:
|
||||
0:47 0.000000
|
||||
0:77 Function Definition: ComputeShaderFunction(vf2;vf2;vf2;vu2;vu2; (temp 2-component vector of float)
|
||||
0:51 Function Parameters:
|
||||
0:51 'inF0' (temp 2-component vector of float)
|
||||
0:51 'inF1' (temp 2-component vector of float)
|
||||
0:51 'inF2' (temp 2-component vector of float)
|
||||
0:51 'inU0' (temp 2-component vector of uint)
|
||||
0:51 'inU1' (temp 2-component vector of uint)
|
||||
0:? Sequence
|
||||
0:55 all (global bool)
|
||||
0:55 'inF0' (temp 2-component vector of float)
|
||||
0:58 AtomicAdd (global void)
|
||||
0:58 'gs_ua2' (temp 2-component vector of uint)
|
||||
0:58 'gs_ub2' (temp 2-component vector of uint)
|
||||
0:59 move second child to first child (temp 2-component vector of uint)
|
||||
0:59 'out_u2' (temp 2-component vector of uint)
|
||||
0:59 AtomicAdd (temp 2-component vector of uint)
|
||||
0:59 'gs_ua2' (temp 2-component vector of uint)
|
||||
0:59 'gs_ub2' (temp 2-component vector of uint)
|
||||
0:60 AtomicAnd (global void)
|
||||
0:60 'gs_ua2' (temp 2-component vector of uint)
|
||||
0:60 'gs_ub2' (temp 2-component vector of uint)
|
||||
0:61 move second child to first child (temp 2-component vector of uint)
|
||||
0:61 'out_u2' (temp 2-component vector of uint)
|
||||
0:61 AtomicAnd (temp 2-component vector of uint)
|
||||
0:61 'gs_ua2' (temp 2-component vector of uint)
|
||||
0:61 'gs_ub2' (temp 2-component vector of uint)
|
||||
0:62 move second child to first child (temp 2-component vector of uint)
|
||||
0:62 'out_u2' (temp 2-component vector of uint)
|
||||
0:62 AtomicCompSwap (temp 2-component vector of uint)
|
||||
0:62 'gs_ua2' (temp 2-component vector of uint)
|
||||
0:62 'gs_ub2' (temp 2-component vector of uint)
|
||||
0:62 'gs_uc2' (temp 2-component vector of uint)
|
||||
0:63 move second child to first child (temp 2-component vector of uint)
|
||||
0:63 'out_u2' (temp 2-component vector of uint)
|
||||
0:63 AtomicExchange (temp 2-component vector of uint)
|
||||
0:63 'gs_ua2' (temp 2-component vector of uint)
|
||||
0:63 'gs_ub2' (temp 2-component vector of uint)
|
||||
0:64 AtomicMax (global void)
|
||||
0:64 'gs_ua2' (temp 2-component vector of uint)
|
||||
0:64 'gs_ub2' (temp 2-component vector of uint)
|
||||
0:65 move second child to first child (temp 2-component vector of uint)
|
||||
0:65 'out_u2' (temp 2-component vector of uint)
|
||||
0:65 AtomicMax (temp 2-component vector of uint)
|
||||
0:65 'gs_ua2' (temp 2-component vector of uint)
|
||||
0:65 'gs_ub2' (temp 2-component vector of uint)
|
||||
0:66 AtomicMin (global void)
|
||||
0:66 'gs_ua2' (temp 2-component vector of uint)
|
||||
0:66 'gs_ub2' (temp 2-component vector of uint)
|
||||
0:67 move second child to first child (temp 2-component vector of uint)
|
||||
0:67 'out_u2' (temp 2-component vector of uint)
|
||||
0:67 AtomicMin (temp 2-component vector of uint)
|
||||
0:67 'gs_ua2' (temp 2-component vector of uint)
|
||||
0:67 'gs_ub2' (temp 2-component vector of uint)
|
||||
0:68 AtomicOr (global void)
|
||||
0:68 'gs_ua2' (temp 2-component vector of uint)
|
||||
0:68 'gs_ub2' (temp 2-component vector of uint)
|
||||
0:69 move second child to first child (temp 2-component vector of uint)
|
||||
0:69 'out_u2' (temp 2-component vector of uint)
|
||||
0:69 AtomicOr (temp 2-component vector of uint)
|
||||
0:69 'gs_ua2' (temp 2-component vector of uint)
|
||||
0:69 'gs_ub2' (temp 2-component vector of uint)
|
||||
0:70 AtomicXor (global void)
|
||||
0:70 'gs_ua2' (temp 2-component vector of uint)
|
||||
0:70 'gs_ub2' (temp 2-component vector of uint)
|
||||
0:71 move second child to first child (temp 2-component vector of uint)
|
||||
0:71 'out_u2' (temp 2-component vector of uint)
|
||||
0:71 AtomicXor (temp 2-component vector of uint)
|
||||
0:71 'gs_ua2' (temp 2-component vector of uint)
|
||||
0:71 'gs_ub2' (temp 2-component vector of uint)
|
||||
0:74 Branch: Return with expression
|
||||
0:? Constant:
|
||||
0:? 1.000000
|
||||
0:? 2.000000
|
||||
0:104 Function Definition: ComputeShaderFunction(vf3;vf3;vf3;vu3;vu3; (temp 3-component vector of float)
|
||||
0:78 Function Parameters:
|
||||
0:78 'inF0' (temp 3-component vector of float)
|
||||
0:78 'inF1' (temp 3-component vector of float)
|
||||
0:78 'inF2' (temp 3-component vector of float)
|
||||
0:78 'inU0' (temp 3-component vector of uint)
|
||||
0:78 'inU1' (temp 3-component vector of uint)
|
||||
0:? Sequence
|
||||
0:82 all (global bool)
|
||||
0:82 'inF0' (temp 3-component vector of float)
|
||||
0:85 AtomicAdd (global void)
|
||||
0:85 'gs_ua3' (temp 3-component vector of uint)
|
||||
0:85 'gs_ub3' (temp 3-component vector of uint)
|
||||
0:86 move second child to first child (temp 3-component vector of uint)
|
||||
0:86 'out_u3' (temp 3-component vector of uint)
|
||||
0:86 AtomicAdd (temp 3-component vector of uint)
|
||||
0:86 'gs_ua3' (temp 3-component vector of uint)
|
||||
0:86 'gs_ub3' (temp 3-component vector of uint)
|
||||
0:87 AtomicAnd (global void)
|
||||
0:87 'gs_ua3' (temp 3-component vector of uint)
|
||||
0:87 'gs_ub3' (temp 3-component vector of uint)
|
||||
0:88 move second child to first child (temp 3-component vector of uint)
|
||||
0:88 'out_u3' (temp 3-component vector of uint)
|
||||
0:88 AtomicAnd (temp 3-component vector of uint)
|
||||
0:88 'gs_ua3' (temp 3-component vector of uint)
|
||||
0:88 'gs_ub3' (temp 3-component vector of uint)
|
||||
0:89 move second child to first child (temp 3-component vector of uint)
|
||||
0:89 'out_u3' (temp 3-component vector of uint)
|
||||
0:89 AtomicCompSwap (temp 3-component vector of uint)
|
||||
0:89 'gs_ua3' (temp 3-component vector of uint)
|
||||
0:89 'gs_ub3' (temp 3-component vector of uint)
|
||||
0:89 'gs_uc3' (temp 3-component vector of uint)
|
||||
0:90 move second child to first child (temp 3-component vector of uint)
|
||||
0:90 'out_u3' (temp 3-component vector of uint)
|
||||
0:90 AtomicExchange (temp 3-component vector of uint)
|
||||
0:90 'gs_ua3' (temp 3-component vector of uint)
|
||||
0:90 'gs_ub3' (temp 3-component vector of uint)
|
||||
0:91 AtomicMax (global void)
|
||||
0:91 'gs_ua3' (temp 3-component vector of uint)
|
||||
0:91 'gs_ub3' (temp 3-component vector of uint)
|
||||
0:92 move second child to first child (temp 3-component vector of uint)
|
||||
0:92 'out_u3' (temp 3-component vector of uint)
|
||||
0:92 AtomicMax (temp 3-component vector of uint)
|
||||
0:92 'gs_ua3' (temp 3-component vector of uint)
|
||||
0:92 'gs_ub3' (temp 3-component vector of uint)
|
||||
0:93 AtomicMin (global void)
|
||||
0:93 'gs_ua3' (temp 3-component vector of uint)
|
||||
0:93 'gs_ub3' (temp 3-component vector of uint)
|
||||
0:94 move second child to first child (temp 3-component vector of uint)
|
||||
0:94 'out_u3' (temp 3-component vector of uint)
|
||||
0:94 AtomicMin (temp 3-component vector of uint)
|
||||
0:94 'gs_ua3' (temp 3-component vector of uint)
|
||||
0:94 'gs_ub3' (temp 3-component vector of uint)
|
||||
0:95 AtomicOr (global void)
|
||||
0:95 'gs_ua3' (temp 3-component vector of uint)
|
||||
0:95 'gs_ub3' (temp 3-component vector of uint)
|
||||
0:96 move second child to first child (temp 3-component vector of uint)
|
||||
0:96 'out_u3' (temp 3-component vector of uint)
|
||||
0:96 AtomicOr (temp 3-component vector of uint)
|
||||
0:96 'gs_ua3' (temp 3-component vector of uint)
|
||||
0:96 'gs_ub3' (temp 3-component vector of uint)
|
||||
0:97 AtomicXor (global void)
|
||||
0:97 'gs_ua3' (temp 3-component vector of uint)
|
||||
0:97 'gs_ub3' (temp 3-component vector of uint)
|
||||
0:98 move second child to first child (temp 3-component vector of uint)
|
||||
0:98 'out_u3' (temp 3-component vector of uint)
|
||||
0:98 AtomicXor (temp 3-component vector of uint)
|
||||
0:98 'gs_ua3' (temp 3-component vector of uint)
|
||||
0:98 'gs_ub3' (temp 3-component vector of uint)
|
||||
0:101 Branch: Return with expression
|
||||
0:? Constant:
|
||||
0:? 1.000000
|
||||
0:? 2.000000
|
||||
0:? 3.000000
|
||||
0:130 Function Definition: ComputeShaderFunction(vf4;vf4;vf4;vu4;vu4; (temp 4-component vector of float)
|
||||
0:105 Function Parameters:
|
||||
0:105 'inF0' (temp 4-component vector of float)
|
||||
0:105 'inF1' (temp 4-component vector of float)
|
||||
0:105 'inF2' (temp 4-component vector of float)
|
||||
0:105 'inU0' (temp 4-component vector of uint)
|
||||
0:105 'inU1' (temp 4-component vector of uint)
|
||||
0:? Sequence
|
||||
0:109 all (global bool)
|
||||
0:109 'inF0' (temp 4-component vector of float)
|
||||
0:112 AtomicAdd (global void)
|
||||
0:112 'gs_ua4' (temp 4-component vector of uint)
|
||||
0:112 'gs_ub4' (temp 4-component vector of uint)
|
||||
0:113 move second child to first child (temp 4-component vector of uint)
|
||||
0:113 'out_u4' (temp 4-component vector of uint)
|
||||
0:113 AtomicAdd (temp 4-component vector of uint)
|
||||
0:113 'gs_ua4' (temp 4-component vector of uint)
|
||||
0:113 'gs_ub4' (temp 4-component vector of uint)
|
||||
0:114 AtomicAnd (global void)
|
||||
0:114 'gs_ua4' (temp 4-component vector of uint)
|
||||
0:114 'gs_ub4' (temp 4-component vector of uint)
|
||||
0:115 move second child to first child (temp 4-component vector of uint)
|
||||
0:115 'out_u4' (temp 4-component vector of uint)
|
||||
0:115 AtomicAnd (temp 4-component vector of uint)
|
||||
0:115 'gs_ua4' (temp 4-component vector of uint)
|
||||
0:115 'gs_ub4' (temp 4-component vector of uint)
|
||||
0:116 move second child to first child (temp 4-component vector of uint)
|
||||
0:116 'out_u4' (temp 4-component vector of uint)
|
||||
0:116 AtomicCompSwap (temp 4-component vector of uint)
|
||||
0:116 'gs_ua4' (temp 4-component vector of uint)
|
||||
0:116 'gs_ub4' (temp 4-component vector of uint)
|
||||
0:116 'gs_uc4' (temp 4-component vector of uint)
|
||||
0:117 move second child to first child (temp 4-component vector of uint)
|
||||
0:117 'out_u4' (temp 4-component vector of uint)
|
||||
0:117 AtomicExchange (temp 4-component vector of uint)
|
||||
0:117 'gs_ua4' (temp 4-component vector of uint)
|
||||
0:117 'gs_ub4' (temp 4-component vector of uint)
|
||||
0:118 AtomicMax (global void)
|
||||
0:118 'gs_ua4' (temp 4-component vector of uint)
|
||||
0:118 'gs_ub4' (temp 4-component vector of uint)
|
||||
0:119 move second child to first child (temp 4-component vector of uint)
|
||||
0:119 'out_u4' (temp 4-component vector of uint)
|
||||
0:119 AtomicMax (temp 4-component vector of uint)
|
||||
0:119 'gs_ua4' (temp 4-component vector of uint)
|
||||
0:119 'gs_ub4' (temp 4-component vector of uint)
|
||||
0:120 AtomicMin (global void)
|
||||
0:120 'gs_ua4' (temp 4-component vector of uint)
|
||||
0:120 'gs_ub4' (temp 4-component vector of uint)
|
||||
0:121 move second child to first child (temp 4-component vector of uint)
|
||||
0:121 'out_u4' (temp 4-component vector of uint)
|
||||
0:121 AtomicMin (temp 4-component vector of uint)
|
||||
0:121 'gs_ua4' (temp 4-component vector of uint)
|
||||
0:121 'gs_ub4' (temp 4-component vector of uint)
|
||||
0:122 AtomicOr (global void)
|
||||
0:122 'gs_ua4' (temp 4-component vector of uint)
|
||||
0:122 'gs_ub4' (temp 4-component vector of uint)
|
||||
0:123 move second child to first child (temp 4-component vector of uint)
|
||||
0:123 'out_u4' (temp 4-component vector of uint)
|
||||
0:123 AtomicOr (temp 4-component vector of uint)
|
||||
0:123 'gs_ua4' (temp 4-component vector of uint)
|
||||
0:123 'gs_ub4' (temp 4-component vector of uint)
|
||||
0:124 AtomicXor (global void)
|
||||
0:124 'gs_ua4' (temp 4-component vector of uint)
|
||||
0:124 'gs_ub4' (temp 4-component vector of uint)
|
||||
0:125 move second child to first child (temp 4-component vector of uint)
|
||||
0:125 'out_u4' (temp 4-component vector of uint)
|
||||
0:125 AtomicXor (temp 4-component vector of uint)
|
||||
0:125 'gs_ua4' (temp 4-component vector of uint)
|
||||
0:125 'gs_ub4' (temp 4-component vector of uint)
|
||||
0:128 Branch: Return with expression
|
||||
0:? Constant:
|
||||
0:? 1.000000
|
||||
0:? 2.000000
|
||||
0:? 3.000000
|
||||
0:? 4.000000
|
||||
0:? Linker Objects
|
||||
0:? 'gs_ua' (temp uint)
|
||||
0:? 'gs_ub' (temp uint)
|
||||
0:? 'gs_uc' (temp uint)
|
||||
0:? 'gs_ua2' (temp 2-component vector of uint)
|
||||
0:? 'gs_ub2' (temp 2-component vector of uint)
|
||||
0:? 'gs_uc2' (temp 2-component vector of uint)
|
||||
0:? 'gs_ua3' (temp 3-component vector of uint)
|
||||
0:? 'gs_ub3' (temp 3-component vector of uint)
|
||||
0:? 'gs_uc3' (temp 3-component vector of uint)
|
||||
0:? 'gs_ua4' (temp 4-component vector of uint)
|
||||
0:? 'gs_ub4' (temp 4-component vector of uint)
|
||||
0:? 'gs_uc4' (temp 4-component vector of uint)
|
||||
|
||||
// Module Version 10000
|
||||
// Generated by (magic number): 80001
|
||||
// Id's are bound by 182
|
||||
|
||||
Capability Shader
|
||||
1: ExtInstImport "GLSL.std.450"
|
||||
MemoryModel Logical GLSL450
|
||||
EntryPoint GLCompute 4 "ComputeShaderFunction"
|
||||
ExecutionMode 4 LocalSize 1 1 1
|
||||
Source HLSL 450
|
||||
Name 4 "ComputeShaderFunction"
|
||||
Name 8 "inF0"
|
||||
Name 14 "gs_ua"
|
||||
Name 15 "gs_ub"
|
||||
Name 20 "out_u1"
|
||||
Name 28 "gs_uc"
|
||||
Name 54 "inF0"
|
||||
Name 59 "gs_ua2"
|
||||
Name 60 "gs_ub2"
|
||||
Name 63 "out_u2"
|
||||
Name 71 "gs_uc2"
|
||||
Name 98 "inF0"
|
||||
Name 103 "gs_ua3"
|
||||
Name 104 "gs_ub3"
|
||||
Name 107 "out_u3"
|
||||
Name 115 "gs_uc3"
|
||||
Name 141 "inF0"
|
||||
Name 146 "gs_ua4"
|
||||
Name 147 "gs_ub4"
|
||||
Name 150 "out_u4"
|
||||
Name 158 "gs_uc4"
|
||||
2: TypeVoid
|
||||
3: TypeFunction 2
|
||||
6: TypeFloat 32
|
||||
7: TypePointer Function 6(float)
|
||||
10: TypeBool
|
||||
12: TypeInt 32 0
|
||||
13: TypePointer Function 12(int)
|
||||
17: 12(int) Constant 1
|
||||
18: 12(int) Constant 0
|
||||
49: 6(float) Constant 0
|
||||
52: TypeVector 6(float) 2
|
||||
53: TypePointer Function 52(fvec2)
|
||||
57: TypeVector 12(int) 2
|
||||
58: TypePointer Function 57(ivec2)
|
||||
92: 6(float) Constant 1065353216
|
||||
93: 6(float) Constant 1073741824
|
||||
94: 52(fvec2) ConstantComposite 92 93
|
||||
96: TypeVector 6(float) 3
|
||||
97: TypePointer Function 96(fvec3)
|
||||
101: TypeVector 12(int) 3
|
||||
102: TypePointer Function 101(ivec3)
|
||||
136: 6(float) Constant 1077936128
|
||||
137: 96(fvec3) ConstantComposite 92 93 136
|
||||
139: TypeVector 6(float) 4
|
||||
140: TypePointer Function 139(fvec4)
|
||||
144: TypeVector 12(int) 4
|
||||
145: TypePointer Function 144(ivec4)
|
||||
179: 6(float) Constant 1082130432
|
||||
180: 139(fvec4) ConstantComposite 92 93 136 179
|
||||
4(ComputeShaderFunction): 2 Function None 3
|
||||
5: Label
|
||||
8(inF0): 7(ptr) Variable Function
|
||||
14(gs_ua): 13(ptr) Variable Function
|
||||
15(gs_ub): 13(ptr) Variable Function
|
||||
20(out_u1): 13(ptr) Variable Function
|
||||
28(gs_uc): 13(ptr) Variable Function
|
||||
54(inF0): 53(ptr) Variable Function
|
||||
59(gs_ua2): 58(ptr) Variable Function
|
||||
60(gs_ub2): 58(ptr) Variable Function
|
||||
63(out_u2): 58(ptr) Variable Function
|
||||
71(gs_uc2): 58(ptr) Variable Function
|
||||
98(inF0): 97(ptr) Variable Function
|
||||
103(gs_ua3): 102(ptr) Variable Function
|
||||
104(gs_ub3): 102(ptr) Variable Function
|
||||
107(out_u3): 102(ptr) Variable Function
|
||||
115(gs_uc3): 102(ptr) Variable Function
|
||||
141(inF0): 140(ptr) Variable Function
|
||||
146(gs_ua4): 145(ptr) Variable Function
|
||||
147(gs_ub4): 145(ptr) Variable Function
|
||||
150(out_u4): 145(ptr) Variable Function
|
||||
158(gs_uc4): 145(ptr) Variable Function
|
||||
9: 6(float) Load 8(inF0)
|
||||
11: 10(bool) All 9
|
||||
16: 12(int) Load 15(gs_ub)
|
||||
19: 2 AtomicIAdd 14(gs_ua) 17 18 16
|
||||
21: 12(int) Load 15(gs_ub)
|
||||
22: 12(int) AtomicIAdd 14(gs_ua) 17 18 21
|
||||
Store 20(out_u1) 22
|
||||
23: 12(int) Load 15(gs_ub)
|
||||
24: 2 AtomicAnd 14(gs_ua) 17 18 23
|
||||
25: 12(int) Load 15(gs_ub)
|
||||
26: 12(int) AtomicAnd 14(gs_ua) 17 18 25
|
||||
Store 20(out_u1) 26
|
||||
27: 12(int) Load 15(gs_ub)
|
||||
29: 12(int) Load 28(gs_uc)
|
||||
30: 12(int) AtomicCompareExchange 14(gs_ua) 17 18 18 29 27
|
||||
Store 20(out_u1) 30
|
||||
31: 12(int) Load 15(gs_ub)
|
||||
32: 12(int) AtomicExchange 14(gs_ua) 17 18 31
|
||||
Store 20(out_u1) 32
|
||||
33: 12(int) Load 15(gs_ub)
|
||||
34: 2 AtomicSMax 14(gs_ua) 17 18 33
|
||||
35: 12(int) Load 15(gs_ub)
|
||||
36: 12(int) AtomicUMax 14(gs_ua) 17 18 35
|
||||
Store 20(out_u1) 36
|
||||
37: 12(int) Load 15(gs_ub)
|
||||
38: 2 AtomicSMin 14(gs_ua) 17 18 37
|
||||
39: 12(int) Load 15(gs_ub)
|
||||
40: 12(int) AtomicUMin 14(gs_ua) 17 18 39
|
||||
Store 20(out_u1) 40
|
||||
41: 12(int) Load 15(gs_ub)
|
||||
42: 2 AtomicOr 14(gs_ua) 17 18 41
|
||||
43: 12(int) Load 15(gs_ub)
|
||||
44: 12(int) AtomicOr 14(gs_ua) 17 18 43
|
||||
Store 20(out_u1) 44
|
||||
45: 12(int) Load 15(gs_ub)
|
||||
46: 2 AtomicXor 14(gs_ua) 17 18 45
|
||||
47: 12(int) Load 15(gs_ub)
|
||||
48: 12(int) AtomicXor 14(gs_ua) 17 18 47
|
||||
Store 20(out_u1) 48
|
||||
ReturnValue 49
|
||||
FunctionEnd
|
File diff suppressed because it is too large
Load Diff
886
Test/baseResults/hlsl.intrinsics.negative.comp.out
Normal file
886
Test/baseResults/hlsl.intrinsics.negative.comp.out
Normal file
@ -0,0 +1,886 @@
|
||||
hlsl.intrinsics.negative.comp
|
||||
ERROR: 0:7: 'asdouble' : no matching overloaded function found
|
||||
ERROR: 0:8: 'CheckAccessFullyMapped' : no matching overloaded function found
|
||||
ERROR: 0:9: 'clip' : no matching overloaded function found
|
||||
ERROR: 0:10: 'countbits' : no matching overloaded function found
|
||||
ERROR: 0:11: 'cross' : no matching overloaded function found
|
||||
ERROR: 0:12: 'D3DCOLORtoUBYTE4' : no matching overloaded function found
|
||||
ERROR: 0:13: 'ddx' : no matching overloaded function found
|
||||
ERROR: 0:14: 'ddx_coarse' : no matching overloaded function found
|
||||
ERROR: 0:15: 'ddx_fine' : no matching overloaded function found
|
||||
ERROR: 0:16: 'ddy' : no matching overloaded function found
|
||||
ERROR: 0:17: 'ddy_coarse' : no matching overloaded function found
|
||||
ERROR: 0:18: 'ddy_fine' : no matching overloaded function found
|
||||
ERROR: 0:19: 'determinant' : no matching overloaded function found
|
||||
ERROR: 0:20: 'EvaluateAttributeAtCentroid' : no matching overloaded function found
|
||||
ERROR: 0:21: 'EvaluateAttributeAtSample' : no matching overloaded function found
|
||||
ERROR: 0:22: 'EvaluateAttributeSnapped' : no matching overloaded function found
|
||||
ERROR: 0:23: 'f16tof32' : no matching overloaded function found
|
||||
ERROR: 0:24: 'firstbithigh' : no matching overloaded function found
|
||||
ERROR: 0:25: 'firstbitlow' : no matching overloaded function found
|
||||
ERROR: 0:26: 'fma' : no matching overloaded function found
|
||||
ERROR: 0:27: 'fwidth' : no matching overloaded function found
|
||||
ERROR: 0:28: 'InterlockedAdd' : no matching overloaded function found
|
||||
ERROR: 0:29: 'InterlockedAdd' : no matching overloaded function found
|
||||
ERROR: 0:30: 'InterlockedAnd' : no matching overloaded function found
|
||||
ERROR: 0:31: 'InterlockedAnd' : no matching overloaded function found
|
||||
ERROR: 0:32: 'InterlockedCompareExchange' : no matching overloaded function found
|
||||
ERROR: 0:33: 'InterlockedExchange' : no matching overloaded function found
|
||||
ERROR: 0:34: 'InterlockedMax' : no matching overloaded function found
|
||||
ERROR: 0:35: 'InterlockedMax' : no matching overloaded function found
|
||||
ERROR: 0:36: 'InterlockedMin' : no matching overloaded function found
|
||||
ERROR: 0:37: 'InterlockedMin' : no matching overloaded function found
|
||||
ERROR: 0:38: 'InterlockedOr' : no matching overloaded function found
|
||||
ERROR: 0:39: 'InterlockedOr' : no matching overloaded function found
|
||||
ERROR: 0:40: 'InterlockedXor' : no matching overloaded function found
|
||||
ERROR: 0:41: 'InterlockedXor' : no matching overloaded function found
|
||||
ERROR: 0:42: 'length' : no matching overloaded function found
|
||||
ERROR: 0:43: 'msad4' : no matching overloaded function found
|
||||
ERROR: 0:44: 'normalize' : no matching overloaded function found
|
||||
ERROR: 0:45: 'reflect' : no matching overloaded function found
|
||||
ERROR: 0:46: 'refract' : no matching overloaded function found
|
||||
ERROR: 0:47: 'refract' : no matching overloaded function found
|
||||
ERROR: 0:48: 'reversebits' : no matching overloaded function found
|
||||
ERROR: 0:49: 'transpose' : no matching overloaded function found
|
||||
ERROR: 0:60: 'GetRenderTargetSamplePosition' : no matching overloaded function found
|
||||
ERROR: 0:69: 'asdouble' : no matching overloaded function found
|
||||
ERROR: 0:70: 'CheckAccessFullyMapped' : no matching overloaded function found
|
||||
ERROR: 0:71: 'countbits' : no matching overloaded function found
|
||||
ERROR: 0:72: 'cross' : no matching overloaded function found
|
||||
ERROR: 0:73: 'D3DCOLORtoUBYTE4' : no matching overloaded function found
|
||||
ERROR: 0:74: 'ddx' : no matching overloaded function found
|
||||
ERROR: 0:75: 'ddx_coarse' : no matching overloaded function found
|
||||
ERROR: 0:76: 'ddx_fine' : no matching overloaded function found
|
||||
ERROR: 0:77: 'ddy' : no matching overloaded function found
|
||||
ERROR: 0:78: 'ddy_coarse' : no matching overloaded function found
|
||||
ERROR: 0:79: 'ddy_fine' : no matching overloaded function found
|
||||
ERROR: 0:80: 'determinant' : no matching overloaded function found
|
||||
ERROR: 0:81: 'EvaluateAttributeAtCentroid' : no matching overloaded function found
|
||||
ERROR: 0:82: 'EvaluateAttributeAtSample' : no matching overloaded function found
|
||||
ERROR: 0:83: 'EvaluateAttributeSnapped' : no matching overloaded function found
|
||||
ERROR: 0:84: 'f16tof32' : no matching overloaded function found
|
||||
ERROR: 0:85: 'firstbithigh' : no matching overloaded function found
|
||||
ERROR: 0:86: 'firstbitlow' : no matching overloaded function found
|
||||
ERROR: 0:87: 'fma' : no matching overloaded function found
|
||||
ERROR: 0:88: 'fwidth' : no matching overloaded function found
|
||||
ERROR: 0:89: 'InterlockedAdd' : no matching overloaded function found
|
||||
ERROR: 0:90: 'InterlockedAdd' : no matching overloaded function found
|
||||
ERROR: 0:91: 'InterlockedAnd' : no matching overloaded function found
|
||||
ERROR: 0:92: 'InterlockedAnd' : no matching overloaded function found
|
||||
ERROR: 0:93: 'InterlockedCompareExchange' : no matching overloaded function found
|
||||
ERROR: 0:94: 'InterlockedExchange' : no matching overloaded function found
|
||||
ERROR: 0:95: 'InterlockedMax' : no matching overloaded function found
|
||||
ERROR: 0:96: 'InterlockedMax' : no matching overloaded function found
|
||||
ERROR: 0:97: 'InterlockedMin' : no matching overloaded function found
|
||||
ERROR: 0:98: 'InterlockedMin' : no matching overloaded function found
|
||||
ERROR: 0:99: 'InterlockedOr' : no matching overloaded function found
|
||||
ERROR: 0:100: 'InterlockedOr' : no matching overloaded function found
|
||||
ERROR: 0:101: 'InterlockedXor' : no matching overloaded function found
|
||||
ERROR: 0:102: 'InterlockedXor' : no matching overloaded function found
|
||||
ERROR: 0:103: 'noise' : no matching overloaded function found
|
||||
ERROR: 0:104: 'reversebits' : no matching overloaded function found
|
||||
ERROR: 0:105: 'transpose' : no matching overloaded function found
|
||||
ERROR: 0:116: 'CheckAccessFullyMapped' : no matching overloaded function found
|
||||
ERROR: 0:117: 'countbits' : no matching overloaded function found
|
||||
ERROR: 0:118: 'ddx' : no matching overloaded function found
|
||||
ERROR: 0:119: 'ddx_coarse' : no matching overloaded function found
|
||||
ERROR: 0:120: 'ddx_fine' : no matching overloaded function found
|
||||
ERROR: 0:121: 'ddy' : no matching overloaded function found
|
||||
ERROR: 0:122: 'ddy_coarse' : no matching overloaded function found
|
||||
ERROR: 0:123: 'ddy_fine' : no matching overloaded function found
|
||||
ERROR: 0:124: 'D3DCOLORtoUBYTE4' : no matching overloaded function found
|
||||
ERROR: 0:125: 'determinant' : no matching overloaded function found
|
||||
ERROR: 0:126: 'EvaluateAttributeAtCentroid' : no matching overloaded function found
|
||||
ERROR: 0:127: 'EvaluateAttributeAtSample' : no matching overloaded function found
|
||||
ERROR: 0:128: 'EvaluateAttributeSnapped' : no matching overloaded function found
|
||||
ERROR: 0:129: 'f16tof32' : no matching overloaded function found
|
||||
ERROR: 0:130: 'firstbithigh' : no matching overloaded function found
|
||||
ERROR: 0:131: 'firstbitlow' : no matching overloaded function found
|
||||
ERROR: 0:132: 'fma' : no matching overloaded function found
|
||||
ERROR: 0:133: 'fwidth' : no matching overloaded function found
|
||||
ERROR: 0:134: 'InterlockedAdd' : no matching overloaded function found
|
||||
ERROR: 0:135: 'InterlockedAdd' : no matching overloaded function found
|
||||
ERROR: 0:136: 'InterlockedAnd' : no matching overloaded function found
|
||||
ERROR: 0:137: 'InterlockedAnd' : no matching overloaded function found
|
||||
ERROR: 0:138: 'InterlockedCompareExchange' : no matching overloaded function found
|
||||
ERROR: 0:139: 'InterlockedExchange' : no matching overloaded function found
|
||||
ERROR: 0:140: 'InterlockedMax' : no matching overloaded function found
|
||||
ERROR: 0:141: 'InterlockedMax' : no matching overloaded function found
|
||||
ERROR: 0:142: 'InterlockedMin' : no matching overloaded function found
|
||||
ERROR: 0:143: 'InterlockedMin' : no matching overloaded function found
|
||||
ERROR: 0:144: 'InterlockedOr' : no matching overloaded function found
|
||||
ERROR: 0:145: 'InterlockedOr' : no matching overloaded function found
|
||||
ERROR: 0:146: 'InterlockedXor' : no matching overloaded function found
|
||||
ERROR: 0:147: 'InterlockedXor' : no matching overloaded function found
|
||||
ERROR: 0:148: 'noise' : no matching overloaded function found
|
||||
ERROR: 0:149: 'reversebits' : no matching overloaded function found
|
||||
ERROR: 0:150: 'transpose' : no matching overloaded function found
|
||||
ERROR: 0:161: 'CheckAccessFullyMapped' : no matching overloaded function found
|
||||
ERROR: 0:162: 'countbits' : no matching overloaded function found
|
||||
ERROR: 0:163: 'cross' : no matching overloaded function found
|
||||
ERROR: 0:164: 'determinant' : no matching overloaded function found
|
||||
ERROR: 0:165: 'ddx' : no matching overloaded function found
|
||||
ERROR: 0:166: 'ddx_coarse' : no matching overloaded function found
|
||||
ERROR: 0:167: 'ddx_fine' : no matching overloaded function found
|
||||
ERROR: 0:168: 'ddy' : no matching overloaded function found
|
||||
ERROR: 0:169: 'ddy_coarse' : no matching overloaded function found
|
||||
ERROR: 0:170: 'ddy_fine' : no matching overloaded function found
|
||||
ERROR: 0:171: 'EvaluateAttributeAtCentroid' : no matching overloaded function found
|
||||
ERROR: 0:172: 'EvaluateAttributeAtSample' : no matching overloaded function found
|
||||
ERROR: 0:173: 'EvaluateAttributeSnapped' : no matching overloaded function found
|
||||
ERROR: 0:174: 'f16tof32' : no matching overloaded function found
|
||||
ERROR: 0:175: 'firstbithigh' : no matching overloaded function found
|
||||
ERROR: 0:176: 'firstbitlow' : no matching overloaded function found
|
||||
ERROR: 0:177: 'fma' : no matching overloaded function found
|
||||
ERROR: 0:178: 'fwidth' : no matching overloaded function found
|
||||
ERROR: 0:179: 'InterlockedAdd' : no matching overloaded function found
|
||||
ERROR: 0:180: 'InterlockedAdd' : no matching overloaded function found
|
||||
ERROR: 0:181: 'InterlockedAnd' : no matching overloaded function found
|
||||
ERROR: 0:182: 'InterlockedAnd' : no matching overloaded function found
|
||||
ERROR: 0:183: 'InterlockedCompareExchange' : no matching overloaded function found
|
||||
ERROR: 0:184: 'InterlockedExchange' : no matching overloaded function found
|
||||
ERROR: 0:185: 'InterlockedMax' : no matching overloaded function found
|
||||
ERROR: 0:186: 'InterlockedMax' : no matching overloaded function found
|
||||
ERROR: 0:187: 'InterlockedMin' : no matching overloaded function found
|
||||
ERROR: 0:188: 'InterlockedMin' : no matching overloaded function found
|
||||
ERROR: 0:189: 'InterlockedOr' : no matching overloaded function found
|
||||
ERROR: 0:190: 'InterlockedOr' : no matching overloaded function found
|
||||
ERROR: 0:191: 'InterlockedXor' : no matching overloaded function found
|
||||
ERROR: 0:192: 'InterlockedXor' : no matching overloaded function found
|
||||
ERROR: 0:193: 'noise' : no matching overloaded function found
|
||||
ERROR: 0:194: 'reversebits' : no matching overloaded function found
|
||||
ERROR: 0:195: 'transpose' : no matching overloaded function found
|
||||
ERROR: 151 compilation errors. No code generated.
|
||||
|
||||
|
||||
Shader version: 450
|
||||
local_size = (1, 1, 1)
|
||||
ERROR: node is still EOpNull!
|
||||
0:56 Function Definition: ComputeShaderFunction(f1;f1;f1;i1; (temp float)
|
||||
0:2 Function Parameters:
|
||||
0:2 'inF0' (temp float)
|
||||
0:2 'inF1' (temp float)
|
||||
0:2 'inF2' (temp float)
|
||||
0:2 'inI0' (temp int)
|
||||
0:? Sequence
|
||||
0:7 Constant:
|
||||
0:7 0.000000
|
||||
0:8 Constant:
|
||||
0:8 0.000000
|
||||
0:9 Constant:
|
||||
0:9 0.000000
|
||||
0:10 Constant:
|
||||
0:10 0.000000
|
||||
0:11 Constant:
|
||||
0:11 0.000000
|
||||
0:12 Constant:
|
||||
0:12 0.000000
|
||||
0:13 Constant:
|
||||
0:13 0.000000
|
||||
0:14 Constant:
|
||||
0:14 0.000000
|
||||
0:15 Constant:
|
||||
0:15 0.000000
|
||||
0:16 Constant:
|
||||
0:16 0.000000
|
||||
0:17 Constant:
|
||||
0:17 0.000000
|
||||
0:18 Constant:
|
||||
0:18 0.000000
|
||||
0:19 Constant:
|
||||
0:19 0.000000
|
||||
0:20 Constant:
|
||||
0:20 0.000000
|
||||
0:21 Constant:
|
||||
0:21 0.000000
|
||||
0:22 Constant:
|
||||
0:22 0.000000
|
||||
0:23 Constant:
|
||||
0:23 0.000000
|
||||
0:24 Constant:
|
||||
0:24 0.000000
|
||||
0:25 Constant:
|
||||
0:25 0.000000
|
||||
0:26 Constant:
|
||||
0:26 0.000000
|
||||
0:27 Constant:
|
||||
0:27 0.000000
|
||||
0:28 Constant:
|
||||
0:28 0.000000
|
||||
0:29 Constant:
|
||||
0:29 0.000000
|
||||
0:30 Constant:
|
||||
0:30 0.000000
|
||||
0:31 Constant:
|
||||
0:31 0.000000
|
||||
0:32 Constant:
|
||||
0:32 0.000000
|
||||
0:33 Constant:
|
||||
0:33 0.000000
|
||||
0:34 Constant:
|
||||
0:34 0.000000
|
||||
0:35 Constant:
|
||||
0:35 0.000000
|
||||
0:36 Constant:
|
||||
0:36 0.000000
|
||||
0:37 Constant:
|
||||
0:37 0.000000
|
||||
0:38 Constant:
|
||||
0:38 0.000000
|
||||
0:39 Constant:
|
||||
0:39 0.000000
|
||||
0:40 Constant:
|
||||
0:40 0.000000
|
||||
0:41 Constant:
|
||||
0:41 0.000000
|
||||
0:42 Constant:
|
||||
0:42 0.000000
|
||||
0:43 Constant:
|
||||
0:43 0.000000
|
||||
0:44 Constant:
|
||||
0:44 0.000000
|
||||
0:45 Constant:
|
||||
0:45 0.000000
|
||||
0:46 Constant:
|
||||
0:46 0.000000
|
||||
0:47 Constant:
|
||||
0:47 0.000000
|
||||
0:48 Constant:
|
||||
0:48 0.000000
|
||||
0:49 Constant:
|
||||
0:49 0.000000
|
||||
0:53 Branch: Return with expression
|
||||
0:53 Constant:
|
||||
0:53 0.000000
|
||||
0:65 Function Definition: ComputeShaderFunction(vf1;vf1;vf1;vi1; (temp 1-component vector of float)
|
||||
0:57 Function Parameters:
|
||||
0:57 'inF0' (temp 1-component vector of float)
|
||||
0:57 'inF1' (temp 1-component vector of float)
|
||||
0:57 'inF2' (temp 1-component vector of float)
|
||||
0:57 'inI0' (temp 1-component vector of int)
|
||||
0:? Sequence
|
||||
0:60 Constant:
|
||||
0:60 0.000000
|
||||
0:62 Branch: Return with expression
|
||||
0:62 Constant:
|
||||
0:62 0.000000
|
||||
0:112 Function Definition: ComputeShaderFunction(vf2;vf2;vf2;vi2; (temp 2-component vector of float)
|
||||
0:66 Function Parameters:
|
||||
0:66 'inF0' (temp 2-component vector of float)
|
||||
0:66 'inF1' (temp 2-component vector of float)
|
||||
0:66 'inF2' (temp 2-component vector of float)
|
||||
0:66 'inI0' (temp 2-component vector of int)
|
||||
0:? Sequence
|
||||
0:69 Constant:
|
||||
0:69 0.000000
|
||||
0:70 Constant:
|
||||
0:70 0.000000
|
||||
0:71 Constant:
|
||||
0:71 0.000000
|
||||
0:72 Constant:
|
||||
0:72 0.000000
|
||||
0:73 Constant:
|
||||
0:73 0.000000
|
||||
0:74 Constant:
|
||||
0:74 0.000000
|
||||
0:75 Constant:
|
||||
0:75 0.000000
|
||||
0:76 Constant:
|
||||
0:76 0.000000
|
||||
0:77 Constant:
|
||||
0:77 0.000000
|
||||
0:78 Constant:
|
||||
0:78 0.000000
|
||||
0:79 Constant:
|
||||
0:79 0.000000
|
||||
0:80 Constant:
|
||||
0:80 0.000000
|
||||
0:81 Constant:
|
||||
0:81 0.000000
|
||||
0:82 Constant:
|
||||
0:82 0.000000
|
||||
0:83 Constant:
|
||||
0:83 0.000000
|
||||
0:84 Constant:
|
||||
0:84 0.000000
|
||||
0:85 Constant:
|
||||
0:85 0.000000
|
||||
0:86 Constant:
|
||||
0:86 0.000000
|
||||
0:87 Constant:
|
||||
0:87 0.000000
|
||||
0:88 Constant:
|
||||
0:88 0.000000
|
||||
0:89 Constant:
|
||||
0:89 0.000000
|
||||
0:90 Constant:
|
||||
0:90 0.000000
|
||||
0:91 Constant:
|
||||
0:91 0.000000
|
||||
0:92 Constant:
|
||||
0:92 0.000000
|
||||
0:93 Constant:
|
||||
0:93 0.000000
|
||||
0:94 Constant:
|
||||
0:94 0.000000
|
||||
0:95 Constant:
|
||||
0:95 0.000000
|
||||
0:96 Constant:
|
||||
0:96 0.000000
|
||||
0:97 Constant:
|
||||
0:97 0.000000
|
||||
0:98 Constant:
|
||||
0:98 0.000000
|
||||
0:99 Constant:
|
||||
0:99 0.000000
|
||||
0:100 Constant:
|
||||
0:100 0.000000
|
||||
0:101 Constant:
|
||||
0:101 0.000000
|
||||
0:102 Constant:
|
||||
0:102 0.000000
|
||||
0:103 Constant:
|
||||
0:103 0.000000
|
||||
0:104 Constant:
|
||||
0:104 0.000000
|
||||
0:105 Constant:
|
||||
0:105 0.000000
|
||||
0:109 Branch: Return with expression
|
||||
0:? Constant:
|
||||
0:? 1.000000
|
||||
0:? 2.000000
|
||||
0:157 Function Definition: ComputeShaderFunction(vf3;vf3;vf3;vi3; (temp 3-component vector of float)
|
||||
0:113 Function Parameters:
|
||||
0:113 'inF0' (temp 3-component vector of float)
|
||||
0:113 'inF1' (temp 3-component vector of float)
|
||||
0:113 'inF2' (temp 3-component vector of float)
|
||||
0:113 'inI0' (temp 3-component vector of int)
|
||||
0:? Sequence
|
||||
0:116 Constant:
|
||||
0:116 0.000000
|
||||
0:117 Constant:
|
||||
0:117 0.000000
|
||||
0:118 Constant:
|
||||
0:118 0.000000
|
||||
0:119 Constant:
|
||||
0:119 0.000000
|
||||
0:120 Constant:
|
||||
0:120 0.000000
|
||||
0:121 Constant:
|
||||
0:121 0.000000
|
||||
0:122 Constant:
|
||||
0:122 0.000000
|
||||
0:123 Constant:
|
||||
0:123 0.000000
|
||||
0:124 Constant:
|
||||
0:124 0.000000
|
||||
0:125 Constant:
|
||||
0:125 0.000000
|
||||
0:126 Constant:
|
||||
0:126 0.000000
|
||||
0:127 Constant:
|
||||
0:127 0.000000
|
||||
0:128 Constant:
|
||||
0:128 0.000000
|
||||
0:129 Constant:
|
||||
0:129 0.000000
|
||||
0:130 Constant:
|
||||
0:130 0.000000
|
||||
0:131 Constant:
|
||||
0:131 0.000000
|
||||
0:132 Constant:
|
||||
0:132 0.000000
|
||||
0:133 Constant:
|
||||
0:133 0.000000
|
||||
0:134 Constant:
|
||||
0:134 0.000000
|
||||
0:135 Constant:
|
||||
0:135 0.000000
|
||||
0:136 Constant:
|
||||
0:136 0.000000
|
||||
0:137 Constant:
|
||||
0:137 0.000000
|
||||
0:138 Constant:
|
||||
0:138 0.000000
|
||||
0:139 Constant:
|
||||
0:139 0.000000
|
||||
0:140 Constant:
|
||||
0:140 0.000000
|
||||
0:141 Constant:
|
||||
0:141 0.000000
|
||||
0:142 Constant:
|
||||
0:142 0.000000
|
||||
0:143 Constant:
|
||||
0:143 0.000000
|
||||
0:144 Constant:
|
||||
0:144 0.000000
|
||||
0:145 Constant:
|
||||
0:145 0.000000
|
||||
0:146 Constant:
|
||||
0:146 0.000000
|
||||
0:147 Constant:
|
||||
0:147 0.000000
|
||||
0:148 Constant:
|
||||
0:148 0.000000
|
||||
0:149 Constant:
|
||||
0:149 0.000000
|
||||
0:150 Constant:
|
||||
0:150 0.000000
|
||||
0:154 Branch: Return with expression
|
||||
0:? Constant:
|
||||
0:? 1.000000
|
||||
0:? 2.000000
|
||||
0:? 3.000000
|
||||
0:202 Function Definition: ComputeShaderFunction(vf4;vf4;vf4;vi4; (temp 4-component vector of float)
|
||||
0:158 Function Parameters:
|
||||
0:158 'inF0' (temp 4-component vector of float)
|
||||
0:158 'inF1' (temp 4-component vector of float)
|
||||
0:158 'inF2' (temp 4-component vector of float)
|
||||
0:158 'inI0' (temp 4-component vector of int)
|
||||
0:? Sequence
|
||||
0:161 Constant:
|
||||
0:161 0.000000
|
||||
0:162 Constant:
|
||||
0:162 0.000000
|
||||
0:163 Constant:
|
||||
0:163 0.000000
|
||||
0:164 Constant:
|
||||
0:164 0.000000
|
||||
0:165 Constant:
|
||||
0:165 0.000000
|
||||
0:166 Constant:
|
||||
0:166 0.000000
|
||||
0:167 Constant:
|
||||
0:167 0.000000
|
||||
0:168 Constant:
|
||||
0:168 0.000000
|
||||
0:169 Constant:
|
||||
0:169 0.000000
|
||||
0:170 Constant:
|
||||
0:170 0.000000
|
||||
0:171 Constant:
|
||||
0:171 0.000000
|
||||
0:172 Constant:
|
||||
0:172 0.000000
|
||||
0:173 Constant:
|
||||
0:173 0.000000
|
||||
0:174 Constant:
|
||||
0:174 0.000000
|
||||
0:175 Constant:
|
||||
0:175 0.000000
|
||||
0:176 Constant:
|
||||
0:176 0.000000
|
||||
0:177 Constant:
|
||||
0:177 0.000000
|
||||
0:178 Constant:
|
||||
0:178 0.000000
|
||||
0:179 Constant:
|
||||
0:179 0.000000
|
||||
0:180 Constant:
|
||||
0:180 0.000000
|
||||
0:181 Constant:
|
||||
0:181 0.000000
|
||||
0:182 Constant:
|
||||
0:182 0.000000
|
||||
0:183 Constant:
|
||||
0:183 0.000000
|
||||
0:184 Constant:
|
||||
0:184 0.000000
|
||||
0:185 Constant:
|
||||
0:185 0.000000
|
||||
0:186 Constant:
|
||||
0:186 0.000000
|
||||
0:187 Constant:
|
||||
0:187 0.000000
|
||||
0:188 Constant:
|
||||
0:188 0.000000
|
||||
0:189 Constant:
|
||||
0:189 0.000000
|
||||
0:190 Constant:
|
||||
0:190 0.000000
|
||||
0:191 Constant:
|
||||
0:191 0.000000
|
||||
0:192 Constant:
|
||||
0:192 0.000000
|
||||
0:193 Constant:
|
||||
0:193 0.000000
|
||||
0:194 Constant:
|
||||
0:194 0.000000
|
||||
0:195 Constant:
|
||||
0:195 0.000000
|
||||
0:199 Branch: Return with expression
|
||||
0:? Constant:
|
||||
0:? 1.000000
|
||||
0:? 2.000000
|
||||
0:? 3.000000
|
||||
0:? 4.000000
|
||||
0:? Linker Objects
|
||||
|
||||
|
||||
Linked compute stage:
|
||||
|
||||
|
||||
Shader version: 450
|
||||
local_size = (1, 1, 1)
|
||||
ERROR: node is still EOpNull!
|
||||
0:56 Function Definition: ComputeShaderFunction(f1;f1;f1;i1; (temp float)
|
||||
0:2 Function Parameters:
|
||||
0:2 'inF0' (temp float)
|
||||
0:2 'inF1' (temp float)
|
||||
0:2 'inF2' (temp float)
|
||||
0:2 'inI0' (temp int)
|
||||
0:? Sequence
|
||||
0:7 Constant:
|
||||
0:7 0.000000
|
||||
0:8 Constant:
|
||||
0:8 0.000000
|
||||
0:9 Constant:
|
||||
0:9 0.000000
|
||||
0:10 Constant:
|
||||
0:10 0.000000
|
||||
0:11 Constant:
|
||||
0:11 0.000000
|
||||
0:12 Constant:
|
||||
0:12 0.000000
|
||||
0:13 Constant:
|
||||
0:13 0.000000
|
||||
0:14 Constant:
|
||||
0:14 0.000000
|
||||
0:15 Constant:
|
||||
0:15 0.000000
|
||||
0:16 Constant:
|
||||
0:16 0.000000
|
||||
0:17 Constant:
|
||||
0:17 0.000000
|
||||
0:18 Constant:
|
||||
0:18 0.000000
|
||||
0:19 Constant:
|
||||
0:19 0.000000
|
||||
0:20 Constant:
|
||||
0:20 0.000000
|
||||
0:21 Constant:
|
||||
0:21 0.000000
|
||||
0:22 Constant:
|
||||
0:22 0.000000
|
||||
0:23 Constant:
|
||||
0:23 0.000000
|
||||
0:24 Constant:
|
||||
0:24 0.000000
|
||||
0:25 Constant:
|
||||
0:25 0.000000
|
||||
0:26 Constant:
|
||||
0:26 0.000000
|
||||
0:27 Constant:
|
||||
0:27 0.000000
|
||||
0:28 Constant:
|
||||
0:28 0.000000
|
||||
0:29 Constant:
|
||||
0:29 0.000000
|
||||
0:30 Constant:
|
||||
0:30 0.000000
|
||||
0:31 Constant:
|
||||
0:31 0.000000
|
||||
0:32 Constant:
|
||||
0:32 0.000000
|
||||
0:33 Constant:
|
||||
0:33 0.000000
|
||||
0:34 Constant:
|
||||
0:34 0.000000
|
||||
0:35 Constant:
|
||||
0:35 0.000000
|
||||
0:36 Constant:
|
||||
0:36 0.000000
|
||||
0:37 Constant:
|
||||
0:37 0.000000
|
||||
0:38 Constant:
|
||||
0:38 0.000000
|
||||
0:39 Constant:
|
||||
0:39 0.000000
|
||||
0:40 Constant:
|
||||
0:40 0.000000
|
||||
0:41 Constant:
|
||||
0:41 0.000000
|
||||
0:42 Constant:
|
||||
0:42 0.000000
|
||||
0:43 Constant:
|
||||
0:43 0.000000
|
||||
0:44 Constant:
|
||||
0:44 0.000000
|
||||
0:45 Constant:
|
||||
0:45 0.000000
|
||||
0:46 Constant:
|
||||
0:46 0.000000
|
||||
0:47 Constant:
|
||||
0:47 0.000000
|
||||
0:48 Constant:
|
||||
0:48 0.000000
|
||||
0:49 Constant:
|
||||
0:49 0.000000
|
||||
0:53 Branch: Return with expression
|
||||
0:53 Constant:
|
||||
0:53 0.000000
|
||||
0:65 Function Definition: ComputeShaderFunction(vf1;vf1;vf1;vi1; (temp 1-component vector of float)
|
||||
0:57 Function Parameters:
|
||||
0:57 'inF0' (temp 1-component vector of float)
|
||||
0:57 'inF1' (temp 1-component vector of float)
|
||||
0:57 'inF2' (temp 1-component vector of float)
|
||||
0:57 'inI0' (temp 1-component vector of int)
|
||||
0:? Sequence
|
||||
0:60 Constant:
|
||||
0:60 0.000000
|
||||
0:62 Branch: Return with expression
|
||||
0:62 Constant:
|
||||
0:62 0.000000
|
||||
0:112 Function Definition: ComputeShaderFunction(vf2;vf2;vf2;vi2; (temp 2-component vector of float)
|
||||
0:66 Function Parameters:
|
||||
0:66 'inF0' (temp 2-component vector of float)
|
||||
0:66 'inF1' (temp 2-component vector of float)
|
||||
0:66 'inF2' (temp 2-component vector of float)
|
||||
0:66 'inI0' (temp 2-component vector of int)
|
||||
0:? Sequence
|
||||
0:69 Constant:
|
||||
0:69 0.000000
|
||||
0:70 Constant:
|
||||
0:70 0.000000
|
||||
0:71 Constant:
|
||||
0:71 0.000000
|
||||
0:72 Constant:
|
||||
0:72 0.000000
|
||||
0:73 Constant:
|
||||
0:73 0.000000
|
||||
0:74 Constant:
|
||||
0:74 0.000000
|
||||
0:75 Constant:
|
||||
0:75 0.000000
|
||||
0:76 Constant:
|
||||
0:76 0.000000
|
||||
0:77 Constant:
|
||||
0:77 0.000000
|
||||
0:78 Constant:
|
||||
0:78 0.000000
|
||||
0:79 Constant:
|
||||
0:79 0.000000
|
||||
0:80 Constant:
|
||||
0:80 0.000000
|
||||
0:81 Constant:
|
||||
0:81 0.000000
|
||||
0:82 Constant:
|
||||
0:82 0.000000
|
||||
0:83 Constant:
|
||||
0:83 0.000000
|
||||
0:84 Constant:
|
||||
0:84 0.000000
|
||||
0:85 Constant:
|
||||
0:85 0.000000
|
||||
0:86 Constant:
|
||||
0:86 0.000000
|
||||
0:87 Constant:
|
||||
0:87 0.000000
|
||||
0:88 Constant:
|
||||
0:88 0.000000
|
||||
0:89 Constant:
|
||||
0:89 0.000000
|
||||
0:90 Constant:
|
||||
0:90 0.000000
|
||||
0:91 Constant:
|
||||
0:91 0.000000
|
||||
0:92 Constant:
|
||||
0:92 0.000000
|
||||
0:93 Constant:
|
||||
0:93 0.000000
|
||||
0:94 Constant:
|
||||
0:94 0.000000
|
||||
0:95 Constant:
|
||||
0:95 0.000000
|
||||
0:96 Constant:
|
||||
0:96 0.000000
|
||||
0:97 Constant:
|
||||
0:97 0.000000
|
||||
0:98 Constant:
|
||||
0:98 0.000000
|
||||
0:99 Constant:
|
||||
0:99 0.000000
|
||||
0:100 Constant:
|
||||
0:100 0.000000
|
||||
0:101 Constant:
|
||||
0:101 0.000000
|
||||
0:102 Constant:
|
||||
0:102 0.000000
|
||||
0:103 Constant:
|
||||
0:103 0.000000
|
||||
0:104 Constant:
|
||||
0:104 0.000000
|
||||
0:105 Constant:
|
||||
0:105 0.000000
|
||||
0:109 Branch: Return with expression
|
||||
0:? Constant:
|
||||
0:? 1.000000
|
||||
0:? 2.000000
|
||||
0:157 Function Definition: ComputeShaderFunction(vf3;vf3;vf3;vi3; (temp 3-component vector of float)
|
||||
0:113 Function Parameters:
|
||||
0:113 'inF0' (temp 3-component vector of float)
|
||||
0:113 'inF1' (temp 3-component vector of float)
|
||||
0:113 'inF2' (temp 3-component vector of float)
|
||||
0:113 'inI0' (temp 3-component vector of int)
|
||||
0:? Sequence
|
||||
0:116 Constant:
|
||||
0:116 0.000000
|
||||
0:117 Constant:
|
||||
0:117 0.000000
|
||||
0:118 Constant:
|
||||
0:118 0.000000
|
||||
0:119 Constant:
|
||||
0:119 0.000000
|
||||
0:120 Constant:
|
||||
0:120 0.000000
|
||||
0:121 Constant:
|
||||
0:121 0.000000
|
||||
0:122 Constant:
|
||||
0:122 0.000000
|
||||
0:123 Constant:
|
||||
0:123 0.000000
|
||||
0:124 Constant:
|
||||
0:124 0.000000
|
||||
0:125 Constant:
|
||||
0:125 0.000000
|
||||
0:126 Constant:
|
||||
0:126 0.000000
|
||||
0:127 Constant:
|
||||
0:127 0.000000
|
||||
0:128 Constant:
|
||||
0:128 0.000000
|
||||
0:129 Constant:
|
||||
0:129 0.000000
|
||||
0:130 Constant:
|
||||
0:130 0.000000
|
||||
0:131 Constant:
|
||||
0:131 0.000000
|
||||
0:132 Constant:
|
||||
0:132 0.000000
|
||||
0:133 Constant:
|
||||
0:133 0.000000
|
||||
0:134 Constant:
|
||||
0:134 0.000000
|
||||
0:135 Constant:
|
||||
0:135 0.000000
|
||||
0:136 Constant:
|
||||
0:136 0.000000
|
||||
0:137 Constant:
|
||||
0:137 0.000000
|
||||
0:138 Constant:
|
||||
0:138 0.000000
|
||||
0:139 Constant:
|
||||
0:139 0.000000
|
||||
0:140 Constant:
|
||||
0:140 0.000000
|
||||
0:141 Constant:
|
||||
0:141 0.000000
|
||||
0:142 Constant:
|
||||
0:142 0.000000
|
||||
0:143 Constant:
|
||||
0:143 0.000000
|
||||
0:144 Constant:
|
||||
0:144 0.000000
|
||||
0:145 Constant:
|
||||
0:145 0.000000
|
||||
0:146 Constant:
|
||||
0:146 0.000000
|
||||
0:147 Constant:
|
||||
0:147 0.000000
|
||||
0:148 Constant:
|
||||
0:148 0.000000
|
||||
0:149 Constant:
|
||||
0:149 0.000000
|
||||
0:150 Constant:
|
||||
0:150 0.000000
|
||||
0:154 Branch: Return with expression
|
||||
0:? Constant:
|
||||
0:? 1.000000
|
||||
0:? 2.000000
|
||||
0:? 3.000000
|
||||
0:202 Function Definition: ComputeShaderFunction(vf4;vf4;vf4;vi4; (temp 4-component vector of float)
|
||||
0:158 Function Parameters:
|
||||
0:158 'inF0' (temp 4-component vector of float)
|
||||
0:158 'inF1' (temp 4-component vector of float)
|
||||
0:158 'inF2' (temp 4-component vector of float)
|
||||
0:158 'inI0' (temp 4-component vector of int)
|
||||
0:? Sequence
|
||||
0:161 Constant:
|
||||
0:161 0.000000
|
||||
0:162 Constant:
|
||||
0:162 0.000000
|
||||
0:163 Constant:
|
||||
0:163 0.000000
|
||||
0:164 Constant:
|
||||
0:164 0.000000
|
||||
0:165 Constant:
|
||||
0:165 0.000000
|
||||
0:166 Constant:
|
||||
0:166 0.000000
|
||||
0:167 Constant:
|
||||
0:167 0.000000
|
||||
0:168 Constant:
|
||||
0:168 0.000000
|
||||
0:169 Constant:
|
||||
0:169 0.000000
|
||||
0:170 Constant:
|
||||
0:170 0.000000
|
||||
0:171 Constant:
|
||||
0:171 0.000000
|
||||
0:172 Constant:
|
||||
0:172 0.000000
|
||||
0:173 Constant:
|
||||
0:173 0.000000
|
||||
0:174 Constant:
|
||||
0:174 0.000000
|
||||
0:175 Constant:
|
||||
0:175 0.000000
|
||||
0:176 Constant:
|
||||
0:176 0.000000
|
||||
0:177 Constant:
|
||||
0:177 0.000000
|
||||
0:178 Constant:
|
||||
0:178 0.000000
|
||||
0:179 Constant:
|
||||
0:179 0.000000
|
||||
0:180 Constant:
|
||||
0:180 0.000000
|
||||
0:181 Constant:
|
||||
0:181 0.000000
|
||||
0:182 Constant:
|
||||
0:182 0.000000
|
||||
0:183 Constant:
|
||||
0:183 0.000000
|
||||
0:184 Constant:
|
||||
0:184 0.000000
|
||||
0:185 Constant:
|
||||
0:185 0.000000
|
||||
0:186 Constant:
|
||||
0:186 0.000000
|
||||
0:187 Constant:
|
||||
0:187 0.000000
|
||||
0:188 Constant:
|
||||
0:188 0.000000
|
||||
0:189 Constant:
|
||||
0:189 0.000000
|
||||
0:190 Constant:
|
||||
0:190 0.000000
|
||||
0:191 Constant:
|
||||
0:191 0.000000
|
||||
0:192 Constant:
|
||||
0:192 0.000000
|
||||
0:193 Constant:
|
||||
0:193 0.000000
|
||||
0:194 Constant:
|
||||
0:194 0.000000
|
||||
0:195 Constant:
|
||||
0:195 0.000000
|
||||
0:199 Branch: Return with expression
|
||||
0:? Constant:
|
||||
0:? 1.000000
|
||||
0:? 2.000000
|
||||
0:? 3.000000
|
||||
0:? 4.000000
|
||||
0:? Linker Objects
|
||||
|
||||
SPIR-V is not generated for failed compile or link
|
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
129
Test/hlsl.intrinsics.comp
Normal file
129
Test/hlsl.intrinsics.comp
Normal file
@ -0,0 +1,129 @@
|
||||
|
||||
#define gs // TODO: define as groupshared when available in the grammar
|
||||
gs uint gs_ua;
|
||||
gs uint gs_ub;
|
||||
gs uint gs_uc;
|
||||
gs uint2 gs_ua2;
|
||||
gs uint2 gs_ub2;
|
||||
gs uint2 gs_uc2;
|
||||
gs uint3 gs_ua3;
|
||||
gs uint3 gs_ub3;
|
||||
gs uint3 gs_uc3;
|
||||
gs uint4 gs_ua4;
|
||||
gs uint4 gs_ub4;
|
||||
gs uint4 gs_uc4;
|
||||
|
||||
float ComputeShaderFunction(float inF0, float inF1, float inF2, uint inU0, uint inU1)
|
||||
{
|
||||
uint out_u1;
|
||||
|
||||
// Don't repeat all the pixel/vertex fns - just one for sanity.
|
||||
all(inF0);
|
||||
|
||||
// Test atomics
|
||||
InterlockedAdd(gs_ua, gs_ub);
|
||||
InterlockedAdd(gs_ua, gs_ub, out_u1);
|
||||
InterlockedAnd(gs_ua, gs_ub);
|
||||
InterlockedAnd(gs_ua, gs_ub, out_u1);
|
||||
InterlockedCompareExchange(gs_ua, gs_ub, gs_uc, out_u1);
|
||||
InterlockedExchange(gs_ua, gs_ub, out_u1);
|
||||
InterlockedMax(gs_ua, gs_ub);
|
||||
InterlockedMax(gs_ua, gs_ub, out_u1);
|
||||
InterlockedMin(gs_ua, gs_ub);
|
||||
InterlockedMin(gs_ua, gs_ub, out_u1);
|
||||
InterlockedOr(gs_ua, gs_ub);
|
||||
InterlockedOr(gs_ua, gs_ub, out_u1);
|
||||
InterlockedXor(gs_ua, gs_ub);
|
||||
InterlockedXor(gs_ua, gs_ub, out_u1);
|
||||
|
||||
// CheckAccessFullyMapped(3); // TODO: ...
|
||||
|
||||
return 0.0;
|
||||
}
|
||||
|
||||
float1 ComputeShaderFunction(float1 inF0, float1 inF1, float1 inF2)
|
||||
{
|
||||
// TODO: ... add when float1 prototypes are generated
|
||||
return 0.0;
|
||||
}
|
||||
|
||||
float2 ComputeShaderFunction(float2 inF0, float2 inF1, float2 inF2, uint2 inU0, uint2 inU1)
|
||||
{
|
||||
uint2 out_u2;
|
||||
|
||||
// Don't repeat all the pixel/vertex fns - just one for sanity.
|
||||
all(inF0);
|
||||
|
||||
// Test atomics
|
||||
InterlockedAdd(gs_ua2, gs_ub2);
|
||||
InterlockedAdd(gs_ua2, gs_ub2, out_u2);
|
||||
InterlockedAnd(gs_ua2, gs_ub2);
|
||||
InterlockedAnd(gs_ua2, gs_ub2, out_u2);
|
||||
InterlockedCompareExchange(gs_ua2, gs_ub2, gs_uc2, out_u2);
|
||||
InterlockedExchange(gs_ua2, gs_ub2, out_u2);
|
||||
InterlockedMax(gs_ua2, gs_ub2);
|
||||
InterlockedMax(gs_ua2, gs_ub2, out_u2);
|
||||
InterlockedMin(gs_ua2, gs_ub2);
|
||||
InterlockedMin(gs_ua2, gs_ub2, out_u2);
|
||||
InterlockedOr(gs_ua2, gs_ub2);
|
||||
InterlockedOr(gs_ua2, gs_ub2, out_u2);
|
||||
InterlockedXor(gs_ua2, gs_ub2);
|
||||
InterlockedXor(gs_ua2, gs_ub2, out_u2);
|
||||
|
||||
// TODO: ... add when float1 prototypes are generated
|
||||
return float2(1,2);
|
||||
}
|
||||
|
||||
float3 ComputeShaderFunction(float3 inF0, float3 inF1, float3 inF2, uint3 inU0, uint3 inU1)
|
||||
{
|
||||
uint3 out_u3;
|
||||
|
||||
// Don't repeat all the pixel/vertex fns - just one for sanity.
|
||||
all(inF0);
|
||||
|
||||
// Test atomics
|
||||
InterlockedAdd(gs_ua3, gs_ub3);
|
||||
InterlockedAdd(gs_ua3, gs_ub3, out_u3);
|
||||
InterlockedAnd(gs_ua3, gs_ub3);
|
||||
InterlockedAnd(gs_ua3, gs_ub3, out_u3);
|
||||
InterlockedCompareExchange(gs_ua3, gs_ub3, gs_uc3, out_u3);
|
||||
InterlockedExchange(gs_ua3, gs_ub3, out_u3);
|
||||
InterlockedMax(gs_ua3, gs_ub3);
|
||||
InterlockedMax(gs_ua3, gs_ub3, out_u3);
|
||||
InterlockedMin(gs_ua3, gs_ub3);
|
||||
InterlockedMin(gs_ua3, gs_ub3, out_u3);
|
||||
InterlockedOr(gs_ua3, gs_ub3);
|
||||
InterlockedOr(gs_ua3, gs_ub3, out_u3);
|
||||
InterlockedXor(gs_ua3, gs_ub3);
|
||||
InterlockedXor(gs_ua3, gs_ub3, out_u3);
|
||||
|
||||
// TODO: ... add when float1 prototypes are generated
|
||||
return float3(1,2,3);
|
||||
}
|
||||
|
||||
float4 ComputeShaderFunction(float4 inF0, float4 inF1, float4 inF2, uint4 inU0, uint4 inU1)
|
||||
{
|
||||
uint4 out_u4;
|
||||
|
||||
// Don't repeat all the pixel/vertex fns - just one for sanity.
|
||||
all(inF0);
|
||||
|
||||
// Test atomics
|
||||
InterlockedAdd(gs_ua4, gs_ub4);
|
||||
InterlockedAdd(gs_ua4, gs_ub4, out_u4);
|
||||
InterlockedAnd(gs_ua4, gs_ub4);
|
||||
InterlockedAnd(gs_ua4, gs_ub4, out_u4);
|
||||
InterlockedCompareExchange(gs_ua4, gs_ub4, gs_uc4, out_u4);
|
||||
InterlockedExchange(gs_ua4, gs_ub4, out_u4);
|
||||
InterlockedMax(gs_ua4, gs_ub4);
|
||||
InterlockedMax(gs_ua4, gs_ub4, out_u4);
|
||||
InterlockedMin(gs_ua4, gs_ub4);
|
||||
InterlockedMin(gs_ua4, gs_ub4, out_u4);
|
||||
InterlockedOr(gs_ua4, gs_ub4);
|
||||
InterlockedOr(gs_ua4, gs_ub4, out_u4);
|
||||
InterlockedXor(gs_ua4, gs_ub4);
|
||||
InterlockedXor(gs_ua4, gs_ub4, out_u4);
|
||||
|
||||
// TODO: ... add when float1 prototypes are generated
|
||||
return float4(1,2,3,4);
|
||||
}
|
@ -1,10 +1,31 @@
|
||||
float PixelShaderFunction(float inF0, float inF1, float inF2)
|
||||
|
||||
#define gs // TODO: define as groupshared when available in the grammar
|
||||
gs uint gs_ua;
|
||||
gs uint gs_ub;
|
||||
gs uint gs_uc;
|
||||
gs uint2 gs_ua2;
|
||||
gs uint2 gs_ub2;
|
||||
gs uint2 gs_uc2;
|
||||
gs uint3 gs_ua3;
|
||||
gs uint3 gs_ub3;
|
||||
gs uint3 gs_uc3;
|
||||
gs uint4 gs_ua4;
|
||||
gs uint4 gs_ub4;
|
||||
gs uint4 gs_uc4;
|
||||
|
||||
float PixelShaderFunction(float inF0, float inF1, float inF2, uint inU0, uint inU1)
|
||||
{
|
||||
uint out_u1;
|
||||
|
||||
all(inF0);
|
||||
abs(inF0);
|
||||
acos(inF0);
|
||||
any(inF0);
|
||||
asin(inF0);
|
||||
asint(inF0);
|
||||
asuint(inF0);
|
||||
asfloat(inU0);
|
||||
// asdouble(inU0, inU1); // TODO: enable when HLSL parser used for intrinsics
|
||||
atan(inF0);
|
||||
atan2(inF0, inF1);
|
||||
ceil(inF0);
|
||||
@ -69,13 +90,19 @@ float1 PixelShaderFunction(float1 inF0, float1 inF1, float1 inF2)
|
||||
return 0.0;
|
||||
}
|
||||
|
||||
float2 PixelShaderFunction(float2 inF0, float2 inF1, float2 inF2)
|
||||
float2 PixelShaderFunction(float2 inF0, float2 inF1, float2 inF2, uint2 inU0, uint2 inU1)
|
||||
{
|
||||
uint2 out_u2;
|
||||
|
||||
all(inF0);
|
||||
abs(inF0);
|
||||
acos(inF0);
|
||||
any(inF0);
|
||||
asin(inF0);
|
||||
asint(inF0);
|
||||
asuint(inF0);
|
||||
asfloat(inU0);
|
||||
// asdouble(inU0, inU1); // TODO: enable when HLSL parser used for intrinsics
|
||||
atan(inF0);
|
||||
atan2(inF0, inF1);
|
||||
ceil(inF0);
|
||||
@ -142,13 +169,19 @@ float2 PixelShaderFunction(float2 inF0, float2 inF1, float2 inF2)
|
||||
return float2(1,2);
|
||||
}
|
||||
|
||||
float3 PixelShaderFunction(float3 inF0, float3 inF1, float3 inF2)
|
||||
float3 PixelShaderFunction(float3 inF0, float3 inF1, float3 inF2, uint3 inU0, uint3 inU1)
|
||||
{
|
||||
uint3 out_u3;
|
||||
|
||||
all(inF0);
|
||||
abs(inF0);
|
||||
acos(inF0);
|
||||
any(inF0);
|
||||
asin(inF0);
|
||||
asint(inF0);
|
||||
asuint(inF0);
|
||||
asfloat(inU0);
|
||||
// asdouble(inU0, inU1); // TODO: enable when HLSL parser used for intrinsics
|
||||
atan(inF0);
|
||||
atan2(inF0, inF1);
|
||||
ceil(inF0);
|
||||
@ -216,13 +249,19 @@ float3 PixelShaderFunction(float3 inF0, float3 inF1, float3 inF2)
|
||||
return float3(1,2,3);
|
||||
}
|
||||
|
||||
float4 PixelShaderFunction(float4 inF0, float4 inF1, float4 inF2)
|
||||
float4 PixelShaderFunction(float4 inF0, float4 inF1, float4 inF2, uint4 inU0, uint4 inU1)
|
||||
{
|
||||
uint4 out_u4;
|
||||
|
||||
all(inF0);
|
||||
abs(inF0);
|
||||
acos(inF0);
|
||||
any(inF0);
|
||||
asin(inF0);
|
||||
asint(inF0);
|
||||
asuint(inF0);
|
||||
asfloat(inU0);
|
||||
// asdouble(inU0, inU1); // TODO: enable when HLSL parser used for intrinsics
|
||||
atan(inF0);
|
||||
atan2(inF0, inF1);
|
||||
ceil(inF0);
|
||||
@ -290,6 +329,11 @@ float4 PixelShaderFunction(float4 inF0, float4 inF1, float4 inF2)
|
||||
return float4(1,2,3,4);
|
||||
}
|
||||
|
||||
// TODO: for mats:
|
||||
// asfloat(inU0); \
|
||||
// asint(inF0); \
|
||||
// asuint(inF0); \
|
||||
|
||||
// TODO: FXC doesn't accept this with (), but glslang doesn't accept it without.
|
||||
#define MATFNS() \
|
||||
all(inF0); \
|
||||
|
201
Test/hlsl.intrinsics.negative.comp
Normal file
201
Test/hlsl.intrinsics.negative.comp
Normal file
@ -0,0 +1,201 @@
|
||||
float ComputeShaderFunction(float inF0, float inF1, float inF2, int inI0)
|
||||
{
|
||||
uint out_u1;
|
||||
|
||||
// AllMemoryBarrier(); // invalid in fragment stage TODO: parser currently crashes on empty arg list
|
||||
// AllMemoryBarrierWithGroupSync(); // invalid in fragment stage TODO: parser currently crashes on empty arg list
|
||||
asdouble(inF0, inF1); // expected error: only integer inputs
|
||||
CheckAccessFullyMapped(3.0); // expected error: only valid on integers
|
||||
clip(inF0); // expected error: only valid in pixel stage
|
||||
countbits(inF0); // expected error: only integer inputs
|
||||
cross(inF0, inF1); // expected error: only on float3 inputs
|
||||
D3DCOLORtoUBYTE4(inF0); // expected error: only on float4 inputs
|
||||
ddx(inF0); // expected error: only valid in pixel stage
|
||||
ddx_coarse(inF0); // expected error: only valid in pixel stage
|
||||
ddx_fine(inF0); // expected error: only valid in pixel stage
|
||||
ddy(inF0); // expected error: only valid in pixel stage
|
||||
ddy_coarse(inF0); // expected error: only valid in pixel stage
|
||||
ddy_fine(inF0); // expected error: only valid in pixel stage
|
||||
determinant(inF0); // expected error: only valid on mats
|
||||
EvaluateAttributeAtCentroid(inF0); // expected error: only valid in pixel stage
|
||||
EvaluateAttributeAtSample(inF0, 2); // expected error: only valid in pixel stage
|
||||
EvaluateAttributeSnapped(inF0, int2(2)); // expected error: only valid in pixel stage
|
||||
f16tof32(inF0); // expected error: only integer inputs
|
||||
firstbithigh(inF0); // expected error: only integer inputs
|
||||
firstbitlow(inF0); // expected error: only integer inputs
|
||||
fma(inF0, inF1, inF2); // expected error: only double inputs
|
||||
fwidth(inF0); // expected error: only valid in pixel stage
|
||||
InterlockedAdd(gs_ua, gs_ub); // expected error: only valid in pixel stage
|
||||
InterlockedAdd(gs_ua, gs_ub, out_u1); // expected error: only valid in pixel stage
|
||||
InterlockedAnd(gs_ua, gs_ub); // expected error: only valid in pixel stage
|
||||
InterlockedAnd(gs_ua, gs_ub, out_u1); // expected error: only valid in pixel stage
|
||||
InterlockedCompareExchange(gs_ua, gs_ub, gs_uc, out_u1); // expected error: only valid in pixel stage
|
||||
InterlockedExchange(gs_ua, gs_ub, out_u1);// expected error: only valid in pixel stage
|
||||
InterlockedMax(gs_ua, gs_ub); // expected error: only valid in pixel stage
|
||||
InterlockedMax(gs_ua, gs_ub, out_u1); // expected error: only valid in pixel stage
|
||||
InterlockedMin(gs_ua, gs_ub); // expected error: only valid in pixel stage
|
||||
InterlockedMin(gs_ua, gs_ub, out_u1); // expected error: only valid in pixel stage
|
||||
InterlockedOr(gs_ua, gs_ub); // expected error: only valid in pixel stage
|
||||
InterlockedOr(gs_ua, gs_ub, out_u1); // expected error: only valid in pixel stage
|
||||
InterlockedXor(gs_ua, gs_ub); // expected error: only valid in pixel stage
|
||||
InterlockedXor(gs_ua, gs_ub, out_u1); // expected error: only valid in pixel stage
|
||||
length(inF0); // expect error: invalid on scalars
|
||||
msad4(inF0, float2(0), float4(0)); // expected error: only integer inputs
|
||||
normalize(inF0); // expect error: invalid on scalars
|
||||
reflect(inF0, inF1); // expect error: invalid on scalars
|
||||
refract(inF0, inF1, inF2); // expect error: invalid on scalars
|
||||
refract(float2(0), float2(0), float2(0)); // expected error: last parameter only scalar
|
||||
reversebits(inF0); // expected error: only integer inputs
|
||||
transpose(inF0); // expect error: only valid on mats
|
||||
|
||||
// TODO: texture intrinsics, when we can declare samplers.
|
||||
|
||||
return 0.0;
|
||||
}
|
||||
|
||||
float1 ComputeShaderFunction(float1 inF0, float1 inF1, float1 inF2, int1 inI0)
|
||||
{
|
||||
// TODO: ... add when float1 prototypes are generated
|
||||
|
||||
GetRenderTargetSamplePosition(inF0); // expected error: only integer inputs
|
||||
|
||||
return 0.0;
|
||||
}
|
||||
|
||||
float2 ComputeShaderFunction(float2 inF0, float2 inF1, float2 inF2, int2 inI0)
|
||||
{
|
||||
uint2 out_u2;
|
||||
|
||||
asdouble(inF0, inF1); // expected error: only integer inputs
|
||||
CheckAccessFullyMapped(inF0); // expect error: only valid on scalars
|
||||
countbits(inF0); // expected error: only integer inputs
|
||||
cross(inF0, inF1); // expected error: only on float3 inputs
|
||||
D3DCOLORtoUBYTE4(inF0); // expected error: only on float4 inputs
|
||||
ddx(inF0); // only valid in pixel stage
|
||||
ddx_coarse(inF0); // only valid in pixel stage
|
||||
ddx_fine(inF0); // only valid in pixel stage
|
||||
ddy(inF0); // only valid in pixel stage
|
||||
ddy_coarse(inF0); // only valid in pixel stage
|
||||
ddy_fine(inF0); // only valid in pixel stage
|
||||
determinant(inF0); // expect error: only valid on mats
|
||||
EvaluateAttributeAtCentroid(inF0); // expected error: only valid in pixel stage
|
||||
EvaluateAttributeAtSample(inF0, 2); // expected error: only valid in pixel stage
|
||||
EvaluateAttributeSnapped(inF0, int2(2)); // expected error: only valid in pixel stage
|
||||
f16tof32(inF0); // expected error: only integer inputs
|
||||
firstbithigh(inF0); // expected error: only integer inputs
|
||||
firstbitlow(inF0); // expected error: only integer inputs
|
||||
fma(inF0, inF1, inF2); // expected error: only double inputs
|
||||
fwidth(inF0); // expected error: only valid in pixel stage
|
||||
InterlockedAdd(gs_ua2, gs_ub2); // expected error: only valid in pixel stage
|
||||
InterlockedAdd(gs_ua2, gs_ub2, out_u2); // expected error: only valid in pixel stage
|
||||
InterlockedAnd(gs_ua2, gs_ub2); // expected error: only valid in pixel stage
|
||||
InterlockedAnd(gs_ua2, gs_ub2, out_u2); // expected error: only valid in pixel stage
|
||||
InterlockedCompareExchange(gs_ua2, gs_ub2, gs_uc2, out_u2); // expected error: only valid in pixel stage
|
||||
InterlockedExchange(gs_ua2, gs_ub2, out_u2);// expected error: only valid in pixel stage
|
||||
InterlockedMax(gs_ua2, gs_ub2); // expected error: only valid in pixel stage
|
||||
InterlockedMax(gs_ua2, gs_ub2, out_u2); // expected error: only valid in pixel stage
|
||||
InterlockedMin(gs_ua2, gs_ub2); // expected error: only valid in pixel stage
|
||||
InterlockedMin(gs_ua2, gs_ub2, out_u2); // expected error: only valid in pixel stage
|
||||
InterlockedOr(gs_ua2, gs_ub2); // expected error: only valid in pixel stage
|
||||
InterlockedOr(gs_ua2, gs_ub2, out_u2); // expected error: only valid in pixel stage
|
||||
InterlockedXor(gs_ua2, gs_ub2); // expected error: only valid in pixel stage
|
||||
InterlockedXor(gs_ua2, gs_ub2, out_u2); // expected error: only valid in pixel stage
|
||||
noise(inF0); // expected error: only valid in pixel stage
|
||||
reversebits(inF0); // expected error: only integer inputs
|
||||
transpose(inF0); // expect error: only valid on mats
|
||||
|
||||
// TODO: texture intrinsics, when we can declare samplers.
|
||||
|
||||
return float2(1,2);
|
||||
}
|
||||
|
||||
float3 ComputeShaderFunction(float3 inF0, float3 inF1, float3 inF2, int3 inI0)
|
||||
{
|
||||
uint3 out_u3;
|
||||
|
||||
CheckAccessFullyMapped(inF0); // expect error: only valid on scalars
|
||||
countbits(inF0); // expected error: only integer inputs
|
||||
ddx(inF0); // only valid in pixel stage
|
||||
ddx_coarse(inF0); // only valid in pixel stage
|
||||
ddx_fine(inF0); // only valid in pixel stage
|
||||
ddy(inF0); // only valid in pixel stage
|
||||
ddy_coarse(inF0); // only valid in pixel stage
|
||||
ddy_fine(inF0); // only valid in pixel stage
|
||||
D3DCOLORtoUBYTE4(inF0); // expected error: only on float4 inputs
|
||||
determinant(inF0); // expect error: only valid on mats
|
||||
EvaluateAttributeAtCentroid(inF0); // expected error: only valid in pixel stage
|
||||
EvaluateAttributeAtSample(inF0, 2); // expected error: only valid in pixel stage
|
||||
EvaluateAttributeSnapped(inF0, int2(2)); // expected error: only valid in pixel stage
|
||||
f16tof32(inF0); // expected error: only integer inputs
|
||||
firstbithigh(inF0); // expected error: only integer inputs
|
||||
firstbitlow(inF0); // expected error: only integer inputs
|
||||
fma(inF0, inF1, inF2); // expected error: only double inputs
|
||||
fwidth(inF0); // expected error: only valid in pixel stage
|
||||
InterlockedAdd(gs_ua3, gs_ub3); // expected error: only valid in pixel stage
|
||||
InterlockedAdd(gs_ua3, gs_ub3, out_u3); // expected error: only valid in pixel stage
|
||||
InterlockedAnd(gs_ua3, gs_ub3); // expected error: only valid in pixel stage
|
||||
InterlockedAnd(gs_ua3, gs_ub3, out_u3); // expected error: only valid in pixel stage
|
||||
InterlockedCompareExchange(gs_ua3, gs_ub3, gs_uc3, out_u3); // expected error: only valid in pixel stage
|
||||
InterlockedExchange(gs_ua3, gs_ub3, out_u3); // expected error: only valid in pixel stage
|
||||
InterlockedMax(gs_ua3, gs_ub3); // expected error: only valid in pixel stage
|
||||
InterlockedMax(gs_ua3, gs_ub3, out_u3); // expected error: only valid in pixel stage
|
||||
InterlockedMin(gs_ua3, gs_ub3); // expected error: only valid in pixel stage
|
||||
InterlockedMin(gs_ua3, gs_ub3, out_u3); // expected error: only valid in pixel stage
|
||||
InterlockedOr(gs_ua3, gs_ub3); // expected error: only valid in pixel stage
|
||||
InterlockedOr(gs_ua3, gs_ub3, out_u3); // expected error: only valid in pixel stage
|
||||
InterlockedXor(gs_ua3, gs_ub3); // expected error: only valid in pixel stage
|
||||
InterlockedXor(gs_ua3, gs_ub3, out_u3); // expected error: only valid in pixel stage
|
||||
noise(inF0); // expected error: only valid in pixel stage
|
||||
reversebits(inF0); // expected error: only integer inputs
|
||||
transpose(inF0); // expect error: only valid on mats
|
||||
|
||||
// TODO: texture intrinsics, when we can declare samplers.
|
||||
|
||||
return float3(1,2,3);
|
||||
}
|
||||
|
||||
float4 ComputeShaderFunction(float4 inF0, float4 inF1, float4 inF2, int4 inI0)
|
||||
{
|
||||
uint4 out_u4;
|
||||
|
||||
CheckAccessFullyMapped(inF0); // expect error: only valid on scalars
|
||||
countbits(inF0); // expected error: only integer inputs
|
||||
cross(inF0, inF1); // expected error: only on float3 inputs
|
||||
determinant(inF0); // expect error: only valid on mats
|
||||
ddx(inF0); // only valid in pixel stage
|
||||
ddx_coarse(inF0); // only valid in pixel stage
|
||||
ddx_fine(inF0); // only valid in pixel stage
|
||||
ddy(inF0); // only valid in pixel stage
|
||||
ddy_coarse(inF0); // only valid in pixel stage
|
||||
ddy_fine(inF0); // only valid in pixel stage
|
||||
EvaluateAttributeAtCentroid(inF0); // expected error: only valid in pixel stage
|
||||
EvaluateAttributeAtSample(inF0, 2); // expected error: only valid in pixel stage
|
||||
EvaluateAttributeSnapped(inF0, int2(2)); // expected error: only valid in pixel stage
|
||||
f16tof32(inF0); // expected error: only integer inputs
|
||||
firstbithigh(inF0); // expected error: only integer inputs
|
||||
firstbitlow(inF0); // expected error: only integer inputs
|
||||
fma(inF0, inF1, inF2); // expected error: only double inputs
|
||||
fwidth(inF0); // expected error: only valid in pixel stage
|
||||
InterlockedAdd(gs_ua4, gs_ub4); // expected error: only valid in pixel stage
|
||||
InterlockedAdd(gs_ua4, gs_ub4, out_u4); // expected error: only valid in pixel stage
|
||||
InterlockedAnd(gs_ua4, gs_ub4); // expected error: only valid in pixel stage
|
||||
InterlockedAnd(gs_ua4, gs_ub4, out_u4); // expected error: only valid in pixel stage
|
||||
InterlockedCompareExchange(gs_ua4, gs_ub4, gs_uc4, out_u4); // expected error: only valid in pixel stage
|
||||
InterlockedExchange(gs_ua4, gs_ub4, out_u4); // expected error: only valid in pixel stage
|
||||
InterlockedMax(gs_ua4, gs_ub4); // expected error: only valid in pixel stage
|
||||
InterlockedMax(gs_ua4, gs_ub4, out_u4); // expected error: only valid in pixel stage
|
||||
InterlockedMin(gs_ua4, gs_ub4); // expected error: only valid in pixel stage
|
||||
InterlockedMin(gs_ua4, gs_ub4, out_u4); // expected error: only valid in pixel stage
|
||||
InterlockedOr(gs_ua4, gs_ub4); // expected error: only valid in pixel stage
|
||||
InterlockedOr(gs_ua4, gs_ub4, out_u4); // expected error: only valid in pixel stage
|
||||
InterlockedXor(gs_ua4, gs_ub4); // expected error: only valid in pixel stage
|
||||
InterlockedXor(gs_ua4, gs_ub4, out_u4); // expected error: only valid in pixel stage
|
||||
noise(inF0); // expected error: only valid in pixel stage
|
||||
reversebits(inF0); // expected error: only integer inputs
|
||||
transpose(inF0); // expect error: only valid on mats
|
||||
|
||||
// TODO: texture intrinsics, when we can declare samplers.
|
||||
|
||||
return float4(1,2,3,4);
|
||||
}
|
||||
|
@ -78,16 +78,16 @@ float3 PixelShaderFunction(float3 inF0, float3 inF1, float3 inF2, int3 inI0)
|
||||
|
||||
float4 PixelShaderFunction(float4 inF0, float4 inF1, float4 inF2, int4 inI0)
|
||||
{
|
||||
CheckAccessFullyMapped(inF0); // expected error: only valid on scalars
|
||||
countbits(inF0); // expected error: only integer inputs
|
||||
cross(inF0, inF1); // expected error: only on float3 inputs
|
||||
determinant(inF0); // expected error: only valid on mats
|
||||
f16tof32(inF0); // expected error: only integer inputs
|
||||
firstbithigh(inF0); // expected error: only integer inputs
|
||||
firstbitlow(inF0); // expected error: only integer inputs
|
||||
fma(inF0, inF1, inF2); // expected error: only double inputs
|
||||
reversebits(inF0); // expected error: only integer inputs
|
||||
transpose(inF0); // expected error: only valid on mats
|
||||
CheckAccessFullyMapped(inF0); // expected error: only valid on scalars
|
||||
countbits(inF0); // expected error: only integer inputs
|
||||
cross(inF0, inF1); // expected error: only on float3 inputs
|
||||
determinant(inF0); // expected error: only valid on mats
|
||||
f16tof32(inF0); // expected error: only integer inputs
|
||||
firstbithigh(inF0); // expected error: only integer inputs
|
||||
firstbitlow(inF0); // expected error: only integer inputs
|
||||
fma(inF0, inF1, inF2); // expected error: only double inputs
|
||||
reversebits(inF0); // expected error: only integer inputs
|
||||
transpose(inF0); // expected error: only valid on mats
|
||||
|
||||
return float4(1,2,3,4);
|
||||
}
|
||||
|
@ -1,22 +1,37 @@
|
||||
uint gs_ua;
|
||||
uint gs_ub;
|
||||
uint gs_uc;
|
||||
uint2 gs_ua2;
|
||||
uint2 gs_ub2;
|
||||
uint2 gs_uc2;
|
||||
uint3 gs_ua3;
|
||||
uint3 gs_ub3;
|
||||
uint3 gs_uc3;
|
||||
uint4 gs_ua4;
|
||||
uint4 gs_ub4;
|
||||
uint4 gs_uc4;
|
||||
|
||||
float VertexShaderFunction(float inF0, float inF1, float inF2, int inI0)
|
||||
{
|
||||
uint out_u1;
|
||||
|
||||
// AllMemoryBarrier(); // invalid in fragment stage TODO: parser currently crashes on empty arg list
|
||||
// AllMemoryBarrierWithGroupSync(); // invalid in fragment stage TODO: parser currently crashes on empty arg list
|
||||
asdouble(inF0, inF1); // expected error: only integer inputs
|
||||
CheckAccessFullyMapped(3.0); // expected error: only valid on integers
|
||||
CheckAccessFullyMapped(3); // expected error: only valid in pixel & compute stages
|
||||
clip(inF0); // expected error: only valid in pixel & compute stages
|
||||
clip(inF0); // expected error: only valid in pixel stage
|
||||
countbits(inF0); // expected error: only integer inputs
|
||||
cross(inF0, inF1); // expected error: only on float3 inputs
|
||||
D3DCOLORtoUBYTE4(inF0); // expected error: only on float4 inputs
|
||||
// DeviceMemoryBarrier(); // TODO: expected error: only valid in pixel & compute stages
|
||||
// DeviceMemoryBarrierWithGroupSync(); // TODO: expected error: only valid in compute stage
|
||||
ddx(inF0); // expected error: only valid in pixel & compute stages
|
||||
ddx_coarse(inF0); // expected error: only valid in pixel & compute stages
|
||||
ddx_fine(inF0); // expected error: only valid in pixel & compute stages
|
||||
ddy(inF0); // expected error: only valid in pixel & compute stages
|
||||
ddy_coarse(inF0); // expected error: only valid in pixel & compute stages
|
||||
ddy_fine(inF0); // expected error: only valid in pixel & compute stages
|
||||
ddx(inF0); // expected error: only valid in pixel stage
|
||||
ddx_coarse(inF0); // expected error: only valid in pixel stage
|
||||
ddx_fine(inF0); // expected error: only valid in pixel stage
|
||||
ddy(inF0); // expected error: only valid in pixel stage
|
||||
ddy_coarse(inF0); // expected error: only valid in pixel stage
|
||||
ddy_fine(inF0); // expected error: only valid in pixel stage
|
||||
determinant(inF0); // expected error: only valid on mats
|
||||
EvaluateAttributeAtCentroid(inF0); // expected error: only valid in pixel stage
|
||||
EvaluateAttributeAtSample(inF0, 2); // expected error: only valid in pixel stage
|
||||
@ -25,11 +40,21 @@ float VertexShaderFunction(float inF0, float inF1, float inF2, int inI0)
|
||||
firstbithigh(inF0); // expected error: only integer inputs
|
||||
firstbitlow(inF0); // expected error: only integer inputs
|
||||
fma(inF0, inF1, inF2); // expected error: only double inputs
|
||||
// InterlockedAdd(inI0, inI0, 3); // expected error: last parameter is out TODO: accepted even though marked as out in proto generator
|
||||
// InterlockedAnd(inI0, inI0, 3); // expected error: last parameter is out TODO: accepted even though marked as out i // InterlockedMax(inI0, inI0, 3); // expected error: last parameter is out TODO: accepted even though marked as out in proto generator
|
||||
// InterlockedMin(inI0, inI0, 3); // expected error: last parameter is out TODO: accepted even though marked as out in proto generator
|
||||
// InterlockedOor(inI0, inI0, 3); // expected error: last parameter is out TODO: accepted even though marked as out in proto generator
|
||||
// InterlockedXor(inI0, inI0, 3); // expected error: last parameter is out TODO: accepted even though marked as out in proto generator
|
||||
fwidth(inF0); // expected error: only valid in pixel stage
|
||||
InterlockedAdd(gs_ua, gs_ub); // expected error: only valid in pixel stage
|
||||
InterlockedAdd(gs_ua, gs_ub, out_u1); // expected error: only valid in pixel stage
|
||||
InterlockedAnd(gs_ua, gs_ub); // expected error: only valid in pixel stage
|
||||
InterlockedAnd(gs_ua, gs_ub, out_u1); // expected error: only valid in pixel stage
|
||||
InterlockedCompareExchange(gs_ua, gs_ub, gs_uc, out_u1); // expected error: only valid in pixel stage
|
||||
InterlockedExchange(gs_ua, gs_ub, out_u1);// expected error: only valid in pixel stage
|
||||
InterlockedMax(gs_ua, gs_ub); // expected error: only valid in pixel stage
|
||||
InterlockedMax(gs_ua, gs_ub, out_u1); // expected error: only valid in pixel stage
|
||||
InterlockedMin(gs_ua, gs_ub); // expected error: only valid in pixel stage
|
||||
InterlockedMin(gs_ua, gs_ub, out_u1); // expected error: only valid in pixel stage
|
||||
InterlockedOr(gs_ua, gs_ub); // expected error: only valid in pixel stage
|
||||
InterlockedOr(gs_ua, gs_ub, out_u1); // expected error: only valid in pixel stage
|
||||
InterlockedXor(gs_ua, gs_ub); // expected error: only valid in pixel stage
|
||||
InterlockedXor(gs_ua, gs_ub, out_u1); // expected error: only valid in pixel stage
|
||||
// GroupMemoryBarrier(); // TODO: expected error: only valid in compute stage
|
||||
// GroupMemoryBarrierWithGroupSync(); // TODO: expected error: only valid in compute stage
|
||||
length(inF0); // expect error: invalid on scalars
|
||||
@ -57,28 +82,45 @@ float1 VertexShaderFunction(float1 inF0, float1 inF1, float1 inF2, int1 inI0)
|
||||
|
||||
float2 VertexShaderFunction(float2 inF0, float2 inF1, float2 inF2, int2 inI0)
|
||||
{
|
||||
asdouble(inF0, inF1); // expected error: only integer inputs
|
||||
CheckAccessFullyMapped(inF0); // expect error: only valid on scalars
|
||||
countbits(inF0); // expected error: only integer inputs
|
||||
cross(inF0, inF1); // expected error: only on float3 inputs
|
||||
D3DCOLORtoUBYTE4(inF0); // expected error: only on float4 inputs
|
||||
ddx(inF0); // only valid in pixel & compute stages
|
||||
ddx_coarse(inF0); // only valid in pixel & compute stages
|
||||
ddx_fine(inF0); // only valid in pixel & compute stages
|
||||
ddy(inF0); // only valid in pixel & compute stages
|
||||
ddy_coarse(inF0); // only valid in pixel & compute stages
|
||||
ddy_fine(inF0); // only valid in pixel & compute stages
|
||||
determinant(inF0); // expect error: only valid on mats
|
||||
EvaluateAttributeAtCentroid(inF0); // expected error: only valid in pixel stage
|
||||
EvaluateAttributeAtSample(inF0, 2); // expected error: only valid in pixel stage
|
||||
EvaluateAttributeSnapped(inF0, int2(2)); // expected error: only valid in pixel stage
|
||||
f16tof32(inF0); // expected error: only integer inputs
|
||||
firstbithigh(inF0); // expected error: only integer inputs
|
||||
firstbitlow(inF0); // expected error: only integer inputs
|
||||
fma(inF0, inF1, inF2); // expected error: only double inputs
|
||||
noise(inF0); // expected error: only valid in pixel stage
|
||||
reversebits(inF0); // expected error: only integer inputs
|
||||
transpose(inF0); // expect error: only valid on mats
|
||||
uint2 out_u2;
|
||||
|
||||
asdouble(inF0, inF1); // expected error: only integer inputs
|
||||
CheckAccessFullyMapped(inF0); // expect error: only valid on scalars
|
||||
countbits(inF0); // expected error: only integer inputs
|
||||
cross(inF0, inF1); // expected error: only on float3 inputs
|
||||
D3DCOLORtoUBYTE4(inF0); // expected error: only on float4 inputs
|
||||
ddx(inF0); // only valid in pixel stage
|
||||
ddx_coarse(inF0); // only valid in pixel stage
|
||||
ddx_fine(inF0); // only valid in pixel stage
|
||||
ddy(inF0); // only valid in pixel stage
|
||||
ddy_coarse(inF0); // only valid in pixel stage
|
||||
ddy_fine(inF0); // only valid in pixel stage
|
||||
determinant(inF0); // expect error: only valid on mats
|
||||
EvaluateAttributeAtCentroid(inF0); // expected error: only valid in pixel stage
|
||||
EvaluateAttributeAtSample(inF0, 2); // expected error: only valid in pixel stage
|
||||
EvaluateAttributeSnapped(inF0, int2(2)); // expected error: only valid in pixel stage
|
||||
f16tof32(inF0); // expected error: only integer inputs
|
||||
firstbithigh(inF0); // expected error: only integer inputs
|
||||
firstbitlow(inF0); // expected error: only integer inputs
|
||||
fma(inF0, inF1, inF2); // expected error: only double inputs
|
||||
fwidth(inF0); // expected error: only valid in pixel stage
|
||||
InterlockedAdd(gs_ua2, gs_ub2); // expected error: only valid in pixel stage
|
||||
InterlockedAdd(gs_ua2, gs_ub2, out_u2); // expected error: only valid in pixel stage
|
||||
InterlockedAnd(gs_ua2, gs_ub2); // expected error: only valid in pixel stage
|
||||
InterlockedAnd(gs_ua2, gs_ub2, out_u2); // expected error: only valid in pixel stage
|
||||
InterlockedCompareExchange(gs_ua2, gs_ub2, gs_uc2, out_u2); // expected error: only valid in pixel stage
|
||||
InterlockedExchange(gs_ua2, gs_ub2, out_u2); // expected error: only valid in pixel stage
|
||||
InterlockedMax(gs_ua2, gs_ub2); // expected error: only valid in pixel stage
|
||||
InterlockedMax(gs_ua2, gs_ub2, out_u2); // expected error: only valid in pixel stage
|
||||
InterlockedMin(gs_ua2, gs_ub2); // expected error: only valid in pixel stage
|
||||
InterlockedMin(gs_ua2, gs_ub2, out_u2); // expected error: only valid in pixel stage
|
||||
InterlockedOr(gs_ua2, gs_ub2); // expected error: only valid in pixel stage
|
||||
InterlockedOr(gs_ua2, gs_ub2, out_u2); // expected error: only valid in pixel stage
|
||||
InterlockedXor(gs_ua2, gs_ub2); // expected error: only valid in pixel stage
|
||||
InterlockedXor(gs_ua2, gs_ub2, out_u2); // expected error: only valid in pixel stage
|
||||
noise(inF0); // expected error: only valid in pixel stage
|
||||
reversebits(inF0); // expected error: only integer inputs
|
||||
transpose(inF0); // expect error: only valid on mats
|
||||
|
||||
// TODO: texture intrinsics, when we can declare samplers.
|
||||
|
||||
@ -87,26 +129,43 @@ float2 VertexShaderFunction(float2 inF0, float2 inF1, float2 inF2, int2 inI0)
|
||||
|
||||
float3 VertexShaderFunction(float3 inF0, float3 inF1, float3 inF2, int3 inI0)
|
||||
{
|
||||
CheckAccessFullyMapped(inF0); // expect error: only valid on scalars
|
||||
countbits(inF0); // expected error: only integer inputs
|
||||
ddx(inF0); // only valid in pixel & compute stages
|
||||
ddx_coarse(inF0); // only valid in pixel & compute stages
|
||||
ddx_fine(inF0); // only valid in pixel & compute stages
|
||||
ddy(inF0); // only valid in pixel & compute stages
|
||||
ddy_coarse(inF0); // only valid in pixel & compute stages
|
||||
ddy_fine(inF0); // only valid in pixel & compute stages
|
||||
D3DCOLORtoUBYTE4(inF0); // expected error: only on float4 inputs
|
||||
determinant(inF0); // expect error: only valid on mats
|
||||
EvaluateAttributeAtCentroid(inF0); // expected error: only valid in pixel stage
|
||||
EvaluateAttributeAtSample(inF0, 2); // expected error: only valid in pixel stage
|
||||
EvaluateAttributeSnapped(inF0, int2(2)); // expected error: only valid in pixel stage
|
||||
f16tof32(inF0); // expected error: only integer inputs
|
||||
firstbithigh(inF0); // expected error: only integer inputs
|
||||
firstbitlow(inF0); // expected error: only integer inputs
|
||||
fma(inF0, inF1, inF2); // expected error: only double inputs
|
||||
noise(inF0); // expected error: only valid in pixel stage
|
||||
reversebits(inF0); // expected error: only integer inputs
|
||||
transpose(inF0); // expect error: only valid on mats
|
||||
uint3 out_u3;
|
||||
|
||||
CheckAccessFullyMapped(inF0); // expect error: only valid on scalars
|
||||
countbits(inF0); // expected error: only integer inputs
|
||||
ddx(inF0); // only valid in pixel stage
|
||||
ddx_coarse(inF0); // only valid in pixel stage
|
||||
ddx_fine(inF0); // only valid in pixel stage
|
||||
ddy(inF0); // only valid in pixel stage
|
||||
ddy_coarse(inF0); // only valid in pixel stage
|
||||
ddy_fine(inF0); // only valid in pixel stage
|
||||
D3DCOLORtoUBYTE4(inF0); // expected error: only on float4 inputs
|
||||
determinant(inF0); // expect error: only valid on mats
|
||||
EvaluateAttributeAtCentroid(inF0); // expected error: only valid in pixel stage
|
||||
EvaluateAttributeAtSample(inF0, 2); // expected error: only valid in pixel stage
|
||||
EvaluateAttributeSnapped(inF0, int2(2)); // expected error: only valid in pixel stage
|
||||
f16tof32(inF0); // expected error: only integer inputs
|
||||
firstbithigh(inF0); // expected error: only integer inputs
|
||||
firstbitlow(inF0); // expected error: only integer inputs
|
||||
fma(inF0, inF1, inF2); // expected error: only double inputs
|
||||
fwidth(inF0); // expected error: only valid in pixel stage
|
||||
InterlockedAdd(gs_ua3, gs_ub3); // expected error: only valid in pixel stage
|
||||
InterlockedAdd(gs_ua3, gs_ub3, out_u3); // expected error: only valid in pixel stage
|
||||
InterlockedAnd(gs_ua3, gs_ub3); // expected error: only valid in pixel stage
|
||||
InterlockedAnd(gs_ua3, gs_ub3, out_u3); // expected error: only valid in pixel stage
|
||||
InterlockedCompareExchange(gs_ua3, gs_ub3, gs_uc3, out_u3); // expected error: only valid in pixel stage
|
||||
InterlockedExchange(gs_ua3, gs_ub3, out_u3); // expected error: only valid in pixel stage
|
||||
InterlockedMax(gs_ua3, gs_ub3); // expected error: only valid in pixel stage
|
||||
InterlockedMax(gs_ua3, gs_ub3, out_u3); // expected error: only valid in pixel stage
|
||||
InterlockedMin(gs_ua3, gs_ub3); // expected error: only valid in pixel stage
|
||||
InterlockedMin(gs_ua3, gs_ub3, out_u3); // expected error: only valid in pixel stage
|
||||
InterlockedOr(gs_ua3, gs_ub3); // expected error: only valid in pixel stage
|
||||
InterlockedOr(gs_ua3, gs_ub3, out_u3); // expected error: only valid in pixel stage
|
||||
InterlockedXor(gs_ua3, gs_ub3); // expected error: only valid in pixel stage
|
||||
InterlockedXor(gs_ua3, gs_ub3, out_u3); // expected error: only valid in pixel stage
|
||||
noise(inF0); // expected error: only valid in pixel stage
|
||||
reversebits(inF0); // expected error: only integer inputs
|
||||
transpose(inF0); // expect error: only valid on mats
|
||||
|
||||
// TODO: texture intrinsics, when we can declare samplers.
|
||||
|
||||
@ -115,26 +174,43 @@ float3 VertexShaderFunction(float3 inF0, float3 inF1, float3 inF2, int3 inI0)
|
||||
|
||||
float4 VertexShaderFunction(float4 inF0, float4 inF1, float4 inF2, int4 inI0)
|
||||
{
|
||||
CheckAccessFullyMapped(inF0); // expect error: only valid on scalars
|
||||
countbits(inF0); // expected error: only integer inputs
|
||||
cross(inF0, inF1); // expected error: only on float3 inputs
|
||||
determinant(inF0); // expect error: only valid on mats
|
||||
ddx(inF0); // only valid in pixel & compute stages
|
||||
ddx_coarse(inF0); // only valid in pixel & compute stages
|
||||
ddx_fine(inF0); // only valid in pixel & compute stages
|
||||
ddy(inF0); // only valid in pixel & compute stages
|
||||
ddy_coarse(inF0); // only valid in pixel & compute stages
|
||||
ddy_fine(inF0); // only valid in pixel & compute stages
|
||||
EvaluateAttributeAtCentroid(inF0); // expected error: only valid in pixel stage
|
||||
EvaluateAttributeAtSample(inF0, 2); // expected error: only valid in pixel stage
|
||||
EvaluateAttributeSnapped(inF0, int2(2)); // expected error: only valid in pixel stage
|
||||
f16tof32(inF0); // expected error: only integer inputs
|
||||
firstbithigh(inF0); // expected error: only integer inputs
|
||||
firstbitlow(inF0); // expected error: only integer inputs
|
||||
fma(inF0, inF1, inF2); // expected error: only double inputs
|
||||
noise(inF0); // expected error: only valid in pixel stage
|
||||
reversebits(inF0); // expected error: only integer inputs
|
||||
transpose(inF0); // expect error: only valid on mats
|
||||
uint4 out_u4;
|
||||
|
||||
CheckAccessFullyMapped(inF0); // expect error: only valid on scalars
|
||||
countbits(inF0); // expected error: only integer inputs
|
||||
cross(inF0, inF1); // expected error: only on float3 inputs
|
||||
determinant(inF0); // expect error: only valid on mats
|
||||
ddx(inF0); // only valid in pixel stage
|
||||
ddx_coarse(inF0); // only valid in pixel stage
|
||||
ddx_fine(inF0); // only valid in pixel stage
|
||||
ddy(inF0); // only valid in pixel stage
|
||||
ddy_coarse(inF0); // only valid in pixel stage
|
||||
ddy_fine(inF0); // only valid in pixel stage
|
||||
EvaluateAttributeAtCentroid(inF0); // expected error: only valid in pixel stage
|
||||
EvaluateAttributeAtSample(inF0, 2); // expected error: only valid in pixel stage
|
||||
EvaluateAttributeSnapped(inF0, int2(2)); // expected error: only valid in pixel stage
|
||||
f16tof32(inF0); // expected error: only integer inputs
|
||||
firstbithigh(inF0); // expected error: only integer inputs
|
||||
firstbitlow(inF0); // expected error: only integer inputs
|
||||
fma(inF0, inF1, inF2); // expected error: only double inputs
|
||||
fwidth(inF0); // expected error: only valid in pixel stage
|
||||
InterlockedAdd(gs_ua4, gs_ub4); // expected error: only valid in pixel stage
|
||||
InterlockedAdd(gs_ua4, gs_ub4, out_u4); // expected error: only valid in pixel stage
|
||||
InterlockedAnd(gs_ua4, gs_ub4); // expected error: only valid in pixel stage
|
||||
InterlockedAnd(gs_ua4, gs_ub4, out_u4); // expected error: only valid in pixel stage
|
||||
InterlockedCompareExchange(gs_ua4, gs_ub4, gs_uc4, out_u4); // expected error: only valid in pixel stage
|
||||
InterlockedExchange(gs_ua4, gs_ub4, out_u4); // expected error: only valid in pixel stage
|
||||
InterlockedMax(gs_ua4, gs_ub4); // expected error: only valid in pixel stage
|
||||
InterlockedMax(gs_ua4, gs_ub4, out_u4); // expected error: only valid in pixel stage
|
||||
InterlockedMin(gs_ua4, gs_ub4); // expected error: only valid in pixel stage
|
||||
InterlockedMin(gs_ua4, gs_ub4, out_u4); // expected error: only valid in pixel stage
|
||||
InterlockedOr(gs_ua4, gs_ub4); // expected error: only valid in pixel stage
|
||||
InterlockedOr(gs_ua4, gs_ub4, out_u4); // expected error: only valid in pixel stage
|
||||
InterlockedXor(gs_ua4, gs_ub4); // expected error: only valid in pixel stage
|
||||
InterlockedXor(gs_ua4, gs_ub4, out_u4); // expected error: only valid in pixel stage
|
||||
noise(inF0); // expected error: only valid in pixel stage
|
||||
reversebits(inF0); // expected error: only integer inputs
|
||||
transpose(inF0); // expect error: only valid on mats
|
||||
|
||||
// TODO: texture intrinsics, when we can declare samplers.
|
||||
|
||||
@ -159,6 +235,7 @@ float4 VertexShaderFunction(float4 inF0, float4 inF1, float4 inF2, int4 inI0)
|
||||
firstbithigh(inF0); \
|
||||
firstbitlow(inF0); \
|
||||
fma(inF0, inF1, inF2); \
|
||||
fwidth(inF0); \
|
||||
noise(inF0); \
|
||||
reversebits(inF0); \
|
||||
length(inF0); \
|
||||
|
@ -1,10 +1,14 @@
|
||||
float VertexShaderFunction(float inF0, float inF1, float inF2)
|
||||
float VertexShaderFunction(float inF0, float inF1, float inF2, uint inU0, uint inU1)
|
||||
{
|
||||
all(inF0);
|
||||
abs(inF0);
|
||||
acos(inF0);
|
||||
any(inF0);
|
||||
asin(inF0);
|
||||
asint(inF0);
|
||||
asuint(inF0);
|
||||
asfloat(inU0);
|
||||
// asdouble(inU0, inU1); // TODO: enable when HLSL parser used for intrinsics
|
||||
atan(inF0);
|
||||
atan2(inF0, inF1);
|
||||
ceil(inF0);
|
||||
@ -25,7 +29,6 @@ float VertexShaderFunction(float inF0, float inF1, float inF2)
|
||||
fmod(inF0, inF1);
|
||||
frac(inF0);
|
||||
frexp(inF0, inF1);
|
||||
fwidth(inF0);
|
||||
isinf(inF0);
|
||||
isnan(inF0);
|
||||
ldexp(inF0, inF1);
|
||||
@ -62,13 +65,17 @@ float1 VertexShaderFunction(float1 inF0, float1 inF1, float1 inF2)
|
||||
return 0.0;
|
||||
}
|
||||
|
||||
float2 VertexShaderFunction(float2 inF0, float2 inF1, float2 inF2)
|
||||
float2 VertexShaderFunction(float2 inF0, float2 inF1, float2 inF2, uint2 inU0, uint2 inU1)
|
||||
{
|
||||
all(inF0);
|
||||
abs(inF0);
|
||||
acos(inF0);
|
||||
any(inF0);
|
||||
asin(inF0);
|
||||
asint(inF0);
|
||||
asuint(inF0);
|
||||
asfloat(inU0);
|
||||
// asdouble(inU0, inU1); // TODO: enable when HLSL parser used for intrinsics
|
||||
atan(inF0);
|
||||
atan2(inF0, inF1);
|
||||
ceil(inF0);
|
||||
@ -92,7 +99,6 @@ float2 VertexShaderFunction(float2 inF0, float2 inF1, float2 inF2)
|
||||
fmod(inF0, inF1);
|
||||
frac(inF0);
|
||||
frexp(inF0, inF1);
|
||||
fwidth(inF0);
|
||||
isinf(inF0);
|
||||
isnan(inF0);
|
||||
ldexp(inF0, inF1);
|
||||
@ -128,13 +134,17 @@ float2 VertexShaderFunction(float2 inF0, float2 inF1, float2 inF2)
|
||||
return float2(1,2);
|
||||
}
|
||||
|
||||
float3 VertexShaderFunction(float3 inF0, float3 inF1, float3 inF2)
|
||||
float3 VertexShaderFunction(float3 inF0, float3 inF1, float3 inF2, uint3 inU0, uint3 inU1)
|
||||
{
|
||||
all(inF0);
|
||||
abs(inF0);
|
||||
acos(inF0);
|
||||
any(inF0);
|
||||
asin(inF0);
|
||||
asint(inF0);
|
||||
asuint(inF0);
|
||||
asfloat(inU0);
|
||||
// asdouble(inU0, inU1); // TODO: enable when HLSL parser used for intrinsics
|
||||
atan(inF0);
|
||||
atan2(inF0, inF1);
|
||||
ceil(inF0);
|
||||
@ -159,7 +169,6 @@ float3 VertexShaderFunction(float3 inF0, float3 inF1, float3 inF2)
|
||||
fmod(inF0, inF1);
|
||||
frac(inF0);
|
||||
frexp(inF0, inF1);
|
||||
fwidth(inF0);
|
||||
isinf(inF0);
|
||||
isnan(inF0);
|
||||
ldexp(inF0, inF1);
|
||||
@ -195,13 +204,17 @@ float3 VertexShaderFunction(float3 inF0, float3 inF1, float3 inF2)
|
||||
return float3(1,2,3);
|
||||
}
|
||||
|
||||
float4 VertexShaderFunction(float4 inF0, float4 inF1, float4 inF2)
|
||||
float4 VertexShaderFunction(float4 inF0, float4 inF1, float4 inF2, uint4 inU0, uint4 inU1)
|
||||
{
|
||||
all(inF0);
|
||||
abs(inF0);
|
||||
acos(inF0);
|
||||
any(inF0);
|
||||
asin(inF0);
|
||||
asint(inF0);
|
||||
asuint(inF0);
|
||||
asfloat(inU0);
|
||||
// asdouble(inU0, inU1); // TODO: enable when HLSL parser used for intrinsics
|
||||
atan(inF0);
|
||||
atan2(inF0, inF1);
|
||||
ceil(inF0);
|
||||
@ -226,7 +239,6 @@ float4 VertexShaderFunction(float4 inF0, float4 inF1, float4 inF2)
|
||||
fmod(inF0, inF1);
|
||||
frac(inF0);
|
||||
frexp(inF0, inF1);
|
||||
fwidth(inF0);
|
||||
isinf(inF0);
|
||||
isnan(inF0);
|
||||
ldexp(inF0, inF1);
|
||||
@ -262,6 +274,11 @@ float4 VertexShaderFunction(float4 inF0, float4 inF1, float4 inF2)
|
||||
return float4(1,2,3,4);
|
||||
}
|
||||
|
||||
// TODO: for mats:
|
||||
// asfloat(inU0); \
|
||||
// asint(inF0); \
|
||||
// asuint(inF0); \
|
||||
|
||||
// TODO: FXC doesn't accept this with (), but glslang doesn't accept it without.
|
||||
#define MATFNS() \
|
||||
all(inF0); \
|
||||
@ -285,7 +302,6 @@ float4 VertexShaderFunction(float4 inF0, float4 inF1, float4 inF2)
|
||||
fmod(inF0, inF1); \
|
||||
frac(inF0); \
|
||||
frexp(inF0, inF1); \
|
||||
fwidth(inF0); \
|
||||
ldexp(inF0, inF1); \
|
||||
log(inF0); \
|
||||
log10(inF0); \
|
||||
|
@ -498,14 +498,24 @@ enum TOperator {
|
||||
// HLSL operations
|
||||
//
|
||||
|
||||
EOpClip,
|
||||
EOpClip, // discard if input value < 0
|
||||
EOpIsFinite,
|
||||
EOpLog10,
|
||||
EOpRcp,
|
||||
EOpSaturate,
|
||||
EOpSinCos,
|
||||
EOpGenMul, // mul(x,y) on any of mat/vec/scalars
|
||||
EOpDst,
|
||||
EOpLog10, // base 10 log
|
||||
EOpRcp, // 1/x
|
||||
EOpSaturate, // clamp from 0 to 1
|
||||
EOpSinCos, // sin and cos in out parameters
|
||||
EOpGenMul, // mul(x,y) on any of mat/vec/scalars
|
||||
EOpDst, // x = 1, y=src0.y * src1.y, z=src0.z, w=src1.w
|
||||
EOpInterlockedAdd, // atomic ops, but uses [optional] out arg instead of return
|
||||
EOpInterlockedAnd, // ...
|
||||
EOpInterlockedCompareExchange, // ...
|
||||
EOpInterlockedCompareStore, // ...
|
||||
EOpInterlockedExchange, // ...
|
||||
EOpInterlockedMax, // ...
|
||||
EOpInterlockedMin, // ...
|
||||
EOpInterlockedOr, // ...
|
||||
EOpInterlockedXor, // ...
|
||||
|
||||
};
|
||||
|
||||
class TIntermTraverser;
|
||||
|
@ -80,7 +80,9 @@ INSTANTIATE_TEST_CASE_P(
|
||||
{"hlsl.float4.frag", "PixelShaderFunction"},
|
||||
{"hlsl.forLoop.frag", "PixelShaderFunction"},
|
||||
{"hlsl.if.frag", "PixelShaderFunction"},
|
||||
{"hlsl.intrinsics.comp", "ComputeShaderFunction"},
|
||||
{"hlsl.intrinsics.frag", "PixelShaderFunction"},
|
||||
{"hlsl.intrinsics.negative.comp", "ComputeShaderFunction"},
|
||||
{"hlsl.intrinsics.negative.frag", "PixelShaderFunction"},
|
||||
{"hlsl.intrinsics.negative.vert", "VertexShaderFunction"},
|
||||
{"hlsl.intrinsics.vert", "VertexShaderFunction"},
|
||||
|
@ -771,6 +771,29 @@ void HlslParseContext::handleFunctionArgument(TFunction* function, TIntermTyped*
|
||||
arguments = newArg;
|
||||
}
|
||||
|
||||
//
|
||||
// HLSL atomic operations have slightly different arguments than
|
||||
// GLSL/AST/SPIRV. The semantics are converted below in decomposeIntrinsic.
|
||||
// This provides the post-decomposition equivalent opcode.
|
||||
//
|
||||
TOperator HlslParseContext::mapAtomicOp(const TSourceLoc& loc, TOperator op, bool isImage)
|
||||
{
|
||||
switch (op) {
|
||||
case EOpInterlockedAdd: return isImage ? EOpImageAtomicAdd : EOpAtomicAdd;
|
||||
case EOpInterlockedAnd: return isImage ? EOpImageAtomicAnd : EOpAtomicAnd;
|
||||
case EOpInterlockedCompareExchange: return isImage ? EOpImageAtomicCompSwap : EOpAtomicCompSwap;
|
||||
case EOpInterlockedMax: return isImage ? EOpImageAtomicMax : EOpAtomicMax;
|
||||
case EOpInterlockedMin: return isImage ? EOpImageAtomicMin : EOpAtomicMin;
|
||||
case EOpInterlockedOr: return isImage ? EOpImageAtomicOr : EOpAtomicOr;
|
||||
case EOpInterlockedXor: return isImage ? EOpImageAtomicXor : EOpAtomicXor;
|
||||
case EOpInterlockedExchange: return isImage ? EOpImageAtomicExchange : EOpAtomicExchange;
|
||||
case EOpInterlockedCompareStore: // TODO: ...
|
||||
default:
|
||||
error(loc, "unknown atomic operation", "unknown op", "");
|
||||
return EOpNull;
|
||||
}
|
||||
}
|
||||
|
||||
// Optionally decompose intrinsics to AST opcodes.
|
||||
//
|
||||
void HlslParseContext::decomposeIntrinsic(const TSourceLoc& loc, TIntermTyped*& node, TIntermNode* arguments)
|
||||
@ -825,6 +848,7 @@ void HlslParseContext::decomposeIntrinsic(const TSourceLoc& loc, TIntermTyped*&
|
||||
clamp->getSequence().push_back(intermediate.addConstantUnion(1, type0, loc, true));
|
||||
clamp->setLoc(loc);
|
||||
clamp->setType(node->getType());
|
||||
clamp->getWritableType().getQualifier().makeTemporary();
|
||||
node = clamp;
|
||||
|
||||
break;
|
||||
@ -944,6 +968,61 @@ void HlslParseContext::decomposeIntrinsic(const TSourceLoc& loc, TIntermTyped*&
|
||||
break;
|
||||
}
|
||||
|
||||
case EOpInterlockedAdd: // optional last argument (if present) is assigned from return value
|
||||
case EOpInterlockedMin: // ...
|
||||
case EOpInterlockedMax: // ...
|
||||
case EOpInterlockedAnd: // ...
|
||||
case EOpInterlockedOr: // ...
|
||||
case EOpInterlockedXor: // ...
|
||||
case EOpInterlockedExchange: // always has output arg
|
||||
{
|
||||
TIntermTyped* arg0 = argAggregate->getSequence()[0]->getAsTyped();
|
||||
TIntermTyped* arg1 = argAggregate->getSequence()[1]->getAsTyped();
|
||||
|
||||
const bool isImage = arg0->getType().isImage();
|
||||
const TOperator atomicOp = mapAtomicOp(loc, op, isImage);
|
||||
|
||||
if (argAggregate->getSequence().size() > 2) {
|
||||
// optional output param is present. return value goes to arg2.
|
||||
TIntermTyped* arg2 = argAggregate->getSequence()[2]->getAsTyped();
|
||||
|
||||
TIntermAggregate* atomic = new TIntermAggregate(atomicOp);
|
||||
atomic->getSequence().push_back(arg0);
|
||||
atomic->getSequence().push_back(arg1);
|
||||
atomic->setLoc(loc);
|
||||
atomic->setType(arg0->getType());
|
||||
atomic->getWritableType().getQualifier().makeTemporary();
|
||||
|
||||
node = intermediate.addAssign(EOpAssign, arg2, atomic, loc);
|
||||
} else {
|
||||
// Set the matching operator. Since output is absent, this is all we need to do.
|
||||
node->getAsAggregate()->setOperator(atomicOp);
|
||||
}
|
||||
|
||||
break;
|
||||
}
|
||||
|
||||
case EOpInterlockedCompareExchange:
|
||||
{
|
||||
TIntermTyped* arg0 = argAggregate->getSequence()[0]->getAsTyped(); // dest
|
||||
TIntermTyped* arg1 = argAggregate->getSequence()[1]->getAsTyped(); // cmp
|
||||
TIntermTyped* arg2 = argAggregate->getSequence()[2]->getAsTyped(); // value
|
||||
TIntermTyped* arg3 = argAggregate->getSequence()[3]->getAsTyped(); // orig
|
||||
|
||||
const bool isImage = arg0->getType().isImage();
|
||||
TIntermAggregate* atomic = new TIntermAggregate(mapAtomicOp(loc, op, isImage));
|
||||
atomic->getSequence().push_back(arg0);
|
||||
atomic->getSequence().push_back(arg1);
|
||||
atomic->getSequence().push_back(arg2);
|
||||
atomic->setLoc(loc);
|
||||
atomic->setType(arg2->getType());
|
||||
atomic->getWritableType().getQualifier().makeTemporary();
|
||||
|
||||
node = intermediate.addAssign(EOpAssign, arg3, atomic, loc);
|
||||
|
||||
break;
|
||||
}
|
||||
|
||||
default:
|
||||
break; // most pass through unchanged
|
||||
}
|
||||
|
@ -155,6 +155,7 @@ protected:
|
||||
TIntermNode* executeInitializer(const TSourceLoc&, TIntermTyped* initializer, TVariable* variable);
|
||||
TIntermTyped* convertInitializerList(const TSourceLoc&, const TType&, TIntermTyped* initializer);
|
||||
TOperator mapTypeToConstructorOp(const TType&) const;
|
||||
TOperator mapAtomicOp(const TSourceLoc& loc, TOperator op, bool isImage);
|
||||
void outputMessage(const TSourceLoc&, const char* szReason, const char* szToken,
|
||||
const char* szExtraInfoFormat, TPrefixType prefix,
|
||||
va_list args);
|
||||
|
@ -296,20 +296,26 @@ void TBuiltInParseablesHlsl::initialize(int version, EProfile profile, int spv,
|
||||
{ "fmod", nullptr, nullptr, "SVM,", "F,", EShLangAll },
|
||||
{ "frac", nullptr, nullptr, "SVM", "F", EShLangAll },
|
||||
{ "frexp", nullptr, nullptr, "SVM,", "F,", EShLangAll },
|
||||
{ "fwidth", nullptr, nullptr, "SVM", "F", EShLangAll },
|
||||
{ "fwidth", nullptr, nullptr, "SVM", "F", EShLangFragmentMask },
|
||||
{ "GetRenderTargetSampleCount", "S", "U", "-", "-", EShLangAll },
|
||||
{ "GetRenderTargetSamplePosition", "V2", "F", "V1", "I", EShLangAll },
|
||||
{ "GroupMemoryBarrier", nullptr, nullptr, "-", "-", EShLangComputeMask },
|
||||
{ "GroupMemoryBarrierWithGroupSync", nullptr, nullptr, "-", "-", EShLangComputeMask },
|
||||
{ "InterlockedAdd", "-", "-", "SVM,,>", "UI,,", EShLangFragmentMask | EShLangComputeMask },
|
||||
{ "InterlockedAdd", "-", "-", "SVM,", "UI,", EShLangFragmentMask | EShLangComputeMask },
|
||||
{ "InterlockedAnd", "-", "-", "SVM,,>", "UI,,", EShLangFragmentMask | EShLangComputeMask },
|
||||
{ "InterlockedAnd", "-", "-", "SVM,", "UI,", EShLangFragmentMask | EShLangComputeMask },
|
||||
{ "InterlockedCompareExchange", "-", "-", "SVM,,,>", "UI,,,", EShLangFragmentMask | EShLangComputeMask },
|
||||
{ "InterlockedCompareStore", "-", "-", "SVM,,", "UI,,", EShLangFragmentMask | EShLangComputeMask },
|
||||
{ "InterlockedExchange", "-", "-", "SVM,,>", "UI,,", EShLangFragmentMask | EShLangComputeMask },
|
||||
{ "InterlockedMax", "-", "-", "SVM,,>", "UI,,", EShLangFragmentMask | EShLangComputeMask },
|
||||
{ "InterlockedMax", "-", "-", "SVM,", "UI,", EShLangFragmentMask | EShLangComputeMask },
|
||||
{ "InterlockedMin", "-", "-", "SVM,,>", "UI,,", EShLangFragmentMask | EShLangComputeMask },
|
||||
{ "InterlockedMin", "-", "-", "SVM,", "UI,", EShLangFragmentMask | EShLangComputeMask },
|
||||
{ "InterlockedOr", "-", "-", "SVM,,>", "UI,,", EShLangFragmentMask | EShLangComputeMask },
|
||||
{ "InterlockedOr", "-", "-", "SVM,", "UI,", EShLangFragmentMask | EShLangComputeMask },
|
||||
{ "InterlockedXor", "-", "-", "SVM,,>", "UI,,", EShLangFragmentMask | EShLangComputeMask },
|
||||
{ "InterlockedXor", "-", "-", "SVM,", "UI,", EShLangFragmentMask | EShLangComputeMask },
|
||||
{ "isfinite", nullptr, "B" , "SVM", "F", EShLangAll },
|
||||
{ "isinf", nullptr, "B" , "SVM", "F", EShLangAll },
|
||||
{ "isnan", nullptr, "B" , "SVM", "F", EShLangAll },
|
||||
@ -516,11 +522,11 @@ void TBuiltInParseablesHlsl::identifyBuiltIns(int version, EProfile profile, int
|
||||
// symbolTable.relateToOperator("AllMemoryBarrier");
|
||||
// symbolTable.relateToOperator("AllMemoryBarrierWithGroupSync");
|
||||
symbolTable.relateToOperator("any", EOpAny);
|
||||
// symbolTable.relateToOperator("asdouble");
|
||||
// symbolTable.relateToOperator("asfloat");
|
||||
symbolTable.relateToOperator("asdouble", EOpUint64BitsToDouble);
|
||||
symbolTable.relateToOperator("asfloat", EOpIntBitsToFloat);
|
||||
symbolTable.relateToOperator("asin", EOpAsin);
|
||||
// symbolTable.relateToOperator("asint");
|
||||
// symbolTable.relateToOperator("asuint");
|
||||
symbolTable.relateToOperator("asint", EOpFloatBitsToInt);
|
||||
symbolTable.relateToOperator("asuint", EOpFloatBitsToUint);
|
||||
symbolTable.relateToOperator("atan", EOpAtan);
|
||||
symbolTable.relateToOperator("atan2", EOpAtan);
|
||||
symbolTable.relateToOperator("ceil", EOpCeil);
|
||||
@ -566,15 +572,15 @@ void TBuiltInParseablesHlsl::identifyBuiltIns(int version, EProfile profile, int
|
||||
// symbolTable.relateToOperator("GetRenderTargetSamplePosition");
|
||||
// symbolTable.relateToOperator("GroupMemoryBarrier");
|
||||
// symbolTable.relateToOperator("GroupMemoryBarrierWithGroupSync");
|
||||
// symbolTable.relateToOperator("InterlockedAdd");
|
||||
// symbolTable.relateToOperator("InterlockedAnd");
|
||||
// symbolTable.relateToOperator("InterlockedCompareExchange");
|
||||
// symbolTable.relateToOperator("InterlockedCompareStore");
|
||||
// symbolTable.relateToOperator("InterlockedExchange");
|
||||
// symbolTable.relateToOperator("InterlockedMax");
|
||||
// symbolTable.relateToOperator("InterlockedMin");
|
||||
// symbolTable.relateToOperator("InterlockedOr");
|
||||
// symbolTable.relateToOperator("InterlockedXor");
|
||||
symbolTable.relateToOperator("InterlockedAdd", EOpInterlockedAdd);
|
||||
symbolTable.relateToOperator("InterlockedAnd", EOpInterlockedAnd);
|
||||
symbolTable.relateToOperator("InterlockedCompareExchange", EOpInterlockedCompareExchange);
|
||||
symbolTable.relateToOperator("InterlockedCompareStore", EOpInterlockedCompareStore);
|
||||
symbolTable.relateToOperator("InterlockedExchange", EOpInterlockedExchange);
|
||||
symbolTable.relateToOperator("InterlockedMax", EOpInterlockedMax);
|
||||
symbolTable.relateToOperator("InterlockedMin", EOpInterlockedMin);
|
||||
symbolTable.relateToOperator("InterlockedOr", EOpInterlockedOr);
|
||||
symbolTable.relateToOperator("InterlockedXor", EOpInterlockedXor);
|
||||
symbolTable.relateToOperator("isfinite", EOpIsFinite);
|
||||
symbolTable.relateToOperator("isinf", EOpIsInf);
|
||||
symbolTable.relateToOperator("isnan", EOpIsNan);
|
||||
|
Loading…
x
Reference in New Issue
Block a user