const-default.hlsl 3.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748
  1. // RUN: %clang_cc1 -fsyntax-only -Wno-unused-value -ffreestanding -verify %s
  2. float g_float1; /* expected-note {{variable 'g_float1' declared const here}} expected-note {{variable 'g_float1' declared const here}} */
  3. int4 g_vec1; /* expected-note {{variable 'g_vec1' declared const here}} expected-note {{variable 'g_vec1' declared const here}} */
  4. uint64_t3x4 g_mat1;
  5. cbuffer g_cbuffer {
  6. min12int m_buffer_min12int; /* expected-note {{variable 'm_buffer_min12int' declared const here}} expected-warning {{min12int is promoted to min16int}} */
  7. float4 m_buffer_float4; /* expected-note {{variable 'm_buffer_float4' declared const here}} */
  8. int3x4 m_buffer_int3x4;
  9. }
  10. tbuffer g_tbuffer {
  11. float m_tbuffer_float; /* expected-note {{variable 'm_tbuffer_float' declared const here}} */
  12. int3 m_tbuffer_int3; /* expected-note {{variable 'm_tbuffer_int3' declared const here}} */
  13. double2x1 m_tbuffer_double2x1; /* expected-note {{variable 'm_tbuffer_double2x1' declared const here}} */
  14. }
  15. struct MyStruct {
  16. float3 my_float3;
  17. int3x4 my_int3x4;
  18. };
  19. ConstantBuffer<MyStruct> g_const_buffer;
  20. TextureBuffer<MyStruct> g_texture_buffer;
  21. float4 main() : SV_TARGET
  22. {
  23. g_float1 = g_float1 + 10.0; /* expected-error {{cannot assign to variable 'g_float1' with const-qualified type 'const float'}} */
  24. g_float1 += 3.5; /* expected-error {{cannot assign to variable 'g_float1' with const-qualified type 'const float'}} */
  25. g_vec1 = g_vec1 + 3; /* expected-error {{cannot assign to variable 'g_vec1' with const-qualified type 'const int4'}} */
  26. g_vec1 -= 1; /* expected-error {{cannot assign to variable 'g_vec1' with const-qualified type 'const int4'}} */
  27. g_mat1._12 = 3; /* expected-error {{read-only variable is not assignable}} */
  28. g_mat1._34 *= 4; /* expected-error {{read-only variable is not assignable}} */
  29. m_buffer_min12int = 12; /* expected-error {{cannot assign to variable 'm_buffer_min12int' with const-qualified type 'const min12int'}} */
  30. m_buffer_float4 += 3.4; /* expected-error {{cannot assign to variable 'm_buffer_float4' with const-qualified type 'const float4'}} */
  31. m_buffer_int3x4._m01 -= 10; /* expected-error {{read-only variable is not assignable}} */
  32. m_tbuffer_float *= 2; /* expected-error {{cannot assign to variable 'm_tbuffer_float' with const-qualified type 'const float'}} */
  33. m_tbuffer_int3 = 10; /* expected-error {{cannot assign to variable 'm_tbuffer_int3' with const-qualified type 'const int3'}} */
  34. m_tbuffer_double2x1 *= 3; /* expected-error {{cannot assign to variable 'm_tbuffer_double2x1' with const-qualified type 'const double2x1'}} */
  35. g_const_buffer.my_float3.x = 1.5; /* expected-error {{read-only variable is not assignable}} */
  36. g_const_buffer.my_int3x4._21 -= 2; /* expected-error {{read-only variable is not assignable}} */
  37. g_texture_buffer.my_float3.y += 2.0; /* expected-error {{read-only variable is not assignable}} */
  38. g_texture_buffer.my_int3x4._14 = 3; /* expected-error {{read-only variable is not assignable}} */
  39. return (float4)g_float1;
  40. }