Skip to content

Commit 462abe1

Browse files
committed
Remove option of generating without a name.
1 parent fadeeac commit 462abe1

File tree

3 files changed

+20
-59
lines changed

3 files changed

+20
-59
lines changed

clang/lib/CodeGen/CGHLSLBuiltins.cpp

Lines changed: 8 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -295,17 +295,16 @@ Value *CodeGenFunction::EmitHLSLBuiltinExpr(unsigned BuiltinID,
295295
Value *SpaceOp = EmitScalarExpr(E->getArg(2));
296296
Value *RangeOp = EmitScalarExpr(E->getArg(3));
297297
Value *IndexOp = EmitScalarExpr(E->getArg(4));
298+
Value *Name = EmitScalarExpr(E->getArg(5));
298299
// FIXME: NonUniformResourceIndex bit is not yet implemented
299300
// (llvm/llvm-project#135452)
300301
Value *NonUniform =
301302
llvm::ConstantInt::get(llvm::Type::getInt1Ty(getLLVMContext()), false);
302303

303-
auto [IntrinsicID, HasNameArg] =
304+
llvm::Intrinsic::ID IntrinsicID =
304305
CGM.getHLSLRuntime().getCreateHandleFromBindingIntrinsic();
305-
SmallVector<Value *> Args{SpaceOp, RegisterOp, RangeOp, IndexOp,
306-
NonUniform};
307-
if (HasNameArg)
308-
Args.push_back(EmitScalarExpr(E->getArg(5)));
306+
SmallVector<Value *> Args{SpaceOp, RegisterOp, RangeOp,
307+
IndexOp, NonUniform, Name};
309308
return Builder.CreateIntrinsic(HandleTy, IntrinsicID, Args);
310309
}
311310
case Builtin::BI__builtin_hlsl_resource_handlefromimplicitbinding: {
@@ -314,16 +313,16 @@ Value *CodeGenFunction::EmitHLSLBuiltinExpr(unsigned BuiltinID,
314313
Value *RangeOp = EmitScalarExpr(E->getArg(2));
315314
Value *IndexOp = EmitScalarExpr(E->getArg(3));
316315
Value *OrderID = EmitScalarExpr(E->getArg(4));
316+
Value *Name = EmitScalarExpr(E->getArg(5));
317317
// FIXME: NonUniformResourceIndex bit is not yet implemented
318318
// (llvm/llvm-project#135452)
319319
Value *NonUniform =
320320
llvm::ConstantInt::get(llvm::Type::getInt1Ty(getLLVMContext()), false);
321321

322-
auto [IntrinsicID, HasNameArg] =
322+
llvm::Intrinsic::ID IntrinsicID =
323323
CGM.getHLSLRuntime().getCreateHandleFromImplicitBindingIntrinsic();
324-
SmallVector<Value *> Args{OrderID, SpaceOp, RangeOp, IndexOp, NonUniform};
325-
if (HasNameArg)
326-
Args.push_back(EmitScalarExpr(E->getArg(5)));
324+
SmallVector<Value *> Args{OrderID, SpaceOp, RangeOp,
325+
IndexOp, NonUniform, Name};
327326
return Builder.CreateIntrinsic(HandleTy, IntrinsicID, Args);
328327
}
329328
case Builtin::BI__builtin_hlsl_all: {

clang/lib/CodeGen/CGHLSLRuntime.cpp

Lines changed: 8 additions & 41 deletions
Original file line numberDiff line numberDiff line change
@@ -237,35 +237,6 @@ static void fillPackoffsetLayout(const HLSLBufferDecl *BufDecl,
237237
}
238238
}
239239

240-
std::pair<llvm::Intrinsic::ID, bool>
241-
CGHLSLRuntime::getCreateHandleFromBindingIntrinsic() {
242-
switch (getArch()) {
243-
case llvm::Triple::dxil:
244-
return std::pair(llvm::Intrinsic::dx_resource_handlefrombinding, true);
245-
case llvm::Triple::spirv:
246-
return std::pair(llvm::Intrinsic::spv_resource_handlefrombinding, true);
247-
default:
248-
llvm_unreachable("Intrinsic resource_handlefrombinding not supported by "
249-
"target architecture");
250-
}
251-
}
252-
253-
std::pair<llvm::Intrinsic::ID, bool>
254-
CGHLSLRuntime::getCreateHandleFromImplicitBindingIntrinsic() {
255-
switch (getArch()) {
256-
case llvm::Triple::dxil:
257-
return std::pair(llvm::Intrinsic::dx_resource_handlefromimplicitbinding,
258-
true);
259-
case llvm::Triple::spirv:
260-
return std::pair(llvm::Intrinsic::spv_resource_handlefromimplicitbinding,
261-
true);
262-
default:
263-
llvm_unreachable(
264-
"Intrinsic resource_handlefromimplicitbinding not supported by "
265-
"target architecture");
266-
}
267-
}
268-
269240
// Codegen for HLSLBufferDecl
270241
void CGHLSLRuntime::addBuffer(const HLSLBufferDecl *BufDecl) {
271242

@@ -595,31 +566,27 @@ void CGHLSLRuntime::initializeBufferFromBinding(const HLSLBufferDecl *BufDecl,
595566
llvm::ConstantInt::get(CGM.IntTy, RBA ? RBA->getSpaceNumber() : 0);
596567
Value *Name = nullptr;
597568

598-
auto [IntrinsicID, HasNameArg] =
569+
llvm::Intrinsic::ID IntrinsicID =
599570
RBA->hasRegisterSlot()
600571
? CGM.getHLSLRuntime().getCreateHandleFromBindingIntrinsic()
601572
: CGM.getHLSLRuntime().getCreateHandleFromImplicitBindingIntrinsic();
602573

603-
if (HasNameArg) {
604-
std::string Str(BufDecl->getName());
605-
std::string GlobalName(Str + ".str");
606-
Name = CGM.GetAddrOfConstantCString(Str, GlobalName.c_str()).getPointer();
607-
}
574+
std::string Str(BufDecl->getName());
575+
std::string GlobalName(Str + ".str");
576+
Name = CGM.GetAddrOfConstantCString(Str, GlobalName.c_str()).getPointer();
608577

609578
// buffer with explicit binding
610579
if (RBA->hasRegisterSlot()) {
611580
auto *RegSlot = llvm::ConstantInt::get(CGM.IntTy, RBA->getSlotNumber());
612-
SmallVector<Value *> Args{Space, RegSlot, RangeSize, Index, NonUniform};
613-
if (Name)
614-
Args.push_back(Name);
581+
SmallVector<Value *> Args{Space, RegSlot, RangeSize,
582+
Index, NonUniform, Name};
615583
initializeBuffer(CGM, GV, IntrinsicID, Args);
616584
} else {
617585
// buffer with implicit binding
618586
auto *OrderID =
619587
llvm::ConstantInt::get(CGM.IntTy, RBA->getImplicitBindingOrderID());
620-
SmallVector<Value *> Args{OrderID, Space, RangeSize, Index, NonUniform};
621-
if (Name)
622-
Args.push_back(Name);
588+
SmallVector<Value *> Args{OrderID, Space, RangeSize,
589+
Index, NonUniform, Name};
623590
initializeBuffer(CGM, GV, IntrinsicID, Args);
624591
}
625592
}

clang/lib/CodeGen/CGHLSLRuntime.h

Lines changed: 4 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -117,6 +117,10 @@ class CGHLSLRuntime {
117117

118118
GENERATE_HLSL_INTRINSIC_FUNCTION(CreateResourceGetPointer,
119119
resource_getpointer)
120+
GENERATE_HLSL_INTRINSIC_FUNCTION(CreateHandleFromBinding,
121+
resource_handlefrombinding)
122+
GENERATE_HLSL_INTRINSIC_FUNCTION(CreateHandleFromImplicitBinding,
123+
resource_handlefromimplicitbinding)
120124
GENERATE_HLSL_INTRINSIC_FUNCTION(BufferUpdateCounter, resource_updatecounter)
121125
GENERATE_HLSL_INTRINSIC_FUNCTION(GroupMemoryBarrierWithGroupSync,
122126
group_memory_barrier_with_group_sync)
@@ -125,15 +129,6 @@ class CGHLSLRuntime {
125129
// End of reserved area for HLSL intrinsic getters.
126130
//===----------------------------------------------------------------------===//
127131

128-
// Returns ID of the intrinsic that initializes resource handle from binding
129-
// and a bool value indicating whether the last argument of the intrinsic is
130-
// the resource name (not all targets need that).
131-
std::pair<llvm::Intrinsic::ID, bool> getCreateHandleFromBindingIntrinsic();
132-
133-
// Same as above but for implicit binding.
134-
std::pair<llvm::Intrinsic::ID, bool>
135-
getCreateHandleFromImplicitBindingIntrinsic();
136-
137132
protected:
138133
CodeGenModule &CGM;
139134

0 commit comments

Comments
 (0)