[RISCV] Use RISCVSubtarget::is64Bit() instead of hasFeature(RISCV::Feature64Bit)...
[llvm-project.git] / clang / test / SemaHLSL / Availability / avail-lib-multiple-stages.hlsl
blobb56ab8fe4526ba896c8a20d97b6bc52496d69798
1 // RUN: %clang_cc1 -triple dxil-pc-shadermodel6.0-library \\r
2 // RUN: -fsyntax-only -verify %s\r
3 \r
4 __attribute__((availability(shadermodel, introduced = 6.5)))\r
5 float fx(float);  // #fx\r
6 \r
7 __attribute__((availability(shadermodel, introduced = 5.0, environment = pixel)))\r
8 __attribute__((availability(shadermodel, introduced = 6.5, environment = compute)))\r
9 float fy(float); // #fy\r
11 __attribute__((availability(shadermodel, introduced = 5.0, environment = compute)))\r
12 float fz(float); // #fz\r
15 void F(float f) {\r
16   // Make sure we only get this error once, even though this function is scanned twice - once\r
17   // in compute shader context and once in pixel shader context.\r
18   // expected-error@#fx_call {{'fx' is only available on Shader Model 6.5 or newer}}\r
19   // expected-note@#fx {{fx' has been marked as being introduced in Shader Model 6.5 here, but the deployment target is Shader Model 6.0}}\r
20   float A = fx(f); // #fx_call\r
21   \r
22   // expected-error@#fy_call {{'fy' is only available in compute environment on Shader Model 6.5 or newer}}\r
23   // expected-note@#fy {{'fy' has been marked as being introduced in Shader Model 6.5 in compute environment here, but the deployment target is Shader Model 6.0 compute environment}}\r
24   float B = fy(f); // #fy_call\r
26   // expected-error@#fz_call {{'fz' is unavailable}}\r
27   // expected-note@#fz {{'fz' has been marked as being introduced in Shader Model 5.0 in compute environment here, but the deployment target is Shader Model 6.0 pixel environment}}\r
28   float X = fz(f); // #fz_call\r
29 }\r
31 void deadCode(float f) {\r
32   // no diagnostics expected under default diagnostic mode\r
33   float A = fx(f);\r
34   float B = fy(f);\r
35   float X = fz(f);\r
36 }\r
38 // Pixel shader\r
39 [shader("pixel")]\r
40 void mainPixel() {\r
41   F(1.0);\r
42 }\r
44 // First Compute shader\r
45 [shader("compute")]\r
46 [numthreads(4,1,1)]\r
47 void mainCompute1() {\r
48   F(2.0);\r
49 }\r
51 // Second compute shader to make sure we do not get duplicate messages if F is called\r
52 // from multiple entry points.\r
53 [shader("compute")]\r
54 [numthreads(4,1,1)]\r
55 void mainCompute2() {\r
56   F(3.0);\r
57 }\r