hlsl.intrinsics.negative.vert 18 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248
  1. static uint gs_ua;
  2. static uint gs_ub;
  3. static uint gs_uc;
  4. static uint2 gs_ua2;
  5. static uint2 gs_ub2;
  6. static uint2 gs_uc2;
  7. static uint3 gs_ua3;
  8. static uint3 gs_ub3;
  9. static uint3 gs_uc3;
  10. static uint4 gs_ua4;
  11. static uint4 gs_ub4;
  12. static uint4 gs_uc4;
  13. float VertexShaderFunctionS(float inF0, float inF1, float inF2, int inI0)
  14. {
  15. uint out_u1;
  16. // AllMemoryBarrier(); // expected error: only valid in compute stage
  17. // AllMemoryBarrierWithGroupSync(); // expected error: only valid in compute stage
  18. // asdouble(inF0, inF1); // expected error: only integer inputs
  19. // CheckAccessFullyMapped(3.0); // expected error: only valid on integers
  20. // CheckAccessFullyMapped(3); // expected error: only valid in pixel & compute stages
  21. // clip(inF0); // expected error: only valid in pixel stage
  22. // countbits(inF0); // expected error: only integer inputs
  23. // cross(inF0, inF1); // expected error: only on float3 inputs
  24. // D3DCOLORtoUBYTE4(inF0); // expected error: only on float4 inputs
  25. // DeviceMemoryBarrier(); // expected error: only valid in pixel & compute stages
  26. // DeviceMemoryBarrierWithGroupSync(); // expected error: only valid in compute stage
  27. // ddx(inF0); // expected error: only valid in pixel stage
  28. // ddx_coarse(inF0); // expected error: only valid in pixel stage
  29. // ddx_fine(inF0); // expected error: only valid in pixel stage
  30. // ddy(inF0); // expected error: only valid in pixel stage
  31. // ddy_coarse(inF0); // expected error: only valid in pixel stage
  32. // ddy_fine(inF0); // expected error: only valid in pixel stage
  33. // determinant(inF0); // expected error: only valid on mats
  34. // EvaluateAttributeAtCentroid(inF0); // expected error: only interpolant
  35. // EvaluateAttributeAtSample(inF0, 2); // expected error: only interpolant
  36. // EvaluateAttributeSnapped(inF0, int2(2)); // expected error: only interpolant
  37. // f16tof32(inF0); // expected error: only integer inputs
  38. // firstbithigh(inF0); // expected error: only integer inputs
  39. // firstbitlow(inF0); // expected error: only integer inputs
  40. // fma(inF0, inF1, inF2); // TODO: this might auto-promote: need to check against FXC
  41. // fwidth(inF0); // expected error: only valid in pixel stage
  42. // InterlockedAdd(gs_ua, gs_ub); // expected error: only valid in pixel stage
  43. // InterlockedAdd(gs_ua, gs_ub, out_u1); // expected error: only valid in pixel stage
  44. // InterlockedAnd(gs_ua, gs_ub); // expected error: only valid in pixel stage
  45. // InterlockedAnd(gs_ua, gs_ub, out_u1); // expected error: only valid in pixel stage
  46. // InterlockedCompareExchange(gs_ua, gs_ub, gs_uc, out_u1); // expected error: only valid in pixel stage
  47. // InterlockedExchange(gs_ua, gs_ub, out_u1);// expected error: only valid in pixel stage
  48. // InterlockedMax(gs_ua, gs_ub); // expected error: only valid in pixel stage
  49. // InterlockedMax(gs_ua, gs_ub, out_u1); // expected error: only valid in pixel stage
  50. // InterlockedMin(gs_ua, gs_ub); // expected error: only valid in pixel stage
  51. // InterlockedMin(gs_ua, gs_ub, out_u1); // expected error: only valid in pixel stage
  52. // InterlockedOr(gs_ua, gs_ub); // expected error: only valid in pixel stage
  53. // InterlockedOr(gs_ua, gs_ub, out_u1); // expected error: only valid in pixel stage
  54. // InterlockedXor(gs_ua, gs_ub); // expected error: only valid in pixel stage
  55. // InterlockedXor(gs_ua, gs_ub, out_u1); // expected error: only valid in pixel stage
  56. // GroupMemoryBarrier(); // expected error: only valid in compute stage
  57. // GroupMemoryBarrierWithGroupSync(); // expected error: only valid in compute stage
  58. // length(inF0); // expect error: invalid on scalars
  59. // msad4(inF0, float2(0), float4(0)); // expected error: only integer inputs
  60. // normalize(inF0); // expect error: invalid on scalars
  61. // reflect(inF0, inF1); // expect error: invalid on scalars
  62. // refract(inF0, inF1, inF2); // expect error: invalid on scalars
  63. // refract(float2(0), float2(0), float2(0)); // expected error: last parameter only scalar
  64. // reversebits(inF0); // expected error: only integer inputs
  65. // transpose(inF0); // expect error: only valid on mats
  66. // TODO: texture intrinsics, when we can declare samplers.
  67. return 0.0;
  68. }
  69. float1 VertexShaderFunction1(float1 inF0, float1 inF1, float1 inF2, int1 inI0)
  70. {
  71. // TODO: ... add when float1 prototypes are generated
  72. // GetRenderTargetSamplePosition(inF0); // expected error: only integer inputs
  73. return 0.0;
  74. }
  75. float2 VertexShaderFunction2(float2 inF0, float2 inF1, float2 inF2, int2 inI0)
  76. {
  77. uint2 out_u2;
  78. // asdouble(inF0, inF1); // expected error: only integer inputs
  79. // CheckAccessFullyMapped(inF0); // expect error: only valid on scalars
  80. // countbits(inF0); // expected error: only integer inputs
  81. // cross(inF0, inF1); // expected error: only on float3 inputs
  82. // D3DCOLORtoUBYTE4(inF0); // expected error: only on float4 inputs
  83. // ddx(inF0); // only valid in pixel stage
  84. // ddx_coarse(inF0); // only valid in pixel stage
  85. // ddx_fine(inF0); // only valid in pixel stage
  86. // ddy(inF0); // only valid in pixel stage
  87. // ddy_coarse(inF0); // only valid in pixel stage
  88. // ddy_fine(inF0); // only valid in pixel stage
  89. // determinant(inF0); // expect error: only valid on mats
  90. // EvaluateAttributeAtCentroid(inF0); // expected error: only interpolant
  91. // EvaluateAttributeAtSample(inF0, 2); // expected error: only interpolant
  92. // EvaluateAttributeSnapped(inF0, int2(2)); // expected error: only interpolant
  93. // f16tof32(inF0); // expected error: only integer inputs
  94. // firstbithigh(inF0); // expected error: only integer inputs
  95. // firstbitlow(inF0); // expected error: only integer inputs
  96. // fma(inF0, inF1, inF2); // TODO: this might auto-promote: need to check against FXC
  97. // fwidth(inF0); // expected error: only valid in pixel stage
  98. // InterlockedAdd(gs_ua2, gs_ub2); // expected error: only valid in pixel stage
  99. // InterlockedAdd(gs_ua2, gs_ub2, out_u2); // expected error: only valid in pixel stage
  100. // InterlockedAnd(gs_ua2, gs_ub2); // expected error: only valid in pixel stage
  101. // InterlockedAnd(gs_ua2, gs_ub2, out_u2); // expected error: only valid in pixel stage
  102. // InterlockedCompareExchange(gs_ua2, gs_ub2, gs_uc2, out_u2); // expected error: only valid in pixel stage
  103. // InterlockedExchange(gs_ua2, gs_ub2, out_u2); // expected error: only valid in pixel stage
  104. // InterlockedMax(gs_ua2, gs_ub2); // expected error: only valid in pixel stage
  105. // InterlockedMax(gs_ua2, gs_ub2, out_u2); // expected error: only valid in pixel stage
  106. // InterlockedMin(gs_ua2, gs_ub2); // expected error: only valid in pixel stage
  107. // InterlockedMin(gs_ua2, gs_ub2, out_u2); // expected error: only valid in pixel stage
  108. // InterlockedOr(gs_ua2, gs_ub2); // expected error: only valid in pixel stage
  109. // InterlockedOr(gs_ua2, gs_ub2, out_u2); // expected error: only valid in pixel stage
  110. // InterlockedXor(gs_ua2, gs_ub2); // expected error: only valid in pixel stage
  111. // InterlockedXor(gs_ua2, gs_ub2, out_u2); // expected error: only valid in pixel stage
  112. // noise(inF0); // expected error: only valid in pixel stage
  113. // reversebits(inF0); // expected error: only integer inputs
  114. // transpose(inF0); // expect error: only valid on mats
  115. // TODO: texture intrinsics, when we can declare samplers.
  116. return float2(1,2);
  117. }
  118. float3 VertexShaderFunction3(float3 inF0, float3 inF1, float3 inF2, int3 inI0)
  119. {
  120. uint3 out_u3;
  121. // CheckAccessFullyMapped(inF0); // expect error: only valid on scalars
  122. // countbits(inF0); // expected error: only integer inputs
  123. // ddx(inF0); // only valid in pixel stage
  124. // ddx_coarse(inF0); // only valid in pixel stage
  125. // ddx_fine(inF0); // only valid in pixel stage
  126. // ddy(inF0); // only valid in pixel stage
  127. // ddy_coarse(inF0); // only valid in pixel stage
  128. // ddy_fine(inF0); // only valid in pixel stage
  129. // D3DCOLORtoUBYTE4(inF0); // expected error: only on float4 inputs
  130. // determinant(inF0); // expect error: only valid on mats
  131. // EvaluateAttributeAtCentroid(inF0); // expected error: only interpolant
  132. // EvaluateAttributeAtSample(inF0, 2); // expected error: only interpolant
  133. // EvaluateAttributeSnapped(inF0, int2(2)); // expected error: only interpolant
  134. // f16tof32(inF0); // expected error: only integer inputs
  135. // firstbithigh(inF0); // expected error: only integer inputs
  136. // firstbitlow(inF0); // expected error: only integer inputs
  137. // fma(inF0, inF1, inF2); // TODO: this might auto-promote: need to check against FXC
  138. // fwidth(inF0); // expected error: only valid in pixel stage
  139. // InterlockedAdd(gs_ua3, gs_ub3); // expected error: only valid in pixel stage
  140. // InterlockedAdd(gs_ua3, gs_ub3, out_u3); // expected error: only valid in pixel stage
  141. // InterlockedAnd(gs_ua3, gs_ub3); // expected error: only valid in pixel stage
  142. // InterlockedAnd(gs_ua3, gs_ub3, out_u3); // expected error: only valid in pixel stage
  143. // InterlockedCompareExchange(gs_ua3, gs_ub3, gs_uc3, out_u3); // expected error: only valid in pixel stage
  144. // InterlockedExchange(gs_ua3, gs_ub3, out_u3); // expected error: only valid in pixel stage
  145. // InterlockedMax(gs_ua3, gs_ub3); // expected error: only valid in pixel stage
  146. // InterlockedMax(gs_ua3, gs_ub3, out_u3); // expected error: only valid in pixel stage
  147. // InterlockedMin(gs_ua3, gs_ub3); // expected error: only valid in pixel stage
  148. // InterlockedMin(gs_ua3, gs_ub3, out_u3); // expected error: only valid in pixel stage
  149. // InterlockedOr(gs_ua3, gs_ub3); // expected error: only valid in pixel stage
  150. // InterlockedOr(gs_ua3, gs_ub3, out_u3); // expected error: only valid in pixel stage
  151. // InterlockedXor(gs_ua3, gs_ub3); // expected error: only valid in pixel stage
  152. // InterlockedXor(gs_ua3, gs_ub3, out_u3); // expected error: only valid in pixel stage
  153. // noise(inF0); // expected error: only valid in pixel stage
  154. // reversebits(inF0); // expected error: only integer inputs
  155. // transpose(inF0); // expect error: only valid on mats
  156. // TODO: texture intrinsics, when we can declare samplers.
  157. return float3(1,2,3);
  158. }
  159. float4 VertexShaderFunction(float4 inF0, float4 inF1, float4 inF2, int4 inI0)
  160. {
  161. uint4 out_u4;
  162. // CheckAccessFullyMapped(inF0); // expect error: only valid on scalars
  163. // countbits(inF0); // expected error: only integer inputs
  164. // cross(inF0, inF1); // expected error: only on float3 inputs
  165. // determinant(inF0); // expect error: only valid on mats
  166. // ddx(inF0); // only valid in pixel stage
  167. // ddx_coarse(inF0); // only valid in pixel stage
  168. // ddx_fine(inF0); // only valid in pixel stage
  169. // ddy(inF0); // only valid in pixel stage
  170. // ddy_coarse(inF0); // only valid in pixel stage
  171. // ddy_fine(inF0); // only valid in pixel stage
  172. // EvaluateAttributeAtCentroid(inF0); // expected error: only interpolant
  173. // EvaluateAttributeAtSample(inF0, 2); // expected error: only interpolant
  174. // EvaluateAttributeSnapped(inF0, int2(2)); // expected error: only interpolant
  175. // f16tof32(inF0); // expected error: only integer inputs
  176. // firstbithigh(inF0); // expected error: only integer inputs
  177. // firstbitlow(inF0); // expected error: only integer inputs
  178. // fma(inF0, inF1, inF2); // TODO: this might auto-promote: need to check against FXC
  179. // fwidth(inF0); // expected error: only valid in pixel stage
  180. // InterlockedAdd(gs_ua4, gs_ub4); // expected error: only valid in pixel stage
  181. // InterlockedAdd(gs_ua4, gs_ub4, out_u4); // expected error: only valid in pixel stage
  182. // InterlockedAnd(gs_ua4, gs_ub4); // expected error: only valid in pixel stage
  183. // InterlockedAnd(gs_ua4, gs_ub4, out_u4); // expected error: only valid in pixel stage
  184. // InterlockedCompareExchange(gs_ua4, gs_ub4, gs_uc4, out_u4); // expected error: only valid in pixel stage
  185. // InterlockedExchange(gs_ua4, gs_ub4, out_u4); // expected error: only valid in pixel stage
  186. // InterlockedMax(gs_ua4, gs_ub4); // expected error: only valid in pixel stage
  187. // InterlockedMax(gs_ua4, gs_ub4, out_u4); // expected error: only valid in pixel stage
  188. // InterlockedMin(gs_ua4, gs_ub4); // expected error: only valid in pixel stage
  189. // InterlockedMin(gs_ua4, gs_ub4, out_u4); // expected error: only valid in pixel stage
  190. // InterlockedOr(gs_ua4, gs_ub4); // expected error: only valid in pixel stage
  191. // InterlockedOr(gs_ua4, gs_ub4, out_u4); // expected error: only valid in pixel stage
  192. // InterlockedXor(gs_ua4, gs_ub4); // expected error: only valid in pixel stage
  193. // InterlockedXor(gs_ua4, gs_ub4, out_u4); // expected error: only valid in pixel stage
  194. // noise(inF0); // expected error: only valid in pixel stage
  195. // reversebits(inF0); // expected error: only integer inputs
  196. // transpose(inF0); // expect error: only valid on mats
  197. // TODO: texture intrinsics, when we can declare samplers.
  198. return float4(1,2,3,4);
  199. }
  200. // TODO: FXC doesn't accept this with (), but glslang doesn't accept it without.
  201. #define MATFNS()
  202. // TODO: turn on non-square matrix tests when protos are available.
  203. float2x2 VertexShaderFunction2x2(float2x2 inF0, float2x2 inF1, float2x2 inF2)
  204. {
  205. // TODO: FXC doesn't accept this with (), but glslang doesn't accept it without.
  206. MATFNS()
  207. return float2x2(2,2,2,2);
  208. }
  209. float3x3 VertexShaderFunction3x3(float3x3 inF0, float3x3 inF1, float3x3 inF2)
  210. {
  211. // TODO: FXC doesn't accept this with (), but glslang doesn't accept it without.
  212. MATFNS()
  213. return float3x3(3,3,3,3,3,3,3,3,3);
  214. }
  215. float4x4 VertexShaderFunction4x4(float4x4 inF0, float4x4 inF1, float4x4 inF2)
  216. {
  217. // TODO: FXC doesn't accept this with (), but glslang doesn't accept it without.
  218. MATFNS()
  219. return float4x4(4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4);
  220. }