-
Notifications
You must be signed in to change notification settings - Fork 14.2k
Revert "[HLSL][SPIRV] Add vk::constant_id attribute." #144812
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Conversation
This reverts commit acde20b.
@llvm/pr-subscribers-hlsl @llvm/pr-subscribers-clang-codegen Author: Steven Perron (s-perron) ChangesReverts llvm/llvm-project#143544 Patch is 38.46 KiB, truncated to 20.00 KiB below, full version: https://github.com/llvm/llvm-project/pull/144812.diff 15 Files Affected:
diff --git a/clang/include/clang/Basic/Attr.td b/clang/include/clang/Basic/Attr.td
index 27fea7dea0a5e..f113cd2ba2fbf 100644
--- a/clang/include/clang/Basic/Attr.td
+++ b/clang/include/clang/Basic/Attr.td
@@ -5023,14 +5023,6 @@ def HLSLVkExtBuiltinInput : InheritableAttr {
let Documentation = [HLSLVkExtBuiltinInputDocs];
}
-def HLSLVkConstantId : InheritableAttr {
- let Spellings = [CXX11<"vk", "constant_id">];
- let Args = [IntArgument<"Id">];
- let Subjects = SubjectList<[ExternalGlobalVar]>;
- let LangOpts = [HLSL];
- let Documentation = [VkConstantIdDocs];
-}
-
def RandomizeLayout : InheritableAttr {
let Spellings = [GCC<"randomize_layout">];
let Subjects = SubjectList<[Record]>;
diff --git a/clang/include/clang/Basic/AttrDocs.td b/clang/include/clang/Basic/AttrDocs.td
index 43442f177ab7b..6051e1fc45111 100644
--- a/clang/include/clang/Basic/AttrDocs.td
+++ b/clang/include/clang/Basic/AttrDocs.td
@@ -8252,21 +8252,6 @@ and https://microsoft.github.io/hlsl-specs/proposals/0013-wave-size-range.html
}];
}
-def VkConstantIdDocs : Documentation {
- let Category = DocCatFunction;
- let Content = [{
-The ``vk::constant_id`` attribute specifies the id for a SPIR-V specialization
-constant. The attribute applies to const global scalar variables. The variable must be initialized with a C++11 constexpr.
-In SPIR-V, the
-variable will be replaced with an `OpSpecConstant` with the given id.
-The syntax is:
-
-.. code-block:: text
-
- ``[[vk::constant_id(<Id>)]] const T Name = <Init>``
-}];
-}
-
def RootSignatureDocs : Documentation {
let Category = DocCatFunction;
let Content = [{
diff --git a/clang/include/clang/Basic/Builtins.td b/clang/include/clang/Basic/Builtins.td
index d65b3a5d2f447..68cd3d790e78a 100644
--- a/clang/include/clang/Basic/Builtins.td
+++ b/clang/include/clang/Basic/Builtins.td
@@ -5065,19 +5065,6 @@ def HLSLGroupMemoryBarrierWithGroupSync: LangBuiltin<"HLSL_LANG"> {
let Prototype = "void()";
}
-class HLSLScalarTemplate
- : Template<["bool", "char", "short", "int", "long long int",
- "unsigned short", "unsigned int", "unsigned long long int",
- "__fp16", "float", "double"],
- ["_bool", "_char", "_short", "_int", "_longlong", "_ushort",
- "_uint", "_ulonglong", "_half", "_float", "_double"]>;
-
-def HLSLGetSpirvSpecConstant : LangBuiltin<"HLSL_LANG">, HLSLScalarTemplate {
- let Spellings = ["__builtin_get_spirv_spec_constant"];
- let Attributes = [NoThrow, Const, Pure];
- let Prototype = "T(unsigned int, T)";
-}
-
// Builtins for XRay.
def XRayCustomEvent : Builtin {
let Spellings = ["__xray_customevent"];
diff --git a/clang/include/clang/Basic/DiagnosticSemaKinds.td b/clang/include/clang/Basic/DiagnosticSemaKinds.td
index 34b798a09c216..979ff60b73b75 100644
--- a/clang/include/clang/Basic/DiagnosticSemaKinds.td
+++ b/clang/include/clang/Basic/DiagnosticSemaKinds.td
@@ -12927,10 +12927,6 @@ def err_spirv_enum_not_int : Error<
def err_spirv_enum_not_valid : Error<
"invalid value for %select{storage class}0 argument">;
-def err_specialization_const
- : Error<"variable with 'vk::constant_id' attribute must be a const "
- "int/float/enum/bool and be initialized with a literal">;
-
// errors of expect.with.probability
def err_probability_not_constant_float : Error<
"probability argument to __builtin_expect_with_probability must be constant "
diff --git a/clang/include/clang/Sema/SemaHLSL.h b/clang/include/clang/Sema/SemaHLSL.h
index 97091792ba236..33c4b8d1568bf 100644
--- a/clang/include/clang/Sema/SemaHLSL.h
+++ b/clang/include/clang/Sema/SemaHLSL.h
@@ -98,8 +98,6 @@ class SemaHLSL : public SemaBase {
HLSLWaveSizeAttr *mergeWaveSizeAttr(Decl *D, const AttributeCommonInfo &AL,
int Min, int Max, int Preferred,
int SpelledArgsCount);
- HLSLVkConstantIdAttr *
- mergeVkConstantIdAttr(Decl *D, const AttributeCommonInfo &AL, int Id);
HLSLShaderAttr *mergeShaderAttr(Decl *D, const AttributeCommonInfo &AL,
llvm::Triple::EnvironmentType ShaderType);
HLSLParamModifierAttr *
@@ -137,7 +135,6 @@ class SemaHLSL : public SemaBase {
void handleRootSignatureAttr(Decl *D, const ParsedAttr &AL);
void handleNumThreadsAttr(Decl *D, const ParsedAttr &AL);
void handleWaveSizeAttr(Decl *D, const ParsedAttr &AL);
- void handleVkConstantIdAttr(Decl *D, const ParsedAttr &AL);
void handleSV_DispatchThreadIDAttr(Decl *D, const ParsedAttr &AL);
void handleSV_GroupThreadIDAttr(Decl *D, const ParsedAttr &AL);
void handleSV_GroupIDAttr(Decl *D, const ParsedAttr &AL);
@@ -174,7 +171,7 @@ class SemaHLSL : public SemaBase {
QualType getInoutParameterType(QualType Ty);
bool transformInitList(const InitializedEntity &Entity, InitListExpr *Init);
- bool handleInitialization(VarDecl *VDecl, Expr *&Init);
+
void deduceAddressSpace(VarDecl *Decl);
private:
diff --git a/clang/lib/CodeGen/CGHLSLBuiltins.cpp b/clang/lib/CodeGen/CGHLSLBuiltins.cpp
index cbc5ef9cb0d5f..ccf45c0c6ff1d 100644
--- a/clang/lib/CodeGen/CGHLSLBuiltins.cpp
+++ b/clang/lib/CodeGen/CGHLSLBuiltins.cpp
@@ -12,7 +12,6 @@
#include "CGBuiltin.h"
#include "CGHLSLRuntime.h"
-#include "CodeGenFunction.h"
using namespace clang;
using namespace CodeGen;
@@ -215,43 +214,6 @@ static Intrinsic::ID getWaveActiveMaxIntrinsic(llvm::Triple::ArchType Arch,
}
}
-// Returns the mangled name for a builtin function that the SPIR-V backend
-// will expand into a spec Constant.
-static std::string getSpecConstantFunctionName(clang::QualType SpecConstantType,
- ASTContext &Context) {
- // The parameter types for our conceptual intrinsic function.
- QualType ClangParamTypes[] = {Context.IntTy, SpecConstantType};
-
- // Create a temporary FunctionDecl for the builtin fuction. It won't be
- // added to the AST.
- FunctionProtoType::ExtProtoInfo EPI;
- QualType FnType =
- Context.getFunctionType(SpecConstantType, ClangParamTypes, EPI);
- DeclarationName FuncName = &Context.Idents.get("__spirv_SpecConstant");
- FunctionDecl *FnDeclForMangling = FunctionDecl::Create(
- Context, Context.getTranslationUnitDecl(), SourceLocation(),
- SourceLocation(), FuncName, FnType, /*TSI=*/nullptr, SC_Extern);
-
- // Attach the created parameter declarations to the function declaration.
- SmallVector<ParmVarDecl *, 2> ParamDecls;
- for (QualType ParamType : ClangParamTypes) {
- ParmVarDecl *PD = ParmVarDecl::Create(
- Context, FnDeclForMangling, SourceLocation(), SourceLocation(),
- /*IdentifierInfo*/ nullptr, ParamType, /*TSI*/ nullptr, SC_None,
- /*DefaultArg*/ nullptr);
- ParamDecls.push_back(PD);
- }
- FnDeclForMangling->setParams(ParamDecls);
-
- // Get the mangled name.
- std::string Name;
- llvm::raw_string_ostream MangledNameStream(Name);
- MangleContext *Mangler = Context.createMangleContext();
- Mangler->mangleName(FnDeclForMangling, MangledNameStream);
- MangledNameStream.flush();
- return Name;
-}
-
Value *CodeGenFunction::EmitHLSLBuiltinExpr(unsigned BuiltinID,
const CallExpr *E,
ReturnValueSlot ReturnValue) {
@@ -811,42 +773,6 @@ Value *CodeGenFunction::EmitHLSLBuiltinExpr(unsigned BuiltinID,
return EmitRuntimeCall(
Intrinsic::getOrInsertDeclaration(&CGM.getModule(), ID));
}
- case Builtin::BI__builtin_get_spirv_spec_constant_bool:
- case Builtin::BI__builtin_get_spirv_spec_constant_short:
- case Builtin::BI__builtin_get_spirv_spec_constant_ushort:
- case Builtin::BI__builtin_get_spirv_spec_constant_int:
- case Builtin::BI__builtin_get_spirv_spec_constant_uint:
- case Builtin::BI__builtin_get_spirv_spec_constant_longlong:
- case Builtin::BI__builtin_get_spirv_spec_constant_ulonglong:
- case Builtin::BI__builtin_get_spirv_spec_constant_half:
- case Builtin::BI__builtin_get_spirv_spec_constant_float:
- case Builtin::BI__builtin_get_spirv_spec_constant_double: {
- llvm::Function *SpecConstantFn = getSpecConstantFunction(E->getType());
- llvm::Value *SpecId = EmitScalarExpr(E->getArg(0));
- llvm::Value *DefaultVal = EmitScalarExpr(E->getArg(1));
- llvm::Value *Args[] = {SpecId, DefaultVal};
- return Builder.CreateCall(SpecConstantFn, Args);
- }
}
return nullptr;
}
-
-llvm::Function *clang::CodeGen::CodeGenFunction::getSpecConstantFunction(
- const clang::QualType &SpecConstantType) {
-
- // Find or create the declaration for the function.
- llvm::Module *M = &CGM.getModule();
- std::string MangledName =
- getSpecConstantFunctionName(SpecConstantType, getContext());
- llvm::Function *SpecConstantFn = M->getFunction(MangledName);
-
- if (!SpecConstantFn) {
- llvm::Type *IntType = ConvertType(getContext().IntTy);
- llvm::Type *RetTy = ConvertType(SpecConstantType);
- llvm::Type *ArgTypes[] = {IntType, RetTy};
- llvm::FunctionType *FnTy = llvm::FunctionType::get(RetTy, ArgTypes, false);
- SpecConstantFn = llvm::Function::Create(
- FnTy, llvm::GlobalValue::ExternalLinkage, MangledName, M);
- }
- return SpecConstantFn;
-}
diff --git a/clang/lib/CodeGen/CodeGenFunction.h b/clang/lib/CodeGen/CodeGenFunction.h
index 59f14b3e35fd0..a5ab9df01dba9 100644
--- a/clang/lib/CodeGen/CodeGenFunction.h
+++ b/clang/lib/CodeGen/CodeGenFunction.h
@@ -4850,12 +4850,6 @@ class CodeGenFunction : public CodeGenTypeCache {
llvm::Value *EmitAMDGPUBuiltinExpr(unsigned BuiltinID, const CallExpr *E);
llvm::Value *EmitHLSLBuiltinExpr(unsigned BuiltinID, const CallExpr *E,
ReturnValueSlot ReturnValue);
-
- // Returns a builtin function that the SPIR-V backend will expand into a spec
- // constant.
- llvm::Function *
- getSpecConstantFunction(const clang::QualType &SpecConstantType);
-
llvm::Value *EmitDirectXBuiltinExpr(unsigned BuiltinID, const CallExpr *E);
llvm::Value *EmitSPIRVBuiltinExpr(unsigned BuiltinID, const CallExpr *E);
llvm::Value *EmitScalarOrConstFoldImmArg(unsigned ICEArguments, unsigned Idx,
diff --git a/clang/lib/Sema/SemaDecl.cpp b/clang/lib/Sema/SemaDecl.cpp
index e1cccf068b5aa..1bf72e5bb7b9d 100644
--- a/clang/lib/Sema/SemaDecl.cpp
+++ b/clang/lib/Sema/SemaDecl.cpp
@@ -2890,8 +2890,6 @@ static bool mergeDeclAttribute(Sema &S, NamedDecl *D,
NewAttr = S.HLSL().mergeWaveSizeAttr(D, *WS, WS->getMin(), WS->getMax(),
WS->getPreferred(),
WS->getSpelledArgsCount());
- else if (const auto *CI = dyn_cast<HLSLVkConstantIdAttr>(Attr))
- NewAttr = S.HLSL().mergeVkConstantIdAttr(D, *CI, CI->getId());
else if (const auto *SA = dyn_cast<HLSLShaderAttr>(Attr))
NewAttr = S.HLSL().mergeShaderAttr(D, *SA, SA->getType());
else if (isa<SuppressAttr>(Attr))
@@ -13759,10 +13757,6 @@ void Sema::AddInitializerToDecl(Decl *RealDecl, Expr *Init, bool DirectInit) {
return;
}
- if (getLangOpts().HLSL)
- if (!HLSL().handleInitialization(VDecl, Init))
- return;
-
// Get the decls type and save a reference for later, since
// CheckInitializerTypes may change it.
QualType DclT = VDecl->getType(), SavT = DclT;
@@ -14185,13 +14179,6 @@ void Sema::ActOnUninitializedDecl(Decl *RealDecl) {
}
}
- // HLSL variable with the `vk::constant_id` attribute must be initialized.
- if (!Var->isInvalidDecl() && Var->hasAttr<HLSLVkConstantIdAttr>()) {
- Diag(Var->getLocation(), diag::err_specialization_const);
- Var->setInvalidDecl();
- return;
- }
-
if (!Var->isInvalidDecl() && RealDecl->hasAttr<LoaderUninitializedAttr>()) {
if (Var->getStorageClass() == SC_Extern) {
Diag(Var->getLocation(), diag::err_loader_uninitialized_extern_decl)
diff --git a/clang/lib/Sema/SemaDeclAttr.cpp b/clang/lib/Sema/SemaDeclAttr.cpp
index eba29e609cb05..1c2fa80e782d4 100644
--- a/clang/lib/Sema/SemaDeclAttr.cpp
+++ b/clang/lib/Sema/SemaDeclAttr.cpp
@@ -7590,9 +7590,6 @@ ProcessDeclAttribute(Sema &S, Scope *scope, Decl *D, const ParsedAttr &AL,
case ParsedAttr::AT_HLSLVkExtBuiltinInput:
S.HLSL().handleVkExtBuiltinInputAttr(D, AL);
break;
- case ParsedAttr::AT_HLSLVkConstantId:
- S.HLSL().handleVkConstantIdAttr(D, AL);
- break;
case ParsedAttr::AT_HLSLSV_GroupThreadID:
S.HLSL().handleSV_GroupThreadIDAttr(D, AL);
break;
diff --git a/clang/lib/Sema/SemaHLSL.cpp b/clang/lib/Sema/SemaHLSL.cpp
index 9b43ee00810b2..b55f4fd786b58 100644
--- a/clang/lib/Sema/SemaHLSL.cpp
+++ b/clang/lib/Sema/SemaHLSL.cpp
@@ -119,40 +119,6 @@ static ResourceClass getResourceClass(RegisterType RT) {
llvm_unreachable("unexpected RegisterType value");
}
-static Builtin::ID getSpecConstBuiltinId(QualType Type) {
- const auto *BT = dyn_cast<BuiltinType>(Type);
- if (!BT) {
- if (!Type->isEnumeralType())
- return Builtin::NotBuiltin;
- return Builtin::BI__builtin_get_spirv_spec_constant_int;
- }
-
- switch (BT->getKind()) {
- case BuiltinType::Bool:
- return Builtin::BI__builtin_get_spirv_spec_constant_bool;
- case BuiltinType::Short:
- return Builtin::BI__builtin_get_spirv_spec_constant_short;
- case BuiltinType::Int:
- return Builtin::BI__builtin_get_spirv_spec_constant_int;
- case BuiltinType::LongLong:
- return Builtin::BI__builtin_get_spirv_spec_constant_longlong;
- case BuiltinType::UShort:
- return Builtin::BI__builtin_get_spirv_spec_constant_ushort;
- case BuiltinType::UInt:
- return Builtin::BI__builtin_get_spirv_spec_constant_uint;
- case BuiltinType::ULongLong:
- return Builtin::BI__builtin_get_spirv_spec_constant_ulonglong;
- case BuiltinType::Half:
- return Builtin::BI__builtin_get_spirv_spec_constant_half;
- case BuiltinType::Float:
- return Builtin::BI__builtin_get_spirv_spec_constant_float;
- case BuiltinType::Double:
- return Builtin::BI__builtin_get_spirv_spec_constant_double;
- default:
- return Builtin::NotBuiltin;
- }
-}
-
DeclBindingInfo *ResourceBindings::addDeclBindingInfo(const VarDecl *VD,
ResourceClass ResClass) {
assert(getDeclBindingInfo(VD, ResClass) == nullptr &&
@@ -641,41 +607,6 @@ HLSLWaveSizeAttr *SemaHLSL::mergeWaveSizeAttr(Decl *D,
return Result;
}
-HLSLVkConstantIdAttr *
-SemaHLSL::mergeVkConstantIdAttr(Decl *D, const AttributeCommonInfo &AL,
- int Id) {
-
- auto &TargetInfo = getASTContext().getTargetInfo();
- if (TargetInfo.getTriple().getArch() != llvm::Triple::spirv) {
- Diag(AL.getLoc(), diag::warn_attribute_ignored) << AL;
- return nullptr;
- }
-
- auto *VD = cast<VarDecl>(D);
-
- if (getSpecConstBuiltinId(VD->getType()) == Builtin::NotBuiltin) {
- Diag(VD->getLocation(), diag::err_specialization_const);
- return nullptr;
- }
-
- if (!VD->getType().isConstQualified()) {
- Diag(VD->getLocation(), diag::err_specialization_const);
- return nullptr;
- }
-
- if (HLSLVkConstantIdAttr *CI = D->getAttr<HLSLVkConstantIdAttr>()) {
- if (CI->getId() != Id) {
- Diag(CI->getLocation(), diag::err_hlsl_attribute_param_mismatch) << AL;
- Diag(AL.getLoc(), diag::note_conflicting_attribute);
- }
- return nullptr;
- }
-
- HLSLVkConstantIdAttr *Result =
- ::new (getASTContext()) HLSLVkConstantIdAttr(getASTContext(), AL, Id);
- return Result;
-}
-
HLSLShaderAttr *
SemaHLSL::mergeShaderAttr(Decl *D, const AttributeCommonInfo &AL,
llvm::Triple::EnvironmentType ShaderType) {
@@ -1226,15 +1157,6 @@ void SemaHLSL::handleVkExtBuiltinInputAttr(Decl *D, const ParsedAttr &AL) {
HLSLVkExtBuiltinInputAttr(getASTContext(), AL, ID));
}
-void SemaHLSL::handleVkConstantIdAttr(Decl *D, const ParsedAttr &AL) {
- uint32_t Id;
- if (!SemaRef.checkUInt32Argument(AL, AL.getArgAsExpr(0), Id))
- return;
- HLSLVkConstantIdAttr *NewAttr = mergeVkConstantIdAttr(D, AL, Id);
- if (NewAttr)
- D->addAttr(NewAttr);
-}
-
bool SemaHLSL::diagnoseInputIDType(QualType T, const ParsedAttr &AL) {
const auto *VT = T->getAs<VectorType>();
@@ -3284,7 +3206,6 @@ static bool IsDefaultBufferConstantDecl(VarDecl *VD) {
return VD->getDeclContext()->isTranslationUnit() &&
QT.getAddressSpace() == LangAS::Default &&
VD->getStorageClass() != SC_Static &&
- !VD->hasAttr<HLSLVkConstantIdAttr>() &&
!isInvalidConstantBufferLeafElementType(QT.getTypePtr());
}
@@ -3352,8 +3273,7 @@ void SemaHLSL::ActOnVariableDeclarator(VarDecl *VD) {
const Type *VarType = VD->getType().getTypePtr();
while (VarType->isArrayType())
VarType = VarType->getArrayElementTypeNoTypeQual();
- if (VarType->isHLSLResourceRecord() ||
- VD->hasAttr<HLSLVkConstantIdAttr>()) {
+ if (VarType->isHLSLResourceRecord()) {
// Make the variable for resources static. The global externally visible
// storage is accessed through the handle, which is a member. The variable
// itself is not externally visible.
@@ -3776,41 +3696,3 @@ bool SemaHLSL::transformInitList(const InitializedEntity &Entity,
Init->updateInit(Ctx, I, NewInit->getInit(I));
return true;
}
-
-bool SemaHLSL::handleInitialization(VarDecl *VDecl, Expr *&Init) {
- const HLSLVkConstantIdAttr *ConstIdAttr =
- VDecl->getAttr<HLSLVkConstantIdAttr>();
- if (!ConstIdAttr)
- return true;
-
- ASTContext &Context = SemaRef.getASTContext();
-
- APValue InitValue;
- if (!Init->isCXX11ConstantExpr(Context, &InitValue)) {
- Diag(VDecl->getLocation(), diag::err_specialization_const);
- VDecl->setInvalidDecl();
- return false;
- }
-
- Builtin::ID BID = getSpecConstBuiltinId(VDecl->getType());
-
- // Argument 1: The ID from the attribute
- int ConstantID = ConstIdAttr->getId();
- llvm::APInt IDVal(Context.getIntWidth(Context.IntTy), ConstantID);
- Expr *IdExpr = IntegerLiteral::Create(Context, IDVal, Context.IntTy,
- ConstIdAttr->getLocation());
-
- SmallVector<Expr *, 2> Args = {IdExpr, Init};
- Expr *C = SemaRef.BuildBuiltinCallExpr(Init->getExprLoc(), BID, Args);
- if (C->getType()->getCanonicalTypeUnqualified() !=
- VDecl->getType()->getCanonicalTypeUnqualified()) {
- C = SemaRef
- .BuildCStyleCastExpr(SourceLocation(),
- Context.getTrivialTypeSourceInfo(
- Init->getType(), Init->getExprLoc()),
- SourceLocation(), C)
- .get();
- }
- Init = C;
- return true;
-}
diff --git a/clang/test/AST/HLSL/vk.spec-constant.usage.hlsl b/clang/test/AST/HLSL/vk.spec-constant.usage.hlsl
deleted file mode 100644
index c0955c1ea7b43..0000000000000
--- a/clang/test/AST/HLSL/vk.spec-constant.usage.hlsl
+++ /dev/null
@@ -1,130 +0,0 @@
-// RUN: %clang_cc1 -finclude-default-header -triple spirv-unknown-vulkan-compute -x hlsl -ast-dump -o - %s | FileCheck %s
-
-// CHECK: VarDecl {{.*}} bool_const 'const hlsl_private bool' static cinit
-// CHECK-NEXT: CallExpr {{.*}} 'bool'
-// CHECK-NEXT: ImplicitCastExpr {{.*}} 'bool (*)(unsigned int, bool) noexcept' <FunctionToPointerDecay>
-// CHECK-NEXT: DeclRefExpr {{.*}} 'bool (unsigned int, bool) noexcept' lvalue Function {{.*}} '__builtin_get_spirv_spec_constant_bool' 'bool (unsigned int, bool) noexcept'
-// CHECK-NEXT: ImplicitCastExpr {{.*}} 'unsigned int' <IntegralCast>
-// CHECK-NEXT: IntegerLiteral {{.*}} 'int' 1
-// CHECK-NEXT: CXXBoolLiteralExpr {{.*}} 'bool' true
-[[vk::constant_id(1)]]
-const bool bool_const = true;
-
-// CHECK: VarDecl {{.*}} short_const 'const hlsl_private short' static cinit
-// CHECK-NEXT: CallExpr {{.*}} 'short'
-// CHECK-NEXT: ImplicitCastExpr {{.*}} 'short (*)(unsigned int, short) noexcept' <FunctionToPointerDecay>
-// CHECK-NEXT: DeclRefExpr {{.*}} 'short (unsigned int, short) noexcept' lvalue Function {{.*}} '__builtin_get_spirv_spec_constant_short' 'short (unsigned int, short) noexcept'
-// CHECK-NEXT: ImplicitCastExpr {{.*}} 'unsigned int' <IntegralCast>
-// CHECK-NEXT: IntegerLiteral {{.*}} 'int' 2
-// CHECK-NEXT: ImplicitCastExpr {{.*}} 'short' <IntegralCast>
-// CHECK-NEXT: IntegerLiteral {{.*}} 'int' 4
-[[vk::constant_id(2)]]
-const short short_const = 4;
-
-// CHECK: VarDecl {{.*}} int_const 'const hlsl_private int' static cinit
-// ...
[truncated]
|
@llvm/pr-subscribers-clang Author: Steven Perron (s-perron) ChangesReverts llvm/llvm-project#143544 Patch is 38.46 KiB, truncated to 20.00 KiB below, full version: https://github.com/llvm/llvm-project/pull/144812.diff 15 Files Affected:
diff --git a/clang/include/clang/Basic/Attr.td b/clang/include/clang/Basic/Attr.td
index 27fea7dea0a5e..f113cd2ba2fbf 100644
--- a/clang/include/clang/Basic/Attr.td
+++ b/clang/include/clang/Basic/Attr.td
@@ -5023,14 +5023,6 @@ def HLSLVkExtBuiltinInput : InheritableAttr {
let Documentation = [HLSLVkExtBuiltinInputDocs];
}
-def HLSLVkConstantId : InheritableAttr {
- let Spellings = [CXX11<"vk", "constant_id">];
- let Args = [IntArgument<"Id">];
- let Subjects = SubjectList<[ExternalGlobalVar]>;
- let LangOpts = [HLSL];
- let Documentation = [VkConstantIdDocs];
-}
-
def RandomizeLayout : InheritableAttr {
let Spellings = [GCC<"randomize_layout">];
let Subjects = SubjectList<[Record]>;
diff --git a/clang/include/clang/Basic/AttrDocs.td b/clang/include/clang/Basic/AttrDocs.td
index 43442f177ab7b..6051e1fc45111 100644
--- a/clang/include/clang/Basic/AttrDocs.td
+++ b/clang/include/clang/Basic/AttrDocs.td
@@ -8252,21 +8252,6 @@ and https://microsoft.github.io/hlsl-specs/proposals/0013-wave-size-range.html
}];
}
-def VkConstantIdDocs : Documentation {
- let Category = DocCatFunction;
- let Content = [{
-The ``vk::constant_id`` attribute specifies the id for a SPIR-V specialization
-constant. The attribute applies to const global scalar variables. The variable must be initialized with a C++11 constexpr.
-In SPIR-V, the
-variable will be replaced with an `OpSpecConstant` with the given id.
-The syntax is:
-
-.. code-block:: text
-
- ``[[vk::constant_id(<Id>)]] const T Name = <Init>``
-}];
-}
-
def RootSignatureDocs : Documentation {
let Category = DocCatFunction;
let Content = [{
diff --git a/clang/include/clang/Basic/Builtins.td b/clang/include/clang/Basic/Builtins.td
index d65b3a5d2f447..68cd3d790e78a 100644
--- a/clang/include/clang/Basic/Builtins.td
+++ b/clang/include/clang/Basic/Builtins.td
@@ -5065,19 +5065,6 @@ def HLSLGroupMemoryBarrierWithGroupSync: LangBuiltin<"HLSL_LANG"> {
let Prototype = "void()";
}
-class HLSLScalarTemplate
- : Template<["bool", "char", "short", "int", "long long int",
- "unsigned short", "unsigned int", "unsigned long long int",
- "__fp16", "float", "double"],
- ["_bool", "_char", "_short", "_int", "_longlong", "_ushort",
- "_uint", "_ulonglong", "_half", "_float", "_double"]>;
-
-def HLSLGetSpirvSpecConstant : LangBuiltin<"HLSL_LANG">, HLSLScalarTemplate {
- let Spellings = ["__builtin_get_spirv_spec_constant"];
- let Attributes = [NoThrow, Const, Pure];
- let Prototype = "T(unsigned int, T)";
-}
-
// Builtins for XRay.
def XRayCustomEvent : Builtin {
let Spellings = ["__xray_customevent"];
diff --git a/clang/include/clang/Basic/DiagnosticSemaKinds.td b/clang/include/clang/Basic/DiagnosticSemaKinds.td
index 34b798a09c216..979ff60b73b75 100644
--- a/clang/include/clang/Basic/DiagnosticSemaKinds.td
+++ b/clang/include/clang/Basic/DiagnosticSemaKinds.td
@@ -12927,10 +12927,6 @@ def err_spirv_enum_not_int : Error<
def err_spirv_enum_not_valid : Error<
"invalid value for %select{storage class}0 argument">;
-def err_specialization_const
- : Error<"variable with 'vk::constant_id' attribute must be a const "
- "int/float/enum/bool and be initialized with a literal">;
-
// errors of expect.with.probability
def err_probability_not_constant_float : Error<
"probability argument to __builtin_expect_with_probability must be constant "
diff --git a/clang/include/clang/Sema/SemaHLSL.h b/clang/include/clang/Sema/SemaHLSL.h
index 97091792ba236..33c4b8d1568bf 100644
--- a/clang/include/clang/Sema/SemaHLSL.h
+++ b/clang/include/clang/Sema/SemaHLSL.h
@@ -98,8 +98,6 @@ class SemaHLSL : public SemaBase {
HLSLWaveSizeAttr *mergeWaveSizeAttr(Decl *D, const AttributeCommonInfo &AL,
int Min, int Max, int Preferred,
int SpelledArgsCount);
- HLSLVkConstantIdAttr *
- mergeVkConstantIdAttr(Decl *D, const AttributeCommonInfo &AL, int Id);
HLSLShaderAttr *mergeShaderAttr(Decl *D, const AttributeCommonInfo &AL,
llvm::Triple::EnvironmentType ShaderType);
HLSLParamModifierAttr *
@@ -137,7 +135,6 @@ class SemaHLSL : public SemaBase {
void handleRootSignatureAttr(Decl *D, const ParsedAttr &AL);
void handleNumThreadsAttr(Decl *D, const ParsedAttr &AL);
void handleWaveSizeAttr(Decl *D, const ParsedAttr &AL);
- void handleVkConstantIdAttr(Decl *D, const ParsedAttr &AL);
void handleSV_DispatchThreadIDAttr(Decl *D, const ParsedAttr &AL);
void handleSV_GroupThreadIDAttr(Decl *D, const ParsedAttr &AL);
void handleSV_GroupIDAttr(Decl *D, const ParsedAttr &AL);
@@ -174,7 +171,7 @@ class SemaHLSL : public SemaBase {
QualType getInoutParameterType(QualType Ty);
bool transformInitList(const InitializedEntity &Entity, InitListExpr *Init);
- bool handleInitialization(VarDecl *VDecl, Expr *&Init);
+
void deduceAddressSpace(VarDecl *Decl);
private:
diff --git a/clang/lib/CodeGen/CGHLSLBuiltins.cpp b/clang/lib/CodeGen/CGHLSLBuiltins.cpp
index cbc5ef9cb0d5f..ccf45c0c6ff1d 100644
--- a/clang/lib/CodeGen/CGHLSLBuiltins.cpp
+++ b/clang/lib/CodeGen/CGHLSLBuiltins.cpp
@@ -12,7 +12,6 @@
#include "CGBuiltin.h"
#include "CGHLSLRuntime.h"
-#include "CodeGenFunction.h"
using namespace clang;
using namespace CodeGen;
@@ -215,43 +214,6 @@ static Intrinsic::ID getWaveActiveMaxIntrinsic(llvm::Triple::ArchType Arch,
}
}
-// Returns the mangled name for a builtin function that the SPIR-V backend
-// will expand into a spec Constant.
-static std::string getSpecConstantFunctionName(clang::QualType SpecConstantType,
- ASTContext &Context) {
- // The parameter types for our conceptual intrinsic function.
- QualType ClangParamTypes[] = {Context.IntTy, SpecConstantType};
-
- // Create a temporary FunctionDecl for the builtin fuction. It won't be
- // added to the AST.
- FunctionProtoType::ExtProtoInfo EPI;
- QualType FnType =
- Context.getFunctionType(SpecConstantType, ClangParamTypes, EPI);
- DeclarationName FuncName = &Context.Idents.get("__spirv_SpecConstant");
- FunctionDecl *FnDeclForMangling = FunctionDecl::Create(
- Context, Context.getTranslationUnitDecl(), SourceLocation(),
- SourceLocation(), FuncName, FnType, /*TSI=*/nullptr, SC_Extern);
-
- // Attach the created parameter declarations to the function declaration.
- SmallVector<ParmVarDecl *, 2> ParamDecls;
- for (QualType ParamType : ClangParamTypes) {
- ParmVarDecl *PD = ParmVarDecl::Create(
- Context, FnDeclForMangling, SourceLocation(), SourceLocation(),
- /*IdentifierInfo*/ nullptr, ParamType, /*TSI*/ nullptr, SC_None,
- /*DefaultArg*/ nullptr);
- ParamDecls.push_back(PD);
- }
- FnDeclForMangling->setParams(ParamDecls);
-
- // Get the mangled name.
- std::string Name;
- llvm::raw_string_ostream MangledNameStream(Name);
- MangleContext *Mangler = Context.createMangleContext();
- Mangler->mangleName(FnDeclForMangling, MangledNameStream);
- MangledNameStream.flush();
- return Name;
-}
-
Value *CodeGenFunction::EmitHLSLBuiltinExpr(unsigned BuiltinID,
const CallExpr *E,
ReturnValueSlot ReturnValue) {
@@ -811,42 +773,6 @@ Value *CodeGenFunction::EmitHLSLBuiltinExpr(unsigned BuiltinID,
return EmitRuntimeCall(
Intrinsic::getOrInsertDeclaration(&CGM.getModule(), ID));
}
- case Builtin::BI__builtin_get_spirv_spec_constant_bool:
- case Builtin::BI__builtin_get_spirv_spec_constant_short:
- case Builtin::BI__builtin_get_spirv_spec_constant_ushort:
- case Builtin::BI__builtin_get_spirv_spec_constant_int:
- case Builtin::BI__builtin_get_spirv_spec_constant_uint:
- case Builtin::BI__builtin_get_spirv_spec_constant_longlong:
- case Builtin::BI__builtin_get_spirv_spec_constant_ulonglong:
- case Builtin::BI__builtin_get_spirv_spec_constant_half:
- case Builtin::BI__builtin_get_spirv_spec_constant_float:
- case Builtin::BI__builtin_get_spirv_spec_constant_double: {
- llvm::Function *SpecConstantFn = getSpecConstantFunction(E->getType());
- llvm::Value *SpecId = EmitScalarExpr(E->getArg(0));
- llvm::Value *DefaultVal = EmitScalarExpr(E->getArg(1));
- llvm::Value *Args[] = {SpecId, DefaultVal};
- return Builder.CreateCall(SpecConstantFn, Args);
- }
}
return nullptr;
}
-
-llvm::Function *clang::CodeGen::CodeGenFunction::getSpecConstantFunction(
- const clang::QualType &SpecConstantType) {
-
- // Find or create the declaration for the function.
- llvm::Module *M = &CGM.getModule();
- std::string MangledName =
- getSpecConstantFunctionName(SpecConstantType, getContext());
- llvm::Function *SpecConstantFn = M->getFunction(MangledName);
-
- if (!SpecConstantFn) {
- llvm::Type *IntType = ConvertType(getContext().IntTy);
- llvm::Type *RetTy = ConvertType(SpecConstantType);
- llvm::Type *ArgTypes[] = {IntType, RetTy};
- llvm::FunctionType *FnTy = llvm::FunctionType::get(RetTy, ArgTypes, false);
- SpecConstantFn = llvm::Function::Create(
- FnTy, llvm::GlobalValue::ExternalLinkage, MangledName, M);
- }
- return SpecConstantFn;
-}
diff --git a/clang/lib/CodeGen/CodeGenFunction.h b/clang/lib/CodeGen/CodeGenFunction.h
index 59f14b3e35fd0..a5ab9df01dba9 100644
--- a/clang/lib/CodeGen/CodeGenFunction.h
+++ b/clang/lib/CodeGen/CodeGenFunction.h
@@ -4850,12 +4850,6 @@ class CodeGenFunction : public CodeGenTypeCache {
llvm::Value *EmitAMDGPUBuiltinExpr(unsigned BuiltinID, const CallExpr *E);
llvm::Value *EmitHLSLBuiltinExpr(unsigned BuiltinID, const CallExpr *E,
ReturnValueSlot ReturnValue);
-
- // Returns a builtin function that the SPIR-V backend will expand into a spec
- // constant.
- llvm::Function *
- getSpecConstantFunction(const clang::QualType &SpecConstantType);
-
llvm::Value *EmitDirectXBuiltinExpr(unsigned BuiltinID, const CallExpr *E);
llvm::Value *EmitSPIRVBuiltinExpr(unsigned BuiltinID, const CallExpr *E);
llvm::Value *EmitScalarOrConstFoldImmArg(unsigned ICEArguments, unsigned Idx,
diff --git a/clang/lib/Sema/SemaDecl.cpp b/clang/lib/Sema/SemaDecl.cpp
index e1cccf068b5aa..1bf72e5bb7b9d 100644
--- a/clang/lib/Sema/SemaDecl.cpp
+++ b/clang/lib/Sema/SemaDecl.cpp
@@ -2890,8 +2890,6 @@ static bool mergeDeclAttribute(Sema &S, NamedDecl *D,
NewAttr = S.HLSL().mergeWaveSizeAttr(D, *WS, WS->getMin(), WS->getMax(),
WS->getPreferred(),
WS->getSpelledArgsCount());
- else if (const auto *CI = dyn_cast<HLSLVkConstantIdAttr>(Attr))
- NewAttr = S.HLSL().mergeVkConstantIdAttr(D, *CI, CI->getId());
else if (const auto *SA = dyn_cast<HLSLShaderAttr>(Attr))
NewAttr = S.HLSL().mergeShaderAttr(D, *SA, SA->getType());
else if (isa<SuppressAttr>(Attr))
@@ -13759,10 +13757,6 @@ void Sema::AddInitializerToDecl(Decl *RealDecl, Expr *Init, bool DirectInit) {
return;
}
- if (getLangOpts().HLSL)
- if (!HLSL().handleInitialization(VDecl, Init))
- return;
-
// Get the decls type and save a reference for later, since
// CheckInitializerTypes may change it.
QualType DclT = VDecl->getType(), SavT = DclT;
@@ -14185,13 +14179,6 @@ void Sema::ActOnUninitializedDecl(Decl *RealDecl) {
}
}
- // HLSL variable with the `vk::constant_id` attribute must be initialized.
- if (!Var->isInvalidDecl() && Var->hasAttr<HLSLVkConstantIdAttr>()) {
- Diag(Var->getLocation(), diag::err_specialization_const);
- Var->setInvalidDecl();
- return;
- }
-
if (!Var->isInvalidDecl() && RealDecl->hasAttr<LoaderUninitializedAttr>()) {
if (Var->getStorageClass() == SC_Extern) {
Diag(Var->getLocation(), diag::err_loader_uninitialized_extern_decl)
diff --git a/clang/lib/Sema/SemaDeclAttr.cpp b/clang/lib/Sema/SemaDeclAttr.cpp
index eba29e609cb05..1c2fa80e782d4 100644
--- a/clang/lib/Sema/SemaDeclAttr.cpp
+++ b/clang/lib/Sema/SemaDeclAttr.cpp
@@ -7590,9 +7590,6 @@ ProcessDeclAttribute(Sema &S, Scope *scope, Decl *D, const ParsedAttr &AL,
case ParsedAttr::AT_HLSLVkExtBuiltinInput:
S.HLSL().handleVkExtBuiltinInputAttr(D, AL);
break;
- case ParsedAttr::AT_HLSLVkConstantId:
- S.HLSL().handleVkConstantIdAttr(D, AL);
- break;
case ParsedAttr::AT_HLSLSV_GroupThreadID:
S.HLSL().handleSV_GroupThreadIDAttr(D, AL);
break;
diff --git a/clang/lib/Sema/SemaHLSL.cpp b/clang/lib/Sema/SemaHLSL.cpp
index 9b43ee00810b2..b55f4fd786b58 100644
--- a/clang/lib/Sema/SemaHLSL.cpp
+++ b/clang/lib/Sema/SemaHLSL.cpp
@@ -119,40 +119,6 @@ static ResourceClass getResourceClass(RegisterType RT) {
llvm_unreachable("unexpected RegisterType value");
}
-static Builtin::ID getSpecConstBuiltinId(QualType Type) {
- const auto *BT = dyn_cast<BuiltinType>(Type);
- if (!BT) {
- if (!Type->isEnumeralType())
- return Builtin::NotBuiltin;
- return Builtin::BI__builtin_get_spirv_spec_constant_int;
- }
-
- switch (BT->getKind()) {
- case BuiltinType::Bool:
- return Builtin::BI__builtin_get_spirv_spec_constant_bool;
- case BuiltinType::Short:
- return Builtin::BI__builtin_get_spirv_spec_constant_short;
- case BuiltinType::Int:
- return Builtin::BI__builtin_get_spirv_spec_constant_int;
- case BuiltinType::LongLong:
- return Builtin::BI__builtin_get_spirv_spec_constant_longlong;
- case BuiltinType::UShort:
- return Builtin::BI__builtin_get_spirv_spec_constant_ushort;
- case BuiltinType::UInt:
- return Builtin::BI__builtin_get_spirv_spec_constant_uint;
- case BuiltinType::ULongLong:
- return Builtin::BI__builtin_get_spirv_spec_constant_ulonglong;
- case BuiltinType::Half:
- return Builtin::BI__builtin_get_spirv_spec_constant_half;
- case BuiltinType::Float:
- return Builtin::BI__builtin_get_spirv_spec_constant_float;
- case BuiltinType::Double:
- return Builtin::BI__builtin_get_spirv_spec_constant_double;
- default:
- return Builtin::NotBuiltin;
- }
-}
-
DeclBindingInfo *ResourceBindings::addDeclBindingInfo(const VarDecl *VD,
ResourceClass ResClass) {
assert(getDeclBindingInfo(VD, ResClass) == nullptr &&
@@ -641,41 +607,6 @@ HLSLWaveSizeAttr *SemaHLSL::mergeWaveSizeAttr(Decl *D,
return Result;
}
-HLSLVkConstantIdAttr *
-SemaHLSL::mergeVkConstantIdAttr(Decl *D, const AttributeCommonInfo &AL,
- int Id) {
-
- auto &TargetInfo = getASTContext().getTargetInfo();
- if (TargetInfo.getTriple().getArch() != llvm::Triple::spirv) {
- Diag(AL.getLoc(), diag::warn_attribute_ignored) << AL;
- return nullptr;
- }
-
- auto *VD = cast<VarDecl>(D);
-
- if (getSpecConstBuiltinId(VD->getType()) == Builtin::NotBuiltin) {
- Diag(VD->getLocation(), diag::err_specialization_const);
- return nullptr;
- }
-
- if (!VD->getType().isConstQualified()) {
- Diag(VD->getLocation(), diag::err_specialization_const);
- return nullptr;
- }
-
- if (HLSLVkConstantIdAttr *CI = D->getAttr<HLSLVkConstantIdAttr>()) {
- if (CI->getId() != Id) {
- Diag(CI->getLocation(), diag::err_hlsl_attribute_param_mismatch) << AL;
- Diag(AL.getLoc(), diag::note_conflicting_attribute);
- }
- return nullptr;
- }
-
- HLSLVkConstantIdAttr *Result =
- ::new (getASTContext()) HLSLVkConstantIdAttr(getASTContext(), AL, Id);
- return Result;
-}
-
HLSLShaderAttr *
SemaHLSL::mergeShaderAttr(Decl *D, const AttributeCommonInfo &AL,
llvm::Triple::EnvironmentType ShaderType) {
@@ -1226,15 +1157,6 @@ void SemaHLSL::handleVkExtBuiltinInputAttr(Decl *D, const ParsedAttr &AL) {
HLSLVkExtBuiltinInputAttr(getASTContext(), AL, ID));
}
-void SemaHLSL::handleVkConstantIdAttr(Decl *D, const ParsedAttr &AL) {
- uint32_t Id;
- if (!SemaRef.checkUInt32Argument(AL, AL.getArgAsExpr(0), Id))
- return;
- HLSLVkConstantIdAttr *NewAttr = mergeVkConstantIdAttr(D, AL, Id);
- if (NewAttr)
- D->addAttr(NewAttr);
-}
-
bool SemaHLSL::diagnoseInputIDType(QualType T, const ParsedAttr &AL) {
const auto *VT = T->getAs<VectorType>();
@@ -3284,7 +3206,6 @@ static bool IsDefaultBufferConstantDecl(VarDecl *VD) {
return VD->getDeclContext()->isTranslationUnit() &&
QT.getAddressSpace() == LangAS::Default &&
VD->getStorageClass() != SC_Static &&
- !VD->hasAttr<HLSLVkConstantIdAttr>() &&
!isInvalidConstantBufferLeafElementType(QT.getTypePtr());
}
@@ -3352,8 +3273,7 @@ void SemaHLSL::ActOnVariableDeclarator(VarDecl *VD) {
const Type *VarType = VD->getType().getTypePtr();
while (VarType->isArrayType())
VarType = VarType->getArrayElementTypeNoTypeQual();
- if (VarType->isHLSLResourceRecord() ||
- VD->hasAttr<HLSLVkConstantIdAttr>()) {
+ if (VarType->isHLSLResourceRecord()) {
// Make the variable for resources static. The global externally visible
// storage is accessed through the handle, which is a member. The variable
// itself is not externally visible.
@@ -3776,41 +3696,3 @@ bool SemaHLSL::transformInitList(const InitializedEntity &Entity,
Init->updateInit(Ctx, I, NewInit->getInit(I));
return true;
}
-
-bool SemaHLSL::handleInitialization(VarDecl *VDecl, Expr *&Init) {
- const HLSLVkConstantIdAttr *ConstIdAttr =
- VDecl->getAttr<HLSLVkConstantIdAttr>();
- if (!ConstIdAttr)
- return true;
-
- ASTContext &Context = SemaRef.getASTContext();
-
- APValue InitValue;
- if (!Init->isCXX11ConstantExpr(Context, &InitValue)) {
- Diag(VDecl->getLocation(), diag::err_specialization_const);
- VDecl->setInvalidDecl();
- return false;
- }
-
- Builtin::ID BID = getSpecConstBuiltinId(VDecl->getType());
-
- // Argument 1: The ID from the attribute
- int ConstantID = ConstIdAttr->getId();
- llvm::APInt IDVal(Context.getIntWidth(Context.IntTy), ConstantID);
- Expr *IdExpr = IntegerLiteral::Create(Context, IDVal, Context.IntTy,
- ConstIdAttr->getLocation());
-
- SmallVector<Expr *, 2> Args = {IdExpr, Init};
- Expr *C = SemaRef.BuildBuiltinCallExpr(Init->getExprLoc(), BID, Args);
- if (C->getType()->getCanonicalTypeUnqualified() !=
- VDecl->getType()->getCanonicalTypeUnqualified()) {
- C = SemaRef
- .BuildCStyleCastExpr(SourceLocation(),
- Context.getTrivialTypeSourceInfo(
- Init->getType(), Init->getExprLoc()),
- SourceLocation(), C)
- .get();
- }
- Init = C;
- return true;
-}
diff --git a/clang/test/AST/HLSL/vk.spec-constant.usage.hlsl b/clang/test/AST/HLSL/vk.spec-constant.usage.hlsl
deleted file mode 100644
index c0955c1ea7b43..0000000000000
--- a/clang/test/AST/HLSL/vk.spec-constant.usage.hlsl
+++ /dev/null
@@ -1,130 +0,0 @@
-// RUN: %clang_cc1 -finclude-default-header -triple spirv-unknown-vulkan-compute -x hlsl -ast-dump -o - %s | FileCheck %s
-
-// CHECK: VarDecl {{.*}} bool_const 'const hlsl_private bool' static cinit
-// CHECK-NEXT: CallExpr {{.*}} 'bool'
-// CHECK-NEXT: ImplicitCastExpr {{.*}} 'bool (*)(unsigned int, bool) noexcept' <FunctionToPointerDecay>
-// CHECK-NEXT: DeclRefExpr {{.*}} 'bool (unsigned int, bool) noexcept' lvalue Function {{.*}} '__builtin_get_spirv_spec_constant_bool' 'bool (unsigned int, bool) noexcept'
-// CHECK-NEXT: ImplicitCastExpr {{.*}} 'unsigned int' <IntegralCast>
-// CHECK-NEXT: IntegerLiteral {{.*}} 'int' 1
-// CHECK-NEXT: CXXBoolLiteralExpr {{.*}} 'bool' true
-[[vk::constant_id(1)]]
-const bool bool_const = true;
-
-// CHECK: VarDecl {{.*}} short_const 'const hlsl_private short' static cinit
-// CHECK-NEXT: CallExpr {{.*}} 'short'
-// CHECK-NEXT: ImplicitCastExpr {{.*}} 'short (*)(unsigned int, short) noexcept' <FunctionToPointerDecay>
-// CHECK-NEXT: DeclRefExpr {{.*}} 'short (unsigned int, short) noexcept' lvalue Function {{.*}} '__builtin_get_spirv_spec_constant_short' 'short (unsigned int, short) noexcept'
-// CHECK-NEXT: ImplicitCastExpr {{.*}} 'unsigned int' <IntegralCast>
-// CHECK-NEXT: IntegerLiteral {{.*}} 'int' 2
-// CHECK-NEXT: ImplicitCastExpr {{.*}} 'short' <IntegralCast>
-// CHECK-NEXT: IntegerLiteral {{.*}} 'int' 4
-[[vk::constant_id(2)]]
-const short short_const = 4;
-
-// CHECK: VarDecl {{.*}} int_const 'const hlsl_private int' static cinit
-// ...
[truncated]
|
This reverts commit 5f69d68.
Reverts #143544