bogner updated this revision to Diff 553588.
bogner added a comment.

Address feedback and simplify valid shader stage test

Repository:
  rG LLVM Github Monorepo

CHANGES SINCE LAST ACTION
  https://reviews.llvm.org/D158820/new/

https://reviews.llvm.org/D158820

Files:
  clang/include/clang/Basic/Attr.td
  clang/test/SemaHLSL/entry_shader.hlsl
  clang/test/SemaHLSL/shader_type_attr.hlsl
  clang/test/SemaHLSL/valid-shader-stages.hlsl

Index: clang/test/SemaHLSL/valid-shader-stages.hlsl
===================================================================
--- /dev/null
+++ clang/test/SemaHLSL/valid-shader-stages.hlsl
@@ -0,0 +1,24 @@
+// RUN: %clang_cc1 -triple dxil-pc-shadermodel6.3-library -x hlsl -finclude-default-header -o - %s -verify
+
+// expected-no-diagnostics
+
+[shader("pixel")] void pixel() {}
+[shader("vertex")] void vertex() {}
+[shader("raygeneration")] void raygeneration() {}
+[shader("intersection")] void intersection() {}
+
+[numthreads(1,1,1)][shader("compute")] void compute() {}
+[numthreads(1,1,1)][shader("mesh")] void mesh() {}
+
+// Note: the rest of these have additional constraints that aren't implemented
+// yet, so here we just declare them to make sure the spelling works and
+// whatnot.
+[shader("geometry")] void geometry();
+[shader("hull")] void hull();
+[shader("domain")] void domain();
+[shader("callable")] void callable();
+[shader("closesthit")] void closesthit();
+[shader("anyhit")] void anyhit();
+[shader("miss")] void miss();
+
+[numthreads(1,1,1)][shader("amplification")] void amplification();
Index: clang/test/SemaHLSL/shader_type_attr.hlsl
===================================================================
--- clang/test/SemaHLSL/shader_type_attr.hlsl
+++ clang/test/SemaHLSL/shader_type_attr.hlsl
@@ -28,7 +28,7 @@
 } // namespace spec
 
 // expected-error@+1 {{'shader' attribute parameters do not match the previous declaration}}
-[shader("compute")]
+[shader("pixel")]
 // expected-note@+1 {{conflicting attribute is here}}
 [shader("vertex")]
 int doubledUp() {
@@ -40,7 +40,7 @@
 int forwardDecl();
 
 // expected-error@+1 {{'shader' attribute parameters do not match the previous declaration}}
-[shader("compute")]
+[shader("compute")][numthreads(8,1,1)]
 int forwardDecl() {
   return 1;
 }
@@ -57,19 +57,22 @@
 [shader("library")]
 #endif // END of FAIL
 
-// CHECK:HLSLShaderAttr 0x{{[0-9a-fA-F]+}} <line:61:2, col:18> Compute
-[shader("compute")]
+// CHECK:HLSLShaderAttr 0x{{[0-9a-fA-F]+}} <line:62:2, col:18> Compute
+// CHECK:HLSLNumThreadsAttr 0x{{[0-9a-fA-F]+}} <col:21, col:37> 8 1 1
+[shader("compute")][numthreads(8,1,1)]
 int entry() {
   return 1;
 }
 
 // Because these two attributes match, they should both appear in the AST
-[shader("compute")]
-// CHECK:HLSLShaderAttr 0x{{[0-9a-fA-F]+}} <line:67:2, col:18> Compute
+[shader("compute")][numthreads(8,1,1)]
+// CHECK:HLSLShaderAttr 0x{{[0-9a-fA-F]+}} <line:68:2, col:18> Compute
+// CHECK:HLSLNumThreadsAttr 0x{{[0-9a-fA-F]+}} <col:21, col:37> 8 1 1
 int secondFn();
 
-[shader("compute")]
-// CHECK:HLSLShaderAttr 0x{{[0-9a-fA-F]+}} <line:71:2, col:18> Compute
+[shader("compute")][numthreads(8,1,1)]
+// CHECK:HLSLShaderAttr 0x{{[0-9a-fA-F]+}} <line:73:2, col:18> Compute
+// CHECK:HLSLNumThreadsAttr 0x{{[0-9a-fA-F]+}} <col:21, col:37> 8 1 1
 int secondFn() {
   return 1;
 }
Index: clang/test/SemaHLSL/entry_shader.hlsl
===================================================================
--- clang/test/SemaHLSL/entry_shader.hlsl
+++ clang/test/SemaHLSL/entry_shader.hlsl
@@ -1,4 +1,4 @@
-// RUN: %clang_cc1 -triple dxil-pc-shadermodel6.3-compute -x hlsl -hlsl-entry foo  -o - %s -DSHADER='"anyHit"' -verify
+// RUN: %clang_cc1 -triple dxil-pc-shadermodel6.3-compute -x hlsl -hlsl-entry foo  -o - %s -DSHADER='"mesh"' -verify
 // RUN: %clang_cc1 -triple dxil-pc-shadermodel6.3-compute -x hlsl -hlsl-entry foo  -o - %s -DSHADER='"compute"'
 
 // expected-error@+1 {{'shader' attribute on entry function does not match the target profile}}
Index: clang/include/clang/Basic/Attr.td
===================================================================
--- clang/include/clang/Basic/Attr.td
+++ clang/include/clang/Basic/Attr.td
@@ -4143,8 +4143,8 @@
     EnumArgument<"Type", "ShaderType",
                  [
                    "pixel", "vertex", "geometry", "hull", "domain", "compute",
-                   "library", "raygeneration", "intersection", "anyHit",
-                   "closestHit", "miss", "callable", "mesh", "amplification"
+                   "library", "raygeneration", "intersection", "anyhit",
+                   "closesthit", "miss", "callable", "mesh", "amplification"
                  ],
                  [
                    "Pixel", "Vertex", "Geometry", "Hull", "Domain", "Compute",
@@ -4232,4 +4232,3 @@
   let Subjects = SubjectList<[TypedefName], ErrorDiag>;
   let Documentation = [Undocumented];
 }
-
_______________________________________________
cfe-commits mailing list
cfe-commits@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits

Reply via email to