================
@@ -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
_______________________________________________
cfe-commits mailing list
[email protected]
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits

Reply via email to