================
@@ -77,6 +77,8 @@ let TargetPrefix = "spv" in {
                           Intrinsic<[llvm_i32_ty], [], [NoUndef<RetIndex>, 
IntrNoMem, IntrWillReturn]>;
   def int_spv_subgroup_max_size : 
ClangBuiltin<"__builtin_spirv_subgroup_max_size">,
                           Intrinsic<[llvm_i32_ty], [], [NoUndef<RetIndex>, 
IntrNoMem, IntrWillReturn]>;
+  def int_spv_subgroup_ballot : 
ClangBuiltin<"__builtin_spirv_subgroup_ballot">,
+    DefaultAttrsIntrinsic<[llvm_v4i32_ty], [llvm_i1_ty], [IntrConvergent, 
IntrNoMem]>;
----------------
jhuber6 wrote:

>From the documentation
> Result Type must be a vector of four components of [integer 
> type](https://registry.khronos.org/SPIR-V/specs/unified1/SPIRV.html#Integer) 
> scalar, whose Width operand is 32 and whose Signedness operand is 0.
>
> Result is a set of bitfields where the first invocation is represented in the 
> lowest bit of the first vector component and the last (up to the size of the 
> [scope](https://registry.khronos.org/SPIR-V/specs/unified1/SPIRV.html#Scope)) 
> is the higher bit number of the last bitmask needed to represent all bits of 
> the invocations in the scope restricted tangle.

https://github.com/llvm/llvm-project/pull/174862
_______________________________________________
cfe-commits mailing list
[email protected]
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits

Reply via email to