llvmbot wrote:

<!--LLVM PR SUMMARY COMMENT-->
@llvm/pr-subscribers-hlsl

@llvm/pr-subscribers-clang-driver

Author: Dan Brown (danbrown-amd)

<details>
<summary>Changes</summary>

Addresses #<!-- -->119260.

---

Patch is 127.32 KiB, truncated to 20.00 KiB below, full version: 
https://github.com/llvm/llvm-project/pull/184892.diff


135 Files Affected:

- (modified) clang/include/clang/Basic/DiagnosticSemaKinds.td (+5) 
- (modified) clang/lib/Sema/SemaHLSL.cpp (+23) 
- (modified) clang/test/AST/HLSL/HLSLControlFlowHint.hlsl (+1-1) 
- (modified) clang/test/AST/HLSL/matrix-alias.hlsl (+4-4) 
- (modified) clang/test/AST/HLSL/matrix-constructors.hlsl (+2-1) 
- (modified) clang/test/AST/HLSL/matrix-elementexpr-tree-transform.hlsl (+1-1) 
- (modified) clang/test/AST/HLSL/matrix-general-initializer.hlsl (+3-3) 
- (modified) clang/test/AST/HLSL/matrix-member-access-scalar.hlsl (+2-1) 
- (modified) clang/test/AST/HLSL/matrix-member-access-swizzle.hlsl (+2-1) 
- (modified) clang/test/AST/HLSL/vector-alias.hlsl (+4-3) 
- (modified) clang/test/AST/HLSL/vector-constructors.hlsl (+3-2) 
- (modified) clang/test/AST/HLSL/vk.spec-constant.usage.hlsl (+1-1) 
- (modified) clang/test/CodeGenHLSL/BasicFeatures/frem_modulo.hlsl (+1-1) 
- (modified) 
clang/test/CodeGenHLSL/builtins/GroupMemoryBarrierWithGroupSync.hlsl (+1-1) 
- (modified) clang/test/CodeGenHLSL/builtins/WaveActiveAllEqual.hlsl (+2-2) 
- (modified) clang/test/CodeGenHLSL/builtins/WaveActiveAllTrue.hlsl (+2-2) 
- (modified) clang/test/CodeGenHLSL/builtins/WaveActiveAnyTrue.hlsl (+2-2) 
- (modified) clang/test/CodeGenHLSL/builtins/WaveActiveBallot.hlsl (+2-2) 
- (modified) clang/test/CodeGenHLSL/builtins/WaveActiveBitOr.hlsl (+2-2) 
- (modified) clang/test/CodeGenHLSL/builtins/WaveActiveBitXor.hlsl (+2-2) 
- (modified) clang/test/CodeGenHLSL/builtins/WaveActiveCountBits.hlsl (+2-2) 
- (modified) clang/test/CodeGenHLSL/builtins/WaveActiveMax.hlsl (+2-2) 
- (modified) clang/test/CodeGenHLSL/builtins/WaveActiveMin.hlsl (+2-2) 
- (modified) clang/test/CodeGenHLSL/builtins/WaveActiveProduct.hlsl (+2-2) 
- (modified) clang/test/CodeGenHLSL/builtins/WaveActiveSum.hlsl (+2-2) 
- (modified) clang/test/CodeGenHLSL/builtins/WavePrefixCountBits.hlsl (+2-2) 
- (modified) clang/test/CodeGenHLSL/builtins/WavePrefixProduct.hlsl (+2-2) 
- (modified) clang/test/CodeGenHLSL/builtins/WavePrefixSum.hlsl (+2-2) 
- (modified) clang/test/CodeGenHLSL/builtins/WaveReadLaneAt.hlsl (+2-2) 
- (modified) clang/test/CodeGenHLSL/builtins/acos-overloads.hlsl (+2-2) 
- (modified) clang/test/CodeGenHLSL/builtins/acos.hlsl (+1-1) 
- (modified) clang/test/CodeGenHLSL/builtins/all.hlsl (+2-2) 
- (modified) clang/test/CodeGenHLSL/builtins/any.hlsl (+2-2) 
- (modified) clang/test/CodeGenHLSL/builtins/asdouble.hlsl (+2-2) 
- (modified) clang/test/CodeGenHLSL/builtins/asin-overloads.hlsl (+2-2) 
- (modified) clang/test/CodeGenHLSL/builtins/asin.hlsl (+1-1) 
- (modified) clang/test/CodeGenHLSL/builtins/atan-overloads.hlsl (+2-2) 
- (modified) clang/test/CodeGenHLSL/builtins/atan.hlsl (+1-1) 
- (modified) clang/test/CodeGenHLSL/builtins/atan2-overloads.hlsl (+1-1) 
- (modified) clang/test/CodeGenHLSL/builtins/atan2.hlsl (+1-1) 
- (modified) clang/test/CodeGenHLSL/builtins/clamp-overloads.hlsl (+2-2) 
- (modified) clang/test/CodeGenHLSL/builtins/clamp.hlsl (+2-2) 
- (modified) clang/test/CodeGenHLSL/builtins/clip.hlsl (+2-2) 
- (modified) clang/test/CodeGenHLSL/builtins/cosh-overloads.hlsl (+3-3) 
- (modified) clang/test/CodeGenHLSL/builtins/cosh.hlsl (+1-1) 
- (modified) clang/test/CodeGenHLSL/builtins/cross.hlsl (+2-2) 
- (modified) clang/test/CodeGenHLSL/builtins/ddx-coarse-builtin.hlsl (+1-1) 
- (modified) clang/test/CodeGenHLSL/builtins/ddx-coarse.hlsl (+1-1) 
- (modified) clang/test/CodeGenHLSL/builtins/ddx-fine-builtin.hlsl (+1-1) 
- (modified) clang/test/CodeGenHLSL/builtins/ddx-fine.hlsl (+1-1) 
- (modified) clang/test/CodeGenHLSL/builtins/ddx.hlsl (+1-1) 
- (modified) clang/test/CodeGenHLSL/builtins/ddy-coarse-builtin.hlsl (+1-1) 
- (modified) clang/test/CodeGenHLSL/builtins/ddy-coarse.hlsl (+1-1) 
- (modified) clang/test/CodeGenHLSL/builtins/ddy-fine-builtin.hlsl (+1-1) 
- (modified) clang/test/CodeGenHLSL/builtins/ddy-fine.hlsl (+1-1) 
- (modified) clang/test/CodeGenHLSL/builtins/ddy.hlsl (+1-1) 
- (modified) clang/test/CodeGenHLSL/builtins/degrees-overloads.hlsl (+2-2) 
- (modified) clang/test/CodeGenHLSL/builtins/degrees.hlsl (+2-2) 
- (modified) clang/test/CodeGenHLSL/builtins/distance.hlsl (+1-1) 
- (modified) clang/test/CodeGenHLSL/builtins/dot.hlsl (+2-2) 
- (modified) clang/test/CodeGenHLSL/builtins/dot2add.hlsl (+2-2) 
- (modified) clang/test/CodeGenHLSL/builtins/f16tof32-builtin.hlsl (+1-1) 
- (modified) clang/test/CodeGenHLSL/builtins/f16tof32.hlsl (+1-1) 
- (modified) clang/test/CodeGenHLSL/builtins/f32tof16-builtin.hlsl (+1-1) 
- (modified) clang/test/CodeGenHLSL/builtins/f32tof16.hlsl (+1-1) 
- (modified) clang/test/CodeGenHLSL/builtins/faceforward.hlsl (+1-1) 
- (modified) clang/test/CodeGenHLSL/builtins/firstbithigh.hlsl (+1-1) 
- (modified) clang/test/CodeGenHLSL/builtins/firstbitlow.hlsl (+1-1) 
- (modified) clang/test/CodeGenHLSL/builtins/fmod.hlsl (+2-2) 
- (modified) clang/test/CodeGenHLSL/builtins/frac-overloads.hlsl (+2-2) 
- (modified) clang/test/CodeGenHLSL/builtins/frac.hlsl (+2-2) 
- (modified) clang/test/CodeGenHLSL/builtins/isinf-overloads.hlsl (+2-2) 
- (modified) clang/test/CodeGenHLSL/builtins/isinf.hlsl (+2-2) 
- (modified) clang/test/CodeGenHLSL/builtins/isnan.hlsl (+2-2) 
- (modified) clang/test/CodeGenHLSL/builtins/length.hlsl (+1-1) 
- (modified) clang/test/CodeGenHLSL/builtins/lerp-overloads.hlsl (+2-2) 
- (modified) clang/test/CodeGenHLSL/builtins/lerp.hlsl (+2-2) 
- (modified) clang/test/CodeGenHLSL/builtins/mad.hlsl (+2-2) 
- (modified) clang/test/CodeGenHLSL/builtins/normalize-overloads.hlsl (+3-3) 
- (modified) clang/test/CodeGenHLSL/builtins/normalize.hlsl (+2-2) 
- (modified) clang/test/CodeGenHLSL/builtins/radians-overloads.hlsl (+1-1) 
- (modified) clang/test/CodeGenHLSL/builtins/radians.hlsl (+2-2) 
- (modified) clang/test/CodeGenHLSL/builtins/rcp.hlsl (+2-2) 
- (modified) clang/test/CodeGenHLSL/builtins/reflect.hlsl (+1-1) 
- (modified) clang/test/CodeGenHLSL/builtins/refract.hlsl (+1-1) 
- (modified) clang/test/CodeGenHLSL/builtins/rsqrt-overloads.hlsl (+2-2) 
- (modified) clang/test/CodeGenHLSL/builtins/rsqrt.hlsl (+2-2) 
- (modified) clang/test/CodeGenHLSL/builtins/sign.hlsl (+2-2) 
- (modified) clang/test/CodeGenHLSL/builtins/sinh.hlsl (+1-1) 
- (modified) clang/test/CodeGenHLSL/builtins/smoothstep.hlsl (+1-1) 
- (modified) clang/test/CodeGenHLSL/builtins/step-overloads.hlsl (+2-2) 
- (modified) clang/test/CodeGenHLSL/builtins/step.hlsl (+2-2) 
- (modified) clang/test/CodeGenHLSL/builtins/tan-overloads.hlsl (+2-2) 
- (modified) clang/test/CodeGenHLSL/builtins/tan.hlsl (+1-1) 
- (modified) clang/test/CodeGenHLSL/builtins/tanh-overloads.hlsl (+2-2) 
- (modified) clang/test/CodeGenHLSL/builtins/tanh.hlsl (+1-1) 
- (modified) clang/test/CodeGenHLSL/resources/StructuredBuffers-methods-ps.hlsl 
(+2-2) 
- (modified) clang/test/CodeGenHLSL/resources/cbuffer_geps.hlsl (+1-1) 
- (modified) 
clang/test/CodeGenHLSL/semantics/semantic.explicit-mix-builtin.vs.hlsl (+1-1) 
- (modified) clang/test/Driver/dxc_hlsl-rootsig-ver.hlsl (+3-3) 
- (modified) clang/test/ParserHLSL/access_specifiers.hlsl (+2-2) 
- (modified) clang/test/ParserHLSL/hlsl_contained_type_attr.hlsl (+1-1) 
- (modified) clang/test/ParserHLSL/hlsl_contained_type_attr_error.hlsl (+1-1) 
- (modified) clang/test/ParserHLSL/hlsl_is_rov_attr.hlsl (+1-1) 
- (modified) clang/test/ParserHLSL/hlsl_is_rov_attr_error.hlsl (+1-1) 
- (modified) clang/test/ParserHLSL/hlsl_raw_buffer_attr.hlsl (+1-1) 
- (modified) clang/test/ParserHLSL/hlsl_raw_buffer_attr_error.hlsl (+1-1) 
- (modified) clang/test/ParserHLSL/hlsl_resource_class_attr.hlsl (+1-1) 
- (modified) clang/test/ParserHLSL/hlsl_resource_class_attr_error.hlsl (+1-1) 
- (modified) clang/test/ParserHLSL/hlsl_resource_dimension_attr.hlsl (+1-1) 
- (modified) clang/test/ParserHLSL/hlsl_resource_dimension_attr_error.hlsl 
(+1-1) 
- (modified) clang/test/ParserHLSL/semantic_parsing.hlsl (+2-2) 
- (modified) clang/test/ParserHLSL/semantic_parsing_define.hlsl (+2-2) 
- (modified) clang/test/SemaHLSL/Availability/attr-deprecated.hlsl (+1-1) 
- (modified) clang/test/SemaHLSL/BuiltIns/binary-compat-overload-warnings.hlsl 
(+3-3) 
- (modified) clang/test/SemaHLSL/BuiltIns/matrix-constructors-errors.hlsl 
(+2-1) 
- (modified) clang/test/SemaHLSL/BuiltIns/ternary-compat-overload-warnings.hlsl 
(+1-1) 
- (modified) clang/test/SemaHLSL/BuiltIns/unary-compat-overload-warnings.hlsl 
(+24-24) 
- (modified) 
clang/test/SemaHLSL/BuiltIns/vec-scalar-compat-overload-warnings.hlsl (+1-1) 
- (modified) clang/test/SemaHLSL/BuiltIns/vector-constructors-errors.hlsl 
(+2-1) 
- (modified) clang/test/SemaHLSL/Language/InitIncompleteArrays.hlsl (+1-1) 
- (modified) clang/test/SemaHLSL/Language/InitLists.hlsl (+1-1) 
- (modified) clang/test/SemaHLSL/Language/NoVirtual.hlsl (+1-1) 
- (modified) clang/test/SemaHLSL/Language/OutputParameters.hlsl (+1-1) 
- (modified) clang/test/SemaHLSL/Language/TemplateOutArg.hlsl (+1-1) 
- (modified) 
clang/test/SemaHLSL/Semantics/semantic.explicit-mix-builtin-vs.hlsl (+1-1) 
- (modified) 
clang/test/SemaHLSL/Semantics/semantic.explicit-mix-location-2.hlsl (+1-1) 
- (modified) clang/test/SemaHLSL/Semantics/semantic.explicit-mix-location.hlsl 
(+1-1) 
- (modified) clang/test/SemaHLSL/Semantics/valid_entry_parameter.hlsl (+1-1) 
- (modified) clang/test/SemaHLSL/Semantics/vertexid.vs.hlsl (+2-2) 
- (modified) clang/test/SemaHLSL/Types/short-errors.hlsl (+2-2) 
- (modified) clang/test/SemaHLSL/entry_shader.hlsl (+27-3) 
- (modified) clang/test/SemaHLSL/num_threads.hlsl (+16-3) 
- (modified) clang/test/SemaHLSL/prohibit_reference.hlsl (+1-1) 
- (modified) clang/test/SemaHLSL/vk.spec-constant.error.hlsl (+2-1) 


