[llvm] [DXIL] Add GroupMemoryBarrierWithGroupSync intrinsic (PR #114349)
Justin Bogner via llvm-commits
llvm-commits at lists.llvm.org
Thu Nov 14 09:59:58 PST 2024
================
@@ -294,6 +294,57 @@ class Attributes<Version ver = DXIL1_0, list<DXILAttribute> attrs> {
list<DXILAttribute> op_attrs = attrs;
}
+defvar BarrierMode_DeviceMemoryBarrier = 2;
+defvar BarrierMode_DeviceMemoryBarrierWithGroupSync = 3;
+defvar BarrierMode_GroupMemoryBarrier = 8;
+defvar BarrierMode_GroupMemoryBarrierWithGroupSync = 9;
+defvar BarrierMode_AllMemoryBarrier = 10;
+defvar BarrierMode_AllMemoryBarrierWithGroupSync = 11;
+
+// Intrinsic arg selection
+class IntrinArgSelectType;
+def IntrinArgSelect_Index : IntrinArgSelectType;
+def IntrinArgSelect_I8 : IntrinArgSelectType;
+def IntrinArgSelect_I32 : IntrinArgSelectType;
+
+class IntrinArgSelect<IntrinArgSelectType type_, int value_> {
+ IntrinArgSelectType type = type_;
+ int value = value_;
+}
+class IntrinArgIndex<int index> : IntrinArgSelect<IntrinArgSelect_Index, index>;
+class IntrinArgI8 <int value> : IntrinArgSelect<IntrinArgSelect_I8, value>;
+class IntrinArgI32 <int value> : IntrinArgSelect<IntrinArgSelect_I32, value>;
+
+// Select which intrinsic to lower from for a DXILOp.
+// If the intrinsic is the only argument given to IntrinSelect, then the arguments of the intrinsic will be copied
+// in the same order. Example:
+// let intrinsic_selects = [
+// IntrinSelect<int_dx_my_intrinsic>,
+// IntrinSelect<int_dx_my_intrinsic2>,
+// ]
+//=========================================================================================
+// Using IntrinArgIndex<>, arguments of the intrinsic can be copied in specific order:
+// let intrinsic_selects = [
+// IntrinSelect<int_dx_my_intrinsic,
+// [IntrinArgIndex<2>, IntrinArgIndex<1>, IntrinArgIndex<0>> ]
+// >,
+// ]
+//=========================================================================================
+// to the dxil op. This can be used in conjunction with IntrinArgIndex:
----------------
bogner wrote:
Looks like this is missing some text
https://github.com/llvm/llvm-project/pull/114349
More information about the llvm-commits
mailing list