[clang] [llvm] [HLSL] Add support for dynamic resources (PR #221103)
Justin Bogner via cfe-commits
cfe-commits at lists.llvm.org
Mon Sep 14 07:56:47 PDT 2026
================
@@ -1063,6 +1063,27 @@ Value *CodeGenFunction::EmitHLSLBuiltinExpr(unsigned BuiltinID,
return EmitIntrinsicCall(IntrinsicID, {HandleTy, MainHandle->getType()},
Args);
}
+ case Builtin::BI__builtin_hlsl_resource_handlefromheap: {
+ llvm::Type *HandleTy = CGM.getTypes().ConvertType(E->getType());
+ Value *IndexOp = EmitScalarExpr(E->getArg(1));
+ llvm::Intrinsic::ID IntrinsicID =
+ CGM.getHLSLRuntime().getCreateHandleFromHeapIntrinsic();
+ SmallVector<Value *> Args{IndexOp};
+ return Builder.CreateIntrinsic(HandleTy, IntrinsicID, Args);
----------------
bogner wrote:
Given that `Args` isn't dynamic, should we use `std::array` here instead of `SmallVector`? Though given there's a single argument it's also pretty clear to just use an initializer list like:
```c++
return Builder.CreateIntrinsic(HandleTy, IntrinsicID, {IndexOp});
```
https://github.com/llvm/llvm-project/pull/221103
More information about the cfe-commits
mailing list