``````````diff
diff --git a/clang/include/clang/Basic/DiagnosticSemaKinds.td 
b/clang/include/clang/Basic/DiagnosticSemaKinds.td
index 0c25eb2443d5e..79e1a3fa10fbe 100644
--- a/clang/include/clang/Basic/DiagnosticSemaKinds.td
+++ b/clang/include/clang/Basic/DiagnosticSemaKinds.td
@@ -13517,6 +13517,11 @@ def err_hlsl_attr_invalid_ast_node : Error<
 def err_hlsl_attr_incompatible
     : Error<"%0 attribute is not compatible with %1 attribute">;
 
+def err_hlsl_ambiguous_entry_point : Error<
+   "ambiguous entry point definition '%0'">;
+def err_hlsl_missing_entry_point : Error<"missing entry point definition 
'%0'">;
+def note_hlsl_previous_definition_here : Note<
+   "previous '%0' definition is here">;
 def err_hlsl_entry_shader_attr_mismatch : Error<
    "%0 attribute on entry function does not match the target profile">;
 def err_hlsl_numthreads_argument_oor : Error<"argument '%select{X|Y|Z}0' to 
numthreads attribute cannot exceed %1">;
diff --git a/clang/lib/Sema/SemaHLSL.cpp b/clang/lib/Sema/SemaHLSL.cpp
index 3babf64822f10..bfeee6f0f7773 100644
--- a/clang/lib/Sema/SemaHLSL.cpp
+++ b/clang/lib/Sema/SemaHLSL.cpp
@@ -2809,6 +2809,12 @@ void 
DiagnoseHLSLAvailability::HandleFunctionOrMethodRef(FunctionDecl *FD,
 
 void DiagnoseHLSLAvailability::RunOnTranslationUnit(
     const TranslationUnitDecl *TU) {
+  // cases: no match, 1 match, >1 match
+  auto &TargetInfo = SemaRef.getASTContext().getTargetInfo();
+  auto &entryName = TargetInfo.getTargetOpts().HLSLEntry;
+  bool isLibraryShader = TargetInfo.getTriple().getEnvironment() ==
+                         llvm::Triple::EnvironmentType::Library;
+  SourceLocation entryLoc{};
 
   // Iterate over all shader entry functions and library exports, and for those
   // that have a body (definiton), run diag scan on each, setting appropriate
@@ -2839,6 +2845,17 @@ void DiagnoseHLSLAvailability::RunOnTranslationUnit(
 
       // shader entry point
       if (HLSLShaderAttr *ShaderAttr = FD->getAttr<HLSLShaderAttr>()) {
+        if (!isLibraryShader && FD->getName() == entryName) {
+          if (entryLoc.isValid()) {
+            SemaRef.Diag(FD->getLocation(),
+                         diag::err_hlsl_ambiguous_entry_point)
+                << entryName;
+            SemaRef.Diag(entryLoc, diag::note_hlsl_previous_definition_here)
+                << entryName;
+            return;
+          }
+          entryLoc = FD->getLocation();
+        }
         SetShaderStageContext(ShaderAttr->getType());
         RunOnFunction(FD);
         continue;
@@ -2862,6 +2879,12 @@ void DiagnoseHLSLAvailability::RunOnTranslationUnit(
       }
     }
   }
+
+  if (!isLibraryShader && entryLoc.isInvalid()) {
+    SemaRef.Diag(TU->getLocation(), diag::err_hlsl_missing_entry_point)
+        << entryName;
+    return;
+  }
 }
 
 void DiagnoseHLSLAvailability::RunOnFunction(const FunctionDecl *FD) {
diff --git a/clang/test/AST/HLSL/HLSLControlFlowHint.hlsl 
b/clang/test/AST/HLSL/HLSLControlFlowHint.hlsl
index 18263bedbe3ec..0a11c067e23f0 100644
--- a/clang/test/AST/HLSL/HLSLControlFlowHint.hlsl
+++ b/clang/test/AST/HLSL/HLSLControlFlowHint.hlsl
@@ -1,4 +1,4 @@
-// RUN: %clang_cc1 -triple dxil-pc-shadermodel6.3-compute -ast-dump %s | 
FileCheck %s
+// RUN: %clang_cc1 -triple dxil-pc-shadermodel6.3-library -ast-dump %s | 
FileCheck %s
 
 // CHECK: FunctionDecl {{.*}} used branch 'int (int)'
 // CHECK: AttributedStmt
diff --git a/clang/test/AST/HLSL/matrix-alias.hlsl 
b/clang/test/AST/HLSL/matrix-alias.hlsl
index 2758b6f0d202f..e36d69d75201b 100644
--- a/clang/test/AST/HLSL/matrix-alias.hlsl
+++ b/clang/test/AST/HLSL/matrix-alias.hlsl
@@ -1,4 +1,4 @@
-// RUN: %clang_cc1 -triple dxil-pc-shadermodel6.0-compute -ast-dump -o - %s | 
FileCheck %s
+// RUN: %clang_cc1 -triple dxil-pc-shadermodel6.0-compute -hlsl-entry entry 
-ast-dump -o - %s | FileCheck %s
 
 // Test that matrix aliases are set up properly for HLSL
 
@@ -20,8 +20,8 @@
 // Make sure we got a using directive at the end.
 // CHECK: UsingDirectiveDecl 0x{{[0-9a-fA-F]+}} <<invalid sloc>> <invalid 
sloc> Namespace 0x{{[0-9a-fA-F]+}} 'hlsl'
 
-[numthreads(1,1,1)]
-int entry() {
+[shader("compute"), numthreads(1,1,1)]
+void entry() {
   // Verify that the alias is generated inside the hlsl namespace.
   hlsl::matrix<float, 2, 2> Mat2x2f;
 
@@ -45,5 +45,5 @@ int entry() {
 
   // CHECK: DeclStmt 0x{{[0-9a-fA-F]+}} <line:44:3, col:21>
   // CHECK-NEXT: VarDecl 0x{{[0-9a-fA-F]+}} <col:3, col:12> col:12 ImpMat4x4 
'matrix<>':'matrix<float, 4, 4>'
-  return 1;
+  return;
 }
diff --git a/clang/test/AST/HLSL/matrix-constructors.hlsl 
b/clang/test/AST/HLSL/matrix-constructors.hlsl
index ae61ab49f8573..1d3e630e89538 100644
--- a/clang/test/AST/HLSL/matrix-constructors.hlsl
+++ b/clang/test/AST/HLSL/matrix-constructors.hlsl
@@ -1,4 +1,4 @@
-// RUN: %clang_cc1 -triple dxil-pc-shadermodel6.0-compute -x hlsl -ast-dump -o 
- %s | FileCheck %s
+// RUN: %clang_cc1 -triple dxil-pc-shadermodel6.0-compute -x hlsl -hlsl-entry 
ok -ast-dump -o - %s | FileCheck %s
 
 
 typedef float float2x1 __attribute__((matrix_type(2,1)));
@@ -8,6 +8,7 @@ typedef float float4x4 __attribute__((matrix_type(4,4)));
 typedef float float2 __attribute__((ext_vector_type(2)));
 typedef float float4 __attribute__((ext_vector_type(4)));
 
+[shader("compute")]
 [numthreads(1,1,1)]
 void ok() {
 // CHECK: VarDecl 0x{{[0-9a-fA-F]+}} <col:{{[0-9]+}}, col:{{[0-9]+}}> 
col:{{[0-9]+}} A 'float2x3':'matrix<float, 2, 3>' cinit
diff --git a/clang/test/AST/HLSL/matrix-elementexpr-tree-transform.hlsl 
b/clang/test/AST/HLSL/matrix-elementexpr-tree-transform.hlsl
index 137c6395fbde1..b88a781e63f38 100644
--- a/clang/test/AST/HLSL/matrix-elementexpr-tree-transform.hlsl
+++ b/clang/test/AST/HLSL/matrix-elementexpr-tree-transform.hlsl
@@ -1,4 +1,4 @@
-// RUN: %clang_cc1 -triple dxil-pc-shadermodel6.0-compute -x hlsl 
-std=hlsl202x \
+// RUN: %clang_cc1 -triple dxil-pc-shadermodel6.0-library -x hlsl 
-std=hlsl202x \
 // RUN:   -finclude-default-header -ast-dump -ast-dump-filter=get00 %s | 
FileCheck %s
 
 template <typename T>
diff --git a/clang/test/AST/HLSL/matrix-general-initializer.hlsl 
b/clang/test/AST/HLSL/matrix-general-initializer.hlsl
index 2c225cbd62539..310991e8c87da 100644
--- a/clang/test/AST/HLSL/matrix-general-initializer.hlsl
+++ b/clang/test/AST/HLSL/matrix-general-initializer.hlsl
@@ -1,10 +1,10 @@
-// RUN: %clang_cc1 -triple dxil-pc-shadermodel6.0-compute -x hlsl -ast-dump -o 
- %s | FileCheck %s
+// RUN: %clang_cc1 -triple dxil-pc-shadermodel6.0-compute -x hlsl -hlsl-entry 
ok -ast-dump -o - %s | FileCheck %s
 
 typedef float float4x2 __attribute__((matrix_type(4,2)));
 typedef float float2x2 __attribute__((matrix_type(2,2)));
 typedef int int4x4 __attribute__((matrix_type(4,4)));
 
-
+[shader("compute")]
 [numthreads(1,1,1)]
 void ok() {
 
@@ -257,4 +257,4 @@ float2x2 m2 = {0.xxxx};
 // CHECK-NEXT: IntegerLiteral 0x{{[0-9a-fA-F]+}} <col:{{[0-9]+}}> 'int' 1
 int4x4 m3 = {m2, m2, m2, m2};
 
-}
\ No newline at end of file
+}
diff --git a/clang/test/AST/HLSL/matrix-member-access-scalar.hlsl 
b/clang/test/AST/HLSL/matrix-member-access-scalar.hlsl
index 14c18aaffb77e..c89202df03784 100644
--- a/clang/test/AST/HLSL/matrix-member-access-scalar.hlsl
+++ b/clang/test/AST/HLSL/matrix-member-access-scalar.hlsl
@@ -1,7 +1,8 @@
-// RUN: %clang_cc1 -triple dxil-pc-shadermodel6.0-compute -x hlsl -ast-dump -o 
- %s | FileCheck %s 
+// RUN: %clang_cc1 -triple dxil-pc-shadermodel6.0-compute -x hlsl -hlsl-entry 
ok -ast-dump -o - %s | FileCheck %s 
 
 typedef float float3x3 __attribute__((matrix_type(3,3)));
 
+[shader("compute")]
 [numthreads(1,1,1)]
 void ok() {
     float3x3 A;
diff --git a/clang/test/AST/HLSL/matrix-member-access-swizzle.hlsl 
b/clang/test/AST/HLSL/matrix-member-access-swizzle.hlsl
index 2d0169e799802..9f9f0caf1be5b 100644
--- a/clang/test/AST/HLSL/matrix-member-access-swizzle.hlsl
+++ b/clang/test/AST/HLSL/matrix-member-access-swizzle.hlsl
@@ -1,4 +1,4 @@
-// RUN: %clang_cc1 -triple dxil-pc-shadermodel6.0-compute -x hlsl -ast-dump -o 
- %s | FileCheck %s 
+// RUN: %clang_cc1 -triple dxil-pc-shadermodel6.0-compute -x hlsl -hlsl-entry 
ok -ast-dump -o - %s | FileCheck %s 
 
 typedef float float3x3 __attribute__((matrix_type(3,3)));
 typedef float float4x4 __attribute__((matrix_type(4,4)));
@@ -6,6 +6,7 @@ typedef float float2 __attribute__((ext_vector_type(2)));
 typedef float float3 __attribute__((ext_vector_type(3)));
 typedef float float4 __attribute__((ext_vector_type(4)));
 
+[shader("compute")]
 [numthreads(1,1,1)]
 void ok() {
     float3x3 A;
diff --git a/clang/test/AST/HLSL/vector-alias.hlsl 
b/clang/test/AST/HLSL/vector-alias.hlsl
index e1f78e6abdca8..c0d48bf4bbf6a 100644
--- a/clang/test/AST/HLSL/vector-alias.hlsl
+++ b/clang/test/AST/HLSL/vector-alias.hlsl
@@ -1,4 +1,4 @@
-// RUN: %clang_cc1 -triple dxil-pc-shadermodel6.0-compute -x hlsl -ast-dump -o 
- %s | FileCheck %s
+// RUN: %clang_cc1 -triple dxil-pc-shadermodel6.0-compute -x hlsl -hlsl-entry 
entry -ast-dump -o - %s | FileCheck %s
 // CHECK: NamespaceDecl {{.*}} implicit hlsl
 // CHECK: TypeAliasTemplateDecl {{.*}} implicit vector
 // CHECK-NEXT: TemplateTypeParmDecl {{.*}} class depth 0 index 0 element
@@ -17,8 +17,9 @@
 // Make sure we got a using directive at the end.
 // CHECK: UsingDirectiveDecl {{.*}} Namespace {{.*}} 'hlsl'
 
+[shader("compute")]
 [numthreads(1,1,1)]
-int entry() {
+void entry() {
   // Verify that the alias is generated inside the hlsl namespace.
   hlsl::vector<float, 2> Vec2 = {1.0, 2.0};
 
@@ -48,5 +49,5 @@ int entry() {
 
   // CHECK: DeclStmt
   // CHECK-NEXT: VarDecl {{.*}} ImpVec4 'vector<>':'vector<float, 4>' cinit
-  return 1;
+  return;
 }
diff --git a/clang/test/AST/HLSL/vector-constructors.hlsl 
b/clang/test/AST/HLSL/vector-constructors.hlsl
index ab547554b148d..2473f7f81143a 100644
--- a/clang/test/AST/HLSL/vector-constructors.hlsl
+++ b/clang/test/AST/HLSL/vector-constructors.hlsl
@@ -1,9 +1,10 @@
-// RUN: %clang_cc1 -triple dxil-pc-shadermodel6.0-compute -ast-dump -o - %s | 
FileCheck %s
-// RUN: %clang_cc1 -triple dxil-pc-shadermodel6.0-compute -std=hlsl202x 
-ast-dump -o - %s | FileCheck %s
+// RUN: %clang_cc1 -triple dxil-pc-shadermodel6.0-compute -hlsl-entry entry 
-ast-dump -o - %s | FileCheck %s
+// RUN: %clang_cc1 -triple dxil-pc-shadermodel6.0-compute -std=hlsl202x 
-hlsl-entry entry -ast-dump -o - %s | FileCheck %s
 
 typedef float float2 __attribute__((ext_vector_type(2)));
 typedef float float3 __attribute__((ext_vector_type(3)));
 
+[shader("compute")]
 [numthreads(1,1,1)]
 void entry() {
   float2 Vec2 = float2(1.0, 2.0);
diff --git a/clang/test/AST/HLSL/vk.spec-constant.usage.hlsl 
b/clang/test/AST/HLSL/vk.spec-constant.usage.hlsl
index 5654974b26d2d..a7e8223a325e6 100644
--- a/clang/test/AST/HLSL/vk.spec-constant.usage.hlsl
+++ b/clang/test/AST/HLSL/vk.spec-constant.usage.hlsl
@@ -1,4 +1,4 @@
-// RUN: %clang_cc1 -finclude-default-header -fnative-int16-type -triple 
spirv-unknown-vulkan-compute -x hlsl -ast-dump -o - %s | FileCheck %s
+// RUN: %clang_cc1 -finclude-default-header -fnative-int16-type -triple 
spirv-unknown-vulkan-library -x hlsl -ast-dump -o - %s | FileCheck %s
 
 // CHECK: VarDecl {{.*}} bool_const 'const hlsl_private bool' static cinit
 // CHECK-NEXT: CallExpr {{.*}} 'bool'
diff --git a/clang/test/CodeGenHLSL/BasicFeatures/frem_modulo.hlsl 
b/clang/test/CodeGenHLSL/BasicFeatures/frem_modulo.hlsl
index 393efcc360d08..4dd0070c763ee 100644
--- a/clang/test/CodeGenHLSL/BasicFeatures/frem_modulo.hlsl
+++ b/clang/test/CodeGenHLSL/BasicFeatures/frem_modulo.hlsl
@@ -1,7 +1,7 @@
 // RUN: %clang_cc1 -finclude-default-header -triple 
dxil-pc-shadermodel6.3-library %s \
 // RUN:  -fnative-half-type -fnative-int16-type -emit-llvm 
-disable-llvm-passes -o - | \
 // RUN:  FileCheck %s
-// RUN: %clang_cc1 -finclude-default-header -triple 
spirv-unknown-vulkan-compute %s \
+// RUN: %clang_cc1 -finclude-default-header -triple 
spirv-unknown-vulkan-library %s \
 // RUN:  -fnative-half-type -fnative-int16-type -emit-llvm 
-disable-llvm-passes -o - | \
 // RUN:  FileCheck %s
 
diff --git 
a/clang/test/CodeGenHLSL/builtins/GroupMemoryBarrierWithGroupSync.hlsl 
b/clang/test/CodeGenHLSL/builtins/GroupMemoryBarrierWithGroupSync.hlsl
index e709ed3616f0d..a0f17835a8367 100644
--- a/clang/test/CodeGenHLSL/builtins/GroupMemoryBarrierWithGroupSync.hlsl
+++ b/clang/test/CodeGenHLSL/builtins/GroupMemoryBarrierWithGroupSync.hlsl
@@ -3,7 +3,7 @@
 // RUN:   -emit-llvm -disable-llvm-passes -o - | FileCheck %s \
 // RUN:   -DTARGET=dx -check-prefixes=CHECK,CHECK-DXIL
 // RUN: %clang_cc1 -finclude-default-header -x hlsl -triple \
-// RUN:   spirv-unknown-vulkan-compute %s \
+// RUN:   spirv-unknown-vulkan-library %s \
 // RUN:   -emit-llvm -disable-llvm-passes -o - | FileCheck %s \
 // RUN:   -DTARGET=spv -check-prefixes=CHECK,CHECK-SPIRV
 
diff --git a/clang/test/CodeGenHLSL/builtins/WaveActiveAllEqual.hlsl 
b/clang/test/CodeGenHLSL/builtins/WaveActiveAllEqual.hlsl
index 323aa439984f9..7510d62df58ad 100644
--- a/clang/test/CodeGenHLSL/builtins/WaveActiveAllEqual.hlsl
+++ b/clang/test/CodeGenHLSL/builtins/WaveActiveAllEqual.hlsl
@@ -1,8 +1,8 @@
 // RUN: %clang_cc1 -std=hlsl2021 -finclude-default-header -triple \
-// RUN:   dxil-pc-shadermodel6.3-compute %s -emit-llvm -disable-llvm-passes -o 
- | \
+// RUN:   dxil-pc-shadermodel6.3-library %s -emit-llvm -disable-llvm-passes -o 
- | \
 // RUN:   FileCheck %s --check-prefixes=CHECK,CHECK-DXIL
 // RUN: %clang_cc1 -std=hlsl2021 -finclude-default-header -triple \
-// RUN:   spirv-pc-vulkan-compute %s -emit-llvm -disable-llvm-passes -o - | \
+// RUN:   spirv-pc-vulkan-library %s -emit-llvm -disable-llvm-passes -o - | \
 // RUN:   FileCheck %s --check-prefixes=CHECK,CHECK-SPIRV
 
 // Test basic lowering to runtime function call.
diff --git a/clang/test/CodeGenHLSL/builtins/WaveActiveAllTrue.hlsl 
b/clang/test/CodeGenHLSL/builtins/WaveActiveAllTrue.hlsl
index f499fc97f43fc..704149a795066 100644
--- a/clang/test/CodeGenHLSL/builtins/WaveActiveAllTrue.hlsl
+++ b/clang/test/CodeGenHLSL/builtins/WaveActiveAllTrue.hlsl
@@ -1,8 +1,8 @@
 // RUN: %clang_cc1 -finclude-default-header -fnative-half-type 
-fnative-int16-type -triple \
-// RUN:   dxil-pc-shadermodel6.3-compute %s -emit-llvm -disable-llvm-passes -o 
- | \
+// RUN:   dxil-pc-shadermodel6.3-library %s -emit-llvm -disable-llvm-passes -o 
- | \
 // RUN:   FileCheck %s --check-prefixes=CHECK,CHECK-DXIL
 // RUN: %clang_cc1 -finclude-default-header -fnative-half-type 
-fnative-int16-type -triple \
-// RUN:   spirv-pc-vulkan-compute %s -emit-llvm -disable-llvm-passes -o - | \
+// RUN:   spirv-pc-vulkan-library %s -emit-llvm -disable-llvm-passes -o - | \
 // RUN:   FileCheck %s --check-prefixes=CHECK,CHECK-SPIRV
 
 // Test basic lowering to runtime function call for int values.
diff --git a/clang/test/CodeGenHLSL/builtins/WaveActiveAnyTrue.hlsl 
b/clang/test/CodeGenHLSL/builtins/WaveActiveAnyTrue.hlsl
index 3655cdb443fa9..0de77b04f097d 100644
--- a/clang/test/CodeGenHLSL/builtins/WaveActiveAnyTrue.hlsl
+++ b/clang/test/CodeGenHLSL/builtins/WaveActiveAnyTrue.hlsl
@@ -1,8 +1,8 @@
 // RUN: %clang_cc1 -finclude-default-header -fnative-half-type 
-fnative-int16-type -triple \
-// RUN:   dxil-pc-shadermodel6.3-compute %s -emit-llvm -disable-llvm-passes -o 
- | \
+// RUN:   dxil-pc-shadermodel6.3-library %s -emit-llvm -disable-llvm-passes -o 
- | \
 // RUN:   FileCheck %s --check-prefixes=CHECK,CHECK-DXIL
 // RUN: %clang_cc1 -finclude-default-header -fnative-half-type 
-fnative-int16-type -triple \
-// RUN:   spirv-pc-vulkan-compute %s -emit-llvm -disable-llvm-passes -o - | \
+// RUN:   spirv-pc-vulkan-library %s -emit-llvm -disable-llvm-passes -o - | \
 // RUN:   FileCheck %s --check-prefixes=CHECK,CHECK-SPIRV
 
 // Test basic lowering to runtime function call for int values.
diff --git a/clang/test/CodeGenHLSL/builtins/WaveActiveBallot.hlsl 
b/clang/test/CodeGenHLSL/builtins/WaveActiveBallot.hlsl
index df2d854a64247..283cb3caa2beb 100644
--- a/clang/test/CodeGenHLSL/builtins/WaveActiveBallot.hlsl
+++ b/clang/test/CodeGenHLSL/builtins/WaveActiveBallot.hlsl
@@ -1,8 +1,8 @@
 // RUN: %clang_cc1 -finclude-default-header -fnative-half-type -triple \
-// RUN:   dxil-pc-shadermodel6.3-compute %s -emit-llvm -disable-llvm-passes -o 
- | \
+// RUN:   dxil-pc-shadermodel6.3-library %s -emit-llvm -disable-llvm-passes -o 
- | \
 // RUN:   FileCheck %s --check-prefixes=CHECK,CHECK-DXIL
 // RUN: %clang_cc1 -finclude-default-header -fnative-half-type -triple \
-// RUN:   spirv-pc-vulkan-compute %s -emit-llvm -disable-llvm-passes -o - | \
+// RUN:   spirv-pc-vulkan-library %s -emit-llvm -disable-llvm-passes -o - | \
 // RUN:   FileCheck %s --check-prefixes=CHECK,CHECK-SPIRV
 
 // Test basic lowering to runtime function call for int values.
diff --git a/clang/test/CodeGenHLSL/builtins/WaveActiveBitOr.hlsl 
b/clang/test/CodeGenHLSL/builtins/WaveActiveBitOr.hlsl
index 80364724448fa..04869545e2f00 100644
--- a/clang/test/CodeGenHLSL/builtins/WaveActiveBitOr.hlsl
+++ b/clang/test/CodeGenHLSL/builtins/WaveActiveBitOr.hlsl
@@ -1,9 +1,9 @@
 // RUN: %clang_cc1 -std=hlsl2021 -finclude-default-header -triple \
-// RUN:   dxil-pc-shadermodel6.3-compute %s -emit-llvm -disable-llvm-passes -o 
- | \
+// RUN:   dxil-pc-shadermodel6.3-library %s -emit-llvm -disable-llvm-passes -o 
- | \
 // RUN:   FileCheck %s --check-prefixes=CHECK,DXCHECK -DCALL="call"
 
 // RUN: %clang_cc1 -std=hlsl2021 -finclude-default-header -triple \
-// RUN:   spirv-pc-vulkan-compute %s -emit-llvm -disable-llvm-passes -o - | \
+// RUN:   spirv-pc-vulkan-library %s -emit-llvm -disable-llvm-passes -o - | \
 // RUN:   FileCheck %s --check-prefixes=CHECK,SPVCHECK -DCALL="call spir_func"
 
 // Test basic lowering to runtime function call.
diff --git a/clang/test/CodeGenHLSL/builtins/WaveActiveBitXor.hlsl 
b/clang/test/CodeGenHLSL/builtins/WaveActiveBitXor.hlsl
index 9c94663390843..e5b14a7a28bb6 100644
--- a/clang/test/CodeGenHLSL/builtins/WaveActiveBitXor.hlsl
+++ b/clang/test/CodeGenHLSL/builtins/WaveActiveBitXor.hlsl
@@ -1,9 +1,9 @@
 // RUN: %clang_cc1 -std=hlsl2021 -finclude-default-header -triple \
-// RUN:   dxil-pc-shadermodel6.3-compute %s -emit-llvm -disable-llvm-passes -o 
- | \
+// RUN:   dxil-pc-shadermodel6.3-library %s -emit-llvm -disable-llvm-passes -o 
- | \
 // RUN:   FileCheck %s --check-prefixes=CHECK,DXCHECK -DCALL="call"
 
 // RUN: %clang_cc1 -std=hlsl2021 -finclude-default-header -triple \
-// RUN:   spirv-pc-vulkan-compute %s -emit-llvm -disable-llvm-passes -o - | \
+// RUN:   spirv-pc-vulkan-library %s -emit-llvm -disable-llvm-passes -o - | \
 // RUN:   FileCheck %s --check-prefixes=CHECK,SPVCHECK -DCALL="call spir_func"
 
 // Test basic lowering to runtime function call.
diff --git a/clang/test/CodeGenHLSL/builtins/WaveActiveCountBits.hlsl 
b/clang/test/CodeGenHLSL/builtins/WaveActiveCountBits.hlsl
index 086dd295ba938..af30920120612 100755
--- a/clang/test/CodeGenHLSL/builtins/WaveActiveCountBits.hlsl
+++ b/clang/test/CodeGenHLSL/builtins/WaveActiveCountBits.hlsl
@@ -1,8 +1,8 @@
 // RUN: %clang_cc1 -std=hlsl2021 -finclude-default-header -triple \
-// RUN:   dxil-pc-shadermodel6.3-compute %s -emit-llvm -disable-llvm-passes -o 
- | \
+// RUN:   dxil-pc-shadermodel6.3-library %s -emit-llvm -disable-llvm-passes -o 
- | \
 // RUN:   FileCheck %s -DTARGET=dx
 // RUN: %clang_cc1 -std=hlsl2021 -finclude-default-header -triple \
-// RUN:   spirv-pc-vulkan-compute %s -emit-llvm -disable-llvm-passes -o - | \
+// RUN:   spirv-pc-vulkan-library %s -emit-llvm -disable-llvm-passes -o - | \
 // RUN:   FileCheck %s -DTARGET=spv
 
 // Test basic lowering to runtime function call.
diff --git a/clang/test/CodeGenHLSL/builtins/WaveActiveMax.hlsl 
b/clang/test/CodeGenHLSL/builtins/WaveActiveMax.hlsl
index be05a17cc3692..dac8a7e4296b7 100644
--- a/clang/test/CodeGenHLSL/builtins/WaveActiveMax.hlsl
+++ b/clang/test/CodeGenHLSL/builtins/WaveActiveMax.hlsl
@@ -1,8 +1,8 @@
 // RUN: %clang_cc1 -std=hlsl2021 -finclude-default-header -triple \
-// RUN:   dxil-pc-shadermodel6.3-compute %s -emit-llvm -disable-llvm-passes -o 
- | \
+// RUN:   dxil-pc-shadermodel6.3-library %s -emit-llvm -disable-llvm-passes -o 
- | \
 // RUN:   FileCheck %s --check-prefixes=CHECK,CHECK-DXIL
 // RUN: %clang_cc1 -std=hlsl2021 -finclude-default-header -triple \
-// RUN:   spirv-pc-vulkan-compute %s -emit-llvm -disable-llvm-passes -o - | \
+// RUN:   spirv-pc-vulkan-library %s -emit-llvm -disable-llvm-passes -o - | \
 // RUN:   FileCheck %s --check-prefixes=CHECK,CHECK-SPIRV
 
 // Test basic lowering to runtime function call.
diff...
[truncated]

``````````

</details>


https://github.com/llvm/llvm-project/pull/184892
_______________________________________________
cfe-commits mailing list
[email protected]
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits

Reply via email to