================
@@ -18660,6 +18660,10 @@ case Builtin::BI__builtin_hlsl_elementwise_isinf: {
         llvm::FunctionType::get(IntTy, {}, false), 
"__hlsl_wave_get_lane_index",
         {}, false, true));
   }
+  case Builtin::BI__builtin_hlsl_wave_is_first_lane: {
+    Intrinsic::ID ID = CGM.getHLSLRuntime().getWaveIsFirstLaneIntrinsic();
+    return EmitRuntimeCall(Intrinsic::getDeclaration(&CGM.getModule(), ID));
----------------
Keenuts wrote:

The reason is convergence intrinsics: The EmitRuntimeCall checks for 
convergence intrinsics and generates them, while CreateIntrinsic doesn't.
We could add the code required for this in CreateIntrinsic, but it would 
require moving some existing logic in codegen into the IRBuilder (things around 
convergence intrinsic gen).
So I preferred to add some inconsistencies here (and use EmitRuntimeCall) but 
avoid  larger code changes.

https://github.com/llvm/llvm-project/pull/103299
_______________________________________________
cfe-commits mailing list
cfe-commits@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits

Reply via email to