/*===- TableGen'erated file -------------------------------------*- C++ -*-===*\ |* *| |* Op Declarations *| |* *| |* Automatically generated file, do not edit! *| |* From: ROCDLOps.td *| |* *| \*===----------------------------------------------------------------------===*/ namespace mlir::ROCDL { /// Note: In the general case, prefer the conventional `arith`, `math`, or `llvm` ops over this. /// Use this ROCDL-specific operation only when you fully understand its implication and /// when it is strictly necessary. This op is usually chosen when a small loss in precision is /// acceptable in exchange for higher execution speed. /// /// Example: /// ```mlir /// %0 = rocdl.cos %a f32 -> f32 /// ``` class ROCDLCos; } // namespace mlir::ROCDL namespace mlir::ROCDL { /// Note: In the general case, prefer the conventional `arith`, `math`, or `llvm` ops over this. /// Use this ROCDL-specific operation only when you fully understand its implication and /// when it is strictly necessary. This op is usually chosen when a small loss in precision is /// acceptable in exchange for higher execution speed. /// /// Example: /// ```mlir /// %0 = rocdl.exp %a f32 -> f32 /// ``` class ROCDLExp; } // namespace mlir::ROCDL namespace mlir::ROCDL { /// Note: In the general case, prefer the conventional `arith`, `math`, or `llvm` ops over this. /// Use this ROCDL-specific operation only when you fully understand its implication and /// when it is strictly necessary. This op is usually chosen when a small loss in precision is /// acceptable in exchange for higher execution speed. /// /// Example: /// ```mlir /// %0 = rocdl.exp2 %a f32 -> f32 /// ``` class ROCDLExp2; } // namespace mlir::ROCDL namespace mlir::ROCDL { /// Note: In the general case, prefer the conventional `arith`, `math`, or `llvm` ops over this. /// Use this ROCDL-specific operation only when you fully understand its implication and /// when it is strictly necessary. This op is usually chosen when a small loss in precision is /// acceptable in exchange for higher execution speed. /// /// Example: /// ```mlir /// %0 = rocdl.log %a f32 -> f32 /// ``` class ROCDLLog; } // namespace mlir::ROCDL namespace mlir::ROCDL { /// Note: In the general case, prefer the conventional `arith`, `math`, or `llvm` ops over this. /// Use this ROCDL-specific operation only when you fully understand its implication and /// when it is strictly necessary. This op is usually chosen when a small loss in precision is /// acceptable in exchange for higher execution speed. /// /// Example: /// ```mlir /// %0 = rocdl.rcp %a f32 -> f32 /// ``` class ROCDLRcp; } // namespace mlir::ROCDL namespace mlir::ROCDL { /// Note: In the general case, prefer the conventional `arith`, `math`, or `llvm` ops over this. /// Use this ROCDL-specific operation only when you fully understand its implication and /// when it is strictly necessary. This op is usually chosen when a small loss in precision is /// acceptable in exchange for higher execution speed. /// /// Example: /// ```mlir /// %0 = rocdl.rsq %a f32 -> f32 /// ``` class ROCDLRsq; } // namespace mlir::ROCDL namespace mlir::ROCDL { /// Note: In the general case, prefer the conventional `arith`, `math`, or `llvm` ops over this. /// Use this ROCDL-specific operation only when you fully understand its implication and /// when it is strictly necessary. This op is usually chosen when a small loss in precision is /// acceptable in exchange for higher execution speed. /// /// Example: /// ```mlir /// %0 = rocdl.sin %a f32 -> f32 /// ``` class ROCDLSin; } // namespace mlir::ROCDL namespace mlir::ROCDL { /// Note: In the general case, prefer the conventional `arith`, `math`, or `llvm` ops over this. /// Use this ROCDL-specific operation only when you fully understand its implication and /// when it is strictly necessary. This op is usually chosen when a small loss in precision is /// acceptable in exchange for higher execution speed. /// /// Example: /// ```mlir /// %0 = rocdl.sqrt %a f32 -> f32 /// ``` class ROCDLSqrt; } // namespace mlir::ROCDL namespace mlir::ROCDL { /// Note: In the general case, prefer the conventional `arith`, `math`, or `llvm` ops over this. /// Use this ROCDL-specific operation only when you fully understand its implication and /// when it is strictly necessary. This op is usually chosen when a small loss in precision is /// acceptable in exchange for higher execution speed. /// /// Example: /// ```mlir /// %0 = rocdl.tanh %a f32 -> f32 /// ``` class ROCDLTanh; } // namespace mlir::ROCDL namespace mlir::ROCDL { /// Mark the end of a group of asynchronous operations /// This operation, in conjunction with `rocdl.wait.asyncmark`, forms the /// compiler-provided framework for tracking explicitly asynchronous /// memory operations, such as copies to LDS that use async intrinsics /// and gfx1250's tensor loads. /// /// Details of its behavior can be found in /// [the LLVM documentation on async tracking](/llvm/docs/AMDGPUAsyncOperations.rst). /// /// See `rocdl.wait.asyncmark`'s documentation for a usage example. /// /// Example: /// ```mlir /// // Mark the end of an async operation group. /// rocdl.asyncmark /// ``` /// /// Available on gfx9 and later. class AsyncmarkOp; } // namespace mlir::ROCDL namespace mlir::ROCDL { /// Vote across thread group /// Ballot provides a bit mask containing the 1-bit predicate value from each lane. /// The nth bit of the result contains the 1 bit contributed by the nth warp lane. /// /// Example: /// ```mlir /// // Ballot across thread group. /// %0 = rocdl.ballot %pred : i64 /// ``` class BallotOp; } // namespace mlir::ROCDL namespace mlir::ROCDL { /// Available on gfx1250+. /// /// Example: /// ```mlir /// // Initialize a named barrier with member count. /// rocdl.s.barrier.init %ptr member_cnt = 1 : !llvm.ptr<3> /// ``` class BarrierInitOp; } // namespace mlir::ROCDL namespace mlir::ROCDL { /// Available on gfx1250+. /// /// Example: /// ```mlir /// // Join a named barrier. /// rocdl.s.barrier.join %ptr : !llvm.ptr<3> /// ``` class BarrierJoinOp; } // namespace mlir::ROCDL namespace mlir::ROCDL { /// Available on gfx1250+. /// /// Example: /// ```mlir /// // Leave a named barrier by id. /// rocdl.s.barrier.leave id = 1 /// ``` class BarrierLeaveOp; } // namespace mlir::ROCDL namespace mlir::ROCDL { /// An operation with the same expansion as HIP's __synchthreads(); /// /// **DEPRECATION NOTICE**: Use `gpu.barrier`, which will expand to these /// operations, instead. /// /// Example: /// ```mlir /// // Workgroup barrier with acquire/release fences. /// rocdl.barrier /// ``` class BarrierOp; } // namespace mlir::ROCDL namespace mlir::ROCDL { /// Available on gfx1200+. /// /// Example: /// ```mlir /// // Signal barrier and check if this wave is first to arrive. /// %0 = rocdl.s.barrier.signal.isfirst id = 1 -> i1 /// ``` class BarrierSignalIsfirstOp; } // namespace mlir::ROCDL namespace mlir::ROCDL { /// Signal a barrier by id. Available on gfx1250+. /// /// Example: /// ```mlir /// // Signal barrier with id -1 (all barriers). /// rocdl.s.barrier.signal id = -1 /// ``` class BarrierSignalOp; } // namespace mlir::ROCDL namespace mlir::ROCDL { /// Available on gfx1250+. /// /// If `memberCnt` is 0, the member count is retained from a previous initialization. /// /// Example: /// ```mlir /// // Signal a named barrier with variable ID. /// rocdl.s.barrier.signal.var %ptr member_cnt = 1 : !llvm.ptr<3> /// ``` class BarrierSignalVarOp; } // namespace mlir::ROCDL namespace mlir::ROCDL { /// Wait on a barrier by id. Available on gfx1200+. /// /// Example: /// ```mlir /// // Wait on barrier with id -1 (all barriers). /// rocdl.s.barrier.wait id = -1 /// ``` class BarrierWaitOp; } // namespace mlir::ROCDL namespace mlir::ROCDL { /// Read a hardware register for thread/workgroup/cluster identification. /// An optional `range` attribute can constrain the returned value. /// /// Example: /// ```mlir /// // Read the workitem id in the x dimension. /// %0 = rocdl.workitem.id.x : i32 /// /// // Read with a known range constraint. /// %1 = rocdl.workitem.id.x range : i32 /// ``` class BlockIdXOp; } // namespace mlir::ROCDL namespace mlir::ROCDL { /// Read a hardware register for thread/workgroup/cluster identification. /// An optional `range` attribute can constrain the returned value. /// /// Example: /// ```mlir /// // Read the workitem id in the x dimension. /// %0 = rocdl.workitem.id.x : i32 /// /// // Read with a known range constraint. /// %1 = rocdl.workitem.id.x range : i32 /// ``` class BlockIdYOp; } // namespace mlir::ROCDL namespace mlir::ROCDL { /// Read a hardware register for thread/workgroup/cluster identification. /// An optional `range` attribute can constrain the returned value. /// /// Example: /// ```mlir /// // Read the workitem id in the x dimension. /// %0 = rocdl.workitem.id.x : i32 /// /// // Read with a known range constraint. /// %1 = rocdl.workitem.id.x range : i32 /// ``` class BlockIdZOp; } // namespace mlir::ROCDL namespace mlir::ROCDL { /// Read a hardware register for thread/workgroup/cluster identification. /// An optional `range` attribute can constrain the returned value. /// /// Example: /// ```mlir /// // Read the workitem id in the x dimension. /// %0 = rocdl.workitem.id.x : i32 /// /// // Read with a known range constraint. /// %1 = rocdl.workitem.id.x range : i32 /// ``` class ClusterIdXOp; } // namespace mlir::ROCDL namespace mlir::ROCDL { /// Read a hardware register for thread/workgroup/cluster identification. /// An optional `range` attribute can constrain the returned value. /// /// Example: /// ```mlir /// // Read the workitem id in the x dimension. /// %0 = rocdl.workitem.id.x : i32 /// /// // Read with a known range constraint. /// %1 = rocdl.workitem.id.x range : i32 /// ``` class ClusterIdYOp; } // namespace mlir::ROCDL namespace mlir::ROCDL { /// Read a hardware register for thread/workgroup/cluster identification. /// An optional `range` attribute can constrain the returned value. /// /// Example: /// ```mlir /// // Read the workitem id in the x dimension. /// %0 = rocdl.workitem.id.x : i32 /// /// // Read with a known range constraint. /// %1 = rocdl.workitem.id.x range : i32 /// ``` class ClusterIdZOp; } // namespace mlir::ROCDL namespace mlir::ROCDL { /// Broadcasts memory load of 128 bits of data for a cluster of workgroups. /// /// Available on gfx1250+. /// /// Example: /// ```mlir /// // Cluster broadcast 128-bit load to LDS. /// rocdl.cluster.load.async.to.lds.b128 %src, %dst, 0, 0, %mask : !llvm.ptr<1>, !llvm.ptr<3> /// ``` class ClusterLoadAsyncToLDSB128Op; } // namespace mlir::ROCDL namespace mlir::ROCDL { /// Broadcasts memory load of 32 bits of data for a cluster of workgroups. /// /// Available on gfx1250+. /// /// Example: /// ```mlir /// // Cluster broadcast 32-bit load to LDS. /// rocdl.cluster.load.async.to.lds.b32 %src, %dst, 0, 0, %mask : !llvm.ptr<1>, !llvm.ptr<3> /// ``` class ClusterLoadAsyncToLDSB32Op; } // namespace mlir::ROCDL namespace mlir::ROCDL { /// Broadcasts memory load of 64 bits of data for a cluster of workgroups. /// /// Available on gfx1250+. /// /// Example: /// ```mlir /// // Cluster broadcast 64-bit load to LDS. /// rocdl.cluster.load.async.to.lds.b64 %src, %dst, 0, 0, %mask : !llvm.ptr<1>, !llvm.ptr<3> /// ``` class ClusterLoadAsyncToLDSB64Op; } // namespace mlir::ROCDL namespace mlir::ROCDL { /// Broadcasts memory load of 8 bits of data for a cluster of workgroups. /// /// Available on gfx1250+. /// /// Example: /// ```mlir /// // Cluster broadcast 8-bit load to LDS. /// rocdl.cluster.load.async.to.lds.b8 %src, %dst, 0, 0, %mask : !llvm.ptr<1>, !llvm.ptr<3> /// ``` class ClusterLoadAsyncToLDSB8Op; } // namespace mlir::ROCDL namespace mlir::ROCDL { /// Read a hardware register for thread/workgroup/cluster identification. /// An optional `range` attribute can constrain the returned value. /// /// Example: /// ```mlir /// // Read the workitem id in the x dimension. /// %0 = rocdl.workitem.id.x : i32 /// /// // Read with a known range constraint. /// %1 = rocdl.workitem.id.x range : i32 /// ``` class ClusterWorkgroupIdXOp; } // namespace mlir::ROCDL namespace mlir::ROCDL { /// Read a hardware register for thread/workgroup/cluster identification. /// An optional `range` attribute can constrain the returned value. /// /// Example: /// ```mlir /// // Read the workitem id in the x dimension. /// %0 = rocdl.workitem.id.x : i32 /// /// // Read with a known range constraint. /// %1 = rocdl.workitem.id.x range : i32 /// ``` class ClusterWorkgroupIdYOp; } // namespace mlir::ROCDL namespace mlir::ROCDL { /// Read a hardware register for thread/workgroup/cluster identification. /// An optional `range` attribute can constrain the returned value. /// /// Example: /// ```mlir /// // Read the workitem id in the x dimension. /// %0 = rocdl.workitem.id.x : i32 /// /// // Read with a known range constraint. /// %1 = rocdl.workitem.id.x range : i32 /// ``` class ClusterWorkgroupIdZOp; } // namespace mlir::ROCDL namespace mlir::ROCDL { /// Convert bf8 to f32 /// Convert 8-bit bf8 value from the `byteSel`th bit of `srcA` to fp32. /// /// Example: /// ```mlir /// // Convert bf8 byte 0 to f32. /// %0 = rocdl.cvt.f32.bf8 %src[0] : f32 /// ``` class CvtF32Bf8Op; } // namespace mlir::ROCDL namespace mlir::ROCDL { /// Convert fp8 to f32 /// Convert 8-bit fp8 value from the `byteSel`th bit of `srcA` to fp32. /// /// Example: /// ```mlir /// // Convert fp8 byte 0 to f32. /// %0 = rocdl.cvt.f32.fp8 %src[0] : f32 /// ``` class CvtF32Fp8Op; } // namespace mlir::ROCDL namespace mlir::ROCDL { /// Convert two f32's to bf8 /// Convert `srcA` and `srcB` to bf8 and store into the low/high word of /// `old`, preserving the other word. /// /// Example: /// ```mlir /// // Pack two f32 values into bf8 in the low word of old. /// %0 = rocdl.cvt.pk.bf8.f32 %a, %b -> %old[false] : i32 /// ``` class CvtPkBf8F32Op; } // namespace mlir::ROCDL namespace mlir::ROCDL { /// Convert packed bf8 to packed f32 /// Convert `src` based on $wordSel to packed fp32. /// /// Example: /// ```mlir /// // Unpack bf8 word to packed f32. /// %0 = rocdl.cvt.pk.f32.bf8 %src[false] : vector<2xf32> /// ``` class CvtPkF32Bf8Op; } // namespace mlir::ROCDL namespace mlir::ROCDL { /// Convert packed fp8 to packed f32 /// Convert `src` based on $wordSel to packed fp32. /// /// Example: /// ```mlir /// // Unpack fp8 word to packed f32. /// %0 = rocdl.cvt.pk.f32.fp8 %src[false] : vector<2xf32> /// ``` class CvtPkF32Fp8Op; } // namespace mlir::ROCDL namespace mlir::ROCDL { /// Convert two f32's to fp8 /// Convert `srcA` and `srcB` to fp8 and store into the low/high word of /// `old`, preserving the other word. /// /// Example: /// ```mlir /// // Pack two f32 values into fp8 in the low word of old. /// %0 = rocdl.cvt.pk.fp8.f32 %a, %b -> %old[false] : i32 /// ``` class CvtPkFp8F32Op; } // namespace mlir::ROCDL namespace mlir::ROCDL { /// Convert two f32 input into a vector<2xf16> /// Convert two f32 values into a packed vector<2xf16>. /// /// Example: /// ```mlir /// // Pack two f32 values into a vector<2xf16> with round-to-zero. /// %0 = rocdl.cvt.pkrtz %a, %b : vector<2xf16> /// ``` class CvtPkRtz; } // namespace mlir::ROCDL namespace mlir::ROCDL { /// Scales 16 bf6 and converts them to 16 bf16. /// Available on gfx1250+. class CvtPkScalePk16Bf16Bf6Op; } // namespace mlir::ROCDL namespace mlir::ROCDL { /// Scales 16 fp6 and converts them to 16 bf16. /// Available on gfx1250+. class CvtPkScalePk16Bf16Fp6Op; } // namespace mlir::ROCDL namespace mlir::ROCDL { /// Scales 16 bf6 and converts them to 16 f16. /// Available on gfx1250+. class CvtPkScalePk16F16Bf6Op; } // namespace mlir::ROCDL namespace mlir::ROCDL { /// Scales 16 fp6 and converts them to 16 f16. /// Available on gfx1250+. class CvtPkScalePk16F16Fp6Op; } // namespace mlir::ROCDL namespace mlir::ROCDL { /// Scales 16 bf6 and converts them to 16 f32. /// Available on gfx1250+. class CvtPkScalePk16F32Bf6Op; } // namespace mlir::ROCDL namespace mlir::ROCDL { /// Scales 16 fp6 and converts them to 16 f32. /// Available on gfx1250+. class CvtPkScalePk16F32Fp6Op; } // namespace mlir::ROCDL namespace mlir::ROCDL { /// Scales 8 bf8 and converts them to 8 bf16. /// Available on gfx1250+. class CvtPkScalePk8Bf16Bf8Op; } // namespace mlir::ROCDL namespace mlir::ROCDL { /// Scales 8 fp4 and converts them to 8 bf16. /// Available on gfx1250+. class CvtPkScalePk8Bf16Fp4Op; } // namespace mlir::ROCDL namespace mlir::ROCDL { /// Scales 8 fp8 and converts them to 8 bf16. /// Available on gfx1250+. class CvtPkScalePk8Bf16Fp8Op; } // namespace mlir::ROCDL namespace mlir::ROCDL { /// Scales 8 bf8 and converts them to 8 f16. /// Available on gfx1250+. class CvtPkScalePk8F16Bf8Op; } // namespace mlir::ROCDL namespace mlir::ROCDL { /// Scales 8 fp4 and converts them to 8 f16. /// Available on gfx1250+. class CvtPkScalePk8F16Fp4Op; } // namespace mlir::ROCDL namespace mlir::ROCDL { /// Scales 8 fp8 and converts them to 8 f16. /// Available on gfx1250+. class CvtPkScalePk8F16Fp8Op; } // namespace mlir::ROCDL namespace mlir::ROCDL { /// Scales 8 bf8 and converts them to 8 f32. /// Available on gfx1250+. class CvtPkScalePk8F32Bf8Op; } // namespace mlir::ROCDL namespace mlir::ROCDL { /// Scales 8 fp4 and converts them to 8 f32. /// Available on gfx1250+. class CvtPkScalePk8F32Fp4Op; } // namespace mlir::ROCDL namespace mlir::ROCDL { /// Scales 8 fp8 and converts them to 8 f32. /// Available on gfx1250+. class CvtPkScalePk8F32Fp8Op; } // namespace mlir::ROCDL namespace mlir::ROCDL { /// Scale and convert two vector<16xf32> to 32 packed bf6 /// Convert 32 single-precision float values, packed into two length-16 /// vectors that will be logically concanenated, to packed bf6, dividing by the exponent part of `scale` /// before doing so. class CvtScaleF322xPk16Bf6F32Op; } // namespace mlir::ROCDL namespace mlir::ROCDL { /// Scale and convert two vector<16xf32> to 32 packed fp6 /// Convert 32 single-precision float values, packed into two length-16 /// vectors that will be logically concanenated, to packed fp6, dividing by the exponent part of `scale` /// before doing so. class CvtScaleF322xPk16Fp6F32Op; } // namespace mlir::ROCDL namespace mlir::ROCDL { /// Scaled convert bf8 from packed vector to f16, updating tied result /// Convert a bf8 byte from `src`, selected by /// `srcSelIndex`, to f16 while multiplying it by the expontent of `scale`, /// and place it into the `dstLoHiSel`th bit /// of `oldVdst` preserving the other element of that vector in /// the return value. /// /// The bytes are stored as an `i32` and not a `<4 x i8>`. class CvtScaleF32F16Bf8Op; } // namespace mlir::ROCDL namespace mlir::ROCDL { /// Scaled convert fp8 from packed vector to f16, updating tied result /// Convert a fp8 byte from `src`, selected by /// `srcSelIndex`, to f16 while multiplying it by the expontent of `scale`, /// and place it into the `dstLoHiSel`th bit /// of `oldVdst` preserving the other element of that vector in /// the return value. /// /// The bytes are stored as an `i32` and not a `<4 x i8>`. class CvtScaleF32F16Fp8Op; } // namespace mlir::ROCDL namespace mlir::ROCDL { /// Scaled convert bf8 from packed vector to f32 /// Convert a bf8 byte from `src`, selected by /// `srcSelIndex`, to f32, multiplying it by the exponent of `scale`. /// /// The bytes are stored in an `i32`, not a `<4 x i8>`. class CvtScaleF32F32Bf8Op; } // namespace mlir::ROCDL namespace mlir::ROCDL { /// Scaled convert fp8 from packed vector to f32 /// Convert a fp8 byte from `src`, selected by /// `srcSelIndex`, to f32, multiplying it by the exponent of `scale`. /// /// The bytes are stored in an `i32`, not a `<4 x i8>`. class CvtScaleF32F32Fp8Op; } // namespace mlir::ROCDL namespace mlir::ROCDL { /// Scale and convert packed bf16 to packed bf6 /// Convert 8 packed bf16 values to packed bf6, multiplying by the exponent part of `scale` /// before doing so. This op is for gfx1250+ arch. class CvtScaleF32Pk16Bf6Bf16Op; } // namespace mlir::ROCDL namespace mlir::ROCDL { /// Scale and convert packed f16 to packed bf6 /// Convert 8 packed f16 values to packed bf6, multiplying by the exponent part of `scale` /// before doing so. This op is for gfx1250+ arch. class CvtScaleF32Pk16Bf6F16Op; } // namespace mlir::ROCDL namespace mlir::ROCDL { /// Scale and convert packed f32 to packed bf6 /// Convert 8 packed f32 values to packed bf6, multiplying by the exponent part of `scale` /// before doing so. This op is for gfx1250+ arch. class CvtScaleF32Pk16Bf6F32Op; } // namespace mlir::ROCDL namespace mlir::ROCDL { /// Scale and convert packed bf16 to packed fp6 /// Convert 8 packed bf16 values to packed fp6, multiplying by the exponent part of `scale` /// before doing so. This op is for gfx1250+ arch. class CvtScaleF32Pk16Fp6Bf16Op; } // namespace mlir::ROCDL namespace mlir::ROCDL { /// Scale and convert packed f16 to packed fp6 /// Convert 8 packed f16 values to packed fp6, multiplying by the exponent part of `scale` /// before doing so. This op is for gfx1250+ arch. class CvtScaleF32Pk16Fp6F16Op; } // namespace mlir::ROCDL namespace mlir::ROCDL { /// Scale and convert packed f32 to packed fp6 /// Convert 8 packed f32 values to packed fp6, multiplying by the exponent part of `scale` /// before doing so. This op is for gfx1250+ arch. class CvtScaleF32Pk16Fp6F32Op; } // namespace mlir::ROCDL namespace mlir::ROCDL { /// Scale and convert packed bf6 to packed bf16 /// Convert 32 packed bf6 values to packed bf16, multiplying by the exponent part of `scale` /// before doing so. class CvtScaleF32Pk32Bf16Bf6Op; } // namespace mlir::ROCDL namespace mlir::ROCDL { /// Scale and convert packed fp6 to packed bf16 /// Convert 32 packed fp6 values to packed bf16, multiplying by the exponent part of `scale` /// before doing so. class CvtScaleF32Pk32Bf16Fp6Op; } // namespace mlir::ROCDL namespace mlir::ROCDL { /// Scale and convert packed bf16 to packed bf6 /// Convert 32 packed bf16 values to packed bf6, dividing by the exponent part of `scale` /// before doing so. class CvtScaleF32Pk32Bf6Bf16Op; } // namespace mlir::ROCDL namespace mlir::ROCDL { /// Scale and convert packed f16 to packed bf6 /// Convert 32 packed f16 values to packed bf6, dividing by the exponent part of `scale` /// before doing so. class CvtScaleF32Pk32Bf6F16Op; } // namespace mlir::ROCDL namespace mlir::ROCDL { /// Scale and convert packed bf6 to packed f16 /// Convert 32 packed bf6 values to packed f16, multiplying by the exponent part of `scale` /// before doing so. class CvtScaleF32Pk32F16Bf6Op; } // namespace mlir::ROCDL namespace mlir::ROCDL { /// Scale and convert packed fp6 to packed f16 /// Convert 32 packed fp6 values to packed f16, multiplying by the exponent part of `scale` /// before doing so. class CvtScaleF32Pk32F16Fp6Op; } // namespace mlir::ROCDL namespace mlir::ROCDL { /// Scale and convert packed bf6 to packed f32 /// Convert 32 packed bf6 values to packed f32, multiplying by the exponent part of `scale` /// before doing so. class CvtScaleF32Pk32F32Bf6Op; } // namespace mlir::ROCDL namespace mlir::ROCDL { /// Scale and convert packed fp6 to packed f32 /// Convert 32 packed fp6 values to packed f32, multiplying by the exponent part of `scale` /// before doing so. class CvtScaleF32Pk32F32Fp6Op; } // namespace mlir::ROCDL namespace mlir::ROCDL { /// Scale and convert packed bf16 to packed fp6 /// Convert 32 packed bf16 values to packed fp6, dividing by the exponent part of `scale` /// before doing so. class CvtScaleF32Pk32Fp6Bf16Op; } // namespace mlir::ROCDL namespace mlir::ROCDL { /// Scale and convert packed f16 to packed fp6 /// Convert 32 packed f16 values to packed fp6, dividing by the exponent part of `scale` /// before doing so. class CvtScaleF32Pk32Fp6F16Op; } // namespace mlir::ROCDL namespace mlir::ROCDL { /// Scale and convert packed bf16 to packed bf8 /// Convert 8 packed bf16 values to packed bf8, multiplying by the exponent part of `scale` /// before doing so. This op is for gfx1250+ arch. class CvtScaleF32Pk8Bf8Bf16Op; } // namespace mlir::ROCDL namespace mlir::ROCDL { /// Scale and convert packed f16 to packed bf8 /// Convert 8 packed f16 values to packed bf8, multiplying by the exponent part of `scale` /// before doing so. This op is for gfx1250+ arch. class CvtScaleF32Pk8Bf8F16Op; } // namespace mlir::ROCDL namespace mlir::ROCDL { /// Scale and convert packed f32 to packed bf8 /// Convert 8 packed f32 values to packed bf8, multiplying by the exponent part of `scale` /// before doing so. This op is for gfx1250+ arch. class CvtScaleF32Pk8Bf8F32Op; } // namespace mlir::ROCDL namespace mlir::ROCDL { /// Scale and convert packed bf16 to packed fp4 /// Convert 8 packed bf16 values to packed fp4, multiplying by the exponent part of `scale` /// before doing so. This op is for gfx1250+ arch. class CvtScaleF32Pk8Fp4Bf16Op; } // namespace mlir::ROCDL namespace mlir::ROCDL { /// Scale and convert packed f16 to packed fp4 /// Convert 8 packed f16 values to packed fp4, multiplying by the exponent part of `scale` /// before doing so. This op is for gfx1250+ arch. class CvtScaleF32Pk8Fp4F16Op; } // namespace mlir::ROCDL namespace mlir::ROCDL { /// Scale and convert packed f32 to packed fp4 /// Convert 8 packed f32 values to packed fp4, multiplying by the exponent part of `scale` /// before doing so. This op is for gfx1250+ arch. class CvtScaleF32Pk8Fp4F32Op; } // namespace mlir::ROCDL namespace mlir::ROCDL { /// Scale and convert packed bf16 to packed fp8 /// Convert 8 packed bf16 values to packed fp8, multiplying by the exponent part of `scale` /// before doing so. This op is for gfx1250+ arch. class CvtScaleF32Pk8Fp8Bf16Op; } // namespace mlir::ROCDL namespace mlir::ROCDL { /// Scale and convert packed f16 to packed fp8 /// Convert 8 packed f16 values to packed fp8, multiplying by the exponent part of `scale` /// before doing so. This op is for gfx1250+ arch. class CvtScaleF32Pk8Fp8F16Op; } // namespace mlir::ROCDL namespace mlir::ROCDL { /// Scale and convert packed f32 to packed fp8 /// Convert 8 packed f32 values to packed fp8, multiplying by the exponent part of `scale` /// before doing so. This op is for gfx1250+ arch. class CvtScaleF32Pk8Fp8F32Op; } // namespace mlir::ROCDL namespace mlir::ROCDL { /// Scaled convert two bf8to two bf16 /// Convert two packed bf8 values in `src0` to two bf16 values, multiplying by the exponent in `scale`. /// The two values to be converted are selected from the low or high half /// of `src` (a packed vector represented as an `i32`) /// on the basis of `srcLoHiSel`. class CvtScaleF32PkBf16Bf8Op; } // namespace mlir::ROCDL namespace mlir::ROCDL { /// Scale and convert two packed fp4 to packed bf16 /// Convert two packed fp4 (f4E2M1) values stored as one byte of a 32-bit integer /// to packed bf16, multiplying by the exponent part of `scale` /// before doing so. /// /// The byte to convert is chosen by `srcSelIndex`. class CvtScaleF32PkBf16Fp4Op; } // namespace mlir::ROCDL namespace mlir::ROCDL { /// Scaled convert two fp8to two bf16 /// Convert two packed fp8 values in `src0` to two bf16 values, multiplying by the exponent in `scale`. /// The two values to be converted are selected from the low or high half /// of `src` (a packed vector represented as an `i32`) /// on the basis of `srcLoHiSel`. class CvtScaleF32PkBf16Fp8Op; } // namespace mlir::ROCDL namespace mlir::ROCDL { /// Scaled convert two bf16to two bf8, updating packed vector /// Convert two bf16 values in `src0` to two bf8 bytes, dividing by the exponent in `scale`. The bytes are /// packed into a 16-bit value which is inserted into `oldVdst` at the /// `dstLoHiSel` position, with the entire updated vector being returned. class CvtScaleF32PkBf8Bf16Op; } // namespace mlir::ROCDL namespace mlir::ROCDL { /// Scaled convert two f16to two bf8, updating packed vector /// Convert two f16 values in `src0` to two bf8 bytes, dividing by the exponent in `scale`. The bytes are /// packed into a 16-bit value which is inserted into `oldVdst` at the /// `dstLoHiSel` position, with the entire updated vector being returned. class CvtScaleF32PkBf8F16Op; } // namespace mlir::ROCDL namespace mlir::ROCDL { /// Scaled convert two f32 to two bf8, updating packed vector /// Convert two f32 values in `src0` and `src1` to two bf8 bytes, /// dividing by the exponent in `scale`. The bytes are packed into /// a 16-bit value which is inserted into `oldVdst` at the `dstLoHiSel` /// position, with the entire updated vector being returned. class CvtScaleF32PkBf8F32Op; } // namespace mlir::ROCDL namespace mlir::ROCDL { /// Scaled convert two bf8to two f16 /// Convert two packed bf8 values in `src0` to two f16 values, multiplying by the exponent in `scale`. /// The two values to be converted are selected from the low or high half /// of `src` (a packed vector represented as an `i32`) /// on the basis of `srcLoHiSel`. class CvtScaleF32PkF16Bf8Op; } // namespace mlir::ROCDL namespace mlir::ROCDL { /// Scale and convert two packed fp4 to packed f16 /// Convert two packed fp4 (f4E2M1) values stored as one byte of a 32-bit integer /// to packed f16, multiplying by the exponent part of `scale` /// before doing so. /// /// The byte to convert is chosen by `srcSelIndex`. class CvtScaleF32PkF16Fp4Op; } // namespace mlir::ROCDL namespace mlir::ROCDL { /// Scaled convert two fp8to two f16 /// Convert two packed fp8 values in `src0` to two f16 values, multiplying by the exponent in `scale`. /// The two values to be converted are selected from the low or high half /// of `src` (a packed vector represented as an `i32`) /// on the basis of `srcLoHiSel`. class CvtScaleF32PkF16Fp8Op; } // namespace mlir::ROCDL namespace mlir::ROCDL { /// Scaled convert two bf8to two f32 /// Convert two packed bf8 values in `src0` to two f32 values, multiplying by the exponent in `scale`. /// The two values to be converted are selected from the low or high half /// of `src` (a packed vector represented as an `i32`) /// on the basis of `srcLoHiSel`. class CvtScaleF32PkF32Bf8Op; } // namespace mlir::ROCDL namespace mlir::ROCDL { /// Scale and convert two packed fp4 to packed f32 /// Convert two packed fp4 (f4E2M1) values stored as one byte of a 32-bit integer /// to packed f32, multiplying by the exponent part of `scale` /// before doing so. /// /// The byte to convert is chosen by `srcSelIndex`. class CvtScaleF32PkF32Fp4Op; } // namespace mlir::ROCDL namespace mlir::ROCDL { /// Scaled convert two fp8to two f32 /// Convert two packed fp8 values in `src0` to two f32 values, multiplying by the exponent in `scale`. /// The two values to be converted are selected from the low or high half /// of `src` (a packed vector represented as an `i32`) /// on the basis of `srcLoHiSel`. class CvtScaleF32PkF32Fp8Op; } // namespace mlir::ROCDL namespace mlir::ROCDL { /// Scale and convert two bf16 to packed fp4, updating tied vector /// Convert two packed bf16 values to packed /// fp4, dividing by the exponent part of `scale` /// before doing so. /// /// The two scaled values are packed into a byte. /// That byte is used to update the `dstSelIndex`th /// byte of `oldVdst`, which is returned in its entirity. class CvtScaleF32PkFp4Bf16Op; } // namespace mlir::ROCDL namespace mlir::ROCDL { /// Scale and convert two f16 to packed fp4, updating tied vector /// Convert two packed f16 values to packed /// fp4, dividing by the exponent part of `scale` /// before doing so. /// /// The two scaled values are packed into a byte. /// That byte is used to update the `dstSelIndex`th /// byte of `oldVdst`, which is returned in its entirity. class CvtScaleF32PkFp4F16Op; } // namespace mlir::ROCDL namespace mlir::ROCDL { /// Scale and convert two f32 values to two packed fp4, updating tied vector /// Convert two single-precision float values, passed in `src0` and `src1` /// into two fp4 values, dividing them by the expontent part of `scale` /// before doing so. /// /// The two scaled values are packed into a byte. /// That byte is used to update the `dstSelIndex`th /// byte of `oldVdst`, which is returned in its entirity. /// /// Example: /// ```mlir /// // Scaled convert two f32 values to packed fp4 in byte 0 of old. /// %0 = rocdl.cvt.scalef32.pk.fp4.f32 %a, %b, %scale -> %old[0] : i32 /// ``` class CvtScaleF32PkFp4F32Op; } // namespace mlir::ROCDL namespace mlir::ROCDL { /// Scaled convert two bf16to two fp8, updating packed vector /// Convert two bf16 values in `src0` to two fp8 bytes, dividing by the exponent in `scale`. The bytes are /// packed into a 16-bit value which is inserted into `oldVdst` at the /// `dstLoHiSel` position, with the entire updated vector being returned. class CvtScaleF32PkFp8Bf16Op; } // namespace mlir::ROCDL namespace mlir::ROCDL { /// Scaled convert two f16to two fp8, updating packed vector /// Convert two f16 values in `src0` to two fp8 bytes, dividing by the exponent in `scale`. The bytes are /// packed into a 16-bit value which is inserted into `oldVdst` at the /// `dstLoHiSel` position, with the entire updated vector being returned. class CvtScaleF32PkFp8F16Op; } // namespace mlir::ROCDL namespace mlir::ROCDL { /// Scaled convert two f32 to two fp8, updating packed vector /// Convert two f32 values in `src0` and `src1` to two fp8 bytes, /// dividing by the exponent in `scale`. The bytes are packed into /// a 16-bit value which is inserted into `oldVdst` at the `dstLoHiSel` /// position, with the entire updated vector being returned. class CvtScaleF32PkFp8F32Op; } // namespace mlir::ROCDL namespace mlir::ROCDL { /// Scaled convert bf16to bf8 with stochiastic rounding, updating packed vector /// Convert a bf16 value in `src0` to a bf8 bytes, dividing by the exponent in `scale` and using `seed` /// for stochiastic rounding. Place the resulting byte in the /// `dstSelIndex`th bit of `oldVdst` and return the entire packed vector, /// which is stored as an `i32`. class CvtScaleF32SrBf8BF16Op; } // namespace mlir::ROCDL namespace mlir::ROCDL { /// Scaled convert f16to bf8 with stochiastic rounding, updating packed vector /// Convert a f16 value in `src0` to a bf8 bytes, dividing by the exponent in `scale` and using `seed` /// for stochiastic rounding. Place the resulting byte in the /// `dstSelIndex`th bit of `oldVdst` and return the entire packed vector, /// which is stored as an `i32`. class CvtScaleF32SrBf8F16Op; } // namespace mlir::ROCDL namespace mlir::ROCDL { /// Scaled convert f32to bf8 with stochiastic rounding, updating packed vector /// Convert a f32 value in `src0` to a bf8 bytes, dividing by the exponent in `scale` and using `seed` /// for stochiastic rounding. Place the resulting byte in the /// `dstSelIndex`th bit of `oldVdst` and return the entire packed vector, /// which is stored as an `i32`. class CvtScaleF32SrBf8F32Op; } // namespace mlir::ROCDL namespace mlir::ROCDL { /// Scaled convert bf16to fp8 with stochiastic rounding, updating packed vector /// Convert a bf16 value in `src0` to a fp8 bytes, dividing by the exponent in `scale` and using `seed` /// for stochiastic rounding. Place the resulting byte in the /// `dstSelIndex`th bit of `oldVdst` and return the entire packed vector, /// which is stored as an `i32`. class CvtScaleF32SrFp8BF16Op; } // namespace mlir::ROCDL namespace mlir::ROCDL { /// Scaled convert f16to fp8 with stochiastic rounding, updating packed vector /// Convert a f16 value in `src0` to a fp8 bytes, dividing by the exponent in `scale` and using `seed` /// for stochiastic rounding. Place the resulting byte in the /// `dstSelIndex`th bit of `oldVdst` and return the entire packed vector, /// which is stored as an `i32`. class CvtScaleF32SrFp8F16Op; } // namespace mlir::ROCDL namespace mlir::ROCDL { /// Scaled convert f32to fp8 with stochiastic rounding, updating packed vector /// Convert a f32 value in `src0` to a fp8 bytes, dividing by the exponent in `scale` and using `seed` /// for stochiastic rounding. Place the resulting byte in the /// `dstSelIndex`th bit of `oldVdst` and return the entire packed vector, /// which is stored as an `i32`. class CvtScaleF32SrFp8F32Op; } // namespace mlir::ROCDL namespace mlir::ROCDL { /// Scale and convert packed bf16 to packed bf6 with stochastic rounding /// Convert 8 packed bf16 values to packed bf6, multiplying by the exponent part of `scale` /// before doing so and apply stochastic rounding. This op is for gfx1250+ arch. class CvtScaleF32SrPk16Bf6Bf16Op; } // namespace mlir::ROCDL namespace mlir::ROCDL { /// Scale and convert packed f16 to packed bf6 with stochastic rounding /// Convert 8 packed f16 values to packed bf6, multiplying by the exponent part of `scale` /// before doing so and apply stochastic rounding. This op is for gfx1250+ arch. class CvtScaleF32SrPk16Bf6F16Op; } // namespace mlir::ROCDL namespace mlir::ROCDL { /// Scale and convert packed f32 to packed bf6 with stochastic rounding /// Convert 8 packed f32 values to packed bf6, multiplying by the exponent part of `scale` /// before doing so and apply stochastic rounding. This op is for gfx1250+ arch. class CvtScaleF32SrPk16Bf6F32Op; } // namespace mlir::ROCDL namespace mlir::ROCDL { /// Scale and convert packed bf16 to packed fp6 with stochastic rounding /// Convert 8 packed bf16 values to packed fp6, multiplying by the exponent part of `scale` /// before doing so and apply stochastic rounding. This op is for gfx1250+ arch. class CvtScaleF32SrPk16Fp6Bf16Op; } // namespace mlir::ROCDL namespace mlir::ROCDL { /// Scale and convert packed f16 to packed fp6 with stochastic rounding /// Convert 8 packed f16 values to packed fp6, multiplying by the exponent part of `scale` /// before doing so and apply stochastic rounding. This op is for gfx1250+ arch. class CvtScaleF32SrPk16Fp6F16Op; } // namespace mlir::ROCDL namespace mlir::ROCDL { /// Scale and convert packed f32 to packed fp6 with stochastic rounding /// Convert 8 packed f32 values to packed fp6, multiplying by the exponent part of `scale` /// before doing so and apply stochastic rounding. This op is for gfx1250+ arch. class CvtScaleF32SrPk16Fp6F32Op; } // namespace mlir::ROCDL namespace mlir::ROCDL { /// Scale and convert packed bf16 to packed bf6 with stochiastic rounding /// Convert 32 packed bf16 values to packed bf6, dividing by the exponent part of `scale` /// before doing so and applying random rounding derived from /// `seed`. class CvtScaleF32SrPk32Bf6Bf16Op; } // namespace mlir::ROCDL namespace mlir::ROCDL { /// Scale and convert packed f16 to packed bf6 with stochiastic rounding /// Convert 32 packed f16 values to packed bf6, dividing by the exponent part of `scale` /// before doing so and applying random rounding derived from /// `seed`. class CvtScaleF32SrPk32Bf6F16Op; } // namespace mlir::ROCDL namespace mlir::ROCDL { /// Scale and convert packed f32 to packed bf6 with stochiastic rounding /// Convert 32 packed f32 values to packed bf6, dividing by the exponent part of `scale` /// before doing so and applying random rounding derived from /// `seed`. class CvtScaleF32SrPk32Bf6F32Op; } // namespace mlir::ROCDL namespace mlir::ROCDL { /// Scale and convert packed bf16 to packed fp6 with stochiastic rounding /// Convert 32 packed bf16 values to packed fp6, dividing by the exponent part of `scale` /// before doing so and applying random rounding derived from /// `seed`. class CvtScaleF32SrPk32Fp6Bf16Op; } // namespace mlir::ROCDL namespace mlir::ROCDL { /// Scale and convert packed f16 to packed fp6 with stochiastic rounding /// Convert 32 packed f16 values to packed fp6, dividing by the exponent part of `scale` /// before doing so and applying random rounding derived from /// `seed`. class CvtScaleF32SrPk32Fp6F16Op; } // namespace mlir::ROCDL namespace mlir::ROCDL { /// Scale and convert packed f32 to packed fp6 with stochiastic rounding /// Convert 32 packed f32 values to packed fp6, dividing by the exponent part of `scale` /// before doing so and applying random rounding derived from /// `seed`. class CvtScaleF32SrPk32Fp6F32Op; } // namespace mlir::ROCDL namespace mlir::ROCDL { /// Scale and convert packed bf16 to packed bf8 with stochastic rounding /// Convert 8 packed bf16 values to packed bf8, multiplying by the exponent part of `scale` /// before doing so and apply stochastic rounding. This op is for gfx1250+ arch. class CvtScaleF32SrPk8Bf8Bf16Op; } // namespace mlir::ROCDL namespace mlir::ROCDL { /// Scale and convert packed f16 to packed bf8 with stochastic rounding /// Convert 8 packed f16 values to packed bf8, multiplying by the exponent part of `scale` /// before doing so and apply stochastic rounding. This op is for gfx1250+ arch. class CvtScaleF32SrPk8Bf8F16Op; } // namespace mlir::ROCDL namespace mlir::ROCDL { /// Scale and convert packed f32 to packed bf8 with stochastic rounding /// Convert 8 packed f32 values to packed bf8, multiplying by the exponent part of `scale` /// before doing so and apply stochastic rounding. This op is for gfx1250+ arch. class CvtScaleF32SrPk8Bf8F32Op; } // namespace mlir::ROCDL namespace mlir::ROCDL { /// Scale and convert packed bf16 to packed fp4 with stochastic rounding /// Convert 8 packed bf16 values to packed fp4, multiplying by the exponent part of `scale` /// before doing so and apply stochastic rounding. This op is for gfx1250+ arch. class CvtScaleF32SrPk8Fp4Bf16Op; } // namespace mlir::ROCDL namespace mlir::ROCDL { /// Scale and convert packed f16 to packed fp4 with stochastic rounding /// Convert 8 packed f16 values to packed fp4, multiplying by the exponent part of `scale` /// before doing so and apply stochastic rounding. This op is for gfx1250+ arch. class CvtScaleF32SrPk8Fp4F16Op; } // namespace mlir::ROCDL namespace mlir::ROCDL { /// Scale and convert packed f32 to packed fp4 with stochastic rounding /// Convert 8 packed f32 values to packed fp4, multiplying by the exponent part of `scale` /// before doing so and apply stochastic rounding. This op is for gfx1250+ arch. class CvtScaleF32SrPk8Fp4F32Op; } // namespace mlir::ROCDL namespace mlir::ROCDL { /// Scale and convert packed bf16 to packed fp8 with stochastic rounding /// Convert 8 packed bf16 values to packed fp8, multiplying by the exponent part of `scale` /// before doing so and apply stochastic rounding. This op is for gfx1250+ arch. class CvtScaleF32SrPk8Fp8Bf16Op; } // namespace mlir::ROCDL namespace mlir::ROCDL { /// Scale and convert packed f16 to packed fp8 with stochastic rounding /// Convert 8 packed f16 values to packed fp8, multiplying by the exponent part of `scale` /// before doing so and apply stochastic rounding. This op is for gfx1250+ arch. class CvtScaleF32SrPk8Fp8F16Op; } // namespace mlir::ROCDL namespace mlir::ROCDL { /// Scale and convert packed f32 to packed fp8 with stochastic rounding /// Convert 8 packed f32 values to packed fp8, multiplying by the exponent part of `scale` /// before doing so and apply stochastic rounding. This op is for gfx1250+ arch. class CvtScaleF32SrPk8Fp8F32Op; } // namespace mlir::ROCDL namespace mlir::ROCDL { /// Scale and convert two bf16 to packed fp4 with stochiastic rounding, updating tied vector /// Convert two packed bf16 values to packed /// fp4, dividing by the exponent part of `scale` /// before doing so and using `seed` as the random seed for /// stochiastic rounding. /// /// The two scaled values are packed (little-endian) /// into a byte. That byte is used to update the `dstSelIndex`th /// byte of `oldVdst`, which is returned in its entirity. class CvtScaleF32SrPkFp4Bf16Op; } // namespace mlir::ROCDL namespace mlir::ROCDL { /// Scale and convert two f16 to packed fp4 with stochiastic rounding, updating tied vector /// Convert two packed f16 values to packed /// fp4, dividing by the exponent part of `scale` /// before doing so and using `seed` as the random seed for /// stochiastic rounding. /// /// The two scaled values are packed (little-endian) /// into a byte. That byte is used to update the `dstSelIndex`th /// byte of `oldVdst`, which is returned in its entirity. class CvtScaleF32SrPkFp4F16Op; } // namespace mlir::ROCDL namespace mlir::ROCDL { /// Scale and convert two f32 to packed fp4 with stochiastic rounding, updating tied vector /// Convert two packed f32 values to packed /// fp4, dividing by the exponent part of `scale` /// before doing so and using `seed` as the random seed for /// stochiastic rounding. /// /// The two scaled values are packed (little-endian) /// into a byte. That byte is used to update the `dstSelIndex`th /// byte of `oldVdst`, which is returned in its entirity. class CvtScaleF32SrPkFp4F32Op; } // namespace mlir::ROCDL namespace mlir::ROCDL { /// Convert f32 to bf8, stochiastic rounding /// Convert `srcA` to bf8, adding the rounding factor from `srcB`, /// and store into the `byteSel`th byte of `old`, preserving the others. /// /// Example: /// ```mlir /// // Stochastic rounding convert f32 to bf8 in byte 2 of old. /// %0 = rocdl.cvt.sr.bf8.f32 %val, %stoch -> %old[2] : i32 /// ``` class CvtSrBf8F32Op; } // namespace mlir::ROCDL namespace mlir::ROCDL { /// Convert f32 to fp8, stochiastic rounding /// Convert `srcA` to fp8, adding the rounding factor from `srcB`, /// and store into the `byteSel`th byte of `old`, preserving the others. /// /// Example: /// ```mlir /// // Stochastic rounding convert f32 to fp8 in byte 3 of old. /// %0 = rocdl.cvt.sr.fp8.f32 %val, %stoch -> %old[3] : i32 /// ``` class CvtSrFp8F32Op; } // namespace mlir::ROCDL namespace mlir::ROCDL { class DPPUpdateOp; } // namespace mlir::ROCDL namespace mlir::ROCDL { /// Waits on a given DS barrier and decrements pending count by -1. /// Stays in order with ASYNC loads to LDS, and uses ASYNCcnt to track its completion. /// Available on gfx1250+. /// /// Example: /// ```mlir /// // Async atomic barrier arrive (fire-and-forget). /// rocdl.ds.atomic.async.barrier.arrive.b64 %ptr : !llvm.ptr<3> /// ``` class DsAtomicAsyncBarrierArriveOp; } // namespace mlir::ROCDL namespace mlir::ROCDL { /// Waits on a given DS barrier and decrements its pending count by a given value. Note, the barrier state /// is given as a 64-bit structure containing pending count, phase and init count. The op returns the old /// barrier state. The op is executed as an ordinary LDS operations and it is ordered with other LDS operations. /// Thus, check DSCNT to determine when this instruction has executed. /// Available on gfx1250+. /// /// Example: /// ```mlir /// // Atomic barrier arrive with return of old barrier state. /// %res = rocdl.ds.atomic.barrier.arrive.rtn.b64 %ptr, %val : !llvm.ptr<3>, i64 -> i64 /// ``` class DsAtomicBarrierArriveRtnOp; } // namespace mlir::ROCDL namespace mlir::ROCDL { /// Perform a backward permute (pull) operation across lanes using DS/LDS permute hardware. /// /// Each lane reads the value of `src` from the lane whose byte address is /// given by `index` (i.e. lane id = `index / 4`). /// /// This is “backward” (pull) in contrast to `ds_permute_b32`, which is /// “forward” (push/scatter). /// /// Example: /// ```mlir /// // Backward permute across lanes (pull from selected lane). /// %0 = rocdl.ds_bpermute %index, %src : (i32, i32) -> i32 /// ``` class DsBpermuteOp; } // namespace mlir::ROCDL namespace mlir::ROCDL { /// Loads and transposes a matrix from ds memory to registers (available in gfx1250+). /// Load a matrix of 16-bit data from the ds memory, /// transpose data between row-major and column-major order, /// and store the result into a 128-bit vector register. /// /// Available in gfx1250+. /// /// Example (concrete mnemonics depend on address space and element size): /// ```mlir /// // 64-bit transpose load from global memory. /// %0 = rocdl.global.load.tr4.b64 %ptr : !llvm.ptr<1> -> vector<2xi32> /// /// // 128-bit transpose load from global memory with f16 result. /// %1 = rocdl.global.load.tr.b128 %ptr : !llvm.ptr<1> -> vector<8xf16> /// /// // 64-bit transpose load from LDS. /// %2 = rocdl.ds.load.tr4.b64 %ptr : !llvm.ptr<3> -> vector<2xi32> /// /// // 128-bit transpose load from LDS with bf16 result. /// %3 = rocdl.ds.load.tr16.b128 %ptr : !llvm.ptr<3> -> vector<8xbf16> /// ``` class DsLoadTr16_B128; } // namespace mlir::ROCDL namespace mlir::ROCDL { /// Loads and transposes a matrix from ds memory to registers (available in gfx1250+). /// Load a matrix of 4-bit data from the ds memory, /// transpose data between row-major and column-major order, /// and store the result into a 64-bit vector register. /// /// Available in gfx1250+. /// /// Example (concrete mnemonics depend on address space and element size): /// ```mlir /// // 64-bit transpose load from global memory. /// %0 = rocdl.global.load.tr4.b64 %ptr : !llvm.ptr<1> -> vector<2xi32> /// /// // 128-bit transpose load from global memory with f16 result. /// %1 = rocdl.global.load.tr.b128 %ptr : !llvm.ptr<1> -> vector<8xf16> /// /// // 64-bit transpose load from LDS. /// %2 = rocdl.ds.load.tr4.b64 %ptr : !llvm.ptr<3> -> vector<2xi32> /// /// // 128-bit transpose load from LDS with bf16 result. /// %3 = rocdl.ds.load.tr16.b128 %ptr : !llvm.ptr<3> -> vector<8xbf16> /// ``` class DsLoadTr4_B64; } // namespace mlir::ROCDL namespace mlir::ROCDL { /// Loads and transposes a matrix from ds memory to registers (available in gfx1250+). /// Load a matrix of 6-bit data from the ds memory, /// transpose data between row-major and column-major order, /// and store the result into a 96-bit vector register. /// /// Available in gfx1250+. /// /// Example (concrete mnemonics depend on address space and element size): /// ```mlir /// // 64-bit transpose load from global memory. /// %0 = rocdl.global.load.tr4.b64 %ptr : !llvm.ptr<1> -> vector<2xi32> /// /// // 128-bit transpose load from global memory with f16 result. /// %1 = rocdl.global.load.tr.b128 %ptr : !llvm.ptr<1> -> vector<8xf16> /// /// // 64-bit transpose load from LDS. /// %2 = rocdl.ds.load.tr4.b64 %ptr : !llvm.ptr<3> -> vector<2xi32> /// /// // 128-bit transpose load from LDS with bf16 result. /// %3 = rocdl.ds.load.tr16.b128 %ptr : !llvm.ptr<3> -> vector<8xbf16> /// ``` class DsLoadTr6_B96; } // namespace mlir::ROCDL namespace mlir::ROCDL { /// Loads and transposes a matrix from ds memory to registers (available in gfx1250+). /// Load a matrix of 8-bit data from the ds memory, /// transpose data between row-major and column-major order, /// and store the result into a 64-bit vector register. /// /// Available in gfx1250+. /// /// Example (concrete mnemonics depend on address space and element size): /// ```mlir /// // 64-bit transpose load from global memory. /// %0 = rocdl.global.load.tr4.b64 %ptr : !llvm.ptr<1> -> vector<2xi32> /// /// // 128-bit transpose load from global memory with f16 result. /// %1 = rocdl.global.load.tr.b128 %ptr : !llvm.ptr<1> -> vector<8xf16> /// /// // 64-bit transpose load from LDS. /// %2 = rocdl.ds.load.tr4.b64 %ptr : !llvm.ptr<3> -> vector<2xi32> /// /// // 128-bit transpose load from LDS with bf16 result. /// %3 = rocdl.ds.load.tr16.b128 %ptr : !llvm.ptr<3> -> vector<8xbf16> /// ``` class DsLoadTr8_B64; } // namespace mlir::ROCDL namespace mlir::ROCDL { /// Perform a data-sharing swizzle operation within a wavefront. /// /// The `offset` operand encodes the *swizzle pattern* that will be placed in the /// instruction's `offset` field (i.e., the pattern used by `ds_swizzle_b32`). /// See https://llvm.org/docs/AMDGPUModifierSyntax.html#swizzle-pattern for /// how this 16-bit pattern is constructed. /// /// Example: /// ```mlir /// // Swizzle data within a wavefront. /// %0 = rocdl.ds_swizzle %src, %offset : (i32, i32) -> i32 /// ``` class DsSwizzleOp; } // namespace mlir::ROCDL namespace mlir::ROCDL { /// Median of three float/half values /// Computes the median of three floating-point values using the AMDGPU fmed3 intrinsic. /// This operation is equivalent to `max(min(a, b), min(max(a, b), c))` but uses the /// hardware-accelerated V_MED3_F16/V_MED3_F32 instruction for better performance. /// /// The operation supports both scalar and vector floating-point types (f16, f32). /// /// Example: /// ```mlir /// // Scalar f32 median /// %result = rocdl.fmed3 %a, %b, %c : f32 /// /// // Vector f16 median /// %result = rocdl.fmed3 %va, %vb, %vc : vector<4xf16> /// ``` class FMed3Op; } // namespace mlir::ROCDL namespace mlir::ROCDL { /// Prefetches 1 byte of data per lane using flat-memory addresses into the WGP-cache or L2-cache. /// Available on gfx1250+. /// /// Example: /// ```mlir /// // Prefetch from flat memory into cache. /// rocdl.flat.prefetch %ptr, 0 : !llvm.ptr /// ``` class FlatPrefetchOp; } // namespace mlir::ROCDL namespace mlir::ROCDL { /// Available on gfx1200+. /// /// Example: /// ```mlir /// // Query barrier state by id. /// %0 = rocdl.s.get.barrier.state id = 1 -> i32 /// ``` class GetBarrierStateOp; } // namespace mlir::ROCDL namespace mlir::ROCDL { /// Available on gfx1250+. /// /// Example: /// ```mlir /// // Query named barrier state by pointer. /// %0 = rocdl.s.get.named.barrier.state %ptr : !llvm.ptr<3> -> i32 /// ``` class GetNamedBarrierStateOp; } // namespace mlir::ROCDL namespace mlir::ROCDL { /// Version of rocdl.load.async.to.lds specialized to global pointers /// This operation works identically to `rocdl.load.async.to.lds` except that the /// global pointer argument is limited to pointers in address space 1 (pure global /// pointers) instead of also allowing fat buffer pointers. /// /// Available on gfx9 and gfx10. /// /// For the operation introduced in gfx1250, see `rocdl.global.load.async.to.lds.bN`. /// /// Example: /// ```mlir /// // Async load from global pointer to LDS (address space 1 only). /// rocdl.load.async.to.lds %global, %shared, 4, 0, 0 : !llvm.ptr<1>, !llvm.ptr<3> /// ``` class GlobalLoadAsyncLDSOp; } // namespace mlir::ROCDL namespace mlir::ROCDL { /// Asynchronously loads 128 bits of data from a global memory pointer /// to a Local Data Share (LDS) pointer. /// /// Available on gfx1250+. /// /// Example: /// ```mlir /// // Async 128-bit load from global to LDS. /// rocdl.global.load.async.to.lds.b128 %src, %dst, 0, 0 : !llvm.ptr<1>, !llvm.ptr<3> /// ``` class GlobalLoadAsyncToLDSB128Op; } // namespace mlir::ROCDL namespace mlir::ROCDL { /// Asynchronously loads 32 bits of data from a global memory pointer /// to a Local Data Share (LDS) pointer. /// /// Available on gfx1250+. /// /// Example: /// ```mlir /// // Async 32-bit load from global to LDS. /// rocdl.global.load.async.to.lds.b32 %src, %dst, 0, 0 : !llvm.ptr<1>, !llvm.ptr<3> /// ``` class GlobalLoadAsyncToLDSB32Op; } // namespace mlir::ROCDL namespace mlir::ROCDL { /// Asynchronously loads 64 bits of data from a global memory pointer /// to a Local Data Share (LDS) pointer. /// /// Available on gfx1250+. /// /// Example: /// ```mlir /// // Async 64-bit load from global to LDS. /// rocdl.global.load.async.to.lds.b64 %src, %dst, 0, 0 : !llvm.ptr<1>, !llvm.ptr<3> /// ``` class GlobalLoadAsyncToLDSB64Op; } // namespace mlir::ROCDL namespace mlir::ROCDL { /// Asynchronously loads 8 bits of data from a global memory pointer /// to a Local Data Share (LDS) pointer. /// /// Available on gfx1250+. /// /// Example: /// ```mlir /// // Async 8-bit load from global to LDS. /// rocdl.global.load.async.to.lds.b8 %src, %dst, 0, 0 : !llvm.ptr<1>, !llvm.ptr<3> /// ``` class GlobalLoadAsyncToLDSB8Op; } // namespace mlir::ROCDL namespace mlir::ROCDL { class GlobalLoadLDSOp; } // namespace mlir::ROCDL namespace mlir::ROCDL { /// Loads and transposes a matrix from global memory to registers (available in gfx1250+). /// Load a matrix of 4-bit data from the global memory, /// transpose data between row-major and column-major order, /// and store the result into a 64-bit vector register. /// /// Available in gfx1250+. /// /// Example (concrete mnemonics depend on address space and element size): /// ```mlir /// // 64-bit transpose load from global memory. /// %0 = rocdl.global.load.tr4.b64 %ptr : !llvm.ptr<1> -> vector<2xi32> /// /// // 128-bit transpose load from global memory with f16 result. /// %1 = rocdl.global.load.tr.b128 %ptr : !llvm.ptr<1> -> vector<8xf16> /// /// // 64-bit transpose load from LDS. /// %2 = rocdl.ds.load.tr4.b64 %ptr : !llvm.ptr<3> -> vector<2xi32> /// /// // 128-bit transpose load from LDS with bf16 result. /// %3 = rocdl.ds.load.tr16.b128 %ptr : !llvm.ptr<3> -> vector<8xbf16> /// ``` class GlobalLoadTr4_B64; } // namespace mlir::ROCDL namespace mlir::ROCDL { /// Loads and transposes a matrix from global memory to registers (available in gfx1250+). /// Load a matrix of 6-bit data from the global memory, /// transpose data between row-major and column-major order, /// and store the result into a 96-bit vector register. /// /// Available in gfx1250+. /// /// Example (concrete mnemonics depend on address space and element size): /// ```mlir /// // 64-bit transpose load from global memory. /// %0 = rocdl.global.load.tr4.b64 %ptr : !llvm.ptr<1> -> vector<2xi32> /// /// // 128-bit transpose load from global memory with f16 result. /// %1 = rocdl.global.load.tr.b128 %ptr : !llvm.ptr<1> -> vector<8xf16> /// /// // 64-bit transpose load from LDS. /// %2 = rocdl.ds.load.tr4.b64 %ptr : !llvm.ptr<3> -> vector<2xi32> /// /// // 128-bit transpose load from LDS with bf16 result. /// %3 = rocdl.ds.load.tr16.b128 %ptr : !llvm.ptr<3> -> vector<8xbf16> /// ``` class GlobalLoadTr6_B96; } // namespace mlir::ROCDL namespace mlir::ROCDL { /// Loads and transposes a matrix from global memory to registers (available in gfx1250+). /// Load a matrix of 16-bit data from the global memory, /// transpose data between row-major and column-major order, /// and store the result into a 128-bit vector register. /// /// Available in gfx1250+. /// /// Example (concrete mnemonics depend on address space and element size): /// ```mlir /// // 64-bit transpose load from global memory. /// %0 = rocdl.global.load.tr4.b64 %ptr : !llvm.ptr<1> -> vector<2xi32> /// /// // 128-bit transpose load from global memory with f16 result. /// %1 = rocdl.global.load.tr.b128 %ptr : !llvm.ptr<1> -> vector<8xf16> /// /// // 64-bit transpose load from LDS. /// %2 = rocdl.ds.load.tr4.b64 %ptr : !llvm.ptr<3> -> vector<2xi32> /// /// // 128-bit transpose load from LDS with bf16 result. /// %3 = rocdl.ds.load.tr16.b128 %ptr : !llvm.ptr<3> -> vector<8xbf16> /// ``` class GlobalLoadTr8_B128; } // namespace mlir::ROCDL namespace mlir::ROCDL { /// Loads and transposes a matrix from global memory to registers (available in gfx1250+). /// Load a matrix of 8-bit data from the global memory, /// transpose data between row-major and column-major order, /// and store the result into a 64-bit vector register. /// /// Available in gfx1250+. /// /// Example (concrete mnemonics depend on address space and element size): /// ```mlir /// // 64-bit transpose load from global memory. /// %0 = rocdl.global.load.tr4.b64 %ptr : !llvm.ptr<1> -> vector<2xi32> /// /// // 128-bit transpose load from global memory with f16 result. /// %1 = rocdl.global.load.tr.b128 %ptr : !llvm.ptr<1> -> vector<8xf16> /// /// // 64-bit transpose load from LDS. /// %2 = rocdl.ds.load.tr4.b64 %ptr : !llvm.ptr<3> -> vector<2xi32> /// /// // 128-bit transpose load from LDS with bf16 result. /// %3 = rocdl.ds.load.tr16.b128 %ptr : !llvm.ptr<3> -> vector<8xbf16> /// ``` class GlobalLoadTr8_B64; } // namespace mlir::ROCDL namespace mlir::ROCDL { /// Prefetches 1 byte of data per lane from global memory into the WGP-cache or L2-cache. /// Available on gfx1250+. /// /// Example: /// ```mlir /// // Prefetch from global memory into cache. /// rocdl.global.prefetch %ptr, 0 : !llvm.ptr<1> /// ``` class GlobalPrefetchOp; } // namespace mlir::ROCDL namespace mlir::ROCDL { /// Asynchronously stores 128 bits of data from a Local Data Share (LDS) /// pointer to a global memory pointer. /// /// Available on gfx1250+. /// /// Example: /// ```mlir /// // Async 128-bit store from LDS to global. /// rocdl.global.store.async.from.lds.b128 %dst, %src, 0, 0 : !llvm.ptr<1>, !llvm.ptr<3> /// ``` class GlobalStoreAsyncFromLDSB128Op; } // namespace mlir::ROCDL namespace mlir::ROCDL { /// Asynchronously stores 32 bits of data from a Local Data Share (LDS) /// pointer to a global memory pointer. /// /// Available on gfx1250+. /// /// Example: /// ```mlir /// // Async 32-bit store from LDS to global. /// rocdl.global.store.async.from.lds.b32 %dst, %src, 0, 0 : !llvm.ptr<1>, !llvm.ptr<3> /// ``` class GlobalStoreAsyncFromLDSB32Op; } // namespace mlir::ROCDL namespace mlir::ROCDL { /// Asynchronously stores 64 bits of data from a Local Data Share (LDS) /// pointer to a global memory pointer. /// /// Available on gfx1250+. /// /// Example: /// ```mlir /// // Async 64-bit store from LDS to global. /// rocdl.global.store.async.from.lds.b64 %dst, %src, 0, 0 : !llvm.ptr<1>, !llvm.ptr<3> /// ``` class GlobalStoreAsyncFromLDSB64Op; } // namespace mlir::ROCDL namespace mlir::ROCDL { /// Asynchronously stores 8 bits of data from a Local Data Share (LDS) /// pointer to a global memory pointer. /// /// Available on gfx1250+. /// /// Example: /// ```mlir /// // Async 8-bit store from LDS to global. /// rocdl.global.store.async.from.lds.b8 %dst, %src, 0, 0 : !llvm.ptr<1>, !llvm.ptr<3> /// ``` class GlobalStoreAsyncFromLDSB8Op; } // namespace mlir::ROCDL namespace mlir::ROCDL { /// Instruction-group-level parallelism optimization hint. /// /// Example: /// ```mlir /// // IGLP optimization hint variant 0. /// rocdl.iglp.opt 0 /// ``` class IglpOpt; } // namespace mlir::ROCDL namespace mlir::ROCDL { /// Gathering load to LDS that requires explicit async memory tracking /// Load `size` bytes (the valid sizes vary by architecture) from the global memory /// pointed to by `globalPtr` and put them at `ldsPtr`, concantenating (and applying /// padding for sizes less than 4 bytes, along with padding out 12-byte reads /// to 16-byte writes). The value of `globalPtr` can vary between lanes, while /// `sharedPtr` must be subgroup-uniform (the values from each lane are concatentated /// before being written to LDS with appropriate padding applied.) /// /// `offset` is a constant offset applied to **both** pointers, and `aux` sets the cache /// policy. Unlike `rocdl.load.to.lds`, the compiler will not automatically inserts waits /// for this load to complete at the point it thinks you're using a region of LDS you've /// stored values to - you need to use the `rocdl.asyncmark` and `rocdl.wait.asyncmark` /// operations to explicitly group these operations and wait for their completion. /// /// Available on gfx10 and earlier with varying suppported values of `size`. /// /// Example: /// ```mlir /// // Async load 4 bytes from global pointer to LDS. /// rocdl.load.async.to.lds %global, %shared, 4, 0, 0 : !llvm.ptr<1>, !llvm.ptr<3> /// /// // Async load 4 bytes from fat buffer pointer to LDS. /// rocdl.load.async.to.lds %fatBuffer, %shared, 4, 0, 0 : !llvm.ptr<7>, !llvm.ptr<3> /// ``` class LoadAsyncToLDSOp; } // namespace mlir::ROCDL namespace mlir::ROCDL { class LoadToLDSOp; } // namespace mlir::ROCDL namespace mlir::ROCDL { class MakeBufferRsrcOp; } // namespace mlir::ROCDL namespace mlir::ROCDL { /// Masked bit count of threads below the current lane in a wavefront. /// /// `in0` is a 32-bit mask that is AND-ed with the relevant half of the /// execution mask and the bits below the current lane; `in1` is added /// to the resulting popcount: /// /// - **lo**: `in1 + popcount(in0 & exec_lo & ((1 << min(lane_id, 32)) - 1))` /// - **hi**: `in1 + popcount(in0 & exec_hi & ((1 << saturating_usub(lane_id, 32)) - 1))` /// /// To obtain a unique thread index within a wave64, chain the two ops /// with `in0 = -1` (all bits set): /// /// Example: /// ```mlir /// %all_ones = arith.constant -1 : i32 /// %zero = arith.constant 0 : i32 /// /// // Count active threads below this lane in the low 32 lanes. /// %lo = rocdl.mbcnt.lo %all_ones, %zero : (i32, i32) -> i32 /// /// // Add the count from the high 32 lanes to get the full lane index. /// %hi = rocdl.mbcnt.hi %all_ones, %lo : (i32, i32) -> i32 /// ``` class MbcntHiOp; } // namespace mlir::ROCDL namespace mlir::ROCDL { /// Masked bit count of threads below the current lane in a wavefront. /// /// `in0` is a 32-bit mask that is AND-ed with the relevant half of the /// execution mask and the bits below the current lane; `in1` is added /// to the resulting popcount: /// /// - **lo**: `in1 + popcount(in0 & exec_lo & ((1 << min(lane_id, 32)) - 1))` /// - **hi**: `in1 + popcount(in0 & exec_hi & ((1 << saturating_usub(lane_id, 32)) - 1))` /// /// To obtain a unique thread index within a wave64, chain the two ops /// with `in0 = -1` (all bits set): /// /// Example: /// ```mlir /// %all_ones = arith.constant -1 : i32 /// %zero = arith.constant 0 : i32 /// /// // Count active threads below this lane in the low 32 lanes. /// %lo = rocdl.mbcnt.lo %all_ones, %zero : (i32, i32) -> i32 /// /// // Add the count from the high 32 lanes to get the full lane index. /// %hi = rocdl.mbcnt.hi %all_ones, %lo : (i32, i32) -> i32 /// ``` class MbcntLoOp; } // namespace mlir::ROCDL namespace mlir::ROCDL { /// Performs a `permlane16.swap` operation with the given operands, applying the /// permutation specified by $fi to the provided inputs. /// /// Example: /// ```mlir /// // Swap lanes between groups of 16 threads. /// %res = rocdl.permlane16.swap %src, %src, 0, -1 : (i32, i32) -> !llvm.struct<(i32, i32)> /// ``` class Permlane16SwapOp; } // namespace mlir::ROCDL namespace mlir::ROCDL { /// Performs a `permlane16.var` operation: a per-lane variable-selector /// intra-row permutation (within each 16-lane row). Maps to /// `llvm.amdgcn.permlane16.var`. /// /// Each destination lane within a 16-lane row reads its value from the /// source lane whose index is given by the corresponding per-lane entry /// in `$src1` (a VGPR). `$fi` and `$boundControl` are immediate i1 attrs /// matching the underlying intrinsic's modifiers. /// /// Example: /// ```mlir /// %res = rocdl.permlane16.var %old, %src, %selector, false, true : (i32, i32, i32) -> i32 /// ``` class Permlane16VarOp; } // namespace mlir::ROCDL namespace mlir::ROCDL { /// Performs a `permlane32.swap` operation with the given operands, applying the /// permutation specified by $fi to the provided inputs. /// /// Example: /// ```mlir /// // Swap lanes between groups of 32 threads. /// %res = rocdl.permlane32.swap %src, %src, 0, -1 : (i32, i32) -> !llvm.struct<(i32, i32)> /// ``` class Permlane32SwapOp; } // namespace mlir::ROCDL namespace mlir::ROCDL { /// Performs a `permlanex16` operation with the given operands, applying the /// permutation specified by $fi to the provided inputs. /// /// Example: /// ```mlir /// // Scalar permlanex16. /// %ret0 = rocdl.permlanex16 %src0, %src0, %sel, %sel, 0, -1 : f32, i32 /// /// // Vector permlanex16. /// %ret1 = rocdl.permlanex16 %src1, %src1, %sel, %sel, 0, -1 : vector<2xf32>, i32 /// ``` class PermlaneX16Op; } // namespace mlir::ROCDL namespace mlir::ROCDL { /// Performs a `permlanex16.var` operation: a per-lane variable-selector /// cross-row permutation (each lane in one 16-lane row reads from a /// per-lane-chosen source lane in the opposite row). Maps to /// `llvm.amdgcn.permlanex16.var`. /// /// With per-lane "identity" selectors this realises an XOR-16 swap pattern /// in pure VALU; with arbitrary selectors it enables general per-lane /// cross-half-wave permutations. `$fi` and `$boundControl` are immediate /// i1 attrs matching the underlying intrinsic's modifiers. /// /// Example: /// ```mlir /// %res = rocdl.permlanex16.var %old, %src, %selector, false, true : (i32, i32, i32) -> i32 /// ``` class PermlaneX16VarOp; } // namespace mlir::ROCDL namespace mlir::ROCDL { class RawBufferAtomicCmpSwap; } // namespace mlir::ROCDL namespace mlir::ROCDL { class RawBufferAtomicFAddOp; } // namespace mlir::ROCDL namespace mlir::ROCDL { class RawBufferAtomicFMaxOp; } // namespace mlir::ROCDL namespace mlir::ROCDL { class RawBufferAtomicSMaxOp; } // namespace mlir::ROCDL namespace mlir::ROCDL { class RawBufferAtomicUMinOp; } // namespace mlir::ROCDL namespace mlir::ROCDL { class RawBufferLoadOp; } // namespace mlir::ROCDL namespace mlir::ROCDL { class RawBufferStoreOp; } // namespace mlir::ROCDL namespace mlir::ROCDL { class RawPtrBufferAtomicCmpSwap; } // namespace mlir::ROCDL namespace mlir::ROCDL { class RawPtrBufferAtomicFaddOp; } // namespace mlir::ROCDL namespace mlir::ROCDL { class RawPtrBufferAtomicFmaxOp; } // namespace mlir::ROCDL namespace mlir::ROCDL { class RawPtrBufferAtomicSmaxOp; } // namespace mlir::ROCDL namespace mlir::ROCDL { class RawPtrBufferAtomicUminOp; } // namespace mlir::ROCDL namespace mlir::ROCDL { /// Async variant of raw.ptr.buffer.load.lds /// Load from a buffer resource `rsrc` to `ldsPtr`, which must be uniform. /// /// See `rocdl.load.async.to.lds` for overall semantics of such loads, noting that /// here `voffset` can be lane-varying and that `rsrc` (which holds the base addres) /// must, as always, be uniform. /// /// Available on gfx9 and gfx10. /// /// Example: /// ```mlir /// // Async buffer load to LDS via buffer resource pointer. /// rocdl.raw.ptr.buffer.load.async.lds %rsrc, %ldsPtr, %size, %voffset, %soffset, %offset, 0 /// ``` class RawPtrBufferLoadAsyncLdsOp; } // namespace mlir::ROCDL namespace mlir::ROCDL { class RawPtrBufferLoadLdsOp; } // namespace mlir::ROCDL namespace mlir::ROCDL { class RawPtrBufferLoadOp; } // namespace mlir::ROCDL namespace mlir::ROCDL { class RawPtrBufferStoreOp; } // namespace mlir::ROCDL namespace mlir::ROCDL { /// Get the value in first active lane. /// Returns the value in the lowest active lane of the input operand. /// /// Example: /// ```mlir /// // Scalar readfirstlane. /// %0 = rocdl.readfirstlane %src0 : f32 /// /// // Vector readfirstlane. /// %1 = rocdl.readfirstlane %src1 : vector<2xf32> /// ``` class ReadfirstlaneOp; } // namespace mlir::ROCDL namespace mlir::ROCDL { /// Get the value in the specific lane. /// Get the value in lane `src1` from input `src0`. /// /// Example: /// ```mlir /// // Scalar readlane. /// %0 = rocdl.readlane %src0, %idx : (f32, i32) -> f32 /// /// // Vector readlane. /// %1 = rocdl.readlane %src1, %idx : (vector<2xf32>, i32) -> vector<2xf32> /// ``` class ReadlaneOp; } // namespace mlir::ROCDL namespace mlir::ROCDL { /// Insert a workgroup barrier without memory fences. /// /// Available on gfx9 and later but deprecated on gfx12+; see /// `rocdl.s.barrier.signal` and `rocdl.s.barrier.wait` instead. /// /// Example: /// ```mlir /// // Synchronize threads within a workgroup. /// rocdl.s.barrier /// ``` class SBarrierOp; } // namespace mlir::ROCDL namespace mlir::ROCDL { /// Insert a number of NOP cycles. /// /// Example: /// ```mlir /// // Insert a no-op. /// rocdl.s.nop 0 /// ``` class SNopOp; } // namespace mlir::ROCDL namespace mlir::ROCDL { /// Sleep for a number of clock cycles. /// /// Example: /// ```mlir /// // Sleep for a minimum duration. /// rocdl.s.sleep 0 /// ``` class SSleepOp; } // namespace mlir::ROCDL namespace mlir::ROCDL { /// Wait for outstanding memory operations to complete, as specified by a /// bitfield whose semantics depend on the target chipset. /// /// Example: /// ```mlir /// // Wait for all counters to reach zero. /// rocdl.s.waitcnt 0 /// ``` class SWaitcntOp; } // namespace mlir::ROCDL namespace mlir::ROCDL { /// Insert a scheduling barrier with the given mask. The mask is a /// bitfield that controls which instruction types may be scheduled /// across the barrier. The mask values mirror the `llvm.amdgcn.sched.barrier` /// intrinsic's documented mask values and the AMDGPU backend's /// `SchedGroupMask` enum. /// /// Example: /// ```mlir /// // Scheduling barrier with no instructions allowed to cross. /// rocdl.sched.barrier none /// /// // Allow VALU and all VMEM instructions to cross. /// rocdl.sched.barrier valu|all_vmem /// ``` class SchedBarrier; } // namespace mlir::ROCDL namespace mlir::ROCDL { /// Insert a scheduling group barrier. The first parameter uses the same /// scheduling group mask values as `rocdl.sched.barrier`. /// /// Example: /// ```mlir /// // Schedule group barrier with mask, size, and group id. /// rocdl.sched.group.barrier mfma_wmma, 1, 0 /// ``` class SchedGroupBarrier; } // namespace mlir::ROCDL namespace mlir::ROCDL { /// Set the wavefront scheduling priority. /// /// Example: /// ```mlir /// // Set priority to 0. /// rocdl.s.setprio 0 /// ``` class SetPrioOp; } // namespace mlir::ROCDL namespace mlir::ROCDL { /// Base class for ROCDL tensor load/store to/from LDS. /// Moves tiles of tensor data between global memory and LDS. The tile is /// described by the $dgroup descriptors. 5 $dgroup descriptors allows for /// movement of up to 5D tensors. $cachePolicy describes the memory scope and an /// indicator of expected data re-use. /// /// This op is for gfx1250+ architectures. /// /// Example: /// ```mlir /// // Tensor load from global memory to LDS using 4 descriptor groups. /// rocdl.tensor.load.to.lds %dg0, %dg1, %dg2, %dg3, %dg4, 0 : vector<4xi32>, vector<8xi32> /// /// // Tensor store from LDS to global memory using 4 descriptor groups. /// rocdl.tensor.store.from.lds %dg0, %dg1, %dg2, %dg3, %dg4, 0 : vector<4xi32>, vector<8xi32> /// ``` class TensorLoadToLDSOp; } // namespace mlir::ROCDL namespace mlir::ROCDL { /// Base class for ROCDL tensor load/store to/from LDS. /// Moves tiles of tensor data between global memory and LDS. The tile is /// described by the $dgroup descriptors. 5 $dgroup descriptors allows for /// movement of up to 5D tensors. $cachePolicy describes the memory scope and an /// indicator of expected data re-use. /// /// This op is for gfx1250+ architectures. /// /// Example: /// ```mlir /// // Tensor load from global memory to LDS using 4 descriptor groups. /// rocdl.tensor.load.to.lds %dg0, %dg1, %dg2, %dg3, %dg4, 0 : vector<4xi32>, vector<8xi32> /// /// // Tensor store from LDS to global memory using 4 descriptor groups. /// rocdl.tensor.store.from.lds %dg0, %dg1, %dg2, %dg3, %dg4, 0 : vector<4xi32>, vector<8xi32> /// ``` class TensorStoreFromLDSOp; } // namespace mlir::ROCDL namespace mlir::ROCDL { /// Read a hardware register for thread/workgroup/cluster identification. /// An optional `range` attribute can constrain the returned value. /// /// Example: /// ```mlir /// // Read the workitem id in the x dimension. /// %0 = rocdl.workitem.id.x : i32 /// /// // Read with a known range constraint. /// %1 = rocdl.workitem.id.x range : i32 /// ``` class ThreadIdXOp; } // namespace mlir::ROCDL namespace mlir::ROCDL { /// Read a hardware register for thread/workgroup/cluster identification. /// An optional `range` attribute can constrain the returned value. /// /// Example: /// ```mlir /// // Read the workitem id in the x dimension. /// %0 = rocdl.workitem.id.x : i32 /// /// // Read with a known range constraint. /// %1 = rocdl.workitem.id.x range : i32 /// ``` class ThreadIdYOp; } // namespace mlir::ROCDL namespace mlir::ROCDL { /// Read a hardware register for thread/workgroup/cluster identification. /// An optional `range` attribute can constrain the returned value. /// /// Example: /// ```mlir /// // Read the workitem id in the x dimension. /// %0 = rocdl.workitem.id.x : i32 /// /// // Read with a known range constraint. /// %1 = rocdl.workitem.id.x range : i32 /// ``` class ThreadIdZOp; } // namespace mlir::ROCDL namespace mlir::ROCDL { /// Wait until ASYNCCNT is less than or equal to `count` /// Wait for the counter specified to be less-than or equal-to the `count` /// before continuing. /// /// Available on gfx1250+. /// /// Example: /// ```mlir /// // Wait for async counter to drain. /// rocdl.s.wait.asynccnt 0 /// ``` class WaitAsynccntOp; } // namespace mlir::ROCDL namespace mlir::ROCDL { /// Wait until N or fewer async operation groups are unexecuted /// This operation, along with `rocdl.asyncmark`, forms the compiler-provided /// framework for explicitly tracking asynchronous operations. /// /// At the point where a wait.asyncmark operation is executed, all async operations /// that were parts of any async group (established by asyncmark in program order) /// other than the `count` previously-added ones will have finished executing. /// /// For more detail, including on how this mechanism composes with function calls, /// see [the LLVM documentation on async tracking](/llvm/docs/AMDGPUAsyncOperations.rst). /// /// Available on gfx9 and later. /// /// Example: /// ```mlir /// // Wait until at most N async groups remain outstanding. /// rocdl.wait.asyncmark 1 /// ``` /// /// Usage example: /// ```mlir /// rocdl.tensor.load.to.lds ... /// rocdl.global.async.load.to.lds ... /// /// rocdl.asyncmark /// /// rocdl.tensor.load.to.lds ... /// rocdl.global.async.load.to.lds ... /// /// rocdl.asyncmark /// /// rocdl.wait.asyncmark 1 // First group of loads completes after this /// ``` class WaitAsyncmarkOp; } // namespace mlir::ROCDL namespace mlir::ROCDL { /// Wait until DSCNT is less than or equal to `count` /// Wait for the counter specified to be less-than or equal-to the `count` /// before continuing. /// /// Available on gfx12+. /// /// Example: /// ```mlir /// // Wait for data-sharing counter to drain. /// rocdl.s.wait.dscnt 0 /// ``` class WaitDscntOp; } // namespace mlir::ROCDL namespace mlir::ROCDL { /// Wait until EXPCNT is less than or equal to `count` /// Wait for the counter specified to be less-than or equal-to the `count` /// before continuing. /// /// Available on gfx12+. /// /// Example: /// ```mlir /// // Wait for export counter to drain. /// rocdl.s.wait.expcnt 0 /// ``` class WaitExpcntOp; } // namespace mlir::ROCDL namespace mlir::ROCDL { /// Wait until LOADCNT is less than or equal to `count` /// Wait for the counter specified to be less-than or equal-to the `count` /// before continuing. /// /// Available on gfx12+. /// /// Example: /// ```mlir /// // Wait for load counter to drain. /// rocdl.s.wait.loadcnt 0 /// ``` class WaitLoadcntOp; } // namespace mlir::ROCDL namespace mlir::ROCDL { /// Wait until STORECNT is less than or equal to `count` /// Wait for the counter specified to be less-than or equal-to the `count` /// before continuing. /// /// Available on gfx12+. /// /// Example: /// ```mlir /// // Wait for store counter to drain. /// rocdl.s.wait.storecnt 0 /// ``` class WaitStorecntOp; } // namespace mlir::ROCDL namespace mlir::ROCDL { /// Wait until TENSORCNT is less than or equal to `count` /// Wait for the counter specified to be less-than or equal-to the `count` /// before continuing. /// /// Available on gfx1250+. /// /// Example: /// ```mlir /// // Wait for tensor counter to drain. /// rocdl.s.wait.tensorcnt 0 /// ``` class WaitTensorcntOp; } // namespace mlir::ROCDL namespace mlir::ROCDL { /// Wakes up waves associated with a given named barrier. Note, This op does not release waves waiting /// at the barrier. It just signal other waves in the same work-group waiting on the indicated named barrier /// to wake up. /// Available on gfx1250+. /// /// Example: /// ```mlir /// // Wake up waves waiting on a named barrier. /// rocdl.s.wakeup.barrier %ptr : !llvm.ptr<3> /// ``` class WakeupBarrierOp; } // namespace mlir::ROCDL namespace mlir::ROCDL { /// Insert a wave-level (subgroup) barrier. Synchronizes lanes within a /// single wave/wavefront without any memory ordering guarantees. /// /// Example: /// ```mlir /// rocdl.wave.barrier /// ``` class WaveBarrierOp; } // namespace mlir::ROCDL namespace mlir::ROCDL { /// Read a hardware register for thread/workgroup/cluster identification. /// An optional `range` attribute can constrain the returned value. /// /// Example: /// ```mlir /// // Read the workitem id in the x dimension. /// %0 = rocdl.workitem.id.x : i32 /// /// // Read with a known range constraint. /// %1 = rocdl.workitem.id.x range : i32 /// ``` class WaveId; } // namespace mlir::ROCDL namespace mlir::ROCDL { /// Read a hardware register for thread/workgroup/cluster identification. /// An optional `range` attribute can constrain the returned value. /// /// Example: /// ```mlir /// // Read the workitem id in the x dimension. /// %0 = rocdl.workitem.id.x : i32 /// /// // Read with a known range constraint. /// %1 = rocdl.workitem.id.x range : i32 /// ``` class WavefrontSizeOp; } // namespace mlir::ROCDL namespace mlir::ROCDL { /// Packed intra-lane dot-product with no clamp control. /// Computes `res = sum_i a[i]*b[i] + c`. Covers the full-f16/bf16 /// accumulator forms (`fdot2.f16.f16`, `fdot2.bf16.bf16`) and the /// FP8/BF8 `dot4.f32.*` variants, whose hardware instructions have no /// CLAMP bit in their modifier word. /// /// Example: /// ```mlir /// %r = rocdl.dot4.f32.bf8.bf8 %a, %b, %c : (i32, i32, f32) -> f32 /// ``` class dot4_f32_bf8_bf8; } // namespace mlir::ROCDL namespace mlir::ROCDL { /// Packed intra-lane dot-product with no clamp control. /// Computes `res = sum_i a[i]*b[i] + c`. Covers the full-f16/bf16 /// accumulator forms (`fdot2.f16.f16`, `fdot2.bf16.bf16`) and the /// FP8/BF8 `dot4.f32.*` variants, whose hardware instructions have no /// CLAMP bit in their modifier word. /// /// Example: /// ```mlir /// %r = rocdl.dot4.f32.bf8.fp8 %a, %b, %c : (i32, i32, f32) -> f32 /// ``` class dot4_f32_bf8_fp8; } // namespace mlir::ROCDL namespace mlir::ROCDL { /// Packed intra-lane dot-product with no clamp control. /// Computes `res = sum_i a[i]*b[i] + c`. Covers the full-f16/bf16 /// accumulator forms (`fdot2.f16.f16`, `fdot2.bf16.bf16`) and the /// FP8/BF8 `dot4.f32.*` variants, whose hardware instructions have no /// CLAMP bit in their modifier word. /// /// Example: /// ```mlir /// %r = rocdl.dot4.f32.fp8.bf8 %a, %b, %c : (i32, i32, f32) -> f32 /// ``` class dot4_f32_fp8_bf8; } // namespace mlir::ROCDL namespace mlir::ROCDL { /// Packed intra-lane dot-product with no clamp control. /// Computes `res = sum_i a[i]*b[i] + c`. Covers the full-f16/bf16 /// accumulator forms (`fdot2.f16.f16`, `fdot2.bf16.bf16`) and the /// FP8/BF8 `dot4.f32.*` variants, whose hardware instructions have no /// CLAMP bit in their modifier word. /// /// Example: /// ```mlir /// %r = rocdl.dot4.f32.fp8.fp8 %a, %b, %c : (i32, i32, f32) -> f32 /// ``` class dot4_f32_fp8_fp8; } // namespace mlir::ROCDL namespace mlir::ROCDL { class ds_read_tr16_b64; } // namespace mlir::ROCDL namespace mlir::ROCDL { class ds_read_tr4_b64; } // namespace mlir::ROCDL namespace mlir::ROCDL { class ds_read_tr6_b96; } // namespace mlir::ROCDL namespace mlir::ROCDL { class ds_read_tr8_b64; } // namespace mlir::ROCDL namespace mlir::ROCDL { /// Packed intra-lane dot-product with optional result clamping (`clamp`). /// Computes `res = sum_i a[i]*b[i] + c`, where `a` and `b` hold packed /// 4/8/16-bit data (for `dot2`,`dot4`,`dot8`). /// /// Example: /// ```mlir /// %r = rocdl.fdot2 %a, %b, %c {clamp = true} : /// (vector<2xf16>, vector<2xf16>, f32) -> f32 /// ``` class fdot2; } // namespace mlir::ROCDL namespace mlir::ROCDL { /// Packed intra-lane dot-product with no clamp control. /// Computes `res = sum_i a[i]*b[i] + c`. Covers the full-f16/bf16 /// accumulator forms (`fdot2.f16.f16`, `fdot2.bf16.bf16`) and the /// FP8/BF8 `dot4.f32.*` variants, whose hardware instructions have no /// CLAMP bit in their modifier word. /// /// Example: /// ```mlir /// %r = rocdl.fdot2.bf16.bf16 %a, %b, %c : (vector<2xbf16>, vector<2xbf16>, bf16) -> bf16 /// ``` class fdot2_bf16_bf16; } // namespace mlir::ROCDL namespace mlir::ROCDL { /// Packed intra-lane dot-product with no clamp control. /// Computes `res = sum_i a[i]*b[i] + c`. Covers the full-f16/bf16 /// accumulator forms (`fdot2.f16.f16`, `fdot2.bf16.bf16`) and the /// FP8/BF8 `dot4.f32.*` variants, whose hardware instructions have no /// CLAMP bit in their modifier word. /// /// Example: /// ```mlir /// %r = rocdl.fdot2.f16.f16 %a, %b, %c : (vector<2xf16>, vector<2xf16>, f16) -> f16 /// ``` class fdot2_f16_f16; } // namespace mlir::ROCDL namespace mlir::ROCDL { /// Packed intra-lane dot-product with optional result clamping (`clamp`). /// Computes `res = sum_i a[i]*b[i] + c`, where `a` and `b` hold packed /// 4/8/16-bit data (for `dot2`,`dot4`,`dot8`). /// /// Example: /// ```mlir /// %r = rocdl.fdot2.f32.bf16 %a, %b, %c {clamp = true} : /// (vector<2xbf16>, vector<2xbf16>, f32) -> f32 /// ``` class fdot2_f32_bf16; } // namespace mlir::ROCDL namespace mlir::ROCDL { /// Matrix fused multiply-add (MFMA) intrinsic. Computes `D = A * B + C` /// with matrix operands. The `cbsz`, `abid`, and `blgp` attributes control /// broadcast and block layout modes. /// /// Example: /// ```mlir /// %r0 = mfma.f32.16x16x16bf16.1k %a0, %b0, %c0, 0, 0, none : (vector<4xi16>, vector<4xi16>, vector<4xf32>) -> vector<4xf32> /// ``` class mfma_f32_16x16x16bf16_1k; } // namespace mlir::ROCDL namespace mlir::ROCDL { /// Matrix fused multiply-add (MFMA) intrinsic. Computes `D = A * B + C` /// with matrix operands. The `cbsz`, `abid`, and `blgp` attributes control /// broadcast and block layout modes. /// /// Example: /// ```mlir /// %r0 = mfma.f32.16x16x16f16 %a0, %b0, %c0, 0, 0, none : (vector<4xf16>, vector<4xf16>, vector<4xf32>) -> vector<4xf32> /// ``` class mfma_f32_16x16x16f16; } // namespace mlir::ROCDL namespace mlir::ROCDL { /// Matrix fused multiply-add (MFMA) intrinsic. Computes `D = A * B + C` /// with matrix operands. The `cbsz`, `abid`, and `blgp` attributes control /// broadcast and block layout modes. /// /// Example: /// ```mlir /// %r0 = mfma.f32.16x16x1f32 %a0, %b0, %c0, 0, 0, none : (f32, f32, vector<16xf32>) -> vector<16xf32> /// ``` class mfma_f32_16x16x1f32; } // namespace mlir::ROCDL namespace mlir::ROCDL { /// Matrix fused multiply-add (MFMA) intrinsic. Computes `D = A * B + C` /// with matrix operands. The `cbsz`, `abid`, and `blgp` attributes control /// broadcast and block layout modes. /// /// Example: /// ```mlir /// %r0 = mfma.f32.16x16x2bf16 %a0, %b0, %c0, 0, 0, none : (vector<2xi16>, vector<2xi16>, vector<16xf32>) -> vector<16xf32> /// ``` class mfma_f32_16x16x2bf16; } // namespace mlir::ROCDL namespace mlir::ROCDL { /// Matrix fused multiply-add (MFMA) intrinsic. Computes `D = A * B + C` /// with matrix operands. The `cbsz`, `abid`, and `blgp` attributes control /// broadcast and block layout modes. /// /// Example: /// ```mlir /// %r0 = mfma.f32.16x16x32.bf16 %a0, %b0, %c0, 0, 0, none : (vector<8xbf16>, vector<8xbf16>, vector<4xf32>) -> vector<4xf32> /// ``` class mfma_f32_16x16x32_bf16; } // namespace mlir::ROCDL namespace mlir::ROCDL { /// Matrix fused multiply-add (MFMA) intrinsic. Computes `D = A * B + C` /// with matrix operands. The `cbsz`, `abid`, and `blgp` attributes control /// broadcast and block layout modes. /// /// Example: /// ```mlir /// %r0 = mfma.f32.16x16x32.bf8.bf8 %a0, %b0, %c0, 0, 0, none : (i64, i64, vector<4xf32>) -> vector<4xf32> /// ``` class mfma_f32_16x16x32_bf8_bf8; } // namespace mlir::ROCDL namespace mlir::ROCDL { /// Matrix fused multiply-add (MFMA) intrinsic. Computes `D = A * B + C` /// with matrix operands. The `cbsz`, `abid`, and `blgp` attributes control /// broadcast and block layout modes. /// /// Example: /// ```mlir /// %r0 = mfma.f32.16x16x32.bf8.fp8 %a0, %b0, %c0, 0, 0, none : (i64, i64, vector<4xf32>) -> vector<4xf32> /// ``` class mfma_f32_16x16x32_bf8_fp8; } // namespace mlir::ROCDL namespace mlir::ROCDL { /// Matrix fused multiply-add (MFMA) intrinsic. Computes `D = A * B + C` /// with matrix operands. The `cbsz`, `abid`, and `blgp` attributes control /// broadcast and block layout modes. /// /// Example: /// ```mlir /// %r0 = mfma.f32.16x16x32.f16 %a0, %b0, %c0, 0, 0, none : (vector<8xf16>, vector<8xf16>, vector<4xf32>) -> vector<4xf32> /// ``` class mfma_f32_16x16x32_f16; } // namespace mlir::ROCDL namespace mlir::ROCDL { /// Matrix fused multiply-add (MFMA) intrinsic. Computes `D = A * B + C` /// with matrix operands. The `cbsz`, `abid`, and `blgp` attributes control /// broadcast and block layout modes. /// /// Example: /// ```mlir /// %r0 = mfma.f32.16x16x32.fp8.bf8 %a0, %b0, %c0, 0, 0, none : (i64, i64, vector<4xf32>) -> vector<4xf32> /// ``` class mfma_f32_16x16x32_fp8_bf8; } // namespace mlir::ROCDL namespace mlir::ROCDL { /// Matrix fused multiply-add (MFMA) intrinsic. Computes `D = A * B + C` /// with matrix operands. The `cbsz`, `abid`, and `blgp` attributes control /// broadcast and block layout modes. /// /// Example: /// ```mlir /// %r0 = mfma.f32.16x16x32.fp8.fp8 %a0, %b0, %c0, 0, 0, none : (i64, i64, vector<4xf32>) -> vector<4xf32> /// ``` class mfma_f32_16x16x32_fp8_fp8; } // namespace mlir::ROCDL namespace mlir::ROCDL { /// Matrix fused multiply-add (MFMA) intrinsic. Computes `D = A * B + C` /// with matrix operands. The `cbsz`, `abid`, and `blgp` attributes control /// broadcast and block layout modes. /// /// Example: /// ```mlir /// %r0 = mfma.f32.16x16x4bf16.1k %a0, %b0, %c0, 0, 0, none : (vector<4xi16>, vector<4xi16>, vector<16xf32>) -> vector<16xf32> /// ``` class mfma_f32_16x16x4bf16_1k; } // namespace mlir::ROCDL namespace mlir::ROCDL { /// Matrix fused multiply-add (MFMA) intrinsic. Computes `D = A * B + C` /// with matrix operands. The `cbsz`, `abid`, and `blgp` attributes control /// broadcast and block layout modes. /// /// Example: /// ```mlir /// %r0 = mfma.f32.16x16x4f16 %a0, %b0, %c0, 0, 0, none : (vector<4xf16>, vector<4xf16>, vector<16xf32>) -> vector<16xf32> /// ``` class mfma_f32_16x16x4f16; } // namespace mlir::ROCDL namespace mlir::ROCDL { /// Matrix fused multiply-add (MFMA) intrinsic. Computes `D = A * B + C` /// with matrix operands. The `cbsz`, `abid`, and `blgp` attributes control /// broadcast and block layout modes. /// /// Example: /// ```mlir /// %r0 = mfma.f32.16x16x4f32 %a0, %b0, %c0, 0, 0, none : (f32, f32, vector<4xf32>) -> vector<4xf32> /// ``` class mfma_f32_16x16x4f32; } // namespace mlir::ROCDL namespace mlir::ROCDL { /// Matrix fused multiply-add (MFMA) intrinsic. Computes `D = A * B + C` /// with matrix operands. The `cbsz`, `abid`, and `blgp` attributes control /// broadcast and block layout modes. /// /// Example: /// ```mlir /// %r0 = mfma.f32.16x16x8.xf32 %a0, %b0, %c0, 0, 0, none : (vector<2xf32>, vector<2xf32>, vector<4xf32>) -> vector<4xf32> /// ``` class mfma_f32_16x16x8_xf32; } // namespace mlir::ROCDL namespace mlir::ROCDL { /// Matrix fused multiply-add (MFMA) intrinsic. Computes `D = A * B + C` /// with matrix operands. The `cbsz`, `abid`, and `blgp` attributes control /// broadcast and block layout modes. /// /// Example: /// ```mlir /// %r0 = mfma.f32.16x16x8bf16 %a0, %b0, %c0, 0, 0, none : (vector<2xi16>, vector<2xi16>, vector<4xf32>) -> vector<4xf32> /// ``` class mfma_f32_16x16x8bf16; } // namespace mlir::ROCDL namespace mlir::ROCDL { /// Matrix fused multiply-add (MFMA) intrinsic. Computes `D = A * B + C` /// with matrix operands. The `cbsz`, `abid`, and `blgp` attributes control /// broadcast and block layout modes. /// /// Example: /// ```mlir /// %r0 = mfma.f32.32x32x16.bf16 %a0, %b0, %c0, 0, 0, none : (vector<8xbf16>, vector<8xbf16>, vector<16xf32>) -> vector<16xf32> /// ``` class mfma_f32_32x32x16_bf16; } // namespace mlir::ROCDL namespace mlir::ROCDL { /// Matrix fused multiply-add (MFMA) intrinsic. Computes `D = A * B + C` /// with matrix operands. The `cbsz`, `abid`, and `blgp` attributes control /// broadcast and block layout modes. /// /// Example: /// ```mlir /// %r0 = mfma.f32.32x32x16.bf8.bf8 %a0, %b0, %c0, 0, 0, none : (i64, i64, vector<16xf32>) -> vector<16xf32> /// ``` class mfma_f32_32x32x16_bf8_bf8; } // namespace mlir::ROCDL namespace mlir::ROCDL { /// Matrix fused multiply-add (MFMA) intrinsic. Computes `D = A * B + C` /// with matrix operands. The `cbsz`, `abid`, and `blgp` attributes control /// broadcast and block layout modes. /// /// Example: /// ```mlir /// %r0 = mfma.f32.32x32x16.bf8.fp8 %a0, %b0, %c0, 0, 0, none : (i64, i64, vector<16xf32>) -> vector<16xf32> /// ``` class mfma_f32_32x32x16_bf8_fp8; } // namespace mlir::ROCDL namespace mlir::ROCDL { /// Matrix fused multiply-add (MFMA) intrinsic. Computes `D = A * B + C` /// with matrix operands. The `cbsz`, `abid`, and `blgp` attributes control /// broadcast and block layout modes. /// /// Example: /// ```mlir /// %r0 = mfma.f32.32x32x16.f16 %a0, %b0, %c0, 0, 0, none : (vector<8xf16>, vector<8xf16>, vector<16xf32>) -> vector<16xf32> /// ``` class mfma_f32_32x32x16_f16; } // namespace mlir::ROCDL namespace mlir::ROCDL { /// Matrix fused multiply-add (MFMA) intrinsic. Computes `D = A * B + C` /// with matrix operands. The `cbsz`, `abid`, and `blgp` attributes control /// broadcast and block layout modes. /// /// Example: /// ```mlir /// %r0 = mfma.f32.32x32x16.fp8.bf8 %a0, %b0, %c0, 0, 0, none : (i64, i64, vector<16xf32>) -> vector<16xf32> /// ``` class mfma_f32_32x32x16_fp8_bf8; } // namespace mlir::ROCDL namespace mlir::ROCDL { /// Matrix fused multiply-add (MFMA) intrinsic. Computes `D = A * B + C` /// with matrix operands. The `cbsz`, `abid`, and `blgp` attributes control /// broadcast and block layout modes. /// /// Example: /// ```mlir /// %r0 = mfma.f32.32x32x16.fp8.fp8 %a0, %b0, %c0, 0, 0, none : (i64, i64, vector<16xf32>) -> vector<16xf32> /// ``` class mfma_f32_32x32x16_fp8_fp8; } // namespace mlir::ROCDL namespace mlir::ROCDL { /// Matrix fused multiply-add (MFMA) intrinsic. Computes `D = A * B + C` /// with matrix operands. The `cbsz`, `abid`, and `blgp` attributes control /// broadcast and block layout modes. /// /// Example: /// ```mlir /// %r0 = mfma.f32.32x32x1f32 %a0, %b0, %c0, 0, 0, none : (f32, f32, vector<32xf32>) -> vector<32xf32> /// ``` class mfma_f32_32x32x1f32; } // namespace mlir::ROCDL namespace mlir::ROCDL { /// Matrix fused multiply-add (MFMA) intrinsic. Computes `D = A * B + C` /// with matrix operands. The `cbsz`, `abid`, and `blgp` attributes control /// broadcast and block layout modes. /// /// Example: /// ```mlir /// %r0 = mfma.f32.32x32x2bf16 %a0, %b0, %c0, 0, 0, none : (vector<2xi16>, vector<2xi16>, vector<32xf32>) -> vector<32xf32> /// ``` class mfma_f32_32x32x2bf16; } // namespace mlir::ROCDL namespace mlir::ROCDL { /// Matrix fused multiply-add (MFMA) intrinsic. Computes `D = A * B + C` /// with matrix operands. The `cbsz`, `abid`, and `blgp` attributes control /// broadcast and block layout modes. /// /// Example: /// ```mlir /// %r0 = mfma.f32.32x32x2f32 %a0, %b0, %c0, 0, 0, none : (f32, f32, vector<16xf32>) -> vector<16xf32> /// ``` class mfma_f32_32x32x2f32; } // namespace mlir::ROCDL namespace mlir::ROCDL { /// Matrix fused multiply-add (MFMA) intrinsic. Computes `D = A * B + C` /// with matrix operands. The `cbsz`, `abid`, and `blgp` attributes control /// broadcast and block layout modes. /// /// Example: /// ```mlir /// %r0 = mfma.f32.32x32x4.xf32 %a0, %b0, %c0, 0, 0, none : (vector<2xf32>, vector<2xf32>, vector<16xf32>) -> vector<16xf32> /// ``` class mfma_f32_32x32x4_xf32; } // namespace mlir::ROCDL namespace mlir::ROCDL { /// Matrix fused multiply-add (MFMA) intrinsic. Computes `D = A * B + C` /// with matrix operands. The `cbsz`, `abid`, and `blgp` attributes control /// broadcast and block layout modes. /// /// Example: /// ```mlir /// %r0 = mfma.f32.32x32x4bf16 %a0, %b0, %c0, 0, 0, none : (vector<2xi16>, vector<2xi16>, vector<16xf32>) -> vector<16xf32> /// ``` class mfma_f32_32x32x4bf16; } // namespace mlir::ROCDL namespace mlir::ROCDL { /// Matrix fused multiply-add (MFMA) intrinsic. Computes `D = A * B + C` /// with matrix operands. The `cbsz`, `abid`, and `blgp` attributes control /// broadcast and block layout modes. /// /// Example: /// ```mlir /// %r0 = mfma.f32.32x32x4bf16.1k %a0, %b0, %c0, 0, 0, none : (vector<4xi16>, vector<4xi16>, vector<32xf32>) -> vector<32xf32> /// ``` class mfma_f32_32x32x4bf16_1k; } // namespace mlir::ROCDL namespace mlir::ROCDL { /// Matrix fused multiply-add (MFMA) intrinsic. Computes `D = A * B + C` /// with matrix operands. The `cbsz`, `abid`, and `blgp` attributes control /// broadcast and block layout modes. /// /// Example: /// ```mlir /// %r0 = mfma.f32.32x32x4f16 %a0, %b0, %c0, 0, 0, none : (vector<4xf16>, vector<4xf16>, vector<32xf32>) -> vector<32xf32> /// ``` class mfma_f32_32x32x4f16; } // namespace mlir::ROCDL namespace mlir::ROCDL { /// Matrix fused multiply-add (MFMA) intrinsic. Computes `D = A * B + C` /// with matrix operands. The `cbsz`, `abid`, and `blgp` attributes control /// broadcast and block layout modes. /// /// Example: /// ```mlir /// %r0 = mfma.f32.32x32x8bf16.1k %a0, %b0, %c0, 0, 0, none : (vector<4xi16>, vector<4xi16>, vector<16xf32>) -> vector<16xf32> /// ``` class mfma_f32_32x32x8bf16_1k; } // namespace mlir::ROCDL namespace mlir::ROCDL { /// Matrix fused multiply-add (MFMA) intrinsic. Computes `D = A * B + C` /// with matrix operands. The `cbsz`, `abid`, and `blgp` attributes control /// broadcast and block layout modes. /// /// Example: /// ```mlir /// %r0 = mfma.f32.32x32x8f16 %a0, %b0, %c0, 0, 0, none : (vector<4xf16>, vector<4xf16>, vector<16xf32>) -> vector<16xf32> /// ``` class mfma_f32_32x32x8f16; } // namespace mlir::ROCDL namespace mlir::ROCDL { /// Matrix fused multiply-add (MFMA) intrinsic. Computes `D = A * B + C` /// with matrix operands. The `cbsz`, `abid`, and `blgp` attributes control /// broadcast and block layout modes. /// /// Example: /// ```mlir /// %r0 = mfma.f32.4x4x1f32 %a0, %b0, %c0, 0, 0, none : (f32, f32, vector<4xf32>) -> vector<4xf32> /// ``` class mfma_f32_4x4x1f32; } // namespace mlir::ROCDL namespace mlir::ROCDL { /// Matrix fused multiply-add (MFMA) intrinsic. Computes `D = A * B + C` /// with matrix operands. The `cbsz`, `abid`, and `blgp` attributes control /// broadcast and block layout modes. /// /// Example: /// ```mlir /// %r0 = mfma.f32.4x4x2bf16 %a0, %b0, %c0, 0, 0, none : (vector<2xi16>, vector<2xi16>, vector<4xf32>) -> vector<4xf32> /// ``` class mfma_f32_4x4x2bf16; } // namespace mlir::ROCDL namespace mlir::ROCDL { /// Matrix fused multiply-add (MFMA) intrinsic. Computes `D = A * B + C` /// with matrix operands. The `cbsz`, `abid`, and `blgp` attributes control /// broadcast and block layout modes. /// /// Example: /// ```mlir /// %r0 = mfma.f32.4x4x4bf16.1k %a0, %b0, %c0, 0, 0, none : (vector<4xi16>, vector<4xi16>, vector<4xf32>) -> vector<4xf32> /// ``` class mfma_f32_4x4x4bf16_1k; } // namespace mlir::ROCDL namespace mlir::ROCDL { /// Matrix fused multiply-add (MFMA) intrinsic. Computes `D = A * B + C` /// with matrix operands. The `cbsz`, `abid`, and `blgp` attributes control /// broadcast and block layout modes. /// /// Example: /// ```mlir /// %r0 = mfma.f32.4x4x4f16 %a0, %b0, %c0, 0, 0, none : (vector<4xf16>, vector<4xf16>, vector<4xf32>) -> vector<4xf32> /// ``` class mfma_f32_4x4x4f16; } // namespace mlir::ROCDL namespace mlir::ROCDL { /// Double-precision matrix fused multiply-add (MFMA) intrinsic. On gfx94x, /// the `blgp` immarg is a NEG bitfield rather than a B-lane permutation. /// /// Example: /// ```mlir /// %r0 = mfma.f64.16x16x4f64 %a0, %b0, %c0, 0, 0, neg_a|neg_b : (f64, f64, vector<4xf64>) -> vector<4xf64> /// ``` class mfma_f64_16x16x4f64; } // namespace mlir::ROCDL namespace mlir::ROCDL { /// Double-precision matrix fused multiply-add (MFMA) intrinsic. On gfx94x, /// the `blgp` immarg is a NEG bitfield rather than a B-lane permutation. /// /// Example: /// ```mlir /// %r0 = mfma.f64.4x4x4f64 %a0, %b0, %c0, 0, 0, neg_a|neg_b : (f64, f64, f64) -> f64 /// ``` class mfma_f64_4x4x4f64; } // namespace mlir::ROCDL namespace mlir::ROCDL { /// Matrix fused multiply-add (MFMA) intrinsic. Computes `D = A * B + C` /// with matrix operands. The `cbsz`, `abid`, and `blgp` attributes control /// broadcast and block layout modes. /// /// Example: /// ```mlir /// %r0 = mfma.i32.16x16x16i8 %a0, %b0, %c0, 0, 0, none : (i32, i32, vector<4xi32>) -> vector<4xi32> /// ``` class mfma_i32_16x16x16i8; } // namespace mlir::ROCDL namespace mlir::ROCDL { /// Matrix fused multiply-add (MFMA) intrinsic. Computes `D = A * B + C` /// with matrix operands. The `cbsz`, `abid`, and `blgp` attributes control /// broadcast and block layout modes. /// /// Example: /// ```mlir /// %r0 = mfma.i32.16x16x32.i8 %a0, %b0, %c0, 0, 0, none : (i64, i64, vector<4xi32>) -> vector<4xi32> /// ``` class mfma_i32_16x16x32_i8; } // namespace mlir::ROCDL namespace mlir::ROCDL { /// Matrix fused multiply-add (MFMA) intrinsic. Computes `D = A * B + C` /// with matrix operands. The `cbsz`, `abid`, and `blgp` attributes control /// broadcast and block layout modes. /// /// Example: /// ```mlir /// %r0 = mfma.i32.16x16x4i8 %a0, %b0, %c0, 0, 0, none : (i32, i32, vector<16xi32>) -> vector<16xi32> /// ``` class mfma_i32_16x16x4i8; } // namespace mlir::ROCDL namespace mlir::ROCDL { /// Matrix fused multiply-add (MFMA) intrinsic. Computes `D = A * B + C` /// with matrix operands. The `cbsz`, `abid`, and `blgp` attributes control /// broadcast and block layout modes. /// /// Example: /// ```mlir /// %r0 = mfma.i32.16x16x64.i8 %a0, %b0, %c0, 0, 0, none : (vector<4xi32>, vector<4xi32>, vector<4xi32>) -> vector<4xi32> /// ``` class mfma_i32_16x16x64_i8; } // namespace mlir::ROCDL namespace mlir::ROCDL { /// Matrix fused multiply-add (MFMA) intrinsic. Computes `D = A * B + C` /// with matrix operands. The `cbsz`, `abid`, and `blgp` attributes control /// broadcast and block layout modes. /// /// Example: /// ```mlir /// %r0 = mfma.i32.32x32x16.i8 %a0, %b0, %c0, 0, 0, none : (i64, i64, vector<16xi32>) -> vector<16xi32> /// ``` class mfma_i32_32x32x16_i8; } // namespace mlir::ROCDL namespace mlir::ROCDL { /// Matrix fused multiply-add (MFMA) intrinsic. Computes `D = A * B + C` /// with matrix operands. The `cbsz`, `abid`, and `blgp` attributes control /// broadcast and block layout modes. /// /// Example: /// ```mlir /// %r0 = mfma.i32.32x32x32.i8 %a0, %b0, %c0, 0, 0, none : (vector<4xi32>, vector<4xi32>, vector<16xi32>) -> vector<16xi32> /// ``` class mfma_i32_32x32x32_i8; } // namespace mlir::ROCDL namespace mlir::ROCDL { /// Matrix fused multiply-add (MFMA) intrinsic. Computes `D = A * B + C` /// with matrix operands. The `cbsz`, `abid`, and `blgp` attributes control /// broadcast and block layout modes. /// /// Example: /// ```mlir /// %r0 = mfma.i32.32x32x4i8 %a0, %b0, %c0, 0, 0, none : (i32, i32, vector<32xi32>) -> vector<32xi32> /// ``` class mfma_i32_32x32x4i8; } // namespace mlir::ROCDL namespace mlir::ROCDL { /// Matrix fused multiply-add (MFMA) intrinsic. Computes `D = A * B + C` /// with matrix operands. The `cbsz`, `abid`, and `blgp` attributes control /// broadcast and block layout modes. /// /// Example: /// ```mlir /// %r0 = mfma.i32.32x32x8i8 %a0, %b0, %c0, 0, 0, none : (i32, i32, vector<16xi32>) -> vector<16xi32> /// ``` class mfma_i32_32x32x8i8; } // namespace mlir::ROCDL namespace mlir::ROCDL { /// Matrix fused multiply-add (MFMA) intrinsic. Computes `D = A * B + C` /// with matrix operands. The `cbsz`, `abid`, and `blgp` attributes control /// broadcast and block layout modes. /// /// Example: /// ```mlir /// %r0 = mfma.i32.4x4x4i8 %a0, %b0, %c0, 0, 0, none : (i32, i32, vector<4xi32>) -> vector<4xi32> /// ``` class mfma_i32_4x4x4i8; } // namespace mlir::ROCDL namespace mlir::ROCDL { /// Scaled matrix fused multiply-add (MFMA) intrinsic with per-operand scaling. /// The `opselA`/`opselB` and `scaleA`/`scaleB` arguments control the scaling /// of input operands. /// /// Example: /// ```mlir /// // Scaled MFMA with fp8 * fp8 inputs. /// %r0 = rocdl.mfma.scale.f32.32x32x64.f8f6f4 %a, %a, %c, fp8_e4m3, fp8_e4m3, 0, %scaleA, 0, %scaleB : /// (vector<8xi32>, vector<8xi32>, vector<16xf32>, i32, i32) -> vector<16xf32> /// /// // Scaled MFMA with fp8 * bf8 inputs. /// %r1 = rocdl.mfma.scale.f32.32x32x64.f8f6f4 %a, %a, %c, fp8_e4m3, fp8_e5m2, 0, %scaleA, 0, %scaleB : /// (vector<8xi32>, vector<8xi32>, vector<16xf32>, i32, i32) -> vector<16xf32> /// /// // Scaled MFMA with fp8 * fp6 inputs (6xi32 operand B). /// %r2 = rocdl.mfma.scale.f32.32x32x64.f8f6f4 %a, %b6, %c, fp8_e4m3, fp6_e2m3, 0, %scaleA, 0, %scaleB : /// (vector<8xi32>, vector<6xi32>, vector<16xf32>, i32, i32) -> vector<16xf32> /// ``` class mfma_scale_f32_16x16x128_f8f6f4; } // namespace mlir::ROCDL namespace mlir::ROCDL { /// Scaled matrix fused multiply-add (MFMA) intrinsic with per-operand scaling. /// The `opselA`/`opselB` and `scaleA`/`scaleB` arguments control the scaling /// of input operands. /// /// Example: /// ```mlir /// // Scaled MFMA with fp8 * fp8 inputs. /// %r0 = rocdl.mfma.scale.f32.32x32x64.f8f6f4 %a, %a, %c, fp8_e4m3, fp8_e4m3, 0, %scaleA, 0, %scaleB : /// (vector<8xi32>, vector<8xi32>, vector<16xf32>, i32, i32) -> vector<16xf32> /// /// // Scaled MFMA with fp8 * bf8 inputs. /// %r1 = rocdl.mfma.scale.f32.32x32x64.f8f6f4 %a, %a, %c, fp8_e4m3, fp8_e5m2, 0, %scaleA, 0, %scaleB : /// (vector<8xi32>, vector<8xi32>, vector<16xf32>, i32, i32) -> vector<16xf32> /// /// // Scaled MFMA with fp8 * fp6 inputs (6xi32 operand B). /// %r2 = rocdl.mfma.scale.f32.32x32x64.f8f6f4 %a, %b6, %c, fp8_e4m3, fp6_e2m3, 0, %scaleA, 0, %scaleB : /// (vector<8xi32>, vector<6xi32>, vector<16xf32>, i32, i32) -> vector<16xf32> /// ``` class mfma_scale_f32_32x32x64_f8f6f4; } // namespace mlir::ROCDL namespace mlir::ROCDL { /// Packed intra-lane dot-product with optional result clamping (`clamp`). /// Computes `res = sum_i a[i]*b[i] + c`, where `a` and `b` hold packed /// 4/8/16-bit data (for `dot2`,`dot4`,`dot8`). /// /// Example: /// ```mlir /// %r = rocdl.sdot2 %a, %b, %c {clamp = true} : /// (vector<2xi16>, vector<2xi16>, i32) -> i32 /// ``` class sdot2; } // namespace mlir::ROCDL namespace mlir::ROCDL { /// Packed intra-lane dot-product with optional result clamping (`clamp`). /// Computes `res = sum_i a[i]*b[i] + c`, where `a` and `b` hold packed /// 4/8/16-bit data (for `dot2`,`dot4`,`dot8`). /// /// Example: /// ```mlir /// %r = rocdl.sdot4 %a, %b, %c {clamp = true} : /// (i32, i32, i32) -> i32 /// ``` class sdot4; } // namespace mlir::ROCDL namespace mlir::ROCDL { /// Packed intra-lane dot-product with optional result clamping (`clamp`). /// Computes `res = sum_i a[i]*b[i] + c`, where `a` and `b` hold packed /// 4/8/16-bit data (for `dot2`,`dot4`,`dot8`). /// /// Example: /// ```mlir /// %r = rocdl.sdot8 %a, %b, %c {clamp = true} : /// (i32, i32, i32) -> i32 /// ``` class sdot8; } // namespace mlir::ROCDL namespace mlir::ROCDL { /// Sparse matrix fused multiply-accumulate (SMFMAC) intrinsic with 2:4 /// structured sparsity. The `index` operand provides the sparsity metadata, /// and `cbsz`/`abid` control broadcast modes. /// /// Example: /// ```mlir /// // SMFMAC with f16 inputs. /// %r0 = rocdl.smfmac.f32.16x16x32.f16 %a0, %b0, %c0, %idx, 0, 0 : /// (vector<4xf16>, vector<8xf16>, vector<4xf32>, i32) -> vector<4xf32> /// /// // SMFMAC with bf16 inputs. /// %r1 = rocdl.smfmac.f32.16x16x32.bf16 %a1, %b1, %c0, %idx, 0, 0 : /// (vector<4xi16>, vector<8xi16>, vector<4xf32>, i32) -> vector<4xf32> /// /// // SMFMAC with i8 inputs and i32 accumulator. /// %r2 = rocdl.smfmac.i32.16x16x64.i8 %a2, %b2, %c2, %idx, 0, 0 : /// (vector<2xi32>, vector<4xi32>, vector<4xi32>, i32) -> vector<4xi32> /// /// // SMFMAC with fp8 inputs. /// %r3 = rocdl.smfmac.f32.16x16x64.fp8.fp8 %a2, %b2, %c0, %idx, 0, 0 : /// (vector<2xi32>, vector<4xi32>, vector<4xf32>, i32) -> vector<4xf32> /// ``` class smfmac_f32_16x16x128_bf8_bf8; } // namespace mlir::ROCDL namespace mlir::ROCDL { /// Sparse matrix fused multiply-accumulate (SMFMAC) intrinsic with 2:4 /// structured sparsity. The `index` operand provides the sparsity metadata, /// and `cbsz`/`abid` control broadcast modes. /// /// Example: /// ```mlir /// // SMFMAC with f16 inputs. /// %r0 = rocdl.smfmac.f32.16x16x32.f16 %a0, %b0, %c0, %idx, 0, 0 : /// (vector<4xf16>, vector<8xf16>, vector<4xf32>, i32) -> vector<4xf32> /// /// // SMFMAC with bf16 inputs. /// %r1 = rocdl.smfmac.f32.16x16x32.bf16 %a1, %b1, %c0, %idx, 0, 0 : /// (vector<4xi16>, vector<8xi16>, vector<4xf32>, i32) -> vector<4xf32> /// /// // SMFMAC with i8 inputs and i32 accumulator. /// %r2 = rocdl.smfmac.i32.16x16x64.i8 %a2, %b2, %c2, %idx, 0, 0 : /// (vector<2xi32>, vector<4xi32>, vector<4xi32>, i32) -> vector<4xi32> /// /// // SMFMAC with fp8 inputs. /// %r3 = rocdl.smfmac.f32.16x16x64.fp8.fp8 %a2, %b2, %c0, %idx, 0, 0 : /// (vector<2xi32>, vector<4xi32>, vector<4xf32>, i32) -> vector<4xf32> /// ``` class smfmac_f32_16x16x128_bf8_fp8; } // namespace mlir::ROCDL namespace mlir::ROCDL { /// Sparse matrix fused multiply-accumulate (SMFMAC) intrinsic with 2:4 /// structured sparsity. The `index` operand provides the sparsity metadata, /// and `cbsz`/`abid` control broadcast modes. /// /// Example: /// ```mlir /// // SMFMAC with f16 inputs. /// %r0 = rocdl.smfmac.f32.16x16x32.f16 %a0, %b0, %c0, %idx, 0, 0 : /// (vector<4xf16>, vector<8xf16>, vector<4xf32>, i32) -> vector<4xf32> /// /// // SMFMAC with bf16 inputs. /// %r1 = rocdl.smfmac.f32.16x16x32.bf16 %a1, %b1, %c0, %idx, 0, 0 : /// (vector<4xi16>, vector<8xi16>, vector<4xf32>, i32) -> vector<4xf32> /// /// // SMFMAC with i8 inputs and i32 accumulator. /// %r2 = rocdl.smfmac.i32.16x16x64.i8 %a2, %b2, %c2, %idx, 0, 0 : /// (vector<2xi32>, vector<4xi32>, vector<4xi32>, i32) -> vector<4xi32> /// /// // SMFMAC with fp8 inputs. /// %r3 = rocdl.smfmac.f32.16x16x64.fp8.fp8 %a2, %b2, %c0, %idx, 0, 0 : /// (vector<2xi32>, vector<4xi32>, vector<4xf32>, i32) -> vector<4xf32> /// ``` class smfmac_f32_16x16x128_fp8_bf8; } // namespace mlir::ROCDL namespace mlir::ROCDL { /// Sparse matrix fused multiply-accumulate (SMFMAC) intrinsic with 2:4 /// structured sparsity. The `index` operand provides the sparsity metadata, /// and `cbsz`/`abid` control broadcast modes. /// /// Example: /// ```mlir /// // SMFMAC with f16 inputs. /// %r0 = rocdl.smfmac.f32.16x16x32.f16 %a0, %b0, %c0, %idx, 0, 0 : /// (vector<4xf16>, vector<8xf16>, vector<4xf32>, i32) -> vector<4xf32> /// /// // SMFMAC with bf16 inputs. /// %r1 = rocdl.smfmac.f32.16x16x32.bf16 %a1, %b1, %c0, %idx, 0, 0 : /// (vector<4xi16>, vector<8xi16>, vector<4xf32>, i32) -> vector<4xf32> /// /// // SMFMAC with i8 inputs and i32 accumulator. /// %r2 = rocdl.smfmac.i32.16x16x64.i8 %a2, %b2, %c2, %idx, 0, 0 : /// (vector<2xi32>, vector<4xi32>, vector<4xi32>, i32) -> vector<4xi32> /// /// // SMFMAC with fp8 inputs. /// %r3 = rocdl.smfmac.f32.16x16x64.fp8.fp8 %a2, %b2, %c0, %idx, 0, 0 : /// (vector<2xi32>, vector<4xi32>, vector<4xf32>, i32) -> vector<4xf32> /// ``` class smfmac_f32_16x16x128_fp8_fp8; } // namespace mlir::ROCDL namespace mlir::ROCDL { /// Sparse matrix fused multiply-accumulate (SMFMAC) intrinsic with 2:4 /// structured sparsity. The `index` operand provides the sparsity metadata, /// and `cbsz`/`abid` control broadcast modes. /// /// Example: /// ```mlir /// // SMFMAC with f16 inputs. /// %r0 = rocdl.smfmac.f32.16x16x32.f16 %a0, %b0, %c0, %idx, 0, 0 : /// (vector<4xf16>, vector<8xf16>, vector<4xf32>, i32) -> vector<4xf32> /// /// // SMFMAC with bf16 inputs. /// %r1 = rocdl.smfmac.f32.16x16x32.bf16 %a1, %b1, %c0, %idx, 0, 0 : /// (vector<4xi16>, vector<8xi16>, vector<4xf32>, i32) -> vector<4xf32> /// /// // SMFMAC with i8 inputs and i32 accumulator. /// %r2 = rocdl.smfmac.i32.16x16x64.i8 %a2, %b2, %c2, %idx, 0, 0 : /// (vector<2xi32>, vector<4xi32>, vector<4xi32>, i32) -> vector<4xi32> /// /// // SMFMAC with fp8 inputs. /// %r3 = rocdl.smfmac.f32.16x16x64.fp8.fp8 %a2, %b2, %c0, %idx, 0, 0 : /// (vector<2xi32>, vector<4xi32>, vector<4xf32>, i32) -> vector<4xf32> /// ``` class smfmac_f32_16x16x32_bf16; } // namespace mlir::ROCDL namespace mlir::ROCDL { /// Sparse matrix fused multiply-accumulate (SMFMAC) intrinsic with 2:4 /// structured sparsity. The `index` operand provides the sparsity metadata, /// and `cbsz`/`abid` control broadcast modes. /// /// Example: /// ```mlir /// // SMFMAC with f16 inputs. /// %r0 = rocdl.smfmac.f32.16x16x32.f16 %a0, %b0, %c0, %idx, 0, 0 : /// (vector<4xf16>, vector<8xf16>, vector<4xf32>, i32) -> vector<4xf32> /// /// // SMFMAC with bf16 inputs. /// %r1 = rocdl.smfmac.f32.16x16x32.bf16 %a1, %b1, %c0, %idx, 0, 0 : /// (vector<4xi16>, vector<8xi16>, vector<4xf32>, i32) -> vector<4xf32> /// /// // SMFMAC with i8 inputs and i32 accumulator. /// %r2 = rocdl.smfmac.i32.16x16x64.i8 %a2, %b2, %c2, %idx, 0, 0 : /// (vector<2xi32>, vector<4xi32>, vector<4xi32>, i32) -> vector<4xi32> /// /// // SMFMAC with fp8 inputs. /// %r3 = rocdl.smfmac.f32.16x16x64.fp8.fp8 %a2, %b2, %c0, %idx, 0, 0 : /// (vector<2xi32>, vector<4xi32>, vector<4xf32>, i32) -> vector<4xf32> /// ``` class smfmac_f32_16x16x32_f16; } // namespace mlir::ROCDL namespace mlir::ROCDL { /// Sparse matrix fused multiply-accumulate (SMFMAC) intrinsic with 2:4 /// structured sparsity. The `index` operand provides the sparsity metadata, /// and `cbsz`/`abid` control broadcast modes. /// /// Example: /// ```mlir /// // SMFMAC with f16 inputs. /// %r0 = rocdl.smfmac.f32.16x16x32.f16 %a0, %b0, %c0, %idx, 0, 0 : /// (vector<4xf16>, vector<8xf16>, vector<4xf32>, i32) -> vector<4xf32> /// /// // SMFMAC with bf16 inputs. /// %r1 = rocdl.smfmac.f32.16x16x32.bf16 %a1, %b1, %c0, %idx, 0, 0 : /// (vector<4xi16>, vector<8xi16>, vector<4xf32>, i32) -> vector<4xf32> /// /// // SMFMAC with i8 inputs and i32 accumulator. /// %r2 = rocdl.smfmac.i32.16x16x64.i8 %a2, %b2, %c2, %idx, 0, 0 : /// (vector<2xi32>, vector<4xi32>, vector<4xi32>, i32) -> vector<4xi32> /// /// // SMFMAC with fp8 inputs. /// %r3 = rocdl.smfmac.f32.16x16x64.fp8.fp8 %a2, %b2, %c0, %idx, 0, 0 : /// (vector<2xi32>, vector<4xi32>, vector<4xf32>, i32) -> vector<4xf32> /// ``` class smfmac_f32_16x16x64_bf16; } // namespace mlir::ROCDL namespace mlir::ROCDL { /// Sparse matrix fused multiply-accumulate (SMFMAC) intrinsic with 2:4 /// structured sparsity. The `index` operand provides the sparsity metadata, /// and `cbsz`/`abid` control broadcast modes. /// /// Example: /// ```mlir /// // SMFMAC with f16 inputs. /// %r0 = rocdl.smfmac.f32.16x16x32.f16 %a0, %b0, %c0, %idx, 0, 0 : /// (vector<4xf16>, vector<8xf16>, vector<4xf32>, i32) -> vector<4xf32> /// /// // SMFMAC with bf16 inputs. /// %r1 = rocdl.smfmac.f32.16x16x32.bf16 %a1, %b1, %c0, %idx, 0, 0 : /// (vector<4xi16>, vector<8xi16>, vector<4xf32>, i32) -> vector<4xf32> /// /// // SMFMAC with i8 inputs and i32 accumulator. /// %r2 = rocdl.smfmac.i32.16x16x64.i8 %a2, %b2, %c2, %idx, 0, 0 : /// (vector<2xi32>, vector<4xi32>, vector<4xi32>, i32) -> vector<4xi32> /// /// // SMFMAC with fp8 inputs. /// %r3 = rocdl.smfmac.f32.16x16x64.fp8.fp8 %a2, %b2, %c0, %idx, 0, 0 : /// (vector<2xi32>, vector<4xi32>, vector<4xf32>, i32) -> vector<4xf32> /// ``` class smfmac_f32_16x16x64_bf8_bf8; } // namespace mlir::ROCDL namespace mlir::ROCDL { /// Sparse matrix fused multiply-accumulate (SMFMAC) intrinsic with 2:4 /// structured sparsity. The `index` operand provides the sparsity metadata, /// and `cbsz`/`abid` control broadcast modes. /// /// Example: /// ```mlir /// // SMFMAC with f16 inputs. /// %r0 = rocdl.smfmac.f32.16x16x32.f16 %a0, %b0, %c0, %idx, 0, 0 : /// (vector<4xf16>, vector<8xf16>, vector<4xf32>, i32) -> vector<4xf32> /// /// // SMFMAC with bf16 inputs. /// %r1 = rocdl.smfmac.f32.16x16x32.bf16 %a1, %b1, %c0, %idx, 0, 0 : /// (vector<4xi16>, vector<8xi16>, vector<4xf32>, i32) -> vector<4xf32> /// /// // SMFMAC with i8 inputs and i32 accumulator. /// %r2 = rocdl.smfmac.i32.16x16x64.i8 %a2, %b2, %c2, %idx, 0, 0 : /// (vector<2xi32>, vector<4xi32>, vector<4xi32>, i32) -> vector<4xi32> /// /// // SMFMAC with fp8 inputs. /// %r3 = rocdl.smfmac.f32.16x16x64.fp8.fp8 %a2, %b2, %c0, %idx, 0, 0 : /// (vector<2xi32>, vector<4xi32>, vector<4xf32>, i32) -> vector<4xf32> /// ``` class smfmac_f32_16x16x64_bf8_fp8; } // namespace mlir::ROCDL namespace mlir::ROCDL { /// Sparse matrix fused multiply-accumulate (SMFMAC) intrinsic with 2:4 /// structured sparsity. The `index` operand provides the sparsity metadata, /// and `cbsz`/`abid` control broadcast modes. /// /// Example: /// ```mlir /// // SMFMAC with f16 inputs. /// %r0 = rocdl.smfmac.f32.16x16x32.f16 %a0, %b0, %c0, %idx, 0, 0 : /// (vector<4xf16>, vector<8xf16>, vector<4xf32>, i32) -> vector<4xf32> /// /// // SMFMAC with bf16 inputs. /// %r1 = rocdl.smfmac.f32.16x16x32.bf16 %a1, %b1, %c0, %idx, 0, 0 : /// (vector<4xi16>, vector<8xi16>, vector<4xf32>, i32) -> vector<4xf32> /// /// // SMFMAC with i8 inputs and i32 accumulator. /// %r2 = rocdl.smfmac.i32.16x16x64.i8 %a2, %b2, %c2, %idx, 0, 0 : /// (vector<2xi32>, vector<4xi32>, vector<4xi32>, i32) -> vector<4xi32> /// /// // SMFMAC with fp8 inputs. /// %r3 = rocdl.smfmac.f32.16x16x64.fp8.fp8 %a2, %b2, %c0, %idx, 0, 0 : /// (vector<2xi32>, vector<4xi32>, vector<4xf32>, i32) -> vector<4xf32> /// ``` class smfmac_f32_16x16x64_f16; } // namespace mlir::ROCDL namespace mlir::ROCDL { /// Sparse matrix fused multiply-accumulate (SMFMAC) intrinsic with 2:4 /// structured sparsity. The `index` operand provides the sparsity metadata, /// and `cbsz`/`abid` control broadcast modes. /// /// Example: /// ```mlir /// // SMFMAC with f16 inputs. /// %r0 = rocdl.smfmac.f32.16x16x32.f16 %a0, %b0, %c0, %idx, 0, 0 : /// (vector<4xf16>, vector<8xf16>, vector<4xf32>, i32) -> vector<4xf32> /// /// // SMFMAC with bf16 inputs. /// %r1 = rocdl.smfmac.f32.16x16x32.bf16 %a1, %b1, %c0, %idx, 0, 0 : /// (vector<4xi16>, vector<8xi16>, vector<4xf32>, i32) -> vector<4xf32> /// /// // SMFMAC with i8 inputs and i32 accumulator. /// %r2 = rocdl.smfmac.i32.16x16x64.i8 %a2, %b2, %c2, %idx, 0, 0 : /// (vector<2xi32>, vector<4xi32>, vector<4xi32>, i32) -> vector<4xi32> /// /// // SMFMAC with fp8 inputs. /// %r3 = rocdl.smfmac.f32.16x16x64.fp8.fp8 %a2, %b2, %c0, %idx, 0, 0 : /// (vector<2xi32>, vector<4xi32>, vector<4xf32>, i32) -> vector<4xf32> /// ``` class smfmac_f32_16x16x64_fp8_bf8; } // namespace mlir::ROCDL namespace mlir::ROCDL { /// Sparse matrix fused multiply-accumulate (SMFMAC) intrinsic with 2:4 /// structured sparsity. The `index` operand provides the sparsity metadata, /// and `cbsz`/`abid` control broadcast modes. /// /// Example: /// ```mlir /// // SMFMAC with f16 inputs. /// %r0 = rocdl.smfmac.f32.16x16x32.f16 %a0, %b0, %c0, %idx, 0, 0 : /// (vector<4xf16>, vector<8xf16>, vector<4xf32>, i32) -> vector<4xf32> /// /// // SMFMAC with bf16 inputs. /// %r1 = rocdl.smfmac.f32.16x16x32.bf16 %a1, %b1, %c0, %idx, 0, 0 : /// (vector<4xi16>, vector<8xi16>, vector<4xf32>, i32) -> vector<4xf32> /// /// // SMFMAC with i8 inputs and i32 accumulator. /// %r2 = rocdl.smfmac.i32.16x16x64.i8 %a2, %b2, %c2, %idx, 0, 0 : /// (vector<2xi32>, vector<4xi32>, vector<4xi32>, i32) -> vector<4xi32> /// /// // SMFMAC with fp8 inputs. /// %r3 = rocdl.smfmac.f32.16x16x64.fp8.fp8 %a2, %b2, %c0, %idx, 0, 0 : /// (vector<2xi32>, vector<4xi32>, vector<4xf32>, i32) -> vector<4xf32> /// ``` class smfmac_f32_16x16x64_fp8_fp8; } // namespace mlir::ROCDL namespace mlir::ROCDL { /// Sparse matrix fused multiply-accumulate (SMFMAC) intrinsic with 2:4 /// structured sparsity. The `index` operand provides the sparsity metadata, /// and `cbsz`/`abid` control broadcast modes. /// /// Example: /// ```mlir /// // SMFMAC with f16 inputs. /// %r0 = rocdl.smfmac.f32.16x16x32.f16 %a0, %b0, %c0, %idx, 0, 0 : /// (vector<4xf16>, vector<8xf16>, vector<4xf32>, i32) -> vector<4xf32> /// /// // SMFMAC with bf16 inputs. /// %r1 = rocdl.smfmac.f32.16x16x32.bf16 %a1, %b1, %c0, %idx, 0, 0 : /// (vector<4xi16>, vector<8xi16>, vector<4xf32>, i32) -> vector<4xf32> /// /// // SMFMAC with i8 inputs and i32 accumulator. /// %r2 = rocdl.smfmac.i32.16x16x64.i8 %a2, %b2, %c2, %idx, 0, 0 : /// (vector<2xi32>, vector<4xi32>, vector<4xi32>, i32) -> vector<4xi32> /// /// // SMFMAC with fp8 inputs. /// %r3 = rocdl.smfmac.f32.16x16x64.fp8.fp8 %a2, %b2, %c0, %idx, 0, 0 : /// (vector<2xi32>, vector<4xi32>, vector<4xf32>, i32) -> vector<4xf32> /// ``` class smfmac_f32_32x32x16_bf16; } // namespace mlir::ROCDL namespace mlir::ROCDL { /// Sparse matrix fused multiply-accumulate (SMFMAC) intrinsic with 2:4 /// structured sparsity. The `index` operand provides the sparsity metadata, /// and `cbsz`/`abid` control broadcast modes. /// /// Example: /// ```mlir /// // SMFMAC with f16 inputs. /// %r0 = rocdl.smfmac.f32.16x16x32.f16 %a0, %b0, %c0, %idx, 0, 0 : /// (vector<4xf16>, vector<8xf16>, vector<4xf32>, i32) -> vector<4xf32> /// /// // SMFMAC with bf16 inputs. /// %r1 = rocdl.smfmac.f32.16x16x32.bf16 %a1, %b1, %c0, %idx, 0, 0 : /// (vector<4xi16>, vector<8xi16>, vector<4xf32>, i32) -> vector<4xf32> /// /// // SMFMAC with i8 inputs and i32 accumulator. /// %r2 = rocdl.smfmac.i32.16x16x64.i8 %a2, %b2, %c2, %idx, 0, 0 : /// (vector<2xi32>, vector<4xi32>, vector<4xi32>, i32) -> vector<4xi32> /// /// // SMFMAC with fp8 inputs. /// %r3 = rocdl.smfmac.f32.16x16x64.fp8.fp8 %a2, %b2, %c0, %idx, 0, 0 : /// (vector<2xi32>, vector<4xi32>, vector<4xf32>, i32) -> vector<4xf32> /// ``` class smfmac_f32_32x32x16_f16; } // namespace mlir::ROCDL namespace mlir::ROCDL { /// Sparse matrix fused multiply-accumulate (SMFMAC) intrinsic with 2:4 /// structured sparsity. The `index` operand provides the sparsity metadata, /// and `cbsz`/`abid` control broadcast modes. /// /// Example: /// ```mlir /// // SMFMAC with f16 inputs. /// %r0 = rocdl.smfmac.f32.16x16x32.f16 %a0, %b0, %c0, %idx, 0, 0 : /// (vector<4xf16>, vector<8xf16>, vector<4xf32>, i32) -> vector<4xf32> /// /// // SMFMAC with bf16 inputs. /// %r1 = rocdl.smfmac.f32.16x16x32.bf16 %a1, %b1, %c0, %idx, 0, 0 : /// (vector<4xi16>, vector<8xi16>, vector<4xf32>, i32) -> vector<4xf32> /// /// // SMFMAC with i8 inputs and i32 accumulator. /// %r2 = rocdl.smfmac.i32.16x16x64.i8 %a2, %b2, %c2, %idx, 0, 0 : /// (vector<2xi32>, vector<4xi32>, vector<4xi32>, i32) -> vector<4xi32> /// /// // SMFMAC with fp8 inputs. /// %r3 = rocdl.smfmac.f32.16x16x64.fp8.fp8 %a2, %b2, %c0, %idx, 0, 0 : /// (vector<2xi32>, vector<4xi32>, vector<4xf32>, i32) -> vector<4xf32> /// ``` class smfmac_f32_32x32x32_bf16; } // namespace mlir::ROCDL namespace mlir::ROCDL { /// Sparse matrix fused multiply-accumulate (SMFMAC) intrinsic with 2:4 /// structured sparsity. The `index` operand provides the sparsity metadata, /// and `cbsz`/`abid` control broadcast modes. /// /// Example: /// ```mlir /// // SMFMAC with f16 inputs. /// %r0 = rocdl.smfmac.f32.16x16x32.f16 %a0, %b0, %c0, %idx, 0, 0 : /// (vector<4xf16>, vector<8xf16>, vector<4xf32>, i32) -> vector<4xf32> /// /// // SMFMAC with bf16 inputs. /// %r1 = rocdl.smfmac.f32.16x16x32.bf16 %a1, %b1, %c0, %idx, 0, 0 : /// (vector<4xi16>, vector<8xi16>, vector<4xf32>, i32) -> vector<4xf32> /// /// // SMFMAC with i8 inputs and i32 accumulator. /// %r2 = rocdl.smfmac.i32.16x16x64.i8 %a2, %b2, %c2, %idx, 0, 0 : /// (vector<2xi32>, vector<4xi32>, vector<4xi32>, i32) -> vector<4xi32> /// /// // SMFMAC with fp8 inputs. /// %r3 = rocdl.smfmac.f32.16x16x64.fp8.fp8 %a2, %b2, %c0, %idx, 0, 0 : /// (vector<2xi32>, vector<4xi32>, vector<4xf32>, i32) -> vector<4xf32> /// ``` class smfmac_f32_32x32x32_bf8_bf8; } // namespace mlir::ROCDL namespace mlir::ROCDL { /// Sparse matrix fused multiply-accumulate (SMFMAC) intrinsic with 2:4 /// structured sparsity. The `index` operand provides the sparsity metadata, /// and `cbsz`/`abid` control broadcast modes. /// /// Example: /// ```mlir /// // SMFMAC with f16 inputs. /// %r0 = rocdl.smfmac.f32.16x16x32.f16 %a0, %b0, %c0, %idx, 0, 0 : /// (vector<4xf16>, vector<8xf16>, vector<4xf32>, i32) -> vector<4xf32> /// /// // SMFMAC with bf16 inputs. /// %r1 = rocdl.smfmac.f32.16x16x32.bf16 %a1, %b1, %c0, %idx, 0, 0 : /// (vector<4xi16>, vector<8xi16>, vector<4xf32>, i32) -> vector<4xf32> /// /// // SMFMAC with i8 inputs and i32 accumulator. /// %r2 = rocdl.smfmac.i32.16x16x64.i8 %a2, %b2, %c2, %idx, 0, 0 : /// (vector<2xi32>, vector<4xi32>, vector<4xi32>, i32) -> vector<4xi32> /// /// // SMFMAC with fp8 inputs. /// %r3 = rocdl.smfmac.f32.16x16x64.fp8.fp8 %a2, %b2, %c0, %idx, 0, 0 : /// (vector<2xi32>, vector<4xi32>, vector<4xf32>, i32) -> vector<4xf32> /// ``` class smfmac_f32_32x32x32_bf8_fp8; } // namespace mlir::ROCDL namespace mlir::ROCDL { /// Sparse matrix fused multiply-accumulate (SMFMAC) intrinsic with 2:4 /// structured sparsity. The `index` operand provides the sparsity metadata, /// and `cbsz`/`abid` control broadcast modes. /// /// Example: /// ```mlir /// // SMFMAC with f16 inputs. /// %r0 = rocdl.smfmac.f32.16x16x32.f16 %a0, %b0, %c0, %idx, 0, 0 : /// (vector<4xf16>, vector<8xf16>, vector<4xf32>, i32) -> vector<4xf32> /// /// // SMFMAC with bf16 inputs. /// %r1 = rocdl.smfmac.f32.16x16x32.bf16 %a1, %b1, %c0, %idx, 0, 0 : /// (vector<4xi16>, vector<8xi16>, vector<4xf32>, i32) -> vector<4xf32> /// /// // SMFMAC with i8 inputs and i32 accumulator. /// %r2 = rocdl.smfmac.i32.16x16x64.i8 %a2, %b2, %c2, %idx, 0, 0 : /// (vector<2xi32>, vector<4xi32>, vector<4xi32>, i32) -> vector<4xi32> /// /// // SMFMAC with fp8 inputs. /// %r3 = rocdl.smfmac.f32.16x16x64.fp8.fp8 %a2, %b2, %c0, %idx, 0, 0 : /// (vector<2xi32>, vector<4xi32>, vector<4xf32>, i32) -> vector<4xf32> /// ``` class smfmac_f32_32x32x32_f16; } // namespace mlir::ROCDL namespace mlir::ROCDL { /// Sparse matrix fused multiply-accumulate (SMFMAC) intrinsic with 2:4 /// structured sparsity. The `index` operand provides the sparsity metadata, /// and `cbsz`/`abid` control broadcast modes. /// /// Example: /// ```mlir /// // SMFMAC with f16 inputs. /// %r0 = rocdl.smfmac.f32.16x16x32.f16 %a0, %b0, %c0, %idx, 0, 0 : /// (vector<4xf16>, vector<8xf16>, vector<4xf32>, i32) -> vector<4xf32> /// /// // SMFMAC with bf16 inputs. /// %r1 = rocdl.smfmac.f32.16x16x32.bf16 %a1, %b1, %c0, %idx, 0, 0 : /// (vector<4xi16>, vector<8xi16>, vector<4xf32>, i32) -> vector<4xf32> /// /// // SMFMAC with i8 inputs and i32 accumulator. /// %r2 = rocdl.smfmac.i32.16x16x64.i8 %a2, %b2, %c2, %idx, 0, 0 : /// (vector<2xi32>, vector<4xi32>, vector<4xi32>, i32) -> vector<4xi32> /// /// // SMFMAC with fp8 inputs. /// %r3 = rocdl.smfmac.f32.16x16x64.fp8.fp8 %a2, %b2, %c0, %idx, 0, 0 : /// (vector<2xi32>, vector<4xi32>, vector<4xf32>, i32) -> vector<4xf32> /// ``` class smfmac_f32_32x32x32_fp8_bf8; } // namespace mlir::ROCDL namespace mlir::ROCDL { /// Sparse matrix fused multiply-accumulate (SMFMAC) intrinsic with 2:4 /// structured sparsity. The `index` operand provides the sparsity metadata, /// and `cbsz`/`abid` control broadcast modes. /// /// Example: /// ```mlir /// // SMFMAC with f16 inputs. /// %r0 = rocdl.smfmac.f32.16x16x32.f16 %a0, %b0, %c0, %idx, 0, 0 : /// (vector<4xf16>, vector<8xf16>, vector<4xf32>, i32) -> vector<4xf32> /// /// // SMFMAC with bf16 inputs. /// %r1 = rocdl.smfmac.f32.16x16x32.bf16 %a1, %b1, %c0, %idx, 0, 0 : /// (vector<4xi16>, vector<8xi16>, vector<4xf32>, i32) -> vector<4xf32> /// /// // SMFMAC with i8 inputs and i32 accumulator. /// %r2 = rocdl.smfmac.i32.16x16x64.i8 %a2, %b2, %c2, %idx, 0, 0 : /// (vector<2xi32>, vector<4xi32>, vector<4xi32>, i32) -> vector<4xi32> /// /// // SMFMAC with fp8 inputs. /// %r3 = rocdl.smfmac.f32.16x16x64.fp8.fp8 %a2, %b2, %c0, %idx, 0, 0 : /// (vector<2xi32>, vector<4xi32>, vector<4xf32>, i32) -> vector<4xf32> /// ``` class smfmac_f32_32x32x32_fp8_fp8; } // namespace mlir::ROCDL namespace mlir::ROCDL { /// Sparse matrix fused multiply-accumulate (SMFMAC) intrinsic with 2:4 /// structured sparsity. The `index` operand provides the sparsity metadata, /// and `cbsz`/`abid` control broadcast modes. /// /// Example: /// ```mlir /// // SMFMAC with f16 inputs. /// %r0 = rocdl.smfmac.f32.16x16x32.f16 %a0, %b0, %c0, %idx, 0, 0 : /// (vector<4xf16>, vector<8xf16>, vector<4xf32>, i32) -> vector<4xf32> /// /// // SMFMAC with bf16 inputs. /// %r1 = rocdl.smfmac.f32.16x16x32.bf16 %a1, %b1, %c0, %idx, 0, 0 : /// (vector<4xi16>, vector<8xi16>, vector<4xf32>, i32) -> vector<4xf32> /// /// // SMFMAC with i8 inputs and i32 accumulator. /// %r2 = rocdl.smfmac.i32.16x16x64.i8 %a2, %b2, %c2, %idx, 0, 0 : /// (vector<2xi32>, vector<4xi32>, vector<4xi32>, i32) -> vector<4xi32> /// /// // SMFMAC with fp8 inputs. /// %r3 = rocdl.smfmac.f32.16x16x64.fp8.fp8 %a2, %b2, %c0, %idx, 0, 0 : /// (vector<2xi32>, vector<4xi32>, vector<4xf32>, i32) -> vector<4xf32> /// ``` class smfmac_f32_32x32x64_bf8_bf8; } // namespace mlir::ROCDL namespace mlir::ROCDL { /// Sparse matrix fused multiply-accumulate (SMFMAC) intrinsic with 2:4 /// structured sparsity. The `index` operand provides the sparsity metadata, /// and `cbsz`/`abid` control broadcast modes. /// /// Example: /// ```mlir /// // SMFMAC with f16 inputs. /// %r0 = rocdl.smfmac.f32.16x16x32.f16 %a0, %b0, %c0, %idx, 0, 0 : /// (vector<4xf16>, vector<8xf16>, vector<4xf32>, i32) -> vector<4xf32> /// /// // SMFMAC with bf16 inputs. /// %r1 = rocdl.smfmac.f32.16x16x32.bf16 %a1, %b1, %c0, %idx, 0, 0 : /// (vector<4xi16>, vector<8xi16>, vector<4xf32>, i32) -> vector<4xf32> /// /// // SMFMAC with i8 inputs and i32 accumulator. /// %r2 = rocdl.smfmac.i32.16x16x64.i8 %a2, %b2, %c2, %idx, 0, 0 : /// (vector<2xi32>, vector<4xi32>, vector<4xi32>, i32) -> vector<4xi32> /// /// // SMFMAC with fp8 inputs. /// %r3 = rocdl.smfmac.f32.16x16x64.fp8.fp8 %a2, %b2, %c0, %idx, 0, 0 : /// (vector<2xi32>, vector<4xi32>, vector<4xf32>, i32) -> vector<4xf32> /// ``` class smfmac_f32_32x32x64_bf8_fp8; } // namespace mlir::ROCDL namespace mlir::ROCDL { /// Sparse matrix fused multiply-accumulate (SMFMAC) intrinsic with 2:4 /// structured sparsity. The `index` operand provides the sparsity metadata, /// and `cbsz`/`abid` control broadcast modes. /// /// Example: /// ```mlir /// // SMFMAC with f16 inputs. /// %r0 = rocdl.smfmac.f32.16x16x32.f16 %a0, %b0, %c0, %idx, 0, 0 : /// (vector<4xf16>, vector<8xf16>, vector<4xf32>, i32) -> vector<4xf32> /// /// // SMFMAC with bf16 inputs. /// %r1 = rocdl.smfmac.f32.16x16x32.bf16 %a1, %b1, %c0, %idx, 0, 0 : /// (vector<4xi16>, vector<8xi16>, vector<4xf32>, i32) -> vector<4xf32> /// /// // SMFMAC with i8 inputs and i32 accumulator. /// %r2 = rocdl.smfmac.i32.16x16x64.i8 %a2, %b2, %c2, %idx, 0, 0 : /// (vector<2xi32>, vector<4xi32>, vector<4xi32>, i32) -> vector<4xi32> /// /// // SMFMAC with fp8 inputs. /// %r3 = rocdl.smfmac.f32.16x16x64.fp8.fp8 %a2, %b2, %c0, %idx, 0, 0 : /// (vector<2xi32>, vector<4xi32>, vector<4xf32>, i32) -> vector<4xf32> /// ``` class smfmac_f32_32x32x64_fp8_bf8; } // namespace mlir::ROCDL namespace mlir::ROCDL { /// Sparse matrix fused multiply-accumulate (SMFMAC) intrinsic with 2:4 /// structured sparsity. The `index` operand provides the sparsity metadata, /// and `cbsz`/`abid` control broadcast modes. /// /// Example: /// ```mlir /// // SMFMAC with f16 inputs. /// %r0 = rocdl.smfmac.f32.16x16x32.f16 %a0, %b0, %c0, %idx, 0, 0 : /// (vector<4xf16>, vector<8xf16>, vector<4xf32>, i32) -> vector<4xf32> /// /// // SMFMAC with bf16 inputs. /// %r1 = rocdl.smfmac.f32.16x16x32.bf16 %a1, %b1, %c0, %idx, 0, 0 : /// (vector<4xi16>, vector<8xi16>, vector<4xf32>, i32) -> vector<4xf32> /// /// // SMFMAC with i8 inputs and i32 accumulator. /// %r2 = rocdl.smfmac.i32.16x16x64.i8 %a2, %b2, %c2, %idx, 0, 0 : /// (vector<2xi32>, vector<4xi32>, vector<4xi32>, i32) -> vector<4xi32> /// /// // SMFMAC with fp8 inputs. /// %r3 = rocdl.smfmac.f32.16x16x64.fp8.fp8 %a2, %b2, %c0, %idx, 0, 0 : /// (vector<2xi32>, vector<4xi32>, vector<4xf32>, i32) -> vector<4xf32> /// ``` class smfmac_f32_32x32x64_fp8_fp8; } // namespace mlir::ROCDL namespace mlir::ROCDL { /// Sparse matrix fused multiply-accumulate (SMFMAC) intrinsic with 2:4 /// structured sparsity. The `index` operand provides the sparsity metadata, /// and `cbsz`/`abid` control broadcast modes. /// /// Example: /// ```mlir /// // SMFMAC with f16 inputs. /// %r0 = rocdl.smfmac.f32.16x16x32.f16 %a0, %b0, %c0, %idx, 0, 0 : /// (vector<4xf16>, vector<8xf16>, vector<4xf32>, i32) -> vector<4xf32> /// /// // SMFMAC with bf16 inputs. /// %r1 = rocdl.smfmac.f32.16x16x32.bf16 %a1, %b1, %c0, %idx, 0, 0 : /// (vector<4xi16>, vector<8xi16>, vector<4xf32>, i32) -> vector<4xf32> /// /// // SMFMAC with i8 inputs and i32 accumulator. /// %r2 = rocdl.smfmac.i32.16x16x64.i8 %a2, %b2, %c2, %idx, 0, 0 : /// (vector<2xi32>, vector<4xi32>, vector<4xi32>, i32) -> vector<4xi32> /// /// // SMFMAC with fp8 inputs. /// %r3 = rocdl.smfmac.f32.16x16x64.fp8.fp8 %a2, %b2, %c0, %idx, 0, 0 : /// (vector<2xi32>, vector<4xi32>, vector<4xf32>, i32) -> vector<4xf32> /// ``` class smfmac_i32_16x16x128_i8; } // namespace mlir::ROCDL namespace mlir::ROCDL { /// Sparse matrix fused multiply-accumulate (SMFMAC) intrinsic with 2:4 /// structured sparsity. The `index` operand provides the sparsity metadata, /// and `cbsz`/`abid` control broadcast modes. /// /// Example: /// ```mlir /// // SMFMAC with f16 inputs. /// %r0 = rocdl.smfmac.f32.16x16x32.f16 %a0, %b0, %c0, %idx, 0, 0 : /// (vector<4xf16>, vector<8xf16>, vector<4xf32>, i32) -> vector<4xf32> /// /// // SMFMAC with bf16 inputs. /// %r1 = rocdl.smfmac.f32.16x16x32.bf16 %a1, %b1, %c0, %idx, 0, 0 : /// (vector<4xi16>, vector<8xi16>, vector<4xf32>, i32) -> vector<4xf32> /// /// // SMFMAC with i8 inputs and i32 accumulator. /// %r2 = rocdl.smfmac.i32.16x16x64.i8 %a2, %b2, %c2, %idx, 0, 0 : /// (vector<2xi32>, vector<4xi32>, vector<4xi32>, i32) -> vector<4xi32> /// /// // SMFMAC with fp8 inputs. /// %r3 = rocdl.smfmac.f32.16x16x64.fp8.fp8 %a2, %b2, %c0, %idx, 0, 0 : /// (vector<2xi32>, vector<4xi32>, vector<4xf32>, i32) -> vector<4xf32> /// ``` class smfmac_i32_16x16x64_i8; } // namespace mlir::ROCDL namespace mlir::ROCDL { /// Sparse matrix fused multiply-accumulate (SMFMAC) intrinsic with 2:4 /// structured sparsity. The `index` operand provides the sparsity metadata, /// and `cbsz`/`abid` control broadcast modes. /// /// Example: /// ```mlir /// // SMFMAC with f16 inputs. /// %r0 = rocdl.smfmac.f32.16x16x32.f16 %a0, %b0, %c0, %idx, 0, 0 : /// (vector<4xf16>, vector<8xf16>, vector<4xf32>, i32) -> vector<4xf32> /// /// // SMFMAC with bf16 inputs. /// %r1 = rocdl.smfmac.f32.16x16x32.bf16 %a1, %b1, %c0, %idx, 0, 0 : /// (vector<4xi16>, vector<8xi16>, vector<4xf32>, i32) -> vector<4xf32> /// /// // SMFMAC with i8 inputs and i32 accumulator. /// %r2 = rocdl.smfmac.i32.16x16x64.i8 %a2, %b2, %c2, %idx, 0, 0 : /// (vector<2xi32>, vector<4xi32>, vector<4xi32>, i32) -> vector<4xi32> /// /// // SMFMAC with fp8 inputs. /// %r3 = rocdl.smfmac.f32.16x16x64.fp8.fp8 %a2, %b2, %c0, %idx, 0, 0 : /// (vector<2xi32>, vector<4xi32>, vector<4xf32>, i32) -> vector<4xf32> /// ``` class smfmac_i32_32x32x32_i8; } // namespace mlir::ROCDL namespace mlir::ROCDL { /// Sparse matrix fused multiply-accumulate (SMFMAC) intrinsic with 2:4 /// structured sparsity. The `index` operand provides the sparsity metadata, /// and `cbsz`/`abid` control broadcast modes. /// /// Example: /// ```mlir /// // SMFMAC with f16 inputs. /// %r0 = rocdl.smfmac.f32.16x16x32.f16 %a0, %b0, %c0, %idx, 0, 0 : /// (vector<4xf16>, vector<8xf16>, vector<4xf32>, i32) -> vector<4xf32> /// /// // SMFMAC with bf16 inputs. /// %r1 = rocdl.smfmac.f32.16x16x32.bf16 %a1, %b1, %c0, %idx, 0, 0 : /// (vector<4xi16>, vector<8xi16>, vector<4xf32>, i32) -> vector<4xf32> /// /// // SMFMAC with i8 inputs and i32 accumulator. /// %r2 = rocdl.smfmac.i32.16x16x64.i8 %a2, %b2, %c2, %idx, 0, 0 : /// (vector<2xi32>, vector<4xi32>, vector<4xi32>, i32) -> vector<4xi32> /// /// // SMFMAC with fp8 inputs. /// %r3 = rocdl.smfmac.f32.16x16x64.fp8.fp8 %a2, %b2, %c0, %idx, 0, 0 : /// (vector<2xi32>, vector<4xi32>, vector<4xf32>, i32) -> vector<4xf32> /// ``` class smfmac_i32_32x32x64_i8; } // namespace mlir::ROCDL namespace mlir::ROCDL { /// Mixed-signedness packed dot-product with per-operand sign controls. /// Computes `res = sum_i a[i]*b[i] + c`. Each lane of `a` is treated as /// signed when `signA = true`; when `signA = false`, the unsigned lane /// value is zero-extended into a wider signed integer. `signB` controls /// the same for `b`. `clamp` controls result clamping. /// /// These ops correspond to RDNA's unified mixed-sign `v_dot4_i32_iu8` /// and `v_dot8_i32_iu4` instructions (gfx11+). /// /// Example: /// ```mlir /// %r = rocdl.sudot4 %a, %b, %c /// {signA = true, signB = false, clamp = true} : /// (i32, i32, i32) -> i32 /// ``` class sudot4; } // namespace mlir::ROCDL namespace mlir::ROCDL { /// Mixed-signedness packed dot-product with per-operand sign controls. /// Computes `res = sum_i a[i]*b[i] + c`. Each lane of `a` is treated as /// signed when `signA = true`; when `signA = false`, the unsigned lane /// value is zero-extended into a wider signed integer. `signB` controls /// the same for `b`. `clamp` controls result clamping. /// /// These ops correspond to RDNA's unified mixed-sign `v_dot4_i32_iu8` /// and `v_dot8_i32_iu4` instructions (gfx11+). /// /// Example: /// ```mlir /// %r = rocdl.sudot8 %a, %b, %c /// {signA = true, signB = false, clamp = true} : /// (i32, i32, i32) -> i32 /// ``` class sudot8; } // namespace mlir::ROCDL namespace mlir::ROCDL { class swmmac_bf16_16x16x32_bf16; } // namespace mlir::ROCDL namespace mlir::ROCDL { class swmmac_bf16_16x16x64_bf16; } // namespace mlir::ROCDL namespace mlir::ROCDL { class swmmac_bf16f32_16x16x64_bf16; } // namespace mlir::ROCDL namespace mlir::ROCDL { class swmmac_f16_16x16x128_bf8_bf8; } // namespace mlir::ROCDL namespace mlir::ROCDL { class swmmac_f16_16x16x128_bf8_fp8; } // namespace mlir::ROCDL namespace mlir::ROCDL { class swmmac_f16_16x16x128_fp8_bf8; } // namespace mlir::ROCDL namespace mlir::ROCDL { class swmmac_f16_16x16x128_fp8_fp8; } // namespace mlir::ROCDL namespace mlir::ROCDL { class swmmac_f16_16x16x32_f16; } // namespace mlir::ROCDL namespace mlir::ROCDL { class swmmac_f16_16x16x64_f16; } // namespace mlir::ROCDL namespace mlir::ROCDL { class swmmac_f32_16x16x128_bf8_bf8; } // namespace mlir::ROCDL namespace mlir::ROCDL { class swmmac_f32_16x16x128_bf8_fp8; } // namespace mlir::ROCDL namespace mlir::ROCDL { class swmmac_f32_16x16x128_fp8_bf8; } // namespace mlir::ROCDL namespace mlir::ROCDL { class swmmac_f32_16x16x128_fp8_fp8; } // namespace mlir::ROCDL namespace mlir::ROCDL { class swmmac_f32_16x16x32_bf16; } // namespace mlir::ROCDL namespace mlir::ROCDL { class swmmac_f32_16x16x32_bf8_bf8; } // namespace mlir::ROCDL namespace mlir::ROCDL { class swmmac_f32_16x16x32_bf8_fp8; } // namespace mlir::ROCDL namespace mlir::ROCDL { class swmmac_f32_16x16x32_f16; } // namespace mlir::ROCDL namespace mlir::ROCDL { class swmmac_f32_16x16x32_fp8_bf8; } // namespace mlir::ROCDL namespace mlir::ROCDL { class swmmac_f32_16x16x32_fp8_fp8; } // namespace mlir::ROCDL namespace mlir::ROCDL { class swmmac_f32_16x16x64_bf16; } // namespace mlir::ROCDL namespace mlir::ROCDL { class swmmac_f32_16x16x64_f16; } // namespace mlir::ROCDL namespace mlir::ROCDL { class swmmac_i32_16x16x128_iu8; } // namespace mlir::ROCDL namespace mlir::ROCDL { class swmmac_i32_16x16x32_iu4; } // namespace mlir::ROCDL namespace mlir::ROCDL { class swmmac_i32_16x16x32_iu8; } // namespace mlir::ROCDL namespace mlir::ROCDL { class swmmac_i32_16x16x64_iu4; } // namespace mlir::ROCDL namespace mlir::ROCDL { /// Packed intra-lane dot-product with optional result clamping (`clamp`). /// Computes `res = sum_i a[i]*b[i] + c`, where `a` and `b` hold packed /// 4/8/16-bit data (for `dot2`,`dot4`,`dot8`). /// /// Example: /// ```mlir /// %r = rocdl.udot2 %a, %b, %c {clamp = true} : /// (vector<2xi16>, vector<2xi16>, i32) -> i32 /// ``` class udot2; } // namespace mlir::ROCDL namespace mlir::ROCDL { /// Packed intra-lane dot-product with optional result clamping (`clamp`). /// Computes `res = sum_i a[i]*b[i] + c`, where `a` and `b` hold packed /// 4/8/16-bit data (for `dot2`,`dot4`,`dot8`). /// /// Example: /// ```mlir /// %r = rocdl.udot4 %a, %b, %c {clamp = true} : /// (i32, i32, i32) -> i32 /// ``` class udot4; } // namespace mlir::ROCDL namespace mlir::ROCDL { /// Packed intra-lane dot-product with optional result clamping (`clamp`). /// Computes `res = sum_i a[i]*b[i] + c`, where `a` and `b` hold packed /// 4/8/16-bit data (for `dot2`,`dot4`,`dot8`). /// /// Example: /// ```mlir /// %r = rocdl.udot8 %a, %b, %c {clamp = true} : /// (i32, i32, i32) -> i32 /// ``` class udot8; } // namespace mlir::ROCDL namespace mlir::ROCDL { /// Wave Matrix Multiply-Accumulate (WMMA) with output operand selection. /// /// Example: /// ```mlir /// // WMMA f16 with opsel control. /// %r = rocdl.wmma.f16.16x16x16.f16 %a, %b, %c {opsel = false} : /// (vector<16xf16>, vector<16xf16>, vector<16xf16>) -> vector<16xf16> /// ``` class wmma_bf16_16x16x16_bf16; } // namespace mlir::ROCDL namespace mlir::ROCDL { /// Wave Matrix Multiply-Accumulate (WMMA) with modC and reuse controls. /// /// Example: /// ```mlir /// // WMMA f32 with fp8 inputs and modC/reuse controls. /// %r = rocdl.wmma.f32.16x16x64.fp8_fp8 %a, %b, %c, modC = none : /// (vector<16xi32>, vector<16xi32>, vector<8xf32>) -> vector<8xf32> /// ``` class wmma_bf16_16x16x32_bf16; } // namespace mlir::ROCDL namespace mlir::ROCDL { /// Wave Matrix Multiply-Accumulate (WMMA) with different C and D types. /// /// Example: /// ```mlir /// // WMMA bf16 output from f32 accumulator with bf16 inputs. /// %r = rocdl.wmma.bf16f32.16x16x32.bf16 %a, %b, %c, modC = none : /// (vector<16xbf16>, vector<16xbf16>, vector<8xf32>) -> vector<16xbf16> /// ``` class wmma_bf16f32_16x16x32_bf16; } // namespace mlir::ROCDL namespace mlir::ROCDL { /// Wave Matrix Multiply-Accumulate (WMMA) with modC and reuse controls. /// /// Example: /// ```mlir /// // WMMA f32 with fp8 inputs and modC/reuse controls. /// %r = rocdl.wmma.f32.16x16x64.fp8_fp8 %a, %b, %c, modC = none : /// (vector<16xi32>, vector<16xi32>, vector<8xf32>) -> vector<8xf32> /// ``` class wmma_f16_16x16x128_bf8_bf8; } // namespace mlir::ROCDL namespace mlir::ROCDL { /// Wave Matrix Multiply-Accumulate (WMMA) with modC and reuse controls. /// /// Example: /// ```mlir /// // WMMA f32 with fp8 inputs and modC/reuse controls. /// %r = rocdl.wmma.f32.16x16x64.fp8_fp8 %a, %b, %c, modC = none : /// (vector<16xi32>, vector<16xi32>, vector<8xf32>) -> vector<8xf32> /// ``` class wmma_f16_16x16x128_bf8_fp8; } // namespace mlir::ROCDL namespace mlir::ROCDL { /// Wave Matrix Multiply-Accumulate (WMMA) with modC and reuse controls. /// /// Example: /// ```mlir /// // WMMA f32 with fp8 inputs and modC/reuse controls. /// %r = rocdl.wmma.f32.16x16x64.fp8_fp8 %a, %b, %c, modC = none : /// (vector<16xi32>, vector<16xi32>, vector<8xf32>) -> vector<8xf32> /// ``` class wmma_f16_16x16x128_fp8_bf8; } // namespace mlir::ROCDL namespace mlir::ROCDL { /// Wave Matrix Multiply-Accumulate (WMMA) with modC and reuse controls. /// /// Example: /// ```mlir /// // WMMA f32 with fp8 inputs and modC/reuse controls. /// %r = rocdl.wmma.f32.16x16x64.fp8_fp8 %a, %b, %c, modC = none : /// (vector<16xi32>, vector<16xi32>, vector<8xf32>) -> vector<8xf32> /// ``` class wmma_f16_16x16x128_fp8_fp8; } // namespace mlir::ROCDL namespace mlir::ROCDL { /// Wave Matrix Multiply-Accumulate (WMMA) with output operand selection. /// /// Example: /// ```mlir /// // WMMA f16 with opsel control. /// %r = rocdl.wmma.f16.16x16x16.f16 %a, %b, %c {opsel = false} : /// (vector<16xf16>, vector<16xf16>, vector<16xf16>) -> vector<16xf16> /// ``` class wmma_f16_16x16x16_f16; } // namespace mlir::ROCDL namespace mlir::ROCDL { /// Wave Matrix Multiply-Accumulate (WMMA) with modC and reuse controls. /// /// Example: /// ```mlir /// // WMMA f32 with fp8 inputs and modC/reuse controls. /// %r = rocdl.wmma.f32.16x16x64.fp8_fp8 %a, %b, %c, modC = none : /// (vector<16xi32>, vector<16xi32>, vector<8xf32>) -> vector<8xf32> /// ``` class wmma_f16_16x16x32_f16; } // namespace mlir::ROCDL namespace mlir::ROCDL { /// Wave Matrix Multiply-Accumulate (WMMA) with modC and reuse controls. /// /// Example: /// ```mlir /// // WMMA f32 with fp8 inputs and modC/reuse controls. /// %r = rocdl.wmma.f32.16x16x64.fp8_fp8 %a, %b, %c, modC = none : /// (vector<16xi32>, vector<16xi32>, vector<8xf32>) -> vector<8xf32> /// ``` class wmma_f16_16x16x64_bf8_bf8; } // namespace mlir::ROCDL namespace mlir::ROCDL { /// Wave Matrix Multiply-Accumulate (WMMA) with modC and reuse controls. /// /// Example: /// ```mlir /// // WMMA f32 with fp8 inputs and modC/reuse controls. /// %r = rocdl.wmma.f32.16x16x64.fp8_fp8 %a, %b, %c, modC = none : /// (vector<16xi32>, vector<16xi32>, vector<8xf32>) -> vector<8xf32> /// ``` class wmma_f16_16x16x64_bf8_fp8; } // namespace mlir::ROCDL namespace mlir::ROCDL { /// Wave Matrix Multiply-Accumulate (WMMA) with modC and reuse controls. /// /// Example: /// ```mlir /// // WMMA f32 with fp8 inputs and modC/reuse controls. /// %r = rocdl.wmma.f32.16x16x64.fp8_fp8 %a, %b, %c, modC = none : /// (vector<16xi32>, vector<16xi32>, vector<8xf32>) -> vector<8xf32> /// ``` class wmma_f16_16x16x64_fp8_bf8; } // namespace mlir::ROCDL namespace mlir::ROCDL { /// Wave Matrix Multiply-Accumulate (WMMA) with modC and reuse controls. /// /// Example: /// ```mlir /// // WMMA f32 with fp8 inputs and modC/reuse controls. /// %r = rocdl.wmma.f32.16x16x64.fp8_fp8 %a, %b, %c, modC = none : /// (vector<16xi32>, vector<16xi32>, vector<8xf32>) -> vector<8xf32> /// ``` class wmma_f16_16x16x64_fp8_fp8; } // namespace mlir::ROCDL namespace mlir::ROCDL { /// Wave Matrix Multiply-Accumulate (WMMA) with modC and reuse controls. /// /// Example: /// ```mlir /// // WMMA f32 with fp8 inputs and modC/reuse controls. /// %r = rocdl.wmma.f32.16x16x64.fp8_fp8 %a, %b, %c, modC = none : /// (vector<16xi32>, vector<16xi32>, vector<8xf32>) -> vector<8xf32> /// ``` class wmma_f32_16x16x128_bf8_bf8; } // namespace mlir::ROCDL namespace mlir::ROCDL { /// Wave Matrix Multiply-Accumulate (WMMA) with modC and reuse controls. /// /// Example: /// ```mlir /// // WMMA f32 with fp8 inputs and modC/reuse controls. /// %r = rocdl.wmma.f32.16x16x64.fp8_fp8 %a, %b, %c, modC = none : /// (vector<16xi32>, vector<16xi32>, vector<8xf32>) -> vector<8xf32> /// ``` class wmma_f32_16x16x128_bf8_fp8; } // namespace mlir::ROCDL namespace mlir::ROCDL { /// Wave Matrix Multiply-Accumulate (WMMA) with modC and reuse controls. /// /// Example: /// ```mlir /// // WMMA f32 with fp8 inputs and modC/reuse controls. /// %r = rocdl.wmma.f32.16x16x64.fp8_fp8 %a, %b, %c, modC = none : /// (vector<16xi32>, vector<16xi32>, vector<8xf32>) -> vector<8xf32> /// ``` class wmma_f32_16x16x128_fp8_bf8; } // namespace mlir::ROCDL namespace mlir::ROCDL { /// Wave Matrix Multiply-Accumulate (WMMA) with modC and reuse controls. /// /// Example: /// ```mlir /// // WMMA f32 with fp8 inputs and modC/reuse controls. /// %r = rocdl.wmma.f32.16x16x64.fp8_fp8 %a, %b, %c, modC = none : /// (vector<16xi32>, vector<16xi32>, vector<8xf32>) -> vector<8xf32> /// ``` class wmma_f32_16x16x128_fp8_fp8; } // namespace mlir::ROCDL namespace mlir::ROCDL { /// Wave Matrix Multiply-Accumulate (WMMA) intrinsic. /// /// Example: /// ```mlir /// // WMMA with f16 inputs and f32 accumulator. /// %r = rocdl.wmma.f32.16x16x16.f16 %a, %b, %c : /// (vector<16xf16>, vector<16xf16>, vector<8xf32>) -> vector<8xf32> /// ``` class wmma_f32_16x16x16_bf16; } // namespace mlir::ROCDL namespace mlir::ROCDL { /// Wave Matrix Multiply-Accumulate (WMMA) intrinsic. /// /// Example: /// ```mlir /// // WMMA with f16 inputs and f32 accumulator. /// %r = rocdl.wmma.f32.16x16x16.f16 %a, %b, %c : /// (vector<16xf16>, vector<16xf16>, vector<8xf32>) -> vector<8xf32> /// ``` class wmma_f32_16x16x16_bf8_bf8; } // namespace mlir::ROCDL namespace mlir::ROCDL { /// Wave Matrix Multiply-Accumulate (WMMA) intrinsic. /// /// Example: /// ```mlir /// // WMMA with f16 inputs and f32 accumulator. /// %r = rocdl.wmma.f32.16x16x16.f16 %a, %b, %c : /// (vector<16xf16>, vector<16xf16>, vector<8xf32>) -> vector<8xf32> /// ``` class wmma_f32_16x16x16_bf8_fp8; } // namespace mlir::ROCDL namespace mlir::ROCDL { /// Wave Matrix Multiply-Accumulate (WMMA) intrinsic. /// /// Example: /// ```mlir /// // WMMA with f16 inputs and f32 accumulator. /// %r = rocdl.wmma.f32.16x16x16.f16 %a, %b, %c : /// (vector<16xf16>, vector<16xf16>, vector<8xf32>) -> vector<8xf32> /// ``` class wmma_f32_16x16x16_f16; } // namespace mlir::ROCDL namespace mlir::ROCDL { /// Wave Matrix Multiply-Accumulate (WMMA) intrinsic. /// /// Example: /// ```mlir /// // WMMA with f16 inputs and f32 accumulator. /// %r = rocdl.wmma.f32.16x16x16.f16 %a, %b, %c : /// (vector<16xf16>, vector<16xf16>, vector<8xf32>) -> vector<8xf32> /// ``` class wmma_f32_16x16x16_fp8_bf8; } // namespace mlir::ROCDL namespace mlir::ROCDL { /// Wave Matrix Multiply-Accumulate (WMMA) intrinsic. /// /// Example: /// ```mlir /// // WMMA with f16 inputs and f32 accumulator. /// %r = rocdl.wmma.f32.16x16x16.f16 %a, %b, %c : /// (vector<16xf16>, vector<16xf16>, vector<8xf32>) -> vector<8xf32> /// ``` class wmma_f32_16x16x16_fp8_fp8; } // namespace mlir::ROCDL namespace mlir::ROCDL { /// Wave Matrix Multiply-Accumulate (WMMA) with modC and reuse controls. /// /// Example: /// ```mlir /// // WMMA f32 with fp8 inputs and modC/reuse controls. /// %r = rocdl.wmma.f32.16x16x64.fp8_fp8 %a, %b, %c, modC = none : /// (vector<16xi32>, vector<16xi32>, vector<8xf32>) -> vector<8xf32> /// ``` class wmma_f32_16x16x32_bf16; } // namespace mlir::ROCDL namespace mlir::ROCDL { /// Wave Matrix Multiply-Accumulate (WMMA) with modC and reuse controls. /// /// Example: /// ```mlir /// // WMMA f32 with fp8 inputs and modC/reuse controls. /// %r = rocdl.wmma.f32.16x16x64.fp8_fp8 %a, %b, %c, modC = none : /// (vector<16xi32>, vector<16xi32>, vector<8xf32>) -> vector<8xf32> /// ``` class wmma_f32_16x16x32_f16; } // namespace mlir::ROCDL namespace mlir::ROCDL { /// Wave Matrix Multiply-Accumulate (WMMA) with modC and reuse controls. /// /// Example: /// ```mlir /// // WMMA f32 with fp8 inputs and modC/reuse controls. /// %r = rocdl.wmma.f32.16x16x64.fp8_fp8 %a, %b, %c, modC = none : /// (vector<16xi32>, vector<16xi32>, vector<8xf32>) -> vector<8xf32> /// ``` class wmma_f32_16x16x4_f32; } // namespace mlir::ROCDL namespace mlir::ROCDL { /// Wave Matrix Multiply-Accumulate (WMMA) with modC and reuse controls. /// /// Example: /// ```mlir /// // WMMA f32 with fp8 inputs and modC/reuse controls. /// %r = rocdl.wmma.f32.16x16x64.fp8_fp8 %a, %b, %c, modC = none : /// (vector<16xi32>, vector<16xi32>, vector<8xf32>) -> vector<8xf32> /// ``` class wmma_f32_16x16x64_bf8_bf8; } // namespace mlir::ROCDL namespace mlir::ROCDL { /// Wave Matrix Multiply-Accumulate (WMMA) with modC and reuse controls. /// /// Example: /// ```mlir /// // WMMA f32 with fp8 inputs and modC/reuse controls. /// %r = rocdl.wmma.f32.16x16x64.fp8_fp8 %a, %b, %c, modC = none : /// (vector<16xi32>, vector<16xi32>, vector<8xf32>) -> vector<8xf32> /// ``` class wmma_f32_16x16x64_bf8_fp8; } // namespace mlir::ROCDL namespace mlir::ROCDL { /// Wave Matrix Multiply-Accumulate (WMMA) with modC and reuse controls. /// /// Example: /// ```mlir /// // WMMA f32 with fp8 inputs and modC/reuse controls. /// %r = rocdl.wmma.f32.16x16x64.fp8_fp8 %a, %b, %c, modC = none : /// (vector<16xi32>, vector<16xi32>, vector<8xf32>) -> vector<8xf32> /// ``` class wmma_f32_16x16x64_fp8_bf8; } // namespace mlir::ROCDL namespace mlir::ROCDL { /// Wave Matrix Multiply-Accumulate (WMMA) with modC and reuse controls. /// /// Example: /// ```mlir /// // WMMA f32 with fp8 inputs and modC/reuse controls. /// %r = rocdl.wmma.f32.16x16x64.fp8_fp8 %a, %b, %c, modC = none : /// (vector<16xi32>, vector<16xi32>, vector<8xf32>) -> vector<8xf32> /// ``` class wmma_f32_16x16x64_fp8_fp8; } // namespace mlir::ROCDL namespace mlir::ROCDL { /// Wave Matrix Multiply-Accumulate (WMMA) for integer types with /// sign and clamp control. /// /// Example: /// ```mlir /// // WMMA i32 with unsigned i8 inputs. /// %r = rocdl.wmma.i32.16x16x16.iu8 %a, %b, %c /// {signA = false, signB = false, clamp = false} : /// (vector<4xi32>, vector<4xi32>, vector<8xi32>) -> vector<8xi32> /// ``` class wmma_i32_16x16x16_iu4; } // namespace mlir::ROCDL namespace mlir::ROCDL { /// Wave Matrix Multiply-Accumulate (WMMA) for integer types with /// sign and clamp control. /// /// Example: /// ```mlir /// // WMMA i32 with unsigned i8 inputs. /// %r = rocdl.wmma.i32.16x16x16.iu8 %a, %b, %c /// {signA = false, signB = false, clamp = false} : /// (vector<4xi32>, vector<4xi32>, vector<8xi32>) -> vector<8xi32> /// ``` class wmma_i32_16x16x16_iu8; } // namespace mlir::ROCDL namespace mlir::ROCDL { /// Wave Matrix Multiply-Accumulate (WMMA) for integer types with /// sign and clamp control. /// /// Example: /// ```mlir /// // WMMA i32 with unsigned i8 inputs. /// %r = rocdl.wmma.i32.16x16x16.iu8 %a, %b, %c /// {signA = false, signB = false, clamp = false} : /// (vector<4xi32>, vector<4xi32>, vector<8xi32>) -> vector<8xi32> /// ``` class wmma_i32_16x16x32_iu4; } // namespace mlir::ROCDL namespace mlir::ROCDL { /// Wave Matrix Multiply-Accumulate (WMMA) for integer types with /// sign, reuse, and clamp controls. /// /// Example: /// ```mlir /// // WMMA i32 with unsigned i8 inputs and reuse controls. /// %r = rocdl.wmma.i32.16x16x64.iu8 %a, %b, %c /// {signA = false, signB = false, reuseA = false, reuseB = false, clamp = false} : /// (vector<8xi32>, vector<8xi32>, vector<8xi32>) -> vector<8xi32> /// ``` class wmma_i32_16x16x64_iu8; } // namespace mlir::ROCDL namespace mlir::ROCDL { /// Scaled Wave Matrix Multiply-Accumulate (WMMA) with per-operand scaling. /// /// Example: /// ```mlir /// // Scaled WMMA with f8f6f4 format inputs. /// %r = rocdl.wmma.scale.f32.16x16x128.f8f6f4 %a, %b, %c, %scaleA, %scaleB /// fmtA = fp8_e4m3, fmtB = fp8_e4m3, modC = none, /// scaleAType = row0, fmtScaleA = e8, scaleBType = row0, fmtScaleB = e8 : /// (vector<16xi32>, vector<16xi32>, vector<8xf32>, i32, i32) -> vector<8xf32> /// ``` class wmma_scale16_f32_16x16x128_f8f6f4; } // namespace mlir::ROCDL namespace mlir::ROCDL { /// Scaled Wave Matrix Multiply-Accumulate (WMMA) for F4 format inputs. /// /// Example: /// ```mlir /// // Scaled WMMA with f4 format inputs. /// %r = rocdl.wmma.scale.f32.16x16x128.f4 %a, %b, %c, %scaleA, %scaleB /// modC = none, scaleAType = row0, fmtScaleA = e8, /// scaleBType = row0, fmtScaleB = e8 : /// (vector<8xi32>, vector<8xi32>, vector<8xf32>, i32, i32) -> vector<8xf32> /// ``` class wmma_scale16_f32_32x16x128_f4; } // namespace mlir::ROCDL namespace mlir::ROCDL { /// Scaled Wave Matrix Multiply-Accumulate (WMMA) with per-operand scaling. /// /// Example: /// ```mlir /// // Scaled WMMA with f8f6f4 format inputs. /// %r = rocdl.wmma.scale.f32.16x16x128.f8f6f4 %a, %b, %c, %scaleA, %scaleB /// fmtA = fp8_e4m3, fmtB = fp8_e4m3, modC = none, /// scaleAType = row0, fmtScaleA = e8, scaleBType = row0, fmtScaleB = e8 : /// (vector<16xi32>, vector<16xi32>, vector<8xf32>, i32, i32) -> vector<8xf32> /// ``` class wmma_scale_f32_16x16x128_f8f6f4; } // namespace mlir::ROCDL namespace mlir::ROCDL { /// Scaled Wave Matrix Multiply-Accumulate (WMMA) for F4 format inputs. /// /// Example: /// ```mlir /// // Scaled WMMA with f4 format inputs. /// %r = rocdl.wmma.scale.f32.16x16x128.f4 %a, %b, %c, %scaleA, %scaleB /// modC = none, scaleAType = row0, fmtScaleA = e8, /// scaleBType = row0, fmtScaleB = e8 : /// (vector<8xi32>, vector<8xi32>, vector<8xf32>, i32, i32) -> vector<8xf32> /// ``` class wmma_scale_f32_32x16x128_f4; } // namespace mlir::ROCDL #ifdef GET_OP_CLASSES #undef GET_OP_CLASSES namespace mlir::ROCDL { //===----------------------------------------------------------------------===// // ::mlir::ROCDL::ROCDLCos declarations //===----------------------------------------------------------------------===// namespace detail { class ROCDLCosGenericAdaptorBase { public: using Properties = ::mlir::EmptyProperties; protected: ::mlir::DictionaryAttr odsAttrs; ::std::optional<::mlir::OperationName> odsOpName; Properties properties; ::mlir::RegionRange odsRegions; public: ROCDLCosGenericAdaptorBase(::mlir::DictionaryAttr attrs, const Properties &properties, ::mlir::RegionRange regions = {}) : odsAttrs(attrs), properties(properties), odsRegions(regions) { if (odsAttrs) odsOpName.emplace("rocdl.cos", odsAttrs.getContext()); } ROCDLCosGenericAdaptorBase(ROCDLCos op); std::pair getODSOperandIndexAndLength(unsigned index, unsigned odsOperandsSize) { return {index, 1}; } const Properties &getProperties() { return properties; } ::mlir::DictionaryAttr getAttributes() { return odsAttrs; } }; } // namespace detail template class ROCDLCosGenericAdaptor : public detail::ROCDLCosGenericAdaptorBase { using ValueT = ::llvm::detail::ValueOfRange; using Base = detail::ROCDLCosGenericAdaptorBase; static constexpr int odsIndex_arg = 0; public: ROCDLCosGenericAdaptor(RangeT values, ::mlir::DictionaryAttr attrs, const Properties &properties, ::mlir::RegionRange regions = {}) : Base(attrs, properties, regions), odsOperands(values) {} ROCDLCosGenericAdaptor(RangeT values, ::mlir::DictionaryAttr attrs, ::mlir::PropertyRef properties, ::mlir::RegionRange regions = {}) : ROCDLCosGenericAdaptor(values, attrs, (properties ? *properties.as() : Properties{}), regions) {} ROCDLCosGenericAdaptor(RangeT values, ::mlir::DictionaryAttr attrs = nullptr) : ROCDLCosGenericAdaptor(values, attrs, Properties{}, {}) {} ROCDLCosGenericAdaptor(RangeT values, const ROCDLCosGenericAdaptorBase &base) : Base(base), odsOperands(values) {} template >> ROCDLCosGenericAdaptor(RangeT values, LateInst op) : Base(op), odsOperands(values) {} std::pair getODSOperandIndexAndLength(unsigned index) { return Base::getODSOperandIndexAndLength(index, odsOperands.size()); } RangeT getODSOperands(unsigned index) { auto valueRange = getODSOperandIndexAndLength(index); return {std::next(odsOperands.begin(), valueRange.first), std::next(odsOperands.begin(), valueRange.first + valueRange.second)}; } ValueT getArg() { return (*getODSOperands(0).begin()); } RangeT getOperands() { return odsOperands; } private: RangeT odsOperands; }; class ROCDLCosAdaptor : public ROCDLCosGenericAdaptor<::mlir::ValueRange> { public: using ROCDLCosGenericAdaptor::ROCDLCosGenericAdaptor; ROCDLCosAdaptor(ROCDLCos op); ::llvm::LogicalResult verify(::mlir::Location loc); }; class ROCDLCos : public ::mlir::Op::Impl, ::mlir::OpTrait::ZeroSuccessors, ::mlir::OpTrait::OneOperand, ::mlir::OpTrait::OpInvariants, ::mlir::ConditionallySpeculatable::Trait, ::mlir::OpTrait::AlwaysSpeculatableImplTrait, ::mlir::MemoryEffectOpInterface::Trait> { public: using Op::Op; using Op::print; using Adaptor = ROCDLCosAdaptor; template using GenericAdaptor = ROCDLCosGenericAdaptor; using FoldAdaptor = GenericAdaptor<::llvm::ArrayRef<::mlir::Attribute>>; static constexpr int odsIndex_arg = 0; using Properties = FoldAdaptor::Properties; static ::llvm::ArrayRef<::llvm::StringRef> getAttributeNames() { return {}; } static constexpr ::llvm::StringLiteral getOperationName() { return ::llvm::StringLiteral("rocdl.cos"); } std::pair getODSOperandIndexAndLength(unsigned index) { return {index, 1}; } ::mlir::Operation::operand_range getODSOperands(unsigned index) { auto valueRange = getODSOperandIndexAndLength(index); return {std::next(getOperation()->operand_begin(), valueRange.first), std::next(getOperation()->operand_begin(), valueRange.first + valueRange.second)}; } ::mlir::TypedValue<::mlir::Type> getArg() { return ::llvm::cast<::mlir::TypedValue<::mlir::Type>>(*getODSOperands(0).begin()); } ::mlir::OpOperand &getArgMutable() { auto range = getODSOperandIndexAndLength(0); return getOperation()->getOpOperand(range.first); } std::pair getODSResultIndexAndLength(unsigned index) { return {index, 1}; } ::mlir::Operation::result_range getODSResults(unsigned index) { auto valueRange = getODSResultIndexAndLength(index); return {std::next(getOperation()->result_begin(), valueRange.first), std::next(getOperation()->result_begin(), valueRange.first + valueRange.second)}; } ::mlir::TypedValue<::mlir::Type> getRes() { return ::llvm::cast<::mlir::TypedValue<::mlir::Type>>(*getODSResults(0).begin()); } static ::llvm::LogicalResult setPropertiesFromAttr(Properties &prop, ::mlir::Attribute attr, ::llvm::function_ref<::mlir::InFlightDiagnostic()> emitError); static ::mlir::Attribute getPropertiesAsAttr(::mlir::MLIRContext *ctx, const Properties &prop); static llvm::hash_code computePropertiesHash(const Properties &prop); static std::optional getInherentAttr(::mlir::MLIRContext *ctx, const Properties &prop, llvm::StringRef name); static void setInherentAttr(Properties &prop, llvm::StringRef name, mlir::Attribute value); static void populateInherentAttrs(::mlir::MLIRContext *ctx, const Properties &prop, ::mlir::NamedAttrList &attrs); static ::llvm::LogicalResult verifyInherentAttrs(::mlir::OperationName opName, ::mlir::NamedAttrList &attrs, llvm::function_ref<::mlir::InFlightDiagnostic()> emitError); static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::Type res, ::mlir::Value arg); static ROCDLCos create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::Type res, ::mlir::Value arg); static ROCDLCos create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::Type res, ::mlir::Value arg); static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::Value arg); static ROCDLCos create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::Value arg); static ROCDLCos create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::Value arg); static void build(::mlir::OpBuilder &, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, ::llvm::ArrayRef<::mlir::NamedAttribute> attributes = {}); static ROCDLCos create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, ::llvm::ArrayRef<::mlir::NamedAttribute> attributes = {}); static ROCDLCos create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, ::llvm::ArrayRef<::mlir::NamedAttribute> attributes = {}); static void build(::mlir::OpBuilder &, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, const Properties &properties, ::llvm::ArrayRef<::mlir::NamedAttribute> discardableAttributes = {}); static ROCDLCos create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, const Properties &properties, ::llvm::ArrayRef<::mlir::NamedAttribute> discardableAttributes = {}); static ROCDLCos create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, const Properties &properties, ::llvm::ArrayRef<::mlir::NamedAttribute> discardableAttributes = {}); ::llvm::LogicalResult verifyInvariantsImpl(); ::llvm::LogicalResult verifyInvariants(); static ::mlir::ParseResult parse(::mlir::OpAsmParser &parser, ::mlir::OperationState &result); void print(::mlir::OpAsmPrinter &_odsPrinter); void getEffects(::llvm::SmallVectorImpl<::mlir::SideEffects::EffectInstance<::mlir::MemoryEffects::Effect>> &effects); public: }; } // namespace mlir::ROCDL MLIR_DECLARE_EXPLICIT_TYPE_ID(::mlir::ROCDL::ROCDLCos) namespace mlir::ROCDL { //===----------------------------------------------------------------------===// // ::mlir::ROCDL::ROCDLExp declarations //===----------------------------------------------------------------------===// namespace detail { class ROCDLExpGenericAdaptorBase { public: using Properties = ::mlir::EmptyProperties; protected: ::mlir::DictionaryAttr odsAttrs; ::std::optional<::mlir::OperationName> odsOpName; Properties properties; ::mlir::RegionRange odsRegions; public: ROCDLExpGenericAdaptorBase(::mlir::DictionaryAttr attrs, const Properties &properties, ::mlir::RegionRange regions = {}) : odsAttrs(attrs), properties(properties), odsRegions(regions) { if (odsAttrs) odsOpName.emplace("rocdl.exp", odsAttrs.getContext()); } ROCDLExpGenericAdaptorBase(ROCDLExp op); std::pair getODSOperandIndexAndLength(unsigned index, unsigned odsOperandsSize) { return {index, 1}; } const Properties &getProperties() { return properties; } ::mlir::DictionaryAttr getAttributes() { return odsAttrs; } }; } // namespace detail template class ROCDLExpGenericAdaptor : public detail::ROCDLExpGenericAdaptorBase { using ValueT = ::llvm::detail::ValueOfRange; using Base = detail::ROCDLExpGenericAdaptorBase; static constexpr int odsIndex_arg = 0; public: ROCDLExpGenericAdaptor(RangeT values, ::mlir::DictionaryAttr attrs, const Properties &properties, ::mlir::RegionRange regions = {}) : Base(attrs, properties, regions), odsOperands(values) {} ROCDLExpGenericAdaptor(RangeT values, ::mlir::DictionaryAttr attrs, ::mlir::PropertyRef properties, ::mlir::RegionRange regions = {}) : ROCDLExpGenericAdaptor(values, attrs, (properties ? *properties.as() : Properties{}), regions) {} ROCDLExpGenericAdaptor(RangeT values, ::mlir::DictionaryAttr attrs = nullptr) : ROCDLExpGenericAdaptor(values, attrs, Properties{}, {}) {} ROCDLExpGenericAdaptor(RangeT values, const ROCDLExpGenericAdaptorBase &base) : Base(base), odsOperands(values) {} template >> ROCDLExpGenericAdaptor(RangeT values, LateInst op) : Base(op), odsOperands(values) {} std::pair getODSOperandIndexAndLength(unsigned index) { return Base::getODSOperandIndexAndLength(index, odsOperands.size()); } RangeT getODSOperands(unsigned index) { auto valueRange = getODSOperandIndexAndLength(index); return {std::next(odsOperands.begin(), valueRange.first), std::next(odsOperands.begin(), valueRange.first + valueRange.second)}; } ValueT getArg() { return (*getODSOperands(0).begin()); } RangeT getOperands() { return odsOperands; } private: RangeT odsOperands; }; class ROCDLExpAdaptor : public ROCDLExpGenericAdaptor<::mlir::ValueRange> { public: using ROCDLExpGenericAdaptor::ROCDLExpGenericAdaptor; ROCDLExpAdaptor(ROCDLExp op); ::llvm::LogicalResult verify(::mlir::Location loc); }; class ROCDLExp : public ::mlir::Op::Impl, ::mlir::OpTrait::ZeroSuccessors, ::mlir::OpTrait::OneOperand, ::mlir::OpTrait::OpInvariants, ::mlir::ConditionallySpeculatable::Trait, ::mlir::OpTrait::AlwaysSpeculatableImplTrait, ::mlir::MemoryEffectOpInterface::Trait> { public: using Op::Op; using Op::print; using Adaptor = ROCDLExpAdaptor; template using GenericAdaptor = ROCDLExpGenericAdaptor; using FoldAdaptor = GenericAdaptor<::llvm::ArrayRef<::mlir::Attribute>>; static constexpr int odsIndex_arg = 0; using Properties = FoldAdaptor::Properties; static ::llvm::ArrayRef<::llvm::StringRef> getAttributeNames() { return {}; } static constexpr ::llvm::StringLiteral getOperationName() { return ::llvm::StringLiteral("rocdl.exp"); } std::pair getODSOperandIndexAndLength(unsigned index) { return {index, 1}; } ::mlir::Operation::operand_range getODSOperands(unsigned index) { auto valueRange = getODSOperandIndexAndLength(index); return {std::next(getOperation()->operand_begin(), valueRange.first), std::next(getOperation()->operand_begin(), valueRange.first + valueRange.second)}; } ::mlir::TypedValue<::mlir::Type> getArg() { return ::llvm::cast<::mlir::TypedValue<::mlir::Type>>(*getODSOperands(0).begin()); } ::mlir::OpOperand &getArgMutable() { auto range = getODSOperandIndexAndLength(0); return getOperation()->getOpOperand(range.first); } std::pair getODSResultIndexAndLength(unsigned index) { return {index, 1}; } ::mlir::Operation::result_range getODSResults(unsigned index) { auto valueRange = getODSResultIndexAndLength(index); return {std::next(getOperation()->result_begin(), valueRange.first), std::next(getOperation()->result_begin(), valueRange.first + valueRange.second)}; } ::mlir::TypedValue<::mlir::Type> getRes() { return ::llvm::cast<::mlir::TypedValue<::mlir::Type>>(*getODSResults(0).begin()); } static ::llvm::LogicalResult setPropertiesFromAttr(Properties &prop, ::mlir::Attribute attr, ::llvm::function_ref<::mlir::InFlightDiagnostic()> emitError); static ::mlir::Attribute getPropertiesAsAttr(::mlir::MLIRContext *ctx, const Properties &prop); static llvm::hash_code computePropertiesHash(const Properties &prop); static std::optional getInherentAttr(::mlir::MLIRContext *ctx, const Properties &prop, llvm::StringRef name); static void setInherentAttr(Properties &prop, llvm::StringRef name, mlir::Attribute value); static void populateInherentAttrs(::mlir::MLIRContext *ctx, const Properties &prop, ::mlir::NamedAttrList &attrs); static ::llvm::LogicalResult verifyInherentAttrs(::mlir::OperationName opName, ::mlir::NamedAttrList &attrs, llvm::function_ref<::mlir::InFlightDiagnostic()> emitError); static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::Type res, ::mlir::Value arg); static ROCDLExp create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::Type res, ::mlir::Value arg); static ROCDLExp create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::Type res, ::mlir::Value arg); static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::Value arg); static ROCDLExp create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::Value arg); static ROCDLExp create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::Value arg); static void build(::mlir::OpBuilder &, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, ::llvm::ArrayRef<::mlir::NamedAttribute> attributes = {}); static ROCDLExp create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, ::llvm::ArrayRef<::mlir::NamedAttribute> attributes = {}); static ROCDLExp create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, ::llvm::ArrayRef<::mlir::NamedAttribute> attributes = {}); static void build(::mlir::OpBuilder &, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, const Properties &properties, ::llvm::ArrayRef<::mlir::NamedAttribute> discardableAttributes = {}); static ROCDLExp create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, const Properties &properties, ::llvm::ArrayRef<::mlir::NamedAttribute> discardableAttributes = {}); static ROCDLExp create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, const Properties &properties, ::llvm::ArrayRef<::mlir::NamedAttribute> discardableAttributes = {}); ::llvm::LogicalResult verifyInvariantsImpl(); ::llvm::LogicalResult verifyInvariants(); static ::mlir::ParseResult parse(::mlir::OpAsmParser &parser, ::mlir::OperationState &result); void print(::mlir::OpAsmPrinter &_odsPrinter); void getEffects(::llvm::SmallVectorImpl<::mlir::SideEffects::EffectInstance<::mlir::MemoryEffects::Effect>> &effects); public: }; } // namespace mlir::ROCDL MLIR_DECLARE_EXPLICIT_TYPE_ID(::mlir::ROCDL::ROCDLExp) namespace mlir::ROCDL { //===----------------------------------------------------------------------===// // ::mlir::ROCDL::ROCDLExp2 declarations //===----------------------------------------------------------------------===// namespace detail { class ROCDLExp2GenericAdaptorBase { public: using Properties = ::mlir::EmptyProperties; protected: ::mlir::DictionaryAttr odsAttrs; ::std::optional<::mlir::OperationName> odsOpName; Properties properties; ::mlir::RegionRange odsRegions; public: ROCDLExp2GenericAdaptorBase(::mlir::DictionaryAttr attrs, const Properties &properties, ::mlir::RegionRange regions = {}) : odsAttrs(attrs), properties(properties), odsRegions(regions) { if (odsAttrs) odsOpName.emplace("rocdl.exp2", odsAttrs.getContext()); } ROCDLExp2GenericAdaptorBase(ROCDLExp2 op); std::pair getODSOperandIndexAndLength(unsigned index, unsigned odsOperandsSize) { return {index, 1}; } const Properties &getProperties() { return properties; } ::mlir::DictionaryAttr getAttributes() { return odsAttrs; } }; } // namespace detail template class ROCDLExp2GenericAdaptor : public detail::ROCDLExp2GenericAdaptorBase { using ValueT = ::llvm::detail::ValueOfRange; using Base = detail::ROCDLExp2GenericAdaptorBase; static constexpr int odsIndex_arg = 0; public: ROCDLExp2GenericAdaptor(RangeT values, ::mlir::DictionaryAttr attrs, const Properties &properties, ::mlir::RegionRange regions = {}) : Base(attrs, properties, regions), odsOperands(values) {} ROCDLExp2GenericAdaptor(RangeT values, ::mlir::DictionaryAttr attrs, ::mlir::PropertyRef properties, ::mlir::RegionRange regions = {}) : ROCDLExp2GenericAdaptor(values, attrs, (properties ? *properties.as() : Properties{}), regions) {} ROCDLExp2GenericAdaptor(RangeT values, ::mlir::DictionaryAttr attrs = nullptr) : ROCDLExp2GenericAdaptor(values, attrs, Properties{}, {}) {} ROCDLExp2GenericAdaptor(RangeT values, const ROCDLExp2GenericAdaptorBase &base) : Base(base), odsOperands(values) {} template >> ROCDLExp2GenericAdaptor(RangeT values, LateInst op) : Base(op), odsOperands(values) {} std::pair getODSOperandIndexAndLength(unsigned index) { return Base::getODSOperandIndexAndLength(index, odsOperands.size()); } RangeT getODSOperands(unsigned index) { auto valueRange = getODSOperandIndexAndLength(index); return {std::next(odsOperands.begin(), valueRange.first), std::next(odsOperands.begin(), valueRange.first + valueRange.second)}; } ValueT getArg() { return (*getODSOperands(0).begin()); } RangeT getOperands() { return odsOperands; } private: RangeT odsOperands; }; class ROCDLExp2Adaptor : public ROCDLExp2GenericAdaptor<::mlir::ValueRange> { public: using ROCDLExp2GenericAdaptor::ROCDLExp2GenericAdaptor; ROCDLExp2Adaptor(ROCDLExp2 op); ::llvm::LogicalResult verify(::mlir::Location loc); }; class ROCDLExp2 : public ::mlir::Op::Impl, ::mlir::OpTrait::ZeroSuccessors, ::mlir::OpTrait::OneOperand, ::mlir::OpTrait::OpInvariants, ::mlir::ConditionallySpeculatable::Trait, ::mlir::OpTrait::AlwaysSpeculatableImplTrait, ::mlir::MemoryEffectOpInterface::Trait> { public: using Op::Op; using Op::print; using Adaptor = ROCDLExp2Adaptor; template using GenericAdaptor = ROCDLExp2GenericAdaptor; using FoldAdaptor = GenericAdaptor<::llvm::ArrayRef<::mlir::Attribute>>; static constexpr int odsIndex_arg = 0; using Properties = FoldAdaptor::Properties; static ::llvm::ArrayRef<::llvm::StringRef> getAttributeNames() { return {}; } static constexpr ::llvm::StringLiteral getOperationName() { return ::llvm::StringLiteral("rocdl.exp2"); } std::pair getODSOperandIndexAndLength(unsigned index) { return {index, 1}; } ::mlir::Operation::operand_range getODSOperands(unsigned index) { auto valueRange = getODSOperandIndexAndLength(index); return {std::next(getOperation()->operand_begin(), valueRange.first), std::next(getOperation()->operand_begin(), valueRange.first + valueRange.second)}; } ::mlir::TypedValue<::mlir::Type> getArg() { return ::llvm::cast<::mlir::TypedValue<::mlir::Type>>(*getODSOperands(0).begin()); } ::mlir::OpOperand &getArgMutable() { auto range = getODSOperandIndexAndLength(0); return getOperation()->getOpOperand(range.first); } std::pair getODSResultIndexAndLength(unsigned index) { return {index, 1}; } ::mlir::Operation::result_range getODSResults(unsigned index) { auto valueRange = getODSResultIndexAndLength(index); return {std::next(getOperation()->result_begin(), valueRange.first), std::next(getOperation()->result_begin(), valueRange.first + valueRange.second)}; } ::mlir::TypedValue<::mlir::Type> getRes() { return ::llvm::cast<::mlir::TypedValue<::mlir::Type>>(*getODSResults(0).begin()); } static ::llvm::LogicalResult setPropertiesFromAttr(Properties &prop, ::mlir::Attribute attr, ::llvm::function_ref<::mlir::InFlightDiagnostic()> emitError); static ::mlir::Attribute getPropertiesAsAttr(::mlir::MLIRContext *ctx, const Properties &prop); static llvm::hash_code computePropertiesHash(const Properties &prop); static std::optional getInherentAttr(::mlir::MLIRContext *ctx, const Properties &prop, llvm::StringRef name); static void setInherentAttr(Properties &prop, llvm::StringRef name, mlir::Attribute value); static void populateInherentAttrs(::mlir::MLIRContext *ctx, const Properties &prop, ::mlir::NamedAttrList &attrs); static ::llvm::LogicalResult verifyInherentAttrs(::mlir::OperationName opName, ::mlir::NamedAttrList &attrs, llvm::function_ref<::mlir::InFlightDiagnostic()> emitError); static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::Type res, ::mlir::Value arg); static ROCDLExp2 create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::Type res, ::mlir::Value arg); static ROCDLExp2 create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::Type res, ::mlir::Value arg); static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::Value arg); static ROCDLExp2 create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::Value arg); static ROCDLExp2 create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::Value arg); static void build(::mlir::OpBuilder &, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, ::llvm::ArrayRef<::mlir::NamedAttribute> attributes = {}); static ROCDLExp2 create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, ::llvm::ArrayRef<::mlir::NamedAttribute> attributes = {}); static ROCDLExp2 create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, ::llvm::ArrayRef<::mlir::NamedAttribute> attributes = {}); static void build(::mlir::OpBuilder &, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, const Properties &properties, ::llvm::ArrayRef<::mlir::NamedAttribute> discardableAttributes = {}); static ROCDLExp2 create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, const Properties &properties, ::llvm::ArrayRef<::mlir::NamedAttribute> discardableAttributes = {}); static ROCDLExp2 create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, const Properties &properties, ::llvm::ArrayRef<::mlir::NamedAttribute> discardableAttributes = {}); ::llvm::LogicalResult verifyInvariantsImpl(); ::llvm::LogicalResult verifyInvariants(); static ::mlir::ParseResult parse(::mlir::OpAsmParser &parser, ::mlir::OperationState &result); void print(::mlir::OpAsmPrinter &_odsPrinter); void getEffects(::llvm::SmallVectorImpl<::mlir::SideEffects::EffectInstance<::mlir::MemoryEffects::Effect>> &effects); public: }; } // namespace mlir::ROCDL MLIR_DECLARE_EXPLICIT_TYPE_ID(::mlir::ROCDL::ROCDLExp2) namespace mlir::ROCDL { //===----------------------------------------------------------------------===// // ::mlir::ROCDL::ROCDLLog declarations //===----------------------------------------------------------------------===// namespace detail { class ROCDLLogGenericAdaptorBase { public: using Properties = ::mlir::EmptyProperties; protected: ::mlir::DictionaryAttr odsAttrs; ::std::optional<::mlir::OperationName> odsOpName; Properties properties; ::mlir::RegionRange odsRegions; public: ROCDLLogGenericAdaptorBase(::mlir::DictionaryAttr attrs, const Properties &properties, ::mlir::RegionRange regions = {}) : odsAttrs(attrs), properties(properties), odsRegions(regions) { if (odsAttrs) odsOpName.emplace("rocdl.log", odsAttrs.getContext()); } ROCDLLogGenericAdaptorBase(ROCDLLog op); std::pair getODSOperandIndexAndLength(unsigned index, unsigned odsOperandsSize) { return {index, 1}; } const Properties &getProperties() { return properties; } ::mlir::DictionaryAttr getAttributes() { return odsAttrs; } }; } // namespace detail template class ROCDLLogGenericAdaptor : public detail::ROCDLLogGenericAdaptorBase { using ValueT = ::llvm::detail::ValueOfRange; using Base = detail::ROCDLLogGenericAdaptorBase; static constexpr int odsIndex_arg = 0; public: ROCDLLogGenericAdaptor(RangeT values, ::mlir::DictionaryAttr attrs, const Properties &properties, ::mlir::RegionRange regions = {}) : Base(attrs, properties, regions), odsOperands(values) {} ROCDLLogGenericAdaptor(RangeT values, ::mlir::DictionaryAttr attrs, ::mlir::PropertyRef properties, ::mlir::RegionRange regions = {}) : ROCDLLogGenericAdaptor(values, attrs, (properties ? *properties.as() : Properties{}), regions) {} ROCDLLogGenericAdaptor(RangeT values, ::mlir::DictionaryAttr attrs = nullptr) : ROCDLLogGenericAdaptor(values, attrs, Properties{}, {}) {} ROCDLLogGenericAdaptor(RangeT values, const ROCDLLogGenericAdaptorBase &base) : Base(base), odsOperands(values) {} template >> ROCDLLogGenericAdaptor(RangeT values, LateInst op) : Base(op), odsOperands(values) {} std::pair getODSOperandIndexAndLength(unsigned index) { return Base::getODSOperandIndexAndLength(index, odsOperands.size()); } RangeT getODSOperands(unsigned index) { auto valueRange = getODSOperandIndexAndLength(index); return {std::next(odsOperands.begin(), valueRange.first), std::next(odsOperands.begin(), valueRange.first + valueRange.second)}; } ValueT getArg() { return (*getODSOperands(0).begin()); } RangeT getOperands() { return odsOperands; } private: RangeT odsOperands; }; class ROCDLLogAdaptor : public ROCDLLogGenericAdaptor<::mlir::ValueRange> { public: using ROCDLLogGenericAdaptor::ROCDLLogGenericAdaptor; ROCDLLogAdaptor(ROCDLLog op); ::llvm::LogicalResult verify(::mlir::Location loc); }; class ROCDLLog : public ::mlir::Op::Impl, ::mlir::OpTrait::ZeroSuccessors, ::mlir::OpTrait::OneOperand, ::mlir::OpTrait::OpInvariants, ::mlir::ConditionallySpeculatable::Trait, ::mlir::OpTrait::AlwaysSpeculatableImplTrait, ::mlir::MemoryEffectOpInterface::Trait> { public: using Op::Op; using Op::print; using Adaptor = ROCDLLogAdaptor; template using GenericAdaptor = ROCDLLogGenericAdaptor; using FoldAdaptor = GenericAdaptor<::llvm::ArrayRef<::mlir::Attribute>>; static constexpr int odsIndex_arg = 0; using Properties = FoldAdaptor::Properties; static ::llvm::ArrayRef<::llvm::StringRef> getAttributeNames() { return {}; } static constexpr ::llvm::StringLiteral getOperationName() { return ::llvm::StringLiteral("rocdl.log"); } std::pair getODSOperandIndexAndLength(unsigned index) { return {index, 1}; } ::mlir::Operation::operand_range getODSOperands(unsigned index) { auto valueRange = getODSOperandIndexAndLength(index); return {std::next(getOperation()->operand_begin(), valueRange.first), std::next(getOperation()->operand_begin(), valueRange.first + valueRange.second)}; } ::mlir::TypedValue<::mlir::Type> getArg() { return ::llvm::cast<::mlir::TypedValue<::mlir::Type>>(*getODSOperands(0).begin()); } ::mlir::OpOperand &getArgMutable() { auto range = getODSOperandIndexAndLength(0); return getOperation()->getOpOperand(range.first); } std::pair getODSResultIndexAndLength(unsigned index) { return {index, 1}; } ::mlir::Operation::result_range getODSResults(unsigned index) { auto valueRange = getODSResultIndexAndLength(index); return {std::next(getOperation()->result_begin(), valueRange.first), std::next(getOperation()->result_begin(), valueRange.first + valueRange.second)}; } ::mlir::TypedValue<::mlir::Type> getRes() { return ::llvm::cast<::mlir::TypedValue<::mlir::Type>>(*getODSResults(0).begin()); } static ::llvm::LogicalResult setPropertiesFromAttr(Properties &prop, ::mlir::Attribute attr, ::llvm::function_ref<::mlir::InFlightDiagnostic()> emitError); static ::mlir::Attribute getPropertiesAsAttr(::mlir::MLIRContext *ctx, const Properties &prop); static llvm::hash_code computePropertiesHash(const Properties &prop); static std::optional getInherentAttr(::mlir::MLIRContext *ctx, const Properties &prop, llvm::StringRef name); static void setInherentAttr(Properties &prop, llvm::StringRef name, mlir::Attribute value); static void populateInherentAttrs(::mlir::MLIRContext *ctx, const Properties &prop, ::mlir::NamedAttrList &attrs); static ::llvm::LogicalResult verifyInherentAttrs(::mlir::OperationName opName, ::mlir::NamedAttrList &attrs, llvm::function_ref<::mlir::InFlightDiagnostic()> emitError); static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::Type res, ::mlir::Value arg); static ROCDLLog create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::Type res, ::mlir::Value arg); static ROCDLLog create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::Type res, ::mlir::Value arg); static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::Value arg); static ROCDLLog create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::Value arg); static ROCDLLog create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::Value arg); static void build(::mlir::OpBuilder &, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, ::llvm::ArrayRef<::mlir::NamedAttribute> attributes = {}); static ROCDLLog create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, ::llvm::ArrayRef<::mlir::NamedAttribute> attributes = {}); static ROCDLLog create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, ::llvm::ArrayRef<::mlir::NamedAttribute> attributes = {}); static void build(::mlir::OpBuilder &, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, const Properties &properties, ::llvm::ArrayRef<::mlir::NamedAttribute> discardableAttributes = {}); static ROCDLLog create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, const Properties &properties, ::llvm::ArrayRef<::mlir::NamedAttribute> discardableAttributes = {}); static ROCDLLog create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, const Properties &properties, ::llvm::ArrayRef<::mlir::NamedAttribute> discardableAttributes = {}); ::llvm::LogicalResult verifyInvariantsImpl(); ::llvm::LogicalResult verifyInvariants(); static ::mlir::ParseResult parse(::mlir::OpAsmParser &parser, ::mlir::OperationState &result); void print(::mlir::OpAsmPrinter &_odsPrinter); void getEffects(::llvm::SmallVectorImpl<::mlir::SideEffects::EffectInstance<::mlir::MemoryEffects::Effect>> &effects); public: }; } // namespace mlir::ROCDL MLIR_DECLARE_EXPLICIT_TYPE_ID(::mlir::ROCDL::ROCDLLog) namespace mlir::ROCDL { //===----------------------------------------------------------------------===// // ::mlir::ROCDL::ROCDLRcp declarations //===----------------------------------------------------------------------===// namespace detail { class ROCDLRcpGenericAdaptorBase { public: using Properties = ::mlir::EmptyProperties; protected: ::mlir::DictionaryAttr odsAttrs; ::std::optional<::mlir::OperationName> odsOpName; Properties properties; ::mlir::RegionRange odsRegions; public: ROCDLRcpGenericAdaptorBase(::mlir::DictionaryAttr attrs, const Properties &properties, ::mlir::RegionRange regions = {}) : odsAttrs(attrs), properties(properties), odsRegions(regions) { if (odsAttrs) odsOpName.emplace("rocdl.rcp", odsAttrs.getContext()); } ROCDLRcpGenericAdaptorBase(ROCDLRcp op); std::pair getODSOperandIndexAndLength(unsigned index, unsigned odsOperandsSize) { return {index, 1}; } const Properties &getProperties() { return properties; } ::mlir::DictionaryAttr getAttributes() { return odsAttrs; } }; } // namespace detail template class ROCDLRcpGenericAdaptor : public detail::ROCDLRcpGenericAdaptorBase { using ValueT = ::llvm::detail::ValueOfRange; using Base = detail::ROCDLRcpGenericAdaptorBase; static constexpr int odsIndex_arg = 0; public: ROCDLRcpGenericAdaptor(RangeT values, ::mlir::DictionaryAttr attrs, const Properties &properties, ::mlir::RegionRange regions = {}) : Base(attrs, properties, regions), odsOperands(values) {} ROCDLRcpGenericAdaptor(RangeT values, ::mlir::DictionaryAttr attrs, ::mlir::PropertyRef properties, ::mlir::RegionRange regions = {}) : ROCDLRcpGenericAdaptor(values, attrs, (properties ? *properties.as() : Properties{}), regions) {} ROCDLRcpGenericAdaptor(RangeT values, ::mlir::DictionaryAttr attrs = nullptr) : ROCDLRcpGenericAdaptor(values, attrs, Properties{}, {}) {} ROCDLRcpGenericAdaptor(RangeT values, const ROCDLRcpGenericAdaptorBase &base) : Base(base), odsOperands(values) {} template >> ROCDLRcpGenericAdaptor(RangeT values, LateInst op) : Base(op), odsOperands(values) {} std::pair getODSOperandIndexAndLength(unsigned index) { return Base::getODSOperandIndexAndLength(index, odsOperands.size()); } RangeT getODSOperands(unsigned index) { auto valueRange = getODSOperandIndexAndLength(index); return {std::next(odsOperands.begin(), valueRange.first), std::next(odsOperands.begin(), valueRange.first + valueRange.second)}; } ValueT getArg() { return (*getODSOperands(0).begin()); } RangeT getOperands() { return odsOperands; } private: RangeT odsOperands; }; class ROCDLRcpAdaptor : public ROCDLRcpGenericAdaptor<::mlir::ValueRange> { public: using ROCDLRcpGenericAdaptor::ROCDLRcpGenericAdaptor; ROCDLRcpAdaptor(ROCDLRcp op); ::llvm::LogicalResult verify(::mlir::Location loc); }; class ROCDLRcp : public ::mlir::Op::Impl, ::mlir::OpTrait::ZeroSuccessors, ::mlir::OpTrait::OneOperand, ::mlir::OpTrait::OpInvariants, ::mlir::ConditionallySpeculatable::Trait, ::mlir::OpTrait::AlwaysSpeculatableImplTrait, ::mlir::MemoryEffectOpInterface::Trait> { public: using Op::Op; using Op::print; using Adaptor = ROCDLRcpAdaptor; template using GenericAdaptor = ROCDLRcpGenericAdaptor; using FoldAdaptor = GenericAdaptor<::llvm::ArrayRef<::mlir::Attribute>>; static constexpr int odsIndex_arg = 0; using Properties = FoldAdaptor::Properties; static ::llvm::ArrayRef<::llvm::StringRef> getAttributeNames() { return {}; } static constexpr ::llvm::StringLiteral getOperationName() { return ::llvm::StringLiteral("rocdl.rcp"); } std::pair getODSOperandIndexAndLength(unsigned index) { return {index, 1}; } ::mlir::Operation::operand_range getODSOperands(unsigned index) { auto valueRange = getODSOperandIndexAndLength(index); return {std::next(getOperation()->operand_begin(), valueRange.first), std::next(getOperation()->operand_begin(), valueRange.first + valueRange.second)}; } ::mlir::TypedValue<::mlir::Type> getArg() { return ::llvm::cast<::mlir::TypedValue<::mlir::Type>>(*getODSOperands(0).begin()); } ::mlir::OpOperand &getArgMutable() { auto range = getODSOperandIndexAndLength(0); return getOperation()->getOpOperand(range.first); } std::pair getODSResultIndexAndLength(unsigned index) { return {index, 1}; } ::mlir::Operation::result_range getODSResults(unsigned index) { auto valueRange = getODSResultIndexAndLength(index); return {std::next(getOperation()->result_begin(), valueRange.first), std::next(getOperation()->result_begin(), valueRange.first + valueRange.second)}; } ::mlir::TypedValue<::mlir::Type> getRes() { return ::llvm::cast<::mlir::TypedValue<::mlir::Type>>(*getODSResults(0).begin()); } static ::llvm::LogicalResult setPropertiesFromAttr(Properties &prop, ::mlir::Attribute attr, ::llvm::function_ref<::mlir::InFlightDiagnostic()> emitError); static ::mlir::Attribute getPropertiesAsAttr(::mlir::MLIRContext *ctx, const Properties &prop); static llvm::hash_code computePropertiesHash(const Properties &prop); static std::optional getInherentAttr(::mlir::MLIRContext *ctx, const Properties &prop, llvm::StringRef name); static void setInherentAttr(Properties &prop, llvm::StringRef name, mlir::Attribute value); static void populateInherentAttrs(::mlir::MLIRContext *ctx, const Properties &prop, ::mlir::NamedAttrList &attrs); static ::llvm::LogicalResult verifyInherentAttrs(::mlir::OperationName opName, ::mlir::NamedAttrList &attrs, llvm::function_ref<::mlir::InFlightDiagnostic()> emitError); static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::Type res, ::mlir::Value arg); static ROCDLRcp create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::Type res, ::mlir::Value arg); static ROCDLRcp create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::Type res, ::mlir::Value arg); static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::Value arg); static ROCDLRcp create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::Value arg); static ROCDLRcp create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::Value arg); static void build(::mlir::OpBuilder &, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, ::llvm::ArrayRef<::mlir::NamedAttribute> attributes = {}); static ROCDLRcp create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, ::llvm::ArrayRef<::mlir::NamedAttribute> attributes = {}); static ROCDLRcp create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, ::llvm::ArrayRef<::mlir::NamedAttribute> attributes = {}); static void build(::mlir::OpBuilder &, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, const Properties &properties, ::llvm::ArrayRef<::mlir::NamedAttribute> discardableAttributes = {}); static ROCDLRcp create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, const Properties &properties, ::llvm::ArrayRef<::mlir::NamedAttribute> discardableAttributes = {}); static ROCDLRcp create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, const Properties &properties, ::llvm::ArrayRef<::mlir::NamedAttribute> discardableAttributes = {}); ::llvm::LogicalResult verifyInvariantsImpl(); ::llvm::LogicalResult verifyInvariants(); static ::mlir::ParseResult parse(::mlir::OpAsmParser &parser, ::mlir::OperationState &result); void print(::mlir::OpAsmPrinter &_odsPrinter); void getEffects(::llvm::SmallVectorImpl<::mlir::SideEffects::EffectInstance<::mlir::MemoryEffects::Effect>> &effects); public: }; } // namespace mlir::ROCDL MLIR_DECLARE_EXPLICIT_TYPE_ID(::mlir::ROCDL::ROCDLRcp) namespace mlir::ROCDL { //===----------------------------------------------------------------------===// // ::mlir::ROCDL::ROCDLRsq declarations //===----------------------------------------------------------------------===// namespace detail { class ROCDLRsqGenericAdaptorBase { public: using Properties = ::mlir::EmptyProperties; protected: ::mlir::DictionaryAttr odsAttrs; ::std::optional<::mlir::OperationName> odsOpName; Properties properties; ::mlir::RegionRange odsRegions; public: ROCDLRsqGenericAdaptorBase(::mlir::DictionaryAttr attrs, const Properties &properties, ::mlir::RegionRange regions = {}) : odsAttrs(attrs), properties(properties), odsRegions(regions) { if (odsAttrs) odsOpName.emplace("rocdl.rsq", odsAttrs.getContext()); } ROCDLRsqGenericAdaptorBase(ROCDLRsq op); std::pair getODSOperandIndexAndLength(unsigned index, unsigned odsOperandsSize) { return {index, 1}; } const Properties &getProperties() { return properties; } ::mlir::DictionaryAttr getAttributes() { return odsAttrs; } }; } // namespace detail template class ROCDLRsqGenericAdaptor : public detail::ROCDLRsqGenericAdaptorBase { using ValueT = ::llvm::detail::ValueOfRange; using Base = detail::ROCDLRsqGenericAdaptorBase; static constexpr int odsIndex_arg = 0; public: ROCDLRsqGenericAdaptor(RangeT values, ::mlir::DictionaryAttr attrs, const Properties &properties, ::mlir::RegionRange regions = {}) : Base(attrs, properties, regions), odsOperands(values) {} ROCDLRsqGenericAdaptor(RangeT values, ::mlir::DictionaryAttr attrs, ::mlir::PropertyRef properties, ::mlir::RegionRange regions = {}) : ROCDLRsqGenericAdaptor(values, attrs, (properties ? *properties.as() : Properties{}), regions) {} ROCDLRsqGenericAdaptor(RangeT values, ::mlir::DictionaryAttr attrs = nullptr) : ROCDLRsqGenericAdaptor(values, attrs, Properties{}, {}) {} ROCDLRsqGenericAdaptor(RangeT values, const ROCDLRsqGenericAdaptorBase &base) : Base(base), odsOperands(values) {} template >> ROCDLRsqGenericAdaptor(RangeT values, LateInst op) : Base(op), odsOperands(values) {} std::pair getODSOperandIndexAndLength(unsigned index) { return Base::getODSOperandIndexAndLength(index, odsOperands.size()); } RangeT getODSOperands(unsigned index) { auto valueRange = getODSOperandIndexAndLength(index); return {std::next(odsOperands.begin(), valueRange.first), std::next(odsOperands.begin(), valueRange.first + valueRange.second)}; } ValueT getArg() { return (*getODSOperands(0).begin()); } RangeT getOperands() { return odsOperands; } private: RangeT odsOperands; }; class ROCDLRsqAdaptor : public ROCDLRsqGenericAdaptor<::mlir::ValueRange> { public: using ROCDLRsqGenericAdaptor::ROCDLRsqGenericAdaptor; ROCDLRsqAdaptor(ROCDLRsq op); ::llvm::LogicalResult verify(::mlir::Location loc); }; class ROCDLRsq : public ::mlir::Op::Impl, ::mlir::OpTrait::ZeroSuccessors, ::mlir::OpTrait::OneOperand, ::mlir::OpTrait::OpInvariants, ::mlir::ConditionallySpeculatable::Trait, ::mlir::OpTrait::AlwaysSpeculatableImplTrait, ::mlir::MemoryEffectOpInterface::Trait> { public: using Op::Op; using Op::print; using Adaptor = ROCDLRsqAdaptor; template using GenericAdaptor = ROCDLRsqGenericAdaptor; using FoldAdaptor = GenericAdaptor<::llvm::ArrayRef<::mlir::Attribute>>; static constexpr int odsIndex_arg = 0; using Properties = FoldAdaptor::Properties; static ::llvm::ArrayRef<::llvm::StringRef> getAttributeNames() { return {}; } static constexpr ::llvm::StringLiteral getOperationName() { return ::llvm::StringLiteral("rocdl.rsq"); } std::pair getODSOperandIndexAndLength(unsigned index) { return {index, 1}; } ::mlir::Operation::operand_range getODSOperands(unsigned index) { auto valueRange = getODSOperandIndexAndLength(index); return {std::next(getOperation()->operand_begin(), valueRange.first), std::next(getOperation()->operand_begin(), valueRange.first + valueRange.second)}; } ::mlir::TypedValue<::mlir::Type> getArg() { return ::llvm::cast<::mlir::TypedValue<::mlir::Type>>(*getODSOperands(0).begin()); } ::mlir::OpOperand &getArgMutable() { auto range = getODSOperandIndexAndLength(0); return getOperation()->getOpOperand(range.first); } std::pair getODSResultIndexAndLength(unsigned index) { return {index, 1}; } ::mlir::Operation::result_range getODSResults(unsigned index) { auto valueRange = getODSResultIndexAndLength(index); return {std::next(getOperation()->result_begin(), valueRange.first), std::next(getOperation()->result_begin(), valueRange.first + valueRange.second)}; } ::mlir::TypedValue<::mlir::Type> getRes() { return ::llvm::cast<::mlir::TypedValue<::mlir::Type>>(*getODSResults(0).begin()); } static ::llvm::LogicalResult setPropertiesFromAttr(Properties &prop, ::mlir::Attribute attr, ::llvm::function_ref<::mlir::InFlightDiagnostic()> emitError); static ::mlir::Attribute getPropertiesAsAttr(::mlir::MLIRContext *ctx, const Properties &prop); static llvm::hash_code computePropertiesHash(const Properties &prop); static std::optional getInherentAttr(::mlir::MLIRContext *ctx, const Properties &prop, llvm::StringRef name); static void setInherentAttr(Properties &prop, llvm::StringRef name, mlir::Attribute value); static void populateInherentAttrs(::mlir::MLIRContext *ctx, const Properties &prop, ::mlir::NamedAttrList &attrs); static ::llvm::LogicalResult verifyInherentAttrs(::mlir::OperationName opName, ::mlir::NamedAttrList &attrs, llvm::function_ref<::mlir::InFlightDiagnostic()> emitError); static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::Type res, ::mlir::Value arg); static ROCDLRsq create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::Type res, ::mlir::Value arg); static ROCDLRsq create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::Type res, ::mlir::Value arg); static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::Value arg); static ROCDLRsq create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::Value arg); static ROCDLRsq create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::Value arg); static void build(::mlir::OpBuilder &, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, ::llvm::ArrayRef<::mlir::NamedAttribute> attributes = {}); static ROCDLRsq create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, ::llvm::ArrayRef<::mlir::NamedAttribute> attributes = {}); static ROCDLRsq create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, ::llvm::ArrayRef<::mlir::NamedAttribute> attributes = {}); static void build(::mlir::OpBuilder &, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, const Properties &properties, ::llvm::ArrayRef<::mlir::NamedAttribute> discardableAttributes = {}); static ROCDLRsq create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, const Properties &properties, ::llvm::ArrayRef<::mlir::NamedAttribute> discardableAttributes = {}); static ROCDLRsq create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, const Properties &properties, ::llvm::ArrayRef<::mlir::NamedAttribute> discardableAttributes = {}); ::llvm::LogicalResult verifyInvariantsImpl(); ::llvm::LogicalResult verifyInvariants(); static ::mlir::ParseResult parse(::mlir::OpAsmParser &parser, ::mlir::OperationState &result); void print(::mlir::OpAsmPrinter &_odsPrinter); void getEffects(::llvm::SmallVectorImpl<::mlir::SideEffects::EffectInstance<::mlir::MemoryEffects::Effect>> &effects); public: }; } // namespace mlir::ROCDL MLIR_DECLARE_EXPLICIT_TYPE_ID(::mlir::ROCDL::ROCDLRsq) namespace mlir::ROCDL { //===----------------------------------------------------------------------===// // ::mlir::ROCDL::ROCDLSin declarations //===----------------------------------------------------------------------===// namespace detail { class ROCDLSinGenericAdaptorBase { public: using Properties = ::mlir::EmptyProperties; protected: ::mlir::DictionaryAttr odsAttrs; ::std::optional<::mlir::OperationName> odsOpName; Properties properties; ::mlir::RegionRange odsRegions; public: ROCDLSinGenericAdaptorBase(::mlir::DictionaryAttr attrs, const Properties &properties, ::mlir::RegionRange regions = {}) : odsAttrs(attrs), properties(properties), odsRegions(regions) { if (odsAttrs) odsOpName.emplace("rocdl.sin", odsAttrs.getContext()); } ROCDLSinGenericAdaptorBase(ROCDLSin op); std::pair getODSOperandIndexAndLength(unsigned index, unsigned odsOperandsSize) { return {index, 1}; } const Properties &getProperties() { return properties; } ::mlir::DictionaryAttr getAttributes() { return odsAttrs; } }; } // namespace detail template class ROCDLSinGenericAdaptor : public detail::ROCDLSinGenericAdaptorBase { using ValueT = ::llvm::detail::ValueOfRange; using Base = detail::ROCDLSinGenericAdaptorBase; static constexpr int odsIndex_arg = 0; public: ROCDLSinGenericAdaptor(RangeT values, ::mlir::DictionaryAttr attrs, const Properties &properties, ::mlir::RegionRange regions = {}) : Base(attrs, properties, regions), odsOperands(values) {} ROCDLSinGenericAdaptor(RangeT values, ::mlir::DictionaryAttr attrs, ::mlir::PropertyRef properties, ::mlir::RegionRange regions = {}) : ROCDLSinGenericAdaptor(values, attrs, (properties ? *properties.as() : Properties{}), regions) {} ROCDLSinGenericAdaptor(RangeT values, ::mlir::DictionaryAttr attrs = nullptr) : ROCDLSinGenericAdaptor(values, attrs, Properties{}, {}) {} ROCDLSinGenericAdaptor(RangeT values, const ROCDLSinGenericAdaptorBase &base) : Base(base), odsOperands(values) {} template >> ROCDLSinGenericAdaptor(RangeT values, LateInst op) : Base(op), odsOperands(values) {} std::pair getODSOperandIndexAndLength(unsigned index) { return Base::getODSOperandIndexAndLength(index, odsOperands.size()); } RangeT getODSOperands(unsigned index) { auto valueRange = getODSOperandIndexAndLength(index); return {std::next(odsOperands.begin(), valueRange.first), std::next(odsOperands.begin(), valueRange.first + valueRange.second)}; } ValueT getArg() { return (*getODSOperands(0).begin()); } RangeT getOperands() { return odsOperands; } private: RangeT odsOperands; }; class ROCDLSinAdaptor : public ROCDLSinGenericAdaptor<::mlir::ValueRange> { public: using ROCDLSinGenericAdaptor::ROCDLSinGenericAdaptor; ROCDLSinAdaptor(ROCDLSin op); ::llvm::LogicalResult verify(::mlir::Location loc); }; class ROCDLSin : public ::mlir::Op::Impl, ::mlir::OpTrait::ZeroSuccessors, ::mlir::OpTrait::OneOperand, ::mlir::OpTrait::OpInvariants, ::mlir::ConditionallySpeculatable::Trait, ::mlir::OpTrait::AlwaysSpeculatableImplTrait, ::mlir::MemoryEffectOpInterface::Trait> { public: using Op::Op; using Op::print; using Adaptor = ROCDLSinAdaptor; template using GenericAdaptor = ROCDLSinGenericAdaptor; using FoldAdaptor = GenericAdaptor<::llvm::ArrayRef<::mlir::Attribute>>; static constexpr int odsIndex_arg = 0; using Properties = FoldAdaptor::Properties; static ::llvm::ArrayRef<::llvm::StringRef> getAttributeNames() { return {}; } static constexpr ::llvm::StringLiteral getOperationName() { return ::llvm::StringLiteral("rocdl.sin"); } std::pair getODSOperandIndexAndLength(unsigned index) { return {index, 1}; } ::mlir::Operation::operand_range getODSOperands(unsigned index) { auto valueRange = getODSOperandIndexAndLength(index); return {std::next(getOperation()->operand_begin(), valueRange.first), std::next(getOperation()->operand_begin(), valueRange.first + valueRange.second)}; } ::mlir::TypedValue<::mlir::Type> getArg() { return ::llvm::cast<::mlir::TypedValue<::mlir::Type>>(*getODSOperands(0).begin()); } ::mlir::OpOperand &getArgMutable() { auto range = getODSOperandIndexAndLength(0); return getOperation()->getOpOperand(range.first); } std::pair getODSResultIndexAndLength(unsigned index) { return {index, 1}; } ::mlir::Operation::result_range getODSResults(unsigned index) { auto valueRange = getODSResultIndexAndLength(index); return {std::next(getOperation()->result_begin(), valueRange.first), std::next(getOperation()->result_begin(), valueRange.first + valueRange.second)}; } ::mlir::TypedValue<::mlir::Type> getRes() { return ::llvm::cast<::mlir::TypedValue<::mlir::Type>>(*getODSResults(0).begin()); } static ::llvm::LogicalResult setPropertiesFromAttr(Properties &prop, ::mlir::Attribute attr, ::llvm::function_ref<::mlir::InFlightDiagnostic()> emitError); static ::mlir::Attribute getPropertiesAsAttr(::mlir::MLIRContext *ctx, const Properties &prop); static llvm::hash_code computePropertiesHash(const Properties &prop); static std::optional getInherentAttr(::mlir::MLIRContext *ctx, const Properties &prop, llvm::StringRef name); static void setInherentAttr(Properties &prop, llvm::StringRef name, mlir::Attribute value); static void populateInherentAttrs(::mlir::MLIRContext *ctx, const Properties &prop, ::mlir::NamedAttrList &attrs); static ::llvm::LogicalResult verifyInherentAttrs(::mlir::OperationName opName, ::mlir::NamedAttrList &attrs, llvm::function_ref<::mlir::InFlightDiagnostic()> emitError); static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::Type res, ::mlir::Value arg); static ROCDLSin create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::Type res, ::mlir::Value arg); static ROCDLSin create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::Type res, ::mlir::Value arg); static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::Value arg); static ROCDLSin create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::Value arg); static ROCDLSin create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::Value arg); static void build(::mlir::OpBuilder &, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, ::llvm::ArrayRef<::mlir::NamedAttribute> attributes = {}); static ROCDLSin create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, ::llvm::ArrayRef<::mlir::NamedAttribute> attributes = {}); static ROCDLSin create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, ::llvm::ArrayRef<::mlir::NamedAttribute> attributes = {}); static void build(::mlir::OpBuilder &, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, const Properties &properties, ::llvm::ArrayRef<::mlir::NamedAttribute> discardableAttributes = {}); static ROCDLSin create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, const Properties &properties, ::llvm::ArrayRef<::mlir::NamedAttribute> discardableAttributes = {}); static ROCDLSin create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, const Properties &properties, ::llvm::ArrayRef<::mlir::NamedAttribute> discardableAttributes = {}); ::llvm::LogicalResult verifyInvariantsImpl(); ::llvm::LogicalResult verifyInvariants(); static ::mlir::ParseResult parse(::mlir::OpAsmParser &parser, ::mlir::OperationState &result); void print(::mlir::OpAsmPrinter &_odsPrinter); void getEffects(::llvm::SmallVectorImpl<::mlir::SideEffects::EffectInstance<::mlir::MemoryEffects::Effect>> &effects); public: }; } // namespace mlir::ROCDL MLIR_DECLARE_EXPLICIT_TYPE_ID(::mlir::ROCDL::ROCDLSin) namespace mlir::ROCDL { //===----------------------------------------------------------------------===// // ::mlir::ROCDL::ROCDLSqrt declarations //===----------------------------------------------------------------------===// namespace detail { class ROCDLSqrtGenericAdaptorBase { public: using Properties = ::mlir::EmptyProperties; protected: ::mlir::DictionaryAttr odsAttrs; ::std::optional<::mlir::OperationName> odsOpName; Properties properties; ::mlir::RegionRange odsRegions; public: ROCDLSqrtGenericAdaptorBase(::mlir::DictionaryAttr attrs, const Properties &properties, ::mlir::RegionRange regions = {}) : odsAttrs(attrs), properties(properties), odsRegions(regions) { if (odsAttrs) odsOpName.emplace("rocdl.sqrt", odsAttrs.getContext()); } ROCDLSqrtGenericAdaptorBase(ROCDLSqrt op); std::pair getODSOperandIndexAndLength(unsigned index, unsigned odsOperandsSize) { return {index, 1}; } const Properties &getProperties() { return properties; } ::mlir::DictionaryAttr getAttributes() { return odsAttrs; } }; } // namespace detail template class ROCDLSqrtGenericAdaptor : public detail::ROCDLSqrtGenericAdaptorBase { using ValueT = ::llvm::detail::ValueOfRange; using Base = detail::ROCDLSqrtGenericAdaptorBase; static constexpr int odsIndex_arg = 0; public: ROCDLSqrtGenericAdaptor(RangeT values, ::mlir::DictionaryAttr attrs, const Properties &properties, ::mlir::RegionRange regions = {}) : Base(attrs, properties, regions), odsOperands(values) {} ROCDLSqrtGenericAdaptor(RangeT values, ::mlir::DictionaryAttr attrs, ::mlir::PropertyRef properties, ::mlir::RegionRange regions = {}) : ROCDLSqrtGenericAdaptor(values, attrs, (properties ? *properties.as() : Properties{}), regions) {} ROCDLSqrtGenericAdaptor(RangeT values, ::mlir::DictionaryAttr attrs = nullptr) : ROCDLSqrtGenericAdaptor(values, attrs, Properties{}, {}) {} ROCDLSqrtGenericAdaptor(RangeT values, const ROCDLSqrtGenericAdaptorBase &base) : Base(base), odsOperands(values) {} template >> ROCDLSqrtGenericAdaptor(RangeT values, LateInst op) : Base(op), odsOperands(values) {} std::pair getODSOperandIndexAndLength(unsigned index) { return Base::getODSOperandIndexAndLength(index, odsOperands.size()); } RangeT getODSOperands(unsigned index) { auto valueRange = getODSOperandIndexAndLength(index); return {std::next(odsOperands.begin(), valueRange.first), std::next(odsOperands.begin(), valueRange.first + valueRange.second)}; } ValueT getArg() { return (*getODSOperands(0).begin()); } RangeT getOperands() { return odsOperands; } private: RangeT odsOperands; }; class ROCDLSqrtAdaptor : public ROCDLSqrtGenericAdaptor<::mlir::ValueRange> { public: using ROCDLSqrtGenericAdaptor::ROCDLSqrtGenericAdaptor; ROCDLSqrtAdaptor(ROCDLSqrt op); ::llvm::LogicalResult verify(::mlir::Location loc); }; class ROCDLSqrt : public ::mlir::Op::Impl, ::mlir::OpTrait::ZeroSuccessors, ::mlir::OpTrait::OneOperand, ::mlir::OpTrait::OpInvariants, ::mlir::ConditionallySpeculatable::Trait, ::mlir::OpTrait::AlwaysSpeculatableImplTrait, ::mlir::MemoryEffectOpInterface::Trait> { public: using Op::Op; using Op::print; using Adaptor = ROCDLSqrtAdaptor; template using GenericAdaptor = ROCDLSqrtGenericAdaptor; using FoldAdaptor = GenericAdaptor<::llvm::ArrayRef<::mlir::Attribute>>; static constexpr int odsIndex_arg = 0; using Properties = FoldAdaptor::Properties; static ::llvm::ArrayRef<::llvm::StringRef> getAttributeNames() { return {}; } static constexpr ::llvm::StringLiteral getOperationName() { return ::llvm::StringLiteral("rocdl.sqrt"); } std::pair getODSOperandIndexAndLength(unsigned index) { return {index, 1}; } ::mlir::Operation::operand_range getODSOperands(unsigned index) { auto valueRange = getODSOperandIndexAndLength(index); return {std::next(getOperation()->operand_begin(), valueRange.first), std::next(getOperation()->operand_begin(), valueRange.first + valueRange.second)}; } ::mlir::TypedValue<::mlir::Type> getArg() { return ::llvm::cast<::mlir::TypedValue<::mlir::Type>>(*getODSOperands(0).begin()); } ::mlir::OpOperand &getArgMutable() { auto range = getODSOperandIndexAndLength(0); return getOperation()->getOpOperand(range.first); } std::pair getODSResultIndexAndLength(unsigned index) { return {index, 1}; } ::mlir::Operation::result_range getODSResults(unsigned index) { auto valueRange = getODSResultIndexAndLength(index); return {std::next(getOperation()->result_begin(), valueRange.first), std::next(getOperation()->result_begin(), valueRange.first + valueRange.second)}; } ::mlir::TypedValue<::mlir::Type> getRes() { return ::llvm::cast<::mlir::TypedValue<::mlir::Type>>(*getODSResults(0).begin()); } static ::llvm::LogicalResult setPropertiesFromAttr(Properties &prop, ::mlir::Attribute attr, ::llvm::function_ref<::mlir::InFlightDiagnostic()> emitError); static ::mlir::Attribute getPropertiesAsAttr(::mlir::MLIRContext *ctx, const Properties &prop); static llvm::hash_code computePropertiesHash(const Properties &prop); static std::optional getInherentAttr(::mlir::MLIRContext *ctx, const Properties &prop, llvm::StringRef name); static void setInherentAttr(Properties &prop, llvm::StringRef name, mlir::Attribute value); static void populateInherentAttrs(::mlir::MLIRContext *ctx, const Properties &prop, ::mlir::NamedAttrList &attrs); static ::llvm::LogicalResult verifyInherentAttrs(::mlir::OperationName opName, ::mlir::NamedAttrList &attrs, llvm::function_ref<::mlir::InFlightDiagnostic()> emitError); static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::Type res, ::mlir::Value arg); static ROCDLSqrt create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::Type res, ::mlir::Value arg); static ROCDLSqrt create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::Type res, ::mlir::Value arg); static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::Value arg); static ROCDLSqrt create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::Value arg); static ROCDLSqrt create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::Value arg); static void build(::mlir::OpBuilder &, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, ::llvm::ArrayRef<::mlir::NamedAttribute> attributes = {}); static ROCDLSqrt create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, ::llvm::ArrayRef<::mlir::NamedAttribute> attributes = {}); static ROCDLSqrt create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, ::llvm::ArrayRef<::mlir::NamedAttribute> attributes = {}); static void build(::mlir::OpBuilder &, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, const Properties &properties, ::llvm::ArrayRef<::mlir::NamedAttribute> discardableAttributes = {}); static ROCDLSqrt create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, const Properties &properties, ::llvm::ArrayRef<::mlir::NamedAttribute> discardableAttributes = {}); static ROCDLSqrt create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, const Properties &properties, ::llvm::ArrayRef<::mlir::NamedAttribute> discardableAttributes = {}); ::llvm::LogicalResult verifyInvariantsImpl(); ::llvm::LogicalResult verifyInvariants(); static ::mlir::ParseResult parse(::mlir::OpAsmParser &parser, ::mlir::OperationState &result); void print(::mlir::OpAsmPrinter &_odsPrinter); void getEffects(::llvm::SmallVectorImpl<::mlir::SideEffects::EffectInstance<::mlir::MemoryEffects::Effect>> &effects); public: }; } // namespace mlir::ROCDL MLIR_DECLARE_EXPLICIT_TYPE_ID(::mlir::ROCDL::ROCDLSqrt) namespace mlir::ROCDL { //===----------------------------------------------------------------------===// // ::mlir::ROCDL::ROCDLTanh declarations //===----------------------------------------------------------------------===// namespace detail { class ROCDLTanhGenericAdaptorBase { public: using Properties = ::mlir::EmptyProperties; protected: ::mlir::DictionaryAttr odsAttrs; ::std::optional<::mlir::OperationName> odsOpName; Properties properties; ::mlir::RegionRange odsRegions; public: ROCDLTanhGenericAdaptorBase(::mlir::DictionaryAttr attrs, const Properties &properties, ::mlir::RegionRange regions = {}) : odsAttrs(attrs), properties(properties), odsRegions(regions) { if (odsAttrs) odsOpName.emplace("rocdl.tanh", odsAttrs.getContext()); } ROCDLTanhGenericAdaptorBase(ROCDLTanh op); std::pair getODSOperandIndexAndLength(unsigned index, unsigned odsOperandsSize) { return {index, 1}; } const Properties &getProperties() { return properties; } ::mlir::DictionaryAttr getAttributes() { return odsAttrs; } }; } // namespace detail template class ROCDLTanhGenericAdaptor : public detail::ROCDLTanhGenericAdaptorBase { using ValueT = ::llvm::detail::ValueOfRange; using Base = detail::ROCDLTanhGenericAdaptorBase; static constexpr int odsIndex_arg = 0; public: ROCDLTanhGenericAdaptor(RangeT values, ::mlir::DictionaryAttr attrs, const Properties &properties, ::mlir::RegionRange regions = {}) : Base(attrs, properties, regions), odsOperands(values) {} ROCDLTanhGenericAdaptor(RangeT values, ::mlir::DictionaryAttr attrs, ::mlir::PropertyRef properties, ::mlir::RegionRange regions = {}) : ROCDLTanhGenericAdaptor(values, attrs, (properties ? *properties.as() : Properties{}), regions) {} ROCDLTanhGenericAdaptor(RangeT values, ::mlir::DictionaryAttr attrs = nullptr) : ROCDLTanhGenericAdaptor(values, attrs, Properties{}, {}) {} ROCDLTanhGenericAdaptor(RangeT values, const ROCDLTanhGenericAdaptorBase &base) : Base(base), odsOperands(values) {} template >> ROCDLTanhGenericAdaptor(RangeT values, LateInst op) : Base(op), odsOperands(values) {} std::pair getODSOperandIndexAndLength(unsigned index) { return Base::getODSOperandIndexAndLength(index, odsOperands.size()); } RangeT getODSOperands(unsigned index) { auto valueRange = getODSOperandIndexAndLength(index); return {std::next(odsOperands.begin(), valueRange.first), std::next(odsOperands.begin(), valueRange.first + valueRange.second)}; } ValueT getArg() { return (*getODSOperands(0).begin()); } RangeT getOperands() { return odsOperands; } private: RangeT odsOperands; }; class ROCDLTanhAdaptor : public ROCDLTanhGenericAdaptor<::mlir::ValueRange> { public: using ROCDLTanhGenericAdaptor::ROCDLTanhGenericAdaptor; ROCDLTanhAdaptor(ROCDLTanh op); ::llvm::LogicalResult verify(::mlir::Location loc); }; class ROCDLTanh : public ::mlir::Op::Impl, ::mlir::OpTrait::ZeroSuccessors, ::mlir::OpTrait::OneOperand, ::mlir::OpTrait::OpInvariants, ::mlir::ConditionallySpeculatable::Trait, ::mlir::OpTrait::AlwaysSpeculatableImplTrait, ::mlir::MemoryEffectOpInterface::Trait> { public: using Op::Op; using Op::print; using Adaptor = ROCDLTanhAdaptor; template using GenericAdaptor = ROCDLTanhGenericAdaptor; using FoldAdaptor = GenericAdaptor<::llvm::ArrayRef<::mlir::Attribute>>; static constexpr int odsIndex_arg = 0; using Properties = FoldAdaptor::Properties; static ::llvm::ArrayRef<::llvm::StringRef> getAttributeNames() { return {}; } static constexpr ::llvm::StringLiteral getOperationName() { return ::llvm::StringLiteral("rocdl.tanh"); } std::pair getODSOperandIndexAndLength(unsigned index) { return {index, 1}; } ::mlir::Operation::operand_range getODSOperands(unsigned index) { auto valueRange = getODSOperandIndexAndLength(index); return {std::next(getOperation()->operand_begin(), valueRange.first), std::next(getOperation()->operand_begin(), valueRange.first + valueRange.second)}; } ::mlir::TypedValue<::mlir::Type> getArg() { return ::llvm::cast<::mlir::TypedValue<::mlir::Type>>(*getODSOperands(0).begin()); } ::mlir::OpOperand &getArgMutable() { auto range = getODSOperandIndexAndLength(0); return getOperation()->getOpOperand(range.first); } std::pair getODSResultIndexAndLength(unsigned index) { return {index, 1}; } ::mlir::Operation::result_range getODSResults(unsigned index) { auto valueRange = getODSResultIndexAndLength(index); return {std::next(getOperation()->result_begin(), valueRange.first), std::next(getOperation()->result_begin(), valueRange.first + valueRange.second)}; } ::mlir::TypedValue<::mlir::Type> getRes() { return ::llvm::cast<::mlir::TypedValue<::mlir::Type>>(*getODSResults(0).begin()); } static ::llvm::LogicalResult setPropertiesFromAttr(Properties &prop, ::mlir::Attribute attr, ::llvm::function_ref<::mlir::InFlightDiagnostic()> emitError); static ::mlir::Attribute getPropertiesAsAttr(::mlir::MLIRContext *ctx, const Properties &prop); static llvm::hash_code computePropertiesHash(const Properties &prop); static std::optional getInherentAttr(::mlir::MLIRContext *ctx, const Properties &prop, llvm::StringRef name); static void setInherentAttr(Properties &prop, llvm::StringRef name, mlir::Attribute value); static void populateInherentAttrs(::mlir::MLIRContext *ctx, const Properties &prop, ::mlir::NamedAttrList &attrs); static ::llvm::LogicalResult verifyInherentAttrs(::mlir::OperationName opName, ::mlir::NamedAttrList &attrs, llvm::function_ref<::mlir::InFlightDiagnostic()> emitError); static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::Type res, ::mlir::Value arg); static ROCDLTanh create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::Type res, ::mlir::Value arg); static ROCDLTanh create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::Type res, ::mlir::Value arg); static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::Value arg); static ROCDLTanh create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::Value arg); static ROCDLTanh create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::Value arg); static void build(::mlir::OpBuilder &, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, ::llvm::ArrayRef<::mlir::NamedAttribute> attributes = {}); static ROCDLTanh create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, ::llvm::ArrayRef<::mlir::NamedAttribute> attributes = {}); static ROCDLTanh create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, ::llvm::ArrayRef<::mlir::NamedAttribute> attributes = {}); static void build(::mlir::OpBuilder &, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, const Properties &properties, ::llvm::ArrayRef<::mlir::NamedAttribute> discardableAttributes = {}); static ROCDLTanh create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, const Properties &properties, ::llvm::ArrayRef<::mlir::NamedAttribute> discardableAttributes = {}); static ROCDLTanh create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, const Properties &properties, ::llvm::ArrayRef<::mlir::NamedAttribute> discardableAttributes = {}); ::llvm::LogicalResult verifyInvariantsImpl(); ::llvm::LogicalResult verifyInvariants(); static ::mlir::ParseResult parse(::mlir::OpAsmParser &parser, ::mlir::OperationState &result); void print(::mlir::OpAsmPrinter &_odsPrinter); void getEffects(::llvm::SmallVectorImpl<::mlir::SideEffects::EffectInstance<::mlir::MemoryEffects::Effect>> &effects); public: }; } // namespace mlir::ROCDL MLIR_DECLARE_EXPLICIT_TYPE_ID(::mlir::ROCDL::ROCDLTanh) namespace mlir::ROCDL { //===----------------------------------------------------------------------===// // ::mlir::ROCDL::AsyncmarkOp declarations //===----------------------------------------------------------------------===// namespace detail { class AsyncmarkOpGenericAdaptorBase { public: using Properties = ::mlir::EmptyProperties; protected: ::mlir::DictionaryAttr odsAttrs; ::std::optional<::mlir::OperationName> odsOpName; Properties properties; ::mlir::RegionRange odsRegions; public: AsyncmarkOpGenericAdaptorBase(::mlir::DictionaryAttr attrs, const Properties &properties, ::mlir::RegionRange regions = {}) : odsAttrs(attrs), properties(properties), odsRegions(regions) { if (odsAttrs) odsOpName.emplace("rocdl.asyncmark", odsAttrs.getContext()); } AsyncmarkOpGenericAdaptorBase(AsyncmarkOp op); std::pair getODSOperandIndexAndLength(unsigned index, unsigned odsOperandsSize) { return {index, 1}; } const Properties &getProperties() { return properties; } ::mlir::DictionaryAttr getAttributes() { return odsAttrs; } }; } // namespace detail template class AsyncmarkOpGenericAdaptor : public detail::AsyncmarkOpGenericAdaptorBase { using ValueT = ::llvm::detail::ValueOfRange; using Base = detail::AsyncmarkOpGenericAdaptorBase; public: AsyncmarkOpGenericAdaptor(RangeT values, ::mlir::DictionaryAttr attrs, const Properties &properties, ::mlir::RegionRange regions = {}) : Base(attrs, properties, regions), odsOperands(values) {} AsyncmarkOpGenericAdaptor(RangeT values, ::mlir::DictionaryAttr attrs, ::mlir::PropertyRef properties, ::mlir::RegionRange regions = {}) : AsyncmarkOpGenericAdaptor(values, attrs, (properties ? *properties.as() : Properties{}), regions) {} AsyncmarkOpGenericAdaptor(RangeT values, ::mlir::DictionaryAttr attrs = nullptr) : AsyncmarkOpGenericAdaptor(values, attrs, Properties{}, {}) {} AsyncmarkOpGenericAdaptor(RangeT values, const AsyncmarkOpGenericAdaptorBase &base) : Base(base), odsOperands(values) {} template >> AsyncmarkOpGenericAdaptor(RangeT values, LateInst op) : Base(op), odsOperands(values) {} std::pair getODSOperandIndexAndLength(unsigned index) { return Base::getODSOperandIndexAndLength(index, odsOperands.size()); } RangeT getODSOperands(unsigned index) { auto valueRange = getODSOperandIndexAndLength(index); return {std::next(odsOperands.begin(), valueRange.first), std::next(odsOperands.begin(), valueRange.first + valueRange.second)}; } RangeT getOperands() { return odsOperands; } private: RangeT odsOperands; }; class AsyncmarkOpAdaptor : public AsyncmarkOpGenericAdaptor<::mlir::ValueRange> { public: using AsyncmarkOpGenericAdaptor::AsyncmarkOpGenericAdaptor; AsyncmarkOpAdaptor(AsyncmarkOp op); ::llvm::LogicalResult verify(::mlir::Location loc); }; class AsyncmarkOp : public ::mlir::Op { public: using Op::Op; using Op::print; using Adaptor = AsyncmarkOpAdaptor; template using GenericAdaptor = AsyncmarkOpGenericAdaptor; using FoldAdaptor = GenericAdaptor<::llvm::ArrayRef<::mlir::Attribute>>; using Properties = FoldAdaptor::Properties; static ::llvm::ArrayRef<::llvm::StringRef> getAttributeNames() { return {}; } static constexpr ::llvm::StringLiteral getOperationName() { return ::llvm::StringLiteral("rocdl.asyncmark"); } std::pair getODSOperandIndexAndLength(unsigned index) { return {index, 1}; } ::mlir::Operation::operand_range getODSOperands(unsigned index) { auto valueRange = getODSOperandIndexAndLength(index); return {std::next(getOperation()->operand_begin(), valueRange.first), std::next(getOperation()->operand_begin(), valueRange.first + valueRange.second)}; } std::pair getODSResultIndexAndLength(unsigned index) { return {index, 1}; } ::mlir::Operation::result_range getODSResults(unsigned index) { auto valueRange = getODSResultIndexAndLength(index); return {std::next(getOperation()->result_begin(), valueRange.first), std::next(getOperation()->result_begin(), valueRange.first + valueRange.second)}; } static ::llvm::LogicalResult setPropertiesFromAttr(Properties &prop, ::mlir::Attribute attr, ::llvm::function_ref<::mlir::InFlightDiagnostic()> emitError); static ::mlir::Attribute getPropertiesAsAttr(::mlir::MLIRContext *ctx, const Properties &prop); static llvm::hash_code computePropertiesHash(const Properties &prop); static std::optional getInherentAttr(::mlir::MLIRContext *ctx, const Properties &prop, llvm::StringRef name); static void setInherentAttr(Properties &prop, llvm::StringRef name, mlir::Attribute value); static void populateInherentAttrs(::mlir::MLIRContext *ctx, const Properties &prop, ::mlir::NamedAttrList &attrs); static ::llvm::LogicalResult verifyInherentAttrs(::mlir::OperationName opName, ::mlir::NamedAttrList &attrs, llvm::function_ref<::mlir::InFlightDiagnostic()> emitError); static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState); static AsyncmarkOp create(::mlir::OpBuilder &builder, ::mlir::Location location); static AsyncmarkOp create(::mlir::ImplicitLocOpBuilder &builder); static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes); static AsyncmarkOp create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes); static AsyncmarkOp create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes); static void build(::mlir::OpBuilder &, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, ::llvm::ArrayRef<::mlir::NamedAttribute> attributes = {}); static AsyncmarkOp create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, ::llvm::ArrayRef<::mlir::NamedAttribute> attributes = {}); static AsyncmarkOp create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, ::llvm::ArrayRef<::mlir::NamedAttribute> attributes = {}); static void build(::mlir::OpBuilder &, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, const Properties &properties, ::llvm::ArrayRef<::mlir::NamedAttribute> discardableAttributes = {}); static AsyncmarkOp create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, const Properties &properties, ::llvm::ArrayRef<::mlir::NamedAttribute> discardableAttributes = {}); static AsyncmarkOp create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, const Properties &properties, ::llvm::ArrayRef<::mlir::NamedAttribute> discardableAttributes = {}); ::llvm::LogicalResult verifyInvariantsImpl(); ::llvm::LogicalResult verifyInvariants(); static ::mlir::ParseResult parse(::mlir::OpAsmParser &parser, ::mlir::OperationState &result); void print(::mlir::OpAsmPrinter &_odsPrinter); public: }; } // namespace mlir::ROCDL MLIR_DECLARE_EXPLICIT_TYPE_ID(::mlir::ROCDL::AsyncmarkOp) namespace mlir::ROCDL { //===----------------------------------------------------------------------===// // ::mlir::ROCDL::BallotOp declarations //===----------------------------------------------------------------------===// namespace detail { class BallotOpGenericAdaptorBase { public: using Properties = ::mlir::EmptyProperties; protected: ::mlir::DictionaryAttr odsAttrs; ::std::optional<::mlir::OperationName> odsOpName; Properties properties; ::mlir::RegionRange odsRegions; public: BallotOpGenericAdaptorBase(::mlir::DictionaryAttr attrs, const Properties &properties, ::mlir::RegionRange regions = {}) : odsAttrs(attrs), properties(properties), odsRegions(regions) { if (odsAttrs) odsOpName.emplace("rocdl.ballot", odsAttrs.getContext()); } BallotOpGenericAdaptorBase(BallotOp op); std::pair getODSOperandIndexAndLength(unsigned index, unsigned odsOperandsSize) { return {index, 1}; } const Properties &getProperties() { return properties; } ::mlir::DictionaryAttr getAttributes() { return odsAttrs; } }; } // namespace detail template class BallotOpGenericAdaptor : public detail::BallotOpGenericAdaptorBase { using ValueT = ::llvm::detail::ValueOfRange; using Base = detail::BallotOpGenericAdaptorBase; static constexpr int odsIndex_pred = 0; public: BallotOpGenericAdaptor(RangeT values, ::mlir::DictionaryAttr attrs, const Properties &properties, ::mlir::RegionRange regions = {}) : Base(attrs, properties, regions), odsOperands(values) {} BallotOpGenericAdaptor(RangeT values, ::mlir::DictionaryAttr attrs, ::mlir::PropertyRef properties, ::mlir::RegionRange regions = {}) : BallotOpGenericAdaptor(values, attrs, (properties ? *properties.as() : Properties{}), regions) {} BallotOpGenericAdaptor(RangeT values, ::mlir::DictionaryAttr attrs = nullptr) : BallotOpGenericAdaptor(values, attrs, Properties{}, {}) {} BallotOpGenericAdaptor(RangeT values, const BallotOpGenericAdaptorBase &base) : Base(base), odsOperands(values) {} template >> BallotOpGenericAdaptor(RangeT values, LateInst op) : Base(op), odsOperands(values) {} std::pair getODSOperandIndexAndLength(unsigned index) { return Base::getODSOperandIndexAndLength(index, odsOperands.size()); } RangeT getODSOperands(unsigned index) { auto valueRange = getODSOperandIndexAndLength(index); return {std::next(odsOperands.begin(), valueRange.first), std::next(odsOperands.begin(), valueRange.first + valueRange.second)}; } ValueT getPred() { return (*getODSOperands(0).begin()); } RangeT getOperands() { return odsOperands; } private: RangeT odsOperands; }; class BallotOpAdaptor : public BallotOpGenericAdaptor<::mlir::ValueRange> { public: using BallotOpGenericAdaptor::BallotOpGenericAdaptor; BallotOpAdaptor(BallotOp op); ::llvm::LogicalResult verify(::mlir::Location loc); }; class BallotOp : public ::mlir::Op::Impl, ::mlir::OpTrait::ZeroSuccessors, ::mlir::OpTrait::OneOperand, ::mlir::OpTrait::OpInvariants> { public: using Op::Op; using Op::print; using Adaptor = BallotOpAdaptor; template using GenericAdaptor = BallotOpGenericAdaptor; using FoldAdaptor = GenericAdaptor<::llvm::ArrayRef<::mlir::Attribute>>; static constexpr int odsIndex_pred = 0; using Properties = FoldAdaptor::Properties; static ::llvm::ArrayRef<::llvm::StringRef> getAttributeNames() { return {}; } static constexpr ::llvm::StringLiteral getOperationName() { return ::llvm::StringLiteral("rocdl.ballot"); } std::pair getODSOperandIndexAndLength(unsigned index) { return {index, 1}; } ::mlir::Operation::operand_range getODSOperands(unsigned index) { auto valueRange = getODSOperandIndexAndLength(index); return {std::next(getOperation()->operand_begin(), valueRange.first), std::next(getOperation()->operand_begin(), valueRange.first + valueRange.second)}; } ::mlir::TypedValue<::mlir::IntegerType> getPred() { return ::llvm::cast<::mlir::TypedValue<::mlir::IntegerType>>(*getODSOperands(0).begin()); } ::mlir::OpOperand &getPredMutable() { auto range = getODSOperandIndexAndLength(0); return getOperation()->getOpOperand(range.first); } std::pair getODSResultIndexAndLength(unsigned index) { return {index, 1}; } ::mlir::Operation::result_range getODSResults(unsigned index) { auto valueRange = getODSResultIndexAndLength(index); return {std::next(getOperation()->result_begin(), valueRange.first), std::next(getOperation()->result_begin(), valueRange.first + valueRange.second)}; } ::mlir::TypedValue<::mlir::Type> getRes() { return ::llvm::cast<::mlir::TypedValue<::mlir::Type>>(*getODSResults(0).begin()); } static ::llvm::LogicalResult setPropertiesFromAttr(Properties &prop, ::mlir::Attribute attr, ::llvm::function_ref<::mlir::InFlightDiagnostic()> emitError); static ::mlir::Attribute getPropertiesAsAttr(::mlir::MLIRContext *ctx, const Properties &prop); static llvm::hash_code computePropertiesHash(const Properties &prop); static std::optional getInherentAttr(::mlir::MLIRContext *ctx, const Properties &prop, llvm::StringRef name); static void setInherentAttr(Properties &prop, llvm::StringRef name, mlir::Attribute value); static void populateInherentAttrs(::mlir::MLIRContext *ctx, const Properties &prop, ::mlir::NamedAttrList &attrs); static ::llvm::LogicalResult verifyInherentAttrs(::mlir::OperationName opName, ::mlir::NamedAttrList &attrs, llvm::function_ref<::mlir::InFlightDiagnostic()> emitError); static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::Type res, ::mlir::Value pred); static BallotOp create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::Type res, ::mlir::Value pred); static BallotOp create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::Type res, ::mlir::Value pred); static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::Value pred); static BallotOp create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::Value pred); static BallotOp create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::Value pred); static void build(::mlir::OpBuilder &, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, ::llvm::ArrayRef<::mlir::NamedAttribute> attributes = {}); static BallotOp create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, ::llvm::ArrayRef<::mlir::NamedAttribute> attributes = {}); static BallotOp create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, ::llvm::ArrayRef<::mlir::NamedAttribute> attributes = {}); static void build(::mlir::OpBuilder &, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, const Properties &properties, ::llvm::ArrayRef<::mlir::NamedAttribute> discardableAttributes = {}); static BallotOp create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, const Properties &properties, ::llvm::ArrayRef<::mlir::NamedAttribute> discardableAttributes = {}); static BallotOp create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, const Properties &properties, ::llvm::ArrayRef<::mlir::NamedAttribute> discardableAttributes = {}); ::llvm::LogicalResult verifyInvariantsImpl(); ::llvm::LogicalResult verifyInvariants(); static ::mlir::ParseResult parse(::mlir::OpAsmParser &parser, ::mlir::OperationState &result); void print(::mlir::OpAsmPrinter &_odsPrinter); public: }; } // namespace mlir::ROCDL MLIR_DECLARE_EXPLICIT_TYPE_ID(::mlir::ROCDL::BallotOp) namespace mlir::ROCDL { //===----------------------------------------------------------------------===// // ::mlir::ROCDL::BarrierInitOp declarations //===----------------------------------------------------------------------===// namespace detail { class BarrierInitOpGenericAdaptorBase { public: struct Properties { using memberCntTy = ::mlir::IntegerAttr; memberCntTy memberCnt; auto getMemberCnt() const { auto &propStorage = this->memberCnt; return ::llvm::cast<::mlir::IntegerAttr>(propStorage); } void setMemberCnt(const ::mlir::IntegerAttr &propValue) { this->memberCnt = propValue; } bool operator==(const Properties &rhs) const { return rhs.memberCnt == this->memberCnt && true; } bool operator!=(const Properties &rhs) const { return !(*this == rhs); } }; protected: ::mlir::DictionaryAttr odsAttrs; ::std::optional<::mlir::OperationName> odsOpName; Properties properties; ::mlir::RegionRange odsRegions; public: BarrierInitOpGenericAdaptorBase(::mlir::DictionaryAttr attrs, const Properties &properties, ::mlir::RegionRange regions = {}) : odsAttrs(attrs), properties(properties), odsRegions(regions) { if (odsAttrs) odsOpName.emplace("rocdl.s.barrier.init", odsAttrs.getContext()); } BarrierInitOpGenericAdaptorBase(BarrierInitOp op); std::pair getODSOperandIndexAndLength(unsigned index, unsigned odsOperandsSize) { return {index, 1}; } const Properties &getProperties() { return properties; } ::mlir::DictionaryAttr getAttributes() { return odsAttrs; } ::mlir::IntegerAttr getMemberCntAttr() { auto attr = ::llvm::cast<::mlir::IntegerAttr>(getProperties().memberCnt); return attr; } uint32_t getMemberCnt(); }; } // namespace detail template class BarrierInitOpGenericAdaptor : public detail::BarrierInitOpGenericAdaptorBase { using ValueT = ::llvm::detail::ValueOfRange; using Base = detail::BarrierInitOpGenericAdaptorBase; static constexpr int odsIndex_ptr = 0; public: BarrierInitOpGenericAdaptor(RangeT values, ::mlir::DictionaryAttr attrs, const Properties &properties, ::mlir::RegionRange regions = {}) : Base(attrs, properties, regions), odsOperands(values) {} BarrierInitOpGenericAdaptor(RangeT values, ::mlir::DictionaryAttr attrs, ::mlir::PropertyRef properties, ::mlir::RegionRange regions = {}) : BarrierInitOpGenericAdaptor(values, attrs, (properties ? *properties.as() : Properties{}), regions) {} BarrierInitOpGenericAdaptor(RangeT values, ::mlir::DictionaryAttr attrs = nullptr) : BarrierInitOpGenericAdaptor(values, attrs, Properties{}, {}) {} BarrierInitOpGenericAdaptor(RangeT values, const BarrierInitOpGenericAdaptorBase &base) : Base(base), odsOperands(values) {} template >> BarrierInitOpGenericAdaptor(RangeT values, LateInst op) : Base(op), odsOperands(values) {} std::pair getODSOperandIndexAndLength(unsigned index) { return Base::getODSOperandIndexAndLength(index, odsOperands.size()); } RangeT getODSOperands(unsigned index) { auto valueRange = getODSOperandIndexAndLength(index); return {std::next(odsOperands.begin(), valueRange.first), std::next(odsOperands.begin(), valueRange.first + valueRange.second)}; } ValueT getPtr() { return (*getODSOperands(0).begin()); } RangeT getOperands() { return odsOperands; } private: RangeT odsOperands; }; class BarrierInitOpAdaptor : public BarrierInitOpGenericAdaptor<::mlir::ValueRange> { public: using BarrierInitOpGenericAdaptor::BarrierInitOpGenericAdaptor; BarrierInitOpAdaptor(BarrierInitOp op); ::llvm::LogicalResult verify(::mlir::Location loc); }; class BarrierInitOp : public ::mlir::Op { public: using Op::Op; using Op::print; using Adaptor = BarrierInitOpAdaptor; template using GenericAdaptor = BarrierInitOpGenericAdaptor; using FoldAdaptor = GenericAdaptor<::llvm::ArrayRef<::mlir::Attribute>>; static constexpr int odsIndex_ptr = 0; using Properties = FoldAdaptor::Properties; static ::llvm::ArrayRef<::llvm::StringRef> getAttributeNames() { static ::llvm::StringRef attrNames[] = {::llvm::StringRef("memberCnt")}; return ::llvm::ArrayRef(attrNames); } ::mlir::StringAttr getMemberCntAttrName() { return getAttributeNameForIndex(0); } static ::mlir::StringAttr getMemberCntAttrName(::mlir::OperationName name) { return getAttributeNameForIndex(name, 0); } static constexpr ::llvm::StringLiteral getOperationName() { return ::llvm::StringLiteral("rocdl.s.barrier.init"); } std::pair getODSOperandIndexAndLength(unsigned index) { return {index, 1}; } ::mlir::Operation::operand_range getODSOperands(unsigned index) { auto valueRange = getODSOperandIndexAndLength(index); return {std::next(getOperation()->operand_begin(), valueRange.first), std::next(getOperation()->operand_begin(), valueRange.first + valueRange.second)}; } ::mlir::TypedValue<::mlir::LLVM::LLVMPointerType> getPtr() { return ::llvm::cast<::mlir::TypedValue<::mlir::LLVM::LLVMPointerType>>(*getODSOperands(0).begin()); } ::mlir::OpOperand &getPtrMutable() { auto range = getODSOperandIndexAndLength(0); return getOperation()->getOpOperand(range.first); } std::pair getODSResultIndexAndLength(unsigned index) { return {index, 1}; } ::mlir::Operation::result_range getODSResults(unsigned index) { auto valueRange = getODSResultIndexAndLength(index); return {std::next(getOperation()->result_begin(), valueRange.first), std::next(getOperation()->result_begin(), valueRange.first + valueRange.second)}; } static ::llvm::LogicalResult setPropertiesFromAttr(Properties &prop, ::mlir::Attribute attr, ::llvm::function_ref<::mlir::InFlightDiagnostic()> emitError); static ::mlir::Attribute getPropertiesAsAttr(::mlir::MLIRContext *ctx, const Properties &prop); static llvm::hash_code computePropertiesHash(const Properties &prop); static std::optional getInherentAttr(::mlir::MLIRContext *ctx, const Properties &prop, llvm::StringRef name); static void setInherentAttr(Properties &prop, llvm::StringRef name, mlir::Attribute value); static void populateInherentAttrs(::mlir::MLIRContext *ctx, const Properties &prop, ::mlir::NamedAttrList &attrs); static ::llvm::LogicalResult verifyInherentAttrs(::mlir::OperationName opName, ::mlir::NamedAttrList &attrs, llvm::function_ref<::mlir::InFlightDiagnostic()> emitError); static ::llvm::LogicalResult readProperties(::mlir::DialectBytecodeReader &reader, ::mlir::OperationState &state); void writeProperties(::mlir::DialectBytecodeWriter &writer); ::mlir::IntegerAttr getMemberCntAttr() { return ::llvm::cast<::mlir::IntegerAttr>(getProperties().memberCnt); } uint32_t getMemberCnt(); void setMemberCntAttr(::mlir::IntegerAttr attr) { getProperties().memberCnt = attr; } void setMemberCnt(uint32_t attrValue); static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::Value ptr, ::mlir::IntegerAttr memberCnt); static BarrierInitOp create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::Value ptr, ::mlir::IntegerAttr memberCnt); static BarrierInitOp create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::Value ptr, ::mlir::IntegerAttr memberCnt); static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::Value ptr, ::mlir::IntegerAttr memberCnt); static BarrierInitOp create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::Value ptr, ::mlir::IntegerAttr memberCnt); static BarrierInitOp create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::Value ptr, ::mlir::IntegerAttr memberCnt); static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::Value ptr, uint32_t memberCnt); static BarrierInitOp create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::Value ptr, uint32_t memberCnt); static BarrierInitOp create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::Value ptr, uint32_t memberCnt); static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::Value ptr, uint32_t memberCnt); static BarrierInitOp create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::Value ptr, uint32_t memberCnt); static BarrierInitOp create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::Value ptr, uint32_t memberCnt); static void build(::mlir::OpBuilder &, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, ::llvm::ArrayRef<::mlir::NamedAttribute> attributes = {}); static BarrierInitOp create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, ::llvm::ArrayRef<::mlir::NamedAttribute> attributes = {}); static BarrierInitOp create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, ::llvm::ArrayRef<::mlir::NamedAttribute> attributes = {}); static void build(::mlir::OpBuilder &, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, const Properties &properties, ::llvm::ArrayRef<::mlir::NamedAttribute> discardableAttributes = {}); static BarrierInitOp create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, const Properties &properties, ::llvm::ArrayRef<::mlir::NamedAttribute> discardableAttributes = {}); static BarrierInitOp create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, const Properties &properties, ::llvm::ArrayRef<::mlir::NamedAttribute> discardableAttributes = {}); ::llvm::LogicalResult verifyInvariantsImpl(); ::llvm::LogicalResult verifyInvariants(); static ::mlir::ParseResult parse(::mlir::OpAsmParser &parser, ::mlir::OperationState &result); void print(::mlir::OpAsmPrinter &_odsPrinter); private: ::mlir::StringAttr getAttributeNameForIndex(unsigned index) { return getAttributeNameForIndex((*this)->getName(), index); } static ::mlir::StringAttr getAttributeNameForIndex(::mlir::OperationName name, unsigned index) { assert(index < 1 && "invalid attribute index"); assert(name.getStringRef() == getOperationName() && "invalid operation name"); assert(name.isRegistered() && "Operation isn't registered, missing a " "dependent dialect loading?"); return name.getAttributeNames()[index]; } public: }; } // namespace mlir::ROCDL MLIR_DECLARE_EXPLICIT_TYPE_ID(::mlir::ROCDL::BarrierInitOp) MLIR_DECLARE_EXPLICIT_TYPE_ID(::mlir::ROCDL::detail::BarrierInitOpGenericAdaptorBase::Properties) namespace mlir::ROCDL { //===----------------------------------------------------------------------===// // ::mlir::ROCDL::BarrierJoinOp declarations //===----------------------------------------------------------------------===// namespace detail { class BarrierJoinOpGenericAdaptorBase { public: using Properties = ::mlir::EmptyProperties; protected: ::mlir::DictionaryAttr odsAttrs; ::std::optional<::mlir::OperationName> odsOpName; Properties properties; ::mlir::RegionRange odsRegions; public: BarrierJoinOpGenericAdaptorBase(::mlir::DictionaryAttr attrs, const Properties &properties, ::mlir::RegionRange regions = {}) : odsAttrs(attrs), properties(properties), odsRegions(regions) { if (odsAttrs) odsOpName.emplace("rocdl.s.barrier.join", odsAttrs.getContext()); } BarrierJoinOpGenericAdaptorBase(BarrierJoinOp op); std::pair getODSOperandIndexAndLength(unsigned index, unsigned odsOperandsSize) { return {index, 1}; } const Properties &getProperties() { return properties; } ::mlir::DictionaryAttr getAttributes() { return odsAttrs; } }; } // namespace detail template class BarrierJoinOpGenericAdaptor : public detail::BarrierJoinOpGenericAdaptorBase { using ValueT = ::llvm::detail::ValueOfRange; using Base = detail::BarrierJoinOpGenericAdaptorBase; static constexpr int odsIndex_ptr = 0; public: BarrierJoinOpGenericAdaptor(RangeT values, ::mlir::DictionaryAttr attrs, const Properties &properties, ::mlir::RegionRange regions = {}) : Base(attrs, properties, regions), odsOperands(values) {} BarrierJoinOpGenericAdaptor(RangeT values, ::mlir::DictionaryAttr attrs, ::mlir::PropertyRef properties, ::mlir::RegionRange regions = {}) : BarrierJoinOpGenericAdaptor(values, attrs, (properties ? *properties.as() : Properties{}), regions) {} BarrierJoinOpGenericAdaptor(RangeT values, ::mlir::DictionaryAttr attrs = nullptr) : BarrierJoinOpGenericAdaptor(values, attrs, Properties{}, {}) {} BarrierJoinOpGenericAdaptor(RangeT values, const BarrierJoinOpGenericAdaptorBase &base) : Base(base), odsOperands(values) {} template >> BarrierJoinOpGenericAdaptor(RangeT values, LateInst op) : Base(op), odsOperands(values) {} std::pair getODSOperandIndexAndLength(unsigned index) { return Base::getODSOperandIndexAndLength(index, odsOperands.size()); } RangeT getODSOperands(unsigned index) { auto valueRange = getODSOperandIndexAndLength(index); return {std::next(odsOperands.begin(), valueRange.first), std::next(odsOperands.begin(), valueRange.first + valueRange.second)}; } ValueT getPtr() { return (*getODSOperands(0).begin()); } RangeT getOperands() { return odsOperands; } private: RangeT odsOperands; }; class BarrierJoinOpAdaptor : public BarrierJoinOpGenericAdaptor<::mlir::ValueRange> { public: using BarrierJoinOpGenericAdaptor::BarrierJoinOpGenericAdaptor; BarrierJoinOpAdaptor(BarrierJoinOp op); ::llvm::LogicalResult verify(::mlir::Location loc); }; class BarrierJoinOp : public ::mlir::Op { public: using Op::Op; using Op::print; using Adaptor = BarrierJoinOpAdaptor; template using GenericAdaptor = BarrierJoinOpGenericAdaptor; using FoldAdaptor = GenericAdaptor<::llvm::ArrayRef<::mlir::Attribute>>; static constexpr int odsIndex_ptr = 0; using Properties = FoldAdaptor::Properties; static ::llvm::ArrayRef<::llvm::StringRef> getAttributeNames() { return {}; } static constexpr ::llvm::StringLiteral getOperationName() { return ::llvm::StringLiteral("rocdl.s.barrier.join"); } std::pair getODSOperandIndexAndLength(unsigned index) { return {index, 1}; } ::mlir::Operation::operand_range getODSOperands(unsigned index) { auto valueRange = getODSOperandIndexAndLength(index); return {std::next(getOperation()->operand_begin(), valueRange.first), std::next(getOperation()->operand_begin(), valueRange.first + valueRange.second)}; } ::mlir::TypedValue<::mlir::LLVM::LLVMPointerType> getPtr() { return ::llvm::cast<::mlir::TypedValue<::mlir::LLVM::LLVMPointerType>>(*getODSOperands(0).begin()); } ::mlir::OpOperand &getPtrMutable() { auto range = getODSOperandIndexAndLength(0); return getOperation()->getOpOperand(range.first); } std::pair getODSResultIndexAndLength(unsigned index) { return {index, 1}; } ::mlir::Operation::result_range getODSResults(unsigned index) { auto valueRange = getODSResultIndexAndLength(index); return {std::next(getOperation()->result_begin(), valueRange.first), std::next(getOperation()->result_begin(), valueRange.first + valueRange.second)}; } static ::llvm::LogicalResult setPropertiesFromAttr(Properties &prop, ::mlir::Attribute attr, ::llvm::function_ref<::mlir::InFlightDiagnostic()> emitError); static ::mlir::Attribute getPropertiesAsAttr(::mlir::MLIRContext *ctx, const Properties &prop); static llvm::hash_code computePropertiesHash(const Properties &prop); static std::optional getInherentAttr(::mlir::MLIRContext *ctx, const Properties &prop, llvm::StringRef name); static void setInherentAttr(Properties &prop, llvm::StringRef name, mlir::Attribute value); static void populateInherentAttrs(::mlir::MLIRContext *ctx, const Properties &prop, ::mlir::NamedAttrList &attrs); static ::llvm::LogicalResult verifyInherentAttrs(::mlir::OperationName opName, ::mlir::NamedAttrList &attrs, llvm::function_ref<::mlir::InFlightDiagnostic()> emitError); static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::Value ptr); static BarrierJoinOp create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::Value ptr); static BarrierJoinOp create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::Value ptr); static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::Value ptr); static BarrierJoinOp create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::Value ptr); static BarrierJoinOp create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::Value ptr); static void build(::mlir::OpBuilder &, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, ::llvm::ArrayRef<::mlir::NamedAttribute> attributes = {}); static BarrierJoinOp create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, ::llvm::ArrayRef<::mlir::NamedAttribute> attributes = {}); static BarrierJoinOp create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, ::llvm::ArrayRef<::mlir::NamedAttribute> attributes = {}); static void build(::mlir::OpBuilder &, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, const Properties &properties, ::llvm::ArrayRef<::mlir::NamedAttribute> discardableAttributes = {}); static BarrierJoinOp create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, const Properties &properties, ::llvm::ArrayRef<::mlir::NamedAttribute> discardableAttributes = {}); static BarrierJoinOp create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, const Properties &properties, ::llvm::ArrayRef<::mlir::NamedAttribute> discardableAttributes = {}); ::llvm::LogicalResult verifyInvariantsImpl(); ::llvm::LogicalResult verifyInvariants(); static ::mlir::ParseResult parse(::mlir::OpAsmParser &parser, ::mlir::OperationState &result); void print(::mlir::OpAsmPrinter &_odsPrinter); public: }; } // namespace mlir::ROCDL MLIR_DECLARE_EXPLICIT_TYPE_ID(::mlir::ROCDL::BarrierJoinOp) namespace mlir::ROCDL { //===----------------------------------------------------------------------===// // ::mlir::ROCDL::BarrierLeaveOp declarations //===----------------------------------------------------------------------===// namespace detail { class BarrierLeaveOpGenericAdaptorBase { public: struct Properties { using idTy = ::mlir::IntegerAttr; idTy id; auto getId() const { auto &propStorage = this->id; return ::llvm::cast<::mlir::IntegerAttr>(propStorage); } void setId(const ::mlir::IntegerAttr &propValue) { this->id = propValue; } bool operator==(const Properties &rhs) const { return rhs.id == this->id && true; } bool operator!=(const Properties &rhs) const { return !(*this == rhs); } }; protected: ::mlir::DictionaryAttr odsAttrs; ::std::optional<::mlir::OperationName> odsOpName; Properties properties; ::mlir::RegionRange odsRegions; public: BarrierLeaveOpGenericAdaptorBase(::mlir::DictionaryAttr attrs, const Properties &properties, ::mlir::RegionRange regions = {}) : odsAttrs(attrs), properties(properties), odsRegions(regions) { if (odsAttrs) odsOpName.emplace("rocdl.s.barrier.leave", odsAttrs.getContext()); } BarrierLeaveOpGenericAdaptorBase(BarrierLeaveOp op); std::pair getODSOperandIndexAndLength(unsigned index, unsigned odsOperandsSize) { return {index, 1}; } const Properties &getProperties() { return properties; } ::mlir::DictionaryAttr getAttributes() { return odsAttrs; } ::mlir::IntegerAttr getIdAttr() { auto attr = ::llvm::cast<::mlir::IntegerAttr>(getProperties().id); return attr; } uint16_t getId(); }; } // namespace detail template class BarrierLeaveOpGenericAdaptor : public detail::BarrierLeaveOpGenericAdaptorBase { using ValueT = ::llvm::detail::ValueOfRange; using Base = detail::BarrierLeaveOpGenericAdaptorBase; public: BarrierLeaveOpGenericAdaptor(RangeT values, ::mlir::DictionaryAttr attrs, const Properties &properties, ::mlir::RegionRange regions = {}) : Base(attrs, properties, regions), odsOperands(values) {} BarrierLeaveOpGenericAdaptor(RangeT values, ::mlir::DictionaryAttr attrs, ::mlir::PropertyRef properties, ::mlir::RegionRange regions = {}) : BarrierLeaveOpGenericAdaptor(values, attrs, (properties ? *properties.as() : Properties{}), regions) {} BarrierLeaveOpGenericAdaptor(RangeT values, ::mlir::DictionaryAttr attrs = nullptr) : BarrierLeaveOpGenericAdaptor(values, attrs, Properties{}, {}) {} BarrierLeaveOpGenericAdaptor(RangeT values, const BarrierLeaveOpGenericAdaptorBase &base) : Base(base), odsOperands(values) {} template >> BarrierLeaveOpGenericAdaptor(RangeT values, LateInst op) : Base(op), odsOperands(values) {} std::pair getODSOperandIndexAndLength(unsigned index) { return Base::getODSOperandIndexAndLength(index, odsOperands.size()); } RangeT getODSOperands(unsigned index) { auto valueRange = getODSOperandIndexAndLength(index); return {std::next(odsOperands.begin(), valueRange.first), std::next(odsOperands.begin(), valueRange.first + valueRange.second)}; } RangeT getOperands() { return odsOperands; } private: RangeT odsOperands; }; class BarrierLeaveOpAdaptor : public BarrierLeaveOpGenericAdaptor<::mlir::ValueRange> { public: using BarrierLeaveOpGenericAdaptor::BarrierLeaveOpGenericAdaptor; BarrierLeaveOpAdaptor(BarrierLeaveOp op); ::llvm::LogicalResult verify(::mlir::Location loc); }; class BarrierLeaveOp : public ::mlir::Op { public: using Op::Op; using Op::print; using Adaptor = BarrierLeaveOpAdaptor; template using GenericAdaptor = BarrierLeaveOpGenericAdaptor; using FoldAdaptor = GenericAdaptor<::llvm::ArrayRef<::mlir::Attribute>>; using Properties = FoldAdaptor::Properties; static ::llvm::ArrayRef<::llvm::StringRef> getAttributeNames() { static ::llvm::StringRef attrNames[] = {::llvm::StringRef("id")}; return ::llvm::ArrayRef(attrNames); } ::mlir::StringAttr getIdAttrName() { return getAttributeNameForIndex(0); } static ::mlir::StringAttr getIdAttrName(::mlir::OperationName name) { return getAttributeNameForIndex(name, 0); } static constexpr ::llvm::StringLiteral getOperationName() { return ::llvm::StringLiteral("rocdl.s.barrier.leave"); } std::pair getODSOperandIndexAndLength(unsigned index) { return {index, 1}; } ::mlir::Operation::operand_range getODSOperands(unsigned index) { auto valueRange = getODSOperandIndexAndLength(index); return {std::next(getOperation()->operand_begin(), valueRange.first), std::next(getOperation()->operand_begin(), valueRange.first + valueRange.second)}; } std::pair getODSResultIndexAndLength(unsigned index) { return {index, 1}; } ::mlir::Operation::result_range getODSResults(unsigned index) { auto valueRange = getODSResultIndexAndLength(index); return {std::next(getOperation()->result_begin(), valueRange.first), std::next(getOperation()->result_begin(), valueRange.first + valueRange.second)}; } static ::llvm::LogicalResult setPropertiesFromAttr(Properties &prop, ::mlir::Attribute attr, ::llvm::function_ref<::mlir::InFlightDiagnostic()> emitError); static ::mlir::Attribute getPropertiesAsAttr(::mlir::MLIRContext *ctx, const Properties &prop); static llvm::hash_code computePropertiesHash(const Properties &prop); static std::optional getInherentAttr(::mlir::MLIRContext *ctx, const Properties &prop, llvm::StringRef name); static void setInherentAttr(Properties &prop, llvm::StringRef name, mlir::Attribute value); static void populateInherentAttrs(::mlir::MLIRContext *ctx, const Properties &prop, ::mlir::NamedAttrList &attrs); static ::llvm::LogicalResult verifyInherentAttrs(::mlir::OperationName opName, ::mlir::NamedAttrList &attrs, llvm::function_ref<::mlir::InFlightDiagnostic()> emitError); static ::llvm::LogicalResult readProperties(::mlir::DialectBytecodeReader &reader, ::mlir::OperationState &state); void writeProperties(::mlir::DialectBytecodeWriter &writer); ::mlir::IntegerAttr getIdAttr() { return ::llvm::cast<::mlir::IntegerAttr>(getProperties().id); } uint16_t getId(); void setIdAttr(::mlir::IntegerAttr attr) { getProperties().id = attr; } void setId(uint16_t attrValue); static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::IntegerAttr id); static BarrierLeaveOp create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::IntegerAttr id); static BarrierLeaveOp create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::IntegerAttr id); static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::IntegerAttr id); static BarrierLeaveOp create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::IntegerAttr id); static BarrierLeaveOp create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::IntegerAttr id); static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, uint16_t id); static BarrierLeaveOp create(::mlir::OpBuilder &builder, ::mlir::Location location, uint16_t id); static BarrierLeaveOp create(::mlir::ImplicitLocOpBuilder &builder, uint16_t id); static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, uint16_t id); static BarrierLeaveOp create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, uint16_t id); static BarrierLeaveOp create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, uint16_t id); static void build(::mlir::OpBuilder &, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, ::llvm::ArrayRef<::mlir::NamedAttribute> attributes = {}); static BarrierLeaveOp create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, ::llvm::ArrayRef<::mlir::NamedAttribute> attributes = {}); static BarrierLeaveOp create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, ::llvm::ArrayRef<::mlir::NamedAttribute> attributes = {}); static void build(::mlir::OpBuilder &, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, const Properties &properties, ::llvm::ArrayRef<::mlir::NamedAttribute> discardableAttributes = {}); static BarrierLeaveOp create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, const Properties &properties, ::llvm::ArrayRef<::mlir::NamedAttribute> discardableAttributes = {}); static BarrierLeaveOp create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, const Properties &properties, ::llvm::ArrayRef<::mlir::NamedAttribute> discardableAttributes = {}); ::llvm::LogicalResult verifyInvariantsImpl(); ::llvm::LogicalResult verifyInvariants(); static ::mlir::ParseResult parse(::mlir::OpAsmParser &parser, ::mlir::OperationState &result); void print(::mlir::OpAsmPrinter &_odsPrinter); private: ::mlir::StringAttr getAttributeNameForIndex(unsigned index) { return getAttributeNameForIndex((*this)->getName(), index); } static ::mlir::StringAttr getAttributeNameForIndex(::mlir::OperationName name, unsigned index) { assert(index < 1 && "invalid attribute index"); assert(name.getStringRef() == getOperationName() && "invalid operation name"); assert(name.isRegistered() && "Operation isn't registered, missing a " "dependent dialect loading?"); return name.getAttributeNames()[index]; } public: }; } // namespace mlir::ROCDL MLIR_DECLARE_EXPLICIT_TYPE_ID(::mlir::ROCDL::BarrierLeaveOp) MLIR_DECLARE_EXPLICIT_TYPE_ID(::mlir::ROCDL::detail::BarrierLeaveOpGenericAdaptorBase::Properties) namespace mlir::ROCDL { //===----------------------------------------------------------------------===// // ::mlir::ROCDL::BarrierOp declarations //===----------------------------------------------------------------------===// namespace detail { class BarrierOpGenericAdaptorBase { public: using Properties = ::mlir::EmptyProperties; protected: ::mlir::DictionaryAttr odsAttrs; ::std::optional<::mlir::OperationName> odsOpName; Properties properties; ::mlir::RegionRange odsRegions; public: BarrierOpGenericAdaptorBase(::mlir::DictionaryAttr attrs, const Properties &properties, ::mlir::RegionRange regions = {}) : odsAttrs(attrs), properties(properties), odsRegions(regions) { if (odsAttrs) odsOpName.emplace("rocdl.barrier", odsAttrs.getContext()); } BarrierOpGenericAdaptorBase(BarrierOp op); std::pair getODSOperandIndexAndLength(unsigned index, unsigned odsOperandsSize) { return {index, 1}; } const Properties &getProperties() { return properties; } ::mlir::DictionaryAttr getAttributes() { return odsAttrs; } }; } // namespace detail template class BarrierOpGenericAdaptor : public detail::BarrierOpGenericAdaptorBase { using ValueT = ::llvm::detail::ValueOfRange; using Base = detail::BarrierOpGenericAdaptorBase; public: BarrierOpGenericAdaptor(RangeT values, ::mlir::DictionaryAttr attrs, const Properties &properties, ::mlir::RegionRange regions = {}) : Base(attrs, properties, regions), odsOperands(values) {} BarrierOpGenericAdaptor(RangeT values, ::mlir::DictionaryAttr attrs, ::mlir::PropertyRef properties, ::mlir::RegionRange regions = {}) : BarrierOpGenericAdaptor(values, attrs, (properties ? *properties.as() : Properties{}), regions) {} BarrierOpGenericAdaptor(RangeT values, ::mlir::DictionaryAttr attrs = nullptr) : BarrierOpGenericAdaptor(values, attrs, Properties{}, {}) {} BarrierOpGenericAdaptor(RangeT values, const BarrierOpGenericAdaptorBase &base) : Base(base), odsOperands(values) {} template >> BarrierOpGenericAdaptor(RangeT values, LateInst op) : Base(op), odsOperands(values) {} std::pair getODSOperandIndexAndLength(unsigned index) { return Base::getODSOperandIndexAndLength(index, odsOperands.size()); } RangeT getODSOperands(unsigned index) { auto valueRange = getODSOperandIndexAndLength(index); return {std::next(odsOperands.begin(), valueRange.first), std::next(odsOperands.begin(), valueRange.first + valueRange.second)}; } RangeT getOperands() { return odsOperands; } private: RangeT odsOperands; }; class BarrierOpAdaptor : public BarrierOpGenericAdaptor<::mlir::ValueRange> { public: using BarrierOpGenericAdaptor::BarrierOpGenericAdaptor; BarrierOpAdaptor(BarrierOp op); ::llvm::LogicalResult verify(::mlir::Location loc); }; class BarrierOp : public ::mlir::Op { public: using Op::Op; using Op::print; using Adaptor = BarrierOpAdaptor; template using GenericAdaptor = BarrierOpGenericAdaptor; using FoldAdaptor = GenericAdaptor<::llvm::ArrayRef<::mlir::Attribute>>; using Properties = FoldAdaptor::Properties; static ::llvm::ArrayRef<::llvm::StringRef> getAttributeNames() { return {}; } static constexpr ::llvm::StringLiteral getOperationName() { return ::llvm::StringLiteral("rocdl.barrier"); } std::pair getODSOperandIndexAndLength(unsigned index) { return {index, 1}; } ::mlir::Operation::operand_range getODSOperands(unsigned index) { auto valueRange = getODSOperandIndexAndLength(index); return {std::next(getOperation()->operand_begin(), valueRange.first), std::next(getOperation()->operand_begin(), valueRange.first + valueRange.second)}; } std::pair getODSResultIndexAndLength(unsigned index) { return {index, 1}; } ::mlir::Operation::result_range getODSResults(unsigned index) { auto valueRange = getODSResultIndexAndLength(index); return {std::next(getOperation()->result_begin(), valueRange.first), std::next(getOperation()->result_begin(), valueRange.first + valueRange.second)}; } static ::llvm::LogicalResult setPropertiesFromAttr(Properties &prop, ::mlir::Attribute attr, ::llvm::function_ref<::mlir::InFlightDiagnostic()> emitError); static ::mlir::Attribute getPropertiesAsAttr(::mlir::MLIRContext *ctx, const Properties &prop); static llvm::hash_code computePropertiesHash(const Properties &prop); static std::optional getInherentAttr(::mlir::MLIRContext *ctx, const Properties &prop, llvm::StringRef name); static void setInherentAttr(Properties &prop, llvm::StringRef name, mlir::Attribute value); static void populateInherentAttrs(::mlir::MLIRContext *ctx, const Properties &prop, ::mlir::NamedAttrList &attrs); static ::llvm::LogicalResult verifyInherentAttrs(::mlir::OperationName opName, ::mlir::NamedAttrList &attrs, llvm::function_ref<::mlir::InFlightDiagnostic()> emitError); static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState); static BarrierOp create(::mlir::OpBuilder &builder, ::mlir::Location location); static BarrierOp create(::mlir::ImplicitLocOpBuilder &builder); static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes); static BarrierOp create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes); static BarrierOp create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes); static void build(::mlir::OpBuilder &, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, ::llvm::ArrayRef<::mlir::NamedAttribute> attributes = {}); static BarrierOp create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, ::llvm::ArrayRef<::mlir::NamedAttribute> attributes = {}); static BarrierOp create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, ::llvm::ArrayRef<::mlir::NamedAttribute> attributes = {}); static void build(::mlir::OpBuilder &, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, const Properties &properties, ::llvm::ArrayRef<::mlir::NamedAttribute> discardableAttributes = {}); static BarrierOp create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, const Properties &properties, ::llvm::ArrayRef<::mlir::NamedAttribute> discardableAttributes = {}); static BarrierOp create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, const Properties &properties, ::llvm::ArrayRef<::mlir::NamedAttribute> discardableAttributes = {}); ::llvm::LogicalResult verifyInvariantsImpl(); ::llvm::LogicalResult verifyInvariants(); static ::mlir::ParseResult parse(::mlir::OpAsmParser &parser, ::mlir::OperationState &result); void print(::mlir::OpAsmPrinter &_odsPrinter); public: }; } // namespace mlir::ROCDL MLIR_DECLARE_EXPLICIT_TYPE_ID(::mlir::ROCDL::BarrierOp) namespace mlir::ROCDL { //===----------------------------------------------------------------------===// // ::mlir::ROCDL::BarrierSignalIsfirstOp declarations //===----------------------------------------------------------------------===// namespace detail { class BarrierSignalIsfirstOpGenericAdaptorBase { public: struct Properties { using idTy = ::mlir::IntegerAttr; idTy id; auto getId() const { auto &propStorage = this->id; return ::llvm::cast<::mlir::IntegerAttr>(propStorage); } void setId(const ::mlir::IntegerAttr &propValue) { this->id = propValue; } bool operator==(const Properties &rhs) const { return rhs.id == this->id && true; } bool operator!=(const Properties &rhs) const { return !(*this == rhs); } }; protected: ::mlir::DictionaryAttr odsAttrs; ::std::optional<::mlir::OperationName> odsOpName; Properties properties; ::mlir::RegionRange odsRegions; public: BarrierSignalIsfirstOpGenericAdaptorBase(::mlir::DictionaryAttr attrs, const Properties &properties, ::mlir::RegionRange regions = {}) : odsAttrs(attrs), properties(properties), odsRegions(regions) { if (odsAttrs) odsOpName.emplace("rocdl.s.barrier.signal.isfirst", odsAttrs.getContext()); } BarrierSignalIsfirstOpGenericAdaptorBase(BarrierSignalIsfirstOp op); std::pair getODSOperandIndexAndLength(unsigned index, unsigned odsOperandsSize) { return {index, 1}; } const Properties &getProperties() { return properties; } ::mlir::DictionaryAttr getAttributes() { return odsAttrs; } ::mlir::IntegerAttr getIdAttr() { auto attr = ::llvm::cast<::mlir::IntegerAttr>(getProperties().id); return attr; } uint32_t getId(); }; } // namespace detail template class BarrierSignalIsfirstOpGenericAdaptor : public detail::BarrierSignalIsfirstOpGenericAdaptorBase { using ValueT = ::llvm::detail::ValueOfRange; using Base = detail::BarrierSignalIsfirstOpGenericAdaptorBase; public: BarrierSignalIsfirstOpGenericAdaptor(RangeT values, ::mlir::DictionaryAttr attrs, const Properties &properties, ::mlir::RegionRange regions = {}) : Base(attrs, properties, regions), odsOperands(values) {} BarrierSignalIsfirstOpGenericAdaptor(RangeT values, ::mlir::DictionaryAttr attrs, ::mlir::PropertyRef properties, ::mlir::RegionRange regions = {}) : BarrierSignalIsfirstOpGenericAdaptor(values, attrs, (properties ? *properties.as() : Properties{}), regions) {} BarrierSignalIsfirstOpGenericAdaptor(RangeT values, ::mlir::DictionaryAttr attrs = nullptr) : BarrierSignalIsfirstOpGenericAdaptor(values, attrs, Properties{}, {}) {} BarrierSignalIsfirstOpGenericAdaptor(RangeT values, const BarrierSignalIsfirstOpGenericAdaptorBase &base) : Base(base), odsOperands(values) {} template >> BarrierSignalIsfirstOpGenericAdaptor(RangeT values, LateInst op) : Base(op), odsOperands(values) {} std::pair getODSOperandIndexAndLength(unsigned index) { return Base::getODSOperandIndexAndLength(index, odsOperands.size()); } RangeT getODSOperands(unsigned index) { auto valueRange = getODSOperandIndexAndLength(index); return {std::next(odsOperands.begin(), valueRange.first), std::next(odsOperands.begin(), valueRange.first + valueRange.second)}; } RangeT getOperands() { return odsOperands; } private: RangeT odsOperands; }; class BarrierSignalIsfirstOpAdaptor : public BarrierSignalIsfirstOpGenericAdaptor<::mlir::ValueRange> { public: using BarrierSignalIsfirstOpGenericAdaptor::BarrierSignalIsfirstOpGenericAdaptor; BarrierSignalIsfirstOpAdaptor(BarrierSignalIsfirstOp op); ::llvm::LogicalResult verify(::mlir::Location loc); }; class BarrierSignalIsfirstOp : public ::mlir::Op::Impl, ::mlir::OpTrait::ZeroSuccessors, ::mlir::OpTrait::ZeroOperands, ::mlir::OpTrait::OpInvariants, ::mlir::BytecodeOpInterface::Trait> { public: using Op::Op; using Op::print; using Adaptor = BarrierSignalIsfirstOpAdaptor; template using GenericAdaptor = BarrierSignalIsfirstOpGenericAdaptor; using FoldAdaptor = GenericAdaptor<::llvm::ArrayRef<::mlir::Attribute>>; using Properties = FoldAdaptor::Properties; static ::llvm::ArrayRef<::llvm::StringRef> getAttributeNames() { static ::llvm::StringRef attrNames[] = {::llvm::StringRef("id")}; return ::llvm::ArrayRef(attrNames); } ::mlir::StringAttr getIdAttrName() { return getAttributeNameForIndex(0); } static ::mlir::StringAttr getIdAttrName(::mlir::OperationName name) { return getAttributeNameForIndex(name, 0); } static constexpr ::llvm::StringLiteral getOperationName() { return ::llvm::StringLiteral("rocdl.s.barrier.signal.isfirst"); } std::pair getODSOperandIndexAndLength(unsigned index) { return {index, 1}; } ::mlir::Operation::operand_range getODSOperands(unsigned index) { auto valueRange = getODSOperandIndexAndLength(index); return {std::next(getOperation()->operand_begin(), valueRange.first), std::next(getOperation()->operand_begin(), valueRange.first + valueRange.second)}; } std::pair getODSResultIndexAndLength(unsigned index) { return {index, 1}; } ::mlir::Operation::result_range getODSResults(unsigned index) { auto valueRange = getODSResultIndexAndLength(index); return {std::next(getOperation()->result_begin(), valueRange.first), std::next(getOperation()->result_begin(), valueRange.first + valueRange.second)}; } ::mlir::TypedValue<::mlir::IntegerType> getRes() { return ::llvm::cast<::mlir::TypedValue<::mlir::IntegerType>>(*getODSResults(0).begin()); } static ::llvm::LogicalResult setPropertiesFromAttr(Properties &prop, ::mlir::Attribute attr, ::llvm::function_ref<::mlir::InFlightDiagnostic()> emitError); static ::mlir::Attribute getPropertiesAsAttr(::mlir::MLIRContext *ctx, const Properties &prop); static llvm::hash_code computePropertiesHash(const Properties &prop); static std::optional getInherentAttr(::mlir::MLIRContext *ctx, const Properties &prop, llvm::StringRef name); static void setInherentAttr(Properties &prop, llvm::StringRef name, mlir::Attribute value); static void populateInherentAttrs(::mlir::MLIRContext *ctx, const Properties &prop, ::mlir::NamedAttrList &attrs); static ::llvm::LogicalResult verifyInherentAttrs(::mlir::OperationName opName, ::mlir::NamedAttrList &attrs, llvm::function_ref<::mlir::InFlightDiagnostic()> emitError); static ::llvm::LogicalResult readProperties(::mlir::DialectBytecodeReader &reader, ::mlir::OperationState &state); void writeProperties(::mlir::DialectBytecodeWriter &writer); ::mlir::IntegerAttr getIdAttr() { return ::llvm::cast<::mlir::IntegerAttr>(getProperties().id); } uint32_t getId(); void setIdAttr(::mlir::IntegerAttr attr) { getProperties().id = attr; } void setId(uint32_t attrValue); static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::Type res, ::mlir::IntegerAttr id); static BarrierSignalIsfirstOp create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::Type res, ::mlir::IntegerAttr id); static BarrierSignalIsfirstOp create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::Type res, ::mlir::IntegerAttr id); static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::IntegerAttr id); static BarrierSignalIsfirstOp create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::IntegerAttr id); static BarrierSignalIsfirstOp create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::IntegerAttr id); static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::Type res, uint32_t id); static BarrierSignalIsfirstOp create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::Type res, uint32_t id); static BarrierSignalIsfirstOp create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::Type res, uint32_t id); static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, uint32_t id); static BarrierSignalIsfirstOp create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, uint32_t id); static BarrierSignalIsfirstOp create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, uint32_t id); static void build(::mlir::OpBuilder &, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, ::llvm::ArrayRef<::mlir::NamedAttribute> attributes = {}); static BarrierSignalIsfirstOp create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, ::llvm::ArrayRef<::mlir::NamedAttribute> attributes = {}); static BarrierSignalIsfirstOp create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, ::llvm::ArrayRef<::mlir::NamedAttribute> attributes = {}); static void build(::mlir::OpBuilder &, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, const Properties &properties, ::llvm::ArrayRef<::mlir::NamedAttribute> discardableAttributes = {}); static BarrierSignalIsfirstOp create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, const Properties &properties, ::llvm::ArrayRef<::mlir::NamedAttribute> discardableAttributes = {}); static BarrierSignalIsfirstOp create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, const Properties &properties, ::llvm::ArrayRef<::mlir::NamedAttribute> discardableAttributes = {}); ::llvm::LogicalResult verifyInvariantsImpl(); ::llvm::LogicalResult verifyInvariants(); static ::mlir::ParseResult parse(::mlir::OpAsmParser &parser, ::mlir::OperationState &result); void print(::mlir::OpAsmPrinter &_odsPrinter); private: ::mlir::StringAttr getAttributeNameForIndex(unsigned index) { return getAttributeNameForIndex((*this)->getName(), index); } static ::mlir::StringAttr getAttributeNameForIndex(::mlir::OperationName name, unsigned index) { assert(index < 1 && "invalid attribute index"); assert(name.getStringRef() == getOperationName() && "invalid operation name"); assert(name.isRegistered() && "Operation isn't registered, missing a " "dependent dialect loading?"); return name.getAttributeNames()[index]; } public: }; } // namespace mlir::ROCDL MLIR_DECLARE_EXPLICIT_TYPE_ID(::mlir::ROCDL::BarrierSignalIsfirstOp) MLIR_DECLARE_EXPLICIT_TYPE_ID(::mlir::ROCDL::detail::BarrierSignalIsfirstOpGenericAdaptorBase::Properties) namespace mlir::ROCDL { //===----------------------------------------------------------------------===// // ::mlir::ROCDL::BarrierSignalOp declarations //===----------------------------------------------------------------------===// namespace detail { class BarrierSignalOpGenericAdaptorBase { public: struct Properties { using idTy = ::mlir::IntegerAttr; idTy id; auto getId() const { auto &propStorage = this->id; return ::llvm::cast<::mlir::IntegerAttr>(propStorage); } void setId(const ::mlir::IntegerAttr &propValue) { this->id = propValue; } bool operator==(const Properties &rhs) const { return rhs.id == this->id && true; } bool operator!=(const Properties &rhs) const { return !(*this == rhs); } }; protected: ::mlir::DictionaryAttr odsAttrs; ::std::optional<::mlir::OperationName> odsOpName; Properties properties; ::mlir::RegionRange odsRegions; public: BarrierSignalOpGenericAdaptorBase(::mlir::DictionaryAttr attrs, const Properties &properties, ::mlir::RegionRange regions = {}) : odsAttrs(attrs), properties(properties), odsRegions(regions) { if (odsAttrs) odsOpName.emplace("rocdl.s.barrier.signal", odsAttrs.getContext()); } BarrierSignalOpGenericAdaptorBase(BarrierSignalOp op); std::pair getODSOperandIndexAndLength(unsigned index, unsigned odsOperandsSize) { return {index, 1}; } const Properties &getProperties() { return properties; } ::mlir::DictionaryAttr getAttributes() { return odsAttrs; } ::mlir::IntegerAttr getIdAttr() { auto attr = ::llvm::cast<::mlir::IntegerAttr>(getProperties().id); return attr; } uint32_t getId(); }; } // namespace detail template class BarrierSignalOpGenericAdaptor : public detail::BarrierSignalOpGenericAdaptorBase { using ValueT = ::llvm::detail::ValueOfRange; using Base = detail::BarrierSignalOpGenericAdaptorBase; public: BarrierSignalOpGenericAdaptor(RangeT values, ::mlir::DictionaryAttr attrs, const Properties &properties, ::mlir::RegionRange regions = {}) : Base(attrs, properties, regions), odsOperands(values) {} BarrierSignalOpGenericAdaptor(RangeT values, ::mlir::DictionaryAttr attrs, ::mlir::PropertyRef properties, ::mlir::RegionRange regions = {}) : BarrierSignalOpGenericAdaptor(values, attrs, (properties ? *properties.as() : Properties{}), regions) {} BarrierSignalOpGenericAdaptor(RangeT values, ::mlir::DictionaryAttr attrs = nullptr) : BarrierSignalOpGenericAdaptor(values, attrs, Properties{}, {}) {} BarrierSignalOpGenericAdaptor(RangeT values, const BarrierSignalOpGenericAdaptorBase &base) : Base(base), odsOperands(values) {} template >> BarrierSignalOpGenericAdaptor(RangeT values, LateInst op) : Base(op), odsOperands(values) {} std::pair getODSOperandIndexAndLength(unsigned index) { return Base::getODSOperandIndexAndLength(index, odsOperands.size()); } RangeT getODSOperands(unsigned index) { auto valueRange = getODSOperandIndexAndLength(index); return {std::next(odsOperands.begin(), valueRange.first), std::next(odsOperands.begin(), valueRange.first + valueRange.second)}; } RangeT getOperands() { return odsOperands; } private: RangeT odsOperands; }; class BarrierSignalOpAdaptor : public BarrierSignalOpGenericAdaptor<::mlir::ValueRange> { public: using BarrierSignalOpGenericAdaptor::BarrierSignalOpGenericAdaptor; BarrierSignalOpAdaptor(BarrierSignalOp op); ::llvm::LogicalResult verify(::mlir::Location loc); }; class BarrierSignalOp : public ::mlir::Op { public: using Op::Op; using Op::print; using Adaptor = BarrierSignalOpAdaptor; template using GenericAdaptor = BarrierSignalOpGenericAdaptor; using FoldAdaptor = GenericAdaptor<::llvm::ArrayRef<::mlir::Attribute>>; using Properties = FoldAdaptor::Properties; static ::llvm::ArrayRef<::llvm::StringRef> getAttributeNames() { static ::llvm::StringRef attrNames[] = {::llvm::StringRef("id")}; return ::llvm::ArrayRef(attrNames); } ::mlir::StringAttr getIdAttrName() { return getAttributeNameForIndex(0); } static ::mlir::StringAttr getIdAttrName(::mlir::OperationName name) { return getAttributeNameForIndex(name, 0); } static constexpr ::llvm::StringLiteral getOperationName() { return ::llvm::StringLiteral("rocdl.s.barrier.signal"); } std::pair getODSOperandIndexAndLength(unsigned index) { return {index, 1}; } ::mlir::Operation::operand_range getODSOperands(unsigned index) { auto valueRange = getODSOperandIndexAndLength(index); return {std::next(getOperation()->operand_begin(), valueRange.first), std::next(getOperation()->operand_begin(), valueRange.first + valueRange.second)}; } std::pair getODSResultIndexAndLength(unsigned index) { return {index, 1}; } ::mlir::Operation::result_range getODSResults(unsigned index) { auto valueRange = getODSResultIndexAndLength(index); return {std::next(getOperation()->result_begin(), valueRange.first), std::next(getOperation()->result_begin(), valueRange.first + valueRange.second)}; } static ::llvm::LogicalResult setPropertiesFromAttr(Properties &prop, ::mlir::Attribute attr, ::llvm::function_ref<::mlir::InFlightDiagnostic()> emitError); static ::mlir::Attribute getPropertiesAsAttr(::mlir::MLIRContext *ctx, const Properties &prop); static llvm::hash_code computePropertiesHash(const Properties &prop); static std::optional getInherentAttr(::mlir::MLIRContext *ctx, const Properties &prop, llvm::StringRef name); static void setInherentAttr(Properties &prop, llvm::StringRef name, mlir::Attribute value); static void populateInherentAttrs(::mlir::MLIRContext *ctx, const Properties &prop, ::mlir::NamedAttrList &attrs); static ::llvm::LogicalResult verifyInherentAttrs(::mlir::OperationName opName, ::mlir::NamedAttrList &attrs, llvm::function_ref<::mlir::InFlightDiagnostic()> emitError); static ::llvm::LogicalResult readProperties(::mlir::DialectBytecodeReader &reader, ::mlir::OperationState &state); void writeProperties(::mlir::DialectBytecodeWriter &writer); ::mlir::IntegerAttr getIdAttr() { return ::llvm::cast<::mlir::IntegerAttr>(getProperties().id); } uint32_t getId(); void setIdAttr(::mlir::IntegerAttr attr) { getProperties().id = attr; } void setId(uint32_t attrValue); static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::IntegerAttr id); static BarrierSignalOp create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::IntegerAttr id); static BarrierSignalOp create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::IntegerAttr id); static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::IntegerAttr id); static BarrierSignalOp create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::IntegerAttr id); static BarrierSignalOp create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::IntegerAttr id); static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, uint32_t id); static BarrierSignalOp create(::mlir::OpBuilder &builder, ::mlir::Location location, uint32_t id); static BarrierSignalOp create(::mlir::ImplicitLocOpBuilder &builder, uint32_t id); static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, uint32_t id); static BarrierSignalOp create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, uint32_t id); static BarrierSignalOp create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, uint32_t id); static void build(::mlir::OpBuilder &, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, ::llvm::ArrayRef<::mlir::NamedAttribute> attributes = {}); static BarrierSignalOp create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, ::llvm::ArrayRef<::mlir::NamedAttribute> attributes = {}); static BarrierSignalOp create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, ::llvm::ArrayRef<::mlir::NamedAttribute> attributes = {}); static void build(::mlir::OpBuilder &, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, const Properties &properties, ::llvm::ArrayRef<::mlir::NamedAttribute> discardableAttributes = {}); static BarrierSignalOp create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, const Properties &properties, ::llvm::ArrayRef<::mlir::NamedAttribute> discardableAttributes = {}); static BarrierSignalOp create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, const Properties &properties, ::llvm::ArrayRef<::mlir::NamedAttribute> discardableAttributes = {}); ::llvm::LogicalResult verifyInvariantsImpl(); ::llvm::LogicalResult verifyInvariants(); static ::mlir::ParseResult parse(::mlir::OpAsmParser &parser, ::mlir::OperationState &result); void print(::mlir::OpAsmPrinter &_odsPrinter); private: ::mlir::StringAttr getAttributeNameForIndex(unsigned index) { return getAttributeNameForIndex((*this)->getName(), index); } static ::mlir::StringAttr getAttributeNameForIndex(::mlir::OperationName name, unsigned index) { assert(index < 1 && "invalid attribute index"); assert(name.getStringRef() == getOperationName() && "invalid operation name"); assert(name.isRegistered() && "Operation isn't registered, missing a " "dependent dialect loading?"); return name.getAttributeNames()[index]; } public: }; } // namespace mlir::ROCDL MLIR_DECLARE_EXPLICIT_TYPE_ID(::mlir::ROCDL::BarrierSignalOp) MLIR_DECLARE_EXPLICIT_TYPE_ID(::mlir::ROCDL::detail::BarrierSignalOpGenericAdaptorBase::Properties) namespace mlir::ROCDL { //===----------------------------------------------------------------------===// // ::mlir::ROCDL::BarrierSignalVarOp declarations //===----------------------------------------------------------------------===// namespace detail { class BarrierSignalVarOpGenericAdaptorBase { public: struct Properties { using memberCntTy = ::mlir::IntegerAttr; memberCntTy memberCnt; auto getMemberCnt() const { auto &propStorage = this->memberCnt; return ::llvm::cast<::mlir::IntegerAttr>(propStorage); } void setMemberCnt(const ::mlir::IntegerAttr &propValue) { this->memberCnt = propValue; } bool operator==(const Properties &rhs) const { return rhs.memberCnt == this->memberCnt && true; } bool operator!=(const Properties &rhs) const { return !(*this == rhs); } }; protected: ::mlir::DictionaryAttr odsAttrs; ::std::optional<::mlir::OperationName> odsOpName; Properties properties; ::mlir::RegionRange odsRegions; public: BarrierSignalVarOpGenericAdaptorBase(::mlir::DictionaryAttr attrs, const Properties &properties, ::mlir::RegionRange regions = {}) : odsAttrs(attrs), properties(properties), odsRegions(regions) { if (odsAttrs) odsOpName.emplace("rocdl.s.barrier.signal.var", odsAttrs.getContext()); } BarrierSignalVarOpGenericAdaptorBase(BarrierSignalVarOp op); std::pair getODSOperandIndexAndLength(unsigned index, unsigned odsOperandsSize) { return {index, 1}; } const Properties &getProperties() { return properties; } ::mlir::DictionaryAttr getAttributes() { return odsAttrs; } ::mlir::IntegerAttr getMemberCntAttr() { auto attr = ::llvm::cast<::mlir::IntegerAttr>(getProperties().memberCnt); return attr; } uint32_t getMemberCnt(); }; } // namespace detail template class BarrierSignalVarOpGenericAdaptor : public detail::BarrierSignalVarOpGenericAdaptorBase { using ValueT = ::llvm::detail::ValueOfRange; using Base = detail::BarrierSignalVarOpGenericAdaptorBase; static constexpr int odsIndex_ptr = 0; public: BarrierSignalVarOpGenericAdaptor(RangeT values, ::mlir::DictionaryAttr attrs, const Properties &properties, ::mlir::RegionRange regions = {}) : Base(attrs, properties, regions), odsOperands(values) {} BarrierSignalVarOpGenericAdaptor(RangeT values, ::mlir::DictionaryAttr attrs, ::mlir::PropertyRef properties, ::mlir::RegionRange regions = {}) : BarrierSignalVarOpGenericAdaptor(values, attrs, (properties ? *properties.as() : Properties{}), regions) {} BarrierSignalVarOpGenericAdaptor(RangeT values, ::mlir::DictionaryAttr attrs = nullptr) : BarrierSignalVarOpGenericAdaptor(values, attrs, Properties{}, {}) {} BarrierSignalVarOpGenericAdaptor(RangeT values, const BarrierSignalVarOpGenericAdaptorBase &base) : Base(base), odsOperands(values) {} template >> BarrierSignalVarOpGenericAdaptor(RangeT values, LateInst op) : Base(op), odsOperands(values) {} std::pair getODSOperandIndexAndLength(unsigned index) { return Base::getODSOperandIndexAndLength(index, odsOperands.size()); } RangeT getODSOperands(unsigned index) { auto valueRange = getODSOperandIndexAndLength(index); return {std::next(odsOperands.begin(), valueRange.first), std::next(odsOperands.begin(), valueRange.first + valueRange.second)}; } ValueT getPtr() { return (*getODSOperands(0).begin()); } RangeT getOperands() { return odsOperands; } private: RangeT odsOperands; }; class BarrierSignalVarOpAdaptor : public BarrierSignalVarOpGenericAdaptor<::mlir::ValueRange> { public: using BarrierSignalVarOpGenericAdaptor::BarrierSignalVarOpGenericAdaptor; BarrierSignalVarOpAdaptor(BarrierSignalVarOp op); ::llvm::LogicalResult verify(::mlir::Location loc); }; class BarrierSignalVarOp : public ::mlir::Op { public: using Op::Op; using Op::print; using Adaptor = BarrierSignalVarOpAdaptor; template using GenericAdaptor = BarrierSignalVarOpGenericAdaptor; using FoldAdaptor = GenericAdaptor<::llvm::ArrayRef<::mlir::Attribute>>; static constexpr int odsIndex_ptr = 0; using Properties = FoldAdaptor::Properties; static ::llvm::ArrayRef<::llvm::StringRef> getAttributeNames() { static ::llvm::StringRef attrNames[] = {::llvm::StringRef("memberCnt")}; return ::llvm::ArrayRef(attrNames); } ::mlir::StringAttr getMemberCntAttrName() { return getAttributeNameForIndex(0); } static ::mlir::StringAttr getMemberCntAttrName(::mlir::OperationName name) { return getAttributeNameForIndex(name, 0); } static constexpr ::llvm::StringLiteral getOperationName() { return ::llvm::StringLiteral("rocdl.s.barrier.signal.var"); } std::pair getODSOperandIndexAndLength(unsigned index) { return {index, 1}; } ::mlir::Operation::operand_range getODSOperands(unsigned index) { auto valueRange = getODSOperandIndexAndLength(index); return {std::next(getOperation()->operand_begin(), valueRange.first), std::next(getOperation()->operand_begin(), valueRange.first + valueRange.second)}; } ::mlir::TypedValue<::mlir::LLVM::LLVMPointerType> getPtr() { return ::llvm::cast<::mlir::TypedValue<::mlir::LLVM::LLVMPointerType>>(*getODSOperands(0).begin()); } ::mlir::OpOperand &getPtrMutable() { auto range = getODSOperandIndexAndLength(0); return getOperation()->getOpOperand(range.first); } std::pair getODSResultIndexAndLength(unsigned index) { return {index, 1}; } ::mlir::Operation::result_range getODSResults(unsigned index) { auto valueRange = getODSResultIndexAndLength(index); return {std::next(getOperation()->result_begin(), valueRange.first), std::next(getOperation()->result_begin(), valueRange.first + valueRange.second)}; } static ::llvm::LogicalResult setPropertiesFromAttr(Properties &prop, ::mlir::Attribute attr, ::llvm::function_ref<::mlir::InFlightDiagnostic()> emitError); static ::mlir::Attribute getPropertiesAsAttr(::mlir::MLIRContext *ctx, const Properties &prop); static llvm::hash_code computePropertiesHash(const Properties &prop); static std::optional getInherentAttr(::mlir::MLIRContext *ctx, const Properties &prop, llvm::StringRef name); static void setInherentAttr(Properties &prop, llvm::StringRef name, mlir::Attribute value); static void populateInherentAttrs(::mlir::MLIRContext *ctx, const Properties &prop, ::mlir::NamedAttrList &attrs); static ::llvm::LogicalResult verifyInherentAttrs(::mlir::OperationName opName, ::mlir::NamedAttrList &attrs, llvm::function_ref<::mlir::InFlightDiagnostic()> emitError); static ::llvm::LogicalResult readProperties(::mlir::DialectBytecodeReader &reader, ::mlir::OperationState &state); void writeProperties(::mlir::DialectBytecodeWriter &writer); ::mlir::IntegerAttr getMemberCntAttr() { return ::llvm::cast<::mlir::IntegerAttr>(getProperties().memberCnt); } uint32_t getMemberCnt(); void setMemberCntAttr(::mlir::IntegerAttr attr) { getProperties().memberCnt = attr; } void setMemberCnt(uint32_t attrValue); static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::Value ptr, ::mlir::IntegerAttr memberCnt); static BarrierSignalVarOp create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::Value ptr, ::mlir::IntegerAttr memberCnt); static BarrierSignalVarOp create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::Value ptr, ::mlir::IntegerAttr memberCnt); static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::Value ptr, ::mlir::IntegerAttr memberCnt); static BarrierSignalVarOp create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::Value ptr, ::mlir::IntegerAttr memberCnt); static BarrierSignalVarOp create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::Value ptr, ::mlir::IntegerAttr memberCnt); static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::Value ptr, uint32_t memberCnt); static BarrierSignalVarOp create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::Value ptr, uint32_t memberCnt); static BarrierSignalVarOp create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::Value ptr, uint32_t memberCnt); static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::Value ptr, uint32_t memberCnt); static BarrierSignalVarOp create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::Value ptr, uint32_t memberCnt); static BarrierSignalVarOp create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::Value ptr, uint32_t memberCnt); static void build(::mlir::OpBuilder &, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, ::llvm::ArrayRef<::mlir::NamedAttribute> attributes = {}); static BarrierSignalVarOp create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, ::llvm::ArrayRef<::mlir::NamedAttribute> attributes = {}); static BarrierSignalVarOp create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, ::llvm::ArrayRef<::mlir::NamedAttribute> attributes = {}); static void build(::mlir::OpBuilder &, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, const Properties &properties, ::llvm::ArrayRef<::mlir::NamedAttribute> discardableAttributes = {}); static BarrierSignalVarOp create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, const Properties &properties, ::llvm::ArrayRef<::mlir::NamedAttribute> discardableAttributes = {}); static BarrierSignalVarOp create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, const Properties &properties, ::llvm::ArrayRef<::mlir::NamedAttribute> discardableAttributes = {}); ::llvm::LogicalResult verifyInvariantsImpl(); ::llvm::LogicalResult verifyInvariants(); static ::mlir::ParseResult parse(::mlir::OpAsmParser &parser, ::mlir::OperationState &result); void print(::mlir::OpAsmPrinter &_odsPrinter); private: ::mlir::StringAttr getAttributeNameForIndex(unsigned index) { return getAttributeNameForIndex((*this)->getName(), index); } static ::mlir::StringAttr getAttributeNameForIndex(::mlir::OperationName name, unsigned index) { assert(index < 1 && "invalid attribute index"); assert(name.getStringRef() == getOperationName() && "invalid operation name"); assert(name.isRegistered() && "Operation isn't registered, missing a " "dependent dialect loading?"); return name.getAttributeNames()[index]; } public: }; } // namespace mlir::ROCDL MLIR_DECLARE_EXPLICIT_TYPE_ID(::mlir::ROCDL::BarrierSignalVarOp) MLIR_DECLARE_EXPLICIT_TYPE_ID(::mlir::ROCDL::detail::BarrierSignalVarOpGenericAdaptorBase::Properties) namespace mlir::ROCDL { //===----------------------------------------------------------------------===// // ::mlir::ROCDL::BarrierWaitOp declarations //===----------------------------------------------------------------------===// namespace detail { class BarrierWaitOpGenericAdaptorBase { public: struct Properties { using idTy = ::mlir::IntegerAttr; idTy id; auto getId() const { auto &propStorage = this->id; return ::llvm::cast<::mlir::IntegerAttr>(propStorage); } void setId(const ::mlir::IntegerAttr &propValue) { this->id = propValue; } bool operator==(const Properties &rhs) const { return rhs.id == this->id && true; } bool operator!=(const Properties &rhs) const { return !(*this == rhs); } }; protected: ::mlir::DictionaryAttr odsAttrs; ::std::optional<::mlir::OperationName> odsOpName; Properties properties; ::mlir::RegionRange odsRegions; public: BarrierWaitOpGenericAdaptorBase(::mlir::DictionaryAttr attrs, const Properties &properties, ::mlir::RegionRange regions = {}) : odsAttrs(attrs), properties(properties), odsRegions(regions) { if (odsAttrs) odsOpName.emplace("rocdl.s.barrier.wait", odsAttrs.getContext()); } BarrierWaitOpGenericAdaptorBase(BarrierWaitOp op); std::pair getODSOperandIndexAndLength(unsigned index, unsigned odsOperandsSize) { return {index, 1}; } const Properties &getProperties() { return properties; } ::mlir::DictionaryAttr getAttributes() { return odsAttrs; } ::mlir::IntegerAttr getIdAttr() { auto attr = ::llvm::cast<::mlir::IntegerAttr>(getProperties().id); return attr; } uint16_t getId(); }; } // namespace detail template class BarrierWaitOpGenericAdaptor : public detail::BarrierWaitOpGenericAdaptorBase { using ValueT = ::llvm::detail::ValueOfRange; using Base = detail::BarrierWaitOpGenericAdaptorBase; public: BarrierWaitOpGenericAdaptor(RangeT values, ::mlir::DictionaryAttr attrs, const Properties &properties, ::mlir::RegionRange regions = {}) : Base(attrs, properties, regions), odsOperands(values) {} BarrierWaitOpGenericAdaptor(RangeT values, ::mlir::DictionaryAttr attrs, ::mlir::PropertyRef properties, ::mlir::RegionRange regions = {}) : BarrierWaitOpGenericAdaptor(values, attrs, (properties ? *properties.as() : Properties{}), regions) {} BarrierWaitOpGenericAdaptor(RangeT values, ::mlir::DictionaryAttr attrs = nullptr) : BarrierWaitOpGenericAdaptor(values, attrs, Properties{}, {}) {} BarrierWaitOpGenericAdaptor(RangeT values, const BarrierWaitOpGenericAdaptorBase &base) : Base(base), odsOperands(values) {} template >> BarrierWaitOpGenericAdaptor(RangeT values, LateInst op) : Base(op), odsOperands(values) {} std::pair getODSOperandIndexAndLength(unsigned index) { return Base::getODSOperandIndexAndLength(index, odsOperands.size()); } RangeT getODSOperands(unsigned index) { auto valueRange = getODSOperandIndexAndLength(index); return {std::next(odsOperands.begin(), valueRange.first), std::next(odsOperands.begin(), valueRange.first + valueRange.second)}; } RangeT getOperands() { return odsOperands; } private: RangeT odsOperands; }; class BarrierWaitOpAdaptor : public BarrierWaitOpGenericAdaptor<::mlir::ValueRange> { public: using BarrierWaitOpGenericAdaptor::BarrierWaitOpGenericAdaptor; BarrierWaitOpAdaptor(BarrierWaitOp op); ::llvm::LogicalResult verify(::mlir::Location loc); }; class BarrierWaitOp : public ::mlir::Op { public: using Op::Op; using Op::print; using Adaptor = BarrierWaitOpAdaptor; template using GenericAdaptor = BarrierWaitOpGenericAdaptor; using FoldAdaptor = GenericAdaptor<::llvm::ArrayRef<::mlir::Attribute>>; using Properties = FoldAdaptor::Properties; static ::llvm::ArrayRef<::llvm::StringRef> getAttributeNames() { static ::llvm::StringRef attrNames[] = {::llvm::StringRef("id")}; return ::llvm::ArrayRef(attrNames); } ::mlir::StringAttr getIdAttrName() { return getAttributeNameForIndex(0); } static ::mlir::StringAttr getIdAttrName(::mlir::OperationName name) { return getAttributeNameForIndex(name, 0); } static constexpr ::llvm::StringLiteral getOperationName() { return ::llvm::StringLiteral("rocdl.s.barrier.wait"); } std::pair getODSOperandIndexAndLength(unsigned index) { return {index, 1}; } ::mlir::Operation::operand_range getODSOperands(unsigned index) { auto valueRange = getODSOperandIndexAndLength(index); return {std::next(getOperation()->operand_begin(), valueRange.first), std::next(getOperation()->operand_begin(), valueRange.first + valueRange.second)}; } std::pair getODSResultIndexAndLength(unsigned index) { return {index, 1}; } ::mlir::Operation::result_range getODSResults(unsigned index) { auto valueRange = getODSResultIndexAndLength(index); return {std::next(getOperation()->result_begin(), valueRange.first), std::next(getOperation()->result_begin(), valueRange.first + valueRange.second)}; } static ::llvm::LogicalResult setPropertiesFromAttr(Properties &prop, ::mlir::Attribute attr, ::llvm::function_ref<::mlir::InFlightDiagnostic()> emitError); static ::mlir::Attribute getPropertiesAsAttr(::mlir::MLIRContext *ctx, const Properties &prop); static llvm::hash_code computePropertiesHash(const Properties &prop); static std::optional getInherentAttr(::mlir::MLIRContext *ctx, const Properties &prop, llvm::StringRef name); static void setInherentAttr(Properties &prop, llvm::StringRef name, mlir::Attribute value); static void populateInherentAttrs(::mlir::MLIRContext *ctx, const Properties &prop, ::mlir::NamedAttrList &attrs); static ::llvm::LogicalResult verifyInherentAttrs(::mlir::OperationName opName, ::mlir::NamedAttrList &attrs, llvm::function_ref<::mlir::InFlightDiagnostic()> emitError); static ::llvm::LogicalResult readProperties(::mlir::DialectBytecodeReader &reader, ::mlir::OperationState &state); void writeProperties(::mlir::DialectBytecodeWriter &writer); ::mlir::IntegerAttr getIdAttr() { return ::llvm::cast<::mlir::IntegerAttr>(getProperties().id); } uint16_t getId(); void setIdAttr(::mlir::IntegerAttr attr) { getProperties().id = attr; } void setId(uint16_t attrValue); static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::IntegerAttr id); static BarrierWaitOp create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::IntegerAttr id); static BarrierWaitOp create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::IntegerAttr id); static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::IntegerAttr id); static BarrierWaitOp create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::IntegerAttr id); static BarrierWaitOp create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::IntegerAttr id); static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, uint16_t id); static BarrierWaitOp create(::mlir::OpBuilder &builder, ::mlir::Location location, uint16_t id); static BarrierWaitOp create(::mlir::ImplicitLocOpBuilder &builder, uint16_t id); static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, uint16_t id); static BarrierWaitOp create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, uint16_t id); static BarrierWaitOp create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, uint16_t id); static void build(::mlir::OpBuilder &, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, ::llvm::ArrayRef<::mlir::NamedAttribute> attributes = {}); static BarrierWaitOp create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, ::llvm::ArrayRef<::mlir::NamedAttribute> attributes = {}); static BarrierWaitOp create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, ::llvm::ArrayRef<::mlir::NamedAttribute> attributes = {}); static void build(::mlir::OpBuilder &, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, const Properties &properties, ::llvm::ArrayRef<::mlir::NamedAttribute> discardableAttributes = {}); static BarrierWaitOp create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, const Properties &properties, ::llvm::ArrayRef<::mlir::NamedAttribute> discardableAttributes = {}); static BarrierWaitOp create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, const Properties &properties, ::llvm::ArrayRef<::mlir::NamedAttribute> discardableAttributes = {}); ::llvm::LogicalResult verifyInvariantsImpl(); ::llvm::LogicalResult verifyInvariants(); static ::mlir::ParseResult parse(::mlir::OpAsmParser &parser, ::mlir::OperationState &result); void print(::mlir::OpAsmPrinter &_odsPrinter); private: ::mlir::StringAttr getAttributeNameForIndex(unsigned index) { return getAttributeNameForIndex((*this)->getName(), index); } static ::mlir::StringAttr getAttributeNameForIndex(::mlir::OperationName name, unsigned index) { assert(index < 1 && "invalid attribute index"); assert(name.getStringRef() == getOperationName() && "invalid operation name"); assert(name.isRegistered() && "Operation isn't registered, missing a " "dependent dialect loading?"); return name.getAttributeNames()[index]; } public: }; } // namespace mlir::ROCDL MLIR_DECLARE_EXPLICIT_TYPE_ID(::mlir::ROCDL::BarrierWaitOp) MLIR_DECLARE_EXPLICIT_TYPE_ID(::mlir::ROCDL::detail::BarrierWaitOpGenericAdaptorBase::Properties) namespace mlir::ROCDL { //===----------------------------------------------------------------------===// // ::mlir::ROCDL::BlockIdXOp declarations //===----------------------------------------------------------------------===// namespace detail { class BlockIdXOpGenericAdaptorBase { public: struct Properties { using rangeTy = ::mlir::LLVM::ConstantRangeAttr; rangeTy range; auto getRange() const { auto &propStorage = this->range; return ::llvm::dyn_cast_or_null<::mlir::LLVM::ConstantRangeAttr>(propStorage); } void setRange(const ::mlir::LLVM::ConstantRangeAttr &propValue) { this->range = propValue; } bool operator==(const Properties &rhs) const { return rhs.range == this->range && true; } bool operator!=(const Properties &rhs) const { return !(*this == rhs); } }; protected: ::mlir::DictionaryAttr odsAttrs; ::std::optional<::mlir::OperationName> odsOpName; Properties properties; ::mlir::RegionRange odsRegions; public: BlockIdXOpGenericAdaptorBase(::mlir::DictionaryAttr attrs, const Properties &properties, ::mlir::RegionRange regions = {}) : odsAttrs(attrs), properties(properties), odsRegions(regions) { if (odsAttrs) odsOpName.emplace("rocdl.workgroup.id.x", odsAttrs.getContext()); } BlockIdXOpGenericAdaptorBase(BlockIdXOp op); std::pair getODSOperandIndexAndLength(unsigned index, unsigned odsOperandsSize) { return {index, 1}; } const Properties &getProperties() { return properties; } ::mlir::DictionaryAttr getAttributes() { return odsAttrs; } ::mlir::LLVM::ConstantRangeAttr getRangeAttr() { auto attr = ::llvm::dyn_cast_or_null<::mlir::LLVM::ConstantRangeAttr>(getProperties().range); return attr; } ::std::optional<::mlir::LLVM::ConstantRangeAttr> getRange(); }; } // namespace detail template class BlockIdXOpGenericAdaptor : public detail::BlockIdXOpGenericAdaptorBase { using ValueT = ::llvm::detail::ValueOfRange; using Base = detail::BlockIdXOpGenericAdaptorBase; public: BlockIdXOpGenericAdaptor(RangeT values, ::mlir::DictionaryAttr attrs, const Properties &properties, ::mlir::RegionRange regions = {}) : Base(attrs, properties, regions), odsOperands(values) {} BlockIdXOpGenericAdaptor(RangeT values, ::mlir::DictionaryAttr attrs, ::mlir::PropertyRef properties, ::mlir::RegionRange regions = {}) : BlockIdXOpGenericAdaptor(values, attrs, (properties ? *properties.as() : Properties{}), regions) {} BlockIdXOpGenericAdaptor(RangeT values, ::mlir::DictionaryAttr attrs = nullptr) : BlockIdXOpGenericAdaptor(values, attrs, Properties{}, {}) {} BlockIdXOpGenericAdaptor(RangeT values, const BlockIdXOpGenericAdaptorBase &base) : Base(base), odsOperands(values) {} template >> BlockIdXOpGenericAdaptor(RangeT values, LateInst op) : Base(op), odsOperands(values) {} std::pair getODSOperandIndexAndLength(unsigned index) { return Base::getODSOperandIndexAndLength(index, odsOperands.size()); } RangeT getODSOperands(unsigned index) { auto valueRange = getODSOperandIndexAndLength(index); return {std::next(odsOperands.begin(), valueRange.first), std::next(odsOperands.begin(), valueRange.first + valueRange.second)}; } RangeT getOperands() { return odsOperands; } private: RangeT odsOperands; }; class BlockIdXOpAdaptor : public BlockIdXOpGenericAdaptor<::mlir::ValueRange> { public: using BlockIdXOpGenericAdaptor::BlockIdXOpGenericAdaptor; BlockIdXOpAdaptor(BlockIdXOp op); ::llvm::LogicalResult verify(::mlir::Location loc); }; class BlockIdXOp : public ::mlir::Op::Impl, ::mlir::OpTrait::ZeroSuccessors, ::mlir::OpTrait::ZeroOperands, ::mlir::OpTrait::OpInvariants, ::mlir::BytecodeOpInterface::Trait, ::mlir::ConditionallySpeculatable::Trait, ::mlir::OpTrait::AlwaysSpeculatableImplTrait, ::mlir::MemoryEffectOpInterface::Trait> { public: using Op::Op; using Op::print; using Adaptor = BlockIdXOpAdaptor; template using GenericAdaptor = BlockIdXOpGenericAdaptor; using FoldAdaptor = GenericAdaptor<::llvm::ArrayRef<::mlir::Attribute>>; using Properties = FoldAdaptor::Properties; static ::llvm::ArrayRef<::llvm::StringRef> getAttributeNames() { static ::llvm::StringRef attrNames[] = {::llvm::StringRef("range")}; return ::llvm::ArrayRef(attrNames); } ::mlir::StringAttr getRangeAttrName() { return getAttributeNameForIndex(0); } static ::mlir::StringAttr getRangeAttrName(::mlir::OperationName name) { return getAttributeNameForIndex(name, 0); } static constexpr ::llvm::StringLiteral getOperationName() { return ::llvm::StringLiteral("rocdl.workgroup.id.x"); } std::pair getODSOperandIndexAndLength(unsigned index) { return {index, 1}; } ::mlir::Operation::operand_range getODSOperands(unsigned index) { auto valueRange = getODSOperandIndexAndLength(index); return {std::next(getOperation()->operand_begin(), valueRange.first), std::next(getOperation()->operand_begin(), valueRange.first + valueRange.second)}; } std::pair getODSResultIndexAndLength(unsigned index) { return {index, 1}; } ::mlir::Operation::result_range getODSResults(unsigned index) { auto valueRange = getODSResultIndexAndLength(index); return {std::next(getOperation()->result_begin(), valueRange.first), std::next(getOperation()->result_begin(), valueRange.first + valueRange.second)}; } ::mlir::TypedValue<::mlir::Type> getRes() { return ::llvm::cast<::mlir::TypedValue<::mlir::Type>>(*getODSResults(0).begin()); } static ::llvm::LogicalResult setPropertiesFromAttr(Properties &prop, ::mlir::Attribute attr, ::llvm::function_ref<::mlir::InFlightDiagnostic()> emitError); static ::mlir::Attribute getPropertiesAsAttr(::mlir::MLIRContext *ctx, const Properties &prop); static llvm::hash_code computePropertiesHash(const Properties &prop); static std::optional getInherentAttr(::mlir::MLIRContext *ctx, const Properties &prop, llvm::StringRef name); static void setInherentAttr(Properties &prop, llvm::StringRef name, mlir::Attribute value); static void populateInherentAttrs(::mlir::MLIRContext *ctx, const Properties &prop, ::mlir::NamedAttrList &attrs); static ::llvm::LogicalResult verifyInherentAttrs(::mlir::OperationName opName, ::mlir::NamedAttrList &attrs, llvm::function_ref<::mlir::InFlightDiagnostic()> emitError); static ::llvm::LogicalResult readProperties(::mlir::DialectBytecodeReader &reader, ::mlir::OperationState &state); void writeProperties(::mlir::DialectBytecodeWriter &writer); ::mlir::LLVM::ConstantRangeAttr getRangeAttr() { return ::llvm::dyn_cast_or_null<::mlir::LLVM::ConstantRangeAttr>(getProperties().range); } ::std::optional<::mlir::LLVM::ConstantRangeAttr> getRange(); void setRangeAttr(::mlir::LLVM::ConstantRangeAttr attr) { getProperties().range = attr; } ::mlir::Attribute removeRangeAttr() { auto attr = getProperties().range; getProperties().range = {}; return attr; } static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, Type resultType); static BlockIdXOp create(::mlir::OpBuilder &builder, ::mlir::Location location, Type resultType); static BlockIdXOp create(::mlir::ImplicitLocOpBuilder &builder, Type resultType); static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::Type res, /*optional*/::mlir::LLVM::ConstantRangeAttr range); static BlockIdXOp create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::Type res, /*optional*/::mlir::LLVM::ConstantRangeAttr range); static BlockIdXOp create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::Type res, /*optional*/::mlir::LLVM::ConstantRangeAttr range); static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, /*optional*/::mlir::LLVM::ConstantRangeAttr range); static BlockIdXOp create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, /*optional*/::mlir::LLVM::ConstantRangeAttr range); static BlockIdXOp create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, /*optional*/::mlir::LLVM::ConstantRangeAttr range); static void build(::mlir::OpBuilder &, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, ::llvm::ArrayRef<::mlir::NamedAttribute> attributes = {}); static BlockIdXOp create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, ::llvm::ArrayRef<::mlir::NamedAttribute> attributes = {}); static BlockIdXOp create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, ::llvm::ArrayRef<::mlir::NamedAttribute> attributes = {}); static void build(::mlir::OpBuilder &, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, const Properties &properties, ::llvm::ArrayRef<::mlir::NamedAttribute> discardableAttributes = {}); static BlockIdXOp create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, const Properties &properties, ::llvm::ArrayRef<::mlir::NamedAttribute> discardableAttributes = {}); static BlockIdXOp create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, const Properties &properties, ::llvm::ArrayRef<::mlir::NamedAttribute> discardableAttributes = {}); ::llvm::LogicalResult verifyInvariantsImpl(); ::llvm::LogicalResult verifyInvariants(); static ::mlir::ParseResult parse(::mlir::OpAsmParser &parser, ::mlir::OperationState &result); void print(::mlir::OpAsmPrinter &_odsPrinter); void getEffects(::llvm::SmallVectorImpl<::mlir::SideEffects::EffectInstance<::mlir::MemoryEffects::Effect>> &effects); private: ::mlir::StringAttr getAttributeNameForIndex(unsigned index) { return getAttributeNameForIndex((*this)->getName(), index); } static ::mlir::StringAttr getAttributeNameForIndex(::mlir::OperationName name, unsigned index) { assert(index < 1 && "invalid attribute index"); assert(name.getStringRef() == getOperationName() && "invalid operation name"); assert(name.isRegistered() && "Operation isn't registered, missing a " "dependent dialect loading?"); return name.getAttributeNames()[index]; } public: }; } // namespace mlir::ROCDL MLIR_DECLARE_EXPLICIT_TYPE_ID(::mlir::ROCDL::BlockIdXOp) MLIR_DECLARE_EXPLICIT_TYPE_ID(::mlir::ROCDL::detail::BlockIdXOpGenericAdaptorBase::Properties) namespace mlir::ROCDL { //===----------------------------------------------------------------------===// // ::mlir::ROCDL::BlockIdYOp declarations //===----------------------------------------------------------------------===// namespace detail { class BlockIdYOpGenericAdaptorBase { public: struct Properties { using rangeTy = ::mlir::LLVM::ConstantRangeAttr; rangeTy range; auto getRange() const { auto &propStorage = this->range; return ::llvm::dyn_cast_or_null<::mlir::LLVM::ConstantRangeAttr>(propStorage); } void setRange(const ::mlir::LLVM::ConstantRangeAttr &propValue) { this->range = propValue; } bool operator==(const Properties &rhs) const { return rhs.range == this->range && true; } bool operator!=(const Properties &rhs) const { return !(*this == rhs); } }; protected: ::mlir::DictionaryAttr odsAttrs; ::std::optional<::mlir::OperationName> odsOpName; Properties properties; ::mlir::RegionRange odsRegions; public: BlockIdYOpGenericAdaptorBase(::mlir::DictionaryAttr attrs, const Properties &properties, ::mlir::RegionRange regions = {}) : odsAttrs(attrs), properties(properties), odsRegions(regions) { if (odsAttrs) odsOpName.emplace("rocdl.workgroup.id.y", odsAttrs.getContext()); } BlockIdYOpGenericAdaptorBase(BlockIdYOp op); std::pair getODSOperandIndexAndLength(unsigned index, unsigned odsOperandsSize) { return {index, 1}; } const Properties &getProperties() { return properties; } ::mlir::DictionaryAttr getAttributes() { return odsAttrs; } ::mlir::LLVM::ConstantRangeAttr getRangeAttr() { auto attr = ::llvm::dyn_cast_or_null<::mlir::LLVM::ConstantRangeAttr>(getProperties().range); return attr; } ::std::optional<::mlir::LLVM::ConstantRangeAttr> getRange(); }; } // namespace detail template class BlockIdYOpGenericAdaptor : public detail::BlockIdYOpGenericAdaptorBase { using ValueT = ::llvm::detail::ValueOfRange; using Base = detail::BlockIdYOpGenericAdaptorBase; public: BlockIdYOpGenericAdaptor(RangeT values, ::mlir::DictionaryAttr attrs, const Properties &properties, ::mlir::RegionRange regions = {}) : Base(attrs, properties, regions), odsOperands(values) {} BlockIdYOpGenericAdaptor(RangeT values, ::mlir::DictionaryAttr attrs, ::mlir::PropertyRef properties, ::mlir::RegionRange regions = {}) : BlockIdYOpGenericAdaptor(values, attrs, (properties ? *properties.as() : Properties{}), regions) {} BlockIdYOpGenericAdaptor(RangeT values, ::mlir::DictionaryAttr attrs = nullptr) : BlockIdYOpGenericAdaptor(values, attrs, Properties{}, {}) {} BlockIdYOpGenericAdaptor(RangeT values, const BlockIdYOpGenericAdaptorBase &base) : Base(base), odsOperands(values) {} template >> BlockIdYOpGenericAdaptor(RangeT values, LateInst op) : Base(op), odsOperands(values) {} std::pair getODSOperandIndexAndLength(unsigned index) { return Base::getODSOperandIndexAndLength(index, odsOperands.size()); } RangeT getODSOperands(unsigned index) { auto valueRange = getODSOperandIndexAndLength(index); return {std::next(odsOperands.begin(), valueRange.first), std::next(odsOperands.begin(), valueRange.first + valueRange.second)}; } RangeT getOperands() { return odsOperands; } private: RangeT odsOperands; }; class BlockIdYOpAdaptor : public BlockIdYOpGenericAdaptor<::mlir::ValueRange> { public: using BlockIdYOpGenericAdaptor::BlockIdYOpGenericAdaptor; BlockIdYOpAdaptor(BlockIdYOp op); ::llvm::LogicalResult verify(::mlir::Location loc); }; class BlockIdYOp : public ::mlir::Op::Impl, ::mlir::OpTrait::ZeroSuccessors, ::mlir::OpTrait::ZeroOperands, ::mlir::OpTrait::OpInvariants, ::mlir::BytecodeOpInterface::Trait, ::mlir::ConditionallySpeculatable::Trait, ::mlir::OpTrait::AlwaysSpeculatableImplTrait, ::mlir::MemoryEffectOpInterface::Trait> { public: using Op::Op; using Op::print; using Adaptor = BlockIdYOpAdaptor; template using GenericAdaptor = BlockIdYOpGenericAdaptor; using FoldAdaptor = GenericAdaptor<::llvm::ArrayRef<::mlir::Attribute>>; using Properties = FoldAdaptor::Properties; static ::llvm::ArrayRef<::llvm::StringRef> getAttributeNames() { static ::llvm::StringRef attrNames[] = {::llvm::StringRef("range")}; return ::llvm::ArrayRef(attrNames); } ::mlir::StringAttr getRangeAttrName() { return getAttributeNameForIndex(0); } static ::mlir::StringAttr getRangeAttrName(::mlir::OperationName name) { return getAttributeNameForIndex(name, 0); } static constexpr ::llvm::StringLiteral getOperationName() { return ::llvm::StringLiteral("rocdl.workgroup.id.y"); } std::pair getODSOperandIndexAndLength(unsigned index) { return {index, 1}; } ::mlir::Operation::operand_range getODSOperands(unsigned index) { auto valueRange = getODSOperandIndexAndLength(index); return {std::next(getOperation()->operand_begin(), valueRange.first), std::next(getOperation()->operand_begin(), valueRange.first + valueRange.second)}; } std::pair getODSResultIndexAndLength(unsigned index) { return {index, 1}; } ::mlir::Operation::result_range getODSResults(unsigned index) { auto valueRange = getODSResultIndexAndLength(index); return {std::next(getOperation()->result_begin(), valueRange.first), std::next(getOperation()->result_begin(), valueRange.first + valueRange.second)}; } ::mlir::TypedValue<::mlir::Type> getRes() { return ::llvm::cast<::mlir::TypedValue<::mlir::Type>>(*getODSResults(0).begin()); } static ::llvm::LogicalResult setPropertiesFromAttr(Properties &prop, ::mlir::Attribute attr, ::llvm::function_ref<::mlir::InFlightDiagnostic()> emitError); static ::mlir::Attribute getPropertiesAsAttr(::mlir::MLIRContext *ctx, const Properties &prop); static llvm::hash_code computePropertiesHash(const Properties &prop); static std::optional getInherentAttr(::mlir::MLIRContext *ctx, const Properties &prop, llvm::StringRef name); static void setInherentAttr(Properties &prop, llvm::StringRef name, mlir::Attribute value); static void populateInherentAttrs(::mlir::MLIRContext *ctx, const Properties &prop, ::mlir::NamedAttrList &attrs); static ::llvm::LogicalResult verifyInherentAttrs(::mlir::OperationName opName, ::mlir::NamedAttrList &attrs, llvm::function_ref<::mlir::InFlightDiagnostic()> emitError); static ::llvm::LogicalResult readProperties(::mlir::DialectBytecodeReader &reader, ::mlir::OperationState &state); void writeProperties(::mlir::DialectBytecodeWriter &writer); ::mlir::LLVM::ConstantRangeAttr getRangeAttr() { return ::llvm::dyn_cast_or_null<::mlir::LLVM::ConstantRangeAttr>(getProperties().range); } ::std::optional<::mlir::LLVM::ConstantRangeAttr> getRange(); void setRangeAttr(::mlir::LLVM::ConstantRangeAttr attr) { getProperties().range = attr; } ::mlir::Attribute removeRangeAttr() { auto attr = getProperties().range; getProperties().range = {}; return attr; } static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, Type resultType); static BlockIdYOp create(::mlir::OpBuilder &builder, ::mlir::Location location, Type resultType); static BlockIdYOp create(::mlir::ImplicitLocOpBuilder &builder, Type resultType); static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::Type res, /*optional*/::mlir::LLVM::ConstantRangeAttr range); static BlockIdYOp create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::Type res, /*optional*/::mlir::LLVM::ConstantRangeAttr range); static BlockIdYOp create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::Type res, /*optional*/::mlir::LLVM::ConstantRangeAttr range); static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, /*optional*/::mlir::LLVM::ConstantRangeAttr range); static BlockIdYOp create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, /*optional*/::mlir::LLVM::ConstantRangeAttr range); static BlockIdYOp create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, /*optional*/::mlir::LLVM::ConstantRangeAttr range); static void build(::mlir::OpBuilder &, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, ::llvm::ArrayRef<::mlir::NamedAttribute> attributes = {}); static BlockIdYOp create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, ::llvm::ArrayRef<::mlir::NamedAttribute> attributes = {}); static BlockIdYOp create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, ::llvm::ArrayRef<::mlir::NamedAttribute> attributes = {}); static void build(::mlir::OpBuilder &, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, const Properties &properties, ::llvm::ArrayRef<::mlir::NamedAttribute> discardableAttributes = {}); static BlockIdYOp create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, const Properties &properties, ::llvm::ArrayRef<::mlir::NamedAttribute> discardableAttributes = {}); static BlockIdYOp create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, const Properties &properties, ::llvm::ArrayRef<::mlir::NamedAttribute> discardableAttributes = {}); ::llvm::LogicalResult verifyInvariantsImpl(); ::llvm::LogicalResult verifyInvariants(); static ::mlir::ParseResult parse(::mlir::OpAsmParser &parser, ::mlir::OperationState &result); void print(::mlir::OpAsmPrinter &_odsPrinter); void getEffects(::llvm::SmallVectorImpl<::mlir::SideEffects::EffectInstance<::mlir::MemoryEffects::Effect>> &effects); private: ::mlir::StringAttr getAttributeNameForIndex(unsigned index) { return getAttributeNameForIndex((*this)->getName(), index); } static ::mlir::StringAttr getAttributeNameForIndex(::mlir::OperationName name, unsigned index) { assert(index < 1 && "invalid attribute index"); assert(name.getStringRef() == getOperationName() && "invalid operation name"); assert(name.isRegistered() && "Operation isn't registered, missing a " "dependent dialect loading?"); return name.getAttributeNames()[index]; } public: }; } // namespace mlir::ROCDL MLIR_DECLARE_EXPLICIT_TYPE_ID(::mlir::ROCDL::BlockIdYOp) MLIR_DECLARE_EXPLICIT_TYPE_ID(::mlir::ROCDL::detail::BlockIdYOpGenericAdaptorBase::Properties) namespace mlir::ROCDL { //===----------------------------------------------------------------------===// // ::mlir::ROCDL::BlockIdZOp declarations //===----------------------------------------------------------------------===// namespace detail { class BlockIdZOpGenericAdaptorBase { public: struct Properties { using rangeTy = ::mlir::LLVM::ConstantRangeAttr; rangeTy range; auto getRange() const { auto &propStorage = this->range; return ::llvm::dyn_cast_or_null<::mlir::LLVM::ConstantRangeAttr>(propStorage); } void setRange(const ::mlir::LLVM::ConstantRangeAttr &propValue) { this->range = propValue; } bool operator==(const Properties &rhs) const { return rhs.range == this->range && true; } bool operator!=(const Properties &rhs) const { return !(*this == rhs); } }; protected: ::mlir::DictionaryAttr odsAttrs; ::std::optional<::mlir::OperationName> odsOpName; Properties properties; ::mlir::RegionRange odsRegions; public: BlockIdZOpGenericAdaptorBase(::mlir::DictionaryAttr attrs, const Properties &properties, ::mlir::RegionRange regions = {}) : odsAttrs(attrs), properties(properties), odsRegions(regions) { if (odsAttrs) odsOpName.emplace("rocdl.workgroup.id.z", odsAttrs.getContext()); } BlockIdZOpGenericAdaptorBase(BlockIdZOp op); std::pair getODSOperandIndexAndLength(unsigned index, unsigned odsOperandsSize) { return {index, 1}; } const Properties &getProperties() { return properties; } ::mlir::DictionaryAttr getAttributes() { return odsAttrs; } ::mlir::LLVM::ConstantRangeAttr getRangeAttr() { auto attr = ::llvm::dyn_cast_or_null<::mlir::LLVM::ConstantRangeAttr>(getProperties().range); return attr; } ::std::optional<::mlir::LLVM::ConstantRangeAttr> getRange(); }; } // namespace detail template class BlockIdZOpGenericAdaptor : public detail::BlockIdZOpGenericAdaptorBase { using ValueT = ::llvm::detail::ValueOfRange; using Base = detail::BlockIdZOpGenericAdaptorBase; public: BlockIdZOpGenericAdaptor(RangeT values, ::mlir::DictionaryAttr attrs, const Properties &properties, ::mlir::RegionRange regions = {}) : Base(attrs, properties, regions), odsOperands(values) {} BlockIdZOpGenericAdaptor(RangeT values, ::mlir::DictionaryAttr attrs, ::mlir::PropertyRef properties, ::mlir::RegionRange regions = {}) : BlockIdZOpGenericAdaptor(values, attrs, (properties ? *properties.as() : Properties{}), regions) {} BlockIdZOpGenericAdaptor(RangeT values, ::mlir::DictionaryAttr attrs = nullptr) : BlockIdZOpGenericAdaptor(values, attrs, Properties{}, {}) {} BlockIdZOpGenericAdaptor(RangeT values, const BlockIdZOpGenericAdaptorBase &base) : Base(base), odsOperands(values) {} template >> BlockIdZOpGenericAdaptor(RangeT values, LateInst op) : Base(op), odsOperands(values) {} std::pair getODSOperandIndexAndLength(unsigned index) { return Base::getODSOperandIndexAndLength(index, odsOperands.size()); } RangeT getODSOperands(unsigned index) { auto valueRange = getODSOperandIndexAndLength(index); return {std::next(odsOperands.begin(), valueRange.first), std::next(odsOperands.begin(), valueRange.first + valueRange.second)}; } RangeT getOperands() { return odsOperands; } private: RangeT odsOperands; }; class BlockIdZOpAdaptor : public BlockIdZOpGenericAdaptor<::mlir::ValueRange> { public: using BlockIdZOpGenericAdaptor::BlockIdZOpGenericAdaptor; BlockIdZOpAdaptor(BlockIdZOp op); ::llvm::LogicalResult verify(::mlir::Location loc); }; class BlockIdZOp : public ::mlir::Op::Impl, ::mlir::OpTrait::ZeroSuccessors, ::mlir::OpTrait::ZeroOperands, ::mlir::OpTrait::OpInvariants, ::mlir::BytecodeOpInterface::Trait, ::mlir::ConditionallySpeculatable::Trait, ::mlir::OpTrait::AlwaysSpeculatableImplTrait, ::mlir::MemoryEffectOpInterface::Trait> { public: using Op::Op; using Op::print; using Adaptor = BlockIdZOpAdaptor; template using GenericAdaptor = BlockIdZOpGenericAdaptor; using FoldAdaptor = GenericAdaptor<::llvm::ArrayRef<::mlir::Attribute>>; using Properties = FoldAdaptor::Properties; static ::llvm::ArrayRef<::llvm::StringRef> getAttributeNames() { static ::llvm::StringRef attrNames[] = {::llvm::StringRef("range")}; return ::llvm::ArrayRef(attrNames); } ::mlir::StringAttr getRangeAttrName() { return getAttributeNameForIndex(0); } static ::mlir::StringAttr getRangeAttrName(::mlir::OperationName name) { return getAttributeNameForIndex(name, 0); } static constexpr ::llvm::StringLiteral getOperationName() { return ::llvm::StringLiteral("rocdl.workgroup.id.z"); } std::pair getODSOperandIndexAndLength(unsigned index) { return {index, 1}; } ::mlir::Operation::operand_range getODSOperands(unsigned index) { auto valueRange = getODSOperandIndexAndLength(index); return {std::next(getOperation()->operand_begin(), valueRange.first), std::next(getOperation()->operand_begin(), valueRange.first + valueRange.second)}; } std::pair getODSResultIndexAndLength(unsigned index) { return {index, 1}; } ::mlir::Operation::result_range getODSResults(unsigned index) { auto valueRange = getODSResultIndexAndLength(index); return {std::next(getOperation()->result_begin(), valueRange.first), std::next(getOperation()->result_begin(), valueRange.first + valueRange.second)}; } ::mlir::TypedValue<::mlir::Type> getRes() { return ::llvm::cast<::mlir::TypedValue<::mlir::Type>>(*getODSResults(0).begin()); } static ::llvm::LogicalResult setPropertiesFromAttr(Properties &prop, ::mlir::Attribute attr, ::llvm::function_ref<::mlir::InFlightDiagnostic()> emitError); static ::mlir::Attribute getPropertiesAsAttr(::mlir::MLIRContext *ctx, const Properties &prop); static llvm::hash_code computePropertiesHash(const Properties &prop); static std::optional getInherentAttr(::mlir::MLIRContext *ctx, const Properties &prop, llvm::StringRef name); static void setInherentAttr(Properties &prop, llvm::StringRef name, mlir::Attribute value); static void populateInherentAttrs(::mlir::MLIRContext *ctx, const Properties &prop, ::mlir::NamedAttrList &attrs); static ::llvm::LogicalResult verifyInherentAttrs(::mlir::OperationName opName, ::mlir::NamedAttrList &attrs, llvm::function_ref<::mlir::InFlightDiagnostic()> emitError); static ::llvm::LogicalResult readProperties(::mlir::DialectBytecodeReader &reader, ::mlir::OperationState &state); void writeProperties(::mlir::DialectBytecodeWriter &writer); ::mlir::LLVM::ConstantRangeAttr getRangeAttr() { return ::llvm::dyn_cast_or_null<::mlir::LLVM::ConstantRangeAttr>(getProperties().range); } ::std::optional<::mlir::LLVM::ConstantRangeAttr> getRange(); void setRangeAttr(::mlir::LLVM::ConstantRangeAttr attr) { getProperties().range = attr; } ::mlir::Attribute removeRangeAttr() { auto attr = getProperties().range; getProperties().range = {}; return attr; } static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, Type resultType); static BlockIdZOp create(::mlir::OpBuilder &builder, ::mlir::Location location, Type resultType); static BlockIdZOp create(::mlir::ImplicitLocOpBuilder &builder, Type resultType); static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::Type res, /*optional*/::mlir::LLVM::ConstantRangeAttr range); static BlockIdZOp create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::Type res, /*optional*/::mlir::LLVM::ConstantRangeAttr range); static BlockIdZOp create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::Type res, /*optional*/::mlir::LLVM::ConstantRangeAttr range); static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, /*optional*/::mlir::LLVM::ConstantRangeAttr range); static BlockIdZOp create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, /*optional*/::mlir::LLVM::ConstantRangeAttr range); static BlockIdZOp create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, /*optional*/::mlir::LLVM::ConstantRangeAttr range); static void build(::mlir::OpBuilder &, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, ::llvm::ArrayRef<::mlir::NamedAttribute> attributes = {}); static BlockIdZOp create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, ::llvm::ArrayRef<::mlir::NamedAttribute> attributes = {}); static BlockIdZOp create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, ::llvm::ArrayRef<::mlir::NamedAttribute> attributes = {}); static void build(::mlir::OpBuilder &, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, const Properties &properties, ::llvm::ArrayRef<::mlir::NamedAttribute> discardableAttributes = {}); static BlockIdZOp create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, const Properties &properties, ::llvm::ArrayRef<::mlir::NamedAttribute> discardableAttributes = {}); static BlockIdZOp create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, const Properties &properties, ::llvm::ArrayRef<::mlir::NamedAttribute> discardableAttributes = {}); ::llvm::LogicalResult verifyInvariantsImpl(); ::llvm::LogicalResult verifyInvariants(); static ::mlir::ParseResult parse(::mlir::OpAsmParser &parser, ::mlir::OperationState &result); void print(::mlir::OpAsmPrinter &_odsPrinter); void getEffects(::llvm::SmallVectorImpl<::mlir::SideEffects::EffectInstance<::mlir::MemoryEffects::Effect>> &effects); private: ::mlir::StringAttr getAttributeNameForIndex(unsigned index) { return getAttributeNameForIndex((*this)->getName(), index); } static ::mlir::StringAttr getAttributeNameForIndex(::mlir::OperationName name, unsigned index) { assert(index < 1 && "invalid attribute index"); assert(name.getStringRef() == getOperationName() && "invalid operation name"); assert(name.isRegistered() && "Operation isn't registered, missing a " "dependent dialect loading?"); return name.getAttributeNames()[index]; } public: }; } // namespace mlir::ROCDL MLIR_DECLARE_EXPLICIT_TYPE_ID(::mlir::ROCDL::BlockIdZOp) MLIR_DECLARE_EXPLICIT_TYPE_ID(::mlir::ROCDL::detail::BlockIdZOpGenericAdaptorBase::Properties) namespace mlir::ROCDL { //===----------------------------------------------------------------------===// // ::mlir::ROCDL::ClusterIdXOp declarations //===----------------------------------------------------------------------===// namespace detail { class ClusterIdXOpGenericAdaptorBase { public: struct Properties { using rangeTy = ::mlir::LLVM::ConstantRangeAttr; rangeTy range; auto getRange() const { auto &propStorage = this->range; return ::llvm::dyn_cast_or_null<::mlir::LLVM::ConstantRangeAttr>(propStorage); } void setRange(const ::mlir::LLVM::ConstantRangeAttr &propValue) { this->range = propValue; } bool operator==(const Properties &rhs) const { return rhs.range == this->range && true; } bool operator!=(const Properties &rhs) const { return !(*this == rhs); } }; protected: ::mlir::DictionaryAttr odsAttrs; ::std::optional<::mlir::OperationName> odsOpName; Properties properties; ::mlir::RegionRange odsRegions; public: ClusterIdXOpGenericAdaptorBase(::mlir::DictionaryAttr attrs, const Properties &properties, ::mlir::RegionRange regions = {}) : odsAttrs(attrs), properties(properties), odsRegions(regions) { if (odsAttrs) odsOpName.emplace("rocdl.cluster.id.x", odsAttrs.getContext()); } ClusterIdXOpGenericAdaptorBase(ClusterIdXOp op); std::pair getODSOperandIndexAndLength(unsigned index, unsigned odsOperandsSize) { return {index, 1}; } const Properties &getProperties() { return properties; } ::mlir::DictionaryAttr getAttributes() { return odsAttrs; } ::mlir::LLVM::ConstantRangeAttr getRangeAttr() { auto attr = ::llvm::dyn_cast_or_null<::mlir::LLVM::ConstantRangeAttr>(getProperties().range); return attr; } ::std::optional<::mlir::LLVM::ConstantRangeAttr> getRange(); }; } // namespace detail template class ClusterIdXOpGenericAdaptor : public detail::ClusterIdXOpGenericAdaptorBase { using ValueT = ::llvm::detail::ValueOfRange; using Base = detail::ClusterIdXOpGenericAdaptorBase; public: ClusterIdXOpGenericAdaptor(RangeT values, ::mlir::DictionaryAttr attrs, const Properties &properties, ::mlir::RegionRange regions = {}) : Base(attrs, properties, regions), odsOperands(values) {} ClusterIdXOpGenericAdaptor(RangeT values, ::mlir::DictionaryAttr attrs, ::mlir::PropertyRef properties, ::mlir::RegionRange regions = {}) : ClusterIdXOpGenericAdaptor(values, attrs, (properties ? *properties.as() : Properties{}), regions) {} ClusterIdXOpGenericAdaptor(RangeT values, ::mlir::DictionaryAttr attrs = nullptr) : ClusterIdXOpGenericAdaptor(values, attrs, Properties{}, {}) {} ClusterIdXOpGenericAdaptor(RangeT values, const ClusterIdXOpGenericAdaptorBase &base) : Base(base), odsOperands(values) {} template >> ClusterIdXOpGenericAdaptor(RangeT values, LateInst op) : Base(op), odsOperands(values) {} std::pair getODSOperandIndexAndLength(unsigned index) { return Base::getODSOperandIndexAndLength(index, odsOperands.size()); } RangeT getODSOperands(unsigned index) { auto valueRange = getODSOperandIndexAndLength(index); return {std::next(odsOperands.begin(), valueRange.first), std::next(odsOperands.begin(), valueRange.first + valueRange.second)}; } RangeT getOperands() { return odsOperands; } private: RangeT odsOperands; }; class ClusterIdXOpAdaptor : public ClusterIdXOpGenericAdaptor<::mlir::ValueRange> { public: using ClusterIdXOpGenericAdaptor::ClusterIdXOpGenericAdaptor; ClusterIdXOpAdaptor(ClusterIdXOp op); ::llvm::LogicalResult verify(::mlir::Location loc); }; class ClusterIdXOp : public ::mlir::Op::Impl, ::mlir::OpTrait::ZeroSuccessors, ::mlir::OpTrait::ZeroOperands, ::mlir::OpTrait::OpInvariants, ::mlir::BytecodeOpInterface::Trait, ::mlir::ConditionallySpeculatable::Trait, ::mlir::OpTrait::AlwaysSpeculatableImplTrait, ::mlir::MemoryEffectOpInterface::Trait> { public: using Op::Op; using Op::print; using Adaptor = ClusterIdXOpAdaptor; template using GenericAdaptor = ClusterIdXOpGenericAdaptor; using FoldAdaptor = GenericAdaptor<::llvm::ArrayRef<::mlir::Attribute>>; using Properties = FoldAdaptor::Properties; static ::llvm::ArrayRef<::llvm::StringRef> getAttributeNames() { static ::llvm::StringRef attrNames[] = {::llvm::StringRef("range")}; return ::llvm::ArrayRef(attrNames); } ::mlir::StringAttr getRangeAttrName() { return getAttributeNameForIndex(0); } static ::mlir::StringAttr getRangeAttrName(::mlir::OperationName name) { return getAttributeNameForIndex(name, 0); } static constexpr ::llvm::StringLiteral getOperationName() { return ::llvm::StringLiteral("rocdl.cluster.id.x"); } std::pair getODSOperandIndexAndLength(unsigned index) { return {index, 1}; } ::mlir::Operation::operand_range getODSOperands(unsigned index) { auto valueRange = getODSOperandIndexAndLength(index); return {std::next(getOperation()->operand_begin(), valueRange.first), std::next(getOperation()->operand_begin(), valueRange.first + valueRange.second)}; } std::pair getODSResultIndexAndLength(unsigned index) { return {index, 1}; } ::mlir::Operation::result_range getODSResults(unsigned index) { auto valueRange = getODSResultIndexAndLength(index); return {std::next(getOperation()->result_begin(), valueRange.first), std::next(getOperation()->result_begin(), valueRange.first + valueRange.second)}; } ::mlir::TypedValue<::mlir::Type> getRes() { return ::llvm::cast<::mlir::TypedValue<::mlir::Type>>(*getODSResults(0).begin()); } static ::llvm::LogicalResult setPropertiesFromAttr(Properties &prop, ::mlir::Attribute attr, ::llvm::function_ref<::mlir::InFlightDiagnostic()> emitError); static ::mlir::Attribute getPropertiesAsAttr(::mlir::MLIRContext *ctx, const Properties &prop); static llvm::hash_code computePropertiesHash(const Properties &prop); static std::optional getInherentAttr(::mlir::MLIRContext *ctx, const Properties &prop, llvm::StringRef name); static void setInherentAttr(Properties &prop, llvm::StringRef name, mlir::Attribute value); static void populateInherentAttrs(::mlir::MLIRContext *ctx, const Properties &prop, ::mlir::NamedAttrList &attrs); static ::llvm::LogicalResult verifyInherentAttrs(::mlir::OperationName opName, ::mlir::NamedAttrList &attrs, llvm::function_ref<::mlir::InFlightDiagnostic()> emitError); static ::llvm::LogicalResult readProperties(::mlir::DialectBytecodeReader &reader, ::mlir::OperationState &state); void writeProperties(::mlir::DialectBytecodeWriter &writer); ::mlir::LLVM::ConstantRangeAttr getRangeAttr() { return ::llvm::dyn_cast_or_null<::mlir::LLVM::ConstantRangeAttr>(getProperties().range); } ::std::optional<::mlir::LLVM::ConstantRangeAttr> getRange(); void setRangeAttr(::mlir::LLVM::ConstantRangeAttr attr) { getProperties().range = attr; } ::mlir::Attribute removeRangeAttr() { auto attr = getProperties().range; getProperties().range = {}; return attr; } static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, Type resultType); static ClusterIdXOp create(::mlir::OpBuilder &builder, ::mlir::Location location, Type resultType); static ClusterIdXOp create(::mlir::ImplicitLocOpBuilder &builder, Type resultType); static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::Type res, /*optional*/::mlir::LLVM::ConstantRangeAttr range); static ClusterIdXOp create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::Type res, /*optional*/::mlir::LLVM::ConstantRangeAttr range); static ClusterIdXOp create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::Type res, /*optional*/::mlir::LLVM::ConstantRangeAttr range); static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, /*optional*/::mlir::LLVM::ConstantRangeAttr range); static ClusterIdXOp create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, /*optional*/::mlir::LLVM::ConstantRangeAttr range); static ClusterIdXOp create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, /*optional*/::mlir::LLVM::ConstantRangeAttr range); static void build(::mlir::OpBuilder &, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, ::llvm::ArrayRef<::mlir::NamedAttribute> attributes = {}); static ClusterIdXOp create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, ::llvm::ArrayRef<::mlir::NamedAttribute> attributes = {}); static ClusterIdXOp create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, ::llvm::ArrayRef<::mlir::NamedAttribute> attributes = {}); static void build(::mlir::OpBuilder &, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, const Properties &properties, ::llvm::ArrayRef<::mlir::NamedAttribute> discardableAttributes = {}); static ClusterIdXOp create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, const Properties &properties, ::llvm::ArrayRef<::mlir::NamedAttribute> discardableAttributes = {}); static ClusterIdXOp create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, const Properties &properties, ::llvm::ArrayRef<::mlir::NamedAttribute> discardableAttributes = {}); ::llvm::LogicalResult verifyInvariantsImpl(); ::llvm::LogicalResult verifyInvariants(); static ::mlir::ParseResult parse(::mlir::OpAsmParser &parser, ::mlir::OperationState &result); void print(::mlir::OpAsmPrinter &_odsPrinter); void getEffects(::llvm::SmallVectorImpl<::mlir::SideEffects::EffectInstance<::mlir::MemoryEffects::Effect>> &effects); private: ::mlir::StringAttr getAttributeNameForIndex(unsigned index) { return getAttributeNameForIndex((*this)->getName(), index); } static ::mlir::StringAttr getAttributeNameForIndex(::mlir::OperationName name, unsigned index) { assert(index < 1 && "invalid attribute index"); assert(name.getStringRef() == getOperationName() && "invalid operation name"); assert(name.isRegistered() && "Operation isn't registered, missing a " "dependent dialect loading?"); return name.getAttributeNames()[index]; } public: }; } // namespace mlir::ROCDL MLIR_DECLARE_EXPLICIT_TYPE_ID(::mlir::ROCDL::ClusterIdXOp) MLIR_DECLARE_EXPLICIT_TYPE_ID(::mlir::ROCDL::detail::ClusterIdXOpGenericAdaptorBase::Properties) namespace mlir::ROCDL { //===----------------------------------------------------------------------===// // ::mlir::ROCDL::ClusterIdYOp declarations //===----------------------------------------------------------------------===// namespace detail { class ClusterIdYOpGenericAdaptorBase { public: struct Properties { using rangeTy = ::mlir::LLVM::ConstantRangeAttr; rangeTy range; auto getRange() const { auto &propStorage = this->range; return ::llvm::dyn_cast_or_null<::mlir::LLVM::ConstantRangeAttr>(propStorage); } void setRange(const ::mlir::LLVM::ConstantRangeAttr &propValue) { this->range = propValue; } bool operator==(const Properties &rhs) const { return rhs.range == this->range && true; } bool operator!=(const Properties &rhs) const { return !(*this == rhs); } }; protected: ::mlir::DictionaryAttr odsAttrs; ::std::optional<::mlir::OperationName> odsOpName; Properties properties; ::mlir::RegionRange odsRegions; public: ClusterIdYOpGenericAdaptorBase(::mlir::DictionaryAttr attrs, const Properties &properties, ::mlir::RegionRange regions = {}) : odsAttrs(attrs), properties(properties), odsRegions(regions) { if (odsAttrs) odsOpName.emplace("rocdl.cluster.id.y", odsAttrs.getContext()); } ClusterIdYOpGenericAdaptorBase(ClusterIdYOp op); std::pair getODSOperandIndexAndLength(unsigned index, unsigned odsOperandsSize) { return {index, 1}; } const Properties &getProperties() { return properties; } ::mlir::DictionaryAttr getAttributes() { return odsAttrs; } ::mlir::LLVM::ConstantRangeAttr getRangeAttr() { auto attr = ::llvm::dyn_cast_or_null<::mlir::LLVM::ConstantRangeAttr>(getProperties().range); return attr; } ::std::optional<::mlir::LLVM::ConstantRangeAttr> getRange(); }; } // namespace detail template class ClusterIdYOpGenericAdaptor : public detail::ClusterIdYOpGenericAdaptorBase { using ValueT = ::llvm::detail::ValueOfRange; using Base = detail::ClusterIdYOpGenericAdaptorBase; public: ClusterIdYOpGenericAdaptor(RangeT values, ::mlir::DictionaryAttr attrs, const Properties &properties, ::mlir::RegionRange regions = {}) : Base(attrs, properties, regions), odsOperands(values) {} ClusterIdYOpGenericAdaptor(RangeT values, ::mlir::DictionaryAttr attrs, ::mlir::PropertyRef properties, ::mlir::RegionRange regions = {}) : ClusterIdYOpGenericAdaptor(values, attrs, (properties ? *properties.as() : Properties{}), regions) {} ClusterIdYOpGenericAdaptor(RangeT values, ::mlir::DictionaryAttr attrs = nullptr) : ClusterIdYOpGenericAdaptor(values, attrs, Properties{}, {}) {} ClusterIdYOpGenericAdaptor(RangeT values, const ClusterIdYOpGenericAdaptorBase &base) : Base(base), odsOperands(values) {} template >> ClusterIdYOpGenericAdaptor(RangeT values, LateInst op) : Base(op), odsOperands(values) {} std::pair getODSOperandIndexAndLength(unsigned index) { return Base::getODSOperandIndexAndLength(index, odsOperands.size()); } RangeT getODSOperands(unsigned index) { auto valueRange = getODSOperandIndexAndLength(index); return {std::next(odsOperands.begin(), valueRange.first), std::next(odsOperands.begin(), valueRange.first + valueRange.second)}; } RangeT getOperands() { return odsOperands; } private: RangeT odsOperands; }; class ClusterIdYOpAdaptor : public ClusterIdYOpGenericAdaptor<::mlir::ValueRange> { public: using ClusterIdYOpGenericAdaptor::ClusterIdYOpGenericAdaptor; ClusterIdYOpAdaptor(ClusterIdYOp op); ::llvm::LogicalResult verify(::mlir::Location loc); }; class ClusterIdYOp : public ::mlir::Op::Impl, ::mlir::OpTrait::ZeroSuccessors, ::mlir::OpTrait::ZeroOperands, ::mlir::OpTrait::OpInvariants, ::mlir::BytecodeOpInterface::Trait, ::mlir::ConditionallySpeculatable::Trait, ::mlir::OpTrait::AlwaysSpeculatableImplTrait, ::mlir::MemoryEffectOpInterface::Trait> { public: using Op::Op; using Op::print; using Adaptor = ClusterIdYOpAdaptor; template using GenericAdaptor = ClusterIdYOpGenericAdaptor; using FoldAdaptor = GenericAdaptor<::llvm::ArrayRef<::mlir::Attribute>>; using Properties = FoldAdaptor::Properties; static ::llvm::ArrayRef<::llvm::StringRef> getAttributeNames() { static ::llvm::StringRef attrNames[] = {::llvm::StringRef("range")}; return ::llvm::ArrayRef(attrNames); } ::mlir::StringAttr getRangeAttrName() { return getAttributeNameForIndex(0); } static ::mlir::StringAttr getRangeAttrName(::mlir::OperationName name) { return getAttributeNameForIndex(name, 0); } static constexpr ::llvm::StringLiteral getOperationName() { return ::llvm::StringLiteral("rocdl.cluster.id.y"); } std::pair getODSOperandIndexAndLength(unsigned index) { return {index, 1}; } ::mlir::Operation::operand_range getODSOperands(unsigned index) { auto valueRange = getODSOperandIndexAndLength(index); return {std::next(getOperation()->operand_begin(), valueRange.first), std::next(getOperation()->operand_begin(), valueRange.first + valueRange.second)}; } std::pair getODSResultIndexAndLength(unsigned index) { return {index, 1}; } ::mlir::Operation::result_range getODSResults(unsigned index) { auto valueRange = getODSResultIndexAndLength(index); return {std::next(getOperation()->result_begin(), valueRange.first), std::next(getOperation()->result_begin(), valueRange.first + valueRange.second)}; } ::mlir::TypedValue<::mlir::Type> getRes() { return ::llvm::cast<::mlir::TypedValue<::mlir::Type>>(*getODSResults(0).begin()); } static ::llvm::LogicalResult setPropertiesFromAttr(Properties &prop, ::mlir::Attribute attr, ::llvm::function_ref<::mlir::InFlightDiagnostic()> emitError); static ::mlir::Attribute getPropertiesAsAttr(::mlir::MLIRContext *ctx, const Properties &prop); static llvm::hash_code computePropertiesHash(const Properties &prop); static std::optional getInherentAttr(::mlir::MLIRContext *ctx, const Properties &prop, llvm::StringRef name); static void setInherentAttr(Properties &prop, llvm::StringRef name, mlir::Attribute value); static void populateInherentAttrs(::mlir::MLIRContext *ctx, const Properties &prop, ::mlir::NamedAttrList &attrs); static ::llvm::LogicalResult verifyInherentAttrs(::mlir::OperationName opName, ::mlir::NamedAttrList &attrs, llvm::function_ref<::mlir::InFlightDiagnostic()> emitError); static ::llvm::LogicalResult readProperties(::mlir::DialectBytecodeReader &reader, ::mlir::OperationState &state); void writeProperties(::mlir::DialectBytecodeWriter &writer); ::mlir::LLVM::ConstantRangeAttr getRangeAttr() { return ::llvm::dyn_cast_or_null<::mlir::LLVM::ConstantRangeAttr>(getProperties().range); } ::std::optional<::mlir::LLVM::ConstantRangeAttr> getRange(); void setRangeAttr(::mlir::LLVM::ConstantRangeAttr attr) { getProperties().range = attr; } ::mlir::Attribute removeRangeAttr() { auto attr = getProperties().range; getProperties().range = {}; return attr; } static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, Type resultType); static ClusterIdYOp create(::mlir::OpBuilder &builder, ::mlir::Location location, Type resultType); static ClusterIdYOp create(::mlir::ImplicitLocOpBuilder &builder, Type resultType); static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::Type res, /*optional*/::mlir::LLVM::ConstantRangeAttr range); static ClusterIdYOp create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::Type res, /*optional*/::mlir::LLVM::ConstantRangeAttr range); static ClusterIdYOp create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::Type res, /*optional*/::mlir::LLVM::ConstantRangeAttr range); static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, /*optional*/::mlir::LLVM::ConstantRangeAttr range); static ClusterIdYOp create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, /*optional*/::mlir::LLVM::ConstantRangeAttr range); static ClusterIdYOp create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, /*optional*/::mlir::LLVM::ConstantRangeAttr range); static void build(::mlir::OpBuilder &, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, ::llvm::ArrayRef<::mlir::NamedAttribute> attributes = {}); static ClusterIdYOp create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, ::llvm::ArrayRef<::mlir::NamedAttribute> attributes = {}); static ClusterIdYOp create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, ::llvm::ArrayRef<::mlir::NamedAttribute> attributes = {}); static void build(::mlir::OpBuilder &, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, const Properties &properties, ::llvm::ArrayRef<::mlir::NamedAttribute> discardableAttributes = {}); static ClusterIdYOp create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, const Properties &properties, ::llvm::ArrayRef<::mlir::NamedAttribute> discardableAttributes = {}); static ClusterIdYOp create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, const Properties &properties, ::llvm::ArrayRef<::mlir::NamedAttribute> discardableAttributes = {}); ::llvm::LogicalResult verifyInvariantsImpl(); ::llvm::LogicalResult verifyInvariants(); static ::mlir::ParseResult parse(::mlir::OpAsmParser &parser, ::mlir::OperationState &result); void print(::mlir::OpAsmPrinter &_odsPrinter); void getEffects(::llvm::SmallVectorImpl<::mlir::SideEffects::EffectInstance<::mlir::MemoryEffects::Effect>> &effects); private: ::mlir::StringAttr getAttributeNameForIndex(unsigned index) { return getAttributeNameForIndex((*this)->getName(), index); } static ::mlir::StringAttr getAttributeNameForIndex(::mlir::OperationName name, unsigned index) { assert(index < 1 && "invalid attribute index"); assert(name.getStringRef() == getOperationName() && "invalid operation name"); assert(name.isRegistered() && "Operation isn't registered, missing a " "dependent dialect loading?"); return name.getAttributeNames()[index]; } public: }; } // namespace mlir::ROCDL MLIR_DECLARE_EXPLICIT_TYPE_ID(::mlir::ROCDL::ClusterIdYOp) MLIR_DECLARE_EXPLICIT_TYPE_ID(::mlir::ROCDL::detail::ClusterIdYOpGenericAdaptorBase::Properties) namespace mlir::ROCDL { //===----------------------------------------------------------------------===// // ::mlir::ROCDL::ClusterIdZOp declarations //===----------------------------------------------------------------------===// namespace detail { class ClusterIdZOpGenericAdaptorBase { public: struct Properties { using rangeTy = ::mlir::LLVM::ConstantRangeAttr; rangeTy range; auto getRange() const { auto &propStorage = this->range; return ::llvm::dyn_cast_or_null<::mlir::LLVM::ConstantRangeAttr>(propStorage); } void setRange(const ::mlir::LLVM::ConstantRangeAttr &propValue) { this->range = propValue; } bool operator==(const Properties &rhs) const { return rhs.range == this->range && true; } bool operator!=(const Properties &rhs) const { return !(*this == rhs); } }; protected: ::mlir::DictionaryAttr odsAttrs; ::std::optional<::mlir::OperationName> odsOpName; Properties properties; ::mlir::RegionRange odsRegions; public: ClusterIdZOpGenericAdaptorBase(::mlir::DictionaryAttr attrs, const Properties &properties, ::mlir::RegionRange regions = {}) : odsAttrs(attrs), properties(properties), odsRegions(regions) { if (odsAttrs) odsOpName.emplace("rocdl.cluster.id.z", odsAttrs.getContext()); } ClusterIdZOpGenericAdaptorBase(ClusterIdZOp op); std::pair getODSOperandIndexAndLength(unsigned index, unsigned odsOperandsSize) { return {index, 1}; } const Properties &getProperties() { return properties; } ::mlir::DictionaryAttr getAttributes() { return odsAttrs; } ::mlir::LLVM::ConstantRangeAttr getRangeAttr() { auto attr = ::llvm::dyn_cast_or_null<::mlir::LLVM::ConstantRangeAttr>(getProperties().range); return attr; } ::std::optional<::mlir::LLVM::ConstantRangeAttr> getRange(); }; } // namespace detail template class ClusterIdZOpGenericAdaptor : public detail::ClusterIdZOpGenericAdaptorBase { using ValueT = ::llvm::detail::ValueOfRange; using Base = detail::ClusterIdZOpGenericAdaptorBase; public: ClusterIdZOpGenericAdaptor(RangeT values, ::mlir::DictionaryAttr attrs, const Properties &properties, ::mlir::RegionRange regions = {}) : Base(attrs, properties, regions), odsOperands(values) {} ClusterIdZOpGenericAdaptor(RangeT values, ::mlir::DictionaryAttr attrs, ::mlir::PropertyRef properties, ::mlir::RegionRange regions = {}) : ClusterIdZOpGenericAdaptor(values, attrs, (properties ? *properties.as() : Properties{}), regions) {} ClusterIdZOpGenericAdaptor(RangeT values, ::mlir::DictionaryAttr attrs = nullptr) : ClusterIdZOpGenericAdaptor(values, attrs, Properties{}, {}) {} ClusterIdZOpGenericAdaptor(RangeT values, const ClusterIdZOpGenericAdaptorBase &base) : Base(base), odsOperands(values) {} template >> ClusterIdZOpGenericAdaptor(RangeT values, LateInst op) : Base(op), odsOperands(values) {} std::pair getODSOperandIndexAndLength(unsigned index) { return Base::getODSOperandIndexAndLength(index, odsOperands.size()); } RangeT getODSOperands(unsigned index) { auto valueRange = getODSOperandIndexAndLength(index); return {std::next(odsOperands.begin(), valueRange.first), std::next(odsOperands.begin(), valueRange.first + valueRange.second)}; } RangeT getOperands() { return odsOperands; } private: RangeT odsOperands; }; class ClusterIdZOpAdaptor : public ClusterIdZOpGenericAdaptor<::mlir::ValueRange> { public: using ClusterIdZOpGenericAdaptor::ClusterIdZOpGenericAdaptor; ClusterIdZOpAdaptor(ClusterIdZOp op); ::llvm::LogicalResult verify(::mlir::Location loc); }; class ClusterIdZOp : public ::mlir::Op::Impl, ::mlir::OpTrait::ZeroSuccessors, ::mlir::OpTrait::ZeroOperands, ::mlir::OpTrait::OpInvariants, ::mlir::BytecodeOpInterface::Trait, ::mlir::ConditionallySpeculatable::Trait, ::mlir::OpTrait::AlwaysSpeculatableImplTrait, ::mlir::MemoryEffectOpInterface::Trait> { public: using Op::Op; using Op::print; using Adaptor = ClusterIdZOpAdaptor; template using GenericAdaptor = ClusterIdZOpGenericAdaptor; using FoldAdaptor = GenericAdaptor<::llvm::ArrayRef<::mlir::Attribute>>; using Properties = FoldAdaptor::Properties; static ::llvm::ArrayRef<::llvm::StringRef> getAttributeNames() { static ::llvm::StringRef attrNames[] = {::llvm::StringRef("range")}; return ::llvm::ArrayRef(attrNames); } ::mlir::StringAttr getRangeAttrName() { return getAttributeNameForIndex(0); } static ::mlir::StringAttr getRangeAttrName(::mlir::OperationName name) { return getAttributeNameForIndex(name, 0); } static constexpr ::llvm::StringLiteral getOperationName() { return ::llvm::StringLiteral("rocdl.cluster.id.z"); } std::pair getODSOperandIndexAndLength(unsigned index) { return {index, 1}; } ::mlir::Operation::operand_range getODSOperands(unsigned index) { auto valueRange = getODSOperandIndexAndLength(index); return {std::next(getOperation()->operand_begin(), valueRange.first), std::next(getOperation()->operand_begin(), valueRange.first + valueRange.second)}; } std::pair getODSResultIndexAndLength(unsigned index) { return {index, 1}; } ::mlir::Operation::result_range getODSResults(unsigned index) { auto valueRange = getODSResultIndexAndLength(index); return {std::next(getOperation()->result_begin(), valueRange.first), std::next(getOperation()->result_begin(), valueRange.first + valueRange.second)}; } ::mlir::TypedValue<::mlir::Type> getRes() { return ::llvm::cast<::mlir::TypedValue<::mlir::Type>>(*getODSResults(0).begin()); } static ::llvm::LogicalResult setPropertiesFromAttr(Properties &prop, ::mlir::Attribute attr, ::llvm::function_ref<::mlir::InFlightDiagnostic()> emitError); static ::mlir::Attribute getPropertiesAsAttr(::mlir::MLIRContext *ctx, const Properties &prop); static llvm::hash_code computePropertiesHash(const Properties &prop); static std::optional getInherentAttr(::mlir::MLIRContext *ctx, const Properties &prop, llvm::StringRef name); static void setInherentAttr(Properties &prop, llvm::StringRef name, mlir::Attribute value); static void populateInherentAttrs(::mlir::MLIRContext *ctx, const Properties &prop, ::mlir::NamedAttrList &attrs); static ::llvm::LogicalResult verifyInherentAttrs(::mlir::OperationName opName, ::mlir::NamedAttrList &attrs, llvm::function_ref<::mlir::InFlightDiagnostic()> emitError); static ::llvm::LogicalResult readProperties(::mlir::DialectBytecodeReader &reader, ::mlir::OperationState &state); void writeProperties(::mlir::DialectBytecodeWriter &writer); ::mlir::LLVM::ConstantRangeAttr getRangeAttr() { return ::llvm::dyn_cast_or_null<::mlir::LLVM::ConstantRangeAttr>(getProperties().range); } ::std::optional<::mlir::LLVM::ConstantRangeAttr> getRange(); void setRangeAttr(::mlir::LLVM::ConstantRangeAttr attr) { getProperties().range = attr; } ::mlir::Attribute removeRangeAttr() { auto attr = getProperties().range; getProperties().range = {}; return attr; } static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, Type resultType); static ClusterIdZOp create(::mlir::OpBuilder &builder, ::mlir::Location location, Type resultType); static ClusterIdZOp create(::mlir::ImplicitLocOpBuilder &builder, Type resultType); static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::Type res, /*optional*/::mlir::LLVM::ConstantRangeAttr range); static ClusterIdZOp create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::Type res, /*optional*/::mlir::LLVM::ConstantRangeAttr range); static ClusterIdZOp create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::Type res, /*optional*/::mlir::LLVM::ConstantRangeAttr range); static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, /*optional*/::mlir::LLVM::ConstantRangeAttr range); static ClusterIdZOp create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, /*optional*/::mlir::LLVM::ConstantRangeAttr range); static ClusterIdZOp create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, /*optional*/::mlir::LLVM::ConstantRangeAttr range); static void build(::mlir::OpBuilder &, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, ::llvm::ArrayRef<::mlir::NamedAttribute> attributes = {}); static ClusterIdZOp create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, ::llvm::ArrayRef<::mlir::NamedAttribute> attributes = {}); static ClusterIdZOp create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, ::llvm::ArrayRef<::mlir::NamedAttribute> attributes = {}); static void build(::mlir::OpBuilder &, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, const Properties &properties, ::llvm::ArrayRef<::mlir::NamedAttribute> discardableAttributes = {}); static ClusterIdZOp create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, const Properties &properties, ::llvm::ArrayRef<::mlir::NamedAttribute> discardableAttributes = {}); static ClusterIdZOp create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, const Properties &properties, ::llvm::ArrayRef<::mlir::NamedAttribute> discardableAttributes = {}); ::llvm::LogicalResult verifyInvariantsImpl(); ::llvm::LogicalResult verifyInvariants(); static ::mlir::ParseResult parse(::mlir::OpAsmParser &parser, ::mlir::OperationState &result); void print(::mlir::OpAsmPrinter &_odsPrinter); void getEffects(::llvm::SmallVectorImpl<::mlir::SideEffects::EffectInstance<::mlir::MemoryEffects::Effect>> &effects); private: ::mlir::StringAttr getAttributeNameForIndex(unsigned index) { return getAttributeNameForIndex((*this)->getName(), index); } static ::mlir::StringAttr getAttributeNameForIndex(::mlir::OperationName name, unsigned index) { assert(index < 1 && "invalid attribute index"); assert(name.getStringRef() == getOperationName() && "invalid operation name"); assert(name.isRegistered() && "Operation isn't registered, missing a " "dependent dialect loading?"); return name.getAttributeNames()[index]; } public: }; } // namespace mlir::ROCDL MLIR_DECLARE_EXPLICIT_TYPE_ID(::mlir::ROCDL::ClusterIdZOp) MLIR_DECLARE_EXPLICIT_TYPE_ID(::mlir::ROCDL::detail::ClusterIdZOpGenericAdaptorBase::Properties) namespace mlir::ROCDL { //===----------------------------------------------------------------------===// // ::mlir::ROCDL::ClusterLoadAsyncToLDSB128Op declarations //===----------------------------------------------------------------------===// namespace detail { class ClusterLoadAsyncToLDSB128OpGenericAdaptorBase { public: struct Properties { using alias_scopesTy = ::mlir::ArrayAttr; alias_scopesTy alias_scopes; auto getAliasScopes() const { auto &propStorage = this->alias_scopes; return ::llvm::dyn_cast_or_null<::mlir::ArrayAttr>(propStorage); } void setAliasScopes(const ::mlir::ArrayAttr &propValue) { this->alias_scopes = propValue; } using cpolTy = ::mlir::Attribute; cpolTy cpol; auto getCpol() const { auto &propStorage = this->cpol; return ::llvm::dyn_cast_or_null<::mlir::Attribute>(propStorage); } void setCpol(const ::mlir::Attribute &propValue) { this->cpol = propValue; } using noalias_scopesTy = ::mlir::ArrayAttr; noalias_scopesTy noalias_scopes; auto getNoaliasScopes() const { auto &propStorage = this->noalias_scopes; return ::llvm::dyn_cast_or_null<::mlir::ArrayAttr>(propStorage); } void setNoaliasScopes(const ::mlir::ArrayAttr &propValue) { this->noalias_scopes = propValue; } using offsetTy = ::mlir::IntegerAttr; offsetTy offset; auto getOffset() const { auto &propStorage = this->offset; return ::llvm::cast<::mlir::IntegerAttr>(propStorage); } void setOffset(const ::mlir::IntegerAttr &propValue) { this->offset = propValue; } using tbaaTy = ::mlir::ArrayAttr; tbaaTy tbaa; auto getTbaa() const { auto &propStorage = this->tbaa; return ::llvm::dyn_cast_or_null<::mlir::ArrayAttr>(propStorage); } void setTbaa(const ::mlir::ArrayAttr &propValue) { this->tbaa = propValue; } bool operator==(const Properties &rhs) const { return rhs.alias_scopes == this->alias_scopes && rhs.cpol == this->cpol && rhs.noalias_scopes == this->noalias_scopes && rhs.offset == this->offset && rhs.tbaa == this->tbaa && true; } bool operator!=(const Properties &rhs) const { return !(*this == rhs); } }; protected: ::mlir::DictionaryAttr odsAttrs; ::std::optional<::mlir::OperationName> odsOpName; Properties properties; ::mlir::RegionRange odsRegions; public: ClusterLoadAsyncToLDSB128OpGenericAdaptorBase(::mlir::DictionaryAttr attrs, const Properties &properties, ::mlir::RegionRange regions = {}) : odsAttrs(attrs), properties(properties), odsRegions(regions) { if (odsAttrs) odsOpName.emplace("rocdl.cluster.load.async.to.lds.b128", odsAttrs.getContext()); } ClusterLoadAsyncToLDSB128OpGenericAdaptorBase(ClusterLoadAsyncToLDSB128Op op); std::pair getODSOperandIndexAndLength(unsigned index, unsigned odsOperandsSize) { return {index, 1}; } const Properties &getProperties() { return properties; } ::mlir::DictionaryAttr getAttributes() { return odsAttrs; } ::mlir::IntegerAttr getOffsetAttr() { auto attr = ::llvm::cast<::mlir::IntegerAttr>(getProperties().offset); return attr; } uint32_t getOffset(); ::mlir::Attribute getCpolAttr(); ::mlir::Attribute getCpol(); ::mlir::ArrayAttr getAliasScopesAttr() { auto attr = ::llvm::dyn_cast_or_null<::mlir::ArrayAttr>(getProperties().alias_scopes); return attr; } ::std::optional< ::mlir::ArrayAttr > getAliasScopes(); ::mlir::ArrayAttr getNoaliasScopesAttr() { auto attr = ::llvm::dyn_cast_or_null<::mlir::ArrayAttr>(getProperties().noalias_scopes); return attr; } ::std::optional< ::mlir::ArrayAttr > getNoaliasScopes(); ::mlir::ArrayAttr getTbaaAttr() { auto attr = ::llvm::dyn_cast_or_null<::mlir::ArrayAttr>(getProperties().tbaa); return attr; } ::std::optional< ::mlir::ArrayAttr > getTbaa(); }; } // namespace detail template class ClusterLoadAsyncToLDSB128OpGenericAdaptor : public detail::ClusterLoadAsyncToLDSB128OpGenericAdaptorBase { using ValueT = ::llvm::detail::ValueOfRange; using Base = detail::ClusterLoadAsyncToLDSB128OpGenericAdaptorBase; static constexpr int odsIndex_globalPtr = 0; static constexpr int odsIndex_ldsPtr = 1; static constexpr int odsIndex_mask = 2; public: ClusterLoadAsyncToLDSB128OpGenericAdaptor(RangeT values, ::mlir::DictionaryAttr attrs, const Properties &properties, ::mlir::RegionRange regions = {}) : Base(attrs, properties, regions), odsOperands(values) {} ClusterLoadAsyncToLDSB128OpGenericAdaptor(RangeT values, ::mlir::DictionaryAttr attrs, ::mlir::PropertyRef properties, ::mlir::RegionRange regions = {}) : ClusterLoadAsyncToLDSB128OpGenericAdaptor(values, attrs, (properties ? *properties.as() : Properties{}), regions) {} ClusterLoadAsyncToLDSB128OpGenericAdaptor(RangeT values, ::mlir::DictionaryAttr attrs = nullptr) : ClusterLoadAsyncToLDSB128OpGenericAdaptor(values, attrs, Properties{}, {}) {} ClusterLoadAsyncToLDSB128OpGenericAdaptor(RangeT values, const ClusterLoadAsyncToLDSB128OpGenericAdaptorBase &base) : Base(base), odsOperands(values) {} template >> ClusterLoadAsyncToLDSB128OpGenericAdaptor(RangeT values, LateInst op) : Base(op), odsOperands(values) {} std::pair getODSOperandIndexAndLength(unsigned index) { return Base::getODSOperandIndexAndLength(index, odsOperands.size()); } RangeT getODSOperands(unsigned index) { auto valueRange = getODSOperandIndexAndLength(index); return {std::next(odsOperands.begin(), valueRange.first), std::next(odsOperands.begin(), valueRange.first + valueRange.second)}; } ValueT getGlobalPtr() { return (*getODSOperands(0).begin()); } ValueT getLdsPtr() { return (*getODSOperands(1).begin()); } ValueT getMask() { return (*getODSOperands(2).begin()); } RangeT getOperands() { return odsOperands; } private: RangeT odsOperands; }; class ClusterLoadAsyncToLDSB128OpAdaptor : public ClusterLoadAsyncToLDSB128OpGenericAdaptor<::mlir::ValueRange> { public: using ClusterLoadAsyncToLDSB128OpGenericAdaptor::ClusterLoadAsyncToLDSB128OpGenericAdaptor; ClusterLoadAsyncToLDSB128OpAdaptor(ClusterLoadAsyncToLDSB128Op op); ::llvm::LogicalResult verify(::mlir::Location loc); }; class ClusterLoadAsyncToLDSB128Op : public ::mlir::Op::Impl, ::mlir::OpTrait::OpInvariants, ::mlir::BytecodeOpInterface::Trait, ::mlir::LLVM::AliasAnalysisOpInterface::Trait, ::mlir::MemoryEffectOpInterface::Trait> { public: using Op::Op; using Op::print; using Adaptor = ClusterLoadAsyncToLDSB128OpAdaptor; template using GenericAdaptor = ClusterLoadAsyncToLDSB128OpGenericAdaptor; using FoldAdaptor = GenericAdaptor<::llvm::ArrayRef<::mlir::Attribute>>; static constexpr int odsIndex_globalPtr = 0; static constexpr int odsIndex_ldsPtr = 1; static constexpr int odsIndex_mask = 2; using Properties = FoldAdaptor::Properties; using ::mlir::LLVM::AliasAnalysisOpInterface::Trait::getAliasScopesOrNull; using ::mlir::LLVM::AliasAnalysisOpInterface::Trait::setAliasScopes; using ::mlir::LLVM::AliasAnalysisOpInterface::Trait::getNoAliasScopesOrNull; using ::mlir::LLVM::AliasAnalysisOpInterface::Trait::setNoAliasScopes; using ::mlir::LLVM::AliasAnalysisOpInterface::Trait::getTBAATagsOrNull; using ::mlir::LLVM::AliasAnalysisOpInterface::Trait::setTBAATags; static ::llvm::ArrayRef<::llvm::StringRef> getAttributeNames() { static ::llvm::StringRef attrNames[] = {::llvm::StringRef("alias_scopes"), ::llvm::StringRef("cpol"), ::llvm::StringRef("noalias_scopes"), ::llvm::StringRef("offset"), ::llvm::StringRef("tbaa")}; return ::llvm::ArrayRef(attrNames); } ::mlir::StringAttr getAliasScopesAttrName() { return getAttributeNameForIndex(0); } static ::mlir::StringAttr getAliasScopesAttrName(::mlir::OperationName name) { return getAttributeNameForIndex(name, 0); } ::mlir::StringAttr getCpolAttrName() { return getAttributeNameForIndex(1); } static ::mlir::StringAttr getCpolAttrName(::mlir::OperationName name) { return getAttributeNameForIndex(name, 1); } ::mlir::StringAttr getNoaliasScopesAttrName() { return getAttributeNameForIndex(2); } static ::mlir::StringAttr getNoaliasScopesAttrName(::mlir::OperationName name) { return getAttributeNameForIndex(name, 2); } ::mlir::StringAttr getOffsetAttrName() { return getAttributeNameForIndex(3); } static ::mlir::StringAttr getOffsetAttrName(::mlir::OperationName name) { return getAttributeNameForIndex(name, 3); } ::mlir::StringAttr getTbaaAttrName() { return getAttributeNameForIndex(4); } static ::mlir::StringAttr getTbaaAttrName(::mlir::OperationName name) { return getAttributeNameForIndex(name, 4); } static constexpr ::llvm::StringLiteral getOperationName() { return ::llvm::StringLiteral("rocdl.cluster.load.async.to.lds.b128"); } std::pair getODSOperandIndexAndLength(unsigned index) { return {index, 1}; } ::mlir::Operation::operand_range getODSOperands(unsigned index) { auto valueRange = getODSOperandIndexAndLength(index); return {std::next(getOperation()->operand_begin(), valueRange.first), std::next(getOperation()->operand_begin(), valueRange.first + valueRange.second)}; } ::mlir::TypedValue<::mlir::LLVM::LLVMPointerType> getGlobalPtr() { return ::llvm::cast<::mlir::TypedValue<::mlir::LLVM::LLVMPointerType>>(*getODSOperands(0).begin()); } ::mlir::TypedValue<::mlir::LLVM::LLVMPointerType> getLdsPtr() { return ::llvm::cast<::mlir::TypedValue<::mlir::LLVM::LLVMPointerType>>(*getODSOperands(1).begin()); } ::mlir::TypedValue<::mlir::IntegerType> getMask() { return ::llvm::cast<::mlir::TypedValue<::mlir::IntegerType>>(*getODSOperands(2).begin()); } ::mlir::OpOperand &getGlobalPtrMutable() { auto range = getODSOperandIndexAndLength(0); return getOperation()->getOpOperand(range.first); } ::mlir::OpOperand &getLdsPtrMutable() { auto range = getODSOperandIndexAndLength(1); return getOperation()->getOpOperand(range.first); } ::mlir::OpOperand &getMaskMutable() { auto range = getODSOperandIndexAndLength(2); return getOperation()->getOpOperand(range.first); } std::pair getODSResultIndexAndLength(unsigned index) { return {index, 1}; } ::mlir::Operation::result_range getODSResults(unsigned index) { auto valueRange = getODSResultIndexAndLength(index); return {std::next(getOperation()->result_begin(), valueRange.first), std::next(getOperation()->result_begin(), valueRange.first + valueRange.second)}; } static ::llvm::LogicalResult setPropertiesFromAttr(Properties &prop, ::mlir::Attribute attr, ::llvm::function_ref<::mlir::InFlightDiagnostic()> emitError); static ::mlir::Attribute getPropertiesAsAttr(::mlir::MLIRContext *ctx, const Properties &prop); static llvm::hash_code computePropertiesHash(const Properties &prop); static std::optional getInherentAttr(::mlir::MLIRContext *ctx, const Properties &prop, llvm::StringRef name); static void setInherentAttr(Properties &prop, llvm::StringRef name, mlir::Attribute value); static void populateInherentAttrs(::mlir::MLIRContext *ctx, const Properties &prop, ::mlir::NamedAttrList &attrs); static ::llvm::LogicalResult verifyInherentAttrs(::mlir::OperationName opName, ::mlir::NamedAttrList &attrs, llvm::function_ref<::mlir::InFlightDiagnostic()> emitError); static ::llvm::LogicalResult readProperties(::mlir::DialectBytecodeReader &reader, ::mlir::OperationState &state); void writeProperties(::mlir::DialectBytecodeWriter &writer); ::mlir::IntegerAttr getOffsetAttr() { return ::llvm::cast<::mlir::IntegerAttr>(getProperties().offset); } uint32_t getOffset(); ::mlir::Attribute getCpolAttr() { return ::llvm::dyn_cast_or_null<::mlir::Attribute>(getProperties().cpol); } ::mlir::Attribute getCpol(); ::mlir::ArrayAttr getAliasScopesAttr() { return ::llvm::dyn_cast_or_null<::mlir::ArrayAttr>(getProperties().alias_scopes); } ::std::optional< ::mlir::ArrayAttr > getAliasScopes(); ::mlir::ArrayAttr getNoaliasScopesAttr() { return ::llvm::dyn_cast_or_null<::mlir::ArrayAttr>(getProperties().noalias_scopes); } ::std::optional< ::mlir::ArrayAttr > getNoaliasScopes(); ::mlir::ArrayAttr getTbaaAttr() { return ::llvm::dyn_cast_or_null<::mlir::ArrayAttr>(getProperties().tbaa); } ::std::optional< ::mlir::ArrayAttr > getTbaa(); void setOffsetAttr(::mlir::IntegerAttr attr) { getProperties().offset = attr; } void setOffset(uint32_t attrValue); void setCpolAttr(::mlir::Attribute attr) { getProperties().cpol = attr; } void setAliasScopesAttr(::mlir::ArrayAttr attr) { getProperties().alias_scopes = attr; } void setNoaliasScopesAttr(::mlir::ArrayAttr attr) { getProperties().noalias_scopes = attr; } void setTbaaAttr(::mlir::ArrayAttr attr) { getProperties().tbaa = attr; } ::mlir::Attribute removeAliasScopesAttr() { auto attr = getProperties().alias_scopes; getProperties().alias_scopes = {}; return attr; } ::mlir::Attribute removeNoaliasScopesAttr() { auto attr = getProperties().noalias_scopes; getProperties().noalias_scopes = {}; return attr; } ::mlir::Attribute removeTbaaAttr() { auto attr = getProperties().tbaa; getProperties().tbaa = {}; return attr; } static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::Value globalPtr, ::mlir::Value ldsPtr, ::mlir::IntegerAttr offset, ::mlir::Attribute cpol, ::mlir::Value mask, /*optional*/::mlir::ArrayAttr alias_scopes, /*optional*/::mlir::ArrayAttr noalias_scopes, /*optional*/::mlir::ArrayAttr tbaa); static ClusterLoadAsyncToLDSB128Op create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::Value globalPtr, ::mlir::Value ldsPtr, ::mlir::IntegerAttr offset, ::mlir::Attribute cpol, ::mlir::Value mask, /*optional*/::mlir::ArrayAttr alias_scopes, /*optional*/::mlir::ArrayAttr noalias_scopes, /*optional*/::mlir::ArrayAttr tbaa); static ClusterLoadAsyncToLDSB128Op create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::Value globalPtr, ::mlir::Value ldsPtr, ::mlir::IntegerAttr offset, ::mlir::Attribute cpol, ::mlir::Value mask, /*optional*/::mlir::ArrayAttr alias_scopes, /*optional*/::mlir::ArrayAttr noalias_scopes, /*optional*/::mlir::ArrayAttr tbaa); static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::Value globalPtr, ::mlir::Value ldsPtr, ::mlir::IntegerAttr offset, ::mlir::Attribute cpol, ::mlir::Value mask, /*optional*/::mlir::ArrayAttr alias_scopes, /*optional*/::mlir::ArrayAttr noalias_scopes, /*optional*/::mlir::ArrayAttr tbaa); static ClusterLoadAsyncToLDSB128Op create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::Value globalPtr, ::mlir::Value ldsPtr, ::mlir::IntegerAttr offset, ::mlir::Attribute cpol, ::mlir::Value mask, /*optional*/::mlir::ArrayAttr alias_scopes, /*optional*/::mlir::ArrayAttr noalias_scopes, /*optional*/::mlir::ArrayAttr tbaa); static ClusterLoadAsyncToLDSB128Op create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::Value globalPtr, ::mlir::Value ldsPtr, ::mlir::IntegerAttr offset, ::mlir::Attribute cpol, ::mlir::Value mask, /*optional*/::mlir::ArrayAttr alias_scopes, /*optional*/::mlir::ArrayAttr noalias_scopes, /*optional*/::mlir::ArrayAttr tbaa); static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::Value globalPtr, ::mlir::Value ldsPtr, uint32_t offset, ::mlir::Attribute cpol, ::mlir::Value mask, /*optional*/::mlir::ArrayAttr alias_scopes, /*optional*/::mlir::ArrayAttr noalias_scopes, /*optional*/::mlir::ArrayAttr tbaa); static ClusterLoadAsyncToLDSB128Op create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::Value globalPtr, ::mlir::Value ldsPtr, uint32_t offset, ::mlir::Attribute cpol, ::mlir::Value mask, /*optional*/::mlir::ArrayAttr alias_scopes, /*optional*/::mlir::ArrayAttr noalias_scopes, /*optional*/::mlir::ArrayAttr tbaa); static ClusterLoadAsyncToLDSB128Op create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::Value globalPtr, ::mlir::Value ldsPtr, uint32_t offset, ::mlir::Attribute cpol, ::mlir::Value mask, /*optional*/::mlir::ArrayAttr alias_scopes, /*optional*/::mlir::ArrayAttr noalias_scopes, /*optional*/::mlir::ArrayAttr tbaa); static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::Value globalPtr, ::mlir::Value ldsPtr, uint32_t offset, ::mlir::Attribute cpol, ::mlir::Value mask, /*optional*/::mlir::ArrayAttr alias_scopes, /*optional*/::mlir::ArrayAttr noalias_scopes, /*optional*/::mlir::ArrayAttr tbaa); static ClusterLoadAsyncToLDSB128Op create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::Value globalPtr, ::mlir::Value ldsPtr, uint32_t offset, ::mlir::Attribute cpol, ::mlir::Value mask, /*optional*/::mlir::ArrayAttr alias_scopes, /*optional*/::mlir::ArrayAttr noalias_scopes, /*optional*/::mlir::ArrayAttr tbaa); static ClusterLoadAsyncToLDSB128Op create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::Value globalPtr, ::mlir::Value ldsPtr, uint32_t offset, ::mlir::Attribute cpol, ::mlir::Value mask, /*optional*/::mlir::ArrayAttr alias_scopes, /*optional*/::mlir::ArrayAttr noalias_scopes, /*optional*/::mlir::ArrayAttr tbaa); static void build(::mlir::OpBuilder &, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, ::llvm::ArrayRef<::mlir::NamedAttribute> attributes = {}); static ClusterLoadAsyncToLDSB128Op create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, ::llvm::ArrayRef<::mlir::NamedAttribute> attributes = {}); static ClusterLoadAsyncToLDSB128Op create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, ::llvm::ArrayRef<::mlir::NamedAttribute> attributes = {}); static void build(::mlir::OpBuilder &, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, const Properties &properties, ::llvm::ArrayRef<::mlir::NamedAttribute> discardableAttributes = {}); static ClusterLoadAsyncToLDSB128Op create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, const Properties &properties, ::llvm::ArrayRef<::mlir::NamedAttribute> discardableAttributes = {}); static ClusterLoadAsyncToLDSB128Op create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, const Properties &properties, ::llvm::ArrayRef<::mlir::NamedAttribute> discardableAttributes = {}); static void populateDefaultProperties(::mlir::OperationName opName, Properties &properties); ::llvm::LogicalResult verifyInvariantsImpl(); ::llvm::LogicalResult verifyInvariants(); ::llvm::SmallVector<::mlir::Value> getAccessedOperands(); static ::mlir::ParseResult parse(::mlir::OpAsmParser &parser, ::mlir::OperationState &result); void print(::mlir::OpAsmPrinter &_odsPrinter); void getEffects(::llvm::SmallVectorImpl<::mlir::SideEffects::EffectInstance<::mlir::MemoryEffects::Effect>> &effects); private: ::mlir::StringAttr getAttributeNameForIndex(unsigned index) { return getAttributeNameForIndex((*this)->getName(), index); } static ::mlir::StringAttr getAttributeNameForIndex(::mlir::OperationName name, unsigned index) { assert(index < 5 && "invalid attribute index"); assert(name.getStringRef() == getOperationName() && "invalid operation name"); assert(name.isRegistered() && "Operation isn't registered, missing a " "dependent dialect loading?"); return name.getAttributeNames()[index]; } public: }; } // namespace mlir::ROCDL MLIR_DECLARE_EXPLICIT_TYPE_ID(::mlir::ROCDL::ClusterLoadAsyncToLDSB128Op) MLIR_DECLARE_EXPLICIT_TYPE_ID(::mlir::ROCDL::detail::ClusterLoadAsyncToLDSB128OpGenericAdaptorBase::Properties) namespace mlir::ROCDL { //===----------------------------------------------------------------------===// // ::mlir::ROCDL::ClusterLoadAsyncToLDSB32Op declarations //===----------------------------------------------------------------------===// namespace detail { class ClusterLoadAsyncToLDSB32OpGenericAdaptorBase { public: struct Properties { using alias_scopesTy = ::mlir::ArrayAttr; alias_scopesTy alias_scopes; auto getAliasScopes() const { auto &propStorage = this->alias_scopes; return ::llvm::dyn_cast_or_null<::mlir::ArrayAttr>(propStorage); } void setAliasScopes(const ::mlir::ArrayAttr &propValue) { this->alias_scopes = propValue; } using cpolTy = ::mlir::Attribute; cpolTy cpol; auto getCpol() const { auto &propStorage = this->cpol; return ::llvm::dyn_cast_or_null<::mlir::Attribute>(propStorage); } void setCpol(const ::mlir::Attribute &propValue) { this->cpol = propValue; } using noalias_scopesTy = ::mlir::ArrayAttr; noalias_scopesTy noalias_scopes; auto getNoaliasScopes() const { auto &propStorage = this->noalias_scopes; return ::llvm::dyn_cast_or_null<::mlir::ArrayAttr>(propStorage); } void setNoaliasScopes(const ::mlir::ArrayAttr &propValue) { this->noalias_scopes = propValue; } using offsetTy = ::mlir::IntegerAttr; offsetTy offset; auto getOffset() const { auto &propStorage = this->offset; return ::llvm::cast<::mlir::IntegerAttr>(propStorage); } void setOffset(const ::mlir::IntegerAttr &propValue) { this->offset = propValue; } using tbaaTy = ::mlir::ArrayAttr; tbaaTy tbaa; auto getTbaa() const { auto &propStorage = this->tbaa; return ::llvm::dyn_cast_or_null<::mlir::ArrayAttr>(propStorage); } void setTbaa(const ::mlir::ArrayAttr &propValue) { this->tbaa = propValue; } bool operator==(const Properties &rhs) const { return rhs.alias_scopes == this->alias_scopes && rhs.cpol == this->cpol && rhs.noalias_scopes == this->noalias_scopes && rhs.offset == this->offset && rhs.tbaa == this->tbaa && true; } bool operator!=(const Properties &rhs) const { return !(*this == rhs); } }; protected: ::mlir::DictionaryAttr odsAttrs; ::std::optional<::mlir::OperationName> odsOpName; Properties properties; ::mlir::RegionRange odsRegions; public: ClusterLoadAsyncToLDSB32OpGenericAdaptorBase(::mlir::DictionaryAttr attrs, const Properties &properties, ::mlir::RegionRange regions = {}) : odsAttrs(attrs), properties(properties), odsRegions(regions) { if (odsAttrs) odsOpName.emplace("rocdl.cluster.load.async.to.lds.b32", odsAttrs.getContext()); } ClusterLoadAsyncToLDSB32OpGenericAdaptorBase(ClusterLoadAsyncToLDSB32Op op); std::pair getODSOperandIndexAndLength(unsigned index, unsigned odsOperandsSize) { return {index, 1}; } const Properties &getProperties() { return properties; } ::mlir::DictionaryAttr getAttributes() { return odsAttrs; } ::mlir::IntegerAttr getOffsetAttr() { auto attr = ::llvm::cast<::mlir::IntegerAttr>(getProperties().offset); return attr; } uint32_t getOffset(); ::mlir::Attribute getCpolAttr(); ::mlir::Attribute getCpol(); ::mlir::ArrayAttr getAliasScopesAttr() { auto attr = ::llvm::dyn_cast_or_null<::mlir::ArrayAttr>(getProperties().alias_scopes); return attr; } ::std::optional< ::mlir::ArrayAttr > getAliasScopes(); ::mlir::ArrayAttr getNoaliasScopesAttr() { auto attr = ::llvm::dyn_cast_or_null<::mlir::ArrayAttr>(getProperties().noalias_scopes); return attr; } ::std::optional< ::mlir::ArrayAttr > getNoaliasScopes(); ::mlir::ArrayAttr getTbaaAttr() { auto attr = ::llvm::dyn_cast_or_null<::mlir::ArrayAttr>(getProperties().tbaa); return attr; } ::std::optional< ::mlir::ArrayAttr > getTbaa(); }; } // namespace detail template class ClusterLoadAsyncToLDSB32OpGenericAdaptor : public detail::ClusterLoadAsyncToLDSB32OpGenericAdaptorBase { using ValueT = ::llvm::detail::ValueOfRange; using Base = detail::ClusterLoadAsyncToLDSB32OpGenericAdaptorBase; static constexpr int odsIndex_globalPtr = 0; static constexpr int odsIndex_ldsPtr = 1; static constexpr int odsIndex_mask = 2; public: ClusterLoadAsyncToLDSB32OpGenericAdaptor(RangeT values, ::mlir::DictionaryAttr attrs, const Properties &properties, ::mlir::RegionRange regions = {}) : Base(attrs, properties, regions), odsOperands(values) {} ClusterLoadAsyncToLDSB32OpGenericAdaptor(RangeT values, ::mlir::DictionaryAttr attrs, ::mlir::PropertyRef properties, ::mlir::RegionRange regions = {}) : ClusterLoadAsyncToLDSB32OpGenericAdaptor(values, attrs, (properties ? *properties.as() : Properties{}), regions) {} ClusterLoadAsyncToLDSB32OpGenericAdaptor(RangeT values, ::mlir::DictionaryAttr attrs = nullptr) : ClusterLoadAsyncToLDSB32OpGenericAdaptor(values, attrs, Properties{}, {}) {} ClusterLoadAsyncToLDSB32OpGenericAdaptor(RangeT values, const ClusterLoadAsyncToLDSB32OpGenericAdaptorBase &base) : Base(base), odsOperands(values) {} template >> ClusterLoadAsyncToLDSB32OpGenericAdaptor(RangeT values, LateInst op) : Base(op), odsOperands(values) {} std::pair getODSOperandIndexAndLength(unsigned index) { return Base::getODSOperandIndexAndLength(index, odsOperands.size()); } RangeT getODSOperands(unsigned index) { auto valueRange = getODSOperandIndexAndLength(index); return {std::next(odsOperands.begin(), valueRange.first), std::next(odsOperands.begin(), valueRange.first + valueRange.second)}; } ValueT getGlobalPtr() { return (*getODSOperands(0).begin()); } ValueT getLdsPtr() { return (*getODSOperands(1).begin()); } ValueT getMask() { return (*getODSOperands(2).begin()); } RangeT getOperands() { return odsOperands; } private: RangeT odsOperands; }; class ClusterLoadAsyncToLDSB32OpAdaptor : public ClusterLoadAsyncToLDSB32OpGenericAdaptor<::mlir::ValueRange> { public: using ClusterLoadAsyncToLDSB32OpGenericAdaptor::ClusterLoadAsyncToLDSB32OpGenericAdaptor; ClusterLoadAsyncToLDSB32OpAdaptor(ClusterLoadAsyncToLDSB32Op op); ::llvm::LogicalResult verify(::mlir::Location loc); }; class ClusterLoadAsyncToLDSB32Op : public ::mlir::Op::Impl, ::mlir::OpTrait::OpInvariants, ::mlir::BytecodeOpInterface::Trait, ::mlir::LLVM::AliasAnalysisOpInterface::Trait, ::mlir::MemoryEffectOpInterface::Trait> { public: using Op::Op; using Op::print; using Adaptor = ClusterLoadAsyncToLDSB32OpAdaptor; template using GenericAdaptor = ClusterLoadAsyncToLDSB32OpGenericAdaptor; using FoldAdaptor = GenericAdaptor<::llvm::ArrayRef<::mlir::Attribute>>; static constexpr int odsIndex_globalPtr = 0; static constexpr int odsIndex_ldsPtr = 1; static constexpr int odsIndex_mask = 2; using Properties = FoldAdaptor::Properties; using ::mlir::LLVM::AliasAnalysisOpInterface::Trait::getAliasScopesOrNull; using ::mlir::LLVM::AliasAnalysisOpInterface::Trait::setAliasScopes; using ::mlir::LLVM::AliasAnalysisOpInterface::Trait::getNoAliasScopesOrNull; using ::mlir::LLVM::AliasAnalysisOpInterface::Trait::setNoAliasScopes; using ::mlir::LLVM::AliasAnalysisOpInterface::Trait::getTBAATagsOrNull; using ::mlir::LLVM::AliasAnalysisOpInterface::Trait::setTBAATags; static ::llvm::ArrayRef<::llvm::StringRef> getAttributeNames() { static ::llvm::StringRef attrNames[] = {::llvm::StringRef("alias_scopes"), ::llvm::StringRef("cpol"), ::llvm::StringRef("noalias_scopes"), ::llvm::StringRef("offset"), ::llvm::StringRef("tbaa")}; return ::llvm::ArrayRef(attrNames); } ::mlir::StringAttr getAliasScopesAttrName() { return getAttributeNameForIndex(0); } static ::mlir::StringAttr getAliasScopesAttrName(::mlir::OperationName name) { return getAttributeNameForIndex(name, 0); } ::mlir::StringAttr getCpolAttrName() { return getAttributeNameForIndex(1); } static ::mlir::StringAttr getCpolAttrName(::mlir::OperationName name) { return getAttributeNameForIndex(name, 1); } ::mlir::StringAttr getNoaliasScopesAttrName() { return getAttributeNameForIndex(2); } static ::mlir::StringAttr getNoaliasScopesAttrName(::mlir::OperationName name) { return getAttributeNameForIndex(name, 2); } ::mlir::StringAttr getOffsetAttrName() { return getAttributeNameForIndex(3); } static ::mlir::StringAttr getOffsetAttrName(::mlir::OperationName name) { return getAttributeNameForIndex(name, 3); } ::mlir::StringAttr getTbaaAttrName() { return getAttributeNameForIndex(4); } static ::mlir::StringAttr getTbaaAttrName(::mlir::OperationName name) { return getAttributeNameForIndex(name, 4); } static constexpr ::llvm::StringLiteral getOperationName() { return ::llvm::StringLiteral("rocdl.cluster.load.async.to.lds.b32"); } std::pair getODSOperandIndexAndLength(unsigned index) { return {index, 1}; } ::mlir::Operation::operand_range getODSOperands(unsigned index) { auto valueRange = getODSOperandIndexAndLength(index); return {std::next(getOperation()->operand_begin(), valueRange.first), std::next(getOperation()->operand_begin(), valueRange.first + valueRange.second)}; } ::mlir::TypedValue<::mlir::LLVM::LLVMPointerType> getGlobalPtr() { return ::llvm::cast<::mlir::TypedValue<::mlir::LLVM::LLVMPointerType>>(*getODSOperands(0).begin()); } ::mlir::TypedValue<::mlir::LLVM::LLVMPointerType> getLdsPtr() { return ::llvm::cast<::mlir::TypedValue<::mlir::LLVM::LLVMPointerType>>(*getODSOperands(1).begin()); } ::mlir::TypedValue<::mlir::IntegerType> getMask() { return ::llvm::cast<::mlir::TypedValue<::mlir::IntegerType>>(*getODSOperands(2).begin()); } ::mlir::OpOperand &getGlobalPtrMutable() { auto range = getODSOperandIndexAndLength(0); return getOperation()->getOpOperand(range.first); } ::mlir::OpOperand &getLdsPtrMutable() { auto range = getODSOperandIndexAndLength(1); return getOperation()->getOpOperand(range.first); } ::mlir::OpOperand &getMaskMutable() { auto range = getODSOperandIndexAndLength(2); return getOperation()->getOpOperand(range.first); } std::pair getODSResultIndexAndLength(unsigned index) { return {index, 1}; } ::mlir::Operation::result_range getODSResults(unsigned index) { auto valueRange = getODSResultIndexAndLength(index); return {std::next(getOperation()->result_begin(), valueRange.first), std::next(getOperation()->result_begin(), valueRange.first + valueRange.second)}; } static ::llvm::LogicalResult setPropertiesFromAttr(Properties &prop, ::mlir::Attribute attr, ::llvm::function_ref<::mlir::InFlightDiagnostic()> emitError); static ::mlir::Attribute getPropertiesAsAttr(::mlir::MLIRContext *ctx, const Properties &prop); static llvm::hash_code computePropertiesHash(const Properties &prop); static std::optional getInherentAttr(::mlir::MLIRContext *ctx, const Properties &prop, llvm::StringRef name); static void setInherentAttr(Properties &prop, llvm::StringRef name, mlir::Attribute value); static void populateInherentAttrs(::mlir::MLIRContext *ctx, const Properties &prop, ::mlir::NamedAttrList &attrs); static ::llvm::LogicalResult verifyInherentAttrs(::mlir::OperationName opName, ::mlir::NamedAttrList &attrs, llvm::function_ref<::mlir::InFlightDiagnostic()> emitError); static ::llvm::LogicalResult readProperties(::mlir::DialectBytecodeReader &reader, ::mlir::OperationState &state); void writeProperties(::mlir::DialectBytecodeWriter &writer); ::mlir::IntegerAttr getOffsetAttr() { return ::llvm::cast<::mlir::IntegerAttr>(getProperties().offset); } uint32_t getOffset(); ::mlir::Attribute getCpolAttr() { return ::llvm::dyn_cast_or_null<::mlir::Attribute>(getProperties().cpol); } ::mlir::Attribute getCpol(); ::mlir::ArrayAttr getAliasScopesAttr() { return ::llvm::dyn_cast_or_null<::mlir::ArrayAttr>(getProperties().alias_scopes); } ::std::optional< ::mlir::ArrayAttr > getAliasScopes(); ::mlir::ArrayAttr getNoaliasScopesAttr() { return ::llvm::dyn_cast_or_null<::mlir::ArrayAttr>(getProperties().noalias_scopes); } ::std::optional< ::mlir::ArrayAttr > getNoaliasScopes(); ::mlir::ArrayAttr getTbaaAttr() { return ::llvm::dyn_cast_or_null<::mlir::ArrayAttr>(getProperties().tbaa); } ::std::optional< ::mlir::ArrayAttr > getTbaa(); void setOffsetAttr(::mlir::IntegerAttr attr) { getProperties().offset = attr; } void setOffset(uint32_t attrValue); void setCpolAttr(::mlir::Attribute attr) { getProperties().cpol = attr; } void setAliasScopesAttr(::mlir::ArrayAttr attr) { getProperties().alias_scopes = attr; } void setNoaliasScopesAttr(::mlir::ArrayAttr attr) { getProperties().noalias_scopes = attr; } void setTbaaAttr(::mlir::ArrayAttr attr) { getProperties().tbaa = attr; } ::mlir::Attribute removeAliasScopesAttr() { auto attr = getProperties().alias_scopes; getProperties().alias_scopes = {}; return attr; } ::mlir::Attribute removeNoaliasScopesAttr() { auto attr = getProperties().noalias_scopes; getProperties().noalias_scopes = {}; return attr; } ::mlir::Attribute removeTbaaAttr() { auto attr = getProperties().tbaa; getProperties().tbaa = {}; return attr; } static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::Value globalPtr, ::mlir::Value ldsPtr, ::mlir::IntegerAttr offset, ::mlir::Attribute cpol, ::mlir::Value mask, /*optional*/::mlir::ArrayAttr alias_scopes, /*optional*/::mlir::ArrayAttr noalias_scopes, /*optional*/::mlir::ArrayAttr tbaa); static ClusterLoadAsyncToLDSB32Op create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::Value globalPtr, ::mlir::Value ldsPtr, ::mlir::IntegerAttr offset, ::mlir::Attribute cpol, ::mlir::Value mask, /*optional*/::mlir::ArrayAttr alias_scopes, /*optional*/::mlir::ArrayAttr noalias_scopes, /*optional*/::mlir::ArrayAttr tbaa); static ClusterLoadAsyncToLDSB32Op create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::Value globalPtr, ::mlir::Value ldsPtr, ::mlir::IntegerAttr offset, ::mlir::Attribute cpol, ::mlir::Value mask, /*optional*/::mlir::ArrayAttr alias_scopes, /*optional*/::mlir::ArrayAttr noalias_scopes, /*optional*/::mlir::ArrayAttr tbaa); static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::Value globalPtr, ::mlir::Value ldsPtr, ::mlir::IntegerAttr offset, ::mlir::Attribute cpol, ::mlir::Value mask, /*optional*/::mlir::ArrayAttr alias_scopes, /*optional*/::mlir::ArrayAttr noalias_scopes, /*optional*/::mlir::ArrayAttr tbaa); static ClusterLoadAsyncToLDSB32Op create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::Value globalPtr, ::mlir::Value ldsPtr, ::mlir::IntegerAttr offset, ::mlir::Attribute cpol, ::mlir::Value mask, /*optional*/::mlir::ArrayAttr alias_scopes, /*optional*/::mlir::ArrayAttr noalias_scopes, /*optional*/::mlir::ArrayAttr tbaa); static ClusterLoadAsyncToLDSB32Op create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::Value globalPtr, ::mlir::Value ldsPtr, ::mlir::IntegerAttr offset, ::mlir::Attribute cpol, ::mlir::Value mask, /*optional*/::mlir::ArrayAttr alias_scopes, /*optional*/::mlir::ArrayAttr noalias_scopes, /*optional*/::mlir::ArrayAttr tbaa); static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::Value globalPtr, ::mlir::Value ldsPtr, uint32_t offset, ::mlir::Attribute cpol, ::mlir::Value mask, /*optional*/::mlir::ArrayAttr alias_scopes, /*optional*/::mlir::ArrayAttr noalias_scopes, /*optional*/::mlir::ArrayAttr tbaa); static ClusterLoadAsyncToLDSB32Op create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::Value globalPtr, ::mlir::Value ldsPtr, uint32_t offset, ::mlir::Attribute cpol, ::mlir::Value mask, /*optional*/::mlir::ArrayAttr alias_scopes, /*optional*/::mlir::ArrayAttr noalias_scopes, /*optional*/::mlir::ArrayAttr tbaa); static ClusterLoadAsyncToLDSB32Op create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::Value globalPtr, ::mlir::Value ldsPtr, uint32_t offset, ::mlir::Attribute cpol, ::mlir::Value mask, /*optional*/::mlir::ArrayAttr alias_scopes, /*optional*/::mlir::ArrayAttr noalias_scopes, /*optional*/::mlir::ArrayAttr tbaa); static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::Value globalPtr, ::mlir::Value ldsPtr, uint32_t offset, ::mlir::Attribute cpol, ::mlir::Value mask, /*optional*/::mlir::ArrayAttr alias_scopes, /*optional*/::mlir::ArrayAttr noalias_scopes, /*optional*/::mlir::ArrayAttr tbaa); static ClusterLoadAsyncToLDSB32Op create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::Value globalPtr, ::mlir::Value ldsPtr, uint32_t offset, ::mlir::Attribute cpol, ::mlir::Value mask, /*optional*/::mlir::ArrayAttr alias_scopes, /*optional*/::mlir::ArrayAttr noalias_scopes, /*optional*/::mlir::ArrayAttr tbaa); static ClusterLoadAsyncToLDSB32Op create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::Value globalPtr, ::mlir::Value ldsPtr, uint32_t offset, ::mlir::Attribute cpol, ::mlir::Value mask, /*optional*/::mlir::ArrayAttr alias_scopes, /*optional*/::mlir::ArrayAttr noalias_scopes, /*optional*/::mlir::ArrayAttr tbaa); static void build(::mlir::OpBuilder &, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, ::llvm::ArrayRef<::mlir::NamedAttribute> attributes = {}); static ClusterLoadAsyncToLDSB32Op create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, ::llvm::ArrayRef<::mlir::NamedAttribute> attributes = {}); static ClusterLoadAsyncToLDSB32Op create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, ::llvm::ArrayRef<::mlir::NamedAttribute> attributes = {}); static void build(::mlir::OpBuilder &, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, const Properties &properties, ::llvm::ArrayRef<::mlir::NamedAttribute> discardableAttributes = {}); static ClusterLoadAsyncToLDSB32Op create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, const Properties &properties, ::llvm::ArrayRef<::mlir::NamedAttribute> discardableAttributes = {}); static ClusterLoadAsyncToLDSB32Op create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, const Properties &properties, ::llvm::ArrayRef<::mlir::NamedAttribute> discardableAttributes = {}); static void populateDefaultProperties(::mlir::OperationName opName, Properties &properties); ::llvm::LogicalResult verifyInvariantsImpl(); ::llvm::LogicalResult verifyInvariants(); ::llvm::SmallVector<::mlir::Value> getAccessedOperands(); static ::mlir::ParseResult parse(::mlir::OpAsmParser &parser, ::mlir::OperationState &result); void print(::mlir::OpAsmPrinter &_odsPrinter); void getEffects(::llvm::SmallVectorImpl<::mlir::SideEffects::EffectInstance<::mlir::MemoryEffects::Effect>> &effects); private: ::mlir::StringAttr getAttributeNameForIndex(unsigned index) { return getAttributeNameForIndex((*this)->getName(), index); } static ::mlir::StringAttr getAttributeNameForIndex(::mlir::OperationName name, unsigned index) { assert(index < 5 && "invalid attribute index"); assert(name.getStringRef() == getOperationName() && "invalid operation name"); assert(name.isRegistered() && "Operation isn't registered, missing a " "dependent dialect loading?"); return name.getAttributeNames()[index]; } public: }; } // namespace mlir::ROCDL MLIR_DECLARE_EXPLICIT_TYPE_ID(::mlir::ROCDL::ClusterLoadAsyncToLDSB32Op) MLIR_DECLARE_EXPLICIT_TYPE_ID(::mlir::ROCDL::detail::ClusterLoadAsyncToLDSB32OpGenericAdaptorBase::Properties) namespace mlir::ROCDL { //===----------------------------------------------------------------------===// // ::mlir::ROCDL::ClusterLoadAsyncToLDSB64Op declarations //===----------------------------------------------------------------------===// namespace detail { class ClusterLoadAsyncToLDSB64OpGenericAdaptorBase { public: struct Properties { using alias_scopesTy = ::mlir::ArrayAttr; alias_scopesTy alias_scopes; auto getAliasScopes() const { auto &propStorage = this->alias_scopes; return ::llvm::dyn_cast_or_null<::mlir::ArrayAttr>(propStorage); } void setAliasScopes(const ::mlir::ArrayAttr &propValue) { this->alias_scopes = propValue; } using cpolTy = ::mlir::Attribute; cpolTy cpol; auto getCpol() const { auto &propStorage = this->cpol; return ::llvm::dyn_cast_or_null<::mlir::Attribute>(propStorage); } void setCpol(const ::mlir::Attribute &propValue) { this->cpol = propValue; } using noalias_scopesTy = ::mlir::ArrayAttr; noalias_scopesTy noalias_scopes; auto getNoaliasScopes() const { auto &propStorage = this->noalias_scopes; return ::llvm::dyn_cast_or_null<::mlir::ArrayAttr>(propStorage); } void setNoaliasScopes(const ::mlir::ArrayAttr &propValue) { this->noalias_scopes = propValue; } using offsetTy = ::mlir::IntegerAttr; offsetTy offset; auto getOffset() const { auto &propStorage = this->offset; return ::llvm::cast<::mlir::IntegerAttr>(propStorage); } void setOffset(const ::mlir::IntegerAttr &propValue) { this->offset = propValue; } using tbaaTy = ::mlir::ArrayAttr; tbaaTy tbaa; auto getTbaa() const { auto &propStorage = this->tbaa; return ::llvm::dyn_cast_or_null<::mlir::ArrayAttr>(propStorage); } void setTbaa(const ::mlir::ArrayAttr &propValue) { this->tbaa = propValue; } bool operator==(const Properties &rhs) const { return rhs.alias_scopes == this->alias_scopes && rhs.cpol == this->cpol && rhs.noalias_scopes == this->noalias_scopes && rhs.offset == this->offset && rhs.tbaa == this->tbaa && true; } bool operator!=(const Properties &rhs) const { return !(*this == rhs); } }; protected: ::mlir::DictionaryAttr odsAttrs; ::std::optional<::mlir::OperationName> odsOpName; Properties properties; ::mlir::RegionRange odsRegions; public: ClusterLoadAsyncToLDSB64OpGenericAdaptorBase(::mlir::DictionaryAttr attrs, const Properties &properties, ::mlir::RegionRange regions = {}) : odsAttrs(attrs), properties(properties), odsRegions(regions) { if (odsAttrs) odsOpName.emplace("rocdl.cluster.load.async.to.lds.b64", odsAttrs.getContext()); } ClusterLoadAsyncToLDSB64OpGenericAdaptorBase(ClusterLoadAsyncToLDSB64Op op); std::pair getODSOperandIndexAndLength(unsigned index, unsigned odsOperandsSize) { return {index, 1}; } const Properties &getProperties() { return properties; } ::mlir::DictionaryAttr getAttributes() { return odsAttrs; } ::mlir::IntegerAttr getOffsetAttr() { auto attr = ::llvm::cast<::mlir::IntegerAttr>(getProperties().offset); return attr; } uint32_t getOffset(); ::mlir::Attribute getCpolAttr(); ::mlir::Attribute getCpol(); ::mlir::ArrayAttr getAliasScopesAttr() { auto attr = ::llvm::dyn_cast_or_null<::mlir::ArrayAttr>(getProperties().alias_scopes); return attr; } ::std::optional< ::mlir::ArrayAttr > getAliasScopes(); ::mlir::ArrayAttr getNoaliasScopesAttr() { auto attr = ::llvm::dyn_cast_or_null<::mlir::ArrayAttr>(getProperties().noalias_scopes); return attr; } ::std::optional< ::mlir::ArrayAttr > getNoaliasScopes(); ::mlir::ArrayAttr getTbaaAttr() { auto attr = ::llvm::dyn_cast_or_null<::mlir::ArrayAttr>(getProperties().tbaa); return attr; } ::std::optional< ::mlir::ArrayAttr > getTbaa(); }; } // namespace detail template class ClusterLoadAsyncToLDSB64OpGenericAdaptor : public detail::ClusterLoadAsyncToLDSB64OpGenericAdaptorBase { using ValueT = ::llvm::detail::ValueOfRange; using Base = detail::ClusterLoadAsyncToLDSB64OpGenericAdaptorBase; static constexpr int odsIndex_globalPtr = 0; static constexpr int odsIndex_ldsPtr = 1; static constexpr int odsIndex_mask = 2; public: ClusterLoadAsyncToLDSB64OpGenericAdaptor(RangeT values, ::mlir::DictionaryAttr attrs, const Properties &properties, ::mlir::RegionRange regions = {}) : Base(attrs, properties, regions), odsOperands(values) {} ClusterLoadAsyncToLDSB64OpGenericAdaptor(RangeT values, ::mlir::DictionaryAttr attrs, ::mlir::PropertyRef properties, ::mlir::RegionRange regions = {}) : ClusterLoadAsyncToLDSB64OpGenericAdaptor(values, attrs, (properties ? *properties.as() : Properties{}), regions) {} ClusterLoadAsyncToLDSB64OpGenericAdaptor(RangeT values, ::mlir::DictionaryAttr attrs = nullptr) : ClusterLoadAsyncToLDSB64OpGenericAdaptor(values, attrs, Properties{}, {}) {} ClusterLoadAsyncToLDSB64OpGenericAdaptor(RangeT values, const ClusterLoadAsyncToLDSB64OpGenericAdaptorBase &base) : Base(base), odsOperands(values) {} template >> ClusterLoadAsyncToLDSB64OpGenericAdaptor(RangeT values, LateInst op) : Base(op), odsOperands(values) {} std::pair getODSOperandIndexAndLength(unsigned index) { return Base::getODSOperandIndexAndLength(index, odsOperands.size()); } RangeT getODSOperands(unsigned index) { auto valueRange = getODSOperandIndexAndLength(index); return {std::next(odsOperands.begin(), valueRange.first), std::next(odsOperands.begin(), valueRange.first + valueRange.second)}; } ValueT getGlobalPtr() { return (*getODSOperands(0).begin()); } ValueT getLdsPtr() { return (*getODSOperands(1).begin()); } ValueT getMask() { return (*getODSOperands(2).begin()); } RangeT getOperands() { return odsOperands; } private: RangeT odsOperands; }; class ClusterLoadAsyncToLDSB64OpAdaptor : public ClusterLoadAsyncToLDSB64OpGenericAdaptor<::mlir::ValueRange> { public: using ClusterLoadAsyncToLDSB64OpGenericAdaptor::ClusterLoadAsyncToLDSB64OpGenericAdaptor; ClusterLoadAsyncToLDSB64OpAdaptor(ClusterLoadAsyncToLDSB64Op op); ::llvm::LogicalResult verify(::mlir::Location loc); }; class ClusterLoadAsyncToLDSB64Op : public ::mlir::Op::Impl, ::mlir::OpTrait::OpInvariants, ::mlir::BytecodeOpInterface::Trait, ::mlir::LLVM::AliasAnalysisOpInterface::Trait, ::mlir::MemoryEffectOpInterface::Trait> { public: using Op::Op; using Op::print; using Adaptor = ClusterLoadAsyncToLDSB64OpAdaptor; template using GenericAdaptor = ClusterLoadAsyncToLDSB64OpGenericAdaptor; using FoldAdaptor = GenericAdaptor<::llvm::ArrayRef<::mlir::Attribute>>; static constexpr int odsIndex_globalPtr = 0; static constexpr int odsIndex_ldsPtr = 1; static constexpr int odsIndex_mask = 2; using Properties = FoldAdaptor::Properties; using ::mlir::LLVM::AliasAnalysisOpInterface::Trait::getAliasScopesOrNull; using ::mlir::LLVM::AliasAnalysisOpInterface::Trait::setAliasScopes; using ::mlir::LLVM::AliasAnalysisOpInterface::Trait::getNoAliasScopesOrNull; using ::mlir::LLVM::AliasAnalysisOpInterface::Trait::setNoAliasScopes; using ::mlir::LLVM::AliasAnalysisOpInterface::Trait::getTBAATagsOrNull; using ::mlir::LLVM::AliasAnalysisOpInterface::Trait::setTBAATags; static ::llvm::ArrayRef<::llvm::StringRef> getAttributeNames() { static ::llvm::StringRef attrNames[] = {::llvm::StringRef("alias_scopes"), ::llvm::StringRef("cpol"), ::llvm::StringRef("noalias_scopes"), ::llvm::StringRef("offset"), ::llvm::StringRef("tbaa")}; return ::llvm::ArrayRef(attrNames); } ::mlir::StringAttr getAliasScopesAttrName() { return getAttributeNameForIndex(0); } static ::mlir::StringAttr getAliasScopesAttrName(::mlir::OperationName name) { return getAttributeNameForIndex(name, 0); } ::mlir::StringAttr getCpolAttrName() { return getAttributeNameForIndex(1); } static ::mlir::StringAttr getCpolAttrName(::mlir::OperationName name) { return getAttributeNameForIndex(name, 1); } ::mlir::StringAttr getNoaliasScopesAttrName() { return getAttributeNameForIndex(2); } static ::mlir::StringAttr getNoaliasScopesAttrName(::mlir::OperationName name) { return getAttributeNameForIndex(name, 2); } ::mlir::StringAttr getOffsetAttrName() { return getAttributeNameForIndex(3); } static ::mlir::StringAttr getOffsetAttrName(::mlir::OperationName name) { return getAttributeNameForIndex(name, 3); } ::mlir::StringAttr getTbaaAttrName() { return getAttributeNameForIndex(4); } static ::mlir::StringAttr getTbaaAttrName(::mlir::OperationName name) { return getAttributeNameForIndex(name, 4); } static constexpr ::llvm::StringLiteral getOperationName() { return ::llvm::StringLiteral("rocdl.cluster.load.async.to.lds.b64"); } std::pair getODSOperandIndexAndLength(unsigned index) { return {index, 1}; } ::mlir::Operation::operand_range getODSOperands(unsigned index) { auto valueRange = getODSOperandIndexAndLength(index); return {std::next(getOperation()->operand_begin(), valueRange.first), std::next(getOperation()->operand_begin(), valueRange.first + valueRange.second)}; } ::mlir::TypedValue<::mlir::LLVM::LLVMPointerType> getGlobalPtr() { return ::llvm::cast<::mlir::TypedValue<::mlir::LLVM::LLVMPointerType>>(*getODSOperands(0).begin()); } ::mlir::TypedValue<::mlir::LLVM::LLVMPointerType> getLdsPtr() { return ::llvm::cast<::mlir::TypedValue<::mlir::LLVM::LLVMPointerType>>(*getODSOperands(1).begin()); } ::mlir::TypedValue<::mlir::IntegerType> getMask() { return ::llvm::cast<::mlir::TypedValue<::mlir::IntegerType>>(*getODSOperands(2).begin()); } ::mlir::OpOperand &getGlobalPtrMutable() { auto range = getODSOperandIndexAndLength(0); return getOperation()->getOpOperand(range.first); } ::mlir::OpOperand &getLdsPtrMutable() { auto range = getODSOperandIndexAndLength(1); return getOperation()->getOpOperand(range.first); } ::mlir::OpOperand &getMaskMutable() { auto range = getODSOperandIndexAndLength(2); return getOperation()->getOpOperand(range.first); } std::pair getODSResultIndexAndLength(unsigned index) { return {index, 1}; } ::mlir::Operation::result_range getODSResults(unsigned index) { auto valueRange = getODSResultIndexAndLength(index); return {std::next(getOperation()->result_begin(), valueRange.first), std::next(getOperation()->result_begin(), valueRange.first + valueRange.second)}; } static ::llvm::LogicalResult setPropertiesFromAttr(Properties &prop, ::mlir::Attribute attr, ::llvm::function_ref<::mlir::InFlightDiagnostic()> emitError); static ::mlir::Attribute getPropertiesAsAttr(::mlir::MLIRContext *ctx, const Properties &prop); static llvm::hash_code computePropertiesHash(const Properties &prop); static std::optional getInherentAttr(::mlir::MLIRContext *ctx, const Properties &prop, llvm::StringRef name); static void setInherentAttr(Properties &prop, llvm::StringRef name, mlir::Attribute value); static void populateInherentAttrs(::mlir::MLIRContext *ctx, const Properties &prop, ::mlir::NamedAttrList &attrs); static ::llvm::LogicalResult verifyInherentAttrs(::mlir::OperationName opName, ::mlir::NamedAttrList &attrs, llvm::function_ref<::mlir::InFlightDiagnostic()> emitError); static ::llvm::LogicalResult readProperties(::mlir::DialectBytecodeReader &reader, ::mlir::OperationState &state); void writeProperties(::mlir::DialectBytecodeWriter &writer); ::mlir::IntegerAttr getOffsetAttr() { return ::llvm::cast<::mlir::IntegerAttr>(getProperties().offset); } uint32_t getOffset(); ::mlir::Attribute getCpolAttr() { return ::llvm::dyn_cast_or_null<::mlir::Attribute>(getProperties().cpol); } ::mlir::Attribute getCpol(); ::mlir::ArrayAttr getAliasScopesAttr() { return ::llvm::dyn_cast_or_null<::mlir::ArrayAttr>(getProperties().alias_scopes); } ::std::optional< ::mlir::ArrayAttr > getAliasScopes(); ::mlir::ArrayAttr getNoaliasScopesAttr() { return ::llvm::dyn_cast_or_null<::mlir::ArrayAttr>(getProperties().noalias_scopes); } ::std::optional< ::mlir::ArrayAttr > getNoaliasScopes(); ::mlir::ArrayAttr getTbaaAttr() { return ::llvm::dyn_cast_or_null<::mlir::ArrayAttr>(getProperties().tbaa); } ::std::optional< ::mlir::ArrayAttr > getTbaa(); void setOffsetAttr(::mlir::IntegerAttr attr) { getProperties().offset = attr; } void setOffset(uint32_t attrValue); void setCpolAttr(::mlir::Attribute attr) { getProperties().cpol = attr; } void setAliasScopesAttr(::mlir::ArrayAttr attr) { getProperties().alias_scopes = attr; } void setNoaliasScopesAttr(::mlir::ArrayAttr attr) { getProperties().noalias_scopes = attr; } void setTbaaAttr(::mlir::ArrayAttr attr) { getProperties().tbaa = attr; } ::mlir::Attribute removeAliasScopesAttr() { auto attr = getProperties().alias_scopes; getProperties().alias_scopes = {}; return attr; } ::mlir::Attribute removeNoaliasScopesAttr() { auto attr = getProperties().noalias_scopes; getProperties().noalias_scopes = {}; return attr; } ::mlir::Attribute removeTbaaAttr() { auto attr = getProperties().tbaa; getProperties().tbaa = {}; return attr; } static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::Value globalPtr, ::mlir::Value ldsPtr, ::mlir::IntegerAttr offset, ::mlir::Attribute cpol, ::mlir::Value mask, /*optional*/::mlir::ArrayAttr alias_scopes, /*optional*/::mlir::ArrayAttr noalias_scopes, /*optional*/::mlir::ArrayAttr tbaa); static ClusterLoadAsyncToLDSB64Op create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::Value globalPtr, ::mlir::Value ldsPtr, ::mlir::IntegerAttr offset, ::mlir::Attribute cpol, ::mlir::Value mask, /*optional*/::mlir::ArrayAttr alias_scopes, /*optional*/::mlir::ArrayAttr noalias_scopes, /*optional*/::mlir::ArrayAttr tbaa); static ClusterLoadAsyncToLDSB64Op create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::Value globalPtr, ::mlir::Value ldsPtr, ::mlir::IntegerAttr offset, ::mlir::Attribute cpol, ::mlir::Value mask, /*optional*/::mlir::ArrayAttr alias_scopes, /*optional*/::mlir::ArrayAttr noalias_scopes, /*optional*/::mlir::ArrayAttr tbaa); static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::Value globalPtr, ::mlir::Value ldsPtr, ::mlir::IntegerAttr offset, ::mlir::Attribute cpol, ::mlir::Value mask, /*optional*/::mlir::ArrayAttr alias_scopes, /*optional*/::mlir::ArrayAttr noalias_scopes, /*optional*/::mlir::ArrayAttr tbaa); static ClusterLoadAsyncToLDSB64Op create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::Value globalPtr, ::mlir::Value ldsPtr, ::mlir::IntegerAttr offset, ::mlir::Attribute cpol, ::mlir::Value mask, /*optional*/::mlir::ArrayAttr alias_scopes, /*optional*/::mlir::ArrayAttr noalias_scopes, /*optional*/::mlir::ArrayAttr tbaa); static ClusterLoadAsyncToLDSB64Op create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::Value globalPtr, ::mlir::Value ldsPtr, ::mlir::IntegerAttr offset, ::mlir::Attribute cpol, ::mlir::Value mask, /*optional*/::mlir::ArrayAttr alias_scopes, /*optional*/::mlir::ArrayAttr noalias_scopes, /*optional*/::mlir::ArrayAttr tbaa); static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::Value globalPtr, ::mlir::Value ldsPtr, uint32_t offset, ::mlir::Attribute cpol, ::mlir::Value mask, /*optional*/::mlir::ArrayAttr alias_scopes, /*optional*/::mlir::ArrayAttr noalias_scopes, /*optional*/::mlir::ArrayAttr tbaa); static ClusterLoadAsyncToLDSB64Op create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::Value globalPtr, ::mlir::Value ldsPtr, uint32_t offset, ::mlir::Attribute cpol, ::mlir::Value mask, /*optional*/::mlir::ArrayAttr alias_scopes, /*optional*/::mlir::ArrayAttr noalias_scopes, /*optional*/::mlir::ArrayAttr tbaa); static ClusterLoadAsyncToLDSB64Op create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::Value globalPtr, ::mlir::Value ldsPtr, uint32_t offset, ::mlir::Attribute cpol, ::mlir::Value mask, /*optional*/::mlir::ArrayAttr alias_scopes, /*optional*/::mlir::ArrayAttr noalias_scopes, /*optional*/::mlir::ArrayAttr tbaa); static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::Value globalPtr, ::mlir::Value ldsPtr, uint32_t offset, ::mlir::Attribute cpol, ::mlir::Value mask, /*optional*/::mlir::ArrayAttr alias_scopes, /*optional*/::mlir::ArrayAttr noalias_scopes, /*optional*/::mlir::ArrayAttr tbaa); static ClusterLoadAsyncToLDSB64Op create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::Value globalPtr, ::mlir::Value ldsPtr, uint32_t offset, ::mlir::Attribute cpol, ::mlir::Value mask, /*optional*/::mlir::ArrayAttr alias_scopes, /*optional*/::mlir::ArrayAttr noalias_scopes, /*optional*/::mlir::ArrayAttr tbaa); static ClusterLoadAsyncToLDSB64Op create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::Value globalPtr, ::mlir::Value ldsPtr, uint32_t offset, ::mlir::Attribute cpol, ::mlir::Value mask, /*optional*/::mlir::ArrayAttr alias_scopes, /*optional*/::mlir::ArrayAttr noalias_scopes, /*optional*/::mlir::ArrayAttr tbaa); static void build(::mlir::OpBuilder &, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, ::llvm::ArrayRef<::mlir::NamedAttribute> attributes = {}); static ClusterLoadAsyncToLDSB64Op create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, ::llvm::ArrayRef<::mlir::NamedAttribute> attributes = {}); static ClusterLoadAsyncToLDSB64Op create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, ::llvm::ArrayRef<::mlir::NamedAttribute> attributes = {}); static void build(::mlir::OpBuilder &, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, const Properties &properties, ::llvm::ArrayRef<::mlir::NamedAttribute> discardableAttributes = {}); static ClusterLoadAsyncToLDSB64Op create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, const Properties &properties, ::llvm::ArrayRef<::mlir::NamedAttribute> discardableAttributes = {}); static ClusterLoadAsyncToLDSB64Op create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, const Properties &properties, ::llvm::ArrayRef<::mlir::NamedAttribute> discardableAttributes = {}); static void populateDefaultProperties(::mlir::OperationName opName, Properties &properties); ::llvm::LogicalResult verifyInvariantsImpl(); ::llvm::LogicalResult verifyInvariants(); ::llvm::SmallVector<::mlir::Value> getAccessedOperands(); static ::mlir::ParseResult parse(::mlir::OpAsmParser &parser, ::mlir::OperationState &result); void print(::mlir::OpAsmPrinter &_odsPrinter); void getEffects(::llvm::SmallVectorImpl<::mlir::SideEffects::EffectInstance<::mlir::MemoryEffects::Effect>> &effects); private: ::mlir::StringAttr getAttributeNameForIndex(unsigned index) { return getAttributeNameForIndex((*this)->getName(), index); } static ::mlir::StringAttr getAttributeNameForIndex(::mlir::OperationName name, unsigned index) { assert(index < 5 && "invalid attribute index"); assert(name.getStringRef() == getOperationName() && "invalid operation name"); assert(name.isRegistered() && "Operation isn't registered, missing a " "dependent dialect loading?"); return name.getAttributeNames()[index]; } public: }; } // namespace mlir::ROCDL MLIR_DECLARE_EXPLICIT_TYPE_ID(::mlir::ROCDL::ClusterLoadAsyncToLDSB64Op) MLIR_DECLARE_EXPLICIT_TYPE_ID(::mlir::ROCDL::detail::ClusterLoadAsyncToLDSB64OpGenericAdaptorBase::Properties) namespace mlir::ROCDL { //===----------------------------------------------------------------------===// // ::mlir::ROCDL::ClusterLoadAsyncToLDSB8Op declarations //===----------------------------------------------------------------------===// namespace detail { class ClusterLoadAsyncToLDSB8OpGenericAdaptorBase { public: struct Properties { using alias_scopesTy = ::mlir::ArrayAttr; alias_scopesTy alias_scopes; auto getAliasScopes() const { auto &propStorage = this->alias_scopes; return ::llvm::dyn_cast_or_null<::mlir::ArrayAttr>(propStorage); } void setAliasScopes(const ::mlir::ArrayAttr &propValue) { this->alias_scopes = propValue; } using cpolTy = ::mlir::Attribute; cpolTy cpol; auto getCpol() const { auto &propStorage = this->cpol; return ::llvm::dyn_cast_or_null<::mlir::Attribute>(propStorage); } void setCpol(const ::mlir::Attribute &propValue) { this->cpol = propValue; } using noalias_scopesTy = ::mlir::ArrayAttr; noalias_scopesTy noalias_scopes; auto getNoaliasScopes() const { auto &propStorage = this->noalias_scopes; return ::llvm::dyn_cast_or_null<::mlir::ArrayAttr>(propStorage); } void setNoaliasScopes(const ::mlir::ArrayAttr &propValue) { this->noalias_scopes = propValue; } using offsetTy = ::mlir::IntegerAttr; offsetTy offset; auto getOffset() const { auto &propStorage = this->offset; return ::llvm::cast<::mlir::IntegerAttr>(propStorage); } void setOffset(const ::mlir::IntegerAttr &propValue) { this->offset = propValue; } using tbaaTy = ::mlir::ArrayAttr; tbaaTy tbaa; auto getTbaa() const { auto &propStorage = this->tbaa; return ::llvm::dyn_cast_or_null<::mlir::ArrayAttr>(propStorage); } void setTbaa(const ::mlir::ArrayAttr &propValue) { this->tbaa = propValue; } bool operator==(const Properties &rhs) const { return rhs.alias_scopes == this->alias_scopes && rhs.cpol == this->cpol && rhs.noalias_scopes == this->noalias_scopes && rhs.offset == this->offset && rhs.tbaa == this->tbaa && true; } bool operator!=(const Properties &rhs) const { return !(*this == rhs); } }; protected: ::mlir::DictionaryAttr odsAttrs; ::std::optional<::mlir::OperationName> odsOpName; Properties properties; ::mlir::RegionRange odsRegions; public: ClusterLoadAsyncToLDSB8OpGenericAdaptorBase(::mlir::DictionaryAttr attrs, const Properties &properties, ::mlir::RegionRange regions = {}) : odsAttrs(attrs), properties(properties), odsRegions(regions) { if (odsAttrs) odsOpName.emplace("rocdl.cluster.load.async.to.lds.b8", odsAttrs.getContext()); } ClusterLoadAsyncToLDSB8OpGenericAdaptorBase(ClusterLoadAsyncToLDSB8Op op); std::pair getODSOperandIndexAndLength(unsigned index, unsigned odsOperandsSize) { return {index, 1}; } const Properties &getProperties() { return properties; } ::mlir::DictionaryAttr getAttributes() { return odsAttrs; } ::mlir::IntegerAttr getOffsetAttr() { auto attr = ::llvm::cast<::mlir::IntegerAttr>(getProperties().offset); return attr; } uint32_t getOffset(); ::mlir::Attribute getCpolAttr(); ::mlir::Attribute getCpol(); ::mlir::ArrayAttr getAliasScopesAttr() { auto attr = ::llvm::dyn_cast_or_null<::mlir::ArrayAttr>(getProperties().alias_scopes); return attr; } ::std::optional< ::mlir::ArrayAttr > getAliasScopes(); ::mlir::ArrayAttr getNoaliasScopesAttr() { auto attr = ::llvm::dyn_cast_or_null<::mlir::ArrayAttr>(getProperties().noalias_scopes); return attr; } ::std::optional< ::mlir::ArrayAttr > getNoaliasScopes(); ::mlir::ArrayAttr getTbaaAttr() { auto attr = ::llvm::dyn_cast_or_null<::mlir::ArrayAttr>(getProperties().tbaa); return attr; } ::std::optional< ::mlir::ArrayAttr > getTbaa(); }; } // namespace detail template class ClusterLoadAsyncToLDSB8OpGenericAdaptor : public detail::ClusterLoadAsyncToLDSB8OpGenericAdaptorBase { using ValueT = ::llvm::detail::ValueOfRange; using Base = detail::ClusterLoadAsyncToLDSB8OpGenericAdaptorBase; static constexpr int odsIndex_globalPtr = 0; static constexpr int odsIndex_ldsPtr = 1; static constexpr int odsIndex_mask = 2; public: ClusterLoadAsyncToLDSB8OpGenericAdaptor(RangeT values, ::mlir::DictionaryAttr attrs, const Properties &properties, ::mlir::RegionRange regions = {}) : Base(attrs, properties, regions), odsOperands(values) {} ClusterLoadAsyncToLDSB8OpGenericAdaptor(RangeT values, ::mlir::DictionaryAttr attrs, ::mlir::PropertyRef properties, ::mlir::RegionRange regions = {}) : ClusterLoadAsyncToLDSB8OpGenericAdaptor(values, attrs, (properties ? *properties.as() : Properties{}), regions) {} ClusterLoadAsyncToLDSB8OpGenericAdaptor(RangeT values, ::mlir::DictionaryAttr attrs = nullptr) : ClusterLoadAsyncToLDSB8OpGenericAdaptor(values, attrs, Properties{}, {}) {} ClusterLoadAsyncToLDSB8OpGenericAdaptor(RangeT values, const ClusterLoadAsyncToLDSB8OpGenericAdaptorBase &base) : Base(base), odsOperands(values) {} template >> ClusterLoadAsyncToLDSB8OpGenericAdaptor(RangeT values, LateInst op) : Base(op), odsOperands(values) {} std::pair getODSOperandIndexAndLength(unsigned index) { return Base::getODSOperandIndexAndLength(index, odsOperands.size()); } RangeT getODSOperands(unsigned index) { auto valueRange = getODSOperandIndexAndLength(index); return {std::next(odsOperands.begin(), valueRange.first), std::next(odsOperands.begin(), valueRange.first + valueRange.second)}; } ValueT getGlobalPtr() { return (*getODSOperands(0).begin()); } ValueT getLdsPtr() { return (*getODSOperands(1).begin()); } ValueT getMask() { return (*getODSOperands(2).begin()); } RangeT getOperands() { return odsOperands; } private: RangeT odsOperands; }; class ClusterLoadAsyncToLDSB8OpAdaptor : public ClusterLoadAsyncToLDSB8OpGenericAdaptor<::mlir::ValueRange> { public: using ClusterLoadAsyncToLDSB8OpGenericAdaptor::ClusterLoadAsyncToLDSB8OpGenericAdaptor; ClusterLoadAsyncToLDSB8OpAdaptor(ClusterLoadAsyncToLDSB8Op op); ::llvm::LogicalResult verify(::mlir::Location loc); }; class ClusterLoadAsyncToLDSB8Op : public ::mlir::Op::Impl, ::mlir::OpTrait::OpInvariants, ::mlir::BytecodeOpInterface::Trait, ::mlir::LLVM::AliasAnalysisOpInterface::Trait, ::mlir::MemoryEffectOpInterface::Trait> { public: using Op::Op; using Op::print; using Adaptor = ClusterLoadAsyncToLDSB8OpAdaptor; template using GenericAdaptor = ClusterLoadAsyncToLDSB8OpGenericAdaptor; using FoldAdaptor = GenericAdaptor<::llvm::ArrayRef<::mlir::Attribute>>; static constexpr int odsIndex_globalPtr = 0; static constexpr int odsIndex_ldsPtr = 1; static constexpr int odsIndex_mask = 2; using Properties = FoldAdaptor::Properties; using ::mlir::LLVM::AliasAnalysisOpInterface::Trait::getAliasScopesOrNull; using ::mlir::LLVM::AliasAnalysisOpInterface::Trait::setAliasScopes; using ::mlir::LLVM::AliasAnalysisOpInterface::Trait::getNoAliasScopesOrNull; using ::mlir::LLVM::AliasAnalysisOpInterface::Trait::setNoAliasScopes; using ::mlir::LLVM::AliasAnalysisOpInterface::Trait::getTBAATagsOrNull; using ::mlir::LLVM::AliasAnalysisOpInterface::Trait::setTBAATags; static ::llvm::ArrayRef<::llvm::StringRef> getAttributeNames() { static ::llvm::StringRef attrNames[] = {::llvm::StringRef("alias_scopes"), ::llvm::StringRef("cpol"), ::llvm::StringRef("noalias_scopes"), ::llvm::StringRef("offset"), ::llvm::StringRef("tbaa")}; return ::llvm::ArrayRef(attrNames); } ::mlir::StringAttr getAliasScopesAttrName() { return getAttributeNameForIndex(0); } static ::mlir::StringAttr getAliasScopesAttrName(::mlir::OperationName name) { return getAttributeNameForIndex(name, 0); } ::mlir::StringAttr getCpolAttrName() { return getAttributeNameForIndex(1); } static ::mlir::StringAttr getCpolAttrName(::mlir::OperationName name) { return getAttributeNameForIndex(name, 1); } ::mlir::StringAttr getNoaliasScopesAttrName() { return getAttributeNameForIndex(2); } static ::mlir::StringAttr getNoaliasScopesAttrName(::mlir::OperationName name) { return getAttributeNameForIndex(name, 2); } ::mlir::StringAttr getOffsetAttrName() { return getAttributeNameForIndex(3); } static ::mlir::StringAttr getOffsetAttrName(::mlir::OperationName name) { return getAttributeNameForIndex(name, 3); } ::mlir::StringAttr getTbaaAttrName() { return getAttributeNameForIndex(4); } static ::mlir::StringAttr getTbaaAttrName(::mlir::OperationName name) { return getAttributeNameForIndex(name, 4); } static constexpr ::llvm::StringLiteral getOperationName() { return ::llvm::StringLiteral("rocdl.cluster.load.async.to.lds.b8"); } std::pair getODSOperandIndexAndLength(unsigned index) { return {index, 1}; } ::mlir::Operation::operand_range getODSOperands(unsigned index) { auto valueRange = getODSOperandIndexAndLength(index); return {std::next(getOperation()->operand_begin(), valueRange.first), std::next(getOperation()->operand_begin(), valueRange.first + valueRange.second)}; } ::mlir::TypedValue<::mlir::LLVM::LLVMPointerType> getGlobalPtr() { return ::llvm::cast<::mlir::TypedValue<::mlir::LLVM::LLVMPointerType>>(*getODSOperands(0).begin()); } ::mlir::TypedValue<::mlir::LLVM::LLVMPointerType> getLdsPtr() { return ::llvm::cast<::mlir::TypedValue<::mlir::LLVM::LLVMPointerType>>(*getODSOperands(1).begin()); } ::mlir::TypedValue<::mlir::IntegerType> getMask() { return ::llvm::cast<::mlir::TypedValue<::mlir::IntegerType>>(*getODSOperands(2).begin()); } ::mlir::OpOperand &getGlobalPtrMutable() { auto range = getODSOperandIndexAndLength(0); return getOperation()->getOpOperand(range.first); } ::mlir::OpOperand &getLdsPtrMutable() { auto range = getODSOperandIndexAndLength(1); return getOperation()->getOpOperand(range.first); } ::mlir::OpOperand &getMaskMutable() { auto range = getODSOperandIndexAndLength(2); return getOperation()->getOpOperand(range.first); } std::pair getODSResultIndexAndLength(unsigned index) { return {index, 1}; } ::mlir::Operation::result_range getODSResults(unsigned index) { auto valueRange = getODSResultIndexAndLength(index); return {std::next(getOperation()->result_begin(), valueRange.first), std::next(getOperation()->result_begin(), valueRange.first + valueRange.second)}; } static ::llvm::LogicalResult setPropertiesFromAttr(Properties &prop, ::mlir::Attribute attr, ::llvm::function_ref<::mlir::InFlightDiagnostic()> emitError); static ::mlir::Attribute getPropertiesAsAttr(::mlir::MLIRContext *ctx, const Properties &prop); static llvm::hash_code computePropertiesHash(const Properties &prop); static std::optional getInherentAttr(::mlir::MLIRContext *ctx, const Properties &prop, llvm::StringRef name); static void setInherentAttr(Properties &prop, llvm::StringRef name, mlir::Attribute value); static void populateInherentAttrs(::mlir::MLIRContext *ctx, const Properties &prop, ::mlir::NamedAttrList &attrs); static ::llvm::LogicalResult verifyInherentAttrs(::mlir::OperationName opName, ::mlir::NamedAttrList &attrs, llvm::function_ref<::mlir::InFlightDiagnostic()> emitError); static ::llvm::LogicalResult readProperties(::mlir::DialectBytecodeReader &reader, ::mlir::OperationState &state); void writeProperties(::mlir::DialectBytecodeWriter &writer); ::mlir::IntegerAttr getOffsetAttr() { return ::llvm::cast<::mlir::IntegerAttr>(getProperties().offset); } uint32_t getOffset(); ::mlir::Attribute getCpolAttr() { return ::llvm::dyn_cast_or_null<::mlir::Attribute>(getProperties().cpol); } ::mlir::Attribute getCpol(); ::mlir::ArrayAttr getAliasScopesAttr() { return ::llvm::dyn_cast_or_null<::mlir::ArrayAttr>(getProperties().alias_scopes); } ::std::optional< ::mlir::ArrayAttr > getAliasScopes(); ::mlir::ArrayAttr getNoaliasScopesAttr() { return ::llvm::dyn_cast_or_null<::mlir::ArrayAttr>(getProperties().noalias_scopes); } ::std::optional< ::mlir::ArrayAttr > getNoaliasScopes(); ::mlir::ArrayAttr getTbaaAttr() { return ::llvm::dyn_cast_or_null<::mlir::ArrayAttr>(getProperties().tbaa); } ::std::optional< ::mlir::ArrayAttr > getTbaa(); void setOffsetAttr(::mlir::IntegerAttr attr) { getProperties().offset = attr; } void setOffset(uint32_t attrValue); void setCpolAttr(::mlir::Attribute attr) { getProperties().cpol = attr; } void setAliasScopesAttr(::mlir::ArrayAttr attr) { getProperties().alias_scopes = attr; } void setNoaliasScopesAttr(::mlir::ArrayAttr attr) { getProperties().noalias_scopes = attr; } void setTbaaAttr(::mlir::ArrayAttr attr) { getProperties().tbaa = attr; } ::mlir::Attribute removeAliasScopesAttr() { auto attr = getProperties().alias_scopes; getProperties().alias_scopes = {}; return attr; } ::mlir::Attribute removeNoaliasScopesAttr() { auto attr = getProperties().noalias_scopes; getProperties().noalias_scopes = {}; return attr; } ::mlir::Attribute removeTbaaAttr() { auto attr = getProperties().tbaa; getProperties().tbaa = {}; return attr; } static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::Value globalPtr, ::mlir::Value ldsPtr, ::mlir::IntegerAttr offset, ::mlir::Attribute cpol, ::mlir::Value mask, /*optional*/::mlir::ArrayAttr alias_scopes, /*optional*/::mlir::ArrayAttr noalias_scopes, /*optional*/::mlir::ArrayAttr tbaa); static ClusterLoadAsyncToLDSB8Op create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::Value globalPtr, ::mlir::Value ldsPtr, ::mlir::IntegerAttr offset, ::mlir::Attribute cpol, ::mlir::Value mask, /*optional*/::mlir::ArrayAttr alias_scopes, /*optional*/::mlir::ArrayAttr noalias_scopes, /*optional*/::mlir::ArrayAttr tbaa); static ClusterLoadAsyncToLDSB8Op create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::Value globalPtr, ::mlir::Value ldsPtr, ::mlir::IntegerAttr offset, ::mlir::Attribute cpol, ::mlir::Value mask, /*optional*/::mlir::ArrayAttr alias_scopes, /*optional*/::mlir::ArrayAttr noalias_scopes, /*optional*/::mlir::ArrayAttr tbaa); static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::Value globalPtr, ::mlir::Value ldsPtr, ::mlir::IntegerAttr offset, ::mlir::Attribute cpol, ::mlir::Value mask, /*optional*/::mlir::ArrayAttr alias_scopes, /*optional*/::mlir::ArrayAttr noalias_scopes, /*optional*/::mlir::ArrayAttr tbaa); static ClusterLoadAsyncToLDSB8Op create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::Value globalPtr, ::mlir::Value ldsPtr, ::mlir::IntegerAttr offset, ::mlir::Attribute cpol, ::mlir::Value mask, /*optional*/::mlir::ArrayAttr alias_scopes, /*optional*/::mlir::ArrayAttr noalias_scopes, /*optional*/::mlir::ArrayAttr tbaa); static ClusterLoadAsyncToLDSB8Op create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::Value globalPtr, ::mlir::Value ldsPtr, ::mlir::IntegerAttr offset, ::mlir::Attribute cpol, ::mlir::Value mask, /*optional*/::mlir::ArrayAttr alias_scopes, /*optional*/::mlir::ArrayAttr noalias_scopes, /*optional*/::mlir::ArrayAttr tbaa); static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::Value globalPtr, ::mlir::Value ldsPtr, uint32_t offset, ::mlir::Attribute cpol, ::mlir::Value mask, /*optional*/::mlir::ArrayAttr alias_scopes, /*optional*/::mlir::ArrayAttr noalias_scopes, /*optional*/::mlir::ArrayAttr tbaa); static ClusterLoadAsyncToLDSB8Op create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::Value globalPtr, ::mlir::Value ldsPtr, uint32_t offset, ::mlir::Attribute cpol, ::mlir::Value mask, /*optional*/::mlir::ArrayAttr alias_scopes, /*optional*/::mlir::ArrayAttr noalias_scopes, /*optional*/::mlir::ArrayAttr tbaa); static ClusterLoadAsyncToLDSB8Op create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::Value globalPtr, ::mlir::Value ldsPtr, uint32_t offset, ::mlir::Attribute cpol, ::mlir::Value mask, /*optional*/::mlir::ArrayAttr alias_scopes, /*optional*/::mlir::ArrayAttr noalias_scopes, /*optional*/::mlir::ArrayAttr tbaa); static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::Value globalPtr, ::mlir::Value ldsPtr, uint32_t offset, ::mlir::Attribute cpol, ::mlir::Value mask, /*optional*/::mlir::ArrayAttr alias_scopes, /*optional*/::mlir::ArrayAttr noalias_scopes, /*optional*/::mlir::ArrayAttr tbaa); static ClusterLoadAsyncToLDSB8Op create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::Value globalPtr, ::mlir::Value ldsPtr, uint32_t offset, ::mlir::Attribute cpol, ::mlir::Value mask, /*optional*/::mlir::ArrayAttr alias_scopes, /*optional*/::mlir::ArrayAttr noalias_scopes, /*optional*/::mlir::ArrayAttr tbaa); static ClusterLoadAsyncToLDSB8Op create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::Value globalPtr, ::mlir::Value ldsPtr, uint32_t offset, ::mlir::Attribute cpol, ::mlir::Value mask, /*optional*/::mlir::ArrayAttr alias_scopes, /*optional*/::mlir::ArrayAttr noalias_scopes, /*optional*/::mlir::ArrayAttr tbaa); static void build(::mlir::OpBuilder &, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, ::llvm::ArrayRef<::mlir::NamedAttribute> attributes = {}); static ClusterLoadAsyncToLDSB8Op create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, ::llvm::ArrayRef<::mlir::NamedAttribute> attributes = {}); static ClusterLoadAsyncToLDSB8Op create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, ::llvm::ArrayRef<::mlir::NamedAttribute> attributes = {}); static void build(::mlir::OpBuilder &, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, const Properties &properties, ::llvm::ArrayRef<::mlir::NamedAttribute> discardableAttributes = {}); static ClusterLoadAsyncToLDSB8Op create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, const Properties &properties, ::llvm::ArrayRef<::mlir::NamedAttribute> discardableAttributes = {}); static ClusterLoadAsyncToLDSB8Op create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, const Properties &properties, ::llvm::ArrayRef<::mlir::NamedAttribute> discardableAttributes = {}); static void populateDefaultProperties(::mlir::OperationName opName, Properties &properties); ::llvm::LogicalResult verifyInvariantsImpl(); ::llvm::LogicalResult verifyInvariants(); ::llvm::SmallVector<::mlir::Value> getAccessedOperands(); static ::mlir::ParseResult parse(::mlir::OpAsmParser &parser, ::mlir::OperationState &result); void print(::mlir::OpAsmPrinter &_odsPrinter); void getEffects(::llvm::SmallVectorImpl<::mlir::SideEffects::EffectInstance<::mlir::MemoryEffects::Effect>> &effects); private: ::mlir::StringAttr getAttributeNameForIndex(unsigned index) { return getAttributeNameForIndex((*this)->getName(), index); } static ::mlir::StringAttr getAttributeNameForIndex(::mlir::OperationName name, unsigned index) { assert(index < 5 && "invalid attribute index"); assert(name.getStringRef() == getOperationName() && "invalid operation name"); assert(name.isRegistered() && "Operation isn't registered, missing a " "dependent dialect loading?"); return name.getAttributeNames()[index]; } public: }; } // namespace mlir::ROCDL MLIR_DECLARE_EXPLICIT_TYPE_ID(::mlir::ROCDL::ClusterLoadAsyncToLDSB8Op) MLIR_DECLARE_EXPLICIT_TYPE_ID(::mlir::ROCDL::detail::ClusterLoadAsyncToLDSB8OpGenericAdaptorBase::Properties) namespace mlir::ROCDL { //===----------------------------------------------------------------------===// // ::mlir::ROCDL::ClusterWorkgroupIdXOp declarations //===----------------------------------------------------------------------===// namespace detail { class ClusterWorkgroupIdXOpGenericAdaptorBase { public: struct Properties { using rangeTy = ::mlir::LLVM::ConstantRangeAttr; rangeTy range; auto getRange() const { auto &propStorage = this->range; return ::llvm::dyn_cast_or_null<::mlir::LLVM::ConstantRangeAttr>(propStorage); } void setRange(const ::mlir::LLVM::ConstantRangeAttr &propValue) { this->range = propValue; } bool operator==(const Properties &rhs) const { return rhs.range == this->range && true; } bool operator!=(const Properties &rhs) const { return !(*this == rhs); } }; protected: ::mlir::DictionaryAttr odsAttrs; ::std::optional<::mlir::OperationName> odsOpName; Properties properties; ::mlir::RegionRange odsRegions; public: ClusterWorkgroupIdXOpGenericAdaptorBase(::mlir::DictionaryAttr attrs, const Properties &properties, ::mlir::RegionRange regions = {}) : odsAttrs(attrs), properties(properties), odsRegions(regions) { if (odsAttrs) odsOpName.emplace("rocdl.cluster.workgroup.id.x", odsAttrs.getContext()); } ClusterWorkgroupIdXOpGenericAdaptorBase(ClusterWorkgroupIdXOp op); std::pair getODSOperandIndexAndLength(unsigned index, unsigned odsOperandsSize) { return {index, 1}; } const Properties &getProperties() { return properties; } ::mlir::DictionaryAttr getAttributes() { return odsAttrs; } ::mlir::LLVM::ConstantRangeAttr getRangeAttr() { auto attr = ::llvm::dyn_cast_or_null<::mlir::LLVM::ConstantRangeAttr>(getProperties().range); return attr; } ::std::optional<::mlir::LLVM::ConstantRangeAttr> getRange(); }; } // namespace detail template class ClusterWorkgroupIdXOpGenericAdaptor : public detail::ClusterWorkgroupIdXOpGenericAdaptorBase { using ValueT = ::llvm::detail::ValueOfRange; using Base = detail::ClusterWorkgroupIdXOpGenericAdaptorBase; public: ClusterWorkgroupIdXOpGenericAdaptor(RangeT values, ::mlir::DictionaryAttr attrs, const Properties &properties, ::mlir::RegionRange regions = {}) : Base(attrs, properties, regions), odsOperands(values) {} ClusterWorkgroupIdXOpGenericAdaptor(RangeT values, ::mlir::DictionaryAttr attrs, ::mlir::PropertyRef properties, ::mlir::RegionRange regions = {}) : ClusterWorkgroupIdXOpGenericAdaptor(values, attrs, (properties ? *properties.as() : Properties{}), regions) {} ClusterWorkgroupIdXOpGenericAdaptor(RangeT values, ::mlir::DictionaryAttr attrs = nullptr) : ClusterWorkgroupIdXOpGenericAdaptor(values, attrs, Properties{}, {}) {} ClusterWorkgroupIdXOpGenericAdaptor(RangeT values, const ClusterWorkgroupIdXOpGenericAdaptorBase &base) : Base(base), odsOperands(values) {} template >> ClusterWorkgroupIdXOpGenericAdaptor(RangeT values, LateInst op) : Base(op), odsOperands(values) {} std::pair getODSOperandIndexAndLength(unsigned index) { return Base::getODSOperandIndexAndLength(index, odsOperands.size()); } RangeT getODSOperands(unsigned index) { auto valueRange = getODSOperandIndexAndLength(index); return {std::next(odsOperands.begin(), valueRange.first), std::next(odsOperands.begin(), valueRange.first + valueRange.second)}; } RangeT getOperands() { return odsOperands; } private: RangeT odsOperands; }; class ClusterWorkgroupIdXOpAdaptor : public ClusterWorkgroupIdXOpGenericAdaptor<::mlir::ValueRange> { public: using ClusterWorkgroupIdXOpGenericAdaptor::ClusterWorkgroupIdXOpGenericAdaptor; ClusterWorkgroupIdXOpAdaptor(ClusterWorkgroupIdXOp op); ::llvm::LogicalResult verify(::mlir::Location loc); }; class ClusterWorkgroupIdXOp : public ::mlir::Op::Impl, ::mlir::OpTrait::ZeroSuccessors, ::mlir::OpTrait::ZeroOperands, ::mlir::OpTrait::OpInvariants, ::mlir::BytecodeOpInterface::Trait, ::mlir::ConditionallySpeculatable::Trait, ::mlir::OpTrait::AlwaysSpeculatableImplTrait, ::mlir::MemoryEffectOpInterface::Trait> { public: using Op::Op; using Op::print; using Adaptor = ClusterWorkgroupIdXOpAdaptor; template using GenericAdaptor = ClusterWorkgroupIdXOpGenericAdaptor; using FoldAdaptor = GenericAdaptor<::llvm::ArrayRef<::mlir::Attribute>>; using Properties = FoldAdaptor::Properties; static ::llvm::ArrayRef<::llvm::StringRef> getAttributeNames() { static ::llvm::StringRef attrNames[] = {::llvm::StringRef("range")}; return ::llvm::ArrayRef(attrNames); } ::mlir::StringAttr getRangeAttrName() { return getAttributeNameForIndex(0); } static ::mlir::StringAttr getRangeAttrName(::mlir::OperationName name) { return getAttributeNameForIndex(name, 0); } static constexpr ::llvm::StringLiteral getOperationName() { return ::llvm::StringLiteral("rocdl.cluster.workgroup.id.x"); } std::pair getODSOperandIndexAndLength(unsigned index) { return {index, 1}; } ::mlir::Operation::operand_range getODSOperands(unsigned index) { auto valueRange = getODSOperandIndexAndLength(index); return {std::next(getOperation()->operand_begin(), valueRange.first), std::next(getOperation()->operand_begin(), valueRange.first + valueRange.second)}; } std::pair getODSResultIndexAndLength(unsigned index) { return {index, 1}; } ::mlir::Operation::result_range getODSResults(unsigned index) { auto valueRange = getODSResultIndexAndLength(index); return {std::next(getOperation()->result_begin(), valueRange.first), std::next(getOperation()->result_begin(), valueRange.first + valueRange.second)}; } ::mlir::TypedValue<::mlir::Type> getRes() { return ::llvm::cast<::mlir::TypedValue<::mlir::Type>>(*getODSResults(0).begin()); } static ::llvm::LogicalResult setPropertiesFromAttr(Properties &prop, ::mlir::Attribute attr, ::llvm::function_ref<::mlir::InFlightDiagnostic()> emitError); static ::mlir::Attribute getPropertiesAsAttr(::mlir::MLIRContext *ctx, const Properties &prop); static llvm::hash_code computePropertiesHash(const Properties &prop); static std::optional getInherentAttr(::mlir::MLIRContext *ctx, const Properties &prop, llvm::StringRef name); static void setInherentAttr(Properties &prop, llvm::StringRef name, mlir::Attribute value); static void populateInherentAttrs(::mlir::MLIRContext *ctx, const Properties &prop, ::mlir::NamedAttrList &attrs); static ::llvm::LogicalResult verifyInherentAttrs(::mlir::OperationName opName, ::mlir::NamedAttrList &attrs, llvm::function_ref<::mlir::InFlightDiagnostic()> emitError); static ::llvm::LogicalResult readProperties(::mlir::DialectBytecodeReader &reader, ::mlir::OperationState &state); void writeProperties(::mlir::DialectBytecodeWriter &writer); ::mlir::LLVM::ConstantRangeAttr getRangeAttr() { return ::llvm::dyn_cast_or_null<::mlir::LLVM::ConstantRangeAttr>(getProperties().range); } ::std::optional<::mlir::LLVM::ConstantRangeAttr> getRange(); void setRangeAttr(::mlir::LLVM::ConstantRangeAttr attr) { getProperties().range = attr; } ::mlir::Attribute removeRangeAttr() { auto attr = getProperties().range; getProperties().range = {}; return attr; } static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, Type resultType); static ClusterWorkgroupIdXOp create(::mlir::OpBuilder &builder, ::mlir::Location location, Type resultType); static ClusterWorkgroupIdXOp create(::mlir::ImplicitLocOpBuilder &builder, Type resultType); static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::Type res, /*optional*/::mlir::LLVM::ConstantRangeAttr range); static ClusterWorkgroupIdXOp create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::Type res, /*optional*/::mlir::LLVM::ConstantRangeAttr range); static ClusterWorkgroupIdXOp create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::Type res, /*optional*/::mlir::LLVM::ConstantRangeAttr range); static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, /*optional*/::mlir::LLVM::ConstantRangeAttr range); static ClusterWorkgroupIdXOp create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, /*optional*/::mlir::LLVM::ConstantRangeAttr range); static ClusterWorkgroupIdXOp create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, /*optional*/::mlir::LLVM::ConstantRangeAttr range); static void build(::mlir::OpBuilder &, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, ::llvm::ArrayRef<::mlir::NamedAttribute> attributes = {}); static ClusterWorkgroupIdXOp create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, ::llvm::ArrayRef<::mlir::NamedAttribute> attributes = {}); static ClusterWorkgroupIdXOp create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, ::llvm::ArrayRef<::mlir::NamedAttribute> attributes = {}); static void build(::mlir::OpBuilder &, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, const Properties &properties, ::llvm::ArrayRef<::mlir::NamedAttribute> discardableAttributes = {}); static ClusterWorkgroupIdXOp create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, const Properties &properties, ::llvm::ArrayRef<::mlir::NamedAttribute> discardableAttributes = {}); static ClusterWorkgroupIdXOp create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, const Properties &properties, ::llvm::ArrayRef<::mlir::NamedAttribute> discardableAttributes = {}); ::llvm::LogicalResult verifyInvariantsImpl(); ::llvm::LogicalResult verifyInvariants(); static ::mlir::ParseResult parse(::mlir::OpAsmParser &parser, ::mlir::OperationState &result); void print(::mlir::OpAsmPrinter &_odsPrinter); void getEffects(::llvm::SmallVectorImpl<::mlir::SideEffects::EffectInstance<::mlir::MemoryEffects::Effect>> &effects); private: ::mlir::StringAttr getAttributeNameForIndex(unsigned index) { return getAttributeNameForIndex((*this)->getName(), index); } static ::mlir::StringAttr getAttributeNameForIndex(::mlir::OperationName name, unsigned index) { assert(index < 1 && "invalid attribute index"); assert(name.getStringRef() == getOperationName() && "invalid operation name"); assert(name.isRegistered() && "Operation isn't registered, missing a " "dependent dialect loading?"); return name.getAttributeNames()[index]; } public: }; } // namespace mlir::ROCDL MLIR_DECLARE_EXPLICIT_TYPE_ID(::mlir::ROCDL::ClusterWorkgroupIdXOp) MLIR_DECLARE_EXPLICIT_TYPE_ID(::mlir::ROCDL::detail::ClusterWorkgroupIdXOpGenericAdaptorBase::Properties) namespace mlir::ROCDL { //===----------------------------------------------------------------------===// // ::mlir::ROCDL::ClusterWorkgroupIdYOp declarations //===----------------------------------------------------------------------===// namespace detail { class ClusterWorkgroupIdYOpGenericAdaptorBase { public: struct Properties { using rangeTy = ::mlir::LLVM::ConstantRangeAttr; rangeTy range; auto getRange() const { auto &propStorage = this->range; return ::llvm::dyn_cast_or_null<::mlir::LLVM::ConstantRangeAttr>(propStorage); } void setRange(const ::mlir::LLVM::ConstantRangeAttr &propValue) { this->range = propValue; } bool operator==(const Properties &rhs) const { return rhs.range == this->range && true; } bool operator!=(const Properties &rhs) const { return !(*this == rhs); } }; protected: ::mlir::DictionaryAttr odsAttrs; ::std::optional<::mlir::OperationName> odsOpName; Properties properties; ::mlir::RegionRange odsRegions; public: ClusterWorkgroupIdYOpGenericAdaptorBase(::mlir::DictionaryAttr attrs, const Properties &properties, ::mlir::RegionRange regions = {}) : odsAttrs(attrs), properties(properties), odsRegions(regions) { if (odsAttrs) odsOpName.emplace("rocdl.cluster.workgroup.id.y", odsAttrs.getContext()); } ClusterWorkgroupIdYOpGenericAdaptorBase(ClusterWorkgroupIdYOp op); std::pair getODSOperandIndexAndLength(unsigned index, unsigned odsOperandsSize) { return {index, 1}; } const Properties &getProperties() { return properties; } ::mlir::DictionaryAttr getAttributes() { return odsAttrs; } ::mlir::LLVM::ConstantRangeAttr getRangeAttr() { auto attr = ::llvm::dyn_cast_or_null<::mlir::LLVM::ConstantRangeAttr>(getProperties().range); return attr; } ::std::optional<::mlir::LLVM::ConstantRangeAttr> getRange(); }; } // namespace detail template class ClusterWorkgroupIdYOpGenericAdaptor : public detail::ClusterWorkgroupIdYOpGenericAdaptorBase { using ValueT = ::llvm::detail::ValueOfRange; using Base = detail::ClusterWorkgroupIdYOpGenericAdaptorBase; public: ClusterWorkgroupIdYOpGenericAdaptor(RangeT values, ::mlir::DictionaryAttr attrs, const Properties &properties, ::mlir::RegionRange regions = {}) : Base(attrs, properties, regions), odsOperands(values) {} ClusterWorkgroupIdYOpGenericAdaptor(RangeT values, ::mlir::DictionaryAttr attrs, ::mlir::PropertyRef properties, ::mlir::RegionRange regions = {}) : ClusterWorkgroupIdYOpGenericAdaptor(values, attrs, (properties ? *properties.as() : Properties{}), regions) {} ClusterWorkgroupIdYOpGenericAdaptor(RangeT values, ::mlir::DictionaryAttr attrs = nullptr) : ClusterWorkgroupIdYOpGenericAdaptor(values, attrs, Properties{}, {}) {} ClusterWorkgroupIdYOpGenericAdaptor(RangeT values, const ClusterWorkgroupIdYOpGenericAdaptorBase &base) : Base(base), odsOperands(values) {} template >> ClusterWorkgroupIdYOpGenericAdaptor(RangeT values, LateInst op) : Base(op), odsOperands(values) {} std::pair getODSOperandIndexAndLength(unsigned index) { return Base::getODSOperandIndexAndLength(index, odsOperands.size()); } RangeT getODSOperands(unsigned index) { auto valueRange = getODSOperandIndexAndLength(index); return {std::next(odsOperands.begin(), valueRange.first), std::next(odsOperands.begin(), valueRange.first + valueRange.second)}; } RangeT getOperands() { return odsOperands; } private: RangeT odsOperands; }; class ClusterWorkgroupIdYOpAdaptor : public ClusterWorkgroupIdYOpGenericAdaptor<::mlir::ValueRange> { public: using ClusterWorkgroupIdYOpGenericAdaptor::ClusterWorkgroupIdYOpGenericAdaptor; ClusterWorkgroupIdYOpAdaptor(ClusterWorkgroupIdYOp op); ::llvm::LogicalResult verify(::mlir::Location loc); }; class ClusterWorkgroupIdYOp : public ::mlir::Op::Impl, ::mlir::OpTrait::ZeroSuccessors, ::mlir::OpTrait::ZeroOperands, ::mlir::OpTrait::OpInvariants, ::mlir::BytecodeOpInterface::Trait, ::mlir::ConditionallySpeculatable::Trait, ::mlir::OpTrait::AlwaysSpeculatableImplTrait, ::mlir::MemoryEffectOpInterface::Trait> { public: using Op::Op; using Op::print; using Adaptor = ClusterWorkgroupIdYOpAdaptor; template using GenericAdaptor = ClusterWorkgroupIdYOpGenericAdaptor; using FoldAdaptor = GenericAdaptor<::llvm::ArrayRef<::mlir::Attribute>>; using Properties = FoldAdaptor::Properties; static ::llvm::ArrayRef<::llvm::StringRef> getAttributeNames() { static ::llvm::StringRef attrNames[] = {::llvm::StringRef("range")}; return ::llvm::ArrayRef(attrNames); } ::mlir::StringAttr getRangeAttrName() { return getAttributeNameForIndex(0); } static ::mlir::StringAttr getRangeAttrName(::mlir::OperationName name) { return getAttributeNameForIndex(name, 0); } static constexpr ::llvm::StringLiteral getOperationName() { return ::llvm::StringLiteral("rocdl.cluster.workgroup.id.y"); } std::pair getODSOperandIndexAndLength(unsigned index) { return {index, 1}; } ::mlir::Operation::operand_range getODSOperands(unsigned index) { auto valueRange = getODSOperandIndexAndLength(index); return {std::next(getOperation()->operand_begin(), valueRange.first), std::next(getOperation()->operand_begin(), valueRange.first + valueRange.second)}; } std::pair getODSResultIndexAndLength(unsigned index) { return {index, 1}; } ::mlir::Operation::result_range getODSResults(unsigned index) { auto valueRange = getODSResultIndexAndLength(index); return {std::next(getOperation()->result_begin(), valueRange.first), std::next(getOperation()->result_begin(), valueRange.first + valueRange.second)}; } ::mlir::TypedValue<::mlir::Type> getRes() { return ::llvm::cast<::mlir::TypedValue<::mlir::Type>>(*getODSResults(0).begin()); } static ::llvm::LogicalResult setPropertiesFromAttr(Properties &prop, ::mlir::Attribute attr, ::llvm::function_ref<::mlir::InFlightDiagnostic()> emitError); static ::mlir::Attribute getPropertiesAsAttr(::mlir::MLIRContext *ctx, const Properties &prop); static llvm::hash_code computePropertiesHash(const Properties &prop); static std::optional getInherentAttr(::mlir::MLIRContext *ctx, const Properties &prop, llvm::StringRef name); static void setInherentAttr(Properties &prop, llvm::StringRef name, mlir::Attribute value); static void populateInherentAttrs(::mlir::MLIRContext *ctx, const Properties &prop, ::mlir::NamedAttrList &attrs); static ::llvm::LogicalResult verifyInherentAttrs(::mlir::OperationName opName, ::mlir::NamedAttrList &attrs, llvm::function_ref<::mlir::InFlightDiagnostic()> emitError); static ::llvm::LogicalResult readProperties(::mlir::DialectBytecodeReader &reader, ::mlir::OperationState &state); void writeProperties(::mlir::DialectBytecodeWriter &writer); ::mlir::LLVM::ConstantRangeAttr getRangeAttr() { return ::llvm::dyn_cast_or_null<::mlir::LLVM::ConstantRangeAttr>(getProperties().range); } ::std::optional<::mlir::LLVM::ConstantRangeAttr> getRange(); void setRangeAttr(::mlir::LLVM::ConstantRangeAttr attr) { getProperties().range = attr; } ::mlir::Attribute removeRangeAttr() { auto attr = getProperties().range; getProperties().range = {}; return attr; } static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, Type resultType); static ClusterWorkgroupIdYOp create(::mlir::OpBuilder &builder, ::mlir::Location location, Type resultType); static ClusterWorkgroupIdYOp create(::mlir::ImplicitLocOpBuilder &builder, Type resultType); static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::Type res, /*optional*/::mlir::LLVM::ConstantRangeAttr range); static ClusterWorkgroupIdYOp create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::Type res, /*optional*/::mlir::LLVM::ConstantRangeAttr range); static ClusterWorkgroupIdYOp create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::Type res, /*optional*/::mlir::LLVM::ConstantRangeAttr range); static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, /*optional*/::mlir::LLVM::ConstantRangeAttr range); static ClusterWorkgroupIdYOp create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, /*optional*/::mlir::LLVM::ConstantRangeAttr range); static ClusterWorkgroupIdYOp create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, /*optional*/::mlir::LLVM::ConstantRangeAttr range); static void build(::mlir::OpBuilder &, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, ::llvm::ArrayRef<::mlir::NamedAttribute> attributes = {}); static ClusterWorkgroupIdYOp create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, ::llvm::ArrayRef<::mlir::NamedAttribute> attributes = {}); static ClusterWorkgroupIdYOp create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, ::llvm::ArrayRef<::mlir::NamedAttribute> attributes = {}); static void build(::mlir::OpBuilder &, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, const Properties &properties, ::llvm::ArrayRef<::mlir::NamedAttribute> discardableAttributes = {}); static ClusterWorkgroupIdYOp create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, const Properties &properties, ::llvm::ArrayRef<::mlir::NamedAttribute> discardableAttributes = {}); static ClusterWorkgroupIdYOp create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, const Properties &properties, ::llvm::ArrayRef<::mlir::NamedAttribute> discardableAttributes = {}); ::llvm::LogicalResult verifyInvariantsImpl(); ::llvm::LogicalResult verifyInvariants(); static ::mlir::ParseResult parse(::mlir::OpAsmParser &parser, ::mlir::OperationState &result); void print(::mlir::OpAsmPrinter &_odsPrinter); void getEffects(::llvm::SmallVectorImpl<::mlir::SideEffects::EffectInstance<::mlir::MemoryEffects::Effect>> &effects); private: ::mlir::StringAttr getAttributeNameForIndex(unsigned index) { return getAttributeNameForIndex((*this)->getName(), index); } static ::mlir::StringAttr getAttributeNameForIndex(::mlir::OperationName name, unsigned index) { assert(index < 1 && "invalid attribute index"); assert(name.getStringRef() == getOperationName() && "invalid operation name"); assert(name.isRegistered() && "Operation isn't registered, missing a " "dependent dialect loading?"); return name.getAttributeNames()[index]; } public: }; } // namespace mlir::ROCDL MLIR_DECLARE_EXPLICIT_TYPE_ID(::mlir::ROCDL::ClusterWorkgroupIdYOp) MLIR_DECLARE_EXPLICIT_TYPE_ID(::mlir::ROCDL::detail::ClusterWorkgroupIdYOpGenericAdaptorBase::Properties) namespace mlir::ROCDL { //===----------------------------------------------------------------------===// // ::mlir::ROCDL::ClusterWorkgroupIdZOp declarations //===----------------------------------------------------------------------===// namespace detail { class ClusterWorkgroupIdZOpGenericAdaptorBase { public: struct Properties { using rangeTy = ::mlir::LLVM::ConstantRangeAttr; rangeTy range; auto getRange() const { auto &propStorage = this->range; return ::llvm::dyn_cast_or_null<::mlir::LLVM::ConstantRangeAttr>(propStorage); } void setRange(const ::mlir::LLVM::ConstantRangeAttr &propValue) { this->range = propValue; } bool operator==(const Properties &rhs) const { return rhs.range == this->range && true; } bool operator!=(const Properties &rhs) const { return !(*this == rhs); } }; protected: ::mlir::DictionaryAttr odsAttrs; ::std::optional<::mlir::OperationName> odsOpName; Properties properties; ::mlir::RegionRange odsRegions; public: ClusterWorkgroupIdZOpGenericAdaptorBase(::mlir::DictionaryAttr attrs, const Properties &properties, ::mlir::RegionRange regions = {}) : odsAttrs(attrs), properties(properties), odsRegions(regions) { if (odsAttrs) odsOpName.emplace("rocdl.cluster.workgroup.id.z", odsAttrs.getContext()); } ClusterWorkgroupIdZOpGenericAdaptorBase(ClusterWorkgroupIdZOp op); std::pair getODSOperandIndexAndLength(unsigned index, unsigned odsOperandsSize) { return {index, 1}; } const Properties &getProperties() { return properties; } ::mlir::DictionaryAttr getAttributes() { return odsAttrs; } ::mlir::LLVM::ConstantRangeAttr getRangeAttr() { auto attr = ::llvm::dyn_cast_or_null<::mlir::LLVM::ConstantRangeAttr>(getProperties().range); return attr; } ::std::optional<::mlir::LLVM::ConstantRangeAttr> getRange(); }; } // namespace detail template class ClusterWorkgroupIdZOpGenericAdaptor : public detail::ClusterWorkgroupIdZOpGenericAdaptorBase { using ValueT = ::llvm::detail::ValueOfRange; using Base = detail::ClusterWorkgroupIdZOpGenericAdaptorBase; public: ClusterWorkgroupIdZOpGenericAdaptor(RangeT values, ::mlir::DictionaryAttr attrs, const Properties &properties, ::mlir::RegionRange regions = {}) : Base(attrs, properties, regions), odsOperands(values) {} ClusterWorkgroupIdZOpGenericAdaptor(RangeT values, ::mlir::DictionaryAttr attrs, ::mlir::PropertyRef properties, ::mlir::RegionRange regions = {}) : ClusterWorkgroupIdZOpGenericAdaptor(values, attrs, (properties ? *properties.as() : Properties{}), regions) {} ClusterWorkgroupIdZOpGenericAdaptor(RangeT values, ::mlir::DictionaryAttr attrs = nullptr) : ClusterWorkgroupIdZOpGenericAdaptor(values, attrs, Properties{}, {}) {} ClusterWorkgroupIdZOpGenericAdaptor(RangeT values, const ClusterWorkgroupIdZOpGenericAdaptorBase &base) : Base(base), odsOperands(values) {} template >> ClusterWorkgroupIdZOpGenericAdaptor(RangeT values, LateInst op) : Base(op), odsOperands(values) {} std::pair getODSOperandIndexAndLength(unsigned index) { return Base::getODSOperandIndexAndLength(index, odsOperands.size()); } RangeT getODSOperands(unsigned index) { auto valueRange = getODSOperandIndexAndLength(index); return {std::next(odsOperands.begin(), valueRange.first), std::next(odsOperands.begin(), valueRange.first + valueRange.second)}; } RangeT getOperands() { return odsOperands; } private: RangeT odsOperands; }; class ClusterWorkgroupIdZOpAdaptor : public ClusterWorkgroupIdZOpGenericAdaptor<::mlir::ValueRange> { public: using ClusterWorkgroupIdZOpGenericAdaptor::ClusterWorkgroupIdZOpGenericAdaptor; ClusterWorkgroupIdZOpAdaptor(ClusterWorkgroupIdZOp op); ::llvm::LogicalResult verify(::mlir::Location loc); }; class ClusterWorkgroupIdZOp : public ::mlir::Op::Impl, ::mlir::OpTrait::ZeroSuccessors, ::mlir::OpTrait::ZeroOperands, ::mlir::OpTrait::OpInvariants, ::mlir::BytecodeOpInterface::Trait, ::mlir::ConditionallySpeculatable::Trait, ::mlir::OpTrait::AlwaysSpeculatableImplTrait, ::mlir::MemoryEffectOpInterface::Trait> { public: using Op::Op; using Op::print; using Adaptor = ClusterWorkgroupIdZOpAdaptor; template using GenericAdaptor = ClusterWorkgroupIdZOpGenericAdaptor; using FoldAdaptor = GenericAdaptor<::llvm::ArrayRef<::mlir::Attribute>>; using Properties = FoldAdaptor::Properties; static ::llvm::ArrayRef<::llvm::StringRef> getAttributeNames() { static ::llvm::StringRef attrNames[] = {::llvm::StringRef("range")}; return ::llvm::ArrayRef(attrNames); } ::mlir::StringAttr getRangeAttrName() { return getAttributeNameForIndex(0); } static ::mlir::StringAttr getRangeAttrName(::mlir::OperationName name) { return getAttributeNameForIndex(name, 0); } static constexpr ::llvm::StringLiteral getOperationName() { return ::llvm::StringLiteral("rocdl.cluster.workgroup.id.z"); } std::pair getODSOperandIndexAndLength(unsigned index) { return {index, 1}; } ::mlir::Operation::operand_range getODSOperands(unsigned index) { auto valueRange = getODSOperandIndexAndLength(index); return {std::next(getOperation()->operand_begin(), valueRange.first), std::next(getOperation()->operand_begin(), valueRange.first + valueRange.second)}; } std::pair getODSResultIndexAndLength(unsigned index) { return {index, 1}; } ::mlir::Operation::result_range getODSResults(unsigned index) { auto valueRange = getODSResultIndexAndLength(index); return {std::next(getOperation()->result_begin(), valueRange.first), std::next(getOperation()->result_begin(), valueRange.first + valueRange.second)}; } ::mlir::TypedValue<::mlir::Type> getRes() { return ::llvm::cast<::mlir::TypedValue<::mlir::Type>>(*getODSResults(0).begin()); } static ::llvm::LogicalResult setPropertiesFromAttr(Properties &prop, ::mlir::Attribute attr, ::llvm::function_ref<::mlir::InFlightDiagnostic()> emitError); static ::mlir::Attribute getPropertiesAsAttr(::mlir::MLIRContext *ctx, const Properties &prop); static llvm::hash_code computePropertiesHash(const Properties &prop); static std::optional getInherentAttr(::mlir::MLIRContext *ctx, const Properties &prop, llvm::StringRef name); static void setInherentAttr(Properties &prop, llvm::StringRef name, mlir::Attribute value); static void populateInherentAttrs(::mlir::MLIRContext *ctx, const Properties &prop, ::mlir::NamedAttrList &attrs); static ::llvm::LogicalResult verifyInherentAttrs(::mlir::OperationName opName, ::mlir::NamedAttrList &attrs, llvm::function_ref<::mlir::InFlightDiagnostic()> emitError); static ::llvm::LogicalResult readProperties(::mlir::DialectBytecodeReader &reader, ::mlir::OperationState &state); void writeProperties(::mlir::DialectBytecodeWriter &writer); ::mlir::LLVM::ConstantRangeAttr getRangeAttr() { return ::llvm::dyn_cast_or_null<::mlir::LLVM::ConstantRangeAttr>(getProperties().range); } ::std::optional<::mlir::LLVM::ConstantRangeAttr> getRange(); void setRangeAttr(::mlir::LLVM::ConstantRangeAttr attr) { getProperties().range = attr; } ::mlir::Attribute removeRangeAttr() { auto attr = getProperties().range; getProperties().range = {}; return attr; } static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, Type resultType); static ClusterWorkgroupIdZOp create(::mlir::OpBuilder &builder, ::mlir::Location location, Type resultType); static ClusterWorkgroupIdZOp create(::mlir::ImplicitLocOpBuilder &builder, Type resultType); static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::Type res, /*optional*/::mlir::LLVM::ConstantRangeAttr range); static ClusterWorkgroupIdZOp create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::Type res, /*optional*/::mlir::LLVM::ConstantRangeAttr range); static ClusterWorkgroupIdZOp create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::Type res, /*optional*/::mlir::LLVM::ConstantRangeAttr range); static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, /*optional*/::mlir::LLVM::ConstantRangeAttr range); static ClusterWorkgroupIdZOp create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, /*optional*/::mlir::LLVM::ConstantRangeAttr range); static ClusterWorkgroupIdZOp create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, /*optional*/::mlir::LLVM::ConstantRangeAttr range); static void build(::mlir::OpBuilder &, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, ::llvm::ArrayRef<::mlir::NamedAttribute> attributes = {}); static ClusterWorkgroupIdZOp create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, ::llvm::ArrayRef<::mlir::NamedAttribute> attributes = {}); static ClusterWorkgroupIdZOp create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, ::llvm::ArrayRef<::mlir::NamedAttribute> attributes = {}); static void build(::mlir::OpBuilder &, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, const Properties &properties, ::llvm::ArrayRef<::mlir::NamedAttribute> discardableAttributes = {}); static ClusterWorkgroupIdZOp create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, const Properties &properties, ::llvm::ArrayRef<::mlir::NamedAttribute> discardableAttributes = {}); static ClusterWorkgroupIdZOp create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, const Properties &properties, ::llvm::ArrayRef<::mlir::NamedAttribute> discardableAttributes = {}); ::llvm::LogicalResult verifyInvariantsImpl(); ::llvm::LogicalResult verifyInvariants(); static ::mlir::ParseResult parse(::mlir::OpAsmParser &parser, ::mlir::OperationState &result); void print(::mlir::OpAsmPrinter &_odsPrinter); void getEffects(::llvm::SmallVectorImpl<::mlir::SideEffects::EffectInstance<::mlir::MemoryEffects::Effect>> &effects); private: ::mlir::StringAttr getAttributeNameForIndex(unsigned index) { return getAttributeNameForIndex((*this)->getName(), index); } static ::mlir::StringAttr getAttributeNameForIndex(::mlir::OperationName name, unsigned index) { assert(index < 1 && "invalid attribute index"); assert(name.getStringRef() == getOperationName() && "invalid operation name"); assert(name.isRegistered() && "Operation isn't registered, missing a " "dependent dialect loading?"); return name.getAttributeNames()[index]; } public: }; } // namespace mlir::ROCDL MLIR_DECLARE_EXPLICIT_TYPE_ID(::mlir::ROCDL::ClusterWorkgroupIdZOp) MLIR_DECLARE_EXPLICIT_TYPE_ID(::mlir::ROCDL::detail::ClusterWorkgroupIdZOpGenericAdaptorBase::Properties) namespace mlir::ROCDL { //===----------------------------------------------------------------------===// // ::mlir::ROCDL::CvtF32Bf8Op declarations //===----------------------------------------------------------------------===// namespace detail { class CvtF32Bf8OpGenericAdaptorBase { public: struct Properties { using byteSelTy = ::mlir::IntegerAttr; byteSelTy byteSel; auto getByteSel() const { auto &propStorage = this->byteSel; return ::llvm::cast<::mlir::IntegerAttr>(propStorage); } void setByteSel(const ::mlir::IntegerAttr &propValue) { this->byteSel = propValue; } bool operator==(const Properties &rhs) const { return rhs.byteSel == this->byteSel && true; } bool operator!=(const Properties &rhs) const { return !(*this == rhs); } }; protected: ::mlir::DictionaryAttr odsAttrs; ::std::optional<::mlir::OperationName> odsOpName; Properties properties; ::mlir::RegionRange odsRegions; public: CvtF32Bf8OpGenericAdaptorBase(::mlir::DictionaryAttr attrs, const Properties &properties, ::mlir::RegionRange regions = {}) : odsAttrs(attrs), properties(properties), odsRegions(regions) { if (odsAttrs) odsOpName.emplace("rocdl.cvt.f32.bf8", odsAttrs.getContext()); } CvtF32Bf8OpGenericAdaptorBase(CvtF32Bf8Op op); std::pair getODSOperandIndexAndLength(unsigned index, unsigned odsOperandsSize) { return {index, 1}; } const Properties &getProperties() { return properties; } ::mlir::DictionaryAttr getAttributes() { return odsAttrs; } ::mlir::IntegerAttr getByteSelAttr() { auto attr = ::llvm::cast<::mlir::IntegerAttr>(getProperties().byteSel); return attr; } uint32_t getByteSel(); }; } // namespace detail template class CvtF32Bf8OpGenericAdaptor : public detail::CvtF32Bf8OpGenericAdaptorBase { using ValueT = ::llvm::detail::ValueOfRange; using Base = detail::CvtF32Bf8OpGenericAdaptorBase; static constexpr int odsIndex_srcA = 0; public: CvtF32Bf8OpGenericAdaptor(RangeT values, ::mlir::DictionaryAttr attrs, const Properties &properties, ::mlir::RegionRange regions = {}) : Base(attrs, properties, regions), odsOperands(values) {} CvtF32Bf8OpGenericAdaptor(RangeT values, ::mlir::DictionaryAttr attrs, ::mlir::PropertyRef properties, ::mlir::RegionRange regions = {}) : CvtF32Bf8OpGenericAdaptor(values, attrs, (properties ? *properties.as() : Properties{}), regions) {} CvtF32Bf8OpGenericAdaptor(RangeT values, ::mlir::DictionaryAttr attrs = nullptr) : CvtF32Bf8OpGenericAdaptor(values, attrs, Properties{}, {}) {} CvtF32Bf8OpGenericAdaptor(RangeT values, const CvtF32Bf8OpGenericAdaptorBase &base) : Base(base), odsOperands(values) {} template >> CvtF32Bf8OpGenericAdaptor(RangeT values, LateInst op) : Base(op), odsOperands(values) {} std::pair getODSOperandIndexAndLength(unsigned index) { return Base::getODSOperandIndexAndLength(index, odsOperands.size()); } RangeT getODSOperands(unsigned index) { auto valueRange = getODSOperandIndexAndLength(index); return {std::next(odsOperands.begin(), valueRange.first), std::next(odsOperands.begin(), valueRange.first + valueRange.second)}; } ValueT getSrcA() { return (*getODSOperands(0).begin()); } RangeT getOperands() { return odsOperands; } private: RangeT odsOperands; }; class CvtF32Bf8OpAdaptor : public CvtF32Bf8OpGenericAdaptor<::mlir::ValueRange> { public: using CvtF32Bf8OpGenericAdaptor::CvtF32Bf8OpGenericAdaptor; CvtF32Bf8OpAdaptor(CvtF32Bf8Op op); ::llvm::LogicalResult verify(::mlir::Location loc); }; class CvtF32Bf8Op : public ::mlir::Op::Impl, ::mlir::OpTrait::ZeroSuccessors, ::mlir::OpTrait::OneOperand, ::mlir::OpTrait::OpInvariants, ::mlir::BytecodeOpInterface::Trait, ::mlir::ConditionallySpeculatable::Trait, ::mlir::OpTrait::AlwaysSpeculatableImplTrait, ::mlir::MemoryEffectOpInterface::Trait> { public: using Op::Op; using Op::print; using Adaptor = CvtF32Bf8OpAdaptor; template using GenericAdaptor = CvtF32Bf8OpGenericAdaptor; using FoldAdaptor = GenericAdaptor<::llvm::ArrayRef<::mlir::Attribute>>; static constexpr int odsIndex_srcA = 0; using Properties = FoldAdaptor::Properties; static ::llvm::ArrayRef<::llvm::StringRef> getAttributeNames() { static ::llvm::StringRef attrNames[] = {::llvm::StringRef("byteSel")}; return ::llvm::ArrayRef(attrNames); } ::mlir::StringAttr getByteSelAttrName() { return getAttributeNameForIndex(0); } static ::mlir::StringAttr getByteSelAttrName(::mlir::OperationName name) { return getAttributeNameForIndex(name, 0); } static constexpr ::llvm::StringLiteral getOperationName() { return ::llvm::StringLiteral("rocdl.cvt.f32.bf8"); } std::pair getODSOperandIndexAndLength(unsigned index) { return {index, 1}; } ::mlir::Operation::operand_range getODSOperands(unsigned index) { auto valueRange = getODSOperandIndexAndLength(index); return {std::next(getOperation()->operand_begin(), valueRange.first), std::next(getOperation()->operand_begin(), valueRange.first + valueRange.second)}; } ::mlir::TypedValue<::mlir::IntegerType> getSrcA() { return ::llvm::cast<::mlir::TypedValue<::mlir::IntegerType>>(*getODSOperands(0).begin()); } ::mlir::OpOperand &getSrcAMutable() { auto range = getODSOperandIndexAndLength(0); return getOperation()->getOpOperand(range.first); } std::pair getODSResultIndexAndLength(unsigned index) { return {index, 1}; } ::mlir::Operation::result_range getODSResults(unsigned index) { auto valueRange = getODSResultIndexAndLength(index); return {std::next(getOperation()->result_begin(), valueRange.first), std::next(getOperation()->result_begin(), valueRange.first + valueRange.second)}; } ::mlir::TypedValue<::mlir::Type> getRes() { return ::llvm::cast<::mlir::TypedValue<::mlir::Type>>(*getODSResults(0).begin()); } static ::llvm::LogicalResult setPropertiesFromAttr(Properties &prop, ::mlir::Attribute attr, ::llvm::function_ref<::mlir::InFlightDiagnostic()> emitError); static ::mlir::Attribute getPropertiesAsAttr(::mlir::MLIRContext *ctx, const Properties &prop); static llvm::hash_code computePropertiesHash(const Properties &prop); static std::optional getInherentAttr(::mlir::MLIRContext *ctx, const Properties &prop, llvm::StringRef name); static void setInherentAttr(Properties &prop, llvm::StringRef name, mlir::Attribute value); static void populateInherentAttrs(::mlir::MLIRContext *ctx, const Properties &prop, ::mlir::NamedAttrList &attrs); static ::llvm::LogicalResult verifyInherentAttrs(::mlir::OperationName opName, ::mlir::NamedAttrList &attrs, llvm::function_ref<::mlir::InFlightDiagnostic()> emitError); static ::llvm::LogicalResult readProperties(::mlir::DialectBytecodeReader &reader, ::mlir::OperationState &state); void writeProperties(::mlir::DialectBytecodeWriter &writer); ::mlir::IntegerAttr getByteSelAttr() { return ::llvm::cast<::mlir::IntegerAttr>(getProperties().byteSel); } uint32_t getByteSel(); void setByteSelAttr(::mlir::IntegerAttr attr) { getProperties().byteSel = attr; } void setByteSel(uint32_t attrValue); static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::Type res, ::mlir::Value srcA, ::mlir::IntegerAttr byteSel); static CvtF32Bf8Op create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::Type res, ::mlir::Value srcA, ::mlir::IntegerAttr byteSel); static CvtF32Bf8Op create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::Type res, ::mlir::Value srcA, ::mlir::IntegerAttr byteSel); static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::Value srcA, ::mlir::IntegerAttr byteSel); static CvtF32Bf8Op create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::Value srcA, ::mlir::IntegerAttr byteSel); static CvtF32Bf8Op create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::Value srcA, ::mlir::IntegerAttr byteSel); static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::Type res, ::mlir::Value srcA, uint32_t byteSel); static CvtF32Bf8Op create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::Type res, ::mlir::Value srcA, uint32_t byteSel); static CvtF32Bf8Op create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::Type res, ::mlir::Value srcA, uint32_t byteSel); static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::Value srcA, uint32_t byteSel); static CvtF32Bf8Op create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::Value srcA, uint32_t byteSel); static CvtF32Bf8Op create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::Value srcA, uint32_t byteSel); static void build(::mlir::OpBuilder &, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, ::llvm::ArrayRef<::mlir::NamedAttribute> attributes = {}); static CvtF32Bf8Op create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, ::llvm::ArrayRef<::mlir::NamedAttribute> attributes = {}); static CvtF32Bf8Op create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, ::llvm::ArrayRef<::mlir::NamedAttribute> attributes = {}); static void build(::mlir::OpBuilder &, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, const Properties &properties, ::llvm::ArrayRef<::mlir::NamedAttribute> discardableAttributes = {}); static CvtF32Bf8Op create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, const Properties &properties, ::llvm::ArrayRef<::mlir::NamedAttribute> discardableAttributes = {}); static CvtF32Bf8Op create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, const Properties &properties, ::llvm::ArrayRef<::mlir::NamedAttribute> discardableAttributes = {}); ::llvm::LogicalResult verifyInvariantsImpl(); ::llvm::LogicalResult verifyInvariants(); static ::mlir::ParseResult parse(::mlir::OpAsmParser &parser, ::mlir::OperationState &result); void print(::mlir::OpAsmPrinter &_odsPrinter); void getEffects(::llvm::SmallVectorImpl<::mlir::SideEffects::EffectInstance<::mlir::MemoryEffects::Effect>> &effects); private: ::mlir::StringAttr getAttributeNameForIndex(unsigned index) { return getAttributeNameForIndex((*this)->getName(), index); } static ::mlir::StringAttr getAttributeNameForIndex(::mlir::OperationName name, unsigned index) { assert(index < 1 && "invalid attribute index"); assert(name.getStringRef() == getOperationName() && "invalid operation name"); assert(name.isRegistered() && "Operation isn't registered, missing a " "dependent dialect loading?"); return name.getAttributeNames()[index]; } public: }; } // namespace mlir::ROCDL MLIR_DECLARE_EXPLICIT_TYPE_ID(::mlir::ROCDL::CvtF32Bf8Op) MLIR_DECLARE_EXPLICIT_TYPE_ID(::mlir::ROCDL::detail::CvtF32Bf8OpGenericAdaptorBase::Properties) namespace mlir::ROCDL { //===----------------------------------------------------------------------===// // ::mlir::ROCDL::CvtF32Fp8Op declarations //===----------------------------------------------------------------------===// namespace detail { class CvtF32Fp8OpGenericAdaptorBase { public: struct Properties { using byteSelTy = ::mlir::IntegerAttr; byteSelTy byteSel; auto getByteSel() const { auto &propStorage = this->byteSel; return ::llvm::cast<::mlir::IntegerAttr>(propStorage); } void setByteSel(const ::mlir::IntegerAttr &propValue) { this->byteSel = propValue; } bool operator==(const Properties &rhs) const { return rhs.byteSel == this->byteSel && true; } bool operator!=(const Properties &rhs) const { return !(*this == rhs); } }; protected: ::mlir::DictionaryAttr odsAttrs; ::std::optional<::mlir::OperationName> odsOpName; Properties properties; ::mlir::RegionRange odsRegions; public: CvtF32Fp8OpGenericAdaptorBase(::mlir::DictionaryAttr attrs, const Properties &properties, ::mlir::RegionRange regions = {}) : odsAttrs(attrs), properties(properties), odsRegions(regions) { if (odsAttrs) odsOpName.emplace("rocdl.cvt.f32.fp8", odsAttrs.getContext()); } CvtF32Fp8OpGenericAdaptorBase(CvtF32Fp8Op op); std::pair getODSOperandIndexAndLength(unsigned index, unsigned odsOperandsSize) { return {index, 1}; } const Properties &getProperties() { return properties; } ::mlir::DictionaryAttr getAttributes() { return odsAttrs; } ::mlir::IntegerAttr getByteSelAttr() { auto attr = ::llvm::cast<::mlir::IntegerAttr>(getProperties().byteSel); return attr; } uint32_t getByteSel(); }; } // namespace detail template class CvtF32Fp8OpGenericAdaptor : public detail::CvtF32Fp8OpGenericAdaptorBase { using ValueT = ::llvm::detail::ValueOfRange; using Base = detail::CvtF32Fp8OpGenericAdaptorBase; static constexpr int odsIndex_srcA = 0; public: CvtF32Fp8OpGenericAdaptor(RangeT values, ::mlir::DictionaryAttr attrs, const Properties &properties, ::mlir::RegionRange regions = {}) : Base(attrs, properties, regions), odsOperands(values) {} CvtF32Fp8OpGenericAdaptor(RangeT values, ::mlir::DictionaryAttr attrs, ::mlir::PropertyRef properties, ::mlir::RegionRange regions = {}) : CvtF32Fp8OpGenericAdaptor(values, attrs, (properties ? *properties.as() : Properties{}), regions) {} CvtF32Fp8OpGenericAdaptor(RangeT values, ::mlir::DictionaryAttr attrs = nullptr) : CvtF32Fp8OpGenericAdaptor(values, attrs, Properties{}, {}) {} CvtF32Fp8OpGenericAdaptor(RangeT values, const CvtF32Fp8OpGenericAdaptorBase &base) : Base(base), odsOperands(values) {} template >> CvtF32Fp8OpGenericAdaptor(RangeT values, LateInst op) : Base(op), odsOperands(values) {} std::pair getODSOperandIndexAndLength(unsigned index) { return Base::getODSOperandIndexAndLength(index, odsOperands.size()); } RangeT getODSOperands(unsigned index) { auto valueRange = getODSOperandIndexAndLength(index); return {std::next(odsOperands.begin(), valueRange.first), std::next(odsOperands.begin(), valueRange.first + valueRange.second)}; } ValueT getSrcA() { return (*getODSOperands(0).begin()); } RangeT getOperands() { return odsOperands; } private: RangeT odsOperands; }; class CvtF32Fp8OpAdaptor : public CvtF32Fp8OpGenericAdaptor<::mlir::ValueRange> { public: using CvtF32Fp8OpGenericAdaptor::CvtF32Fp8OpGenericAdaptor; CvtF32Fp8OpAdaptor(CvtF32Fp8Op op); ::llvm::LogicalResult verify(::mlir::Location loc); }; class CvtF32Fp8Op : public ::mlir::Op::Impl, ::mlir::OpTrait::ZeroSuccessors, ::mlir::OpTrait::OneOperand, ::mlir::OpTrait::OpInvariants, ::mlir::BytecodeOpInterface::Trait, ::mlir::ConditionallySpeculatable::Trait, ::mlir::OpTrait::AlwaysSpeculatableImplTrait, ::mlir::MemoryEffectOpInterface::Trait> { public: using Op::Op; using Op::print; using Adaptor = CvtF32Fp8OpAdaptor; template using GenericAdaptor = CvtF32Fp8OpGenericAdaptor; using FoldAdaptor = GenericAdaptor<::llvm::ArrayRef<::mlir::Attribute>>; static constexpr int odsIndex_srcA = 0; using Properties = FoldAdaptor::Properties; static ::llvm::ArrayRef<::llvm::StringRef> getAttributeNames() { static ::llvm::StringRef attrNames[] = {::llvm::StringRef("byteSel")}; return ::llvm::ArrayRef(attrNames); } ::mlir::StringAttr getByteSelAttrName() { return getAttributeNameForIndex(0); } static ::mlir::StringAttr getByteSelAttrName(::mlir::OperationName name) { return getAttributeNameForIndex(name, 0); } static constexpr ::llvm::StringLiteral getOperationName() { return ::llvm::StringLiteral("rocdl.cvt.f32.fp8"); } std::pair getODSOperandIndexAndLength(unsigned index) { return {index, 1}; } ::mlir::Operation::operand_range getODSOperands(unsigned index) { auto valueRange = getODSOperandIndexAndLength(index); return {std::next(getOperation()->operand_begin(), valueRange.first), std::next(getOperation()->operand_begin(), valueRange.first + valueRange.second)}; } ::mlir::TypedValue<::mlir::IntegerType> getSrcA() { return ::llvm::cast<::mlir::TypedValue<::mlir::IntegerType>>(*getODSOperands(0).begin()); } ::mlir::OpOperand &getSrcAMutable() { auto range = getODSOperandIndexAndLength(0); return getOperation()->getOpOperand(range.first); } std::pair getODSResultIndexAndLength(unsigned index) { return {index, 1}; } ::mlir::Operation::result_range getODSResults(unsigned index) { auto valueRange = getODSResultIndexAndLength(index); return {std::next(getOperation()->result_begin(), valueRange.first), std::next(getOperation()->result_begin(), valueRange.first + valueRange.second)}; } ::mlir::TypedValue<::mlir::Type> getRes() { return ::llvm::cast<::mlir::TypedValue<::mlir::Type>>(*getODSResults(0).begin()); } static ::llvm::LogicalResult setPropertiesFromAttr(Properties &prop, ::mlir::Attribute attr, ::llvm::function_ref<::mlir::InFlightDiagnostic()> emitError); static ::mlir::Attribute getPropertiesAsAttr(::mlir::MLIRContext *ctx, const Properties &prop); static llvm::hash_code computePropertiesHash(const Properties &prop); static std::optional getInherentAttr(::mlir::MLIRContext *ctx, const Properties &prop, llvm::StringRef name); static void setInherentAttr(Properties &prop, llvm::StringRef name, mlir::Attribute value); static void populateInherentAttrs(::mlir::MLIRContext *ctx, const Properties &prop, ::mlir::NamedAttrList &attrs); static ::llvm::LogicalResult verifyInherentAttrs(::mlir::OperationName opName, ::mlir::NamedAttrList &attrs, llvm::function_ref<::mlir::InFlightDiagnostic()> emitError); static ::llvm::LogicalResult readProperties(::mlir::DialectBytecodeReader &reader, ::mlir::OperationState &state); void writeProperties(::mlir::DialectBytecodeWriter &writer); ::mlir::IntegerAttr getByteSelAttr() { return ::llvm::cast<::mlir::IntegerAttr>(getProperties().byteSel); } uint32_t getByteSel(); void setByteSelAttr(::mlir::IntegerAttr attr) { getProperties().byteSel = attr; } void setByteSel(uint32_t attrValue); static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::Type res, ::mlir::Value srcA, ::mlir::IntegerAttr byteSel); static CvtF32Fp8Op create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::Type res, ::mlir::Value srcA, ::mlir::IntegerAttr byteSel); static CvtF32Fp8Op create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::Type res, ::mlir::Value srcA, ::mlir::IntegerAttr byteSel); static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::Value srcA, ::mlir::IntegerAttr byteSel); static CvtF32Fp8Op create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::Value srcA, ::mlir::IntegerAttr byteSel); static CvtF32Fp8Op create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::Value srcA, ::mlir::IntegerAttr byteSel); static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::Type res, ::mlir::Value srcA, uint32_t byteSel); static CvtF32Fp8Op create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::Type res, ::mlir::Value srcA, uint32_t byteSel); static CvtF32Fp8Op create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::Type res, ::mlir::Value srcA, uint32_t byteSel); static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::Value srcA, uint32_t byteSel); static CvtF32Fp8Op create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::Value srcA, uint32_t byteSel); static CvtF32Fp8Op create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::Value srcA, uint32_t byteSel); static void build(::mlir::OpBuilder &, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, ::llvm::ArrayRef<::mlir::NamedAttribute> attributes = {}); static CvtF32Fp8Op create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, ::llvm::ArrayRef<::mlir::NamedAttribute> attributes = {}); static CvtF32Fp8Op create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, ::llvm::ArrayRef<::mlir::NamedAttribute> attributes = {}); static void build(::mlir::OpBuilder &, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, const Properties &properties, ::llvm::ArrayRef<::mlir::NamedAttribute> discardableAttributes = {}); static CvtF32Fp8Op create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, const Properties &properties, ::llvm::ArrayRef<::mlir::NamedAttribute> discardableAttributes = {}); static CvtF32Fp8Op create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, const Properties &properties, ::llvm::ArrayRef<::mlir::NamedAttribute> discardableAttributes = {}); ::llvm::LogicalResult verifyInvariantsImpl(); ::llvm::LogicalResult verifyInvariants(); static ::mlir::ParseResult parse(::mlir::OpAsmParser &parser, ::mlir::OperationState &result); void print(::mlir::OpAsmPrinter &_odsPrinter); void getEffects(::llvm::SmallVectorImpl<::mlir::SideEffects::EffectInstance<::mlir::MemoryEffects::Effect>> &effects); private: ::mlir::StringAttr getAttributeNameForIndex(unsigned index) { return getAttributeNameForIndex((*this)->getName(), index); } static ::mlir::StringAttr getAttributeNameForIndex(::mlir::OperationName name, unsigned index) { assert(index < 1 && "invalid attribute index"); assert(name.getStringRef() == getOperationName() && "invalid operation name"); assert(name.isRegistered() && "Operation isn't registered, missing a " "dependent dialect loading?"); return name.getAttributeNames()[index]; } public: }; } // namespace mlir::ROCDL MLIR_DECLARE_EXPLICIT_TYPE_ID(::mlir::ROCDL::CvtF32Fp8Op) MLIR_DECLARE_EXPLICIT_TYPE_ID(::mlir::ROCDL::detail::CvtF32Fp8OpGenericAdaptorBase::Properties) namespace mlir::ROCDL { //===----------------------------------------------------------------------===// // ::mlir::ROCDL::CvtPkBf8F32Op declarations //===----------------------------------------------------------------------===// namespace detail { class CvtPkBf8F32OpGenericAdaptorBase { public: struct Properties { using wordSelTy = ::mlir::IntegerAttr; wordSelTy wordSel; auto getWordSel() const { auto &propStorage = this->wordSel; return ::llvm::cast<::mlir::IntegerAttr>(propStorage); } void setWordSel(const ::mlir::IntegerAttr &propValue) { this->wordSel = propValue; } bool operator==(const Properties &rhs) const { return rhs.wordSel == this->wordSel && true; } bool operator!=(const Properties &rhs) const { return !(*this == rhs); } }; protected: ::mlir::DictionaryAttr odsAttrs; ::std::optional<::mlir::OperationName> odsOpName; Properties properties; ::mlir::RegionRange odsRegions; public: CvtPkBf8F32OpGenericAdaptorBase(::mlir::DictionaryAttr attrs, const Properties &properties, ::mlir::RegionRange regions = {}) : odsAttrs(attrs), properties(properties), odsRegions(regions) { if (odsAttrs) odsOpName.emplace("rocdl.cvt.pk.bf8.f32", odsAttrs.getContext()); } CvtPkBf8F32OpGenericAdaptorBase(CvtPkBf8F32Op op); std::pair getODSOperandIndexAndLength(unsigned index, unsigned odsOperandsSize) { return {index, 1}; } const Properties &getProperties() { return properties; } ::mlir::DictionaryAttr getAttributes() { return odsAttrs; } ::mlir::IntegerAttr getWordSelAttr() { auto attr = ::llvm::cast<::mlir::IntegerAttr>(getProperties().wordSel); return attr; } bool getWordSel(); }; } // namespace detail template class CvtPkBf8F32OpGenericAdaptor : public detail::CvtPkBf8F32OpGenericAdaptorBase { using ValueT = ::llvm::detail::ValueOfRange; using Base = detail::CvtPkBf8F32OpGenericAdaptorBase; static constexpr int odsIndex_srcA = 0; static constexpr int odsIndex_srcB = 1; static constexpr int odsIndex_old = 2; public: CvtPkBf8F32OpGenericAdaptor(RangeT values, ::mlir::DictionaryAttr attrs, const Properties &properties, ::mlir::RegionRange regions = {}) : Base(attrs, properties, regions), odsOperands(values) {} CvtPkBf8F32OpGenericAdaptor(RangeT values, ::mlir::DictionaryAttr attrs, ::mlir::PropertyRef properties, ::mlir::RegionRange regions = {}) : CvtPkBf8F32OpGenericAdaptor(values, attrs, (properties ? *properties.as() : Properties{}), regions) {} CvtPkBf8F32OpGenericAdaptor(RangeT values, ::mlir::DictionaryAttr attrs = nullptr) : CvtPkBf8F32OpGenericAdaptor(values, attrs, Properties{}, {}) {} CvtPkBf8F32OpGenericAdaptor(RangeT values, const CvtPkBf8F32OpGenericAdaptorBase &base) : Base(base), odsOperands(values) {} template >> CvtPkBf8F32OpGenericAdaptor(RangeT values, LateInst op) : Base(op), odsOperands(values) {} std::pair getODSOperandIndexAndLength(unsigned index) { return Base::getODSOperandIndexAndLength(index, odsOperands.size()); } RangeT getODSOperands(unsigned index) { auto valueRange = getODSOperandIndexAndLength(index); return {std::next(odsOperands.begin(), valueRange.first), std::next(odsOperands.begin(), valueRange.first + valueRange.second)}; } ValueT getSrcA() { return (*getODSOperands(0).begin()); } ValueT getSrcB() { return (*getODSOperands(1).begin()); } ValueT getOld() { return (*getODSOperands(2).begin()); } RangeT getOperands() { return odsOperands; } private: RangeT odsOperands; }; class CvtPkBf8F32OpAdaptor : public CvtPkBf8F32OpGenericAdaptor<::mlir::ValueRange> { public: using CvtPkBf8F32OpGenericAdaptor::CvtPkBf8F32OpGenericAdaptor; CvtPkBf8F32OpAdaptor(CvtPkBf8F32Op op); ::llvm::LogicalResult verify(::mlir::Location loc); }; class CvtPkBf8F32Op : public ::mlir::Op::Impl, ::mlir::OpTrait::ZeroSuccessors, ::mlir::OpTrait::NOperands<3>::Impl, ::mlir::OpTrait::OpInvariants, ::mlir::BytecodeOpInterface::Trait, ::mlir::ConditionallySpeculatable::Trait, ::mlir::OpTrait::AlwaysSpeculatableImplTrait, ::mlir::MemoryEffectOpInterface::Trait> { public: using Op::Op; using Op::print; using Adaptor = CvtPkBf8F32OpAdaptor; template using GenericAdaptor = CvtPkBf8F32OpGenericAdaptor; using FoldAdaptor = GenericAdaptor<::llvm::ArrayRef<::mlir::Attribute>>; static constexpr int odsIndex_srcA = 0; static constexpr int odsIndex_srcB = 1; static constexpr int odsIndex_old = 2; using Properties = FoldAdaptor::Properties; static ::llvm::ArrayRef<::llvm::StringRef> getAttributeNames() { static ::llvm::StringRef attrNames[] = {::llvm::StringRef("wordSel")}; return ::llvm::ArrayRef(attrNames); } ::mlir::StringAttr getWordSelAttrName() { return getAttributeNameForIndex(0); } static ::mlir::StringAttr getWordSelAttrName(::mlir::OperationName name) { return getAttributeNameForIndex(name, 0); } static constexpr ::llvm::StringLiteral getOperationName() { return ::llvm::StringLiteral("rocdl.cvt.pk.bf8.f32"); } std::pair getODSOperandIndexAndLength(unsigned index) { return {index, 1}; } ::mlir::Operation::operand_range getODSOperands(unsigned index) { auto valueRange = getODSOperandIndexAndLength(index); return {std::next(getOperation()->operand_begin(), valueRange.first), std::next(getOperation()->operand_begin(), valueRange.first + valueRange.second)}; } ::mlir::TypedValue<::mlir::FloatType> getSrcA() { return ::llvm::cast<::mlir::TypedValue<::mlir::FloatType>>(*getODSOperands(0).begin()); } ::mlir::TypedValue<::mlir::FloatType> getSrcB() { return ::llvm::cast<::mlir::TypedValue<::mlir::FloatType>>(*getODSOperands(1).begin()); } ::mlir::TypedValue<::mlir::IntegerType> getOld() { return ::llvm::cast<::mlir::TypedValue<::mlir::IntegerType>>(*getODSOperands(2).begin()); } ::mlir::OpOperand &getSrcAMutable() { auto range = getODSOperandIndexAndLength(0); return getOperation()->getOpOperand(range.first); } ::mlir::OpOperand &getSrcBMutable() { auto range = getODSOperandIndexAndLength(1); return getOperation()->getOpOperand(range.first); } ::mlir::OpOperand &getOldMutable() { auto range = getODSOperandIndexAndLength(2); return getOperation()->getOpOperand(range.first); } std::pair getODSResultIndexAndLength(unsigned index) { return {index, 1}; } ::mlir::Operation::result_range getODSResults(unsigned index) { auto valueRange = getODSResultIndexAndLength(index); return {std::next(getOperation()->result_begin(), valueRange.first), std::next(getOperation()->result_begin(), valueRange.first + valueRange.second)}; } ::mlir::TypedValue<::mlir::Type> getRes() { return ::llvm::cast<::mlir::TypedValue<::mlir::Type>>(*getODSResults(0).begin()); } static ::llvm::LogicalResult setPropertiesFromAttr(Properties &prop, ::mlir::Attribute attr, ::llvm::function_ref<::mlir::InFlightDiagnostic()> emitError); static ::mlir::Attribute getPropertiesAsAttr(::mlir::MLIRContext *ctx, const Properties &prop); static llvm::hash_code computePropertiesHash(const Properties &prop); static std::optional getInherentAttr(::mlir::MLIRContext *ctx, const Properties &prop, llvm::StringRef name); static void setInherentAttr(Properties &prop, llvm::StringRef name, mlir::Attribute value); static void populateInherentAttrs(::mlir::MLIRContext *ctx, const Properties &prop, ::mlir::NamedAttrList &attrs); static ::llvm::LogicalResult verifyInherentAttrs(::mlir::OperationName opName, ::mlir::NamedAttrList &attrs, llvm::function_ref<::mlir::InFlightDiagnostic()> emitError); static ::llvm::LogicalResult readProperties(::mlir::DialectBytecodeReader &reader, ::mlir::OperationState &state); void writeProperties(::mlir::DialectBytecodeWriter &writer); ::mlir::IntegerAttr getWordSelAttr() { return ::llvm::cast<::mlir::IntegerAttr>(getProperties().wordSel); } bool getWordSel(); void setWordSelAttr(::mlir::IntegerAttr attr) { getProperties().wordSel = attr; } void setWordSel(bool attrValue); static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::Type res, ::mlir::Value srcA, ::mlir::Value srcB, ::mlir::Value old, ::mlir::IntegerAttr wordSel); static CvtPkBf8F32Op create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::Type res, ::mlir::Value srcA, ::mlir::Value srcB, ::mlir::Value old, ::mlir::IntegerAttr wordSel); static CvtPkBf8F32Op create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::Type res, ::mlir::Value srcA, ::mlir::Value srcB, ::mlir::Value old, ::mlir::IntegerAttr wordSel); static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::Value srcA, ::mlir::Value srcB, ::mlir::Value old, ::mlir::IntegerAttr wordSel); static CvtPkBf8F32Op create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::Value srcA, ::mlir::Value srcB, ::mlir::Value old, ::mlir::IntegerAttr wordSel); static CvtPkBf8F32Op create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::Value srcA, ::mlir::Value srcB, ::mlir::Value old, ::mlir::IntegerAttr wordSel); static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::Type res, ::mlir::Value srcA, ::mlir::Value srcB, ::mlir::Value old, bool wordSel); static CvtPkBf8F32Op create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::Type res, ::mlir::Value srcA, ::mlir::Value srcB, ::mlir::Value old, bool wordSel); static CvtPkBf8F32Op create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::Type res, ::mlir::Value srcA, ::mlir::Value srcB, ::mlir::Value old, bool wordSel); static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::Value srcA, ::mlir::Value srcB, ::mlir::Value old, bool wordSel); static CvtPkBf8F32Op create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::Value srcA, ::mlir::Value srcB, ::mlir::Value old, bool wordSel); static CvtPkBf8F32Op create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::Value srcA, ::mlir::Value srcB, ::mlir::Value old, bool wordSel); static void build(::mlir::OpBuilder &, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, ::llvm::ArrayRef<::mlir::NamedAttribute> attributes = {}); static CvtPkBf8F32Op create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, ::llvm::ArrayRef<::mlir::NamedAttribute> attributes = {}); static CvtPkBf8F32Op create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, ::llvm::ArrayRef<::mlir::NamedAttribute> attributes = {}); static void build(::mlir::OpBuilder &, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, const Properties &properties, ::llvm::ArrayRef<::mlir::NamedAttribute> discardableAttributes = {}); static CvtPkBf8F32Op create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, const Properties &properties, ::llvm::ArrayRef<::mlir::NamedAttribute> discardableAttributes = {}); static CvtPkBf8F32Op create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, const Properties &properties, ::llvm::ArrayRef<::mlir::NamedAttribute> discardableAttributes = {}); ::llvm::LogicalResult verifyInvariantsImpl(); ::llvm::LogicalResult verifyInvariants(); static ::mlir::ParseResult parse(::mlir::OpAsmParser &parser, ::mlir::OperationState &result); void print(::mlir::OpAsmPrinter &_odsPrinter); void getEffects(::llvm::SmallVectorImpl<::mlir::SideEffects::EffectInstance<::mlir::MemoryEffects::Effect>> &effects); private: ::mlir::StringAttr getAttributeNameForIndex(unsigned index) { return getAttributeNameForIndex((*this)->getName(), index); } static ::mlir::StringAttr getAttributeNameForIndex(::mlir::OperationName name, unsigned index) { assert(index < 1 && "invalid attribute index"); assert(name.getStringRef() == getOperationName() && "invalid operation name"); assert(name.isRegistered() && "Operation isn't registered, missing a " "dependent dialect loading?"); return name.getAttributeNames()[index]; } public: }; } // namespace mlir::ROCDL MLIR_DECLARE_EXPLICIT_TYPE_ID(::mlir::ROCDL::CvtPkBf8F32Op) MLIR_DECLARE_EXPLICIT_TYPE_ID(::mlir::ROCDL::detail::CvtPkBf8F32OpGenericAdaptorBase::Properties) namespace mlir::ROCDL { //===----------------------------------------------------------------------===// // ::mlir::ROCDL::CvtPkF32Bf8Op declarations //===----------------------------------------------------------------------===// namespace detail { class CvtPkF32Bf8OpGenericAdaptorBase { public: struct Properties { using wordSelTy = ::mlir::IntegerAttr; wordSelTy wordSel; auto getWordSel() const { auto &propStorage = this->wordSel; return ::llvm::cast<::mlir::IntegerAttr>(propStorage); } void setWordSel(const ::mlir::IntegerAttr &propValue) { this->wordSel = propValue; } bool operator==(const Properties &rhs) const { return rhs.wordSel == this->wordSel && true; } bool operator!=(const Properties &rhs) const { return !(*this == rhs); } }; protected: ::mlir::DictionaryAttr odsAttrs; ::std::optional<::mlir::OperationName> odsOpName; Properties properties; ::mlir::RegionRange odsRegions; public: CvtPkF32Bf8OpGenericAdaptorBase(::mlir::DictionaryAttr attrs, const Properties &properties, ::mlir::RegionRange regions = {}) : odsAttrs(attrs), properties(properties), odsRegions(regions) { if (odsAttrs) odsOpName.emplace("rocdl.cvt.pk.f32.bf8", odsAttrs.getContext()); } CvtPkF32Bf8OpGenericAdaptorBase(CvtPkF32Bf8Op op); std::pair getODSOperandIndexAndLength(unsigned index, unsigned odsOperandsSize) { return {index, 1}; } const Properties &getProperties() { return properties; } ::mlir::DictionaryAttr getAttributes() { return odsAttrs; } ::mlir::IntegerAttr getWordSelAttr() { auto attr = ::llvm::cast<::mlir::IntegerAttr>(getProperties().wordSel); return attr; } bool getWordSel(); }; } // namespace detail template class CvtPkF32Bf8OpGenericAdaptor : public detail::CvtPkF32Bf8OpGenericAdaptorBase { using ValueT = ::llvm::detail::ValueOfRange; using Base = detail::CvtPkF32Bf8OpGenericAdaptorBase; static constexpr int odsIndex_src = 0; public: CvtPkF32Bf8OpGenericAdaptor(RangeT values, ::mlir::DictionaryAttr attrs, const Properties &properties, ::mlir::RegionRange regions = {}) : Base(attrs, properties, regions), odsOperands(values) {} CvtPkF32Bf8OpGenericAdaptor(RangeT values, ::mlir::DictionaryAttr attrs, ::mlir::PropertyRef properties, ::mlir::RegionRange regions = {}) : CvtPkF32Bf8OpGenericAdaptor(values, attrs, (properties ? *properties.as() : Properties{}), regions) {} CvtPkF32Bf8OpGenericAdaptor(RangeT values, ::mlir::DictionaryAttr attrs = nullptr) : CvtPkF32Bf8OpGenericAdaptor(values, attrs, Properties{}, {}) {} CvtPkF32Bf8OpGenericAdaptor(RangeT values, const CvtPkF32Bf8OpGenericAdaptorBase &base) : Base(base), odsOperands(values) {} template >> CvtPkF32Bf8OpGenericAdaptor(RangeT values, LateInst op) : Base(op), odsOperands(values) {} std::pair getODSOperandIndexAndLength(unsigned index) { return Base::getODSOperandIndexAndLength(index, odsOperands.size()); } RangeT getODSOperands(unsigned index) { auto valueRange = getODSOperandIndexAndLength(index); return {std::next(odsOperands.begin(), valueRange.first), std::next(odsOperands.begin(), valueRange.first + valueRange.second)}; } ValueT getSrc() { return (*getODSOperands(0).begin()); } RangeT getOperands() { return odsOperands; } private: RangeT odsOperands; }; class CvtPkF32Bf8OpAdaptor : public CvtPkF32Bf8OpGenericAdaptor<::mlir::ValueRange> { public: using CvtPkF32Bf8OpGenericAdaptor::CvtPkF32Bf8OpGenericAdaptor; CvtPkF32Bf8OpAdaptor(CvtPkF32Bf8Op op); ::llvm::LogicalResult verify(::mlir::Location loc); }; class CvtPkF32Bf8Op : public ::mlir::Op::Impl, ::mlir::OpTrait::ZeroSuccessors, ::mlir::OpTrait::OneOperand, ::mlir::OpTrait::OpInvariants, ::mlir::BytecodeOpInterface::Trait, ::mlir::ConditionallySpeculatable::Trait, ::mlir::OpTrait::AlwaysSpeculatableImplTrait, ::mlir::MemoryEffectOpInterface::Trait> { public: using Op::Op; using Op::print; using Adaptor = CvtPkF32Bf8OpAdaptor; template using GenericAdaptor = CvtPkF32Bf8OpGenericAdaptor; using FoldAdaptor = GenericAdaptor<::llvm::ArrayRef<::mlir::Attribute>>; static constexpr int odsIndex_src = 0; using Properties = FoldAdaptor::Properties; static ::llvm::ArrayRef<::llvm::StringRef> getAttributeNames() { static ::llvm::StringRef attrNames[] = {::llvm::StringRef("wordSel")}; return ::llvm::ArrayRef(attrNames); } ::mlir::StringAttr getWordSelAttrName() { return getAttributeNameForIndex(0); } static ::mlir::StringAttr getWordSelAttrName(::mlir::OperationName name) { return getAttributeNameForIndex(name, 0); } static constexpr ::llvm::StringLiteral getOperationName() { return ::llvm::StringLiteral("rocdl.cvt.pk.f32.bf8"); } std::pair getODSOperandIndexAndLength(unsigned index) { return {index, 1}; } ::mlir::Operation::operand_range getODSOperands(unsigned index) { auto valueRange = getODSOperandIndexAndLength(index); return {std::next(getOperation()->operand_begin(), valueRange.first), std::next(getOperation()->operand_begin(), valueRange.first + valueRange.second)}; } ::mlir::TypedValue<::mlir::IntegerType> getSrc() { return ::llvm::cast<::mlir::TypedValue<::mlir::IntegerType>>(*getODSOperands(0).begin()); } ::mlir::OpOperand &getSrcMutable() { auto range = getODSOperandIndexAndLength(0); return getOperation()->getOpOperand(range.first); } std::pair getODSResultIndexAndLength(unsigned index) { return {index, 1}; } ::mlir::Operation::result_range getODSResults(unsigned index) { auto valueRange = getODSResultIndexAndLength(index); return {std::next(getOperation()->result_begin(), valueRange.first), std::next(getOperation()->result_begin(), valueRange.first + valueRange.second)}; } ::mlir::TypedValue<::mlir::Type> getRes() { return ::llvm::cast<::mlir::TypedValue<::mlir::Type>>(*getODSResults(0).begin()); } static ::llvm::LogicalResult setPropertiesFromAttr(Properties &prop, ::mlir::Attribute attr, ::llvm::function_ref<::mlir::InFlightDiagnostic()> emitError); static ::mlir::Attribute getPropertiesAsAttr(::mlir::MLIRContext *ctx, const Properties &prop); static llvm::hash_code computePropertiesHash(const Properties &prop); static std::optional getInherentAttr(::mlir::MLIRContext *ctx, const Properties &prop, llvm::StringRef name); static void setInherentAttr(Properties &prop, llvm::StringRef name, mlir::Attribute value); static void populateInherentAttrs(::mlir::MLIRContext *ctx, const Properties &prop, ::mlir::NamedAttrList &attrs); static ::llvm::LogicalResult verifyInherentAttrs(::mlir::OperationName opName, ::mlir::NamedAttrList &attrs, llvm::function_ref<::mlir::InFlightDiagnostic()> emitError); static ::llvm::LogicalResult readProperties(::mlir::DialectBytecodeReader &reader, ::mlir::OperationState &state); void writeProperties(::mlir::DialectBytecodeWriter &writer); ::mlir::IntegerAttr getWordSelAttr() { return ::llvm::cast<::mlir::IntegerAttr>(getProperties().wordSel); } bool getWordSel(); void setWordSelAttr(::mlir::IntegerAttr attr) { getProperties().wordSel = attr; } void setWordSel(bool attrValue); static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::Type res, ::mlir::Value src, ::mlir::IntegerAttr wordSel); static CvtPkF32Bf8Op create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::Type res, ::mlir::Value src, ::mlir::IntegerAttr wordSel); static CvtPkF32Bf8Op create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::Type res, ::mlir::Value src, ::mlir::IntegerAttr wordSel); static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::Value src, ::mlir::IntegerAttr wordSel); static CvtPkF32Bf8Op create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::Value src, ::mlir::IntegerAttr wordSel); static CvtPkF32Bf8Op create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::Value src, ::mlir::IntegerAttr wordSel); static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::Type res, ::mlir::Value src, bool wordSel); static CvtPkF32Bf8Op create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::Type res, ::mlir::Value src, bool wordSel); static CvtPkF32Bf8Op create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::Type res, ::mlir::Value src, bool wordSel); static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::Value src, bool wordSel); static CvtPkF32Bf8Op create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::Value src, bool wordSel); static CvtPkF32Bf8Op create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::Value src, bool wordSel); static void build(::mlir::OpBuilder &, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, ::llvm::ArrayRef<::mlir::NamedAttribute> attributes = {}); static CvtPkF32Bf8Op create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, ::llvm::ArrayRef<::mlir::NamedAttribute> attributes = {}); static CvtPkF32Bf8Op create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, ::llvm::ArrayRef<::mlir::NamedAttribute> attributes = {}); static void build(::mlir::OpBuilder &, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, const Properties &properties, ::llvm::ArrayRef<::mlir::NamedAttribute> discardableAttributes = {}); static CvtPkF32Bf8Op create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, const Properties &properties, ::llvm::ArrayRef<::mlir::NamedAttribute> discardableAttributes = {}); static CvtPkF32Bf8Op create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, const Properties &properties, ::llvm::ArrayRef<::mlir::NamedAttribute> discardableAttributes = {}); ::llvm::LogicalResult verifyInvariantsImpl(); ::llvm::LogicalResult verifyInvariants(); static ::mlir::ParseResult parse(::mlir::OpAsmParser &parser, ::mlir::OperationState &result); void print(::mlir::OpAsmPrinter &_odsPrinter); void getEffects(::llvm::SmallVectorImpl<::mlir::SideEffects::EffectInstance<::mlir::MemoryEffects::Effect>> &effects); private: ::mlir::StringAttr getAttributeNameForIndex(unsigned index) { return getAttributeNameForIndex((*this)->getName(), index); } static ::mlir::StringAttr getAttributeNameForIndex(::mlir::OperationName name, unsigned index) { assert(index < 1 && "invalid attribute index"); assert(name.getStringRef() == getOperationName() && "invalid operation name"); assert(name.isRegistered() && "Operation isn't registered, missing a " "dependent dialect loading?"); return name.getAttributeNames()[index]; } public: }; } // namespace mlir::ROCDL MLIR_DECLARE_EXPLICIT_TYPE_ID(::mlir::ROCDL::CvtPkF32Bf8Op) MLIR_DECLARE_EXPLICIT_TYPE_ID(::mlir::ROCDL::detail::CvtPkF32Bf8OpGenericAdaptorBase::Properties) namespace mlir::ROCDL { //===----------------------------------------------------------------------===// // ::mlir::ROCDL::CvtPkF32Fp8Op declarations //===----------------------------------------------------------------------===// namespace detail { class CvtPkF32Fp8OpGenericAdaptorBase { public: struct Properties { using wordSelTy = ::mlir::IntegerAttr; wordSelTy wordSel; auto getWordSel() const { auto &propStorage = this->wordSel; return ::llvm::cast<::mlir::IntegerAttr>(propStorage); } void setWordSel(const ::mlir::IntegerAttr &propValue) { this->wordSel = propValue; } bool operator==(const Properties &rhs) const { return rhs.wordSel == this->wordSel && true; } bool operator!=(const Properties &rhs) const { return !(*this == rhs); } }; protected: ::mlir::DictionaryAttr odsAttrs; ::std::optional<::mlir::OperationName> odsOpName; Properties properties; ::mlir::RegionRange odsRegions; public: CvtPkF32Fp8OpGenericAdaptorBase(::mlir::DictionaryAttr attrs, const Properties &properties, ::mlir::RegionRange regions = {}) : odsAttrs(attrs), properties(properties), odsRegions(regions) { if (odsAttrs) odsOpName.emplace("rocdl.cvt.pk.f32.fp8", odsAttrs.getContext()); } CvtPkF32Fp8OpGenericAdaptorBase(CvtPkF32Fp8Op op); std::pair getODSOperandIndexAndLength(unsigned index, unsigned odsOperandsSize) { return {index, 1}; } const Properties &getProperties() { return properties; } ::mlir::DictionaryAttr getAttributes() { return odsAttrs; } ::mlir::IntegerAttr getWordSelAttr() { auto attr = ::llvm::cast<::mlir::IntegerAttr>(getProperties().wordSel); return attr; } bool getWordSel(); }; } // namespace detail template class CvtPkF32Fp8OpGenericAdaptor : public detail::CvtPkF32Fp8OpGenericAdaptorBase { using ValueT = ::llvm::detail::ValueOfRange; using Base = detail::CvtPkF32Fp8OpGenericAdaptorBase; static constexpr int odsIndex_src = 0; public: CvtPkF32Fp8OpGenericAdaptor(RangeT values, ::mlir::DictionaryAttr attrs, const Properties &properties, ::mlir::RegionRange regions = {}) : Base(attrs, properties, regions), odsOperands(values) {} CvtPkF32Fp8OpGenericAdaptor(RangeT values, ::mlir::DictionaryAttr attrs, ::mlir::PropertyRef properties, ::mlir::RegionRange regions = {}) : CvtPkF32Fp8OpGenericAdaptor(values, attrs, (properties ? *properties.as() : Properties{}), regions) {} CvtPkF32Fp8OpGenericAdaptor(RangeT values, ::mlir::DictionaryAttr attrs = nullptr) : CvtPkF32Fp8OpGenericAdaptor(values, attrs, Properties{}, {}) {} CvtPkF32Fp8OpGenericAdaptor(RangeT values, const CvtPkF32Fp8OpGenericAdaptorBase &base) : Base(base), odsOperands(values) {} template >> CvtPkF32Fp8OpGenericAdaptor(RangeT values, LateInst op) : Base(op), odsOperands(values) {} std::pair getODSOperandIndexAndLength(unsigned index) { return Base::getODSOperandIndexAndLength(index, odsOperands.size()); } RangeT getODSOperands(unsigned index) { auto valueRange = getODSOperandIndexAndLength(index); return {std::next(odsOperands.begin(), valueRange.first), std::next(odsOperands.begin(), valueRange.first + valueRange.second)}; } ValueT getSrc() { return (*getODSOperands(0).begin()); } RangeT getOperands() { return odsOperands; } private: RangeT odsOperands; }; class CvtPkF32Fp8OpAdaptor : public CvtPkF32Fp8OpGenericAdaptor<::mlir::ValueRange> { public: using CvtPkF32Fp8OpGenericAdaptor::CvtPkF32Fp8OpGenericAdaptor; CvtPkF32Fp8OpAdaptor(CvtPkF32Fp8Op op); ::llvm::LogicalResult verify(::mlir::Location loc); }; class CvtPkF32Fp8Op : public ::mlir::Op::Impl, ::mlir::OpTrait::ZeroSuccessors, ::mlir::OpTrait::OneOperand, ::mlir::OpTrait::OpInvariants, ::mlir::BytecodeOpInterface::Trait, ::mlir::ConditionallySpeculatable::Trait, ::mlir::OpTrait::AlwaysSpeculatableImplTrait, ::mlir::MemoryEffectOpInterface::Trait> { public: using Op::Op; using Op::print; using Adaptor = CvtPkF32Fp8OpAdaptor; template using GenericAdaptor = CvtPkF32Fp8OpGenericAdaptor; using FoldAdaptor = GenericAdaptor<::llvm::ArrayRef<::mlir::Attribute>>; static constexpr int odsIndex_src = 0; using Properties = FoldAdaptor::Properties; static ::llvm::ArrayRef<::llvm::StringRef> getAttributeNames() { static ::llvm::StringRef attrNames[] = {::llvm::StringRef("wordSel")}; return ::llvm::ArrayRef(attrNames); } ::mlir::StringAttr getWordSelAttrName() { return getAttributeNameForIndex(0); } static ::mlir::StringAttr getWordSelAttrName(::mlir::OperationName name) { return getAttributeNameForIndex(name, 0); } static constexpr ::llvm::StringLiteral getOperationName() { return ::llvm::StringLiteral("rocdl.cvt.pk.f32.fp8"); } std::pair getODSOperandIndexAndLength(unsigned index) { return {index, 1}; } ::mlir::Operation::operand_range getODSOperands(unsigned index) { auto valueRange = getODSOperandIndexAndLength(index); return {std::next(getOperation()->operand_begin(), valueRange.first), std::next(getOperation()->operand_begin(), valueRange.first + valueRange.second)}; } ::mlir::TypedValue<::mlir::IntegerType> getSrc() { return ::llvm::cast<::mlir::TypedValue<::mlir::IntegerType>>(*getODSOperands(0).begin()); } ::mlir::OpOperand &getSrcMutable() { auto range = getODSOperandIndexAndLength(0); return getOperation()->getOpOperand(range.first); } std::pair getODSResultIndexAndLength(unsigned index) { return {index, 1}; } ::mlir::Operation::result_range getODSResults(unsigned index) { auto valueRange = getODSResultIndexAndLength(index); return {std::next(getOperation()->result_begin(), valueRange.first), std::next(getOperation()->result_begin(), valueRange.first + valueRange.second)}; } ::mlir::TypedValue<::mlir::Type> getRes() { return ::llvm::cast<::mlir::TypedValue<::mlir::Type>>(*getODSResults(0).begin()); } static ::llvm::LogicalResult setPropertiesFromAttr(Properties &prop, ::mlir::Attribute attr, ::llvm::function_ref<::mlir::InFlightDiagnostic()> emitError); static ::mlir::Attribute getPropertiesAsAttr(::mlir::MLIRContext *ctx, const Properties &prop); static llvm::hash_code computePropertiesHash(const Properties &prop); static std::optional getInherentAttr(::mlir::MLIRContext *ctx, const Properties &prop, llvm::StringRef name); static void setInherentAttr(Properties &prop, llvm::StringRef name, mlir::Attribute value); static void populateInherentAttrs(::mlir::MLIRContext *ctx, const Properties &prop, ::mlir::NamedAttrList &attrs); static ::llvm::LogicalResult verifyInherentAttrs(::mlir::OperationName opName, ::mlir::NamedAttrList &attrs, llvm::function_ref<::mlir::InFlightDiagnostic()> emitError); static ::llvm::LogicalResult readProperties(::mlir::DialectBytecodeReader &reader, ::mlir::OperationState &state); void writeProperties(::mlir::DialectBytecodeWriter &writer); ::mlir::IntegerAttr getWordSelAttr() { return ::llvm::cast<::mlir::IntegerAttr>(getProperties().wordSel); } bool getWordSel(); void setWordSelAttr(::mlir::IntegerAttr attr) { getProperties().wordSel = attr; } void setWordSel(bool attrValue); static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::Type res, ::mlir::Value src, ::mlir::IntegerAttr wordSel); static CvtPkF32Fp8Op create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::Type res, ::mlir::Value src, ::mlir::IntegerAttr wordSel); static CvtPkF32Fp8Op create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::Type res, ::mlir::Value src, ::mlir::IntegerAttr wordSel); static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::Value src, ::mlir::IntegerAttr wordSel); static CvtPkF32Fp8Op create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::Value src, ::mlir::IntegerAttr wordSel); static CvtPkF32Fp8Op create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::Value src, ::mlir::IntegerAttr wordSel); static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::Type res, ::mlir::Value src, bool wordSel); static CvtPkF32Fp8Op create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::Type res, ::mlir::Value src, bool wordSel); static CvtPkF32Fp8Op create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::Type res, ::mlir::Value src, bool wordSel); static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::Value src, bool wordSel); static CvtPkF32Fp8Op create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::Value src, bool wordSel); static CvtPkF32Fp8Op create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::Value src, bool wordSel); static void build(::mlir::OpBuilder &, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, ::llvm::ArrayRef<::mlir::NamedAttribute> attributes = {}); static CvtPkF32Fp8Op create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, ::llvm::ArrayRef<::mlir::NamedAttribute> attributes = {}); static CvtPkF32Fp8Op create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, ::llvm::ArrayRef<::mlir::NamedAttribute> attributes = {}); static void build(::mlir::OpBuilder &, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, const Properties &properties, ::llvm::ArrayRef<::mlir::NamedAttribute> discardableAttributes = {}); static CvtPkF32Fp8Op create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, const Properties &properties, ::llvm::ArrayRef<::mlir::NamedAttribute> discardableAttributes = {}); static CvtPkF32Fp8Op create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, const Properties &properties, ::llvm::ArrayRef<::mlir::NamedAttribute> discardableAttributes = {}); ::llvm::LogicalResult verifyInvariantsImpl(); ::llvm::LogicalResult verifyInvariants(); static ::mlir::ParseResult parse(::mlir::OpAsmParser &parser, ::mlir::OperationState &result); void print(::mlir::OpAsmPrinter &_odsPrinter); void getEffects(::llvm::SmallVectorImpl<::mlir::SideEffects::EffectInstance<::mlir::MemoryEffects::Effect>> &effects); private: ::mlir::StringAttr getAttributeNameForIndex(unsigned index) { return getAttributeNameForIndex((*this)->getName(), index); } static ::mlir::StringAttr getAttributeNameForIndex(::mlir::OperationName name, unsigned index) { assert(index < 1 && "invalid attribute index"); assert(name.getStringRef() == getOperationName() && "invalid operation name"); assert(name.isRegistered() && "Operation isn't registered, missing a " "dependent dialect loading?"); return name.getAttributeNames()[index]; } public: }; } // namespace mlir::ROCDL MLIR_DECLARE_EXPLICIT_TYPE_ID(::mlir::ROCDL::CvtPkF32Fp8Op) MLIR_DECLARE_EXPLICIT_TYPE_ID(::mlir::ROCDL::detail::CvtPkF32Fp8OpGenericAdaptorBase::Properties) namespace mlir::ROCDL { //===----------------------------------------------------------------------===// // ::mlir::ROCDL::CvtPkFp8F32Op declarations //===----------------------------------------------------------------------===// namespace detail { class CvtPkFp8F32OpGenericAdaptorBase { public: struct Properties { using wordSelTy = ::mlir::IntegerAttr; wordSelTy wordSel; auto getWordSel() const { auto &propStorage = this->wordSel; return ::llvm::cast<::mlir::IntegerAttr>(propStorage); } void setWordSel(const ::mlir::IntegerAttr &propValue) { this->wordSel = propValue; } bool operator==(const Properties &rhs) const { return rhs.wordSel == this->wordSel && true; } bool operator!=(const Properties &rhs) const { return !(*this == rhs); } }; protected: ::mlir::DictionaryAttr odsAttrs; ::std::optional<::mlir::OperationName> odsOpName; Properties properties; ::mlir::RegionRange odsRegions; public: CvtPkFp8F32OpGenericAdaptorBase(::mlir::DictionaryAttr attrs, const Properties &properties, ::mlir::RegionRange regions = {}) : odsAttrs(attrs), properties(properties), odsRegions(regions) { if (odsAttrs) odsOpName.emplace("rocdl.cvt.pk.fp8.f32", odsAttrs.getContext()); } CvtPkFp8F32OpGenericAdaptorBase(CvtPkFp8F32Op op); std::pair getODSOperandIndexAndLength(unsigned index, unsigned odsOperandsSize) { return {index, 1}; } const Properties &getProperties() { return properties; } ::mlir::DictionaryAttr getAttributes() { return odsAttrs; } ::mlir::IntegerAttr getWordSelAttr() { auto attr = ::llvm::cast<::mlir::IntegerAttr>(getProperties().wordSel); return attr; } bool getWordSel(); }; } // namespace detail template class CvtPkFp8F32OpGenericAdaptor : public detail::CvtPkFp8F32OpGenericAdaptorBase { using ValueT = ::llvm::detail::ValueOfRange; using Base = detail::CvtPkFp8F32OpGenericAdaptorBase; static constexpr int odsIndex_srcA = 0; static constexpr int odsIndex_srcB = 1; static constexpr int odsIndex_old = 2; public: CvtPkFp8F32OpGenericAdaptor(RangeT values, ::mlir::DictionaryAttr attrs, const Properties &properties, ::mlir::RegionRange regions = {}) : Base(attrs, properties, regions), odsOperands(values) {} CvtPkFp8F32OpGenericAdaptor(RangeT values, ::mlir::DictionaryAttr attrs, ::mlir::PropertyRef properties, ::mlir::RegionRange regions = {}) : CvtPkFp8F32OpGenericAdaptor(values, attrs, (properties ? *properties.as() : Properties{}), regions) {} CvtPkFp8F32OpGenericAdaptor(RangeT values, ::mlir::DictionaryAttr attrs = nullptr) : CvtPkFp8F32OpGenericAdaptor(values, attrs, Properties{}, {}) {} CvtPkFp8F32OpGenericAdaptor(RangeT values, const CvtPkFp8F32OpGenericAdaptorBase &base) : Base(base), odsOperands(values) {} template >> CvtPkFp8F32OpGenericAdaptor(RangeT values, LateInst op) : Base(op), odsOperands(values) {} std::pair getODSOperandIndexAndLength(unsigned index) { return Base::getODSOperandIndexAndLength(index, odsOperands.size()); } RangeT getODSOperands(unsigned index) { auto valueRange = getODSOperandIndexAndLength(index); return {std::next(odsOperands.begin(), valueRange.first), std::next(odsOperands.begin(), valueRange.first + valueRange.second)}; } ValueT getSrcA() { return (*getODSOperands(0).begin()); } ValueT getSrcB() { return (*getODSOperands(1).begin()); } ValueT getOld() { return (*getODSOperands(2).begin()); } RangeT getOperands() { return odsOperands; } private: RangeT odsOperands; }; class CvtPkFp8F32OpAdaptor : public CvtPkFp8F32OpGenericAdaptor<::mlir::ValueRange> { public: using CvtPkFp8F32OpGenericAdaptor::CvtPkFp8F32OpGenericAdaptor; CvtPkFp8F32OpAdaptor(CvtPkFp8F32Op op); ::llvm::LogicalResult verify(::mlir::Location loc); }; class CvtPkFp8F32Op : public ::mlir::Op::Impl, ::mlir::OpTrait::ZeroSuccessors, ::mlir::OpTrait::NOperands<3>::Impl, ::mlir::OpTrait::OpInvariants, ::mlir::BytecodeOpInterface::Trait, ::mlir::ConditionallySpeculatable::Trait, ::mlir::OpTrait::AlwaysSpeculatableImplTrait, ::mlir::MemoryEffectOpInterface::Trait> { public: using Op::Op; using Op::print; using Adaptor = CvtPkFp8F32OpAdaptor; template using GenericAdaptor = CvtPkFp8F32OpGenericAdaptor; using FoldAdaptor = GenericAdaptor<::llvm::ArrayRef<::mlir::Attribute>>; static constexpr int odsIndex_srcA = 0; static constexpr int odsIndex_srcB = 1; static constexpr int odsIndex_old = 2; using Properties = FoldAdaptor::Properties; static ::llvm::ArrayRef<::llvm::StringRef> getAttributeNames() { static ::llvm::StringRef attrNames[] = {::llvm::StringRef("wordSel")}; return ::llvm::ArrayRef(attrNames); } ::mlir::StringAttr getWordSelAttrName() { return getAttributeNameForIndex(0); } static ::mlir::StringAttr getWordSelAttrName(::mlir::OperationName name) { return getAttributeNameForIndex(name, 0); } static constexpr ::llvm::StringLiteral getOperationName() { return ::llvm::StringLiteral("rocdl.cvt.pk.fp8.f32"); } std::pair getODSOperandIndexAndLength(unsigned index) { return {index, 1}; } ::mlir::Operation::operand_range getODSOperands(unsigned index) { auto valueRange = getODSOperandIndexAndLength(index); return {std::next(getOperation()->operand_begin(), valueRange.first), std::next(getOperation()->operand_begin(), valueRange.first + valueRange.second)}; } ::mlir::TypedValue<::mlir::FloatType> getSrcA() { return ::llvm::cast<::mlir::TypedValue<::mlir::FloatType>>(*getODSOperands(0).begin()); } ::mlir::TypedValue<::mlir::FloatType> getSrcB() { return ::llvm::cast<::mlir::TypedValue<::mlir::FloatType>>(*getODSOperands(1).begin()); } ::mlir::TypedValue<::mlir::IntegerType> getOld() { return ::llvm::cast<::mlir::TypedValue<::mlir::IntegerType>>(*getODSOperands(2).begin()); } ::mlir::OpOperand &getSrcAMutable() { auto range = getODSOperandIndexAndLength(0); return getOperation()->getOpOperand(range.first); } ::mlir::OpOperand &getSrcBMutable() { auto range = getODSOperandIndexAndLength(1); return getOperation()->getOpOperand(range.first); } ::mlir::OpOperand &getOldMutable() { auto range = getODSOperandIndexAndLength(2); return getOperation()->getOpOperand(range.first); } std::pair getODSResultIndexAndLength(unsigned index) { return {index, 1}; } ::mlir::Operation::result_range getODSResults(unsigned index) { auto valueRange = getODSResultIndexAndLength(index); return {std::next(getOperation()->result_begin(), valueRange.first), std::next(getOperation()->result_begin(), valueRange.first + valueRange.second)}; } ::mlir::TypedValue<::mlir::Type> getRes() { return ::llvm::cast<::mlir::TypedValue<::mlir::Type>>(*getODSResults(0).begin()); } static ::llvm::LogicalResult setPropertiesFromAttr(Properties &prop, ::mlir::Attribute attr, ::llvm::function_ref<::mlir::InFlightDiagnostic()> emitError); static ::mlir::Attribute getPropertiesAsAttr(::mlir::MLIRContext *ctx, const Properties &prop); static llvm::hash_code computePropertiesHash(const Properties &prop); static std::optional getInherentAttr(::mlir::MLIRContext *ctx, const Properties &prop, llvm::StringRef name); static void setInherentAttr(Properties &prop, llvm::StringRef name, mlir::Attribute value); static void populateInherentAttrs(::mlir::MLIRContext *ctx, const Properties &prop, ::mlir::NamedAttrList &attrs); static ::llvm::LogicalResult verifyInherentAttrs(::mlir::OperationName opName, ::mlir::NamedAttrList &attrs, llvm::function_ref<::mlir::InFlightDiagnostic()> emitError); static ::llvm::LogicalResult readProperties(::mlir::DialectBytecodeReader &reader, ::mlir::OperationState &state); void writeProperties(::mlir::DialectBytecodeWriter &writer); ::mlir::IntegerAttr getWordSelAttr() { return ::llvm::cast<::mlir::IntegerAttr>(getProperties().wordSel); } bool getWordSel(); void setWordSelAttr(::mlir::IntegerAttr attr) { getProperties().wordSel = attr; } void setWordSel(bool attrValue); static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::Type res, ::mlir::Value srcA, ::mlir::Value srcB, ::mlir::Value old, ::mlir::IntegerAttr wordSel); static CvtPkFp8F32Op create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::Type res, ::mlir::Value srcA, ::mlir::Value srcB, ::mlir::Value old, ::mlir::IntegerAttr wordSel); static CvtPkFp8F32Op create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::Type res, ::mlir::Value srcA, ::mlir::Value srcB, ::mlir::Value old, ::mlir::IntegerAttr wordSel); static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::Value srcA, ::mlir::Value srcB, ::mlir::Value old, ::mlir::IntegerAttr wordSel); static CvtPkFp8F32Op create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::Value srcA, ::mlir::Value srcB, ::mlir::Value old, ::mlir::IntegerAttr wordSel); static CvtPkFp8F32Op create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::Value srcA, ::mlir::Value srcB, ::mlir::Value old, ::mlir::IntegerAttr wordSel); static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::Type res, ::mlir::Value srcA, ::mlir::Value srcB, ::mlir::Value old, bool wordSel); static CvtPkFp8F32Op create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::Type res, ::mlir::Value srcA, ::mlir::Value srcB, ::mlir::Value old, bool wordSel); static CvtPkFp8F32Op create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::Type res, ::mlir::Value srcA, ::mlir::Value srcB, ::mlir::Value old, bool wordSel); static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::Value srcA, ::mlir::Value srcB, ::mlir::Value old, bool wordSel); static CvtPkFp8F32Op create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::Value srcA, ::mlir::Value srcB, ::mlir::Value old, bool wordSel); static CvtPkFp8F32Op create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::Value srcA, ::mlir::Value srcB, ::mlir::Value old, bool wordSel); static void build(::mlir::OpBuilder &, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, ::llvm::ArrayRef<::mlir::NamedAttribute> attributes = {}); static CvtPkFp8F32Op create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, ::llvm::ArrayRef<::mlir::NamedAttribute> attributes = {}); static CvtPkFp8F32Op create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, ::llvm::ArrayRef<::mlir::NamedAttribute> attributes = {}); static void build(::mlir::OpBuilder &, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, const Properties &properties, ::llvm::ArrayRef<::mlir::NamedAttribute> discardableAttributes = {}); static CvtPkFp8F32Op create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, const Properties &properties, ::llvm::ArrayRef<::mlir::NamedAttribute> discardableAttributes = {}); static CvtPkFp8F32Op create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, const Properties &properties, ::llvm::ArrayRef<::mlir::NamedAttribute> discardableAttributes = {}); ::llvm::LogicalResult verifyInvariantsImpl(); ::llvm::LogicalResult verifyInvariants(); static ::mlir::ParseResult parse(::mlir::OpAsmParser &parser, ::mlir::OperationState &result); void print(::mlir::OpAsmPrinter &_odsPrinter); void getEffects(::llvm::SmallVectorImpl<::mlir::SideEffects::EffectInstance<::mlir::MemoryEffects::Effect>> &effects); private: ::mlir::StringAttr getAttributeNameForIndex(unsigned index) { return getAttributeNameForIndex((*this)->getName(), index); } static ::mlir::StringAttr getAttributeNameForIndex(::mlir::OperationName name, unsigned index) { assert(index < 1 && "invalid attribute index"); assert(name.getStringRef() == getOperationName() && "invalid operation name"); assert(name.isRegistered() && "Operation isn't registered, missing a " "dependent dialect loading?"); return name.getAttributeNames()[index]; } public: }; } // namespace mlir::ROCDL MLIR_DECLARE_EXPLICIT_TYPE_ID(::mlir::ROCDL::CvtPkFp8F32Op) MLIR_DECLARE_EXPLICIT_TYPE_ID(::mlir::ROCDL::detail::CvtPkFp8F32OpGenericAdaptorBase::Properties) namespace mlir::ROCDL { //===----------------------------------------------------------------------===// // ::mlir::ROCDL::CvtPkRtz declarations //===----------------------------------------------------------------------===// namespace detail { class CvtPkRtzGenericAdaptorBase { public: using Properties = ::mlir::EmptyProperties; protected: ::mlir::DictionaryAttr odsAttrs; ::std::optional<::mlir::OperationName> odsOpName; Properties properties; ::mlir::RegionRange odsRegions; public: CvtPkRtzGenericAdaptorBase(::mlir::DictionaryAttr attrs, const Properties &properties, ::mlir::RegionRange regions = {}) : odsAttrs(attrs), properties(properties), odsRegions(regions) { if (odsAttrs) odsOpName.emplace("rocdl.cvt.pkrtz", odsAttrs.getContext()); } CvtPkRtzGenericAdaptorBase(CvtPkRtz op); std::pair getODSOperandIndexAndLength(unsigned index, unsigned odsOperandsSize) { return {index, 1}; } const Properties &getProperties() { return properties; } ::mlir::DictionaryAttr getAttributes() { return odsAttrs; } }; } // namespace detail template class CvtPkRtzGenericAdaptor : public detail::CvtPkRtzGenericAdaptorBase { using ValueT = ::llvm::detail::ValueOfRange; using Base = detail::CvtPkRtzGenericAdaptorBase; static constexpr int odsIndex_srcA = 0; static constexpr int odsIndex_srcB = 1; public: CvtPkRtzGenericAdaptor(RangeT values, ::mlir::DictionaryAttr attrs, const Properties &properties, ::mlir::RegionRange regions = {}) : Base(attrs, properties, regions), odsOperands(values) {} CvtPkRtzGenericAdaptor(RangeT values, ::mlir::DictionaryAttr attrs, ::mlir::PropertyRef properties, ::mlir::RegionRange regions = {}) : CvtPkRtzGenericAdaptor(values, attrs, (properties ? *properties.as() : Properties{}), regions) {} CvtPkRtzGenericAdaptor(RangeT values, ::mlir::DictionaryAttr attrs = nullptr) : CvtPkRtzGenericAdaptor(values, attrs, Properties{}, {}) {} CvtPkRtzGenericAdaptor(RangeT values, const CvtPkRtzGenericAdaptorBase &base) : Base(base), odsOperands(values) {} template >> CvtPkRtzGenericAdaptor(RangeT values, LateInst op) : Base(op), odsOperands(values) {} std::pair getODSOperandIndexAndLength(unsigned index) { return Base::getODSOperandIndexAndLength(index, odsOperands.size()); } RangeT getODSOperands(unsigned index) { auto valueRange = getODSOperandIndexAndLength(index); return {std::next(odsOperands.begin(), valueRange.first), std::next(odsOperands.begin(), valueRange.first + valueRange.second)}; } ValueT getSrcA() { return (*getODSOperands(0).begin()); } ValueT getSrcB() { return (*getODSOperands(1).begin()); } RangeT getOperands() { return odsOperands; } private: RangeT odsOperands; }; class CvtPkRtzAdaptor : public CvtPkRtzGenericAdaptor<::mlir::ValueRange> { public: using CvtPkRtzGenericAdaptor::CvtPkRtzGenericAdaptor; CvtPkRtzAdaptor(CvtPkRtz op); ::llvm::LogicalResult verify(::mlir::Location loc); }; class CvtPkRtz : public ::mlir::Op::Impl, ::mlir::OpTrait::ZeroSuccessors, ::mlir::OpTrait::NOperands<2>::Impl, ::mlir::OpTrait::OpInvariants, ::mlir::ConditionallySpeculatable::Trait, ::mlir::OpTrait::AlwaysSpeculatableImplTrait, ::mlir::MemoryEffectOpInterface::Trait> { public: using Op::Op; using Op::print; using Adaptor = CvtPkRtzAdaptor; template using GenericAdaptor = CvtPkRtzGenericAdaptor; using FoldAdaptor = GenericAdaptor<::llvm::ArrayRef<::mlir::Attribute>>; static constexpr int odsIndex_srcA = 0; static constexpr int odsIndex_srcB = 1; using Properties = FoldAdaptor::Properties; static ::llvm::ArrayRef<::llvm::StringRef> getAttributeNames() { return {}; } static constexpr ::llvm::StringLiteral getOperationName() { return ::llvm::StringLiteral("rocdl.cvt.pkrtz"); } std::pair getODSOperandIndexAndLength(unsigned index) { return {index, 1}; } ::mlir::Operation::operand_range getODSOperands(unsigned index) { auto valueRange = getODSOperandIndexAndLength(index); return {std::next(getOperation()->operand_begin(), valueRange.first), std::next(getOperation()->operand_begin(), valueRange.first + valueRange.second)}; } ::mlir::TypedValue<::mlir::FloatType> getSrcA() { return ::llvm::cast<::mlir::TypedValue<::mlir::FloatType>>(*getODSOperands(0).begin()); } ::mlir::TypedValue<::mlir::FloatType> getSrcB() { return ::llvm::cast<::mlir::TypedValue<::mlir::FloatType>>(*getODSOperands(1).begin()); } ::mlir::OpOperand &getSrcAMutable() { auto range = getODSOperandIndexAndLength(0); return getOperation()->getOpOperand(range.first); } ::mlir::OpOperand &getSrcBMutable() { auto range = getODSOperandIndexAndLength(1); return getOperation()->getOpOperand(range.first); } std::pair getODSResultIndexAndLength(unsigned index) { return {index, 1}; } ::mlir::Operation::result_range getODSResults(unsigned index) { auto valueRange = getODSResultIndexAndLength(index); return {std::next(getOperation()->result_begin(), valueRange.first), std::next(getOperation()->result_begin(), valueRange.first + valueRange.second)}; } ::mlir::TypedValue<::mlir::Type> getRes() { return ::llvm::cast<::mlir::TypedValue<::mlir::Type>>(*getODSResults(0).begin()); } static ::llvm::LogicalResult setPropertiesFromAttr(Properties &prop, ::mlir::Attribute attr, ::llvm::function_ref<::mlir::InFlightDiagnostic()> emitError); static ::mlir::Attribute getPropertiesAsAttr(::mlir::MLIRContext *ctx, const Properties &prop); static llvm::hash_code computePropertiesHash(const Properties &prop); static std::optional getInherentAttr(::mlir::MLIRContext *ctx, const Properties &prop, llvm::StringRef name); static void setInherentAttr(Properties &prop, llvm::StringRef name, mlir::Attribute value); static void populateInherentAttrs(::mlir::MLIRContext *ctx, const Properties &prop, ::mlir::NamedAttrList &attrs); static ::llvm::LogicalResult verifyInherentAttrs(::mlir::OperationName opName, ::mlir::NamedAttrList &attrs, llvm::function_ref<::mlir::InFlightDiagnostic()> emitError); static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::Type res, ::mlir::Value srcA, ::mlir::Value srcB); static CvtPkRtz create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::Type res, ::mlir::Value srcA, ::mlir::Value srcB); static CvtPkRtz create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::Type res, ::mlir::Value srcA, ::mlir::Value srcB); static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::Value srcA, ::mlir::Value srcB); static CvtPkRtz create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::Value srcA, ::mlir::Value srcB); static CvtPkRtz create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::Value srcA, ::mlir::Value srcB); static void build(::mlir::OpBuilder &, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, ::llvm::ArrayRef<::mlir::NamedAttribute> attributes = {}); static CvtPkRtz create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, ::llvm::ArrayRef<::mlir::NamedAttribute> attributes = {}); static CvtPkRtz create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, ::llvm::ArrayRef<::mlir::NamedAttribute> attributes = {}); static void build(::mlir::OpBuilder &, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, const Properties &properties, ::llvm::ArrayRef<::mlir::NamedAttribute> discardableAttributes = {}); static CvtPkRtz create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, const Properties &properties, ::llvm::ArrayRef<::mlir::NamedAttribute> discardableAttributes = {}); static CvtPkRtz create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, const Properties &properties, ::llvm::ArrayRef<::mlir::NamedAttribute> discardableAttributes = {}); ::llvm::LogicalResult verifyInvariantsImpl(); ::llvm::LogicalResult verifyInvariants(); static ::mlir::ParseResult parse(::mlir::OpAsmParser &parser, ::mlir::OperationState &result); void print(::mlir::OpAsmPrinter &_odsPrinter); void getEffects(::llvm::SmallVectorImpl<::mlir::SideEffects::EffectInstance<::mlir::MemoryEffects::Effect>> &effects); public: }; } // namespace mlir::ROCDL MLIR_DECLARE_EXPLICIT_TYPE_ID(::mlir::ROCDL::CvtPkRtz) namespace mlir::ROCDL { //===----------------------------------------------------------------------===// // ::mlir::ROCDL::CvtPkScalePk16Bf16Bf6Op declarations //===----------------------------------------------------------------------===// namespace detail { class CvtPkScalePk16Bf16Bf6OpGenericAdaptorBase { public: struct Properties { using scaleSelTy = ::mlir::IntegerAttr; scaleSelTy scaleSel; auto getScaleSel() const { auto &propStorage = this->scaleSel; return ::llvm::cast<::mlir::IntegerAttr>(propStorage); } void setScaleSel(const ::mlir::IntegerAttr &propValue) { this->scaleSel = propValue; } bool operator==(const Properties &rhs) const { return rhs.scaleSel == this->scaleSel && true; } bool operator!=(const Properties &rhs) const { return !(*this == rhs); } }; protected: ::mlir::DictionaryAttr odsAttrs; ::std::optional<::mlir::OperationName> odsOpName; Properties properties; ::mlir::RegionRange odsRegions; public: CvtPkScalePk16Bf16Bf6OpGenericAdaptorBase(::mlir::DictionaryAttr attrs, const Properties &properties, ::mlir::RegionRange regions = {}) : odsAttrs(attrs), properties(properties), odsRegions(regions) { if (odsAttrs) odsOpName.emplace("rocdl.cvt.scale.pk16.bf16.bf6", odsAttrs.getContext()); } CvtPkScalePk16Bf16Bf6OpGenericAdaptorBase(CvtPkScalePk16Bf16Bf6Op op); std::pair getODSOperandIndexAndLength(unsigned index, unsigned odsOperandsSize) { return {index, 1}; } const Properties &getProperties() { return properties; } ::mlir::DictionaryAttr getAttributes() { return odsAttrs; } ::mlir::IntegerAttr getScaleSelAttr() { auto attr = ::llvm::cast<::mlir::IntegerAttr>(getProperties().scaleSel); return attr; } uint32_t getScaleSel(); }; } // namespace detail template class CvtPkScalePk16Bf16Bf6OpGenericAdaptor : public detail::CvtPkScalePk16Bf16Bf6OpGenericAdaptorBase { using ValueT = ::llvm::detail::ValueOfRange; using Base = detail::CvtPkScalePk16Bf16Bf6OpGenericAdaptorBase; static constexpr int odsIndex_src = 0; static constexpr int odsIndex_scale = 1; public: CvtPkScalePk16Bf16Bf6OpGenericAdaptor(RangeT values, ::mlir::DictionaryAttr attrs, const Properties &properties, ::mlir::RegionRange regions = {}) : Base(attrs, properties, regions), odsOperands(values) {} CvtPkScalePk16Bf16Bf6OpGenericAdaptor(RangeT values, ::mlir::DictionaryAttr attrs, ::mlir::PropertyRef properties, ::mlir::RegionRange regions = {}) : CvtPkScalePk16Bf16Bf6OpGenericAdaptor(values, attrs, (properties ? *properties.as() : Properties{}), regions) {} CvtPkScalePk16Bf16Bf6OpGenericAdaptor(RangeT values, ::mlir::DictionaryAttr attrs = nullptr) : CvtPkScalePk16Bf16Bf6OpGenericAdaptor(values, attrs, Properties{}, {}) {} CvtPkScalePk16Bf16Bf6OpGenericAdaptor(RangeT values, const CvtPkScalePk16Bf16Bf6OpGenericAdaptorBase &base) : Base(base), odsOperands(values) {} template >> CvtPkScalePk16Bf16Bf6OpGenericAdaptor(RangeT values, LateInst op) : Base(op), odsOperands(values) {} std::pair getODSOperandIndexAndLength(unsigned index) { return Base::getODSOperandIndexAndLength(index, odsOperands.size()); } RangeT getODSOperands(unsigned index) { auto valueRange = getODSOperandIndexAndLength(index); return {std::next(odsOperands.begin(), valueRange.first), std::next(odsOperands.begin(), valueRange.first + valueRange.second)}; } ValueT getSrc() { return (*getODSOperands(0).begin()); } ValueT getScale() { return (*getODSOperands(1).begin()); } RangeT getOperands() { return odsOperands; } private: RangeT odsOperands; }; class CvtPkScalePk16Bf16Bf6OpAdaptor : public CvtPkScalePk16Bf16Bf6OpGenericAdaptor<::mlir::ValueRange> { public: using CvtPkScalePk16Bf16Bf6OpGenericAdaptor::CvtPkScalePk16Bf16Bf6OpGenericAdaptor; CvtPkScalePk16Bf16Bf6OpAdaptor(CvtPkScalePk16Bf16Bf6Op op); ::llvm::LogicalResult verify(::mlir::Location loc); }; class CvtPkScalePk16Bf16Bf6Op : public ::mlir::Op::Impl, ::mlir::OpTrait::ZeroSuccessors, ::mlir::OpTrait::NOperands<2>::Impl, ::mlir::OpTrait::OpInvariants, ::mlir::BytecodeOpInterface::Trait, ::mlir::ConditionallySpeculatable::Trait, ::mlir::OpTrait::AlwaysSpeculatableImplTrait, ::mlir::MemoryEffectOpInterface::Trait> { public: using Op::Op; using Op::print; using Adaptor = CvtPkScalePk16Bf16Bf6OpAdaptor; template using GenericAdaptor = CvtPkScalePk16Bf16Bf6OpGenericAdaptor; using FoldAdaptor = GenericAdaptor<::llvm::ArrayRef<::mlir::Attribute>>; static constexpr int odsIndex_src = 0; static constexpr int odsIndex_scale = 1; using Properties = FoldAdaptor::Properties; static ::llvm::ArrayRef<::llvm::StringRef> getAttributeNames() { static ::llvm::StringRef attrNames[] = {::llvm::StringRef("scaleSel")}; return ::llvm::ArrayRef(attrNames); } ::mlir::StringAttr getScaleSelAttrName() { return getAttributeNameForIndex(0); } static ::mlir::StringAttr getScaleSelAttrName(::mlir::OperationName name) { return getAttributeNameForIndex(name, 0); } static constexpr ::llvm::StringLiteral getOperationName() { return ::llvm::StringLiteral("rocdl.cvt.scale.pk16.bf16.bf6"); } std::pair getODSOperandIndexAndLength(unsigned index) { return {index, 1}; } ::mlir::Operation::operand_range getODSOperands(unsigned index) { auto valueRange = getODSOperandIndexAndLength(index); return {std::next(getOperation()->operand_begin(), valueRange.first), std::next(getOperation()->operand_begin(), valueRange.first + valueRange.second)}; } ::mlir::TypedValue<::mlir::VectorType> getSrc() { return ::llvm::cast<::mlir::TypedValue<::mlir::VectorType>>(*getODSOperands(0).begin()); } ::mlir::TypedValue<::mlir::IntegerType> getScale() { return ::llvm::cast<::mlir::TypedValue<::mlir::IntegerType>>(*getODSOperands(1).begin()); } ::mlir::OpOperand &getSrcMutable() { auto range = getODSOperandIndexAndLength(0); return getOperation()->getOpOperand(range.first); } ::mlir::OpOperand &getScaleMutable() { auto range = getODSOperandIndexAndLength(1); return getOperation()->getOpOperand(range.first); } std::pair getODSResultIndexAndLength(unsigned index) { return {index, 1}; } ::mlir::Operation::result_range getODSResults(unsigned index) { auto valueRange = getODSResultIndexAndLength(index); return {std::next(getOperation()->result_begin(), valueRange.first), std::next(getOperation()->result_begin(), valueRange.first + valueRange.second)}; } ::mlir::TypedValue<::mlir::VectorType> getRes() { return ::llvm::cast<::mlir::TypedValue<::mlir::VectorType>>(*getODSResults(0).begin()); } static ::llvm::LogicalResult setPropertiesFromAttr(Properties &prop, ::mlir::Attribute attr, ::llvm::function_ref<::mlir::InFlightDiagnostic()> emitError); static ::mlir::Attribute getPropertiesAsAttr(::mlir::MLIRContext *ctx, const Properties &prop); static llvm::hash_code computePropertiesHash(const Properties &prop); static std::optional getInherentAttr(::mlir::MLIRContext *ctx, const Properties &prop, llvm::StringRef name); static void setInherentAttr(Properties &prop, llvm::StringRef name, mlir::Attribute value); static void populateInherentAttrs(::mlir::MLIRContext *ctx, const Properties &prop, ::mlir::NamedAttrList &attrs); static ::llvm::LogicalResult verifyInherentAttrs(::mlir::OperationName opName, ::mlir::NamedAttrList &attrs, llvm::function_ref<::mlir::InFlightDiagnostic()> emitError); static ::llvm::LogicalResult readProperties(::mlir::DialectBytecodeReader &reader, ::mlir::OperationState &state); void writeProperties(::mlir::DialectBytecodeWriter &writer); ::mlir::IntegerAttr getScaleSelAttr() { return ::llvm::cast<::mlir::IntegerAttr>(getProperties().scaleSel); } uint32_t getScaleSel(); void setScaleSelAttr(::mlir::IntegerAttr attr) { getProperties().scaleSel = attr; } void setScaleSel(uint32_t attrValue); static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::Type res, ::mlir::Value src, ::mlir::Value scale, ::mlir::IntegerAttr scaleSel); static CvtPkScalePk16Bf16Bf6Op create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::Type res, ::mlir::Value src, ::mlir::Value scale, ::mlir::IntegerAttr scaleSel); static CvtPkScalePk16Bf16Bf6Op create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::Type res, ::mlir::Value src, ::mlir::Value scale, ::mlir::IntegerAttr scaleSel); static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::Value src, ::mlir::Value scale, ::mlir::IntegerAttr scaleSel); static CvtPkScalePk16Bf16Bf6Op create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::Value src, ::mlir::Value scale, ::mlir::IntegerAttr scaleSel); static CvtPkScalePk16Bf16Bf6Op create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::Value src, ::mlir::Value scale, ::mlir::IntegerAttr scaleSel); static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::Type res, ::mlir::Value src, ::mlir::Value scale, uint32_t scaleSel); static CvtPkScalePk16Bf16Bf6Op create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::Type res, ::mlir::Value src, ::mlir::Value scale, uint32_t scaleSel); static CvtPkScalePk16Bf16Bf6Op create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::Type res, ::mlir::Value src, ::mlir::Value scale, uint32_t scaleSel); static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::Value src, ::mlir::Value scale, uint32_t scaleSel); static CvtPkScalePk16Bf16Bf6Op create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::Value src, ::mlir::Value scale, uint32_t scaleSel); static CvtPkScalePk16Bf16Bf6Op create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::Value src, ::mlir::Value scale, uint32_t scaleSel); static void build(::mlir::OpBuilder &, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, ::llvm::ArrayRef<::mlir::NamedAttribute> attributes = {}); static CvtPkScalePk16Bf16Bf6Op create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, ::llvm::ArrayRef<::mlir::NamedAttribute> attributes = {}); static CvtPkScalePk16Bf16Bf6Op create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, ::llvm::ArrayRef<::mlir::NamedAttribute> attributes = {}); static void build(::mlir::OpBuilder &, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, const Properties &properties, ::llvm::ArrayRef<::mlir::NamedAttribute> discardableAttributes = {}); static CvtPkScalePk16Bf16Bf6Op create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, const Properties &properties, ::llvm::ArrayRef<::mlir::NamedAttribute> discardableAttributes = {}); static CvtPkScalePk16Bf16Bf6Op create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, const Properties &properties, ::llvm::ArrayRef<::mlir::NamedAttribute> discardableAttributes = {}); ::llvm::LogicalResult verifyInvariantsImpl(); ::llvm::LogicalResult verifyInvariants(); static ::mlir::ParseResult parse(::mlir::OpAsmParser &parser, ::mlir::OperationState &result); void print(::mlir::OpAsmPrinter &_odsPrinter); void getEffects(::llvm::SmallVectorImpl<::mlir::SideEffects::EffectInstance<::mlir::MemoryEffects::Effect>> &effects); private: ::mlir::StringAttr getAttributeNameForIndex(unsigned index) { return getAttributeNameForIndex((*this)->getName(), index); } static ::mlir::StringAttr getAttributeNameForIndex(::mlir::OperationName name, unsigned index) { assert(index < 1 && "invalid attribute index"); assert(name.getStringRef() == getOperationName() && "invalid operation name"); assert(name.isRegistered() && "Operation isn't registered, missing a " "dependent dialect loading?"); return name.getAttributeNames()[index]; } public: }; } // namespace mlir::ROCDL MLIR_DECLARE_EXPLICIT_TYPE_ID(::mlir::ROCDL::CvtPkScalePk16Bf16Bf6Op) MLIR_DECLARE_EXPLICIT_TYPE_ID(::mlir::ROCDL::detail::CvtPkScalePk16Bf16Bf6OpGenericAdaptorBase::Properties) namespace mlir::ROCDL { //===----------------------------------------------------------------------===// // ::mlir::ROCDL::CvtPkScalePk16Bf16Fp6Op declarations //===----------------------------------------------------------------------===// namespace detail { class CvtPkScalePk16Bf16Fp6OpGenericAdaptorBase { public: struct Properties { using scaleSelTy = ::mlir::IntegerAttr; scaleSelTy scaleSel; auto getScaleSel() const { auto &propStorage = this->scaleSel; return ::llvm::cast<::mlir::IntegerAttr>(propStorage); } void setScaleSel(const ::mlir::IntegerAttr &propValue) { this->scaleSel = propValue; } bool operator==(const Properties &rhs) const { return rhs.scaleSel == this->scaleSel && true; } bool operator!=(const Properties &rhs) const { return !(*this == rhs); } }; protected: ::mlir::DictionaryAttr odsAttrs; ::std::optional<::mlir::OperationName> odsOpName; Properties properties; ::mlir::RegionRange odsRegions; public: CvtPkScalePk16Bf16Fp6OpGenericAdaptorBase(::mlir::DictionaryAttr attrs, const Properties &properties, ::mlir::RegionRange regions = {}) : odsAttrs(attrs), properties(properties), odsRegions(regions) { if (odsAttrs) odsOpName.emplace("rocdl.cvt.scale.pk16.bf16.fp6", odsAttrs.getContext()); } CvtPkScalePk16Bf16Fp6OpGenericAdaptorBase(CvtPkScalePk16Bf16Fp6Op op); std::pair getODSOperandIndexAndLength(unsigned index, unsigned odsOperandsSize) { return {index, 1}; } const Properties &getProperties() { return properties; } ::mlir::DictionaryAttr getAttributes() { return odsAttrs; } ::mlir::IntegerAttr getScaleSelAttr() { auto attr = ::llvm::cast<::mlir::IntegerAttr>(getProperties().scaleSel); return attr; } uint32_t getScaleSel(); }; } // namespace detail template class CvtPkScalePk16Bf16Fp6OpGenericAdaptor : public detail::CvtPkScalePk16Bf16Fp6OpGenericAdaptorBase { using ValueT = ::llvm::detail::ValueOfRange; using Base = detail::CvtPkScalePk16Bf16Fp6OpGenericAdaptorBase; static constexpr int odsIndex_src = 0; static constexpr int odsIndex_scale = 1; public: CvtPkScalePk16Bf16Fp6OpGenericAdaptor(RangeT values, ::mlir::DictionaryAttr attrs, const Properties &properties, ::mlir::RegionRange regions = {}) : Base(attrs, properties, regions), odsOperands(values) {} CvtPkScalePk16Bf16Fp6OpGenericAdaptor(RangeT values, ::mlir::DictionaryAttr attrs, ::mlir::PropertyRef properties, ::mlir::RegionRange regions = {}) : CvtPkScalePk16Bf16Fp6OpGenericAdaptor(values, attrs, (properties ? *properties.as() : Properties{}), regions) {} CvtPkScalePk16Bf16Fp6OpGenericAdaptor(RangeT values, ::mlir::DictionaryAttr attrs = nullptr) : CvtPkScalePk16Bf16Fp6OpGenericAdaptor(values, attrs, Properties{}, {}) {} CvtPkScalePk16Bf16Fp6OpGenericAdaptor(RangeT values, const CvtPkScalePk16Bf16Fp6OpGenericAdaptorBase &base) : Base(base), odsOperands(values) {} template >> CvtPkScalePk16Bf16Fp6OpGenericAdaptor(RangeT values, LateInst op) : Base(op), odsOperands(values) {} std::pair getODSOperandIndexAndLength(unsigned index) { return Base::getODSOperandIndexAndLength(index, odsOperands.size()); } RangeT getODSOperands(unsigned index) { auto valueRange = getODSOperandIndexAndLength(index); return {std::next(odsOperands.begin(), valueRange.first), std::next(odsOperands.begin(), valueRange.first + valueRange.second)}; } ValueT getSrc() { return (*getODSOperands(0).begin()); } ValueT getScale() { return (*getODSOperands(1).begin()); } RangeT getOperands() { return odsOperands; } private: RangeT odsOperands; }; class CvtPkScalePk16Bf16Fp6OpAdaptor : public CvtPkScalePk16Bf16Fp6OpGenericAdaptor<::mlir::ValueRange> { public: using CvtPkScalePk16Bf16Fp6OpGenericAdaptor::CvtPkScalePk16Bf16Fp6OpGenericAdaptor; CvtPkScalePk16Bf16Fp6OpAdaptor(CvtPkScalePk16Bf16Fp6Op op); ::llvm::LogicalResult verify(::mlir::Location loc); }; class CvtPkScalePk16Bf16Fp6Op : public ::mlir::Op::Impl, ::mlir::OpTrait::ZeroSuccessors, ::mlir::OpTrait::NOperands<2>::Impl, ::mlir::OpTrait::OpInvariants, ::mlir::BytecodeOpInterface::Trait, ::mlir::ConditionallySpeculatable::Trait, ::mlir::OpTrait::AlwaysSpeculatableImplTrait, ::mlir::MemoryEffectOpInterface::Trait> { public: using Op::Op; using Op::print; using Adaptor = CvtPkScalePk16Bf16Fp6OpAdaptor; template using GenericAdaptor = CvtPkScalePk16Bf16Fp6OpGenericAdaptor; using FoldAdaptor = GenericAdaptor<::llvm::ArrayRef<::mlir::Attribute>>; static constexpr int odsIndex_src = 0; static constexpr int odsIndex_scale = 1; using Properties = FoldAdaptor::Properties; static ::llvm::ArrayRef<::llvm::StringRef> getAttributeNames() { static ::llvm::StringRef attrNames[] = {::llvm::StringRef("scaleSel")}; return ::llvm::ArrayRef(attrNames); } ::mlir::StringAttr getScaleSelAttrName() { return getAttributeNameForIndex(0); } static ::mlir::StringAttr getScaleSelAttrName(::mlir::OperationName name) { return getAttributeNameForIndex(name, 0); } static constexpr ::llvm::StringLiteral getOperationName() { return ::llvm::StringLiteral("rocdl.cvt.scale.pk16.bf16.fp6"); } std::pair getODSOperandIndexAndLength(unsigned index) { return {index, 1}; } ::mlir::Operation::operand_range getODSOperands(unsigned index) { auto valueRange = getODSOperandIndexAndLength(index); return {std::next(getOperation()->operand_begin(), valueRange.first), std::next(getOperation()->operand_begin(), valueRange.first + valueRange.second)}; } ::mlir::TypedValue<::mlir::VectorType> getSrc() { return ::llvm::cast<::mlir::TypedValue<::mlir::VectorType>>(*getODSOperands(0).begin()); } ::mlir::TypedValue<::mlir::IntegerType> getScale() { return ::llvm::cast<::mlir::TypedValue<::mlir::IntegerType>>(*getODSOperands(1).begin()); } ::mlir::OpOperand &getSrcMutable() { auto range = getODSOperandIndexAndLength(0); return getOperation()->getOpOperand(range.first); } ::mlir::OpOperand &getScaleMutable() { auto range = getODSOperandIndexAndLength(1); return getOperation()->getOpOperand(range.first); } std::pair getODSResultIndexAndLength(unsigned index) { return {index, 1}; } ::mlir::Operation::result_range getODSResults(unsigned index) { auto valueRange = getODSResultIndexAndLength(index); return {std::next(getOperation()->result_begin(), valueRange.first), std::next(getOperation()->result_begin(), valueRange.first + valueRange.second)}; } ::mlir::TypedValue<::mlir::VectorType> getRes() { return ::llvm::cast<::mlir::TypedValue<::mlir::VectorType>>(*getODSResults(0).begin()); } static ::llvm::LogicalResult setPropertiesFromAttr(Properties &prop, ::mlir::Attribute attr, ::llvm::function_ref<::mlir::InFlightDiagnostic()> emitError); static ::mlir::Attribute getPropertiesAsAttr(::mlir::MLIRContext *ctx, const Properties &prop); static llvm::hash_code computePropertiesHash(const Properties &prop); static std::optional getInherentAttr(::mlir::MLIRContext *ctx, const Properties &prop, llvm::StringRef name); static void setInherentAttr(Properties &prop, llvm::StringRef name, mlir::Attribute value); static void populateInherentAttrs(::mlir::MLIRContext *ctx, const Properties &prop, ::mlir::NamedAttrList &attrs); static ::llvm::LogicalResult verifyInherentAttrs(::mlir::OperationName opName, ::mlir::NamedAttrList &attrs, llvm::function_ref<::mlir::InFlightDiagnostic()> emitError); static ::llvm::LogicalResult readProperties(::mlir::DialectBytecodeReader &reader, ::mlir::OperationState &state); void writeProperties(::mlir::DialectBytecodeWriter &writer); ::mlir::IntegerAttr getScaleSelAttr() { return ::llvm::cast<::mlir::IntegerAttr>(getProperties().scaleSel); } uint32_t getScaleSel(); void setScaleSelAttr(::mlir::IntegerAttr attr) { getProperties().scaleSel = attr; } void setScaleSel(uint32_t attrValue); static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::Type res, ::mlir::Value src, ::mlir::Value scale, ::mlir::IntegerAttr scaleSel); static CvtPkScalePk16Bf16Fp6Op create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::Type res, ::mlir::Value src, ::mlir::Value scale, ::mlir::IntegerAttr scaleSel); static CvtPkScalePk16Bf16Fp6Op create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::Type res, ::mlir::Value src, ::mlir::Value scale, ::mlir::IntegerAttr scaleSel); static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::Value src, ::mlir::Value scale, ::mlir::IntegerAttr scaleSel); static CvtPkScalePk16Bf16Fp6Op create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::Value src, ::mlir::Value scale, ::mlir::IntegerAttr scaleSel); static CvtPkScalePk16Bf16Fp6Op create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::Value src, ::mlir::Value scale, ::mlir::IntegerAttr scaleSel); static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::Type res, ::mlir::Value src, ::mlir::Value scale, uint32_t scaleSel); static CvtPkScalePk16Bf16Fp6Op create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::Type res, ::mlir::Value src, ::mlir::Value scale, uint32_t scaleSel); static CvtPkScalePk16Bf16Fp6Op create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::Type res, ::mlir::Value src, ::mlir::Value scale, uint32_t scaleSel); static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::Value src, ::mlir::Value scale, uint32_t scaleSel); static CvtPkScalePk16Bf16Fp6Op create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::Value src, ::mlir::Value scale, uint32_t scaleSel); static CvtPkScalePk16Bf16Fp6Op create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::Value src, ::mlir::Value scale, uint32_t scaleSel); static void build(::mlir::OpBuilder &, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, ::llvm::ArrayRef<::mlir::NamedAttribute> attributes = {}); static CvtPkScalePk16Bf16Fp6Op create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, ::llvm::ArrayRef<::mlir::NamedAttribute> attributes = {}); static CvtPkScalePk16Bf16Fp6Op create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, ::llvm::ArrayRef<::mlir::NamedAttribute> attributes = {}); static void build(::mlir::OpBuilder &, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, const Properties &properties, ::llvm::ArrayRef<::mlir::NamedAttribute> discardableAttributes = {}); static CvtPkScalePk16Bf16Fp6Op create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, const Properties &properties, ::llvm::ArrayRef<::mlir::NamedAttribute> discardableAttributes = {}); static CvtPkScalePk16Bf16Fp6Op create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, const Properties &properties, ::llvm::ArrayRef<::mlir::NamedAttribute> discardableAttributes = {}); ::llvm::LogicalResult verifyInvariantsImpl(); ::llvm::LogicalResult verifyInvariants(); static ::mlir::ParseResult parse(::mlir::OpAsmParser &parser, ::mlir::OperationState &result); void print(::mlir::OpAsmPrinter &_odsPrinter); void getEffects(::llvm::SmallVectorImpl<::mlir::SideEffects::EffectInstance<::mlir::MemoryEffects::Effect>> &effects); private: ::mlir::StringAttr getAttributeNameForIndex(unsigned index) { return getAttributeNameForIndex((*this)->getName(), index); } static ::mlir::StringAttr getAttributeNameForIndex(::mlir::OperationName name, unsigned index) { assert(index < 1 && "invalid attribute index"); assert(name.getStringRef() == getOperationName() && "invalid operation name"); assert(name.isRegistered() && "Operation isn't registered, missing a " "dependent dialect loading?"); return name.getAttributeNames()[index]; } public: }; } // namespace mlir::ROCDL MLIR_DECLARE_EXPLICIT_TYPE_ID(::mlir::ROCDL::CvtPkScalePk16Bf16Fp6Op) MLIR_DECLARE_EXPLICIT_TYPE_ID(::mlir::ROCDL::detail::CvtPkScalePk16Bf16Fp6OpGenericAdaptorBase::Properties) namespace mlir::ROCDL { //===----------------------------------------------------------------------===// // ::mlir::ROCDL::CvtPkScalePk16F16Bf6Op declarations //===----------------------------------------------------------------------===// namespace detail { class CvtPkScalePk16F16Bf6OpGenericAdaptorBase { public: struct Properties { using scaleSelTy = ::mlir::IntegerAttr; scaleSelTy scaleSel; auto getScaleSel() const { auto &propStorage = this->scaleSel; return ::llvm::cast<::mlir::IntegerAttr>(propStorage); } void setScaleSel(const ::mlir::IntegerAttr &propValue) { this->scaleSel = propValue; } bool operator==(const Properties &rhs) const { return rhs.scaleSel == this->scaleSel && true; } bool operator!=(const Properties &rhs) const { return !(*this == rhs); } }; protected: ::mlir::DictionaryAttr odsAttrs; ::std::optional<::mlir::OperationName> odsOpName; Properties properties; ::mlir::RegionRange odsRegions; public: CvtPkScalePk16F16Bf6OpGenericAdaptorBase(::mlir::DictionaryAttr attrs, const Properties &properties, ::mlir::RegionRange regions = {}) : odsAttrs(attrs), properties(properties), odsRegions(regions) { if (odsAttrs) odsOpName.emplace("rocdl.cvt.scale.pk16.f16.bf6", odsAttrs.getContext()); } CvtPkScalePk16F16Bf6OpGenericAdaptorBase(CvtPkScalePk16F16Bf6Op op); std::pair getODSOperandIndexAndLength(unsigned index, unsigned odsOperandsSize) { return {index, 1}; } const Properties &getProperties() { return properties; } ::mlir::DictionaryAttr getAttributes() { return odsAttrs; } ::mlir::IntegerAttr getScaleSelAttr() { auto attr = ::llvm::cast<::mlir::IntegerAttr>(getProperties().scaleSel); return attr; } uint32_t getScaleSel(); }; } // namespace detail template class CvtPkScalePk16F16Bf6OpGenericAdaptor : public detail::CvtPkScalePk16F16Bf6OpGenericAdaptorBase { using ValueT = ::llvm::detail::ValueOfRange; using Base = detail::CvtPkScalePk16F16Bf6OpGenericAdaptorBase; static constexpr int odsIndex_src = 0; static constexpr int odsIndex_scale = 1; public: CvtPkScalePk16F16Bf6OpGenericAdaptor(RangeT values, ::mlir::DictionaryAttr attrs, const Properties &properties, ::mlir::RegionRange regions = {}) : Base(attrs, properties, regions), odsOperands(values) {} CvtPkScalePk16F16Bf6OpGenericAdaptor(RangeT values, ::mlir::DictionaryAttr attrs, ::mlir::PropertyRef properties, ::mlir::RegionRange regions = {}) : CvtPkScalePk16F16Bf6OpGenericAdaptor(values, attrs, (properties ? *properties.as() : Properties{}), regions) {} CvtPkScalePk16F16Bf6OpGenericAdaptor(RangeT values, ::mlir::DictionaryAttr attrs = nullptr) : CvtPkScalePk16F16Bf6OpGenericAdaptor(values, attrs, Properties{}, {}) {} CvtPkScalePk16F16Bf6OpGenericAdaptor(RangeT values, const CvtPkScalePk16F16Bf6OpGenericAdaptorBase &base) : Base(base), odsOperands(values) {} template >> CvtPkScalePk16F16Bf6OpGenericAdaptor(RangeT values, LateInst op) : Base(op), odsOperands(values) {} std::pair getODSOperandIndexAndLength(unsigned index) { return Base::getODSOperandIndexAndLength(index, odsOperands.size()); } RangeT getODSOperands(unsigned index) { auto valueRange = getODSOperandIndexAndLength(index); return {std::next(odsOperands.begin(), valueRange.first), std::next(odsOperands.begin(), valueRange.first + valueRange.second)}; } ValueT getSrc() { return (*getODSOperands(0).begin()); } ValueT getScale() { return (*getODSOperands(1).begin()); } RangeT getOperands() { return odsOperands; } private: RangeT odsOperands; }; class CvtPkScalePk16F16Bf6OpAdaptor : public CvtPkScalePk16F16Bf6OpGenericAdaptor<::mlir::ValueRange> { public: using CvtPkScalePk16F16Bf6OpGenericAdaptor::CvtPkScalePk16F16Bf6OpGenericAdaptor; CvtPkScalePk16F16Bf6OpAdaptor(CvtPkScalePk16F16Bf6Op op); ::llvm::LogicalResult verify(::mlir::Location loc); }; class CvtPkScalePk16F16Bf6Op : public ::mlir::Op::Impl, ::mlir::OpTrait::ZeroSuccessors, ::mlir::OpTrait::NOperands<2>::Impl, ::mlir::OpTrait::OpInvariants, ::mlir::BytecodeOpInterface::Trait, ::mlir::ConditionallySpeculatable::Trait, ::mlir::OpTrait::AlwaysSpeculatableImplTrait, ::mlir::MemoryEffectOpInterface::Trait> { public: using Op::Op; using Op::print; using Adaptor = CvtPkScalePk16F16Bf6OpAdaptor; template using GenericAdaptor = CvtPkScalePk16F16Bf6OpGenericAdaptor; using FoldAdaptor = GenericAdaptor<::llvm::ArrayRef<::mlir::Attribute>>; static constexpr int odsIndex_src = 0; static constexpr int odsIndex_scale = 1; using Properties = FoldAdaptor::Properties; static ::llvm::ArrayRef<::llvm::StringRef> getAttributeNames() { static ::llvm::StringRef attrNames[] = {::llvm::StringRef("scaleSel")}; return ::llvm::ArrayRef(attrNames); } ::mlir::StringAttr getScaleSelAttrName() { return getAttributeNameForIndex(0); } static ::mlir::StringAttr getScaleSelAttrName(::mlir::OperationName name) { return getAttributeNameForIndex(name, 0); } static constexpr ::llvm::StringLiteral getOperationName() { return ::llvm::StringLiteral("rocdl.cvt.scale.pk16.f16.bf6"); } std::pair getODSOperandIndexAndLength(unsigned index) { return {index, 1}; } ::mlir::Operation::operand_range getODSOperands(unsigned index) { auto valueRange = getODSOperandIndexAndLength(index); return {std::next(getOperation()->operand_begin(), valueRange.first), std::next(getOperation()->operand_begin(), valueRange.first + valueRange.second)}; } ::mlir::TypedValue<::mlir::VectorType> getSrc() { return ::llvm::cast<::mlir::TypedValue<::mlir::VectorType>>(*getODSOperands(0).begin()); } ::mlir::TypedValue<::mlir::IntegerType> getScale() { return ::llvm::cast<::mlir::TypedValue<::mlir::IntegerType>>(*getODSOperands(1).begin()); } ::mlir::OpOperand &getSrcMutable() { auto range = getODSOperandIndexAndLength(0); return getOperation()->getOpOperand(range.first); } ::mlir::OpOperand &getScaleMutable() { auto range = getODSOperandIndexAndLength(1); return getOperation()->getOpOperand(range.first); } std::pair getODSResultIndexAndLength(unsigned index) { return {index, 1}; } ::mlir::Operation::result_range getODSResults(unsigned index) { auto valueRange = getODSResultIndexAndLength(index); return {std::next(getOperation()->result_begin(), valueRange.first), std::next(getOperation()->result_begin(), valueRange.first + valueRange.second)}; } ::mlir::TypedValue<::mlir::VectorType> getRes() { return ::llvm::cast<::mlir::TypedValue<::mlir::VectorType>>(*getODSResults(0).begin()); } static ::llvm::LogicalResult setPropertiesFromAttr(Properties &prop, ::mlir::Attribute attr, ::llvm::function_ref<::mlir::InFlightDiagnostic()> emitError); static ::mlir::Attribute getPropertiesAsAttr(::mlir::MLIRContext *ctx, const Properties &prop); static llvm::hash_code computePropertiesHash(const Properties &prop); static std::optional getInherentAttr(::mlir::MLIRContext *ctx, const Properties &prop, llvm::StringRef name); static void setInherentAttr(Properties &prop, llvm::StringRef name, mlir::Attribute value); static void populateInherentAttrs(::mlir::MLIRContext *ctx, const Properties &prop, ::mlir::NamedAttrList &attrs); static ::llvm::LogicalResult verifyInherentAttrs(::mlir::OperationName opName, ::mlir::NamedAttrList &attrs, llvm::function_ref<::mlir::InFlightDiagnostic()> emitError); static ::llvm::LogicalResult readProperties(::mlir::DialectBytecodeReader &reader, ::mlir::OperationState &state); void writeProperties(::mlir::DialectBytecodeWriter &writer); ::mlir::IntegerAttr getScaleSelAttr() { return ::llvm::cast<::mlir::IntegerAttr>(getProperties().scaleSel); } uint32_t getScaleSel(); void setScaleSelAttr(::mlir::IntegerAttr attr) { getProperties().scaleSel = attr; } void setScaleSel(uint32_t attrValue); static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::Type res, ::mlir::Value src, ::mlir::Value scale, ::mlir::IntegerAttr scaleSel); static CvtPkScalePk16F16Bf6Op create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::Type res, ::mlir::Value src, ::mlir::Value scale, ::mlir::IntegerAttr scaleSel); static CvtPkScalePk16F16Bf6Op create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::Type res, ::mlir::Value src, ::mlir::Value scale, ::mlir::IntegerAttr scaleSel); static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::Value src, ::mlir::Value scale, ::mlir::IntegerAttr scaleSel); static CvtPkScalePk16F16Bf6Op create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::Value src, ::mlir::Value scale, ::mlir::IntegerAttr scaleSel); static CvtPkScalePk16F16Bf6Op create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::Value src, ::mlir::Value scale, ::mlir::IntegerAttr scaleSel); static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::Type res, ::mlir::Value src, ::mlir::Value scale, uint32_t scaleSel); static CvtPkScalePk16F16Bf6Op create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::Type res, ::mlir::Value src, ::mlir::Value scale, uint32_t scaleSel); static CvtPkScalePk16F16Bf6Op create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::Type res, ::mlir::Value src, ::mlir::Value scale, uint32_t scaleSel); static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::Value src, ::mlir::Value scale, uint32_t scaleSel); static CvtPkScalePk16F16Bf6Op create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::Value src, ::mlir::Value scale, uint32_t scaleSel); static CvtPkScalePk16F16Bf6Op create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::Value src, ::mlir::Value scale, uint32_t scaleSel); static void build(::mlir::OpBuilder &, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, ::llvm::ArrayRef<::mlir::NamedAttribute> attributes = {}); static CvtPkScalePk16F16Bf6Op create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, ::llvm::ArrayRef<::mlir::NamedAttribute> attributes = {}); static CvtPkScalePk16F16Bf6Op create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, ::llvm::ArrayRef<::mlir::NamedAttribute> attributes = {}); static void build(::mlir::OpBuilder &, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, const Properties &properties, ::llvm::ArrayRef<::mlir::NamedAttribute> discardableAttributes = {}); static CvtPkScalePk16F16Bf6Op create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, const Properties &properties, ::llvm::ArrayRef<::mlir::NamedAttribute> discardableAttributes = {}); static CvtPkScalePk16F16Bf6Op create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, const Properties &properties, ::llvm::ArrayRef<::mlir::NamedAttribute> discardableAttributes = {}); ::llvm::LogicalResult verifyInvariantsImpl(); ::llvm::LogicalResult verifyInvariants(); static ::mlir::ParseResult parse(::mlir::OpAsmParser &parser, ::mlir::OperationState &result); void print(::mlir::OpAsmPrinter &_odsPrinter); void getEffects(::llvm::SmallVectorImpl<::mlir::SideEffects::EffectInstance<::mlir::MemoryEffects::Effect>> &effects); private: ::mlir::StringAttr getAttributeNameForIndex(unsigned index) { return getAttributeNameForIndex((*this)->getName(), index); } static ::mlir::StringAttr getAttributeNameForIndex(::mlir::OperationName name, unsigned index) { assert(index < 1 && "invalid attribute index"); assert(name.getStringRef() == getOperationName() && "invalid operation name"); assert(name.isRegistered() && "Operation isn't registered, missing a " "dependent dialect loading?"); return name.getAttributeNames()[index]; } public: }; } // namespace mlir::ROCDL MLIR_DECLARE_EXPLICIT_TYPE_ID(::mlir::ROCDL::CvtPkScalePk16F16Bf6Op) MLIR_DECLARE_EXPLICIT_TYPE_ID(::mlir::ROCDL::detail::CvtPkScalePk16F16Bf6OpGenericAdaptorBase::Properties) namespace mlir::ROCDL { //===----------------------------------------------------------------------===// // ::mlir::ROCDL::CvtPkScalePk16F16Fp6Op declarations //===----------------------------------------------------------------------===// namespace detail { class CvtPkScalePk16F16Fp6OpGenericAdaptorBase { public: struct Properties { using scaleSelTy = ::mlir::IntegerAttr; scaleSelTy scaleSel; auto getScaleSel() const { auto &propStorage = this->scaleSel; return ::llvm::cast<::mlir::IntegerAttr>(propStorage); } void setScaleSel(const ::mlir::IntegerAttr &propValue) { this->scaleSel = propValue; } bool operator==(const Properties &rhs) const { return rhs.scaleSel == this->scaleSel && true; } bool operator!=(const Properties &rhs) const { return !(*this == rhs); } }; protected: ::mlir::DictionaryAttr odsAttrs; ::std::optional<::mlir::OperationName> odsOpName; Properties properties; ::mlir::RegionRange odsRegions; public: CvtPkScalePk16F16Fp6OpGenericAdaptorBase(::mlir::DictionaryAttr attrs, const Properties &properties, ::mlir::RegionRange regions = {}) : odsAttrs(attrs), properties(properties), odsRegions(regions) { if (odsAttrs) odsOpName.emplace("rocdl.cvt.scale.pk16.f16.fp6", odsAttrs.getContext()); } CvtPkScalePk16F16Fp6OpGenericAdaptorBase(CvtPkScalePk16F16Fp6Op op); std::pair getODSOperandIndexAndLength(unsigned index, unsigned odsOperandsSize) { return {index, 1}; } const Properties &getProperties() { return properties; } ::mlir::DictionaryAttr getAttributes() { return odsAttrs; } ::mlir::IntegerAttr getScaleSelAttr() { auto attr = ::llvm::cast<::mlir::IntegerAttr>(getProperties().scaleSel); return attr; } uint32_t getScaleSel(); }; } // namespace detail template class CvtPkScalePk16F16Fp6OpGenericAdaptor : public detail::CvtPkScalePk16F16Fp6OpGenericAdaptorBase { using ValueT = ::llvm::detail::ValueOfRange; using Base = detail::CvtPkScalePk16F16Fp6OpGenericAdaptorBase; static constexpr int odsIndex_src = 0; static constexpr int odsIndex_scale = 1; public: CvtPkScalePk16F16Fp6OpGenericAdaptor(RangeT values, ::mlir::DictionaryAttr attrs, const Properties &properties, ::mlir::RegionRange regions = {}) : Base(attrs, properties, regions), odsOperands(values) {} CvtPkScalePk16F16Fp6OpGenericAdaptor(RangeT values, ::mlir::DictionaryAttr attrs, ::mlir::PropertyRef properties, ::mlir::RegionRange regions = {}) : CvtPkScalePk16F16Fp6OpGenericAdaptor(values, attrs, (properties ? *properties.as() : Properties{}), regions) {} CvtPkScalePk16F16Fp6OpGenericAdaptor(RangeT values, ::mlir::DictionaryAttr attrs = nullptr) : CvtPkScalePk16F16Fp6OpGenericAdaptor(values, attrs, Properties{}, {}) {} CvtPkScalePk16F16Fp6OpGenericAdaptor(RangeT values, const CvtPkScalePk16F16Fp6OpGenericAdaptorBase &base) : Base(base), odsOperands(values) {} template >> CvtPkScalePk16F16Fp6OpGenericAdaptor(RangeT values, LateInst op) : Base(op), odsOperands(values) {} std::pair getODSOperandIndexAndLength(unsigned index) { return Base::getODSOperandIndexAndLength(index, odsOperands.size()); } RangeT getODSOperands(unsigned index) { auto valueRange = getODSOperandIndexAndLength(index); return {std::next(odsOperands.begin(), valueRange.first), std::next(odsOperands.begin(), valueRange.first + valueRange.second)}; } ValueT getSrc() { return (*getODSOperands(0).begin()); } ValueT getScale() { return (*getODSOperands(1).begin()); } RangeT getOperands() { return odsOperands; } private: RangeT odsOperands; }; class CvtPkScalePk16F16Fp6OpAdaptor : public CvtPkScalePk16F16Fp6OpGenericAdaptor<::mlir::ValueRange> { public: using CvtPkScalePk16F16Fp6OpGenericAdaptor::CvtPkScalePk16F16Fp6OpGenericAdaptor; CvtPkScalePk16F16Fp6OpAdaptor(CvtPkScalePk16F16Fp6Op op); ::llvm::LogicalResult verify(::mlir::Location loc); }; class CvtPkScalePk16F16Fp6Op : public ::mlir::Op::Impl, ::mlir::OpTrait::ZeroSuccessors, ::mlir::OpTrait::NOperands<2>::Impl, ::mlir::OpTrait::OpInvariants, ::mlir::BytecodeOpInterface::Trait, ::mlir::ConditionallySpeculatable::Trait, ::mlir::OpTrait::AlwaysSpeculatableImplTrait, ::mlir::MemoryEffectOpInterface::Trait> { public: using Op::Op; using Op::print; using Adaptor = CvtPkScalePk16F16Fp6OpAdaptor; template using GenericAdaptor = CvtPkScalePk16F16Fp6OpGenericAdaptor; using FoldAdaptor = GenericAdaptor<::llvm::ArrayRef<::mlir::Attribute>>; static constexpr int odsIndex_src = 0; static constexpr int odsIndex_scale = 1; using Properties = FoldAdaptor::Properties; static ::llvm::ArrayRef<::llvm::StringRef> getAttributeNames() { static ::llvm::StringRef attrNames[] = {::llvm::StringRef("scaleSel")}; return ::llvm::ArrayRef(attrNames); } ::mlir::StringAttr getScaleSelAttrName() { return getAttributeNameForIndex(0); } static ::mlir::StringAttr getScaleSelAttrName(::mlir::OperationName name) { return getAttributeNameForIndex(name, 0); } static constexpr ::llvm::StringLiteral getOperationName() { return ::llvm::StringLiteral("rocdl.cvt.scale.pk16.f16.fp6"); } std::pair getODSOperandIndexAndLength(unsigned index) { return {index, 1}; } ::mlir::Operation::operand_range getODSOperands(unsigned index) { auto valueRange = getODSOperandIndexAndLength(index); return {std::next(getOperation()->operand_begin(), valueRange.first), std::next(getOperation()->operand_begin(), valueRange.first + valueRange.second)}; } ::mlir::TypedValue<::mlir::VectorType> getSrc() { return ::llvm::cast<::mlir::TypedValue<::mlir::VectorType>>(*getODSOperands(0).begin()); } ::mlir::TypedValue<::mlir::IntegerType> getScale() { return ::llvm::cast<::mlir::TypedValue<::mlir::IntegerType>>(*getODSOperands(1).begin()); } ::mlir::OpOperand &getSrcMutable() { auto range = getODSOperandIndexAndLength(0); return getOperation()->getOpOperand(range.first); } ::mlir::OpOperand &getScaleMutable() { auto range = getODSOperandIndexAndLength(1); return getOperation()->getOpOperand(range.first); } std::pair getODSResultIndexAndLength(unsigned index) { return {index, 1}; } ::mlir::Operation::result_range getODSResults(unsigned index) { auto valueRange = getODSResultIndexAndLength(index); return {std::next(getOperation()->result_begin(), valueRange.first), std::next(getOperation()->result_begin(), valueRange.first + valueRange.second)}; } ::mlir::TypedValue<::mlir::VectorType> getRes() { return ::llvm::cast<::mlir::TypedValue<::mlir::VectorType>>(*getODSResults(0).begin()); } static ::llvm::LogicalResult setPropertiesFromAttr(Properties &prop, ::mlir::Attribute attr, ::llvm::function_ref<::mlir::InFlightDiagnostic()> emitError); static ::mlir::Attribute getPropertiesAsAttr(::mlir::MLIRContext *ctx, const Properties &prop); static llvm::hash_code computePropertiesHash(const Properties &prop); static std::optional getInherentAttr(::mlir::MLIRContext *ctx, const Properties &prop, llvm::StringRef name); static void setInherentAttr(Properties &prop, llvm::StringRef name, mlir::Attribute value); static void populateInherentAttrs(::mlir::MLIRContext *ctx, const Properties &prop, ::mlir::NamedAttrList &attrs); static ::llvm::LogicalResult verifyInherentAttrs(::mlir::OperationName opName, ::mlir::NamedAttrList &attrs, llvm::function_ref<::mlir::InFlightDiagnostic()> emitError); static ::llvm::LogicalResult readProperties(::mlir::DialectBytecodeReader &reader, ::mlir::OperationState &state); void writeProperties(::mlir::DialectBytecodeWriter &writer); ::mlir::IntegerAttr getScaleSelAttr() { return ::llvm::cast<::mlir::IntegerAttr>(getProperties().scaleSel); } uint32_t getScaleSel(); void setScaleSelAttr(::mlir::IntegerAttr attr) { getProperties().scaleSel = attr; } void setScaleSel(uint32_t attrValue); static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::Type res, ::mlir::Value src, ::mlir::Value scale, ::mlir::IntegerAttr scaleSel); static CvtPkScalePk16F16Fp6Op create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::Type res, ::mlir::Value src, ::mlir::Value scale, ::mlir::IntegerAttr scaleSel); static CvtPkScalePk16F16Fp6Op create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::Type res, ::mlir::Value src, ::mlir::Value scale, ::mlir::IntegerAttr scaleSel); static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::Value src, ::mlir::Value scale, ::mlir::IntegerAttr scaleSel); static CvtPkScalePk16F16Fp6Op create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::Value src, ::mlir::Value scale, ::mlir::IntegerAttr scaleSel); static CvtPkScalePk16F16Fp6Op create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::Value src, ::mlir::Value scale, ::mlir::IntegerAttr scaleSel); static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::Type res, ::mlir::Value src, ::mlir::Value scale, uint32_t scaleSel); static CvtPkScalePk16F16Fp6Op create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::Type res, ::mlir::Value src, ::mlir::Value scale, uint32_t scaleSel); static CvtPkScalePk16F16Fp6Op create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::Type res, ::mlir::Value src, ::mlir::Value scale, uint32_t scaleSel); static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::Value src, ::mlir::Value scale, uint32_t scaleSel); static CvtPkScalePk16F16Fp6Op create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::Value src, ::mlir::Value scale, uint32_t scaleSel); static CvtPkScalePk16F16Fp6Op create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::Value src, ::mlir::Value scale, uint32_t scaleSel); static void build(::mlir::OpBuilder &, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, ::llvm::ArrayRef<::mlir::NamedAttribute> attributes = {}); static CvtPkScalePk16F16Fp6Op create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, ::llvm::ArrayRef<::mlir::NamedAttribute> attributes = {}); static CvtPkScalePk16F16Fp6Op create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, ::llvm::ArrayRef<::mlir::NamedAttribute> attributes = {}); static void build(::mlir::OpBuilder &, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, const Properties &properties, ::llvm::ArrayRef<::mlir::NamedAttribute> discardableAttributes = {}); static CvtPkScalePk16F16Fp6Op create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, const Properties &properties, ::llvm::ArrayRef<::mlir::NamedAttribute> discardableAttributes = {}); static CvtPkScalePk16F16Fp6Op create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, const Properties &properties, ::llvm::ArrayRef<::mlir::NamedAttribute> discardableAttributes = {}); ::llvm::LogicalResult verifyInvariantsImpl(); ::llvm::LogicalResult verifyInvariants(); static ::mlir::ParseResult parse(::mlir::OpAsmParser &parser, ::mlir::OperationState &result); void print(::mlir::OpAsmPrinter &_odsPrinter); void getEffects(::llvm::SmallVectorImpl<::mlir::SideEffects::EffectInstance<::mlir::MemoryEffects::Effect>> &effects); private: ::mlir::StringAttr getAttributeNameForIndex(unsigned index) { return getAttributeNameForIndex((*this)->getName(), index); } static ::mlir::StringAttr getAttributeNameForIndex(::mlir::OperationName name, unsigned index) { assert(index < 1 && "invalid attribute index"); assert(name.getStringRef() == getOperationName() && "invalid operation name"); assert(name.isRegistered() && "Operation isn't registered, missing a " "dependent dialect loading?"); return name.getAttributeNames()[index]; } public: }; } // namespace mlir::ROCDL MLIR_DECLARE_EXPLICIT_TYPE_ID(::mlir::ROCDL::CvtPkScalePk16F16Fp6Op) MLIR_DECLARE_EXPLICIT_TYPE_ID(::mlir::ROCDL::detail::CvtPkScalePk16F16Fp6OpGenericAdaptorBase::Properties) namespace mlir::ROCDL { //===----------------------------------------------------------------------===// // ::mlir::ROCDL::CvtPkScalePk16F32Bf6Op declarations //===----------------------------------------------------------------------===// namespace detail { class CvtPkScalePk16F32Bf6OpGenericAdaptorBase { public: struct Properties { using scaleSelTy = ::mlir::IntegerAttr; scaleSelTy scaleSel; auto getScaleSel() const { auto &propStorage = this->scaleSel; return ::llvm::cast<::mlir::IntegerAttr>(propStorage); } void setScaleSel(const ::mlir::IntegerAttr &propValue) { this->scaleSel = propValue; } bool operator==(const Properties &rhs) const { return rhs.scaleSel == this->scaleSel && true; } bool operator!=(const Properties &rhs) const { return !(*this == rhs); } }; protected: ::mlir::DictionaryAttr odsAttrs; ::std::optional<::mlir::OperationName> odsOpName; Properties properties; ::mlir::RegionRange odsRegions; public: CvtPkScalePk16F32Bf6OpGenericAdaptorBase(::mlir::DictionaryAttr attrs, const Properties &properties, ::mlir::RegionRange regions = {}) : odsAttrs(attrs), properties(properties), odsRegions(regions) { if (odsAttrs) odsOpName.emplace("rocdl.cvt.scale.pk16.f32.bf6", odsAttrs.getContext()); } CvtPkScalePk16F32Bf6OpGenericAdaptorBase(CvtPkScalePk16F32Bf6Op op); std::pair getODSOperandIndexAndLength(unsigned index, unsigned odsOperandsSize) { return {index, 1}; } const Properties &getProperties() { return properties; } ::mlir::DictionaryAttr getAttributes() { return odsAttrs; } ::mlir::IntegerAttr getScaleSelAttr() { auto attr = ::llvm::cast<::mlir::IntegerAttr>(getProperties().scaleSel); return attr; } uint32_t getScaleSel(); }; } // namespace detail template class CvtPkScalePk16F32Bf6OpGenericAdaptor : public detail::CvtPkScalePk16F32Bf6OpGenericAdaptorBase { using ValueT = ::llvm::detail::ValueOfRange; using Base = detail::CvtPkScalePk16F32Bf6OpGenericAdaptorBase; static constexpr int odsIndex_src = 0; static constexpr int odsIndex_scale = 1; public: CvtPkScalePk16F32Bf6OpGenericAdaptor(RangeT values, ::mlir::DictionaryAttr attrs, const Properties &properties, ::mlir::RegionRange regions = {}) : Base(attrs, properties, regions), odsOperands(values) {} CvtPkScalePk16F32Bf6OpGenericAdaptor(RangeT values, ::mlir::DictionaryAttr attrs, ::mlir::PropertyRef properties, ::mlir::RegionRange regions = {}) : CvtPkScalePk16F32Bf6OpGenericAdaptor(values, attrs, (properties ? *properties.as() : Properties{}), regions) {} CvtPkScalePk16F32Bf6OpGenericAdaptor(RangeT values, ::mlir::DictionaryAttr attrs = nullptr) : CvtPkScalePk16F32Bf6OpGenericAdaptor(values, attrs, Properties{}, {}) {} CvtPkScalePk16F32Bf6OpGenericAdaptor(RangeT values, const CvtPkScalePk16F32Bf6OpGenericAdaptorBase &base) : Base(base), odsOperands(values) {} template >> CvtPkScalePk16F32Bf6OpGenericAdaptor(RangeT values, LateInst op) : Base(op), odsOperands(values) {} std::pair getODSOperandIndexAndLength(unsigned index) { return Base::getODSOperandIndexAndLength(index, odsOperands.size()); } RangeT getODSOperands(unsigned index) { auto valueRange = getODSOperandIndexAndLength(index); return {std::next(odsOperands.begin(), valueRange.first), std::next(odsOperands.begin(), valueRange.first + valueRange.second)}; } ValueT getSrc() { return (*getODSOperands(0).begin()); } ValueT getScale() { return (*getODSOperands(1).begin()); } RangeT getOperands() { return odsOperands; } private: RangeT odsOperands; }; class CvtPkScalePk16F32Bf6OpAdaptor : public CvtPkScalePk16F32Bf6OpGenericAdaptor<::mlir::ValueRange> { public: using CvtPkScalePk16F32Bf6OpGenericAdaptor::CvtPkScalePk16F32Bf6OpGenericAdaptor; CvtPkScalePk16F32Bf6OpAdaptor(CvtPkScalePk16F32Bf6Op op); ::llvm::LogicalResult verify(::mlir::Location loc); }; class CvtPkScalePk16F32Bf6Op : public ::mlir::Op::Impl, ::mlir::OpTrait::ZeroSuccessors, ::mlir::OpTrait::NOperands<2>::Impl, ::mlir::OpTrait::OpInvariants, ::mlir::BytecodeOpInterface::Trait, ::mlir::ConditionallySpeculatable::Trait, ::mlir::OpTrait::AlwaysSpeculatableImplTrait, ::mlir::MemoryEffectOpInterface::Trait> { public: using Op::Op; using Op::print; using Adaptor = CvtPkScalePk16F32Bf6OpAdaptor; template using GenericAdaptor = CvtPkScalePk16F32Bf6OpGenericAdaptor; using FoldAdaptor = GenericAdaptor<::llvm::ArrayRef<::mlir::Attribute>>; static constexpr int odsIndex_src = 0; static constexpr int odsIndex_scale = 1; using Properties = FoldAdaptor::Properties; static ::llvm::ArrayRef<::llvm::StringRef> getAttributeNames() { static ::llvm::StringRef attrNames[] = {::llvm::StringRef("scaleSel")}; return ::llvm::ArrayRef(attrNames); } ::mlir::StringAttr getScaleSelAttrName() { return getAttributeNameForIndex(0); } static ::mlir::StringAttr getScaleSelAttrName(::mlir::OperationName name) { return getAttributeNameForIndex(name, 0); } static constexpr ::llvm::StringLiteral getOperationName() { return ::llvm::StringLiteral("rocdl.cvt.scale.pk16.f32.bf6"); } std::pair getODSOperandIndexAndLength(unsigned index) { return {index, 1}; } ::mlir::Operation::operand_range getODSOperands(unsigned index) { auto valueRange = getODSOperandIndexAndLength(index); return {std::next(getOperation()->operand_begin(), valueRange.first), std::next(getOperation()->operand_begin(), valueRange.first + valueRange.second)}; } ::mlir::TypedValue<::mlir::VectorType> getSrc() { return ::llvm::cast<::mlir::TypedValue<::mlir::VectorType>>(*getODSOperands(0).begin()); } ::mlir::TypedValue<::mlir::IntegerType> getScale() { return ::llvm::cast<::mlir::TypedValue<::mlir::IntegerType>>(*getODSOperands(1).begin()); } ::mlir::OpOperand &getSrcMutable() { auto range = getODSOperandIndexAndLength(0); return getOperation()->getOpOperand(range.first); } ::mlir::OpOperand &getScaleMutable() { auto range = getODSOperandIndexAndLength(1); return getOperation()->getOpOperand(range.first); } std::pair getODSResultIndexAndLength(unsigned index) { return {index, 1}; } ::mlir::Operation::result_range getODSResults(unsigned index) { auto valueRange = getODSResultIndexAndLength(index); return {std::next(getOperation()->result_begin(), valueRange.first), std::next(getOperation()->result_begin(), valueRange.first + valueRange.second)}; } ::mlir::TypedValue<::mlir::VectorType> getRes() { return ::llvm::cast<::mlir::TypedValue<::mlir::VectorType>>(*getODSResults(0).begin()); } static ::llvm::LogicalResult setPropertiesFromAttr(Properties &prop, ::mlir::Attribute attr, ::llvm::function_ref<::mlir::InFlightDiagnostic()> emitError); static ::mlir::Attribute getPropertiesAsAttr(::mlir::MLIRContext *ctx, const Properties &prop); static llvm::hash_code computePropertiesHash(const Properties &prop); static std::optional getInherentAttr(::mlir::MLIRContext *ctx, const Properties &prop, llvm::StringRef name); static void setInherentAttr(Properties &prop, llvm::StringRef name, mlir::Attribute value); static void populateInherentAttrs(::mlir::MLIRContext *ctx, const Properties &prop, ::mlir::NamedAttrList &attrs); static ::llvm::LogicalResult verifyInherentAttrs(::mlir::OperationName opName, ::mlir::NamedAttrList &attrs, llvm::function_ref<::mlir::InFlightDiagnostic()> emitError); static ::llvm::LogicalResult readProperties(::mlir::DialectBytecodeReader &reader, ::mlir::OperationState &state); void writeProperties(::mlir::DialectBytecodeWriter &writer); ::mlir::IntegerAttr getScaleSelAttr() { return ::llvm::cast<::mlir::IntegerAttr>(getProperties().scaleSel); } uint32_t getScaleSel(); void setScaleSelAttr(::mlir::IntegerAttr attr) { getProperties().scaleSel = attr; } void setScaleSel(uint32_t attrValue); static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::Type res, ::mlir::Value src, ::mlir::Value scale, ::mlir::IntegerAttr scaleSel); static CvtPkScalePk16F32Bf6Op create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::Type res, ::mlir::Value src, ::mlir::Value scale, ::mlir::IntegerAttr scaleSel); static CvtPkScalePk16F32Bf6Op create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::Type res, ::mlir::Value src, ::mlir::Value scale, ::mlir::IntegerAttr scaleSel); static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::Value src, ::mlir::Value scale, ::mlir::IntegerAttr scaleSel); static CvtPkScalePk16F32Bf6Op create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::Value src, ::mlir::Value scale, ::mlir::IntegerAttr scaleSel); static CvtPkScalePk16F32Bf6Op create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::Value src, ::mlir::Value scale, ::mlir::IntegerAttr scaleSel); static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::Type res, ::mlir::Value src, ::mlir::Value scale, uint32_t scaleSel); static CvtPkScalePk16F32Bf6Op create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::Type res, ::mlir::Value src, ::mlir::Value scale, uint32_t scaleSel); static CvtPkScalePk16F32Bf6Op create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::Type res, ::mlir::Value src, ::mlir::Value scale, uint32_t scaleSel); static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::Value src, ::mlir::Value scale, uint32_t scaleSel); static CvtPkScalePk16F32Bf6Op create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::Value src, ::mlir::Value scale, uint32_t scaleSel); static CvtPkScalePk16F32Bf6Op create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::Value src, ::mlir::Value scale, uint32_t scaleSel); static void build(::mlir::OpBuilder &, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, ::llvm::ArrayRef<::mlir::NamedAttribute> attributes = {}); static CvtPkScalePk16F32Bf6Op create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, ::llvm::ArrayRef<::mlir::NamedAttribute> attributes = {}); static CvtPkScalePk16F32Bf6Op create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, ::llvm::ArrayRef<::mlir::NamedAttribute> attributes = {}); static void build(::mlir::OpBuilder &, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, const Properties &properties, ::llvm::ArrayRef<::mlir::NamedAttribute> discardableAttributes = {}); static CvtPkScalePk16F32Bf6Op create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, const Properties &properties, ::llvm::ArrayRef<::mlir::NamedAttribute> discardableAttributes = {}); static CvtPkScalePk16F32Bf6Op create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, const Properties &properties, ::llvm::ArrayRef<::mlir::NamedAttribute> discardableAttributes = {}); ::llvm::LogicalResult verifyInvariantsImpl(); ::llvm::LogicalResult verifyInvariants(); static ::mlir::ParseResult parse(::mlir::OpAsmParser &parser, ::mlir::OperationState &result); void print(::mlir::OpAsmPrinter &_odsPrinter); void getEffects(::llvm::SmallVectorImpl<::mlir::SideEffects::EffectInstance<::mlir::MemoryEffects::Effect>> &effects); private: ::mlir::StringAttr getAttributeNameForIndex(unsigned index) { return getAttributeNameForIndex((*this)->getName(), index); } static ::mlir::StringAttr getAttributeNameForIndex(::mlir::OperationName name, unsigned index) { assert(index < 1 && "invalid attribute index"); assert(name.getStringRef() == getOperationName() && "invalid operation name"); assert(name.isRegistered() && "Operation isn't registered, missing a " "dependent dialect loading?"); return name.getAttributeNames()[index]; } public: }; } // namespace mlir::ROCDL MLIR_DECLARE_EXPLICIT_TYPE_ID(::mlir::ROCDL::CvtPkScalePk16F32Bf6Op) MLIR_DECLARE_EXPLICIT_TYPE_ID(::mlir::ROCDL::detail::CvtPkScalePk16F32Bf6OpGenericAdaptorBase::Properties) namespace mlir::ROCDL { //===----------------------------------------------------------------------===// // ::mlir::ROCDL::CvtPkScalePk16F32Fp6Op declarations //===----------------------------------------------------------------------===// namespace detail { class CvtPkScalePk16F32Fp6OpGenericAdaptorBase { public: struct Properties { using scaleSelTy = ::mlir::IntegerAttr; scaleSelTy scaleSel; auto getScaleSel() const { auto &propStorage = this->scaleSel; return ::llvm::cast<::mlir::IntegerAttr>(propStorage); } void setScaleSel(const ::mlir::IntegerAttr &propValue) { this->scaleSel = propValue; } bool operator==(const Properties &rhs) const { return rhs.scaleSel == this->scaleSel && true; } bool operator!=(const Properties &rhs) const { return !(*this == rhs); } }; protected: ::mlir::DictionaryAttr odsAttrs; ::std::optional<::mlir::OperationName> odsOpName; Properties properties; ::mlir::RegionRange odsRegions; public: CvtPkScalePk16F32Fp6OpGenericAdaptorBase(::mlir::DictionaryAttr attrs, const Properties &properties, ::mlir::RegionRange regions = {}) : odsAttrs(attrs), properties(properties), odsRegions(regions) { if (odsAttrs) odsOpName.emplace("rocdl.cvt.scale.pk16.f32.fp6", odsAttrs.getContext()); } CvtPkScalePk16F32Fp6OpGenericAdaptorBase(CvtPkScalePk16F32Fp6Op op); std::pair getODSOperandIndexAndLength(unsigned index, unsigned odsOperandsSize) { return {index, 1}; } const Properties &getProperties() { return properties; } ::mlir::DictionaryAttr getAttributes() { return odsAttrs; } ::mlir::IntegerAttr getScaleSelAttr() { auto attr = ::llvm::cast<::mlir::IntegerAttr>(getProperties().scaleSel); return attr; } uint32_t getScaleSel(); }; } // namespace detail template class CvtPkScalePk16F32Fp6OpGenericAdaptor : public detail::CvtPkScalePk16F32Fp6OpGenericAdaptorBase { using ValueT = ::llvm::detail::ValueOfRange; using Base = detail::CvtPkScalePk16F32Fp6OpGenericAdaptorBase; static constexpr int odsIndex_src = 0; static constexpr int odsIndex_scale = 1; public: CvtPkScalePk16F32Fp6OpGenericAdaptor(RangeT values, ::mlir::DictionaryAttr attrs, const Properties &properties, ::mlir::RegionRange regions = {}) : Base(attrs, properties, regions), odsOperands(values) {} CvtPkScalePk16F32Fp6OpGenericAdaptor(RangeT values, ::mlir::DictionaryAttr attrs, ::mlir::PropertyRef properties, ::mlir::RegionRange regions = {}) : CvtPkScalePk16F32Fp6OpGenericAdaptor(values, attrs, (properties ? *properties.as() : Properties{}), regions) {} CvtPkScalePk16F32Fp6OpGenericAdaptor(RangeT values, ::mlir::DictionaryAttr attrs = nullptr) : CvtPkScalePk16F32Fp6OpGenericAdaptor(values, attrs, Properties{}, {}) {} CvtPkScalePk16F32Fp6OpGenericAdaptor(RangeT values, const CvtPkScalePk16F32Fp6OpGenericAdaptorBase &base) : Base(base), odsOperands(values) {} template >> CvtPkScalePk16F32Fp6OpGenericAdaptor(RangeT values, LateInst op) : Base(op), odsOperands(values) {} std::pair getODSOperandIndexAndLength(unsigned index) { return Base::getODSOperandIndexAndLength(index, odsOperands.size()); } RangeT getODSOperands(unsigned index) { auto valueRange = getODSOperandIndexAndLength(index); return {std::next(odsOperands.begin(), valueRange.first), std::next(odsOperands.begin(), valueRange.first + valueRange.second)}; } ValueT getSrc() { return (*getODSOperands(0).begin()); } ValueT getScale() { return (*getODSOperands(1).begin()); } RangeT getOperands() { return odsOperands; } private: RangeT odsOperands; }; class CvtPkScalePk16F32Fp6OpAdaptor : public CvtPkScalePk16F32Fp6OpGenericAdaptor<::mlir::ValueRange> { public: using CvtPkScalePk16F32Fp6OpGenericAdaptor::CvtPkScalePk16F32Fp6OpGenericAdaptor; CvtPkScalePk16F32Fp6OpAdaptor(CvtPkScalePk16F32Fp6Op op); ::llvm::LogicalResult verify(::mlir::Location loc); }; class CvtPkScalePk16F32Fp6Op : public ::mlir::Op::Impl, ::mlir::OpTrait::ZeroSuccessors, ::mlir::OpTrait::NOperands<2>::Impl, ::mlir::OpTrait::OpInvariants, ::mlir::BytecodeOpInterface::Trait, ::mlir::ConditionallySpeculatable::Trait, ::mlir::OpTrait::AlwaysSpeculatableImplTrait, ::mlir::MemoryEffectOpInterface::Trait> { public: using Op::Op; using Op::print; using Adaptor = CvtPkScalePk16F32Fp6OpAdaptor; template using GenericAdaptor = CvtPkScalePk16F32Fp6OpGenericAdaptor; using FoldAdaptor = GenericAdaptor<::llvm::ArrayRef<::mlir::Attribute>>; static constexpr int odsIndex_src = 0; static constexpr int odsIndex_scale = 1; using Properties = FoldAdaptor::Properties; static ::llvm::ArrayRef<::llvm::StringRef> getAttributeNames() { static ::llvm::StringRef attrNames[] = {::llvm::StringRef("scaleSel")}; return ::llvm::ArrayRef(attrNames); } ::mlir::StringAttr getScaleSelAttrName() { return getAttributeNameForIndex(0); } static ::mlir::StringAttr getScaleSelAttrName(::mlir::OperationName name) { return getAttributeNameForIndex(name, 0); } static constexpr ::llvm::StringLiteral getOperationName() { return ::llvm::StringLiteral("rocdl.cvt.scale.pk16.f32.fp6"); } std::pair getODSOperandIndexAndLength(unsigned index) { return {index, 1}; } ::mlir::Operation::operand_range getODSOperands(unsigned index) { auto valueRange = getODSOperandIndexAndLength(index); return {std::next(getOperation()->operand_begin(), valueRange.first), std::next(getOperation()->operand_begin(), valueRange.first + valueRange.second)}; } ::mlir::TypedValue<::mlir::VectorType> getSrc() { return ::llvm::cast<::mlir::TypedValue<::mlir::VectorType>>(*getODSOperands(0).begin()); } ::mlir::TypedValue<::mlir::IntegerType> getScale() { return ::llvm::cast<::mlir::TypedValue<::mlir::IntegerType>>(*getODSOperands(1).begin()); } ::mlir::OpOperand &getSrcMutable() { auto range = getODSOperandIndexAndLength(0); return getOperation()->getOpOperand(range.first); } ::mlir::OpOperand &getScaleMutable() { auto range = getODSOperandIndexAndLength(1); return getOperation()->getOpOperand(range.first); } std::pair getODSResultIndexAndLength(unsigned index) { return {index, 1}; } ::mlir::Operation::result_range getODSResults(unsigned index) { auto valueRange = getODSResultIndexAndLength(index); return {std::next(getOperation()->result_begin(), valueRange.first), std::next(getOperation()->result_begin(), valueRange.first + valueRange.second)}; } ::mlir::TypedValue<::mlir::VectorType> getRes() { return ::llvm::cast<::mlir::TypedValue<::mlir::VectorType>>(*getODSResults(0).begin()); } static ::llvm::LogicalResult setPropertiesFromAttr(Properties &prop, ::mlir::Attribute attr, ::llvm::function_ref<::mlir::InFlightDiagnostic()> emitError); static ::mlir::Attribute getPropertiesAsAttr(::mlir::MLIRContext *ctx, const Properties &prop); static llvm::hash_code computePropertiesHash(const Properties &prop); static std::optional getInherentAttr(::mlir::MLIRContext *ctx, const Properties &prop, llvm::StringRef name); static void setInherentAttr(Properties &prop, llvm::StringRef name, mlir::Attribute value); static void populateInherentAttrs(::mlir::MLIRContext *ctx, const Properties &prop, ::mlir::NamedAttrList &attrs); static ::llvm::LogicalResult verifyInherentAttrs(::mlir::OperationName opName, ::mlir::NamedAttrList &attrs, llvm::function_ref<::mlir::InFlightDiagnostic()> emitError); static ::llvm::LogicalResult readProperties(::mlir::DialectBytecodeReader &reader, ::mlir::OperationState &state); void writeProperties(::mlir::DialectBytecodeWriter &writer); ::mlir::IntegerAttr getScaleSelAttr() { return ::llvm::cast<::mlir::IntegerAttr>(getProperties().scaleSel); } uint32_t getScaleSel(); void setScaleSelAttr(::mlir::IntegerAttr attr) { getProperties().scaleSel = attr; } void setScaleSel(uint32_t attrValue); static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::Type res, ::mlir::Value src, ::mlir::Value scale, ::mlir::IntegerAttr scaleSel); static CvtPkScalePk16F32Fp6Op create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::Type res, ::mlir::Value src, ::mlir::Value scale, ::mlir::IntegerAttr scaleSel); static CvtPkScalePk16F32Fp6Op create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::Type res, ::mlir::Value src, ::mlir::Value scale, ::mlir::IntegerAttr scaleSel); static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::Value src, ::mlir::Value scale, ::mlir::IntegerAttr scaleSel); static CvtPkScalePk16F32Fp6Op create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::Value src, ::mlir::Value scale, ::mlir::IntegerAttr scaleSel); static CvtPkScalePk16F32Fp6Op create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::Value src, ::mlir::Value scale, ::mlir::IntegerAttr scaleSel); static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::Type res, ::mlir::Value src, ::mlir::Value scale, uint32_t scaleSel); static CvtPkScalePk16F32Fp6Op create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::Type res, ::mlir::Value src, ::mlir::Value scale, uint32_t scaleSel); static CvtPkScalePk16F32Fp6Op create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::Type res, ::mlir::Value src, ::mlir::Value scale, uint32_t scaleSel); static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::Value src, ::mlir::Value scale, uint32_t scaleSel); static CvtPkScalePk16F32Fp6Op create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::Value src, ::mlir::Value scale, uint32_t scaleSel); static CvtPkScalePk16F32Fp6Op create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::Value src, ::mlir::Value scale, uint32_t scaleSel); static void build(::mlir::OpBuilder &, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, ::llvm::ArrayRef<::mlir::NamedAttribute> attributes = {}); static CvtPkScalePk16F32Fp6Op create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, ::llvm::ArrayRef<::mlir::NamedAttribute> attributes = {}); static CvtPkScalePk16F32Fp6Op create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, ::llvm::ArrayRef<::mlir::NamedAttribute> attributes = {}); static void build(::mlir::OpBuilder &, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, const Properties &properties, ::llvm::ArrayRef<::mlir::NamedAttribute> discardableAttributes = {}); static CvtPkScalePk16F32Fp6Op create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, const Properties &properties, ::llvm::ArrayRef<::mlir::NamedAttribute> discardableAttributes = {}); static CvtPkScalePk16F32Fp6Op create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, const Properties &properties, ::llvm::ArrayRef<::mlir::NamedAttribute> discardableAttributes = {}); ::llvm::LogicalResult verifyInvariantsImpl(); ::llvm::LogicalResult verifyInvariants(); static ::mlir::ParseResult parse(::mlir::OpAsmParser &parser, ::mlir::OperationState &result); void print(::mlir::OpAsmPrinter &_odsPrinter); void getEffects(::llvm::SmallVectorImpl<::mlir::SideEffects::EffectInstance<::mlir::MemoryEffects::Effect>> &effects); private: ::mlir::StringAttr getAttributeNameForIndex(unsigned index) { return getAttributeNameForIndex((*this)->getName(), index); } static ::mlir::StringAttr getAttributeNameForIndex(::mlir::OperationName name, unsigned index) { assert(index < 1 && "invalid attribute index"); assert(name.getStringRef() == getOperationName() && "invalid operation name"); assert(name.isRegistered() && "Operation isn't registered, missing a " "dependent dialect loading?"); return name.getAttributeNames()[index]; } public: }; } // namespace mlir::ROCDL MLIR_DECLARE_EXPLICIT_TYPE_ID(::mlir::ROCDL::CvtPkScalePk16F32Fp6Op) MLIR_DECLARE_EXPLICIT_TYPE_ID(::mlir::ROCDL::detail::CvtPkScalePk16F32Fp6OpGenericAdaptorBase::Properties) namespace mlir::ROCDL { //===----------------------------------------------------------------------===// // ::mlir::ROCDL::CvtPkScalePk8Bf16Bf8Op declarations //===----------------------------------------------------------------------===// namespace detail { class CvtPkScalePk8Bf16Bf8OpGenericAdaptorBase { public: struct Properties { using scaleSelTy = ::mlir::IntegerAttr; scaleSelTy scaleSel; auto getScaleSel() const { auto &propStorage = this->scaleSel; return ::llvm::cast<::mlir::IntegerAttr>(propStorage); } void setScaleSel(const ::mlir::IntegerAttr &propValue) { this->scaleSel = propValue; } bool operator==(const Properties &rhs) const { return rhs.scaleSel == this->scaleSel && true; } bool operator!=(const Properties &rhs) const { return !(*this == rhs); } }; protected: ::mlir::DictionaryAttr odsAttrs; ::std::optional<::mlir::OperationName> odsOpName; Properties properties; ::mlir::RegionRange odsRegions; public: CvtPkScalePk8Bf16Bf8OpGenericAdaptorBase(::mlir::DictionaryAttr attrs, const Properties &properties, ::mlir::RegionRange regions = {}) : odsAttrs(attrs), properties(properties), odsRegions(regions) { if (odsAttrs) odsOpName.emplace("rocdl.cvt.scale.pk8.bf16.bf8", odsAttrs.getContext()); } CvtPkScalePk8Bf16Bf8OpGenericAdaptorBase(CvtPkScalePk8Bf16Bf8Op op); std::pair getODSOperandIndexAndLength(unsigned index, unsigned odsOperandsSize) { return {index, 1}; } const Properties &getProperties() { return properties; } ::mlir::DictionaryAttr getAttributes() { return odsAttrs; } ::mlir::IntegerAttr getScaleSelAttr() { auto attr = ::llvm::cast<::mlir::IntegerAttr>(getProperties().scaleSel); return attr; } uint32_t getScaleSel(); }; } // namespace detail template class CvtPkScalePk8Bf16Bf8OpGenericAdaptor : public detail::CvtPkScalePk8Bf16Bf8OpGenericAdaptorBase { using ValueT = ::llvm::detail::ValueOfRange; using Base = detail::CvtPkScalePk8Bf16Bf8OpGenericAdaptorBase; static constexpr int odsIndex_src = 0; static constexpr int odsIndex_scale = 1; public: CvtPkScalePk8Bf16Bf8OpGenericAdaptor(RangeT values, ::mlir::DictionaryAttr attrs, const Properties &properties, ::mlir::RegionRange regions = {}) : Base(attrs, properties, regions), odsOperands(values) {} CvtPkScalePk8Bf16Bf8OpGenericAdaptor(RangeT values, ::mlir::DictionaryAttr attrs, ::mlir::PropertyRef properties, ::mlir::RegionRange regions = {}) : CvtPkScalePk8Bf16Bf8OpGenericAdaptor(values, attrs, (properties ? *properties.as() : Properties{}), regions) {} CvtPkScalePk8Bf16Bf8OpGenericAdaptor(RangeT values, ::mlir::DictionaryAttr attrs = nullptr) : CvtPkScalePk8Bf16Bf8OpGenericAdaptor(values, attrs, Properties{}, {}) {} CvtPkScalePk8Bf16Bf8OpGenericAdaptor(RangeT values, const CvtPkScalePk8Bf16Bf8OpGenericAdaptorBase &base) : Base(base), odsOperands(values) {} template >> CvtPkScalePk8Bf16Bf8OpGenericAdaptor(RangeT values, LateInst op) : Base(op), odsOperands(values) {} std::pair getODSOperandIndexAndLength(unsigned index) { return Base::getODSOperandIndexAndLength(index, odsOperands.size()); } RangeT getODSOperands(unsigned index) { auto valueRange = getODSOperandIndexAndLength(index); return {std::next(odsOperands.begin(), valueRange.first), std::next(odsOperands.begin(), valueRange.first + valueRange.second)}; } ValueT getSrc() { return (*getODSOperands(0).begin()); } ValueT getScale() { return (*getODSOperands(1).begin()); } RangeT getOperands() { return odsOperands; } private: RangeT odsOperands; }; class CvtPkScalePk8Bf16Bf8OpAdaptor : public CvtPkScalePk8Bf16Bf8OpGenericAdaptor<::mlir::ValueRange> { public: using CvtPkScalePk8Bf16Bf8OpGenericAdaptor::CvtPkScalePk8Bf16Bf8OpGenericAdaptor; CvtPkScalePk8Bf16Bf8OpAdaptor(CvtPkScalePk8Bf16Bf8Op op); ::llvm::LogicalResult verify(::mlir::Location loc); }; class CvtPkScalePk8Bf16Bf8Op : public ::mlir::Op::Impl, ::mlir::OpTrait::ZeroSuccessors, ::mlir::OpTrait::NOperands<2>::Impl, ::mlir::OpTrait::OpInvariants, ::mlir::BytecodeOpInterface::Trait, ::mlir::ConditionallySpeculatable::Trait, ::mlir::OpTrait::AlwaysSpeculatableImplTrait, ::mlir::MemoryEffectOpInterface::Trait> { public: using Op::Op; using Op::print; using Adaptor = CvtPkScalePk8Bf16Bf8OpAdaptor; template using GenericAdaptor = CvtPkScalePk8Bf16Bf8OpGenericAdaptor; using FoldAdaptor = GenericAdaptor<::llvm::ArrayRef<::mlir::Attribute>>; static constexpr int odsIndex_src = 0; static constexpr int odsIndex_scale = 1; using Properties = FoldAdaptor::Properties; static ::llvm::ArrayRef<::llvm::StringRef> getAttributeNames() { static ::llvm::StringRef attrNames[] = {::llvm::StringRef("scaleSel")}; return ::llvm::ArrayRef(attrNames); } ::mlir::StringAttr getScaleSelAttrName() { return getAttributeNameForIndex(0); } static ::mlir::StringAttr getScaleSelAttrName(::mlir::OperationName name) { return getAttributeNameForIndex(name, 0); } static constexpr ::llvm::StringLiteral getOperationName() { return ::llvm::StringLiteral("rocdl.cvt.scale.pk8.bf16.bf8"); } std::pair getODSOperandIndexAndLength(unsigned index) { return {index, 1}; } ::mlir::Operation::operand_range getODSOperands(unsigned index) { auto valueRange = getODSOperandIndexAndLength(index); return {std::next(getOperation()->operand_begin(), valueRange.first), std::next(getOperation()->operand_begin(), valueRange.first + valueRange.second)}; } ::mlir::TypedValue<::mlir::VectorType> getSrc() { return ::llvm::cast<::mlir::TypedValue<::mlir::VectorType>>(*getODSOperands(0).begin()); } ::mlir::TypedValue<::mlir::IntegerType> getScale() { return ::llvm::cast<::mlir::TypedValue<::mlir::IntegerType>>(*getODSOperands(1).begin()); } ::mlir::OpOperand &getSrcMutable() { auto range = getODSOperandIndexAndLength(0); return getOperation()->getOpOperand(range.first); } ::mlir::OpOperand &getScaleMutable() { auto range = getODSOperandIndexAndLength(1); return getOperation()->getOpOperand(range.first); } std::pair getODSResultIndexAndLength(unsigned index) { return {index, 1}; } ::mlir::Operation::result_range getODSResults(unsigned index) { auto valueRange = getODSResultIndexAndLength(index); return {std::next(getOperation()->result_begin(), valueRange.first), std::next(getOperation()->result_begin(), valueRange.first + valueRange.second)}; } ::mlir::TypedValue<::mlir::VectorType> getRes() { return ::llvm::cast<::mlir::TypedValue<::mlir::VectorType>>(*getODSResults(0).begin()); } static ::llvm::LogicalResult setPropertiesFromAttr(Properties &prop, ::mlir::Attribute attr, ::llvm::function_ref<::mlir::InFlightDiagnostic()> emitError); static ::mlir::Attribute getPropertiesAsAttr(::mlir::MLIRContext *ctx, const Properties &prop); static llvm::hash_code computePropertiesHash(const Properties &prop); static std::optional getInherentAttr(::mlir::MLIRContext *ctx, const Properties &prop, llvm::StringRef name); static void setInherentAttr(Properties &prop, llvm::StringRef name, mlir::Attribute value); static void populateInherentAttrs(::mlir::MLIRContext *ctx, const Properties &prop, ::mlir::NamedAttrList &attrs); static ::llvm::LogicalResult verifyInherentAttrs(::mlir::OperationName opName, ::mlir::NamedAttrList &attrs, llvm::function_ref<::mlir::InFlightDiagnostic()> emitError); static ::llvm::LogicalResult readProperties(::mlir::DialectBytecodeReader &reader, ::mlir::OperationState &state); void writeProperties(::mlir::DialectBytecodeWriter &writer); ::mlir::IntegerAttr getScaleSelAttr() { return ::llvm::cast<::mlir::IntegerAttr>(getProperties().scaleSel); } uint32_t getScaleSel(); void setScaleSelAttr(::mlir::IntegerAttr attr) { getProperties().scaleSel = attr; } void setScaleSel(uint32_t attrValue); static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::Type res, ::mlir::Value src, ::mlir::Value scale, ::mlir::IntegerAttr scaleSel); static CvtPkScalePk8Bf16Bf8Op create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::Type res, ::mlir::Value src, ::mlir::Value scale, ::mlir::IntegerAttr scaleSel); static CvtPkScalePk8Bf16Bf8Op create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::Type res, ::mlir::Value src, ::mlir::Value scale, ::mlir::IntegerAttr scaleSel); static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::Value src, ::mlir::Value scale, ::mlir::IntegerAttr scaleSel); static CvtPkScalePk8Bf16Bf8Op create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::Value src, ::mlir::Value scale, ::mlir::IntegerAttr scaleSel); static CvtPkScalePk8Bf16Bf8Op create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::Value src, ::mlir::Value scale, ::mlir::IntegerAttr scaleSel); static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::Type res, ::mlir::Value src, ::mlir::Value scale, uint32_t scaleSel); static CvtPkScalePk8Bf16Bf8Op create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::Type res, ::mlir::Value src, ::mlir::Value scale, uint32_t scaleSel); static CvtPkScalePk8Bf16Bf8Op create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::Type res, ::mlir::Value src, ::mlir::Value scale, uint32_t scaleSel); static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::Value src, ::mlir::Value scale, uint32_t scaleSel); static CvtPkScalePk8Bf16Bf8Op create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::Value src, ::mlir::Value scale, uint32_t scaleSel); static CvtPkScalePk8Bf16Bf8Op create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::Value src, ::mlir::Value scale, uint32_t scaleSel); static void build(::mlir::OpBuilder &, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, ::llvm::ArrayRef<::mlir::NamedAttribute> attributes = {}); static CvtPkScalePk8Bf16Bf8Op create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, ::llvm::ArrayRef<::mlir::NamedAttribute> attributes = {}); static CvtPkScalePk8Bf16Bf8Op create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, ::llvm::ArrayRef<::mlir::NamedAttribute> attributes = {}); static void build(::mlir::OpBuilder &, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, const Properties &properties, ::llvm::ArrayRef<::mlir::NamedAttribute> discardableAttributes = {}); static CvtPkScalePk8Bf16Bf8Op create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, const Properties &properties, ::llvm::ArrayRef<::mlir::NamedAttribute> discardableAttributes = {}); static CvtPkScalePk8Bf16Bf8Op create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, const Properties &properties, ::llvm::ArrayRef<::mlir::NamedAttribute> discardableAttributes = {}); ::llvm::LogicalResult verifyInvariantsImpl(); ::llvm::LogicalResult verifyInvariants(); static ::mlir::ParseResult parse(::mlir::OpAsmParser &parser, ::mlir::OperationState &result); void print(::mlir::OpAsmPrinter &_odsPrinter); void getEffects(::llvm::SmallVectorImpl<::mlir::SideEffects::EffectInstance<::mlir::MemoryEffects::Effect>> &effects); private: ::mlir::StringAttr getAttributeNameForIndex(unsigned index) { return getAttributeNameForIndex((*this)->getName(), index); } static ::mlir::StringAttr getAttributeNameForIndex(::mlir::OperationName name, unsigned index) { assert(index < 1 && "invalid attribute index"); assert(name.getStringRef() == getOperationName() && "invalid operation name"); assert(name.isRegistered() && "Operation isn't registered, missing a " "dependent dialect loading?"); return name.getAttributeNames()[index]; } public: }; } // namespace mlir::ROCDL MLIR_DECLARE_EXPLICIT_TYPE_ID(::mlir::ROCDL::CvtPkScalePk8Bf16Bf8Op) MLIR_DECLARE_EXPLICIT_TYPE_ID(::mlir::ROCDL::detail::CvtPkScalePk8Bf16Bf8OpGenericAdaptorBase::Properties) namespace mlir::ROCDL { //===----------------------------------------------------------------------===// // ::mlir::ROCDL::CvtPkScalePk8Bf16Fp4Op declarations //===----------------------------------------------------------------------===// namespace detail { class CvtPkScalePk8Bf16Fp4OpGenericAdaptorBase { public: struct Properties { using scaleSelTy = ::mlir::IntegerAttr; scaleSelTy scaleSel; auto getScaleSel() const { auto &propStorage = this->scaleSel; return ::llvm::cast<::mlir::IntegerAttr>(propStorage); } void setScaleSel(const ::mlir::IntegerAttr &propValue) { this->scaleSel = propValue; } bool operator==(const Properties &rhs) const { return rhs.scaleSel == this->scaleSel && true; } bool operator!=(const Properties &rhs) const { return !(*this == rhs); } }; protected: ::mlir::DictionaryAttr odsAttrs; ::std::optional<::mlir::OperationName> odsOpName; Properties properties; ::mlir::RegionRange odsRegions; public: CvtPkScalePk8Bf16Fp4OpGenericAdaptorBase(::mlir::DictionaryAttr attrs, const Properties &properties, ::mlir::RegionRange regions = {}) : odsAttrs(attrs), properties(properties), odsRegions(regions) { if (odsAttrs) odsOpName.emplace("rocdl.cvt.scale.pk8.bf16.fp4", odsAttrs.getContext()); } CvtPkScalePk8Bf16Fp4OpGenericAdaptorBase(CvtPkScalePk8Bf16Fp4Op op); std::pair getODSOperandIndexAndLength(unsigned index, unsigned odsOperandsSize) { return {index, 1}; } const Properties &getProperties() { return properties; } ::mlir::DictionaryAttr getAttributes() { return odsAttrs; } ::mlir::IntegerAttr getScaleSelAttr() { auto attr = ::llvm::cast<::mlir::IntegerAttr>(getProperties().scaleSel); return attr; } uint32_t getScaleSel(); }; } // namespace detail template class CvtPkScalePk8Bf16Fp4OpGenericAdaptor : public detail::CvtPkScalePk8Bf16Fp4OpGenericAdaptorBase { using ValueT = ::llvm::detail::ValueOfRange; using Base = detail::CvtPkScalePk8Bf16Fp4OpGenericAdaptorBase; static constexpr int odsIndex_src = 0; static constexpr int odsIndex_scale = 1; public: CvtPkScalePk8Bf16Fp4OpGenericAdaptor(RangeT values, ::mlir::DictionaryAttr attrs, const Properties &properties, ::mlir::RegionRange regions = {}) : Base(attrs, properties, regions), odsOperands(values) {} CvtPkScalePk8Bf16Fp4OpGenericAdaptor(RangeT values, ::mlir::DictionaryAttr attrs, ::mlir::PropertyRef properties, ::mlir::RegionRange regions = {}) : CvtPkScalePk8Bf16Fp4OpGenericAdaptor(values, attrs, (properties ? *properties.as() : Properties{}), regions) {} CvtPkScalePk8Bf16Fp4OpGenericAdaptor(RangeT values, ::mlir::DictionaryAttr attrs = nullptr) : CvtPkScalePk8Bf16Fp4OpGenericAdaptor(values, attrs, Properties{}, {}) {} CvtPkScalePk8Bf16Fp4OpGenericAdaptor(RangeT values, const CvtPkScalePk8Bf16Fp4OpGenericAdaptorBase &base) : Base(base), odsOperands(values) {} template >> CvtPkScalePk8Bf16Fp4OpGenericAdaptor(RangeT values, LateInst op) : Base(op), odsOperands(values) {} std::pair getODSOperandIndexAndLength(unsigned index) { return Base::getODSOperandIndexAndLength(index, odsOperands.size()); } RangeT getODSOperands(unsigned index) { auto valueRange = getODSOperandIndexAndLength(index); return {std::next(odsOperands.begin(), valueRange.first), std::next(odsOperands.begin(), valueRange.first + valueRange.second)}; } ValueT getSrc() { return (*getODSOperands(0).begin()); } ValueT getScale() { return (*getODSOperands(1).begin()); } RangeT getOperands() { return odsOperands; } private: RangeT odsOperands; }; class CvtPkScalePk8Bf16Fp4OpAdaptor : public CvtPkScalePk8Bf16Fp4OpGenericAdaptor<::mlir::ValueRange> { public: using CvtPkScalePk8Bf16Fp4OpGenericAdaptor::CvtPkScalePk8Bf16Fp4OpGenericAdaptor; CvtPkScalePk8Bf16Fp4OpAdaptor(CvtPkScalePk8Bf16Fp4Op op); ::llvm::LogicalResult verify(::mlir::Location loc); }; class CvtPkScalePk8Bf16Fp4Op : public ::mlir::Op::Impl, ::mlir::OpTrait::ZeroSuccessors, ::mlir::OpTrait::NOperands<2>::Impl, ::mlir::OpTrait::OpInvariants, ::mlir::BytecodeOpInterface::Trait, ::mlir::ConditionallySpeculatable::Trait, ::mlir::OpTrait::AlwaysSpeculatableImplTrait, ::mlir::MemoryEffectOpInterface::Trait> { public: using Op::Op; using Op::print; using Adaptor = CvtPkScalePk8Bf16Fp4OpAdaptor; template using GenericAdaptor = CvtPkScalePk8Bf16Fp4OpGenericAdaptor; using FoldAdaptor = GenericAdaptor<::llvm::ArrayRef<::mlir::Attribute>>; static constexpr int odsIndex_src = 0; static constexpr int odsIndex_scale = 1; using Properties = FoldAdaptor::Properties; static ::llvm::ArrayRef<::llvm::StringRef> getAttributeNames() { static ::llvm::StringRef attrNames[] = {::llvm::StringRef("scaleSel")}; return ::llvm::ArrayRef(attrNames); } ::mlir::StringAttr getScaleSelAttrName() { return getAttributeNameForIndex(0); } static ::mlir::StringAttr getScaleSelAttrName(::mlir::OperationName name) { return getAttributeNameForIndex(name, 0); } static constexpr ::llvm::StringLiteral getOperationName() { return ::llvm::StringLiteral("rocdl.cvt.scale.pk8.bf16.fp4"); } std::pair getODSOperandIndexAndLength(unsigned index) { return {index, 1}; } ::mlir::Operation::operand_range getODSOperands(unsigned index) { auto valueRange = getODSOperandIndexAndLength(index); return {std::next(getOperation()->operand_begin(), valueRange.first), std::next(getOperation()->operand_begin(), valueRange.first + valueRange.second)}; } ::mlir::TypedValue<::mlir::IntegerType> getSrc() { return ::llvm::cast<::mlir::TypedValue<::mlir::IntegerType>>(*getODSOperands(0).begin()); } ::mlir::TypedValue<::mlir::IntegerType> getScale() { return ::llvm::cast<::mlir::TypedValue<::mlir::IntegerType>>(*getODSOperands(1).begin()); } ::mlir::OpOperand &getSrcMutable() { auto range = getODSOperandIndexAndLength(0); return getOperation()->getOpOperand(range.first); } ::mlir::OpOperand &getScaleMutable() { auto range = getODSOperandIndexAndLength(1); return getOperation()->getOpOperand(range.first); } std::pair getODSResultIndexAndLength(unsigned index) { return {index, 1}; } ::mlir::Operation::result_range getODSResults(unsigned index) { auto valueRange = getODSResultIndexAndLength(index); return {std::next(getOperation()->result_begin(), valueRange.first), std::next(getOperation()->result_begin(), valueRange.first + valueRange.second)}; } ::mlir::TypedValue<::mlir::VectorType> getRes() { return ::llvm::cast<::mlir::TypedValue<::mlir::VectorType>>(*getODSResults(0).begin()); } static ::llvm::LogicalResult setPropertiesFromAttr(Properties &prop, ::mlir::Attribute attr, ::llvm::function_ref<::mlir::InFlightDiagnostic()> emitError); static ::mlir::Attribute getPropertiesAsAttr(::mlir::MLIRContext *ctx, const Properties &prop); static llvm::hash_code computePropertiesHash(const Properties &prop); static std::optional getInherentAttr(::mlir::MLIRContext *ctx, const Properties &prop, llvm::StringRef name); static void setInherentAttr(Properties &prop, llvm::StringRef name, mlir::Attribute value); static void populateInherentAttrs(::mlir::MLIRContext *ctx, const Properties &prop, ::mlir::NamedAttrList &attrs); static ::llvm::LogicalResult verifyInherentAttrs(::mlir::OperationName opName, ::mlir::NamedAttrList &attrs, llvm::function_ref<::mlir::InFlightDiagnostic()> emitError); static ::llvm::LogicalResult readProperties(::mlir::DialectBytecodeReader &reader, ::mlir::OperationState &state); void writeProperties(::mlir::DialectBytecodeWriter &writer); ::mlir::IntegerAttr getScaleSelAttr() { return ::llvm::cast<::mlir::IntegerAttr>(getProperties().scaleSel); } uint32_t getScaleSel(); void setScaleSelAttr(::mlir::IntegerAttr attr) { getProperties().scaleSel = attr; } void setScaleSel(uint32_t attrValue); static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::Type res, ::mlir::Value src, ::mlir::Value scale, ::mlir::IntegerAttr scaleSel); static CvtPkScalePk8Bf16Fp4Op create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::Type res, ::mlir::Value src, ::mlir::Value scale, ::mlir::IntegerAttr scaleSel); static CvtPkScalePk8Bf16Fp4Op create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::Type res, ::mlir::Value src, ::mlir::Value scale, ::mlir::IntegerAttr scaleSel); static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::Value src, ::mlir::Value scale, ::mlir::IntegerAttr scaleSel); static CvtPkScalePk8Bf16Fp4Op create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::Value src, ::mlir::Value scale, ::mlir::IntegerAttr scaleSel); static CvtPkScalePk8Bf16Fp4Op create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::Value src, ::mlir::Value scale, ::mlir::IntegerAttr scaleSel); static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::Type res, ::mlir::Value src, ::mlir::Value scale, uint32_t scaleSel); static CvtPkScalePk8Bf16Fp4Op create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::Type res, ::mlir::Value src, ::mlir::Value scale, uint32_t scaleSel); static CvtPkScalePk8Bf16Fp4Op create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::Type res, ::mlir::Value src, ::mlir::Value scale, uint32_t scaleSel); static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::Value src, ::mlir::Value scale, uint32_t scaleSel); static CvtPkScalePk8Bf16Fp4Op create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::Value src, ::mlir::Value scale, uint32_t scaleSel); static CvtPkScalePk8Bf16Fp4Op create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::Value src, ::mlir::Value scale, uint32_t scaleSel); static void build(::mlir::OpBuilder &, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, ::llvm::ArrayRef<::mlir::NamedAttribute> attributes = {}); static CvtPkScalePk8Bf16Fp4Op create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, ::llvm::ArrayRef<::mlir::NamedAttribute> attributes = {}); static CvtPkScalePk8Bf16Fp4Op create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, ::llvm::ArrayRef<::mlir::NamedAttribute> attributes = {}); static void build(::mlir::OpBuilder &, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, const Properties &properties, ::llvm::ArrayRef<::mlir::NamedAttribute> discardableAttributes = {}); static CvtPkScalePk8Bf16Fp4Op create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, const Properties &properties, ::llvm::ArrayRef<::mlir::NamedAttribute> discardableAttributes = {}); static CvtPkScalePk8Bf16Fp4Op create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, const Properties &properties, ::llvm::ArrayRef<::mlir::NamedAttribute> discardableAttributes = {}); ::llvm::LogicalResult verifyInvariantsImpl(); ::llvm::LogicalResult verifyInvariants(); static ::mlir::ParseResult parse(::mlir::OpAsmParser &parser, ::mlir::OperationState &result); void print(::mlir::OpAsmPrinter &_odsPrinter); void getEffects(::llvm::SmallVectorImpl<::mlir::SideEffects::EffectInstance<::mlir::MemoryEffects::Effect>> &effects); private: ::mlir::StringAttr getAttributeNameForIndex(unsigned index) { return getAttributeNameForIndex((*this)->getName(), index); } static ::mlir::StringAttr getAttributeNameForIndex(::mlir::OperationName name, unsigned index) { assert(index < 1 && "invalid attribute index"); assert(name.getStringRef() == getOperationName() && "invalid operation name"); assert(name.isRegistered() && "Operation isn't registered, missing a " "dependent dialect loading?"); return name.getAttributeNames()[index]; } public: }; } // namespace mlir::ROCDL MLIR_DECLARE_EXPLICIT_TYPE_ID(::mlir::ROCDL::CvtPkScalePk8Bf16Fp4Op) MLIR_DECLARE_EXPLICIT_TYPE_ID(::mlir::ROCDL::detail::CvtPkScalePk8Bf16Fp4OpGenericAdaptorBase::Properties) namespace mlir::ROCDL { //===----------------------------------------------------------------------===// // ::mlir::ROCDL::CvtPkScalePk8Bf16Fp8Op declarations //===----------------------------------------------------------------------===// namespace detail { class CvtPkScalePk8Bf16Fp8OpGenericAdaptorBase { public: struct Properties { using scaleSelTy = ::mlir::IntegerAttr; scaleSelTy scaleSel; auto getScaleSel() const { auto &propStorage = this->scaleSel; return ::llvm::cast<::mlir::IntegerAttr>(propStorage); } void setScaleSel(const ::mlir::IntegerAttr &propValue) { this->scaleSel = propValue; } bool operator==(const Properties &rhs) const { return rhs.scaleSel == this->scaleSel && true; } bool operator!=(const Properties &rhs) const { return !(*this == rhs); } }; protected: ::mlir::DictionaryAttr odsAttrs; ::std::optional<::mlir::OperationName> odsOpName; Properties properties; ::mlir::RegionRange odsRegions; public: CvtPkScalePk8Bf16Fp8OpGenericAdaptorBase(::mlir::DictionaryAttr attrs, const Properties &properties, ::mlir::RegionRange regions = {}) : odsAttrs(attrs), properties(properties), odsRegions(regions) { if (odsAttrs) odsOpName.emplace("rocdl.cvt.scale.pk8.bf16.fp8", odsAttrs.getContext()); } CvtPkScalePk8Bf16Fp8OpGenericAdaptorBase(CvtPkScalePk8Bf16Fp8Op op); std::pair getODSOperandIndexAndLength(unsigned index, unsigned odsOperandsSize) { return {index, 1}; } const Properties &getProperties() { return properties; } ::mlir::DictionaryAttr getAttributes() { return odsAttrs; } ::mlir::IntegerAttr getScaleSelAttr() { auto attr = ::llvm::cast<::mlir::IntegerAttr>(getProperties().scaleSel); return attr; } uint32_t getScaleSel(); }; } // namespace detail template class CvtPkScalePk8Bf16Fp8OpGenericAdaptor : public detail::CvtPkScalePk8Bf16Fp8OpGenericAdaptorBase { using ValueT = ::llvm::detail::ValueOfRange; using Base = detail::CvtPkScalePk8Bf16Fp8OpGenericAdaptorBase; static constexpr int odsIndex_src = 0; static constexpr int odsIndex_scale = 1; public: CvtPkScalePk8Bf16Fp8OpGenericAdaptor(RangeT values, ::mlir::DictionaryAttr attrs, const Properties &properties, ::mlir::RegionRange regions = {}) : Base(attrs, properties, regions), odsOperands(values) {} CvtPkScalePk8Bf16Fp8OpGenericAdaptor(RangeT values, ::mlir::DictionaryAttr attrs, ::mlir::PropertyRef properties, ::mlir::RegionRange regions = {}) : CvtPkScalePk8Bf16Fp8OpGenericAdaptor(values, attrs, (properties ? *properties.as() : Properties{}), regions) {} CvtPkScalePk8Bf16Fp8OpGenericAdaptor(RangeT values, ::mlir::DictionaryAttr attrs = nullptr) : CvtPkScalePk8Bf16Fp8OpGenericAdaptor(values, attrs, Properties{}, {}) {} CvtPkScalePk8Bf16Fp8OpGenericAdaptor(RangeT values, const CvtPkScalePk8Bf16Fp8OpGenericAdaptorBase &base) : Base(base), odsOperands(values) {} template >> CvtPkScalePk8Bf16Fp8OpGenericAdaptor(RangeT values, LateInst op) : Base(op), odsOperands(values) {} std::pair getODSOperandIndexAndLength(unsigned index) { return Base::getODSOperandIndexAndLength(index, odsOperands.size()); } RangeT getODSOperands(unsigned index) { auto valueRange = getODSOperandIndexAndLength(index); return {std::next(odsOperands.begin(), valueRange.first), std::next(odsOperands.begin(), valueRange.first + valueRange.second)}; } ValueT getSrc() { return (*getODSOperands(0).begin()); } ValueT getScale() { return (*getODSOperands(1).begin()); } RangeT getOperands() { return odsOperands; } private: RangeT odsOperands; }; class CvtPkScalePk8Bf16Fp8OpAdaptor : public CvtPkScalePk8Bf16Fp8OpGenericAdaptor<::mlir::ValueRange> { public: using CvtPkScalePk8Bf16Fp8OpGenericAdaptor::CvtPkScalePk8Bf16Fp8OpGenericAdaptor; CvtPkScalePk8Bf16Fp8OpAdaptor(CvtPkScalePk8Bf16Fp8Op op); ::llvm::LogicalResult verify(::mlir::Location loc); }; class CvtPkScalePk8Bf16Fp8Op : public ::mlir::Op::Impl, ::mlir::OpTrait::ZeroSuccessors, ::mlir::OpTrait::NOperands<2>::Impl, ::mlir::OpTrait::OpInvariants, ::mlir::BytecodeOpInterface::Trait, ::mlir::ConditionallySpeculatable::Trait, ::mlir::OpTrait::AlwaysSpeculatableImplTrait, ::mlir::MemoryEffectOpInterface::Trait> { public: using Op::Op; using Op::print; using Adaptor = CvtPkScalePk8Bf16Fp8OpAdaptor; template using GenericAdaptor = CvtPkScalePk8Bf16Fp8OpGenericAdaptor; using FoldAdaptor = GenericAdaptor<::llvm::ArrayRef<::mlir::Attribute>>; static constexpr int odsIndex_src = 0; static constexpr int odsIndex_scale = 1; using Properties = FoldAdaptor::Properties; static ::llvm::ArrayRef<::llvm::StringRef> getAttributeNames() { static ::llvm::StringRef attrNames[] = {::llvm::StringRef("scaleSel")}; return ::llvm::ArrayRef(attrNames); } ::mlir::StringAttr getScaleSelAttrName() { return getAttributeNameForIndex(0); } static ::mlir::StringAttr getScaleSelAttrName(::mlir::OperationName name) { return getAttributeNameForIndex(name, 0); } static constexpr ::llvm::StringLiteral getOperationName() { return ::llvm::StringLiteral("rocdl.cvt.scale.pk8.bf16.fp8"); } std::pair getODSOperandIndexAndLength(unsigned index) { return {index, 1}; } ::mlir::Operation::operand_range getODSOperands(unsigned index) { auto valueRange = getODSOperandIndexAndLength(index); return {std::next(getOperation()->operand_begin(), valueRange.first), std::next(getOperation()->operand_begin(), valueRange.first + valueRange.second)}; } ::mlir::TypedValue<::mlir::VectorType> getSrc() { return ::llvm::cast<::mlir::TypedValue<::mlir::VectorType>>(*getODSOperands(0).begin()); } ::mlir::TypedValue<::mlir::IntegerType> getScale() { return ::llvm::cast<::mlir::TypedValue<::mlir::IntegerType>>(*getODSOperands(1).begin()); } ::mlir::OpOperand &getSrcMutable() { auto range = getODSOperandIndexAndLength(0); return getOperation()->getOpOperand(range.first); } ::mlir::OpOperand &getScaleMutable() { auto range = getODSOperandIndexAndLength(1); return getOperation()->getOpOperand(range.first); } std::pair getODSResultIndexAndLength(unsigned index) { return {index, 1}; } ::mlir::Operation::result_range getODSResults(unsigned index) { auto valueRange = getODSResultIndexAndLength(index); return {std::next(getOperation()->result_begin(), valueRange.first), std::next(getOperation()->result_begin(), valueRange.first + valueRange.second)}; } ::mlir::TypedValue<::mlir::VectorType> getRes() { return ::llvm::cast<::mlir::TypedValue<::mlir::VectorType>>(*getODSResults(0).begin()); } static ::llvm::LogicalResult setPropertiesFromAttr(Properties &prop, ::mlir::Attribute attr, ::llvm::function_ref<::mlir::InFlightDiagnostic()> emitError); static ::mlir::Attribute getPropertiesAsAttr(::mlir::MLIRContext *ctx, const Properties &prop); static llvm::hash_code computePropertiesHash(const Properties &prop); static std::optional getInherentAttr(::mlir::MLIRContext *ctx, const Properties &prop, llvm::StringRef name); static void setInherentAttr(Properties &prop, llvm::StringRef name, mlir::Attribute value); static void populateInherentAttrs(::mlir::MLIRContext *ctx, const Properties &prop, ::mlir::NamedAttrList &attrs); static ::llvm::LogicalResult verifyInherentAttrs(::mlir::OperationName opName, ::mlir::NamedAttrList &attrs, llvm::function_ref<::mlir::InFlightDiagnostic()> emitError); static ::llvm::LogicalResult readProperties(::mlir::DialectBytecodeReader &reader, ::mlir::OperationState &state); void writeProperties(::mlir::DialectBytecodeWriter &writer); ::mlir::IntegerAttr getScaleSelAttr() { return ::llvm::cast<::mlir::IntegerAttr>(getProperties().scaleSel); } uint32_t getScaleSel(); void setScaleSelAttr(::mlir::IntegerAttr attr) { getProperties().scaleSel = attr; } void setScaleSel(uint32_t attrValue); static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::Type res, ::mlir::Value src, ::mlir::Value scale, ::mlir::IntegerAttr scaleSel); static CvtPkScalePk8Bf16Fp8Op create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::Type res, ::mlir::Value src, ::mlir::Value scale, ::mlir::IntegerAttr scaleSel); static CvtPkScalePk8Bf16Fp8Op create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::Type res, ::mlir::Value src, ::mlir::Value scale, ::mlir::IntegerAttr scaleSel); static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::Value src, ::mlir::Value scale, ::mlir::IntegerAttr scaleSel); static CvtPkScalePk8Bf16Fp8Op create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::Value src, ::mlir::Value scale, ::mlir::IntegerAttr scaleSel); static CvtPkScalePk8Bf16Fp8Op create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::Value src, ::mlir::Value scale, ::mlir::IntegerAttr scaleSel); static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::Type res, ::mlir::Value src, ::mlir::Value scale, uint32_t scaleSel); static CvtPkScalePk8Bf16Fp8Op create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::Type res, ::mlir::Value src, ::mlir::Value scale, uint32_t scaleSel); static CvtPkScalePk8Bf16Fp8Op create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::Type res, ::mlir::Value src, ::mlir::Value scale, uint32_t scaleSel); static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::Value src, ::mlir::Value scale, uint32_t scaleSel); static CvtPkScalePk8Bf16Fp8Op create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::Value src, ::mlir::Value scale, uint32_t scaleSel); static CvtPkScalePk8Bf16Fp8Op create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::Value src, ::mlir::Value scale, uint32_t scaleSel); static void build(::mlir::OpBuilder &, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, ::llvm::ArrayRef<::mlir::NamedAttribute> attributes = {}); static CvtPkScalePk8Bf16Fp8Op create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, ::llvm::ArrayRef<::mlir::NamedAttribute> attributes = {}); static CvtPkScalePk8Bf16Fp8Op create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, ::llvm::ArrayRef<::mlir::NamedAttribute> attributes = {}); static void build(::mlir::OpBuilder &, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, const Properties &properties, ::llvm::ArrayRef<::mlir::NamedAttribute> discardableAttributes = {}); static CvtPkScalePk8Bf16Fp8Op create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, const Properties &properties, ::llvm::ArrayRef<::mlir::NamedAttribute> discardableAttributes = {}); static CvtPkScalePk8Bf16Fp8Op create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, const Properties &properties, ::llvm::ArrayRef<::mlir::NamedAttribute> discardableAttributes = {}); ::llvm::LogicalResult verifyInvariantsImpl(); ::llvm::LogicalResult verifyInvariants(); static ::mlir::ParseResult parse(::mlir::OpAsmParser &parser, ::mlir::OperationState &result); void print(::mlir::OpAsmPrinter &_odsPrinter); void getEffects(::llvm::SmallVectorImpl<::mlir::SideEffects::EffectInstance<::mlir::MemoryEffects::Effect>> &effects); private: ::mlir::StringAttr getAttributeNameForIndex(unsigned index) { return getAttributeNameForIndex((*this)->getName(), index); } static ::mlir::StringAttr getAttributeNameForIndex(::mlir::OperationName name, unsigned index) { assert(index < 1 && "invalid attribute index"); assert(name.getStringRef() == getOperationName() && "invalid operation name"); assert(name.isRegistered() && "Operation isn't registered, missing a " "dependent dialect loading?"); return name.getAttributeNames()[index]; } public: }; } // namespace mlir::ROCDL MLIR_DECLARE_EXPLICIT_TYPE_ID(::mlir::ROCDL::CvtPkScalePk8Bf16Fp8Op) MLIR_DECLARE_EXPLICIT_TYPE_ID(::mlir::ROCDL::detail::CvtPkScalePk8Bf16Fp8OpGenericAdaptorBase::Properties) namespace mlir::ROCDL { //===----------------------------------------------------------------------===// // ::mlir::ROCDL::CvtPkScalePk8F16Bf8Op declarations //===----------------------------------------------------------------------===// namespace detail { class CvtPkScalePk8F16Bf8OpGenericAdaptorBase { public: struct Properties { using scaleSelTy = ::mlir::IntegerAttr; scaleSelTy scaleSel; auto getScaleSel() const { auto &propStorage = this->scaleSel; return ::llvm::cast<::mlir::IntegerAttr>(propStorage); } void setScaleSel(const ::mlir::IntegerAttr &propValue) { this->scaleSel = propValue; } bool operator==(const Properties &rhs) const { return rhs.scaleSel == this->scaleSel && true; } bool operator!=(const Properties &rhs) const { return !(*this == rhs); } }; protected: ::mlir::DictionaryAttr odsAttrs; ::std::optional<::mlir::OperationName> odsOpName; Properties properties; ::mlir::RegionRange odsRegions; public: CvtPkScalePk8F16Bf8OpGenericAdaptorBase(::mlir::DictionaryAttr attrs, const Properties &properties, ::mlir::RegionRange regions = {}) : odsAttrs(attrs), properties(properties), odsRegions(regions) { if (odsAttrs) odsOpName.emplace("rocdl.cvt.scale.pk8.f16.bf8", odsAttrs.getContext()); } CvtPkScalePk8F16Bf8OpGenericAdaptorBase(CvtPkScalePk8F16Bf8Op op); std::pair getODSOperandIndexAndLength(unsigned index, unsigned odsOperandsSize) { return {index, 1}; } const Properties &getProperties() { return properties; } ::mlir::DictionaryAttr getAttributes() { return odsAttrs; } ::mlir::IntegerAttr getScaleSelAttr() { auto attr = ::llvm::cast<::mlir::IntegerAttr>(getProperties().scaleSel); return attr; } uint32_t getScaleSel(); }; } // namespace detail template class CvtPkScalePk8F16Bf8OpGenericAdaptor : public detail::CvtPkScalePk8F16Bf8OpGenericAdaptorBase { using ValueT = ::llvm::detail::ValueOfRange; using Base = detail::CvtPkScalePk8F16Bf8OpGenericAdaptorBase; static constexpr int odsIndex_src = 0; static constexpr int odsIndex_scale = 1; public: CvtPkScalePk8F16Bf8OpGenericAdaptor(RangeT values, ::mlir::DictionaryAttr attrs, const Properties &properties, ::mlir::RegionRange regions = {}) : Base(attrs, properties, regions), odsOperands(values) {} CvtPkScalePk8F16Bf8OpGenericAdaptor(RangeT values, ::mlir::DictionaryAttr attrs, ::mlir::PropertyRef properties, ::mlir::RegionRange regions = {}) : CvtPkScalePk8F16Bf8OpGenericAdaptor(values, attrs, (properties ? *properties.as() : Properties{}), regions) {} CvtPkScalePk8F16Bf8OpGenericAdaptor(RangeT values, ::mlir::DictionaryAttr attrs = nullptr) : CvtPkScalePk8F16Bf8OpGenericAdaptor(values, attrs, Properties{}, {}) {} CvtPkScalePk8F16Bf8OpGenericAdaptor(RangeT values, const CvtPkScalePk8F16Bf8OpGenericAdaptorBase &base) : Base(base), odsOperands(values) {} template >> CvtPkScalePk8F16Bf8OpGenericAdaptor(RangeT values, LateInst op) : Base(op), odsOperands(values) {} std::pair getODSOperandIndexAndLength(unsigned index) { return Base::getODSOperandIndexAndLength(index, odsOperands.size()); } RangeT getODSOperands(unsigned index) { auto valueRange = getODSOperandIndexAndLength(index); return {std::next(odsOperands.begin(), valueRange.first), std::next(odsOperands.begin(), valueRange.first + valueRange.second)}; } ValueT getSrc() { return (*getODSOperands(0).begin()); } ValueT getScale() { return (*getODSOperands(1).begin()); } RangeT getOperands() { return odsOperands; } private: RangeT odsOperands; }; class CvtPkScalePk8F16Bf8OpAdaptor : public CvtPkScalePk8F16Bf8OpGenericAdaptor<::mlir::ValueRange> { public: using CvtPkScalePk8F16Bf8OpGenericAdaptor::CvtPkScalePk8F16Bf8OpGenericAdaptor; CvtPkScalePk8F16Bf8OpAdaptor(CvtPkScalePk8F16Bf8Op op); ::llvm::LogicalResult verify(::mlir::Location loc); }; class CvtPkScalePk8F16Bf8Op : public ::mlir::Op::Impl, ::mlir::OpTrait::ZeroSuccessors, ::mlir::OpTrait::NOperands<2>::Impl, ::mlir::OpTrait::OpInvariants, ::mlir::BytecodeOpInterface::Trait, ::mlir::ConditionallySpeculatable::Trait, ::mlir::OpTrait::AlwaysSpeculatableImplTrait, ::mlir::MemoryEffectOpInterface::Trait> { public: using Op::Op; using Op::print; using Adaptor = CvtPkScalePk8F16Bf8OpAdaptor; template using GenericAdaptor = CvtPkScalePk8F16Bf8OpGenericAdaptor; using FoldAdaptor = GenericAdaptor<::llvm::ArrayRef<::mlir::Attribute>>; static constexpr int odsIndex_src = 0; static constexpr int odsIndex_scale = 1; using Properties = FoldAdaptor::Properties; static ::llvm::ArrayRef<::llvm::StringRef> getAttributeNames() { static ::llvm::StringRef attrNames[] = {::llvm::StringRef("scaleSel")}; return ::llvm::ArrayRef(attrNames); } ::mlir::StringAttr getScaleSelAttrName() { return getAttributeNameForIndex(0); } static ::mlir::StringAttr getScaleSelAttrName(::mlir::OperationName name) { return getAttributeNameForIndex(name, 0); } static constexpr ::llvm::StringLiteral getOperationName() { return ::llvm::StringLiteral("rocdl.cvt.scale.pk8.f16.bf8"); } std::pair getODSOperandIndexAndLength(unsigned index) { return {index, 1}; } ::mlir::Operation::operand_range getODSOperands(unsigned index) { auto valueRange = getODSOperandIndexAndLength(index); return {std::next(getOperation()->operand_begin(), valueRange.first), std::next(getOperation()->operand_begin(), valueRange.first + valueRange.second)}; } ::mlir::TypedValue<::mlir::VectorType> getSrc() { return ::llvm::cast<::mlir::TypedValue<::mlir::VectorType>>(*getODSOperands(0).begin()); } ::mlir::TypedValue<::mlir::IntegerType> getScale() { return ::llvm::cast<::mlir::TypedValue<::mlir::IntegerType>>(*getODSOperands(1).begin()); } ::mlir::OpOperand &getSrcMutable() { auto range = getODSOperandIndexAndLength(0); return getOperation()->getOpOperand(range.first); } ::mlir::OpOperand &getScaleMutable() { auto range = getODSOperandIndexAndLength(1); return getOperation()->getOpOperand(range.first); } std::pair getODSResultIndexAndLength(unsigned index) { return {index, 1}; } ::mlir::Operation::result_range getODSResults(unsigned index) { auto valueRange = getODSResultIndexAndLength(index); return {std::next(getOperation()->result_begin(), valueRange.first), std::next(getOperation()->result_begin(), valueRange.first + valueRange.second)}; } ::mlir::TypedValue<::mlir::VectorType> getRes() { return ::llvm::cast<::mlir::TypedValue<::mlir::VectorType>>(*getODSResults(0).begin()); } static ::llvm::LogicalResult setPropertiesFromAttr(Properties &prop, ::mlir::Attribute attr, ::llvm::function_ref<::mlir::InFlightDiagnostic()> emitError); static ::mlir::Attribute getPropertiesAsAttr(::mlir::MLIRContext *ctx, const Properties &prop); static llvm::hash_code computePropertiesHash(const Properties &prop); static std::optional getInherentAttr(::mlir::MLIRContext *ctx, const Properties &prop, llvm::StringRef name); static void setInherentAttr(Properties &prop, llvm::StringRef name, mlir::Attribute value); static void populateInherentAttrs(::mlir::MLIRContext *ctx, const Properties &prop, ::mlir::NamedAttrList &attrs); static ::llvm::LogicalResult verifyInherentAttrs(::mlir::OperationName opName, ::mlir::NamedAttrList &attrs, llvm::function_ref<::mlir::InFlightDiagnostic()> emitError); static ::llvm::LogicalResult readProperties(::mlir::DialectBytecodeReader &reader, ::mlir::OperationState &state); void writeProperties(::mlir::DialectBytecodeWriter &writer); ::mlir::IntegerAttr getScaleSelAttr() { return ::llvm::cast<::mlir::IntegerAttr>(getProperties().scaleSel); } uint32_t getScaleSel(); void setScaleSelAttr(::mlir::IntegerAttr attr) { getProperties().scaleSel = attr; } void setScaleSel(uint32_t attrValue); static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::Type res, ::mlir::Value src, ::mlir::Value scale, ::mlir::IntegerAttr scaleSel); static CvtPkScalePk8F16Bf8Op create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::Type res, ::mlir::Value src, ::mlir::Value scale, ::mlir::IntegerAttr scaleSel); static CvtPkScalePk8F16Bf8Op create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::Type res, ::mlir::Value src, ::mlir::Value scale, ::mlir::IntegerAttr scaleSel); static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::Value src, ::mlir::Value scale, ::mlir::IntegerAttr scaleSel); static CvtPkScalePk8F16Bf8Op create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::Value src, ::mlir::Value scale, ::mlir::IntegerAttr scaleSel); static CvtPkScalePk8F16Bf8Op create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::Value src, ::mlir::Value scale, ::mlir::IntegerAttr scaleSel); static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::Type res, ::mlir::Value src, ::mlir::Value scale, uint32_t scaleSel); static CvtPkScalePk8F16Bf8Op create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::Type res, ::mlir::Value src, ::mlir::Value scale, uint32_t scaleSel); static CvtPkScalePk8F16Bf8Op create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::Type res, ::mlir::Value src, ::mlir::Value scale, uint32_t scaleSel); static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::Value src, ::mlir::Value scale, uint32_t scaleSel); static CvtPkScalePk8F16Bf8Op create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::Value src, ::mlir::Value scale, uint32_t scaleSel); static CvtPkScalePk8F16Bf8Op create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::Value src, ::mlir::Value scale, uint32_t scaleSel); static void build(::mlir::OpBuilder &, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, ::llvm::ArrayRef<::mlir::NamedAttribute> attributes = {}); static CvtPkScalePk8F16Bf8Op create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, ::llvm::ArrayRef<::mlir::NamedAttribute> attributes = {}); static CvtPkScalePk8F16Bf8Op create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, ::llvm::ArrayRef<::mlir::NamedAttribute> attributes = {}); static void build(::mlir::OpBuilder &, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, const Properties &properties, ::llvm::ArrayRef<::mlir::NamedAttribute> discardableAttributes = {}); static CvtPkScalePk8F16Bf8Op create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, const Properties &properties, ::llvm::ArrayRef<::mlir::NamedAttribute> discardableAttributes = {}); static CvtPkScalePk8F16Bf8Op create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, const Properties &properties, ::llvm::ArrayRef<::mlir::NamedAttribute> discardableAttributes = {}); ::llvm::LogicalResult verifyInvariantsImpl(); ::llvm::LogicalResult verifyInvariants(); static ::mlir::ParseResult parse(::mlir::OpAsmParser &parser, ::mlir::OperationState &result); void print(::mlir::OpAsmPrinter &_odsPrinter); void getEffects(::llvm::SmallVectorImpl<::mlir::SideEffects::EffectInstance<::mlir::MemoryEffects::Effect>> &effects); private: ::mlir::StringAttr getAttributeNameForIndex(unsigned index) { return getAttributeNameForIndex((*this)->getName(), index); } static ::mlir::StringAttr getAttributeNameForIndex(::mlir::OperationName name, unsigned index) { assert(index < 1 && "invalid attribute index"); assert(name.getStringRef() == getOperationName() && "invalid operation name"); assert(name.isRegistered() && "Operation isn't registered, missing a " "dependent dialect loading?"); return name.getAttributeNames()[index]; } public: }; } // namespace mlir::ROCDL MLIR_DECLARE_EXPLICIT_TYPE_ID(::mlir::ROCDL::CvtPkScalePk8F16Bf8Op) MLIR_DECLARE_EXPLICIT_TYPE_ID(::mlir::ROCDL::detail::CvtPkScalePk8F16Bf8OpGenericAdaptorBase::Properties) namespace mlir::ROCDL { //===----------------------------------------------------------------------===// // ::mlir::ROCDL::CvtPkScalePk8F16Fp4Op declarations //===----------------------------------------------------------------------===// namespace detail { class CvtPkScalePk8F16Fp4OpGenericAdaptorBase { public: struct Properties { using scaleSelTy = ::mlir::IntegerAttr; scaleSelTy scaleSel; auto getScaleSel() const { auto &propStorage = this->scaleSel; return ::llvm::cast<::mlir::IntegerAttr>(propStorage); } void setScaleSel(const ::mlir::IntegerAttr &propValue) { this->scaleSel = propValue; } bool operator==(const Properties &rhs) const { return rhs.scaleSel == this->scaleSel && true; } bool operator!=(const Properties &rhs) const { return !(*this == rhs); } }; protected: ::mlir::DictionaryAttr odsAttrs; ::std::optional<::mlir::OperationName> odsOpName; Properties properties; ::mlir::RegionRange odsRegions; public: CvtPkScalePk8F16Fp4OpGenericAdaptorBase(::mlir::DictionaryAttr attrs, const Properties &properties, ::mlir::RegionRange regions = {}) : odsAttrs(attrs), properties(properties), odsRegions(regions) { if (odsAttrs) odsOpName.emplace("rocdl.cvt.scale.pk8.f16.fp4", odsAttrs.getContext()); } CvtPkScalePk8F16Fp4OpGenericAdaptorBase(CvtPkScalePk8F16Fp4Op op); std::pair getODSOperandIndexAndLength(unsigned index, unsigned odsOperandsSize) { return {index, 1}; } const Properties &getProperties() { return properties; } ::mlir::DictionaryAttr getAttributes() { return odsAttrs; } ::mlir::IntegerAttr getScaleSelAttr() { auto attr = ::llvm::cast<::mlir::IntegerAttr>(getProperties().scaleSel); return attr; } uint32_t getScaleSel(); }; } // namespace detail template class CvtPkScalePk8F16Fp4OpGenericAdaptor : public detail::CvtPkScalePk8F16Fp4OpGenericAdaptorBase { using ValueT = ::llvm::detail::ValueOfRange; using Base = detail::CvtPkScalePk8F16Fp4OpGenericAdaptorBase; static constexpr int odsIndex_src = 0; static constexpr int odsIndex_scale = 1; public: CvtPkScalePk8F16Fp4OpGenericAdaptor(RangeT values, ::mlir::DictionaryAttr attrs, const Properties &properties, ::mlir::RegionRange regions = {}) : Base(attrs, properties, regions), odsOperands(values) {} CvtPkScalePk8F16Fp4OpGenericAdaptor(RangeT values, ::mlir::DictionaryAttr attrs, ::mlir::PropertyRef properties, ::mlir::RegionRange regions = {}) : CvtPkScalePk8F16Fp4OpGenericAdaptor(values, attrs, (properties ? *properties.as() : Properties{}), regions) {} CvtPkScalePk8F16Fp4OpGenericAdaptor(RangeT values, ::mlir::DictionaryAttr attrs = nullptr) : CvtPkScalePk8F16Fp4OpGenericAdaptor(values, attrs, Properties{}, {}) {} CvtPkScalePk8F16Fp4OpGenericAdaptor(RangeT values, const CvtPkScalePk8F16Fp4OpGenericAdaptorBase &base) : Base(base), odsOperands(values) {} template >> CvtPkScalePk8F16Fp4OpGenericAdaptor(RangeT values, LateInst op) : Base(op), odsOperands(values) {} std::pair getODSOperandIndexAndLength(unsigned index) { return Base::getODSOperandIndexAndLength(index, odsOperands.size()); } RangeT getODSOperands(unsigned index) { auto valueRange = getODSOperandIndexAndLength(index); return {std::next(odsOperands.begin(), valueRange.first), std::next(odsOperands.begin(), valueRange.first + valueRange.second)}; } ValueT getSrc() { return (*getODSOperands(0).begin()); } ValueT getScale() { return (*getODSOperands(1).begin()); } RangeT getOperands() { return odsOperands; } private: RangeT odsOperands; }; class CvtPkScalePk8F16Fp4OpAdaptor : public CvtPkScalePk8F16Fp4OpGenericAdaptor<::mlir::ValueRange> { public: using CvtPkScalePk8F16Fp4OpGenericAdaptor::CvtPkScalePk8F16Fp4OpGenericAdaptor; CvtPkScalePk8F16Fp4OpAdaptor(CvtPkScalePk8F16Fp4Op op); ::llvm::LogicalResult verify(::mlir::Location loc); }; class CvtPkScalePk8F16Fp4Op : public ::mlir::Op::Impl, ::mlir::OpTrait::ZeroSuccessors, ::mlir::OpTrait::NOperands<2>::Impl, ::mlir::OpTrait::OpInvariants, ::mlir::BytecodeOpInterface::Trait, ::mlir::ConditionallySpeculatable::Trait, ::mlir::OpTrait::AlwaysSpeculatableImplTrait, ::mlir::MemoryEffectOpInterface::Trait> { public: using Op::Op; using Op::print; using Adaptor = CvtPkScalePk8F16Fp4OpAdaptor; template using GenericAdaptor = CvtPkScalePk8F16Fp4OpGenericAdaptor; using FoldAdaptor = GenericAdaptor<::llvm::ArrayRef<::mlir::Attribute>>; static constexpr int odsIndex_src = 0; static constexpr int odsIndex_scale = 1; using Properties = FoldAdaptor::Properties; static ::llvm::ArrayRef<::llvm::StringRef> getAttributeNames() { static ::llvm::StringRef attrNames[] = {::llvm::StringRef("scaleSel")}; return ::llvm::ArrayRef(attrNames); } ::mlir::StringAttr getScaleSelAttrName() { return getAttributeNameForIndex(0); } static ::mlir::StringAttr getScaleSelAttrName(::mlir::OperationName name) { return getAttributeNameForIndex(name, 0); } static constexpr ::llvm::StringLiteral getOperationName() { return ::llvm::StringLiteral("rocdl.cvt.scale.pk8.f16.fp4"); } std::pair getODSOperandIndexAndLength(unsigned index) { return {index, 1}; } ::mlir::Operation::operand_range getODSOperands(unsigned index) { auto valueRange = getODSOperandIndexAndLength(index); return {std::next(getOperation()->operand_begin(), valueRange.first), std::next(getOperation()->operand_begin(), valueRange.first + valueRange.second)}; } ::mlir::TypedValue<::mlir::IntegerType> getSrc() { return ::llvm::cast<::mlir::TypedValue<::mlir::IntegerType>>(*getODSOperands(0).begin()); } ::mlir::TypedValue<::mlir::IntegerType> getScale() { return ::llvm::cast<::mlir::TypedValue<::mlir::IntegerType>>(*getODSOperands(1).begin()); } ::mlir::OpOperand &getSrcMutable() { auto range = getODSOperandIndexAndLength(0); return getOperation()->getOpOperand(range.first); } ::mlir::OpOperand &getScaleMutable() { auto range = getODSOperandIndexAndLength(1); return getOperation()->getOpOperand(range.first); } std::pair getODSResultIndexAndLength(unsigned index) { return {index, 1}; } ::mlir::Operation::result_range getODSResults(unsigned index) { auto valueRange = getODSResultIndexAndLength(index); return {std::next(getOperation()->result_begin(), valueRange.first), std::next(getOperation()->result_begin(), valueRange.first + valueRange.second)}; } ::mlir::TypedValue<::mlir::VectorType> getRes() { return ::llvm::cast<::mlir::TypedValue<::mlir::VectorType>>(*getODSResults(0).begin()); } static ::llvm::LogicalResult setPropertiesFromAttr(Properties &prop, ::mlir::Attribute attr, ::llvm::function_ref<::mlir::InFlightDiagnostic()> emitError); static ::mlir::Attribute getPropertiesAsAttr(::mlir::MLIRContext *ctx, const Properties &prop); static llvm::hash_code computePropertiesHash(const Properties &prop); static std::optional getInherentAttr(::mlir::MLIRContext *ctx, const Properties &prop, llvm::StringRef name); static void setInherentAttr(Properties &prop, llvm::StringRef name, mlir::Attribute value); static void populateInherentAttrs(::mlir::MLIRContext *ctx, const Properties &prop, ::mlir::NamedAttrList &attrs); static ::llvm::LogicalResult verifyInherentAttrs(::mlir::OperationName opName, ::mlir::NamedAttrList &attrs, llvm::function_ref<::mlir::InFlightDiagnostic()> emitError); static ::llvm::LogicalResult readProperties(::mlir::DialectBytecodeReader &reader, ::mlir::OperationState &state); void writeProperties(::mlir::DialectBytecodeWriter &writer); ::mlir::IntegerAttr getScaleSelAttr() { return ::llvm::cast<::mlir::IntegerAttr>(getProperties().scaleSel); } uint32_t getScaleSel(); void setScaleSelAttr(::mlir::IntegerAttr attr) { getProperties().scaleSel = attr; } void setScaleSel(uint32_t attrValue); static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::Type res, ::mlir::Value src, ::mlir::Value scale, ::mlir::IntegerAttr scaleSel); static CvtPkScalePk8F16Fp4Op create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::Type res, ::mlir::Value src, ::mlir::Value scale, ::mlir::IntegerAttr scaleSel); static CvtPkScalePk8F16Fp4Op create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::Type res, ::mlir::Value src, ::mlir::Value scale, ::mlir::IntegerAttr scaleSel); static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::Value src, ::mlir::Value scale, ::mlir::IntegerAttr scaleSel); static CvtPkScalePk8F16Fp4Op create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::Value src, ::mlir::Value scale, ::mlir::IntegerAttr scaleSel); static CvtPkScalePk8F16Fp4Op create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::Value src, ::mlir::Value scale, ::mlir::IntegerAttr scaleSel); static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::Type res, ::mlir::Value src, ::mlir::Value scale, uint32_t scaleSel); static CvtPkScalePk8F16Fp4Op create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::Type res, ::mlir::Value src, ::mlir::Value scale, uint32_t scaleSel); static CvtPkScalePk8F16Fp4Op create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::Type res, ::mlir::Value src, ::mlir::Value scale, uint32_t scaleSel); static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::Value src, ::mlir::Value scale, uint32_t scaleSel); static CvtPkScalePk8F16Fp4Op create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::Value src, ::mlir::Value scale, uint32_t scaleSel); static CvtPkScalePk8F16Fp4Op create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::Value src, ::mlir::Value scale, uint32_t scaleSel); static void build(::mlir::OpBuilder &, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, ::llvm::ArrayRef<::mlir::NamedAttribute> attributes = {}); static CvtPkScalePk8F16Fp4Op create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, ::llvm::ArrayRef<::mlir::NamedAttribute> attributes = {}); static CvtPkScalePk8F16Fp4Op create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, ::llvm::ArrayRef<::mlir::NamedAttribute> attributes = {}); static void build(::mlir::OpBuilder &, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, const Properties &properties, ::llvm::ArrayRef<::mlir::NamedAttribute> discardableAttributes = {}); static CvtPkScalePk8F16Fp4Op create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, const Properties &properties, ::llvm::ArrayRef<::mlir::NamedAttribute> discardableAttributes = {}); static CvtPkScalePk8F16Fp4Op create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, const Properties &properties, ::llvm::ArrayRef<::mlir::NamedAttribute> discardableAttributes = {}); ::llvm::LogicalResult verifyInvariantsImpl(); ::llvm::LogicalResult verifyInvariants(); static ::mlir::ParseResult parse(::mlir::OpAsmParser &parser, ::mlir::OperationState &result); void print(::mlir::OpAsmPrinter &_odsPrinter); void getEffects(::llvm::SmallVectorImpl<::mlir::SideEffects::EffectInstance<::mlir::MemoryEffects::Effect>> &effects); private: ::mlir::StringAttr getAttributeNameForIndex(unsigned index) { return getAttributeNameForIndex((*this)->getName(), index); } static ::mlir::StringAttr getAttributeNameForIndex(::mlir::OperationName name, unsigned index) { assert(index < 1 && "invalid attribute index"); assert(name.getStringRef() == getOperationName() && "invalid operation name"); assert(name.isRegistered() && "Operation isn't registered, missing a " "dependent dialect loading?"); return name.getAttributeNames()[index]; } public: }; } // namespace mlir::ROCDL MLIR_DECLARE_EXPLICIT_TYPE_ID(::mlir::ROCDL::CvtPkScalePk8F16Fp4Op) MLIR_DECLARE_EXPLICIT_TYPE_ID(::mlir::ROCDL::detail::CvtPkScalePk8F16Fp4OpGenericAdaptorBase::Properties) namespace mlir::ROCDL { //===----------------------------------------------------------------------===// // ::mlir::ROCDL::CvtPkScalePk8F16Fp8Op declarations //===----------------------------------------------------------------------===// namespace detail { class CvtPkScalePk8F16Fp8OpGenericAdaptorBase { public: struct Properties { using scaleSelTy = ::mlir::IntegerAttr; scaleSelTy scaleSel; auto getScaleSel() const { auto &propStorage = this->scaleSel; return ::llvm::cast<::mlir::IntegerAttr>(propStorage); } void setScaleSel(const ::mlir::IntegerAttr &propValue) { this->scaleSel = propValue; } bool operator==(const Properties &rhs) const { return rhs.scaleSel == this->scaleSel && true; } bool operator!=(const Properties &rhs) const { return !(*this == rhs); } }; protected: ::mlir::DictionaryAttr odsAttrs; ::std::optional<::mlir::OperationName> odsOpName; Properties properties; ::mlir::RegionRange odsRegions; public: CvtPkScalePk8F16Fp8OpGenericAdaptorBase(::mlir::DictionaryAttr attrs, const Properties &properties, ::mlir::RegionRange regions = {}) : odsAttrs(attrs), properties(properties), odsRegions(regions) { if (odsAttrs) odsOpName.emplace("rocdl.cvt.scale.pk8.f16.fp8", odsAttrs.getContext()); } CvtPkScalePk8F16Fp8OpGenericAdaptorBase(CvtPkScalePk8F16Fp8Op op); std::pair getODSOperandIndexAndLength(unsigned index, unsigned odsOperandsSize) { return {index, 1}; } const Properties &getProperties() { return properties; } ::mlir::DictionaryAttr getAttributes() { return odsAttrs; } ::mlir::IntegerAttr getScaleSelAttr() { auto attr = ::llvm::cast<::mlir::IntegerAttr>(getProperties().scaleSel); return attr; } uint32_t getScaleSel(); }; } // namespace detail template class CvtPkScalePk8F16Fp8OpGenericAdaptor : public detail::CvtPkScalePk8F16Fp8OpGenericAdaptorBase { using ValueT = ::llvm::detail::ValueOfRange; using Base = detail::CvtPkScalePk8F16Fp8OpGenericAdaptorBase; static constexpr int odsIndex_src = 0; static constexpr int odsIndex_scale = 1; public: CvtPkScalePk8F16Fp8OpGenericAdaptor(RangeT values, ::mlir::DictionaryAttr attrs, const Properties &properties, ::mlir::RegionRange regions = {}) : Base(attrs, properties, regions), odsOperands(values) {} CvtPkScalePk8F16Fp8OpGenericAdaptor(RangeT values, ::mlir::DictionaryAttr attrs, ::mlir::PropertyRef properties, ::mlir::RegionRange regions = {}) : CvtPkScalePk8F16Fp8OpGenericAdaptor(values, attrs, (properties ? *properties.as() : Properties{}), regions) {} CvtPkScalePk8F16Fp8OpGenericAdaptor(RangeT values, ::mlir::DictionaryAttr attrs = nullptr) : CvtPkScalePk8F16Fp8OpGenericAdaptor(values, attrs, Properties{}, {}) {} CvtPkScalePk8F16Fp8OpGenericAdaptor(RangeT values, const CvtPkScalePk8F16Fp8OpGenericAdaptorBase &base) : Base(base), odsOperands(values) {} template >> CvtPkScalePk8F16Fp8OpGenericAdaptor(RangeT values, LateInst op) : Base(op), odsOperands(values) {} std::pair getODSOperandIndexAndLength(unsigned index) { return Base::getODSOperandIndexAndLength(index, odsOperands.size()); } RangeT getODSOperands(unsigned index) { auto valueRange = getODSOperandIndexAndLength(index); return {std::next(odsOperands.begin(), valueRange.first), std::next(odsOperands.begin(), valueRange.first + valueRange.second)}; } ValueT getSrc() { return (*getODSOperands(0).begin()); } ValueT getScale() { return (*getODSOperands(1).begin()); } RangeT getOperands() { return odsOperands; } private: RangeT odsOperands; }; class CvtPkScalePk8F16Fp8OpAdaptor : public CvtPkScalePk8F16Fp8OpGenericAdaptor<::mlir::ValueRange> { public: using CvtPkScalePk8F16Fp8OpGenericAdaptor::CvtPkScalePk8F16Fp8OpGenericAdaptor; CvtPkScalePk8F16Fp8OpAdaptor(CvtPkScalePk8F16Fp8Op op); ::llvm::LogicalResult verify(::mlir::Location loc); }; class CvtPkScalePk8F16Fp8Op : public ::mlir::Op::Impl, ::mlir::OpTrait::ZeroSuccessors, ::mlir::OpTrait::NOperands<2>::Impl, ::mlir::OpTrait::OpInvariants, ::mlir::BytecodeOpInterface::Trait, ::mlir::ConditionallySpeculatable::Trait, ::mlir::OpTrait::AlwaysSpeculatableImplTrait, ::mlir::MemoryEffectOpInterface::Trait> { public: using Op::Op; using Op::print; using Adaptor = CvtPkScalePk8F16Fp8OpAdaptor; template using GenericAdaptor = CvtPkScalePk8F16Fp8OpGenericAdaptor; using FoldAdaptor = GenericAdaptor<::llvm::ArrayRef<::mlir::Attribute>>; static constexpr int odsIndex_src = 0; static constexpr int odsIndex_scale = 1; using Properties = FoldAdaptor::Properties; static ::llvm::ArrayRef<::llvm::StringRef> getAttributeNames() { static ::llvm::StringRef attrNames[] = {::llvm::StringRef("scaleSel")}; return ::llvm::ArrayRef(attrNames); } ::mlir::StringAttr getScaleSelAttrName() { return getAttributeNameForIndex(0); } static ::mlir::StringAttr getScaleSelAttrName(::mlir::OperationName name) { return getAttributeNameForIndex(name, 0); } static constexpr ::llvm::StringLiteral getOperationName() { return ::llvm::StringLiteral("rocdl.cvt.scale.pk8.f16.fp8"); } std::pair getODSOperandIndexAndLength(unsigned index) { return {index, 1}; } ::mlir::Operation::operand_range getODSOperands(unsigned index) { auto valueRange = getODSOperandIndexAndLength(index); return {std::next(getOperation()->operand_begin(), valueRange.first), std::next(getOperation()->operand_begin(), valueRange.first + valueRange.second)}; } ::mlir::TypedValue<::mlir::VectorType> getSrc() { return ::llvm::cast<::mlir::TypedValue<::mlir::VectorType>>(*getODSOperands(0).begin()); } ::mlir::TypedValue<::mlir::IntegerType> getScale() { return ::llvm::cast<::mlir::TypedValue<::mlir::IntegerType>>(*getODSOperands(1).begin()); } ::mlir::OpOperand &getSrcMutable() { auto range = getODSOperandIndexAndLength(0); return getOperation()->getOpOperand(range.first); } ::mlir::OpOperand &getScaleMutable() { auto range = getODSOperandIndexAndLength(1); return getOperation()->getOpOperand(range.first); } std::pair getODSResultIndexAndLength(unsigned index) { return {index, 1}; } ::mlir::Operation::result_range getODSResults(unsigned index) { auto valueRange = getODSResultIndexAndLength(index); return {std::next(getOperation()->result_begin(), valueRange.first), std::next(getOperation()->result_begin(), valueRange.first + valueRange.second)}; } ::mlir::TypedValue<::mlir::VectorType> getRes() { return ::llvm::cast<::mlir::TypedValue<::mlir::VectorType>>(*getODSResults(0).begin()); } static ::llvm::LogicalResult setPropertiesFromAttr(Properties &prop, ::mlir::Attribute attr, ::llvm::function_ref<::mlir::InFlightDiagnostic()> emitError); static ::mlir::Attribute getPropertiesAsAttr(::mlir::MLIRContext *ctx, const Properties &prop); static llvm::hash_code computePropertiesHash(const Properties &prop); static std::optional getInherentAttr(::mlir::MLIRContext *ctx, const Properties &prop, llvm::StringRef name); static void setInherentAttr(Properties &prop, llvm::StringRef name, mlir::Attribute value); static void populateInherentAttrs(::mlir::MLIRContext *ctx, const Properties &prop, ::mlir::NamedAttrList &attrs); static ::llvm::LogicalResult verifyInherentAttrs(::mlir::OperationName opName, ::mlir::NamedAttrList &attrs, llvm::function_ref<::mlir::InFlightDiagnostic()> emitError); static ::llvm::LogicalResult readProperties(::mlir::DialectBytecodeReader &reader, ::mlir::OperationState &state); void writeProperties(::mlir::DialectBytecodeWriter &writer); ::mlir::IntegerAttr getScaleSelAttr() { return ::llvm::cast<::mlir::IntegerAttr>(getProperties().scaleSel); } uint32_t getScaleSel(); void setScaleSelAttr(::mlir::IntegerAttr attr) { getProperties().scaleSel = attr; } void setScaleSel(uint32_t attrValue); static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::Type res, ::mlir::Value src, ::mlir::Value scale, ::mlir::IntegerAttr scaleSel); static CvtPkScalePk8F16Fp8Op create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::Type res, ::mlir::Value src, ::mlir::Value scale, ::mlir::IntegerAttr scaleSel); static CvtPkScalePk8F16Fp8Op create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::Type res, ::mlir::Value src, ::mlir::Value scale, ::mlir::IntegerAttr scaleSel); static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::Value src, ::mlir::Value scale, ::mlir::IntegerAttr scaleSel); static CvtPkScalePk8F16Fp8Op create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::Value src, ::mlir::Value scale, ::mlir::IntegerAttr scaleSel); static CvtPkScalePk8F16Fp8Op create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::Value src, ::mlir::Value scale, ::mlir::IntegerAttr scaleSel); static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::Type res, ::mlir::Value src, ::mlir::Value scale, uint32_t scaleSel); static CvtPkScalePk8F16Fp8Op create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::Type res, ::mlir::Value src, ::mlir::Value scale, uint32_t scaleSel); static CvtPkScalePk8F16Fp8Op create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::Type res, ::mlir::Value src, ::mlir::Value scale, uint32_t scaleSel); static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::Value src, ::mlir::Value scale, uint32_t scaleSel); static CvtPkScalePk8F16Fp8Op create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::Value src, ::mlir::Value scale, uint32_t scaleSel); static CvtPkScalePk8F16Fp8Op create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::Value src, ::mlir::Value scale, uint32_t scaleSel); static void build(::mlir::OpBuilder &, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, ::llvm::ArrayRef<::mlir::NamedAttribute> attributes = {}); static CvtPkScalePk8F16Fp8Op create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, ::llvm::ArrayRef<::mlir::NamedAttribute> attributes = {}); static CvtPkScalePk8F16Fp8Op create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, ::llvm::ArrayRef<::mlir::NamedAttribute> attributes = {}); static void build(::mlir::OpBuilder &, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, const Properties &properties, ::llvm::ArrayRef<::mlir::NamedAttribute> discardableAttributes = {}); static CvtPkScalePk8F16Fp8Op create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, const Properties &properties, ::llvm::ArrayRef<::mlir::NamedAttribute> discardableAttributes = {}); static CvtPkScalePk8F16Fp8Op create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, const Properties &properties, ::llvm::ArrayRef<::mlir::NamedAttribute> discardableAttributes = {}); ::llvm::LogicalResult verifyInvariantsImpl(); ::llvm::LogicalResult verifyInvariants(); static ::mlir::ParseResult parse(::mlir::OpAsmParser &parser, ::mlir::OperationState &result); void print(::mlir::OpAsmPrinter &_odsPrinter); void getEffects(::llvm::SmallVectorImpl<::mlir::SideEffects::EffectInstance<::mlir::MemoryEffects::Effect>> &effects); private: ::mlir::StringAttr getAttributeNameForIndex(unsigned index) { return getAttributeNameForIndex((*this)->getName(), index); } static ::mlir::StringAttr getAttributeNameForIndex(::mlir::OperationName name, unsigned index) { assert(index < 1 && "invalid attribute index"); assert(name.getStringRef() == getOperationName() && "invalid operation name"); assert(name.isRegistered() && "Operation isn't registered, missing a " "dependent dialect loading?"); return name.getAttributeNames()[index]; } public: }; } // namespace mlir::ROCDL MLIR_DECLARE_EXPLICIT_TYPE_ID(::mlir::ROCDL::CvtPkScalePk8F16Fp8Op) MLIR_DECLARE_EXPLICIT_TYPE_ID(::mlir::ROCDL::detail::CvtPkScalePk8F16Fp8OpGenericAdaptorBase::Properties) namespace mlir::ROCDL { //===----------------------------------------------------------------------===// // ::mlir::ROCDL::CvtPkScalePk8F32Bf8Op declarations //===----------------------------------------------------------------------===// namespace detail { class CvtPkScalePk8F32Bf8OpGenericAdaptorBase { public: struct Properties { using scaleSelTy = ::mlir::IntegerAttr; scaleSelTy scaleSel; auto getScaleSel() const { auto &propStorage = this->scaleSel; return ::llvm::cast<::mlir::IntegerAttr>(propStorage); } void setScaleSel(const ::mlir::IntegerAttr &propValue) { this->scaleSel = propValue; } bool operator==(const Properties &rhs) const { return rhs.scaleSel == this->scaleSel && true; } bool operator!=(const Properties &rhs) const { return !(*this == rhs); } }; protected: ::mlir::DictionaryAttr odsAttrs; ::std::optional<::mlir::OperationName> odsOpName; Properties properties; ::mlir::RegionRange odsRegions; public: CvtPkScalePk8F32Bf8OpGenericAdaptorBase(::mlir::DictionaryAttr attrs, const Properties &properties, ::mlir::RegionRange regions = {}) : odsAttrs(attrs), properties(properties), odsRegions(regions) { if (odsAttrs) odsOpName.emplace("rocdl.cvt.scale.pk8.f32.bf8", odsAttrs.getContext()); } CvtPkScalePk8F32Bf8OpGenericAdaptorBase(CvtPkScalePk8F32Bf8Op op); std::pair getODSOperandIndexAndLength(unsigned index, unsigned odsOperandsSize) { return {index, 1}; } const Properties &getProperties() { return properties; } ::mlir::DictionaryAttr getAttributes() { return odsAttrs; } ::mlir::IntegerAttr getScaleSelAttr() { auto attr = ::llvm::cast<::mlir::IntegerAttr>(getProperties().scaleSel); return attr; } uint32_t getScaleSel(); }; } // namespace detail template class CvtPkScalePk8F32Bf8OpGenericAdaptor : public detail::CvtPkScalePk8F32Bf8OpGenericAdaptorBase { using ValueT = ::llvm::detail::ValueOfRange; using Base = detail::CvtPkScalePk8F32Bf8OpGenericAdaptorBase; static constexpr int odsIndex_src = 0; static constexpr int odsIndex_scale = 1; public: CvtPkScalePk8F32Bf8OpGenericAdaptor(RangeT values, ::mlir::DictionaryAttr attrs, const Properties &properties, ::mlir::RegionRange regions = {}) : Base(attrs, properties, regions), odsOperands(values) {} CvtPkScalePk8F32Bf8OpGenericAdaptor(RangeT values, ::mlir::DictionaryAttr attrs, ::mlir::PropertyRef properties, ::mlir::RegionRange regions = {}) : CvtPkScalePk8F32Bf8OpGenericAdaptor(values, attrs, (properties ? *properties.as() : Properties{}), regions) {} CvtPkScalePk8F32Bf8OpGenericAdaptor(RangeT values, ::mlir::DictionaryAttr attrs = nullptr) : CvtPkScalePk8F32Bf8OpGenericAdaptor(values, attrs, Properties{}, {}) {} CvtPkScalePk8F32Bf8OpGenericAdaptor(RangeT values, const CvtPkScalePk8F32Bf8OpGenericAdaptorBase &base) : Base(base), odsOperands(values) {} template >> CvtPkScalePk8F32Bf8OpGenericAdaptor(RangeT values, LateInst op) : Base(op), odsOperands(values) {} std::pair getODSOperandIndexAndLength(unsigned index) { return Base::getODSOperandIndexAndLength(index, odsOperands.size()); } RangeT getODSOperands(unsigned index) { auto valueRange = getODSOperandIndexAndLength(index); return {std::next(odsOperands.begin(), valueRange.first), std::next(odsOperands.begin(), valueRange.first + valueRange.second)}; } ValueT getSrc() { return (*getODSOperands(0).begin()); } ValueT getScale() { return (*getODSOperands(1).begin()); } RangeT getOperands() { return odsOperands; } private: RangeT odsOperands; }; class CvtPkScalePk8F32Bf8OpAdaptor : public CvtPkScalePk8F32Bf8OpGenericAdaptor<::mlir::ValueRange> { public: using CvtPkScalePk8F32Bf8OpGenericAdaptor::CvtPkScalePk8F32Bf8OpGenericAdaptor; CvtPkScalePk8F32Bf8OpAdaptor(CvtPkScalePk8F32Bf8Op op); ::llvm::LogicalResult verify(::mlir::Location loc); }; class CvtPkScalePk8F32Bf8Op : public ::mlir::Op::Impl, ::mlir::OpTrait::ZeroSuccessors, ::mlir::OpTrait::NOperands<2>::Impl, ::mlir::OpTrait::OpInvariants, ::mlir::BytecodeOpInterface::Trait, ::mlir::ConditionallySpeculatable::Trait, ::mlir::OpTrait::AlwaysSpeculatableImplTrait, ::mlir::MemoryEffectOpInterface::Trait> { public: using Op::Op; using Op::print; using Adaptor = CvtPkScalePk8F32Bf8OpAdaptor; template using GenericAdaptor = CvtPkScalePk8F32Bf8OpGenericAdaptor; using FoldAdaptor = GenericAdaptor<::llvm::ArrayRef<::mlir::Attribute>>; static constexpr int odsIndex_src = 0; static constexpr int odsIndex_scale = 1; using Properties = FoldAdaptor::Properties; static ::llvm::ArrayRef<::llvm::StringRef> getAttributeNames() { static ::llvm::StringRef attrNames[] = {::llvm::StringRef("scaleSel")}; return ::llvm::ArrayRef(attrNames); } ::mlir::StringAttr getScaleSelAttrName() { return getAttributeNameForIndex(0); } static ::mlir::StringAttr getScaleSelAttrName(::mlir::OperationName name) { return getAttributeNameForIndex(name, 0); } static constexpr ::llvm::StringLiteral getOperationName() { return ::llvm::StringLiteral("rocdl.cvt.scale.pk8.f32.bf8"); } std::pair getODSOperandIndexAndLength(unsigned index) { return {index, 1}; } ::mlir::Operation::operand_range getODSOperands(unsigned index) { auto valueRange = getODSOperandIndexAndLength(index); return {std::next(getOperation()->operand_begin(), valueRange.first), std::next(getOperation()->operand_begin(), valueRange.first + valueRange.second)}; } ::mlir::TypedValue<::mlir::VectorType> getSrc() { return ::llvm::cast<::mlir::TypedValue<::mlir::VectorType>>(*getODSOperands(0).begin()); } ::mlir::TypedValue<::mlir::IntegerType> getScale() { return ::llvm::cast<::mlir::TypedValue<::mlir::IntegerType>>(*getODSOperands(1).begin()); } ::mlir::OpOperand &getSrcMutable() { auto range = getODSOperandIndexAndLength(0); return getOperation()->getOpOperand(range.first); } ::mlir::OpOperand &getScaleMutable() { auto range = getODSOperandIndexAndLength(1); return getOperation()->getOpOperand(range.first); } std::pair getODSResultIndexAndLength(unsigned index) { return {index, 1}; } ::mlir::Operation::result_range getODSResults(unsigned index) { auto valueRange = getODSResultIndexAndLength(index); return {std::next(getOperation()->result_begin(), valueRange.first), std::next(getOperation()->result_begin(), valueRange.first + valueRange.second)}; } ::mlir::TypedValue<::mlir::VectorType> getRes() { return ::llvm::cast<::mlir::TypedValue<::mlir::VectorType>>(*getODSResults(0).begin()); } static ::llvm::LogicalResult setPropertiesFromAttr(Properties &prop, ::mlir::Attribute attr, ::llvm::function_ref<::mlir::InFlightDiagnostic()> emitError); static ::mlir::Attribute getPropertiesAsAttr(::mlir::MLIRContext *ctx, const Properties &prop); static llvm::hash_code computePropertiesHash(const Properties &prop); static std::optional getInherentAttr(::mlir::MLIRContext *ctx, const Properties &prop, llvm::StringRef name); static void setInherentAttr(Properties &prop, llvm::StringRef name, mlir::Attribute value); static void populateInherentAttrs(::mlir::MLIRContext *ctx, const Properties &prop, ::mlir::NamedAttrList &attrs); static ::llvm::LogicalResult verifyInherentAttrs(::mlir::OperationName opName, ::mlir::NamedAttrList &attrs, llvm::function_ref<::mlir::InFlightDiagnostic()> emitError); static ::llvm::LogicalResult readProperties(::mlir::DialectBytecodeReader &reader, ::mlir::OperationState &state); void writeProperties(::mlir::DialectBytecodeWriter &writer); ::mlir::IntegerAttr getScaleSelAttr() { return ::llvm::cast<::mlir::IntegerAttr>(getProperties().scaleSel); } uint32_t getScaleSel(); void setScaleSelAttr(::mlir::IntegerAttr attr) { getProperties().scaleSel = attr; } void setScaleSel(uint32_t attrValue); static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::Type res, ::mlir::Value src, ::mlir::Value scale, ::mlir::IntegerAttr scaleSel); static CvtPkScalePk8F32Bf8Op create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::Type res, ::mlir::Value src, ::mlir::Value scale, ::mlir::IntegerAttr scaleSel); static CvtPkScalePk8F32Bf8Op create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::Type res, ::mlir::Value src, ::mlir::Value scale, ::mlir::IntegerAttr scaleSel); static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::Value src, ::mlir::Value scale, ::mlir::IntegerAttr scaleSel); static CvtPkScalePk8F32Bf8Op create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::Value src, ::mlir::Value scale, ::mlir::IntegerAttr scaleSel); static CvtPkScalePk8F32Bf8Op create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::Value src, ::mlir::Value scale, ::mlir::IntegerAttr scaleSel); static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::Type res, ::mlir::Value src, ::mlir::Value scale, uint32_t scaleSel); static CvtPkScalePk8F32Bf8Op create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::Type res, ::mlir::Value src, ::mlir::Value scale, uint32_t scaleSel); static CvtPkScalePk8F32Bf8Op create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::Type res, ::mlir::Value src, ::mlir::Value scale, uint32_t scaleSel); static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::Value src, ::mlir::Value scale, uint32_t scaleSel); static CvtPkScalePk8F32Bf8Op create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::Value src, ::mlir::Value scale, uint32_t scaleSel); static CvtPkScalePk8F32Bf8Op create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::Value src, ::mlir::Value scale, uint32_t scaleSel); static void build(::mlir::OpBuilder &, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, ::llvm::ArrayRef<::mlir::NamedAttribute> attributes = {}); static CvtPkScalePk8F32Bf8Op create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, ::llvm::ArrayRef<::mlir::NamedAttribute> attributes = {}); static CvtPkScalePk8F32Bf8Op create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, ::llvm::ArrayRef<::mlir::NamedAttribute> attributes = {}); static void build(::mlir::OpBuilder &, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, const Properties &properties, ::llvm::ArrayRef<::mlir::NamedAttribute> discardableAttributes = {}); static CvtPkScalePk8F32Bf8Op create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, const Properties &properties, ::llvm::ArrayRef<::mlir::NamedAttribute> discardableAttributes = {}); static CvtPkScalePk8F32Bf8Op create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, const Properties &properties, ::llvm::ArrayRef<::mlir::NamedAttribute> discardableAttributes = {}); ::llvm::LogicalResult verifyInvariantsImpl(); ::llvm::LogicalResult verifyInvariants(); static ::mlir::ParseResult parse(::mlir::OpAsmParser &parser, ::mlir::OperationState &result); void print(::mlir::OpAsmPrinter &_odsPrinter); void getEffects(::llvm::SmallVectorImpl<::mlir::SideEffects::EffectInstance<::mlir::MemoryEffects::Effect>> &effects); private: ::mlir::StringAttr getAttributeNameForIndex(unsigned index) { return getAttributeNameForIndex((*this)->getName(), index); } static ::mlir::StringAttr getAttributeNameForIndex(::mlir::OperationName name, unsigned index) { assert(index < 1 && "invalid attribute index"); assert(name.getStringRef() == getOperationName() && "invalid operation name"); assert(name.isRegistered() && "Operation isn't registered, missing a " "dependent dialect loading?"); return name.getAttributeNames()[index]; } public: }; } // namespace mlir::ROCDL MLIR_DECLARE_EXPLICIT_TYPE_ID(::mlir::ROCDL::CvtPkScalePk8F32Bf8Op) MLIR_DECLARE_EXPLICIT_TYPE_ID(::mlir::ROCDL::detail::CvtPkScalePk8F32Bf8OpGenericAdaptorBase::Properties) namespace mlir::ROCDL { //===----------------------------------------------------------------------===// // ::mlir::ROCDL::CvtPkScalePk8F32Fp4Op declarations //===----------------------------------------------------------------------===// namespace detail { class CvtPkScalePk8F32Fp4OpGenericAdaptorBase { public: struct Properties { using scaleSelTy = ::mlir::IntegerAttr; scaleSelTy scaleSel; auto getScaleSel() const { auto &propStorage = this->scaleSel; return ::llvm::cast<::mlir::IntegerAttr>(propStorage); } void setScaleSel(const ::mlir::IntegerAttr &propValue) { this->scaleSel = propValue; } bool operator==(const Properties &rhs) const { return rhs.scaleSel == this->scaleSel && true; } bool operator!=(const Properties &rhs) const { return !(*this == rhs); } }; protected: ::mlir::DictionaryAttr odsAttrs; ::std::optional<::mlir::OperationName> odsOpName; Properties properties; ::mlir::RegionRange odsRegions; public: CvtPkScalePk8F32Fp4OpGenericAdaptorBase(::mlir::DictionaryAttr attrs, const Properties &properties, ::mlir::RegionRange regions = {}) : odsAttrs(attrs), properties(properties), odsRegions(regions) { if (odsAttrs) odsOpName.emplace("rocdl.cvt.scale.pk8.f32.fp4", odsAttrs.getContext()); } CvtPkScalePk8F32Fp4OpGenericAdaptorBase(CvtPkScalePk8F32Fp4Op op); std::pair getODSOperandIndexAndLength(unsigned index, unsigned odsOperandsSize) { return {index, 1}; } const Properties &getProperties() { return properties; } ::mlir::DictionaryAttr getAttributes() { return odsAttrs; } ::mlir::IntegerAttr getScaleSelAttr() { auto attr = ::llvm::cast<::mlir::IntegerAttr>(getProperties().scaleSel); return attr; } uint32_t getScaleSel(); }; } // namespace detail template class CvtPkScalePk8F32Fp4OpGenericAdaptor : public detail::CvtPkScalePk8F32Fp4OpGenericAdaptorBase { using ValueT = ::llvm::detail::ValueOfRange; using Base = detail::CvtPkScalePk8F32Fp4OpGenericAdaptorBase; static constexpr int odsIndex_src = 0; static constexpr int odsIndex_scale = 1; public: CvtPkScalePk8F32Fp4OpGenericAdaptor(RangeT values, ::mlir::DictionaryAttr attrs, const Properties &properties, ::mlir::RegionRange regions = {}) : Base(attrs, properties, regions), odsOperands(values) {} CvtPkScalePk8F32Fp4OpGenericAdaptor(RangeT values, ::mlir::DictionaryAttr attrs, ::mlir::PropertyRef properties, ::mlir::RegionRange regions = {}) : CvtPkScalePk8F32Fp4OpGenericAdaptor(values, attrs, (properties ? *properties.as() : Properties{}), regions) {} CvtPkScalePk8F32Fp4OpGenericAdaptor(RangeT values, ::mlir::DictionaryAttr attrs = nullptr) : CvtPkScalePk8F32Fp4OpGenericAdaptor(values, attrs, Properties{}, {}) {} CvtPkScalePk8F32Fp4OpGenericAdaptor(RangeT values, const CvtPkScalePk8F32Fp4OpGenericAdaptorBase &base) : Base(base), odsOperands(values) {} template >> CvtPkScalePk8F32Fp4OpGenericAdaptor(RangeT values, LateInst op) : Base(op), odsOperands(values) {} std::pair getODSOperandIndexAndLength(unsigned index) { return Base::getODSOperandIndexAndLength(index, odsOperands.size()); } RangeT getODSOperands(unsigned index) { auto valueRange = getODSOperandIndexAndLength(index); return {std::next(odsOperands.begin(), valueRange.first), std::next(odsOperands.begin(), valueRange.first + valueRange.second)}; } ValueT getSrc() { return (*getODSOperands(0).begin()); } ValueT getScale() { return (*getODSOperands(1).begin()); } RangeT getOperands() { return odsOperands; } private: RangeT odsOperands; }; class CvtPkScalePk8F32Fp4OpAdaptor : public CvtPkScalePk8F32Fp4OpGenericAdaptor<::mlir::ValueRange> { public: using CvtPkScalePk8F32Fp4OpGenericAdaptor::CvtPkScalePk8F32Fp4OpGenericAdaptor; CvtPkScalePk8F32Fp4OpAdaptor(CvtPkScalePk8F32Fp4Op op); ::llvm::LogicalResult verify(::mlir::Location loc); }; class CvtPkScalePk8F32Fp4Op : public ::mlir::Op::Impl, ::mlir::OpTrait::ZeroSuccessors, ::mlir::OpTrait::NOperands<2>::Impl, ::mlir::OpTrait::OpInvariants, ::mlir::BytecodeOpInterface::Trait, ::mlir::ConditionallySpeculatable::Trait, ::mlir::OpTrait::AlwaysSpeculatableImplTrait, ::mlir::MemoryEffectOpInterface::Trait> { public: using Op::Op; using Op::print; using Adaptor = CvtPkScalePk8F32Fp4OpAdaptor; template using GenericAdaptor = CvtPkScalePk8F32Fp4OpGenericAdaptor; using FoldAdaptor = GenericAdaptor<::llvm::ArrayRef<::mlir::Attribute>>; static constexpr int odsIndex_src = 0; static constexpr int odsIndex_scale = 1; using Properties = FoldAdaptor::Properties; static ::llvm::ArrayRef<::llvm::StringRef> getAttributeNames() { static ::llvm::StringRef attrNames[] = {::llvm::StringRef("scaleSel")}; return ::llvm::ArrayRef(attrNames); } ::mlir::StringAttr getScaleSelAttrName() { return getAttributeNameForIndex(0); } static ::mlir::StringAttr getScaleSelAttrName(::mlir::OperationName name) { return getAttributeNameForIndex(name, 0); } static constexpr ::llvm::StringLiteral getOperationName() { return ::llvm::StringLiteral("rocdl.cvt.scale.pk8.f32.fp4"); } std::pair getODSOperandIndexAndLength(unsigned index) { return {index, 1}; } ::mlir::Operation::operand_range getODSOperands(unsigned index) { auto valueRange = getODSOperandIndexAndLength(index); return {std::next(getOperation()->operand_begin(), valueRange.first), std::next(getOperation()->operand_begin(), valueRange.first + valueRange.second)}; } ::mlir::TypedValue<::mlir::IntegerType> getSrc() { return ::llvm::cast<::mlir::TypedValue<::mlir::IntegerType>>(*getODSOperands(0).begin()); } ::mlir::TypedValue<::mlir::IntegerType> getScale() { return ::llvm::cast<::mlir::TypedValue<::mlir::IntegerType>>(*getODSOperands(1).begin()); } ::mlir::OpOperand &getSrcMutable() { auto range = getODSOperandIndexAndLength(0); return getOperation()->getOpOperand(range.first); } ::mlir::OpOperand &getScaleMutable() { auto range = getODSOperandIndexAndLength(1); return getOperation()->getOpOperand(range.first); } std::pair getODSResultIndexAndLength(unsigned index) { return {index, 1}; } ::mlir::Operation::result_range getODSResults(unsigned index) { auto valueRange = getODSResultIndexAndLength(index); return {std::next(getOperation()->result_begin(), valueRange.first), std::next(getOperation()->result_begin(), valueRange.first + valueRange.second)}; } ::mlir::TypedValue<::mlir::VectorType> getRes() { return ::llvm::cast<::mlir::TypedValue<::mlir::VectorType>>(*getODSResults(0).begin()); } static ::llvm::LogicalResult setPropertiesFromAttr(Properties &prop, ::mlir::Attribute attr, ::llvm::function_ref<::mlir::InFlightDiagnostic()> emitError); static ::mlir::Attribute getPropertiesAsAttr(::mlir::MLIRContext *ctx, const Properties &prop); static llvm::hash_code computePropertiesHash(const Properties &prop); static std::optional getInherentAttr(::mlir::MLIRContext *ctx, const Properties &prop, llvm::StringRef name); static void setInherentAttr(Properties &prop, llvm::StringRef name, mlir::Attribute value); static void populateInherentAttrs(::mlir::MLIRContext *ctx, const Properties &prop, ::mlir::NamedAttrList &attrs); static ::llvm::LogicalResult verifyInherentAttrs(::mlir::OperationName opName, ::mlir::NamedAttrList &attrs, llvm::function_ref<::mlir::InFlightDiagnostic()> emitError); static ::llvm::LogicalResult readProperties(::mlir::DialectBytecodeReader &reader, ::mlir::OperationState &state); void writeProperties(::mlir::DialectBytecodeWriter &writer); ::mlir::IntegerAttr getScaleSelAttr() { return ::llvm::cast<::mlir::IntegerAttr>(getProperties().scaleSel); } uint32_t getScaleSel(); void setScaleSelAttr(::mlir::IntegerAttr attr) { getProperties().scaleSel = attr; } void setScaleSel(uint32_t attrValue); static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::Type res, ::mlir::Value src, ::mlir::Value scale, ::mlir::IntegerAttr scaleSel); static CvtPkScalePk8F32Fp4Op create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::Type res, ::mlir::Value src, ::mlir::Value scale, ::mlir::IntegerAttr scaleSel); static CvtPkScalePk8F32Fp4Op create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::Type res, ::mlir::Value src, ::mlir::Value scale, ::mlir::IntegerAttr scaleSel); static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::Value src, ::mlir::Value scale, ::mlir::IntegerAttr scaleSel); static CvtPkScalePk8F32Fp4Op create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::Value src, ::mlir::Value scale, ::mlir::IntegerAttr scaleSel); static CvtPkScalePk8F32Fp4Op create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::Value src, ::mlir::Value scale, ::mlir::IntegerAttr scaleSel); static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::Type res, ::mlir::Value src, ::mlir::Value scale, uint32_t scaleSel); static CvtPkScalePk8F32Fp4Op create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::Type res, ::mlir::Value src, ::mlir::Value scale, uint32_t scaleSel); static CvtPkScalePk8F32Fp4Op create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::Type res, ::mlir::Value src, ::mlir::Value scale, uint32_t scaleSel); static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::Value src, ::mlir::Value scale, uint32_t scaleSel); static CvtPkScalePk8F32Fp4Op create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::Value src, ::mlir::Value scale, uint32_t scaleSel); static CvtPkScalePk8F32Fp4Op create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::Value src, ::mlir::Value scale, uint32_t scaleSel); static void build(::mlir::OpBuilder &, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, ::llvm::ArrayRef<::mlir::NamedAttribute> attributes = {}); static CvtPkScalePk8F32Fp4Op create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, ::llvm::ArrayRef<::mlir::NamedAttribute> attributes = {}); static CvtPkScalePk8F32Fp4Op create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, ::llvm::ArrayRef<::mlir::NamedAttribute> attributes = {}); static void build(::mlir::OpBuilder &, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, const Properties &properties, ::llvm::ArrayRef<::mlir::NamedAttribute> discardableAttributes = {}); static CvtPkScalePk8F32Fp4Op create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, const Properties &properties, ::llvm::ArrayRef<::mlir::NamedAttribute> discardableAttributes = {}); static CvtPkScalePk8F32Fp4Op create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, const Properties &properties, ::llvm::ArrayRef<::mlir::NamedAttribute> discardableAttributes = {}); ::llvm::LogicalResult verifyInvariantsImpl(); ::llvm::LogicalResult verifyInvariants(); static ::mlir::ParseResult parse(::mlir::OpAsmParser &parser, ::mlir::OperationState &result); void print(::mlir::OpAsmPrinter &_odsPrinter); void getEffects(::llvm::SmallVectorImpl<::mlir::SideEffects::EffectInstance<::mlir::MemoryEffects::Effect>> &effects); private: ::mlir::StringAttr getAttributeNameForIndex(unsigned index) { return getAttributeNameForIndex((*this)->getName(), index); } static ::mlir::StringAttr getAttributeNameForIndex(::mlir::OperationName name, unsigned index) { assert(index < 1 && "invalid attribute index"); assert(name.getStringRef() == getOperationName() && "invalid operation name"); assert(name.isRegistered() && "Operation isn't registered, missing a " "dependent dialect loading?"); return name.getAttributeNames()[index]; } public: }; } // namespace mlir::ROCDL MLIR_DECLARE_EXPLICIT_TYPE_ID(::mlir::ROCDL::CvtPkScalePk8F32Fp4Op) MLIR_DECLARE_EXPLICIT_TYPE_ID(::mlir::ROCDL::detail::CvtPkScalePk8F32Fp4OpGenericAdaptorBase::Properties) namespace mlir::ROCDL { //===----------------------------------------------------------------------===// // ::mlir::ROCDL::CvtPkScalePk8F32Fp8Op declarations //===----------------------------------------------------------------------===// namespace detail { class CvtPkScalePk8F32Fp8OpGenericAdaptorBase { public: struct Properties { using scaleSelTy = ::mlir::IntegerAttr; scaleSelTy scaleSel; auto getScaleSel() const { auto &propStorage = this->scaleSel; return ::llvm::cast<::mlir::IntegerAttr>(propStorage); } void setScaleSel(const ::mlir::IntegerAttr &propValue) { this->scaleSel = propValue; } bool operator==(const Properties &rhs) const { return rhs.scaleSel == this->scaleSel && true; } bool operator!=(const Properties &rhs) const { return !(*this == rhs); } }; protected: ::mlir::DictionaryAttr odsAttrs; ::std::optional<::mlir::OperationName> odsOpName; Properties properties; ::mlir::RegionRange odsRegions; public: CvtPkScalePk8F32Fp8OpGenericAdaptorBase(::mlir::DictionaryAttr attrs, const Properties &properties, ::mlir::RegionRange regions = {}) : odsAttrs(attrs), properties(properties), odsRegions(regions) { if (odsAttrs) odsOpName.emplace("rocdl.cvt.scale.pk8.f32.fp8", odsAttrs.getContext()); } CvtPkScalePk8F32Fp8OpGenericAdaptorBase(CvtPkScalePk8F32Fp8Op op); std::pair getODSOperandIndexAndLength(unsigned index, unsigned odsOperandsSize) { return {index, 1}; } const Properties &getProperties() { return properties; } ::mlir::DictionaryAttr getAttributes() { return odsAttrs; } ::mlir::IntegerAttr getScaleSelAttr() { auto attr = ::llvm::cast<::mlir::IntegerAttr>(getProperties().scaleSel); return attr; } uint32_t getScaleSel(); }; } // namespace detail template class CvtPkScalePk8F32Fp8OpGenericAdaptor : public detail::CvtPkScalePk8F32Fp8OpGenericAdaptorBase { using ValueT = ::llvm::detail::ValueOfRange; using Base = detail::CvtPkScalePk8F32Fp8OpGenericAdaptorBase; static constexpr int odsIndex_src = 0; static constexpr int odsIndex_scale = 1; public: CvtPkScalePk8F32Fp8OpGenericAdaptor(RangeT values, ::mlir::DictionaryAttr attrs, const Properties &properties, ::mlir::RegionRange regions = {}) : Base(attrs, properties, regions), odsOperands(values) {} CvtPkScalePk8F32Fp8OpGenericAdaptor(RangeT values, ::mlir::DictionaryAttr attrs, ::mlir::PropertyRef properties, ::mlir::RegionRange regions = {}) : CvtPkScalePk8F32Fp8OpGenericAdaptor(values, attrs, (properties ? *properties.as() : Properties{}), regions) {} CvtPkScalePk8F32Fp8OpGenericAdaptor(RangeT values, ::mlir::DictionaryAttr attrs = nullptr) : CvtPkScalePk8F32Fp8OpGenericAdaptor(values, attrs, Properties{}, {}) {} CvtPkScalePk8F32Fp8OpGenericAdaptor(RangeT values, const CvtPkScalePk8F32Fp8OpGenericAdaptorBase &base) : Base(base), odsOperands(values) {} template >> CvtPkScalePk8F32Fp8OpGenericAdaptor(RangeT values, LateInst op) : Base(op), odsOperands(values) {} std::pair getODSOperandIndexAndLength(unsigned index) { return Base::getODSOperandIndexAndLength(index, odsOperands.size()); } RangeT getODSOperands(unsigned index) { auto valueRange = getODSOperandIndexAndLength(index); return {std::next(odsOperands.begin(), valueRange.first), std::next(odsOperands.begin(), valueRange.first + valueRange.second)}; } ValueT getSrc() { return (*getODSOperands(0).begin()); } ValueT getScale() { return (*getODSOperands(1).begin()); } RangeT getOperands() { return odsOperands; } private: RangeT odsOperands; }; class CvtPkScalePk8F32Fp8OpAdaptor : public CvtPkScalePk8F32Fp8OpGenericAdaptor<::mlir::ValueRange> { public: using CvtPkScalePk8F32Fp8OpGenericAdaptor::CvtPkScalePk8F32Fp8OpGenericAdaptor; CvtPkScalePk8F32Fp8OpAdaptor(CvtPkScalePk8F32Fp8Op op); ::llvm::LogicalResult verify(::mlir::Location loc); }; class CvtPkScalePk8F32Fp8Op : public ::mlir::Op::Impl, ::mlir::OpTrait::ZeroSuccessors, ::mlir::OpTrait::NOperands<2>::Impl, ::mlir::OpTrait::OpInvariants, ::mlir::BytecodeOpInterface::Trait, ::mlir::ConditionallySpeculatable::Trait, ::mlir::OpTrait::AlwaysSpeculatableImplTrait, ::mlir::MemoryEffectOpInterface::Trait> { public: using Op::Op; using Op::print; using Adaptor = CvtPkScalePk8F32Fp8OpAdaptor; template using GenericAdaptor = CvtPkScalePk8F32Fp8OpGenericAdaptor; using FoldAdaptor = GenericAdaptor<::llvm::ArrayRef<::mlir::Attribute>>; static constexpr int odsIndex_src = 0; static constexpr int odsIndex_scale = 1; using Properties = FoldAdaptor::Properties; static ::llvm::ArrayRef<::llvm::StringRef> getAttributeNames() { static ::llvm::StringRef attrNames[] = {::llvm::StringRef("scaleSel")}; return ::llvm::ArrayRef(attrNames); } ::mlir::StringAttr getScaleSelAttrName() { return getAttributeNameForIndex(0); } static ::mlir::StringAttr getScaleSelAttrName(::mlir::OperationName name) { return getAttributeNameForIndex(name, 0); } static constexpr ::llvm::StringLiteral getOperationName() { return ::llvm::StringLiteral("rocdl.cvt.scale.pk8.f32.fp8"); } std::pair getODSOperandIndexAndLength(unsigned index) { return {index, 1}; } ::mlir::Operation::operand_range getODSOperands(unsigned index) { auto valueRange = getODSOperandIndexAndLength(index); return {std::next(getOperation()->operand_begin(), valueRange.first), std::next(getOperation()->operand_begin(), valueRange.first + valueRange.second)}; } ::mlir::TypedValue<::mlir::VectorType> getSrc() { return ::llvm::cast<::mlir::TypedValue<::mlir::VectorType>>(*getODSOperands(0).begin()); } ::mlir::TypedValue<::mlir::IntegerType> getScale() { return ::llvm::cast<::mlir::TypedValue<::mlir::IntegerType>>(*getODSOperands(1).begin()); } ::mlir::OpOperand &getSrcMutable() { auto range = getODSOperandIndexAndLength(0); return getOperation()->getOpOperand(range.first); } ::mlir::OpOperand &getScaleMutable() { auto range = getODSOperandIndexAndLength(1); return getOperation()->getOpOperand(range.first); } std::pair getODSResultIndexAndLength(unsigned index) { return {index, 1}; } ::mlir::Operation::result_range getODSResults(unsigned index) { auto valueRange = getODSResultIndexAndLength(index); return {std::next(getOperation()->result_begin(), valueRange.first), std::next(getOperation()->result_begin(), valueRange.first + valueRange.second)}; } ::mlir::TypedValue<::mlir::VectorType> getRes() { return ::llvm::cast<::mlir::TypedValue<::mlir::VectorType>>(*getODSResults(0).begin()); } static ::llvm::LogicalResult setPropertiesFromAttr(Properties &prop, ::mlir::Attribute attr, ::llvm::function_ref<::mlir::InFlightDiagnostic()> emitError); static ::mlir::Attribute getPropertiesAsAttr(::mlir::MLIRContext *ctx, const Properties &prop); static llvm::hash_code computePropertiesHash(const Properties &prop); static std::optional getInherentAttr(::mlir::MLIRContext *ctx, const Properties &prop, llvm::StringRef name); static void setInherentAttr(Properties &prop, llvm::StringRef name, mlir::Attribute value); static void populateInherentAttrs(::mlir::MLIRContext *ctx, const Properties &prop, ::mlir::NamedAttrList &attrs); static ::llvm::LogicalResult verifyInherentAttrs(::mlir::OperationName opName, ::mlir::NamedAttrList &attrs, llvm::function_ref<::mlir::InFlightDiagnostic()> emitError); static ::llvm::LogicalResult readProperties(::mlir::DialectBytecodeReader &reader, ::mlir::OperationState &state); void writeProperties(::mlir::DialectBytecodeWriter &writer); ::mlir::IntegerAttr getScaleSelAttr() { return ::llvm::cast<::mlir::IntegerAttr>(getProperties().scaleSel); } uint32_t getScaleSel(); void setScaleSelAttr(::mlir::IntegerAttr attr) { getProperties().scaleSel = attr; } void setScaleSel(uint32_t attrValue); static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::Type res, ::mlir::Value src, ::mlir::Value scale, ::mlir::IntegerAttr scaleSel); static CvtPkScalePk8F32Fp8Op create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::Type res, ::mlir::Value src, ::mlir::Value scale, ::mlir::IntegerAttr scaleSel); static CvtPkScalePk8F32Fp8Op create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::Type res, ::mlir::Value src, ::mlir::Value scale, ::mlir::IntegerAttr scaleSel); static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::Value src, ::mlir::Value scale, ::mlir::IntegerAttr scaleSel); static CvtPkScalePk8F32Fp8Op create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::Value src, ::mlir::Value scale, ::mlir::IntegerAttr scaleSel); static CvtPkScalePk8F32Fp8Op create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::Value src, ::mlir::Value scale, ::mlir::IntegerAttr scaleSel); static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::Type res, ::mlir::Value src, ::mlir::Value scale, uint32_t scaleSel); static CvtPkScalePk8F32Fp8Op create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::Type res, ::mlir::Value src, ::mlir::Value scale, uint32_t scaleSel); static CvtPkScalePk8F32Fp8Op create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::Type res, ::mlir::Value src, ::mlir::Value scale, uint32_t scaleSel); static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::Value src, ::mlir::Value scale, uint32_t scaleSel); static CvtPkScalePk8F32Fp8Op create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::Value src, ::mlir::Value scale, uint32_t scaleSel); static CvtPkScalePk8F32Fp8Op create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::Value src, ::mlir::Value scale, uint32_t scaleSel); static void build(::mlir::OpBuilder &, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, ::llvm::ArrayRef<::mlir::NamedAttribute> attributes = {}); static CvtPkScalePk8F32Fp8Op create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, ::llvm::ArrayRef<::mlir::NamedAttribute> attributes = {}); static CvtPkScalePk8F32Fp8Op create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, ::llvm::ArrayRef<::mlir::NamedAttribute> attributes = {}); static void build(::mlir::OpBuilder &, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, const Properties &properties, ::llvm::ArrayRef<::mlir::NamedAttribute> discardableAttributes = {}); static CvtPkScalePk8F32Fp8Op create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, const Properties &properties, ::llvm::ArrayRef<::mlir::NamedAttribute> discardableAttributes = {}); static CvtPkScalePk8F32Fp8Op create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, const Properties &properties, ::llvm::ArrayRef<::mlir::NamedAttribute> discardableAttributes = {}); ::llvm::LogicalResult verifyInvariantsImpl(); ::llvm::LogicalResult verifyInvariants(); static ::mlir::ParseResult parse(::mlir::OpAsmParser &parser, ::mlir::OperationState &result); void print(::mlir::OpAsmPrinter &_odsPrinter); void getEffects(::llvm::SmallVectorImpl<::mlir::SideEffects::EffectInstance<::mlir::MemoryEffects::Effect>> &effects); private: ::mlir::StringAttr getAttributeNameForIndex(unsigned index) { return getAttributeNameForIndex((*this)->getName(), index); } static ::mlir::StringAttr getAttributeNameForIndex(::mlir::OperationName name, unsigned index) { assert(index < 1 && "invalid attribute index"); assert(name.getStringRef() == getOperationName() && "invalid operation name"); assert(name.isRegistered() && "Operation isn't registered, missing a " "dependent dialect loading?"); return name.getAttributeNames()[index]; } public: }; } // namespace mlir::ROCDL MLIR_DECLARE_EXPLICIT_TYPE_ID(::mlir::ROCDL::CvtPkScalePk8F32Fp8Op) MLIR_DECLARE_EXPLICIT_TYPE_ID(::mlir::ROCDL::detail::CvtPkScalePk8F32Fp8OpGenericAdaptorBase::Properties) namespace mlir::ROCDL { //===----------------------------------------------------------------------===// // ::mlir::ROCDL::CvtScaleF322xPk16Bf6F32Op declarations //===----------------------------------------------------------------------===// namespace detail { class CvtScaleF322xPk16Bf6F32OpGenericAdaptorBase { public: using Properties = ::mlir::EmptyProperties; protected: ::mlir::DictionaryAttr odsAttrs; ::std::optional<::mlir::OperationName> odsOpName; Properties properties; ::mlir::RegionRange odsRegions; public: CvtScaleF322xPk16Bf6F32OpGenericAdaptorBase(::mlir::DictionaryAttr attrs, const Properties &properties, ::mlir::RegionRange regions = {}) : odsAttrs(attrs), properties(properties), odsRegions(regions) { if (odsAttrs) odsOpName.emplace("rocdl.cvt.scalef32.2xpk16.bf6.f32", odsAttrs.getContext()); } CvtScaleF322xPk16Bf6F32OpGenericAdaptorBase(CvtScaleF322xPk16Bf6F32Op op); std::pair getODSOperandIndexAndLength(unsigned index, unsigned odsOperandsSize) { return {index, 1}; } const Properties &getProperties() { return properties; } ::mlir::DictionaryAttr getAttributes() { return odsAttrs; } }; } // namespace detail template class CvtScaleF322xPk16Bf6F32OpGenericAdaptor : public detail::CvtScaleF322xPk16Bf6F32OpGenericAdaptorBase { using ValueT = ::llvm::detail::ValueOfRange; using Base = detail::CvtScaleF322xPk16Bf6F32OpGenericAdaptorBase; static constexpr int odsIndex_src0 = 0; static constexpr int odsIndex_src1 = 1; static constexpr int odsIndex_scale = 2; public: CvtScaleF322xPk16Bf6F32OpGenericAdaptor(RangeT values, ::mlir::DictionaryAttr attrs, const Properties &properties, ::mlir::RegionRange regions = {}) : Base(attrs, properties, regions), odsOperands(values) {} CvtScaleF322xPk16Bf6F32OpGenericAdaptor(RangeT values, ::mlir::DictionaryAttr attrs, ::mlir::PropertyRef properties, ::mlir::RegionRange regions = {}) : CvtScaleF322xPk16Bf6F32OpGenericAdaptor(values, attrs, (properties ? *properties.as() : Properties{}), regions) {} CvtScaleF322xPk16Bf6F32OpGenericAdaptor(RangeT values, ::mlir::DictionaryAttr attrs = nullptr) : CvtScaleF322xPk16Bf6F32OpGenericAdaptor(values, attrs, Properties{}, {}) {} CvtScaleF322xPk16Bf6F32OpGenericAdaptor(RangeT values, const CvtScaleF322xPk16Bf6F32OpGenericAdaptorBase &base) : Base(base), odsOperands(values) {} template >> CvtScaleF322xPk16Bf6F32OpGenericAdaptor(RangeT values, LateInst op) : Base(op), odsOperands(values) {} std::pair getODSOperandIndexAndLength(unsigned index) { return Base::getODSOperandIndexAndLength(index, odsOperands.size()); } RangeT getODSOperands(unsigned index) { auto valueRange = getODSOperandIndexAndLength(index); return {std::next(odsOperands.begin(), valueRange.first), std::next(odsOperands.begin(), valueRange.first + valueRange.second)}; } ValueT getSrc0() { return (*getODSOperands(0).begin()); } ValueT getSrc1() { return (*getODSOperands(1).begin()); } ValueT getScale() { return (*getODSOperands(2).begin()); } RangeT getOperands() { return odsOperands; } private: RangeT odsOperands; }; class CvtScaleF322xPk16Bf6F32OpAdaptor : public CvtScaleF322xPk16Bf6F32OpGenericAdaptor<::mlir::ValueRange> { public: using CvtScaleF322xPk16Bf6F32OpGenericAdaptor::CvtScaleF322xPk16Bf6F32OpGenericAdaptor; CvtScaleF322xPk16Bf6F32OpAdaptor(CvtScaleF322xPk16Bf6F32Op op); ::llvm::LogicalResult verify(::mlir::Location loc); }; class CvtScaleF322xPk16Bf6F32Op : public ::mlir::Op::Impl, ::mlir::OpTrait::ZeroSuccessors, ::mlir::OpTrait::NOperands<3>::Impl, ::mlir::OpTrait::OpInvariants, ::mlir::ConditionallySpeculatable::Trait, ::mlir::OpTrait::AlwaysSpeculatableImplTrait, ::mlir::MemoryEffectOpInterface::Trait> { public: using Op::Op; using Op::print; using Adaptor = CvtScaleF322xPk16Bf6F32OpAdaptor; template using GenericAdaptor = CvtScaleF322xPk16Bf6F32OpGenericAdaptor; using FoldAdaptor = GenericAdaptor<::llvm::ArrayRef<::mlir::Attribute>>; static constexpr int odsIndex_src0 = 0; static constexpr int odsIndex_src1 = 1; static constexpr int odsIndex_scale = 2; using Properties = FoldAdaptor::Properties; static ::llvm::ArrayRef<::llvm::StringRef> getAttributeNames() { return {}; } static constexpr ::llvm::StringLiteral getOperationName() { return ::llvm::StringLiteral("rocdl.cvt.scalef32.2xpk16.bf6.f32"); } std::pair getODSOperandIndexAndLength(unsigned index) { return {index, 1}; } ::mlir::Operation::operand_range getODSOperands(unsigned index) { auto valueRange = getODSOperandIndexAndLength(index); return {std::next(getOperation()->operand_begin(), valueRange.first), std::next(getOperation()->operand_begin(), valueRange.first + valueRange.second)}; } ::mlir::TypedValue<::mlir::VectorType> getSrc0() { return ::llvm::cast<::mlir::TypedValue<::mlir::VectorType>>(*getODSOperands(0).begin()); } ::mlir::TypedValue<::mlir::VectorType> getSrc1() { return ::llvm::cast<::mlir::TypedValue<::mlir::VectorType>>(*getODSOperands(1).begin()); } ::mlir::TypedValue<::mlir::FloatType> getScale() { return ::llvm::cast<::mlir::TypedValue<::mlir::FloatType>>(*getODSOperands(2).begin()); } ::mlir::OpOperand &getSrc0Mutable() { auto range = getODSOperandIndexAndLength(0); return getOperation()->getOpOperand(range.first); } ::mlir::OpOperand &getSrc1Mutable() { auto range = getODSOperandIndexAndLength(1); return getOperation()->getOpOperand(range.first); } ::mlir::OpOperand &getScaleMutable() { auto range = getODSOperandIndexAndLength(2); return getOperation()->getOpOperand(range.first); } std::pair getODSResultIndexAndLength(unsigned index) { return {index, 1}; } ::mlir::Operation::result_range getODSResults(unsigned index) { auto valueRange = getODSResultIndexAndLength(index); return {std::next(getOperation()->result_begin(), valueRange.first), std::next(getOperation()->result_begin(), valueRange.first + valueRange.second)}; } ::mlir::TypedValue<::mlir::VectorType> getRes() { return ::llvm::cast<::mlir::TypedValue<::mlir::VectorType>>(*getODSResults(0).begin()); } static ::llvm::LogicalResult setPropertiesFromAttr(Properties &prop, ::mlir::Attribute attr, ::llvm::function_ref<::mlir::InFlightDiagnostic()> emitError); static ::mlir::Attribute getPropertiesAsAttr(::mlir::MLIRContext *ctx, const Properties &prop); static llvm::hash_code computePropertiesHash(const Properties &prop); static std::optional getInherentAttr(::mlir::MLIRContext *ctx, const Properties &prop, llvm::StringRef name); static void setInherentAttr(Properties &prop, llvm::StringRef name, mlir::Attribute value); static void populateInherentAttrs(::mlir::MLIRContext *ctx, const Properties &prop, ::mlir::NamedAttrList &attrs); static ::llvm::LogicalResult verifyInherentAttrs(::mlir::OperationName opName, ::mlir::NamedAttrList &attrs, llvm::function_ref<::mlir::InFlightDiagnostic()> emitError); static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::Type res, ::mlir::Value src0, ::mlir::Value src1, ::mlir::Value scale); static CvtScaleF322xPk16Bf6F32Op create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::Type res, ::mlir::Value src0, ::mlir::Value src1, ::mlir::Value scale); static CvtScaleF322xPk16Bf6F32Op create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::Type res, ::mlir::Value src0, ::mlir::Value src1, ::mlir::Value scale); static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::Value src0, ::mlir::Value src1, ::mlir::Value scale); static CvtScaleF322xPk16Bf6F32Op create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::Value src0, ::mlir::Value src1, ::mlir::Value scale); static CvtScaleF322xPk16Bf6F32Op create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::Value src0, ::mlir::Value src1, ::mlir::Value scale); static void build(::mlir::OpBuilder &, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, ::llvm::ArrayRef<::mlir::NamedAttribute> attributes = {}); static CvtScaleF322xPk16Bf6F32Op create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, ::llvm::ArrayRef<::mlir::NamedAttribute> attributes = {}); static CvtScaleF322xPk16Bf6F32Op create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, ::llvm::ArrayRef<::mlir::NamedAttribute> attributes = {}); static void build(::mlir::OpBuilder &, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, const Properties &properties, ::llvm::ArrayRef<::mlir::NamedAttribute> discardableAttributes = {}); static CvtScaleF322xPk16Bf6F32Op create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, const Properties &properties, ::llvm::ArrayRef<::mlir::NamedAttribute> discardableAttributes = {}); static CvtScaleF322xPk16Bf6F32Op create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, const Properties &properties, ::llvm::ArrayRef<::mlir::NamedAttribute> discardableAttributes = {}); ::llvm::LogicalResult verifyInvariantsImpl(); ::llvm::LogicalResult verifyInvariants(); static ::mlir::ParseResult parse(::mlir::OpAsmParser &parser, ::mlir::OperationState &result); void print(::mlir::OpAsmPrinter &_odsPrinter); void getEffects(::llvm::SmallVectorImpl<::mlir::SideEffects::EffectInstance<::mlir::MemoryEffects::Effect>> &effects); public: }; } // namespace mlir::ROCDL MLIR_DECLARE_EXPLICIT_TYPE_ID(::mlir::ROCDL::CvtScaleF322xPk16Bf6F32Op) namespace mlir::ROCDL { //===----------------------------------------------------------------------===// // ::mlir::ROCDL::CvtScaleF322xPk16Fp6F32Op declarations //===----------------------------------------------------------------------===// namespace detail { class CvtScaleF322xPk16Fp6F32OpGenericAdaptorBase { public: using Properties = ::mlir::EmptyProperties; protected: ::mlir::DictionaryAttr odsAttrs; ::std::optional<::mlir::OperationName> odsOpName; Properties properties; ::mlir::RegionRange odsRegions; public: CvtScaleF322xPk16Fp6F32OpGenericAdaptorBase(::mlir::DictionaryAttr attrs, const Properties &properties, ::mlir::RegionRange regions = {}) : odsAttrs(attrs), properties(properties), odsRegions(regions) { if (odsAttrs) odsOpName.emplace("rocdl.cvt.scalef32.2xpk16.fp6.f32", odsAttrs.getContext()); } CvtScaleF322xPk16Fp6F32OpGenericAdaptorBase(CvtScaleF322xPk16Fp6F32Op op); std::pair getODSOperandIndexAndLength(unsigned index, unsigned odsOperandsSize) { return {index, 1}; } const Properties &getProperties() { return properties; } ::mlir::DictionaryAttr getAttributes() { return odsAttrs; } }; } // namespace detail template class CvtScaleF322xPk16Fp6F32OpGenericAdaptor : public detail::CvtScaleF322xPk16Fp6F32OpGenericAdaptorBase { using ValueT = ::llvm::detail::ValueOfRange; using Base = detail::CvtScaleF322xPk16Fp6F32OpGenericAdaptorBase; static constexpr int odsIndex_src0 = 0; static constexpr int odsIndex_src1 = 1; static constexpr int odsIndex_scale = 2; public: CvtScaleF322xPk16Fp6F32OpGenericAdaptor(RangeT values, ::mlir::DictionaryAttr attrs, const Properties &properties, ::mlir::RegionRange regions = {}) : Base(attrs, properties, regions), odsOperands(values) {} CvtScaleF322xPk16Fp6F32OpGenericAdaptor(RangeT values, ::mlir::DictionaryAttr attrs, ::mlir::PropertyRef properties, ::mlir::RegionRange regions = {}) : CvtScaleF322xPk16Fp6F32OpGenericAdaptor(values, attrs, (properties ? *properties.as() : Properties{}), regions) {} CvtScaleF322xPk16Fp6F32OpGenericAdaptor(RangeT values, ::mlir::DictionaryAttr attrs = nullptr) : CvtScaleF322xPk16Fp6F32OpGenericAdaptor(values, attrs, Properties{}, {}) {} CvtScaleF322xPk16Fp6F32OpGenericAdaptor(RangeT values, const CvtScaleF322xPk16Fp6F32OpGenericAdaptorBase &base) : Base(base), odsOperands(values) {} template >> CvtScaleF322xPk16Fp6F32OpGenericAdaptor(RangeT values, LateInst op) : Base(op), odsOperands(values) {} std::pair getODSOperandIndexAndLength(unsigned index) { return Base::getODSOperandIndexAndLength(index, odsOperands.size()); } RangeT getODSOperands(unsigned index) { auto valueRange = getODSOperandIndexAndLength(index); return {std::next(odsOperands.begin(), valueRange.first), std::next(odsOperands.begin(), valueRange.first + valueRange.second)}; } ValueT getSrc0() { return (*getODSOperands(0).begin()); } ValueT getSrc1() { return (*getODSOperands(1).begin()); } ValueT getScale() { return (*getODSOperands(2).begin()); } RangeT getOperands() { return odsOperands; } private: RangeT odsOperands; }; class CvtScaleF322xPk16Fp6F32OpAdaptor : public CvtScaleF322xPk16Fp6F32OpGenericAdaptor<::mlir::ValueRange> { public: using CvtScaleF322xPk16Fp6F32OpGenericAdaptor::CvtScaleF322xPk16Fp6F32OpGenericAdaptor; CvtScaleF322xPk16Fp6F32OpAdaptor(CvtScaleF322xPk16Fp6F32Op op); ::llvm::LogicalResult verify(::mlir::Location loc); }; class CvtScaleF322xPk16Fp6F32Op : public ::mlir::Op::Impl, ::mlir::OpTrait::ZeroSuccessors, ::mlir::OpTrait::NOperands<3>::Impl, ::mlir::OpTrait::OpInvariants, ::mlir::ConditionallySpeculatable::Trait, ::mlir::OpTrait::AlwaysSpeculatableImplTrait, ::mlir::MemoryEffectOpInterface::Trait> { public: using Op::Op; using Op::print; using Adaptor = CvtScaleF322xPk16Fp6F32OpAdaptor; template using GenericAdaptor = CvtScaleF322xPk16Fp6F32OpGenericAdaptor; using FoldAdaptor = GenericAdaptor<::llvm::ArrayRef<::mlir::Attribute>>; static constexpr int odsIndex_src0 = 0; static constexpr int odsIndex_src1 = 1; static constexpr int odsIndex_scale = 2; using Properties = FoldAdaptor::Properties; static ::llvm::ArrayRef<::llvm::StringRef> getAttributeNames() { return {}; } static constexpr ::llvm::StringLiteral getOperationName() { return ::llvm::StringLiteral("rocdl.cvt.scalef32.2xpk16.fp6.f32"); } std::pair getODSOperandIndexAndLength(unsigned index) { return {index, 1}; } ::mlir::Operation::operand_range getODSOperands(unsigned index) { auto valueRange = getODSOperandIndexAndLength(index); return {std::next(getOperation()->operand_begin(), valueRange.first), std::next(getOperation()->operand_begin(), valueRange.first + valueRange.second)}; } ::mlir::TypedValue<::mlir::VectorType> getSrc0() { return ::llvm::cast<::mlir::TypedValue<::mlir::VectorType>>(*getODSOperands(0).begin()); } ::mlir::TypedValue<::mlir::VectorType> getSrc1() { return ::llvm::cast<::mlir::TypedValue<::mlir::VectorType>>(*getODSOperands(1).begin()); } ::mlir::TypedValue<::mlir::FloatType> getScale() { return ::llvm::cast<::mlir::TypedValue<::mlir::FloatType>>(*getODSOperands(2).begin()); } ::mlir::OpOperand &getSrc0Mutable() { auto range = getODSOperandIndexAndLength(0); return getOperation()->getOpOperand(range.first); } ::mlir::OpOperand &getSrc1Mutable() { auto range = getODSOperandIndexAndLength(1); return getOperation()->getOpOperand(range.first); } ::mlir::OpOperand &getScaleMutable() { auto range = getODSOperandIndexAndLength(2); return getOperation()->getOpOperand(range.first); } std::pair getODSResultIndexAndLength(unsigned index) { return {index, 1}; } ::mlir::Operation::result_range getODSResults(unsigned index) { auto valueRange = getODSResultIndexAndLength(index); return {std::next(getOperation()->result_begin(), valueRange.first), std::next(getOperation()->result_begin(), valueRange.first + valueRange.second)}; } ::mlir::TypedValue<::mlir::VectorType> getRes() { return ::llvm::cast<::mlir::TypedValue<::mlir::VectorType>>(*getODSResults(0).begin()); } static ::llvm::LogicalResult setPropertiesFromAttr(Properties &prop, ::mlir::Attribute attr, ::llvm::function_ref<::mlir::InFlightDiagnostic()> emitError); static ::mlir::Attribute getPropertiesAsAttr(::mlir::MLIRContext *ctx, const Properties &prop); static llvm::hash_code computePropertiesHash(const Properties &prop); static std::optional getInherentAttr(::mlir::MLIRContext *ctx, const Properties &prop, llvm::StringRef name); static void setInherentAttr(Properties &prop, llvm::StringRef name, mlir::Attribute value); static void populateInherentAttrs(::mlir::MLIRContext *ctx, const Properties &prop, ::mlir::NamedAttrList &attrs); static ::llvm::LogicalResult verifyInherentAttrs(::mlir::OperationName opName, ::mlir::NamedAttrList &attrs, llvm::function_ref<::mlir::InFlightDiagnostic()> emitError); static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::Type res, ::mlir::Value src0, ::mlir::Value src1, ::mlir::Value scale); static CvtScaleF322xPk16Fp6F32Op create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::Type res, ::mlir::Value src0, ::mlir::Value src1, ::mlir::Value scale); static CvtScaleF322xPk16Fp6F32Op create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::Type res, ::mlir::Value src0, ::mlir::Value src1, ::mlir::Value scale); static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::Value src0, ::mlir::Value src1, ::mlir::Value scale); static CvtScaleF322xPk16Fp6F32Op create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::Value src0, ::mlir::Value src1, ::mlir::Value scale); static CvtScaleF322xPk16Fp6F32Op create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::Value src0, ::mlir::Value src1, ::mlir::Value scale); static void build(::mlir::OpBuilder &, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, ::llvm::ArrayRef<::mlir::NamedAttribute> attributes = {}); static CvtScaleF322xPk16Fp6F32Op create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, ::llvm::ArrayRef<::mlir::NamedAttribute> attributes = {}); static CvtScaleF322xPk16Fp6F32Op create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, ::llvm::ArrayRef<::mlir::NamedAttribute> attributes = {}); static void build(::mlir::OpBuilder &, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, const Properties &properties, ::llvm::ArrayRef<::mlir::NamedAttribute> discardableAttributes = {}); static CvtScaleF322xPk16Fp6F32Op create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, const Properties &properties, ::llvm::ArrayRef<::mlir::NamedAttribute> discardableAttributes = {}); static CvtScaleF322xPk16Fp6F32Op create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, const Properties &properties, ::llvm::ArrayRef<::mlir::NamedAttribute> discardableAttributes = {}); ::llvm::LogicalResult verifyInvariantsImpl(); ::llvm::LogicalResult verifyInvariants(); static ::mlir::ParseResult parse(::mlir::OpAsmParser &parser, ::mlir::OperationState &result); void print(::mlir::OpAsmPrinter &_odsPrinter); void getEffects(::llvm::SmallVectorImpl<::mlir::SideEffects::EffectInstance<::mlir::MemoryEffects::Effect>> &effects); public: }; } // namespace mlir::ROCDL MLIR_DECLARE_EXPLICIT_TYPE_ID(::mlir::ROCDL::CvtScaleF322xPk16Fp6F32Op) namespace mlir::ROCDL { //===----------------------------------------------------------------------===// // ::mlir::ROCDL::CvtScaleF32F16Bf8Op declarations //===----------------------------------------------------------------------===// namespace detail { class CvtScaleF32F16Bf8OpGenericAdaptorBase { public: struct Properties { using dstLoHiSelTy = ::mlir::IntegerAttr; dstLoHiSelTy dstLoHiSel; auto getDstLoHiSel() const { auto &propStorage = this->dstLoHiSel; return ::llvm::cast<::mlir::IntegerAttr>(propStorage); } void setDstLoHiSel(const ::mlir::IntegerAttr &propValue) { this->dstLoHiSel = propValue; } using srcSelIndexTy = ::mlir::IntegerAttr; srcSelIndexTy srcSelIndex; auto getSrcSelIndex() const { auto &propStorage = this->srcSelIndex; return ::llvm::cast<::mlir::IntegerAttr>(propStorage); } void setSrcSelIndex(const ::mlir::IntegerAttr &propValue) { this->srcSelIndex = propValue; } bool operator==(const Properties &rhs) const { return rhs.dstLoHiSel == this->dstLoHiSel && rhs.srcSelIndex == this->srcSelIndex && true; } bool operator!=(const Properties &rhs) const { return !(*this == rhs); } }; protected: ::mlir::DictionaryAttr odsAttrs; ::std::optional<::mlir::OperationName> odsOpName; Properties properties; ::mlir::RegionRange odsRegions; public: CvtScaleF32F16Bf8OpGenericAdaptorBase(::mlir::DictionaryAttr attrs, const Properties &properties, ::mlir::RegionRange regions = {}) : odsAttrs(attrs), properties(properties), odsRegions(regions) { if (odsAttrs) odsOpName.emplace("rocdl.cvt.scalef32.f16.bf8", odsAttrs.getContext()); } CvtScaleF32F16Bf8OpGenericAdaptorBase(CvtScaleF32F16Bf8Op op); std::pair getODSOperandIndexAndLength(unsigned index, unsigned odsOperandsSize) { return {index, 1}; } const Properties &getProperties() { return properties; } ::mlir::DictionaryAttr getAttributes() { return odsAttrs; } ::mlir::IntegerAttr getSrcSelIndexAttr() { auto attr = ::llvm::cast<::mlir::IntegerAttr>(getProperties().srcSelIndex); return attr; } uint32_t getSrcSelIndex(); ::mlir::IntegerAttr getDstLoHiSelAttr() { auto attr = ::llvm::cast<::mlir::IntegerAttr>(getProperties().dstLoHiSel); return attr; } bool getDstLoHiSel(); }; } // namespace detail template class CvtScaleF32F16Bf8OpGenericAdaptor : public detail::CvtScaleF32F16Bf8OpGenericAdaptorBase { using ValueT = ::llvm::detail::ValueOfRange; using Base = detail::CvtScaleF32F16Bf8OpGenericAdaptorBase; static constexpr int odsIndex_oldVdst = 0; static constexpr int odsIndex_src = 1; static constexpr int odsIndex_scale = 2; public: CvtScaleF32F16Bf8OpGenericAdaptor(RangeT values, ::mlir::DictionaryAttr attrs, const Properties &properties, ::mlir::RegionRange regions = {}) : Base(attrs, properties, regions), odsOperands(values) {} CvtScaleF32F16Bf8OpGenericAdaptor(RangeT values, ::mlir::DictionaryAttr attrs, ::mlir::PropertyRef properties, ::mlir::RegionRange regions = {}) : CvtScaleF32F16Bf8OpGenericAdaptor(values, attrs, (properties ? *properties.as() : Properties{}), regions) {} CvtScaleF32F16Bf8OpGenericAdaptor(RangeT values, ::mlir::DictionaryAttr attrs = nullptr) : CvtScaleF32F16Bf8OpGenericAdaptor(values, attrs, Properties{}, {}) {} CvtScaleF32F16Bf8OpGenericAdaptor(RangeT values, const CvtScaleF32F16Bf8OpGenericAdaptorBase &base) : Base(base), odsOperands(values) {} template >> CvtScaleF32F16Bf8OpGenericAdaptor(RangeT values, LateInst op) : Base(op), odsOperands(values) {} std::pair getODSOperandIndexAndLength(unsigned index) { return Base::getODSOperandIndexAndLength(index, odsOperands.size()); } RangeT getODSOperands(unsigned index) { auto valueRange = getODSOperandIndexAndLength(index); return {std::next(odsOperands.begin(), valueRange.first), std::next(odsOperands.begin(), valueRange.first + valueRange.second)}; } ValueT getOldVdst() { return (*getODSOperands(0).begin()); } ValueT getSrc() { return (*getODSOperands(1).begin()); } ValueT getScale() { return (*getODSOperands(2).begin()); } RangeT getOperands() { return odsOperands; } private: RangeT odsOperands; }; class CvtScaleF32F16Bf8OpAdaptor : public CvtScaleF32F16Bf8OpGenericAdaptor<::mlir::ValueRange> { public: using CvtScaleF32F16Bf8OpGenericAdaptor::CvtScaleF32F16Bf8OpGenericAdaptor; CvtScaleF32F16Bf8OpAdaptor(CvtScaleF32F16Bf8Op op); ::llvm::LogicalResult verify(::mlir::Location loc); }; class CvtScaleF32F16Bf8Op : public ::mlir::Op::Impl, ::mlir::OpTrait::ZeroSuccessors, ::mlir::OpTrait::NOperands<3>::Impl, ::mlir::OpTrait::OpInvariants, ::mlir::BytecodeOpInterface::Trait, ::mlir::ConditionallySpeculatable::Trait, ::mlir::OpTrait::AlwaysSpeculatableImplTrait, ::mlir::MemoryEffectOpInterface::Trait> { public: using Op::Op; using Op::print; using Adaptor = CvtScaleF32F16Bf8OpAdaptor; template using GenericAdaptor = CvtScaleF32F16Bf8OpGenericAdaptor; using FoldAdaptor = GenericAdaptor<::llvm::ArrayRef<::mlir::Attribute>>; static constexpr int odsIndex_oldVdst = 0; static constexpr int odsIndex_src = 1; static constexpr int odsIndex_scale = 2; using Properties = FoldAdaptor::Properties; static ::llvm::ArrayRef<::llvm::StringRef> getAttributeNames() { static ::llvm::StringRef attrNames[] = {::llvm::StringRef("dstLoHiSel"), ::llvm::StringRef("srcSelIndex")}; return ::llvm::ArrayRef(attrNames); } ::mlir::StringAttr getDstLoHiSelAttrName() { return getAttributeNameForIndex(0); } static ::mlir::StringAttr getDstLoHiSelAttrName(::mlir::OperationName name) { return getAttributeNameForIndex(name, 0); } ::mlir::StringAttr getSrcSelIndexAttrName() { return getAttributeNameForIndex(1); } static ::mlir::StringAttr getSrcSelIndexAttrName(::mlir::OperationName name) { return getAttributeNameForIndex(name, 1); } static constexpr ::llvm::StringLiteral getOperationName() { return ::llvm::StringLiteral("rocdl.cvt.scalef32.f16.bf8"); } std::pair getODSOperandIndexAndLength(unsigned index) { return {index, 1}; } ::mlir::Operation::operand_range getODSOperands(unsigned index) { auto valueRange = getODSOperandIndexAndLength(index); return {std::next(getOperation()->operand_begin(), valueRange.first), std::next(getOperation()->operand_begin(), valueRange.first + valueRange.second)}; } ::mlir::TypedValue<::mlir::VectorType> getOldVdst() { return ::llvm::cast<::mlir::TypedValue<::mlir::VectorType>>(*getODSOperands(0).begin()); } ::mlir::TypedValue<::mlir::IntegerType> getSrc() { return ::llvm::cast<::mlir::TypedValue<::mlir::IntegerType>>(*getODSOperands(1).begin()); } ::mlir::TypedValue<::mlir::FloatType> getScale() { return ::llvm::cast<::mlir::TypedValue<::mlir::FloatType>>(*getODSOperands(2).begin()); } ::mlir::OpOperand &getOldVdstMutable() { auto range = getODSOperandIndexAndLength(0); return getOperation()->getOpOperand(range.first); } ::mlir::OpOperand &getSrcMutable() { auto range = getODSOperandIndexAndLength(1); return getOperation()->getOpOperand(range.first); } ::mlir::OpOperand &getScaleMutable() { auto range = getODSOperandIndexAndLength(2); return getOperation()->getOpOperand(range.first); } std::pair getODSResultIndexAndLength(unsigned index) { return {index, 1}; } ::mlir::Operation::result_range getODSResults(unsigned index) { auto valueRange = getODSResultIndexAndLength(index); return {std::next(getOperation()->result_begin(), valueRange.first), std::next(getOperation()->result_begin(), valueRange.first + valueRange.second)}; } ::mlir::TypedValue<::mlir::VectorType> getRes() { return ::llvm::cast<::mlir::TypedValue<::mlir::VectorType>>(*getODSResults(0).begin()); } static ::llvm::LogicalResult setPropertiesFromAttr(Properties &prop, ::mlir::Attribute attr, ::llvm::function_ref<::mlir::InFlightDiagnostic()> emitError); static ::mlir::Attribute getPropertiesAsAttr(::mlir::MLIRContext *ctx, const Properties &prop); static llvm::hash_code computePropertiesHash(const Properties &prop); static std::optional getInherentAttr(::mlir::MLIRContext *ctx, const Properties &prop, llvm::StringRef name); static void setInherentAttr(Properties &prop, llvm::StringRef name, mlir::Attribute value); static void populateInherentAttrs(::mlir::MLIRContext *ctx, const Properties &prop, ::mlir::NamedAttrList &attrs); static ::llvm::LogicalResult verifyInherentAttrs(::mlir::OperationName opName, ::mlir::NamedAttrList &attrs, llvm::function_ref<::mlir::InFlightDiagnostic()> emitError); static ::llvm::LogicalResult readProperties(::mlir::DialectBytecodeReader &reader, ::mlir::OperationState &state); void writeProperties(::mlir::DialectBytecodeWriter &writer); ::mlir::IntegerAttr getSrcSelIndexAttr() { return ::llvm::cast<::mlir::IntegerAttr>(getProperties().srcSelIndex); } uint32_t getSrcSelIndex(); ::mlir::IntegerAttr getDstLoHiSelAttr() { return ::llvm::cast<::mlir::IntegerAttr>(getProperties().dstLoHiSel); } bool getDstLoHiSel(); void setSrcSelIndexAttr(::mlir::IntegerAttr attr) { getProperties().srcSelIndex = attr; } void setSrcSelIndex(uint32_t attrValue); void setDstLoHiSelAttr(::mlir::IntegerAttr attr) { getProperties().dstLoHiSel = attr; } void setDstLoHiSel(bool attrValue); static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::Type res, ::mlir::Value oldVdst, ::mlir::Value src, ::mlir::Value scale, ::mlir::IntegerAttr srcSelIndex, ::mlir::IntegerAttr dstLoHiSel); static CvtScaleF32F16Bf8Op create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::Type res, ::mlir::Value oldVdst, ::mlir::Value src, ::mlir::Value scale, ::mlir::IntegerAttr srcSelIndex, ::mlir::IntegerAttr dstLoHiSel); static CvtScaleF32F16Bf8Op create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::Type res, ::mlir::Value oldVdst, ::mlir::Value src, ::mlir::Value scale, ::mlir::IntegerAttr srcSelIndex, ::mlir::IntegerAttr dstLoHiSel); static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::Value oldVdst, ::mlir::Value src, ::mlir::Value scale, ::mlir::IntegerAttr srcSelIndex, ::mlir::IntegerAttr dstLoHiSel); static CvtScaleF32F16Bf8Op create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::Value oldVdst, ::mlir::Value src, ::mlir::Value scale, ::mlir::IntegerAttr srcSelIndex, ::mlir::IntegerAttr dstLoHiSel); static CvtScaleF32F16Bf8Op create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::Value oldVdst, ::mlir::Value src, ::mlir::Value scale, ::mlir::IntegerAttr srcSelIndex, ::mlir::IntegerAttr dstLoHiSel); static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::Type res, ::mlir::Value oldVdst, ::mlir::Value src, ::mlir::Value scale, uint32_t srcSelIndex, bool dstLoHiSel); static CvtScaleF32F16Bf8Op create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::Type res, ::mlir::Value oldVdst, ::mlir::Value src, ::mlir::Value scale, uint32_t srcSelIndex, bool dstLoHiSel); static CvtScaleF32F16Bf8Op create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::Type res, ::mlir::Value oldVdst, ::mlir::Value src, ::mlir::Value scale, uint32_t srcSelIndex, bool dstLoHiSel); static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::Value oldVdst, ::mlir::Value src, ::mlir::Value scale, uint32_t srcSelIndex, bool dstLoHiSel); static CvtScaleF32F16Bf8Op create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::Value oldVdst, ::mlir::Value src, ::mlir::Value scale, uint32_t srcSelIndex, bool dstLoHiSel); static CvtScaleF32F16Bf8Op create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::Value oldVdst, ::mlir::Value src, ::mlir::Value scale, uint32_t srcSelIndex, bool dstLoHiSel); static void build(::mlir::OpBuilder &, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, ::llvm::ArrayRef<::mlir::NamedAttribute> attributes = {}); static CvtScaleF32F16Bf8Op create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, ::llvm::ArrayRef<::mlir::NamedAttribute> attributes = {}); static CvtScaleF32F16Bf8Op create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, ::llvm::ArrayRef<::mlir::NamedAttribute> attributes = {}); static void build(::mlir::OpBuilder &, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, const Properties &properties, ::llvm::ArrayRef<::mlir::NamedAttribute> discardableAttributes = {}); static CvtScaleF32F16Bf8Op create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, const Properties &properties, ::llvm::ArrayRef<::mlir::NamedAttribute> discardableAttributes = {}); static CvtScaleF32F16Bf8Op create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, const Properties &properties, ::llvm::ArrayRef<::mlir::NamedAttribute> discardableAttributes = {}); ::llvm::LogicalResult verifyInvariantsImpl(); ::llvm::LogicalResult verifyInvariants(); static ::mlir::ParseResult parse(::mlir::OpAsmParser &parser, ::mlir::OperationState &result); void print(::mlir::OpAsmPrinter &_odsPrinter); void getEffects(::llvm::SmallVectorImpl<::mlir::SideEffects::EffectInstance<::mlir::MemoryEffects::Effect>> &effects); private: ::mlir::StringAttr getAttributeNameForIndex(unsigned index) { return getAttributeNameForIndex((*this)->getName(), index); } static ::mlir::StringAttr getAttributeNameForIndex(::mlir::OperationName name, unsigned index) { assert(index < 2 && "invalid attribute index"); assert(name.getStringRef() == getOperationName() && "invalid operation name"); assert(name.isRegistered() && "Operation isn't registered, missing a " "dependent dialect loading?"); return name.getAttributeNames()[index]; } public: }; } // namespace mlir::ROCDL MLIR_DECLARE_EXPLICIT_TYPE_ID(::mlir::ROCDL::CvtScaleF32F16Bf8Op) MLIR_DECLARE_EXPLICIT_TYPE_ID(::mlir::ROCDL::detail::CvtScaleF32F16Bf8OpGenericAdaptorBase::Properties) namespace mlir::ROCDL { //===----------------------------------------------------------------------===// // ::mlir::ROCDL::CvtScaleF32F16Fp8Op declarations //===----------------------------------------------------------------------===// namespace detail { class CvtScaleF32F16Fp8OpGenericAdaptorBase { public: struct Properties { using dstLoHiSelTy = ::mlir::IntegerAttr; dstLoHiSelTy dstLoHiSel; auto getDstLoHiSel() const { auto &propStorage = this->dstLoHiSel; return ::llvm::cast<::mlir::IntegerAttr>(propStorage); } void setDstLoHiSel(const ::mlir::IntegerAttr &propValue) { this->dstLoHiSel = propValue; } using srcSelIndexTy = ::mlir::IntegerAttr; srcSelIndexTy srcSelIndex; auto getSrcSelIndex() const { auto &propStorage = this->srcSelIndex; return ::llvm::cast<::mlir::IntegerAttr>(propStorage); } void setSrcSelIndex(const ::mlir::IntegerAttr &propValue) { this->srcSelIndex = propValue; } bool operator==(const Properties &rhs) const { return rhs.dstLoHiSel == this->dstLoHiSel && rhs.srcSelIndex == this->srcSelIndex && true; } bool operator!=(const Properties &rhs) const { return !(*this == rhs); } }; protected: ::mlir::DictionaryAttr odsAttrs; ::std::optional<::mlir::OperationName> odsOpName; Properties properties; ::mlir::RegionRange odsRegions; public: CvtScaleF32F16Fp8OpGenericAdaptorBase(::mlir::DictionaryAttr attrs, const Properties &properties, ::mlir::RegionRange regions = {}) : odsAttrs(attrs), properties(properties), odsRegions(regions) { if (odsAttrs) odsOpName.emplace("rocdl.cvt.scalef32.f16.fp8", odsAttrs.getContext()); } CvtScaleF32F16Fp8OpGenericAdaptorBase(CvtScaleF32F16Fp8Op op); std::pair getODSOperandIndexAndLength(unsigned index, unsigned odsOperandsSize) { return {index, 1}; } const Properties &getProperties() { return properties; } ::mlir::DictionaryAttr getAttributes() { return odsAttrs; } ::mlir::IntegerAttr getSrcSelIndexAttr() { auto attr = ::llvm::cast<::mlir::IntegerAttr>(getProperties().srcSelIndex); return attr; } uint32_t getSrcSelIndex(); ::mlir::IntegerAttr getDstLoHiSelAttr() { auto attr = ::llvm::cast<::mlir::IntegerAttr>(getProperties().dstLoHiSel); return attr; } bool getDstLoHiSel(); }; } // namespace detail template class CvtScaleF32F16Fp8OpGenericAdaptor : public detail::CvtScaleF32F16Fp8OpGenericAdaptorBase { using ValueT = ::llvm::detail::ValueOfRange; using Base = detail::CvtScaleF32F16Fp8OpGenericAdaptorBase; static constexpr int odsIndex_oldVdst = 0; static constexpr int odsIndex_src = 1; static constexpr int odsIndex_scale = 2; public: CvtScaleF32F16Fp8OpGenericAdaptor(RangeT values, ::mlir::DictionaryAttr attrs, const Properties &properties, ::mlir::RegionRange regions = {}) : Base(attrs, properties, regions), odsOperands(values) {} CvtScaleF32F16Fp8OpGenericAdaptor(RangeT values, ::mlir::DictionaryAttr attrs, ::mlir::PropertyRef properties, ::mlir::RegionRange regions = {}) : CvtScaleF32F16Fp8OpGenericAdaptor(values, attrs, (properties ? *properties.as() : Properties{}), regions) {} CvtScaleF32F16Fp8OpGenericAdaptor(RangeT values, ::mlir::DictionaryAttr attrs = nullptr) : CvtScaleF32F16Fp8OpGenericAdaptor(values, attrs, Properties{}, {}) {} CvtScaleF32F16Fp8OpGenericAdaptor(RangeT values, const CvtScaleF32F16Fp8OpGenericAdaptorBase &base) : Base(base), odsOperands(values) {} template >> CvtScaleF32F16Fp8OpGenericAdaptor(RangeT values, LateInst op) : Base(op), odsOperands(values) {} std::pair getODSOperandIndexAndLength(unsigned index) { return Base::getODSOperandIndexAndLength(index, odsOperands.size()); } RangeT getODSOperands(unsigned index) { auto valueRange = getODSOperandIndexAndLength(index); return {std::next(odsOperands.begin(), valueRange.first), std::next(odsOperands.begin(), valueRange.first + valueRange.second)}; } ValueT getOldVdst() { return (*getODSOperands(0).begin()); } ValueT getSrc() { return (*getODSOperands(1).begin()); } ValueT getScale() { return (*getODSOperands(2).begin()); } RangeT getOperands() { return odsOperands; } private: RangeT odsOperands; }; class CvtScaleF32F16Fp8OpAdaptor : public CvtScaleF32F16Fp8OpGenericAdaptor<::mlir::ValueRange> { public: using CvtScaleF32F16Fp8OpGenericAdaptor::CvtScaleF32F16Fp8OpGenericAdaptor; CvtScaleF32F16Fp8OpAdaptor(CvtScaleF32F16Fp8Op op); ::llvm::LogicalResult verify(::mlir::Location loc); }; class CvtScaleF32F16Fp8Op : public ::mlir::Op::Impl, ::mlir::OpTrait::ZeroSuccessors, ::mlir::OpTrait::NOperands<3>::Impl, ::mlir::OpTrait::OpInvariants, ::mlir::BytecodeOpInterface::Trait, ::mlir::ConditionallySpeculatable::Trait, ::mlir::OpTrait::AlwaysSpeculatableImplTrait, ::mlir::MemoryEffectOpInterface::Trait> { public: using Op::Op; using Op::print; using Adaptor = CvtScaleF32F16Fp8OpAdaptor; template using GenericAdaptor = CvtScaleF32F16Fp8OpGenericAdaptor; using FoldAdaptor = GenericAdaptor<::llvm::ArrayRef<::mlir::Attribute>>; static constexpr int odsIndex_oldVdst = 0; static constexpr int odsIndex_src = 1; static constexpr int odsIndex_scale = 2; using Properties = FoldAdaptor::Properties; static ::llvm::ArrayRef<::llvm::StringRef> getAttributeNames() { static ::llvm::StringRef attrNames[] = {::llvm::StringRef("dstLoHiSel"), ::llvm::StringRef("srcSelIndex")}; return ::llvm::ArrayRef(attrNames); } ::mlir::StringAttr getDstLoHiSelAttrName() { return getAttributeNameForIndex(0); } static ::mlir::StringAttr getDstLoHiSelAttrName(::mlir::OperationName name) { return getAttributeNameForIndex(name, 0); } ::mlir::StringAttr getSrcSelIndexAttrName() { return getAttributeNameForIndex(1); } static ::mlir::StringAttr getSrcSelIndexAttrName(::mlir::OperationName name) { return getAttributeNameForIndex(name, 1); } static constexpr ::llvm::StringLiteral getOperationName() { return ::llvm::StringLiteral("rocdl.cvt.scalef32.f16.fp8"); } std::pair getODSOperandIndexAndLength(unsigned index) { return {index, 1}; } ::mlir::Operation::operand_range getODSOperands(unsigned index) { auto valueRange = getODSOperandIndexAndLength(index); return {std::next(getOperation()->operand_begin(), valueRange.first), std::next(getOperation()->operand_begin(), valueRange.first + valueRange.second)}; } ::mlir::TypedValue<::mlir::VectorType> getOldVdst() { return ::llvm::cast<::mlir::TypedValue<::mlir::VectorType>>(*getODSOperands(0).begin()); } ::mlir::TypedValue<::mlir::IntegerType> getSrc() { return ::llvm::cast<::mlir::TypedValue<::mlir::IntegerType>>(*getODSOperands(1).begin()); } ::mlir::TypedValue<::mlir::FloatType> getScale() { return ::llvm::cast<::mlir::TypedValue<::mlir::FloatType>>(*getODSOperands(2).begin()); } ::mlir::OpOperand &getOldVdstMutable() { auto range = getODSOperandIndexAndLength(0); return getOperation()->getOpOperand(range.first); } ::mlir::OpOperand &getSrcMutable() { auto range = getODSOperandIndexAndLength(1); return getOperation()->getOpOperand(range.first); } ::mlir::OpOperand &getScaleMutable() { auto range = getODSOperandIndexAndLength(2); return getOperation()->getOpOperand(range.first); } std::pair getODSResultIndexAndLength(unsigned index) { return {index, 1}; } ::mlir::Operation::result_range getODSResults(unsigned index) { auto valueRange = getODSResultIndexAndLength(index); return {std::next(getOperation()->result_begin(), valueRange.first), std::next(getOperation()->result_begin(), valueRange.first + valueRange.second)}; } ::mlir::TypedValue<::mlir::VectorType> getRes() { return ::llvm::cast<::mlir::TypedValue<::mlir::VectorType>>(*getODSResults(0).begin()); } static ::llvm::LogicalResult setPropertiesFromAttr(Properties &prop, ::mlir::Attribute attr, ::llvm::function_ref<::mlir::InFlightDiagnostic()> emitError); static ::mlir::Attribute getPropertiesAsAttr(::mlir::MLIRContext *ctx, const Properties &prop); static llvm::hash_code computePropertiesHash(const Properties &prop); static std::optional getInherentAttr(::mlir::MLIRContext *ctx, const Properties &prop, llvm::StringRef name); static void setInherentAttr(Properties &prop, llvm::StringRef name, mlir::Attribute value); static void populateInherentAttrs(::mlir::MLIRContext *ctx, const Properties &prop, ::mlir::NamedAttrList &attrs); static ::llvm::LogicalResult verifyInherentAttrs(::mlir::OperationName opName, ::mlir::NamedAttrList &attrs, llvm::function_ref<::mlir::InFlightDiagnostic()> emitError); static ::llvm::LogicalResult readProperties(::mlir::DialectBytecodeReader &reader, ::mlir::OperationState &state); void writeProperties(::mlir::DialectBytecodeWriter &writer); ::mlir::IntegerAttr getSrcSelIndexAttr() { return ::llvm::cast<::mlir::IntegerAttr>(getProperties().srcSelIndex); } uint32_t getSrcSelIndex(); ::mlir::IntegerAttr getDstLoHiSelAttr() { return ::llvm::cast<::mlir::IntegerAttr>(getProperties().dstLoHiSel); } bool getDstLoHiSel(); void setSrcSelIndexAttr(::mlir::IntegerAttr attr) { getProperties().srcSelIndex = attr; } void setSrcSelIndex(uint32_t attrValue); void setDstLoHiSelAttr(::mlir::IntegerAttr attr) { getProperties().dstLoHiSel = attr; } void setDstLoHiSel(bool attrValue); static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::Type res, ::mlir::Value oldVdst, ::mlir::Value src, ::mlir::Value scale, ::mlir::IntegerAttr srcSelIndex, ::mlir::IntegerAttr dstLoHiSel); static CvtScaleF32F16Fp8Op create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::Type res, ::mlir::Value oldVdst, ::mlir::Value src, ::mlir::Value scale, ::mlir::IntegerAttr srcSelIndex, ::mlir::IntegerAttr dstLoHiSel); static CvtScaleF32F16Fp8Op create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::Type res, ::mlir::Value oldVdst, ::mlir::Value src, ::mlir::Value scale, ::mlir::IntegerAttr srcSelIndex, ::mlir::IntegerAttr dstLoHiSel); static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::Value oldVdst, ::mlir::Value src, ::mlir::Value scale, ::mlir::IntegerAttr srcSelIndex, ::mlir::IntegerAttr dstLoHiSel); static CvtScaleF32F16Fp8Op create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::Value oldVdst, ::mlir::Value src, ::mlir::Value scale, ::mlir::IntegerAttr srcSelIndex, ::mlir::IntegerAttr dstLoHiSel); static CvtScaleF32F16Fp8Op create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::Value oldVdst, ::mlir::Value src, ::mlir::Value scale, ::mlir::IntegerAttr srcSelIndex, ::mlir::IntegerAttr dstLoHiSel); static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::Type res, ::mlir::Value oldVdst, ::mlir::Value src, ::mlir::Value scale, uint32_t srcSelIndex, bool dstLoHiSel); static CvtScaleF32F16Fp8Op create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::Type res, ::mlir::Value oldVdst, ::mlir::Value src, ::mlir::Value scale, uint32_t srcSelIndex, bool dstLoHiSel); static CvtScaleF32F16Fp8Op create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::Type res, ::mlir::Value oldVdst, ::mlir::Value src, ::mlir::Value scale, uint32_t srcSelIndex, bool dstLoHiSel); static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::Value oldVdst, ::mlir::Value src, ::mlir::Value scale, uint32_t srcSelIndex, bool dstLoHiSel); static CvtScaleF32F16Fp8Op create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::Value oldVdst, ::mlir::Value src, ::mlir::Value scale, uint32_t srcSelIndex, bool dstLoHiSel); static CvtScaleF32F16Fp8Op create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::Value oldVdst, ::mlir::Value src, ::mlir::Value scale, uint32_t srcSelIndex, bool dstLoHiSel); static void build(::mlir::OpBuilder &, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, ::llvm::ArrayRef<::mlir::NamedAttribute> attributes = {}); static CvtScaleF32F16Fp8Op create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, ::llvm::ArrayRef<::mlir::NamedAttribute> attributes = {}); static CvtScaleF32F16Fp8Op create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, ::llvm::ArrayRef<::mlir::NamedAttribute> attributes = {}); static void build(::mlir::OpBuilder &, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, const Properties &properties, ::llvm::ArrayRef<::mlir::NamedAttribute> discardableAttributes = {}); static CvtScaleF32F16Fp8Op create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, const Properties &properties, ::llvm::ArrayRef<::mlir::NamedAttribute> discardableAttributes = {}); static CvtScaleF32F16Fp8Op create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, const Properties &properties, ::llvm::ArrayRef<::mlir::NamedAttribute> discardableAttributes = {}); ::llvm::LogicalResult verifyInvariantsImpl(); ::llvm::LogicalResult verifyInvariants(); static ::mlir::ParseResult parse(::mlir::OpAsmParser &parser, ::mlir::OperationState &result); void print(::mlir::OpAsmPrinter &_odsPrinter); void getEffects(::llvm::SmallVectorImpl<::mlir::SideEffects::EffectInstance<::mlir::MemoryEffects::Effect>> &effects); private: ::mlir::StringAttr getAttributeNameForIndex(unsigned index) { return getAttributeNameForIndex((*this)->getName(), index); } static ::mlir::StringAttr getAttributeNameForIndex(::mlir::OperationName name, unsigned index) { assert(index < 2 && "invalid attribute index"); assert(name.getStringRef() == getOperationName() && "invalid operation name"); assert(name.isRegistered() && "Operation isn't registered, missing a " "dependent dialect loading?"); return name.getAttributeNames()[index]; } public: }; } // namespace mlir::ROCDL MLIR_DECLARE_EXPLICIT_TYPE_ID(::mlir::ROCDL::CvtScaleF32F16Fp8Op) MLIR_DECLARE_EXPLICIT_TYPE_ID(::mlir::ROCDL::detail::CvtScaleF32F16Fp8OpGenericAdaptorBase::Properties) namespace mlir::ROCDL { //===----------------------------------------------------------------------===// // ::mlir::ROCDL::CvtScaleF32F32Bf8Op declarations //===----------------------------------------------------------------------===// namespace detail { class CvtScaleF32F32Bf8OpGenericAdaptorBase { public: struct Properties { using srcSelIndexTy = ::mlir::IntegerAttr; srcSelIndexTy srcSelIndex; auto getSrcSelIndex() const { auto &propStorage = this->srcSelIndex; return ::llvm::cast<::mlir::IntegerAttr>(propStorage); } void setSrcSelIndex(const ::mlir::IntegerAttr &propValue) { this->srcSelIndex = propValue; } bool operator==(const Properties &rhs) const { return rhs.srcSelIndex == this->srcSelIndex && true; } bool operator!=(const Properties &rhs) const { return !(*this == rhs); } }; protected: ::mlir::DictionaryAttr odsAttrs; ::std::optional<::mlir::OperationName> odsOpName; Properties properties; ::mlir::RegionRange odsRegions; public: CvtScaleF32F32Bf8OpGenericAdaptorBase(::mlir::DictionaryAttr attrs, const Properties &properties, ::mlir::RegionRange regions = {}) : odsAttrs(attrs), properties(properties), odsRegions(regions) { if (odsAttrs) odsOpName.emplace("rocdl.cvt.scalef32.f32.bf8", odsAttrs.getContext()); } CvtScaleF32F32Bf8OpGenericAdaptorBase(CvtScaleF32F32Bf8Op op); std::pair getODSOperandIndexAndLength(unsigned index, unsigned odsOperandsSize) { return {index, 1}; } const Properties &getProperties() { return properties; } ::mlir::DictionaryAttr getAttributes() { return odsAttrs; } ::mlir::IntegerAttr getSrcSelIndexAttr() { auto attr = ::llvm::cast<::mlir::IntegerAttr>(getProperties().srcSelIndex); return attr; } uint32_t getSrcSelIndex(); }; } // namespace detail template class CvtScaleF32F32Bf8OpGenericAdaptor : public detail::CvtScaleF32F32Bf8OpGenericAdaptorBase { using ValueT = ::llvm::detail::ValueOfRange; using Base = detail::CvtScaleF32F32Bf8OpGenericAdaptorBase; static constexpr int odsIndex_src = 0; static constexpr int odsIndex_scale = 1; public: CvtScaleF32F32Bf8OpGenericAdaptor(RangeT values, ::mlir::DictionaryAttr attrs, const Properties &properties, ::mlir::RegionRange regions = {}) : Base(attrs, properties, regions), odsOperands(values) {} CvtScaleF32F32Bf8OpGenericAdaptor(RangeT values, ::mlir::DictionaryAttr attrs, ::mlir::PropertyRef properties, ::mlir::RegionRange regions = {}) : CvtScaleF32F32Bf8OpGenericAdaptor(values, attrs, (properties ? *properties.as() : Properties{}), regions) {} CvtScaleF32F32Bf8OpGenericAdaptor(RangeT values, ::mlir::DictionaryAttr attrs = nullptr) : CvtScaleF32F32Bf8OpGenericAdaptor(values, attrs, Properties{}, {}) {} CvtScaleF32F32Bf8OpGenericAdaptor(RangeT values, const CvtScaleF32F32Bf8OpGenericAdaptorBase &base) : Base(base), odsOperands(values) {} template >> CvtScaleF32F32Bf8OpGenericAdaptor(RangeT values, LateInst op) : Base(op), odsOperands(values) {} std::pair getODSOperandIndexAndLength(unsigned index) { return Base::getODSOperandIndexAndLength(index, odsOperands.size()); } RangeT getODSOperands(unsigned index) { auto valueRange = getODSOperandIndexAndLength(index); return {std::next(odsOperands.begin(), valueRange.first), std::next(odsOperands.begin(), valueRange.first + valueRange.second)}; } ValueT getSrc() { return (*getODSOperands(0).begin()); } ValueT getScale() { return (*getODSOperands(1).begin()); } RangeT getOperands() { return odsOperands; } private: RangeT odsOperands; }; class CvtScaleF32F32Bf8OpAdaptor : public CvtScaleF32F32Bf8OpGenericAdaptor<::mlir::ValueRange> { public: using CvtScaleF32F32Bf8OpGenericAdaptor::CvtScaleF32F32Bf8OpGenericAdaptor; CvtScaleF32F32Bf8OpAdaptor(CvtScaleF32F32Bf8Op op); ::llvm::LogicalResult verify(::mlir::Location loc); }; class CvtScaleF32F32Bf8Op : public ::mlir::Op::Impl, ::mlir::OpTrait::ZeroSuccessors, ::mlir::OpTrait::NOperands<2>::Impl, ::mlir::OpTrait::OpInvariants, ::mlir::BytecodeOpInterface::Trait, ::mlir::ConditionallySpeculatable::Trait, ::mlir::OpTrait::AlwaysSpeculatableImplTrait, ::mlir::MemoryEffectOpInterface::Trait> { public: using Op::Op; using Op::print; using Adaptor = CvtScaleF32F32Bf8OpAdaptor; template using GenericAdaptor = CvtScaleF32F32Bf8OpGenericAdaptor; using FoldAdaptor = GenericAdaptor<::llvm::ArrayRef<::mlir::Attribute>>; static constexpr int odsIndex_src = 0; static constexpr int odsIndex_scale = 1; using Properties = FoldAdaptor::Properties; static ::llvm::ArrayRef<::llvm::StringRef> getAttributeNames() { static ::llvm::StringRef attrNames[] = {::llvm::StringRef("srcSelIndex")}; return ::llvm::ArrayRef(attrNames); } ::mlir::StringAttr getSrcSelIndexAttrName() { return getAttributeNameForIndex(0); } static ::mlir::StringAttr getSrcSelIndexAttrName(::mlir::OperationName name) { return getAttributeNameForIndex(name, 0); } static constexpr ::llvm::StringLiteral getOperationName() { return ::llvm::StringLiteral("rocdl.cvt.scalef32.f32.bf8"); } std::pair getODSOperandIndexAndLength(unsigned index) { return {index, 1}; } ::mlir::Operation::operand_range getODSOperands(unsigned index) { auto valueRange = getODSOperandIndexAndLength(index); return {std::next(getOperation()->operand_begin(), valueRange.first), std::next(getOperation()->operand_begin(), valueRange.first + valueRange.second)}; } ::mlir::TypedValue<::mlir::IntegerType> getSrc() { return ::llvm::cast<::mlir::TypedValue<::mlir::IntegerType>>(*getODSOperands(0).begin()); } ::mlir::TypedValue<::mlir::FloatType> getScale() { return ::llvm::cast<::mlir::TypedValue<::mlir::FloatType>>(*getODSOperands(1).begin()); } ::mlir::OpOperand &getSrcMutable() { auto range = getODSOperandIndexAndLength(0); return getOperation()->getOpOperand(range.first); } ::mlir::OpOperand &getScaleMutable() { auto range = getODSOperandIndexAndLength(1); return getOperation()->getOpOperand(range.first); } std::pair getODSResultIndexAndLength(unsigned index) { return {index, 1}; } ::mlir::Operation::result_range getODSResults(unsigned index) { auto valueRange = getODSResultIndexAndLength(index); return {std::next(getOperation()->result_begin(), valueRange.first), std::next(getOperation()->result_begin(), valueRange.first + valueRange.second)}; } ::mlir::TypedValue<::mlir::FloatType> getRes() { return ::llvm::cast<::mlir::TypedValue<::mlir::FloatType>>(*getODSResults(0).begin()); } static ::llvm::LogicalResult setPropertiesFromAttr(Properties &prop, ::mlir::Attribute attr, ::llvm::function_ref<::mlir::InFlightDiagnostic()> emitError); static ::mlir::Attribute getPropertiesAsAttr(::mlir::MLIRContext *ctx, const Properties &prop); static llvm::hash_code computePropertiesHash(const Properties &prop); static std::optional getInherentAttr(::mlir::MLIRContext *ctx, const Properties &prop, llvm::StringRef name); static void setInherentAttr(Properties &prop, llvm::StringRef name, mlir::Attribute value); static void populateInherentAttrs(::mlir::MLIRContext *ctx, const Properties &prop, ::mlir::NamedAttrList &attrs); static ::llvm::LogicalResult verifyInherentAttrs(::mlir::OperationName opName, ::mlir::NamedAttrList &attrs, llvm::function_ref<::mlir::InFlightDiagnostic()> emitError); static ::llvm::LogicalResult readProperties(::mlir::DialectBytecodeReader &reader, ::mlir::OperationState &state); void writeProperties(::mlir::DialectBytecodeWriter &writer); ::mlir::IntegerAttr getSrcSelIndexAttr() { return ::llvm::cast<::mlir::IntegerAttr>(getProperties().srcSelIndex); } uint32_t getSrcSelIndex(); void setSrcSelIndexAttr(::mlir::IntegerAttr attr) { getProperties().srcSelIndex = attr; } void setSrcSelIndex(uint32_t attrValue); static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::Type res, ::mlir::Value src, ::mlir::Value scale, ::mlir::IntegerAttr srcSelIndex); static CvtScaleF32F32Bf8Op create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::Type res, ::mlir::Value src, ::mlir::Value scale, ::mlir::IntegerAttr srcSelIndex); static CvtScaleF32F32Bf8Op create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::Type res, ::mlir::Value src, ::mlir::Value scale, ::mlir::IntegerAttr srcSelIndex); static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::Value src, ::mlir::Value scale, ::mlir::IntegerAttr srcSelIndex); static CvtScaleF32F32Bf8Op create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::Value src, ::mlir::Value scale, ::mlir::IntegerAttr srcSelIndex); static CvtScaleF32F32Bf8Op create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::Value src, ::mlir::Value scale, ::mlir::IntegerAttr srcSelIndex); static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::Type res, ::mlir::Value src, ::mlir::Value scale, uint32_t srcSelIndex); static CvtScaleF32F32Bf8Op create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::Type res, ::mlir::Value src, ::mlir::Value scale, uint32_t srcSelIndex); static CvtScaleF32F32Bf8Op create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::Type res, ::mlir::Value src, ::mlir::Value scale, uint32_t srcSelIndex); static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::Value src, ::mlir::Value scale, uint32_t srcSelIndex); static CvtScaleF32F32Bf8Op create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::Value src, ::mlir::Value scale, uint32_t srcSelIndex); static CvtScaleF32F32Bf8Op create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::Value src, ::mlir::Value scale, uint32_t srcSelIndex); static void build(::mlir::OpBuilder &, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, ::llvm::ArrayRef<::mlir::NamedAttribute> attributes = {}); static CvtScaleF32F32Bf8Op create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, ::llvm::ArrayRef<::mlir::NamedAttribute> attributes = {}); static CvtScaleF32F32Bf8Op create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, ::llvm::ArrayRef<::mlir::NamedAttribute> attributes = {}); static void build(::mlir::OpBuilder &, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, const Properties &properties, ::llvm::ArrayRef<::mlir::NamedAttribute> discardableAttributes = {}); static CvtScaleF32F32Bf8Op create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, const Properties &properties, ::llvm::ArrayRef<::mlir::NamedAttribute> discardableAttributes = {}); static CvtScaleF32F32Bf8Op create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, const Properties &properties, ::llvm::ArrayRef<::mlir::NamedAttribute> discardableAttributes = {}); ::llvm::LogicalResult verifyInvariantsImpl(); ::llvm::LogicalResult verifyInvariants(); static ::mlir::ParseResult parse(::mlir::OpAsmParser &parser, ::mlir::OperationState &result); void print(::mlir::OpAsmPrinter &_odsPrinter); void getEffects(::llvm::SmallVectorImpl<::mlir::SideEffects::EffectInstance<::mlir::MemoryEffects::Effect>> &effects); private: ::mlir::StringAttr getAttributeNameForIndex(unsigned index) { return getAttributeNameForIndex((*this)->getName(), index); } static ::mlir::StringAttr getAttributeNameForIndex(::mlir::OperationName name, unsigned index) { assert(index < 1 && "invalid attribute index"); assert(name.getStringRef() == getOperationName() && "invalid operation name"); assert(name.isRegistered() && "Operation isn't registered, missing a " "dependent dialect loading?"); return name.getAttributeNames()[index]; } public: }; } // namespace mlir::ROCDL MLIR_DECLARE_EXPLICIT_TYPE_ID(::mlir::ROCDL::CvtScaleF32F32Bf8Op) MLIR_DECLARE_EXPLICIT_TYPE_ID(::mlir::ROCDL::detail::CvtScaleF32F32Bf8OpGenericAdaptorBase::Properties) namespace mlir::ROCDL { //===----------------------------------------------------------------------===// // ::mlir::ROCDL::CvtScaleF32F32Fp8Op declarations //===----------------------------------------------------------------------===// namespace detail { class CvtScaleF32F32Fp8OpGenericAdaptorBase { public: struct Properties { using srcSelIndexTy = ::mlir::IntegerAttr; srcSelIndexTy srcSelIndex; auto getSrcSelIndex() const { auto &propStorage = this->srcSelIndex; return ::llvm::cast<::mlir::IntegerAttr>(propStorage); } void setSrcSelIndex(const ::mlir::IntegerAttr &propValue) { this->srcSelIndex = propValue; } bool operator==(const Properties &rhs) const { return rhs.srcSelIndex == this->srcSelIndex && true; } bool operator!=(const Properties &rhs) const { return !(*this == rhs); } }; protected: ::mlir::DictionaryAttr odsAttrs; ::std::optional<::mlir::OperationName> odsOpName; Properties properties; ::mlir::RegionRange odsRegions; public: CvtScaleF32F32Fp8OpGenericAdaptorBase(::mlir::DictionaryAttr attrs, const Properties &properties, ::mlir::RegionRange regions = {}) : odsAttrs(attrs), properties(properties), odsRegions(regions) { if (odsAttrs) odsOpName.emplace("rocdl.cvt.scalef32.f32.fp8", odsAttrs.getContext()); } CvtScaleF32F32Fp8OpGenericAdaptorBase(CvtScaleF32F32Fp8Op op); std::pair getODSOperandIndexAndLength(unsigned index, unsigned odsOperandsSize) { return {index, 1}; } const Properties &getProperties() { return properties; } ::mlir::DictionaryAttr getAttributes() { return odsAttrs; } ::mlir::IntegerAttr getSrcSelIndexAttr() { auto attr = ::llvm::cast<::mlir::IntegerAttr>(getProperties().srcSelIndex); return attr; } uint32_t getSrcSelIndex(); }; } // namespace detail template class CvtScaleF32F32Fp8OpGenericAdaptor : public detail::CvtScaleF32F32Fp8OpGenericAdaptorBase { using ValueT = ::llvm::detail::ValueOfRange; using Base = detail::CvtScaleF32F32Fp8OpGenericAdaptorBase; static constexpr int odsIndex_src = 0; static constexpr int odsIndex_scale = 1; public: CvtScaleF32F32Fp8OpGenericAdaptor(RangeT values, ::mlir::DictionaryAttr attrs, const Properties &properties, ::mlir::RegionRange regions = {}) : Base(attrs, properties, regions), odsOperands(values) {} CvtScaleF32F32Fp8OpGenericAdaptor(RangeT values, ::mlir::DictionaryAttr attrs, ::mlir::PropertyRef properties, ::mlir::RegionRange regions = {}) : CvtScaleF32F32Fp8OpGenericAdaptor(values, attrs, (properties ? *properties.as() : Properties{}), regions) {} CvtScaleF32F32Fp8OpGenericAdaptor(RangeT values, ::mlir::DictionaryAttr attrs = nullptr) : CvtScaleF32F32Fp8OpGenericAdaptor(values, attrs, Properties{}, {}) {} CvtScaleF32F32Fp8OpGenericAdaptor(RangeT values, const CvtScaleF32F32Fp8OpGenericAdaptorBase &base) : Base(base), odsOperands(values) {} template >> CvtScaleF32F32Fp8OpGenericAdaptor(RangeT values, LateInst op) : Base(op), odsOperands(values) {} std::pair getODSOperandIndexAndLength(unsigned index) { return Base::getODSOperandIndexAndLength(index, odsOperands.size()); } RangeT getODSOperands(unsigned index) { auto valueRange = getODSOperandIndexAndLength(index); return {std::next(odsOperands.begin(), valueRange.first), std::next(odsOperands.begin(), valueRange.first + valueRange.second)}; } ValueT getSrc() { return (*getODSOperands(0).begin()); } ValueT getScale() { return (*getODSOperands(1).begin()); } RangeT getOperands() { return odsOperands; } private: RangeT odsOperands; }; class CvtScaleF32F32Fp8OpAdaptor : public CvtScaleF32F32Fp8OpGenericAdaptor<::mlir::ValueRange> { public: using CvtScaleF32F32Fp8OpGenericAdaptor::CvtScaleF32F32Fp8OpGenericAdaptor; CvtScaleF32F32Fp8OpAdaptor(CvtScaleF32F32Fp8Op op); ::llvm::LogicalResult verify(::mlir::Location loc); }; class CvtScaleF32F32Fp8Op : public ::mlir::Op::Impl, ::mlir::OpTrait::ZeroSuccessors, ::mlir::OpTrait::NOperands<2>::Impl, ::mlir::OpTrait::OpInvariants, ::mlir::BytecodeOpInterface::Trait, ::mlir::ConditionallySpeculatable::Trait, ::mlir::OpTrait::AlwaysSpeculatableImplTrait, ::mlir::MemoryEffectOpInterface::Trait> { public: using Op::Op; using Op::print; using Adaptor = CvtScaleF32F32Fp8OpAdaptor; template using GenericAdaptor = CvtScaleF32F32Fp8OpGenericAdaptor; using FoldAdaptor = GenericAdaptor<::llvm::ArrayRef<::mlir::Attribute>>; static constexpr int odsIndex_src = 0; static constexpr int odsIndex_scale = 1; using Properties = FoldAdaptor::Properties; static ::llvm::ArrayRef<::llvm::StringRef> getAttributeNames() { static ::llvm::StringRef attrNames[] = {::llvm::StringRef("srcSelIndex")}; return ::llvm::ArrayRef(attrNames); } ::mlir::StringAttr getSrcSelIndexAttrName() { return getAttributeNameForIndex(0); } static ::mlir::StringAttr getSrcSelIndexAttrName(::mlir::OperationName name) { return getAttributeNameForIndex(name, 0); } static constexpr ::llvm::StringLiteral getOperationName() { return ::llvm::StringLiteral("rocdl.cvt.scalef32.f32.fp8"); } std::pair getODSOperandIndexAndLength(unsigned index) { return {index, 1}; } ::mlir::Operation::operand_range getODSOperands(unsigned index) { auto valueRange = getODSOperandIndexAndLength(index); return {std::next(getOperation()->operand_begin(), valueRange.first), std::next(getOperation()->operand_begin(), valueRange.first + valueRange.second)}; } ::mlir::TypedValue<::mlir::IntegerType> getSrc() { return ::llvm::cast<::mlir::TypedValue<::mlir::IntegerType>>(*getODSOperands(0).begin()); } ::mlir::TypedValue<::mlir::FloatType> getScale() { return ::llvm::cast<::mlir::TypedValue<::mlir::FloatType>>(*getODSOperands(1).begin()); } ::mlir::OpOperand &getSrcMutable() { auto range = getODSOperandIndexAndLength(0); return getOperation()->getOpOperand(range.first); } ::mlir::OpOperand &getScaleMutable() { auto range = getODSOperandIndexAndLength(1); return getOperation()->getOpOperand(range.first); } std::pair getODSResultIndexAndLength(unsigned index) { return {index, 1}; } ::mlir::Operation::result_range getODSResults(unsigned index) { auto valueRange = getODSResultIndexAndLength(index); return {std::next(getOperation()->result_begin(), valueRange.first), std::next(getOperation()->result_begin(), valueRange.first + valueRange.second)}; } ::mlir::TypedValue<::mlir::FloatType> getRes() { return ::llvm::cast<::mlir::TypedValue<::mlir::FloatType>>(*getODSResults(0).begin()); } static ::llvm::LogicalResult setPropertiesFromAttr(Properties &prop, ::mlir::Attribute attr, ::llvm::function_ref<::mlir::InFlightDiagnostic()> emitError); static ::mlir::Attribute getPropertiesAsAttr(::mlir::MLIRContext *ctx, const Properties &prop); static llvm::hash_code computePropertiesHash(const Properties &prop); static std::optional getInherentAttr(::mlir::MLIRContext *ctx, const Properties &prop, llvm::StringRef name); static void setInherentAttr(Properties &prop, llvm::StringRef name, mlir::Attribute value); static void populateInherentAttrs(::mlir::MLIRContext *ctx, const Properties &prop, ::mlir::NamedAttrList &attrs); static ::llvm::LogicalResult verifyInherentAttrs(::mlir::OperationName opName, ::mlir::NamedAttrList &attrs, llvm::function_ref<::mlir::InFlightDiagnostic()> emitError); static ::llvm::LogicalResult readProperties(::mlir::DialectBytecodeReader &reader, ::mlir::OperationState &state); void writeProperties(::mlir::DialectBytecodeWriter &writer); ::mlir::IntegerAttr getSrcSelIndexAttr() { return ::llvm::cast<::mlir::IntegerAttr>(getProperties().srcSelIndex); } uint32_t getSrcSelIndex(); void setSrcSelIndexAttr(::mlir::IntegerAttr attr) { getProperties().srcSelIndex = attr; } void setSrcSelIndex(uint32_t attrValue); static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::Type res, ::mlir::Value src, ::mlir::Value scale, ::mlir::IntegerAttr srcSelIndex); static CvtScaleF32F32Fp8Op create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::Type res, ::mlir::Value src, ::mlir::Value scale, ::mlir::IntegerAttr srcSelIndex); static CvtScaleF32F32Fp8Op create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::Type res, ::mlir::Value src, ::mlir::Value scale, ::mlir::IntegerAttr srcSelIndex); static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::Value src, ::mlir::Value scale, ::mlir::IntegerAttr srcSelIndex); static CvtScaleF32F32Fp8Op create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::Value src, ::mlir::Value scale, ::mlir::IntegerAttr srcSelIndex); static CvtScaleF32F32Fp8Op create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::Value src, ::mlir::Value scale, ::mlir::IntegerAttr srcSelIndex); static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::Type res, ::mlir::Value src, ::mlir::Value scale, uint32_t srcSelIndex); static CvtScaleF32F32Fp8Op create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::Type res, ::mlir::Value src, ::mlir::Value scale, uint32_t srcSelIndex); static CvtScaleF32F32Fp8Op create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::Type res, ::mlir::Value src, ::mlir::Value scale, uint32_t srcSelIndex); static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::Value src, ::mlir::Value scale, uint32_t srcSelIndex); static CvtScaleF32F32Fp8Op create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::Value src, ::mlir::Value scale, uint32_t srcSelIndex); static CvtScaleF32F32Fp8Op create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::Value src, ::mlir::Value scale, uint32_t srcSelIndex); static void build(::mlir::OpBuilder &, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, ::llvm::ArrayRef<::mlir::NamedAttribute> attributes = {}); static CvtScaleF32F32Fp8Op create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, ::llvm::ArrayRef<::mlir::NamedAttribute> attributes = {}); static CvtScaleF32F32Fp8Op create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, ::llvm::ArrayRef<::mlir::NamedAttribute> attributes = {}); static void build(::mlir::OpBuilder &, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, const Properties &properties, ::llvm::ArrayRef<::mlir::NamedAttribute> discardableAttributes = {}); static CvtScaleF32F32Fp8Op create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, const Properties &properties, ::llvm::ArrayRef<::mlir::NamedAttribute> discardableAttributes = {}); static CvtScaleF32F32Fp8Op create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, const Properties &properties, ::llvm::ArrayRef<::mlir::NamedAttribute> discardableAttributes = {}); ::llvm::LogicalResult verifyInvariantsImpl(); ::llvm::LogicalResult verifyInvariants(); static ::mlir::ParseResult parse(::mlir::OpAsmParser &parser, ::mlir::OperationState &result); void print(::mlir::OpAsmPrinter &_odsPrinter); void getEffects(::llvm::SmallVectorImpl<::mlir::SideEffects::EffectInstance<::mlir::MemoryEffects::Effect>> &effects); private: ::mlir::StringAttr getAttributeNameForIndex(unsigned index) { return getAttributeNameForIndex((*this)->getName(), index); } static ::mlir::StringAttr getAttributeNameForIndex(::mlir::OperationName name, unsigned index) { assert(index < 1 && "invalid attribute index"); assert(name.getStringRef() == getOperationName() && "invalid operation name"); assert(name.isRegistered() && "Operation isn't registered, missing a " "dependent dialect loading?"); return name.getAttributeNames()[index]; } public: }; } // namespace mlir::ROCDL MLIR_DECLARE_EXPLICIT_TYPE_ID(::mlir::ROCDL::CvtScaleF32F32Fp8Op) MLIR_DECLARE_EXPLICIT_TYPE_ID(::mlir::ROCDL::detail::CvtScaleF32F32Fp8OpGenericAdaptorBase::Properties) namespace mlir::ROCDL { //===----------------------------------------------------------------------===// // ::mlir::ROCDL::CvtScaleF32Pk16Bf6Bf16Op declarations //===----------------------------------------------------------------------===// namespace detail { class CvtScaleF32Pk16Bf6Bf16OpGenericAdaptorBase { public: using Properties = ::mlir::EmptyProperties; protected: ::mlir::DictionaryAttr odsAttrs; ::std::optional<::mlir::OperationName> odsOpName; Properties properties; ::mlir::RegionRange odsRegions; public: CvtScaleF32Pk16Bf6Bf16OpGenericAdaptorBase(::mlir::DictionaryAttr attrs, const Properties &properties, ::mlir::RegionRange regions = {}) : odsAttrs(attrs), properties(properties), odsRegions(regions) { if (odsAttrs) odsOpName.emplace("rocdl.cvt.scalef32.pk16.bf6.bf16", odsAttrs.getContext()); } CvtScaleF32Pk16Bf6Bf16OpGenericAdaptorBase(CvtScaleF32Pk16Bf6Bf16Op op); std::pair getODSOperandIndexAndLength(unsigned index, unsigned odsOperandsSize) { return {index, 1}; } const Properties &getProperties() { return properties; } ::mlir::DictionaryAttr getAttributes() { return odsAttrs; } }; } // namespace detail template class CvtScaleF32Pk16Bf6Bf16OpGenericAdaptor : public detail::CvtScaleF32Pk16Bf6Bf16OpGenericAdaptorBase { using ValueT = ::llvm::detail::ValueOfRange; using Base = detail::CvtScaleF32Pk16Bf6Bf16OpGenericAdaptorBase; static constexpr int odsIndex_src = 0; static constexpr int odsIndex_scale = 1; public: CvtScaleF32Pk16Bf6Bf16OpGenericAdaptor(RangeT values, ::mlir::DictionaryAttr attrs, const Properties &properties, ::mlir::RegionRange regions = {}) : Base(attrs, properties, regions), odsOperands(values) {} CvtScaleF32Pk16Bf6Bf16OpGenericAdaptor(RangeT values, ::mlir::DictionaryAttr attrs, ::mlir::PropertyRef properties, ::mlir::RegionRange regions = {}) : CvtScaleF32Pk16Bf6Bf16OpGenericAdaptor(values, attrs, (properties ? *properties.as() : Properties{}), regions) {} CvtScaleF32Pk16Bf6Bf16OpGenericAdaptor(RangeT values, ::mlir::DictionaryAttr attrs = nullptr) : CvtScaleF32Pk16Bf6Bf16OpGenericAdaptor(values, attrs, Properties{}, {}) {} CvtScaleF32Pk16Bf6Bf16OpGenericAdaptor(RangeT values, const CvtScaleF32Pk16Bf6Bf16OpGenericAdaptorBase &base) : Base(base), odsOperands(values) {} template >> CvtScaleF32Pk16Bf6Bf16OpGenericAdaptor(RangeT values, LateInst op) : Base(op), odsOperands(values) {} std::pair getODSOperandIndexAndLength(unsigned index) { return Base::getODSOperandIndexAndLength(index, odsOperands.size()); } RangeT getODSOperands(unsigned index) { auto valueRange = getODSOperandIndexAndLength(index); return {std::next(odsOperands.begin(), valueRange.first), std::next(odsOperands.begin(), valueRange.first + valueRange.second)}; } ValueT getSrc() { return (*getODSOperands(0).begin()); } ValueT getScale() { return (*getODSOperands(1).begin()); } RangeT getOperands() { return odsOperands; } private: RangeT odsOperands; }; class CvtScaleF32Pk16Bf6Bf16OpAdaptor : public CvtScaleF32Pk16Bf6Bf16OpGenericAdaptor<::mlir::ValueRange> { public: using CvtScaleF32Pk16Bf6Bf16OpGenericAdaptor::CvtScaleF32Pk16Bf6Bf16OpGenericAdaptor; CvtScaleF32Pk16Bf6Bf16OpAdaptor(CvtScaleF32Pk16Bf6Bf16Op op); ::llvm::LogicalResult verify(::mlir::Location loc); }; class CvtScaleF32Pk16Bf6Bf16Op : public ::mlir::Op::Impl, ::mlir::OpTrait::ZeroSuccessors, ::mlir::OpTrait::NOperands<2>::Impl, ::mlir::OpTrait::OpInvariants, ::mlir::ConditionallySpeculatable::Trait, ::mlir::OpTrait::AlwaysSpeculatableImplTrait, ::mlir::MemoryEffectOpInterface::Trait> { public: using Op::Op; using Op::print; using Adaptor = CvtScaleF32Pk16Bf6Bf16OpAdaptor; template using GenericAdaptor = CvtScaleF32Pk16Bf6Bf16OpGenericAdaptor; using FoldAdaptor = GenericAdaptor<::llvm::ArrayRef<::mlir::Attribute>>; static constexpr int odsIndex_src = 0; static constexpr int odsIndex_scale = 1; using Properties = FoldAdaptor::Properties; static ::llvm::ArrayRef<::llvm::StringRef> getAttributeNames() { return {}; } static constexpr ::llvm::StringLiteral getOperationName() { return ::llvm::StringLiteral("rocdl.cvt.scalef32.pk16.bf6.bf16"); } std::pair getODSOperandIndexAndLength(unsigned index) { return {index, 1}; } ::mlir::Operation::operand_range getODSOperands(unsigned index) { auto valueRange = getODSOperandIndexAndLength(index); return {std::next(getOperation()->operand_begin(), valueRange.first), std::next(getOperation()->operand_begin(), valueRange.first + valueRange.second)}; } ::mlir::TypedValue<::mlir::VectorType> getSrc() { return ::llvm::cast<::mlir::TypedValue<::mlir::VectorType>>(*getODSOperands(0).begin()); } ::mlir::TypedValue<::mlir::FloatType> getScale() { return ::llvm::cast<::mlir::TypedValue<::mlir::FloatType>>(*getODSOperands(1).begin()); } ::mlir::OpOperand &getSrcMutable() { auto range = getODSOperandIndexAndLength(0); return getOperation()->getOpOperand(range.first); } ::mlir::OpOperand &getScaleMutable() { auto range = getODSOperandIndexAndLength(1); return getOperation()->getOpOperand(range.first); } std::pair getODSResultIndexAndLength(unsigned index) { return {index, 1}; } ::mlir::Operation::result_range getODSResults(unsigned index) { auto valueRange = getODSResultIndexAndLength(index); return {std::next(getOperation()->result_begin(), valueRange.first), std::next(getOperation()->result_begin(), valueRange.first + valueRange.second)}; } ::mlir::TypedValue<::mlir::VectorType> getRes() { return ::llvm::cast<::mlir::TypedValue<::mlir::VectorType>>(*getODSResults(0).begin()); } static ::llvm::LogicalResult setPropertiesFromAttr(Properties &prop, ::mlir::Attribute attr, ::llvm::function_ref<::mlir::InFlightDiagnostic()> emitError); static ::mlir::Attribute getPropertiesAsAttr(::mlir::MLIRContext *ctx, const Properties &prop); static llvm::hash_code computePropertiesHash(const Properties &prop); static std::optional getInherentAttr(::mlir::MLIRContext *ctx, const Properties &prop, llvm::StringRef name); static void setInherentAttr(Properties &prop, llvm::StringRef name, mlir::Attribute value); static void populateInherentAttrs(::mlir::MLIRContext *ctx, const Properties &prop, ::mlir::NamedAttrList &attrs); static ::llvm::LogicalResult verifyInherentAttrs(::mlir::OperationName opName, ::mlir::NamedAttrList &attrs, llvm::function_ref<::mlir::InFlightDiagnostic()> emitError); static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::Type res, ::mlir::Value src, ::mlir::Value scale); static CvtScaleF32Pk16Bf6Bf16Op create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::Type res, ::mlir::Value src, ::mlir::Value scale); static CvtScaleF32Pk16Bf6Bf16Op create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::Type res, ::mlir::Value src, ::mlir::Value scale); static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::Value src, ::mlir::Value scale); static CvtScaleF32Pk16Bf6Bf16Op create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::Value src, ::mlir::Value scale); static CvtScaleF32Pk16Bf6Bf16Op create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::Value src, ::mlir::Value scale); static void build(::mlir::OpBuilder &, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, ::llvm::ArrayRef<::mlir::NamedAttribute> attributes = {}); static CvtScaleF32Pk16Bf6Bf16Op create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, ::llvm::ArrayRef<::mlir::NamedAttribute> attributes = {}); static CvtScaleF32Pk16Bf6Bf16Op create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, ::llvm::ArrayRef<::mlir::NamedAttribute> attributes = {}); static void build(::mlir::OpBuilder &, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, const Properties &properties, ::llvm::ArrayRef<::mlir::NamedAttribute> discardableAttributes = {}); static CvtScaleF32Pk16Bf6Bf16Op create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, const Properties &properties, ::llvm::ArrayRef<::mlir::NamedAttribute> discardableAttributes = {}); static CvtScaleF32Pk16Bf6Bf16Op create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, const Properties &properties, ::llvm::ArrayRef<::mlir::NamedAttribute> discardableAttributes = {}); ::llvm::LogicalResult verifyInvariantsImpl(); ::llvm::LogicalResult verifyInvariants(); static ::mlir::ParseResult parse(::mlir::OpAsmParser &parser, ::mlir::OperationState &result); void print(::mlir::OpAsmPrinter &_odsPrinter); void getEffects(::llvm::SmallVectorImpl<::mlir::SideEffects::EffectInstance<::mlir::MemoryEffects::Effect>> &effects); public: }; } // namespace mlir::ROCDL MLIR_DECLARE_EXPLICIT_TYPE_ID(::mlir::ROCDL::CvtScaleF32Pk16Bf6Bf16Op) namespace mlir::ROCDL { //===----------------------------------------------------------------------===// // ::mlir::ROCDL::CvtScaleF32Pk16Bf6F16Op declarations //===----------------------------------------------------------------------===// namespace detail { class CvtScaleF32Pk16Bf6F16OpGenericAdaptorBase { public: using Properties = ::mlir::EmptyProperties; protected: ::mlir::DictionaryAttr odsAttrs; ::std::optional<::mlir::OperationName> odsOpName; Properties properties; ::mlir::RegionRange odsRegions; public: CvtScaleF32Pk16Bf6F16OpGenericAdaptorBase(::mlir::DictionaryAttr attrs, const Properties &properties, ::mlir::RegionRange regions = {}) : odsAttrs(attrs), properties(properties), odsRegions(regions) { if (odsAttrs) odsOpName.emplace("rocdl.cvt.scalef32.pk16.bf6.f16", odsAttrs.getContext()); } CvtScaleF32Pk16Bf6F16OpGenericAdaptorBase(CvtScaleF32Pk16Bf6F16Op op); std::pair getODSOperandIndexAndLength(unsigned index, unsigned odsOperandsSize) { return {index, 1}; } const Properties &getProperties() { return properties; } ::mlir::DictionaryAttr getAttributes() { return odsAttrs; } }; } // namespace detail template class CvtScaleF32Pk16Bf6F16OpGenericAdaptor : public detail::CvtScaleF32Pk16Bf6F16OpGenericAdaptorBase { using ValueT = ::llvm::detail::ValueOfRange; using Base = detail::CvtScaleF32Pk16Bf6F16OpGenericAdaptorBase; static constexpr int odsIndex_src = 0; static constexpr int odsIndex_scale = 1; public: CvtScaleF32Pk16Bf6F16OpGenericAdaptor(RangeT values, ::mlir::DictionaryAttr attrs, const Properties &properties, ::mlir::RegionRange regions = {}) : Base(attrs, properties, regions), odsOperands(values) {} CvtScaleF32Pk16Bf6F16OpGenericAdaptor(RangeT values, ::mlir::DictionaryAttr attrs, ::mlir::PropertyRef properties, ::mlir::RegionRange regions = {}) : CvtScaleF32Pk16Bf6F16OpGenericAdaptor(values, attrs, (properties ? *properties.as() : Properties{}), regions) {} CvtScaleF32Pk16Bf6F16OpGenericAdaptor(RangeT values, ::mlir::DictionaryAttr attrs = nullptr) : CvtScaleF32Pk16Bf6F16OpGenericAdaptor(values, attrs, Properties{}, {}) {} CvtScaleF32Pk16Bf6F16OpGenericAdaptor(RangeT values, const CvtScaleF32Pk16Bf6F16OpGenericAdaptorBase &base) : Base(base), odsOperands(values) {} template >> CvtScaleF32Pk16Bf6F16OpGenericAdaptor(RangeT values, LateInst op) : Base(op), odsOperands(values) {} std::pair getODSOperandIndexAndLength(unsigned index) { return Base::getODSOperandIndexAndLength(index, odsOperands.size()); } RangeT getODSOperands(unsigned index) { auto valueRange = getODSOperandIndexAndLength(index); return {std::next(odsOperands.begin(), valueRange.first), std::next(odsOperands.begin(), valueRange.first + valueRange.second)}; } ValueT getSrc() { return (*getODSOperands(0).begin()); } ValueT getScale() { return (*getODSOperands(1).begin()); } RangeT getOperands() { return odsOperands; } private: RangeT odsOperands; }; class CvtScaleF32Pk16Bf6F16OpAdaptor : public CvtScaleF32Pk16Bf6F16OpGenericAdaptor<::mlir::ValueRange> { public: using CvtScaleF32Pk16Bf6F16OpGenericAdaptor::CvtScaleF32Pk16Bf6F16OpGenericAdaptor; CvtScaleF32Pk16Bf6F16OpAdaptor(CvtScaleF32Pk16Bf6F16Op op); ::llvm::LogicalResult verify(::mlir::Location loc); }; class CvtScaleF32Pk16Bf6F16Op : public ::mlir::Op::Impl, ::mlir::OpTrait::ZeroSuccessors, ::mlir::OpTrait::NOperands<2>::Impl, ::mlir::OpTrait::OpInvariants, ::mlir::ConditionallySpeculatable::Trait, ::mlir::OpTrait::AlwaysSpeculatableImplTrait, ::mlir::MemoryEffectOpInterface::Trait> { public: using Op::Op; using Op::print; using Adaptor = CvtScaleF32Pk16Bf6F16OpAdaptor; template using GenericAdaptor = CvtScaleF32Pk16Bf6F16OpGenericAdaptor; using FoldAdaptor = GenericAdaptor<::llvm::ArrayRef<::mlir::Attribute>>; static constexpr int odsIndex_src = 0; static constexpr int odsIndex_scale = 1; using Properties = FoldAdaptor::Properties; static ::llvm::ArrayRef<::llvm::StringRef> getAttributeNames() { return {}; } static constexpr ::llvm::StringLiteral getOperationName() { return ::llvm::StringLiteral("rocdl.cvt.scalef32.pk16.bf6.f16"); } std::pair getODSOperandIndexAndLength(unsigned index) { return {index, 1}; } ::mlir::Operation::operand_range getODSOperands(unsigned index) { auto valueRange = getODSOperandIndexAndLength(index); return {std::next(getOperation()->operand_begin(), valueRange.first), std::next(getOperation()->operand_begin(), valueRange.first + valueRange.second)}; } ::mlir::TypedValue<::mlir::VectorType> getSrc() { return ::llvm::cast<::mlir::TypedValue<::mlir::VectorType>>(*getODSOperands(0).begin()); } ::mlir::TypedValue<::mlir::FloatType> getScale() { return ::llvm::cast<::mlir::TypedValue<::mlir::FloatType>>(*getODSOperands(1).begin()); } ::mlir::OpOperand &getSrcMutable() { auto range = getODSOperandIndexAndLength(0); return getOperation()->getOpOperand(range.first); } ::mlir::OpOperand &getScaleMutable() { auto range = getODSOperandIndexAndLength(1); return getOperation()->getOpOperand(range.first); } std::pair getODSResultIndexAndLength(unsigned index) { return {index, 1}; } ::mlir::Operation::result_range getODSResults(unsigned index) { auto valueRange = getODSResultIndexAndLength(index); return {std::next(getOperation()->result_begin(), valueRange.first), std::next(getOperation()->result_begin(), valueRange.first + valueRange.second)}; } ::mlir::TypedValue<::mlir::VectorType> getRes() { return ::llvm::cast<::mlir::TypedValue<::mlir::VectorType>>(*getODSResults(0).begin()); } static ::llvm::LogicalResult setPropertiesFromAttr(Properties &prop, ::mlir::Attribute attr, ::llvm::function_ref<::mlir::InFlightDiagnostic()> emitError); static ::mlir::Attribute getPropertiesAsAttr(::mlir::MLIRContext *ctx, const Properties &prop); static llvm::hash_code computePropertiesHash(const Properties &prop); static std::optional getInherentAttr(::mlir::MLIRContext *ctx, const Properties &prop, llvm::StringRef name); static void setInherentAttr(Properties &prop, llvm::StringRef name, mlir::Attribute value); static void populateInherentAttrs(::mlir::MLIRContext *ctx, const Properties &prop, ::mlir::NamedAttrList &attrs); static ::llvm::LogicalResult verifyInherentAttrs(::mlir::OperationName opName, ::mlir::NamedAttrList &attrs, llvm::function_ref<::mlir::InFlightDiagnostic()> emitError); static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::Type res, ::mlir::Value src, ::mlir::Value scale); static CvtScaleF32Pk16Bf6F16Op create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::Type res, ::mlir::Value src, ::mlir::Value scale); static CvtScaleF32Pk16Bf6F16Op create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::Type res, ::mlir::Value src, ::mlir::Value scale); static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::Value src, ::mlir::Value scale); static CvtScaleF32Pk16Bf6F16Op create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::Value src, ::mlir::Value scale); static CvtScaleF32Pk16Bf6F16Op create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::Value src, ::mlir::Value scale); static void build(::mlir::OpBuilder &, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, ::llvm::ArrayRef<::mlir::NamedAttribute> attributes = {}); static CvtScaleF32Pk16Bf6F16Op create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, ::llvm::ArrayRef<::mlir::NamedAttribute> attributes = {}); static CvtScaleF32Pk16Bf6F16Op create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, ::llvm::ArrayRef<::mlir::NamedAttribute> attributes = {}); static void build(::mlir::OpBuilder &, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, const Properties &properties, ::llvm::ArrayRef<::mlir::NamedAttribute> discardableAttributes = {}); static CvtScaleF32Pk16Bf6F16Op create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, const Properties &properties, ::llvm::ArrayRef<::mlir::NamedAttribute> discardableAttributes = {}); static CvtScaleF32Pk16Bf6F16Op create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, const Properties &properties, ::llvm::ArrayRef<::mlir::NamedAttribute> discardableAttributes = {}); ::llvm::LogicalResult verifyInvariantsImpl(); ::llvm::LogicalResult verifyInvariants(); static ::mlir::ParseResult parse(::mlir::OpAsmParser &parser, ::mlir::OperationState &result); void print(::mlir::OpAsmPrinter &_odsPrinter); void getEffects(::llvm::SmallVectorImpl<::mlir::SideEffects::EffectInstance<::mlir::MemoryEffects::Effect>> &effects); public: }; } // namespace mlir::ROCDL MLIR_DECLARE_EXPLICIT_TYPE_ID(::mlir::ROCDL::CvtScaleF32Pk16Bf6F16Op) namespace mlir::ROCDL { //===----------------------------------------------------------------------===// // ::mlir::ROCDL::CvtScaleF32Pk16Bf6F32Op declarations //===----------------------------------------------------------------------===// namespace detail { class CvtScaleF32Pk16Bf6F32OpGenericAdaptorBase { public: using Properties = ::mlir::EmptyProperties; protected: ::mlir::DictionaryAttr odsAttrs; ::std::optional<::mlir::OperationName> odsOpName; Properties properties; ::mlir::RegionRange odsRegions; public: CvtScaleF32Pk16Bf6F32OpGenericAdaptorBase(::mlir::DictionaryAttr attrs, const Properties &properties, ::mlir::RegionRange regions = {}) : odsAttrs(attrs), properties(properties), odsRegions(regions) { if (odsAttrs) odsOpName.emplace("rocdl.cvt.scalef32.pk16.bf6.f32", odsAttrs.getContext()); } CvtScaleF32Pk16Bf6F32OpGenericAdaptorBase(CvtScaleF32Pk16Bf6F32Op op); std::pair getODSOperandIndexAndLength(unsigned index, unsigned odsOperandsSize) { return {index, 1}; } const Properties &getProperties() { return properties; } ::mlir::DictionaryAttr getAttributes() { return odsAttrs; } }; } // namespace detail template class CvtScaleF32Pk16Bf6F32OpGenericAdaptor : public detail::CvtScaleF32Pk16Bf6F32OpGenericAdaptorBase { using ValueT = ::llvm::detail::ValueOfRange; using Base = detail::CvtScaleF32Pk16Bf6F32OpGenericAdaptorBase; static constexpr int odsIndex_src = 0; static constexpr int odsIndex_scale = 1; public: CvtScaleF32Pk16Bf6F32OpGenericAdaptor(RangeT values, ::mlir::DictionaryAttr attrs, const Properties &properties, ::mlir::RegionRange regions = {}) : Base(attrs, properties, regions), odsOperands(values) {} CvtScaleF32Pk16Bf6F32OpGenericAdaptor(RangeT values, ::mlir::DictionaryAttr attrs, ::mlir::PropertyRef properties, ::mlir::RegionRange regions = {}) : CvtScaleF32Pk16Bf6F32OpGenericAdaptor(values, attrs, (properties ? *properties.as() : Properties{}), regions) {} CvtScaleF32Pk16Bf6F32OpGenericAdaptor(RangeT values, ::mlir::DictionaryAttr attrs = nullptr) : CvtScaleF32Pk16Bf6F32OpGenericAdaptor(values, attrs, Properties{}, {}) {} CvtScaleF32Pk16Bf6F32OpGenericAdaptor(RangeT values, const CvtScaleF32Pk16Bf6F32OpGenericAdaptorBase &base) : Base(base), odsOperands(values) {} template >> CvtScaleF32Pk16Bf6F32OpGenericAdaptor(RangeT values, LateInst op) : Base(op), odsOperands(values) {} std::pair getODSOperandIndexAndLength(unsigned index) { return Base::getODSOperandIndexAndLength(index, odsOperands.size()); } RangeT getODSOperands(unsigned index) { auto valueRange = getODSOperandIndexAndLength(index); return {std::next(odsOperands.begin(), valueRange.first), std::next(odsOperands.begin(), valueRange.first + valueRange.second)}; } ValueT getSrc() { return (*getODSOperands(0).begin()); } ValueT getScale() { return (*getODSOperands(1).begin()); } RangeT getOperands() { return odsOperands; } private: RangeT odsOperands; }; class CvtScaleF32Pk16Bf6F32OpAdaptor : public CvtScaleF32Pk16Bf6F32OpGenericAdaptor<::mlir::ValueRange> { public: using CvtScaleF32Pk16Bf6F32OpGenericAdaptor::CvtScaleF32Pk16Bf6F32OpGenericAdaptor; CvtScaleF32Pk16Bf6F32OpAdaptor(CvtScaleF32Pk16Bf6F32Op op); ::llvm::LogicalResult verify(::mlir::Location loc); }; class CvtScaleF32Pk16Bf6F32Op : public ::mlir::Op::Impl, ::mlir::OpTrait::ZeroSuccessors, ::mlir::OpTrait::NOperands<2>::Impl, ::mlir::OpTrait::OpInvariants, ::mlir::ConditionallySpeculatable::Trait, ::mlir::OpTrait::AlwaysSpeculatableImplTrait, ::mlir::MemoryEffectOpInterface::Trait> { public: using Op::Op; using Op::print; using Adaptor = CvtScaleF32Pk16Bf6F32OpAdaptor; template using GenericAdaptor = CvtScaleF32Pk16Bf6F32OpGenericAdaptor; using FoldAdaptor = GenericAdaptor<::llvm::ArrayRef<::mlir::Attribute>>; static constexpr int odsIndex_src = 0; static constexpr int odsIndex_scale = 1; using Properties = FoldAdaptor::Properties; static ::llvm::ArrayRef<::llvm::StringRef> getAttributeNames() { return {}; } static constexpr ::llvm::StringLiteral getOperationName() { return ::llvm::StringLiteral("rocdl.cvt.scalef32.pk16.bf6.f32"); } std::pair getODSOperandIndexAndLength(unsigned index) { return {index, 1}; } ::mlir::Operation::operand_range getODSOperands(unsigned index) { auto valueRange = getODSOperandIndexAndLength(index); return {std::next(getOperation()->operand_begin(), valueRange.first), std::next(getOperation()->operand_begin(), valueRange.first + valueRange.second)}; } ::mlir::TypedValue<::mlir::VectorType> getSrc() { return ::llvm::cast<::mlir::TypedValue<::mlir::VectorType>>(*getODSOperands(0).begin()); } ::mlir::TypedValue<::mlir::FloatType> getScale() { return ::llvm::cast<::mlir::TypedValue<::mlir::FloatType>>(*getODSOperands(1).begin()); } ::mlir::OpOperand &getSrcMutable() { auto range = getODSOperandIndexAndLength(0); return getOperation()->getOpOperand(range.first); } ::mlir::OpOperand &getScaleMutable() { auto range = getODSOperandIndexAndLength(1); return getOperation()->getOpOperand(range.first); } std::pair getODSResultIndexAndLength(unsigned index) { return {index, 1}; } ::mlir::Operation::result_range getODSResults(unsigned index) { auto valueRange = getODSResultIndexAndLength(index); return {std::next(getOperation()->result_begin(), valueRange.first), std::next(getOperation()->result_begin(), valueRange.first + valueRange.second)}; } ::mlir::TypedValue<::mlir::VectorType> getRes() { return ::llvm::cast<::mlir::TypedValue<::mlir::VectorType>>(*getODSResults(0).begin()); } static ::llvm::LogicalResult setPropertiesFromAttr(Properties &prop, ::mlir::Attribute attr, ::llvm::function_ref<::mlir::InFlightDiagnostic()> emitError); static ::mlir::Attribute getPropertiesAsAttr(::mlir::MLIRContext *ctx, const Properties &prop); static llvm::hash_code computePropertiesHash(const Properties &prop); static std::optional getInherentAttr(::mlir::MLIRContext *ctx, const Properties &prop, llvm::StringRef name); static void setInherentAttr(Properties &prop, llvm::StringRef name, mlir::Attribute value); static void populateInherentAttrs(::mlir::MLIRContext *ctx, const Properties &prop, ::mlir::NamedAttrList &attrs); static ::llvm::LogicalResult verifyInherentAttrs(::mlir::OperationName opName, ::mlir::NamedAttrList &attrs, llvm::function_ref<::mlir::InFlightDiagnostic()> emitError); static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::Type res, ::mlir::Value src, ::mlir::Value scale); static CvtScaleF32Pk16Bf6F32Op create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::Type res, ::mlir::Value src, ::mlir::Value scale); static CvtScaleF32Pk16Bf6F32Op create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::Type res, ::mlir::Value src, ::mlir::Value scale); static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::Value src, ::mlir::Value scale); static CvtScaleF32Pk16Bf6F32Op create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::Value src, ::mlir::Value scale); static CvtScaleF32Pk16Bf6F32Op create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::Value src, ::mlir::Value scale); static void build(::mlir::OpBuilder &, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, ::llvm::ArrayRef<::mlir::NamedAttribute> attributes = {}); static CvtScaleF32Pk16Bf6F32Op create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, ::llvm::ArrayRef<::mlir::NamedAttribute> attributes = {}); static CvtScaleF32Pk16Bf6F32Op create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, ::llvm::ArrayRef<::mlir::NamedAttribute> attributes = {}); static void build(::mlir::OpBuilder &, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, const Properties &properties, ::llvm::ArrayRef<::mlir::NamedAttribute> discardableAttributes = {}); static CvtScaleF32Pk16Bf6F32Op create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, const Properties &properties, ::llvm::ArrayRef<::mlir::NamedAttribute> discardableAttributes = {}); static CvtScaleF32Pk16Bf6F32Op create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, const Properties &properties, ::llvm::ArrayRef<::mlir::NamedAttribute> discardableAttributes = {}); ::llvm::LogicalResult verifyInvariantsImpl(); ::llvm::LogicalResult verifyInvariants(); static ::mlir::ParseResult parse(::mlir::OpAsmParser &parser, ::mlir::OperationState &result); void print(::mlir::OpAsmPrinter &_odsPrinter); void getEffects(::llvm::SmallVectorImpl<::mlir::SideEffects::EffectInstance<::mlir::MemoryEffects::Effect>> &effects); public: }; } // namespace mlir::ROCDL MLIR_DECLARE_EXPLICIT_TYPE_ID(::mlir::ROCDL::CvtScaleF32Pk16Bf6F32Op) namespace mlir::ROCDL { //===----------------------------------------------------------------------===// // ::mlir::ROCDL::CvtScaleF32Pk16Fp6Bf16Op declarations //===----------------------------------------------------------------------===// namespace detail { class CvtScaleF32Pk16Fp6Bf16OpGenericAdaptorBase { public: using Properties = ::mlir::EmptyProperties; protected: ::mlir::DictionaryAttr odsAttrs; ::std::optional<::mlir::OperationName> odsOpName; Properties properties; ::mlir::RegionRange odsRegions; public: CvtScaleF32Pk16Fp6Bf16OpGenericAdaptorBase(::mlir::DictionaryAttr attrs, const Properties &properties, ::mlir::RegionRange regions = {}) : odsAttrs(attrs), properties(properties), odsRegions(regions) { if (odsAttrs) odsOpName.emplace("rocdl.cvt.scalef32.pk16.fp6.bf16", odsAttrs.getContext()); } CvtScaleF32Pk16Fp6Bf16OpGenericAdaptorBase(CvtScaleF32Pk16Fp6Bf16Op op); std::pair getODSOperandIndexAndLength(unsigned index, unsigned odsOperandsSize) { return {index, 1}; } const Properties &getProperties() { return properties; } ::mlir::DictionaryAttr getAttributes() { return odsAttrs; } }; } // namespace detail template class CvtScaleF32Pk16Fp6Bf16OpGenericAdaptor : public detail::CvtScaleF32Pk16Fp6Bf16OpGenericAdaptorBase { using ValueT = ::llvm::detail::ValueOfRange; using Base = detail::CvtScaleF32Pk16Fp6Bf16OpGenericAdaptorBase; static constexpr int odsIndex_src = 0; static constexpr int odsIndex_scale = 1; public: CvtScaleF32Pk16Fp6Bf16OpGenericAdaptor(RangeT values, ::mlir::DictionaryAttr attrs, const Properties &properties, ::mlir::RegionRange regions = {}) : Base(attrs, properties, regions), odsOperands(values) {} CvtScaleF32Pk16Fp6Bf16OpGenericAdaptor(RangeT values, ::mlir::DictionaryAttr attrs, ::mlir::PropertyRef properties, ::mlir::RegionRange regions = {}) : CvtScaleF32Pk16Fp6Bf16OpGenericAdaptor(values, attrs, (properties ? *properties.as() : Properties{}), regions) {} CvtScaleF32Pk16Fp6Bf16OpGenericAdaptor(RangeT values, ::mlir::DictionaryAttr attrs = nullptr) : CvtScaleF32Pk16Fp6Bf16OpGenericAdaptor(values, attrs, Properties{}, {}) {} CvtScaleF32Pk16Fp6Bf16OpGenericAdaptor(RangeT values, const CvtScaleF32Pk16Fp6Bf16OpGenericAdaptorBase &base) : Base(base), odsOperands(values) {} template >> CvtScaleF32Pk16Fp6Bf16OpGenericAdaptor(RangeT values, LateInst op) : Base(op), odsOperands(values) {} std::pair getODSOperandIndexAndLength(unsigned index) { return Base::getODSOperandIndexAndLength(index, odsOperands.size()); } RangeT getODSOperands(unsigned index) { auto valueRange = getODSOperandIndexAndLength(index); return {std::next(odsOperands.begin(), valueRange.first), std::next(odsOperands.begin(), valueRange.first + valueRange.second)}; } ValueT getSrc() { return (*getODSOperands(0).begin()); } ValueT getScale() { return (*getODSOperands(1).begin()); } RangeT getOperands() { return odsOperands; } private: RangeT odsOperands; }; class CvtScaleF32Pk16Fp6Bf16OpAdaptor : public CvtScaleF32Pk16Fp6Bf16OpGenericAdaptor<::mlir::ValueRange> { public: using CvtScaleF32Pk16Fp6Bf16OpGenericAdaptor::CvtScaleF32Pk16Fp6Bf16OpGenericAdaptor; CvtScaleF32Pk16Fp6Bf16OpAdaptor(CvtScaleF32Pk16Fp6Bf16Op op); ::llvm::LogicalResult verify(::mlir::Location loc); }; class CvtScaleF32Pk16Fp6Bf16Op : public ::mlir::Op::Impl, ::mlir::OpTrait::ZeroSuccessors, ::mlir::OpTrait::NOperands<2>::Impl, ::mlir::OpTrait::OpInvariants, ::mlir::ConditionallySpeculatable::Trait, ::mlir::OpTrait::AlwaysSpeculatableImplTrait, ::mlir::MemoryEffectOpInterface::Trait> { public: using Op::Op; using Op::print; using Adaptor = CvtScaleF32Pk16Fp6Bf16OpAdaptor; template using GenericAdaptor = CvtScaleF32Pk16Fp6Bf16OpGenericAdaptor; using FoldAdaptor = GenericAdaptor<::llvm::ArrayRef<::mlir::Attribute>>; static constexpr int odsIndex_src = 0; static constexpr int odsIndex_scale = 1; using Properties = FoldAdaptor::Properties; static ::llvm::ArrayRef<::llvm::StringRef> getAttributeNames() { return {}; } static constexpr ::llvm::StringLiteral getOperationName() { return ::llvm::StringLiteral("rocdl.cvt.scalef32.pk16.fp6.bf16"); } std::pair getODSOperandIndexAndLength(unsigned index) { return {index, 1}; } ::mlir::Operation::operand_range getODSOperands(unsigned index) { auto valueRange = getODSOperandIndexAndLength(index); return {std::next(getOperation()->operand_begin(), valueRange.first), std::next(getOperation()->operand_begin(), valueRange.first + valueRange.second)}; } ::mlir::TypedValue<::mlir::VectorType> getSrc() { return ::llvm::cast<::mlir::TypedValue<::mlir::VectorType>>(*getODSOperands(0).begin()); } ::mlir::TypedValue<::mlir::FloatType> getScale() { return ::llvm::cast<::mlir::TypedValue<::mlir::FloatType>>(*getODSOperands(1).begin()); } ::mlir::OpOperand &getSrcMutable() { auto range = getODSOperandIndexAndLength(0); return getOperation()->getOpOperand(range.first); } ::mlir::OpOperand &getScaleMutable() { auto range = getODSOperandIndexAndLength(1); return getOperation()->getOpOperand(range.first); } std::pair getODSResultIndexAndLength(unsigned index) { return {index, 1}; } ::mlir::Operation::result_range getODSResults(unsigned index) { auto valueRange = getODSResultIndexAndLength(index); return {std::next(getOperation()->result_begin(), valueRange.first), std::next(getOperation()->result_begin(), valueRange.first + valueRange.second)}; } ::mlir::TypedValue<::mlir::VectorType> getRes() { return ::llvm::cast<::mlir::TypedValue<::mlir::VectorType>>(*getODSResults(0).begin()); } static ::llvm::LogicalResult setPropertiesFromAttr(Properties &prop, ::mlir::Attribute attr, ::llvm::function_ref<::mlir::InFlightDiagnostic()> emitError); static ::mlir::Attribute getPropertiesAsAttr(::mlir::MLIRContext *ctx, const Properties &prop); static llvm::hash_code computePropertiesHash(const Properties &prop); static std::optional getInherentAttr(::mlir::MLIRContext *ctx, const Properties &prop, llvm::StringRef name); static void setInherentAttr(Properties &prop, llvm::StringRef name, mlir::Attribute value); static void populateInherentAttrs(::mlir::MLIRContext *ctx, const Properties &prop, ::mlir::NamedAttrList &attrs); static ::llvm::LogicalResult verifyInherentAttrs(::mlir::OperationName opName, ::mlir::NamedAttrList &attrs, llvm::function_ref<::mlir::InFlightDiagnostic()> emitError); static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::Type res, ::mlir::Value src, ::mlir::Value scale); static CvtScaleF32Pk16Fp6Bf16Op create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::Type res, ::mlir::Value src, ::mlir::Value scale); static CvtScaleF32Pk16Fp6Bf16Op create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::Type res, ::mlir::Value src, ::mlir::Value scale); static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::Value src, ::mlir::Value scale); static CvtScaleF32Pk16Fp6Bf16Op create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::Value src, ::mlir::Value scale); static CvtScaleF32Pk16Fp6Bf16Op create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::Value src, ::mlir::Value scale); static void build(::mlir::OpBuilder &, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, ::llvm::ArrayRef<::mlir::NamedAttribute> attributes = {}); static CvtScaleF32Pk16Fp6Bf16Op create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, ::llvm::ArrayRef<::mlir::NamedAttribute> attributes = {}); static CvtScaleF32Pk16Fp6Bf16Op create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, ::llvm::ArrayRef<::mlir::NamedAttribute> attributes = {}); static void build(::mlir::OpBuilder &, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, const Properties &properties, ::llvm::ArrayRef<::mlir::NamedAttribute> discardableAttributes = {}); static CvtScaleF32Pk16Fp6Bf16Op create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, const Properties &properties, ::llvm::ArrayRef<::mlir::NamedAttribute> discardableAttributes = {}); static CvtScaleF32Pk16Fp6Bf16Op create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, const Properties &properties, ::llvm::ArrayRef<::mlir::NamedAttribute> discardableAttributes = {}); ::llvm::LogicalResult verifyInvariantsImpl(); ::llvm::LogicalResult verifyInvariants(); static ::mlir::ParseResult parse(::mlir::OpAsmParser &parser, ::mlir::OperationState &result); void print(::mlir::OpAsmPrinter &_odsPrinter); void getEffects(::llvm::SmallVectorImpl<::mlir::SideEffects::EffectInstance<::mlir::MemoryEffects::Effect>> &effects); public: }; } // namespace mlir::ROCDL MLIR_DECLARE_EXPLICIT_TYPE_ID(::mlir::ROCDL::CvtScaleF32Pk16Fp6Bf16Op) namespace mlir::ROCDL { //===----------------------------------------------------------------------===// // ::mlir::ROCDL::CvtScaleF32Pk16Fp6F16Op declarations //===----------------------------------------------------------------------===// namespace detail { class CvtScaleF32Pk16Fp6F16OpGenericAdaptorBase { public: using Properties = ::mlir::EmptyProperties; protected: ::mlir::DictionaryAttr odsAttrs; ::std::optional<::mlir::OperationName> odsOpName; Properties properties; ::mlir::RegionRange odsRegions; public: CvtScaleF32Pk16Fp6F16OpGenericAdaptorBase(::mlir::DictionaryAttr attrs, const Properties &properties, ::mlir::RegionRange regions = {}) : odsAttrs(attrs), properties(properties), odsRegions(regions) { if (odsAttrs) odsOpName.emplace("rocdl.cvt.scalef32.pk16.fp6.f16", odsAttrs.getContext()); } CvtScaleF32Pk16Fp6F16OpGenericAdaptorBase(CvtScaleF32Pk16Fp6F16Op op); std::pair getODSOperandIndexAndLength(unsigned index, unsigned odsOperandsSize) { return {index, 1}; } const Properties &getProperties() { return properties; } ::mlir::DictionaryAttr getAttributes() { return odsAttrs; } }; } // namespace detail template class CvtScaleF32Pk16Fp6F16OpGenericAdaptor : public detail::CvtScaleF32Pk16Fp6F16OpGenericAdaptorBase { using ValueT = ::llvm::detail::ValueOfRange; using Base = detail::CvtScaleF32Pk16Fp6F16OpGenericAdaptorBase; static constexpr int odsIndex_src = 0; static constexpr int odsIndex_scale = 1; public: CvtScaleF32Pk16Fp6F16OpGenericAdaptor(RangeT values, ::mlir::DictionaryAttr attrs, const Properties &properties, ::mlir::RegionRange regions = {}) : Base(attrs, properties, regions), odsOperands(values) {} CvtScaleF32Pk16Fp6F16OpGenericAdaptor(RangeT values, ::mlir::DictionaryAttr attrs, ::mlir::PropertyRef properties, ::mlir::RegionRange regions = {}) : CvtScaleF32Pk16Fp6F16OpGenericAdaptor(values, attrs, (properties ? *properties.as() : Properties{}), regions) {} CvtScaleF32Pk16Fp6F16OpGenericAdaptor(RangeT values, ::mlir::DictionaryAttr attrs = nullptr) : CvtScaleF32Pk16Fp6F16OpGenericAdaptor(values, attrs, Properties{}, {}) {} CvtScaleF32Pk16Fp6F16OpGenericAdaptor(RangeT values, const CvtScaleF32Pk16Fp6F16OpGenericAdaptorBase &base) : Base(base), odsOperands(values) {} template >> CvtScaleF32Pk16Fp6F16OpGenericAdaptor(RangeT values, LateInst op) : Base(op), odsOperands(values) {} std::pair getODSOperandIndexAndLength(unsigned index) { return Base::getODSOperandIndexAndLength(index, odsOperands.size()); } RangeT getODSOperands(unsigned index) { auto valueRange = getODSOperandIndexAndLength(index); return {std::next(odsOperands.begin(), valueRange.first), std::next(odsOperands.begin(), valueRange.first + valueRange.second)}; } ValueT getSrc() { return (*getODSOperands(0).begin()); } ValueT getScale() { return (*getODSOperands(1).begin()); } RangeT getOperands() { return odsOperands; } private: RangeT odsOperands; }; class CvtScaleF32Pk16Fp6F16OpAdaptor : public CvtScaleF32Pk16Fp6F16OpGenericAdaptor<::mlir::ValueRange> { public: using CvtScaleF32Pk16Fp6F16OpGenericAdaptor::CvtScaleF32Pk16Fp6F16OpGenericAdaptor; CvtScaleF32Pk16Fp6F16OpAdaptor(CvtScaleF32Pk16Fp6F16Op op); ::llvm::LogicalResult verify(::mlir::Location loc); }; class CvtScaleF32Pk16Fp6F16Op : public ::mlir::Op::Impl, ::mlir::OpTrait::ZeroSuccessors, ::mlir::OpTrait::NOperands<2>::Impl, ::mlir::OpTrait::OpInvariants, ::mlir::ConditionallySpeculatable::Trait, ::mlir::OpTrait::AlwaysSpeculatableImplTrait, ::mlir::MemoryEffectOpInterface::Trait> { public: using Op::Op; using Op::print; using Adaptor = CvtScaleF32Pk16Fp6F16OpAdaptor; template using GenericAdaptor = CvtScaleF32Pk16Fp6F16OpGenericAdaptor; using FoldAdaptor = GenericAdaptor<::llvm::ArrayRef<::mlir::Attribute>>; static constexpr int odsIndex_src = 0; static constexpr int odsIndex_scale = 1; using Properties = FoldAdaptor::Properties; static ::llvm::ArrayRef<::llvm::StringRef> getAttributeNames() { return {}; } static constexpr ::llvm::StringLiteral getOperationName() { return ::llvm::StringLiteral("rocdl.cvt.scalef32.pk16.fp6.f16"); } std::pair getODSOperandIndexAndLength(unsigned index) { return {index, 1}; } ::mlir::Operation::operand_range getODSOperands(unsigned index) { auto valueRange = getODSOperandIndexAndLength(index); return {std::next(getOperation()->operand_begin(), valueRange.first), std::next(getOperation()->operand_begin(), valueRange.first + valueRange.second)}; } ::mlir::TypedValue<::mlir::VectorType> getSrc() { return ::llvm::cast<::mlir::TypedValue<::mlir::VectorType>>(*getODSOperands(0).begin()); } ::mlir::TypedValue<::mlir::FloatType> getScale() { return ::llvm::cast<::mlir::TypedValue<::mlir::FloatType>>(*getODSOperands(1).begin()); } ::mlir::OpOperand &getSrcMutable() { auto range = getODSOperandIndexAndLength(0); return getOperation()->getOpOperand(range.first); } ::mlir::OpOperand &getScaleMutable() { auto range = getODSOperandIndexAndLength(1); return getOperation()->getOpOperand(range.first); } std::pair getODSResultIndexAndLength(unsigned index) { return {index, 1}; } ::mlir::Operation::result_range getODSResults(unsigned index) { auto valueRange = getODSResultIndexAndLength(index); return {std::next(getOperation()->result_begin(), valueRange.first), std::next(getOperation()->result_begin(), valueRange.first + valueRange.second)}; } ::mlir::TypedValue<::mlir::VectorType> getRes() { return ::llvm::cast<::mlir::TypedValue<::mlir::VectorType>>(*getODSResults(0).begin()); } static ::llvm::LogicalResult setPropertiesFromAttr(Properties &prop, ::mlir::Attribute attr, ::llvm::function_ref<::mlir::InFlightDiagnostic()> emitError); static ::mlir::Attribute getPropertiesAsAttr(::mlir::MLIRContext *ctx, const Properties &prop); static llvm::hash_code computePropertiesHash(const Properties &prop); static std::optional getInherentAttr(::mlir::MLIRContext *ctx, const Properties &prop, llvm::StringRef name); static void setInherentAttr(Properties &prop, llvm::StringRef name, mlir::Attribute value); static void populateInherentAttrs(::mlir::MLIRContext *ctx, const Properties &prop, ::mlir::NamedAttrList &attrs); static ::llvm::LogicalResult verifyInherentAttrs(::mlir::OperationName opName, ::mlir::NamedAttrList &attrs, llvm::function_ref<::mlir::InFlightDiagnostic()> emitError); static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::Type res, ::mlir::Value src, ::mlir::Value scale); static CvtScaleF32Pk16Fp6F16Op create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::Type res, ::mlir::Value src, ::mlir::Value scale); static CvtScaleF32Pk16Fp6F16Op create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::Type res, ::mlir::Value src, ::mlir::Value scale); static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::Value src, ::mlir::Value scale); static CvtScaleF32Pk16Fp6F16Op create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::Value src, ::mlir::Value scale); static CvtScaleF32Pk16Fp6F16Op create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::Value src, ::mlir::Value scale); static void build(::mlir::OpBuilder &, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, ::llvm::ArrayRef<::mlir::NamedAttribute> attributes = {}); static CvtScaleF32Pk16Fp6F16Op create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, ::llvm::ArrayRef<::mlir::NamedAttribute> attributes = {}); static CvtScaleF32Pk16Fp6F16Op create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, ::llvm::ArrayRef<::mlir::NamedAttribute> attributes = {}); static void build(::mlir::OpBuilder &, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, const Properties &properties, ::llvm::ArrayRef<::mlir::NamedAttribute> discardableAttributes = {}); static CvtScaleF32Pk16Fp6F16Op create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, const Properties &properties, ::llvm::ArrayRef<::mlir::NamedAttribute> discardableAttributes = {}); static CvtScaleF32Pk16Fp6F16Op create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, const Properties &properties, ::llvm::ArrayRef<::mlir::NamedAttribute> discardableAttributes = {}); ::llvm::LogicalResult verifyInvariantsImpl(); ::llvm::LogicalResult verifyInvariants(); static ::mlir::ParseResult parse(::mlir::OpAsmParser &parser, ::mlir::OperationState &result); void print(::mlir::OpAsmPrinter &_odsPrinter); void getEffects(::llvm::SmallVectorImpl<::mlir::SideEffects::EffectInstance<::mlir::MemoryEffects::Effect>> &effects); public: }; } // namespace mlir::ROCDL MLIR_DECLARE_EXPLICIT_TYPE_ID(::mlir::ROCDL::CvtScaleF32Pk16Fp6F16Op) namespace mlir::ROCDL { //===----------------------------------------------------------------------===// // ::mlir::ROCDL::CvtScaleF32Pk16Fp6F32Op declarations //===----------------------------------------------------------------------===// namespace detail { class CvtScaleF32Pk16Fp6F32OpGenericAdaptorBase { public: using Properties = ::mlir::EmptyProperties; protected: ::mlir::DictionaryAttr odsAttrs; ::std::optional<::mlir::OperationName> odsOpName; Properties properties; ::mlir::RegionRange odsRegions; public: CvtScaleF32Pk16Fp6F32OpGenericAdaptorBase(::mlir::DictionaryAttr attrs, const Properties &properties, ::mlir::RegionRange regions = {}) : odsAttrs(attrs), properties(properties), odsRegions(regions) { if (odsAttrs) odsOpName.emplace("rocdl.cvt.scalef32.pk16.fp6.f32", odsAttrs.getContext()); } CvtScaleF32Pk16Fp6F32OpGenericAdaptorBase(CvtScaleF32Pk16Fp6F32Op op); std::pair getODSOperandIndexAndLength(unsigned index, unsigned odsOperandsSize) { return {index, 1}; } const Properties &getProperties() { return properties; } ::mlir::DictionaryAttr getAttributes() { return odsAttrs; } }; } // namespace detail template class CvtScaleF32Pk16Fp6F32OpGenericAdaptor : public detail::CvtScaleF32Pk16Fp6F32OpGenericAdaptorBase { using ValueT = ::llvm::detail::ValueOfRange; using Base = detail::CvtScaleF32Pk16Fp6F32OpGenericAdaptorBase; static constexpr int odsIndex_src = 0; static constexpr int odsIndex_scale = 1; public: CvtScaleF32Pk16Fp6F32OpGenericAdaptor(RangeT values, ::mlir::DictionaryAttr attrs, const Properties &properties, ::mlir::RegionRange regions = {}) : Base(attrs, properties, regions), odsOperands(values) {} CvtScaleF32Pk16Fp6F32OpGenericAdaptor(RangeT values, ::mlir::DictionaryAttr attrs, ::mlir::PropertyRef properties, ::mlir::RegionRange regions = {}) : CvtScaleF32Pk16Fp6F32OpGenericAdaptor(values, attrs, (properties ? *properties.as() : Properties{}), regions) {} CvtScaleF32Pk16Fp6F32OpGenericAdaptor(RangeT values, ::mlir::DictionaryAttr attrs = nullptr) : CvtScaleF32Pk16Fp6F32OpGenericAdaptor(values, attrs, Properties{}, {}) {} CvtScaleF32Pk16Fp6F32OpGenericAdaptor(RangeT values, const CvtScaleF32Pk16Fp6F32OpGenericAdaptorBase &base) : Base(base), odsOperands(values) {} template >> CvtScaleF32Pk16Fp6F32OpGenericAdaptor(RangeT values, LateInst op) : Base(op), odsOperands(values) {} std::pair getODSOperandIndexAndLength(unsigned index) { return Base::getODSOperandIndexAndLength(index, odsOperands.size()); } RangeT getODSOperands(unsigned index) { auto valueRange = getODSOperandIndexAndLength(index); return {std::next(odsOperands.begin(), valueRange.first), std::next(odsOperands.begin(), valueRange.first + valueRange.second)}; } ValueT getSrc() { return (*getODSOperands(0).begin()); } ValueT getScale() { return (*getODSOperands(1).begin()); } RangeT getOperands() { return odsOperands; } private: RangeT odsOperands; }; class CvtScaleF32Pk16Fp6F32OpAdaptor : public CvtScaleF32Pk16Fp6F32OpGenericAdaptor<::mlir::ValueRange> { public: using CvtScaleF32Pk16Fp6F32OpGenericAdaptor::CvtScaleF32Pk16Fp6F32OpGenericAdaptor; CvtScaleF32Pk16Fp6F32OpAdaptor(CvtScaleF32Pk16Fp6F32Op op); ::llvm::LogicalResult verify(::mlir::Location loc); }; class CvtScaleF32Pk16Fp6F32Op : public ::mlir::Op::Impl, ::mlir::OpTrait::ZeroSuccessors, ::mlir::OpTrait::NOperands<2>::Impl, ::mlir::OpTrait::OpInvariants, ::mlir::ConditionallySpeculatable::Trait, ::mlir::OpTrait::AlwaysSpeculatableImplTrait, ::mlir::MemoryEffectOpInterface::Trait> { public: using Op::Op; using Op::print; using Adaptor = CvtScaleF32Pk16Fp6F32OpAdaptor; template using GenericAdaptor = CvtScaleF32Pk16Fp6F32OpGenericAdaptor; using FoldAdaptor = GenericAdaptor<::llvm::ArrayRef<::mlir::Attribute>>; static constexpr int odsIndex_src = 0; static constexpr int odsIndex_scale = 1; using Properties = FoldAdaptor::Properties; static ::llvm::ArrayRef<::llvm::StringRef> getAttributeNames() { return {}; } static constexpr ::llvm::StringLiteral getOperationName() { return ::llvm::StringLiteral("rocdl.cvt.scalef32.pk16.fp6.f32"); } std::pair getODSOperandIndexAndLength(unsigned index) { return {index, 1}; } ::mlir::Operation::operand_range getODSOperands(unsigned index) { auto valueRange = getODSOperandIndexAndLength(index); return {std::next(getOperation()->operand_begin(), valueRange.first), std::next(getOperation()->operand_begin(), valueRange.first + valueRange.second)}; } ::mlir::TypedValue<::mlir::VectorType> getSrc() { return ::llvm::cast<::mlir::TypedValue<::mlir::VectorType>>(*getODSOperands(0).begin()); } ::mlir::TypedValue<::mlir::FloatType> getScale() { return ::llvm::cast<::mlir::TypedValue<::mlir::FloatType>>(*getODSOperands(1).begin()); } ::mlir::OpOperand &getSrcMutable() { auto range = getODSOperandIndexAndLength(0); return getOperation()->getOpOperand(range.first); } ::mlir::OpOperand &getScaleMutable() { auto range = getODSOperandIndexAndLength(1); return getOperation()->getOpOperand(range.first); } std::pair getODSResultIndexAndLength(unsigned index) { return {index, 1}; } ::mlir::Operation::result_range getODSResults(unsigned index) { auto valueRange = getODSResultIndexAndLength(index); return {std::next(getOperation()->result_begin(), valueRange.first), std::next(getOperation()->result_begin(), valueRange.first + valueRange.second)}; } ::mlir::TypedValue<::mlir::VectorType> getRes() { return ::llvm::cast<::mlir::TypedValue<::mlir::VectorType>>(*getODSResults(0).begin()); } static ::llvm::LogicalResult setPropertiesFromAttr(Properties &prop, ::mlir::Attribute attr, ::llvm::function_ref<::mlir::InFlightDiagnostic()> emitError); static ::mlir::Attribute getPropertiesAsAttr(::mlir::MLIRContext *ctx, const Properties &prop); static llvm::hash_code computePropertiesHash(const Properties &prop); static std::optional getInherentAttr(::mlir::MLIRContext *ctx, const Properties &prop, llvm::StringRef name); static void setInherentAttr(Properties &prop, llvm::StringRef name, mlir::Attribute value); static void populateInherentAttrs(::mlir::MLIRContext *ctx, const Properties &prop, ::mlir::NamedAttrList &attrs); static ::llvm::LogicalResult verifyInherentAttrs(::mlir::OperationName opName, ::mlir::NamedAttrList &attrs, llvm::function_ref<::mlir::InFlightDiagnostic()> emitError); static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::Type res, ::mlir::Value src, ::mlir::Value scale); static CvtScaleF32Pk16Fp6F32Op create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::Type res, ::mlir::Value src, ::mlir::Value scale); static CvtScaleF32Pk16Fp6F32Op create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::Type res, ::mlir::Value src, ::mlir::Value scale); static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::Value src, ::mlir::Value scale); static CvtScaleF32Pk16Fp6F32Op create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::Value src, ::mlir::Value scale); static CvtScaleF32Pk16Fp6F32Op create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::Value src, ::mlir::Value scale); static void build(::mlir::OpBuilder &, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, ::llvm::ArrayRef<::mlir::NamedAttribute> attributes = {}); static CvtScaleF32Pk16Fp6F32Op create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, ::llvm::ArrayRef<::mlir::NamedAttribute> attributes = {}); static CvtScaleF32Pk16Fp6F32Op create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, ::llvm::ArrayRef<::mlir::NamedAttribute> attributes = {}); static void build(::mlir::OpBuilder &, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, const Properties &properties, ::llvm::ArrayRef<::mlir::NamedAttribute> discardableAttributes = {}); static CvtScaleF32Pk16Fp6F32Op create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, const Properties &properties, ::llvm::ArrayRef<::mlir::NamedAttribute> discardableAttributes = {}); static CvtScaleF32Pk16Fp6F32Op create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, const Properties &properties, ::llvm::ArrayRef<::mlir::NamedAttribute> discardableAttributes = {}); ::llvm::LogicalResult verifyInvariantsImpl(); ::llvm::LogicalResult verifyInvariants(); static ::mlir::ParseResult parse(::mlir::OpAsmParser &parser, ::mlir::OperationState &result); void print(::mlir::OpAsmPrinter &_odsPrinter); void getEffects(::llvm::SmallVectorImpl<::mlir::SideEffects::EffectInstance<::mlir::MemoryEffects::Effect>> &effects); public: }; } // namespace mlir::ROCDL MLIR_DECLARE_EXPLICIT_TYPE_ID(::mlir::ROCDL::CvtScaleF32Pk16Fp6F32Op) namespace mlir::ROCDL { //===----------------------------------------------------------------------===// // ::mlir::ROCDL::CvtScaleF32Pk32Bf16Bf6Op declarations //===----------------------------------------------------------------------===// namespace detail { class CvtScaleF32Pk32Bf16Bf6OpGenericAdaptorBase { public: using Properties = ::mlir::EmptyProperties; protected: ::mlir::DictionaryAttr odsAttrs; ::std::optional<::mlir::OperationName> odsOpName; Properties properties; ::mlir::RegionRange odsRegions; public: CvtScaleF32Pk32Bf16Bf6OpGenericAdaptorBase(::mlir::DictionaryAttr attrs, const Properties &properties, ::mlir::RegionRange regions = {}) : odsAttrs(attrs), properties(properties), odsRegions(regions) { if (odsAttrs) odsOpName.emplace("rocdl.cvt.scalef32.pk32.bf16.bf6", odsAttrs.getContext()); } CvtScaleF32Pk32Bf16Bf6OpGenericAdaptorBase(CvtScaleF32Pk32Bf16Bf6Op op); std::pair getODSOperandIndexAndLength(unsigned index, unsigned odsOperandsSize) { return {index, 1}; } const Properties &getProperties() { return properties; } ::mlir::DictionaryAttr getAttributes() { return odsAttrs; } }; } // namespace detail template class CvtScaleF32Pk32Bf16Bf6OpGenericAdaptor : public detail::CvtScaleF32Pk32Bf16Bf6OpGenericAdaptorBase { using ValueT = ::llvm::detail::ValueOfRange; using Base = detail::CvtScaleF32Pk32Bf16Bf6OpGenericAdaptorBase; static constexpr int odsIndex_src = 0; static constexpr int odsIndex_scale = 1; public: CvtScaleF32Pk32Bf16Bf6OpGenericAdaptor(RangeT values, ::mlir::DictionaryAttr attrs, const Properties &properties, ::mlir::RegionRange regions = {}) : Base(attrs, properties, regions), odsOperands(values) {} CvtScaleF32Pk32Bf16Bf6OpGenericAdaptor(RangeT values, ::mlir::DictionaryAttr attrs, ::mlir::PropertyRef properties, ::mlir::RegionRange regions = {}) : CvtScaleF32Pk32Bf16Bf6OpGenericAdaptor(values, attrs, (properties ? *properties.as() : Properties{}), regions) {} CvtScaleF32Pk32Bf16Bf6OpGenericAdaptor(RangeT values, ::mlir::DictionaryAttr attrs = nullptr) : CvtScaleF32Pk32Bf16Bf6OpGenericAdaptor(values, attrs, Properties{}, {}) {} CvtScaleF32Pk32Bf16Bf6OpGenericAdaptor(RangeT values, const CvtScaleF32Pk32Bf16Bf6OpGenericAdaptorBase &base) : Base(base), odsOperands(values) {} template >> CvtScaleF32Pk32Bf16Bf6OpGenericAdaptor(RangeT values, LateInst op) : Base(op), odsOperands(values) {} std::pair getODSOperandIndexAndLength(unsigned index) { return Base::getODSOperandIndexAndLength(index, odsOperands.size()); } RangeT getODSOperands(unsigned index) { auto valueRange = getODSOperandIndexAndLength(index); return {std::next(odsOperands.begin(), valueRange.first), std::next(odsOperands.begin(), valueRange.first + valueRange.second)}; } ValueT getSrc() { return (*getODSOperands(0).begin()); } ValueT getScale() { return (*getODSOperands(1).begin()); } RangeT getOperands() { return odsOperands; } private: RangeT odsOperands; }; class CvtScaleF32Pk32Bf16Bf6OpAdaptor : public CvtScaleF32Pk32Bf16Bf6OpGenericAdaptor<::mlir::ValueRange> { public: using CvtScaleF32Pk32Bf16Bf6OpGenericAdaptor::CvtScaleF32Pk32Bf16Bf6OpGenericAdaptor; CvtScaleF32Pk32Bf16Bf6OpAdaptor(CvtScaleF32Pk32Bf16Bf6Op op); ::llvm::LogicalResult verify(::mlir::Location loc); }; class CvtScaleF32Pk32Bf16Bf6Op : public ::mlir::Op::Impl, ::mlir::OpTrait::ZeroSuccessors, ::mlir::OpTrait::NOperands<2>::Impl, ::mlir::OpTrait::OpInvariants, ::mlir::ConditionallySpeculatable::Trait, ::mlir::OpTrait::AlwaysSpeculatableImplTrait, ::mlir::MemoryEffectOpInterface::Trait> { public: using Op::Op; using Op::print; using Adaptor = CvtScaleF32Pk32Bf16Bf6OpAdaptor; template using GenericAdaptor = CvtScaleF32Pk32Bf16Bf6OpGenericAdaptor; using FoldAdaptor = GenericAdaptor<::llvm::ArrayRef<::mlir::Attribute>>; static constexpr int odsIndex_src = 0; static constexpr int odsIndex_scale = 1; using Properties = FoldAdaptor::Properties; static ::llvm::ArrayRef<::llvm::StringRef> getAttributeNames() { return {}; } static constexpr ::llvm::StringLiteral getOperationName() { return ::llvm::StringLiteral("rocdl.cvt.scalef32.pk32.bf16.bf6"); } std::pair getODSOperandIndexAndLength(unsigned index) { return {index, 1}; } ::mlir::Operation::operand_range getODSOperands(unsigned index) { auto valueRange = getODSOperandIndexAndLength(index); return {std::next(getOperation()->operand_begin(), valueRange.first), std::next(getOperation()->operand_begin(), valueRange.first + valueRange.second)}; } ::mlir::TypedValue<::mlir::VectorType> getSrc() { return ::llvm::cast<::mlir::TypedValue<::mlir::VectorType>>(*getODSOperands(0).begin()); } ::mlir::TypedValue<::mlir::FloatType> getScale() { return ::llvm::cast<::mlir::TypedValue<::mlir::FloatType>>(*getODSOperands(1).begin()); } ::mlir::OpOperand &getSrcMutable() { auto range = getODSOperandIndexAndLength(0); return getOperation()->getOpOperand(range.first); } ::mlir::OpOperand &getScaleMutable() { auto range = getODSOperandIndexAndLength(1); return getOperation()->getOpOperand(range.first); } std::pair getODSResultIndexAndLength(unsigned index) { return {index, 1}; } ::mlir::Operation::result_range getODSResults(unsigned index) { auto valueRange = getODSResultIndexAndLength(index); return {std::next(getOperation()->result_begin(), valueRange.first), std::next(getOperation()->result_begin(), valueRange.first + valueRange.second)}; } ::mlir::TypedValue<::mlir::VectorType> getRes() { return ::llvm::cast<::mlir::TypedValue<::mlir::VectorType>>(*getODSResults(0).begin()); } static ::llvm::LogicalResult setPropertiesFromAttr(Properties &prop, ::mlir::Attribute attr, ::llvm::function_ref<::mlir::InFlightDiagnostic()> emitError); static ::mlir::Attribute getPropertiesAsAttr(::mlir::MLIRContext *ctx, const Properties &prop); static llvm::hash_code computePropertiesHash(const Properties &prop); static std::optional getInherentAttr(::mlir::MLIRContext *ctx, const Properties &prop, llvm::StringRef name); static void setInherentAttr(Properties &prop, llvm::StringRef name, mlir::Attribute value); static void populateInherentAttrs(::mlir::MLIRContext *ctx, const Properties &prop, ::mlir::NamedAttrList &attrs); static ::llvm::LogicalResult verifyInherentAttrs(::mlir::OperationName opName, ::mlir::NamedAttrList &attrs, llvm::function_ref<::mlir::InFlightDiagnostic()> emitError); static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::Type res, ::mlir::Value src, ::mlir::Value scale); static CvtScaleF32Pk32Bf16Bf6Op create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::Type res, ::mlir::Value src, ::mlir::Value scale); static CvtScaleF32Pk32Bf16Bf6Op create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::Type res, ::mlir::Value src, ::mlir::Value scale); static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::Value src, ::mlir::Value scale); static CvtScaleF32Pk32Bf16Bf6Op create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::Value src, ::mlir::Value scale); static CvtScaleF32Pk32Bf16Bf6Op create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::Value src, ::mlir::Value scale); static void build(::mlir::OpBuilder &, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, ::llvm::ArrayRef<::mlir::NamedAttribute> attributes = {}); static CvtScaleF32Pk32Bf16Bf6Op create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, ::llvm::ArrayRef<::mlir::NamedAttribute> attributes = {}); static CvtScaleF32Pk32Bf16Bf6Op create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, ::llvm::ArrayRef<::mlir::NamedAttribute> attributes = {}); static void build(::mlir::OpBuilder &, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, const Properties &properties, ::llvm::ArrayRef<::mlir::NamedAttribute> discardableAttributes = {}); static CvtScaleF32Pk32Bf16Bf6Op create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, const Properties &properties, ::llvm::ArrayRef<::mlir::NamedAttribute> discardableAttributes = {}); static CvtScaleF32Pk32Bf16Bf6Op create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, const Properties &properties, ::llvm::ArrayRef<::mlir::NamedAttribute> discardableAttributes = {}); ::llvm::LogicalResult verifyInvariantsImpl(); ::llvm::LogicalResult verifyInvariants(); static ::mlir::ParseResult parse(::mlir::OpAsmParser &parser, ::mlir::OperationState &result); void print(::mlir::OpAsmPrinter &_odsPrinter); void getEffects(::llvm::SmallVectorImpl<::mlir::SideEffects::EffectInstance<::mlir::MemoryEffects::Effect>> &effects); public: }; } // namespace mlir::ROCDL MLIR_DECLARE_EXPLICIT_TYPE_ID(::mlir::ROCDL::CvtScaleF32Pk32Bf16Bf6Op) namespace mlir::ROCDL { //===----------------------------------------------------------------------===// // ::mlir::ROCDL::CvtScaleF32Pk32Bf16Fp6Op declarations //===----------------------------------------------------------------------===// namespace detail { class CvtScaleF32Pk32Bf16Fp6OpGenericAdaptorBase { public: using Properties = ::mlir::EmptyProperties; protected: ::mlir::DictionaryAttr odsAttrs; ::std::optional<::mlir::OperationName> odsOpName; Properties properties; ::mlir::RegionRange odsRegions; public: CvtScaleF32Pk32Bf16Fp6OpGenericAdaptorBase(::mlir::DictionaryAttr attrs, const Properties &properties, ::mlir::RegionRange regions = {}) : odsAttrs(attrs), properties(properties), odsRegions(regions) { if (odsAttrs) odsOpName.emplace("rocdl.cvt.scalef32.pk32.bf16.fp6", odsAttrs.getContext()); } CvtScaleF32Pk32Bf16Fp6OpGenericAdaptorBase(CvtScaleF32Pk32Bf16Fp6Op op); std::pair getODSOperandIndexAndLength(unsigned index, unsigned odsOperandsSize) { return {index, 1}; } const Properties &getProperties() { return properties; } ::mlir::DictionaryAttr getAttributes() { return odsAttrs; } }; } // namespace detail template class CvtScaleF32Pk32Bf16Fp6OpGenericAdaptor : public detail::CvtScaleF32Pk32Bf16Fp6OpGenericAdaptorBase { using ValueT = ::llvm::detail::ValueOfRange; using Base = detail::CvtScaleF32Pk32Bf16Fp6OpGenericAdaptorBase; static constexpr int odsIndex_src = 0; static constexpr int odsIndex_scale = 1; public: CvtScaleF32Pk32Bf16Fp6OpGenericAdaptor(RangeT values, ::mlir::DictionaryAttr attrs, const Properties &properties, ::mlir::RegionRange regions = {}) : Base(attrs, properties, regions), odsOperands(values) {} CvtScaleF32Pk32Bf16Fp6OpGenericAdaptor(RangeT values, ::mlir::DictionaryAttr attrs, ::mlir::PropertyRef properties, ::mlir::RegionRange regions = {}) : CvtScaleF32Pk32Bf16Fp6OpGenericAdaptor(values, attrs, (properties ? *properties.as() : Properties{}), regions) {} CvtScaleF32Pk32Bf16Fp6OpGenericAdaptor(RangeT values, ::mlir::DictionaryAttr attrs = nullptr) : CvtScaleF32Pk32Bf16Fp6OpGenericAdaptor(values, attrs, Properties{}, {}) {} CvtScaleF32Pk32Bf16Fp6OpGenericAdaptor(RangeT values, const CvtScaleF32Pk32Bf16Fp6OpGenericAdaptorBase &base) : Base(base), odsOperands(values) {} template >> CvtScaleF32Pk32Bf16Fp6OpGenericAdaptor(RangeT values, LateInst op) : Base(op), odsOperands(values) {} std::pair getODSOperandIndexAndLength(unsigned index) { return Base::getODSOperandIndexAndLength(index, odsOperands.size()); } RangeT getODSOperands(unsigned index) { auto valueRange = getODSOperandIndexAndLength(index); return {std::next(odsOperands.begin(), valueRange.first), std::next(odsOperands.begin(), valueRange.first + valueRange.second)}; } ValueT getSrc() { return (*getODSOperands(0).begin()); } ValueT getScale() { return (*getODSOperands(1).begin()); } RangeT getOperands() { return odsOperands; } private: RangeT odsOperands; }; class CvtScaleF32Pk32Bf16Fp6OpAdaptor : public CvtScaleF32Pk32Bf16Fp6OpGenericAdaptor<::mlir::ValueRange> { public: using CvtScaleF32Pk32Bf16Fp6OpGenericAdaptor::CvtScaleF32Pk32Bf16Fp6OpGenericAdaptor; CvtScaleF32Pk32Bf16Fp6OpAdaptor(CvtScaleF32Pk32Bf16Fp6Op op); ::llvm::LogicalResult verify(::mlir::Location loc); }; class CvtScaleF32Pk32Bf16Fp6Op : public ::mlir::Op::Impl, ::mlir::OpTrait::ZeroSuccessors, ::mlir::OpTrait::NOperands<2>::Impl, ::mlir::OpTrait::OpInvariants, ::mlir::ConditionallySpeculatable::Trait, ::mlir::OpTrait::AlwaysSpeculatableImplTrait, ::mlir::MemoryEffectOpInterface::Trait> { public: using Op::Op; using Op::print; using Adaptor = CvtScaleF32Pk32Bf16Fp6OpAdaptor; template using GenericAdaptor = CvtScaleF32Pk32Bf16Fp6OpGenericAdaptor; using FoldAdaptor = GenericAdaptor<::llvm::ArrayRef<::mlir::Attribute>>; static constexpr int odsIndex_src = 0; static constexpr int odsIndex_scale = 1; using Properties = FoldAdaptor::Properties; static ::llvm::ArrayRef<::llvm::StringRef> getAttributeNames() { return {}; } static constexpr ::llvm::StringLiteral getOperationName() { return ::llvm::StringLiteral("rocdl.cvt.scalef32.pk32.bf16.fp6"); } std::pair getODSOperandIndexAndLength(unsigned index) { return {index, 1}; } ::mlir::Operation::operand_range getODSOperands(unsigned index) { auto valueRange = getODSOperandIndexAndLength(index); return {std::next(getOperation()->operand_begin(), valueRange.first), std::next(getOperation()->operand_begin(), valueRange.first + valueRange.second)}; } ::mlir::TypedValue<::mlir::VectorType> getSrc() { return ::llvm::cast<::mlir::TypedValue<::mlir::VectorType>>(*getODSOperands(0).begin()); } ::mlir::TypedValue<::mlir::FloatType> getScale() { return ::llvm::cast<::mlir::TypedValue<::mlir::FloatType>>(*getODSOperands(1).begin()); } ::mlir::OpOperand &getSrcMutable() { auto range = getODSOperandIndexAndLength(0); return getOperation()->getOpOperand(range.first); } ::mlir::OpOperand &getScaleMutable() { auto range = getODSOperandIndexAndLength(1); return getOperation()->getOpOperand(range.first); } std::pair getODSResultIndexAndLength(unsigned index) { return {index, 1}; } ::mlir::Operation::result_range getODSResults(unsigned index) { auto valueRange = getODSResultIndexAndLength(index); return {std::next(getOperation()->result_begin(), valueRange.first), std::next(getOperation()->result_begin(), valueRange.first + valueRange.second)}; } ::mlir::TypedValue<::mlir::VectorType> getRes() { return ::llvm::cast<::mlir::TypedValue<::mlir::VectorType>>(*getODSResults(0).begin()); } static ::llvm::LogicalResult setPropertiesFromAttr(Properties &prop, ::mlir::Attribute attr, ::llvm::function_ref<::mlir::InFlightDiagnostic()> emitError); static ::mlir::Attribute getPropertiesAsAttr(::mlir::MLIRContext *ctx, const Properties &prop); static llvm::hash_code computePropertiesHash(const Properties &prop); static std::optional getInherentAttr(::mlir::MLIRContext *ctx, const Properties &prop, llvm::StringRef name); static void setInherentAttr(Properties &prop, llvm::StringRef name, mlir::Attribute value); static void populateInherentAttrs(::mlir::MLIRContext *ctx, const Properties &prop, ::mlir::NamedAttrList &attrs); static ::llvm::LogicalResult verifyInherentAttrs(::mlir::OperationName opName, ::mlir::NamedAttrList &attrs, llvm::function_ref<::mlir::InFlightDiagnostic()> emitError); static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::Type res, ::mlir::Value src, ::mlir::Value scale); static CvtScaleF32Pk32Bf16Fp6Op create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::Type res, ::mlir::Value src, ::mlir::Value scale); static CvtScaleF32Pk32Bf16Fp6Op create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::Type res, ::mlir::Value src, ::mlir::Value scale); static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::Value src, ::mlir::Value scale); static CvtScaleF32Pk32Bf16Fp6Op create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::Value src, ::mlir::Value scale); static CvtScaleF32Pk32Bf16Fp6Op create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::Value src, ::mlir::Value scale); static void build(::mlir::OpBuilder &, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, ::llvm::ArrayRef<::mlir::NamedAttribute> attributes = {}); static CvtScaleF32Pk32Bf16Fp6Op create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, ::llvm::ArrayRef<::mlir::NamedAttribute> attributes = {}); static CvtScaleF32Pk32Bf16Fp6Op create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, ::llvm::ArrayRef<::mlir::NamedAttribute> attributes = {}); static void build(::mlir::OpBuilder &, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, const Properties &properties, ::llvm::ArrayRef<::mlir::NamedAttribute> discardableAttributes = {}); static CvtScaleF32Pk32Bf16Fp6Op create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, const Properties &properties, ::llvm::ArrayRef<::mlir::NamedAttribute> discardableAttributes = {}); static CvtScaleF32Pk32Bf16Fp6Op create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, const Properties &properties, ::llvm::ArrayRef<::mlir::NamedAttribute> discardableAttributes = {}); ::llvm::LogicalResult verifyInvariantsImpl(); ::llvm::LogicalResult verifyInvariants(); static ::mlir::ParseResult parse(::mlir::OpAsmParser &parser, ::mlir::OperationState &result); void print(::mlir::OpAsmPrinter &_odsPrinter); void getEffects(::llvm::SmallVectorImpl<::mlir::SideEffects::EffectInstance<::mlir::MemoryEffects::Effect>> &effects); public: }; } // namespace mlir::ROCDL MLIR_DECLARE_EXPLICIT_TYPE_ID(::mlir::ROCDL::CvtScaleF32Pk32Bf16Fp6Op) namespace mlir::ROCDL { //===----------------------------------------------------------------------===// // ::mlir::ROCDL::CvtScaleF32Pk32Bf6Bf16Op declarations //===----------------------------------------------------------------------===// namespace detail { class CvtScaleF32Pk32Bf6Bf16OpGenericAdaptorBase { public: using Properties = ::mlir::EmptyProperties; protected: ::mlir::DictionaryAttr odsAttrs; ::std::optional<::mlir::OperationName> odsOpName; Properties properties; ::mlir::RegionRange odsRegions; public: CvtScaleF32Pk32Bf6Bf16OpGenericAdaptorBase(::mlir::DictionaryAttr attrs, const Properties &properties, ::mlir::RegionRange regions = {}) : odsAttrs(attrs), properties(properties), odsRegions(regions) { if (odsAttrs) odsOpName.emplace("rocdl.cvt.scalef32.pk32.bf6.bf16", odsAttrs.getContext()); } CvtScaleF32Pk32Bf6Bf16OpGenericAdaptorBase(CvtScaleF32Pk32Bf6Bf16Op op); std::pair getODSOperandIndexAndLength(unsigned index, unsigned odsOperandsSize) { return {index, 1}; } const Properties &getProperties() { return properties; } ::mlir::DictionaryAttr getAttributes() { return odsAttrs; } }; } // namespace detail template class CvtScaleF32Pk32Bf6Bf16OpGenericAdaptor : public detail::CvtScaleF32Pk32Bf6Bf16OpGenericAdaptorBase { using ValueT = ::llvm::detail::ValueOfRange; using Base = detail::CvtScaleF32Pk32Bf6Bf16OpGenericAdaptorBase; static constexpr int odsIndex_src = 0; static constexpr int odsIndex_scale = 1; public: CvtScaleF32Pk32Bf6Bf16OpGenericAdaptor(RangeT values, ::mlir::DictionaryAttr attrs, const Properties &properties, ::mlir::RegionRange regions = {}) : Base(attrs, properties, regions), odsOperands(values) {} CvtScaleF32Pk32Bf6Bf16OpGenericAdaptor(RangeT values, ::mlir::DictionaryAttr attrs, ::mlir::PropertyRef properties, ::mlir::RegionRange regions = {}) : CvtScaleF32Pk32Bf6Bf16OpGenericAdaptor(values, attrs, (properties ? *properties.as() : Properties{}), regions) {} CvtScaleF32Pk32Bf6Bf16OpGenericAdaptor(RangeT values, ::mlir::DictionaryAttr attrs = nullptr) : CvtScaleF32Pk32Bf6Bf16OpGenericAdaptor(values, attrs, Properties{}, {}) {} CvtScaleF32Pk32Bf6Bf16OpGenericAdaptor(RangeT values, const CvtScaleF32Pk32Bf6Bf16OpGenericAdaptorBase &base) : Base(base), odsOperands(values) {} template >> CvtScaleF32Pk32Bf6Bf16OpGenericAdaptor(RangeT values, LateInst op) : Base(op), odsOperands(values) {} std::pair getODSOperandIndexAndLength(unsigned index) { return Base::getODSOperandIndexAndLength(index, odsOperands.size()); } RangeT getODSOperands(unsigned index) { auto valueRange = getODSOperandIndexAndLength(index); return {std::next(odsOperands.begin(), valueRange.first), std::next(odsOperands.begin(), valueRange.first + valueRange.second)}; } ValueT getSrc() { return (*getODSOperands(0).begin()); } ValueT getScale() { return (*getODSOperands(1).begin()); } RangeT getOperands() { return odsOperands; } private: RangeT odsOperands; }; class CvtScaleF32Pk32Bf6Bf16OpAdaptor : public CvtScaleF32Pk32Bf6Bf16OpGenericAdaptor<::mlir::ValueRange> { public: using CvtScaleF32Pk32Bf6Bf16OpGenericAdaptor::CvtScaleF32Pk32Bf6Bf16OpGenericAdaptor; CvtScaleF32Pk32Bf6Bf16OpAdaptor(CvtScaleF32Pk32Bf6Bf16Op op); ::llvm::LogicalResult verify(::mlir::Location loc); }; class CvtScaleF32Pk32Bf6Bf16Op : public ::mlir::Op::Impl, ::mlir::OpTrait::ZeroSuccessors, ::mlir::OpTrait::NOperands<2>::Impl, ::mlir::OpTrait::OpInvariants, ::mlir::ConditionallySpeculatable::Trait, ::mlir::OpTrait::AlwaysSpeculatableImplTrait, ::mlir::MemoryEffectOpInterface::Trait> { public: using Op::Op; using Op::print; using Adaptor = CvtScaleF32Pk32Bf6Bf16OpAdaptor; template using GenericAdaptor = CvtScaleF32Pk32Bf6Bf16OpGenericAdaptor; using FoldAdaptor = GenericAdaptor<::llvm::ArrayRef<::mlir::Attribute>>; static constexpr int odsIndex_src = 0; static constexpr int odsIndex_scale = 1; using Properties = FoldAdaptor::Properties; static ::llvm::ArrayRef<::llvm::StringRef> getAttributeNames() { return {}; } static constexpr ::llvm::StringLiteral getOperationName() { return ::llvm::StringLiteral("rocdl.cvt.scalef32.pk32.bf6.bf16"); } std::pair getODSOperandIndexAndLength(unsigned index) { return {index, 1}; } ::mlir::Operation::operand_range getODSOperands(unsigned index) { auto valueRange = getODSOperandIndexAndLength(index); return {std::next(getOperation()->operand_begin(), valueRange.first), std::next(getOperation()->operand_begin(), valueRange.first + valueRange.second)}; } ::mlir::TypedValue<::mlir::VectorType> getSrc() { return ::llvm::cast<::mlir::TypedValue<::mlir::VectorType>>(*getODSOperands(0).begin()); } ::mlir::TypedValue<::mlir::FloatType> getScale() { return ::llvm::cast<::mlir::TypedValue<::mlir::FloatType>>(*getODSOperands(1).begin()); } ::mlir::OpOperand &getSrcMutable() { auto range = getODSOperandIndexAndLength(0); return getOperation()->getOpOperand(range.first); } ::mlir::OpOperand &getScaleMutable() { auto range = getODSOperandIndexAndLength(1); return getOperation()->getOpOperand(range.first); } std::pair getODSResultIndexAndLength(unsigned index) { return {index, 1}; } ::mlir::Operation::result_range getODSResults(unsigned index) { auto valueRange = getODSResultIndexAndLength(index); return {std::next(getOperation()->result_begin(), valueRange.first), std::next(getOperation()->result_begin(), valueRange.first + valueRange.second)}; } ::mlir::TypedValue<::mlir::VectorType> getRes() { return ::llvm::cast<::mlir::TypedValue<::mlir::VectorType>>(*getODSResults(0).begin()); } static ::llvm::LogicalResult setPropertiesFromAttr(Properties &prop, ::mlir::Attribute attr, ::llvm::function_ref<::mlir::InFlightDiagnostic()> emitError); static ::mlir::Attribute getPropertiesAsAttr(::mlir::MLIRContext *ctx, const Properties &prop); static llvm::hash_code computePropertiesHash(const Properties &prop); static std::optional getInherentAttr(::mlir::MLIRContext *ctx, const Properties &prop, llvm::StringRef name); static void setInherentAttr(Properties &prop, llvm::StringRef name, mlir::Attribute value); static void populateInherentAttrs(::mlir::MLIRContext *ctx, const Properties &prop, ::mlir::NamedAttrList &attrs); static ::llvm::LogicalResult verifyInherentAttrs(::mlir::OperationName opName, ::mlir::NamedAttrList &attrs, llvm::function_ref<::mlir::InFlightDiagnostic()> emitError); static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::Type res, ::mlir::Value src, ::mlir::Value scale); static CvtScaleF32Pk32Bf6Bf16Op create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::Type res, ::mlir::Value src, ::mlir::Value scale); static CvtScaleF32Pk32Bf6Bf16Op create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::Type res, ::mlir::Value src, ::mlir::Value scale); static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::Value src, ::mlir::Value scale); static CvtScaleF32Pk32Bf6Bf16Op create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::Value src, ::mlir::Value scale); static CvtScaleF32Pk32Bf6Bf16Op create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::Value src, ::mlir::Value scale); static void build(::mlir::OpBuilder &, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, ::llvm::ArrayRef<::mlir::NamedAttribute> attributes = {}); static CvtScaleF32Pk32Bf6Bf16Op create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, ::llvm::ArrayRef<::mlir::NamedAttribute> attributes = {}); static CvtScaleF32Pk32Bf6Bf16Op create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, ::llvm::ArrayRef<::mlir::NamedAttribute> attributes = {}); static void build(::mlir::OpBuilder &, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, const Properties &properties, ::llvm::ArrayRef<::mlir::NamedAttribute> discardableAttributes = {}); static CvtScaleF32Pk32Bf6Bf16Op create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, const Properties &properties, ::llvm::ArrayRef<::mlir::NamedAttribute> discardableAttributes = {}); static CvtScaleF32Pk32Bf6Bf16Op create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, const Properties &properties, ::llvm::ArrayRef<::mlir::NamedAttribute> discardableAttributes = {}); ::llvm::LogicalResult verifyInvariantsImpl(); ::llvm::LogicalResult verifyInvariants(); static ::mlir::ParseResult parse(::mlir::OpAsmParser &parser, ::mlir::OperationState &result); void print(::mlir::OpAsmPrinter &_odsPrinter); void getEffects(::llvm::SmallVectorImpl<::mlir::SideEffects::EffectInstance<::mlir::MemoryEffects::Effect>> &effects); public: }; } // namespace mlir::ROCDL MLIR_DECLARE_EXPLICIT_TYPE_ID(::mlir::ROCDL::CvtScaleF32Pk32Bf6Bf16Op) namespace mlir::ROCDL { //===----------------------------------------------------------------------===// // ::mlir::ROCDL::CvtScaleF32Pk32Bf6F16Op declarations //===----------------------------------------------------------------------===// namespace detail { class CvtScaleF32Pk32Bf6F16OpGenericAdaptorBase { public: using Properties = ::mlir::EmptyProperties; protected: ::mlir::DictionaryAttr odsAttrs; ::std::optional<::mlir::OperationName> odsOpName; Properties properties; ::mlir::RegionRange odsRegions; public: CvtScaleF32Pk32Bf6F16OpGenericAdaptorBase(::mlir::DictionaryAttr attrs, const Properties &properties, ::mlir::RegionRange regions = {}) : odsAttrs(attrs), properties(properties), odsRegions(regions) { if (odsAttrs) odsOpName.emplace("rocdl.cvt.scalef32.pk32.bf6.f16", odsAttrs.getContext()); } CvtScaleF32Pk32Bf6F16OpGenericAdaptorBase(CvtScaleF32Pk32Bf6F16Op op); std::pair getODSOperandIndexAndLength(unsigned index, unsigned odsOperandsSize) { return {index, 1}; } const Properties &getProperties() { return properties; } ::mlir::DictionaryAttr getAttributes() { return odsAttrs; } }; } // namespace detail template class CvtScaleF32Pk32Bf6F16OpGenericAdaptor : public detail::CvtScaleF32Pk32Bf6F16OpGenericAdaptorBase { using ValueT = ::llvm::detail::ValueOfRange; using Base = detail::CvtScaleF32Pk32Bf6F16OpGenericAdaptorBase; static constexpr int odsIndex_src = 0; static constexpr int odsIndex_scale = 1; public: CvtScaleF32Pk32Bf6F16OpGenericAdaptor(RangeT values, ::mlir::DictionaryAttr attrs, const Properties &properties, ::mlir::RegionRange regions = {}) : Base(attrs, properties, regions), odsOperands(values) {} CvtScaleF32Pk32Bf6F16OpGenericAdaptor(RangeT values, ::mlir::DictionaryAttr attrs, ::mlir::PropertyRef properties, ::mlir::RegionRange regions = {}) : CvtScaleF32Pk32Bf6F16OpGenericAdaptor(values, attrs, (properties ? *properties.as() : Properties{}), regions) {} CvtScaleF32Pk32Bf6F16OpGenericAdaptor(RangeT values, ::mlir::DictionaryAttr attrs = nullptr) : CvtScaleF32Pk32Bf6F16OpGenericAdaptor(values, attrs, Properties{}, {}) {} CvtScaleF32Pk32Bf6F16OpGenericAdaptor(RangeT values, const CvtScaleF32Pk32Bf6F16OpGenericAdaptorBase &base) : Base(base), odsOperands(values) {} template >> CvtScaleF32Pk32Bf6F16OpGenericAdaptor(RangeT values, LateInst op) : Base(op), odsOperands(values) {} std::pair getODSOperandIndexAndLength(unsigned index) { return Base::getODSOperandIndexAndLength(index, odsOperands.size()); } RangeT getODSOperands(unsigned index) { auto valueRange = getODSOperandIndexAndLength(index); return {std::next(odsOperands.begin(), valueRange.first), std::next(odsOperands.begin(), valueRange.first + valueRange.second)}; } ValueT getSrc() { return (*getODSOperands(0).begin()); } ValueT getScale() { return (*getODSOperands(1).begin()); } RangeT getOperands() { return odsOperands; } private: RangeT odsOperands; }; class CvtScaleF32Pk32Bf6F16OpAdaptor : public CvtScaleF32Pk32Bf6F16OpGenericAdaptor<::mlir::ValueRange> { public: using CvtScaleF32Pk32Bf6F16OpGenericAdaptor::CvtScaleF32Pk32Bf6F16OpGenericAdaptor; CvtScaleF32Pk32Bf6F16OpAdaptor(CvtScaleF32Pk32Bf6F16Op op); ::llvm::LogicalResult verify(::mlir::Location loc); }; class CvtScaleF32Pk32Bf6F16Op : public ::mlir::Op::Impl, ::mlir::OpTrait::ZeroSuccessors, ::mlir::OpTrait::NOperands<2>::Impl, ::mlir::OpTrait::OpInvariants, ::mlir::ConditionallySpeculatable::Trait, ::mlir::OpTrait::AlwaysSpeculatableImplTrait, ::mlir::MemoryEffectOpInterface::Trait> { public: using Op::Op; using Op::print; using Adaptor = CvtScaleF32Pk32Bf6F16OpAdaptor; template using GenericAdaptor = CvtScaleF32Pk32Bf6F16OpGenericAdaptor; using FoldAdaptor = GenericAdaptor<::llvm::ArrayRef<::mlir::Attribute>>; static constexpr int odsIndex_src = 0; static constexpr int odsIndex_scale = 1; using Properties = FoldAdaptor::Properties; static ::llvm::ArrayRef<::llvm::StringRef> getAttributeNames() { return {}; } static constexpr ::llvm::StringLiteral getOperationName() { return ::llvm::StringLiteral("rocdl.cvt.scalef32.pk32.bf6.f16"); } std::pair getODSOperandIndexAndLength(unsigned index) { return {index, 1}; } ::mlir::Operation::operand_range getODSOperands(unsigned index) { auto valueRange = getODSOperandIndexAndLength(index); return {std::next(getOperation()->operand_begin(), valueRange.first), std::next(getOperation()->operand_begin(), valueRange.first + valueRange.second)}; } ::mlir::TypedValue<::mlir::VectorType> getSrc() { return ::llvm::cast<::mlir::TypedValue<::mlir::VectorType>>(*getODSOperands(0).begin()); } ::mlir::TypedValue<::mlir::FloatType> getScale() { return ::llvm::cast<::mlir::TypedValue<::mlir::FloatType>>(*getODSOperands(1).begin()); } ::mlir::OpOperand &getSrcMutable() { auto range = getODSOperandIndexAndLength(0); return getOperation()->getOpOperand(range.first); } ::mlir::OpOperand &getScaleMutable() { auto range = getODSOperandIndexAndLength(1); return getOperation()->getOpOperand(range.first); } std::pair getODSResultIndexAndLength(unsigned index) { return {index, 1}; } ::mlir::Operation::result_range getODSResults(unsigned index) { auto valueRange = getODSResultIndexAndLength(index); return {std::next(getOperation()->result_begin(), valueRange.first), std::next(getOperation()->result_begin(), valueRange.first + valueRange.second)}; } ::mlir::TypedValue<::mlir::VectorType> getRes() { return ::llvm::cast<::mlir::TypedValue<::mlir::VectorType>>(*getODSResults(0).begin()); } static ::llvm::LogicalResult setPropertiesFromAttr(Properties &prop, ::mlir::Attribute attr, ::llvm::function_ref<::mlir::InFlightDiagnostic()> emitError); static ::mlir::Attribute getPropertiesAsAttr(::mlir::MLIRContext *ctx, const Properties &prop); static llvm::hash_code computePropertiesHash(const Properties &prop); static std::optional getInherentAttr(::mlir::MLIRContext *ctx, const Properties &prop, llvm::StringRef name); static void setInherentAttr(Properties &prop, llvm::StringRef name, mlir::Attribute value); static void populateInherentAttrs(::mlir::MLIRContext *ctx, const Properties &prop, ::mlir::NamedAttrList &attrs); static ::llvm::LogicalResult verifyInherentAttrs(::mlir::OperationName opName, ::mlir::NamedAttrList &attrs, llvm::function_ref<::mlir::InFlightDiagnostic()> emitError); static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::Type res, ::mlir::Value src, ::mlir::Value scale); static CvtScaleF32Pk32Bf6F16Op create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::Type res, ::mlir::Value src, ::mlir::Value scale); static CvtScaleF32Pk32Bf6F16Op create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::Type res, ::mlir::Value src, ::mlir::Value scale); static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::Value src, ::mlir::Value scale); static CvtScaleF32Pk32Bf6F16Op create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::Value src, ::mlir::Value scale); static CvtScaleF32Pk32Bf6F16Op create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::Value src, ::mlir::Value scale); static void build(::mlir::OpBuilder &, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, ::llvm::ArrayRef<::mlir::NamedAttribute> attributes = {}); static CvtScaleF32Pk32Bf6F16Op create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, ::llvm::ArrayRef<::mlir::NamedAttribute> attributes = {}); static CvtScaleF32Pk32Bf6F16Op create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, ::llvm::ArrayRef<::mlir::NamedAttribute> attributes = {}); static void build(::mlir::OpBuilder &, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, const Properties &properties, ::llvm::ArrayRef<::mlir::NamedAttribute> discardableAttributes = {}); static CvtScaleF32Pk32Bf6F16Op create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, const Properties &properties, ::llvm::ArrayRef<::mlir::NamedAttribute> discardableAttributes = {}); static CvtScaleF32Pk32Bf6F16Op create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, const Properties &properties, ::llvm::ArrayRef<::mlir::NamedAttribute> discardableAttributes = {}); ::llvm::LogicalResult verifyInvariantsImpl(); ::llvm::LogicalResult verifyInvariants(); static ::mlir::ParseResult parse(::mlir::OpAsmParser &parser, ::mlir::OperationState &result); void print(::mlir::OpAsmPrinter &_odsPrinter); void getEffects(::llvm::SmallVectorImpl<::mlir::SideEffects::EffectInstance<::mlir::MemoryEffects::Effect>> &effects); public: }; } // namespace mlir::ROCDL MLIR_DECLARE_EXPLICIT_TYPE_ID(::mlir::ROCDL::CvtScaleF32Pk32Bf6F16Op) namespace mlir::ROCDL { //===----------------------------------------------------------------------===// // ::mlir::ROCDL::CvtScaleF32Pk32F16Bf6Op declarations //===----------------------------------------------------------------------===// namespace detail { class CvtScaleF32Pk32F16Bf6OpGenericAdaptorBase { public: using Properties = ::mlir::EmptyProperties; protected: ::mlir::DictionaryAttr odsAttrs; ::std::optional<::mlir::OperationName> odsOpName; Properties properties; ::mlir::RegionRange odsRegions; public: CvtScaleF32Pk32F16Bf6OpGenericAdaptorBase(::mlir::DictionaryAttr attrs, const Properties &properties, ::mlir::RegionRange regions = {}) : odsAttrs(attrs), properties(properties), odsRegions(regions) { if (odsAttrs) odsOpName.emplace("rocdl.cvt.scalef32.pk32.f16.bf6", odsAttrs.getContext()); } CvtScaleF32Pk32F16Bf6OpGenericAdaptorBase(CvtScaleF32Pk32F16Bf6Op op); std::pair getODSOperandIndexAndLength(unsigned index, unsigned odsOperandsSize) { return {index, 1}; } const Properties &getProperties() { return properties; } ::mlir::DictionaryAttr getAttributes() { return odsAttrs; } }; } // namespace detail template class CvtScaleF32Pk32F16Bf6OpGenericAdaptor : public detail::CvtScaleF32Pk32F16Bf6OpGenericAdaptorBase { using ValueT = ::llvm::detail::ValueOfRange; using Base = detail::CvtScaleF32Pk32F16Bf6OpGenericAdaptorBase; static constexpr int odsIndex_src = 0; static constexpr int odsIndex_scale = 1; public: CvtScaleF32Pk32F16Bf6OpGenericAdaptor(RangeT values, ::mlir::DictionaryAttr attrs, const Properties &properties, ::mlir::RegionRange regions = {}) : Base(attrs, properties, regions), odsOperands(values) {} CvtScaleF32Pk32F16Bf6OpGenericAdaptor(RangeT values, ::mlir::DictionaryAttr attrs, ::mlir::PropertyRef properties, ::mlir::RegionRange regions = {}) : CvtScaleF32Pk32F16Bf6OpGenericAdaptor(values, attrs, (properties ? *properties.as() : Properties{}), regions) {} CvtScaleF32Pk32F16Bf6OpGenericAdaptor(RangeT values, ::mlir::DictionaryAttr attrs = nullptr) : CvtScaleF32Pk32F16Bf6OpGenericAdaptor(values, attrs, Properties{}, {}) {} CvtScaleF32Pk32F16Bf6OpGenericAdaptor(RangeT values, const CvtScaleF32Pk32F16Bf6OpGenericAdaptorBase &base) : Base(base), odsOperands(values) {} template >> CvtScaleF32Pk32F16Bf6OpGenericAdaptor(RangeT values, LateInst op) : Base(op), odsOperands(values) {} std::pair getODSOperandIndexAndLength(unsigned index) { return Base::getODSOperandIndexAndLength(index, odsOperands.size()); } RangeT getODSOperands(unsigned index) { auto valueRange = getODSOperandIndexAndLength(index); return {std::next(odsOperands.begin(), valueRange.first), std::next(odsOperands.begin(), valueRange.first + valueRange.second)}; } ValueT getSrc() { return (*getODSOperands(0).begin()); } ValueT getScale() { return (*getODSOperands(1).begin()); } RangeT getOperands() { return odsOperands; } private: RangeT odsOperands; }; class CvtScaleF32Pk32F16Bf6OpAdaptor : public CvtScaleF32Pk32F16Bf6OpGenericAdaptor<::mlir::ValueRange> { public: using CvtScaleF32Pk32F16Bf6OpGenericAdaptor::CvtScaleF32Pk32F16Bf6OpGenericAdaptor; CvtScaleF32Pk32F16Bf6OpAdaptor(CvtScaleF32Pk32F16Bf6Op op); ::llvm::LogicalResult verify(::mlir::Location loc); }; class CvtScaleF32Pk32F16Bf6Op : public ::mlir::Op::Impl, ::mlir::OpTrait::ZeroSuccessors, ::mlir::OpTrait::NOperands<2>::Impl, ::mlir::OpTrait::OpInvariants, ::mlir::ConditionallySpeculatable::Trait, ::mlir::OpTrait::AlwaysSpeculatableImplTrait, ::mlir::MemoryEffectOpInterface::Trait> { public: using Op::Op; using Op::print; using Adaptor = CvtScaleF32Pk32F16Bf6OpAdaptor; template using GenericAdaptor = CvtScaleF32Pk32F16Bf6OpGenericAdaptor; using FoldAdaptor = GenericAdaptor<::llvm::ArrayRef<::mlir::Attribute>>; static constexpr int odsIndex_src = 0; static constexpr int odsIndex_scale = 1; using Properties = FoldAdaptor::Properties; static ::llvm::ArrayRef<::llvm::StringRef> getAttributeNames() { return {}; } static constexpr ::llvm::StringLiteral getOperationName() { return ::llvm::StringLiteral("rocdl.cvt.scalef32.pk32.f16.bf6"); } std::pair getODSOperandIndexAndLength(unsigned index) { return {index, 1}; } ::mlir::Operation::operand_range getODSOperands(unsigned index) { auto valueRange = getODSOperandIndexAndLength(index); return {std::next(getOperation()->operand_begin(), valueRange.first), std::next(getOperation()->operand_begin(), valueRange.first + valueRange.second)}; } ::mlir::TypedValue<::mlir::VectorType> getSrc() { return ::llvm::cast<::mlir::TypedValue<::mlir::VectorType>>(*getODSOperands(0).begin()); } ::mlir::TypedValue<::mlir::FloatType> getScale() { return ::llvm::cast<::mlir::TypedValue<::mlir::FloatType>>(*getODSOperands(1).begin()); } ::mlir::OpOperand &getSrcMutable() { auto range = getODSOperandIndexAndLength(0); return getOperation()->getOpOperand(range.first); } ::mlir::OpOperand &getScaleMutable() { auto range = getODSOperandIndexAndLength(1); return getOperation()->getOpOperand(range.first); } std::pair getODSResultIndexAndLength(unsigned index) { return {index, 1}; } ::mlir::Operation::result_range getODSResults(unsigned index) { auto valueRange = getODSResultIndexAndLength(index); return {std::next(getOperation()->result_begin(), valueRange.first), std::next(getOperation()->result_begin(), valueRange.first + valueRange.second)}; } ::mlir::TypedValue<::mlir::VectorType> getRes() { return ::llvm::cast<::mlir::TypedValue<::mlir::VectorType>>(*getODSResults(0).begin()); } static ::llvm::LogicalResult setPropertiesFromAttr(Properties &prop, ::mlir::Attribute attr, ::llvm::function_ref<::mlir::InFlightDiagnostic()> emitError); static ::mlir::Attribute getPropertiesAsAttr(::mlir::MLIRContext *ctx, const Properties &prop); static llvm::hash_code computePropertiesHash(const Properties &prop); static std::optional getInherentAttr(::mlir::MLIRContext *ctx, const Properties &prop, llvm::StringRef name); static void setInherentAttr(Properties &prop, llvm::StringRef name, mlir::Attribute value); static void populateInherentAttrs(::mlir::MLIRContext *ctx, const Properties &prop, ::mlir::NamedAttrList &attrs); static ::llvm::LogicalResult verifyInherentAttrs(::mlir::OperationName opName, ::mlir::NamedAttrList &attrs, llvm::function_ref<::mlir::InFlightDiagnostic()> emitError); static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::Type res, ::mlir::Value src, ::mlir::Value scale); static CvtScaleF32Pk32F16Bf6Op create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::Type res, ::mlir::Value src, ::mlir::Value scale); static CvtScaleF32Pk32F16Bf6Op create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::Type res, ::mlir::Value src, ::mlir::Value scale); static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::Value src, ::mlir::Value scale); static CvtScaleF32Pk32F16Bf6Op create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::Value src, ::mlir::Value scale); static CvtScaleF32Pk32F16Bf6Op create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::Value src, ::mlir::Value scale); static void build(::mlir::OpBuilder &, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, ::llvm::ArrayRef<::mlir::NamedAttribute> attributes = {}); static CvtScaleF32Pk32F16Bf6Op create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, ::llvm::ArrayRef<::mlir::NamedAttribute> attributes = {}); static CvtScaleF32Pk32F16Bf6Op create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, ::llvm::ArrayRef<::mlir::NamedAttribute> attributes = {}); static void build(::mlir::OpBuilder &, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, const Properties &properties, ::llvm::ArrayRef<::mlir::NamedAttribute> discardableAttributes = {}); static CvtScaleF32Pk32F16Bf6Op create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, const Properties &properties, ::llvm::ArrayRef<::mlir::NamedAttribute> discardableAttributes = {}); static CvtScaleF32Pk32F16Bf6Op create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, const Properties &properties, ::llvm::ArrayRef<::mlir::NamedAttribute> discardableAttributes = {}); ::llvm::LogicalResult verifyInvariantsImpl(); ::llvm::LogicalResult verifyInvariants(); static ::mlir::ParseResult parse(::mlir::OpAsmParser &parser, ::mlir::OperationState &result); void print(::mlir::OpAsmPrinter &_odsPrinter); void getEffects(::llvm::SmallVectorImpl<::mlir::SideEffects::EffectInstance<::mlir::MemoryEffects::Effect>> &effects); public: }; } // namespace mlir::ROCDL MLIR_DECLARE_EXPLICIT_TYPE_ID(::mlir::ROCDL::CvtScaleF32Pk32F16Bf6Op) namespace mlir::ROCDL { //===----------------------------------------------------------------------===// // ::mlir::ROCDL::CvtScaleF32Pk32F16Fp6Op declarations //===----------------------------------------------------------------------===// namespace detail { class CvtScaleF32Pk32F16Fp6OpGenericAdaptorBase { public: using Properties = ::mlir::EmptyProperties; protected: ::mlir::DictionaryAttr odsAttrs; ::std::optional<::mlir::OperationName> odsOpName; Properties properties; ::mlir::RegionRange odsRegions; public: CvtScaleF32Pk32F16Fp6OpGenericAdaptorBase(::mlir::DictionaryAttr attrs, const Properties &properties, ::mlir::RegionRange regions = {}) : odsAttrs(attrs), properties(properties), odsRegions(regions) { if (odsAttrs) odsOpName.emplace("rocdl.cvt.scalef32.pk32.f16.fp6", odsAttrs.getContext()); } CvtScaleF32Pk32F16Fp6OpGenericAdaptorBase(CvtScaleF32Pk32F16Fp6Op op); std::pair getODSOperandIndexAndLength(unsigned index, unsigned odsOperandsSize) { return {index, 1}; } const Properties &getProperties() { return properties; } ::mlir::DictionaryAttr getAttributes() { return odsAttrs; } }; } // namespace detail template class CvtScaleF32Pk32F16Fp6OpGenericAdaptor : public detail::CvtScaleF32Pk32F16Fp6OpGenericAdaptorBase { using ValueT = ::llvm::detail::ValueOfRange; using Base = detail::CvtScaleF32Pk32F16Fp6OpGenericAdaptorBase; static constexpr int odsIndex_src = 0; static constexpr int odsIndex_scale = 1; public: CvtScaleF32Pk32F16Fp6OpGenericAdaptor(RangeT values, ::mlir::DictionaryAttr attrs, const Properties &properties, ::mlir::RegionRange regions = {}) : Base(attrs, properties, regions), odsOperands(values) {} CvtScaleF32Pk32F16Fp6OpGenericAdaptor(RangeT values, ::mlir::DictionaryAttr attrs, ::mlir::PropertyRef properties, ::mlir::RegionRange regions = {}) : CvtScaleF32Pk32F16Fp6OpGenericAdaptor(values, attrs, (properties ? *properties.as() : Properties{}), regions) {} CvtScaleF32Pk32F16Fp6OpGenericAdaptor(RangeT values, ::mlir::DictionaryAttr attrs = nullptr) : CvtScaleF32Pk32F16Fp6OpGenericAdaptor(values, attrs, Properties{}, {}) {} CvtScaleF32Pk32F16Fp6OpGenericAdaptor(RangeT values, const CvtScaleF32Pk32F16Fp6OpGenericAdaptorBase &base) : Base(base), odsOperands(values) {} template >> CvtScaleF32Pk32F16Fp6OpGenericAdaptor(RangeT values, LateInst op) : Base(op), odsOperands(values) {} std::pair getODSOperandIndexAndLength(unsigned index) { return Base::getODSOperandIndexAndLength(index, odsOperands.size()); } RangeT getODSOperands(unsigned index) { auto valueRange = getODSOperandIndexAndLength(index); return {std::next(odsOperands.begin(), valueRange.first), std::next(odsOperands.begin(), valueRange.first + valueRange.second)}; } ValueT getSrc() { return (*getODSOperands(0).begin()); } ValueT getScale() { return (*getODSOperands(1).begin()); } RangeT getOperands() { return odsOperands; } private: RangeT odsOperands; }; class CvtScaleF32Pk32F16Fp6OpAdaptor : public CvtScaleF32Pk32F16Fp6OpGenericAdaptor<::mlir::ValueRange> { public: using CvtScaleF32Pk32F16Fp6OpGenericAdaptor::CvtScaleF32Pk32F16Fp6OpGenericAdaptor; CvtScaleF32Pk32F16Fp6OpAdaptor(CvtScaleF32Pk32F16Fp6Op op); ::llvm::LogicalResult verify(::mlir::Location loc); }; class CvtScaleF32Pk32F16Fp6Op : public ::mlir::Op::Impl, ::mlir::OpTrait::ZeroSuccessors, ::mlir::OpTrait::NOperands<2>::Impl, ::mlir::OpTrait::OpInvariants, ::mlir::ConditionallySpeculatable::Trait, ::mlir::OpTrait::AlwaysSpeculatableImplTrait, ::mlir::MemoryEffectOpInterface::Trait> { public: using Op::Op; using Op::print; using Adaptor = CvtScaleF32Pk32F16Fp6OpAdaptor; template using GenericAdaptor = CvtScaleF32Pk32F16Fp6OpGenericAdaptor; using FoldAdaptor = GenericAdaptor<::llvm::ArrayRef<::mlir::Attribute>>; static constexpr int odsIndex_src = 0; static constexpr int odsIndex_scale = 1; using Properties = FoldAdaptor::Properties; static ::llvm::ArrayRef<::llvm::StringRef> getAttributeNames() { return {}; } static constexpr ::llvm::StringLiteral getOperationName() { return ::llvm::StringLiteral("rocdl.cvt.scalef32.pk32.f16.fp6"); } std::pair getODSOperandIndexAndLength(unsigned index) { return {index, 1}; } ::mlir::Operation::operand_range getODSOperands(unsigned index) { auto valueRange = getODSOperandIndexAndLength(index); return {std::next(getOperation()->operand_begin(), valueRange.first), std::next(getOperation()->operand_begin(), valueRange.first + valueRange.second)}; } ::mlir::TypedValue<::mlir::VectorType> getSrc() { return ::llvm::cast<::mlir::TypedValue<::mlir::VectorType>>(*getODSOperands(0).begin()); } ::mlir::TypedValue<::mlir::FloatType> getScale() { return ::llvm::cast<::mlir::TypedValue<::mlir::FloatType>>(*getODSOperands(1).begin()); } ::mlir::OpOperand &getSrcMutable() { auto range = getODSOperandIndexAndLength(0); return getOperation()->getOpOperand(range.first); } ::mlir::OpOperand &getScaleMutable() { auto range = getODSOperandIndexAndLength(1); return getOperation()->getOpOperand(range.first); } std::pair getODSResultIndexAndLength(unsigned index) { return {index, 1}; } ::mlir::Operation::result_range getODSResults(unsigned index) { auto valueRange = getODSResultIndexAndLength(index); return {std::next(getOperation()->result_begin(), valueRange.first), std::next(getOperation()->result_begin(), valueRange.first + valueRange.second)}; } ::mlir::TypedValue<::mlir::VectorType> getRes() { return ::llvm::cast<::mlir::TypedValue<::mlir::VectorType>>(*getODSResults(0).begin()); } static ::llvm::LogicalResult setPropertiesFromAttr(Properties &prop, ::mlir::Attribute attr, ::llvm::function_ref<::mlir::InFlightDiagnostic()> emitError); static ::mlir::Attribute getPropertiesAsAttr(::mlir::MLIRContext *ctx, const Properties &prop); static llvm::hash_code computePropertiesHash(const Properties &prop); static std::optional getInherentAttr(::mlir::MLIRContext *ctx, const Properties &prop, llvm::StringRef name); static void setInherentAttr(Properties &prop, llvm::StringRef name, mlir::Attribute value); static void populateInherentAttrs(::mlir::MLIRContext *ctx, const Properties &prop, ::mlir::NamedAttrList &attrs); static ::llvm::LogicalResult verifyInherentAttrs(::mlir::OperationName opName, ::mlir::NamedAttrList &attrs, llvm::function_ref<::mlir::InFlightDiagnostic()> emitError); static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::Type res, ::mlir::Value src, ::mlir::Value scale); static CvtScaleF32Pk32F16Fp6Op create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::Type res, ::mlir::Value src, ::mlir::Value scale); static CvtScaleF32Pk32F16Fp6Op create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::Type res, ::mlir::Value src, ::mlir::Value scale); static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::Value src, ::mlir::Value scale); static CvtScaleF32Pk32F16Fp6Op create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::Value src, ::mlir::Value scale); static CvtScaleF32Pk32F16Fp6Op create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::Value src, ::mlir::Value scale); static void build(::mlir::OpBuilder &, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, ::llvm::ArrayRef<::mlir::NamedAttribute> attributes = {}); static CvtScaleF32Pk32F16Fp6Op create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, ::llvm::ArrayRef<::mlir::NamedAttribute> attributes = {}); static CvtScaleF32Pk32F16Fp6Op create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, ::llvm::ArrayRef<::mlir::NamedAttribute> attributes = {}); static void build(::mlir::OpBuilder &, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, const Properties &properties, ::llvm::ArrayRef<::mlir::NamedAttribute> discardableAttributes = {}); static CvtScaleF32Pk32F16Fp6Op create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, const Properties &properties, ::llvm::ArrayRef<::mlir::NamedAttribute> discardableAttributes = {}); static CvtScaleF32Pk32F16Fp6Op create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, const Properties &properties, ::llvm::ArrayRef<::mlir::NamedAttribute> discardableAttributes = {}); ::llvm::LogicalResult verifyInvariantsImpl(); ::llvm::LogicalResult verifyInvariants(); static ::mlir::ParseResult parse(::mlir::OpAsmParser &parser, ::mlir::OperationState &result); void print(::mlir::OpAsmPrinter &_odsPrinter); void getEffects(::llvm::SmallVectorImpl<::mlir::SideEffects::EffectInstance<::mlir::MemoryEffects::Effect>> &effects); public: }; } // namespace mlir::ROCDL MLIR_DECLARE_EXPLICIT_TYPE_ID(::mlir::ROCDL::CvtScaleF32Pk32F16Fp6Op) namespace mlir::ROCDL { //===----------------------------------------------------------------------===// // ::mlir::ROCDL::CvtScaleF32Pk32F32Bf6Op declarations //===----------------------------------------------------------------------===// namespace detail { class CvtScaleF32Pk32F32Bf6OpGenericAdaptorBase { public: using Properties = ::mlir::EmptyProperties; protected: ::mlir::DictionaryAttr odsAttrs; ::std::optional<::mlir::OperationName> odsOpName; Properties properties; ::mlir::RegionRange odsRegions; public: CvtScaleF32Pk32F32Bf6OpGenericAdaptorBase(::mlir::DictionaryAttr attrs, const Properties &properties, ::mlir::RegionRange regions = {}) : odsAttrs(attrs), properties(properties), odsRegions(regions) { if (odsAttrs) odsOpName.emplace("rocdl.cvt.scalef32.pk32.f32.bf6", odsAttrs.getContext()); } CvtScaleF32Pk32F32Bf6OpGenericAdaptorBase(CvtScaleF32Pk32F32Bf6Op op); std::pair getODSOperandIndexAndLength(unsigned index, unsigned odsOperandsSize) { return {index, 1}; } const Properties &getProperties() { return properties; } ::mlir::DictionaryAttr getAttributes() { return odsAttrs; } }; } // namespace detail template class CvtScaleF32Pk32F32Bf6OpGenericAdaptor : public detail::CvtScaleF32Pk32F32Bf6OpGenericAdaptorBase { using ValueT = ::llvm::detail::ValueOfRange; using Base = detail::CvtScaleF32Pk32F32Bf6OpGenericAdaptorBase; static constexpr int odsIndex_src = 0; static constexpr int odsIndex_scale = 1; public: CvtScaleF32Pk32F32Bf6OpGenericAdaptor(RangeT values, ::mlir::DictionaryAttr attrs, const Properties &properties, ::mlir::RegionRange regions = {}) : Base(attrs, properties, regions), odsOperands(values) {} CvtScaleF32Pk32F32Bf6OpGenericAdaptor(RangeT values, ::mlir::DictionaryAttr attrs, ::mlir::PropertyRef properties, ::mlir::RegionRange regions = {}) : CvtScaleF32Pk32F32Bf6OpGenericAdaptor(values, attrs, (properties ? *properties.as() : Properties{}), regions) {} CvtScaleF32Pk32F32Bf6OpGenericAdaptor(RangeT values, ::mlir::DictionaryAttr attrs = nullptr) : CvtScaleF32Pk32F32Bf6OpGenericAdaptor(values, attrs, Properties{}, {}) {} CvtScaleF32Pk32F32Bf6OpGenericAdaptor(RangeT values, const CvtScaleF32Pk32F32Bf6OpGenericAdaptorBase &base) : Base(base), odsOperands(values) {} template >> CvtScaleF32Pk32F32Bf6OpGenericAdaptor(RangeT values, LateInst op) : Base(op), odsOperands(values) {} std::pair getODSOperandIndexAndLength(unsigned index) { return Base::getODSOperandIndexAndLength(index, odsOperands.size()); } RangeT getODSOperands(unsigned index) { auto valueRange = getODSOperandIndexAndLength(index); return {std::next(odsOperands.begin(), valueRange.first), std::next(odsOperands.begin(), valueRange.first + valueRange.second)}; } ValueT getSrc() { return (*getODSOperands(0).begin()); } ValueT getScale() { return (*getODSOperands(1).begin()); } RangeT getOperands() { return odsOperands; } private: RangeT odsOperands; }; class CvtScaleF32Pk32F32Bf6OpAdaptor : public CvtScaleF32Pk32F32Bf6OpGenericAdaptor<::mlir::ValueRange> { public: using CvtScaleF32Pk32F32Bf6OpGenericAdaptor::CvtScaleF32Pk32F32Bf6OpGenericAdaptor; CvtScaleF32Pk32F32Bf6OpAdaptor(CvtScaleF32Pk32F32Bf6Op op); ::llvm::LogicalResult verify(::mlir::Location loc); }; class CvtScaleF32Pk32F32Bf6Op : public ::mlir::Op::Impl, ::mlir::OpTrait::ZeroSuccessors, ::mlir::OpTrait::NOperands<2>::Impl, ::mlir::OpTrait::OpInvariants, ::mlir::ConditionallySpeculatable::Trait, ::mlir::OpTrait::AlwaysSpeculatableImplTrait, ::mlir::MemoryEffectOpInterface::Trait> { public: using Op::Op; using Op::print; using Adaptor = CvtScaleF32Pk32F32Bf6OpAdaptor; template using GenericAdaptor = CvtScaleF32Pk32F32Bf6OpGenericAdaptor; using FoldAdaptor = GenericAdaptor<::llvm::ArrayRef<::mlir::Attribute>>; static constexpr int odsIndex_src = 0; static constexpr int odsIndex_scale = 1; using Properties = FoldAdaptor::Properties; static ::llvm::ArrayRef<::llvm::StringRef> getAttributeNames() { return {}; } static constexpr ::llvm::StringLiteral getOperationName() { return ::llvm::StringLiteral("rocdl.cvt.scalef32.pk32.f32.bf6"); } std::pair getODSOperandIndexAndLength(unsigned index) { return {index, 1}; } ::mlir::Operation::operand_range getODSOperands(unsigned index) { auto valueRange = getODSOperandIndexAndLength(index); return {std::next(getOperation()->operand_begin(), valueRange.first), std::next(getOperation()->operand_begin(), valueRange.first + valueRange.second)}; } ::mlir::TypedValue<::mlir::VectorType> getSrc() { return ::llvm::cast<::mlir::TypedValue<::mlir::VectorType>>(*getODSOperands(0).begin()); } ::mlir::TypedValue<::mlir::FloatType> getScale() { return ::llvm::cast<::mlir::TypedValue<::mlir::FloatType>>(*getODSOperands(1).begin()); } ::mlir::OpOperand &getSrcMutable() { auto range = getODSOperandIndexAndLength(0); return getOperation()->getOpOperand(range.first); } ::mlir::OpOperand &getScaleMutable() { auto range = getODSOperandIndexAndLength(1); return getOperation()->getOpOperand(range.first); } std::pair getODSResultIndexAndLength(unsigned index) { return {index, 1}; } ::mlir::Operation::result_range getODSResults(unsigned index) { auto valueRange = getODSResultIndexAndLength(index); return {std::next(getOperation()->result_begin(), valueRange.first), std::next(getOperation()->result_begin(), valueRange.first + valueRange.second)}; } ::mlir::TypedValue<::mlir::VectorType> getRes() { return ::llvm::cast<::mlir::TypedValue<::mlir::VectorType>>(*getODSResults(0).begin()); } static ::llvm::LogicalResult setPropertiesFromAttr(Properties &prop, ::mlir::Attribute attr, ::llvm::function_ref<::mlir::InFlightDiagnostic()> emitError); static ::mlir::Attribute getPropertiesAsAttr(::mlir::MLIRContext *ctx, const Properties &prop); static llvm::hash_code computePropertiesHash(const Properties &prop); static std::optional getInherentAttr(::mlir::MLIRContext *ctx, const Properties &prop, llvm::StringRef name); static void setInherentAttr(Properties &prop, llvm::StringRef name, mlir::Attribute value); static void populateInherentAttrs(::mlir::MLIRContext *ctx, const Properties &prop, ::mlir::NamedAttrList &attrs); static ::llvm::LogicalResult verifyInherentAttrs(::mlir::OperationName opName, ::mlir::NamedAttrList &attrs, llvm::function_ref<::mlir::InFlightDiagnostic()> emitError); static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::Type res, ::mlir::Value src, ::mlir::Value scale); static CvtScaleF32Pk32F32Bf6Op create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::Type res, ::mlir::Value src, ::mlir::Value scale); static CvtScaleF32Pk32F32Bf6Op create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::Type res, ::mlir::Value src, ::mlir::Value scale); static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::Value src, ::mlir::Value scale); static CvtScaleF32Pk32F32Bf6Op create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::Value src, ::mlir::Value scale); static CvtScaleF32Pk32F32Bf6Op create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::Value src, ::mlir::Value scale); static void build(::mlir::OpBuilder &, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, ::llvm::ArrayRef<::mlir::NamedAttribute> attributes = {}); static CvtScaleF32Pk32F32Bf6Op create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, ::llvm::ArrayRef<::mlir::NamedAttribute> attributes = {}); static CvtScaleF32Pk32F32Bf6Op create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, ::llvm::ArrayRef<::mlir::NamedAttribute> attributes = {}); static void build(::mlir::OpBuilder &, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, const Properties &properties, ::llvm::ArrayRef<::mlir::NamedAttribute> discardableAttributes = {}); static CvtScaleF32Pk32F32Bf6Op create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, const Properties &properties, ::llvm::ArrayRef<::mlir::NamedAttribute> discardableAttributes = {}); static CvtScaleF32Pk32F32Bf6Op create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, const Properties &properties, ::llvm::ArrayRef<::mlir::NamedAttribute> discardableAttributes = {}); ::llvm::LogicalResult verifyInvariantsImpl(); ::llvm::LogicalResult verifyInvariants(); static ::mlir::ParseResult parse(::mlir::OpAsmParser &parser, ::mlir::OperationState &result); void print(::mlir::OpAsmPrinter &_odsPrinter); void getEffects(::llvm::SmallVectorImpl<::mlir::SideEffects::EffectInstance<::mlir::MemoryEffects::Effect>> &effects); public: }; } // namespace mlir::ROCDL MLIR_DECLARE_EXPLICIT_TYPE_ID(::mlir::ROCDL::CvtScaleF32Pk32F32Bf6Op) namespace mlir::ROCDL { //===----------------------------------------------------------------------===// // ::mlir::ROCDL::CvtScaleF32Pk32F32Fp6Op declarations //===----------------------------------------------------------------------===// namespace detail { class CvtScaleF32Pk32F32Fp6OpGenericAdaptorBase { public: using Properties = ::mlir::EmptyProperties; protected: ::mlir::DictionaryAttr odsAttrs; ::std::optional<::mlir::OperationName> odsOpName; Properties properties; ::mlir::RegionRange odsRegions; public: CvtScaleF32Pk32F32Fp6OpGenericAdaptorBase(::mlir::DictionaryAttr attrs, const Properties &properties, ::mlir::RegionRange regions = {}) : odsAttrs(attrs), properties(properties), odsRegions(regions) { if (odsAttrs) odsOpName.emplace("rocdl.cvt.scalef32.pk32.f32.fp6", odsAttrs.getContext()); } CvtScaleF32Pk32F32Fp6OpGenericAdaptorBase(CvtScaleF32Pk32F32Fp6Op op); std::pair getODSOperandIndexAndLength(unsigned index, unsigned odsOperandsSize) { return {index, 1}; } const Properties &getProperties() { return properties; } ::mlir::DictionaryAttr getAttributes() { return odsAttrs; } }; } // namespace detail template class CvtScaleF32Pk32F32Fp6OpGenericAdaptor : public detail::CvtScaleF32Pk32F32Fp6OpGenericAdaptorBase { using ValueT = ::llvm::detail::ValueOfRange; using Base = detail::CvtScaleF32Pk32F32Fp6OpGenericAdaptorBase; static constexpr int odsIndex_src = 0; static constexpr int odsIndex_scale = 1; public: CvtScaleF32Pk32F32Fp6OpGenericAdaptor(RangeT values, ::mlir::DictionaryAttr attrs, const Properties &properties, ::mlir::RegionRange regions = {}) : Base(attrs, properties, regions), odsOperands(values) {} CvtScaleF32Pk32F32Fp6OpGenericAdaptor(RangeT values, ::mlir::DictionaryAttr attrs, ::mlir::PropertyRef properties, ::mlir::RegionRange regions = {}) : CvtScaleF32Pk32F32Fp6OpGenericAdaptor(values, attrs, (properties ? *properties.as() : Properties{}), regions) {} CvtScaleF32Pk32F32Fp6OpGenericAdaptor(RangeT values, ::mlir::DictionaryAttr attrs = nullptr) : CvtScaleF32Pk32F32Fp6OpGenericAdaptor(values, attrs, Properties{}, {}) {} CvtScaleF32Pk32F32Fp6OpGenericAdaptor(RangeT values, const CvtScaleF32Pk32F32Fp6OpGenericAdaptorBase &base) : Base(base), odsOperands(values) {} template >> CvtScaleF32Pk32F32Fp6OpGenericAdaptor(RangeT values, LateInst op) : Base(op), odsOperands(values) {} std::pair getODSOperandIndexAndLength(unsigned index) { return Base::getODSOperandIndexAndLength(index, odsOperands.size()); } RangeT getODSOperands(unsigned index) { auto valueRange = getODSOperandIndexAndLength(index); return {std::next(odsOperands.begin(), valueRange.first), std::next(odsOperands.begin(), valueRange.first + valueRange.second)}; } ValueT getSrc() { return (*getODSOperands(0).begin()); } ValueT getScale() { return (*getODSOperands(1).begin()); } RangeT getOperands() { return odsOperands; } private: RangeT odsOperands; }; class CvtScaleF32Pk32F32Fp6OpAdaptor : public CvtScaleF32Pk32F32Fp6OpGenericAdaptor<::mlir::ValueRange> { public: using CvtScaleF32Pk32F32Fp6OpGenericAdaptor::CvtScaleF32Pk32F32Fp6OpGenericAdaptor; CvtScaleF32Pk32F32Fp6OpAdaptor(CvtScaleF32Pk32F32Fp6Op op); ::llvm::LogicalResult verify(::mlir::Location loc); }; class CvtScaleF32Pk32F32Fp6Op : public ::mlir::Op::Impl, ::mlir::OpTrait::ZeroSuccessors, ::mlir::OpTrait::NOperands<2>::Impl, ::mlir::OpTrait::OpInvariants, ::mlir::ConditionallySpeculatable::Trait, ::mlir::OpTrait::AlwaysSpeculatableImplTrait, ::mlir::MemoryEffectOpInterface::Trait> { public: using Op::Op; using Op::print; using Adaptor = CvtScaleF32Pk32F32Fp6OpAdaptor; template using GenericAdaptor = CvtScaleF32Pk32F32Fp6OpGenericAdaptor; using FoldAdaptor = GenericAdaptor<::llvm::ArrayRef<::mlir::Attribute>>; static constexpr int odsIndex_src = 0; static constexpr int odsIndex_scale = 1; using Properties = FoldAdaptor::Properties; static ::llvm::ArrayRef<::llvm::StringRef> getAttributeNames() { return {}; } static constexpr ::llvm::StringLiteral getOperationName() { return ::llvm::StringLiteral("rocdl.cvt.scalef32.pk32.f32.fp6"); } std::pair getODSOperandIndexAndLength(unsigned index) { return {index, 1}; } ::mlir::Operation::operand_range getODSOperands(unsigned index) { auto valueRange = getODSOperandIndexAndLength(index); return {std::next(getOperation()->operand_begin(), valueRange.first), std::next(getOperation()->operand_begin(), valueRange.first + valueRange.second)}; } ::mlir::TypedValue<::mlir::VectorType> getSrc() { return ::llvm::cast<::mlir::TypedValue<::mlir::VectorType>>(*getODSOperands(0).begin()); } ::mlir::TypedValue<::mlir::FloatType> getScale() { return ::llvm::cast<::mlir::TypedValue<::mlir::FloatType>>(*getODSOperands(1).begin()); } ::mlir::OpOperand &getSrcMutable() { auto range = getODSOperandIndexAndLength(0); return getOperation()->getOpOperand(range.first); } ::mlir::OpOperand &getScaleMutable() { auto range = getODSOperandIndexAndLength(1); return getOperation()->getOpOperand(range.first); } std::pair getODSResultIndexAndLength(unsigned index) { return {index, 1}; } ::mlir::Operation::result_range getODSResults(unsigned index) { auto valueRange = getODSResultIndexAndLength(index); return {std::next(getOperation()->result_begin(), valueRange.first), std::next(getOperation()->result_begin(), valueRange.first + valueRange.second)}; } ::mlir::TypedValue<::mlir::VectorType> getRes() { return ::llvm::cast<::mlir::TypedValue<::mlir::VectorType>>(*getODSResults(0).begin()); } static ::llvm::LogicalResult setPropertiesFromAttr(Properties &prop, ::mlir::Attribute attr, ::llvm::function_ref<::mlir::InFlightDiagnostic()> emitError); static ::mlir::Attribute getPropertiesAsAttr(::mlir::MLIRContext *ctx, const Properties &prop); static llvm::hash_code computePropertiesHash(const Properties &prop); static std::optional getInherentAttr(::mlir::MLIRContext *ctx, const Properties &prop, llvm::StringRef name); static void setInherentAttr(Properties &prop, llvm::StringRef name, mlir::Attribute value); static void populateInherentAttrs(::mlir::MLIRContext *ctx, const Properties &prop, ::mlir::NamedAttrList &attrs); static ::llvm::LogicalResult verifyInherentAttrs(::mlir::OperationName opName, ::mlir::NamedAttrList &attrs, llvm::function_ref<::mlir::InFlightDiagnostic()> emitError); static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::Type res, ::mlir::Value src, ::mlir::Value scale); static CvtScaleF32Pk32F32Fp6Op create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::Type res, ::mlir::Value src, ::mlir::Value scale); static CvtScaleF32Pk32F32Fp6Op create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::Type res, ::mlir::Value src, ::mlir::Value scale); static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::Value src, ::mlir::Value scale); static CvtScaleF32Pk32F32Fp6Op create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::Value src, ::mlir::Value scale); static CvtScaleF32Pk32F32Fp6Op create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::Value src, ::mlir::Value scale); static void build(::mlir::OpBuilder &, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, ::llvm::ArrayRef<::mlir::NamedAttribute> attributes = {}); static CvtScaleF32Pk32F32Fp6Op create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, ::llvm::ArrayRef<::mlir::NamedAttribute> attributes = {}); static CvtScaleF32Pk32F32Fp6Op create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, ::llvm::ArrayRef<::mlir::NamedAttribute> attributes = {}); static void build(::mlir::OpBuilder &, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, const Properties &properties, ::llvm::ArrayRef<::mlir::NamedAttribute> discardableAttributes = {}); static CvtScaleF32Pk32F32Fp6Op create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, const Properties &properties, ::llvm::ArrayRef<::mlir::NamedAttribute> discardableAttributes = {}); static CvtScaleF32Pk32F32Fp6Op create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, const Properties &properties, ::llvm::ArrayRef<::mlir::NamedAttribute> discardableAttributes = {}); ::llvm::LogicalResult verifyInvariantsImpl(); ::llvm::LogicalResult verifyInvariants(); static ::mlir::ParseResult parse(::mlir::OpAsmParser &parser, ::mlir::OperationState &result); void print(::mlir::OpAsmPrinter &_odsPrinter); void getEffects(::llvm::SmallVectorImpl<::mlir::SideEffects::EffectInstance<::mlir::MemoryEffects::Effect>> &effects); public: }; } // namespace mlir::ROCDL MLIR_DECLARE_EXPLICIT_TYPE_ID(::mlir::ROCDL::CvtScaleF32Pk32F32Fp6Op) namespace mlir::ROCDL { //===----------------------------------------------------------------------===// // ::mlir::ROCDL::CvtScaleF32Pk32Fp6Bf16Op declarations //===----------------------------------------------------------------------===// namespace detail { class CvtScaleF32Pk32Fp6Bf16OpGenericAdaptorBase { public: using Properties = ::mlir::EmptyProperties; protected: ::mlir::DictionaryAttr odsAttrs; ::std::optional<::mlir::OperationName> odsOpName; Properties properties; ::mlir::RegionRange odsRegions; public: CvtScaleF32Pk32Fp6Bf16OpGenericAdaptorBase(::mlir::DictionaryAttr attrs, const Properties &properties, ::mlir::RegionRange regions = {}) : odsAttrs(attrs), properties(properties), odsRegions(regions) { if (odsAttrs) odsOpName.emplace("rocdl.cvt.scalef32.pk32.fp6.bf16", odsAttrs.getContext()); } CvtScaleF32Pk32Fp6Bf16OpGenericAdaptorBase(CvtScaleF32Pk32Fp6Bf16Op op); std::pair getODSOperandIndexAndLength(unsigned index, unsigned odsOperandsSize) { return {index, 1}; } const Properties &getProperties() { return properties; } ::mlir::DictionaryAttr getAttributes() { return odsAttrs; } }; } // namespace detail template class CvtScaleF32Pk32Fp6Bf16OpGenericAdaptor : public detail::CvtScaleF32Pk32Fp6Bf16OpGenericAdaptorBase { using ValueT = ::llvm::detail::ValueOfRange; using Base = detail::CvtScaleF32Pk32Fp6Bf16OpGenericAdaptorBase; static constexpr int odsIndex_src = 0; static constexpr int odsIndex_scale = 1; public: CvtScaleF32Pk32Fp6Bf16OpGenericAdaptor(RangeT values, ::mlir::DictionaryAttr attrs, const Properties &properties, ::mlir::RegionRange regions = {}) : Base(attrs, properties, regions), odsOperands(values) {} CvtScaleF32Pk32Fp6Bf16OpGenericAdaptor(RangeT values, ::mlir::DictionaryAttr attrs, ::mlir::PropertyRef properties, ::mlir::RegionRange regions = {}) : CvtScaleF32Pk32Fp6Bf16OpGenericAdaptor(values, attrs, (properties ? *properties.as() : Properties{}), regions) {} CvtScaleF32Pk32Fp6Bf16OpGenericAdaptor(RangeT values, ::mlir::DictionaryAttr attrs = nullptr) : CvtScaleF32Pk32Fp6Bf16OpGenericAdaptor(values, attrs, Properties{}, {}) {} CvtScaleF32Pk32Fp6Bf16OpGenericAdaptor(RangeT values, const CvtScaleF32Pk32Fp6Bf16OpGenericAdaptorBase &base) : Base(base), odsOperands(values) {} template >> CvtScaleF32Pk32Fp6Bf16OpGenericAdaptor(RangeT values, LateInst op) : Base(op), odsOperands(values) {} std::pair getODSOperandIndexAndLength(unsigned index) { return Base::getODSOperandIndexAndLength(index, odsOperands.size()); } RangeT getODSOperands(unsigned index) { auto valueRange = getODSOperandIndexAndLength(index); return {std::next(odsOperands.begin(), valueRange.first), std::next(odsOperands.begin(), valueRange.first + valueRange.second)}; } ValueT getSrc() { return (*getODSOperands(0).begin()); } ValueT getScale() { return (*getODSOperands(1).begin()); } RangeT getOperands() { return odsOperands; } private: RangeT odsOperands; }; class CvtScaleF32Pk32Fp6Bf16OpAdaptor : public CvtScaleF32Pk32Fp6Bf16OpGenericAdaptor<::mlir::ValueRange> { public: using CvtScaleF32Pk32Fp6Bf16OpGenericAdaptor::CvtScaleF32Pk32Fp6Bf16OpGenericAdaptor; CvtScaleF32Pk32Fp6Bf16OpAdaptor(CvtScaleF32Pk32Fp6Bf16Op op); ::llvm::LogicalResult verify(::mlir::Location loc); }; class CvtScaleF32Pk32Fp6Bf16Op : public ::mlir::Op::Impl, ::mlir::OpTrait::ZeroSuccessors, ::mlir::OpTrait::NOperands<2>::Impl, ::mlir::OpTrait::OpInvariants, ::mlir::ConditionallySpeculatable::Trait, ::mlir::OpTrait::AlwaysSpeculatableImplTrait, ::mlir::MemoryEffectOpInterface::Trait> { public: using Op::Op; using Op::print; using Adaptor = CvtScaleF32Pk32Fp6Bf16OpAdaptor; template using GenericAdaptor = CvtScaleF32Pk32Fp6Bf16OpGenericAdaptor; using FoldAdaptor = GenericAdaptor<::llvm::ArrayRef<::mlir::Attribute>>; static constexpr int odsIndex_src = 0; static constexpr int odsIndex_scale = 1; using Properties = FoldAdaptor::Properties; static ::llvm::ArrayRef<::llvm::StringRef> getAttributeNames() { return {}; } static constexpr ::llvm::StringLiteral getOperationName() { return ::llvm::StringLiteral("rocdl.cvt.scalef32.pk32.fp6.bf16"); } std::pair getODSOperandIndexAndLength(unsigned index) { return {index, 1}; } ::mlir::Operation::operand_range getODSOperands(unsigned index) { auto valueRange = getODSOperandIndexAndLength(index); return {std::next(getOperation()->operand_begin(), valueRange.first), std::next(getOperation()->operand_begin(), valueRange.first + valueRange.second)}; } ::mlir::TypedValue<::mlir::VectorType> getSrc() { return ::llvm::cast<::mlir::TypedValue<::mlir::VectorType>>(*getODSOperands(0).begin()); } ::mlir::TypedValue<::mlir::FloatType> getScale() { return ::llvm::cast<::mlir::TypedValue<::mlir::FloatType>>(*getODSOperands(1).begin()); } ::mlir::OpOperand &getSrcMutable() { auto range = getODSOperandIndexAndLength(0); return getOperation()->getOpOperand(range.first); } ::mlir::OpOperand &getScaleMutable() { auto range = getODSOperandIndexAndLength(1); return getOperation()->getOpOperand(range.first); } std::pair getODSResultIndexAndLength(unsigned index) { return {index, 1}; } ::mlir::Operation::result_range getODSResults(unsigned index) { auto valueRange = getODSResultIndexAndLength(index); return {std::next(getOperation()->result_begin(), valueRange.first), std::next(getOperation()->result_begin(), valueRange.first + valueRange.second)}; } ::mlir::TypedValue<::mlir::VectorType> getRes() { return ::llvm::cast<::mlir::TypedValue<::mlir::VectorType>>(*getODSResults(0).begin()); } static ::llvm::LogicalResult setPropertiesFromAttr(Properties &prop, ::mlir::Attribute attr, ::llvm::function_ref<::mlir::InFlightDiagnostic()> emitError); static ::mlir::Attribute getPropertiesAsAttr(::mlir::MLIRContext *ctx, const Properties &prop); static llvm::hash_code computePropertiesHash(const Properties &prop); static std::optional getInherentAttr(::mlir::MLIRContext *ctx, const Properties &prop, llvm::StringRef name); static void setInherentAttr(Properties &prop, llvm::StringRef name, mlir::Attribute value); static void populateInherentAttrs(::mlir::MLIRContext *ctx, const Properties &prop, ::mlir::NamedAttrList &attrs); static ::llvm::LogicalResult verifyInherentAttrs(::mlir::OperationName opName, ::mlir::NamedAttrList &attrs, llvm::function_ref<::mlir::InFlightDiagnostic()> emitError); static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::Type res, ::mlir::Value src, ::mlir::Value scale); static CvtScaleF32Pk32Fp6Bf16Op create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::Type res, ::mlir::Value src, ::mlir::Value scale); static CvtScaleF32Pk32Fp6Bf16Op create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::Type res, ::mlir::Value src, ::mlir::Value scale); static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::Value src, ::mlir::Value scale); static CvtScaleF32Pk32Fp6Bf16Op create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::Value src, ::mlir::Value scale); static CvtScaleF32Pk32Fp6Bf16Op create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::Value src, ::mlir::Value scale); static void build(::mlir::OpBuilder &, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, ::llvm::ArrayRef<::mlir::NamedAttribute> attributes = {}); static CvtScaleF32Pk32Fp6Bf16Op create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, ::llvm::ArrayRef<::mlir::NamedAttribute> attributes = {}); static CvtScaleF32Pk32Fp6Bf16Op create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, ::llvm::ArrayRef<::mlir::NamedAttribute> attributes = {}); static void build(::mlir::OpBuilder &, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, const Properties &properties, ::llvm::ArrayRef<::mlir::NamedAttribute> discardableAttributes = {}); static CvtScaleF32Pk32Fp6Bf16Op create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, const Properties &properties, ::llvm::ArrayRef<::mlir::NamedAttribute> discardableAttributes = {}); static CvtScaleF32Pk32Fp6Bf16Op create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, const Properties &properties, ::llvm::ArrayRef<::mlir::NamedAttribute> discardableAttributes = {}); ::llvm::LogicalResult verifyInvariantsImpl(); ::llvm::LogicalResult verifyInvariants(); static ::mlir::ParseResult parse(::mlir::OpAsmParser &parser, ::mlir::OperationState &result); void print(::mlir::OpAsmPrinter &_odsPrinter); void getEffects(::llvm::SmallVectorImpl<::mlir::SideEffects::EffectInstance<::mlir::MemoryEffects::Effect>> &effects); public: }; } // namespace mlir::ROCDL MLIR_DECLARE_EXPLICIT_TYPE_ID(::mlir::ROCDL::CvtScaleF32Pk32Fp6Bf16Op) namespace mlir::ROCDL { //===----------------------------------------------------------------------===// // ::mlir::ROCDL::CvtScaleF32Pk32Fp6F16Op declarations //===----------------------------------------------------------------------===// namespace detail { class CvtScaleF32Pk32Fp6F16OpGenericAdaptorBase { public: using Properties = ::mlir::EmptyProperties; protected: ::mlir::DictionaryAttr odsAttrs; ::std::optional<::mlir::OperationName> odsOpName; Properties properties; ::mlir::RegionRange odsRegions; public: CvtScaleF32Pk32Fp6F16OpGenericAdaptorBase(::mlir::DictionaryAttr attrs, const Properties &properties, ::mlir::RegionRange regions = {}) : odsAttrs(attrs), properties(properties), odsRegions(regions) { if (odsAttrs) odsOpName.emplace("rocdl.cvt.scalef32.pk32.fp6.f16", odsAttrs.getContext()); } CvtScaleF32Pk32Fp6F16OpGenericAdaptorBase(CvtScaleF32Pk32Fp6F16Op op); std::pair getODSOperandIndexAndLength(unsigned index, unsigned odsOperandsSize) { return {index, 1}; } const Properties &getProperties() { return properties; } ::mlir::DictionaryAttr getAttributes() { return odsAttrs; } }; } // namespace detail template class CvtScaleF32Pk32Fp6F16OpGenericAdaptor : public detail::CvtScaleF32Pk32Fp6F16OpGenericAdaptorBase { using ValueT = ::llvm::detail::ValueOfRange; using Base = detail::CvtScaleF32Pk32Fp6F16OpGenericAdaptorBase; static constexpr int odsIndex_src = 0; static constexpr int odsIndex_scale = 1; public: CvtScaleF32Pk32Fp6F16OpGenericAdaptor(RangeT values, ::mlir::DictionaryAttr attrs, const Properties &properties, ::mlir::RegionRange regions = {}) : Base(attrs, properties, regions), odsOperands(values) {} CvtScaleF32Pk32Fp6F16OpGenericAdaptor(RangeT values, ::mlir::DictionaryAttr attrs, ::mlir::PropertyRef properties, ::mlir::RegionRange regions = {}) : CvtScaleF32Pk32Fp6F16OpGenericAdaptor(values, attrs, (properties ? *properties.as() : Properties{}), regions) {} CvtScaleF32Pk32Fp6F16OpGenericAdaptor(RangeT values, ::mlir::DictionaryAttr attrs = nullptr) : CvtScaleF32Pk32Fp6F16OpGenericAdaptor(values, attrs, Properties{}, {}) {} CvtScaleF32Pk32Fp6F16OpGenericAdaptor(RangeT values, const CvtScaleF32Pk32Fp6F16OpGenericAdaptorBase &base) : Base(base), odsOperands(values) {} template >> CvtScaleF32Pk32Fp6F16OpGenericAdaptor(RangeT values, LateInst op) : Base(op), odsOperands(values) {} std::pair getODSOperandIndexAndLength(unsigned index) { return Base::getODSOperandIndexAndLength(index, odsOperands.size()); } RangeT getODSOperands(unsigned index) { auto valueRange = getODSOperandIndexAndLength(index); return {std::next(odsOperands.begin(), valueRange.first), std::next(odsOperands.begin(), valueRange.first + valueRange.second)}; } ValueT getSrc() { return (*getODSOperands(0).begin()); } ValueT getScale() { return (*getODSOperands(1).begin()); } RangeT getOperands() { return odsOperands; } private: RangeT odsOperands; }; class CvtScaleF32Pk32Fp6F16OpAdaptor : public CvtScaleF32Pk32Fp6F16OpGenericAdaptor<::mlir::ValueRange> { public: using CvtScaleF32Pk32Fp6F16OpGenericAdaptor::CvtScaleF32Pk32Fp6F16OpGenericAdaptor; CvtScaleF32Pk32Fp6F16OpAdaptor(CvtScaleF32Pk32Fp6F16Op op); ::llvm::LogicalResult verify(::mlir::Location loc); }; class CvtScaleF32Pk32Fp6F16Op : public ::mlir::Op::Impl, ::mlir::OpTrait::ZeroSuccessors, ::mlir::OpTrait::NOperands<2>::Impl, ::mlir::OpTrait::OpInvariants, ::mlir::ConditionallySpeculatable::Trait, ::mlir::OpTrait::AlwaysSpeculatableImplTrait, ::mlir::MemoryEffectOpInterface::Trait> { public: using Op::Op; using Op::print; using Adaptor = CvtScaleF32Pk32Fp6F16OpAdaptor; template using GenericAdaptor = CvtScaleF32Pk32Fp6F16OpGenericAdaptor; using FoldAdaptor = GenericAdaptor<::llvm::ArrayRef<::mlir::Attribute>>; static constexpr int odsIndex_src = 0; static constexpr int odsIndex_scale = 1; using Properties = FoldAdaptor::Properties; static ::llvm::ArrayRef<::llvm::StringRef> getAttributeNames() { return {}; } static constexpr ::llvm::StringLiteral getOperationName() { return ::llvm::StringLiteral("rocdl.cvt.scalef32.pk32.fp6.f16"); } std::pair getODSOperandIndexAndLength(unsigned index) { return {index, 1}; } ::mlir::Operation::operand_range getODSOperands(unsigned index) { auto valueRange = getODSOperandIndexAndLength(index); return {std::next(getOperation()->operand_begin(), valueRange.first), std::next(getOperation()->operand_begin(), valueRange.first + valueRange.second)}; } ::mlir::TypedValue<::mlir::VectorType> getSrc() { return ::llvm::cast<::mlir::TypedValue<::mlir::VectorType>>(*getODSOperands(0).begin()); } ::mlir::TypedValue<::mlir::FloatType> getScale() { return ::llvm::cast<::mlir::TypedValue<::mlir::FloatType>>(*getODSOperands(1).begin()); } ::mlir::OpOperand &getSrcMutable() { auto range = getODSOperandIndexAndLength(0); return getOperation()->getOpOperand(range.first); } ::mlir::OpOperand &getScaleMutable() { auto range = getODSOperandIndexAndLength(1); return getOperation()->getOpOperand(range.first); } std::pair getODSResultIndexAndLength(unsigned index) { return {index, 1}; } ::mlir::Operation::result_range getODSResults(unsigned index) { auto valueRange = getODSResultIndexAndLength(index); return {std::next(getOperation()->result_begin(), valueRange.first), std::next(getOperation()->result_begin(), valueRange.first + valueRange.second)}; } ::mlir::TypedValue<::mlir::VectorType> getRes() { return ::llvm::cast<::mlir::TypedValue<::mlir::VectorType>>(*getODSResults(0).begin()); } static ::llvm::LogicalResult setPropertiesFromAttr(Properties &prop, ::mlir::Attribute attr, ::llvm::function_ref<::mlir::InFlightDiagnostic()> emitError); static ::mlir::Attribute getPropertiesAsAttr(::mlir::MLIRContext *ctx, const Properties &prop); static llvm::hash_code computePropertiesHash(const Properties &prop); static std::optional getInherentAttr(::mlir::MLIRContext *ctx, const Properties &prop, llvm::StringRef name); static void setInherentAttr(Properties &prop, llvm::StringRef name, mlir::Attribute value); static void populateInherentAttrs(::mlir::MLIRContext *ctx, const Properties &prop, ::mlir::NamedAttrList &attrs); static ::llvm::LogicalResult verifyInherentAttrs(::mlir::OperationName opName, ::mlir::NamedAttrList &attrs, llvm::function_ref<::mlir::InFlightDiagnostic()> emitError); static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::Type res, ::mlir::Value src, ::mlir::Value scale); static CvtScaleF32Pk32Fp6F16Op create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::Type res, ::mlir::Value src, ::mlir::Value scale); static CvtScaleF32Pk32Fp6F16Op create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::Type res, ::mlir::Value src, ::mlir::Value scale); static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::Value src, ::mlir::Value scale); static CvtScaleF32Pk32Fp6F16Op create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::Value src, ::mlir::Value scale); static CvtScaleF32Pk32Fp6F16Op create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::Value src, ::mlir::Value scale); static void build(::mlir::OpBuilder &, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, ::llvm::ArrayRef<::mlir::NamedAttribute> attributes = {}); static CvtScaleF32Pk32Fp6F16Op create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, ::llvm::ArrayRef<::mlir::NamedAttribute> attributes = {}); static CvtScaleF32Pk32Fp6F16Op create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, ::llvm::ArrayRef<::mlir::NamedAttribute> attributes = {}); static void build(::mlir::OpBuilder &, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, const Properties &properties, ::llvm::ArrayRef<::mlir::NamedAttribute> discardableAttributes = {}); static CvtScaleF32Pk32Fp6F16Op create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, const Properties &properties, ::llvm::ArrayRef<::mlir::NamedAttribute> discardableAttributes = {}); static CvtScaleF32Pk32Fp6F16Op create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, const Properties &properties, ::llvm::ArrayRef<::mlir::NamedAttribute> discardableAttributes = {}); ::llvm::LogicalResult verifyInvariantsImpl(); ::llvm::LogicalResult verifyInvariants(); static ::mlir::ParseResult parse(::mlir::OpAsmParser &parser, ::mlir::OperationState &result); void print(::mlir::OpAsmPrinter &_odsPrinter); void getEffects(::llvm::SmallVectorImpl<::mlir::SideEffects::EffectInstance<::mlir::MemoryEffects::Effect>> &effects); public: }; } // namespace mlir::ROCDL MLIR_DECLARE_EXPLICIT_TYPE_ID(::mlir::ROCDL::CvtScaleF32Pk32Fp6F16Op) namespace mlir::ROCDL { //===----------------------------------------------------------------------===// // ::mlir::ROCDL::CvtScaleF32Pk8Bf8Bf16Op declarations //===----------------------------------------------------------------------===// namespace detail { class CvtScaleF32Pk8Bf8Bf16OpGenericAdaptorBase { public: using Properties = ::mlir::EmptyProperties; protected: ::mlir::DictionaryAttr odsAttrs; ::std::optional<::mlir::OperationName> odsOpName; Properties properties; ::mlir::RegionRange odsRegions; public: CvtScaleF32Pk8Bf8Bf16OpGenericAdaptorBase(::mlir::DictionaryAttr attrs, const Properties &properties, ::mlir::RegionRange regions = {}) : odsAttrs(attrs), properties(properties), odsRegions(regions) { if (odsAttrs) odsOpName.emplace("rocdl.cvt.scalef32.pk8.bf8.bf16", odsAttrs.getContext()); } CvtScaleF32Pk8Bf8Bf16OpGenericAdaptorBase(CvtScaleF32Pk8Bf8Bf16Op op); std::pair getODSOperandIndexAndLength(unsigned index, unsigned odsOperandsSize) { return {index, 1}; } const Properties &getProperties() { return properties; } ::mlir::DictionaryAttr getAttributes() { return odsAttrs; } }; } // namespace detail template class CvtScaleF32Pk8Bf8Bf16OpGenericAdaptor : public detail::CvtScaleF32Pk8Bf8Bf16OpGenericAdaptorBase { using ValueT = ::llvm::detail::ValueOfRange; using Base = detail::CvtScaleF32Pk8Bf8Bf16OpGenericAdaptorBase; static constexpr int odsIndex_src = 0; static constexpr int odsIndex_scale = 1; public: CvtScaleF32Pk8Bf8Bf16OpGenericAdaptor(RangeT values, ::mlir::DictionaryAttr attrs, const Properties &properties, ::mlir::RegionRange regions = {}) : Base(attrs, properties, regions), odsOperands(values) {} CvtScaleF32Pk8Bf8Bf16OpGenericAdaptor(RangeT values, ::mlir::DictionaryAttr attrs, ::mlir::PropertyRef properties, ::mlir::RegionRange regions = {}) : CvtScaleF32Pk8Bf8Bf16OpGenericAdaptor(values, attrs, (properties ? *properties.as() : Properties{}), regions) {} CvtScaleF32Pk8Bf8Bf16OpGenericAdaptor(RangeT values, ::mlir::DictionaryAttr attrs = nullptr) : CvtScaleF32Pk8Bf8Bf16OpGenericAdaptor(values, attrs, Properties{}, {}) {} CvtScaleF32Pk8Bf8Bf16OpGenericAdaptor(RangeT values, const CvtScaleF32Pk8Bf8Bf16OpGenericAdaptorBase &base) : Base(base), odsOperands(values) {} template >> CvtScaleF32Pk8Bf8Bf16OpGenericAdaptor(RangeT values, LateInst op) : Base(op), odsOperands(values) {} std::pair getODSOperandIndexAndLength(unsigned index) { return Base::getODSOperandIndexAndLength(index, odsOperands.size()); } RangeT getODSOperands(unsigned index) { auto valueRange = getODSOperandIndexAndLength(index); return {std::next(odsOperands.begin(), valueRange.first), std::next(odsOperands.begin(), valueRange.first + valueRange.second)}; } ValueT getSrc() { return (*getODSOperands(0).begin()); } ValueT getScale() { return (*getODSOperands(1).begin()); } RangeT getOperands() { return odsOperands; } private: RangeT odsOperands; }; class CvtScaleF32Pk8Bf8Bf16OpAdaptor : public CvtScaleF32Pk8Bf8Bf16OpGenericAdaptor<::mlir::ValueRange> { public: using CvtScaleF32Pk8Bf8Bf16OpGenericAdaptor::CvtScaleF32Pk8Bf8Bf16OpGenericAdaptor; CvtScaleF32Pk8Bf8Bf16OpAdaptor(CvtScaleF32Pk8Bf8Bf16Op op); ::llvm::LogicalResult verify(::mlir::Location loc); }; class CvtScaleF32Pk8Bf8Bf16Op : public ::mlir::Op::Impl, ::mlir::OpTrait::ZeroSuccessors, ::mlir::OpTrait::NOperands<2>::Impl, ::mlir::OpTrait::OpInvariants, ::mlir::ConditionallySpeculatable::Trait, ::mlir::OpTrait::AlwaysSpeculatableImplTrait, ::mlir::MemoryEffectOpInterface::Trait> { public: using Op::Op; using Op::print; using Adaptor = CvtScaleF32Pk8Bf8Bf16OpAdaptor; template using GenericAdaptor = CvtScaleF32Pk8Bf8Bf16OpGenericAdaptor; using FoldAdaptor = GenericAdaptor<::llvm::ArrayRef<::mlir::Attribute>>; static constexpr int odsIndex_src = 0; static constexpr int odsIndex_scale = 1; using Properties = FoldAdaptor::Properties; static ::llvm::ArrayRef<::llvm::StringRef> getAttributeNames() { return {}; } static constexpr ::llvm::StringLiteral getOperationName() { return ::llvm::StringLiteral("rocdl.cvt.scalef32.pk8.bf8.bf16"); } std::pair getODSOperandIndexAndLength(unsigned index) { return {index, 1}; } ::mlir::Operation::operand_range getODSOperands(unsigned index) { auto valueRange = getODSOperandIndexAndLength(index); return {std::next(getOperation()->operand_begin(), valueRange.first), std::next(getOperation()->operand_begin(), valueRange.first + valueRange.second)}; } ::mlir::TypedValue<::mlir::VectorType> getSrc() { return ::llvm::cast<::mlir::TypedValue<::mlir::VectorType>>(*getODSOperands(0).begin()); } ::mlir::TypedValue<::mlir::FloatType> getScale() { return ::llvm::cast<::mlir::TypedValue<::mlir::FloatType>>(*getODSOperands(1).begin()); } ::mlir::OpOperand &getSrcMutable() { auto range = getODSOperandIndexAndLength(0); return getOperation()->getOpOperand(range.first); } ::mlir::OpOperand &getScaleMutable() { auto range = getODSOperandIndexAndLength(1); return getOperation()->getOpOperand(range.first); } std::pair getODSResultIndexAndLength(unsigned index) { return {index, 1}; } ::mlir::Operation::result_range getODSResults(unsigned index) { auto valueRange = getODSResultIndexAndLength(index); return {std::next(getOperation()->result_begin(), valueRange.first), std::next(getOperation()->result_begin(), valueRange.first + valueRange.second)}; } ::mlir::TypedValue<::mlir::VectorType> getRes() { return ::llvm::cast<::mlir::TypedValue<::mlir::VectorType>>(*getODSResults(0).begin()); } static ::llvm::LogicalResult setPropertiesFromAttr(Properties &prop, ::mlir::Attribute attr, ::llvm::function_ref<::mlir::InFlightDiagnostic()> emitError); static ::mlir::Attribute getPropertiesAsAttr(::mlir::MLIRContext *ctx, const Properties &prop); static llvm::hash_code computePropertiesHash(const Properties &prop); static std::optional getInherentAttr(::mlir::MLIRContext *ctx, const Properties &prop, llvm::StringRef name); static void setInherentAttr(Properties &prop, llvm::StringRef name, mlir::Attribute value); static void populateInherentAttrs(::mlir::MLIRContext *ctx, const Properties &prop, ::mlir::NamedAttrList &attrs); static ::llvm::LogicalResult verifyInherentAttrs(::mlir::OperationName opName, ::mlir::NamedAttrList &attrs, llvm::function_ref<::mlir::InFlightDiagnostic()> emitError); static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::Type res, ::mlir::Value src, ::mlir::Value scale); static CvtScaleF32Pk8Bf8Bf16Op create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::Type res, ::mlir::Value src, ::mlir::Value scale); static CvtScaleF32Pk8Bf8Bf16Op create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::Type res, ::mlir::Value src, ::mlir::Value scale); static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::Value src, ::mlir::Value scale); static CvtScaleF32Pk8Bf8Bf16Op create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::Value src, ::mlir::Value scale); static CvtScaleF32Pk8Bf8Bf16Op create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::Value src, ::mlir::Value scale); static void build(::mlir::OpBuilder &, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, ::llvm::ArrayRef<::mlir::NamedAttribute> attributes = {}); static CvtScaleF32Pk8Bf8Bf16Op create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, ::llvm::ArrayRef<::mlir::NamedAttribute> attributes = {}); static CvtScaleF32Pk8Bf8Bf16Op create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, ::llvm::ArrayRef<::mlir::NamedAttribute> attributes = {}); static void build(::mlir::OpBuilder &, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, const Properties &properties, ::llvm::ArrayRef<::mlir::NamedAttribute> discardableAttributes = {}); static CvtScaleF32Pk8Bf8Bf16Op create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, const Properties &properties, ::llvm::ArrayRef<::mlir::NamedAttribute> discardableAttributes = {}); static CvtScaleF32Pk8Bf8Bf16Op create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, const Properties &properties, ::llvm::ArrayRef<::mlir::NamedAttribute> discardableAttributes = {}); ::llvm::LogicalResult verifyInvariantsImpl(); ::llvm::LogicalResult verifyInvariants(); static ::mlir::ParseResult parse(::mlir::OpAsmParser &parser, ::mlir::OperationState &result); void print(::mlir::OpAsmPrinter &_odsPrinter); void getEffects(::llvm::SmallVectorImpl<::mlir::SideEffects::EffectInstance<::mlir::MemoryEffects::Effect>> &effects); public: }; } // namespace mlir::ROCDL MLIR_DECLARE_EXPLICIT_TYPE_ID(::mlir::ROCDL::CvtScaleF32Pk8Bf8Bf16Op) namespace mlir::ROCDL { //===----------------------------------------------------------------------===// // ::mlir::ROCDL::CvtScaleF32Pk8Bf8F16Op declarations //===----------------------------------------------------------------------===// namespace detail { class CvtScaleF32Pk8Bf8F16OpGenericAdaptorBase { public: using Properties = ::mlir::EmptyProperties; protected: ::mlir::DictionaryAttr odsAttrs; ::std::optional<::mlir::OperationName> odsOpName; Properties properties; ::mlir::RegionRange odsRegions; public: CvtScaleF32Pk8Bf8F16OpGenericAdaptorBase(::mlir::DictionaryAttr attrs, const Properties &properties, ::mlir::RegionRange regions = {}) : odsAttrs(attrs), properties(properties), odsRegions(regions) { if (odsAttrs) odsOpName.emplace("rocdl.cvt.scalef32.pk8.bf8.f16", odsAttrs.getContext()); } CvtScaleF32Pk8Bf8F16OpGenericAdaptorBase(CvtScaleF32Pk8Bf8F16Op op); std::pair getODSOperandIndexAndLength(unsigned index, unsigned odsOperandsSize) { return {index, 1}; } const Properties &getProperties() { return properties; } ::mlir::DictionaryAttr getAttributes() { return odsAttrs; } }; } // namespace detail template class CvtScaleF32Pk8Bf8F16OpGenericAdaptor : public detail::CvtScaleF32Pk8Bf8F16OpGenericAdaptorBase { using ValueT = ::llvm::detail::ValueOfRange; using Base = detail::CvtScaleF32Pk8Bf8F16OpGenericAdaptorBase; static constexpr int odsIndex_src = 0; static constexpr int odsIndex_scale = 1; public: CvtScaleF32Pk8Bf8F16OpGenericAdaptor(RangeT values, ::mlir::DictionaryAttr attrs, const Properties &properties, ::mlir::RegionRange regions = {}) : Base(attrs, properties, regions), odsOperands(values) {} CvtScaleF32Pk8Bf8F16OpGenericAdaptor(RangeT values, ::mlir::DictionaryAttr attrs, ::mlir::PropertyRef properties, ::mlir::RegionRange regions = {}) : CvtScaleF32Pk8Bf8F16OpGenericAdaptor(values, attrs, (properties ? *properties.as() : Properties{}), regions) {} CvtScaleF32Pk8Bf8F16OpGenericAdaptor(RangeT values, ::mlir::DictionaryAttr attrs = nullptr) : CvtScaleF32Pk8Bf8F16OpGenericAdaptor(values, attrs, Properties{}, {}) {} CvtScaleF32Pk8Bf8F16OpGenericAdaptor(RangeT values, const CvtScaleF32Pk8Bf8F16OpGenericAdaptorBase &base) : Base(base), odsOperands(values) {} template >> CvtScaleF32Pk8Bf8F16OpGenericAdaptor(RangeT values, LateInst op) : Base(op), odsOperands(values) {} std::pair getODSOperandIndexAndLength(unsigned index) { return Base::getODSOperandIndexAndLength(index, odsOperands.size()); } RangeT getODSOperands(unsigned index) { auto valueRange = getODSOperandIndexAndLength(index); return {std::next(odsOperands.begin(), valueRange.first), std::next(odsOperands.begin(), valueRange.first + valueRange.second)}; } ValueT getSrc() { return (*getODSOperands(0).begin()); } ValueT getScale() { return (*getODSOperands(1).begin()); } RangeT getOperands() { return odsOperands; } private: RangeT odsOperands; }; class CvtScaleF32Pk8Bf8F16OpAdaptor : public CvtScaleF32Pk8Bf8F16OpGenericAdaptor<::mlir::ValueRange> { public: using CvtScaleF32Pk8Bf8F16OpGenericAdaptor::CvtScaleF32Pk8Bf8F16OpGenericAdaptor; CvtScaleF32Pk8Bf8F16OpAdaptor(CvtScaleF32Pk8Bf8F16Op op); ::llvm::LogicalResult verify(::mlir::Location loc); }; class CvtScaleF32Pk8Bf8F16Op : public ::mlir::Op::Impl, ::mlir::OpTrait::ZeroSuccessors, ::mlir::OpTrait::NOperands<2>::Impl, ::mlir::OpTrait::OpInvariants, ::mlir::ConditionallySpeculatable::Trait, ::mlir::OpTrait::AlwaysSpeculatableImplTrait, ::mlir::MemoryEffectOpInterface::Trait> { public: using Op::Op; using Op::print; using Adaptor = CvtScaleF32Pk8Bf8F16OpAdaptor; template using GenericAdaptor = CvtScaleF32Pk8Bf8F16OpGenericAdaptor; using FoldAdaptor = GenericAdaptor<::llvm::ArrayRef<::mlir::Attribute>>; static constexpr int odsIndex_src = 0; static constexpr int odsIndex_scale = 1; using Properties = FoldAdaptor::Properties; static ::llvm::ArrayRef<::llvm::StringRef> getAttributeNames() { return {}; } static constexpr ::llvm::StringLiteral getOperationName() { return ::llvm::StringLiteral("rocdl.cvt.scalef32.pk8.bf8.f16"); } std::pair getODSOperandIndexAndLength(unsigned index) { return {index, 1}; } ::mlir::Operation::operand_range getODSOperands(unsigned index) { auto valueRange = getODSOperandIndexAndLength(index); return {std::next(getOperation()->operand_begin(), valueRange.first), std::next(getOperation()->operand_begin(), valueRange.first + valueRange.second)}; } ::mlir::TypedValue<::mlir::VectorType> getSrc() { return ::llvm::cast<::mlir::TypedValue<::mlir::VectorType>>(*getODSOperands(0).begin()); } ::mlir::TypedValue<::mlir::FloatType> getScale() { return ::llvm::cast<::mlir::TypedValue<::mlir::FloatType>>(*getODSOperands(1).begin()); } ::mlir::OpOperand &getSrcMutable() { auto range = getODSOperandIndexAndLength(0); return getOperation()->getOpOperand(range.first); } ::mlir::OpOperand &getScaleMutable() { auto range = getODSOperandIndexAndLength(1); return getOperation()->getOpOperand(range.first); } std::pair getODSResultIndexAndLength(unsigned index) { return {index, 1}; } ::mlir::Operation::result_range getODSResults(unsigned index) { auto valueRange = getODSResultIndexAndLength(index); return {std::next(getOperation()->result_begin(), valueRange.first), std::next(getOperation()->result_begin(), valueRange.first + valueRange.second)}; } ::mlir::TypedValue<::mlir::VectorType> getRes() { return ::llvm::cast<::mlir::TypedValue<::mlir::VectorType>>(*getODSResults(0).begin()); } static ::llvm::LogicalResult setPropertiesFromAttr(Properties &prop, ::mlir::Attribute attr, ::llvm::function_ref<::mlir::InFlightDiagnostic()> emitError); static ::mlir::Attribute getPropertiesAsAttr(::mlir::MLIRContext *ctx, const Properties &prop); static llvm::hash_code computePropertiesHash(const Properties &prop); static std::optional getInherentAttr(::mlir::MLIRContext *ctx, const Properties &prop, llvm::StringRef name); static void setInherentAttr(Properties &prop, llvm::StringRef name, mlir::Attribute value); static void populateInherentAttrs(::mlir::MLIRContext *ctx, const Properties &prop, ::mlir::NamedAttrList &attrs); static ::llvm::LogicalResult verifyInherentAttrs(::mlir::OperationName opName, ::mlir::NamedAttrList &attrs, llvm::function_ref<::mlir::InFlightDiagnostic()> emitError); static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::Type res, ::mlir::Value src, ::mlir::Value scale); static CvtScaleF32Pk8Bf8F16Op create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::Type res, ::mlir::Value src, ::mlir::Value scale); static CvtScaleF32Pk8Bf8F16Op create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::Type res, ::mlir::Value src, ::mlir::Value scale); static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::Value src, ::mlir::Value scale); static CvtScaleF32Pk8Bf8F16Op create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::Value src, ::mlir::Value scale); static CvtScaleF32Pk8Bf8F16Op create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::Value src, ::mlir::Value scale); static void build(::mlir::OpBuilder &, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, ::llvm::ArrayRef<::mlir::NamedAttribute> attributes = {}); static CvtScaleF32Pk8Bf8F16Op create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, ::llvm::ArrayRef<::mlir::NamedAttribute> attributes = {}); static CvtScaleF32Pk8Bf8F16Op create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, ::llvm::ArrayRef<::mlir::NamedAttribute> attributes = {}); static void build(::mlir::OpBuilder &, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, const Properties &properties, ::llvm::ArrayRef<::mlir::NamedAttribute> discardableAttributes = {}); static CvtScaleF32Pk8Bf8F16Op create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, const Properties &properties, ::llvm::ArrayRef<::mlir::NamedAttribute> discardableAttributes = {}); static CvtScaleF32Pk8Bf8F16Op create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, const Properties &properties, ::llvm::ArrayRef<::mlir::NamedAttribute> discardableAttributes = {}); ::llvm::LogicalResult verifyInvariantsImpl(); ::llvm::LogicalResult verifyInvariants(); static ::mlir::ParseResult parse(::mlir::OpAsmParser &parser, ::mlir::OperationState &result); void print(::mlir::OpAsmPrinter &_odsPrinter); void getEffects(::llvm::SmallVectorImpl<::mlir::SideEffects::EffectInstance<::mlir::MemoryEffects::Effect>> &effects); public: }; } // namespace mlir::ROCDL MLIR_DECLARE_EXPLICIT_TYPE_ID(::mlir::ROCDL::CvtScaleF32Pk8Bf8F16Op) namespace mlir::ROCDL { //===----------------------------------------------------------------------===// // ::mlir::ROCDL::CvtScaleF32Pk8Bf8F32Op declarations //===----------------------------------------------------------------------===// namespace detail { class CvtScaleF32Pk8Bf8F32OpGenericAdaptorBase { public: using Properties = ::mlir::EmptyProperties; protected: ::mlir::DictionaryAttr odsAttrs; ::std::optional<::mlir::OperationName> odsOpName; Properties properties; ::mlir::RegionRange odsRegions; public: CvtScaleF32Pk8Bf8F32OpGenericAdaptorBase(::mlir::DictionaryAttr attrs, const Properties &properties, ::mlir::RegionRange regions = {}) : odsAttrs(attrs), properties(properties), odsRegions(regions) { if (odsAttrs) odsOpName.emplace("rocdl.cvt.scalef32.pk8.bf8.f32", odsAttrs.getContext()); } CvtScaleF32Pk8Bf8F32OpGenericAdaptorBase(CvtScaleF32Pk8Bf8F32Op op); std::pair getODSOperandIndexAndLength(unsigned index, unsigned odsOperandsSize) { return {index, 1}; } const Properties &getProperties() { return properties; } ::mlir::DictionaryAttr getAttributes() { return odsAttrs; } }; } // namespace detail template class CvtScaleF32Pk8Bf8F32OpGenericAdaptor : public detail::CvtScaleF32Pk8Bf8F32OpGenericAdaptorBase { using ValueT = ::llvm::detail::ValueOfRange; using Base = detail::CvtScaleF32Pk8Bf8F32OpGenericAdaptorBase; static constexpr int odsIndex_src = 0; static constexpr int odsIndex_scale = 1; public: CvtScaleF32Pk8Bf8F32OpGenericAdaptor(RangeT values, ::mlir::DictionaryAttr attrs, const Properties &properties, ::mlir::RegionRange regions = {}) : Base(attrs, properties, regions), odsOperands(values) {} CvtScaleF32Pk8Bf8F32OpGenericAdaptor(RangeT values, ::mlir::DictionaryAttr attrs, ::mlir::PropertyRef properties, ::mlir::RegionRange regions = {}) : CvtScaleF32Pk8Bf8F32OpGenericAdaptor(values, attrs, (properties ? *properties.as() : Properties{}), regions) {} CvtScaleF32Pk8Bf8F32OpGenericAdaptor(RangeT values, ::mlir::DictionaryAttr attrs = nullptr) : CvtScaleF32Pk8Bf8F32OpGenericAdaptor(values, attrs, Properties{}, {}) {} CvtScaleF32Pk8Bf8F32OpGenericAdaptor(RangeT values, const CvtScaleF32Pk8Bf8F32OpGenericAdaptorBase &base) : Base(base), odsOperands(values) {} template >> CvtScaleF32Pk8Bf8F32OpGenericAdaptor(RangeT values, LateInst op) : Base(op), odsOperands(values) {} std::pair getODSOperandIndexAndLength(unsigned index) { return Base::getODSOperandIndexAndLength(index, odsOperands.size()); } RangeT getODSOperands(unsigned index) { auto valueRange = getODSOperandIndexAndLength(index); return {std::next(odsOperands.begin(), valueRange.first), std::next(odsOperands.begin(), valueRange.first + valueRange.second)}; } ValueT getSrc() { return (*getODSOperands(0).begin()); } ValueT getScale() { return (*getODSOperands(1).begin()); } RangeT getOperands() { return odsOperands; } private: RangeT odsOperands; }; class CvtScaleF32Pk8Bf8F32OpAdaptor : public CvtScaleF32Pk8Bf8F32OpGenericAdaptor<::mlir::ValueRange> { public: using CvtScaleF32Pk8Bf8F32OpGenericAdaptor::CvtScaleF32Pk8Bf8F32OpGenericAdaptor; CvtScaleF32Pk8Bf8F32OpAdaptor(CvtScaleF32Pk8Bf8F32Op op); ::llvm::LogicalResult verify(::mlir::Location loc); }; class CvtScaleF32Pk8Bf8F32Op : public ::mlir::Op::Impl, ::mlir::OpTrait::ZeroSuccessors, ::mlir::OpTrait::NOperands<2>::Impl, ::mlir::OpTrait::OpInvariants, ::mlir::ConditionallySpeculatable::Trait, ::mlir::OpTrait::AlwaysSpeculatableImplTrait, ::mlir::MemoryEffectOpInterface::Trait> { public: using Op::Op; using Op::print; using Adaptor = CvtScaleF32Pk8Bf8F32OpAdaptor; template using GenericAdaptor = CvtScaleF32Pk8Bf8F32OpGenericAdaptor; using FoldAdaptor = GenericAdaptor<::llvm::ArrayRef<::mlir::Attribute>>; static constexpr int odsIndex_src = 0; static constexpr int odsIndex_scale = 1; using Properties = FoldAdaptor::Properties; static ::llvm::ArrayRef<::llvm::StringRef> getAttributeNames() { return {}; } static constexpr ::llvm::StringLiteral getOperationName() { return ::llvm::StringLiteral("rocdl.cvt.scalef32.pk8.bf8.f32"); } std::pair getODSOperandIndexAndLength(unsigned index) { return {index, 1}; } ::mlir::Operation::operand_range getODSOperands(unsigned index) { auto valueRange = getODSOperandIndexAndLength(index); return {std::next(getOperation()->operand_begin(), valueRange.first), std::next(getOperation()->operand_begin(), valueRange.first + valueRange.second)}; } ::mlir::TypedValue<::mlir::VectorType> getSrc() { return ::llvm::cast<::mlir::TypedValue<::mlir::VectorType>>(*getODSOperands(0).begin()); } ::mlir::TypedValue<::mlir::FloatType> getScale() { return ::llvm::cast<::mlir::TypedValue<::mlir::FloatType>>(*getODSOperands(1).begin()); } ::mlir::OpOperand &getSrcMutable() { auto range = getODSOperandIndexAndLength(0); return getOperation()->getOpOperand(range.first); } ::mlir::OpOperand &getScaleMutable() { auto range = getODSOperandIndexAndLength(1); return getOperation()->getOpOperand(range.first); } std::pair getODSResultIndexAndLength(unsigned index) { return {index, 1}; } ::mlir::Operation::result_range getODSResults(unsigned index) { auto valueRange = getODSResultIndexAndLength(index); return {std::next(getOperation()->result_begin(), valueRange.first), std::next(getOperation()->result_begin(), valueRange.first + valueRange.second)}; } ::mlir::TypedValue<::mlir::VectorType> getRes() { return ::llvm::cast<::mlir::TypedValue<::mlir::VectorType>>(*getODSResults(0).begin()); } static ::llvm::LogicalResult setPropertiesFromAttr(Properties &prop, ::mlir::Attribute attr, ::llvm::function_ref<::mlir::InFlightDiagnostic()> emitError); static ::mlir::Attribute getPropertiesAsAttr(::mlir::MLIRContext *ctx, const Properties &prop); static llvm::hash_code computePropertiesHash(const Properties &prop); static std::optional getInherentAttr(::mlir::MLIRContext *ctx, const Properties &prop, llvm::StringRef name); static void setInherentAttr(Properties &prop, llvm::StringRef name, mlir::Attribute value); static void populateInherentAttrs(::mlir::MLIRContext *ctx, const Properties &prop, ::mlir::NamedAttrList &attrs); static ::llvm::LogicalResult verifyInherentAttrs(::mlir::OperationName opName, ::mlir::NamedAttrList &attrs, llvm::function_ref<::mlir::InFlightDiagnostic()> emitError); static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::Type res, ::mlir::Value src, ::mlir::Value scale); static CvtScaleF32Pk8Bf8F32Op create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::Type res, ::mlir::Value src, ::mlir::Value scale); static CvtScaleF32Pk8Bf8F32Op create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::Type res, ::mlir::Value src, ::mlir::Value scale); static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::Value src, ::mlir::Value scale); static CvtScaleF32Pk8Bf8F32Op create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::Value src, ::mlir::Value scale); static CvtScaleF32Pk8Bf8F32Op create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::Value src, ::mlir::Value scale); static void build(::mlir::OpBuilder &, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, ::llvm::ArrayRef<::mlir::NamedAttribute> attributes = {}); static CvtScaleF32Pk8Bf8F32Op create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, ::llvm::ArrayRef<::mlir::NamedAttribute> attributes = {}); static CvtScaleF32Pk8Bf8F32Op create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, ::llvm::ArrayRef<::mlir::NamedAttribute> attributes = {}); static void build(::mlir::OpBuilder &, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, const Properties &properties, ::llvm::ArrayRef<::mlir::NamedAttribute> discardableAttributes = {}); static CvtScaleF32Pk8Bf8F32Op create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, const Properties &properties, ::llvm::ArrayRef<::mlir::NamedAttribute> discardableAttributes = {}); static CvtScaleF32Pk8Bf8F32Op create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, const Properties &properties, ::llvm::ArrayRef<::mlir::NamedAttribute> discardableAttributes = {}); ::llvm::LogicalResult verifyInvariantsImpl(); ::llvm::LogicalResult verifyInvariants(); static ::mlir::ParseResult parse(::mlir::OpAsmParser &parser, ::mlir::OperationState &result); void print(::mlir::OpAsmPrinter &_odsPrinter); void getEffects(::llvm::SmallVectorImpl<::mlir::SideEffects::EffectInstance<::mlir::MemoryEffects::Effect>> &effects); public: }; } // namespace mlir::ROCDL MLIR_DECLARE_EXPLICIT_TYPE_ID(::mlir::ROCDL::CvtScaleF32Pk8Bf8F32Op) namespace mlir::ROCDL { //===----------------------------------------------------------------------===// // ::mlir::ROCDL::CvtScaleF32Pk8Fp4Bf16Op declarations //===----------------------------------------------------------------------===// namespace detail { class CvtScaleF32Pk8Fp4Bf16OpGenericAdaptorBase { public: using Properties = ::mlir::EmptyProperties; protected: ::mlir::DictionaryAttr odsAttrs; ::std::optional<::mlir::OperationName> odsOpName; Properties properties; ::mlir::RegionRange odsRegions; public: CvtScaleF32Pk8Fp4Bf16OpGenericAdaptorBase(::mlir::DictionaryAttr attrs, const Properties &properties, ::mlir::RegionRange regions = {}) : odsAttrs(attrs), properties(properties), odsRegions(regions) { if (odsAttrs) odsOpName.emplace("rocdl.cvt.scalef32.pk8.fp4.bf16", odsAttrs.getContext()); } CvtScaleF32Pk8Fp4Bf16OpGenericAdaptorBase(CvtScaleF32Pk8Fp4Bf16Op op); std::pair getODSOperandIndexAndLength(unsigned index, unsigned odsOperandsSize) { return {index, 1}; } const Properties &getProperties() { return properties; } ::mlir::DictionaryAttr getAttributes() { return odsAttrs; } }; } // namespace detail template class CvtScaleF32Pk8Fp4Bf16OpGenericAdaptor : public detail::CvtScaleF32Pk8Fp4Bf16OpGenericAdaptorBase { using ValueT = ::llvm::detail::ValueOfRange; using Base = detail::CvtScaleF32Pk8Fp4Bf16OpGenericAdaptorBase; static constexpr int odsIndex_src = 0; static constexpr int odsIndex_scale = 1; public: CvtScaleF32Pk8Fp4Bf16OpGenericAdaptor(RangeT values, ::mlir::DictionaryAttr attrs, const Properties &properties, ::mlir::RegionRange regions = {}) : Base(attrs, properties, regions), odsOperands(values) {} CvtScaleF32Pk8Fp4Bf16OpGenericAdaptor(RangeT values, ::mlir::DictionaryAttr attrs, ::mlir::PropertyRef properties, ::mlir::RegionRange regions = {}) : CvtScaleF32Pk8Fp4Bf16OpGenericAdaptor(values, attrs, (properties ? *properties.as() : Properties{}), regions) {} CvtScaleF32Pk8Fp4Bf16OpGenericAdaptor(RangeT values, ::mlir::DictionaryAttr attrs = nullptr) : CvtScaleF32Pk8Fp4Bf16OpGenericAdaptor(values, attrs, Properties{}, {}) {} CvtScaleF32Pk8Fp4Bf16OpGenericAdaptor(RangeT values, const CvtScaleF32Pk8Fp4Bf16OpGenericAdaptorBase &base) : Base(base), odsOperands(values) {} template >> CvtScaleF32Pk8Fp4Bf16OpGenericAdaptor(RangeT values, LateInst op) : Base(op), odsOperands(values) {} std::pair getODSOperandIndexAndLength(unsigned index) { return Base::getODSOperandIndexAndLength(index, odsOperands.size()); } RangeT getODSOperands(unsigned index) { auto valueRange = getODSOperandIndexAndLength(index); return {std::next(odsOperands.begin(), valueRange.first), std::next(odsOperands.begin(), valueRange.first + valueRange.second)}; } ValueT getSrc() { return (*getODSOperands(0).begin()); } ValueT getScale() { return (*getODSOperands(1).begin()); } RangeT getOperands() { return odsOperands; } private: RangeT odsOperands; }; class CvtScaleF32Pk8Fp4Bf16OpAdaptor : public CvtScaleF32Pk8Fp4Bf16OpGenericAdaptor<::mlir::ValueRange> { public: using CvtScaleF32Pk8Fp4Bf16OpGenericAdaptor::CvtScaleF32Pk8Fp4Bf16OpGenericAdaptor; CvtScaleF32Pk8Fp4Bf16OpAdaptor(CvtScaleF32Pk8Fp4Bf16Op op); ::llvm::LogicalResult verify(::mlir::Location loc); }; class CvtScaleF32Pk8Fp4Bf16Op : public ::mlir::Op::Impl, ::mlir::OpTrait::ZeroSuccessors, ::mlir::OpTrait::NOperands<2>::Impl, ::mlir::OpTrait::OpInvariants, ::mlir::ConditionallySpeculatable::Trait, ::mlir::OpTrait::AlwaysSpeculatableImplTrait, ::mlir::MemoryEffectOpInterface::Trait> { public: using Op::Op; using Op::print; using Adaptor = CvtScaleF32Pk8Fp4Bf16OpAdaptor; template using GenericAdaptor = CvtScaleF32Pk8Fp4Bf16OpGenericAdaptor; using FoldAdaptor = GenericAdaptor<::llvm::ArrayRef<::mlir::Attribute>>; static constexpr int odsIndex_src = 0; static constexpr int odsIndex_scale = 1; using Properties = FoldAdaptor::Properties; static ::llvm::ArrayRef<::llvm::StringRef> getAttributeNames() { return {}; } static constexpr ::llvm::StringLiteral getOperationName() { return ::llvm::StringLiteral("rocdl.cvt.scalef32.pk8.fp4.bf16"); } std::pair getODSOperandIndexAndLength(unsigned index) { return {index, 1}; } ::mlir::Operation::operand_range getODSOperands(unsigned index) { auto valueRange = getODSOperandIndexAndLength(index); return {std::next(getOperation()->operand_begin(), valueRange.first), std::next(getOperation()->operand_begin(), valueRange.first + valueRange.second)}; } ::mlir::TypedValue<::mlir::VectorType> getSrc() { return ::llvm::cast<::mlir::TypedValue<::mlir::VectorType>>(*getODSOperands(0).begin()); } ::mlir::TypedValue<::mlir::FloatType> getScale() { return ::llvm::cast<::mlir::TypedValue<::mlir::FloatType>>(*getODSOperands(1).begin()); } ::mlir::OpOperand &getSrcMutable() { auto range = getODSOperandIndexAndLength(0); return getOperation()->getOpOperand(range.first); } ::mlir::OpOperand &getScaleMutable() { auto range = getODSOperandIndexAndLength(1); return getOperation()->getOpOperand(range.first); } std::pair getODSResultIndexAndLength(unsigned index) { return {index, 1}; } ::mlir::Operation::result_range getODSResults(unsigned index) { auto valueRange = getODSResultIndexAndLength(index); return {std::next(getOperation()->result_begin(), valueRange.first), std::next(getOperation()->result_begin(), valueRange.first + valueRange.second)}; } ::mlir::TypedValue<::mlir::IntegerType> getRes() { return ::llvm::cast<::mlir::TypedValue<::mlir::IntegerType>>(*getODSResults(0).begin()); } static ::llvm::LogicalResult setPropertiesFromAttr(Properties &prop, ::mlir::Attribute attr, ::llvm::function_ref<::mlir::InFlightDiagnostic()> emitError); static ::mlir::Attribute getPropertiesAsAttr(::mlir::MLIRContext *ctx, const Properties &prop); static llvm::hash_code computePropertiesHash(const Properties &prop); static std::optional getInherentAttr(::mlir::MLIRContext *ctx, const Properties &prop, llvm::StringRef name); static void setInherentAttr(Properties &prop, llvm::StringRef name, mlir::Attribute value); static void populateInherentAttrs(::mlir::MLIRContext *ctx, const Properties &prop, ::mlir::NamedAttrList &attrs); static ::llvm::LogicalResult verifyInherentAttrs(::mlir::OperationName opName, ::mlir::NamedAttrList &attrs, llvm::function_ref<::mlir::InFlightDiagnostic()> emitError); static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::Type res, ::mlir::Value src, ::mlir::Value scale); static CvtScaleF32Pk8Fp4Bf16Op create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::Type res, ::mlir::Value src, ::mlir::Value scale); static CvtScaleF32Pk8Fp4Bf16Op create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::Type res, ::mlir::Value src, ::mlir::Value scale); static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::Value src, ::mlir::Value scale); static CvtScaleF32Pk8Fp4Bf16Op create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::Value src, ::mlir::Value scale); static CvtScaleF32Pk8Fp4Bf16Op create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::Value src, ::mlir::Value scale); static void build(::mlir::OpBuilder &, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, ::llvm::ArrayRef<::mlir::NamedAttribute> attributes = {}); static CvtScaleF32Pk8Fp4Bf16Op create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, ::llvm::ArrayRef<::mlir::NamedAttribute> attributes = {}); static CvtScaleF32Pk8Fp4Bf16Op create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, ::llvm::ArrayRef<::mlir::NamedAttribute> attributes = {}); static void build(::mlir::OpBuilder &, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, const Properties &properties, ::llvm::ArrayRef<::mlir::NamedAttribute> discardableAttributes = {}); static CvtScaleF32Pk8Fp4Bf16Op create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, const Properties &properties, ::llvm::ArrayRef<::mlir::NamedAttribute> discardableAttributes = {}); static CvtScaleF32Pk8Fp4Bf16Op create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, const Properties &properties, ::llvm::ArrayRef<::mlir::NamedAttribute> discardableAttributes = {}); ::llvm::LogicalResult verifyInvariantsImpl(); ::llvm::LogicalResult verifyInvariants(); static ::mlir::ParseResult parse(::mlir::OpAsmParser &parser, ::mlir::OperationState &result); void print(::mlir::OpAsmPrinter &_odsPrinter); void getEffects(::llvm::SmallVectorImpl<::mlir::SideEffects::EffectInstance<::mlir::MemoryEffects::Effect>> &effects); public: }; } // namespace mlir::ROCDL MLIR_DECLARE_EXPLICIT_TYPE_ID(::mlir::ROCDL::CvtScaleF32Pk8Fp4Bf16Op) namespace mlir::ROCDL { //===----------------------------------------------------------------------===// // ::mlir::ROCDL::CvtScaleF32Pk8Fp4F16Op declarations //===----------------------------------------------------------------------===// namespace detail { class CvtScaleF32Pk8Fp4F16OpGenericAdaptorBase { public: using Properties = ::mlir::EmptyProperties; protected: ::mlir::DictionaryAttr odsAttrs; ::std::optional<::mlir::OperationName> odsOpName; Properties properties; ::mlir::RegionRange odsRegions; public: CvtScaleF32Pk8Fp4F16OpGenericAdaptorBase(::mlir::DictionaryAttr attrs, const Properties &properties, ::mlir::RegionRange regions = {}) : odsAttrs(attrs), properties(properties), odsRegions(regions) { if (odsAttrs) odsOpName.emplace("rocdl.cvt.scalef32.pk8.fp4.f16", odsAttrs.getContext()); } CvtScaleF32Pk8Fp4F16OpGenericAdaptorBase(CvtScaleF32Pk8Fp4F16Op op); std::pair getODSOperandIndexAndLength(unsigned index, unsigned odsOperandsSize) { return {index, 1}; } const Properties &getProperties() { return properties; } ::mlir::DictionaryAttr getAttributes() { return odsAttrs; } }; } // namespace detail template class CvtScaleF32Pk8Fp4F16OpGenericAdaptor : public detail::CvtScaleF32Pk8Fp4F16OpGenericAdaptorBase { using ValueT = ::llvm::detail::ValueOfRange; using Base = detail::CvtScaleF32Pk8Fp4F16OpGenericAdaptorBase; static constexpr int odsIndex_src = 0; static constexpr int odsIndex_scale = 1; public: CvtScaleF32Pk8Fp4F16OpGenericAdaptor(RangeT values, ::mlir::DictionaryAttr attrs, const Properties &properties, ::mlir::RegionRange regions = {}) : Base(attrs, properties, regions), odsOperands(values) {} CvtScaleF32Pk8Fp4F16OpGenericAdaptor(RangeT values, ::mlir::DictionaryAttr attrs, ::mlir::PropertyRef properties, ::mlir::RegionRange regions = {}) : CvtScaleF32Pk8Fp4F16OpGenericAdaptor(values, attrs, (properties ? *properties.as() : Properties{}), regions) {} CvtScaleF32Pk8Fp4F16OpGenericAdaptor(RangeT values, ::mlir::DictionaryAttr attrs = nullptr) : CvtScaleF32Pk8Fp4F16OpGenericAdaptor(values, attrs, Properties{}, {}) {} CvtScaleF32Pk8Fp4F16OpGenericAdaptor(RangeT values, const CvtScaleF32Pk8Fp4F16OpGenericAdaptorBase &base) : Base(base), odsOperands(values) {} template >> CvtScaleF32Pk8Fp4F16OpGenericAdaptor(RangeT values, LateInst op) : Base(op), odsOperands(values) {} std::pair getODSOperandIndexAndLength(unsigned index) { return Base::getODSOperandIndexAndLength(index, odsOperands.size()); } RangeT getODSOperands(unsigned index) { auto valueRange = getODSOperandIndexAndLength(index); return {std::next(odsOperands.begin(), valueRange.first), std::next(odsOperands.begin(), valueRange.first + valueRange.second)}; } ValueT getSrc() { return (*getODSOperands(0).begin()); } ValueT getScale() { return (*getODSOperands(1).begin()); } RangeT getOperands() { return odsOperands; } private: RangeT odsOperands; }; class CvtScaleF32Pk8Fp4F16OpAdaptor : public CvtScaleF32Pk8Fp4F16OpGenericAdaptor<::mlir::ValueRange> { public: using CvtScaleF32Pk8Fp4F16OpGenericAdaptor::CvtScaleF32Pk8Fp4F16OpGenericAdaptor; CvtScaleF32Pk8Fp4F16OpAdaptor(CvtScaleF32Pk8Fp4F16Op op); ::llvm::LogicalResult verify(::mlir::Location loc); }; class CvtScaleF32Pk8Fp4F16Op : public ::mlir::Op::Impl, ::mlir::OpTrait::ZeroSuccessors, ::mlir::OpTrait::NOperands<2>::Impl, ::mlir::OpTrait::OpInvariants, ::mlir::ConditionallySpeculatable::Trait, ::mlir::OpTrait::AlwaysSpeculatableImplTrait, ::mlir::MemoryEffectOpInterface::Trait> { public: using Op::Op; using Op::print; using Adaptor = CvtScaleF32Pk8Fp4F16OpAdaptor; template using GenericAdaptor = CvtScaleF32Pk8Fp4F16OpGenericAdaptor; using FoldAdaptor = GenericAdaptor<::llvm::ArrayRef<::mlir::Attribute>>; static constexpr int odsIndex_src = 0; static constexpr int odsIndex_scale = 1; using Properties = FoldAdaptor::Properties; static ::llvm::ArrayRef<::llvm::StringRef> getAttributeNames() { return {}; } static constexpr ::llvm::StringLiteral getOperationName() { return ::llvm::StringLiteral("rocdl.cvt.scalef32.pk8.fp4.f16"); } std::pair getODSOperandIndexAndLength(unsigned index) { return {index, 1}; } ::mlir::Operation::operand_range getODSOperands(unsigned index) { auto valueRange = getODSOperandIndexAndLength(index); return {std::next(getOperation()->operand_begin(), valueRange.first), std::next(getOperation()->operand_begin(), valueRange.first + valueRange.second)}; } ::mlir::TypedValue<::mlir::VectorType> getSrc() { return ::llvm::cast<::mlir::TypedValue<::mlir::VectorType>>(*getODSOperands(0).begin()); } ::mlir::TypedValue<::mlir::FloatType> getScale() { return ::llvm::cast<::mlir::TypedValue<::mlir::FloatType>>(*getODSOperands(1).begin()); } ::mlir::OpOperand &getSrcMutable() { auto range = getODSOperandIndexAndLength(0); return getOperation()->getOpOperand(range.first); } ::mlir::OpOperand &getScaleMutable() { auto range = getODSOperandIndexAndLength(1); return getOperation()->getOpOperand(range.first); } std::pair getODSResultIndexAndLength(unsigned index) { return {index, 1}; } ::mlir::Operation::result_range getODSResults(unsigned index) { auto valueRange = getODSResultIndexAndLength(index); return {std::next(getOperation()->result_begin(), valueRange.first), std::next(getOperation()->result_begin(), valueRange.first + valueRange.second)}; } ::mlir::TypedValue<::mlir::IntegerType> getRes() { return ::llvm::cast<::mlir::TypedValue<::mlir::IntegerType>>(*getODSResults(0).begin()); } static ::llvm::LogicalResult setPropertiesFromAttr(Properties &prop, ::mlir::Attribute attr, ::llvm::function_ref<::mlir::InFlightDiagnostic()> emitError); static ::mlir::Attribute getPropertiesAsAttr(::mlir::MLIRContext *ctx, const Properties &prop); static llvm::hash_code computePropertiesHash(const Properties &prop); static std::optional getInherentAttr(::mlir::MLIRContext *ctx, const Properties &prop, llvm::StringRef name); static void setInherentAttr(Properties &prop, llvm::StringRef name, mlir::Attribute value); static void populateInherentAttrs(::mlir::MLIRContext *ctx, const Properties &prop, ::mlir::NamedAttrList &attrs); static ::llvm::LogicalResult verifyInherentAttrs(::mlir::OperationName opName, ::mlir::NamedAttrList &attrs, llvm::function_ref<::mlir::InFlightDiagnostic()> emitError); static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::Type res, ::mlir::Value src, ::mlir::Value scale); static CvtScaleF32Pk8Fp4F16Op create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::Type res, ::mlir::Value src, ::mlir::Value scale); static CvtScaleF32Pk8Fp4F16Op create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::Type res, ::mlir::Value src, ::mlir::Value scale); static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::Value src, ::mlir::Value scale); static CvtScaleF32Pk8Fp4F16Op create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::Value src, ::mlir::Value scale); static CvtScaleF32Pk8Fp4F16Op create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::Value src, ::mlir::Value scale); static void build(::mlir::OpBuilder &, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, ::llvm::ArrayRef<::mlir::NamedAttribute> attributes = {}); static CvtScaleF32Pk8Fp4F16Op create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, ::llvm::ArrayRef<::mlir::NamedAttribute> attributes = {}); static CvtScaleF32Pk8Fp4F16Op create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, ::llvm::ArrayRef<::mlir::NamedAttribute> attributes = {}); static void build(::mlir::OpBuilder &, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, const Properties &properties, ::llvm::ArrayRef<::mlir::NamedAttribute> discardableAttributes = {}); static CvtScaleF32Pk8Fp4F16Op create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, const Properties &properties, ::llvm::ArrayRef<::mlir::NamedAttribute> discardableAttributes = {}); static CvtScaleF32Pk8Fp4F16Op create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, const Properties &properties, ::llvm::ArrayRef<::mlir::NamedAttribute> discardableAttributes = {}); ::llvm::LogicalResult verifyInvariantsImpl(); ::llvm::LogicalResult verifyInvariants(); static ::mlir::ParseResult parse(::mlir::OpAsmParser &parser, ::mlir::OperationState &result); void print(::mlir::OpAsmPrinter &_odsPrinter); void getEffects(::llvm::SmallVectorImpl<::mlir::SideEffects::EffectInstance<::mlir::MemoryEffects::Effect>> &effects); public: }; } // namespace mlir::ROCDL MLIR_DECLARE_EXPLICIT_TYPE_ID(::mlir::ROCDL::CvtScaleF32Pk8Fp4F16Op) namespace mlir::ROCDL { //===----------------------------------------------------------------------===// // ::mlir::ROCDL::CvtScaleF32Pk8Fp4F32Op declarations //===----------------------------------------------------------------------===// namespace detail { class CvtScaleF32Pk8Fp4F32OpGenericAdaptorBase { public: using Properties = ::mlir::EmptyProperties; protected: ::mlir::DictionaryAttr odsAttrs; ::std::optional<::mlir::OperationName> odsOpName; Properties properties; ::mlir::RegionRange odsRegions; public: CvtScaleF32Pk8Fp4F32OpGenericAdaptorBase(::mlir::DictionaryAttr attrs, const Properties &properties, ::mlir::RegionRange regions = {}) : odsAttrs(attrs), properties(properties), odsRegions(regions) { if (odsAttrs) odsOpName.emplace("rocdl.cvt.scalef32.pk8.fp4.f32", odsAttrs.getContext()); } CvtScaleF32Pk8Fp4F32OpGenericAdaptorBase(CvtScaleF32Pk8Fp4F32Op op); std::pair getODSOperandIndexAndLength(unsigned index, unsigned odsOperandsSize) { return {index, 1}; } const Properties &getProperties() { return properties; } ::mlir::DictionaryAttr getAttributes() { return odsAttrs; } }; } // namespace detail template class CvtScaleF32Pk8Fp4F32OpGenericAdaptor : public detail::CvtScaleF32Pk8Fp4F32OpGenericAdaptorBase { using ValueT = ::llvm::detail::ValueOfRange; using Base = detail::CvtScaleF32Pk8Fp4F32OpGenericAdaptorBase; static constexpr int odsIndex_src = 0; static constexpr int odsIndex_scale = 1; public: CvtScaleF32Pk8Fp4F32OpGenericAdaptor(RangeT values, ::mlir::DictionaryAttr attrs, const Properties &properties, ::mlir::RegionRange regions = {}) : Base(attrs, properties, regions), odsOperands(values) {} CvtScaleF32Pk8Fp4F32OpGenericAdaptor(RangeT values, ::mlir::DictionaryAttr attrs, ::mlir::PropertyRef properties, ::mlir::RegionRange regions = {}) : CvtScaleF32Pk8Fp4F32OpGenericAdaptor(values, attrs, (properties ? *properties.as() : Properties{}), regions) {} CvtScaleF32Pk8Fp4F32OpGenericAdaptor(RangeT values, ::mlir::DictionaryAttr attrs = nullptr) : CvtScaleF32Pk8Fp4F32OpGenericAdaptor(values, attrs, Properties{}, {}) {} CvtScaleF32Pk8Fp4F32OpGenericAdaptor(RangeT values, const CvtScaleF32Pk8Fp4F32OpGenericAdaptorBase &base) : Base(base), odsOperands(values) {} template >> CvtScaleF32Pk8Fp4F32OpGenericAdaptor(RangeT values, LateInst op) : Base(op), odsOperands(values) {} std::pair getODSOperandIndexAndLength(unsigned index) { return Base::getODSOperandIndexAndLength(index, odsOperands.size()); } RangeT getODSOperands(unsigned index) { auto valueRange = getODSOperandIndexAndLength(index); return {std::next(odsOperands.begin(), valueRange.first), std::next(odsOperands.begin(), valueRange.first + valueRange.second)}; } ValueT getSrc() { return (*getODSOperands(0).begin()); } ValueT getScale() { return (*getODSOperands(1).begin()); } RangeT getOperands() { return odsOperands; } private: RangeT odsOperands; }; class CvtScaleF32Pk8Fp4F32OpAdaptor : public CvtScaleF32Pk8Fp4F32OpGenericAdaptor<::mlir::ValueRange> { public: using CvtScaleF32Pk8Fp4F32OpGenericAdaptor::CvtScaleF32Pk8Fp4F32OpGenericAdaptor; CvtScaleF32Pk8Fp4F32OpAdaptor(CvtScaleF32Pk8Fp4F32Op op); ::llvm::LogicalResult verify(::mlir::Location loc); }; class CvtScaleF32Pk8Fp4F32Op : public ::mlir::Op::Impl, ::mlir::OpTrait::ZeroSuccessors, ::mlir::OpTrait::NOperands<2>::Impl, ::mlir::OpTrait::OpInvariants, ::mlir::ConditionallySpeculatable::Trait, ::mlir::OpTrait::AlwaysSpeculatableImplTrait, ::mlir::MemoryEffectOpInterface::Trait> { public: using Op::Op; using Op::print; using Adaptor = CvtScaleF32Pk8Fp4F32OpAdaptor; template using GenericAdaptor = CvtScaleF32Pk8Fp4F32OpGenericAdaptor; using FoldAdaptor = GenericAdaptor<::llvm::ArrayRef<::mlir::Attribute>>; static constexpr int odsIndex_src = 0; static constexpr int odsIndex_scale = 1; using Properties = FoldAdaptor::Properties; static ::llvm::ArrayRef<::llvm::StringRef> getAttributeNames() { return {}; } static constexpr ::llvm::StringLiteral getOperationName() { return ::llvm::StringLiteral("rocdl.cvt.scalef32.pk8.fp4.f32"); } std::pair getODSOperandIndexAndLength(unsigned index) { return {index, 1}; } ::mlir::Operation::operand_range getODSOperands(unsigned index) { auto valueRange = getODSOperandIndexAndLength(index); return {std::next(getOperation()->operand_begin(), valueRange.first), std::next(getOperation()->operand_begin(), valueRange.first + valueRange.second)}; } ::mlir::TypedValue<::mlir::VectorType> getSrc() { return ::llvm::cast<::mlir::TypedValue<::mlir::VectorType>>(*getODSOperands(0).begin()); } ::mlir::TypedValue<::mlir::FloatType> getScale() { return ::llvm::cast<::mlir::TypedValue<::mlir::FloatType>>(*getODSOperands(1).begin()); } ::mlir::OpOperand &getSrcMutable() { auto range = getODSOperandIndexAndLength(0); return getOperation()->getOpOperand(range.first); } ::mlir::OpOperand &getScaleMutable() { auto range = getODSOperandIndexAndLength(1); return getOperation()->getOpOperand(range.first); } std::pair getODSResultIndexAndLength(unsigned index) { return {index, 1}; } ::mlir::Operation::result_range getODSResults(unsigned index) { auto valueRange = getODSResultIndexAndLength(index); return {std::next(getOperation()->result_begin(), valueRange.first), std::next(getOperation()->result_begin(), valueRange.first + valueRange.second)}; } ::mlir::TypedValue<::mlir::IntegerType> getRes() { return ::llvm::cast<::mlir::TypedValue<::mlir::IntegerType>>(*getODSResults(0).begin()); } static ::llvm::LogicalResult setPropertiesFromAttr(Properties &prop, ::mlir::Attribute attr, ::llvm::function_ref<::mlir::InFlightDiagnostic()> emitError); static ::mlir::Attribute getPropertiesAsAttr(::mlir::MLIRContext *ctx, const Properties &prop); static llvm::hash_code computePropertiesHash(const Properties &prop); static std::optional getInherentAttr(::mlir::MLIRContext *ctx, const Properties &prop, llvm::StringRef name); static void setInherentAttr(Properties &prop, llvm::StringRef name, mlir::Attribute value); static void populateInherentAttrs(::mlir::MLIRContext *ctx, const Properties &prop, ::mlir::NamedAttrList &attrs); static ::llvm::LogicalResult verifyInherentAttrs(::mlir::OperationName opName, ::mlir::NamedAttrList &attrs, llvm::function_ref<::mlir::InFlightDiagnostic()> emitError); static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::Type res, ::mlir::Value src, ::mlir::Value scale); static CvtScaleF32Pk8Fp4F32Op create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::Type res, ::mlir::Value src, ::mlir::Value scale); static CvtScaleF32Pk8Fp4F32Op create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::Type res, ::mlir::Value src, ::mlir::Value scale); static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::Value src, ::mlir::Value scale); static CvtScaleF32Pk8Fp4F32Op create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::Value src, ::mlir::Value scale); static CvtScaleF32Pk8Fp4F32Op create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::Value src, ::mlir::Value scale); static void build(::mlir::OpBuilder &, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, ::llvm::ArrayRef<::mlir::NamedAttribute> attributes = {}); static CvtScaleF32Pk8Fp4F32Op create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, ::llvm::ArrayRef<::mlir::NamedAttribute> attributes = {}); static CvtScaleF32Pk8Fp4F32Op create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, ::llvm::ArrayRef<::mlir::NamedAttribute> attributes = {}); static void build(::mlir::OpBuilder &, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, const Properties &properties, ::llvm::ArrayRef<::mlir::NamedAttribute> discardableAttributes = {}); static CvtScaleF32Pk8Fp4F32Op create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, const Properties &properties, ::llvm::ArrayRef<::mlir::NamedAttribute> discardableAttributes = {}); static CvtScaleF32Pk8Fp4F32Op create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, const Properties &properties, ::llvm::ArrayRef<::mlir::NamedAttribute> discardableAttributes = {}); ::llvm::LogicalResult verifyInvariantsImpl(); ::llvm::LogicalResult verifyInvariants(); static ::mlir::ParseResult parse(::mlir::OpAsmParser &parser, ::mlir::OperationState &result); void print(::mlir::OpAsmPrinter &_odsPrinter); void getEffects(::llvm::SmallVectorImpl<::mlir::SideEffects::EffectInstance<::mlir::MemoryEffects::Effect>> &effects); public: }; } // namespace mlir::ROCDL MLIR_DECLARE_EXPLICIT_TYPE_ID(::mlir::ROCDL::CvtScaleF32Pk8Fp4F32Op) namespace mlir::ROCDL { //===----------------------------------------------------------------------===// // ::mlir::ROCDL::CvtScaleF32Pk8Fp8Bf16Op declarations //===----------------------------------------------------------------------===// namespace detail { class CvtScaleF32Pk8Fp8Bf16OpGenericAdaptorBase { public: using Properties = ::mlir::EmptyProperties; protected: ::mlir::DictionaryAttr odsAttrs; ::std::optional<::mlir::OperationName> odsOpName; Properties properties; ::mlir::RegionRange odsRegions; public: CvtScaleF32Pk8Fp8Bf16OpGenericAdaptorBase(::mlir::DictionaryAttr attrs, const Properties &properties, ::mlir::RegionRange regions = {}) : odsAttrs(attrs), properties(properties), odsRegions(regions) { if (odsAttrs) odsOpName.emplace("rocdl.cvt.scalef32.pk8.fp8.bf16", odsAttrs.getContext()); } CvtScaleF32Pk8Fp8Bf16OpGenericAdaptorBase(CvtScaleF32Pk8Fp8Bf16Op op); std::pair getODSOperandIndexAndLength(unsigned index, unsigned odsOperandsSize) { return {index, 1}; } const Properties &getProperties() { return properties; } ::mlir::DictionaryAttr getAttributes() { return odsAttrs; } }; } // namespace detail template class CvtScaleF32Pk8Fp8Bf16OpGenericAdaptor : public detail::CvtScaleF32Pk8Fp8Bf16OpGenericAdaptorBase { using ValueT = ::llvm::detail::ValueOfRange; using Base = detail::CvtScaleF32Pk8Fp8Bf16OpGenericAdaptorBase; static constexpr int odsIndex_src = 0; static constexpr int odsIndex_scale = 1; public: CvtScaleF32Pk8Fp8Bf16OpGenericAdaptor(RangeT values, ::mlir::DictionaryAttr attrs, const Properties &properties, ::mlir::RegionRange regions = {}) : Base(attrs, properties, regions), odsOperands(values) {} CvtScaleF32Pk8Fp8Bf16OpGenericAdaptor(RangeT values, ::mlir::DictionaryAttr attrs, ::mlir::PropertyRef properties, ::mlir::RegionRange regions = {}) : CvtScaleF32Pk8Fp8Bf16OpGenericAdaptor(values, attrs, (properties ? *properties.as() : Properties{}), regions) {} CvtScaleF32Pk8Fp8Bf16OpGenericAdaptor(RangeT values, ::mlir::DictionaryAttr attrs = nullptr) : CvtScaleF32Pk8Fp8Bf16OpGenericAdaptor(values, attrs, Properties{}, {}) {} CvtScaleF32Pk8Fp8Bf16OpGenericAdaptor(RangeT values, const CvtScaleF32Pk8Fp8Bf16OpGenericAdaptorBase &base) : Base(base), odsOperands(values) {} template >> CvtScaleF32Pk8Fp8Bf16OpGenericAdaptor(RangeT values, LateInst op) : Base(op), odsOperands(values) {} std::pair getODSOperandIndexAndLength(unsigned index) { return Base::getODSOperandIndexAndLength(index, odsOperands.size()); } RangeT getODSOperands(unsigned index) { auto valueRange = getODSOperandIndexAndLength(index); return {std::next(odsOperands.begin(), valueRange.first), std::next(odsOperands.begin(), valueRange.first + valueRange.second)}; } ValueT getSrc() { return (*getODSOperands(0).begin()); } ValueT getScale() { return (*getODSOperands(1).begin()); } RangeT getOperands() { return odsOperands; } private: RangeT odsOperands; }; class CvtScaleF32Pk8Fp8Bf16OpAdaptor : public CvtScaleF32Pk8Fp8Bf16OpGenericAdaptor<::mlir::ValueRange> { public: using CvtScaleF32Pk8Fp8Bf16OpGenericAdaptor::CvtScaleF32Pk8Fp8Bf16OpGenericAdaptor; CvtScaleF32Pk8Fp8Bf16OpAdaptor(CvtScaleF32Pk8Fp8Bf16Op op); ::llvm::LogicalResult verify(::mlir::Location loc); }; class CvtScaleF32Pk8Fp8Bf16Op : public ::mlir::Op::Impl, ::mlir::OpTrait::ZeroSuccessors, ::mlir::OpTrait::NOperands<2>::Impl, ::mlir::OpTrait::OpInvariants, ::mlir::ConditionallySpeculatable::Trait, ::mlir::OpTrait::AlwaysSpeculatableImplTrait, ::mlir::MemoryEffectOpInterface::Trait> { public: using Op::Op; using Op::print; using Adaptor = CvtScaleF32Pk8Fp8Bf16OpAdaptor; template using GenericAdaptor = CvtScaleF32Pk8Fp8Bf16OpGenericAdaptor; using FoldAdaptor = GenericAdaptor<::llvm::ArrayRef<::mlir::Attribute>>; static constexpr int odsIndex_src = 0; static constexpr int odsIndex_scale = 1; using Properties = FoldAdaptor::Properties; static ::llvm::ArrayRef<::llvm::StringRef> getAttributeNames() { return {}; } static constexpr ::llvm::StringLiteral getOperationName() { return ::llvm::StringLiteral("rocdl.cvt.scalef32.pk8.fp8.bf16"); } std::pair getODSOperandIndexAndLength(unsigned index) { return {index, 1}; } ::mlir::Operation::operand_range getODSOperands(unsigned index) { auto valueRange = getODSOperandIndexAndLength(index); return {std::next(getOperation()->operand_begin(), valueRange.first), std::next(getOperation()->operand_begin(), valueRange.first + valueRange.second)}; } ::mlir::TypedValue<::mlir::VectorType> getSrc() { return ::llvm::cast<::mlir::TypedValue<::mlir::VectorType>>(*getODSOperands(0).begin()); } ::mlir::TypedValue<::mlir::FloatType> getScale() { return ::llvm::cast<::mlir::TypedValue<::mlir::FloatType>>(*getODSOperands(1).begin()); } ::mlir::OpOperand &getSrcMutable() { auto range = getODSOperandIndexAndLength(0); return getOperation()->getOpOperand(range.first); } ::mlir::OpOperand &getScaleMutable() { auto range = getODSOperandIndexAndLength(1); return getOperation()->getOpOperand(range.first); } std::pair getODSResultIndexAndLength(unsigned index) { return {index, 1}; } ::mlir::Operation::result_range getODSResults(unsigned index) { auto valueRange = getODSResultIndexAndLength(index); return {std::next(getOperation()->result_begin(), valueRange.first), std::next(getOperation()->result_begin(), valueRange.first + valueRange.second)}; } ::mlir::TypedValue<::mlir::VectorType> getRes() { return ::llvm::cast<::mlir::TypedValue<::mlir::VectorType>>(*getODSResults(0).begin()); } static ::llvm::LogicalResult setPropertiesFromAttr(Properties &prop, ::mlir::Attribute attr, ::llvm::function_ref<::mlir::InFlightDiagnostic()> emitError); static ::mlir::Attribute getPropertiesAsAttr(::mlir::MLIRContext *ctx, const Properties &prop); static llvm::hash_code computePropertiesHash(const Properties &prop); static std::optional getInherentAttr(::mlir::MLIRContext *ctx, const Properties &prop, llvm::StringRef name); static void setInherentAttr(Properties &prop, llvm::StringRef name, mlir::Attribute value); static void populateInherentAttrs(::mlir::MLIRContext *ctx, const Properties &prop, ::mlir::NamedAttrList &attrs); static ::llvm::LogicalResult verifyInherentAttrs(::mlir::OperationName opName, ::mlir::NamedAttrList &attrs, llvm::function_ref<::mlir::InFlightDiagnostic()> emitError); static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::Type res, ::mlir::Value src, ::mlir::Value scale); static CvtScaleF32Pk8Fp8Bf16Op create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::Type res, ::mlir::Value src, ::mlir::Value scale); static CvtScaleF32Pk8Fp8Bf16Op create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::Type res, ::mlir::Value src, ::mlir::Value scale); static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::Value src, ::mlir::Value scale); static CvtScaleF32Pk8Fp8Bf16Op create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::Value src, ::mlir::Value scale); static CvtScaleF32Pk8Fp8Bf16Op create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::Value src, ::mlir::Value scale); static void build(::mlir::OpBuilder &, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, ::llvm::ArrayRef<::mlir::NamedAttribute> attributes = {}); static CvtScaleF32Pk8Fp8Bf16Op create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, ::llvm::ArrayRef<::mlir::NamedAttribute> attributes = {}); static CvtScaleF32Pk8Fp8Bf16Op create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, ::llvm::ArrayRef<::mlir::NamedAttribute> attributes = {}); static void build(::mlir::OpBuilder &, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, const Properties &properties, ::llvm::ArrayRef<::mlir::NamedAttribute> discardableAttributes = {}); static CvtScaleF32Pk8Fp8Bf16Op create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, const Properties &properties, ::llvm::ArrayRef<::mlir::NamedAttribute> discardableAttributes = {}); static CvtScaleF32Pk8Fp8Bf16Op create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, const Properties &properties, ::llvm::ArrayRef<::mlir::NamedAttribute> discardableAttributes = {}); ::llvm::LogicalResult verifyInvariantsImpl(); ::llvm::LogicalResult verifyInvariants(); static ::mlir::ParseResult parse(::mlir::OpAsmParser &parser, ::mlir::OperationState &result); void print(::mlir::OpAsmPrinter &_odsPrinter); void getEffects(::llvm::SmallVectorImpl<::mlir::SideEffects::EffectInstance<::mlir::MemoryEffects::Effect>> &effects); public: }; } // namespace mlir::ROCDL MLIR_DECLARE_EXPLICIT_TYPE_ID(::mlir::ROCDL::CvtScaleF32Pk8Fp8Bf16Op) namespace mlir::ROCDL { //===----------------------------------------------------------------------===// // ::mlir::ROCDL::CvtScaleF32Pk8Fp8F16Op declarations //===----------------------------------------------------------------------===// namespace detail { class CvtScaleF32Pk8Fp8F16OpGenericAdaptorBase { public: using Properties = ::mlir::EmptyProperties; protected: ::mlir::DictionaryAttr odsAttrs; ::std::optional<::mlir::OperationName> odsOpName; Properties properties; ::mlir::RegionRange odsRegions; public: CvtScaleF32Pk8Fp8F16OpGenericAdaptorBase(::mlir::DictionaryAttr attrs, const Properties &properties, ::mlir::RegionRange regions = {}) : odsAttrs(attrs), properties(properties), odsRegions(regions) { if (odsAttrs) odsOpName.emplace("rocdl.cvt.scalef32.pk8.fp8.f16", odsAttrs.getContext()); } CvtScaleF32Pk8Fp8F16OpGenericAdaptorBase(CvtScaleF32Pk8Fp8F16Op op); std::pair getODSOperandIndexAndLength(unsigned index, unsigned odsOperandsSize) { return {index, 1}; } const Properties &getProperties() { return properties; } ::mlir::DictionaryAttr getAttributes() { return odsAttrs; } }; } // namespace detail template class CvtScaleF32Pk8Fp8F16OpGenericAdaptor : public detail::CvtScaleF32Pk8Fp8F16OpGenericAdaptorBase { using ValueT = ::llvm::detail::ValueOfRange; using Base = detail::CvtScaleF32Pk8Fp8F16OpGenericAdaptorBase; static constexpr int odsIndex_src = 0; static constexpr int odsIndex_scale = 1; public: CvtScaleF32Pk8Fp8F16OpGenericAdaptor(RangeT values, ::mlir::DictionaryAttr attrs, const Properties &properties, ::mlir::RegionRange regions = {}) : Base(attrs, properties, regions), odsOperands(values) {} CvtScaleF32Pk8Fp8F16OpGenericAdaptor(RangeT values, ::mlir::DictionaryAttr attrs, ::mlir::PropertyRef properties, ::mlir::RegionRange regions = {}) : CvtScaleF32Pk8Fp8F16OpGenericAdaptor(values, attrs, (properties ? *properties.as() : Properties{}), regions) {} CvtScaleF32Pk8Fp8F16OpGenericAdaptor(RangeT values, ::mlir::DictionaryAttr attrs = nullptr) : CvtScaleF32Pk8Fp8F16OpGenericAdaptor(values, attrs, Properties{}, {}) {} CvtScaleF32Pk8Fp8F16OpGenericAdaptor(RangeT values, const CvtScaleF32Pk8Fp8F16OpGenericAdaptorBase &base) : Base(base), odsOperands(values) {} template >> CvtScaleF32Pk8Fp8F16OpGenericAdaptor(RangeT values, LateInst op) : Base(op), odsOperands(values) {} std::pair getODSOperandIndexAndLength(unsigned index) { return Base::getODSOperandIndexAndLength(index, odsOperands.size()); } RangeT getODSOperands(unsigned index) { auto valueRange = getODSOperandIndexAndLength(index); return {std::next(odsOperands.begin(), valueRange.first), std::next(odsOperands.begin(), valueRange.first + valueRange.second)}; } ValueT getSrc() { return (*getODSOperands(0).begin()); } ValueT getScale() { return (*getODSOperands(1).begin()); } RangeT getOperands() { return odsOperands; } private: RangeT odsOperands; }; class CvtScaleF32Pk8Fp8F16OpAdaptor : public CvtScaleF32Pk8Fp8F16OpGenericAdaptor<::mlir::ValueRange> { public: using CvtScaleF32Pk8Fp8F16OpGenericAdaptor::CvtScaleF32Pk8Fp8F16OpGenericAdaptor; CvtScaleF32Pk8Fp8F16OpAdaptor(CvtScaleF32Pk8Fp8F16Op op); ::llvm::LogicalResult verify(::mlir::Location loc); }; class CvtScaleF32Pk8Fp8F16Op : public ::mlir::Op::Impl, ::mlir::OpTrait::ZeroSuccessors, ::mlir::OpTrait::NOperands<2>::Impl, ::mlir::OpTrait::OpInvariants, ::mlir::ConditionallySpeculatable::Trait, ::mlir::OpTrait::AlwaysSpeculatableImplTrait, ::mlir::MemoryEffectOpInterface::Trait> { public: using Op::Op; using Op::print; using Adaptor = CvtScaleF32Pk8Fp8F16OpAdaptor; template using GenericAdaptor = CvtScaleF32Pk8Fp8F16OpGenericAdaptor; using FoldAdaptor = GenericAdaptor<::llvm::ArrayRef<::mlir::Attribute>>; static constexpr int odsIndex_src = 0; static constexpr int odsIndex_scale = 1; using Properties = FoldAdaptor::Properties; static ::llvm::ArrayRef<::llvm::StringRef> getAttributeNames() { return {}; } static constexpr ::llvm::StringLiteral getOperationName() { return ::llvm::StringLiteral("rocdl.cvt.scalef32.pk8.fp8.f16"); } std::pair getODSOperandIndexAndLength(unsigned index) { return {index, 1}; } ::mlir::Operation::operand_range getODSOperands(unsigned index) { auto valueRange = getODSOperandIndexAndLength(index); return {std::next(getOperation()->operand_begin(), valueRange.first), std::next(getOperation()->operand_begin(), valueRange.first + valueRange.second)}; } ::mlir::TypedValue<::mlir::VectorType> getSrc() { return ::llvm::cast<::mlir::TypedValue<::mlir::VectorType>>(*getODSOperands(0).begin()); } ::mlir::TypedValue<::mlir::FloatType> getScale() { return ::llvm::cast<::mlir::TypedValue<::mlir::FloatType>>(*getODSOperands(1).begin()); } ::mlir::OpOperand &getSrcMutable() { auto range = getODSOperandIndexAndLength(0); return getOperation()->getOpOperand(range.first); } ::mlir::OpOperand &getScaleMutable() { auto range = getODSOperandIndexAndLength(1); return getOperation()->getOpOperand(range.first); } std::pair getODSResultIndexAndLength(unsigned index) { return {index, 1}; } ::mlir::Operation::result_range getODSResults(unsigned index) { auto valueRange = getODSResultIndexAndLength(index); return {std::next(getOperation()->result_begin(), valueRange.first), std::next(getOperation()->result_begin(), valueRange.first + valueRange.second)}; } ::mlir::TypedValue<::mlir::VectorType> getRes() { return ::llvm::cast<::mlir::TypedValue<::mlir::VectorType>>(*getODSResults(0).begin()); } static ::llvm::LogicalResult setPropertiesFromAttr(Properties &prop, ::mlir::Attribute attr, ::llvm::function_ref<::mlir::InFlightDiagnostic()> emitError); static ::mlir::Attribute getPropertiesAsAttr(::mlir::MLIRContext *ctx, const Properties &prop); static llvm::hash_code computePropertiesHash(const Properties &prop); static std::optional getInherentAttr(::mlir::MLIRContext *ctx, const Properties &prop, llvm::StringRef name); static void setInherentAttr(Properties &prop, llvm::StringRef name, mlir::Attribute value); static void populateInherentAttrs(::mlir::MLIRContext *ctx, const Properties &prop, ::mlir::NamedAttrList &attrs); static ::llvm::LogicalResult verifyInherentAttrs(::mlir::OperationName opName, ::mlir::NamedAttrList &attrs, llvm::function_ref<::mlir::InFlightDiagnostic()> emitError); static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::Type res, ::mlir::Value src, ::mlir::Value scale); static CvtScaleF32Pk8Fp8F16Op create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::Type res, ::mlir::Value src, ::mlir::Value scale); static CvtScaleF32Pk8Fp8F16Op create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::Type res, ::mlir::Value src, ::mlir::Value scale); static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::Value src, ::mlir::Value scale); static CvtScaleF32Pk8Fp8F16Op create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::Value src, ::mlir::Value scale); static CvtScaleF32Pk8Fp8F16Op create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::Value src, ::mlir::Value scale); static void build(::mlir::OpBuilder &, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, ::llvm::ArrayRef<::mlir::NamedAttribute> attributes = {}); static CvtScaleF32Pk8Fp8F16Op create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, ::llvm::ArrayRef<::mlir::NamedAttribute> attributes = {}); static CvtScaleF32Pk8Fp8F16Op create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, ::llvm::ArrayRef<::mlir::NamedAttribute> attributes = {}); static void build(::mlir::OpBuilder &, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, const Properties &properties, ::llvm::ArrayRef<::mlir::NamedAttribute> discardableAttributes = {}); static CvtScaleF32Pk8Fp8F16Op create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, const Properties &properties, ::llvm::ArrayRef<::mlir::NamedAttribute> discardableAttributes = {}); static CvtScaleF32Pk8Fp8F16Op create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, const Properties &properties, ::llvm::ArrayRef<::mlir::NamedAttribute> discardableAttributes = {}); ::llvm::LogicalResult verifyInvariantsImpl(); ::llvm::LogicalResult verifyInvariants(); static ::mlir::ParseResult parse(::mlir::OpAsmParser &parser, ::mlir::OperationState &result); void print(::mlir::OpAsmPrinter &_odsPrinter); void getEffects(::llvm::SmallVectorImpl<::mlir::SideEffects::EffectInstance<::mlir::MemoryEffects::Effect>> &effects); public: }; } // namespace mlir::ROCDL MLIR_DECLARE_EXPLICIT_TYPE_ID(::mlir::ROCDL::CvtScaleF32Pk8Fp8F16Op) namespace mlir::ROCDL { //===----------------------------------------------------------------------===// // ::mlir::ROCDL::CvtScaleF32Pk8Fp8F32Op declarations //===----------------------------------------------------------------------===// namespace detail { class CvtScaleF32Pk8Fp8F32OpGenericAdaptorBase { public: using Properties = ::mlir::EmptyProperties; protected: ::mlir::DictionaryAttr odsAttrs; ::std::optional<::mlir::OperationName> odsOpName; Properties properties; ::mlir::RegionRange odsRegions; public: CvtScaleF32Pk8Fp8F32OpGenericAdaptorBase(::mlir::DictionaryAttr attrs, const Properties &properties, ::mlir::RegionRange regions = {}) : odsAttrs(attrs), properties(properties), odsRegions(regions) { if (odsAttrs) odsOpName.emplace("rocdl.cvt.scalef32.pk8.fp8.f32", odsAttrs.getContext()); } CvtScaleF32Pk8Fp8F32OpGenericAdaptorBase(CvtScaleF32Pk8Fp8F32Op op); std::pair getODSOperandIndexAndLength(unsigned index, unsigned odsOperandsSize) { return {index, 1}; } const Properties &getProperties() { return properties; } ::mlir::DictionaryAttr getAttributes() { return odsAttrs; } }; } // namespace detail template class CvtScaleF32Pk8Fp8F32OpGenericAdaptor : public detail::CvtScaleF32Pk8Fp8F32OpGenericAdaptorBase { using ValueT = ::llvm::detail::ValueOfRange; using Base = detail::CvtScaleF32Pk8Fp8F32OpGenericAdaptorBase; static constexpr int odsIndex_src = 0; static constexpr int odsIndex_scale = 1; public: CvtScaleF32Pk8Fp8F32OpGenericAdaptor(RangeT values, ::mlir::DictionaryAttr attrs, const Properties &properties, ::mlir::RegionRange regions = {}) : Base(attrs, properties, regions), odsOperands(values) {} CvtScaleF32Pk8Fp8F32OpGenericAdaptor(RangeT values, ::mlir::DictionaryAttr attrs, ::mlir::PropertyRef properties, ::mlir::RegionRange regions = {}) : CvtScaleF32Pk8Fp8F32OpGenericAdaptor(values, attrs, (properties ? *properties.as() : Properties{}), regions) {} CvtScaleF32Pk8Fp8F32OpGenericAdaptor(RangeT values, ::mlir::DictionaryAttr attrs = nullptr) : CvtScaleF32Pk8Fp8F32OpGenericAdaptor(values, attrs, Properties{}, {}) {} CvtScaleF32Pk8Fp8F32OpGenericAdaptor(RangeT values, const CvtScaleF32Pk8Fp8F32OpGenericAdaptorBase &base) : Base(base), odsOperands(values) {} template >> CvtScaleF32Pk8Fp8F32OpGenericAdaptor(RangeT values, LateInst op) : Base(op), odsOperands(values) {} std::pair getODSOperandIndexAndLength(unsigned index) { return Base::getODSOperandIndexAndLength(index, odsOperands.size()); } RangeT getODSOperands(unsigned index) { auto valueRange = getODSOperandIndexAndLength(index); return {std::next(odsOperands.begin(), valueRange.first), std::next(odsOperands.begin(), valueRange.first + valueRange.second)}; } ValueT getSrc() { return (*getODSOperands(0).begin()); } ValueT getScale() { return (*getODSOperands(1).begin()); } RangeT getOperands() { return odsOperands; } private: RangeT odsOperands; }; class CvtScaleF32Pk8Fp8F32OpAdaptor : public CvtScaleF32Pk8Fp8F32OpGenericAdaptor<::mlir::ValueRange> { public: using CvtScaleF32Pk8Fp8F32OpGenericAdaptor::CvtScaleF32Pk8Fp8F32OpGenericAdaptor; CvtScaleF32Pk8Fp8F32OpAdaptor(CvtScaleF32Pk8Fp8F32Op op); ::llvm::LogicalResult verify(::mlir::Location loc); }; class CvtScaleF32Pk8Fp8F32Op : public ::mlir::Op::Impl, ::mlir::OpTrait::ZeroSuccessors, ::mlir::OpTrait::NOperands<2>::Impl, ::mlir::OpTrait::OpInvariants, ::mlir::ConditionallySpeculatable::Trait, ::mlir::OpTrait::AlwaysSpeculatableImplTrait, ::mlir::MemoryEffectOpInterface::Trait> { public: using Op::Op; using Op::print; using Adaptor = CvtScaleF32Pk8Fp8F32OpAdaptor; template using GenericAdaptor = CvtScaleF32Pk8Fp8F32OpGenericAdaptor; using FoldAdaptor = GenericAdaptor<::llvm::ArrayRef<::mlir::Attribute>>; static constexpr int odsIndex_src = 0; static constexpr int odsIndex_scale = 1; using Properties = FoldAdaptor::Properties; static ::llvm::ArrayRef<::llvm::StringRef> getAttributeNames() { return {}; } static constexpr ::llvm::StringLiteral getOperationName() { return ::llvm::StringLiteral("rocdl.cvt.scalef32.pk8.fp8.f32"); } std::pair getODSOperandIndexAndLength(unsigned index) { return {index, 1}; } ::mlir::Operation::operand_range getODSOperands(unsigned index) { auto valueRange = getODSOperandIndexAndLength(index); return {std::next(getOperation()->operand_begin(), valueRange.first), std::next(getOperation()->operand_begin(), valueRange.first + valueRange.second)}; } ::mlir::TypedValue<::mlir::VectorType> getSrc() { return ::llvm::cast<::mlir::TypedValue<::mlir::VectorType>>(*getODSOperands(0).begin()); } ::mlir::TypedValue<::mlir::FloatType> getScale() { return ::llvm::cast<::mlir::TypedValue<::mlir::FloatType>>(*getODSOperands(1).begin()); } ::mlir::OpOperand &getSrcMutable() { auto range = getODSOperandIndexAndLength(0); return getOperation()->getOpOperand(range.first); } ::mlir::OpOperand &getScaleMutable() { auto range = getODSOperandIndexAndLength(1); return getOperation()->getOpOperand(range.first); } std::pair getODSResultIndexAndLength(unsigned index) { return {index, 1}; } ::mlir::Operation::result_range getODSResults(unsigned index) { auto valueRange = getODSResultIndexAndLength(index); return {std::next(getOperation()->result_begin(), valueRange.first), std::next(getOperation()->result_begin(), valueRange.first + valueRange.second)}; } ::mlir::TypedValue<::mlir::VectorType> getRes() { return ::llvm::cast<::mlir::TypedValue<::mlir::VectorType>>(*getODSResults(0).begin()); } static ::llvm::LogicalResult setPropertiesFromAttr(Properties &prop, ::mlir::Attribute attr, ::llvm::function_ref<::mlir::InFlightDiagnostic()> emitError); static ::mlir::Attribute getPropertiesAsAttr(::mlir::MLIRContext *ctx, const Properties &prop); static llvm::hash_code computePropertiesHash(const Properties &prop); static std::optional getInherentAttr(::mlir::MLIRContext *ctx, const Properties &prop, llvm::StringRef name); static void setInherentAttr(Properties &prop, llvm::StringRef name, mlir::Attribute value); static void populateInherentAttrs(::mlir::MLIRContext *ctx, const Properties &prop, ::mlir::NamedAttrList &attrs); static ::llvm::LogicalResult verifyInherentAttrs(::mlir::OperationName opName, ::mlir::NamedAttrList &attrs, llvm::function_ref<::mlir::InFlightDiagnostic()> emitError); static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::Type res, ::mlir::Value src, ::mlir::Value scale); static CvtScaleF32Pk8Fp8F32Op create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::Type res, ::mlir::Value src, ::mlir::Value scale); static CvtScaleF32Pk8Fp8F32Op create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::Type res, ::mlir::Value src, ::mlir::Value scale); static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::Value src, ::mlir::Value scale); static CvtScaleF32Pk8Fp8F32Op create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::Value src, ::mlir::Value scale); static CvtScaleF32Pk8Fp8F32Op create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::Value src, ::mlir::Value scale); static void build(::mlir::OpBuilder &, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, ::llvm::ArrayRef<::mlir::NamedAttribute> attributes = {}); static CvtScaleF32Pk8Fp8F32Op create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, ::llvm::ArrayRef<::mlir::NamedAttribute> attributes = {}); static CvtScaleF32Pk8Fp8F32Op create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, ::llvm::ArrayRef<::mlir::NamedAttribute> attributes = {}); static void build(::mlir::OpBuilder &, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, const Properties &properties, ::llvm::ArrayRef<::mlir::NamedAttribute> discardableAttributes = {}); static CvtScaleF32Pk8Fp8F32Op create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, const Properties &properties, ::llvm::ArrayRef<::mlir::NamedAttribute> discardableAttributes = {}); static CvtScaleF32Pk8Fp8F32Op create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, const Properties &properties, ::llvm::ArrayRef<::mlir::NamedAttribute> discardableAttributes = {}); ::llvm::LogicalResult verifyInvariantsImpl(); ::llvm::LogicalResult verifyInvariants(); static ::mlir::ParseResult parse(::mlir::OpAsmParser &parser, ::mlir::OperationState &result); void print(::mlir::OpAsmPrinter &_odsPrinter); void getEffects(::llvm::SmallVectorImpl<::mlir::SideEffects::EffectInstance<::mlir::MemoryEffects::Effect>> &effects); public: }; } // namespace mlir::ROCDL MLIR_DECLARE_EXPLICIT_TYPE_ID(::mlir::ROCDL::CvtScaleF32Pk8Fp8F32Op) namespace mlir::ROCDL { //===----------------------------------------------------------------------===// // ::mlir::ROCDL::CvtScaleF32PkBf16Bf8Op declarations //===----------------------------------------------------------------------===// namespace detail { class CvtScaleF32PkBf16Bf8OpGenericAdaptorBase { public: struct Properties { using srcLoHiSelTy = ::mlir::IntegerAttr; srcLoHiSelTy srcLoHiSel; auto getSrcLoHiSel() const { auto &propStorage = this->srcLoHiSel; return ::llvm::cast<::mlir::IntegerAttr>(propStorage); } void setSrcLoHiSel(const ::mlir::IntegerAttr &propValue) { this->srcLoHiSel = propValue; } bool operator==(const Properties &rhs) const { return rhs.srcLoHiSel == this->srcLoHiSel && true; } bool operator!=(const Properties &rhs) const { return !(*this == rhs); } }; protected: ::mlir::DictionaryAttr odsAttrs; ::std::optional<::mlir::OperationName> odsOpName; Properties properties; ::mlir::RegionRange odsRegions; public: CvtScaleF32PkBf16Bf8OpGenericAdaptorBase(::mlir::DictionaryAttr attrs, const Properties &properties, ::mlir::RegionRange regions = {}) : odsAttrs(attrs), properties(properties), odsRegions(regions) { if (odsAttrs) odsOpName.emplace("rocdl.cvt.scalef32.pk.bf16.bf8", odsAttrs.getContext()); } CvtScaleF32PkBf16Bf8OpGenericAdaptorBase(CvtScaleF32PkBf16Bf8Op op); std::pair getODSOperandIndexAndLength(unsigned index, unsigned odsOperandsSize) { return {index, 1}; } const Properties &getProperties() { return properties; } ::mlir::DictionaryAttr getAttributes() { return odsAttrs; } ::mlir::IntegerAttr getSrcLoHiSelAttr() { auto attr = ::llvm::cast<::mlir::IntegerAttr>(getProperties().srcLoHiSel); return attr; } bool getSrcLoHiSel(); }; } // namespace detail template class CvtScaleF32PkBf16Bf8OpGenericAdaptor : public detail::CvtScaleF32PkBf16Bf8OpGenericAdaptorBase { using ValueT = ::llvm::detail::ValueOfRange; using Base = detail::CvtScaleF32PkBf16Bf8OpGenericAdaptorBase; static constexpr int odsIndex_src = 0; static constexpr int odsIndex_scale = 1; public: CvtScaleF32PkBf16Bf8OpGenericAdaptor(RangeT values, ::mlir::DictionaryAttr attrs, const Properties &properties, ::mlir::RegionRange regions = {}) : Base(attrs, properties, regions), odsOperands(values) {} CvtScaleF32PkBf16Bf8OpGenericAdaptor(RangeT values, ::mlir::DictionaryAttr attrs, ::mlir::PropertyRef properties, ::mlir::RegionRange regions = {}) : CvtScaleF32PkBf16Bf8OpGenericAdaptor(values, attrs, (properties ? *properties.as() : Properties{}), regions) {} CvtScaleF32PkBf16Bf8OpGenericAdaptor(RangeT values, ::mlir::DictionaryAttr attrs = nullptr) : CvtScaleF32PkBf16Bf8OpGenericAdaptor(values, attrs, Properties{}, {}) {} CvtScaleF32PkBf16Bf8OpGenericAdaptor(RangeT values, const CvtScaleF32PkBf16Bf8OpGenericAdaptorBase &base) : Base(base), odsOperands(values) {} template >> CvtScaleF32PkBf16Bf8OpGenericAdaptor(RangeT values, LateInst op) : Base(op), odsOperands(values) {} std::pair getODSOperandIndexAndLength(unsigned index) { return Base::getODSOperandIndexAndLength(index, odsOperands.size()); } RangeT getODSOperands(unsigned index) { auto valueRange = getODSOperandIndexAndLength(index); return {std::next(odsOperands.begin(), valueRange.first), std::next(odsOperands.begin(), valueRange.first + valueRange.second)}; } ValueT getSrc() { return (*getODSOperands(0).begin()); } ValueT getScale() { return (*getODSOperands(1).begin()); } RangeT getOperands() { return odsOperands; } private: RangeT odsOperands; }; class CvtScaleF32PkBf16Bf8OpAdaptor : public CvtScaleF32PkBf16Bf8OpGenericAdaptor<::mlir::ValueRange> { public: using CvtScaleF32PkBf16Bf8OpGenericAdaptor::CvtScaleF32PkBf16Bf8OpGenericAdaptor; CvtScaleF32PkBf16Bf8OpAdaptor(CvtScaleF32PkBf16Bf8Op op); ::llvm::LogicalResult verify(::mlir::Location loc); }; class CvtScaleF32PkBf16Bf8Op : public ::mlir::Op::Impl, ::mlir::OpTrait::ZeroSuccessors, ::mlir::OpTrait::NOperands<2>::Impl, ::mlir::OpTrait::OpInvariants, ::mlir::BytecodeOpInterface::Trait, ::mlir::ConditionallySpeculatable::Trait, ::mlir::OpTrait::AlwaysSpeculatableImplTrait, ::mlir::MemoryEffectOpInterface::Trait> { public: using Op::Op; using Op::print; using Adaptor = CvtScaleF32PkBf16Bf8OpAdaptor; template using GenericAdaptor = CvtScaleF32PkBf16Bf8OpGenericAdaptor; using FoldAdaptor = GenericAdaptor<::llvm::ArrayRef<::mlir::Attribute>>; static constexpr int odsIndex_src = 0; static constexpr int odsIndex_scale = 1; using Properties = FoldAdaptor::Properties; static ::llvm::ArrayRef<::llvm::StringRef> getAttributeNames() { static ::llvm::StringRef attrNames[] = {::llvm::StringRef("srcLoHiSel")}; return ::llvm::ArrayRef(attrNames); } ::mlir::StringAttr getSrcLoHiSelAttrName() { return getAttributeNameForIndex(0); } static ::mlir::StringAttr getSrcLoHiSelAttrName(::mlir::OperationName name) { return getAttributeNameForIndex(name, 0); } static constexpr ::llvm::StringLiteral getOperationName() { return ::llvm::StringLiteral("rocdl.cvt.scalef32.pk.bf16.bf8"); } std::pair getODSOperandIndexAndLength(unsigned index) { return {index, 1}; } ::mlir::Operation::operand_range getODSOperands(unsigned index) { auto valueRange = getODSOperandIndexAndLength(index); return {std::next(getOperation()->operand_begin(), valueRange.first), std::next(getOperation()->operand_begin(), valueRange.first + valueRange.second)}; } ::mlir::TypedValue<::mlir::IntegerType> getSrc() { return ::llvm::cast<::mlir::TypedValue<::mlir::IntegerType>>(*getODSOperands(0).begin()); } ::mlir::TypedValue<::mlir::FloatType> getScale() { return ::llvm::cast<::mlir::TypedValue<::mlir::FloatType>>(*getODSOperands(1).begin()); } ::mlir::OpOperand &getSrcMutable() { auto range = getODSOperandIndexAndLength(0); return getOperation()->getOpOperand(range.first); } ::mlir::OpOperand &getScaleMutable() { auto range = getODSOperandIndexAndLength(1); return getOperation()->getOpOperand(range.first); } std::pair getODSResultIndexAndLength(unsigned index) { return {index, 1}; } ::mlir::Operation::result_range getODSResults(unsigned index) { auto valueRange = getODSResultIndexAndLength(index); return {std::next(getOperation()->result_begin(), valueRange.first), std::next(getOperation()->result_begin(), valueRange.first + valueRange.second)}; } ::mlir::TypedValue<::mlir::VectorType> getRes() { return ::llvm::cast<::mlir::TypedValue<::mlir::VectorType>>(*getODSResults(0).begin()); } static ::llvm::LogicalResult setPropertiesFromAttr(Properties &prop, ::mlir::Attribute attr, ::llvm::function_ref<::mlir::InFlightDiagnostic()> emitError); static ::mlir::Attribute getPropertiesAsAttr(::mlir::MLIRContext *ctx, const Properties &prop); static llvm::hash_code computePropertiesHash(const Properties &prop); static std::optional getInherentAttr(::mlir::MLIRContext *ctx, const Properties &prop, llvm::StringRef name); static void setInherentAttr(Properties &prop, llvm::StringRef name, mlir::Attribute value); static void populateInherentAttrs(::mlir::MLIRContext *ctx, const Properties &prop, ::mlir::NamedAttrList &attrs); static ::llvm::LogicalResult verifyInherentAttrs(::mlir::OperationName opName, ::mlir::NamedAttrList &attrs, llvm::function_ref<::mlir::InFlightDiagnostic()> emitError); static ::llvm::LogicalResult readProperties(::mlir::DialectBytecodeReader &reader, ::mlir::OperationState &state); void writeProperties(::mlir::DialectBytecodeWriter &writer); ::mlir::IntegerAttr getSrcLoHiSelAttr() { return ::llvm::cast<::mlir::IntegerAttr>(getProperties().srcLoHiSel); } bool getSrcLoHiSel(); void setSrcLoHiSelAttr(::mlir::IntegerAttr attr) { getProperties().srcLoHiSel = attr; } void setSrcLoHiSel(bool attrValue); static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::Type res, ::mlir::Value src, ::mlir::Value scale, ::mlir::IntegerAttr srcLoHiSel); static CvtScaleF32PkBf16Bf8Op create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::Type res, ::mlir::Value src, ::mlir::Value scale, ::mlir::IntegerAttr srcLoHiSel); static CvtScaleF32PkBf16Bf8Op create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::Type res, ::mlir::Value src, ::mlir::Value scale, ::mlir::IntegerAttr srcLoHiSel); static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::Value src, ::mlir::Value scale, ::mlir::IntegerAttr srcLoHiSel); static CvtScaleF32PkBf16Bf8Op create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::Value src, ::mlir::Value scale, ::mlir::IntegerAttr srcLoHiSel); static CvtScaleF32PkBf16Bf8Op create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::Value src, ::mlir::Value scale, ::mlir::IntegerAttr srcLoHiSel); static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::Type res, ::mlir::Value src, ::mlir::Value scale, bool srcLoHiSel); static CvtScaleF32PkBf16Bf8Op create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::Type res, ::mlir::Value src, ::mlir::Value scale, bool srcLoHiSel); static CvtScaleF32PkBf16Bf8Op create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::Type res, ::mlir::Value src, ::mlir::Value scale, bool srcLoHiSel); static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::Value src, ::mlir::Value scale, bool srcLoHiSel); static CvtScaleF32PkBf16Bf8Op create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::Value src, ::mlir::Value scale, bool srcLoHiSel); static CvtScaleF32PkBf16Bf8Op create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::Value src, ::mlir::Value scale, bool srcLoHiSel); static void build(::mlir::OpBuilder &, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, ::llvm::ArrayRef<::mlir::NamedAttribute> attributes = {}); static CvtScaleF32PkBf16Bf8Op create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, ::llvm::ArrayRef<::mlir::NamedAttribute> attributes = {}); static CvtScaleF32PkBf16Bf8Op create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, ::llvm::ArrayRef<::mlir::NamedAttribute> attributes = {}); static void build(::mlir::OpBuilder &, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, const Properties &properties, ::llvm::ArrayRef<::mlir::NamedAttribute> discardableAttributes = {}); static CvtScaleF32PkBf16Bf8Op create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, const Properties &properties, ::llvm::ArrayRef<::mlir::NamedAttribute> discardableAttributes = {}); static CvtScaleF32PkBf16Bf8Op create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, const Properties &properties, ::llvm::ArrayRef<::mlir::NamedAttribute> discardableAttributes = {}); ::llvm::LogicalResult verifyInvariantsImpl(); ::llvm::LogicalResult verifyInvariants(); static ::mlir::ParseResult parse(::mlir::OpAsmParser &parser, ::mlir::OperationState &result); void print(::mlir::OpAsmPrinter &_odsPrinter); void getEffects(::llvm::SmallVectorImpl<::mlir::SideEffects::EffectInstance<::mlir::MemoryEffects::Effect>> &effects); private: ::mlir::StringAttr getAttributeNameForIndex(unsigned index) { return getAttributeNameForIndex((*this)->getName(), index); } static ::mlir::StringAttr getAttributeNameForIndex(::mlir::OperationName name, unsigned index) { assert(index < 1 && "invalid attribute index"); assert(name.getStringRef() == getOperationName() && "invalid operation name"); assert(name.isRegistered() && "Operation isn't registered, missing a " "dependent dialect loading?"); return name.getAttributeNames()[index]; } public: }; } // namespace mlir::ROCDL MLIR_DECLARE_EXPLICIT_TYPE_ID(::mlir::ROCDL::CvtScaleF32PkBf16Bf8Op) MLIR_DECLARE_EXPLICIT_TYPE_ID(::mlir::ROCDL::detail::CvtScaleF32PkBf16Bf8OpGenericAdaptorBase::Properties) namespace mlir::ROCDL { //===----------------------------------------------------------------------===// // ::mlir::ROCDL::CvtScaleF32PkBf16Fp4Op declarations //===----------------------------------------------------------------------===// namespace detail { class CvtScaleF32PkBf16Fp4OpGenericAdaptorBase { public: struct Properties { using srcSelIndexTy = ::mlir::IntegerAttr; srcSelIndexTy srcSelIndex; auto getSrcSelIndex() const { auto &propStorage = this->srcSelIndex; return ::llvm::cast<::mlir::IntegerAttr>(propStorage); } void setSrcSelIndex(const ::mlir::IntegerAttr &propValue) { this->srcSelIndex = propValue; } bool operator==(const Properties &rhs) const { return rhs.srcSelIndex == this->srcSelIndex && true; } bool operator!=(const Properties &rhs) const { return !(*this == rhs); } }; protected: ::mlir::DictionaryAttr odsAttrs; ::std::optional<::mlir::OperationName> odsOpName; Properties properties; ::mlir::RegionRange odsRegions; public: CvtScaleF32PkBf16Fp4OpGenericAdaptorBase(::mlir::DictionaryAttr attrs, const Properties &properties, ::mlir::RegionRange regions = {}) : odsAttrs(attrs), properties(properties), odsRegions(regions) { if (odsAttrs) odsOpName.emplace("rocdl.cvt.scalef32.pk.bf16.fp4", odsAttrs.getContext()); } CvtScaleF32PkBf16Fp4OpGenericAdaptorBase(CvtScaleF32PkBf16Fp4Op op); std::pair getODSOperandIndexAndLength(unsigned index, unsigned odsOperandsSize) { return {index, 1}; } const Properties &getProperties() { return properties; } ::mlir::DictionaryAttr getAttributes() { return odsAttrs; } ::mlir::IntegerAttr getSrcSelIndexAttr() { auto attr = ::llvm::cast<::mlir::IntegerAttr>(getProperties().srcSelIndex); return attr; } uint32_t getSrcSelIndex(); }; } // namespace detail template class CvtScaleF32PkBf16Fp4OpGenericAdaptor : public detail::CvtScaleF32PkBf16Fp4OpGenericAdaptorBase { using ValueT = ::llvm::detail::ValueOfRange; using Base = detail::CvtScaleF32PkBf16Fp4OpGenericAdaptorBase; static constexpr int odsIndex_src = 0; static constexpr int odsIndex_scale = 1; public: CvtScaleF32PkBf16Fp4OpGenericAdaptor(RangeT values, ::mlir::DictionaryAttr attrs, const Properties &properties, ::mlir::RegionRange regions = {}) : Base(attrs, properties, regions), odsOperands(values) {} CvtScaleF32PkBf16Fp4OpGenericAdaptor(RangeT values, ::mlir::DictionaryAttr attrs, ::mlir::PropertyRef properties, ::mlir::RegionRange regions = {}) : CvtScaleF32PkBf16Fp4OpGenericAdaptor(values, attrs, (properties ? *properties.as() : Properties{}), regions) {} CvtScaleF32PkBf16Fp4OpGenericAdaptor(RangeT values, ::mlir::DictionaryAttr attrs = nullptr) : CvtScaleF32PkBf16Fp4OpGenericAdaptor(values, attrs, Properties{}, {}) {} CvtScaleF32PkBf16Fp4OpGenericAdaptor(RangeT values, const CvtScaleF32PkBf16Fp4OpGenericAdaptorBase &base) : Base(base), odsOperands(values) {} template >> CvtScaleF32PkBf16Fp4OpGenericAdaptor(RangeT values, LateInst op) : Base(op), odsOperands(values) {} std::pair getODSOperandIndexAndLength(unsigned index) { return Base::getODSOperandIndexAndLength(index, odsOperands.size()); } RangeT getODSOperands(unsigned index) { auto valueRange = getODSOperandIndexAndLength(index); return {std::next(odsOperands.begin(), valueRange.first), std::next(odsOperands.begin(), valueRange.first + valueRange.second)}; } ValueT getSrc() { return (*getODSOperands(0).begin()); } ValueT getScale() { return (*getODSOperands(1).begin()); } RangeT getOperands() { return odsOperands; } private: RangeT odsOperands; }; class CvtScaleF32PkBf16Fp4OpAdaptor : public CvtScaleF32PkBf16Fp4OpGenericAdaptor<::mlir::ValueRange> { public: using CvtScaleF32PkBf16Fp4OpGenericAdaptor::CvtScaleF32PkBf16Fp4OpGenericAdaptor; CvtScaleF32PkBf16Fp4OpAdaptor(CvtScaleF32PkBf16Fp4Op op); ::llvm::LogicalResult verify(::mlir::Location loc); }; class CvtScaleF32PkBf16Fp4Op : public ::mlir::Op::Impl, ::mlir::OpTrait::ZeroSuccessors, ::mlir::OpTrait::NOperands<2>::Impl, ::mlir::OpTrait::OpInvariants, ::mlir::BytecodeOpInterface::Trait, ::mlir::ConditionallySpeculatable::Trait, ::mlir::OpTrait::AlwaysSpeculatableImplTrait, ::mlir::MemoryEffectOpInterface::Trait> { public: using Op::Op; using Op::print; using Adaptor = CvtScaleF32PkBf16Fp4OpAdaptor; template using GenericAdaptor = CvtScaleF32PkBf16Fp4OpGenericAdaptor; using FoldAdaptor = GenericAdaptor<::llvm::ArrayRef<::mlir::Attribute>>; static constexpr int odsIndex_src = 0; static constexpr int odsIndex_scale = 1; using Properties = FoldAdaptor::Properties; static ::llvm::ArrayRef<::llvm::StringRef> getAttributeNames() { static ::llvm::StringRef attrNames[] = {::llvm::StringRef("srcSelIndex")}; return ::llvm::ArrayRef(attrNames); } ::mlir::StringAttr getSrcSelIndexAttrName() { return getAttributeNameForIndex(0); } static ::mlir::StringAttr getSrcSelIndexAttrName(::mlir::OperationName name) { return getAttributeNameForIndex(name, 0); } static constexpr ::llvm::StringLiteral getOperationName() { return ::llvm::StringLiteral("rocdl.cvt.scalef32.pk.bf16.fp4"); } std::pair getODSOperandIndexAndLength(unsigned index) { return {index, 1}; } ::mlir::Operation::operand_range getODSOperands(unsigned index) { auto valueRange = getODSOperandIndexAndLength(index); return {std::next(getOperation()->operand_begin(), valueRange.first), std::next(getOperation()->operand_begin(), valueRange.first + valueRange.second)}; } ::mlir::TypedValue<::mlir::IntegerType> getSrc() { return ::llvm::cast<::mlir::TypedValue<::mlir::IntegerType>>(*getODSOperands(0).begin()); } ::mlir::TypedValue<::mlir::FloatType> getScale() { return ::llvm::cast<::mlir::TypedValue<::mlir::FloatType>>(*getODSOperands(1).begin()); } ::mlir::OpOperand &getSrcMutable() { auto range = getODSOperandIndexAndLength(0); return getOperation()->getOpOperand(range.first); } ::mlir::OpOperand &getScaleMutable() { auto range = getODSOperandIndexAndLength(1); return getOperation()->getOpOperand(range.first); } std::pair getODSResultIndexAndLength(unsigned index) { return {index, 1}; } ::mlir::Operation::result_range getODSResults(unsigned index) { auto valueRange = getODSResultIndexAndLength(index); return {std::next(getOperation()->result_begin(), valueRange.first), std::next(getOperation()->result_begin(), valueRange.first + valueRange.second)}; } ::mlir::TypedValue<::mlir::VectorType> getRes() { return ::llvm::cast<::mlir::TypedValue<::mlir::VectorType>>(*getODSResults(0).begin()); } static ::llvm::LogicalResult setPropertiesFromAttr(Properties &prop, ::mlir::Attribute attr, ::llvm::function_ref<::mlir::InFlightDiagnostic()> emitError); static ::mlir::Attribute getPropertiesAsAttr(::mlir::MLIRContext *ctx, const Properties &prop); static llvm::hash_code computePropertiesHash(const Properties &prop); static std::optional getInherentAttr(::mlir::MLIRContext *ctx, const Properties &prop, llvm::StringRef name); static void setInherentAttr(Properties &prop, llvm::StringRef name, mlir::Attribute value); static void populateInherentAttrs(::mlir::MLIRContext *ctx, const Properties &prop, ::mlir::NamedAttrList &attrs); static ::llvm::LogicalResult verifyInherentAttrs(::mlir::OperationName opName, ::mlir::NamedAttrList &attrs, llvm::function_ref<::mlir::InFlightDiagnostic()> emitError); static ::llvm::LogicalResult readProperties(::mlir::DialectBytecodeReader &reader, ::mlir::OperationState &state); void writeProperties(::mlir::DialectBytecodeWriter &writer); ::mlir::IntegerAttr getSrcSelIndexAttr() { return ::llvm::cast<::mlir::IntegerAttr>(getProperties().srcSelIndex); } uint32_t getSrcSelIndex(); void setSrcSelIndexAttr(::mlir::IntegerAttr attr) { getProperties().srcSelIndex = attr; } void setSrcSelIndex(uint32_t attrValue); static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::Type res, ::mlir::Value src, ::mlir::Value scale, ::mlir::IntegerAttr srcSelIndex); static CvtScaleF32PkBf16Fp4Op create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::Type res, ::mlir::Value src, ::mlir::Value scale, ::mlir::IntegerAttr srcSelIndex); static CvtScaleF32PkBf16Fp4Op create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::Type res, ::mlir::Value src, ::mlir::Value scale, ::mlir::IntegerAttr srcSelIndex); static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::Value src, ::mlir::Value scale, ::mlir::IntegerAttr srcSelIndex); static CvtScaleF32PkBf16Fp4Op create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::Value src, ::mlir::Value scale, ::mlir::IntegerAttr srcSelIndex); static CvtScaleF32PkBf16Fp4Op create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::Value src, ::mlir::Value scale, ::mlir::IntegerAttr srcSelIndex); static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::Type res, ::mlir::Value src, ::mlir::Value scale, uint32_t srcSelIndex); static CvtScaleF32PkBf16Fp4Op create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::Type res, ::mlir::Value src, ::mlir::Value scale, uint32_t srcSelIndex); static CvtScaleF32PkBf16Fp4Op create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::Type res, ::mlir::Value src, ::mlir::Value scale, uint32_t srcSelIndex); static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::Value src, ::mlir::Value scale, uint32_t srcSelIndex); static CvtScaleF32PkBf16Fp4Op create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::Value src, ::mlir::Value scale, uint32_t srcSelIndex); static CvtScaleF32PkBf16Fp4Op create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::Value src, ::mlir::Value scale, uint32_t srcSelIndex); static void build(::mlir::OpBuilder &, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, ::llvm::ArrayRef<::mlir::NamedAttribute> attributes = {}); static CvtScaleF32PkBf16Fp4Op create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, ::llvm::ArrayRef<::mlir::NamedAttribute> attributes = {}); static CvtScaleF32PkBf16Fp4Op create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, ::llvm::ArrayRef<::mlir::NamedAttribute> attributes = {}); static void build(::mlir::OpBuilder &, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, const Properties &properties, ::llvm::ArrayRef<::mlir::NamedAttribute> discardableAttributes = {}); static CvtScaleF32PkBf16Fp4Op create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, const Properties &properties, ::llvm::ArrayRef<::mlir::NamedAttribute> discardableAttributes = {}); static CvtScaleF32PkBf16Fp4Op create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, const Properties &properties, ::llvm::ArrayRef<::mlir::NamedAttribute> discardableAttributes = {}); ::llvm::LogicalResult verifyInvariantsImpl(); ::llvm::LogicalResult verifyInvariants(); static ::mlir::ParseResult parse(::mlir::OpAsmParser &parser, ::mlir::OperationState &result); void print(::mlir::OpAsmPrinter &_odsPrinter); void getEffects(::llvm::SmallVectorImpl<::mlir::SideEffects::EffectInstance<::mlir::MemoryEffects::Effect>> &effects); private: ::mlir::StringAttr getAttributeNameForIndex(unsigned index) { return getAttributeNameForIndex((*this)->getName(), index); } static ::mlir::StringAttr getAttributeNameForIndex(::mlir::OperationName name, unsigned index) { assert(index < 1 && "invalid attribute index"); assert(name.getStringRef() == getOperationName() && "invalid operation name"); assert(name.isRegistered() && "Operation isn't registered, missing a " "dependent dialect loading?"); return name.getAttributeNames()[index]; } public: }; } // namespace mlir::ROCDL MLIR_DECLARE_EXPLICIT_TYPE_ID(::mlir::ROCDL::CvtScaleF32PkBf16Fp4Op) MLIR_DECLARE_EXPLICIT_TYPE_ID(::mlir::ROCDL::detail::CvtScaleF32PkBf16Fp4OpGenericAdaptorBase::Properties) namespace mlir::ROCDL { //===----------------------------------------------------------------------===// // ::mlir::ROCDL::CvtScaleF32PkBf16Fp8Op declarations //===----------------------------------------------------------------------===// namespace detail { class CvtScaleF32PkBf16Fp8OpGenericAdaptorBase { public: struct Properties { using srcLoHiSelTy = ::mlir::IntegerAttr; srcLoHiSelTy srcLoHiSel; auto getSrcLoHiSel() const { auto &propStorage = this->srcLoHiSel; return ::llvm::cast<::mlir::IntegerAttr>(propStorage); } void setSrcLoHiSel(const ::mlir::IntegerAttr &propValue) { this->srcLoHiSel = propValue; } bool operator==(const Properties &rhs) const { return rhs.srcLoHiSel == this->srcLoHiSel && true; } bool operator!=(const Properties &rhs) const { return !(*this == rhs); } }; protected: ::mlir::DictionaryAttr odsAttrs; ::std::optional<::mlir::OperationName> odsOpName; Properties properties; ::mlir::RegionRange odsRegions; public: CvtScaleF32PkBf16Fp8OpGenericAdaptorBase(::mlir::DictionaryAttr attrs, const Properties &properties, ::mlir::RegionRange regions = {}) : odsAttrs(attrs), properties(properties), odsRegions(regions) { if (odsAttrs) odsOpName.emplace("rocdl.cvt.scalef32.pk.bf16.fp8", odsAttrs.getContext()); } CvtScaleF32PkBf16Fp8OpGenericAdaptorBase(CvtScaleF32PkBf16Fp8Op op); std::pair getODSOperandIndexAndLength(unsigned index, unsigned odsOperandsSize) { return {index, 1}; } const Properties &getProperties() { return properties; } ::mlir::DictionaryAttr getAttributes() { return odsAttrs; } ::mlir::IntegerAttr getSrcLoHiSelAttr() { auto attr = ::llvm::cast<::mlir::IntegerAttr>(getProperties().srcLoHiSel); return attr; } bool getSrcLoHiSel(); }; } // namespace detail template class CvtScaleF32PkBf16Fp8OpGenericAdaptor : public detail::CvtScaleF32PkBf16Fp8OpGenericAdaptorBase { using ValueT = ::llvm::detail::ValueOfRange; using Base = detail::CvtScaleF32PkBf16Fp8OpGenericAdaptorBase; static constexpr int odsIndex_src = 0; static constexpr int odsIndex_scale = 1; public: CvtScaleF32PkBf16Fp8OpGenericAdaptor(RangeT values, ::mlir::DictionaryAttr attrs, const Properties &properties, ::mlir::RegionRange regions = {}) : Base(attrs, properties, regions), odsOperands(values) {} CvtScaleF32PkBf16Fp8OpGenericAdaptor(RangeT values, ::mlir::DictionaryAttr attrs, ::mlir::PropertyRef properties, ::mlir::RegionRange regions = {}) : CvtScaleF32PkBf16Fp8OpGenericAdaptor(values, attrs, (properties ? *properties.as() : Properties{}), regions) {} CvtScaleF32PkBf16Fp8OpGenericAdaptor(RangeT values, ::mlir::DictionaryAttr attrs = nullptr) : CvtScaleF32PkBf16Fp8OpGenericAdaptor(values, attrs, Properties{}, {}) {} CvtScaleF32PkBf16Fp8OpGenericAdaptor(RangeT values, const CvtScaleF32PkBf16Fp8OpGenericAdaptorBase &base) : Base(base), odsOperands(values) {} template >> CvtScaleF32PkBf16Fp8OpGenericAdaptor(RangeT values, LateInst op) : Base(op), odsOperands(values) {} std::pair getODSOperandIndexAndLength(unsigned index) { return Base::getODSOperandIndexAndLength(index, odsOperands.size()); } RangeT getODSOperands(unsigned index) { auto valueRange = getODSOperandIndexAndLength(index); return {std::next(odsOperands.begin(), valueRange.first), std::next(odsOperands.begin(), valueRange.first + valueRange.second)}; } ValueT getSrc() { return (*getODSOperands(0).begin()); } ValueT getScale() { return (*getODSOperands(1).begin()); } RangeT getOperands() { return odsOperands; } private: RangeT odsOperands; }; class CvtScaleF32PkBf16Fp8OpAdaptor : public CvtScaleF32PkBf16Fp8OpGenericAdaptor<::mlir::ValueRange> { public: using CvtScaleF32PkBf16Fp8OpGenericAdaptor::CvtScaleF32PkBf16Fp8OpGenericAdaptor; CvtScaleF32PkBf16Fp8OpAdaptor(CvtScaleF32PkBf16Fp8Op op); ::llvm::LogicalResult verify(::mlir::Location loc); }; class CvtScaleF32PkBf16Fp8Op : public ::mlir::Op::Impl, ::mlir::OpTrait::ZeroSuccessors, ::mlir::OpTrait::NOperands<2>::Impl, ::mlir::OpTrait::OpInvariants, ::mlir::BytecodeOpInterface::Trait, ::mlir::ConditionallySpeculatable::Trait, ::mlir::OpTrait::AlwaysSpeculatableImplTrait, ::mlir::MemoryEffectOpInterface::Trait> { public: using Op::Op; using Op::print; using Adaptor = CvtScaleF32PkBf16Fp8OpAdaptor; template using GenericAdaptor = CvtScaleF32PkBf16Fp8OpGenericAdaptor; using FoldAdaptor = GenericAdaptor<::llvm::ArrayRef<::mlir::Attribute>>; static constexpr int odsIndex_src = 0; static constexpr int odsIndex_scale = 1; using Properties = FoldAdaptor::Properties; static ::llvm::ArrayRef<::llvm::StringRef> getAttributeNames() { static ::llvm::StringRef attrNames[] = {::llvm::StringRef("srcLoHiSel")}; return ::llvm::ArrayRef(attrNames); } ::mlir::StringAttr getSrcLoHiSelAttrName() { return getAttributeNameForIndex(0); } static ::mlir::StringAttr getSrcLoHiSelAttrName(::mlir::OperationName name) { return getAttributeNameForIndex(name, 0); } static constexpr ::llvm::StringLiteral getOperationName() { return ::llvm::StringLiteral("rocdl.cvt.scalef32.pk.bf16.fp8"); } std::pair getODSOperandIndexAndLength(unsigned index) { return {index, 1}; } ::mlir::Operation::operand_range getODSOperands(unsigned index) { auto valueRange = getODSOperandIndexAndLength(index); return {std::next(getOperation()->operand_begin(), valueRange.first), std::next(getOperation()->operand_begin(), valueRange.first + valueRange.second)}; } ::mlir::TypedValue<::mlir::IntegerType> getSrc() { return ::llvm::cast<::mlir::TypedValue<::mlir::IntegerType>>(*getODSOperands(0).begin()); } ::mlir::TypedValue<::mlir::FloatType> getScale() { return ::llvm::cast<::mlir::TypedValue<::mlir::FloatType>>(*getODSOperands(1).begin()); } ::mlir::OpOperand &getSrcMutable() { auto range = getODSOperandIndexAndLength(0); return getOperation()->getOpOperand(range.first); } ::mlir::OpOperand &getScaleMutable() { auto range = getODSOperandIndexAndLength(1); return getOperation()->getOpOperand(range.first); } std::pair getODSResultIndexAndLength(unsigned index) { return {index, 1}; } ::mlir::Operation::result_range getODSResults(unsigned index) { auto valueRange = getODSResultIndexAndLength(index); return {std::next(getOperation()->result_begin(), valueRange.first), std::next(getOperation()->result_begin(), valueRange.first + valueRange.second)}; } ::mlir::TypedValue<::mlir::VectorType> getRes() { return ::llvm::cast<::mlir::TypedValue<::mlir::VectorType>>(*getODSResults(0).begin()); } static ::llvm::LogicalResult setPropertiesFromAttr(Properties &prop, ::mlir::Attribute attr, ::llvm::function_ref<::mlir::InFlightDiagnostic()> emitError); static ::mlir::Attribute getPropertiesAsAttr(::mlir::MLIRContext *ctx, const Properties &prop); static llvm::hash_code computePropertiesHash(const Properties &prop); static std::optional getInherentAttr(::mlir::MLIRContext *ctx, const Properties &prop, llvm::StringRef name); static void setInherentAttr(Properties &prop, llvm::StringRef name, mlir::Attribute value); static void populateInherentAttrs(::mlir::MLIRContext *ctx, const Properties &prop, ::mlir::NamedAttrList &attrs); static ::llvm::LogicalResult verifyInherentAttrs(::mlir::OperationName opName, ::mlir::NamedAttrList &attrs, llvm::function_ref<::mlir::InFlightDiagnostic()> emitError); static ::llvm::LogicalResult readProperties(::mlir::DialectBytecodeReader &reader, ::mlir::OperationState &state); void writeProperties(::mlir::DialectBytecodeWriter &writer); ::mlir::IntegerAttr getSrcLoHiSelAttr() { return ::llvm::cast<::mlir::IntegerAttr>(getProperties().srcLoHiSel); } bool getSrcLoHiSel(); void setSrcLoHiSelAttr(::mlir::IntegerAttr attr) { getProperties().srcLoHiSel = attr; } void setSrcLoHiSel(bool attrValue); static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::Type res, ::mlir::Value src, ::mlir::Value scale, ::mlir::IntegerAttr srcLoHiSel); static CvtScaleF32PkBf16Fp8Op create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::Type res, ::mlir::Value src, ::mlir::Value scale, ::mlir::IntegerAttr srcLoHiSel); static CvtScaleF32PkBf16Fp8Op create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::Type res, ::mlir::Value src, ::mlir::Value scale, ::mlir::IntegerAttr srcLoHiSel); static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::Value src, ::mlir::Value scale, ::mlir::IntegerAttr srcLoHiSel); static CvtScaleF32PkBf16Fp8Op create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::Value src, ::mlir::Value scale, ::mlir::IntegerAttr srcLoHiSel); static CvtScaleF32PkBf16Fp8Op create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::Value src, ::mlir::Value scale, ::mlir::IntegerAttr srcLoHiSel); static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::Type res, ::mlir::Value src, ::mlir::Value scale, bool srcLoHiSel); static CvtScaleF32PkBf16Fp8Op create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::Type res, ::mlir::Value src, ::mlir::Value scale, bool srcLoHiSel); static CvtScaleF32PkBf16Fp8Op create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::Type res, ::mlir::Value src, ::mlir::Value scale, bool srcLoHiSel); static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::Value src, ::mlir::Value scale, bool srcLoHiSel); static CvtScaleF32PkBf16Fp8Op create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::Value src, ::mlir::Value scale, bool srcLoHiSel); static CvtScaleF32PkBf16Fp8Op create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::Value src, ::mlir::Value scale, bool srcLoHiSel); static void build(::mlir::OpBuilder &, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, ::llvm::ArrayRef<::mlir::NamedAttribute> attributes = {}); static CvtScaleF32PkBf16Fp8Op create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, ::llvm::ArrayRef<::mlir::NamedAttribute> attributes = {}); static CvtScaleF32PkBf16Fp8Op create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, ::llvm::ArrayRef<::mlir::NamedAttribute> attributes = {}); static void build(::mlir::OpBuilder &, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, const Properties &properties, ::llvm::ArrayRef<::mlir::NamedAttribute> discardableAttributes = {}); static CvtScaleF32PkBf16Fp8Op create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, const Properties &properties, ::llvm::ArrayRef<::mlir::NamedAttribute> discardableAttributes = {}); static CvtScaleF32PkBf16Fp8Op create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, const Properties &properties, ::llvm::ArrayRef<::mlir::NamedAttribute> discardableAttributes = {}); ::llvm::LogicalResult verifyInvariantsImpl(); ::llvm::LogicalResult verifyInvariants(); static ::mlir::ParseResult parse(::mlir::OpAsmParser &parser, ::mlir::OperationState &result); void print(::mlir::OpAsmPrinter &_odsPrinter); void getEffects(::llvm::SmallVectorImpl<::mlir::SideEffects::EffectInstance<::mlir::MemoryEffects::Effect>> &effects); private: ::mlir::StringAttr getAttributeNameForIndex(unsigned index) { return getAttributeNameForIndex((*this)->getName(), index); } static ::mlir::StringAttr getAttributeNameForIndex(::mlir::OperationName name, unsigned index) { assert(index < 1 && "invalid attribute index"); assert(name.getStringRef() == getOperationName() && "invalid operation name"); assert(name.isRegistered() && "Operation isn't registered, missing a " "dependent dialect loading?"); return name.getAttributeNames()[index]; } public: }; } // namespace mlir::ROCDL MLIR_DECLARE_EXPLICIT_TYPE_ID(::mlir::ROCDL::CvtScaleF32PkBf16Fp8Op) MLIR_DECLARE_EXPLICIT_TYPE_ID(::mlir::ROCDL::detail::CvtScaleF32PkBf16Fp8OpGenericAdaptorBase::Properties) namespace mlir::ROCDL { //===----------------------------------------------------------------------===// // ::mlir::ROCDL::CvtScaleF32PkBf8Bf16Op declarations //===----------------------------------------------------------------------===// namespace detail { class CvtScaleF32PkBf8Bf16OpGenericAdaptorBase { public: struct Properties { using dstLoHiSelTy = ::mlir::IntegerAttr; dstLoHiSelTy dstLoHiSel; auto getDstLoHiSel() const { auto &propStorage = this->dstLoHiSel; return ::llvm::cast<::mlir::IntegerAttr>(propStorage); } void setDstLoHiSel(const ::mlir::IntegerAttr &propValue) { this->dstLoHiSel = propValue; } bool operator==(const Properties &rhs) const { return rhs.dstLoHiSel == this->dstLoHiSel && true; } bool operator!=(const Properties &rhs) const { return !(*this == rhs); } }; protected: ::mlir::DictionaryAttr odsAttrs; ::std::optional<::mlir::OperationName> odsOpName; Properties properties; ::mlir::RegionRange odsRegions; public: CvtScaleF32PkBf8Bf16OpGenericAdaptorBase(::mlir::DictionaryAttr attrs, const Properties &properties, ::mlir::RegionRange regions = {}) : odsAttrs(attrs), properties(properties), odsRegions(regions) { if (odsAttrs) odsOpName.emplace("rocdl.cvt.scalef32.pk.bf8.bf16", odsAttrs.getContext()); } CvtScaleF32PkBf8Bf16OpGenericAdaptorBase(CvtScaleF32PkBf8Bf16Op op); std::pair getODSOperandIndexAndLength(unsigned index, unsigned odsOperandsSize) { return {index, 1}; } const Properties &getProperties() { return properties; } ::mlir::DictionaryAttr getAttributes() { return odsAttrs; } ::mlir::IntegerAttr getDstLoHiSelAttr() { auto attr = ::llvm::cast<::mlir::IntegerAttr>(getProperties().dstLoHiSel); return attr; } bool getDstLoHiSel(); }; } // namespace detail template class CvtScaleF32PkBf8Bf16OpGenericAdaptor : public detail::CvtScaleF32PkBf8Bf16OpGenericAdaptorBase { using ValueT = ::llvm::detail::ValueOfRange; using Base = detail::CvtScaleF32PkBf8Bf16OpGenericAdaptorBase; static constexpr int odsIndex_oldVdst = 0; static constexpr int odsIndex_src0 = 1; static constexpr int odsIndex_scale = 2; public: CvtScaleF32PkBf8Bf16OpGenericAdaptor(RangeT values, ::mlir::DictionaryAttr attrs, const Properties &properties, ::mlir::RegionRange regions = {}) : Base(attrs, properties, regions), odsOperands(values) {} CvtScaleF32PkBf8Bf16OpGenericAdaptor(RangeT values, ::mlir::DictionaryAttr attrs, ::mlir::PropertyRef properties, ::mlir::RegionRange regions = {}) : CvtScaleF32PkBf8Bf16OpGenericAdaptor(values, attrs, (properties ? *properties.as() : Properties{}), regions) {} CvtScaleF32PkBf8Bf16OpGenericAdaptor(RangeT values, ::mlir::DictionaryAttr attrs = nullptr) : CvtScaleF32PkBf8Bf16OpGenericAdaptor(values, attrs, Properties{}, {}) {} CvtScaleF32PkBf8Bf16OpGenericAdaptor(RangeT values, const CvtScaleF32PkBf8Bf16OpGenericAdaptorBase &base) : Base(base), odsOperands(values) {} template >> CvtScaleF32PkBf8Bf16OpGenericAdaptor(RangeT values, LateInst op) : Base(op), odsOperands(values) {} std::pair getODSOperandIndexAndLength(unsigned index) { return Base::getODSOperandIndexAndLength(index, odsOperands.size()); } RangeT getODSOperands(unsigned index) { auto valueRange = getODSOperandIndexAndLength(index); return {std::next(odsOperands.begin(), valueRange.first), std::next(odsOperands.begin(), valueRange.first + valueRange.second)}; } ValueT getOldVdst() { return (*getODSOperands(0).begin()); } ValueT getSrc0() { return (*getODSOperands(1).begin()); } ValueT getScale() { return (*getODSOperands(2).begin()); } RangeT getOperands() { return odsOperands; } private: RangeT odsOperands; }; class CvtScaleF32PkBf8Bf16OpAdaptor : public CvtScaleF32PkBf8Bf16OpGenericAdaptor<::mlir::ValueRange> { public: using CvtScaleF32PkBf8Bf16OpGenericAdaptor::CvtScaleF32PkBf8Bf16OpGenericAdaptor; CvtScaleF32PkBf8Bf16OpAdaptor(CvtScaleF32PkBf8Bf16Op op); ::llvm::LogicalResult verify(::mlir::Location loc); }; class CvtScaleF32PkBf8Bf16Op : public ::mlir::Op::Impl, ::mlir::OpTrait::ZeroSuccessors, ::mlir::OpTrait::NOperands<3>::Impl, ::mlir::OpTrait::OpInvariants, ::mlir::BytecodeOpInterface::Trait, ::mlir::ConditionallySpeculatable::Trait, ::mlir::OpTrait::AlwaysSpeculatableImplTrait, ::mlir::MemoryEffectOpInterface::Trait> { public: using Op::Op; using Op::print; using Adaptor = CvtScaleF32PkBf8Bf16OpAdaptor; template using GenericAdaptor = CvtScaleF32PkBf8Bf16OpGenericAdaptor; using FoldAdaptor = GenericAdaptor<::llvm::ArrayRef<::mlir::Attribute>>; static constexpr int odsIndex_oldVdst = 0; static constexpr int odsIndex_src0 = 1; static constexpr int odsIndex_scale = 2; using Properties = FoldAdaptor::Properties; static ::llvm::ArrayRef<::llvm::StringRef> getAttributeNames() { static ::llvm::StringRef attrNames[] = {::llvm::StringRef("dstLoHiSel")}; return ::llvm::ArrayRef(attrNames); } ::mlir::StringAttr getDstLoHiSelAttrName() { return getAttributeNameForIndex(0); } static ::mlir::StringAttr getDstLoHiSelAttrName(::mlir::OperationName name) { return getAttributeNameForIndex(name, 0); } static constexpr ::llvm::StringLiteral getOperationName() { return ::llvm::StringLiteral("rocdl.cvt.scalef32.pk.bf8.bf16"); } std::pair getODSOperandIndexAndLength(unsigned index) { return {index, 1}; } ::mlir::Operation::operand_range getODSOperands(unsigned index) { auto valueRange = getODSOperandIndexAndLength(index); return {std::next(getOperation()->operand_begin(), valueRange.first), std::next(getOperation()->operand_begin(), valueRange.first + valueRange.second)}; } ::mlir::TypedValue<::mlir::VectorType> getOldVdst() { return ::llvm::cast<::mlir::TypedValue<::mlir::VectorType>>(*getODSOperands(0).begin()); } ::mlir::TypedValue<::mlir::VectorType> getSrc0() { return ::llvm::cast<::mlir::TypedValue<::mlir::VectorType>>(*getODSOperands(1).begin()); } ::mlir::TypedValue<::mlir::FloatType> getScale() { return ::llvm::cast<::mlir::TypedValue<::mlir::FloatType>>(*getODSOperands(2).begin()); } ::mlir::OpOperand &getOldVdstMutable() { auto range = getODSOperandIndexAndLength(0); return getOperation()->getOpOperand(range.first); } ::mlir::OpOperand &getSrc0Mutable() { auto range = getODSOperandIndexAndLength(1); return getOperation()->getOpOperand(range.first); } ::mlir::OpOperand &getScaleMutable() { auto range = getODSOperandIndexAndLength(2); return getOperation()->getOpOperand(range.first); } std::pair getODSResultIndexAndLength(unsigned index) { return {index, 1}; } ::mlir::Operation::result_range getODSResults(unsigned index) { auto valueRange = getODSResultIndexAndLength(index); return {std::next(getOperation()->result_begin(), valueRange.first), std::next(getOperation()->result_begin(), valueRange.first + valueRange.second)}; } ::mlir::TypedValue<::mlir::VectorType> getRes() { return ::llvm::cast<::mlir::TypedValue<::mlir::VectorType>>(*getODSResults(0).begin()); } static ::llvm::LogicalResult setPropertiesFromAttr(Properties &prop, ::mlir::Attribute attr, ::llvm::function_ref<::mlir::InFlightDiagnostic()> emitError); static ::mlir::Attribute getPropertiesAsAttr(::mlir::MLIRContext *ctx, const Properties &prop); static llvm::hash_code computePropertiesHash(const Properties &prop); static std::optional getInherentAttr(::mlir::MLIRContext *ctx, const Properties &prop, llvm::StringRef name); static void setInherentAttr(Properties &prop, llvm::StringRef name, mlir::Attribute value); static void populateInherentAttrs(::mlir::MLIRContext *ctx, const Properties &prop, ::mlir::NamedAttrList &attrs); static ::llvm::LogicalResult verifyInherentAttrs(::mlir::OperationName opName, ::mlir::NamedAttrList &attrs, llvm::function_ref<::mlir::InFlightDiagnostic()> emitError); static ::llvm::LogicalResult readProperties(::mlir::DialectBytecodeReader &reader, ::mlir::OperationState &state); void writeProperties(::mlir::DialectBytecodeWriter &writer); ::mlir::IntegerAttr getDstLoHiSelAttr() { return ::llvm::cast<::mlir::IntegerAttr>(getProperties().dstLoHiSel); } bool getDstLoHiSel(); void setDstLoHiSelAttr(::mlir::IntegerAttr attr) { getProperties().dstLoHiSel = attr; } void setDstLoHiSel(bool attrValue); static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::Type res, ::mlir::Value oldVdst, ::mlir::Value src0, ::mlir::Value scale, ::mlir::IntegerAttr dstLoHiSel); static CvtScaleF32PkBf8Bf16Op create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::Type res, ::mlir::Value oldVdst, ::mlir::Value src0, ::mlir::Value scale, ::mlir::IntegerAttr dstLoHiSel); static CvtScaleF32PkBf8Bf16Op create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::Type res, ::mlir::Value oldVdst, ::mlir::Value src0, ::mlir::Value scale, ::mlir::IntegerAttr dstLoHiSel); static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::Value oldVdst, ::mlir::Value src0, ::mlir::Value scale, ::mlir::IntegerAttr dstLoHiSel); static CvtScaleF32PkBf8Bf16Op create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::Value oldVdst, ::mlir::Value src0, ::mlir::Value scale, ::mlir::IntegerAttr dstLoHiSel); static CvtScaleF32PkBf8Bf16Op create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::Value oldVdst, ::mlir::Value src0, ::mlir::Value scale, ::mlir::IntegerAttr dstLoHiSel); static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::Type res, ::mlir::Value oldVdst, ::mlir::Value src0, ::mlir::Value scale, bool dstLoHiSel); static CvtScaleF32PkBf8Bf16Op create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::Type res, ::mlir::Value oldVdst, ::mlir::Value src0, ::mlir::Value scale, bool dstLoHiSel); static CvtScaleF32PkBf8Bf16Op create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::Type res, ::mlir::Value oldVdst, ::mlir::Value src0, ::mlir::Value scale, bool dstLoHiSel); static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::Value oldVdst, ::mlir::Value src0, ::mlir::Value scale, bool dstLoHiSel); static CvtScaleF32PkBf8Bf16Op create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::Value oldVdst, ::mlir::Value src0, ::mlir::Value scale, bool dstLoHiSel); static CvtScaleF32PkBf8Bf16Op create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::Value oldVdst, ::mlir::Value src0, ::mlir::Value scale, bool dstLoHiSel); static void build(::mlir::OpBuilder &, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, ::llvm::ArrayRef<::mlir::NamedAttribute> attributes = {}); static CvtScaleF32PkBf8Bf16Op create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, ::llvm::ArrayRef<::mlir::NamedAttribute> attributes = {}); static CvtScaleF32PkBf8Bf16Op create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, ::llvm::ArrayRef<::mlir::NamedAttribute> attributes = {}); static void build(::mlir::OpBuilder &, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, const Properties &properties, ::llvm::ArrayRef<::mlir::NamedAttribute> discardableAttributes = {}); static CvtScaleF32PkBf8Bf16Op create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, const Properties &properties, ::llvm::ArrayRef<::mlir::NamedAttribute> discardableAttributes = {}); static CvtScaleF32PkBf8Bf16Op create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, const Properties &properties, ::llvm::ArrayRef<::mlir::NamedAttribute> discardableAttributes = {}); ::llvm::LogicalResult verifyInvariantsImpl(); ::llvm::LogicalResult verifyInvariants(); static ::mlir::ParseResult parse(::mlir::OpAsmParser &parser, ::mlir::OperationState &result); void print(::mlir::OpAsmPrinter &_odsPrinter); void getEffects(::llvm::SmallVectorImpl<::mlir::SideEffects::EffectInstance<::mlir::MemoryEffects::Effect>> &effects); private: ::mlir::StringAttr getAttributeNameForIndex(unsigned index) { return getAttributeNameForIndex((*this)->getName(), index); } static ::mlir::StringAttr getAttributeNameForIndex(::mlir::OperationName name, unsigned index) { assert(index < 1 && "invalid attribute index"); assert(name.getStringRef() == getOperationName() && "invalid operation name"); assert(name.isRegistered() && "Operation isn't registered, missing a " "dependent dialect loading?"); return name.getAttributeNames()[index]; } public: }; } // namespace mlir::ROCDL MLIR_DECLARE_EXPLICIT_TYPE_ID(::mlir::ROCDL::CvtScaleF32PkBf8Bf16Op) MLIR_DECLARE_EXPLICIT_TYPE_ID(::mlir::ROCDL::detail::CvtScaleF32PkBf8Bf16OpGenericAdaptorBase::Properties) namespace mlir::ROCDL { //===----------------------------------------------------------------------===// // ::mlir::ROCDL::CvtScaleF32PkBf8F16Op declarations //===----------------------------------------------------------------------===// namespace detail { class CvtScaleF32PkBf8F16OpGenericAdaptorBase { public: struct Properties { using dstLoHiSelTy = ::mlir::IntegerAttr; dstLoHiSelTy dstLoHiSel; auto getDstLoHiSel() const { auto &propStorage = this->dstLoHiSel; return ::llvm::cast<::mlir::IntegerAttr>(propStorage); } void setDstLoHiSel(const ::mlir::IntegerAttr &propValue) { this->dstLoHiSel = propValue; } bool operator==(const Properties &rhs) const { return rhs.dstLoHiSel == this->dstLoHiSel && true; } bool operator!=(const Properties &rhs) const { return !(*this == rhs); } }; protected: ::mlir::DictionaryAttr odsAttrs; ::std::optional<::mlir::OperationName> odsOpName; Properties properties; ::mlir::RegionRange odsRegions; public: CvtScaleF32PkBf8F16OpGenericAdaptorBase(::mlir::DictionaryAttr attrs, const Properties &properties, ::mlir::RegionRange regions = {}) : odsAttrs(attrs), properties(properties), odsRegions(regions) { if (odsAttrs) odsOpName.emplace("rocdl.cvt.scalef32.pk.bf8.f16", odsAttrs.getContext()); } CvtScaleF32PkBf8F16OpGenericAdaptorBase(CvtScaleF32PkBf8F16Op op); std::pair getODSOperandIndexAndLength(unsigned index, unsigned odsOperandsSize) { return {index, 1}; } const Properties &getProperties() { return properties; } ::mlir::DictionaryAttr getAttributes() { return odsAttrs; } ::mlir::IntegerAttr getDstLoHiSelAttr() { auto attr = ::llvm::cast<::mlir::IntegerAttr>(getProperties().dstLoHiSel); return attr; } bool getDstLoHiSel(); }; } // namespace detail template class CvtScaleF32PkBf8F16OpGenericAdaptor : public detail::CvtScaleF32PkBf8F16OpGenericAdaptorBase { using ValueT = ::llvm::detail::ValueOfRange; using Base = detail::CvtScaleF32PkBf8F16OpGenericAdaptorBase; static constexpr int odsIndex_oldVdst = 0; static constexpr int odsIndex_src0 = 1; static constexpr int odsIndex_scale = 2; public: CvtScaleF32PkBf8F16OpGenericAdaptor(RangeT values, ::mlir::DictionaryAttr attrs, const Properties &properties, ::mlir::RegionRange regions = {}) : Base(attrs, properties, regions), odsOperands(values) {} CvtScaleF32PkBf8F16OpGenericAdaptor(RangeT values, ::mlir::DictionaryAttr attrs, ::mlir::PropertyRef properties, ::mlir::RegionRange regions = {}) : CvtScaleF32PkBf8F16OpGenericAdaptor(values, attrs, (properties ? *properties.as() : Properties{}), regions) {} CvtScaleF32PkBf8F16OpGenericAdaptor(RangeT values, ::mlir::DictionaryAttr attrs = nullptr) : CvtScaleF32PkBf8F16OpGenericAdaptor(values, attrs, Properties{}, {}) {} CvtScaleF32PkBf8F16OpGenericAdaptor(RangeT values, const CvtScaleF32PkBf8F16OpGenericAdaptorBase &base) : Base(base), odsOperands(values) {} template >> CvtScaleF32PkBf8F16OpGenericAdaptor(RangeT values, LateInst op) : Base(op), odsOperands(values) {} std::pair getODSOperandIndexAndLength(unsigned index) { return Base::getODSOperandIndexAndLength(index, odsOperands.size()); } RangeT getODSOperands(unsigned index) { auto valueRange = getODSOperandIndexAndLength(index); return {std::next(odsOperands.begin(), valueRange.first), std::next(odsOperands.begin(), valueRange.first + valueRange.second)}; } ValueT getOldVdst() { return (*getODSOperands(0).begin()); } ValueT getSrc0() { return (*getODSOperands(1).begin()); } ValueT getScale() { return (*getODSOperands(2).begin()); } RangeT getOperands() { return odsOperands; } private: RangeT odsOperands; }; class CvtScaleF32PkBf8F16OpAdaptor : public CvtScaleF32PkBf8F16OpGenericAdaptor<::mlir::ValueRange> { public: using CvtScaleF32PkBf8F16OpGenericAdaptor::CvtScaleF32PkBf8F16OpGenericAdaptor; CvtScaleF32PkBf8F16OpAdaptor(CvtScaleF32PkBf8F16Op op); ::llvm::LogicalResult verify(::mlir::Location loc); }; class CvtScaleF32PkBf8F16Op : public ::mlir::Op::Impl, ::mlir::OpTrait::ZeroSuccessors, ::mlir::OpTrait::NOperands<3>::Impl, ::mlir::OpTrait::OpInvariants, ::mlir::BytecodeOpInterface::Trait, ::mlir::ConditionallySpeculatable::Trait, ::mlir::OpTrait::AlwaysSpeculatableImplTrait, ::mlir::MemoryEffectOpInterface::Trait> { public: using Op::Op; using Op::print; using Adaptor = CvtScaleF32PkBf8F16OpAdaptor; template using GenericAdaptor = CvtScaleF32PkBf8F16OpGenericAdaptor; using FoldAdaptor = GenericAdaptor<::llvm::ArrayRef<::mlir::Attribute>>; static constexpr int odsIndex_oldVdst = 0; static constexpr int odsIndex_src0 = 1; static constexpr int odsIndex_scale = 2; using Properties = FoldAdaptor::Properties; static ::llvm::ArrayRef<::llvm::StringRef> getAttributeNames() { static ::llvm::StringRef attrNames[] = {::llvm::StringRef("dstLoHiSel")}; return ::llvm::ArrayRef(attrNames); } ::mlir::StringAttr getDstLoHiSelAttrName() { return getAttributeNameForIndex(0); } static ::mlir::StringAttr getDstLoHiSelAttrName(::mlir::OperationName name) { return getAttributeNameForIndex(name, 0); } static constexpr ::llvm::StringLiteral getOperationName() { return ::llvm::StringLiteral("rocdl.cvt.scalef32.pk.bf8.f16"); } std::pair getODSOperandIndexAndLength(unsigned index) { return {index, 1}; } ::mlir::Operation::operand_range getODSOperands(unsigned index) { auto valueRange = getODSOperandIndexAndLength(index); return {std::next(getOperation()->operand_begin(), valueRange.first), std::next(getOperation()->operand_begin(), valueRange.first + valueRange.second)}; } ::mlir::TypedValue<::mlir::VectorType> getOldVdst() { return ::llvm::cast<::mlir::TypedValue<::mlir::VectorType>>(*getODSOperands(0).begin()); } ::mlir::TypedValue<::mlir::VectorType> getSrc0() { return ::llvm::cast<::mlir::TypedValue<::mlir::VectorType>>(*getODSOperands(1).begin()); } ::mlir::TypedValue<::mlir::FloatType> getScale() { return ::llvm::cast<::mlir::TypedValue<::mlir::FloatType>>(*getODSOperands(2).begin()); } ::mlir::OpOperand &getOldVdstMutable() { auto range = getODSOperandIndexAndLength(0); return getOperation()->getOpOperand(range.first); } ::mlir::OpOperand &getSrc0Mutable() { auto range = getODSOperandIndexAndLength(1); return getOperation()->getOpOperand(range.first); } ::mlir::OpOperand &getScaleMutable() { auto range = getODSOperandIndexAndLength(2); return getOperation()->getOpOperand(range.first); } std::pair getODSResultIndexAndLength(unsigned index) { return {index, 1}; } ::mlir::Operation::result_range getODSResults(unsigned index) { auto valueRange = getODSResultIndexAndLength(index); return {std::next(getOperation()->result_begin(), valueRange.first), std::next(getOperation()->result_begin(), valueRange.first + valueRange.second)}; } ::mlir::TypedValue<::mlir::VectorType> getRes() { return ::llvm::cast<::mlir::TypedValue<::mlir::VectorType>>(*getODSResults(0).begin()); } static ::llvm::LogicalResult setPropertiesFromAttr(Properties &prop, ::mlir::Attribute attr, ::llvm::function_ref<::mlir::InFlightDiagnostic()> emitError); static ::mlir::Attribute getPropertiesAsAttr(::mlir::MLIRContext *ctx, const Properties &prop); static llvm::hash_code computePropertiesHash(const Properties &prop); static std::optional getInherentAttr(::mlir::MLIRContext *ctx, const Properties &prop, llvm::StringRef name); static void setInherentAttr(Properties &prop, llvm::StringRef name, mlir::Attribute value); static void populateInherentAttrs(::mlir::MLIRContext *ctx, const Properties &prop, ::mlir::NamedAttrList &attrs); static ::llvm::LogicalResult verifyInherentAttrs(::mlir::OperationName opName, ::mlir::NamedAttrList &attrs, llvm::function_ref<::mlir::InFlightDiagnostic()> emitError); static ::llvm::LogicalResult readProperties(::mlir::DialectBytecodeReader &reader, ::mlir::OperationState &state); void writeProperties(::mlir::DialectBytecodeWriter &writer); ::mlir::IntegerAttr getDstLoHiSelAttr() { return ::llvm::cast<::mlir::IntegerAttr>(getProperties().dstLoHiSel); } bool getDstLoHiSel(); void setDstLoHiSelAttr(::mlir::IntegerAttr attr) { getProperties().dstLoHiSel = attr; } void setDstLoHiSel(bool attrValue); static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::Type res, ::mlir::Value oldVdst, ::mlir::Value src0, ::mlir::Value scale, ::mlir::IntegerAttr dstLoHiSel); static CvtScaleF32PkBf8F16Op create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::Type res, ::mlir::Value oldVdst, ::mlir::Value src0, ::mlir::Value scale, ::mlir::IntegerAttr dstLoHiSel); static CvtScaleF32PkBf8F16Op create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::Type res, ::mlir::Value oldVdst, ::mlir::Value src0, ::mlir::Value scale, ::mlir::IntegerAttr dstLoHiSel); static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::Value oldVdst, ::mlir::Value src0, ::mlir::Value scale, ::mlir::IntegerAttr dstLoHiSel); static CvtScaleF32PkBf8F16Op create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::Value oldVdst, ::mlir::Value src0, ::mlir::Value scale, ::mlir::IntegerAttr dstLoHiSel); static CvtScaleF32PkBf8F16Op create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::Value oldVdst, ::mlir::Value src0, ::mlir::Value scale, ::mlir::IntegerAttr dstLoHiSel); static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::Type res, ::mlir::Value oldVdst, ::mlir::Value src0, ::mlir::Value scale, bool dstLoHiSel); static CvtScaleF32PkBf8F16Op create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::Type res, ::mlir::Value oldVdst, ::mlir::Value src0, ::mlir::Value scale, bool dstLoHiSel); static CvtScaleF32PkBf8F16Op create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::Type res, ::mlir::Value oldVdst, ::mlir::Value src0, ::mlir::Value scale, bool dstLoHiSel); static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::Value oldVdst, ::mlir::Value src0, ::mlir::Value scale, bool dstLoHiSel); static CvtScaleF32PkBf8F16Op create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::Value oldVdst, ::mlir::Value src0, ::mlir::Value scale, bool dstLoHiSel); static CvtScaleF32PkBf8F16Op create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::Value oldVdst, ::mlir::Value src0, ::mlir::Value scale, bool dstLoHiSel); static void build(::mlir::OpBuilder &, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, ::llvm::ArrayRef<::mlir::NamedAttribute> attributes = {}); static CvtScaleF32PkBf8F16Op create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, ::llvm::ArrayRef<::mlir::NamedAttribute> attributes = {}); static CvtScaleF32PkBf8F16Op create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, ::llvm::ArrayRef<::mlir::NamedAttribute> attributes = {}); static void build(::mlir::OpBuilder &, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, const Properties &properties, ::llvm::ArrayRef<::mlir::NamedAttribute> discardableAttributes = {}); static CvtScaleF32PkBf8F16Op create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, const Properties &properties, ::llvm::ArrayRef<::mlir::NamedAttribute> discardableAttributes = {}); static CvtScaleF32PkBf8F16Op create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, const Properties &properties, ::llvm::ArrayRef<::mlir::NamedAttribute> discardableAttributes = {}); ::llvm::LogicalResult verifyInvariantsImpl(); ::llvm::LogicalResult verifyInvariants(); static ::mlir::ParseResult parse(::mlir::OpAsmParser &parser, ::mlir::OperationState &result); void print(::mlir::OpAsmPrinter &_odsPrinter); void getEffects(::llvm::SmallVectorImpl<::mlir::SideEffects::EffectInstance<::mlir::MemoryEffects::Effect>> &effects); private: ::mlir::StringAttr getAttributeNameForIndex(unsigned index) { return getAttributeNameForIndex((*this)->getName(), index); } static ::mlir::StringAttr getAttributeNameForIndex(::mlir::OperationName name, unsigned index) { assert(index < 1 && "invalid attribute index"); assert(name.getStringRef() == getOperationName() && "invalid operation name"); assert(name.isRegistered() && "Operation isn't registered, missing a " "dependent dialect loading?"); return name.getAttributeNames()[index]; } public: }; } // namespace mlir::ROCDL MLIR_DECLARE_EXPLICIT_TYPE_ID(::mlir::ROCDL::CvtScaleF32PkBf8F16Op) MLIR_DECLARE_EXPLICIT_TYPE_ID(::mlir::ROCDL::detail::CvtScaleF32PkBf8F16OpGenericAdaptorBase::Properties) namespace mlir::ROCDL { //===----------------------------------------------------------------------===// // ::mlir::ROCDL::CvtScaleF32PkBf8F32Op declarations //===----------------------------------------------------------------------===// namespace detail { class CvtScaleF32PkBf8F32OpGenericAdaptorBase { public: struct Properties { using dstLoHiSelTy = ::mlir::IntegerAttr; dstLoHiSelTy dstLoHiSel; auto getDstLoHiSel() const { auto &propStorage = this->dstLoHiSel; return ::llvm::cast<::mlir::IntegerAttr>(propStorage); } void setDstLoHiSel(const ::mlir::IntegerAttr &propValue) { this->dstLoHiSel = propValue; } bool operator==(const Properties &rhs) const { return rhs.dstLoHiSel == this->dstLoHiSel && true; } bool operator!=(const Properties &rhs) const { return !(*this == rhs); } }; protected: ::mlir::DictionaryAttr odsAttrs; ::std::optional<::mlir::OperationName> odsOpName; Properties properties; ::mlir::RegionRange odsRegions; public: CvtScaleF32PkBf8F32OpGenericAdaptorBase(::mlir::DictionaryAttr attrs, const Properties &properties, ::mlir::RegionRange regions = {}) : odsAttrs(attrs), properties(properties), odsRegions(regions) { if (odsAttrs) odsOpName.emplace("rocdl.cvt.scalef32.pk.bf8.f32", odsAttrs.getContext()); } CvtScaleF32PkBf8F32OpGenericAdaptorBase(CvtScaleF32PkBf8F32Op op); std::pair getODSOperandIndexAndLength(unsigned index, unsigned odsOperandsSize) { return {index, 1}; } const Properties &getProperties() { return properties; } ::mlir::DictionaryAttr getAttributes() { return odsAttrs; } ::mlir::IntegerAttr getDstLoHiSelAttr() { auto attr = ::llvm::cast<::mlir::IntegerAttr>(getProperties().dstLoHiSel); return attr; } bool getDstLoHiSel(); }; } // namespace detail template class CvtScaleF32PkBf8F32OpGenericAdaptor : public detail::CvtScaleF32PkBf8F32OpGenericAdaptorBase { using ValueT = ::llvm::detail::ValueOfRange; using Base = detail::CvtScaleF32PkBf8F32OpGenericAdaptorBase; static constexpr int odsIndex_oldVdst = 0; static constexpr int odsIndex_src0 = 1; static constexpr int odsIndex_src1 = 2; static constexpr int odsIndex_scale = 3; public: CvtScaleF32PkBf8F32OpGenericAdaptor(RangeT values, ::mlir::DictionaryAttr attrs, const Properties &properties, ::mlir::RegionRange regions = {}) : Base(attrs, properties, regions), odsOperands(values) {} CvtScaleF32PkBf8F32OpGenericAdaptor(RangeT values, ::mlir::DictionaryAttr attrs, ::mlir::PropertyRef properties, ::mlir::RegionRange regions = {}) : CvtScaleF32PkBf8F32OpGenericAdaptor(values, attrs, (properties ? *properties.as() : Properties{}), regions) {} CvtScaleF32PkBf8F32OpGenericAdaptor(RangeT values, ::mlir::DictionaryAttr attrs = nullptr) : CvtScaleF32PkBf8F32OpGenericAdaptor(values, attrs, Properties{}, {}) {} CvtScaleF32PkBf8F32OpGenericAdaptor(RangeT values, const CvtScaleF32PkBf8F32OpGenericAdaptorBase &base) : Base(base), odsOperands(values) {} template >> CvtScaleF32PkBf8F32OpGenericAdaptor(RangeT values, LateInst op) : Base(op), odsOperands(values) {} std::pair getODSOperandIndexAndLength(unsigned index) { return Base::getODSOperandIndexAndLength(index, odsOperands.size()); } RangeT getODSOperands(unsigned index) { auto valueRange = getODSOperandIndexAndLength(index); return {std::next(odsOperands.begin(), valueRange.first), std::next(odsOperands.begin(), valueRange.first + valueRange.second)}; } ValueT getOldVdst() { return (*getODSOperands(0).begin()); } ValueT getSrc0() { return (*getODSOperands(1).begin()); } ValueT getSrc1() { return (*getODSOperands(2).begin()); } ValueT getScale() { return (*getODSOperands(3).begin()); } RangeT getOperands() { return odsOperands; } private: RangeT odsOperands; }; class CvtScaleF32PkBf8F32OpAdaptor : public CvtScaleF32PkBf8F32OpGenericAdaptor<::mlir::ValueRange> { public: using CvtScaleF32PkBf8F32OpGenericAdaptor::CvtScaleF32PkBf8F32OpGenericAdaptor; CvtScaleF32PkBf8F32OpAdaptor(CvtScaleF32PkBf8F32Op op); ::llvm::LogicalResult verify(::mlir::Location loc); }; class CvtScaleF32PkBf8F32Op : public ::mlir::Op::Impl, ::mlir::OpTrait::ZeroSuccessors, ::mlir::OpTrait::NOperands<4>::Impl, ::mlir::OpTrait::OpInvariants, ::mlir::BytecodeOpInterface::Trait, ::mlir::ConditionallySpeculatable::Trait, ::mlir::OpTrait::AlwaysSpeculatableImplTrait, ::mlir::MemoryEffectOpInterface::Trait> { public: using Op::Op; using Op::print; using Adaptor = CvtScaleF32PkBf8F32OpAdaptor; template using GenericAdaptor = CvtScaleF32PkBf8F32OpGenericAdaptor; using FoldAdaptor = GenericAdaptor<::llvm::ArrayRef<::mlir::Attribute>>; static constexpr int odsIndex_oldVdst = 0; static constexpr int odsIndex_src0 = 1; static constexpr int odsIndex_src1 = 2; static constexpr int odsIndex_scale = 3; using Properties = FoldAdaptor::Properties; static ::llvm::ArrayRef<::llvm::StringRef> getAttributeNames() { static ::llvm::StringRef attrNames[] = {::llvm::StringRef("dstLoHiSel")}; return ::llvm::ArrayRef(attrNames); } ::mlir::StringAttr getDstLoHiSelAttrName() { return getAttributeNameForIndex(0); } static ::mlir::StringAttr getDstLoHiSelAttrName(::mlir::OperationName name) { return getAttributeNameForIndex(name, 0); } static constexpr ::llvm::StringLiteral getOperationName() { return ::llvm::StringLiteral("rocdl.cvt.scalef32.pk.bf8.f32"); } std::pair getODSOperandIndexAndLength(unsigned index) { return {index, 1}; } ::mlir::Operation::operand_range getODSOperands(unsigned index) { auto valueRange = getODSOperandIndexAndLength(index); return {std::next(getOperation()->operand_begin(), valueRange.first), std::next(getOperation()->operand_begin(), valueRange.first + valueRange.second)}; } ::mlir::TypedValue<::mlir::VectorType> getOldVdst() { return ::llvm::cast<::mlir::TypedValue<::mlir::VectorType>>(*getODSOperands(0).begin()); } ::mlir::TypedValue<::mlir::FloatType> getSrc0() { return ::llvm::cast<::mlir::TypedValue<::mlir::FloatType>>(*getODSOperands(1).begin()); } ::mlir::TypedValue<::mlir::FloatType> getSrc1() { return ::llvm::cast<::mlir::TypedValue<::mlir::FloatType>>(*getODSOperands(2).begin()); } ::mlir::TypedValue<::mlir::FloatType> getScale() { return ::llvm::cast<::mlir::TypedValue<::mlir::FloatType>>(*getODSOperands(3).begin()); } ::mlir::OpOperand &getOldVdstMutable() { auto range = getODSOperandIndexAndLength(0); return getOperation()->getOpOperand(range.first); } ::mlir::OpOperand &getSrc0Mutable() { auto range = getODSOperandIndexAndLength(1); return getOperation()->getOpOperand(range.first); } ::mlir::OpOperand &getSrc1Mutable() { auto range = getODSOperandIndexAndLength(2); return getOperation()->getOpOperand(range.first); } ::mlir::OpOperand &getScaleMutable() { auto range = getODSOperandIndexAndLength(3); return getOperation()->getOpOperand(range.first); } std::pair getODSResultIndexAndLength(unsigned index) { return {index, 1}; } ::mlir::Operation::result_range getODSResults(unsigned index) { auto valueRange = getODSResultIndexAndLength(index); return {std::next(getOperation()->result_begin(), valueRange.first), std::next(getOperation()->result_begin(), valueRange.first + valueRange.second)}; } ::mlir::TypedValue<::mlir::VectorType> getRes() { return ::llvm::cast<::mlir::TypedValue<::mlir::VectorType>>(*getODSResults(0).begin()); } static ::llvm::LogicalResult setPropertiesFromAttr(Properties &prop, ::mlir::Attribute attr, ::llvm::function_ref<::mlir::InFlightDiagnostic()> emitError); static ::mlir::Attribute getPropertiesAsAttr(::mlir::MLIRContext *ctx, const Properties &prop); static llvm::hash_code computePropertiesHash(const Properties &prop); static std::optional getInherentAttr(::mlir::MLIRContext *ctx, const Properties &prop, llvm::StringRef name); static void setInherentAttr(Properties &prop, llvm::StringRef name, mlir::Attribute value); static void populateInherentAttrs(::mlir::MLIRContext *ctx, const Properties &prop, ::mlir::NamedAttrList &attrs); static ::llvm::LogicalResult verifyInherentAttrs(::mlir::OperationName opName, ::mlir::NamedAttrList &attrs, llvm::function_ref<::mlir::InFlightDiagnostic()> emitError); static ::llvm::LogicalResult readProperties(::mlir::DialectBytecodeReader &reader, ::mlir::OperationState &state); void writeProperties(::mlir::DialectBytecodeWriter &writer); ::mlir::IntegerAttr getDstLoHiSelAttr() { return ::llvm::cast<::mlir::IntegerAttr>(getProperties().dstLoHiSel); } bool getDstLoHiSel(); void setDstLoHiSelAttr(::mlir::IntegerAttr attr) { getProperties().dstLoHiSel = attr; } void setDstLoHiSel(bool attrValue); static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::Type res, ::mlir::Value oldVdst, ::mlir::Value src0, ::mlir::Value src1, ::mlir::Value scale, ::mlir::IntegerAttr dstLoHiSel); static CvtScaleF32PkBf8F32Op create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::Type res, ::mlir::Value oldVdst, ::mlir::Value src0, ::mlir::Value src1, ::mlir::Value scale, ::mlir::IntegerAttr dstLoHiSel); static CvtScaleF32PkBf8F32Op create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::Type res, ::mlir::Value oldVdst, ::mlir::Value src0, ::mlir::Value src1, ::mlir::Value scale, ::mlir::IntegerAttr dstLoHiSel); static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::Value oldVdst, ::mlir::Value src0, ::mlir::Value src1, ::mlir::Value scale, ::mlir::IntegerAttr dstLoHiSel); static CvtScaleF32PkBf8F32Op create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::Value oldVdst, ::mlir::Value src0, ::mlir::Value src1, ::mlir::Value scale, ::mlir::IntegerAttr dstLoHiSel); static CvtScaleF32PkBf8F32Op create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::Value oldVdst, ::mlir::Value src0, ::mlir::Value src1, ::mlir::Value scale, ::mlir::IntegerAttr dstLoHiSel); static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::Type res, ::mlir::Value oldVdst, ::mlir::Value src0, ::mlir::Value src1, ::mlir::Value scale, bool dstLoHiSel); static CvtScaleF32PkBf8F32Op create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::Type res, ::mlir::Value oldVdst, ::mlir::Value src0, ::mlir::Value src1, ::mlir::Value scale, bool dstLoHiSel); static CvtScaleF32PkBf8F32Op create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::Type res, ::mlir::Value oldVdst, ::mlir::Value src0, ::mlir::Value src1, ::mlir::Value scale, bool dstLoHiSel); static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::Value oldVdst, ::mlir::Value src0, ::mlir::Value src1, ::mlir::Value scale, bool dstLoHiSel); static CvtScaleF32PkBf8F32Op create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::Value oldVdst, ::mlir::Value src0, ::mlir::Value src1, ::mlir::Value scale, bool dstLoHiSel); static CvtScaleF32PkBf8F32Op create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::Value oldVdst, ::mlir::Value src0, ::mlir::Value src1, ::mlir::Value scale, bool dstLoHiSel); static void build(::mlir::OpBuilder &, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, ::llvm::ArrayRef<::mlir::NamedAttribute> attributes = {}); static CvtScaleF32PkBf8F32Op create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, ::llvm::ArrayRef<::mlir::NamedAttribute> attributes = {}); static CvtScaleF32PkBf8F32Op create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, ::llvm::ArrayRef<::mlir::NamedAttribute> attributes = {}); static void build(::mlir::OpBuilder &, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, const Properties &properties, ::llvm::ArrayRef<::mlir::NamedAttribute> discardableAttributes = {}); static CvtScaleF32PkBf8F32Op create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, const Properties &properties, ::llvm::ArrayRef<::mlir::NamedAttribute> discardableAttributes = {}); static CvtScaleF32PkBf8F32Op create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, const Properties &properties, ::llvm::ArrayRef<::mlir::NamedAttribute> discardableAttributes = {}); ::llvm::LogicalResult verifyInvariantsImpl(); ::llvm::LogicalResult verifyInvariants(); static ::mlir::ParseResult parse(::mlir::OpAsmParser &parser, ::mlir::OperationState &result); void print(::mlir::OpAsmPrinter &_odsPrinter); void getEffects(::llvm::SmallVectorImpl<::mlir::SideEffects::EffectInstance<::mlir::MemoryEffects::Effect>> &effects); private: ::mlir::StringAttr getAttributeNameForIndex(unsigned index) { return getAttributeNameForIndex((*this)->getName(), index); } static ::mlir::StringAttr getAttributeNameForIndex(::mlir::OperationName name, unsigned index) { assert(index < 1 && "invalid attribute index"); assert(name.getStringRef() == getOperationName() && "invalid operation name"); assert(name.isRegistered() && "Operation isn't registered, missing a " "dependent dialect loading?"); return name.getAttributeNames()[index]; } public: }; } // namespace mlir::ROCDL MLIR_DECLARE_EXPLICIT_TYPE_ID(::mlir::ROCDL::CvtScaleF32PkBf8F32Op) MLIR_DECLARE_EXPLICIT_TYPE_ID(::mlir::ROCDL::detail::CvtScaleF32PkBf8F32OpGenericAdaptorBase::Properties) namespace mlir::ROCDL { //===----------------------------------------------------------------------===// // ::mlir::ROCDL::CvtScaleF32PkF16Bf8Op declarations //===----------------------------------------------------------------------===// namespace detail { class CvtScaleF32PkF16Bf8OpGenericAdaptorBase { public: struct Properties { using srcLoHiSelTy = ::mlir::IntegerAttr; srcLoHiSelTy srcLoHiSel; auto getSrcLoHiSel() const { auto &propStorage = this->srcLoHiSel; return ::llvm::cast<::mlir::IntegerAttr>(propStorage); } void setSrcLoHiSel(const ::mlir::IntegerAttr &propValue) { this->srcLoHiSel = propValue; } bool operator==(const Properties &rhs) const { return rhs.srcLoHiSel == this->srcLoHiSel && true; } bool operator!=(const Properties &rhs) const { return !(*this == rhs); } }; protected: ::mlir::DictionaryAttr odsAttrs; ::std::optional<::mlir::OperationName> odsOpName; Properties properties; ::mlir::RegionRange odsRegions; public: CvtScaleF32PkF16Bf8OpGenericAdaptorBase(::mlir::DictionaryAttr attrs, const Properties &properties, ::mlir::RegionRange regions = {}) : odsAttrs(attrs), properties(properties), odsRegions(regions) { if (odsAttrs) odsOpName.emplace("rocdl.cvt.scalef32.pk.f16.bf8", odsAttrs.getContext()); } CvtScaleF32PkF16Bf8OpGenericAdaptorBase(CvtScaleF32PkF16Bf8Op op); std::pair getODSOperandIndexAndLength(unsigned index, unsigned odsOperandsSize) { return {index, 1}; } const Properties &getProperties() { return properties; } ::mlir::DictionaryAttr getAttributes() { return odsAttrs; } ::mlir::IntegerAttr getSrcLoHiSelAttr() { auto attr = ::llvm::cast<::mlir::IntegerAttr>(getProperties().srcLoHiSel); return attr; } bool getSrcLoHiSel(); }; } // namespace detail template class CvtScaleF32PkF16Bf8OpGenericAdaptor : public detail::CvtScaleF32PkF16Bf8OpGenericAdaptorBase { using ValueT = ::llvm::detail::ValueOfRange; using Base = detail::CvtScaleF32PkF16Bf8OpGenericAdaptorBase; static constexpr int odsIndex_src = 0; static constexpr int odsIndex_scale = 1; public: CvtScaleF32PkF16Bf8OpGenericAdaptor(RangeT values, ::mlir::DictionaryAttr attrs, const Properties &properties, ::mlir::RegionRange regions = {}) : Base(attrs, properties, regions), odsOperands(values) {} CvtScaleF32PkF16Bf8OpGenericAdaptor(RangeT values, ::mlir::DictionaryAttr attrs, ::mlir::PropertyRef properties, ::mlir::RegionRange regions = {}) : CvtScaleF32PkF16Bf8OpGenericAdaptor(values, attrs, (properties ? *properties.as() : Properties{}), regions) {} CvtScaleF32PkF16Bf8OpGenericAdaptor(RangeT values, ::mlir::DictionaryAttr attrs = nullptr) : CvtScaleF32PkF16Bf8OpGenericAdaptor(values, attrs, Properties{}, {}) {} CvtScaleF32PkF16Bf8OpGenericAdaptor(RangeT values, const CvtScaleF32PkF16Bf8OpGenericAdaptorBase &base) : Base(base), odsOperands(values) {} template >> CvtScaleF32PkF16Bf8OpGenericAdaptor(RangeT values, LateInst op) : Base(op), odsOperands(values) {} std::pair getODSOperandIndexAndLength(unsigned index) { return Base::getODSOperandIndexAndLength(index, odsOperands.size()); } RangeT getODSOperands(unsigned index) { auto valueRange = getODSOperandIndexAndLength(index); return {std::next(odsOperands.begin(), valueRange.first), std::next(odsOperands.begin(), valueRange.first + valueRange.second)}; } ValueT getSrc() { return (*getODSOperands(0).begin()); } ValueT getScale() { return (*getODSOperands(1).begin()); } RangeT getOperands() { return odsOperands; } private: RangeT odsOperands; }; class CvtScaleF32PkF16Bf8OpAdaptor : public CvtScaleF32PkF16Bf8OpGenericAdaptor<::mlir::ValueRange> { public: using CvtScaleF32PkF16Bf8OpGenericAdaptor::CvtScaleF32PkF16Bf8OpGenericAdaptor; CvtScaleF32PkF16Bf8OpAdaptor(CvtScaleF32PkF16Bf8Op op); ::llvm::LogicalResult verify(::mlir::Location loc); }; class CvtScaleF32PkF16Bf8Op : public ::mlir::Op::Impl, ::mlir::OpTrait::ZeroSuccessors, ::mlir::OpTrait::NOperands<2>::Impl, ::mlir::OpTrait::OpInvariants, ::mlir::BytecodeOpInterface::Trait, ::mlir::ConditionallySpeculatable::Trait, ::mlir::OpTrait::AlwaysSpeculatableImplTrait, ::mlir::MemoryEffectOpInterface::Trait> { public: using Op::Op; using Op::print; using Adaptor = CvtScaleF32PkF16Bf8OpAdaptor; template using GenericAdaptor = CvtScaleF32PkF16Bf8OpGenericAdaptor; using FoldAdaptor = GenericAdaptor<::llvm::ArrayRef<::mlir::Attribute>>; static constexpr int odsIndex_src = 0; static constexpr int odsIndex_scale = 1; using Properties = FoldAdaptor::Properties; static ::llvm::ArrayRef<::llvm::StringRef> getAttributeNames() { static ::llvm::StringRef attrNames[] = {::llvm::StringRef("srcLoHiSel")}; return ::llvm::ArrayRef(attrNames); } ::mlir::StringAttr getSrcLoHiSelAttrName() { return getAttributeNameForIndex(0); } static ::mlir::StringAttr getSrcLoHiSelAttrName(::mlir::OperationName name) { return getAttributeNameForIndex(name, 0); } static constexpr ::llvm::StringLiteral getOperationName() { return ::llvm::StringLiteral("rocdl.cvt.scalef32.pk.f16.bf8"); } std::pair getODSOperandIndexAndLength(unsigned index) { return {index, 1}; } ::mlir::Operation::operand_range getODSOperands(unsigned index) { auto valueRange = getODSOperandIndexAndLength(index); return {std::next(getOperation()->operand_begin(), valueRange.first), std::next(getOperation()->operand_begin(), valueRange.first + valueRange.second)}; } ::mlir::TypedValue<::mlir::IntegerType> getSrc() { return ::llvm::cast<::mlir::TypedValue<::mlir::IntegerType>>(*getODSOperands(0).begin()); } ::mlir::TypedValue<::mlir::FloatType> getScale() { return ::llvm::cast<::mlir::TypedValue<::mlir::FloatType>>(*getODSOperands(1).begin()); } ::mlir::OpOperand &getSrcMutable() { auto range = getODSOperandIndexAndLength(0); return getOperation()->getOpOperand(range.first); } ::mlir::OpOperand &getScaleMutable() { auto range = getODSOperandIndexAndLength(1); return getOperation()->getOpOperand(range.first); } std::pair getODSResultIndexAndLength(unsigned index) { return {index, 1}; } ::mlir::Operation::result_range getODSResults(unsigned index) { auto valueRange = getODSResultIndexAndLength(index); return {std::next(getOperation()->result_begin(), valueRange.first), std::next(getOperation()->result_begin(), valueRange.first + valueRange.second)}; } ::mlir::TypedValue<::mlir::VectorType> getRes() { return ::llvm::cast<::mlir::TypedValue<::mlir::VectorType>>(*getODSResults(0).begin()); } static ::llvm::LogicalResult setPropertiesFromAttr(Properties &prop, ::mlir::Attribute attr, ::llvm::function_ref<::mlir::InFlightDiagnostic()> emitError); static ::mlir::Attribute getPropertiesAsAttr(::mlir::MLIRContext *ctx, const Properties &prop); static llvm::hash_code computePropertiesHash(const Properties &prop); static std::optional getInherentAttr(::mlir::MLIRContext *ctx, const Properties &prop, llvm::StringRef name); static void setInherentAttr(Properties &prop, llvm::StringRef name, mlir::Attribute value); static void populateInherentAttrs(::mlir::MLIRContext *ctx, const Properties &prop, ::mlir::NamedAttrList &attrs); static ::llvm::LogicalResult verifyInherentAttrs(::mlir::OperationName opName, ::mlir::NamedAttrList &attrs, llvm::function_ref<::mlir::InFlightDiagnostic()> emitError); static ::llvm::LogicalResult readProperties(::mlir::DialectBytecodeReader &reader, ::mlir::OperationState &state); void writeProperties(::mlir::DialectBytecodeWriter &writer); ::mlir::IntegerAttr getSrcLoHiSelAttr() { return ::llvm::cast<::mlir::IntegerAttr>(getProperties().srcLoHiSel); } bool getSrcLoHiSel(); void setSrcLoHiSelAttr(::mlir::IntegerAttr attr) { getProperties().srcLoHiSel = attr; } void setSrcLoHiSel(bool attrValue); static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::Type res, ::mlir::Value src, ::mlir::Value scale, ::mlir::IntegerAttr srcLoHiSel); static CvtScaleF32PkF16Bf8Op create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::Type res, ::mlir::Value src, ::mlir::Value scale, ::mlir::IntegerAttr srcLoHiSel); static CvtScaleF32PkF16Bf8Op create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::Type res, ::mlir::Value src, ::mlir::Value scale, ::mlir::IntegerAttr srcLoHiSel); static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::Value src, ::mlir::Value scale, ::mlir::IntegerAttr srcLoHiSel); static CvtScaleF32PkF16Bf8Op create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::Value src, ::mlir::Value scale, ::mlir::IntegerAttr srcLoHiSel); static CvtScaleF32PkF16Bf8Op create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::Value src, ::mlir::Value scale, ::mlir::IntegerAttr srcLoHiSel); static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::Type res, ::mlir::Value src, ::mlir::Value scale, bool srcLoHiSel); static CvtScaleF32PkF16Bf8Op create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::Type res, ::mlir::Value src, ::mlir::Value scale, bool srcLoHiSel); static CvtScaleF32PkF16Bf8Op create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::Type res, ::mlir::Value src, ::mlir::Value scale, bool srcLoHiSel); static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::Value src, ::mlir::Value scale, bool srcLoHiSel); static CvtScaleF32PkF16Bf8Op create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::Value src, ::mlir::Value scale, bool srcLoHiSel); static CvtScaleF32PkF16Bf8Op create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::Value src, ::mlir::Value scale, bool srcLoHiSel); static void build(::mlir::OpBuilder &, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, ::llvm::ArrayRef<::mlir::NamedAttribute> attributes = {}); static CvtScaleF32PkF16Bf8Op create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, ::llvm::ArrayRef<::mlir::NamedAttribute> attributes = {}); static CvtScaleF32PkF16Bf8Op create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, ::llvm::ArrayRef<::mlir::NamedAttribute> attributes = {}); static void build(::mlir::OpBuilder &, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, const Properties &properties, ::llvm::ArrayRef<::mlir::NamedAttribute> discardableAttributes = {}); static CvtScaleF32PkF16Bf8Op create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, const Properties &properties, ::llvm::ArrayRef<::mlir::NamedAttribute> discardableAttributes = {}); static CvtScaleF32PkF16Bf8Op create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, const Properties &properties, ::llvm::ArrayRef<::mlir::NamedAttribute> discardableAttributes = {}); ::llvm::LogicalResult verifyInvariantsImpl(); ::llvm::LogicalResult verifyInvariants(); static ::mlir::ParseResult parse(::mlir::OpAsmParser &parser, ::mlir::OperationState &result); void print(::mlir::OpAsmPrinter &_odsPrinter); void getEffects(::llvm::SmallVectorImpl<::mlir::SideEffects::EffectInstance<::mlir::MemoryEffects::Effect>> &effects); private: ::mlir::StringAttr getAttributeNameForIndex(unsigned index) { return getAttributeNameForIndex((*this)->getName(), index); } static ::mlir::StringAttr getAttributeNameForIndex(::mlir::OperationName name, unsigned index) { assert(index < 1 && "invalid attribute index"); assert(name.getStringRef() == getOperationName() && "invalid operation name"); assert(name.isRegistered() && "Operation isn't registered, missing a " "dependent dialect loading?"); return name.getAttributeNames()[index]; } public: }; } // namespace mlir::ROCDL MLIR_DECLARE_EXPLICIT_TYPE_ID(::mlir::ROCDL::CvtScaleF32PkF16Bf8Op) MLIR_DECLARE_EXPLICIT_TYPE_ID(::mlir::ROCDL::detail::CvtScaleF32PkF16Bf8OpGenericAdaptorBase::Properties) namespace mlir::ROCDL { //===----------------------------------------------------------------------===// // ::mlir::ROCDL::CvtScaleF32PkF16Fp4Op declarations //===----------------------------------------------------------------------===// namespace detail { class CvtScaleF32PkF16Fp4OpGenericAdaptorBase { public: struct Properties { using srcSelIndexTy = ::mlir::IntegerAttr; srcSelIndexTy srcSelIndex; auto getSrcSelIndex() const { auto &propStorage = this->srcSelIndex; return ::llvm::cast<::mlir::IntegerAttr>(propStorage); } void setSrcSelIndex(const ::mlir::IntegerAttr &propValue) { this->srcSelIndex = propValue; } bool operator==(const Properties &rhs) const { return rhs.srcSelIndex == this->srcSelIndex && true; } bool operator!=(const Properties &rhs) const { return !(*this == rhs); } }; protected: ::mlir::DictionaryAttr odsAttrs; ::std::optional<::mlir::OperationName> odsOpName; Properties properties; ::mlir::RegionRange odsRegions; public: CvtScaleF32PkF16Fp4OpGenericAdaptorBase(::mlir::DictionaryAttr attrs, const Properties &properties, ::mlir::RegionRange regions = {}) : odsAttrs(attrs), properties(properties), odsRegions(regions) { if (odsAttrs) odsOpName.emplace("rocdl.cvt.scalef32.pk.f16.fp4", odsAttrs.getContext()); } CvtScaleF32PkF16Fp4OpGenericAdaptorBase(CvtScaleF32PkF16Fp4Op op); std::pair getODSOperandIndexAndLength(unsigned index, unsigned odsOperandsSize) { return {index, 1}; } const Properties &getProperties() { return properties; } ::mlir::DictionaryAttr getAttributes() { return odsAttrs; } ::mlir::IntegerAttr getSrcSelIndexAttr() { auto attr = ::llvm::cast<::mlir::IntegerAttr>(getProperties().srcSelIndex); return attr; } uint32_t getSrcSelIndex(); }; } // namespace detail template class CvtScaleF32PkF16Fp4OpGenericAdaptor : public detail::CvtScaleF32PkF16Fp4OpGenericAdaptorBase { using ValueT = ::llvm::detail::ValueOfRange; using Base = detail::CvtScaleF32PkF16Fp4OpGenericAdaptorBase; static constexpr int odsIndex_src = 0; static constexpr int odsIndex_scale = 1; public: CvtScaleF32PkF16Fp4OpGenericAdaptor(RangeT values, ::mlir::DictionaryAttr attrs, const Properties &properties, ::mlir::RegionRange regions = {}) : Base(attrs, properties, regions), odsOperands(values) {} CvtScaleF32PkF16Fp4OpGenericAdaptor(RangeT values, ::mlir::DictionaryAttr attrs, ::mlir::PropertyRef properties, ::mlir::RegionRange regions = {}) : CvtScaleF32PkF16Fp4OpGenericAdaptor(values, attrs, (properties ? *properties.as() : Properties{}), regions) {} CvtScaleF32PkF16Fp4OpGenericAdaptor(RangeT values, ::mlir::DictionaryAttr attrs = nullptr) : CvtScaleF32PkF16Fp4OpGenericAdaptor(values, attrs, Properties{}, {}) {} CvtScaleF32PkF16Fp4OpGenericAdaptor(RangeT values, const CvtScaleF32PkF16Fp4OpGenericAdaptorBase &base) : Base(base), odsOperands(values) {} template >> CvtScaleF32PkF16Fp4OpGenericAdaptor(RangeT values, LateInst op) : Base(op), odsOperands(values) {} std::pair getODSOperandIndexAndLength(unsigned index) { return Base::getODSOperandIndexAndLength(index, odsOperands.size()); } RangeT getODSOperands(unsigned index) { auto valueRange = getODSOperandIndexAndLength(index); return {std::next(odsOperands.begin(), valueRange.first), std::next(odsOperands.begin(), valueRange.first + valueRange.second)}; } ValueT getSrc() { return (*getODSOperands(0).begin()); } ValueT getScale() { return (*getODSOperands(1).begin()); } RangeT getOperands() { return odsOperands; } private: RangeT odsOperands; }; class CvtScaleF32PkF16Fp4OpAdaptor : public CvtScaleF32PkF16Fp4OpGenericAdaptor<::mlir::ValueRange> { public: using CvtScaleF32PkF16Fp4OpGenericAdaptor::CvtScaleF32PkF16Fp4OpGenericAdaptor; CvtScaleF32PkF16Fp4OpAdaptor(CvtScaleF32PkF16Fp4Op op); ::llvm::LogicalResult verify(::mlir::Location loc); }; class CvtScaleF32PkF16Fp4Op : public ::mlir::Op::Impl, ::mlir::OpTrait::ZeroSuccessors, ::mlir::OpTrait::NOperands<2>::Impl, ::mlir::OpTrait::OpInvariants, ::mlir::BytecodeOpInterface::Trait, ::mlir::ConditionallySpeculatable::Trait, ::mlir::OpTrait::AlwaysSpeculatableImplTrait, ::mlir::MemoryEffectOpInterface::Trait> { public: using Op::Op; using Op::print; using Adaptor = CvtScaleF32PkF16Fp4OpAdaptor; template using GenericAdaptor = CvtScaleF32PkF16Fp4OpGenericAdaptor; using FoldAdaptor = GenericAdaptor<::llvm::ArrayRef<::mlir::Attribute>>; static constexpr int odsIndex_src = 0; static constexpr int odsIndex_scale = 1; using Properties = FoldAdaptor::Properties; static ::llvm::ArrayRef<::llvm::StringRef> getAttributeNames() { static ::llvm::StringRef attrNames[] = {::llvm::StringRef("srcSelIndex")}; return ::llvm::ArrayRef(attrNames); } ::mlir::StringAttr getSrcSelIndexAttrName() { return getAttributeNameForIndex(0); } static ::mlir::StringAttr getSrcSelIndexAttrName(::mlir::OperationName name) { return getAttributeNameForIndex(name, 0); } static constexpr ::llvm::StringLiteral getOperationName() { return ::llvm::StringLiteral("rocdl.cvt.scalef32.pk.f16.fp4"); } std::pair getODSOperandIndexAndLength(unsigned index) { return {index, 1}; } ::mlir::Operation::operand_range getODSOperands(unsigned index) { auto valueRange = getODSOperandIndexAndLength(index); return {std::next(getOperation()->operand_begin(), valueRange.first), std::next(getOperation()->operand_begin(), valueRange.first + valueRange.second)}; } ::mlir::TypedValue<::mlir::IntegerType> getSrc() { return ::llvm::cast<::mlir::TypedValue<::mlir::IntegerType>>(*getODSOperands(0).begin()); } ::mlir::TypedValue<::mlir::FloatType> getScale() { return ::llvm::cast<::mlir::TypedValue<::mlir::FloatType>>(*getODSOperands(1).begin()); } ::mlir::OpOperand &getSrcMutable() { auto range = getODSOperandIndexAndLength(0); return getOperation()->getOpOperand(range.first); } ::mlir::OpOperand &getScaleMutable() { auto range = getODSOperandIndexAndLength(1); return getOperation()->getOpOperand(range.first); } std::pair getODSResultIndexAndLength(unsigned index) { return {index, 1}; } ::mlir::Operation::result_range getODSResults(unsigned index) { auto valueRange = getODSResultIndexAndLength(index); return {std::next(getOperation()->result_begin(), valueRange.first), std::next(getOperation()->result_begin(), valueRange.first + valueRange.second)}; } ::mlir::TypedValue<::mlir::VectorType> getRes() { return ::llvm::cast<::mlir::TypedValue<::mlir::VectorType>>(*getODSResults(0).begin()); } static ::llvm::LogicalResult setPropertiesFromAttr(Properties &prop, ::mlir::Attribute attr, ::llvm::function_ref<::mlir::InFlightDiagnostic()> emitError); static ::mlir::Attribute getPropertiesAsAttr(::mlir::MLIRContext *ctx, const Properties &prop); static llvm::hash_code computePropertiesHash(const Properties &prop); static std::optional getInherentAttr(::mlir::MLIRContext *ctx, const Properties &prop, llvm::StringRef name); static void setInherentAttr(Properties &prop, llvm::StringRef name, mlir::Attribute value); static void populateInherentAttrs(::mlir::MLIRContext *ctx, const Properties &prop, ::mlir::NamedAttrList &attrs); static ::llvm::LogicalResult verifyInherentAttrs(::mlir::OperationName opName, ::mlir::NamedAttrList &attrs, llvm::function_ref<::mlir::InFlightDiagnostic()> emitError); static ::llvm::LogicalResult readProperties(::mlir::DialectBytecodeReader &reader, ::mlir::OperationState &state); void writeProperties(::mlir::DialectBytecodeWriter &writer); ::mlir::IntegerAttr getSrcSelIndexAttr() { return ::llvm::cast<::mlir::IntegerAttr>(getProperties().srcSelIndex); } uint32_t getSrcSelIndex(); void setSrcSelIndexAttr(::mlir::IntegerAttr attr) { getProperties().srcSelIndex = attr; } void setSrcSelIndex(uint32_t attrValue); static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::Type res, ::mlir::Value src, ::mlir::Value scale, ::mlir::IntegerAttr srcSelIndex); static CvtScaleF32PkF16Fp4Op create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::Type res, ::mlir::Value src, ::mlir::Value scale, ::mlir::IntegerAttr srcSelIndex); static CvtScaleF32PkF16Fp4Op create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::Type res, ::mlir::Value src, ::mlir::Value scale, ::mlir::IntegerAttr srcSelIndex); static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::Value src, ::mlir::Value scale, ::mlir::IntegerAttr srcSelIndex); static CvtScaleF32PkF16Fp4Op create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::Value src, ::mlir::Value scale, ::mlir::IntegerAttr srcSelIndex); static CvtScaleF32PkF16Fp4Op create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::Value src, ::mlir::Value scale, ::mlir::IntegerAttr srcSelIndex); static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::Type res, ::mlir::Value src, ::mlir::Value scale, uint32_t srcSelIndex); static CvtScaleF32PkF16Fp4Op create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::Type res, ::mlir::Value src, ::mlir::Value scale, uint32_t srcSelIndex); static CvtScaleF32PkF16Fp4Op create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::Type res, ::mlir::Value src, ::mlir::Value scale, uint32_t srcSelIndex); static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::Value src, ::mlir::Value scale, uint32_t srcSelIndex); static CvtScaleF32PkF16Fp4Op create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::Value src, ::mlir::Value scale, uint32_t srcSelIndex); static CvtScaleF32PkF16Fp4Op create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::Value src, ::mlir::Value scale, uint32_t srcSelIndex); static void build(::mlir::OpBuilder &, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, ::llvm::ArrayRef<::mlir::NamedAttribute> attributes = {}); static CvtScaleF32PkF16Fp4Op create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, ::llvm::ArrayRef<::mlir::NamedAttribute> attributes = {}); static CvtScaleF32PkF16Fp4Op create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, ::llvm::ArrayRef<::mlir::NamedAttribute> attributes = {}); static void build(::mlir::OpBuilder &, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, const Properties &properties, ::llvm::ArrayRef<::mlir::NamedAttribute> discardableAttributes = {}); static CvtScaleF32PkF16Fp4Op create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, const Properties &properties, ::llvm::ArrayRef<::mlir::NamedAttribute> discardableAttributes = {}); static CvtScaleF32PkF16Fp4Op create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, const Properties &properties, ::llvm::ArrayRef<::mlir::NamedAttribute> discardableAttributes = {}); ::llvm::LogicalResult verifyInvariantsImpl(); ::llvm::LogicalResult verifyInvariants(); static ::mlir::ParseResult parse(::mlir::OpAsmParser &parser, ::mlir::OperationState &result); void print(::mlir::OpAsmPrinter &_odsPrinter); void getEffects(::llvm::SmallVectorImpl<::mlir::SideEffects::EffectInstance<::mlir::MemoryEffects::Effect>> &effects); private: ::mlir::StringAttr getAttributeNameForIndex(unsigned index) { return getAttributeNameForIndex((*this)->getName(), index); } static ::mlir::StringAttr getAttributeNameForIndex(::mlir::OperationName name, unsigned index) { assert(index < 1 && "invalid attribute index"); assert(name.getStringRef() == getOperationName() && "invalid operation name"); assert(name.isRegistered() && "Operation isn't registered, missing a " "dependent dialect loading?"); return name.getAttributeNames()[index]; } public: }; } // namespace mlir::ROCDL MLIR_DECLARE_EXPLICIT_TYPE_ID(::mlir::ROCDL::CvtScaleF32PkF16Fp4Op) MLIR_DECLARE_EXPLICIT_TYPE_ID(::mlir::ROCDL::detail::CvtScaleF32PkF16Fp4OpGenericAdaptorBase::Properties) namespace mlir::ROCDL { //===----------------------------------------------------------------------===// // ::mlir::ROCDL::CvtScaleF32PkF16Fp8Op declarations //===----------------------------------------------------------------------===// namespace detail { class CvtScaleF32PkF16Fp8OpGenericAdaptorBase { public: struct Properties { using srcLoHiSelTy = ::mlir::IntegerAttr; srcLoHiSelTy srcLoHiSel; auto getSrcLoHiSel() const { auto &propStorage = this->srcLoHiSel; return ::llvm::cast<::mlir::IntegerAttr>(propStorage); } void setSrcLoHiSel(const ::mlir::IntegerAttr &propValue) { this->srcLoHiSel = propValue; } bool operator==(const Properties &rhs) const { return rhs.srcLoHiSel == this->srcLoHiSel && true; } bool operator!=(const Properties &rhs) const { return !(*this == rhs); } }; protected: ::mlir::DictionaryAttr odsAttrs; ::std::optional<::mlir::OperationName> odsOpName; Properties properties; ::mlir::RegionRange odsRegions; public: CvtScaleF32PkF16Fp8OpGenericAdaptorBase(::mlir::DictionaryAttr attrs, const Properties &properties, ::mlir::RegionRange regions = {}) : odsAttrs(attrs), properties(properties), odsRegions(regions) { if (odsAttrs) odsOpName.emplace("rocdl.cvt.scalef32.pk.f16.fp8", odsAttrs.getContext()); } CvtScaleF32PkF16Fp8OpGenericAdaptorBase(CvtScaleF32PkF16Fp8Op op); std::pair getODSOperandIndexAndLength(unsigned index, unsigned odsOperandsSize) { return {index, 1}; } const Properties &getProperties() { return properties; } ::mlir::DictionaryAttr getAttributes() { return odsAttrs; } ::mlir::IntegerAttr getSrcLoHiSelAttr() { auto attr = ::llvm::cast<::mlir::IntegerAttr>(getProperties().srcLoHiSel); return attr; } bool getSrcLoHiSel(); }; } // namespace detail template class CvtScaleF32PkF16Fp8OpGenericAdaptor : public detail::CvtScaleF32PkF16Fp8OpGenericAdaptorBase { using ValueT = ::llvm::detail::ValueOfRange; using Base = detail::CvtScaleF32PkF16Fp8OpGenericAdaptorBase; static constexpr int odsIndex_src = 0; static constexpr int odsIndex_scale = 1; public: CvtScaleF32PkF16Fp8OpGenericAdaptor(RangeT values, ::mlir::DictionaryAttr attrs, const Properties &properties, ::mlir::RegionRange regions = {}) : Base(attrs, properties, regions), odsOperands(values) {} CvtScaleF32PkF16Fp8OpGenericAdaptor(RangeT values, ::mlir::DictionaryAttr attrs, ::mlir::PropertyRef properties, ::mlir::RegionRange regions = {}) : CvtScaleF32PkF16Fp8OpGenericAdaptor(values, attrs, (properties ? *properties.as() : Properties{}), regions) {} CvtScaleF32PkF16Fp8OpGenericAdaptor(RangeT values, ::mlir::DictionaryAttr attrs = nullptr) : CvtScaleF32PkF16Fp8OpGenericAdaptor(values, attrs, Properties{}, {}) {} CvtScaleF32PkF16Fp8OpGenericAdaptor(RangeT values, const CvtScaleF32PkF16Fp8OpGenericAdaptorBase &base) : Base(base), odsOperands(values) {} template >> CvtScaleF32PkF16Fp8OpGenericAdaptor(RangeT values, LateInst op) : Base(op), odsOperands(values) {} std::pair getODSOperandIndexAndLength(unsigned index) { return Base::getODSOperandIndexAndLength(index, odsOperands.size()); } RangeT getODSOperands(unsigned index) { auto valueRange = getODSOperandIndexAndLength(index); return {std::next(odsOperands.begin(), valueRange.first), std::next(odsOperands.begin(), valueRange.first + valueRange.second)}; } ValueT getSrc() { return (*getODSOperands(0).begin()); } ValueT getScale() { return (*getODSOperands(1).begin()); } RangeT getOperands() { return odsOperands; } private: RangeT odsOperands; }; class CvtScaleF32PkF16Fp8OpAdaptor : public CvtScaleF32PkF16Fp8OpGenericAdaptor<::mlir::ValueRange> { public: using CvtScaleF32PkF16Fp8OpGenericAdaptor::CvtScaleF32PkF16Fp8OpGenericAdaptor; CvtScaleF32PkF16Fp8OpAdaptor(CvtScaleF32PkF16Fp8Op op); ::llvm::LogicalResult verify(::mlir::Location loc); }; class CvtScaleF32PkF16Fp8Op : public ::mlir::Op::Impl, ::mlir::OpTrait::ZeroSuccessors, ::mlir::OpTrait::NOperands<2>::Impl, ::mlir::OpTrait::OpInvariants, ::mlir::BytecodeOpInterface::Trait, ::mlir::ConditionallySpeculatable::Trait, ::mlir::OpTrait::AlwaysSpeculatableImplTrait, ::mlir::MemoryEffectOpInterface::Trait> { public: using Op::Op; using Op::print; using Adaptor = CvtScaleF32PkF16Fp8OpAdaptor; template using GenericAdaptor = CvtScaleF32PkF16Fp8OpGenericAdaptor; using FoldAdaptor = GenericAdaptor<::llvm::ArrayRef<::mlir::Attribute>>; static constexpr int odsIndex_src = 0; static constexpr int odsIndex_scale = 1; using Properties = FoldAdaptor::Properties; static ::llvm::ArrayRef<::llvm::StringRef> getAttributeNames() { static ::llvm::StringRef attrNames[] = {::llvm::StringRef("srcLoHiSel")}; return ::llvm::ArrayRef(attrNames); } ::mlir::StringAttr getSrcLoHiSelAttrName() { return getAttributeNameForIndex(0); } static ::mlir::StringAttr getSrcLoHiSelAttrName(::mlir::OperationName name) { return getAttributeNameForIndex(name, 0); } static constexpr ::llvm::StringLiteral getOperationName() { return ::llvm::StringLiteral("rocdl.cvt.scalef32.pk.f16.fp8"); } std::pair getODSOperandIndexAndLength(unsigned index) { return {index, 1}; } ::mlir::Operation::operand_range getODSOperands(unsigned index) { auto valueRange = getODSOperandIndexAndLength(index); return {std::next(getOperation()->operand_begin(), valueRange.first), std::next(getOperation()->operand_begin(), valueRange.first + valueRange.second)}; } ::mlir::TypedValue<::mlir::IntegerType> getSrc() { return ::llvm::cast<::mlir::TypedValue<::mlir::IntegerType>>(*getODSOperands(0).begin()); } ::mlir::TypedValue<::mlir::FloatType> getScale() { return ::llvm::cast<::mlir::TypedValue<::mlir::FloatType>>(*getODSOperands(1).begin()); } ::mlir::OpOperand &getSrcMutable() { auto range = getODSOperandIndexAndLength(0); return getOperation()->getOpOperand(range.first); } ::mlir::OpOperand &getScaleMutable() { auto range = getODSOperandIndexAndLength(1); return getOperation()->getOpOperand(range.first); } std::pair getODSResultIndexAndLength(unsigned index) { return {index, 1}; } ::mlir::Operation::result_range getODSResults(unsigned index) { auto valueRange = getODSResultIndexAndLength(index); return {std::next(getOperation()->result_begin(), valueRange.first), std::next(getOperation()->result_begin(), valueRange.first + valueRange.second)}; } ::mlir::TypedValue<::mlir::VectorType> getRes() { return ::llvm::cast<::mlir::TypedValue<::mlir::VectorType>>(*getODSResults(0).begin()); } static ::llvm::LogicalResult setPropertiesFromAttr(Properties &prop, ::mlir::Attribute attr, ::llvm::function_ref<::mlir::InFlightDiagnostic()> emitError); static ::mlir::Attribute getPropertiesAsAttr(::mlir::MLIRContext *ctx, const Properties &prop); static llvm::hash_code computePropertiesHash(const Properties &prop); static std::optional getInherentAttr(::mlir::MLIRContext *ctx, const Properties &prop, llvm::StringRef name); static void setInherentAttr(Properties &prop, llvm::StringRef name, mlir::Attribute value); static void populateInherentAttrs(::mlir::MLIRContext *ctx, const Properties &prop, ::mlir::NamedAttrList &attrs); static ::llvm::LogicalResult verifyInherentAttrs(::mlir::OperationName opName, ::mlir::NamedAttrList &attrs, llvm::function_ref<::mlir::InFlightDiagnostic()> emitError); static ::llvm::LogicalResult readProperties(::mlir::DialectBytecodeReader &reader, ::mlir::OperationState &state); void writeProperties(::mlir::DialectBytecodeWriter &writer); ::mlir::IntegerAttr getSrcLoHiSelAttr() { return ::llvm::cast<::mlir::IntegerAttr>(getProperties().srcLoHiSel); } bool getSrcLoHiSel(); void setSrcLoHiSelAttr(::mlir::IntegerAttr attr) { getProperties().srcLoHiSel = attr; } void setSrcLoHiSel(bool attrValue); static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::Type res, ::mlir::Value src, ::mlir::Value scale, ::mlir::IntegerAttr srcLoHiSel); static CvtScaleF32PkF16Fp8Op create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::Type res, ::mlir::Value src, ::mlir::Value scale, ::mlir::IntegerAttr srcLoHiSel); static CvtScaleF32PkF16Fp8Op create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::Type res, ::mlir::Value src, ::mlir::Value scale, ::mlir::IntegerAttr srcLoHiSel); static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::Value src, ::mlir::Value scale, ::mlir::IntegerAttr srcLoHiSel); static CvtScaleF32PkF16Fp8Op create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::Value src, ::mlir::Value scale, ::mlir::IntegerAttr srcLoHiSel); static CvtScaleF32PkF16Fp8Op create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::Value src, ::mlir::Value scale, ::mlir::IntegerAttr srcLoHiSel); static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::Type res, ::mlir::Value src, ::mlir::Value scale, bool srcLoHiSel); static CvtScaleF32PkF16Fp8Op create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::Type res, ::mlir::Value src, ::mlir::Value scale, bool srcLoHiSel); static CvtScaleF32PkF16Fp8Op create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::Type res, ::mlir::Value src, ::mlir::Value scale, bool srcLoHiSel); static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::Value src, ::mlir::Value scale, bool srcLoHiSel); static CvtScaleF32PkF16Fp8Op create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::Value src, ::mlir::Value scale, bool srcLoHiSel); static CvtScaleF32PkF16Fp8Op create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::Value src, ::mlir::Value scale, bool srcLoHiSel); static void build(::mlir::OpBuilder &, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, ::llvm::ArrayRef<::mlir::NamedAttribute> attributes = {}); static CvtScaleF32PkF16Fp8Op create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, ::llvm::ArrayRef<::mlir::NamedAttribute> attributes = {}); static CvtScaleF32PkF16Fp8Op create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, ::llvm::ArrayRef<::mlir::NamedAttribute> attributes = {}); static void build(::mlir::OpBuilder &, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, const Properties &properties, ::llvm::ArrayRef<::mlir::NamedAttribute> discardableAttributes = {}); static CvtScaleF32PkF16Fp8Op create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, const Properties &properties, ::llvm::ArrayRef<::mlir::NamedAttribute> discardableAttributes = {}); static CvtScaleF32PkF16Fp8Op create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, const Properties &properties, ::llvm::ArrayRef<::mlir::NamedAttribute> discardableAttributes = {}); ::llvm::LogicalResult verifyInvariantsImpl(); ::llvm::LogicalResult verifyInvariants(); static ::mlir::ParseResult parse(::mlir::OpAsmParser &parser, ::mlir::OperationState &result); void print(::mlir::OpAsmPrinter &_odsPrinter); void getEffects(::llvm::SmallVectorImpl<::mlir::SideEffects::EffectInstance<::mlir::MemoryEffects::Effect>> &effects); private: ::mlir::StringAttr getAttributeNameForIndex(unsigned index) { return getAttributeNameForIndex((*this)->getName(), index); } static ::mlir::StringAttr getAttributeNameForIndex(::mlir::OperationName name, unsigned index) { assert(index < 1 && "invalid attribute index"); assert(name.getStringRef() == getOperationName() && "invalid operation name"); assert(name.isRegistered() && "Operation isn't registered, missing a " "dependent dialect loading?"); return name.getAttributeNames()[index]; } public: }; } // namespace mlir::ROCDL MLIR_DECLARE_EXPLICIT_TYPE_ID(::mlir::ROCDL::CvtScaleF32PkF16Fp8Op) MLIR_DECLARE_EXPLICIT_TYPE_ID(::mlir::ROCDL::detail::CvtScaleF32PkF16Fp8OpGenericAdaptorBase::Properties) namespace mlir::ROCDL { //===----------------------------------------------------------------------===// // ::mlir::ROCDL::CvtScaleF32PkF32Bf8Op declarations //===----------------------------------------------------------------------===// namespace detail { class CvtScaleF32PkF32Bf8OpGenericAdaptorBase { public: struct Properties { using srcLoHiSelTy = ::mlir::IntegerAttr; srcLoHiSelTy srcLoHiSel; auto getSrcLoHiSel() const { auto &propStorage = this->srcLoHiSel; return ::llvm::cast<::mlir::IntegerAttr>(propStorage); } void setSrcLoHiSel(const ::mlir::IntegerAttr &propValue) { this->srcLoHiSel = propValue; } bool operator==(const Properties &rhs) const { return rhs.srcLoHiSel == this->srcLoHiSel && true; } bool operator!=(const Properties &rhs) const { return !(*this == rhs); } }; protected: ::mlir::DictionaryAttr odsAttrs; ::std::optional<::mlir::OperationName> odsOpName; Properties properties; ::mlir::RegionRange odsRegions; public: CvtScaleF32PkF32Bf8OpGenericAdaptorBase(::mlir::DictionaryAttr attrs, const Properties &properties, ::mlir::RegionRange regions = {}) : odsAttrs(attrs), properties(properties), odsRegions(regions) { if (odsAttrs) odsOpName.emplace("rocdl.cvt.scalef32.pk.f32.bf8", odsAttrs.getContext()); } CvtScaleF32PkF32Bf8OpGenericAdaptorBase(CvtScaleF32PkF32Bf8Op op); std::pair getODSOperandIndexAndLength(unsigned index, unsigned odsOperandsSize) { return {index, 1}; } const Properties &getProperties() { return properties; } ::mlir::DictionaryAttr getAttributes() { return odsAttrs; } ::mlir::IntegerAttr getSrcLoHiSelAttr() { auto attr = ::llvm::cast<::mlir::IntegerAttr>(getProperties().srcLoHiSel); return attr; } bool getSrcLoHiSel(); }; } // namespace detail template class CvtScaleF32PkF32Bf8OpGenericAdaptor : public detail::CvtScaleF32PkF32Bf8OpGenericAdaptorBase { using ValueT = ::llvm::detail::ValueOfRange; using Base = detail::CvtScaleF32PkF32Bf8OpGenericAdaptorBase; static constexpr int odsIndex_src = 0; static constexpr int odsIndex_scale = 1; public: CvtScaleF32PkF32Bf8OpGenericAdaptor(RangeT values, ::mlir::DictionaryAttr attrs, const Properties &properties, ::mlir::RegionRange regions = {}) : Base(attrs, properties, regions), odsOperands(values) {} CvtScaleF32PkF32Bf8OpGenericAdaptor(RangeT values, ::mlir::DictionaryAttr attrs, ::mlir::PropertyRef properties, ::mlir::RegionRange regions = {}) : CvtScaleF32PkF32Bf8OpGenericAdaptor(values, attrs, (properties ? *properties.as() : Properties{}), regions) {} CvtScaleF32PkF32Bf8OpGenericAdaptor(RangeT values, ::mlir::DictionaryAttr attrs = nullptr) : CvtScaleF32PkF32Bf8OpGenericAdaptor(values, attrs, Properties{}, {}) {} CvtScaleF32PkF32Bf8OpGenericAdaptor(RangeT values, const CvtScaleF32PkF32Bf8OpGenericAdaptorBase &base) : Base(base), odsOperands(values) {} template >> CvtScaleF32PkF32Bf8OpGenericAdaptor(RangeT values, LateInst op) : Base(op), odsOperands(values) {} std::pair getODSOperandIndexAndLength(unsigned index) { return Base::getODSOperandIndexAndLength(index, odsOperands.size()); } RangeT getODSOperands(unsigned index) { auto valueRange = getODSOperandIndexAndLength(index); return {std::next(odsOperands.begin(), valueRange.first), std::next(odsOperands.begin(), valueRange.first + valueRange.second)}; } ValueT getSrc() { return (*getODSOperands(0).begin()); } ValueT getScale() { return (*getODSOperands(1).begin()); } RangeT getOperands() { return odsOperands; } private: RangeT odsOperands; }; class CvtScaleF32PkF32Bf8OpAdaptor : public CvtScaleF32PkF32Bf8OpGenericAdaptor<::mlir::ValueRange> { public: using CvtScaleF32PkF32Bf8OpGenericAdaptor::CvtScaleF32PkF32Bf8OpGenericAdaptor; CvtScaleF32PkF32Bf8OpAdaptor(CvtScaleF32PkF32Bf8Op op); ::llvm::LogicalResult verify(::mlir::Location loc); }; class CvtScaleF32PkF32Bf8Op : public ::mlir::Op::Impl, ::mlir::OpTrait::ZeroSuccessors, ::mlir::OpTrait::NOperands<2>::Impl, ::mlir::OpTrait::OpInvariants, ::mlir::BytecodeOpInterface::Trait, ::mlir::ConditionallySpeculatable::Trait, ::mlir::OpTrait::AlwaysSpeculatableImplTrait, ::mlir::MemoryEffectOpInterface::Trait> { public: using Op::Op; using Op::print; using Adaptor = CvtScaleF32PkF32Bf8OpAdaptor; template using GenericAdaptor = CvtScaleF32PkF32Bf8OpGenericAdaptor; using FoldAdaptor = GenericAdaptor<::llvm::ArrayRef<::mlir::Attribute>>; static constexpr int odsIndex_src = 0; static constexpr int odsIndex_scale = 1; using Properties = FoldAdaptor::Properties; static ::llvm::ArrayRef<::llvm::StringRef> getAttributeNames() { static ::llvm::StringRef attrNames[] = {::llvm::StringRef("srcLoHiSel")}; return ::llvm::ArrayRef(attrNames); } ::mlir::StringAttr getSrcLoHiSelAttrName() { return getAttributeNameForIndex(0); } static ::mlir::StringAttr getSrcLoHiSelAttrName(::mlir::OperationName name) { return getAttributeNameForIndex(name, 0); } static constexpr ::llvm::StringLiteral getOperationName() { return ::llvm::StringLiteral("rocdl.cvt.scalef32.pk.f32.bf8"); } std::pair getODSOperandIndexAndLength(unsigned index) { return {index, 1}; } ::mlir::Operation::operand_range getODSOperands(unsigned index) { auto valueRange = getODSOperandIndexAndLength(index); return {std::next(getOperation()->operand_begin(), valueRange.first), std::next(getOperation()->operand_begin(), valueRange.first + valueRange.second)}; } ::mlir::TypedValue<::mlir::IntegerType> getSrc() { return ::llvm::cast<::mlir::TypedValue<::mlir::IntegerType>>(*getODSOperands(0).begin()); } ::mlir::TypedValue<::mlir::FloatType> getScale() { return ::llvm::cast<::mlir::TypedValue<::mlir::FloatType>>(*getODSOperands(1).begin()); } ::mlir::OpOperand &getSrcMutable() { auto range = getODSOperandIndexAndLength(0); return getOperation()->getOpOperand(range.first); } ::mlir::OpOperand &getScaleMutable() { auto range = getODSOperandIndexAndLength(1); return getOperation()->getOpOperand(range.first); } std::pair getODSResultIndexAndLength(unsigned index) { return {index, 1}; } ::mlir::Operation::result_range getODSResults(unsigned index) { auto valueRange = getODSResultIndexAndLength(index); return {std::next(getOperation()->result_begin(), valueRange.first), std::next(getOperation()->result_begin(), valueRange.first + valueRange.second)}; } ::mlir::TypedValue<::mlir::VectorType> getRes() { return ::llvm::cast<::mlir::TypedValue<::mlir::VectorType>>(*getODSResults(0).begin()); } static ::llvm::LogicalResult setPropertiesFromAttr(Properties &prop, ::mlir::Attribute attr, ::llvm::function_ref<::mlir::InFlightDiagnostic()> emitError); static ::mlir::Attribute getPropertiesAsAttr(::mlir::MLIRContext *ctx, const Properties &prop); static llvm::hash_code computePropertiesHash(const Properties &prop); static std::optional getInherentAttr(::mlir::MLIRContext *ctx, const Properties &prop, llvm::StringRef name); static void setInherentAttr(Properties &prop, llvm::StringRef name, mlir::Attribute value); static void populateInherentAttrs(::mlir::MLIRContext *ctx, const Properties &prop, ::mlir::NamedAttrList &attrs); static ::llvm::LogicalResult verifyInherentAttrs(::mlir::OperationName opName, ::mlir::NamedAttrList &attrs, llvm::function_ref<::mlir::InFlightDiagnostic()> emitError); static ::llvm::LogicalResult readProperties(::mlir::DialectBytecodeReader &reader, ::mlir::OperationState &state); void writeProperties(::mlir::DialectBytecodeWriter &writer); ::mlir::IntegerAttr getSrcLoHiSelAttr() { return ::llvm::cast<::mlir::IntegerAttr>(getProperties().srcLoHiSel); } bool getSrcLoHiSel(); void setSrcLoHiSelAttr(::mlir::IntegerAttr attr) { getProperties().srcLoHiSel = attr; } void setSrcLoHiSel(bool attrValue); static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::Type res, ::mlir::Value src, ::mlir::Value scale, ::mlir::IntegerAttr srcLoHiSel); static CvtScaleF32PkF32Bf8Op create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::Type res, ::mlir::Value src, ::mlir::Value scale, ::mlir::IntegerAttr srcLoHiSel); static CvtScaleF32PkF32Bf8Op create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::Type res, ::mlir::Value src, ::mlir::Value scale, ::mlir::IntegerAttr srcLoHiSel); static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::Value src, ::mlir::Value scale, ::mlir::IntegerAttr srcLoHiSel); static CvtScaleF32PkF32Bf8Op create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::Value src, ::mlir::Value scale, ::mlir::IntegerAttr srcLoHiSel); static CvtScaleF32PkF32Bf8Op create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::Value src, ::mlir::Value scale, ::mlir::IntegerAttr srcLoHiSel); static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::Type res, ::mlir::Value src, ::mlir::Value scale, bool srcLoHiSel); static CvtScaleF32PkF32Bf8Op create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::Type res, ::mlir::Value src, ::mlir::Value scale, bool srcLoHiSel); static CvtScaleF32PkF32Bf8Op create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::Type res, ::mlir::Value src, ::mlir::Value scale, bool srcLoHiSel); static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::Value src, ::mlir::Value scale, bool srcLoHiSel); static CvtScaleF32PkF32Bf8Op create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::Value src, ::mlir::Value scale, bool srcLoHiSel); static CvtScaleF32PkF32Bf8Op create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::Value src, ::mlir::Value scale, bool srcLoHiSel); static void build(::mlir::OpBuilder &, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, ::llvm::ArrayRef<::mlir::NamedAttribute> attributes = {}); static CvtScaleF32PkF32Bf8Op create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, ::llvm::ArrayRef<::mlir::NamedAttribute> attributes = {}); static CvtScaleF32PkF32Bf8Op create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, ::llvm::ArrayRef<::mlir::NamedAttribute> attributes = {}); static void build(::mlir::OpBuilder &, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, const Properties &properties, ::llvm::ArrayRef<::mlir::NamedAttribute> discardableAttributes = {}); static CvtScaleF32PkF32Bf8Op create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, const Properties &properties, ::llvm::ArrayRef<::mlir::NamedAttribute> discardableAttributes = {}); static CvtScaleF32PkF32Bf8Op create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, const Properties &properties, ::llvm::ArrayRef<::mlir::NamedAttribute> discardableAttributes = {}); ::llvm::LogicalResult verifyInvariantsImpl(); ::llvm::LogicalResult verifyInvariants(); static ::mlir::ParseResult parse(::mlir::OpAsmParser &parser, ::mlir::OperationState &result); void print(::mlir::OpAsmPrinter &_odsPrinter); void getEffects(::llvm::SmallVectorImpl<::mlir::SideEffects::EffectInstance<::mlir::MemoryEffects::Effect>> &effects); private: ::mlir::StringAttr getAttributeNameForIndex(unsigned index) { return getAttributeNameForIndex((*this)->getName(), index); } static ::mlir::StringAttr getAttributeNameForIndex(::mlir::OperationName name, unsigned index) { assert(index < 1 && "invalid attribute index"); assert(name.getStringRef() == getOperationName() && "invalid operation name"); assert(name.isRegistered() && "Operation isn't registered, missing a " "dependent dialect loading?"); return name.getAttributeNames()[index]; } public: }; } // namespace mlir::ROCDL MLIR_DECLARE_EXPLICIT_TYPE_ID(::mlir::ROCDL::CvtScaleF32PkF32Bf8Op) MLIR_DECLARE_EXPLICIT_TYPE_ID(::mlir::ROCDL::detail::CvtScaleF32PkF32Bf8OpGenericAdaptorBase::Properties) namespace mlir::ROCDL { //===----------------------------------------------------------------------===// // ::mlir::ROCDL::CvtScaleF32PkF32Fp4Op declarations //===----------------------------------------------------------------------===// namespace detail { class CvtScaleF32PkF32Fp4OpGenericAdaptorBase { public: struct Properties { using srcSelIndexTy = ::mlir::IntegerAttr; srcSelIndexTy srcSelIndex; auto getSrcSelIndex() const { auto &propStorage = this->srcSelIndex; return ::llvm::cast<::mlir::IntegerAttr>(propStorage); } void setSrcSelIndex(const ::mlir::IntegerAttr &propValue) { this->srcSelIndex = propValue; } bool operator==(const Properties &rhs) const { return rhs.srcSelIndex == this->srcSelIndex && true; } bool operator!=(const Properties &rhs) const { return !(*this == rhs); } }; protected: ::mlir::DictionaryAttr odsAttrs; ::std::optional<::mlir::OperationName> odsOpName; Properties properties; ::mlir::RegionRange odsRegions; public: CvtScaleF32PkF32Fp4OpGenericAdaptorBase(::mlir::DictionaryAttr attrs, const Properties &properties, ::mlir::RegionRange regions = {}) : odsAttrs(attrs), properties(properties), odsRegions(regions) { if (odsAttrs) odsOpName.emplace("rocdl.cvt.scalef32.pk.f32.fp4", odsAttrs.getContext()); } CvtScaleF32PkF32Fp4OpGenericAdaptorBase(CvtScaleF32PkF32Fp4Op op); std::pair getODSOperandIndexAndLength(unsigned index, unsigned odsOperandsSize) { return {index, 1}; } const Properties &getProperties() { return properties; } ::mlir::DictionaryAttr getAttributes() { return odsAttrs; } ::mlir::IntegerAttr getSrcSelIndexAttr() { auto attr = ::llvm::cast<::mlir::IntegerAttr>(getProperties().srcSelIndex); return attr; } uint32_t getSrcSelIndex(); }; } // namespace detail template class CvtScaleF32PkF32Fp4OpGenericAdaptor : public detail::CvtScaleF32PkF32Fp4OpGenericAdaptorBase { using ValueT = ::llvm::detail::ValueOfRange; using Base = detail::CvtScaleF32PkF32Fp4OpGenericAdaptorBase; static constexpr int odsIndex_src = 0; static constexpr int odsIndex_scale = 1; public: CvtScaleF32PkF32Fp4OpGenericAdaptor(RangeT values, ::mlir::DictionaryAttr attrs, const Properties &properties, ::mlir::RegionRange regions = {}) : Base(attrs, properties, regions), odsOperands(values) {} CvtScaleF32PkF32Fp4OpGenericAdaptor(RangeT values, ::mlir::DictionaryAttr attrs, ::mlir::PropertyRef properties, ::mlir::RegionRange regions = {}) : CvtScaleF32PkF32Fp4OpGenericAdaptor(values, attrs, (properties ? *properties.as() : Properties{}), regions) {} CvtScaleF32PkF32Fp4OpGenericAdaptor(RangeT values, ::mlir::DictionaryAttr attrs = nullptr) : CvtScaleF32PkF32Fp4OpGenericAdaptor(values, attrs, Properties{}, {}) {} CvtScaleF32PkF32Fp4OpGenericAdaptor(RangeT values, const CvtScaleF32PkF32Fp4OpGenericAdaptorBase &base) : Base(base), odsOperands(values) {} template >> CvtScaleF32PkF32Fp4OpGenericAdaptor(RangeT values, LateInst op) : Base(op), odsOperands(values) {} std::pair getODSOperandIndexAndLength(unsigned index) { return Base::getODSOperandIndexAndLength(index, odsOperands.size()); } RangeT getODSOperands(unsigned index) { auto valueRange = getODSOperandIndexAndLength(index); return {std::next(odsOperands.begin(), valueRange.first), std::next(odsOperands.begin(), valueRange.first + valueRange.second)}; } ValueT getSrc() { return (*getODSOperands(0).begin()); } ValueT getScale() { return (*getODSOperands(1).begin()); } RangeT getOperands() { return odsOperands; } private: RangeT odsOperands; }; class CvtScaleF32PkF32Fp4OpAdaptor : public CvtScaleF32PkF32Fp4OpGenericAdaptor<::mlir::ValueRange> { public: using CvtScaleF32PkF32Fp4OpGenericAdaptor::CvtScaleF32PkF32Fp4OpGenericAdaptor; CvtScaleF32PkF32Fp4OpAdaptor(CvtScaleF32PkF32Fp4Op op); ::llvm::LogicalResult verify(::mlir::Location loc); }; class CvtScaleF32PkF32Fp4Op : public ::mlir::Op::Impl, ::mlir::OpTrait::ZeroSuccessors, ::mlir::OpTrait::NOperands<2>::Impl, ::mlir::OpTrait::OpInvariants, ::mlir::BytecodeOpInterface::Trait, ::mlir::ConditionallySpeculatable::Trait, ::mlir::OpTrait::AlwaysSpeculatableImplTrait, ::mlir::MemoryEffectOpInterface::Trait> { public: using Op::Op; using Op::print; using Adaptor = CvtScaleF32PkF32Fp4OpAdaptor; template using GenericAdaptor = CvtScaleF32PkF32Fp4OpGenericAdaptor; using FoldAdaptor = GenericAdaptor<::llvm::ArrayRef<::mlir::Attribute>>; static constexpr int odsIndex_src = 0; static constexpr int odsIndex_scale = 1; using Properties = FoldAdaptor::Properties; static ::llvm::ArrayRef<::llvm::StringRef> getAttributeNames() { static ::llvm::StringRef attrNames[] = {::llvm::StringRef("srcSelIndex")}; return ::llvm::ArrayRef(attrNames); } ::mlir::StringAttr getSrcSelIndexAttrName() { return getAttributeNameForIndex(0); } static ::mlir::StringAttr getSrcSelIndexAttrName(::mlir::OperationName name) { return getAttributeNameForIndex(name, 0); } static constexpr ::llvm::StringLiteral getOperationName() { return ::llvm::StringLiteral("rocdl.cvt.scalef32.pk.f32.fp4"); } std::pair getODSOperandIndexAndLength(unsigned index) { return {index, 1}; } ::mlir::Operation::operand_range getODSOperands(unsigned index) { auto valueRange = getODSOperandIndexAndLength(index); return {std::next(getOperation()->operand_begin(), valueRange.first), std::next(getOperation()->operand_begin(), valueRange.first + valueRange.second)}; } ::mlir::TypedValue<::mlir::IntegerType> getSrc() { return ::llvm::cast<::mlir::TypedValue<::mlir::IntegerType>>(*getODSOperands(0).begin()); } ::mlir::TypedValue<::mlir::FloatType> getScale() { return ::llvm::cast<::mlir::TypedValue<::mlir::FloatType>>(*getODSOperands(1).begin()); } ::mlir::OpOperand &getSrcMutable() { auto range = getODSOperandIndexAndLength(0); return getOperation()->getOpOperand(range.first); } ::mlir::OpOperand &getScaleMutable() { auto range = getODSOperandIndexAndLength(1); return getOperation()->getOpOperand(range.first); } std::pair getODSResultIndexAndLength(unsigned index) { return {index, 1}; } ::mlir::Operation::result_range getODSResults(unsigned index) { auto valueRange = getODSResultIndexAndLength(index); return {std::next(getOperation()->result_begin(), valueRange.first), std::next(getOperation()->result_begin(), valueRange.first + valueRange.second)}; } ::mlir::TypedValue<::mlir::VectorType> getRes() { return ::llvm::cast<::mlir::TypedValue<::mlir::VectorType>>(*getODSResults(0).begin()); } static ::llvm::LogicalResult setPropertiesFromAttr(Properties &prop, ::mlir::Attribute attr, ::llvm::function_ref<::mlir::InFlightDiagnostic()> emitError); static ::mlir::Attribute getPropertiesAsAttr(::mlir::MLIRContext *ctx, const Properties &prop); static llvm::hash_code computePropertiesHash(const Properties &prop); static std::optional getInherentAttr(::mlir::MLIRContext *ctx, const Properties &prop, llvm::StringRef name); static void setInherentAttr(Properties &prop, llvm::StringRef name, mlir::Attribute value); static void populateInherentAttrs(::mlir::MLIRContext *ctx, const Properties &prop, ::mlir::NamedAttrList &attrs); static ::llvm::LogicalResult verifyInherentAttrs(::mlir::OperationName opName, ::mlir::NamedAttrList &attrs, llvm::function_ref<::mlir::InFlightDiagnostic()> emitError); static ::llvm::LogicalResult readProperties(::mlir::DialectBytecodeReader &reader, ::mlir::OperationState &state); void writeProperties(::mlir::DialectBytecodeWriter &writer); ::mlir::IntegerAttr getSrcSelIndexAttr() { return ::llvm::cast<::mlir::IntegerAttr>(getProperties().srcSelIndex); } uint32_t getSrcSelIndex(); void setSrcSelIndexAttr(::mlir::IntegerAttr attr) { getProperties().srcSelIndex = attr; } void setSrcSelIndex(uint32_t attrValue); static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::Type res, ::mlir::Value src, ::mlir::Value scale, ::mlir::IntegerAttr srcSelIndex); static CvtScaleF32PkF32Fp4Op create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::Type res, ::mlir::Value src, ::mlir::Value scale, ::mlir::IntegerAttr srcSelIndex); static CvtScaleF32PkF32Fp4Op create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::Type res, ::mlir::Value src, ::mlir::Value scale, ::mlir::IntegerAttr srcSelIndex); static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::Value src, ::mlir::Value scale, ::mlir::IntegerAttr srcSelIndex); static CvtScaleF32PkF32Fp4Op create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::Value src, ::mlir::Value scale, ::mlir::IntegerAttr srcSelIndex); static CvtScaleF32PkF32Fp4Op create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::Value src, ::mlir::Value scale, ::mlir::IntegerAttr srcSelIndex); static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::Type res, ::mlir::Value src, ::mlir::Value scale, uint32_t srcSelIndex); static CvtScaleF32PkF32Fp4Op create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::Type res, ::mlir::Value src, ::mlir::Value scale, uint32_t srcSelIndex); static CvtScaleF32PkF32Fp4Op create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::Type res, ::mlir::Value src, ::mlir::Value scale, uint32_t srcSelIndex); static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::Value src, ::mlir::Value scale, uint32_t srcSelIndex); static CvtScaleF32PkF32Fp4Op create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::Value src, ::mlir::Value scale, uint32_t srcSelIndex); static CvtScaleF32PkF32Fp4Op create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::Value src, ::mlir::Value scale, uint32_t srcSelIndex); static void build(::mlir::OpBuilder &, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, ::llvm::ArrayRef<::mlir::NamedAttribute> attributes = {}); static CvtScaleF32PkF32Fp4Op create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, ::llvm::ArrayRef<::mlir::NamedAttribute> attributes = {}); static CvtScaleF32PkF32Fp4Op create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, ::llvm::ArrayRef<::mlir::NamedAttribute> attributes = {}); static void build(::mlir::OpBuilder &, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, const Properties &properties, ::llvm::ArrayRef<::mlir::NamedAttribute> discardableAttributes = {}); static CvtScaleF32PkF32Fp4Op create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, const Properties &properties, ::llvm::ArrayRef<::mlir::NamedAttribute> discardableAttributes = {}); static CvtScaleF32PkF32Fp4Op create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, const Properties &properties, ::llvm::ArrayRef<::mlir::NamedAttribute> discardableAttributes = {}); ::llvm::LogicalResult verifyInvariantsImpl(); ::llvm::LogicalResult verifyInvariants(); static ::mlir::ParseResult parse(::mlir::OpAsmParser &parser, ::mlir::OperationState &result); void print(::mlir::OpAsmPrinter &_odsPrinter); void getEffects(::llvm::SmallVectorImpl<::mlir::SideEffects::EffectInstance<::mlir::MemoryEffects::Effect>> &effects); private: ::mlir::StringAttr getAttributeNameForIndex(unsigned index) { return getAttributeNameForIndex((*this)->getName(), index); } static ::mlir::StringAttr getAttributeNameForIndex(::mlir::OperationName name, unsigned index) { assert(index < 1 && "invalid attribute index"); assert(name.getStringRef() == getOperationName() && "invalid operation name"); assert(name.isRegistered() && "Operation isn't registered, missing a " "dependent dialect loading?"); return name.getAttributeNames()[index]; } public: }; } // namespace mlir::ROCDL MLIR_DECLARE_EXPLICIT_TYPE_ID(::mlir::ROCDL::CvtScaleF32PkF32Fp4Op) MLIR_DECLARE_EXPLICIT_TYPE_ID(::mlir::ROCDL::detail::CvtScaleF32PkF32Fp4OpGenericAdaptorBase::Properties) namespace mlir::ROCDL { //===----------------------------------------------------------------------===// // ::mlir::ROCDL::CvtScaleF32PkF32Fp8Op declarations //===----------------------------------------------------------------------===// namespace detail { class CvtScaleF32PkF32Fp8OpGenericAdaptorBase { public: struct Properties { using srcLoHiSelTy = ::mlir::IntegerAttr; srcLoHiSelTy srcLoHiSel; auto getSrcLoHiSel() const { auto &propStorage = this->srcLoHiSel; return ::llvm::cast<::mlir::IntegerAttr>(propStorage); } void setSrcLoHiSel(const ::mlir::IntegerAttr &propValue) { this->srcLoHiSel = propValue; } bool operator==(const Properties &rhs) const { return rhs.srcLoHiSel == this->srcLoHiSel && true; } bool operator!=(const Properties &rhs) const { return !(*this == rhs); } }; protected: ::mlir::DictionaryAttr odsAttrs; ::std::optional<::mlir::OperationName> odsOpName; Properties properties; ::mlir::RegionRange odsRegions; public: CvtScaleF32PkF32Fp8OpGenericAdaptorBase(::mlir::DictionaryAttr attrs, const Properties &properties, ::mlir::RegionRange regions = {}) : odsAttrs(attrs), properties(properties), odsRegions(regions) { if (odsAttrs) odsOpName.emplace("rocdl.cvt.scalef32.pk.f32.fp8", odsAttrs.getContext()); } CvtScaleF32PkF32Fp8OpGenericAdaptorBase(CvtScaleF32PkF32Fp8Op op); std::pair getODSOperandIndexAndLength(unsigned index, unsigned odsOperandsSize) { return {index, 1}; } const Properties &getProperties() { return properties; } ::mlir::DictionaryAttr getAttributes() { return odsAttrs; } ::mlir::IntegerAttr getSrcLoHiSelAttr() { auto attr = ::llvm::cast<::mlir::IntegerAttr>(getProperties().srcLoHiSel); return attr; } bool getSrcLoHiSel(); }; } // namespace detail template class CvtScaleF32PkF32Fp8OpGenericAdaptor : public detail::CvtScaleF32PkF32Fp8OpGenericAdaptorBase { using ValueT = ::llvm::detail::ValueOfRange; using Base = detail::CvtScaleF32PkF32Fp8OpGenericAdaptorBase; static constexpr int odsIndex_src = 0; static constexpr int odsIndex_scale = 1; public: CvtScaleF32PkF32Fp8OpGenericAdaptor(RangeT values, ::mlir::DictionaryAttr attrs, const Properties &properties, ::mlir::RegionRange regions = {}) : Base(attrs, properties, regions), odsOperands(values) {} CvtScaleF32PkF32Fp8OpGenericAdaptor(RangeT values, ::mlir::DictionaryAttr attrs, ::mlir::PropertyRef properties, ::mlir::RegionRange regions = {}) : CvtScaleF32PkF32Fp8OpGenericAdaptor(values, attrs, (properties ? *properties.as() : Properties{}), regions) {} CvtScaleF32PkF32Fp8OpGenericAdaptor(RangeT values, ::mlir::DictionaryAttr attrs = nullptr) : CvtScaleF32PkF32Fp8OpGenericAdaptor(values, attrs, Properties{}, {}) {} CvtScaleF32PkF32Fp8OpGenericAdaptor(RangeT values, const CvtScaleF32PkF32Fp8OpGenericAdaptorBase &base) : Base(base), odsOperands(values) {} template >> CvtScaleF32PkF32Fp8OpGenericAdaptor(RangeT values, LateInst op) : Base(op), odsOperands(values) {} std::pair getODSOperandIndexAndLength(unsigned index) { return Base::getODSOperandIndexAndLength(index, odsOperands.size()); } RangeT getODSOperands(unsigned index) { auto valueRange = getODSOperandIndexAndLength(index); return {std::next(odsOperands.begin(), valueRange.first), std::next(odsOperands.begin(), valueRange.first + valueRange.second)}; } ValueT getSrc() { return (*getODSOperands(0).begin()); } ValueT getScale() { return (*getODSOperands(1).begin()); } RangeT getOperands() { return odsOperands; } private: RangeT odsOperands; }; class CvtScaleF32PkF32Fp8OpAdaptor : public CvtScaleF32PkF32Fp8OpGenericAdaptor<::mlir::ValueRange> { public: using CvtScaleF32PkF32Fp8OpGenericAdaptor::CvtScaleF32PkF32Fp8OpGenericAdaptor; CvtScaleF32PkF32Fp8OpAdaptor(CvtScaleF32PkF32Fp8Op op); ::llvm::LogicalResult verify(::mlir::Location loc); }; class CvtScaleF32PkF32Fp8Op : public ::mlir::Op::Impl, ::mlir::OpTrait::ZeroSuccessors, ::mlir::OpTrait::NOperands<2>::Impl, ::mlir::OpTrait::OpInvariants, ::mlir::BytecodeOpInterface::Trait, ::mlir::ConditionallySpeculatable::Trait, ::mlir::OpTrait::AlwaysSpeculatableImplTrait, ::mlir::MemoryEffectOpInterface::Trait> { public: using Op::Op; using Op::print; using Adaptor = CvtScaleF32PkF32Fp8OpAdaptor; template using GenericAdaptor = CvtScaleF32PkF32Fp8OpGenericAdaptor; using FoldAdaptor = GenericAdaptor<::llvm::ArrayRef<::mlir::Attribute>>; static constexpr int odsIndex_src = 0; static constexpr int odsIndex_scale = 1; using Properties = FoldAdaptor::Properties; static ::llvm::ArrayRef<::llvm::StringRef> getAttributeNames() { static ::llvm::StringRef attrNames[] = {::llvm::StringRef("srcLoHiSel")}; return ::llvm::ArrayRef(attrNames); } ::mlir::StringAttr getSrcLoHiSelAttrName() { return getAttributeNameForIndex(0); } static ::mlir::StringAttr getSrcLoHiSelAttrName(::mlir::OperationName name) { return getAttributeNameForIndex(name, 0); } static constexpr ::llvm::StringLiteral getOperationName() { return ::llvm::StringLiteral("rocdl.cvt.scalef32.pk.f32.fp8"); } std::pair getODSOperandIndexAndLength(unsigned index) { return {index, 1}; } ::mlir::Operation::operand_range getODSOperands(unsigned index) { auto valueRange = getODSOperandIndexAndLength(index); return {std::next(getOperation()->operand_begin(), valueRange.first), std::next(getOperation()->operand_begin(), valueRange.first + valueRange.second)}; } ::mlir::TypedValue<::mlir::IntegerType> getSrc() { return ::llvm::cast<::mlir::TypedValue<::mlir::IntegerType>>(*getODSOperands(0).begin()); } ::mlir::TypedValue<::mlir::FloatType> getScale() { return ::llvm::cast<::mlir::TypedValue<::mlir::FloatType>>(*getODSOperands(1).begin()); } ::mlir::OpOperand &getSrcMutable() { auto range = getODSOperandIndexAndLength(0); return getOperation()->getOpOperand(range.first); } ::mlir::OpOperand &getScaleMutable() { auto range = getODSOperandIndexAndLength(1); return getOperation()->getOpOperand(range.first); } std::pair getODSResultIndexAndLength(unsigned index) { return {index, 1}; } ::mlir::Operation::result_range getODSResults(unsigned index) { auto valueRange = getODSResultIndexAndLength(index); return {std::next(getOperation()->result_begin(), valueRange.first), std::next(getOperation()->result_begin(), valueRange.first + valueRange.second)}; } ::mlir::TypedValue<::mlir::VectorType> getRes() { return ::llvm::cast<::mlir::TypedValue<::mlir::VectorType>>(*getODSResults(0).begin()); } static ::llvm::LogicalResult setPropertiesFromAttr(Properties &prop, ::mlir::Attribute attr, ::llvm::function_ref<::mlir::InFlightDiagnostic()> emitError); static ::mlir::Attribute getPropertiesAsAttr(::mlir::MLIRContext *ctx, const Properties &prop); static llvm::hash_code computePropertiesHash(const Properties &prop); static std::optional getInherentAttr(::mlir::MLIRContext *ctx, const Properties &prop, llvm::StringRef name); static void setInherentAttr(Properties &prop, llvm::StringRef name, mlir::Attribute value); static void populateInherentAttrs(::mlir::MLIRContext *ctx, const Properties &prop, ::mlir::NamedAttrList &attrs); static ::llvm::LogicalResult verifyInherentAttrs(::mlir::OperationName opName, ::mlir::NamedAttrList &attrs, llvm::function_ref<::mlir::InFlightDiagnostic()> emitError); static ::llvm::LogicalResult readProperties(::mlir::DialectBytecodeReader &reader, ::mlir::OperationState &state); void writeProperties(::mlir::DialectBytecodeWriter &writer); ::mlir::IntegerAttr getSrcLoHiSelAttr() { return ::llvm::cast<::mlir::IntegerAttr>(getProperties().srcLoHiSel); } bool getSrcLoHiSel(); void setSrcLoHiSelAttr(::mlir::IntegerAttr attr) { getProperties().srcLoHiSel = attr; } void setSrcLoHiSel(bool attrValue); static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::Type res, ::mlir::Value src, ::mlir::Value scale, ::mlir::IntegerAttr srcLoHiSel); static CvtScaleF32PkF32Fp8Op create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::Type res, ::mlir::Value src, ::mlir::Value scale, ::mlir::IntegerAttr srcLoHiSel); static CvtScaleF32PkF32Fp8Op create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::Type res, ::mlir::Value src, ::mlir::Value scale, ::mlir::IntegerAttr srcLoHiSel); static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::Value src, ::mlir::Value scale, ::mlir::IntegerAttr srcLoHiSel); static CvtScaleF32PkF32Fp8Op create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::Value src, ::mlir::Value scale, ::mlir::IntegerAttr srcLoHiSel); static CvtScaleF32PkF32Fp8Op create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::Value src, ::mlir::Value scale, ::mlir::IntegerAttr srcLoHiSel); static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::Type res, ::mlir::Value src, ::mlir::Value scale, bool srcLoHiSel); static CvtScaleF32PkF32Fp8Op create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::Type res, ::mlir::Value src, ::mlir::Value scale, bool srcLoHiSel); static CvtScaleF32PkF32Fp8Op create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::Type res, ::mlir::Value src, ::mlir::Value scale, bool srcLoHiSel); static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::Value src, ::mlir::Value scale, bool srcLoHiSel); static CvtScaleF32PkF32Fp8Op create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::Value src, ::mlir::Value scale, bool srcLoHiSel); static CvtScaleF32PkF32Fp8Op create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::Value src, ::mlir::Value scale, bool srcLoHiSel); static void build(::mlir::OpBuilder &, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, ::llvm::ArrayRef<::mlir::NamedAttribute> attributes = {}); static CvtScaleF32PkF32Fp8Op create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, ::llvm::ArrayRef<::mlir::NamedAttribute> attributes = {}); static CvtScaleF32PkF32Fp8Op create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, ::llvm::ArrayRef<::mlir::NamedAttribute> attributes = {}); static void build(::mlir::OpBuilder &, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, const Properties &properties, ::llvm::ArrayRef<::mlir::NamedAttribute> discardableAttributes = {}); static CvtScaleF32PkF32Fp8Op create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, const Properties &properties, ::llvm::ArrayRef<::mlir::NamedAttribute> discardableAttributes = {}); static CvtScaleF32PkF32Fp8Op create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, const Properties &properties, ::llvm::ArrayRef<::mlir::NamedAttribute> discardableAttributes = {}); ::llvm::LogicalResult verifyInvariantsImpl(); ::llvm::LogicalResult verifyInvariants(); static ::mlir::ParseResult parse(::mlir::OpAsmParser &parser, ::mlir::OperationState &result); void print(::mlir::OpAsmPrinter &_odsPrinter); void getEffects(::llvm::SmallVectorImpl<::mlir::SideEffects::EffectInstance<::mlir::MemoryEffects::Effect>> &effects); private: ::mlir::StringAttr getAttributeNameForIndex(unsigned index) { return getAttributeNameForIndex((*this)->getName(), index); } static ::mlir::StringAttr getAttributeNameForIndex(::mlir::OperationName name, unsigned index) { assert(index < 1 && "invalid attribute index"); assert(name.getStringRef() == getOperationName() && "invalid operation name"); assert(name.isRegistered() && "Operation isn't registered, missing a " "dependent dialect loading?"); return name.getAttributeNames()[index]; } public: }; } // namespace mlir::ROCDL MLIR_DECLARE_EXPLICIT_TYPE_ID(::mlir::ROCDL::CvtScaleF32PkF32Fp8Op) MLIR_DECLARE_EXPLICIT_TYPE_ID(::mlir::ROCDL::detail::CvtScaleF32PkF32Fp8OpGenericAdaptorBase::Properties) namespace mlir::ROCDL { //===----------------------------------------------------------------------===// // ::mlir::ROCDL::CvtScaleF32PkFp4Bf16Op declarations //===----------------------------------------------------------------------===// namespace detail { class CvtScaleF32PkFp4Bf16OpGenericAdaptorBase { public: struct Properties { using dstSelIndexTy = ::mlir::IntegerAttr; dstSelIndexTy dstSelIndex; auto getDstSelIndex() const { auto &propStorage = this->dstSelIndex; return ::llvm::cast<::mlir::IntegerAttr>(propStorage); } void setDstSelIndex(const ::mlir::IntegerAttr &propValue) { this->dstSelIndex = propValue; } bool operator==(const Properties &rhs) const { return rhs.dstSelIndex == this->dstSelIndex && true; } bool operator!=(const Properties &rhs) const { return !(*this == rhs); } }; protected: ::mlir::DictionaryAttr odsAttrs; ::std::optional<::mlir::OperationName> odsOpName; Properties properties; ::mlir::RegionRange odsRegions; public: CvtScaleF32PkFp4Bf16OpGenericAdaptorBase(::mlir::DictionaryAttr attrs, const Properties &properties, ::mlir::RegionRange regions = {}) : odsAttrs(attrs), properties(properties), odsRegions(regions) { if (odsAttrs) odsOpName.emplace("rocdl.cvt.scalef32.pk.fp4.bf16", odsAttrs.getContext()); } CvtScaleF32PkFp4Bf16OpGenericAdaptorBase(CvtScaleF32PkFp4Bf16Op op); std::pair getODSOperandIndexAndLength(unsigned index, unsigned odsOperandsSize) { return {index, 1}; } const Properties &getProperties() { return properties; } ::mlir::DictionaryAttr getAttributes() { return odsAttrs; } ::mlir::IntegerAttr getDstSelIndexAttr() { auto attr = ::llvm::cast<::mlir::IntegerAttr>(getProperties().dstSelIndex); return attr; } uint32_t getDstSelIndex(); }; } // namespace detail template class CvtScaleF32PkFp4Bf16OpGenericAdaptor : public detail::CvtScaleF32PkFp4Bf16OpGenericAdaptorBase { using ValueT = ::llvm::detail::ValueOfRange; using Base = detail::CvtScaleF32PkFp4Bf16OpGenericAdaptorBase; static constexpr int odsIndex_oldVdst = 0; static constexpr int odsIndex_src = 1; static constexpr int odsIndex_scale = 2; public: CvtScaleF32PkFp4Bf16OpGenericAdaptor(RangeT values, ::mlir::DictionaryAttr attrs, const Properties &properties, ::mlir::RegionRange regions = {}) : Base(attrs, properties, regions), odsOperands(values) {} CvtScaleF32PkFp4Bf16OpGenericAdaptor(RangeT values, ::mlir::DictionaryAttr attrs, ::mlir::PropertyRef properties, ::mlir::RegionRange regions = {}) : CvtScaleF32PkFp4Bf16OpGenericAdaptor(values, attrs, (properties ? *properties.as() : Properties{}), regions) {} CvtScaleF32PkFp4Bf16OpGenericAdaptor(RangeT values, ::mlir::DictionaryAttr attrs = nullptr) : CvtScaleF32PkFp4Bf16OpGenericAdaptor(values, attrs, Properties{}, {}) {} CvtScaleF32PkFp4Bf16OpGenericAdaptor(RangeT values, const CvtScaleF32PkFp4Bf16OpGenericAdaptorBase &base) : Base(base), odsOperands(values) {} template >> CvtScaleF32PkFp4Bf16OpGenericAdaptor(RangeT values, LateInst op) : Base(op), odsOperands(values) {} std::pair getODSOperandIndexAndLength(unsigned index) { return Base::getODSOperandIndexAndLength(index, odsOperands.size()); } RangeT getODSOperands(unsigned index) { auto valueRange = getODSOperandIndexAndLength(index); return {std::next(odsOperands.begin(), valueRange.first), std::next(odsOperands.begin(), valueRange.first + valueRange.second)}; } ValueT getOldVdst() { return (*getODSOperands(0).begin()); } ValueT getSrc() { return (*getODSOperands(1).begin()); } ValueT getScale() { return (*getODSOperands(2).begin()); } RangeT getOperands() { return odsOperands; } private: RangeT odsOperands; }; class CvtScaleF32PkFp4Bf16OpAdaptor : public CvtScaleF32PkFp4Bf16OpGenericAdaptor<::mlir::ValueRange> { public: using CvtScaleF32PkFp4Bf16OpGenericAdaptor::CvtScaleF32PkFp4Bf16OpGenericAdaptor; CvtScaleF32PkFp4Bf16OpAdaptor(CvtScaleF32PkFp4Bf16Op op); ::llvm::LogicalResult verify(::mlir::Location loc); }; class CvtScaleF32PkFp4Bf16Op : public ::mlir::Op::Impl, ::mlir::OpTrait::ZeroSuccessors, ::mlir::OpTrait::NOperands<3>::Impl, ::mlir::OpTrait::OpInvariants, ::mlir::BytecodeOpInterface::Trait, ::mlir::ConditionallySpeculatable::Trait, ::mlir::OpTrait::AlwaysSpeculatableImplTrait, ::mlir::MemoryEffectOpInterface::Trait> { public: using Op::Op; using Op::print; using Adaptor = CvtScaleF32PkFp4Bf16OpAdaptor; template using GenericAdaptor = CvtScaleF32PkFp4Bf16OpGenericAdaptor; using FoldAdaptor = GenericAdaptor<::llvm::ArrayRef<::mlir::Attribute>>; static constexpr int odsIndex_oldVdst = 0; static constexpr int odsIndex_src = 1; static constexpr int odsIndex_scale = 2; using Properties = FoldAdaptor::Properties; static ::llvm::ArrayRef<::llvm::StringRef> getAttributeNames() { static ::llvm::StringRef attrNames[] = {::llvm::StringRef("dstSelIndex")}; return ::llvm::ArrayRef(attrNames); } ::mlir::StringAttr getDstSelIndexAttrName() { return getAttributeNameForIndex(0); } static ::mlir::StringAttr getDstSelIndexAttrName(::mlir::OperationName name) { return getAttributeNameForIndex(name, 0); } static constexpr ::llvm::StringLiteral getOperationName() { return ::llvm::StringLiteral("rocdl.cvt.scalef32.pk.fp4.bf16"); } std::pair getODSOperandIndexAndLength(unsigned index) { return {index, 1}; } ::mlir::Operation::operand_range getODSOperands(unsigned index) { auto valueRange = getODSOperandIndexAndLength(index); return {std::next(getOperation()->operand_begin(), valueRange.first), std::next(getOperation()->operand_begin(), valueRange.first + valueRange.second)}; } ::mlir::TypedValue<::mlir::IntegerType> getOldVdst() { return ::llvm::cast<::mlir::TypedValue<::mlir::IntegerType>>(*getODSOperands(0).begin()); } ::mlir::TypedValue<::mlir::VectorType> getSrc() { return ::llvm::cast<::mlir::TypedValue<::mlir::VectorType>>(*getODSOperands(1).begin()); } ::mlir::TypedValue<::mlir::FloatType> getScale() { return ::llvm::cast<::mlir::TypedValue<::mlir::FloatType>>(*getODSOperands(2).begin()); } ::mlir::OpOperand &getOldVdstMutable() { auto range = getODSOperandIndexAndLength(0); return getOperation()->getOpOperand(range.first); } ::mlir::OpOperand &getSrcMutable() { auto range = getODSOperandIndexAndLength(1); return getOperation()->getOpOperand(range.first); } ::mlir::OpOperand &getScaleMutable() { auto range = getODSOperandIndexAndLength(2); return getOperation()->getOpOperand(range.first); } std::pair getODSResultIndexAndLength(unsigned index) { return {index, 1}; } ::mlir::Operation::result_range getODSResults(unsigned index) { auto valueRange = getODSResultIndexAndLength(index); return {std::next(getOperation()->result_begin(), valueRange.first), std::next(getOperation()->result_begin(), valueRange.first + valueRange.second)}; } ::mlir::TypedValue<::mlir::IntegerType> getRes() { return ::llvm::cast<::mlir::TypedValue<::mlir::IntegerType>>(*getODSResults(0).begin()); } static ::llvm::LogicalResult setPropertiesFromAttr(Properties &prop, ::mlir::Attribute attr, ::llvm::function_ref<::mlir::InFlightDiagnostic()> emitError); static ::mlir::Attribute getPropertiesAsAttr(::mlir::MLIRContext *ctx, const Properties &prop); static llvm::hash_code computePropertiesHash(const Properties &prop); static std::optional getInherentAttr(::mlir::MLIRContext *ctx, const Properties &prop, llvm::StringRef name); static void setInherentAttr(Properties &prop, llvm::StringRef name, mlir::Attribute value); static void populateInherentAttrs(::mlir::MLIRContext *ctx, const Properties &prop, ::mlir::NamedAttrList &attrs); static ::llvm::LogicalResult verifyInherentAttrs(::mlir::OperationName opName, ::mlir::NamedAttrList &attrs, llvm::function_ref<::mlir::InFlightDiagnostic()> emitError); static ::llvm::LogicalResult readProperties(::mlir::DialectBytecodeReader &reader, ::mlir::OperationState &state); void writeProperties(::mlir::DialectBytecodeWriter &writer); ::mlir::IntegerAttr getDstSelIndexAttr() { return ::llvm::cast<::mlir::IntegerAttr>(getProperties().dstSelIndex); } uint32_t getDstSelIndex(); void setDstSelIndexAttr(::mlir::IntegerAttr attr) { getProperties().dstSelIndex = attr; } void setDstSelIndex(uint32_t attrValue); static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::Type res, ::mlir::Value oldVdst, ::mlir::Value src, ::mlir::Value scale, ::mlir::IntegerAttr dstSelIndex); static CvtScaleF32PkFp4Bf16Op create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::Type res, ::mlir::Value oldVdst, ::mlir::Value src, ::mlir::Value scale, ::mlir::IntegerAttr dstSelIndex); static CvtScaleF32PkFp4Bf16Op create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::Type res, ::mlir::Value oldVdst, ::mlir::Value src, ::mlir::Value scale, ::mlir::IntegerAttr dstSelIndex); static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::Value oldVdst, ::mlir::Value src, ::mlir::Value scale, ::mlir::IntegerAttr dstSelIndex); static CvtScaleF32PkFp4Bf16Op create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::Value oldVdst, ::mlir::Value src, ::mlir::Value scale, ::mlir::IntegerAttr dstSelIndex); static CvtScaleF32PkFp4Bf16Op create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::Value oldVdst, ::mlir::Value src, ::mlir::Value scale, ::mlir::IntegerAttr dstSelIndex); static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::Type res, ::mlir::Value oldVdst, ::mlir::Value src, ::mlir::Value scale, uint32_t dstSelIndex); static CvtScaleF32PkFp4Bf16Op create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::Type res, ::mlir::Value oldVdst, ::mlir::Value src, ::mlir::Value scale, uint32_t dstSelIndex); static CvtScaleF32PkFp4Bf16Op create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::Type res, ::mlir::Value oldVdst, ::mlir::Value src, ::mlir::Value scale, uint32_t dstSelIndex); static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::Value oldVdst, ::mlir::Value src, ::mlir::Value scale, uint32_t dstSelIndex); static CvtScaleF32PkFp4Bf16Op create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::Value oldVdst, ::mlir::Value src, ::mlir::Value scale, uint32_t dstSelIndex); static CvtScaleF32PkFp4Bf16Op create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::Value oldVdst, ::mlir::Value src, ::mlir::Value scale, uint32_t dstSelIndex); static void build(::mlir::OpBuilder &, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, ::llvm::ArrayRef<::mlir::NamedAttribute> attributes = {}); static CvtScaleF32PkFp4Bf16Op create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, ::llvm::ArrayRef<::mlir::NamedAttribute> attributes = {}); static CvtScaleF32PkFp4Bf16Op create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, ::llvm::ArrayRef<::mlir::NamedAttribute> attributes = {}); static void build(::mlir::OpBuilder &, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, const Properties &properties, ::llvm::ArrayRef<::mlir::NamedAttribute> discardableAttributes = {}); static CvtScaleF32PkFp4Bf16Op create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, const Properties &properties, ::llvm::ArrayRef<::mlir::NamedAttribute> discardableAttributes = {}); static CvtScaleF32PkFp4Bf16Op create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, const Properties &properties, ::llvm::ArrayRef<::mlir::NamedAttribute> discardableAttributes = {}); ::llvm::LogicalResult verifyInvariantsImpl(); ::llvm::LogicalResult verifyInvariants(); static ::mlir::ParseResult parse(::mlir::OpAsmParser &parser, ::mlir::OperationState &result); void print(::mlir::OpAsmPrinter &_odsPrinter); void getEffects(::llvm::SmallVectorImpl<::mlir::SideEffects::EffectInstance<::mlir::MemoryEffects::Effect>> &effects); private: ::mlir::StringAttr getAttributeNameForIndex(unsigned index) { return getAttributeNameForIndex((*this)->getName(), index); } static ::mlir::StringAttr getAttributeNameForIndex(::mlir::OperationName name, unsigned index) { assert(index < 1 && "invalid attribute index"); assert(name.getStringRef() == getOperationName() && "invalid operation name"); assert(name.isRegistered() && "Operation isn't registered, missing a " "dependent dialect loading?"); return name.getAttributeNames()[index]; } public: }; } // namespace mlir::ROCDL MLIR_DECLARE_EXPLICIT_TYPE_ID(::mlir::ROCDL::CvtScaleF32PkFp4Bf16Op) MLIR_DECLARE_EXPLICIT_TYPE_ID(::mlir::ROCDL::detail::CvtScaleF32PkFp4Bf16OpGenericAdaptorBase::Properties) namespace mlir::ROCDL { //===----------------------------------------------------------------------===// // ::mlir::ROCDL::CvtScaleF32PkFp4F16Op declarations //===----------------------------------------------------------------------===// namespace detail { class CvtScaleF32PkFp4F16OpGenericAdaptorBase { public: struct Properties { using dstSelIndexTy = ::mlir::IntegerAttr; dstSelIndexTy dstSelIndex; auto getDstSelIndex() const { auto &propStorage = this->dstSelIndex; return ::llvm::cast<::mlir::IntegerAttr>(propStorage); } void setDstSelIndex(const ::mlir::IntegerAttr &propValue) { this->dstSelIndex = propValue; } bool operator==(const Properties &rhs) const { return rhs.dstSelIndex == this->dstSelIndex && true; } bool operator!=(const Properties &rhs) const { return !(*this == rhs); } }; protected: ::mlir::DictionaryAttr odsAttrs; ::std::optional<::mlir::OperationName> odsOpName; Properties properties; ::mlir::RegionRange odsRegions; public: CvtScaleF32PkFp4F16OpGenericAdaptorBase(::mlir::DictionaryAttr attrs, const Properties &properties, ::mlir::RegionRange regions = {}) : odsAttrs(attrs), properties(properties), odsRegions(regions) { if (odsAttrs) odsOpName.emplace("rocdl.cvt.scalef32.pk.fp4.f16", odsAttrs.getContext()); } CvtScaleF32PkFp4F16OpGenericAdaptorBase(CvtScaleF32PkFp4F16Op op); std::pair getODSOperandIndexAndLength(unsigned index, unsigned odsOperandsSize) { return {index, 1}; } const Properties &getProperties() { return properties; } ::mlir::DictionaryAttr getAttributes() { return odsAttrs; } ::mlir::IntegerAttr getDstSelIndexAttr() { auto attr = ::llvm::cast<::mlir::IntegerAttr>(getProperties().dstSelIndex); return attr; } uint32_t getDstSelIndex(); }; } // namespace detail template class CvtScaleF32PkFp4F16OpGenericAdaptor : public detail::CvtScaleF32PkFp4F16OpGenericAdaptorBase { using ValueT = ::llvm::detail::ValueOfRange; using Base = detail::CvtScaleF32PkFp4F16OpGenericAdaptorBase; static constexpr int odsIndex_oldVdst = 0; static constexpr int odsIndex_src = 1; static constexpr int odsIndex_scale = 2; public: CvtScaleF32PkFp4F16OpGenericAdaptor(RangeT values, ::mlir::DictionaryAttr attrs, const Properties &properties, ::mlir::RegionRange regions = {}) : Base(attrs, properties, regions), odsOperands(values) {} CvtScaleF32PkFp4F16OpGenericAdaptor(RangeT values, ::mlir::DictionaryAttr attrs, ::mlir::PropertyRef properties, ::mlir::RegionRange regions = {}) : CvtScaleF32PkFp4F16OpGenericAdaptor(values, attrs, (properties ? *properties.as() : Properties{}), regions) {} CvtScaleF32PkFp4F16OpGenericAdaptor(RangeT values, ::mlir::DictionaryAttr attrs = nullptr) : CvtScaleF32PkFp4F16OpGenericAdaptor(values, attrs, Properties{}, {}) {} CvtScaleF32PkFp4F16OpGenericAdaptor(RangeT values, const CvtScaleF32PkFp4F16OpGenericAdaptorBase &base) : Base(base), odsOperands(values) {} template >> CvtScaleF32PkFp4F16OpGenericAdaptor(RangeT values, LateInst op) : Base(op), odsOperands(values) {} std::pair getODSOperandIndexAndLength(unsigned index) { return Base::getODSOperandIndexAndLength(index, odsOperands.size()); } RangeT getODSOperands(unsigned index) { auto valueRange = getODSOperandIndexAndLength(index); return {std::next(odsOperands.begin(), valueRange.first), std::next(odsOperands.begin(), valueRange.first + valueRange.second)}; } ValueT getOldVdst() { return (*getODSOperands(0).begin()); } ValueT getSrc() { return (*getODSOperands(1).begin()); } ValueT getScale() { return (*getODSOperands(2).begin()); } RangeT getOperands() { return odsOperands; } private: RangeT odsOperands; }; class CvtScaleF32PkFp4F16OpAdaptor : public CvtScaleF32PkFp4F16OpGenericAdaptor<::mlir::ValueRange> { public: using CvtScaleF32PkFp4F16OpGenericAdaptor::CvtScaleF32PkFp4F16OpGenericAdaptor; CvtScaleF32PkFp4F16OpAdaptor(CvtScaleF32PkFp4F16Op op); ::llvm::LogicalResult verify(::mlir::Location loc); }; class CvtScaleF32PkFp4F16Op : public ::mlir::Op::Impl, ::mlir::OpTrait::ZeroSuccessors, ::mlir::OpTrait::NOperands<3>::Impl, ::mlir::OpTrait::OpInvariants, ::mlir::BytecodeOpInterface::Trait, ::mlir::ConditionallySpeculatable::Trait, ::mlir::OpTrait::AlwaysSpeculatableImplTrait, ::mlir::MemoryEffectOpInterface::Trait> { public: using Op::Op; using Op::print; using Adaptor = CvtScaleF32PkFp4F16OpAdaptor; template using GenericAdaptor = CvtScaleF32PkFp4F16OpGenericAdaptor; using FoldAdaptor = GenericAdaptor<::llvm::ArrayRef<::mlir::Attribute>>; static constexpr int odsIndex_oldVdst = 0; static constexpr int odsIndex_src = 1; static constexpr int odsIndex_scale = 2; using Properties = FoldAdaptor::Properties; static ::llvm::ArrayRef<::llvm::StringRef> getAttributeNames() { static ::llvm::StringRef attrNames[] = {::llvm::StringRef("dstSelIndex")}; return ::llvm::ArrayRef(attrNames); } ::mlir::StringAttr getDstSelIndexAttrName() { return getAttributeNameForIndex(0); } static ::mlir::StringAttr getDstSelIndexAttrName(::mlir::OperationName name) { return getAttributeNameForIndex(name, 0); } static constexpr ::llvm::StringLiteral getOperationName() { return ::llvm::StringLiteral("rocdl.cvt.scalef32.pk.fp4.f16"); } std::pair getODSOperandIndexAndLength(unsigned index) { return {index, 1}; } ::mlir::Operation::operand_range getODSOperands(unsigned index) { auto valueRange = getODSOperandIndexAndLength(index); return {std::next(getOperation()->operand_begin(), valueRange.first), std::next(getOperation()->operand_begin(), valueRange.first + valueRange.second)}; } ::mlir::TypedValue<::mlir::IntegerType> getOldVdst() { return ::llvm::cast<::mlir::TypedValue<::mlir::IntegerType>>(*getODSOperands(0).begin()); } ::mlir::TypedValue<::mlir::VectorType> getSrc() { return ::llvm::cast<::mlir::TypedValue<::mlir::VectorType>>(*getODSOperands(1).begin()); } ::mlir::TypedValue<::mlir::FloatType> getScale() { return ::llvm::cast<::mlir::TypedValue<::mlir::FloatType>>(*getODSOperands(2).begin()); } ::mlir::OpOperand &getOldVdstMutable() { auto range = getODSOperandIndexAndLength(0); return getOperation()->getOpOperand(range.first); } ::mlir::OpOperand &getSrcMutable() { auto range = getODSOperandIndexAndLength(1); return getOperation()->getOpOperand(range.first); } ::mlir::OpOperand &getScaleMutable() { auto range = getODSOperandIndexAndLength(2); return getOperation()->getOpOperand(range.first); } std::pair getODSResultIndexAndLength(unsigned index) { return {index, 1}; } ::mlir::Operation::result_range getODSResults(unsigned index) { auto valueRange = getODSResultIndexAndLength(index); return {std::next(getOperation()->result_begin(), valueRange.first), std::next(getOperation()->result_begin(), valueRange.first + valueRange.second)}; } ::mlir::TypedValue<::mlir::IntegerType> getRes() { return ::llvm::cast<::mlir::TypedValue<::mlir::IntegerType>>(*getODSResults(0).begin()); } static ::llvm::LogicalResult setPropertiesFromAttr(Properties &prop, ::mlir::Attribute attr, ::llvm::function_ref<::mlir::InFlightDiagnostic()> emitError); static ::mlir::Attribute getPropertiesAsAttr(::mlir::MLIRContext *ctx, const Properties &prop); static llvm::hash_code computePropertiesHash(const Properties &prop); static std::optional getInherentAttr(::mlir::MLIRContext *ctx, const Properties &prop, llvm::StringRef name); static void setInherentAttr(Properties &prop, llvm::StringRef name, mlir::Attribute value); static void populateInherentAttrs(::mlir::MLIRContext *ctx, const Properties &prop, ::mlir::NamedAttrList &attrs); static ::llvm::LogicalResult verifyInherentAttrs(::mlir::OperationName opName, ::mlir::NamedAttrList &attrs, llvm::function_ref<::mlir::InFlightDiagnostic()> emitError); static ::llvm::LogicalResult readProperties(::mlir::DialectBytecodeReader &reader, ::mlir::OperationState &state); void writeProperties(::mlir::DialectBytecodeWriter &writer); ::mlir::IntegerAttr getDstSelIndexAttr() { return ::llvm::cast<::mlir::IntegerAttr>(getProperties().dstSelIndex); } uint32_t getDstSelIndex(); void setDstSelIndexAttr(::mlir::IntegerAttr attr) { getProperties().dstSelIndex = attr; } void setDstSelIndex(uint32_t attrValue); static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::Type res, ::mlir::Value oldVdst, ::mlir::Value src, ::mlir::Value scale, ::mlir::IntegerAttr dstSelIndex); static CvtScaleF32PkFp4F16Op create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::Type res, ::mlir::Value oldVdst, ::mlir::Value src, ::mlir::Value scale, ::mlir::IntegerAttr dstSelIndex); static CvtScaleF32PkFp4F16Op create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::Type res, ::mlir::Value oldVdst, ::mlir::Value src, ::mlir::Value scale, ::mlir::IntegerAttr dstSelIndex); static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::Value oldVdst, ::mlir::Value src, ::mlir::Value scale, ::mlir::IntegerAttr dstSelIndex); static CvtScaleF32PkFp4F16Op create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::Value oldVdst, ::mlir::Value src, ::mlir::Value scale, ::mlir::IntegerAttr dstSelIndex); static CvtScaleF32PkFp4F16Op create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::Value oldVdst, ::mlir::Value src, ::mlir::Value scale, ::mlir::IntegerAttr dstSelIndex); static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::Type res, ::mlir::Value oldVdst, ::mlir::Value src, ::mlir::Value scale, uint32_t dstSelIndex); static CvtScaleF32PkFp4F16Op create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::Type res, ::mlir::Value oldVdst, ::mlir::Value src, ::mlir::Value scale, uint32_t dstSelIndex); static CvtScaleF32PkFp4F16Op create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::Type res, ::mlir::Value oldVdst, ::mlir::Value src, ::mlir::Value scale, uint32_t dstSelIndex); static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::Value oldVdst, ::mlir::Value src, ::mlir::Value scale, uint32_t dstSelIndex); static CvtScaleF32PkFp4F16Op create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::Value oldVdst, ::mlir::Value src, ::mlir::Value scale, uint32_t dstSelIndex); static CvtScaleF32PkFp4F16Op create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::Value oldVdst, ::mlir::Value src, ::mlir::Value scale, uint32_t dstSelIndex); static void build(::mlir::OpBuilder &, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, ::llvm::ArrayRef<::mlir::NamedAttribute> attributes = {}); static CvtScaleF32PkFp4F16Op create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, ::llvm::ArrayRef<::mlir::NamedAttribute> attributes = {}); static CvtScaleF32PkFp4F16Op create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, ::llvm::ArrayRef<::mlir::NamedAttribute> attributes = {}); static void build(::mlir::OpBuilder &, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, const Properties &properties, ::llvm::ArrayRef<::mlir::NamedAttribute> discardableAttributes = {}); static CvtScaleF32PkFp4F16Op create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, const Properties &properties, ::llvm::ArrayRef<::mlir::NamedAttribute> discardableAttributes = {}); static CvtScaleF32PkFp4F16Op create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, const Properties &properties, ::llvm::ArrayRef<::mlir::NamedAttribute> discardableAttributes = {}); ::llvm::LogicalResult verifyInvariantsImpl(); ::llvm::LogicalResult verifyInvariants(); static ::mlir::ParseResult parse(::mlir::OpAsmParser &parser, ::mlir::OperationState &result); void print(::mlir::OpAsmPrinter &_odsPrinter); void getEffects(::llvm::SmallVectorImpl<::mlir::SideEffects::EffectInstance<::mlir::MemoryEffects::Effect>> &effects); private: ::mlir::StringAttr getAttributeNameForIndex(unsigned index) { return getAttributeNameForIndex((*this)->getName(), index); } static ::mlir::StringAttr getAttributeNameForIndex(::mlir::OperationName name, unsigned index) { assert(index < 1 && "invalid attribute index"); assert(name.getStringRef() == getOperationName() && "invalid operation name"); assert(name.isRegistered() && "Operation isn't registered, missing a " "dependent dialect loading?"); return name.getAttributeNames()[index]; } public: }; } // namespace mlir::ROCDL MLIR_DECLARE_EXPLICIT_TYPE_ID(::mlir::ROCDL::CvtScaleF32PkFp4F16Op) MLIR_DECLARE_EXPLICIT_TYPE_ID(::mlir::ROCDL::detail::CvtScaleF32PkFp4F16OpGenericAdaptorBase::Properties) namespace mlir::ROCDL { //===----------------------------------------------------------------------===// // ::mlir::ROCDL::CvtScaleF32PkFp4F32Op declarations //===----------------------------------------------------------------------===// namespace detail { class CvtScaleF32PkFp4F32OpGenericAdaptorBase { public: struct Properties { using dstSelIndexTy = ::mlir::IntegerAttr; dstSelIndexTy dstSelIndex; auto getDstSelIndex() const { auto &propStorage = this->dstSelIndex; return ::llvm::cast<::mlir::IntegerAttr>(propStorage); } void setDstSelIndex(const ::mlir::IntegerAttr &propValue) { this->dstSelIndex = propValue; } bool operator==(const Properties &rhs) const { return rhs.dstSelIndex == this->dstSelIndex && true; } bool operator!=(const Properties &rhs) const { return !(*this == rhs); } }; protected: ::mlir::DictionaryAttr odsAttrs; ::std::optional<::mlir::OperationName> odsOpName; Properties properties; ::mlir::RegionRange odsRegions; public: CvtScaleF32PkFp4F32OpGenericAdaptorBase(::mlir::DictionaryAttr attrs, const Properties &properties, ::mlir::RegionRange regions = {}) : odsAttrs(attrs), properties(properties), odsRegions(regions) { if (odsAttrs) odsOpName.emplace("rocdl.cvt.scalef32.pk.fp4.f32", odsAttrs.getContext()); } CvtScaleF32PkFp4F32OpGenericAdaptorBase(CvtScaleF32PkFp4F32Op op); std::pair getODSOperandIndexAndLength(unsigned index, unsigned odsOperandsSize) { return {index, 1}; } const Properties &getProperties() { return properties; } ::mlir::DictionaryAttr getAttributes() { return odsAttrs; } ::mlir::IntegerAttr getDstSelIndexAttr() { auto attr = ::llvm::cast<::mlir::IntegerAttr>(getProperties().dstSelIndex); return attr; } uint32_t getDstSelIndex(); }; } // namespace detail template class CvtScaleF32PkFp4F32OpGenericAdaptor : public detail::CvtScaleF32PkFp4F32OpGenericAdaptorBase { using ValueT = ::llvm::detail::ValueOfRange; using Base = detail::CvtScaleF32PkFp4F32OpGenericAdaptorBase; static constexpr int odsIndex_oldVdst = 0; static constexpr int odsIndex_src0 = 1; static constexpr int odsIndex_src1 = 2; static constexpr int odsIndex_scale = 3; public: CvtScaleF32PkFp4F32OpGenericAdaptor(RangeT values, ::mlir::DictionaryAttr attrs, const Properties &properties, ::mlir::RegionRange regions = {}) : Base(attrs, properties, regions), odsOperands(values) {} CvtScaleF32PkFp4F32OpGenericAdaptor(RangeT values, ::mlir::DictionaryAttr attrs, ::mlir::PropertyRef properties, ::mlir::RegionRange regions = {}) : CvtScaleF32PkFp4F32OpGenericAdaptor(values, attrs, (properties ? *properties.as() : Properties{}), regions) {} CvtScaleF32PkFp4F32OpGenericAdaptor(RangeT values, ::mlir::DictionaryAttr attrs = nullptr) : CvtScaleF32PkFp4F32OpGenericAdaptor(values, attrs, Properties{}, {}) {} CvtScaleF32PkFp4F32OpGenericAdaptor(RangeT values, const CvtScaleF32PkFp4F32OpGenericAdaptorBase &base) : Base(base), odsOperands(values) {} template >> CvtScaleF32PkFp4F32OpGenericAdaptor(RangeT values, LateInst op) : Base(op), odsOperands(values) {} std::pair getODSOperandIndexAndLength(unsigned index) { return Base::getODSOperandIndexAndLength(index, odsOperands.size()); } RangeT getODSOperands(unsigned index) { auto valueRange = getODSOperandIndexAndLength(index); return {std::next(odsOperands.begin(), valueRange.first), std::next(odsOperands.begin(), valueRange.first + valueRange.second)}; } ValueT getOldVdst() { return (*getODSOperands(0).begin()); } ValueT getSrc0() { return (*getODSOperands(1).begin()); } ValueT getSrc1() { return (*getODSOperands(2).begin()); } ValueT getScale() { return (*getODSOperands(3).begin()); } RangeT getOperands() { return odsOperands; } private: RangeT odsOperands; }; class CvtScaleF32PkFp4F32OpAdaptor : public CvtScaleF32PkFp4F32OpGenericAdaptor<::mlir::ValueRange> { public: using CvtScaleF32PkFp4F32OpGenericAdaptor::CvtScaleF32PkFp4F32OpGenericAdaptor; CvtScaleF32PkFp4F32OpAdaptor(CvtScaleF32PkFp4F32Op op); ::llvm::LogicalResult verify(::mlir::Location loc); }; class CvtScaleF32PkFp4F32Op : public ::mlir::Op::Impl, ::mlir::OpTrait::ZeroSuccessors, ::mlir::OpTrait::NOperands<4>::Impl, ::mlir::OpTrait::OpInvariants, ::mlir::BytecodeOpInterface::Trait, ::mlir::ConditionallySpeculatable::Trait, ::mlir::OpTrait::AlwaysSpeculatableImplTrait, ::mlir::MemoryEffectOpInterface::Trait> { public: using Op::Op; using Op::print; using Adaptor = CvtScaleF32PkFp4F32OpAdaptor; template using GenericAdaptor = CvtScaleF32PkFp4F32OpGenericAdaptor; using FoldAdaptor = GenericAdaptor<::llvm::ArrayRef<::mlir::Attribute>>; static constexpr int odsIndex_oldVdst = 0; static constexpr int odsIndex_src0 = 1; static constexpr int odsIndex_src1 = 2; static constexpr int odsIndex_scale = 3; using Properties = FoldAdaptor::Properties; static ::llvm::ArrayRef<::llvm::StringRef> getAttributeNames() { static ::llvm::StringRef attrNames[] = {::llvm::StringRef("dstSelIndex")}; return ::llvm::ArrayRef(attrNames); } ::mlir::StringAttr getDstSelIndexAttrName() { return getAttributeNameForIndex(0); } static ::mlir::StringAttr getDstSelIndexAttrName(::mlir::OperationName name) { return getAttributeNameForIndex(name, 0); } static constexpr ::llvm::StringLiteral getOperationName() { return ::llvm::StringLiteral("rocdl.cvt.scalef32.pk.fp4.f32"); } std::pair getODSOperandIndexAndLength(unsigned index) { return {index, 1}; } ::mlir::Operation::operand_range getODSOperands(unsigned index) { auto valueRange = getODSOperandIndexAndLength(index); return {std::next(getOperation()->operand_begin(), valueRange.first), std::next(getOperation()->operand_begin(), valueRange.first + valueRange.second)}; } ::mlir::TypedValue<::mlir::IntegerType> getOldVdst() { return ::llvm::cast<::mlir::TypedValue<::mlir::IntegerType>>(*getODSOperands(0).begin()); } ::mlir::TypedValue<::mlir::FloatType> getSrc0() { return ::llvm::cast<::mlir::TypedValue<::mlir::FloatType>>(*getODSOperands(1).begin()); } ::mlir::TypedValue<::mlir::FloatType> getSrc1() { return ::llvm::cast<::mlir::TypedValue<::mlir::FloatType>>(*getODSOperands(2).begin()); } ::mlir::TypedValue<::mlir::FloatType> getScale() { return ::llvm::cast<::mlir::TypedValue<::mlir::FloatType>>(*getODSOperands(3).begin()); } ::mlir::OpOperand &getOldVdstMutable() { auto range = getODSOperandIndexAndLength(0); return getOperation()->getOpOperand(range.first); } ::mlir::OpOperand &getSrc0Mutable() { auto range = getODSOperandIndexAndLength(1); return getOperation()->getOpOperand(range.first); } ::mlir::OpOperand &getSrc1Mutable() { auto range = getODSOperandIndexAndLength(2); return getOperation()->getOpOperand(range.first); } ::mlir::OpOperand &getScaleMutable() { auto range = getODSOperandIndexAndLength(3); return getOperation()->getOpOperand(range.first); } std::pair getODSResultIndexAndLength(unsigned index) { return {index, 1}; } ::mlir::Operation::result_range getODSResults(unsigned index) { auto valueRange = getODSResultIndexAndLength(index); return {std::next(getOperation()->result_begin(), valueRange.first), std::next(getOperation()->result_begin(), valueRange.first + valueRange.second)}; } ::mlir::TypedValue<::mlir::IntegerType> getRes() { return ::llvm::cast<::mlir::TypedValue<::mlir::IntegerType>>(*getODSResults(0).begin()); } static ::llvm::LogicalResult setPropertiesFromAttr(Properties &prop, ::mlir::Attribute attr, ::llvm::function_ref<::mlir::InFlightDiagnostic()> emitError); static ::mlir::Attribute getPropertiesAsAttr(::mlir::MLIRContext *ctx, const Properties &prop); static llvm::hash_code computePropertiesHash(const Properties &prop); static std::optional getInherentAttr(::mlir::MLIRContext *ctx, const Properties &prop, llvm::StringRef name); static void setInherentAttr(Properties &prop, llvm::StringRef name, mlir::Attribute value); static void populateInherentAttrs(::mlir::MLIRContext *ctx, const Properties &prop, ::mlir::NamedAttrList &attrs); static ::llvm::LogicalResult verifyInherentAttrs(::mlir::OperationName opName, ::mlir::NamedAttrList &attrs, llvm::function_ref<::mlir::InFlightDiagnostic()> emitError); static ::llvm::LogicalResult readProperties(::mlir::DialectBytecodeReader &reader, ::mlir::OperationState &state); void writeProperties(::mlir::DialectBytecodeWriter &writer); ::mlir::IntegerAttr getDstSelIndexAttr() { return ::llvm::cast<::mlir::IntegerAttr>(getProperties().dstSelIndex); } uint32_t getDstSelIndex(); void setDstSelIndexAttr(::mlir::IntegerAttr attr) { getProperties().dstSelIndex = attr; } void setDstSelIndex(uint32_t attrValue); static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::Type res, ::mlir::Value oldVdst, ::mlir::Value src0, ::mlir::Value src1, ::mlir::Value scale, ::mlir::IntegerAttr dstSelIndex); static CvtScaleF32PkFp4F32Op create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::Type res, ::mlir::Value oldVdst, ::mlir::Value src0, ::mlir::Value src1, ::mlir::Value scale, ::mlir::IntegerAttr dstSelIndex); static CvtScaleF32PkFp4F32Op create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::Type res, ::mlir::Value oldVdst, ::mlir::Value src0, ::mlir::Value src1, ::mlir::Value scale, ::mlir::IntegerAttr dstSelIndex); static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::Value oldVdst, ::mlir::Value src0, ::mlir::Value src1, ::mlir::Value scale, ::mlir::IntegerAttr dstSelIndex); static CvtScaleF32PkFp4F32Op create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::Value oldVdst, ::mlir::Value src0, ::mlir::Value src1, ::mlir::Value scale, ::mlir::IntegerAttr dstSelIndex); static CvtScaleF32PkFp4F32Op create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::Value oldVdst, ::mlir::Value src0, ::mlir::Value src1, ::mlir::Value scale, ::mlir::IntegerAttr dstSelIndex); static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::Type res, ::mlir::Value oldVdst, ::mlir::Value src0, ::mlir::Value src1, ::mlir::Value scale, uint32_t dstSelIndex); static CvtScaleF32PkFp4F32Op create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::Type res, ::mlir::Value oldVdst, ::mlir::Value src0, ::mlir::Value src1, ::mlir::Value scale, uint32_t dstSelIndex); static CvtScaleF32PkFp4F32Op create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::Type res, ::mlir::Value oldVdst, ::mlir::Value src0, ::mlir::Value src1, ::mlir::Value scale, uint32_t dstSelIndex); static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::Value oldVdst, ::mlir::Value src0, ::mlir::Value src1, ::mlir::Value scale, uint32_t dstSelIndex); static CvtScaleF32PkFp4F32Op create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::Value oldVdst, ::mlir::Value src0, ::mlir::Value src1, ::mlir::Value scale, uint32_t dstSelIndex); static CvtScaleF32PkFp4F32Op create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::Value oldVdst, ::mlir::Value src0, ::mlir::Value src1, ::mlir::Value scale, uint32_t dstSelIndex); static void build(::mlir::OpBuilder &, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, ::llvm::ArrayRef<::mlir::NamedAttribute> attributes = {}); static CvtScaleF32PkFp4F32Op create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, ::llvm::ArrayRef<::mlir::NamedAttribute> attributes = {}); static CvtScaleF32PkFp4F32Op create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, ::llvm::ArrayRef<::mlir::NamedAttribute> attributes = {}); static void build(::mlir::OpBuilder &, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, const Properties &properties, ::llvm::ArrayRef<::mlir::NamedAttribute> discardableAttributes = {}); static CvtScaleF32PkFp4F32Op create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, const Properties &properties, ::llvm::ArrayRef<::mlir::NamedAttribute> discardableAttributes = {}); static CvtScaleF32PkFp4F32Op create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, const Properties &properties, ::llvm::ArrayRef<::mlir::NamedAttribute> discardableAttributes = {}); ::llvm::LogicalResult verifyInvariantsImpl(); ::llvm::LogicalResult verifyInvariants(); static ::mlir::ParseResult parse(::mlir::OpAsmParser &parser, ::mlir::OperationState &result); void print(::mlir::OpAsmPrinter &_odsPrinter); void getEffects(::llvm::SmallVectorImpl<::mlir::SideEffects::EffectInstance<::mlir::MemoryEffects::Effect>> &effects); private: ::mlir::StringAttr getAttributeNameForIndex(unsigned index) { return getAttributeNameForIndex((*this)->getName(), index); } static ::mlir::StringAttr getAttributeNameForIndex(::mlir::OperationName name, unsigned index) { assert(index < 1 && "invalid attribute index"); assert(name.getStringRef() == getOperationName() && "invalid operation name"); assert(name.isRegistered() && "Operation isn't registered, missing a " "dependent dialect loading?"); return name.getAttributeNames()[index]; } public: }; } // namespace mlir::ROCDL MLIR_DECLARE_EXPLICIT_TYPE_ID(::mlir::ROCDL::CvtScaleF32PkFp4F32Op) MLIR_DECLARE_EXPLICIT_TYPE_ID(::mlir::ROCDL::detail::CvtScaleF32PkFp4F32OpGenericAdaptorBase::Properties) namespace mlir::ROCDL { //===----------------------------------------------------------------------===// // ::mlir::ROCDL::CvtScaleF32PkFp8Bf16Op declarations //===----------------------------------------------------------------------===// namespace detail { class CvtScaleF32PkFp8Bf16OpGenericAdaptorBase { public: struct Properties { using dstLoHiSelTy = ::mlir::IntegerAttr; dstLoHiSelTy dstLoHiSel; auto getDstLoHiSel() const { auto &propStorage = this->dstLoHiSel; return ::llvm::cast<::mlir::IntegerAttr>(propStorage); } void setDstLoHiSel(const ::mlir::IntegerAttr &propValue) { this->dstLoHiSel = propValue; } bool operator==(const Properties &rhs) const { return rhs.dstLoHiSel == this->dstLoHiSel && true; } bool operator!=(const Properties &rhs) const { return !(*this == rhs); } }; protected: ::mlir::DictionaryAttr odsAttrs; ::std::optional<::mlir::OperationName> odsOpName; Properties properties; ::mlir::RegionRange odsRegions; public: CvtScaleF32PkFp8Bf16OpGenericAdaptorBase(::mlir::DictionaryAttr attrs, const Properties &properties, ::mlir::RegionRange regions = {}) : odsAttrs(attrs), properties(properties), odsRegions(regions) { if (odsAttrs) odsOpName.emplace("rocdl.cvt.scalef32.pk.fp8.bf16", odsAttrs.getContext()); } CvtScaleF32PkFp8Bf16OpGenericAdaptorBase(CvtScaleF32PkFp8Bf16Op op); std::pair getODSOperandIndexAndLength(unsigned index, unsigned odsOperandsSize) { return {index, 1}; } const Properties &getProperties() { return properties; } ::mlir::DictionaryAttr getAttributes() { return odsAttrs; } ::mlir::IntegerAttr getDstLoHiSelAttr() { auto attr = ::llvm::cast<::mlir::IntegerAttr>(getProperties().dstLoHiSel); return attr; } bool getDstLoHiSel(); }; } // namespace detail template class CvtScaleF32PkFp8Bf16OpGenericAdaptor : public detail::CvtScaleF32PkFp8Bf16OpGenericAdaptorBase { using ValueT = ::llvm::detail::ValueOfRange; using Base = detail::CvtScaleF32PkFp8Bf16OpGenericAdaptorBase; static constexpr int odsIndex_oldVdst = 0; static constexpr int odsIndex_src0 = 1; static constexpr int odsIndex_scale = 2; public: CvtScaleF32PkFp8Bf16OpGenericAdaptor(RangeT values, ::mlir::DictionaryAttr attrs, const Properties &properties, ::mlir::RegionRange regions = {}) : Base(attrs, properties, regions), odsOperands(values) {} CvtScaleF32PkFp8Bf16OpGenericAdaptor(RangeT values, ::mlir::DictionaryAttr attrs, ::mlir::PropertyRef properties, ::mlir::RegionRange regions = {}) : CvtScaleF32PkFp8Bf16OpGenericAdaptor(values, attrs, (properties ? *properties.as() : Properties{}), regions) {} CvtScaleF32PkFp8Bf16OpGenericAdaptor(RangeT values, ::mlir::DictionaryAttr attrs = nullptr) : CvtScaleF32PkFp8Bf16OpGenericAdaptor(values, attrs, Properties{}, {}) {} CvtScaleF32PkFp8Bf16OpGenericAdaptor(RangeT values, const CvtScaleF32PkFp8Bf16OpGenericAdaptorBase &base) : Base(base), odsOperands(values) {} template >> CvtScaleF32PkFp8Bf16OpGenericAdaptor(RangeT values, LateInst op) : Base(op), odsOperands(values) {} std::pair getODSOperandIndexAndLength(unsigned index) { return Base::getODSOperandIndexAndLength(index, odsOperands.size()); } RangeT getODSOperands(unsigned index) { auto valueRange = getODSOperandIndexAndLength(index); return {std::next(odsOperands.begin(), valueRange.first), std::next(odsOperands.begin(), valueRange.first + valueRange.second)}; } ValueT getOldVdst() { return (*getODSOperands(0).begin()); } ValueT getSrc0() { return (*getODSOperands(1).begin()); } ValueT getScale() { return (*getODSOperands(2).begin()); } RangeT getOperands() { return odsOperands; } private: RangeT odsOperands; }; class CvtScaleF32PkFp8Bf16OpAdaptor : public CvtScaleF32PkFp8Bf16OpGenericAdaptor<::mlir::ValueRange> { public: using CvtScaleF32PkFp8Bf16OpGenericAdaptor::CvtScaleF32PkFp8Bf16OpGenericAdaptor; CvtScaleF32PkFp8Bf16OpAdaptor(CvtScaleF32PkFp8Bf16Op op); ::llvm::LogicalResult verify(::mlir::Location loc); }; class CvtScaleF32PkFp8Bf16Op : public ::mlir::Op::Impl, ::mlir::OpTrait::ZeroSuccessors, ::mlir::OpTrait::NOperands<3>::Impl, ::mlir::OpTrait::OpInvariants, ::mlir::BytecodeOpInterface::Trait, ::mlir::ConditionallySpeculatable::Trait, ::mlir::OpTrait::AlwaysSpeculatableImplTrait, ::mlir::MemoryEffectOpInterface::Trait> { public: using Op::Op; using Op::print; using Adaptor = CvtScaleF32PkFp8Bf16OpAdaptor; template using GenericAdaptor = CvtScaleF32PkFp8Bf16OpGenericAdaptor; using FoldAdaptor = GenericAdaptor<::llvm::ArrayRef<::mlir::Attribute>>; static constexpr int odsIndex_oldVdst = 0; static constexpr int odsIndex_src0 = 1; static constexpr int odsIndex_scale = 2; using Properties = FoldAdaptor::Properties; static ::llvm::ArrayRef<::llvm::StringRef> getAttributeNames() { static ::llvm::StringRef attrNames[] = {::llvm::StringRef("dstLoHiSel")}; return ::llvm::ArrayRef(attrNames); } ::mlir::StringAttr getDstLoHiSelAttrName() { return getAttributeNameForIndex(0); } static ::mlir::StringAttr getDstLoHiSelAttrName(::mlir::OperationName name) { return getAttributeNameForIndex(name, 0); } static constexpr ::llvm::StringLiteral getOperationName() { return ::llvm::StringLiteral("rocdl.cvt.scalef32.pk.fp8.bf16"); } std::pair getODSOperandIndexAndLength(unsigned index) { return {index, 1}; } ::mlir::Operation::operand_range getODSOperands(unsigned index) { auto valueRange = getODSOperandIndexAndLength(index); return {std::next(getOperation()->operand_begin(), valueRange.first), std::next(getOperation()->operand_begin(), valueRange.first + valueRange.second)}; } ::mlir::TypedValue<::mlir::VectorType> getOldVdst() { return ::llvm::cast<::mlir::TypedValue<::mlir::VectorType>>(*getODSOperands(0).begin()); } ::mlir::TypedValue<::mlir::VectorType> getSrc0() { return ::llvm::cast<::mlir::TypedValue<::mlir::VectorType>>(*getODSOperands(1).begin()); } ::mlir::TypedValue<::mlir::FloatType> getScale() { return ::llvm::cast<::mlir::TypedValue<::mlir::FloatType>>(*getODSOperands(2).begin()); } ::mlir::OpOperand &getOldVdstMutable() { auto range = getODSOperandIndexAndLength(0); return getOperation()->getOpOperand(range.first); } ::mlir::OpOperand &getSrc0Mutable() { auto range = getODSOperandIndexAndLength(1); return getOperation()->getOpOperand(range.first); } ::mlir::OpOperand &getScaleMutable() { auto range = getODSOperandIndexAndLength(2); return getOperation()->getOpOperand(range.first); } std::pair getODSResultIndexAndLength(unsigned index) { return {index, 1}; } ::mlir::Operation::result_range getODSResults(unsigned index) { auto valueRange = getODSResultIndexAndLength(index); return {std::next(getOperation()->result_begin(), valueRange.first), std::next(getOperation()->result_begin(), valueRange.first + valueRange.second)}; } ::mlir::TypedValue<::mlir::VectorType> getRes() { return ::llvm::cast<::mlir::TypedValue<::mlir::VectorType>>(*getODSResults(0).begin()); } static ::llvm::LogicalResult setPropertiesFromAttr(Properties &prop, ::mlir::Attribute attr, ::llvm::function_ref<::mlir::InFlightDiagnostic()> emitError); static ::mlir::Attribute getPropertiesAsAttr(::mlir::MLIRContext *ctx, const Properties &prop); static llvm::hash_code computePropertiesHash(const Properties &prop); static std::optional getInherentAttr(::mlir::MLIRContext *ctx, const Properties &prop, llvm::StringRef name); static void setInherentAttr(Properties &prop, llvm::StringRef name, mlir::Attribute value); static void populateInherentAttrs(::mlir::MLIRContext *ctx, const Properties &prop, ::mlir::NamedAttrList &attrs); static ::llvm::LogicalResult verifyInherentAttrs(::mlir::OperationName opName, ::mlir::NamedAttrList &attrs, llvm::function_ref<::mlir::InFlightDiagnostic()> emitError); static ::llvm::LogicalResult readProperties(::mlir::DialectBytecodeReader &reader, ::mlir::OperationState &state); void writeProperties(::mlir::DialectBytecodeWriter &writer); ::mlir::IntegerAttr getDstLoHiSelAttr() { return ::llvm::cast<::mlir::IntegerAttr>(getProperties().dstLoHiSel); } bool getDstLoHiSel(); void setDstLoHiSelAttr(::mlir::IntegerAttr attr) { getProperties().dstLoHiSel = attr; } void setDstLoHiSel(bool attrValue); static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::Type res, ::mlir::Value oldVdst, ::mlir::Value src0, ::mlir::Value scale, ::mlir::IntegerAttr dstLoHiSel); static CvtScaleF32PkFp8Bf16Op create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::Type res, ::mlir::Value oldVdst, ::mlir::Value src0, ::mlir::Value scale, ::mlir::IntegerAttr dstLoHiSel); static CvtScaleF32PkFp8Bf16Op create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::Type res, ::mlir::Value oldVdst, ::mlir::Value src0, ::mlir::Value scale, ::mlir::IntegerAttr dstLoHiSel); static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::Value oldVdst, ::mlir::Value src0, ::mlir::Value scale, ::mlir::IntegerAttr dstLoHiSel); static CvtScaleF32PkFp8Bf16Op create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::Value oldVdst, ::mlir::Value src0, ::mlir::Value scale, ::mlir::IntegerAttr dstLoHiSel); static CvtScaleF32PkFp8Bf16Op create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::Value oldVdst, ::mlir::Value src0, ::mlir::Value scale, ::mlir::IntegerAttr dstLoHiSel); static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::Type res, ::mlir::Value oldVdst, ::mlir::Value src0, ::mlir::Value scale, bool dstLoHiSel); static CvtScaleF32PkFp8Bf16Op create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::Type res, ::mlir::Value oldVdst, ::mlir::Value src0, ::mlir::Value scale, bool dstLoHiSel); static CvtScaleF32PkFp8Bf16Op create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::Type res, ::mlir::Value oldVdst, ::mlir::Value src0, ::mlir::Value scale, bool dstLoHiSel); static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::Value oldVdst, ::mlir::Value src0, ::mlir::Value scale, bool dstLoHiSel); static CvtScaleF32PkFp8Bf16Op create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::Value oldVdst, ::mlir::Value src0, ::mlir::Value scale, bool dstLoHiSel); static CvtScaleF32PkFp8Bf16Op create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::Value oldVdst, ::mlir::Value src0, ::mlir::Value scale, bool dstLoHiSel); static void build(::mlir::OpBuilder &, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, ::llvm::ArrayRef<::mlir::NamedAttribute> attributes = {}); static CvtScaleF32PkFp8Bf16Op create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, ::llvm::ArrayRef<::mlir::NamedAttribute> attributes = {}); static CvtScaleF32PkFp8Bf16Op create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, ::llvm::ArrayRef<::mlir::NamedAttribute> attributes = {}); static void build(::mlir::OpBuilder &, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, const Properties &properties, ::llvm::ArrayRef<::mlir::NamedAttribute> discardableAttributes = {}); static CvtScaleF32PkFp8Bf16Op create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, const Properties &properties, ::llvm::ArrayRef<::mlir::NamedAttribute> discardableAttributes = {}); static CvtScaleF32PkFp8Bf16Op create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, const Properties &properties, ::llvm::ArrayRef<::mlir::NamedAttribute> discardableAttributes = {}); ::llvm::LogicalResult verifyInvariantsImpl(); ::llvm::LogicalResult verifyInvariants(); static ::mlir::ParseResult parse(::mlir::OpAsmParser &parser, ::mlir::OperationState &result); void print(::mlir::OpAsmPrinter &_odsPrinter); void getEffects(::llvm::SmallVectorImpl<::mlir::SideEffects::EffectInstance<::mlir::MemoryEffects::Effect>> &effects); private: ::mlir::StringAttr getAttributeNameForIndex(unsigned index) { return getAttributeNameForIndex((*this)->getName(), index); } static ::mlir::StringAttr getAttributeNameForIndex(::mlir::OperationName name, unsigned index) { assert(index < 1 && "invalid attribute index"); assert(name.getStringRef() == getOperationName() && "invalid operation name"); assert(name.isRegistered() && "Operation isn't registered, missing a " "dependent dialect loading?"); return name.getAttributeNames()[index]; } public: }; } // namespace mlir::ROCDL MLIR_DECLARE_EXPLICIT_TYPE_ID(::mlir::ROCDL::CvtScaleF32PkFp8Bf16Op) MLIR_DECLARE_EXPLICIT_TYPE_ID(::mlir::ROCDL::detail::CvtScaleF32PkFp8Bf16OpGenericAdaptorBase::Properties) namespace mlir::ROCDL { //===----------------------------------------------------------------------===// // ::mlir::ROCDL::CvtScaleF32PkFp8F16Op declarations //===----------------------------------------------------------------------===// namespace detail { class CvtScaleF32PkFp8F16OpGenericAdaptorBase { public: struct Properties { using dstLoHiSelTy = ::mlir::IntegerAttr; dstLoHiSelTy dstLoHiSel; auto getDstLoHiSel() const { auto &propStorage = this->dstLoHiSel; return ::llvm::cast<::mlir::IntegerAttr>(propStorage); } void setDstLoHiSel(const ::mlir::IntegerAttr &propValue) { this->dstLoHiSel = propValue; } bool operator==(const Properties &rhs) const { return rhs.dstLoHiSel == this->dstLoHiSel && true; } bool operator!=(const Properties &rhs) const { return !(*this == rhs); } }; protected: ::mlir::DictionaryAttr odsAttrs; ::std::optional<::mlir::OperationName> odsOpName; Properties properties; ::mlir::RegionRange odsRegions; public: CvtScaleF32PkFp8F16OpGenericAdaptorBase(::mlir::DictionaryAttr attrs, const Properties &properties, ::mlir::RegionRange regions = {}) : odsAttrs(attrs), properties(properties), odsRegions(regions) { if (odsAttrs) odsOpName.emplace("rocdl.cvt.scalef32.pk.fp8.f16", odsAttrs.getContext()); } CvtScaleF32PkFp8F16OpGenericAdaptorBase(CvtScaleF32PkFp8F16Op op); std::pair getODSOperandIndexAndLength(unsigned index, unsigned odsOperandsSize) { return {index, 1}; } const Properties &getProperties() { return properties; } ::mlir::DictionaryAttr getAttributes() { return odsAttrs; } ::mlir::IntegerAttr getDstLoHiSelAttr() { auto attr = ::llvm::cast<::mlir::IntegerAttr>(getProperties().dstLoHiSel); return attr; } bool getDstLoHiSel(); }; } // namespace detail template class CvtScaleF32PkFp8F16OpGenericAdaptor : public detail::CvtScaleF32PkFp8F16OpGenericAdaptorBase { using ValueT = ::llvm::detail::ValueOfRange; using Base = detail::CvtScaleF32PkFp8F16OpGenericAdaptorBase; static constexpr int odsIndex_oldVdst = 0; static constexpr int odsIndex_src0 = 1; static constexpr int odsIndex_scale = 2; public: CvtScaleF32PkFp8F16OpGenericAdaptor(RangeT values, ::mlir::DictionaryAttr attrs, const Properties &properties, ::mlir::RegionRange regions = {}) : Base(attrs, properties, regions), odsOperands(values) {} CvtScaleF32PkFp8F16OpGenericAdaptor(RangeT values, ::mlir::DictionaryAttr attrs, ::mlir::PropertyRef properties, ::mlir::RegionRange regions = {}) : CvtScaleF32PkFp8F16OpGenericAdaptor(values, attrs, (properties ? *properties.as() : Properties{}), regions) {} CvtScaleF32PkFp8F16OpGenericAdaptor(RangeT values, ::mlir::DictionaryAttr attrs = nullptr) : CvtScaleF32PkFp8F16OpGenericAdaptor(values, attrs, Properties{}, {}) {} CvtScaleF32PkFp8F16OpGenericAdaptor(RangeT values, const CvtScaleF32PkFp8F16OpGenericAdaptorBase &base) : Base(base), odsOperands(values) {} template >> CvtScaleF32PkFp8F16OpGenericAdaptor(RangeT values, LateInst op) : Base(op), odsOperands(values) {} std::pair getODSOperandIndexAndLength(unsigned index) { return Base::getODSOperandIndexAndLength(index, odsOperands.size()); } RangeT getODSOperands(unsigned index) { auto valueRange = getODSOperandIndexAndLength(index); return {std::next(odsOperands.begin(), valueRange.first), std::next(odsOperands.begin(), valueRange.first + valueRange.second)}; } ValueT getOldVdst() { return (*getODSOperands(0).begin()); } ValueT getSrc0() { return (*getODSOperands(1).begin()); } ValueT getScale() { return (*getODSOperands(2).begin()); } RangeT getOperands() { return odsOperands; } private: RangeT odsOperands; }; class CvtScaleF32PkFp8F16OpAdaptor : public CvtScaleF32PkFp8F16OpGenericAdaptor<::mlir::ValueRange> { public: using CvtScaleF32PkFp8F16OpGenericAdaptor::CvtScaleF32PkFp8F16OpGenericAdaptor; CvtScaleF32PkFp8F16OpAdaptor(CvtScaleF32PkFp8F16Op op); ::llvm::LogicalResult verify(::mlir::Location loc); }; class CvtScaleF32PkFp8F16Op : public ::mlir::Op::Impl, ::mlir::OpTrait::ZeroSuccessors, ::mlir::OpTrait::NOperands<3>::Impl, ::mlir::OpTrait::OpInvariants, ::mlir::BytecodeOpInterface::Trait, ::mlir::ConditionallySpeculatable::Trait, ::mlir::OpTrait::AlwaysSpeculatableImplTrait, ::mlir::MemoryEffectOpInterface::Trait> { public: using Op::Op; using Op::print; using Adaptor = CvtScaleF32PkFp8F16OpAdaptor; template using GenericAdaptor = CvtScaleF32PkFp8F16OpGenericAdaptor; using FoldAdaptor = GenericAdaptor<::llvm::ArrayRef<::mlir::Attribute>>; static constexpr int odsIndex_oldVdst = 0; static constexpr int odsIndex_src0 = 1; static constexpr int odsIndex_scale = 2; using Properties = FoldAdaptor::Properties; static ::llvm::ArrayRef<::llvm::StringRef> getAttributeNames() { static ::llvm::StringRef attrNames[] = {::llvm::StringRef("dstLoHiSel")}; return ::llvm::ArrayRef(attrNames); } ::mlir::StringAttr getDstLoHiSelAttrName() { return getAttributeNameForIndex(0); } static ::mlir::StringAttr getDstLoHiSelAttrName(::mlir::OperationName name) { return getAttributeNameForIndex(name, 0); } static constexpr ::llvm::StringLiteral getOperationName() { return ::llvm::StringLiteral("rocdl.cvt.scalef32.pk.fp8.f16"); } std::pair getODSOperandIndexAndLength(unsigned index) { return {index, 1}; } ::mlir::Operation::operand_range getODSOperands(unsigned index) { auto valueRange = getODSOperandIndexAndLength(index); return {std::next(getOperation()->operand_begin(), valueRange.first), std::next(getOperation()->operand_begin(), valueRange.first + valueRange.second)}; } ::mlir::TypedValue<::mlir::VectorType> getOldVdst() { return ::llvm::cast<::mlir::TypedValue<::mlir::VectorType>>(*getODSOperands(0).begin()); } ::mlir::TypedValue<::mlir::VectorType> getSrc0() { return ::llvm::cast<::mlir::TypedValue<::mlir::VectorType>>(*getODSOperands(1).begin()); } ::mlir::TypedValue<::mlir::FloatType> getScale() { return ::llvm::cast<::mlir::TypedValue<::mlir::FloatType>>(*getODSOperands(2).begin()); } ::mlir::OpOperand &getOldVdstMutable() { auto range = getODSOperandIndexAndLength(0); return getOperation()->getOpOperand(range.first); } ::mlir::OpOperand &getSrc0Mutable() { auto range = getODSOperandIndexAndLength(1); return getOperation()->getOpOperand(range.first); } ::mlir::OpOperand &getScaleMutable() { auto range = getODSOperandIndexAndLength(2); return getOperation()->getOpOperand(range.first); } std::pair getODSResultIndexAndLength(unsigned index) { return {index, 1}; } ::mlir::Operation::result_range getODSResults(unsigned index) { auto valueRange = getODSResultIndexAndLength(index); return {std::next(getOperation()->result_begin(), valueRange.first), std::next(getOperation()->result_begin(), valueRange.first + valueRange.second)}; } ::mlir::TypedValue<::mlir::VectorType> getRes() { return ::llvm::cast<::mlir::TypedValue<::mlir::VectorType>>(*getODSResults(0).begin()); } static ::llvm::LogicalResult setPropertiesFromAttr(Properties &prop, ::mlir::Attribute attr, ::llvm::function_ref<::mlir::InFlightDiagnostic()> emitError); static ::mlir::Attribute getPropertiesAsAttr(::mlir::MLIRContext *ctx, const Properties &prop); static llvm::hash_code computePropertiesHash(const Properties &prop); static std::optional getInherentAttr(::mlir::MLIRContext *ctx, const Properties &prop, llvm::StringRef name); static void setInherentAttr(Properties &prop, llvm::StringRef name, mlir::Attribute value); static void populateInherentAttrs(::mlir::MLIRContext *ctx, const Properties &prop, ::mlir::NamedAttrList &attrs); static ::llvm::LogicalResult verifyInherentAttrs(::mlir::OperationName opName, ::mlir::NamedAttrList &attrs, llvm::function_ref<::mlir::InFlightDiagnostic()> emitError); static ::llvm::LogicalResult readProperties(::mlir::DialectBytecodeReader &reader, ::mlir::OperationState &state); void writeProperties(::mlir::DialectBytecodeWriter &writer); ::mlir::IntegerAttr getDstLoHiSelAttr() { return ::llvm::cast<::mlir::IntegerAttr>(getProperties().dstLoHiSel); } bool getDstLoHiSel(); void setDstLoHiSelAttr(::mlir::IntegerAttr attr) { getProperties().dstLoHiSel = attr; } void setDstLoHiSel(bool attrValue); static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::Type res, ::mlir::Value oldVdst, ::mlir::Value src0, ::mlir::Value scale, ::mlir::IntegerAttr dstLoHiSel); static CvtScaleF32PkFp8F16Op create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::Type res, ::mlir::Value oldVdst, ::mlir::Value src0, ::mlir::Value scale, ::mlir::IntegerAttr dstLoHiSel); static CvtScaleF32PkFp8F16Op create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::Type res, ::mlir::Value oldVdst, ::mlir::Value src0, ::mlir::Value scale, ::mlir::IntegerAttr dstLoHiSel); static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::Value oldVdst, ::mlir::Value src0, ::mlir::Value scale, ::mlir::IntegerAttr dstLoHiSel); static CvtScaleF32PkFp8F16Op create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::Value oldVdst, ::mlir::Value src0, ::mlir::Value scale, ::mlir::IntegerAttr dstLoHiSel); static CvtScaleF32PkFp8F16Op create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::Value oldVdst, ::mlir::Value src0, ::mlir::Value scale, ::mlir::IntegerAttr dstLoHiSel); static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::Type res, ::mlir::Value oldVdst, ::mlir::Value src0, ::mlir::Value scale, bool dstLoHiSel); static CvtScaleF32PkFp8F16Op create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::Type res, ::mlir::Value oldVdst, ::mlir::Value src0, ::mlir::Value scale, bool dstLoHiSel); static CvtScaleF32PkFp8F16Op create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::Type res, ::mlir::Value oldVdst, ::mlir::Value src0, ::mlir::Value scale, bool dstLoHiSel); static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::Value oldVdst, ::mlir::Value src0, ::mlir::Value scale, bool dstLoHiSel); static CvtScaleF32PkFp8F16Op create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::Value oldVdst, ::mlir::Value src0, ::mlir::Value scale, bool dstLoHiSel); static CvtScaleF32PkFp8F16Op create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::Value oldVdst, ::mlir::Value src0, ::mlir::Value scale, bool dstLoHiSel); static void build(::mlir::OpBuilder &, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, ::llvm::ArrayRef<::mlir::NamedAttribute> attributes = {}); static CvtScaleF32PkFp8F16Op create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, ::llvm::ArrayRef<::mlir::NamedAttribute> attributes = {}); static CvtScaleF32PkFp8F16Op create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, ::llvm::ArrayRef<::mlir::NamedAttribute> attributes = {}); static void build(::mlir::OpBuilder &, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, const Properties &properties, ::llvm::ArrayRef<::mlir::NamedAttribute> discardableAttributes = {}); static CvtScaleF32PkFp8F16Op create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, const Properties &properties, ::llvm::ArrayRef<::mlir::NamedAttribute> discardableAttributes = {}); static CvtScaleF32PkFp8F16Op create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, const Properties &properties, ::llvm::ArrayRef<::mlir::NamedAttribute> discardableAttributes = {}); ::llvm::LogicalResult verifyInvariantsImpl(); ::llvm::LogicalResult verifyInvariants(); static ::mlir::ParseResult parse(::mlir::OpAsmParser &parser, ::mlir::OperationState &result); void print(::mlir::OpAsmPrinter &_odsPrinter); void getEffects(::llvm::SmallVectorImpl<::mlir::SideEffects::EffectInstance<::mlir::MemoryEffects::Effect>> &effects); private: ::mlir::StringAttr getAttributeNameForIndex(unsigned index) { return getAttributeNameForIndex((*this)->getName(), index); } static ::mlir::StringAttr getAttributeNameForIndex(::mlir::OperationName name, unsigned index) { assert(index < 1 && "invalid attribute index"); assert(name.getStringRef() == getOperationName() && "invalid operation name"); assert(name.isRegistered() && "Operation isn't registered, missing a " "dependent dialect loading?"); return name.getAttributeNames()[index]; } public: }; } // namespace mlir::ROCDL MLIR_DECLARE_EXPLICIT_TYPE_ID(::mlir::ROCDL::CvtScaleF32PkFp8F16Op) MLIR_DECLARE_EXPLICIT_TYPE_ID(::mlir::ROCDL::detail::CvtScaleF32PkFp8F16OpGenericAdaptorBase::Properties) namespace mlir::ROCDL { //===----------------------------------------------------------------------===// // ::mlir::ROCDL::CvtScaleF32PkFp8F32Op declarations //===----------------------------------------------------------------------===// namespace detail { class CvtScaleF32PkFp8F32OpGenericAdaptorBase { public: struct Properties { using dstLoHiSelTy = ::mlir::IntegerAttr; dstLoHiSelTy dstLoHiSel; auto getDstLoHiSel() const { auto &propStorage = this->dstLoHiSel; return ::llvm::cast<::mlir::IntegerAttr>(propStorage); } void setDstLoHiSel(const ::mlir::IntegerAttr &propValue) { this->dstLoHiSel = propValue; } bool operator==(const Properties &rhs) const { return rhs.dstLoHiSel == this->dstLoHiSel && true; } bool operator!=(const Properties &rhs) const { return !(*this == rhs); } }; protected: ::mlir::DictionaryAttr odsAttrs; ::std::optional<::mlir::OperationName> odsOpName; Properties properties; ::mlir::RegionRange odsRegions; public: CvtScaleF32PkFp8F32OpGenericAdaptorBase(::mlir::DictionaryAttr attrs, const Properties &properties, ::mlir::RegionRange regions = {}) : odsAttrs(attrs), properties(properties), odsRegions(regions) { if (odsAttrs) odsOpName.emplace("rocdl.cvt.scalef32.pk.fp8.f32", odsAttrs.getContext()); } CvtScaleF32PkFp8F32OpGenericAdaptorBase(CvtScaleF32PkFp8F32Op op); std::pair getODSOperandIndexAndLength(unsigned index, unsigned odsOperandsSize) { return {index, 1}; } const Properties &getProperties() { return properties; } ::mlir::DictionaryAttr getAttributes() { return odsAttrs; } ::mlir::IntegerAttr getDstLoHiSelAttr() { auto attr = ::llvm::cast<::mlir::IntegerAttr>(getProperties().dstLoHiSel); return attr; } bool getDstLoHiSel(); }; } // namespace detail template class CvtScaleF32PkFp8F32OpGenericAdaptor : public detail::CvtScaleF32PkFp8F32OpGenericAdaptorBase { using ValueT = ::llvm::detail::ValueOfRange; using Base = detail::CvtScaleF32PkFp8F32OpGenericAdaptorBase; static constexpr int odsIndex_oldVdst = 0; static constexpr int odsIndex_src0 = 1; static constexpr int odsIndex_src1 = 2; static constexpr int odsIndex_scale = 3; public: CvtScaleF32PkFp8F32OpGenericAdaptor(RangeT values, ::mlir::DictionaryAttr attrs, const Properties &properties, ::mlir::RegionRange regions = {}) : Base(attrs, properties, regions), odsOperands(values) {} CvtScaleF32PkFp8F32OpGenericAdaptor(RangeT values, ::mlir::DictionaryAttr attrs, ::mlir::PropertyRef properties, ::mlir::RegionRange regions = {}) : CvtScaleF32PkFp8F32OpGenericAdaptor(values, attrs, (properties ? *properties.as() : Properties{}), regions) {} CvtScaleF32PkFp8F32OpGenericAdaptor(RangeT values, ::mlir::DictionaryAttr attrs = nullptr) : CvtScaleF32PkFp8F32OpGenericAdaptor(values, attrs, Properties{}, {}) {} CvtScaleF32PkFp8F32OpGenericAdaptor(RangeT values, const CvtScaleF32PkFp8F32OpGenericAdaptorBase &base) : Base(base), odsOperands(values) {} template >> CvtScaleF32PkFp8F32OpGenericAdaptor(RangeT values, LateInst op) : Base(op), odsOperands(values) {} std::pair getODSOperandIndexAndLength(unsigned index) { return Base::getODSOperandIndexAndLength(index, odsOperands.size()); } RangeT getODSOperands(unsigned index) { auto valueRange = getODSOperandIndexAndLength(index); return {std::next(odsOperands.begin(), valueRange.first), std::next(odsOperands.begin(), valueRange.first + valueRange.second)}; } ValueT getOldVdst() { return (*getODSOperands(0).begin()); } ValueT getSrc0() { return (*getODSOperands(1).begin()); } ValueT getSrc1() { return (*getODSOperands(2).begin()); } ValueT getScale() { return (*getODSOperands(3).begin()); } RangeT getOperands() { return odsOperands; } private: RangeT odsOperands; }; class CvtScaleF32PkFp8F32OpAdaptor : public CvtScaleF32PkFp8F32OpGenericAdaptor<::mlir::ValueRange> { public: using CvtScaleF32PkFp8F32OpGenericAdaptor::CvtScaleF32PkFp8F32OpGenericAdaptor; CvtScaleF32PkFp8F32OpAdaptor(CvtScaleF32PkFp8F32Op op); ::llvm::LogicalResult verify(::mlir::Location loc); }; class CvtScaleF32PkFp8F32Op : public ::mlir::Op::Impl, ::mlir::OpTrait::ZeroSuccessors, ::mlir::OpTrait::NOperands<4>::Impl, ::mlir::OpTrait::OpInvariants, ::mlir::BytecodeOpInterface::Trait, ::mlir::ConditionallySpeculatable::Trait, ::mlir::OpTrait::AlwaysSpeculatableImplTrait, ::mlir::MemoryEffectOpInterface::Trait> { public: using Op::Op; using Op::print; using Adaptor = CvtScaleF32PkFp8F32OpAdaptor; template using GenericAdaptor = CvtScaleF32PkFp8F32OpGenericAdaptor; using FoldAdaptor = GenericAdaptor<::llvm::ArrayRef<::mlir::Attribute>>; static constexpr int odsIndex_oldVdst = 0; static constexpr int odsIndex_src0 = 1; static constexpr int odsIndex_src1 = 2; static constexpr int odsIndex_scale = 3; using Properties = FoldAdaptor::Properties; static ::llvm::ArrayRef<::llvm::StringRef> getAttributeNames() { static ::llvm::StringRef attrNames[] = {::llvm::StringRef("dstLoHiSel")}; return ::llvm::ArrayRef(attrNames); } ::mlir::StringAttr getDstLoHiSelAttrName() { return getAttributeNameForIndex(0); } static ::mlir::StringAttr getDstLoHiSelAttrName(::mlir::OperationName name) { return getAttributeNameForIndex(name, 0); } static constexpr ::llvm::StringLiteral getOperationName() { return ::llvm::StringLiteral("rocdl.cvt.scalef32.pk.fp8.f32"); } std::pair getODSOperandIndexAndLength(unsigned index) { return {index, 1}; } ::mlir::Operation::operand_range getODSOperands(unsigned index) { auto valueRange = getODSOperandIndexAndLength(index); return {std::next(getOperation()->operand_begin(), valueRange.first), std::next(getOperation()->operand_begin(), valueRange.first + valueRange.second)}; } ::mlir::TypedValue<::mlir::VectorType> getOldVdst() { return ::llvm::cast<::mlir::TypedValue<::mlir::VectorType>>(*getODSOperands(0).begin()); } ::mlir::TypedValue<::mlir::FloatType> getSrc0() { return ::llvm::cast<::mlir::TypedValue<::mlir::FloatType>>(*getODSOperands(1).begin()); } ::mlir::TypedValue<::mlir::FloatType> getSrc1() { return ::llvm::cast<::mlir::TypedValue<::mlir::FloatType>>(*getODSOperands(2).begin()); } ::mlir::TypedValue<::mlir::FloatType> getScale() { return ::llvm::cast<::mlir::TypedValue<::mlir::FloatType>>(*getODSOperands(3).begin()); } ::mlir::OpOperand &getOldVdstMutable() { auto range = getODSOperandIndexAndLength(0); return getOperation()->getOpOperand(range.first); } ::mlir::OpOperand &getSrc0Mutable() { auto range = getODSOperandIndexAndLength(1); return getOperation()->getOpOperand(range.first); } ::mlir::OpOperand &getSrc1Mutable() { auto range = getODSOperandIndexAndLength(2); return getOperation()->getOpOperand(range.first); } ::mlir::OpOperand &getScaleMutable() { auto range = getODSOperandIndexAndLength(3); return getOperation()->getOpOperand(range.first); } std::pair getODSResultIndexAndLength(unsigned index) { return {index, 1}; } ::mlir::Operation::result_range getODSResults(unsigned index) { auto valueRange = getODSResultIndexAndLength(index); return {std::next(getOperation()->result_begin(), valueRange.first), std::next(getOperation()->result_begin(), valueRange.first + valueRange.second)}; } ::mlir::TypedValue<::mlir::VectorType> getRes() { return ::llvm::cast<::mlir::TypedValue<::mlir::VectorType>>(*getODSResults(0).begin()); } static ::llvm::LogicalResult setPropertiesFromAttr(Properties &prop, ::mlir::Attribute attr, ::llvm::function_ref<::mlir::InFlightDiagnostic()> emitError); static ::mlir::Attribute getPropertiesAsAttr(::mlir::MLIRContext *ctx, const Properties &prop); static llvm::hash_code computePropertiesHash(const Properties &prop); static std::optional getInherentAttr(::mlir::MLIRContext *ctx, const Properties &prop, llvm::StringRef name); static void setInherentAttr(Properties &prop, llvm::StringRef name, mlir::Attribute value); static void populateInherentAttrs(::mlir::MLIRContext *ctx, const Properties &prop, ::mlir::NamedAttrList &attrs); static ::llvm::LogicalResult verifyInherentAttrs(::mlir::OperationName opName, ::mlir::NamedAttrList &attrs, llvm::function_ref<::mlir::InFlightDiagnostic()> emitError); static ::llvm::LogicalResult readProperties(::mlir::DialectBytecodeReader &reader, ::mlir::OperationState &state); void writeProperties(::mlir::DialectBytecodeWriter &writer); ::mlir::IntegerAttr getDstLoHiSelAttr() { return ::llvm::cast<::mlir::IntegerAttr>(getProperties().dstLoHiSel); } bool getDstLoHiSel(); void setDstLoHiSelAttr(::mlir::IntegerAttr attr) { getProperties().dstLoHiSel = attr; } void setDstLoHiSel(bool attrValue); static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::Type res, ::mlir::Value oldVdst, ::mlir::Value src0, ::mlir::Value src1, ::mlir::Value scale, ::mlir::IntegerAttr dstLoHiSel); static CvtScaleF32PkFp8F32Op create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::Type res, ::mlir::Value oldVdst, ::mlir::Value src0, ::mlir::Value src1, ::mlir::Value scale, ::mlir::IntegerAttr dstLoHiSel); static CvtScaleF32PkFp8F32Op create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::Type res, ::mlir::Value oldVdst, ::mlir::Value src0, ::mlir::Value src1, ::mlir::Value scale, ::mlir::IntegerAttr dstLoHiSel); static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::Value oldVdst, ::mlir::Value src0, ::mlir::Value src1, ::mlir::Value scale, ::mlir::IntegerAttr dstLoHiSel); static CvtScaleF32PkFp8F32Op create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::Value oldVdst, ::mlir::Value src0, ::mlir::Value src1, ::mlir::Value scale, ::mlir::IntegerAttr dstLoHiSel); static CvtScaleF32PkFp8F32Op create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::Value oldVdst, ::mlir::Value src0, ::mlir::Value src1, ::mlir::Value scale, ::mlir::IntegerAttr dstLoHiSel); static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::Type res, ::mlir::Value oldVdst, ::mlir::Value src0, ::mlir::Value src1, ::mlir::Value scale, bool dstLoHiSel); static CvtScaleF32PkFp8F32Op create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::Type res, ::mlir::Value oldVdst, ::mlir::Value src0, ::mlir::Value src1, ::mlir::Value scale, bool dstLoHiSel); static CvtScaleF32PkFp8F32Op create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::Type res, ::mlir::Value oldVdst, ::mlir::Value src0, ::mlir::Value src1, ::mlir::Value scale, bool dstLoHiSel); static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::Value oldVdst, ::mlir::Value src0, ::mlir::Value src1, ::mlir::Value scale, bool dstLoHiSel); static CvtScaleF32PkFp8F32Op create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::Value oldVdst, ::mlir::Value src0, ::mlir::Value src1, ::mlir::Value scale, bool dstLoHiSel); static CvtScaleF32PkFp8F32Op create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::Value oldVdst, ::mlir::Value src0, ::mlir::Value src1, ::mlir::Value scale, bool dstLoHiSel); static void build(::mlir::OpBuilder &, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, ::llvm::ArrayRef<::mlir::NamedAttribute> attributes = {}); static CvtScaleF32PkFp8F32Op create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, ::llvm::ArrayRef<::mlir::NamedAttribute> attributes = {}); static CvtScaleF32PkFp8F32Op create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, ::llvm::ArrayRef<::mlir::NamedAttribute> attributes = {}); static void build(::mlir::OpBuilder &, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, const Properties &properties, ::llvm::ArrayRef<::mlir::NamedAttribute> discardableAttributes = {}); static CvtScaleF32PkFp8F32Op create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, const Properties &properties, ::llvm::ArrayRef<::mlir::NamedAttribute> discardableAttributes = {}); static CvtScaleF32PkFp8F32Op create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, const Properties &properties, ::llvm::ArrayRef<::mlir::NamedAttribute> discardableAttributes = {}); ::llvm::LogicalResult verifyInvariantsImpl(); ::llvm::LogicalResult verifyInvariants(); static ::mlir::ParseResult parse(::mlir::OpAsmParser &parser, ::mlir::OperationState &result); void print(::mlir::OpAsmPrinter &_odsPrinter); void getEffects(::llvm::SmallVectorImpl<::mlir::SideEffects::EffectInstance<::mlir::MemoryEffects::Effect>> &effects); private: ::mlir::StringAttr getAttributeNameForIndex(unsigned index) { return getAttributeNameForIndex((*this)->getName(), index); } static ::mlir::StringAttr getAttributeNameForIndex(::mlir::OperationName name, unsigned index) { assert(index < 1 && "invalid attribute index"); assert(name.getStringRef() == getOperationName() && "invalid operation name"); assert(name.isRegistered() && "Operation isn't registered, missing a " "dependent dialect loading?"); return name.getAttributeNames()[index]; } public: }; } // namespace mlir::ROCDL MLIR_DECLARE_EXPLICIT_TYPE_ID(::mlir::ROCDL::CvtScaleF32PkFp8F32Op) MLIR_DECLARE_EXPLICIT_TYPE_ID(::mlir::ROCDL::detail::CvtScaleF32PkFp8F32OpGenericAdaptorBase::Properties) namespace mlir::ROCDL { //===----------------------------------------------------------------------===// // ::mlir::ROCDL::CvtScaleF32SrBf8BF16Op declarations //===----------------------------------------------------------------------===// namespace detail { class CvtScaleF32SrBf8BF16OpGenericAdaptorBase { public: struct Properties { using dstSelIndexTy = ::mlir::IntegerAttr; dstSelIndexTy dstSelIndex; auto getDstSelIndex() const { auto &propStorage = this->dstSelIndex; return ::llvm::cast<::mlir::IntegerAttr>(propStorage); } void setDstSelIndex(const ::mlir::IntegerAttr &propValue) { this->dstSelIndex = propValue; } bool operator==(const Properties &rhs) const { return rhs.dstSelIndex == this->dstSelIndex && true; } bool operator!=(const Properties &rhs) const { return !(*this == rhs); } }; protected: ::mlir::DictionaryAttr odsAttrs; ::std::optional<::mlir::OperationName> odsOpName; Properties properties; ::mlir::RegionRange odsRegions; public: CvtScaleF32SrBf8BF16OpGenericAdaptorBase(::mlir::DictionaryAttr attrs, const Properties &properties, ::mlir::RegionRange regions = {}) : odsAttrs(attrs), properties(properties), odsRegions(regions) { if (odsAttrs) odsOpName.emplace("rocdl.cvt.scalef32.sr.bf8.bf16", odsAttrs.getContext()); } CvtScaleF32SrBf8BF16OpGenericAdaptorBase(CvtScaleF32SrBf8BF16Op op); std::pair getODSOperandIndexAndLength(unsigned index, unsigned odsOperandsSize) { return {index, 1}; } const Properties &getProperties() { return properties; } ::mlir::DictionaryAttr getAttributes() { return odsAttrs; } ::mlir::IntegerAttr getDstSelIndexAttr() { auto attr = ::llvm::cast<::mlir::IntegerAttr>(getProperties().dstSelIndex); return attr; } uint32_t getDstSelIndex(); }; } // namespace detail template class CvtScaleF32SrBf8BF16OpGenericAdaptor : public detail::CvtScaleF32SrBf8BF16OpGenericAdaptorBase { using ValueT = ::llvm::detail::ValueOfRange; using Base = detail::CvtScaleF32SrBf8BF16OpGenericAdaptorBase; static constexpr int odsIndex_oldVdst = 0; static constexpr int odsIndex_src0 = 1; static constexpr int odsIndex_seed = 2; static constexpr int odsIndex_scale = 3; public: CvtScaleF32SrBf8BF16OpGenericAdaptor(RangeT values, ::mlir::DictionaryAttr attrs, const Properties &properties, ::mlir::RegionRange regions = {}) : Base(attrs, properties, regions), odsOperands(values) {} CvtScaleF32SrBf8BF16OpGenericAdaptor(RangeT values, ::mlir::DictionaryAttr attrs, ::mlir::PropertyRef properties, ::mlir::RegionRange regions = {}) : CvtScaleF32SrBf8BF16OpGenericAdaptor(values, attrs, (properties ? *properties.as() : Properties{}), regions) {} CvtScaleF32SrBf8BF16OpGenericAdaptor(RangeT values, ::mlir::DictionaryAttr attrs = nullptr) : CvtScaleF32SrBf8BF16OpGenericAdaptor(values, attrs, Properties{}, {}) {} CvtScaleF32SrBf8BF16OpGenericAdaptor(RangeT values, const CvtScaleF32SrBf8BF16OpGenericAdaptorBase &base) : Base(base), odsOperands(values) {} template >> CvtScaleF32SrBf8BF16OpGenericAdaptor(RangeT values, LateInst op) : Base(op), odsOperands(values) {} std::pair getODSOperandIndexAndLength(unsigned index) { return Base::getODSOperandIndexAndLength(index, odsOperands.size()); } RangeT getODSOperands(unsigned index) { auto valueRange = getODSOperandIndexAndLength(index); return {std::next(odsOperands.begin(), valueRange.first), std::next(odsOperands.begin(), valueRange.first + valueRange.second)}; } ValueT getOldVdst() { return (*getODSOperands(0).begin()); } ValueT getSrc0() { return (*getODSOperands(1).begin()); } ValueT getSeed() { return (*getODSOperands(2).begin()); } ValueT getScale() { return (*getODSOperands(3).begin()); } RangeT getOperands() { return odsOperands; } private: RangeT odsOperands; }; class CvtScaleF32SrBf8BF16OpAdaptor : public CvtScaleF32SrBf8BF16OpGenericAdaptor<::mlir::ValueRange> { public: using CvtScaleF32SrBf8BF16OpGenericAdaptor::CvtScaleF32SrBf8BF16OpGenericAdaptor; CvtScaleF32SrBf8BF16OpAdaptor(CvtScaleF32SrBf8BF16Op op); ::llvm::LogicalResult verify(::mlir::Location loc); }; class CvtScaleF32SrBf8BF16Op : public ::mlir::Op::Impl, ::mlir::OpTrait::ZeroSuccessors, ::mlir::OpTrait::NOperands<4>::Impl, ::mlir::OpTrait::OpInvariants, ::mlir::BytecodeOpInterface::Trait, ::mlir::ConditionallySpeculatable::Trait, ::mlir::OpTrait::AlwaysSpeculatableImplTrait, ::mlir::MemoryEffectOpInterface::Trait> { public: using Op::Op; using Op::print; using Adaptor = CvtScaleF32SrBf8BF16OpAdaptor; template using GenericAdaptor = CvtScaleF32SrBf8BF16OpGenericAdaptor; using FoldAdaptor = GenericAdaptor<::llvm::ArrayRef<::mlir::Attribute>>; static constexpr int odsIndex_oldVdst = 0; static constexpr int odsIndex_src0 = 1; static constexpr int odsIndex_seed = 2; static constexpr int odsIndex_scale = 3; using Properties = FoldAdaptor::Properties; static ::llvm::ArrayRef<::llvm::StringRef> getAttributeNames() { static ::llvm::StringRef attrNames[] = {::llvm::StringRef("dstSelIndex")}; return ::llvm::ArrayRef(attrNames); } ::mlir::StringAttr getDstSelIndexAttrName() { return getAttributeNameForIndex(0); } static ::mlir::StringAttr getDstSelIndexAttrName(::mlir::OperationName name) { return getAttributeNameForIndex(name, 0); } static constexpr ::llvm::StringLiteral getOperationName() { return ::llvm::StringLiteral("rocdl.cvt.scalef32.sr.bf8.bf16"); } std::pair getODSOperandIndexAndLength(unsigned index) { return {index, 1}; } ::mlir::Operation::operand_range getODSOperands(unsigned index) { auto valueRange = getODSOperandIndexAndLength(index); return {std::next(getOperation()->operand_begin(), valueRange.first), std::next(getOperation()->operand_begin(), valueRange.first + valueRange.second)}; } ::mlir::TypedValue<::mlir::IntegerType> getOldVdst() { return ::llvm::cast<::mlir::TypedValue<::mlir::IntegerType>>(*getODSOperands(0).begin()); } ::mlir::TypedValue<::mlir::Type> getSrc0() { return ::llvm::cast<::mlir::TypedValue<::mlir::Type>>(*getODSOperands(1).begin()); } ::mlir::TypedValue<::mlir::IntegerType> getSeed() { return ::llvm::cast<::mlir::TypedValue<::mlir::IntegerType>>(*getODSOperands(2).begin()); } ::mlir::TypedValue<::mlir::FloatType> getScale() { return ::llvm::cast<::mlir::TypedValue<::mlir::FloatType>>(*getODSOperands(3).begin()); } ::mlir::OpOperand &getOldVdstMutable() { auto range = getODSOperandIndexAndLength(0); return getOperation()->getOpOperand(range.first); } ::mlir::OpOperand &getSrc0Mutable() { auto range = getODSOperandIndexAndLength(1); return getOperation()->getOpOperand(range.first); } ::mlir::OpOperand &getSeedMutable() { auto range = getODSOperandIndexAndLength(2); return getOperation()->getOpOperand(range.first); } ::mlir::OpOperand &getScaleMutable() { auto range = getODSOperandIndexAndLength(3); return getOperation()->getOpOperand(range.first); } std::pair getODSResultIndexAndLength(unsigned index) { return {index, 1}; } ::mlir::Operation::result_range getODSResults(unsigned index) { auto valueRange = getODSResultIndexAndLength(index); return {std::next(getOperation()->result_begin(), valueRange.first), std::next(getOperation()->result_begin(), valueRange.first + valueRange.second)}; } ::mlir::TypedValue<::mlir::IntegerType> getRes() { return ::llvm::cast<::mlir::TypedValue<::mlir::IntegerType>>(*getODSResults(0).begin()); } static ::llvm::LogicalResult setPropertiesFromAttr(Properties &prop, ::mlir::Attribute attr, ::llvm::function_ref<::mlir::InFlightDiagnostic()> emitError); static ::mlir::Attribute getPropertiesAsAttr(::mlir::MLIRContext *ctx, const Properties &prop); static llvm::hash_code computePropertiesHash(const Properties &prop); static std::optional getInherentAttr(::mlir::MLIRContext *ctx, const Properties &prop, llvm::StringRef name); static void setInherentAttr(Properties &prop, llvm::StringRef name, mlir::Attribute value); static void populateInherentAttrs(::mlir::MLIRContext *ctx, const Properties &prop, ::mlir::NamedAttrList &attrs); static ::llvm::LogicalResult verifyInherentAttrs(::mlir::OperationName opName, ::mlir::NamedAttrList &attrs, llvm::function_ref<::mlir::InFlightDiagnostic()> emitError); static ::llvm::LogicalResult readProperties(::mlir::DialectBytecodeReader &reader, ::mlir::OperationState &state); void writeProperties(::mlir::DialectBytecodeWriter &writer); ::mlir::IntegerAttr getDstSelIndexAttr() { return ::llvm::cast<::mlir::IntegerAttr>(getProperties().dstSelIndex); } uint32_t getDstSelIndex(); void setDstSelIndexAttr(::mlir::IntegerAttr attr) { getProperties().dstSelIndex = attr; } void setDstSelIndex(uint32_t attrValue); static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::Type res, ::mlir::Value oldVdst, ::mlir::Value src0, ::mlir::Value seed, ::mlir::Value scale, ::mlir::IntegerAttr dstSelIndex); static CvtScaleF32SrBf8BF16Op create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::Type res, ::mlir::Value oldVdst, ::mlir::Value src0, ::mlir::Value seed, ::mlir::Value scale, ::mlir::IntegerAttr dstSelIndex); static CvtScaleF32SrBf8BF16Op create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::Type res, ::mlir::Value oldVdst, ::mlir::Value src0, ::mlir::Value seed, ::mlir::Value scale, ::mlir::IntegerAttr dstSelIndex); static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::Value oldVdst, ::mlir::Value src0, ::mlir::Value seed, ::mlir::Value scale, ::mlir::IntegerAttr dstSelIndex); static CvtScaleF32SrBf8BF16Op create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::Value oldVdst, ::mlir::Value src0, ::mlir::Value seed, ::mlir::Value scale, ::mlir::IntegerAttr dstSelIndex); static CvtScaleF32SrBf8BF16Op create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::Value oldVdst, ::mlir::Value src0, ::mlir::Value seed, ::mlir::Value scale, ::mlir::IntegerAttr dstSelIndex); static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::Type res, ::mlir::Value oldVdst, ::mlir::Value src0, ::mlir::Value seed, ::mlir::Value scale, uint32_t dstSelIndex); static CvtScaleF32SrBf8BF16Op create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::Type res, ::mlir::Value oldVdst, ::mlir::Value src0, ::mlir::Value seed, ::mlir::Value scale, uint32_t dstSelIndex); static CvtScaleF32SrBf8BF16Op create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::Type res, ::mlir::Value oldVdst, ::mlir::Value src0, ::mlir::Value seed, ::mlir::Value scale, uint32_t dstSelIndex); static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::Value oldVdst, ::mlir::Value src0, ::mlir::Value seed, ::mlir::Value scale, uint32_t dstSelIndex); static CvtScaleF32SrBf8BF16Op create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::Value oldVdst, ::mlir::Value src0, ::mlir::Value seed, ::mlir::Value scale, uint32_t dstSelIndex); static CvtScaleF32SrBf8BF16Op create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::Value oldVdst, ::mlir::Value src0, ::mlir::Value seed, ::mlir::Value scale, uint32_t dstSelIndex); static void build(::mlir::OpBuilder &, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, ::llvm::ArrayRef<::mlir::NamedAttribute> attributes = {}); static CvtScaleF32SrBf8BF16Op create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, ::llvm::ArrayRef<::mlir::NamedAttribute> attributes = {}); static CvtScaleF32SrBf8BF16Op create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, ::llvm::ArrayRef<::mlir::NamedAttribute> attributes = {}); static void build(::mlir::OpBuilder &, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, const Properties &properties, ::llvm::ArrayRef<::mlir::NamedAttribute> discardableAttributes = {}); static CvtScaleF32SrBf8BF16Op create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, const Properties &properties, ::llvm::ArrayRef<::mlir::NamedAttribute> discardableAttributes = {}); static CvtScaleF32SrBf8BF16Op create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, const Properties &properties, ::llvm::ArrayRef<::mlir::NamedAttribute> discardableAttributes = {}); ::llvm::LogicalResult verifyInvariantsImpl(); ::llvm::LogicalResult verifyInvariants(); static ::mlir::ParseResult parse(::mlir::OpAsmParser &parser, ::mlir::OperationState &result); void print(::mlir::OpAsmPrinter &_odsPrinter); void getEffects(::llvm::SmallVectorImpl<::mlir::SideEffects::EffectInstance<::mlir::MemoryEffects::Effect>> &effects); private: ::mlir::StringAttr getAttributeNameForIndex(unsigned index) { return getAttributeNameForIndex((*this)->getName(), index); } static ::mlir::StringAttr getAttributeNameForIndex(::mlir::OperationName name, unsigned index) { assert(index < 1 && "invalid attribute index"); assert(name.getStringRef() == getOperationName() && "invalid operation name"); assert(name.isRegistered() && "Operation isn't registered, missing a " "dependent dialect loading?"); return name.getAttributeNames()[index]; } public: }; } // namespace mlir::ROCDL MLIR_DECLARE_EXPLICIT_TYPE_ID(::mlir::ROCDL::CvtScaleF32SrBf8BF16Op) MLIR_DECLARE_EXPLICIT_TYPE_ID(::mlir::ROCDL::detail::CvtScaleF32SrBf8BF16OpGenericAdaptorBase::Properties) namespace mlir::ROCDL { //===----------------------------------------------------------------------===// // ::mlir::ROCDL::CvtScaleF32SrBf8F16Op declarations //===----------------------------------------------------------------------===// namespace detail { class CvtScaleF32SrBf8F16OpGenericAdaptorBase { public: struct Properties { using dstSelIndexTy = ::mlir::IntegerAttr; dstSelIndexTy dstSelIndex; auto getDstSelIndex() const { auto &propStorage = this->dstSelIndex; return ::llvm::cast<::mlir::IntegerAttr>(propStorage); } void setDstSelIndex(const ::mlir::IntegerAttr &propValue) { this->dstSelIndex = propValue; } bool operator==(const Properties &rhs) const { return rhs.dstSelIndex == this->dstSelIndex && true; } bool operator!=(const Properties &rhs) const { return !(*this == rhs); } }; protected: ::mlir::DictionaryAttr odsAttrs; ::std::optional<::mlir::OperationName> odsOpName; Properties properties; ::mlir::RegionRange odsRegions; public: CvtScaleF32SrBf8F16OpGenericAdaptorBase(::mlir::DictionaryAttr attrs, const Properties &properties, ::mlir::RegionRange regions = {}) : odsAttrs(attrs), properties(properties), odsRegions(regions) { if (odsAttrs) odsOpName.emplace("rocdl.cvt.scalef32.sr.bf8.f16", odsAttrs.getContext()); } CvtScaleF32SrBf8F16OpGenericAdaptorBase(CvtScaleF32SrBf8F16Op op); std::pair getODSOperandIndexAndLength(unsigned index, unsigned odsOperandsSize) { return {index, 1}; } const Properties &getProperties() { return properties; } ::mlir::DictionaryAttr getAttributes() { return odsAttrs; } ::mlir::IntegerAttr getDstSelIndexAttr() { auto attr = ::llvm::cast<::mlir::IntegerAttr>(getProperties().dstSelIndex); return attr; } uint32_t getDstSelIndex(); }; } // namespace detail template class CvtScaleF32SrBf8F16OpGenericAdaptor : public detail::CvtScaleF32SrBf8F16OpGenericAdaptorBase { using ValueT = ::llvm::detail::ValueOfRange; using Base = detail::CvtScaleF32SrBf8F16OpGenericAdaptorBase; static constexpr int odsIndex_oldVdst = 0; static constexpr int odsIndex_src0 = 1; static constexpr int odsIndex_seed = 2; static constexpr int odsIndex_scale = 3; public: CvtScaleF32SrBf8F16OpGenericAdaptor(RangeT values, ::mlir::DictionaryAttr attrs, const Properties &properties, ::mlir::RegionRange regions = {}) : Base(attrs, properties, regions), odsOperands(values) {} CvtScaleF32SrBf8F16OpGenericAdaptor(RangeT values, ::mlir::DictionaryAttr attrs, ::mlir::PropertyRef properties, ::mlir::RegionRange regions = {}) : CvtScaleF32SrBf8F16OpGenericAdaptor(values, attrs, (properties ? *properties.as() : Properties{}), regions) {} CvtScaleF32SrBf8F16OpGenericAdaptor(RangeT values, ::mlir::DictionaryAttr attrs = nullptr) : CvtScaleF32SrBf8F16OpGenericAdaptor(values, attrs, Properties{}, {}) {} CvtScaleF32SrBf8F16OpGenericAdaptor(RangeT values, const CvtScaleF32SrBf8F16OpGenericAdaptorBase &base) : Base(base), odsOperands(values) {} template >> CvtScaleF32SrBf8F16OpGenericAdaptor(RangeT values, LateInst op) : Base(op), odsOperands(values) {} std::pair getODSOperandIndexAndLength(unsigned index) { return Base::getODSOperandIndexAndLength(index, odsOperands.size()); } RangeT getODSOperands(unsigned index) { auto valueRange = getODSOperandIndexAndLength(index); return {std::next(odsOperands.begin(), valueRange.first), std::next(odsOperands.begin(), valueRange.first + valueRange.second)}; } ValueT getOldVdst() { return (*getODSOperands(0).begin()); } ValueT getSrc0() { return (*getODSOperands(1).begin()); } ValueT getSeed() { return (*getODSOperands(2).begin()); } ValueT getScale() { return (*getODSOperands(3).begin()); } RangeT getOperands() { return odsOperands; } private: RangeT odsOperands; }; class CvtScaleF32SrBf8F16OpAdaptor : public CvtScaleF32SrBf8F16OpGenericAdaptor<::mlir::ValueRange> { public: using CvtScaleF32SrBf8F16OpGenericAdaptor::CvtScaleF32SrBf8F16OpGenericAdaptor; CvtScaleF32SrBf8F16OpAdaptor(CvtScaleF32SrBf8F16Op op); ::llvm::LogicalResult verify(::mlir::Location loc); }; class CvtScaleF32SrBf8F16Op : public ::mlir::Op::Impl, ::mlir::OpTrait::ZeroSuccessors, ::mlir::OpTrait::NOperands<4>::Impl, ::mlir::OpTrait::OpInvariants, ::mlir::BytecodeOpInterface::Trait, ::mlir::ConditionallySpeculatable::Trait, ::mlir::OpTrait::AlwaysSpeculatableImplTrait, ::mlir::MemoryEffectOpInterface::Trait> { public: using Op::Op; using Op::print; using Adaptor = CvtScaleF32SrBf8F16OpAdaptor; template using GenericAdaptor = CvtScaleF32SrBf8F16OpGenericAdaptor; using FoldAdaptor = GenericAdaptor<::llvm::ArrayRef<::mlir::Attribute>>; static constexpr int odsIndex_oldVdst = 0; static constexpr int odsIndex_src0 = 1; static constexpr int odsIndex_seed = 2; static constexpr int odsIndex_scale = 3; using Properties = FoldAdaptor::Properties; static ::llvm::ArrayRef<::llvm::StringRef> getAttributeNames() { static ::llvm::StringRef attrNames[] = {::llvm::StringRef("dstSelIndex")}; return ::llvm::ArrayRef(attrNames); } ::mlir::StringAttr getDstSelIndexAttrName() { return getAttributeNameForIndex(0); } static ::mlir::StringAttr getDstSelIndexAttrName(::mlir::OperationName name) { return getAttributeNameForIndex(name, 0); } static constexpr ::llvm::StringLiteral getOperationName() { return ::llvm::StringLiteral("rocdl.cvt.scalef32.sr.bf8.f16"); } std::pair getODSOperandIndexAndLength(unsigned index) { return {index, 1}; } ::mlir::Operation::operand_range getODSOperands(unsigned index) { auto valueRange = getODSOperandIndexAndLength(index); return {std::next(getOperation()->operand_begin(), valueRange.first), std::next(getOperation()->operand_begin(), valueRange.first + valueRange.second)}; } ::mlir::TypedValue<::mlir::IntegerType> getOldVdst() { return ::llvm::cast<::mlir::TypedValue<::mlir::IntegerType>>(*getODSOperands(0).begin()); } ::mlir::TypedValue<::mlir::FloatType> getSrc0() { return ::llvm::cast<::mlir::TypedValue<::mlir::FloatType>>(*getODSOperands(1).begin()); } ::mlir::TypedValue<::mlir::IntegerType> getSeed() { return ::llvm::cast<::mlir::TypedValue<::mlir::IntegerType>>(*getODSOperands(2).begin()); } ::mlir::TypedValue<::mlir::FloatType> getScale() { return ::llvm::cast<::mlir::TypedValue<::mlir::FloatType>>(*getODSOperands(3).begin()); } ::mlir::OpOperand &getOldVdstMutable() { auto range = getODSOperandIndexAndLength(0); return getOperation()->getOpOperand(range.first); } ::mlir::OpOperand &getSrc0Mutable() { auto range = getODSOperandIndexAndLength(1); return getOperation()->getOpOperand(range.first); } ::mlir::OpOperand &getSeedMutable() { auto range = getODSOperandIndexAndLength(2); return getOperation()->getOpOperand(range.first); } ::mlir::OpOperand &getScaleMutable() { auto range = getODSOperandIndexAndLength(3); return getOperation()->getOpOperand(range.first); } std::pair getODSResultIndexAndLength(unsigned index) { return {index, 1}; } ::mlir::Operation::result_range getODSResults(unsigned index) { auto valueRange = getODSResultIndexAndLength(index); return {std::next(getOperation()->result_begin(), valueRange.first), std::next(getOperation()->result_begin(), valueRange.first + valueRange.second)}; } ::mlir::TypedValue<::mlir::IntegerType> getRes() { return ::llvm::cast<::mlir::TypedValue<::mlir::IntegerType>>(*getODSResults(0).begin()); } static ::llvm::LogicalResult setPropertiesFromAttr(Properties &prop, ::mlir::Attribute attr, ::llvm::function_ref<::mlir::InFlightDiagnostic()> emitError); static ::mlir::Attribute getPropertiesAsAttr(::mlir::MLIRContext *ctx, const Properties &prop); static llvm::hash_code computePropertiesHash(const Properties &prop); static std::optional getInherentAttr(::mlir::MLIRContext *ctx, const Properties &prop, llvm::StringRef name); static void setInherentAttr(Properties &prop, llvm::StringRef name, mlir::Attribute value); static void populateInherentAttrs(::mlir::MLIRContext *ctx, const Properties &prop, ::mlir::NamedAttrList &attrs); static ::llvm::LogicalResult verifyInherentAttrs(::mlir::OperationName opName, ::mlir::NamedAttrList &attrs, llvm::function_ref<::mlir::InFlightDiagnostic()> emitError); static ::llvm::LogicalResult readProperties(::mlir::DialectBytecodeReader &reader, ::mlir::OperationState &state); void writeProperties(::mlir::DialectBytecodeWriter &writer); ::mlir::IntegerAttr getDstSelIndexAttr() { return ::llvm::cast<::mlir::IntegerAttr>(getProperties().dstSelIndex); } uint32_t getDstSelIndex(); void setDstSelIndexAttr(::mlir::IntegerAttr attr) { getProperties().dstSelIndex = attr; } void setDstSelIndex(uint32_t attrValue); static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::Type res, ::mlir::Value oldVdst, ::mlir::Value src0, ::mlir::Value seed, ::mlir::Value scale, ::mlir::IntegerAttr dstSelIndex); static CvtScaleF32SrBf8F16Op create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::Type res, ::mlir::Value oldVdst, ::mlir::Value src0, ::mlir::Value seed, ::mlir::Value scale, ::mlir::IntegerAttr dstSelIndex); static CvtScaleF32SrBf8F16Op create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::Type res, ::mlir::Value oldVdst, ::mlir::Value src0, ::mlir::Value seed, ::mlir::Value scale, ::mlir::IntegerAttr dstSelIndex); static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::Value oldVdst, ::mlir::Value src0, ::mlir::Value seed, ::mlir::Value scale, ::mlir::IntegerAttr dstSelIndex); static CvtScaleF32SrBf8F16Op create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::Value oldVdst, ::mlir::Value src0, ::mlir::Value seed, ::mlir::Value scale, ::mlir::IntegerAttr dstSelIndex); static CvtScaleF32SrBf8F16Op create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::Value oldVdst, ::mlir::Value src0, ::mlir::Value seed, ::mlir::Value scale, ::mlir::IntegerAttr dstSelIndex); static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::Type res, ::mlir::Value oldVdst, ::mlir::Value src0, ::mlir::Value seed, ::mlir::Value scale, uint32_t dstSelIndex); static CvtScaleF32SrBf8F16Op create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::Type res, ::mlir::Value oldVdst, ::mlir::Value src0, ::mlir::Value seed, ::mlir::Value scale, uint32_t dstSelIndex); static CvtScaleF32SrBf8F16Op create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::Type res, ::mlir::Value oldVdst, ::mlir::Value src0, ::mlir::Value seed, ::mlir::Value scale, uint32_t dstSelIndex); static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::Value oldVdst, ::mlir::Value src0, ::mlir::Value seed, ::mlir::Value scale, uint32_t dstSelIndex); static CvtScaleF32SrBf8F16Op create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::Value oldVdst, ::mlir::Value src0, ::mlir::Value seed, ::mlir::Value scale, uint32_t dstSelIndex); static CvtScaleF32SrBf8F16Op create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::Value oldVdst, ::mlir::Value src0, ::mlir::Value seed, ::mlir::Value scale, uint32_t dstSelIndex); static void build(::mlir::OpBuilder &, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, ::llvm::ArrayRef<::mlir::NamedAttribute> attributes = {}); static CvtScaleF32SrBf8F16Op create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, ::llvm::ArrayRef<::mlir::NamedAttribute> attributes = {}); static CvtScaleF32SrBf8F16Op create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, ::llvm::ArrayRef<::mlir::NamedAttribute> attributes = {}); static void build(::mlir::OpBuilder &, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, const Properties &properties, ::llvm::ArrayRef<::mlir::NamedAttribute> discardableAttributes = {}); static CvtScaleF32SrBf8F16Op create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, const Properties &properties, ::llvm::ArrayRef<::mlir::NamedAttribute> discardableAttributes = {}); static CvtScaleF32SrBf8F16Op create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, const Properties &properties, ::llvm::ArrayRef<::mlir::NamedAttribute> discardableAttributes = {}); ::llvm::LogicalResult verifyInvariantsImpl(); ::llvm::LogicalResult verifyInvariants(); static ::mlir::ParseResult parse(::mlir::OpAsmParser &parser, ::mlir::OperationState &result); void print(::mlir::OpAsmPrinter &_odsPrinter); void getEffects(::llvm::SmallVectorImpl<::mlir::SideEffects::EffectInstance<::mlir::MemoryEffects::Effect>> &effects); private: ::mlir::StringAttr getAttributeNameForIndex(unsigned index) { return getAttributeNameForIndex((*this)->getName(), index); } static ::mlir::StringAttr getAttributeNameForIndex(::mlir::OperationName name, unsigned index) { assert(index < 1 && "invalid attribute index"); assert(name.getStringRef() == getOperationName() && "invalid operation name"); assert(name.isRegistered() && "Operation isn't registered, missing a " "dependent dialect loading?"); return name.getAttributeNames()[index]; } public: }; } // namespace mlir::ROCDL MLIR_DECLARE_EXPLICIT_TYPE_ID(::mlir::ROCDL::CvtScaleF32SrBf8F16Op) MLIR_DECLARE_EXPLICIT_TYPE_ID(::mlir::ROCDL::detail::CvtScaleF32SrBf8F16OpGenericAdaptorBase::Properties) namespace mlir::ROCDL { //===----------------------------------------------------------------------===// // ::mlir::ROCDL::CvtScaleF32SrBf8F32Op declarations //===----------------------------------------------------------------------===// namespace detail { class CvtScaleF32SrBf8F32OpGenericAdaptorBase { public: struct Properties { using dstSelIndexTy = ::mlir::IntegerAttr; dstSelIndexTy dstSelIndex; auto getDstSelIndex() const { auto &propStorage = this->dstSelIndex; return ::llvm::cast<::mlir::IntegerAttr>(propStorage); } void setDstSelIndex(const ::mlir::IntegerAttr &propValue) { this->dstSelIndex = propValue; } bool operator==(const Properties &rhs) const { return rhs.dstSelIndex == this->dstSelIndex && true; } bool operator!=(const Properties &rhs) const { return !(*this == rhs); } }; protected: ::mlir::DictionaryAttr odsAttrs; ::std::optional<::mlir::OperationName> odsOpName; Properties properties; ::mlir::RegionRange odsRegions; public: CvtScaleF32SrBf8F32OpGenericAdaptorBase(::mlir::DictionaryAttr attrs, const Properties &properties, ::mlir::RegionRange regions = {}) : odsAttrs(attrs), properties(properties), odsRegions(regions) { if (odsAttrs) odsOpName.emplace("rocdl.cvt.scalef32.sr.bf8.f32", odsAttrs.getContext()); } CvtScaleF32SrBf8F32OpGenericAdaptorBase(CvtScaleF32SrBf8F32Op op); std::pair getODSOperandIndexAndLength(unsigned index, unsigned odsOperandsSize) { return {index, 1}; } const Properties &getProperties() { return properties; } ::mlir::DictionaryAttr getAttributes() { return odsAttrs; } ::mlir::IntegerAttr getDstSelIndexAttr() { auto attr = ::llvm::cast<::mlir::IntegerAttr>(getProperties().dstSelIndex); return attr; } uint32_t getDstSelIndex(); }; } // namespace detail template class CvtScaleF32SrBf8F32OpGenericAdaptor : public detail::CvtScaleF32SrBf8F32OpGenericAdaptorBase { using ValueT = ::llvm::detail::ValueOfRange; using Base = detail::CvtScaleF32SrBf8F32OpGenericAdaptorBase; static constexpr int odsIndex_oldVdst = 0; static constexpr int odsIndex_src0 = 1; static constexpr int odsIndex_seed = 2; static constexpr int odsIndex_scale = 3; public: CvtScaleF32SrBf8F32OpGenericAdaptor(RangeT values, ::mlir::DictionaryAttr attrs, const Properties &properties, ::mlir::RegionRange regions = {}) : Base(attrs, properties, regions), odsOperands(values) {} CvtScaleF32SrBf8F32OpGenericAdaptor(RangeT values, ::mlir::DictionaryAttr attrs, ::mlir::PropertyRef properties, ::mlir::RegionRange regions = {}) : CvtScaleF32SrBf8F32OpGenericAdaptor(values, attrs, (properties ? *properties.as() : Properties{}), regions) {} CvtScaleF32SrBf8F32OpGenericAdaptor(RangeT values, ::mlir::DictionaryAttr attrs = nullptr) : CvtScaleF32SrBf8F32OpGenericAdaptor(values, attrs, Properties{}, {}) {} CvtScaleF32SrBf8F32OpGenericAdaptor(RangeT values, const CvtScaleF32SrBf8F32OpGenericAdaptorBase &base) : Base(base), odsOperands(values) {} template >> CvtScaleF32SrBf8F32OpGenericAdaptor(RangeT values, LateInst op) : Base(op), odsOperands(values) {} std::pair getODSOperandIndexAndLength(unsigned index) { return Base::getODSOperandIndexAndLength(index, odsOperands.size()); } RangeT getODSOperands(unsigned index) { auto valueRange = getODSOperandIndexAndLength(index); return {std::next(odsOperands.begin(), valueRange.first), std::next(odsOperands.begin(), valueRange.first + valueRange.second)}; } ValueT getOldVdst() { return (*getODSOperands(0).begin()); } ValueT getSrc0() { return (*getODSOperands(1).begin()); } ValueT getSeed() { return (*getODSOperands(2).begin()); } ValueT getScale() { return (*getODSOperands(3).begin()); } RangeT getOperands() { return odsOperands; } private: RangeT odsOperands; }; class CvtScaleF32SrBf8F32OpAdaptor : public CvtScaleF32SrBf8F32OpGenericAdaptor<::mlir::ValueRange> { public: using CvtScaleF32SrBf8F32OpGenericAdaptor::CvtScaleF32SrBf8F32OpGenericAdaptor; CvtScaleF32SrBf8F32OpAdaptor(CvtScaleF32SrBf8F32Op op); ::llvm::LogicalResult verify(::mlir::Location loc); }; class CvtScaleF32SrBf8F32Op : public ::mlir::Op::Impl, ::mlir::OpTrait::ZeroSuccessors, ::mlir::OpTrait::NOperands<4>::Impl, ::mlir::OpTrait::OpInvariants, ::mlir::BytecodeOpInterface::Trait, ::mlir::ConditionallySpeculatable::Trait, ::mlir::OpTrait::AlwaysSpeculatableImplTrait, ::mlir::MemoryEffectOpInterface::Trait> { public: using Op::Op; using Op::print; using Adaptor = CvtScaleF32SrBf8F32OpAdaptor; template using GenericAdaptor = CvtScaleF32SrBf8F32OpGenericAdaptor; using FoldAdaptor = GenericAdaptor<::llvm::ArrayRef<::mlir::Attribute>>; static constexpr int odsIndex_oldVdst = 0; static constexpr int odsIndex_src0 = 1; static constexpr int odsIndex_seed = 2; static constexpr int odsIndex_scale = 3; using Properties = FoldAdaptor::Properties; static ::llvm::ArrayRef<::llvm::StringRef> getAttributeNames() { static ::llvm::StringRef attrNames[] = {::llvm::StringRef("dstSelIndex")}; return ::llvm::ArrayRef(attrNames); } ::mlir::StringAttr getDstSelIndexAttrName() { return getAttributeNameForIndex(0); } static ::mlir::StringAttr getDstSelIndexAttrName(::mlir::OperationName name) { return getAttributeNameForIndex(name, 0); } static constexpr ::llvm::StringLiteral getOperationName() { return ::llvm::StringLiteral("rocdl.cvt.scalef32.sr.bf8.f32"); } std::pair getODSOperandIndexAndLength(unsigned index) { return {index, 1}; } ::mlir::Operation::operand_range getODSOperands(unsigned index) { auto valueRange = getODSOperandIndexAndLength(index); return {std::next(getOperation()->operand_begin(), valueRange.first), std::next(getOperation()->operand_begin(), valueRange.first + valueRange.second)}; } ::mlir::TypedValue<::mlir::IntegerType> getOldVdst() { return ::llvm::cast<::mlir::TypedValue<::mlir::IntegerType>>(*getODSOperands(0).begin()); } ::mlir::TypedValue<::mlir::FloatType> getSrc0() { return ::llvm::cast<::mlir::TypedValue<::mlir::FloatType>>(*getODSOperands(1).begin()); } ::mlir::TypedValue<::mlir::IntegerType> getSeed() { return ::llvm::cast<::mlir::TypedValue<::mlir::IntegerType>>(*getODSOperands(2).begin()); } ::mlir::TypedValue<::mlir::FloatType> getScale() { return ::llvm::cast<::mlir::TypedValue<::mlir::FloatType>>(*getODSOperands(3).begin()); } ::mlir::OpOperand &getOldVdstMutable() { auto range = getODSOperandIndexAndLength(0); return getOperation()->getOpOperand(range.first); } ::mlir::OpOperand &getSrc0Mutable() { auto range = getODSOperandIndexAndLength(1); return getOperation()->getOpOperand(range.first); } ::mlir::OpOperand &getSeedMutable() { auto range = getODSOperandIndexAndLength(2); return getOperation()->getOpOperand(range.first); } ::mlir::OpOperand &getScaleMutable() { auto range = getODSOperandIndexAndLength(3); return getOperation()->getOpOperand(range.first); } std::pair getODSResultIndexAndLength(unsigned index) { return {index, 1}; } ::mlir::Operation::result_range getODSResults(unsigned index) { auto valueRange = getODSResultIndexAndLength(index); return {std::next(getOperation()->result_begin(), valueRange.first), std::next(getOperation()->result_begin(), valueRange.first + valueRange.second)}; } ::mlir::TypedValue<::mlir::IntegerType> getRes() { return ::llvm::cast<::mlir::TypedValue<::mlir::IntegerType>>(*getODSResults(0).begin()); } static ::llvm::LogicalResult setPropertiesFromAttr(Properties &prop, ::mlir::Attribute attr, ::llvm::function_ref<::mlir::InFlightDiagnostic()> emitError); static ::mlir::Attribute getPropertiesAsAttr(::mlir::MLIRContext *ctx, const Properties &prop); static llvm::hash_code computePropertiesHash(const Properties &prop); static std::optional getInherentAttr(::mlir::MLIRContext *ctx, const Properties &prop, llvm::StringRef name); static void setInherentAttr(Properties &prop, llvm::StringRef name, mlir::Attribute value); static void populateInherentAttrs(::mlir::MLIRContext *ctx, const Properties &prop, ::mlir::NamedAttrList &attrs); static ::llvm::LogicalResult verifyInherentAttrs(::mlir::OperationName opName, ::mlir::NamedAttrList &attrs, llvm::function_ref<::mlir::InFlightDiagnostic()> emitError); static ::llvm::LogicalResult readProperties(::mlir::DialectBytecodeReader &reader, ::mlir::OperationState &state); void writeProperties(::mlir::DialectBytecodeWriter &writer); ::mlir::IntegerAttr getDstSelIndexAttr() { return ::llvm::cast<::mlir::IntegerAttr>(getProperties().dstSelIndex); } uint32_t getDstSelIndex(); void setDstSelIndexAttr(::mlir::IntegerAttr attr) { getProperties().dstSelIndex = attr; } void setDstSelIndex(uint32_t attrValue); static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::Type res, ::mlir::Value oldVdst, ::mlir::Value src0, ::mlir::Value seed, ::mlir::Value scale, ::mlir::IntegerAttr dstSelIndex); static CvtScaleF32SrBf8F32Op create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::Type res, ::mlir::Value oldVdst, ::mlir::Value src0, ::mlir::Value seed, ::mlir::Value scale, ::mlir::IntegerAttr dstSelIndex); static CvtScaleF32SrBf8F32Op create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::Type res, ::mlir::Value oldVdst, ::mlir::Value src0, ::mlir::Value seed, ::mlir::Value scale, ::mlir::IntegerAttr dstSelIndex); static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::Value oldVdst, ::mlir::Value src0, ::mlir::Value seed, ::mlir::Value scale, ::mlir::IntegerAttr dstSelIndex); static CvtScaleF32SrBf8F32Op create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::Value oldVdst, ::mlir::Value src0, ::mlir::Value seed, ::mlir::Value scale, ::mlir::IntegerAttr dstSelIndex); static CvtScaleF32SrBf8F32Op create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::Value oldVdst, ::mlir::Value src0, ::mlir::Value seed, ::mlir::Value scale, ::mlir::IntegerAttr dstSelIndex); static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::Type res, ::mlir::Value oldVdst, ::mlir::Value src0, ::mlir::Value seed, ::mlir::Value scale, uint32_t dstSelIndex); static CvtScaleF32SrBf8F32Op create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::Type res, ::mlir::Value oldVdst, ::mlir::Value src0, ::mlir::Value seed, ::mlir::Value scale, uint32_t dstSelIndex); static CvtScaleF32SrBf8F32Op create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::Type res, ::mlir::Value oldVdst, ::mlir::Value src0, ::mlir::Value seed, ::mlir::Value scale, uint32_t dstSelIndex); static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::Value oldVdst, ::mlir::Value src0, ::mlir::Value seed, ::mlir::Value scale, uint32_t dstSelIndex); static CvtScaleF32SrBf8F32Op create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::Value oldVdst, ::mlir::Value src0, ::mlir::Value seed, ::mlir::Value scale, uint32_t dstSelIndex); static CvtScaleF32SrBf8F32Op create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::Value oldVdst, ::mlir::Value src0, ::mlir::Value seed, ::mlir::Value scale, uint32_t dstSelIndex); static void build(::mlir::OpBuilder &, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, ::llvm::ArrayRef<::mlir::NamedAttribute> attributes = {}); static CvtScaleF32SrBf8F32Op create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, ::llvm::ArrayRef<::mlir::NamedAttribute> attributes = {}); static CvtScaleF32SrBf8F32Op create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, ::llvm::ArrayRef<::mlir::NamedAttribute> attributes = {}); static void build(::mlir::OpBuilder &, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, const Properties &properties, ::llvm::ArrayRef<::mlir::NamedAttribute> discardableAttributes = {}); static CvtScaleF32SrBf8F32Op create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, const Properties &properties, ::llvm::ArrayRef<::mlir::NamedAttribute> discardableAttributes = {}); static CvtScaleF32SrBf8F32Op create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, const Properties &properties, ::llvm::ArrayRef<::mlir::NamedAttribute> discardableAttributes = {}); ::llvm::LogicalResult verifyInvariantsImpl(); ::llvm::LogicalResult verifyInvariants(); static ::mlir::ParseResult parse(::mlir::OpAsmParser &parser, ::mlir::OperationState &result); void print(::mlir::OpAsmPrinter &_odsPrinter); void getEffects(::llvm::SmallVectorImpl<::mlir::SideEffects::EffectInstance<::mlir::MemoryEffects::Effect>> &effects); private: ::mlir::StringAttr getAttributeNameForIndex(unsigned index) { return getAttributeNameForIndex((*this)->getName(), index); } static ::mlir::StringAttr getAttributeNameForIndex(::mlir::OperationName name, unsigned index) { assert(index < 1 && "invalid attribute index"); assert(name.getStringRef() == getOperationName() && "invalid operation name"); assert(name.isRegistered() && "Operation isn't registered, missing a " "dependent dialect loading?"); return name.getAttributeNames()[index]; } public: }; } // namespace mlir::ROCDL MLIR_DECLARE_EXPLICIT_TYPE_ID(::mlir::ROCDL::CvtScaleF32SrBf8F32Op) MLIR_DECLARE_EXPLICIT_TYPE_ID(::mlir::ROCDL::detail::CvtScaleF32SrBf8F32OpGenericAdaptorBase::Properties) namespace mlir::ROCDL { //===----------------------------------------------------------------------===// // ::mlir::ROCDL::CvtScaleF32SrFp8BF16Op declarations //===----------------------------------------------------------------------===// namespace detail { class CvtScaleF32SrFp8BF16OpGenericAdaptorBase { public: struct Properties { using dstSelIndexTy = ::mlir::IntegerAttr; dstSelIndexTy dstSelIndex; auto getDstSelIndex() const { auto &propStorage = this->dstSelIndex; return ::llvm::cast<::mlir::IntegerAttr>(propStorage); } void setDstSelIndex(const ::mlir::IntegerAttr &propValue) { this->dstSelIndex = propValue; } bool operator==(const Properties &rhs) const { return rhs.dstSelIndex == this->dstSelIndex && true; } bool operator!=(const Properties &rhs) const { return !(*this == rhs); } }; protected: ::mlir::DictionaryAttr odsAttrs; ::std::optional<::mlir::OperationName> odsOpName; Properties properties; ::mlir::RegionRange odsRegions; public: CvtScaleF32SrFp8BF16OpGenericAdaptorBase(::mlir::DictionaryAttr attrs, const Properties &properties, ::mlir::RegionRange regions = {}) : odsAttrs(attrs), properties(properties), odsRegions(regions) { if (odsAttrs) odsOpName.emplace("rocdl.cvt.scalef32.sr.fp8.bf16", odsAttrs.getContext()); } CvtScaleF32SrFp8BF16OpGenericAdaptorBase(CvtScaleF32SrFp8BF16Op op); std::pair getODSOperandIndexAndLength(unsigned index, unsigned odsOperandsSize) { return {index, 1}; } const Properties &getProperties() { return properties; } ::mlir::DictionaryAttr getAttributes() { return odsAttrs; } ::mlir::IntegerAttr getDstSelIndexAttr() { auto attr = ::llvm::cast<::mlir::IntegerAttr>(getProperties().dstSelIndex); return attr; } uint32_t getDstSelIndex(); }; } // namespace detail template class CvtScaleF32SrFp8BF16OpGenericAdaptor : public detail::CvtScaleF32SrFp8BF16OpGenericAdaptorBase { using ValueT = ::llvm::detail::ValueOfRange; using Base = detail::CvtScaleF32SrFp8BF16OpGenericAdaptorBase; static constexpr int odsIndex_oldVdst = 0; static constexpr int odsIndex_src0 = 1; static constexpr int odsIndex_seed = 2; static constexpr int odsIndex_scale = 3; public: CvtScaleF32SrFp8BF16OpGenericAdaptor(RangeT values, ::mlir::DictionaryAttr attrs, const Properties &properties, ::mlir::RegionRange regions = {}) : Base(attrs, properties, regions), odsOperands(values) {} CvtScaleF32SrFp8BF16OpGenericAdaptor(RangeT values, ::mlir::DictionaryAttr attrs, ::mlir::PropertyRef properties, ::mlir::RegionRange regions = {}) : CvtScaleF32SrFp8BF16OpGenericAdaptor(values, attrs, (properties ? *properties.as() : Properties{}), regions) {} CvtScaleF32SrFp8BF16OpGenericAdaptor(RangeT values, ::mlir::DictionaryAttr attrs = nullptr) : CvtScaleF32SrFp8BF16OpGenericAdaptor(values, attrs, Properties{}, {}) {} CvtScaleF32SrFp8BF16OpGenericAdaptor(RangeT values, const CvtScaleF32SrFp8BF16OpGenericAdaptorBase &base) : Base(base), odsOperands(values) {} template >> CvtScaleF32SrFp8BF16OpGenericAdaptor(RangeT values, LateInst op) : Base(op), odsOperands(values) {} std::pair getODSOperandIndexAndLength(unsigned index) { return Base::getODSOperandIndexAndLength(index, odsOperands.size()); } RangeT getODSOperands(unsigned index) { auto valueRange = getODSOperandIndexAndLength(index); return {std::next(odsOperands.begin(), valueRange.first), std::next(odsOperands.begin(), valueRange.first + valueRange.second)}; } ValueT getOldVdst() { return (*getODSOperands(0).begin()); } ValueT getSrc0() { return (*getODSOperands(1).begin()); } ValueT getSeed() { return (*getODSOperands(2).begin()); } ValueT getScale() { return (*getODSOperands(3).begin()); } RangeT getOperands() { return odsOperands; } private: RangeT odsOperands; }; class CvtScaleF32SrFp8BF16OpAdaptor : public CvtScaleF32SrFp8BF16OpGenericAdaptor<::mlir::ValueRange> { public: using CvtScaleF32SrFp8BF16OpGenericAdaptor::CvtScaleF32SrFp8BF16OpGenericAdaptor; CvtScaleF32SrFp8BF16OpAdaptor(CvtScaleF32SrFp8BF16Op op); ::llvm::LogicalResult verify(::mlir::Location loc); }; class CvtScaleF32SrFp8BF16Op : public ::mlir::Op::Impl, ::mlir::OpTrait::ZeroSuccessors, ::mlir::OpTrait::NOperands<4>::Impl, ::mlir::OpTrait::OpInvariants, ::mlir::BytecodeOpInterface::Trait, ::mlir::ConditionallySpeculatable::Trait, ::mlir::OpTrait::AlwaysSpeculatableImplTrait, ::mlir::MemoryEffectOpInterface::Trait> { public: using Op::Op; using Op::print; using Adaptor = CvtScaleF32SrFp8BF16OpAdaptor; template using GenericAdaptor = CvtScaleF32SrFp8BF16OpGenericAdaptor; using FoldAdaptor = GenericAdaptor<::llvm::ArrayRef<::mlir::Attribute>>; static constexpr int odsIndex_oldVdst = 0; static constexpr int odsIndex_src0 = 1; static constexpr int odsIndex_seed = 2; static constexpr int odsIndex_scale = 3; using Properties = FoldAdaptor::Properties; static ::llvm::ArrayRef<::llvm::StringRef> getAttributeNames() { static ::llvm::StringRef attrNames[] = {::llvm::StringRef("dstSelIndex")}; return ::llvm::ArrayRef(attrNames); } ::mlir::StringAttr getDstSelIndexAttrName() { return getAttributeNameForIndex(0); } static ::mlir::StringAttr getDstSelIndexAttrName(::mlir::OperationName name) { return getAttributeNameForIndex(name, 0); } static constexpr ::llvm::StringLiteral getOperationName() { return ::llvm::StringLiteral("rocdl.cvt.scalef32.sr.fp8.bf16"); } std::pair getODSOperandIndexAndLength(unsigned index) { return {index, 1}; } ::mlir::Operation::operand_range getODSOperands(unsigned index) { auto valueRange = getODSOperandIndexAndLength(index); return {std::next(getOperation()->operand_begin(), valueRange.first), std::next(getOperation()->operand_begin(), valueRange.first + valueRange.second)}; } ::mlir::TypedValue<::mlir::IntegerType> getOldVdst() { return ::llvm::cast<::mlir::TypedValue<::mlir::IntegerType>>(*getODSOperands(0).begin()); } ::mlir::TypedValue<::mlir::Type> getSrc0() { return ::llvm::cast<::mlir::TypedValue<::mlir::Type>>(*getODSOperands(1).begin()); } ::mlir::TypedValue<::mlir::IntegerType> getSeed() { return ::llvm::cast<::mlir::TypedValue<::mlir::IntegerType>>(*getODSOperands(2).begin()); } ::mlir::TypedValue<::mlir::FloatType> getScale() { return ::llvm::cast<::mlir::TypedValue<::mlir::FloatType>>(*getODSOperands(3).begin()); } ::mlir::OpOperand &getOldVdstMutable() { auto range = getODSOperandIndexAndLength(0); return getOperation()->getOpOperand(range.first); } ::mlir::OpOperand &getSrc0Mutable() { auto range = getODSOperandIndexAndLength(1); return getOperation()->getOpOperand(range.first); } ::mlir::OpOperand &getSeedMutable() { auto range = getODSOperandIndexAndLength(2); return getOperation()->getOpOperand(range.first); } ::mlir::OpOperand &getScaleMutable() { auto range = getODSOperandIndexAndLength(3); return getOperation()->getOpOperand(range.first); } std::pair getODSResultIndexAndLength(unsigned index) { return {index, 1}; } ::mlir::Operation::result_range getODSResults(unsigned index) { auto valueRange = getODSResultIndexAndLength(index); return {std::next(getOperation()->result_begin(), valueRange.first), std::next(getOperation()->result_begin(), valueRange.first + valueRange.second)}; } ::mlir::TypedValue<::mlir::IntegerType> getRes() { return ::llvm::cast<::mlir::TypedValue<::mlir::IntegerType>>(*getODSResults(0).begin()); } static ::llvm::LogicalResult setPropertiesFromAttr(Properties &prop, ::mlir::Attribute attr, ::llvm::function_ref<::mlir::InFlightDiagnostic()> emitError); static ::mlir::Attribute getPropertiesAsAttr(::mlir::MLIRContext *ctx, const Properties &prop); static llvm::hash_code computePropertiesHash(const Properties &prop); static std::optional getInherentAttr(::mlir::MLIRContext *ctx, const Properties &prop, llvm::StringRef name); static void setInherentAttr(Properties &prop, llvm::StringRef name, mlir::Attribute value); static void populateInherentAttrs(::mlir::MLIRContext *ctx, const Properties &prop, ::mlir::NamedAttrList &attrs); static ::llvm::LogicalResult verifyInherentAttrs(::mlir::OperationName opName, ::mlir::NamedAttrList &attrs, llvm::function_ref<::mlir::InFlightDiagnostic()> emitError); static ::llvm::LogicalResult readProperties(::mlir::DialectBytecodeReader &reader, ::mlir::OperationState &state); void writeProperties(::mlir::DialectBytecodeWriter &writer); ::mlir::IntegerAttr getDstSelIndexAttr() { return ::llvm::cast<::mlir::IntegerAttr>(getProperties().dstSelIndex); } uint32_t getDstSelIndex(); void setDstSelIndexAttr(::mlir::IntegerAttr attr) { getProperties().dstSelIndex = attr; } void setDstSelIndex(uint32_t attrValue); static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::Type res, ::mlir::Value oldVdst, ::mlir::Value src0, ::mlir::Value seed, ::mlir::Value scale, ::mlir::IntegerAttr dstSelIndex); static CvtScaleF32SrFp8BF16Op create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::Type res, ::mlir::Value oldVdst, ::mlir::Value src0, ::mlir::Value seed, ::mlir::Value scale, ::mlir::IntegerAttr dstSelIndex); static CvtScaleF32SrFp8BF16Op create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::Type res, ::mlir::Value oldVdst, ::mlir::Value src0, ::mlir::Value seed, ::mlir::Value scale, ::mlir::IntegerAttr dstSelIndex); static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::Value oldVdst, ::mlir::Value src0, ::mlir::Value seed, ::mlir::Value scale, ::mlir::IntegerAttr dstSelIndex); static CvtScaleF32SrFp8BF16Op create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::Value oldVdst, ::mlir::Value src0, ::mlir::Value seed, ::mlir::Value scale, ::mlir::IntegerAttr dstSelIndex); static CvtScaleF32SrFp8BF16Op create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::Value oldVdst, ::mlir::Value src0, ::mlir::Value seed, ::mlir::Value scale, ::mlir::IntegerAttr dstSelIndex); static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::Type res, ::mlir::Value oldVdst, ::mlir::Value src0, ::mlir::Value seed, ::mlir::Value scale, uint32_t dstSelIndex); static CvtScaleF32SrFp8BF16Op create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::Type res, ::mlir::Value oldVdst, ::mlir::Value src0, ::mlir::Value seed, ::mlir::Value scale, uint32_t dstSelIndex); static CvtScaleF32SrFp8BF16Op create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::Type res, ::mlir::Value oldVdst, ::mlir::Value src0, ::mlir::Value seed, ::mlir::Value scale, uint32_t dstSelIndex); static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::Value oldVdst, ::mlir::Value src0, ::mlir::Value seed, ::mlir::Value scale, uint32_t dstSelIndex); static CvtScaleF32SrFp8BF16Op create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::Value oldVdst, ::mlir::Value src0, ::mlir::Value seed, ::mlir::Value scale, uint32_t dstSelIndex); static CvtScaleF32SrFp8BF16Op create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::Value oldVdst, ::mlir::Value src0, ::mlir::Value seed, ::mlir::Value scale, uint32_t dstSelIndex); static void build(::mlir::OpBuilder &, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, ::llvm::ArrayRef<::mlir::NamedAttribute> attributes = {}); static CvtScaleF32SrFp8BF16Op create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, ::llvm::ArrayRef<::mlir::NamedAttribute> attributes = {}); static CvtScaleF32SrFp8BF16Op create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, ::llvm::ArrayRef<::mlir::NamedAttribute> attributes = {}); static void build(::mlir::OpBuilder &, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, const Properties &properties, ::llvm::ArrayRef<::mlir::NamedAttribute> discardableAttributes = {}); static CvtScaleF32SrFp8BF16Op create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, const Properties &properties, ::llvm::ArrayRef<::mlir::NamedAttribute> discardableAttributes = {}); static CvtScaleF32SrFp8BF16Op create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, const Properties &properties, ::llvm::ArrayRef<::mlir::NamedAttribute> discardableAttributes = {}); ::llvm::LogicalResult verifyInvariantsImpl(); ::llvm::LogicalResult verifyInvariants(); static ::mlir::ParseResult parse(::mlir::OpAsmParser &parser, ::mlir::OperationState &result); void print(::mlir::OpAsmPrinter &_odsPrinter); void getEffects(::llvm::SmallVectorImpl<::mlir::SideEffects::EffectInstance<::mlir::MemoryEffects::Effect>> &effects); private: ::mlir::StringAttr getAttributeNameForIndex(unsigned index) { return getAttributeNameForIndex((*this)->getName(), index); } static ::mlir::StringAttr getAttributeNameForIndex(::mlir::OperationName name, unsigned index) { assert(index < 1 && "invalid attribute index"); assert(name.getStringRef() == getOperationName() && "invalid operation name"); assert(name.isRegistered() && "Operation isn't registered, missing a " "dependent dialect loading?"); return name.getAttributeNames()[index]; } public: }; } // namespace mlir::ROCDL MLIR_DECLARE_EXPLICIT_TYPE_ID(::mlir::ROCDL::CvtScaleF32SrFp8BF16Op) MLIR_DECLARE_EXPLICIT_TYPE_ID(::mlir::ROCDL::detail::CvtScaleF32SrFp8BF16OpGenericAdaptorBase::Properties) namespace mlir::ROCDL { //===----------------------------------------------------------------------===// // ::mlir::ROCDL::CvtScaleF32SrFp8F16Op declarations //===----------------------------------------------------------------------===// namespace detail { class CvtScaleF32SrFp8F16OpGenericAdaptorBase { public: struct Properties { using dstSelIndexTy = ::mlir::IntegerAttr; dstSelIndexTy dstSelIndex; auto getDstSelIndex() const { auto &propStorage = this->dstSelIndex; return ::llvm::cast<::mlir::IntegerAttr>(propStorage); } void setDstSelIndex(const ::mlir::IntegerAttr &propValue) { this->dstSelIndex = propValue; } bool operator==(const Properties &rhs) const { return rhs.dstSelIndex == this->dstSelIndex && true; } bool operator!=(const Properties &rhs) const { return !(*this == rhs); } }; protected: ::mlir::DictionaryAttr odsAttrs; ::std::optional<::mlir::OperationName> odsOpName; Properties properties; ::mlir::RegionRange odsRegions; public: CvtScaleF32SrFp8F16OpGenericAdaptorBase(::mlir::DictionaryAttr attrs, const Properties &properties, ::mlir::RegionRange regions = {}) : odsAttrs(attrs), properties(properties), odsRegions(regions) { if (odsAttrs) odsOpName.emplace("rocdl.cvt.scalef32.sr.fp8.f16", odsAttrs.getContext()); } CvtScaleF32SrFp8F16OpGenericAdaptorBase(CvtScaleF32SrFp8F16Op op); std::pair getODSOperandIndexAndLength(unsigned index, unsigned odsOperandsSize) { return {index, 1}; } const Properties &getProperties() { return properties; } ::mlir::DictionaryAttr getAttributes() { return odsAttrs; } ::mlir::IntegerAttr getDstSelIndexAttr() { auto attr = ::llvm::cast<::mlir::IntegerAttr>(getProperties().dstSelIndex); return attr; } uint32_t getDstSelIndex(); }; } // namespace detail template class CvtScaleF32SrFp8F16OpGenericAdaptor : public detail::CvtScaleF32SrFp8F16OpGenericAdaptorBase { using ValueT = ::llvm::detail::ValueOfRange; using Base = detail::CvtScaleF32SrFp8F16OpGenericAdaptorBase; static constexpr int odsIndex_oldVdst = 0; static constexpr int odsIndex_src0 = 1; static constexpr int odsIndex_seed = 2; static constexpr int odsIndex_scale = 3; public: CvtScaleF32SrFp8F16OpGenericAdaptor(RangeT values, ::mlir::DictionaryAttr attrs, const Properties &properties, ::mlir::RegionRange regions = {}) : Base(attrs, properties, regions), odsOperands(values) {} CvtScaleF32SrFp8F16OpGenericAdaptor(RangeT values, ::mlir::DictionaryAttr attrs, ::mlir::PropertyRef properties, ::mlir::RegionRange regions = {}) : CvtScaleF32SrFp8F16OpGenericAdaptor(values, attrs, (properties ? *properties.as() : Properties{}), regions) {} CvtScaleF32SrFp8F16OpGenericAdaptor(RangeT values, ::mlir::DictionaryAttr attrs = nullptr) : CvtScaleF32SrFp8F16OpGenericAdaptor(values, attrs, Properties{}, {}) {} CvtScaleF32SrFp8F16OpGenericAdaptor(RangeT values, const CvtScaleF32SrFp8F16OpGenericAdaptorBase &base) : Base(base), odsOperands(values) {} template >> CvtScaleF32SrFp8F16OpGenericAdaptor(RangeT values, LateInst op) : Base(op), odsOperands(values) {} std::pair getODSOperandIndexAndLength(unsigned index) { return Base::getODSOperandIndexAndLength(index, odsOperands.size()); } RangeT getODSOperands(unsigned index) { auto valueRange = getODSOperandIndexAndLength(index); return {std::next(odsOperands.begin(), valueRange.first), std::next(odsOperands.begin(), valueRange.first + valueRange.second)}; } ValueT getOldVdst() { return (*getODSOperands(0).begin()); } ValueT getSrc0() { return (*getODSOperands(1).begin()); } ValueT getSeed() { return (*getODSOperands(2).begin()); } ValueT getScale() { return (*getODSOperands(3).begin()); } RangeT getOperands() { return odsOperands; } private: RangeT odsOperands; }; class CvtScaleF32SrFp8F16OpAdaptor : public CvtScaleF32SrFp8F16OpGenericAdaptor<::mlir::ValueRange> { public: using CvtScaleF32SrFp8F16OpGenericAdaptor::CvtScaleF32SrFp8F16OpGenericAdaptor; CvtScaleF32SrFp8F16OpAdaptor(CvtScaleF32SrFp8F16Op op); ::llvm::LogicalResult verify(::mlir::Location loc); }; class CvtScaleF32SrFp8F16Op : public ::mlir::Op::Impl, ::mlir::OpTrait::ZeroSuccessors, ::mlir::OpTrait::NOperands<4>::Impl, ::mlir::OpTrait::OpInvariants, ::mlir::BytecodeOpInterface::Trait, ::mlir::ConditionallySpeculatable::Trait, ::mlir::OpTrait::AlwaysSpeculatableImplTrait, ::mlir::MemoryEffectOpInterface::Trait> { public: using Op::Op; using Op::print; using Adaptor = CvtScaleF32SrFp8F16OpAdaptor; template using GenericAdaptor = CvtScaleF32SrFp8F16OpGenericAdaptor; using FoldAdaptor = GenericAdaptor<::llvm::ArrayRef<::mlir::Attribute>>; static constexpr int odsIndex_oldVdst = 0; static constexpr int odsIndex_src0 = 1; static constexpr int odsIndex_seed = 2; static constexpr int odsIndex_scale = 3; using Properties = FoldAdaptor::Properties; static ::llvm::ArrayRef<::llvm::StringRef> getAttributeNames() { static ::llvm::StringRef attrNames[] = {::llvm::StringRef("dstSelIndex")}; return ::llvm::ArrayRef(attrNames); } ::mlir::StringAttr getDstSelIndexAttrName() { return getAttributeNameForIndex(0); } static ::mlir::StringAttr getDstSelIndexAttrName(::mlir::OperationName name) { return getAttributeNameForIndex(name, 0); } static constexpr ::llvm::StringLiteral getOperationName() { return ::llvm::StringLiteral("rocdl.cvt.scalef32.sr.fp8.f16"); } std::pair getODSOperandIndexAndLength(unsigned index) { return {index, 1}; } ::mlir::Operation::operand_range getODSOperands(unsigned index) { auto valueRange = getODSOperandIndexAndLength(index); return {std::next(getOperation()->operand_begin(), valueRange.first), std::next(getOperation()->operand_begin(), valueRange.first + valueRange.second)}; } ::mlir::TypedValue<::mlir::IntegerType> getOldVdst() { return ::llvm::cast<::mlir::TypedValue<::mlir::IntegerType>>(*getODSOperands(0).begin()); } ::mlir::TypedValue<::mlir::FloatType> getSrc0() { return ::llvm::cast<::mlir::TypedValue<::mlir::FloatType>>(*getODSOperands(1).begin()); } ::mlir::TypedValue<::mlir::IntegerType> getSeed() { return ::llvm::cast<::mlir::TypedValue<::mlir::IntegerType>>(*getODSOperands(2).begin()); } ::mlir::TypedValue<::mlir::FloatType> getScale() { return ::llvm::cast<::mlir::TypedValue<::mlir::FloatType>>(*getODSOperands(3).begin()); } ::mlir::OpOperand &getOldVdstMutable() { auto range = getODSOperandIndexAndLength(0); return getOperation()->getOpOperand(range.first); } ::mlir::OpOperand &getSrc0Mutable() { auto range = getODSOperandIndexAndLength(1); return getOperation()->getOpOperand(range.first); } ::mlir::OpOperand &getSeedMutable() { auto range = getODSOperandIndexAndLength(2); return getOperation()->getOpOperand(range.first); } ::mlir::OpOperand &getScaleMutable() { auto range = getODSOperandIndexAndLength(3); return getOperation()->getOpOperand(range.first); } std::pair getODSResultIndexAndLength(unsigned index) { return {index, 1}; } ::mlir::Operation::result_range getODSResults(unsigned index) { auto valueRange = getODSResultIndexAndLength(index); return {std::next(getOperation()->result_begin(), valueRange.first), std::next(getOperation()->result_begin(), valueRange.first + valueRange.second)}; } ::mlir::TypedValue<::mlir::IntegerType> getRes() { return ::llvm::cast<::mlir::TypedValue<::mlir::IntegerType>>(*getODSResults(0).begin()); } static ::llvm::LogicalResult setPropertiesFromAttr(Properties &prop, ::mlir::Attribute attr, ::llvm::function_ref<::mlir::InFlightDiagnostic()> emitError); static ::mlir::Attribute getPropertiesAsAttr(::mlir::MLIRContext *ctx, const Properties &prop); static llvm::hash_code computePropertiesHash(const Properties &prop); static std::optional getInherentAttr(::mlir::MLIRContext *ctx, const Properties &prop, llvm::StringRef name); static void setInherentAttr(Properties &prop, llvm::StringRef name, mlir::Attribute value); static void populateInherentAttrs(::mlir::MLIRContext *ctx, const Properties &prop, ::mlir::NamedAttrList &attrs); static ::llvm::LogicalResult verifyInherentAttrs(::mlir::OperationName opName, ::mlir::NamedAttrList &attrs, llvm::function_ref<::mlir::InFlightDiagnostic()> emitError); static ::llvm::LogicalResult readProperties(::mlir::DialectBytecodeReader &reader, ::mlir::OperationState &state); void writeProperties(::mlir::DialectBytecodeWriter &writer); ::mlir::IntegerAttr getDstSelIndexAttr() { return ::llvm::cast<::mlir::IntegerAttr>(getProperties().dstSelIndex); } uint32_t getDstSelIndex(); void setDstSelIndexAttr(::mlir::IntegerAttr attr) { getProperties().dstSelIndex = attr; } void setDstSelIndex(uint32_t attrValue); static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::Type res, ::mlir::Value oldVdst, ::mlir::Value src0, ::mlir::Value seed, ::mlir::Value scale, ::mlir::IntegerAttr dstSelIndex); static CvtScaleF32SrFp8F16Op create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::Type res, ::mlir::Value oldVdst, ::mlir::Value src0, ::mlir::Value seed, ::mlir::Value scale, ::mlir::IntegerAttr dstSelIndex); static CvtScaleF32SrFp8F16Op create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::Type res, ::mlir::Value oldVdst, ::mlir::Value src0, ::mlir::Value seed, ::mlir::Value scale, ::mlir::IntegerAttr dstSelIndex); static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::Value oldVdst, ::mlir::Value src0, ::mlir::Value seed, ::mlir::Value scale, ::mlir::IntegerAttr dstSelIndex); static CvtScaleF32SrFp8F16Op create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::Value oldVdst, ::mlir::Value src0, ::mlir::Value seed, ::mlir::Value scale, ::mlir::IntegerAttr dstSelIndex); static CvtScaleF32SrFp8F16Op create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::Value oldVdst, ::mlir::Value src0, ::mlir::Value seed, ::mlir::Value scale, ::mlir::IntegerAttr dstSelIndex); static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::Type res, ::mlir::Value oldVdst, ::mlir::Value src0, ::mlir::Value seed, ::mlir::Value scale, uint32_t dstSelIndex); static CvtScaleF32SrFp8F16Op create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::Type res, ::mlir::Value oldVdst, ::mlir::Value src0, ::mlir::Value seed, ::mlir::Value scale, uint32_t dstSelIndex); static CvtScaleF32SrFp8F16Op create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::Type res, ::mlir::Value oldVdst, ::mlir::Value src0, ::mlir::Value seed, ::mlir::Value scale, uint32_t dstSelIndex); static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::Value oldVdst, ::mlir::Value src0, ::mlir::Value seed, ::mlir::Value scale, uint32_t dstSelIndex); static CvtScaleF32SrFp8F16Op create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::Value oldVdst, ::mlir::Value src0, ::mlir::Value seed, ::mlir::Value scale, uint32_t dstSelIndex); static CvtScaleF32SrFp8F16Op create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::Value oldVdst, ::mlir::Value src0, ::mlir::Value seed, ::mlir::Value scale, uint32_t dstSelIndex); static void build(::mlir::OpBuilder &, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, ::llvm::ArrayRef<::mlir::NamedAttribute> attributes = {}); static CvtScaleF32SrFp8F16Op create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, ::llvm::ArrayRef<::mlir::NamedAttribute> attributes = {}); static CvtScaleF32SrFp8F16Op create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, ::llvm::ArrayRef<::mlir::NamedAttribute> attributes = {}); static void build(::mlir::OpBuilder &, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, const Properties &properties, ::llvm::ArrayRef<::mlir::NamedAttribute> discardableAttributes = {}); static CvtScaleF32SrFp8F16Op create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, const Properties &properties, ::llvm::ArrayRef<::mlir::NamedAttribute> discardableAttributes = {}); static CvtScaleF32SrFp8F16Op create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, const Properties &properties, ::llvm::ArrayRef<::mlir::NamedAttribute> discardableAttributes = {}); ::llvm::LogicalResult verifyInvariantsImpl(); ::llvm::LogicalResult verifyInvariants(); static ::mlir::ParseResult parse(::mlir::OpAsmParser &parser, ::mlir::OperationState &result); void print(::mlir::OpAsmPrinter &_odsPrinter); void getEffects(::llvm::SmallVectorImpl<::mlir::SideEffects::EffectInstance<::mlir::MemoryEffects::Effect>> &effects); private: ::mlir::StringAttr getAttributeNameForIndex(unsigned index) { return getAttributeNameForIndex((*this)->getName(), index); } static ::mlir::StringAttr getAttributeNameForIndex(::mlir::OperationName name, unsigned index) { assert(index < 1 && "invalid attribute index"); assert(name.getStringRef() == getOperationName() && "invalid operation name"); assert(name.isRegistered() && "Operation isn't registered, missing a " "dependent dialect loading?"); return name.getAttributeNames()[index]; } public: }; } // namespace mlir::ROCDL MLIR_DECLARE_EXPLICIT_TYPE_ID(::mlir::ROCDL::CvtScaleF32SrFp8F16Op) MLIR_DECLARE_EXPLICIT_TYPE_ID(::mlir::ROCDL::detail::CvtScaleF32SrFp8F16OpGenericAdaptorBase::Properties) namespace mlir::ROCDL { //===----------------------------------------------------------------------===// // ::mlir::ROCDL::CvtScaleF32SrFp8F32Op declarations //===----------------------------------------------------------------------===// namespace detail { class CvtScaleF32SrFp8F32OpGenericAdaptorBase { public: struct Properties { using dstSelIndexTy = ::mlir::IntegerAttr; dstSelIndexTy dstSelIndex; auto getDstSelIndex() const { auto &propStorage = this->dstSelIndex; return ::llvm::cast<::mlir::IntegerAttr>(propStorage); } void setDstSelIndex(const ::mlir::IntegerAttr &propValue) { this->dstSelIndex = propValue; } bool operator==(const Properties &rhs) const { return rhs.dstSelIndex == this->dstSelIndex && true; } bool operator!=(const Properties &rhs) const { return !(*this == rhs); } }; protected: ::mlir::DictionaryAttr odsAttrs; ::std::optional<::mlir::OperationName> odsOpName; Properties properties; ::mlir::RegionRange odsRegions; public: CvtScaleF32SrFp8F32OpGenericAdaptorBase(::mlir::DictionaryAttr attrs, const Properties &properties, ::mlir::RegionRange regions = {}) : odsAttrs(attrs), properties(properties), odsRegions(regions) { if (odsAttrs) odsOpName.emplace("rocdl.cvt.scalef32.sr.fp8.f32", odsAttrs.getContext()); } CvtScaleF32SrFp8F32OpGenericAdaptorBase(CvtScaleF32SrFp8F32Op op); std::pair getODSOperandIndexAndLength(unsigned index, unsigned odsOperandsSize) { return {index, 1}; } const Properties &getProperties() { return properties; } ::mlir::DictionaryAttr getAttributes() { return odsAttrs; } ::mlir::IntegerAttr getDstSelIndexAttr() { auto attr = ::llvm::cast<::mlir::IntegerAttr>(getProperties().dstSelIndex); return attr; } uint32_t getDstSelIndex(); }; } // namespace detail template class CvtScaleF32SrFp8F32OpGenericAdaptor : public detail::CvtScaleF32SrFp8F32OpGenericAdaptorBase { using ValueT = ::llvm::detail::ValueOfRange; using Base = detail::CvtScaleF32SrFp8F32OpGenericAdaptorBase; static constexpr int odsIndex_oldVdst = 0; static constexpr int odsIndex_src0 = 1; static constexpr int odsIndex_seed = 2; static constexpr int odsIndex_scale = 3; public: CvtScaleF32SrFp8F32OpGenericAdaptor(RangeT values, ::mlir::DictionaryAttr attrs, const Properties &properties, ::mlir::RegionRange regions = {}) : Base(attrs, properties, regions), odsOperands(values) {} CvtScaleF32SrFp8F32OpGenericAdaptor(RangeT values, ::mlir::DictionaryAttr attrs, ::mlir::PropertyRef properties, ::mlir::RegionRange regions = {}) : CvtScaleF32SrFp8F32OpGenericAdaptor(values, attrs, (properties ? *properties.as() : Properties{}), regions) {} CvtScaleF32SrFp8F32OpGenericAdaptor(RangeT values, ::mlir::DictionaryAttr attrs = nullptr) : CvtScaleF32SrFp8F32OpGenericAdaptor(values, attrs, Properties{}, {}) {} CvtScaleF32SrFp8F32OpGenericAdaptor(RangeT values, const CvtScaleF32SrFp8F32OpGenericAdaptorBase &base) : Base(base), odsOperands(values) {} template >> CvtScaleF32SrFp8F32OpGenericAdaptor(RangeT values, LateInst op) : Base(op), odsOperands(values) {} std::pair getODSOperandIndexAndLength(unsigned index) { return Base::getODSOperandIndexAndLength(index, odsOperands.size()); } RangeT getODSOperands(unsigned index) { auto valueRange = getODSOperandIndexAndLength(index); return {std::next(odsOperands.begin(), valueRange.first), std::next(odsOperands.begin(), valueRange.first + valueRange.second)}; } ValueT getOldVdst() { return (*getODSOperands(0).begin()); } ValueT getSrc0() { return (*getODSOperands(1).begin()); } ValueT getSeed() { return (*getODSOperands(2).begin()); } ValueT getScale() { return (*getODSOperands(3).begin()); } RangeT getOperands() { return odsOperands; } private: RangeT odsOperands; }; class CvtScaleF32SrFp8F32OpAdaptor : public CvtScaleF32SrFp8F32OpGenericAdaptor<::mlir::ValueRange> { public: using CvtScaleF32SrFp8F32OpGenericAdaptor::CvtScaleF32SrFp8F32OpGenericAdaptor; CvtScaleF32SrFp8F32OpAdaptor(CvtScaleF32SrFp8F32Op op); ::llvm::LogicalResult verify(::mlir::Location loc); }; class CvtScaleF32SrFp8F32Op : public ::mlir::Op::Impl, ::mlir::OpTrait::ZeroSuccessors, ::mlir::OpTrait::NOperands<4>::Impl, ::mlir::OpTrait::OpInvariants, ::mlir::BytecodeOpInterface::Trait, ::mlir::ConditionallySpeculatable::Trait, ::mlir::OpTrait::AlwaysSpeculatableImplTrait, ::mlir::MemoryEffectOpInterface::Trait> { public: using Op::Op; using Op::print; using Adaptor = CvtScaleF32SrFp8F32OpAdaptor; template using GenericAdaptor = CvtScaleF32SrFp8F32OpGenericAdaptor; using FoldAdaptor = GenericAdaptor<::llvm::ArrayRef<::mlir::Attribute>>; static constexpr int odsIndex_oldVdst = 0; static constexpr int odsIndex_src0 = 1; static constexpr int odsIndex_seed = 2; static constexpr int odsIndex_scale = 3; using Properties = FoldAdaptor::Properties; static ::llvm::ArrayRef<::llvm::StringRef> getAttributeNames() { static ::llvm::StringRef attrNames[] = {::llvm::StringRef("dstSelIndex")}; return ::llvm::ArrayRef(attrNames); } ::mlir::StringAttr getDstSelIndexAttrName() { return getAttributeNameForIndex(0); } static ::mlir::StringAttr getDstSelIndexAttrName(::mlir::OperationName name) { return getAttributeNameForIndex(name, 0); } static constexpr ::llvm::StringLiteral getOperationName() { return ::llvm::StringLiteral("rocdl.cvt.scalef32.sr.fp8.f32"); } std::pair getODSOperandIndexAndLength(unsigned index) { return {index, 1}; } ::mlir::Operation::operand_range getODSOperands(unsigned index) { auto valueRange = getODSOperandIndexAndLength(index); return {std::next(getOperation()->operand_begin(), valueRange.first), std::next(getOperation()->operand_begin(), valueRange.first + valueRange.second)}; } ::mlir::TypedValue<::mlir::IntegerType> getOldVdst() { return ::llvm::cast<::mlir::TypedValue<::mlir::IntegerType>>(*getODSOperands(0).begin()); } ::mlir::TypedValue<::mlir::FloatType> getSrc0() { return ::llvm::cast<::mlir::TypedValue<::mlir::FloatType>>(*getODSOperands(1).begin()); } ::mlir::TypedValue<::mlir::IntegerType> getSeed() { return ::llvm::cast<::mlir::TypedValue<::mlir::IntegerType>>(*getODSOperands(2).begin()); } ::mlir::TypedValue<::mlir::FloatType> getScale() { return ::llvm::cast<::mlir::TypedValue<::mlir::FloatType>>(*getODSOperands(3).begin()); } ::mlir::OpOperand &getOldVdstMutable() { auto range = getODSOperandIndexAndLength(0); return getOperation()->getOpOperand(range.first); } ::mlir::OpOperand &getSrc0Mutable() { auto range = getODSOperandIndexAndLength(1); return getOperation()->getOpOperand(range.first); } ::mlir::OpOperand &getSeedMutable() { auto range = getODSOperandIndexAndLength(2); return getOperation()->getOpOperand(range.first); } ::mlir::OpOperand &getScaleMutable() { auto range = getODSOperandIndexAndLength(3); return getOperation()->getOpOperand(range.first); } std::pair getODSResultIndexAndLength(unsigned index) { return {index, 1}; } ::mlir::Operation::result_range getODSResults(unsigned index) { auto valueRange = getODSResultIndexAndLength(index); return {std::next(getOperation()->result_begin(), valueRange.first), std::next(getOperation()->result_begin(), valueRange.first + valueRange.second)}; } ::mlir::TypedValue<::mlir::IntegerType> getRes() { return ::llvm::cast<::mlir::TypedValue<::mlir::IntegerType>>(*getODSResults(0).begin()); } static ::llvm::LogicalResult setPropertiesFromAttr(Properties &prop, ::mlir::Attribute attr, ::llvm::function_ref<::mlir::InFlightDiagnostic()> emitError); static ::mlir::Attribute getPropertiesAsAttr(::mlir::MLIRContext *ctx, const Properties &prop); static llvm::hash_code computePropertiesHash(const Properties &prop); static std::optional getInherentAttr(::mlir::MLIRContext *ctx, const Properties &prop, llvm::StringRef name); static void setInherentAttr(Properties &prop, llvm::StringRef name, mlir::Attribute value); static void populateInherentAttrs(::mlir::MLIRContext *ctx, const Properties &prop, ::mlir::NamedAttrList &attrs); static ::llvm::LogicalResult verifyInherentAttrs(::mlir::OperationName opName, ::mlir::NamedAttrList &attrs, llvm::function_ref<::mlir::InFlightDiagnostic()> emitError); static ::llvm::LogicalResult readProperties(::mlir::DialectBytecodeReader &reader, ::mlir::OperationState &state); void writeProperties(::mlir::DialectBytecodeWriter &writer); ::mlir::IntegerAttr getDstSelIndexAttr() { return ::llvm::cast<::mlir::IntegerAttr>(getProperties().dstSelIndex); } uint32_t getDstSelIndex(); void setDstSelIndexAttr(::mlir::IntegerAttr attr) { getProperties().dstSelIndex = attr; } void setDstSelIndex(uint32_t attrValue); static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::Type res, ::mlir::Value oldVdst, ::mlir::Value src0, ::mlir::Value seed, ::mlir::Value scale, ::mlir::IntegerAttr dstSelIndex); static CvtScaleF32SrFp8F32Op create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::Type res, ::mlir::Value oldVdst, ::mlir::Value src0, ::mlir::Value seed, ::mlir::Value scale, ::mlir::IntegerAttr dstSelIndex); static CvtScaleF32SrFp8F32Op create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::Type res, ::mlir::Value oldVdst, ::mlir::Value src0, ::mlir::Value seed, ::mlir::Value scale, ::mlir::IntegerAttr dstSelIndex); static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::Value oldVdst, ::mlir::Value src0, ::mlir::Value seed, ::mlir::Value scale, ::mlir::IntegerAttr dstSelIndex); static CvtScaleF32SrFp8F32Op create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::Value oldVdst, ::mlir::Value src0, ::mlir::Value seed, ::mlir::Value scale, ::mlir::IntegerAttr dstSelIndex); static CvtScaleF32SrFp8F32Op create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::Value oldVdst, ::mlir::Value src0, ::mlir::Value seed, ::mlir::Value scale, ::mlir::IntegerAttr dstSelIndex); static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::Type res, ::mlir::Value oldVdst, ::mlir::Value src0, ::mlir::Value seed, ::mlir::Value scale, uint32_t dstSelIndex); static CvtScaleF32SrFp8F32Op create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::Type res, ::mlir::Value oldVdst, ::mlir::Value src0, ::mlir::Value seed, ::mlir::Value scale, uint32_t dstSelIndex); static CvtScaleF32SrFp8F32Op create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::Type res, ::mlir::Value oldVdst, ::mlir::Value src0, ::mlir::Value seed, ::mlir::Value scale, uint32_t dstSelIndex); static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::Value oldVdst, ::mlir::Value src0, ::mlir::Value seed, ::mlir::Value scale, uint32_t dstSelIndex); static CvtScaleF32SrFp8F32Op create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::Value oldVdst, ::mlir::Value src0, ::mlir::Value seed, ::mlir::Value scale, uint32_t dstSelIndex); static CvtScaleF32SrFp8F32Op create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::Value oldVdst, ::mlir::Value src0, ::mlir::Value seed, ::mlir::Value scale, uint32_t dstSelIndex); static void build(::mlir::OpBuilder &, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, ::llvm::ArrayRef<::mlir::NamedAttribute> attributes = {}); static CvtScaleF32SrFp8F32Op create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, ::llvm::ArrayRef<::mlir::NamedAttribute> attributes = {}); static CvtScaleF32SrFp8F32Op create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, ::llvm::ArrayRef<::mlir::NamedAttribute> attributes = {}); static void build(::mlir::OpBuilder &, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, const Properties &properties, ::llvm::ArrayRef<::mlir::NamedAttribute> discardableAttributes = {}); static CvtScaleF32SrFp8F32Op create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, const Properties &properties, ::llvm::ArrayRef<::mlir::NamedAttribute> discardableAttributes = {}); static CvtScaleF32SrFp8F32Op create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, const Properties &properties, ::llvm::ArrayRef<::mlir::NamedAttribute> discardableAttributes = {}); ::llvm::LogicalResult verifyInvariantsImpl(); ::llvm::LogicalResult verifyInvariants(); static ::mlir::ParseResult parse(::mlir::OpAsmParser &parser, ::mlir::OperationState &result); void print(::mlir::OpAsmPrinter &_odsPrinter); void getEffects(::llvm::SmallVectorImpl<::mlir::SideEffects::EffectInstance<::mlir::MemoryEffects::Effect>> &effects); private: ::mlir::StringAttr getAttributeNameForIndex(unsigned index) { return getAttributeNameForIndex((*this)->getName(), index); } static ::mlir::StringAttr getAttributeNameForIndex(::mlir::OperationName name, unsigned index) { assert(index < 1 && "invalid attribute index"); assert(name.getStringRef() == getOperationName() && "invalid operation name"); assert(name.isRegistered() && "Operation isn't registered, missing a " "dependent dialect loading?"); return name.getAttributeNames()[index]; } public: }; } // namespace mlir::ROCDL MLIR_DECLARE_EXPLICIT_TYPE_ID(::mlir::ROCDL::CvtScaleF32SrFp8F32Op) MLIR_DECLARE_EXPLICIT_TYPE_ID(::mlir::ROCDL::detail::CvtScaleF32SrFp8F32OpGenericAdaptorBase::Properties) namespace mlir::ROCDL { //===----------------------------------------------------------------------===// // ::mlir::ROCDL::CvtScaleF32SrPk16Bf6Bf16Op declarations //===----------------------------------------------------------------------===// namespace detail { class CvtScaleF32SrPk16Bf6Bf16OpGenericAdaptorBase { public: using Properties = ::mlir::EmptyProperties; protected: ::mlir::DictionaryAttr odsAttrs; ::std::optional<::mlir::OperationName> odsOpName; Properties properties; ::mlir::RegionRange odsRegions; public: CvtScaleF32SrPk16Bf6Bf16OpGenericAdaptorBase(::mlir::DictionaryAttr attrs, const Properties &properties, ::mlir::RegionRange regions = {}) : odsAttrs(attrs), properties(properties), odsRegions(regions) { if (odsAttrs) odsOpName.emplace("rocdl.cvt.scalef32.sr.pk16.bf6.bf16", odsAttrs.getContext()); } CvtScaleF32SrPk16Bf6Bf16OpGenericAdaptorBase(CvtScaleF32SrPk16Bf6Bf16Op op); std::pair getODSOperandIndexAndLength(unsigned index, unsigned odsOperandsSize) { return {index, 1}; } const Properties &getProperties() { return properties; } ::mlir::DictionaryAttr getAttributes() { return odsAttrs; } }; } // namespace detail template class CvtScaleF32SrPk16Bf6Bf16OpGenericAdaptor : public detail::CvtScaleF32SrPk16Bf6Bf16OpGenericAdaptorBase { using ValueT = ::llvm::detail::ValueOfRange; using Base = detail::CvtScaleF32SrPk16Bf6Bf16OpGenericAdaptorBase; static constexpr int odsIndex_src = 0; static constexpr int odsIndex_seed = 1; static constexpr int odsIndex_scale = 2; public: CvtScaleF32SrPk16Bf6Bf16OpGenericAdaptor(RangeT values, ::mlir::DictionaryAttr attrs, const Properties &properties, ::mlir::RegionRange regions = {}) : Base(attrs, properties, regions), odsOperands(values) {} CvtScaleF32SrPk16Bf6Bf16OpGenericAdaptor(RangeT values, ::mlir::DictionaryAttr attrs, ::mlir::PropertyRef properties, ::mlir::RegionRange regions = {}) : CvtScaleF32SrPk16Bf6Bf16OpGenericAdaptor(values, attrs, (properties ? *properties.as() : Properties{}), regions) {} CvtScaleF32SrPk16Bf6Bf16OpGenericAdaptor(RangeT values, ::mlir::DictionaryAttr attrs = nullptr) : CvtScaleF32SrPk16Bf6Bf16OpGenericAdaptor(values, attrs, Properties{}, {}) {} CvtScaleF32SrPk16Bf6Bf16OpGenericAdaptor(RangeT values, const CvtScaleF32SrPk16Bf6Bf16OpGenericAdaptorBase &base) : Base(base), odsOperands(values) {} template >> CvtScaleF32SrPk16Bf6Bf16OpGenericAdaptor(RangeT values, LateInst op) : Base(op), odsOperands(values) {} std::pair getODSOperandIndexAndLength(unsigned index) { return Base::getODSOperandIndexAndLength(index, odsOperands.size()); } RangeT getODSOperands(unsigned index) { auto valueRange = getODSOperandIndexAndLength(index); return {std::next(odsOperands.begin(), valueRange.first), std::next(odsOperands.begin(), valueRange.first + valueRange.second)}; } ValueT getSrc() { return (*getODSOperands(0).begin()); } ValueT getSeed() { return (*getODSOperands(1).begin()); } ValueT getScale() { return (*getODSOperands(2).begin()); } RangeT getOperands() { return odsOperands; } private: RangeT odsOperands; }; class CvtScaleF32SrPk16Bf6Bf16OpAdaptor : public CvtScaleF32SrPk16Bf6Bf16OpGenericAdaptor<::mlir::ValueRange> { public: using CvtScaleF32SrPk16Bf6Bf16OpGenericAdaptor::CvtScaleF32SrPk16Bf6Bf16OpGenericAdaptor; CvtScaleF32SrPk16Bf6Bf16OpAdaptor(CvtScaleF32SrPk16Bf6Bf16Op op); ::llvm::LogicalResult verify(::mlir::Location loc); }; class CvtScaleF32SrPk16Bf6Bf16Op : public ::mlir::Op::Impl, ::mlir::OpTrait::ZeroSuccessors, ::mlir::OpTrait::NOperands<3>::Impl, ::mlir::OpTrait::OpInvariants, ::mlir::ConditionallySpeculatable::Trait, ::mlir::OpTrait::AlwaysSpeculatableImplTrait, ::mlir::MemoryEffectOpInterface::Trait> { public: using Op::Op; using Op::print; using Adaptor = CvtScaleF32SrPk16Bf6Bf16OpAdaptor; template using GenericAdaptor = CvtScaleF32SrPk16Bf6Bf16OpGenericAdaptor; using FoldAdaptor = GenericAdaptor<::llvm::ArrayRef<::mlir::Attribute>>; static constexpr int odsIndex_src = 0; static constexpr int odsIndex_seed = 1; static constexpr int odsIndex_scale = 2; using Properties = FoldAdaptor::Properties; static ::llvm::ArrayRef<::llvm::StringRef> getAttributeNames() { return {}; } static constexpr ::llvm::StringLiteral getOperationName() { return ::llvm::StringLiteral("rocdl.cvt.scalef32.sr.pk16.bf6.bf16"); } std::pair getODSOperandIndexAndLength(unsigned index) { return {index, 1}; } ::mlir::Operation::operand_range getODSOperands(unsigned index) { auto valueRange = getODSOperandIndexAndLength(index); return {std::next(getOperation()->operand_begin(), valueRange.first), std::next(getOperation()->operand_begin(), valueRange.first + valueRange.second)}; } ::mlir::TypedValue<::mlir::VectorType> getSrc() { return ::llvm::cast<::mlir::TypedValue<::mlir::VectorType>>(*getODSOperands(0).begin()); } ::mlir::TypedValue<::mlir::IntegerType> getSeed() { return ::llvm::cast<::mlir::TypedValue<::mlir::IntegerType>>(*getODSOperands(1).begin()); } ::mlir::TypedValue<::mlir::FloatType> getScale() { return ::llvm::cast<::mlir::TypedValue<::mlir::FloatType>>(*getODSOperands(2).begin()); } ::mlir::OpOperand &getSrcMutable() { auto range = getODSOperandIndexAndLength(0); return getOperation()->getOpOperand(range.first); } ::mlir::OpOperand &getSeedMutable() { auto range = getODSOperandIndexAndLength(1); return getOperation()->getOpOperand(range.first); } ::mlir::OpOperand &getScaleMutable() { auto range = getODSOperandIndexAndLength(2); return getOperation()->getOpOperand(range.first); } std::pair getODSResultIndexAndLength(unsigned index) { return {index, 1}; } ::mlir::Operation::result_range getODSResults(unsigned index) { auto valueRange = getODSResultIndexAndLength(index); return {std::next(getOperation()->result_begin(), valueRange.first), std::next(getOperation()->result_begin(), valueRange.first + valueRange.second)}; } ::mlir::TypedValue<::mlir::VectorType> getRes() { return ::llvm::cast<::mlir::TypedValue<::mlir::VectorType>>(*getODSResults(0).begin()); } static ::llvm::LogicalResult setPropertiesFromAttr(Properties &prop, ::mlir::Attribute attr, ::llvm::function_ref<::mlir::InFlightDiagnostic()> emitError); static ::mlir::Attribute getPropertiesAsAttr(::mlir::MLIRContext *ctx, const Properties &prop); static llvm::hash_code computePropertiesHash(const Properties &prop); static std::optional getInherentAttr(::mlir::MLIRContext *ctx, const Properties &prop, llvm::StringRef name); static void setInherentAttr(Properties &prop, llvm::StringRef name, mlir::Attribute value); static void populateInherentAttrs(::mlir::MLIRContext *ctx, const Properties &prop, ::mlir::NamedAttrList &attrs); static ::llvm::LogicalResult verifyInherentAttrs(::mlir::OperationName opName, ::mlir::NamedAttrList &attrs, llvm::function_ref<::mlir::InFlightDiagnostic()> emitError); static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::Type res, ::mlir::Value src, ::mlir::Value seed, ::mlir::Value scale); static CvtScaleF32SrPk16Bf6Bf16Op create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::Type res, ::mlir::Value src, ::mlir::Value seed, ::mlir::Value scale); static CvtScaleF32SrPk16Bf6Bf16Op create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::Type res, ::mlir::Value src, ::mlir::Value seed, ::mlir::Value scale); static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::Value src, ::mlir::Value seed, ::mlir::Value scale); static CvtScaleF32SrPk16Bf6Bf16Op create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::Value src, ::mlir::Value seed, ::mlir::Value scale); static CvtScaleF32SrPk16Bf6Bf16Op create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::Value src, ::mlir::Value seed, ::mlir::Value scale); static void build(::mlir::OpBuilder &, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, ::llvm::ArrayRef<::mlir::NamedAttribute> attributes = {}); static CvtScaleF32SrPk16Bf6Bf16Op create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, ::llvm::ArrayRef<::mlir::NamedAttribute> attributes = {}); static CvtScaleF32SrPk16Bf6Bf16Op create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, ::llvm::ArrayRef<::mlir::NamedAttribute> attributes = {}); static void build(::mlir::OpBuilder &, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, const Properties &properties, ::llvm::ArrayRef<::mlir::NamedAttribute> discardableAttributes = {}); static CvtScaleF32SrPk16Bf6Bf16Op create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, const Properties &properties, ::llvm::ArrayRef<::mlir::NamedAttribute> discardableAttributes = {}); static CvtScaleF32SrPk16Bf6Bf16Op create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, const Properties &properties, ::llvm::ArrayRef<::mlir::NamedAttribute> discardableAttributes = {}); ::llvm::LogicalResult verifyInvariantsImpl(); ::llvm::LogicalResult verifyInvariants(); static ::mlir::ParseResult parse(::mlir::OpAsmParser &parser, ::mlir::OperationState &result); void print(::mlir::OpAsmPrinter &_odsPrinter); void getEffects(::llvm::SmallVectorImpl<::mlir::SideEffects::EffectInstance<::mlir::MemoryEffects::Effect>> &effects); public: }; } // namespace mlir::ROCDL MLIR_DECLARE_EXPLICIT_TYPE_ID(::mlir::ROCDL::CvtScaleF32SrPk16Bf6Bf16Op) namespace mlir::ROCDL { //===----------------------------------------------------------------------===// // ::mlir::ROCDL::CvtScaleF32SrPk16Bf6F16Op declarations //===----------------------------------------------------------------------===// namespace detail { class CvtScaleF32SrPk16Bf6F16OpGenericAdaptorBase { public: using Properties = ::mlir::EmptyProperties; protected: ::mlir::DictionaryAttr odsAttrs; ::std::optional<::mlir::OperationName> odsOpName; Properties properties; ::mlir::RegionRange odsRegions; public: CvtScaleF32SrPk16Bf6F16OpGenericAdaptorBase(::mlir::DictionaryAttr attrs, const Properties &properties, ::mlir::RegionRange regions = {}) : odsAttrs(attrs), properties(properties), odsRegions(regions) { if (odsAttrs) odsOpName.emplace("rocdl.cvt.scalef32.sr.pk16.bf6.f16", odsAttrs.getContext()); } CvtScaleF32SrPk16Bf6F16OpGenericAdaptorBase(CvtScaleF32SrPk16Bf6F16Op op); std::pair getODSOperandIndexAndLength(unsigned index, unsigned odsOperandsSize) { return {index, 1}; } const Properties &getProperties() { return properties; } ::mlir::DictionaryAttr getAttributes() { return odsAttrs; } }; } // namespace detail template class CvtScaleF32SrPk16Bf6F16OpGenericAdaptor : public detail::CvtScaleF32SrPk16Bf6F16OpGenericAdaptorBase { using ValueT = ::llvm::detail::ValueOfRange; using Base = detail::CvtScaleF32SrPk16Bf6F16OpGenericAdaptorBase; static constexpr int odsIndex_src = 0; static constexpr int odsIndex_seed = 1; static constexpr int odsIndex_scale = 2; public: CvtScaleF32SrPk16Bf6F16OpGenericAdaptor(RangeT values, ::mlir::DictionaryAttr attrs, const Properties &properties, ::mlir::RegionRange regions = {}) : Base(attrs, properties, regions), odsOperands(values) {} CvtScaleF32SrPk16Bf6F16OpGenericAdaptor(RangeT values, ::mlir::DictionaryAttr attrs, ::mlir::PropertyRef properties, ::mlir::RegionRange regions = {}) : CvtScaleF32SrPk16Bf6F16OpGenericAdaptor(values, attrs, (properties ? *properties.as() : Properties{}), regions) {} CvtScaleF32SrPk16Bf6F16OpGenericAdaptor(RangeT values, ::mlir::DictionaryAttr attrs = nullptr) : CvtScaleF32SrPk16Bf6F16OpGenericAdaptor(values, attrs, Properties{}, {}) {} CvtScaleF32SrPk16Bf6F16OpGenericAdaptor(RangeT values, const CvtScaleF32SrPk16Bf6F16OpGenericAdaptorBase &base) : Base(base), odsOperands(values) {} template >> CvtScaleF32SrPk16Bf6F16OpGenericAdaptor(RangeT values, LateInst op) : Base(op), odsOperands(values) {} std::pair getODSOperandIndexAndLength(unsigned index) { return Base::getODSOperandIndexAndLength(index, odsOperands.size()); } RangeT getODSOperands(unsigned index) { auto valueRange = getODSOperandIndexAndLength(index); return {std::next(odsOperands.begin(), valueRange.first), std::next(odsOperands.begin(), valueRange.first + valueRange.second)}; } ValueT getSrc() { return (*getODSOperands(0).begin()); } ValueT getSeed() { return (*getODSOperands(1).begin()); } ValueT getScale() { return (*getODSOperands(2).begin()); } RangeT getOperands() { return odsOperands; } private: RangeT odsOperands; }; class CvtScaleF32SrPk16Bf6F16OpAdaptor : public CvtScaleF32SrPk16Bf6F16OpGenericAdaptor<::mlir::ValueRange> { public: using CvtScaleF32SrPk16Bf6F16OpGenericAdaptor::CvtScaleF32SrPk16Bf6F16OpGenericAdaptor; CvtScaleF32SrPk16Bf6F16OpAdaptor(CvtScaleF32SrPk16Bf6F16Op op); ::llvm::LogicalResult verify(::mlir::Location loc); }; class CvtScaleF32SrPk16Bf6F16Op : public ::mlir::Op::Impl, ::mlir::OpTrait::ZeroSuccessors, ::mlir::OpTrait::NOperands<3>::Impl, ::mlir::OpTrait::OpInvariants, ::mlir::ConditionallySpeculatable::Trait, ::mlir::OpTrait::AlwaysSpeculatableImplTrait, ::mlir::MemoryEffectOpInterface::Trait> { public: using Op::Op; using Op::print; using Adaptor = CvtScaleF32SrPk16Bf6F16OpAdaptor; template using GenericAdaptor = CvtScaleF32SrPk16Bf6F16OpGenericAdaptor; using FoldAdaptor = GenericAdaptor<::llvm::ArrayRef<::mlir::Attribute>>; static constexpr int odsIndex_src = 0; static constexpr int odsIndex_seed = 1; static constexpr int odsIndex_scale = 2; using Properties = FoldAdaptor::Properties; static ::llvm::ArrayRef<::llvm::StringRef> getAttributeNames() { return {}; } static constexpr ::llvm::StringLiteral getOperationName() { return ::llvm::StringLiteral("rocdl.cvt.scalef32.sr.pk16.bf6.f16"); } std::pair getODSOperandIndexAndLength(unsigned index) { return {index, 1}; } ::mlir::Operation::operand_range getODSOperands(unsigned index) { auto valueRange = getODSOperandIndexAndLength(index); return {std::next(getOperation()->operand_begin(), valueRange.first), std::next(getOperation()->operand_begin(), valueRange.first + valueRange.second)}; } ::mlir::TypedValue<::mlir::VectorType> getSrc() { return ::llvm::cast<::mlir::TypedValue<::mlir::VectorType>>(*getODSOperands(0).begin()); } ::mlir::TypedValue<::mlir::IntegerType> getSeed() { return ::llvm::cast<::mlir::TypedValue<::mlir::IntegerType>>(*getODSOperands(1).begin()); } ::mlir::TypedValue<::mlir::FloatType> getScale() { return ::llvm::cast<::mlir::TypedValue<::mlir::FloatType>>(*getODSOperands(2).begin()); } ::mlir::OpOperand &getSrcMutable() { auto range = getODSOperandIndexAndLength(0); return getOperation()->getOpOperand(range.first); } ::mlir::OpOperand &getSeedMutable() { auto range = getODSOperandIndexAndLength(1); return getOperation()->getOpOperand(range.first); } ::mlir::OpOperand &getScaleMutable() { auto range = getODSOperandIndexAndLength(2); return getOperation()->getOpOperand(range.first); } std::pair getODSResultIndexAndLength(unsigned index) { return {index, 1}; } ::mlir::Operation::result_range getODSResults(unsigned index) { auto valueRange = getODSResultIndexAndLength(index); return {std::next(getOperation()->result_begin(), valueRange.first), std::next(getOperation()->result_begin(), valueRange.first + valueRange.second)}; } ::mlir::TypedValue<::mlir::VectorType> getRes() { return ::llvm::cast<::mlir::TypedValue<::mlir::VectorType>>(*getODSResults(0).begin()); } static ::llvm::LogicalResult setPropertiesFromAttr(Properties &prop, ::mlir::Attribute attr, ::llvm::function_ref<::mlir::InFlightDiagnostic()> emitError); static ::mlir::Attribute getPropertiesAsAttr(::mlir::MLIRContext *ctx, const Properties &prop); static llvm::hash_code computePropertiesHash(const Properties &prop); static std::optional getInherentAttr(::mlir::MLIRContext *ctx, const Properties &prop, llvm::StringRef name); static void setInherentAttr(Properties &prop, llvm::StringRef name, mlir::Attribute value); static void populateInherentAttrs(::mlir::MLIRContext *ctx, const Properties &prop, ::mlir::NamedAttrList &attrs); static ::llvm::LogicalResult verifyInherentAttrs(::mlir::OperationName opName, ::mlir::NamedAttrList &attrs, llvm::function_ref<::mlir::InFlightDiagnostic()> emitError); static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::Type res, ::mlir::Value src, ::mlir::Value seed, ::mlir::Value scale); static CvtScaleF32SrPk16Bf6F16Op create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::Type res, ::mlir::Value src, ::mlir::Value seed, ::mlir::Value scale); static CvtScaleF32SrPk16Bf6F16Op create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::Type res, ::mlir::Value src, ::mlir::Value seed, ::mlir::Value scale); static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::Value src, ::mlir::Value seed, ::mlir::Value scale); static CvtScaleF32SrPk16Bf6F16Op create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::Value src, ::mlir::Value seed, ::mlir::Value scale); static CvtScaleF32SrPk16Bf6F16Op create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::Value src, ::mlir::Value seed, ::mlir::Value scale); static void build(::mlir::OpBuilder &, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, ::llvm::ArrayRef<::mlir::NamedAttribute> attributes = {}); static CvtScaleF32SrPk16Bf6F16Op create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, ::llvm::ArrayRef<::mlir::NamedAttribute> attributes = {}); static CvtScaleF32SrPk16Bf6F16Op create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, ::llvm::ArrayRef<::mlir::NamedAttribute> attributes = {}); static void build(::mlir::OpBuilder &, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, const Properties &properties, ::llvm::ArrayRef<::mlir::NamedAttribute> discardableAttributes = {}); static CvtScaleF32SrPk16Bf6F16Op create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, const Properties &properties, ::llvm::ArrayRef<::mlir::NamedAttribute> discardableAttributes = {}); static CvtScaleF32SrPk16Bf6F16Op create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, const Properties &properties, ::llvm::ArrayRef<::mlir::NamedAttribute> discardableAttributes = {}); ::llvm::LogicalResult verifyInvariantsImpl(); ::llvm::LogicalResult verifyInvariants(); static ::mlir::ParseResult parse(::mlir::OpAsmParser &parser, ::mlir::OperationState &result); void print(::mlir::OpAsmPrinter &_odsPrinter); void getEffects(::llvm::SmallVectorImpl<::mlir::SideEffects::EffectInstance<::mlir::MemoryEffects::Effect>> &effects); public: }; } // namespace mlir::ROCDL MLIR_DECLARE_EXPLICIT_TYPE_ID(::mlir::ROCDL::CvtScaleF32SrPk16Bf6F16Op) namespace mlir::ROCDL { //===----------------------------------------------------------------------===// // ::mlir::ROCDL::CvtScaleF32SrPk16Bf6F32Op declarations //===----------------------------------------------------------------------===// namespace detail { class CvtScaleF32SrPk16Bf6F32OpGenericAdaptorBase { public: using Properties = ::mlir::EmptyProperties; protected: ::mlir::DictionaryAttr odsAttrs; ::std::optional<::mlir::OperationName> odsOpName; Properties properties; ::mlir::RegionRange odsRegions; public: CvtScaleF32SrPk16Bf6F32OpGenericAdaptorBase(::mlir::DictionaryAttr attrs, const Properties &properties, ::mlir::RegionRange regions = {}) : odsAttrs(attrs), properties(properties), odsRegions(regions) { if (odsAttrs) odsOpName.emplace("rocdl.cvt.scalef32.sr.pk16.bf6.f32", odsAttrs.getContext()); } CvtScaleF32SrPk16Bf6F32OpGenericAdaptorBase(CvtScaleF32SrPk16Bf6F32Op op); std::pair getODSOperandIndexAndLength(unsigned index, unsigned odsOperandsSize) { return {index, 1}; } const Properties &getProperties() { return properties; } ::mlir::DictionaryAttr getAttributes() { return odsAttrs; } }; } // namespace detail template class CvtScaleF32SrPk16Bf6F32OpGenericAdaptor : public detail::CvtScaleF32SrPk16Bf6F32OpGenericAdaptorBase { using ValueT = ::llvm::detail::ValueOfRange; using Base = detail::CvtScaleF32SrPk16Bf6F32OpGenericAdaptorBase; static constexpr int odsIndex_src = 0; static constexpr int odsIndex_seed = 1; static constexpr int odsIndex_scale = 2; public: CvtScaleF32SrPk16Bf6F32OpGenericAdaptor(RangeT values, ::mlir::DictionaryAttr attrs, const Properties &properties, ::mlir::RegionRange regions = {}) : Base(attrs, properties, regions), odsOperands(values) {} CvtScaleF32SrPk16Bf6F32OpGenericAdaptor(RangeT values, ::mlir::DictionaryAttr attrs, ::mlir::PropertyRef properties, ::mlir::RegionRange regions = {}) : CvtScaleF32SrPk16Bf6F32OpGenericAdaptor(values, attrs, (properties ? *properties.as() : Properties{}), regions) {} CvtScaleF32SrPk16Bf6F32OpGenericAdaptor(RangeT values, ::mlir::DictionaryAttr attrs = nullptr) : CvtScaleF32SrPk16Bf6F32OpGenericAdaptor(values, attrs, Properties{}, {}) {} CvtScaleF32SrPk16Bf6F32OpGenericAdaptor(RangeT values, const CvtScaleF32SrPk16Bf6F32OpGenericAdaptorBase &base) : Base(base), odsOperands(values) {} template >> CvtScaleF32SrPk16Bf6F32OpGenericAdaptor(RangeT values, LateInst op) : Base(op), odsOperands(values) {} std::pair getODSOperandIndexAndLength(unsigned index) { return Base::getODSOperandIndexAndLength(index, odsOperands.size()); } RangeT getODSOperands(unsigned index) { auto valueRange = getODSOperandIndexAndLength(index); return {std::next(odsOperands.begin(), valueRange.first), std::next(odsOperands.begin(), valueRange.first + valueRange.second)}; } ValueT getSrc() { return (*getODSOperands(0).begin()); } ValueT getSeed() { return (*getODSOperands(1).begin()); } ValueT getScale() { return (*getODSOperands(2).begin()); } RangeT getOperands() { return odsOperands; } private: RangeT odsOperands; }; class CvtScaleF32SrPk16Bf6F32OpAdaptor : public CvtScaleF32SrPk16Bf6F32OpGenericAdaptor<::mlir::ValueRange> { public: using CvtScaleF32SrPk16Bf6F32OpGenericAdaptor::CvtScaleF32SrPk16Bf6F32OpGenericAdaptor; CvtScaleF32SrPk16Bf6F32OpAdaptor(CvtScaleF32SrPk16Bf6F32Op op); ::llvm::LogicalResult verify(::mlir::Location loc); }; class CvtScaleF32SrPk16Bf6F32Op : public ::mlir::Op::Impl, ::mlir::OpTrait::ZeroSuccessors, ::mlir::OpTrait::NOperands<3>::Impl, ::mlir::OpTrait::OpInvariants, ::mlir::ConditionallySpeculatable::Trait, ::mlir::OpTrait::AlwaysSpeculatableImplTrait, ::mlir::MemoryEffectOpInterface::Trait> { public: using Op::Op; using Op::print; using Adaptor = CvtScaleF32SrPk16Bf6F32OpAdaptor; template using GenericAdaptor = CvtScaleF32SrPk16Bf6F32OpGenericAdaptor; using FoldAdaptor = GenericAdaptor<::llvm::ArrayRef<::mlir::Attribute>>; static constexpr int odsIndex_src = 0; static constexpr int odsIndex_seed = 1; static constexpr int odsIndex_scale = 2; using Properties = FoldAdaptor::Properties; static ::llvm::ArrayRef<::llvm::StringRef> getAttributeNames() { return {}; } static constexpr ::llvm::StringLiteral getOperationName() { return ::llvm::StringLiteral("rocdl.cvt.scalef32.sr.pk16.bf6.f32"); } std::pair getODSOperandIndexAndLength(unsigned index) { return {index, 1}; } ::mlir::Operation::operand_range getODSOperands(unsigned index) { auto valueRange = getODSOperandIndexAndLength(index); return {std::next(getOperation()->operand_begin(), valueRange.first), std::next(getOperation()->operand_begin(), valueRange.first + valueRange.second)}; } ::mlir::TypedValue<::mlir::VectorType> getSrc() { return ::llvm::cast<::mlir::TypedValue<::mlir::VectorType>>(*getODSOperands(0).begin()); } ::mlir::TypedValue<::mlir::IntegerType> getSeed() { return ::llvm::cast<::mlir::TypedValue<::mlir::IntegerType>>(*getODSOperands(1).begin()); } ::mlir::TypedValue<::mlir::FloatType> getScale() { return ::llvm::cast<::mlir::TypedValue<::mlir::FloatType>>(*getODSOperands(2).begin()); } ::mlir::OpOperand &getSrcMutable() { auto range = getODSOperandIndexAndLength(0); return getOperation()->getOpOperand(range.first); } ::mlir::OpOperand &getSeedMutable() { auto range = getODSOperandIndexAndLength(1); return getOperation()->getOpOperand(range.first); } ::mlir::OpOperand &getScaleMutable() { auto range = getODSOperandIndexAndLength(2); return getOperation()->getOpOperand(range.first); } std::pair getODSResultIndexAndLength(unsigned index) { return {index, 1}; } ::mlir::Operation::result_range getODSResults(unsigned index) { auto valueRange = getODSResultIndexAndLength(index); return {std::next(getOperation()->result_begin(), valueRange.first), std::next(getOperation()->result_begin(), valueRange.first + valueRange.second)}; } ::mlir::TypedValue<::mlir::VectorType> getRes() { return ::llvm::cast<::mlir::TypedValue<::mlir::VectorType>>(*getODSResults(0).begin()); } static ::llvm::LogicalResult setPropertiesFromAttr(Properties &prop, ::mlir::Attribute attr, ::llvm::function_ref<::mlir::InFlightDiagnostic()> emitError); static ::mlir::Attribute getPropertiesAsAttr(::mlir::MLIRContext *ctx, const Properties &prop); static llvm::hash_code computePropertiesHash(const Properties &prop); static std::optional getInherentAttr(::mlir::MLIRContext *ctx, const Properties &prop, llvm::StringRef name); static void setInherentAttr(Properties &prop, llvm::StringRef name, mlir::Attribute value); static void populateInherentAttrs(::mlir::MLIRContext *ctx, const Properties &prop, ::mlir::NamedAttrList &attrs); static ::llvm::LogicalResult verifyInherentAttrs(::mlir::OperationName opName, ::mlir::NamedAttrList &attrs, llvm::function_ref<::mlir::InFlightDiagnostic()> emitError); static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::Type res, ::mlir::Value src, ::mlir::Value seed, ::mlir::Value scale); static CvtScaleF32SrPk16Bf6F32Op create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::Type res, ::mlir::Value src, ::mlir::Value seed, ::mlir::Value scale); static CvtScaleF32SrPk16Bf6F32Op create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::Type res, ::mlir::Value src, ::mlir::Value seed, ::mlir::Value scale); static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::Value src, ::mlir::Value seed, ::mlir::Value scale); static CvtScaleF32SrPk16Bf6F32Op create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::Value src, ::mlir::Value seed, ::mlir::Value scale); static CvtScaleF32SrPk16Bf6F32Op create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::Value src, ::mlir::Value seed, ::mlir::Value scale); static void build(::mlir::OpBuilder &, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, ::llvm::ArrayRef<::mlir::NamedAttribute> attributes = {}); static CvtScaleF32SrPk16Bf6F32Op create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, ::llvm::ArrayRef<::mlir::NamedAttribute> attributes = {}); static CvtScaleF32SrPk16Bf6F32Op create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, ::llvm::ArrayRef<::mlir::NamedAttribute> attributes = {}); static void build(::mlir::OpBuilder &, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, const Properties &properties, ::llvm::ArrayRef<::mlir::NamedAttribute> discardableAttributes = {}); static CvtScaleF32SrPk16Bf6F32Op create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, const Properties &properties, ::llvm::ArrayRef<::mlir::NamedAttribute> discardableAttributes = {}); static CvtScaleF32SrPk16Bf6F32Op create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, const Properties &properties, ::llvm::ArrayRef<::mlir::NamedAttribute> discardableAttributes = {}); ::llvm::LogicalResult verifyInvariantsImpl(); ::llvm::LogicalResult verifyInvariants(); static ::mlir::ParseResult parse(::mlir::OpAsmParser &parser, ::mlir::OperationState &result); void print(::mlir::OpAsmPrinter &_odsPrinter); void getEffects(::llvm::SmallVectorImpl<::mlir::SideEffects::EffectInstance<::mlir::MemoryEffects::Effect>> &effects); public: }; } // namespace mlir::ROCDL MLIR_DECLARE_EXPLICIT_TYPE_ID(::mlir::ROCDL::CvtScaleF32SrPk16Bf6F32Op) namespace mlir::ROCDL { //===----------------------------------------------------------------------===// // ::mlir::ROCDL::CvtScaleF32SrPk16Fp6Bf16Op declarations //===----------------------------------------------------------------------===// namespace detail { class CvtScaleF32SrPk16Fp6Bf16OpGenericAdaptorBase { public: using Properties = ::mlir::EmptyProperties; protected: ::mlir::DictionaryAttr odsAttrs; ::std::optional<::mlir::OperationName> odsOpName; Properties properties; ::mlir::RegionRange odsRegions; public: CvtScaleF32SrPk16Fp6Bf16OpGenericAdaptorBase(::mlir::DictionaryAttr attrs, const Properties &properties, ::mlir::RegionRange regions = {}) : odsAttrs(attrs), properties(properties), odsRegions(regions) { if (odsAttrs) odsOpName.emplace("rocdl.cvt.scalef32.sr.pk16.fp6.bf16", odsAttrs.getContext()); } CvtScaleF32SrPk16Fp6Bf16OpGenericAdaptorBase(CvtScaleF32SrPk16Fp6Bf16Op op); std::pair getODSOperandIndexAndLength(unsigned index, unsigned odsOperandsSize) { return {index, 1}; } const Properties &getProperties() { return properties; } ::mlir::DictionaryAttr getAttributes() { return odsAttrs; } }; } // namespace detail template class CvtScaleF32SrPk16Fp6Bf16OpGenericAdaptor : public detail::CvtScaleF32SrPk16Fp6Bf16OpGenericAdaptorBase { using ValueT = ::llvm::detail::ValueOfRange; using Base = detail::CvtScaleF32SrPk16Fp6Bf16OpGenericAdaptorBase; static constexpr int odsIndex_src = 0; static constexpr int odsIndex_seed = 1; static constexpr int odsIndex_scale = 2; public: CvtScaleF32SrPk16Fp6Bf16OpGenericAdaptor(RangeT values, ::mlir::DictionaryAttr attrs, const Properties &properties, ::mlir::RegionRange regions = {}) : Base(attrs, properties, regions), odsOperands(values) {} CvtScaleF32SrPk16Fp6Bf16OpGenericAdaptor(RangeT values, ::mlir::DictionaryAttr attrs, ::mlir::PropertyRef properties, ::mlir::RegionRange regions = {}) : CvtScaleF32SrPk16Fp6Bf16OpGenericAdaptor(values, attrs, (properties ? *properties.as() : Properties{}), regions) {} CvtScaleF32SrPk16Fp6Bf16OpGenericAdaptor(RangeT values, ::mlir::DictionaryAttr attrs = nullptr) : CvtScaleF32SrPk16Fp6Bf16OpGenericAdaptor(values, attrs, Properties{}, {}) {} CvtScaleF32SrPk16Fp6Bf16OpGenericAdaptor(RangeT values, const CvtScaleF32SrPk16Fp6Bf16OpGenericAdaptorBase &base) : Base(base), odsOperands(values) {} template >> CvtScaleF32SrPk16Fp6Bf16OpGenericAdaptor(RangeT values, LateInst op) : Base(op), odsOperands(values) {} std::pair getODSOperandIndexAndLength(unsigned index) { return Base::getODSOperandIndexAndLength(index, odsOperands.size()); } RangeT getODSOperands(unsigned index) { auto valueRange = getODSOperandIndexAndLength(index); return {std::next(odsOperands.begin(), valueRange.first), std::next(odsOperands.begin(), valueRange.first + valueRange.second)}; } ValueT getSrc() { return (*getODSOperands(0).begin()); } ValueT getSeed() { return (*getODSOperands(1).begin()); } ValueT getScale() { return (*getODSOperands(2).begin()); } RangeT getOperands() { return odsOperands; } private: RangeT odsOperands; }; class CvtScaleF32SrPk16Fp6Bf16OpAdaptor : public CvtScaleF32SrPk16Fp6Bf16OpGenericAdaptor<::mlir::ValueRange> { public: using CvtScaleF32SrPk16Fp6Bf16OpGenericAdaptor::CvtScaleF32SrPk16Fp6Bf16OpGenericAdaptor; CvtScaleF32SrPk16Fp6Bf16OpAdaptor(CvtScaleF32SrPk16Fp6Bf16Op op); ::llvm::LogicalResult verify(::mlir::Location loc); }; class CvtScaleF32SrPk16Fp6Bf16Op : public ::mlir::Op::Impl, ::mlir::OpTrait::ZeroSuccessors, ::mlir::OpTrait::NOperands<3>::Impl, ::mlir::OpTrait::OpInvariants, ::mlir::ConditionallySpeculatable::Trait, ::mlir::OpTrait::AlwaysSpeculatableImplTrait, ::mlir::MemoryEffectOpInterface::Trait> { public: using Op::Op; using Op::print; using Adaptor = CvtScaleF32SrPk16Fp6Bf16OpAdaptor; template using GenericAdaptor = CvtScaleF32SrPk16Fp6Bf16OpGenericAdaptor; using FoldAdaptor = GenericAdaptor<::llvm::ArrayRef<::mlir::Attribute>>; static constexpr int odsIndex_src = 0; static constexpr int odsIndex_seed = 1; static constexpr int odsIndex_scale = 2; using Properties = FoldAdaptor::Properties; static ::llvm::ArrayRef<::llvm::StringRef> getAttributeNames() { return {}; } static constexpr ::llvm::StringLiteral getOperationName() { return ::llvm::StringLiteral("rocdl.cvt.scalef32.sr.pk16.fp6.bf16"); } std::pair getODSOperandIndexAndLength(unsigned index) { return {index, 1}; } ::mlir::Operation::operand_range getODSOperands(unsigned index) { auto valueRange = getODSOperandIndexAndLength(index); return {std::next(getOperation()->operand_begin(), valueRange.first), std::next(getOperation()->operand_begin(), valueRange.first + valueRange.second)}; } ::mlir::TypedValue<::mlir::VectorType> getSrc() { return ::llvm::cast<::mlir::TypedValue<::mlir::VectorType>>(*getODSOperands(0).begin()); } ::mlir::TypedValue<::mlir::IntegerType> getSeed() { return ::llvm::cast<::mlir::TypedValue<::mlir::IntegerType>>(*getODSOperands(1).begin()); } ::mlir::TypedValue<::mlir::FloatType> getScale() { return ::llvm::cast<::mlir::TypedValue<::mlir::FloatType>>(*getODSOperands(2).begin()); } ::mlir::OpOperand &getSrcMutable() { auto range = getODSOperandIndexAndLength(0); return getOperation()->getOpOperand(range.first); } ::mlir::OpOperand &getSeedMutable() { auto range = getODSOperandIndexAndLength(1); return getOperation()->getOpOperand(range.first); } ::mlir::OpOperand &getScaleMutable() { auto range = getODSOperandIndexAndLength(2); return getOperation()->getOpOperand(range.first); } std::pair getODSResultIndexAndLength(unsigned index) { return {index, 1}; } ::mlir::Operation::result_range getODSResults(unsigned index) { auto valueRange = getODSResultIndexAndLength(index); return {std::next(getOperation()->result_begin(), valueRange.first), std::next(getOperation()->result_begin(), valueRange.first + valueRange.second)}; } ::mlir::TypedValue<::mlir::VectorType> getRes() { return ::llvm::cast<::mlir::TypedValue<::mlir::VectorType>>(*getODSResults(0).begin()); } static ::llvm::LogicalResult setPropertiesFromAttr(Properties &prop, ::mlir::Attribute attr, ::llvm::function_ref<::mlir::InFlightDiagnostic()> emitError); static ::mlir::Attribute getPropertiesAsAttr(::mlir::MLIRContext *ctx, const Properties &prop); static llvm::hash_code computePropertiesHash(const Properties &prop); static std::optional getInherentAttr(::mlir::MLIRContext *ctx, const Properties &prop, llvm::StringRef name); static void setInherentAttr(Properties &prop, llvm::StringRef name, mlir::Attribute value); static void populateInherentAttrs(::mlir::MLIRContext *ctx, const Properties &prop, ::mlir::NamedAttrList &attrs); static ::llvm::LogicalResult verifyInherentAttrs(::mlir::OperationName opName, ::mlir::NamedAttrList &attrs, llvm::function_ref<::mlir::InFlightDiagnostic()> emitError); static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::Type res, ::mlir::Value src, ::mlir::Value seed, ::mlir::Value scale); static CvtScaleF32SrPk16Fp6Bf16Op create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::Type res, ::mlir::Value src, ::mlir::Value seed, ::mlir::Value scale); static CvtScaleF32SrPk16Fp6Bf16Op create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::Type res, ::mlir::Value src, ::mlir::Value seed, ::mlir::Value scale); static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::Value src, ::mlir::Value seed, ::mlir::Value scale); static CvtScaleF32SrPk16Fp6Bf16Op create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::Value src, ::mlir::Value seed, ::mlir::Value scale); static CvtScaleF32SrPk16Fp6Bf16Op create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::Value src, ::mlir::Value seed, ::mlir::Value scale); static void build(::mlir::OpBuilder &, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, ::llvm::ArrayRef<::mlir::NamedAttribute> attributes = {}); static CvtScaleF32SrPk16Fp6Bf16Op create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, ::llvm::ArrayRef<::mlir::NamedAttribute> attributes = {}); static CvtScaleF32SrPk16Fp6Bf16Op create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, ::llvm::ArrayRef<::mlir::NamedAttribute> attributes = {}); static void build(::mlir::OpBuilder &, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, const Properties &properties, ::llvm::ArrayRef<::mlir::NamedAttribute> discardableAttributes = {}); static CvtScaleF32SrPk16Fp6Bf16Op create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, const Properties &properties, ::llvm::ArrayRef<::mlir::NamedAttribute> discardableAttributes = {}); static CvtScaleF32SrPk16Fp6Bf16Op create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, const Properties &properties, ::llvm::ArrayRef<::mlir::NamedAttribute> discardableAttributes = {}); ::llvm::LogicalResult verifyInvariantsImpl(); ::llvm::LogicalResult verifyInvariants(); static ::mlir::ParseResult parse(::mlir::OpAsmParser &parser, ::mlir::OperationState &result); void print(::mlir::OpAsmPrinter &_odsPrinter); void getEffects(::llvm::SmallVectorImpl<::mlir::SideEffects::EffectInstance<::mlir::MemoryEffects::Effect>> &effects); public: }; } // namespace mlir::ROCDL MLIR_DECLARE_EXPLICIT_TYPE_ID(::mlir::ROCDL::CvtScaleF32SrPk16Fp6Bf16Op) namespace mlir::ROCDL { //===----------------------------------------------------------------------===// // ::mlir::ROCDL::CvtScaleF32SrPk16Fp6F16Op declarations //===----------------------------------------------------------------------===// namespace detail { class CvtScaleF32SrPk16Fp6F16OpGenericAdaptorBase { public: using Properties = ::mlir::EmptyProperties; protected: ::mlir::DictionaryAttr odsAttrs; ::std::optional<::mlir::OperationName> odsOpName; Properties properties; ::mlir::RegionRange odsRegions; public: CvtScaleF32SrPk16Fp6F16OpGenericAdaptorBase(::mlir::DictionaryAttr attrs, const Properties &properties, ::mlir::RegionRange regions = {}) : odsAttrs(attrs), properties(properties), odsRegions(regions) { if (odsAttrs) odsOpName.emplace("rocdl.cvt.scalef32.sr.pk16.fp6.f16", odsAttrs.getContext()); } CvtScaleF32SrPk16Fp6F16OpGenericAdaptorBase(CvtScaleF32SrPk16Fp6F16Op op); std::pair getODSOperandIndexAndLength(unsigned index, unsigned odsOperandsSize) { return {index, 1}; } const Properties &getProperties() { return properties; } ::mlir::DictionaryAttr getAttributes() { return odsAttrs; } }; } // namespace detail template class CvtScaleF32SrPk16Fp6F16OpGenericAdaptor : public detail::CvtScaleF32SrPk16Fp6F16OpGenericAdaptorBase { using ValueT = ::llvm::detail::ValueOfRange; using Base = detail::CvtScaleF32SrPk16Fp6F16OpGenericAdaptorBase; static constexpr int odsIndex_src = 0; static constexpr int odsIndex_seed = 1; static constexpr int odsIndex_scale = 2; public: CvtScaleF32SrPk16Fp6F16OpGenericAdaptor(RangeT values, ::mlir::DictionaryAttr attrs, const Properties &properties, ::mlir::RegionRange regions = {}) : Base(attrs, properties, regions), odsOperands(values) {} CvtScaleF32SrPk16Fp6F16OpGenericAdaptor(RangeT values, ::mlir::DictionaryAttr attrs, ::mlir::PropertyRef properties, ::mlir::RegionRange regions = {}) : CvtScaleF32SrPk16Fp6F16OpGenericAdaptor(values, attrs, (properties ? *properties.as() : Properties{}), regions) {} CvtScaleF32SrPk16Fp6F16OpGenericAdaptor(RangeT values, ::mlir::DictionaryAttr attrs = nullptr) : CvtScaleF32SrPk16Fp6F16OpGenericAdaptor(values, attrs, Properties{}, {}) {} CvtScaleF32SrPk16Fp6F16OpGenericAdaptor(RangeT values, const CvtScaleF32SrPk16Fp6F16OpGenericAdaptorBase &base) : Base(base), odsOperands(values) {} template >> CvtScaleF32SrPk16Fp6F16OpGenericAdaptor(RangeT values, LateInst op) : Base(op), odsOperands(values) {} std::pair getODSOperandIndexAndLength(unsigned index) { return Base::getODSOperandIndexAndLength(index, odsOperands.size()); } RangeT getODSOperands(unsigned index) { auto valueRange = getODSOperandIndexAndLength(index); return {std::next(odsOperands.begin(), valueRange.first), std::next(odsOperands.begin(), valueRange.first + valueRange.second)}; } ValueT getSrc() { return (*getODSOperands(0).begin()); } ValueT getSeed() { return (*getODSOperands(1).begin()); } ValueT getScale() { return (*getODSOperands(2).begin()); } RangeT getOperands() { return odsOperands; } private: RangeT odsOperands; }; class CvtScaleF32SrPk16Fp6F16OpAdaptor : public CvtScaleF32SrPk16Fp6F16OpGenericAdaptor<::mlir::ValueRange> { public: using CvtScaleF32SrPk16Fp6F16OpGenericAdaptor::CvtScaleF32SrPk16Fp6F16OpGenericAdaptor; CvtScaleF32SrPk16Fp6F16OpAdaptor(CvtScaleF32SrPk16Fp6F16Op op); ::llvm::LogicalResult verify(::mlir::Location loc); }; class CvtScaleF32SrPk16Fp6F16Op : public ::mlir::Op::Impl, ::mlir::OpTrait::ZeroSuccessors, ::mlir::OpTrait::NOperands<3>::Impl, ::mlir::OpTrait::OpInvariants, ::mlir::ConditionallySpeculatable::Trait, ::mlir::OpTrait::AlwaysSpeculatableImplTrait, ::mlir::MemoryEffectOpInterface::Trait> { public: using Op::Op; using Op::print; using Adaptor = CvtScaleF32SrPk16Fp6F16OpAdaptor; template using GenericAdaptor = CvtScaleF32SrPk16Fp6F16OpGenericAdaptor; using FoldAdaptor = GenericAdaptor<::llvm::ArrayRef<::mlir::Attribute>>; static constexpr int odsIndex_src = 0; static constexpr int odsIndex_seed = 1; static constexpr int odsIndex_scale = 2; using Properties = FoldAdaptor::Properties; static ::llvm::ArrayRef<::llvm::StringRef> getAttributeNames() { return {}; } static constexpr ::llvm::StringLiteral getOperationName() { return ::llvm::StringLiteral("rocdl.cvt.scalef32.sr.pk16.fp6.f16"); } std::pair getODSOperandIndexAndLength(unsigned index) { return {index, 1}; } ::mlir::Operation::operand_range getODSOperands(unsigned index) { auto valueRange = getODSOperandIndexAndLength(index); return {std::next(getOperation()->operand_begin(), valueRange.first), std::next(getOperation()->operand_begin(), valueRange.first + valueRange.second)}; } ::mlir::TypedValue<::mlir::VectorType> getSrc() { return ::llvm::cast<::mlir::TypedValue<::mlir::VectorType>>(*getODSOperands(0).begin()); } ::mlir::TypedValue<::mlir::IntegerType> getSeed() { return ::llvm::cast<::mlir::TypedValue<::mlir::IntegerType>>(*getODSOperands(1).begin()); } ::mlir::TypedValue<::mlir::FloatType> getScale() { return ::llvm::cast<::mlir::TypedValue<::mlir::FloatType>>(*getODSOperands(2).begin()); } ::mlir::OpOperand &getSrcMutable() { auto range = getODSOperandIndexAndLength(0); return getOperation()->getOpOperand(range.first); } ::mlir::OpOperand &getSeedMutable() { auto range = getODSOperandIndexAndLength(1); return getOperation()->getOpOperand(range.first); } ::mlir::OpOperand &getScaleMutable() { auto range = getODSOperandIndexAndLength(2); return getOperation()->getOpOperand(range.first); } std::pair getODSResultIndexAndLength(unsigned index) { return {index, 1}; } ::mlir::Operation::result_range getODSResults(unsigned index) { auto valueRange = getODSResultIndexAndLength(index); return {std::next(getOperation()->result_begin(), valueRange.first), std::next(getOperation()->result_begin(), valueRange.first + valueRange.second)}; } ::mlir::TypedValue<::mlir::VectorType> getRes() { return ::llvm::cast<::mlir::TypedValue<::mlir::VectorType>>(*getODSResults(0).begin()); } static ::llvm::LogicalResult setPropertiesFromAttr(Properties &prop, ::mlir::Attribute attr, ::llvm::function_ref<::mlir::InFlightDiagnostic()> emitError); static ::mlir::Attribute getPropertiesAsAttr(::mlir::MLIRContext *ctx, const Properties &prop); static llvm::hash_code computePropertiesHash(const Properties &prop); static std::optional getInherentAttr(::mlir::MLIRContext *ctx, const Properties &prop, llvm::StringRef name); static void setInherentAttr(Properties &prop, llvm::StringRef name, mlir::Attribute value); static void populateInherentAttrs(::mlir::MLIRContext *ctx, const Properties &prop, ::mlir::NamedAttrList &attrs); static ::llvm::LogicalResult verifyInherentAttrs(::mlir::OperationName opName, ::mlir::NamedAttrList &attrs, llvm::function_ref<::mlir::InFlightDiagnostic()> emitError); static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::Type res, ::mlir::Value src, ::mlir::Value seed, ::mlir::Value scale); static CvtScaleF32SrPk16Fp6F16Op create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::Type res, ::mlir::Value src, ::mlir::Value seed, ::mlir::Value scale); static CvtScaleF32SrPk16Fp6F16Op create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::Type res, ::mlir::Value src, ::mlir::Value seed, ::mlir::Value scale); static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::Value src, ::mlir::Value seed, ::mlir::Value scale); static CvtScaleF32SrPk16Fp6F16Op create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::Value src, ::mlir::Value seed, ::mlir::Value scale); static CvtScaleF32SrPk16Fp6F16Op create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::Value src, ::mlir::Value seed, ::mlir::Value scale); static void build(::mlir::OpBuilder &, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, ::llvm::ArrayRef<::mlir::NamedAttribute> attributes = {}); static CvtScaleF32SrPk16Fp6F16Op create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, ::llvm::ArrayRef<::mlir::NamedAttribute> attributes = {}); static CvtScaleF32SrPk16Fp6F16Op create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, ::llvm::ArrayRef<::mlir::NamedAttribute> attributes = {}); static void build(::mlir::OpBuilder &, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, const Properties &properties, ::llvm::ArrayRef<::mlir::NamedAttribute> discardableAttributes = {}); static CvtScaleF32SrPk16Fp6F16Op create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, const Properties &properties, ::llvm::ArrayRef<::mlir::NamedAttribute> discardableAttributes = {}); static CvtScaleF32SrPk16Fp6F16Op create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, const Properties &properties, ::llvm::ArrayRef<::mlir::NamedAttribute> discardableAttributes = {}); ::llvm::LogicalResult verifyInvariantsImpl(); ::llvm::LogicalResult verifyInvariants(); static ::mlir::ParseResult parse(::mlir::OpAsmParser &parser, ::mlir::OperationState &result); void print(::mlir::OpAsmPrinter &_odsPrinter); void getEffects(::llvm::SmallVectorImpl<::mlir::SideEffects::EffectInstance<::mlir::MemoryEffects::Effect>> &effects); public: }; } // namespace mlir::ROCDL MLIR_DECLARE_EXPLICIT_TYPE_ID(::mlir::ROCDL::CvtScaleF32SrPk16Fp6F16Op) namespace mlir::ROCDL { //===----------------------------------------------------------------------===// // ::mlir::ROCDL::CvtScaleF32SrPk16Fp6F32Op declarations //===----------------------------------------------------------------------===// namespace detail { class CvtScaleF32SrPk16Fp6F32OpGenericAdaptorBase { public: using Properties = ::mlir::EmptyProperties; protected: ::mlir::DictionaryAttr odsAttrs; ::std::optional<::mlir::OperationName> odsOpName; Properties properties; ::mlir::RegionRange odsRegions; public: CvtScaleF32SrPk16Fp6F32OpGenericAdaptorBase(::mlir::DictionaryAttr attrs, const Properties &properties, ::mlir::RegionRange regions = {}) : odsAttrs(attrs), properties(properties), odsRegions(regions) { if (odsAttrs) odsOpName.emplace("rocdl.cvt.scalef32.sr.pk16.fp6.f32", odsAttrs.getContext()); } CvtScaleF32SrPk16Fp6F32OpGenericAdaptorBase(CvtScaleF32SrPk16Fp6F32Op op); std::pair getODSOperandIndexAndLength(unsigned index, unsigned odsOperandsSize) { return {index, 1}; } const Properties &getProperties() { return properties; } ::mlir::DictionaryAttr getAttributes() { return odsAttrs; } }; } // namespace detail template class CvtScaleF32SrPk16Fp6F32OpGenericAdaptor : public detail::CvtScaleF32SrPk16Fp6F32OpGenericAdaptorBase { using ValueT = ::llvm::detail::ValueOfRange; using Base = detail::CvtScaleF32SrPk16Fp6F32OpGenericAdaptorBase; static constexpr int odsIndex_src = 0; static constexpr int odsIndex_seed = 1; static constexpr int odsIndex_scale = 2; public: CvtScaleF32SrPk16Fp6F32OpGenericAdaptor(RangeT values, ::mlir::DictionaryAttr attrs, const Properties &properties, ::mlir::RegionRange regions = {}) : Base(attrs, properties, regions), odsOperands(values) {} CvtScaleF32SrPk16Fp6F32OpGenericAdaptor(RangeT values, ::mlir::DictionaryAttr attrs, ::mlir::PropertyRef properties, ::mlir::RegionRange regions = {}) : CvtScaleF32SrPk16Fp6F32OpGenericAdaptor(values, attrs, (properties ? *properties.as() : Properties{}), regions) {} CvtScaleF32SrPk16Fp6F32OpGenericAdaptor(RangeT values, ::mlir::DictionaryAttr attrs = nullptr) : CvtScaleF32SrPk16Fp6F32OpGenericAdaptor(values, attrs, Properties{}, {}) {} CvtScaleF32SrPk16Fp6F32OpGenericAdaptor(RangeT values, const CvtScaleF32SrPk16Fp6F32OpGenericAdaptorBase &base) : Base(base), odsOperands(values) {} template >> CvtScaleF32SrPk16Fp6F32OpGenericAdaptor(RangeT values, LateInst op) : Base(op), odsOperands(values) {} std::pair getODSOperandIndexAndLength(unsigned index) { return Base::getODSOperandIndexAndLength(index, odsOperands.size()); } RangeT getODSOperands(unsigned index) { auto valueRange = getODSOperandIndexAndLength(index); return {std::next(odsOperands.begin(), valueRange.first), std::next(odsOperands.begin(), valueRange.first + valueRange.second)}; } ValueT getSrc() { return (*getODSOperands(0).begin()); } ValueT getSeed() { return (*getODSOperands(1).begin()); } ValueT getScale() { return (*getODSOperands(2).begin()); } RangeT getOperands() { return odsOperands; } private: RangeT odsOperands; }; class CvtScaleF32SrPk16Fp6F32OpAdaptor : public CvtScaleF32SrPk16Fp6F32OpGenericAdaptor<::mlir::ValueRange> { public: using CvtScaleF32SrPk16Fp6F32OpGenericAdaptor::CvtScaleF32SrPk16Fp6F32OpGenericAdaptor; CvtScaleF32SrPk16Fp6F32OpAdaptor(CvtScaleF32SrPk16Fp6F32Op op); ::llvm::LogicalResult verify(::mlir::Location loc); }; class CvtScaleF32SrPk16Fp6F32Op : public ::mlir::Op::Impl, ::mlir::OpTrait::ZeroSuccessors, ::mlir::OpTrait::NOperands<3>::Impl, ::mlir::OpTrait::OpInvariants, ::mlir::ConditionallySpeculatable::Trait, ::mlir::OpTrait::AlwaysSpeculatableImplTrait, ::mlir::MemoryEffectOpInterface::Trait> { public: using Op::Op; using Op::print; using Adaptor = CvtScaleF32SrPk16Fp6F32OpAdaptor; template using GenericAdaptor = CvtScaleF32SrPk16Fp6F32OpGenericAdaptor; using FoldAdaptor = GenericAdaptor<::llvm::ArrayRef<::mlir::Attribute>>; static constexpr int odsIndex_src = 0; static constexpr int odsIndex_seed = 1; static constexpr int odsIndex_scale = 2; using Properties = FoldAdaptor::Properties; static ::llvm::ArrayRef<::llvm::StringRef> getAttributeNames() { return {}; } static constexpr ::llvm::StringLiteral getOperationName() { return ::llvm::StringLiteral("rocdl.cvt.scalef32.sr.pk16.fp6.f32"); } std::pair getODSOperandIndexAndLength(unsigned index) { return {index, 1}; } ::mlir::Operation::operand_range getODSOperands(unsigned index) { auto valueRange = getODSOperandIndexAndLength(index); return {std::next(getOperation()->operand_begin(), valueRange.first), std::next(getOperation()->operand_begin(), valueRange.first + valueRange.second)}; } ::mlir::TypedValue<::mlir::VectorType> getSrc() { return ::llvm::cast<::mlir::TypedValue<::mlir::VectorType>>(*getODSOperands(0).begin()); } ::mlir::TypedValue<::mlir::IntegerType> getSeed() { return ::llvm::cast<::mlir::TypedValue<::mlir::IntegerType>>(*getODSOperands(1).begin()); } ::mlir::TypedValue<::mlir::FloatType> getScale() { return ::llvm::cast<::mlir::TypedValue<::mlir::FloatType>>(*getODSOperands(2).begin()); } ::mlir::OpOperand &getSrcMutable() { auto range = getODSOperandIndexAndLength(0); return getOperation()->getOpOperand(range.first); } ::mlir::OpOperand &getSeedMutable() { auto range = getODSOperandIndexAndLength(1); return getOperation()->getOpOperand(range.first); } ::mlir::OpOperand &getScaleMutable() { auto range = getODSOperandIndexAndLength(2); return getOperation()->getOpOperand(range.first); } std::pair getODSResultIndexAndLength(unsigned index) { return {index, 1}; } ::mlir::Operation::result_range getODSResults(unsigned index) { auto valueRange = getODSResultIndexAndLength(index); return {std::next(getOperation()->result_begin(), valueRange.first), std::next(getOperation()->result_begin(), valueRange.first + valueRange.second)}; } ::mlir::TypedValue<::mlir::VectorType> getRes() { return ::llvm::cast<::mlir::TypedValue<::mlir::VectorType>>(*getODSResults(0).begin()); } static ::llvm::LogicalResult setPropertiesFromAttr(Properties &prop, ::mlir::Attribute attr, ::llvm::function_ref<::mlir::InFlightDiagnostic()> emitError); static ::mlir::Attribute getPropertiesAsAttr(::mlir::MLIRContext *ctx, const Properties &prop); static llvm::hash_code computePropertiesHash(const Properties &prop); static std::optional getInherentAttr(::mlir::MLIRContext *ctx, const Properties &prop, llvm::StringRef name); static void setInherentAttr(Properties &prop, llvm::StringRef name, mlir::Attribute value); static void populateInherentAttrs(::mlir::MLIRContext *ctx, const Properties &prop, ::mlir::NamedAttrList &attrs); static ::llvm::LogicalResult verifyInherentAttrs(::mlir::OperationName opName, ::mlir::NamedAttrList &attrs, llvm::function_ref<::mlir::InFlightDiagnostic()> emitError); static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::Type res, ::mlir::Value src, ::mlir::Value seed, ::mlir::Value scale); static CvtScaleF32SrPk16Fp6F32Op create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::Type res, ::mlir::Value src, ::mlir::Value seed, ::mlir::Value scale); static CvtScaleF32SrPk16Fp6F32Op create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::Type res, ::mlir::Value src, ::mlir::Value seed, ::mlir::Value scale); static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::Value src, ::mlir::Value seed, ::mlir::Value scale); static CvtScaleF32SrPk16Fp6F32Op create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::Value src, ::mlir::Value seed, ::mlir::Value scale); static CvtScaleF32SrPk16Fp6F32Op create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::Value src, ::mlir::Value seed, ::mlir::Value scale); static void build(::mlir::OpBuilder &, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, ::llvm::ArrayRef<::mlir::NamedAttribute> attributes = {}); static CvtScaleF32SrPk16Fp6F32Op create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, ::llvm::ArrayRef<::mlir::NamedAttribute> attributes = {}); static CvtScaleF32SrPk16Fp6F32Op create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, ::llvm::ArrayRef<::mlir::NamedAttribute> attributes = {}); static void build(::mlir::OpBuilder &, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, const Properties &properties, ::llvm::ArrayRef<::mlir::NamedAttribute> discardableAttributes = {}); static CvtScaleF32SrPk16Fp6F32Op create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, const Properties &properties, ::llvm::ArrayRef<::mlir::NamedAttribute> discardableAttributes = {}); static CvtScaleF32SrPk16Fp6F32Op create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, const Properties &properties, ::llvm::ArrayRef<::mlir::NamedAttribute> discardableAttributes = {}); ::llvm::LogicalResult verifyInvariantsImpl(); ::llvm::LogicalResult verifyInvariants(); static ::mlir::ParseResult parse(::mlir::OpAsmParser &parser, ::mlir::OperationState &result); void print(::mlir::OpAsmPrinter &_odsPrinter); void getEffects(::llvm::SmallVectorImpl<::mlir::SideEffects::EffectInstance<::mlir::MemoryEffects::Effect>> &effects); public: }; } // namespace mlir::ROCDL MLIR_DECLARE_EXPLICIT_TYPE_ID(::mlir::ROCDL::CvtScaleF32SrPk16Fp6F32Op) namespace mlir::ROCDL { //===----------------------------------------------------------------------===// // ::mlir::ROCDL::CvtScaleF32SrPk32Bf6Bf16Op declarations //===----------------------------------------------------------------------===// namespace detail { class CvtScaleF32SrPk32Bf6Bf16OpGenericAdaptorBase { public: using Properties = ::mlir::EmptyProperties; protected: ::mlir::DictionaryAttr odsAttrs; ::std::optional<::mlir::OperationName> odsOpName; Properties properties; ::mlir::RegionRange odsRegions; public: CvtScaleF32SrPk32Bf6Bf16OpGenericAdaptorBase(::mlir::DictionaryAttr attrs, const Properties &properties, ::mlir::RegionRange regions = {}) : odsAttrs(attrs), properties(properties), odsRegions(regions) { if (odsAttrs) odsOpName.emplace("rocdl.cvt.scalef32.sr.pk32.bf6.bf16", odsAttrs.getContext()); } CvtScaleF32SrPk32Bf6Bf16OpGenericAdaptorBase(CvtScaleF32SrPk32Bf6Bf16Op op); std::pair getODSOperandIndexAndLength(unsigned index, unsigned odsOperandsSize) { return {index, 1}; } const Properties &getProperties() { return properties; } ::mlir::DictionaryAttr getAttributes() { return odsAttrs; } }; } // namespace detail template class CvtScaleF32SrPk32Bf6Bf16OpGenericAdaptor : public detail::CvtScaleF32SrPk32Bf6Bf16OpGenericAdaptorBase { using ValueT = ::llvm::detail::ValueOfRange; using Base = detail::CvtScaleF32SrPk32Bf6Bf16OpGenericAdaptorBase; static constexpr int odsIndex_src = 0; static constexpr int odsIndex_seed = 1; static constexpr int odsIndex_scale = 2; public: CvtScaleF32SrPk32Bf6Bf16OpGenericAdaptor(RangeT values, ::mlir::DictionaryAttr attrs, const Properties &properties, ::mlir::RegionRange regions = {}) : Base(attrs, properties, regions), odsOperands(values) {} CvtScaleF32SrPk32Bf6Bf16OpGenericAdaptor(RangeT values, ::mlir::DictionaryAttr attrs, ::mlir::PropertyRef properties, ::mlir::RegionRange regions = {}) : CvtScaleF32SrPk32Bf6Bf16OpGenericAdaptor(values, attrs, (properties ? *properties.as() : Properties{}), regions) {} CvtScaleF32SrPk32Bf6Bf16OpGenericAdaptor(RangeT values, ::mlir::DictionaryAttr attrs = nullptr) : CvtScaleF32SrPk32Bf6Bf16OpGenericAdaptor(values, attrs, Properties{}, {}) {} CvtScaleF32SrPk32Bf6Bf16OpGenericAdaptor(RangeT values, const CvtScaleF32SrPk32Bf6Bf16OpGenericAdaptorBase &base) : Base(base), odsOperands(values) {} template >> CvtScaleF32SrPk32Bf6Bf16OpGenericAdaptor(RangeT values, LateInst op) : Base(op), odsOperands(values) {} std::pair getODSOperandIndexAndLength(unsigned index) { return Base::getODSOperandIndexAndLength(index, odsOperands.size()); } RangeT getODSOperands(unsigned index) { auto valueRange = getODSOperandIndexAndLength(index); return {std::next(odsOperands.begin(), valueRange.first), std::next(odsOperands.begin(), valueRange.first + valueRange.second)}; } ValueT getSrc() { return (*getODSOperands(0).begin()); } ValueT getSeed() { return (*getODSOperands(1).begin()); } ValueT getScale() { return (*getODSOperands(2).begin()); } RangeT getOperands() { return odsOperands; } private: RangeT odsOperands; }; class CvtScaleF32SrPk32Bf6Bf16OpAdaptor : public CvtScaleF32SrPk32Bf6Bf16OpGenericAdaptor<::mlir::ValueRange> { public: using CvtScaleF32SrPk32Bf6Bf16OpGenericAdaptor::CvtScaleF32SrPk32Bf6Bf16OpGenericAdaptor; CvtScaleF32SrPk32Bf6Bf16OpAdaptor(CvtScaleF32SrPk32Bf6Bf16Op op); ::llvm::LogicalResult verify(::mlir::Location loc); }; class CvtScaleF32SrPk32Bf6Bf16Op : public ::mlir::Op::Impl, ::mlir::OpTrait::ZeroSuccessors, ::mlir::OpTrait::NOperands<3>::Impl, ::mlir::OpTrait::OpInvariants, ::mlir::ConditionallySpeculatable::Trait, ::mlir::OpTrait::AlwaysSpeculatableImplTrait, ::mlir::MemoryEffectOpInterface::Trait> { public: using Op::Op; using Op::print; using Adaptor = CvtScaleF32SrPk32Bf6Bf16OpAdaptor; template using GenericAdaptor = CvtScaleF32SrPk32Bf6Bf16OpGenericAdaptor; using FoldAdaptor = GenericAdaptor<::llvm::ArrayRef<::mlir::Attribute>>; static constexpr int odsIndex_src = 0; static constexpr int odsIndex_seed = 1; static constexpr int odsIndex_scale = 2; using Properties = FoldAdaptor::Properties; static ::llvm::ArrayRef<::llvm::StringRef> getAttributeNames() { return {}; } static constexpr ::llvm::StringLiteral getOperationName() { return ::llvm::StringLiteral("rocdl.cvt.scalef32.sr.pk32.bf6.bf16"); } std::pair getODSOperandIndexAndLength(unsigned index) { return {index, 1}; } ::mlir::Operation::operand_range getODSOperands(unsigned index) { auto valueRange = getODSOperandIndexAndLength(index); return {std::next(getOperation()->operand_begin(), valueRange.first), std::next(getOperation()->operand_begin(), valueRange.first + valueRange.second)}; } ::mlir::TypedValue<::mlir::VectorType> getSrc() { return ::llvm::cast<::mlir::TypedValue<::mlir::VectorType>>(*getODSOperands(0).begin()); } ::mlir::TypedValue<::mlir::IntegerType> getSeed() { return ::llvm::cast<::mlir::TypedValue<::mlir::IntegerType>>(*getODSOperands(1).begin()); } ::mlir::TypedValue<::mlir::FloatType> getScale() { return ::llvm::cast<::mlir::TypedValue<::mlir::FloatType>>(*getODSOperands(2).begin()); } ::mlir::OpOperand &getSrcMutable() { auto range = getODSOperandIndexAndLength(0); return getOperation()->getOpOperand(range.first); } ::mlir::OpOperand &getSeedMutable() { auto range = getODSOperandIndexAndLength(1); return getOperation()->getOpOperand(range.first); } ::mlir::OpOperand &getScaleMutable() { auto range = getODSOperandIndexAndLength(2); return getOperation()->getOpOperand(range.first); } std::pair getODSResultIndexAndLength(unsigned index) { return {index, 1}; } ::mlir::Operation::result_range getODSResults(unsigned index) { auto valueRange = getODSResultIndexAndLength(index); return {std::next(getOperation()->result_begin(), valueRange.first), std::next(getOperation()->result_begin(), valueRange.first + valueRange.second)}; } ::mlir::TypedValue<::mlir::VectorType> getRes() { return ::llvm::cast<::mlir::TypedValue<::mlir::VectorType>>(*getODSResults(0).begin()); } static ::llvm::LogicalResult setPropertiesFromAttr(Properties &prop, ::mlir::Attribute attr, ::llvm::function_ref<::mlir::InFlightDiagnostic()> emitError); static ::mlir::Attribute getPropertiesAsAttr(::mlir::MLIRContext *ctx, const Properties &prop); static llvm::hash_code computePropertiesHash(const Properties &prop); static std::optional getInherentAttr(::mlir::MLIRContext *ctx, const Properties &prop, llvm::StringRef name); static void setInherentAttr(Properties &prop, llvm::StringRef name, mlir::Attribute value); static void populateInherentAttrs(::mlir::MLIRContext *ctx, const Properties &prop, ::mlir::NamedAttrList &attrs); static ::llvm::LogicalResult verifyInherentAttrs(::mlir::OperationName opName, ::mlir::NamedAttrList &attrs, llvm::function_ref<::mlir::InFlightDiagnostic()> emitError); static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::Type res, ::mlir::Value src, ::mlir::Value seed, ::mlir::Value scale); static CvtScaleF32SrPk32Bf6Bf16Op create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::Type res, ::mlir::Value src, ::mlir::Value seed, ::mlir::Value scale); static CvtScaleF32SrPk32Bf6Bf16Op create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::Type res, ::mlir::Value src, ::mlir::Value seed, ::mlir::Value scale); static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::Value src, ::mlir::Value seed, ::mlir::Value scale); static CvtScaleF32SrPk32Bf6Bf16Op create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::Value src, ::mlir::Value seed, ::mlir::Value scale); static CvtScaleF32SrPk32Bf6Bf16Op create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::Value src, ::mlir::Value seed, ::mlir::Value scale); static void build(::mlir::OpBuilder &, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, ::llvm::ArrayRef<::mlir::NamedAttribute> attributes = {}); static CvtScaleF32SrPk32Bf6Bf16Op create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, ::llvm::ArrayRef<::mlir::NamedAttribute> attributes = {}); static CvtScaleF32SrPk32Bf6Bf16Op create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, ::llvm::ArrayRef<::mlir::NamedAttribute> attributes = {}); static void build(::mlir::OpBuilder &, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, const Properties &properties, ::llvm::ArrayRef<::mlir::NamedAttribute> discardableAttributes = {}); static CvtScaleF32SrPk32Bf6Bf16Op create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, const Properties &properties, ::llvm::ArrayRef<::mlir::NamedAttribute> discardableAttributes = {}); static CvtScaleF32SrPk32Bf6Bf16Op create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, const Properties &properties, ::llvm::ArrayRef<::mlir::NamedAttribute> discardableAttributes = {}); ::llvm::LogicalResult verifyInvariantsImpl(); ::llvm::LogicalResult verifyInvariants(); static ::mlir::ParseResult parse(::mlir::OpAsmParser &parser, ::mlir::OperationState &result); void print(::mlir::OpAsmPrinter &_odsPrinter); void getEffects(::llvm::SmallVectorImpl<::mlir::SideEffects::EffectInstance<::mlir::MemoryEffects::Effect>> &effects); public: }; } // namespace mlir::ROCDL MLIR_DECLARE_EXPLICIT_TYPE_ID(::mlir::ROCDL::CvtScaleF32SrPk32Bf6Bf16Op) namespace mlir::ROCDL { //===----------------------------------------------------------------------===// // ::mlir::ROCDL::CvtScaleF32SrPk32Bf6F16Op declarations //===----------------------------------------------------------------------===// namespace detail { class CvtScaleF32SrPk32Bf6F16OpGenericAdaptorBase { public: using Properties = ::mlir::EmptyProperties; protected: ::mlir::DictionaryAttr odsAttrs; ::std::optional<::mlir::OperationName> odsOpName; Properties properties; ::mlir::RegionRange odsRegions; public: CvtScaleF32SrPk32Bf6F16OpGenericAdaptorBase(::mlir::DictionaryAttr attrs, const Properties &properties, ::mlir::RegionRange regions = {}) : odsAttrs(attrs), properties(properties), odsRegions(regions) { if (odsAttrs) odsOpName.emplace("rocdl.cvt.scalef32.sr.pk32.bf6.f16", odsAttrs.getContext()); } CvtScaleF32SrPk32Bf6F16OpGenericAdaptorBase(CvtScaleF32SrPk32Bf6F16Op op); std::pair getODSOperandIndexAndLength(unsigned index, unsigned odsOperandsSize) { return {index, 1}; } const Properties &getProperties() { return properties; } ::mlir::DictionaryAttr getAttributes() { return odsAttrs; } }; } // namespace detail template class CvtScaleF32SrPk32Bf6F16OpGenericAdaptor : public detail::CvtScaleF32SrPk32Bf6F16OpGenericAdaptorBase { using ValueT = ::llvm::detail::ValueOfRange; using Base = detail::CvtScaleF32SrPk32Bf6F16OpGenericAdaptorBase; static constexpr int odsIndex_src = 0; static constexpr int odsIndex_seed = 1; static constexpr int odsIndex_scale = 2; public: CvtScaleF32SrPk32Bf6F16OpGenericAdaptor(RangeT values, ::mlir::DictionaryAttr attrs, const Properties &properties, ::mlir::RegionRange regions = {}) : Base(attrs, properties, regions), odsOperands(values) {} CvtScaleF32SrPk32Bf6F16OpGenericAdaptor(RangeT values, ::mlir::DictionaryAttr attrs, ::mlir::PropertyRef properties, ::mlir::RegionRange regions = {}) : CvtScaleF32SrPk32Bf6F16OpGenericAdaptor(values, attrs, (properties ? *properties.as() : Properties{}), regions) {} CvtScaleF32SrPk32Bf6F16OpGenericAdaptor(RangeT values, ::mlir::DictionaryAttr attrs = nullptr) : CvtScaleF32SrPk32Bf6F16OpGenericAdaptor(values, attrs, Properties{}, {}) {} CvtScaleF32SrPk32Bf6F16OpGenericAdaptor(RangeT values, const CvtScaleF32SrPk32Bf6F16OpGenericAdaptorBase &base) : Base(base), odsOperands(values) {} template >> CvtScaleF32SrPk32Bf6F16OpGenericAdaptor(RangeT values, LateInst op) : Base(op), odsOperands(values) {} std::pair getODSOperandIndexAndLength(unsigned index) { return Base::getODSOperandIndexAndLength(index, odsOperands.size()); } RangeT getODSOperands(unsigned index) { auto valueRange = getODSOperandIndexAndLength(index); return {std::next(odsOperands.begin(), valueRange.first), std::next(odsOperands.begin(), valueRange.first + valueRange.second)}; } ValueT getSrc() { return (*getODSOperands(0).begin()); } ValueT getSeed() { return (*getODSOperands(1).begin()); } ValueT getScale() { return (*getODSOperands(2).begin()); } RangeT getOperands() { return odsOperands; } private: RangeT odsOperands; }; class CvtScaleF32SrPk32Bf6F16OpAdaptor : public CvtScaleF32SrPk32Bf6F16OpGenericAdaptor<::mlir::ValueRange> { public: using CvtScaleF32SrPk32Bf6F16OpGenericAdaptor::CvtScaleF32SrPk32Bf6F16OpGenericAdaptor; CvtScaleF32SrPk32Bf6F16OpAdaptor(CvtScaleF32SrPk32Bf6F16Op op); ::llvm::LogicalResult verify(::mlir::Location loc); }; class CvtScaleF32SrPk32Bf6F16Op : public ::mlir::Op::Impl, ::mlir::OpTrait::ZeroSuccessors, ::mlir::OpTrait::NOperands<3>::Impl, ::mlir::OpTrait::OpInvariants, ::mlir::ConditionallySpeculatable::Trait, ::mlir::OpTrait::AlwaysSpeculatableImplTrait, ::mlir::MemoryEffectOpInterface::Trait> { public: using Op::Op; using Op::print; using Adaptor = CvtScaleF32SrPk32Bf6F16OpAdaptor; template using GenericAdaptor = CvtScaleF32SrPk32Bf6F16OpGenericAdaptor; using FoldAdaptor = GenericAdaptor<::llvm::ArrayRef<::mlir::Attribute>>; static constexpr int odsIndex_src = 0; static constexpr int odsIndex_seed = 1; static constexpr int odsIndex_scale = 2; using Properties = FoldAdaptor::Properties; static ::llvm::ArrayRef<::llvm::StringRef> getAttributeNames() { return {}; } static constexpr ::llvm::StringLiteral getOperationName() { return ::llvm::StringLiteral("rocdl.cvt.scalef32.sr.pk32.bf6.f16"); } std::pair getODSOperandIndexAndLength(unsigned index) { return {index, 1}; } ::mlir::Operation::operand_range getODSOperands(unsigned index) { auto valueRange = getODSOperandIndexAndLength(index); return {std::next(getOperation()->operand_begin(), valueRange.first), std::next(getOperation()->operand_begin(), valueRange.first + valueRange.second)}; } ::mlir::TypedValue<::mlir::VectorType> getSrc() { return ::llvm::cast<::mlir::TypedValue<::mlir::VectorType>>(*getODSOperands(0).begin()); } ::mlir::TypedValue<::mlir::IntegerType> getSeed() { return ::llvm::cast<::mlir::TypedValue<::mlir::IntegerType>>(*getODSOperands(1).begin()); } ::mlir::TypedValue<::mlir::FloatType> getScale() { return ::llvm::cast<::mlir::TypedValue<::mlir::FloatType>>(*getODSOperands(2).begin()); } ::mlir::OpOperand &getSrcMutable() { auto range = getODSOperandIndexAndLength(0); return getOperation()->getOpOperand(range.first); } ::mlir::OpOperand &getSeedMutable() { auto range = getODSOperandIndexAndLength(1); return getOperation()->getOpOperand(range.first); } ::mlir::OpOperand &getScaleMutable() { auto range = getODSOperandIndexAndLength(2); return getOperation()->getOpOperand(range.first); } std::pair getODSResultIndexAndLength(unsigned index) { return {index, 1}; } ::mlir::Operation::result_range getODSResults(unsigned index) { auto valueRange = getODSResultIndexAndLength(index); return {std::next(getOperation()->result_begin(), valueRange.first), std::next(getOperation()->result_begin(), valueRange.first + valueRange.second)}; } ::mlir::TypedValue<::mlir::VectorType> getRes() { return ::llvm::cast<::mlir::TypedValue<::mlir::VectorType>>(*getODSResults(0).begin()); } static ::llvm::LogicalResult setPropertiesFromAttr(Properties &prop, ::mlir::Attribute attr, ::llvm::function_ref<::mlir::InFlightDiagnostic()> emitError); static ::mlir::Attribute getPropertiesAsAttr(::mlir::MLIRContext *ctx, const Properties &prop); static llvm::hash_code computePropertiesHash(const Properties &prop); static std::optional getInherentAttr(::mlir::MLIRContext *ctx, const Properties &prop, llvm::StringRef name); static void setInherentAttr(Properties &prop, llvm::StringRef name, mlir::Attribute value); static void populateInherentAttrs(::mlir::MLIRContext *ctx, const Properties &prop, ::mlir::NamedAttrList &attrs); static ::llvm::LogicalResult verifyInherentAttrs(::mlir::OperationName opName, ::mlir::NamedAttrList &attrs, llvm::function_ref<::mlir::InFlightDiagnostic()> emitError); static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::Type res, ::mlir::Value src, ::mlir::Value seed, ::mlir::Value scale); static CvtScaleF32SrPk32Bf6F16Op create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::Type res, ::mlir::Value src, ::mlir::Value seed, ::mlir::Value scale); static CvtScaleF32SrPk32Bf6F16Op create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::Type res, ::mlir::Value src, ::mlir::Value seed, ::mlir::Value scale); static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::Value src, ::mlir::Value seed, ::mlir::Value scale); static CvtScaleF32SrPk32Bf6F16Op create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::Value src, ::mlir::Value seed, ::mlir::Value scale); static CvtScaleF32SrPk32Bf6F16Op create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::Value src, ::mlir::Value seed, ::mlir::Value scale); static void build(::mlir::OpBuilder &, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, ::llvm::ArrayRef<::mlir::NamedAttribute> attributes = {}); static CvtScaleF32SrPk32Bf6F16Op create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, ::llvm::ArrayRef<::mlir::NamedAttribute> attributes = {}); static CvtScaleF32SrPk32Bf6F16Op create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, ::llvm::ArrayRef<::mlir::NamedAttribute> attributes = {}); static void build(::mlir::OpBuilder &, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, const Properties &properties, ::llvm::ArrayRef<::mlir::NamedAttribute> discardableAttributes = {}); static CvtScaleF32SrPk32Bf6F16Op create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, const Properties &properties, ::llvm::ArrayRef<::mlir::NamedAttribute> discardableAttributes = {}); static CvtScaleF32SrPk32Bf6F16Op create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, const Properties &properties, ::llvm::ArrayRef<::mlir::NamedAttribute> discardableAttributes = {}); ::llvm::LogicalResult verifyInvariantsImpl(); ::llvm::LogicalResult verifyInvariants(); static ::mlir::ParseResult parse(::mlir::OpAsmParser &parser, ::mlir::OperationState &result); void print(::mlir::OpAsmPrinter &_odsPrinter); void getEffects(::llvm::SmallVectorImpl<::mlir::SideEffects::EffectInstance<::mlir::MemoryEffects::Effect>> &effects); public: }; } // namespace mlir::ROCDL MLIR_DECLARE_EXPLICIT_TYPE_ID(::mlir::ROCDL::CvtScaleF32SrPk32Bf6F16Op) namespace mlir::ROCDL { //===----------------------------------------------------------------------===// // ::mlir::ROCDL::CvtScaleF32SrPk32Bf6F32Op declarations //===----------------------------------------------------------------------===// namespace detail { class CvtScaleF32SrPk32Bf6F32OpGenericAdaptorBase { public: using Properties = ::mlir::EmptyProperties; protected: ::mlir::DictionaryAttr odsAttrs; ::std::optional<::mlir::OperationName> odsOpName; Properties properties; ::mlir::RegionRange odsRegions; public: CvtScaleF32SrPk32Bf6F32OpGenericAdaptorBase(::mlir::DictionaryAttr attrs, const Properties &properties, ::mlir::RegionRange regions = {}) : odsAttrs(attrs), properties(properties), odsRegions(regions) { if (odsAttrs) odsOpName.emplace("rocdl.cvt.scalef32.sr.pk32.bf6.f32", odsAttrs.getContext()); } CvtScaleF32SrPk32Bf6F32OpGenericAdaptorBase(CvtScaleF32SrPk32Bf6F32Op op); std::pair getODSOperandIndexAndLength(unsigned index, unsigned odsOperandsSize) { return {index, 1}; } const Properties &getProperties() { return properties; } ::mlir::DictionaryAttr getAttributes() { return odsAttrs; } }; } // namespace detail template class CvtScaleF32SrPk32Bf6F32OpGenericAdaptor : public detail::CvtScaleF32SrPk32Bf6F32OpGenericAdaptorBase { using ValueT = ::llvm::detail::ValueOfRange; using Base = detail::CvtScaleF32SrPk32Bf6F32OpGenericAdaptorBase; static constexpr int odsIndex_src = 0; static constexpr int odsIndex_seed = 1; static constexpr int odsIndex_scale = 2; public: CvtScaleF32SrPk32Bf6F32OpGenericAdaptor(RangeT values, ::mlir::DictionaryAttr attrs, const Properties &properties, ::mlir::RegionRange regions = {}) : Base(attrs, properties, regions), odsOperands(values) {} CvtScaleF32SrPk32Bf6F32OpGenericAdaptor(RangeT values, ::mlir::DictionaryAttr attrs, ::mlir::PropertyRef properties, ::mlir::RegionRange regions = {}) : CvtScaleF32SrPk32Bf6F32OpGenericAdaptor(values, attrs, (properties ? *properties.as() : Properties{}), regions) {} CvtScaleF32SrPk32Bf6F32OpGenericAdaptor(RangeT values, ::mlir::DictionaryAttr attrs = nullptr) : CvtScaleF32SrPk32Bf6F32OpGenericAdaptor(values, attrs, Properties{}, {}) {} CvtScaleF32SrPk32Bf6F32OpGenericAdaptor(RangeT values, const CvtScaleF32SrPk32Bf6F32OpGenericAdaptorBase &base) : Base(base), odsOperands(values) {} template >> CvtScaleF32SrPk32Bf6F32OpGenericAdaptor(RangeT values, LateInst op) : Base(op), odsOperands(values) {} std::pair getODSOperandIndexAndLength(unsigned index) { return Base::getODSOperandIndexAndLength(index, odsOperands.size()); } RangeT getODSOperands(unsigned index) { auto valueRange = getODSOperandIndexAndLength(index); return {std::next(odsOperands.begin(), valueRange.first), std::next(odsOperands.begin(), valueRange.first + valueRange.second)}; } ValueT getSrc() { return (*getODSOperands(0).begin()); } ValueT getSeed() { return (*getODSOperands(1).begin()); } ValueT getScale() { return (*getODSOperands(2).begin()); } RangeT getOperands() { return odsOperands; } private: RangeT odsOperands; }; class CvtScaleF32SrPk32Bf6F32OpAdaptor : public CvtScaleF32SrPk32Bf6F32OpGenericAdaptor<::mlir::ValueRange> { public: using CvtScaleF32SrPk32Bf6F32OpGenericAdaptor::CvtScaleF32SrPk32Bf6F32OpGenericAdaptor; CvtScaleF32SrPk32Bf6F32OpAdaptor(CvtScaleF32SrPk32Bf6F32Op op); ::llvm::LogicalResult verify(::mlir::Location loc); }; class CvtScaleF32SrPk32Bf6F32Op : public ::mlir::Op::Impl, ::mlir::OpTrait::ZeroSuccessors, ::mlir::OpTrait::NOperands<3>::Impl, ::mlir::OpTrait::OpInvariants, ::mlir::ConditionallySpeculatable::Trait, ::mlir::OpTrait::AlwaysSpeculatableImplTrait, ::mlir::MemoryEffectOpInterface::Trait> { public: using Op::Op; using Op::print; using Adaptor = CvtScaleF32SrPk32Bf6F32OpAdaptor; template using GenericAdaptor = CvtScaleF32SrPk32Bf6F32OpGenericAdaptor; using FoldAdaptor = GenericAdaptor<::llvm::ArrayRef<::mlir::Attribute>>; static constexpr int odsIndex_src = 0; static constexpr int odsIndex_seed = 1; static constexpr int odsIndex_scale = 2; using Properties = FoldAdaptor::Properties; static ::llvm::ArrayRef<::llvm::StringRef> getAttributeNames() { return {}; } static constexpr ::llvm::StringLiteral getOperationName() { return ::llvm::StringLiteral("rocdl.cvt.scalef32.sr.pk32.bf6.f32"); } std::pair getODSOperandIndexAndLength(unsigned index) { return {index, 1}; } ::mlir::Operation::operand_range getODSOperands(unsigned index) { auto valueRange = getODSOperandIndexAndLength(index); return {std::next(getOperation()->operand_begin(), valueRange.first), std::next(getOperation()->operand_begin(), valueRange.first + valueRange.second)}; } ::mlir::TypedValue<::mlir::VectorType> getSrc() { return ::llvm::cast<::mlir::TypedValue<::mlir::VectorType>>(*getODSOperands(0).begin()); } ::mlir::TypedValue<::mlir::IntegerType> getSeed() { return ::llvm::cast<::mlir::TypedValue<::mlir::IntegerType>>(*getODSOperands(1).begin()); } ::mlir::TypedValue<::mlir::FloatType> getScale() { return ::llvm::cast<::mlir::TypedValue<::mlir::FloatType>>(*getODSOperands(2).begin()); } ::mlir::OpOperand &getSrcMutable() { auto range = getODSOperandIndexAndLength(0); return getOperation()->getOpOperand(range.first); } ::mlir::OpOperand &getSeedMutable() { auto range = getODSOperandIndexAndLength(1); return getOperation()->getOpOperand(range.first); } ::mlir::OpOperand &getScaleMutable() { auto range = getODSOperandIndexAndLength(2); return getOperation()->getOpOperand(range.first); } std::pair getODSResultIndexAndLength(unsigned index) { return {index, 1}; } ::mlir::Operation::result_range getODSResults(unsigned index) { auto valueRange = getODSResultIndexAndLength(index); return {std::next(getOperation()->result_begin(), valueRange.first), std::next(getOperation()->result_begin(), valueRange.first + valueRange.second)}; } ::mlir::TypedValue<::mlir::VectorType> getRes() { return ::llvm::cast<::mlir::TypedValue<::mlir::VectorType>>(*getODSResults(0).begin()); } static ::llvm::LogicalResult setPropertiesFromAttr(Properties &prop, ::mlir::Attribute attr, ::llvm::function_ref<::mlir::InFlightDiagnostic()> emitError); static ::mlir::Attribute getPropertiesAsAttr(::mlir::MLIRContext *ctx, const Properties &prop); static llvm::hash_code computePropertiesHash(const Properties &prop); static std::optional getInherentAttr(::mlir::MLIRContext *ctx, const Properties &prop, llvm::StringRef name); static void setInherentAttr(Properties &prop, llvm::StringRef name, mlir::Attribute value); static void populateInherentAttrs(::mlir::MLIRContext *ctx, const Properties &prop, ::mlir::NamedAttrList &attrs); static ::llvm::LogicalResult verifyInherentAttrs(::mlir::OperationName opName, ::mlir::NamedAttrList &attrs, llvm::function_ref<::mlir::InFlightDiagnostic()> emitError); static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::Type res, ::mlir::Value src, ::mlir::Value seed, ::mlir::Value scale); static CvtScaleF32SrPk32Bf6F32Op create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::Type res, ::mlir::Value src, ::mlir::Value seed, ::mlir::Value scale); static CvtScaleF32SrPk32Bf6F32Op create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::Type res, ::mlir::Value src, ::mlir::Value seed, ::mlir::Value scale); static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::Value src, ::mlir::Value seed, ::mlir::Value scale); static CvtScaleF32SrPk32Bf6F32Op create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::Value src, ::mlir::Value seed, ::mlir::Value scale); static CvtScaleF32SrPk32Bf6F32Op create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::Value src, ::mlir::Value seed, ::mlir::Value scale); static void build(::mlir::OpBuilder &, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, ::llvm::ArrayRef<::mlir::NamedAttribute> attributes = {}); static CvtScaleF32SrPk32Bf6F32Op create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, ::llvm::ArrayRef<::mlir::NamedAttribute> attributes = {}); static CvtScaleF32SrPk32Bf6F32Op create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, ::llvm::ArrayRef<::mlir::NamedAttribute> attributes = {}); static void build(::mlir::OpBuilder &, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, const Properties &properties, ::llvm::ArrayRef<::mlir::NamedAttribute> discardableAttributes = {}); static CvtScaleF32SrPk32Bf6F32Op create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, const Properties &properties, ::llvm::ArrayRef<::mlir::NamedAttribute> discardableAttributes = {}); static CvtScaleF32SrPk32Bf6F32Op create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, const Properties &properties, ::llvm::ArrayRef<::mlir::NamedAttribute> discardableAttributes = {}); ::llvm::LogicalResult verifyInvariantsImpl(); ::llvm::LogicalResult verifyInvariants(); static ::mlir::ParseResult parse(::mlir::OpAsmParser &parser, ::mlir::OperationState &result); void print(::mlir::OpAsmPrinter &_odsPrinter); void getEffects(::llvm::SmallVectorImpl<::mlir::SideEffects::EffectInstance<::mlir::MemoryEffects::Effect>> &effects); public: }; } // namespace mlir::ROCDL MLIR_DECLARE_EXPLICIT_TYPE_ID(::mlir::ROCDL::CvtScaleF32SrPk32Bf6F32Op) namespace mlir::ROCDL { //===----------------------------------------------------------------------===// // ::mlir::ROCDL::CvtScaleF32SrPk32Fp6Bf16Op declarations //===----------------------------------------------------------------------===// namespace detail { class CvtScaleF32SrPk32Fp6Bf16OpGenericAdaptorBase { public: using Properties = ::mlir::EmptyProperties; protected: ::mlir::DictionaryAttr odsAttrs; ::std::optional<::mlir::OperationName> odsOpName; Properties properties; ::mlir::RegionRange odsRegions; public: CvtScaleF32SrPk32Fp6Bf16OpGenericAdaptorBase(::mlir::DictionaryAttr attrs, const Properties &properties, ::mlir::RegionRange regions = {}) : odsAttrs(attrs), properties(properties), odsRegions(regions) { if (odsAttrs) odsOpName.emplace("rocdl.cvt.scalef32.sr.pk32.fp6.bf16", odsAttrs.getContext()); } CvtScaleF32SrPk32Fp6Bf16OpGenericAdaptorBase(CvtScaleF32SrPk32Fp6Bf16Op op); std::pair getODSOperandIndexAndLength(unsigned index, unsigned odsOperandsSize) { return {index, 1}; } const Properties &getProperties() { return properties; } ::mlir::DictionaryAttr getAttributes() { return odsAttrs; } }; } // namespace detail template class CvtScaleF32SrPk32Fp6Bf16OpGenericAdaptor : public detail::CvtScaleF32SrPk32Fp6Bf16OpGenericAdaptorBase { using ValueT = ::llvm::detail::ValueOfRange; using Base = detail::CvtScaleF32SrPk32Fp6Bf16OpGenericAdaptorBase; static constexpr int odsIndex_src = 0; static constexpr int odsIndex_seed = 1; static constexpr int odsIndex_scale = 2; public: CvtScaleF32SrPk32Fp6Bf16OpGenericAdaptor(RangeT values, ::mlir::DictionaryAttr attrs, const Properties &properties, ::mlir::RegionRange regions = {}) : Base(attrs, properties, regions), odsOperands(values) {} CvtScaleF32SrPk32Fp6Bf16OpGenericAdaptor(RangeT values, ::mlir::DictionaryAttr attrs, ::mlir::PropertyRef properties, ::mlir::RegionRange regions = {}) : CvtScaleF32SrPk32Fp6Bf16OpGenericAdaptor(values, attrs, (properties ? *properties.as() : Properties{}), regions) {} CvtScaleF32SrPk32Fp6Bf16OpGenericAdaptor(RangeT values, ::mlir::DictionaryAttr attrs = nullptr) : CvtScaleF32SrPk32Fp6Bf16OpGenericAdaptor(values, attrs, Properties{}, {}) {} CvtScaleF32SrPk32Fp6Bf16OpGenericAdaptor(RangeT values, const CvtScaleF32SrPk32Fp6Bf16OpGenericAdaptorBase &base) : Base(base), odsOperands(values) {} template >> CvtScaleF32SrPk32Fp6Bf16OpGenericAdaptor(RangeT values, LateInst op) : Base(op), odsOperands(values) {} std::pair getODSOperandIndexAndLength(unsigned index) { return Base::getODSOperandIndexAndLength(index, odsOperands.size()); } RangeT getODSOperands(unsigned index) { auto valueRange = getODSOperandIndexAndLength(index); return {std::next(odsOperands.begin(), valueRange.first), std::next(odsOperands.begin(), valueRange.first + valueRange.second)}; } ValueT getSrc() { return (*getODSOperands(0).begin()); } ValueT getSeed() { return (*getODSOperands(1).begin()); } ValueT getScale() { return (*getODSOperands(2).begin()); } RangeT getOperands() { return odsOperands; } private: RangeT odsOperands; }; class CvtScaleF32SrPk32Fp6Bf16OpAdaptor : public CvtScaleF32SrPk32Fp6Bf16OpGenericAdaptor<::mlir::ValueRange> { public: using CvtScaleF32SrPk32Fp6Bf16OpGenericAdaptor::CvtScaleF32SrPk32Fp6Bf16OpGenericAdaptor; CvtScaleF32SrPk32Fp6Bf16OpAdaptor(CvtScaleF32SrPk32Fp6Bf16Op op); ::llvm::LogicalResult verify(::mlir::Location loc); }; class CvtScaleF32SrPk32Fp6Bf16Op : public ::mlir::Op::Impl, ::mlir::OpTrait::ZeroSuccessors, ::mlir::OpTrait::NOperands<3>::Impl, ::mlir::OpTrait::OpInvariants, ::mlir::ConditionallySpeculatable::Trait, ::mlir::OpTrait::AlwaysSpeculatableImplTrait, ::mlir::MemoryEffectOpInterface::Trait> { public: using Op::Op; using Op::print; using Adaptor = CvtScaleF32SrPk32Fp6Bf16OpAdaptor; template using GenericAdaptor = CvtScaleF32SrPk32Fp6Bf16OpGenericAdaptor; using FoldAdaptor = GenericAdaptor<::llvm::ArrayRef<::mlir::Attribute>>; static constexpr int odsIndex_src = 0; static constexpr int odsIndex_seed = 1; static constexpr int odsIndex_scale = 2; using Properties = FoldAdaptor::Properties; static ::llvm::ArrayRef<::llvm::StringRef> getAttributeNames() { return {}; } static constexpr ::llvm::StringLiteral getOperationName() { return ::llvm::StringLiteral("rocdl.cvt.scalef32.sr.pk32.fp6.bf16"); } std::pair getODSOperandIndexAndLength(unsigned index) { return {index, 1}; } ::mlir::Operation::operand_range getODSOperands(unsigned index) { auto valueRange = getODSOperandIndexAndLength(index); return {std::next(getOperation()->operand_begin(), valueRange.first), std::next(getOperation()->operand_begin(), valueRange.first + valueRange.second)}; } ::mlir::TypedValue<::mlir::VectorType> getSrc() { return ::llvm::cast<::mlir::TypedValue<::mlir::VectorType>>(*getODSOperands(0).begin()); } ::mlir::TypedValue<::mlir::IntegerType> getSeed() { return ::llvm::cast<::mlir::TypedValue<::mlir::IntegerType>>(*getODSOperands(1).begin()); } ::mlir::TypedValue<::mlir::FloatType> getScale() { return ::llvm::cast<::mlir::TypedValue<::mlir::FloatType>>(*getODSOperands(2).begin()); } ::mlir::OpOperand &getSrcMutable() { auto range = getODSOperandIndexAndLength(0); return getOperation()->getOpOperand(range.first); } ::mlir::OpOperand &getSeedMutable() { auto range = getODSOperandIndexAndLength(1); return getOperation()->getOpOperand(range.first); } ::mlir::OpOperand &getScaleMutable() { auto range = getODSOperandIndexAndLength(2); return getOperation()->getOpOperand(range.first); } std::pair getODSResultIndexAndLength(unsigned index) { return {index, 1}; } ::mlir::Operation::result_range getODSResults(unsigned index) { auto valueRange = getODSResultIndexAndLength(index); return {std::next(getOperation()->result_begin(), valueRange.first), std::next(getOperation()->result_begin(), valueRange.first + valueRange.second)}; } ::mlir::TypedValue<::mlir::VectorType> getRes() { return ::llvm::cast<::mlir::TypedValue<::mlir::VectorType>>(*getODSResults(0).begin()); } static ::llvm::LogicalResult setPropertiesFromAttr(Properties &prop, ::mlir::Attribute attr, ::llvm::function_ref<::mlir::InFlightDiagnostic()> emitError); static ::mlir::Attribute getPropertiesAsAttr(::mlir::MLIRContext *ctx, const Properties &prop); static llvm::hash_code computePropertiesHash(const Properties &prop); static std::optional getInherentAttr(::mlir::MLIRContext *ctx, const Properties &prop, llvm::StringRef name); static void setInherentAttr(Properties &prop, llvm::StringRef name, mlir::Attribute value); static void populateInherentAttrs(::mlir::MLIRContext *ctx, const Properties &prop, ::mlir::NamedAttrList &attrs); static ::llvm::LogicalResult verifyInherentAttrs(::mlir::OperationName opName, ::mlir::NamedAttrList &attrs, llvm::function_ref<::mlir::InFlightDiagnostic()> emitError); static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::Type res, ::mlir::Value src, ::mlir::Value seed, ::mlir::Value scale); static CvtScaleF32SrPk32Fp6Bf16Op create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::Type res, ::mlir::Value src, ::mlir::Value seed, ::mlir::Value scale); static CvtScaleF32SrPk32Fp6Bf16Op create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::Type res, ::mlir::Value src, ::mlir::Value seed, ::mlir::Value scale); static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::Value src, ::mlir::Value seed, ::mlir::Value scale); static CvtScaleF32SrPk32Fp6Bf16Op create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::Value src, ::mlir::Value seed, ::mlir::Value scale); static CvtScaleF32SrPk32Fp6Bf16Op create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::Value src, ::mlir::Value seed, ::mlir::Value scale); static void build(::mlir::OpBuilder &, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, ::llvm::ArrayRef<::mlir::NamedAttribute> attributes = {}); static CvtScaleF32SrPk32Fp6Bf16Op create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, ::llvm::ArrayRef<::mlir::NamedAttribute> attributes = {}); static CvtScaleF32SrPk32Fp6Bf16Op create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, ::llvm::ArrayRef<::mlir::NamedAttribute> attributes = {}); static void build(::mlir::OpBuilder &, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, const Properties &properties, ::llvm::ArrayRef<::mlir::NamedAttribute> discardableAttributes = {}); static CvtScaleF32SrPk32Fp6Bf16Op create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, const Properties &properties, ::llvm::ArrayRef<::mlir::NamedAttribute> discardableAttributes = {}); static CvtScaleF32SrPk32Fp6Bf16Op create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, const Properties &properties, ::llvm::ArrayRef<::mlir::NamedAttribute> discardableAttributes = {}); ::llvm::LogicalResult verifyInvariantsImpl(); ::llvm::LogicalResult verifyInvariants(); static ::mlir::ParseResult parse(::mlir::OpAsmParser &parser, ::mlir::OperationState &result); void print(::mlir::OpAsmPrinter &_odsPrinter); void getEffects(::llvm::SmallVectorImpl<::mlir::SideEffects::EffectInstance<::mlir::MemoryEffects::Effect>> &effects); public: }; } // namespace mlir::ROCDL MLIR_DECLARE_EXPLICIT_TYPE_ID(::mlir::ROCDL::CvtScaleF32SrPk32Fp6Bf16Op) namespace mlir::ROCDL { //===----------------------------------------------------------------------===// // ::mlir::ROCDL::CvtScaleF32SrPk32Fp6F16Op declarations //===----------------------------------------------------------------------===// namespace detail { class CvtScaleF32SrPk32Fp6F16OpGenericAdaptorBase { public: using Properties = ::mlir::EmptyProperties; protected: ::mlir::DictionaryAttr odsAttrs; ::std::optional<::mlir::OperationName> odsOpName; Properties properties; ::mlir::RegionRange odsRegions; public: CvtScaleF32SrPk32Fp6F16OpGenericAdaptorBase(::mlir::DictionaryAttr attrs, const Properties &properties, ::mlir::RegionRange regions = {}) : odsAttrs(attrs), properties(properties), odsRegions(regions) { if (odsAttrs) odsOpName.emplace("rocdl.cvt.scalef32.sr.pk32.fp6.f16", odsAttrs.getContext()); } CvtScaleF32SrPk32Fp6F16OpGenericAdaptorBase(CvtScaleF32SrPk32Fp6F16Op op); std::pair getODSOperandIndexAndLength(unsigned index, unsigned odsOperandsSize) { return {index, 1}; } const Properties &getProperties() { return properties; } ::mlir::DictionaryAttr getAttributes() { return odsAttrs; } }; } // namespace detail template class CvtScaleF32SrPk32Fp6F16OpGenericAdaptor : public detail::CvtScaleF32SrPk32Fp6F16OpGenericAdaptorBase { using ValueT = ::llvm::detail::ValueOfRange; using Base = detail::CvtScaleF32SrPk32Fp6F16OpGenericAdaptorBase; static constexpr int odsIndex_src = 0; static constexpr int odsIndex_seed = 1; static constexpr int odsIndex_scale = 2; public: CvtScaleF32SrPk32Fp6F16OpGenericAdaptor(RangeT values, ::mlir::DictionaryAttr attrs, const Properties &properties, ::mlir::RegionRange regions = {}) : Base(attrs, properties, regions), odsOperands(values) {} CvtScaleF32SrPk32Fp6F16OpGenericAdaptor(RangeT values, ::mlir::DictionaryAttr attrs, ::mlir::PropertyRef properties, ::mlir::RegionRange regions = {}) : CvtScaleF32SrPk32Fp6F16OpGenericAdaptor(values, attrs, (properties ? *properties.as() : Properties{}), regions) {} CvtScaleF32SrPk32Fp6F16OpGenericAdaptor(RangeT values, ::mlir::DictionaryAttr attrs = nullptr) : CvtScaleF32SrPk32Fp6F16OpGenericAdaptor(values, attrs, Properties{}, {}) {} CvtScaleF32SrPk32Fp6F16OpGenericAdaptor(RangeT values, const CvtScaleF32SrPk32Fp6F16OpGenericAdaptorBase &base) : Base(base), odsOperands(values) {} template >> CvtScaleF32SrPk32Fp6F16OpGenericAdaptor(RangeT values, LateInst op) : Base(op), odsOperands(values) {} std::pair getODSOperandIndexAndLength(unsigned index) { return Base::getODSOperandIndexAndLength(index, odsOperands.size()); } RangeT getODSOperands(unsigned index) { auto valueRange = getODSOperandIndexAndLength(index); return {std::next(odsOperands.begin(), valueRange.first), std::next(odsOperands.begin(), valueRange.first + valueRange.second)}; } ValueT getSrc() { return (*getODSOperands(0).begin()); } ValueT getSeed() { return (*getODSOperands(1).begin()); } ValueT getScale() { return (*getODSOperands(2).begin()); } RangeT getOperands() { return odsOperands; } private: RangeT odsOperands; }; class CvtScaleF32SrPk32Fp6F16OpAdaptor : public CvtScaleF32SrPk32Fp6F16OpGenericAdaptor<::mlir::ValueRange> { public: using CvtScaleF32SrPk32Fp6F16OpGenericAdaptor::CvtScaleF32SrPk32Fp6F16OpGenericAdaptor; CvtScaleF32SrPk32Fp6F16OpAdaptor(CvtScaleF32SrPk32Fp6F16Op op); ::llvm::LogicalResult verify(::mlir::Location loc); }; class CvtScaleF32SrPk32Fp6F16Op : public ::mlir::Op::Impl, ::mlir::OpTrait::ZeroSuccessors, ::mlir::OpTrait::NOperands<3>::Impl, ::mlir::OpTrait::OpInvariants, ::mlir::ConditionallySpeculatable::Trait, ::mlir::OpTrait::AlwaysSpeculatableImplTrait, ::mlir::MemoryEffectOpInterface::Trait> { public: using Op::Op; using Op::print; using Adaptor = CvtScaleF32SrPk32Fp6F16OpAdaptor; template using GenericAdaptor = CvtScaleF32SrPk32Fp6F16OpGenericAdaptor; using FoldAdaptor = GenericAdaptor<::llvm::ArrayRef<::mlir::Attribute>>; static constexpr int odsIndex_src = 0; static constexpr int odsIndex_seed = 1; static constexpr int odsIndex_scale = 2; using Properties = FoldAdaptor::Properties; static ::llvm::ArrayRef<::llvm::StringRef> getAttributeNames() { return {}; } static constexpr ::llvm::StringLiteral getOperationName() { return ::llvm::StringLiteral("rocdl.cvt.scalef32.sr.pk32.fp6.f16"); } std::pair getODSOperandIndexAndLength(unsigned index) { return {index, 1}; } ::mlir::Operation::operand_range getODSOperands(unsigned index) { auto valueRange = getODSOperandIndexAndLength(index); return {std::next(getOperation()->operand_begin(), valueRange.first), std::next(getOperation()->operand_begin(), valueRange.first + valueRange.second)}; } ::mlir::TypedValue<::mlir::VectorType> getSrc() { return ::llvm::cast<::mlir::TypedValue<::mlir::VectorType>>(*getODSOperands(0).begin()); } ::mlir::TypedValue<::mlir::IntegerType> getSeed() { return ::llvm::cast<::mlir::TypedValue<::mlir::IntegerType>>(*getODSOperands(1).begin()); } ::mlir::TypedValue<::mlir::FloatType> getScale() { return ::llvm::cast<::mlir::TypedValue<::mlir::FloatType>>(*getODSOperands(2).begin()); } ::mlir::OpOperand &getSrcMutable() { auto range = getODSOperandIndexAndLength(0); return getOperation()->getOpOperand(range.first); } ::mlir::OpOperand &getSeedMutable() { auto range = getODSOperandIndexAndLength(1); return getOperation()->getOpOperand(range.first); } ::mlir::OpOperand &getScaleMutable() { auto range = getODSOperandIndexAndLength(2); return getOperation()->getOpOperand(range.first); } std::pair getODSResultIndexAndLength(unsigned index) { return {index, 1}; } ::mlir::Operation::result_range getODSResults(unsigned index) { auto valueRange = getODSResultIndexAndLength(index); return {std::next(getOperation()->result_begin(), valueRange.first), std::next(getOperation()->result_begin(), valueRange.first + valueRange.second)}; } ::mlir::TypedValue<::mlir::VectorType> getRes() { return ::llvm::cast<::mlir::TypedValue<::mlir::VectorType>>(*getODSResults(0).begin()); } static ::llvm::LogicalResult setPropertiesFromAttr(Properties &prop, ::mlir::Attribute attr, ::llvm::function_ref<::mlir::InFlightDiagnostic()> emitError); static ::mlir::Attribute getPropertiesAsAttr(::mlir::MLIRContext *ctx, const Properties &prop); static llvm::hash_code computePropertiesHash(const Properties &prop); static std::optional getInherentAttr(::mlir::MLIRContext *ctx, const Properties &prop, llvm::StringRef name); static void setInherentAttr(Properties &prop, llvm::StringRef name, mlir::Attribute value); static void populateInherentAttrs(::mlir::MLIRContext *ctx, const Properties &prop, ::mlir::NamedAttrList &attrs); static ::llvm::LogicalResult verifyInherentAttrs(::mlir::OperationName opName, ::mlir::NamedAttrList &attrs, llvm::function_ref<::mlir::InFlightDiagnostic()> emitError); static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::Type res, ::mlir::Value src, ::mlir::Value seed, ::mlir::Value scale); static CvtScaleF32SrPk32Fp6F16Op create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::Type res, ::mlir::Value src, ::mlir::Value seed, ::mlir::Value scale); static CvtScaleF32SrPk32Fp6F16Op create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::Type res, ::mlir::Value src, ::mlir::Value seed, ::mlir::Value scale); static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::Value src, ::mlir::Value seed, ::mlir::Value scale); static CvtScaleF32SrPk32Fp6F16Op create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::Value src, ::mlir::Value seed, ::mlir::Value scale); static CvtScaleF32SrPk32Fp6F16Op create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::Value src, ::mlir::Value seed, ::mlir::Value scale); static void build(::mlir::OpBuilder &, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, ::llvm::ArrayRef<::mlir::NamedAttribute> attributes = {}); static CvtScaleF32SrPk32Fp6F16Op create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, ::llvm::ArrayRef<::mlir::NamedAttribute> attributes = {}); static CvtScaleF32SrPk32Fp6F16Op create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, ::llvm::ArrayRef<::mlir::NamedAttribute> attributes = {}); static void build(::mlir::OpBuilder &, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, const Properties &properties, ::llvm::ArrayRef<::mlir::NamedAttribute> discardableAttributes = {}); static CvtScaleF32SrPk32Fp6F16Op create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, const Properties &properties, ::llvm::ArrayRef<::mlir::NamedAttribute> discardableAttributes = {}); static CvtScaleF32SrPk32Fp6F16Op create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, const Properties &properties, ::llvm::ArrayRef<::mlir::NamedAttribute> discardableAttributes = {}); ::llvm::LogicalResult verifyInvariantsImpl(); ::llvm::LogicalResult verifyInvariants(); static ::mlir::ParseResult parse(::mlir::OpAsmParser &parser, ::mlir::OperationState &result); void print(::mlir::OpAsmPrinter &_odsPrinter); void getEffects(::llvm::SmallVectorImpl<::mlir::SideEffects::EffectInstance<::mlir::MemoryEffects::Effect>> &effects); public: }; } // namespace mlir::ROCDL MLIR_DECLARE_EXPLICIT_TYPE_ID(::mlir::ROCDL::CvtScaleF32SrPk32Fp6F16Op) namespace mlir::ROCDL { //===----------------------------------------------------------------------===// // ::mlir::ROCDL::CvtScaleF32SrPk32Fp6F32Op declarations //===----------------------------------------------------------------------===// namespace detail { class CvtScaleF32SrPk32Fp6F32OpGenericAdaptorBase { public: using Properties = ::mlir::EmptyProperties; protected: ::mlir::DictionaryAttr odsAttrs; ::std::optional<::mlir::OperationName> odsOpName; Properties properties; ::mlir::RegionRange odsRegions; public: CvtScaleF32SrPk32Fp6F32OpGenericAdaptorBase(::mlir::DictionaryAttr attrs, const Properties &properties, ::mlir::RegionRange regions = {}) : odsAttrs(attrs), properties(properties), odsRegions(regions) { if (odsAttrs) odsOpName.emplace("rocdl.cvt.scalef32.sr.pk32.fp6.f32", odsAttrs.getContext()); } CvtScaleF32SrPk32Fp6F32OpGenericAdaptorBase(CvtScaleF32SrPk32Fp6F32Op op); std::pair getODSOperandIndexAndLength(unsigned index, unsigned odsOperandsSize) { return {index, 1}; } const Properties &getProperties() { return properties; } ::mlir::DictionaryAttr getAttributes() { return odsAttrs; } }; } // namespace detail template class CvtScaleF32SrPk32Fp6F32OpGenericAdaptor : public detail::CvtScaleF32SrPk32Fp6F32OpGenericAdaptorBase { using ValueT = ::llvm::detail::ValueOfRange; using Base = detail::CvtScaleF32SrPk32Fp6F32OpGenericAdaptorBase; static constexpr int odsIndex_src = 0; static constexpr int odsIndex_seed = 1; static constexpr int odsIndex_scale = 2; public: CvtScaleF32SrPk32Fp6F32OpGenericAdaptor(RangeT values, ::mlir::DictionaryAttr attrs, const Properties &properties, ::mlir::RegionRange regions = {}) : Base(attrs, properties, regions), odsOperands(values) {} CvtScaleF32SrPk32Fp6F32OpGenericAdaptor(RangeT values, ::mlir::DictionaryAttr attrs, ::mlir::PropertyRef properties, ::mlir::RegionRange regions = {}) : CvtScaleF32SrPk32Fp6F32OpGenericAdaptor(values, attrs, (properties ? *properties.as() : Properties{}), regions) {} CvtScaleF32SrPk32Fp6F32OpGenericAdaptor(RangeT values, ::mlir::DictionaryAttr attrs = nullptr) : CvtScaleF32SrPk32Fp6F32OpGenericAdaptor(values, attrs, Properties{}, {}) {} CvtScaleF32SrPk32Fp6F32OpGenericAdaptor(RangeT values, const CvtScaleF32SrPk32Fp6F32OpGenericAdaptorBase &base) : Base(base), odsOperands(values) {} template >> CvtScaleF32SrPk32Fp6F32OpGenericAdaptor(RangeT values, LateInst op) : Base(op), odsOperands(values) {} std::pair getODSOperandIndexAndLength(unsigned index) { return Base::getODSOperandIndexAndLength(index, odsOperands.size()); } RangeT getODSOperands(unsigned index) { auto valueRange = getODSOperandIndexAndLength(index); return {std::next(odsOperands.begin(), valueRange.first), std::next(odsOperands.begin(), valueRange.first + valueRange.second)}; } ValueT getSrc() { return (*getODSOperands(0).begin()); } ValueT getSeed() { return (*getODSOperands(1).begin()); } ValueT getScale() { return (*getODSOperands(2).begin()); } RangeT getOperands() { return odsOperands; } private: RangeT odsOperands; }; class CvtScaleF32SrPk32Fp6F32OpAdaptor : public CvtScaleF32SrPk32Fp6F32OpGenericAdaptor<::mlir::ValueRange> { public: using CvtScaleF32SrPk32Fp6F32OpGenericAdaptor::CvtScaleF32SrPk32Fp6F32OpGenericAdaptor; CvtScaleF32SrPk32Fp6F32OpAdaptor(CvtScaleF32SrPk32Fp6F32Op op); ::llvm::LogicalResult verify(::mlir::Location loc); }; class CvtScaleF32SrPk32Fp6F32Op : public ::mlir::Op::Impl, ::mlir::OpTrait::ZeroSuccessors, ::mlir::OpTrait::NOperands<3>::Impl, ::mlir::OpTrait::OpInvariants, ::mlir::ConditionallySpeculatable::Trait, ::mlir::OpTrait::AlwaysSpeculatableImplTrait, ::mlir::MemoryEffectOpInterface::Trait> { public: using Op::Op; using Op::print; using Adaptor = CvtScaleF32SrPk32Fp6F32OpAdaptor; template using GenericAdaptor = CvtScaleF32SrPk32Fp6F32OpGenericAdaptor; using FoldAdaptor = GenericAdaptor<::llvm::ArrayRef<::mlir::Attribute>>; static constexpr int odsIndex_src = 0; static constexpr int odsIndex_seed = 1; static constexpr int odsIndex_scale = 2; using Properties = FoldAdaptor::Properties; static ::llvm::ArrayRef<::llvm::StringRef> getAttributeNames() { return {}; } static constexpr ::llvm::StringLiteral getOperationName() { return ::llvm::StringLiteral("rocdl.cvt.scalef32.sr.pk32.fp6.f32"); } std::pair getODSOperandIndexAndLength(unsigned index) { return {index, 1}; } ::mlir::Operation::operand_range getODSOperands(unsigned index) { auto valueRange = getODSOperandIndexAndLength(index); return {std::next(getOperation()->operand_begin(), valueRange.first), std::next(getOperation()->operand_begin(), valueRange.first + valueRange.second)}; } ::mlir::TypedValue<::mlir::VectorType> getSrc() { return ::llvm::cast<::mlir::TypedValue<::mlir::VectorType>>(*getODSOperands(0).begin()); } ::mlir::TypedValue<::mlir::IntegerType> getSeed() { return ::llvm::cast<::mlir::TypedValue<::mlir::IntegerType>>(*getODSOperands(1).begin()); } ::mlir::TypedValue<::mlir::FloatType> getScale() { return ::llvm::cast<::mlir::TypedValue<::mlir::FloatType>>(*getODSOperands(2).begin()); } ::mlir::OpOperand &getSrcMutable() { auto range = getODSOperandIndexAndLength(0); return getOperation()->getOpOperand(range.first); } ::mlir::OpOperand &getSeedMutable() { auto range = getODSOperandIndexAndLength(1); return getOperation()->getOpOperand(range.first); } ::mlir::OpOperand &getScaleMutable() { auto range = getODSOperandIndexAndLength(2); return getOperation()->getOpOperand(range.first); } std::pair getODSResultIndexAndLength(unsigned index) { return {index, 1}; } ::mlir::Operation::result_range getODSResults(unsigned index) { auto valueRange = getODSResultIndexAndLength(index); return {std::next(getOperation()->result_begin(), valueRange.first), std::next(getOperation()->result_begin(), valueRange.first + valueRange.second)}; } ::mlir::TypedValue<::mlir::VectorType> getRes() { return ::llvm::cast<::mlir::TypedValue<::mlir::VectorType>>(*getODSResults(0).begin()); } static ::llvm::LogicalResult setPropertiesFromAttr(Properties &prop, ::mlir::Attribute attr, ::llvm::function_ref<::mlir::InFlightDiagnostic()> emitError); static ::mlir::Attribute getPropertiesAsAttr(::mlir::MLIRContext *ctx, const Properties &prop); static llvm::hash_code computePropertiesHash(const Properties &prop); static std::optional getInherentAttr(::mlir::MLIRContext *ctx, const Properties &prop, llvm::StringRef name); static void setInherentAttr(Properties &prop, llvm::StringRef name, mlir::Attribute value); static void populateInherentAttrs(::mlir::MLIRContext *ctx, const Properties &prop, ::mlir::NamedAttrList &attrs); static ::llvm::LogicalResult verifyInherentAttrs(::mlir::OperationName opName, ::mlir::NamedAttrList &attrs, llvm::function_ref<::mlir::InFlightDiagnostic()> emitError); static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::Type res, ::mlir::Value src, ::mlir::Value seed, ::mlir::Value scale); static CvtScaleF32SrPk32Fp6F32Op create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::Type res, ::mlir::Value src, ::mlir::Value seed, ::mlir::Value scale); static CvtScaleF32SrPk32Fp6F32Op create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::Type res, ::mlir::Value src, ::mlir::Value seed, ::mlir::Value scale); static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::Value src, ::mlir::Value seed, ::mlir::Value scale); static CvtScaleF32SrPk32Fp6F32Op create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::Value src, ::mlir::Value seed, ::mlir::Value scale); static CvtScaleF32SrPk32Fp6F32Op create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::Value src, ::mlir::Value seed, ::mlir::Value scale); static void build(::mlir::OpBuilder &, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, ::llvm::ArrayRef<::mlir::NamedAttribute> attributes = {}); static CvtScaleF32SrPk32Fp6F32Op create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, ::llvm::ArrayRef<::mlir::NamedAttribute> attributes = {}); static CvtScaleF32SrPk32Fp6F32Op create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, ::llvm::ArrayRef<::mlir::NamedAttribute> attributes = {}); static void build(::mlir::OpBuilder &, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, const Properties &properties, ::llvm::ArrayRef<::mlir::NamedAttribute> discardableAttributes = {}); static CvtScaleF32SrPk32Fp6F32Op create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, const Properties &properties, ::llvm::ArrayRef<::mlir::NamedAttribute> discardableAttributes = {}); static CvtScaleF32SrPk32Fp6F32Op create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, const Properties &properties, ::llvm::ArrayRef<::mlir::NamedAttribute> discardableAttributes = {}); ::llvm::LogicalResult verifyInvariantsImpl(); ::llvm::LogicalResult verifyInvariants(); static ::mlir::ParseResult parse(::mlir::OpAsmParser &parser, ::mlir::OperationState &result); void print(::mlir::OpAsmPrinter &_odsPrinter); void getEffects(::llvm::SmallVectorImpl<::mlir::SideEffects::EffectInstance<::mlir::MemoryEffects::Effect>> &effects); public: }; } // namespace mlir::ROCDL MLIR_DECLARE_EXPLICIT_TYPE_ID(::mlir::ROCDL::CvtScaleF32SrPk32Fp6F32Op) namespace mlir::ROCDL { //===----------------------------------------------------------------------===// // ::mlir::ROCDL::CvtScaleF32SrPk8Bf8Bf16Op declarations //===----------------------------------------------------------------------===// namespace detail { class CvtScaleF32SrPk8Bf8Bf16OpGenericAdaptorBase { public: using Properties = ::mlir::EmptyProperties; protected: ::mlir::DictionaryAttr odsAttrs; ::std::optional<::mlir::OperationName> odsOpName; Properties properties; ::mlir::RegionRange odsRegions; public: CvtScaleF32SrPk8Bf8Bf16OpGenericAdaptorBase(::mlir::DictionaryAttr attrs, const Properties &properties, ::mlir::RegionRange regions = {}) : odsAttrs(attrs), properties(properties), odsRegions(regions) { if (odsAttrs) odsOpName.emplace("rocdl.cvt.scalef32.sr.pk8.bf8.bf16", odsAttrs.getContext()); } CvtScaleF32SrPk8Bf8Bf16OpGenericAdaptorBase(CvtScaleF32SrPk8Bf8Bf16Op op); std::pair getODSOperandIndexAndLength(unsigned index, unsigned odsOperandsSize) { return {index, 1}; } const Properties &getProperties() { return properties; } ::mlir::DictionaryAttr getAttributes() { return odsAttrs; } }; } // namespace detail template class CvtScaleF32SrPk8Bf8Bf16OpGenericAdaptor : public detail::CvtScaleF32SrPk8Bf8Bf16OpGenericAdaptorBase { using ValueT = ::llvm::detail::ValueOfRange; using Base = detail::CvtScaleF32SrPk8Bf8Bf16OpGenericAdaptorBase; static constexpr int odsIndex_src = 0; static constexpr int odsIndex_seed = 1; static constexpr int odsIndex_scale = 2; public: CvtScaleF32SrPk8Bf8Bf16OpGenericAdaptor(RangeT values, ::mlir::DictionaryAttr attrs, const Properties &properties, ::mlir::RegionRange regions = {}) : Base(attrs, properties, regions), odsOperands(values) {} CvtScaleF32SrPk8Bf8Bf16OpGenericAdaptor(RangeT values, ::mlir::DictionaryAttr attrs, ::mlir::PropertyRef properties, ::mlir::RegionRange regions = {}) : CvtScaleF32SrPk8Bf8Bf16OpGenericAdaptor(values, attrs, (properties ? *properties.as() : Properties{}), regions) {} CvtScaleF32SrPk8Bf8Bf16OpGenericAdaptor(RangeT values, ::mlir::DictionaryAttr attrs = nullptr) : CvtScaleF32SrPk8Bf8Bf16OpGenericAdaptor(values, attrs, Properties{}, {}) {} CvtScaleF32SrPk8Bf8Bf16OpGenericAdaptor(RangeT values, const CvtScaleF32SrPk8Bf8Bf16OpGenericAdaptorBase &base) : Base(base), odsOperands(values) {} template >> CvtScaleF32SrPk8Bf8Bf16OpGenericAdaptor(RangeT values, LateInst op) : Base(op), odsOperands(values) {} std::pair getODSOperandIndexAndLength(unsigned index) { return Base::getODSOperandIndexAndLength(index, odsOperands.size()); } RangeT getODSOperands(unsigned index) { auto valueRange = getODSOperandIndexAndLength(index); return {std::next(odsOperands.begin(), valueRange.first), std::next(odsOperands.begin(), valueRange.first + valueRange.second)}; } ValueT getSrc() { return (*getODSOperands(0).begin()); } ValueT getSeed() { return (*getODSOperands(1).begin()); } ValueT getScale() { return (*getODSOperands(2).begin()); } RangeT getOperands() { return odsOperands; } private: RangeT odsOperands; }; class CvtScaleF32SrPk8Bf8Bf16OpAdaptor : public CvtScaleF32SrPk8Bf8Bf16OpGenericAdaptor<::mlir::ValueRange> { public: using CvtScaleF32SrPk8Bf8Bf16OpGenericAdaptor::CvtScaleF32SrPk8Bf8Bf16OpGenericAdaptor; CvtScaleF32SrPk8Bf8Bf16OpAdaptor(CvtScaleF32SrPk8Bf8Bf16Op op); ::llvm::LogicalResult verify(::mlir::Location loc); }; class CvtScaleF32SrPk8Bf8Bf16Op : public ::mlir::Op::Impl, ::mlir::OpTrait::ZeroSuccessors, ::mlir::OpTrait::NOperands<3>::Impl, ::mlir::OpTrait::OpInvariants, ::mlir::ConditionallySpeculatable::Trait, ::mlir::OpTrait::AlwaysSpeculatableImplTrait, ::mlir::MemoryEffectOpInterface::Trait> { public: using Op::Op; using Op::print; using Adaptor = CvtScaleF32SrPk8Bf8Bf16OpAdaptor; template using GenericAdaptor = CvtScaleF32SrPk8Bf8Bf16OpGenericAdaptor; using FoldAdaptor = GenericAdaptor<::llvm::ArrayRef<::mlir::Attribute>>; static constexpr int odsIndex_src = 0; static constexpr int odsIndex_seed = 1; static constexpr int odsIndex_scale = 2; using Properties = FoldAdaptor::Properties; static ::llvm::ArrayRef<::llvm::StringRef> getAttributeNames() { return {}; } static constexpr ::llvm::StringLiteral getOperationName() { return ::llvm::StringLiteral("rocdl.cvt.scalef32.sr.pk8.bf8.bf16"); } std::pair getODSOperandIndexAndLength(unsigned index) { return {index, 1}; } ::mlir::Operation::operand_range getODSOperands(unsigned index) { auto valueRange = getODSOperandIndexAndLength(index); return {std::next(getOperation()->operand_begin(), valueRange.first), std::next(getOperation()->operand_begin(), valueRange.first + valueRange.second)}; } ::mlir::TypedValue<::mlir::VectorType> getSrc() { return ::llvm::cast<::mlir::TypedValue<::mlir::VectorType>>(*getODSOperands(0).begin()); } ::mlir::TypedValue<::mlir::IntegerType> getSeed() { return ::llvm::cast<::mlir::TypedValue<::mlir::IntegerType>>(*getODSOperands(1).begin()); } ::mlir::TypedValue<::mlir::FloatType> getScale() { return ::llvm::cast<::mlir::TypedValue<::mlir::FloatType>>(*getODSOperands(2).begin()); } ::mlir::OpOperand &getSrcMutable() { auto range = getODSOperandIndexAndLength(0); return getOperation()->getOpOperand(range.first); } ::mlir::OpOperand &getSeedMutable() { auto range = getODSOperandIndexAndLength(1); return getOperation()->getOpOperand(range.first); } ::mlir::OpOperand &getScaleMutable() { auto range = getODSOperandIndexAndLength(2); return getOperation()->getOpOperand(range.first); } std::pair getODSResultIndexAndLength(unsigned index) { return {index, 1}; } ::mlir::Operation::result_range getODSResults(unsigned index) { auto valueRange = getODSResultIndexAndLength(index); return {std::next(getOperation()->result_begin(), valueRange.first), std::next(getOperation()->result_begin(), valueRange.first + valueRange.second)}; } ::mlir::TypedValue<::mlir::VectorType> getRes() { return ::llvm::cast<::mlir::TypedValue<::mlir::VectorType>>(*getODSResults(0).begin()); } static ::llvm::LogicalResult setPropertiesFromAttr(Properties &prop, ::mlir::Attribute attr, ::llvm::function_ref<::mlir::InFlightDiagnostic()> emitError); static ::mlir::Attribute getPropertiesAsAttr(::mlir::MLIRContext *ctx, const Properties &prop); static llvm::hash_code computePropertiesHash(const Properties &prop); static std::optional getInherentAttr(::mlir::MLIRContext *ctx, const Properties &prop, llvm::StringRef name); static void setInherentAttr(Properties &prop, llvm::StringRef name, mlir::Attribute value); static void populateInherentAttrs(::mlir::MLIRContext *ctx, const Properties &prop, ::mlir::NamedAttrList &attrs); static ::llvm::LogicalResult verifyInherentAttrs(::mlir::OperationName opName, ::mlir::NamedAttrList &attrs, llvm::function_ref<::mlir::InFlightDiagnostic()> emitError); static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::Type res, ::mlir::Value src, ::mlir::Value seed, ::mlir::Value scale); static CvtScaleF32SrPk8Bf8Bf16Op create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::Type res, ::mlir::Value src, ::mlir::Value seed, ::mlir::Value scale); static CvtScaleF32SrPk8Bf8Bf16Op create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::Type res, ::mlir::Value src, ::mlir::Value seed, ::mlir::Value scale); static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::Value src, ::mlir::Value seed, ::mlir::Value scale); static CvtScaleF32SrPk8Bf8Bf16Op create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::Value src, ::mlir::Value seed, ::mlir::Value scale); static CvtScaleF32SrPk8Bf8Bf16Op create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::Value src, ::mlir::Value seed, ::mlir::Value scale); static void build(::mlir::OpBuilder &, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, ::llvm::ArrayRef<::mlir::NamedAttribute> attributes = {}); static CvtScaleF32SrPk8Bf8Bf16Op create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, ::llvm::ArrayRef<::mlir::NamedAttribute> attributes = {}); static CvtScaleF32SrPk8Bf8Bf16Op create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, ::llvm::ArrayRef<::mlir::NamedAttribute> attributes = {}); static void build(::mlir::OpBuilder &, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, const Properties &properties, ::llvm::ArrayRef<::mlir::NamedAttribute> discardableAttributes = {}); static CvtScaleF32SrPk8Bf8Bf16Op create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, const Properties &properties, ::llvm::ArrayRef<::mlir::NamedAttribute> discardableAttributes = {}); static CvtScaleF32SrPk8Bf8Bf16Op create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, const Properties &properties, ::llvm::ArrayRef<::mlir::NamedAttribute> discardableAttributes = {}); ::llvm::LogicalResult verifyInvariantsImpl(); ::llvm::LogicalResult verifyInvariants(); static ::mlir::ParseResult parse(::mlir::OpAsmParser &parser, ::mlir::OperationState &result); void print(::mlir::OpAsmPrinter &_odsPrinter); void getEffects(::llvm::SmallVectorImpl<::mlir::SideEffects::EffectInstance<::mlir::MemoryEffects::Effect>> &effects); public: }; } // namespace mlir::ROCDL MLIR_DECLARE_EXPLICIT_TYPE_ID(::mlir::ROCDL::CvtScaleF32SrPk8Bf8Bf16Op) namespace mlir::ROCDL { //===----------------------------------------------------------------------===// // ::mlir::ROCDL::CvtScaleF32SrPk8Bf8F16Op declarations //===----------------------------------------------------------------------===// namespace detail { class CvtScaleF32SrPk8Bf8F16OpGenericAdaptorBase { public: using Properties = ::mlir::EmptyProperties; protected: ::mlir::DictionaryAttr odsAttrs; ::std::optional<::mlir::OperationName> odsOpName; Properties properties; ::mlir::RegionRange odsRegions; public: CvtScaleF32SrPk8Bf8F16OpGenericAdaptorBase(::mlir::DictionaryAttr attrs, const Properties &properties, ::mlir::RegionRange regions = {}) : odsAttrs(attrs), properties(properties), odsRegions(regions) { if (odsAttrs) odsOpName.emplace("rocdl.cvt.scalef32.sr.pk8.bf8.f16", odsAttrs.getContext()); } CvtScaleF32SrPk8Bf8F16OpGenericAdaptorBase(CvtScaleF32SrPk8Bf8F16Op op); std::pair getODSOperandIndexAndLength(unsigned index, unsigned odsOperandsSize) { return {index, 1}; } const Properties &getProperties() { return properties; } ::mlir::DictionaryAttr getAttributes() { return odsAttrs; } }; } // namespace detail template class CvtScaleF32SrPk8Bf8F16OpGenericAdaptor : public detail::CvtScaleF32SrPk8Bf8F16OpGenericAdaptorBase { using ValueT = ::llvm::detail::ValueOfRange; using Base = detail::CvtScaleF32SrPk8Bf8F16OpGenericAdaptorBase; static constexpr int odsIndex_src = 0; static constexpr int odsIndex_seed = 1; static constexpr int odsIndex_scale = 2; public: CvtScaleF32SrPk8Bf8F16OpGenericAdaptor(RangeT values, ::mlir::DictionaryAttr attrs, const Properties &properties, ::mlir::RegionRange regions = {}) : Base(attrs, properties, regions), odsOperands(values) {} CvtScaleF32SrPk8Bf8F16OpGenericAdaptor(RangeT values, ::mlir::DictionaryAttr attrs, ::mlir::PropertyRef properties, ::mlir::RegionRange regions = {}) : CvtScaleF32SrPk8Bf8F16OpGenericAdaptor(values, attrs, (properties ? *properties.as() : Properties{}), regions) {} CvtScaleF32SrPk8Bf8F16OpGenericAdaptor(RangeT values, ::mlir::DictionaryAttr attrs = nullptr) : CvtScaleF32SrPk8Bf8F16OpGenericAdaptor(values, attrs, Properties{}, {}) {} CvtScaleF32SrPk8Bf8F16OpGenericAdaptor(RangeT values, const CvtScaleF32SrPk8Bf8F16OpGenericAdaptorBase &base) : Base(base), odsOperands(values) {} template >> CvtScaleF32SrPk8Bf8F16OpGenericAdaptor(RangeT values, LateInst op) : Base(op), odsOperands(values) {} std::pair getODSOperandIndexAndLength(unsigned index) { return Base::getODSOperandIndexAndLength(index, odsOperands.size()); } RangeT getODSOperands(unsigned index) { auto valueRange = getODSOperandIndexAndLength(index); return {std::next(odsOperands.begin(), valueRange.first), std::next(odsOperands.begin(), valueRange.first + valueRange.second)}; } ValueT getSrc() { return (*getODSOperands(0).begin()); } ValueT getSeed() { return (*getODSOperands(1).begin()); } ValueT getScale() { return (*getODSOperands(2).begin()); } RangeT getOperands() { return odsOperands; } private: RangeT odsOperands; }; class CvtScaleF32SrPk8Bf8F16OpAdaptor : public CvtScaleF32SrPk8Bf8F16OpGenericAdaptor<::mlir::ValueRange> { public: using CvtScaleF32SrPk8Bf8F16OpGenericAdaptor::CvtScaleF32SrPk8Bf8F16OpGenericAdaptor; CvtScaleF32SrPk8Bf8F16OpAdaptor(CvtScaleF32SrPk8Bf8F16Op op); ::llvm::LogicalResult verify(::mlir::Location loc); }; class CvtScaleF32SrPk8Bf8F16Op : public ::mlir::Op::Impl, ::mlir::OpTrait::ZeroSuccessors, ::mlir::OpTrait::NOperands<3>::Impl, ::mlir::OpTrait::OpInvariants, ::mlir::ConditionallySpeculatable::Trait, ::mlir::OpTrait::AlwaysSpeculatableImplTrait, ::mlir::MemoryEffectOpInterface::Trait> { public: using Op::Op; using Op::print; using Adaptor = CvtScaleF32SrPk8Bf8F16OpAdaptor; template using GenericAdaptor = CvtScaleF32SrPk8Bf8F16OpGenericAdaptor; using FoldAdaptor = GenericAdaptor<::llvm::ArrayRef<::mlir::Attribute>>; static constexpr int odsIndex_src = 0; static constexpr int odsIndex_seed = 1; static constexpr int odsIndex_scale = 2; using Properties = FoldAdaptor::Properties; static ::llvm::ArrayRef<::llvm::StringRef> getAttributeNames() { return {}; } static constexpr ::llvm::StringLiteral getOperationName() { return ::llvm::StringLiteral("rocdl.cvt.scalef32.sr.pk8.bf8.f16"); } std::pair getODSOperandIndexAndLength(unsigned index) { return {index, 1}; } ::mlir::Operation::operand_range getODSOperands(unsigned index) { auto valueRange = getODSOperandIndexAndLength(index); return {std::next(getOperation()->operand_begin(), valueRange.first), std::next(getOperation()->operand_begin(), valueRange.first + valueRange.second)}; } ::mlir::TypedValue<::mlir::VectorType> getSrc() { return ::llvm::cast<::mlir::TypedValue<::mlir::VectorType>>(*getODSOperands(0).begin()); } ::mlir::TypedValue<::mlir::IntegerType> getSeed() { return ::llvm::cast<::mlir::TypedValue<::mlir::IntegerType>>(*getODSOperands(1).begin()); } ::mlir::TypedValue<::mlir::FloatType> getScale() { return ::llvm::cast<::mlir::TypedValue<::mlir::FloatType>>(*getODSOperands(2).begin()); } ::mlir::OpOperand &getSrcMutable() { auto range = getODSOperandIndexAndLength(0); return getOperation()->getOpOperand(range.first); } ::mlir::OpOperand &getSeedMutable() { auto range = getODSOperandIndexAndLength(1); return getOperation()->getOpOperand(range.first); } ::mlir::OpOperand &getScaleMutable() { auto range = getODSOperandIndexAndLength(2); return getOperation()->getOpOperand(range.first); } std::pair getODSResultIndexAndLength(unsigned index) { return {index, 1}; } ::mlir::Operation::result_range getODSResults(unsigned index) { auto valueRange = getODSResultIndexAndLength(index); return {std::next(getOperation()->result_begin(), valueRange.first), std::next(getOperation()->result_begin(), valueRange.first + valueRange.second)}; } ::mlir::TypedValue<::mlir::VectorType> getRes() { return ::llvm::cast<::mlir::TypedValue<::mlir::VectorType>>(*getODSResults(0).begin()); } static ::llvm::LogicalResult setPropertiesFromAttr(Properties &prop, ::mlir::Attribute attr, ::llvm::function_ref<::mlir::InFlightDiagnostic()> emitError); static ::mlir::Attribute getPropertiesAsAttr(::mlir::MLIRContext *ctx, const Properties &prop); static llvm::hash_code computePropertiesHash(const Properties &prop); static std::optional getInherentAttr(::mlir::MLIRContext *ctx, const Properties &prop, llvm::StringRef name); static void setInherentAttr(Properties &prop, llvm::StringRef name, mlir::Attribute value); static void populateInherentAttrs(::mlir::MLIRContext *ctx, const Properties &prop, ::mlir::NamedAttrList &attrs); static ::llvm::LogicalResult verifyInherentAttrs(::mlir::OperationName opName, ::mlir::NamedAttrList &attrs, llvm::function_ref<::mlir::InFlightDiagnostic()> emitError); static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::Type res, ::mlir::Value src, ::mlir::Value seed, ::mlir::Value scale); static CvtScaleF32SrPk8Bf8F16Op create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::Type res, ::mlir::Value src, ::mlir::Value seed, ::mlir::Value scale); static CvtScaleF32SrPk8Bf8F16Op create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::Type res, ::mlir::Value src, ::mlir::Value seed, ::mlir::Value scale); static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::Value src, ::mlir::Value seed, ::mlir::Value scale); static CvtScaleF32SrPk8Bf8F16Op create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::Value src, ::mlir::Value seed, ::mlir::Value scale); static CvtScaleF32SrPk8Bf8F16Op create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::Value src, ::mlir::Value seed, ::mlir::Value scale); static void build(::mlir::OpBuilder &, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, ::llvm::ArrayRef<::mlir::NamedAttribute> attributes = {}); static CvtScaleF32SrPk8Bf8F16Op create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, ::llvm::ArrayRef<::mlir::NamedAttribute> attributes = {}); static CvtScaleF32SrPk8Bf8F16Op create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, ::llvm::ArrayRef<::mlir::NamedAttribute> attributes = {}); static void build(::mlir::OpBuilder &, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, const Properties &properties, ::llvm::ArrayRef<::mlir::NamedAttribute> discardableAttributes = {}); static CvtScaleF32SrPk8Bf8F16Op create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, const Properties &properties, ::llvm::ArrayRef<::mlir::NamedAttribute> discardableAttributes = {}); static CvtScaleF32SrPk8Bf8F16Op create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, const Properties &properties, ::llvm::ArrayRef<::mlir::NamedAttribute> discardableAttributes = {}); ::llvm::LogicalResult verifyInvariantsImpl(); ::llvm::LogicalResult verifyInvariants(); static ::mlir::ParseResult parse(::mlir::OpAsmParser &parser, ::mlir::OperationState &result); void print(::mlir::OpAsmPrinter &_odsPrinter); void getEffects(::llvm::SmallVectorImpl<::mlir::SideEffects::EffectInstance<::mlir::MemoryEffects::Effect>> &effects); public: }; } // namespace mlir::ROCDL MLIR_DECLARE_EXPLICIT_TYPE_ID(::mlir::ROCDL::CvtScaleF32SrPk8Bf8F16Op) namespace mlir::ROCDL { //===----------------------------------------------------------------------===// // ::mlir::ROCDL::CvtScaleF32SrPk8Bf8F32Op declarations //===----------------------------------------------------------------------===// namespace detail { class CvtScaleF32SrPk8Bf8F32OpGenericAdaptorBase { public: using Properties = ::mlir::EmptyProperties; protected: ::mlir::DictionaryAttr odsAttrs; ::std::optional<::mlir::OperationName> odsOpName; Properties properties; ::mlir::RegionRange odsRegions; public: CvtScaleF32SrPk8Bf8F32OpGenericAdaptorBase(::mlir::DictionaryAttr attrs, const Properties &properties, ::mlir::RegionRange regions = {}) : odsAttrs(attrs), properties(properties), odsRegions(regions) { if (odsAttrs) odsOpName.emplace("rocdl.cvt.scalef32.sr.pk8.bf8.f32", odsAttrs.getContext()); } CvtScaleF32SrPk8Bf8F32OpGenericAdaptorBase(CvtScaleF32SrPk8Bf8F32Op op); std::pair getODSOperandIndexAndLength(unsigned index, unsigned odsOperandsSize) { return {index, 1}; } const Properties &getProperties() { return properties; } ::mlir::DictionaryAttr getAttributes() { return odsAttrs; } }; } // namespace detail template class CvtScaleF32SrPk8Bf8F32OpGenericAdaptor : public detail::CvtScaleF32SrPk8Bf8F32OpGenericAdaptorBase { using ValueT = ::llvm::detail::ValueOfRange; using Base = detail::CvtScaleF32SrPk8Bf8F32OpGenericAdaptorBase; static constexpr int odsIndex_src = 0; static constexpr int odsIndex_seed = 1; static constexpr int odsIndex_scale = 2; public: CvtScaleF32SrPk8Bf8F32OpGenericAdaptor(RangeT values, ::mlir::DictionaryAttr attrs, const Properties &properties, ::mlir::RegionRange regions = {}) : Base(attrs, properties, regions), odsOperands(values) {} CvtScaleF32SrPk8Bf8F32OpGenericAdaptor(RangeT values, ::mlir::DictionaryAttr attrs, ::mlir::PropertyRef properties, ::mlir::RegionRange regions = {}) : CvtScaleF32SrPk8Bf8F32OpGenericAdaptor(values, attrs, (properties ? *properties.as() : Properties{}), regions) {} CvtScaleF32SrPk8Bf8F32OpGenericAdaptor(RangeT values, ::mlir::DictionaryAttr attrs = nullptr) : CvtScaleF32SrPk8Bf8F32OpGenericAdaptor(values, attrs, Properties{}, {}) {} CvtScaleF32SrPk8Bf8F32OpGenericAdaptor(RangeT values, const CvtScaleF32SrPk8Bf8F32OpGenericAdaptorBase &base) : Base(base), odsOperands(values) {} template >> CvtScaleF32SrPk8Bf8F32OpGenericAdaptor(RangeT values, LateInst op) : Base(op), odsOperands(values) {} std::pair getODSOperandIndexAndLength(unsigned index) { return Base::getODSOperandIndexAndLength(index, odsOperands.size()); } RangeT getODSOperands(unsigned index) { auto valueRange = getODSOperandIndexAndLength(index); return {std::next(odsOperands.begin(), valueRange.first), std::next(odsOperands.begin(), valueRange.first + valueRange.second)}; } ValueT getSrc() { return (*getODSOperands(0).begin()); } ValueT getSeed() { return (*getODSOperands(1).begin()); } ValueT getScale() { return (*getODSOperands(2).begin()); } RangeT getOperands() { return odsOperands; } private: RangeT odsOperands; }; class CvtScaleF32SrPk8Bf8F32OpAdaptor : public CvtScaleF32SrPk8Bf8F32OpGenericAdaptor<::mlir::ValueRange> { public: using CvtScaleF32SrPk8Bf8F32OpGenericAdaptor::CvtScaleF32SrPk8Bf8F32OpGenericAdaptor; CvtScaleF32SrPk8Bf8F32OpAdaptor(CvtScaleF32SrPk8Bf8F32Op op); ::llvm::LogicalResult verify(::mlir::Location loc); }; class CvtScaleF32SrPk8Bf8F32Op : public ::mlir::Op::Impl, ::mlir::OpTrait::ZeroSuccessors, ::mlir::OpTrait::NOperands<3>::Impl, ::mlir::OpTrait::OpInvariants, ::mlir::ConditionallySpeculatable::Trait, ::mlir::OpTrait::AlwaysSpeculatableImplTrait, ::mlir::MemoryEffectOpInterface::Trait> { public: using Op::Op; using Op::print; using Adaptor = CvtScaleF32SrPk8Bf8F32OpAdaptor; template using GenericAdaptor = CvtScaleF32SrPk8Bf8F32OpGenericAdaptor; using FoldAdaptor = GenericAdaptor<::llvm::ArrayRef<::mlir::Attribute>>; static constexpr int odsIndex_src = 0; static constexpr int odsIndex_seed = 1; static constexpr int odsIndex_scale = 2; using Properties = FoldAdaptor::Properties; static ::llvm::ArrayRef<::llvm::StringRef> getAttributeNames() { return {}; } static constexpr ::llvm::StringLiteral getOperationName() { return ::llvm::StringLiteral("rocdl.cvt.scalef32.sr.pk8.bf8.f32"); } std::pair getODSOperandIndexAndLength(unsigned index) { return {index, 1}; } ::mlir::Operation::operand_range getODSOperands(unsigned index) { auto valueRange = getODSOperandIndexAndLength(index); return {std::next(getOperation()->operand_begin(), valueRange.first), std::next(getOperation()->operand_begin(), valueRange.first + valueRange.second)}; } ::mlir::TypedValue<::mlir::VectorType> getSrc() { return ::llvm::cast<::mlir::TypedValue<::mlir::VectorType>>(*getODSOperands(0).begin()); } ::mlir::TypedValue<::mlir::IntegerType> getSeed() { return ::llvm::cast<::mlir::TypedValue<::mlir::IntegerType>>(*getODSOperands(1).begin()); } ::mlir::TypedValue<::mlir::FloatType> getScale() { return ::llvm::cast<::mlir::TypedValue<::mlir::FloatType>>(*getODSOperands(2).begin()); } ::mlir::OpOperand &getSrcMutable() { auto range = getODSOperandIndexAndLength(0); return getOperation()->getOpOperand(range.first); } ::mlir::OpOperand &getSeedMutable() { auto range = getODSOperandIndexAndLength(1); return getOperation()->getOpOperand(range.first); } ::mlir::OpOperand &getScaleMutable() { auto range = getODSOperandIndexAndLength(2); return getOperation()->getOpOperand(range.first); } std::pair getODSResultIndexAndLength(unsigned index) { return {index, 1}; } ::mlir::Operation::result_range getODSResults(unsigned index) { auto valueRange = getODSResultIndexAndLength(index); return {std::next(getOperation()->result_begin(), valueRange.first), std::next(getOperation()->result_begin(), valueRange.first + valueRange.second)}; } ::mlir::TypedValue<::mlir::VectorType> getRes() { return ::llvm::cast<::mlir::TypedValue<::mlir::VectorType>>(*getODSResults(0).begin()); } static ::llvm::LogicalResult setPropertiesFromAttr(Properties &prop, ::mlir::Attribute attr, ::llvm::function_ref<::mlir::InFlightDiagnostic()> emitError); static ::mlir::Attribute getPropertiesAsAttr(::mlir::MLIRContext *ctx, const Properties &prop); static llvm::hash_code computePropertiesHash(const Properties &prop); static std::optional getInherentAttr(::mlir::MLIRContext *ctx, const Properties &prop, llvm::StringRef name); static void setInherentAttr(Properties &prop, llvm::StringRef name, mlir::Attribute value); static void populateInherentAttrs(::mlir::MLIRContext *ctx, const Properties &prop, ::mlir::NamedAttrList &attrs); static ::llvm::LogicalResult verifyInherentAttrs(::mlir::OperationName opName, ::mlir::NamedAttrList &attrs, llvm::function_ref<::mlir::InFlightDiagnostic()> emitError); static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::Type res, ::mlir::Value src, ::mlir::Value seed, ::mlir::Value scale); static CvtScaleF32SrPk8Bf8F32Op create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::Type res, ::mlir::Value src, ::mlir::Value seed, ::mlir::Value scale); static CvtScaleF32SrPk8Bf8F32Op create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::Type res, ::mlir::Value src, ::mlir::Value seed, ::mlir::Value scale); static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::Value src, ::mlir::Value seed, ::mlir::Value scale); static CvtScaleF32SrPk8Bf8F32Op create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::Value src, ::mlir::Value seed, ::mlir::Value scale); static CvtScaleF32SrPk8Bf8F32Op create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::Value src, ::mlir::Value seed, ::mlir::Value scale); static void build(::mlir::OpBuilder &, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, ::llvm::ArrayRef<::mlir::NamedAttribute> attributes = {}); static CvtScaleF32SrPk8Bf8F32Op create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, ::llvm::ArrayRef<::mlir::NamedAttribute> attributes = {}); static CvtScaleF32SrPk8Bf8F32Op create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, ::llvm::ArrayRef<::mlir::NamedAttribute> attributes = {}); static void build(::mlir::OpBuilder &, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, const Properties &properties, ::llvm::ArrayRef<::mlir::NamedAttribute> discardableAttributes = {}); static CvtScaleF32SrPk8Bf8F32Op create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, const Properties &properties, ::llvm::ArrayRef<::mlir::NamedAttribute> discardableAttributes = {}); static CvtScaleF32SrPk8Bf8F32Op create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, const Properties &properties, ::llvm::ArrayRef<::mlir::NamedAttribute> discardableAttributes = {}); ::llvm::LogicalResult verifyInvariantsImpl(); ::llvm::LogicalResult verifyInvariants(); static ::mlir::ParseResult parse(::mlir::OpAsmParser &parser, ::mlir::OperationState &result); void print(::mlir::OpAsmPrinter &_odsPrinter); void getEffects(::llvm::SmallVectorImpl<::mlir::SideEffects::EffectInstance<::mlir::MemoryEffects::Effect>> &effects); public: }; } // namespace mlir::ROCDL MLIR_DECLARE_EXPLICIT_TYPE_ID(::mlir::ROCDL::CvtScaleF32SrPk8Bf8F32Op) namespace mlir::ROCDL { //===----------------------------------------------------------------------===// // ::mlir::ROCDL::CvtScaleF32SrPk8Fp4Bf16Op declarations //===----------------------------------------------------------------------===// namespace detail { class CvtScaleF32SrPk8Fp4Bf16OpGenericAdaptorBase { public: using Properties = ::mlir::EmptyProperties; protected: ::mlir::DictionaryAttr odsAttrs; ::std::optional<::mlir::OperationName> odsOpName; Properties properties; ::mlir::RegionRange odsRegions; public: CvtScaleF32SrPk8Fp4Bf16OpGenericAdaptorBase(::mlir::DictionaryAttr attrs, const Properties &properties, ::mlir::RegionRange regions = {}) : odsAttrs(attrs), properties(properties), odsRegions(regions) { if (odsAttrs) odsOpName.emplace("rocdl.cvt.scalef32.sr.pk8.fp4.bf16", odsAttrs.getContext()); } CvtScaleF32SrPk8Fp4Bf16OpGenericAdaptorBase(CvtScaleF32SrPk8Fp4Bf16Op op); std::pair getODSOperandIndexAndLength(unsigned index, unsigned odsOperandsSize) { return {index, 1}; } const Properties &getProperties() { return properties; } ::mlir::DictionaryAttr getAttributes() { return odsAttrs; } }; } // namespace detail template class CvtScaleF32SrPk8Fp4Bf16OpGenericAdaptor : public detail::CvtScaleF32SrPk8Fp4Bf16OpGenericAdaptorBase { using ValueT = ::llvm::detail::ValueOfRange; using Base = detail::CvtScaleF32SrPk8Fp4Bf16OpGenericAdaptorBase; static constexpr int odsIndex_src = 0; static constexpr int odsIndex_seed = 1; static constexpr int odsIndex_scale = 2; public: CvtScaleF32SrPk8Fp4Bf16OpGenericAdaptor(RangeT values, ::mlir::DictionaryAttr attrs, const Properties &properties, ::mlir::RegionRange regions = {}) : Base(attrs, properties, regions), odsOperands(values) {} CvtScaleF32SrPk8Fp4Bf16OpGenericAdaptor(RangeT values, ::mlir::DictionaryAttr attrs, ::mlir::PropertyRef properties, ::mlir::RegionRange regions = {}) : CvtScaleF32SrPk8Fp4Bf16OpGenericAdaptor(values, attrs, (properties ? *properties.as() : Properties{}), regions) {} CvtScaleF32SrPk8Fp4Bf16OpGenericAdaptor(RangeT values, ::mlir::DictionaryAttr attrs = nullptr) : CvtScaleF32SrPk8Fp4Bf16OpGenericAdaptor(values, attrs, Properties{}, {}) {} CvtScaleF32SrPk8Fp4Bf16OpGenericAdaptor(RangeT values, const CvtScaleF32SrPk8Fp4Bf16OpGenericAdaptorBase &base) : Base(base), odsOperands(values) {} template >> CvtScaleF32SrPk8Fp4Bf16OpGenericAdaptor(RangeT values, LateInst op) : Base(op), odsOperands(values) {} std::pair getODSOperandIndexAndLength(unsigned index) { return Base::getODSOperandIndexAndLength(index, odsOperands.size()); } RangeT getODSOperands(unsigned index) { auto valueRange = getODSOperandIndexAndLength(index); return {std::next(odsOperands.begin(), valueRange.first), std::next(odsOperands.begin(), valueRange.first + valueRange.second)}; } ValueT getSrc() { return (*getODSOperands(0).begin()); } ValueT getSeed() { return (*getODSOperands(1).begin()); } ValueT getScale() { return (*getODSOperands(2).begin()); } RangeT getOperands() { return odsOperands; } private: RangeT odsOperands; }; class CvtScaleF32SrPk8Fp4Bf16OpAdaptor : public CvtScaleF32SrPk8Fp4Bf16OpGenericAdaptor<::mlir::ValueRange> { public: using CvtScaleF32SrPk8Fp4Bf16OpGenericAdaptor::CvtScaleF32SrPk8Fp4Bf16OpGenericAdaptor; CvtScaleF32SrPk8Fp4Bf16OpAdaptor(CvtScaleF32SrPk8Fp4Bf16Op op); ::llvm::LogicalResult verify(::mlir::Location loc); }; class CvtScaleF32SrPk8Fp4Bf16Op : public ::mlir::Op::Impl, ::mlir::OpTrait::ZeroSuccessors, ::mlir::OpTrait::NOperands<3>::Impl, ::mlir::OpTrait::OpInvariants, ::mlir::ConditionallySpeculatable::Trait, ::mlir::OpTrait::AlwaysSpeculatableImplTrait, ::mlir::MemoryEffectOpInterface::Trait> { public: using Op::Op; using Op::print; using Adaptor = CvtScaleF32SrPk8Fp4Bf16OpAdaptor; template using GenericAdaptor = CvtScaleF32SrPk8Fp4Bf16OpGenericAdaptor; using FoldAdaptor = GenericAdaptor<::llvm::ArrayRef<::mlir::Attribute>>; static constexpr int odsIndex_src = 0; static constexpr int odsIndex_seed = 1; static constexpr int odsIndex_scale = 2; using Properties = FoldAdaptor::Properties; static ::llvm::ArrayRef<::llvm::StringRef> getAttributeNames() { return {}; } static constexpr ::llvm::StringLiteral getOperationName() { return ::llvm::StringLiteral("rocdl.cvt.scalef32.sr.pk8.fp4.bf16"); } std::pair getODSOperandIndexAndLength(unsigned index) { return {index, 1}; } ::mlir::Operation::operand_range getODSOperands(unsigned index) { auto valueRange = getODSOperandIndexAndLength(index); return {std::next(getOperation()->operand_begin(), valueRange.first), std::next(getOperation()->operand_begin(), valueRange.first + valueRange.second)}; } ::mlir::TypedValue<::mlir::VectorType> getSrc() { return ::llvm::cast<::mlir::TypedValue<::mlir::VectorType>>(*getODSOperands(0).begin()); } ::mlir::TypedValue<::mlir::IntegerType> getSeed() { return ::llvm::cast<::mlir::TypedValue<::mlir::IntegerType>>(*getODSOperands(1).begin()); } ::mlir::TypedValue<::mlir::FloatType> getScale() { return ::llvm::cast<::mlir::TypedValue<::mlir::FloatType>>(*getODSOperands(2).begin()); } ::mlir::OpOperand &getSrcMutable() { auto range = getODSOperandIndexAndLength(0); return getOperation()->getOpOperand(range.first); } ::mlir::OpOperand &getSeedMutable() { auto range = getODSOperandIndexAndLength(1); return getOperation()->getOpOperand(range.first); } ::mlir::OpOperand &getScaleMutable() { auto range = getODSOperandIndexAndLength(2); return getOperation()->getOpOperand(range.first); } std::pair getODSResultIndexAndLength(unsigned index) { return {index, 1}; } ::mlir::Operation::result_range getODSResults(unsigned index) { auto valueRange = getODSResultIndexAndLength(index); return {std::next(getOperation()->result_begin(), valueRange.first), std::next(getOperation()->result_begin(), valueRange.first + valueRange.second)}; } ::mlir::TypedValue<::mlir::IntegerType> getRes() { return ::llvm::cast<::mlir::TypedValue<::mlir::IntegerType>>(*getODSResults(0).begin()); } static ::llvm::LogicalResult setPropertiesFromAttr(Properties &prop, ::mlir::Attribute attr, ::llvm::function_ref<::mlir::InFlightDiagnostic()> emitError); static ::mlir::Attribute getPropertiesAsAttr(::mlir::MLIRContext *ctx, const Properties &prop); static llvm::hash_code computePropertiesHash(const Properties &prop); static std::optional getInherentAttr(::mlir::MLIRContext *ctx, const Properties &prop, llvm::StringRef name); static void setInherentAttr(Properties &prop, llvm::StringRef name, mlir::Attribute value); static void populateInherentAttrs(::mlir::MLIRContext *ctx, const Properties &prop, ::mlir::NamedAttrList &attrs); static ::llvm::LogicalResult verifyInherentAttrs(::mlir::OperationName opName, ::mlir::NamedAttrList &attrs, llvm::function_ref<::mlir::InFlightDiagnostic()> emitError); static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::Type res, ::mlir::Value src, ::mlir::Value seed, ::mlir::Value scale); static CvtScaleF32SrPk8Fp4Bf16Op create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::Type res, ::mlir::Value src, ::mlir::Value seed, ::mlir::Value scale); static CvtScaleF32SrPk8Fp4Bf16Op create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::Type res, ::mlir::Value src, ::mlir::Value seed, ::mlir::Value scale); static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::Value src, ::mlir::Value seed, ::mlir::Value scale); static CvtScaleF32SrPk8Fp4Bf16Op create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::Value src, ::mlir::Value seed, ::mlir::Value scale); static CvtScaleF32SrPk8Fp4Bf16Op create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::Value src, ::mlir::Value seed, ::mlir::Value scale); static void build(::mlir::OpBuilder &, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, ::llvm::ArrayRef<::mlir::NamedAttribute> attributes = {}); static CvtScaleF32SrPk8Fp4Bf16Op create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, ::llvm::ArrayRef<::mlir::NamedAttribute> attributes = {}); static CvtScaleF32SrPk8Fp4Bf16Op create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, ::llvm::ArrayRef<::mlir::NamedAttribute> attributes = {}); static void build(::mlir::OpBuilder &, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, const Properties &properties, ::llvm::ArrayRef<::mlir::NamedAttribute> discardableAttributes = {}); static CvtScaleF32SrPk8Fp4Bf16Op create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, const Properties &properties, ::llvm::ArrayRef<::mlir::NamedAttribute> discardableAttributes = {}); static CvtScaleF32SrPk8Fp4Bf16Op create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, const Properties &properties, ::llvm::ArrayRef<::mlir::NamedAttribute> discardableAttributes = {}); ::llvm::LogicalResult verifyInvariantsImpl(); ::llvm::LogicalResult verifyInvariants(); static ::mlir::ParseResult parse(::mlir::OpAsmParser &parser, ::mlir::OperationState &result); void print(::mlir::OpAsmPrinter &_odsPrinter); void getEffects(::llvm::SmallVectorImpl<::mlir::SideEffects::EffectInstance<::mlir::MemoryEffects::Effect>> &effects); public: }; } // namespace mlir::ROCDL MLIR_DECLARE_EXPLICIT_TYPE_ID(::mlir::ROCDL::CvtScaleF32SrPk8Fp4Bf16Op) namespace mlir::ROCDL { //===----------------------------------------------------------------------===// // ::mlir::ROCDL::CvtScaleF32SrPk8Fp4F16Op declarations //===----------------------------------------------------------------------===// namespace detail { class CvtScaleF32SrPk8Fp4F16OpGenericAdaptorBase { public: using Properties = ::mlir::EmptyProperties; protected: ::mlir::DictionaryAttr odsAttrs; ::std::optional<::mlir::OperationName> odsOpName; Properties properties; ::mlir::RegionRange odsRegions; public: CvtScaleF32SrPk8Fp4F16OpGenericAdaptorBase(::mlir::DictionaryAttr attrs, const Properties &properties, ::mlir::RegionRange regions = {}) : odsAttrs(attrs), properties(properties), odsRegions(regions) { if (odsAttrs) odsOpName.emplace("rocdl.cvt.scalef32.sr.pk8.fp4.f16", odsAttrs.getContext()); } CvtScaleF32SrPk8Fp4F16OpGenericAdaptorBase(CvtScaleF32SrPk8Fp4F16Op op); std::pair getODSOperandIndexAndLength(unsigned index, unsigned odsOperandsSize) { return {index, 1}; } const Properties &getProperties() { return properties; } ::mlir::DictionaryAttr getAttributes() { return odsAttrs; } }; } // namespace detail template class CvtScaleF32SrPk8Fp4F16OpGenericAdaptor : public detail::CvtScaleF32SrPk8Fp4F16OpGenericAdaptorBase { using ValueT = ::llvm::detail::ValueOfRange; using Base = detail::CvtScaleF32SrPk8Fp4F16OpGenericAdaptorBase; static constexpr int odsIndex_src = 0; static constexpr int odsIndex_seed = 1; static constexpr int odsIndex_scale = 2; public: CvtScaleF32SrPk8Fp4F16OpGenericAdaptor(RangeT values, ::mlir::DictionaryAttr attrs, const Properties &properties, ::mlir::RegionRange regions = {}) : Base(attrs, properties, regions), odsOperands(values) {} CvtScaleF32SrPk8Fp4F16OpGenericAdaptor(RangeT values, ::mlir::DictionaryAttr attrs, ::mlir::PropertyRef properties, ::mlir::RegionRange regions = {}) : CvtScaleF32SrPk8Fp4F16OpGenericAdaptor(values, attrs, (properties ? *properties.as() : Properties{}), regions) {} CvtScaleF32SrPk8Fp4F16OpGenericAdaptor(RangeT values, ::mlir::DictionaryAttr attrs = nullptr) : CvtScaleF32SrPk8Fp4F16OpGenericAdaptor(values, attrs, Properties{}, {}) {} CvtScaleF32SrPk8Fp4F16OpGenericAdaptor(RangeT values, const CvtScaleF32SrPk8Fp4F16OpGenericAdaptorBase &base) : Base(base), odsOperands(values) {} template >> CvtScaleF32SrPk8Fp4F16OpGenericAdaptor(RangeT values, LateInst op) : Base(op), odsOperands(values) {} std::pair getODSOperandIndexAndLength(unsigned index) { return Base::getODSOperandIndexAndLength(index, odsOperands.size()); } RangeT getODSOperands(unsigned index) { auto valueRange = getODSOperandIndexAndLength(index); return {std::next(odsOperands.begin(), valueRange.first), std::next(odsOperands.begin(), valueRange.first + valueRange.second)}; } ValueT getSrc() { return (*getODSOperands(0).begin()); } ValueT getSeed() { return (*getODSOperands(1).begin()); } ValueT getScale() { return (*getODSOperands(2).begin()); } RangeT getOperands() { return odsOperands; } private: RangeT odsOperands; }; class CvtScaleF32SrPk8Fp4F16OpAdaptor : public CvtScaleF32SrPk8Fp4F16OpGenericAdaptor<::mlir::ValueRange> { public: using CvtScaleF32SrPk8Fp4F16OpGenericAdaptor::CvtScaleF32SrPk8Fp4F16OpGenericAdaptor; CvtScaleF32SrPk8Fp4F16OpAdaptor(CvtScaleF32SrPk8Fp4F16Op op); ::llvm::LogicalResult verify(::mlir::Location loc); }; class CvtScaleF32SrPk8Fp4F16Op : public ::mlir::Op::Impl, ::mlir::OpTrait::ZeroSuccessors, ::mlir::OpTrait::NOperands<3>::Impl, ::mlir::OpTrait::OpInvariants, ::mlir::ConditionallySpeculatable::Trait, ::mlir::OpTrait::AlwaysSpeculatableImplTrait, ::mlir::MemoryEffectOpInterface::Trait> { public: using Op::Op; using Op::print; using Adaptor = CvtScaleF32SrPk8Fp4F16OpAdaptor; template using GenericAdaptor = CvtScaleF32SrPk8Fp4F16OpGenericAdaptor; using FoldAdaptor = GenericAdaptor<::llvm::ArrayRef<::mlir::Attribute>>; static constexpr int odsIndex_src = 0; static constexpr int odsIndex_seed = 1; static constexpr int odsIndex_scale = 2; using Properties = FoldAdaptor::Properties; static ::llvm::ArrayRef<::llvm::StringRef> getAttributeNames() { return {}; } static constexpr ::llvm::StringLiteral getOperationName() { return ::llvm::StringLiteral("rocdl.cvt.scalef32.sr.pk8.fp4.f16"); } std::pair getODSOperandIndexAndLength(unsigned index) { return {index, 1}; } ::mlir::Operation::operand_range getODSOperands(unsigned index) { auto valueRange = getODSOperandIndexAndLength(index); return {std::next(getOperation()->operand_begin(), valueRange.first), std::next(getOperation()->operand_begin(), valueRange.first + valueRange.second)}; } ::mlir::TypedValue<::mlir::VectorType> getSrc() { return ::llvm::cast<::mlir::TypedValue<::mlir::VectorType>>(*getODSOperands(0).begin()); } ::mlir::TypedValue<::mlir::IntegerType> getSeed() { return ::llvm::cast<::mlir::TypedValue<::mlir::IntegerType>>(*getODSOperands(1).begin()); } ::mlir::TypedValue<::mlir::FloatType> getScale() { return ::llvm::cast<::mlir::TypedValue<::mlir::FloatType>>(*getODSOperands(2).begin()); } ::mlir::OpOperand &getSrcMutable() { auto range = getODSOperandIndexAndLength(0); return getOperation()->getOpOperand(range.first); } ::mlir::OpOperand &getSeedMutable() { auto range = getODSOperandIndexAndLength(1); return getOperation()->getOpOperand(range.first); } ::mlir::OpOperand &getScaleMutable() { auto range = getODSOperandIndexAndLength(2); return getOperation()->getOpOperand(range.first); } std::pair getODSResultIndexAndLength(unsigned index) { return {index, 1}; } ::mlir::Operation::result_range getODSResults(unsigned index) { auto valueRange = getODSResultIndexAndLength(index); return {std::next(getOperation()->result_begin(), valueRange.first), std::next(getOperation()->result_begin(), valueRange.first + valueRange.second)}; } ::mlir::TypedValue<::mlir::IntegerType> getRes() { return ::llvm::cast<::mlir::TypedValue<::mlir::IntegerType>>(*getODSResults(0).begin()); } static ::llvm::LogicalResult setPropertiesFromAttr(Properties &prop, ::mlir::Attribute attr, ::llvm::function_ref<::mlir::InFlightDiagnostic()> emitError); static ::mlir::Attribute getPropertiesAsAttr(::mlir::MLIRContext *ctx, const Properties &prop); static llvm::hash_code computePropertiesHash(const Properties &prop); static std::optional getInherentAttr(::mlir::MLIRContext *ctx, const Properties &prop, llvm::StringRef name); static void setInherentAttr(Properties &prop, llvm::StringRef name, mlir::Attribute value); static void populateInherentAttrs(::mlir::MLIRContext *ctx, const Properties &prop, ::mlir::NamedAttrList &attrs); static ::llvm::LogicalResult verifyInherentAttrs(::mlir::OperationName opName, ::mlir::NamedAttrList &attrs, llvm::function_ref<::mlir::InFlightDiagnostic()> emitError); static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::Type res, ::mlir::Value src, ::mlir::Value seed, ::mlir::Value scale); static CvtScaleF32SrPk8Fp4F16Op create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::Type res, ::mlir::Value src, ::mlir::Value seed, ::mlir::Value scale); static CvtScaleF32SrPk8Fp4F16Op create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::Type res, ::mlir::Value src, ::mlir::Value seed, ::mlir::Value scale); static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::Value src, ::mlir::Value seed, ::mlir::Value scale); static CvtScaleF32SrPk8Fp4F16Op create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::Value src, ::mlir::Value seed, ::mlir::Value scale); static CvtScaleF32SrPk8Fp4F16Op create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::Value src, ::mlir::Value seed, ::mlir::Value scale); static void build(::mlir::OpBuilder &, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, ::llvm::ArrayRef<::mlir::NamedAttribute> attributes = {}); static CvtScaleF32SrPk8Fp4F16Op create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, ::llvm::ArrayRef<::mlir::NamedAttribute> attributes = {}); static CvtScaleF32SrPk8Fp4F16Op create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, ::llvm::ArrayRef<::mlir::NamedAttribute> attributes = {}); static void build(::mlir::OpBuilder &, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, const Properties &properties, ::llvm::ArrayRef<::mlir::NamedAttribute> discardableAttributes = {}); static CvtScaleF32SrPk8Fp4F16Op create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, const Properties &properties, ::llvm::ArrayRef<::mlir::NamedAttribute> discardableAttributes = {}); static CvtScaleF32SrPk8Fp4F16Op create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, const Properties &properties, ::llvm::ArrayRef<::mlir::NamedAttribute> discardableAttributes = {}); ::llvm::LogicalResult verifyInvariantsImpl(); ::llvm::LogicalResult verifyInvariants(); static ::mlir::ParseResult parse(::mlir::OpAsmParser &parser, ::mlir::OperationState &result); void print(::mlir::OpAsmPrinter &_odsPrinter); void getEffects(::llvm::SmallVectorImpl<::mlir::SideEffects::EffectInstance<::mlir::MemoryEffects::Effect>> &effects); public: }; } // namespace mlir::ROCDL MLIR_DECLARE_EXPLICIT_TYPE_ID(::mlir::ROCDL::CvtScaleF32SrPk8Fp4F16Op) namespace mlir::ROCDL { //===----------------------------------------------------------------------===// // ::mlir::ROCDL::CvtScaleF32SrPk8Fp4F32Op declarations //===----------------------------------------------------------------------===// namespace detail { class CvtScaleF32SrPk8Fp4F32OpGenericAdaptorBase { public: using Properties = ::mlir::EmptyProperties; protected: ::mlir::DictionaryAttr odsAttrs; ::std::optional<::mlir::OperationName> odsOpName; Properties properties; ::mlir::RegionRange odsRegions; public: CvtScaleF32SrPk8Fp4F32OpGenericAdaptorBase(::mlir::DictionaryAttr attrs, const Properties &properties, ::mlir::RegionRange regions = {}) : odsAttrs(attrs), properties(properties), odsRegions(regions) { if (odsAttrs) odsOpName.emplace("rocdl.cvt.scalef32.sr.pk8.fp4.f32", odsAttrs.getContext()); } CvtScaleF32SrPk8Fp4F32OpGenericAdaptorBase(CvtScaleF32SrPk8Fp4F32Op op); std::pair getODSOperandIndexAndLength(unsigned index, unsigned odsOperandsSize) { return {index, 1}; } const Properties &getProperties() { return properties; } ::mlir::DictionaryAttr getAttributes() { return odsAttrs; } }; } // namespace detail template class CvtScaleF32SrPk8Fp4F32OpGenericAdaptor : public detail::CvtScaleF32SrPk8Fp4F32OpGenericAdaptorBase { using ValueT = ::llvm::detail::ValueOfRange; using Base = detail::CvtScaleF32SrPk8Fp4F32OpGenericAdaptorBase; static constexpr int odsIndex_src = 0; static constexpr int odsIndex_seed = 1; static constexpr int odsIndex_scale = 2; public: CvtScaleF32SrPk8Fp4F32OpGenericAdaptor(RangeT values, ::mlir::DictionaryAttr attrs, const Properties &properties, ::mlir::RegionRange regions = {}) : Base(attrs, properties, regions), odsOperands(values) {} CvtScaleF32SrPk8Fp4F32OpGenericAdaptor(RangeT values, ::mlir::DictionaryAttr attrs, ::mlir::PropertyRef properties, ::mlir::RegionRange regions = {}) : CvtScaleF32SrPk8Fp4F32OpGenericAdaptor(values, attrs, (properties ? *properties.as() : Properties{}), regions) {} CvtScaleF32SrPk8Fp4F32OpGenericAdaptor(RangeT values, ::mlir::DictionaryAttr attrs = nullptr) : CvtScaleF32SrPk8Fp4F32OpGenericAdaptor(values, attrs, Properties{}, {}) {} CvtScaleF32SrPk8Fp4F32OpGenericAdaptor(RangeT values, const CvtScaleF32SrPk8Fp4F32OpGenericAdaptorBase &base) : Base(base), odsOperands(values) {} template >> CvtScaleF32SrPk8Fp4F32OpGenericAdaptor(RangeT values, LateInst op) : Base(op), odsOperands(values) {} std::pair getODSOperandIndexAndLength(unsigned index) { return Base::getODSOperandIndexAndLength(index, odsOperands.size()); } RangeT getODSOperands(unsigned index) { auto valueRange = getODSOperandIndexAndLength(index); return {std::next(odsOperands.begin(), valueRange.first), std::next(odsOperands.begin(), valueRange.first + valueRange.second)}; } ValueT getSrc() { return (*getODSOperands(0).begin()); } ValueT getSeed() { return (*getODSOperands(1).begin()); } ValueT getScale() { return (*getODSOperands(2).begin()); } RangeT getOperands() { return odsOperands; } private: RangeT odsOperands; }; class CvtScaleF32SrPk8Fp4F32OpAdaptor : public CvtScaleF32SrPk8Fp4F32OpGenericAdaptor<::mlir::ValueRange> { public: using CvtScaleF32SrPk8Fp4F32OpGenericAdaptor::CvtScaleF32SrPk8Fp4F32OpGenericAdaptor; CvtScaleF32SrPk8Fp4F32OpAdaptor(CvtScaleF32SrPk8Fp4F32Op op); ::llvm::LogicalResult verify(::mlir::Location loc); }; class CvtScaleF32SrPk8Fp4F32Op : public ::mlir::Op::Impl, ::mlir::OpTrait::ZeroSuccessors, ::mlir::OpTrait::NOperands<3>::Impl, ::mlir::OpTrait::OpInvariants, ::mlir::ConditionallySpeculatable::Trait, ::mlir::OpTrait::AlwaysSpeculatableImplTrait, ::mlir::MemoryEffectOpInterface::Trait> { public: using Op::Op; using Op::print; using Adaptor = CvtScaleF32SrPk8Fp4F32OpAdaptor; template using GenericAdaptor = CvtScaleF32SrPk8Fp4F32OpGenericAdaptor; using FoldAdaptor = GenericAdaptor<::llvm::ArrayRef<::mlir::Attribute>>; static constexpr int odsIndex_src = 0; static constexpr int odsIndex_seed = 1; static constexpr int odsIndex_scale = 2; using Properties = FoldAdaptor::Properties; static ::llvm::ArrayRef<::llvm::StringRef> getAttributeNames() { return {}; } static constexpr ::llvm::StringLiteral getOperationName() { return ::llvm::StringLiteral("rocdl.cvt.scalef32.sr.pk8.fp4.f32"); } std::pair getODSOperandIndexAndLength(unsigned index) { return {index, 1}; } ::mlir::Operation::operand_range getODSOperands(unsigned index) { auto valueRange = getODSOperandIndexAndLength(index); return {std::next(getOperation()->operand_begin(), valueRange.first), std::next(getOperation()->operand_begin(), valueRange.first + valueRange.second)}; } ::mlir::TypedValue<::mlir::VectorType> getSrc() { return ::llvm::cast<::mlir::TypedValue<::mlir::VectorType>>(*getODSOperands(0).begin()); } ::mlir::TypedValue<::mlir::IntegerType> getSeed() { return ::llvm::cast<::mlir::TypedValue<::mlir::IntegerType>>(*getODSOperands(1).begin()); } ::mlir::TypedValue<::mlir::FloatType> getScale() { return ::llvm::cast<::mlir::TypedValue<::mlir::FloatType>>(*getODSOperands(2).begin()); } ::mlir::OpOperand &getSrcMutable() { auto range = getODSOperandIndexAndLength(0); return getOperation()->getOpOperand(range.first); } ::mlir::OpOperand &getSeedMutable() { auto range = getODSOperandIndexAndLength(1); return getOperation()->getOpOperand(range.first); } ::mlir::OpOperand &getScaleMutable() { auto range = getODSOperandIndexAndLength(2); return getOperation()->getOpOperand(range.first); } std::pair getODSResultIndexAndLength(unsigned index) { return {index, 1}; } ::mlir::Operation::result_range getODSResults(unsigned index) { auto valueRange = getODSResultIndexAndLength(index); return {std::next(getOperation()->result_begin(), valueRange.first), std::next(getOperation()->result_begin(), valueRange.first + valueRange.second)}; } ::mlir::TypedValue<::mlir::IntegerType> getRes() { return ::llvm::cast<::mlir::TypedValue<::mlir::IntegerType>>(*getODSResults(0).begin()); } static ::llvm::LogicalResult setPropertiesFromAttr(Properties &prop, ::mlir::Attribute attr, ::llvm::function_ref<::mlir::InFlightDiagnostic()> emitError); static ::mlir::Attribute getPropertiesAsAttr(::mlir::MLIRContext *ctx, const Properties &prop); static llvm::hash_code computePropertiesHash(const Properties &prop); static std::optional getInherentAttr(::mlir::MLIRContext *ctx, const Properties &prop, llvm::StringRef name); static void setInherentAttr(Properties &prop, llvm::StringRef name, mlir::Attribute value); static void populateInherentAttrs(::mlir::MLIRContext *ctx, const Properties &prop, ::mlir::NamedAttrList &attrs); static ::llvm::LogicalResult verifyInherentAttrs(::mlir::OperationName opName, ::mlir::NamedAttrList &attrs, llvm::function_ref<::mlir::InFlightDiagnostic()> emitError); static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::Type res, ::mlir::Value src, ::mlir::Value seed, ::mlir::Value scale); static CvtScaleF32SrPk8Fp4F32Op create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::Type res, ::mlir::Value src, ::mlir::Value seed, ::mlir::Value scale); static CvtScaleF32SrPk8Fp4F32Op create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::Type res, ::mlir::Value src, ::mlir::Value seed, ::mlir::Value scale); static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::Value src, ::mlir::Value seed, ::mlir::Value scale); static CvtScaleF32SrPk8Fp4F32Op create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::Value src, ::mlir::Value seed, ::mlir::Value scale); static CvtScaleF32SrPk8Fp4F32Op create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::Value src, ::mlir::Value seed, ::mlir::Value scale); static void build(::mlir::OpBuilder &, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, ::llvm::ArrayRef<::mlir::NamedAttribute> attributes = {}); static CvtScaleF32SrPk8Fp4F32Op create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, ::llvm::ArrayRef<::mlir::NamedAttribute> attributes = {}); static CvtScaleF32SrPk8Fp4F32Op create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, ::llvm::ArrayRef<::mlir::NamedAttribute> attributes = {}); static void build(::mlir::OpBuilder &, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, const Properties &properties, ::llvm::ArrayRef<::mlir::NamedAttribute> discardableAttributes = {}); static CvtScaleF32SrPk8Fp4F32Op create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, const Properties &properties, ::llvm::ArrayRef<::mlir::NamedAttribute> discardableAttributes = {}); static CvtScaleF32SrPk8Fp4F32Op create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, const Properties &properties, ::llvm::ArrayRef<::mlir::NamedAttribute> discardableAttributes = {}); ::llvm::LogicalResult verifyInvariantsImpl(); ::llvm::LogicalResult verifyInvariants(); static ::mlir::ParseResult parse(::mlir::OpAsmParser &parser, ::mlir::OperationState &result); void print(::mlir::OpAsmPrinter &_odsPrinter); void getEffects(::llvm::SmallVectorImpl<::mlir::SideEffects::EffectInstance<::mlir::MemoryEffects::Effect>> &effects); public: }; } // namespace mlir::ROCDL MLIR_DECLARE_EXPLICIT_TYPE_ID(::mlir::ROCDL::CvtScaleF32SrPk8Fp4F32Op) namespace mlir::ROCDL { //===----------------------------------------------------------------------===// // ::mlir::ROCDL::CvtScaleF32SrPk8Fp8Bf16Op declarations //===----------------------------------------------------------------------===// namespace detail { class CvtScaleF32SrPk8Fp8Bf16OpGenericAdaptorBase { public: using Properties = ::mlir::EmptyProperties; protected: ::mlir::DictionaryAttr odsAttrs; ::std::optional<::mlir::OperationName> odsOpName; Properties properties; ::mlir::RegionRange odsRegions; public: CvtScaleF32SrPk8Fp8Bf16OpGenericAdaptorBase(::mlir::DictionaryAttr attrs, const Properties &properties, ::mlir::RegionRange regions = {}) : odsAttrs(attrs), properties(properties), odsRegions(regions) { if (odsAttrs) odsOpName.emplace("rocdl.cvt.scalef32.sr.pk8.fp8.bf16", odsAttrs.getContext()); } CvtScaleF32SrPk8Fp8Bf16OpGenericAdaptorBase(CvtScaleF32SrPk8Fp8Bf16Op op); std::pair getODSOperandIndexAndLength(unsigned index, unsigned odsOperandsSize) { return {index, 1}; } const Properties &getProperties() { return properties; } ::mlir::DictionaryAttr getAttributes() { return odsAttrs; } }; } // namespace detail template class CvtScaleF32SrPk8Fp8Bf16OpGenericAdaptor : public detail::CvtScaleF32SrPk8Fp8Bf16OpGenericAdaptorBase { using ValueT = ::llvm::detail::ValueOfRange; using Base = detail::CvtScaleF32SrPk8Fp8Bf16OpGenericAdaptorBase; static constexpr int odsIndex_src = 0; static constexpr int odsIndex_seed = 1; static constexpr int odsIndex_scale = 2; public: CvtScaleF32SrPk8Fp8Bf16OpGenericAdaptor(RangeT values, ::mlir::DictionaryAttr attrs, const Properties &properties, ::mlir::RegionRange regions = {}) : Base(attrs, properties, regions), odsOperands(values) {} CvtScaleF32SrPk8Fp8Bf16OpGenericAdaptor(RangeT values, ::mlir::DictionaryAttr attrs, ::mlir::PropertyRef properties, ::mlir::RegionRange regions = {}) : CvtScaleF32SrPk8Fp8Bf16OpGenericAdaptor(values, attrs, (properties ? *properties.as() : Properties{}), regions) {} CvtScaleF32SrPk8Fp8Bf16OpGenericAdaptor(RangeT values, ::mlir::DictionaryAttr attrs = nullptr) : CvtScaleF32SrPk8Fp8Bf16OpGenericAdaptor(values, attrs, Properties{}, {}) {} CvtScaleF32SrPk8Fp8Bf16OpGenericAdaptor(RangeT values, const CvtScaleF32SrPk8Fp8Bf16OpGenericAdaptorBase &base) : Base(base), odsOperands(values) {} template >> CvtScaleF32SrPk8Fp8Bf16OpGenericAdaptor(RangeT values, LateInst op) : Base(op), odsOperands(values) {} std::pair getODSOperandIndexAndLength(unsigned index) { return Base::getODSOperandIndexAndLength(index, odsOperands.size()); } RangeT getODSOperands(unsigned index) { auto valueRange = getODSOperandIndexAndLength(index); return {std::next(odsOperands.begin(), valueRange.first), std::next(odsOperands.begin(), valueRange.first + valueRange.second)}; } ValueT getSrc() { return (*getODSOperands(0).begin()); } ValueT getSeed() { return (*getODSOperands(1).begin()); } ValueT getScale() { return (*getODSOperands(2).begin()); } RangeT getOperands() { return odsOperands; } private: RangeT odsOperands; }; class CvtScaleF32SrPk8Fp8Bf16OpAdaptor : public CvtScaleF32SrPk8Fp8Bf16OpGenericAdaptor<::mlir::ValueRange> { public: using CvtScaleF32SrPk8Fp8Bf16OpGenericAdaptor::CvtScaleF32SrPk8Fp8Bf16OpGenericAdaptor; CvtScaleF32SrPk8Fp8Bf16OpAdaptor(CvtScaleF32SrPk8Fp8Bf16Op op); ::llvm::LogicalResult verify(::mlir::Location loc); }; class CvtScaleF32SrPk8Fp8Bf16Op : public ::mlir::Op::Impl, ::mlir::OpTrait::ZeroSuccessors, ::mlir::OpTrait::NOperands<3>::Impl, ::mlir::OpTrait::OpInvariants, ::mlir::ConditionallySpeculatable::Trait, ::mlir::OpTrait::AlwaysSpeculatableImplTrait, ::mlir::MemoryEffectOpInterface::Trait> { public: using Op::Op; using Op::print; using Adaptor = CvtScaleF32SrPk8Fp8Bf16OpAdaptor; template using GenericAdaptor = CvtScaleF32SrPk8Fp8Bf16OpGenericAdaptor; using FoldAdaptor = GenericAdaptor<::llvm::ArrayRef<::mlir::Attribute>>; static constexpr int odsIndex_src = 0; static constexpr int odsIndex_seed = 1; static constexpr int odsIndex_scale = 2; using Properties = FoldAdaptor::Properties; static ::llvm::ArrayRef<::llvm::StringRef> getAttributeNames() { return {}; } static constexpr ::llvm::StringLiteral getOperationName() { return ::llvm::StringLiteral("rocdl.cvt.scalef32.sr.pk8.fp8.bf16"); } std::pair getODSOperandIndexAndLength(unsigned index) { return {index, 1}; } ::mlir::Operation::operand_range getODSOperands(unsigned index) { auto valueRange = getODSOperandIndexAndLength(index); return {std::next(getOperation()->operand_begin(), valueRange.first), std::next(getOperation()->operand_begin(), valueRange.first + valueRange.second)}; } ::mlir::TypedValue<::mlir::VectorType> getSrc() { return ::llvm::cast<::mlir::TypedValue<::mlir::VectorType>>(*getODSOperands(0).begin()); } ::mlir::TypedValue<::mlir::IntegerType> getSeed() { return ::llvm::cast<::mlir::TypedValue<::mlir::IntegerType>>(*getODSOperands(1).begin()); } ::mlir::TypedValue<::mlir::FloatType> getScale() { return ::llvm::cast<::mlir::TypedValue<::mlir::FloatType>>(*getODSOperands(2).begin()); } ::mlir::OpOperand &getSrcMutable() { auto range = getODSOperandIndexAndLength(0); return getOperation()->getOpOperand(range.first); } ::mlir::OpOperand &getSeedMutable() { auto range = getODSOperandIndexAndLength(1); return getOperation()->getOpOperand(range.first); } ::mlir::OpOperand &getScaleMutable() { auto range = getODSOperandIndexAndLength(2); return getOperation()->getOpOperand(range.first); } std::pair getODSResultIndexAndLength(unsigned index) { return {index, 1}; } ::mlir::Operation::result_range getODSResults(unsigned index) { auto valueRange = getODSResultIndexAndLength(index); return {std::next(getOperation()->result_begin(), valueRange.first), std::next(getOperation()->result_begin(), valueRange.first + valueRange.second)}; } ::mlir::TypedValue<::mlir::VectorType> getRes() { return ::llvm::cast<::mlir::TypedValue<::mlir::VectorType>>(*getODSResults(0).begin()); } static ::llvm::LogicalResult setPropertiesFromAttr(Properties &prop, ::mlir::Attribute attr, ::llvm::function_ref<::mlir::InFlightDiagnostic()> emitError); static ::mlir::Attribute getPropertiesAsAttr(::mlir::MLIRContext *ctx, const Properties &prop); static llvm::hash_code computePropertiesHash(const Properties &prop); static std::optional getInherentAttr(::mlir::MLIRContext *ctx, const Properties &prop, llvm::StringRef name); static void setInherentAttr(Properties &prop, llvm::StringRef name, mlir::Attribute value); static void populateInherentAttrs(::mlir::MLIRContext *ctx, const Properties &prop, ::mlir::NamedAttrList &attrs); static ::llvm::LogicalResult verifyInherentAttrs(::mlir::OperationName opName, ::mlir::NamedAttrList &attrs, llvm::function_ref<::mlir::InFlightDiagnostic()> emitError); static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::Type res, ::mlir::Value src, ::mlir::Value seed, ::mlir::Value scale); static CvtScaleF32SrPk8Fp8Bf16Op create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::Type res, ::mlir::Value src, ::mlir::Value seed, ::mlir::Value scale); static CvtScaleF32SrPk8Fp8Bf16Op create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::Type res, ::mlir::Value src, ::mlir::Value seed, ::mlir::Value scale); static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::Value src, ::mlir::Value seed, ::mlir::Value scale); static CvtScaleF32SrPk8Fp8Bf16Op create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::Value src, ::mlir::Value seed, ::mlir::Value scale); static CvtScaleF32SrPk8Fp8Bf16Op create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::Value src, ::mlir::Value seed, ::mlir::Value scale); static void build(::mlir::OpBuilder &, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, ::llvm::ArrayRef<::mlir::NamedAttribute> attributes = {}); static CvtScaleF32SrPk8Fp8Bf16Op create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, ::llvm::ArrayRef<::mlir::NamedAttribute> attributes = {}); static CvtScaleF32SrPk8Fp8Bf16Op create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, ::llvm::ArrayRef<::mlir::NamedAttribute> attributes = {}); static void build(::mlir::OpBuilder &, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, const Properties &properties, ::llvm::ArrayRef<::mlir::NamedAttribute> discardableAttributes = {}); static CvtScaleF32SrPk8Fp8Bf16Op create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, const Properties &properties, ::llvm::ArrayRef<::mlir::NamedAttribute> discardableAttributes = {}); static CvtScaleF32SrPk8Fp8Bf16Op create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, const Properties &properties, ::llvm::ArrayRef<::mlir::NamedAttribute> discardableAttributes = {}); ::llvm::LogicalResult verifyInvariantsImpl(); ::llvm::LogicalResult verifyInvariants(); static ::mlir::ParseResult parse(::mlir::OpAsmParser &parser, ::mlir::OperationState &result); void print(::mlir::OpAsmPrinter &_odsPrinter); void getEffects(::llvm::SmallVectorImpl<::mlir::SideEffects::EffectInstance<::mlir::MemoryEffects::Effect>> &effects); public: }; } // namespace mlir::ROCDL MLIR_DECLARE_EXPLICIT_TYPE_ID(::mlir::ROCDL::CvtScaleF32SrPk8Fp8Bf16Op) namespace mlir::ROCDL { //===----------------------------------------------------------------------===// // ::mlir::ROCDL::CvtScaleF32SrPk8Fp8F16Op declarations //===----------------------------------------------------------------------===// namespace detail { class CvtScaleF32SrPk8Fp8F16OpGenericAdaptorBase { public: using Properties = ::mlir::EmptyProperties; protected: ::mlir::DictionaryAttr odsAttrs; ::std::optional<::mlir::OperationName> odsOpName; Properties properties; ::mlir::RegionRange odsRegions; public: CvtScaleF32SrPk8Fp8F16OpGenericAdaptorBase(::mlir::DictionaryAttr attrs, const Properties &properties, ::mlir::RegionRange regions = {}) : odsAttrs(attrs), properties(properties), odsRegions(regions) { if (odsAttrs) odsOpName.emplace("rocdl.cvt.scalef32.sr.pk8.fp8.f16", odsAttrs.getContext()); } CvtScaleF32SrPk8Fp8F16OpGenericAdaptorBase(CvtScaleF32SrPk8Fp8F16Op op); std::pair getODSOperandIndexAndLength(unsigned index, unsigned odsOperandsSize) { return {index, 1}; } const Properties &getProperties() { return properties; } ::mlir::DictionaryAttr getAttributes() { return odsAttrs; } }; } // namespace detail template class CvtScaleF32SrPk8Fp8F16OpGenericAdaptor : public detail::CvtScaleF32SrPk8Fp8F16OpGenericAdaptorBase { using ValueT = ::llvm::detail::ValueOfRange; using Base = detail::CvtScaleF32SrPk8Fp8F16OpGenericAdaptorBase; static constexpr int odsIndex_src = 0; static constexpr int odsIndex_seed = 1; static constexpr int odsIndex_scale = 2; public: CvtScaleF32SrPk8Fp8F16OpGenericAdaptor(RangeT values, ::mlir::DictionaryAttr attrs, const Properties &properties, ::mlir::RegionRange regions = {}) : Base(attrs, properties, regions), odsOperands(values) {} CvtScaleF32SrPk8Fp8F16OpGenericAdaptor(RangeT values, ::mlir::DictionaryAttr attrs, ::mlir::PropertyRef properties, ::mlir::RegionRange regions = {}) : CvtScaleF32SrPk8Fp8F16OpGenericAdaptor(values, attrs, (properties ? *properties.as() : Properties{}), regions) {} CvtScaleF32SrPk8Fp8F16OpGenericAdaptor(RangeT values, ::mlir::DictionaryAttr attrs = nullptr) : CvtScaleF32SrPk8Fp8F16OpGenericAdaptor(values, attrs, Properties{}, {}) {} CvtScaleF32SrPk8Fp8F16OpGenericAdaptor(RangeT values, const CvtScaleF32SrPk8Fp8F16OpGenericAdaptorBase &base) : Base(base), odsOperands(values) {} template >> CvtScaleF32SrPk8Fp8F16OpGenericAdaptor(RangeT values, LateInst op) : Base(op), odsOperands(values) {} std::pair getODSOperandIndexAndLength(unsigned index) { return Base::getODSOperandIndexAndLength(index, odsOperands.size()); } RangeT getODSOperands(unsigned index) { auto valueRange = getODSOperandIndexAndLength(index); return {std::next(odsOperands.begin(), valueRange.first), std::next(odsOperands.begin(), valueRange.first + valueRange.second)}; } ValueT getSrc() { return (*getODSOperands(0).begin()); } ValueT getSeed() { return (*getODSOperands(1).begin()); } ValueT getScale() { return (*getODSOperands(2).begin()); } RangeT getOperands() { return odsOperands; } private: RangeT odsOperands; }; class CvtScaleF32SrPk8Fp8F16OpAdaptor : public CvtScaleF32SrPk8Fp8F16OpGenericAdaptor<::mlir::ValueRange> { public: using CvtScaleF32SrPk8Fp8F16OpGenericAdaptor::CvtScaleF32SrPk8Fp8F16OpGenericAdaptor; CvtScaleF32SrPk8Fp8F16OpAdaptor(CvtScaleF32SrPk8Fp8F16Op op); ::llvm::LogicalResult verify(::mlir::Location loc); }; class CvtScaleF32SrPk8Fp8F16Op : public ::mlir::Op::Impl, ::mlir::OpTrait::ZeroSuccessors, ::mlir::OpTrait::NOperands<3>::Impl, ::mlir::OpTrait::OpInvariants, ::mlir::ConditionallySpeculatable::Trait, ::mlir::OpTrait::AlwaysSpeculatableImplTrait, ::mlir::MemoryEffectOpInterface::Trait> { public: using Op::Op; using Op::print; using Adaptor = CvtScaleF32SrPk8Fp8F16OpAdaptor; template using GenericAdaptor = CvtScaleF32SrPk8Fp8F16OpGenericAdaptor; using FoldAdaptor = GenericAdaptor<::llvm::ArrayRef<::mlir::Attribute>>; static constexpr int odsIndex_src = 0; static constexpr int odsIndex_seed = 1; static constexpr int odsIndex_scale = 2; using Properties = FoldAdaptor::Properties; static ::llvm::ArrayRef<::llvm::StringRef> getAttributeNames() { return {}; } static constexpr ::llvm::StringLiteral getOperationName() { return ::llvm::StringLiteral("rocdl.cvt.scalef32.sr.pk8.fp8.f16"); } std::pair getODSOperandIndexAndLength(unsigned index) { return {index, 1}; } ::mlir::Operation::operand_range getODSOperands(unsigned index) { auto valueRange = getODSOperandIndexAndLength(index); return {std::next(getOperation()->operand_begin(), valueRange.first), std::next(getOperation()->operand_begin(), valueRange.first + valueRange.second)}; } ::mlir::TypedValue<::mlir::VectorType> getSrc() { return ::llvm::cast<::mlir::TypedValue<::mlir::VectorType>>(*getODSOperands(0).begin()); } ::mlir::TypedValue<::mlir::IntegerType> getSeed() { return ::llvm::cast<::mlir::TypedValue<::mlir::IntegerType>>(*getODSOperands(1).begin()); } ::mlir::TypedValue<::mlir::FloatType> getScale() { return ::llvm::cast<::mlir::TypedValue<::mlir::FloatType>>(*getODSOperands(2).begin()); } ::mlir::OpOperand &getSrcMutable() { auto range = getODSOperandIndexAndLength(0); return getOperation()->getOpOperand(range.first); } ::mlir::OpOperand &getSeedMutable() { auto range = getODSOperandIndexAndLength(1); return getOperation()->getOpOperand(range.first); } ::mlir::OpOperand &getScaleMutable() { auto range = getODSOperandIndexAndLength(2); return getOperation()->getOpOperand(range.first); } std::pair getODSResultIndexAndLength(unsigned index) { return {index, 1}; } ::mlir::Operation::result_range getODSResults(unsigned index) { auto valueRange = getODSResultIndexAndLength(index); return {std::next(getOperation()->result_begin(), valueRange.first), std::next(getOperation()->result_begin(), valueRange.first + valueRange.second)}; } ::mlir::TypedValue<::mlir::VectorType> getRes() { return ::llvm::cast<::mlir::TypedValue<::mlir::VectorType>>(*getODSResults(0).begin()); } static ::llvm::LogicalResult setPropertiesFromAttr(Properties &prop, ::mlir::Attribute attr, ::llvm::function_ref<::mlir::InFlightDiagnostic()> emitError); static ::mlir::Attribute getPropertiesAsAttr(::mlir::MLIRContext *ctx, const Properties &prop); static llvm::hash_code computePropertiesHash(const Properties &prop); static std::optional getInherentAttr(::mlir::MLIRContext *ctx, const Properties &prop, llvm::StringRef name); static void setInherentAttr(Properties &prop, llvm::StringRef name, mlir::Attribute value); static void populateInherentAttrs(::mlir::MLIRContext *ctx, const Properties &prop, ::mlir::NamedAttrList &attrs); static ::llvm::LogicalResult verifyInherentAttrs(::mlir::OperationName opName, ::mlir::NamedAttrList &attrs, llvm::function_ref<::mlir::InFlightDiagnostic()> emitError); static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::Type res, ::mlir::Value src, ::mlir::Value seed, ::mlir::Value scale); static CvtScaleF32SrPk8Fp8F16Op create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::Type res, ::mlir::Value src, ::mlir::Value seed, ::mlir::Value scale); static CvtScaleF32SrPk8Fp8F16Op create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::Type res, ::mlir::Value src, ::mlir::Value seed, ::mlir::Value scale); static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::Value src, ::mlir::Value seed, ::mlir::Value scale); static CvtScaleF32SrPk8Fp8F16Op create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::Value src, ::mlir::Value seed, ::mlir::Value scale); static CvtScaleF32SrPk8Fp8F16Op create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::Value src, ::mlir::Value seed, ::mlir::Value scale); static void build(::mlir::OpBuilder &, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, ::llvm::ArrayRef<::mlir::NamedAttribute> attributes = {}); static CvtScaleF32SrPk8Fp8F16Op create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, ::llvm::ArrayRef<::mlir::NamedAttribute> attributes = {}); static CvtScaleF32SrPk8Fp8F16Op create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, ::llvm::ArrayRef<::mlir::NamedAttribute> attributes = {}); static void build(::mlir::OpBuilder &, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, const Properties &properties, ::llvm::ArrayRef<::mlir::NamedAttribute> discardableAttributes = {}); static CvtScaleF32SrPk8Fp8F16Op create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, const Properties &properties, ::llvm::ArrayRef<::mlir::NamedAttribute> discardableAttributes = {}); static CvtScaleF32SrPk8Fp8F16Op create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, const Properties &properties, ::llvm::ArrayRef<::mlir::NamedAttribute> discardableAttributes = {}); ::llvm::LogicalResult verifyInvariantsImpl(); ::llvm::LogicalResult verifyInvariants(); static ::mlir::ParseResult parse(::mlir::OpAsmParser &parser, ::mlir::OperationState &result); void print(::mlir::OpAsmPrinter &_odsPrinter); void getEffects(::llvm::SmallVectorImpl<::mlir::SideEffects::EffectInstance<::mlir::MemoryEffects::Effect>> &effects); public: }; } // namespace mlir::ROCDL MLIR_DECLARE_EXPLICIT_TYPE_ID(::mlir::ROCDL::CvtScaleF32SrPk8Fp8F16Op) namespace mlir::ROCDL { //===----------------------------------------------------------------------===// // ::mlir::ROCDL::CvtScaleF32SrPk8Fp8F32Op declarations //===----------------------------------------------------------------------===// namespace detail { class CvtScaleF32SrPk8Fp8F32OpGenericAdaptorBase { public: using Properties = ::mlir::EmptyProperties; protected: ::mlir::DictionaryAttr odsAttrs; ::std::optional<::mlir::OperationName> odsOpName; Properties properties; ::mlir::RegionRange odsRegions; public: CvtScaleF32SrPk8Fp8F32OpGenericAdaptorBase(::mlir::DictionaryAttr attrs, const Properties &properties, ::mlir::RegionRange regions = {}) : odsAttrs(attrs), properties(properties), odsRegions(regions) { if (odsAttrs) odsOpName.emplace("rocdl.cvt.scalef32.sr.pk8.fp8.f32", odsAttrs.getContext()); } CvtScaleF32SrPk8Fp8F32OpGenericAdaptorBase(CvtScaleF32SrPk8Fp8F32Op op); std::pair getODSOperandIndexAndLength(unsigned index, unsigned odsOperandsSize) { return {index, 1}; } const Properties &getProperties() { return properties; } ::mlir::DictionaryAttr getAttributes() { return odsAttrs; } }; } // namespace detail template class CvtScaleF32SrPk8Fp8F32OpGenericAdaptor : public detail::CvtScaleF32SrPk8Fp8F32OpGenericAdaptorBase { using ValueT = ::llvm::detail::ValueOfRange; using Base = detail::CvtScaleF32SrPk8Fp8F32OpGenericAdaptorBase; static constexpr int odsIndex_src = 0; static constexpr int odsIndex_seed = 1; static constexpr int odsIndex_scale = 2; public: CvtScaleF32SrPk8Fp8F32OpGenericAdaptor(RangeT values, ::mlir::DictionaryAttr attrs, const Properties &properties, ::mlir::RegionRange regions = {}) : Base(attrs, properties, regions), odsOperands(values) {} CvtScaleF32SrPk8Fp8F32OpGenericAdaptor(RangeT values, ::mlir::DictionaryAttr attrs, ::mlir::PropertyRef properties, ::mlir::RegionRange regions = {}) : CvtScaleF32SrPk8Fp8F32OpGenericAdaptor(values, attrs, (properties ? *properties.as() : Properties{}), regions) {} CvtScaleF32SrPk8Fp8F32OpGenericAdaptor(RangeT values, ::mlir::DictionaryAttr attrs = nullptr) : CvtScaleF32SrPk8Fp8F32OpGenericAdaptor(values, attrs, Properties{}, {}) {} CvtScaleF32SrPk8Fp8F32OpGenericAdaptor(RangeT values, const CvtScaleF32SrPk8Fp8F32OpGenericAdaptorBase &base) : Base(base), odsOperands(values) {} template >> CvtScaleF32SrPk8Fp8F32OpGenericAdaptor(RangeT values, LateInst op) : Base(op), odsOperands(values) {} std::pair getODSOperandIndexAndLength(unsigned index) { return Base::getODSOperandIndexAndLength(index, odsOperands.size()); } RangeT getODSOperands(unsigned index) { auto valueRange = getODSOperandIndexAndLength(index); return {std::next(odsOperands.begin(), valueRange.first), std::next(odsOperands.begin(), valueRange.first + valueRange.second)}; } ValueT getSrc() { return (*getODSOperands(0).begin()); } ValueT getSeed() { return (*getODSOperands(1).begin()); } ValueT getScale() { return (*getODSOperands(2).begin()); } RangeT getOperands() { return odsOperands; } private: RangeT odsOperands; }; class CvtScaleF32SrPk8Fp8F32OpAdaptor : public CvtScaleF32SrPk8Fp8F32OpGenericAdaptor<::mlir::ValueRange> { public: using CvtScaleF32SrPk8Fp8F32OpGenericAdaptor::CvtScaleF32SrPk8Fp8F32OpGenericAdaptor; CvtScaleF32SrPk8Fp8F32OpAdaptor(CvtScaleF32SrPk8Fp8F32Op op); ::llvm::LogicalResult verify(::mlir::Location loc); }; class CvtScaleF32SrPk8Fp8F32Op : public ::mlir::Op::Impl, ::mlir::OpTrait::ZeroSuccessors, ::mlir::OpTrait::NOperands<3>::Impl, ::mlir::OpTrait::OpInvariants, ::mlir::ConditionallySpeculatable::Trait, ::mlir::OpTrait::AlwaysSpeculatableImplTrait, ::mlir::MemoryEffectOpInterface::Trait> { public: using Op::Op; using Op::print; using Adaptor = CvtScaleF32SrPk8Fp8F32OpAdaptor; template using GenericAdaptor = CvtScaleF32SrPk8Fp8F32OpGenericAdaptor; using FoldAdaptor = GenericAdaptor<::llvm::ArrayRef<::mlir::Attribute>>; static constexpr int odsIndex_src = 0; static constexpr int odsIndex_seed = 1; static constexpr int odsIndex_scale = 2; using Properties = FoldAdaptor::Properties; static ::llvm::ArrayRef<::llvm::StringRef> getAttributeNames() { return {}; } static constexpr ::llvm::StringLiteral getOperationName() { return ::llvm::StringLiteral("rocdl.cvt.scalef32.sr.pk8.fp8.f32"); } std::pair getODSOperandIndexAndLength(unsigned index) { return {index, 1}; } ::mlir::Operation::operand_range getODSOperands(unsigned index) { auto valueRange = getODSOperandIndexAndLength(index); return {std::next(getOperation()->operand_begin(), valueRange.first), std::next(getOperation()->operand_begin(), valueRange.first + valueRange.second)}; } ::mlir::TypedValue<::mlir::VectorType> getSrc() { return ::llvm::cast<::mlir::TypedValue<::mlir::VectorType>>(*getODSOperands(0).begin()); } ::mlir::TypedValue<::mlir::IntegerType> getSeed() { return ::llvm::cast<::mlir::TypedValue<::mlir::IntegerType>>(*getODSOperands(1).begin()); } ::mlir::TypedValue<::mlir::FloatType> getScale() { return ::llvm::cast<::mlir::TypedValue<::mlir::FloatType>>(*getODSOperands(2).begin()); } ::mlir::OpOperand &getSrcMutable() { auto range = getODSOperandIndexAndLength(0); return getOperation()->getOpOperand(range.first); } ::mlir::OpOperand &getSeedMutable() { auto range = getODSOperandIndexAndLength(1); return getOperation()->getOpOperand(range.first); } ::mlir::OpOperand &getScaleMutable() { auto range = getODSOperandIndexAndLength(2); return getOperation()->getOpOperand(range.first); } std::pair getODSResultIndexAndLength(unsigned index) { return {index, 1}; } ::mlir::Operation::result_range getODSResults(unsigned index) { auto valueRange = getODSResultIndexAndLength(index); return {std::next(getOperation()->result_begin(), valueRange.first), std::next(getOperation()->result_begin(), valueRange.first + valueRange.second)}; } ::mlir::TypedValue<::mlir::VectorType> getRes() { return ::llvm::cast<::mlir::TypedValue<::mlir::VectorType>>(*getODSResults(0).begin()); } static ::llvm::LogicalResult setPropertiesFromAttr(Properties &prop, ::mlir::Attribute attr, ::llvm::function_ref<::mlir::InFlightDiagnostic()> emitError); static ::mlir::Attribute getPropertiesAsAttr(::mlir::MLIRContext *ctx, const Properties &prop); static llvm::hash_code computePropertiesHash(const Properties &prop); static std::optional getInherentAttr(::mlir::MLIRContext *ctx, const Properties &prop, llvm::StringRef name); static void setInherentAttr(Properties &prop, llvm::StringRef name, mlir::Attribute value); static void populateInherentAttrs(::mlir::MLIRContext *ctx, const Properties &prop, ::mlir::NamedAttrList &attrs); static ::llvm::LogicalResult verifyInherentAttrs(::mlir::OperationName opName, ::mlir::NamedAttrList &attrs, llvm::function_ref<::mlir::InFlightDiagnostic()> emitError); static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::Type res, ::mlir::Value src, ::mlir::Value seed, ::mlir::Value scale); static CvtScaleF32SrPk8Fp8F32Op create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::Type res, ::mlir::Value src, ::mlir::Value seed, ::mlir::Value scale); static CvtScaleF32SrPk8Fp8F32Op create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::Type res, ::mlir::Value src, ::mlir::Value seed, ::mlir::Value scale); static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::Value src, ::mlir::Value seed, ::mlir::Value scale); static CvtScaleF32SrPk8Fp8F32Op create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::Value src, ::mlir::Value seed, ::mlir::Value scale); static CvtScaleF32SrPk8Fp8F32Op create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::Value src, ::mlir::Value seed, ::mlir::Value scale); static void build(::mlir::OpBuilder &, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, ::llvm::ArrayRef<::mlir::NamedAttribute> attributes = {}); static CvtScaleF32SrPk8Fp8F32Op create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, ::llvm::ArrayRef<::mlir::NamedAttribute> attributes = {}); static CvtScaleF32SrPk8Fp8F32Op create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, ::llvm::ArrayRef<::mlir::NamedAttribute> attributes = {}); static void build(::mlir::OpBuilder &, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, const Properties &properties, ::llvm::ArrayRef<::mlir::NamedAttribute> discardableAttributes = {}); static CvtScaleF32SrPk8Fp8F32Op create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, const Properties &properties, ::llvm::ArrayRef<::mlir::NamedAttribute> discardableAttributes = {}); static CvtScaleF32SrPk8Fp8F32Op create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, const Properties &properties, ::llvm::ArrayRef<::mlir::NamedAttribute> discardableAttributes = {}); ::llvm::LogicalResult verifyInvariantsImpl(); ::llvm::LogicalResult verifyInvariants(); static ::mlir::ParseResult parse(::mlir::OpAsmParser &parser, ::mlir::OperationState &result); void print(::mlir::OpAsmPrinter &_odsPrinter); void getEffects(::llvm::SmallVectorImpl<::mlir::SideEffects::EffectInstance<::mlir::MemoryEffects::Effect>> &effects); public: }; } // namespace mlir::ROCDL MLIR_DECLARE_EXPLICIT_TYPE_ID(::mlir::ROCDL::CvtScaleF32SrPk8Fp8F32Op) namespace mlir::ROCDL { //===----------------------------------------------------------------------===// // ::mlir::ROCDL::CvtScaleF32SrPkFp4Bf16Op declarations //===----------------------------------------------------------------------===// namespace detail { class CvtScaleF32SrPkFp4Bf16OpGenericAdaptorBase { public: struct Properties { using dstSelIndexTy = ::mlir::IntegerAttr; dstSelIndexTy dstSelIndex; auto getDstSelIndex() const { auto &propStorage = this->dstSelIndex; return ::llvm::cast<::mlir::IntegerAttr>(propStorage); } void setDstSelIndex(const ::mlir::IntegerAttr &propValue) { this->dstSelIndex = propValue; } bool operator==(const Properties &rhs) const { return rhs.dstSelIndex == this->dstSelIndex && true; } bool operator!=(const Properties &rhs) const { return !(*this == rhs); } }; protected: ::mlir::DictionaryAttr odsAttrs; ::std::optional<::mlir::OperationName> odsOpName; Properties properties; ::mlir::RegionRange odsRegions; public: CvtScaleF32SrPkFp4Bf16OpGenericAdaptorBase(::mlir::DictionaryAttr attrs, const Properties &properties, ::mlir::RegionRange regions = {}) : odsAttrs(attrs), properties(properties), odsRegions(regions) { if (odsAttrs) odsOpName.emplace("rocdl.cvt.scalef32.sr.pk.fp4.bf16", odsAttrs.getContext()); } CvtScaleF32SrPkFp4Bf16OpGenericAdaptorBase(CvtScaleF32SrPkFp4Bf16Op op); std::pair getODSOperandIndexAndLength(unsigned index, unsigned odsOperandsSize) { return {index, 1}; } const Properties &getProperties() { return properties; } ::mlir::DictionaryAttr getAttributes() { return odsAttrs; } ::mlir::IntegerAttr getDstSelIndexAttr() { auto attr = ::llvm::cast<::mlir::IntegerAttr>(getProperties().dstSelIndex); return attr; } uint32_t getDstSelIndex(); }; } // namespace detail template class CvtScaleF32SrPkFp4Bf16OpGenericAdaptor : public detail::CvtScaleF32SrPkFp4Bf16OpGenericAdaptorBase { using ValueT = ::llvm::detail::ValueOfRange; using Base = detail::CvtScaleF32SrPkFp4Bf16OpGenericAdaptorBase; static constexpr int odsIndex_oldVdst = 0; static constexpr int odsIndex_src = 1; static constexpr int odsIndex_seed = 2; static constexpr int odsIndex_scale = 3; public: CvtScaleF32SrPkFp4Bf16OpGenericAdaptor(RangeT values, ::mlir::DictionaryAttr attrs, const Properties &properties, ::mlir::RegionRange regions = {}) : Base(attrs, properties, regions), odsOperands(values) {} CvtScaleF32SrPkFp4Bf16OpGenericAdaptor(RangeT values, ::mlir::DictionaryAttr attrs, ::mlir::PropertyRef properties, ::mlir::RegionRange regions = {}) : CvtScaleF32SrPkFp4Bf16OpGenericAdaptor(values, attrs, (properties ? *properties.as() : Properties{}), regions) {} CvtScaleF32SrPkFp4Bf16OpGenericAdaptor(RangeT values, ::mlir::DictionaryAttr attrs = nullptr) : CvtScaleF32SrPkFp4Bf16OpGenericAdaptor(values, attrs, Properties{}, {}) {} CvtScaleF32SrPkFp4Bf16OpGenericAdaptor(RangeT values, const CvtScaleF32SrPkFp4Bf16OpGenericAdaptorBase &base) : Base(base), odsOperands(values) {} template >> CvtScaleF32SrPkFp4Bf16OpGenericAdaptor(RangeT values, LateInst op) : Base(op), odsOperands(values) {} std::pair getODSOperandIndexAndLength(unsigned index) { return Base::getODSOperandIndexAndLength(index, odsOperands.size()); } RangeT getODSOperands(unsigned index) { auto valueRange = getODSOperandIndexAndLength(index); return {std::next(odsOperands.begin(), valueRange.first), std::next(odsOperands.begin(), valueRange.first + valueRange.second)}; } ValueT getOldVdst() { return (*getODSOperands(0).begin()); } ValueT getSrc() { return (*getODSOperands(1).begin()); } ValueT getSeed() { return (*getODSOperands(2).begin()); } ValueT getScale() { return (*getODSOperands(3).begin()); } RangeT getOperands() { return odsOperands; } private: RangeT odsOperands; }; class CvtScaleF32SrPkFp4Bf16OpAdaptor : public CvtScaleF32SrPkFp4Bf16OpGenericAdaptor<::mlir::ValueRange> { public: using CvtScaleF32SrPkFp4Bf16OpGenericAdaptor::CvtScaleF32SrPkFp4Bf16OpGenericAdaptor; CvtScaleF32SrPkFp4Bf16OpAdaptor(CvtScaleF32SrPkFp4Bf16Op op); ::llvm::LogicalResult verify(::mlir::Location loc); }; class CvtScaleF32SrPkFp4Bf16Op : public ::mlir::Op::Impl, ::mlir::OpTrait::ZeroSuccessors, ::mlir::OpTrait::NOperands<4>::Impl, ::mlir::OpTrait::OpInvariants, ::mlir::BytecodeOpInterface::Trait, ::mlir::ConditionallySpeculatable::Trait, ::mlir::OpTrait::AlwaysSpeculatableImplTrait, ::mlir::MemoryEffectOpInterface::Trait> { public: using Op::Op; using Op::print; using Adaptor = CvtScaleF32SrPkFp4Bf16OpAdaptor; template using GenericAdaptor = CvtScaleF32SrPkFp4Bf16OpGenericAdaptor; using FoldAdaptor = GenericAdaptor<::llvm::ArrayRef<::mlir::Attribute>>; static constexpr int odsIndex_oldVdst = 0; static constexpr int odsIndex_src = 1; static constexpr int odsIndex_seed = 2; static constexpr int odsIndex_scale = 3; using Properties = FoldAdaptor::Properties; static ::llvm::ArrayRef<::llvm::StringRef> getAttributeNames() { static ::llvm::StringRef attrNames[] = {::llvm::StringRef("dstSelIndex")}; return ::llvm::ArrayRef(attrNames); } ::mlir::StringAttr getDstSelIndexAttrName() { return getAttributeNameForIndex(0); } static ::mlir::StringAttr getDstSelIndexAttrName(::mlir::OperationName name) { return getAttributeNameForIndex(name, 0); } static constexpr ::llvm::StringLiteral getOperationName() { return ::llvm::StringLiteral("rocdl.cvt.scalef32.sr.pk.fp4.bf16"); } std::pair getODSOperandIndexAndLength(unsigned index) { return {index, 1}; } ::mlir::Operation::operand_range getODSOperands(unsigned index) { auto valueRange = getODSOperandIndexAndLength(index); return {std::next(getOperation()->operand_begin(), valueRange.first), std::next(getOperation()->operand_begin(), valueRange.first + valueRange.second)}; } ::mlir::TypedValue<::mlir::IntegerType> getOldVdst() { return ::llvm::cast<::mlir::TypedValue<::mlir::IntegerType>>(*getODSOperands(0).begin()); } ::mlir::TypedValue<::mlir::VectorType> getSrc() { return ::llvm::cast<::mlir::TypedValue<::mlir::VectorType>>(*getODSOperands(1).begin()); } ::mlir::TypedValue<::mlir::IntegerType> getSeed() { return ::llvm::cast<::mlir::TypedValue<::mlir::IntegerType>>(*getODSOperands(2).begin()); } ::mlir::TypedValue<::mlir::FloatType> getScale() { return ::llvm::cast<::mlir::TypedValue<::mlir::FloatType>>(*getODSOperands(3).begin()); } ::mlir::OpOperand &getOldVdstMutable() { auto range = getODSOperandIndexAndLength(0); return getOperation()->getOpOperand(range.first); } ::mlir::OpOperand &getSrcMutable() { auto range = getODSOperandIndexAndLength(1); return getOperation()->getOpOperand(range.first); } ::mlir::OpOperand &getSeedMutable() { auto range = getODSOperandIndexAndLength(2); return getOperation()->getOpOperand(range.first); } ::mlir::OpOperand &getScaleMutable() { auto range = getODSOperandIndexAndLength(3); return getOperation()->getOpOperand(range.first); } std::pair getODSResultIndexAndLength(unsigned index) { return {index, 1}; } ::mlir::Operation::result_range getODSResults(unsigned index) { auto valueRange = getODSResultIndexAndLength(index); return {std::next(getOperation()->result_begin(), valueRange.first), std::next(getOperation()->result_begin(), valueRange.first + valueRange.second)}; } ::mlir::TypedValue<::mlir::IntegerType> getRes() { return ::llvm::cast<::mlir::TypedValue<::mlir::IntegerType>>(*getODSResults(0).begin()); } static ::llvm::LogicalResult setPropertiesFromAttr(Properties &prop, ::mlir::Attribute attr, ::llvm::function_ref<::mlir::InFlightDiagnostic()> emitError); static ::mlir::Attribute getPropertiesAsAttr(::mlir::MLIRContext *ctx, const Properties &prop); static llvm::hash_code computePropertiesHash(const Properties &prop); static std::optional getInherentAttr(::mlir::MLIRContext *ctx, const Properties &prop, llvm::StringRef name); static void setInherentAttr(Properties &prop, llvm::StringRef name, mlir::Attribute value); static void populateInherentAttrs(::mlir::MLIRContext *ctx, const Properties &prop, ::mlir::NamedAttrList &attrs); static ::llvm::LogicalResult verifyInherentAttrs(::mlir::OperationName opName, ::mlir::NamedAttrList &attrs, llvm::function_ref<::mlir::InFlightDiagnostic()> emitError); static ::llvm::LogicalResult readProperties(::mlir::DialectBytecodeReader &reader, ::mlir::OperationState &state); void writeProperties(::mlir::DialectBytecodeWriter &writer); ::mlir::IntegerAttr getDstSelIndexAttr() { return ::llvm::cast<::mlir::IntegerAttr>(getProperties().dstSelIndex); } uint32_t getDstSelIndex(); void setDstSelIndexAttr(::mlir::IntegerAttr attr) { getProperties().dstSelIndex = attr; } void setDstSelIndex(uint32_t attrValue); static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::Type res, ::mlir::Value oldVdst, ::mlir::Value src, ::mlir::Value seed, ::mlir::Value scale, ::mlir::IntegerAttr dstSelIndex); static CvtScaleF32SrPkFp4Bf16Op create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::Type res, ::mlir::Value oldVdst, ::mlir::Value src, ::mlir::Value seed, ::mlir::Value scale, ::mlir::IntegerAttr dstSelIndex); static CvtScaleF32SrPkFp4Bf16Op create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::Type res, ::mlir::Value oldVdst, ::mlir::Value src, ::mlir::Value seed, ::mlir::Value scale, ::mlir::IntegerAttr dstSelIndex); static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::Value oldVdst, ::mlir::Value src, ::mlir::Value seed, ::mlir::Value scale, ::mlir::IntegerAttr dstSelIndex); static CvtScaleF32SrPkFp4Bf16Op create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::Value oldVdst, ::mlir::Value src, ::mlir::Value seed, ::mlir::Value scale, ::mlir::IntegerAttr dstSelIndex); static CvtScaleF32SrPkFp4Bf16Op create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::Value oldVdst, ::mlir::Value src, ::mlir::Value seed, ::mlir::Value scale, ::mlir::IntegerAttr dstSelIndex); static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::Type res, ::mlir::Value oldVdst, ::mlir::Value src, ::mlir::Value seed, ::mlir::Value scale, uint32_t dstSelIndex); static CvtScaleF32SrPkFp4Bf16Op create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::Type res, ::mlir::Value oldVdst, ::mlir::Value src, ::mlir::Value seed, ::mlir::Value scale, uint32_t dstSelIndex); static CvtScaleF32SrPkFp4Bf16Op create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::Type res, ::mlir::Value oldVdst, ::mlir::Value src, ::mlir::Value seed, ::mlir::Value scale, uint32_t dstSelIndex); static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::Value oldVdst, ::mlir::Value src, ::mlir::Value seed, ::mlir::Value scale, uint32_t dstSelIndex); static CvtScaleF32SrPkFp4Bf16Op create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::Value oldVdst, ::mlir::Value src, ::mlir::Value seed, ::mlir::Value scale, uint32_t dstSelIndex); static CvtScaleF32SrPkFp4Bf16Op create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::Value oldVdst, ::mlir::Value src, ::mlir::Value seed, ::mlir::Value scale, uint32_t dstSelIndex); static void build(::mlir::OpBuilder &, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, ::llvm::ArrayRef<::mlir::NamedAttribute> attributes = {}); static CvtScaleF32SrPkFp4Bf16Op create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, ::llvm::ArrayRef<::mlir::NamedAttribute> attributes = {}); static CvtScaleF32SrPkFp4Bf16Op create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, ::llvm::ArrayRef<::mlir::NamedAttribute> attributes = {}); static void build(::mlir::OpBuilder &, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, const Properties &properties, ::llvm::ArrayRef<::mlir::NamedAttribute> discardableAttributes = {}); static CvtScaleF32SrPkFp4Bf16Op create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, const Properties &properties, ::llvm::ArrayRef<::mlir::NamedAttribute> discardableAttributes = {}); static CvtScaleF32SrPkFp4Bf16Op create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, const Properties &properties, ::llvm::ArrayRef<::mlir::NamedAttribute> discardableAttributes = {}); ::llvm::LogicalResult verifyInvariantsImpl(); ::llvm::LogicalResult verifyInvariants(); static ::mlir::ParseResult parse(::mlir::OpAsmParser &parser, ::mlir::OperationState &result); void print(::mlir::OpAsmPrinter &_odsPrinter); void getEffects(::llvm::SmallVectorImpl<::mlir::SideEffects::EffectInstance<::mlir::MemoryEffects::Effect>> &effects); private: ::mlir::StringAttr getAttributeNameForIndex(unsigned index) { return getAttributeNameForIndex((*this)->getName(), index); } static ::mlir::StringAttr getAttributeNameForIndex(::mlir::OperationName name, unsigned index) { assert(index < 1 && "invalid attribute index"); assert(name.getStringRef() == getOperationName() && "invalid operation name"); assert(name.isRegistered() && "Operation isn't registered, missing a " "dependent dialect loading?"); return name.getAttributeNames()[index]; } public: }; } // namespace mlir::ROCDL MLIR_DECLARE_EXPLICIT_TYPE_ID(::mlir::ROCDL::CvtScaleF32SrPkFp4Bf16Op) MLIR_DECLARE_EXPLICIT_TYPE_ID(::mlir::ROCDL::detail::CvtScaleF32SrPkFp4Bf16OpGenericAdaptorBase::Properties) namespace mlir::ROCDL { //===----------------------------------------------------------------------===// // ::mlir::ROCDL::CvtScaleF32SrPkFp4F16Op declarations //===----------------------------------------------------------------------===// namespace detail { class CvtScaleF32SrPkFp4F16OpGenericAdaptorBase { public: struct Properties { using dstSelIndexTy = ::mlir::IntegerAttr; dstSelIndexTy dstSelIndex; auto getDstSelIndex() const { auto &propStorage = this->dstSelIndex; return ::llvm::cast<::mlir::IntegerAttr>(propStorage); } void setDstSelIndex(const ::mlir::IntegerAttr &propValue) { this->dstSelIndex = propValue; } bool operator==(const Properties &rhs) const { return rhs.dstSelIndex == this->dstSelIndex && true; } bool operator!=(const Properties &rhs) const { return !(*this == rhs); } }; protected: ::mlir::DictionaryAttr odsAttrs; ::std::optional<::mlir::OperationName> odsOpName; Properties properties; ::mlir::RegionRange odsRegions; public: CvtScaleF32SrPkFp4F16OpGenericAdaptorBase(::mlir::DictionaryAttr attrs, const Properties &properties, ::mlir::RegionRange regions = {}) : odsAttrs(attrs), properties(properties), odsRegions(regions) { if (odsAttrs) odsOpName.emplace("rocdl.cvt.scalef32.sr.pk.fp4.f16", odsAttrs.getContext()); } CvtScaleF32SrPkFp4F16OpGenericAdaptorBase(CvtScaleF32SrPkFp4F16Op op); std::pair getODSOperandIndexAndLength(unsigned index, unsigned odsOperandsSize) { return {index, 1}; } const Properties &getProperties() { return properties; } ::mlir::DictionaryAttr getAttributes() { return odsAttrs; } ::mlir::IntegerAttr getDstSelIndexAttr() { auto attr = ::llvm::cast<::mlir::IntegerAttr>(getProperties().dstSelIndex); return attr; } uint32_t getDstSelIndex(); }; } // namespace detail template class CvtScaleF32SrPkFp4F16OpGenericAdaptor : public detail::CvtScaleF32SrPkFp4F16OpGenericAdaptorBase { using ValueT = ::llvm::detail::ValueOfRange; using Base = detail::CvtScaleF32SrPkFp4F16OpGenericAdaptorBase; static constexpr int odsIndex_oldVdst = 0; static constexpr int odsIndex_src = 1; static constexpr int odsIndex_seed = 2; static constexpr int odsIndex_scale = 3; public: CvtScaleF32SrPkFp4F16OpGenericAdaptor(RangeT values, ::mlir::DictionaryAttr attrs, const Properties &properties, ::mlir::RegionRange regions = {}) : Base(attrs, properties, regions), odsOperands(values) {} CvtScaleF32SrPkFp4F16OpGenericAdaptor(RangeT values, ::mlir::DictionaryAttr attrs, ::mlir::PropertyRef properties, ::mlir::RegionRange regions = {}) : CvtScaleF32SrPkFp4F16OpGenericAdaptor(values, attrs, (properties ? *properties.as() : Properties{}), regions) {} CvtScaleF32SrPkFp4F16OpGenericAdaptor(RangeT values, ::mlir::DictionaryAttr attrs = nullptr) : CvtScaleF32SrPkFp4F16OpGenericAdaptor(values, attrs, Properties{}, {}) {} CvtScaleF32SrPkFp4F16OpGenericAdaptor(RangeT values, const CvtScaleF32SrPkFp4F16OpGenericAdaptorBase &base) : Base(base), odsOperands(values) {} template >> CvtScaleF32SrPkFp4F16OpGenericAdaptor(RangeT values, LateInst op) : Base(op), odsOperands(values) {} std::pair getODSOperandIndexAndLength(unsigned index) { return Base::getODSOperandIndexAndLength(index, odsOperands.size()); } RangeT getODSOperands(unsigned index) { auto valueRange = getODSOperandIndexAndLength(index); return {std::next(odsOperands.begin(), valueRange.first), std::next(odsOperands.begin(), valueRange.first + valueRange.second)}; } ValueT getOldVdst() { return (*getODSOperands(0).begin()); } ValueT getSrc() { return (*getODSOperands(1).begin()); } ValueT getSeed() { return (*getODSOperands(2).begin()); } ValueT getScale() { return (*getODSOperands(3).begin()); } RangeT getOperands() { return odsOperands; } private: RangeT odsOperands; }; class CvtScaleF32SrPkFp4F16OpAdaptor : public CvtScaleF32SrPkFp4F16OpGenericAdaptor<::mlir::ValueRange> { public: using CvtScaleF32SrPkFp4F16OpGenericAdaptor::CvtScaleF32SrPkFp4F16OpGenericAdaptor; CvtScaleF32SrPkFp4F16OpAdaptor(CvtScaleF32SrPkFp4F16Op op); ::llvm::LogicalResult verify(::mlir::Location loc); }; class CvtScaleF32SrPkFp4F16Op : public ::mlir::Op::Impl, ::mlir::OpTrait::ZeroSuccessors, ::mlir::OpTrait::NOperands<4>::Impl, ::mlir::OpTrait::OpInvariants, ::mlir::BytecodeOpInterface::Trait, ::mlir::ConditionallySpeculatable::Trait, ::mlir::OpTrait::AlwaysSpeculatableImplTrait, ::mlir::MemoryEffectOpInterface::Trait> { public: using Op::Op; using Op::print; using Adaptor = CvtScaleF32SrPkFp4F16OpAdaptor; template using GenericAdaptor = CvtScaleF32SrPkFp4F16OpGenericAdaptor; using FoldAdaptor = GenericAdaptor<::llvm::ArrayRef<::mlir::Attribute>>; static constexpr int odsIndex_oldVdst = 0; static constexpr int odsIndex_src = 1; static constexpr int odsIndex_seed = 2; static constexpr int odsIndex_scale = 3; using Properties = FoldAdaptor::Properties; static ::llvm::ArrayRef<::llvm::StringRef> getAttributeNames() { static ::llvm::StringRef attrNames[] = {::llvm::StringRef("dstSelIndex")}; return ::llvm::ArrayRef(attrNames); } ::mlir::StringAttr getDstSelIndexAttrName() { return getAttributeNameForIndex(0); } static ::mlir::StringAttr getDstSelIndexAttrName(::mlir::OperationName name) { return getAttributeNameForIndex(name, 0); } static constexpr ::llvm::StringLiteral getOperationName() { return ::llvm::StringLiteral("rocdl.cvt.scalef32.sr.pk.fp4.f16"); } std::pair getODSOperandIndexAndLength(unsigned index) { return {index, 1}; } ::mlir::Operation::operand_range getODSOperands(unsigned index) { auto valueRange = getODSOperandIndexAndLength(index); return {std::next(getOperation()->operand_begin(), valueRange.first), std::next(getOperation()->operand_begin(), valueRange.first + valueRange.second)}; } ::mlir::TypedValue<::mlir::IntegerType> getOldVdst() { return ::llvm::cast<::mlir::TypedValue<::mlir::IntegerType>>(*getODSOperands(0).begin()); } ::mlir::TypedValue<::mlir::VectorType> getSrc() { return ::llvm::cast<::mlir::TypedValue<::mlir::VectorType>>(*getODSOperands(1).begin()); } ::mlir::TypedValue<::mlir::IntegerType> getSeed() { return ::llvm::cast<::mlir::TypedValue<::mlir::IntegerType>>(*getODSOperands(2).begin()); } ::mlir::TypedValue<::mlir::FloatType> getScale() { return ::llvm::cast<::mlir::TypedValue<::mlir::FloatType>>(*getODSOperands(3).begin()); } ::mlir::OpOperand &getOldVdstMutable() { auto range = getODSOperandIndexAndLength(0); return getOperation()->getOpOperand(range.first); } ::mlir::OpOperand &getSrcMutable() { auto range = getODSOperandIndexAndLength(1); return getOperation()->getOpOperand(range.first); } ::mlir::OpOperand &getSeedMutable() { auto range = getODSOperandIndexAndLength(2); return getOperation()->getOpOperand(range.first); } ::mlir::OpOperand &getScaleMutable() { auto range = getODSOperandIndexAndLength(3); return getOperation()->getOpOperand(range.first); } std::pair getODSResultIndexAndLength(unsigned index) { return {index, 1}; } ::mlir::Operation::result_range getODSResults(unsigned index) { auto valueRange = getODSResultIndexAndLength(index); return {std::next(getOperation()->result_begin(), valueRange.first), std::next(getOperation()->result_begin(), valueRange.first + valueRange.second)}; } ::mlir::TypedValue<::mlir::IntegerType> getRes() { return ::llvm::cast<::mlir::TypedValue<::mlir::IntegerType>>(*getODSResults(0).begin()); } static ::llvm::LogicalResult setPropertiesFromAttr(Properties &prop, ::mlir::Attribute attr, ::llvm::function_ref<::mlir::InFlightDiagnostic()> emitError); static ::mlir::Attribute getPropertiesAsAttr(::mlir::MLIRContext *ctx, const Properties &prop); static llvm::hash_code computePropertiesHash(const Properties &prop); static std::optional getInherentAttr(::mlir::MLIRContext *ctx, const Properties &prop, llvm::StringRef name); static void setInherentAttr(Properties &prop, llvm::StringRef name, mlir::Attribute value); static void populateInherentAttrs(::mlir::MLIRContext *ctx, const Properties &prop, ::mlir::NamedAttrList &attrs); static ::llvm::LogicalResult verifyInherentAttrs(::mlir::OperationName opName, ::mlir::NamedAttrList &attrs, llvm::function_ref<::mlir::InFlightDiagnostic()> emitError); static ::llvm::LogicalResult readProperties(::mlir::DialectBytecodeReader &reader, ::mlir::OperationState &state); void writeProperties(::mlir::DialectBytecodeWriter &writer); ::mlir::IntegerAttr getDstSelIndexAttr() { return ::llvm::cast<::mlir::IntegerAttr>(getProperties().dstSelIndex); } uint32_t getDstSelIndex(); void setDstSelIndexAttr(::mlir::IntegerAttr attr) { getProperties().dstSelIndex = attr; } void setDstSelIndex(uint32_t attrValue); static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::Type res, ::mlir::Value oldVdst, ::mlir::Value src, ::mlir::Value seed, ::mlir::Value scale, ::mlir::IntegerAttr dstSelIndex); static CvtScaleF32SrPkFp4F16Op create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::Type res, ::mlir::Value oldVdst, ::mlir::Value src, ::mlir::Value seed, ::mlir::Value scale, ::mlir::IntegerAttr dstSelIndex); static CvtScaleF32SrPkFp4F16Op create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::Type res, ::mlir::Value oldVdst, ::mlir::Value src, ::mlir::Value seed, ::mlir::Value scale, ::mlir::IntegerAttr dstSelIndex); static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::Value oldVdst, ::mlir::Value src, ::mlir::Value seed, ::mlir::Value scale, ::mlir::IntegerAttr dstSelIndex); static CvtScaleF32SrPkFp4F16Op create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::Value oldVdst, ::mlir::Value src, ::mlir::Value seed, ::mlir::Value scale, ::mlir::IntegerAttr dstSelIndex); static CvtScaleF32SrPkFp4F16Op create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::Value oldVdst, ::mlir::Value src, ::mlir::Value seed, ::mlir::Value scale, ::mlir::IntegerAttr dstSelIndex); static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::Type res, ::mlir::Value oldVdst, ::mlir::Value src, ::mlir::Value seed, ::mlir::Value scale, uint32_t dstSelIndex); static CvtScaleF32SrPkFp4F16Op create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::Type res, ::mlir::Value oldVdst, ::mlir::Value src, ::mlir::Value seed, ::mlir::Value scale, uint32_t dstSelIndex); static CvtScaleF32SrPkFp4F16Op create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::Type res, ::mlir::Value oldVdst, ::mlir::Value src, ::mlir::Value seed, ::mlir::Value scale, uint32_t dstSelIndex); static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::Value oldVdst, ::mlir::Value src, ::mlir::Value seed, ::mlir::Value scale, uint32_t dstSelIndex); static CvtScaleF32SrPkFp4F16Op create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::Value oldVdst, ::mlir::Value src, ::mlir::Value seed, ::mlir::Value scale, uint32_t dstSelIndex); static CvtScaleF32SrPkFp4F16Op create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::Value oldVdst, ::mlir::Value src, ::mlir::Value seed, ::mlir::Value scale, uint32_t dstSelIndex); static void build(::mlir::OpBuilder &, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, ::llvm::ArrayRef<::mlir::NamedAttribute> attributes = {}); static CvtScaleF32SrPkFp4F16Op create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, ::llvm::ArrayRef<::mlir::NamedAttribute> attributes = {}); static CvtScaleF32SrPkFp4F16Op create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, ::llvm::ArrayRef<::mlir::NamedAttribute> attributes = {}); static void build(::mlir::OpBuilder &, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, const Properties &properties, ::llvm::ArrayRef<::mlir::NamedAttribute> discardableAttributes = {}); static CvtScaleF32SrPkFp4F16Op create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, const Properties &properties, ::llvm::ArrayRef<::mlir::NamedAttribute> discardableAttributes = {}); static CvtScaleF32SrPkFp4F16Op create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, const Properties &properties, ::llvm::ArrayRef<::mlir::NamedAttribute> discardableAttributes = {}); ::llvm::LogicalResult verifyInvariantsImpl(); ::llvm::LogicalResult verifyInvariants(); static ::mlir::ParseResult parse(::mlir::OpAsmParser &parser, ::mlir::OperationState &result); void print(::mlir::OpAsmPrinter &_odsPrinter); void getEffects(::llvm::SmallVectorImpl<::mlir::SideEffects::EffectInstance<::mlir::MemoryEffects::Effect>> &effects); private: ::mlir::StringAttr getAttributeNameForIndex(unsigned index) { return getAttributeNameForIndex((*this)->getName(), index); } static ::mlir::StringAttr getAttributeNameForIndex(::mlir::OperationName name, unsigned index) { assert(index < 1 && "invalid attribute index"); assert(name.getStringRef() == getOperationName() && "invalid operation name"); assert(name.isRegistered() && "Operation isn't registered, missing a " "dependent dialect loading?"); return name.getAttributeNames()[index]; } public: }; } // namespace mlir::ROCDL MLIR_DECLARE_EXPLICIT_TYPE_ID(::mlir::ROCDL::CvtScaleF32SrPkFp4F16Op) MLIR_DECLARE_EXPLICIT_TYPE_ID(::mlir::ROCDL::detail::CvtScaleF32SrPkFp4F16OpGenericAdaptorBase::Properties) namespace mlir::ROCDL { //===----------------------------------------------------------------------===// // ::mlir::ROCDL::CvtScaleF32SrPkFp4F32Op declarations //===----------------------------------------------------------------------===// namespace detail { class CvtScaleF32SrPkFp4F32OpGenericAdaptorBase { public: struct Properties { using dstSelIndexTy = ::mlir::IntegerAttr; dstSelIndexTy dstSelIndex; auto getDstSelIndex() const { auto &propStorage = this->dstSelIndex; return ::llvm::cast<::mlir::IntegerAttr>(propStorage); } void setDstSelIndex(const ::mlir::IntegerAttr &propValue) { this->dstSelIndex = propValue; } bool operator==(const Properties &rhs) const { return rhs.dstSelIndex == this->dstSelIndex && true; } bool operator!=(const Properties &rhs) const { return !(*this == rhs); } }; protected: ::mlir::DictionaryAttr odsAttrs; ::std::optional<::mlir::OperationName> odsOpName; Properties properties; ::mlir::RegionRange odsRegions; public: CvtScaleF32SrPkFp4F32OpGenericAdaptorBase(::mlir::DictionaryAttr attrs, const Properties &properties, ::mlir::RegionRange regions = {}) : odsAttrs(attrs), properties(properties), odsRegions(regions) { if (odsAttrs) odsOpName.emplace("rocdl.cvt.scalef32.sr.pk.fp4.f32", odsAttrs.getContext()); } CvtScaleF32SrPkFp4F32OpGenericAdaptorBase(CvtScaleF32SrPkFp4F32Op op); std::pair getODSOperandIndexAndLength(unsigned index, unsigned odsOperandsSize) { return {index, 1}; } const Properties &getProperties() { return properties; } ::mlir::DictionaryAttr getAttributes() { return odsAttrs; } ::mlir::IntegerAttr getDstSelIndexAttr() { auto attr = ::llvm::cast<::mlir::IntegerAttr>(getProperties().dstSelIndex); return attr; } uint32_t getDstSelIndex(); }; } // namespace detail template class CvtScaleF32SrPkFp4F32OpGenericAdaptor : public detail::CvtScaleF32SrPkFp4F32OpGenericAdaptorBase { using ValueT = ::llvm::detail::ValueOfRange; using Base = detail::CvtScaleF32SrPkFp4F32OpGenericAdaptorBase; static constexpr int odsIndex_oldVdst = 0; static constexpr int odsIndex_src = 1; static constexpr int odsIndex_seed = 2; static constexpr int odsIndex_scale = 3; public: CvtScaleF32SrPkFp4F32OpGenericAdaptor(RangeT values, ::mlir::DictionaryAttr attrs, const Properties &properties, ::mlir::RegionRange regions = {}) : Base(attrs, properties, regions), odsOperands(values) {} CvtScaleF32SrPkFp4F32OpGenericAdaptor(RangeT values, ::mlir::DictionaryAttr attrs, ::mlir::PropertyRef properties, ::mlir::RegionRange regions = {}) : CvtScaleF32SrPkFp4F32OpGenericAdaptor(values, attrs, (properties ? *properties.as() : Properties{}), regions) {} CvtScaleF32SrPkFp4F32OpGenericAdaptor(RangeT values, ::mlir::DictionaryAttr attrs = nullptr) : CvtScaleF32SrPkFp4F32OpGenericAdaptor(values, attrs, Properties{}, {}) {} CvtScaleF32SrPkFp4F32OpGenericAdaptor(RangeT values, const CvtScaleF32SrPkFp4F32OpGenericAdaptorBase &base) : Base(base), odsOperands(values) {} template >> CvtScaleF32SrPkFp4F32OpGenericAdaptor(RangeT values, LateInst op) : Base(op), odsOperands(values) {} std::pair getODSOperandIndexAndLength(unsigned index) { return Base::getODSOperandIndexAndLength(index, odsOperands.size()); } RangeT getODSOperands(unsigned index) { auto valueRange = getODSOperandIndexAndLength(index); return {std::next(odsOperands.begin(), valueRange.first), std::next(odsOperands.begin(), valueRange.first + valueRange.second)}; } ValueT getOldVdst() { return (*getODSOperands(0).begin()); } ValueT getSrc() { return (*getODSOperands(1).begin()); } ValueT getSeed() { return (*getODSOperands(2).begin()); } ValueT getScale() { return (*getODSOperands(3).begin()); } RangeT getOperands() { return odsOperands; } private: RangeT odsOperands; }; class CvtScaleF32SrPkFp4F32OpAdaptor : public CvtScaleF32SrPkFp4F32OpGenericAdaptor<::mlir::ValueRange> { public: using CvtScaleF32SrPkFp4F32OpGenericAdaptor::CvtScaleF32SrPkFp4F32OpGenericAdaptor; CvtScaleF32SrPkFp4F32OpAdaptor(CvtScaleF32SrPkFp4F32Op op); ::llvm::LogicalResult verify(::mlir::Location loc); }; class CvtScaleF32SrPkFp4F32Op : public ::mlir::Op::Impl, ::mlir::OpTrait::ZeroSuccessors, ::mlir::OpTrait::NOperands<4>::Impl, ::mlir::OpTrait::OpInvariants, ::mlir::BytecodeOpInterface::Trait, ::mlir::ConditionallySpeculatable::Trait, ::mlir::OpTrait::AlwaysSpeculatableImplTrait, ::mlir::MemoryEffectOpInterface::Trait> { public: using Op::Op; using Op::print; using Adaptor = CvtScaleF32SrPkFp4F32OpAdaptor; template using GenericAdaptor = CvtScaleF32SrPkFp4F32OpGenericAdaptor; using FoldAdaptor = GenericAdaptor<::llvm::ArrayRef<::mlir::Attribute>>; static constexpr int odsIndex_oldVdst = 0; static constexpr int odsIndex_src = 1; static constexpr int odsIndex_seed = 2; static constexpr int odsIndex_scale = 3; using Properties = FoldAdaptor::Properties; static ::llvm::ArrayRef<::llvm::StringRef> getAttributeNames() { static ::llvm::StringRef attrNames[] = {::llvm::StringRef("dstSelIndex")}; return ::llvm::ArrayRef(attrNames); } ::mlir::StringAttr getDstSelIndexAttrName() { return getAttributeNameForIndex(0); } static ::mlir::StringAttr getDstSelIndexAttrName(::mlir::OperationName name) { return getAttributeNameForIndex(name, 0); } static constexpr ::llvm::StringLiteral getOperationName() { return ::llvm::StringLiteral("rocdl.cvt.scalef32.sr.pk.fp4.f32"); } std::pair getODSOperandIndexAndLength(unsigned index) { return {index, 1}; } ::mlir::Operation::operand_range getODSOperands(unsigned index) { auto valueRange = getODSOperandIndexAndLength(index); return {std::next(getOperation()->operand_begin(), valueRange.first), std::next(getOperation()->operand_begin(), valueRange.first + valueRange.second)}; } ::mlir::TypedValue<::mlir::IntegerType> getOldVdst() { return ::llvm::cast<::mlir::TypedValue<::mlir::IntegerType>>(*getODSOperands(0).begin()); } ::mlir::TypedValue<::mlir::VectorType> getSrc() { return ::llvm::cast<::mlir::TypedValue<::mlir::VectorType>>(*getODSOperands(1).begin()); } ::mlir::TypedValue<::mlir::IntegerType> getSeed() { return ::llvm::cast<::mlir::TypedValue<::mlir::IntegerType>>(*getODSOperands(2).begin()); } ::mlir::TypedValue<::mlir::FloatType> getScale() { return ::llvm::cast<::mlir::TypedValue<::mlir::FloatType>>(*getODSOperands(3).begin()); } ::mlir::OpOperand &getOldVdstMutable() { auto range = getODSOperandIndexAndLength(0); return getOperation()->getOpOperand(range.first); } ::mlir::OpOperand &getSrcMutable() { auto range = getODSOperandIndexAndLength(1); return getOperation()->getOpOperand(range.first); } ::mlir::OpOperand &getSeedMutable() { auto range = getODSOperandIndexAndLength(2); return getOperation()->getOpOperand(range.first); } ::mlir::OpOperand &getScaleMutable() { auto range = getODSOperandIndexAndLength(3); return getOperation()->getOpOperand(range.first); } std::pair getODSResultIndexAndLength(unsigned index) { return {index, 1}; } ::mlir::Operation::result_range getODSResults(unsigned index) { auto valueRange = getODSResultIndexAndLength(index); return {std::next(getOperation()->result_begin(), valueRange.first), std::next(getOperation()->result_begin(), valueRange.first + valueRange.second)}; } ::mlir::TypedValue<::mlir::IntegerType> getRes() { return ::llvm::cast<::mlir::TypedValue<::mlir::IntegerType>>(*getODSResults(0).begin()); } static ::llvm::LogicalResult setPropertiesFromAttr(Properties &prop, ::mlir::Attribute attr, ::llvm::function_ref<::mlir::InFlightDiagnostic()> emitError); static ::mlir::Attribute getPropertiesAsAttr(::mlir::MLIRContext *ctx, const Properties &prop); static llvm::hash_code computePropertiesHash(const Properties &prop); static std::optional getInherentAttr(::mlir::MLIRContext *ctx, const Properties &prop, llvm::StringRef name); static void setInherentAttr(Properties &prop, llvm::StringRef name, mlir::Attribute value); static void populateInherentAttrs(::mlir::MLIRContext *ctx, const Properties &prop, ::mlir::NamedAttrList &attrs); static ::llvm::LogicalResult verifyInherentAttrs(::mlir::OperationName opName, ::mlir::NamedAttrList &attrs, llvm::function_ref<::mlir::InFlightDiagnostic()> emitError); static ::llvm::LogicalResult readProperties(::mlir::DialectBytecodeReader &reader, ::mlir::OperationState &state); void writeProperties(::mlir::DialectBytecodeWriter &writer); ::mlir::IntegerAttr getDstSelIndexAttr() { return ::llvm::cast<::mlir::IntegerAttr>(getProperties().dstSelIndex); } uint32_t getDstSelIndex(); void setDstSelIndexAttr(::mlir::IntegerAttr attr) { getProperties().dstSelIndex = attr; } void setDstSelIndex(uint32_t attrValue); static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::Type res, ::mlir::Value oldVdst, ::mlir::Value src, ::mlir::Value seed, ::mlir::Value scale, ::mlir::IntegerAttr dstSelIndex); static CvtScaleF32SrPkFp4F32Op create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::Type res, ::mlir::Value oldVdst, ::mlir::Value src, ::mlir::Value seed, ::mlir::Value scale, ::mlir::IntegerAttr dstSelIndex); static CvtScaleF32SrPkFp4F32Op create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::Type res, ::mlir::Value oldVdst, ::mlir::Value src, ::mlir::Value seed, ::mlir::Value scale, ::mlir::IntegerAttr dstSelIndex); static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::Value oldVdst, ::mlir::Value src, ::mlir::Value seed, ::mlir::Value scale, ::mlir::IntegerAttr dstSelIndex); static CvtScaleF32SrPkFp4F32Op create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::Value oldVdst, ::mlir::Value src, ::mlir::Value seed, ::mlir::Value scale, ::mlir::IntegerAttr dstSelIndex); static CvtScaleF32SrPkFp4F32Op create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::Value oldVdst, ::mlir::Value src, ::mlir::Value seed, ::mlir::Value scale, ::mlir::IntegerAttr dstSelIndex); static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::Type res, ::mlir::Value oldVdst, ::mlir::Value src, ::mlir::Value seed, ::mlir::Value scale, uint32_t dstSelIndex); static CvtScaleF32SrPkFp4F32Op create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::Type res, ::mlir::Value oldVdst, ::mlir::Value src, ::mlir::Value seed, ::mlir::Value scale, uint32_t dstSelIndex); static CvtScaleF32SrPkFp4F32Op create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::Type res, ::mlir::Value oldVdst, ::mlir::Value src, ::mlir::Value seed, ::mlir::Value scale, uint32_t dstSelIndex); static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::Value oldVdst, ::mlir::Value src, ::mlir::Value seed, ::mlir::Value scale, uint32_t dstSelIndex); static CvtScaleF32SrPkFp4F32Op create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::Value oldVdst, ::mlir::Value src, ::mlir::Value seed, ::mlir::Value scale, uint32_t dstSelIndex); static CvtScaleF32SrPkFp4F32Op create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::Value oldVdst, ::mlir::Value src, ::mlir::Value seed, ::mlir::Value scale, uint32_t dstSelIndex); static void build(::mlir::OpBuilder &, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, ::llvm::ArrayRef<::mlir::NamedAttribute> attributes = {}); static CvtScaleF32SrPkFp4F32Op create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, ::llvm::ArrayRef<::mlir::NamedAttribute> attributes = {}); static CvtScaleF32SrPkFp4F32Op create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, ::llvm::ArrayRef<::mlir::NamedAttribute> attributes = {}); static void build(::mlir::OpBuilder &, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, const Properties &properties, ::llvm::ArrayRef<::mlir::NamedAttribute> discardableAttributes = {}); static CvtScaleF32SrPkFp4F32Op create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, const Properties &properties, ::llvm::ArrayRef<::mlir::NamedAttribute> discardableAttributes = {}); static CvtScaleF32SrPkFp4F32Op create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, const Properties &properties, ::llvm::ArrayRef<::mlir::NamedAttribute> discardableAttributes = {}); ::llvm::LogicalResult verifyInvariantsImpl(); ::llvm::LogicalResult verifyInvariants(); static ::mlir::ParseResult parse(::mlir::OpAsmParser &parser, ::mlir::OperationState &result); void print(::mlir::OpAsmPrinter &_odsPrinter); void getEffects(::llvm::SmallVectorImpl<::mlir::SideEffects::EffectInstance<::mlir::MemoryEffects::Effect>> &effects); private: ::mlir::StringAttr getAttributeNameForIndex(unsigned index) { return getAttributeNameForIndex((*this)->getName(), index); } static ::mlir::StringAttr getAttributeNameForIndex(::mlir::OperationName name, unsigned index) { assert(index < 1 && "invalid attribute index"); assert(name.getStringRef() == getOperationName() && "invalid operation name"); assert(name.isRegistered() && "Operation isn't registered, missing a " "dependent dialect loading?"); return name.getAttributeNames()[index]; } public: }; } // namespace mlir::ROCDL MLIR_DECLARE_EXPLICIT_TYPE_ID(::mlir::ROCDL::CvtScaleF32SrPkFp4F32Op) MLIR_DECLARE_EXPLICIT_TYPE_ID(::mlir::ROCDL::detail::CvtScaleF32SrPkFp4F32OpGenericAdaptorBase::Properties) namespace mlir::ROCDL { //===----------------------------------------------------------------------===// // ::mlir::ROCDL::CvtSrBf8F32Op declarations //===----------------------------------------------------------------------===// namespace detail { class CvtSrBf8F32OpGenericAdaptorBase { public: struct Properties { using byteSelTy = ::mlir::IntegerAttr; byteSelTy byteSel; auto getByteSel() const { auto &propStorage = this->byteSel; return ::llvm::cast<::mlir::IntegerAttr>(propStorage); } void setByteSel(const ::mlir::IntegerAttr &propValue) { this->byteSel = propValue; } bool operator==(const Properties &rhs) const { return rhs.byteSel == this->byteSel && true; } bool operator!=(const Properties &rhs) const { return !(*this == rhs); } }; protected: ::mlir::DictionaryAttr odsAttrs; ::std::optional<::mlir::OperationName> odsOpName; Properties properties; ::mlir::RegionRange odsRegions; public: CvtSrBf8F32OpGenericAdaptorBase(::mlir::DictionaryAttr attrs, const Properties &properties, ::mlir::RegionRange regions = {}) : odsAttrs(attrs), properties(properties), odsRegions(regions) { if (odsAttrs) odsOpName.emplace("rocdl.cvt.sr.bf8.f32", odsAttrs.getContext()); } CvtSrBf8F32OpGenericAdaptorBase(CvtSrBf8F32Op op); std::pair getODSOperandIndexAndLength(unsigned index, unsigned odsOperandsSize) { return {index, 1}; } const Properties &getProperties() { return properties; } ::mlir::DictionaryAttr getAttributes() { return odsAttrs; } ::mlir::IntegerAttr getByteSelAttr() { auto attr = ::llvm::cast<::mlir::IntegerAttr>(getProperties().byteSel); return attr; } uint32_t getByteSel(); }; } // namespace detail template class CvtSrBf8F32OpGenericAdaptor : public detail::CvtSrBf8F32OpGenericAdaptorBase { using ValueT = ::llvm::detail::ValueOfRange; using Base = detail::CvtSrBf8F32OpGenericAdaptorBase; static constexpr int odsIndex_srcA = 0; static constexpr int odsIndex_srcB = 1; static constexpr int odsIndex_old = 2; public: CvtSrBf8F32OpGenericAdaptor(RangeT values, ::mlir::DictionaryAttr attrs, const Properties &properties, ::mlir::RegionRange regions = {}) : Base(attrs, properties, regions), odsOperands(values) {} CvtSrBf8F32OpGenericAdaptor(RangeT values, ::mlir::DictionaryAttr attrs, ::mlir::PropertyRef properties, ::mlir::RegionRange regions = {}) : CvtSrBf8F32OpGenericAdaptor(values, attrs, (properties ? *properties.as() : Properties{}), regions) {} CvtSrBf8F32OpGenericAdaptor(RangeT values, ::mlir::DictionaryAttr attrs = nullptr) : CvtSrBf8F32OpGenericAdaptor(values, attrs, Properties{}, {}) {} CvtSrBf8F32OpGenericAdaptor(RangeT values, const CvtSrBf8F32OpGenericAdaptorBase &base) : Base(base), odsOperands(values) {} template >> CvtSrBf8F32OpGenericAdaptor(RangeT values, LateInst op) : Base(op), odsOperands(values) {} std::pair getODSOperandIndexAndLength(unsigned index) { return Base::getODSOperandIndexAndLength(index, odsOperands.size()); } RangeT getODSOperands(unsigned index) { auto valueRange = getODSOperandIndexAndLength(index); return {std::next(odsOperands.begin(), valueRange.first), std::next(odsOperands.begin(), valueRange.first + valueRange.second)}; } ValueT getSrcA() { return (*getODSOperands(0).begin()); } ValueT getSrcB() { return (*getODSOperands(1).begin()); } ValueT getOld() { return (*getODSOperands(2).begin()); } RangeT getOperands() { return odsOperands; } private: RangeT odsOperands; }; class CvtSrBf8F32OpAdaptor : public CvtSrBf8F32OpGenericAdaptor<::mlir::ValueRange> { public: using CvtSrBf8F32OpGenericAdaptor::CvtSrBf8F32OpGenericAdaptor; CvtSrBf8F32OpAdaptor(CvtSrBf8F32Op op); ::llvm::LogicalResult verify(::mlir::Location loc); }; class CvtSrBf8F32Op : public ::mlir::Op::Impl, ::mlir::OpTrait::ZeroSuccessors, ::mlir::OpTrait::NOperands<3>::Impl, ::mlir::OpTrait::OpInvariants, ::mlir::BytecodeOpInterface::Trait, ::mlir::ConditionallySpeculatable::Trait, ::mlir::OpTrait::AlwaysSpeculatableImplTrait, ::mlir::MemoryEffectOpInterface::Trait> { public: using Op::Op; using Op::print; using Adaptor = CvtSrBf8F32OpAdaptor; template using GenericAdaptor = CvtSrBf8F32OpGenericAdaptor; using FoldAdaptor = GenericAdaptor<::llvm::ArrayRef<::mlir::Attribute>>; static constexpr int odsIndex_srcA = 0; static constexpr int odsIndex_srcB = 1; static constexpr int odsIndex_old = 2; using Properties = FoldAdaptor::Properties; static ::llvm::ArrayRef<::llvm::StringRef> getAttributeNames() { static ::llvm::StringRef attrNames[] = {::llvm::StringRef("byteSel")}; return ::llvm::ArrayRef(attrNames); } ::mlir::StringAttr getByteSelAttrName() { return getAttributeNameForIndex(0); } static ::mlir::StringAttr getByteSelAttrName(::mlir::OperationName name) { return getAttributeNameForIndex(name, 0); } static constexpr ::llvm::StringLiteral getOperationName() { return ::llvm::StringLiteral("rocdl.cvt.sr.bf8.f32"); } std::pair getODSOperandIndexAndLength(unsigned index) { return {index, 1}; } ::mlir::Operation::operand_range getODSOperands(unsigned index) { auto valueRange = getODSOperandIndexAndLength(index); return {std::next(getOperation()->operand_begin(), valueRange.first), std::next(getOperation()->operand_begin(), valueRange.first + valueRange.second)}; } ::mlir::TypedValue<::mlir::FloatType> getSrcA() { return ::llvm::cast<::mlir::TypedValue<::mlir::FloatType>>(*getODSOperands(0).begin()); } ::mlir::TypedValue<::mlir::IntegerType> getSrcB() { return ::llvm::cast<::mlir::TypedValue<::mlir::IntegerType>>(*getODSOperands(1).begin()); } ::mlir::TypedValue<::mlir::IntegerType> getOld() { return ::llvm::cast<::mlir::TypedValue<::mlir::IntegerType>>(*getODSOperands(2).begin()); } ::mlir::OpOperand &getSrcAMutable() { auto range = getODSOperandIndexAndLength(0); return getOperation()->getOpOperand(range.first); } ::mlir::OpOperand &getSrcBMutable() { auto range = getODSOperandIndexAndLength(1); return getOperation()->getOpOperand(range.first); } ::mlir::OpOperand &getOldMutable() { auto range = getODSOperandIndexAndLength(2); return getOperation()->getOpOperand(range.first); } std::pair getODSResultIndexAndLength(unsigned index) { return {index, 1}; } ::mlir::Operation::result_range getODSResults(unsigned index) { auto valueRange = getODSResultIndexAndLength(index); return {std::next(getOperation()->result_begin(), valueRange.first), std::next(getOperation()->result_begin(), valueRange.first + valueRange.second)}; } ::mlir::TypedValue<::mlir::Type> getRes() { return ::llvm::cast<::mlir::TypedValue<::mlir::Type>>(*getODSResults(0).begin()); } static ::llvm::LogicalResult setPropertiesFromAttr(Properties &prop, ::mlir::Attribute attr, ::llvm::function_ref<::mlir::InFlightDiagnostic()> emitError); static ::mlir::Attribute getPropertiesAsAttr(::mlir::MLIRContext *ctx, const Properties &prop); static llvm::hash_code computePropertiesHash(const Properties &prop); static std::optional getInherentAttr(::mlir::MLIRContext *ctx, const Properties &prop, llvm::StringRef name); static void setInherentAttr(Properties &prop, llvm::StringRef name, mlir::Attribute value); static void populateInherentAttrs(::mlir::MLIRContext *ctx, const Properties &prop, ::mlir::NamedAttrList &attrs); static ::llvm::LogicalResult verifyInherentAttrs(::mlir::OperationName opName, ::mlir::NamedAttrList &attrs, llvm::function_ref<::mlir::InFlightDiagnostic()> emitError); static ::llvm::LogicalResult readProperties(::mlir::DialectBytecodeReader &reader, ::mlir::OperationState &state); void writeProperties(::mlir::DialectBytecodeWriter &writer); ::mlir::IntegerAttr getByteSelAttr() { return ::llvm::cast<::mlir::IntegerAttr>(getProperties().byteSel); } uint32_t getByteSel(); void setByteSelAttr(::mlir::IntegerAttr attr) { getProperties().byteSel = attr; } void setByteSel(uint32_t attrValue); static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::Type res, ::mlir::Value srcA, ::mlir::Value srcB, ::mlir::Value old, ::mlir::IntegerAttr byteSel); static CvtSrBf8F32Op create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::Type res, ::mlir::Value srcA, ::mlir::Value srcB, ::mlir::Value old, ::mlir::IntegerAttr byteSel); static CvtSrBf8F32Op create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::Type res, ::mlir::Value srcA, ::mlir::Value srcB, ::mlir::Value old, ::mlir::IntegerAttr byteSel); static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::Value srcA, ::mlir::Value srcB, ::mlir::Value old, ::mlir::IntegerAttr byteSel); static CvtSrBf8F32Op create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::Value srcA, ::mlir::Value srcB, ::mlir::Value old, ::mlir::IntegerAttr byteSel); static CvtSrBf8F32Op create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::Value srcA, ::mlir::Value srcB, ::mlir::Value old, ::mlir::IntegerAttr byteSel); static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::Type res, ::mlir::Value srcA, ::mlir::Value srcB, ::mlir::Value old, uint32_t byteSel); static CvtSrBf8F32Op create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::Type res, ::mlir::Value srcA, ::mlir::Value srcB, ::mlir::Value old, uint32_t byteSel); static CvtSrBf8F32Op create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::Type res, ::mlir::Value srcA, ::mlir::Value srcB, ::mlir::Value old, uint32_t byteSel); static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::Value srcA, ::mlir::Value srcB, ::mlir::Value old, uint32_t byteSel); static CvtSrBf8F32Op create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::Value srcA, ::mlir::Value srcB, ::mlir::Value old, uint32_t byteSel); static CvtSrBf8F32Op create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::Value srcA, ::mlir::Value srcB, ::mlir::Value old, uint32_t byteSel); static void build(::mlir::OpBuilder &, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, ::llvm::ArrayRef<::mlir::NamedAttribute> attributes = {}); static CvtSrBf8F32Op create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, ::llvm::ArrayRef<::mlir::NamedAttribute> attributes = {}); static CvtSrBf8F32Op create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, ::llvm::ArrayRef<::mlir::NamedAttribute> attributes = {}); static void build(::mlir::OpBuilder &, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, const Properties &properties, ::llvm::ArrayRef<::mlir::NamedAttribute> discardableAttributes = {}); static CvtSrBf8F32Op create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, const Properties &properties, ::llvm::ArrayRef<::mlir::NamedAttribute> discardableAttributes = {}); static CvtSrBf8F32Op create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, const Properties &properties, ::llvm::ArrayRef<::mlir::NamedAttribute> discardableAttributes = {}); ::llvm::LogicalResult verifyInvariantsImpl(); ::llvm::LogicalResult verifyInvariants(); static ::mlir::ParseResult parse(::mlir::OpAsmParser &parser, ::mlir::OperationState &result); void print(::mlir::OpAsmPrinter &_odsPrinter); void getEffects(::llvm::SmallVectorImpl<::mlir::SideEffects::EffectInstance<::mlir::MemoryEffects::Effect>> &effects); private: ::mlir::StringAttr getAttributeNameForIndex(unsigned index) { return getAttributeNameForIndex((*this)->getName(), index); } static ::mlir::StringAttr getAttributeNameForIndex(::mlir::OperationName name, unsigned index) { assert(index < 1 && "invalid attribute index"); assert(name.getStringRef() == getOperationName() && "invalid operation name"); assert(name.isRegistered() && "Operation isn't registered, missing a " "dependent dialect loading?"); return name.getAttributeNames()[index]; } public: }; } // namespace mlir::ROCDL MLIR_DECLARE_EXPLICIT_TYPE_ID(::mlir::ROCDL::CvtSrBf8F32Op) MLIR_DECLARE_EXPLICIT_TYPE_ID(::mlir::ROCDL::detail::CvtSrBf8F32OpGenericAdaptorBase::Properties) namespace mlir::ROCDL { //===----------------------------------------------------------------------===// // ::mlir::ROCDL::CvtSrFp8F32Op declarations //===----------------------------------------------------------------------===// namespace detail { class CvtSrFp8F32OpGenericAdaptorBase { public: struct Properties { using byteSelTy = ::mlir::IntegerAttr; byteSelTy byteSel; auto getByteSel() const { auto &propStorage = this->byteSel; return ::llvm::cast<::mlir::IntegerAttr>(propStorage); } void setByteSel(const ::mlir::IntegerAttr &propValue) { this->byteSel = propValue; } bool operator==(const Properties &rhs) const { return rhs.byteSel == this->byteSel && true; } bool operator!=(const Properties &rhs) const { return !(*this == rhs); } }; protected: ::mlir::DictionaryAttr odsAttrs; ::std::optional<::mlir::OperationName> odsOpName; Properties properties; ::mlir::RegionRange odsRegions; public: CvtSrFp8F32OpGenericAdaptorBase(::mlir::DictionaryAttr attrs, const Properties &properties, ::mlir::RegionRange regions = {}) : odsAttrs(attrs), properties(properties), odsRegions(regions) { if (odsAttrs) odsOpName.emplace("rocdl.cvt.sr.fp8.f32", odsAttrs.getContext()); } CvtSrFp8F32OpGenericAdaptorBase(CvtSrFp8F32Op op); std::pair getODSOperandIndexAndLength(unsigned index, unsigned odsOperandsSize) { return {index, 1}; } const Properties &getProperties() { return properties; } ::mlir::DictionaryAttr getAttributes() { return odsAttrs; } ::mlir::IntegerAttr getByteSelAttr() { auto attr = ::llvm::cast<::mlir::IntegerAttr>(getProperties().byteSel); return attr; } uint32_t getByteSel(); }; } // namespace detail template class CvtSrFp8F32OpGenericAdaptor : public detail::CvtSrFp8F32OpGenericAdaptorBase { using ValueT = ::llvm::detail::ValueOfRange; using Base = detail::CvtSrFp8F32OpGenericAdaptorBase; static constexpr int odsIndex_srcA = 0; static constexpr int odsIndex_srcB = 1; static constexpr int odsIndex_old = 2; public: CvtSrFp8F32OpGenericAdaptor(RangeT values, ::mlir::DictionaryAttr attrs, const Properties &properties, ::mlir::RegionRange regions = {}) : Base(attrs, properties, regions), odsOperands(values) {} CvtSrFp8F32OpGenericAdaptor(RangeT values, ::mlir::DictionaryAttr attrs, ::mlir::PropertyRef properties, ::mlir::RegionRange regions = {}) : CvtSrFp8F32OpGenericAdaptor(values, attrs, (properties ? *properties.as() : Properties{}), regions) {} CvtSrFp8F32OpGenericAdaptor(RangeT values, ::mlir::DictionaryAttr attrs = nullptr) : CvtSrFp8F32OpGenericAdaptor(values, attrs, Properties{}, {}) {} CvtSrFp8F32OpGenericAdaptor(RangeT values, const CvtSrFp8F32OpGenericAdaptorBase &base) : Base(base), odsOperands(values) {} template >> CvtSrFp8F32OpGenericAdaptor(RangeT values, LateInst op) : Base(op), odsOperands(values) {} std::pair getODSOperandIndexAndLength(unsigned index) { return Base::getODSOperandIndexAndLength(index, odsOperands.size()); } RangeT getODSOperands(unsigned index) { auto valueRange = getODSOperandIndexAndLength(index); return {std::next(odsOperands.begin(), valueRange.first), std::next(odsOperands.begin(), valueRange.first + valueRange.second)}; } ValueT getSrcA() { return (*getODSOperands(0).begin()); } ValueT getSrcB() { return (*getODSOperands(1).begin()); } ValueT getOld() { return (*getODSOperands(2).begin()); } RangeT getOperands() { return odsOperands; } private: RangeT odsOperands; }; class CvtSrFp8F32OpAdaptor : public CvtSrFp8F32OpGenericAdaptor<::mlir::ValueRange> { public: using CvtSrFp8F32OpGenericAdaptor::CvtSrFp8F32OpGenericAdaptor; CvtSrFp8F32OpAdaptor(CvtSrFp8F32Op op); ::llvm::LogicalResult verify(::mlir::Location loc); }; class CvtSrFp8F32Op : public ::mlir::Op::Impl, ::mlir::OpTrait::ZeroSuccessors, ::mlir::OpTrait::NOperands<3>::Impl, ::mlir::OpTrait::OpInvariants, ::mlir::BytecodeOpInterface::Trait, ::mlir::ConditionallySpeculatable::Trait, ::mlir::OpTrait::AlwaysSpeculatableImplTrait, ::mlir::MemoryEffectOpInterface::Trait> { public: using Op::Op; using Op::print; using Adaptor = CvtSrFp8F32OpAdaptor; template using GenericAdaptor = CvtSrFp8F32OpGenericAdaptor; using FoldAdaptor = GenericAdaptor<::llvm::ArrayRef<::mlir::Attribute>>; static constexpr int odsIndex_srcA = 0; static constexpr int odsIndex_srcB = 1; static constexpr int odsIndex_old = 2; using Properties = FoldAdaptor::Properties; static ::llvm::ArrayRef<::llvm::StringRef> getAttributeNames() { static ::llvm::StringRef attrNames[] = {::llvm::StringRef("byteSel")}; return ::llvm::ArrayRef(attrNames); } ::mlir::StringAttr getByteSelAttrName() { return getAttributeNameForIndex(0); } static ::mlir::StringAttr getByteSelAttrName(::mlir::OperationName name) { return getAttributeNameForIndex(name, 0); } static constexpr ::llvm::StringLiteral getOperationName() { return ::llvm::StringLiteral("rocdl.cvt.sr.fp8.f32"); } std::pair getODSOperandIndexAndLength(unsigned index) { return {index, 1}; } ::mlir::Operation::operand_range getODSOperands(unsigned index) { auto valueRange = getODSOperandIndexAndLength(index); return {std::next(getOperation()->operand_begin(), valueRange.first), std::next(getOperation()->operand_begin(), valueRange.first + valueRange.second)}; } ::mlir::TypedValue<::mlir::FloatType> getSrcA() { return ::llvm::cast<::mlir::TypedValue<::mlir::FloatType>>(*getODSOperands(0).begin()); } ::mlir::TypedValue<::mlir::IntegerType> getSrcB() { return ::llvm::cast<::mlir::TypedValue<::mlir::IntegerType>>(*getODSOperands(1).begin()); } ::mlir::TypedValue<::mlir::IntegerType> getOld() { return ::llvm::cast<::mlir::TypedValue<::mlir::IntegerType>>(*getODSOperands(2).begin()); } ::mlir::OpOperand &getSrcAMutable() { auto range = getODSOperandIndexAndLength(0); return getOperation()->getOpOperand(range.first); } ::mlir::OpOperand &getSrcBMutable() { auto range = getODSOperandIndexAndLength(1); return getOperation()->getOpOperand(range.first); } ::mlir::OpOperand &getOldMutable() { auto range = getODSOperandIndexAndLength(2); return getOperation()->getOpOperand(range.first); } std::pair getODSResultIndexAndLength(unsigned index) { return {index, 1}; } ::mlir::Operation::result_range getODSResults(unsigned index) { auto valueRange = getODSResultIndexAndLength(index); return {std::next(getOperation()->result_begin(), valueRange.first), std::next(getOperation()->result_begin(), valueRange.first + valueRange.second)}; } ::mlir::TypedValue<::mlir::Type> getRes() { return ::llvm::cast<::mlir::TypedValue<::mlir::Type>>(*getODSResults(0).begin()); } static ::llvm::LogicalResult setPropertiesFromAttr(Properties &prop, ::mlir::Attribute attr, ::llvm::function_ref<::mlir::InFlightDiagnostic()> emitError); static ::mlir::Attribute getPropertiesAsAttr(::mlir::MLIRContext *ctx, const Properties &prop); static llvm::hash_code computePropertiesHash(const Properties &prop); static std::optional getInherentAttr(::mlir::MLIRContext *ctx, const Properties &prop, llvm::StringRef name); static void setInherentAttr(Properties &prop, llvm::StringRef name, mlir::Attribute value); static void populateInherentAttrs(::mlir::MLIRContext *ctx, const Properties &prop, ::mlir::NamedAttrList &attrs); static ::llvm::LogicalResult verifyInherentAttrs(::mlir::OperationName opName, ::mlir::NamedAttrList &attrs, llvm::function_ref<::mlir::InFlightDiagnostic()> emitError); static ::llvm::LogicalResult readProperties(::mlir::DialectBytecodeReader &reader, ::mlir::OperationState &state); void writeProperties(::mlir::DialectBytecodeWriter &writer); ::mlir::IntegerAttr getByteSelAttr() { return ::llvm::cast<::mlir::IntegerAttr>(getProperties().byteSel); } uint32_t getByteSel(); void setByteSelAttr(::mlir::IntegerAttr attr) { getProperties().byteSel = attr; } void setByteSel(uint32_t attrValue); static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::Type res, ::mlir::Value srcA, ::mlir::Value srcB, ::mlir::Value old, ::mlir::IntegerAttr byteSel); static CvtSrFp8F32Op create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::Type res, ::mlir::Value srcA, ::mlir::Value srcB, ::mlir::Value old, ::mlir::IntegerAttr byteSel); static CvtSrFp8F32Op create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::Type res, ::mlir::Value srcA, ::mlir::Value srcB, ::mlir::Value old, ::mlir::IntegerAttr byteSel); static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::Value srcA, ::mlir::Value srcB, ::mlir::Value old, ::mlir::IntegerAttr byteSel); static CvtSrFp8F32Op create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::Value srcA, ::mlir::Value srcB, ::mlir::Value old, ::mlir::IntegerAttr byteSel); static CvtSrFp8F32Op create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::Value srcA, ::mlir::Value srcB, ::mlir::Value old, ::mlir::IntegerAttr byteSel); static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::Type res, ::mlir::Value srcA, ::mlir::Value srcB, ::mlir::Value old, uint32_t byteSel); static CvtSrFp8F32Op create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::Type res, ::mlir::Value srcA, ::mlir::Value srcB, ::mlir::Value old, uint32_t byteSel); static CvtSrFp8F32Op create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::Type res, ::mlir::Value srcA, ::mlir::Value srcB, ::mlir::Value old, uint32_t byteSel); static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::Value srcA, ::mlir::Value srcB, ::mlir::Value old, uint32_t byteSel); static CvtSrFp8F32Op create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::Value srcA, ::mlir::Value srcB, ::mlir::Value old, uint32_t byteSel); static CvtSrFp8F32Op create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::Value srcA, ::mlir::Value srcB, ::mlir::Value old, uint32_t byteSel); static void build(::mlir::OpBuilder &, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, ::llvm::ArrayRef<::mlir::NamedAttribute> attributes = {}); static CvtSrFp8F32Op create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, ::llvm::ArrayRef<::mlir::NamedAttribute> attributes = {}); static CvtSrFp8F32Op create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, ::llvm::ArrayRef<::mlir::NamedAttribute> attributes = {}); static void build(::mlir::OpBuilder &, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, const Properties &properties, ::llvm::ArrayRef<::mlir::NamedAttribute> discardableAttributes = {}); static CvtSrFp8F32Op create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, const Properties &properties, ::llvm::ArrayRef<::mlir::NamedAttribute> discardableAttributes = {}); static CvtSrFp8F32Op create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, const Properties &properties, ::llvm::ArrayRef<::mlir::NamedAttribute> discardableAttributes = {}); ::llvm::LogicalResult verifyInvariantsImpl(); ::llvm::LogicalResult verifyInvariants(); static ::mlir::ParseResult parse(::mlir::OpAsmParser &parser, ::mlir::OperationState &result); void print(::mlir::OpAsmPrinter &_odsPrinter); void getEffects(::llvm::SmallVectorImpl<::mlir::SideEffects::EffectInstance<::mlir::MemoryEffects::Effect>> &effects); private: ::mlir::StringAttr getAttributeNameForIndex(unsigned index) { return getAttributeNameForIndex((*this)->getName(), index); } static ::mlir::StringAttr getAttributeNameForIndex(::mlir::OperationName name, unsigned index) { assert(index < 1 && "invalid attribute index"); assert(name.getStringRef() == getOperationName() && "invalid operation name"); assert(name.isRegistered() && "Operation isn't registered, missing a " "dependent dialect loading?"); return name.getAttributeNames()[index]; } public: }; } // namespace mlir::ROCDL MLIR_DECLARE_EXPLICIT_TYPE_ID(::mlir::ROCDL::CvtSrFp8F32Op) MLIR_DECLARE_EXPLICIT_TYPE_ID(::mlir::ROCDL::detail::CvtSrFp8F32OpGenericAdaptorBase::Properties) namespace mlir::ROCDL { //===----------------------------------------------------------------------===// // ::mlir::ROCDL::DPPUpdateOp declarations //===----------------------------------------------------------------------===// namespace detail { class DPPUpdateOpGenericAdaptorBase { public: struct Properties { using bankMaskTy = ::mlir::IntegerAttr; bankMaskTy bankMask; auto getBankMask() const { auto &propStorage = this->bankMask; return ::llvm::cast<::mlir::IntegerAttr>(propStorage); } void setBankMask(const ::mlir::IntegerAttr &propValue) { this->bankMask = propValue; } using boundCtrlTy = ::mlir::IntegerAttr; boundCtrlTy boundCtrl; auto getBoundCtrl() const { auto &propStorage = this->boundCtrl; return ::llvm::cast<::mlir::IntegerAttr>(propStorage); } void setBoundCtrl(const ::mlir::IntegerAttr &propValue) { this->boundCtrl = propValue; } using dppCtrlTy = ::mlir::IntegerAttr; dppCtrlTy dppCtrl; auto getDppCtrl() const { auto &propStorage = this->dppCtrl; return ::llvm::cast<::mlir::IntegerAttr>(propStorage); } void setDppCtrl(const ::mlir::IntegerAttr &propValue) { this->dppCtrl = propValue; } using rowMaskTy = ::mlir::IntegerAttr; rowMaskTy rowMask; auto getRowMask() const { auto &propStorage = this->rowMask; return ::llvm::cast<::mlir::IntegerAttr>(propStorage); } void setRowMask(const ::mlir::IntegerAttr &propValue) { this->rowMask = propValue; } bool operator==(const Properties &rhs) const { return rhs.bankMask == this->bankMask && rhs.boundCtrl == this->boundCtrl && rhs.dppCtrl == this->dppCtrl && rhs.rowMask == this->rowMask && true; } bool operator!=(const Properties &rhs) const { return !(*this == rhs); } }; protected: ::mlir::DictionaryAttr odsAttrs; ::std::optional<::mlir::OperationName> odsOpName; Properties properties; ::mlir::RegionRange odsRegions; public: DPPUpdateOpGenericAdaptorBase(::mlir::DictionaryAttr attrs, const Properties &properties, ::mlir::RegionRange regions = {}) : odsAttrs(attrs), properties(properties), odsRegions(regions) { if (odsAttrs) odsOpName.emplace("rocdl.update.dpp", odsAttrs.getContext()); } DPPUpdateOpGenericAdaptorBase(DPPUpdateOp op); std::pair getODSOperandIndexAndLength(unsigned index, unsigned odsOperandsSize) { return {index, 1}; } const Properties &getProperties() { return properties; } ::mlir::DictionaryAttr getAttributes() { return odsAttrs; } ::mlir::IntegerAttr getDppCtrlAttr() { auto attr = ::llvm::cast<::mlir::IntegerAttr>(getProperties().dppCtrl); return attr; } uint32_t getDppCtrl(); ::mlir::IntegerAttr getRowMaskAttr() { auto attr = ::llvm::cast<::mlir::IntegerAttr>(getProperties().rowMask); return attr; } uint32_t getRowMask(); ::mlir::IntegerAttr getBankMaskAttr() { auto attr = ::llvm::cast<::mlir::IntegerAttr>(getProperties().bankMask); return attr; } uint32_t getBankMask(); ::mlir::IntegerAttr getBoundCtrlAttr() { auto attr = ::llvm::cast<::mlir::IntegerAttr>(getProperties().boundCtrl); return attr; } bool getBoundCtrl(); }; } // namespace detail template class DPPUpdateOpGenericAdaptor : public detail::DPPUpdateOpGenericAdaptorBase { using ValueT = ::llvm::detail::ValueOfRange; using Base = detail::DPPUpdateOpGenericAdaptorBase; static constexpr int odsIndex_old = 0; static constexpr int odsIndex_src = 1; public: DPPUpdateOpGenericAdaptor(RangeT values, ::mlir::DictionaryAttr attrs, const Properties &properties, ::mlir::RegionRange regions = {}) : Base(attrs, properties, regions), odsOperands(values) {} DPPUpdateOpGenericAdaptor(RangeT values, ::mlir::DictionaryAttr attrs, ::mlir::PropertyRef properties, ::mlir::RegionRange regions = {}) : DPPUpdateOpGenericAdaptor(values, attrs, (properties ? *properties.as() : Properties{}), regions) {} DPPUpdateOpGenericAdaptor(RangeT values, ::mlir::DictionaryAttr attrs = nullptr) : DPPUpdateOpGenericAdaptor(values, attrs, Properties{}, {}) {} DPPUpdateOpGenericAdaptor(RangeT values, const DPPUpdateOpGenericAdaptorBase &base) : Base(base), odsOperands(values) {} template >> DPPUpdateOpGenericAdaptor(RangeT values, LateInst op) : Base(op), odsOperands(values) {} std::pair getODSOperandIndexAndLength(unsigned index) { return Base::getODSOperandIndexAndLength(index, odsOperands.size()); } RangeT getODSOperands(unsigned index) { auto valueRange = getODSOperandIndexAndLength(index); return {std::next(odsOperands.begin(), valueRange.first), std::next(odsOperands.begin(), valueRange.first + valueRange.second)}; } ValueT getOld() { return (*getODSOperands(0).begin()); } ValueT getSrc() { return (*getODSOperands(1).begin()); } RangeT getOperands() { return odsOperands; } private: RangeT odsOperands; }; class DPPUpdateOpAdaptor : public DPPUpdateOpGenericAdaptor<::mlir::ValueRange> { public: using DPPUpdateOpGenericAdaptor::DPPUpdateOpGenericAdaptor; DPPUpdateOpAdaptor(DPPUpdateOp op); ::llvm::LogicalResult verify(::mlir::Location loc); }; class DPPUpdateOp : public ::mlir::Op::Impl, ::mlir::OpTrait::ZeroSuccessors, ::mlir::OpTrait::NOperands<2>::Impl, ::mlir::OpTrait::OpInvariants, ::mlir::BytecodeOpInterface::Trait> { public: using Op::Op; using Op::print; using Adaptor = DPPUpdateOpAdaptor; template using GenericAdaptor = DPPUpdateOpGenericAdaptor; using FoldAdaptor = GenericAdaptor<::llvm::ArrayRef<::mlir::Attribute>>; static constexpr int odsIndex_old = 0; static constexpr int odsIndex_src = 1; using Properties = FoldAdaptor::Properties; static ::llvm::ArrayRef<::llvm::StringRef> getAttributeNames() { static ::llvm::StringRef attrNames[] = {::llvm::StringRef("bankMask"), ::llvm::StringRef("boundCtrl"), ::llvm::StringRef("dppCtrl"), ::llvm::StringRef("rowMask")}; return ::llvm::ArrayRef(attrNames); } ::mlir::StringAttr getBankMaskAttrName() { return getAttributeNameForIndex(0); } static ::mlir::StringAttr getBankMaskAttrName(::mlir::OperationName name) { return getAttributeNameForIndex(name, 0); } ::mlir::StringAttr getBoundCtrlAttrName() { return getAttributeNameForIndex(1); } static ::mlir::StringAttr getBoundCtrlAttrName(::mlir::OperationName name) { return getAttributeNameForIndex(name, 1); } ::mlir::StringAttr getDppCtrlAttrName() { return getAttributeNameForIndex(2); } static ::mlir::StringAttr getDppCtrlAttrName(::mlir::OperationName name) { return getAttributeNameForIndex(name, 2); } ::mlir::StringAttr getRowMaskAttrName() { return getAttributeNameForIndex(3); } static ::mlir::StringAttr getRowMaskAttrName(::mlir::OperationName name) { return getAttributeNameForIndex(name, 3); } static constexpr ::llvm::StringLiteral getOperationName() { return ::llvm::StringLiteral("rocdl.update.dpp"); } std::pair getODSOperandIndexAndLength(unsigned index) { return {index, 1}; } ::mlir::Operation::operand_range getODSOperands(unsigned index) { auto valueRange = getODSOperandIndexAndLength(index); return {std::next(getOperation()->operand_begin(), valueRange.first), std::next(getOperation()->operand_begin(), valueRange.first + valueRange.second)}; } ::mlir::TypedValue<::mlir::Type> getOld() { return ::llvm::cast<::mlir::TypedValue<::mlir::Type>>(*getODSOperands(0).begin()); } ::mlir::TypedValue<::mlir::Type> getSrc() { return ::llvm::cast<::mlir::TypedValue<::mlir::Type>>(*getODSOperands(1).begin()); } ::mlir::OpOperand &getOldMutable() { auto range = getODSOperandIndexAndLength(0); return getOperation()->getOpOperand(range.first); } ::mlir::OpOperand &getSrcMutable() { auto range = getODSOperandIndexAndLength(1); return getOperation()->getOpOperand(range.first); } std::pair getODSResultIndexAndLength(unsigned index) { return {index, 1}; } ::mlir::Operation::result_range getODSResults(unsigned index) { auto valueRange = getODSResultIndexAndLength(index); return {std::next(getOperation()->result_begin(), valueRange.first), std::next(getOperation()->result_begin(), valueRange.first + valueRange.second)}; } ::mlir::TypedValue<::mlir::Type> getRes() { return ::llvm::cast<::mlir::TypedValue<::mlir::Type>>(*getODSResults(0).begin()); } static ::llvm::LogicalResult setPropertiesFromAttr(Properties &prop, ::mlir::Attribute attr, ::llvm::function_ref<::mlir::InFlightDiagnostic()> emitError); static ::mlir::Attribute getPropertiesAsAttr(::mlir::MLIRContext *ctx, const Properties &prop); static llvm::hash_code computePropertiesHash(const Properties &prop); static std::optional getInherentAttr(::mlir::MLIRContext *ctx, const Properties &prop, llvm::StringRef name); static void setInherentAttr(Properties &prop, llvm::StringRef name, mlir::Attribute value); static void populateInherentAttrs(::mlir::MLIRContext *ctx, const Properties &prop, ::mlir::NamedAttrList &attrs); static ::llvm::LogicalResult verifyInherentAttrs(::mlir::OperationName opName, ::mlir::NamedAttrList &attrs, llvm::function_ref<::mlir::InFlightDiagnostic()> emitError); static ::llvm::LogicalResult readProperties(::mlir::DialectBytecodeReader &reader, ::mlir::OperationState &state); void writeProperties(::mlir::DialectBytecodeWriter &writer); ::mlir::IntegerAttr getDppCtrlAttr() { return ::llvm::cast<::mlir::IntegerAttr>(getProperties().dppCtrl); } uint32_t getDppCtrl(); ::mlir::IntegerAttr getRowMaskAttr() { return ::llvm::cast<::mlir::IntegerAttr>(getProperties().rowMask); } uint32_t getRowMask(); ::mlir::IntegerAttr getBankMaskAttr() { return ::llvm::cast<::mlir::IntegerAttr>(getProperties().bankMask); } uint32_t getBankMask(); ::mlir::IntegerAttr getBoundCtrlAttr() { return ::llvm::cast<::mlir::IntegerAttr>(getProperties().boundCtrl); } bool getBoundCtrl(); void setDppCtrlAttr(::mlir::IntegerAttr attr) { getProperties().dppCtrl = attr; } void setDppCtrl(uint32_t attrValue); void setRowMaskAttr(::mlir::IntegerAttr attr) { getProperties().rowMask = attr; } void setRowMask(uint32_t attrValue); void setBankMaskAttr(::mlir::IntegerAttr attr) { getProperties().bankMask = attr; } void setBankMask(uint32_t attrValue); void setBoundCtrlAttr(::mlir::IntegerAttr attr) { getProperties().boundCtrl = attr; } void setBoundCtrl(bool attrValue); static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::Type res, ::mlir::Value old, ::mlir::Value src, ::mlir::IntegerAttr dppCtrl, ::mlir::IntegerAttr rowMask, ::mlir::IntegerAttr bankMask, ::mlir::IntegerAttr boundCtrl); static DPPUpdateOp create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::Type res, ::mlir::Value old, ::mlir::Value src, ::mlir::IntegerAttr dppCtrl, ::mlir::IntegerAttr rowMask, ::mlir::IntegerAttr bankMask, ::mlir::IntegerAttr boundCtrl); static DPPUpdateOp create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::Type res, ::mlir::Value old, ::mlir::Value src, ::mlir::IntegerAttr dppCtrl, ::mlir::IntegerAttr rowMask, ::mlir::IntegerAttr bankMask, ::mlir::IntegerAttr boundCtrl); static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::Value old, ::mlir::Value src, ::mlir::IntegerAttr dppCtrl, ::mlir::IntegerAttr rowMask, ::mlir::IntegerAttr bankMask, ::mlir::IntegerAttr boundCtrl); static DPPUpdateOp create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::Value old, ::mlir::Value src, ::mlir::IntegerAttr dppCtrl, ::mlir::IntegerAttr rowMask, ::mlir::IntegerAttr bankMask, ::mlir::IntegerAttr boundCtrl); static DPPUpdateOp create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::Value old, ::mlir::Value src, ::mlir::IntegerAttr dppCtrl, ::mlir::IntegerAttr rowMask, ::mlir::IntegerAttr bankMask, ::mlir::IntegerAttr boundCtrl); static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::Type res, ::mlir::Value old, ::mlir::Value src, uint32_t dppCtrl, uint32_t rowMask, uint32_t bankMask, bool boundCtrl); static DPPUpdateOp create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::Type res, ::mlir::Value old, ::mlir::Value src, uint32_t dppCtrl, uint32_t rowMask, uint32_t bankMask, bool boundCtrl); static DPPUpdateOp create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::Type res, ::mlir::Value old, ::mlir::Value src, uint32_t dppCtrl, uint32_t rowMask, uint32_t bankMask, bool boundCtrl); static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::Value old, ::mlir::Value src, uint32_t dppCtrl, uint32_t rowMask, uint32_t bankMask, bool boundCtrl); static DPPUpdateOp create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::Value old, ::mlir::Value src, uint32_t dppCtrl, uint32_t rowMask, uint32_t bankMask, bool boundCtrl); static DPPUpdateOp create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::Value old, ::mlir::Value src, uint32_t dppCtrl, uint32_t rowMask, uint32_t bankMask, bool boundCtrl); static void build(::mlir::OpBuilder &, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, ::llvm::ArrayRef<::mlir::NamedAttribute> attributes = {}); static DPPUpdateOp create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, ::llvm::ArrayRef<::mlir::NamedAttribute> attributes = {}); static DPPUpdateOp create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, ::llvm::ArrayRef<::mlir::NamedAttribute> attributes = {}); static void build(::mlir::OpBuilder &, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, const Properties &properties, ::llvm::ArrayRef<::mlir::NamedAttribute> discardableAttributes = {}); static DPPUpdateOp create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, const Properties &properties, ::llvm::ArrayRef<::mlir::NamedAttribute> discardableAttributes = {}); static DPPUpdateOp create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, const Properties &properties, ::llvm::ArrayRef<::mlir::NamedAttribute> discardableAttributes = {}); ::llvm::LogicalResult verifyInvariantsImpl(); ::llvm::LogicalResult verifyInvariants(); static ::mlir::ParseResult parse(::mlir::OpAsmParser &parser, ::mlir::OperationState &result); void print(::mlir::OpAsmPrinter &_odsPrinter); private: ::mlir::StringAttr getAttributeNameForIndex(unsigned index) { return getAttributeNameForIndex((*this)->getName(), index); } static ::mlir::StringAttr getAttributeNameForIndex(::mlir::OperationName name, unsigned index) { assert(index < 4 && "invalid attribute index"); assert(name.getStringRef() == getOperationName() && "invalid operation name"); assert(name.isRegistered() && "Operation isn't registered, missing a " "dependent dialect loading?"); return name.getAttributeNames()[index]; } public: }; } // namespace mlir::ROCDL MLIR_DECLARE_EXPLICIT_TYPE_ID(::mlir::ROCDL::DPPUpdateOp) MLIR_DECLARE_EXPLICIT_TYPE_ID(::mlir::ROCDL::detail::DPPUpdateOpGenericAdaptorBase::Properties) namespace mlir::ROCDL { //===----------------------------------------------------------------------===// // ::mlir::ROCDL::DsAtomicAsyncBarrierArriveOp declarations //===----------------------------------------------------------------------===// namespace detail { class DsAtomicAsyncBarrierArriveOpGenericAdaptorBase { public: struct Properties { using alias_scopesTy = ::mlir::ArrayAttr; alias_scopesTy alias_scopes; auto getAliasScopes() const { auto &propStorage = this->alias_scopes; return ::llvm::dyn_cast_or_null<::mlir::ArrayAttr>(propStorage); } void setAliasScopes(const ::mlir::ArrayAttr &propValue) { this->alias_scopes = propValue; } using noalias_scopesTy = ::mlir::ArrayAttr; noalias_scopesTy noalias_scopes; auto getNoaliasScopes() const { auto &propStorage = this->noalias_scopes; return ::llvm::dyn_cast_or_null<::mlir::ArrayAttr>(propStorage); } void setNoaliasScopes(const ::mlir::ArrayAttr &propValue) { this->noalias_scopes = propValue; } using tbaaTy = ::mlir::ArrayAttr; tbaaTy tbaa; auto getTbaa() const { auto &propStorage = this->tbaa; return ::llvm::dyn_cast_or_null<::mlir::ArrayAttr>(propStorage); } void setTbaa(const ::mlir::ArrayAttr &propValue) { this->tbaa = propValue; } bool operator==(const Properties &rhs) const { return rhs.alias_scopes == this->alias_scopes && rhs.noalias_scopes == this->noalias_scopes && rhs.tbaa == this->tbaa && true; } bool operator!=(const Properties &rhs) const { return !(*this == rhs); } }; protected: ::mlir::DictionaryAttr odsAttrs; ::std::optional<::mlir::OperationName> odsOpName; Properties properties; ::mlir::RegionRange odsRegions; public: DsAtomicAsyncBarrierArriveOpGenericAdaptorBase(::mlir::DictionaryAttr attrs, const Properties &properties, ::mlir::RegionRange regions = {}) : odsAttrs(attrs), properties(properties), odsRegions(regions) { if (odsAttrs) odsOpName.emplace("rocdl.ds.atomic.async.barrier.arrive.b64", odsAttrs.getContext()); } DsAtomicAsyncBarrierArriveOpGenericAdaptorBase(DsAtomicAsyncBarrierArriveOp op); std::pair getODSOperandIndexAndLength(unsigned index, unsigned odsOperandsSize) { return {index, 1}; } const Properties &getProperties() { return properties; } ::mlir::DictionaryAttr getAttributes() { return odsAttrs; } ::mlir::ArrayAttr getAliasScopesAttr() { auto attr = ::llvm::dyn_cast_or_null<::mlir::ArrayAttr>(getProperties().alias_scopes); return attr; } ::std::optional< ::mlir::ArrayAttr > getAliasScopes(); ::mlir::ArrayAttr getNoaliasScopesAttr() { auto attr = ::llvm::dyn_cast_or_null<::mlir::ArrayAttr>(getProperties().noalias_scopes); return attr; } ::std::optional< ::mlir::ArrayAttr > getNoaliasScopes(); ::mlir::ArrayAttr getTbaaAttr() { auto attr = ::llvm::dyn_cast_or_null<::mlir::ArrayAttr>(getProperties().tbaa); return attr; } ::std::optional< ::mlir::ArrayAttr > getTbaa(); }; } // namespace detail template class DsAtomicAsyncBarrierArriveOpGenericAdaptor : public detail::DsAtomicAsyncBarrierArriveOpGenericAdaptorBase { using ValueT = ::llvm::detail::ValueOfRange; using Base = detail::DsAtomicAsyncBarrierArriveOpGenericAdaptorBase; static constexpr int odsIndex_barrierPtr = 0; public: DsAtomicAsyncBarrierArriveOpGenericAdaptor(RangeT values, ::mlir::DictionaryAttr attrs, const Properties &properties, ::mlir::RegionRange regions = {}) : Base(attrs, properties, regions), odsOperands(values) {} DsAtomicAsyncBarrierArriveOpGenericAdaptor(RangeT values, ::mlir::DictionaryAttr attrs, ::mlir::PropertyRef properties, ::mlir::RegionRange regions = {}) : DsAtomicAsyncBarrierArriveOpGenericAdaptor(values, attrs, (properties ? *properties.as() : Properties{}), regions) {} DsAtomicAsyncBarrierArriveOpGenericAdaptor(RangeT values, ::mlir::DictionaryAttr attrs = nullptr) : DsAtomicAsyncBarrierArriveOpGenericAdaptor(values, attrs, Properties{}, {}) {} DsAtomicAsyncBarrierArriveOpGenericAdaptor(RangeT values, const DsAtomicAsyncBarrierArriveOpGenericAdaptorBase &base) : Base(base), odsOperands(values) {} template >> DsAtomicAsyncBarrierArriveOpGenericAdaptor(RangeT values, LateInst op) : Base(op), odsOperands(values) {} std::pair getODSOperandIndexAndLength(unsigned index) { return Base::getODSOperandIndexAndLength(index, odsOperands.size()); } RangeT getODSOperands(unsigned index) { auto valueRange = getODSOperandIndexAndLength(index); return {std::next(odsOperands.begin(), valueRange.first), std::next(odsOperands.begin(), valueRange.first + valueRange.second)}; } ValueT getBarrierPtr() { return (*getODSOperands(0).begin()); } RangeT getOperands() { return odsOperands; } private: RangeT odsOperands; }; class DsAtomicAsyncBarrierArriveOpAdaptor : public DsAtomicAsyncBarrierArriveOpGenericAdaptor<::mlir::ValueRange> { public: using DsAtomicAsyncBarrierArriveOpGenericAdaptor::DsAtomicAsyncBarrierArriveOpGenericAdaptor; DsAtomicAsyncBarrierArriveOpAdaptor(DsAtomicAsyncBarrierArriveOp op); ::llvm::LogicalResult verify(::mlir::Location loc); }; class DsAtomicAsyncBarrierArriveOp : public ::mlir::Op { public: using Op::Op; using Op::print; using Adaptor = DsAtomicAsyncBarrierArriveOpAdaptor; template using GenericAdaptor = DsAtomicAsyncBarrierArriveOpGenericAdaptor; using FoldAdaptor = GenericAdaptor<::llvm::ArrayRef<::mlir::Attribute>>; static constexpr int odsIndex_barrierPtr = 0; using Properties = FoldAdaptor::Properties; using ::mlir::LLVM::AliasAnalysisOpInterface::Trait::getAliasScopesOrNull; using ::mlir::LLVM::AliasAnalysisOpInterface::Trait::setAliasScopes; using ::mlir::LLVM::AliasAnalysisOpInterface::Trait::getNoAliasScopesOrNull; using ::mlir::LLVM::AliasAnalysisOpInterface::Trait::setNoAliasScopes; using ::mlir::LLVM::AliasAnalysisOpInterface::Trait::getTBAATagsOrNull; using ::mlir::LLVM::AliasAnalysisOpInterface::Trait::setTBAATags; static ::llvm::ArrayRef<::llvm::StringRef> getAttributeNames() { static ::llvm::StringRef attrNames[] = {::llvm::StringRef("alias_scopes"), ::llvm::StringRef("noalias_scopes"), ::llvm::StringRef("tbaa")}; return ::llvm::ArrayRef(attrNames); } ::mlir::StringAttr getAliasScopesAttrName() { return getAttributeNameForIndex(0); } static ::mlir::StringAttr getAliasScopesAttrName(::mlir::OperationName name) { return getAttributeNameForIndex(name, 0); } ::mlir::StringAttr getNoaliasScopesAttrName() { return getAttributeNameForIndex(1); } static ::mlir::StringAttr getNoaliasScopesAttrName(::mlir::OperationName name) { return getAttributeNameForIndex(name, 1); } ::mlir::StringAttr getTbaaAttrName() { return getAttributeNameForIndex(2); } static ::mlir::StringAttr getTbaaAttrName(::mlir::OperationName name) { return getAttributeNameForIndex(name, 2); } static constexpr ::llvm::StringLiteral getOperationName() { return ::llvm::StringLiteral("rocdl.ds.atomic.async.barrier.arrive.b64"); } std::pair getODSOperandIndexAndLength(unsigned index) { return {index, 1}; } ::mlir::Operation::operand_range getODSOperands(unsigned index) { auto valueRange = getODSOperandIndexAndLength(index); return {std::next(getOperation()->operand_begin(), valueRange.first), std::next(getOperation()->operand_begin(), valueRange.first + valueRange.second)}; } ::mlir::TypedValue<::mlir::LLVM::LLVMPointerType> getBarrierPtr() { return ::llvm::cast<::mlir::TypedValue<::mlir::LLVM::LLVMPointerType>>(*getODSOperands(0).begin()); } ::mlir::OpOperand &getBarrierPtrMutable() { auto range = getODSOperandIndexAndLength(0); return getOperation()->getOpOperand(range.first); } std::pair getODSResultIndexAndLength(unsigned index) { return {index, 1}; } ::mlir::Operation::result_range getODSResults(unsigned index) { auto valueRange = getODSResultIndexAndLength(index); return {std::next(getOperation()->result_begin(), valueRange.first), std::next(getOperation()->result_begin(), valueRange.first + valueRange.second)}; } static ::llvm::LogicalResult setPropertiesFromAttr(Properties &prop, ::mlir::Attribute attr, ::llvm::function_ref<::mlir::InFlightDiagnostic()> emitError); static ::mlir::Attribute getPropertiesAsAttr(::mlir::MLIRContext *ctx, const Properties &prop); static llvm::hash_code computePropertiesHash(const Properties &prop); static std::optional getInherentAttr(::mlir::MLIRContext *ctx, const Properties &prop, llvm::StringRef name); static void setInherentAttr(Properties &prop, llvm::StringRef name, mlir::Attribute value); static void populateInherentAttrs(::mlir::MLIRContext *ctx, const Properties &prop, ::mlir::NamedAttrList &attrs); static ::llvm::LogicalResult verifyInherentAttrs(::mlir::OperationName opName, ::mlir::NamedAttrList &attrs, llvm::function_ref<::mlir::InFlightDiagnostic()> emitError); static ::llvm::LogicalResult readProperties(::mlir::DialectBytecodeReader &reader, ::mlir::OperationState &state); void writeProperties(::mlir::DialectBytecodeWriter &writer); ::mlir::ArrayAttr getAliasScopesAttr() { return ::llvm::dyn_cast_or_null<::mlir::ArrayAttr>(getProperties().alias_scopes); } ::std::optional< ::mlir::ArrayAttr > getAliasScopes(); ::mlir::ArrayAttr getNoaliasScopesAttr() { return ::llvm::dyn_cast_or_null<::mlir::ArrayAttr>(getProperties().noalias_scopes); } ::std::optional< ::mlir::ArrayAttr > getNoaliasScopes(); ::mlir::ArrayAttr getTbaaAttr() { return ::llvm::dyn_cast_or_null<::mlir::ArrayAttr>(getProperties().tbaa); } ::std::optional< ::mlir::ArrayAttr > getTbaa(); void setAliasScopesAttr(::mlir::ArrayAttr attr) { getProperties().alias_scopes = attr; } void setNoaliasScopesAttr(::mlir::ArrayAttr attr) { getProperties().noalias_scopes = attr; } void setTbaaAttr(::mlir::ArrayAttr attr) { getProperties().tbaa = attr; } ::mlir::Attribute removeAliasScopesAttr() { auto attr = getProperties().alias_scopes; getProperties().alias_scopes = {}; return attr; } ::mlir::Attribute removeNoaliasScopesAttr() { auto attr = getProperties().noalias_scopes; getProperties().noalias_scopes = {}; return attr; } ::mlir::Attribute removeTbaaAttr() { auto attr = getProperties().tbaa; getProperties().tbaa = {}; return attr; } static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::Value barrierPtr, /*optional*/::mlir::ArrayAttr alias_scopes, /*optional*/::mlir::ArrayAttr noalias_scopes, /*optional*/::mlir::ArrayAttr tbaa); static DsAtomicAsyncBarrierArriveOp create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::Value barrierPtr, /*optional*/::mlir::ArrayAttr alias_scopes, /*optional*/::mlir::ArrayAttr noalias_scopes, /*optional*/::mlir::ArrayAttr tbaa); static DsAtomicAsyncBarrierArriveOp create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::Value barrierPtr, /*optional*/::mlir::ArrayAttr alias_scopes, /*optional*/::mlir::ArrayAttr noalias_scopes, /*optional*/::mlir::ArrayAttr tbaa); static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::Value barrierPtr, /*optional*/::mlir::ArrayAttr alias_scopes, /*optional*/::mlir::ArrayAttr noalias_scopes, /*optional*/::mlir::ArrayAttr tbaa); static DsAtomicAsyncBarrierArriveOp create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::Value barrierPtr, /*optional*/::mlir::ArrayAttr alias_scopes, /*optional*/::mlir::ArrayAttr noalias_scopes, /*optional*/::mlir::ArrayAttr tbaa); static DsAtomicAsyncBarrierArriveOp create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::Value barrierPtr, /*optional*/::mlir::ArrayAttr alias_scopes, /*optional*/::mlir::ArrayAttr noalias_scopes, /*optional*/::mlir::ArrayAttr tbaa); static void build(::mlir::OpBuilder &, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, ::llvm::ArrayRef<::mlir::NamedAttribute> attributes = {}); static DsAtomicAsyncBarrierArriveOp create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, ::llvm::ArrayRef<::mlir::NamedAttribute> attributes = {}); static DsAtomicAsyncBarrierArriveOp create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, ::llvm::ArrayRef<::mlir::NamedAttribute> attributes = {}); static void build(::mlir::OpBuilder &, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, const Properties &properties, ::llvm::ArrayRef<::mlir::NamedAttribute> discardableAttributes = {}); static DsAtomicAsyncBarrierArriveOp create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, const Properties &properties, ::llvm::ArrayRef<::mlir::NamedAttribute> discardableAttributes = {}); static DsAtomicAsyncBarrierArriveOp create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, const Properties &properties, ::llvm::ArrayRef<::mlir::NamedAttribute> discardableAttributes = {}); ::llvm::LogicalResult verifyInvariantsImpl(); ::llvm::LogicalResult verifyInvariants(); ::llvm::SmallVector<::mlir::Value> getAccessedOperands(); static ::mlir::ParseResult parse(::mlir::OpAsmParser &parser, ::mlir::OperationState &result); void print(::mlir::OpAsmPrinter &_odsPrinter); void getEffects(::llvm::SmallVectorImpl<::mlir::SideEffects::EffectInstance<::mlir::MemoryEffects::Effect>> &effects); private: ::mlir::StringAttr getAttributeNameForIndex(unsigned index) { return getAttributeNameForIndex((*this)->getName(), index); } static ::mlir::StringAttr getAttributeNameForIndex(::mlir::OperationName name, unsigned index) { assert(index < 3 && "invalid attribute index"); assert(name.getStringRef() == getOperationName() && "invalid operation name"); assert(name.isRegistered() && "Operation isn't registered, missing a " "dependent dialect loading?"); return name.getAttributeNames()[index]; } public: }; } // namespace mlir::ROCDL MLIR_DECLARE_EXPLICIT_TYPE_ID(::mlir::ROCDL::DsAtomicAsyncBarrierArriveOp) MLIR_DECLARE_EXPLICIT_TYPE_ID(::mlir::ROCDL::detail::DsAtomicAsyncBarrierArriveOpGenericAdaptorBase::Properties) namespace mlir::ROCDL { //===----------------------------------------------------------------------===// // ::mlir::ROCDL::DsAtomicBarrierArriveRtnOp declarations //===----------------------------------------------------------------------===// namespace detail { class DsAtomicBarrierArriveRtnOpGenericAdaptorBase { public: struct Properties { using alias_scopesTy = ::mlir::ArrayAttr; alias_scopesTy alias_scopes; auto getAliasScopes() const { auto &propStorage = this->alias_scopes; return ::llvm::dyn_cast_or_null<::mlir::ArrayAttr>(propStorage); } void setAliasScopes(const ::mlir::ArrayAttr &propValue) { this->alias_scopes = propValue; } using noalias_scopesTy = ::mlir::ArrayAttr; noalias_scopesTy noalias_scopes; auto getNoaliasScopes() const { auto &propStorage = this->noalias_scopes; return ::llvm::dyn_cast_or_null<::mlir::ArrayAttr>(propStorage); } void setNoaliasScopes(const ::mlir::ArrayAttr &propValue) { this->noalias_scopes = propValue; } using tbaaTy = ::mlir::ArrayAttr; tbaaTy tbaa; auto getTbaa() const { auto &propStorage = this->tbaa; return ::llvm::dyn_cast_or_null<::mlir::ArrayAttr>(propStorage); } void setTbaa(const ::mlir::ArrayAttr &propValue) { this->tbaa = propValue; } bool operator==(const Properties &rhs) const { return rhs.alias_scopes == this->alias_scopes && rhs.noalias_scopes == this->noalias_scopes && rhs.tbaa == this->tbaa && true; } bool operator!=(const Properties &rhs) const { return !(*this == rhs); } }; protected: ::mlir::DictionaryAttr odsAttrs; ::std::optional<::mlir::OperationName> odsOpName; Properties properties; ::mlir::RegionRange odsRegions; public: DsAtomicBarrierArriveRtnOpGenericAdaptorBase(::mlir::DictionaryAttr attrs, const Properties &properties, ::mlir::RegionRange regions = {}) : odsAttrs(attrs), properties(properties), odsRegions(regions) { if (odsAttrs) odsOpName.emplace("rocdl.ds.atomic.barrier.arrive.rtn.b64", odsAttrs.getContext()); } DsAtomicBarrierArriveRtnOpGenericAdaptorBase(DsAtomicBarrierArriveRtnOp op); std::pair getODSOperandIndexAndLength(unsigned index, unsigned odsOperandsSize) { return {index, 1}; } const Properties &getProperties() { return properties; } ::mlir::DictionaryAttr getAttributes() { return odsAttrs; } ::mlir::ArrayAttr getAliasScopesAttr() { auto attr = ::llvm::dyn_cast_or_null<::mlir::ArrayAttr>(getProperties().alias_scopes); return attr; } ::std::optional< ::mlir::ArrayAttr > getAliasScopes(); ::mlir::ArrayAttr getNoaliasScopesAttr() { auto attr = ::llvm::dyn_cast_or_null<::mlir::ArrayAttr>(getProperties().noalias_scopes); return attr; } ::std::optional< ::mlir::ArrayAttr > getNoaliasScopes(); ::mlir::ArrayAttr getTbaaAttr() { auto attr = ::llvm::dyn_cast_or_null<::mlir::ArrayAttr>(getProperties().tbaa); return attr; } ::std::optional< ::mlir::ArrayAttr > getTbaa(); }; } // namespace detail template class DsAtomicBarrierArriveRtnOpGenericAdaptor : public detail::DsAtomicBarrierArriveRtnOpGenericAdaptorBase { using ValueT = ::llvm::detail::ValueOfRange; using Base = detail::DsAtomicBarrierArriveRtnOpGenericAdaptorBase; static constexpr int odsIndex_barrierPtr = 0; static constexpr int odsIndex_val = 1; public: DsAtomicBarrierArriveRtnOpGenericAdaptor(RangeT values, ::mlir::DictionaryAttr attrs, const Properties &properties, ::mlir::RegionRange regions = {}) : Base(attrs, properties, regions), odsOperands(values) {} DsAtomicBarrierArriveRtnOpGenericAdaptor(RangeT values, ::mlir::DictionaryAttr attrs, ::mlir::PropertyRef properties, ::mlir::RegionRange regions = {}) : DsAtomicBarrierArriveRtnOpGenericAdaptor(values, attrs, (properties ? *properties.as() : Properties{}), regions) {} DsAtomicBarrierArriveRtnOpGenericAdaptor(RangeT values, ::mlir::DictionaryAttr attrs = nullptr) : DsAtomicBarrierArriveRtnOpGenericAdaptor(values, attrs, Properties{}, {}) {} DsAtomicBarrierArriveRtnOpGenericAdaptor(RangeT values, const DsAtomicBarrierArriveRtnOpGenericAdaptorBase &base) : Base(base), odsOperands(values) {} template >> DsAtomicBarrierArriveRtnOpGenericAdaptor(RangeT values, LateInst op) : Base(op), odsOperands(values) {} std::pair getODSOperandIndexAndLength(unsigned index) { return Base::getODSOperandIndexAndLength(index, odsOperands.size()); } RangeT getODSOperands(unsigned index) { auto valueRange = getODSOperandIndexAndLength(index); return {std::next(odsOperands.begin(), valueRange.first), std::next(odsOperands.begin(), valueRange.first + valueRange.second)}; } ValueT getBarrierPtr() { return (*getODSOperands(0).begin()); } ValueT getVal() { return (*getODSOperands(1).begin()); } RangeT getOperands() { return odsOperands; } private: RangeT odsOperands; }; class DsAtomicBarrierArriveRtnOpAdaptor : public DsAtomicBarrierArriveRtnOpGenericAdaptor<::mlir::ValueRange> { public: using DsAtomicBarrierArriveRtnOpGenericAdaptor::DsAtomicBarrierArriveRtnOpGenericAdaptor; DsAtomicBarrierArriveRtnOpAdaptor(DsAtomicBarrierArriveRtnOp op); ::llvm::LogicalResult verify(::mlir::Location loc); }; class DsAtomicBarrierArriveRtnOp : public ::mlir::Op::Impl, ::mlir::OpTrait::ZeroSuccessors, ::mlir::OpTrait::NOperands<2>::Impl, ::mlir::OpTrait::OpInvariants, ::mlir::BytecodeOpInterface::Trait, ::mlir::LLVM::AliasAnalysisOpInterface::Trait, ::mlir::MemoryEffectOpInterface::Trait> { public: using Op::Op; using Op::print; using Adaptor = DsAtomicBarrierArriveRtnOpAdaptor; template using GenericAdaptor = DsAtomicBarrierArriveRtnOpGenericAdaptor; using FoldAdaptor = GenericAdaptor<::llvm::ArrayRef<::mlir::Attribute>>; static constexpr int odsIndex_barrierPtr = 0; static constexpr int odsIndex_val = 1; using Properties = FoldAdaptor::Properties; using ::mlir::LLVM::AliasAnalysisOpInterface::Trait::getAliasScopesOrNull; using ::mlir::LLVM::AliasAnalysisOpInterface::Trait::setAliasScopes; using ::mlir::LLVM::AliasAnalysisOpInterface::Trait::getNoAliasScopesOrNull; using ::mlir::LLVM::AliasAnalysisOpInterface::Trait::setNoAliasScopes; using ::mlir::LLVM::AliasAnalysisOpInterface::Trait::getTBAATagsOrNull; using ::mlir::LLVM::AliasAnalysisOpInterface::Trait::setTBAATags; static ::llvm::ArrayRef<::llvm::StringRef> getAttributeNames() { static ::llvm::StringRef attrNames[] = {::llvm::StringRef("alias_scopes"), ::llvm::StringRef("noalias_scopes"), ::llvm::StringRef("tbaa")}; return ::llvm::ArrayRef(attrNames); } ::mlir::StringAttr getAliasScopesAttrName() { return getAttributeNameForIndex(0); } static ::mlir::StringAttr getAliasScopesAttrName(::mlir::OperationName name) { return getAttributeNameForIndex(name, 0); } ::mlir::StringAttr getNoaliasScopesAttrName() { return getAttributeNameForIndex(1); } static ::mlir::StringAttr getNoaliasScopesAttrName(::mlir::OperationName name) { return getAttributeNameForIndex(name, 1); } ::mlir::StringAttr getTbaaAttrName() { return getAttributeNameForIndex(2); } static ::mlir::StringAttr getTbaaAttrName(::mlir::OperationName name) { return getAttributeNameForIndex(name, 2); } static constexpr ::llvm::StringLiteral getOperationName() { return ::llvm::StringLiteral("rocdl.ds.atomic.barrier.arrive.rtn.b64"); } std::pair getODSOperandIndexAndLength(unsigned index) { return {index, 1}; } ::mlir::Operation::operand_range getODSOperands(unsigned index) { auto valueRange = getODSOperandIndexAndLength(index); return {std::next(getOperation()->operand_begin(), valueRange.first), std::next(getOperation()->operand_begin(), valueRange.first + valueRange.second)}; } ::mlir::TypedValue<::mlir::LLVM::LLVMPointerType> getBarrierPtr() { return ::llvm::cast<::mlir::TypedValue<::mlir::LLVM::LLVMPointerType>>(*getODSOperands(0).begin()); } ::mlir::TypedValue<::mlir::IntegerType> getVal() { return ::llvm::cast<::mlir::TypedValue<::mlir::IntegerType>>(*getODSOperands(1).begin()); } ::mlir::OpOperand &getBarrierPtrMutable() { auto range = getODSOperandIndexAndLength(0); return getOperation()->getOpOperand(range.first); } ::mlir::OpOperand &getValMutable() { auto range = getODSOperandIndexAndLength(1); return getOperation()->getOpOperand(range.first); } std::pair getODSResultIndexAndLength(unsigned index) { return {index, 1}; } ::mlir::Operation::result_range getODSResults(unsigned index) { auto valueRange = getODSResultIndexAndLength(index); return {std::next(getOperation()->result_begin(), valueRange.first), std::next(getOperation()->result_begin(), valueRange.first + valueRange.second)}; } ::mlir::TypedValue<::mlir::IntegerType> getRes() { return ::llvm::cast<::mlir::TypedValue<::mlir::IntegerType>>(*getODSResults(0).begin()); } static ::llvm::LogicalResult setPropertiesFromAttr(Properties &prop, ::mlir::Attribute attr, ::llvm::function_ref<::mlir::InFlightDiagnostic()> emitError); static ::mlir::Attribute getPropertiesAsAttr(::mlir::MLIRContext *ctx, const Properties &prop); static llvm::hash_code computePropertiesHash(const Properties &prop); static std::optional getInherentAttr(::mlir::MLIRContext *ctx, const Properties &prop, llvm::StringRef name); static void setInherentAttr(Properties &prop, llvm::StringRef name, mlir::Attribute value); static void populateInherentAttrs(::mlir::MLIRContext *ctx, const Properties &prop, ::mlir::NamedAttrList &attrs); static ::llvm::LogicalResult verifyInherentAttrs(::mlir::OperationName opName, ::mlir::NamedAttrList &attrs, llvm::function_ref<::mlir::InFlightDiagnostic()> emitError); static ::llvm::LogicalResult readProperties(::mlir::DialectBytecodeReader &reader, ::mlir::OperationState &state); void writeProperties(::mlir::DialectBytecodeWriter &writer); ::mlir::ArrayAttr getAliasScopesAttr() { return ::llvm::dyn_cast_or_null<::mlir::ArrayAttr>(getProperties().alias_scopes); } ::std::optional< ::mlir::ArrayAttr > getAliasScopes(); ::mlir::ArrayAttr getNoaliasScopesAttr() { return ::llvm::dyn_cast_or_null<::mlir::ArrayAttr>(getProperties().noalias_scopes); } ::std::optional< ::mlir::ArrayAttr > getNoaliasScopes(); ::mlir::ArrayAttr getTbaaAttr() { return ::llvm::dyn_cast_or_null<::mlir::ArrayAttr>(getProperties().tbaa); } ::std::optional< ::mlir::ArrayAttr > getTbaa(); void setAliasScopesAttr(::mlir::ArrayAttr attr) { getProperties().alias_scopes = attr; } void setNoaliasScopesAttr(::mlir::ArrayAttr attr) { getProperties().noalias_scopes = attr; } void setTbaaAttr(::mlir::ArrayAttr attr) { getProperties().tbaa = attr; } ::mlir::Attribute removeAliasScopesAttr() { auto attr = getProperties().alias_scopes; getProperties().alias_scopes = {}; return attr; } ::mlir::Attribute removeNoaliasScopesAttr() { auto attr = getProperties().noalias_scopes; getProperties().noalias_scopes = {}; return attr; } ::mlir::Attribute removeTbaaAttr() { auto attr = getProperties().tbaa; getProperties().tbaa = {}; return attr; } static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::Type res, ::mlir::Value barrierPtr, ::mlir::Value val, /*optional*/::mlir::ArrayAttr alias_scopes, /*optional*/::mlir::ArrayAttr noalias_scopes, /*optional*/::mlir::ArrayAttr tbaa); static DsAtomicBarrierArriveRtnOp create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::Type res, ::mlir::Value barrierPtr, ::mlir::Value val, /*optional*/::mlir::ArrayAttr alias_scopes, /*optional*/::mlir::ArrayAttr noalias_scopes, /*optional*/::mlir::ArrayAttr tbaa); static DsAtomicBarrierArriveRtnOp create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::Type res, ::mlir::Value barrierPtr, ::mlir::Value val, /*optional*/::mlir::ArrayAttr alias_scopes, /*optional*/::mlir::ArrayAttr noalias_scopes, /*optional*/::mlir::ArrayAttr tbaa); static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::Value barrierPtr, ::mlir::Value val, /*optional*/::mlir::ArrayAttr alias_scopes, /*optional*/::mlir::ArrayAttr noalias_scopes, /*optional*/::mlir::ArrayAttr tbaa); static DsAtomicBarrierArriveRtnOp create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::Value barrierPtr, ::mlir::Value val, /*optional*/::mlir::ArrayAttr alias_scopes, /*optional*/::mlir::ArrayAttr noalias_scopes, /*optional*/::mlir::ArrayAttr tbaa); static DsAtomicBarrierArriveRtnOp create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::Value barrierPtr, ::mlir::Value val, /*optional*/::mlir::ArrayAttr alias_scopes, /*optional*/::mlir::ArrayAttr noalias_scopes, /*optional*/::mlir::ArrayAttr tbaa); static void build(::mlir::OpBuilder &, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, ::llvm::ArrayRef<::mlir::NamedAttribute> attributes = {}); static DsAtomicBarrierArriveRtnOp create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, ::llvm::ArrayRef<::mlir::NamedAttribute> attributes = {}); static DsAtomicBarrierArriveRtnOp create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, ::llvm::ArrayRef<::mlir::NamedAttribute> attributes = {}); static void build(::mlir::OpBuilder &, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, const Properties &properties, ::llvm::ArrayRef<::mlir::NamedAttribute> discardableAttributes = {}); static DsAtomicBarrierArriveRtnOp create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, const Properties &properties, ::llvm::ArrayRef<::mlir::NamedAttribute> discardableAttributes = {}); static DsAtomicBarrierArriveRtnOp create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, const Properties &properties, ::llvm::ArrayRef<::mlir::NamedAttribute> discardableAttributes = {}); ::llvm::LogicalResult verifyInvariantsImpl(); ::llvm::LogicalResult verifyInvariants(); ::llvm::SmallVector<::mlir::Value> getAccessedOperands(); static ::mlir::ParseResult parse(::mlir::OpAsmParser &parser, ::mlir::OperationState &result); void print(::mlir::OpAsmPrinter &_odsPrinter); void getEffects(::llvm::SmallVectorImpl<::mlir::SideEffects::EffectInstance<::mlir::MemoryEffects::Effect>> &effects); private: ::mlir::StringAttr getAttributeNameForIndex(unsigned index) { return getAttributeNameForIndex((*this)->getName(), index); } static ::mlir::StringAttr getAttributeNameForIndex(::mlir::OperationName name, unsigned index) { assert(index < 3 && "invalid attribute index"); assert(name.getStringRef() == getOperationName() && "invalid operation name"); assert(name.isRegistered() && "Operation isn't registered, missing a " "dependent dialect loading?"); return name.getAttributeNames()[index]; } public: }; } // namespace mlir::ROCDL MLIR_DECLARE_EXPLICIT_TYPE_ID(::mlir::ROCDL::DsAtomicBarrierArriveRtnOp) MLIR_DECLARE_EXPLICIT_TYPE_ID(::mlir::ROCDL::detail::DsAtomicBarrierArriveRtnOpGenericAdaptorBase::Properties) namespace mlir::ROCDL { //===----------------------------------------------------------------------===// // ::mlir::ROCDL::DsBpermuteOp declarations //===----------------------------------------------------------------------===// namespace detail { class DsBpermuteOpGenericAdaptorBase { public: using Properties = ::mlir::EmptyProperties; protected: ::mlir::DictionaryAttr odsAttrs; ::std::optional<::mlir::OperationName> odsOpName; Properties properties; ::mlir::RegionRange odsRegions; public: DsBpermuteOpGenericAdaptorBase(::mlir::DictionaryAttr attrs, const Properties &properties, ::mlir::RegionRange regions = {}) : odsAttrs(attrs), properties(properties), odsRegions(regions) { if (odsAttrs) odsOpName.emplace("rocdl.ds_bpermute", odsAttrs.getContext()); } DsBpermuteOpGenericAdaptorBase(DsBpermuteOp op); std::pair getODSOperandIndexAndLength(unsigned index, unsigned odsOperandsSize) { return {index, 1}; } const Properties &getProperties() { return properties; } ::mlir::DictionaryAttr getAttributes() { return odsAttrs; } }; } // namespace detail template class DsBpermuteOpGenericAdaptor : public detail::DsBpermuteOpGenericAdaptorBase { using ValueT = ::llvm::detail::ValueOfRange; using Base = detail::DsBpermuteOpGenericAdaptorBase; static constexpr int odsIndex_index = 0; static constexpr int odsIndex_src = 1; public: DsBpermuteOpGenericAdaptor(RangeT values, ::mlir::DictionaryAttr attrs, const Properties &properties, ::mlir::RegionRange regions = {}) : Base(attrs, properties, regions), odsOperands(values) {} DsBpermuteOpGenericAdaptor(RangeT values, ::mlir::DictionaryAttr attrs, ::mlir::PropertyRef properties, ::mlir::RegionRange regions = {}) : DsBpermuteOpGenericAdaptor(values, attrs, (properties ? *properties.as() : Properties{}), regions) {} DsBpermuteOpGenericAdaptor(RangeT values, ::mlir::DictionaryAttr attrs = nullptr) : DsBpermuteOpGenericAdaptor(values, attrs, Properties{}, {}) {} DsBpermuteOpGenericAdaptor(RangeT values, const DsBpermuteOpGenericAdaptorBase &base) : Base(base), odsOperands(values) {} template >> DsBpermuteOpGenericAdaptor(RangeT values, LateInst op) : Base(op), odsOperands(values) {} std::pair getODSOperandIndexAndLength(unsigned index) { return Base::getODSOperandIndexAndLength(index, odsOperands.size()); } RangeT getODSOperands(unsigned index) { auto valueRange = getODSOperandIndexAndLength(index); return {std::next(odsOperands.begin(), valueRange.first), std::next(odsOperands.begin(), valueRange.first + valueRange.second)}; } ValueT getIndex() { return (*getODSOperands(0).begin()); } ValueT getSrc() { return (*getODSOperands(1).begin()); } RangeT getOperands() { return odsOperands; } private: RangeT odsOperands; }; class DsBpermuteOpAdaptor : public DsBpermuteOpGenericAdaptor<::mlir::ValueRange> { public: using DsBpermuteOpGenericAdaptor::DsBpermuteOpGenericAdaptor; DsBpermuteOpAdaptor(DsBpermuteOp op); ::llvm::LogicalResult verify(::mlir::Location loc); }; class DsBpermuteOp : public ::mlir::Op::Impl, ::mlir::OpTrait::ZeroSuccessors, ::mlir::OpTrait::NOperands<2>::Impl, ::mlir::OpTrait::OpInvariants> { public: using Op::Op; using Op::print; using Adaptor = DsBpermuteOpAdaptor; template using GenericAdaptor = DsBpermuteOpGenericAdaptor; using FoldAdaptor = GenericAdaptor<::llvm::ArrayRef<::mlir::Attribute>>; static constexpr int odsIndex_index = 0; static constexpr int odsIndex_src = 1; using Properties = FoldAdaptor::Properties; static ::llvm::ArrayRef<::llvm::StringRef> getAttributeNames() { return {}; } static constexpr ::llvm::StringLiteral getOperationName() { return ::llvm::StringLiteral("rocdl.ds_bpermute"); } std::pair getODSOperandIndexAndLength(unsigned index) { return {index, 1}; } ::mlir::Operation::operand_range getODSOperands(unsigned index) { auto valueRange = getODSOperandIndexAndLength(index); return {std::next(getOperation()->operand_begin(), valueRange.first), std::next(getOperation()->operand_begin(), valueRange.first + valueRange.second)}; } ::mlir::TypedValue<::mlir::IntegerType> getIndex() { return ::llvm::cast<::mlir::TypedValue<::mlir::IntegerType>>(*getODSOperands(0).begin()); } ::mlir::TypedValue<::mlir::IntegerType> getSrc() { return ::llvm::cast<::mlir::TypedValue<::mlir::IntegerType>>(*getODSOperands(1).begin()); } ::mlir::OpOperand &getIndexMutable() { auto range = getODSOperandIndexAndLength(0); return getOperation()->getOpOperand(range.first); } ::mlir::OpOperand &getSrcMutable() { auto range = getODSOperandIndexAndLength(1); return getOperation()->getOpOperand(range.first); } std::pair getODSResultIndexAndLength(unsigned index) { return {index, 1}; } ::mlir::Operation::result_range getODSResults(unsigned index) { auto valueRange = getODSResultIndexAndLength(index); return {std::next(getOperation()->result_begin(), valueRange.first), std::next(getOperation()->result_begin(), valueRange.first + valueRange.second)}; } ::mlir::TypedValue<::mlir::IntegerType> getRes() { return ::llvm::cast<::mlir::TypedValue<::mlir::IntegerType>>(*getODSResults(0).begin()); } static ::llvm::LogicalResult setPropertiesFromAttr(Properties &prop, ::mlir::Attribute attr, ::llvm::function_ref<::mlir::InFlightDiagnostic()> emitError); static ::mlir::Attribute getPropertiesAsAttr(::mlir::MLIRContext *ctx, const Properties &prop); static llvm::hash_code computePropertiesHash(const Properties &prop); static std::optional getInherentAttr(::mlir::MLIRContext *ctx, const Properties &prop, llvm::StringRef name); static void setInherentAttr(Properties &prop, llvm::StringRef name, mlir::Attribute value); static void populateInherentAttrs(::mlir::MLIRContext *ctx, const Properties &prop, ::mlir::NamedAttrList &attrs); static ::llvm::LogicalResult verifyInherentAttrs(::mlir::OperationName opName, ::mlir::NamedAttrList &attrs, llvm::function_ref<::mlir::InFlightDiagnostic()> emitError); static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::Type res, ::mlir::Value index, ::mlir::Value src); static DsBpermuteOp create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::Type res, ::mlir::Value index, ::mlir::Value src); static DsBpermuteOp create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::Type res, ::mlir::Value index, ::mlir::Value src); static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::Value index, ::mlir::Value src); static DsBpermuteOp create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::Value index, ::mlir::Value src); static DsBpermuteOp create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::Value index, ::mlir::Value src); static void build(::mlir::OpBuilder &, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, ::llvm::ArrayRef<::mlir::NamedAttribute> attributes = {}); static DsBpermuteOp create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, ::llvm::ArrayRef<::mlir::NamedAttribute> attributes = {}); static DsBpermuteOp create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, ::llvm::ArrayRef<::mlir::NamedAttribute> attributes = {}); static void build(::mlir::OpBuilder &, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, const Properties &properties, ::llvm::ArrayRef<::mlir::NamedAttribute> discardableAttributes = {}); static DsBpermuteOp create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, const Properties &properties, ::llvm::ArrayRef<::mlir::NamedAttribute> discardableAttributes = {}); static DsBpermuteOp create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, const Properties &properties, ::llvm::ArrayRef<::mlir::NamedAttribute> discardableAttributes = {}); ::llvm::LogicalResult verifyInvariantsImpl(); ::llvm::LogicalResult verifyInvariants(); static ::mlir::ParseResult parse(::mlir::OpAsmParser &parser, ::mlir::OperationState &result); void print(::mlir::OpAsmPrinter &_odsPrinter); public: }; } // namespace mlir::ROCDL MLIR_DECLARE_EXPLICIT_TYPE_ID(::mlir::ROCDL::DsBpermuteOp) namespace mlir::ROCDL { //===----------------------------------------------------------------------===// // ::mlir::ROCDL::DsLoadTr16_B128 declarations //===----------------------------------------------------------------------===// namespace detail { class DsLoadTr16_B128GenericAdaptorBase { public: struct Properties { using alias_scopesTy = ::mlir::ArrayAttr; alias_scopesTy alias_scopes; auto getAliasScopes() const { auto &propStorage = this->alias_scopes; return ::llvm::dyn_cast_or_null<::mlir::ArrayAttr>(propStorage); } void setAliasScopes(const ::mlir::ArrayAttr &propValue) { this->alias_scopes = propValue; } using noalias_scopesTy = ::mlir::ArrayAttr; noalias_scopesTy noalias_scopes; auto getNoaliasScopes() const { auto &propStorage = this->noalias_scopes; return ::llvm::dyn_cast_or_null<::mlir::ArrayAttr>(propStorage); } void setNoaliasScopes(const ::mlir::ArrayAttr &propValue) { this->noalias_scopes = propValue; } using tbaaTy = ::mlir::ArrayAttr; tbaaTy tbaa; auto getTbaa() const { auto &propStorage = this->tbaa; return ::llvm::dyn_cast_or_null<::mlir::ArrayAttr>(propStorage); } void setTbaa(const ::mlir::ArrayAttr &propValue) { this->tbaa = propValue; } bool operator==(const Properties &rhs) const { return rhs.alias_scopes == this->alias_scopes && rhs.noalias_scopes == this->noalias_scopes && rhs.tbaa == this->tbaa && true; } bool operator!=(const Properties &rhs) const { return !(*this == rhs); } }; protected: ::mlir::DictionaryAttr odsAttrs; ::std::optional<::mlir::OperationName> odsOpName; Properties properties; ::mlir::RegionRange odsRegions; public: DsLoadTr16_B128GenericAdaptorBase(::mlir::DictionaryAttr attrs, const Properties &properties, ::mlir::RegionRange regions = {}) : odsAttrs(attrs), properties(properties), odsRegions(regions) { if (odsAttrs) odsOpName.emplace("rocdl.ds.load.tr16.b128", odsAttrs.getContext()); } DsLoadTr16_B128GenericAdaptorBase(DsLoadTr16_B128 op); std::pair getODSOperandIndexAndLength(unsigned index, unsigned odsOperandsSize) { return {index, 1}; } const Properties &getProperties() { return properties; } ::mlir::DictionaryAttr getAttributes() { return odsAttrs; } ::mlir::ArrayAttr getAliasScopesAttr() { auto attr = ::llvm::dyn_cast_or_null<::mlir::ArrayAttr>(getProperties().alias_scopes); return attr; } ::std::optional< ::mlir::ArrayAttr > getAliasScopes(); ::mlir::ArrayAttr getNoaliasScopesAttr() { auto attr = ::llvm::dyn_cast_or_null<::mlir::ArrayAttr>(getProperties().noalias_scopes); return attr; } ::std::optional< ::mlir::ArrayAttr > getNoaliasScopes(); ::mlir::ArrayAttr getTbaaAttr() { auto attr = ::llvm::dyn_cast_or_null<::mlir::ArrayAttr>(getProperties().tbaa); return attr; } ::std::optional< ::mlir::ArrayAttr > getTbaa(); }; } // namespace detail template class DsLoadTr16_B128GenericAdaptor : public detail::DsLoadTr16_B128GenericAdaptorBase { using ValueT = ::llvm::detail::ValueOfRange; using Base = detail::DsLoadTr16_B128GenericAdaptorBase; static constexpr int odsIndex_ptr = 0; public: DsLoadTr16_B128GenericAdaptor(RangeT values, ::mlir::DictionaryAttr attrs, const Properties &properties, ::mlir::RegionRange regions = {}) : Base(attrs, properties, regions), odsOperands(values) {} DsLoadTr16_B128GenericAdaptor(RangeT values, ::mlir::DictionaryAttr attrs, ::mlir::PropertyRef properties, ::mlir::RegionRange regions = {}) : DsLoadTr16_B128GenericAdaptor(values, attrs, (properties ? *properties.as() : Properties{}), regions) {} DsLoadTr16_B128GenericAdaptor(RangeT values, ::mlir::DictionaryAttr attrs = nullptr) : DsLoadTr16_B128GenericAdaptor(values, attrs, Properties{}, {}) {} DsLoadTr16_B128GenericAdaptor(RangeT values, const DsLoadTr16_B128GenericAdaptorBase &base) : Base(base), odsOperands(values) {} template >> DsLoadTr16_B128GenericAdaptor(RangeT values, LateInst op) : Base(op), odsOperands(values) {} std::pair getODSOperandIndexAndLength(unsigned index) { return Base::getODSOperandIndexAndLength(index, odsOperands.size()); } RangeT getODSOperands(unsigned index) { auto valueRange = getODSOperandIndexAndLength(index); return {std::next(odsOperands.begin(), valueRange.first), std::next(odsOperands.begin(), valueRange.first + valueRange.second)}; } ValueT getPtr() { return (*getODSOperands(0).begin()); } RangeT getOperands() { return odsOperands; } private: RangeT odsOperands; }; class DsLoadTr16_B128Adaptor : public DsLoadTr16_B128GenericAdaptor<::mlir::ValueRange> { public: using DsLoadTr16_B128GenericAdaptor::DsLoadTr16_B128GenericAdaptor; DsLoadTr16_B128Adaptor(DsLoadTr16_B128 op); ::llvm::LogicalResult verify(::mlir::Location loc); }; class DsLoadTr16_B128 : public ::mlir::Op::Impl, ::mlir::OpTrait::ZeroSuccessors, ::mlir::OpTrait::OneOperand, ::mlir::OpTrait::OpInvariants, ::mlir::BytecodeOpInterface::Trait, ::mlir::LLVM::AliasAnalysisOpInterface::Trait, ::mlir::MemoryEffectOpInterface::Trait> { public: using Op::Op; using Op::print; using Adaptor = DsLoadTr16_B128Adaptor; template using GenericAdaptor = DsLoadTr16_B128GenericAdaptor; using FoldAdaptor = GenericAdaptor<::llvm::ArrayRef<::mlir::Attribute>>; static constexpr int odsIndex_ptr = 0; using Properties = FoldAdaptor::Properties; using ::mlir::LLVM::AliasAnalysisOpInterface::Trait::getAliasScopesOrNull; using ::mlir::LLVM::AliasAnalysisOpInterface::Trait::setAliasScopes; using ::mlir::LLVM::AliasAnalysisOpInterface::Trait::getNoAliasScopesOrNull; using ::mlir::LLVM::AliasAnalysisOpInterface::Trait::setNoAliasScopes; using ::mlir::LLVM::AliasAnalysisOpInterface::Trait::getTBAATagsOrNull; using ::mlir::LLVM::AliasAnalysisOpInterface::Trait::setTBAATags; static ::llvm::ArrayRef<::llvm::StringRef> getAttributeNames() { static ::llvm::StringRef attrNames[] = {::llvm::StringRef("alias_scopes"), ::llvm::StringRef("noalias_scopes"), ::llvm::StringRef("tbaa")}; return ::llvm::ArrayRef(attrNames); } ::mlir::StringAttr getAliasScopesAttrName() { return getAttributeNameForIndex(0); } static ::mlir::StringAttr getAliasScopesAttrName(::mlir::OperationName name) { return getAttributeNameForIndex(name, 0); } ::mlir::StringAttr getNoaliasScopesAttrName() { return getAttributeNameForIndex(1); } static ::mlir::StringAttr getNoaliasScopesAttrName(::mlir::OperationName name) { return getAttributeNameForIndex(name, 1); } ::mlir::StringAttr getTbaaAttrName() { return getAttributeNameForIndex(2); } static ::mlir::StringAttr getTbaaAttrName(::mlir::OperationName name) { return getAttributeNameForIndex(name, 2); } static constexpr ::llvm::StringLiteral getOperationName() { return ::llvm::StringLiteral("rocdl.ds.load.tr16.b128"); } std::pair getODSOperandIndexAndLength(unsigned index) { return {index, 1}; } ::mlir::Operation::operand_range getODSOperands(unsigned index) { auto valueRange = getODSOperandIndexAndLength(index); return {std::next(getOperation()->operand_begin(), valueRange.first), std::next(getOperation()->operand_begin(), valueRange.first + valueRange.second)}; } ::mlir::TypedValue<::mlir::LLVM::LLVMPointerType> getPtr() { return ::llvm::cast<::mlir::TypedValue<::mlir::LLVM::LLVMPointerType>>(*getODSOperands(0).begin()); } ::mlir::OpOperand &getPtrMutable() { auto range = getODSOperandIndexAndLength(0); return getOperation()->getOpOperand(range.first); } std::pair getODSResultIndexAndLength(unsigned index) { return {index, 1}; } ::mlir::Operation::result_range getODSResults(unsigned index) { auto valueRange = getODSResultIndexAndLength(index); return {std::next(getOperation()->result_begin(), valueRange.first), std::next(getOperation()->result_begin(), valueRange.first + valueRange.second)}; } ::mlir::TypedValue<::mlir::Type> getRes() { return ::llvm::cast<::mlir::TypedValue<::mlir::Type>>(*getODSResults(0).begin()); } static ::llvm::LogicalResult setPropertiesFromAttr(Properties &prop, ::mlir::Attribute attr, ::llvm::function_ref<::mlir::InFlightDiagnostic()> emitError); static ::mlir::Attribute getPropertiesAsAttr(::mlir::MLIRContext *ctx, const Properties &prop); static llvm::hash_code computePropertiesHash(const Properties &prop); static std::optional getInherentAttr(::mlir::MLIRContext *ctx, const Properties &prop, llvm::StringRef name); static void setInherentAttr(Properties &prop, llvm::StringRef name, mlir::Attribute value); static void populateInherentAttrs(::mlir::MLIRContext *ctx, const Properties &prop, ::mlir::NamedAttrList &attrs); static ::llvm::LogicalResult verifyInherentAttrs(::mlir::OperationName opName, ::mlir::NamedAttrList &attrs, llvm::function_ref<::mlir::InFlightDiagnostic()> emitError); static ::llvm::LogicalResult readProperties(::mlir::DialectBytecodeReader &reader, ::mlir::OperationState &state); void writeProperties(::mlir::DialectBytecodeWriter &writer); ::mlir::ArrayAttr getAliasScopesAttr() { return ::llvm::dyn_cast_or_null<::mlir::ArrayAttr>(getProperties().alias_scopes); } ::std::optional< ::mlir::ArrayAttr > getAliasScopes(); ::mlir::ArrayAttr getNoaliasScopesAttr() { return ::llvm::dyn_cast_or_null<::mlir::ArrayAttr>(getProperties().noalias_scopes); } ::std::optional< ::mlir::ArrayAttr > getNoaliasScopes(); ::mlir::ArrayAttr getTbaaAttr() { return ::llvm::dyn_cast_or_null<::mlir::ArrayAttr>(getProperties().tbaa); } ::std::optional< ::mlir::ArrayAttr > getTbaa(); void setAliasScopesAttr(::mlir::ArrayAttr attr) { getProperties().alias_scopes = attr; } void setNoaliasScopesAttr(::mlir::ArrayAttr attr) { getProperties().noalias_scopes = attr; } void setTbaaAttr(::mlir::ArrayAttr attr) { getProperties().tbaa = attr; } ::mlir::Attribute removeAliasScopesAttr() { auto attr = getProperties().alias_scopes; getProperties().alias_scopes = {}; return attr; } ::mlir::Attribute removeNoaliasScopesAttr() { auto attr = getProperties().noalias_scopes; getProperties().noalias_scopes = {}; return attr; } ::mlir::Attribute removeTbaaAttr() { auto attr = getProperties().tbaa; getProperties().tbaa = {}; return attr; } static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::Type res, ::mlir::Value ptr, /*optional*/::mlir::ArrayAttr alias_scopes, /*optional*/::mlir::ArrayAttr noalias_scopes, /*optional*/::mlir::ArrayAttr tbaa); static DsLoadTr16_B128 create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::Type res, ::mlir::Value ptr, /*optional*/::mlir::ArrayAttr alias_scopes, /*optional*/::mlir::ArrayAttr noalias_scopes, /*optional*/::mlir::ArrayAttr tbaa); static DsLoadTr16_B128 create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::Type res, ::mlir::Value ptr, /*optional*/::mlir::ArrayAttr alias_scopes, /*optional*/::mlir::ArrayAttr noalias_scopes, /*optional*/::mlir::ArrayAttr tbaa); static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::Value ptr, /*optional*/::mlir::ArrayAttr alias_scopes, /*optional*/::mlir::ArrayAttr noalias_scopes, /*optional*/::mlir::ArrayAttr tbaa); static DsLoadTr16_B128 create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::Value ptr, /*optional*/::mlir::ArrayAttr alias_scopes, /*optional*/::mlir::ArrayAttr noalias_scopes, /*optional*/::mlir::ArrayAttr tbaa); static DsLoadTr16_B128 create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::Value ptr, /*optional*/::mlir::ArrayAttr alias_scopes, /*optional*/::mlir::ArrayAttr noalias_scopes, /*optional*/::mlir::ArrayAttr tbaa); static void build(::mlir::OpBuilder &, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, ::llvm::ArrayRef<::mlir::NamedAttribute> attributes = {}); static DsLoadTr16_B128 create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, ::llvm::ArrayRef<::mlir::NamedAttribute> attributes = {}); static DsLoadTr16_B128 create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, ::llvm::ArrayRef<::mlir::NamedAttribute> attributes = {}); static void build(::mlir::OpBuilder &, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, const Properties &properties, ::llvm::ArrayRef<::mlir::NamedAttribute> discardableAttributes = {}); static DsLoadTr16_B128 create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, const Properties &properties, ::llvm::ArrayRef<::mlir::NamedAttribute> discardableAttributes = {}); static DsLoadTr16_B128 create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, const Properties &properties, ::llvm::ArrayRef<::mlir::NamedAttribute> discardableAttributes = {}); ::llvm::LogicalResult verifyInvariantsImpl(); ::llvm::LogicalResult verifyInvariants(); ::llvm::SmallVector<::mlir::Value> getAccessedOperands(); static ::mlir::ParseResult parse(::mlir::OpAsmParser &parser, ::mlir::OperationState &result); void print(::mlir::OpAsmPrinter &_odsPrinter); void getEffects(::llvm::SmallVectorImpl<::mlir::SideEffects::EffectInstance<::mlir::MemoryEffects::Effect>> &effects); private: ::mlir::StringAttr getAttributeNameForIndex(unsigned index) { return getAttributeNameForIndex((*this)->getName(), index); } static ::mlir::StringAttr getAttributeNameForIndex(::mlir::OperationName name, unsigned index) { assert(index < 3 && "invalid attribute index"); assert(name.getStringRef() == getOperationName() && "invalid operation name"); assert(name.isRegistered() && "Operation isn't registered, missing a " "dependent dialect loading?"); return name.getAttributeNames()[index]; } public: }; } // namespace mlir::ROCDL MLIR_DECLARE_EXPLICIT_TYPE_ID(::mlir::ROCDL::DsLoadTr16_B128) MLIR_DECLARE_EXPLICIT_TYPE_ID(::mlir::ROCDL::detail::DsLoadTr16_B128GenericAdaptorBase::Properties) namespace mlir::ROCDL { //===----------------------------------------------------------------------===// // ::mlir::ROCDL::DsLoadTr4_B64 declarations //===----------------------------------------------------------------------===// namespace detail { class DsLoadTr4_B64GenericAdaptorBase { public: struct Properties { using alias_scopesTy = ::mlir::ArrayAttr; alias_scopesTy alias_scopes; auto getAliasScopes() const { auto &propStorage = this->alias_scopes; return ::llvm::dyn_cast_or_null<::mlir::ArrayAttr>(propStorage); } void setAliasScopes(const ::mlir::ArrayAttr &propValue) { this->alias_scopes = propValue; } using noalias_scopesTy = ::mlir::ArrayAttr; noalias_scopesTy noalias_scopes; auto getNoaliasScopes() const { auto &propStorage = this->noalias_scopes; return ::llvm::dyn_cast_or_null<::mlir::ArrayAttr>(propStorage); } void setNoaliasScopes(const ::mlir::ArrayAttr &propValue) { this->noalias_scopes = propValue; } using tbaaTy = ::mlir::ArrayAttr; tbaaTy tbaa; auto getTbaa() const { auto &propStorage = this->tbaa; return ::llvm::dyn_cast_or_null<::mlir::ArrayAttr>(propStorage); } void setTbaa(const ::mlir::ArrayAttr &propValue) { this->tbaa = propValue; } bool operator==(const Properties &rhs) const { return rhs.alias_scopes == this->alias_scopes && rhs.noalias_scopes == this->noalias_scopes && rhs.tbaa == this->tbaa && true; } bool operator!=(const Properties &rhs) const { return !(*this == rhs); } }; protected: ::mlir::DictionaryAttr odsAttrs; ::std::optional<::mlir::OperationName> odsOpName; Properties properties; ::mlir::RegionRange odsRegions; public: DsLoadTr4_B64GenericAdaptorBase(::mlir::DictionaryAttr attrs, const Properties &properties, ::mlir::RegionRange regions = {}) : odsAttrs(attrs), properties(properties), odsRegions(regions) { if (odsAttrs) odsOpName.emplace("rocdl.ds.load.tr4.b64", odsAttrs.getContext()); } DsLoadTr4_B64GenericAdaptorBase(DsLoadTr4_B64 op); std::pair getODSOperandIndexAndLength(unsigned index, unsigned odsOperandsSize) { return {index, 1}; } const Properties &getProperties() { return properties; } ::mlir::DictionaryAttr getAttributes() { return odsAttrs; } ::mlir::ArrayAttr getAliasScopesAttr() { auto attr = ::llvm::dyn_cast_or_null<::mlir::ArrayAttr>(getProperties().alias_scopes); return attr; } ::std::optional< ::mlir::ArrayAttr > getAliasScopes(); ::mlir::ArrayAttr getNoaliasScopesAttr() { auto attr = ::llvm::dyn_cast_or_null<::mlir::ArrayAttr>(getProperties().noalias_scopes); return attr; } ::std::optional< ::mlir::ArrayAttr > getNoaliasScopes(); ::mlir::ArrayAttr getTbaaAttr() { auto attr = ::llvm::dyn_cast_or_null<::mlir::ArrayAttr>(getProperties().tbaa); return attr; } ::std::optional< ::mlir::ArrayAttr > getTbaa(); }; } // namespace detail template class DsLoadTr4_B64GenericAdaptor : public detail::DsLoadTr4_B64GenericAdaptorBase { using ValueT = ::llvm::detail::ValueOfRange; using Base = detail::DsLoadTr4_B64GenericAdaptorBase; static constexpr int odsIndex_ptr = 0; public: DsLoadTr4_B64GenericAdaptor(RangeT values, ::mlir::DictionaryAttr attrs, const Properties &properties, ::mlir::RegionRange regions = {}) : Base(attrs, properties, regions), odsOperands(values) {} DsLoadTr4_B64GenericAdaptor(RangeT values, ::mlir::DictionaryAttr attrs, ::mlir::PropertyRef properties, ::mlir::RegionRange regions = {}) : DsLoadTr4_B64GenericAdaptor(values, attrs, (properties ? *properties.as() : Properties{}), regions) {} DsLoadTr4_B64GenericAdaptor(RangeT values, ::mlir::DictionaryAttr attrs = nullptr) : DsLoadTr4_B64GenericAdaptor(values, attrs, Properties{}, {}) {} DsLoadTr4_B64GenericAdaptor(RangeT values, const DsLoadTr4_B64GenericAdaptorBase &base) : Base(base), odsOperands(values) {} template >> DsLoadTr4_B64GenericAdaptor(RangeT values, LateInst op) : Base(op), odsOperands(values) {} std::pair getODSOperandIndexAndLength(unsigned index) { return Base::getODSOperandIndexAndLength(index, odsOperands.size()); } RangeT getODSOperands(unsigned index) { auto valueRange = getODSOperandIndexAndLength(index); return {std::next(odsOperands.begin(), valueRange.first), std::next(odsOperands.begin(), valueRange.first + valueRange.second)}; } ValueT getPtr() { return (*getODSOperands(0).begin()); } RangeT getOperands() { return odsOperands; } private: RangeT odsOperands; }; class DsLoadTr4_B64Adaptor : public DsLoadTr4_B64GenericAdaptor<::mlir::ValueRange> { public: using DsLoadTr4_B64GenericAdaptor::DsLoadTr4_B64GenericAdaptor; DsLoadTr4_B64Adaptor(DsLoadTr4_B64 op); ::llvm::LogicalResult verify(::mlir::Location loc); }; class DsLoadTr4_B64 : public ::mlir::Op::Impl, ::mlir::OpTrait::ZeroSuccessors, ::mlir::OpTrait::OneOperand, ::mlir::OpTrait::OpInvariants, ::mlir::BytecodeOpInterface::Trait, ::mlir::LLVM::AliasAnalysisOpInterface::Trait, ::mlir::MemoryEffectOpInterface::Trait> { public: using Op::Op; using Op::print; using Adaptor = DsLoadTr4_B64Adaptor; template using GenericAdaptor = DsLoadTr4_B64GenericAdaptor; using FoldAdaptor = GenericAdaptor<::llvm::ArrayRef<::mlir::Attribute>>; static constexpr int odsIndex_ptr = 0; using Properties = FoldAdaptor::Properties; using ::mlir::LLVM::AliasAnalysisOpInterface::Trait::getAliasScopesOrNull; using ::mlir::LLVM::AliasAnalysisOpInterface::Trait::setAliasScopes; using ::mlir::LLVM::AliasAnalysisOpInterface::Trait::getNoAliasScopesOrNull; using ::mlir::LLVM::AliasAnalysisOpInterface::Trait::setNoAliasScopes; using ::mlir::LLVM::AliasAnalysisOpInterface::Trait::getTBAATagsOrNull; using ::mlir::LLVM::AliasAnalysisOpInterface::Trait::setTBAATags; static ::llvm::ArrayRef<::llvm::StringRef> getAttributeNames() { static ::llvm::StringRef attrNames[] = {::llvm::StringRef("alias_scopes"), ::llvm::StringRef("noalias_scopes"), ::llvm::StringRef("tbaa")}; return ::llvm::ArrayRef(attrNames); } ::mlir::StringAttr getAliasScopesAttrName() { return getAttributeNameForIndex(0); } static ::mlir::StringAttr getAliasScopesAttrName(::mlir::OperationName name) { return getAttributeNameForIndex(name, 0); } ::mlir::StringAttr getNoaliasScopesAttrName() { return getAttributeNameForIndex(1); } static ::mlir::StringAttr getNoaliasScopesAttrName(::mlir::OperationName name) { return getAttributeNameForIndex(name, 1); } ::mlir::StringAttr getTbaaAttrName() { return getAttributeNameForIndex(2); } static ::mlir::StringAttr getTbaaAttrName(::mlir::OperationName name) { return getAttributeNameForIndex(name, 2); } static constexpr ::llvm::StringLiteral getOperationName() { return ::llvm::StringLiteral("rocdl.ds.load.tr4.b64"); } std::pair getODSOperandIndexAndLength(unsigned index) { return {index, 1}; } ::mlir::Operation::operand_range getODSOperands(unsigned index) { auto valueRange = getODSOperandIndexAndLength(index); return {std::next(getOperation()->operand_begin(), valueRange.first), std::next(getOperation()->operand_begin(), valueRange.first + valueRange.second)}; } ::mlir::TypedValue<::mlir::LLVM::LLVMPointerType> getPtr() { return ::llvm::cast<::mlir::TypedValue<::mlir::LLVM::LLVMPointerType>>(*getODSOperands(0).begin()); } ::mlir::OpOperand &getPtrMutable() { auto range = getODSOperandIndexAndLength(0); return getOperation()->getOpOperand(range.first); } std::pair getODSResultIndexAndLength(unsigned index) { return {index, 1}; } ::mlir::Operation::result_range getODSResults(unsigned index) { auto valueRange = getODSResultIndexAndLength(index); return {std::next(getOperation()->result_begin(), valueRange.first), std::next(getOperation()->result_begin(), valueRange.first + valueRange.second)}; } ::mlir::TypedValue<::mlir::Type> getRes() { return ::llvm::cast<::mlir::TypedValue<::mlir::Type>>(*getODSResults(0).begin()); } static ::llvm::LogicalResult setPropertiesFromAttr(Properties &prop, ::mlir::Attribute attr, ::llvm::function_ref<::mlir::InFlightDiagnostic()> emitError); static ::mlir::Attribute getPropertiesAsAttr(::mlir::MLIRContext *ctx, const Properties &prop); static llvm::hash_code computePropertiesHash(const Properties &prop); static std::optional getInherentAttr(::mlir::MLIRContext *ctx, const Properties &prop, llvm::StringRef name); static void setInherentAttr(Properties &prop, llvm::StringRef name, mlir::Attribute value); static void populateInherentAttrs(::mlir::MLIRContext *ctx, const Properties &prop, ::mlir::NamedAttrList &attrs); static ::llvm::LogicalResult verifyInherentAttrs(::mlir::OperationName opName, ::mlir::NamedAttrList &attrs, llvm::function_ref<::mlir::InFlightDiagnostic()> emitError); static ::llvm::LogicalResult readProperties(::mlir::DialectBytecodeReader &reader, ::mlir::OperationState &state); void writeProperties(::mlir::DialectBytecodeWriter &writer); ::mlir::ArrayAttr getAliasScopesAttr() { return ::llvm::dyn_cast_or_null<::mlir::ArrayAttr>(getProperties().alias_scopes); } ::std::optional< ::mlir::ArrayAttr > getAliasScopes(); ::mlir::ArrayAttr getNoaliasScopesAttr() { return ::llvm::dyn_cast_or_null<::mlir::ArrayAttr>(getProperties().noalias_scopes); } ::std::optional< ::mlir::ArrayAttr > getNoaliasScopes(); ::mlir::ArrayAttr getTbaaAttr() { return ::llvm::dyn_cast_or_null<::mlir::ArrayAttr>(getProperties().tbaa); } ::std::optional< ::mlir::ArrayAttr > getTbaa(); void setAliasScopesAttr(::mlir::ArrayAttr attr) { getProperties().alias_scopes = attr; } void setNoaliasScopesAttr(::mlir::ArrayAttr attr) { getProperties().noalias_scopes = attr; } void setTbaaAttr(::mlir::ArrayAttr attr) { getProperties().tbaa = attr; } ::mlir::Attribute removeAliasScopesAttr() { auto attr = getProperties().alias_scopes; getProperties().alias_scopes = {}; return attr; } ::mlir::Attribute removeNoaliasScopesAttr() { auto attr = getProperties().noalias_scopes; getProperties().noalias_scopes = {}; return attr; } ::mlir::Attribute removeTbaaAttr() { auto attr = getProperties().tbaa; getProperties().tbaa = {}; return attr; } static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::Type res, ::mlir::Value ptr, /*optional*/::mlir::ArrayAttr alias_scopes, /*optional*/::mlir::ArrayAttr noalias_scopes, /*optional*/::mlir::ArrayAttr tbaa); static DsLoadTr4_B64 create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::Type res, ::mlir::Value ptr, /*optional*/::mlir::ArrayAttr alias_scopes, /*optional*/::mlir::ArrayAttr noalias_scopes, /*optional*/::mlir::ArrayAttr tbaa); static DsLoadTr4_B64 create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::Type res, ::mlir::Value ptr, /*optional*/::mlir::ArrayAttr alias_scopes, /*optional*/::mlir::ArrayAttr noalias_scopes, /*optional*/::mlir::ArrayAttr tbaa); static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::Value ptr, /*optional*/::mlir::ArrayAttr alias_scopes, /*optional*/::mlir::ArrayAttr noalias_scopes, /*optional*/::mlir::ArrayAttr tbaa); static DsLoadTr4_B64 create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::Value ptr, /*optional*/::mlir::ArrayAttr alias_scopes, /*optional*/::mlir::ArrayAttr noalias_scopes, /*optional*/::mlir::ArrayAttr tbaa); static DsLoadTr4_B64 create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::Value ptr, /*optional*/::mlir::ArrayAttr alias_scopes, /*optional*/::mlir::ArrayAttr noalias_scopes, /*optional*/::mlir::ArrayAttr tbaa); static void build(::mlir::OpBuilder &, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, ::llvm::ArrayRef<::mlir::NamedAttribute> attributes = {}); static DsLoadTr4_B64 create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, ::llvm::ArrayRef<::mlir::NamedAttribute> attributes = {}); static DsLoadTr4_B64 create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, ::llvm::ArrayRef<::mlir::NamedAttribute> attributes = {}); static void build(::mlir::OpBuilder &, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, const Properties &properties, ::llvm::ArrayRef<::mlir::NamedAttribute> discardableAttributes = {}); static DsLoadTr4_B64 create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, const Properties &properties, ::llvm::ArrayRef<::mlir::NamedAttribute> discardableAttributes = {}); static DsLoadTr4_B64 create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, const Properties &properties, ::llvm::ArrayRef<::mlir::NamedAttribute> discardableAttributes = {}); ::llvm::LogicalResult verifyInvariantsImpl(); ::llvm::LogicalResult verifyInvariants(); ::llvm::SmallVector<::mlir::Value> getAccessedOperands(); static ::mlir::ParseResult parse(::mlir::OpAsmParser &parser, ::mlir::OperationState &result); void print(::mlir::OpAsmPrinter &_odsPrinter); void getEffects(::llvm::SmallVectorImpl<::mlir::SideEffects::EffectInstance<::mlir::MemoryEffects::Effect>> &effects); private: ::mlir::StringAttr getAttributeNameForIndex(unsigned index) { return getAttributeNameForIndex((*this)->getName(), index); } static ::mlir::StringAttr getAttributeNameForIndex(::mlir::OperationName name, unsigned index) { assert(index < 3 && "invalid attribute index"); assert(name.getStringRef() == getOperationName() && "invalid operation name"); assert(name.isRegistered() && "Operation isn't registered, missing a " "dependent dialect loading?"); return name.getAttributeNames()[index]; } public: }; } // namespace mlir::ROCDL MLIR_DECLARE_EXPLICIT_TYPE_ID(::mlir::ROCDL::DsLoadTr4_B64) MLIR_DECLARE_EXPLICIT_TYPE_ID(::mlir::ROCDL::detail::DsLoadTr4_B64GenericAdaptorBase::Properties) namespace mlir::ROCDL { //===----------------------------------------------------------------------===// // ::mlir::ROCDL::DsLoadTr6_B96 declarations //===----------------------------------------------------------------------===// namespace detail { class DsLoadTr6_B96GenericAdaptorBase { public: struct Properties { using alias_scopesTy = ::mlir::ArrayAttr; alias_scopesTy alias_scopes; auto getAliasScopes() const { auto &propStorage = this->alias_scopes; return ::llvm::dyn_cast_or_null<::mlir::ArrayAttr>(propStorage); } void setAliasScopes(const ::mlir::ArrayAttr &propValue) { this->alias_scopes = propValue; } using noalias_scopesTy = ::mlir::ArrayAttr; noalias_scopesTy noalias_scopes; auto getNoaliasScopes() const { auto &propStorage = this->noalias_scopes; return ::llvm::dyn_cast_or_null<::mlir::ArrayAttr>(propStorage); } void setNoaliasScopes(const ::mlir::ArrayAttr &propValue) { this->noalias_scopes = propValue; } using tbaaTy = ::mlir::ArrayAttr; tbaaTy tbaa; auto getTbaa() const { auto &propStorage = this->tbaa; return ::llvm::dyn_cast_or_null<::mlir::ArrayAttr>(propStorage); } void setTbaa(const ::mlir::ArrayAttr &propValue) { this->tbaa = propValue; } bool operator==(const Properties &rhs) const { return rhs.alias_scopes == this->alias_scopes && rhs.noalias_scopes == this->noalias_scopes && rhs.tbaa == this->tbaa && true; } bool operator!=(const Properties &rhs) const { return !(*this == rhs); } }; protected: ::mlir::DictionaryAttr odsAttrs; ::std::optional<::mlir::OperationName> odsOpName; Properties properties; ::mlir::RegionRange odsRegions; public: DsLoadTr6_B96GenericAdaptorBase(::mlir::DictionaryAttr attrs, const Properties &properties, ::mlir::RegionRange regions = {}) : odsAttrs(attrs), properties(properties), odsRegions(regions) { if (odsAttrs) odsOpName.emplace("rocdl.ds.load.tr6.b96", odsAttrs.getContext()); } DsLoadTr6_B96GenericAdaptorBase(DsLoadTr6_B96 op); std::pair getODSOperandIndexAndLength(unsigned index, unsigned odsOperandsSize) { return {index, 1}; } const Properties &getProperties() { return properties; } ::mlir::DictionaryAttr getAttributes() { return odsAttrs; } ::mlir::ArrayAttr getAliasScopesAttr() { auto attr = ::llvm::dyn_cast_or_null<::mlir::ArrayAttr>(getProperties().alias_scopes); return attr; } ::std::optional< ::mlir::ArrayAttr > getAliasScopes(); ::mlir::ArrayAttr getNoaliasScopesAttr() { auto attr = ::llvm::dyn_cast_or_null<::mlir::ArrayAttr>(getProperties().noalias_scopes); return attr; } ::std::optional< ::mlir::ArrayAttr > getNoaliasScopes(); ::mlir::ArrayAttr getTbaaAttr() { auto attr = ::llvm::dyn_cast_or_null<::mlir::ArrayAttr>(getProperties().tbaa); return attr; } ::std::optional< ::mlir::ArrayAttr > getTbaa(); }; } // namespace detail template class DsLoadTr6_B96GenericAdaptor : public detail::DsLoadTr6_B96GenericAdaptorBase { using ValueT = ::llvm::detail::ValueOfRange; using Base = detail::DsLoadTr6_B96GenericAdaptorBase; static constexpr int odsIndex_ptr = 0; public: DsLoadTr6_B96GenericAdaptor(RangeT values, ::mlir::DictionaryAttr attrs, const Properties &properties, ::mlir::RegionRange regions = {}) : Base(attrs, properties, regions), odsOperands(values) {} DsLoadTr6_B96GenericAdaptor(RangeT values, ::mlir::DictionaryAttr attrs, ::mlir::PropertyRef properties, ::mlir::RegionRange regions = {}) : DsLoadTr6_B96GenericAdaptor(values, attrs, (properties ? *properties.as() : Properties{}), regions) {} DsLoadTr6_B96GenericAdaptor(RangeT values, ::mlir::DictionaryAttr attrs = nullptr) : DsLoadTr6_B96GenericAdaptor(values, attrs, Properties{}, {}) {} DsLoadTr6_B96GenericAdaptor(RangeT values, const DsLoadTr6_B96GenericAdaptorBase &base) : Base(base), odsOperands(values) {} template >> DsLoadTr6_B96GenericAdaptor(RangeT values, LateInst op) : Base(op), odsOperands(values) {} std::pair getODSOperandIndexAndLength(unsigned index) { return Base::getODSOperandIndexAndLength(index, odsOperands.size()); } RangeT getODSOperands(unsigned index) { auto valueRange = getODSOperandIndexAndLength(index); return {std::next(odsOperands.begin(), valueRange.first), std::next(odsOperands.begin(), valueRange.first + valueRange.second)}; } ValueT getPtr() { return (*getODSOperands(0).begin()); } RangeT getOperands() { return odsOperands; } private: RangeT odsOperands; }; class DsLoadTr6_B96Adaptor : public DsLoadTr6_B96GenericAdaptor<::mlir::ValueRange> { public: using DsLoadTr6_B96GenericAdaptor::DsLoadTr6_B96GenericAdaptor; DsLoadTr6_B96Adaptor(DsLoadTr6_B96 op); ::llvm::LogicalResult verify(::mlir::Location loc); }; class DsLoadTr6_B96 : public ::mlir::Op::Impl, ::mlir::OpTrait::ZeroSuccessors, ::mlir::OpTrait::OneOperand, ::mlir::OpTrait::OpInvariants, ::mlir::BytecodeOpInterface::Trait, ::mlir::LLVM::AliasAnalysisOpInterface::Trait, ::mlir::MemoryEffectOpInterface::Trait> { public: using Op::Op; using Op::print; using Adaptor = DsLoadTr6_B96Adaptor; template using GenericAdaptor = DsLoadTr6_B96GenericAdaptor; using FoldAdaptor = GenericAdaptor<::llvm::ArrayRef<::mlir::Attribute>>; static constexpr int odsIndex_ptr = 0; using Properties = FoldAdaptor::Properties; using ::mlir::LLVM::AliasAnalysisOpInterface::Trait::getAliasScopesOrNull; using ::mlir::LLVM::AliasAnalysisOpInterface::Trait::setAliasScopes; using ::mlir::LLVM::AliasAnalysisOpInterface::Trait::getNoAliasScopesOrNull; using ::mlir::LLVM::AliasAnalysisOpInterface::Trait::setNoAliasScopes; using ::mlir::LLVM::AliasAnalysisOpInterface::Trait::getTBAATagsOrNull; using ::mlir::LLVM::AliasAnalysisOpInterface::Trait::setTBAATags; static ::llvm::ArrayRef<::llvm::StringRef> getAttributeNames() { static ::llvm::StringRef attrNames[] = {::llvm::StringRef("alias_scopes"), ::llvm::StringRef("noalias_scopes"), ::llvm::StringRef("tbaa")}; return ::llvm::ArrayRef(attrNames); } ::mlir::StringAttr getAliasScopesAttrName() { return getAttributeNameForIndex(0); } static ::mlir::StringAttr getAliasScopesAttrName(::mlir::OperationName name) { return getAttributeNameForIndex(name, 0); } ::mlir::StringAttr getNoaliasScopesAttrName() { return getAttributeNameForIndex(1); } static ::mlir::StringAttr getNoaliasScopesAttrName(::mlir::OperationName name) { return getAttributeNameForIndex(name, 1); } ::mlir::StringAttr getTbaaAttrName() { return getAttributeNameForIndex(2); } static ::mlir::StringAttr getTbaaAttrName(::mlir::OperationName name) { return getAttributeNameForIndex(name, 2); } static constexpr ::llvm::StringLiteral getOperationName() { return ::llvm::StringLiteral("rocdl.ds.load.tr6.b96"); } std::pair getODSOperandIndexAndLength(unsigned index) { return {index, 1}; } ::mlir::Operation::operand_range getODSOperands(unsigned index) { auto valueRange = getODSOperandIndexAndLength(index); return {std::next(getOperation()->operand_begin(), valueRange.first), std::next(getOperation()->operand_begin(), valueRange.first + valueRange.second)}; } ::mlir::TypedValue<::mlir::LLVM::LLVMPointerType> getPtr() { return ::llvm::cast<::mlir::TypedValue<::mlir::LLVM::LLVMPointerType>>(*getODSOperands(0).begin()); } ::mlir::OpOperand &getPtrMutable() { auto range = getODSOperandIndexAndLength(0); return getOperation()->getOpOperand(range.first); } std::pair getODSResultIndexAndLength(unsigned index) { return {index, 1}; } ::mlir::Operation::result_range getODSResults(unsigned index) { auto valueRange = getODSResultIndexAndLength(index); return {std::next(getOperation()->result_begin(), valueRange.first), std::next(getOperation()->result_begin(), valueRange.first + valueRange.second)}; } ::mlir::TypedValue<::mlir::Type> getRes() { return ::llvm::cast<::mlir::TypedValue<::mlir::Type>>(*getODSResults(0).begin()); } static ::llvm::LogicalResult setPropertiesFromAttr(Properties &prop, ::mlir::Attribute attr, ::llvm::function_ref<::mlir::InFlightDiagnostic()> emitError); static ::mlir::Attribute getPropertiesAsAttr(::mlir::MLIRContext *ctx, const Properties &prop); static llvm::hash_code computePropertiesHash(const Properties &prop); static std::optional getInherentAttr(::mlir::MLIRContext *ctx, const Properties &prop, llvm::StringRef name); static void setInherentAttr(Properties &prop, llvm::StringRef name, mlir::Attribute value); static void populateInherentAttrs(::mlir::MLIRContext *ctx, const Properties &prop, ::mlir::NamedAttrList &attrs); static ::llvm::LogicalResult verifyInherentAttrs(::mlir::OperationName opName, ::mlir::NamedAttrList &attrs, llvm::function_ref<::mlir::InFlightDiagnostic()> emitError); static ::llvm::LogicalResult readProperties(::mlir::DialectBytecodeReader &reader, ::mlir::OperationState &state); void writeProperties(::mlir::DialectBytecodeWriter &writer); ::mlir::ArrayAttr getAliasScopesAttr() { return ::llvm::dyn_cast_or_null<::mlir::ArrayAttr>(getProperties().alias_scopes); } ::std::optional< ::mlir::ArrayAttr > getAliasScopes(); ::mlir::ArrayAttr getNoaliasScopesAttr() { return ::llvm::dyn_cast_or_null<::mlir::ArrayAttr>(getProperties().noalias_scopes); } ::std::optional< ::mlir::ArrayAttr > getNoaliasScopes(); ::mlir::ArrayAttr getTbaaAttr() { return ::llvm::dyn_cast_or_null<::mlir::ArrayAttr>(getProperties().tbaa); } ::std::optional< ::mlir::ArrayAttr > getTbaa(); void setAliasScopesAttr(::mlir::ArrayAttr attr) { getProperties().alias_scopes = attr; } void setNoaliasScopesAttr(::mlir::ArrayAttr attr) { getProperties().noalias_scopes = attr; } void setTbaaAttr(::mlir::ArrayAttr attr) { getProperties().tbaa = attr; } ::mlir::Attribute removeAliasScopesAttr() { auto attr = getProperties().alias_scopes; getProperties().alias_scopes = {}; return attr; } ::mlir::Attribute removeNoaliasScopesAttr() { auto attr = getProperties().noalias_scopes; getProperties().noalias_scopes = {}; return attr; } ::mlir::Attribute removeTbaaAttr() { auto attr = getProperties().tbaa; getProperties().tbaa = {}; return attr; } static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::Type res, ::mlir::Value ptr, /*optional*/::mlir::ArrayAttr alias_scopes, /*optional*/::mlir::ArrayAttr noalias_scopes, /*optional*/::mlir::ArrayAttr tbaa); static DsLoadTr6_B96 create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::Type res, ::mlir::Value ptr, /*optional*/::mlir::ArrayAttr alias_scopes, /*optional*/::mlir::ArrayAttr noalias_scopes, /*optional*/::mlir::ArrayAttr tbaa); static DsLoadTr6_B96 create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::Type res, ::mlir::Value ptr, /*optional*/::mlir::ArrayAttr alias_scopes, /*optional*/::mlir::ArrayAttr noalias_scopes, /*optional*/::mlir::ArrayAttr tbaa); static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::Value ptr, /*optional*/::mlir::ArrayAttr alias_scopes, /*optional*/::mlir::ArrayAttr noalias_scopes, /*optional*/::mlir::ArrayAttr tbaa); static DsLoadTr6_B96 create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::Value ptr, /*optional*/::mlir::ArrayAttr alias_scopes, /*optional*/::mlir::ArrayAttr noalias_scopes, /*optional*/::mlir::ArrayAttr tbaa); static DsLoadTr6_B96 create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::Value ptr, /*optional*/::mlir::ArrayAttr alias_scopes, /*optional*/::mlir::ArrayAttr noalias_scopes, /*optional*/::mlir::ArrayAttr tbaa); static void build(::mlir::OpBuilder &, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, ::llvm::ArrayRef<::mlir::NamedAttribute> attributes = {}); static DsLoadTr6_B96 create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, ::llvm::ArrayRef<::mlir::NamedAttribute> attributes = {}); static DsLoadTr6_B96 create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, ::llvm::ArrayRef<::mlir::NamedAttribute> attributes = {}); static void build(::mlir::OpBuilder &, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, const Properties &properties, ::llvm::ArrayRef<::mlir::NamedAttribute> discardableAttributes = {}); static DsLoadTr6_B96 create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, const Properties &properties, ::llvm::ArrayRef<::mlir::NamedAttribute> discardableAttributes = {}); static DsLoadTr6_B96 create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, const Properties &properties, ::llvm::ArrayRef<::mlir::NamedAttribute> discardableAttributes = {}); ::llvm::LogicalResult verifyInvariantsImpl(); ::llvm::LogicalResult verifyInvariants(); ::llvm::SmallVector<::mlir::Value> getAccessedOperands(); static ::mlir::ParseResult parse(::mlir::OpAsmParser &parser, ::mlir::OperationState &result); void print(::mlir::OpAsmPrinter &_odsPrinter); void getEffects(::llvm::SmallVectorImpl<::mlir::SideEffects::EffectInstance<::mlir::MemoryEffects::Effect>> &effects); private: ::mlir::StringAttr getAttributeNameForIndex(unsigned index) { return getAttributeNameForIndex((*this)->getName(), index); } static ::mlir::StringAttr getAttributeNameForIndex(::mlir::OperationName name, unsigned index) { assert(index < 3 && "invalid attribute index"); assert(name.getStringRef() == getOperationName() && "invalid operation name"); assert(name.isRegistered() && "Operation isn't registered, missing a " "dependent dialect loading?"); return name.getAttributeNames()[index]; } public: }; } // namespace mlir::ROCDL MLIR_DECLARE_EXPLICIT_TYPE_ID(::mlir::ROCDL::DsLoadTr6_B96) MLIR_DECLARE_EXPLICIT_TYPE_ID(::mlir::ROCDL::detail::DsLoadTr6_B96GenericAdaptorBase::Properties) namespace mlir::ROCDL { //===----------------------------------------------------------------------===// // ::mlir::ROCDL::DsLoadTr8_B64 declarations //===----------------------------------------------------------------------===// namespace detail { class DsLoadTr8_B64GenericAdaptorBase { public: struct Properties { using alias_scopesTy = ::mlir::ArrayAttr; alias_scopesTy alias_scopes; auto getAliasScopes() const { auto &propStorage = this->alias_scopes; return ::llvm::dyn_cast_or_null<::mlir::ArrayAttr>(propStorage); } void setAliasScopes(const ::mlir::ArrayAttr &propValue) { this->alias_scopes = propValue; } using noalias_scopesTy = ::mlir::ArrayAttr; noalias_scopesTy noalias_scopes; auto getNoaliasScopes() const { auto &propStorage = this->noalias_scopes; return ::llvm::dyn_cast_or_null<::mlir::ArrayAttr>(propStorage); } void setNoaliasScopes(const ::mlir::ArrayAttr &propValue) { this->noalias_scopes = propValue; } using tbaaTy = ::mlir::ArrayAttr; tbaaTy tbaa; auto getTbaa() const { auto &propStorage = this->tbaa; return ::llvm::dyn_cast_or_null<::mlir::ArrayAttr>(propStorage); } void setTbaa(const ::mlir::ArrayAttr &propValue) { this->tbaa = propValue; } bool operator==(const Properties &rhs) const { return rhs.alias_scopes == this->alias_scopes && rhs.noalias_scopes == this->noalias_scopes && rhs.tbaa == this->tbaa && true; } bool operator!=(const Properties &rhs) const { return !(*this == rhs); } }; protected: ::mlir::DictionaryAttr odsAttrs; ::std::optional<::mlir::OperationName> odsOpName; Properties properties; ::mlir::RegionRange odsRegions; public: DsLoadTr8_B64GenericAdaptorBase(::mlir::DictionaryAttr attrs, const Properties &properties, ::mlir::RegionRange regions = {}) : odsAttrs(attrs), properties(properties), odsRegions(regions) { if (odsAttrs) odsOpName.emplace("rocdl.ds.load.tr8.b64", odsAttrs.getContext()); } DsLoadTr8_B64GenericAdaptorBase(DsLoadTr8_B64 op); std::pair getODSOperandIndexAndLength(unsigned index, unsigned odsOperandsSize) { return {index, 1}; } const Properties &getProperties() { return properties; } ::mlir::DictionaryAttr getAttributes() { return odsAttrs; } ::mlir::ArrayAttr getAliasScopesAttr() { auto attr = ::llvm::dyn_cast_or_null<::mlir::ArrayAttr>(getProperties().alias_scopes); return attr; } ::std::optional< ::mlir::ArrayAttr > getAliasScopes(); ::mlir::ArrayAttr getNoaliasScopesAttr() { auto attr = ::llvm::dyn_cast_or_null<::mlir::ArrayAttr>(getProperties().noalias_scopes); return attr; } ::std::optional< ::mlir::ArrayAttr > getNoaliasScopes(); ::mlir::ArrayAttr getTbaaAttr() { auto attr = ::llvm::dyn_cast_or_null<::mlir::ArrayAttr>(getProperties().tbaa); return attr; } ::std::optional< ::mlir::ArrayAttr > getTbaa(); }; } // namespace detail template class DsLoadTr8_B64GenericAdaptor : public detail::DsLoadTr8_B64GenericAdaptorBase { using ValueT = ::llvm::detail::ValueOfRange; using Base = detail::DsLoadTr8_B64GenericAdaptorBase; static constexpr int odsIndex_ptr = 0; public: DsLoadTr8_B64GenericAdaptor(RangeT values, ::mlir::DictionaryAttr attrs, const Properties &properties, ::mlir::RegionRange regions = {}) : Base(attrs, properties, regions), odsOperands(values) {} DsLoadTr8_B64GenericAdaptor(RangeT values, ::mlir::DictionaryAttr attrs, ::mlir::PropertyRef properties, ::mlir::RegionRange regions = {}) : DsLoadTr8_B64GenericAdaptor(values, attrs, (properties ? *properties.as() : Properties{}), regions) {} DsLoadTr8_B64GenericAdaptor(RangeT values, ::mlir::DictionaryAttr attrs = nullptr) : DsLoadTr8_B64GenericAdaptor(values, attrs, Properties{}, {}) {} DsLoadTr8_B64GenericAdaptor(RangeT values, const DsLoadTr8_B64GenericAdaptorBase &base) : Base(base), odsOperands(values) {} template >> DsLoadTr8_B64GenericAdaptor(RangeT values, LateInst op) : Base(op), odsOperands(values) {} std::pair getODSOperandIndexAndLength(unsigned index) { return Base::getODSOperandIndexAndLength(index, odsOperands.size()); } RangeT getODSOperands(unsigned index) { auto valueRange = getODSOperandIndexAndLength(index); return {std::next(odsOperands.begin(), valueRange.first), std::next(odsOperands.begin(), valueRange.first + valueRange.second)}; } ValueT getPtr() { return (*getODSOperands(0).begin()); } RangeT getOperands() { return odsOperands; } private: RangeT odsOperands; }; class DsLoadTr8_B64Adaptor : public DsLoadTr8_B64GenericAdaptor<::mlir::ValueRange> { public: using DsLoadTr8_B64GenericAdaptor::DsLoadTr8_B64GenericAdaptor; DsLoadTr8_B64Adaptor(DsLoadTr8_B64 op); ::llvm::LogicalResult verify(::mlir::Location loc); }; class DsLoadTr8_B64 : public ::mlir::Op::Impl, ::mlir::OpTrait::ZeroSuccessors, ::mlir::OpTrait::OneOperand, ::mlir::OpTrait::OpInvariants, ::mlir::BytecodeOpInterface::Trait, ::mlir::LLVM::AliasAnalysisOpInterface::Trait, ::mlir::MemoryEffectOpInterface::Trait> { public: using Op::Op; using Op::print; using Adaptor = DsLoadTr8_B64Adaptor; template using GenericAdaptor = DsLoadTr8_B64GenericAdaptor; using FoldAdaptor = GenericAdaptor<::llvm::ArrayRef<::mlir::Attribute>>; static constexpr int odsIndex_ptr = 0; using Properties = FoldAdaptor::Properties; using ::mlir::LLVM::AliasAnalysisOpInterface::Trait::getAliasScopesOrNull; using ::mlir::LLVM::AliasAnalysisOpInterface::Trait::setAliasScopes; using ::mlir::LLVM::AliasAnalysisOpInterface::Trait::getNoAliasScopesOrNull; using ::mlir::LLVM::AliasAnalysisOpInterface::Trait::setNoAliasScopes; using ::mlir::LLVM::AliasAnalysisOpInterface::Trait::getTBAATagsOrNull; using ::mlir::LLVM::AliasAnalysisOpInterface::Trait::setTBAATags; static ::llvm::ArrayRef<::llvm::StringRef> getAttributeNames() { static ::llvm::StringRef attrNames[] = {::llvm::StringRef("alias_scopes"), ::llvm::StringRef("noalias_scopes"), ::llvm::StringRef("tbaa")}; return ::llvm::ArrayRef(attrNames); } ::mlir::StringAttr getAliasScopesAttrName() { return getAttributeNameForIndex(0); } static ::mlir::StringAttr getAliasScopesAttrName(::mlir::OperationName name) { return getAttributeNameForIndex(name, 0); } ::mlir::StringAttr getNoaliasScopesAttrName() { return getAttributeNameForIndex(1); } static ::mlir::StringAttr getNoaliasScopesAttrName(::mlir::OperationName name) { return getAttributeNameForIndex(name, 1); } ::mlir::StringAttr getTbaaAttrName() { return getAttributeNameForIndex(2); } static ::mlir::StringAttr getTbaaAttrName(::mlir::OperationName name) { return getAttributeNameForIndex(name, 2); } static constexpr ::llvm::StringLiteral getOperationName() { return ::llvm::StringLiteral("rocdl.ds.load.tr8.b64"); } std::pair getODSOperandIndexAndLength(unsigned index) { return {index, 1}; } ::mlir::Operation::operand_range getODSOperands(unsigned index) { auto valueRange = getODSOperandIndexAndLength(index); return {std::next(getOperation()->operand_begin(), valueRange.first), std::next(getOperation()->operand_begin(), valueRange.first + valueRange.second)}; } ::mlir::TypedValue<::mlir::LLVM::LLVMPointerType> getPtr() { return ::llvm::cast<::mlir::TypedValue<::mlir::LLVM::LLVMPointerType>>(*getODSOperands(0).begin()); } ::mlir::OpOperand &getPtrMutable() { auto range = getODSOperandIndexAndLength(0); return getOperation()->getOpOperand(range.first); } std::pair getODSResultIndexAndLength(unsigned index) { return {index, 1}; } ::mlir::Operation::result_range getODSResults(unsigned index) { auto valueRange = getODSResultIndexAndLength(index); return {std::next(getOperation()->result_begin(), valueRange.first), std::next(getOperation()->result_begin(), valueRange.first + valueRange.second)}; } ::mlir::TypedValue<::mlir::Type> getRes() { return ::llvm::cast<::mlir::TypedValue<::mlir::Type>>(*getODSResults(0).begin()); } static ::llvm::LogicalResult setPropertiesFromAttr(Properties &prop, ::mlir::Attribute attr, ::llvm::function_ref<::mlir::InFlightDiagnostic()> emitError); static ::mlir::Attribute getPropertiesAsAttr(::mlir::MLIRContext *ctx, const Properties &prop); static llvm::hash_code computePropertiesHash(const Properties &prop); static std::optional getInherentAttr(::mlir::MLIRContext *ctx, const Properties &prop, llvm::StringRef name); static void setInherentAttr(Properties &prop, llvm::StringRef name, mlir::Attribute value); static void populateInherentAttrs(::mlir::MLIRContext *ctx, const Properties &prop, ::mlir::NamedAttrList &attrs); static ::llvm::LogicalResult verifyInherentAttrs(::mlir::OperationName opName, ::mlir::NamedAttrList &attrs, llvm::function_ref<::mlir::InFlightDiagnostic()> emitError); static ::llvm::LogicalResult readProperties(::mlir::DialectBytecodeReader &reader, ::mlir::OperationState &state); void writeProperties(::mlir::DialectBytecodeWriter &writer); ::mlir::ArrayAttr getAliasScopesAttr() { return ::llvm::dyn_cast_or_null<::mlir::ArrayAttr>(getProperties().alias_scopes); } ::std::optional< ::mlir::ArrayAttr > getAliasScopes(); ::mlir::ArrayAttr getNoaliasScopesAttr() { return ::llvm::dyn_cast_or_null<::mlir::ArrayAttr>(getProperties().noalias_scopes); } ::std::optional< ::mlir::ArrayAttr > getNoaliasScopes(); ::mlir::ArrayAttr getTbaaAttr() { return ::llvm::dyn_cast_or_null<::mlir::ArrayAttr>(getProperties().tbaa); } ::std::optional< ::mlir::ArrayAttr > getTbaa(); void setAliasScopesAttr(::mlir::ArrayAttr attr) { getProperties().alias_scopes = attr; } void setNoaliasScopesAttr(::mlir::ArrayAttr attr) { getProperties().noalias_scopes = attr; } void setTbaaAttr(::mlir::ArrayAttr attr) { getProperties().tbaa = attr; } ::mlir::Attribute removeAliasScopesAttr() { auto attr = getProperties().alias_scopes; getProperties().alias_scopes = {}; return attr; } ::mlir::Attribute removeNoaliasScopesAttr() { auto attr = getProperties().noalias_scopes; getProperties().noalias_scopes = {}; return attr; } ::mlir::Attribute removeTbaaAttr() { auto attr = getProperties().tbaa; getProperties().tbaa = {}; return attr; } static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::Type res, ::mlir::Value ptr, /*optional*/::mlir::ArrayAttr alias_scopes, /*optional*/::mlir::ArrayAttr noalias_scopes, /*optional*/::mlir::ArrayAttr tbaa); static DsLoadTr8_B64 create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::Type res, ::mlir::Value ptr, /*optional*/::mlir::ArrayAttr alias_scopes, /*optional*/::mlir::ArrayAttr noalias_scopes, /*optional*/::mlir::ArrayAttr tbaa); static DsLoadTr8_B64 create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::Type res, ::mlir::Value ptr, /*optional*/::mlir::ArrayAttr alias_scopes, /*optional*/::mlir::ArrayAttr noalias_scopes, /*optional*/::mlir::ArrayAttr tbaa); static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::Value ptr, /*optional*/::mlir::ArrayAttr alias_scopes, /*optional*/::mlir::ArrayAttr noalias_scopes, /*optional*/::mlir::ArrayAttr tbaa); static DsLoadTr8_B64 create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::Value ptr, /*optional*/::mlir::ArrayAttr alias_scopes, /*optional*/::mlir::ArrayAttr noalias_scopes, /*optional*/::mlir::ArrayAttr tbaa); static DsLoadTr8_B64 create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::Value ptr, /*optional*/::mlir::ArrayAttr alias_scopes, /*optional*/::mlir::ArrayAttr noalias_scopes, /*optional*/::mlir::ArrayAttr tbaa); static void build(::mlir::OpBuilder &, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, ::llvm::ArrayRef<::mlir::NamedAttribute> attributes = {}); static DsLoadTr8_B64 create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, ::llvm::ArrayRef<::mlir::NamedAttribute> attributes = {}); static DsLoadTr8_B64 create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, ::llvm::ArrayRef<::mlir::NamedAttribute> attributes = {}); static void build(::mlir::OpBuilder &, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, const Properties &properties, ::llvm::ArrayRef<::mlir::NamedAttribute> discardableAttributes = {}); static DsLoadTr8_B64 create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, const Properties &properties, ::llvm::ArrayRef<::mlir::NamedAttribute> discardableAttributes = {}); static DsLoadTr8_B64 create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, const Properties &properties, ::llvm::ArrayRef<::mlir::NamedAttribute> discardableAttributes = {}); ::llvm::LogicalResult verifyInvariantsImpl(); ::llvm::LogicalResult verifyInvariants(); ::llvm::SmallVector<::mlir::Value> getAccessedOperands(); static ::mlir::ParseResult parse(::mlir::OpAsmParser &parser, ::mlir::OperationState &result); void print(::mlir::OpAsmPrinter &_odsPrinter); void getEffects(::llvm::SmallVectorImpl<::mlir::SideEffects::EffectInstance<::mlir::MemoryEffects::Effect>> &effects); private: ::mlir::StringAttr getAttributeNameForIndex(unsigned index) { return getAttributeNameForIndex((*this)->getName(), index); } static ::mlir::StringAttr getAttributeNameForIndex(::mlir::OperationName name, unsigned index) { assert(index < 3 && "invalid attribute index"); assert(name.getStringRef() == getOperationName() && "invalid operation name"); assert(name.isRegistered() && "Operation isn't registered, missing a " "dependent dialect loading?"); return name.getAttributeNames()[index]; } public: }; } // namespace mlir::ROCDL MLIR_DECLARE_EXPLICIT_TYPE_ID(::mlir::ROCDL::DsLoadTr8_B64) MLIR_DECLARE_EXPLICIT_TYPE_ID(::mlir::ROCDL::detail::DsLoadTr8_B64GenericAdaptorBase::Properties) namespace mlir::ROCDL { //===----------------------------------------------------------------------===// // ::mlir::ROCDL::DsSwizzleOp declarations //===----------------------------------------------------------------------===// namespace detail { class DsSwizzleOpGenericAdaptorBase { public: using Properties = ::mlir::EmptyProperties; protected: ::mlir::DictionaryAttr odsAttrs; ::std::optional<::mlir::OperationName> odsOpName; Properties properties; ::mlir::RegionRange odsRegions; public: DsSwizzleOpGenericAdaptorBase(::mlir::DictionaryAttr attrs, const Properties &properties, ::mlir::RegionRange regions = {}) : odsAttrs(attrs), properties(properties), odsRegions(regions) { if (odsAttrs) odsOpName.emplace("rocdl.ds_swizzle", odsAttrs.getContext()); } DsSwizzleOpGenericAdaptorBase(DsSwizzleOp op); std::pair getODSOperandIndexAndLength(unsigned index, unsigned odsOperandsSize) { return {index, 1}; } const Properties &getProperties() { return properties; } ::mlir::DictionaryAttr getAttributes() { return odsAttrs; } }; } // namespace detail template class DsSwizzleOpGenericAdaptor : public detail::DsSwizzleOpGenericAdaptorBase { using ValueT = ::llvm::detail::ValueOfRange; using Base = detail::DsSwizzleOpGenericAdaptorBase; static constexpr int odsIndex_src = 0; static constexpr int odsIndex_offset = 1; public: DsSwizzleOpGenericAdaptor(RangeT values, ::mlir::DictionaryAttr attrs, const Properties &properties, ::mlir::RegionRange regions = {}) : Base(attrs, properties, regions), odsOperands(values) {} DsSwizzleOpGenericAdaptor(RangeT values, ::mlir::DictionaryAttr attrs, ::mlir::PropertyRef properties, ::mlir::RegionRange regions = {}) : DsSwizzleOpGenericAdaptor(values, attrs, (properties ? *properties.as() : Properties{}), regions) {} DsSwizzleOpGenericAdaptor(RangeT values, ::mlir::DictionaryAttr attrs = nullptr) : DsSwizzleOpGenericAdaptor(values, attrs, Properties{}, {}) {} DsSwizzleOpGenericAdaptor(RangeT values, const DsSwizzleOpGenericAdaptorBase &base) : Base(base), odsOperands(values) {} template >> DsSwizzleOpGenericAdaptor(RangeT values, LateInst op) : Base(op), odsOperands(values) {} std::pair getODSOperandIndexAndLength(unsigned index) { return Base::getODSOperandIndexAndLength(index, odsOperands.size()); } RangeT getODSOperands(unsigned index) { auto valueRange = getODSOperandIndexAndLength(index); return {std::next(odsOperands.begin(), valueRange.first), std::next(odsOperands.begin(), valueRange.first + valueRange.second)}; } ValueT getSrc() { return (*getODSOperands(0).begin()); } ValueT getOffset() { return (*getODSOperands(1).begin()); } RangeT getOperands() { return odsOperands; } private: RangeT odsOperands; }; class DsSwizzleOpAdaptor : public DsSwizzleOpGenericAdaptor<::mlir::ValueRange> { public: using DsSwizzleOpGenericAdaptor::DsSwizzleOpGenericAdaptor; DsSwizzleOpAdaptor(DsSwizzleOp op); ::llvm::LogicalResult verify(::mlir::Location loc); }; class DsSwizzleOp : public ::mlir::Op::Impl, ::mlir::OpTrait::ZeroSuccessors, ::mlir::OpTrait::NOperands<2>::Impl, ::mlir::OpTrait::OpInvariants> { public: using Op::Op; using Op::print; using Adaptor = DsSwizzleOpAdaptor; template using GenericAdaptor = DsSwizzleOpGenericAdaptor; using FoldAdaptor = GenericAdaptor<::llvm::ArrayRef<::mlir::Attribute>>; static constexpr int odsIndex_src = 0; static constexpr int odsIndex_offset = 1; using Properties = FoldAdaptor::Properties; static ::llvm::ArrayRef<::llvm::StringRef> getAttributeNames() { return {}; } static constexpr ::llvm::StringLiteral getOperationName() { return ::llvm::StringLiteral("rocdl.ds_swizzle"); } std::pair getODSOperandIndexAndLength(unsigned index) { return {index, 1}; } ::mlir::Operation::operand_range getODSOperands(unsigned index) { auto valueRange = getODSOperandIndexAndLength(index); return {std::next(getOperation()->operand_begin(), valueRange.first), std::next(getOperation()->operand_begin(), valueRange.first + valueRange.second)}; } ::mlir::TypedValue<::mlir::IntegerType> getSrc() { return ::llvm::cast<::mlir::TypedValue<::mlir::IntegerType>>(*getODSOperands(0).begin()); } ::mlir::TypedValue<::mlir::IntegerType> getOffset() { return ::llvm::cast<::mlir::TypedValue<::mlir::IntegerType>>(*getODSOperands(1).begin()); } ::mlir::OpOperand &getSrcMutable() { auto range = getODSOperandIndexAndLength(0); return getOperation()->getOpOperand(range.first); } ::mlir::OpOperand &getOffsetMutable() { auto range = getODSOperandIndexAndLength(1); return getOperation()->getOpOperand(range.first); } std::pair getODSResultIndexAndLength(unsigned index) { return {index, 1}; } ::mlir::Operation::result_range getODSResults(unsigned index) { auto valueRange = getODSResultIndexAndLength(index); return {std::next(getOperation()->result_begin(), valueRange.first), std::next(getOperation()->result_begin(), valueRange.first + valueRange.second)}; } ::mlir::TypedValue<::mlir::IntegerType> getRes() { return ::llvm::cast<::mlir::TypedValue<::mlir::IntegerType>>(*getODSResults(0).begin()); } static ::llvm::LogicalResult setPropertiesFromAttr(Properties &prop, ::mlir::Attribute attr, ::llvm::function_ref<::mlir::InFlightDiagnostic()> emitError); static ::mlir::Attribute getPropertiesAsAttr(::mlir::MLIRContext *ctx, const Properties &prop); static llvm::hash_code computePropertiesHash(const Properties &prop); static std::optional getInherentAttr(::mlir::MLIRContext *ctx, const Properties &prop, llvm::StringRef name); static void setInherentAttr(Properties &prop, llvm::StringRef name, mlir::Attribute value); static void populateInherentAttrs(::mlir::MLIRContext *ctx, const Properties &prop, ::mlir::NamedAttrList &attrs); static ::llvm::LogicalResult verifyInherentAttrs(::mlir::OperationName opName, ::mlir::NamedAttrList &attrs, llvm::function_ref<::mlir::InFlightDiagnostic()> emitError); static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::Type res, ::mlir::Value src, ::mlir::Value offset); static DsSwizzleOp create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::Type res, ::mlir::Value src, ::mlir::Value offset); static DsSwizzleOp create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::Type res, ::mlir::Value src, ::mlir::Value offset); static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::Value src, ::mlir::Value offset); static DsSwizzleOp create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::Value src, ::mlir::Value offset); static DsSwizzleOp create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::Value src, ::mlir::Value offset); static void build(::mlir::OpBuilder &, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, ::llvm::ArrayRef<::mlir::NamedAttribute> attributes = {}); static DsSwizzleOp create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, ::llvm::ArrayRef<::mlir::NamedAttribute> attributes = {}); static DsSwizzleOp create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, ::llvm::ArrayRef<::mlir::NamedAttribute> attributes = {}); static void build(::mlir::OpBuilder &, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, const Properties &properties, ::llvm::ArrayRef<::mlir::NamedAttribute> discardableAttributes = {}); static DsSwizzleOp create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, const Properties &properties, ::llvm::ArrayRef<::mlir::NamedAttribute> discardableAttributes = {}); static DsSwizzleOp create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, const Properties &properties, ::llvm::ArrayRef<::mlir::NamedAttribute> discardableAttributes = {}); ::llvm::LogicalResult verifyInvariantsImpl(); ::llvm::LogicalResult verifyInvariants(); static ::mlir::ParseResult parse(::mlir::OpAsmParser &parser, ::mlir::OperationState &result); void print(::mlir::OpAsmPrinter &_odsPrinter); public: }; } // namespace mlir::ROCDL MLIR_DECLARE_EXPLICIT_TYPE_ID(::mlir::ROCDL::DsSwizzleOp) namespace mlir::ROCDL { //===----------------------------------------------------------------------===// // ::mlir::ROCDL::FMed3Op declarations //===----------------------------------------------------------------------===// namespace detail { class FMed3OpGenericAdaptorBase { public: using Properties = ::mlir::EmptyProperties; protected: ::mlir::DictionaryAttr odsAttrs; ::std::optional<::mlir::OperationName> odsOpName; Properties properties; ::mlir::RegionRange odsRegions; public: FMed3OpGenericAdaptorBase(::mlir::DictionaryAttr attrs, const Properties &properties, ::mlir::RegionRange regions = {}) : odsAttrs(attrs), properties(properties), odsRegions(regions) { if (odsAttrs) odsOpName.emplace("rocdl.fmed3", odsAttrs.getContext()); } FMed3OpGenericAdaptorBase(FMed3Op op); std::pair getODSOperandIndexAndLength(unsigned index, unsigned odsOperandsSize) { return {index, 1}; } const Properties &getProperties() { return properties; } ::mlir::DictionaryAttr getAttributes() { return odsAttrs; } }; } // namespace detail template class FMed3OpGenericAdaptor : public detail::FMed3OpGenericAdaptorBase { using ValueT = ::llvm::detail::ValueOfRange; using Base = detail::FMed3OpGenericAdaptorBase; static constexpr int odsIndex_src0 = 0; static constexpr int odsIndex_src1 = 1; static constexpr int odsIndex_src2 = 2; public: FMed3OpGenericAdaptor(RangeT values, ::mlir::DictionaryAttr attrs, const Properties &properties, ::mlir::RegionRange regions = {}) : Base(attrs, properties, regions), odsOperands(values) {} FMed3OpGenericAdaptor(RangeT values, ::mlir::DictionaryAttr attrs, ::mlir::PropertyRef properties, ::mlir::RegionRange regions = {}) : FMed3OpGenericAdaptor(values, attrs, (properties ? *properties.as() : Properties{}), regions) {} FMed3OpGenericAdaptor(RangeT values, ::mlir::DictionaryAttr attrs = nullptr) : FMed3OpGenericAdaptor(values, attrs, Properties{}, {}) {} FMed3OpGenericAdaptor(RangeT values, const FMed3OpGenericAdaptorBase &base) : Base(base), odsOperands(values) {} template >> FMed3OpGenericAdaptor(RangeT values, LateInst op) : Base(op), odsOperands(values) {} std::pair getODSOperandIndexAndLength(unsigned index) { return Base::getODSOperandIndexAndLength(index, odsOperands.size()); } RangeT getODSOperands(unsigned index) { auto valueRange = getODSOperandIndexAndLength(index); return {std::next(odsOperands.begin(), valueRange.first), std::next(odsOperands.begin(), valueRange.first + valueRange.second)}; } ValueT getSrc0() { return (*getODSOperands(0).begin()); } ValueT getSrc1() { return (*getODSOperands(1).begin()); } ValueT getSrc2() { return (*getODSOperands(2).begin()); } RangeT getOperands() { return odsOperands; } private: RangeT odsOperands; }; class FMed3OpAdaptor : public FMed3OpGenericAdaptor<::mlir::ValueRange> { public: using FMed3OpGenericAdaptor::FMed3OpGenericAdaptor; FMed3OpAdaptor(FMed3Op op); ::llvm::LogicalResult verify(::mlir::Location loc); }; class FMed3Op : public ::mlir::Op::Impl, ::mlir::OpTrait::ZeroSuccessors, ::mlir::OpTrait::NOperands<3>::Impl, ::mlir::OpTrait::OpInvariants, ::mlir::ConditionallySpeculatable::Trait, ::mlir::OpTrait::AlwaysSpeculatableImplTrait, ::mlir::MemoryEffectOpInterface::Trait> { public: using Op::Op; using Op::print; using Adaptor = FMed3OpAdaptor; template using GenericAdaptor = FMed3OpGenericAdaptor; using FoldAdaptor = GenericAdaptor<::llvm::ArrayRef<::mlir::Attribute>>; static constexpr int odsIndex_src0 = 0; static constexpr int odsIndex_src1 = 1; static constexpr int odsIndex_src2 = 2; using Properties = FoldAdaptor::Properties; static ::llvm::ArrayRef<::llvm::StringRef> getAttributeNames() { return {}; } static constexpr ::llvm::StringLiteral getOperationName() { return ::llvm::StringLiteral("rocdl.fmed3"); } std::pair getODSOperandIndexAndLength(unsigned index) { return {index, 1}; } ::mlir::Operation::operand_range getODSOperands(unsigned index) { auto valueRange = getODSOperandIndexAndLength(index); return {std::next(getOperation()->operand_begin(), valueRange.first), std::next(getOperation()->operand_begin(), valueRange.first + valueRange.second)}; } ::mlir::TypedValue<::mlir::Type> getSrc0() { return ::llvm::cast<::mlir::TypedValue<::mlir::Type>>(*getODSOperands(0).begin()); } ::mlir::TypedValue<::mlir::Type> getSrc1() { return ::llvm::cast<::mlir::TypedValue<::mlir::Type>>(*getODSOperands(1).begin()); } ::mlir::TypedValue<::mlir::Type> getSrc2() { return ::llvm::cast<::mlir::TypedValue<::mlir::Type>>(*getODSOperands(2).begin()); } ::mlir::OpOperand &getSrc0Mutable() { auto range = getODSOperandIndexAndLength(0); return getOperation()->getOpOperand(range.first); } ::mlir::OpOperand &getSrc1Mutable() { auto range = getODSOperandIndexAndLength(1); return getOperation()->getOpOperand(range.first); } ::mlir::OpOperand &getSrc2Mutable() { auto range = getODSOperandIndexAndLength(2); return getOperation()->getOpOperand(range.first); } std::pair getODSResultIndexAndLength(unsigned index) { return {index, 1}; } ::mlir::Operation::result_range getODSResults(unsigned index) { auto valueRange = getODSResultIndexAndLength(index); return {std::next(getOperation()->result_begin(), valueRange.first), std::next(getOperation()->result_begin(), valueRange.first + valueRange.second)}; } ::mlir::TypedValue<::mlir::Type> getRes() { return ::llvm::cast<::mlir::TypedValue<::mlir::Type>>(*getODSResults(0).begin()); } static ::llvm::LogicalResult setPropertiesFromAttr(Properties &prop, ::mlir::Attribute attr, ::llvm::function_ref<::mlir::InFlightDiagnostic()> emitError); static ::mlir::Attribute getPropertiesAsAttr(::mlir::MLIRContext *ctx, const Properties &prop); static llvm::hash_code computePropertiesHash(const Properties &prop); static std::optional getInherentAttr(::mlir::MLIRContext *ctx, const Properties &prop, llvm::StringRef name); static void setInherentAttr(Properties &prop, llvm::StringRef name, mlir::Attribute value); static void populateInherentAttrs(::mlir::MLIRContext *ctx, const Properties &prop, ::mlir::NamedAttrList &attrs); static ::llvm::LogicalResult verifyInherentAttrs(::mlir::OperationName opName, ::mlir::NamedAttrList &attrs, llvm::function_ref<::mlir::InFlightDiagnostic()> emitError); static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::Type res, ::mlir::Value src0, ::mlir::Value src1, ::mlir::Value src2); static FMed3Op create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::Type res, ::mlir::Value src0, ::mlir::Value src1, ::mlir::Value src2); static FMed3Op create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::Type res, ::mlir::Value src0, ::mlir::Value src1, ::mlir::Value src2); static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::Value src0, ::mlir::Value src1, ::mlir::Value src2); static FMed3Op create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::Value src0, ::mlir::Value src1, ::mlir::Value src2); static FMed3Op create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::Value src0, ::mlir::Value src1, ::mlir::Value src2); static void build(::mlir::OpBuilder &, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, ::llvm::ArrayRef<::mlir::NamedAttribute> attributes = {}); static FMed3Op create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, ::llvm::ArrayRef<::mlir::NamedAttribute> attributes = {}); static FMed3Op create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, ::llvm::ArrayRef<::mlir::NamedAttribute> attributes = {}); static void build(::mlir::OpBuilder &, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, const Properties &properties, ::llvm::ArrayRef<::mlir::NamedAttribute> discardableAttributes = {}); static FMed3Op create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, const Properties &properties, ::llvm::ArrayRef<::mlir::NamedAttribute> discardableAttributes = {}); static FMed3Op create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, const Properties &properties, ::llvm::ArrayRef<::mlir::NamedAttribute> discardableAttributes = {}); ::llvm::LogicalResult verifyInvariantsImpl(); ::llvm::LogicalResult verifyInvariants(); static ::mlir::ParseResult parse(::mlir::OpAsmParser &parser, ::mlir::OperationState &result); void print(::mlir::OpAsmPrinter &_odsPrinter); void getEffects(::llvm::SmallVectorImpl<::mlir::SideEffects::EffectInstance<::mlir::MemoryEffects::Effect>> &effects); public: }; } // namespace mlir::ROCDL MLIR_DECLARE_EXPLICIT_TYPE_ID(::mlir::ROCDL::FMed3Op) namespace mlir::ROCDL { //===----------------------------------------------------------------------===// // ::mlir::ROCDL::FlatPrefetchOp declarations //===----------------------------------------------------------------------===// namespace detail { class FlatPrefetchOpGenericAdaptorBase { public: struct Properties { using alias_scopesTy = ::mlir::ArrayAttr; alias_scopesTy alias_scopes; auto getAliasScopes() const { auto &propStorage = this->alias_scopes; return ::llvm::dyn_cast_or_null<::mlir::ArrayAttr>(propStorage); } void setAliasScopes(const ::mlir::ArrayAttr &propValue) { this->alias_scopes = propValue; } using cachePolicyTy = ::mlir::Attribute; cachePolicyTy cachePolicy; auto getCachePolicy() const { auto &propStorage = this->cachePolicy; return ::llvm::dyn_cast_or_null<::mlir::Attribute>(propStorage); } void setCachePolicy(const ::mlir::Attribute &propValue) { this->cachePolicy = propValue; } using noalias_scopesTy = ::mlir::ArrayAttr; noalias_scopesTy noalias_scopes; auto getNoaliasScopes() const { auto &propStorage = this->noalias_scopes; return ::llvm::dyn_cast_or_null<::mlir::ArrayAttr>(propStorage); } void setNoaliasScopes(const ::mlir::ArrayAttr &propValue) { this->noalias_scopes = propValue; } using tbaaTy = ::mlir::ArrayAttr; tbaaTy tbaa; auto getTbaa() const { auto &propStorage = this->tbaa; return ::llvm::dyn_cast_or_null<::mlir::ArrayAttr>(propStorage); } void setTbaa(const ::mlir::ArrayAttr &propValue) { this->tbaa = propValue; } bool operator==(const Properties &rhs) const { return rhs.alias_scopes == this->alias_scopes && rhs.cachePolicy == this->cachePolicy && rhs.noalias_scopes == this->noalias_scopes && rhs.tbaa == this->tbaa && true; } bool operator!=(const Properties &rhs) const { return !(*this == rhs); } }; protected: ::mlir::DictionaryAttr odsAttrs; ::std::optional<::mlir::OperationName> odsOpName; Properties properties; ::mlir::RegionRange odsRegions; public: FlatPrefetchOpGenericAdaptorBase(::mlir::DictionaryAttr attrs, const Properties &properties, ::mlir::RegionRange regions = {}) : odsAttrs(attrs), properties(properties), odsRegions(regions) { if (odsAttrs) odsOpName.emplace("rocdl.flat.prefetch", odsAttrs.getContext()); } FlatPrefetchOpGenericAdaptorBase(FlatPrefetchOp op); std::pair getODSOperandIndexAndLength(unsigned index, unsigned odsOperandsSize) { return {index, 1}; } const Properties &getProperties() { return properties; } ::mlir::DictionaryAttr getAttributes() { return odsAttrs; } ::mlir::Attribute getCachePolicyAttr(); ::mlir::Attribute getCachePolicy(); ::mlir::ArrayAttr getAliasScopesAttr() { auto attr = ::llvm::dyn_cast_or_null<::mlir::ArrayAttr>(getProperties().alias_scopes); return attr; } ::std::optional< ::mlir::ArrayAttr > getAliasScopes(); ::mlir::ArrayAttr getNoaliasScopesAttr() { auto attr = ::llvm::dyn_cast_or_null<::mlir::ArrayAttr>(getProperties().noalias_scopes); return attr; } ::std::optional< ::mlir::ArrayAttr > getNoaliasScopes(); ::mlir::ArrayAttr getTbaaAttr() { auto attr = ::llvm::dyn_cast_or_null<::mlir::ArrayAttr>(getProperties().tbaa); return attr; } ::std::optional< ::mlir::ArrayAttr > getTbaa(); }; } // namespace detail template class FlatPrefetchOpGenericAdaptor : public detail::FlatPrefetchOpGenericAdaptorBase { using ValueT = ::llvm::detail::ValueOfRange; using Base = detail::FlatPrefetchOpGenericAdaptorBase; static constexpr int odsIndex_ptr = 0; public: FlatPrefetchOpGenericAdaptor(RangeT values, ::mlir::DictionaryAttr attrs, const Properties &properties, ::mlir::RegionRange regions = {}) : Base(attrs, properties, regions), odsOperands(values) {} FlatPrefetchOpGenericAdaptor(RangeT values, ::mlir::DictionaryAttr attrs, ::mlir::PropertyRef properties, ::mlir::RegionRange regions = {}) : FlatPrefetchOpGenericAdaptor(values, attrs, (properties ? *properties.as() : Properties{}), regions) {} FlatPrefetchOpGenericAdaptor(RangeT values, ::mlir::DictionaryAttr attrs = nullptr) : FlatPrefetchOpGenericAdaptor(values, attrs, Properties{}, {}) {} FlatPrefetchOpGenericAdaptor(RangeT values, const FlatPrefetchOpGenericAdaptorBase &base) : Base(base), odsOperands(values) {} template >> FlatPrefetchOpGenericAdaptor(RangeT values, LateInst op) : Base(op), odsOperands(values) {} std::pair getODSOperandIndexAndLength(unsigned index) { return Base::getODSOperandIndexAndLength(index, odsOperands.size()); } RangeT getODSOperands(unsigned index) { auto valueRange = getODSOperandIndexAndLength(index); return {std::next(odsOperands.begin(), valueRange.first), std::next(odsOperands.begin(), valueRange.first + valueRange.second)}; } ValueT getPtr() { return (*getODSOperands(0).begin()); } RangeT getOperands() { return odsOperands; } private: RangeT odsOperands; }; class FlatPrefetchOpAdaptor : public FlatPrefetchOpGenericAdaptor<::mlir::ValueRange> { public: using FlatPrefetchOpGenericAdaptor::FlatPrefetchOpGenericAdaptor; FlatPrefetchOpAdaptor(FlatPrefetchOp op); ::llvm::LogicalResult verify(::mlir::Location loc); }; class FlatPrefetchOp : public ::mlir::Op { public: using Op::Op; using Op::print; using Adaptor = FlatPrefetchOpAdaptor; template using GenericAdaptor = FlatPrefetchOpGenericAdaptor; using FoldAdaptor = GenericAdaptor<::llvm::ArrayRef<::mlir::Attribute>>; static constexpr int odsIndex_ptr = 0; using Properties = FoldAdaptor::Properties; using ::mlir::LLVM::AliasAnalysisOpInterface::Trait::getAliasScopesOrNull; using ::mlir::LLVM::AliasAnalysisOpInterface::Trait::setAliasScopes; using ::mlir::LLVM::AliasAnalysisOpInterface::Trait::getNoAliasScopesOrNull; using ::mlir::LLVM::AliasAnalysisOpInterface::Trait::setNoAliasScopes; using ::mlir::LLVM::AliasAnalysisOpInterface::Trait::getTBAATagsOrNull; using ::mlir::LLVM::AliasAnalysisOpInterface::Trait::setTBAATags; static ::llvm::ArrayRef<::llvm::StringRef> getAttributeNames() { static ::llvm::StringRef attrNames[] = {::llvm::StringRef("alias_scopes"), ::llvm::StringRef("cachePolicy"), ::llvm::StringRef("noalias_scopes"), ::llvm::StringRef("tbaa")}; return ::llvm::ArrayRef(attrNames); } ::mlir::StringAttr getAliasScopesAttrName() { return getAttributeNameForIndex(0); } static ::mlir::StringAttr getAliasScopesAttrName(::mlir::OperationName name) { return getAttributeNameForIndex(name, 0); } ::mlir::StringAttr getCachePolicyAttrName() { return getAttributeNameForIndex(1); } static ::mlir::StringAttr getCachePolicyAttrName(::mlir::OperationName name) { return getAttributeNameForIndex(name, 1); } ::mlir::StringAttr getNoaliasScopesAttrName() { return getAttributeNameForIndex(2); } static ::mlir::StringAttr getNoaliasScopesAttrName(::mlir::OperationName name) { return getAttributeNameForIndex(name, 2); } ::mlir::StringAttr getTbaaAttrName() { return getAttributeNameForIndex(3); } static ::mlir::StringAttr getTbaaAttrName(::mlir::OperationName name) { return getAttributeNameForIndex(name, 3); } static constexpr ::llvm::StringLiteral getOperationName() { return ::llvm::StringLiteral("rocdl.flat.prefetch"); } std::pair getODSOperandIndexAndLength(unsigned index) { return {index, 1}; } ::mlir::Operation::operand_range getODSOperands(unsigned index) { auto valueRange = getODSOperandIndexAndLength(index); return {std::next(getOperation()->operand_begin(), valueRange.first), std::next(getOperation()->operand_begin(), valueRange.first + valueRange.second)}; } ::mlir::TypedValue<::mlir::LLVM::LLVMPointerType> getPtr() { return ::llvm::cast<::mlir::TypedValue<::mlir::LLVM::LLVMPointerType>>(*getODSOperands(0).begin()); } ::mlir::OpOperand &getPtrMutable() { auto range = getODSOperandIndexAndLength(0); return getOperation()->getOpOperand(range.first); } std::pair getODSResultIndexAndLength(unsigned index) { return {index, 1}; } ::mlir::Operation::result_range getODSResults(unsigned index) { auto valueRange = getODSResultIndexAndLength(index); return {std::next(getOperation()->result_begin(), valueRange.first), std::next(getOperation()->result_begin(), valueRange.first + valueRange.second)}; } static ::llvm::LogicalResult setPropertiesFromAttr(Properties &prop, ::mlir::Attribute attr, ::llvm::function_ref<::mlir::InFlightDiagnostic()> emitError); static ::mlir::Attribute getPropertiesAsAttr(::mlir::MLIRContext *ctx, const Properties &prop); static llvm::hash_code computePropertiesHash(const Properties &prop); static std::optional getInherentAttr(::mlir::MLIRContext *ctx, const Properties &prop, llvm::StringRef name); static void setInherentAttr(Properties &prop, llvm::StringRef name, mlir::Attribute value); static void populateInherentAttrs(::mlir::MLIRContext *ctx, const Properties &prop, ::mlir::NamedAttrList &attrs); static ::llvm::LogicalResult verifyInherentAttrs(::mlir::OperationName opName, ::mlir::NamedAttrList &attrs, llvm::function_ref<::mlir::InFlightDiagnostic()> emitError); static ::llvm::LogicalResult readProperties(::mlir::DialectBytecodeReader &reader, ::mlir::OperationState &state); void writeProperties(::mlir::DialectBytecodeWriter &writer); ::mlir::Attribute getCachePolicyAttr() { return ::llvm::dyn_cast_or_null<::mlir::Attribute>(getProperties().cachePolicy); } ::mlir::Attribute getCachePolicy(); ::mlir::ArrayAttr getAliasScopesAttr() { return ::llvm::dyn_cast_or_null<::mlir::ArrayAttr>(getProperties().alias_scopes); } ::std::optional< ::mlir::ArrayAttr > getAliasScopes(); ::mlir::ArrayAttr getNoaliasScopesAttr() { return ::llvm::dyn_cast_or_null<::mlir::ArrayAttr>(getProperties().noalias_scopes); } ::std::optional< ::mlir::ArrayAttr > getNoaliasScopes(); ::mlir::ArrayAttr getTbaaAttr() { return ::llvm::dyn_cast_or_null<::mlir::ArrayAttr>(getProperties().tbaa); } ::std::optional< ::mlir::ArrayAttr > getTbaa(); void setCachePolicyAttr(::mlir::Attribute attr) { getProperties().cachePolicy = attr; } void setAliasScopesAttr(::mlir::ArrayAttr attr) { getProperties().alias_scopes = attr; } void setNoaliasScopesAttr(::mlir::ArrayAttr attr) { getProperties().noalias_scopes = attr; } void setTbaaAttr(::mlir::ArrayAttr attr) { getProperties().tbaa = attr; } ::mlir::Attribute removeAliasScopesAttr() { auto attr = getProperties().alias_scopes; getProperties().alias_scopes = {}; return attr; } ::mlir::Attribute removeNoaliasScopesAttr() { auto attr = getProperties().noalias_scopes; getProperties().noalias_scopes = {}; return attr; } ::mlir::Attribute removeTbaaAttr() { auto attr = getProperties().tbaa; getProperties().tbaa = {}; return attr; } static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::Value ptr, ::mlir::Attribute cachePolicy, /*optional*/::mlir::ArrayAttr alias_scopes, /*optional*/::mlir::ArrayAttr noalias_scopes, /*optional*/::mlir::ArrayAttr tbaa); static FlatPrefetchOp create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::Value ptr, ::mlir::Attribute cachePolicy, /*optional*/::mlir::ArrayAttr alias_scopes, /*optional*/::mlir::ArrayAttr noalias_scopes, /*optional*/::mlir::ArrayAttr tbaa); static FlatPrefetchOp create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::Value ptr, ::mlir::Attribute cachePolicy, /*optional*/::mlir::ArrayAttr alias_scopes, /*optional*/::mlir::ArrayAttr noalias_scopes, /*optional*/::mlir::ArrayAttr tbaa); static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::Value ptr, ::mlir::Attribute cachePolicy, /*optional*/::mlir::ArrayAttr alias_scopes, /*optional*/::mlir::ArrayAttr noalias_scopes, /*optional*/::mlir::ArrayAttr tbaa); static FlatPrefetchOp create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::Value ptr, ::mlir::Attribute cachePolicy, /*optional*/::mlir::ArrayAttr alias_scopes, /*optional*/::mlir::ArrayAttr noalias_scopes, /*optional*/::mlir::ArrayAttr tbaa); static FlatPrefetchOp create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::Value ptr, ::mlir::Attribute cachePolicy, /*optional*/::mlir::ArrayAttr alias_scopes, /*optional*/::mlir::ArrayAttr noalias_scopes, /*optional*/::mlir::ArrayAttr tbaa); static void build(::mlir::OpBuilder &, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, ::llvm::ArrayRef<::mlir::NamedAttribute> attributes = {}); static FlatPrefetchOp create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, ::llvm::ArrayRef<::mlir::NamedAttribute> attributes = {}); static FlatPrefetchOp create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, ::llvm::ArrayRef<::mlir::NamedAttribute> attributes = {}); static void build(::mlir::OpBuilder &, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, const Properties &properties, ::llvm::ArrayRef<::mlir::NamedAttribute> discardableAttributes = {}); static FlatPrefetchOp create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, const Properties &properties, ::llvm::ArrayRef<::mlir::NamedAttribute> discardableAttributes = {}); static FlatPrefetchOp create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, const Properties &properties, ::llvm::ArrayRef<::mlir::NamedAttribute> discardableAttributes = {}); static void populateDefaultProperties(::mlir::OperationName opName, Properties &properties); ::llvm::LogicalResult verifyInvariantsImpl(); ::llvm::LogicalResult verifyInvariants(); ::llvm::SmallVector<::mlir::Value> getAccessedOperands(); static ::mlir::ParseResult parse(::mlir::OpAsmParser &parser, ::mlir::OperationState &result); void print(::mlir::OpAsmPrinter &_odsPrinter); void getEffects(::llvm::SmallVectorImpl<::mlir::SideEffects::EffectInstance<::mlir::MemoryEffects::Effect>> &effects); private: ::mlir::StringAttr getAttributeNameForIndex(unsigned index) { return getAttributeNameForIndex((*this)->getName(), index); } static ::mlir::StringAttr getAttributeNameForIndex(::mlir::OperationName name, unsigned index) { assert(index < 4 && "invalid attribute index"); assert(name.getStringRef() == getOperationName() && "invalid operation name"); assert(name.isRegistered() && "Operation isn't registered, missing a " "dependent dialect loading?"); return name.getAttributeNames()[index]; } public: }; } // namespace mlir::ROCDL MLIR_DECLARE_EXPLICIT_TYPE_ID(::mlir::ROCDL::FlatPrefetchOp) MLIR_DECLARE_EXPLICIT_TYPE_ID(::mlir::ROCDL::detail::FlatPrefetchOpGenericAdaptorBase::Properties) namespace mlir::ROCDL { //===----------------------------------------------------------------------===// // ::mlir::ROCDL::GetBarrierStateOp declarations //===----------------------------------------------------------------------===// namespace detail { class GetBarrierStateOpGenericAdaptorBase { public: struct Properties { using idTy = ::mlir::IntegerAttr; idTy id; auto getId() const { auto &propStorage = this->id; return ::llvm::cast<::mlir::IntegerAttr>(propStorage); } void setId(const ::mlir::IntegerAttr &propValue) { this->id = propValue; } bool operator==(const Properties &rhs) const { return rhs.id == this->id && true; } bool operator!=(const Properties &rhs) const { return !(*this == rhs); } }; protected: ::mlir::DictionaryAttr odsAttrs; ::std::optional<::mlir::OperationName> odsOpName; Properties properties; ::mlir::RegionRange odsRegions; public: GetBarrierStateOpGenericAdaptorBase(::mlir::DictionaryAttr attrs, const Properties &properties, ::mlir::RegionRange regions = {}) : odsAttrs(attrs), properties(properties), odsRegions(regions) { if (odsAttrs) odsOpName.emplace("rocdl.s.get.barrier.state", odsAttrs.getContext()); } GetBarrierStateOpGenericAdaptorBase(GetBarrierStateOp op); std::pair getODSOperandIndexAndLength(unsigned index, unsigned odsOperandsSize) { return {index, 1}; } const Properties &getProperties() { return properties; } ::mlir::DictionaryAttr getAttributes() { return odsAttrs; } ::mlir::IntegerAttr getIdAttr() { auto attr = ::llvm::cast<::mlir::IntegerAttr>(getProperties().id); return attr; } uint32_t getId(); }; } // namespace detail template class GetBarrierStateOpGenericAdaptor : public detail::GetBarrierStateOpGenericAdaptorBase { using ValueT = ::llvm::detail::ValueOfRange; using Base = detail::GetBarrierStateOpGenericAdaptorBase; public: GetBarrierStateOpGenericAdaptor(RangeT values, ::mlir::DictionaryAttr attrs, const Properties &properties, ::mlir::RegionRange regions = {}) : Base(attrs, properties, regions), odsOperands(values) {} GetBarrierStateOpGenericAdaptor(RangeT values, ::mlir::DictionaryAttr attrs, ::mlir::PropertyRef properties, ::mlir::RegionRange regions = {}) : GetBarrierStateOpGenericAdaptor(values, attrs, (properties ? *properties.as() : Properties{}), regions) {} GetBarrierStateOpGenericAdaptor(RangeT values, ::mlir::DictionaryAttr attrs = nullptr) : GetBarrierStateOpGenericAdaptor(values, attrs, Properties{}, {}) {} GetBarrierStateOpGenericAdaptor(RangeT values, const GetBarrierStateOpGenericAdaptorBase &base) : Base(base), odsOperands(values) {} template >> GetBarrierStateOpGenericAdaptor(RangeT values, LateInst op) : Base(op), odsOperands(values) {} std::pair getODSOperandIndexAndLength(unsigned index) { return Base::getODSOperandIndexAndLength(index, odsOperands.size()); } RangeT getODSOperands(unsigned index) { auto valueRange = getODSOperandIndexAndLength(index); return {std::next(odsOperands.begin(), valueRange.first), std::next(odsOperands.begin(), valueRange.first + valueRange.second)}; } RangeT getOperands() { return odsOperands; } private: RangeT odsOperands; }; class GetBarrierStateOpAdaptor : public GetBarrierStateOpGenericAdaptor<::mlir::ValueRange> { public: using GetBarrierStateOpGenericAdaptor::GetBarrierStateOpGenericAdaptor; GetBarrierStateOpAdaptor(GetBarrierStateOp op); ::llvm::LogicalResult verify(::mlir::Location loc); }; class GetBarrierStateOp : public ::mlir::Op::Impl, ::mlir::OpTrait::ZeroSuccessors, ::mlir::OpTrait::ZeroOperands, ::mlir::OpTrait::OpInvariants, ::mlir::BytecodeOpInterface::Trait> { public: using Op::Op; using Op::print; using Adaptor = GetBarrierStateOpAdaptor; template using GenericAdaptor = GetBarrierStateOpGenericAdaptor; using FoldAdaptor = GenericAdaptor<::llvm::ArrayRef<::mlir::Attribute>>; using Properties = FoldAdaptor::Properties; static ::llvm::ArrayRef<::llvm::StringRef> getAttributeNames() { static ::llvm::StringRef attrNames[] = {::llvm::StringRef("id")}; return ::llvm::ArrayRef(attrNames); } ::mlir::StringAttr getIdAttrName() { return getAttributeNameForIndex(0); } static ::mlir::StringAttr getIdAttrName(::mlir::OperationName name) { return getAttributeNameForIndex(name, 0); } static constexpr ::llvm::StringLiteral getOperationName() { return ::llvm::StringLiteral("rocdl.s.get.barrier.state"); } std::pair getODSOperandIndexAndLength(unsigned index) { return {index, 1}; } ::mlir::Operation::operand_range getODSOperands(unsigned index) { auto valueRange = getODSOperandIndexAndLength(index); return {std::next(getOperation()->operand_begin(), valueRange.first), std::next(getOperation()->operand_begin(), valueRange.first + valueRange.second)}; } std::pair getODSResultIndexAndLength(unsigned index) { return {index, 1}; } ::mlir::Operation::result_range getODSResults(unsigned index) { auto valueRange = getODSResultIndexAndLength(index); return {std::next(getOperation()->result_begin(), valueRange.first), std::next(getOperation()->result_begin(), valueRange.first + valueRange.second)}; } ::mlir::TypedValue<::mlir::IntegerType> getRes() { return ::llvm::cast<::mlir::TypedValue<::mlir::IntegerType>>(*getODSResults(0).begin()); } static ::llvm::LogicalResult setPropertiesFromAttr(Properties &prop, ::mlir::Attribute attr, ::llvm::function_ref<::mlir::InFlightDiagnostic()> emitError); static ::mlir::Attribute getPropertiesAsAttr(::mlir::MLIRContext *ctx, const Properties &prop); static llvm::hash_code computePropertiesHash(const Properties &prop); static std::optional getInherentAttr(::mlir::MLIRContext *ctx, const Properties &prop, llvm::StringRef name); static void setInherentAttr(Properties &prop, llvm::StringRef name, mlir::Attribute value); static void populateInherentAttrs(::mlir::MLIRContext *ctx, const Properties &prop, ::mlir::NamedAttrList &attrs); static ::llvm::LogicalResult verifyInherentAttrs(::mlir::OperationName opName, ::mlir::NamedAttrList &attrs, llvm::function_ref<::mlir::InFlightDiagnostic()> emitError); static ::llvm::LogicalResult readProperties(::mlir::DialectBytecodeReader &reader, ::mlir::OperationState &state); void writeProperties(::mlir::DialectBytecodeWriter &writer); ::mlir::IntegerAttr getIdAttr() { return ::llvm::cast<::mlir::IntegerAttr>(getProperties().id); } uint32_t getId(); void setIdAttr(::mlir::IntegerAttr attr) { getProperties().id = attr; } void setId(uint32_t attrValue); static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::Type res, ::mlir::IntegerAttr id); static GetBarrierStateOp create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::Type res, ::mlir::IntegerAttr id); static GetBarrierStateOp create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::Type res, ::mlir::IntegerAttr id); static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::IntegerAttr id); static GetBarrierStateOp create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::IntegerAttr id); static GetBarrierStateOp create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::IntegerAttr id); static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::Type res, uint32_t id); static GetBarrierStateOp create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::Type res, uint32_t id); static GetBarrierStateOp create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::Type res, uint32_t id); static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, uint32_t id); static GetBarrierStateOp create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, uint32_t id); static GetBarrierStateOp create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, uint32_t id); static void build(::mlir::OpBuilder &, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, ::llvm::ArrayRef<::mlir::NamedAttribute> attributes = {}); static GetBarrierStateOp create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, ::llvm::ArrayRef<::mlir::NamedAttribute> attributes = {}); static GetBarrierStateOp create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, ::llvm::ArrayRef<::mlir::NamedAttribute> attributes = {}); static void build(::mlir::OpBuilder &, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, const Properties &properties, ::llvm::ArrayRef<::mlir::NamedAttribute> discardableAttributes = {}); static GetBarrierStateOp create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, const Properties &properties, ::llvm::ArrayRef<::mlir::NamedAttribute> discardableAttributes = {}); static GetBarrierStateOp create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, const Properties &properties, ::llvm::ArrayRef<::mlir::NamedAttribute> discardableAttributes = {}); ::llvm::LogicalResult verifyInvariantsImpl(); ::llvm::LogicalResult verifyInvariants(); static ::mlir::ParseResult parse(::mlir::OpAsmParser &parser, ::mlir::OperationState &result); void print(::mlir::OpAsmPrinter &_odsPrinter); private: ::mlir::StringAttr getAttributeNameForIndex(unsigned index) { return getAttributeNameForIndex((*this)->getName(), index); } static ::mlir::StringAttr getAttributeNameForIndex(::mlir::OperationName name, unsigned index) { assert(index < 1 && "invalid attribute index"); assert(name.getStringRef() == getOperationName() && "invalid operation name"); assert(name.isRegistered() && "Operation isn't registered, missing a " "dependent dialect loading?"); return name.getAttributeNames()[index]; } public: }; } // namespace mlir::ROCDL MLIR_DECLARE_EXPLICIT_TYPE_ID(::mlir::ROCDL::GetBarrierStateOp) MLIR_DECLARE_EXPLICIT_TYPE_ID(::mlir::ROCDL::detail::GetBarrierStateOpGenericAdaptorBase::Properties) namespace mlir::ROCDL { //===----------------------------------------------------------------------===// // ::mlir::ROCDL::GetNamedBarrierStateOp declarations //===----------------------------------------------------------------------===// namespace detail { class GetNamedBarrierStateOpGenericAdaptorBase { public: using Properties = ::mlir::EmptyProperties; protected: ::mlir::DictionaryAttr odsAttrs; ::std::optional<::mlir::OperationName> odsOpName; Properties properties; ::mlir::RegionRange odsRegions; public: GetNamedBarrierStateOpGenericAdaptorBase(::mlir::DictionaryAttr attrs, const Properties &properties, ::mlir::RegionRange regions = {}) : odsAttrs(attrs), properties(properties), odsRegions(regions) { if (odsAttrs) odsOpName.emplace("rocdl.s.get.named.barrier.state", odsAttrs.getContext()); } GetNamedBarrierStateOpGenericAdaptorBase(GetNamedBarrierStateOp op); std::pair getODSOperandIndexAndLength(unsigned index, unsigned odsOperandsSize) { return {index, 1}; } const Properties &getProperties() { return properties; } ::mlir::DictionaryAttr getAttributes() { return odsAttrs; } }; } // namespace detail template class GetNamedBarrierStateOpGenericAdaptor : public detail::GetNamedBarrierStateOpGenericAdaptorBase { using ValueT = ::llvm::detail::ValueOfRange; using Base = detail::GetNamedBarrierStateOpGenericAdaptorBase; static constexpr int odsIndex_ptr = 0; public: GetNamedBarrierStateOpGenericAdaptor(RangeT values, ::mlir::DictionaryAttr attrs, const Properties &properties, ::mlir::RegionRange regions = {}) : Base(attrs, properties, regions), odsOperands(values) {} GetNamedBarrierStateOpGenericAdaptor(RangeT values, ::mlir::DictionaryAttr attrs, ::mlir::PropertyRef properties, ::mlir::RegionRange regions = {}) : GetNamedBarrierStateOpGenericAdaptor(values, attrs, (properties ? *properties.as() : Properties{}), regions) {} GetNamedBarrierStateOpGenericAdaptor(RangeT values, ::mlir::DictionaryAttr attrs = nullptr) : GetNamedBarrierStateOpGenericAdaptor(values, attrs, Properties{}, {}) {} GetNamedBarrierStateOpGenericAdaptor(RangeT values, const GetNamedBarrierStateOpGenericAdaptorBase &base) : Base(base), odsOperands(values) {} template >> GetNamedBarrierStateOpGenericAdaptor(RangeT values, LateInst op) : Base(op), odsOperands(values) {} std::pair getODSOperandIndexAndLength(unsigned index) { return Base::getODSOperandIndexAndLength(index, odsOperands.size()); } RangeT getODSOperands(unsigned index) { auto valueRange = getODSOperandIndexAndLength(index); return {std::next(odsOperands.begin(), valueRange.first), std::next(odsOperands.begin(), valueRange.first + valueRange.second)}; } ValueT getPtr() { return (*getODSOperands(0).begin()); } RangeT getOperands() { return odsOperands; } private: RangeT odsOperands; }; class GetNamedBarrierStateOpAdaptor : public GetNamedBarrierStateOpGenericAdaptor<::mlir::ValueRange> { public: using GetNamedBarrierStateOpGenericAdaptor::GetNamedBarrierStateOpGenericAdaptor; GetNamedBarrierStateOpAdaptor(GetNamedBarrierStateOp op); ::llvm::LogicalResult verify(::mlir::Location loc); }; class GetNamedBarrierStateOp : public ::mlir::Op::Impl, ::mlir::OpTrait::ZeroSuccessors, ::mlir::OpTrait::OneOperand, ::mlir::OpTrait::OpInvariants> { public: using Op::Op; using Op::print; using Adaptor = GetNamedBarrierStateOpAdaptor; template using GenericAdaptor = GetNamedBarrierStateOpGenericAdaptor; using FoldAdaptor = GenericAdaptor<::llvm::ArrayRef<::mlir::Attribute>>; static constexpr int odsIndex_ptr = 0; using Properties = FoldAdaptor::Properties; static ::llvm::ArrayRef<::llvm::StringRef> getAttributeNames() { return {}; } static constexpr ::llvm::StringLiteral getOperationName() { return ::llvm::StringLiteral("rocdl.s.get.named.barrier.state"); } std::pair getODSOperandIndexAndLength(unsigned index) { return {index, 1}; } ::mlir::Operation::operand_range getODSOperands(unsigned index) { auto valueRange = getODSOperandIndexAndLength(index); return {std::next(getOperation()->operand_begin(), valueRange.first), std::next(getOperation()->operand_begin(), valueRange.first + valueRange.second)}; } ::mlir::TypedValue<::mlir::LLVM::LLVMPointerType> getPtr() { return ::llvm::cast<::mlir::TypedValue<::mlir::LLVM::LLVMPointerType>>(*getODSOperands(0).begin()); } ::mlir::OpOperand &getPtrMutable() { auto range = getODSOperandIndexAndLength(0); return getOperation()->getOpOperand(range.first); } std::pair getODSResultIndexAndLength(unsigned index) { return {index, 1}; } ::mlir::Operation::result_range getODSResults(unsigned index) { auto valueRange = getODSResultIndexAndLength(index); return {std::next(getOperation()->result_begin(), valueRange.first), std::next(getOperation()->result_begin(), valueRange.first + valueRange.second)}; } ::mlir::TypedValue<::mlir::IntegerType> getRes() { return ::llvm::cast<::mlir::TypedValue<::mlir::IntegerType>>(*getODSResults(0).begin()); } static ::llvm::LogicalResult setPropertiesFromAttr(Properties &prop, ::mlir::Attribute attr, ::llvm::function_ref<::mlir::InFlightDiagnostic()> emitError); static ::mlir::Attribute getPropertiesAsAttr(::mlir::MLIRContext *ctx, const Properties &prop); static llvm::hash_code computePropertiesHash(const Properties &prop); static std::optional getInherentAttr(::mlir::MLIRContext *ctx, const Properties &prop, llvm::StringRef name); static void setInherentAttr(Properties &prop, llvm::StringRef name, mlir::Attribute value); static void populateInherentAttrs(::mlir::MLIRContext *ctx, const Properties &prop, ::mlir::NamedAttrList &attrs); static ::llvm::LogicalResult verifyInherentAttrs(::mlir::OperationName opName, ::mlir::NamedAttrList &attrs, llvm::function_ref<::mlir::InFlightDiagnostic()> emitError); static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::Type res, ::mlir::Value ptr); static GetNamedBarrierStateOp create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::Type res, ::mlir::Value ptr); static GetNamedBarrierStateOp create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::Type res, ::mlir::Value ptr); static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::Value ptr); static GetNamedBarrierStateOp create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::Value ptr); static GetNamedBarrierStateOp create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::Value ptr); static void build(::mlir::OpBuilder &, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, ::llvm::ArrayRef<::mlir::NamedAttribute> attributes = {}); static GetNamedBarrierStateOp create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, ::llvm::ArrayRef<::mlir::NamedAttribute> attributes = {}); static GetNamedBarrierStateOp create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, ::llvm::ArrayRef<::mlir::NamedAttribute> attributes = {}); static void build(::mlir::OpBuilder &, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, const Properties &properties, ::llvm::ArrayRef<::mlir::NamedAttribute> discardableAttributes = {}); static GetNamedBarrierStateOp create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, const Properties &properties, ::llvm::ArrayRef<::mlir::NamedAttribute> discardableAttributes = {}); static GetNamedBarrierStateOp create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, const Properties &properties, ::llvm::ArrayRef<::mlir::NamedAttribute> discardableAttributes = {}); ::llvm::LogicalResult verifyInvariantsImpl(); ::llvm::LogicalResult verifyInvariants(); static ::mlir::ParseResult parse(::mlir::OpAsmParser &parser, ::mlir::OperationState &result); void print(::mlir::OpAsmPrinter &_odsPrinter); public: }; } // namespace mlir::ROCDL MLIR_DECLARE_EXPLICIT_TYPE_ID(::mlir::ROCDL::GetNamedBarrierStateOp) namespace mlir::ROCDL { //===----------------------------------------------------------------------===// // ::mlir::ROCDL::GlobalLoadAsyncLDSOp declarations //===----------------------------------------------------------------------===// namespace detail { class GlobalLoadAsyncLDSOpGenericAdaptorBase { public: struct Properties { using alias_scopesTy = ::mlir::ArrayAttr; alias_scopesTy alias_scopes; auto getAliasScopes() const { auto &propStorage = this->alias_scopes; return ::llvm::dyn_cast_or_null<::mlir::ArrayAttr>(propStorage); } void setAliasScopes(const ::mlir::ArrayAttr &propValue) { this->alias_scopes = propValue; } using auxTy = ::mlir::Attribute; auxTy aux; auto getAux() const { auto &propStorage = this->aux; return ::llvm::dyn_cast_or_null<::mlir::Attribute>(propStorage); } void setAux(const ::mlir::Attribute &propValue) { this->aux = propValue; } using noalias_scopesTy = ::mlir::ArrayAttr; noalias_scopesTy noalias_scopes; auto getNoaliasScopes() const { auto &propStorage = this->noalias_scopes; return ::llvm::dyn_cast_or_null<::mlir::ArrayAttr>(propStorage); } void setNoaliasScopes(const ::mlir::ArrayAttr &propValue) { this->noalias_scopes = propValue; } using offsetTy = ::mlir::IntegerAttr; offsetTy offset; auto getOffset() const { auto &propStorage = this->offset; return ::llvm::cast<::mlir::IntegerAttr>(propStorage); } void setOffset(const ::mlir::IntegerAttr &propValue) { this->offset = propValue; } using sizeTy = ::mlir::IntegerAttr; sizeTy size; auto getSize() const { auto &propStorage = this->size; return ::llvm::cast<::mlir::IntegerAttr>(propStorage); } void setSize(const ::mlir::IntegerAttr &propValue) { this->size = propValue; } using tbaaTy = ::mlir::ArrayAttr; tbaaTy tbaa; auto getTbaa() const { auto &propStorage = this->tbaa; return ::llvm::dyn_cast_or_null<::mlir::ArrayAttr>(propStorage); } void setTbaa(const ::mlir::ArrayAttr &propValue) { this->tbaa = propValue; } bool operator==(const Properties &rhs) const { return rhs.alias_scopes == this->alias_scopes && rhs.aux == this->aux && rhs.noalias_scopes == this->noalias_scopes && rhs.offset == this->offset && rhs.size == this->size && rhs.tbaa == this->tbaa && true; } bool operator!=(const Properties &rhs) const { return !(*this == rhs); } }; protected: ::mlir::DictionaryAttr odsAttrs; ::std::optional<::mlir::OperationName> odsOpName; Properties properties; ::mlir::RegionRange odsRegions; public: GlobalLoadAsyncLDSOpGenericAdaptorBase(::mlir::DictionaryAttr attrs, const Properties &properties, ::mlir::RegionRange regions = {}) : odsAttrs(attrs), properties(properties), odsRegions(regions) { if (odsAttrs) odsOpName.emplace("rocdl.global.load.async.lds", odsAttrs.getContext()); } GlobalLoadAsyncLDSOpGenericAdaptorBase(GlobalLoadAsyncLDSOp op); std::pair getODSOperandIndexAndLength(unsigned index, unsigned odsOperandsSize) { return {index, 1}; } const Properties &getProperties() { return properties; } ::mlir::DictionaryAttr getAttributes() { return odsAttrs; } ::mlir::IntegerAttr getSizeAttr() { auto attr = ::llvm::cast<::mlir::IntegerAttr>(getProperties().size); return attr; } uint32_t getSize(); ::mlir::IntegerAttr getOffsetAttr() { auto attr = ::llvm::cast<::mlir::IntegerAttr>(getProperties().offset); return attr; } uint32_t getOffset(); ::mlir::Attribute getAuxAttr(); ::mlir::Attribute getAux(); ::mlir::ArrayAttr getAliasScopesAttr() { auto attr = ::llvm::dyn_cast_or_null<::mlir::ArrayAttr>(getProperties().alias_scopes); return attr; } ::std::optional< ::mlir::ArrayAttr > getAliasScopes(); ::mlir::ArrayAttr getNoaliasScopesAttr() { auto attr = ::llvm::dyn_cast_or_null<::mlir::ArrayAttr>(getProperties().noalias_scopes); return attr; } ::std::optional< ::mlir::ArrayAttr > getNoaliasScopes(); ::mlir::ArrayAttr getTbaaAttr() { auto attr = ::llvm::dyn_cast_or_null<::mlir::ArrayAttr>(getProperties().tbaa); return attr; } ::std::optional< ::mlir::ArrayAttr > getTbaa(); }; } // namespace detail template class GlobalLoadAsyncLDSOpGenericAdaptor : public detail::GlobalLoadAsyncLDSOpGenericAdaptorBase { using ValueT = ::llvm::detail::ValueOfRange; using Base = detail::GlobalLoadAsyncLDSOpGenericAdaptorBase; static constexpr int odsIndex_globalPtr = 0; static constexpr int odsIndex_ldsPtr = 1; public: GlobalLoadAsyncLDSOpGenericAdaptor(RangeT values, ::mlir::DictionaryAttr attrs, const Properties &properties, ::mlir::RegionRange regions = {}) : Base(attrs, properties, regions), odsOperands(values) {} GlobalLoadAsyncLDSOpGenericAdaptor(RangeT values, ::mlir::DictionaryAttr attrs, ::mlir::PropertyRef properties, ::mlir::RegionRange regions = {}) : GlobalLoadAsyncLDSOpGenericAdaptor(values, attrs, (properties ? *properties.as() : Properties{}), regions) {} GlobalLoadAsyncLDSOpGenericAdaptor(RangeT values, ::mlir::DictionaryAttr attrs = nullptr) : GlobalLoadAsyncLDSOpGenericAdaptor(values, attrs, Properties{}, {}) {} GlobalLoadAsyncLDSOpGenericAdaptor(RangeT values, const GlobalLoadAsyncLDSOpGenericAdaptorBase &base) : Base(base), odsOperands(values) {} template >> GlobalLoadAsyncLDSOpGenericAdaptor(RangeT values, LateInst op) : Base(op), odsOperands(values) {} std::pair getODSOperandIndexAndLength(unsigned index) { return Base::getODSOperandIndexAndLength(index, odsOperands.size()); } RangeT getODSOperands(unsigned index) { auto valueRange = getODSOperandIndexAndLength(index); return {std::next(odsOperands.begin(), valueRange.first), std::next(odsOperands.begin(), valueRange.first + valueRange.second)}; } ValueT getGlobalPtr() { return (*getODSOperands(0).begin()); } ValueT getLdsPtr() { return (*getODSOperands(1).begin()); } RangeT getOperands() { return odsOperands; } private: RangeT odsOperands; }; class GlobalLoadAsyncLDSOpAdaptor : public GlobalLoadAsyncLDSOpGenericAdaptor<::mlir::ValueRange> { public: using GlobalLoadAsyncLDSOpGenericAdaptor::GlobalLoadAsyncLDSOpGenericAdaptor; GlobalLoadAsyncLDSOpAdaptor(GlobalLoadAsyncLDSOp op); ::llvm::LogicalResult verify(::mlir::Location loc); }; class GlobalLoadAsyncLDSOp : public ::mlir::Op::Impl, ::mlir::OpTrait::OpInvariants, ::mlir::BytecodeOpInterface::Trait, ::mlir::LLVM::AliasAnalysisOpInterface::Trait, ::mlir::MemoryEffectOpInterface::Trait> { public: using Op::Op; using Op::print; using Adaptor = GlobalLoadAsyncLDSOpAdaptor; template using GenericAdaptor = GlobalLoadAsyncLDSOpGenericAdaptor; using FoldAdaptor = GenericAdaptor<::llvm::ArrayRef<::mlir::Attribute>>; static constexpr int odsIndex_globalPtr = 0; static constexpr int odsIndex_ldsPtr = 1; using Properties = FoldAdaptor::Properties; using ::mlir::LLVM::AliasAnalysisOpInterface::Trait::getAliasScopesOrNull; using ::mlir::LLVM::AliasAnalysisOpInterface::Trait::setAliasScopes; using ::mlir::LLVM::AliasAnalysisOpInterface::Trait::getNoAliasScopesOrNull; using ::mlir::LLVM::AliasAnalysisOpInterface::Trait::setNoAliasScopes; using ::mlir::LLVM::AliasAnalysisOpInterface::Trait::getTBAATagsOrNull; using ::mlir::LLVM::AliasAnalysisOpInterface::Trait::setTBAATags; static ::llvm::ArrayRef<::llvm::StringRef> getAttributeNames() { static ::llvm::StringRef attrNames[] = {::llvm::StringRef("alias_scopes"), ::llvm::StringRef("aux"), ::llvm::StringRef("noalias_scopes"), ::llvm::StringRef("offset"), ::llvm::StringRef("size"), ::llvm::StringRef("tbaa")}; return ::llvm::ArrayRef(attrNames); } ::mlir::StringAttr getAliasScopesAttrName() { return getAttributeNameForIndex(0); } static ::mlir::StringAttr getAliasScopesAttrName(::mlir::OperationName name) { return getAttributeNameForIndex(name, 0); } ::mlir::StringAttr getAuxAttrName() { return getAttributeNameForIndex(1); } static ::mlir::StringAttr getAuxAttrName(::mlir::OperationName name) { return getAttributeNameForIndex(name, 1); } ::mlir::StringAttr getNoaliasScopesAttrName() { return getAttributeNameForIndex(2); } static ::mlir::StringAttr getNoaliasScopesAttrName(::mlir::OperationName name) { return getAttributeNameForIndex(name, 2); } ::mlir::StringAttr getOffsetAttrName() { return getAttributeNameForIndex(3); } static ::mlir::StringAttr getOffsetAttrName(::mlir::OperationName name) { return getAttributeNameForIndex(name, 3); } ::mlir::StringAttr getSizeAttrName() { return getAttributeNameForIndex(4); } static ::mlir::StringAttr getSizeAttrName(::mlir::OperationName name) { return getAttributeNameForIndex(name, 4); } ::mlir::StringAttr getTbaaAttrName() { return getAttributeNameForIndex(5); } static ::mlir::StringAttr getTbaaAttrName(::mlir::OperationName name) { return getAttributeNameForIndex(name, 5); } static constexpr ::llvm::StringLiteral getOperationName() { return ::llvm::StringLiteral("rocdl.global.load.async.lds"); } std::pair getODSOperandIndexAndLength(unsigned index) { return {index, 1}; } ::mlir::Operation::operand_range getODSOperands(unsigned index) { auto valueRange = getODSOperandIndexAndLength(index); return {std::next(getOperation()->operand_begin(), valueRange.first), std::next(getOperation()->operand_begin(), valueRange.first + valueRange.second)}; } ::mlir::TypedValue<::mlir::LLVM::LLVMPointerType> getGlobalPtr() { return ::llvm::cast<::mlir::TypedValue<::mlir::LLVM::LLVMPointerType>>(*getODSOperands(0).begin()); } ::mlir::TypedValue<::mlir::LLVM::LLVMPointerType> getLdsPtr() { return ::llvm::cast<::mlir::TypedValue<::mlir::LLVM::LLVMPointerType>>(*getODSOperands(1).begin()); } ::mlir::OpOperand &getGlobalPtrMutable() { auto range = getODSOperandIndexAndLength(0); return getOperation()->getOpOperand(range.first); } ::mlir::OpOperand &getLdsPtrMutable() { auto range = getODSOperandIndexAndLength(1); return getOperation()->getOpOperand(range.first); } std::pair getODSResultIndexAndLength(unsigned index) { return {index, 1}; } ::mlir::Operation::result_range getODSResults(unsigned index) { auto valueRange = getODSResultIndexAndLength(index); return {std::next(getOperation()->result_begin(), valueRange.first), std::next(getOperation()->result_begin(), valueRange.first + valueRange.second)}; } static ::llvm::LogicalResult setPropertiesFromAttr(Properties &prop, ::mlir::Attribute attr, ::llvm::function_ref<::mlir::InFlightDiagnostic()> emitError); static ::mlir::Attribute getPropertiesAsAttr(::mlir::MLIRContext *ctx, const Properties &prop); static llvm::hash_code computePropertiesHash(const Properties &prop); static std::optional getInherentAttr(::mlir::MLIRContext *ctx, const Properties &prop, llvm::StringRef name); static void setInherentAttr(Properties &prop, llvm::StringRef name, mlir::Attribute value); static void populateInherentAttrs(::mlir::MLIRContext *ctx, const Properties &prop, ::mlir::NamedAttrList &attrs); static ::llvm::LogicalResult verifyInherentAttrs(::mlir::OperationName opName, ::mlir::NamedAttrList &attrs, llvm::function_ref<::mlir::InFlightDiagnostic()> emitError); static ::llvm::LogicalResult readProperties(::mlir::DialectBytecodeReader &reader, ::mlir::OperationState &state); void writeProperties(::mlir::DialectBytecodeWriter &writer); ::mlir::IntegerAttr getSizeAttr() { return ::llvm::cast<::mlir::IntegerAttr>(getProperties().size); } uint32_t getSize(); ::mlir::IntegerAttr getOffsetAttr() { return ::llvm::cast<::mlir::IntegerAttr>(getProperties().offset); } uint32_t getOffset(); ::mlir::Attribute getAuxAttr() { return ::llvm::dyn_cast_or_null<::mlir::Attribute>(getProperties().aux); } ::mlir::Attribute getAux(); ::mlir::ArrayAttr getAliasScopesAttr() { return ::llvm::dyn_cast_or_null<::mlir::ArrayAttr>(getProperties().alias_scopes); } ::std::optional< ::mlir::ArrayAttr > getAliasScopes(); ::mlir::ArrayAttr getNoaliasScopesAttr() { return ::llvm::dyn_cast_or_null<::mlir::ArrayAttr>(getProperties().noalias_scopes); } ::std::optional< ::mlir::ArrayAttr > getNoaliasScopes(); ::mlir::ArrayAttr getTbaaAttr() { return ::llvm::dyn_cast_or_null<::mlir::ArrayAttr>(getProperties().tbaa); } ::std::optional< ::mlir::ArrayAttr > getTbaa(); void setSizeAttr(::mlir::IntegerAttr attr) { getProperties().size = attr; } void setSize(uint32_t attrValue); void setOffsetAttr(::mlir::IntegerAttr attr) { getProperties().offset = attr; } void setOffset(uint32_t attrValue); void setAuxAttr(::mlir::Attribute attr) { getProperties().aux = attr; } void setAliasScopesAttr(::mlir::ArrayAttr attr) { getProperties().alias_scopes = attr; } void setNoaliasScopesAttr(::mlir::ArrayAttr attr) { getProperties().noalias_scopes = attr; } void setTbaaAttr(::mlir::ArrayAttr attr) { getProperties().tbaa = attr; } ::mlir::Attribute removeAliasScopesAttr() { auto attr = getProperties().alias_scopes; getProperties().alias_scopes = {}; return attr; } ::mlir::Attribute removeNoaliasScopesAttr() { auto attr = getProperties().noalias_scopes; getProperties().noalias_scopes = {}; return attr; } ::mlir::Attribute removeTbaaAttr() { auto attr = getProperties().tbaa; getProperties().tbaa = {}; return attr; } static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::Value globalPtr, ::mlir::Value ldsPtr, ::mlir::IntegerAttr size, ::mlir::IntegerAttr offset, ::mlir::Attribute aux, /*optional*/::mlir::ArrayAttr alias_scopes, /*optional*/::mlir::ArrayAttr noalias_scopes, /*optional*/::mlir::ArrayAttr tbaa); static GlobalLoadAsyncLDSOp create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::Value globalPtr, ::mlir::Value ldsPtr, ::mlir::IntegerAttr size, ::mlir::IntegerAttr offset, ::mlir::Attribute aux, /*optional*/::mlir::ArrayAttr alias_scopes, /*optional*/::mlir::ArrayAttr noalias_scopes, /*optional*/::mlir::ArrayAttr tbaa); static GlobalLoadAsyncLDSOp create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::Value globalPtr, ::mlir::Value ldsPtr, ::mlir::IntegerAttr size, ::mlir::IntegerAttr offset, ::mlir::Attribute aux, /*optional*/::mlir::ArrayAttr alias_scopes, /*optional*/::mlir::ArrayAttr noalias_scopes, /*optional*/::mlir::ArrayAttr tbaa); static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::Value globalPtr, ::mlir::Value ldsPtr, ::mlir::IntegerAttr size, ::mlir::IntegerAttr offset, ::mlir::Attribute aux, /*optional*/::mlir::ArrayAttr alias_scopes, /*optional*/::mlir::ArrayAttr noalias_scopes, /*optional*/::mlir::ArrayAttr tbaa); static GlobalLoadAsyncLDSOp create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::Value globalPtr, ::mlir::Value ldsPtr, ::mlir::IntegerAttr size, ::mlir::IntegerAttr offset, ::mlir::Attribute aux, /*optional*/::mlir::ArrayAttr alias_scopes, /*optional*/::mlir::ArrayAttr noalias_scopes, /*optional*/::mlir::ArrayAttr tbaa); static GlobalLoadAsyncLDSOp create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::Value globalPtr, ::mlir::Value ldsPtr, ::mlir::IntegerAttr size, ::mlir::IntegerAttr offset, ::mlir::Attribute aux, /*optional*/::mlir::ArrayAttr alias_scopes, /*optional*/::mlir::ArrayAttr noalias_scopes, /*optional*/::mlir::ArrayAttr tbaa); static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::Value globalPtr, ::mlir::Value ldsPtr, uint32_t size, uint32_t offset, ::mlir::Attribute aux, /*optional*/::mlir::ArrayAttr alias_scopes, /*optional*/::mlir::ArrayAttr noalias_scopes, /*optional*/::mlir::ArrayAttr tbaa); static GlobalLoadAsyncLDSOp create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::Value globalPtr, ::mlir::Value ldsPtr, uint32_t size, uint32_t offset, ::mlir::Attribute aux, /*optional*/::mlir::ArrayAttr alias_scopes, /*optional*/::mlir::ArrayAttr noalias_scopes, /*optional*/::mlir::ArrayAttr tbaa); static GlobalLoadAsyncLDSOp create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::Value globalPtr, ::mlir::Value ldsPtr, uint32_t size, uint32_t offset, ::mlir::Attribute aux, /*optional*/::mlir::ArrayAttr alias_scopes, /*optional*/::mlir::ArrayAttr noalias_scopes, /*optional*/::mlir::ArrayAttr tbaa); static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::Value globalPtr, ::mlir::Value ldsPtr, uint32_t size, uint32_t offset, ::mlir::Attribute aux, /*optional*/::mlir::ArrayAttr alias_scopes, /*optional*/::mlir::ArrayAttr noalias_scopes, /*optional*/::mlir::ArrayAttr tbaa); static GlobalLoadAsyncLDSOp create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::Value globalPtr, ::mlir::Value ldsPtr, uint32_t size, uint32_t offset, ::mlir::Attribute aux, /*optional*/::mlir::ArrayAttr alias_scopes, /*optional*/::mlir::ArrayAttr noalias_scopes, /*optional*/::mlir::ArrayAttr tbaa); static GlobalLoadAsyncLDSOp create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::Value globalPtr, ::mlir::Value ldsPtr, uint32_t size, uint32_t offset, ::mlir::Attribute aux, /*optional*/::mlir::ArrayAttr alias_scopes, /*optional*/::mlir::ArrayAttr noalias_scopes, /*optional*/::mlir::ArrayAttr tbaa); static void build(::mlir::OpBuilder &, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, ::llvm::ArrayRef<::mlir::NamedAttribute> attributes = {}); static GlobalLoadAsyncLDSOp create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, ::llvm::ArrayRef<::mlir::NamedAttribute> attributes = {}); static GlobalLoadAsyncLDSOp create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, ::llvm::ArrayRef<::mlir::NamedAttribute> attributes = {}); static void build(::mlir::OpBuilder &, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, const Properties &properties, ::llvm::ArrayRef<::mlir::NamedAttribute> discardableAttributes = {}); static GlobalLoadAsyncLDSOp create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, const Properties &properties, ::llvm::ArrayRef<::mlir::NamedAttribute> discardableAttributes = {}); static GlobalLoadAsyncLDSOp create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, const Properties &properties, ::llvm::ArrayRef<::mlir::NamedAttribute> discardableAttributes = {}); static void populateDefaultProperties(::mlir::OperationName opName, Properties &properties); ::llvm::LogicalResult verifyInvariantsImpl(); ::llvm::LogicalResult verifyInvariants(); ::llvm::SmallVector<::mlir::Value> getAccessedOperands(); static ::mlir::ParseResult parse(::mlir::OpAsmParser &parser, ::mlir::OperationState &result); void print(::mlir::OpAsmPrinter &_odsPrinter); void getEffects(::llvm::SmallVectorImpl<::mlir::SideEffects::EffectInstance<::mlir::MemoryEffects::Effect>> &effects); private: ::mlir::StringAttr getAttributeNameForIndex(unsigned index) { return getAttributeNameForIndex((*this)->getName(), index); } static ::mlir::StringAttr getAttributeNameForIndex(::mlir::OperationName name, unsigned index) { assert(index < 6 && "invalid attribute index"); assert(name.getStringRef() == getOperationName() && "invalid operation name"); assert(name.isRegistered() && "Operation isn't registered, missing a " "dependent dialect loading?"); return name.getAttributeNames()[index]; } public: }; } // namespace mlir::ROCDL MLIR_DECLARE_EXPLICIT_TYPE_ID(::mlir::ROCDL::GlobalLoadAsyncLDSOp) MLIR_DECLARE_EXPLICIT_TYPE_ID(::mlir::ROCDL::detail::GlobalLoadAsyncLDSOpGenericAdaptorBase::Properties) namespace mlir::ROCDL { //===----------------------------------------------------------------------===// // ::mlir::ROCDL::GlobalLoadAsyncToLDSB128Op declarations //===----------------------------------------------------------------------===// namespace detail { class GlobalLoadAsyncToLDSB128OpGenericAdaptorBase { public: struct Properties { using alias_scopesTy = ::mlir::ArrayAttr; alias_scopesTy alias_scopes; auto getAliasScopes() const { auto &propStorage = this->alias_scopes; return ::llvm::dyn_cast_or_null<::mlir::ArrayAttr>(propStorage); } void setAliasScopes(const ::mlir::ArrayAttr &propValue) { this->alias_scopes = propValue; } using auxTy = ::mlir::Attribute; auxTy aux; auto getAux() const { auto &propStorage = this->aux; return ::llvm::dyn_cast_or_null<::mlir::Attribute>(propStorage); } void setAux(const ::mlir::Attribute &propValue) { this->aux = propValue; } using noalias_scopesTy = ::mlir::ArrayAttr; noalias_scopesTy noalias_scopes; auto getNoaliasScopes() const { auto &propStorage = this->noalias_scopes; return ::llvm::dyn_cast_or_null<::mlir::ArrayAttr>(propStorage); } void setNoaliasScopes(const ::mlir::ArrayAttr &propValue) { this->noalias_scopes = propValue; } using offsetTy = ::mlir::IntegerAttr; offsetTy offset; auto getOffset() const { auto &propStorage = this->offset; return ::llvm::cast<::mlir::IntegerAttr>(propStorage); } void setOffset(const ::mlir::IntegerAttr &propValue) { this->offset = propValue; } using tbaaTy = ::mlir::ArrayAttr; tbaaTy tbaa; auto getTbaa() const { auto &propStorage = this->tbaa; return ::llvm::dyn_cast_or_null<::mlir::ArrayAttr>(propStorage); } void setTbaa(const ::mlir::ArrayAttr &propValue) { this->tbaa = propValue; } bool operator==(const Properties &rhs) const { return rhs.alias_scopes == this->alias_scopes && rhs.aux == this->aux && rhs.noalias_scopes == this->noalias_scopes && rhs.offset == this->offset && rhs.tbaa == this->tbaa && true; } bool operator!=(const Properties &rhs) const { return !(*this == rhs); } }; protected: ::mlir::DictionaryAttr odsAttrs; ::std::optional<::mlir::OperationName> odsOpName; Properties properties; ::mlir::RegionRange odsRegions; public: GlobalLoadAsyncToLDSB128OpGenericAdaptorBase(::mlir::DictionaryAttr attrs, const Properties &properties, ::mlir::RegionRange regions = {}) : odsAttrs(attrs), properties(properties), odsRegions(regions) { if (odsAttrs) odsOpName.emplace("rocdl.global.load.async.to.lds.b128", odsAttrs.getContext()); } GlobalLoadAsyncToLDSB128OpGenericAdaptorBase(GlobalLoadAsyncToLDSB128Op op); std::pair getODSOperandIndexAndLength(unsigned index, unsigned odsOperandsSize) { return {index, 1}; } const Properties &getProperties() { return properties; } ::mlir::DictionaryAttr getAttributes() { return odsAttrs; } ::mlir::IntegerAttr getOffsetAttr() { auto attr = ::llvm::cast<::mlir::IntegerAttr>(getProperties().offset); return attr; } uint32_t getOffset(); ::mlir::Attribute getAuxAttr(); ::mlir::Attribute getAux(); ::mlir::ArrayAttr getAliasScopesAttr() { auto attr = ::llvm::dyn_cast_or_null<::mlir::ArrayAttr>(getProperties().alias_scopes); return attr; } ::std::optional< ::mlir::ArrayAttr > getAliasScopes(); ::mlir::ArrayAttr getNoaliasScopesAttr() { auto attr = ::llvm::dyn_cast_or_null<::mlir::ArrayAttr>(getProperties().noalias_scopes); return attr; } ::std::optional< ::mlir::ArrayAttr > getNoaliasScopes(); ::mlir::ArrayAttr getTbaaAttr() { auto attr = ::llvm::dyn_cast_or_null<::mlir::ArrayAttr>(getProperties().tbaa); return attr; } ::std::optional< ::mlir::ArrayAttr > getTbaa(); }; } // namespace detail template class GlobalLoadAsyncToLDSB128OpGenericAdaptor : public detail::GlobalLoadAsyncToLDSB128OpGenericAdaptorBase { using ValueT = ::llvm::detail::ValueOfRange; using Base = detail::GlobalLoadAsyncToLDSB128OpGenericAdaptorBase; static constexpr int odsIndex_globalPtr = 0; static constexpr int odsIndex_ldsPtr = 1; public: GlobalLoadAsyncToLDSB128OpGenericAdaptor(RangeT values, ::mlir::DictionaryAttr attrs, const Properties &properties, ::mlir::RegionRange regions = {}) : Base(attrs, properties, regions), odsOperands(values) {} GlobalLoadAsyncToLDSB128OpGenericAdaptor(RangeT values, ::mlir::DictionaryAttr attrs, ::mlir::PropertyRef properties, ::mlir::RegionRange regions = {}) : GlobalLoadAsyncToLDSB128OpGenericAdaptor(values, attrs, (properties ? *properties.as() : Properties{}), regions) {} GlobalLoadAsyncToLDSB128OpGenericAdaptor(RangeT values, ::mlir::DictionaryAttr attrs = nullptr) : GlobalLoadAsyncToLDSB128OpGenericAdaptor(values, attrs, Properties{}, {}) {} GlobalLoadAsyncToLDSB128OpGenericAdaptor(RangeT values, const GlobalLoadAsyncToLDSB128OpGenericAdaptorBase &base) : Base(base), odsOperands(values) {} template >> GlobalLoadAsyncToLDSB128OpGenericAdaptor(RangeT values, LateInst op) : Base(op), odsOperands(values) {} std::pair getODSOperandIndexAndLength(unsigned index) { return Base::getODSOperandIndexAndLength(index, odsOperands.size()); } RangeT getODSOperands(unsigned index) { auto valueRange = getODSOperandIndexAndLength(index); return {std::next(odsOperands.begin(), valueRange.first), std::next(odsOperands.begin(), valueRange.first + valueRange.second)}; } ValueT getGlobalPtr() { return (*getODSOperands(0).begin()); } ValueT getLdsPtr() { return (*getODSOperands(1).begin()); } RangeT getOperands() { return odsOperands; } private: RangeT odsOperands; }; class GlobalLoadAsyncToLDSB128OpAdaptor : public GlobalLoadAsyncToLDSB128OpGenericAdaptor<::mlir::ValueRange> { public: using GlobalLoadAsyncToLDSB128OpGenericAdaptor::GlobalLoadAsyncToLDSB128OpGenericAdaptor; GlobalLoadAsyncToLDSB128OpAdaptor(GlobalLoadAsyncToLDSB128Op op); ::llvm::LogicalResult verify(::mlir::Location loc); }; class GlobalLoadAsyncToLDSB128Op : public ::mlir::Op::Impl, ::mlir::OpTrait::OpInvariants, ::mlir::BytecodeOpInterface::Trait, ::mlir::LLVM::AliasAnalysisOpInterface::Trait, ::mlir::MemoryEffectOpInterface::Trait> { public: using Op::Op; using Op::print; using Adaptor = GlobalLoadAsyncToLDSB128OpAdaptor; template using GenericAdaptor = GlobalLoadAsyncToLDSB128OpGenericAdaptor; using FoldAdaptor = GenericAdaptor<::llvm::ArrayRef<::mlir::Attribute>>; static constexpr int odsIndex_globalPtr = 0; static constexpr int odsIndex_ldsPtr = 1; using Properties = FoldAdaptor::Properties; using ::mlir::LLVM::AliasAnalysisOpInterface::Trait::getAliasScopesOrNull; using ::mlir::LLVM::AliasAnalysisOpInterface::Trait::setAliasScopes; using ::mlir::LLVM::AliasAnalysisOpInterface::Trait::getNoAliasScopesOrNull; using ::mlir::LLVM::AliasAnalysisOpInterface::Trait::setNoAliasScopes; using ::mlir::LLVM::AliasAnalysisOpInterface::Trait::getTBAATagsOrNull; using ::mlir::LLVM::AliasAnalysisOpInterface::Trait::setTBAATags; static ::llvm::ArrayRef<::llvm::StringRef> getAttributeNames() { static ::llvm::StringRef attrNames[] = {::llvm::StringRef("alias_scopes"), ::llvm::StringRef("aux"), ::llvm::StringRef("noalias_scopes"), ::llvm::StringRef("offset"), ::llvm::StringRef("tbaa")}; return ::llvm::ArrayRef(attrNames); } ::mlir::StringAttr getAliasScopesAttrName() { return getAttributeNameForIndex(0); } static ::mlir::StringAttr getAliasScopesAttrName(::mlir::OperationName name) { return getAttributeNameForIndex(name, 0); } ::mlir::StringAttr getAuxAttrName() { return getAttributeNameForIndex(1); } static ::mlir::StringAttr getAuxAttrName(::mlir::OperationName name) { return getAttributeNameForIndex(name, 1); } ::mlir::StringAttr getNoaliasScopesAttrName() { return getAttributeNameForIndex(2); } static ::mlir::StringAttr getNoaliasScopesAttrName(::mlir::OperationName name) { return getAttributeNameForIndex(name, 2); } ::mlir::StringAttr getOffsetAttrName() { return getAttributeNameForIndex(3); } static ::mlir::StringAttr getOffsetAttrName(::mlir::OperationName name) { return getAttributeNameForIndex(name, 3); } ::mlir::StringAttr getTbaaAttrName() { return getAttributeNameForIndex(4); } static ::mlir::StringAttr getTbaaAttrName(::mlir::OperationName name) { return getAttributeNameForIndex(name, 4); } static constexpr ::llvm::StringLiteral getOperationName() { return ::llvm::StringLiteral("rocdl.global.load.async.to.lds.b128"); } std::pair getODSOperandIndexAndLength(unsigned index) { return {index, 1}; } ::mlir::Operation::operand_range getODSOperands(unsigned index) { auto valueRange = getODSOperandIndexAndLength(index); return {std::next(getOperation()->operand_begin(), valueRange.first), std::next(getOperation()->operand_begin(), valueRange.first + valueRange.second)}; } ::mlir::TypedValue<::mlir::LLVM::LLVMPointerType> getGlobalPtr() { return ::llvm::cast<::mlir::TypedValue<::mlir::LLVM::LLVMPointerType>>(*getODSOperands(0).begin()); } ::mlir::TypedValue<::mlir::LLVM::LLVMPointerType> getLdsPtr() { return ::llvm::cast<::mlir::TypedValue<::mlir::LLVM::LLVMPointerType>>(*getODSOperands(1).begin()); } ::mlir::OpOperand &getGlobalPtrMutable() { auto range = getODSOperandIndexAndLength(0); return getOperation()->getOpOperand(range.first); } ::mlir::OpOperand &getLdsPtrMutable() { auto range = getODSOperandIndexAndLength(1); return getOperation()->getOpOperand(range.first); } std::pair getODSResultIndexAndLength(unsigned index) { return {index, 1}; } ::mlir::Operation::result_range getODSResults(unsigned index) { auto valueRange = getODSResultIndexAndLength(index); return {std::next(getOperation()->result_begin(), valueRange.first), std::next(getOperation()->result_begin(), valueRange.first + valueRange.second)}; } static ::llvm::LogicalResult setPropertiesFromAttr(Properties &prop, ::mlir::Attribute attr, ::llvm::function_ref<::mlir::InFlightDiagnostic()> emitError); static ::mlir::Attribute getPropertiesAsAttr(::mlir::MLIRContext *ctx, const Properties &prop); static llvm::hash_code computePropertiesHash(const Properties &prop); static std::optional getInherentAttr(::mlir::MLIRContext *ctx, const Properties &prop, llvm::StringRef name); static void setInherentAttr(Properties &prop, llvm::StringRef name, mlir::Attribute value); static void populateInherentAttrs(::mlir::MLIRContext *ctx, const Properties &prop, ::mlir::NamedAttrList &attrs); static ::llvm::LogicalResult verifyInherentAttrs(::mlir::OperationName opName, ::mlir::NamedAttrList &attrs, llvm::function_ref<::mlir::InFlightDiagnostic()> emitError); static ::llvm::LogicalResult readProperties(::mlir::DialectBytecodeReader &reader, ::mlir::OperationState &state); void writeProperties(::mlir::DialectBytecodeWriter &writer); ::mlir::IntegerAttr getOffsetAttr() { return ::llvm::cast<::mlir::IntegerAttr>(getProperties().offset); } uint32_t getOffset(); ::mlir::Attribute getAuxAttr() { return ::llvm::dyn_cast_or_null<::mlir::Attribute>(getProperties().aux); } ::mlir::Attribute getAux(); ::mlir::ArrayAttr getAliasScopesAttr() { return ::llvm::dyn_cast_or_null<::mlir::ArrayAttr>(getProperties().alias_scopes); } ::std::optional< ::mlir::ArrayAttr > getAliasScopes(); ::mlir::ArrayAttr getNoaliasScopesAttr() { return ::llvm::dyn_cast_or_null<::mlir::ArrayAttr>(getProperties().noalias_scopes); } ::std::optional< ::mlir::ArrayAttr > getNoaliasScopes(); ::mlir::ArrayAttr getTbaaAttr() { return ::llvm::dyn_cast_or_null<::mlir::ArrayAttr>(getProperties().tbaa); } ::std::optional< ::mlir::ArrayAttr > getTbaa(); void setOffsetAttr(::mlir::IntegerAttr attr) { getProperties().offset = attr; } void setOffset(uint32_t attrValue); void setAuxAttr(::mlir::Attribute attr) { getProperties().aux = attr; } void setAliasScopesAttr(::mlir::ArrayAttr attr) { getProperties().alias_scopes = attr; } void setNoaliasScopesAttr(::mlir::ArrayAttr attr) { getProperties().noalias_scopes = attr; } void setTbaaAttr(::mlir::ArrayAttr attr) { getProperties().tbaa = attr; } ::mlir::Attribute removeAliasScopesAttr() { auto attr = getProperties().alias_scopes; getProperties().alias_scopes = {}; return attr; } ::mlir::Attribute removeNoaliasScopesAttr() { auto attr = getProperties().noalias_scopes; getProperties().noalias_scopes = {}; return attr; } ::mlir::Attribute removeTbaaAttr() { auto attr = getProperties().tbaa; getProperties().tbaa = {}; return attr; } static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::Value globalPtr, ::mlir::Value ldsPtr, ::mlir::IntegerAttr offset, ::mlir::Attribute aux, /*optional*/::mlir::ArrayAttr alias_scopes, /*optional*/::mlir::ArrayAttr noalias_scopes, /*optional*/::mlir::ArrayAttr tbaa); static GlobalLoadAsyncToLDSB128Op create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::Value globalPtr, ::mlir::Value ldsPtr, ::mlir::IntegerAttr offset, ::mlir::Attribute aux, /*optional*/::mlir::ArrayAttr alias_scopes, /*optional*/::mlir::ArrayAttr noalias_scopes, /*optional*/::mlir::ArrayAttr tbaa); static GlobalLoadAsyncToLDSB128Op create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::Value globalPtr, ::mlir::Value ldsPtr, ::mlir::IntegerAttr offset, ::mlir::Attribute aux, /*optional*/::mlir::ArrayAttr alias_scopes, /*optional*/::mlir::ArrayAttr noalias_scopes, /*optional*/::mlir::ArrayAttr tbaa); static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::Value globalPtr, ::mlir::Value ldsPtr, ::mlir::IntegerAttr offset, ::mlir::Attribute aux, /*optional*/::mlir::ArrayAttr alias_scopes, /*optional*/::mlir::ArrayAttr noalias_scopes, /*optional*/::mlir::ArrayAttr tbaa); static GlobalLoadAsyncToLDSB128Op create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::Value globalPtr, ::mlir::Value ldsPtr, ::mlir::IntegerAttr offset, ::mlir::Attribute aux, /*optional*/::mlir::ArrayAttr alias_scopes, /*optional*/::mlir::ArrayAttr noalias_scopes, /*optional*/::mlir::ArrayAttr tbaa); static GlobalLoadAsyncToLDSB128Op create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::Value globalPtr, ::mlir::Value ldsPtr, ::mlir::IntegerAttr offset, ::mlir::Attribute aux, /*optional*/::mlir::ArrayAttr alias_scopes, /*optional*/::mlir::ArrayAttr noalias_scopes, /*optional*/::mlir::ArrayAttr tbaa); static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::Value globalPtr, ::mlir::Value ldsPtr, uint32_t offset, ::mlir::Attribute aux, /*optional*/::mlir::ArrayAttr alias_scopes, /*optional*/::mlir::ArrayAttr noalias_scopes, /*optional*/::mlir::ArrayAttr tbaa); static GlobalLoadAsyncToLDSB128Op create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::Value globalPtr, ::mlir::Value ldsPtr, uint32_t offset, ::mlir::Attribute aux, /*optional*/::mlir::ArrayAttr alias_scopes, /*optional*/::mlir::ArrayAttr noalias_scopes, /*optional*/::mlir::ArrayAttr tbaa); static GlobalLoadAsyncToLDSB128Op create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::Value globalPtr, ::mlir::Value ldsPtr, uint32_t offset, ::mlir::Attribute aux, /*optional*/::mlir::ArrayAttr alias_scopes, /*optional*/::mlir::ArrayAttr noalias_scopes, /*optional*/::mlir::ArrayAttr tbaa); static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::Value globalPtr, ::mlir::Value ldsPtr, uint32_t offset, ::mlir::Attribute aux, /*optional*/::mlir::ArrayAttr alias_scopes, /*optional*/::mlir::ArrayAttr noalias_scopes, /*optional*/::mlir::ArrayAttr tbaa); static GlobalLoadAsyncToLDSB128Op create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::Value globalPtr, ::mlir::Value ldsPtr, uint32_t offset, ::mlir::Attribute aux, /*optional*/::mlir::ArrayAttr alias_scopes, /*optional*/::mlir::ArrayAttr noalias_scopes, /*optional*/::mlir::ArrayAttr tbaa); static GlobalLoadAsyncToLDSB128Op create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::Value globalPtr, ::mlir::Value ldsPtr, uint32_t offset, ::mlir::Attribute aux, /*optional*/::mlir::ArrayAttr alias_scopes, /*optional*/::mlir::ArrayAttr noalias_scopes, /*optional*/::mlir::ArrayAttr tbaa); static void build(::mlir::OpBuilder &, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, ::llvm::ArrayRef<::mlir::NamedAttribute> attributes = {}); static GlobalLoadAsyncToLDSB128Op create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, ::llvm::ArrayRef<::mlir::NamedAttribute> attributes = {}); static GlobalLoadAsyncToLDSB128Op create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, ::llvm::ArrayRef<::mlir::NamedAttribute> attributes = {}); static void build(::mlir::OpBuilder &, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, const Properties &properties, ::llvm::ArrayRef<::mlir::NamedAttribute> discardableAttributes = {}); static GlobalLoadAsyncToLDSB128Op create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, const Properties &properties, ::llvm::ArrayRef<::mlir::NamedAttribute> discardableAttributes = {}); static GlobalLoadAsyncToLDSB128Op create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, const Properties &properties, ::llvm::ArrayRef<::mlir::NamedAttribute> discardableAttributes = {}); static void populateDefaultProperties(::mlir::OperationName opName, Properties &properties); ::llvm::LogicalResult verifyInvariantsImpl(); ::llvm::LogicalResult verifyInvariants(); ::llvm::SmallVector<::mlir::Value> getAccessedOperands(); static ::mlir::ParseResult parse(::mlir::OpAsmParser &parser, ::mlir::OperationState &result); void print(::mlir::OpAsmPrinter &_odsPrinter); void getEffects(::llvm::SmallVectorImpl<::mlir::SideEffects::EffectInstance<::mlir::MemoryEffects::Effect>> &effects); private: ::mlir::StringAttr getAttributeNameForIndex(unsigned index) { return getAttributeNameForIndex((*this)->getName(), index); } static ::mlir::StringAttr getAttributeNameForIndex(::mlir::OperationName name, unsigned index) { assert(index < 5 && "invalid attribute index"); assert(name.getStringRef() == getOperationName() && "invalid operation name"); assert(name.isRegistered() && "Operation isn't registered, missing a " "dependent dialect loading?"); return name.getAttributeNames()[index]; } public: }; } // namespace mlir::ROCDL MLIR_DECLARE_EXPLICIT_TYPE_ID(::mlir::ROCDL::GlobalLoadAsyncToLDSB128Op) MLIR_DECLARE_EXPLICIT_TYPE_ID(::mlir::ROCDL::detail::GlobalLoadAsyncToLDSB128OpGenericAdaptorBase::Properties) namespace mlir::ROCDL { //===----------------------------------------------------------------------===// // ::mlir::ROCDL::GlobalLoadAsyncToLDSB32Op declarations //===----------------------------------------------------------------------===// namespace detail { class GlobalLoadAsyncToLDSB32OpGenericAdaptorBase { public: struct Properties { using alias_scopesTy = ::mlir::ArrayAttr; alias_scopesTy alias_scopes; auto getAliasScopes() const { auto &propStorage = this->alias_scopes; return ::llvm::dyn_cast_or_null<::mlir::ArrayAttr>(propStorage); } void setAliasScopes(const ::mlir::ArrayAttr &propValue) { this->alias_scopes = propValue; } using auxTy = ::mlir::Attribute; auxTy aux; auto getAux() const { auto &propStorage = this->aux; return ::llvm::dyn_cast_or_null<::mlir::Attribute>(propStorage); } void setAux(const ::mlir::Attribute &propValue) { this->aux = propValue; } using noalias_scopesTy = ::mlir::ArrayAttr; noalias_scopesTy noalias_scopes; auto getNoaliasScopes() const { auto &propStorage = this->noalias_scopes; return ::llvm::dyn_cast_or_null<::mlir::ArrayAttr>(propStorage); } void setNoaliasScopes(const ::mlir::ArrayAttr &propValue) { this->noalias_scopes = propValue; } using offsetTy = ::mlir::IntegerAttr; offsetTy offset; auto getOffset() const { auto &propStorage = this->offset; return ::llvm::cast<::mlir::IntegerAttr>(propStorage); } void setOffset(const ::mlir::IntegerAttr &propValue) { this->offset = propValue; } using tbaaTy = ::mlir::ArrayAttr; tbaaTy tbaa; auto getTbaa() const { auto &propStorage = this->tbaa; return ::llvm::dyn_cast_or_null<::mlir::ArrayAttr>(propStorage); } void setTbaa(const ::mlir::ArrayAttr &propValue) { this->tbaa = propValue; } bool operator==(const Properties &rhs) const { return rhs.alias_scopes == this->alias_scopes && rhs.aux == this->aux && rhs.noalias_scopes == this->noalias_scopes && rhs.offset == this->offset && rhs.tbaa == this->tbaa && true; } bool operator!=(const Properties &rhs) const { return !(*this == rhs); } }; protected: ::mlir::DictionaryAttr odsAttrs; ::std::optional<::mlir::OperationName> odsOpName; Properties properties; ::mlir::RegionRange odsRegions; public: GlobalLoadAsyncToLDSB32OpGenericAdaptorBase(::mlir::DictionaryAttr attrs, const Properties &properties, ::mlir::RegionRange regions = {}) : odsAttrs(attrs), properties(properties), odsRegions(regions) { if (odsAttrs) odsOpName.emplace("rocdl.global.load.async.to.lds.b32", odsAttrs.getContext()); } GlobalLoadAsyncToLDSB32OpGenericAdaptorBase(GlobalLoadAsyncToLDSB32Op op); std::pair getODSOperandIndexAndLength(unsigned index, unsigned odsOperandsSize) { return {index, 1}; } const Properties &getProperties() { return properties; } ::mlir::DictionaryAttr getAttributes() { return odsAttrs; } ::mlir::IntegerAttr getOffsetAttr() { auto attr = ::llvm::cast<::mlir::IntegerAttr>(getProperties().offset); return attr; } uint32_t getOffset(); ::mlir::Attribute getAuxAttr(); ::mlir::Attribute getAux(); ::mlir::ArrayAttr getAliasScopesAttr() { auto attr = ::llvm::dyn_cast_or_null<::mlir::ArrayAttr>(getProperties().alias_scopes); return attr; } ::std::optional< ::mlir::ArrayAttr > getAliasScopes(); ::mlir::ArrayAttr getNoaliasScopesAttr() { auto attr = ::llvm::dyn_cast_or_null<::mlir::ArrayAttr>(getProperties().noalias_scopes); return attr; } ::std::optional< ::mlir::ArrayAttr > getNoaliasScopes(); ::mlir::ArrayAttr getTbaaAttr() { auto attr = ::llvm::dyn_cast_or_null<::mlir::ArrayAttr>(getProperties().tbaa); return attr; } ::std::optional< ::mlir::ArrayAttr > getTbaa(); }; } // namespace detail template class GlobalLoadAsyncToLDSB32OpGenericAdaptor : public detail::GlobalLoadAsyncToLDSB32OpGenericAdaptorBase { using ValueT = ::llvm::detail::ValueOfRange; using Base = detail::GlobalLoadAsyncToLDSB32OpGenericAdaptorBase; static constexpr int odsIndex_globalPtr = 0; static constexpr int odsIndex_ldsPtr = 1; public: GlobalLoadAsyncToLDSB32OpGenericAdaptor(RangeT values, ::mlir::DictionaryAttr attrs, const Properties &properties, ::mlir::RegionRange regions = {}) : Base(attrs, properties, regions), odsOperands(values) {} GlobalLoadAsyncToLDSB32OpGenericAdaptor(RangeT values, ::mlir::DictionaryAttr attrs, ::mlir::PropertyRef properties, ::mlir::RegionRange regions = {}) : GlobalLoadAsyncToLDSB32OpGenericAdaptor(values, attrs, (properties ? *properties.as() : Properties{}), regions) {} GlobalLoadAsyncToLDSB32OpGenericAdaptor(RangeT values, ::mlir::DictionaryAttr attrs = nullptr) : GlobalLoadAsyncToLDSB32OpGenericAdaptor(values, attrs, Properties{}, {}) {} GlobalLoadAsyncToLDSB32OpGenericAdaptor(RangeT values, const GlobalLoadAsyncToLDSB32OpGenericAdaptorBase &base) : Base(base), odsOperands(values) {} template >> GlobalLoadAsyncToLDSB32OpGenericAdaptor(RangeT values, LateInst op) : Base(op), odsOperands(values) {} std::pair getODSOperandIndexAndLength(unsigned index) { return Base::getODSOperandIndexAndLength(index, odsOperands.size()); } RangeT getODSOperands(unsigned index) { auto valueRange = getODSOperandIndexAndLength(index); return {std::next(odsOperands.begin(), valueRange.first), std::next(odsOperands.begin(), valueRange.first + valueRange.second)}; } ValueT getGlobalPtr() { return (*getODSOperands(0).begin()); } ValueT getLdsPtr() { return (*getODSOperands(1).begin()); } RangeT getOperands() { return odsOperands; } private: RangeT odsOperands; }; class GlobalLoadAsyncToLDSB32OpAdaptor : public GlobalLoadAsyncToLDSB32OpGenericAdaptor<::mlir::ValueRange> { public: using GlobalLoadAsyncToLDSB32OpGenericAdaptor::GlobalLoadAsyncToLDSB32OpGenericAdaptor; GlobalLoadAsyncToLDSB32OpAdaptor(GlobalLoadAsyncToLDSB32Op op); ::llvm::LogicalResult verify(::mlir::Location loc); }; class GlobalLoadAsyncToLDSB32Op : public ::mlir::Op::Impl, ::mlir::OpTrait::OpInvariants, ::mlir::BytecodeOpInterface::Trait, ::mlir::LLVM::AliasAnalysisOpInterface::Trait, ::mlir::MemoryEffectOpInterface::Trait> { public: using Op::Op; using Op::print; using Adaptor = GlobalLoadAsyncToLDSB32OpAdaptor; template using GenericAdaptor = GlobalLoadAsyncToLDSB32OpGenericAdaptor; using FoldAdaptor = GenericAdaptor<::llvm::ArrayRef<::mlir::Attribute>>; static constexpr int odsIndex_globalPtr = 0; static constexpr int odsIndex_ldsPtr = 1; using Properties = FoldAdaptor::Properties; using ::mlir::LLVM::AliasAnalysisOpInterface::Trait::getAliasScopesOrNull; using ::mlir::LLVM::AliasAnalysisOpInterface::Trait::setAliasScopes; using ::mlir::LLVM::AliasAnalysisOpInterface::Trait::getNoAliasScopesOrNull; using ::mlir::LLVM::AliasAnalysisOpInterface::Trait::setNoAliasScopes; using ::mlir::LLVM::AliasAnalysisOpInterface::Trait::getTBAATagsOrNull; using ::mlir::LLVM::AliasAnalysisOpInterface::Trait::setTBAATags; static ::llvm::ArrayRef<::llvm::StringRef> getAttributeNames() { static ::llvm::StringRef attrNames[] = {::llvm::StringRef("alias_scopes"), ::llvm::StringRef("aux"), ::llvm::StringRef("noalias_scopes"), ::llvm::StringRef("offset"), ::llvm::StringRef("tbaa")}; return ::llvm::ArrayRef(attrNames); } ::mlir::StringAttr getAliasScopesAttrName() { return getAttributeNameForIndex(0); } static ::mlir::StringAttr getAliasScopesAttrName(::mlir::OperationName name) { return getAttributeNameForIndex(name, 0); } ::mlir::StringAttr getAuxAttrName() { return getAttributeNameForIndex(1); } static ::mlir::StringAttr getAuxAttrName(::mlir::OperationName name) { return getAttributeNameForIndex(name, 1); } ::mlir::StringAttr getNoaliasScopesAttrName() { return getAttributeNameForIndex(2); } static ::mlir::StringAttr getNoaliasScopesAttrName(::mlir::OperationName name) { return getAttributeNameForIndex(name, 2); } ::mlir::StringAttr getOffsetAttrName() { return getAttributeNameForIndex(3); } static ::mlir::StringAttr getOffsetAttrName(::mlir::OperationName name) { return getAttributeNameForIndex(name, 3); } ::mlir::StringAttr getTbaaAttrName() { return getAttributeNameForIndex(4); } static ::mlir::StringAttr getTbaaAttrName(::mlir::OperationName name) { return getAttributeNameForIndex(name, 4); } static constexpr ::llvm::StringLiteral getOperationName() { return ::llvm::StringLiteral("rocdl.global.load.async.to.lds.b32"); } std::pair getODSOperandIndexAndLength(unsigned index) { return {index, 1}; } ::mlir::Operation::operand_range getODSOperands(unsigned index) { auto valueRange = getODSOperandIndexAndLength(index); return {std::next(getOperation()->operand_begin(), valueRange.first), std::next(getOperation()->operand_begin(), valueRange.first + valueRange.second)}; } ::mlir::TypedValue<::mlir::LLVM::LLVMPointerType> getGlobalPtr() { return ::llvm::cast<::mlir::TypedValue<::mlir::LLVM::LLVMPointerType>>(*getODSOperands(0).begin()); } ::mlir::TypedValue<::mlir::LLVM::LLVMPointerType> getLdsPtr() { return ::llvm::cast<::mlir::TypedValue<::mlir::LLVM::LLVMPointerType>>(*getODSOperands(1).begin()); } ::mlir::OpOperand &getGlobalPtrMutable() { auto range = getODSOperandIndexAndLength(0); return getOperation()->getOpOperand(range.first); } ::mlir::OpOperand &getLdsPtrMutable() { auto range = getODSOperandIndexAndLength(1); return getOperation()->getOpOperand(range.first); } std::pair getODSResultIndexAndLength(unsigned index) { return {index, 1}; } ::mlir::Operation::result_range getODSResults(unsigned index) { auto valueRange = getODSResultIndexAndLength(index); return {std::next(getOperation()->result_begin(), valueRange.first), std::next(getOperation()->result_begin(), valueRange.first + valueRange.second)}; } static ::llvm::LogicalResult setPropertiesFromAttr(Properties &prop, ::mlir::Attribute attr, ::llvm::function_ref<::mlir::InFlightDiagnostic()> emitError); static ::mlir::Attribute getPropertiesAsAttr(::mlir::MLIRContext *ctx, const Properties &prop); static llvm::hash_code computePropertiesHash(const Properties &prop); static std::optional getInherentAttr(::mlir::MLIRContext *ctx, const Properties &prop, llvm::StringRef name); static void setInherentAttr(Properties &prop, llvm::StringRef name, mlir::Attribute value); static void populateInherentAttrs(::mlir::MLIRContext *ctx, const Properties &prop, ::mlir::NamedAttrList &attrs); static ::llvm::LogicalResult verifyInherentAttrs(::mlir::OperationName opName, ::mlir::NamedAttrList &attrs, llvm::function_ref<::mlir::InFlightDiagnostic()> emitError); static ::llvm::LogicalResult readProperties(::mlir::DialectBytecodeReader &reader, ::mlir::OperationState &state); void writeProperties(::mlir::DialectBytecodeWriter &writer); ::mlir::IntegerAttr getOffsetAttr() { return ::llvm::cast<::mlir::IntegerAttr>(getProperties().offset); } uint32_t getOffset(); ::mlir::Attribute getAuxAttr() { return ::llvm::dyn_cast_or_null<::mlir::Attribute>(getProperties().aux); } ::mlir::Attribute getAux(); ::mlir::ArrayAttr getAliasScopesAttr() { return ::llvm::dyn_cast_or_null<::mlir::ArrayAttr>(getProperties().alias_scopes); } ::std::optional< ::mlir::ArrayAttr > getAliasScopes(); ::mlir::ArrayAttr getNoaliasScopesAttr() { return ::llvm::dyn_cast_or_null<::mlir::ArrayAttr>(getProperties().noalias_scopes); } ::std::optional< ::mlir::ArrayAttr > getNoaliasScopes(); ::mlir::ArrayAttr getTbaaAttr() { return ::llvm::dyn_cast_or_null<::mlir::ArrayAttr>(getProperties().tbaa); } ::std::optional< ::mlir::ArrayAttr > getTbaa(); void setOffsetAttr(::mlir::IntegerAttr attr) { getProperties().offset = attr; } void setOffset(uint32_t attrValue); void setAuxAttr(::mlir::Attribute attr) { getProperties().aux = attr; } void setAliasScopesAttr(::mlir::ArrayAttr attr) { getProperties().alias_scopes = attr; } void setNoaliasScopesAttr(::mlir::ArrayAttr attr) { getProperties().noalias_scopes = attr; } void setTbaaAttr(::mlir::ArrayAttr attr) { getProperties().tbaa = attr; } ::mlir::Attribute removeAliasScopesAttr() { auto attr = getProperties().alias_scopes; getProperties().alias_scopes = {}; return attr; } ::mlir::Attribute removeNoaliasScopesAttr() { auto attr = getProperties().noalias_scopes; getProperties().noalias_scopes = {}; return attr; } ::mlir::Attribute removeTbaaAttr() { auto attr = getProperties().tbaa; getProperties().tbaa = {}; return attr; } static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::Value globalPtr, ::mlir::Value ldsPtr, ::mlir::IntegerAttr offset, ::mlir::Attribute aux, /*optional*/::mlir::ArrayAttr alias_scopes, /*optional*/::mlir::ArrayAttr noalias_scopes, /*optional*/::mlir::ArrayAttr tbaa); static GlobalLoadAsyncToLDSB32Op create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::Value globalPtr, ::mlir::Value ldsPtr, ::mlir::IntegerAttr offset, ::mlir::Attribute aux, /*optional*/::mlir::ArrayAttr alias_scopes, /*optional*/::mlir::ArrayAttr noalias_scopes, /*optional*/::mlir::ArrayAttr tbaa); static GlobalLoadAsyncToLDSB32Op create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::Value globalPtr, ::mlir::Value ldsPtr, ::mlir::IntegerAttr offset, ::mlir::Attribute aux, /*optional*/::mlir::ArrayAttr alias_scopes, /*optional*/::mlir::ArrayAttr noalias_scopes, /*optional*/::mlir::ArrayAttr tbaa); static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::Value globalPtr, ::mlir::Value ldsPtr, ::mlir::IntegerAttr offset, ::mlir::Attribute aux, /*optional*/::mlir::ArrayAttr alias_scopes, /*optional*/::mlir::ArrayAttr noalias_scopes, /*optional*/::mlir::ArrayAttr tbaa); static GlobalLoadAsyncToLDSB32Op create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::Value globalPtr, ::mlir::Value ldsPtr, ::mlir::IntegerAttr offset, ::mlir::Attribute aux, /*optional*/::mlir::ArrayAttr alias_scopes, /*optional*/::mlir::ArrayAttr noalias_scopes, /*optional*/::mlir::ArrayAttr tbaa); static GlobalLoadAsyncToLDSB32Op create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::Value globalPtr, ::mlir::Value ldsPtr, ::mlir::IntegerAttr offset, ::mlir::Attribute aux, /*optional*/::mlir::ArrayAttr alias_scopes, /*optional*/::mlir::ArrayAttr noalias_scopes, /*optional*/::mlir::ArrayAttr tbaa); static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::Value globalPtr, ::mlir::Value ldsPtr, uint32_t offset, ::mlir::Attribute aux, /*optional*/::mlir::ArrayAttr alias_scopes, /*optional*/::mlir::ArrayAttr noalias_scopes, /*optional*/::mlir::ArrayAttr tbaa); static GlobalLoadAsyncToLDSB32Op create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::Value globalPtr, ::mlir::Value ldsPtr, uint32_t offset, ::mlir::Attribute aux, /*optional*/::mlir::ArrayAttr alias_scopes, /*optional*/::mlir::ArrayAttr noalias_scopes, /*optional*/::mlir::ArrayAttr tbaa); static GlobalLoadAsyncToLDSB32Op create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::Value globalPtr, ::mlir::Value ldsPtr, uint32_t offset, ::mlir::Attribute aux, /*optional*/::mlir::ArrayAttr alias_scopes, /*optional*/::mlir::ArrayAttr noalias_scopes, /*optional*/::mlir::ArrayAttr tbaa); static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::Value globalPtr, ::mlir::Value ldsPtr, uint32_t offset, ::mlir::Attribute aux, /*optional*/::mlir::ArrayAttr alias_scopes, /*optional*/::mlir::ArrayAttr noalias_scopes, /*optional*/::mlir::ArrayAttr tbaa); static GlobalLoadAsyncToLDSB32Op create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::Value globalPtr, ::mlir::Value ldsPtr, uint32_t offset, ::mlir::Attribute aux, /*optional*/::mlir::ArrayAttr alias_scopes, /*optional*/::mlir::ArrayAttr noalias_scopes, /*optional*/::mlir::ArrayAttr tbaa); static GlobalLoadAsyncToLDSB32Op create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::Value globalPtr, ::mlir::Value ldsPtr, uint32_t offset, ::mlir::Attribute aux, /*optional*/::mlir::ArrayAttr alias_scopes, /*optional*/::mlir::ArrayAttr noalias_scopes, /*optional*/::mlir::ArrayAttr tbaa); static void build(::mlir::OpBuilder &, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, ::llvm::ArrayRef<::mlir::NamedAttribute> attributes = {}); static GlobalLoadAsyncToLDSB32Op create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, ::llvm::ArrayRef<::mlir::NamedAttribute> attributes = {}); static GlobalLoadAsyncToLDSB32Op create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, ::llvm::ArrayRef<::mlir::NamedAttribute> attributes = {}); static void build(::mlir::OpBuilder &, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, const Properties &properties, ::llvm::ArrayRef<::mlir::NamedAttribute> discardableAttributes = {}); static GlobalLoadAsyncToLDSB32Op create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, const Properties &properties, ::llvm::ArrayRef<::mlir::NamedAttribute> discardableAttributes = {}); static GlobalLoadAsyncToLDSB32Op create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, const Properties &properties, ::llvm::ArrayRef<::mlir::NamedAttribute> discardableAttributes = {}); static void populateDefaultProperties(::mlir::OperationName opName, Properties &properties); ::llvm::LogicalResult verifyInvariantsImpl(); ::llvm::LogicalResult verifyInvariants(); ::llvm::SmallVector<::mlir::Value> getAccessedOperands(); static ::mlir::ParseResult parse(::mlir::OpAsmParser &parser, ::mlir::OperationState &result); void print(::mlir::OpAsmPrinter &_odsPrinter); void getEffects(::llvm::SmallVectorImpl<::mlir::SideEffects::EffectInstance<::mlir::MemoryEffects::Effect>> &effects); private: ::mlir::StringAttr getAttributeNameForIndex(unsigned index) { return getAttributeNameForIndex((*this)->getName(), index); } static ::mlir::StringAttr getAttributeNameForIndex(::mlir::OperationName name, unsigned index) { assert(index < 5 && "invalid attribute index"); assert(name.getStringRef() == getOperationName() && "invalid operation name"); assert(name.isRegistered() && "Operation isn't registered, missing a " "dependent dialect loading?"); return name.getAttributeNames()[index]; } public: }; } // namespace mlir::ROCDL MLIR_DECLARE_EXPLICIT_TYPE_ID(::mlir::ROCDL::GlobalLoadAsyncToLDSB32Op) MLIR_DECLARE_EXPLICIT_TYPE_ID(::mlir::ROCDL::detail::GlobalLoadAsyncToLDSB32OpGenericAdaptorBase::Properties) namespace mlir::ROCDL { //===----------------------------------------------------------------------===// // ::mlir::ROCDL::GlobalLoadAsyncToLDSB64Op declarations //===----------------------------------------------------------------------===// namespace detail { class GlobalLoadAsyncToLDSB64OpGenericAdaptorBase { public: struct Properties { using alias_scopesTy = ::mlir::ArrayAttr; alias_scopesTy alias_scopes; auto getAliasScopes() const { auto &propStorage = this->alias_scopes; return ::llvm::dyn_cast_or_null<::mlir::ArrayAttr>(propStorage); } void setAliasScopes(const ::mlir::ArrayAttr &propValue) { this->alias_scopes = propValue; } using auxTy = ::mlir::Attribute; auxTy aux; auto getAux() const { auto &propStorage = this->aux; return ::llvm::dyn_cast_or_null<::mlir::Attribute>(propStorage); } void setAux(const ::mlir::Attribute &propValue) { this->aux = propValue; } using noalias_scopesTy = ::mlir::ArrayAttr; noalias_scopesTy noalias_scopes; auto getNoaliasScopes() const { auto &propStorage = this->noalias_scopes; return ::llvm::dyn_cast_or_null<::mlir::ArrayAttr>(propStorage); } void setNoaliasScopes(const ::mlir::ArrayAttr &propValue) { this->noalias_scopes = propValue; } using offsetTy = ::mlir::IntegerAttr; offsetTy offset; auto getOffset() const { auto &propStorage = this->offset; return ::llvm::cast<::mlir::IntegerAttr>(propStorage); } void setOffset(const ::mlir::IntegerAttr &propValue) { this->offset = propValue; } using tbaaTy = ::mlir::ArrayAttr; tbaaTy tbaa; auto getTbaa() const { auto &propStorage = this->tbaa; return ::llvm::dyn_cast_or_null<::mlir::ArrayAttr>(propStorage); } void setTbaa(const ::mlir::ArrayAttr &propValue) { this->tbaa = propValue; } bool operator==(const Properties &rhs) const { return rhs.alias_scopes == this->alias_scopes && rhs.aux == this->aux && rhs.noalias_scopes == this->noalias_scopes && rhs.offset == this->offset && rhs.tbaa == this->tbaa && true; } bool operator!=(const Properties &rhs) const { return !(*this == rhs); } }; protected: ::mlir::DictionaryAttr odsAttrs; ::std::optional<::mlir::OperationName> odsOpName; Properties properties; ::mlir::RegionRange odsRegions; public: GlobalLoadAsyncToLDSB64OpGenericAdaptorBase(::mlir::DictionaryAttr attrs, const Properties &properties, ::mlir::RegionRange regions = {}) : odsAttrs(attrs), properties(properties), odsRegions(regions) { if (odsAttrs) odsOpName.emplace("rocdl.global.load.async.to.lds.b64", odsAttrs.getContext()); } GlobalLoadAsyncToLDSB64OpGenericAdaptorBase(GlobalLoadAsyncToLDSB64Op op); std::pair getODSOperandIndexAndLength(unsigned index, unsigned odsOperandsSize) { return {index, 1}; } const Properties &getProperties() { return properties; } ::mlir::DictionaryAttr getAttributes() { return odsAttrs; } ::mlir::IntegerAttr getOffsetAttr() { auto attr = ::llvm::cast<::mlir::IntegerAttr>(getProperties().offset); return attr; } uint32_t getOffset(); ::mlir::Attribute getAuxAttr(); ::mlir::Attribute getAux(); ::mlir::ArrayAttr getAliasScopesAttr() { auto attr = ::llvm::dyn_cast_or_null<::mlir::ArrayAttr>(getProperties().alias_scopes); return attr; } ::std::optional< ::mlir::ArrayAttr > getAliasScopes(); ::mlir::ArrayAttr getNoaliasScopesAttr() { auto attr = ::llvm::dyn_cast_or_null<::mlir::ArrayAttr>(getProperties().noalias_scopes); return attr; } ::std::optional< ::mlir::ArrayAttr > getNoaliasScopes(); ::mlir::ArrayAttr getTbaaAttr() { auto attr = ::llvm::dyn_cast_or_null<::mlir::ArrayAttr>(getProperties().tbaa); return attr; } ::std::optional< ::mlir::ArrayAttr > getTbaa(); }; } // namespace detail template class GlobalLoadAsyncToLDSB64OpGenericAdaptor : public detail::GlobalLoadAsyncToLDSB64OpGenericAdaptorBase { using ValueT = ::llvm::detail::ValueOfRange; using Base = detail::GlobalLoadAsyncToLDSB64OpGenericAdaptorBase; static constexpr int odsIndex_globalPtr = 0; static constexpr int odsIndex_ldsPtr = 1; public: GlobalLoadAsyncToLDSB64OpGenericAdaptor(RangeT values, ::mlir::DictionaryAttr attrs, const Properties &properties, ::mlir::RegionRange regions = {}) : Base(attrs, properties, regions), odsOperands(values) {} GlobalLoadAsyncToLDSB64OpGenericAdaptor(RangeT values, ::mlir::DictionaryAttr attrs, ::mlir::PropertyRef properties, ::mlir::RegionRange regions = {}) : GlobalLoadAsyncToLDSB64OpGenericAdaptor(values, attrs, (properties ? *properties.as() : Properties{}), regions) {} GlobalLoadAsyncToLDSB64OpGenericAdaptor(RangeT values, ::mlir::DictionaryAttr attrs = nullptr) : GlobalLoadAsyncToLDSB64OpGenericAdaptor(values, attrs, Properties{}, {}) {} GlobalLoadAsyncToLDSB64OpGenericAdaptor(RangeT values, const GlobalLoadAsyncToLDSB64OpGenericAdaptorBase &base) : Base(base), odsOperands(values) {} template >> GlobalLoadAsyncToLDSB64OpGenericAdaptor(RangeT values, LateInst op) : Base(op), odsOperands(values) {} std::pair getODSOperandIndexAndLength(unsigned index) { return Base::getODSOperandIndexAndLength(index, odsOperands.size()); } RangeT getODSOperands(unsigned index) { auto valueRange = getODSOperandIndexAndLength(index); return {std::next(odsOperands.begin(), valueRange.first), std::next(odsOperands.begin(), valueRange.first + valueRange.second)}; } ValueT getGlobalPtr() { return (*getODSOperands(0).begin()); } ValueT getLdsPtr() { return (*getODSOperands(1).begin()); } RangeT getOperands() { return odsOperands; } private: RangeT odsOperands; }; class GlobalLoadAsyncToLDSB64OpAdaptor : public GlobalLoadAsyncToLDSB64OpGenericAdaptor<::mlir::ValueRange> { public: using GlobalLoadAsyncToLDSB64OpGenericAdaptor::GlobalLoadAsyncToLDSB64OpGenericAdaptor; GlobalLoadAsyncToLDSB64OpAdaptor(GlobalLoadAsyncToLDSB64Op op); ::llvm::LogicalResult verify(::mlir::Location loc); }; class GlobalLoadAsyncToLDSB64Op : public ::mlir::Op::Impl, ::mlir::OpTrait::OpInvariants, ::mlir::BytecodeOpInterface::Trait, ::mlir::LLVM::AliasAnalysisOpInterface::Trait, ::mlir::MemoryEffectOpInterface::Trait> { public: using Op::Op; using Op::print; using Adaptor = GlobalLoadAsyncToLDSB64OpAdaptor; template using GenericAdaptor = GlobalLoadAsyncToLDSB64OpGenericAdaptor; using FoldAdaptor = GenericAdaptor<::llvm::ArrayRef<::mlir::Attribute>>; static constexpr int odsIndex_globalPtr = 0; static constexpr int odsIndex_ldsPtr = 1; using Properties = FoldAdaptor::Properties; using ::mlir::LLVM::AliasAnalysisOpInterface::Trait::getAliasScopesOrNull; using ::mlir::LLVM::AliasAnalysisOpInterface::Trait::setAliasScopes; using ::mlir::LLVM::AliasAnalysisOpInterface::Trait::getNoAliasScopesOrNull; using ::mlir::LLVM::AliasAnalysisOpInterface::Trait::setNoAliasScopes; using ::mlir::LLVM::AliasAnalysisOpInterface::Trait::getTBAATagsOrNull; using ::mlir::LLVM::AliasAnalysisOpInterface::Trait::setTBAATags; static ::llvm::ArrayRef<::llvm::StringRef> getAttributeNames() { static ::llvm::StringRef attrNames[] = {::llvm::StringRef("alias_scopes"), ::llvm::StringRef("aux"), ::llvm::StringRef("noalias_scopes"), ::llvm::StringRef("offset"), ::llvm::StringRef("tbaa")}; return ::llvm::ArrayRef(attrNames); } ::mlir::StringAttr getAliasScopesAttrName() { return getAttributeNameForIndex(0); } static ::mlir::StringAttr getAliasScopesAttrName(::mlir::OperationName name) { return getAttributeNameForIndex(name, 0); } ::mlir::StringAttr getAuxAttrName() { return getAttributeNameForIndex(1); } static ::mlir::StringAttr getAuxAttrName(::mlir::OperationName name) { return getAttributeNameForIndex(name, 1); } ::mlir::StringAttr getNoaliasScopesAttrName() { return getAttributeNameForIndex(2); } static ::mlir::StringAttr getNoaliasScopesAttrName(::mlir::OperationName name) { return getAttributeNameForIndex(name, 2); } ::mlir::StringAttr getOffsetAttrName() { return getAttributeNameForIndex(3); } static ::mlir::StringAttr getOffsetAttrName(::mlir::OperationName name) { return getAttributeNameForIndex(name, 3); } ::mlir::StringAttr getTbaaAttrName() { return getAttributeNameForIndex(4); } static ::mlir::StringAttr getTbaaAttrName(::mlir::OperationName name) { return getAttributeNameForIndex(name, 4); } static constexpr ::llvm::StringLiteral getOperationName() { return ::llvm::StringLiteral("rocdl.global.load.async.to.lds.b64"); } std::pair getODSOperandIndexAndLength(unsigned index) { return {index, 1}; } ::mlir::Operation::operand_range getODSOperands(unsigned index) { auto valueRange = getODSOperandIndexAndLength(index); return {std::next(getOperation()->operand_begin(), valueRange.first), std::next(getOperation()->operand_begin(), valueRange.first + valueRange.second)}; } ::mlir::TypedValue<::mlir::LLVM::LLVMPointerType> getGlobalPtr() { return ::llvm::cast<::mlir::TypedValue<::mlir::LLVM::LLVMPointerType>>(*getODSOperands(0).begin()); } ::mlir::TypedValue<::mlir::LLVM::LLVMPointerType> getLdsPtr() { return ::llvm::cast<::mlir::TypedValue<::mlir::LLVM::LLVMPointerType>>(*getODSOperands(1).begin()); } ::mlir::OpOperand &getGlobalPtrMutable() { auto range = getODSOperandIndexAndLength(0); return getOperation()->getOpOperand(range.first); } ::mlir::OpOperand &getLdsPtrMutable() { auto range = getODSOperandIndexAndLength(1); return getOperation()->getOpOperand(range.first); } std::pair getODSResultIndexAndLength(unsigned index) { return {index, 1}; } ::mlir::Operation::result_range getODSResults(unsigned index) { auto valueRange = getODSResultIndexAndLength(index); return {std::next(getOperation()->result_begin(), valueRange.first), std::next(getOperation()->result_begin(), valueRange.first + valueRange.second)}; } static ::llvm::LogicalResult setPropertiesFromAttr(Properties &prop, ::mlir::Attribute attr, ::llvm::function_ref<::mlir::InFlightDiagnostic()> emitError); static ::mlir::Attribute getPropertiesAsAttr(::mlir::MLIRContext *ctx, const Properties &prop); static llvm::hash_code computePropertiesHash(const Properties &prop); static std::optional getInherentAttr(::mlir::MLIRContext *ctx, const Properties &prop, llvm::StringRef name); static void setInherentAttr(Properties &prop, llvm::StringRef name, mlir::Attribute value); static void populateInherentAttrs(::mlir::MLIRContext *ctx, const Properties &prop, ::mlir::NamedAttrList &attrs); static ::llvm::LogicalResult verifyInherentAttrs(::mlir::OperationName opName, ::mlir::NamedAttrList &attrs, llvm::function_ref<::mlir::InFlightDiagnostic()> emitError); static ::llvm::LogicalResult readProperties(::mlir::DialectBytecodeReader &reader, ::mlir::OperationState &state); void writeProperties(::mlir::DialectBytecodeWriter &writer); ::mlir::IntegerAttr getOffsetAttr() { return ::llvm::cast<::mlir::IntegerAttr>(getProperties().offset); } uint32_t getOffset(); ::mlir::Attribute getAuxAttr() { return ::llvm::dyn_cast_or_null<::mlir::Attribute>(getProperties().aux); } ::mlir::Attribute getAux(); ::mlir::ArrayAttr getAliasScopesAttr() { return ::llvm::dyn_cast_or_null<::mlir::ArrayAttr>(getProperties().alias_scopes); } ::std::optional< ::mlir::ArrayAttr > getAliasScopes(); ::mlir::ArrayAttr getNoaliasScopesAttr() { return ::llvm::dyn_cast_or_null<::mlir::ArrayAttr>(getProperties().noalias_scopes); } ::std::optional< ::mlir::ArrayAttr > getNoaliasScopes(); ::mlir::ArrayAttr getTbaaAttr() { return ::llvm::dyn_cast_or_null<::mlir::ArrayAttr>(getProperties().tbaa); } ::std::optional< ::mlir::ArrayAttr > getTbaa(); void setOffsetAttr(::mlir::IntegerAttr attr) { getProperties().offset = attr; } void setOffset(uint32_t attrValue); void setAuxAttr(::mlir::Attribute attr) { getProperties().aux = attr; } void setAliasScopesAttr(::mlir::ArrayAttr attr) { getProperties().alias_scopes = attr; } void setNoaliasScopesAttr(::mlir::ArrayAttr attr) { getProperties().noalias_scopes = attr; } void setTbaaAttr(::mlir::ArrayAttr attr) { getProperties().tbaa = attr; } ::mlir::Attribute removeAliasScopesAttr() { auto attr = getProperties().alias_scopes; getProperties().alias_scopes = {}; return attr; } ::mlir::Attribute removeNoaliasScopesAttr() { auto attr = getProperties().noalias_scopes; getProperties().noalias_scopes = {}; return attr; } ::mlir::Attribute removeTbaaAttr() { auto attr = getProperties().tbaa; getProperties().tbaa = {}; return attr; } static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::Value globalPtr, ::mlir::Value ldsPtr, ::mlir::IntegerAttr offset, ::mlir::Attribute aux, /*optional*/::mlir::ArrayAttr alias_scopes, /*optional*/::mlir::ArrayAttr noalias_scopes, /*optional*/::mlir::ArrayAttr tbaa); static GlobalLoadAsyncToLDSB64Op create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::Value globalPtr, ::mlir::Value ldsPtr, ::mlir::IntegerAttr offset, ::mlir::Attribute aux, /*optional*/::mlir::ArrayAttr alias_scopes, /*optional*/::mlir::ArrayAttr noalias_scopes, /*optional*/::mlir::ArrayAttr tbaa); static GlobalLoadAsyncToLDSB64Op create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::Value globalPtr, ::mlir::Value ldsPtr, ::mlir::IntegerAttr offset, ::mlir::Attribute aux, /*optional*/::mlir::ArrayAttr alias_scopes, /*optional*/::mlir::ArrayAttr noalias_scopes, /*optional*/::mlir::ArrayAttr tbaa); static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::Value globalPtr, ::mlir::Value ldsPtr, ::mlir::IntegerAttr offset, ::mlir::Attribute aux, /*optional*/::mlir::ArrayAttr alias_scopes, /*optional*/::mlir::ArrayAttr noalias_scopes, /*optional*/::mlir::ArrayAttr tbaa); static GlobalLoadAsyncToLDSB64Op create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::Value globalPtr, ::mlir::Value ldsPtr, ::mlir::IntegerAttr offset, ::mlir::Attribute aux, /*optional*/::mlir::ArrayAttr alias_scopes, /*optional*/::mlir::ArrayAttr noalias_scopes, /*optional*/::mlir::ArrayAttr tbaa); static GlobalLoadAsyncToLDSB64Op create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::Value globalPtr, ::mlir::Value ldsPtr, ::mlir::IntegerAttr offset, ::mlir::Attribute aux, /*optional*/::mlir::ArrayAttr alias_scopes, /*optional*/::mlir::ArrayAttr noalias_scopes, /*optional*/::mlir::ArrayAttr tbaa); static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::Value globalPtr, ::mlir::Value ldsPtr, uint32_t offset, ::mlir::Attribute aux, /*optional*/::mlir::ArrayAttr alias_scopes, /*optional*/::mlir::ArrayAttr noalias_scopes, /*optional*/::mlir::ArrayAttr tbaa); static GlobalLoadAsyncToLDSB64Op create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::Value globalPtr, ::mlir::Value ldsPtr, uint32_t offset, ::mlir::Attribute aux, /*optional*/::mlir::ArrayAttr alias_scopes, /*optional*/::mlir::ArrayAttr noalias_scopes, /*optional*/::mlir::ArrayAttr tbaa); static GlobalLoadAsyncToLDSB64Op create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::Value globalPtr, ::mlir::Value ldsPtr, uint32_t offset, ::mlir::Attribute aux, /*optional*/::mlir::ArrayAttr alias_scopes, /*optional*/::mlir::ArrayAttr noalias_scopes, /*optional*/::mlir::ArrayAttr tbaa); static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::Value globalPtr, ::mlir::Value ldsPtr, uint32_t offset, ::mlir::Attribute aux, /*optional*/::mlir::ArrayAttr alias_scopes, /*optional*/::mlir::ArrayAttr noalias_scopes, /*optional*/::mlir::ArrayAttr tbaa); static GlobalLoadAsyncToLDSB64Op create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::Value globalPtr, ::mlir::Value ldsPtr, uint32_t offset, ::mlir::Attribute aux, /*optional*/::mlir::ArrayAttr alias_scopes, /*optional*/::mlir::ArrayAttr noalias_scopes, /*optional*/::mlir::ArrayAttr tbaa); static GlobalLoadAsyncToLDSB64Op create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::Value globalPtr, ::mlir::Value ldsPtr, uint32_t offset, ::mlir::Attribute aux, /*optional*/::mlir::ArrayAttr alias_scopes, /*optional*/::mlir::ArrayAttr noalias_scopes, /*optional*/::mlir::ArrayAttr tbaa); static void build(::mlir::OpBuilder &, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, ::llvm::ArrayRef<::mlir::NamedAttribute> attributes = {}); static GlobalLoadAsyncToLDSB64Op create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, ::llvm::ArrayRef<::mlir::NamedAttribute> attributes = {}); static GlobalLoadAsyncToLDSB64Op create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, ::llvm::ArrayRef<::mlir::NamedAttribute> attributes = {}); static void build(::mlir::OpBuilder &, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, const Properties &properties, ::llvm::ArrayRef<::mlir::NamedAttribute> discardableAttributes = {}); static GlobalLoadAsyncToLDSB64Op create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, const Properties &properties, ::llvm::ArrayRef<::mlir::NamedAttribute> discardableAttributes = {}); static GlobalLoadAsyncToLDSB64Op create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, const Properties &properties, ::llvm::ArrayRef<::mlir::NamedAttribute> discardableAttributes = {}); static void populateDefaultProperties(::mlir::OperationName opName, Properties &properties); ::llvm::LogicalResult verifyInvariantsImpl(); ::llvm::LogicalResult verifyInvariants(); ::llvm::SmallVector<::mlir::Value> getAccessedOperands(); static ::mlir::ParseResult parse(::mlir::OpAsmParser &parser, ::mlir::OperationState &result); void print(::mlir::OpAsmPrinter &_odsPrinter); void getEffects(::llvm::SmallVectorImpl<::mlir::SideEffects::EffectInstance<::mlir::MemoryEffects::Effect>> &effects); private: ::mlir::StringAttr getAttributeNameForIndex(unsigned index) { return getAttributeNameForIndex((*this)->getName(), index); } static ::mlir::StringAttr getAttributeNameForIndex(::mlir::OperationName name, unsigned index) { assert(index < 5 && "invalid attribute index"); assert(name.getStringRef() == getOperationName() && "invalid operation name"); assert(name.isRegistered() && "Operation isn't registered, missing a " "dependent dialect loading?"); return name.getAttributeNames()[index]; } public: }; } // namespace mlir::ROCDL MLIR_DECLARE_EXPLICIT_TYPE_ID(::mlir::ROCDL::GlobalLoadAsyncToLDSB64Op) MLIR_DECLARE_EXPLICIT_TYPE_ID(::mlir::ROCDL::detail::GlobalLoadAsyncToLDSB64OpGenericAdaptorBase::Properties) namespace mlir::ROCDL { //===----------------------------------------------------------------------===// // ::mlir::ROCDL::GlobalLoadAsyncToLDSB8Op declarations //===----------------------------------------------------------------------===// namespace detail { class GlobalLoadAsyncToLDSB8OpGenericAdaptorBase { public: struct Properties { using alias_scopesTy = ::mlir::ArrayAttr; alias_scopesTy alias_scopes; auto getAliasScopes() const { auto &propStorage = this->alias_scopes; return ::llvm::dyn_cast_or_null<::mlir::ArrayAttr>(propStorage); } void setAliasScopes(const ::mlir::ArrayAttr &propValue) { this->alias_scopes = propValue; } using auxTy = ::mlir::Attribute; auxTy aux; auto getAux() const { auto &propStorage = this->aux; return ::llvm::dyn_cast_or_null<::mlir::Attribute>(propStorage); } void setAux(const ::mlir::Attribute &propValue) { this->aux = propValue; } using noalias_scopesTy = ::mlir::ArrayAttr; noalias_scopesTy noalias_scopes; auto getNoaliasScopes() const { auto &propStorage = this->noalias_scopes; return ::llvm::dyn_cast_or_null<::mlir::ArrayAttr>(propStorage); } void setNoaliasScopes(const ::mlir::ArrayAttr &propValue) { this->noalias_scopes = propValue; } using offsetTy = ::mlir::IntegerAttr; offsetTy offset; auto getOffset() const { auto &propStorage = this->offset; return ::llvm::cast<::mlir::IntegerAttr>(propStorage); } void setOffset(const ::mlir::IntegerAttr &propValue) { this->offset = propValue; } using tbaaTy = ::mlir::ArrayAttr; tbaaTy tbaa; auto getTbaa() const { auto &propStorage = this->tbaa; return ::llvm::dyn_cast_or_null<::mlir::ArrayAttr>(propStorage); } void setTbaa(const ::mlir::ArrayAttr &propValue) { this->tbaa = propValue; } bool operator==(const Properties &rhs) const { return rhs.alias_scopes == this->alias_scopes && rhs.aux == this->aux && rhs.noalias_scopes == this->noalias_scopes && rhs.offset == this->offset && rhs.tbaa == this->tbaa && true; } bool operator!=(const Properties &rhs) const { return !(*this == rhs); } }; protected: ::mlir::DictionaryAttr odsAttrs; ::std::optional<::mlir::OperationName> odsOpName; Properties properties; ::mlir::RegionRange odsRegions; public: GlobalLoadAsyncToLDSB8OpGenericAdaptorBase(::mlir::DictionaryAttr attrs, const Properties &properties, ::mlir::RegionRange regions = {}) : odsAttrs(attrs), properties(properties), odsRegions(regions) { if (odsAttrs) odsOpName.emplace("rocdl.global.load.async.to.lds.b8", odsAttrs.getContext()); } GlobalLoadAsyncToLDSB8OpGenericAdaptorBase(GlobalLoadAsyncToLDSB8Op op); std::pair getODSOperandIndexAndLength(unsigned index, unsigned odsOperandsSize) { return {index, 1}; } const Properties &getProperties() { return properties; } ::mlir::DictionaryAttr getAttributes() { return odsAttrs; } ::mlir::IntegerAttr getOffsetAttr() { auto attr = ::llvm::cast<::mlir::IntegerAttr>(getProperties().offset); return attr; } uint32_t getOffset(); ::mlir::Attribute getAuxAttr(); ::mlir::Attribute getAux(); ::mlir::ArrayAttr getAliasScopesAttr() { auto attr = ::llvm::dyn_cast_or_null<::mlir::ArrayAttr>(getProperties().alias_scopes); return attr; } ::std::optional< ::mlir::ArrayAttr > getAliasScopes(); ::mlir::ArrayAttr getNoaliasScopesAttr() { auto attr = ::llvm::dyn_cast_or_null<::mlir::ArrayAttr>(getProperties().noalias_scopes); return attr; } ::std::optional< ::mlir::ArrayAttr > getNoaliasScopes(); ::mlir::ArrayAttr getTbaaAttr() { auto attr = ::llvm::dyn_cast_or_null<::mlir::ArrayAttr>(getProperties().tbaa); return attr; } ::std::optional< ::mlir::ArrayAttr > getTbaa(); }; } // namespace detail template class GlobalLoadAsyncToLDSB8OpGenericAdaptor : public detail::GlobalLoadAsyncToLDSB8OpGenericAdaptorBase { using ValueT = ::llvm::detail::ValueOfRange; using Base = detail::GlobalLoadAsyncToLDSB8OpGenericAdaptorBase; static constexpr int odsIndex_globalPtr = 0; static constexpr int odsIndex_ldsPtr = 1; public: GlobalLoadAsyncToLDSB8OpGenericAdaptor(RangeT values, ::mlir::DictionaryAttr attrs, const Properties &properties, ::mlir::RegionRange regions = {}) : Base(attrs, properties, regions), odsOperands(values) {} GlobalLoadAsyncToLDSB8OpGenericAdaptor(RangeT values, ::mlir::DictionaryAttr attrs, ::mlir::PropertyRef properties, ::mlir::RegionRange regions = {}) : GlobalLoadAsyncToLDSB8OpGenericAdaptor(values, attrs, (properties ? *properties.as() : Properties{}), regions) {} GlobalLoadAsyncToLDSB8OpGenericAdaptor(RangeT values, ::mlir::DictionaryAttr attrs = nullptr) : GlobalLoadAsyncToLDSB8OpGenericAdaptor(values, attrs, Properties{}, {}) {} GlobalLoadAsyncToLDSB8OpGenericAdaptor(RangeT values, const GlobalLoadAsyncToLDSB8OpGenericAdaptorBase &base) : Base(base), odsOperands(values) {} template >> GlobalLoadAsyncToLDSB8OpGenericAdaptor(RangeT values, LateInst op) : Base(op), odsOperands(values) {} std::pair getODSOperandIndexAndLength(unsigned index) { return Base::getODSOperandIndexAndLength(index, odsOperands.size()); } RangeT getODSOperands(unsigned index) { auto valueRange = getODSOperandIndexAndLength(index); return {std::next(odsOperands.begin(), valueRange.first), std::next(odsOperands.begin(), valueRange.first + valueRange.second)}; } ValueT getGlobalPtr() { return (*getODSOperands(0).begin()); } ValueT getLdsPtr() { return (*getODSOperands(1).begin()); } RangeT getOperands() { return odsOperands; } private: RangeT odsOperands; }; class GlobalLoadAsyncToLDSB8OpAdaptor : public GlobalLoadAsyncToLDSB8OpGenericAdaptor<::mlir::ValueRange> { public: using GlobalLoadAsyncToLDSB8OpGenericAdaptor::GlobalLoadAsyncToLDSB8OpGenericAdaptor; GlobalLoadAsyncToLDSB8OpAdaptor(GlobalLoadAsyncToLDSB8Op op); ::llvm::LogicalResult verify(::mlir::Location loc); }; class GlobalLoadAsyncToLDSB8Op : public ::mlir::Op::Impl, ::mlir::OpTrait::OpInvariants, ::mlir::BytecodeOpInterface::Trait, ::mlir::LLVM::AliasAnalysisOpInterface::Trait, ::mlir::MemoryEffectOpInterface::Trait> { public: using Op::Op; using Op::print; using Adaptor = GlobalLoadAsyncToLDSB8OpAdaptor; template using GenericAdaptor = GlobalLoadAsyncToLDSB8OpGenericAdaptor; using FoldAdaptor = GenericAdaptor<::llvm::ArrayRef<::mlir::Attribute>>; static constexpr int odsIndex_globalPtr = 0; static constexpr int odsIndex_ldsPtr = 1; using Properties = FoldAdaptor::Properties; using ::mlir::LLVM::AliasAnalysisOpInterface::Trait::getAliasScopesOrNull; using ::mlir::LLVM::AliasAnalysisOpInterface::Trait::setAliasScopes; using ::mlir::LLVM::AliasAnalysisOpInterface::Trait::getNoAliasScopesOrNull; using ::mlir::LLVM::AliasAnalysisOpInterface::Trait::setNoAliasScopes; using ::mlir::LLVM::AliasAnalysisOpInterface::Trait::getTBAATagsOrNull; using ::mlir::LLVM::AliasAnalysisOpInterface::Trait::setTBAATags; static ::llvm::ArrayRef<::llvm::StringRef> getAttributeNames() { static ::llvm::StringRef attrNames[] = {::llvm::StringRef("alias_scopes"), ::llvm::StringRef("aux"), ::llvm::StringRef("noalias_scopes"), ::llvm::StringRef("offset"), ::llvm::StringRef("tbaa")}; return ::llvm::ArrayRef(attrNames); } ::mlir::StringAttr getAliasScopesAttrName() { return getAttributeNameForIndex(0); } static ::mlir::StringAttr getAliasScopesAttrName(::mlir::OperationName name) { return getAttributeNameForIndex(name, 0); } ::mlir::StringAttr getAuxAttrName() { return getAttributeNameForIndex(1); } static ::mlir::StringAttr getAuxAttrName(::mlir::OperationName name) { return getAttributeNameForIndex(name, 1); } ::mlir::StringAttr getNoaliasScopesAttrName() { return getAttributeNameForIndex(2); } static ::mlir::StringAttr getNoaliasScopesAttrName(::mlir::OperationName name) { return getAttributeNameForIndex(name, 2); } ::mlir::StringAttr getOffsetAttrName() { return getAttributeNameForIndex(3); } static ::mlir::StringAttr getOffsetAttrName(::mlir::OperationName name) { return getAttributeNameForIndex(name, 3); } ::mlir::StringAttr getTbaaAttrName() { return getAttributeNameForIndex(4); } static ::mlir::StringAttr getTbaaAttrName(::mlir::OperationName name) { return getAttributeNameForIndex(name, 4); } static constexpr ::llvm::StringLiteral getOperationName() { return ::llvm::StringLiteral("rocdl.global.load.async.to.lds.b8"); } std::pair getODSOperandIndexAndLength(unsigned index) { return {index, 1}; } ::mlir::Operation::operand_range getODSOperands(unsigned index) { auto valueRange = getODSOperandIndexAndLength(index); return {std::next(getOperation()->operand_begin(), valueRange.first), std::next(getOperation()->operand_begin(), valueRange.first + valueRange.second)}; } ::mlir::TypedValue<::mlir::LLVM::LLVMPointerType> getGlobalPtr() { return ::llvm::cast<::mlir::TypedValue<::mlir::LLVM::LLVMPointerType>>(*getODSOperands(0).begin()); } ::mlir::TypedValue<::mlir::LLVM::LLVMPointerType> getLdsPtr() { return ::llvm::cast<::mlir::TypedValue<::mlir::LLVM::LLVMPointerType>>(*getODSOperands(1).begin()); } ::mlir::OpOperand &getGlobalPtrMutable() { auto range = getODSOperandIndexAndLength(0); return getOperation()->getOpOperand(range.first); } ::mlir::OpOperand &getLdsPtrMutable() { auto range = getODSOperandIndexAndLength(1); return getOperation()->getOpOperand(range.first); } std::pair getODSResultIndexAndLength(unsigned index) { return {index, 1}; } ::mlir::Operation::result_range getODSResults(unsigned index) { auto valueRange = getODSResultIndexAndLength(index); return {std::next(getOperation()->result_begin(), valueRange.first), std::next(getOperation()->result_begin(), valueRange.first + valueRange.second)}; } static ::llvm::LogicalResult setPropertiesFromAttr(Properties &prop, ::mlir::Attribute attr, ::llvm::function_ref<::mlir::InFlightDiagnostic()> emitError); static ::mlir::Attribute getPropertiesAsAttr(::mlir::MLIRContext *ctx, const Properties &prop); static llvm::hash_code computePropertiesHash(const Properties &prop); static std::optional getInherentAttr(::mlir::MLIRContext *ctx, const Properties &prop, llvm::StringRef name); static void setInherentAttr(Properties &prop, llvm::StringRef name, mlir::Attribute value); static void populateInherentAttrs(::mlir::MLIRContext *ctx, const Properties &prop, ::mlir::NamedAttrList &attrs); static ::llvm::LogicalResult verifyInherentAttrs(::mlir::OperationName opName, ::mlir::NamedAttrList &attrs, llvm::function_ref<::mlir::InFlightDiagnostic()> emitError); static ::llvm::LogicalResult readProperties(::mlir::DialectBytecodeReader &reader, ::mlir::OperationState &state); void writeProperties(::mlir::DialectBytecodeWriter &writer); ::mlir::IntegerAttr getOffsetAttr() { return ::llvm::cast<::mlir::IntegerAttr>(getProperties().offset); } uint32_t getOffset(); ::mlir::Attribute getAuxAttr() { return ::llvm::dyn_cast_or_null<::mlir::Attribute>(getProperties().aux); } ::mlir::Attribute getAux(); ::mlir::ArrayAttr getAliasScopesAttr() { return ::llvm::dyn_cast_or_null<::mlir::ArrayAttr>(getProperties().alias_scopes); } ::std::optional< ::mlir::ArrayAttr > getAliasScopes(); ::mlir::ArrayAttr getNoaliasScopesAttr() { return ::llvm::dyn_cast_or_null<::mlir::ArrayAttr>(getProperties().noalias_scopes); } ::std::optional< ::mlir::ArrayAttr > getNoaliasScopes(); ::mlir::ArrayAttr getTbaaAttr() { return ::llvm::dyn_cast_or_null<::mlir::ArrayAttr>(getProperties().tbaa); } ::std::optional< ::mlir::ArrayAttr > getTbaa(); void setOffsetAttr(::mlir::IntegerAttr attr) { getProperties().offset = attr; } void setOffset(uint32_t attrValue); void setAuxAttr(::mlir::Attribute attr) { getProperties().aux = attr; } void setAliasScopesAttr(::mlir::ArrayAttr attr) { getProperties().alias_scopes = attr; } void setNoaliasScopesAttr(::mlir::ArrayAttr attr) { getProperties().noalias_scopes = attr; } void setTbaaAttr(::mlir::ArrayAttr attr) { getProperties().tbaa = attr; } ::mlir::Attribute removeAliasScopesAttr() { auto attr = getProperties().alias_scopes; getProperties().alias_scopes = {}; return attr; } ::mlir::Attribute removeNoaliasScopesAttr() { auto attr = getProperties().noalias_scopes; getProperties().noalias_scopes = {}; return attr; } ::mlir::Attribute removeTbaaAttr() { auto attr = getProperties().tbaa; getProperties().tbaa = {}; return attr; } static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::Value globalPtr, ::mlir::Value ldsPtr, ::mlir::IntegerAttr offset, ::mlir::Attribute aux, /*optional*/::mlir::ArrayAttr alias_scopes, /*optional*/::mlir::ArrayAttr noalias_scopes, /*optional*/::mlir::ArrayAttr tbaa); static GlobalLoadAsyncToLDSB8Op create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::Value globalPtr, ::mlir::Value ldsPtr, ::mlir::IntegerAttr offset, ::mlir::Attribute aux, /*optional*/::mlir::ArrayAttr alias_scopes, /*optional*/::mlir::ArrayAttr noalias_scopes, /*optional*/::mlir::ArrayAttr tbaa); static GlobalLoadAsyncToLDSB8Op create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::Value globalPtr, ::mlir::Value ldsPtr, ::mlir::IntegerAttr offset, ::mlir::Attribute aux, /*optional*/::mlir::ArrayAttr alias_scopes, /*optional*/::mlir::ArrayAttr noalias_scopes, /*optional*/::mlir::ArrayAttr tbaa); static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::Value globalPtr, ::mlir::Value ldsPtr, ::mlir::IntegerAttr offset, ::mlir::Attribute aux, /*optional*/::mlir::ArrayAttr alias_scopes, /*optional*/::mlir::ArrayAttr noalias_scopes, /*optional*/::mlir::ArrayAttr tbaa); static GlobalLoadAsyncToLDSB8Op create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::Value globalPtr, ::mlir::Value ldsPtr, ::mlir::IntegerAttr offset, ::mlir::Attribute aux, /*optional*/::mlir::ArrayAttr alias_scopes, /*optional*/::mlir::ArrayAttr noalias_scopes, /*optional*/::mlir::ArrayAttr tbaa); static GlobalLoadAsyncToLDSB8Op create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::Value globalPtr, ::mlir::Value ldsPtr, ::mlir::IntegerAttr offset, ::mlir::Attribute aux, /*optional*/::mlir::ArrayAttr alias_scopes, /*optional*/::mlir::ArrayAttr noalias_scopes, /*optional*/::mlir::ArrayAttr tbaa); static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::Value globalPtr, ::mlir::Value ldsPtr, uint32_t offset, ::mlir::Attribute aux, /*optional*/::mlir::ArrayAttr alias_scopes, /*optional*/::mlir::ArrayAttr noalias_scopes, /*optional*/::mlir::ArrayAttr tbaa); static GlobalLoadAsyncToLDSB8Op create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::Value globalPtr, ::mlir::Value ldsPtr, uint32_t offset, ::mlir::Attribute aux, /*optional*/::mlir::ArrayAttr alias_scopes, /*optional*/::mlir::ArrayAttr noalias_scopes, /*optional*/::mlir::ArrayAttr tbaa); static GlobalLoadAsyncToLDSB8Op create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::Value globalPtr, ::mlir::Value ldsPtr, uint32_t offset, ::mlir::Attribute aux, /*optional*/::mlir::ArrayAttr alias_scopes, /*optional*/::mlir::ArrayAttr noalias_scopes, /*optional*/::mlir::ArrayAttr tbaa); static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::Value globalPtr, ::mlir::Value ldsPtr, uint32_t offset, ::mlir::Attribute aux, /*optional*/::mlir::ArrayAttr alias_scopes, /*optional*/::mlir::ArrayAttr noalias_scopes, /*optional*/::mlir::ArrayAttr tbaa); static GlobalLoadAsyncToLDSB8Op create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::Value globalPtr, ::mlir::Value ldsPtr, uint32_t offset, ::mlir::Attribute aux, /*optional*/::mlir::ArrayAttr alias_scopes, /*optional*/::mlir::ArrayAttr noalias_scopes, /*optional*/::mlir::ArrayAttr tbaa); static GlobalLoadAsyncToLDSB8Op create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::Value globalPtr, ::mlir::Value ldsPtr, uint32_t offset, ::mlir::Attribute aux, /*optional*/::mlir::ArrayAttr alias_scopes, /*optional*/::mlir::ArrayAttr noalias_scopes, /*optional*/::mlir::ArrayAttr tbaa); static void build(::mlir::OpBuilder &, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, ::llvm::ArrayRef<::mlir::NamedAttribute> attributes = {}); static GlobalLoadAsyncToLDSB8Op create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, ::llvm::ArrayRef<::mlir::NamedAttribute> attributes = {}); static GlobalLoadAsyncToLDSB8Op create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, ::llvm::ArrayRef<::mlir::NamedAttribute> attributes = {}); static void build(::mlir::OpBuilder &, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, const Properties &properties, ::llvm::ArrayRef<::mlir::NamedAttribute> discardableAttributes = {}); static GlobalLoadAsyncToLDSB8Op create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, const Properties &properties, ::llvm::ArrayRef<::mlir::NamedAttribute> discardableAttributes = {}); static GlobalLoadAsyncToLDSB8Op create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, const Properties &properties, ::llvm::ArrayRef<::mlir::NamedAttribute> discardableAttributes = {}); static void populateDefaultProperties(::mlir::OperationName opName, Properties &properties); ::llvm::LogicalResult verifyInvariantsImpl(); ::llvm::LogicalResult verifyInvariants(); ::llvm::SmallVector<::mlir::Value> getAccessedOperands(); static ::mlir::ParseResult parse(::mlir::OpAsmParser &parser, ::mlir::OperationState &result); void print(::mlir::OpAsmPrinter &_odsPrinter); void getEffects(::llvm::SmallVectorImpl<::mlir::SideEffects::EffectInstance<::mlir::MemoryEffects::Effect>> &effects); private: ::mlir::StringAttr getAttributeNameForIndex(unsigned index) { return getAttributeNameForIndex((*this)->getName(), index); } static ::mlir::StringAttr getAttributeNameForIndex(::mlir::OperationName name, unsigned index) { assert(index < 5 && "invalid attribute index"); assert(name.getStringRef() == getOperationName() && "invalid operation name"); assert(name.isRegistered() && "Operation isn't registered, missing a " "dependent dialect loading?"); return name.getAttributeNames()[index]; } public: }; } // namespace mlir::ROCDL MLIR_DECLARE_EXPLICIT_TYPE_ID(::mlir::ROCDL::GlobalLoadAsyncToLDSB8Op) MLIR_DECLARE_EXPLICIT_TYPE_ID(::mlir::ROCDL::detail::GlobalLoadAsyncToLDSB8OpGenericAdaptorBase::Properties) namespace mlir::ROCDL { //===----------------------------------------------------------------------===// // ::mlir::ROCDL::GlobalLoadLDSOp declarations //===----------------------------------------------------------------------===// namespace detail { class GlobalLoadLDSOpGenericAdaptorBase { public: struct Properties { using alias_scopesTy = ::mlir::ArrayAttr; alias_scopesTy alias_scopes; auto getAliasScopes() const { auto &propStorage = this->alias_scopes; return ::llvm::dyn_cast_or_null<::mlir::ArrayAttr>(propStorage); } void setAliasScopes(const ::mlir::ArrayAttr &propValue) { this->alias_scopes = propValue; } using auxTy = ::mlir::Attribute; auxTy aux; auto getAux() const { auto &propStorage = this->aux; return ::llvm::dyn_cast_or_null<::mlir::Attribute>(propStorage); } void setAux(const ::mlir::Attribute &propValue) { this->aux = propValue; } using noalias_scopesTy = ::mlir::ArrayAttr; noalias_scopesTy noalias_scopes; auto getNoaliasScopes() const { auto &propStorage = this->noalias_scopes; return ::llvm::dyn_cast_or_null<::mlir::ArrayAttr>(propStorage); } void setNoaliasScopes(const ::mlir::ArrayAttr &propValue) { this->noalias_scopes = propValue; } using offsetTy = ::mlir::IntegerAttr; offsetTy offset; auto getOffset() const { auto &propStorage = this->offset; return ::llvm::cast<::mlir::IntegerAttr>(propStorage); } void setOffset(const ::mlir::IntegerAttr &propValue) { this->offset = propValue; } using sizeTy = ::mlir::IntegerAttr; sizeTy size; auto getSize() const { auto &propStorage = this->size; return ::llvm::cast<::mlir::IntegerAttr>(propStorage); } void setSize(const ::mlir::IntegerAttr &propValue) { this->size = propValue; } using tbaaTy = ::mlir::ArrayAttr; tbaaTy tbaa; auto getTbaa() const { auto &propStorage = this->tbaa; return ::llvm::dyn_cast_or_null<::mlir::ArrayAttr>(propStorage); } void setTbaa(const ::mlir::ArrayAttr &propValue) { this->tbaa = propValue; } bool operator==(const Properties &rhs) const { return rhs.alias_scopes == this->alias_scopes && rhs.aux == this->aux && rhs.noalias_scopes == this->noalias_scopes && rhs.offset == this->offset && rhs.size == this->size && rhs.tbaa == this->tbaa && true; } bool operator!=(const Properties &rhs) const { return !(*this == rhs); } }; protected: ::mlir::DictionaryAttr odsAttrs; ::std::optional<::mlir::OperationName> odsOpName; Properties properties; ::mlir::RegionRange odsRegions; public: GlobalLoadLDSOpGenericAdaptorBase(::mlir::DictionaryAttr attrs, const Properties &properties, ::mlir::RegionRange regions = {}) : odsAttrs(attrs), properties(properties), odsRegions(regions) { if (odsAttrs) odsOpName.emplace("rocdl.global.load.lds", odsAttrs.getContext()); } GlobalLoadLDSOpGenericAdaptorBase(GlobalLoadLDSOp op); std::pair getODSOperandIndexAndLength(unsigned index, unsigned odsOperandsSize) { return {index, 1}; } const Properties &getProperties() { return properties; } ::mlir::DictionaryAttr getAttributes() { return odsAttrs; } ::mlir::IntegerAttr getSizeAttr() { auto attr = ::llvm::cast<::mlir::IntegerAttr>(getProperties().size); return attr; } uint32_t getSize(); ::mlir::IntegerAttr getOffsetAttr() { auto attr = ::llvm::cast<::mlir::IntegerAttr>(getProperties().offset); return attr; } uint32_t getOffset(); ::mlir::Attribute getAuxAttr(); ::mlir::Attribute getAux(); ::mlir::ArrayAttr getAliasScopesAttr() { auto attr = ::llvm::dyn_cast_or_null<::mlir::ArrayAttr>(getProperties().alias_scopes); return attr; } ::std::optional< ::mlir::ArrayAttr > getAliasScopes(); ::mlir::ArrayAttr getNoaliasScopesAttr() { auto attr = ::llvm::dyn_cast_or_null<::mlir::ArrayAttr>(getProperties().noalias_scopes); return attr; } ::std::optional< ::mlir::ArrayAttr > getNoaliasScopes(); ::mlir::ArrayAttr getTbaaAttr() { auto attr = ::llvm::dyn_cast_or_null<::mlir::ArrayAttr>(getProperties().tbaa); return attr; } ::std::optional< ::mlir::ArrayAttr > getTbaa(); }; } // namespace detail template class GlobalLoadLDSOpGenericAdaptor : public detail::GlobalLoadLDSOpGenericAdaptorBase { using ValueT = ::llvm::detail::ValueOfRange; using Base = detail::GlobalLoadLDSOpGenericAdaptorBase; static constexpr int odsIndex_globalPtr = 0; static constexpr int odsIndex_ldsPtr = 1; public: GlobalLoadLDSOpGenericAdaptor(RangeT values, ::mlir::DictionaryAttr attrs, const Properties &properties, ::mlir::RegionRange regions = {}) : Base(attrs, properties, regions), odsOperands(values) {} GlobalLoadLDSOpGenericAdaptor(RangeT values, ::mlir::DictionaryAttr attrs, ::mlir::PropertyRef properties, ::mlir::RegionRange regions = {}) : GlobalLoadLDSOpGenericAdaptor(values, attrs, (properties ? *properties.as() : Properties{}), regions) {} GlobalLoadLDSOpGenericAdaptor(RangeT values, ::mlir::DictionaryAttr attrs = nullptr) : GlobalLoadLDSOpGenericAdaptor(values, attrs, Properties{}, {}) {} GlobalLoadLDSOpGenericAdaptor(RangeT values, const GlobalLoadLDSOpGenericAdaptorBase &base) : Base(base), odsOperands(values) {} template >> GlobalLoadLDSOpGenericAdaptor(RangeT values, LateInst op) : Base(op), odsOperands(values) {} std::pair getODSOperandIndexAndLength(unsigned index) { return Base::getODSOperandIndexAndLength(index, odsOperands.size()); } RangeT getODSOperands(unsigned index) { auto valueRange = getODSOperandIndexAndLength(index); return {std::next(odsOperands.begin(), valueRange.first), std::next(odsOperands.begin(), valueRange.first + valueRange.second)}; } ValueT getGlobalPtr() { return (*getODSOperands(0).begin()); } ValueT getLdsPtr() { return (*getODSOperands(1).begin()); } RangeT getOperands() { return odsOperands; } private: RangeT odsOperands; }; class GlobalLoadLDSOpAdaptor : public GlobalLoadLDSOpGenericAdaptor<::mlir::ValueRange> { public: using GlobalLoadLDSOpGenericAdaptor::GlobalLoadLDSOpGenericAdaptor; GlobalLoadLDSOpAdaptor(GlobalLoadLDSOp op); ::llvm::LogicalResult verify(::mlir::Location loc); }; class GlobalLoadLDSOp : public ::mlir::Op::Impl, ::mlir::OpTrait::OpInvariants, ::mlir::BytecodeOpInterface::Trait, ::mlir::LLVM::AliasAnalysisOpInterface::Trait, ::mlir::MemoryEffectOpInterface::Trait> { public: using Op::Op; using Op::print; using Adaptor = GlobalLoadLDSOpAdaptor; template using GenericAdaptor = GlobalLoadLDSOpGenericAdaptor; using FoldAdaptor = GenericAdaptor<::llvm::ArrayRef<::mlir::Attribute>>; static constexpr int odsIndex_globalPtr = 0; static constexpr int odsIndex_ldsPtr = 1; using Properties = FoldAdaptor::Properties; using ::mlir::LLVM::AliasAnalysisOpInterface::Trait::getAliasScopesOrNull; using ::mlir::LLVM::AliasAnalysisOpInterface::Trait::setAliasScopes; using ::mlir::LLVM::AliasAnalysisOpInterface::Trait::getNoAliasScopesOrNull; using ::mlir::LLVM::AliasAnalysisOpInterface::Trait::setNoAliasScopes; using ::mlir::LLVM::AliasAnalysisOpInterface::Trait::getTBAATagsOrNull; using ::mlir::LLVM::AliasAnalysisOpInterface::Trait::setTBAATags; static ::llvm::ArrayRef<::llvm::StringRef> getAttributeNames() { static ::llvm::StringRef attrNames[] = {::llvm::StringRef("alias_scopes"), ::llvm::StringRef("aux"), ::llvm::StringRef("noalias_scopes"), ::llvm::StringRef("offset"), ::llvm::StringRef("size"), ::llvm::StringRef("tbaa")}; return ::llvm::ArrayRef(attrNames); } ::mlir::StringAttr getAliasScopesAttrName() { return getAttributeNameForIndex(0); } static ::mlir::StringAttr getAliasScopesAttrName(::mlir::OperationName name) { return getAttributeNameForIndex(name, 0); } ::mlir::StringAttr getAuxAttrName() { return getAttributeNameForIndex(1); } static ::mlir::StringAttr getAuxAttrName(::mlir::OperationName name) { return getAttributeNameForIndex(name, 1); } ::mlir::StringAttr getNoaliasScopesAttrName() { return getAttributeNameForIndex(2); } static ::mlir::StringAttr getNoaliasScopesAttrName(::mlir::OperationName name) { return getAttributeNameForIndex(name, 2); } ::mlir::StringAttr getOffsetAttrName() { return getAttributeNameForIndex(3); } static ::mlir::StringAttr getOffsetAttrName(::mlir::OperationName name) { return getAttributeNameForIndex(name, 3); } ::mlir::StringAttr getSizeAttrName() { return getAttributeNameForIndex(4); } static ::mlir::StringAttr getSizeAttrName(::mlir::OperationName name) { return getAttributeNameForIndex(name, 4); } ::mlir::StringAttr getTbaaAttrName() { return getAttributeNameForIndex(5); } static ::mlir::StringAttr getTbaaAttrName(::mlir::OperationName name) { return getAttributeNameForIndex(name, 5); } static constexpr ::llvm::StringLiteral getOperationName() { return ::llvm::StringLiteral("rocdl.global.load.lds"); } std::pair getODSOperandIndexAndLength(unsigned index) { return {index, 1}; } ::mlir::Operation::operand_range getODSOperands(unsigned index) { auto valueRange = getODSOperandIndexAndLength(index); return {std::next(getOperation()->operand_begin(), valueRange.first), std::next(getOperation()->operand_begin(), valueRange.first + valueRange.second)}; } ::mlir::TypedValue<::mlir::LLVM::LLVMPointerType> getGlobalPtr() { return ::llvm::cast<::mlir::TypedValue<::mlir::LLVM::LLVMPointerType>>(*getODSOperands(0).begin()); } ::mlir::TypedValue<::mlir::LLVM::LLVMPointerType> getLdsPtr() { return ::llvm::cast<::mlir::TypedValue<::mlir::LLVM::LLVMPointerType>>(*getODSOperands(1).begin()); } ::mlir::OpOperand &getGlobalPtrMutable() { auto range = getODSOperandIndexAndLength(0); return getOperation()->getOpOperand(range.first); } ::mlir::OpOperand &getLdsPtrMutable() { auto range = getODSOperandIndexAndLength(1); return getOperation()->getOpOperand(range.first); } std::pair getODSResultIndexAndLength(unsigned index) { return {index, 1}; } ::mlir::Operation::result_range getODSResults(unsigned index) { auto valueRange = getODSResultIndexAndLength(index); return {std::next(getOperation()->result_begin(), valueRange.first), std::next(getOperation()->result_begin(), valueRange.first + valueRange.second)}; } static ::llvm::LogicalResult setPropertiesFromAttr(Properties &prop, ::mlir::Attribute attr, ::llvm::function_ref<::mlir::InFlightDiagnostic()> emitError); static ::mlir::Attribute getPropertiesAsAttr(::mlir::MLIRContext *ctx, const Properties &prop); static llvm::hash_code computePropertiesHash(const Properties &prop); static std::optional getInherentAttr(::mlir::MLIRContext *ctx, const Properties &prop, llvm::StringRef name); static void setInherentAttr(Properties &prop, llvm::StringRef name, mlir::Attribute value); static void populateInherentAttrs(::mlir::MLIRContext *ctx, const Properties &prop, ::mlir::NamedAttrList &attrs); static ::llvm::LogicalResult verifyInherentAttrs(::mlir::OperationName opName, ::mlir::NamedAttrList &attrs, llvm::function_ref<::mlir::InFlightDiagnostic()> emitError); static ::llvm::LogicalResult readProperties(::mlir::DialectBytecodeReader &reader, ::mlir::OperationState &state); void writeProperties(::mlir::DialectBytecodeWriter &writer); ::mlir::IntegerAttr getSizeAttr() { return ::llvm::cast<::mlir::IntegerAttr>(getProperties().size); } uint32_t getSize(); ::mlir::IntegerAttr getOffsetAttr() { return ::llvm::cast<::mlir::IntegerAttr>(getProperties().offset); } uint32_t getOffset(); ::mlir::Attribute getAuxAttr() { return ::llvm::dyn_cast_or_null<::mlir::Attribute>(getProperties().aux); } ::mlir::Attribute getAux(); ::mlir::ArrayAttr getAliasScopesAttr() { return ::llvm::dyn_cast_or_null<::mlir::ArrayAttr>(getProperties().alias_scopes); } ::std::optional< ::mlir::ArrayAttr > getAliasScopes(); ::mlir::ArrayAttr getNoaliasScopesAttr() { return ::llvm::dyn_cast_or_null<::mlir::ArrayAttr>(getProperties().noalias_scopes); } ::std::optional< ::mlir::ArrayAttr > getNoaliasScopes(); ::mlir::ArrayAttr getTbaaAttr() { return ::llvm::dyn_cast_or_null<::mlir::ArrayAttr>(getProperties().tbaa); } ::std::optional< ::mlir::ArrayAttr > getTbaa(); void setSizeAttr(::mlir::IntegerAttr attr) { getProperties().size = attr; } void setSize(uint32_t attrValue); void setOffsetAttr(::mlir::IntegerAttr attr) { getProperties().offset = attr; } void setOffset(uint32_t attrValue); void setAuxAttr(::mlir::Attribute attr) { getProperties().aux = attr; } void setAliasScopesAttr(::mlir::ArrayAttr attr) { getProperties().alias_scopes = attr; } void setNoaliasScopesAttr(::mlir::ArrayAttr attr) { getProperties().noalias_scopes = attr; } void setTbaaAttr(::mlir::ArrayAttr attr) { getProperties().tbaa = attr; } ::mlir::Attribute removeAliasScopesAttr() { auto attr = getProperties().alias_scopes; getProperties().alias_scopes = {}; return attr; } ::mlir::Attribute removeNoaliasScopesAttr() { auto attr = getProperties().noalias_scopes; getProperties().noalias_scopes = {}; return attr; } ::mlir::Attribute removeTbaaAttr() { auto attr = getProperties().tbaa; getProperties().tbaa = {}; return attr; } static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::Value globalPtr, ::mlir::Value ldsPtr, ::mlir::IntegerAttr size, ::mlir::IntegerAttr offset, ::mlir::Attribute aux, /*optional*/::mlir::ArrayAttr alias_scopes, /*optional*/::mlir::ArrayAttr noalias_scopes, /*optional*/::mlir::ArrayAttr tbaa); static GlobalLoadLDSOp create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::Value globalPtr, ::mlir::Value ldsPtr, ::mlir::IntegerAttr size, ::mlir::IntegerAttr offset, ::mlir::Attribute aux, /*optional*/::mlir::ArrayAttr alias_scopes, /*optional*/::mlir::ArrayAttr noalias_scopes, /*optional*/::mlir::ArrayAttr tbaa); static GlobalLoadLDSOp create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::Value globalPtr, ::mlir::Value ldsPtr, ::mlir::IntegerAttr size, ::mlir::IntegerAttr offset, ::mlir::Attribute aux, /*optional*/::mlir::ArrayAttr alias_scopes, /*optional*/::mlir::ArrayAttr noalias_scopes, /*optional*/::mlir::ArrayAttr tbaa); static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::Value globalPtr, ::mlir::Value ldsPtr, ::mlir::IntegerAttr size, ::mlir::IntegerAttr offset, ::mlir::Attribute aux, /*optional*/::mlir::ArrayAttr alias_scopes, /*optional*/::mlir::ArrayAttr noalias_scopes, /*optional*/::mlir::ArrayAttr tbaa); static GlobalLoadLDSOp create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::Value globalPtr, ::mlir::Value ldsPtr, ::mlir::IntegerAttr size, ::mlir::IntegerAttr offset, ::mlir::Attribute aux, /*optional*/::mlir::ArrayAttr alias_scopes, /*optional*/::mlir::ArrayAttr noalias_scopes, /*optional*/::mlir::ArrayAttr tbaa); static GlobalLoadLDSOp create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::Value globalPtr, ::mlir::Value ldsPtr, ::mlir::IntegerAttr size, ::mlir::IntegerAttr offset, ::mlir::Attribute aux, /*optional*/::mlir::ArrayAttr alias_scopes, /*optional*/::mlir::ArrayAttr noalias_scopes, /*optional*/::mlir::ArrayAttr tbaa); static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::Value globalPtr, ::mlir::Value ldsPtr, uint32_t size, uint32_t offset, ::mlir::Attribute aux, /*optional*/::mlir::ArrayAttr alias_scopes, /*optional*/::mlir::ArrayAttr noalias_scopes, /*optional*/::mlir::ArrayAttr tbaa); static GlobalLoadLDSOp create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::Value globalPtr, ::mlir::Value ldsPtr, uint32_t size, uint32_t offset, ::mlir::Attribute aux, /*optional*/::mlir::ArrayAttr alias_scopes, /*optional*/::mlir::ArrayAttr noalias_scopes, /*optional*/::mlir::ArrayAttr tbaa); static GlobalLoadLDSOp create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::Value globalPtr, ::mlir::Value ldsPtr, uint32_t size, uint32_t offset, ::mlir::Attribute aux, /*optional*/::mlir::ArrayAttr alias_scopes, /*optional*/::mlir::ArrayAttr noalias_scopes, /*optional*/::mlir::ArrayAttr tbaa); static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::Value globalPtr, ::mlir::Value ldsPtr, uint32_t size, uint32_t offset, ::mlir::Attribute aux, /*optional*/::mlir::ArrayAttr alias_scopes, /*optional*/::mlir::ArrayAttr noalias_scopes, /*optional*/::mlir::ArrayAttr tbaa); static GlobalLoadLDSOp create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::Value globalPtr, ::mlir::Value ldsPtr, uint32_t size, uint32_t offset, ::mlir::Attribute aux, /*optional*/::mlir::ArrayAttr alias_scopes, /*optional*/::mlir::ArrayAttr noalias_scopes, /*optional*/::mlir::ArrayAttr tbaa); static GlobalLoadLDSOp create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::Value globalPtr, ::mlir::Value ldsPtr, uint32_t size, uint32_t offset, ::mlir::Attribute aux, /*optional*/::mlir::ArrayAttr alias_scopes, /*optional*/::mlir::ArrayAttr noalias_scopes, /*optional*/::mlir::ArrayAttr tbaa); static void build(::mlir::OpBuilder &, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, ::llvm::ArrayRef<::mlir::NamedAttribute> attributes = {}); static GlobalLoadLDSOp create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, ::llvm::ArrayRef<::mlir::NamedAttribute> attributes = {}); static GlobalLoadLDSOp create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, ::llvm::ArrayRef<::mlir::NamedAttribute> attributes = {}); static void build(::mlir::OpBuilder &, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, const Properties &properties, ::llvm::ArrayRef<::mlir::NamedAttribute> discardableAttributes = {}); static GlobalLoadLDSOp create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, const Properties &properties, ::llvm::ArrayRef<::mlir::NamedAttribute> discardableAttributes = {}); static GlobalLoadLDSOp create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, const Properties &properties, ::llvm::ArrayRef<::mlir::NamedAttribute> discardableAttributes = {}); static void populateDefaultProperties(::mlir::OperationName opName, Properties &properties); ::llvm::LogicalResult verifyInvariantsImpl(); ::llvm::LogicalResult verifyInvariants(); ::llvm::SmallVector<::mlir::Value> getAccessedOperands(); static ::mlir::ParseResult parse(::mlir::OpAsmParser &parser, ::mlir::OperationState &result); void print(::mlir::OpAsmPrinter &_odsPrinter); void getEffects(::llvm::SmallVectorImpl<::mlir::SideEffects::EffectInstance<::mlir::MemoryEffects::Effect>> &effects); private: ::mlir::StringAttr getAttributeNameForIndex(unsigned index) { return getAttributeNameForIndex((*this)->getName(), index); } static ::mlir::StringAttr getAttributeNameForIndex(::mlir::OperationName name, unsigned index) { assert(index < 6 && "invalid attribute index"); assert(name.getStringRef() == getOperationName() && "invalid operation name"); assert(name.isRegistered() && "Operation isn't registered, missing a " "dependent dialect loading?"); return name.getAttributeNames()[index]; } public: }; } // namespace mlir::ROCDL MLIR_DECLARE_EXPLICIT_TYPE_ID(::mlir::ROCDL::GlobalLoadLDSOp) MLIR_DECLARE_EXPLICIT_TYPE_ID(::mlir::ROCDL::detail::GlobalLoadLDSOpGenericAdaptorBase::Properties) namespace mlir::ROCDL { //===----------------------------------------------------------------------===// // ::mlir::ROCDL::GlobalLoadTr4_B64 declarations //===----------------------------------------------------------------------===// namespace detail { class GlobalLoadTr4_B64GenericAdaptorBase { public: struct Properties { using alias_scopesTy = ::mlir::ArrayAttr; alias_scopesTy alias_scopes; auto getAliasScopes() const { auto &propStorage = this->alias_scopes; return ::llvm::dyn_cast_or_null<::mlir::ArrayAttr>(propStorage); } void setAliasScopes(const ::mlir::ArrayAttr &propValue) { this->alias_scopes = propValue; } using noalias_scopesTy = ::mlir::ArrayAttr; noalias_scopesTy noalias_scopes; auto getNoaliasScopes() const { auto &propStorage = this->noalias_scopes; return ::llvm::dyn_cast_or_null<::mlir::ArrayAttr>(propStorage); } void setNoaliasScopes(const ::mlir::ArrayAttr &propValue) { this->noalias_scopes = propValue; } using tbaaTy = ::mlir::ArrayAttr; tbaaTy tbaa; auto getTbaa() const { auto &propStorage = this->tbaa; return ::llvm::dyn_cast_or_null<::mlir::ArrayAttr>(propStorage); } void setTbaa(const ::mlir::ArrayAttr &propValue) { this->tbaa = propValue; } bool operator==(const Properties &rhs) const { return rhs.alias_scopes == this->alias_scopes && rhs.noalias_scopes == this->noalias_scopes && rhs.tbaa == this->tbaa && true; } bool operator!=(const Properties &rhs) const { return !(*this == rhs); } }; protected: ::mlir::DictionaryAttr odsAttrs; ::std::optional<::mlir::OperationName> odsOpName; Properties properties; ::mlir::RegionRange odsRegions; public: GlobalLoadTr4_B64GenericAdaptorBase(::mlir::DictionaryAttr attrs, const Properties &properties, ::mlir::RegionRange regions = {}) : odsAttrs(attrs), properties(properties), odsRegions(regions) { if (odsAttrs) odsOpName.emplace("rocdl.global.load.tr4.b64", odsAttrs.getContext()); } GlobalLoadTr4_B64GenericAdaptorBase(GlobalLoadTr4_B64 op); std::pair getODSOperandIndexAndLength(unsigned index, unsigned odsOperandsSize) { return {index, 1}; } const Properties &getProperties() { return properties; } ::mlir::DictionaryAttr getAttributes() { return odsAttrs; } ::mlir::ArrayAttr getAliasScopesAttr() { auto attr = ::llvm::dyn_cast_or_null<::mlir::ArrayAttr>(getProperties().alias_scopes); return attr; } ::std::optional< ::mlir::ArrayAttr > getAliasScopes(); ::mlir::ArrayAttr getNoaliasScopesAttr() { auto attr = ::llvm::dyn_cast_or_null<::mlir::ArrayAttr>(getProperties().noalias_scopes); return attr; } ::std::optional< ::mlir::ArrayAttr > getNoaliasScopes(); ::mlir::ArrayAttr getTbaaAttr() { auto attr = ::llvm::dyn_cast_or_null<::mlir::ArrayAttr>(getProperties().tbaa); return attr; } ::std::optional< ::mlir::ArrayAttr > getTbaa(); }; } // namespace detail template class GlobalLoadTr4_B64GenericAdaptor : public detail::GlobalLoadTr4_B64GenericAdaptorBase { using ValueT = ::llvm::detail::ValueOfRange; using Base = detail::GlobalLoadTr4_B64GenericAdaptorBase; static constexpr int odsIndex_ptr = 0; public: GlobalLoadTr4_B64GenericAdaptor(RangeT values, ::mlir::DictionaryAttr attrs, const Properties &properties, ::mlir::RegionRange regions = {}) : Base(attrs, properties, regions), odsOperands(values) {} GlobalLoadTr4_B64GenericAdaptor(RangeT values, ::mlir::DictionaryAttr attrs, ::mlir::PropertyRef properties, ::mlir::RegionRange regions = {}) : GlobalLoadTr4_B64GenericAdaptor(values, attrs, (properties ? *properties.as() : Properties{}), regions) {} GlobalLoadTr4_B64GenericAdaptor(RangeT values, ::mlir::DictionaryAttr attrs = nullptr) : GlobalLoadTr4_B64GenericAdaptor(values, attrs, Properties{}, {}) {} GlobalLoadTr4_B64GenericAdaptor(RangeT values, const GlobalLoadTr4_B64GenericAdaptorBase &base) : Base(base), odsOperands(values) {} template >> GlobalLoadTr4_B64GenericAdaptor(RangeT values, LateInst op) : Base(op), odsOperands(values) {} std::pair getODSOperandIndexAndLength(unsigned index) { return Base::getODSOperandIndexAndLength(index, odsOperands.size()); } RangeT getODSOperands(unsigned index) { auto valueRange = getODSOperandIndexAndLength(index); return {std::next(odsOperands.begin(), valueRange.first), std::next(odsOperands.begin(), valueRange.first + valueRange.second)}; } ValueT getPtr() { return (*getODSOperands(0).begin()); } RangeT getOperands() { return odsOperands; } private: RangeT odsOperands; }; class GlobalLoadTr4_B64Adaptor : public GlobalLoadTr4_B64GenericAdaptor<::mlir::ValueRange> { public: using GlobalLoadTr4_B64GenericAdaptor::GlobalLoadTr4_B64GenericAdaptor; GlobalLoadTr4_B64Adaptor(GlobalLoadTr4_B64 op); ::llvm::LogicalResult verify(::mlir::Location loc); }; class GlobalLoadTr4_B64 : public ::mlir::Op::Impl, ::mlir::OpTrait::ZeroSuccessors, ::mlir::OpTrait::OneOperand, ::mlir::OpTrait::OpInvariants, ::mlir::BytecodeOpInterface::Trait, ::mlir::LLVM::AliasAnalysisOpInterface::Trait, ::mlir::MemoryEffectOpInterface::Trait> { public: using Op::Op; using Op::print; using Adaptor = GlobalLoadTr4_B64Adaptor; template using GenericAdaptor = GlobalLoadTr4_B64GenericAdaptor; using FoldAdaptor = GenericAdaptor<::llvm::ArrayRef<::mlir::Attribute>>; static constexpr int odsIndex_ptr = 0; using Properties = FoldAdaptor::Properties; using ::mlir::LLVM::AliasAnalysisOpInterface::Trait::getAliasScopesOrNull; using ::mlir::LLVM::AliasAnalysisOpInterface::Trait::setAliasScopes; using ::mlir::LLVM::AliasAnalysisOpInterface::Trait::getNoAliasScopesOrNull; using ::mlir::LLVM::AliasAnalysisOpInterface::Trait::setNoAliasScopes; using ::mlir::LLVM::AliasAnalysisOpInterface::Trait::getTBAATagsOrNull; using ::mlir::LLVM::AliasAnalysisOpInterface::Trait::setTBAATags; static ::llvm::ArrayRef<::llvm::StringRef> getAttributeNames() { static ::llvm::StringRef attrNames[] = {::llvm::StringRef("alias_scopes"), ::llvm::StringRef("noalias_scopes"), ::llvm::StringRef("tbaa")}; return ::llvm::ArrayRef(attrNames); } ::mlir::StringAttr getAliasScopesAttrName() { return getAttributeNameForIndex(0); } static ::mlir::StringAttr getAliasScopesAttrName(::mlir::OperationName name) { return getAttributeNameForIndex(name, 0); } ::mlir::StringAttr getNoaliasScopesAttrName() { return getAttributeNameForIndex(1); } static ::mlir::StringAttr getNoaliasScopesAttrName(::mlir::OperationName name) { return getAttributeNameForIndex(name, 1); } ::mlir::StringAttr getTbaaAttrName() { return getAttributeNameForIndex(2); } static ::mlir::StringAttr getTbaaAttrName(::mlir::OperationName name) { return getAttributeNameForIndex(name, 2); } static constexpr ::llvm::StringLiteral getOperationName() { return ::llvm::StringLiteral("rocdl.global.load.tr4.b64"); } std::pair getODSOperandIndexAndLength(unsigned index) { return {index, 1}; } ::mlir::Operation::operand_range getODSOperands(unsigned index) { auto valueRange = getODSOperandIndexAndLength(index); return {std::next(getOperation()->operand_begin(), valueRange.first), std::next(getOperation()->operand_begin(), valueRange.first + valueRange.second)}; } ::mlir::TypedValue<::mlir::LLVM::LLVMPointerType> getPtr() { return ::llvm::cast<::mlir::TypedValue<::mlir::LLVM::LLVMPointerType>>(*getODSOperands(0).begin()); } ::mlir::OpOperand &getPtrMutable() { auto range = getODSOperandIndexAndLength(0); return getOperation()->getOpOperand(range.first); } std::pair getODSResultIndexAndLength(unsigned index) { return {index, 1}; } ::mlir::Operation::result_range getODSResults(unsigned index) { auto valueRange = getODSResultIndexAndLength(index); return {std::next(getOperation()->result_begin(), valueRange.first), std::next(getOperation()->result_begin(), valueRange.first + valueRange.second)}; } ::mlir::TypedValue<::mlir::Type> getRes() { return ::llvm::cast<::mlir::TypedValue<::mlir::Type>>(*getODSResults(0).begin()); } static ::llvm::LogicalResult setPropertiesFromAttr(Properties &prop, ::mlir::Attribute attr, ::llvm::function_ref<::mlir::InFlightDiagnostic()> emitError); static ::mlir::Attribute getPropertiesAsAttr(::mlir::MLIRContext *ctx, const Properties &prop); static llvm::hash_code computePropertiesHash(const Properties &prop); static std::optional getInherentAttr(::mlir::MLIRContext *ctx, const Properties &prop, llvm::StringRef name); static void setInherentAttr(Properties &prop, llvm::StringRef name, mlir::Attribute value); static void populateInherentAttrs(::mlir::MLIRContext *ctx, const Properties &prop, ::mlir::NamedAttrList &attrs); static ::llvm::LogicalResult verifyInherentAttrs(::mlir::OperationName opName, ::mlir::NamedAttrList &attrs, llvm::function_ref<::mlir::InFlightDiagnostic()> emitError); static ::llvm::LogicalResult readProperties(::mlir::DialectBytecodeReader &reader, ::mlir::OperationState &state); void writeProperties(::mlir::DialectBytecodeWriter &writer); ::mlir::ArrayAttr getAliasScopesAttr() { return ::llvm::dyn_cast_or_null<::mlir::ArrayAttr>(getProperties().alias_scopes); } ::std::optional< ::mlir::ArrayAttr > getAliasScopes(); ::mlir::ArrayAttr getNoaliasScopesAttr() { return ::llvm::dyn_cast_or_null<::mlir::ArrayAttr>(getProperties().noalias_scopes); } ::std::optional< ::mlir::ArrayAttr > getNoaliasScopes(); ::mlir::ArrayAttr getTbaaAttr() { return ::llvm::dyn_cast_or_null<::mlir::ArrayAttr>(getProperties().tbaa); } ::std::optional< ::mlir::ArrayAttr > getTbaa(); void setAliasScopesAttr(::mlir::ArrayAttr attr) { getProperties().alias_scopes = attr; } void setNoaliasScopesAttr(::mlir::ArrayAttr attr) { getProperties().noalias_scopes = attr; } void setTbaaAttr(::mlir::ArrayAttr attr) { getProperties().tbaa = attr; } ::mlir::Attribute removeAliasScopesAttr() { auto attr = getProperties().alias_scopes; getProperties().alias_scopes = {}; return attr; } ::mlir::Attribute removeNoaliasScopesAttr() { auto attr = getProperties().noalias_scopes; getProperties().noalias_scopes = {}; return attr; } ::mlir::Attribute removeTbaaAttr() { auto attr = getProperties().tbaa; getProperties().tbaa = {}; return attr; } static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::Type res, ::mlir::Value ptr, /*optional*/::mlir::ArrayAttr alias_scopes, /*optional*/::mlir::ArrayAttr noalias_scopes, /*optional*/::mlir::ArrayAttr tbaa); static GlobalLoadTr4_B64 create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::Type res, ::mlir::Value ptr, /*optional*/::mlir::ArrayAttr alias_scopes, /*optional*/::mlir::ArrayAttr noalias_scopes, /*optional*/::mlir::ArrayAttr tbaa); static GlobalLoadTr4_B64 create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::Type res, ::mlir::Value ptr, /*optional*/::mlir::ArrayAttr alias_scopes, /*optional*/::mlir::ArrayAttr noalias_scopes, /*optional*/::mlir::ArrayAttr tbaa); static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::Value ptr, /*optional*/::mlir::ArrayAttr alias_scopes, /*optional*/::mlir::ArrayAttr noalias_scopes, /*optional*/::mlir::ArrayAttr tbaa); static GlobalLoadTr4_B64 create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::Value ptr, /*optional*/::mlir::ArrayAttr alias_scopes, /*optional*/::mlir::ArrayAttr noalias_scopes, /*optional*/::mlir::ArrayAttr tbaa); static GlobalLoadTr4_B64 create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::Value ptr, /*optional*/::mlir::ArrayAttr alias_scopes, /*optional*/::mlir::ArrayAttr noalias_scopes, /*optional*/::mlir::ArrayAttr tbaa); static void build(::mlir::OpBuilder &, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, ::llvm::ArrayRef<::mlir::NamedAttribute> attributes = {}); static GlobalLoadTr4_B64 create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, ::llvm::ArrayRef<::mlir::NamedAttribute> attributes = {}); static GlobalLoadTr4_B64 create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, ::llvm::ArrayRef<::mlir::NamedAttribute> attributes = {}); static void build(::mlir::OpBuilder &, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, const Properties &properties, ::llvm::ArrayRef<::mlir::NamedAttribute> discardableAttributes = {}); static GlobalLoadTr4_B64 create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, const Properties &properties, ::llvm::ArrayRef<::mlir::NamedAttribute> discardableAttributes = {}); static GlobalLoadTr4_B64 create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, const Properties &properties, ::llvm::ArrayRef<::mlir::NamedAttribute> discardableAttributes = {}); ::llvm::LogicalResult verifyInvariantsImpl(); ::llvm::LogicalResult verifyInvariants(); ::llvm::SmallVector<::mlir::Value> getAccessedOperands(); static ::mlir::ParseResult parse(::mlir::OpAsmParser &parser, ::mlir::OperationState &result); void print(::mlir::OpAsmPrinter &_odsPrinter); void getEffects(::llvm::SmallVectorImpl<::mlir::SideEffects::EffectInstance<::mlir::MemoryEffects::Effect>> &effects); private: ::mlir::StringAttr getAttributeNameForIndex(unsigned index) { return getAttributeNameForIndex((*this)->getName(), index); } static ::mlir::StringAttr getAttributeNameForIndex(::mlir::OperationName name, unsigned index) { assert(index < 3 && "invalid attribute index"); assert(name.getStringRef() == getOperationName() && "invalid operation name"); assert(name.isRegistered() && "Operation isn't registered, missing a " "dependent dialect loading?"); return name.getAttributeNames()[index]; } public: }; } // namespace mlir::ROCDL MLIR_DECLARE_EXPLICIT_TYPE_ID(::mlir::ROCDL::GlobalLoadTr4_B64) MLIR_DECLARE_EXPLICIT_TYPE_ID(::mlir::ROCDL::detail::GlobalLoadTr4_B64GenericAdaptorBase::Properties) namespace mlir::ROCDL { //===----------------------------------------------------------------------===// // ::mlir::ROCDL::GlobalLoadTr6_B96 declarations //===----------------------------------------------------------------------===// namespace detail { class GlobalLoadTr6_B96GenericAdaptorBase { public: struct Properties { using alias_scopesTy = ::mlir::ArrayAttr; alias_scopesTy alias_scopes; auto getAliasScopes() const { auto &propStorage = this->alias_scopes; return ::llvm::dyn_cast_or_null<::mlir::ArrayAttr>(propStorage); } void setAliasScopes(const ::mlir::ArrayAttr &propValue) { this->alias_scopes = propValue; } using noalias_scopesTy = ::mlir::ArrayAttr; noalias_scopesTy noalias_scopes; auto getNoaliasScopes() const { auto &propStorage = this->noalias_scopes; return ::llvm::dyn_cast_or_null<::mlir::ArrayAttr>(propStorage); } void setNoaliasScopes(const ::mlir::ArrayAttr &propValue) { this->noalias_scopes = propValue; } using tbaaTy = ::mlir::ArrayAttr; tbaaTy tbaa; auto getTbaa() const { auto &propStorage = this->tbaa; return ::llvm::dyn_cast_or_null<::mlir::ArrayAttr>(propStorage); } void setTbaa(const ::mlir::ArrayAttr &propValue) { this->tbaa = propValue; } bool operator==(const Properties &rhs) const { return rhs.alias_scopes == this->alias_scopes && rhs.noalias_scopes == this->noalias_scopes && rhs.tbaa == this->tbaa && true; } bool operator!=(const Properties &rhs) const { return !(*this == rhs); } }; protected: ::mlir::DictionaryAttr odsAttrs; ::std::optional<::mlir::OperationName> odsOpName; Properties properties; ::mlir::RegionRange odsRegions; public: GlobalLoadTr6_B96GenericAdaptorBase(::mlir::DictionaryAttr attrs, const Properties &properties, ::mlir::RegionRange regions = {}) : odsAttrs(attrs), properties(properties), odsRegions(regions) { if (odsAttrs) odsOpName.emplace("rocdl.global.load.tr6.b96", odsAttrs.getContext()); } GlobalLoadTr6_B96GenericAdaptorBase(GlobalLoadTr6_B96 op); std::pair getODSOperandIndexAndLength(unsigned index, unsigned odsOperandsSize) { return {index, 1}; } const Properties &getProperties() { return properties; } ::mlir::DictionaryAttr getAttributes() { return odsAttrs; } ::mlir::ArrayAttr getAliasScopesAttr() { auto attr = ::llvm::dyn_cast_or_null<::mlir::ArrayAttr>(getProperties().alias_scopes); return attr; } ::std::optional< ::mlir::ArrayAttr > getAliasScopes(); ::mlir::ArrayAttr getNoaliasScopesAttr() { auto attr = ::llvm::dyn_cast_or_null<::mlir::ArrayAttr>(getProperties().noalias_scopes); return attr; } ::std::optional< ::mlir::ArrayAttr > getNoaliasScopes(); ::mlir::ArrayAttr getTbaaAttr() { auto attr = ::llvm::dyn_cast_or_null<::mlir::ArrayAttr>(getProperties().tbaa); return attr; } ::std::optional< ::mlir::ArrayAttr > getTbaa(); }; } // namespace detail template class GlobalLoadTr6_B96GenericAdaptor : public detail::GlobalLoadTr6_B96GenericAdaptorBase { using ValueT = ::llvm::detail::ValueOfRange; using Base = detail::GlobalLoadTr6_B96GenericAdaptorBase; static constexpr int odsIndex_ptr = 0; public: GlobalLoadTr6_B96GenericAdaptor(RangeT values, ::mlir::DictionaryAttr attrs, const Properties &properties, ::mlir::RegionRange regions = {}) : Base(attrs, properties, regions), odsOperands(values) {} GlobalLoadTr6_B96GenericAdaptor(RangeT values, ::mlir::DictionaryAttr attrs, ::mlir::PropertyRef properties, ::mlir::RegionRange regions = {}) : GlobalLoadTr6_B96GenericAdaptor(values, attrs, (properties ? *properties.as() : Properties{}), regions) {} GlobalLoadTr6_B96GenericAdaptor(RangeT values, ::mlir::DictionaryAttr attrs = nullptr) : GlobalLoadTr6_B96GenericAdaptor(values, attrs, Properties{}, {}) {} GlobalLoadTr6_B96GenericAdaptor(RangeT values, const GlobalLoadTr6_B96GenericAdaptorBase &base) : Base(base), odsOperands(values) {} template >> GlobalLoadTr6_B96GenericAdaptor(RangeT values, LateInst op) : Base(op), odsOperands(values) {} std::pair getODSOperandIndexAndLength(unsigned index) { return Base::getODSOperandIndexAndLength(index, odsOperands.size()); } RangeT getODSOperands(unsigned index) { auto valueRange = getODSOperandIndexAndLength(index); return {std::next(odsOperands.begin(), valueRange.first), std::next(odsOperands.begin(), valueRange.first + valueRange.second)}; } ValueT getPtr() { return (*getODSOperands(0).begin()); } RangeT getOperands() { return odsOperands; } private: RangeT odsOperands; }; class GlobalLoadTr6_B96Adaptor : public GlobalLoadTr6_B96GenericAdaptor<::mlir::ValueRange> { public: using GlobalLoadTr6_B96GenericAdaptor::GlobalLoadTr6_B96GenericAdaptor; GlobalLoadTr6_B96Adaptor(GlobalLoadTr6_B96 op); ::llvm::LogicalResult verify(::mlir::Location loc); }; class GlobalLoadTr6_B96 : public ::mlir::Op::Impl, ::mlir::OpTrait::ZeroSuccessors, ::mlir::OpTrait::OneOperand, ::mlir::OpTrait::OpInvariants, ::mlir::BytecodeOpInterface::Trait, ::mlir::LLVM::AliasAnalysisOpInterface::Trait, ::mlir::MemoryEffectOpInterface::Trait> { public: using Op::Op; using Op::print; using Adaptor = GlobalLoadTr6_B96Adaptor; template using GenericAdaptor = GlobalLoadTr6_B96GenericAdaptor; using FoldAdaptor = GenericAdaptor<::llvm::ArrayRef<::mlir::Attribute>>; static constexpr int odsIndex_ptr = 0; using Properties = FoldAdaptor::Properties; using ::mlir::LLVM::AliasAnalysisOpInterface::Trait::getAliasScopesOrNull; using ::mlir::LLVM::AliasAnalysisOpInterface::Trait::setAliasScopes; using ::mlir::LLVM::AliasAnalysisOpInterface::Trait::getNoAliasScopesOrNull; using ::mlir::LLVM::AliasAnalysisOpInterface::Trait::setNoAliasScopes; using ::mlir::LLVM::AliasAnalysisOpInterface::Trait::getTBAATagsOrNull; using ::mlir::LLVM::AliasAnalysisOpInterface::Trait::setTBAATags; static ::llvm::ArrayRef<::llvm::StringRef> getAttributeNames() { static ::llvm::StringRef attrNames[] = {::llvm::StringRef("alias_scopes"), ::llvm::StringRef("noalias_scopes"), ::llvm::StringRef("tbaa")}; return ::llvm::ArrayRef(attrNames); } ::mlir::StringAttr getAliasScopesAttrName() { return getAttributeNameForIndex(0); } static ::mlir::StringAttr getAliasScopesAttrName(::mlir::OperationName name) { return getAttributeNameForIndex(name, 0); } ::mlir::StringAttr getNoaliasScopesAttrName() { return getAttributeNameForIndex(1); } static ::mlir::StringAttr getNoaliasScopesAttrName(::mlir::OperationName name) { return getAttributeNameForIndex(name, 1); } ::mlir::StringAttr getTbaaAttrName() { return getAttributeNameForIndex(2); } static ::mlir::StringAttr getTbaaAttrName(::mlir::OperationName name) { return getAttributeNameForIndex(name, 2); } static constexpr ::llvm::StringLiteral getOperationName() { return ::llvm::StringLiteral("rocdl.global.load.tr6.b96"); } std::pair getODSOperandIndexAndLength(unsigned index) { return {index, 1}; } ::mlir::Operation::operand_range getODSOperands(unsigned index) { auto valueRange = getODSOperandIndexAndLength(index); return {std::next(getOperation()->operand_begin(), valueRange.first), std::next(getOperation()->operand_begin(), valueRange.first + valueRange.second)}; } ::mlir::TypedValue<::mlir::LLVM::LLVMPointerType> getPtr() { return ::llvm::cast<::mlir::TypedValue<::mlir::LLVM::LLVMPointerType>>(*getODSOperands(0).begin()); } ::mlir::OpOperand &getPtrMutable() { auto range = getODSOperandIndexAndLength(0); return getOperation()->getOpOperand(range.first); } std::pair getODSResultIndexAndLength(unsigned index) { return {index, 1}; } ::mlir::Operation::result_range getODSResults(unsigned index) { auto valueRange = getODSResultIndexAndLength(index); return {std::next(getOperation()->result_begin(), valueRange.first), std::next(getOperation()->result_begin(), valueRange.first + valueRange.second)}; } ::mlir::TypedValue<::mlir::Type> getRes() { return ::llvm::cast<::mlir::TypedValue<::mlir::Type>>(*getODSResults(0).begin()); } static ::llvm::LogicalResult setPropertiesFromAttr(Properties &prop, ::mlir::Attribute attr, ::llvm::function_ref<::mlir::InFlightDiagnostic()> emitError); static ::mlir::Attribute getPropertiesAsAttr(::mlir::MLIRContext *ctx, const Properties &prop); static llvm::hash_code computePropertiesHash(const Properties &prop); static std::optional getInherentAttr(::mlir::MLIRContext *ctx, const Properties &prop, llvm::StringRef name); static void setInherentAttr(Properties &prop, llvm::StringRef name, mlir::Attribute value); static void populateInherentAttrs(::mlir::MLIRContext *ctx, const Properties &prop, ::mlir::NamedAttrList &attrs); static ::llvm::LogicalResult verifyInherentAttrs(::mlir::OperationName opName, ::mlir::NamedAttrList &attrs, llvm::function_ref<::mlir::InFlightDiagnostic()> emitError); static ::llvm::LogicalResult readProperties(::mlir::DialectBytecodeReader &reader, ::mlir::OperationState &state); void writeProperties(::mlir::DialectBytecodeWriter &writer); ::mlir::ArrayAttr getAliasScopesAttr() { return ::llvm::dyn_cast_or_null<::mlir::ArrayAttr>(getProperties().alias_scopes); } ::std::optional< ::mlir::ArrayAttr > getAliasScopes(); ::mlir::ArrayAttr getNoaliasScopesAttr() { return ::llvm::dyn_cast_or_null<::mlir::ArrayAttr>(getProperties().noalias_scopes); } ::std::optional< ::mlir::ArrayAttr > getNoaliasScopes(); ::mlir::ArrayAttr getTbaaAttr() { return ::llvm::dyn_cast_or_null<::mlir::ArrayAttr>(getProperties().tbaa); } ::std::optional< ::mlir::ArrayAttr > getTbaa(); void setAliasScopesAttr(::mlir::ArrayAttr attr) { getProperties().alias_scopes = attr; } void setNoaliasScopesAttr(::mlir::ArrayAttr attr) { getProperties().noalias_scopes = attr; } void setTbaaAttr(::mlir::ArrayAttr attr) { getProperties().tbaa = attr; } ::mlir::Attribute removeAliasScopesAttr() { auto attr = getProperties().alias_scopes; getProperties().alias_scopes = {}; return attr; } ::mlir::Attribute removeNoaliasScopesAttr() { auto attr = getProperties().noalias_scopes; getProperties().noalias_scopes = {}; return attr; } ::mlir::Attribute removeTbaaAttr() { auto attr = getProperties().tbaa; getProperties().tbaa = {}; return attr; } static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::Type res, ::mlir::Value ptr, /*optional*/::mlir::ArrayAttr alias_scopes, /*optional*/::mlir::ArrayAttr noalias_scopes, /*optional*/::mlir::ArrayAttr tbaa); static GlobalLoadTr6_B96 create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::Type res, ::mlir::Value ptr, /*optional*/::mlir::ArrayAttr alias_scopes, /*optional*/::mlir::ArrayAttr noalias_scopes, /*optional*/::mlir::ArrayAttr tbaa); static GlobalLoadTr6_B96 create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::Type res, ::mlir::Value ptr, /*optional*/::mlir::ArrayAttr alias_scopes, /*optional*/::mlir::ArrayAttr noalias_scopes, /*optional*/::mlir::ArrayAttr tbaa); static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::Value ptr, /*optional*/::mlir::ArrayAttr alias_scopes, /*optional*/::mlir::ArrayAttr noalias_scopes, /*optional*/::mlir::ArrayAttr tbaa); static GlobalLoadTr6_B96 create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::Value ptr, /*optional*/::mlir::ArrayAttr alias_scopes, /*optional*/::mlir::ArrayAttr noalias_scopes, /*optional*/::mlir::ArrayAttr tbaa); static GlobalLoadTr6_B96 create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::Value ptr, /*optional*/::mlir::ArrayAttr alias_scopes, /*optional*/::mlir::ArrayAttr noalias_scopes, /*optional*/::mlir::ArrayAttr tbaa); static void build(::mlir::OpBuilder &, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, ::llvm::ArrayRef<::mlir::NamedAttribute> attributes = {}); static GlobalLoadTr6_B96 create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, ::llvm::ArrayRef<::mlir::NamedAttribute> attributes = {}); static GlobalLoadTr6_B96 create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, ::llvm::ArrayRef<::mlir::NamedAttribute> attributes = {}); static void build(::mlir::OpBuilder &, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, const Properties &properties, ::llvm::ArrayRef<::mlir::NamedAttribute> discardableAttributes = {}); static GlobalLoadTr6_B96 create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, const Properties &properties, ::llvm::ArrayRef<::mlir::NamedAttribute> discardableAttributes = {}); static GlobalLoadTr6_B96 create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, const Properties &properties, ::llvm::ArrayRef<::mlir::NamedAttribute> discardableAttributes = {}); ::llvm::LogicalResult verifyInvariantsImpl(); ::llvm::LogicalResult verifyInvariants(); ::llvm::SmallVector<::mlir::Value> getAccessedOperands(); static ::mlir::ParseResult parse(::mlir::OpAsmParser &parser, ::mlir::OperationState &result); void print(::mlir::OpAsmPrinter &_odsPrinter); void getEffects(::llvm::SmallVectorImpl<::mlir::SideEffects::EffectInstance<::mlir::MemoryEffects::Effect>> &effects); private: ::mlir::StringAttr getAttributeNameForIndex(unsigned index) { return getAttributeNameForIndex((*this)->getName(), index); } static ::mlir::StringAttr getAttributeNameForIndex(::mlir::OperationName name, unsigned index) { assert(index < 3 && "invalid attribute index"); assert(name.getStringRef() == getOperationName() && "invalid operation name"); assert(name.isRegistered() && "Operation isn't registered, missing a " "dependent dialect loading?"); return name.getAttributeNames()[index]; } public: }; } // namespace mlir::ROCDL MLIR_DECLARE_EXPLICIT_TYPE_ID(::mlir::ROCDL::GlobalLoadTr6_B96) MLIR_DECLARE_EXPLICIT_TYPE_ID(::mlir::ROCDL::detail::GlobalLoadTr6_B96GenericAdaptorBase::Properties) namespace mlir::ROCDL { //===----------------------------------------------------------------------===// // ::mlir::ROCDL::GlobalLoadTr8_B128 declarations //===----------------------------------------------------------------------===// namespace detail { class GlobalLoadTr8_B128GenericAdaptorBase { public: struct Properties { using alias_scopesTy = ::mlir::ArrayAttr; alias_scopesTy alias_scopes; auto getAliasScopes() const { auto &propStorage = this->alias_scopes; return ::llvm::dyn_cast_or_null<::mlir::ArrayAttr>(propStorage); } void setAliasScopes(const ::mlir::ArrayAttr &propValue) { this->alias_scopes = propValue; } using noalias_scopesTy = ::mlir::ArrayAttr; noalias_scopesTy noalias_scopes; auto getNoaliasScopes() const { auto &propStorage = this->noalias_scopes; return ::llvm::dyn_cast_or_null<::mlir::ArrayAttr>(propStorage); } void setNoaliasScopes(const ::mlir::ArrayAttr &propValue) { this->noalias_scopes = propValue; } using tbaaTy = ::mlir::ArrayAttr; tbaaTy tbaa; auto getTbaa() const { auto &propStorage = this->tbaa; return ::llvm::dyn_cast_or_null<::mlir::ArrayAttr>(propStorage); } void setTbaa(const ::mlir::ArrayAttr &propValue) { this->tbaa = propValue; } bool operator==(const Properties &rhs) const { return rhs.alias_scopes == this->alias_scopes && rhs.noalias_scopes == this->noalias_scopes && rhs.tbaa == this->tbaa && true; } bool operator!=(const Properties &rhs) const { return !(*this == rhs); } }; protected: ::mlir::DictionaryAttr odsAttrs; ::std::optional<::mlir::OperationName> odsOpName; Properties properties; ::mlir::RegionRange odsRegions; public: GlobalLoadTr8_B128GenericAdaptorBase(::mlir::DictionaryAttr attrs, const Properties &properties, ::mlir::RegionRange regions = {}) : odsAttrs(attrs), properties(properties), odsRegions(regions) { if (odsAttrs) odsOpName.emplace("rocdl.global.load.tr.b128", odsAttrs.getContext()); } GlobalLoadTr8_B128GenericAdaptorBase(GlobalLoadTr8_B128 op); std::pair getODSOperandIndexAndLength(unsigned index, unsigned odsOperandsSize) { return {index, 1}; } const Properties &getProperties() { return properties; } ::mlir::DictionaryAttr getAttributes() { return odsAttrs; } ::mlir::ArrayAttr getAliasScopesAttr() { auto attr = ::llvm::dyn_cast_or_null<::mlir::ArrayAttr>(getProperties().alias_scopes); return attr; } ::std::optional< ::mlir::ArrayAttr > getAliasScopes(); ::mlir::ArrayAttr getNoaliasScopesAttr() { auto attr = ::llvm::dyn_cast_or_null<::mlir::ArrayAttr>(getProperties().noalias_scopes); return attr; } ::std::optional< ::mlir::ArrayAttr > getNoaliasScopes(); ::mlir::ArrayAttr getTbaaAttr() { auto attr = ::llvm::dyn_cast_or_null<::mlir::ArrayAttr>(getProperties().tbaa); return attr; } ::std::optional< ::mlir::ArrayAttr > getTbaa(); }; } // namespace detail template class GlobalLoadTr8_B128GenericAdaptor : public detail::GlobalLoadTr8_B128GenericAdaptorBase { using ValueT = ::llvm::detail::ValueOfRange; using Base = detail::GlobalLoadTr8_B128GenericAdaptorBase; static constexpr int odsIndex_ptr = 0; public: GlobalLoadTr8_B128GenericAdaptor(RangeT values, ::mlir::DictionaryAttr attrs, const Properties &properties, ::mlir::RegionRange regions = {}) : Base(attrs, properties, regions), odsOperands(values) {} GlobalLoadTr8_B128GenericAdaptor(RangeT values, ::mlir::DictionaryAttr attrs, ::mlir::PropertyRef properties, ::mlir::RegionRange regions = {}) : GlobalLoadTr8_B128GenericAdaptor(values, attrs, (properties ? *properties.as() : Properties{}), regions) {} GlobalLoadTr8_B128GenericAdaptor(RangeT values, ::mlir::DictionaryAttr attrs = nullptr) : GlobalLoadTr8_B128GenericAdaptor(values, attrs, Properties{}, {}) {} GlobalLoadTr8_B128GenericAdaptor(RangeT values, const GlobalLoadTr8_B128GenericAdaptorBase &base) : Base(base), odsOperands(values) {} template >> GlobalLoadTr8_B128GenericAdaptor(RangeT values, LateInst op) : Base(op), odsOperands(values) {} std::pair getODSOperandIndexAndLength(unsigned index) { return Base::getODSOperandIndexAndLength(index, odsOperands.size()); } RangeT getODSOperands(unsigned index) { auto valueRange = getODSOperandIndexAndLength(index); return {std::next(odsOperands.begin(), valueRange.first), std::next(odsOperands.begin(), valueRange.first + valueRange.second)}; } ValueT getPtr() { return (*getODSOperands(0).begin()); } RangeT getOperands() { return odsOperands; } private: RangeT odsOperands; }; class GlobalLoadTr8_B128Adaptor : public GlobalLoadTr8_B128GenericAdaptor<::mlir::ValueRange> { public: using GlobalLoadTr8_B128GenericAdaptor::GlobalLoadTr8_B128GenericAdaptor; GlobalLoadTr8_B128Adaptor(GlobalLoadTr8_B128 op); ::llvm::LogicalResult verify(::mlir::Location loc); }; class GlobalLoadTr8_B128 : public ::mlir::Op::Impl, ::mlir::OpTrait::ZeroSuccessors, ::mlir::OpTrait::OneOperand, ::mlir::OpTrait::OpInvariants, ::mlir::BytecodeOpInterface::Trait, ::mlir::LLVM::AliasAnalysisOpInterface::Trait, ::mlir::MemoryEffectOpInterface::Trait> { public: using Op::Op; using Op::print; using Adaptor = GlobalLoadTr8_B128Adaptor; template using GenericAdaptor = GlobalLoadTr8_B128GenericAdaptor; using FoldAdaptor = GenericAdaptor<::llvm::ArrayRef<::mlir::Attribute>>; static constexpr int odsIndex_ptr = 0; using Properties = FoldAdaptor::Properties; using ::mlir::LLVM::AliasAnalysisOpInterface::Trait::getAliasScopesOrNull; using ::mlir::LLVM::AliasAnalysisOpInterface::Trait::setAliasScopes; using ::mlir::LLVM::AliasAnalysisOpInterface::Trait::getNoAliasScopesOrNull; using ::mlir::LLVM::AliasAnalysisOpInterface::Trait::setNoAliasScopes; using ::mlir::LLVM::AliasAnalysisOpInterface::Trait::getTBAATagsOrNull; using ::mlir::LLVM::AliasAnalysisOpInterface::Trait::setTBAATags; static ::llvm::ArrayRef<::llvm::StringRef> getAttributeNames() { static ::llvm::StringRef attrNames[] = {::llvm::StringRef("alias_scopes"), ::llvm::StringRef("noalias_scopes"), ::llvm::StringRef("tbaa")}; return ::llvm::ArrayRef(attrNames); } ::mlir::StringAttr getAliasScopesAttrName() { return getAttributeNameForIndex(0); } static ::mlir::StringAttr getAliasScopesAttrName(::mlir::OperationName name) { return getAttributeNameForIndex(name, 0); } ::mlir::StringAttr getNoaliasScopesAttrName() { return getAttributeNameForIndex(1); } static ::mlir::StringAttr getNoaliasScopesAttrName(::mlir::OperationName name) { return getAttributeNameForIndex(name, 1); } ::mlir::StringAttr getTbaaAttrName() { return getAttributeNameForIndex(2); } static ::mlir::StringAttr getTbaaAttrName(::mlir::OperationName name) { return getAttributeNameForIndex(name, 2); } static constexpr ::llvm::StringLiteral getOperationName() { return ::llvm::StringLiteral("rocdl.global.load.tr.b128"); } std::pair getODSOperandIndexAndLength(unsigned index) { return {index, 1}; } ::mlir::Operation::operand_range getODSOperands(unsigned index) { auto valueRange = getODSOperandIndexAndLength(index); return {std::next(getOperation()->operand_begin(), valueRange.first), std::next(getOperation()->operand_begin(), valueRange.first + valueRange.second)}; } ::mlir::TypedValue<::mlir::LLVM::LLVMPointerType> getPtr() { return ::llvm::cast<::mlir::TypedValue<::mlir::LLVM::LLVMPointerType>>(*getODSOperands(0).begin()); } ::mlir::OpOperand &getPtrMutable() { auto range = getODSOperandIndexAndLength(0); return getOperation()->getOpOperand(range.first); } std::pair getODSResultIndexAndLength(unsigned index) { return {index, 1}; } ::mlir::Operation::result_range getODSResults(unsigned index) { auto valueRange = getODSResultIndexAndLength(index); return {std::next(getOperation()->result_begin(), valueRange.first), std::next(getOperation()->result_begin(), valueRange.first + valueRange.second)}; } ::mlir::TypedValue<::mlir::Type> getRes() { return ::llvm::cast<::mlir::TypedValue<::mlir::Type>>(*getODSResults(0).begin()); } static ::llvm::LogicalResult setPropertiesFromAttr(Properties &prop, ::mlir::Attribute attr, ::llvm::function_ref<::mlir::InFlightDiagnostic()> emitError); static ::mlir::Attribute getPropertiesAsAttr(::mlir::MLIRContext *ctx, const Properties &prop); static llvm::hash_code computePropertiesHash(const Properties &prop); static std::optional getInherentAttr(::mlir::MLIRContext *ctx, const Properties &prop, llvm::StringRef name); static void setInherentAttr(Properties &prop, llvm::StringRef name, mlir::Attribute value); static void populateInherentAttrs(::mlir::MLIRContext *ctx, const Properties &prop, ::mlir::NamedAttrList &attrs); static ::llvm::LogicalResult verifyInherentAttrs(::mlir::OperationName opName, ::mlir::NamedAttrList &attrs, llvm::function_ref<::mlir::InFlightDiagnostic()> emitError); static ::llvm::LogicalResult readProperties(::mlir::DialectBytecodeReader &reader, ::mlir::OperationState &state); void writeProperties(::mlir::DialectBytecodeWriter &writer); ::mlir::ArrayAttr getAliasScopesAttr() { return ::llvm::dyn_cast_or_null<::mlir::ArrayAttr>(getProperties().alias_scopes); } ::std::optional< ::mlir::ArrayAttr > getAliasScopes(); ::mlir::ArrayAttr getNoaliasScopesAttr() { return ::llvm::dyn_cast_or_null<::mlir::ArrayAttr>(getProperties().noalias_scopes); } ::std::optional< ::mlir::ArrayAttr > getNoaliasScopes(); ::mlir::ArrayAttr getTbaaAttr() { return ::llvm::dyn_cast_or_null<::mlir::ArrayAttr>(getProperties().tbaa); } ::std::optional< ::mlir::ArrayAttr > getTbaa(); void setAliasScopesAttr(::mlir::ArrayAttr attr) { getProperties().alias_scopes = attr; } void setNoaliasScopesAttr(::mlir::ArrayAttr attr) { getProperties().noalias_scopes = attr; } void setTbaaAttr(::mlir::ArrayAttr attr) { getProperties().tbaa = attr; } ::mlir::Attribute removeAliasScopesAttr() { auto attr = getProperties().alias_scopes; getProperties().alias_scopes = {}; return attr; } ::mlir::Attribute removeNoaliasScopesAttr() { auto attr = getProperties().noalias_scopes; getProperties().noalias_scopes = {}; return attr; } ::mlir::Attribute removeTbaaAttr() { auto attr = getProperties().tbaa; getProperties().tbaa = {}; return attr; } static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::Type res, ::mlir::Value ptr, /*optional*/::mlir::ArrayAttr alias_scopes, /*optional*/::mlir::ArrayAttr noalias_scopes, /*optional*/::mlir::ArrayAttr tbaa); static GlobalLoadTr8_B128 create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::Type res, ::mlir::Value ptr, /*optional*/::mlir::ArrayAttr alias_scopes, /*optional*/::mlir::ArrayAttr noalias_scopes, /*optional*/::mlir::ArrayAttr tbaa); static GlobalLoadTr8_B128 create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::Type res, ::mlir::Value ptr, /*optional*/::mlir::ArrayAttr alias_scopes, /*optional*/::mlir::ArrayAttr noalias_scopes, /*optional*/::mlir::ArrayAttr tbaa); static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::Value ptr, /*optional*/::mlir::ArrayAttr alias_scopes, /*optional*/::mlir::ArrayAttr noalias_scopes, /*optional*/::mlir::ArrayAttr tbaa); static GlobalLoadTr8_B128 create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::Value ptr, /*optional*/::mlir::ArrayAttr alias_scopes, /*optional*/::mlir::ArrayAttr noalias_scopes, /*optional*/::mlir::ArrayAttr tbaa); static GlobalLoadTr8_B128 create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::Value ptr, /*optional*/::mlir::ArrayAttr alias_scopes, /*optional*/::mlir::ArrayAttr noalias_scopes, /*optional*/::mlir::ArrayAttr tbaa); static void build(::mlir::OpBuilder &, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, ::llvm::ArrayRef<::mlir::NamedAttribute> attributes = {}); static GlobalLoadTr8_B128 create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, ::llvm::ArrayRef<::mlir::NamedAttribute> attributes = {}); static GlobalLoadTr8_B128 create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, ::llvm::ArrayRef<::mlir::NamedAttribute> attributes = {}); static void build(::mlir::OpBuilder &, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, const Properties &properties, ::llvm::ArrayRef<::mlir::NamedAttribute> discardableAttributes = {}); static GlobalLoadTr8_B128 create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, const Properties &properties, ::llvm::ArrayRef<::mlir::NamedAttribute> discardableAttributes = {}); static GlobalLoadTr8_B128 create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, const Properties &properties, ::llvm::ArrayRef<::mlir::NamedAttribute> discardableAttributes = {}); ::llvm::LogicalResult verifyInvariantsImpl(); ::llvm::LogicalResult verifyInvariants(); ::llvm::SmallVector<::mlir::Value> getAccessedOperands(); static ::mlir::ParseResult parse(::mlir::OpAsmParser &parser, ::mlir::OperationState &result); void print(::mlir::OpAsmPrinter &_odsPrinter); void getEffects(::llvm::SmallVectorImpl<::mlir::SideEffects::EffectInstance<::mlir::MemoryEffects::Effect>> &effects); private: ::mlir::StringAttr getAttributeNameForIndex(unsigned index) { return getAttributeNameForIndex((*this)->getName(), index); } static ::mlir::StringAttr getAttributeNameForIndex(::mlir::OperationName name, unsigned index) { assert(index < 3 && "invalid attribute index"); assert(name.getStringRef() == getOperationName() && "invalid operation name"); assert(name.isRegistered() && "Operation isn't registered, missing a " "dependent dialect loading?"); return name.getAttributeNames()[index]; } public: }; } // namespace mlir::ROCDL MLIR_DECLARE_EXPLICIT_TYPE_ID(::mlir::ROCDL::GlobalLoadTr8_B128) MLIR_DECLARE_EXPLICIT_TYPE_ID(::mlir::ROCDL::detail::GlobalLoadTr8_B128GenericAdaptorBase::Properties) namespace mlir::ROCDL { //===----------------------------------------------------------------------===// // ::mlir::ROCDL::GlobalLoadTr8_B64 declarations //===----------------------------------------------------------------------===// namespace detail { class GlobalLoadTr8_B64GenericAdaptorBase { public: struct Properties { using alias_scopesTy = ::mlir::ArrayAttr; alias_scopesTy alias_scopes; auto getAliasScopes() const { auto &propStorage = this->alias_scopes; return ::llvm::dyn_cast_or_null<::mlir::ArrayAttr>(propStorage); } void setAliasScopes(const ::mlir::ArrayAttr &propValue) { this->alias_scopes = propValue; } using noalias_scopesTy = ::mlir::ArrayAttr; noalias_scopesTy noalias_scopes; auto getNoaliasScopes() const { auto &propStorage = this->noalias_scopes; return ::llvm::dyn_cast_or_null<::mlir::ArrayAttr>(propStorage); } void setNoaliasScopes(const ::mlir::ArrayAttr &propValue) { this->noalias_scopes = propValue; } using tbaaTy = ::mlir::ArrayAttr; tbaaTy tbaa; auto getTbaa() const { auto &propStorage = this->tbaa; return ::llvm::dyn_cast_or_null<::mlir::ArrayAttr>(propStorage); } void setTbaa(const ::mlir::ArrayAttr &propValue) { this->tbaa = propValue; } bool operator==(const Properties &rhs) const { return rhs.alias_scopes == this->alias_scopes && rhs.noalias_scopes == this->noalias_scopes && rhs.tbaa == this->tbaa && true; } bool operator!=(const Properties &rhs) const { return !(*this == rhs); } }; protected: ::mlir::DictionaryAttr odsAttrs; ::std::optional<::mlir::OperationName> odsOpName; Properties properties; ::mlir::RegionRange odsRegions; public: GlobalLoadTr8_B64GenericAdaptorBase(::mlir::DictionaryAttr attrs, const Properties &properties, ::mlir::RegionRange regions = {}) : odsAttrs(attrs), properties(properties), odsRegions(regions) { if (odsAttrs) odsOpName.emplace("rocdl.global.load.tr.b64", odsAttrs.getContext()); } GlobalLoadTr8_B64GenericAdaptorBase(GlobalLoadTr8_B64 op); std::pair getODSOperandIndexAndLength(unsigned index, unsigned odsOperandsSize) { return {index, 1}; } const Properties &getProperties() { return properties; } ::mlir::DictionaryAttr getAttributes() { return odsAttrs; } ::mlir::ArrayAttr getAliasScopesAttr() { auto attr = ::llvm::dyn_cast_or_null<::mlir::ArrayAttr>(getProperties().alias_scopes); return attr; } ::std::optional< ::mlir::ArrayAttr > getAliasScopes(); ::mlir::ArrayAttr getNoaliasScopesAttr() { auto attr = ::llvm::dyn_cast_or_null<::mlir::ArrayAttr>(getProperties().noalias_scopes); return attr; } ::std::optional< ::mlir::ArrayAttr > getNoaliasScopes(); ::mlir::ArrayAttr getTbaaAttr() { auto attr = ::llvm::dyn_cast_or_null<::mlir::ArrayAttr>(getProperties().tbaa); return attr; } ::std::optional< ::mlir::ArrayAttr > getTbaa(); }; } // namespace detail template class GlobalLoadTr8_B64GenericAdaptor : public detail::GlobalLoadTr8_B64GenericAdaptorBase { using ValueT = ::llvm::detail::ValueOfRange; using Base = detail::GlobalLoadTr8_B64GenericAdaptorBase; static constexpr int odsIndex_ptr = 0; public: GlobalLoadTr8_B64GenericAdaptor(RangeT values, ::mlir::DictionaryAttr attrs, const Properties &properties, ::mlir::RegionRange regions = {}) : Base(attrs, properties, regions), odsOperands(values) {} GlobalLoadTr8_B64GenericAdaptor(RangeT values, ::mlir::DictionaryAttr attrs, ::mlir::PropertyRef properties, ::mlir::RegionRange regions = {}) : GlobalLoadTr8_B64GenericAdaptor(values, attrs, (properties ? *properties.as() : Properties{}), regions) {} GlobalLoadTr8_B64GenericAdaptor(RangeT values, ::mlir::DictionaryAttr attrs = nullptr) : GlobalLoadTr8_B64GenericAdaptor(values, attrs, Properties{}, {}) {} GlobalLoadTr8_B64GenericAdaptor(RangeT values, const GlobalLoadTr8_B64GenericAdaptorBase &base) : Base(base), odsOperands(values) {} template >> GlobalLoadTr8_B64GenericAdaptor(RangeT values, LateInst op) : Base(op), odsOperands(values) {} std::pair getODSOperandIndexAndLength(unsigned index) { return Base::getODSOperandIndexAndLength(index, odsOperands.size()); } RangeT getODSOperands(unsigned index) { auto valueRange = getODSOperandIndexAndLength(index); return {std::next(odsOperands.begin(), valueRange.first), std::next(odsOperands.begin(), valueRange.first + valueRange.second)}; } ValueT getPtr() { return (*getODSOperands(0).begin()); } RangeT getOperands() { return odsOperands; } private: RangeT odsOperands; }; class GlobalLoadTr8_B64Adaptor : public GlobalLoadTr8_B64GenericAdaptor<::mlir::ValueRange> { public: using GlobalLoadTr8_B64GenericAdaptor::GlobalLoadTr8_B64GenericAdaptor; GlobalLoadTr8_B64Adaptor(GlobalLoadTr8_B64 op); ::llvm::LogicalResult verify(::mlir::Location loc); }; class GlobalLoadTr8_B64 : public ::mlir::Op::Impl, ::mlir::OpTrait::ZeroSuccessors, ::mlir::OpTrait::OneOperand, ::mlir::OpTrait::OpInvariants, ::mlir::BytecodeOpInterface::Trait, ::mlir::LLVM::AliasAnalysisOpInterface::Trait, ::mlir::MemoryEffectOpInterface::Trait> { public: using Op::Op; using Op::print; using Adaptor = GlobalLoadTr8_B64Adaptor; template using GenericAdaptor = GlobalLoadTr8_B64GenericAdaptor; using FoldAdaptor = GenericAdaptor<::llvm::ArrayRef<::mlir::Attribute>>; static constexpr int odsIndex_ptr = 0; using Properties = FoldAdaptor::Properties; using ::mlir::LLVM::AliasAnalysisOpInterface::Trait::getAliasScopesOrNull; using ::mlir::LLVM::AliasAnalysisOpInterface::Trait::setAliasScopes; using ::mlir::LLVM::AliasAnalysisOpInterface::Trait::getNoAliasScopesOrNull; using ::mlir::LLVM::AliasAnalysisOpInterface::Trait::setNoAliasScopes; using ::mlir::LLVM::AliasAnalysisOpInterface::Trait::getTBAATagsOrNull; using ::mlir::LLVM::AliasAnalysisOpInterface::Trait::setTBAATags; static ::llvm::ArrayRef<::llvm::StringRef> getAttributeNames() { static ::llvm::StringRef attrNames[] = {::llvm::StringRef("alias_scopes"), ::llvm::StringRef("noalias_scopes"), ::llvm::StringRef("tbaa")}; return ::llvm::ArrayRef(attrNames); } ::mlir::StringAttr getAliasScopesAttrName() { return getAttributeNameForIndex(0); } static ::mlir::StringAttr getAliasScopesAttrName(::mlir::OperationName name) { return getAttributeNameForIndex(name, 0); } ::mlir::StringAttr getNoaliasScopesAttrName() { return getAttributeNameForIndex(1); } static ::mlir::StringAttr getNoaliasScopesAttrName(::mlir::OperationName name) { return getAttributeNameForIndex(name, 1); } ::mlir::StringAttr getTbaaAttrName() { return getAttributeNameForIndex(2); } static ::mlir::StringAttr getTbaaAttrName(::mlir::OperationName name) { return getAttributeNameForIndex(name, 2); } static constexpr ::llvm::StringLiteral getOperationName() { return ::llvm::StringLiteral("rocdl.global.load.tr.b64"); } std::pair getODSOperandIndexAndLength(unsigned index) { return {index, 1}; } ::mlir::Operation::operand_range getODSOperands(unsigned index) { auto valueRange = getODSOperandIndexAndLength(index); return {std::next(getOperation()->operand_begin(), valueRange.first), std::next(getOperation()->operand_begin(), valueRange.first + valueRange.second)}; } ::mlir::TypedValue<::mlir::LLVM::LLVMPointerType> getPtr() { return ::llvm::cast<::mlir::TypedValue<::mlir::LLVM::LLVMPointerType>>(*getODSOperands(0).begin()); } ::mlir::OpOperand &getPtrMutable() { auto range = getODSOperandIndexAndLength(0); return getOperation()->getOpOperand(range.first); } std::pair getODSResultIndexAndLength(unsigned index) { return {index, 1}; } ::mlir::Operation::result_range getODSResults(unsigned index) { auto valueRange = getODSResultIndexAndLength(index); return {std::next(getOperation()->result_begin(), valueRange.first), std::next(getOperation()->result_begin(), valueRange.first + valueRange.second)}; } ::mlir::TypedValue<::mlir::Type> getRes() { return ::llvm::cast<::mlir::TypedValue<::mlir::Type>>(*getODSResults(0).begin()); } static ::llvm::LogicalResult setPropertiesFromAttr(Properties &prop, ::mlir::Attribute attr, ::llvm::function_ref<::mlir::InFlightDiagnostic()> emitError); static ::mlir::Attribute getPropertiesAsAttr(::mlir::MLIRContext *ctx, const Properties &prop); static llvm::hash_code computePropertiesHash(const Properties &prop); static std::optional getInherentAttr(::mlir::MLIRContext *ctx, const Properties &prop, llvm::StringRef name); static void setInherentAttr(Properties &prop, llvm::StringRef name, mlir::Attribute value); static void populateInherentAttrs(::mlir::MLIRContext *ctx, const Properties &prop, ::mlir::NamedAttrList &attrs); static ::llvm::LogicalResult verifyInherentAttrs(::mlir::OperationName opName, ::mlir::NamedAttrList &attrs, llvm::function_ref<::mlir::InFlightDiagnostic()> emitError); static ::llvm::LogicalResult readProperties(::mlir::DialectBytecodeReader &reader, ::mlir::OperationState &state); void writeProperties(::mlir::DialectBytecodeWriter &writer); ::mlir::ArrayAttr getAliasScopesAttr() { return ::llvm::dyn_cast_or_null<::mlir::ArrayAttr>(getProperties().alias_scopes); } ::std::optional< ::mlir::ArrayAttr > getAliasScopes(); ::mlir::ArrayAttr getNoaliasScopesAttr() { return ::llvm::dyn_cast_or_null<::mlir::ArrayAttr>(getProperties().noalias_scopes); } ::std::optional< ::mlir::ArrayAttr > getNoaliasScopes(); ::mlir::ArrayAttr getTbaaAttr() { return ::llvm::dyn_cast_or_null<::mlir::ArrayAttr>(getProperties().tbaa); } ::std::optional< ::mlir::ArrayAttr > getTbaa(); void setAliasScopesAttr(::mlir::ArrayAttr attr) { getProperties().alias_scopes = attr; } void setNoaliasScopesAttr(::mlir::ArrayAttr attr) { getProperties().noalias_scopes = attr; } void setTbaaAttr(::mlir::ArrayAttr attr) { getProperties().tbaa = attr; } ::mlir::Attribute removeAliasScopesAttr() { auto attr = getProperties().alias_scopes; getProperties().alias_scopes = {}; return attr; } ::mlir::Attribute removeNoaliasScopesAttr() { auto attr = getProperties().noalias_scopes; getProperties().noalias_scopes = {}; return attr; } ::mlir::Attribute removeTbaaAttr() { auto attr = getProperties().tbaa; getProperties().tbaa = {}; return attr; } static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::Type res, ::mlir::Value ptr, /*optional*/::mlir::ArrayAttr alias_scopes, /*optional*/::mlir::ArrayAttr noalias_scopes, /*optional*/::mlir::ArrayAttr tbaa); static GlobalLoadTr8_B64 create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::Type res, ::mlir::Value ptr, /*optional*/::mlir::ArrayAttr alias_scopes, /*optional*/::mlir::ArrayAttr noalias_scopes, /*optional*/::mlir::ArrayAttr tbaa); static GlobalLoadTr8_B64 create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::Type res, ::mlir::Value ptr, /*optional*/::mlir::ArrayAttr alias_scopes, /*optional*/::mlir::ArrayAttr noalias_scopes, /*optional*/::mlir::ArrayAttr tbaa); static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::Value ptr, /*optional*/::mlir::ArrayAttr alias_scopes, /*optional*/::mlir::ArrayAttr noalias_scopes, /*optional*/::mlir::ArrayAttr tbaa); static GlobalLoadTr8_B64 create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::Value ptr, /*optional*/::mlir::ArrayAttr alias_scopes, /*optional*/::mlir::ArrayAttr noalias_scopes, /*optional*/::mlir::ArrayAttr tbaa); static GlobalLoadTr8_B64 create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::Value ptr, /*optional*/::mlir::ArrayAttr alias_scopes, /*optional*/::mlir::ArrayAttr noalias_scopes, /*optional*/::mlir::ArrayAttr tbaa); static void build(::mlir::OpBuilder &, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, ::llvm::ArrayRef<::mlir::NamedAttribute> attributes = {}); static GlobalLoadTr8_B64 create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, ::llvm::ArrayRef<::mlir::NamedAttribute> attributes = {}); static GlobalLoadTr8_B64 create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, ::llvm::ArrayRef<::mlir::NamedAttribute> attributes = {}); static void build(::mlir::OpBuilder &, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, const Properties &properties, ::llvm::ArrayRef<::mlir::NamedAttribute> discardableAttributes = {}); static GlobalLoadTr8_B64 create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, const Properties &properties, ::llvm::ArrayRef<::mlir::NamedAttribute> discardableAttributes = {}); static GlobalLoadTr8_B64 create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, const Properties &properties, ::llvm::ArrayRef<::mlir::NamedAttribute> discardableAttributes = {}); ::llvm::LogicalResult verifyInvariantsImpl(); ::llvm::LogicalResult verifyInvariants(); ::llvm::SmallVector<::mlir::Value> getAccessedOperands(); static ::mlir::ParseResult parse(::mlir::OpAsmParser &parser, ::mlir::OperationState &result); void print(::mlir::OpAsmPrinter &_odsPrinter); void getEffects(::llvm::SmallVectorImpl<::mlir::SideEffects::EffectInstance<::mlir::MemoryEffects::Effect>> &effects); private: ::mlir::StringAttr getAttributeNameForIndex(unsigned index) { return getAttributeNameForIndex((*this)->getName(), index); } static ::mlir::StringAttr getAttributeNameForIndex(::mlir::OperationName name, unsigned index) { assert(index < 3 && "invalid attribute index"); assert(name.getStringRef() == getOperationName() && "invalid operation name"); assert(name.isRegistered() && "Operation isn't registered, missing a " "dependent dialect loading?"); return name.getAttributeNames()[index]; } public: }; } // namespace mlir::ROCDL MLIR_DECLARE_EXPLICIT_TYPE_ID(::mlir::ROCDL::GlobalLoadTr8_B64) MLIR_DECLARE_EXPLICIT_TYPE_ID(::mlir::ROCDL::detail::GlobalLoadTr8_B64GenericAdaptorBase::Properties) namespace mlir::ROCDL { //===----------------------------------------------------------------------===// // ::mlir::ROCDL::GlobalPrefetchOp declarations //===----------------------------------------------------------------------===// namespace detail { class GlobalPrefetchOpGenericAdaptorBase { public: struct Properties { using alias_scopesTy = ::mlir::ArrayAttr; alias_scopesTy alias_scopes; auto getAliasScopes() const { auto &propStorage = this->alias_scopes; return ::llvm::dyn_cast_or_null<::mlir::ArrayAttr>(propStorage); } void setAliasScopes(const ::mlir::ArrayAttr &propValue) { this->alias_scopes = propValue; } using cachePolicyTy = ::mlir::Attribute; cachePolicyTy cachePolicy; auto getCachePolicy() const { auto &propStorage = this->cachePolicy; return ::llvm::dyn_cast_or_null<::mlir::Attribute>(propStorage); } void setCachePolicy(const ::mlir::Attribute &propValue) { this->cachePolicy = propValue; } using noalias_scopesTy = ::mlir::ArrayAttr; noalias_scopesTy noalias_scopes; auto getNoaliasScopes() const { auto &propStorage = this->noalias_scopes; return ::llvm::dyn_cast_or_null<::mlir::ArrayAttr>(propStorage); } void setNoaliasScopes(const ::mlir::ArrayAttr &propValue) { this->noalias_scopes = propValue; } using tbaaTy = ::mlir::ArrayAttr; tbaaTy tbaa; auto getTbaa() const { auto &propStorage = this->tbaa; return ::llvm::dyn_cast_or_null<::mlir::ArrayAttr>(propStorage); } void setTbaa(const ::mlir::ArrayAttr &propValue) { this->tbaa = propValue; } bool operator==(const Properties &rhs) const { return rhs.alias_scopes == this->alias_scopes && rhs.cachePolicy == this->cachePolicy && rhs.noalias_scopes == this->noalias_scopes && rhs.tbaa == this->tbaa && true; } bool operator!=(const Properties &rhs) const { return !(*this == rhs); } }; protected: ::mlir::DictionaryAttr odsAttrs; ::std::optional<::mlir::OperationName> odsOpName; Properties properties; ::mlir::RegionRange odsRegions; public: GlobalPrefetchOpGenericAdaptorBase(::mlir::DictionaryAttr attrs, const Properties &properties, ::mlir::RegionRange regions = {}) : odsAttrs(attrs), properties(properties), odsRegions(regions) { if (odsAttrs) odsOpName.emplace("rocdl.global.prefetch", odsAttrs.getContext()); } GlobalPrefetchOpGenericAdaptorBase(GlobalPrefetchOp op); std::pair getODSOperandIndexAndLength(unsigned index, unsigned odsOperandsSize) { return {index, 1}; } const Properties &getProperties() { return properties; } ::mlir::DictionaryAttr getAttributes() { return odsAttrs; } ::mlir::Attribute getCachePolicyAttr(); ::mlir::Attribute getCachePolicy(); ::mlir::ArrayAttr getAliasScopesAttr() { auto attr = ::llvm::dyn_cast_or_null<::mlir::ArrayAttr>(getProperties().alias_scopes); return attr; } ::std::optional< ::mlir::ArrayAttr > getAliasScopes(); ::mlir::ArrayAttr getNoaliasScopesAttr() { auto attr = ::llvm::dyn_cast_or_null<::mlir::ArrayAttr>(getProperties().noalias_scopes); return attr; } ::std::optional< ::mlir::ArrayAttr > getNoaliasScopes(); ::mlir::ArrayAttr getTbaaAttr() { auto attr = ::llvm::dyn_cast_or_null<::mlir::ArrayAttr>(getProperties().tbaa); return attr; } ::std::optional< ::mlir::ArrayAttr > getTbaa(); }; } // namespace detail template class GlobalPrefetchOpGenericAdaptor : public detail::GlobalPrefetchOpGenericAdaptorBase { using ValueT = ::llvm::detail::ValueOfRange; using Base = detail::GlobalPrefetchOpGenericAdaptorBase; static constexpr int odsIndex_ptr = 0; public: GlobalPrefetchOpGenericAdaptor(RangeT values, ::mlir::DictionaryAttr attrs, const Properties &properties, ::mlir::RegionRange regions = {}) : Base(attrs, properties, regions), odsOperands(values) {} GlobalPrefetchOpGenericAdaptor(RangeT values, ::mlir::DictionaryAttr attrs, ::mlir::PropertyRef properties, ::mlir::RegionRange regions = {}) : GlobalPrefetchOpGenericAdaptor(values, attrs, (properties ? *properties.as() : Properties{}), regions) {} GlobalPrefetchOpGenericAdaptor(RangeT values, ::mlir::DictionaryAttr attrs = nullptr) : GlobalPrefetchOpGenericAdaptor(values, attrs, Properties{}, {}) {} GlobalPrefetchOpGenericAdaptor(RangeT values, const GlobalPrefetchOpGenericAdaptorBase &base) : Base(base), odsOperands(values) {} template >> GlobalPrefetchOpGenericAdaptor(RangeT values, LateInst op) : Base(op), odsOperands(values) {} std::pair getODSOperandIndexAndLength(unsigned index) { return Base::getODSOperandIndexAndLength(index, odsOperands.size()); } RangeT getODSOperands(unsigned index) { auto valueRange = getODSOperandIndexAndLength(index); return {std::next(odsOperands.begin(), valueRange.first), std::next(odsOperands.begin(), valueRange.first + valueRange.second)}; } ValueT getPtr() { return (*getODSOperands(0).begin()); } RangeT getOperands() { return odsOperands; } private: RangeT odsOperands; }; class GlobalPrefetchOpAdaptor : public GlobalPrefetchOpGenericAdaptor<::mlir::ValueRange> { public: using GlobalPrefetchOpGenericAdaptor::GlobalPrefetchOpGenericAdaptor; GlobalPrefetchOpAdaptor(GlobalPrefetchOp op); ::llvm::LogicalResult verify(::mlir::Location loc); }; class GlobalPrefetchOp : public ::mlir::Op { public: using Op::Op; using Op::print; using Adaptor = GlobalPrefetchOpAdaptor; template using GenericAdaptor = GlobalPrefetchOpGenericAdaptor; using FoldAdaptor = GenericAdaptor<::llvm::ArrayRef<::mlir::Attribute>>; static constexpr int odsIndex_ptr = 0; using Properties = FoldAdaptor::Properties; using ::mlir::LLVM::AliasAnalysisOpInterface::Trait::getAliasScopesOrNull; using ::mlir::LLVM::AliasAnalysisOpInterface::Trait::setAliasScopes; using ::mlir::LLVM::AliasAnalysisOpInterface::Trait::getNoAliasScopesOrNull; using ::mlir::LLVM::AliasAnalysisOpInterface::Trait::setNoAliasScopes; using ::mlir::LLVM::AliasAnalysisOpInterface::Trait::getTBAATagsOrNull; using ::mlir::LLVM::AliasAnalysisOpInterface::Trait::setTBAATags; static ::llvm::ArrayRef<::llvm::StringRef> getAttributeNames() { static ::llvm::StringRef attrNames[] = {::llvm::StringRef("alias_scopes"), ::llvm::StringRef("cachePolicy"), ::llvm::StringRef("noalias_scopes"), ::llvm::StringRef("tbaa")}; return ::llvm::ArrayRef(attrNames); } ::mlir::StringAttr getAliasScopesAttrName() { return getAttributeNameForIndex(0); } static ::mlir::StringAttr getAliasScopesAttrName(::mlir::OperationName name) { return getAttributeNameForIndex(name, 0); } ::mlir::StringAttr getCachePolicyAttrName() { return getAttributeNameForIndex(1); } static ::mlir::StringAttr getCachePolicyAttrName(::mlir::OperationName name) { return getAttributeNameForIndex(name, 1); } ::mlir::StringAttr getNoaliasScopesAttrName() { return getAttributeNameForIndex(2); } static ::mlir::StringAttr getNoaliasScopesAttrName(::mlir::OperationName name) { return getAttributeNameForIndex(name, 2); } ::mlir::StringAttr getTbaaAttrName() { return getAttributeNameForIndex(3); } static ::mlir::StringAttr getTbaaAttrName(::mlir::OperationName name) { return getAttributeNameForIndex(name, 3); } static constexpr ::llvm::StringLiteral getOperationName() { return ::llvm::StringLiteral("rocdl.global.prefetch"); } std::pair getODSOperandIndexAndLength(unsigned index) { return {index, 1}; } ::mlir::Operation::operand_range getODSOperands(unsigned index) { auto valueRange = getODSOperandIndexAndLength(index); return {std::next(getOperation()->operand_begin(), valueRange.first), std::next(getOperation()->operand_begin(), valueRange.first + valueRange.second)}; } ::mlir::TypedValue<::mlir::LLVM::LLVMPointerType> getPtr() { return ::llvm::cast<::mlir::TypedValue<::mlir::LLVM::LLVMPointerType>>(*getODSOperands(0).begin()); } ::mlir::OpOperand &getPtrMutable() { auto range = getODSOperandIndexAndLength(0); return getOperation()->getOpOperand(range.first); } std::pair getODSResultIndexAndLength(unsigned index) { return {index, 1}; } ::mlir::Operation::result_range getODSResults(unsigned index) { auto valueRange = getODSResultIndexAndLength(index); return {std::next(getOperation()->result_begin(), valueRange.first), std::next(getOperation()->result_begin(), valueRange.first + valueRange.second)}; } static ::llvm::LogicalResult setPropertiesFromAttr(Properties &prop, ::mlir::Attribute attr, ::llvm::function_ref<::mlir::InFlightDiagnostic()> emitError); static ::mlir::Attribute getPropertiesAsAttr(::mlir::MLIRContext *ctx, const Properties &prop); static llvm::hash_code computePropertiesHash(const Properties &prop); static std::optional getInherentAttr(::mlir::MLIRContext *ctx, const Properties &prop, llvm::StringRef name); static void setInherentAttr(Properties &prop, llvm::StringRef name, mlir::Attribute value); static void populateInherentAttrs(::mlir::MLIRContext *ctx, const Properties &prop, ::mlir::NamedAttrList &attrs); static ::llvm::LogicalResult verifyInherentAttrs(::mlir::OperationName opName, ::mlir::NamedAttrList &attrs, llvm::function_ref<::mlir::InFlightDiagnostic()> emitError); static ::llvm::LogicalResult readProperties(::mlir::DialectBytecodeReader &reader, ::mlir::OperationState &state); void writeProperties(::mlir::DialectBytecodeWriter &writer); ::mlir::Attribute getCachePolicyAttr() { return ::llvm::dyn_cast_or_null<::mlir::Attribute>(getProperties().cachePolicy); } ::mlir::Attribute getCachePolicy(); ::mlir::ArrayAttr getAliasScopesAttr() { return ::llvm::dyn_cast_or_null<::mlir::ArrayAttr>(getProperties().alias_scopes); } ::std::optional< ::mlir::ArrayAttr > getAliasScopes(); ::mlir::ArrayAttr getNoaliasScopesAttr() { return ::llvm::dyn_cast_or_null<::mlir::ArrayAttr>(getProperties().noalias_scopes); } ::std::optional< ::mlir::ArrayAttr > getNoaliasScopes(); ::mlir::ArrayAttr getTbaaAttr() { return ::llvm::dyn_cast_or_null<::mlir::ArrayAttr>(getProperties().tbaa); } ::std::optional< ::mlir::ArrayAttr > getTbaa(); void setCachePolicyAttr(::mlir::Attribute attr) { getProperties().cachePolicy = attr; } void setAliasScopesAttr(::mlir::ArrayAttr attr) { getProperties().alias_scopes = attr; } void setNoaliasScopesAttr(::mlir::ArrayAttr attr) { getProperties().noalias_scopes = attr; } void setTbaaAttr(::mlir::ArrayAttr attr) { getProperties().tbaa = attr; } ::mlir::Attribute removeAliasScopesAttr() { auto attr = getProperties().alias_scopes; getProperties().alias_scopes = {}; return attr; } ::mlir::Attribute removeNoaliasScopesAttr() { auto attr = getProperties().noalias_scopes; getProperties().noalias_scopes = {}; return attr; } ::mlir::Attribute removeTbaaAttr() { auto attr = getProperties().tbaa; getProperties().tbaa = {}; return attr; } static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::Value ptr, ::mlir::Attribute cachePolicy, /*optional*/::mlir::ArrayAttr alias_scopes, /*optional*/::mlir::ArrayAttr noalias_scopes, /*optional*/::mlir::ArrayAttr tbaa); static GlobalPrefetchOp create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::Value ptr, ::mlir::Attribute cachePolicy, /*optional*/::mlir::ArrayAttr alias_scopes, /*optional*/::mlir::ArrayAttr noalias_scopes, /*optional*/::mlir::ArrayAttr tbaa); static GlobalPrefetchOp create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::Value ptr, ::mlir::Attribute cachePolicy, /*optional*/::mlir::ArrayAttr alias_scopes, /*optional*/::mlir::ArrayAttr noalias_scopes, /*optional*/::mlir::ArrayAttr tbaa); static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::Value ptr, ::mlir::Attribute cachePolicy, /*optional*/::mlir::ArrayAttr alias_scopes, /*optional*/::mlir::ArrayAttr noalias_scopes, /*optional*/::mlir::ArrayAttr tbaa); static GlobalPrefetchOp create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::Value ptr, ::mlir::Attribute cachePolicy, /*optional*/::mlir::ArrayAttr alias_scopes, /*optional*/::mlir::ArrayAttr noalias_scopes, /*optional*/::mlir::ArrayAttr tbaa); static GlobalPrefetchOp create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::Value ptr, ::mlir::Attribute cachePolicy, /*optional*/::mlir::ArrayAttr alias_scopes, /*optional*/::mlir::ArrayAttr noalias_scopes, /*optional*/::mlir::ArrayAttr tbaa); static void build(::mlir::OpBuilder &, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, ::llvm::ArrayRef<::mlir::NamedAttribute> attributes = {}); static GlobalPrefetchOp create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, ::llvm::ArrayRef<::mlir::NamedAttribute> attributes = {}); static GlobalPrefetchOp create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, ::llvm::ArrayRef<::mlir::NamedAttribute> attributes = {}); static void build(::mlir::OpBuilder &, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, const Properties &properties, ::llvm::ArrayRef<::mlir::NamedAttribute> discardableAttributes = {}); static GlobalPrefetchOp create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, const Properties &properties, ::llvm::ArrayRef<::mlir::NamedAttribute> discardableAttributes = {}); static GlobalPrefetchOp create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, const Properties &properties, ::llvm::ArrayRef<::mlir::NamedAttribute> discardableAttributes = {}); static void populateDefaultProperties(::mlir::OperationName opName, Properties &properties); ::llvm::LogicalResult verifyInvariantsImpl(); ::llvm::LogicalResult verifyInvariants(); ::llvm::SmallVector<::mlir::Value> getAccessedOperands(); static ::mlir::ParseResult parse(::mlir::OpAsmParser &parser, ::mlir::OperationState &result); void print(::mlir::OpAsmPrinter &_odsPrinter); void getEffects(::llvm::SmallVectorImpl<::mlir::SideEffects::EffectInstance<::mlir::MemoryEffects::Effect>> &effects); private: ::mlir::StringAttr getAttributeNameForIndex(unsigned index) { return getAttributeNameForIndex((*this)->getName(), index); } static ::mlir::StringAttr getAttributeNameForIndex(::mlir::OperationName name, unsigned index) { assert(index < 4 && "invalid attribute index"); assert(name.getStringRef() == getOperationName() && "invalid operation name"); assert(name.isRegistered() && "Operation isn't registered, missing a " "dependent dialect loading?"); return name.getAttributeNames()[index]; } public: }; } // namespace mlir::ROCDL MLIR_DECLARE_EXPLICIT_TYPE_ID(::mlir::ROCDL::GlobalPrefetchOp) MLIR_DECLARE_EXPLICIT_TYPE_ID(::mlir::ROCDL::detail::GlobalPrefetchOpGenericAdaptorBase::Properties) namespace mlir::ROCDL { //===----------------------------------------------------------------------===// // ::mlir::ROCDL::GlobalStoreAsyncFromLDSB128Op declarations //===----------------------------------------------------------------------===// namespace detail { class GlobalStoreAsyncFromLDSB128OpGenericAdaptorBase { public: struct Properties { using alias_scopesTy = ::mlir::ArrayAttr; alias_scopesTy alias_scopes; auto getAliasScopes() const { auto &propStorage = this->alias_scopes; return ::llvm::dyn_cast_or_null<::mlir::ArrayAttr>(propStorage); } void setAliasScopes(const ::mlir::ArrayAttr &propValue) { this->alias_scopes = propValue; } using auxTy = ::mlir::Attribute; auxTy aux; auto getAux() const { auto &propStorage = this->aux; return ::llvm::dyn_cast_or_null<::mlir::Attribute>(propStorage); } void setAux(const ::mlir::Attribute &propValue) { this->aux = propValue; } using noalias_scopesTy = ::mlir::ArrayAttr; noalias_scopesTy noalias_scopes; auto getNoaliasScopes() const { auto &propStorage = this->noalias_scopes; return ::llvm::dyn_cast_or_null<::mlir::ArrayAttr>(propStorage); } void setNoaliasScopes(const ::mlir::ArrayAttr &propValue) { this->noalias_scopes = propValue; } using offsetTy = ::mlir::IntegerAttr; offsetTy offset; auto getOffset() const { auto &propStorage = this->offset; return ::llvm::cast<::mlir::IntegerAttr>(propStorage); } void setOffset(const ::mlir::IntegerAttr &propValue) { this->offset = propValue; } using tbaaTy = ::mlir::ArrayAttr; tbaaTy tbaa; auto getTbaa() const { auto &propStorage = this->tbaa; return ::llvm::dyn_cast_or_null<::mlir::ArrayAttr>(propStorage); } void setTbaa(const ::mlir::ArrayAttr &propValue) { this->tbaa = propValue; } bool operator==(const Properties &rhs) const { return rhs.alias_scopes == this->alias_scopes && rhs.aux == this->aux && rhs.noalias_scopes == this->noalias_scopes && rhs.offset == this->offset && rhs.tbaa == this->tbaa && true; } bool operator!=(const Properties &rhs) const { return !(*this == rhs); } }; protected: ::mlir::DictionaryAttr odsAttrs; ::std::optional<::mlir::OperationName> odsOpName; Properties properties; ::mlir::RegionRange odsRegions; public: GlobalStoreAsyncFromLDSB128OpGenericAdaptorBase(::mlir::DictionaryAttr attrs, const Properties &properties, ::mlir::RegionRange regions = {}) : odsAttrs(attrs), properties(properties), odsRegions(regions) { if (odsAttrs) odsOpName.emplace("rocdl.global.store.async.from.lds.b128", odsAttrs.getContext()); } GlobalStoreAsyncFromLDSB128OpGenericAdaptorBase(GlobalStoreAsyncFromLDSB128Op op); std::pair getODSOperandIndexAndLength(unsigned index, unsigned odsOperandsSize) { return {index, 1}; } const Properties &getProperties() { return properties; } ::mlir::DictionaryAttr getAttributes() { return odsAttrs; } ::mlir::IntegerAttr getOffsetAttr() { auto attr = ::llvm::cast<::mlir::IntegerAttr>(getProperties().offset); return attr; } uint32_t getOffset(); ::mlir::Attribute getAuxAttr(); ::mlir::Attribute getAux(); ::mlir::ArrayAttr getAliasScopesAttr() { auto attr = ::llvm::dyn_cast_or_null<::mlir::ArrayAttr>(getProperties().alias_scopes); return attr; } ::std::optional< ::mlir::ArrayAttr > getAliasScopes(); ::mlir::ArrayAttr getNoaliasScopesAttr() { auto attr = ::llvm::dyn_cast_or_null<::mlir::ArrayAttr>(getProperties().noalias_scopes); return attr; } ::std::optional< ::mlir::ArrayAttr > getNoaliasScopes(); ::mlir::ArrayAttr getTbaaAttr() { auto attr = ::llvm::dyn_cast_or_null<::mlir::ArrayAttr>(getProperties().tbaa); return attr; } ::std::optional< ::mlir::ArrayAttr > getTbaa(); }; } // namespace detail template class GlobalStoreAsyncFromLDSB128OpGenericAdaptor : public detail::GlobalStoreAsyncFromLDSB128OpGenericAdaptorBase { using ValueT = ::llvm::detail::ValueOfRange; using Base = detail::GlobalStoreAsyncFromLDSB128OpGenericAdaptorBase; static constexpr int odsIndex_globalPtr = 0; static constexpr int odsIndex_ldsPtr = 1; public: GlobalStoreAsyncFromLDSB128OpGenericAdaptor(RangeT values, ::mlir::DictionaryAttr attrs, const Properties &properties, ::mlir::RegionRange regions = {}) : Base(attrs, properties, regions), odsOperands(values) {} GlobalStoreAsyncFromLDSB128OpGenericAdaptor(RangeT values, ::mlir::DictionaryAttr attrs, ::mlir::PropertyRef properties, ::mlir::RegionRange regions = {}) : GlobalStoreAsyncFromLDSB128OpGenericAdaptor(values, attrs, (properties ? *properties.as() : Properties{}), regions) {} GlobalStoreAsyncFromLDSB128OpGenericAdaptor(RangeT values, ::mlir::DictionaryAttr attrs = nullptr) : GlobalStoreAsyncFromLDSB128OpGenericAdaptor(values, attrs, Properties{}, {}) {} GlobalStoreAsyncFromLDSB128OpGenericAdaptor(RangeT values, const GlobalStoreAsyncFromLDSB128OpGenericAdaptorBase &base) : Base(base), odsOperands(values) {} template >> GlobalStoreAsyncFromLDSB128OpGenericAdaptor(RangeT values, LateInst op) : Base(op), odsOperands(values) {} std::pair getODSOperandIndexAndLength(unsigned index) { return Base::getODSOperandIndexAndLength(index, odsOperands.size()); } RangeT getODSOperands(unsigned index) { auto valueRange = getODSOperandIndexAndLength(index); return {std::next(odsOperands.begin(), valueRange.first), std::next(odsOperands.begin(), valueRange.first + valueRange.second)}; } ValueT getGlobalPtr() { return (*getODSOperands(0).begin()); } ValueT getLdsPtr() { return (*getODSOperands(1).begin()); } RangeT getOperands() { return odsOperands; } private: RangeT odsOperands; }; class GlobalStoreAsyncFromLDSB128OpAdaptor : public GlobalStoreAsyncFromLDSB128OpGenericAdaptor<::mlir::ValueRange> { public: using GlobalStoreAsyncFromLDSB128OpGenericAdaptor::GlobalStoreAsyncFromLDSB128OpGenericAdaptor; GlobalStoreAsyncFromLDSB128OpAdaptor(GlobalStoreAsyncFromLDSB128Op op); ::llvm::LogicalResult verify(::mlir::Location loc); }; class GlobalStoreAsyncFromLDSB128Op : public ::mlir::Op::Impl, ::mlir::OpTrait::OpInvariants, ::mlir::BytecodeOpInterface::Trait, ::mlir::LLVM::AliasAnalysisOpInterface::Trait, ::mlir::MemoryEffectOpInterface::Trait> { public: using Op::Op; using Op::print; using Adaptor = GlobalStoreAsyncFromLDSB128OpAdaptor; template using GenericAdaptor = GlobalStoreAsyncFromLDSB128OpGenericAdaptor; using FoldAdaptor = GenericAdaptor<::llvm::ArrayRef<::mlir::Attribute>>; static constexpr int odsIndex_globalPtr = 0; static constexpr int odsIndex_ldsPtr = 1; using Properties = FoldAdaptor::Properties; using ::mlir::LLVM::AliasAnalysisOpInterface::Trait::getAliasScopesOrNull; using ::mlir::LLVM::AliasAnalysisOpInterface::Trait::setAliasScopes; using ::mlir::LLVM::AliasAnalysisOpInterface::Trait::getNoAliasScopesOrNull; using ::mlir::LLVM::AliasAnalysisOpInterface::Trait::setNoAliasScopes; using ::mlir::LLVM::AliasAnalysisOpInterface::Trait::getTBAATagsOrNull; using ::mlir::LLVM::AliasAnalysisOpInterface::Trait::setTBAATags; static ::llvm::ArrayRef<::llvm::StringRef> getAttributeNames() { static ::llvm::StringRef attrNames[] = {::llvm::StringRef("alias_scopes"), ::llvm::StringRef("aux"), ::llvm::StringRef("noalias_scopes"), ::llvm::StringRef("offset"), ::llvm::StringRef("tbaa")}; return ::llvm::ArrayRef(attrNames); } ::mlir::StringAttr getAliasScopesAttrName() { return getAttributeNameForIndex(0); } static ::mlir::StringAttr getAliasScopesAttrName(::mlir::OperationName name) { return getAttributeNameForIndex(name, 0); } ::mlir::StringAttr getAuxAttrName() { return getAttributeNameForIndex(1); } static ::mlir::StringAttr getAuxAttrName(::mlir::OperationName name) { return getAttributeNameForIndex(name, 1); } ::mlir::StringAttr getNoaliasScopesAttrName() { return getAttributeNameForIndex(2); } static ::mlir::StringAttr getNoaliasScopesAttrName(::mlir::OperationName name) { return getAttributeNameForIndex(name, 2); } ::mlir::StringAttr getOffsetAttrName() { return getAttributeNameForIndex(3); } static ::mlir::StringAttr getOffsetAttrName(::mlir::OperationName name) { return getAttributeNameForIndex(name, 3); } ::mlir::StringAttr getTbaaAttrName() { return getAttributeNameForIndex(4); } static ::mlir::StringAttr getTbaaAttrName(::mlir::OperationName name) { return getAttributeNameForIndex(name, 4); } static constexpr ::llvm::StringLiteral getOperationName() { return ::llvm::StringLiteral("rocdl.global.store.async.from.lds.b128"); } std::pair getODSOperandIndexAndLength(unsigned index) { return {index, 1}; } ::mlir::Operation::operand_range getODSOperands(unsigned index) { auto valueRange = getODSOperandIndexAndLength(index); return {std::next(getOperation()->operand_begin(), valueRange.first), std::next(getOperation()->operand_begin(), valueRange.first + valueRange.second)}; } ::mlir::TypedValue<::mlir::LLVM::LLVMPointerType> getGlobalPtr() { return ::llvm::cast<::mlir::TypedValue<::mlir::LLVM::LLVMPointerType>>(*getODSOperands(0).begin()); } ::mlir::TypedValue<::mlir::LLVM::LLVMPointerType> getLdsPtr() { return ::llvm::cast<::mlir::TypedValue<::mlir::LLVM::LLVMPointerType>>(*getODSOperands(1).begin()); } ::mlir::OpOperand &getGlobalPtrMutable() { auto range = getODSOperandIndexAndLength(0); return getOperation()->getOpOperand(range.first); } ::mlir::OpOperand &getLdsPtrMutable() { auto range = getODSOperandIndexAndLength(1); return getOperation()->getOpOperand(range.first); } std::pair getODSResultIndexAndLength(unsigned index) { return {index, 1}; } ::mlir::Operation::result_range getODSResults(unsigned index) { auto valueRange = getODSResultIndexAndLength(index); return {std::next(getOperation()->result_begin(), valueRange.first), std::next(getOperation()->result_begin(), valueRange.first + valueRange.second)}; } static ::llvm::LogicalResult setPropertiesFromAttr(Properties &prop, ::mlir::Attribute attr, ::llvm::function_ref<::mlir::InFlightDiagnostic()> emitError); static ::mlir::Attribute getPropertiesAsAttr(::mlir::MLIRContext *ctx, const Properties &prop); static llvm::hash_code computePropertiesHash(const Properties &prop); static std::optional getInherentAttr(::mlir::MLIRContext *ctx, const Properties &prop, llvm::StringRef name); static void setInherentAttr(Properties &prop, llvm::StringRef name, mlir::Attribute value); static void populateInherentAttrs(::mlir::MLIRContext *ctx, const Properties &prop, ::mlir::NamedAttrList &attrs); static ::llvm::LogicalResult verifyInherentAttrs(::mlir::OperationName opName, ::mlir::NamedAttrList &attrs, llvm::function_ref<::mlir::InFlightDiagnostic()> emitError); static ::llvm::LogicalResult readProperties(::mlir::DialectBytecodeReader &reader, ::mlir::OperationState &state); void writeProperties(::mlir::DialectBytecodeWriter &writer); ::mlir::IntegerAttr getOffsetAttr() { return ::llvm::cast<::mlir::IntegerAttr>(getProperties().offset); } uint32_t getOffset(); ::mlir::Attribute getAuxAttr() { return ::llvm::dyn_cast_or_null<::mlir::Attribute>(getProperties().aux); } ::mlir::Attribute getAux(); ::mlir::ArrayAttr getAliasScopesAttr() { return ::llvm::dyn_cast_or_null<::mlir::ArrayAttr>(getProperties().alias_scopes); } ::std::optional< ::mlir::ArrayAttr > getAliasScopes(); ::mlir::ArrayAttr getNoaliasScopesAttr() { return ::llvm::dyn_cast_or_null<::mlir::ArrayAttr>(getProperties().noalias_scopes); } ::std::optional< ::mlir::ArrayAttr > getNoaliasScopes(); ::mlir::ArrayAttr getTbaaAttr() { return ::llvm::dyn_cast_or_null<::mlir::ArrayAttr>(getProperties().tbaa); } ::std::optional< ::mlir::ArrayAttr > getTbaa(); void setOffsetAttr(::mlir::IntegerAttr attr) { getProperties().offset = attr; } void setOffset(uint32_t attrValue); void setAuxAttr(::mlir::Attribute attr) { getProperties().aux = attr; } void setAliasScopesAttr(::mlir::ArrayAttr attr) { getProperties().alias_scopes = attr; } void setNoaliasScopesAttr(::mlir::ArrayAttr attr) { getProperties().noalias_scopes = attr; } void setTbaaAttr(::mlir::ArrayAttr attr) { getProperties().tbaa = attr; } ::mlir::Attribute removeAliasScopesAttr() { auto attr = getProperties().alias_scopes; getProperties().alias_scopes = {}; return attr; } ::mlir::Attribute removeNoaliasScopesAttr() { auto attr = getProperties().noalias_scopes; getProperties().noalias_scopes = {}; return attr; } ::mlir::Attribute removeTbaaAttr() { auto attr = getProperties().tbaa; getProperties().tbaa = {}; return attr; } static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::Value globalPtr, ::mlir::Value ldsPtr, ::mlir::IntegerAttr offset, ::mlir::Attribute aux, /*optional*/::mlir::ArrayAttr alias_scopes, /*optional*/::mlir::ArrayAttr noalias_scopes, /*optional*/::mlir::ArrayAttr tbaa); static GlobalStoreAsyncFromLDSB128Op create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::Value globalPtr, ::mlir::Value ldsPtr, ::mlir::IntegerAttr offset, ::mlir::Attribute aux, /*optional*/::mlir::ArrayAttr alias_scopes, /*optional*/::mlir::ArrayAttr noalias_scopes, /*optional*/::mlir::ArrayAttr tbaa); static GlobalStoreAsyncFromLDSB128Op create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::Value globalPtr, ::mlir::Value ldsPtr, ::mlir::IntegerAttr offset, ::mlir::Attribute aux, /*optional*/::mlir::ArrayAttr alias_scopes, /*optional*/::mlir::ArrayAttr noalias_scopes, /*optional*/::mlir::ArrayAttr tbaa); static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::Value globalPtr, ::mlir::Value ldsPtr, ::mlir::IntegerAttr offset, ::mlir::Attribute aux, /*optional*/::mlir::ArrayAttr alias_scopes, /*optional*/::mlir::ArrayAttr noalias_scopes, /*optional*/::mlir::ArrayAttr tbaa); static GlobalStoreAsyncFromLDSB128Op create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::Value globalPtr, ::mlir::Value ldsPtr, ::mlir::IntegerAttr offset, ::mlir::Attribute aux, /*optional*/::mlir::ArrayAttr alias_scopes, /*optional*/::mlir::ArrayAttr noalias_scopes, /*optional*/::mlir::ArrayAttr tbaa); static GlobalStoreAsyncFromLDSB128Op create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::Value globalPtr, ::mlir::Value ldsPtr, ::mlir::IntegerAttr offset, ::mlir::Attribute aux, /*optional*/::mlir::ArrayAttr alias_scopes, /*optional*/::mlir::ArrayAttr noalias_scopes, /*optional*/::mlir::ArrayAttr tbaa); static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::Value globalPtr, ::mlir::Value ldsPtr, uint32_t offset, ::mlir::Attribute aux, /*optional*/::mlir::ArrayAttr alias_scopes, /*optional*/::mlir::ArrayAttr noalias_scopes, /*optional*/::mlir::ArrayAttr tbaa); static GlobalStoreAsyncFromLDSB128Op create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::Value globalPtr, ::mlir::Value ldsPtr, uint32_t offset, ::mlir::Attribute aux, /*optional*/::mlir::ArrayAttr alias_scopes, /*optional*/::mlir::ArrayAttr noalias_scopes, /*optional*/::mlir::ArrayAttr tbaa); static GlobalStoreAsyncFromLDSB128Op create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::Value globalPtr, ::mlir::Value ldsPtr, uint32_t offset, ::mlir::Attribute aux, /*optional*/::mlir::ArrayAttr alias_scopes, /*optional*/::mlir::ArrayAttr noalias_scopes, /*optional*/::mlir::ArrayAttr tbaa); static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::Value globalPtr, ::mlir::Value ldsPtr, uint32_t offset, ::mlir::Attribute aux, /*optional*/::mlir::ArrayAttr alias_scopes, /*optional*/::mlir::ArrayAttr noalias_scopes, /*optional*/::mlir::ArrayAttr tbaa); static GlobalStoreAsyncFromLDSB128Op create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::Value globalPtr, ::mlir::Value ldsPtr, uint32_t offset, ::mlir::Attribute aux, /*optional*/::mlir::ArrayAttr alias_scopes, /*optional*/::mlir::ArrayAttr noalias_scopes, /*optional*/::mlir::ArrayAttr tbaa); static GlobalStoreAsyncFromLDSB128Op create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::Value globalPtr, ::mlir::Value ldsPtr, uint32_t offset, ::mlir::Attribute aux, /*optional*/::mlir::ArrayAttr alias_scopes, /*optional*/::mlir::ArrayAttr noalias_scopes, /*optional*/::mlir::ArrayAttr tbaa); static void build(::mlir::OpBuilder &, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, ::llvm::ArrayRef<::mlir::NamedAttribute> attributes = {}); static GlobalStoreAsyncFromLDSB128Op create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, ::llvm::ArrayRef<::mlir::NamedAttribute> attributes = {}); static GlobalStoreAsyncFromLDSB128Op create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, ::llvm::ArrayRef<::mlir::NamedAttribute> attributes = {}); static void build(::mlir::OpBuilder &, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, const Properties &properties, ::llvm::ArrayRef<::mlir::NamedAttribute> discardableAttributes = {}); static GlobalStoreAsyncFromLDSB128Op create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, const Properties &properties, ::llvm::ArrayRef<::mlir::NamedAttribute> discardableAttributes = {}); static GlobalStoreAsyncFromLDSB128Op create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, const Properties &properties, ::llvm::ArrayRef<::mlir::NamedAttribute> discardableAttributes = {}); static void populateDefaultProperties(::mlir::OperationName opName, Properties &properties); ::llvm::LogicalResult verifyInvariantsImpl(); ::llvm::LogicalResult verifyInvariants(); ::llvm::SmallVector<::mlir::Value> getAccessedOperands(); static ::mlir::ParseResult parse(::mlir::OpAsmParser &parser, ::mlir::OperationState &result); void print(::mlir::OpAsmPrinter &_odsPrinter); void getEffects(::llvm::SmallVectorImpl<::mlir::SideEffects::EffectInstance<::mlir::MemoryEffects::Effect>> &effects); private: ::mlir::StringAttr getAttributeNameForIndex(unsigned index) { return getAttributeNameForIndex((*this)->getName(), index); } static ::mlir::StringAttr getAttributeNameForIndex(::mlir::OperationName name, unsigned index) { assert(index < 5 && "invalid attribute index"); assert(name.getStringRef() == getOperationName() && "invalid operation name"); assert(name.isRegistered() && "Operation isn't registered, missing a " "dependent dialect loading?"); return name.getAttributeNames()[index]; } public: }; } // namespace mlir::ROCDL MLIR_DECLARE_EXPLICIT_TYPE_ID(::mlir::ROCDL::GlobalStoreAsyncFromLDSB128Op) MLIR_DECLARE_EXPLICIT_TYPE_ID(::mlir::ROCDL::detail::GlobalStoreAsyncFromLDSB128OpGenericAdaptorBase::Properties) namespace mlir::ROCDL { //===----------------------------------------------------------------------===// // ::mlir::ROCDL::GlobalStoreAsyncFromLDSB32Op declarations //===----------------------------------------------------------------------===// namespace detail { class GlobalStoreAsyncFromLDSB32OpGenericAdaptorBase { public: struct Properties { using alias_scopesTy = ::mlir::ArrayAttr; alias_scopesTy alias_scopes; auto getAliasScopes() const { auto &propStorage = this->alias_scopes; return ::llvm::dyn_cast_or_null<::mlir::ArrayAttr>(propStorage); } void setAliasScopes(const ::mlir::ArrayAttr &propValue) { this->alias_scopes = propValue; } using auxTy = ::mlir::Attribute; auxTy aux; auto getAux() const { auto &propStorage = this->aux; return ::llvm::dyn_cast_or_null<::mlir::Attribute>(propStorage); } void setAux(const ::mlir::Attribute &propValue) { this->aux = propValue; } using noalias_scopesTy = ::mlir::ArrayAttr; noalias_scopesTy noalias_scopes; auto getNoaliasScopes() const { auto &propStorage = this->noalias_scopes; return ::llvm::dyn_cast_or_null<::mlir::ArrayAttr>(propStorage); } void setNoaliasScopes(const ::mlir::ArrayAttr &propValue) { this->noalias_scopes = propValue; } using offsetTy = ::mlir::IntegerAttr; offsetTy offset; auto getOffset() const { auto &propStorage = this->offset; return ::llvm::cast<::mlir::IntegerAttr>(propStorage); } void setOffset(const ::mlir::IntegerAttr &propValue) { this->offset = propValue; } using tbaaTy = ::mlir::ArrayAttr; tbaaTy tbaa; auto getTbaa() const { auto &propStorage = this->tbaa; return ::llvm::dyn_cast_or_null<::mlir::ArrayAttr>(propStorage); } void setTbaa(const ::mlir::ArrayAttr &propValue) { this->tbaa = propValue; } bool operator==(const Properties &rhs) const { return rhs.alias_scopes == this->alias_scopes && rhs.aux == this->aux && rhs.noalias_scopes == this->noalias_scopes && rhs.offset == this->offset && rhs.tbaa == this->tbaa && true; } bool operator!=(const Properties &rhs) const { return !(*this == rhs); } }; protected: ::mlir::DictionaryAttr odsAttrs; ::std::optional<::mlir::OperationName> odsOpName; Properties properties; ::mlir::RegionRange odsRegions; public: GlobalStoreAsyncFromLDSB32OpGenericAdaptorBase(::mlir::DictionaryAttr attrs, const Properties &properties, ::mlir::RegionRange regions = {}) : odsAttrs(attrs), properties(properties), odsRegions(regions) { if (odsAttrs) odsOpName.emplace("rocdl.global.store.async.from.lds.b32", odsAttrs.getContext()); } GlobalStoreAsyncFromLDSB32OpGenericAdaptorBase(GlobalStoreAsyncFromLDSB32Op op); std::pair getODSOperandIndexAndLength(unsigned index, unsigned odsOperandsSize) { return {index, 1}; } const Properties &getProperties() { return properties; } ::mlir::DictionaryAttr getAttributes() { return odsAttrs; } ::mlir::IntegerAttr getOffsetAttr() { auto attr = ::llvm::cast<::mlir::IntegerAttr>(getProperties().offset); return attr; } uint32_t getOffset(); ::mlir::Attribute getAuxAttr(); ::mlir::Attribute getAux(); ::mlir::ArrayAttr getAliasScopesAttr() { auto attr = ::llvm::dyn_cast_or_null<::mlir::ArrayAttr>(getProperties().alias_scopes); return attr; } ::std::optional< ::mlir::ArrayAttr > getAliasScopes(); ::mlir::ArrayAttr getNoaliasScopesAttr() { auto attr = ::llvm::dyn_cast_or_null<::mlir::ArrayAttr>(getProperties().noalias_scopes); return attr; } ::std::optional< ::mlir::ArrayAttr > getNoaliasScopes(); ::mlir::ArrayAttr getTbaaAttr() { auto attr = ::llvm::dyn_cast_or_null<::mlir::ArrayAttr>(getProperties().tbaa); return attr; } ::std::optional< ::mlir::ArrayAttr > getTbaa(); }; } // namespace detail template class GlobalStoreAsyncFromLDSB32OpGenericAdaptor : public detail::GlobalStoreAsyncFromLDSB32OpGenericAdaptorBase { using ValueT = ::llvm::detail::ValueOfRange; using Base = detail::GlobalStoreAsyncFromLDSB32OpGenericAdaptorBase; static constexpr int odsIndex_globalPtr = 0; static constexpr int odsIndex_ldsPtr = 1; public: GlobalStoreAsyncFromLDSB32OpGenericAdaptor(RangeT values, ::mlir::DictionaryAttr attrs, const Properties &properties, ::mlir::RegionRange regions = {}) : Base(attrs, properties, regions), odsOperands(values) {} GlobalStoreAsyncFromLDSB32OpGenericAdaptor(RangeT values, ::mlir::DictionaryAttr attrs, ::mlir::PropertyRef properties, ::mlir::RegionRange regions = {}) : GlobalStoreAsyncFromLDSB32OpGenericAdaptor(values, attrs, (properties ? *properties.as() : Properties{}), regions) {} GlobalStoreAsyncFromLDSB32OpGenericAdaptor(RangeT values, ::mlir::DictionaryAttr attrs = nullptr) : GlobalStoreAsyncFromLDSB32OpGenericAdaptor(values, attrs, Properties{}, {}) {} GlobalStoreAsyncFromLDSB32OpGenericAdaptor(RangeT values, const GlobalStoreAsyncFromLDSB32OpGenericAdaptorBase &base) : Base(base), odsOperands(values) {} template >> GlobalStoreAsyncFromLDSB32OpGenericAdaptor(RangeT values, LateInst op) : Base(op), odsOperands(values) {} std::pair getODSOperandIndexAndLength(unsigned index) { return Base::getODSOperandIndexAndLength(index, odsOperands.size()); } RangeT getODSOperands(unsigned index) { auto valueRange = getODSOperandIndexAndLength(index); return {std::next(odsOperands.begin(), valueRange.first), std::next(odsOperands.begin(), valueRange.first + valueRange.second)}; } ValueT getGlobalPtr() { return (*getODSOperands(0).begin()); } ValueT getLdsPtr() { return (*getODSOperands(1).begin()); } RangeT getOperands() { return odsOperands; } private: RangeT odsOperands; }; class GlobalStoreAsyncFromLDSB32OpAdaptor : public GlobalStoreAsyncFromLDSB32OpGenericAdaptor<::mlir::ValueRange> { public: using GlobalStoreAsyncFromLDSB32OpGenericAdaptor::GlobalStoreAsyncFromLDSB32OpGenericAdaptor; GlobalStoreAsyncFromLDSB32OpAdaptor(GlobalStoreAsyncFromLDSB32Op op); ::llvm::LogicalResult verify(::mlir::Location loc); }; class GlobalStoreAsyncFromLDSB32Op : public ::mlir::Op::Impl, ::mlir::OpTrait::OpInvariants, ::mlir::BytecodeOpInterface::Trait, ::mlir::LLVM::AliasAnalysisOpInterface::Trait, ::mlir::MemoryEffectOpInterface::Trait> { public: using Op::Op; using Op::print; using Adaptor = GlobalStoreAsyncFromLDSB32OpAdaptor; template using GenericAdaptor = GlobalStoreAsyncFromLDSB32OpGenericAdaptor; using FoldAdaptor = GenericAdaptor<::llvm::ArrayRef<::mlir::Attribute>>; static constexpr int odsIndex_globalPtr = 0; static constexpr int odsIndex_ldsPtr = 1; using Properties = FoldAdaptor::Properties; using ::mlir::LLVM::AliasAnalysisOpInterface::Trait::getAliasScopesOrNull; using ::mlir::LLVM::AliasAnalysisOpInterface::Trait::setAliasScopes; using ::mlir::LLVM::AliasAnalysisOpInterface::Trait::getNoAliasScopesOrNull; using ::mlir::LLVM::AliasAnalysisOpInterface::Trait::setNoAliasScopes; using ::mlir::LLVM::AliasAnalysisOpInterface::Trait::getTBAATagsOrNull; using ::mlir::LLVM::AliasAnalysisOpInterface::Trait::setTBAATags; static ::llvm::ArrayRef<::llvm::StringRef> getAttributeNames() { static ::llvm::StringRef attrNames[] = {::llvm::StringRef("alias_scopes"), ::llvm::StringRef("aux"), ::llvm::StringRef("noalias_scopes"), ::llvm::StringRef("offset"), ::llvm::StringRef("tbaa")}; return ::llvm::ArrayRef(attrNames); } ::mlir::StringAttr getAliasScopesAttrName() { return getAttributeNameForIndex(0); } static ::mlir::StringAttr getAliasScopesAttrName(::mlir::OperationName name) { return getAttributeNameForIndex(name, 0); } ::mlir::StringAttr getAuxAttrName() { return getAttributeNameForIndex(1); } static ::mlir::StringAttr getAuxAttrName(::mlir::OperationName name) { return getAttributeNameForIndex(name, 1); } ::mlir::StringAttr getNoaliasScopesAttrName() { return getAttributeNameForIndex(2); } static ::mlir::StringAttr getNoaliasScopesAttrName(::mlir::OperationName name) { return getAttributeNameForIndex(name, 2); } ::mlir::StringAttr getOffsetAttrName() { return getAttributeNameForIndex(3); } static ::mlir::StringAttr getOffsetAttrName(::mlir::OperationName name) { return getAttributeNameForIndex(name, 3); } ::mlir::StringAttr getTbaaAttrName() { return getAttributeNameForIndex(4); } static ::mlir::StringAttr getTbaaAttrName(::mlir::OperationName name) { return getAttributeNameForIndex(name, 4); } static constexpr ::llvm::StringLiteral getOperationName() { return ::llvm::StringLiteral("rocdl.global.store.async.from.lds.b32"); } std::pair getODSOperandIndexAndLength(unsigned index) { return {index, 1}; } ::mlir::Operation::operand_range getODSOperands(unsigned index) { auto valueRange = getODSOperandIndexAndLength(index); return {std::next(getOperation()->operand_begin(), valueRange.first), std::next(getOperation()->operand_begin(), valueRange.first + valueRange.second)}; } ::mlir::TypedValue<::mlir::LLVM::LLVMPointerType> getGlobalPtr() { return ::llvm::cast<::mlir::TypedValue<::mlir::LLVM::LLVMPointerType>>(*getODSOperands(0).begin()); } ::mlir::TypedValue<::mlir::LLVM::LLVMPointerType> getLdsPtr() { return ::llvm::cast<::mlir::TypedValue<::mlir::LLVM::LLVMPointerType>>(*getODSOperands(1).begin()); } ::mlir::OpOperand &getGlobalPtrMutable() { auto range = getODSOperandIndexAndLength(0); return getOperation()->getOpOperand(range.first); } ::mlir::OpOperand &getLdsPtrMutable() { auto range = getODSOperandIndexAndLength(1); return getOperation()->getOpOperand(range.first); } std::pair getODSResultIndexAndLength(unsigned index) { return {index, 1}; } ::mlir::Operation::result_range getODSResults(unsigned index) { auto valueRange = getODSResultIndexAndLength(index); return {std::next(getOperation()->result_begin(), valueRange.first), std::next(getOperation()->result_begin(), valueRange.first + valueRange.second)}; } static ::llvm::LogicalResult setPropertiesFromAttr(Properties &prop, ::mlir::Attribute attr, ::llvm::function_ref<::mlir::InFlightDiagnostic()> emitError); static ::mlir::Attribute getPropertiesAsAttr(::mlir::MLIRContext *ctx, const Properties &prop); static llvm::hash_code computePropertiesHash(const Properties &prop); static std::optional getInherentAttr(::mlir::MLIRContext *ctx, const Properties &prop, llvm::StringRef name); static void setInherentAttr(Properties &prop, llvm::StringRef name, mlir::Attribute value); static void populateInherentAttrs(::mlir::MLIRContext *ctx, const Properties &prop, ::mlir::NamedAttrList &attrs); static ::llvm::LogicalResult verifyInherentAttrs(::mlir::OperationName opName, ::mlir::NamedAttrList &attrs, llvm::function_ref<::mlir::InFlightDiagnostic()> emitError); static ::llvm::LogicalResult readProperties(::mlir::DialectBytecodeReader &reader, ::mlir::OperationState &state); void writeProperties(::mlir::DialectBytecodeWriter &writer); ::mlir::IntegerAttr getOffsetAttr() { return ::llvm::cast<::mlir::IntegerAttr>(getProperties().offset); } uint32_t getOffset(); ::mlir::Attribute getAuxAttr() { return ::llvm::dyn_cast_or_null<::mlir::Attribute>(getProperties().aux); } ::mlir::Attribute getAux(); ::mlir::ArrayAttr getAliasScopesAttr() { return ::llvm::dyn_cast_or_null<::mlir::ArrayAttr>(getProperties().alias_scopes); } ::std::optional< ::mlir::ArrayAttr > getAliasScopes(); ::mlir::ArrayAttr getNoaliasScopesAttr() { return ::llvm::dyn_cast_or_null<::mlir::ArrayAttr>(getProperties().noalias_scopes); } ::std::optional< ::mlir::ArrayAttr > getNoaliasScopes(); ::mlir::ArrayAttr getTbaaAttr() { return ::llvm::dyn_cast_or_null<::mlir::ArrayAttr>(getProperties().tbaa); } ::std::optional< ::mlir::ArrayAttr > getTbaa(); void setOffsetAttr(::mlir::IntegerAttr attr) { getProperties().offset = attr; } void setOffset(uint32_t attrValue); void setAuxAttr(::mlir::Attribute attr) { getProperties().aux = attr; } void setAliasScopesAttr(::mlir::ArrayAttr attr) { getProperties().alias_scopes = attr; } void setNoaliasScopesAttr(::mlir::ArrayAttr attr) { getProperties().noalias_scopes = attr; } void setTbaaAttr(::mlir::ArrayAttr attr) { getProperties().tbaa = attr; } ::mlir::Attribute removeAliasScopesAttr() { auto attr = getProperties().alias_scopes; getProperties().alias_scopes = {}; return attr; } ::mlir::Attribute removeNoaliasScopesAttr() { auto attr = getProperties().noalias_scopes; getProperties().noalias_scopes = {}; return attr; } ::mlir::Attribute removeTbaaAttr() { auto attr = getProperties().tbaa; getProperties().tbaa = {}; return attr; } static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::Value globalPtr, ::mlir::Value ldsPtr, ::mlir::IntegerAttr offset, ::mlir::Attribute aux, /*optional*/::mlir::ArrayAttr alias_scopes, /*optional*/::mlir::ArrayAttr noalias_scopes, /*optional*/::mlir::ArrayAttr tbaa); static GlobalStoreAsyncFromLDSB32Op create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::Value globalPtr, ::mlir::Value ldsPtr, ::mlir::IntegerAttr offset, ::mlir::Attribute aux, /*optional*/::mlir::ArrayAttr alias_scopes, /*optional*/::mlir::ArrayAttr noalias_scopes, /*optional*/::mlir::ArrayAttr tbaa); static GlobalStoreAsyncFromLDSB32Op create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::Value globalPtr, ::mlir::Value ldsPtr, ::mlir::IntegerAttr offset, ::mlir::Attribute aux, /*optional*/::mlir::ArrayAttr alias_scopes, /*optional*/::mlir::ArrayAttr noalias_scopes, /*optional*/::mlir::ArrayAttr tbaa); static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::Value globalPtr, ::mlir::Value ldsPtr, ::mlir::IntegerAttr offset, ::mlir::Attribute aux, /*optional*/::mlir::ArrayAttr alias_scopes, /*optional*/::mlir::ArrayAttr noalias_scopes, /*optional*/::mlir::ArrayAttr tbaa); static GlobalStoreAsyncFromLDSB32Op create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::Value globalPtr, ::mlir::Value ldsPtr, ::mlir::IntegerAttr offset, ::mlir::Attribute aux, /*optional*/::mlir::ArrayAttr alias_scopes, /*optional*/::mlir::ArrayAttr noalias_scopes, /*optional*/::mlir::ArrayAttr tbaa); static GlobalStoreAsyncFromLDSB32Op create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::Value globalPtr, ::mlir::Value ldsPtr, ::mlir::IntegerAttr offset, ::mlir::Attribute aux, /*optional*/::mlir::ArrayAttr alias_scopes, /*optional*/::mlir::ArrayAttr noalias_scopes, /*optional*/::mlir::ArrayAttr tbaa); static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::Value globalPtr, ::mlir::Value ldsPtr, uint32_t offset, ::mlir::Attribute aux, /*optional*/::mlir::ArrayAttr alias_scopes, /*optional*/::mlir::ArrayAttr noalias_scopes, /*optional*/::mlir::ArrayAttr tbaa); static GlobalStoreAsyncFromLDSB32Op create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::Value globalPtr, ::mlir::Value ldsPtr, uint32_t offset, ::mlir::Attribute aux, /*optional*/::mlir::ArrayAttr alias_scopes, /*optional*/::mlir::ArrayAttr noalias_scopes, /*optional*/::mlir::ArrayAttr tbaa); static GlobalStoreAsyncFromLDSB32Op create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::Value globalPtr, ::mlir::Value ldsPtr, uint32_t offset, ::mlir::Attribute aux, /*optional*/::mlir::ArrayAttr alias_scopes, /*optional*/::mlir::ArrayAttr noalias_scopes, /*optional*/::mlir::ArrayAttr tbaa); static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::Value globalPtr, ::mlir::Value ldsPtr, uint32_t offset, ::mlir::Attribute aux, /*optional*/::mlir::ArrayAttr alias_scopes, /*optional*/::mlir::ArrayAttr noalias_scopes, /*optional*/::mlir::ArrayAttr tbaa); static GlobalStoreAsyncFromLDSB32Op create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::Value globalPtr, ::mlir::Value ldsPtr, uint32_t offset, ::mlir::Attribute aux, /*optional*/::mlir::ArrayAttr alias_scopes, /*optional*/::mlir::ArrayAttr noalias_scopes, /*optional*/::mlir::ArrayAttr tbaa); static GlobalStoreAsyncFromLDSB32Op create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::Value globalPtr, ::mlir::Value ldsPtr, uint32_t offset, ::mlir::Attribute aux, /*optional*/::mlir::ArrayAttr alias_scopes, /*optional*/::mlir::ArrayAttr noalias_scopes, /*optional*/::mlir::ArrayAttr tbaa); static void build(::mlir::OpBuilder &, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, ::llvm::ArrayRef<::mlir::NamedAttribute> attributes = {}); static GlobalStoreAsyncFromLDSB32Op create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, ::llvm::ArrayRef<::mlir::NamedAttribute> attributes = {}); static GlobalStoreAsyncFromLDSB32Op create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, ::llvm::ArrayRef<::mlir::NamedAttribute> attributes = {}); static void build(::mlir::OpBuilder &, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, const Properties &properties, ::llvm::ArrayRef<::mlir::NamedAttribute> discardableAttributes = {}); static GlobalStoreAsyncFromLDSB32Op create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, const Properties &properties, ::llvm::ArrayRef<::mlir::NamedAttribute> discardableAttributes = {}); static GlobalStoreAsyncFromLDSB32Op create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, const Properties &properties, ::llvm::ArrayRef<::mlir::NamedAttribute> discardableAttributes = {}); static void populateDefaultProperties(::mlir::OperationName opName, Properties &properties); ::llvm::LogicalResult verifyInvariantsImpl(); ::llvm::LogicalResult verifyInvariants(); ::llvm::SmallVector<::mlir::Value> getAccessedOperands(); static ::mlir::ParseResult parse(::mlir::OpAsmParser &parser, ::mlir::OperationState &result); void print(::mlir::OpAsmPrinter &_odsPrinter); void getEffects(::llvm::SmallVectorImpl<::mlir::SideEffects::EffectInstance<::mlir::MemoryEffects::Effect>> &effects); private: ::mlir::StringAttr getAttributeNameForIndex(unsigned index) { return getAttributeNameForIndex((*this)->getName(), index); } static ::mlir::StringAttr getAttributeNameForIndex(::mlir::OperationName name, unsigned index) { assert(index < 5 && "invalid attribute index"); assert(name.getStringRef() == getOperationName() && "invalid operation name"); assert(name.isRegistered() && "Operation isn't registered, missing a " "dependent dialect loading?"); return name.getAttributeNames()[index]; } public: }; } // namespace mlir::ROCDL MLIR_DECLARE_EXPLICIT_TYPE_ID(::mlir::ROCDL::GlobalStoreAsyncFromLDSB32Op) MLIR_DECLARE_EXPLICIT_TYPE_ID(::mlir::ROCDL::detail::GlobalStoreAsyncFromLDSB32OpGenericAdaptorBase::Properties) namespace mlir::ROCDL { //===----------------------------------------------------------------------===// // ::mlir::ROCDL::GlobalStoreAsyncFromLDSB64Op declarations //===----------------------------------------------------------------------===// namespace detail { class GlobalStoreAsyncFromLDSB64OpGenericAdaptorBase { public: struct Properties { using alias_scopesTy = ::mlir::ArrayAttr; alias_scopesTy alias_scopes; auto getAliasScopes() const { auto &propStorage = this->alias_scopes; return ::llvm::dyn_cast_or_null<::mlir::ArrayAttr>(propStorage); } void setAliasScopes(const ::mlir::ArrayAttr &propValue) { this->alias_scopes = propValue; } using auxTy = ::mlir::Attribute; auxTy aux; auto getAux() const { auto &propStorage = this->aux; return ::llvm::dyn_cast_or_null<::mlir::Attribute>(propStorage); } void setAux(const ::mlir::Attribute &propValue) { this->aux = propValue; } using noalias_scopesTy = ::mlir::ArrayAttr; noalias_scopesTy noalias_scopes; auto getNoaliasScopes() const { auto &propStorage = this->noalias_scopes; return ::llvm::dyn_cast_or_null<::mlir::ArrayAttr>(propStorage); } void setNoaliasScopes(const ::mlir::ArrayAttr &propValue) { this->noalias_scopes = propValue; } using offsetTy = ::mlir::IntegerAttr; offsetTy offset; auto getOffset() const { auto &propStorage = this->offset; return ::llvm::cast<::mlir::IntegerAttr>(propStorage); } void setOffset(const ::mlir::IntegerAttr &propValue) { this->offset = propValue; } using tbaaTy = ::mlir::ArrayAttr; tbaaTy tbaa; auto getTbaa() const { auto &propStorage = this->tbaa; return ::llvm::dyn_cast_or_null<::mlir::ArrayAttr>(propStorage); } void setTbaa(const ::mlir::ArrayAttr &propValue) { this->tbaa = propValue; } bool operator==(const Properties &rhs) const { return rhs.alias_scopes == this->alias_scopes && rhs.aux == this->aux && rhs.noalias_scopes == this->noalias_scopes && rhs.offset == this->offset && rhs.tbaa == this->tbaa && true; } bool operator!=(const Properties &rhs) const { return !(*this == rhs); } }; protected: ::mlir::DictionaryAttr odsAttrs; ::std::optional<::mlir::OperationName> odsOpName; Properties properties; ::mlir::RegionRange odsRegions; public: GlobalStoreAsyncFromLDSB64OpGenericAdaptorBase(::mlir::DictionaryAttr attrs, const Properties &properties, ::mlir::RegionRange regions = {}) : odsAttrs(attrs), properties(properties), odsRegions(regions) { if (odsAttrs) odsOpName.emplace("rocdl.global.store.async.from.lds.b64", odsAttrs.getContext()); } GlobalStoreAsyncFromLDSB64OpGenericAdaptorBase(GlobalStoreAsyncFromLDSB64Op op); std::pair getODSOperandIndexAndLength(unsigned index, unsigned odsOperandsSize) { return {index, 1}; } const Properties &getProperties() { return properties; } ::mlir::DictionaryAttr getAttributes() { return odsAttrs; } ::mlir::IntegerAttr getOffsetAttr() { auto attr = ::llvm::cast<::mlir::IntegerAttr>(getProperties().offset); return attr; } uint32_t getOffset(); ::mlir::Attribute getAuxAttr(); ::mlir::Attribute getAux(); ::mlir::ArrayAttr getAliasScopesAttr() { auto attr = ::llvm::dyn_cast_or_null<::mlir::ArrayAttr>(getProperties().alias_scopes); return attr; } ::std::optional< ::mlir::ArrayAttr > getAliasScopes(); ::mlir::ArrayAttr getNoaliasScopesAttr() { auto attr = ::llvm::dyn_cast_or_null<::mlir::ArrayAttr>(getProperties().noalias_scopes); return attr; } ::std::optional< ::mlir::ArrayAttr > getNoaliasScopes(); ::mlir::ArrayAttr getTbaaAttr() { auto attr = ::llvm::dyn_cast_or_null<::mlir::ArrayAttr>(getProperties().tbaa); return attr; } ::std::optional< ::mlir::ArrayAttr > getTbaa(); }; } // namespace detail template class GlobalStoreAsyncFromLDSB64OpGenericAdaptor : public detail::GlobalStoreAsyncFromLDSB64OpGenericAdaptorBase { using ValueT = ::llvm::detail::ValueOfRange; using Base = detail::GlobalStoreAsyncFromLDSB64OpGenericAdaptorBase; static constexpr int odsIndex_globalPtr = 0; static constexpr int odsIndex_ldsPtr = 1; public: GlobalStoreAsyncFromLDSB64OpGenericAdaptor(RangeT values, ::mlir::DictionaryAttr attrs, const Properties &properties, ::mlir::RegionRange regions = {}) : Base(attrs, properties, regions), odsOperands(values) {} GlobalStoreAsyncFromLDSB64OpGenericAdaptor(RangeT values, ::mlir::DictionaryAttr attrs, ::mlir::PropertyRef properties, ::mlir::RegionRange regions = {}) : GlobalStoreAsyncFromLDSB64OpGenericAdaptor(values, attrs, (properties ? *properties.as() : Properties{}), regions) {} GlobalStoreAsyncFromLDSB64OpGenericAdaptor(RangeT values, ::mlir::DictionaryAttr attrs = nullptr) : GlobalStoreAsyncFromLDSB64OpGenericAdaptor(values, attrs, Properties{}, {}) {} GlobalStoreAsyncFromLDSB64OpGenericAdaptor(RangeT values, const GlobalStoreAsyncFromLDSB64OpGenericAdaptorBase &base) : Base(base), odsOperands(values) {} template >> GlobalStoreAsyncFromLDSB64OpGenericAdaptor(RangeT values, LateInst op) : Base(op), odsOperands(values) {} std::pair getODSOperandIndexAndLength(unsigned index) { return Base::getODSOperandIndexAndLength(index, odsOperands.size()); } RangeT getODSOperands(unsigned index) { auto valueRange = getODSOperandIndexAndLength(index); return {std::next(odsOperands.begin(), valueRange.first), std::next(odsOperands.begin(), valueRange.first + valueRange.second)}; } ValueT getGlobalPtr() { return (*getODSOperands(0).begin()); } ValueT getLdsPtr() { return (*getODSOperands(1).begin()); } RangeT getOperands() { return odsOperands; } private: RangeT odsOperands; }; class GlobalStoreAsyncFromLDSB64OpAdaptor : public GlobalStoreAsyncFromLDSB64OpGenericAdaptor<::mlir::ValueRange> { public: using GlobalStoreAsyncFromLDSB64OpGenericAdaptor::GlobalStoreAsyncFromLDSB64OpGenericAdaptor; GlobalStoreAsyncFromLDSB64OpAdaptor(GlobalStoreAsyncFromLDSB64Op op); ::llvm::LogicalResult verify(::mlir::Location loc); }; class GlobalStoreAsyncFromLDSB64Op : public ::mlir::Op::Impl, ::mlir::OpTrait::OpInvariants, ::mlir::BytecodeOpInterface::Trait, ::mlir::LLVM::AliasAnalysisOpInterface::Trait, ::mlir::MemoryEffectOpInterface::Trait> { public: using Op::Op; using Op::print; using Adaptor = GlobalStoreAsyncFromLDSB64OpAdaptor; template using GenericAdaptor = GlobalStoreAsyncFromLDSB64OpGenericAdaptor; using FoldAdaptor = GenericAdaptor<::llvm::ArrayRef<::mlir::Attribute>>; static constexpr int odsIndex_globalPtr = 0; static constexpr int odsIndex_ldsPtr = 1; using Properties = FoldAdaptor::Properties; using ::mlir::LLVM::AliasAnalysisOpInterface::Trait::getAliasScopesOrNull; using ::mlir::LLVM::AliasAnalysisOpInterface::Trait::setAliasScopes; using ::mlir::LLVM::AliasAnalysisOpInterface::Trait::getNoAliasScopesOrNull; using ::mlir::LLVM::AliasAnalysisOpInterface::Trait::setNoAliasScopes; using ::mlir::LLVM::AliasAnalysisOpInterface::Trait::getTBAATagsOrNull; using ::mlir::LLVM::AliasAnalysisOpInterface::Trait::setTBAATags; static ::llvm::ArrayRef<::llvm::StringRef> getAttributeNames() { static ::llvm::StringRef attrNames[] = {::llvm::StringRef("alias_scopes"), ::llvm::StringRef("aux"), ::llvm::StringRef("noalias_scopes"), ::llvm::StringRef("offset"), ::llvm::StringRef("tbaa")}; return ::llvm::ArrayRef(attrNames); } ::mlir::StringAttr getAliasScopesAttrName() { return getAttributeNameForIndex(0); } static ::mlir::StringAttr getAliasScopesAttrName(::mlir::OperationName name) { return getAttributeNameForIndex(name, 0); } ::mlir::StringAttr getAuxAttrName() { return getAttributeNameForIndex(1); } static ::mlir::StringAttr getAuxAttrName(::mlir::OperationName name) { return getAttributeNameForIndex(name, 1); } ::mlir::StringAttr getNoaliasScopesAttrName() { return getAttributeNameForIndex(2); } static ::mlir::StringAttr getNoaliasScopesAttrName(::mlir::OperationName name) { return getAttributeNameForIndex(name, 2); } ::mlir::StringAttr getOffsetAttrName() { return getAttributeNameForIndex(3); } static ::mlir::StringAttr getOffsetAttrName(::mlir::OperationName name) { return getAttributeNameForIndex(name, 3); } ::mlir::StringAttr getTbaaAttrName() { return getAttributeNameForIndex(4); } static ::mlir::StringAttr getTbaaAttrName(::mlir::OperationName name) { return getAttributeNameForIndex(name, 4); } static constexpr ::llvm::StringLiteral getOperationName() { return ::llvm::StringLiteral("rocdl.global.store.async.from.lds.b64"); } std::pair getODSOperandIndexAndLength(unsigned index) { return {index, 1}; } ::mlir::Operation::operand_range getODSOperands(unsigned index) { auto valueRange = getODSOperandIndexAndLength(index); return {std::next(getOperation()->operand_begin(), valueRange.first), std::next(getOperation()->operand_begin(), valueRange.first + valueRange.second)}; } ::mlir::TypedValue<::mlir::LLVM::LLVMPointerType> getGlobalPtr() { return ::llvm::cast<::mlir::TypedValue<::mlir::LLVM::LLVMPointerType>>(*getODSOperands(0).begin()); } ::mlir::TypedValue<::mlir::LLVM::LLVMPointerType> getLdsPtr() { return ::llvm::cast<::mlir::TypedValue<::mlir::LLVM::LLVMPointerType>>(*getODSOperands(1).begin()); } ::mlir::OpOperand &getGlobalPtrMutable() { auto range = getODSOperandIndexAndLength(0); return getOperation()->getOpOperand(range.first); } ::mlir::OpOperand &getLdsPtrMutable() { auto range = getODSOperandIndexAndLength(1); return getOperation()->getOpOperand(range.first); } std::pair getODSResultIndexAndLength(unsigned index) { return {index, 1}; } ::mlir::Operation::result_range getODSResults(unsigned index) { auto valueRange = getODSResultIndexAndLength(index); return {std::next(getOperation()->result_begin(), valueRange.first), std::next(getOperation()->result_begin(), valueRange.first + valueRange.second)}; } static ::llvm::LogicalResult setPropertiesFromAttr(Properties &prop, ::mlir::Attribute attr, ::llvm::function_ref<::mlir::InFlightDiagnostic()> emitError); static ::mlir::Attribute getPropertiesAsAttr(::mlir::MLIRContext *ctx, const Properties &prop); static llvm::hash_code computePropertiesHash(const Properties &prop); static std::optional getInherentAttr(::mlir::MLIRContext *ctx, const Properties &prop, llvm::StringRef name); static void setInherentAttr(Properties &prop, llvm::StringRef name, mlir::Attribute value); static void populateInherentAttrs(::mlir::MLIRContext *ctx, const Properties &prop, ::mlir::NamedAttrList &attrs); static ::llvm::LogicalResult verifyInherentAttrs(::mlir::OperationName opName, ::mlir::NamedAttrList &attrs, llvm::function_ref<::mlir::InFlightDiagnostic()> emitError); static ::llvm::LogicalResult readProperties(::mlir::DialectBytecodeReader &reader, ::mlir::OperationState &state); void writeProperties(::mlir::DialectBytecodeWriter &writer); ::mlir::IntegerAttr getOffsetAttr() { return ::llvm::cast<::mlir::IntegerAttr>(getProperties().offset); } uint32_t getOffset(); ::mlir::Attribute getAuxAttr() { return ::llvm::dyn_cast_or_null<::mlir::Attribute>(getProperties().aux); } ::mlir::Attribute getAux(); ::mlir::ArrayAttr getAliasScopesAttr() { return ::llvm::dyn_cast_or_null<::mlir::ArrayAttr>(getProperties().alias_scopes); } ::std::optional< ::mlir::ArrayAttr > getAliasScopes(); ::mlir::ArrayAttr getNoaliasScopesAttr() { return ::llvm::dyn_cast_or_null<::mlir::ArrayAttr>(getProperties().noalias_scopes); } ::std::optional< ::mlir::ArrayAttr > getNoaliasScopes(); ::mlir::ArrayAttr getTbaaAttr() { return ::llvm::dyn_cast_or_null<::mlir::ArrayAttr>(getProperties().tbaa); } ::std::optional< ::mlir::ArrayAttr > getTbaa(); void setOffsetAttr(::mlir::IntegerAttr attr) { getProperties().offset = attr; } void setOffset(uint32_t attrValue); void setAuxAttr(::mlir::Attribute attr) { getProperties().aux = attr; } void setAliasScopesAttr(::mlir::ArrayAttr attr) { getProperties().alias_scopes = attr; } void setNoaliasScopesAttr(::mlir::ArrayAttr attr) { getProperties().noalias_scopes = attr; } void setTbaaAttr(::mlir::ArrayAttr attr) { getProperties().tbaa = attr; } ::mlir::Attribute removeAliasScopesAttr() { auto attr = getProperties().alias_scopes; getProperties().alias_scopes = {}; return attr; } ::mlir::Attribute removeNoaliasScopesAttr() { auto attr = getProperties().noalias_scopes; getProperties().noalias_scopes = {}; return attr; } ::mlir::Attribute removeTbaaAttr() { auto attr = getProperties().tbaa; getProperties().tbaa = {}; return attr; } static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::Value globalPtr, ::mlir::Value ldsPtr, ::mlir::IntegerAttr offset, ::mlir::Attribute aux, /*optional*/::mlir::ArrayAttr alias_scopes, /*optional*/::mlir::ArrayAttr noalias_scopes, /*optional*/::mlir::ArrayAttr tbaa); static GlobalStoreAsyncFromLDSB64Op create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::Value globalPtr, ::mlir::Value ldsPtr, ::mlir::IntegerAttr offset, ::mlir::Attribute aux, /*optional*/::mlir::ArrayAttr alias_scopes, /*optional*/::mlir::ArrayAttr noalias_scopes, /*optional*/::mlir::ArrayAttr tbaa); static GlobalStoreAsyncFromLDSB64Op create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::Value globalPtr, ::mlir::Value ldsPtr, ::mlir::IntegerAttr offset, ::mlir::Attribute aux, /*optional*/::mlir::ArrayAttr alias_scopes, /*optional*/::mlir::ArrayAttr noalias_scopes, /*optional*/::mlir::ArrayAttr tbaa); static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::Value globalPtr, ::mlir::Value ldsPtr, ::mlir::IntegerAttr offset, ::mlir::Attribute aux, /*optional*/::mlir::ArrayAttr alias_scopes, /*optional*/::mlir::ArrayAttr noalias_scopes, /*optional*/::mlir::ArrayAttr tbaa); static GlobalStoreAsyncFromLDSB64Op create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::Value globalPtr, ::mlir::Value ldsPtr, ::mlir::IntegerAttr offset, ::mlir::Attribute aux, /*optional*/::mlir::ArrayAttr alias_scopes, /*optional*/::mlir::ArrayAttr noalias_scopes, /*optional*/::mlir::ArrayAttr tbaa); static GlobalStoreAsyncFromLDSB64Op create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::Value globalPtr, ::mlir::Value ldsPtr, ::mlir::IntegerAttr offset, ::mlir::Attribute aux, /*optional*/::mlir::ArrayAttr alias_scopes, /*optional*/::mlir::ArrayAttr noalias_scopes, /*optional*/::mlir::ArrayAttr tbaa); static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::Value globalPtr, ::mlir::Value ldsPtr, uint32_t offset, ::mlir::Attribute aux, /*optional*/::mlir::ArrayAttr alias_scopes, /*optional*/::mlir::ArrayAttr noalias_scopes, /*optional*/::mlir::ArrayAttr tbaa); static GlobalStoreAsyncFromLDSB64Op create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::Value globalPtr, ::mlir::Value ldsPtr, uint32_t offset, ::mlir::Attribute aux, /*optional*/::mlir::ArrayAttr alias_scopes, /*optional*/::mlir::ArrayAttr noalias_scopes, /*optional*/::mlir::ArrayAttr tbaa); static GlobalStoreAsyncFromLDSB64Op create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::Value globalPtr, ::mlir::Value ldsPtr, uint32_t offset, ::mlir::Attribute aux, /*optional*/::mlir::ArrayAttr alias_scopes, /*optional*/::mlir::ArrayAttr noalias_scopes, /*optional*/::mlir::ArrayAttr tbaa); static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::Value globalPtr, ::mlir::Value ldsPtr, uint32_t offset, ::mlir::Attribute aux, /*optional*/::mlir::ArrayAttr alias_scopes, /*optional*/::mlir::ArrayAttr noalias_scopes, /*optional*/::mlir::ArrayAttr tbaa); static GlobalStoreAsyncFromLDSB64Op create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::Value globalPtr, ::mlir::Value ldsPtr, uint32_t offset, ::mlir::Attribute aux, /*optional*/::mlir::ArrayAttr alias_scopes, /*optional*/::mlir::ArrayAttr noalias_scopes, /*optional*/::mlir::ArrayAttr tbaa); static GlobalStoreAsyncFromLDSB64Op create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::Value globalPtr, ::mlir::Value ldsPtr, uint32_t offset, ::mlir::Attribute aux, /*optional*/::mlir::ArrayAttr alias_scopes, /*optional*/::mlir::ArrayAttr noalias_scopes, /*optional*/::mlir::ArrayAttr tbaa); static void build(::mlir::OpBuilder &, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, ::llvm::ArrayRef<::mlir::NamedAttribute> attributes = {}); static GlobalStoreAsyncFromLDSB64Op create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, ::llvm::ArrayRef<::mlir::NamedAttribute> attributes = {}); static GlobalStoreAsyncFromLDSB64Op create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, ::llvm::ArrayRef<::mlir::NamedAttribute> attributes = {}); static void build(::mlir::OpBuilder &, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, const Properties &properties, ::llvm::ArrayRef<::mlir::NamedAttribute> discardableAttributes = {}); static GlobalStoreAsyncFromLDSB64Op create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, const Properties &properties, ::llvm::ArrayRef<::mlir::NamedAttribute> discardableAttributes = {}); static GlobalStoreAsyncFromLDSB64Op create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, const Properties &properties, ::llvm::ArrayRef<::mlir::NamedAttribute> discardableAttributes = {}); static void populateDefaultProperties(::mlir::OperationName opName, Properties &properties); ::llvm::LogicalResult verifyInvariantsImpl(); ::llvm::LogicalResult verifyInvariants(); ::llvm::SmallVector<::mlir::Value> getAccessedOperands(); static ::mlir::ParseResult parse(::mlir::OpAsmParser &parser, ::mlir::OperationState &result); void print(::mlir::OpAsmPrinter &_odsPrinter); void getEffects(::llvm::SmallVectorImpl<::mlir::SideEffects::EffectInstance<::mlir::MemoryEffects::Effect>> &effects); private: ::mlir::StringAttr getAttributeNameForIndex(unsigned index) { return getAttributeNameForIndex((*this)->getName(), index); } static ::mlir::StringAttr getAttributeNameForIndex(::mlir::OperationName name, unsigned index) { assert(index < 5 && "invalid attribute index"); assert(name.getStringRef() == getOperationName() && "invalid operation name"); assert(name.isRegistered() && "Operation isn't registered, missing a " "dependent dialect loading?"); return name.getAttributeNames()[index]; } public: }; } // namespace mlir::ROCDL MLIR_DECLARE_EXPLICIT_TYPE_ID(::mlir::ROCDL::GlobalStoreAsyncFromLDSB64Op) MLIR_DECLARE_EXPLICIT_TYPE_ID(::mlir::ROCDL::detail::GlobalStoreAsyncFromLDSB64OpGenericAdaptorBase::Properties) namespace mlir::ROCDL { //===----------------------------------------------------------------------===// // ::mlir::ROCDL::GlobalStoreAsyncFromLDSB8Op declarations //===----------------------------------------------------------------------===// namespace detail { class GlobalStoreAsyncFromLDSB8OpGenericAdaptorBase { public: struct Properties { using alias_scopesTy = ::mlir::ArrayAttr; alias_scopesTy alias_scopes; auto getAliasScopes() const { auto &propStorage = this->alias_scopes; return ::llvm::dyn_cast_or_null<::mlir::ArrayAttr>(propStorage); } void setAliasScopes(const ::mlir::ArrayAttr &propValue) { this->alias_scopes = propValue; } using auxTy = ::mlir::Attribute; auxTy aux; auto getAux() const { auto &propStorage = this->aux; return ::llvm::dyn_cast_or_null<::mlir::Attribute>(propStorage); } void setAux(const ::mlir::Attribute &propValue) { this->aux = propValue; } using noalias_scopesTy = ::mlir::ArrayAttr; noalias_scopesTy noalias_scopes; auto getNoaliasScopes() const { auto &propStorage = this->noalias_scopes; return ::llvm::dyn_cast_or_null<::mlir::ArrayAttr>(propStorage); } void setNoaliasScopes(const ::mlir::ArrayAttr &propValue) { this->noalias_scopes = propValue; } using offsetTy = ::mlir::IntegerAttr; offsetTy offset; auto getOffset() const { auto &propStorage = this->offset; return ::llvm::cast<::mlir::IntegerAttr>(propStorage); } void setOffset(const ::mlir::IntegerAttr &propValue) { this->offset = propValue; } using tbaaTy = ::mlir::ArrayAttr; tbaaTy tbaa; auto getTbaa() const { auto &propStorage = this->tbaa; return ::llvm::dyn_cast_or_null<::mlir::ArrayAttr>(propStorage); } void setTbaa(const ::mlir::ArrayAttr &propValue) { this->tbaa = propValue; } bool operator==(const Properties &rhs) const { return rhs.alias_scopes == this->alias_scopes && rhs.aux == this->aux && rhs.noalias_scopes == this->noalias_scopes && rhs.offset == this->offset && rhs.tbaa == this->tbaa && true; } bool operator!=(const Properties &rhs) const { return !(*this == rhs); } }; protected: ::mlir::DictionaryAttr odsAttrs; ::std::optional<::mlir::OperationName> odsOpName; Properties properties; ::mlir::RegionRange odsRegions; public: GlobalStoreAsyncFromLDSB8OpGenericAdaptorBase(::mlir::DictionaryAttr attrs, const Properties &properties, ::mlir::RegionRange regions = {}) : odsAttrs(attrs), properties(properties), odsRegions(regions) { if (odsAttrs) odsOpName.emplace("rocdl.global.store.async.from.lds.b8", odsAttrs.getContext()); } GlobalStoreAsyncFromLDSB8OpGenericAdaptorBase(GlobalStoreAsyncFromLDSB8Op op); std::pair getODSOperandIndexAndLength(unsigned index, unsigned odsOperandsSize) { return {index, 1}; } const Properties &getProperties() { return properties; } ::mlir::DictionaryAttr getAttributes() { return odsAttrs; } ::mlir::IntegerAttr getOffsetAttr() { auto attr = ::llvm::cast<::mlir::IntegerAttr>(getProperties().offset); return attr; } uint32_t getOffset(); ::mlir::Attribute getAuxAttr(); ::mlir::Attribute getAux(); ::mlir::ArrayAttr getAliasScopesAttr() { auto attr = ::llvm::dyn_cast_or_null<::mlir::ArrayAttr>(getProperties().alias_scopes); return attr; } ::std::optional< ::mlir::ArrayAttr > getAliasScopes(); ::mlir::ArrayAttr getNoaliasScopesAttr() { auto attr = ::llvm::dyn_cast_or_null<::mlir::ArrayAttr>(getProperties().noalias_scopes); return attr; } ::std::optional< ::mlir::ArrayAttr > getNoaliasScopes(); ::mlir::ArrayAttr getTbaaAttr() { auto attr = ::llvm::dyn_cast_or_null<::mlir::ArrayAttr>(getProperties().tbaa); return attr; } ::std::optional< ::mlir::ArrayAttr > getTbaa(); }; } // namespace detail template class GlobalStoreAsyncFromLDSB8OpGenericAdaptor : public detail::GlobalStoreAsyncFromLDSB8OpGenericAdaptorBase { using ValueT = ::llvm::detail::ValueOfRange; using Base = detail::GlobalStoreAsyncFromLDSB8OpGenericAdaptorBase; static constexpr int odsIndex_globalPtr = 0; static constexpr int odsIndex_ldsPtr = 1; public: GlobalStoreAsyncFromLDSB8OpGenericAdaptor(RangeT values, ::mlir::DictionaryAttr attrs, const Properties &properties, ::mlir::RegionRange regions = {}) : Base(attrs, properties, regions), odsOperands(values) {} GlobalStoreAsyncFromLDSB8OpGenericAdaptor(RangeT values, ::mlir::DictionaryAttr attrs, ::mlir::PropertyRef properties, ::mlir::RegionRange regions = {}) : GlobalStoreAsyncFromLDSB8OpGenericAdaptor(values, attrs, (properties ? *properties.as() : Properties{}), regions) {} GlobalStoreAsyncFromLDSB8OpGenericAdaptor(RangeT values, ::mlir::DictionaryAttr attrs = nullptr) : GlobalStoreAsyncFromLDSB8OpGenericAdaptor(values, attrs, Properties{}, {}) {} GlobalStoreAsyncFromLDSB8OpGenericAdaptor(RangeT values, const GlobalStoreAsyncFromLDSB8OpGenericAdaptorBase &base) : Base(base), odsOperands(values) {} template >> GlobalStoreAsyncFromLDSB8OpGenericAdaptor(RangeT values, LateInst op) : Base(op), odsOperands(values) {} std::pair getODSOperandIndexAndLength(unsigned index) { return Base::getODSOperandIndexAndLength(index, odsOperands.size()); } RangeT getODSOperands(unsigned index) { auto valueRange = getODSOperandIndexAndLength(index); return {std::next(odsOperands.begin(), valueRange.first), std::next(odsOperands.begin(), valueRange.first + valueRange.second)}; } ValueT getGlobalPtr() { return (*getODSOperands(0).begin()); } ValueT getLdsPtr() { return (*getODSOperands(1).begin()); } RangeT getOperands() { return odsOperands; } private: RangeT odsOperands; }; class GlobalStoreAsyncFromLDSB8OpAdaptor : public GlobalStoreAsyncFromLDSB8OpGenericAdaptor<::mlir::ValueRange> { public: using GlobalStoreAsyncFromLDSB8OpGenericAdaptor::GlobalStoreAsyncFromLDSB8OpGenericAdaptor; GlobalStoreAsyncFromLDSB8OpAdaptor(GlobalStoreAsyncFromLDSB8Op op); ::llvm::LogicalResult verify(::mlir::Location loc); }; class GlobalStoreAsyncFromLDSB8Op : public ::mlir::Op::Impl, ::mlir::OpTrait::OpInvariants, ::mlir::BytecodeOpInterface::Trait, ::mlir::LLVM::AliasAnalysisOpInterface::Trait, ::mlir::MemoryEffectOpInterface::Trait> { public: using Op::Op; using Op::print; using Adaptor = GlobalStoreAsyncFromLDSB8OpAdaptor; template using GenericAdaptor = GlobalStoreAsyncFromLDSB8OpGenericAdaptor; using FoldAdaptor = GenericAdaptor<::llvm::ArrayRef<::mlir::Attribute>>; static constexpr int odsIndex_globalPtr = 0; static constexpr int odsIndex_ldsPtr = 1; using Properties = FoldAdaptor::Properties; using ::mlir::LLVM::AliasAnalysisOpInterface::Trait::getAliasScopesOrNull; using ::mlir::LLVM::AliasAnalysisOpInterface::Trait::setAliasScopes; using ::mlir::LLVM::AliasAnalysisOpInterface::Trait::getNoAliasScopesOrNull; using ::mlir::LLVM::AliasAnalysisOpInterface::Trait::setNoAliasScopes; using ::mlir::LLVM::AliasAnalysisOpInterface::Trait::getTBAATagsOrNull; using ::mlir::LLVM::AliasAnalysisOpInterface::Trait::setTBAATags; static ::llvm::ArrayRef<::llvm::StringRef> getAttributeNames() { static ::llvm::StringRef attrNames[] = {::llvm::StringRef("alias_scopes"), ::llvm::StringRef("aux"), ::llvm::StringRef("noalias_scopes"), ::llvm::StringRef("offset"), ::llvm::StringRef("tbaa")}; return ::llvm::ArrayRef(attrNames); } ::mlir::StringAttr getAliasScopesAttrName() { return getAttributeNameForIndex(0); } static ::mlir::StringAttr getAliasScopesAttrName(::mlir::OperationName name) { return getAttributeNameForIndex(name, 0); } ::mlir::StringAttr getAuxAttrName() { return getAttributeNameForIndex(1); } static ::mlir::StringAttr getAuxAttrName(::mlir::OperationName name) { return getAttributeNameForIndex(name, 1); } ::mlir::StringAttr getNoaliasScopesAttrName() { return getAttributeNameForIndex(2); } static ::mlir::StringAttr getNoaliasScopesAttrName(::mlir::OperationName name) { return getAttributeNameForIndex(name, 2); } ::mlir::StringAttr getOffsetAttrName() { return getAttributeNameForIndex(3); } static ::mlir::StringAttr getOffsetAttrName(::mlir::OperationName name) { return getAttributeNameForIndex(name, 3); } ::mlir::StringAttr getTbaaAttrName() { return getAttributeNameForIndex(4); } static ::mlir::StringAttr getTbaaAttrName(::mlir::OperationName name) { return getAttributeNameForIndex(name, 4); } static constexpr ::llvm::StringLiteral getOperationName() { return ::llvm::StringLiteral("rocdl.global.store.async.from.lds.b8"); } std::pair getODSOperandIndexAndLength(unsigned index) { return {index, 1}; } ::mlir::Operation::operand_range getODSOperands(unsigned index) { auto valueRange = getODSOperandIndexAndLength(index); return {std::next(getOperation()->operand_begin(), valueRange.first), std::next(getOperation()->operand_begin(), valueRange.first + valueRange.second)}; } ::mlir::TypedValue<::mlir::LLVM::LLVMPointerType> getGlobalPtr() { return ::llvm::cast<::mlir::TypedValue<::mlir::LLVM::LLVMPointerType>>(*getODSOperands(0).begin()); } ::mlir::TypedValue<::mlir::LLVM::LLVMPointerType> getLdsPtr() { return ::llvm::cast<::mlir::TypedValue<::mlir::LLVM::LLVMPointerType>>(*getODSOperands(1).begin()); } ::mlir::OpOperand &getGlobalPtrMutable() { auto range = getODSOperandIndexAndLength(0); return getOperation()->getOpOperand(range.first); } ::mlir::OpOperand &getLdsPtrMutable() { auto range = getODSOperandIndexAndLength(1); return getOperation()->getOpOperand(range.first); } std::pair getODSResultIndexAndLength(unsigned index) { return {index, 1}; } ::mlir::Operation::result_range getODSResults(unsigned index) { auto valueRange = getODSResultIndexAndLength(index); return {std::next(getOperation()->result_begin(), valueRange.first), std::next(getOperation()->result_begin(), valueRange.first + valueRange.second)}; } static ::llvm::LogicalResult setPropertiesFromAttr(Properties &prop, ::mlir::Attribute attr, ::llvm::function_ref<::mlir::InFlightDiagnostic()> emitError); static ::mlir::Attribute getPropertiesAsAttr(::mlir::MLIRContext *ctx, const Properties &prop); static llvm::hash_code computePropertiesHash(const Properties &prop); static std::optional getInherentAttr(::mlir::MLIRContext *ctx, const Properties &prop, llvm::StringRef name); static void setInherentAttr(Properties &prop, llvm::StringRef name, mlir::Attribute value); static void populateInherentAttrs(::mlir::MLIRContext *ctx, const Properties &prop, ::mlir::NamedAttrList &attrs); static ::llvm::LogicalResult verifyInherentAttrs(::mlir::OperationName opName, ::mlir::NamedAttrList &attrs, llvm::function_ref<::mlir::InFlightDiagnostic()> emitError); static ::llvm::LogicalResult readProperties(::mlir::DialectBytecodeReader &reader, ::mlir::OperationState &state); void writeProperties(::mlir::DialectBytecodeWriter &writer); ::mlir::IntegerAttr getOffsetAttr() { return ::llvm::cast<::mlir::IntegerAttr>(getProperties().offset); } uint32_t getOffset(); ::mlir::Attribute getAuxAttr() { return ::llvm::dyn_cast_or_null<::mlir::Attribute>(getProperties().aux); } ::mlir::Attribute getAux(); ::mlir::ArrayAttr getAliasScopesAttr() { return ::llvm::dyn_cast_or_null<::mlir::ArrayAttr>(getProperties().alias_scopes); } ::std::optional< ::mlir::ArrayAttr > getAliasScopes(); ::mlir::ArrayAttr getNoaliasScopesAttr() { return ::llvm::dyn_cast_or_null<::mlir::ArrayAttr>(getProperties().noalias_scopes); } ::std::optional< ::mlir::ArrayAttr > getNoaliasScopes(); ::mlir::ArrayAttr getTbaaAttr() { return ::llvm::dyn_cast_or_null<::mlir::ArrayAttr>(getProperties().tbaa); } ::std::optional< ::mlir::ArrayAttr > getTbaa(); void setOffsetAttr(::mlir::IntegerAttr attr) { getProperties().offset = attr; } void setOffset(uint32_t attrValue); void setAuxAttr(::mlir::Attribute attr) { getProperties().aux = attr; } void setAliasScopesAttr(::mlir::ArrayAttr attr) { getProperties().alias_scopes = attr; } void setNoaliasScopesAttr(::mlir::ArrayAttr attr) { getProperties().noalias_scopes = attr; } void setTbaaAttr(::mlir::ArrayAttr attr) { getProperties().tbaa = attr; } ::mlir::Attribute removeAliasScopesAttr() { auto attr = getProperties().alias_scopes; getProperties().alias_scopes = {}; return attr; } ::mlir::Attribute removeNoaliasScopesAttr() { auto attr = getProperties().noalias_scopes; getProperties().noalias_scopes = {}; return attr; } ::mlir::Attribute removeTbaaAttr() { auto attr = getProperties().tbaa; getProperties().tbaa = {}; return attr; } static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::Value globalPtr, ::mlir::Value ldsPtr, ::mlir::IntegerAttr offset, ::mlir::Attribute aux, /*optional*/::mlir::ArrayAttr alias_scopes, /*optional*/::mlir::ArrayAttr noalias_scopes, /*optional*/::mlir::ArrayAttr tbaa); static GlobalStoreAsyncFromLDSB8Op create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::Value globalPtr, ::mlir::Value ldsPtr, ::mlir::IntegerAttr offset, ::mlir::Attribute aux, /*optional*/::mlir::ArrayAttr alias_scopes, /*optional*/::mlir::ArrayAttr noalias_scopes, /*optional*/::mlir::ArrayAttr tbaa); static GlobalStoreAsyncFromLDSB8Op create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::Value globalPtr, ::mlir::Value ldsPtr, ::mlir::IntegerAttr offset, ::mlir::Attribute aux, /*optional*/::mlir::ArrayAttr alias_scopes, /*optional*/::mlir::ArrayAttr noalias_scopes, /*optional*/::mlir::ArrayAttr tbaa); static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::Value globalPtr, ::mlir::Value ldsPtr, ::mlir::IntegerAttr offset, ::mlir::Attribute aux, /*optional*/::mlir::ArrayAttr alias_scopes, /*optional*/::mlir::ArrayAttr noalias_scopes, /*optional*/::mlir::ArrayAttr tbaa); static GlobalStoreAsyncFromLDSB8Op create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::Value globalPtr, ::mlir::Value ldsPtr, ::mlir::IntegerAttr offset, ::mlir::Attribute aux, /*optional*/::mlir::ArrayAttr alias_scopes, /*optional*/::mlir::ArrayAttr noalias_scopes, /*optional*/::mlir::ArrayAttr tbaa); static GlobalStoreAsyncFromLDSB8Op create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::Value globalPtr, ::mlir::Value ldsPtr, ::mlir::IntegerAttr offset, ::mlir::Attribute aux, /*optional*/::mlir::ArrayAttr alias_scopes, /*optional*/::mlir::ArrayAttr noalias_scopes, /*optional*/::mlir::ArrayAttr tbaa); static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::Value globalPtr, ::mlir::Value ldsPtr, uint32_t offset, ::mlir::Attribute aux, /*optional*/::mlir::ArrayAttr alias_scopes, /*optional*/::mlir::ArrayAttr noalias_scopes, /*optional*/::mlir::ArrayAttr tbaa); static GlobalStoreAsyncFromLDSB8Op create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::Value globalPtr, ::mlir::Value ldsPtr, uint32_t offset, ::mlir::Attribute aux, /*optional*/::mlir::ArrayAttr alias_scopes, /*optional*/::mlir::ArrayAttr noalias_scopes, /*optional*/::mlir::ArrayAttr tbaa); static GlobalStoreAsyncFromLDSB8Op create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::Value globalPtr, ::mlir::Value ldsPtr, uint32_t offset, ::mlir::Attribute aux, /*optional*/::mlir::ArrayAttr alias_scopes, /*optional*/::mlir::ArrayAttr noalias_scopes, /*optional*/::mlir::ArrayAttr tbaa); static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::Value globalPtr, ::mlir::Value ldsPtr, uint32_t offset, ::mlir::Attribute aux, /*optional*/::mlir::ArrayAttr alias_scopes, /*optional*/::mlir::ArrayAttr noalias_scopes, /*optional*/::mlir::ArrayAttr tbaa); static GlobalStoreAsyncFromLDSB8Op create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::Value globalPtr, ::mlir::Value ldsPtr, uint32_t offset, ::mlir::Attribute aux, /*optional*/::mlir::ArrayAttr alias_scopes, /*optional*/::mlir::ArrayAttr noalias_scopes, /*optional*/::mlir::ArrayAttr tbaa); static GlobalStoreAsyncFromLDSB8Op create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::Value globalPtr, ::mlir::Value ldsPtr, uint32_t offset, ::mlir::Attribute aux, /*optional*/::mlir::ArrayAttr alias_scopes, /*optional*/::mlir::ArrayAttr noalias_scopes, /*optional*/::mlir::ArrayAttr tbaa); static void build(::mlir::OpBuilder &, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, ::llvm::ArrayRef<::mlir::NamedAttribute> attributes = {}); static GlobalStoreAsyncFromLDSB8Op create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, ::llvm::ArrayRef<::mlir::NamedAttribute> attributes = {}); static GlobalStoreAsyncFromLDSB8Op create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, ::llvm::ArrayRef<::mlir::NamedAttribute> attributes = {}); static void build(::mlir::OpBuilder &, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, const Properties &properties, ::llvm::ArrayRef<::mlir::NamedAttribute> discardableAttributes = {}); static GlobalStoreAsyncFromLDSB8Op create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, const Properties &properties, ::llvm::ArrayRef<::mlir::NamedAttribute> discardableAttributes = {}); static GlobalStoreAsyncFromLDSB8Op create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, const Properties &properties, ::llvm::ArrayRef<::mlir::NamedAttribute> discardableAttributes = {}); static void populateDefaultProperties(::mlir::OperationName opName, Properties &properties); ::llvm::LogicalResult verifyInvariantsImpl(); ::llvm::LogicalResult verifyInvariants(); ::llvm::SmallVector<::mlir::Value> getAccessedOperands(); static ::mlir::ParseResult parse(::mlir::OpAsmParser &parser, ::mlir::OperationState &result); void print(::mlir::OpAsmPrinter &_odsPrinter); void getEffects(::llvm::SmallVectorImpl<::mlir::SideEffects::EffectInstance<::mlir::MemoryEffects::Effect>> &effects); private: ::mlir::StringAttr getAttributeNameForIndex(unsigned index) { return getAttributeNameForIndex((*this)->getName(), index); } static ::mlir::StringAttr getAttributeNameForIndex(::mlir::OperationName name, unsigned index) { assert(index < 5 && "invalid attribute index"); assert(name.getStringRef() == getOperationName() && "invalid operation name"); assert(name.isRegistered() && "Operation isn't registered, missing a " "dependent dialect loading?"); return name.getAttributeNames()[index]; } public: }; } // namespace mlir::ROCDL MLIR_DECLARE_EXPLICIT_TYPE_ID(::mlir::ROCDL::GlobalStoreAsyncFromLDSB8Op) MLIR_DECLARE_EXPLICIT_TYPE_ID(::mlir::ROCDL::detail::GlobalStoreAsyncFromLDSB8OpGenericAdaptorBase::Properties) namespace mlir::ROCDL { //===----------------------------------------------------------------------===// // ::mlir::ROCDL::IglpOpt declarations //===----------------------------------------------------------------------===// namespace detail { class IglpOptGenericAdaptorBase { public: struct Properties { using variantTy = ::mlir::IntegerAttr; variantTy variant; auto getVariant() const { auto &propStorage = this->variant; return ::llvm::cast<::mlir::IntegerAttr>(propStorage); } void setVariant(const ::mlir::IntegerAttr &propValue) { this->variant = propValue; } bool operator==(const Properties &rhs) const { return rhs.variant == this->variant && true; } bool operator!=(const Properties &rhs) const { return !(*this == rhs); } }; protected: ::mlir::DictionaryAttr odsAttrs; ::std::optional<::mlir::OperationName> odsOpName; Properties properties; ::mlir::RegionRange odsRegions; public: IglpOptGenericAdaptorBase(::mlir::DictionaryAttr attrs, const Properties &properties, ::mlir::RegionRange regions = {}) : odsAttrs(attrs), properties(properties), odsRegions(regions) { if (odsAttrs) odsOpName.emplace("rocdl.iglp.opt", odsAttrs.getContext()); } IglpOptGenericAdaptorBase(IglpOpt op); std::pair getODSOperandIndexAndLength(unsigned index, unsigned odsOperandsSize) { return {index, 1}; } const Properties &getProperties() { return properties; } ::mlir::DictionaryAttr getAttributes() { return odsAttrs; } ::mlir::IntegerAttr getVariantAttr() { auto attr = ::llvm::cast<::mlir::IntegerAttr>(getProperties().variant); return attr; } uint32_t getVariant(); }; } // namespace detail template class IglpOptGenericAdaptor : public detail::IglpOptGenericAdaptorBase { using ValueT = ::llvm::detail::ValueOfRange; using Base = detail::IglpOptGenericAdaptorBase; public: IglpOptGenericAdaptor(RangeT values, ::mlir::DictionaryAttr attrs, const Properties &properties, ::mlir::RegionRange regions = {}) : Base(attrs, properties, regions), odsOperands(values) {} IglpOptGenericAdaptor(RangeT values, ::mlir::DictionaryAttr attrs, ::mlir::PropertyRef properties, ::mlir::RegionRange regions = {}) : IglpOptGenericAdaptor(values, attrs, (properties ? *properties.as() : Properties{}), regions) {} IglpOptGenericAdaptor(RangeT values, ::mlir::DictionaryAttr attrs = nullptr) : IglpOptGenericAdaptor(values, attrs, Properties{}, {}) {} IglpOptGenericAdaptor(RangeT values, const IglpOptGenericAdaptorBase &base) : Base(base), odsOperands(values) {} template >> IglpOptGenericAdaptor(RangeT values, LateInst op) : Base(op), odsOperands(values) {} std::pair getODSOperandIndexAndLength(unsigned index) { return Base::getODSOperandIndexAndLength(index, odsOperands.size()); } RangeT getODSOperands(unsigned index) { auto valueRange = getODSOperandIndexAndLength(index); return {std::next(odsOperands.begin(), valueRange.first), std::next(odsOperands.begin(), valueRange.first + valueRange.second)}; } RangeT getOperands() { return odsOperands; } private: RangeT odsOperands; }; class IglpOptAdaptor : public IglpOptGenericAdaptor<::mlir::ValueRange> { public: using IglpOptGenericAdaptor::IglpOptGenericAdaptor; IglpOptAdaptor(IglpOpt op); ::llvm::LogicalResult verify(::mlir::Location loc); }; class IglpOpt : public ::mlir::Op { public: using Op::Op; using Op::print; using Adaptor = IglpOptAdaptor; template using GenericAdaptor = IglpOptGenericAdaptor; using FoldAdaptor = GenericAdaptor<::llvm::ArrayRef<::mlir::Attribute>>; using Properties = FoldAdaptor::Properties; static ::llvm::ArrayRef<::llvm::StringRef> getAttributeNames() { static ::llvm::StringRef attrNames[] = {::llvm::StringRef("variant")}; return ::llvm::ArrayRef(attrNames); } ::mlir::StringAttr getVariantAttrName() { return getAttributeNameForIndex(0); } static ::mlir::StringAttr getVariantAttrName(::mlir::OperationName name) { return getAttributeNameForIndex(name, 0); } static constexpr ::llvm::StringLiteral getOperationName() { return ::llvm::StringLiteral("rocdl.iglp.opt"); } std::pair getODSOperandIndexAndLength(unsigned index) { return {index, 1}; } ::mlir::Operation::operand_range getODSOperands(unsigned index) { auto valueRange = getODSOperandIndexAndLength(index); return {std::next(getOperation()->operand_begin(), valueRange.first), std::next(getOperation()->operand_begin(), valueRange.first + valueRange.second)}; } std::pair getODSResultIndexAndLength(unsigned index) { return {index, 1}; } ::mlir::Operation::result_range getODSResults(unsigned index) { auto valueRange = getODSResultIndexAndLength(index); return {std::next(getOperation()->result_begin(), valueRange.first), std::next(getOperation()->result_begin(), valueRange.first + valueRange.second)}; } static ::llvm::LogicalResult setPropertiesFromAttr(Properties &prop, ::mlir::Attribute attr, ::llvm::function_ref<::mlir::InFlightDiagnostic()> emitError); static ::mlir::Attribute getPropertiesAsAttr(::mlir::MLIRContext *ctx, const Properties &prop); static llvm::hash_code computePropertiesHash(const Properties &prop); static std::optional getInherentAttr(::mlir::MLIRContext *ctx, const Properties &prop, llvm::StringRef name); static void setInherentAttr(Properties &prop, llvm::StringRef name, mlir::Attribute value); static void populateInherentAttrs(::mlir::MLIRContext *ctx, const Properties &prop, ::mlir::NamedAttrList &attrs); static ::llvm::LogicalResult verifyInherentAttrs(::mlir::OperationName opName, ::mlir::NamedAttrList &attrs, llvm::function_ref<::mlir::InFlightDiagnostic()> emitError); static ::llvm::LogicalResult readProperties(::mlir::DialectBytecodeReader &reader, ::mlir::OperationState &state); void writeProperties(::mlir::DialectBytecodeWriter &writer); ::mlir::IntegerAttr getVariantAttr() { return ::llvm::cast<::mlir::IntegerAttr>(getProperties().variant); } uint32_t getVariant(); void setVariantAttr(::mlir::IntegerAttr attr) { getProperties().variant = attr; } void setVariant(uint32_t attrValue); static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::IntegerAttr variant); static IglpOpt create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::IntegerAttr variant); static IglpOpt create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::IntegerAttr variant); static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::IntegerAttr variant); static IglpOpt create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::IntegerAttr variant); static IglpOpt create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::IntegerAttr variant); static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, uint32_t variant); static IglpOpt create(::mlir::OpBuilder &builder, ::mlir::Location location, uint32_t variant); static IglpOpt create(::mlir::ImplicitLocOpBuilder &builder, uint32_t variant); static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, uint32_t variant); static IglpOpt create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, uint32_t variant); static IglpOpt create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, uint32_t variant); static void build(::mlir::OpBuilder &, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, ::llvm::ArrayRef<::mlir::NamedAttribute> attributes = {}); static IglpOpt create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, ::llvm::ArrayRef<::mlir::NamedAttribute> attributes = {}); static IglpOpt create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, ::llvm::ArrayRef<::mlir::NamedAttribute> attributes = {}); static void build(::mlir::OpBuilder &, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, const Properties &properties, ::llvm::ArrayRef<::mlir::NamedAttribute> discardableAttributes = {}); static IglpOpt create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, const Properties &properties, ::llvm::ArrayRef<::mlir::NamedAttribute> discardableAttributes = {}); static IglpOpt create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, const Properties &properties, ::llvm::ArrayRef<::mlir::NamedAttribute> discardableAttributes = {}); ::llvm::LogicalResult verifyInvariantsImpl(); ::llvm::LogicalResult verifyInvariants(); static ::mlir::ParseResult parse(::mlir::OpAsmParser &parser, ::mlir::OperationState &result); void print(::mlir::OpAsmPrinter &_odsPrinter); private: ::mlir::StringAttr getAttributeNameForIndex(unsigned index) { return getAttributeNameForIndex((*this)->getName(), index); } static ::mlir::StringAttr getAttributeNameForIndex(::mlir::OperationName name, unsigned index) { assert(index < 1 && "invalid attribute index"); assert(name.getStringRef() == getOperationName() && "invalid operation name"); assert(name.isRegistered() && "Operation isn't registered, missing a " "dependent dialect loading?"); return name.getAttributeNames()[index]; } public: }; } // namespace mlir::ROCDL MLIR_DECLARE_EXPLICIT_TYPE_ID(::mlir::ROCDL::IglpOpt) MLIR_DECLARE_EXPLICIT_TYPE_ID(::mlir::ROCDL::detail::IglpOptGenericAdaptorBase::Properties) namespace mlir::ROCDL { //===----------------------------------------------------------------------===// // ::mlir::ROCDL::LoadAsyncToLDSOp declarations //===----------------------------------------------------------------------===// namespace detail { class LoadAsyncToLDSOpGenericAdaptorBase { public: struct Properties { using alias_scopesTy = ::mlir::ArrayAttr; alias_scopesTy alias_scopes; auto getAliasScopes() const { auto &propStorage = this->alias_scopes; return ::llvm::dyn_cast_or_null<::mlir::ArrayAttr>(propStorage); } void setAliasScopes(const ::mlir::ArrayAttr &propValue) { this->alias_scopes = propValue; } using auxTy = ::mlir::Attribute; auxTy aux; auto getAux() const { auto &propStorage = this->aux; return ::llvm::dyn_cast_or_null<::mlir::Attribute>(propStorage); } void setAux(const ::mlir::Attribute &propValue) { this->aux = propValue; } using noalias_scopesTy = ::mlir::ArrayAttr; noalias_scopesTy noalias_scopes; auto getNoaliasScopes() const { auto &propStorage = this->noalias_scopes; return ::llvm::dyn_cast_or_null<::mlir::ArrayAttr>(propStorage); } void setNoaliasScopes(const ::mlir::ArrayAttr &propValue) { this->noalias_scopes = propValue; } using offsetTy = ::mlir::IntegerAttr; offsetTy offset; auto getOffset() const { auto &propStorage = this->offset; return ::llvm::cast<::mlir::IntegerAttr>(propStorage); } void setOffset(const ::mlir::IntegerAttr &propValue) { this->offset = propValue; } using sizeTy = ::mlir::IntegerAttr; sizeTy size; auto getSize() const { auto &propStorage = this->size; return ::llvm::cast<::mlir::IntegerAttr>(propStorage); } void setSize(const ::mlir::IntegerAttr &propValue) { this->size = propValue; } using tbaaTy = ::mlir::ArrayAttr; tbaaTy tbaa; auto getTbaa() const { auto &propStorage = this->tbaa; return ::llvm::dyn_cast_or_null<::mlir::ArrayAttr>(propStorage); } void setTbaa(const ::mlir::ArrayAttr &propValue) { this->tbaa = propValue; } bool operator==(const Properties &rhs) const { return rhs.alias_scopes == this->alias_scopes && rhs.aux == this->aux && rhs.noalias_scopes == this->noalias_scopes && rhs.offset == this->offset && rhs.size == this->size && rhs.tbaa == this->tbaa && true; } bool operator!=(const Properties &rhs) const { return !(*this == rhs); } }; protected: ::mlir::DictionaryAttr odsAttrs; ::std::optional<::mlir::OperationName> odsOpName; Properties properties; ::mlir::RegionRange odsRegions; public: LoadAsyncToLDSOpGenericAdaptorBase(::mlir::DictionaryAttr attrs, const Properties &properties, ::mlir::RegionRange regions = {}) : odsAttrs(attrs), properties(properties), odsRegions(regions) { if (odsAttrs) odsOpName.emplace("rocdl.load.async.to.lds", odsAttrs.getContext()); } LoadAsyncToLDSOpGenericAdaptorBase(LoadAsyncToLDSOp op); std::pair getODSOperandIndexAndLength(unsigned index, unsigned odsOperandsSize) { return {index, 1}; } const Properties &getProperties() { return properties; } ::mlir::DictionaryAttr getAttributes() { return odsAttrs; } ::mlir::IntegerAttr getSizeAttr() { auto attr = ::llvm::cast<::mlir::IntegerAttr>(getProperties().size); return attr; } uint32_t getSize(); ::mlir::IntegerAttr getOffsetAttr() { auto attr = ::llvm::cast<::mlir::IntegerAttr>(getProperties().offset); return attr; } uint32_t getOffset(); ::mlir::Attribute getAuxAttr(); ::mlir::Attribute getAux(); ::mlir::ArrayAttr getAliasScopesAttr() { auto attr = ::llvm::dyn_cast_or_null<::mlir::ArrayAttr>(getProperties().alias_scopes); return attr; } ::std::optional< ::mlir::ArrayAttr > getAliasScopes(); ::mlir::ArrayAttr getNoaliasScopesAttr() { auto attr = ::llvm::dyn_cast_or_null<::mlir::ArrayAttr>(getProperties().noalias_scopes); return attr; } ::std::optional< ::mlir::ArrayAttr > getNoaliasScopes(); ::mlir::ArrayAttr getTbaaAttr() { auto attr = ::llvm::dyn_cast_or_null<::mlir::ArrayAttr>(getProperties().tbaa); return attr; } ::std::optional< ::mlir::ArrayAttr > getTbaa(); }; } // namespace detail template class LoadAsyncToLDSOpGenericAdaptor : public detail::LoadAsyncToLDSOpGenericAdaptorBase { using ValueT = ::llvm::detail::ValueOfRange; using Base = detail::LoadAsyncToLDSOpGenericAdaptorBase; static constexpr int odsIndex_globalPtr = 0; static constexpr int odsIndex_ldsPtr = 1; public: LoadAsyncToLDSOpGenericAdaptor(RangeT values, ::mlir::DictionaryAttr attrs, const Properties &properties, ::mlir::RegionRange regions = {}) : Base(attrs, properties, regions), odsOperands(values) {} LoadAsyncToLDSOpGenericAdaptor(RangeT values, ::mlir::DictionaryAttr attrs, ::mlir::PropertyRef properties, ::mlir::RegionRange regions = {}) : LoadAsyncToLDSOpGenericAdaptor(values, attrs, (properties ? *properties.as() : Properties{}), regions) {} LoadAsyncToLDSOpGenericAdaptor(RangeT values, ::mlir::DictionaryAttr attrs = nullptr) : LoadAsyncToLDSOpGenericAdaptor(values, attrs, Properties{}, {}) {} LoadAsyncToLDSOpGenericAdaptor(RangeT values, const LoadAsyncToLDSOpGenericAdaptorBase &base) : Base(base), odsOperands(values) {} template >> LoadAsyncToLDSOpGenericAdaptor(RangeT values, LateInst op) : Base(op), odsOperands(values) {} std::pair getODSOperandIndexAndLength(unsigned index) { return Base::getODSOperandIndexAndLength(index, odsOperands.size()); } RangeT getODSOperands(unsigned index) { auto valueRange = getODSOperandIndexAndLength(index); return {std::next(odsOperands.begin(), valueRange.first), std::next(odsOperands.begin(), valueRange.first + valueRange.second)}; } ValueT getGlobalPtr() { return (*getODSOperands(0).begin()); } ValueT getLdsPtr() { return (*getODSOperands(1).begin()); } RangeT getOperands() { return odsOperands; } private: RangeT odsOperands; }; class LoadAsyncToLDSOpAdaptor : public LoadAsyncToLDSOpGenericAdaptor<::mlir::ValueRange> { public: using LoadAsyncToLDSOpGenericAdaptor::LoadAsyncToLDSOpGenericAdaptor; LoadAsyncToLDSOpAdaptor(LoadAsyncToLDSOp op); ::llvm::LogicalResult verify(::mlir::Location loc); }; class LoadAsyncToLDSOp : public ::mlir::Op::Impl, ::mlir::OpTrait::OpInvariants, ::mlir::BytecodeOpInterface::Trait, ::mlir::LLVM::AliasAnalysisOpInterface::Trait, ::mlir::MemoryEffectOpInterface::Trait> { public: using Op::Op; using Op::print; using Adaptor = LoadAsyncToLDSOpAdaptor; template using GenericAdaptor = LoadAsyncToLDSOpGenericAdaptor; using FoldAdaptor = GenericAdaptor<::llvm::ArrayRef<::mlir::Attribute>>; static constexpr int odsIndex_globalPtr = 0; static constexpr int odsIndex_ldsPtr = 1; using Properties = FoldAdaptor::Properties; using ::mlir::LLVM::AliasAnalysisOpInterface::Trait::getAliasScopesOrNull; using ::mlir::LLVM::AliasAnalysisOpInterface::Trait::setAliasScopes; using ::mlir::LLVM::AliasAnalysisOpInterface::Trait::getNoAliasScopesOrNull; using ::mlir::LLVM::AliasAnalysisOpInterface::Trait::setNoAliasScopes; using ::mlir::LLVM::AliasAnalysisOpInterface::Trait::getTBAATagsOrNull; using ::mlir::LLVM::AliasAnalysisOpInterface::Trait::setTBAATags; static ::llvm::ArrayRef<::llvm::StringRef> getAttributeNames() { static ::llvm::StringRef attrNames[] = {::llvm::StringRef("alias_scopes"), ::llvm::StringRef("aux"), ::llvm::StringRef("noalias_scopes"), ::llvm::StringRef("offset"), ::llvm::StringRef("size"), ::llvm::StringRef("tbaa")}; return ::llvm::ArrayRef(attrNames); } ::mlir::StringAttr getAliasScopesAttrName() { return getAttributeNameForIndex(0); } static ::mlir::StringAttr getAliasScopesAttrName(::mlir::OperationName name) { return getAttributeNameForIndex(name, 0); } ::mlir::StringAttr getAuxAttrName() { return getAttributeNameForIndex(1); } static ::mlir::StringAttr getAuxAttrName(::mlir::OperationName name) { return getAttributeNameForIndex(name, 1); } ::mlir::StringAttr getNoaliasScopesAttrName() { return getAttributeNameForIndex(2); } static ::mlir::StringAttr getNoaliasScopesAttrName(::mlir::OperationName name) { return getAttributeNameForIndex(name, 2); } ::mlir::StringAttr getOffsetAttrName() { return getAttributeNameForIndex(3); } static ::mlir::StringAttr getOffsetAttrName(::mlir::OperationName name) { return getAttributeNameForIndex(name, 3); } ::mlir::StringAttr getSizeAttrName() { return getAttributeNameForIndex(4); } static ::mlir::StringAttr getSizeAttrName(::mlir::OperationName name) { return getAttributeNameForIndex(name, 4); } ::mlir::StringAttr getTbaaAttrName() { return getAttributeNameForIndex(5); } static ::mlir::StringAttr getTbaaAttrName(::mlir::OperationName name) { return getAttributeNameForIndex(name, 5); } static constexpr ::llvm::StringLiteral getOperationName() { return ::llvm::StringLiteral("rocdl.load.async.to.lds"); } std::pair getODSOperandIndexAndLength(unsigned index) { return {index, 1}; } ::mlir::Operation::operand_range getODSOperands(unsigned index) { auto valueRange = getODSOperandIndexAndLength(index); return {std::next(getOperation()->operand_begin(), valueRange.first), std::next(getOperation()->operand_begin(), valueRange.first + valueRange.second)}; } ::mlir::TypedValue<::mlir::LLVM::LLVMPointerType> getGlobalPtr() { return ::llvm::cast<::mlir::TypedValue<::mlir::LLVM::LLVMPointerType>>(*getODSOperands(0).begin()); } ::mlir::TypedValue<::mlir::LLVM::LLVMPointerType> getLdsPtr() { return ::llvm::cast<::mlir::TypedValue<::mlir::LLVM::LLVMPointerType>>(*getODSOperands(1).begin()); } ::mlir::OpOperand &getGlobalPtrMutable() { auto range = getODSOperandIndexAndLength(0); return getOperation()->getOpOperand(range.first); } ::mlir::OpOperand &getLdsPtrMutable() { auto range = getODSOperandIndexAndLength(1); return getOperation()->getOpOperand(range.first); } std::pair getODSResultIndexAndLength(unsigned index) { return {index, 1}; } ::mlir::Operation::result_range getODSResults(unsigned index) { auto valueRange = getODSResultIndexAndLength(index); return {std::next(getOperation()->result_begin(), valueRange.first), std::next(getOperation()->result_begin(), valueRange.first + valueRange.second)}; } static ::llvm::LogicalResult setPropertiesFromAttr(Properties &prop, ::mlir::Attribute attr, ::llvm::function_ref<::mlir::InFlightDiagnostic()> emitError); static ::mlir::Attribute getPropertiesAsAttr(::mlir::MLIRContext *ctx, const Properties &prop); static llvm::hash_code computePropertiesHash(const Properties &prop); static std::optional getInherentAttr(::mlir::MLIRContext *ctx, const Properties &prop, llvm::StringRef name); static void setInherentAttr(Properties &prop, llvm::StringRef name, mlir::Attribute value); static void populateInherentAttrs(::mlir::MLIRContext *ctx, const Properties &prop, ::mlir::NamedAttrList &attrs); static ::llvm::LogicalResult verifyInherentAttrs(::mlir::OperationName opName, ::mlir::NamedAttrList &attrs, llvm::function_ref<::mlir::InFlightDiagnostic()> emitError); static ::llvm::LogicalResult readProperties(::mlir::DialectBytecodeReader &reader, ::mlir::OperationState &state); void writeProperties(::mlir::DialectBytecodeWriter &writer); ::mlir::IntegerAttr getSizeAttr() { return ::llvm::cast<::mlir::IntegerAttr>(getProperties().size); } uint32_t getSize(); ::mlir::IntegerAttr getOffsetAttr() { return ::llvm::cast<::mlir::IntegerAttr>(getProperties().offset); } uint32_t getOffset(); ::mlir::Attribute getAuxAttr() { return ::llvm::dyn_cast_or_null<::mlir::Attribute>(getProperties().aux); } ::mlir::Attribute getAux(); ::mlir::ArrayAttr getAliasScopesAttr() { return ::llvm::dyn_cast_or_null<::mlir::ArrayAttr>(getProperties().alias_scopes); } ::std::optional< ::mlir::ArrayAttr > getAliasScopes(); ::mlir::ArrayAttr getNoaliasScopesAttr() { return ::llvm::dyn_cast_or_null<::mlir::ArrayAttr>(getProperties().noalias_scopes); } ::std::optional< ::mlir::ArrayAttr > getNoaliasScopes(); ::mlir::ArrayAttr getTbaaAttr() { return ::llvm::dyn_cast_or_null<::mlir::ArrayAttr>(getProperties().tbaa); } ::std::optional< ::mlir::ArrayAttr > getTbaa(); void setSizeAttr(::mlir::IntegerAttr attr) { getProperties().size = attr; } void setSize(uint32_t attrValue); void setOffsetAttr(::mlir::IntegerAttr attr) { getProperties().offset = attr; } void setOffset(uint32_t attrValue); void setAuxAttr(::mlir::Attribute attr) { getProperties().aux = attr; } void setAliasScopesAttr(::mlir::ArrayAttr attr) { getProperties().alias_scopes = attr; } void setNoaliasScopesAttr(::mlir::ArrayAttr attr) { getProperties().noalias_scopes = attr; } void setTbaaAttr(::mlir::ArrayAttr attr) { getProperties().tbaa = attr; } ::mlir::Attribute removeAliasScopesAttr() { auto attr = getProperties().alias_scopes; getProperties().alias_scopes = {}; return attr; } ::mlir::Attribute removeNoaliasScopesAttr() { auto attr = getProperties().noalias_scopes; getProperties().noalias_scopes = {}; return attr; } ::mlir::Attribute removeTbaaAttr() { auto attr = getProperties().tbaa; getProperties().tbaa = {}; return attr; } static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::Value globalPtr, ::mlir::Value ldsPtr, ::mlir::IntegerAttr size, ::mlir::IntegerAttr offset, ::mlir::Attribute aux, /*optional*/::mlir::ArrayAttr alias_scopes, /*optional*/::mlir::ArrayAttr noalias_scopes, /*optional*/::mlir::ArrayAttr tbaa); static LoadAsyncToLDSOp create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::Value globalPtr, ::mlir::Value ldsPtr, ::mlir::IntegerAttr size, ::mlir::IntegerAttr offset, ::mlir::Attribute aux, /*optional*/::mlir::ArrayAttr alias_scopes, /*optional*/::mlir::ArrayAttr noalias_scopes, /*optional*/::mlir::ArrayAttr tbaa); static LoadAsyncToLDSOp create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::Value globalPtr, ::mlir::Value ldsPtr, ::mlir::IntegerAttr size, ::mlir::IntegerAttr offset, ::mlir::Attribute aux, /*optional*/::mlir::ArrayAttr alias_scopes, /*optional*/::mlir::ArrayAttr noalias_scopes, /*optional*/::mlir::ArrayAttr tbaa); static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::Value globalPtr, ::mlir::Value ldsPtr, ::mlir::IntegerAttr size, ::mlir::IntegerAttr offset, ::mlir::Attribute aux, /*optional*/::mlir::ArrayAttr alias_scopes, /*optional*/::mlir::ArrayAttr noalias_scopes, /*optional*/::mlir::ArrayAttr tbaa); static LoadAsyncToLDSOp create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::Value globalPtr, ::mlir::Value ldsPtr, ::mlir::IntegerAttr size, ::mlir::IntegerAttr offset, ::mlir::Attribute aux, /*optional*/::mlir::ArrayAttr alias_scopes, /*optional*/::mlir::ArrayAttr noalias_scopes, /*optional*/::mlir::ArrayAttr tbaa); static LoadAsyncToLDSOp create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::Value globalPtr, ::mlir::Value ldsPtr, ::mlir::IntegerAttr size, ::mlir::IntegerAttr offset, ::mlir::Attribute aux, /*optional*/::mlir::ArrayAttr alias_scopes, /*optional*/::mlir::ArrayAttr noalias_scopes, /*optional*/::mlir::ArrayAttr tbaa); static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::Value globalPtr, ::mlir::Value ldsPtr, uint32_t size, uint32_t offset, ::mlir::Attribute aux, /*optional*/::mlir::ArrayAttr alias_scopes, /*optional*/::mlir::ArrayAttr noalias_scopes, /*optional*/::mlir::ArrayAttr tbaa); static LoadAsyncToLDSOp create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::Value globalPtr, ::mlir::Value ldsPtr, uint32_t size, uint32_t offset, ::mlir::Attribute aux, /*optional*/::mlir::ArrayAttr alias_scopes, /*optional*/::mlir::ArrayAttr noalias_scopes, /*optional*/::mlir::ArrayAttr tbaa); static LoadAsyncToLDSOp create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::Value globalPtr, ::mlir::Value ldsPtr, uint32_t size, uint32_t offset, ::mlir::Attribute aux, /*optional*/::mlir::ArrayAttr alias_scopes, /*optional*/::mlir::ArrayAttr noalias_scopes, /*optional*/::mlir::ArrayAttr tbaa); static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::Value globalPtr, ::mlir::Value ldsPtr, uint32_t size, uint32_t offset, ::mlir::Attribute aux, /*optional*/::mlir::ArrayAttr alias_scopes, /*optional*/::mlir::ArrayAttr noalias_scopes, /*optional*/::mlir::ArrayAttr tbaa); static LoadAsyncToLDSOp create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::Value globalPtr, ::mlir::Value ldsPtr, uint32_t size, uint32_t offset, ::mlir::Attribute aux, /*optional*/::mlir::ArrayAttr alias_scopes, /*optional*/::mlir::ArrayAttr noalias_scopes, /*optional*/::mlir::ArrayAttr tbaa); static LoadAsyncToLDSOp create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::Value globalPtr, ::mlir::Value ldsPtr, uint32_t size, uint32_t offset, ::mlir::Attribute aux, /*optional*/::mlir::ArrayAttr alias_scopes, /*optional*/::mlir::ArrayAttr noalias_scopes, /*optional*/::mlir::ArrayAttr tbaa); static void build(::mlir::OpBuilder &, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, ::llvm::ArrayRef<::mlir::NamedAttribute> attributes = {}); static LoadAsyncToLDSOp create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, ::llvm::ArrayRef<::mlir::NamedAttribute> attributes = {}); static LoadAsyncToLDSOp create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, ::llvm::ArrayRef<::mlir::NamedAttribute> attributes = {}); static void build(::mlir::OpBuilder &, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, const Properties &properties, ::llvm::ArrayRef<::mlir::NamedAttribute> discardableAttributes = {}); static LoadAsyncToLDSOp create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, const Properties &properties, ::llvm::ArrayRef<::mlir::NamedAttribute> discardableAttributes = {}); static LoadAsyncToLDSOp create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, const Properties &properties, ::llvm::ArrayRef<::mlir::NamedAttribute> discardableAttributes = {}); static void populateDefaultProperties(::mlir::OperationName opName, Properties &properties); ::llvm::LogicalResult verifyInvariantsImpl(); ::llvm::LogicalResult verifyInvariants(); ::llvm::SmallVector<::mlir::Value> getAccessedOperands(); static ::mlir::ParseResult parse(::mlir::OpAsmParser &parser, ::mlir::OperationState &result); void print(::mlir::OpAsmPrinter &_odsPrinter); void getEffects(::llvm::SmallVectorImpl<::mlir::SideEffects::EffectInstance<::mlir::MemoryEffects::Effect>> &effects); private: ::mlir::StringAttr getAttributeNameForIndex(unsigned index) { return getAttributeNameForIndex((*this)->getName(), index); } static ::mlir::StringAttr getAttributeNameForIndex(::mlir::OperationName name, unsigned index) { assert(index < 6 && "invalid attribute index"); assert(name.getStringRef() == getOperationName() && "invalid operation name"); assert(name.isRegistered() && "Operation isn't registered, missing a " "dependent dialect loading?"); return name.getAttributeNames()[index]; } public: }; } // namespace mlir::ROCDL MLIR_DECLARE_EXPLICIT_TYPE_ID(::mlir::ROCDL::LoadAsyncToLDSOp) MLIR_DECLARE_EXPLICIT_TYPE_ID(::mlir::ROCDL::detail::LoadAsyncToLDSOpGenericAdaptorBase::Properties) namespace mlir::ROCDL { //===----------------------------------------------------------------------===// // ::mlir::ROCDL::LoadToLDSOp declarations //===----------------------------------------------------------------------===// namespace detail { class LoadToLDSOpGenericAdaptorBase { public: struct Properties { using alias_scopesTy = ::mlir::ArrayAttr; alias_scopesTy alias_scopes; auto getAliasScopes() const { auto &propStorage = this->alias_scopes; return ::llvm::dyn_cast_or_null<::mlir::ArrayAttr>(propStorage); } void setAliasScopes(const ::mlir::ArrayAttr &propValue) { this->alias_scopes = propValue; } using auxTy = ::mlir::Attribute; auxTy aux; auto getAux() const { auto &propStorage = this->aux; return ::llvm::dyn_cast_or_null<::mlir::Attribute>(propStorage); } void setAux(const ::mlir::Attribute &propValue) { this->aux = propValue; } using noalias_scopesTy = ::mlir::ArrayAttr; noalias_scopesTy noalias_scopes; auto getNoaliasScopes() const { auto &propStorage = this->noalias_scopes; return ::llvm::dyn_cast_or_null<::mlir::ArrayAttr>(propStorage); } void setNoaliasScopes(const ::mlir::ArrayAttr &propValue) { this->noalias_scopes = propValue; } using offsetTy = ::mlir::IntegerAttr; offsetTy offset; auto getOffset() const { auto &propStorage = this->offset; return ::llvm::cast<::mlir::IntegerAttr>(propStorage); } void setOffset(const ::mlir::IntegerAttr &propValue) { this->offset = propValue; } using sizeTy = ::mlir::IntegerAttr; sizeTy size; auto getSize() const { auto &propStorage = this->size; return ::llvm::cast<::mlir::IntegerAttr>(propStorage); } void setSize(const ::mlir::IntegerAttr &propValue) { this->size = propValue; } using tbaaTy = ::mlir::ArrayAttr; tbaaTy tbaa; auto getTbaa() const { auto &propStorage = this->tbaa; return ::llvm::dyn_cast_or_null<::mlir::ArrayAttr>(propStorage); } void setTbaa(const ::mlir::ArrayAttr &propValue) { this->tbaa = propValue; } bool operator==(const Properties &rhs) const { return rhs.alias_scopes == this->alias_scopes && rhs.aux == this->aux && rhs.noalias_scopes == this->noalias_scopes && rhs.offset == this->offset && rhs.size == this->size && rhs.tbaa == this->tbaa && true; } bool operator!=(const Properties &rhs) const { return !(*this == rhs); } }; protected: ::mlir::DictionaryAttr odsAttrs; ::std::optional<::mlir::OperationName> odsOpName; Properties properties; ::mlir::RegionRange odsRegions; public: LoadToLDSOpGenericAdaptorBase(::mlir::DictionaryAttr attrs, const Properties &properties, ::mlir::RegionRange regions = {}) : odsAttrs(attrs), properties(properties), odsRegions(regions) { if (odsAttrs) odsOpName.emplace("rocdl.load.to.lds", odsAttrs.getContext()); } LoadToLDSOpGenericAdaptorBase(LoadToLDSOp op); std::pair getODSOperandIndexAndLength(unsigned index, unsigned odsOperandsSize) { return {index, 1}; } const Properties &getProperties() { return properties; } ::mlir::DictionaryAttr getAttributes() { return odsAttrs; } ::mlir::IntegerAttr getSizeAttr() { auto attr = ::llvm::cast<::mlir::IntegerAttr>(getProperties().size); return attr; } uint32_t getSize(); ::mlir::IntegerAttr getOffsetAttr() { auto attr = ::llvm::cast<::mlir::IntegerAttr>(getProperties().offset); return attr; } uint32_t getOffset(); ::mlir::Attribute getAuxAttr(); ::mlir::Attribute getAux(); ::mlir::ArrayAttr getAliasScopesAttr() { auto attr = ::llvm::dyn_cast_or_null<::mlir::ArrayAttr>(getProperties().alias_scopes); return attr; } ::std::optional< ::mlir::ArrayAttr > getAliasScopes(); ::mlir::ArrayAttr getNoaliasScopesAttr() { auto attr = ::llvm::dyn_cast_or_null<::mlir::ArrayAttr>(getProperties().noalias_scopes); return attr; } ::std::optional< ::mlir::ArrayAttr > getNoaliasScopes(); ::mlir::ArrayAttr getTbaaAttr() { auto attr = ::llvm::dyn_cast_or_null<::mlir::ArrayAttr>(getProperties().tbaa); return attr; } ::std::optional< ::mlir::ArrayAttr > getTbaa(); }; } // namespace detail template class LoadToLDSOpGenericAdaptor : public detail::LoadToLDSOpGenericAdaptorBase { using ValueT = ::llvm::detail::ValueOfRange; using Base = detail::LoadToLDSOpGenericAdaptorBase; static constexpr int odsIndex_globalPtr = 0; static constexpr int odsIndex_ldsPtr = 1; public: LoadToLDSOpGenericAdaptor(RangeT values, ::mlir::DictionaryAttr attrs, const Properties &properties, ::mlir::RegionRange regions = {}) : Base(attrs, properties, regions), odsOperands(values) {} LoadToLDSOpGenericAdaptor(RangeT values, ::mlir::DictionaryAttr attrs, ::mlir::PropertyRef properties, ::mlir::RegionRange regions = {}) : LoadToLDSOpGenericAdaptor(values, attrs, (properties ? *properties.as() : Properties{}), regions) {} LoadToLDSOpGenericAdaptor(RangeT values, ::mlir::DictionaryAttr attrs = nullptr) : LoadToLDSOpGenericAdaptor(values, attrs, Properties{}, {}) {} LoadToLDSOpGenericAdaptor(RangeT values, const LoadToLDSOpGenericAdaptorBase &base) : Base(base), odsOperands(values) {} template >> LoadToLDSOpGenericAdaptor(RangeT values, LateInst op) : Base(op), odsOperands(values) {} std::pair getODSOperandIndexAndLength(unsigned index) { return Base::getODSOperandIndexAndLength(index, odsOperands.size()); } RangeT getODSOperands(unsigned index) { auto valueRange = getODSOperandIndexAndLength(index); return {std::next(odsOperands.begin(), valueRange.first), std::next(odsOperands.begin(), valueRange.first + valueRange.second)}; } ValueT getGlobalPtr() { return (*getODSOperands(0).begin()); } ValueT getLdsPtr() { return (*getODSOperands(1).begin()); } RangeT getOperands() { return odsOperands; } private: RangeT odsOperands; }; class LoadToLDSOpAdaptor : public LoadToLDSOpGenericAdaptor<::mlir::ValueRange> { public: using LoadToLDSOpGenericAdaptor::LoadToLDSOpGenericAdaptor; LoadToLDSOpAdaptor(LoadToLDSOp op); ::llvm::LogicalResult verify(::mlir::Location loc); }; class LoadToLDSOp : public ::mlir::Op::Impl, ::mlir::OpTrait::OpInvariants, ::mlir::BytecodeOpInterface::Trait, ::mlir::LLVM::AliasAnalysisOpInterface::Trait, ::mlir::MemoryEffectOpInterface::Trait> { public: using Op::Op; using Op::print; using Adaptor = LoadToLDSOpAdaptor; template using GenericAdaptor = LoadToLDSOpGenericAdaptor; using FoldAdaptor = GenericAdaptor<::llvm::ArrayRef<::mlir::Attribute>>; static constexpr int odsIndex_globalPtr = 0; static constexpr int odsIndex_ldsPtr = 1; using Properties = FoldAdaptor::Properties; using ::mlir::LLVM::AliasAnalysisOpInterface::Trait::getAliasScopesOrNull; using ::mlir::LLVM::AliasAnalysisOpInterface::Trait::setAliasScopes; using ::mlir::LLVM::AliasAnalysisOpInterface::Trait::getNoAliasScopesOrNull; using ::mlir::LLVM::AliasAnalysisOpInterface::Trait::setNoAliasScopes; using ::mlir::LLVM::AliasAnalysisOpInterface::Trait::getTBAATagsOrNull; using ::mlir::LLVM::AliasAnalysisOpInterface::Trait::setTBAATags; static ::llvm::ArrayRef<::llvm::StringRef> getAttributeNames() { static ::llvm::StringRef attrNames[] = {::llvm::StringRef("alias_scopes"), ::llvm::StringRef("aux"), ::llvm::StringRef("noalias_scopes"), ::llvm::StringRef("offset"), ::llvm::StringRef("size"), ::llvm::StringRef("tbaa")}; return ::llvm::ArrayRef(attrNames); } ::mlir::StringAttr getAliasScopesAttrName() { return getAttributeNameForIndex(0); } static ::mlir::StringAttr getAliasScopesAttrName(::mlir::OperationName name) { return getAttributeNameForIndex(name, 0); } ::mlir::StringAttr getAuxAttrName() { return getAttributeNameForIndex(1); } static ::mlir::StringAttr getAuxAttrName(::mlir::OperationName name) { return getAttributeNameForIndex(name, 1); } ::mlir::StringAttr getNoaliasScopesAttrName() { return getAttributeNameForIndex(2); } static ::mlir::StringAttr getNoaliasScopesAttrName(::mlir::OperationName name) { return getAttributeNameForIndex(name, 2); } ::mlir::StringAttr getOffsetAttrName() { return getAttributeNameForIndex(3); } static ::mlir::StringAttr getOffsetAttrName(::mlir::OperationName name) { return getAttributeNameForIndex(name, 3); } ::mlir::StringAttr getSizeAttrName() { return getAttributeNameForIndex(4); } static ::mlir::StringAttr getSizeAttrName(::mlir::OperationName name) { return getAttributeNameForIndex(name, 4); } ::mlir::StringAttr getTbaaAttrName() { return getAttributeNameForIndex(5); } static ::mlir::StringAttr getTbaaAttrName(::mlir::OperationName name) { return getAttributeNameForIndex(name, 5); } static constexpr ::llvm::StringLiteral getOperationName() { return ::llvm::StringLiteral("rocdl.load.to.lds"); } std::pair getODSOperandIndexAndLength(unsigned index) { return {index, 1}; } ::mlir::Operation::operand_range getODSOperands(unsigned index) { auto valueRange = getODSOperandIndexAndLength(index); return {std::next(getOperation()->operand_begin(), valueRange.first), std::next(getOperation()->operand_begin(), valueRange.first + valueRange.second)}; } ::mlir::TypedValue<::mlir::LLVM::LLVMPointerType> getGlobalPtr() { return ::llvm::cast<::mlir::TypedValue<::mlir::LLVM::LLVMPointerType>>(*getODSOperands(0).begin()); } ::mlir::TypedValue<::mlir::LLVM::LLVMPointerType> getLdsPtr() { return ::llvm::cast<::mlir::TypedValue<::mlir::LLVM::LLVMPointerType>>(*getODSOperands(1).begin()); } ::mlir::OpOperand &getGlobalPtrMutable() { auto range = getODSOperandIndexAndLength(0); return getOperation()->getOpOperand(range.first); } ::mlir::OpOperand &getLdsPtrMutable() { auto range = getODSOperandIndexAndLength(1); return getOperation()->getOpOperand(range.first); } std::pair getODSResultIndexAndLength(unsigned index) { return {index, 1}; } ::mlir::Operation::result_range getODSResults(unsigned index) { auto valueRange = getODSResultIndexAndLength(index); return {std::next(getOperation()->result_begin(), valueRange.first), std::next(getOperation()->result_begin(), valueRange.first + valueRange.second)}; } static ::llvm::LogicalResult setPropertiesFromAttr(Properties &prop, ::mlir::Attribute attr, ::llvm::function_ref<::mlir::InFlightDiagnostic()> emitError); static ::mlir::Attribute getPropertiesAsAttr(::mlir::MLIRContext *ctx, const Properties &prop); static llvm::hash_code computePropertiesHash(const Properties &prop); static std::optional getInherentAttr(::mlir::MLIRContext *ctx, const Properties &prop, llvm::StringRef name); static void setInherentAttr(Properties &prop, llvm::StringRef name, mlir::Attribute value); static void populateInherentAttrs(::mlir::MLIRContext *ctx, const Properties &prop, ::mlir::NamedAttrList &attrs); static ::llvm::LogicalResult verifyInherentAttrs(::mlir::OperationName opName, ::mlir::NamedAttrList &attrs, llvm::function_ref<::mlir::InFlightDiagnostic()> emitError); static ::llvm::LogicalResult readProperties(::mlir::DialectBytecodeReader &reader, ::mlir::OperationState &state); void writeProperties(::mlir::DialectBytecodeWriter &writer); ::mlir::IntegerAttr getSizeAttr() { return ::llvm::cast<::mlir::IntegerAttr>(getProperties().size); } uint32_t getSize(); ::mlir::IntegerAttr getOffsetAttr() { return ::llvm::cast<::mlir::IntegerAttr>(getProperties().offset); } uint32_t getOffset(); ::mlir::Attribute getAuxAttr() { return ::llvm::dyn_cast_or_null<::mlir::Attribute>(getProperties().aux); } ::mlir::Attribute getAux(); ::mlir::ArrayAttr getAliasScopesAttr() { return ::llvm::dyn_cast_or_null<::mlir::ArrayAttr>(getProperties().alias_scopes); } ::std::optional< ::mlir::ArrayAttr > getAliasScopes(); ::mlir::ArrayAttr getNoaliasScopesAttr() { return ::llvm::dyn_cast_or_null<::mlir::ArrayAttr>(getProperties().noalias_scopes); } ::std::optional< ::mlir::ArrayAttr > getNoaliasScopes(); ::mlir::ArrayAttr getTbaaAttr() { return ::llvm::dyn_cast_or_null<::mlir::ArrayAttr>(getProperties().tbaa); } ::std::optional< ::mlir::ArrayAttr > getTbaa(); void setSizeAttr(::mlir::IntegerAttr attr) { getProperties().size = attr; } void setSize(uint32_t attrValue); void setOffsetAttr(::mlir::IntegerAttr attr) { getProperties().offset = attr; } void setOffset(uint32_t attrValue); void setAuxAttr(::mlir::Attribute attr) { getProperties().aux = attr; } void setAliasScopesAttr(::mlir::ArrayAttr attr) { getProperties().alias_scopes = attr; } void setNoaliasScopesAttr(::mlir::ArrayAttr attr) { getProperties().noalias_scopes = attr; } void setTbaaAttr(::mlir::ArrayAttr attr) { getProperties().tbaa = attr; } ::mlir::Attribute removeAliasScopesAttr() { auto attr = getProperties().alias_scopes; getProperties().alias_scopes = {}; return attr; } ::mlir::Attribute removeNoaliasScopesAttr() { auto attr = getProperties().noalias_scopes; getProperties().noalias_scopes = {}; return attr; } ::mlir::Attribute removeTbaaAttr() { auto attr = getProperties().tbaa; getProperties().tbaa = {}; return attr; } static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::Value globalPtr, ::mlir::Value ldsPtr, ::mlir::IntegerAttr size, ::mlir::IntegerAttr offset, ::mlir::Attribute aux, /*optional*/::mlir::ArrayAttr alias_scopes, /*optional*/::mlir::ArrayAttr noalias_scopes, /*optional*/::mlir::ArrayAttr tbaa); static LoadToLDSOp create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::Value globalPtr, ::mlir::Value ldsPtr, ::mlir::IntegerAttr size, ::mlir::IntegerAttr offset, ::mlir::Attribute aux, /*optional*/::mlir::ArrayAttr alias_scopes, /*optional*/::mlir::ArrayAttr noalias_scopes, /*optional*/::mlir::ArrayAttr tbaa); static LoadToLDSOp create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::Value globalPtr, ::mlir::Value ldsPtr, ::mlir::IntegerAttr size, ::mlir::IntegerAttr offset, ::mlir::Attribute aux, /*optional*/::mlir::ArrayAttr alias_scopes, /*optional*/::mlir::ArrayAttr noalias_scopes, /*optional*/::mlir::ArrayAttr tbaa); static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::Value globalPtr, ::mlir::Value ldsPtr, ::mlir::IntegerAttr size, ::mlir::IntegerAttr offset, ::mlir::Attribute aux, /*optional*/::mlir::ArrayAttr alias_scopes, /*optional*/::mlir::ArrayAttr noalias_scopes, /*optional*/::mlir::ArrayAttr tbaa); static LoadToLDSOp create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::Value globalPtr, ::mlir::Value ldsPtr, ::mlir::IntegerAttr size, ::mlir::IntegerAttr offset, ::mlir::Attribute aux, /*optional*/::mlir::ArrayAttr alias_scopes, /*optional*/::mlir::ArrayAttr noalias_scopes, /*optional*/::mlir::ArrayAttr tbaa); static LoadToLDSOp create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::Value globalPtr, ::mlir::Value ldsPtr, ::mlir::IntegerAttr size, ::mlir::IntegerAttr offset, ::mlir::Attribute aux, /*optional*/::mlir::ArrayAttr alias_scopes, /*optional*/::mlir::ArrayAttr noalias_scopes, /*optional*/::mlir::ArrayAttr tbaa); static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::Value globalPtr, ::mlir::Value ldsPtr, uint32_t size, uint32_t offset, ::mlir::Attribute aux, /*optional*/::mlir::ArrayAttr alias_scopes, /*optional*/::mlir::ArrayAttr noalias_scopes, /*optional*/::mlir::ArrayAttr tbaa); static LoadToLDSOp create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::Value globalPtr, ::mlir::Value ldsPtr, uint32_t size, uint32_t offset, ::mlir::Attribute aux, /*optional*/::mlir::ArrayAttr alias_scopes, /*optional*/::mlir::ArrayAttr noalias_scopes, /*optional*/::mlir::ArrayAttr tbaa); static LoadToLDSOp create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::Value globalPtr, ::mlir::Value ldsPtr, uint32_t size, uint32_t offset, ::mlir::Attribute aux, /*optional*/::mlir::ArrayAttr alias_scopes, /*optional*/::mlir::ArrayAttr noalias_scopes, /*optional*/::mlir::ArrayAttr tbaa); static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::Value globalPtr, ::mlir::Value ldsPtr, uint32_t size, uint32_t offset, ::mlir::Attribute aux, /*optional*/::mlir::ArrayAttr alias_scopes, /*optional*/::mlir::ArrayAttr noalias_scopes, /*optional*/::mlir::ArrayAttr tbaa); static LoadToLDSOp create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::Value globalPtr, ::mlir::Value ldsPtr, uint32_t size, uint32_t offset, ::mlir::Attribute aux, /*optional*/::mlir::ArrayAttr alias_scopes, /*optional*/::mlir::ArrayAttr noalias_scopes, /*optional*/::mlir::ArrayAttr tbaa); static LoadToLDSOp create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::Value globalPtr, ::mlir::Value ldsPtr, uint32_t size, uint32_t offset, ::mlir::Attribute aux, /*optional*/::mlir::ArrayAttr alias_scopes, /*optional*/::mlir::ArrayAttr noalias_scopes, /*optional*/::mlir::ArrayAttr tbaa); static void build(::mlir::OpBuilder &, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, ::llvm::ArrayRef<::mlir::NamedAttribute> attributes = {}); static LoadToLDSOp create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, ::llvm::ArrayRef<::mlir::NamedAttribute> attributes = {}); static LoadToLDSOp create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, ::llvm::ArrayRef<::mlir::NamedAttribute> attributes = {}); static void build(::mlir::OpBuilder &, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, const Properties &properties, ::llvm::ArrayRef<::mlir::NamedAttribute> discardableAttributes = {}); static LoadToLDSOp create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, const Properties &properties, ::llvm::ArrayRef<::mlir::NamedAttribute> discardableAttributes = {}); static LoadToLDSOp create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, const Properties &properties, ::llvm::ArrayRef<::mlir::NamedAttribute> discardableAttributes = {}); static void populateDefaultProperties(::mlir::OperationName opName, Properties &properties); ::llvm::LogicalResult verifyInvariantsImpl(); ::llvm::LogicalResult verifyInvariants(); ::llvm::SmallVector<::mlir::Value> getAccessedOperands(); static ::mlir::ParseResult parse(::mlir::OpAsmParser &parser, ::mlir::OperationState &result); void print(::mlir::OpAsmPrinter &_odsPrinter); void getEffects(::llvm::SmallVectorImpl<::mlir::SideEffects::EffectInstance<::mlir::MemoryEffects::Effect>> &effects); private: ::mlir::StringAttr getAttributeNameForIndex(unsigned index) { return getAttributeNameForIndex((*this)->getName(), index); } static ::mlir::StringAttr getAttributeNameForIndex(::mlir::OperationName name, unsigned index) { assert(index < 6 && "invalid attribute index"); assert(name.getStringRef() == getOperationName() && "invalid operation name"); assert(name.isRegistered() && "Operation isn't registered, missing a " "dependent dialect loading?"); return name.getAttributeNames()[index]; } public: }; } // namespace mlir::ROCDL MLIR_DECLARE_EXPLICIT_TYPE_ID(::mlir::ROCDL::LoadToLDSOp) MLIR_DECLARE_EXPLICIT_TYPE_ID(::mlir::ROCDL::detail::LoadToLDSOpGenericAdaptorBase::Properties) namespace mlir::ROCDL { //===----------------------------------------------------------------------===// // ::mlir::ROCDL::MakeBufferRsrcOp declarations //===----------------------------------------------------------------------===// namespace detail { class MakeBufferRsrcOpGenericAdaptorBase { public: using Properties = ::mlir::EmptyProperties; protected: ::mlir::DictionaryAttr odsAttrs; ::std::optional<::mlir::OperationName> odsOpName; Properties properties; ::mlir::RegionRange odsRegions; public: MakeBufferRsrcOpGenericAdaptorBase(::mlir::DictionaryAttr attrs, const Properties &properties, ::mlir::RegionRange regions = {}) : odsAttrs(attrs), properties(properties), odsRegions(regions) { if (odsAttrs) odsOpName.emplace("rocdl.make.buffer.rsrc", odsAttrs.getContext()); } MakeBufferRsrcOpGenericAdaptorBase(MakeBufferRsrcOp op); std::pair getODSOperandIndexAndLength(unsigned index, unsigned odsOperandsSize) { return {index, 1}; } const Properties &getProperties() { return properties; } ::mlir::DictionaryAttr getAttributes() { return odsAttrs; } }; } // namespace detail template class MakeBufferRsrcOpGenericAdaptor : public detail::MakeBufferRsrcOpGenericAdaptorBase { using ValueT = ::llvm::detail::ValueOfRange; using Base = detail::MakeBufferRsrcOpGenericAdaptorBase; static constexpr int odsIndex_base = 0; static constexpr int odsIndex_stride = 1; static constexpr int odsIndex_numRecords = 2; static constexpr int odsIndex_flags = 3; public: MakeBufferRsrcOpGenericAdaptor(RangeT values, ::mlir::DictionaryAttr attrs, const Properties &properties, ::mlir::RegionRange regions = {}) : Base(attrs, properties, regions), odsOperands(values) {} MakeBufferRsrcOpGenericAdaptor(RangeT values, ::mlir::DictionaryAttr attrs, ::mlir::PropertyRef properties, ::mlir::RegionRange regions = {}) : MakeBufferRsrcOpGenericAdaptor(values, attrs, (properties ? *properties.as() : Properties{}), regions) {} MakeBufferRsrcOpGenericAdaptor(RangeT values, ::mlir::DictionaryAttr attrs = nullptr) : MakeBufferRsrcOpGenericAdaptor(values, attrs, Properties{}, {}) {} MakeBufferRsrcOpGenericAdaptor(RangeT values, const MakeBufferRsrcOpGenericAdaptorBase &base) : Base(base), odsOperands(values) {} template >> MakeBufferRsrcOpGenericAdaptor(RangeT values, LateInst op) : Base(op), odsOperands(values) {} std::pair getODSOperandIndexAndLength(unsigned index) { return Base::getODSOperandIndexAndLength(index, odsOperands.size()); } RangeT getODSOperands(unsigned index) { auto valueRange = getODSOperandIndexAndLength(index); return {std::next(odsOperands.begin(), valueRange.first), std::next(odsOperands.begin(), valueRange.first + valueRange.second)}; } ValueT getBase() { return (*getODSOperands(0).begin()); } ValueT getStride() { return (*getODSOperands(1).begin()); } ValueT getNumRecords() { return (*getODSOperands(2).begin()); } ValueT getFlags() { return (*getODSOperands(3).begin()); } RangeT getOperands() { return odsOperands; } private: RangeT odsOperands; }; class MakeBufferRsrcOpAdaptor : public MakeBufferRsrcOpGenericAdaptor<::mlir::ValueRange> { public: using MakeBufferRsrcOpGenericAdaptor::MakeBufferRsrcOpGenericAdaptor; MakeBufferRsrcOpAdaptor(MakeBufferRsrcOp op); ::llvm::LogicalResult verify(::mlir::Location loc); }; class MakeBufferRsrcOp : public ::mlir::Op::Impl, ::mlir::OpTrait::ZeroSuccessors, ::mlir::OpTrait::NOperands<4>::Impl, ::mlir::OpTrait::OpInvariants, ::mlir::ConditionallySpeculatable::Trait, ::mlir::OpTrait::AlwaysSpeculatableImplTrait, ::mlir::MemoryEffectOpInterface::Trait> { public: using Op::Op; using Op::print; using Adaptor = MakeBufferRsrcOpAdaptor; template using GenericAdaptor = MakeBufferRsrcOpGenericAdaptor; using FoldAdaptor = GenericAdaptor<::llvm::ArrayRef<::mlir::Attribute>>; static constexpr int odsIndex_base = 0; static constexpr int odsIndex_stride = 1; static constexpr int odsIndex_numRecords = 2; static constexpr int odsIndex_flags = 3; using Properties = FoldAdaptor::Properties; static ::llvm::ArrayRef<::llvm::StringRef> getAttributeNames() { return {}; } static constexpr ::llvm::StringLiteral getOperationName() { return ::llvm::StringLiteral("rocdl.make.buffer.rsrc"); } std::pair getODSOperandIndexAndLength(unsigned index) { return {index, 1}; } ::mlir::Operation::operand_range getODSOperands(unsigned index) { auto valueRange = getODSOperandIndexAndLength(index); return {std::next(getOperation()->operand_begin(), valueRange.first), std::next(getOperation()->operand_begin(), valueRange.first + valueRange.second)}; } ::mlir::TypedValue<::mlir::LLVM::LLVMPointerType> getBase() { return ::llvm::cast<::mlir::TypedValue<::mlir::LLVM::LLVMPointerType>>(*getODSOperands(0).begin()); } ::mlir::TypedValue<::mlir::IntegerType> getStride() { return ::llvm::cast<::mlir::TypedValue<::mlir::IntegerType>>(*getODSOperands(1).begin()); } ::mlir::TypedValue<::mlir::IntegerType> getNumRecords() { return ::llvm::cast<::mlir::TypedValue<::mlir::IntegerType>>(*getODSOperands(2).begin()); } ::mlir::TypedValue<::mlir::IntegerType> getFlags() { return ::llvm::cast<::mlir::TypedValue<::mlir::IntegerType>>(*getODSOperands(3).begin()); } ::mlir::OpOperand &getBaseMutable() { auto range = getODSOperandIndexAndLength(0); return getOperation()->getOpOperand(range.first); } ::mlir::OpOperand &getStrideMutable() { auto range = getODSOperandIndexAndLength(1); return getOperation()->getOpOperand(range.first); } ::mlir::OpOperand &getNumRecordsMutable() { auto range = getODSOperandIndexAndLength(2); return getOperation()->getOpOperand(range.first); } ::mlir::OpOperand &getFlagsMutable() { auto range = getODSOperandIndexAndLength(3); return getOperation()->getOpOperand(range.first); } std::pair getODSResultIndexAndLength(unsigned index) { return {index, 1}; } ::mlir::Operation::result_range getODSResults(unsigned index) { auto valueRange = getODSResultIndexAndLength(index); return {std::next(getOperation()->result_begin(), valueRange.first), std::next(getOperation()->result_begin(), valueRange.first + valueRange.second)}; } ::mlir::TypedValue<::mlir::LLVM::LLVMPointerType> getRes() { return ::llvm::cast<::mlir::TypedValue<::mlir::LLVM::LLVMPointerType>>(*getODSResults(0).begin()); } static ::llvm::LogicalResult setPropertiesFromAttr(Properties &prop, ::mlir::Attribute attr, ::llvm::function_ref<::mlir::InFlightDiagnostic()> emitError); static ::mlir::Attribute getPropertiesAsAttr(::mlir::MLIRContext *ctx, const Properties &prop); static llvm::hash_code computePropertiesHash(const Properties &prop); static std::optional getInherentAttr(::mlir::MLIRContext *ctx, const Properties &prop, llvm::StringRef name); static void setInherentAttr(Properties &prop, llvm::StringRef name, mlir::Attribute value); static void populateInherentAttrs(::mlir::MLIRContext *ctx, const Properties &prop, ::mlir::NamedAttrList &attrs); static ::llvm::LogicalResult verifyInherentAttrs(::mlir::OperationName opName, ::mlir::NamedAttrList &attrs, llvm::function_ref<::mlir::InFlightDiagnostic()> emitError); static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::Type res, ::mlir::Value base, ::mlir::Value stride, ::mlir::Value numRecords, ::mlir::Value flags); static MakeBufferRsrcOp create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::Type res, ::mlir::Value base, ::mlir::Value stride, ::mlir::Value numRecords, ::mlir::Value flags); static MakeBufferRsrcOp create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::Type res, ::mlir::Value base, ::mlir::Value stride, ::mlir::Value numRecords, ::mlir::Value flags); static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::Value base, ::mlir::Value stride, ::mlir::Value numRecords, ::mlir::Value flags); static MakeBufferRsrcOp create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::Value base, ::mlir::Value stride, ::mlir::Value numRecords, ::mlir::Value flags); static MakeBufferRsrcOp create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::Value base, ::mlir::Value stride, ::mlir::Value numRecords, ::mlir::Value flags); static void build(::mlir::OpBuilder &, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, ::llvm::ArrayRef<::mlir::NamedAttribute> attributes = {}); static MakeBufferRsrcOp create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, ::llvm::ArrayRef<::mlir::NamedAttribute> attributes = {}); static MakeBufferRsrcOp create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, ::llvm::ArrayRef<::mlir::NamedAttribute> attributes = {}); static void build(::mlir::OpBuilder &, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, const Properties &properties, ::llvm::ArrayRef<::mlir::NamedAttribute> discardableAttributes = {}); static MakeBufferRsrcOp create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, const Properties &properties, ::llvm::ArrayRef<::mlir::NamedAttribute> discardableAttributes = {}); static MakeBufferRsrcOp create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, const Properties &properties, ::llvm::ArrayRef<::mlir::NamedAttribute> discardableAttributes = {}); ::llvm::LogicalResult verifyInvariantsImpl(); ::llvm::LogicalResult verifyInvariants(); static ::mlir::ParseResult parse(::mlir::OpAsmParser &parser, ::mlir::OperationState &result); void print(::mlir::OpAsmPrinter &_odsPrinter); void getEffects(::llvm::SmallVectorImpl<::mlir::SideEffects::EffectInstance<::mlir::MemoryEffects::Effect>> &effects); public: }; } // namespace mlir::ROCDL MLIR_DECLARE_EXPLICIT_TYPE_ID(::mlir::ROCDL::MakeBufferRsrcOp) namespace mlir::ROCDL { //===----------------------------------------------------------------------===// // ::mlir::ROCDL::MbcntHiOp declarations //===----------------------------------------------------------------------===// namespace detail { class MbcntHiOpGenericAdaptorBase { public: struct Properties { using arg_attrsTy = ::mlir::ArrayAttr; arg_attrsTy arg_attrs; auto getArgAttrs() const { auto &propStorage = this->arg_attrs; return ::llvm::dyn_cast_or_null<::mlir::ArrayAttr>(propStorage); } void setArgAttrs(const ::mlir::ArrayAttr &propValue) { this->arg_attrs = propValue; } using res_attrsTy = ::mlir::ArrayAttr; res_attrsTy res_attrs; auto getResAttrs() const { auto &propStorage = this->res_attrs; return ::llvm::dyn_cast_or_null<::mlir::ArrayAttr>(propStorage); } void setResAttrs(const ::mlir::ArrayAttr &propValue) { this->res_attrs = propValue; } bool operator==(const Properties &rhs) const { return rhs.arg_attrs == this->arg_attrs && rhs.res_attrs == this->res_attrs && true; } bool operator!=(const Properties &rhs) const { return !(*this == rhs); } }; protected: ::mlir::DictionaryAttr odsAttrs; ::std::optional<::mlir::OperationName> odsOpName; Properties properties; ::mlir::RegionRange odsRegions; public: MbcntHiOpGenericAdaptorBase(::mlir::DictionaryAttr attrs, const Properties &properties, ::mlir::RegionRange regions = {}) : odsAttrs(attrs), properties(properties), odsRegions(regions) { if (odsAttrs) odsOpName.emplace("rocdl.mbcnt.hi", odsAttrs.getContext()); } MbcntHiOpGenericAdaptorBase(MbcntHiOp op); std::pair getODSOperandIndexAndLength(unsigned index, unsigned odsOperandsSize) { return {index, 1}; } const Properties &getProperties() { return properties; } ::mlir::DictionaryAttr getAttributes() { return odsAttrs; } ::mlir::ArrayAttr getArgAttrsAttr() { auto attr = ::llvm::dyn_cast_or_null<::mlir::ArrayAttr>(getProperties().arg_attrs); return attr; } ::std::optional< ::mlir::ArrayAttr > getArgAttrs(); ::mlir::ArrayAttr getResAttrsAttr() { auto attr = ::llvm::dyn_cast_or_null<::mlir::ArrayAttr>(getProperties().res_attrs); return attr; } ::std::optional< ::mlir::ArrayAttr > getResAttrs(); }; } // namespace detail template class MbcntHiOpGenericAdaptor : public detail::MbcntHiOpGenericAdaptorBase { using ValueT = ::llvm::detail::ValueOfRange; using Base = detail::MbcntHiOpGenericAdaptorBase; static constexpr int odsIndex_in0 = 0; static constexpr int odsIndex_in1 = 1; public: MbcntHiOpGenericAdaptor(RangeT values, ::mlir::DictionaryAttr attrs, const Properties &properties, ::mlir::RegionRange regions = {}) : Base(attrs, properties, regions), odsOperands(values) {} MbcntHiOpGenericAdaptor(RangeT values, ::mlir::DictionaryAttr attrs, ::mlir::PropertyRef properties, ::mlir::RegionRange regions = {}) : MbcntHiOpGenericAdaptor(values, attrs, (properties ? *properties.as() : Properties{}), regions) {} MbcntHiOpGenericAdaptor(RangeT values, ::mlir::DictionaryAttr attrs = nullptr) : MbcntHiOpGenericAdaptor(values, attrs, Properties{}, {}) {} MbcntHiOpGenericAdaptor(RangeT values, const MbcntHiOpGenericAdaptorBase &base) : Base(base), odsOperands(values) {} template >> MbcntHiOpGenericAdaptor(RangeT values, LateInst op) : Base(op), odsOperands(values) {} std::pair getODSOperandIndexAndLength(unsigned index) { return Base::getODSOperandIndexAndLength(index, odsOperands.size()); } RangeT getODSOperands(unsigned index) { auto valueRange = getODSOperandIndexAndLength(index); return {std::next(odsOperands.begin(), valueRange.first), std::next(odsOperands.begin(), valueRange.first + valueRange.second)}; } ValueT getIn0() { return (*getODSOperands(0).begin()); } ValueT getIn1() { return (*getODSOperands(1).begin()); } RangeT getOperands() { return odsOperands; } private: RangeT odsOperands; }; class MbcntHiOpAdaptor : public MbcntHiOpGenericAdaptor<::mlir::ValueRange> { public: using MbcntHiOpGenericAdaptor::MbcntHiOpGenericAdaptor; MbcntHiOpAdaptor(MbcntHiOp op); ::llvm::LogicalResult verify(::mlir::Location loc); }; class MbcntHiOp : public ::mlir::Op::Impl, ::mlir::OpTrait::ZeroSuccessors, ::mlir::OpTrait::NOperands<2>::Impl, ::mlir::OpTrait::OpInvariants, ::mlir::BytecodeOpInterface::Trait, ::mlir::ArgAndResultAttrsOpInterface::Trait, ::mlir::ConditionallySpeculatable::Trait, ::mlir::OpTrait::AlwaysSpeculatableImplTrait, ::mlir::MemoryEffectOpInterface::Trait> { public: using Op::Op; using Op::print; using Adaptor = MbcntHiOpAdaptor; template using GenericAdaptor = MbcntHiOpGenericAdaptor; using FoldAdaptor = GenericAdaptor<::llvm::ArrayRef<::mlir::Attribute>>; static constexpr int odsIndex_in0 = 0; static constexpr int odsIndex_in1 = 1; using Properties = FoldAdaptor::Properties; static ::llvm::ArrayRef<::llvm::StringRef> getAttributeNames() { static ::llvm::StringRef attrNames[] = {::llvm::StringRef("arg_attrs"), ::llvm::StringRef("res_attrs")}; return ::llvm::ArrayRef(attrNames); } ::mlir::StringAttr getArgAttrsAttrName() { return getAttributeNameForIndex(0); } static ::mlir::StringAttr getArgAttrsAttrName(::mlir::OperationName name) { return getAttributeNameForIndex(name, 0); } ::mlir::StringAttr getResAttrsAttrName() { return getAttributeNameForIndex(1); } static ::mlir::StringAttr getResAttrsAttrName(::mlir::OperationName name) { return getAttributeNameForIndex(name, 1); } static constexpr ::llvm::StringLiteral getOperationName() { return ::llvm::StringLiteral("rocdl.mbcnt.hi"); } std::pair getODSOperandIndexAndLength(unsigned index) { return {index, 1}; } ::mlir::Operation::operand_range getODSOperands(unsigned index) { auto valueRange = getODSOperandIndexAndLength(index); return {std::next(getOperation()->operand_begin(), valueRange.first), std::next(getOperation()->operand_begin(), valueRange.first + valueRange.second)}; } ::mlir::TypedValue<::mlir::IntegerType> getIn0() { return ::llvm::cast<::mlir::TypedValue<::mlir::IntegerType>>(*getODSOperands(0).begin()); } ::mlir::TypedValue<::mlir::IntegerType> getIn1() { return ::llvm::cast<::mlir::TypedValue<::mlir::IntegerType>>(*getODSOperands(1).begin()); } ::mlir::OpOperand &getIn0Mutable() { auto range = getODSOperandIndexAndLength(0); return getOperation()->getOpOperand(range.first); } ::mlir::OpOperand &getIn1Mutable() { auto range = getODSOperandIndexAndLength(1); return getOperation()->getOpOperand(range.first); } std::pair getODSResultIndexAndLength(unsigned index) { return {index, 1}; } ::mlir::Operation::result_range getODSResults(unsigned index) { auto valueRange = getODSResultIndexAndLength(index); return {std::next(getOperation()->result_begin(), valueRange.first), std::next(getOperation()->result_begin(), valueRange.first + valueRange.second)}; } ::mlir::TypedValue<::mlir::IntegerType> getRes() { return ::llvm::cast<::mlir::TypedValue<::mlir::IntegerType>>(*getODSResults(0).begin()); } static ::llvm::LogicalResult setPropertiesFromAttr(Properties &prop, ::mlir::Attribute attr, ::llvm::function_ref<::mlir::InFlightDiagnostic()> emitError); static ::mlir::Attribute getPropertiesAsAttr(::mlir::MLIRContext *ctx, const Properties &prop); static llvm::hash_code computePropertiesHash(const Properties &prop); static std::optional getInherentAttr(::mlir::MLIRContext *ctx, const Properties &prop, llvm::StringRef name); static void setInherentAttr(Properties &prop, llvm::StringRef name, mlir::Attribute value); static void populateInherentAttrs(::mlir::MLIRContext *ctx, const Properties &prop, ::mlir::NamedAttrList &attrs); static ::llvm::LogicalResult verifyInherentAttrs(::mlir::OperationName opName, ::mlir::NamedAttrList &attrs, llvm::function_ref<::mlir::InFlightDiagnostic()> emitError); static ::llvm::LogicalResult readProperties(::mlir::DialectBytecodeReader &reader, ::mlir::OperationState &state); void writeProperties(::mlir::DialectBytecodeWriter &writer); ::mlir::ArrayAttr getArgAttrsAttr() { return ::llvm::dyn_cast_or_null<::mlir::ArrayAttr>(getProperties().arg_attrs); } ::std::optional< ::mlir::ArrayAttr > getArgAttrs(); ::mlir::ArrayAttr getResAttrsAttr() { return ::llvm::dyn_cast_or_null<::mlir::ArrayAttr>(getProperties().res_attrs); } ::std::optional< ::mlir::ArrayAttr > getResAttrs(); void setArgAttrsAttr(::mlir::ArrayAttr attr) { getProperties().arg_attrs = attr; } void setResAttrsAttr(::mlir::ArrayAttr attr) { getProperties().res_attrs = attr; } ::mlir::Attribute removeArgAttrsAttr() { auto attr = getProperties().arg_attrs; getProperties().arg_attrs = {}; return attr; } ::mlir::Attribute removeResAttrsAttr() { auto attr = getProperties().res_attrs; getProperties().res_attrs = {}; return attr; } static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::Type res, ::mlir::Value in0, ::mlir::Value in1, /*optional*/::mlir::ArrayAttr arg_attrs, /*optional*/::mlir::ArrayAttr res_attrs); static MbcntHiOp create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::Type res, ::mlir::Value in0, ::mlir::Value in1, /*optional*/::mlir::ArrayAttr arg_attrs, /*optional*/::mlir::ArrayAttr res_attrs); static MbcntHiOp create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::Type res, ::mlir::Value in0, ::mlir::Value in1, /*optional*/::mlir::ArrayAttr arg_attrs, /*optional*/::mlir::ArrayAttr res_attrs); static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::Value in0, ::mlir::Value in1, /*optional*/::mlir::ArrayAttr arg_attrs, /*optional*/::mlir::ArrayAttr res_attrs); static MbcntHiOp create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::Value in0, ::mlir::Value in1, /*optional*/::mlir::ArrayAttr arg_attrs, /*optional*/::mlir::ArrayAttr res_attrs); static MbcntHiOp create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::Value in0, ::mlir::Value in1, /*optional*/::mlir::ArrayAttr arg_attrs, /*optional*/::mlir::ArrayAttr res_attrs); static void build(::mlir::OpBuilder &, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, ::llvm::ArrayRef<::mlir::NamedAttribute> attributes = {}); static MbcntHiOp create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, ::llvm::ArrayRef<::mlir::NamedAttribute> attributes = {}); static MbcntHiOp create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, ::llvm::ArrayRef<::mlir::NamedAttribute> attributes = {}); static void build(::mlir::OpBuilder &, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, const Properties &properties, ::llvm::ArrayRef<::mlir::NamedAttribute> discardableAttributes = {}); static MbcntHiOp create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, const Properties &properties, ::llvm::ArrayRef<::mlir::NamedAttribute> discardableAttributes = {}); static MbcntHiOp create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, const Properties &properties, ::llvm::ArrayRef<::mlir::NamedAttribute> discardableAttributes = {}); ::llvm::LogicalResult verifyInvariantsImpl(); ::llvm::LogicalResult verifyInvariants(); static ::mlir::ParseResult parse(::mlir::OpAsmParser &parser, ::mlir::OperationState &result); void print(::mlir::OpAsmPrinter &_odsPrinter); void getEffects(::llvm::SmallVectorImpl<::mlir::SideEffects::EffectInstance<::mlir::MemoryEffects::Effect>> &effects); private: ::mlir::StringAttr getAttributeNameForIndex(unsigned index) { return getAttributeNameForIndex((*this)->getName(), index); } static ::mlir::StringAttr getAttributeNameForIndex(::mlir::OperationName name, unsigned index) { assert(index < 2 && "invalid attribute index"); assert(name.getStringRef() == getOperationName() && "invalid operation name"); assert(name.isRegistered() && "Operation isn't registered, missing a " "dependent dialect loading?"); return name.getAttributeNames()[index]; } public: }; } // namespace mlir::ROCDL MLIR_DECLARE_EXPLICIT_TYPE_ID(::mlir::ROCDL::MbcntHiOp) MLIR_DECLARE_EXPLICIT_TYPE_ID(::mlir::ROCDL::detail::MbcntHiOpGenericAdaptorBase::Properties) namespace mlir::ROCDL { //===----------------------------------------------------------------------===// // ::mlir::ROCDL::MbcntLoOp declarations //===----------------------------------------------------------------------===// namespace detail { class MbcntLoOpGenericAdaptorBase { public: struct Properties { using arg_attrsTy = ::mlir::ArrayAttr; arg_attrsTy arg_attrs; auto getArgAttrs() const { auto &propStorage = this->arg_attrs; return ::llvm::dyn_cast_or_null<::mlir::ArrayAttr>(propStorage); } void setArgAttrs(const ::mlir::ArrayAttr &propValue) { this->arg_attrs = propValue; } using res_attrsTy = ::mlir::ArrayAttr; res_attrsTy res_attrs; auto getResAttrs() const { auto &propStorage = this->res_attrs; return ::llvm::dyn_cast_or_null<::mlir::ArrayAttr>(propStorage); } void setResAttrs(const ::mlir::ArrayAttr &propValue) { this->res_attrs = propValue; } bool operator==(const Properties &rhs) const { return rhs.arg_attrs == this->arg_attrs && rhs.res_attrs == this->res_attrs && true; } bool operator!=(const Properties &rhs) const { return !(*this == rhs); } }; protected: ::mlir::DictionaryAttr odsAttrs; ::std::optional<::mlir::OperationName> odsOpName; Properties properties; ::mlir::RegionRange odsRegions; public: MbcntLoOpGenericAdaptorBase(::mlir::DictionaryAttr attrs, const Properties &properties, ::mlir::RegionRange regions = {}) : odsAttrs(attrs), properties(properties), odsRegions(regions) { if (odsAttrs) odsOpName.emplace("rocdl.mbcnt.lo", odsAttrs.getContext()); } MbcntLoOpGenericAdaptorBase(MbcntLoOp op); std::pair getODSOperandIndexAndLength(unsigned index, unsigned odsOperandsSize) { return {index, 1}; } const Properties &getProperties() { return properties; } ::mlir::DictionaryAttr getAttributes() { return odsAttrs; } ::mlir::ArrayAttr getArgAttrsAttr() { auto attr = ::llvm::dyn_cast_or_null<::mlir::ArrayAttr>(getProperties().arg_attrs); return attr; } ::std::optional< ::mlir::ArrayAttr > getArgAttrs(); ::mlir::ArrayAttr getResAttrsAttr() { auto attr = ::llvm::dyn_cast_or_null<::mlir::ArrayAttr>(getProperties().res_attrs); return attr; } ::std::optional< ::mlir::ArrayAttr > getResAttrs(); }; } // namespace detail template class MbcntLoOpGenericAdaptor : public detail::MbcntLoOpGenericAdaptorBase { using ValueT = ::llvm::detail::ValueOfRange; using Base = detail::MbcntLoOpGenericAdaptorBase; static constexpr int odsIndex_in0 = 0; static constexpr int odsIndex_in1 = 1; public: MbcntLoOpGenericAdaptor(RangeT values, ::mlir::DictionaryAttr attrs, const Properties &properties, ::mlir::RegionRange regions = {}) : Base(attrs, properties, regions), odsOperands(values) {} MbcntLoOpGenericAdaptor(RangeT values, ::mlir::DictionaryAttr attrs, ::mlir::PropertyRef properties, ::mlir::RegionRange regions = {}) : MbcntLoOpGenericAdaptor(values, attrs, (properties ? *properties.as() : Properties{}), regions) {} MbcntLoOpGenericAdaptor(RangeT values, ::mlir::DictionaryAttr attrs = nullptr) : MbcntLoOpGenericAdaptor(values, attrs, Properties{}, {}) {} MbcntLoOpGenericAdaptor(RangeT values, const MbcntLoOpGenericAdaptorBase &base) : Base(base), odsOperands(values) {} template >> MbcntLoOpGenericAdaptor(RangeT values, LateInst op) : Base(op), odsOperands(values) {} std::pair getODSOperandIndexAndLength(unsigned index) { return Base::getODSOperandIndexAndLength(index, odsOperands.size()); } RangeT getODSOperands(unsigned index) { auto valueRange = getODSOperandIndexAndLength(index); return {std::next(odsOperands.begin(), valueRange.first), std::next(odsOperands.begin(), valueRange.first + valueRange.second)}; } ValueT getIn0() { return (*getODSOperands(0).begin()); } ValueT getIn1() { return (*getODSOperands(1).begin()); } RangeT getOperands() { return odsOperands; } private: RangeT odsOperands; }; class MbcntLoOpAdaptor : public MbcntLoOpGenericAdaptor<::mlir::ValueRange> { public: using MbcntLoOpGenericAdaptor::MbcntLoOpGenericAdaptor; MbcntLoOpAdaptor(MbcntLoOp op); ::llvm::LogicalResult verify(::mlir::Location loc); }; class MbcntLoOp : public ::mlir::Op::Impl, ::mlir::OpTrait::ZeroSuccessors, ::mlir::OpTrait::NOperands<2>::Impl, ::mlir::OpTrait::OpInvariants, ::mlir::BytecodeOpInterface::Trait, ::mlir::ArgAndResultAttrsOpInterface::Trait, ::mlir::ConditionallySpeculatable::Trait, ::mlir::OpTrait::AlwaysSpeculatableImplTrait, ::mlir::MemoryEffectOpInterface::Trait> { public: using Op::Op; using Op::print; using Adaptor = MbcntLoOpAdaptor; template using GenericAdaptor = MbcntLoOpGenericAdaptor; using FoldAdaptor = GenericAdaptor<::llvm::ArrayRef<::mlir::Attribute>>; static constexpr int odsIndex_in0 = 0; static constexpr int odsIndex_in1 = 1; using Properties = FoldAdaptor::Properties; static ::llvm::ArrayRef<::llvm::StringRef> getAttributeNames() { static ::llvm::StringRef attrNames[] = {::llvm::StringRef("arg_attrs"), ::llvm::StringRef("res_attrs")}; return ::llvm::ArrayRef(attrNames); } ::mlir::StringAttr getArgAttrsAttrName() { return getAttributeNameForIndex(0); } static ::mlir::StringAttr getArgAttrsAttrName(::mlir::OperationName name) { return getAttributeNameForIndex(name, 0); } ::mlir::StringAttr getResAttrsAttrName() { return getAttributeNameForIndex(1); } static ::mlir::StringAttr getResAttrsAttrName(::mlir::OperationName name) { return getAttributeNameForIndex(name, 1); } static constexpr ::llvm::StringLiteral getOperationName() { return ::llvm::StringLiteral("rocdl.mbcnt.lo"); } std::pair getODSOperandIndexAndLength(unsigned index) { return {index, 1}; } ::mlir::Operation::operand_range getODSOperands(unsigned index) { auto valueRange = getODSOperandIndexAndLength(index); return {std::next(getOperation()->operand_begin(), valueRange.first), std::next(getOperation()->operand_begin(), valueRange.first + valueRange.second)}; } ::mlir::TypedValue<::mlir::IntegerType> getIn0() { return ::llvm::cast<::mlir::TypedValue<::mlir::IntegerType>>(*getODSOperands(0).begin()); } ::mlir::TypedValue<::mlir::IntegerType> getIn1() { return ::llvm::cast<::mlir::TypedValue<::mlir::IntegerType>>(*getODSOperands(1).begin()); } ::mlir::OpOperand &getIn0Mutable() { auto range = getODSOperandIndexAndLength(0); return getOperation()->getOpOperand(range.first); } ::mlir::OpOperand &getIn1Mutable() { auto range = getODSOperandIndexAndLength(1); return getOperation()->getOpOperand(range.first); } std::pair getODSResultIndexAndLength(unsigned index) { return {index, 1}; } ::mlir::Operation::result_range getODSResults(unsigned index) { auto valueRange = getODSResultIndexAndLength(index); return {std::next(getOperation()->result_begin(), valueRange.first), std::next(getOperation()->result_begin(), valueRange.first + valueRange.second)}; } ::mlir::TypedValue<::mlir::IntegerType> getRes() { return ::llvm::cast<::mlir::TypedValue<::mlir::IntegerType>>(*getODSResults(0).begin()); } static ::llvm::LogicalResult setPropertiesFromAttr(Properties &prop, ::mlir::Attribute attr, ::llvm::function_ref<::mlir::InFlightDiagnostic()> emitError); static ::mlir::Attribute getPropertiesAsAttr(::mlir::MLIRContext *ctx, const Properties &prop); static llvm::hash_code computePropertiesHash(const Properties &prop); static std::optional getInherentAttr(::mlir::MLIRContext *ctx, const Properties &prop, llvm::StringRef name); static void setInherentAttr(Properties &prop, llvm::StringRef name, mlir::Attribute value); static void populateInherentAttrs(::mlir::MLIRContext *ctx, const Properties &prop, ::mlir::NamedAttrList &attrs); static ::llvm::LogicalResult verifyInherentAttrs(::mlir::OperationName opName, ::mlir::NamedAttrList &attrs, llvm::function_ref<::mlir::InFlightDiagnostic()> emitError); static ::llvm::LogicalResult readProperties(::mlir::DialectBytecodeReader &reader, ::mlir::OperationState &state); void writeProperties(::mlir::DialectBytecodeWriter &writer); ::mlir::ArrayAttr getArgAttrsAttr() { return ::llvm::dyn_cast_or_null<::mlir::ArrayAttr>(getProperties().arg_attrs); } ::std::optional< ::mlir::ArrayAttr > getArgAttrs(); ::mlir::ArrayAttr getResAttrsAttr() { return ::llvm::dyn_cast_or_null<::mlir::ArrayAttr>(getProperties().res_attrs); } ::std::optional< ::mlir::ArrayAttr > getResAttrs(); void setArgAttrsAttr(::mlir::ArrayAttr attr) { getProperties().arg_attrs = attr; } void setResAttrsAttr(::mlir::ArrayAttr attr) { getProperties().res_attrs = attr; } ::mlir::Attribute removeArgAttrsAttr() { auto attr = getProperties().arg_attrs; getProperties().arg_attrs = {}; return attr; } ::mlir::Attribute removeResAttrsAttr() { auto attr = getProperties().res_attrs; getProperties().res_attrs = {}; return attr; } static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::Type res, ::mlir::Value in0, ::mlir::Value in1, /*optional*/::mlir::ArrayAttr arg_attrs, /*optional*/::mlir::ArrayAttr res_attrs); static MbcntLoOp create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::Type res, ::mlir::Value in0, ::mlir::Value in1, /*optional*/::mlir::ArrayAttr arg_attrs, /*optional*/::mlir::ArrayAttr res_attrs); static MbcntLoOp create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::Type res, ::mlir::Value in0, ::mlir::Value in1, /*optional*/::mlir::ArrayAttr arg_attrs, /*optional*/::mlir::ArrayAttr res_attrs); static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::Value in0, ::mlir::Value in1, /*optional*/::mlir::ArrayAttr arg_attrs, /*optional*/::mlir::ArrayAttr res_attrs); static MbcntLoOp create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::Value in0, ::mlir::Value in1, /*optional*/::mlir::ArrayAttr arg_attrs, /*optional*/::mlir::ArrayAttr res_attrs); static MbcntLoOp create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::Value in0, ::mlir::Value in1, /*optional*/::mlir::ArrayAttr arg_attrs, /*optional*/::mlir::ArrayAttr res_attrs); static void build(::mlir::OpBuilder &, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, ::llvm::ArrayRef<::mlir::NamedAttribute> attributes = {}); static MbcntLoOp create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, ::llvm::ArrayRef<::mlir::NamedAttribute> attributes = {}); static MbcntLoOp create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, ::llvm::ArrayRef<::mlir::NamedAttribute> attributes = {}); static void build(::mlir::OpBuilder &, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, const Properties &properties, ::llvm::ArrayRef<::mlir::NamedAttribute> discardableAttributes = {}); static MbcntLoOp create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, const Properties &properties, ::llvm::ArrayRef<::mlir::NamedAttribute> discardableAttributes = {}); static MbcntLoOp create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, const Properties &properties, ::llvm::ArrayRef<::mlir::NamedAttribute> discardableAttributes = {}); ::llvm::LogicalResult verifyInvariantsImpl(); ::llvm::LogicalResult verifyInvariants(); static ::mlir::ParseResult parse(::mlir::OpAsmParser &parser, ::mlir::OperationState &result); void print(::mlir::OpAsmPrinter &_odsPrinter); void getEffects(::llvm::SmallVectorImpl<::mlir::SideEffects::EffectInstance<::mlir::MemoryEffects::Effect>> &effects); private: ::mlir::StringAttr getAttributeNameForIndex(unsigned index) { return getAttributeNameForIndex((*this)->getName(), index); } static ::mlir::StringAttr getAttributeNameForIndex(::mlir::OperationName name, unsigned index) { assert(index < 2 && "invalid attribute index"); assert(name.getStringRef() == getOperationName() && "invalid operation name"); assert(name.isRegistered() && "Operation isn't registered, missing a " "dependent dialect loading?"); return name.getAttributeNames()[index]; } public: }; } // namespace mlir::ROCDL MLIR_DECLARE_EXPLICIT_TYPE_ID(::mlir::ROCDL::MbcntLoOp) MLIR_DECLARE_EXPLICIT_TYPE_ID(::mlir::ROCDL::detail::MbcntLoOpGenericAdaptorBase::Properties) namespace mlir::ROCDL { //===----------------------------------------------------------------------===// // ::mlir::ROCDL::Permlane16SwapOp declarations //===----------------------------------------------------------------------===// namespace detail { class Permlane16SwapOpGenericAdaptorBase { public: struct Properties { using boundControlTy = ::mlir::IntegerAttr; boundControlTy boundControl; auto getBoundControl() const { auto &propStorage = this->boundControl; return ::llvm::cast<::mlir::IntegerAttr>(propStorage); } void setBoundControl(const ::mlir::IntegerAttr &propValue) { this->boundControl = propValue; } using fiTy = ::mlir::IntegerAttr; fiTy fi; auto getFi() const { auto &propStorage = this->fi; return ::llvm::cast<::mlir::IntegerAttr>(propStorage); } void setFi(const ::mlir::IntegerAttr &propValue) { this->fi = propValue; } bool operator==(const Properties &rhs) const { return rhs.boundControl == this->boundControl && rhs.fi == this->fi && true; } bool operator!=(const Properties &rhs) const { return !(*this == rhs); } }; protected: ::mlir::DictionaryAttr odsAttrs; ::std::optional<::mlir::OperationName> odsOpName; Properties properties; ::mlir::RegionRange odsRegions; public: Permlane16SwapOpGenericAdaptorBase(::mlir::DictionaryAttr attrs, const Properties &properties, ::mlir::RegionRange regions = {}) : odsAttrs(attrs), properties(properties), odsRegions(regions) { if (odsAttrs) odsOpName.emplace("rocdl.permlane16.swap", odsAttrs.getContext()); } Permlane16SwapOpGenericAdaptorBase(Permlane16SwapOp op); std::pair getODSOperandIndexAndLength(unsigned index, unsigned odsOperandsSize) { return {index, 1}; } const Properties &getProperties() { return properties; } ::mlir::DictionaryAttr getAttributes() { return odsAttrs; } ::mlir::IntegerAttr getFiAttr() { auto attr = ::llvm::cast<::mlir::IntegerAttr>(getProperties().fi); return attr; } bool getFi(); ::mlir::IntegerAttr getBoundControlAttr() { auto attr = ::llvm::cast<::mlir::IntegerAttr>(getProperties().boundControl); return attr; } bool getBoundControl(); }; } // namespace detail template class Permlane16SwapOpGenericAdaptor : public detail::Permlane16SwapOpGenericAdaptorBase { using ValueT = ::llvm::detail::ValueOfRange; using Base = detail::Permlane16SwapOpGenericAdaptorBase; static constexpr int odsIndex_old = 0; static constexpr int odsIndex_src = 1; public: Permlane16SwapOpGenericAdaptor(RangeT values, ::mlir::DictionaryAttr attrs, const Properties &properties, ::mlir::RegionRange regions = {}) : Base(attrs, properties, regions), odsOperands(values) {} Permlane16SwapOpGenericAdaptor(RangeT values, ::mlir::DictionaryAttr attrs, ::mlir::PropertyRef properties, ::mlir::RegionRange regions = {}) : Permlane16SwapOpGenericAdaptor(values, attrs, (properties ? *properties.as() : Properties{}), regions) {} Permlane16SwapOpGenericAdaptor(RangeT values, ::mlir::DictionaryAttr attrs = nullptr) : Permlane16SwapOpGenericAdaptor(values, attrs, Properties{}, {}) {} Permlane16SwapOpGenericAdaptor(RangeT values, const Permlane16SwapOpGenericAdaptorBase &base) : Base(base), odsOperands(values) {} template >> Permlane16SwapOpGenericAdaptor(RangeT values, LateInst op) : Base(op), odsOperands(values) {} std::pair getODSOperandIndexAndLength(unsigned index) { return Base::getODSOperandIndexAndLength(index, odsOperands.size()); } RangeT getODSOperands(unsigned index) { auto valueRange = getODSOperandIndexAndLength(index); return {std::next(odsOperands.begin(), valueRange.first), std::next(odsOperands.begin(), valueRange.first + valueRange.second)}; } ValueT getOld() { return (*getODSOperands(0).begin()); } ValueT getSrc() { return (*getODSOperands(1).begin()); } RangeT getOperands() { return odsOperands; } private: RangeT odsOperands; }; class Permlane16SwapOpAdaptor : public Permlane16SwapOpGenericAdaptor<::mlir::ValueRange> { public: using Permlane16SwapOpGenericAdaptor::Permlane16SwapOpGenericAdaptor; Permlane16SwapOpAdaptor(Permlane16SwapOp op); ::llvm::LogicalResult verify(::mlir::Location loc); }; class Permlane16SwapOp : public ::mlir::Op::Impl, ::mlir::OpTrait::ZeroSuccessors, ::mlir::OpTrait::NOperands<2>::Impl, ::mlir::OpTrait::OpInvariants, ::mlir::BytecodeOpInterface::Trait> { public: using Op::Op; using Op::print; using Adaptor = Permlane16SwapOpAdaptor; template using GenericAdaptor = Permlane16SwapOpGenericAdaptor; using FoldAdaptor = GenericAdaptor<::llvm::ArrayRef<::mlir::Attribute>>; static constexpr int odsIndex_old = 0; static constexpr int odsIndex_src = 1; using Properties = FoldAdaptor::Properties; static ::llvm::ArrayRef<::llvm::StringRef> getAttributeNames() { static ::llvm::StringRef attrNames[] = {::llvm::StringRef("boundControl"), ::llvm::StringRef("fi")}; return ::llvm::ArrayRef(attrNames); } ::mlir::StringAttr getBoundControlAttrName() { return getAttributeNameForIndex(0); } static ::mlir::StringAttr getBoundControlAttrName(::mlir::OperationName name) { return getAttributeNameForIndex(name, 0); } ::mlir::StringAttr getFiAttrName() { return getAttributeNameForIndex(1); } static ::mlir::StringAttr getFiAttrName(::mlir::OperationName name) { return getAttributeNameForIndex(name, 1); } static constexpr ::llvm::StringLiteral getOperationName() { return ::llvm::StringLiteral("rocdl.permlane16.swap"); } std::pair getODSOperandIndexAndLength(unsigned index) { return {index, 1}; } ::mlir::Operation::operand_range getODSOperands(unsigned index) { auto valueRange = getODSOperandIndexAndLength(index); return {std::next(getOperation()->operand_begin(), valueRange.first), std::next(getOperation()->operand_begin(), valueRange.first + valueRange.second)}; } ::mlir::TypedValue<::mlir::IntegerType> getOld() { return ::llvm::cast<::mlir::TypedValue<::mlir::IntegerType>>(*getODSOperands(0).begin()); } ::mlir::TypedValue<::mlir::IntegerType> getSrc() { return ::llvm::cast<::mlir::TypedValue<::mlir::IntegerType>>(*getODSOperands(1).begin()); } ::mlir::OpOperand &getOldMutable() { auto range = getODSOperandIndexAndLength(0); return getOperation()->getOpOperand(range.first); } ::mlir::OpOperand &getSrcMutable() { auto range = getODSOperandIndexAndLength(1); return getOperation()->getOpOperand(range.first); } std::pair getODSResultIndexAndLength(unsigned index) { return {index, 1}; } ::mlir::Operation::result_range getODSResults(unsigned index) { auto valueRange = getODSResultIndexAndLength(index); return {std::next(getOperation()->result_begin(), valueRange.first), std::next(getOperation()->result_begin(), valueRange.first + valueRange.second)}; } ::mlir::TypedValue<::mlir::LLVM::LLVMStructType> getRes() { return ::llvm::cast<::mlir::TypedValue<::mlir::LLVM::LLVMStructType>>(*getODSResults(0).begin()); } static ::llvm::LogicalResult setPropertiesFromAttr(Properties &prop, ::mlir::Attribute attr, ::llvm::function_ref<::mlir::InFlightDiagnostic()> emitError); static ::mlir::Attribute getPropertiesAsAttr(::mlir::MLIRContext *ctx, const Properties &prop); static llvm::hash_code computePropertiesHash(const Properties &prop); static std::optional getInherentAttr(::mlir::MLIRContext *ctx, const Properties &prop, llvm::StringRef name); static void setInherentAttr(Properties &prop, llvm::StringRef name, mlir::Attribute value); static void populateInherentAttrs(::mlir::MLIRContext *ctx, const Properties &prop, ::mlir::NamedAttrList &attrs); static ::llvm::LogicalResult verifyInherentAttrs(::mlir::OperationName opName, ::mlir::NamedAttrList &attrs, llvm::function_ref<::mlir::InFlightDiagnostic()> emitError); static ::llvm::LogicalResult readProperties(::mlir::DialectBytecodeReader &reader, ::mlir::OperationState &state); void writeProperties(::mlir::DialectBytecodeWriter &writer); ::mlir::IntegerAttr getFiAttr() { return ::llvm::cast<::mlir::IntegerAttr>(getProperties().fi); } bool getFi(); ::mlir::IntegerAttr getBoundControlAttr() { return ::llvm::cast<::mlir::IntegerAttr>(getProperties().boundControl); } bool getBoundControl(); void setFiAttr(::mlir::IntegerAttr attr) { getProperties().fi = attr; } void setFi(bool attrValue); void setBoundControlAttr(::mlir::IntegerAttr attr) { getProperties().boundControl = attr; } void setBoundControl(bool attrValue); static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::Type res, ::mlir::Value old, ::mlir::Value src, ::mlir::IntegerAttr fi, ::mlir::IntegerAttr boundControl); static Permlane16SwapOp create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::Type res, ::mlir::Value old, ::mlir::Value src, ::mlir::IntegerAttr fi, ::mlir::IntegerAttr boundControl); static Permlane16SwapOp create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::Type res, ::mlir::Value old, ::mlir::Value src, ::mlir::IntegerAttr fi, ::mlir::IntegerAttr boundControl); static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::Value old, ::mlir::Value src, ::mlir::IntegerAttr fi, ::mlir::IntegerAttr boundControl); static Permlane16SwapOp create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::Value old, ::mlir::Value src, ::mlir::IntegerAttr fi, ::mlir::IntegerAttr boundControl); static Permlane16SwapOp create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::Value old, ::mlir::Value src, ::mlir::IntegerAttr fi, ::mlir::IntegerAttr boundControl); static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::Type res, ::mlir::Value old, ::mlir::Value src, bool fi, bool boundControl); static Permlane16SwapOp create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::Type res, ::mlir::Value old, ::mlir::Value src, bool fi, bool boundControl); static Permlane16SwapOp create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::Type res, ::mlir::Value old, ::mlir::Value src, bool fi, bool boundControl); static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::Value old, ::mlir::Value src, bool fi, bool boundControl); static Permlane16SwapOp create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::Value old, ::mlir::Value src, bool fi, bool boundControl); static Permlane16SwapOp create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::Value old, ::mlir::Value src, bool fi, bool boundControl); static void build(::mlir::OpBuilder &, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, ::llvm::ArrayRef<::mlir::NamedAttribute> attributes = {}); static Permlane16SwapOp create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, ::llvm::ArrayRef<::mlir::NamedAttribute> attributes = {}); static Permlane16SwapOp create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, ::llvm::ArrayRef<::mlir::NamedAttribute> attributes = {}); static void build(::mlir::OpBuilder &, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, const Properties &properties, ::llvm::ArrayRef<::mlir::NamedAttribute> discardableAttributes = {}); static Permlane16SwapOp create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, const Properties &properties, ::llvm::ArrayRef<::mlir::NamedAttribute> discardableAttributes = {}); static Permlane16SwapOp create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, const Properties &properties, ::llvm::ArrayRef<::mlir::NamedAttribute> discardableAttributes = {}); ::llvm::LogicalResult verifyInvariantsImpl(); ::llvm::LogicalResult verifyInvariants(); static ::mlir::ParseResult parse(::mlir::OpAsmParser &parser, ::mlir::OperationState &result); void print(::mlir::OpAsmPrinter &_odsPrinter); private: ::mlir::StringAttr getAttributeNameForIndex(unsigned index) { return getAttributeNameForIndex((*this)->getName(), index); } static ::mlir::StringAttr getAttributeNameForIndex(::mlir::OperationName name, unsigned index) { assert(index < 2 && "invalid attribute index"); assert(name.getStringRef() == getOperationName() && "invalid operation name"); assert(name.isRegistered() && "Operation isn't registered, missing a " "dependent dialect loading?"); return name.getAttributeNames()[index]; } public: }; } // namespace mlir::ROCDL MLIR_DECLARE_EXPLICIT_TYPE_ID(::mlir::ROCDL::Permlane16SwapOp) MLIR_DECLARE_EXPLICIT_TYPE_ID(::mlir::ROCDL::detail::Permlane16SwapOpGenericAdaptorBase::Properties) namespace mlir::ROCDL { //===----------------------------------------------------------------------===// // ::mlir::ROCDL::Permlane16VarOp declarations //===----------------------------------------------------------------------===// namespace detail { class Permlane16VarOpGenericAdaptorBase { public: struct Properties { using boundControlTy = ::mlir::IntegerAttr; boundControlTy boundControl; auto getBoundControl() const { auto &propStorage = this->boundControl; return ::llvm::cast<::mlir::IntegerAttr>(propStorage); } void setBoundControl(const ::mlir::IntegerAttr &propValue) { this->boundControl = propValue; } using fiTy = ::mlir::IntegerAttr; fiTy fi; auto getFi() const { auto &propStorage = this->fi; return ::llvm::cast<::mlir::IntegerAttr>(propStorage); } void setFi(const ::mlir::IntegerAttr &propValue) { this->fi = propValue; } bool operator==(const Properties &rhs) const { return rhs.boundControl == this->boundControl && rhs.fi == this->fi && true; } bool operator!=(const Properties &rhs) const { return !(*this == rhs); } }; protected: ::mlir::DictionaryAttr odsAttrs; ::std::optional<::mlir::OperationName> odsOpName; Properties properties; ::mlir::RegionRange odsRegions; public: Permlane16VarOpGenericAdaptorBase(::mlir::DictionaryAttr attrs, const Properties &properties, ::mlir::RegionRange regions = {}) : odsAttrs(attrs), properties(properties), odsRegions(regions) { if (odsAttrs) odsOpName.emplace("rocdl.permlane16.var", odsAttrs.getContext()); } Permlane16VarOpGenericAdaptorBase(Permlane16VarOp op); std::pair getODSOperandIndexAndLength(unsigned index, unsigned odsOperandsSize) { return {index, 1}; } const Properties &getProperties() { return properties; } ::mlir::DictionaryAttr getAttributes() { return odsAttrs; } ::mlir::IntegerAttr getFiAttr() { auto attr = ::llvm::cast<::mlir::IntegerAttr>(getProperties().fi); return attr; } bool getFi(); ::mlir::IntegerAttr getBoundControlAttr() { auto attr = ::llvm::cast<::mlir::IntegerAttr>(getProperties().boundControl); return attr; } bool getBoundControl(); }; } // namespace detail template class Permlane16VarOpGenericAdaptor : public detail::Permlane16VarOpGenericAdaptorBase { using ValueT = ::llvm::detail::ValueOfRange; using Base = detail::Permlane16VarOpGenericAdaptorBase; static constexpr int odsIndex_old = 0; static constexpr int odsIndex_src0 = 1; static constexpr int odsIndex_src1 = 2; public: Permlane16VarOpGenericAdaptor(RangeT values, ::mlir::DictionaryAttr attrs, const Properties &properties, ::mlir::RegionRange regions = {}) : Base(attrs, properties, regions), odsOperands(values) {} Permlane16VarOpGenericAdaptor(RangeT values, ::mlir::DictionaryAttr attrs, ::mlir::PropertyRef properties, ::mlir::RegionRange regions = {}) : Permlane16VarOpGenericAdaptor(values, attrs, (properties ? *properties.as() : Properties{}), regions) {} Permlane16VarOpGenericAdaptor(RangeT values, ::mlir::DictionaryAttr attrs = nullptr) : Permlane16VarOpGenericAdaptor(values, attrs, Properties{}, {}) {} Permlane16VarOpGenericAdaptor(RangeT values, const Permlane16VarOpGenericAdaptorBase &base) : Base(base), odsOperands(values) {} template >> Permlane16VarOpGenericAdaptor(RangeT values, LateInst op) : Base(op), odsOperands(values) {} std::pair getODSOperandIndexAndLength(unsigned index) { return Base::getODSOperandIndexAndLength(index, odsOperands.size()); } RangeT getODSOperands(unsigned index) { auto valueRange = getODSOperandIndexAndLength(index); return {std::next(odsOperands.begin(), valueRange.first), std::next(odsOperands.begin(), valueRange.first + valueRange.second)}; } ValueT getOld() { return (*getODSOperands(0).begin()); } ValueT getSrc0() { return (*getODSOperands(1).begin()); } ValueT getSrc1() { return (*getODSOperands(2).begin()); } RangeT getOperands() { return odsOperands; } private: RangeT odsOperands; }; class Permlane16VarOpAdaptor : public Permlane16VarOpGenericAdaptor<::mlir::ValueRange> { public: using Permlane16VarOpGenericAdaptor::Permlane16VarOpGenericAdaptor; Permlane16VarOpAdaptor(Permlane16VarOp op); ::llvm::LogicalResult verify(::mlir::Location loc); }; class Permlane16VarOp : public ::mlir::Op::Impl, ::mlir::OpTrait::ZeroSuccessors, ::mlir::OpTrait::NOperands<3>::Impl, ::mlir::OpTrait::OpInvariants, ::mlir::BytecodeOpInterface::Trait> { public: using Op::Op; using Op::print; using Adaptor = Permlane16VarOpAdaptor; template using GenericAdaptor = Permlane16VarOpGenericAdaptor; using FoldAdaptor = GenericAdaptor<::llvm::ArrayRef<::mlir::Attribute>>; static constexpr int odsIndex_old = 0; static constexpr int odsIndex_src0 = 1; static constexpr int odsIndex_src1 = 2; using Properties = FoldAdaptor::Properties; static ::llvm::ArrayRef<::llvm::StringRef> getAttributeNames() { static ::llvm::StringRef attrNames[] = {::llvm::StringRef("boundControl"), ::llvm::StringRef("fi")}; return ::llvm::ArrayRef(attrNames); } ::mlir::StringAttr getBoundControlAttrName() { return getAttributeNameForIndex(0); } static ::mlir::StringAttr getBoundControlAttrName(::mlir::OperationName name) { return getAttributeNameForIndex(name, 0); } ::mlir::StringAttr getFiAttrName() { return getAttributeNameForIndex(1); } static ::mlir::StringAttr getFiAttrName(::mlir::OperationName name) { return getAttributeNameForIndex(name, 1); } static constexpr ::llvm::StringLiteral getOperationName() { return ::llvm::StringLiteral("rocdl.permlane16.var"); } std::pair getODSOperandIndexAndLength(unsigned index) { return {index, 1}; } ::mlir::Operation::operand_range getODSOperands(unsigned index) { auto valueRange = getODSOperandIndexAndLength(index); return {std::next(getOperation()->operand_begin(), valueRange.first), std::next(getOperation()->operand_begin(), valueRange.first + valueRange.second)}; } ::mlir::TypedValue<::mlir::IntegerType> getOld() { return ::llvm::cast<::mlir::TypedValue<::mlir::IntegerType>>(*getODSOperands(0).begin()); } ::mlir::TypedValue<::mlir::IntegerType> getSrc0() { return ::llvm::cast<::mlir::TypedValue<::mlir::IntegerType>>(*getODSOperands(1).begin()); } ::mlir::TypedValue<::mlir::IntegerType> getSrc1() { return ::llvm::cast<::mlir::TypedValue<::mlir::IntegerType>>(*getODSOperands(2).begin()); } ::mlir::OpOperand &getOldMutable() { auto range = getODSOperandIndexAndLength(0); return getOperation()->getOpOperand(range.first); } ::mlir::OpOperand &getSrc0Mutable() { auto range = getODSOperandIndexAndLength(1); return getOperation()->getOpOperand(range.first); } ::mlir::OpOperand &getSrc1Mutable() { auto range = getODSOperandIndexAndLength(2); return getOperation()->getOpOperand(range.first); } std::pair getODSResultIndexAndLength(unsigned index) { return {index, 1}; } ::mlir::Operation::result_range getODSResults(unsigned index) { auto valueRange = getODSResultIndexAndLength(index); return {std::next(getOperation()->result_begin(), valueRange.first), std::next(getOperation()->result_begin(), valueRange.first + valueRange.second)}; } ::mlir::TypedValue<::mlir::IntegerType> getRes() { return ::llvm::cast<::mlir::TypedValue<::mlir::IntegerType>>(*getODSResults(0).begin()); } static ::llvm::LogicalResult setPropertiesFromAttr(Properties &prop, ::mlir::Attribute attr, ::llvm::function_ref<::mlir::InFlightDiagnostic()> emitError); static ::mlir::Attribute getPropertiesAsAttr(::mlir::MLIRContext *ctx, const Properties &prop); static llvm::hash_code computePropertiesHash(const Properties &prop); static std::optional getInherentAttr(::mlir::MLIRContext *ctx, const Properties &prop, llvm::StringRef name); static void setInherentAttr(Properties &prop, llvm::StringRef name, mlir::Attribute value); static void populateInherentAttrs(::mlir::MLIRContext *ctx, const Properties &prop, ::mlir::NamedAttrList &attrs); static ::llvm::LogicalResult verifyInherentAttrs(::mlir::OperationName opName, ::mlir::NamedAttrList &attrs, llvm::function_ref<::mlir::InFlightDiagnostic()> emitError); static ::llvm::LogicalResult readProperties(::mlir::DialectBytecodeReader &reader, ::mlir::OperationState &state); void writeProperties(::mlir::DialectBytecodeWriter &writer); ::mlir::IntegerAttr getFiAttr() { return ::llvm::cast<::mlir::IntegerAttr>(getProperties().fi); } bool getFi(); ::mlir::IntegerAttr getBoundControlAttr() { return ::llvm::cast<::mlir::IntegerAttr>(getProperties().boundControl); } bool getBoundControl(); void setFiAttr(::mlir::IntegerAttr attr) { getProperties().fi = attr; } void setFi(bool attrValue); void setBoundControlAttr(::mlir::IntegerAttr attr) { getProperties().boundControl = attr; } void setBoundControl(bool attrValue); static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::Type res, ::mlir::Value old, ::mlir::Value src0, ::mlir::Value src1, ::mlir::IntegerAttr fi, ::mlir::IntegerAttr boundControl); static Permlane16VarOp create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::Type res, ::mlir::Value old, ::mlir::Value src0, ::mlir::Value src1, ::mlir::IntegerAttr fi, ::mlir::IntegerAttr boundControl); static Permlane16VarOp create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::Type res, ::mlir::Value old, ::mlir::Value src0, ::mlir::Value src1, ::mlir::IntegerAttr fi, ::mlir::IntegerAttr boundControl); static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::Value old, ::mlir::Value src0, ::mlir::Value src1, ::mlir::IntegerAttr fi, ::mlir::IntegerAttr boundControl); static Permlane16VarOp create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::Value old, ::mlir::Value src0, ::mlir::Value src1, ::mlir::IntegerAttr fi, ::mlir::IntegerAttr boundControl); static Permlane16VarOp create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::Value old, ::mlir::Value src0, ::mlir::Value src1, ::mlir::IntegerAttr fi, ::mlir::IntegerAttr boundControl); static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::Type res, ::mlir::Value old, ::mlir::Value src0, ::mlir::Value src1, bool fi, bool boundControl); static Permlane16VarOp create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::Type res, ::mlir::Value old, ::mlir::Value src0, ::mlir::Value src1, bool fi, bool boundControl); static Permlane16VarOp create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::Type res, ::mlir::Value old, ::mlir::Value src0, ::mlir::Value src1, bool fi, bool boundControl); static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::Value old, ::mlir::Value src0, ::mlir::Value src1, bool fi, bool boundControl); static Permlane16VarOp create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::Value old, ::mlir::Value src0, ::mlir::Value src1, bool fi, bool boundControl); static Permlane16VarOp create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::Value old, ::mlir::Value src0, ::mlir::Value src1, bool fi, bool boundControl); static void build(::mlir::OpBuilder &, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, ::llvm::ArrayRef<::mlir::NamedAttribute> attributes = {}); static Permlane16VarOp create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, ::llvm::ArrayRef<::mlir::NamedAttribute> attributes = {}); static Permlane16VarOp create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, ::llvm::ArrayRef<::mlir::NamedAttribute> attributes = {}); static void build(::mlir::OpBuilder &, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, const Properties &properties, ::llvm::ArrayRef<::mlir::NamedAttribute> discardableAttributes = {}); static Permlane16VarOp create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, const Properties &properties, ::llvm::ArrayRef<::mlir::NamedAttribute> discardableAttributes = {}); static Permlane16VarOp create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, const Properties &properties, ::llvm::ArrayRef<::mlir::NamedAttribute> discardableAttributes = {}); ::llvm::LogicalResult verifyInvariantsImpl(); ::llvm::LogicalResult verifyInvariants(); static ::mlir::ParseResult parse(::mlir::OpAsmParser &parser, ::mlir::OperationState &result); void print(::mlir::OpAsmPrinter &_odsPrinter); private: ::mlir::StringAttr getAttributeNameForIndex(unsigned index) { return getAttributeNameForIndex((*this)->getName(), index); } static ::mlir::StringAttr getAttributeNameForIndex(::mlir::OperationName name, unsigned index) { assert(index < 2 && "invalid attribute index"); assert(name.getStringRef() == getOperationName() && "invalid operation name"); assert(name.isRegistered() && "Operation isn't registered, missing a " "dependent dialect loading?"); return name.getAttributeNames()[index]; } public: }; } // namespace mlir::ROCDL MLIR_DECLARE_EXPLICIT_TYPE_ID(::mlir::ROCDL::Permlane16VarOp) MLIR_DECLARE_EXPLICIT_TYPE_ID(::mlir::ROCDL::detail::Permlane16VarOpGenericAdaptorBase::Properties) namespace mlir::ROCDL { //===----------------------------------------------------------------------===// // ::mlir::ROCDL::Permlane32SwapOp declarations //===----------------------------------------------------------------------===// namespace detail { class Permlane32SwapOpGenericAdaptorBase { public: struct Properties { using boundControlTy = ::mlir::IntegerAttr; boundControlTy boundControl; auto getBoundControl() const { auto &propStorage = this->boundControl; return ::llvm::cast<::mlir::IntegerAttr>(propStorage); } void setBoundControl(const ::mlir::IntegerAttr &propValue) { this->boundControl = propValue; } using fiTy = ::mlir::IntegerAttr; fiTy fi; auto getFi() const { auto &propStorage = this->fi; return ::llvm::cast<::mlir::IntegerAttr>(propStorage); } void setFi(const ::mlir::IntegerAttr &propValue) { this->fi = propValue; } bool operator==(const Properties &rhs) const { return rhs.boundControl == this->boundControl && rhs.fi == this->fi && true; } bool operator!=(const Properties &rhs) const { return !(*this == rhs); } }; protected: ::mlir::DictionaryAttr odsAttrs; ::std::optional<::mlir::OperationName> odsOpName; Properties properties; ::mlir::RegionRange odsRegions; public: Permlane32SwapOpGenericAdaptorBase(::mlir::DictionaryAttr attrs, const Properties &properties, ::mlir::RegionRange regions = {}) : odsAttrs(attrs), properties(properties), odsRegions(regions) { if (odsAttrs) odsOpName.emplace("rocdl.permlane32.swap", odsAttrs.getContext()); } Permlane32SwapOpGenericAdaptorBase(Permlane32SwapOp op); std::pair getODSOperandIndexAndLength(unsigned index, unsigned odsOperandsSize) { return {index, 1}; } const Properties &getProperties() { return properties; } ::mlir::DictionaryAttr getAttributes() { return odsAttrs; } ::mlir::IntegerAttr getFiAttr() { auto attr = ::llvm::cast<::mlir::IntegerAttr>(getProperties().fi); return attr; } bool getFi(); ::mlir::IntegerAttr getBoundControlAttr() { auto attr = ::llvm::cast<::mlir::IntegerAttr>(getProperties().boundControl); return attr; } bool getBoundControl(); }; } // namespace detail template class Permlane32SwapOpGenericAdaptor : public detail::Permlane32SwapOpGenericAdaptorBase { using ValueT = ::llvm::detail::ValueOfRange; using Base = detail::Permlane32SwapOpGenericAdaptorBase; static constexpr int odsIndex_old = 0; static constexpr int odsIndex_src = 1; public: Permlane32SwapOpGenericAdaptor(RangeT values, ::mlir::DictionaryAttr attrs, const Properties &properties, ::mlir::RegionRange regions = {}) : Base(attrs, properties, regions), odsOperands(values) {} Permlane32SwapOpGenericAdaptor(RangeT values, ::mlir::DictionaryAttr attrs, ::mlir::PropertyRef properties, ::mlir::RegionRange regions = {}) : Permlane32SwapOpGenericAdaptor(values, attrs, (properties ? *properties.as() : Properties{}), regions) {} Permlane32SwapOpGenericAdaptor(RangeT values, ::mlir::DictionaryAttr attrs = nullptr) : Permlane32SwapOpGenericAdaptor(values, attrs, Properties{}, {}) {} Permlane32SwapOpGenericAdaptor(RangeT values, const Permlane32SwapOpGenericAdaptorBase &base) : Base(base), odsOperands(values) {} template >> Permlane32SwapOpGenericAdaptor(RangeT values, LateInst op) : Base(op), odsOperands(values) {} std::pair getODSOperandIndexAndLength(unsigned index) { return Base::getODSOperandIndexAndLength(index, odsOperands.size()); } RangeT getODSOperands(unsigned index) { auto valueRange = getODSOperandIndexAndLength(index); return {std::next(odsOperands.begin(), valueRange.first), std::next(odsOperands.begin(), valueRange.first + valueRange.second)}; } ValueT getOld() { return (*getODSOperands(0).begin()); } ValueT getSrc() { return (*getODSOperands(1).begin()); } RangeT getOperands() { return odsOperands; } private: RangeT odsOperands; }; class Permlane32SwapOpAdaptor : public Permlane32SwapOpGenericAdaptor<::mlir::ValueRange> { public: using Permlane32SwapOpGenericAdaptor::Permlane32SwapOpGenericAdaptor; Permlane32SwapOpAdaptor(Permlane32SwapOp op); ::llvm::LogicalResult verify(::mlir::Location loc); }; class Permlane32SwapOp : public ::mlir::Op::Impl, ::mlir::OpTrait::ZeroSuccessors, ::mlir::OpTrait::NOperands<2>::Impl, ::mlir::OpTrait::OpInvariants, ::mlir::BytecodeOpInterface::Trait> { public: using Op::Op; using Op::print; using Adaptor = Permlane32SwapOpAdaptor; template using GenericAdaptor = Permlane32SwapOpGenericAdaptor; using FoldAdaptor = GenericAdaptor<::llvm::ArrayRef<::mlir::Attribute>>; static constexpr int odsIndex_old = 0; static constexpr int odsIndex_src = 1; using Properties = FoldAdaptor::Properties; static ::llvm::ArrayRef<::llvm::StringRef> getAttributeNames() { static ::llvm::StringRef attrNames[] = {::llvm::StringRef("boundControl"), ::llvm::StringRef("fi")}; return ::llvm::ArrayRef(attrNames); } ::mlir::StringAttr getBoundControlAttrName() { return getAttributeNameForIndex(0); } static ::mlir::StringAttr getBoundControlAttrName(::mlir::OperationName name) { return getAttributeNameForIndex(name, 0); } ::mlir::StringAttr getFiAttrName() { return getAttributeNameForIndex(1); } static ::mlir::StringAttr getFiAttrName(::mlir::OperationName name) { return getAttributeNameForIndex(name, 1); } static constexpr ::llvm::StringLiteral getOperationName() { return ::llvm::StringLiteral("rocdl.permlane32.swap"); } std::pair getODSOperandIndexAndLength(unsigned index) { return {index, 1}; } ::mlir::Operation::operand_range getODSOperands(unsigned index) { auto valueRange = getODSOperandIndexAndLength(index); return {std::next(getOperation()->operand_begin(), valueRange.first), std::next(getOperation()->operand_begin(), valueRange.first + valueRange.second)}; } ::mlir::TypedValue<::mlir::IntegerType> getOld() { return ::llvm::cast<::mlir::TypedValue<::mlir::IntegerType>>(*getODSOperands(0).begin()); } ::mlir::TypedValue<::mlir::IntegerType> getSrc() { return ::llvm::cast<::mlir::TypedValue<::mlir::IntegerType>>(*getODSOperands(1).begin()); } ::mlir::OpOperand &getOldMutable() { auto range = getODSOperandIndexAndLength(0); return getOperation()->getOpOperand(range.first); } ::mlir::OpOperand &getSrcMutable() { auto range = getODSOperandIndexAndLength(1); return getOperation()->getOpOperand(range.first); } std::pair getODSResultIndexAndLength(unsigned index) { return {index, 1}; } ::mlir::Operation::result_range getODSResults(unsigned index) { auto valueRange = getODSResultIndexAndLength(index); return {std::next(getOperation()->result_begin(), valueRange.first), std::next(getOperation()->result_begin(), valueRange.first + valueRange.second)}; } ::mlir::TypedValue<::mlir::LLVM::LLVMStructType> getRes() { return ::llvm::cast<::mlir::TypedValue<::mlir::LLVM::LLVMStructType>>(*getODSResults(0).begin()); } static ::llvm::LogicalResult setPropertiesFromAttr(Properties &prop, ::mlir::Attribute attr, ::llvm::function_ref<::mlir::InFlightDiagnostic()> emitError); static ::mlir::Attribute getPropertiesAsAttr(::mlir::MLIRContext *ctx, const Properties &prop); static llvm::hash_code computePropertiesHash(const Properties &prop); static std::optional getInherentAttr(::mlir::MLIRContext *ctx, const Properties &prop, llvm::StringRef name); static void setInherentAttr(Properties &prop, llvm::StringRef name, mlir::Attribute value); static void populateInherentAttrs(::mlir::MLIRContext *ctx, const Properties &prop, ::mlir::NamedAttrList &attrs); static ::llvm::LogicalResult verifyInherentAttrs(::mlir::OperationName opName, ::mlir::NamedAttrList &attrs, llvm::function_ref<::mlir::InFlightDiagnostic()> emitError); static ::llvm::LogicalResult readProperties(::mlir::DialectBytecodeReader &reader, ::mlir::OperationState &state); void writeProperties(::mlir::DialectBytecodeWriter &writer); ::mlir::IntegerAttr getFiAttr() { return ::llvm::cast<::mlir::IntegerAttr>(getProperties().fi); } bool getFi(); ::mlir::IntegerAttr getBoundControlAttr() { return ::llvm::cast<::mlir::IntegerAttr>(getProperties().boundControl); } bool getBoundControl(); void setFiAttr(::mlir::IntegerAttr attr) { getProperties().fi = attr; } void setFi(bool attrValue); void setBoundControlAttr(::mlir::IntegerAttr attr) { getProperties().boundControl = attr; } void setBoundControl(bool attrValue); static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::Type res, ::mlir::Value old, ::mlir::Value src, ::mlir::IntegerAttr fi, ::mlir::IntegerAttr boundControl); static Permlane32SwapOp create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::Type res, ::mlir::Value old, ::mlir::Value src, ::mlir::IntegerAttr fi, ::mlir::IntegerAttr boundControl); static Permlane32SwapOp create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::Type res, ::mlir::Value old, ::mlir::Value src, ::mlir::IntegerAttr fi, ::mlir::IntegerAttr boundControl); static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::Value old, ::mlir::Value src, ::mlir::IntegerAttr fi, ::mlir::IntegerAttr boundControl); static Permlane32SwapOp create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::Value old, ::mlir::Value src, ::mlir::IntegerAttr fi, ::mlir::IntegerAttr boundControl); static Permlane32SwapOp create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::Value old, ::mlir::Value src, ::mlir::IntegerAttr fi, ::mlir::IntegerAttr boundControl); static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::Type res, ::mlir::Value old, ::mlir::Value src, bool fi, bool boundControl); static Permlane32SwapOp create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::Type res, ::mlir::Value old, ::mlir::Value src, bool fi, bool boundControl); static Permlane32SwapOp create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::Type res, ::mlir::Value old, ::mlir::Value src, bool fi, bool boundControl); static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::Value old, ::mlir::Value src, bool fi, bool boundControl); static Permlane32SwapOp create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::Value old, ::mlir::Value src, bool fi, bool boundControl); static Permlane32SwapOp create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::Value old, ::mlir::Value src, bool fi, bool boundControl); static void build(::mlir::OpBuilder &, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, ::llvm::ArrayRef<::mlir::NamedAttribute> attributes = {}); static Permlane32SwapOp create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, ::llvm::ArrayRef<::mlir::NamedAttribute> attributes = {}); static Permlane32SwapOp create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, ::llvm::ArrayRef<::mlir::NamedAttribute> attributes = {}); static void build(::mlir::OpBuilder &, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, const Properties &properties, ::llvm::ArrayRef<::mlir::NamedAttribute> discardableAttributes = {}); static Permlane32SwapOp create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, const Properties &properties, ::llvm::ArrayRef<::mlir::NamedAttribute> discardableAttributes = {}); static Permlane32SwapOp create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, const Properties &properties, ::llvm::ArrayRef<::mlir::NamedAttribute> discardableAttributes = {}); ::llvm::LogicalResult verifyInvariantsImpl(); ::llvm::LogicalResult verifyInvariants(); static ::mlir::ParseResult parse(::mlir::OpAsmParser &parser, ::mlir::OperationState &result); void print(::mlir::OpAsmPrinter &_odsPrinter); private: ::mlir::StringAttr getAttributeNameForIndex(unsigned index) { return getAttributeNameForIndex((*this)->getName(), index); } static ::mlir::StringAttr getAttributeNameForIndex(::mlir::OperationName name, unsigned index) { assert(index < 2 && "invalid attribute index"); assert(name.getStringRef() == getOperationName() && "invalid operation name"); assert(name.isRegistered() && "Operation isn't registered, missing a " "dependent dialect loading?"); return name.getAttributeNames()[index]; } public: }; } // namespace mlir::ROCDL MLIR_DECLARE_EXPLICIT_TYPE_ID(::mlir::ROCDL::Permlane32SwapOp) MLIR_DECLARE_EXPLICIT_TYPE_ID(::mlir::ROCDL::detail::Permlane32SwapOpGenericAdaptorBase::Properties) namespace mlir::ROCDL { //===----------------------------------------------------------------------===// // ::mlir::ROCDL::PermlaneX16Op declarations //===----------------------------------------------------------------------===// namespace detail { class PermlaneX16OpGenericAdaptorBase { public: struct Properties { using boundControlTy = ::mlir::IntegerAttr; boundControlTy boundControl; auto getBoundControl() const { auto &propStorage = this->boundControl; return ::llvm::cast<::mlir::IntegerAttr>(propStorage); } void setBoundControl(const ::mlir::IntegerAttr &propValue) { this->boundControl = propValue; } using fiTy = ::mlir::IntegerAttr; fiTy fi; auto getFi() const { auto &propStorage = this->fi; return ::llvm::cast<::mlir::IntegerAttr>(propStorage); } void setFi(const ::mlir::IntegerAttr &propValue) { this->fi = propValue; } bool operator==(const Properties &rhs) const { return rhs.boundControl == this->boundControl && rhs.fi == this->fi && true; } bool operator!=(const Properties &rhs) const { return !(*this == rhs); } }; protected: ::mlir::DictionaryAttr odsAttrs; ::std::optional<::mlir::OperationName> odsOpName; Properties properties; ::mlir::RegionRange odsRegions; public: PermlaneX16OpGenericAdaptorBase(::mlir::DictionaryAttr attrs, const Properties &properties, ::mlir::RegionRange regions = {}) : odsAttrs(attrs), properties(properties), odsRegions(regions) { if (odsAttrs) odsOpName.emplace("rocdl.permlanex16", odsAttrs.getContext()); } PermlaneX16OpGenericAdaptorBase(PermlaneX16Op op); std::pair getODSOperandIndexAndLength(unsigned index, unsigned odsOperandsSize) { return {index, 1}; } const Properties &getProperties() { return properties; } ::mlir::DictionaryAttr getAttributes() { return odsAttrs; } ::mlir::IntegerAttr getFiAttr() { auto attr = ::llvm::cast<::mlir::IntegerAttr>(getProperties().fi); return attr; } bool getFi(); ::mlir::IntegerAttr getBoundControlAttr() { auto attr = ::llvm::cast<::mlir::IntegerAttr>(getProperties().boundControl); return attr; } bool getBoundControl(); }; } // namespace detail template class PermlaneX16OpGenericAdaptor : public detail::PermlaneX16OpGenericAdaptorBase { using ValueT = ::llvm::detail::ValueOfRange; using Base = detail::PermlaneX16OpGenericAdaptorBase; static constexpr int odsIndex_old = 0; static constexpr int odsIndex_src0 = 1; static constexpr int odsIndex_src1 = 2; static constexpr int odsIndex_src2 = 3; public: PermlaneX16OpGenericAdaptor(RangeT values, ::mlir::DictionaryAttr attrs, const Properties &properties, ::mlir::RegionRange regions = {}) : Base(attrs, properties, regions), odsOperands(values) {} PermlaneX16OpGenericAdaptor(RangeT values, ::mlir::DictionaryAttr attrs, ::mlir::PropertyRef properties, ::mlir::RegionRange regions = {}) : PermlaneX16OpGenericAdaptor(values, attrs, (properties ? *properties.as() : Properties{}), regions) {} PermlaneX16OpGenericAdaptor(RangeT values, ::mlir::DictionaryAttr attrs = nullptr) : PermlaneX16OpGenericAdaptor(values, attrs, Properties{}, {}) {} PermlaneX16OpGenericAdaptor(RangeT values, const PermlaneX16OpGenericAdaptorBase &base) : Base(base), odsOperands(values) {} template >> PermlaneX16OpGenericAdaptor(RangeT values, LateInst op) : Base(op), odsOperands(values) {} std::pair getODSOperandIndexAndLength(unsigned index) { return Base::getODSOperandIndexAndLength(index, odsOperands.size()); } RangeT getODSOperands(unsigned index) { auto valueRange = getODSOperandIndexAndLength(index); return {std::next(odsOperands.begin(), valueRange.first), std::next(odsOperands.begin(), valueRange.first + valueRange.second)}; } ValueT getOld() { return (*getODSOperands(0).begin()); } ValueT getSrc0() { return (*getODSOperands(1).begin()); } ValueT getSrc1() { return (*getODSOperands(2).begin()); } ValueT getSrc2() { return (*getODSOperands(3).begin()); } RangeT getOperands() { return odsOperands; } private: RangeT odsOperands; }; class PermlaneX16OpAdaptor : public PermlaneX16OpGenericAdaptor<::mlir::ValueRange> { public: using PermlaneX16OpGenericAdaptor::PermlaneX16OpGenericAdaptor; PermlaneX16OpAdaptor(PermlaneX16Op op); ::llvm::LogicalResult verify(::mlir::Location loc); }; class PermlaneX16Op : public ::mlir::Op::Impl, ::mlir::OpTrait::ZeroSuccessors, ::mlir::OpTrait::NOperands<4>::Impl, ::mlir::OpTrait::OpInvariants, ::mlir::BytecodeOpInterface::Trait> { public: using Op::Op; using Op::print; using Adaptor = PermlaneX16OpAdaptor; template using GenericAdaptor = PermlaneX16OpGenericAdaptor; using FoldAdaptor = GenericAdaptor<::llvm::ArrayRef<::mlir::Attribute>>; static constexpr int odsIndex_old = 0; static constexpr int odsIndex_src0 = 1; static constexpr int odsIndex_src1 = 2; static constexpr int odsIndex_src2 = 3; using Properties = FoldAdaptor::Properties; static ::llvm::ArrayRef<::llvm::StringRef> getAttributeNames() { static ::llvm::StringRef attrNames[] = {::llvm::StringRef("boundControl"), ::llvm::StringRef("fi")}; return ::llvm::ArrayRef(attrNames); } ::mlir::StringAttr getBoundControlAttrName() { return getAttributeNameForIndex(0); } static ::mlir::StringAttr getBoundControlAttrName(::mlir::OperationName name) { return getAttributeNameForIndex(name, 0); } ::mlir::StringAttr getFiAttrName() { return getAttributeNameForIndex(1); } static ::mlir::StringAttr getFiAttrName(::mlir::OperationName name) { return getAttributeNameForIndex(name, 1); } static constexpr ::llvm::StringLiteral getOperationName() { return ::llvm::StringLiteral("rocdl.permlanex16"); } std::pair getODSOperandIndexAndLength(unsigned index) { return {index, 1}; } ::mlir::Operation::operand_range getODSOperands(unsigned index) { auto valueRange = getODSOperandIndexAndLength(index); return {std::next(getOperation()->operand_begin(), valueRange.first), std::next(getOperation()->operand_begin(), valueRange.first + valueRange.second)}; } ::mlir::TypedValue<::mlir::Type> getOld() { return ::llvm::cast<::mlir::TypedValue<::mlir::Type>>(*getODSOperands(0).begin()); } ::mlir::TypedValue<::mlir::Type> getSrc0() { return ::llvm::cast<::mlir::TypedValue<::mlir::Type>>(*getODSOperands(1).begin()); } ::mlir::TypedValue<::mlir::Type> getSrc1() { return ::llvm::cast<::mlir::TypedValue<::mlir::Type>>(*getODSOperands(2).begin()); } ::mlir::TypedValue<::mlir::Type> getSrc2() { return ::llvm::cast<::mlir::TypedValue<::mlir::Type>>(*getODSOperands(3).begin()); } ::mlir::OpOperand &getOldMutable() { auto range = getODSOperandIndexAndLength(0); return getOperation()->getOpOperand(range.first); } ::mlir::OpOperand &getSrc0Mutable() { auto range = getODSOperandIndexAndLength(1); return getOperation()->getOpOperand(range.first); } ::mlir::OpOperand &getSrc1Mutable() { auto range = getODSOperandIndexAndLength(2); return getOperation()->getOpOperand(range.first); } ::mlir::OpOperand &getSrc2Mutable() { auto range = getODSOperandIndexAndLength(3); return getOperation()->getOpOperand(range.first); } std::pair getODSResultIndexAndLength(unsigned index) { return {index, 1}; } ::mlir::Operation::result_range getODSResults(unsigned index) { auto valueRange = getODSResultIndexAndLength(index); return {std::next(getOperation()->result_begin(), valueRange.first), std::next(getOperation()->result_begin(), valueRange.first + valueRange.second)}; } ::mlir::TypedValue<::mlir::Type> getRes() { return ::llvm::cast<::mlir::TypedValue<::mlir::Type>>(*getODSResults(0).begin()); } static ::llvm::LogicalResult setPropertiesFromAttr(Properties &prop, ::mlir::Attribute attr, ::llvm::function_ref<::mlir::InFlightDiagnostic()> emitError); static ::mlir::Attribute getPropertiesAsAttr(::mlir::MLIRContext *ctx, const Properties &prop); static llvm::hash_code computePropertiesHash(const Properties &prop); static std::optional getInherentAttr(::mlir::MLIRContext *ctx, const Properties &prop, llvm::StringRef name); static void setInherentAttr(Properties &prop, llvm::StringRef name, mlir::Attribute value); static void populateInherentAttrs(::mlir::MLIRContext *ctx, const Properties &prop, ::mlir::NamedAttrList &attrs); static ::llvm::LogicalResult verifyInherentAttrs(::mlir::OperationName opName, ::mlir::NamedAttrList &attrs, llvm::function_ref<::mlir::InFlightDiagnostic()> emitError); static ::llvm::LogicalResult readProperties(::mlir::DialectBytecodeReader &reader, ::mlir::OperationState &state); void writeProperties(::mlir::DialectBytecodeWriter &writer); ::mlir::IntegerAttr getFiAttr() { return ::llvm::cast<::mlir::IntegerAttr>(getProperties().fi); } bool getFi(); ::mlir::IntegerAttr getBoundControlAttr() { return ::llvm::cast<::mlir::IntegerAttr>(getProperties().boundControl); } bool getBoundControl(); void setFiAttr(::mlir::IntegerAttr attr) { getProperties().fi = attr; } void setFi(bool attrValue); void setBoundControlAttr(::mlir::IntegerAttr attr) { getProperties().boundControl = attr; } void setBoundControl(bool attrValue); static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::Type res, ::mlir::Value old, ::mlir::Value src0, ::mlir::Value src1, ::mlir::Value src2, ::mlir::IntegerAttr fi, ::mlir::IntegerAttr boundControl); static PermlaneX16Op create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::Type res, ::mlir::Value old, ::mlir::Value src0, ::mlir::Value src1, ::mlir::Value src2, ::mlir::IntegerAttr fi, ::mlir::IntegerAttr boundControl); static PermlaneX16Op create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::Type res, ::mlir::Value old, ::mlir::Value src0, ::mlir::Value src1, ::mlir::Value src2, ::mlir::IntegerAttr fi, ::mlir::IntegerAttr boundControl); static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::Value old, ::mlir::Value src0, ::mlir::Value src1, ::mlir::Value src2, ::mlir::IntegerAttr fi, ::mlir::IntegerAttr boundControl); static PermlaneX16Op create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::Value old, ::mlir::Value src0, ::mlir::Value src1, ::mlir::Value src2, ::mlir::IntegerAttr fi, ::mlir::IntegerAttr boundControl); static PermlaneX16Op create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::Value old, ::mlir::Value src0, ::mlir::Value src1, ::mlir::Value src2, ::mlir::IntegerAttr fi, ::mlir::IntegerAttr boundControl); static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::Type res, ::mlir::Value old, ::mlir::Value src0, ::mlir::Value src1, ::mlir::Value src2, bool fi, bool boundControl); static PermlaneX16Op create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::Type res, ::mlir::Value old, ::mlir::Value src0, ::mlir::Value src1, ::mlir::Value src2, bool fi, bool boundControl); static PermlaneX16Op create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::Type res, ::mlir::Value old, ::mlir::Value src0, ::mlir::Value src1, ::mlir::Value src2, bool fi, bool boundControl); static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::Value old, ::mlir::Value src0, ::mlir::Value src1, ::mlir::Value src2, bool fi, bool boundControl); static PermlaneX16Op create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::Value old, ::mlir::Value src0, ::mlir::Value src1, ::mlir::Value src2, bool fi, bool boundControl); static PermlaneX16Op create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::Value old, ::mlir::Value src0, ::mlir::Value src1, ::mlir::Value src2, bool fi, bool boundControl); static void build(::mlir::OpBuilder &, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, ::llvm::ArrayRef<::mlir::NamedAttribute> attributes = {}); static PermlaneX16Op create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, ::llvm::ArrayRef<::mlir::NamedAttribute> attributes = {}); static PermlaneX16Op create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, ::llvm::ArrayRef<::mlir::NamedAttribute> attributes = {}); static void build(::mlir::OpBuilder &, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, const Properties &properties, ::llvm::ArrayRef<::mlir::NamedAttribute> discardableAttributes = {}); static PermlaneX16Op create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, const Properties &properties, ::llvm::ArrayRef<::mlir::NamedAttribute> discardableAttributes = {}); static PermlaneX16Op create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, const Properties &properties, ::llvm::ArrayRef<::mlir::NamedAttribute> discardableAttributes = {}); ::llvm::LogicalResult verifyInvariantsImpl(); ::llvm::LogicalResult verifyInvariants(); static ::mlir::ParseResult parse(::mlir::OpAsmParser &parser, ::mlir::OperationState &result); void print(::mlir::OpAsmPrinter &_odsPrinter); private: ::mlir::StringAttr getAttributeNameForIndex(unsigned index) { return getAttributeNameForIndex((*this)->getName(), index); } static ::mlir::StringAttr getAttributeNameForIndex(::mlir::OperationName name, unsigned index) { assert(index < 2 && "invalid attribute index"); assert(name.getStringRef() == getOperationName() && "invalid operation name"); assert(name.isRegistered() && "Operation isn't registered, missing a " "dependent dialect loading?"); return name.getAttributeNames()[index]; } public: }; } // namespace mlir::ROCDL MLIR_DECLARE_EXPLICIT_TYPE_ID(::mlir::ROCDL::PermlaneX16Op) MLIR_DECLARE_EXPLICIT_TYPE_ID(::mlir::ROCDL::detail::PermlaneX16OpGenericAdaptorBase::Properties) namespace mlir::ROCDL { //===----------------------------------------------------------------------===// // ::mlir::ROCDL::PermlaneX16VarOp declarations //===----------------------------------------------------------------------===// namespace detail { class PermlaneX16VarOpGenericAdaptorBase { public: struct Properties { using boundControlTy = ::mlir::IntegerAttr; boundControlTy boundControl; auto getBoundControl() const { auto &propStorage = this->boundControl; return ::llvm::cast<::mlir::IntegerAttr>(propStorage); } void setBoundControl(const ::mlir::IntegerAttr &propValue) { this->boundControl = propValue; } using fiTy = ::mlir::IntegerAttr; fiTy fi; auto getFi() const { auto &propStorage = this->fi; return ::llvm::cast<::mlir::IntegerAttr>(propStorage); } void setFi(const ::mlir::IntegerAttr &propValue) { this->fi = propValue; } bool operator==(const Properties &rhs) const { return rhs.boundControl == this->boundControl && rhs.fi == this->fi && true; } bool operator!=(const Properties &rhs) const { return !(*this == rhs); } }; protected: ::mlir::DictionaryAttr odsAttrs; ::std::optional<::mlir::OperationName> odsOpName; Properties properties; ::mlir::RegionRange odsRegions; public: PermlaneX16VarOpGenericAdaptorBase(::mlir::DictionaryAttr attrs, const Properties &properties, ::mlir::RegionRange regions = {}) : odsAttrs(attrs), properties(properties), odsRegions(regions) { if (odsAttrs) odsOpName.emplace("rocdl.permlanex16.var", odsAttrs.getContext()); } PermlaneX16VarOpGenericAdaptorBase(PermlaneX16VarOp op); std::pair getODSOperandIndexAndLength(unsigned index, unsigned odsOperandsSize) { return {index, 1}; } const Properties &getProperties() { return properties; } ::mlir::DictionaryAttr getAttributes() { return odsAttrs; } ::mlir::IntegerAttr getFiAttr() { auto attr = ::llvm::cast<::mlir::IntegerAttr>(getProperties().fi); return attr; } bool getFi(); ::mlir::IntegerAttr getBoundControlAttr() { auto attr = ::llvm::cast<::mlir::IntegerAttr>(getProperties().boundControl); return attr; } bool getBoundControl(); }; } // namespace detail template class PermlaneX16VarOpGenericAdaptor : public detail::PermlaneX16VarOpGenericAdaptorBase { using ValueT = ::llvm::detail::ValueOfRange; using Base = detail::PermlaneX16VarOpGenericAdaptorBase; static constexpr int odsIndex_old = 0; static constexpr int odsIndex_src0 = 1; static constexpr int odsIndex_src1 = 2; public: PermlaneX16VarOpGenericAdaptor(RangeT values, ::mlir::DictionaryAttr attrs, const Properties &properties, ::mlir::RegionRange regions = {}) : Base(attrs, properties, regions), odsOperands(values) {} PermlaneX16VarOpGenericAdaptor(RangeT values, ::mlir::DictionaryAttr attrs, ::mlir::PropertyRef properties, ::mlir::RegionRange regions = {}) : PermlaneX16VarOpGenericAdaptor(values, attrs, (properties ? *properties.as() : Properties{}), regions) {} PermlaneX16VarOpGenericAdaptor(RangeT values, ::mlir::DictionaryAttr attrs = nullptr) : PermlaneX16VarOpGenericAdaptor(values, attrs, Properties{}, {}) {} PermlaneX16VarOpGenericAdaptor(RangeT values, const PermlaneX16VarOpGenericAdaptorBase &base) : Base(base), odsOperands(values) {} template >> PermlaneX16VarOpGenericAdaptor(RangeT values, LateInst op) : Base(op), odsOperands(values) {} std::pair getODSOperandIndexAndLength(unsigned index) { return Base::getODSOperandIndexAndLength(index, odsOperands.size()); } RangeT getODSOperands(unsigned index) { auto valueRange = getODSOperandIndexAndLength(index); return {std::next(odsOperands.begin(), valueRange.first), std::next(odsOperands.begin(), valueRange.first + valueRange.second)}; } ValueT getOld() { return (*getODSOperands(0).begin()); } ValueT getSrc0() { return (*getODSOperands(1).begin()); } ValueT getSrc1() { return (*getODSOperands(2).begin()); } RangeT getOperands() { return odsOperands; } private: RangeT odsOperands; }; class PermlaneX16VarOpAdaptor : public PermlaneX16VarOpGenericAdaptor<::mlir::ValueRange> { public: using PermlaneX16VarOpGenericAdaptor::PermlaneX16VarOpGenericAdaptor; PermlaneX16VarOpAdaptor(PermlaneX16VarOp op); ::llvm::LogicalResult verify(::mlir::Location loc); }; class PermlaneX16VarOp : public ::mlir::Op::Impl, ::mlir::OpTrait::ZeroSuccessors, ::mlir::OpTrait::NOperands<3>::Impl, ::mlir::OpTrait::OpInvariants, ::mlir::BytecodeOpInterface::Trait> { public: using Op::Op; using Op::print; using Adaptor = PermlaneX16VarOpAdaptor; template using GenericAdaptor = PermlaneX16VarOpGenericAdaptor; using FoldAdaptor = GenericAdaptor<::llvm::ArrayRef<::mlir::Attribute>>; static constexpr int odsIndex_old = 0; static constexpr int odsIndex_src0 = 1; static constexpr int odsIndex_src1 = 2; using Properties = FoldAdaptor::Properties; static ::llvm::ArrayRef<::llvm::StringRef> getAttributeNames() { static ::llvm::StringRef attrNames[] = {::llvm::StringRef("boundControl"), ::llvm::StringRef("fi")}; return ::llvm::ArrayRef(attrNames); } ::mlir::StringAttr getBoundControlAttrName() { return getAttributeNameForIndex(0); } static ::mlir::StringAttr getBoundControlAttrName(::mlir::OperationName name) { return getAttributeNameForIndex(name, 0); } ::mlir::StringAttr getFiAttrName() { return getAttributeNameForIndex(1); } static ::mlir::StringAttr getFiAttrName(::mlir::OperationName name) { return getAttributeNameForIndex(name, 1); } static constexpr ::llvm::StringLiteral getOperationName() { return ::llvm::StringLiteral("rocdl.permlanex16.var"); } std::pair getODSOperandIndexAndLength(unsigned index) { return {index, 1}; } ::mlir::Operation::operand_range getODSOperands(unsigned index) { auto valueRange = getODSOperandIndexAndLength(index); return {std::next(getOperation()->operand_begin(), valueRange.first), std::next(getOperation()->operand_begin(), valueRange.first + valueRange.second)}; } ::mlir::TypedValue<::mlir::IntegerType> getOld() { return ::llvm::cast<::mlir::TypedValue<::mlir::IntegerType>>(*getODSOperands(0).begin()); } ::mlir::TypedValue<::mlir::IntegerType> getSrc0() { return ::llvm::cast<::mlir::TypedValue<::mlir::IntegerType>>(*getODSOperands(1).begin()); } ::mlir::TypedValue<::mlir::IntegerType> getSrc1() { return ::llvm::cast<::mlir::TypedValue<::mlir::IntegerType>>(*getODSOperands(2).begin()); } ::mlir::OpOperand &getOldMutable() { auto range = getODSOperandIndexAndLength(0); return getOperation()->getOpOperand(range.first); } ::mlir::OpOperand &getSrc0Mutable() { auto range = getODSOperandIndexAndLength(1); return getOperation()->getOpOperand(range.first); } ::mlir::OpOperand &getSrc1Mutable() { auto range = getODSOperandIndexAndLength(2); return getOperation()->getOpOperand(range.first); } std::pair getODSResultIndexAndLength(unsigned index) { return {index, 1}; } ::mlir::Operation::result_range getODSResults(unsigned index) { auto valueRange = getODSResultIndexAndLength(index); return {std::next(getOperation()->result_begin(), valueRange.first), std::next(getOperation()->result_begin(), valueRange.first + valueRange.second)}; } ::mlir::TypedValue<::mlir::IntegerType> getRes() { return ::llvm::cast<::mlir::TypedValue<::mlir::IntegerType>>(*getODSResults(0).begin()); } static ::llvm::LogicalResult setPropertiesFromAttr(Properties &prop, ::mlir::Attribute attr, ::llvm::function_ref<::mlir::InFlightDiagnostic()> emitError); static ::mlir::Attribute getPropertiesAsAttr(::mlir::MLIRContext *ctx, const Properties &prop); static llvm::hash_code computePropertiesHash(const Properties &prop); static std::optional getInherentAttr(::mlir::MLIRContext *ctx, const Properties &prop, llvm::StringRef name); static void setInherentAttr(Properties &prop, llvm::StringRef name, mlir::Attribute value); static void populateInherentAttrs(::mlir::MLIRContext *ctx, const Properties &prop, ::mlir::NamedAttrList &attrs); static ::llvm::LogicalResult verifyInherentAttrs(::mlir::OperationName opName, ::mlir::NamedAttrList &attrs, llvm::function_ref<::mlir::InFlightDiagnostic()> emitError); static ::llvm::LogicalResult readProperties(::mlir::DialectBytecodeReader &reader, ::mlir::OperationState &state); void writeProperties(::mlir::DialectBytecodeWriter &writer); ::mlir::IntegerAttr getFiAttr() { return ::llvm::cast<::mlir::IntegerAttr>(getProperties().fi); } bool getFi(); ::mlir::IntegerAttr getBoundControlAttr() { return ::llvm::cast<::mlir::IntegerAttr>(getProperties().boundControl); } bool getBoundControl(); void setFiAttr(::mlir::IntegerAttr attr) { getProperties().fi = attr; } void setFi(bool attrValue); void setBoundControlAttr(::mlir::IntegerAttr attr) { getProperties().boundControl = attr; } void setBoundControl(bool attrValue); static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::Type res, ::mlir::Value old, ::mlir::Value src0, ::mlir::Value src1, ::mlir::IntegerAttr fi, ::mlir::IntegerAttr boundControl); static PermlaneX16VarOp create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::Type res, ::mlir::Value old, ::mlir::Value src0, ::mlir::Value src1, ::mlir::IntegerAttr fi, ::mlir::IntegerAttr boundControl); static PermlaneX16VarOp create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::Type res, ::mlir::Value old, ::mlir::Value src0, ::mlir::Value src1, ::mlir::IntegerAttr fi, ::mlir::IntegerAttr boundControl); static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::Value old, ::mlir::Value src0, ::mlir::Value src1, ::mlir::IntegerAttr fi, ::mlir::IntegerAttr boundControl); static PermlaneX16VarOp create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::Value old, ::mlir::Value src0, ::mlir::Value src1, ::mlir::IntegerAttr fi, ::mlir::IntegerAttr boundControl); static PermlaneX16VarOp create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::Value old, ::mlir::Value src0, ::mlir::Value src1, ::mlir::IntegerAttr fi, ::mlir::IntegerAttr boundControl); static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::Type res, ::mlir::Value old, ::mlir::Value src0, ::mlir::Value src1, bool fi, bool boundControl); static PermlaneX16VarOp create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::Type res, ::mlir::Value old, ::mlir::Value src0, ::mlir::Value src1, bool fi, bool boundControl); static PermlaneX16VarOp create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::Type res, ::mlir::Value old, ::mlir::Value src0, ::mlir::Value src1, bool fi, bool boundControl); static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::Value old, ::mlir::Value src0, ::mlir::Value src1, bool fi, bool boundControl); static PermlaneX16VarOp create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::Value old, ::mlir::Value src0, ::mlir::Value src1, bool fi, bool boundControl); static PermlaneX16VarOp create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::Value old, ::mlir::Value src0, ::mlir::Value src1, bool fi, bool boundControl); static void build(::mlir::OpBuilder &, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, ::llvm::ArrayRef<::mlir::NamedAttribute> attributes = {}); static PermlaneX16VarOp create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, ::llvm::ArrayRef<::mlir::NamedAttribute> attributes = {}); static PermlaneX16VarOp create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, ::llvm::ArrayRef<::mlir::NamedAttribute> attributes = {}); static void build(::mlir::OpBuilder &, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, const Properties &properties, ::llvm::ArrayRef<::mlir::NamedAttribute> discardableAttributes = {}); static PermlaneX16VarOp create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, const Properties &properties, ::llvm::ArrayRef<::mlir::NamedAttribute> discardableAttributes = {}); static PermlaneX16VarOp create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, const Properties &properties, ::llvm::ArrayRef<::mlir::NamedAttribute> discardableAttributes = {}); ::llvm::LogicalResult verifyInvariantsImpl(); ::llvm::LogicalResult verifyInvariants(); static ::mlir::ParseResult parse(::mlir::OpAsmParser &parser, ::mlir::OperationState &result); void print(::mlir::OpAsmPrinter &_odsPrinter); private: ::mlir::StringAttr getAttributeNameForIndex(unsigned index) { return getAttributeNameForIndex((*this)->getName(), index); } static ::mlir::StringAttr getAttributeNameForIndex(::mlir::OperationName name, unsigned index) { assert(index < 2 && "invalid attribute index"); assert(name.getStringRef() == getOperationName() && "invalid operation name"); assert(name.isRegistered() && "Operation isn't registered, missing a " "dependent dialect loading?"); return name.getAttributeNames()[index]; } public: }; } // namespace mlir::ROCDL MLIR_DECLARE_EXPLICIT_TYPE_ID(::mlir::ROCDL::PermlaneX16VarOp) MLIR_DECLARE_EXPLICIT_TYPE_ID(::mlir::ROCDL::detail::PermlaneX16VarOpGenericAdaptorBase::Properties) namespace mlir::ROCDL { //===----------------------------------------------------------------------===// // ::mlir::ROCDL::RawBufferAtomicCmpSwap declarations //===----------------------------------------------------------------------===// namespace detail { class RawBufferAtomicCmpSwapGenericAdaptorBase { public: struct Properties { using auxTy = ::mlir::Attribute; auxTy aux; auto getAux() const { auto &propStorage = this->aux; return ::llvm::dyn_cast_or_null<::mlir::Attribute>(propStorage); } void setAux(const ::mlir::Attribute &propValue) { this->aux = propValue; } bool operator==(const Properties &rhs) const { return rhs.aux == this->aux && true; } bool operator!=(const Properties &rhs) const { return !(*this == rhs); } }; protected: ::mlir::DictionaryAttr odsAttrs; ::std::optional<::mlir::OperationName> odsOpName; Properties properties; ::mlir::RegionRange odsRegions; public: RawBufferAtomicCmpSwapGenericAdaptorBase(::mlir::DictionaryAttr attrs, const Properties &properties, ::mlir::RegionRange regions = {}) : odsAttrs(attrs), properties(properties), odsRegions(regions) { if (odsAttrs) odsOpName.emplace("rocdl.raw.buffer.atomic.cmpswap", odsAttrs.getContext()); } RawBufferAtomicCmpSwapGenericAdaptorBase(RawBufferAtomicCmpSwap op); std::pair getODSOperandIndexAndLength(unsigned index, unsigned odsOperandsSize) { return {index, 1}; } const Properties &getProperties() { return properties; } ::mlir::DictionaryAttr getAttributes() { return odsAttrs; } ::mlir::Attribute getAuxAttr(); ::mlir::Attribute getAux(); }; } // namespace detail template class RawBufferAtomicCmpSwapGenericAdaptor : public detail::RawBufferAtomicCmpSwapGenericAdaptorBase { using ValueT = ::llvm::detail::ValueOfRange; using Base = detail::RawBufferAtomicCmpSwapGenericAdaptorBase; static constexpr int odsIndex_src = 0; static constexpr int odsIndex_cmp = 1; static constexpr int odsIndex_rsrc = 2; static constexpr int odsIndex_offset = 3; static constexpr int odsIndex_soffset = 4; public: RawBufferAtomicCmpSwapGenericAdaptor(RangeT values, ::mlir::DictionaryAttr attrs, const Properties &properties, ::mlir::RegionRange regions = {}) : Base(attrs, properties, regions), odsOperands(values) {} RawBufferAtomicCmpSwapGenericAdaptor(RangeT values, ::mlir::DictionaryAttr attrs, ::mlir::PropertyRef properties, ::mlir::RegionRange regions = {}) : RawBufferAtomicCmpSwapGenericAdaptor(values, attrs, (properties ? *properties.as() : Properties{}), regions) {} RawBufferAtomicCmpSwapGenericAdaptor(RangeT values, ::mlir::DictionaryAttr attrs = nullptr) : RawBufferAtomicCmpSwapGenericAdaptor(values, attrs, Properties{}, {}) {} RawBufferAtomicCmpSwapGenericAdaptor(RangeT values, const RawBufferAtomicCmpSwapGenericAdaptorBase &base) : Base(base), odsOperands(values) {} template >> RawBufferAtomicCmpSwapGenericAdaptor(RangeT values, LateInst op) : Base(op), odsOperands(values) {} std::pair getODSOperandIndexAndLength(unsigned index) { return Base::getODSOperandIndexAndLength(index, odsOperands.size()); } RangeT getODSOperands(unsigned index) { auto valueRange = getODSOperandIndexAndLength(index); return {std::next(odsOperands.begin(), valueRange.first), std::next(odsOperands.begin(), valueRange.first + valueRange.second)}; } ValueT getSrc() { return (*getODSOperands(0).begin()); } ValueT getCmp() { return (*getODSOperands(1).begin()); } ValueT getRsrc() { return (*getODSOperands(2).begin()); } ValueT getOffset() { return (*getODSOperands(3).begin()); } ValueT getSoffset() { return (*getODSOperands(4).begin()); } RangeT getOperands() { return odsOperands; } private: RangeT odsOperands; }; class RawBufferAtomicCmpSwapAdaptor : public RawBufferAtomicCmpSwapGenericAdaptor<::mlir::ValueRange> { public: using RawBufferAtomicCmpSwapGenericAdaptor::RawBufferAtomicCmpSwapGenericAdaptor; RawBufferAtomicCmpSwapAdaptor(RawBufferAtomicCmpSwap op); ::llvm::LogicalResult verify(::mlir::Location loc); }; class RawBufferAtomicCmpSwap : public ::mlir::Op::Impl, ::mlir::OpTrait::ZeroSuccessors, ::mlir::OpTrait::NOperands<5>::Impl, ::mlir::OpTrait::OpInvariants, ::mlir::BytecodeOpInterface::Trait> { public: using Op::Op; using Op::print; using Adaptor = RawBufferAtomicCmpSwapAdaptor; template using GenericAdaptor = RawBufferAtomicCmpSwapGenericAdaptor; using FoldAdaptor = GenericAdaptor<::llvm::ArrayRef<::mlir::Attribute>>; static constexpr int odsIndex_src = 0; static constexpr int odsIndex_cmp = 1; static constexpr int odsIndex_rsrc = 2; static constexpr int odsIndex_offset = 3; static constexpr int odsIndex_soffset = 4; using Properties = FoldAdaptor::Properties; static ::llvm::ArrayRef<::llvm::StringRef> getAttributeNames() { static ::llvm::StringRef attrNames[] = {::llvm::StringRef("aux")}; return ::llvm::ArrayRef(attrNames); } ::mlir::StringAttr getAuxAttrName() { return getAttributeNameForIndex(0); } static ::mlir::StringAttr getAuxAttrName(::mlir::OperationName name) { return getAttributeNameForIndex(name, 0); } static constexpr ::llvm::StringLiteral getOperationName() { return ::llvm::StringLiteral("rocdl.raw.buffer.atomic.cmpswap"); } std::pair getODSOperandIndexAndLength(unsigned index) { return {index, 1}; } ::mlir::Operation::operand_range getODSOperands(unsigned index) { auto valueRange = getODSOperandIndexAndLength(index); return {std::next(getOperation()->operand_begin(), valueRange.first), std::next(getOperation()->operand_begin(), valueRange.first + valueRange.second)}; } ::mlir::TypedValue<::mlir::Type> getSrc() { return ::llvm::cast<::mlir::TypedValue<::mlir::Type>>(*getODSOperands(0).begin()); } ::mlir::TypedValue<::mlir::Type> getCmp() { return ::llvm::cast<::mlir::TypedValue<::mlir::Type>>(*getODSOperands(1).begin()); } ::mlir::TypedValue<::mlir::VectorType> getRsrc() { return ::llvm::cast<::mlir::TypedValue<::mlir::VectorType>>(*getODSOperands(2).begin()); } ::mlir::TypedValue<::mlir::IntegerType> getOffset() { return ::llvm::cast<::mlir::TypedValue<::mlir::IntegerType>>(*getODSOperands(3).begin()); } ::mlir::TypedValue<::mlir::IntegerType> getSoffset() { return ::llvm::cast<::mlir::TypedValue<::mlir::IntegerType>>(*getODSOperands(4).begin()); } ::mlir::OpOperand &getSrcMutable() { auto range = getODSOperandIndexAndLength(0); return getOperation()->getOpOperand(range.first); } ::mlir::OpOperand &getCmpMutable() { auto range = getODSOperandIndexAndLength(1); return getOperation()->getOpOperand(range.first); } ::mlir::OpOperand &getRsrcMutable() { auto range = getODSOperandIndexAndLength(2); return getOperation()->getOpOperand(range.first); } ::mlir::OpOperand &getOffsetMutable() { auto range = getODSOperandIndexAndLength(3); return getOperation()->getOpOperand(range.first); } ::mlir::OpOperand &getSoffsetMutable() { auto range = getODSOperandIndexAndLength(4); return getOperation()->getOpOperand(range.first); } std::pair getODSResultIndexAndLength(unsigned index) { return {index, 1}; } ::mlir::Operation::result_range getODSResults(unsigned index) { auto valueRange = getODSResultIndexAndLength(index); return {std::next(getOperation()->result_begin(), valueRange.first), std::next(getOperation()->result_begin(), valueRange.first + valueRange.second)}; } ::mlir::TypedValue<::mlir::Type> getRes() { return ::llvm::cast<::mlir::TypedValue<::mlir::Type>>(*getODSResults(0).begin()); } static ::llvm::LogicalResult setPropertiesFromAttr(Properties &prop, ::mlir::Attribute attr, ::llvm::function_ref<::mlir::InFlightDiagnostic()> emitError); static ::mlir::Attribute getPropertiesAsAttr(::mlir::MLIRContext *ctx, const Properties &prop); static llvm::hash_code computePropertiesHash(const Properties &prop); static std::optional getInherentAttr(::mlir::MLIRContext *ctx, const Properties &prop, llvm::StringRef name); static void setInherentAttr(Properties &prop, llvm::StringRef name, mlir::Attribute value); static void populateInherentAttrs(::mlir::MLIRContext *ctx, const Properties &prop, ::mlir::NamedAttrList &attrs); static ::llvm::LogicalResult verifyInherentAttrs(::mlir::OperationName opName, ::mlir::NamedAttrList &attrs, llvm::function_ref<::mlir::InFlightDiagnostic()> emitError); static ::llvm::LogicalResult readProperties(::mlir::DialectBytecodeReader &reader, ::mlir::OperationState &state); void writeProperties(::mlir::DialectBytecodeWriter &writer); ::mlir::Attribute getAuxAttr() { return ::llvm::dyn_cast_or_null<::mlir::Attribute>(getProperties().aux); } ::mlir::Attribute getAux(); void setAuxAttr(::mlir::Attribute attr) { getProperties().aux = attr; } static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::Type res, ::mlir::Value src, ::mlir::Value cmp, ::mlir::Value rsrc, ::mlir::Value offset, ::mlir::Value soffset, ::mlir::Attribute aux = nullptr); static RawBufferAtomicCmpSwap create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::Type res, ::mlir::Value src, ::mlir::Value cmp, ::mlir::Value rsrc, ::mlir::Value offset, ::mlir::Value soffset, ::mlir::Attribute aux = nullptr); static RawBufferAtomicCmpSwap create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::Type res, ::mlir::Value src, ::mlir::Value cmp, ::mlir::Value rsrc, ::mlir::Value offset, ::mlir::Value soffset, ::mlir::Attribute aux = nullptr); static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::Value src, ::mlir::Value cmp, ::mlir::Value rsrc, ::mlir::Value offset, ::mlir::Value soffset, ::mlir::Attribute aux = nullptr); static RawBufferAtomicCmpSwap create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::Value src, ::mlir::Value cmp, ::mlir::Value rsrc, ::mlir::Value offset, ::mlir::Value soffset, ::mlir::Attribute aux = nullptr); static RawBufferAtomicCmpSwap create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::Value src, ::mlir::Value cmp, ::mlir::Value rsrc, ::mlir::Value offset, ::mlir::Value soffset, ::mlir::Attribute aux = nullptr); static void build(::mlir::OpBuilder &, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, ::llvm::ArrayRef<::mlir::NamedAttribute> attributes = {}); static RawBufferAtomicCmpSwap create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, ::llvm::ArrayRef<::mlir::NamedAttribute> attributes = {}); static RawBufferAtomicCmpSwap create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, ::llvm::ArrayRef<::mlir::NamedAttribute> attributes = {}); static void build(::mlir::OpBuilder &, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, const Properties &properties, ::llvm::ArrayRef<::mlir::NamedAttribute> discardableAttributes = {}); static RawBufferAtomicCmpSwap create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, const Properties &properties, ::llvm::ArrayRef<::mlir::NamedAttribute> discardableAttributes = {}); static RawBufferAtomicCmpSwap create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, const Properties &properties, ::llvm::ArrayRef<::mlir::NamedAttribute> discardableAttributes = {}); static void populateDefaultProperties(::mlir::OperationName opName, Properties &properties); ::llvm::LogicalResult verifyInvariantsImpl(); ::llvm::LogicalResult verifyInvariants(); static ::mlir::ParseResult parse(::mlir::OpAsmParser &parser, ::mlir::OperationState &result); void print(::mlir::OpAsmPrinter &_odsPrinter); private: ::mlir::StringAttr getAttributeNameForIndex(unsigned index) { return getAttributeNameForIndex((*this)->getName(), index); } static ::mlir::StringAttr getAttributeNameForIndex(::mlir::OperationName name, unsigned index) { assert(index < 1 && "invalid attribute index"); assert(name.getStringRef() == getOperationName() && "invalid operation name"); assert(name.isRegistered() && "Operation isn't registered, missing a " "dependent dialect loading?"); return name.getAttributeNames()[index]; } public: }; } // namespace mlir::ROCDL MLIR_DECLARE_EXPLICIT_TYPE_ID(::mlir::ROCDL::RawBufferAtomicCmpSwap) MLIR_DECLARE_EXPLICIT_TYPE_ID(::mlir::ROCDL::detail::RawBufferAtomicCmpSwapGenericAdaptorBase::Properties) namespace mlir::ROCDL { //===----------------------------------------------------------------------===// // ::mlir::ROCDL::RawBufferAtomicFAddOp declarations //===----------------------------------------------------------------------===// namespace detail { class RawBufferAtomicFAddOpGenericAdaptorBase { public: struct Properties { using auxTy = ::mlir::Attribute; auxTy aux; auto getAux() const { auto &propStorage = this->aux; return ::llvm::dyn_cast_or_null<::mlir::Attribute>(propStorage); } void setAux(const ::mlir::Attribute &propValue) { this->aux = propValue; } bool operator==(const Properties &rhs) const { return rhs.aux == this->aux && true; } bool operator!=(const Properties &rhs) const { return !(*this == rhs); } }; protected: ::mlir::DictionaryAttr odsAttrs; ::std::optional<::mlir::OperationName> odsOpName; Properties properties; ::mlir::RegionRange odsRegions; public: RawBufferAtomicFAddOpGenericAdaptorBase(::mlir::DictionaryAttr attrs, const Properties &properties, ::mlir::RegionRange regions = {}) : odsAttrs(attrs), properties(properties), odsRegions(regions) { if (odsAttrs) odsOpName.emplace("rocdl.raw.buffer.atomic.fadd", odsAttrs.getContext()); } RawBufferAtomicFAddOpGenericAdaptorBase(RawBufferAtomicFAddOp op); std::pair getODSOperandIndexAndLength(unsigned index, unsigned odsOperandsSize) { return {index, 1}; } const Properties &getProperties() { return properties; } ::mlir::DictionaryAttr getAttributes() { return odsAttrs; } ::mlir::Attribute getAuxAttr(); ::mlir::Attribute getAux(); }; } // namespace detail template class RawBufferAtomicFAddOpGenericAdaptor : public detail::RawBufferAtomicFAddOpGenericAdaptorBase { using ValueT = ::llvm::detail::ValueOfRange; using Base = detail::RawBufferAtomicFAddOpGenericAdaptorBase; static constexpr int odsIndex_vdata = 0; static constexpr int odsIndex_rsrc = 1; static constexpr int odsIndex_offset = 2; static constexpr int odsIndex_soffset = 3; public: RawBufferAtomicFAddOpGenericAdaptor(RangeT values, ::mlir::DictionaryAttr attrs, const Properties &properties, ::mlir::RegionRange regions = {}) : Base(attrs, properties, regions), odsOperands(values) {} RawBufferAtomicFAddOpGenericAdaptor(RangeT values, ::mlir::DictionaryAttr attrs, ::mlir::PropertyRef properties, ::mlir::RegionRange regions = {}) : RawBufferAtomicFAddOpGenericAdaptor(values, attrs, (properties ? *properties.as() : Properties{}), regions) {} RawBufferAtomicFAddOpGenericAdaptor(RangeT values, ::mlir::DictionaryAttr attrs = nullptr) : RawBufferAtomicFAddOpGenericAdaptor(values, attrs, Properties{}, {}) {} RawBufferAtomicFAddOpGenericAdaptor(RangeT values, const RawBufferAtomicFAddOpGenericAdaptorBase &base) : Base(base), odsOperands(values) {} template >> RawBufferAtomicFAddOpGenericAdaptor(RangeT values, LateInst op) : Base(op), odsOperands(values) {} std::pair getODSOperandIndexAndLength(unsigned index) { return Base::getODSOperandIndexAndLength(index, odsOperands.size()); } RangeT getODSOperands(unsigned index) { auto valueRange = getODSOperandIndexAndLength(index); return {std::next(odsOperands.begin(), valueRange.first), std::next(odsOperands.begin(), valueRange.first + valueRange.second)}; } ValueT getVdata() { return (*getODSOperands(0).begin()); } ValueT getRsrc() { return (*getODSOperands(1).begin()); } ValueT getOffset() { return (*getODSOperands(2).begin()); } ValueT getSoffset() { return (*getODSOperands(3).begin()); } RangeT getOperands() { return odsOperands; } private: RangeT odsOperands; }; class RawBufferAtomicFAddOpAdaptor : public RawBufferAtomicFAddOpGenericAdaptor<::mlir::ValueRange> { public: using RawBufferAtomicFAddOpGenericAdaptor::RawBufferAtomicFAddOpGenericAdaptor; RawBufferAtomicFAddOpAdaptor(RawBufferAtomicFAddOp op); ::llvm::LogicalResult verify(::mlir::Location loc); }; class RawBufferAtomicFAddOp : public ::mlir::Op::Impl, ::mlir::OpTrait::ZeroSuccessors, ::mlir::OpTrait::NOperands<4>::Impl, ::mlir::OpTrait::OpInvariants, ::mlir::BytecodeOpInterface::Trait> { public: using Op::Op; using Op::print; using Adaptor = RawBufferAtomicFAddOpAdaptor; template using GenericAdaptor = RawBufferAtomicFAddOpGenericAdaptor; using FoldAdaptor = GenericAdaptor<::llvm::ArrayRef<::mlir::Attribute>>; static constexpr int odsIndex_vdata = 0; static constexpr int odsIndex_rsrc = 1; static constexpr int odsIndex_offset = 2; static constexpr int odsIndex_soffset = 3; using Properties = FoldAdaptor::Properties; static ::llvm::ArrayRef<::llvm::StringRef> getAttributeNames() { static ::llvm::StringRef attrNames[] = {::llvm::StringRef("aux")}; return ::llvm::ArrayRef(attrNames); } ::mlir::StringAttr getAuxAttrName() { return getAttributeNameForIndex(0); } static ::mlir::StringAttr getAuxAttrName(::mlir::OperationName name) { return getAttributeNameForIndex(name, 0); } static constexpr ::llvm::StringLiteral getOperationName() { return ::llvm::StringLiteral("rocdl.raw.buffer.atomic.fadd"); } std::pair getODSOperandIndexAndLength(unsigned index) { return {index, 1}; } ::mlir::Operation::operand_range getODSOperands(unsigned index) { auto valueRange = getODSOperandIndexAndLength(index); return {std::next(getOperation()->operand_begin(), valueRange.first), std::next(getOperation()->operand_begin(), valueRange.first + valueRange.second)}; } ::mlir::TypedValue<::mlir::Type> getVdata() { return ::llvm::cast<::mlir::TypedValue<::mlir::Type>>(*getODSOperands(0).begin()); } ::mlir::TypedValue<::mlir::VectorType> getRsrc() { return ::llvm::cast<::mlir::TypedValue<::mlir::VectorType>>(*getODSOperands(1).begin()); } ::mlir::TypedValue<::mlir::IntegerType> getOffset() { return ::llvm::cast<::mlir::TypedValue<::mlir::IntegerType>>(*getODSOperands(2).begin()); } ::mlir::TypedValue<::mlir::IntegerType> getSoffset() { return ::llvm::cast<::mlir::TypedValue<::mlir::IntegerType>>(*getODSOperands(3).begin()); } ::mlir::OpOperand &getVdataMutable() { auto range = getODSOperandIndexAndLength(0); return getOperation()->getOpOperand(range.first); } ::mlir::OpOperand &getRsrcMutable() { auto range = getODSOperandIndexAndLength(1); return getOperation()->getOpOperand(range.first); } ::mlir::OpOperand &getOffsetMutable() { auto range = getODSOperandIndexAndLength(2); return getOperation()->getOpOperand(range.first); } ::mlir::OpOperand &getSoffsetMutable() { auto range = getODSOperandIndexAndLength(3); return getOperation()->getOpOperand(range.first); } std::pair getODSResultIndexAndLength(unsigned index) { return {index, 1}; } ::mlir::Operation::result_range getODSResults(unsigned index) { auto valueRange = getODSResultIndexAndLength(index); return {std::next(getOperation()->result_begin(), valueRange.first), std::next(getOperation()->result_begin(), valueRange.first + valueRange.second)}; } ::mlir::TypedValue<::mlir::Type> getRes() { return ::llvm::cast<::mlir::TypedValue<::mlir::Type>>(*getODSResults(0).begin()); } static ::llvm::LogicalResult setPropertiesFromAttr(Properties &prop, ::mlir::Attribute attr, ::llvm::function_ref<::mlir::InFlightDiagnostic()> emitError); static ::mlir::Attribute getPropertiesAsAttr(::mlir::MLIRContext *ctx, const Properties &prop); static llvm::hash_code computePropertiesHash(const Properties &prop); static std::optional getInherentAttr(::mlir::MLIRContext *ctx, const Properties &prop, llvm::StringRef name); static void setInherentAttr(Properties &prop, llvm::StringRef name, mlir::Attribute value); static void populateInherentAttrs(::mlir::MLIRContext *ctx, const Properties &prop, ::mlir::NamedAttrList &attrs); static ::llvm::LogicalResult verifyInherentAttrs(::mlir::OperationName opName, ::mlir::NamedAttrList &attrs, llvm::function_ref<::mlir::InFlightDiagnostic()> emitError); static ::llvm::LogicalResult readProperties(::mlir::DialectBytecodeReader &reader, ::mlir::OperationState &state); void writeProperties(::mlir::DialectBytecodeWriter &writer); ::mlir::Attribute getAuxAttr() { return ::llvm::dyn_cast_or_null<::mlir::Attribute>(getProperties().aux); } ::mlir::Attribute getAux(); void setAuxAttr(::mlir::Attribute attr) { getProperties().aux = attr; } static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::Type res, ::mlir::Value vdata, ::mlir::Value rsrc, ::mlir::Value offset, ::mlir::Value soffset, ::mlir::Attribute aux = nullptr); static RawBufferAtomicFAddOp create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::Type res, ::mlir::Value vdata, ::mlir::Value rsrc, ::mlir::Value offset, ::mlir::Value soffset, ::mlir::Attribute aux = nullptr); static RawBufferAtomicFAddOp create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::Type res, ::mlir::Value vdata, ::mlir::Value rsrc, ::mlir::Value offset, ::mlir::Value soffset, ::mlir::Attribute aux = nullptr); static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::Value vdata, ::mlir::Value rsrc, ::mlir::Value offset, ::mlir::Value soffset, ::mlir::Attribute aux = nullptr); static RawBufferAtomicFAddOp create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::Value vdata, ::mlir::Value rsrc, ::mlir::Value offset, ::mlir::Value soffset, ::mlir::Attribute aux = nullptr); static RawBufferAtomicFAddOp create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::Value vdata, ::mlir::Value rsrc, ::mlir::Value offset, ::mlir::Value soffset, ::mlir::Attribute aux = nullptr); static void build(::mlir::OpBuilder &, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, ::llvm::ArrayRef<::mlir::NamedAttribute> attributes = {}); static RawBufferAtomicFAddOp create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, ::llvm::ArrayRef<::mlir::NamedAttribute> attributes = {}); static RawBufferAtomicFAddOp create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, ::llvm::ArrayRef<::mlir::NamedAttribute> attributes = {}); static void build(::mlir::OpBuilder &, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, const Properties &properties, ::llvm::ArrayRef<::mlir::NamedAttribute> discardableAttributes = {}); static RawBufferAtomicFAddOp create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, const Properties &properties, ::llvm::ArrayRef<::mlir::NamedAttribute> discardableAttributes = {}); static RawBufferAtomicFAddOp create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, const Properties &properties, ::llvm::ArrayRef<::mlir::NamedAttribute> discardableAttributes = {}); static void populateDefaultProperties(::mlir::OperationName opName, Properties &properties); ::llvm::LogicalResult verifyInvariantsImpl(); ::llvm::LogicalResult verifyInvariants(); static ::mlir::ParseResult parse(::mlir::OpAsmParser &parser, ::mlir::OperationState &result); void print(::mlir::OpAsmPrinter &_odsPrinter); private: ::mlir::StringAttr getAttributeNameForIndex(unsigned index) { return getAttributeNameForIndex((*this)->getName(), index); } static ::mlir::StringAttr getAttributeNameForIndex(::mlir::OperationName name, unsigned index) { assert(index < 1 && "invalid attribute index"); assert(name.getStringRef() == getOperationName() && "invalid operation name"); assert(name.isRegistered() && "Operation isn't registered, missing a " "dependent dialect loading?"); return name.getAttributeNames()[index]; } public: }; } // namespace mlir::ROCDL MLIR_DECLARE_EXPLICIT_TYPE_ID(::mlir::ROCDL::RawBufferAtomicFAddOp) MLIR_DECLARE_EXPLICIT_TYPE_ID(::mlir::ROCDL::detail::RawBufferAtomicFAddOpGenericAdaptorBase::Properties) namespace mlir::ROCDL { //===----------------------------------------------------------------------===// // ::mlir::ROCDL::RawBufferAtomicFMaxOp declarations //===----------------------------------------------------------------------===// namespace detail { class RawBufferAtomicFMaxOpGenericAdaptorBase { public: struct Properties { using auxTy = ::mlir::Attribute; auxTy aux; auto getAux() const { auto &propStorage = this->aux; return ::llvm::dyn_cast_or_null<::mlir::Attribute>(propStorage); } void setAux(const ::mlir::Attribute &propValue) { this->aux = propValue; } bool operator==(const Properties &rhs) const { return rhs.aux == this->aux && true; } bool operator!=(const Properties &rhs) const { return !(*this == rhs); } }; protected: ::mlir::DictionaryAttr odsAttrs; ::std::optional<::mlir::OperationName> odsOpName; Properties properties; ::mlir::RegionRange odsRegions; public: RawBufferAtomicFMaxOpGenericAdaptorBase(::mlir::DictionaryAttr attrs, const Properties &properties, ::mlir::RegionRange regions = {}) : odsAttrs(attrs), properties(properties), odsRegions(regions) { if (odsAttrs) odsOpName.emplace("rocdl.raw.buffer.atomic.fmax", odsAttrs.getContext()); } RawBufferAtomicFMaxOpGenericAdaptorBase(RawBufferAtomicFMaxOp op); std::pair getODSOperandIndexAndLength(unsigned index, unsigned odsOperandsSize) { return {index, 1}; } const Properties &getProperties() { return properties; } ::mlir::DictionaryAttr getAttributes() { return odsAttrs; } ::mlir::Attribute getAuxAttr(); ::mlir::Attribute getAux(); }; } // namespace detail template class RawBufferAtomicFMaxOpGenericAdaptor : public detail::RawBufferAtomicFMaxOpGenericAdaptorBase { using ValueT = ::llvm::detail::ValueOfRange; using Base = detail::RawBufferAtomicFMaxOpGenericAdaptorBase; static constexpr int odsIndex_vdata = 0; static constexpr int odsIndex_rsrc = 1; static constexpr int odsIndex_offset = 2; static constexpr int odsIndex_soffset = 3; public: RawBufferAtomicFMaxOpGenericAdaptor(RangeT values, ::mlir::DictionaryAttr attrs, const Properties &properties, ::mlir::RegionRange regions = {}) : Base(attrs, properties, regions), odsOperands(values) {} RawBufferAtomicFMaxOpGenericAdaptor(RangeT values, ::mlir::DictionaryAttr attrs, ::mlir::PropertyRef properties, ::mlir::RegionRange regions = {}) : RawBufferAtomicFMaxOpGenericAdaptor(values, attrs, (properties ? *properties.as() : Properties{}), regions) {} RawBufferAtomicFMaxOpGenericAdaptor(RangeT values, ::mlir::DictionaryAttr attrs = nullptr) : RawBufferAtomicFMaxOpGenericAdaptor(values, attrs, Properties{}, {}) {} RawBufferAtomicFMaxOpGenericAdaptor(RangeT values, const RawBufferAtomicFMaxOpGenericAdaptorBase &base) : Base(base), odsOperands(values) {} template >> RawBufferAtomicFMaxOpGenericAdaptor(RangeT values, LateInst op) : Base(op), odsOperands(values) {} std::pair getODSOperandIndexAndLength(unsigned index) { return Base::getODSOperandIndexAndLength(index, odsOperands.size()); } RangeT getODSOperands(unsigned index) { auto valueRange = getODSOperandIndexAndLength(index); return {std::next(odsOperands.begin(), valueRange.first), std::next(odsOperands.begin(), valueRange.first + valueRange.second)}; } ValueT getVdata() { return (*getODSOperands(0).begin()); } ValueT getRsrc() { return (*getODSOperands(1).begin()); } ValueT getOffset() { return (*getODSOperands(2).begin()); } ValueT getSoffset() { return (*getODSOperands(3).begin()); } RangeT getOperands() { return odsOperands; } private: RangeT odsOperands; }; class RawBufferAtomicFMaxOpAdaptor : public RawBufferAtomicFMaxOpGenericAdaptor<::mlir::ValueRange> { public: using RawBufferAtomicFMaxOpGenericAdaptor::RawBufferAtomicFMaxOpGenericAdaptor; RawBufferAtomicFMaxOpAdaptor(RawBufferAtomicFMaxOp op); ::llvm::LogicalResult verify(::mlir::Location loc); }; class RawBufferAtomicFMaxOp : public ::mlir::Op::Impl, ::mlir::OpTrait::ZeroSuccessors, ::mlir::OpTrait::NOperands<4>::Impl, ::mlir::OpTrait::OpInvariants, ::mlir::BytecodeOpInterface::Trait> { public: using Op::Op; using Op::print; using Adaptor = RawBufferAtomicFMaxOpAdaptor; template using GenericAdaptor = RawBufferAtomicFMaxOpGenericAdaptor; using FoldAdaptor = GenericAdaptor<::llvm::ArrayRef<::mlir::Attribute>>; static constexpr int odsIndex_vdata = 0; static constexpr int odsIndex_rsrc = 1; static constexpr int odsIndex_offset = 2; static constexpr int odsIndex_soffset = 3; using Properties = FoldAdaptor::Properties; static ::llvm::ArrayRef<::llvm::StringRef> getAttributeNames() { static ::llvm::StringRef attrNames[] = {::llvm::StringRef("aux")}; return ::llvm::ArrayRef(attrNames); } ::mlir::StringAttr getAuxAttrName() { return getAttributeNameForIndex(0); } static ::mlir::StringAttr getAuxAttrName(::mlir::OperationName name) { return getAttributeNameForIndex(name, 0); } static constexpr ::llvm::StringLiteral getOperationName() { return ::llvm::StringLiteral("rocdl.raw.buffer.atomic.fmax"); } std::pair getODSOperandIndexAndLength(unsigned index) { return {index, 1}; } ::mlir::Operation::operand_range getODSOperands(unsigned index) { auto valueRange = getODSOperandIndexAndLength(index); return {std::next(getOperation()->operand_begin(), valueRange.first), std::next(getOperation()->operand_begin(), valueRange.first + valueRange.second)}; } ::mlir::TypedValue<::mlir::Type> getVdata() { return ::llvm::cast<::mlir::TypedValue<::mlir::Type>>(*getODSOperands(0).begin()); } ::mlir::TypedValue<::mlir::VectorType> getRsrc() { return ::llvm::cast<::mlir::TypedValue<::mlir::VectorType>>(*getODSOperands(1).begin()); } ::mlir::TypedValue<::mlir::IntegerType> getOffset() { return ::llvm::cast<::mlir::TypedValue<::mlir::IntegerType>>(*getODSOperands(2).begin()); } ::mlir::TypedValue<::mlir::IntegerType> getSoffset() { return ::llvm::cast<::mlir::TypedValue<::mlir::IntegerType>>(*getODSOperands(3).begin()); } ::mlir::OpOperand &getVdataMutable() { auto range = getODSOperandIndexAndLength(0); return getOperation()->getOpOperand(range.first); } ::mlir::OpOperand &getRsrcMutable() { auto range = getODSOperandIndexAndLength(1); return getOperation()->getOpOperand(range.first); } ::mlir::OpOperand &getOffsetMutable() { auto range = getODSOperandIndexAndLength(2); return getOperation()->getOpOperand(range.first); } ::mlir::OpOperand &getSoffsetMutable() { auto range = getODSOperandIndexAndLength(3); return getOperation()->getOpOperand(range.first); } std::pair getODSResultIndexAndLength(unsigned index) { return {index, 1}; } ::mlir::Operation::result_range getODSResults(unsigned index) { auto valueRange = getODSResultIndexAndLength(index); return {std::next(getOperation()->result_begin(), valueRange.first), std::next(getOperation()->result_begin(), valueRange.first + valueRange.second)}; } ::mlir::TypedValue<::mlir::Type> getRes() { return ::llvm::cast<::mlir::TypedValue<::mlir::Type>>(*getODSResults(0).begin()); } static ::llvm::LogicalResult setPropertiesFromAttr(Properties &prop, ::mlir::Attribute attr, ::llvm::function_ref<::mlir::InFlightDiagnostic()> emitError); static ::mlir::Attribute getPropertiesAsAttr(::mlir::MLIRContext *ctx, const Properties &prop); static llvm::hash_code computePropertiesHash(const Properties &prop); static std::optional getInherentAttr(::mlir::MLIRContext *ctx, const Properties &prop, llvm::StringRef name); static void setInherentAttr(Properties &prop, llvm::StringRef name, mlir::Attribute value); static void populateInherentAttrs(::mlir::MLIRContext *ctx, const Properties &prop, ::mlir::NamedAttrList &attrs); static ::llvm::LogicalResult verifyInherentAttrs(::mlir::OperationName opName, ::mlir::NamedAttrList &attrs, llvm::function_ref<::mlir::InFlightDiagnostic()> emitError); static ::llvm::LogicalResult readProperties(::mlir::DialectBytecodeReader &reader, ::mlir::OperationState &state); void writeProperties(::mlir::DialectBytecodeWriter &writer); ::mlir::Attribute getAuxAttr() { return ::llvm::dyn_cast_or_null<::mlir::Attribute>(getProperties().aux); } ::mlir::Attribute getAux(); void setAuxAttr(::mlir::Attribute attr) { getProperties().aux = attr; } static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::Type res, ::mlir::Value vdata, ::mlir::Value rsrc, ::mlir::Value offset, ::mlir::Value soffset, ::mlir::Attribute aux = nullptr); static RawBufferAtomicFMaxOp create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::Type res, ::mlir::Value vdata, ::mlir::Value rsrc, ::mlir::Value offset, ::mlir::Value soffset, ::mlir::Attribute aux = nullptr); static RawBufferAtomicFMaxOp create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::Type res, ::mlir::Value vdata, ::mlir::Value rsrc, ::mlir::Value offset, ::mlir::Value soffset, ::mlir::Attribute aux = nullptr); static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::Value vdata, ::mlir::Value rsrc, ::mlir::Value offset, ::mlir::Value soffset, ::mlir::Attribute aux = nullptr); static RawBufferAtomicFMaxOp create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::Value vdata, ::mlir::Value rsrc, ::mlir::Value offset, ::mlir::Value soffset, ::mlir::Attribute aux = nullptr); static RawBufferAtomicFMaxOp create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::Value vdata, ::mlir::Value rsrc, ::mlir::Value offset, ::mlir::Value soffset, ::mlir::Attribute aux = nullptr); static void build(::mlir::OpBuilder &, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, ::llvm::ArrayRef<::mlir::NamedAttribute> attributes = {}); static RawBufferAtomicFMaxOp create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, ::llvm::ArrayRef<::mlir::NamedAttribute> attributes = {}); static RawBufferAtomicFMaxOp create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, ::llvm::ArrayRef<::mlir::NamedAttribute> attributes = {}); static void build(::mlir::OpBuilder &, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, const Properties &properties, ::llvm::ArrayRef<::mlir::NamedAttribute> discardableAttributes = {}); static RawBufferAtomicFMaxOp create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, const Properties &properties, ::llvm::ArrayRef<::mlir::NamedAttribute> discardableAttributes = {}); static RawBufferAtomicFMaxOp create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, const Properties &properties, ::llvm::ArrayRef<::mlir::NamedAttribute> discardableAttributes = {}); static void populateDefaultProperties(::mlir::OperationName opName, Properties &properties); ::llvm::LogicalResult verifyInvariantsImpl(); ::llvm::LogicalResult verifyInvariants(); static ::mlir::ParseResult parse(::mlir::OpAsmParser &parser, ::mlir::OperationState &result); void print(::mlir::OpAsmPrinter &_odsPrinter); private: ::mlir::StringAttr getAttributeNameForIndex(unsigned index) { return getAttributeNameForIndex((*this)->getName(), index); } static ::mlir::StringAttr getAttributeNameForIndex(::mlir::OperationName name, unsigned index) { assert(index < 1 && "invalid attribute index"); assert(name.getStringRef() == getOperationName() && "invalid operation name"); assert(name.isRegistered() && "Operation isn't registered, missing a " "dependent dialect loading?"); return name.getAttributeNames()[index]; } public: }; } // namespace mlir::ROCDL MLIR_DECLARE_EXPLICIT_TYPE_ID(::mlir::ROCDL::RawBufferAtomicFMaxOp) MLIR_DECLARE_EXPLICIT_TYPE_ID(::mlir::ROCDL::detail::RawBufferAtomicFMaxOpGenericAdaptorBase::Properties) namespace mlir::ROCDL { //===----------------------------------------------------------------------===// // ::mlir::ROCDL::RawBufferAtomicSMaxOp declarations //===----------------------------------------------------------------------===// namespace detail { class RawBufferAtomicSMaxOpGenericAdaptorBase { public: struct Properties { using auxTy = ::mlir::Attribute; auxTy aux; auto getAux() const { auto &propStorage = this->aux; return ::llvm::dyn_cast_or_null<::mlir::Attribute>(propStorage); } void setAux(const ::mlir::Attribute &propValue) { this->aux = propValue; } bool operator==(const Properties &rhs) const { return rhs.aux == this->aux && true; } bool operator!=(const Properties &rhs) const { return !(*this == rhs); } }; protected: ::mlir::DictionaryAttr odsAttrs; ::std::optional<::mlir::OperationName> odsOpName; Properties properties; ::mlir::RegionRange odsRegions; public: RawBufferAtomicSMaxOpGenericAdaptorBase(::mlir::DictionaryAttr attrs, const Properties &properties, ::mlir::RegionRange regions = {}) : odsAttrs(attrs), properties(properties), odsRegions(regions) { if (odsAttrs) odsOpName.emplace("rocdl.raw.buffer.atomic.smax", odsAttrs.getContext()); } RawBufferAtomicSMaxOpGenericAdaptorBase(RawBufferAtomicSMaxOp op); std::pair getODSOperandIndexAndLength(unsigned index, unsigned odsOperandsSize) { return {index, 1}; } const Properties &getProperties() { return properties; } ::mlir::DictionaryAttr getAttributes() { return odsAttrs; } ::mlir::Attribute getAuxAttr(); ::mlir::Attribute getAux(); }; } // namespace detail template class RawBufferAtomicSMaxOpGenericAdaptor : public detail::RawBufferAtomicSMaxOpGenericAdaptorBase { using ValueT = ::llvm::detail::ValueOfRange; using Base = detail::RawBufferAtomicSMaxOpGenericAdaptorBase; static constexpr int odsIndex_vdata = 0; static constexpr int odsIndex_rsrc = 1; static constexpr int odsIndex_offset = 2; static constexpr int odsIndex_soffset = 3; public: RawBufferAtomicSMaxOpGenericAdaptor(RangeT values, ::mlir::DictionaryAttr attrs, const Properties &properties, ::mlir::RegionRange regions = {}) : Base(attrs, properties, regions), odsOperands(values) {} RawBufferAtomicSMaxOpGenericAdaptor(RangeT values, ::mlir::DictionaryAttr attrs, ::mlir::PropertyRef properties, ::mlir::RegionRange regions = {}) : RawBufferAtomicSMaxOpGenericAdaptor(values, attrs, (properties ? *properties.as() : Properties{}), regions) {} RawBufferAtomicSMaxOpGenericAdaptor(RangeT values, ::mlir::DictionaryAttr attrs = nullptr) : RawBufferAtomicSMaxOpGenericAdaptor(values, attrs, Properties{}, {}) {} RawBufferAtomicSMaxOpGenericAdaptor(RangeT values, const RawBufferAtomicSMaxOpGenericAdaptorBase &base) : Base(base), odsOperands(values) {} template >> RawBufferAtomicSMaxOpGenericAdaptor(RangeT values, LateInst op) : Base(op), odsOperands(values) {} std::pair getODSOperandIndexAndLength(unsigned index) { return Base::getODSOperandIndexAndLength(index, odsOperands.size()); } RangeT getODSOperands(unsigned index) { auto valueRange = getODSOperandIndexAndLength(index); return {std::next(odsOperands.begin(), valueRange.first), std::next(odsOperands.begin(), valueRange.first + valueRange.second)}; } ValueT getVdata() { return (*getODSOperands(0).begin()); } ValueT getRsrc() { return (*getODSOperands(1).begin()); } ValueT getOffset() { return (*getODSOperands(2).begin()); } ValueT getSoffset() { return (*getODSOperands(3).begin()); } RangeT getOperands() { return odsOperands; } private: RangeT odsOperands; }; class RawBufferAtomicSMaxOpAdaptor : public RawBufferAtomicSMaxOpGenericAdaptor<::mlir::ValueRange> { public: using RawBufferAtomicSMaxOpGenericAdaptor::RawBufferAtomicSMaxOpGenericAdaptor; RawBufferAtomicSMaxOpAdaptor(RawBufferAtomicSMaxOp op); ::llvm::LogicalResult verify(::mlir::Location loc); }; class RawBufferAtomicSMaxOp : public ::mlir::Op::Impl, ::mlir::OpTrait::ZeroSuccessors, ::mlir::OpTrait::NOperands<4>::Impl, ::mlir::OpTrait::OpInvariants, ::mlir::BytecodeOpInterface::Trait> { public: using Op::Op; using Op::print; using Adaptor = RawBufferAtomicSMaxOpAdaptor; template using GenericAdaptor = RawBufferAtomicSMaxOpGenericAdaptor; using FoldAdaptor = GenericAdaptor<::llvm::ArrayRef<::mlir::Attribute>>; static constexpr int odsIndex_vdata = 0; static constexpr int odsIndex_rsrc = 1; static constexpr int odsIndex_offset = 2; static constexpr int odsIndex_soffset = 3; using Properties = FoldAdaptor::Properties; static ::llvm::ArrayRef<::llvm::StringRef> getAttributeNames() { static ::llvm::StringRef attrNames[] = {::llvm::StringRef("aux")}; return ::llvm::ArrayRef(attrNames); } ::mlir::StringAttr getAuxAttrName() { return getAttributeNameForIndex(0); } static ::mlir::StringAttr getAuxAttrName(::mlir::OperationName name) { return getAttributeNameForIndex(name, 0); } static constexpr ::llvm::StringLiteral getOperationName() { return ::llvm::StringLiteral("rocdl.raw.buffer.atomic.smax"); } std::pair getODSOperandIndexAndLength(unsigned index) { return {index, 1}; } ::mlir::Operation::operand_range getODSOperands(unsigned index) { auto valueRange = getODSOperandIndexAndLength(index); return {std::next(getOperation()->operand_begin(), valueRange.first), std::next(getOperation()->operand_begin(), valueRange.first + valueRange.second)}; } ::mlir::TypedValue<::mlir::Type> getVdata() { return ::llvm::cast<::mlir::TypedValue<::mlir::Type>>(*getODSOperands(0).begin()); } ::mlir::TypedValue<::mlir::VectorType> getRsrc() { return ::llvm::cast<::mlir::TypedValue<::mlir::VectorType>>(*getODSOperands(1).begin()); } ::mlir::TypedValue<::mlir::IntegerType> getOffset() { return ::llvm::cast<::mlir::TypedValue<::mlir::IntegerType>>(*getODSOperands(2).begin()); } ::mlir::TypedValue<::mlir::IntegerType> getSoffset() { return ::llvm::cast<::mlir::TypedValue<::mlir::IntegerType>>(*getODSOperands(3).begin()); } ::mlir::OpOperand &getVdataMutable() { auto range = getODSOperandIndexAndLength(0); return getOperation()->getOpOperand(range.first); } ::mlir::OpOperand &getRsrcMutable() { auto range = getODSOperandIndexAndLength(1); return getOperation()->getOpOperand(range.first); } ::mlir::OpOperand &getOffsetMutable() { auto range = getODSOperandIndexAndLength(2); return getOperation()->getOpOperand(range.first); } ::mlir::OpOperand &getSoffsetMutable() { auto range = getODSOperandIndexAndLength(3); return getOperation()->getOpOperand(range.first); } std::pair getODSResultIndexAndLength(unsigned index) { return {index, 1}; } ::mlir::Operation::result_range getODSResults(unsigned index) { auto valueRange = getODSResultIndexAndLength(index); return {std::next(getOperation()->result_begin(), valueRange.first), std::next(getOperation()->result_begin(), valueRange.first + valueRange.second)}; } ::mlir::TypedValue<::mlir::Type> getRes() { return ::llvm::cast<::mlir::TypedValue<::mlir::Type>>(*getODSResults(0).begin()); } static ::llvm::LogicalResult setPropertiesFromAttr(Properties &prop, ::mlir::Attribute attr, ::llvm::function_ref<::mlir::InFlightDiagnostic()> emitError); static ::mlir::Attribute getPropertiesAsAttr(::mlir::MLIRContext *ctx, const Properties &prop); static llvm::hash_code computePropertiesHash(const Properties &prop); static std::optional getInherentAttr(::mlir::MLIRContext *ctx, const Properties &prop, llvm::StringRef name); static void setInherentAttr(Properties &prop, llvm::StringRef name, mlir::Attribute value); static void populateInherentAttrs(::mlir::MLIRContext *ctx, const Properties &prop, ::mlir::NamedAttrList &attrs); static ::llvm::LogicalResult verifyInherentAttrs(::mlir::OperationName opName, ::mlir::NamedAttrList &attrs, llvm::function_ref<::mlir::InFlightDiagnostic()> emitError); static ::llvm::LogicalResult readProperties(::mlir::DialectBytecodeReader &reader, ::mlir::OperationState &state); void writeProperties(::mlir::DialectBytecodeWriter &writer); ::mlir::Attribute getAuxAttr() { return ::llvm::dyn_cast_or_null<::mlir::Attribute>(getProperties().aux); } ::mlir::Attribute getAux(); void setAuxAttr(::mlir::Attribute attr) { getProperties().aux = attr; } static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::Type res, ::mlir::Value vdata, ::mlir::Value rsrc, ::mlir::Value offset, ::mlir::Value soffset, ::mlir::Attribute aux = nullptr); static RawBufferAtomicSMaxOp create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::Type res, ::mlir::Value vdata, ::mlir::Value rsrc, ::mlir::Value offset, ::mlir::Value soffset, ::mlir::Attribute aux = nullptr); static RawBufferAtomicSMaxOp create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::Type res, ::mlir::Value vdata, ::mlir::Value rsrc, ::mlir::Value offset, ::mlir::Value soffset, ::mlir::Attribute aux = nullptr); static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::Value vdata, ::mlir::Value rsrc, ::mlir::Value offset, ::mlir::Value soffset, ::mlir::Attribute aux = nullptr); static RawBufferAtomicSMaxOp create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::Value vdata, ::mlir::Value rsrc, ::mlir::Value offset, ::mlir::Value soffset, ::mlir::Attribute aux = nullptr); static RawBufferAtomicSMaxOp create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::Value vdata, ::mlir::Value rsrc, ::mlir::Value offset, ::mlir::Value soffset, ::mlir::Attribute aux = nullptr); static void build(::mlir::OpBuilder &, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, ::llvm::ArrayRef<::mlir::NamedAttribute> attributes = {}); static RawBufferAtomicSMaxOp create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, ::llvm::ArrayRef<::mlir::NamedAttribute> attributes = {}); static RawBufferAtomicSMaxOp create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, ::llvm::ArrayRef<::mlir::NamedAttribute> attributes = {}); static void build(::mlir::OpBuilder &, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, const Properties &properties, ::llvm::ArrayRef<::mlir::NamedAttribute> discardableAttributes = {}); static RawBufferAtomicSMaxOp create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, const Properties &properties, ::llvm::ArrayRef<::mlir::NamedAttribute> discardableAttributes = {}); static RawBufferAtomicSMaxOp create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, const Properties &properties, ::llvm::ArrayRef<::mlir::NamedAttribute> discardableAttributes = {}); static void populateDefaultProperties(::mlir::OperationName opName, Properties &properties); ::llvm::LogicalResult verifyInvariantsImpl(); ::llvm::LogicalResult verifyInvariants(); static ::mlir::ParseResult parse(::mlir::OpAsmParser &parser, ::mlir::OperationState &result); void print(::mlir::OpAsmPrinter &_odsPrinter); private: ::mlir::StringAttr getAttributeNameForIndex(unsigned index) { return getAttributeNameForIndex((*this)->getName(), index); } static ::mlir::StringAttr getAttributeNameForIndex(::mlir::OperationName name, unsigned index) { assert(index < 1 && "invalid attribute index"); assert(name.getStringRef() == getOperationName() && "invalid operation name"); assert(name.isRegistered() && "Operation isn't registered, missing a " "dependent dialect loading?"); return name.getAttributeNames()[index]; } public: }; } // namespace mlir::ROCDL MLIR_DECLARE_EXPLICIT_TYPE_ID(::mlir::ROCDL::RawBufferAtomicSMaxOp) MLIR_DECLARE_EXPLICIT_TYPE_ID(::mlir::ROCDL::detail::RawBufferAtomicSMaxOpGenericAdaptorBase::Properties) namespace mlir::ROCDL { //===----------------------------------------------------------------------===// // ::mlir::ROCDL::RawBufferAtomicUMinOp declarations //===----------------------------------------------------------------------===// namespace detail { class RawBufferAtomicUMinOpGenericAdaptorBase { public: struct Properties { using auxTy = ::mlir::Attribute; auxTy aux; auto getAux() const { auto &propStorage = this->aux; return ::llvm::dyn_cast_or_null<::mlir::Attribute>(propStorage); } void setAux(const ::mlir::Attribute &propValue) { this->aux = propValue; } bool operator==(const Properties &rhs) const { return rhs.aux == this->aux && true; } bool operator!=(const Properties &rhs) const { return !(*this == rhs); } }; protected: ::mlir::DictionaryAttr odsAttrs; ::std::optional<::mlir::OperationName> odsOpName; Properties properties; ::mlir::RegionRange odsRegions; public: RawBufferAtomicUMinOpGenericAdaptorBase(::mlir::DictionaryAttr attrs, const Properties &properties, ::mlir::RegionRange regions = {}) : odsAttrs(attrs), properties(properties), odsRegions(regions) { if (odsAttrs) odsOpName.emplace("rocdl.raw.buffer.atomic.umin", odsAttrs.getContext()); } RawBufferAtomicUMinOpGenericAdaptorBase(RawBufferAtomicUMinOp op); std::pair getODSOperandIndexAndLength(unsigned index, unsigned odsOperandsSize) { return {index, 1}; } const Properties &getProperties() { return properties; } ::mlir::DictionaryAttr getAttributes() { return odsAttrs; } ::mlir::Attribute getAuxAttr(); ::mlir::Attribute getAux(); }; } // namespace detail template class RawBufferAtomicUMinOpGenericAdaptor : public detail::RawBufferAtomicUMinOpGenericAdaptorBase { using ValueT = ::llvm::detail::ValueOfRange; using Base = detail::RawBufferAtomicUMinOpGenericAdaptorBase; static constexpr int odsIndex_vdata = 0; static constexpr int odsIndex_rsrc = 1; static constexpr int odsIndex_offset = 2; static constexpr int odsIndex_soffset = 3; public: RawBufferAtomicUMinOpGenericAdaptor(RangeT values, ::mlir::DictionaryAttr attrs, const Properties &properties, ::mlir::RegionRange regions = {}) : Base(attrs, properties, regions), odsOperands(values) {} RawBufferAtomicUMinOpGenericAdaptor(RangeT values, ::mlir::DictionaryAttr attrs, ::mlir::PropertyRef properties, ::mlir::RegionRange regions = {}) : RawBufferAtomicUMinOpGenericAdaptor(values, attrs, (properties ? *properties.as() : Properties{}), regions) {} RawBufferAtomicUMinOpGenericAdaptor(RangeT values, ::mlir::DictionaryAttr attrs = nullptr) : RawBufferAtomicUMinOpGenericAdaptor(values, attrs, Properties{}, {}) {} RawBufferAtomicUMinOpGenericAdaptor(RangeT values, const RawBufferAtomicUMinOpGenericAdaptorBase &base) : Base(base), odsOperands(values) {} template >> RawBufferAtomicUMinOpGenericAdaptor(RangeT values, LateInst op) : Base(op), odsOperands(values) {} std::pair getODSOperandIndexAndLength(unsigned index) { return Base::getODSOperandIndexAndLength(index, odsOperands.size()); } RangeT getODSOperands(unsigned index) { auto valueRange = getODSOperandIndexAndLength(index); return {std::next(odsOperands.begin(), valueRange.first), std::next(odsOperands.begin(), valueRange.first + valueRange.second)}; } ValueT getVdata() { return (*getODSOperands(0).begin()); } ValueT getRsrc() { return (*getODSOperands(1).begin()); } ValueT getOffset() { return (*getODSOperands(2).begin()); } ValueT getSoffset() { return (*getODSOperands(3).begin()); } RangeT getOperands() { return odsOperands; } private: RangeT odsOperands; }; class RawBufferAtomicUMinOpAdaptor : public RawBufferAtomicUMinOpGenericAdaptor<::mlir::ValueRange> { public: using RawBufferAtomicUMinOpGenericAdaptor::RawBufferAtomicUMinOpGenericAdaptor; RawBufferAtomicUMinOpAdaptor(RawBufferAtomicUMinOp op); ::llvm::LogicalResult verify(::mlir::Location loc); }; class RawBufferAtomicUMinOp : public ::mlir::Op::Impl, ::mlir::OpTrait::ZeroSuccessors, ::mlir::OpTrait::NOperands<4>::Impl, ::mlir::OpTrait::OpInvariants, ::mlir::BytecodeOpInterface::Trait> { public: using Op::Op; using Op::print; using Adaptor = RawBufferAtomicUMinOpAdaptor; template using GenericAdaptor = RawBufferAtomicUMinOpGenericAdaptor; using FoldAdaptor = GenericAdaptor<::llvm::ArrayRef<::mlir::Attribute>>; static constexpr int odsIndex_vdata = 0; static constexpr int odsIndex_rsrc = 1; static constexpr int odsIndex_offset = 2; static constexpr int odsIndex_soffset = 3; using Properties = FoldAdaptor::Properties; static ::llvm::ArrayRef<::llvm::StringRef> getAttributeNames() { static ::llvm::StringRef attrNames[] = {::llvm::StringRef("aux")}; return ::llvm::ArrayRef(attrNames); } ::mlir::StringAttr getAuxAttrName() { return getAttributeNameForIndex(0); } static ::mlir::StringAttr getAuxAttrName(::mlir::OperationName name) { return getAttributeNameForIndex(name, 0); } static constexpr ::llvm::StringLiteral getOperationName() { return ::llvm::StringLiteral("rocdl.raw.buffer.atomic.umin"); } std::pair getODSOperandIndexAndLength(unsigned index) { return {index, 1}; } ::mlir::Operation::operand_range getODSOperands(unsigned index) { auto valueRange = getODSOperandIndexAndLength(index); return {std::next(getOperation()->operand_begin(), valueRange.first), std::next(getOperation()->operand_begin(), valueRange.first + valueRange.second)}; } ::mlir::TypedValue<::mlir::Type> getVdata() { return ::llvm::cast<::mlir::TypedValue<::mlir::Type>>(*getODSOperands(0).begin()); } ::mlir::TypedValue<::mlir::VectorType> getRsrc() { return ::llvm::cast<::mlir::TypedValue<::mlir::VectorType>>(*getODSOperands(1).begin()); } ::mlir::TypedValue<::mlir::IntegerType> getOffset() { return ::llvm::cast<::mlir::TypedValue<::mlir::IntegerType>>(*getODSOperands(2).begin()); } ::mlir::TypedValue<::mlir::IntegerType> getSoffset() { return ::llvm::cast<::mlir::TypedValue<::mlir::IntegerType>>(*getODSOperands(3).begin()); } ::mlir::OpOperand &getVdataMutable() { auto range = getODSOperandIndexAndLength(0); return getOperation()->getOpOperand(range.first); } ::mlir::OpOperand &getRsrcMutable() { auto range = getODSOperandIndexAndLength(1); return getOperation()->getOpOperand(range.first); } ::mlir::OpOperand &getOffsetMutable() { auto range = getODSOperandIndexAndLength(2); return getOperation()->getOpOperand(range.first); } ::mlir::OpOperand &getSoffsetMutable() { auto range = getODSOperandIndexAndLength(3); return getOperation()->getOpOperand(range.first); } std::pair getODSResultIndexAndLength(unsigned index) { return {index, 1}; } ::mlir::Operation::result_range getODSResults(unsigned index) { auto valueRange = getODSResultIndexAndLength(index); return {std::next(getOperation()->result_begin(), valueRange.first), std::next(getOperation()->result_begin(), valueRange.first + valueRange.second)}; } ::mlir::TypedValue<::mlir::Type> getRes() { return ::llvm::cast<::mlir::TypedValue<::mlir::Type>>(*getODSResults(0).begin()); } static ::llvm::LogicalResult setPropertiesFromAttr(Properties &prop, ::mlir::Attribute attr, ::llvm::function_ref<::mlir::InFlightDiagnostic()> emitError); static ::mlir::Attribute getPropertiesAsAttr(::mlir::MLIRContext *ctx, const Properties &prop); static llvm::hash_code computePropertiesHash(const Properties &prop); static std::optional getInherentAttr(::mlir::MLIRContext *ctx, const Properties &prop, llvm::StringRef name); static void setInherentAttr(Properties &prop, llvm::StringRef name, mlir::Attribute value); static void populateInherentAttrs(::mlir::MLIRContext *ctx, const Properties &prop, ::mlir::NamedAttrList &attrs); static ::llvm::LogicalResult verifyInherentAttrs(::mlir::OperationName opName, ::mlir::NamedAttrList &attrs, llvm::function_ref<::mlir::InFlightDiagnostic()> emitError); static ::llvm::LogicalResult readProperties(::mlir::DialectBytecodeReader &reader, ::mlir::OperationState &state); void writeProperties(::mlir::DialectBytecodeWriter &writer); ::mlir::Attribute getAuxAttr() { return ::llvm::dyn_cast_or_null<::mlir::Attribute>(getProperties().aux); } ::mlir::Attribute getAux(); void setAuxAttr(::mlir::Attribute attr) { getProperties().aux = attr; } static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::Type res, ::mlir::Value vdata, ::mlir::Value rsrc, ::mlir::Value offset, ::mlir::Value soffset, ::mlir::Attribute aux = nullptr); static RawBufferAtomicUMinOp create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::Type res, ::mlir::Value vdata, ::mlir::Value rsrc, ::mlir::Value offset, ::mlir::Value soffset, ::mlir::Attribute aux = nullptr); static RawBufferAtomicUMinOp create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::Type res, ::mlir::Value vdata, ::mlir::Value rsrc, ::mlir::Value offset, ::mlir::Value soffset, ::mlir::Attribute aux = nullptr); static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::Value vdata, ::mlir::Value rsrc, ::mlir::Value offset, ::mlir::Value soffset, ::mlir::Attribute aux = nullptr); static RawBufferAtomicUMinOp create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::Value vdata, ::mlir::Value rsrc, ::mlir::Value offset, ::mlir::Value soffset, ::mlir::Attribute aux = nullptr); static RawBufferAtomicUMinOp create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::Value vdata, ::mlir::Value rsrc, ::mlir::Value offset, ::mlir::Value soffset, ::mlir::Attribute aux = nullptr); static void build(::mlir::OpBuilder &, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, ::llvm::ArrayRef<::mlir::NamedAttribute> attributes = {}); static RawBufferAtomicUMinOp create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, ::llvm::ArrayRef<::mlir::NamedAttribute> attributes = {}); static RawBufferAtomicUMinOp create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, ::llvm::ArrayRef<::mlir::NamedAttribute> attributes = {}); static void build(::mlir::OpBuilder &, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, const Properties &properties, ::llvm::ArrayRef<::mlir::NamedAttribute> discardableAttributes = {}); static RawBufferAtomicUMinOp create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, const Properties &properties, ::llvm::ArrayRef<::mlir::NamedAttribute> discardableAttributes = {}); static RawBufferAtomicUMinOp create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, const Properties &properties, ::llvm::ArrayRef<::mlir::NamedAttribute> discardableAttributes = {}); static void populateDefaultProperties(::mlir::OperationName opName, Properties &properties); ::llvm::LogicalResult verifyInvariantsImpl(); ::llvm::LogicalResult verifyInvariants(); static ::mlir::ParseResult parse(::mlir::OpAsmParser &parser, ::mlir::OperationState &result); void print(::mlir::OpAsmPrinter &_odsPrinter); private: ::mlir::StringAttr getAttributeNameForIndex(unsigned index) { return getAttributeNameForIndex((*this)->getName(), index); } static ::mlir::StringAttr getAttributeNameForIndex(::mlir::OperationName name, unsigned index) { assert(index < 1 && "invalid attribute index"); assert(name.getStringRef() == getOperationName() && "invalid operation name"); assert(name.isRegistered() && "Operation isn't registered, missing a " "dependent dialect loading?"); return name.getAttributeNames()[index]; } public: }; } // namespace mlir::ROCDL MLIR_DECLARE_EXPLICIT_TYPE_ID(::mlir::ROCDL::RawBufferAtomicUMinOp) MLIR_DECLARE_EXPLICIT_TYPE_ID(::mlir::ROCDL::detail::RawBufferAtomicUMinOpGenericAdaptorBase::Properties) namespace mlir::ROCDL { //===----------------------------------------------------------------------===// // ::mlir::ROCDL::RawBufferLoadOp declarations //===----------------------------------------------------------------------===// namespace detail { class RawBufferLoadOpGenericAdaptorBase { public: struct Properties { using auxTy = ::mlir::Attribute; auxTy aux; auto getAux() const { auto &propStorage = this->aux; return ::llvm::dyn_cast_or_null<::mlir::Attribute>(propStorage); } void setAux(const ::mlir::Attribute &propValue) { this->aux = propValue; } bool operator==(const Properties &rhs) const { return rhs.aux == this->aux && true; } bool operator!=(const Properties &rhs) const { return !(*this == rhs); } }; protected: ::mlir::DictionaryAttr odsAttrs; ::std::optional<::mlir::OperationName> odsOpName; Properties properties; ::mlir::RegionRange odsRegions; public: RawBufferLoadOpGenericAdaptorBase(::mlir::DictionaryAttr attrs, const Properties &properties, ::mlir::RegionRange regions = {}) : odsAttrs(attrs), properties(properties), odsRegions(regions) { if (odsAttrs) odsOpName.emplace("rocdl.raw.buffer.load", odsAttrs.getContext()); } RawBufferLoadOpGenericAdaptorBase(RawBufferLoadOp op); std::pair getODSOperandIndexAndLength(unsigned index, unsigned odsOperandsSize) { return {index, 1}; } const Properties &getProperties() { return properties; } ::mlir::DictionaryAttr getAttributes() { return odsAttrs; } ::mlir::Attribute getAuxAttr(); ::mlir::Attribute getAux(); }; } // namespace detail template class RawBufferLoadOpGenericAdaptor : public detail::RawBufferLoadOpGenericAdaptorBase { using ValueT = ::llvm::detail::ValueOfRange; using Base = detail::RawBufferLoadOpGenericAdaptorBase; static constexpr int odsIndex_rsrc = 0; static constexpr int odsIndex_offset = 1; static constexpr int odsIndex_soffset = 2; public: RawBufferLoadOpGenericAdaptor(RangeT values, ::mlir::DictionaryAttr attrs, const Properties &properties, ::mlir::RegionRange regions = {}) : Base(attrs, properties, regions), odsOperands(values) {} RawBufferLoadOpGenericAdaptor(RangeT values, ::mlir::DictionaryAttr attrs, ::mlir::PropertyRef properties, ::mlir::RegionRange regions = {}) : RawBufferLoadOpGenericAdaptor(values, attrs, (properties ? *properties.as() : Properties{}), regions) {} RawBufferLoadOpGenericAdaptor(RangeT values, ::mlir::DictionaryAttr attrs = nullptr) : RawBufferLoadOpGenericAdaptor(values, attrs, Properties{}, {}) {} RawBufferLoadOpGenericAdaptor(RangeT values, const RawBufferLoadOpGenericAdaptorBase &base) : Base(base), odsOperands(values) {} template >> RawBufferLoadOpGenericAdaptor(RangeT values, LateInst op) : Base(op), odsOperands(values) {} std::pair getODSOperandIndexAndLength(unsigned index) { return Base::getODSOperandIndexAndLength(index, odsOperands.size()); } RangeT getODSOperands(unsigned index) { auto valueRange = getODSOperandIndexAndLength(index); return {std::next(odsOperands.begin(), valueRange.first), std::next(odsOperands.begin(), valueRange.first + valueRange.second)}; } ValueT getRsrc() { return (*getODSOperands(0).begin()); } ValueT getOffset() { return (*getODSOperands(1).begin()); } ValueT getSoffset() { return (*getODSOperands(2).begin()); } RangeT getOperands() { return odsOperands; } private: RangeT odsOperands; }; class RawBufferLoadOpAdaptor : public RawBufferLoadOpGenericAdaptor<::mlir::ValueRange> { public: using RawBufferLoadOpGenericAdaptor::RawBufferLoadOpGenericAdaptor; RawBufferLoadOpAdaptor(RawBufferLoadOp op); ::llvm::LogicalResult verify(::mlir::Location loc); }; class RawBufferLoadOp : public ::mlir::Op::Impl, ::mlir::OpTrait::ZeroSuccessors, ::mlir::OpTrait::NOperands<3>::Impl, ::mlir::OpTrait::OpInvariants, ::mlir::BytecodeOpInterface::Trait> { public: using Op::Op; using Op::print; using Adaptor = RawBufferLoadOpAdaptor; template using GenericAdaptor = RawBufferLoadOpGenericAdaptor; using FoldAdaptor = GenericAdaptor<::llvm::ArrayRef<::mlir::Attribute>>; static constexpr int odsIndex_rsrc = 0; static constexpr int odsIndex_offset = 1; static constexpr int odsIndex_soffset = 2; using Properties = FoldAdaptor::Properties; static ::llvm::ArrayRef<::llvm::StringRef> getAttributeNames() { static ::llvm::StringRef attrNames[] = {::llvm::StringRef("aux")}; return ::llvm::ArrayRef(attrNames); } ::mlir::StringAttr getAuxAttrName() { return getAttributeNameForIndex(0); } static ::mlir::StringAttr getAuxAttrName(::mlir::OperationName name) { return getAttributeNameForIndex(name, 0); } static constexpr ::llvm::StringLiteral getOperationName() { return ::llvm::StringLiteral("rocdl.raw.buffer.load"); } std::pair getODSOperandIndexAndLength(unsigned index) { return {index, 1}; } ::mlir::Operation::operand_range getODSOperands(unsigned index) { auto valueRange = getODSOperandIndexAndLength(index); return {std::next(getOperation()->operand_begin(), valueRange.first), std::next(getOperation()->operand_begin(), valueRange.first + valueRange.second)}; } ::mlir::TypedValue<::mlir::VectorType> getRsrc() { return ::llvm::cast<::mlir::TypedValue<::mlir::VectorType>>(*getODSOperands(0).begin()); } ::mlir::TypedValue<::mlir::IntegerType> getOffset() { return ::llvm::cast<::mlir::TypedValue<::mlir::IntegerType>>(*getODSOperands(1).begin()); } ::mlir::TypedValue<::mlir::IntegerType> getSoffset() { return ::llvm::cast<::mlir::TypedValue<::mlir::IntegerType>>(*getODSOperands(2).begin()); } ::mlir::OpOperand &getRsrcMutable() { auto range = getODSOperandIndexAndLength(0); return getOperation()->getOpOperand(range.first); } ::mlir::OpOperand &getOffsetMutable() { auto range = getODSOperandIndexAndLength(1); return getOperation()->getOpOperand(range.first); } ::mlir::OpOperand &getSoffsetMutable() { auto range = getODSOperandIndexAndLength(2); return getOperation()->getOpOperand(range.first); } std::pair getODSResultIndexAndLength(unsigned index) { return {index, 1}; } ::mlir::Operation::result_range getODSResults(unsigned index) { auto valueRange = getODSResultIndexAndLength(index); return {std::next(getOperation()->result_begin(), valueRange.first), std::next(getOperation()->result_begin(), valueRange.first + valueRange.second)}; } ::mlir::TypedValue<::mlir::Type> getRes() { return ::llvm::cast<::mlir::TypedValue<::mlir::Type>>(*getODSResults(0).begin()); } static ::llvm::LogicalResult setPropertiesFromAttr(Properties &prop, ::mlir::Attribute attr, ::llvm::function_ref<::mlir::InFlightDiagnostic()> emitError); static ::mlir::Attribute getPropertiesAsAttr(::mlir::MLIRContext *ctx, const Properties &prop); static llvm::hash_code computePropertiesHash(const Properties &prop); static std::optional getInherentAttr(::mlir::MLIRContext *ctx, const Properties &prop, llvm::StringRef name); static void setInherentAttr(Properties &prop, llvm::StringRef name, mlir::Attribute value); static void populateInherentAttrs(::mlir::MLIRContext *ctx, const Properties &prop, ::mlir::NamedAttrList &attrs); static ::llvm::LogicalResult verifyInherentAttrs(::mlir::OperationName opName, ::mlir::NamedAttrList &attrs, llvm::function_ref<::mlir::InFlightDiagnostic()> emitError); static ::llvm::LogicalResult readProperties(::mlir::DialectBytecodeReader &reader, ::mlir::OperationState &state); void writeProperties(::mlir::DialectBytecodeWriter &writer); ::mlir::Attribute getAuxAttr() { return ::llvm::dyn_cast_or_null<::mlir::Attribute>(getProperties().aux); } ::mlir::Attribute getAux(); void setAuxAttr(::mlir::Attribute attr) { getProperties().aux = attr; } static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::Type res, ::mlir::Value rsrc, ::mlir::Value offset, ::mlir::Value soffset, ::mlir::Attribute aux = nullptr); static RawBufferLoadOp create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::Type res, ::mlir::Value rsrc, ::mlir::Value offset, ::mlir::Value soffset, ::mlir::Attribute aux = nullptr); static RawBufferLoadOp create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::Type res, ::mlir::Value rsrc, ::mlir::Value offset, ::mlir::Value soffset, ::mlir::Attribute aux = nullptr); static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::Value rsrc, ::mlir::Value offset, ::mlir::Value soffset, ::mlir::Attribute aux = nullptr); static RawBufferLoadOp create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::Value rsrc, ::mlir::Value offset, ::mlir::Value soffset, ::mlir::Attribute aux = nullptr); static RawBufferLoadOp create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::Value rsrc, ::mlir::Value offset, ::mlir::Value soffset, ::mlir::Attribute aux = nullptr); static void build(::mlir::OpBuilder &, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, ::llvm::ArrayRef<::mlir::NamedAttribute> attributes = {}); static RawBufferLoadOp create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, ::llvm::ArrayRef<::mlir::NamedAttribute> attributes = {}); static RawBufferLoadOp create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, ::llvm::ArrayRef<::mlir::NamedAttribute> attributes = {}); static void build(::mlir::OpBuilder &, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, const Properties &properties, ::llvm::ArrayRef<::mlir::NamedAttribute> discardableAttributes = {}); static RawBufferLoadOp create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, const Properties &properties, ::llvm::ArrayRef<::mlir::NamedAttribute> discardableAttributes = {}); static RawBufferLoadOp create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, const Properties &properties, ::llvm::ArrayRef<::mlir::NamedAttribute> discardableAttributes = {}); static void populateDefaultProperties(::mlir::OperationName opName, Properties &properties); ::llvm::LogicalResult verifyInvariantsImpl(); ::llvm::LogicalResult verifyInvariants(); static ::mlir::ParseResult parse(::mlir::OpAsmParser &parser, ::mlir::OperationState &result); void print(::mlir::OpAsmPrinter &_odsPrinter); private: ::mlir::StringAttr getAttributeNameForIndex(unsigned index) { return getAttributeNameForIndex((*this)->getName(), index); } static ::mlir::StringAttr getAttributeNameForIndex(::mlir::OperationName name, unsigned index) { assert(index < 1 && "invalid attribute index"); assert(name.getStringRef() == getOperationName() && "invalid operation name"); assert(name.isRegistered() && "Operation isn't registered, missing a " "dependent dialect loading?"); return name.getAttributeNames()[index]; } public: }; } // namespace mlir::ROCDL MLIR_DECLARE_EXPLICIT_TYPE_ID(::mlir::ROCDL::RawBufferLoadOp) MLIR_DECLARE_EXPLICIT_TYPE_ID(::mlir::ROCDL::detail::RawBufferLoadOpGenericAdaptorBase::Properties) namespace mlir::ROCDL { //===----------------------------------------------------------------------===// // ::mlir::ROCDL::RawBufferStoreOp declarations //===----------------------------------------------------------------------===// namespace detail { class RawBufferStoreOpGenericAdaptorBase { public: struct Properties { using auxTy = ::mlir::Attribute; auxTy aux; auto getAux() const { auto &propStorage = this->aux; return ::llvm::dyn_cast_or_null<::mlir::Attribute>(propStorage); } void setAux(const ::mlir::Attribute &propValue) { this->aux = propValue; } bool operator==(const Properties &rhs) const { return rhs.aux == this->aux && true; } bool operator!=(const Properties &rhs) const { return !(*this == rhs); } }; protected: ::mlir::DictionaryAttr odsAttrs; ::std::optional<::mlir::OperationName> odsOpName; Properties properties; ::mlir::RegionRange odsRegions; public: RawBufferStoreOpGenericAdaptorBase(::mlir::DictionaryAttr attrs, const Properties &properties, ::mlir::RegionRange regions = {}) : odsAttrs(attrs), properties(properties), odsRegions(regions) { if (odsAttrs) odsOpName.emplace("rocdl.raw.buffer.store", odsAttrs.getContext()); } RawBufferStoreOpGenericAdaptorBase(RawBufferStoreOp op); std::pair getODSOperandIndexAndLength(unsigned index, unsigned odsOperandsSize) { return {index, 1}; } const Properties &getProperties() { return properties; } ::mlir::DictionaryAttr getAttributes() { return odsAttrs; } ::mlir::Attribute getAuxAttr(); ::mlir::Attribute getAux(); }; } // namespace detail template class RawBufferStoreOpGenericAdaptor : public detail::RawBufferStoreOpGenericAdaptorBase { using ValueT = ::llvm::detail::ValueOfRange; using Base = detail::RawBufferStoreOpGenericAdaptorBase; static constexpr int odsIndex_vdata = 0; static constexpr int odsIndex_rsrc = 1; static constexpr int odsIndex_offset = 2; static constexpr int odsIndex_soffset = 3; public: RawBufferStoreOpGenericAdaptor(RangeT values, ::mlir::DictionaryAttr attrs, const Properties &properties, ::mlir::RegionRange regions = {}) : Base(attrs, properties, regions), odsOperands(values) {} RawBufferStoreOpGenericAdaptor(RangeT values, ::mlir::DictionaryAttr attrs, ::mlir::PropertyRef properties, ::mlir::RegionRange regions = {}) : RawBufferStoreOpGenericAdaptor(values, attrs, (properties ? *properties.as() : Properties{}), regions) {} RawBufferStoreOpGenericAdaptor(RangeT values, ::mlir::DictionaryAttr attrs = nullptr) : RawBufferStoreOpGenericAdaptor(values, attrs, Properties{}, {}) {} RawBufferStoreOpGenericAdaptor(RangeT values, const RawBufferStoreOpGenericAdaptorBase &base) : Base(base), odsOperands(values) {} template >> RawBufferStoreOpGenericAdaptor(RangeT values, LateInst op) : Base(op), odsOperands(values) {} std::pair getODSOperandIndexAndLength(unsigned index) { return Base::getODSOperandIndexAndLength(index, odsOperands.size()); } RangeT getODSOperands(unsigned index) { auto valueRange = getODSOperandIndexAndLength(index); return {std::next(odsOperands.begin(), valueRange.first), std::next(odsOperands.begin(), valueRange.first + valueRange.second)}; } ValueT getVdata() { return (*getODSOperands(0).begin()); } ValueT getRsrc() { return (*getODSOperands(1).begin()); } ValueT getOffset() { return (*getODSOperands(2).begin()); } ValueT getSoffset() { return (*getODSOperands(3).begin()); } RangeT getOperands() { return odsOperands; } private: RangeT odsOperands; }; class RawBufferStoreOpAdaptor : public RawBufferStoreOpGenericAdaptor<::mlir::ValueRange> { public: using RawBufferStoreOpGenericAdaptor::RawBufferStoreOpGenericAdaptor; RawBufferStoreOpAdaptor(RawBufferStoreOp op); ::llvm::LogicalResult verify(::mlir::Location loc); }; class RawBufferStoreOp : public ::mlir::Op::Impl, ::mlir::OpTrait::OpInvariants, ::mlir::BytecodeOpInterface::Trait> { public: using Op::Op; using Op::print; using Adaptor = RawBufferStoreOpAdaptor; template using GenericAdaptor = RawBufferStoreOpGenericAdaptor; using FoldAdaptor = GenericAdaptor<::llvm::ArrayRef<::mlir::Attribute>>; static constexpr int odsIndex_vdata = 0; static constexpr int odsIndex_rsrc = 1; static constexpr int odsIndex_offset = 2; static constexpr int odsIndex_soffset = 3; using Properties = FoldAdaptor::Properties; static ::llvm::ArrayRef<::llvm::StringRef> getAttributeNames() { static ::llvm::StringRef attrNames[] = {::llvm::StringRef("aux")}; return ::llvm::ArrayRef(attrNames); } ::mlir::StringAttr getAuxAttrName() { return getAttributeNameForIndex(0); } static ::mlir::StringAttr getAuxAttrName(::mlir::OperationName name) { return getAttributeNameForIndex(name, 0); } static constexpr ::llvm::StringLiteral getOperationName() { return ::llvm::StringLiteral("rocdl.raw.buffer.store"); } std::pair getODSOperandIndexAndLength(unsigned index) { return {index, 1}; } ::mlir::Operation::operand_range getODSOperands(unsigned index) { auto valueRange = getODSOperandIndexAndLength(index); return {std::next(getOperation()->operand_begin(), valueRange.first), std::next(getOperation()->operand_begin(), valueRange.first + valueRange.second)}; } ::mlir::TypedValue<::mlir::Type> getVdata() { return ::llvm::cast<::mlir::TypedValue<::mlir::Type>>(*getODSOperands(0).begin()); } ::mlir::TypedValue<::mlir::VectorType> getRsrc() { return ::llvm::cast<::mlir::TypedValue<::mlir::VectorType>>(*getODSOperands(1).begin()); } ::mlir::TypedValue<::mlir::IntegerType> getOffset() { return ::llvm::cast<::mlir::TypedValue<::mlir::IntegerType>>(*getODSOperands(2).begin()); } ::mlir::TypedValue<::mlir::IntegerType> getSoffset() { return ::llvm::cast<::mlir::TypedValue<::mlir::IntegerType>>(*getODSOperands(3).begin()); } ::mlir::OpOperand &getVdataMutable() { auto range = getODSOperandIndexAndLength(0); return getOperation()->getOpOperand(range.first); } ::mlir::OpOperand &getRsrcMutable() { auto range = getODSOperandIndexAndLength(1); return getOperation()->getOpOperand(range.first); } ::mlir::OpOperand &getOffsetMutable() { auto range = getODSOperandIndexAndLength(2); return getOperation()->getOpOperand(range.first); } ::mlir::OpOperand &getSoffsetMutable() { auto range = getODSOperandIndexAndLength(3); return getOperation()->getOpOperand(range.first); } std::pair getODSResultIndexAndLength(unsigned index) { return {index, 1}; } ::mlir::Operation::result_range getODSResults(unsigned index) { auto valueRange = getODSResultIndexAndLength(index); return {std::next(getOperation()->result_begin(), valueRange.first), std::next(getOperation()->result_begin(), valueRange.first + valueRange.second)}; } static ::llvm::LogicalResult setPropertiesFromAttr(Properties &prop, ::mlir::Attribute attr, ::llvm::function_ref<::mlir::InFlightDiagnostic()> emitError); static ::mlir::Attribute getPropertiesAsAttr(::mlir::MLIRContext *ctx, const Properties &prop); static llvm::hash_code computePropertiesHash(const Properties &prop); static std::optional getInherentAttr(::mlir::MLIRContext *ctx, const Properties &prop, llvm::StringRef name); static void setInherentAttr(Properties &prop, llvm::StringRef name, mlir::Attribute value); static void populateInherentAttrs(::mlir::MLIRContext *ctx, const Properties &prop, ::mlir::NamedAttrList &attrs); static ::llvm::LogicalResult verifyInherentAttrs(::mlir::OperationName opName, ::mlir::NamedAttrList &attrs, llvm::function_ref<::mlir::InFlightDiagnostic()> emitError); static ::llvm::LogicalResult readProperties(::mlir::DialectBytecodeReader &reader, ::mlir::OperationState &state); void writeProperties(::mlir::DialectBytecodeWriter &writer); ::mlir::Attribute getAuxAttr() { return ::llvm::dyn_cast_or_null<::mlir::Attribute>(getProperties().aux); } ::mlir::Attribute getAux(); void setAuxAttr(::mlir::Attribute attr) { getProperties().aux = attr; } static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::Value vdata, ::mlir::Value rsrc, ::mlir::Value offset, ::mlir::Value soffset, ::mlir::Attribute aux = nullptr); static RawBufferStoreOp create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::Value vdata, ::mlir::Value rsrc, ::mlir::Value offset, ::mlir::Value soffset, ::mlir::Attribute aux = nullptr); static RawBufferStoreOp create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::Value vdata, ::mlir::Value rsrc, ::mlir::Value offset, ::mlir::Value soffset, ::mlir::Attribute aux = nullptr); static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::Value vdata, ::mlir::Value rsrc, ::mlir::Value offset, ::mlir::Value soffset, ::mlir::Attribute aux = nullptr); static RawBufferStoreOp create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::Value vdata, ::mlir::Value rsrc, ::mlir::Value offset, ::mlir::Value soffset, ::mlir::Attribute aux = nullptr); static RawBufferStoreOp create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::Value vdata, ::mlir::Value rsrc, ::mlir::Value offset, ::mlir::Value soffset, ::mlir::Attribute aux = nullptr); static void build(::mlir::OpBuilder &, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, ::llvm::ArrayRef<::mlir::NamedAttribute> attributes = {}); static RawBufferStoreOp create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, ::llvm::ArrayRef<::mlir::NamedAttribute> attributes = {}); static RawBufferStoreOp create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, ::llvm::ArrayRef<::mlir::NamedAttribute> attributes = {}); static void build(::mlir::OpBuilder &, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, const Properties &properties, ::llvm::ArrayRef<::mlir::NamedAttribute> discardableAttributes = {}); static RawBufferStoreOp create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, const Properties &properties, ::llvm::ArrayRef<::mlir::NamedAttribute> discardableAttributes = {}); static RawBufferStoreOp create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, const Properties &properties, ::llvm::ArrayRef<::mlir::NamedAttribute> discardableAttributes = {}); static void populateDefaultProperties(::mlir::OperationName opName, Properties &properties); ::llvm::LogicalResult verifyInvariantsImpl(); ::llvm::LogicalResult verifyInvariants(); static ::mlir::ParseResult parse(::mlir::OpAsmParser &parser, ::mlir::OperationState &result); void print(::mlir::OpAsmPrinter &_odsPrinter); private: ::mlir::StringAttr getAttributeNameForIndex(unsigned index) { return getAttributeNameForIndex((*this)->getName(), index); } static ::mlir::StringAttr getAttributeNameForIndex(::mlir::OperationName name, unsigned index) { assert(index < 1 && "invalid attribute index"); assert(name.getStringRef() == getOperationName() && "invalid operation name"); assert(name.isRegistered() && "Operation isn't registered, missing a " "dependent dialect loading?"); return name.getAttributeNames()[index]; } public: }; } // namespace mlir::ROCDL MLIR_DECLARE_EXPLICIT_TYPE_ID(::mlir::ROCDL::RawBufferStoreOp) MLIR_DECLARE_EXPLICIT_TYPE_ID(::mlir::ROCDL::detail::RawBufferStoreOpGenericAdaptorBase::Properties) namespace mlir::ROCDL { //===----------------------------------------------------------------------===// // ::mlir::ROCDL::RawPtrBufferAtomicCmpSwap declarations //===----------------------------------------------------------------------===// namespace detail { class RawPtrBufferAtomicCmpSwapGenericAdaptorBase { public: struct Properties { using alias_scopesTy = ::mlir::ArrayAttr; alias_scopesTy alias_scopes; auto getAliasScopes() const { auto &propStorage = this->alias_scopes; return ::llvm::dyn_cast_or_null<::mlir::ArrayAttr>(propStorage); } void setAliasScopes(const ::mlir::ArrayAttr &propValue) { this->alias_scopes = propValue; } using auxTy = ::mlir::Attribute; auxTy aux; auto getAux() const { auto &propStorage = this->aux; return ::llvm::dyn_cast_or_null<::mlir::Attribute>(propStorage); } void setAux(const ::mlir::Attribute &propValue) { this->aux = propValue; } using noalias_scopesTy = ::mlir::ArrayAttr; noalias_scopesTy noalias_scopes; auto getNoaliasScopes() const { auto &propStorage = this->noalias_scopes; return ::llvm::dyn_cast_or_null<::mlir::ArrayAttr>(propStorage); } void setNoaliasScopes(const ::mlir::ArrayAttr &propValue) { this->noalias_scopes = propValue; } using tbaaTy = ::mlir::ArrayAttr; tbaaTy tbaa; auto getTbaa() const { auto &propStorage = this->tbaa; return ::llvm::dyn_cast_or_null<::mlir::ArrayAttr>(propStorage); } void setTbaa(const ::mlir::ArrayAttr &propValue) { this->tbaa = propValue; } bool operator==(const Properties &rhs) const { return rhs.alias_scopes == this->alias_scopes && rhs.aux == this->aux && rhs.noalias_scopes == this->noalias_scopes && rhs.tbaa == this->tbaa && true; } bool operator!=(const Properties &rhs) const { return !(*this == rhs); } }; protected: ::mlir::DictionaryAttr odsAttrs; ::std::optional<::mlir::OperationName> odsOpName; Properties properties; ::mlir::RegionRange odsRegions; public: RawPtrBufferAtomicCmpSwapGenericAdaptorBase(::mlir::DictionaryAttr attrs, const Properties &properties, ::mlir::RegionRange regions = {}) : odsAttrs(attrs), properties(properties), odsRegions(regions) { if (odsAttrs) odsOpName.emplace("rocdl.raw.ptr.buffer.atomic.cmpswap", odsAttrs.getContext()); } RawPtrBufferAtomicCmpSwapGenericAdaptorBase(RawPtrBufferAtomicCmpSwap op); std::pair getODSOperandIndexAndLength(unsigned index, unsigned odsOperandsSize) { return {index, 1}; } const Properties &getProperties() { return properties; } ::mlir::DictionaryAttr getAttributes() { return odsAttrs; } ::mlir::Attribute getAuxAttr(); ::mlir::Attribute getAux(); ::mlir::ArrayAttr getAliasScopesAttr() { auto attr = ::llvm::dyn_cast_or_null<::mlir::ArrayAttr>(getProperties().alias_scopes); return attr; } ::std::optional< ::mlir::ArrayAttr > getAliasScopes(); ::mlir::ArrayAttr getNoaliasScopesAttr() { auto attr = ::llvm::dyn_cast_or_null<::mlir::ArrayAttr>(getProperties().noalias_scopes); return attr; } ::std::optional< ::mlir::ArrayAttr > getNoaliasScopes(); ::mlir::ArrayAttr getTbaaAttr() { auto attr = ::llvm::dyn_cast_or_null<::mlir::ArrayAttr>(getProperties().tbaa); return attr; } ::std::optional< ::mlir::ArrayAttr > getTbaa(); }; } // namespace detail template class RawPtrBufferAtomicCmpSwapGenericAdaptor : public detail::RawPtrBufferAtomicCmpSwapGenericAdaptorBase { using ValueT = ::llvm::detail::ValueOfRange; using Base = detail::RawPtrBufferAtomicCmpSwapGenericAdaptorBase; static constexpr int odsIndex_src = 0; static constexpr int odsIndex_cmp = 1; static constexpr int odsIndex_rsrc = 2; static constexpr int odsIndex_offset = 3; static constexpr int odsIndex_soffset = 4; public: RawPtrBufferAtomicCmpSwapGenericAdaptor(RangeT values, ::mlir::DictionaryAttr attrs, const Properties &properties, ::mlir::RegionRange regions = {}) : Base(attrs, properties, regions), odsOperands(values) {} RawPtrBufferAtomicCmpSwapGenericAdaptor(RangeT values, ::mlir::DictionaryAttr attrs, ::mlir::PropertyRef properties, ::mlir::RegionRange regions = {}) : RawPtrBufferAtomicCmpSwapGenericAdaptor(values, attrs, (properties ? *properties.as() : Properties{}), regions) {} RawPtrBufferAtomicCmpSwapGenericAdaptor(RangeT values, ::mlir::DictionaryAttr attrs = nullptr) : RawPtrBufferAtomicCmpSwapGenericAdaptor(values, attrs, Properties{}, {}) {} RawPtrBufferAtomicCmpSwapGenericAdaptor(RangeT values, const RawPtrBufferAtomicCmpSwapGenericAdaptorBase &base) : Base(base), odsOperands(values) {} template >> RawPtrBufferAtomicCmpSwapGenericAdaptor(RangeT values, LateInst op) : Base(op), odsOperands(values) {} std::pair getODSOperandIndexAndLength(unsigned index) { return Base::getODSOperandIndexAndLength(index, odsOperands.size()); } RangeT getODSOperands(unsigned index) { auto valueRange = getODSOperandIndexAndLength(index); return {std::next(odsOperands.begin(), valueRange.first), std::next(odsOperands.begin(), valueRange.first + valueRange.second)}; } ValueT getSrc() { return (*getODSOperands(0).begin()); } ValueT getCmp() { return (*getODSOperands(1).begin()); } ValueT getRsrc() { return (*getODSOperands(2).begin()); } ValueT getOffset() { return (*getODSOperands(3).begin()); } ValueT getSoffset() { return (*getODSOperands(4).begin()); } RangeT getOperands() { return odsOperands; } private: RangeT odsOperands; }; class RawPtrBufferAtomicCmpSwapAdaptor : public RawPtrBufferAtomicCmpSwapGenericAdaptor<::mlir::ValueRange> { public: using RawPtrBufferAtomicCmpSwapGenericAdaptor::RawPtrBufferAtomicCmpSwapGenericAdaptor; RawPtrBufferAtomicCmpSwapAdaptor(RawPtrBufferAtomicCmpSwap op); ::llvm::LogicalResult verify(::mlir::Location loc); }; class RawPtrBufferAtomicCmpSwap : public ::mlir::Op::Impl, ::mlir::OpTrait::ZeroSuccessors, ::mlir::OpTrait::NOperands<5>::Impl, ::mlir::OpTrait::OpInvariants, ::mlir::BytecodeOpInterface::Trait, ::mlir::LLVM::AliasAnalysisOpInterface::Trait, ::mlir::MemoryEffectOpInterface::Trait> { public: using Op::Op; using Op::print; using Adaptor = RawPtrBufferAtomicCmpSwapAdaptor; template using GenericAdaptor = RawPtrBufferAtomicCmpSwapGenericAdaptor; using FoldAdaptor = GenericAdaptor<::llvm::ArrayRef<::mlir::Attribute>>; static constexpr int odsIndex_src = 0; static constexpr int odsIndex_cmp = 1; static constexpr int odsIndex_rsrc = 2; static constexpr int odsIndex_offset = 3; static constexpr int odsIndex_soffset = 4; using Properties = FoldAdaptor::Properties; using ::mlir::LLVM::AliasAnalysisOpInterface::Trait::getAliasScopesOrNull; using ::mlir::LLVM::AliasAnalysisOpInterface::Trait::setAliasScopes; using ::mlir::LLVM::AliasAnalysisOpInterface::Trait::getNoAliasScopesOrNull; using ::mlir::LLVM::AliasAnalysisOpInterface::Trait::setNoAliasScopes; using ::mlir::LLVM::AliasAnalysisOpInterface::Trait::getTBAATagsOrNull; using ::mlir::LLVM::AliasAnalysisOpInterface::Trait::setTBAATags; static ::llvm::ArrayRef<::llvm::StringRef> getAttributeNames() { static ::llvm::StringRef attrNames[] = {::llvm::StringRef("alias_scopes"), ::llvm::StringRef("aux"), ::llvm::StringRef("noalias_scopes"), ::llvm::StringRef("tbaa")}; return ::llvm::ArrayRef(attrNames); } ::mlir::StringAttr getAliasScopesAttrName() { return getAttributeNameForIndex(0); } static ::mlir::StringAttr getAliasScopesAttrName(::mlir::OperationName name) { return getAttributeNameForIndex(name, 0); } ::mlir::StringAttr getAuxAttrName() { return getAttributeNameForIndex(1); } static ::mlir::StringAttr getAuxAttrName(::mlir::OperationName name) { return getAttributeNameForIndex(name, 1); } ::mlir::StringAttr getNoaliasScopesAttrName() { return getAttributeNameForIndex(2); } static ::mlir::StringAttr getNoaliasScopesAttrName(::mlir::OperationName name) { return getAttributeNameForIndex(name, 2); } ::mlir::StringAttr getTbaaAttrName() { return getAttributeNameForIndex(3); } static ::mlir::StringAttr getTbaaAttrName(::mlir::OperationName name) { return getAttributeNameForIndex(name, 3); } static constexpr ::llvm::StringLiteral getOperationName() { return ::llvm::StringLiteral("rocdl.raw.ptr.buffer.atomic.cmpswap"); } std::pair getODSOperandIndexAndLength(unsigned index) { return {index, 1}; } ::mlir::Operation::operand_range getODSOperands(unsigned index) { auto valueRange = getODSOperandIndexAndLength(index); return {std::next(getOperation()->operand_begin(), valueRange.first), std::next(getOperation()->operand_begin(), valueRange.first + valueRange.second)}; } ::mlir::TypedValue<::mlir::Type> getSrc() { return ::llvm::cast<::mlir::TypedValue<::mlir::Type>>(*getODSOperands(0).begin()); } ::mlir::TypedValue<::mlir::Type> getCmp() { return ::llvm::cast<::mlir::TypedValue<::mlir::Type>>(*getODSOperands(1).begin()); } ::mlir::TypedValue<::mlir::LLVM::LLVMPointerType> getRsrc() { return ::llvm::cast<::mlir::TypedValue<::mlir::LLVM::LLVMPointerType>>(*getODSOperands(2).begin()); } ::mlir::TypedValue<::mlir::IntegerType> getOffset() { return ::llvm::cast<::mlir::TypedValue<::mlir::IntegerType>>(*getODSOperands(3).begin()); } ::mlir::TypedValue<::mlir::IntegerType> getSoffset() { return ::llvm::cast<::mlir::TypedValue<::mlir::IntegerType>>(*getODSOperands(4).begin()); } ::mlir::OpOperand &getSrcMutable() { auto range = getODSOperandIndexAndLength(0); return getOperation()->getOpOperand(range.first); } ::mlir::OpOperand &getCmpMutable() { auto range = getODSOperandIndexAndLength(1); return getOperation()->getOpOperand(range.first); } ::mlir::OpOperand &getRsrcMutable() { auto range = getODSOperandIndexAndLength(2); return getOperation()->getOpOperand(range.first); } ::mlir::OpOperand &getOffsetMutable() { auto range = getODSOperandIndexAndLength(3); return getOperation()->getOpOperand(range.first); } ::mlir::OpOperand &getSoffsetMutable() { auto range = getODSOperandIndexAndLength(4); return getOperation()->getOpOperand(range.first); } std::pair getODSResultIndexAndLength(unsigned index) { return {index, 1}; } ::mlir::Operation::result_range getODSResults(unsigned index) { auto valueRange = getODSResultIndexAndLength(index); return {std::next(getOperation()->result_begin(), valueRange.first), std::next(getOperation()->result_begin(), valueRange.first + valueRange.second)}; } ::mlir::TypedValue<::mlir::Type> getRes() { return ::llvm::cast<::mlir::TypedValue<::mlir::Type>>(*getODSResults(0).begin()); } static ::llvm::LogicalResult setPropertiesFromAttr(Properties &prop, ::mlir::Attribute attr, ::llvm::function_ref<::mlir::InFlightDiagnostic()> emitError); static ::mlir::Attribute getPropertiesAsAttr(::mlir::MLIRContext *ctx, const Properties &prop); static llvm::hash_code computePropertiesHash(const Properties &prop); static std::optional getInherentAttr(::mlir::MLIRContext *ctx, const Properties &prop, llvm::StringRef name); static void setInherentAttr(Properties &prop, llvm::StringRef name, mlir::Attribute value); static void populateInherentAttrs(::mlir::MLIRContext *ctx, const Properties &prop, ::mlir::NamedAttrList &attrs); static ::llvm::LogicalResult verifyInherentAttrs(::mlir::OperationName opName, ::mlir::NamedAttrList &attrs, llvm::function_ref<::mlir::InFlightDiagnostic()> emitError); static ::llvm::LogicalResult readProperties(::mlir::DialectBytecodeReader &reader, ::mlir::OperationState &state); void writeProperties(::mlir::DialectBytecodeWriter &writer); ::mlir::Attribute getAuxAttr() { return ::llvm::dyn_cast_or_null<::mlir::Attribute>(getProperties().aux); } ::mlir::Attribute getAux(); ::mlir::ArrayAttr getAliasScopesAttr() { return ::llvm::dyn_cast_or_null<::mlir::ArrayAttr>(getProperties().alias_scopes); } ::std::optional< ::mlir::ArrayAttr > getAliasScopes(); ::mlir::ArrayAttr getNoaliasScopesAttr() { return ::llvm::dyn_cast_or_null<::mlir::ArrayAttr>(getProperties().noalias_scopes); } ::std::optional< ::mlir::ArrayAttr > getNoaliasScopes(); ::mlir::ArrayAttr getTbaaAttr() { return ::llvm::dyn_cast_or_null<::mlir::ArrayAttr>(getProperties().tbaa); } ::std::optional< ::mlir::ArrayAttr > getTbaa(); void setAuxAttr(::mlir::Attribute attr) { getProperties().aux = attr; } void setAliasScopesAttr(::mlir::ArrayAttr attr) { getProperties().alias_scopes = attr; } void setNoaliasScopesAttr(::mlir::ArrayAttr attr) { getProperties().noalias_scopes = attr; } void setTbaaAttr(::mlir::ArrayAttr attr) { getProperties().tbaa = attr; } ::mlir::Attribute removeAliasScopesAttr() { auto attr = getProperties().alias_scopes; getProperties().alias_scopes = {}; return attr; } ::mlir::Attribute removeNoaliasScopesAttr() { auto attr = getProperties().noalias_scopes; getProperties().noalias_scopes = {}; return attr; } ::mlir::Attribute removeTbaaAttr() { auto attr = getProperties().tbaa; getProperties().tbaa = {}; return attr; } static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::Type res, ::mlir::Value src, ::mlir::Value cmp, ::mlir::Value rsrc, ::mlir::Value offset, ::mlir::Value soffset, ::mlir::Attribute aux, /*optional*/::mlir::ArrayAttr alias_scopes, /*optional*/::mlir::ArrayAttr noalias_scopes, /*optional*/::mlir::ArrayAttr tbaa); static RawPtrBufferAtomicCmpSwap create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::Type res, ::mlir::Value src, ::mlir::Value cmp, ::mlir::Value rsrc, ::mlir::Value offset, ::mlir::Value soffset, ::mlir::Attribute aux, /*optional*/::mlir::ArrayAttr alias_scopes, /*optional*/::mlir::ArrayAttr noalias_scopes, /*optional*/::mlir::ArrayAttr tbaa); static RawPtrBufferAtomicCmpSwap create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::Type res, ::mlir::Value src, ::mlir::Value cmp, ::mlir::Value rsrc, ::mlir::Value offset, ::mlir::Value soffset, ::mlir::Attribute aux, /*optional*/::mlir::ArrayAttr alias_scopes, /*optional*/::mlir::ArrayAttr noalias_scopes, /*optional*/::mlir::ArrayAttr tbaa); static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::Value src, ::mlir::Value cmp, ::mlir::Value rsrc, ::mlir::Value offset, ::mlir::Value soffset, ::mlir::Attribute aux, /*optional*/::mlir::ArrayAttr alias_scopes, /*optional*/::mlir::ArrayAttr noalias_scopes, /*optional*/::mlir::ArrayAttr tbaa); static RawPtrBufferAtomicCmpSwap create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::Value src, ::mlir::Value cmp, ::mlir::Value rsrc, ::mlir::Value offset, ::mlir::Value soffset, ::mlir::Attribute aux, /*optional*/::mlir::ArrayAttr alias_scopes, /*optional*/::mlir::ArrayAttr noalias_scopes, /*optional*/::mlir::ArrayAttr tbaa); static RawPtrBufferAtomicCmpSwap create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::Value src, ::mlir::Value cmp, ::mlir::Value rsrc, ::mlir::Value offset, ::mlir::Value soffset, ::mlir::Attribute aux, /*optional*/::mlir::ArrayAttr alias_scopes, /*optional*/::mlir::ArrayAttr noalias_scopes, /*optional*/::mlir::ArrayAttr tbaa); static void build(::mlir::OpBuilder &, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, ::llvm::ArrayRef<::mlir::NamedAttribute> attributes = {}); static RawPtrBufferAtomicCmpSwap create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, ::llvm::ArrayRef<::mlir::NamedAttribute> attributes = {}); static RawPtrBufferAtomicCmpSwap create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, ::llvm::ArrayRef<::mlir::NamedAttribute> attributes = {}); static void build(::mlir::OpBuilder &, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, const Properties &properties, ::llvm::ArrayRef<::mlir::NamedAttribute> discardableAttributes = {}); static RawPtrBufferAtomicCmpSwap create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, const Properties &properties, ::llvm::ArrayRef<::mlir::NamedAttribute> discardableAttributes = {}); static RawPtrBufferAtomicCmpSwap create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, const Properties &properties, ::llvm::ArrayRef<::mlir::NamedAttribute> discardableAttributes = {}); static void populateDefaultProperties(::mlir::OperationName opName, Properties &properties); ::llvm::LogicalResult verifyInvariantsImpl(); ::llvm::LogicalResult verifyInvariants(); ::llvm::SmallVector<::mlir::Value> getAccessedOperands(); static ::mlir::ParseResult parse(::mlir::OpAsmParser &parser, ::mlir::OperationState &result); void print(::mlir::OpAsmPrinter &_odsPrinter); void getEffects(::llvm::SmallVectorImpl<::mlir::SideEffects::EffectInstance<::mlir::MemoryEffects::Effect>> &effects); private: ::mlir::StringAttr getAttributeNameForIndex(unsigned index) { return getAttributeNameForIndex((*this)->getName(), index); } static ::mlir::StringAttr getAttributeNameForIndex(::mlir::OperationName name, unsigned index) { assert(index < 4 && "invalid attribute index"); assert(name.getStringRef() == getOperationName() && "invalid operation name"); assert(name.isRegistered() && "Operation isn't registered, missing a " "dependent dialect loading?"); return name.getAttributeNames()[index]; } public: }; } // namespace mlir::ROCDL MLIR_DECLARE_EXPLICIT_TYPE_ID(::mlir::ROCDL::RawPtrBufferAtomicCmpSwap) MLIR_DECLARE_EXPLICIT_TYPE_ID(::mlir::ROCDL::detail::RawPtrBufferAtomicCmpSwapGenericAdaptorBase::Properties) namespace mlir::ROCDL { //===----------------------------------------------------------------------===// // ::mlir::ROCDL::RawPtrBufferAtomicFaddOp declarations //===----------------------------------------------------------------------===// namespace detail { class RawPtrBufferAtomicFaddOpGenericAdaptorBase { public: struct Properties { using alias_scopesTy = ::mlir::ArrayAttr; alias_scopesTy alias_scopes; auto getAliasScopes() const { auto &propStorage = this->alias_scopes; return ::llvm::dyn_cast_or_null<::mlir::ArrayAttr>(propStorage); } void setAliasScopes(const ::mlir::ArrayAttr &propValue) { this->alias_scopes = propValue; } using auxTy = ::mlir::Attribute; auxTy aux; auto getAux() const { auto &propStorage = this->aux; return ::llvm::dyn_cast_or_null<::mlir::Attribute>(propStorage); } void setAux(const ::mlir::Attribute &propValue) { this->aux = propValue; } using noalias_scopesTy = ::mlir::ArrayAttr; noalias_scopesTy noalias_scopes; auto getNoaliasScopes() const { auto &propStorage = this->noalias_scopes; return ::llvm::dyn_cast_or_null<::mlir::ArrayAttr>(propStorage); } void setNoaliasScopes(const ::mlir::ArrayAttr &propValue) { this->noalias_scopes = propValue; } using tbaaTy = ::mlir::ArrayAttr; tbaaTy tbaa; auto getTbaa() const { auto &propStorage = this->tbaa; return ::llvm::dyn_cast_or_null<::mlir::ArrayAttr>(propStorage); } void setTbaa(const ::mlir::ArrayAttr &propValue) { this->tbaa = propValue; } bool operator==(const Properties &rhs) const { return rhs.alias_scopes == this->alias_scopes && rhs.aux == this->aux && rhs.noalias_scopes == this->noalias_scopes && rhs.tbaa == this->tbaa && true; } bool operator!=(const Properties &rhs) const { return !(*this == rhs); } }; protected: ::mlir::DictionaryAttr odsAttrs; ::std::optional<::mlir::OperationName> odsOpName; Properties properties; ::mlir::RegionRange odsRegions; public: RawPtrBufferAtomicFaddOpGenericAdaptorBase(::mlir::DictionaryAttr attrs, const Properties &properties, ::mlir::RegionRange regions = {}) : odsAttrs(attrs), properties(properties), odsRegions(regions) { if (odsAttrs) odsOpName.emplace("rocdl.raw.ptr.buffer.atomic.fadd", odsAttrs.getContext()); } RawPtrBufferAtomicFaddOpGenericAdaptorBase(RawPtrBufferAtomicFaddOp op); std::pair getODSOperandIndexAndLength(unsigned index, unsigned odsOperandsSize) { return {index, 1}; } const Properties &getProperties() { return properties; } ::mlir::DictionaryAttr getAttributes() { return odsAttrs; } ::mlir::Attribute getAuxAttr(); ::mlir::Attribute getAux(); ::mlir::ArrayAttr getAliasScopesAttr() { auto attr = ::llvm::dyn_cast_or_null<::mlir::ArrayAttr>(getProperties().alias_scopes); return attr; } ::std::optional< ::mlir::ArrayAttr > getAliasScopes(); ::mlir::ArrayAttr getNoaliasScopesAttr() { auto attr = ::llvm::dyn_cast_or_null<::mlir::ArrayAttr>(getProperties().noalias_scopes); return attr; } ::std::optional< ::mlir::ArrayAttr > getNoaliasScopes(); ::mlir::ArrayAttr getTbaaAttr() { auto attr = ::llvm::dyn_cast_or_null<::mlir::ArrayAttr>(getProperties().tbaa); return attr; } ::std::optional< ::mlir::ArrayAttr > getTbaa(); }; } // namespace detail template class RawPtrBufferAtomicFaddOpGenericAdaptor : public detail::RawPtrBufferAtomicFaddOpGenericAdaptorBase { using ValueT = ::llvm::detail::ValueOfRange; using Base = detail::RawPtrBufferAtomicFaddOpGenericAdaptorBase; static constexpr int odsIndex_vdata = 0; static constexpr int odsIndex_rsrc = 1; static constexpr int odsIndex_offset = 2; static constexpr int odsIndex_soffset = 3; public: RawPtrBufferAtomicFaddOpGenericAdaptor(RangeT values, ::mlir::DictionaryAttr attrs, const Properties &properties, ::mlir::RegionRange regions = {}) : Base(attrs, properties, regions), odsOperands(values) {} RawPtrBufferAtomicFaddOpGenericAdaptor(RangeT values, ::mlir::DictionaryAttr attrs, ::mlir::PropertyRef properties, ::mlir::RegionRange regions = {}) : RawPtrBufferAtomicFaddOpGenericAdaptor(values, attrs, (properties ? *properties.as() : Properties{}), regions) {} RawPtrBufferAtomicFaddOpGenericAdaptor(RangeT values, ::mlir::DictionaryAttr attrs = nullptr) : RawPtrBufferAtomicFaddOpGenericAdaptor(values, attrs, Properties{}, {}) {} RawPtrBufferAtomicFaddOpGenericAdaptor(RangeT values, const RawPtrBufferAtomicFaddOpGenericAdaptorBase &base) : Base(base), odsOperands(values) {} template >> RawPtrBufferAtomicFaddOpGenericAdaptor(RangeT values, LateInst op) : Base(op), odsOperands(values) {} std::pair getODSOperandIndexAndLength(unsigned index) { return Base::getODSOperandIndexAndLength(index, odsOperands.size()); } RangeT getODSOperands(unsigned index) { auto valueRange = getODSOperandIndexAndLength(index); return {std::next(odsOperands.begin(), valueRange.first), std::next(odsOperands.begin(), valueRange.first + valueRange.second)}; } ValueT getVdata() { return (*getODSOperands(0).begin()); } ValueT getRsrc() { return (*getODSOperands(1).begin()); } ValueT getOffset() { return (*getODSOperands(2).begin()); } ValueT getSoffset() { return (*getODSOperands(3).begin()); } RangeT getOperands() { return odsOperands; } private: RangeT odsOperands; }; class RawPtrBufferAtomicFaddOpAdaptor : public RawPtrBufferAtomicFaddOpGenericAdaptor<::mlir::ValueRange> { public: using RawPtrBufferAtomicFaddOpGenericAdaptor::RawPtrBufferAtomicFaddOpGenericAdaptor; RawPtrBufferAtomicFaddOpAdaptor(RawPtrBufferAtomicFaddOp op); ::llvm::LogicalResult verify(::mlir::Location loc); }; class RawPtrBufferAtomicFaddOp : public ::mlir::Op::Impl, ::mlir::OpTrait::ZeroSuccessors, ::mlir::OpTrait::NOperands<4>::Impl, ::mlir::OpTrait::OpInvariants, ::mlir::BytecodeOpInterface::Trait, ::mlir::LLVM::AliasAnalysisOpInterface::Trait, ::mlir::MemoryEffectOpInterface::Trait> { public: using Op::Op; using Op::print; using Adaptor = RawPtrBufferAtomicFaddOpAdaptor; template using GenericAdaptor = RawPtrBufferAtomicFaddOpGenericAdaptor; using FoldAdaptor = GenericAdaptor<::llvm::ArrayRef<::mlir::Attribute>>; static constexpr int odsIndex_vdata = 0; static constexpr int odsIndex_rsrc = 1; static constexpr int odsIndex_offset = 2; static constexpr int odsIndex_soffset = 3; using Properties = FoldAdaptor::Properties; using ::mlir::LLVM::AliasAnalysisOpInterface::Trait::getAliasScopesOrNull; using ::mlir::LLVM::AliasAnalysisOpInterface::Trait::setAliasScopes; using ::mlir::LLVM::AliasAnalysisOpInterface::Trait::getNoAliasScopesOrNull; using ::mlir::LLVM::AliasAnalysisOpInterface::Trait::setNoAliasScopes; using ::mlir::LLVM::AliasAnalysisOpInterface::Trait::getTBAATagsOrNull; using ::mlir::LLVM::AliasAnalysisOpInterface::Trait::setTBAATags; static ::llvm::ArrayRef<::llvm::StringRef> getAttributeNames() { static ::llvm::StringRef attrNames[] = {::llvm::StringRef("alias_scopes"), ::llvm::StringRef("aux"), ::llvm::StringRef("noalias_scopes"), ::llvm::StringRef("tbaa")}; return ::llvm::ArrayRef(attrNames); } ::mlir::StringAttr getAliasScopesAttrName() { return getAttributeNameForIndex(0); } static ::mlir::StringAttr getAliasScopesAttrName(::mlir::OperationName name) { return getAttributeNameForIndex(name, 0); } ::mlir::StringAttr getAuxAttrName() { return getAttributeNameForIndex(1); } static ::mlir::StringAttr getAuxAttrName(::mlir::OperationName name) { return getAttributeNameForIndex(name, 1); } ::mlir::StringAttr getNoaliasScopesAttrName() { return getAttributeNameForIndex(2); } static ::mlir::StringAttr getNoaliasScopesAttrName(::mlir::OperationName name) { return getAttributeNameForIndex(name, 2); } ::mlir::StringAttr getTbaaAttrName() { return getAttributeNameForIndex(3); } static ::mlir::StringAttr getTbaaAttrName(::mlir::OperationName name) { return getAttributeNameForIndex(name, 3); } static constexpr ::llvm::StringLiteral getOperationName() { return ::llvm::StringLiteral("rocdl.raw.ptr.buffer.atomic.fadd"); } std::pair getODSOperandIndexAndLength(unsigned index) { return {index, 1}; } ::mlir::Operation::operand_range getODSOperands(unsigned index) { auto valueRange = getODSOperandIndexAndLength(index); return {std::next(getOperation()->operand_begin(), valueRange.first), std::next(getOperation()->operand_begin(), valueRange.first + valueRange.second)}; } ::mlir::TypedValue<::mlir::Type> getVdata() { return ::llvm::cast<::mlir::TypedValue<::mlir::Type>>(*getODSOperands(0).begin()); } ::mlir::TypedValue<::mlir::LLVM::LLVMPointerType> getRsrc() { return ::llvm::cast<::mlir::TypedValue<::mlir::LLVM::LLVMPointerType>>(*getODSOperands(1).begin()); } ::mlir::TypedValue<::mlir::IntegerType> getOffset() { return ::llvm::cast<::mlir::TypedValue<::mlir::IntegerType>>(*getODSOperands(2).begin()); } ::mlir::TypedValue<::mlir::IntegerType> getSoffset() { return ::llvm::cast<::mlir::TypedValue<::mlir::IntegerType>>(*getODSOperands(3).begin()); } ::mlir::OpOperand &getVdataMutable() { auto range = getODSOperandIndexAndLength(0); return getOperation()->getOpOperand(range.first); } ::mlir::OpOperand &getRsrcMutable() { auto range = getODSOperandIndexAndLength(1); return getOperation()->getOpOperand(range.first); } ::mlir::OpOperand &getOffsetMutable() { auto range = getODSOperandIndexAndLength(2); return getOperation()->getOpOperand(range.first); } ::mlir::OpOperand &getSoffsetMutable() { auto range = getODSOperandIndexAndLength(3); return getOperation()->getOpOperand(range.first); } std::pair getODSResultIndexAndLength(unsigned index) { return {index, 1}; } ::mlir::Operation::result_range getODSResults(unsigned index) { auto valueRange = getODSResultIndexAndLength(index); return {std::next(getOperation()->result_begin(), valueRange.first), std::next(getOperation()->result_begin(), valueRange.first + valueRange.second)}; } ::mlir::TypedValue<::mlir::Type> getRes() { return ::llvm::cast<::mlir::TypedValue<::mlir::Type>>(*getODSResults(0).begin()); } static ::llvm::LogicalResult setPropertiesFromAttr(Properties &prop, ::mlir::Attribute attr, ::llvm::function_ref<::mlir::InFlightDiagnostic()> emitError); static ::mlir::Attribute getPropertiesAsAttr(::mlir::MLIRContext *ctx, const Properties &prop); static llvm::hash_code computePropertiesHash(const Properties &prop); static std::optional getInherentAttr(::mlir::MLIRContext *ctx, const Properties &prop, llvm::StringRef name); static void setInherentAttr(Properties &prop, llvm::StringRef name, mlir::Attribute value); static void populateInherentAttrs(::mlir::MLIRContext *ctx, const Properties &prop, ::mlir::NamedAttrList &attrs); static ::llvm::LogicalResult verifyInherentAttrs(::mlir::OperationName opName, ::mlir::NamedAttrList &attrs, llvm::function_ref<::mlir::InFlightDiagnostic()> emitError); static ::llvm::LogicalResult readProperties(::mlir::DialectBytecodeReader &reader, ::mlir::OperationState &state); void writeProperties(::mlir::DialectBytecodeWriter &writer); ::mlir::Attribute getAuxAttr() { return ::llvm::dyn_cast_or_null<::mlir::Attribute>(getProperties().aux); } ::mlir::Attribute getAux(); ::mlir::ArrayAttr getAliasScopesAttr() { return ::llvm::dyn_cast_or_null<::mlir::ArrayAttr>(getProperties().alias_scopes); } ::std::optional< ::mlir::ArrayAttr > getAliasScopes(); ::mlir::ArrayAttr getNoaliasScopesAttr() { return ::llvm::dyn_cast_or_null<::mlir::ArrayAttr>(getProperties().noalias_scopes); } ::std::optional< ::mlir::ArrayAttr > getNoaliasScopes(); ::mlir::ArrayAttr getTbaaAttr() { return ::llvm::dyn_cast_or_null<::mlir::ArrayAttr>(getProperties().tbaa); } ::std::optional< ::mlir::ArrayAttr > getTbaa(); void setAuxAttr(::mlir::Attribute attr) { getProperties().aux = attr; } void setAliasScopesAttr(::mlir::ArrayAttr attr) { getProperties().alias_scopes = attr; } void setNoaliasScopesAttr(::mlir::ArrayAttr attr) { getProperties().noalias_scopes = attr; } void setTbaaAttr(::mlir::ArrayAttr attr) { getProperties().tbaa = attr; } ::mlir::Attribute removeAliasScopesAttr() { auto attr = getProperties().alias_scopes; getProperties().alias_scopes = {}; return attr; } ::mlir::Attribute removeNoaliasScopesAttr() { auto attr = getProperties().noalias_scopes; getProperties().noalias_scopes = {}; return attr; } ::mlir::Attribute removeTbaaAttr() { auto attr = getProperties().tbaa; getProperties().tbaa = {}; return attr; } static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::Type res, ::mlir::Value vdata, ::mlir::Value rsrc, ::mlir::Value offset, ::mlir::Value soffset, ::mlir::Attribute aux, /*optional*/::mlir::ArrayAttr alias_scopes, /*optional*/::mlir::ArrayAttr noalias_scopes, /*optional*/::mlir::ArrayAttr tbaa); static RawPtrBufferAtomicFaddOp create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::Type res, ::mlir::Value vdata, ::mlir::Value rsrc, ::mlir::Value offset, ::mlir::Value soffset, ::mlir::Attribute aux, /*optional*/::mlir::ArrayAttr alias_scopes, /*optional*/::mlir::ArrayAttr noalias_scopes, /*optional*/::mlir::ArrayAttr tbaa); static RawPtrBufferAtomicFaddOp create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::Type res, ::mlir::Value vdata, ::mlir::Value rsrc, ::mlir::Value offset, ::mlir::Value soffset, ::mlir::Attribute aux, /*optional*/::mlir::ArrayAttr alias_scopes, /*optional*/::mlir::ArrayAttr noalias_scopes, /*optional*/::mlir::ArrayAttr tbaa); static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::Value vdata, ::mlir::Value rsrc, ::mlir::Value offset, ::mlir::Value soffset, ::mlir::Attribute aux, /*optional*/::mlir::ArrayAttr alias_scopes, /*optional*/::mlir::ArrayAttr noalias_scopes, /*optional*/::mlir::ArrayAttr tbaa); static RawPtrBufferAtomicFaddOp create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::Value vdata, ::mlir::Value rsrc, ::mlir::Value offset, ::mlir::Value soffset, ::mlir::Attribute aux, /*optional*/::mlir::ArrayAttr alias_scopes, /*optional*/::mlir::ArrayAttr noalias_scopes, /*optional*/::mlir::ArrayAttr tbaa); static RawPtrBufferAtomicFaddOp create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::Value vdata, ::mlir::Value rsrc, ::mlir::Value offset, ::mlir::Value soffset, ::mlir::Attribute aux, /*optional*/::mlir::ArrayAttr alias_scopes, /*optional*/::mlir::ArrayAttr noalias_scopes, /*optional*/::mlir::ArrayAttr tbaa); static void build(::mlir::OpBuilder &, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, ::llvm::ArrayRef<::mlir::NamedAttribute> attributes = {}); static RawPtrBufferAtomicFaddOp create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, ::llvm::ArrayRef<::mlir::NamedAttribute> attributes = {}); static RawPtrBufferAtomicFaddOp create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, ::llvm::ArrayRef<::mlir::NamedAttribute> attributes = {}); static void build(::mlir::OpBuilder &, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, const Properties &properties, ::llvm::ArrayRef<::mlir::NamedAttribute> discardableAttributes = {}); static RawPtrBufferAtomicFaddOp create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, const Properties &properties, ::llvm::ArrayRef<::mlir::NamedAttribute> discardableAttributes = {}); static RawPtrBufferAtomicFaddOp create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, const Properties &properties, ::llvm::ArrayRef<::mlir::NamedAttribute> discardableAttributes = {}); static void populateDefaultProperties(::mlir::OperationName opName, Properties &properties); ::llvm::LogicalResult verifyInvariantsImpl(); ::llvm::LogicalResult verifyInvariants(); ::llvm::SmallVector<::mlir::Value> getAccessedOperands(); static ::mlir::ParseResult parse(::mlir::OpAsmParser &parser, ::mlir::OperationState &result); void print(::mlir::OpAsmPrinter &_odsPrinter); void getEffects(::llvm::SmallVectorImpl<::mlir::SideEffects::EffectInstance<::mlir::MemoryEffects::Effect>> &effects); private: ::mlir::StringAttr getAttributeNameForIndex(unsigned index) { return getAttributeNameForIndex((*this)->getName(), index); } static ::mlir::StringAttr getAttributeNameForIndex(::mlir::OperationName name, unsigned index) { assert(index < 4 && "invalid attribute index"); assert(name.getStringRef() == getOperationName() && "invalid operation name"); assert(name.isRegistered() && "Operation isn't registered, missing a " "dependent dialect loading?"); return name.getAttributeNames()[index]; } public: }; } // namespace mlir::ROCDL MLIR_DECLARE_EXPLICIT_TYPE_ID(::mlir::ROCDL::RawPtrBufferAtomicFaddOp) MLIR_DECLARE_EXPLICIT_TYPE_ID(::mlir::ROCDL::detail::RawPtrBufferAtomicFaddOpGenericAdaptorBase::Properties) namespace mlir::ROCDL { //===----------------------------------------------------------------------===// // ::mlir::ROCDL::RawPtrBufferAtomicFmaxOp declarations //===----------------------------------------------------------------------===// namespace detail { class RawPtrBufferAtomicFmaxOpGenericAdaptorBase { public: struct Properties { using alias_scopesTy = ::mlir::ArrayAttr; alias_scopesTy alias_scopes; auto getAliasScopes() const { auto &propStorage = this->alias_scopes; return ::llvm::dyn_cast_or_null<::mlir::ArrayAttr>(propStorage); } void setAliasScopes(const ::mlir::ArrayAttr &propValue) { this->alias_scopes = propValue; } using auxTy = ::mlir::Attribute; auxTy aux; auto getAux() const { auto &propStorage = this->aux; return ::llvm::dyn_cast_or_null<::mlir::Attribute>(propStorage); } void setAux(const ::mlir::Attribute &propValue) { this->aux = propValue; } using noalias_scopesTy = ::mlir::ArrayAttr; noalias_scopesTy noalias_scopes; auto getNoaliasScopes() const { auto &propStorage = this->noalias_scopes; return ::llvm::dyn_cast_or_null<::mlir::ArrayAttr>(propStorage); } void setNoaliasScopes(const ::mlir::ArrayAttr &propValue) { this->noalias_scopes = propValue; } using tbaaTy = ::mlir::ArrayAttr; tbaaTy tbaa; auto getTbaa() const { auto &propStorage = this->tbaa; return ::llvm::dyn_cast_or_null<::mlir::ArrayAttr>(propStorage); } void setTbaa(const ::mlir::ArrayAttr &propValue) { this->tbaa = propValue; } bool operator==(const Properties &rhs) const { return rhs.alias_scopes == this->alias_scopes && rhs.aux == this->aux && rhs.noalias_scopes == this->noalias_scopes && rhs.tbaa == this->tbaa && true; } bool operator!=(const Properties &rhs) const { return !(*this == rhs); } }; protected: ::mlir::DictionaryAttr odsAttrs; ::std::optional<::mlir::OperationName> odsOpName; Properties properties; ::mlir::RegionRange odsRegions; public: RawPtrBufferAtomicFmaxOpGenericAdaptorBase(::mlir::DictionaryAttr attrs, const Properties &properties, ::mlir::RegionRange regions = {}) : odsAttrs(attrs), properties(properties), odsRegions(regions) { if (odsAttrs) odsOpName.emplace("rocdl.raw.ptr.buffer.atomic.fmax", odsAttrs.getContext()); } RawPtrBufferAtomicFmaxOpGenericAdaptorBase(RawPtrBufferAtomicFmaxOp op); std::pair getODSOperandIndexAndLength(unsigned index, unsigned odsOperandsSize) { return {index, 1}; } const Properties &getProperties() { return properties; } ::mlir::DictionaryAttr getAttributes() { return odsAttrs; } ::mlir::Attribute getAuxAttr(); ::mlir::Attribute getAux(); ::mlir::ArrayAttr getAliasScopesAttr() { auto attr = ::llvm::dyn_cast_or_null<::mlir::ArrayAttr>(getProperties().alias_scopes); return attr; } ::std::optional< ::mlir::ArrayAttr > getAliasScopes(); ::mlir::ArrayAttr getNoaliasScopesAttr() { auto attr = ::llvm::dyn_cast_or_null<::mlir::ArrayAttr>(getProperties().noalias_scopes); return attr; } ::std::optional< ::mlir::ArrayAttr > getNoaliasScopes(); ::mlir::ArrayAttr getTbaaAttr() { auto attr = ::llvm::dyn_cast_or_null<::mlir::ArrayAttr>(getProperties().tbaa); return attr; } ::std::optional< ::mlir::ArrayAttr > getTbaa(); }; } // namespace detail template class RawPtrBufferAtomicFmaxOpGenericAdaptor : public detail::RawPtrBufferAtomicFmaxOpGenericAdaptorBase { using ValueT = ::llvm::detail::ValueOfRange; using Base = detail::RawPtrBufferAtomicFmaxOpGenericAdaptorBase; static constexpr int odsIndex_vdata = 0; static constexpr int odsIndex_rsrc = 1; static constexpr int odsIndex_offset = 2; static constexpr int odsIndex_soffset = 3; public: RawPtrBufferAtomicFmaxOpGenericAdaptor(RangeT values, ::mlir::DictionaryAttr attrs, const Properties &properties, ::mlir::RegionRange regions = {}) : Base(attrs, properties, regions), odsOperands(values) {} RawPtrBufferAtomicFmaxOpGenericAdaptor(RangeT values, ::mlir::DictionaryAttr attrs, ::mlir::PropertyRef properties, ::mlir::RegionRange regions = {}) : RawPtrBufferAtomicFmaxOpGenericAdaptor(values, attrs, (properties ? *properties.as() : Properties{}), regions) {} RawPtrBufferAtomicFmaxOpGenericAdaptor(RangeT values, ::mlir::DictionaryAttr attrs = nullptr) : RawPtrBufferAtomicFmaxOpGenericAdaptor(values, attrs, Properties{}, {}) {} RawPtrBufferAtomicFmaxOpGenericAdaptor(RangeT values, const RawPtrBufferAtomicFmaxOpGenericAdaptorBase &base) : Base(base), odsOperands(values) {} template >> RawPtrBufferAtomicFmaxOpGenericAdaptor(RangeT values, LateInst op) : Base(op), odsOperands(values) {} std::pair getODSOperandIndexAndLength(unsigned index) { return Base::getODSOperandIndexAndLength(index, odsOperands.size()); } RangeT getODSOperands(unsigned index) { auto valueRange = getODSOperandIndexAndLength(index); return {std::next(odsOperands.begin(), valueRange.first), std::next(odsOperands.begin(), valueRange.first + valueRange.second)}; } ValueT getVdata() { return (*getODSOperands(0).begin()); } ValueT getRsrc() { return (*getODSOperands(1).begin()); } ValueT getOffset() { return (*getODSOperands(2).begin()); } ValueT getSoffset() { return (*getODSOperands(3).begin()); } RangeT getOperands() { return odsOperands; } private: RangeT odsOperands; }; class RawPtrBufferAtomicFmaxOpAdaptor : public RawPtrBufferAtomicFmaxOpGenericAdaptor<::mlir::ValueRange> { public: using RawPtrBufferAtomicFmaxOpGenericAdaptor::RawPtrBufferAtomicFmaxOpGenericAdaptor; RawPtrBufferAtomicFmaxOpAdaptor(RawPtrBufferAtomicFmaxOp op); ::llvm::LogicalResult verify(::mlir::Location loc); }; class RawPtrBufferAtomicFmaxOp : public ::mlir::Op::Impl, ::mlir::OpTrait::ZeroSuccessors, ::mlir::OpTrait::NOperands<4>::Impl, ::mlir::OpTrait::OpInvariants, ::mlir::BytecodeOpInterface::Trait, ::mlir::LLVM::AliasAnalysisOpInterface::Trait, ::mlir::MemoryEffectOpInterface::Trait> { public: using Op::Op; using Op::print; using Adaptor = RawPtrBufferAtomicFmaxOpAdaptor; template using GenericAdaptor = RawPtrBufferAtomicFmaxOpGenericAdaptor; using FoldAdaptor = GenericAdaptor<::llvm::ArrayRef<::mlir::Attribute>>; static constexpr int odsIndex_vdata = 0; static constexpr int odsIndex_rsrc = 1; static constexpr int odsIndex_offset = 2; static constexpr int odsIndex_soffset = 3; using Properties = FoldAdaptor::Properties; using ::mlir::LLVM::AliasAnalysisOpInterface::Trait::getAliasScopesOrNull; using ::mlir::LLVM::AliasAnalysisOpInterface::Trait::setAliasScopes; using ::mlir::LLVM::AliasAnalysisOpInterface::Trait::getNoAliasScopesOrNull; using ::mlir::LLVM::AliasAnalysisOpInterface::Trait::setNoAliasScopes; using ::mlir::LLVM::AliasAnalysisOpInterface::Trait::getTBAATagsOrNull; using ::mlir::LLVM::AliasAnalysisOpInterface::Trait::setTBAATags; static ::llvm::ArrayRef<::llvm::StringRef> getAttributeNames() { static ::llvm::StringRef attrNames[] = {::llvm::StringRef("alias_scopes"), ::llvm::StringRef("aux"), ::llvm::StringRef("noalias_scopes"), ::llvm::StringRef("tbaa")}; return ::llvm::ArrayRef(attrNames); } ::mlir::StringAttr getAliasScopesAttrName() { return getAttributeNameForIndex(0); } static ::mlir::StringAttr getAliasScopesAttrName(::mlir::OperationName name) { return getAttributeNameForIndex(name, 0); } ::mlir::StringAttr getAuxAttrName() { return getAttributeNameForIndex(1); } static ::mlir::StringAttr getAuxAttrName(::mlir::OperationName name) { return getAttributeNameForIndex(name, 1); } ::mlir::StringAttr getNoaliasScopesAttrName() { return getAttributeNameForIndex(2); } static ::mlir::StringAttr getNoaliasScopesAttrName(::mlir::OperationName name) { return getAttributeNameForIndex(name, 2); } ::mlir::StringAttr getTbaaAttrName() { return getAttributeNameForIndex(3); } static ::mlir::StringAttr getTbaaAttrName(::mlir::OperationName name) { return getAttributeNameForIndex(name, 3); } static constexpr ::llvm::StringLiteral getOperationName() { return ::llvm::StringLiteral("rocdl.raw.ptr.buffer.atomic.fmax"); } std::pair getODSOperandIndexAndLength(unsigned index) { return {index, 1}; } ::mlir::Operation::operand_range getODSOperands(unsigned index) { auto valueRange = getODSOperandIndexAndLength(index); return {std::next(getOperation()->operand_begin(), valueRange.first), std::next(getOperation()->operand_begin(), valueRange.first + valueRange.second)}; } ::mlir::TypedValue<::mlir::Type> getVdata() { return ::llvm::cast<::mlir::TypedValue<::mlir::Type>>(*getODSOperands(0).begin()); } ::mlir::TypedValue<::mlir::LLVM::LLVMPointerType> getRsrc() { return ::llvm::cast<::mlir::TypedValue<::mlir::LLVM::LLVMPointerType>>(*getODSOperands(1).begin()); } ::mlir::TypedValue<::mlir::IntegerType> getOffset() { return ::llvm::cast<::mlir::TypedValue<::mlir::IntegerType>>(*getODSOperands(2).begin()); } ::mlir::TypedValue<::mlir::IntegerType> getSoffset() { return ::llvm::cast<::mlir::TypedValue<::mlir::IntegerType>>(*getODSOperands(3).begin()); } ::mlir::OpOperand &getVdataMutable() { auto range = getODSOperandIndexAndLength(0); return getOperation()->getOpOperand(range.first); } ::mlir::OpOperand &getRsrcMutable() { auto range = getODSOperandIndexAndLength(1); return getOperation()->getOpOperand(range.first); } ::mlir::OpOperand &getOffsetMutable() { auto range = getODSOperandIndexAndLength(2); return getOperation()->getOpOperand(range.first); } ::mlir::OpOperand &getSoffsetMutable() { auto range = getODSOperandIndexAndLength(3); return getOperation()->getOpOperand(range.first); } std::pair getODSResultIndexAndLength(unsigned index) { return {index, 1}; } ::mlir::Operation::result_range getODSResults(unsigned index) { auto valueRange = getODSResultIndexAndLength(index); return {std::next(getOperation()->result_begin(), valueRange.first), std::next(getOperation()->result_begin(), valueRange.first + valueRange.second)}; } ::mlir::TypedValue<::mlir::Type> getRes() { return ::llvm::cast<::mlir::TypedValue<::mlir::Type>>(*getODSResults(0).begin()); } static ::llvm::LogicalResult setPropertiesFromAttr(Properties &prop, ::mlir::Attribute attr, ::llvm::function_ref<::mlir::InFlightDiagnostic()> emitError); static ::mlir::Attribute getPropertiesAsAttr(::mlir::MLIRContext *ctx, const Properties &prop); static llvm::hash_code computePropertiesHash(const Properties &prop); static std::optional getInherentAttr(::mlir::MLIRContext *ctx, const Properties &prop, llvm::StringRef name); static void setInherentAttr(Properties &prop, llvm::StringRef name, mlir::Attribute value); static void populateInherentAttrs(::mlir::MLIRContext *ctx, const Properties &prop, ::mlir::NamedAttrList &attrs); static ::llvm::LogicalResult verifyInherentAttrs(::mlir::OperationName opName, ::mlir::NamedAttrList &attrs, llvm::function_ref<::mlir::InFlightDiagnostic()> emitError); static ::llvm::LogicalResult readProperties(::mlir::DialectBytecodeReader &reader, ::mlir::OperationState &state); void writeProperties(::mlir::DialectBytecodeWriter &writer); ::mlir::Attribute getAuxAttr() { return ::llvm::dyn_cast_or_null<::mlir::Attribute>(getProperties().aux); } ::mlir::Attribute getAux(); ::mlir::ArrayAttr getAliasScopesAttr() { return ::llvm::dyn_cast_or_null<::mlir::ArrayAttr>(getProperties().alias_scopes); } ::std::optional< ::mlir::ArrayAttr > getAliasScopes(); ::mlir::ArrayAttr getNoaliasScopesAttr() { return ::llvm::dyn_cast_or_null<::mlir::ArrayAttr>(getProperties().noalias_scopes); } ::std::optional< ::mlir::ArrayAttr > getNoaliasScopes(); ::mlir::ArrayAttr getTbaaAttr() { return ::llvm::dyn_cast_or_null<::mlir::ArrayAttr>(getProperties().tbaa); } ::std::optional< ::mlir::ArrayAttr > getTbaa(); void setAuxAttr(::mlir::Attribute attr) { getProperties().aux = attr; } void setAliasScopesAttr(::mlir::ArrayAttr attr) { getProperties().alias_scopes = attr; } void setNoaliasScopesAttr(::mlir::ArrayAttr attr) { getProperties().noalias_scopes = attr; } void setTbaaAttr(::mlir::ArrayAttr attr) { getProperties().tbaa = attr; } ::mlir::Attribute removeAliasScopesAttr() { auto attr = getProperties().alias_scopes; getProperties().alias_scopes = {}; return attr; } ::mlir::Attribute removeNoaliasScopesAttr() { auto attr = getProperties().noalias_scopes; getProperties().noalias_scopes = {}; return attr; } ::mlir::Attribute removeTbaaAttr() { auto attr = getProperties().tbaa; getProperties().tbaa = {}; return attr; } static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::Type res, ::mlir::Value vdata, ::mlir::Value rsrc, ::mlir::Value offset, ::mlir::Value soffset, ::mlir::Attribute aux, /*optional*/::mlir::ArrayAttr alias_scopes, /*optional*/::mlir::ArrayAttr noalias_scopes, /*optional*/::mlir::ArrayAttr tbaa); static RawPtrBufferAtomicFmaxOp create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::Type res, ::mlir::Value vdata, ::mlir::Value rsrc, ::mlir::Value offset, ::mlir::Value soffset, ::mlir::Attribute aux, /*optional*/::mlir::ArrayAttr alias_scopes, /*optional*/::mlir::ArrayAttr noalias_scopes, /*optional*/::mlir::ArrayAttr tbaa); static RawPtrBufferAtomicFmaxOp create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::Type res, ::mlir::Value vdata, ::mlir::Value rsrc, ::mlir::Value offset, ::mlir::Value soffset, ::mlir::Attribute aux, /*optional*/::mlir::ArrayAttr alias_scopes, /*optional*/::mlir::ArrayAttr noalias_scopes, /*optional*/::mlir::ArrayAttr tbaa); static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::Value vdata, ::mlir::Value rsrc, ::mlir::Value offset, ::mlir::Value soffset, ::mlir::Attribute aux, /*optional*/::mlir::ArrayAttr alias_scopes, /*optional*/::mlir::ArrayAttr noalias_scopes, /*optional*/::mlir::ArrayAttr tbaa); static RawPtrBufferAtomicFmaxOp create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::Value vdata, ::mlir::Value rsrc, ::mlir::Value offset, ::mlir::Value soffset, ::mlir::Attribute aux, /*optional*/::mlir::ArrayAttr alias_scopes, /*optional*/::mlir::ArrayAttr noalias_scopes, /*optional*/::mlir::ArrayAttr tbaa); static RawPtrBufferAtomicFmaxOp create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::Value vdata, ::mlir::Value rsrc, ::mlir::Value offset, ::mlir::Value soffset, ::mlir::Attribute aux, /*optional*/::mlir::ArrayAttr alias_scopes, /*optional*/::mlir::ArrayAttr noalias_scopes, /*optional*/::mlir::ArrayAttr tbaa); static void build(::mlir::OpBuilder &, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, ::llvm::ArrayRef<::mlir::NamedAttribute> attributes = {}); static RawPtrBufferAtomicFmaxOp create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, ::llvm::ArrayRef<::mlir::NamedAttribute> attributes = {}); static RawPtrBufferAtomicFmaxOp create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, ::llvm::ArrayRef<::mlir::NamedAttribute> attributes = {}); static void build(::mlir::OpBuilder &, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, const Properties &properties, ::llvm::ArrayRef<::mlir::NamedAttribute> discardableAttributes = {}); static RawPtrBufferAtomicFmaxOp create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, const Properties &properties, ::llvm::ArrayRef<::mlir::NamedAttribute> discardableAttributes = {}); static RawPtrBufferAtomicFmaxOp create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, const Properties &properties, ::llvm::ArrayRef<::mlir::NamedAttribute> discardableAttributes = {}); static void populateDefaultProperties(::mlir::OperationName opName, Properties &properties); ::llvm::LogicalResult verifyInvariantsImpl(); ::llvm::LogicalResult verifyInvariants(); ::llvm::SmallVector<::mlir::Value> getAccessedOperands(); static ::mlir::ParseResult parse(::mlir::OpAsmParser &parser, ::mlir::OperationState &result); void print(::mlir::OpAsmPrinter &_odsPrinter); void getEffects(::llvm::SmallVectorImpl<::mlir::SideEffects::EffectInstance<::mlir::MemoryEffects::Effect>> &effects); private: ::mlir::StringAttr getAttributeNameForIndex(unsigned index) { return getAttributeNameForIndex((*this)->getName(), index); } static ::mlir::StringAttr getAttributeNameForIndex(::mlir::OperationName name, unsigned index) { assert(index < 4 && "invalid attribute index"); assert(name.getStringRef() == getOperationName() && "invalid operation name"); assert(name.isRegistered() && "Operation isn't registered, missing a " "dependent dialect loading?"); return name.getAttributeNames()[index]; } public: }; } // namespace mlir::ROCDL MLIR_DECLARE_EXPLICIT_TYPE_ID(::mlir::ROCDL::RawPtrBufferAtomicFmaxOp) MLIR_DECLARE_EXPLICIT_TYPE_ID(::mlir::ROCDL::detail::RawPtrBufferAtomicFmaxOpGenericAdaptorBase::Properties) namespace mlir::ROCDL { //===----------------------------------------------------------------------===// // ::mlir::ROCDL::RawPtrBufferAtomicSmaxOp declarations //===----------------------------------------------------------------------===// namespace detail { class RawPtrBufferAtomicSmaxOpGenericAdaptorBase { public: struct Properties { using alias_scopesTy = ::mlir::ArrayAttr; alias_scopesTy alias_scopes; auto getAliasScopes() const { auto &propStorage = this->alias_scopes; return ::llvm::dyn_cast_or_null<::mlir::ArrayAttr>(propStorage); } void setAliasScopes(const ::mlir::ArrayAttr &propValue) { this->alias_scopes = propValue; } using auxTy = ::mlir::Attribute; auxTy aux; auto getAux() const { auto &propStorage = this->aux; return ::llvm::dyn_cast_or_null<::mlir::Attribute>(propStorage); } void setAux(const ::mlir::Attribute &propValue) { this->aux = propValue; } using noalias_scopesTy = ::mlir::ArrayAttr; noalias_scopesTy noalias_scopes; auto getNoaliasScopes() const { auto &propStorage = this->noalias_scopes; return ::llvm::dyn_cast_or_null<::mlir::ArrayAttr>(propStorage); } void setNoaliasScopes(const ::mlir::ArrayAttr &propValue) { this->noalias_scopes = propValue; } using tbaaTy = ::mlir::ArrayAttr; tbaaTy tbaa; auto getTbaa() const { auto &propStorage = this->tbaa; return ::llvm::dyn_cast_or_null<::mlir::ArrayAttr>(propStorage); } void setTbaa(const ::mlir::ArrayAttr &propValue) { this->tbaa = propValue; } bool operator==(const Properties &rhs) const { return rhs.alias_scopes == this->alias_scopes && rhs.aux == this->aux && rhs.noalias_scopes == this->noalias_scopes && rhs.tbaa == this->tbaa && true; } bool operator!=(const Properties &rhs) const { return !(*this == rhs); } }; protected: ::mlir::DictionaryAttr odsAttrs; ::std::optional<::mlir::OperationName> odsOpName; Properties properties; ::mlir::RegionRange odsRegions; public: RawPtrBufferAtomicSmaxOpGenericAdaptorBase(::mlir::DictionaryAttr attrs, const Properties &properties, ::mlir::RegionRange regions = {}) : odsAttrs(attrs), properties(properties), odsRegions(regions) { if (odsAttrs) odsOpName.emplace("rocdl.raw.ptr.buffer.atomic.smax", odsAttrs.getContext()); } RawPtrBufferAtomicSmaxOpGenericAdaptorBase(RawPtrBufferAtomicSmaxOp op); std::pair getODSOperandIndexAndLength(unsigned index, unsigned odsOperandsSize) { return {index, 1}; } const Properties &getProperties() { return properties; } ::mlir::DictionaryAttr getAttributes() { return odsAttrs; } ::mlir::Attribute getAuxAttr(); ::mlir::Attribute getAux(); ::mlir::ArrayAttr getAliasScopesAttr() { auto attr = ::llvm::dyn_cast_or_null<::mlir::ArrayAttr>(getProperties().alias_scopes); return attr; } ::std::optional< ::mlir::ArrayAttr > getAliasScopes(); ::mlir::ArrayAttr getNoaliasScopesAttr() { auto attr = ::llvm::dyn_cast_or_null<::mlir::ArrayAttr>(getProperties().noalias_scopes); return attr; } ::std::optional< ::mlir::ArrayAttr > getNoaliasScopes(); ::mlir::ArrayAttr getTbaaAttr() { auto attr = ::llvm::dyn_cast_or_null<::mlir::ArrayAttr>(getProperties().tbaa); return attr; } ::std::optional< ::mlir::ArrayAttr > getTbaa(); }; } // namespace detail template class RawPtrBufferAtomicSmaxOpGenericAdaptor : public detail::RawPtrBufferAtomicSmaxOpGenericAdaptorBase { using ValueT = ::llvm::detail::ValueOfRange; using Base = detail::RawPtrBufferAtomicSmaxOpGenericAdaptorBase; static constexpr int odsIndex_vdata = 0; static constexpr int odsIndex_rsrc = 1; static constexpr int odsIndex_offset = 2; static constexpr int odsIndex_soffset = 3; public: RawPtrBufferAtomicSmaxOpGenericAdaptor(RangeT values, ::mlir::DictionaryAttr attrs, const Properties &properties, ::mlir::RegionRange regions = {}) : Base(attrs, properties, regions), odsOperands(values) {} RawPtrBufferAtomicSmaxOpGenericAdaptor(RangeT values, ::mlir::DictionaryAttr attrs, ::mlir::PropertyRef properties, ::mlir::RegionRange regions = {}) : RawPtrBufferAtomicSmaxOpGenericAdaptor(values, attrs, (properties ? *properties.as() : Properties{}), regions) {} RawPtrBufferAtomicSmaxOpGenericAdaptor(RangeT values, ::mlir::DictionaryAttr attrs = nullptr) : RawPtrBufferAtomicSmaxOpGenericAdaptor(values, attrs, Properties{}, {}) {} RawPtrBufferAtomicSmaxOpGenericAdaptor(RangeT values, const RawPtrBufferAtomicSmaxOpGenericAdaptorBase &base) : Base(base), odsOperands(values) {} template >> RawPtrBufferAtomicSmaxOpGenericAdaptor(RangeT values, LateInst op) : Base(op), odsOperands(values) {} std::pair getODSOperandIndexAndLength(unsigned index) { return Base::getODSOperandIndexAndLength(index, odsOperands.size()); } RangeT getODSOperands(unsigned index) { auto valueRange = getODSOperandIndexAndLength(index); return {std::next(odsOperands.begin(), valueRange.first), std::next(odsOperands.begin(), valueRange.first + valueRange.second)}; } ValueT getVdata() { return (*getODSOperands(0).begin()); } ValueT getRsrc() { return (*getODSOperands(1).begin()); } ValueT getOffset() { return (*getODSOperands(2).begin()); } ValueT getSoffset() { return (*getODSOperands(3).begin()); } RangeT getOperands() { return odsOperands; } private: RangeT odsOperands; }; class RawPtrBufferAtomicSmaxOpAdaptor : public RawPtrBufferAtomicSmaxOpGenericAdaptor<::mlir::ValueRange> { public: using RawPtrBufferAtomicSmaxOpGenericAdaptor::RawPtrBufferAtomicSmaxOpGenericAdaptor; RawPtrBufferAtomicSmaxOpAdaptor(RawPtrBufferAtomicSmaxOp op); ::llvm::LogicalResult verify(::mlir::Location loc); }; class RawPtrBufferAtomicSmaxOp : public ::mlir::Op::Impl, ::mlir::OpTrait::ZeroSuccessors, ::mlir::OpTrait::NOperands<4>::Impl, ::mlir::OpTrait::OpInvariants, ::mlir::BytecodeOpInterface::Trait, ::mlir::LLVM::AliasAnalysisOpInterface::Trait, ::mlir::MemoryEffectOpInterface::Trait> { public: using Op::Op; using Op::print; using Adaptor = RawPtrBufferAtomicSmaxOpAdaptor; template using GenericAdaptor = RawPtrBufferAtomicSmaxOpGenericAdaptor; using FoldAdaptor = GenericAdaptor<::llvm::ArrayRef<::mlir::Attribute>>; static constexpr int odsIndex_vdata = 0; static constexpr int odsIndex_rsrc = 1; static constexpr int odsIndex_offset = 2; static constexpr int odsIndex_soffset = 3; using Properties = FoldAdaptor::Properties; using ::mlir::LLVM::AliasAnalysisOpInterface::Trait::getAliasScopesOrNull; using ::mlir::LLVM::AliasAnalysisOpInterface::Trait::setAliasScopes; using ::mlir::LLVM::AliasAnalysisOpInterface::Trait::getNoAliasScopesOrNull; using ::mlir::LLVM::AliasAnalysisOpInterface::Trait::setNoAliasScopes; using ::mlir::LLVM::AliasAnalysisOpInterface::Trait::getTBAATagsOrNull; using ::mlir::LLVM::AliasAnalysisOpInterface::Trait::setTBAATags; static ::llvm::ArrayRef<::llvm::StringRef> getAttributeNames() { static ::llvm::StringRef attrNames[] = {::llvm::StringRef("alias_scopes"), ::llvm::StringRef("aux"), ::llvm::StringRef("noalias_scopes"), ::llvm::StringRef("tbaa")}; return ::llvm::ArrayRef(attrNames); } ::mlir::StringAttr getAliasScopesAttrName() { return getAttributeNameForIndex(0); } static ::mlir::StringAttr getAliasScopesAttrName(::mlir::OperationName name) { return getAttributeNameForIndex(name, 0); } ::mlir::StringAttr getAuxAttrName() { return getAttributeNameForIndex(1); } static ::mlir::StringAttr getAuxAttrName(::mlir::OperationName name) { return getAttributeNameForIndex(name, 1); } ::mlir::StringAttr getNoaliasScopesAttrName() { return getAttributeNameForIndex(2); } static ::mlir::StringAttr getNoaliasScopesAttrName(::mlir::OperationName name) { return getAttributeNameForIndex(name, 2); } ::mlir::StringAttr getTbaaAttrName() { return getAttributeNameForIndex(3); } static ::mlir::StringAttr getTbaaAttrName(::mlir::OperationName name) { return getAttributeNameForIndex(name, 3); } static constexpr ::llvm::StringLiteral getOperationName() { return ::llvm::StringLiteral("rocdl.raw.ptr.buffer.atomic.smax"); } std::pair getODSOperandIndexAndLength(unsigned index) { return {index, 1}; } ::mlir::Operation::operand_range getODSOperands(unsigned index) { auto valueRange = getODSOperandIndexAndLength(index); return {std::next(getOperation()->operand_begin(), valueRange.first), std::next(getOperation()->operand_begin(), valueRange.first + valueRange.second)}; } ::mlir::TypedValue<::mlir::Type> getVdata() { return ::llvm::cast<::mlir::TypedValue<::mlir::Type>>(*getODSOperands(0).begin()); } ::mlir::TypedValue<::mlir::LLVM::LLVMPointerType> getRsrc() { return ::llvm::cast<::mlir::TypedValue<::mlir::LLVM::LLVMPointerType>>(*getODSOperands(1).begin()); } ::mlir::TypedValue<::mlir::IntegerType> getOffset() { return ::llvm::cast<::mlir::TypedValue<::mlir::IntegerType>>(*getODSOperands(2).begin()); } ::mlir::TypedValue<::mlir::IntegerType> getSoffset() { return ::llvm::cast<::mlir::TypedValue<::mlir::IntegerType>>(*getODSOperands(3).begin()); } ::mlir::OpOperand &getVdataMutable() { auto range = getODSOperandIndexAndLength(0); return getOperation()->getOpOperand(range.first); } ::mlir::OpOperand &getRsrcMutable() { auto range = getODSOperandIndexAndLength(1); return getOperation()->getOpOperand(range.first); } ::mlir::OpOperand &getOffsetMutable() { auto range = getODSOperandIndexAndLength(2); return getOperation()->getOpOperand(range.first); } ::mlir::OpOperand &getSoffsetMutable() { auto range = getODSOperandIndexAndLength(3); return getOperation()->getOpOperand(range.first); } std::pair getODSResultIndexAndLength(unsigned index) { return {index, 1}; } ::mlir::Operation::result_range getODSResults(unsigned index) { auto valueRange = getODSResultIndexAndLength(index); return {std::next(getOperation()->result_begin(), valueRange.first), std::next(getOperation()->result_begin(), valueRange.first + valueRange.second)}; } ::mlir::TypedValue<::mlir::Type> getRes() { return ::llvm::cast<::mlir::TypedValue<::mlir::Type>>(*getODSResults(0).begin()); } static ::llvm::LogicalResult setPropertiesFromAttr(Properties &prop, ::mlir::Attribute attr, ::llvm::function_ref<::mlir::InFlightDiagnostic()> emitError); static ::mlir::Attribute getPropertiesAsAttr(::mlir::MLIRContext *ctx, const Properties &prop); static llvm::hash_code computePropertiesHash(const Properties &prop); static std::optional getInherentAttr(::mlir::MLIRContext *ctx, const Properties &prop, llvm::StringRef name); static void setInherentAttr(Properties &prop, llvm::StringRef name, mlir::Attribute value); static void populateInherentAttrs(::mlir::MLIRContext *ctx, const Properties &prop, ::mlir::NamedAttrList &attrs); static ::llvm::LogicalResult verifyInherentAttrs(::mlir::OperationName opName, ::mlir::NamedAttrList &attrs, llvm::function_ref<::mlir::InFlightDiagnostic()> emitError); static ::llvm::LogicalResult readProperties(::mlir::DialectBytecodeReader &reader, ::mlir::OperationState &state); void writeProperties(::mlir::DialectBytecodeWriter &writer); ::mlir::Attribute getAuxAttr() { return ::llvm::dyn_cast_or_null<::mlir::Attribute>(getProperties().aux); } ::mlir::Attribute getAux(); ::mlir::ArrayAttr getAliasScopesAttr() { return ::llvm::dyn_cast_or_null<::mlir::ArrayAttr>(getProperties().alias_scopes); } ::std::optional< ::mlir::ArrayAttr > getAliasScopes(); ::mlir::ArrayAttr getNoaliasScopesAttr() { return ::llvm::dyn_cast_or_null<::mlir::ArrayAttr>(getProperties().noalias_scopes); } ::std::optional< ::mlir::ArrayAttr > getNoaliasScopes(); ::mlir::ArrayAttr getTbaaAttr() { return ::llvm::dyn_cast_or_null<::mlir::ArrayAttr>(getProperties().tbaa); } ::std::optional< ::mlir::ArrayAttr > getTbaa(); void setAuxAttr(::mlir::Attribute attr) { getProperties().aux = attr; } void setAliasScopesAttr(::mlir::ArrayAttr attr) { getProperties().alias_scopes = attr; } void setNoaliasScopesAttr(::mlir::ArrayAttr attr) { getProperties().noalias_scopes = attr; } void setTbaaAttr(::mlir::ArrayAttr attr) { getProperties().tbaa = attr; } ::mlir::Attribute removeAliasScopesAttr() { auto attr = getProperties().alias_scopes; getProperties().alias_scopes = {}; return attr; } ::mlir::Attribute removeNoaliasScopesAttr() { auto attr = getProperties().noalias_scopes; getProperties().noalias_scopes = {}; return attr; } ::mlir::Attribute removeTbaaAttr() { auto attr = getProperties().tbaa; getProperties().tbaa = {}; return attr; } static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::Type res, ::mlir::Value vdata, ::mlir::Value rsrc, ::mlir::Value offset, ::mlir::Value soffset, ::mlir::Attribute aux, /*optional*/::mlir::ArrayAttr alias_scopes, /*optional*/::mlir::ArrayAttr noalias_scopes, /*optional*/::mlir::ArrayAttr tbaa); static RawPtrBufferAtomicSmaxOp create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::Type res, ::mlir::Value vdata, ::mlir::Value rsrc, ::mlir::Value offset, ::mlir::Value soffset, ::mlir::Attribute aux, /*optional*/::mlir::ArrayAttr alias_scopes, /*optional*/::mlir::ArrayAttr noalias_scopes, /*optional*/::mlir::ArrayAttr tbaa); static RawPtrBufferAtomicSmaxOp create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::Type res, ::mlir::Value vdata, ::mlir::Value rsrc, ::mlir::Value offset, ::mlir::Value soffset, ::mlir::Attribute aux, /*optional*/::mlir::ArrayAttr alias_scopes, /*optional*/::mlir::ArrayAttr noalias_scopes, /*optional*/::mlir::ArrayAttr tbaa); static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::Value vdata, ::mlir::Value rsrc, ::mlir::Value offset, ::mlir::Value soffset, ::mlir::Attribute aux, /*optional*/::mlir::ArrayAttr alias_scopes, /*optional*/::mlir::ArrayAttr noalias_scopes, /*optional*/::mlir::ArrayAttr tbaa); static RawPtrBufferAtomicSmaxOp create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::Value vdata, ::mlir::Value rsrc, ::mlir::Value offset, ::mlir::Value soffset, ::mlir::Attribute aux, /*optional*/::mlir::ArrayAttr alias_scopes, /*optional*/::mlir::ArrayAttr noalias_scopes, /*optional*/::mlir::ArrayAttr tbaa); static RawPtrBufferAtomicSmaxOp create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::Value vdata, ::mlir::Value rsrc, ::mlir::Value offset, ::mlir::Value soffset, ::mlir::Attribute aux, /*optional*/::mlir::ArrayAttr alias_scopes, /*optional*/::mlir::ArrayAttr noalias_scopes, /*optional*/::mlir::ArrayAttr tbaa); static void build(::mlir::OpBuilder &, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, ::llvm::ArrayRef<::mlir::NamedAttribute> attributes = {}); static RawPtrBufferAtomicSmaxOp create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, ::llvm::ArrayRef<::mlir::NamedAttribute> attributes = {}); static RawPtrBufferAtomicSmaxOp create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, ::llvm::ArrayRef<::mlir::NamedAttribute> attributes = {}); static void build(::mlir::OpBuilder &, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, const Properties &properties, ::llvm::ArrayRef<::mlir::NamedAttribute> discardableAttributes = {}); static RawPtrBufferAtomicSmaxOp create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, const Properties &properties, ::llvm::ArrayRef<::mlir::NamedAttribute> discardableAttributes = {}); static RawPtrBufferAtomicSmaxOp create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, const Properties &properties, ::llvm::ArrayRef<::mlir::NamedAttribute> discardableAttributes = {}); static void populateDefaultProperties(::mlir::OperationName opName, Properties &properties); ::llvm::LogicalResult verifyInvariantsImpl(); ::llvm::LogicalResult verifyInvariants(); ::llvm::SmallVector<::mlir::Value> getAccessedOperands(); static ::mlir::ParseResult parse(::mlir::OpAsmParser &parser, ::mlir::OperationState &result); void print(::mlir::OpAsmPrinter &_odsPrinter); void getEffects(::llvm::SmallVectorImpl<::mlir::SideEffects::EffectInstance<::mlir::MemoryEffects::Effect>> &effects); private: ::mlir::StringAttr getAttributeNameForIndex(unsigned index) { return getAttributeNameForIndex((*this)->getName(), index); } static ::mlir::StringAttr getAttributeNameForIndex(::mlir::OperationName name, unsigned index) { assert(index < 4 && "invalid attribute index"); assert(name.getStringRef() == getOperationName() && "invalid operation name"); assert(name.isRegistered() && "Operation isn't registered, missing a " "dependent dialect loading?"); return name.getAttributeNames()[index]; } public: }; } // namespace mlir::ROCDL MLIR_DECLARE_EXPLICIT_TYPE_ID(::mlir::ROCDL::RawPtrBufferAtomicSmaxOp) MLIR_DECLARE_EXPLICIT_TYPE_ID(::mlir::ROCDL::detail::RawPtrBufferAtomicSmaxOpGenericAdaptorBase::Properties) namespace mlir::ROCDL { //===----------------------------------------------------------------------===// // ::mlir::ROCDL::RawPtrBufferAtomicUminOp declarations //===----------------------------------------------------------------------===// namespace detail { class RawPtrBufferAtomicUminOpGenericAdaptorBase { public: struct Properties { using alias_scopesTy = ::mlir::ArrayAttr; alias_scopesTy alias_scopes; auto getAliasScopes() const { auto &propStorage = this->alias_scopes; return ::llvm::dyn_cast_or_null<::mlir::ArrayAttr>(propStorage); } void setAliasScopes(const ::mlir::ArrayAttr &propValue) { this->alias_scopes = propValue; } using auxTy = ::mlir::Attribute; auxTy aux; auto getAux() const { auto &propStorage = this->aux; return ::llvm::dyn_cast_or_null<::mlir::Attribute>(propStorage); } void setAux(const ::mlir::Attribute &propValue) { this->aux = propValue; } using noalias_scopesTy = ::mlir::ArrayAttr; noalias_scopesTy noalias_scopes; auto getNoaliasScopes() const { auto &propStorage = this->noalias_scopes; return ::llvm::dyn_cast_or_null<::mlir::ArrayAttr>(propStorage); } void setNoaliasScopes(const ::mlir::ArrayAttr &propValue) { this->noalias_scopes = propValue; } using tbaaTy = ::mlir::ArrayAttr; tbaaTy tbaa; auto getTbaa() const { auto &propStorage = this->tbaa; return ::llvm::dyn_cast_or_null<::mlir::ArrayAttr>(propStorage); } void setTbaa(const ::mlir::ArrayAttr &propValue) { this->tbaa = propValue; } bool operator==(const Properties &rhs) const { return rhs.alias_scopes == this->alias_scopes && rhs.aux == this->aux && rhs.noalias_scopes == this->noalias_scopes && rhs.tbaa == this->tbaa && true; } bool operator!=(const Properties &rhs) const { return !(*this == rhs); } }; protected: ::mlir::DictionaryAttr odsAttrs; ::std::optional<::mlir::OperationName> odsOpName; Properties properties; ::mlir::RegionRange odsRegions; public: RawPtrBufferAtomicUminOpGenericAdaptorBase(::mlir::DictionaryAttr attrs, const Properties &properties, ::mlir::RegionRange regions = {}) : odsAttrs(attrs), properties(properties), odsRegions(regions) { if (odsAttrs) odsOpName.emplace("rocdl.raw.ptr.buffer.atomic.umin", odsAttrs.getContext()); } RawPtrBufferAtomicUminOpGenericAdaptorBase(RawPtrBufferAtomicUminOp op); std::pair getODSOperandIndexAndLength(unsigned index, unsigned odsOperandsSize) { return {index, 1}; } const Properties &getProperties() { return properties; } ::mlir::DictionaryAttr getAttributes() { return odsAttrs; } ::mlir::Attribute getAuxAttr(); ::mlir::Attribute getAux(); ::mlir::ArrayAttr getAliasScopesAttr() { auto attr = ::llvm::dyn_cast_or_null<::mlir::ArrayAttr>(getProperties().alias_scopes); return attr; } ::std::optional< ::mlir::ArrayAttr > getAliasScopes(); ::mlir::ArrayAttr getNoaliasScopesAttr() { auto attr = ::llvm::dyn_cast_or_null<::mlir::ArrayAttr>(getProperties().noalias_scopes); return attr; } ::std::optional< ::mlir::ArrayAttr > getNoaliasScopes(); ::mlir::ArrayAttr getTbaaAttr() { auto attr = ::llvm::dyn_cast_or_null<::mlir::ArrayAttr>(getProperties().tbaa); return attr; } ::std::optional< ::mlir::ArrayAttr > getTbaa(); }; } // namespace detail template class RawPtrBufferAtomicUminOpGenericAdaptor : public detail::RawPtrBufferAtomicUminOpGenericAdaptorBase { using ValueT = ::llvm::detail::ValueOfRange; using Base = detail::RawPtrBufferAtomicUminOpGenericAdaptorBase; static constexpr int odsIndex_vdata = 0; static constexpr int odsIndex_rsrc = 1; static constexpr int odsIndex_offset = 2; static constexpr int odsIndex_soffset = 3; public: RawPtrBufferAtomicUminOpGenericAdaptor(RangeT values, ::mlir::DictionaryAttr attrs, const Properties &properties, ::mlir::RegionRange regions = {}) : Base(attrs, properties, regions), odsOperands(values) {} RawPtrBufferAtomicUminOpGenericAdaptor(RangeT values, ::mlir::DictionaryAttr attrs, ::mlir::PropertyRef properties, ::mlir::RegionRange regions = {}) : RawPtrBufferAtomicUminOpGenericAdaptor(values, attrs, (properties ? *properties.as() : Properties{}), regions) {} RawPtrBufferAtomicUminOpGenericAdaptor(RangeT values, ::mlir::DictionaryAttr attrs = nullptr) : RawPtrBufferAtomicUminOpGenericAdaptor(values, attrs, Properties{}, {}) {} RawPtrBufferAtomicUminOpGenericAdaptor(RangeT values, const RawPtrBufferAtomicUminOpGenericAdaptorBase &base) : Base(base), odsOperands(values) {} template >> RawPtrBufferAtomicUminOpGenericAdaptor(RangeT values, LateInst op) : Base(op), odsOperands(values) {} std::pair getODSOperandIndexAndLength(unsigned index) { return Base::getODSOperandIndexAndLength(index, odsOperands.size()); } RangeT getODSOperands(unsigned index) { auto valueRange = getODSOperandIndexAndLength(index); return {std::next(odsOperands.begin(), valueRange.first), std::next(odsOperands.begin(), valueRange.first + valueRange.second)}; } ValueT getVdata() { return (*getODSOperands(0).begin()); } ValueT getRsrc() { return (*getODSOperands(1).begin()); } ValueT getOffset() { return (*getODSOperands(2).begin()); } ValueT getSoffset() { return (*getODSOperands(3).begin()); } RangeT getOperands() { return odsOperands; } private: RangeT odsOperands; }; class RawPtrBufferAtomicUminOpAdaptor : public RawPtrBufferAtomicUminOpGenericAdaptor<::mlir::ValueRange> { public: using RawPtrBufferAtomicUminOpGenericAdaptor::RawPtrBufferAtomicUminOpGenericAdaptor; RawPtrBufferAtomicUminOpAdaptor(RawPtrBufferAtomicUminOp op); ::llvm::LogicalResult verify(::mlir::Location loc); }; class RawPtrBufferAtomicUminOp : public ::mlir::Op::Impl, ::mlir::OpTrait::ZeroSuccessors, ::mlir::OpTrait::NOperands<4>::Impl, ::mlir::OpTrait::OpInvariants, ::mlir::BytecodeOpInterface::Trait, ::mlir::LLVM::AliasAnalysisOpInterface::Trait, ::mlir::MemoryEffectOpInterface::Trait> { public: using Op::Op; using Op::print; using Adaptor = RawPtrBufferAtomicUminOpAdaptor; template using GenericAdaptor = RawPtrBufferAtomicUminOpGenericAdaptor; using FoldAdaptor = GenericAdaptor<::llvm::ArrayRef<::mlir::Attribute>>; static constexpr int odsIndex_vdata = 0; static constexpr int odsIndex_rsrc = 1; static constexpr int odsIndex_offset = 2; static constexpr int odsIndex_soffset = 3; using Properties = FoldAdaptor::Properties; using ::mlir::LLVM::AliasAnalysisOpInterface::Trait::getAliasScopesOrNull; using ::mlir::LLVM::AliasAnalysisOpInterface::Trait::setAliasScopes; using ::mlir::LLVM::AliasAnalysisOpInterface::Trait::getNoAliasScopesOrNull; using ::mlir::LLVM::AliasAnalysisOpInterface::Trait::setNoAliasScopes; using ::mlir::LLVM::AliasAnalysisOpInterface::Trait::getTBAATagsOrNull; using ::mlir::LLVM::AliasAnalysisOpInterface::Trait::setTBAATags; static ::llvm::ArrayRef<::llvm::StringRef> getAttributeNames() { static ::llvm::StringRef attrNames[] = {::llvm::StringRef("alias_scopes"), ::llvm::StringRef("aux"), ::llvm::StringRef("noalias_scopes"), ::llvm::StringRef("tbaa")}; return ::llvm::ArrayRef(attrNames); } ::mlir::StringAttr getAliasScopesAttrName() { return getAttributeNameForIndex(0); } static ::mlir::StringAttr getAliasScopesAttrName(::mlir::OperationName name) { return getAttributeNameForIndex(name, 0); } ::mlir::StringAttr getAuxAttrName() { return getAttributeNameForIndex(1); } static ::mlir::StringAttr getAuxAttrName(::mlir::OperationName name) { return getAttributeNameForIndex(name, 1); } ::mlir::StringAttr getNoaliasScopesAttrName() { return getAttributeNameForIndex(2); } static ::mlir::StringAttr getNoaliasScopesAttrName(::mlir::OperationName name) { return getAttributeNameForIndex(name, 2); } ::mlir::StringAttr getTbaaAttrName() { return getAttributeNameForIndex(3); } static ::mlir::StringAttr getTbaaAttrName(::mlir::OperationName name) { return getAttributeNameForIndex(name, 3); } static constexpr ::llvm::StringLiteral getOperationName() { return ::llvm::StringLiteral("rocdl.raw.ptr.buffer.atomic.umin"); } std::pair getODSOperandIndexAndLength(unsigned index) { return {index, 1}; } ::mlir::Operation::operand_range getODSOperands(unsigned index) { auto valueRange = getODSOperandIndexAndLength(index); return {std::next(getOperation()->operand_begin(), valueRange.first), std::next(getOperation()->operand_begin(), valueRange.first + valueRange.second)}; } ::mlir::TypedValue<::mlir::Type> getVdata() { return ::llvm::cast<::mlir::TypedValue<::mlir::Type>>(*getODSOperands(0).begin()); } ::mlir::TypedValue<::mlir::LLVM::LLVMPointerType> getRsrc() { return ::llvm::cast<::mlir::TypedValue<::mlir::LLVM::LLVMPointerType>>(*getODSOperands(1).begin()); } ::mlir::TypedValue<::mlir::IntegerType> getOffset() { return ::llvm::cast<::mlir::TypedValue<::mlir::IntegerType>>(*getODSOperands(2).begin()); } ::mlir::TypedValue<::mlir::IntegerType> getSoffset() { return ::llvm::cast<::mlir::TypedValue<::mlir::IntegerType>>(*getODSOperands(3).begin()); } ::mlir::OpOperand &getVdataMutable() { auto range = getODSOperandIndexAndLength(0); return getOperation()->getOpOperand(range.first); } ::mlir::OpOperand &getRsrcMutable() { auto range = getODSOperandIndexAndLength(1); return getOperation()->getOpOperand(range.first); } ::mlir::OpOperand &getOffsetMutable() { auto range = getODSOperandIndexAndLength(2); return getOperation()->getOpOperand(range.first); } ::mlir::OpOperand &getSoffsetMutable() { auto range = getODSOperandIndexAndLength(3); return getOperation()->getOpOperand(range.first); } std::pair getODSResultIndexAndLength(unsigned index) { return {index, 1}; } ::mlir::Operation::result_range getODSResults(unsigned index) { auto valueRange = getODSResultIndexAndLength(index); return {std::next(getOperation()->result_begin(), valueRange.first), std::next(getOperation()->result_begin(), valueRange.first + valueRange.second)}; } ::mlir::TypedValue<::mlir::Type> getRes() { return ::llvm::cast<::mlir::TypedValue<::mlir::Type>>(*getODSResults(0).begin()); } static ::llvm::LogicalResult setPropertiesFromAttr(Properties &prop, ::mlir::Attribute attr, ::llvm::function_ref<::mlir::InFlightDiagnostic()> emitError); static ::mlir::Attribute getPropertiesAsAttr(::mlir::MLIRContext *ctx, const Properties &prop); static llvm::hash_code computePropertiesHash(const Properties &prop); static std::optional getInherentAttr(::mlir::MLIRContext *ctx, const Properties &prop, llvm::StringRef name); static void setInherentAttr(Properties &prop, llvm::StringRef name, mlir::Attribute value); static void populateInherentAttrs(::mlir::MLIRContext *ctx, const Properties &prop, ::mlir::NamedAttrList &attrs); static ::llvm::LogicalResult verifyInherentAttrs(::mlir::OperationName opName, ::mlir::NamedAttrList &attrs, llvm::function_ref<::mlir::InFlightDiagnostic()> emitError); static ::llvm::LogicalResult readProperties(::mlir::DialectBytecodeReader &reader, ::mlir::OperationState &state); void writeProperties(::mlir::DialectBytecodeWriter &writer); ::mlir::Attribute getAuxAttr() { return ::llvm::dyn_cast_or_null<::mlir::Attribute>(getProperties().aux); } ::mlir::Attribute getAux(); ::mlir::ArrayAttr getAliasScopesAttr() { return ::llvm::dyn_cast_or_null<::mlir::ArrayAttr>(getProperties().alias_scopes); } ::std::optional< ::mlir::ArrayAttr > getAliasScopes(); ::mlir::ArrayAttr getNoaliasScopesAttr() { return ::llvm::dyn_cast_or_null<::mlir::ArrayAttr>(getProperties().noalias_scopes); } ::std::optional< ::mlir::ArrayAttr > getNoaliasScopes(); ::mlir::ArrayAttr getTbaaAttr() { return ::llvm::dyn_cast_or_null<::mlir::ArrayAttr>(getProperties().tbaa); } ::std::optional< ::mlir::ArrayAttr > getTbaa(); void setAuxAttr(::mlir::Attribute attr) { getProperties().aux = attr; } void setAliasScopesAttr(::mlir::ArrayAttr attr) { getProperties().alias_scopes = attr; } void setNoaliasScopesAttr(::mlir::ArrayAttr attr) { getProperties().noalias_scopes = attr; } void setTbaaAttr(::mlir::ArrayAttr attr) { getProperties().tbaa = attr; } ::mlir::Attribute removeAliasScopesAttr() { auto attr = getProperties().alias_scopes; getProperties().alias_scopes = {}; return attr; } ::mlir::Attribute removeNoaliasScopesAttr() { auto attr = getProperties().noalias_scopes; getProperties().noalias_scopes = {}; return attr; } ::mlir::Attribute removeTbaaAttr() { auto attr = getProperties().tbaa; getProperties().tbaa = {}; return attr; } static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::Type res, ::mlir::Value vdata, ::mlir::Value rsrc, ::mlir::Value offset, ::mlir::Value soffset, ::mlir::Attribute aux, /*optional*/::mlir::ArrayAttr alias_scopes, /*optional*/::mlir::ArrayAttr noalias_scopes, /*optional*/::mlir::ArrayAttr tbaa); static RawPtrBufferAtomicUminOp create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::Type res, ::mlir::Value vdata, ::mlir::Value rsrc, ::mlir::Value offset, ::mlir::Value soffset, ::mlir::Attribute aux, /*optional*/::mlir::ArrayAttr alias_scopes, /*optional*/::mlir::ArrayAttr noalias_scopes, /*optional*/::mlir::ArrayAttr tbaa); static RawPtrBufferAtomicUminOp create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::Type res, ::mlir::Value vdata, ::mlir::Value rsrc, ::mlir::Value offset, ::mlir::Value soffset, ::mlir::Attribute aux, /*optional*/::mlir::ArrayAttr alias_scopes, /*optional*/::mlir::ArrayAttr noalias_scopes, /*optional*/::mlir::ArrayAttr tbaa); static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::Value vdata, ::mlir::Value rsrc, ::mlir::Value offset, ::mlir::Value soffset, ::mlir::Attribute aux, /*optional*/::mlir::ArrayAttr alias_scopes, /*optional*/::mlir::ArrayAttr noalias_scopes, /*optional*/::mlir::ArrayAttr tbaa); static RawPtrBufferAtomicUminOp create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::Value vdata, ::mlir::Value rsrc, ::mlir::Value offset, ::mlir::Value soffset, ::mlir::Attribute aux, /*optional*/::mlir::ArrayAttr alias_scopes, /*optional*/::mlir::ArrayAttr noalias_scopes, /*optional*/::mlir::ArrayAttr tbaa); static RawPtrBufferAtomicUminOp create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::Value vdata, ::mlir::Value rsrc, ::mlir::Value offset, ::mlir::Value soffset, ::mlir::Attribute aux, /*optional*/::mlir::ArrayAttr alias_scopes, /*optional*/::mlir::ArrayAttr noalias_scopes, /*optional*/::mlir::ArrayAttr tbaa); static void build(::mlir::OpBuilder &, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, ::llvm::ArrayRef<::mlir::NamedAttribute> attributes = {}); static RawPtrBufferAtomicUminOp create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, ::llvm::ArrayRef<::mlir::NamedAttribute> attributes = {}); static RawPtrBufferAtomicUminOp create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, ::llvm::ArrayRef<::mlir::NamedAttribute> attributes = {}); static void build(::mlir::OpBuilder &, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, const Properties &properties, ::llvm::ArrayRef<::mlir::NamedAttribute> discardableAttributes = {}); static RawPtrBufferAtomicUminOp create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, const Properties &properties, ::llvm::ArrayRef<::mlir::NamedAttribute> discardableAttributes = {}); static RawPtrBufferAtomicUminOp create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, const Properties &properties, ::llvm::ArrayRef<::mlir::NamedAttribute> discardableAttributes = {}); static void populateDefaultProperties(::mlir::OperationName opName, Properties &properties); ::llvm::LogicalResult verifyInvariantsImpl(); ::llvm::LogicalResult verifyInvariants(); ::llvm::SmallVector<::mlir::Value> getAccessedOperands(); static ::mlir::ParseResult parse(::mlir::OpAsmParser &parser, ::mlir::OperationState &result); void print(::mlir::OpAsmPrinter &_odsPrinter); void getEffects(::llvm::SmallVectorImpl<::mlir::SideEffects::EffectInstance<::mlir::MemoryEffects::Effect>> &effects); private: ::mlir::StringAttr getAttributeNameForIndex(unsigned index) { return getAttributeNameForIndex((*this)->getName(), index); } static ::mlir::StringAttr getAttributeNameForIndex(::mlir::OperationName name, unsigned index) { assert(index < 4 && "invalid attribute index"); assert(name.getStringRef() == getOperationName() && "invalid operation name"); assert(name.isRegistered() && "Operation isn't registered, missing a " "dependent dialect loading?"); return name.getAttributeNames()[index]; } public: }; } // namespace mlir::ROCDL MLIR_DECLARE_EXPLICIT_TYPE_ID(::mlir::ROCDL::RawPtrBufferAtomicUminOp) MLIR_DECLARE_EXPLICIT_TYPE_ID(::mlir::ROCDL::detail::RawPtrBufferAtomicUminOpGenericAdaptorBase::Properties) namespace mlir::ROCDL { //===----------------------------------------------------------------------===// // ::mlir::ROCDL::RawPtrBufferLoadAsyncLdsOp declarations //===----------------------------------------------------------------------===// namespace detail { class RawPtrBufferLoadAsyncLdsOpGenericAdaptorBase { public: struct Properties { using alias_scopesTy = ::mlir::ArrayAttr; alias_scopesTy alias_scopes; auto getAliasScopes() const { auto &propStorage = this->alias_scopes; return ::llvm::dyn_cast_or_null<::mlir::ArrayAttr>(propStorage); } void setAliasScopes(const ::mlir::ArrayAttr &propValue) { this->alias_scopes = propValue; } using auxTy = ::mlir::Attribute; auxTy aux; auto getAux() const { auto &propStorage = this->aux; return ::llvm::dyn_cast_or_null<::mlir::Attribute>(propStorage); } void setAux(const ::mlir::Attribute &propValue) { this->aux = propValue; } using noalias_scopesTy = ::mlir::ArrayAttr; noalias_scopesTy noalias_scopes; auto getNoaliasScopes() const { auto &propStorage = this->noalias_scopes; return ::llvm::dyn_cast_or_null<::mlir::ArrayAttr>(propStorage); } void setNoaliasScopes(const ::mlir::ArrayAttr &propValue) { this->noalias_scopes = propValue; } using tbaaTy = ::mlir::ArrayAttr; tbaaTy tbaa; auto getTbaa() const { auto &propStorage = this->tbaa; return ::llvm::dyn_cast_or_null<::mlir::ArrayAttr>(propStorage); } void setTbaa(const ::mlir::ArrayAttr &propValue) { this->tbaa = propValue; } bool operator==(const Properties &rhs) const { return rhs.alias_scopes == this->alias_scopes && rhs.aux == this->aux && rhs.noalias_scopes == this->noalias_scopes && rhs.tbaa == this->tbaa && true; } bool operator!=(const Properties &rhs) const { return !(*this == rhs); } }; protected: ::mlir::DictionaryAttr odsAttrs; ::std::optional<::mlir::OperationName> odsOpName; Properties properties; ::mlir::RegionRange odsRegions; public: RawPtrBufferLoadAsyncLdsOpGenericAdaptorBase(::mlir::DictionaryAttr attrs, const Properties &properties, ::mlir::RegionRange regions = {}) : odsAttrs(attrs), properties(properties), odsRegions(regions) { if (odsAttrs) odsOpName.emplace("rocdl.raw.ptr.buffer.load.async.lds", odsAttrs.getContext()); } RawPtrBufferLoadAsyncLdsOpGenericAdaptorBase(RawPtrBufferLoadAsyncLdsOp op); std::pair getODSOperandIndexAndLength(unsigned index, unsigned odsOperandsSize) { return {index, 1}; } const Properties &getProperties() { return properties; } ::mlir::DictionaryAttr getAttributes() { return odsAttrs; } ::mlir::Attribute getAuxAttr(); ::mlir::Attribute getAux(); ::mlir::ArrayAttr getAliasScopesAttr() { auto attr = ::llvm::dyn_cast_or_null<::mlir::ArrayAttr>(getProperties().alias_scopes); return attr; } ::std::optional< ::mlir::ArrayAttr > getAliasScopes(); ::mlir::ArrayAttr getNoaliasScopesAttr() { auto attr = ::llvm::dyn_cast_or_null<::mlir::ArrayAttr>(getProperties().noalias_scopes); return attr; } ::std::optional< ::mlir::ArrayAttr > getNoaliasScopes(); ::mlir::ArrayAttr getTbaaAttr() { auto attr = ::llvm::dyn_cast_or_null<::mlir::ArrayAttr>(getProperties().tbaa); return attr; } ::std::optional< ::mlir::ArrayAttr > getTbaa(); }; } // namespace detail template class RawPtrBufferLoadAsyncLdsOpGenericAdaptor : public detail::RawPtrBufferLoadAsyncLdsOpGenericAdaptorBase { using ValueT = ::llvm::detail::ValueOfRange; using Base = detail::RawPtrBufferLoadAsyncLdsOpGenericAdaptorBase; static constexpr int odsIndex_rsrc = 0; static constexpr int odsIndex_ldsPtr = 1; static constexpr int odsIndex_size = 2; static constexpr int odsIndex_voffset = 3; static constexpr int odsIndex_soffset = 4; static constexpr int odsIndex_offset = 5; public: RawPtrBufferLoadAsyncLdsOpGenericAdaptor(RangeT values, ::mlir::DictionaryAttr attrs, const Properties &properties, ::mlir::RegionRange regions = {}) : Base(attrs, properties, regions), odsOperands(values) {} RawPtrBufferLoadAsyncLdsOpGenericAdaptor(RangeT values, ::mlir::DictionaryAttr attrs, ::mlir::PropertyRef properties, ::mlir::RegionRange regions = {}) : RawPtrBufferLoadAsyncLdsOpGenericAdaptor(values, attrs, (properties ? *properties.as() : Properties{}), regions) {} RawPtrBufferLoadAsyncLdsOpGenericAdaptor(RangeT values, ::mlir::DictionaryAttr attrs = nullptr) : RawPtrBufferLoadAsyncLdsOpGenericAdaptor(values, attrs, Properties{}, {}) {} RawPtrBufferLoadAsyncLdsOpGenericAdaptor(RangeT values, const RawPtrBufferLoadAsyncLdsOpGenericAdaptorBase &base) : Base(base), odsOperands(values) {} template >> RawPtrBufferLoadAsyncLdsOpGenericAdaptor(RangeT values, LateInst op) : Base(op), odsOperands(values) {} std::pair getODSOperandIndexAndLength(unsigned index) { return Base::getODSOperandIndexAndLength(index, odsOperands.size()); } RangeT getODSOperands(unsigned index) { auto valueRange = getODSOperandIndexAndLength(index); return {std::next(odsOperands.begin(), valueRange.first), std::next(odsOperands.begin(), valueRange.first + valueRange.second)}; } ValueT getRsrc() { return (*getODSOperands(0).begin()); } ValueT getLdsPtr() { return (*getODSOperands(1).begin()); } ValueT getSize() { return (*getODSOperands(2).begin()); } ValueT getVoffset() { return (*getODSOperands(3).begin()); } ValueT getSoffset() { return (*getODSOperands(4).begin()); } ValueT getOffset() { return (*getODSOperands(5).begin()); } RangeT getOperands() { return odsOperands; } private: RangeT odsOperands; }; class RawPtrBufferLoadAsyncLdsOpAdaptor : public RawPtrBufferLoadAsyncLdsOpGenericAdaptor<::mlir::ValueRange> { public: using RawPtrBufferLoadAsyncLdsOpGenericAdaptor::RawPtrBufferLoadAsyncLdsOpGenericAdaptor; RawPtrBufferLoadAsyncLdsOpAdaptor(RawPtrBufferLoadAsyncLdsOp op); ::llvm::LogicalResult verify(::mlir::Location loc); }; class RawPtrBufferLoadAsyncLdsOp : public ::mlir::Op::Impl, ::mlir::OpTrait::OpInvariants, ::mlir::BytecodeOpInterface::Trait, ::mlir::LLVM::AliasAnalysisOpInterface::Trait, ::mlir::MemoryEffectOpInterface::Trait> { public: using Op::Op; using Op::print; using Adaptor = RawPtrBufferLoadAsyncLdsOpAdaptor; template using GenericAdaptor = RawPtrBufferLoadAsyncLdsOpGenericAdaptor; using FoldAdaptor = GenericAdaptor<::llvm::ArrayRef<::mlir::Attribute>>; static constexpr int odsIndex_rsrc = 0; static constexpr int odsIndex_ldsPtr = 1; static constexpr int odsIndex_size = 2; static constexpr int odsIndex_voffset = 3; static constexpr int odsIndex_soffset = 4; static constexpr int odsIndex_offset = 5; using Properties = FoldAdaptor::Properties; using ::mlir::LLVM::AliasAnalysisOpInterface::Trait::getAliasScopesOrNull; using ::mlir::LLVM::AliasAnalysisOpInterface::Trait::setAliasScopes; using ::mlir::LLVM::AliasAnalysisOpInterface::Trait::getNoAliasScopesOrNull; using ::mlir::LLVM::AliasAnalysisOpInterface::Trait::setNoAliasScopes; using ::mlir::LLVM::AliasAnalysisOpInterface::Trait::getTBAATagsOrNull; using ::mlir::LLVM::AliasAnalysisOpInterface::Trait::setTBAATags; static ::llvm::ArrayRef<::llvm::StringRef> getAttributeNames() { static ::llvm::StringRef attrNames[] = {::llvm::StringRef("alias_scopes"), ::llvm::StringRef("aux"), ::llvm::StringRef("noalias_scopes"), ::llvm::StringRef("tbaa")}; return ::llvm::ArrayRef(attrNames); } ::mlir::StringAttr getAliasScopesAttrName() { return getAttributeNameForIndex(0); } static ::mlir::StringAttr getAliasScopesAttrName(::mlir::OperationName name) { return getAttributeNameForIndex(name, 0); } ::mlir::StringAttr getAuxAttrName() { return getAttributeNameForIndex(1); } static ::mlir::StringAttr getAuxAttrName(::mlir::OperationName name) { return getAttributeNameForIndex(name, 1); } ::mlir::StringAttr getNoaliasScopesAttrName() { return getAttributeNameForIndex(2); } static ::mlir::StringAttr getNoaliasScopesAttrName(::mlir::OperationName name) { return getAttributeNameForIndex(name, 2); } ::mlir::StringAttr getTbaaAttrName() { return getAttributeNameForIndex(3); } static ::mlir::StringAttr getTbaaAttrName(::mlir::OperationName name) { return getAttributeNameForIndex(name, 3); } static constexpr ::llvm::StringLiteral getOperationName() { return ::llvm::StringLiteral("rocdl.raw.ptr.buffer.load.async.lds"); } std::pair getODSOperandIndexAndLength(unsigned index) { return {index, 1}; } ::mlir::Operation::operand_range getODSOperands(unsigned index) { auto valueRange = getODSOperandIndexAndLength(index); return {std::next(getOperation()->operand_begin(), valueRange.first), std::next(getOperation()->operand_begin(), valueRange.first + valueRange.second)}; } ::mlir::TypedValue<::mlir::LLVM::LLVMPointerType> getRsrc() { return ::llvm::cast<::mlir::TypedValue<::mlir::LLVM::LLVMPointerType>>(*getODSOperands(0).begin()); } ::mlir::TypedValue<::mlir::LLVM::LLVMPointerType> getLdsPtr() { return ::llvm::cast<::mlir::TypedValue<::mlir::LLVM::LLVMPointerType>>(*getODSOperands(1).begin()); } ::mlir::TypedValue<::mlir::IntegerType> getSize() { return ::llvm::cast<::mlir::TypedValue<::mlir::IntegerType>>(*getODSOperands(2).begin()); } ::mlir::TypedValue<::mlir::IntegerType> getVoffset() { return ::llvm::cast<::mlir::TypedValue<::mlir::IntegerType>>(*getODSOperands(3).begin()); } ::mlir::TypedValue<::mlir::IntegerType> getSoffset() { return ::llvm::cast<::mlir::TypedValue<::mlir::IntegerType>>(*getODSOperands(4).begin()); } ::mlir::TypedValue<::mlir::IntegerType> getOffset() { return ::llvm::cast<::mlir::TypedValue<::mlir::IntegerType>>(*getODSOperands(5).begin()); } ::mlir::OpOperand &getRsrcMutable() { auto range = getODSOperandIndexAndLength(0); return getOperation()->getOpOperand(range.first); } ::mlir::OpOperand &getLdsPtrMutable() { auto range = getODSOperandIndexAndLength(1); return getOperation()->getOpOperand(range.first); } ::mlir::OpOperand &getSizeMutable() { auto range = getODSOperandIndexAndLength(2); return getOperation()->getOpOperand(range.first); } ::mlir::OpOperand &getVoffsetMutable() { auto range = getODSOperandIndexAndLength(3); return getOperation()->getOpOperand(range.first); } ::mlir::OpOperand &getSoffsetMutable() { auto range = getODSOperandIndexAndLength(4); return getOperation()->getOpOperand(range.first); } ::mlir::OpOperand &getOffsetMutable() { auto range = getODSOperandIndexAndLength(5); return getOperation()->getOpOperand(range.first); } std::pair getODSResultIndexAndLength(unsigned index) { return {index, 1}; } ::mlir::Operation::result_range getODSResults(unsigned index) { auto valueRange = getODSResultIndexAndLength(index); return {std::next(getOperation()->result_begin(), valueRange.first), std::next(getOperation()->result_begin(), valueRange.first + valueRange.second)}; } static ::llvm::LogicalResult setPropertiesFromAttr(Properties &prop, ::mlir::Attribute attr, ::llvm::function_ref<::mlir::InFlightDiagnostic()> emitError); static ::mlir::Attribute getPropertiesAsAttr(::mlir::MLIRContext *ctx, const Properties &prop); static llvm::hash_code computePropertiesHash(const Properties &prop); static std::optional getInherentAttr(::mlir::MLIRContext *ctx, const Properties &prop, llvm::StringRef name); static void setInherentAttr(Properties &prop, llvm::StringRef name, mlir::Attribute value); static void populateInherentAttrs(::mlir::MLIRContext *ctx, const Properties &prop, ::mlir::NamedAttrList &attrs); static ::llvm::LogicalResult verifyInherentAttrs(::mlir::OperationName opName, ::mlir::NamedAttrList &attrs, llvm::function_ref<::mlir::InFlightDiagnostic()> emitError); static ::llvm::LogicalResult readProperties(::mlir::DialectBytecodeReader &reader, ::mlir::OperationState &state); void writeProperties(::mlir::DialectBytecodeWriter &writer); ::mlir::Attribute getAuxAttr() { return ::llvm::dyn_cast_or_null<::mlir::Attribute>(getProperties().aux); } ::mlir::Attribute getAux(); ::mlir::ArrayAttr getAliasScopesAttr() { return ::llvm::dyn_cast_or_null<::mlir::ArrayAttr>(getProperties().alias_scopes); } ::std::optional< ::mlir::ArrayAttr > getAliasScopes(); ::mlir::ArrayAttr getNoaliasScopesAttr() { return ::llvm::dyn_cast_or_null<::mlir::ArrayAttr>(getProperties().noalias_scopes); } ::std::optional< ::mlir::ArrayAttr > getNoaliasScopes(); ::mlir::ArrayAttr getTbaaAttr() { return ::llvm::dyn_cast_or_null<::mlir::ArrayAttr>(getProperties().tbaa); } ::std::optional< ::mlir::ArrayAttr > getTbaa(); void setAuxAttr(::mlir::Attribute attr) { getProperties().aux = attr; } void setAliasScopesAttr(::mlir::ArrayAttr attr) { getProperties().alias_scopes = attr; } void setNoaliasScopesAttr(::mlir::ArrayAttr attr) { getProperties().noalias_scopes = attr; } void setTbaaAttr(::mlir::ArrayAttr attr) { getProperties().tbaa = attr; } ::mlir::Attribute removeAliasScopesAttr() { auto attr = getProperties().alias_scopes; getProperties().alias_scopes = {}; return attr; } ::mlir::Attribute removeNoaliasScopesAttr() { auto attr = getProperties().noalias_scopes; getProperties().noalias_scopes = {}; return attr; } ::mlir::Attribute removeTbaaAttr() { auto attr = getProperties().tbaa; getProperties().tbaa = {}; return attr; } static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::Value rsrc, ::mlir::Value ldsPtr, ::mlir::Value size, ::mlir::Value voffset, ::mlir::Value soffset, ::mlir::Value offset, ::mlir::Attribute aux, /*optional*/::mlir::ArrayAttr alias_scopes, /*optional*/::mlir::ArrayAttr noalias_scopes, /*optional*/::mlir::ArrayAttr tbaa); static RawPtrBufferLoadAsyncLdsOp create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::Value rsrc, ::mlir::Value ldsPtr, ::mlir::Value size, ::mlir::Value voffset, ::mlir::Value soffset, ::mlir::Value offset, ::mlir::Attribute aux, /*optional*/::mlir::ArrayAttr alias_scopes, /*optional*/::mlir::ArrayAttr noalias_scopes, /*optional*/::mlir::ArrayAttr tbaa); static RawPtrBufferLoadAsyncLdsOp create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::Value rsrc, ::mlir::Value ldsPtr, ::mlir::Value size, ::mlir::Value voffset, ::mlir::Value soffset, ::mlir::Value offset, ::mlir::Attribute aux, /*optional*/::mlir::ArrayAttr alias_scopes, /*optional*/::mlir::ArrayAttr noalias_scopes, /*optional*/::mlir::ArrayAttr tbaa); static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::Value rsrc, ::mlir::Value ldsPtr, ::mlir::Value size, ::mlir::Value voffset, ::mlir::Value soffset, ::mlir::Value offset, ::mlir::Attribute aux, /*optional*/::mlir::ArrayAttr alias_scopes, /*optional*/::mlir::ArrayAttr noalias_scopes, /*optional*/::mlir::ArrayAttr tbaa); static RawPtrBufferLoadAsyncLdsOp create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::Value rsrc, ::mlir::Value ldsPtr, ::mlir::Value size, ::mlir::Value voffset, ::mlir::Value soffset, ::mlir::Value offset, ::mlir::Attribute aux, /*optional*/::mlir::ArrayAttr alias_scopes, /*optional*/::mlir::ArrayAttr noalias_scopes, /*optional*/::mlir::ArrayAttr tbaa); static RawPtrBufferLoadAsyncLdsOp create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::Value rsrc, ::mlir::Value ldsPtr, ::mlir::Value size, ::mlir::Value voffset, ::mlir::Value soffset, ::mlir::Value offset, ::mlir::Attribute aux, /*optional*/::mlir::ArrayAttr alias_scopes, /*optional*/::mlir::ArrayAttr noalias_scopes, /*optional*/::mlir::ArrayAttr tbaa); static void build(::mlir::OpBuilder &, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, ::llvm::ArrayRef<::mlir::NamedAttribute> attributes = {}); static RawPtrBufferLoadAsyncLdsOp create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, ::llvm::ArrayRef<::mlir::NamedAttribute> attributes = {}); static RawPtrBufferLoadAsyncLdsOp create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, ::llvm::ArrayRef<::mlir::NamedAttribute> attributes = {}); static void build(::mlir::OpBuilder &, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, const Properties &properties, ::llvm::ArrayRef<::mlir::NamedAttribute> discardableAttributes = {}); static RawPtrBufferLoadAsyncLdsOp create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, const Properties &properties, ::llvm::ArrayRef<::mlir::NamedAttribute> discardableAttributes = {}); static RawPtrBufferLoadAsyncLdsOp create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, const Properties &properties, ::llvm::ArrayRef<::mlir::NamedAttribute> discardableAttributes = {}); static void populateDefaultProperties(::mlir::OperationName opName, Properties &properties); ::llvm::LogicalResult verifyInvariantsImpl(); ::llvm::LogicalResult verifyInvariants(); ::llvm::SmallVector<::mlir::Value> getAccessedOperands(); static ::mlir::ParseResult parse(::mlir::OpAsmParser &parser, ::mlir::OperationState &result); void print(::mlir::OpAsmPrinter &_odsPrinter); void getEffects(::llvm::SmallVectorImpl<::mlir::SideEffects::EffectInstance<::mlir::MemoryEffects::Effect>> &effects); private: ::mlir::StringAttr getAttributeNameForIndex(unsigned index) { return getAttributeNameForIndex((*this)->getName(), index); } static ::mlir::StringAttr getAttributeNameForIndex(::mlir::OperationName name, unsigned index) { assert(index < 4 && "invalid attribute index"); assert(name.getStringRef() == getOperationName() && "invalid operation name"); assert(name.isRegistered() && "Operation isn't registered, missing a " "dependent dialect loading?"); return name.getAttributeNames()[index]; } public: }; } // namespace mlir::ROCDL MLIR_DECLARE_EXPLICIT_TYPE_ID(::mlir::ROCDL::RawPtrBufferLoadAsyncLdsOp) MLIR_DECLARE_EXPLICIT_TYPE_ID(::mlir::ROCDL::detail::RawPtrBufferLoadAsyncLdsOpGenericAdaptorBase::Properties) namespace mlir::ROCDL { //===----------------------------------------------------------------------===// // ::mlir::ROCDL::RawPtrBufferLoadLdsOp declarations //===----------------------------------------------------------------------===// namespace detail { class RawPtrBufferLoadLdsOpGenericAdaptorBase { public: struct Properties { using alias_scopesTy = ::mlir::ArrayAttr; alias_scopesTy alias_scopes; auto getAliasScopes() const { auto &propStorage = this->alias_scopes; return ::llvm::dyn_cast_or_null<::mlir::ArrayAttr>(propStorage); } void setAliasScopes(const ::mlir::ArrayAttr &propValue) { this->alias_scopes = propValue; } using auxTy = ::mlir::Attribute; auxTy aux; auto getAux() const { auto &propStorage = this->aux; return ::llvm::dyn_cast_or_null<::mlir::Attribute>(propStorage); } void setAux(const ::mlir::Attribute &propValue) { this->aux = propValue; } using noalias_scopesTy = ::mlir::ArrayAttr; noalias_scopesTy noalias_scopes; auto getNoaliasScopes() const { auto &propStorage = this->noalias_scopes; return ::llvm::dyn_cast_or_null<::mlir::ArrayAttr>(propStorage); } void setNoaliasScopes(const ::mlir::ArrayAttr &propValue) { this->noalias_scopes = propValue; } using tbaaTy = ::mlir::ArrayAttr; tbaaTy tbaa; auto getTbaa() const { auto &propStorage = this->tbaa; return ::llvm::dyn_cast_or_null<::mlir::ArrayAttr>(propStorage); } void setTbaa(const ::mlir::ArrayAttr &propValue) { this->tbaa = propValue; } bool operator==(const Properties &rhs) const { return rhs.alias_scopes == this->alias_scopes && rhs.aux == this->aux && rhs.noalias_scopes == this->noalias_scopes && rhs.tbaa == this->tbaa && true; } bool operator!=(const Properties &rhs) const { return !(*this == rhs); } }; protected: ::mlir::DictionaryAttr odsAttrs; ::std::optional<::mlir::OperationName> odsOpName; Properties properties; ::mlir::RegionRange odsRegions; public: RawPtrBufferLoadLdsOpGenericAdaptorBase(::mlir::DictionaryAttr attrs, const Properties &properties, ::mlir::RegionRange regions = {}) : odsAttrs(attrs), properties(properties), odsRegions(regions) { if (odsAttrs) odsOpName.emplace("rocdl.raw.ptr.buffer.load.lds", odsAttrs.getContext()); } RawPtrBufferLoadLdsOpGenericAdaptorBase(RawPtrBufferLoadLdsOp op); std::pair getODSOperandIndexAndLength(unsigned index, unsigned odsOperandsSize) { return {index, 1}; } const Properties &getProperties() { return properties; } ::mlir::DictionaryAttr getAttributes() { return odsAttrs; } ::mlir::Attribute getAuxAttr(); ::mlir::Attribute getAux(); ::mlir::ArrayAttr getAliasScopesAttr() { auto attr = ::llvm::dyn_cast_or_null<::mlir::ArrayAttr>(getProperties().alias_scopes); return attr; } ::std::optional< ::mlir::ArrayAttr > getAliasScopes(); ::mlir::ArrayAttr getNoaliasScopesAttr() { auto attr = ::llvm::dyn_cast_or_null<::mlir::ArrayAttr>(getProperties().noalias_scopes); return attr; } ::std::optional< ::mlir::ArrayAttr > getNoaliasScopes(); ::mlir::ArrayAttr getTbaaAttr() { auto attr = ::llvm::dyn_cast_or_null<::mlir::ArrayAttr>(getProperties().tbaa); return attr; } ::std::optional< ::mlir::ArrayAttr > getTbaa(); }; } // namespace detail template class RawPtrBufferLoadLdsOpGenericAdaptor : public detail::RawPtrBufferLoadLdsOpGenericAdaptorBase { using ValueT = ::llvm::detail::ValueOfRange; using Base = detail::RawPtrBufferLoadLdsOpGenericAdaptorBase; static constexpr int odsIndex_rsrc = 0; static constexpr int odsIndex_ldsPtr = 1; static constexpr int odsIndex_size = 2; static constexpr int odsIndex_voffset = 3; static constexpr int odsIndex_soffset = 4; static constexpr int odsIndex_offset = 5; public: RawPtrBufferLoadLdsOpGenericAdaptor(RangeT values, ::mlir::DictionaryAttr attrs, const Properties &properties, ::mlir::RegionRange regions = {}) : Base(attrs, properties, regions), odsOperands(values) {} RawPtrBufferLoadLdsOpGenericAdaptor(RangeT values, ::mlir::DictionaryAttr attrs, ::mlir::PropertyRef properties, ::mlir::RegionRange regions = {}) : RawPtrBufferLoadLdsOpGenericAdaptor(values, attrs, (properties ? *properties.as() : Properties{}), regions) {} RawPtrBufferLoadLdsOpGenericAdaptor(RangeT values, ::mlir::DictionaryAttr attrs = nullptr) : RawPtrBufferLoadLdsOpGenericAdaptor(values, attrs, Properties{}, {}) {} RawPtrBufferLoadLdsOpGenericAdaptor(RangeT values, const RawPtrBufferLoadLdsOpGenericAdaptorBase &base) : Base(base), odsOperands(values) {} template >> RawPtrBufferLoadLdsOpGenericAdaptor(RangeT values, LateInst op) : Base(op), odsOperands(values) {} std::pair getODSOperandIndexAndLength(unsigned index) { return Base::getODSOperandIndexAndLength(index, odsOperands.size()); } RangeT getODSOperands(unsigned index) { auto valueRange = getODSOperandIndexAndLength(index); return {std::next(odsOperands.begin(), valueRange.first), std::next(odsOperands.begin(), valueRange.first + valueRange.second)}; } ValueT getRsrc() { return (*getODSOperands(0).begin()); } ValueT getLdsPtr() { return (*getODSOperands(1).begin()); } ValueT getSize() { return (*getODSOperands(2).begin()); } ValueT getVoffset() { return (*getODSOperands(3).begin()); } ValueT getSoffset() { return (*getODSOperands(4).begin()); } ValueT getOffset() { return (*getODSOperands(5).begin()); } RangeT getOperands() { return odsOperands; } private: RangeT odsOperands; }; class RawPtrBufferLoadLdsOpAdaptor : public RawPtrBufferLoadLdsOpGenericAdaptor<::mlir::ValueRange> { public: using RawPtrBufferLoadLdsOpGenericAdaptor::RawPtrBufferLoadLdsOpGenericAdaptor; RawPtrBufferLoadLdsOpAdaptor(RawPtrBufferLoadLdsOp op); ::llvm::LogicalResult verify(::mlir::Location loc); }; class RawPtrBufferLoadLdsOp : public ::mlir::Op::Impl, ::mlir::OpTrait::OpInvariants, ::mlir::BytecodeOpInterface::Trait, ::mlir::LLVM::AliasAnalysisOpInterface::Trait, ::mlir::MemoryEffectOpInterface::Trait> { public: using Op::Op; using Op::print; using Adaptor = RawPtrBufferLoadLdsOpAdaptor; template using GenericAdaptor = RawPtrBufferLoadLdsOpGenericAdaptor; using FoldAdaptor = GenericAdaptor<::llvm::ArrayRef<::mlir::Attribute>>; static constexpr int odsIndex_rsrc = 0; static constexpr int odsIndex_ldsPtr = 1; static constexpr int odsIndex_size = 2; static constexpr int odsIndex_voffset = 3; static constexpr int odsIndex_soffset = 4; static constexpr int odsIndex_offset = 5; using Properties = FoldAdaptor::Properties; using ::mlir::LLVM::AliasAnalysisOpInterface::Trait::getAliasScopesOrNull; using ::mlir::LLVM::AliasAnalysisOpInterface::Trait::setAliasScopes; using ::mlir::LLVM::AliasAnalysisOpInterface::Trait::getNoAliasScopesOrNull; using ::mlir::LLVM::AliasAnalysisOpInterface::Trait::setNoAliasScopes; using ::mlir::LLVM::AliasAnalysisOpInterface::Trait::getTBAATagsOrNull; using ::mlir::LLVM::AliasAnalysisOpInterface::Trait::setTBAATags; static ::llvm::ArrayRef<::llvm::StringRef> getAttributeNames() { static ::llvm::StringRef attrNames[] = {::llvm::StringRef("alias_scopes"), ::llvm::StringRef("aux"), ::llvm::StringRef("noalias_scopes"), ::llvm::StringRef("tbaa")}; return ::llvm::ArrayRef(attrNames); } ::mlir::StringAttr getAliasScopesAttrName() { return getAttributeNameForIndex(0); } static ::mlir::StringAttr getAliasScopesAttrName(::mlir::OperationName name) { return getAttributeNameForIndex(name, 0); } ::mlir::StringAttr getAuxAttrName() { return getAttributeNameForIndex(1); } static ::mlir::StringAttr getAuxAttrName(::mlir::OperationName name) { return getAttributeNameForIndex(name, 1); } ::mlir::StringAttr getNoaliasScopesAttrName() { return getAttributeNameForIndex(2); } static ::mlir::StringAttr getNoaliasScopesAttrName(::mlir::OperationName name) { return getAttributeNameForIndex(name, 2); } ::mlir::StringAttr getTbaaAttrName() { return getAttributeNameForIndex(3); } static ::mlir::StringAttr getTbaaAttrName(::mlir::OperationName name) { return getAttributeNameForIndex(name, 3); } static constexpr ::llvm::StringLiteral getOperationName() { return ::llvm::StringLiteral("rocdl.raw.ptr.buffer.load.lds"); } std::pair getODSOperandIndexAndLength(unsigned index) { return {index, 1}; } ::mlir::Operation::operand_range getODSOperands(unsigned index) { auto valueRange = getODSOperandIndexAndLength(index); return {std::next(getOperation()->operand_begin(), valueRange.first), std::next(getOperation()->operand_begin(), valueRange.first + valueRange.second)}; } ::mlir::TypedValue<::mlir::LLVM::LLVMPointerType> getRsrc() { return ::llvm::cast<::mlir::TypedValue<::mlir::LLVM::LLVMPointerType>>(*getODSOperands(0).begin()); } ::mlir::TypedValue<::mlir::LLVM::LLVMPointerType> getLdsPtr() { return ::llvm::cast<::mlir::TypedValue<::mlir::LLVM::LLVMPointerType>>(*getODSOperands(1).begin()); } ::mlir::TypedValue<::mlir::IntegerType> getSize() { return ::llvm::cast<::mlir::TypedValue<::mlir::IntegerType>>(*getODSOperands(2).begin()); } ::mlir::TypedValue<::mlir::IntegerType> getVoffset() { return ::llvm::cast<::mlir::TypedValue<::mlir::IntegerType>>(*getODSOperands(3).begin()); } ::mlir::TypedValue<::mlir::IntegerType> getSoffset() { return ::llvm::cast<::mlir::TypedValue<::mlir::IntegerType>>(*getODSOperands(4).begin()); } ::mlir::TypedValue<::mlir::IntegerType> getOffset() { return ::llvm::cast<::mlir::TypedValue<::mlir::IntegerType>>(*getODSOperands(5).begin()); } ::mlir::OpOperand &getRsrcMutable() { auto range = getODSOperandIndexAndLength(0); return getOperation()->getOpOperand(range.first); } ::mlir::OpOperand &getLdsPtrMutable() { auto range = getODSOperandIndexAndLength(1); return getOperation()->getOpOperand(range.first); } ::mlir::OpOperand &getSizeMutable() { auto range = getODSOperandIndexAndLength(2); return getOperation()->getOpOperand(range.first); } ::mlir::OpOperand &getVoffsetMutable() { auto range = getODSOperandIndexAndLength(3); return getOperation()->getOpOperand(range.first); } ::mlir::OpOperand &getSoffsetMutable() { auto range = getODSOperandIndexAndLength(4); return getOperation()->getOpOperand(range.first); } ::mlir::OpOperand &getOffsetMutable() { auto range = getODSOperandIndexAndLength(5); return getOperation()->getOpOperand(range.first); } std::pair getODSResultIndexAndLength(unsigned index) { return {index, 1}; } ::mlir::Operation::result_range getODSResults(unsigned index) { auto valueRange = getODSResultIndexAndLength(index); return {std::next(getOperation()->result_begin(), valueRange.first), std::next(getOperation()->result_begin(), valueRange.first + valueRange.second)}; } static ::llvm::LogicalResult setPropertiesFromAttr(Properties &prop, ::mlir::Attribute attr, ::llvm::function_ref<::mlir::InFlightDiagnostic()> emitError); static ::mlir::Attribute getPropertiesAsAttr(::mlir::MLIRContext *ctx, const Properties &prop); static llvm::hash_code computePropertiesHash(const Properties &prop); static std::optional getInherentAttr(::mlir::MLIRContext *ctx, const Properties &prop, llvm::StringRef name); static void setInherentAttr(Properties &prop, llvm::StringRef name, mlir::Attribute value); static void populateInherentAttrs(::mlir::MLIRContext *ctx, const Properties &prop, ::mlir::NamedAttrList &attrs); static ::llvm::LogicalResult verifyInherentAttrs(::mlir::OperationName opName, ::mlir::NamedAttrList &attrs, llvm::function_ref<::mlir::InFlightDiagnostic()> emitError); static ::llvm::LogicalResult readProperties(::mlir::DialectBytecodeReader &reader, ::mlir::OperationState &state); void writeProperties(::mlir::DialectBytecodeWriter &writer); ::mlir::Attribute getAuxAttr() { return ::llvm::dyn_cast_or_null<::mlir::Attribute>(getProperties().aux); } ::mlir::Attribute getAux(); ::mlir::ArrayAttr getAliasScopesAttr() { return ::llvm::dyn_cast_or_null<::mlir::ArrayAttr>(getProperties().alias_scopes); } ::std::optional< ::mlir::ArrayAttr > getAliasScopes(); ::mlir::ArrayAttr getNoaliasScopesAttr() { return ::llvm::dyn_cast_or_null<::mlir::ArrayAttr>(getProperties().noalias_scopes); } ::std::optional< ::mlir::ArrayAttr > getNoaliasScopes(); ::mlir::ArrayAttr getTbaaAttr() { return ::llvm::dyn_cast_or_null<::mlir::ArrayAttr>(getProperties().tbaa); } ::std::optional< ::mlir::ArrayAttr > getTbaa(); void setAuxAttr(::mlir::Attribute attr) { getProperties().aux = attr; } void setAliasScopesAttr(::mlir::ArrayAttr attr) { getProperties().alias_scopes = attr; } void setNoaliasScopesAttr(::mlir::ArrayAttr attr) { getProperties().noalias_scopes = attr; } void setTbaaAttr(::mlir::ArrayAttr attr) { getProperties().tbaa = attr; } ::mlir::Attribute removeAliasScopesAttr() { auto attr = getProperties().alias_scopes; getProperties().alias_scopes = {}; return attr; } ::mlir::Attribute removeNoaliasScopesAttr() { auto attr = getProperties().noalias_scopes; getProperties().noalias_scopes = {}; return attr; } ::mlir::Attribute removeTbaaAttr() { auto attr = getProperties().tbaa; getProperties().tbaa = {}; return attr; } static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::Value rsrc, ::mlir::Value ldsPtr, ::mlir::Value size, ::mlir::Value voffset, ::mlir::Value soffset, ::mlir::Value offset, ::mlir::Attribute aux, /*optional*/::mlir::ArrayAttr alias_scopes, /*optional*/::mlir::ArrayAttr noalias_scopes, /*optional*/::mlir::ArrayAttr tbaa); static RawPtrBufferLoadLdsOp create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::Value rsrc, ::mlir::Value ldsPtr, ::mlir::Value size, ::mlir::Value voffset, ::mlir::Value soffset, ::mlir::Value offset, ::mlir::Attribute aux, /*optional*/::mlir::ArrayAttr alias_scopes, /*optional*/::mlir::ArrayAttr noalias_scopes, /*optional*/::mlir::ArrayAttr tbaa); static RawPtrBufferLoadLdsOp create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::Value rsrc, ::mlir::Value ldsPtr, ::mlir::Value size, ::mlir::Value voffset, ::mlir::Value soffset, ::mlir::Value offset, ::mlir::Attribute aux, /*optional*/::mlir::ArrayAttr alias_scopes, /*optional*/::mlir::ArrayAttr noalias_scopes, /*optional*/::mlir::ArrayAttr tbaa); static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::Value rsrc, ::mlir::Value ldsPtr, ::mlir::Value size, ::mlir::Value voffset, ::mlir::Value soffset, ::mlir::Value offset, ::mlir::Attribute aux, /*optional*/::mlir::ArrayAttr alias_scopes, /*optional*/::mlir::ArrayAttr noalias_scopes, /*optional*/::mlir::ArrayAttr tbaa); static RawPtrBufferLoadLdsOp create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::Value rsrc, ::mlir::Value ldsPtr, ::mlir::Value size, ::mlir::Value voffset, ::mlir::Value soffset, ::mlir::Value offset, ::mlir::Attribute aux, /*optional*/::mlir::ArrayAttr alias_scopes, /*optional*/::mlir::ArrayAttr noalias_scopes, /*optional*/::mlir::ArrayAttr tbaa); static RawPtrBufferLoadLdsOp create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::Value rsrc, ::mlir::Value ldsPtr, ::mlir::Value size, ::mlir::Value voffset, ::mlir::Value soffset, ::mlir::Value offset, ::mlir::Attribute aux, /*optional*/::mlir::ArrayAttr alias_scopes, /*optional*/::mlir::ArrayAttr noalias_scopes, /*optional*/::mlir::ArrayAttr tbaa); static void build(::mlir::OpBuilder &, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, ::llvm::ArrayRef<::mlir::NamedAttribute> attributes = {}); static RawPtrBufferLoadLdsOp create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, ::llvm::ArrayRef<::mlir::NamedAttribute> attributes = {}); static RawPtrBufferLoadLdsOp create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, ::llvm::ArrayRef<::mlir::NamedAttribute> attributes = {}); static void build(::mlir::OpBuilder &, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, const Properties &properties, ::llvm::ArrayRef<::mlir::NamedAttribute> discardableAttributes = {}); static RawPtrBufferLoadLdsOp create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, const Properties &properties, ::llvm::ArrayRef<::mlir::NamedAttribute> discardableAttributes = {}); static RawPtrBufferLoadLdsOp create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, const Properties &properties, ::llvm::ArrayRef<::mlir::NamedAttribute> discardableAttributes = {}); static void populateDefaultProperties(::mlir::OperationName opName, Properties &properties); ::llvm::LogicalResult verifyInvariantsImpl(); ::llvm::LogicalResult verifyInvariants(); ::llvm::SmallVector<::mlir::Value> getAccessedOperands(); static ::mlir::ParseResult parse(::mlir::OpAsmParser &parser, ::mlir::OperationState &result); void print(::mlir::OpAsmPrinter &_odsPrinter); void getEffects(::llvm::SmallVectorImpl<::mlir::SideEffects::EffectInstance<::mlir::MemoryEffects::Effect>> &effects); private: ::mlir::StringAttr getAttributeNameForIndex(unsigned index) { return getAttributeNameForIndex((*this)->getName(), index); } static ::mlir::StringAttr getAttributeNameForIndex(::mlir::OperationName name, unsigned index) { assert(index < 4 && "invalid attribute index"); assert(name.getStringRef() == getOperationName() && "invalid operation name"); assert(name.isRegistered() && "Operation isn't registered, missing a " "dependent dialect loading?"); return name.getAttributeNames()[index]; } public: }; } // namespace mlir::ROCDL MLIR_DECLARE_EXPLICIT_TYPE_ID(::mlir::ROCDL::RawPtrBufferLoadLdsOp) MLIR_DECLARE_EXPLICIT_TYPE_ID(::mlir::ROCDL::detail::RawPtrBufferLoadLdsOpGenericAdaptorBase::Properties) namespace mlir::ROCDL { //===----------------------------------------------------------------------===// // ::mlir::ROCDL::RawPtrBufferLoadOp declarations //===----------------------------------------------------------------------===// namespace detail { class RawPtrBufferLoadOpGenericAdaptorBase { public: struct Properties { using alias_scopesTy = ::mlir::ArrayAttr; alias_scopesTy alias_scopes; auto getAliasScopes() const { auto &propStorage = this->alias_scopes; return ::llvm::dyn_cast_or_null<::mlir::ArrayAttr>(propStorage); } void setAliasScopes(const ::mlir::ArrayAttr &propValue) { this->alias_scopes = propValue; } using auxTy = ::mlir::Attribute; auxTy aux; auto getAux() const { auto &propStorage = this->aux; return ::llvm::dyn_cast_or_null<::mlir::Attribute>(propStorage); } void setAux(const ::mlir::Attribute &propValue) { this->aux = propValue; } using noalias_scopesTy = ::mlir::ArrayAttr; noalias_scopesTy noalias_scopes; auto getNoaliasScopes() const { auto &propStorage = this->noalias_scopes; return ::llvm::dyn_cast_or_null<::mlir::ArrayAttr>(propStorage); } void setNoaliasScopes(const ::mlir::ArrayAttr &propValue) { this->noalias_scopes = propValue; } using tbaaTy = ::mlir::ArrayAttr; tbaaTy tbaa; auto getTbaa() const { auto &propStorage = this->tbaa; return ::llvm::dyn_cast_or_null<::mlir::ArrayAttr>(propStorage); } void setTbaa(const ::mlir::ArrayAttr &propValue) { this->tbaa = propValue; } bool operator==(const Properties &rhs) const { return rhs.alias_scopes == this->alias_scopes && rhs.aux == this->aux && rhs.noalias_scopes == this->noalias_scopes && rhs.tbaa == this->tbaa && true; } bool operator!=(const Properties &rhs) const { return !(*this == rhs); } }; protected: ::mlir::DictionaryAttr odsAttrs; ::std::optional<::mlir::OperationName> odsOpName; Properties properties; ::mlir::RegionRange odsRegions; public: RawPtrBufferLoadOpGenericAdaptorBase(::mlir::DictionaryAttr attrs, const Properties &properties, ::mlir::RegionRange regions = {}) : odsAttrs(attrs), properties(properties), odsRegions(regions) { if (odsAttrs) odsOpName.emplace("rocdl.raw.ptr.buffer.load", odsAttrs.getContext()); } RawPtrBufferLoadOpGenericAdaptorBase(RawPtrBufferLoadOp op); std::pair getODSOperandIndexAndLength(unsigned index, unsigned odsOperandsSize) { return {index, 1}; } const Properties &getProperties() { return properties; } ::mlir::DictionaryAttr getAttributes() { return odsAttrs; } ::mlir::Attribute getAuxAttr(); ::mlir::Attribute getAux(); ::mlir::ArrayAttr getAliasScopesAttr() { auto attr = ::llvm::dyn_cast_or_null<::mlir::ArrayAttr>(getProperties().alias_scopes); return attr; } ::std::optional< ::mlir::ArrayAttr > getAliasScopes(); ::mlir::ArrayAttr getNoaliasScopesAttr() { auto attr = ::llvm::dyn_cast_or_null<::mlir::ArrayAttr>(getProperties().noalias_scopes); return attr; } ::std::optional< ::mlir::ArrayAttr > getNoaliasScopes(); ::mlir::ArrayAttr getTbaaAttr() { auto attr = ::llvm::dyn_cast_or_null<::mlir::ArrayAttr>(getProperties().tbaa); return attr; } ::std::optional< ::mlir::ArrayAttr > getTbaa(); }; } // namespace detail template class RawPtrBufferLoadOpGenericAdaptor : public detail::RawPtrBufferLoadOpGenericAdaptorBase { using ValueT = ::llvm::detail::ValueOfRange; using Base = detail::RawPtrBufferLoadOpGenericAdaptorBase; static constexpr int odsIndex_rsrc = 0; static constexpr int odsIndex_offset = 1; static constexpr int odsIndex_soffset = 2; public: RawPtrBufferLoadOpGenericAdaptor(RangeT values, ::mlir::DictionaryAttr attrs, const Properties &properties, ::mlir::RegionRange regions = {}) : Base(attrs, properties, regions), odsOperands(values) {} RawPtrBufferLoadOpGenericAdaptor(RangeT values, ::mlir::DictionaryAttr attrs, ::mlir::PropertyRef properties, ::mlir::RegionRange regions = {}) : RawPtrBufferLoadOpGenericAdaptor(values, attrs, (properties ? *properties.as() : Properties{}), regions) {} RawPtrBufferLoadOpGenericAdaptor(RangeT values, ::mlir::DictionaryAttr attrs = nullptr) : RawPtrBufferLoadOpGenericAdaptor(values, attrs, Properties{}, {}) {} RawPtrBufferLoadOpGenericAdaptor(RangeT values, const RawPtrBufferLoadOpGenericAdaptorBase &base) : Base(base), odsOperands(values) {} template >> RawPtrBufferLoadOpGenericAdaptor(RangeT values, LateInst op) : Base(op), odsOperands(values) {} std::pair getODSOperandIndexAndLength(unsigned index) { return Base::getODSOperandIndexAndLength(index, odsOperands.size()); } RangeT getODSOperands(unsigned index) { auto valueRange = getODSOperandIndexAndLength(index); return {std::next(odsOperands.begin(), valueRange.first), std::next(odsOperands.begin(), valueRange.first + valueRange.second)}; } ValueT getRsrc() { return (*getODSOperands(0).begin()); } ValueT getOffset() { return (*getODSOperands(1).begin()); } ValueT getSoffset() { return (*getODSOperands(2).begin()); } RangeT getOperands() { return odsOperands; } private: RangeT odsOperands; }; class RawPtrBufferLoadOpAdaptor : public RawPtrBufferLoadOpGenericAdaptor<::mlir::ValueRange> { public: using RawPtrBufferLoadOpGenericAdaptor::RawPtrBufferLoadOpGenericAdaptor; RawPtrBufferLoadOpAdaptor(RawPtrBufferLoadOp op); ::llvm::LogicalResult verify(::mlir::Location loc); }; class RawPtrBufferLoadOp : public ::mlir::Op::Impl, ::mlir::OpTrait::ZeroSuccessors, ::mlir::OpTrait::NOperands<3>::Impl, ::mlir::OpTrait::OpInvariants, ::mlir::BytecodeOpInterface::Trait, ::mlir::LLVM::AliasAnalysisOpInterface::Trait, ::mlir::MemoryEffectOpInterface::Trait> { public: using Op::Op; using Op::print; using Adaptor = RawPtrBufferLoadOpAdaptor; template using GenericAdaptor = RawPtrBufferLoadOpGenericAdaptor; using FoldAdaptor = GenericAdaptor<::llvm::ArrayRef<::mlir::Attribute>>; static constexpr int odsIndex_rsrc = 0; static constexpr int odsIndex_offset = 1; static constexpr int odsIndex_soffset = 2; using Properties = FoldAdaptor::Properties; using ::mlir::LLVM::AliasAnalysisOpInterface::Trait::getAliasScopesOrNull; using ::mlir::LLVM::AliasAnalysisOpInterface::Trait::setAliasScopes; using ::mlir::LLVM::AliasAnalysisOpInterface::Trait::getNoAliasScopesOrNull; using ::mlir::LLVM::AliasAnalysisOpInterface::Trait::setNoAliasScopes; using ::mlir::LLVM::AliasAnalysisOpInterface::Trait::getTBAATagsOrNull; using ::mlir::LLVM::AliasAnalysisOpInterface::Trait::setTBAATags; static ::llvm::ArrayRef<::llvm::StringRef> getAttributeNames() { static ::llvm::StringRef attrNames[] = {::llvm::StringRef("alias_scopes"), ::llvm::StringRef("aux"), ::llvm::StringRef("noalias_scopes"), ::llvm::StringRef("tbaa")}; return ::llvm::ArrayRef(attrNames); } ::mlir::StringAttr getAliasScopesAttrName() { return getAttributeNameForIndex(0); } static ::mlir::StringAttr getAliasScopesAttrName(::mlir::OperationName name) { return getAttributeNameForIndex(name, 0); } ::mlir::StringAttr getAuxAttrName() { return getAttributeNameForIndex(1); } static ::mlir::StringAttr getAuxAttrName(::mlir::OperationName name) { return getAttributeNameForIndex(name, 1); } ::mlir::StringAttr getNoaliasScopesAttrName() { return getAttributeNameForIndex(2); } static ::mlir::StringAttr getNoaliasScopesAttrName(::mlir::OperationName name) { return getAttributeNameForIndex(name, 2); } ::mlir::StringAttr getTbaaAttrName() { return getAttributeNameForIndex(3); } static ::mlir::StringAttr getTbaaAttrName(::mlir::OperationName name) { return getAttributeNameForIndex(name, 3); } static constexpr ::llvm::StringLiteral getOperationName() { return ::llvm::StringLiteral("rocdl.raw.ptr.buffer.load"); } std::pair getODSOperandIndexAndLength(unsigned index) { return {index, 1}; } ::mlir::Operation::operand_range getODSOperands(unsigned index) { auto valueRange = getODSOperandIndexAndLength(index); return {std::next(getOperation()->operand_begin(), valueRange.first), std::next(getOperation()->operand_begin(), valueRange.first + valueRange.second)}; } ::mlir::TypedValue<::mlir::LLVM::LLVMPointerType> getRsrc() { return ::llvm::cast<::mlir::TypedValue<::mlir::LLVM::LLVMPointerType>>(*getODSOperands(0).begin()); } ::mlir::TypedValue<::mlir::IntegerType> getOffset() { return ::llvm::cast<::mlir::TypedValue<::mlir::IntegerType>>(*getODSOperands(1).begin()); } ::mlir::TypedValue<::mlir::IntegerType> getSoffset() { return ::llvm::cast<::mlir::TypedValue<::mlir::IntegerType>>(*getODSOperands(2).begin()); } ::mlir::OpOperand &getRsrcMutable() { auto range = getODSOperandIndexAndLength(0); return getOperation()->getOpOperand(range.first); } ::mlir::OpOperand &getOffsetMutable() { auto range = getODSOperandIndexAndLength(1); return getOperation()->getOpOperand(range.first); } ::mlir::OpOperand &getSoffsetMutable() { auto range = getODSOperandIndexAndLength(2); return getOperation()->getOpOperand(range.first); } std::pair getODSResultIndexAndLength(unsigned index) { return {index, 1}; } ::mlir::Operation::result_range getODSResults(unsigned index) { auto valueRange = getODSResultIndexAndLength(index); return {std::next(getOperation()->result_begin(), valueRange.first), std::next(getOperation()->result_begin(), valueRange.first + valueRange.second)}; } ::mlir::TypedValue<::mlir::Type> getRes() { return ::llvm::cast<::mlir::TypedValue<::mlir::Type>>(*getODSResults(0).begin()); } static ::llvm::LogicalResult setPropertiesFromAttr(Properties &prop, ::mlir::Attribute attr, ::llvm::function_ref<::mlir::InFlightDiagnostic()> emitError); static ::mlir::Attribute getPropertiesAsAttr(::mlir::MLIRContext *ctx, const Properties &prop); static llvm::hash_code computePropertiesHash(const Properties &prop); static std::optional getInherentAttr(::mlir::MLIRContext *ctx, const Properties &prop, llvm::StringRef name); static void setInherentAttr(Properties &prop, llvm::StringRef name, mlir::Attribute value); static void populateInherentAttrs(::mlir::MLIRContext *ctx, const Properties &prop, ::mlir::NamedAttrList &attrs); static ::llvm::LogicalResult verifyInherentAttrs(::mlir::OperationName opName, ::mlir::NamedAttrList &attrs, llvm::function_ref<::mlir::InFlightDiagnostic()> emitError); static ::llvm::LogicalResult readProperties(::mlir::DialectBytecodeReader &reader, ::mlir::OperationState &state); void writeProperties(::mlir::DialectBytecodeWriter &writer); ::mlir::Attribute getAuxAttr() { return ::llvm::dyn_cast_or_null<::mlir::Attribute>(getProperties().aux); } ::mlir::Attribute getAux(); ::mlir::ArrayAttr getAliasScopesAttr() { return ::llvm::dyn_cast_or_null<::mlir::ArrayAttr>(getProperties().alias_scopes); } ::std::optional< ::mlir::ArrayAttr > getAliasScopes(); ::mlir::ArrayAttr getNoaliasScopesAttr() { return ::llvm::dyn_cast_or_null<::mlir::ArrayAttr>(getProperties().noalias_scopes); } ::std::optional< ::mlir::ArrayAttr > getNoaliasScopes(); ::mlir::ArrayAttr getTbaaAttr() { return ::llvm::dyn_cast_or_null<::mlir::ArrayAttr>(getProperties().tbaa); } ::std::optional< ::mlir::ArrayAttr > getTbaa(); void setAuxAttr(::mlir::Attribute attr) { getProperties().aux = attr; } void setAliasScopesAttr(::mlir::ArrayAttr attr) { getProperties().alias_scopes = attr; } void setNoaliasScopesAttr(::mlir::ArrayAttr attr) { getProperties().noalias_scopes = attr; } void setTbaaAttr(::mlir::ArrayAttr attr) { getProperties().tbaa = attr; } ::mlir::Attribute removeAliasScopesAttr() { auto attr = getProperties().alias_scopes; getProperties().alias_scopes = {}; return attr; } ::mlir::Attribute removeNoaliasScopesAttr() { auto attr = getProperties().noalias_scopes; getProperties().noalias_scopes = {}; return attr; } ::mlir::Attribute removeTbaaAttr() { auto attr = getProperties().tbaa; getProperties().tbaa = {}; return attr; } static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::Type res, ::mlir::Value rsrc, ::mlir::Value offset, ::mlir::Value soffset, ::mlir::Attribute aux, /*optional*/::mlir::ArrayAttr alias_scopes, /*optional*/::mlir::ArrayAttr noalias_scopes, /*optional*/::mlir::ArrayAttr tbaa); static RawPtrBufferLoadOp create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::Type res, ::mlir::Value rsrc, ::mlir::Value offset, ::mlir::Value soffset, ::mlir::Attribute aux, /*optional*/::mlir::ArrayAttr alias_scopes, /*optional*/::mlir::ArrayAttr noalias_scopes, /*optional*/::mlir::ArrayAttr tbaa); static RawPtrBufferLoadOp create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::Type res, ::mlir::Value rsrc, ::mlir::Value offset, ::mlir::Value soffset, ::mlir::Attribute aux, /*optional*/::mlir::ArrayAttr alias_scopes, /*optional*/::mlir::ArrayAttr noalias_scopes, /*optional*/::mlir::ArrayAttr tbaa); static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::Value rsrc, ::mlir::Value offset, ::mlir::Value soffset, ::mlir::Attribute aux, /*optional*/::mlir::ArrayAttr alias_scopes, /*optional*/::mlir::ArrayAttr noalias_scopes, /*optional*/::mlir::ArrayAttr tbaa); static RawPtrBufferLoadOp create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::Value rsrc, ::mlir::Value offset, ::mlir::Value soffset, ::mlir::Attribute aux, /*optional*/::mlir::ArrayAttr alias_scopes, /*optional*/::mlir::ArrayAttr noalias_scopes, /*optional*/::mlir::ArrayAttr tbaa); static RawPtrBufferLoadOp create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::Value rsrc, ::mlir::Value offset, ::mlir::Value soffset, ::mlir::Attribute aux, /*optional*/::mlir::ArrayAttr alias_scopes, /*optional*/::mlir::ArrayAttr noalias_scopes, /*optional*/::mlir::ArrayAttr tbaa); static void build(::mlir::OpBuilder &, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, ::llvm::ArrayRef<::mlir::NamedAttribute> attributes = {}); static RawPtrBufferLoadOp create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, ::llvm::ArrayRef<::mlir::NamedAttribute> attributes = {}); static RawPtrBufferLoadOp create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, ::llvm::ArrayRef<::mlir::NamedAttribute> attributes = {}); static void build(::mlir::OpBuilder &, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, const Properties &properties, ::llvm::ArrayRef<::mlir::NamedAttribute> discardableAttributes = {}); static RawPtrBufferLoadOp create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, const Properties &properties, ::llvm::ArrayRef<::mlir::NamedAttribute> discardableAttributes = {}); static RawPtrBufferLoadOp create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, const Properties &properties, ::llvm::ArrayRef<::mlir::NamedAttribute> discardableAttributes = {}); static void populateDefaultProperties(::mlir::OperationName opName, Properties &properties); ::llvm::LogicalResult verifyInvariantsImpl(); ::llvm::LogicalResult verifyInvariants(); ::llvm::SmallVector<::mlir::Value> getAccessedOperands(); static ::mlir::ParseResult parse(::mlir::OpAsmParser &parser, ::mlir::OperationState &result); void print(::mlir::OpAsmPrinter &_odsPrinter); void getEffects(::llvm::SmallVectorImpl<::mlir::SideEffects::EffectInstance<::mlir::MemoryEffects::Effect>> &effects); private: ::mlir::StringAttr getAttributeNameForIndex(unsigned index) { return getAttributeNameForIndex((*this)->getName(), index); } static ::mlir::StringAttr getAttributeNameForIndex(::mlir::OperationName name, unsigned index) { assert(index < 4 && "invalid attribute index"); assert(name.getStringRef() == getOperationName() && "invalid operation name"); assert(name.isRegistered() && "Operation isn't registered, missing a " "dependent dialect loading?"); return name.getAttributeNames()[index]; } public: }; } // namespace mlir::ROCDL MLIR_DECLARE_EXPLICIT_TYPE_ID(::mlir::ROCDL::RawPtrBufferLoadOp) MLIR_DECLARE_EXPLICIT_TYPE_ID(::mlir::ROCDL::detail::RawPtrBufferLoadOpGenericAdaptorBase::Properties) namespace mlir::ROCDL { //===----------------------------------------------------------------------===// // ::mlir::ROCDL::RawPtrBufferStoreOp declarations //===----------------------------------------------------------------------===// namespace detail { class RawPtrBufferStoreOpGenericAdaptorBase { public: struct Properties { using alias_scopesTy = ::mlir::ArrayAttr; alias_scopesTy alias_scopes; auto getAliasScopes() const { auto &propStorage = this->alias_scopes; return ::llvm::dyn_cast_or_null<::mlir::ArrayAttr>(propStorage); } void setAliasScopes(const ::mlir::ArrayAttr &propValue) { this->alias_scopes = propValue; } using auxTy = ::mlir::Attribute; auxTy aux; auto getAux() const { auto &propStorage = this->aux; return ::llvm::dyn_cast_or_null<::mlir::Attribute>(propStorage); } void setAux(const ::mlir::Attribute &propValue) { this->aux = propValue; } using noalias_scopesTy = ::mlir::ArrayAttr; noalias_scopesTy noalias_scopes; auto getNoaliasScopes() const { auto &propStorage = this->noalias_scopes; return ::llvm::dyn_cast_or_null<::mlir::ArrayAttr>(propStorage); } void setNoaliasScopes(const ::mlir::ArrayAttr &propValue) { this->noalias_scopes = propValue; } using tbaaTy = ::mlir::ArrayAttr; tbaaTy tbaa; auto getTbaa() const { auto &propStorage = this->tbaa; return ::llvm::dyn_cast_or_null<::mlir::ArrayAttr>(propStorage); } void setTbaa(const ::mlir::ArrayAttr &propValue) { this->tbaa = propValue; } bool operator==(const Properties &rhs) const { return rhs.alias_scopes == this->alias_scopes && rhs.aux == this->aux && rhs.noalias_scopes == this->noalias_scopes && rhs.tbaa == this->tbaa && true; } bool operator!=(const Properties &rhs) const { return !(*this == rhs); } }; protected: ::mlir::DictionaryAttr odsAttrs; ::std::optional<::mlir::OperationName> odsOpName; Properties properties; ::mlir::RegionRange odsRegions; public: RawPtrBufferStoreOpGenericAdaptorBase(::mlir::DictionaryAttr attrs, const Properties &properties, ::mlir::RegionRange regions = {}) : odsAttrs(attrs), properties(properties), odsRegions(regions) { if (odsAttrs) odsOpName.emplace("rocdl.raw.ptr.buffer.store", odsAttrs.getContext()); } RawPtrBufferStoreOpGenericAdaptorBase(RawPtrBufferStoreOp op); std::pair getODSOperandIndexAndLength(unsigned index, unsigned odsOperandsSize) { return {index, 1}; } const Properties &getProperties() { return properties; } ::mlir::DictionaryAttr getAttributes() { return odsAttrs; } ::mlir::Attribute getAuxAttr(); ::mlir::Attribute getAux(); ::mlir::ArrayAttr getAliasScopesAttr() { auto attr = ::llvm::dyn_cast_or_null<::mlir::ArrayAttr>(getProperties().alias_scopes); return attr; } ::std::optional< ::mlir::ArrayAttr > getAliasScopes(); ::mlir::ArrayAttr getNoaliasScopesAttr() { auto attr = ::llvm::dyn_cast_or_null<::mlir::ArrayAttr>(getProperties().noalias_scopes); return attr; } ::std::optional< ::mlir::ArrayAttr > getNoaliasScopes(); ::mlir::ArrayAttr getTbaaAttr() { auto attr = ::llvm::dyn_cast_or_null<::mlir::ArrayAttr>(getProperties().tbaa); return attr; } ::std::optional< ::mlir::ArrayAttr > getTbaa(); }; } // namespace detail template class RawPtrBufferStoreOpGenericAdaptor : public detail::RawPtrBufferStoreOpGenericAdaptorBase { using ValueT = ::llvm::detail::ValueOfRange; using Base = detail::RawPtrBufferStoreOpGenericAdaptorBase; static constexpr int odsIndex_vdata = 0; static constexpr int odsIndex_rsrc = 1; static constexpr int odsIndex_offset = 2; static constexpr int odsIndex_soffset = 3; public: RawPtrBufferStoreOpGenericAdaptor(RangeT values, ::mlir::DictionaryAttr attrs, const Properties &properties, ::mlir::RegionRange regions = {}) : Base(attrs, properties, regions), odsOperands(values) {} RawPtrBufferStoreOpGenericAdaptor(RangeT values, ::mlir::DictionaryAttr attrs, ::mlir::PropertyRef properties, ::mlir::RegionRange regions = {}) : RawPtrBufferStoreOpGenericAdaptor(values, attrs, (properties ? *properties.as() : Properties{}), regions) {} RawPtrBufferStoreOpGenericAdaptor(RangeT values, ::mlir::DictionaryAttr attrs = nullptr) : RawPtrBufferStoreOpGenericAdaptor(values, attrs, Properties{}, {}) {} RawPtrBufferStoreOpGenericAdaptor(RangeT values, const RawPtrBufferStoreOpGenericAdaptorBase &base) : Base(base), odsOperands(values) {} template >> RawPtrBufferStoreOpGenericAdaptor(RangeT values, LateInst op) : Base(op), odsOperands(values) {} std::pair getODSOperandIndexAndLength(unsigned index) { return Base::getODSOperandIndexAndLength(index, odsOperands.size()); } RangeT getODSOperands(unsigned index) { auto valueRange = getODSOperandIndexAndLength(index); return {std::next(odsOperands.begin(), valueRange.first), std::next(odsOperands.begin(), valueRange.first + valueRange.second)}; } ValueT getVdata() { return (*getODSOperands(0).begin()); } ValueT getRsrc() { return (*getODSOperands(1).begin()); } ValueT getOffset() { return (*getODSOperands(2).begin()); } ValueT getSoffset() { return (*getODSOperands(3).begin()); } RangeT getOperands() { return odsOperands; } private: RangeT odsOperands; }; class RawPtrBufferStoreOpAdaptor : public RawPtrBufferStoreOpGenericAdaptor<::mlir::ValueRange> { public: using RawPtrBufferStoreOpGenericAdaptor::RawPtrBufferStoreOpGenericAdaptor; RawPtrBufferStoreOpAdaptor(RawPtrBufferStoreOp op); ::llvm::LogicalResult verify(::mlir::Location loc); }; class RawPtrBufferStoreOp : public ::mlir::Op::Impl, ::mlir::OpTrait::OpInvariants, ::mlir::BytecodeOpInterface::Trait, ::mlir::LLVM::AliasAnalysisOpInterface::Trait, ::mlir::MemoryEffectOpInterface::Trait> { public: using Op::Op; using Op::print; using Adaptor = RawPtrBufferStoreOpAdaptor; template using GenericAdaptor = RawPtrBufferStoreOpGenericAdaptor; using FoldAdaptor = GenericAdaptor<::llvm::ArrayRef<::mlir::Attribute>>; static constexpr int odsIndex_vdata = 0; static constexpr int odsIndex_rsrc = 1; static constexpr int odsIndex_offset = 2; static constexpr int odsIndex_soffset = 3; using Properties = FoldAdaptor::Properties; using ::mlir::LLVM::AliasAnalysisOpInterface::Trait::getAliasScopesOrNull; using ::mlir::LLVM::AliasAnalysisOpInterface::Trait::setAliasScopes; using ::mlir::LLVM::AliasAnalysisOpInterface::Trait::getNoAliasScopesOrNull; using ::mlir::LLVM::AliasAnalysisOpInterface::Trait::setNoAliasScopes; using ::mlir::LLVM::AliasAnalysisOpInterface::Trait::getTBAATagsOrNull; using ::mlir::LLVM::AliasAnalysisOpInterface::Trait::setTBAATags; static ::llvm::ArrayRef<::llvm::StringRef> getAttributeNames() { static ::llvm::StringRef attrNames[] = {::llvm::StringRef("alias_scopes"), ::llvm::StringRef("aux"), ::llvm::StringRef("noalias_scopes"), ::llvm::StringRef("tbaa")}; return ::llvm::ArrayRef(attrNames); } ::mlir::StringAttr getAliasScopesAttrName() { return getAttributeNameForIndex(0); } static ::mlir::StringAttr getAliasScopesAttrName(::mlir::OperationName name) { return getAttributeNameForIndex(name, 0); } ::mlir::StringAttr getAuxAttrName() { return getAttributeNameForIndex(1); } static ::mlir::StringAttr getAuxAttrName(::mlir::OperationName name) { return getAttributeNameForIndex(name, 1); } ::mlir::StringAttr getNoaliasScopesAttrName() { return getAttributeNameForIndex(2); } static ::mlir::StringAttr getNoaliasScopesAttrName(::mlir::OperationName name) { return getAttributeNameForIndex(name, 2); } ::mlir::StringAttr getTbaaAttrName() { return getAttributeNameForIndex(3); } static ::mlir::StringAttr getTbaaAttrName(::mlir::OperationName name) { return getAttributeNameForIndex(name, 3); } static constexpr ::llvm::StringLiteral getOperationName() { return ::llvm::StringLiteral("rocdl.raw.ptr.buffer.store"); } std::pair getODSOperandIndexAndLength(unsigned index) { return {index, 1}; } ::mlir::Operation::operand_range getODSOperands(unsigned index) { auto valueRange = getODSOperandIndexAndLength(index); return {std::next(getOperation()->operand_begin(), valueRange.first), std::next(getOperation()->operand_begin(), valueRange.first + valueRange.second)}; } ::mlir::TypedValue<::mlir::Type> getVdata() { return ::llvm::cast<::mlir::TypedValue<::mlir::Type>>(*getODSOperands(0).begin()); } ::mlir::TypedValue<::mlir::LLVM::LLVMPointerType> getRsrc() { return ::llvm::cast<::mlir::TypedValue<::mlir::LLVM::LLVMPointerType>>(*getODSOperands(1).begin()); } ::mlir::TypedValue<::mlir::IntegerType> getOffset() { return ::llvm::cast<::mlir::TypedValue<::mlir::IntegerType>>(*getODSOperands(2).begin()); } ::mlir::TypedValue<::mlir::IntegerType> getSoffset() { return ::llvm::cast<::mlir::TypedValue<::mlir::IntegerType>>(*getODSOperands(3).begin()); } ::mlir::OpOperand &getVdataMutable() { auto range = getODSOperandIndexAndLength(0); return getOperation()->getOpOperand(range.first); } ::mlir::OpOperand &getRsrcMutable() { auto range = getODSOperandIndexAndLength(1); return getOperation()->getOpOperand(range.first); } ::mlir::OpOperand &getOffsetMutable() { auto range = getODSOperandIndexAndLength(2); return getOperation()->getOpOperand(range.first); } ::mlir::OpOperand &getSoffsetMutable() { auto range = getODSOperandIndexAndLength(3); return getOperation()->getOpOperand(range.first); } std::pair getODSResultIndexAndLength(unsigned index) { return {index, 1}; } ::mlir::Operation::result_range getODSResults(unsigned index) { auto valueRange = getODSResultIndexAndLength(index); return {std::next(getOperation()->result_begin(), valueRange.first), std::next(getOperation()->result_begin(), valueRange.first + valueRange.second)}; } static ::llvm::LogicalResult setPropertiesFromAttr(Properties &prop, ::mlir::Attribute attr, ::llvm::function_ref<::mlir::InFlightDiagnostic()> emitError); static ::mlir::Attribute getPropertiesAsAttr(::mlir::MLIRContext *ctx, const Properties &prop); static llvm::hash_code computePropertiesHash(const Properties &prop); static std::optional getInherentAttr(::mlir::MLIRContext *ctx, const Properties &prop, llvm::StringRef name); static void setInherentAttr(Properties &prop, llvm::StringRef name, mlir::Attribute value); static void populateInherentAttrs(::mlir::MLIRContext *ctx, const Properties &prop, ::mlir::NamedAttrList &attrs); static ::llvm::LogicalResult verifyInherentAttrs(::mlir::OperationName opName, ::mlir::NamedAttrList &attrs, llvm::function_ref<::mlir::InFlightDiagnostic()> emitError); static ::llvm::LogicalResult readProperties(::mlir::DialectBytecodeReader &reader, ::mlir::OperationState &state); void writeProperties(::mlir::DialectBytecodeWriter &writer); ::mlir::Attribute getAuxAttr() { return ::llvm::dyn_cast_or_null<::mlir::Attribute>(getProperties().aux); } ::mlir::Attribute getAux(); ::mlir::ArrayAttr getAliasScopesAttr() { return ::llvm::dyn_cast_or_null<::mlir::ArrayAttr>(getProperties().alias_scopes); } ::std::optional< ::mlir::ArrayAttr > getAliasScopes(); ::mlir::ArrayAttr getNoaliasScopesAttr() { return ::llvm::dyn_cast_or_null<::mlir::ArrayAttr>(getProperties().noalias_scopes); } ::std::optional< ::mlir::ArrayAttr > getNoaliasScopes(); ::mlir::ArrayAttr getTbaaAttr() { return ::llvm::dyn_cast_or_null<::mlir::ArrayAttr>(getProperties().tbaa); } ::std::optional< ::mlir::ArrayAttr > getTbaa(); void setAuxAttr(::mlir::Attribute attr) { getProperties().aux = attr; } void setAliasScopesAttr(::mlir::ArrayAttr attr) { getProperties().alias_scopes = attr; } void setNoaliasScopesAttr(::mlir::ArrayAttr attr) { getProperties().noalias_scopes = attr; } void setTbaaAttr(::mlir::ArrayAttr attr) { getProperties().tbaa = attr; } ::mlir::Attribute removeAliasScopesAttr() { auto attr = getProperties().alias_scopes; getProperties().alias_scopes = {}; return attr; } ::mlir::Attribute removeNoaliasScopesAttr() { auto attr = getProperties().noalias_scopes; getProperties().noalias_scopes = {}; return attr; } ::mlir::Attribute removeTbaaAttr() { auto attr = getProperties().tbaa; getProperties().tbaa = {}; return attr; } static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::Value vdata, ::mlir::Value rsrc, ::mlir::Value offset, ::mlir::Value soffset, ::mlir::Attribute aux, /*optional*/::mlir::ArrayAttr alias_scopes, /*optional*/::mlir::ArrayAttr noalias_scopes, /*optional*/::mlir::ArrayAttr tbaa); static RawPtrBufferStoreOp create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::Value vdata, ::mlir::Value rsrc, ::mlir::Value offset, ::mlir::Value soffset, ::mlir::Attribute aux, /*optional*/::mlir::ArrayAttr alias_scopes, /*optional*/::mlir::ArrayAttr noalias_scopes, /*optional*/::mlir::ArrayAttr tbaa); static RawPtrBufferStoreOp create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::Value vdata, ::mlir::Value rsrc, ::mlir::Value offset, ::mlir::Value soffset, ::mlir::Attribute aux, /*optional*/::mlir::ArrayAttr alias_scopes, /*optional*/::mlir::ArrayAttr noalias_scopes, /*optional*/::mlir::ArrayAttr tbaa); static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::Value vdata, ::mlir::Value rsrc, ::mlir::Value offset, ::mlir::Value soffset, ::mlir::Attribute aux, /*optional*/::mlir::ArrayAttr alias_scopes, /*optional*/::mlir::ArrayAttr noalias_scopes, /*optional*/::mlir::ArrayAttr tbaa); static RawPtrBufferStoreOp create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::Value vdata, ::mlir::Value rsrc, ::mlir::Value offset, ::mlir::Value soffset, ::mlir::Attribute aux, /*optional*/::mlir::ArrayAttr alias_scopes, /*optional*/::mlir::ArrayAttr noalias_scopes, /*optional*/::mlir::ArrayAttr tbaa); static RawPtrBufferStoreOp create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::Value vdata, ::mlir::Value rsrc, ::mlir::Value offset, ::mlir::Value soffset, ::mlir::Attribute aux, /*optional*/::mlir::ArrayAttr alias_scopes, /*optional*/::mlir::ArrayAttr noalias_scopes, /*optional*/::mlir::ArrayAttr tbaa); static void build(::mlir::OpBuilder &, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, ::llvm::ArrayRef<::mlir::NamedAttribute> attributes = {}); static RawPtrBufferStoreOp create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, ::llvm::ArrayRef<::mlir::NamedAttribute> attributes = {}); static RawPtrBufferStoreOp create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, ::llvm::ArrayRef<::mlir::NamedAttribute> attributes = {}); static void build(::mlir::OpBuilder &, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, const Properties &properties, ::llvm::ArrayRef<::mlir::NamedAttribute> discardableAttributes = {}); static RawPtrBufferStoreOp create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, const Properties &properties, ::llvm::ArrayRef<::mlir::NamedAttribute> discardableAttributes = {}); static RawPtrBufferStoreOp create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, const Properties &properties, ::llvm::ArrayRef<::mlir::NamedAttribute> discardableAttributes = {}); static void populateDefaultProperties(::mlir::OperationName opName, Properties &properties); ::llvm::LogicalResult verifyInvariantsImpl(); ::llvm::LogicalResult verifyInvariants(); ::llvm::SmallVector<::mlir::Value> getAccessedOperands(); static ::mlir::ParseResult parse(::mlir::OpAsmParser &parser, ::mlir::OperationState &result); void print(::mlir::OpAsmPrinter &_odsPrinter); void getEffects(::llvm::SmallVectorImpl<::mlir::SideEffects::EffectInstance<::mlir::MemoryEffects::Effect>> &effects); private: ::mlir::StringAttr getAttributeNameForIndex(unsigned index) { return getAttributeNameForIndex((*this)->getName(), index); } static ::mlir::StringAttr getAttributeNameForIndex(::mlir::OperationName name, unsigned index) { assert(index < 4 && "invalid attribute index"); assert(name.getStringRef() == getOperationName() && "invalid operation name"); assert(name.isRegistered() && "Operation isn't registered, missing a " "dependent dialect loading?"); return name.getAttributeNames()[index]; } public: }; } // namespace mlir::ROCDL MLIR_DECLARE_EXPLICIT_TYPE_ID(::mlir::ROCDL::RawPtrBufferStoreOp) MLIR_DECLARE_EXPLICIT_TYPE_ID(::mlir::ROCDL::detail::RawPtrBufferStoreOpGenericAdaptorBase::Properties) namespace mlir::ROCDL { //===----------------------------------------------------------------------===// // ::mlir::ROCDL::ReadfirstlaneOp declarations //===----------------------------------------------------------------------===// namespace detail { class ReadfirstlaneOpGenericAdaptorBase { public: using Properties = ::mlir::EmptyProperties; protected: ::mlir::DictionaryAttr odsAttrs; ::std::optional<::mlir::OperationName> odsOpName; Properties properties; ::mlir::RegionRange odsRegions; public: ReadfirstlaneOpGenericAdaptorBase(::mlir::DictionaryAttr attrs, const Properties &properties, ::mlir::RegionRange regions = {}) : odsAttrs(attrs), properties(properties), odsRegions(regions) { if (odsAttrs) odsOpName.emplace("rocdl.readfirstlane", odsAttrs.getContext()); } ReadfirstlaneOpGenericAdaptorBase(ReadfirstlaneOp op); std::pair getODSOperandIndexAndLength(unsigned index, unsigned odsOperandsSize) { return {index, 1}; } const Properties &getProperties() { return properties; } ::mlir::DictionaryAttr getAttributes() { return odsAttrs; } }; } // namespace detail template class ReadfirstlaneOpGenericAdaptor : public detail::ReadfirstlaneOpGenericAdaptorBase { using ValueT = ::llvm::detail::ValueOfRange; using Base = detail::ReadfirstlaneOpGenericAdaptorBase; static constexpr int odsIndex_src = 0; public: ReadfirstlaneOpGenericAdaptor(RangeT values, ::mlir::DictionaryAttr attrs, const Properties &properties, ::mlir::RegionRange regions = {}) : Base(attrs, properties, regions), odsOperands(values) {} ReadfirstlaneOpGenericAdaptor(RangeT values, ::mlir::DictionaryAttr attrs, ::mlir::PropertyRef properties, ::mlir::RegionRange regions = {}) : ReadfirstlaneOpGenericAdaptor(values, attrs, (properties ? *properties.as() : Properties{}), regions) {} ReadfirstlaneOpGenericAdaptor(RangeT values, ::mlir::DictionaryAttr attrs = nullptr) : ReadfirstlaneOpGenericAdaptor(values, attrs, Properties{}, {}) {} ReadfirstlaneOpGenericAdaptor(RangeT values, const ReadfirstlaneOpGenericAdaptorBase &base) : Base(base), odsOperands(values) {} template >> ReadfirstlaneOpGenericAdaptor(RangeT values, LateInst op) : Base(op), odsOperands(values) {} std::pair getODSOperandIndexAndLength(unsigned index) { return Base::getODSOperandIndexAndLength(index, odsOperands.size()); } RangeT getODSOperands(unsigned index) { auto valueRange = getODSOperandIndexAndLength(index); return {std::next(odsOperands.begin(), valueRange.first), std::next(odsOperands.begin(), valueRange.first + valueRange.second)}; } ValueT getSrc() { return (*getODSOperands(0).begin()); } RangeT getOperands() { return odsOperands; } private: RangeT odsOperands; }; class ReadfirstlaneOpAdaptor : public ReadfirstlaneOpGenericAdaptor<::mlir::ValueRange> { public: using ReadfirstlaneOpGenericAdaptor::ReadfirstlaneOpGenericAdaptor; ReadfirstlaneOpAdaptor(ReadfirstlaneOp op); ::llvm::LogicalResult verify(::mlir::Location loc); }; class ReadfirstlaneOp : public ::mlir::Op::Impl, ::mlir::OpTrait::ZeroSuccessors, ::mlir::OpTrait::OneOperand, ::mlir::OpTrait::OpInvariants> { public: using Op::Op; using Op::print; using Adaptor = ReadfirstlaneOpAdaptor; template using GenericAdaptor = ReadfirstlaneOpGenericAdaptor; using FoldAdaptor = GenericAdaptor<::llvm::ArrayRef<::mlir::Attribute>>; static constexpr int odsIndex_src = 0; using Properties = FoldAdaptor::Properties; static ::llvm::ArrayRef<::llvm::StringRef> getAttributeNames() { return {}; } static constexpr ::llvm::StringLiteral getOperationName() { return ::llvm::StringLiteral("rocdl.readfirstlane"); } std::pair getODSOperandIndexAndLength(unsigned index) { return {index, 1}; } ::mlir::Operation::operand_range getODSOperands(unsigned index) { auto valueRange = getODSOperandIndexAndLength(index); return {std::next(getOperation()->operand_begin(), valueRange.first), std::next(getOperation()->operand_begin(), valueRange.first + valueRange.second)}; } ::mlir::TypedValue<::mlir::Type> getSrc() { return ::llvm::cast<::mlir::TypedValue<::mlir::Type>>(*getODSOperands(0).begin()); } ::mlir::OpOperand &getSrcMutable() { auto range = getODSOperandIndexAndLength(0); return getOperation()->getOpOperand(range.first); } std::pair getODSResultIndexAndLength(unsigned index) { return {index, 1}; } ::mlir::Operation::result_range getODSResults(unsigned index) { auto valueRange = getODSResultIndexAndLength(index); return {std::next(getOperation()->result_begin(), valueRange.first), std::next(getOperation()->result_begin(), valueRange.first + valueRange.second)}; } ::mlir::TypedValue<::mlir::Type> getRes() { return ::llvm::cast<::mlir::TypedValue<::mlir::Type>>(*getODSResults(0).begin()); } static ::llvm::LogicalResult setPropertiesFromAttr(Properties &prop, ::mlir::Attribute attr, ::llvm::function_ref<::mlir::InFlightDiagnostic()> emitError); static ::mlir::Attribute getPropertiesAsAttr(::mlir::MLIRContext *ctx, const Properties &prop); static llvm::hash_code computePropertiesHash(const Properties &prop); static std::optional getInherentAttr(::mlir::MLIRContext *ctx, const Properties &prop, llvm::StringRef name); static void setInherentAttr(Properties &prop, llvm::StringRef name, mlir::Attribute value); static void populateInherentAttrs(::mlir::MLIRContext *ctx, const Properties &prop, ::mlir::NamedAttrList &attrs); static ::llvm::LogicalResult verifyInherentAttrs(::mlir::OperationName opName, ::mlir::NamedAttrList &attrs, llvm::function_ref<::mlir::InFlightDiagnostic()> emitError); static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::Type res, ::mlir::Value src); static ReadfirstlaneOp create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::Type res, ::mlir::Value src); static ReadfirstlaneOp create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::Type res, ::mlir::Value src); static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::Value src); static ReadfirstlaneOp create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::Value src); static ReadfirstlaneOp create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::Value src); static void build(::mlir::OpBuilder &, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, ::llvm::ArrayRef<::mlir::NamedAttribute> attributes = {}); static ReadfirstlaneOp create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, ::llvm::ArrayRef<::mlir::NamedAttribute> attributes = {}); static ReadfirstlaneOp create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, ::llvm::ArrayRef<::mlir::NamedAttribute> attributes = {}); static void build(::mlir::OpBuilder &, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, const Properties &properties, ::llvm::ArrayRef<::mlir::NamedAttribute> discardableAttributes = {}); static ReadfirstlaneOp create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, const Properties &properties, ::llvm::ArrayRef<::mlir::NamedAttribute> discardableAttributes = {}); static ReadfirstlaneOp create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, const Properties &properties, ::llvm::ArrayRef<::mlir::NamedAttribute> discardableAttributes = {}); ::llvm::LogicalResult verifyInvariantsImpl(); ::llvm::LogicalResult verifyInvariants(); static ::mlir::ParseResult parse(::mlir::OpAsmParser &parser, ::mlir::OperationState &result); void print(::mlir::OpAsmPrinter &_odsPrinter); public: }; } // namespace mlir::ROCDL MLIR_DECLARE_EXPLICIT_TYPE_ID(::mlir::ROCDL::ReadfirstlaneOp) namespace mlir::ROCDL { //===----------------------------------------------------------------------===// // ::mlir::ROCDL::ReadlaneOp declarations //===----------------------------------------------------------------------===// namespace detail { class ReadlaneOpGenericAdaptorBase { public: using Properties = ::mlir::EmptyProperties; protected: ::mlir::DictionaryAttr odsAttrs; ::std::optional<::mlir::OperationName> odsOpName; Properties properties; ::mlir::RegionRange odsRegions; public: ReadlaneOpGenericAdaptorBase(::mlir::DictionaryAttr attrs, const Properties &properties, ::mlir::RegionRange regions = {}) : odsAttrs(attrs), properties(properties), odsRegions(regions) { if (odsAttrs) odsOpName.emplace("rocdl.readlane", odsAttrs.getContext()); } ReadlaneOpGenericAdaptorBase(ReadlaneOp op); std::pair getODSOperandIndexAndLength(unsigned index, unsigned odsOperandsSize) { return {index, 1}; } const Properties &getProperties() { return properties; } ::mlir::DictionaryAttr getAttributes() { return odsAttrs; } }; } // namespace detail template class ReadlaneOpGenericAdaptor : public detail::ReadlaneOpGenericAdaptorBase { using ValueT = ::llvm::detail::ValueOfRange; using Base = detail::ReadlaneOpGenericAdaptorBase; static constexpr int odsIndex_src0 = 0; static constexpr int odsIndex_src1 = 1; public: ReadlaneOpGenericAdaptor(RangeT values, ::mlir::DictionaryAttr attrs, const Properties &properties, ::mlir::RegionRange regions = {}) : Base(attrs, properties, regions), odsOperands(values) {} ReadlaneOpGenericAdaptor(RangeT values, ::mlir::DictionaryAttr attrs, ::mlir::PropertyRef properties, ::mlir::RegionRange regions = {}) : ReadlaneOpGenericAdaptor(values, attrs, (properties ? *properties.as() : Properties{}), regions) {} ReadlaneOpGenericAdaptor(RangeT values, ::mlir::DictionaryAttr attrs = nullptr) : ReadlaneOpGenericAdaptor(values, attrs, Properties{}, {}) {} ReadlaneOpGenericAdaptor(RangeT values, const ReadlaneOpGenericAdaptorBase &base) : Base(base), odsOperands(values) {} template >> ReadlaneOpGenericAdaptor(RangeT values, LateInst op) : Base(op), odsOperands(values) {} std::pair getODSOperandIndexAndLength(unsigned index) { return Base::getODSOperandIndexAndLength(index, odsOperands.size()); } RangeT getODSOperands(unsigned index) { auto valueRange = getODSOperandIndexAndLength(index); return {std::next(odsOperands.begin(), valueRange.first), std::next(odsOperands.begin(), valueRange.first + valueRange.second)}; } ValueT getSrc0() { return (*getODSOperands(0).begin()); } ValueT getSrc1() { return (*getODSOperands(1).begin()); } RangeT getOperands() { return odsOperands; } private: RangeT odsOperands; }; class ReadlaneOpAdaptor : public ReadlaneOpGenericAdaptor<::mlir::ValueRange> { public: using ReadlaneOpGenericAdaptor::ReadlaneOpGenericAdaptor; ReadlaneOpAdaptor(ReadlaneOp op); ::llvm::LogicalResult verify(::mlir::Location loc); }; class ReadlaneOp : public ::mlir::Op::Impl, ::mlir::OpTrait::ZeroSuccessors, ::mlir::OpTrait::NOperands<2>::Impl, ::mlir::OpTrait::OpInvariants> { public: using Op::Op; using Op::print; using Adaptor = ReadlaneOpAdaptor; template using GenericAdaptor = ReadlaneOpGenericAdaptor; using FoldAdaptor = GenericAdaptor<::llvm::ArrayRef<::mlir::Attribute>>; static constexpr int odsIndex_src0 = 0; static constexpr int odsIndex_src1 = 1; using Properties = FoldAdaptor::Properties; static ::llvm::ArrayRef<::llvm::StringRef> getAttributeNames() { return {}; } static constexpr ::llvm::StringLiteral getOperationName() { return ::llvm::StringLiteral("rocdl.readlane"); } std::pair getODSOperandIndexAndLength(unsigned index) { return {index, 1}; } ::mlir::Operation::operand_range getODSOperands(unsigned index) { auto valueRange = getODSOperandIndexAndLength(index); return {std::next(getOperation()->operand_begin(), valueRange.first), std::next(getOperation()->operand_begin(), valueRange.first + valueRange.second)}; } ::mlir::TypedValue<::mlir::Type> getSrc0() { return ::llvm::cast<::mlir::TypedValue<::mlir::Type>>(*getODSOperands(0).begin()); } ::mlir::TypedValue<::mlir::IntegerType> getSrc1() { return ::llvm::cast<::mlir::TypedValue<::mlir::IntegerType>>(*getODSOperands(1).begin()); } ::mlir::OpOperand &getSrc0Mutable() { auto range = getODSOperandIndexAndLength(0); return getOperation()->getOpOperand(range.first); } ::mlir::OpOperand &getSrc1Mutable() { auto range = getODSOperandIndexAndLength(1); return getOperation()->getOpOperand(range.first); } std::pair getODSResultIndexAndLength(unsigned index) { return {index, 1}; } ::mlir::Operation::result_range getODSResults(unsigned index) { auto valueRange = getODSResultIndexAndLength(index); return {std::next(getOperation()->result_begin(), valueRange.first), std::next(getOperation()->result_begin(), valueRange.first + valueRange.second)}; } ::mlir::TypedValue<::mlir::Type> getRes() { return ::llvm::cast<::mlir::TypedValue<::mlir::Type>>(*getODSResults(0).begin()); } static ::llvm::LogicalResult setPropertiesFromAttr(Properties &prop, ::mlir::Attribute attr, ::llvm::function_ref<::mlir::InFlightDiagnostic()> emitError); static ::mlir::Attribute getPropertiesAsAttr(::mlir::MLIRContext *ctx, const Properties &prop); static llvm::hash_code computePropertiesHash(const Properties &prop); static std::optional getInherentAttr(::mlir::MLIRContext *ctx, const Properties &prop, llvm::StringRef name); static void setInherentAttr(Properties &prop, llvm::StringRef name, mlir::Attribute value); static void populateInherentAttrs(::mlir::MLIRContext *ctx, const Properties &prop, ::mlir::NamedAttrList &attrs); static ::llvm::LogicalResult verifyInherentAttrs(::mlir::OperationName opName, ::mlir::NamedAttrList &attrs, llvm::function_ref<::mlir::InFlightDiagnostic()> emitError); static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::Type res, ::mlir::Value src0, ::mlir::Value src1); static ReadlaneOp create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::Type res, ::mlir::Value src0, ::mlir::Value src1); static ReadlaneOp create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::Type res, ::mlir::Value src0, ::mlir::Value src1); static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::Value src0, ::mlir::Value src1); static ReadlaneOp create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::Value src0, ::mlir::Value src1); static ReadlaneOp create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::Value src0, ::mlir::Value src1); static void build(::mlir::OpBuilder &, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, ::llvm::ArrayRef<::mlir::NamedAttribute> attributes = {}); static ReadlaneOp create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, ::llvm::ArrayRef<::mlir::NamedAttribute> attributes = {}); static ReadlaneOp create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, ::llvm::ArrayRef<::mlir::NamedAttribute> attributes = {}); static void build(::mlir::OpBuilder &, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, const Properties &properties, ::llvm::ArrayRef<::mlir::NamedAttribute> discardableAttributes = {}); static ReadlaneOp create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, const Properties &properties, ::llvm::ArrayRef<::mlir::NamedAttribute> discardableAttributes = {}); static ReadlaneOp create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, const Properties &properties, ::llvm::ArrayRef<::mlir::NamedAttribute> discardableAttributes = {}); ::llvm::LogicalResult verifyInvariantsImpl(); ::llvm::LogicalResult verifyInvariants(); static ::mlir::ParseResult parse(::mlir::OpAsmParser &parser, ::mlir::OperationState &result); void print(::mlir::OpAsmPrinter &_odsPrinter); public: }; } // namespace mlir::ROCDL MLIR_DECLARE_EXPLICIT_TYPE_ID(::mlir::ROCDL::ReadlaneOp) namespace mlir::ROCDL { //===----------------------------------------------------------------------===// // ::mlir::ROCDL::SBarrierOp declarations //===----------------------------------------------------------------------===// namespace detail { class SBarrierOpGenericAdaptorBase { public: using Properties = ::mlir::EmptyProperties; protected: ::mlir::DictionaryAttr odsAttrs; ::std::optional<::mlir::OperationName> odsOpName; Properties properties; ::mlir::RegionRange odsRegions; public: SBarrierOpGenericAdaptorBase(::mlir::DictionaryAttr attrs, const Properties &properties, ::mlir::RegionRange regions = {}) : odsAttrs(attrs), properties(properties), odsRegions(regions) { if (odsAttrs) odsOpName.emplace("rocdl.s.barrier", odsAttrs.getContext()); } SBarrierOpGenericAdaptorBase(SBarrierOp op); std::pair getODSOperandIndexAndLength(unsigned index, unsigned odsOperandsSize) { return {index, 1}; } const Properties &getProperties() { return properties; } ::mlir::DictionaryAttr getAttributes() { return odsAttrs; } }; } // namespace detail template class SBarrierOpGenericAdaptor : public detail::SBarrierOpGenericAdaptorBase { using ValueT = ::llvm::detail::ValueOfRange; using Base = detail::SBarrierOpGenericAdaptorBase; public: SBarrierOpGenericAdaptor(RangeT values, ::mlir::DictionaryAttr attrs, const Properties &properties, ::mlir::RegionRange regions = {}) : Base(attrs, properties, regions), odsOperands(values) {} SBarrierOpGenericAdaptor(RangeT values, ::mlir::DictionaryAttr attrs, ::mlir::PropertyRef properties, ::mlir::RegionRange regions = {}) : SBarrierOpGenericAdaptor(values, attrs, (properties ? *properties.as() : Properties{}), regions) {} SBarrierOpGenericAdaptor(RangeT values, ::mlir::DictionaryAttr attrs = nullptr) : SBarrierOpGenericAdaptor(values, attrs, Properties{}, {}) {} SBarrierOpGenericAdaptor(RangeT values, const SBarrierOpGenericAdaptorBase &base) : Base(base), odsOperands(values) {} template >> SBarrierOpGenericAdaptor(RangeT values, LateInst op) : Base(op), odsOperands(values) {} std::pair getODSOperandIndexAndLength(unsigned index) { return Base::getODSOperandIndexAndLength(index, odsOperands.size()); } RangeT getODSOperands(unsigned index) { auto valueRange = getODSOperandIndexAndLength(index); return {std::next(odsOperands.begin(), valueRange.first), std::next(odsOperands.begin(), valueRange.first + valueRange.second)}; } RangeT getOperands() { return odsOperands; } private: RangeT odsOperands; }; class SBarrierOpAdaptor : public SBarrierOpGenericAdaptor<::mlir::ValueRange> { public: using SBarrierOpGenericAdaptor::SBarrierOpGenericAdaptor; SBarrierOpAdaptor(SBarrierOp op); ::llvm::LogicalResult verify(::mlir::Location loc); }; class SBarrierOp : public ::mlir::Op { public: using Op::Op; using Op::print; using Adaptor = SBarrierOpAdaptor; template using GenericAdaptor = SBarrierOpGenericAdaptor; using FoldAdaptor = GenericAdaptor<::llvm::ArrayRef<::mlir::Attribute>>; using Properties = FoldAdaptor::Properties; static ::llvm::ArrayRef<::llvm::StringRef> getAttributeNames() { return {}; } static constexpr ::llvm::StringLiteral getOperationName() { return ::llvm::StringLiteral("rocdl.s.barrier"); } std::pair getODSOperandIndexAndLength(unsigned index) { return {index, 1}; } ::mlir::Operation::operand_range getODSOperands(unsigned index) { auto valueRange = getODSOperandIndexAndLength(index); return {std::next(getOperation()->operand_begin(), valueRange.first), std::next(getOperation()->operand_begin(), valueRange.first + valueRange.second)}; } std::pair getODSResultIndexAndLength(unsigned index) { return {index, 1}; } ::mlir::Operation::result_range getODSResults(unsigned index) { auto valueRange = getODSResultIndexAndLength(index); return {std::next(getOperation()->result_begin(), valueRange.first), std::next(getOperation()->result_begin(), valueRange.first + valueRange.second)}; } static ::llvm::LogicalResult setPropertiesFromAttr(Properties &prop, ::mlir::Attribute attr, ::llvm::function_ref<::mlir::InFlightDiagnostic()> emitError); static ::mlir::Attribute getPropertiesAsAttr(::mlir::MLIRContext *ctx, const Properties &prop); static llvm::hash_code computePropertiesHash(const Properties &prop); static std::optional getInherentAttr(::mlir::MLIRContext *ctx, const Properties &prop, llvm::StringRef name); static void setInherentAttr(Properties &prop, llvm::StringRef name, mlir::Attribute value); static void populateInherentAttrs(::mlir::MLIRContext *ctx, const Properties &prop, ::mlir::NamedAttrList &attrs); static ::llvm::LogicalResult verifyInherentAttrs(::mlir::OperationName opName, ::mlir::NamedAttrList &attrs, llvm::function_ref<::mlir::InFlightDiagnostic()> emitError); static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState); static SBarrierOp create(::mlir::OpBuilder &builder, ::mlir::Location location); static SBarrierOp create(::mlir::ImplicitLocOpBuilder &builder); static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes); static SBarrierOp create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes); static SBarrierOp create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes); static void build(::mlir::OpBuilder &, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, ::llvm::ArrayRef<::mlir::NamedAttribute> attributes = {}); static SBarrierOp create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, ::llvm::ArrayRef<::mlir::NamedAttribute> attributes = {}); static SBarrierOp create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, ::llvm::ArrayRef<::mlir::NamedAttribute> attributes = {}); static void build(::mlir::OpBuilder &, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, const Properties &properties, ::llvm::ArrayRef<::mlir::NamedAttribute> discardableAttributes = {}); static SBarrierOp create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, const Properties &properties, ::llvm::ArrayRef<::mlir::NamedAttribute> discardableAttributes = {}); static SBarrierOp create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, const Properties &properties, ::llvm::ArrayRef<::mlir::NamedAttribute> discardableAttributes = {}); ::llvm::LogicalResult verifyInvariantsImpl(); ::llvm::LogicalResult verifyInvariants(); static ::mlir::ParseResult parse(::mlir::OpAsmParser &parser, ::mlir::OperationState &result); void print(::mlir::OpAsmPrinter &_odsPrinter); public: }; } // namespace mlir::ROCDL MLIR_DECLARE_EXPLICIT_TYPE_ID(::mlir::ROCDL::SBarrierOp) namespace mlir::ROCDL { //===----------------------------------------------------------------------===// // ::mlir::ROCDL::SNopOp declarations //===----------------------------------------------------------------------===// namespace detail { class SNopOpGenericAdaptorBase { public: struct Properties { using countTy = ::mlir::IntegerAttr; countTy count; auto getCount() const { auto &propStorage = this->count; return ::llvm::cast<::mlir::IntegerAttr>(propStorage); } void setCount(const ::mlir::IntegerAttr &propValue) { this->count = propValue; } bool operator==(const Properties &rhs) const { return rhs.count == this->count && true; } bool operator!=(const Properties &rhs) const { return !(*this == rhs); } }; protected: ::mlir::DictionaryAttr odsAttrs; ::std::optional<::mlir::OperationName> odsOpName; Properties properties; ::mlir::RegionRange odsRegions; public: SNopOpGenericAdaptorBase(::mlir::DictionaryAttr attrs, const Properties &properties, ::mlir::RegionRange regions = {}) : odsAttrs(attrs), properties(properties), odsRegions(regions) { if (odsAttrs) odsOpName.emplace("rocdl.s.nop", odsAttrs.getContext()); } SNopOpGenericAdaptorBase(SNopOp op); std::pair getODSOperandIndexAndLength(unsigned index, unsigned odsOperandsSize) { return {index, 1}; } const Properties &getProperties() { return properties; } ::mlir::DictionaryAttr getAttributes() { return odsAttrs; } ::mlir::IntegerAttr getCountAttr() { auto attr = ::llvm::cast<::mlir::IntegerAttr>(getProperties().count); return attr; } uint16_t getCount(); }; } // namespace detail template class SNopOpGenericAdaptor : public detail::SNopOpGenericAdaptorBase { using ValueT = ::llvm::detail::ValueOfRange; using Base = detail::SNopOpGenericAdaptorBase; public: SNopOpGenericAdaptor(RangeT values, ::mlir::DictionaryAttr attrs, const Properties &properties, ::mlir::RegionRange regions = {}) : Base(attrs, properties, regions), odsOperands(values) {} SNopOpGenericAdaptor(RangeT values, ::mlir::DictionaryAttr attrs, ::mlir::PropertyRef properties, ::mlir::RegionRange regions = {}) : SNopOpGenericAdaptor(values, attrs, (properties ? *properties.as() : Properties{}), regions) {} SNopOpGenericAdaptor(RangeT values, ::mlir::DictionaryAttr attrs = nullptr) : SNopOpGenericAdaptor(values, attrs, Properties{}, {}) {} SNopOpGenericAdaptor(RangeT values, const SNopOpGenericAdaptorBase &base) : Base(base), odsOperands(values) {} template >> SNopOpGenericAdaptor(RangeT values, LateInst op) : Base(op), odsOperands(values) {} std::pair getODSOperandIndexAndLength(unsigned index) { return Base::getODSOperandIndexAndLength(index, odsOperands.size()); } RangeT getODSOperands(unsigned index) { auto valueRange = getODSOperandIndexAndLength(index); return {std::next(odsOperands.begin(), valueRange.first), std::next(odsOperands.begin(), valueRange.first + valueRange.second)}; } RangeT getOperands() { return odsOperands; } private: RangeT odsOperands; }; class SNopOpAdaptor : public SNopOpGenericAdaptor<::mlir::ValueRange> { public: using SNopOpGenericAdaptor::SNopOpGenericAdaptor; SNopOpAdaptor(SNopOp op); ::llvm::LogicalResult verify(::mlir::Location loc); }; class SNopOp : public ::mlir::Op { public: using Op::Op; using Op::print; using Adaptor = SNopOpAdaptor; template using GenericAdaptor = SNopOpGenericAdaptor; using FoldAdaptor = GenericAdaptor<::llvm::ArrayRef<::mlir::Attribute>>; using Properties = FoldAdaptor::Properties; static ::llvm::ArrayRef<::llvm::StringRef> getAttributeNames() { static ::llvm::StringRef attrNames[] = {::llvm::StringRef("count")}; return ::llvm::ArrayRef(attrNames); } ::mlir::StringAttr getCountAttrName() { return getAttributeNameForIndex(0); } static ::mlir::StringAttr getCountAttrName(::mlir::OperationName name) { return getAttributeNameForIndex(name, 0); } static constexpr ::llvm::StringLiteral getOperationName() { return ::llvm::StringLiteral("rocdl.s.nop"); } std::pair getODSOperandIndexAndLength(unsigned index) { return {index, 1}; } ::mlir::Operation::operand_range getODSOperands(unsigned index) { auto valueRange = getODSOperandIndexAndLength(index); return {std::next(getOperation()->operand_begin(), valueRange.first), std::next(getOperation()->operand_begin(), valueRange.first + valueRange.second)}; } std::pair getODSResultIndexAndLength(unsigned index) { return {index, 1}; } ::mlir::Operation::result_range getODSResults(unsigned index) { auto valueRange = getODSResultIndexAndLength(index); return {std::next(getOperation()->result_begin(), valueRange.first), std::next(getOperation()->result_begin(), valueRange.first + valueRange.second)}; } static ::llvm::LogicalResult setPropertiesFromAttr(Properties &prop, ::mlir::Attribute attr, ::llvm::function_ref<::mlir::InFlightDiagnostic()> emitError); static ::mlir::Attribute getPropertiesAsAttr(::mlir::MLIRContext *ctx, const Properties &prop); static llvm::hash_code computePropertiesHash(const Properties &prop); static std::optional getInherentAttr(::mlir::MLIRContext *ctx, const Properties &prop, llvm::StringRef name); static void setInherentAttr(Properties &prop, llvm::StringRef name, mlir::Attribute value); static void populateInherentAttrs(::mlir::MLIRContext *ctx, const Properties &prop, ::mlir::NamedAttrList &attrs); static ::llvm::LogicalResult verifyInherentAttrs(::mlir::OperationName opName, ::mlir::NamedAttrList &attrs, llvm::function_ref<::mlir::InFlightDiagnostic()> emitError); static ::llvm::LogicalResult readProperties(::mlir::DialectBytecodeReader &reader, ::mlir::OperationState &state); void writeProperties(::mlir::DialectBytecodeWriter &writer); ::mlir::IntegerAttr getCountAttr() { return ::llvm::cast<::mlir::IntegerAttr>(getProperties().count); } uint16_t getCount(); void setCountAttr(::mlir::IntegerAttr attr) { getProperties().count = attr; } void setCount(uint16_t attrValue); static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::IntegerAttr count); static SNopOp create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::IntegerAttr count); static SNopOp create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::IntegerAttr count); static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::IntegerAttr count); static SNopOp create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::IntegerAttr count); static SNopOp create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::IntegerAttr count); static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, uint16_t count); static SNopOp create(::mlir::OpBuilder &builder, ::mlir::Location location, uint16_t count); static SNopOp create(::mlir::ImplicitLocOpBuilder &builder, uint16_t count); static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, uint16_t count); static SNopOp create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, uint16_t count); static SNopOp create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, uint16_t count); static void build(::mlir::OpBuilder &, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, ::llvm::ArrayRef<::mlir::NamedAttribute> attributes = {}); static SNopOp create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, ::llvm::ArrayRef<::mlir::NamedAttribute> attributes = {}); static SNopOp create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, ::llvm::ArrayRef<::mlir::NamedAttribute> attributes = {}); static void build(::mlir::OpBuilder &, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, const Properties &properties, ::llvm::ArrayRef<::mlir::NamedAttribute> discardableAttributes = {}); static SNopOp create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, const Properties &properties, ::llvm::ArrayRef<::mlir::NamedAttribute> discardableAttributes = {}); static SNopOp create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, const Properties &properties, ::llvm::ArrayRef<::mlir::NamedAttribute> discardableAttributes = {}); ::llvm::LogicalResult verifyInvariantsImpl(); ::llvm::LogicalResult verifyInvariants(); static ::mlir::ParseResult parse(::mlir::OpAsmParser &parser, ::mlir::OperationState &result); void print(::mlir::OpAsmPrinter &_odsPrinter); private: ::mlir::StringAttr getAttributeNameForIndex(unsigned index) { return getAttributeNameForIndex((*this)->getName(), index); } static ::mlir::StringAttr getAttributeNameForIndex(::mlir::OperationName name, unsigned index) { assert(index < 1 && "invalid attribute index"); assert(name.getStringRef() == getOperationName() && "invalid operation name"); assert(name.isRegistered() && "Operation isn't registered, missing a " "dependent dialect loading?"); return name.getAttributeNames()[index]; } public: }; } // namespace mlir::ROCDL MLIR_DECLARE_EXPLICIT_TYPE_ID(::mlir::ROCDL::SNopOp) MLIR_DECLARE_EXPLICIT_TYPE_ID(::mlir::ROCDL::detail::SNopOpGenericAdaptorBase::Properties) namespace mlir::ROCDL { //===----------------------------------------------------------------------===// // ::mlir::ROCDL::SSleepOp declarations //===----------------------------------------------------------------------===// namespace detail { class SSleepOpGenericAdaptorBase { public: struct Properties { using countTy = ::mlir::IntegerAttr; countTy count; auto getCount() const { auto &propStorage = this->count; return ::llvm::cast<::mlir::IntegerAttr>(propStorage); } void setCount(const ::mlir::IntegerAttr &propValue) { this->count = propValue; } bool operator==(const Properties &rhs) const { return rhs.count == this->count && true; } bool operator!=(const Properties &rhs) const { return !(*this == rhs); } }; protected: ::mlir::DictionaryAttr odsAttrs; ::std::optional<::mlir::OperationName> odsOpName; Properties properties; ::mlir::RegionRange odsRegions; public: SSleepOpGenericAdaptorBase(::mlir::DictionaryAttr attrs, const Properties &properties, ::mlir::RegionRange regions = {}) : odsAttrs(attrs), properties(properties), odsRegions(regions) { if (odsAttrs) odsOpName.emplace("rocdl.s.sleep", odsAttrs.getContext()); } SSleepOpGenericAdaptorBase(SSleepOp op); std::pair getODSOperandIndexAndLength(unsigned index, unsigned odsOperandsSize) { return {index, 1}; } const Properties &getProperties() { return properties; } ::mlir::DictionaryAttr getAttributes() { return odsAttrs; } ::mlir::IntegerAttr getCountAttr() { auto attr = ::llvm::cast<::mlir::IntegerAttr>(getProperties().count); return attr; } uint32_t getCount(); }; } // namespace detail template class SSleepOpGenericAdaptor : public detail::SSleepOpGenericAdaptorBase { using ValueT = ::llvm::detail::ValueOfRange; using Base = detail::SSleepOpGenericAdaptorBase; public: SSleepOpGenericAdaptor(RangeT values, ::mlir::DictionaryAttr attrs, const Properties &properties, ::mlir::RegionRange regions = {}) : Base(attrs, properties, regions), odsOperands(values) {} SSleepOpGenericAdaptor(RangeT values, ::mlir::DictionaryAttr attrs, ::mlir::PropertyRef properties, ::mlir::RegionRange regions = {}) : SSleepOpGenericAdaptor(values, attrs, (properties ? *properties.as() : Properties{}), regions) {} SSleepOpGenericAdaptor(RangeT values, ::mlir::DictionaryAttr attrs = nullptr) : SSleepOpGenericAdaptor(values, attrs, Properties{}, {}) {} SSleepOpGenericAdaptor(RangeT values, const SSleepOpGenericAdaptorBase &base) : Base(base), odsOperands(values) {} template >> SSleepOpGenericAdaptor(RangeT values, LateInst op) : Base(op), odsOperands(values) {} std::pair getODSOperandIndexAndLength(unsigned index) { return Base::getODSOperandIndexAndLength(index, odsOperands.size()); } RangeT getODSOperands(unsigned index) { auto valueRange = getODSOperandIndexAndLength(index); return {std::next(odsOperands.begin(), valueRange.first), std::next(odsOperands.begin(), valueRange.first + valueRange.second)}; } RangeT getOperands() { return odsOperands; } private: RangeT odsOperands; }; class SSleepOpAdaptor : public SSleepOpGenericAdaptor<::mlir::ValueRange> { public: using SSleepOpGenericAdaptor::SSleepOpGenericAdaptor; SSleepOpAdaptor(SSleepOp op); ::llvm::LogicalResult verify(::mlir::Location loc); }; class SSleepOp : public ::mlir::Op { public: using Op::Op; using Op::print; using Adaptor = SSleepOpAdaptor; template using GenericAdaptor = SSleepOpGenericAdaptor; using FoldAdaptor = GenericAdaptor<::llvm::ArrayRef<::mlir::Attribute>>; using Properties = FoldAdaptor::Properties; static ::llvm::ArrayRef<::llvm::StringRef> getAttributeNames() { static ::llvm::StringRef attrNames[] = {::llvm::StringRef("count")}; return ::llvm::ArrayRef(attrNames); } ::mlir::StringAttr getCountAttrName() { return getAttributeNameForIndex(0); } static ::mlir::StringAttr getCountAttrName(::mlir::OperationName name) { return getAttributeNameForIndex(name, 0); } static constexpr ::llvm::StringLiteral getOperationName() { return ::llvm::StringLiteral("rocdl.s.sleep"); } std::pair getODSOperandIndexAndLength(unsigned index) { return {index, 1}; } ::mlir::Operation::operand_range getODSOperands(unsigned index) { auto valueRange = getODSOperandIndexAndLength(index); return {std::next(getOperation()->operand_begin(), valueRange.first), std::next(getOperation()->operand_begin(), valueRange.first + valueRange.second)}; } std::pair getODSResultIndexAndLength(unsigned index) { return {index, 1}; } ::mlir::Operation::result_range getODSResults(unsigned index) { auto valueRange = getODSResultIndexAndLength(index); return {std::next(getOperation()->result_begin(), valueRange.first), std::next(getOperation()->result_begin(), valueRange.first + valueRange.second)}; } static ::llvm::LogicalResult setPropertiesFromAttr(Properties &prop, ::mlir::Attribute attr, ::llvm::function_ref<::mlir::InFlightDiagnostic()> emitError); static ::mlir::Attribute getPropertiesAsAttr(::mlir::MLIRContext *ctx, const Properties &prop); static llvm::hash_code computePropertiesHash(const Properties &prop); static std::optional getInherentAttr(::mlir::MLIRContext *ctx, const Properties &prop, llvm::StringRef name); static void setInherentAttr(Properties &prop, llvm::StringRef name, mlir::Attribute value); static void populateInherentAttrs(::mlir::MLIRContext *ctx, const Properties &prop, ::mlir::NamedAttrList &attrs); static ::llvm::LogicalResult verifyInherentAttrs(::mlir::OperationName opName, ::mlir::NamedAttrList &attrs, llvm::function_ref<::mlir::InFlightDiagnostic()> emitError); static ::llvm::LogicalResult readProperties(::mlir::DialectBytecodeReader &reader, ::mlir::OperationState &state); void writeProperties(::mlir::DialectBytecodeWriter &writer); ::mlir::IntegerAttr getCountAttr() { return ::llvm::cast<::mlir::IntegerAttr>(getProperties().count); } uint32_t getCount(); void setCountAttr(::mlir::IntegerAttr attr) { getProperties().count = attr; } void setCount(uint32_t attrValue); static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::IntegerAttr count); static SSleepOp create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::IntegerAttr count); static SSleepOp create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::IntegerAttr count); static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::IntegerAttr count); static SSleepOp create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::IntegerAttr count); static SSleepOp create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::IntegerAttr count); static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, uint32_t count); static SSleepOp create(::mlir::OpBuilder &builder, ::mlir::Location location, uint32_t count); static SSleepOp create(::mlir::ImplicitLocOpBuilder &builder, uint32_t count); static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, uint32_t count); static SSleepOp create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, uint32_t count); static SSleepOp create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, uint32_t count); static void build(::mlir::OpBuilder &, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, ::llvm::ArrayRef<::mlir::NamedAttribute> attributes = {}); static SSleepOp create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, ::llvm::ArrayRef<::mlir::NamedAttribute> attributes = {}); static SSleepOp create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, ::llvm::ArrayRef<::mlir::NamedAttribute> attributes = {}); static void build(::mlir::OpBuilder &, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, const Properties &properties, ::llvm::ArrayRef<::mlir::NamedAttribute> discardableAttributes = {}); static SSleepOp create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, const Properties &properties, ::llvm::ArrayRef<::mlir::NamedAttribute> discardableAttributes = {}); static SSleepOp create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, const Properties &properties, ::llvm::ArrayRef<::mlir::NamedAttribute> discardableAttributes = {}); ::llvm::LogicalResult verifyInvariantsImpl(); ::llvm::LogicalResult verifyInvariants(); static ::mlir::ParseResult parse(::mlir::OpAsmParser &parser, ::mlir::OperationState &result); void print(::mlir::OpAsmPrinter &_odsPrinter); private: ::mlir::StringAttr getAttributeNameForIndex(unsigned index) { return getAttributeNameForIndex((*this)->getName(), index); } static ::mlir::StringAttr getAttributeNameForIndex(::mlir::OperationName name, unsigned index) { assert(index < 1 && "invalid attribute index"); assert(name.getStringRef() == getOperationName() && "invalid operation name"); assert(name.isRegistered() && "Operation isn't registered, missing a " "dependent dialect loading?"); return name.getAttributeNames()[index]; } public: }; } // namespace mlir::ROCDL MLIR_DECLARE_EXPLICIT_TYPE_ID(::mlir::ROCDL::SSleepOp) MLIR_DECLARE_EXPLICIT_TYPE_ID(::mlir::ROCDL::detail::SSleepOpGenericAdaptorBase::Properties) namespace mlir::ROCDL { //===----------------------------------------------------------------------===// // ::mlir::ROCDL::SWaitcntOp declarations //===----------------------------------------------------------------------===// namespace detail { class SWaitcntOpGenericAdaptorBase { public: struct Properties { using bitfieldTy = ::mlir::IntegerAttr; bitfieldTy bitfield; auto getBitfield() const { auto &propStorage = this->bitfield; return ::llvm::cast<::mlir::IntegerAttr>(propStorage); } void setBitfield(const ::mlir::IntegerAttr &propValue) { this->bitfield = propValue; } bool operator==(const Properties &rhs) const { return rhs.bitfield == this->bitfield && true; } bool operator!=(const Properties &rhs) const { return !(*this == rhs); } }; protected: ::mlir::DictionaryAttr odsAttrs; ::std::optional<::mlir::OperationName> odsOpName; Properties properties; ::mlir::RegionRange odsRegions; public: SWaitcntOpGenericAdaptorBase(::mlir::DictionaryAttr attrs, const Properties &properties, ::mlir::RegionRange regions = {}) : odsAttrs(attrs), properties(properties), odsRegions(regions) { if (odsAttrs) odsOpName.emplace("rocdl.s.waitcnt", odsAttrs.getContext()); } SWaitcntOpGenericAdaptorBase(SWaitcntOp op); std::pair getODSOperandIndexAndLength(unsigned index, unsigned odsOperandsSize) { return {index, 1}; } const Properties &getProperties() { return properties; } ::mlir::DictionaryAttr getAttributes() { return odsAttrs; } ::mlir::IntegerAttr getBitfieldAttr() { auto attr = ::llvm::cast<::mlir::IntegerAttr>(getProperties().bitfield); return attr; } uint32_t getBitfield(); }; } // namespace detail template class SWaitcntOpGenericAdaptor : public detail::SWaitcntOpGenericAdaptorBase { using ValueT = ::llvm::detail::ValueOfRange; using Base = detail::SWaitcntOpGenericAdaptorBase; public: SWaitcntOpGenericAdaptor(RangeT values, ::mlir::DictionaryAttr attrs, const Properties &properties, ::mlir::RegionRange regions = {}) : Base(attrs, properties, regions), odsOperands(values) {} SWaitcntOpGenericAdaptor(RangeT values, ::mlir::DictionaryAttr attrs, ::mlir::PropertyRef properties, ::mlir::RegionRange regions = {}) : SWaitcntOpGenericAdaptor(values, attrs, (properties ? *properties.as() : Properties{}), regions) {} SWaitcntOpGenericAdaptor(RangeT values, ::mlir::DictionaryAttr attrs = nullptr) : SWaitcntOpGenericAdaptor(values, attrs, Properties{}, {}) {} SWaitcntOpGenericAdaptor(RangeT values, const SWaitcntOpGenericAdaptorBase &base) : Base(base), odsOperands(values) {} template >> SWaitcntOpGenericAdaptor(RangeT values, LateInst op) : Base(op), odsOperands(values) {} std::pair getODSOperandIndexAndLength(unsigned index) { return Base::getODSOperandIndexAndLength(index, odsOperands.size()); } RangeT getODSOperands(unsigned index) { auto valueRange = getODSOperandIndexAndLength(index); return {std::next(odsOperands.begin(), valueRange.first), std::next(odsOperands.begin(), valueRange.first + valueRange.second)}; } RangeT getOperands() { return odsOperands; } private: RangeT odsOperands; }; class SWaitcntOpAdaptor : public SWaitcntOpGenericAdaptor<::mlir::ValueRange> { public: using SWaitcntOpGenericAdaptor::SWaitcntOpGenericAdaptor; SWaitcntOpAdaptor(SWaitcntOp op); ::llvm::LogicalResult verify(::mlir::Location loc); }; class SWaitcntOp : public ::mlir::Op { public: using Op::Op; using Op::print; using Adaptor = SWaitcntOpAdaptor; template using GenericAdaptor = SWaitcntOpGenericAdaptor; using FoldAdaptor = GenericAdaptor<::llvm::ArrayRef<::mlir::Attribute>>; using Properties = FoldAdaptor::Properties; static ::llvm::ArrayRef<::llvm::StringRef> getAttributeNames() { static ::llvm::StringRef attrNames[] = {::llvm::StringRef("bitfield")}; return ::llvm::ArrayRef(attrNames); } ::mlir::StringAttr getBitfieldAttrName() { return getAttributeNameForIndex(0); } static ::mlir::StringAttr getBitfieldAttrName(::mlir::OperationName name) { return getAttributeNameForIndex(name, 0); } static constexpr ::llvm::StringLiteral getOperationName() { return ::llvm::StringLiteral("rocdl.s.waitcnt"); } std::pair getODSOperandIndexAndLength(unsigned index) { return {index, 1}; } ::mlir::Operation::operand_range getODSOperands(unsigned index) { auto valueRange = getODSOperandIndexAndLength(index); return {std::next(getOperation()->operand_begin(), valueRange.first), std::next(getOperation()->operand_begin(), valueRange.first + valueRange.second)}; } std::pair getODSResultIndexAndLength(unsigned index) { return {index, 1}; } ::mlir::Operation::result_range getODSResults(unsigned index) { auto valueRange = getODSResultIndexAndLength(index); return {std::next(getOperation()->result_begin(), valueRange.first), std::next(getOperation()->result_begin(), valueRange.first + valueRange.second)}; } static ::llvm::LogicalResult setPropertiesFromAttr(Properties &prop, ::mlir::Attribute attr, ::llvm::function_ref<::mlir::InFlightDiagnostic()> emitError); static ::mlir::Attribute getPropertiesAsAttr(::mlir::MLIRContext *ctx, const Properties &prop); static llvm::hash_code computePropertiesHash(const Properties &prop); static std::optional getInherentAttr(::mlir::MLIRContext *ctx, const Properties &prop, llvm::StringRef name); static void setInherentAttr(Properties &prop, llvm::StringRef name, mlir::Attribute value); static void populateInherentAttrs(::mlir::MLIRContext *ctx, const Properties &prop, ::mlir::NamedAttrList &attrs); static ::llvm::LogicalResult verifyInherentAttrs(::mlir::OperationName opName, ::mlir::NamedAttrList &attrs, llvm::function_ref<::mlir::InFlightDiagnostic()> emitError); static ::llvm::LogicalResult readProperties(::mlir::DialectBytecodeReader &reader, ::mlir::OperationState &state); void writeProperties(::mlir::DialectBytecodeWriter &writer); ::mlir::IntegerAttr getBitfieldAttr() { return ::llvm::cast<::mlir::IntegerAttr>(getProperties().bitfield); } uint32_t getBitfield(); void setBitfieldAttr(::mlir::IntegerAttr attr) { getProperties().bitfield = attr; } void setBitfield(uint32_t attrValue); static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::IntegerAttr bitfield); static SWaitcntOp create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::IntegerAttr bitfield); static SWaitcntOp create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::IntegerAttr bitfield); static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::IntegerAttr bitfield); static SWaitcntOp create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::IntegerAttr bitfield); static SWaitcntOp create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::IntegerAttr bitfield); static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, uint32_t bitfield); static SWaitcntOp create(::mlir::OpBuilder &builder, ::mlir::Location location, uint32_t bitfield); static SWaitcntOp create(::mlir::ImplicitLocOpBuilder &builder, uint32_t bitfield); static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, uint32_t bitfield); static SWaitcntOp create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, uint32_t bitfield); static SWaitcntOp create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, uint32_t bitfield); static void build(::mlir::OpBuilder &, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, ::llvm::ArrayRef<::mlir::NamedAttribute> attributes = {}); static SWaitcntOp create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, ::llvm::ArrayRef<::mlir::NamedAttribute> attributes = {}); static SWaitcntOp create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, ::llvm::ArrayRef<::mlir::NamedAttribute> attributes = {}); static void build(::mlir::OpBuilder &, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, const Properties &properties, ::llvm::ArrayRef<::mlir::NamedAttribute> discardableAttributes = {}); static SWaitcntOp create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, const Properties &properties, ::llvm::ArrayRef<::mlir::NamedAttribute> discardableAttributes = {}); static SWaitcntOp create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, const Properties &properties, ::llvm::ArrayRef<::mlir::NamedAttribute> discardableAttributes = {}); ::llvm::LogicalResult verifyInvariantsImpl(); ::llvm::LogicalResult verifyInvariants(); static ::mlir::ParseResult parse(::mlir::OpAsmParser &parser, ::mlir::OperationState &result); void print(::mlir::OpAsmPrinter &_odsPrinter); private: ::mlir::StringAttr getAttributeNameForIndex(unsigned index) { return getAttributeNameForIndex((*this)->getName(), index); } static ::mlir::StringAttr getAttributeNameForIndex(::mlir::OperationName name, unsigned index) { assert(index < 1 && "invalid attribute index"); assert(name.getStringRef() == getOperationName() && "invalid operation name"); assert(name.isRegistered() && "Operation isn't registered, missing a " "dependent dialect loading?"); return name.getAttributeNames()[index]; } public: }; } // namespace mlir::ROCDL MLIR_DECLARE_EXPLICIT_TYPE_ID(::mlir::ROCDL::SWaitcntOp) MLIR_DECLARE_EXPLICIT_TYPE_ID(::mlir::ROCDL::detail::SWaitcntOpGenericAdaptorBase::Properties) namespace mlir::ROCDL { //===----------------------------------------------------------------------===// // ::mlir::ROCDL::SchedBarrier declarations //===----------------------------------------------------------------------===// namespace detail { class SchedBarrierGenericAdaptorBase { public: struct Properties { using maskTy = ::mlir::ROCDL::SchedGroupMaskAttr; maskTy mask; auto getMask() const { auto &propStorage = this->mask; return ::llvm::cast<::mlir::ROCDL::SchedGroupMaskAttr>(propStorage); } void setMask(const ::mlir::ROCDL::SchedGroupMaskAttr &propValue) { this->mask = propValue; } bool operator==(const Properties &rhs) const { return rhs.mask == this->mask && true; } bool operator!=(const Properties &rhs) const { return !(*this == rhs); } }; protected: ::mlir::DictionaryAttr odsAttrs; ::std::optional<::mlir::OperationName> odsOpName; Properties properties; ::mlir::RegionRange odsRegions; public: SchedBarrierGenericAdaptorBase(::mlir::DictionaryAttr attrs, const Properties &properties, ::mlir::RegionRange regions = {}) : odsAttrs(attrs), properties(properties), odsRegions(regions) { if (odsAttrs) odsOpName.emplace("rocdl.sched.barrier", odsAttrs.getContext()); } SchedBarrierGenericAdaptorBase(SchedBarrier op); std::pair getODSOperandIndexAndLength(unsigned index, unsigned odsOperandsSize) { return {index, 1}; } const Properties &getProperties() { return properties; } ::mlir::DictionaryAttr getAttributes() { return odsAttrs; } ::mlir::ROCDL::SchedGroupMaskAttr getMaskAttr() { auto attr = ::llvm::cast<::mlir::ROCDL::SchedGroupMaskAttr>(getProperties().mask); return attr; } ::mlir::ROCDL::SchedGroupMask getMask(); }; } // namespace detail template class SchedBarrierGenericAdaptor : public detail::SchedBarrierGenericAdaptorBase { using ValueT = ::llvm::detail::ValueOfRange; using Base = detail::SchedBarrierGenericAdaptorBase; public: SchedBarrierGenericAdaptor(RangeT values, ::mlir::DictionaryAttr attrs, const Properties &properties, ::mlir::RegionRange regions = {}) : Base(attrs, properties, regions), odsOperands(values) {} SchedBarrierGenericAdaptor(RangeT values, ::mlir::DictionaryAttr attrs, ::mlir::PropertyRef properties, ::mlir::RegionRange regions = {}) : SchedBarrierGenericAdaptor(values, attrs, (properties ? *properties.as() : Properties{}), regions) {} SchedBarrierGenericAdaptor(RangeT values, ::mlir::DictionaryAttr attrs = nullptr) : SchedBarrierGenericAdaptor(values, attrs, Properties{}, {}) {} SchedBarrierGenericAdaptor(RangeT values, const SchedBarrierGenericAdaptorBase &base) : Base(base), odsOperands(values) {} template >> SchedBarrierGenericAdaptor(RangeT values, LateInst op) : Base(op), odsOperands(values) {} std::pair getODSOperandIndexAndLength(unsigned index) { return Base::getODSOperandIndexAndLength(index, odsOperands.size()); } RangeT getODSOperands(unsigned index) { auto valueRange = getODSOperandIndexAndLength(index); return {std::next(odsOperands.begin(), valueRange.first), std::next(odsOperands.begin(), valueRange.first + valueRange.second)}; } RangeT getOperands() { return odsOperands; } private: RangeT odsOperands; }; class SchedBarrierAdaptor : public SchedBarrierGenericAdaptor<::mlir::ValueRange> { public: using SchedBarrierGenericAdaptor::SchedBarrierGenericAdaptor; SchedBarrierAdaptor(SchedBarrier op); ::llvm::LogicalResult verify(::mlir::Location loc); }; class SchedBarrier : public ::mlir::Op { public: using Op::Op; using Op::print; using Adaptor = SchedBarrierAdaptor; template using GenericAdaptor = SchedBarrierGenericAdaptor; using FoldAdaptor = GenericAdaptor<::llvm::ArrayRef<::mlir::Attribute>>; using Properties = FoldAdaptor::Properties; static ::llvm::ArrayRef<::llvm::StringRef> getAttributeNames() { static ::llvm::StringRef attrNames[] = {::llvm::StringRef("mask")}; return ::llvm::ArrayRef(attrNames); } ::mlir::StringAttr getMaskAttrName() { return getAttributeNameForIndex(0); } static ::mlir::StringAttr getMaskAttrName(::mlir::OperationName name) { return getAttributeNameForIndex(name, 0); } static constexpr ::llvm::StringLiteral getOperationName() { return ::llvm::StringLiteral("rocdl.sched.barrier"); } std::pair getODSOperandIndexAndLength(unsigned index) { return {index, 1}; } ::mlir::Operation::operand_range getODSOperands(unsigned index) { auto valueRange = getODSOperandIndexAndLength(index); return {std::next(getOperation()->operand_begin(), valueRange.first), std::next(getOperation()->operand_begin(), valueRange.first + valueRange.second)}; } std::pair getODSResultIndexAndLength(unsigned index) { return {index, 1}; } ::mlir::Operation::result_range getODSResults(unsigned index) { auto valueRange = getODSResultIndexAndLength(index); return {std::next(getOperation()->result_begin(), valueRange.first), std::next(getOperation()->result_begin(), valueRange.first + valueRange.second)}; } static ::llvm::LogicalResult setPropertiesFromAttr(Properties &prop, ::mlir::Attribute attr, ::llvm::function_ref<::mlir::InFlightDiagnostic()> emitError); static ::mlir::Attribute getPropertiesAsAttr(::mlir::MLIRContext *ctx, const Properties &prop); static llvm::hash_code computePropertiesHash(const Properties &prop); static std::optional getInherentAttr(::mlir::MLIRContext *ctx, const Properties &prop, llvm::StringRef name); static void setInherentAttr(Properties &prop, llvm::StringRef name, mlir::Attribute value); static void populateInherentAttrs(::mlir::MLIRContext *ctx, const Properties &prop, ::mlir::NamedAttrList &attrs); static ::llvm::LogicalResult verifyInherentAttrs(::mlir::OperationName opName, ::mlir::NamedAttrList &attrs, llvm::function_ref<::mlir::InFlightDiagnostic()> emitError); static ::llvm::LogicalResult readProperties(::mlir::DialectBytecodeReader &reader, ::mlir::OperationState &state); void writeProperties(::mlir::DialectBytecodeWriter &writer); ::mlir::ROCDL::SchedGroupMaskAttr getMaskAttr() { return ::llvm::cast<::mlir::ROCDL::SchedGroupMaskAttr>(getProperties().mask); } ::mlir::ROCDL::SchedGroupMask getMask(); void setMaskAttr(::mlir::ROCDL::SchedGroupMaskAttr attr) { getProperties().mask = attr; } void setMask(::mlir::ROCDL::SchedGroupMask attrValue); static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::ROCDL::SchedGroupMaskAttr mask); static SchedBarrier create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::ROCDL::SchedGroupMaskAttr mask); static SchedBarrier create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::ROCDL::SchedGroupMaskAttr mask); static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::ROCDL::SchedGroupMaskAttr mask); static SchedBarrier create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::ROCDL::SchedGroupMaskAttr mask); static SchedBarrier create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::ROCDL::SchedGroupMaskAttr mask); static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::ROCDL::SchedGroupMask mask); static SchedBarrier create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::ROCDL::SchedGroupMask mask); static SchedBarrier create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::ROCDL::SchedGroupMask mask); static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::ROCDL::SchedGroupMask mask); static SchedBarrier create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::ROCDL::SchedGroupMask mask); static SchedBarrier create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::ROCDL::SchedGroupMask mask); static void build(::mlir::OpBuilder &, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, ::llvm::ArrayRef<::mlir::NamedAttribute> attributes = {}); static SchedBarrier create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, ::llvm::ArrayRef<::mlir::NamedAttribute> attributes = {}); static SchedBarrier create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, ::llvm::ArrayRef<::mlir::NamedAttribute> attributes = {}); static void build(::mlir::OpBuilder &, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, const Properties &properties, ::llvm::ArrayRef<::mlir::NamedAttribute> discardableAttributes = {}); static SchedBarrier create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, const Properties &properties, ::llvm::ArrayRef<::mlir::NamedAttribute> discardableAttributes = {}); static SchedBarrier create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, const Properties &properties, ::llvm::ArrayRef<::mlir::NamedAttribute> discardableAttributes = {}); ::llvm::LogicalResult verifyInvariantsImpl(); ::llvm::LogicalResult verifyInvariants(); static ::mlir::ParseResult parse(::mlir::OpAsmParser &parser, ::mlir::OperationState &result); void print(::mlir::OpAsmPrinter &_odsPrinter); private: ::mlir::StringAttr getAttributeNameForIndex(unsigned index) { return getAttributeNameForIndex((*this)->getName(), index); } static ::mlir::StringAttr getAttributeNameForIndex(::mlir::OperationName name, unsigned index) { assert(index < 1 && "invalid attribute index"); assert(name.getStringRef() == getOperationName() && "invalid operation name"); assert(name.isRegistered() && "Operation isn't registered, missing a " "dependent dialect loading?"); return name.getAttributeNames()[index]; } public: }; } // namespace mlir::ROCDL MLIR_DECLARE_EXPLICIT_TYPE_ID(::mlir::ROCDL::SchedBarrier) MLIR_DECLARE_EXPLICIT_TYPE_ID(::mlir::ROCDL::detail::SchedBarrierGenericAdaptorBase::Properties) namespace mlir::ROCDL { //===----------------------------------------------------------------------===// // ::mlir::ROCDL::SchedGroupBarrier declarations //===----------------------------------------------------------------------===// namespace detail { class SchedGroupBarrierGenericAdaptorBase { public: struct Properties { using groupIdTy = ::mlir::IntegerAttr; groupIdTy groupId; auto getGroupId() const { auto &propStorage = this->groupId; return ::llvm::cast<::mlir::IntegerAttr>(propStorage); } void setGroupId(const ::mlir::IntegerAttr &propValue) { this->groupId = propValue; } using maskTy = ::mlir::ROCDL::SchedGroupMaskAttr; maskTy mask; auto getMask() const { auto &propStorage = this->mask; return ::llvm::cast<::mlir::ROCDL::SchedGroupMaskAttr>(propStorage); } void setMask(const ::mlir::ROCDL::SchedGroupMaskAttr &propValue) { this->mask = propValue; } using sizeTy = ::mlir::IntegerAttr; sizeTy size; auto getSize() const { auto &propStorage = this->size; return ::llvm::cast<::mlir::IntegerAttr>(propStorage); } void setSize(const ::mlir::IntegerAttr &propValue) { this->size = propValue; } bool operator==(const Properties &rhs) const { return rhs.groupId == this->groupId && rhs.mask == this->mask && rhs.size == this->size && true; } bool operator!=(const Properties &rhs) const { return !(*this == rhs); } }; protected: ::mlir::DictionaryAttr odsAttrs; ::std::optional<::mlir::OperationName> odsOpName; Properties properties; ::mlir::RegionRange odsRegions; public: SchedGroupBarrierGenericAdaptorBase(::mlir::DictionaryAttr attrs, const Properties &properties, ::mlir::RegionRange regions = {}) : odsAttrs(attrs), properties(properties), odsRegions(regions) { if (odsAttrs) odsOpName.emplace("rocdl.sched.group.barrier", odsAttrs.getContext()); } SchedGroupBarrierGenericAdaptorBase(SchedGroupBarrier op); std::pair getODSOperandIndexAndLength(unsigned index, unsigned odsOperandsSize) { return {index, 1}; } const Properties &getProperties() { return properties; } ::mlir::DictionaryAttr getAttributes() { return odsAttrs; } ::mlir::ROCDL::SchedGroupMaskAttr getMaskAttr() { auto attr = ::llvm::cast<::mlir::ROCDL::SchedGroupMaskAttr>(getProperties().mask); return attr; } ::mlir::ROCDL::SchedGroupMask getMask(); ::mlir::IntegerAttr getSizeAttr() { auto attr = ::llvm::cast<::mlir::IntegerAttr>(getProperties().size); return attr; } uint32_t getSize(); ::mlir::IntegerAttr getGroupIdAttr() { auto attr = ::llvm::cast<::mlir::IntegerAttr>(getProperties().groupId); return attr; } uint32_t getGroupId(); }; } // namespace detail template class SchedGroupBarrierGenericAdaptor : public detail::SchedGroupBarrierGenericAdaptorBase { using ValueT = ::llvm::detail::ValueOfRange; using Base = detail::SchedGroupBarrierGenericAdaptorBase; public: SchedGroupBarrierGenericAdaptor(RangeT values, ::mlir::DictionaryAttr attrs, const Properties &properties, ::mlir::RegionRange regions = {}) : Base(attrs, properties, regions), odsOperands(values) {} SchedGroupBarrierGenericAdaptor(RangeT values, ::mlir::DictionaryAttr attrs, ::mlir::PropertyRef properties, ::mlir::RegionRange regions = {}) : SchedGroupBarrierGenericAdaptor(values, attrs, (properties ? *properties.as() : Properties{}), regions) {} SchedGroupBarrierGenericAdaptor(RangeT values, ::mlir::DictionaryAttr attrs = nullptr) : SchedGroupBarrierGenericAdaptor(values, attrs, Properties{}, {}) {} SchedGroupBarrierGenericAdaptor(RangeT values, const SchedGroupBarrierGenericAdaptorBase &base) : Base(base), odsOperands(values) {} template >> SchedGroupBarrierGenericAdaptor(RangeT values, LateInst op) : Base(op), odsOperands(values) {} std::pair getODSOperandIndexAndLength(unsigned index) { return Base::getODSOperandIndexAndLength(index, odsOperands.size()); } RangeT getODSOperands(unsigned index) { auto valueRange = getODSOperandIndexAndLength(index); return {std::next(odsOperands.begin(), valueRange.first), std::next(odsOperands.begin(), valueRange.first + valueRange.second)}; } RangeT getOperands() { return odsOperands; } private: RangeT odsOperands; }; class SchedGroupBarrierAdaptor : public SchedGroupBarrierGenericAdaptor<::mlir::ValueRange> { public: using SchedGroupBarrierGenericAdaptor::SchedGroupBarrierGenericAdaptor; SchedGroupBarrierAdaptor(SchedGroupBarrier op); ::llvm::LogicalResult verify(::mlir::Location loc); }; class SchedGroupBarrier : public ::mlir::Op { public: using Op::Op; using Op::print; using Adaptor = SchedGroupBarrierAdaptor; template using GenericAdaptor = SchedGroupBarrierGenericAdaptor; using FoldAdaptor = GenericAdaptor<::llvm::ArrayRef<::mlir::Attribute>>; using Properties = FoldAdaptor::Properties; static ::llvm::ArrayRef<::llvm::StringRef> getAttributeNames() { static ::llvm::StringRef attrNames[] = {::llvm::StringRef("groupId"), ::llvm::StringRef("mask"), ::llvm::StringRef("size")}; return ::llvm::ArrayRef(attrNames); } ::mlir::StringAttr getGroupIdAttrName() { return getAttributeNameForIndex(0); } static ::mlir::StringAttr getGroupIdAttrName(::mlir::OperationName name) { return getAttributeNameForIndex(name, 0); } ::mlir::StringAttr getMaskAttrName() { return getAttributeNameForIndex(1); } static ::mlir::StringAttr getMaskAttrName(::mlir::OperationName name) { return getAttributeNameForIndex(name, 1); } ::mlir::StringAttr getSizeAttrName() { return getAttributeNameForIndex(2); } static ::mlir::StringAttr getSizeAttrName(::mlir::OperationName name) { return getAttributeNameForIndex(name, 2); } static constexpr ::llvm::StringLiteral getOperationName() { return ::llvm::StringLiteral("rocdl.sched.group.barrier"); } std::pair getODSOperandIndexAndLength(unsigned index) { return {index, 1}; } ::mlir::Operation::operand_range getODSOperands(unsigned index) { auto valueRange = getODSOperandIndexAndLength(index); return {std::next(getOperation()->operand_begin(), valueRange.first), std::next(getOperation()->operand_begin(), valueRange.first + valueRange.second)}; } std::pair getODSResultIndexAndLength(unsigned index) { return {index, 1}; } ::mlir::Operation::result_range getODSResults(unsigned index) { auto valueRange = getODSResultIndexAndLength(index); return {std::next(getOperation()->result_begin(), valueRange.first), std::next(getOperation()->result_begin(), valueRange.first + valueRange.second)}; } static ::llvm::LogicalResult setPropertiesFromAttr(Properties &prop, ::mlir::Attribute attr, ::llvm::function_ref<::mlir::InFlightDiagnostic()> emitError); static ::mlir::Attribute getPropertiesAsAttr(::mlir::MLIRContext *ctx, const Properties &prop); static llvm::hash_code computePropertiesHash(const Properties &prop); static std::optional getInherentAttr(::mlir::MLIRContext *ctx, const Properties &prop, llvm::StringRef name); static void setInherentAttr(Properties &prop, llvm::StringRef name, mlir::Attribute value); static void populateInherentAttrs(::mlir::MLIRContext *ctx, const Properties &prop, ::mlir::NamedAttrList &attrs); static ::llvm::LogicalResult verifyInherentAttrs(::mlir::OperationName opName, ::mlir::NamedAttrList &attrs, llvm::function_ref<::mlir::InFlightDiagnostic()> emitError); static ::llvm::LogicalResult readProperties(::mlir::DialectBytecodeReader &reader, ::mlir::OperationState &state); void writeProperties(::mlir::DialectBytecodeWriter &writer); ::mlir::ROCDL::SchedGroupMaskAttr getMaskAttr() { return ::llvm::cast<::mlir::ROCDL::SchedGroupMaskAttr>(getProperties().mask); } ::mlir::ROCDL::SchedGroupMask getMask(); ::mlir::IntegerAttr getSizeAttr() { return ::llvm::cast<::mlir::IntegerAttr>(getProperties().size); } uint32_t getSize(); ::mlir::IntegerAttr getGroupIdAttr() { return ::llvm::cast<::mlir::IntegerAttr>(getProperties().groupId); } uint32_t getGroupId(); void setMaskAttr(::mlir::ROCDL::SchedGroupMaskAttr attr) { getProperties().mask = attr; } void setMask(::mlir::ROCDL::SchedGroupMask attrValue); void setSizeAttr(::mlir::IntegerAttr attr) { getProperties().size = attr; } void setSize(uint32_t attrValue); void setGroupIdAttr(::mlir::IntegerAttr attr) { getProperties().groupId = attr; } void setGroupId(uint32_t attrValue); static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::ROCDL::SchedGroupMaskAttr mask, ::mlir::IntegerAttr size, ::mlir::IntegerAttr groupId); static SchedGroupBarrier create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::ROCDL::SchedGroupMaskAttr mask, ::mlir::IntegerAttr size, ::mlir::IntegerAttr groupId); static SchedGroupBarrier create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::ROCDL::SchedGroupMaskAttr mask, ::mlir::IntegerAttr size, ::mlir::IntegerAttr groupId); static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::ROCDL::SchedGroupMaskAttr mask, ::mlir::IntegerAttr size, ::mlir::IntegerAttr groupId); static SchedGroupBarrier create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::ROCDL::SchedGroupMaskAttr mask, ::mlir::IntegerAttr size, ::mlir::IntegerAttr groupId); static SchedGroupBarrier create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::ROCDL::SchedGroupMaskAttr mask, ::mlir::IntegerAttr size, ::mlir::IntegerAttr groupId); static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::ROCDL::SchedGroupMask mask, uint32_t size, uint32_t groupId); static SchedGroupBarrier create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::ROCDL::SchedGroupMask mask, uint32_t size, uint32_t groupId); static SchedGroupBarrier create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::ROCDL::SchedGroupMask mask, uint32_t size, uint32_t groupId); static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::ROCDL::SchedGroupMask mask, uint32_t size, uint32_t groupId); static SchedGroupBarrier create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::ROCDL::SchedGroupMask mask, uint32_t size, uint32_t groupId); static SchedGroupBarrier create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::ROCDL::SchedGroupMask mask, uint32_t size, uint32_t groupId); static void build(::mlir::OpBuilder &, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, ::llvm::ArrayRef<::mlir::NamedAttribute> attributes = {}); static SchedGroupBarrier create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, ::llvm::ArrayRef<::mlir::NamedAttribute> attributes = {}); static SchedGroupBarrier create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, ::llvm::ArrayRef<::mlir::NamedAttribute> attributes = {}); static void build(::mlir::OpBuilder &, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, const Properties &properties, ::llvm::ArrayRef<::mlir::NamedAttribute> discardableAttributes = {}); static SchedGroupBarrier create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, const Properties &properties, ::llvm::ArrayRef<::mlir::NamedAttribute> discardableAttributes = {}); static SchedGroupBarrier create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, const Properties &properties, ::llvm::ArrayRef<::mlir::NamedAttribute> discardableAttributes = {}); ::llvm::LogicalResult verifyInvariantsImpl(); ::llvm::LogicalResult verifyInvariants(); static ::mlir::ParseResult parse(::mlir::OpAsmParser &parser, ::mlir::OperationState &result); void print(::mlir::OpAsmPrinter &_odsPrinter); private: ::mlir::StringAttr getAttributeNameForIndex(unsigned index) { return getAttributeNameForIndex((*this)->getName(), index); } static ::mlir::StringAttr getAttributeNameForIndex(::mlir::OperationName name, unsigned index) { assert(index < 3 && "invalid attribute index"); assert(name.getStringRef() == getOperationName() && "invalid operation name"); assert(name.isRegistered() && "Operation isn't registered, missing a " "dependent dialect loading?"); return name.getAttributeNames()[index]; } public: }; } // namespace mlir::ROCDL MLIR_DECLARE_EXPLICIT_TYPE_ID(::mlir::ROCDL::SchedGroupBarrier) MLIR_DECLARE_EXPLICIT_TYPE_ID(::mlir::ROCDL::detail::SchedGroupBarrierGenericAdaptorBase::Properties) namespace mlir::ROCDL { //===----------------------------------------------------------------------===// // ::mlir::ROCDL::SetPrioOp declarations //===----------------------------------------------------------------------===// namespace detail { class SetPrioOpGenericAdaptorBase { public: struct Properties { using priorityTy = ::mlir::IntegerAttr; priorityTy priority; auto getPriority() const { auto &propStorage = this->priority; return ::llvm::cast<::mlir::IntegerAttr>(propStorage); } void setPriority(const ::mlir::IntegerAttr &propValue) { this->priority = propValue; } bool operator==(const Properties &rhs) const { return rhs.priority == this->priority && true; } bool operator!=(const Properties &rhs) const { return !(*this == rhs); } }; protected: ::mlir::DictionaryAttr odsAttrs; ::std::optional<::mlir::OperationName> odsOpName; Properties properties; ::mlir::RegionRange odsRegions; public: SetPrioOpGenericAdaptorBase(::mlir::DictionaryAttr attrs, const Properties &properties, ::mlir::RegionRange regions = {}) : odsAttrs(attrs), properties(properties), odsRegions(regions) { if (odsAttrs) odsOpName.emplace("rocdl.s.setprio", odsAttrs.getContext()); } SetPrioOpGenericAdaptorBase(SetPrioOp op); std::pair getODSOperandIndexAndLength(unsigned index, unsigned odsOperandsSize) { return {index, 1}; } const Properties &getProperties() { return properties; } ::mlir::DictionaryAttr getAttributes() { return odsAttrs; } ::mlir::IntegerAttr getPriorityAttr() { auto attr = ::llvm::cast<::mlir::IntegerAttr>(getProperties().priority); return attr; } uint16_t getPriority(); }; } // namespace detail template class SetPrioOpGenericAdaptor : public detail::SetPrioOpGenericAdaptorBase { using ValueT = ::llvm::detail::ValueOfRange; using Base = detail::SetPrioOpGenericAdaptorBase; public: SetPrioOpGenericAdaptor(RangeT values, ::mlir::DictionaryAttr attrs, const Properties &properties, ::mlir::RegionRange regions = {}) : Base(attrs, properties, regions), odsOperands(values) {} SetPrioOpGenericAdaptor(RangeT values, ::mlir::DictionaryAttr attrs, ::mlir::PropertyRef properties, ::mlir::RegionRange regions = {}) : SetPrioOpGenericAdaptor(values, attrs, (properties ? *properties.as() : Properties{}), regions) {} SetPrioOpGenericAdaptor(RangeT values, ::mlir::DictionaryAttr attrs = nullptr) : SetPrioOpGenericAdaptor(values, attrs, Properties{}, {}) {} SetPrioOpGenericAdaptor(RangeT values, const SetPrioOpGenericAdaptorBase &base) : Base(base), odsOperands(values) {} template >> SetPrioOpGenericAdaptor(RangeT values, LateInst op) : Base(op), odsOperands(values) {} std::pair getODSOperandIndexAndLength(unsigned index) { return Base::getODSOperandIndexAndLength(index, odsOperands.size()); } RangeT getODSOperands(unsigned index) { auto valueRange = getODSOperandIndexAndLength(index); return {std::next(odsOperands.begin(), valueRange.first), std::next(odsOperands.begin(), valueRange.first + valueRange.second)}; } RangeT getOperands() { return odsOperands; } private: RangeT odsOperands; }; class SetPrioOpAdaptor : public SetPrioOpGenericAdaptor<::mlir::ValueRange> { public: using SetPrioOpGenericAdaptor::SetPrioOpGenericAdaptor; SetPrioOpAdaptor(SetPrioOp op); ::llvm::LogicalResult verify(::mlir::Location loc); }; class SetPrioOp : public ::mlir::Op { public: using Op::Op; using Op::print; using Adaptor = SetPrioOpAdaptor; template using GenericAdaptor = SetPrioOpGenericAdaptor; using FoldAdaptor = GenericAdaptor<::llvm::ArrayRef<::mlir::Attribute>>; using Properties = FoldAdaptor::Properties; static ::llvm::ArrayRef<::llvm::StringRef> getAttributeNames() { static ::llvm::StringRef attrNames[] = {::llvm::StringRef("priority")}; return ::llvm::ArrayRef(attrNames); } ::mlir::StringAttr getPriorityAttrName() { return getAttributeNameForIndex(0); } static ::mlir::StringAttr getPriorityAttrName(::mlir::OperationName name) { return getAttributeNameForIndex(name, 0); } static constexpr ::llvm::StringLiteral getOperationName() { return ::llvm::StringLiteral("rocdl.s.setprio"); } std::pair getODSOperandIndexAndLength(unsigned index) { return {index, 1}; } ::mlir::Operation::operand_range getODSOperands(unsigned index) { auto valueRange = getODSOperandIndexAndLength(index); return {std::next(getOperation()->operand_begin(), valueRange.first), std::next(getOperation()->operand_begin(), valueRange.first + valueRange.second)}; } std::pair getODSResultIndexAndLength(unsigned index) { return {index, 1}; } ::mlir::Operation::result_range getODSResults(unsigned index) { auto valueRange = getODSResultIndexAndLength(index); return {std::next(getOperation()->result_begin(), valueRange.first), std::next(getOperation()->result_begin(), valueRange.first + valueRange.second)}; } static ::llvm::LogicalResult setPropertiesFromAttr(Properties &prop, ::mlir::Attribute attr, ::llvm::function_ref<::mlir::InFlightDiagnostic()> emitError); static ::mlir::Attribute getPropertiesAsAttr(::mlir::MLIRContext *ctx, const Properties &prop); static llvm::hash_code computePropertiesHash(const Properties &prop); static std::optional getInherentAttr(::mlir::MLIRContext *ctx, const Properties &prop, llvm::StringRef name); static void setInherentAttr(Properties &prop, llvm::StringRef name, mlir::Attribute value); static void populateInherentAttrs(::mlir::MLIRContext *ctx, const Properties &prop, ::mlir::NamedAttrList &attrs); static ::llvm::LogicalResult verifyInherentAttrs(::mlir::OperationName opName, ::mlir::NamedAttrList &attrs, llvm::function_ref<::mlir::InFlightDiagnostic()> emitError); static ::llvm::LogicalResult readProperties(::mlir::DialectBytecodeReader &reader, ::mlir::OperationState &state); void writeProperties(::mlir::DialectBytecodeWriter &writer); ::mlir::IntegerAttr getPriorityAttr() { return ::llvm::cast<::mlir::IntegerAttr>(getProperties().priority); } uint16_t getPriority(); void setPriorityAttr(::mlir::IntegerAttr attr) { getProperties().priority = attr; } void setPriority(uint16_t attrValue); static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::IntegerAttr priority); static SetPrioOp create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::IntegerAttr priority); static SetPrioOp create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::IntegerAttr priority); static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::IntegerAttr priority); static SetPrioOp create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::IntegerAttr priority); static SetPrioOp create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::IntegerAttr priority); static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, uint16_t priority); static SetPrioOp create(::mlir::OpBuilder &builder, ::mlir::Location location, uint16_t priority); static SetPrioOp create(::mlir::ImplicitLocOpBuilder &builder, uint16_t priority); static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, uint16_t priority); static SetPrioOp create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, uint16_t priority); static SetPrioOp create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, uint16_t priority); static void build(::mlir::OpBuilder &, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, ::llvm::ArrayRef<::mlir::NamedAttribute> attributes = {}); static SetPrioOp create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, ::llvm::ArrayRef<::mlir::NamedAttribute> attributes = {}); static SetPrioOp create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, ::llvm::ArrayRef<::mlir::NamedAttribute> attributes = {}); static void build(::mlir::OpBuilder &, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, const Properties &properties, ::llvm::ArrayRef<::mlir::NamedAttribute> discardableAttributes = {}); static SetPrioOp create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, const Properties &properties, ::llvm::ArrayRef<::mlir::NamedAttribute> discardableAttributes = {}); static SetPrioOp create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, const Properties &properties, ::llvm::ArrayRef<::mlir::NamedAttribute> discardableAttributes = {}); ::llvm::LogicalResult verifyInvariantsImpl(); ::llvm::LogicalResult verifyInvariants(); static ::mlir::ParseResult parse(::mlir::OpAsmParser &parser, ::mlir::OperationState &result); void print(::mlir::OpAsmPrinter &_odsPrinter); private: ::mlir::StringAttr getAttributeNameForIndex(unsigned index) { return getAttributeNameForIndex((*this)->getName(), index); } static ::mlir::StringAttr getAttributeNameForIndex(::mlir::OperationName name, unsigned index) { assert(index < 1 && "invalid attribute index"); assert(name.getStringRef() == getOperationName() && "invalid operation name"); assert(name.isRegistered() && "Operation isn't registered, missing a " "dependent dialect loading?"); return name.getAttributeNames()[index]; } public: }; } // namespace mlir::ROCDL MLIR_DECLARE_EXPLICIT_TYPE_ID(::mlir::ROCDL::SetPrioOp) MLIR_DECLARE_EXPLICIT_TYPE_ID(::mlir::ROCDL::detail::SetPrioOpGenericAdaptorBase::Properties) namespace mlir::ROCDL { //===----------------------------------------------------------------------===// // ::mlir::ROCDL::TensorLoadToLDSOp declarations //===----------------------------------------------------------------------===// namespace detail { class TensorLoadToLDSOpGenericAdaptorBase { public: struct Properties { using alias_scopesTy = ::mlir::ArrayAttr; alias_scopesTy alias_scopes; auto getAliasScopes() const { auto &propStorage = this->alias_scopes; return ::llvm::dyn_cast_or_null<::mlir::ArrayAttr>(propStorage); } void setAliasScopes(const ::mlir::ArrayAttr &propValue) { this->alias_scopes = propValue; } using cachePolicyTy = ::mlir::Attribute; cachePolicyTy cachePolicy; auto getCachePolicy() const { auto &propStorage = this->cachePolicy; return ::llvm::dyn_cast_or_null<::mlir::Attribute>(propStorage); } void setCachePolicy(const ::mlir::Attribute &propValue) { this->cachePolicy = propValue; } using noalias_scopesTy = ::mlir::ArrayAttr; noalias_scopesTy noalias_scopes; auto getNoaliasScopes() const { auto &propStorage = this->noalias_scopes; return ::llvm::dyn_cast_or_null<::mlir::ArrayAttr>(propStorage); } void setNoaliasScopes(const ::mlir::ArrayAttr &propValue) { this->noalias_scopes = propValue; } using tbaaTy = ::mlir::ArrayAttr; tbaaTy tbaa; auto getTbaa() const { auto &propStorage = this->tbaa; return ::llvm::dyn_cast_or_null<::mlir::ArrayAttr>(propStorage); } void setTbaa(const ::mlir::ArrayAttr &propValue) { this->tbaa = propValue; } bool operator==(const Properties &rhs) const { return rhs.alias_scopes == this->alias_scopes && rhs.cachePolicy == this->cachePolicy && rhs.noalias_scopes == this->noalias_scopes && rhs.tbaa == this->tbaa && true; } bool operator!=(const Properties &rhs) const { return !(*this == rhs); } }; protected: ::mlir::DictionaryAttr odsAttrs; ::std::optional<::mlir::OperationName> odsOpName; Properties properties; ::mlir::RegionRange odsRegions; public: TensorLoadToLDSOpGenericAdaptorBase(::mlir::DictionaryAttr attrs, const Properties &properties, ::mlir::RegionRange regions = {}) : odsAttrs(attrs), properties(properties), odsRegions(regions) { if (odsAttrs) odsOpName.emplace("rocdl.tensor.load.to.lds", odsAttrs.getContext()); } TensorLoadToLDSOpGenericAdaptorBase(TensorLoadToLDSOp op); std::pair getODSOperandIndexAndLength(unsigned index, unsigned odsOperandsSize) { return {index, 1}; } const Properties &getProperties() { return properties; } ::mlir::DictionaryAttr getAttributes() { return odsAttrs; } ::mlir::Attribute getCachePolicyAttr(); ::mlir::Attribute getCachePolicy(); ::mlir::ArrayAttr getAliasScopesAttr() { auto attr = ::llvm::dyn_cast_or_null<::mlir::ArrayAttr>(getProperties().alias_scopes); return attr; } ::std::optional< ::mlir::ArrayAttr > getAliasScopes(); ::mlir::ArrayAttr getNoaliasScopesAttr() { auto attr = ::llvm::dyn_cast_or_null<::mlir::ArrayAttr>(getProperties().noalias_scopes); return attr; } ::std::optional< ::mlir::ArrayAttr > getNoaliasScopes(); ::mlir::ArrayAttr getTbaaAttr() { auto attr = ::llvm::dyn_cast_or_null<::mlir::ArrayAttr>(getProperties().tbaa); return attr; } ::std::optional< ::mlir::ArrayAttr > getTbaa(); }; } // namespace detail template class TensorLoadToLDSOpGenericAdaptor : public detail::TensorLoadToLDSOpGenericAdaptorBase { using ValueT = ::llvm::detail::ValueOfRange; using Base = detail::TensorLoadToLDSOpGenericAdaptorBase; static constexpr int odsIndex_dgroup0 = 0; static constexpr int odsIndex_dgroup1 = 1; static constexpr int odsIndex_dgroup2 = 2; static constexpr int odsIndex_dgroup3 = 3; static constexpr int odsIndex_dgroup4 = 4; public: TensorLoadToLDSOpGenericAdaptor(RangeT values, ::mlir::DictionaryAttr attrs, const Properties &properties, ::mlir::RegionRange regions = {}) : Base(attrs, properties, regions), odsOperands(values) {} TensorLoadToLDSOpGenericAdaptor(RangeT values, ::mlir::DictionaryAttr attrs, ::mlir::PropertyRef properties, ::mlir::RegionRange regions = {}) : TensorLoadToLDSOpGenericAdaptor(values, attrs, (properties ? *properties.as() : Properties{}), regions) {} TensorLoadToLDSOpGenericAdaptor(RangeT values, ::mlir::DictionaryAttr attrs = nullptr) : TensorLoadToLDSOpGenericAdaptor(values, attrs, Properties{}, {}) {} TensorLoadToLDSOpGenericAdaptor(RangeT values, const TensorLoadToLDSOpGenericAdaptorBase &base) : Base(base), odsOperands(values) {} template >> TensorLoadToLDSOpGenericAdaptor(RangeT values, LateInst op) : Base(op), odsOperands(values) {} std::pair getODSOperandIndexAndLength(unsigned index) { return Base::getODSOperandIndexAndLength(index, odsOperands.size()); } RangeT getODSOperands(unsigned index) { auto valueRange = getODSOperandIndexAndLength(index); return {std::next(odsOperands.begin(), valueRange.first), std::next(odsOperands.begin(), valueRange.first + valueRange.second)}; } ValueT getDgroup0() { return (*getODSOperands(0).begin()); } ValueT getDgroup1() { return (*getODSOperands(1).begin()); } ValueT getDgroup2() { return (*getODSOperands(2).begin()); } ValueT getDgroup3() { return (*getODSOperands(3).begin()); } ValueT getDgroup4() { return (*getODSOperands(4).begin()); } RangeT getOperands() { return odsOperands; } private: RangeT odsOperands; }; class TensorLoadToLDSOpAdaptor : public TensorLoadToLDSOpGenericAdaptor<::mlir::ValueRange> { public: using TensorLoadToLDSOpGenericAdaptor::TensorLoadToLDSOpGenericAdaptor; TensorLoadToLDSOpAdaptor(TensorLoadToLDSOp op); ::llvm::LogicalResult verify(::mlir::Location loc); }; class TensorLoadToLDSOp : public ::mlir::Op::Impl, ::mlir::OpTrait::OpInvariants, ::mlir::BytecodeOpInterface::Trait, ::mlir::LLVM::AliasAnalysisOpInterface::Trait> { public: using Op::Op; using Op::print; using Adaptor = TensorLoadToLDSOpAdaptor; template using GenericAdaptor = TensorLoadToLDSOpGenericAdaptor; using FoldAdaptor = GenericAdaptor<::llvm::ArrayRef<::mlir::Attribute>>; static constexpr int odsIndex_dgroup0 = 0; static constexpr int odsIndex_dgroup1 = 1; static constexpr int odsIndex_dgroup2 = 2; static constexpr int odsIndex_dgroup3 = 3; static constexpr int odsIndex_dgroup4 = 4; using Properties = FoldAdaptor::Properties; using ::mlir::LLVM::AliasAnalysisOpInterface::Trait::getAliasScopesOrNull; using ::mlir::LLVM::AliasAnalysisOpInterface::Trait::setAliasScopes; using ::mlir::LLVM::AliasAnalysisOpInterface::Trait::getNoAliasScopesOrNull; using ::mlir::LLVM::AliasAnalysisOpInterface::Trait::setNoAliasScopes; using ::mlir::LLVM::AliasAnalysisOpInterface::Trait::getTBAATagsOrNull; using ::mlir::LLVM::AliasAnalysisOpInterface::Trait::setTBAATags; static ::llvm::ArrayRef<::llvm::StringRef> getAttributeNames() { static ::llvm::StringRef attrNames[] = {::llvm::StringRef("alias_scopes"), ::llvm::StringRef("cachePolicy"), ::llvm::StringRef("noalias_scopes"), ::llvm::StringRef("tbaa")}; return ::llvm::ArrayRef(attrNames); } ::mlir::StringAttr getAliasScopesAttrName() { return getAttributeNameForIndex(0); } static ::mlir::StringAttr getAliasScopesAttrName(::mlir::OperationName name) { return getAttributeNameForIndex(name, 0); } ::mlir::StringAttr getCachePolicyAttrName() { return getAttributeNameForIndex(1); } static ::mlir::StringAttr getCachePolicyAttrName(::mlir::OperationName name) { return getAttributeNameForIndex(name, 1); } ::mlir::StringAttr getNoaliasScopesAttrName() { return getAttributeNameForIndex(2); } static ::mlir::StringAttr getNoaliasScopesAttrName(::mlir::OperationName name) { return getAttributeNameForIndex(name, 2); } ::mlir::StringAttr getTbaaAttrName() { return getAttributeNameForIndex(3); } static ::mlir::StringAttr getTbaaAttrName(::mlir::OperationName name) { return getAttributeNameForIndex(name, 3); } static constexpr ::llvm::StringLiteral getOperationName() { return ::llvm::StringLiteral("rocdl.tensor.load.to.lds"); } std::pair getODSOperandIndexAndLength(unsigned index) { return {index, 1}; } ::mlir::Operation::operand_range getODSOperands(unsigned index) { auto valueRange = getODSOperandIndexAndLength(index); return {std::next(getOperation()->operand_begin(), valueRange.first), std::next(getOperation()->operand_begin(), valueRange.first + valueRange.second)}; } ::mlir::TypedValue<::mlir::VectorType> getDgroup0() { return ::llvm::cast<::mlir::TypedValue<::mlir::VectorType>>(*getODSOperands(0).begin()); } ::mlir::TypedValue<::mlir::VectorType> getDgroup1() { return ::llvm::cast<::mlir::TypedValue<::mlir::VectorType>>(*getODSOperands(1).begin()); } ::mlir::TypedValue<::mlir::VectorType> getDgroup2() { return ::llvm::cast<::mlir::TypedValue<::mlir::VectorType>>(*getODSOperands(2).begin()); } ::mlir::TypedValue<::mlir::VectorType> getDgroup3() { return ::llvm::cast<::mlir::TypedValue<::mlir::VectorType>>(*getODSOperands(3).begin()); } ::mlir::TypedValue<::mlir::VectorType> getDgroup4() { return ::llvm::cast<::mlir::TypedValue<::mlir::VectorType>>(*getODSOperands(4).begin()); } ::mlir::OpOperand &getDgroup0Mutable() { auto range = getODSOperandIndexAndLength(0); return getOperation()->getOpOperand(range.first); } ::mlir::OpOperand &getDgroup1Mutable() { auto range = getODSOperandIndexAndLength(1); return getOperation()->getOpOperand(range.first); } ::mlir::OpOperand &getDgroup2Mutable() { auto range = getODSOperandIndexAndLength(2); return getOperation()->getOpOperand(range.first); } ::mlir::OpOperand &getDgroup3Mutable() { auto range = getODSOperandIndexAndLength(3); return getOperation()->getOpOperand(range.first); } ::mlir::OpOperand &getDgroup4Mutable() { auto range = getODSOperandIndexAndLength(4); return getOperation()->getOpOperand(range.first); } std::pair getODSResultIndexAndLength(unsigned index) { return {index, 1}; } ::mlir::Operation::result_range getODSResults(unsigned index) { auto valueRange = getODSResultIndexAndLength(index); return {std::next(getOperation()->result_begin(), valueRange.first), std::next(getOperation()->result_begin(), valueRange.first + valueRange.second)}; } static ::llvm::LogicalResult setPropertiesFromAttr(Properties &prop, ::mlir::Attribute attr, ::llvm::function_ref<::mlir::InFlightDiagnostic()> emitError); static ::mlir::Attribute getPropertiesAsAttr(::mlir::MLIRContext *ctx, const Properties &prop); static llvm::hash_code computePropertiesHash(const Properties &prop); static std::optional getInherentAttr(::mlir::MLIRContext *ctx, const Properties &prop, llvm::StringRef name); static void setInherentAttr(Properties &prop, llvm::StringRef name, mlir::Attribute value); static void populateInherentAttrs(::mlir::MLIRContext *ctx, const Properties &prop, ::mlir::NamedAttrList &attrs); static ::llvm::LogicalResult verifyInherentAttrs(::mlir::OperationName opName, ::mlir::NamedAttrList &attrs, llvm::function_ref<::mlir::InFlightDiagnostic()> emitError); static ::llvm::LogicalResult readProperties(::mlir::DialectBytecodeReader &reader, ::mlir::OperationState &state); void writeProperties(::mlir::DialectBytecodeWriter &writer); ::mlir::Attribute getCachePolicyAttr() { return ::llvm::dyn_cast_or_null<::mlir::Attribute>(getProperties().cachePolicy); } ::mlir::Attribute getCachePolicy(); ::mlir::ArrayAttr getAliasScopesAttr() { return ::llvm::dyn_cast_or_null<::mlir::ArrayAttr>(getProperties().alias_scopes); } ::std::optional< ::mlir::ArrayAttr > getAliasScopes(); ::mlir::ArrayAttr getNoaliasScopesAttr() { return ::llvm::dyn_cast_or_null<::mlir::ArrayAttr>(getProperties().noalias_scopes); } ::std::optional< ::mlir::ArrayAttr > getNoaliasScopes(); ::mlir::ArrayAttr getTbaaAttr() { return ::llvm::dyn_cast_or_null<::mlir::ArrayAttr>(getProperties().tbaa); } ::std::optional< ::mlir::ArrayAttr > getTbaa(); void setCachePolicyAttr(::mlir::Attribute attr) { getProperties().cachePolicy = attr; } void setAliasScopesAttr(::mlir::ArrayAttr attr) { getProperties().alias_scopes = attr; } void setNoaliasScopesAttr(::mlir::ArrayAttr attr) { getProperties().noalias_scopes = attr; } void setTbaaAttr(::mlir::ArrayAttr attr) { getProperties().tbaa = attr; } ::mlir::Attribute removeAliasScopesAttr() { auto attr = getProperties().alias_scopes; getProperties().alias_scopes = {}; return attr; } ::mlir::Attribute removeNoaliasScopesAttr() { auto attr = getProperties().noalias_scopes; getProperties().noalias_scopes = {}; return attr; } ::mlir::Attribute removeTbaaAttr() { auto attr = getProperties().tbaa; getProperties().tbaa = {}; return attr; } static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::Value dgroup0, ::mlir::Value dgroup1, ::mlir::Value dgroup2, ::mlir::Value dgroup3, ::mlir::Value dgroup4, ::mlir::Attribute cachePolicy, /*optional*/::mlir::ArrayAttr alias_scopes, /*optional*/::mlir::ArrayAttr noalias_scopes, /*optional*/::mlir::ArrayAttr tbaa); static TensorLoadToLDSOp create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::Value dgroup0, ::mlir::Value dgroup1, ::mlir::Value dgroup2, ::mlir::Value dgroup3, ::mlir::Value dgroup4, ::mlir::Attribute cachePolicy, /*optional*/::mlir::ArrayAttr alias_scopes, /*optional*/::mlir::ArrayAttr noalias_scopes, /*optional*/::mlir::ArrayAttr tbaa); static TensorLoadToLDSOp create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::Value dgroup0, ::mlir::Value dgroup1, ::mlir::Value dgroup2, ::mlir::Value dgroup3, ::mlir::Value dgroup4, ::mlir::Attribute cachePolicy, /*optional*/::mlir::ArrayAttr alias_scopes, /*optional*/::mlir::ArrayAttr noalias_scopes, /*optional*/::mlir::ArrayAttr tbaa); static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::Value dgroup0, ::mlir::Value dgroup1, ::mlir::Value dgroup2, ::mlir::Value dgroup3, ::mlir::Value dgroup4, ::mlir::Attribute cachePolicy, /*optional*/::mlir::ArrayAttr alias_scopes, /*optional*/::mlir::ArrayAttr noalias_scopes, /*optional*/::mlir::ArrayAttr tbaa); static TensorLoadToLDSOp create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::Value dgroup0, ::mlir::Value dgroup1, ::mlir::Value dgroup2, ::mlir::Value dgroup3, ::mlir::Value dgroup4, ::mlir::Attribute cachePolicy, /*optional*/::mlir::ArrayAttr alias_scopes, /*optional*/::mlir::ArrayAttr noalias_scopes, /*optional*/::mlir::ArrayAttr tbaa); static TensorLoadToLDSOp create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::Value dgroup0, ::mlir::Value dgroup1, ::mlir::Value dgroup2, ::mlir::Value dgroup3, ::mlir::Value dgroup4, ::mlir::Attribute cachePolicy, /*optional*/::mlir::ArrayAttr alias_scopes, /*optional*/::mlir::ArrayAttr noalias_scopes, /*optional*/::mlir::ArrayAttr tbaa); static void build(::mlir::OpBuilder &, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, ::llvm::ArrayRef<::mlir::NamedAttribute> attributes = {}); static TensorLoadToLDSOp create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, ::llvm::ArrayRef<::mlir::NamedAttribute> attributes = {}); static TensorLoadToLDSOp create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, ::llvm::ArrayRef<::mlir::NamedAttribute> attributes = {}); static void build(::mlir::OpBuilder &, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, const Properties &properties, ::llvm::ArrayRef<::mlir::NamedAttribute> discardableAttributes = {}); static TensorLoadToLDSOp create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, const Properties &properties, ::llvm::ArrayRef<::mlir::NamedAttribute> discardableAttributes = {}); static TensorLoadToLDSOp create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, const Properties &properties, ::llvm::ArrayRef<::mlir::NamedAttribute> discardableAttributes = {}); static void populateDefaultProperties(::mlir::OperationName opName, Properties &properties); ::llvm::LogicalResult verifyInvariantsImpl(); ::llvm::LogicalResult verifyInvariants(); ::llvm::SmallVector<::mlir::Value> getAccessedOperands(); static ::mlir::ParseResult parse(::mlir::OpAsmParser &parser, ::mlir::OperationState &result); void print(::mlir::OpAsmPrinter &_odsPrinter); private: ::mlir::StringAttr getAttributeNameForIndex(unsigned index) { return getAttributeNameForIndex((*this)->getName(), index); } static ::mlir::StringAttr getAttributeNameForIndex(::mlir::OperationName name, unsigned index) { assert(index < 4 && "invalid attribute index"); assert(name.getStringRef() == getOperationName() && "invalid operation name"); assert(name.isRegistered() && "Operation isn't registered, missing a " "dependent dialect loading?"); return name.getAttributeNames()[index]; } public: }; } // namespace mlir::ROCDL MLIR_DECLARE_EXPLICIT_TYPE_ID(::mlir::ROCDL::TensorLoadToLDSOp) MLIR_DECLARE_EXPLICIT_TYPE_ID(::mlir::ROCDL::detail::TensorLoadToLDSOpGenericAdaptorBase::Properties) namespace mlir::ROCDL { //===----------------------------------------------------------------------===// // ::mlir::ROCDL::TensorStoreFromLDSOp declarations //===----------------------------------------------------------------------===// namespace detail { class TensorStoreFromLDSOpGenericAdaptorBase { public: struct Properties { using alias_scopesTy = ::mlir::ArrayAttr; alias_scopesTy alias_scopes; auto getAliasScopes() const { auto &propStorage = this->alias_scopes; return ::llvm::dyn_cast_or_null<::mlir::ArrayAttr>(propStorage); } void setAliasScopes(const ::mlir::ArrayAttr &propValue) { this->alias_scopes = propValue; } using cachePolicyTy = ::mlir::Attribute; cachePolicyTy cachePolicy; auto getCachePolicy() const { auto &propStorage = this->cachePolicy; return ::llvm::dyn_cast_or_null<::mlir::Attribute>(propStorage); } void setCachePolicy(const ::mlir::Attribute &propValue) { this->cachePolicy = propValue; } using noalias_scopesTy = ::mlir::ArrayAttr; noalias_scopesTy noalias_scopes; auto getNoaliasScopes() const { auto &propStorage = this->noalias_scopes; return ::llvm::dyn_cast_or_null<::mlir::ArrayAttr>(propStorage); } void setNoaliasScopes(const ::mlir::ArrayAttr &propValue) { this->noalias_scopes = propValue; } using tbaaTy = ::mlir::ArrayAttr; tbaaTy tbaa; auto getTbaa() const { auto &propStorage = this->tbaa; return ::llvm::dyn_cast_or_null<::mlir::ArrayAttr>(propStorage); } void setTbaa(const ::mlir::ArrayAttr &propValue) { this->tbaa = propValue; } bool operator==(const Properties &rhs) const { return rhs.alias_scopes == this->alias_scopes && rhs.cachePolicy == this->cachePolicy && rhs.noalias_scopes == this->noalias_scopes && rhs.tbaa == this->tbaa && true; } bool operator!=(const Properties &rhs) const { return !(*this == rhs); } }; protected: ::mlir::DictionaryAttr odsAttrs; ::std::optional<::mlir::OperationName> odsOpName; Properties properties; ::mlir::RegionRange odsRegions; public: TensorStoreFromLDSOpGenericAdaptorBase(::mlir::DictionaryAttr attrs, const Properties &properties, ::mlir::RegionRange regions = {}) : odsAttrs(attrs), properties(properties), odsRegions(regions) { if (odsAttrs) odsOpName.emplace("rocdl.tensor.store.from.lds", odsAttrs.getContext()); } TensorStoreFromLDSOpGenericAdaptorBase(TensorStoreFromLDSOp op); std::pair getODSOperandIndexAndLength(unsigned index, unsigned odsOperandsSize) { return {index, 1}; } const Properties &getProperties() { return properties; } ::mlir::DictionaryAttr getAttributes() { return odsAttrs; } ::mlir::Attribute getCachePolicyAttr(); ::mlir::Attribute getCachePolicy(); ::mlir::ArrayAttr getAliasScopesAttr() { auto attr = ::llvm::dyn_cast_or_null<::mlir::ArrayAttr>(getProperties().alias_scopes); return attr; } ::std::optional< ::mlir::ArrayAttr > getAliasScopes(); ::mlir::ArrayAttr getNoaliasScopesAttr() { auto attr = ::llvm::dyn_cast_or_null<::mlir::ArrayAttr>(getProperties().noalias_scopes); return attr; } ::std::optional< ::mlir::ArrayAttr > getNoaliasScopes(); ::mlir::ArrayAttr getTbaaAttr() { auto attr = ::llvm::dyn_cast_or_null<::mlir::ArrayAttr>(getProperties().tbaa); return attr; } ::std::optional< ::mlir::ArrayAttr > getTbaa(); }; } // namespace detail template class TensorStoreFromLDSOpGenericAdaptor : public detail::TensorStoreFromLDSOpGenericAdaptorBase { using ValueT = ::llvm::detail::ValueOfRange; using Base = detail::TensorStoreFromLDSOpGenericAdaptorBase; static constexpr int odsIndex_dgroup0 = 0; static constexpr int odsIndex_dgroup1 = 1; static constexpr int odsIndex_dgroup2 = 2; static constexpr int odsIndex_dgroup3 = 3; static constexpr int odsIndex_dgroup4 = 4; public: TensorStoreFromLDSOpGenericAdaptor(RangeT values, ::mlir::DictionaryAttr attrs, const Properties &properties, ::mlir::RegionRange regions = {}) : Base(attrs, properties, regions), odsOperands(values) {} TensorStoreFromLDSOpGenericAdaptor(RangeT values, ::mlir::DictionaryAttr attrs, ::mlir::PropertyRef properties, ::mlir::RegionRange regions = {}) : TensorStoreFromLDSOpGenericAdaptor(values, attrs, (properties ? *properties.as() : Properties{}), regions) {} TensorStoreFromLDSOpGenericAdaptor(RangeT values, ::mlir::DictionaryAttr attrs = nullptr) : TensorStoreFromLDSOpGenericAdaptor(values, attrs, Properties{}, {}) {} TensorStoreFromLDSOpGenericAdaptor(RangeT values, const TensorStoreFromLDSOpGenericAdaptorBase &base) : Base(base), odsOperands(values) {} template >> TensorStoreFromLDSOpGenericAdaptor(RangeT values, LateInst op) : Base(op), odsOperands(values) {} std::pair getODSOperandIndexAndLength(unsigned index) { return Base::getODSOperandIndexAndLength(index, odsOperands.size()); } RangeT getODSOperands(unsigned index) { auto valueRange = getODSOperandIndexAndLength(index); return {std::next(odsOperands.begin(), valueRange.first), std::next(odsOperands.begin(), valueRange.first + valueRange.second)}; } ValueT getDgroup0() { return (*getODSOperands(0).begin()); } ValueT getDgroup1() { return (*getODSOperands(1).begin()); } ValueT getDgroup2() { return (*getODSOperands(2).begin()); } ValueT getDgroup3() { return (*getODSOperands(3).begin()); } ValueT getDgroup4() { return (*getODSOperands(4).begin()); } RangeT getOperands() { return odsOperands; } private: RangeT odsOperands; }; class TensorStoreFromLDSOpAdaptor : public TensorStoreFromLDSOpGenericAdaptor<::mlir::ValueRange> { public: using TensorStoreFromLDSOpGenericAdaptor::TensorStoreFromLDSOpGenericAdaptor; TensorStoreFromLDSOpAdaptor(TensorStoreFromLDSOp op); ::llvm::LogicalResult verify(::mlir::Location loc); }; class TensorStoreFromLDSOp : public ::mlir::Op::Impl, ::mlir::OpTrait::OpInvariants, ::mlir::BytecodeOpInterface::Trait, ::mlir::LLVM::AliasAnalysisOpInterface::Trait> { public: using Op::Op; using Op::print; using Adaptor = TensorStoreFromLDSOpAdaptor; template using GenericAdaptor = TensorStoreFromLDSOpGenericAdaptor; using FoldAdaptor = GenericAdaptor<::llvm::ArrayRef<::mlir::Attribute>>; static constexpr int odsIndex_dgroup0 = 0; static constexpr int odsIndex_dgroup1 = 1; static constexpr int odsIndex_dgroup2 = 2; static constexpr int odsIndex_dgroup3 = 3; static constexpr int odsIndex_dgroup4 = 4; using Properties = FoldAdaptor::Properties; using ::mlir::LLVM::AliasAnalysisOpInterface::Trait::getAliasScopesOrNull; using ::mlir::LLVM::AliasAnalysisOpInterface::Trait::setAliasScopes; using ::mlir::LLVM::AliasAnalysisOpInterface::Trait::getNoAliasScopesOrNull; using ::mlir::LLVM::AliasAnalysisOpInterface::Trait::setNoAliasScopes; using ::mlir::LLVM::AliasAnalysisOpInterface::Trait::getTBAATagsOrNull; using ::mlir::LLVM::AliasAnalysisOpInterface::Trait::setTBAATags; static ::llvm::ArrayRef<::llvm::StringRef> getAttributeNames() { static ::llvm::StringRef attrNames[] = {::llvm::StringRef("alias_scopes"), ::llvm::StringRef("cachePolicy"), ::llvm::StringRef("noalias_scopes"), ::llvm::StringRef("tbaa")}; return ::llvm::ArrayRef(attrNames); } ::mlir::StringAttr getAliasScopesAttrName() { return getAttributeNameForIndex(0); } static ::mlir::StringAttr getAliasScopesAttrName(::mlir::OperationName name) { return getAttributeNameForIndex(name, 0); } ::mlir::StringAttr getCachePolicyAttrName() { return getAttributeNameForIndex(1); } static ::mlir::StringAttr getCachePolicyAttrName(::mlir::OperationName name) { return getAttributeNameForIndex(name, 1); } ::mlir::StringAttr getNoaliasScopesAttrName() { return getAttributeNameForIndex(2); } static ::mlir::StringAttr getNoaliasScopesAttrName(::mlir::OperationName name) { return getAttributeNameForIndex(name, 2); } ::mlir::StringAttr getTbaaAttrName() { return getAttributeNameForIndex(3); } static ::mlir::StringAttr getTbaaAttrName(::mlir::OperationName name) { return getAttributeNameForIndex(name, 3); } static constexpr ::llvm::StringLiteral getOperationName() { return ::llvm::StringLiteral("rocdl.tensor.store.from.lds"); } std::pair getODSOperandIndexAndLength(unsigned index) { return {index, 1}; } ::mlir::Operation::operand_range getODSOperands(unsigned index) { auto valueRange = getODSOperandIndexAndLength(index); return {std::next(getOperation()->operand_begin(), valueRange.first), std::next(getOperation()->operand_begin(), valueRange.first + valueRange.second)}; } ::mlir::TypedValue<::mlir::VectorType> getDgroup0() { return ::llvm::cast<::mlir::TypedValue<::mlir::VectorType>>(*getODSOperands(0).begin()); } ::mlir::TypedValue<::mlir::VectorType> getDgroup1() { return ::llvm::cast<::mlir::TypedValue<::mlir::VectorType>>(*getODSOperands(1).begin()); } ::mlir::TypedValue<::mlir::VectorType> getDgroup2() { return ::llvm::cast<::mlir::TypedValue<::mlir::VectorType>>(*getODSOperands(2).begin()); } ::mlir::TypedValue<::mlir::VectorType> getDgroup3() { return ::llvm::cast<::mlir::TypedValue<::mlir::VectorType>>(*getODSOperands(3).begin()); } ::mlir::TypedValue<::mlir::VectorType> getDgroup4() { return ::llvm::cast<::mlir::TypedValue<::mlir::VectorType>>(*getODSOperands(4).begin()); } ::mlir::OpOperand &getDgroup0Mutable() { auto range = getODSOperandIndexAndLength(0); return getOperation()->getOpOperand(range.first); } ::mlir::OpOperand &getDgroup1Mutable() { auto range = getODSOperandIndexAndLength(1); return getOperation()->getOpOperand(range.first); } ::mlir::OpOperand &getDgroup2Mutable() { auto range = getODSOperandIndexAndLength(2); return getOperation()->getOpOperand(range.first); } ::mlir::OpOperand &getDgroup3Mutable() { auto range = getODSOperandIndexAndLength(3); return getOperation()->getOpOperand(range.first); } ::mlir::OpOperand &getDgroup4Mutable() { auto range = getODSOperandIndexAndLength(4); return getOperation()->getOpOperand(range.first); } std::pair getODSResultIndexAndLength(unsigned index) { return {index, 1}; } ::mlir::Operation::result_range getODSResults(unsigned index) { auto valueRange = getODSResultIndexAndLength(index); return {std::next(getOperation()->result_begin(), valueRange.first), std::next(getOperation()->result_begin(), valueRange.first + valueRange.second)}; } static ::llvm::LogicalResult setPropertiesFromAttr(Properties &prop, ::mlir::Attribute attr, ::llvm::function_ref<::mlir::InFlightDiagnostic()> emitError); static ::mlir::Attribute getPropertiesAsAttr(::mlir::MLIRContext *ctx, const Properties &prop); static llvm::hash_code computePropertiesHash(const Properties &prop); static std::optional getInherentAttr(::mlir::MLIRContext *ctx, const Properties &prop, llvm::StringRef name); static void setInherentAttr(Properties &prop, llvm::StringRef name, mlir::Attribute value); static void populateInherentAttrs(::mlir::MLIRContext *ctx, const Properties &prop, ::mlir::NamedAttrList &attrs); static ::llvm::LogicalResult verifyInherentAttrs(::mlir::OperationName opName, ::mlir::NamedAttrList &attrs, llvm::function_ref<::mlir::InFlightDiagnostic()> emitError); static ::llvm::LogicalResult readProperties(::mlir::DialectBytecodeReader &reader, ::mlir::OperationState &state); void writeProperties(::mlir::DialectBytecodeWriter &writer); ::mlir::Attribute getCachePolicyAttr() { return ::llvm::dyn_cast_or_null<::mlir::Attribute>(getProperties().cachePolicy); } ::mlir::Attribute getCachePolicy(); ::mlir::ArrayAttr getAliasScopesAttr() { return ::llvm::dyn_cast_or_null<::mlir::ArrayAttr>(getProperties().alias_scopes); } ::std::optional< ::mlir::ArrayAttr > getAliasScopes(); ::mlir::ArrayAttr getNoaliasScopesAttr() { return ::llvm::dyn_cast_or_null<::mlir::ArrayAttr>(getProperties().noalias_scopes); } ::std::optional< ::mlir::ArrayAttr > getNoaliasScopes(); ::mlir::ArrayAttr getTbaaAttr() { return ::llvm::dyn_cast_or_null<::mlir::ArrayAttr>(getProperties().tbaa); } ::std::optional< ::mlir::ArrayAttr > getTbaa(); void setCachePolicyAttr(::mlir::Attribute attr) { getProperties().cachePolicy = attr; } void setAliasScopesAttr(::mlir::ArrayAttr attr) { getProperties().alias_scopes = attr; } void setNoaliasScopesAttr(::mlir::ArrayAttr attr) { getProperties().noalias_scopes = attr; } void setTbaaAttr(::mlir::ArrayAttr attr) { getProperties().tbaa = attr; } ::mlir::Attribute removeAliasScopesAttr() { auto attr = getProperties().alias_scopes; getProperties().alias_scopes = {}; return attr; } ::mlir::Attribute removeNoaliasScopesAttr() { auto attr = getProperties().noalias_scopes; getProperties().noalias_scopes = {}; return attr; } ::mlir::Attribute removeTbaaAttr() { auto attr = getProperties().tbaa; getProperties().tbaa = {}; return attr; } static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::Value dgroup0, ::mlir::Value dgroup1, ::mlir::Value dgroup2, ::mlir::Value dgroup3, ::mlir::Value dgroup4, ::mlir::Attribute cachePolicy, /*optional*/::mlir::ArrayAttr alias_scopes, /*optional*/::mlir::ArrayAttr noalias_scopes, /*optional*/::mlir::ArrayAttr tbaa); static TensorStoreFromLDSOp create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::Value dgroup0, ::mlir::Value dgroup1, ::mlir::Value dgroup2, ::mlir::Value dgroup3, ::mlir::Value dgroup4, ::mlir::Attribute cachePolicy, /*optional*/::mlir::ArrayAttr alias_scopes, /*optional*/::mlir::ArrayAttr noalias_scopes, /*optional*/::mlir::ArrayAttr tbaa); static TensorStoreFromLDSOp create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::Value dgroup0, ::mlir::Value dgroup1, ::mlir::Value dgroup2, ::mlir::Value dgroup3, ::mlir::Value dgroup4, ::mlir::Attribute cachePolicy, /*optional*/::mlir::ArrayAttr alias_scopes, /*optional*/::mlir::ArrayAttr noalias_scopes, /*optional*/::mlir::ArrayAttr tbaa); static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::Value dgroup0, ::mlir::Value dgroup1, ::mlir::Value dgroup2, ::mlir::Value dgroup3, ::mlir::Value dgroup4, ::mlir::Attribute cachePolicy, /*optional*/::mlir::ArrayAttr alias_scopes, /*optional*/::mlir::ArrayAttr noalias_scopes, /*optional*/::mlir::ArrayAttr tbaa); static TensorStoreFromLDSOp create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::Value dgroup0, ::mlir::Value dgroup1, ::mlir::Value dgroup2, ::mlir::Value dgroup3, ::mlir::Value dgroup4, ::mlir::Attribute cachePolicy, /*optional*/::mlir::ArrayAttr alias_scopes, /*optional*/::mlir::ArrayAttr noalias_scopes, /*optional*/::mlir::ArrayAttr tbaa); static TensorStoreFromLDSOp create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::Value dgroup0, ::mlir::Value dgroup1, ::mlir::Value dgroup2, ::mlir::Value dgroup3, ::mlir::Value dgroup4, ::mlir::Attribute cachePolicy, /*optional*/::mlir::ArrayAttr alias_scopes, /*optional*/::mlir::ArrayAttr noalias_scopes, /*optional*/::mlir::ArrayAttr tbaa); static void build(::mlir::OpBuilder &, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, ::llvm::ArrayRef<::mlir::NamedAttribute> attributes = {}); static TensorStoreFromLDSOp create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, ::llvm::ArrayRef<::mlir::NamedAttribute> attributes = {}); static TensorStoreFromLDSOp create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, ::llvm::ArrayRef<::mlir::NamedAttribute> attributes = {}); static void build(::mlir::OpBuilder &, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, const Properties &properties, ::llvm::ArrayRef<::mlir::NamedAttribute> discardableAttributes = {}); static TensorStoreFromLDSOp create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, const Properties &properties, ::llvm::ArrayRef<::mlir::NamedAttribute> discardableAttributes = {}); static TensorStoreFromLDSOp create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, const Properties &properties, ::llvm::ArrayRef<::mlir::NamedAttribute> discardableAttributes = {}); static void populateDefaultProperties(::mlir::OperationName opName, Properties &properties); ::llvm::LogicalResult verifyInvariantsImpl(); ::llvm::LogicalResult verifyInvariants(); ::llvm::SmallVector<::mlir::Value> getAccessedOperands(); static ::mlir::ParseResult parse(::mlir::OpAsmParser &parser, ::mlir::OperationState &result); void print(::mlir::OpAsmPrinter &_odsPrinter); private: ::mlir::StringAttr getAttributeNameForIndex(unsigned index) { return getAttributeNameForIndex((*this)->getName(), index); } static ::mlir::StringAttr getAttributeNameForIndex(::mlir::OperationName name, unsigned index) { assert(index < 4 && "invalid attribute index"); assert(name.getStringRef() == getOperationName() && "invalid operation name"); assert(name.isRegistered() && "Operation isn't registered, missing a " "dependent dialect loading?"); return name.getAttributeNames()[index]; } public: }; } // namespace mlir::ROCDL MLIR_DECLARE_EXPLICIT_TYPE_ID(::mlir::ROCDL::TensorStoreFromLDSOp) MLIR_DECLARE_EXPLICIT_TYPE_ID(::mlir::ROCDL::detail::TensorStoreFromLDSOpGenericAdaptorBase::Properties) namespace mlir::ROCDL { //===----------------------------------------------------------------------===// // ::mlir::ROCDL::ThreadIdXOp declarations //===----------------------------------------------------------------------===// namespace detail { class ThreadIdXOpGenericAdaptorBase { public: struct Properties { using rangeTy = ::mlir::LLVM::ConstantRangeAttr; rangeTy range; auto getRange() const { auto &propStorage = this->range; return ::llvm::dyn_cast_or_null<::mlir::LLVM::ConstantRangeAttr>(propStorage); } void setRange(const ::mlir::LLVM::ConstantRangeAttr &propValue) { this->range = propValue; } bool operator==(const Properties &rhs) const { return rhs.range == this->range && true; } bool operator!=(const Properties &rhs) const { return !(*this == rhs); } }; protected: ::mlir::DictionaryAttr odsAttrs; ::std::optional<::mlir::OperationName> odsOpName; Properties properties; ::mlir::RegionRange odsRegions; public: ThreadIdXOpGenericAdaptorBase(::mlir::DictionaryAttr attrs, const Properties &properties, ::mlir::RegionRange regions = {}) : odsAttrs(attrs), properties(properties), odsRegions(regions) { if (odsAttrs) odsOpName.emplace("rocdl.workitem.id.x", odsAttrs.getContext()); } ThreadIdXOpGenericAdaptorBase(ThreadIdXOp op); std::pair getODSOperandIndexAndLength(unsigned index, unsigned odsOperandsSize) { return {index, 1}; } const Properties &getProperties() { return properties; } ::mlir::DictionaryAttr getAttributes() { return odsAttrs; } ::mlir::LLVM::ConstantRangeAttr getRangeAttr() { auto attr = ::llvm::dyn_cast_or_null<::mlir::LLVM::ConstantRangeAttr>(getProperties().range); return attr; } ::std::optional<::mlir::LLVM::ConstantRangeAttr> getRange(); }; } // namespace detail template class ThreadIdXOpGenericAdaptor : public detail::ThreadIdXOpGenericAdaptorBase { using ValueT = ::llvm::detail::ValueOfRange; using Base = detail::ThreadIdXOpGenericAdaptorBase; public: ThreadIdXOpGenericAdaptor(RangeT values, ::mlir::DictionaryAttr attrs, const Properties &properties, ::mlir::RegionRange regions = {}) : Base(attrs, properties, regions), odsOperands(values) {} ThreadIdXOpGenericAdaptor(RangeT values, ::mlir::DictionaryAttr attrs, ::mlir::PropertyRef properties, ::mlir::RegionRange regions = {}) : ThreadIdXOpGenericAdaptor(values, attrs, (properties ? *properties.as() : Properties{}), regions) {} ThreadIdXOpGenericAdaptor(RangeT values, ::mlir::DictionaryAttr attrs = nullptr) : ThreadIdXOpGenericAdaptor(values, attrs, Properties{}, {}) {} ThreadIdXOpGenericAdaptor(RangeT values, const ThreadIdXOpGenericAdaptorBase &base) : Base(base), odsOperands(values) {} template >> ThreadIdXOpGenericAdaptor(RangeT values, LateInst op) : Base(op), odsOperands(values) {} std::pair getODSOperandIndexAndLength(unsigned index) { return Base::getODSOperandIndexAndLength(index, odsOperands.size()); } RangeT getODSOperands(unsigned index) { auto valueRange = getODSOperandIndexAndLength(index); return {std::next(odsOperands.begin(), valueRange.first), std::next(odsOperands.begin(), valueRange.first + valueRange.second)}; } RangeT getOperands() { return odsOperands; } private: RangeT odsOperands; }; class ThreadIdXOpAdaptor : public ThreadIdXOpGenericAdaptor<::mlir::ValueRange> { public: using ThreadIdXOpGenericAdaptor::ThreadIdXOpGenericAdaptor; ThreadIdXOpAdaptor(ThreadIdXOp op); ::llvm::LogicalResult verify(::mlir::Location loc); }; class ThreadIdXOp : public ::mlir::Op::Impl, ::mlir::OpTrait::ZeroSuccessors, ::mlir::OpTrait::ZeroOperands, ::mlir::OpTrait::OpInvariants, ::mlir::BytecodeOpInterface::Trait, ::mlir::ConditionallySpeculatable::Trait, ::mlir::OpTrait::AlwaysSpeculatableImplTrait, ::mlir::MemoryEffectOpInterface::Trait> { public: using Op::Op; using Op::print; using Adaptor = ThreadIdXOpAdaptor; template using GenericAdaptor = ThreadIdXOpGenericAdaptor; using FoldAdaptor = GenericAdaptor<::llvm::ArrayRef<::mlir::Attribute>>; using Properties = FoldAdaptor::Properties; static ::llvm::ArrayRef<::llvm::StringRef> getAttributeNames() { static ::llvm::StringRef attrNames[] = {::llvm::StringRef("range")}; return ::llvm::ArrayRef(attrNames); } ::mlir::StringAttr getRangeAttrName() { return getAttributeNameForIndex(0); } static ::mlir::StringAttr getRangeAttrName(::mlir::OperationName name) { return getAttributeNameForIndex(name, 0); } static constexpr ::llvm::StringLiteral getOperationName() { return ::llvm::StringLiteral("rocdl.workitem.id.x"); } std::pair getODSOperandIndexAndLength(unsigned index) { return {index, 1}; } ::mlir::Operation::operand_range getODSOperands(unsigned index) { auto valueRange = getODSOperandIndexAndLength(index); return {std::next(getOperation()->operand_begin(), valueRange.first), std::next(getOperation()->operand_begin(), valueRange.first + valueRange.second)}; } std::pair getODSResultIndexAndLength(unsigned index) { return {index, 1}; } ::mlir::Operation::result_range getODSResults(unsigned index) { auto valueRange = getODSResultIndexAndLength(index); return {std::next(getOperation()->result_begin(), valueRange.first), std::next(getOperation()->result_begin(), valueRange.first + valueRange.second)}; } ::mlir::TypedValue<::mlir::Type> getRes() { return ::llvm::cast<::mlir::TypedValue<::mlir::Type>>(*getODSResults(0).begin()); } static ::llvm::LogicalResult setPropertiesFromAttr(Properties &prop, ::mlir::Attribute attr, ::llvm::function_ref<::mlir::InFlightDiagnostic()> emitError); static ::mlir::Attribute getPropertiesAsAttr(::mlir::MLIRContext *ctx, const Properties &prop); static llvm::hash_code computePropertiesHash(const Properties &prop); static std::optional getInherentAttr(::mlir::MLIRContext *ctx, const Properties &prop, llvm::StringRef name); static void setInherentAttr(Properties &prop, llvm::StringRef name, mlir::Attribute value); static void populateInherentAttrs(::mlir::MLIRContext *ctx, const Properties &prop, ::mlir::NamedAttrList &attrs); static ::llvm::LogicalResult verifyInherentAttrs(::mlir::OperationName opName, ::mlir::NamedAttrList &attrs, llvm::function_ref<::mlir::InFlightDiagnostic()> emitError); static ::llvm::LogicalResult readProperties(::mlir::DialectBytecodeReader &reader, ::mlir::OperationState &state); void writeProperties(::mlir::DialectBytecodeWriter &writer); ::mlir::LLVM::ConstantRangeAttr getRangeAttr() { return ::llvm::dyn_cast_or_null<::mlir::LLVM::ConstantRangeAttr>(getProperties().range); } ::std::optional<::mlir::LLVM::ConstantRangeAttr> getRange(); void setRangeAttr(::mlir::LLVM::ConstantRangeAttr attr) { getProperties().range = attr; } ::mlir::Attribute removeRangeAttr() { auto attr = getProperties().range; getProperties().range = {}; return attr; } static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, Type resultType); static ThreadIdXOp create(::mlir::OpBuilder &builder, ::mlir::Location location, Type resultType); static ThreadIdXOp create(::mlir::ImplicitLocOpBuilder &builder, Type resultType); static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::Type res, /*optional*/::mlir::LLVM::ConstantRangeAttr range); static ThreadIdXOp create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::Type res, /*optional*/::mlir::LLVM::ConstantRangeAttr range); static ThreadIdXOp create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::Type res, /*optional*/::mlir::LLVM::ConstantRangeAttr range); static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, /*optional*/::mlir::LLVM::ConstantRangeAttr range); static ThreadIdXOp create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, /*optional*/::mlir::LLVM::ConstantRangeAttr range); static ThreadIdXOp create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, /*optional*/::mlir::LLVM::ConstantRangeAttr range); static void build(::mlir::OpBuilder &, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, ::llvm::ArrayRef<::mlir::NamedAttribute> attributes = {}); static ThreadIdXOp create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, ::llvm::ArrayRef<::mlir::NamedAttribute> attributes = {}); static ThreadIdXOp create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, ::llvm::ArrayRef<::mlir::NamedAttribute> attributes = {}); static void build(::mlir::OpBuilder &, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, const Properties &properties, ::llvm::ArrayRef<::mlir::NamedAttribute> discardableAttributes = {}); static ThreadIdXOp create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, const Properties &properties, ::llvm::ArrayRef<::mlir::NamedAttribute> discardableAttributes = {}); static ThreadIdXOp create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, const Properties &properties, ::llvm::ArrayRef<::mlir::NamedAttribute> discardableAttributes = {}); ::llvm::LogicalResult verifyInvariantsImpl(); ::llvm::LogicalResult verifyInvariants(); static ::mlir::ParseResult parse(::mlir::OpAsmParser &parser, ::mlir::OperationState &result); void print(::mlir::OpAsmPrinter &_odsPrinter); void getEffects(::llvm::SmallVectorImpl<::mlir::SideEffects::EffectInstance<::mlir::MemoryEffects::Effect>> &effects); private: ::mlir::StringAttr getAttributeNameForIndex(unsigned index) { return getAttributeNameForIndex((*this)->getName(), index); } static ::mlir::StringAttr getAttributeNameForIndex(::mlir::OperationName name, unsigned index) { assert(index < 1 && "invalid attribute index"); assert(name.getStringRef() == getOperationName() && "invalid operation name"); assert(name.isRegistered() && "Operation isn't registered, missing a " "dependent dialect loading?"); return name.getAttributeNames()[index]; } public: }; } // namespace mlir::ROCDL MLIR_DECLARE_EXPLICIT_TYPE_ID(::mlir::ROCDL::ThreadIdXOp) MLIR_DECLARE_EXPLICIT_TYPE_ID(::mlir::ROCDL::detail::ThreadIdXOpGenericAdaptorBase::Properties) namespace mlir::ROCDL { //===----------------------------------------------------------------------===// // ::mlir::ROCDL::ThreadIdYOp declarations //===----------------------------------------------------------------------===// namespace detail { class ThreadIdYOpGenericAdaptorBase { public: struct Properties { using rangeTy = ::mlir::LLVM::ConstantRangeAttr; rangeTy range; auto getRange() const { auto &propStorage = this->range; return ::llvm::dyn_cast_or_null<::mlir::LLVM::ConstantRangeAttr>(propStorage); } void setRange(const ::mlir::LLVM::ConstantRangeAttr &propValue) { this->range = propValue; } bool operator==(const Properties &rhs) const { return rhs.range == this->range && true; } bool operator!=(const Properties &rhs) const { return !(*this == rhs); } }; protected: ::mlir::DictionaryAttr odsAttrs; ::std::optional<::mlir::OperationName> odsOpName; Properties properties; ::mlir::RegionRange odsRegions; public: ThreadIdYOpGenericAdaptorBase(::mlir::DictionaryAttr attrs, const Properties &properties, ::mlir::RegionRange regions = {}) : odsAttrs(attrs), properties(properties), odsRegions(regions) { if (odsAttrs) odsOpName.emplace("rocdl.workitem.id.y", odsAttrs.getContext()); } ThreadIdYOpGenericAdaptorBase(ThreadIdYOp op); std::pair getODSOperandIndexAndLength(unsigned index, unsigned odsOperandsSize) { return {index, 1}; } const Properties &getProperties() { return properties; } ::mlir::DictionaryAttr getAttributes() { return odsAttrs; } ::mlir::LLVM::ConstantRangeAttr getRangeAttr() { auto attr = ::llvm::dyn_cast_or_null<::mlir::LLVM::ConstantRangeAttr>(getProperties().range); return attr; } ::std::optional<::mlir::LLVM::ConstantRangeAttr> getRange(); }; } // namespace detail template class ThreadIdYOpGenericAdaptor : public detail::ThreadIdYOpGenericAdaptorBase { using ValueT = ::llvm::detail::ValueOfRange; using Base = detail::ThreadIdYOpGenericAdaptorBase; public: ThreadIdYOpGenericAdaptor(RangeT values, ::mlir::DictionaryAttr attrs, const Properties &properties, ::mlir::RegionRange regions = {}) : Base(attrs, properties, regions), odsOperands(values) {} ThreadIdYOpGenericAdaptor(RangeT values, ::mlir::DictionaryAttr attrs, ::mlir::PropertyRef properties, ::mlir::RegionRange regions = {}) : ThreadIdYOpGenericAdaptor(values, attrs, (properties ? *properties.as() : Properties{}), regions) {} ThreadIdYOpGenericAdaptor(RangeT values, ::mlir::DictionaryAttr attrs = nullptr) : ThreadIdYOpGenericAdaptor(values, attrs, Properties{}, {}) {} ThreadIdYOpGenericAdaptor(RangeT values, const ThreadIdYOpGenericAdaptorBase &base) : Base(base), odsOperands(values) {} template >> ThreadIdYOpGenericAdaptor(RangeT values, LateInst op) : Base(op), odsOperands(values) {} std::pair getODSOperandIndexAndLength(unsigned index) { return Base::getODSOperandIndexAndLength(index, odsOperands.size()); } RangeT getODSOperands(unsigned index) { auto valueRange = getODSOperandIndexAndLength(index); return {std::next(odsOperands.begin(), valueRange.first), std::next(odsOperands.begin(), valueRange.first + valueRange.second)}; } RangeT getOperands() { return odsOperands; } private: RangeT odsOperands; }; class ThreadIdYOpAdaptor : public ThreadIdYOpGenericAdaptor<::mlir::ValueRange> { public: using ThreadIdYOpGenericAdaptor::ThreadIdYOpGenericAdaptor; ThreadIdYOpAdaptor(ThreadIdYOp op); ::llvm::LogicalResult verify(::mlir::Location loc); }; class ThreadIdYOp : public ::mlir::Op::Impl, ::mlir::OpTrait::ZeroSuccessors, ::mlir::OpTrait::ZeroOperands, ::mlir::OpTrait::OpInvariants, ::mlir::BytecodeOpInterface::Trait, ::mlir::ConditionallySpeculatable::Trait, ::mlir::OpTrait::AlwaysSpeculatableImplTrait, ::mlir::MemoryEffectOpInterface::Trait> { public: using Op::Op; using Op::print; using Adaptor = ThreadIdYOpAdaptor; template using GenericAdaptor = ThreadIdYOpGenericAdaptor; using FoldAdaptor = GenericAdaptor<::llvm::ArrayRef<::mlir::Attribute>>; using Properties = FoldAdaptor::Properties; static ::llvm::ArrayRef<::llvm::StringRef> getAttributeNames() { static ::llvm::StringRef attrNames[] = {::llvm::StringRef("range")}; return ::llvm::ArrayRef(attrNames); } ::mlir::StringAttr getRangeAttrName() { return getAttributeNameForIndex(0); } static ::mlir::StringAttr getRangeAttrName(::mlir::OperationName name) { return getAttributeNameForIndex(name, 0); } static constexpr ::llvm::StringLiteral getOperationName() { return ::llvm::StringLiteral("rocdl.workitem.id.y"); } std::pair getODSOperandIndexAndLength(unsigned index) { return {index, 1}; } ::mlir::Operation::operand_range getODSOperands(unsigned index) { auto valueRange = getODSOperandIndexAndLength(index); return {std::next(getOperation()->operand_begin(), valueRange.first), std::next(getOperation()->operand_begin(), valueRange.first + valueRange.second)}; } std::pair getODSResultIndexAndLength(unsigned index) { return {index, 1}; } ::mlir::Operation::result_range getODSResults(unsigned index) { auto valueRange = getODSResultIndexAndLength(index); return {std::next(getOperation()->result_begin(), valueRange.first), std::next(getOperation()->result_begin(), valueRange.first + valueRange.second)}; } ::mlir::TypedValue<::mlir::Type> getRes() { return ::llvm::cast<::mlir::TypedValue<::mlir::Type>>(*getODSResults(0).begin()); } static ::llvm::LogicalResult setPropertiesFromAttr(Properties &prop, ::mlir::Attribute attr, ::llvm::function_ref<::mlir::InFlightDiagnostic()> emitError); static ::mlir::Attribute getPropertiesAsAttr(::mlir::MLIRContext *ctx, const Properties &prop); static llvm::hash_code computePropertiesHash(const Properties &prop); static std::optional getInherentAttr(::mlir::MLIRContext *ctx, const Properties &prop, llvm::StringRef name); static void setInherentAttr(Properties &prop, llvm::StringRef name, mlir::Attribute value); static void populateInherentAttrs(::mlir::MLIRContext *ctx, const Properties &prop, ::mlir::NamedAttrList &attrs); static ::llvm::LogicalResult verifyInherentAttrs(::mlir::OperationName opName, ::mlir::NamedAttrList &attrs, llvm::function_ref<::mlir::InFlightDiagnostic()> emitError); static ::llvm::LogicalResult readProperties(::mlir::DialectBytecodeReader &reader, ::mlir::OperationState &state); void writeProperties(::mlir::DialectBytecodeWriter &writer); ::mlir::LLVM::ConstantRangeAttr getRangeAttr() { return ::llvm::dyn_cast_or_null<::mlir::LLVM::ConstantRangeAttr>(getProperties().range); } ::std::optional<::mlir::LLVM::ConstantRangeAttr> getRange(); void setRangeAttr(::mlir::LLVM::ConstantRangeAttr attr) { getProperties().range = attr; } ::mlir::Attribute removeRangeAttr() { auto attr = getProperties().range; getProperties().range = {}; return attr; } static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, Type resultType); static ThreadIdYOp create(::mlir::OpBuilder &builder, ::mlir::Location location, Type resultType); static ThreadIdYOp create(::mlir::ImplicitLocOpBuilder &builder, Type resultType); static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::Type res, /*optional*/::mlir::LLVM::ConstantRangeAttr range); static ThreadIdYOp create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::Type res, /*optional*/::mlir::LLVM::ConstantRangeAttr range); static ThreadIdYOp create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::Type res, /*optional*/::mlir::LLVM::ConstantRangeAttr range); static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, /*optional*/::mlir::LLVM::ConstantRangeAttr range); static ThreadIdYOp create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, /*optional*/::mlir::LLVM::ConstantRangeAttr range); static ThreadIdYOp create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, /*optional*/::mlir::LLVM::ConstantRangeAttr range); static void build(::mlir::OpBuilder &, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, ::llvm::ArrayRef<::mlir::NamedAttribute> attributes = {}); static ThreadIdYOp create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, ::llvm::ArrayRef<::mlir::NamedAttribute> attributes = {}); static ThreadIdYOp create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, ::llvm::ArrayRef<::mlir::NamedAttribute> attributes = {}); static void build(::mlir::OpBuilder &, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, const Properties &properties, ::llvm::ArrayRef<::mlir::NamedAttribute> discardableAttributes = {}); static ThreadIdYOp create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, const Properties &properties, ::llvm::ArrayRef<::mlir::NamedAttribute> discardableAttributes = {}); static ThreadIdYOp create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, const Properties &properties, ::llvm::ArrayRef<::mlir::NamedAttribute> discardableAttributes = {}); ::llvm::LogicalResult verifyInvariantsImpl(); ::llvm::LogicalResult verifyInvariants(); static ::mlir::ParseResult parse(::mlir::OpAsmParser &parser, ::mlir::OperationState &result); void print(::mlir::OpAsmPrinter &_odsPrinter); void getEffects(::llvm::SmallVectorImpl<::mlir::SideEffects::EffectInstance<::mlir::MemoryEffects::Effect>> &effects); private: ::mlir::StringAttr getAttributeNameForIndex(unsigned index) { return getAttributeNameForIndex((*this)->getName(), index); } static ::mlir::StringAttr getAttributeNameForIndex(::mlir::OperationName name, unsigned index) { assert(index < 1 && "invalid attribute index"); assert(name.getStringRef() == getOperationName() && "invalid operation name"); assert(name.isRegistered() && "Operation isn't registered, missing a " "dependent dialect loading?"); return name.getAttributeNames()[index]; } public: }; } // namespace mlir::ROCDL MLIR_DECLARE_EXPLICIT_TYPE_ID(::mlir::ROCDL::ThreadIdYOp) MLIR_DECLARE_EXPLICIT_TYPE_ID(::mlir::ROCDL::detail::ThreadIdYOpGenericAdaptorBase::Properties) namespace mlir::ROCDL { //===----------------------------------------------------------------------===// // ::mlir::ROCDL::ThreadIdZOp declarations //===----------------------------------------------------------------------===// namespace detail { class ThreadIdZOpGenericAdaptorBase { public: struct Properties { using rangeTy = ::mlir::LLVM::ConstantRangeAttr; rangeTy range; auto getRange() const { auto &propStorage = this->range; return ::llvm::dyn_cast_or_null<::mlir::LLVM::ConstantRangeAttr>(propStorage); } void setRange(const ::mlir::LLVM::ConstantRangeAttr &propValue) { this->range = propValue; } bool operator==(const Properties &rhs) const { return rhs.range == this->range && true; } bool operator!=(const Properties &rhs) const { return !(*this == rhs); } }; protected: ::mlir::DictionaryAttr odsAttrs; ::std::optional<::mlir::OperationName> odsOpName; Properties properties; ::mlir::RegionRange odsRegions; public: ThreadIdZOpGenericAdaptorBase(::mlir::DictionaryAttr attrs, const Properties &properties, ::mlir::RegionRange regions = {}) : odsAttrs(attrs), properties(properties), odsRegions(regions) { if (odsAttrs) odsOpName.emplace("rocdl.workitem.id.z", odsAttrs.getContext()); } ThreadIdZOpGenericAdaptorBase(ThreadIdZOp op); std::pair getODSOperandIndexAndLength(unsigned index, unsigned odsOperandsSize) { return {index, 1}; } const Properties &getProperties() { return properties; } ::mlir::DictionaryAttr getAttributes() { return odsAttrs; } ::mlir::LLVM::ConstantRangeAttr getRangeAttr() { auto attr = ::llvm::dyn_cast_or_null<::mlir::LLVM::ConstantRangeAttr>(getProperties().range); return attr; } ::std::optional<::mlir::LLVM::ConstantRangeAttr> getRange(); }; } // namespace detail template class ThreadIdZOpGenericAdaptor : public detail::ThreadIdZOpGenericAdaptorBase { using ValueT = ::llvm::detail::ValueOfRange; using Base = detail::ThreadIdZOpGenericAdaptorBase; public: ThreadIdZOpGenericAdaptor(RangeT values, ::mlir::DictionaryAttr attrs, const Properties &properties, ::mlir::RegionRange regions = {}) : Base(attrs, properties, regions), odsOperands(values) {} ThreadIdZOpGenericAdaptor(RangeT values, ::mlir::DictionaryAttr attrs, ::mlir::PropertyRef properties, ::mlir::RegionRange regions = {}) : ThreadIdZOpGenericAdaptor(values, attrs, (properties ? *properties.as() : Properties{}), regions) {} ThreadIdZOpGenericAdaptor(RangeT values, ::mlir::DictionaryAttr attrs = nullptr) : ThreadIdZOpGenericAdaptor(values, attrs, Properties{}, {}) {} ThreadIdZOpGenericAdaptor(RangeT values, const ThreadIdZOpGenericAdaptorBase &base) : Base(base), odsOperands(values) {} template >> ThreadIdZOpGenericAdaptor(RangeT values, LateInst op) : Base(op), odsOperands(values) {} std::pair getODSOperandIndexAndLength(unsigned index) { return Base::getODSOperandIndexAndLength(index, odsOperands.size()); } RangeT getODSOperands(unsigned index) { auto valueRange = getODSOperandIndexAndLength(index); return {std::next(odsOperands.begin(), valueRange.first), std::next(odsOperands.begin(), valueRange.first + valueRange.second)}; } RangeT getOperands() { return odsOperands; } private: RangeT odsOperands; }; class ThreadIdZOpAdaptor : public ThreadIdZOpGenericAdaptor<::mlir::ValueRange> { public: using ThreadIdZOpGenericAdaptor::ThreadIdZOpGenericAdaptor; ThreadIdZOpAdaptor(ThreadIdZOp op); ::llvm::LogicalResult verify(::mlir::Location loc); }; class ThreadIdZOp : public ::mlir::Op::Impl, ::mlir::OpTrait::ZeroSuccessors, ::mlir::OpTrait::ZeroOperands, ::mlir::OpTrait::OpInvariants, ::mlir::BytecodeOpInterface::Trait, ::mlir::ConditionallySpeculatable::Trait, ::mlir::OpTrait::AlwaysSpeculatableImplTrait, ::mlir::MemoryEffectOpInterface::Trait> { public: using Op::Op; using Op::print; using Adaptor = ThreadIdZOpAdaptor; template using GenericAdaptor = ThreadIdZOpGenericAdaptor; using FoldAdaptor = GenericAdaptor<::llvm::ArrayRef<::mlir::Attribute>>; using Properties = FoldAdaptor::Properties; static ::llvm::ArrayRef<::llvm::StringRef> getAttributeNames() { static ::llvm::StringRef attrNames[] = {::llvm::StringRef("range")}; return ::llvm::ArrayRef(attrNames); } ::mlir::StringAttr getRangeAttrName() { return getAttributeNameForIndex(0); } static ::mlir::StringAttr getRangeAttrName(::mlir::OperationName name) { return getAttributeNameForIndex(name, 0); } static constexpr ::llvm::StringLiteral getOperationName() { return ::llvm::StringLiteral("rocdl.workitem.id.z"); } std::pair getODSOperandIndexAndLength(unsigned index) { return {index, 1}; } ::mlir::Operation::operand_range getODSOperands(unsigned index) { auto valueRange = getODSOperandIndexAndLength(index); return {std::next(getOperation()->operand_begin(), valueRange.first), std::next(getOperation()->operand_begin(), valueRange.first + valueRange.second)}; } std::pair getODSResultIndexAndLength(unsigned index) { return {index, 1}; } ::mlir::Operation::result_range getODSResults(unsigned index) { auto valueRange = getODSResultIndexAndLength(index); return {std::next(getOperation()->result_begin(), valueRange.first), std::next(getOperation()->result_begin(), valueRange.first + valueRange.second)}; } ::mlir::TypedValue<::mlir::Type> getRes() { return ::llvm::cast<::mlir::TypedValue<::mlir::Type>>(*getODSResults(0).begin()); } static ::llvm::LogicalResult setPropertiesFromAttr(Properties &prop, ::mlir::Attribute attr, ::llvm::function_ref<::mlir::InFlightDiagnostic()> emitError); static ::mlir::Attribute getPropertiesAsAttr(::mlir::MLIRContext *ctx, const Properties &prop); static llvm::hash_code computePropertiesHash(const Properties &prop); static std::optional getInherentAttr(::mlir::MLIRContext *ctx, const Properties &prop, llvm::StringRef name); static void setInherentAttr(Properties &prop, llvm::StringRef name, mlir::Attribute value); static void populateInherentAttrs(::mlir::MLIRContext *ctx, const Properties &prop, ::mlir::NamedAttrList &attrs); static ::llvm::LogicalResult verifyInherentAttrs(::mlir::OperationName opName, ::mlir::NamedAttrList &attrs, llvm::function_ref<::mlir::InFlightDiagnostic()> emitError); static ::llvm::LogicalResult readProperties(::mlir::DialectBytecodeReader &reader, ::mlir::OperationState &state); void writeProperties(::mlir::DialectBytecodeWriter &writer); ::mlir::LLVM::ConstantRangeAttr getRangeAttr() { return ::llvm::dyn_cast_or_null<::mlir::LLVM::ConstantRangeAttr>(getProperties().range); } ::std::optional<::mlir::LLVM::ConstantRangeAttr> getRange(); void setRangeAttr(::mlir::LLVM::ConstantRangeAttr attr) { getProperties().range = attr; } ::mlir::Attribute removeRangeAttr() { auto attr = getProperties().range; getProperties().range = {}; return attr; } static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, Type resultType); static ThreadIdZOp create(::mlir::OpBuilder &builder, ::mlir::Location location, Type resultType); static ThreadIdZOp create(::mlir::ImplicitLocOpBuilder &builder, Type resultType); static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::Type res, /*optional*/::mlir::LLVM::ConstantRangeAttr range); static ThreadIdZOp create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::Type res, /*optional*/::mlir::LLVM::ConstantRangeAttr range); static ThreadIdZOp create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::Type res, /*optional*/::mlir::LLVM::ConstantRangeAttr range); static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, /*optional*/::mlir::LLVM::ConstantRangeAttr range); static ThreadIdZOp create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, /*optional*/::mlir::LLVM::ConstantRangeAttr range); static ThreadIdZOp create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, /*optional*/::mlir::LLVM::ConstantRangeAttr range); static void build(::mlir::OpBuilder &, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, ::llvm::ArrayRef<::mlir::NamedAttribute> attributes = {}); static ThreadIdZOp create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, ::llvm::ArrayRef<::mlir::NamedAttribute> attributes = {}); static ThreadIdZOp create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, ::llvm::ArrayRef<::mlir::NamedAttribute> attributes = {}); static void build(::mlir::OpBuilder &, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, const Properties &properties, ::llvm::ArrayRef<::mlir::NamedAttribute> discardableAttributes = {}); static ThreadIdZOp create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, const Properties &properties, ::llvm::ArrayRef<::mlir::NamedAttribute> discardableAttributes = {}); static ThreadIdZOp create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, const Properties &properties, ::llvm::ArrayRef<::mlir::NamedAttribute> discardableAttributes = {}); ::llvm::LogicalResult verifyInvariantsImpl(); ::llvm::LogicalResult verifyInvariants(); static ::mlir::ParseResult parse(::mlir::OpAsmParser &parser, ::mlir::OperationState &result); void print(::mlir::OpAsmPrinter &_odsPrinter); void getEffects(::llvm::SmallVectorImpl<::mlir::SideEffects::EffectInstance<::mlir::MemoryEffects::Effect>> &effects); private: ::mlir::StringAttr getAttributeNameForIndex(unsigned index) { return getAttributeNameForIndex((*this)->getName(), index); } static ::mlir::StringAttr getAttributeNameForIndex(::mlir::OperationName name, unsigned index) { assert(index < 1 && "invalid attribute index"); assert(name.getStringRef() == getOperationName() && "invalid operation name"); assert(name.isRegistered() && "Operation isn't registered, missing a " "dependent dialect loading?"); return name.getAttributeNames()[index]; } public: }; } // namespace mlir::ROCDL MLIR_DECLARE_EXPLICIT_TYPE_ID(::mlir::ROCDL::ThreadIdZOp) MLIR_DECLARE_EXPLICIT_TYPE_ID(::mlir::ROCDL::detail::ThreadIdZOpGenericAdaptorBase::Properties) namespace mlir::ROCDL { //===----------------------------------------------------------------------===// // ::mlir::ROCDL::WaitAsynccntOp declarations //===----------------------------------------------------------------------===// namespace detail { class WaitAsynccntOpGenericAdaptorBase { public: struct Properties { using countTy = ::mlir::IntegerAttr; countTy count; auto getCount() const { auto &propStorage = this->count; return ::llvm::cast<::mlir::IntegerAttr>(propStorage); } void setCount(const ::mlir::IntegerAttr &propValue) { this->count = propValue; } bool operator==(const Properties &rhs) const { return rhs.count == this->count && true; } bool operator!=(const Properties &rhs) const { return !(*this == rhs); } }; protected: ::mlir::DictionaryAttr odsAttrs; ::std::optional<::mlir::OperationName> odsOpName; Properties properties; ::mlir::RegionRange odsRegions; public: WaitAsynccntOpGenericAdaptorBase(::mlir::DictionaryAttr attrs, const Properties &properties, ::mlir::RegionRange regions = {}) : odsAttrs(attrs), properties(properties), odsRegions(regions) { if (odsAttrs) odsOpName.emplace("rocdl.s.wait.asynccnt", odsAttrs.getContext()); } WaitAsynccntOpGenericAdaptorBase(WaitAsynccntOp op); std::pair getODSOperandIndexAndLength(unsigned index, unsigned odsOperandsSize) { return {index, 1}; } const Properties &getProperties() { return properties; } ::mlir::DictionaryAttr getAttributes() { return odsAttrs; } ::mlir::IntegerAttr getCountAttr() { auto attr = ::llvm::cast<::mlir::IntegerAttr>(getProperties().count); return attr; } uint16_t getCount(); }; } // namespace detail template class WaitAsynccntOpGenericAdaptor : public detail::WaitAsynccntOpGenericAdaptorBase { using ValueT = ::llvm::detail::ValueOfRange; using Base = detail::WaitAsynccntOpGenericAdaptorBase; public: WaitAsynccntOpGenericAdaptor(RangeT values, ::mlir::DictionaryAttr attrs, const Properties &properties, ::mlir::RegionRange regions = {}) : Base(attrs, properties, regions), odsOperands(values) {} WaitAsynccntOpGenericAdaptor(RangeT values, ::mlir::DictionaryAttr attrs, ::mlir::PropertyRef properties, ::mlir::RegionRange regions = {}) : WaitAsynccntOpGenericAdaptor(values, attrs, (properties ? *properties.as() : Properties{}), regions) {} WaitAsynccntOpGenericAdaptor(RangeT values, ::mlir::DictionaryAttr attrs = nullptr) : WaitAsynccntOpGenericAdaptor(values, attrs, Properties{}, {}) {} WaitAsynccntOpGenericAdaptor(RangeT values, const WaitAsynccntOpGenericAdaptorBase &base) : Base(base), odsOperands(values) {} template >> WaitAsynccntOpGenericAdaptor(RangeT values, LateInst op) : Base(op), odsOperands(values) {} std::pair getODSOperandIndexAndLength(unsigned index) { return Base::getODSOperandIndexAndLength(index, odsOperands.size()); } RangeT getODSOperands(unsigned index) { auto valueRange = getODSOperandIndexAndLength(index); return {std::next(odsOperands.begin(), valueRange.first), std::next(odsOperands.begin(), valueRange.first + valueRange.second)}; } RangeT getOperands() { return odsOperands; } private: RangeT odsOperands; }; class WaitAsynccntOpAdaptor : public WaitAsynccntOpGenericAdaptor<::mlir::ValueRange> { public: using WaitAsynccntOpGenericAdaptor::WaitAsynccntOpGenericAdaptor; WaitAsynccntOpAdaptor(WaitAsynccntOp op); ::llvm::LogicalResult verify(::mlir::Location loc); }; class WaitAsynccntOp : public ::mlir::Op { public: using Op::Op; using Op::print; using Adaptor = WaitAsynccntOpAdaptor; template using GenericAdaptor = WaitAsynccntOpGenericAdaptor; using FoldAdaptor = GenericAdaptor<::llvm::ArrayRef<::mlir::Attribute>>; using Properties = FoldAdaptor::Properties; static ::llvm::ArrayRef<::llvm::StringRef> getAttributeNames() { static ::llvm::StringRef attrNames[] = {::llvm::StringRef("count")}; return ::llvm::ArrayRef(attrNames); } ::mlir::StringAttr getCountAttrName() { return getAttributeNameForIndex(0); } static ::mlir::StringAttr getCountAttrName(::mlir::OperationName name) { return getAttributeNameForIndex(name, 0); } static constexpr ::llvm::StringLiteral getOperationName() { return ::llvm::StringLiteral("rocdl.s.wait.asynccnt"); } std::pair getODSOperandIndexAndLength(unsigned index) { return {index, 1}; } ::mlir::Operation::operand_range getODSOperands(unsigned index) { auto valueRange = getODSOperandIndexAndLength(index); return {std::next(getOperation()->operand_begin(), valueRange.first), std::next(getOperation()->operand_begin(), valueRange.first + valueRange.second)}; } std::pair getODSResultIndexAndLength(unsigned index) { return {index, 1}; } ::mlir::Operation::result_range getODSResults(unsigned index) { auto valueRange = getODSResultIndexAndLength(index); return {std::next(getOperation()->result_begin(), valueRange.first), std::next(getOperation()->result_begin(), valueRange.first + valueRange.second)}; } static ::llvm::LogicalResult setPropertiesFromAttr(Properties &prop, ::mlir::Attribute attr, ::llvm::function_ref<::mlir::InFlightDiagnostic()> emitError); static ::mlir::Attribute getPropertiesAsAttr(::mlir::MLIRContext *ctx, const Properties &prop); static llvm::hash_code computePropertiesHash(const Properties &prop); static std::optional getInherentAttr(::mlir::MLIRContext *ctx, const Properties &prop, llvm::StringRef name); static void setInherentAttr(Properties &prop, llvm::StringRef name, mlir::Attribute value); static void populateInherentAttrs(::mlir::MLIRContext *ctx, const Properties &prop, ::mlir::NamedAttrList &attrs); static ::llvm::LogicalResult verifyInherentAttrs(::mlir::OperationName opName, ::mlir::NamedAttrList &attrs, llvm::function_ref<::mlir::InFlightDiagnostic()> emitError); static ::llvm::LogicalResult readProperties(::mlir::DialectBytecodeReader &reader, ::mlir::OperationState &state); void writeProperties(::mlir::DialectBytecodeWriter &writer); ::mlir::IntegerAttr getCountAttr() { return ::llvm::cast<::mlir::IntegerAttr>(getProperties().count); } uint16_t getCount(); void setCountAttr(::mlir::IntegerAttr attr) { getProperties().count = attr; } void setCount(uint16_t attrValue); static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::IntegerAttr count); static WaitAsynccntOp create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::IntegerAttr count); static WaitAsynccntOp create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::IntegerAttr count); static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::IntegerAttr count); static WaitAsynccntOp create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::IntegerAttr count); static WaitAsynccntOp create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::IntegerAttr count); static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, uint16_t count); static WaitAsynccntOp create(::mlir::OpBuilder &builder, ::mlir::Location location, uint16_t count); static WaitAsynccntOp create(::mlir::ImplicitLocOpBuilder &builder, uint16_t count); static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, uint16_t count); static WaitAsynccntOp create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, uint16_t count); static WaitAsynccntOp create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, uint16_t count); static void build(::mlir::OpBuilder &, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, ::llvm::ArrayRef<::mlir::NamedAttribute> attributes = {}); static WaitAsynccntOp create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, ::llvm::ArrayRef<::mlir::NamedAttribute> attributes = {}); static WaitAsynccntOp create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, ::llvm::ArrayRef<::mlir::NamedAttribute> attributes = {}); static void build(::mlir::OpBuilder &, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, const Properties &properties, ::llvm::ArrayRef<::mlir::NamedAttribute> discardableAttributes = {}); static WaitAsynccntOp create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, const Properties &properties, ::llvm::ArrayRef<::mlir::NamedAttribute> discardableAttributes = {}); static WaitAsynccntOp create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, const Properties &properties, ::llvm::ArrayRef<::mlir::NamedAttribute> discardableAttributes = {}); ::llvm::LogicalResult verifyInvariantsImpl(); ::llvm::LogicalResult verifyInvariants(); static ::mlir::ParseResult parse(::mlir::OpAsmParser &parser, ::mlir::OperationState &result); void print(::mlir::OpAsmPrinter &_odsPrinter); private: ::mlir::StringAttr getAttributeNameForIndex(unsigned index) { return getAttributeNameForIndex((*this)->getName(), index); } static ::mlir::StringAttr getAttributeNameForIndex(::mlir::OperationName name, unsigned index) { assert(index < 1 && "invalid attribute index"); assert(name.getStringRef() == getOperationName() && "invalid operation name"); assert(name.isRegistered() && "Operation isn't registered, missing a " "dependent dialect loading?"); return name.getAttributeNames()[index]; } public: }; } // namespace mlir::ROCDL MLIR_DECLARE_EXPLICIT_TYPE_ID(::mlir::ROCDL::WaitAsynccntOp) MLIR_DECLARE_EXPLICIT_TYPE_ID(::mlir::ROCDL::detail::WaitAsynccntOpGenericAdaptorBase::Properties) namespace mlir::ROCDL { //===----------------------------------------------------------------------===// // ::mlir::ROCDL::WaitAsyncmarkOp declarations //===----------------------------------------------------------------------===// namespace detail { class WaitAsyncmarkOpGenericAdaptorBase { public: struct Properties { using countTy = ::mlir::IntegerAttr; countTy count; auto getCount() const { auto &propStorage = this->count; return ::llvm::cast<::mlir::IntegerAttr>(propStorage); } void setCount(const ::mlir::IntegerAttr &propValue) { this->count = propValue; } bool operator==(const Properties &rhs) const { return rhs.count == this->count && true; } bool operator!=(const Properties &rhs) const { return !(*this == rhs); } }; protected: ::mlir::DictionaryAttr odsAttrs; ::std::optional<::mlir::OperationName> odsOpName; Properties properties; ::mlir::RegionRange odsRegions; public: WaitAsyncmarkOpGenericAdaptorBase(::mlir::DictionaryAttr attrs, const Properties &properties, ::mlir::RegionRange regions = {}) : odsAttrs(attrs), properties(properties), odsRegions(regions) { if (odsAttrs) odsOpName.emplace("rocdl.wait.asyncmark", odsAttrs.getContext()); } WaitAsyncmarkOpGenericAdaptorBase(WaitAsyncmarkOp op); std::pair getODSOperandIndexAndLength(unsigned index, unsigned odsOperandsSize) { return {index, 1}; } const Properties &getProperties() { return properties; } ::mlir::DictionaryAttr getAttributes() { return odsAttrs; } ::mlir::IntegerAttr getCountAttr() { auto attr = ::llvm::cast<::mlir::IntegerAttr>(getProperties().count); return attr; } uint16_t getCount(); }; } // namespace detail template class WaitAsyncmarkOpGenericAdaptor : public detail::WaitAsyncmarkOpGenericAdaptorBase { using ValueT = ::llvm::detail::ValueOfRange; using Base = detail::WaitAsyncmarkOpGenericAdaptorBase; public: WaitAsyncmarkOpGenericAdaptor(RangeT values, ::mlir::DictionaryAttr attrs, const Properties &properties, ::mlir::RegionRange regions = {}) : Base(attrs, properties, regions), odsOperands(values) {} WaitAsyncmarkOpGenericAdaptor(RangeT values, ::mlir::DictionaryAttr attrs, ::mlir::PropertyRef properties, ::mlir::RegionRange regions = {}) : WaitAsyncmarkOpGenericAdaptor(values, attrs, (properties ? *properties.as() : Properties{}), regions) {} WaitAsyncmarkOpGenericAdaptor(RangeT values, ::mlir::DictionaryAttr attrs = nullptr) : WaitAsyncmarkOpGenericAdaptor(values, attrs, Properties{}, {}) {} WaitAsyncmarkOpGenericAdaptor(RangeT values, const WaitAsyncmarkOpGenericAdaptorBase &base) : Base(base), odsOperands(values) {} template >> WaitAsyncmarkOpGenericAdaptor(RangeT values, LateInst op) : Base(op), odsOperands(values) {} std::pair getODSOperandIndexAndLength(unsigned index) { return Base::getODSOperandIndexAndLength(index, odsOperands.size()); } RangeT getODSOperands(unsigned index) { auto valueRange = getODSOperandIndexAndLength(index); return {std::next(odsOperands.begin(), valueRange.first), std::next(odsOperands.begin(), valueRange.first + valueRange.second)}; } RangeT getOperands() { return odsOperands; } private: RangeT odsOperands; }; class WaitAsyncmarkOpAdaptor : public WaitAsyncmarkOpGenericAdaptor<::mlir::ValueRange> { public: using WaitAsyncmarkOpGenericAdaptor::WaitAsyncmarkOpGenericAdaptor; WaitAsyncmarkOpAdaptor(WaitAsyncmarkOp op); ::llvm::LogicalResult verify(::mlir::Location loc); }; class WaitAsyncmarkOp : public ::mlir::Op { public: using Op::Op; using Op::print; using Adaptor = WaitAsyncmarkOpAdaptor; template using GenericAdaptor = WaitAsyncmarkOpGenericAdaptor; using FoldAdaptor = GenericAdaptor<::llvm::ArrayRef<::mlir::Attribute>>; using Properties = FoldAdaptor::Properties; static ::llvm::ArrayRef<::llvm::StringRef> getAttributeNames() { static ::llvm::StringRef attrNames[] = {::llvm::StringRef("count")}; return ::llvm::ArrayRef(attrNames); } ::mlir::StringAttr getCountAttrName() { return getAttributeNameForIndex(0); } static ::mlir::StringAttr getCountAttrName(::mlir::OperationName name) { return getAttributeNameForIndex(name, 0); } static constexpr ::llvm::StringLiteral getOperationName() { return ::llvm::StringLiteral("rocdl.wait.asyncmark"); } std::pair getODSOperandIndexAndLength(unsigned index) { return {index, 1}; } ::mlir::Operation::operand_range getODSOperands(unsigned index) { auto valueRange = getODSOperandIndexAndLength(index); return {std::next(getOperation()->operand_begin(), valueRange.first), std::next(getOperation()->operand_begin(), valueRange.first + valueRange.second)}; } std::pair getODSResultIndexAndLength(unsigned index) { return {index, 1}; } ::mlir::Operation::result_range getODSResults(unsigned index) { auto valueRange = getODSResultIndexAndLength(index); return {std::next(getOperation()->result_begin(), valueRange.first), std::next(getOperation()->result_begin(), valueRange.first + valueRange.second)}; } static ::llvm::LogicalResult setPropertiesFromAttr(Properties &prop, ::mlir::Attribute attr, ::llvm::function_ref<::mlir::InFlightDiagnostic()> emitError); static ::mlir::Attribute getPropertiesAsAttr(::mlir::MLIRContext *ctx, const Properties &prop); static llvm::hash_code computePropertiesHash(const Properties &prop); static std::optional getInherentAttr(::mlir::MLIRContext *ctx, const Properties &prop, llvm::StringRef name); static void setInherentAttr(Properties &prop, llvm::StringRef name, mlir::Attribute value); static void populateInherentAttrs(::mlir::MLIRContext *ctx, const Properties &prop, ::mlir::NamedAttrList &attrs); static ::llvm::LogicalResult verifyInherentAttrs(::mlir::OperationName opName, ::mlir::NamedAttrList &attrs, llvm::function_ref<::mlir::InFlightDiagnostic()> emitError); static ::llvm::LogicalResult readProperties(::mlir::DialectBytecodeReader &reader, ::mlir::OperationState &state); void writeProperties(::mlir::DialectBytecodeWriter &writer); ::mlir::IntegerAttr getCountAttr() { return ::llvm::cast<::mlir::IntegerAttr>(getProperties().count); } uint16_t getCount(); void setCountAttr(::mlir::IntegerAttr attr) { getProperties().count = attr; } void setCount(uint16_t attrValue); static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::IntegerAttr count); static WaitAsyncmarkOp create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::IntegerAttr count); static WaitAsyncmarkOp create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::IntegerAttr count); static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::IntegerAttr count); static WaitAsyncmarkOp create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::IntegerAttr count); static WaitAsyncmarkOp create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::IntegerAttr count); static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, uint16_t count); static WaitAsyncmarkOp create(::mlir::OpBuilder &builder, ::mlir::Location location, uint16_t count); static WaitAsyncmarkOp create(::mlir::ImplicitLocOpBuilder &builder, uint16_t count); static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, uint16_t count); static WaitAsyncmarkOp create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, uint16_t count); static WaitAsyncmarkOp create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, uint16_t count); static void build(::mlir::OpBuilder &, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, ::llvm::ArrayRef<::mlir::NamedAttribute> attributes = {}); static WaitAsyncmarkOp create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, ::llvm::ArrayRef<::mlir::NamedAttribute> attributes = {}); static WaitAsyncmarkOp create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, ::llvm::ArrayRef<::mlir::NamedAttribute> attributes = {}); static void build(::mlir::OpBuilder &, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, const Properties &properties, ::llvm::ArrayRef<::mlir::NamedAttribute> discardableAttributes = {}); static WaitAsyncmarkOp create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, const Properties &properties, ::llvm::ArrayRef<::mlir::NamedAttribute> discardableAttributes = {}); static WaitAsyncmarkOp create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, const Properties &properties, ::llvm::ArrayRef<::mlir::NamedAttribute> discardableAttributes = {}); ::llvm::LogicalResult verifyInvariantsImpl(); ::llvm::LogicalResult verifyInvariants(); static ::mlir::ParseResult parse(::mlir::OpAsmParser &parser, ::mlir::OperationState &result); void print(::mlir::OpAsmPrinter &_odsPrinter); private: ::mlir::StringAttr getAttributeNameForIndex(unsigned index) { return getAttributeNameForIndex((*this)->getName(), index); } static ::mlir::StringAttr getAttributeNameForIndex(::mlir::OperationName name, unsigned index) { assert(index < 1 && "invalid attribute index"); assert(name.getStringRef() == getOperationName() && "invalid operation name"); assert(name.isRegistered() && "Operation isn't registered, missing a " "dependent dialect loading?"); return name.getAttributeNames()[index]; } public: }; } // namespace mlir::ROCDL MLIR_DECLARE_EXPLICIT_TYPE_ID(::mlir::ROCDL::WaitAsyncmarkOp) MLIR_DECLARE_EXPLICIT_TYPE_ID(::mlir::ROCDL::detail::WaitAsyncmarkOpGenericAdaptorBase::Properties) namespace mlir::ROCDL { //===----------------------------------------------------------------------===// // ::mlir::ROCDL::WaitDscntOp declarations //===----------------------------------------------------------------------===// namespace detail { class WaitDscntOpGenericAdaptorBase { public: struct Properties { using countTy = ::mlir::IntegerAttr; countTy count; auto getCount() const { auto &propStorage = this->count; return ::llvm::cast<::mlir::IntegerAttr>(propStorage); } void setCount(const ::mlir::IntegerAttr &propValue) { this->count = propValue; } bool operator==(const Properties &rhs) const { return rhs.count == this->count && true; } bool operator!=(const Properties &rhs) const { return !(*this == rhs); } }; protected: ::mlir::DictionaryAttr odsAttrs; ::std::optional<::mlir::OperationName> odsOpName; Properties properties; ::mlir::RegionRange odsRegions; public: WaitDscntOpGenericAdaptorBase(::mlir::DictionaryAttr attrs, const Properties &properties, ::mlir::RegionRange regions = {}) : odsAttrs(attrs), properties(properties), odsRegions(regions) { if (odsAttrs) odsOpName.emplace("rocdl.s.wait.dscnt", odsAttrs.getContext()); } WaitDscntOpGenericAdaptorBase(WaitDscntOp op); std::pair getODSOperandIndexAndLength(unsigned index, unsigned odsOperandsSize) { return {index, 1}; } const Properties &getProperties() { return properties; } ::mlir::DictionaryAttr getAttributes() { return odsAttrs; } ::mlir::IntegerAttr getCountAttr() { auto attr = ::llvm::cast<::mlir::IntegerAttr>(getProperties().count); return attr; } uint16_t getCount(); }; } // namespace detail template class WaitDscntOpGenericAdaptor : public detail::WaitDscntOpGenericAdaptorBase { using ValueT = ::llvm::detail::ValueOfRange; using Base = detail::WaitDscntOpGenericAdaptorBase; public: WaitDscntOpGenericAdaptor(RangeT values, ::mlir::DictionaryAttr attrs, const Properties &properties, ::mlir::RegionRange regions = {}) : Base(attrs, properties, regions), odsOperands(values) {} WaitDscntOpGenericAdaptor(RangeT values, ::mlir::DictionaryAttr attrs, ::mlir::PropertyRef properties, ::mlir::RegionRange regions = {}) : WaitDscntOpGenericAdaptor(values, attrs, (properties ? *properties.as() : Properties{}), regions) {} WaitDscntOpGenericAdaptor(RangeT values, ::mlir::DictionaryAttr attrs = nullptr) : WaitDscntOpGenericAdaptor(values, attrs, Properties{}, {}) {} WaitDscntOpGenericAdaptor(RangeT values, const WaitDscntOpGenericAdaptorBase &base) : Base(base), odsOperands(values) {} template >> WaitDscntOpGenericAdaptor(RangeT values, LateInst op) : Base(op), odsOperands(values) {} std::pair getODSOperandIndexAndLength(unsigned index) { return Base::getODSOperandIndexAndLength(index, odsOperands.size()); } RangeT getODSOperands(unsigned index) { auto valueRange = getODSOperandIndexAndLength(index); return {std::next(odsOperands.begin(), valueRange.first), std::next(odsOperands.begin(), valueRange.first + valueRange.second)}; } RangeT getOperands() { return odsOperands; } private: RangeT odsOperands; }; class WaitDscntOpAdaptor : public WaitDscntOpGenericAdaptor<::mlir::ValueRange> { public: using WaitDscntOpGenericAdaptor::WaitDscntOpGenericAdaptor; WaitDscntOpAdaptor(WaitDscntOp op); ::llvm::LogicalResult verify(::mlir::Location loc); }; class WaitDscntOp : public ::mlir::Op { public: using Op::Op; using Op::print; using Adaptor = WaitDscntOpAdaptor; template using GenericAdaptor = WaitDscntOpGenericAdaptor; using FoldAdaptor = GenericAdaptor<::llvm::ArrayRef<::mlir::Attribute>>; using Properties = FoldAdaptor::Properties; static ::llvm::ArrayRef<::llvm::StringRef> getAttributeNames() { static ::llvm::StringRef attrNames[] = {::llvm::StringRef("count")}; return ::llvm::ArrayRef(attrNames); } ::mlir::StringAttr getCountAttrName() { return getAttributeNameForIndex(0); } static ::mlir::StringAttr getCountAttrName(::mlir::OperationName name) { return getAttributeNameForIndex(name, 0); } static constexpr ::llvm::StringLiteral getOperationName() { return ::llvm::StringLiteral("rocdl.s.wait.dscnt"); } std::pair getODSOperandIndexAndLength(unsigned index) { return {index, 1}; } ::mlir::Operation::operand_range getODSOperands(unsigned index) { auto valueRange = getODSOperandIndexAndLength(index); return {std::next(getOperation()->operand_begin(), valueRange.first), std::next(getOperation()->operand_begin(), valueRange.first + valueRange.second)}; } std::pair getODSResultIndexAndLength(unsigned index) { return {index, 1}; } ::mlir::Operation::result_range getODSResults(unsigned index) { auto valueRange = getODSResultIndexAndLength(index); return {std::next(getOperation()->result_begin(), valueRange.first), std::next(getOperation()->result_begin(), valueRange.first + valueRange.second)}; } static ::llvm::LogicalResult setPropertiesFromAttr(Properties &prop, ::mlir::Attribute attr, ::llvm::function_ref<::mlir::InFlightDiagnostic()> emitError); static ::mlir::Attribute getPropertiesAsAttr(::mlir::MLIRContext *ctx, const Properties &prop); static llvm::hash_code computePropertiesHash(const Properties &prop); static std::optional getInherentAttr(::mlir::MLIRContext *ctx, const Properties &prop, llvm::StringRef name); static void setInherentAttr(Properties &prop, llvm::StringRef name, mlir::Attribute value); static void populateInherentAttrs(::mlir::MLIRContext *ctx, const Properties &prop, ::mlir::NamedAttrList &attrs); static ::llvm::LogicalResult verifyInherentAttrs(::mlir::OperationName opName, ::mlir::NamedAttrList &attrs, llvm::function_ref<::mlir::InFlightDiagnostic()> emitError); static ::llvm::LogicalResult readProperties(::mlir::DialectBytecodeReader &reader, ::mlir::OperationState &state); void writeProperties(::mlir::DialectBytecodeWriter &writer); ::mlir::IntegerAttr getCountAttr() { return ::llvm::cast<::mlir::IntegerAttr>(getProperties().count); } uint16_t getCount(); void setCountAttr(::mlir::IntegerAttr attr) { getProperties().count = attr; } void setCount(uint16_t attrValue); static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::IntegerAttr count); static WaitDscntOp create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::IntegerAttr count); static WaitDscntOp create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::IntegerAttr count); static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::IntegerAttr count); static WaitDscntOp create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::IntegerAttr count); static WaitDscntOp create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::IntegerAttr count); static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, uint16_t count); static WaitDscntOp create(::mlir::OpBuilder &builder, ::mlir::Location location, uint16_t count); static WaitDscntOp create(::mlir::ImplicitLocOpBuilder &builder, uint16_t count); static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, uint16_t count); static WaitDscntOp create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, uint16_t count); static WaitDscntOp create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, uint16_t count); static void build(::mlir::OpBuilder &, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, ::llvm::ArrayRef<::mlir::NamedAttribute> attributes = {}); static WaitDscntOp create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, ::llvm::ArrayRef<::mlir::NamedAttribute> attributes = {}); static WaitDscntOp create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, ::llvm::ArrayRef<::mlir::NamedAttribute> attributes = {}); static void build(::mlir::OpBuilder &, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, const Properties &properties, ::llvm::ArrayRef<::mlir::NamedAttribute> discardableAttributes = {}); static WaitDscntOp create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, const Properties &properties, ::llvm::ArrayRef<::mlir::NamedAttribute> discardableAttributes = {}); static WaitDscntOp create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, const Properties &properties, ::llvm::ArrayRef<::mlir::NamedAttribute> discardableAttributes = {}); ::llvm::LogicalResult verifyInvariantsImpl(); ::llvm::LogicalResult verifyInvariants(); static ::mlir::ParseResult parse(::mlir::OpAsmParser &parser, ::mlir::OperationState &result); void print(::mlir::OpAsmPrinter &_odsPrinter); private: ::mlir::StringAttr getAttributeNameForIndex(unsigned index) { return getAttributeNameForIndex((*this)->getName(), index); } static ::mlir::StringAttr getAttributeNameForIndex(::mlir::OperationName name, unsigned index) { assert(index < 1 && "invalid attribute index"); assert(name.getStringRef() == getOperationName() && "invalid operation name"); assert(name.isRegistered() && "Operation isn't registered, missing a " "dependent dialect loading?"); return name.getAttributeNames()[index]; } public: }; } // namespace mlir::ROCDL MLIR_DECLARE_EXPLICIT_TYPE_ID(::mlir::ROCDL::WaitDscntOp) MLIR_DECLARE_EXPLICIT_TYPE_ID(::mlir::ROCDL::detail::WaitDscntOpGenericAdaptorBase::Properties) namespace mlir::ROCDL { //===----------------------------------------------------------------------===// // ::mlir::ROCDL::WaitExpcntOp declarations //===----------------------------------------------------------------------===// namespace detail { class WaitExpcntOpGenericAdaptorBase { public: struct Properties { using countTy = ::mlir::IntegerAttr; countTy count; auto getCount() const { auto &propStorage = this->count; return ::llvm::cast<::mlir::IntegerAttr>(propStorage); } void setCount(const ::mlir::IntegerAttr &propValue) { this->count = propValue; } bool operator==(const Properties &rhs) const { return rhs.count == this->count && true; } bool operator!=(const Properties &rhs) const { return !(*this == rhs); } }; protected: ::mlir::DictionaryAttr odsAttrs; ::std::optional<::mlir::OperationName> odsOpName; Properties properties; ::mlir::RegionRange odsRegions; public: WaitExpcntOpGenericAdaptorBase(::mlir::DictionaryAttr attrs, const Properties &properties, ::mlir::RegionRange regions = {}) : odsAttrs(attrs), properties(properties), odsRegions(regions) { if (odsAttrs) odsOpName.emplace("rocdl.s.wait.expcnt", odsAttrs.getContext()); } WaitExpcntOpGenericAdaptorBase(WaitExpcntOp op); std::pair getODSOperandIndexAndLength(unsigned index, unsigned odsOperandsSize) { return {index, 1}; } const Properties &getProperties() { return properties; } ::mlir::DictionaryAttr getAttributes() { return odsAttrs; } ::mlir::IntegerAttr getCountAttr() { auto attr = ::llvm::cast<::mlir::IntegerAttr>(getProperties().count); return attr; } uint16_t getCount(); }; } // namespace detail template class WaitExpcntOpGenericAdaptor : public detail::WaitExpcntOpGenericAdaptorBase { using ValueT = ::llvm::detail::ValueOfRange; using Base = detail::WaitExpcntOpGenericAdaptorBase; public: WaitExpcntOpGenericAdaptor(RangeT values, ::mlir::DictionaryAttr attrs, const Properties &properties, ::mlir::RegionRange regions = {}) : Base(attrs, properties, regions), odsOperands(values) {} WaitExpcntOpGenericAdaptor(RangeT values, ::mlir::DictionaryAttr attrs, ::mlir::PropertyRef properties, ::mlir::RegionRange regions = {}) : WaitExpcntOpGenericAdaptor(values, attrs, (properties ? *properties.as() : Properties{}), regions) {} WaitExpcntOpGenericAdaptor(RangeT values, ::mlir::DictionaryAttr attrs = nullptr) : WaitExpcntOpGenericAdaptor(values, attrs, Properties{}, {}) {} WaitExpcntOpGenericAdaptor(RangeT values, const WaitExpcntOpGenericAdaptorBase &base) : Base(base), odsOperands(values) {} template >> WaitExpcntOpGenericAdaptor(RangeT values, LateInst op) : Base(op), odsOperands(values) {} std::pair getODSOperandIndexAndLength(unsigned index) { return Base::getODSOperandIndexAndLength(index, odsOperands.size()); } RangeT getODSOperands(unsigned index) { auto valueRange = getODSOperandIndexAndLength(index); return {std::next(odsOperands.begin(), valueRange.first), std::next(odsOperands.begin(), valueRange.first + valueRange.second)}; } RangeT getOperands() { return odsOperands; } private: RangeT odsOperands; }; class WaitExpcntOpAdaptor : public WaitExpcntOpGenericAdaptor<::mlir::ValueRange> { public: using WaitExpcntOpGenericAdaptor::WaitExpcntOpGenericAdaptor; WaitExpcntOpAdaptor(WaitExpcntOp op); ::llvm::LogicalResult verify(::mlir::Location loc); }; class WaitExpcntOp : public ::mlir::Op { public: using Op::Op; using Op::print; using Adaptor = WaitExpcntOpAdaptor; template using GenericAdaptor = WaitExpcntOpGenericAdaptor; using FoldAdaptor = GenericAdaptor<::llvm::ArrayRef<::mlir::Attribute>>; using Properties = FoldAdaptor::Properties; static ::llvm::ArrayRef<::llvm::StringRef> getAttributeNames() { static ::llvm::StringRef attrNames[] = {::llvm::StringRef("count")}; return ::llvm::ArrayRef(attrNames); } ::mlir::StringAttr getCountAttrName() { return getAttributeNameForIndex(0); } static ::mlir::StringAttr getCountAttrName(::mlir::OperationName name) { return getAttributeNameForIndex(name, 0); } static constexpr ::llvm::StringLiteral getOperationName() { return ::llvm::StringLiteral("rocdl.s.wait.expcnt"); } std::pair getODSOperandIndexAndLength(unsigned index) { return {index, 1}; } ::mlir::Operation::operand_range getODSOperands(unsigned index) { auto valueRange = getODSOperandIndexAndLength(index); return {std::next(getOperation()->operand_begin(), valueRange.first), std::next(getOperation()->operand_begin(), valueRange.first + valueRange.second)}; } std::pair getODSResultIndexAndLength(unsigned index) { return {index, 1}; } ::mlir::Operation::result_range getODSResults(unsigned index) { auto valueRange = getODSResultIndexAndLength(index); return {std::next(getOperation()->result_begin(), valueRange.first), std::next(getOperation()->result_begin(), valueRange.first + valueRange.second)}; } static ::llvm::LogicalResult setPropertiesFromAttr(Properties &prop, ::mlir::Attribute attr, ::llvm::function_ref<::mlir::InFlightDiagnostic()> emitError); static ::mlir::Attribute getPropertiesAsAttr(::mlir::MLIRContext *ctx, const Properties &prop); static llvm::hash_code computePropertiesHash(const Properties &prop); static std::optional getInherentAttr(::mlir::MLIRContext *ctx, const Properties &prop, llvm::StringRef name); static void setInherentAttr(Properties &prop, llvm::StringRef name, mlir::Attribute value); static void populateInherentAttrs(::mlir::MLIRContext *ctx, const Properties &prop, ::mlir::NamedAttrList &attrs); static ::llvm::LogicalResult verifyInherentAttrs(::mlir::OperationName opName, ::mlir::NamedAttrList &attrs, llvm::function_ref<::mlir::InFlightDiagnostic()> emitError); static ::llvm::LogicalResult readProperties(::mlir::DialectBytecodeReader &reader, ::mlir::OperationState &state); void writeProperties(::mlir::DialectBytecodeWriter &writer); ::mlir::IntegerAttr getCountAttr() { return ::llvm::cast<::mlir::IntegerAttr>(getProperties().count); } uint16_t getCount(); void setCountAttr(::mlir::IntegerAttr attr) { getProperties().count = attr; } void setCount(uint16_t attrValue); static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::IntegerAttr count); static WaitExpcntOp create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::IntegerAttr count); static WaitExpcntOp create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::IntegerAttr count); static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::IntegerAttr count); static WaitExpcntOp create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::IntegerAttr count); static WaitExpcntOp create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::IntegerAttr count); static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, uint16_t count); static WaitExpcntOp create(::mlir::OpBuilder &builder, ::mlir::Location location, uint16_t count); static WaitExpcntOp create(::mlir::ImplicitLocOpBuilder &builder, uint16_t count); static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, uint16_t count); static WaitExpcntOp create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, uint16_t count); static WaitExpcntOp create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, uint16_t count); static void build(::mlir::OpBuilder &, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, ::llvm::ArrayRef<::mlir::NamedAttribute> attributes = {}); static WaitExpcntOp create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, ::llvm::ArrayRef<::mlir::NamedAttribute> attributes = {}); static WaitExpcntOp create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, ::llvm::ArrayRef<::mlir::NamedAttribute> attributes = {}); static void build(::mlir::OpBuilder &, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, const Properties &properties, ::llvm::ArrayRef<::mlir::NamedAttribute> discardableAttributes = {}); static WaitExpcntOp create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, const Properties &properties, ::llvm::ArrayRef<::mlir::NamedAttribute> discardableAttributes = {}); static WaitExpcntOp create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, const Properties &properties, ::llvm::ArrayRef<::mlir::NamedAttribute> discardableAttributes = {}); ::llvm::LogicalResult verifyInvariantsImpl(); ::llvm::LogicalResult verifyInvariants(); static ::mlir::ParseResult parse(::mlir::OpAsmParser &parser, ::mlir::OperationState &result); void print(::mlir::OpAsmPrinter &_odsPrinter); private: ::mlir::StringAttr getAttributeNameForIndex(unsigned index) { return getAttributeNameForIndex((*this)->getName(), index); } static ::mlir::StringAttr getAttributeNameForIndex(::mlir::OperationName name, unsigned index) { assert(index < 1 && "invalid attribute index"); assert(name.getStringRef() == getOperationName() && "invalid operation name"); assert(name.isRegistered() && "Operation isn't registered, missing a " "dependent dialect loading?"); return name.getAttributeNames()[index]; } public: }; } // namespace mlir::ROCDL MLIR_DECLARE_EXPLICIT_TYPE_ID(::mlir::ROCDL::WaitExpcntOp) MLIR_DECLARE_EXPLICIT_TYPE_ID(::mlir::ROCDL::detail::WaitExpcntOpGenericAdaptorBase::Properties) namespace mlir::ROCDL { //===----------------------------------------------------------------------===// // ::mlir::ROCDL::WaitLoadcntOp declarations //===----------------------------------------------------------------------===// namespace detail { class WaitLoadcntOpGenericAdaptorBase { public: struct Properties { using countTy = ::mlir::IntegerAttr; countTy count; auto getCount() const { auto &propStorage = this->count; return ::llvm::cast<::mlir::IntegerAttr>(propStorage); } void setCount(const ::mlir::IntegerAttr &propValue) { this->count = propValue; } bool operator==(const Properties &rhs) const { return rhs.count == this->count && true; } bool operator!=(const Properties &rhs) const { return !(*this == rhs); } }; protected: ::mlir::DictionaryAttr odsAttrs; ::std::optional<::mlir::OperationName> odsOpName; Properties properties; ::mlir::RegionRange odsRegions; public: WaitLoadcntOpGenericAdaptorBase(::mlir::DictionaryAttr attrs, const Properties &properties, ::mlir::RegionRange regions = {}) : odsAttrs(attrs), properties(properties), odsRegions(regions) { if (odsAttrs) odsOpName.emplace("rocdl.s.wait.loadcnt", odsAttrs.getContext()); } WaitLoadcntOpGenericAdaptorBase(WaitLoadcntOp op); std::pair getODSOperandIndexAndLength(unsigned index, unsigned odsOperandsSize) { return {index, 1}; } const Properties &getProperties() { return properties; } ::mlir::DictionaryAttr getAttributes() { return odsAttrs; } ::mlir::IntegerAttr getCountAttr() { auto attr = ::llvm::cast<::mlir::IntegerAttr>(getProperties().count); return attr; } uint16_t getCount(); }; } // namespace detail template class WaitLoadcntOpGenericAdaptor : public detail::WaitLoadcntOpGenericAdaptorBase { using ValueT = ::llvm::detail::ValueOfRange; using Base = detail::WaitLoadcntOpGenericAdaptorBase; public: WaitLoadcntOpGenericAdaptor(RangeT values, ::mlir::DictionaryAttr attrs, const Properties &properties, ::mlir::RegionRange regions = {}) : Base(attrs, properties, regions), odsOperands(values) {} WaitLoadcntOpGenericAdaptor(RangeT values, ::mlir::DictionaryAttr attrs, ::mlir::PropertyRef properties, ::mlir::RegionRange regions = {}) : WaitLoadcntOpGenericAdaptor(values, attrs, (properties ? *properties.as() : Properties{}), regions) {} WaitLoadcntOpGenericAdaptor(RangeT values, ::mlir::DictionaryAttr attrs = nullptr) : WaitLoadcntOpGenericAdaptor(values, attrs, Properties{}, {}) {} WaitLoadcntOpGenericAdaptor(RangeT values, const WaitLoadcntOpGenericAdaptorBase &base) : Base(base), odsOperands(values) {} template >> WaitLoadcntOpGenericAdaptor(RangeT values, LateInst op) : Base(op), odsOperands(values) {} std::pair getODSOperandIndexAndLength(unsigned index) { return Base::getODSOperandIndexAndLength(index, odsOperands.size()); } RangeT getODSOperands(unsigned index) { auto valueRange = getODSOperandIndexAndLength(index); return {std::next(odsOperands.begin(), valueRange.first), std::next(odsOperands.begin(), valueRange.first + valueRange.second)}; } RangeT getOperands() { return odsOperands; } private: RangeT odsOperands; }; class WaitLoadcntOpAdaptor : public WaitLoadcntOpGenericAdaptor<::mlir::ValueRange> { public: using WaitLoadcntOpGenericAdaptor::WaitLoadcntOpGenericAdaptor; WaitLoadcntOpAdaptor(WaitLoadcntOp op); ::llvm::LogicalResult verify(::mlir::Location loc); }; class WaitLoadcntOp : public ::mlir::Op { public: using Op::Op; using Op::print; using Adaptor = WaitLoadcntOpAdaptor; template using GenericAdaptor = WaitLoadcntOpGenericAdaptor; using FoldAdaptor = GenericAdaptor<::llvm::ArrayRef<::mlir::Attribute>>; using Properties = FoldAdaptor::Properties; static ::llvm::ArrayRef<::llvm::StringRef> getAttributeNames() { static ::llvm::StringRef attrNames[] = {::llvm::StringRef("count")}; return ::llvm::ArrayRef(attrNames); } ::mlir::StringAttr getCountAttrName() { return getAttributeNameForIndex(0); } static ::mlir::StringAttr getCountAttrName(::mlir::OperationName name) { return getAttributeNameForIndex(name, 0); } static constexpr ::llvm::StringLiteral getOperationName() { return ::llvm::StringLiteral("rocdl.s.wait.loadcnt"); } std::pair getODSOperandIndexAndLength(unsigned index) { return {index, 1}; } ::mlir::Operation::operand_range getODSOperands(unsigned index) { auto valueRange = getODSOperandIndexAndLength(index); return {std::next(getOperation()->operand_begin(), valueRange.first), std::next(getOperation()->operand_begin(), valueRange.first + valueRange.second)}; } std::pair getODSResultIndexAndLength(unsigned index) { return {index, 1}; } ::mlir::Operation::result_range getODSResults(unsigned index) { auto valueRange = getODSResultIndexAndLength(index); return {std::next(getOperation()->result_begin(), valueRange.first), std::next(getOperation()->result_begin(), valueRange.first + valueRange.second)}; } static ::llvm::LogicalResult setPropertiesFromAttr(Properties &prop, ::mlir::Attribute attr, ::llvm::function_ref<::mlir::InFlightDiagnostic()> emitError); static ::mlir::Attribute getPropertiesAsAttr(::mlir::MLIRContext *ctx, const Properties &prop); static llvm::hash_code computePropertiesHash(const Properties &prop); static std::optional getInherentAttr(::mlir::MLIRContext *ctx, const Properties &prop, llvm::StringRef name); static void setInherentAttr(Properties &prop, llvm::StringRef name, mlir::Attribute value); static void populateInherentAttrs(::mlir::MLIRContext *ctx, const Properties &prop, ::mlir::NamedAttrList &attrs); static ::llvm::LogicalResult verifyInherentAttrs(::mlir::OperationName opName, ::mlir::NamedAttrList &attrs, llvm::function_ref<::mlir::InFlightDiagnostic()> emitError); static ::llvm::LogicalResult readProperties(::mlir::DialectBytecodeReader &reader, ::mlir::OperationState &state); void writeProperties(::mlir::DialectBytecodeWriter &writer); ::mlir::IntegerAttr getCountAttr() { return ::llvm::cast<::mlir::IntegerAttr>(getProperties().count); } uint16_t getCount(); void setCountAttr(::mlir::IntegerAttr attr) { getProperties().count = attr; } void setCount(uint16_t attrValue); static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::IntegerAttr count); static WaitLoadcntOp create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::IntegerAttr count); static WaitLoadcntOp create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::IntegerAttr count); static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::IntegerAttr count); static WaitLoadcntOp create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::IntegerAttr count); static WaitLoadcntOp create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::IntegerAttr count); static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, uint16_t count); static WaitLoadcntOp create(::mlir::OpBuilder &builder, ::mlir::Location location, uint16_t count); static WaitLoadcntOp create(::mlir::ImplicitLocOpBuilder &builder, uint16_t count); static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, uint16_t count); static WaitLoadcntOp create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, uint16_t count); static WaitLoadcntOp create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, uint16_t count); static void build(::mlir::OpBuilder &, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, ::llvm::ArrayRef<::mlir::NamedAttribute> attributes = {}); static WaitLoadcntOp create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, ::llvm::ArrayRef<::mlir::NamedAttribute> attributes = {}); static WaitLoadcntOp create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, ::llvm::ArrayRef<::mlir::NamedAttribute> attributes = {}); static void build(::mlir::OpBuilder &, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, const Properties &properties, ::llvm::ArrayRef<::mlir::NamedAttribute> discardableAttributes = {}); static WaitLoadcntOp create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, const Properties &properties, ::llvm::ArrayRef<::mlir::NamedAttribute> discardableAttributes = {}); static WaitLoadcntOp create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, const Properties &properties, ::llvm::ArrayRef<::mlir::NamedAttribute> discardableAttributes = {}); ::llvm::LogicalResult verifyInvariantsImpl(); ::llvm::LogicalResult verifyInvariants(); static ::mlir::ParseResult parse(::mlir::OpAsmParser &parser, ::mlir::OperationState &result); void print(::mlir::OpAsmPrinter &_odsPrinter); private: ::mlir::StringAttr getAttributeNameForIndex(unsigned index) { return getAttributeNameForIndex((*this)->getName(), index); } static ::mlir::StringAttr getAttributeNameForIndex(::mlir::OperationName name, unsigned index) { assert(index < 1 && "invalid attribute index"); assert(name.getStringRef() == getOperationName() && "invalid operation name"); assert(name.isRegistered() && "Operation isn't registered, missing a " "dependent dialect loading?"); return name.getAttributeNames()[index]; } public: }; } // namespace mlir::ROCDL MLIR_DECLARE_EXPLICIT_TYPE_ID(::mlir::ROCDL::WaitLoadcntOp) MLIR_DECLARE_EXPLICIT_TYPE_ID(::mlir::ROCDL::detail::WaitLoadcntOpGenericAdaptorBase::Properties) namespace mlir::ROCDL { //===----------------------------------------------------------------------===// // ::mlir::ROCDL::WaitStorecntOp declarations //===----------------------------------------------------------------------===// namespace detail { class WaitStorecntOpGenericAdaptorBase { public: struct Properties { using countTy = ::mlir::IntegerAttr; countTy count; auto getCount() const { auto &propStorage = this->count; return ::llvm::cast<::mlir::IntegerAttr>(propStorage); } void setCount(const ::mlir::IntegerAttr &propValue) { this->count = propValue; } bool operator==(const Properties &rhs) const { return rhs.count == this->count && true; } bool operator!=(const Properties &rhs) const { return !(*this == rhs); } }; protected: ::mlir::DictionaryAttr odsAttrs; ::std::optional<::mlir::OperationName> odsOpName; Properties properties; ::mlir::RegionRange odsRegions; public: WaitStorecntOpGenericAdaptorBase(::mlir::DictionaryAttr attrs, const Properties &properties, ::mlir::RegionRange regions = {}) : odsAttrs(attrs), properties(properties), odsRegions(regions) { if (odsAttrs) odsOpName.emplace("rocdl.s.wait.storecnt", odsAttrs.getContext()); } WaitStorecntOpGenericAdaptorBase(WaitStorecntOp op); std::pair getODSOperandIndexAndLength(unsigned index, unsigned odsOperandsSize) { return {index, 1}; } const Properties &getProperties() { return properties; } ::mlir::DictionaryAttr getAttributes() { return odsAttrs; } ::mlir::IntegerAttr getCountAttr() { auto attr = ::llvm::cast<::mlir::IntegerAttr>(getProperties().count); return attr; } uint16_t getCount(); }; } // namespace detail template class WaitStorecntOpGenericAdaptor : public detail::WaitStorecntOpGenericAdaptorBase { using ValueT = ::llvm::detail::ValueOfRange; using Base = detail::WaitStorecntOpGenericAdaptorBase; public: WaitStorecntOpGenericAdaptor(RangeT values, ::mlir::DictionaryAttr attrs, const Properties &properties, ::mlir::RegionRange regions = {}) : Base(attrs, properties, regions), odsOperands(values) {} WaitStorecntOpGenericAdaptor(RangeT values, ::mlir::DictionaryAttr attrs, ::mlir::PropertyRef properties, ::mlir::RegionRange regions = {}) : WaitStorecntOpGenericAdaptor(values, attrs, (properties ? *properties.as() : Properties{}), regions) {} WaitStorecntOpGenericAdaptor(RangeT values, ::mlir::DictionaryAttr attrs = nullptr) : WaitStorecntOpGenericAdaptor(values, attrs, Properties{}, {}) {} WaitStorecntOpGenericAdaptor(RangeT values, const WaitStorecntOpGenericAdaptorBase &base) : Base(base), odsOperands(values) {} template >> WaitStorecntOpGenericAdaptor(RangeT values, LateInst op) : Base(op), odsOperands(values) {} std::pair getODSOperandIndexAndLength(unsigned index) { return Base::getODSOperandIndexAndLength(index, odsOperands.size()); } RangeT getODSOperands(unsigned index) { auto valueRange = getODSOperandIndexAndLength(index); return {std::next(odsOperands.begin(), valueRange.first), std::next(odsOperands.begin(), valueRange.first + valueRange.second)}; } RangeT getOperands() { return odsOperands; } private: RangeT odsOperands; }; class WaitStorecntOpAdaptor : public WaitStorecntOpGenericAdaptor<::mlir::ValueRange> { public: using WaitStorecntOpGenericAdaptor::WaitStorecntOpGenericAdaptor; WaitStorecntOpAdaptor(WaitStorecntOp op); ::llvm::LogicalResult verify(::mlir::Location loc); }; class WaitStorecntOp : public ::mlir::Op { public: using Op::Op; using Op::print; using Adaptor = WaitStorecntOpAdaptor; template using GenericAdaptor = WaitStorecntOpGenericAdaptor; using FoldAdaptor = GenericAdaptor<::llvm::ArrayRef<::mlir::Attribute>>; using Properties = FoldAdaptor::Properties; static ::llvm::ArrayRef<::llvm::StringRef> getAttributeNames() { static ::llvm::StringRef attrNames[] = {::llvm::StringRef("count")}; return ::llvm::ArrayRef(attrNames); } ::mlir::StringAttr getCountAttrName() { return getAttributeNameForIndex(0); } static ::mlir::StringAttr getCountAttrName(::mlir::OperationName name) { return getAttributeNameForIndex(name, 0); } static constexpr ::llvm::StringLiteral getOperationName() { return ::llvm::StringLiteral("rocdl.s.wait.storecnt"); } std::pair getODSOperandIndexAndLength(unsigned index) { return {index, 1}; } ::mlir::Operation::operand_range getODSOperands(unsigned index) { auto valueRange = getODSOperandIndexAndLength(index); return {std::next(getOperation()->operand_begin(), valueRange.first), std::next(getOperation()->operand_begin(), valueRange.first + valueRange.second)}; } std::pair getODSResultIndexAndLength(unsigned index) { return {index, 1}; } ::mlir::Operation::result_range getODSResults(unsigned index) { auto valueRange = getODSResultIndexAndLength(index); return {std::next(getOperation()->result_begin(), valueRange.first), std::next(getOperation()->result_begin(), valueRange.first + valueRange.second)}; } static ::llvm::LogicalResult setPropertiesFromAttr(Properties &prop, ::mlir::Attribute attr, ::llvm::function_ref<::mlir::InFlightDiagnostic()> emitError); static ::mlir::Attribute getPropertiesAsAttr(::mlir::MLIRContext *ctx, const Properties &prop); static llvm::hash_code computePropertiesHash(const Properties &prop); static std::optional getInherentAttr(::mlir::MLIRContext *ctx, const Properties &prop, llvm::StringRef name); static void setInherentAttr(Properties &prop, llvm::StringRef name, mlir::Attribute value); static void populateInherentAttrs(::mlir::MLIRContext *ctx, const Properties &prop, ::mlir::NamedAttrList &attrs); static ::llvm::LogicalResult verifyInherentAttrs(::mlir::OperationName opName, ::mlir::NamedAttrList &attrs, llvm::function_ref<::mlir::InFlightDiagnostic()> emitError); static ::llvm::LogicalResult readProperties(::mlir::DialectBytecodeReader &reader, ::mlir::OperationState &state); void writeProperties(::mlir::DialectBytecodeWriter &writer); ::mlir::IntegerAttr getCountAttr() { return ::llvm::cast<::mlir::IntegerAttr>(getProperties().count); } uint16_t getCount(); void setCountAttr(::mlir::IntegerAttr attr) { getProperties().count = attr; } void setCount(uint16_t attrValue); static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::IntegerAttr count); static WaitStorecntOp create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::IntegerAttr count); static WaitStorecntOp create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::IntegerAttr count); static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::IntegerAttr count); static WaitStorecntOp create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::IntegerAttr count); static WaitStorecntOp create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::IntegerAttr count); static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, uint16_t count); static WaitStorecntOp create(::mlir::OpBuilder &builder, ::mlir::Location location, uint16_t count); static WaitStorecntOp create(::mlir::ImplicitLocOpBuilder &builder, uint16_t count); static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, uint16_t count); static WaitStorecntOp create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, uint16_t count); static WaitStorecntOp create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, uint16_t count); static void build(::mlir::OpBuilder &, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, ::llvm::ArrayRef<::mlir::NamedAttribute> attributes = {}); static WaitStorecntOp create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, ::llvm::ArrayRef<::mlir::NamedAttribute> attributes = {}); static WaitStorecntOp create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, ::llvm::ArrayRef<::mlir::NamedAttribute> attributes = {}); static void build(::mlir::OpBuilder &, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, const Properties &properties, ::llvm::ArrayRef<::mlir::NamedAttribute> discardableAttributes = {}); static WaitStorecntOp create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, const Properties &properties, ::llvm::ArrayRef<::mlir::NamedAttribute> discardableAttributes = {}); static WaitStorecntOp create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, const Properties &properties, ::llvm::ArrayRef<::mlir::NamedAttribute> discardableAttributes = {}); ::llvm::LogicalResult verifyInvariantsImpl(); ::llvm::LogicalResult verifyInvariants(); static ::mlir::ParseResult parse(::mlir::OpAsmParser &parser, ::mlir::OperationState &result); void print(::mlir::OpAsmPrinter &_odsPrinter); private: ::mlir::StringAttr getAttributeNameForIndex(unsigned index) { return getAttributeNameForIndex((*this)->getName(), index); } static ::mlir::StringAttr getAttributeNameForIndex(::mlir::OperationName name, unsigned index) { assert(index < 1 && "invalid attribute index"); assert(name.getStringRef() == getOperationName() && "invalid operation name"); assert(name.isRegistered() && "Operation isn't registered, missing a " "dependent dialect loading?"); return name.getAttributeNames()[index]; } public: }; } // namespace mlir::ROCDL MLIR_DECLARE_EXPLICIT_TYPE_ID(::mlir::ROCDL::WaitStorecntOp) MLIR_DECLARE_EXPLICIT_TYPE_ID(::mlir::ROCDL::detail::WaitStorecntOpGenericAdaptorBase::Properties) namespace mlir::ROCDL { //===----------------------------------------------------------------------===// // ::mlir::ROCDL::WaitTensorcntOp declarations //===----------------------------------------------------------------------===// namespace detail { class WaitTensorcntOpGenericAdaptorBase { public: struct Properties { using countTy = ::mlir::IntegerAttr; countTy count; auto getCount() const { auto &propStorage = this->count; return ::llvm::cast<::mlir::IntegerAttr>(propStorage); } void setCount(const ::mlir::IntegerAttr &propValue) { this->count = propValue; } bool operator==(const Properties &rhs) const { return rhs.count == this->count && true; } bool operator!=(const Properties &rhs) const { return !(*this == rhs); } }; protected: ::mlir::DictionaryAttr odsAttrs; ::std::optional<::mlir::OperationName> odsOpName; Properties properties; ::mlir::RegionRange odsRegions; public: WaitTensorcntOpGenericAdaptorBase(::mlir::DictionaryAttr attrs, const Properties &properties, ::mlir::RegionRange regions = {}) : odsAttrs(attrs), properties(properties), odsRegions(regions) { if (odsAttrs) odsOpName.emplace("rocdl.s.wait.tensorcnt", odsAttrs.getContext()); } WaitTensorcntOpGenericAdaptorBase(WaitTensorcntOp op); std::pair getODSOperandIndexAndLength(unsigned index, unsigned odsOperandsSize) { return {index, 1}; } const Properties &getProperties() { return properties; } ::mlir::DictionaryAttr getAttributes() { return odsAttrs; } ::mlir::IntegerAttr getCountAttr() { auto attr = ::llvm::cast<::mlir::IntegerAttr>(getProperties().count); return attr; } uint16_t getCount(); }; } // namespace detail template class WaitTensorcntOpGenericAdaptor : public detail::WaitTensorcntOpGenericAdaptorBase { using ValueT = ::llvm::detail::ValueOfRange; using Base = detail::WaitTensorcntOpGenericAdaptorBase; public: WaitTensorcntOpGenericAdaptor(RangeT values, ::mlir::DictionaryAttr attrs, const Properties &properties, ::mlir::RegionRange regions = {}) : Base(attrs, properties, regions), odsOperands(values) {} WaitTensorcntOpGenericAdaptor(RangeT values, ::mlir::DictionaryAttr attrs, ::mlir::PropertyRef properties, ::mlir::RegionRange regions = {}) : WaitTensorcntOpGenericAdaptor(values, attrs, (properties ? *properties.as() : Properties{}), regions) {} WaitTensorcntOpGenericAdaptor(RangeT values, ::mlir::DictionaryAttr attrs = nullptr) : WaitTensorcntOpGenericAdaptor(values, attrs, Properties{}, {}) {} WaitTensorcntOpGenericAdaptor(RangeT values, const WaitTensorcntOpGenericAdaptorBase &base) : Base(base), odsOperands(values) {} template >> WaitTensorcntOpGenericAdaptor(RangeT values, LateInst op) : Base(op), odsOperands(values) {} std::pair getODSOperandIndexAndLength(unsigned index) { return Base::getODSOperandIndexAndLength(index, odsOperands.size()); } RangeT getODSOperands(unsigned index) { auto valueRange = getODSOperandIndexAndLength(index); return {std::next(odsOperands.begin(), valueRange.first), std::next(odsOperands.begin(), valueRange.first + valueRange.second)}; } RangeT getOperands() { return odsOperands; } private: RangeT odsOperands; }; class WaitTensorcntOpAdaptor : public WaitTensorcntOpGenericAdaptor<::mlir::ValueRange> { public: using WaitTensorcntOpGenericAdaptor::WaitTensorcntOpGenericAdaptor; WaitTensorcntOpAdaptor(WaitTensorcntOp op); ::llvm::LogicalResult verify(::mlir::Location loc); }; class WaitTensorcntOp : public ::mlir::Op { public: using Op::Op; using Op::print; using Adaptor = WaitTensorcntOpAdaptor; template using GenericAdaptor = WaitTensorcntOpGenericAdaptor; using FoldAdaptor = GenericAdaptor<::llvm::ArrayRef<::mlir::Attribute>>; using Properties = FoldAdaptor::Properties; static ::llvm::ArrayRef<::llvm::StringRef> getAttributeNames() { static ::llvm::StringRef attrNames[] = {::llvm::StringRef("count")}; return ::llvm::ArrayRef(attrNames); } ::mlir::StringAttr getCountAttrName() { return getAttributeNameForIndex(0); } static ::mlir::StringAttr getCountAttrName(::mlir::OperationName name) { return getAttributeNameForIndex(name, 0); } static constexpr ::llvm::StringLiteral getOperationName() { return ::llvm::StringLiteral("rocdl.s.wait.tensorcnt"); } std::pair getODSOperandIndexAndLength(unsigned index) { return {index, 1}; } ::mlir::Operation::operand_range getODSOperands(unsigned index) { auto valueRange = getODSOperandIndexAndLength(index); return {std::next(getOperation()->operand_begin(), valueRange.first), std::next(getOperation()->operand_begin(), valueRange.first + valueRange.second)}; } std::pair getODSResultIndexAndLength(unsigned index) { return {index, 1}; } ::mlir::Operation::result_range getODSResults(unsigned index) { auto valueRange = getODSResultIndexAndLength(index); return {std::next(getOperation()->result_begin(), valueRange.first), std::next(getOperation()->result_begin(), valueRange.first + valueRange.second)}; } static ::llvm::LogicalResult setPropertiesFromAttr(Properties &prop, ::mlir::Attribute attr, ::llvm::function_ref<::mlir::InFlightDiagnostic()> emitError); static ::mlir::Attribute getPropertiesAsAttr(::mlir::MLIRContext *ctx, const Properties &prop); static llvm::hash_code computePropertiesHash(const Properties &prop); static std::optional getInherentAttr(::mlir::MLIRContext *ctx, const Properties &prop, llvm::StringRef name); static void setInherentAttr(Properties &prop, llvm::StringRef name, mlir::Attribute value); static void populateInherentAttrs(::mlir::MLIRContext *ctx, const Properties &prop, ::mlir::NamedAttrList &attrs); static ::llvm::LogicalResult verifyInherentAttrs(::mlir::OperationName opName, ::mlir::NamedAttrList &attrs, llvm::function_ref<::mlir::InFlightDiagnostic()> emitError); static ::llvm::LogicalResult readProperties(::mlir::DialectBytecodeReader &reader, ::mlir::OperationState &state); void writeProperties(::mlir::DialectBytecodeWriter &writer); ::mlir::IntegerAttr getCountAttr() { return ::llvm::cast<::mlir::IntegerAttr>(getProperties().count); } uint16_t getCount(); void setCountAttr(::mlir::IntegerAttr attr) { getProperties().count = attr; } void setCount(uint16_t attrValue); static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::IntegerAttr count); static WaitTensorcntOp create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::IntegerAttr count); static WaitTensorcntOp create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::IntegerAttr count); static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::IntegerAttr count); static WaitTensorcntOp create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::IntegerAttr count); static WaitTensorcntOp create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::IntegerAttr count); static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, uint16_t count); static WaitTensorcntOp create(::mlir::OpBuilder &builder, ::mlir::Location location, uint16_t count); static WaitTensorcntOp create(::mlir::ImplicitLocOpBuilder &builder, uint16_t count); static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, uint16_t count); static WaitTensorcntOp create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, uint16_t count); static WaitTensorcntOp create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, uint16_t count); static void build(::mlir::OpBuilder &, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, ::llvm::ArrayRef<::mlir::NamedAttribute> attributes = {}); static WaitTensorcntOp create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, ::llvm::ArrayRef<::mlir::NamedAttribute> attributes = {}); static WaitTensorcntOp create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, ::llvm::ArrayRef<::mlir::NamedAttribute> attributes = {}); static void build(::mlir::OpBuilder &, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, const Properties &properties, ::llvm::ArrayRef<::mlir::NamedAttribute> discardableAttributes = {}); static WaitTensorcntOp create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, const Properties &properties, ::llvm::ArrayRef<::mlir::NamedAttribute> discardableAttributes = {}); static WaitTensorcntOp create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, const Properties &properties, ::llvm::ArrayRef<::mlir::NamedAttribute> discardableAttributes = {}); ::llvm::LogicalResult verifyInvariantsImpl(); ::llvm::LogicalResult verifyInvariants(); static ::mlir::ParseResult parse(::mlir::OpAsmParser &parser, ::mlir::OperationState &result); void print(::mlir::OpAsmPrinter &_odsPrinter); private: ::mlir::StringAttr getAttributeNameForIndex(unsigned index) { return getAttributeNameForIndex((*this)->getName(), index); } static ::mlir::StringAttr getAttributeNameForIndex(::mlir::OperationName name, unsigned index) { assert(index < 1 && "invalid attribute index"); assert(name.getStringRef() == getOperationName() && "invalid operation name"); assert(name.isRegistered() && "Operation isn't registered, missing a " "dependent dialect loading?"); return name.getAttributeNames()[index]; } public: }; } // namespace mlir::ROCDL MLIR_DECLARE_EXPLICIT_TYPE_ID(::mlir::ROCDL::WaitTensorcntOp) MLIR_DECLARE_EXPLICIT_TYPE_ID(::mlir::ROCDL::detail::WaitTensorcntOpGenericAdaptorBase::Properties) namespace mlir::ROCDL { //===----------------------------------------------------------------------===// // ::mlir::ROCDL::WakeupBarrierOp declarations //===----------------------------------------------------------------------===// namespace detail { class WakeupBarrierOpGenericAdaptorBase { public: using Properties = ::mlir::EmptyProperties; protected: ::mlir::DictionaryAttr odsAttrs; ::std::optional<::mlir::OperationName> odsOpName; Properties properties; ::mlir::RegionRange odsRegions; public: WakeupBarrierOpGenericAdaptorBase(::mlir::DictionaryAttr attrs, const Properties &properties, ::mlir::RegionRange regions = {}) : odsAttrs(attrs), properties(properties), odsRegions(regions) { if (odsAttrs) odsOpName.emplace("rocdl.s.wakeup.barrier", odsAttrs.getContext()); } WakeupBarrierOpGenericAdaptorBase(WakeupBarrierOp op); std::pair getODSOperandIndexAndLength(unsigned index, unsigned odsOperandsSize) { return {index, 1}; } const Properties &getProperties() { return properties; } ::mlir::DictionaryAttr getAttributes() { return odsAttrs; } }; } // namespace detail template class WakeupBarrierOpGenericAdaptor : public detail::WakeupBarrierOpGenericAdaptorBase { using ValueT = ::llvm::detail::ValueOfRange; using Base = detail::WakeupBarrierOpGenericAdaptorBase; static constexpr int odsIndex_ptr = 0; public: WakeupBarrierOpGenericAdaptor(RangeT values, ::mlir::DictionaryAttr attrs, const Properties &properties, ::mlir::RegionRange regions = {}) : Base(attrs, properties, regions), odsOperands(values) {} WakeupBarrierOpGenericAdaptor(RangeT values, ::mlir::DictionaryAttr attrs, ::mlir::PropertyRef properties, ::mlir::RegionRange regions = {}) : WakeupBarrierOpGenericAdaptor(values, attrs, (properties ? *properties.as() : Properties{}), regions) {} WakeupBarrierOpGenericAdaptor(RangeT values, ::mlir::DictionaryAttr attrs = nullptr) : WakeupBarrierOpGenericAdaptor(values, attrs, Properties{}, {}) {} WakeupBarrierOpGenericAdaptor(RangeT values, const WakeupBarrierOpGenericAdaptorBase &base) : Base(base), odsOperands(values) {} template >> WakeupBarrierOpGenericAdaptor(RangeT values, LateInst op) : Base(op), odsOperands(values) {} std::pair getODSOperandIndexAndLength(unsigned index) { return Base::getODSOperandIndexAndLength(index, odsOperands.size()); } RangeT getODSOperands(unsigned index) { auto valueRange = getODSOperandIndexAndLength(index); return {std::next(odsOperands.begin(), valueRange.first), std::next(odsOperands.begin(), valueRange.first + valueRange.second)}; } ValueT getPtr() { return (*getODSOperands(0).begin()); } RangeT getOperands() { return odsOperands; } private: RangeT odsOperands; }; class WakeupBarrierOpAdaptor : public WakeupBarrierOpGenericAdaptor<::mlir::ValueRange> { public: using WakeupBarrierOpGenericAdaptor::WakeupBarrierOpGenericAdaptor; WakeupBarrierOpAdaptor(WakeupBarrierOp op); ::llvm::LogicalResult verify(::mlir::Location loc); }; class WakeupBarrierOp : public ::mlir::Op { public: using Op::Op; using Op::print; using Adaptor = WakeupBarrierOpAdaptor; template using GenericAdaptor = WakeupBarrierOpGenericAdaptor; using FoldAdaptor = GenericAdaptor<::llvm::ArrayRef<::mlir::Attribute>>; static constexpr int odsIndex_ptr = 0; using Properties = FoldAdaptor::Properties; static ::llvm::ArrayRef<::llvm::StringRef> getAttributeNames() { return {}; } static constexpr ::llvm::StringLiteral getOperationName() { return ::llvm::StringLiteral("rocdl.s.wakeup.barrier"); } std::pair getODSOperandIndexAndLength(unsigned index) { return {index, 1}; } ::mlir::Operation::operand_range getODSOperands(unsigned index) { auto valueRange = getODSOperandIndexAndLength(index); return {std::next(getOperation()->operand_begin(), valueRange.first), std::next(getOperation()->operand_begin(), valueRange.first + valueRange.second)}; } ::mlir::TypedValue<::mlir::LLVM::LLVMPointerType> getPtr() { return ::llvm::cast<::mlir::TypedValue<::mlir::LLVM::LLVMPointerType>>(*getODSOperands(0).begin()); } ::mlir::OpOperand &getPtrMutable() { auto range = getODSOperandIndexAndLength(0); return getOperation()->getOpOperand(range.first); } std::pair getODSResultIndexAndLength(unsigned index) { return {index, 1}; } ::mlir::Operation::result_range getODSResults(unsigned index) { auto valueRange = getODSResultIndexAndLength(index); return {std::next(getOperation()->result_begin(), valueRange.first), std::next(getOperation()->result_begin(), valueRange.first + valueRange.second)}; } static ::llvm::LogicalResult setPropertiesFromAttr(Properties &prop, ::mlir::Attribute attr, ::llvm::function_ref<::mlir::InFlightDiagnostic()> emitError); static ::mlir::Attribute getPropertiesAsAttr(::mlir::MLIRContext *ctx, const Properties &prop); static llvm::hash_code computePropertiesHash(const Properties &prop); static std::optional getInherentAttr(::mlir::MLIRContext *ctx, const Properties &prop, llvm::StringRef name); static void setInherentAttr(Properties &prop, llvm::StringRef name, mlir::Attribute value); static void populateInherentAttrs(::mlir::MLIRContext *ctx, const Properties &prop, ::mlir::NamedAttrList &attrs); static ::llvm::LogicalResult verifyInherentAttrs(::mlir::OperationName opName, ::mlir::NamedAttrList &attrs, llvm::function_ref<::mlir::InFlightDiagnostic()> emitError); static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::Value ptr); static WakeupBarrierOp create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::Value ptr); static WakeupBarrierOp create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::Value ptr); static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::Value ptr); static WakeupBarrierOp create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::Value ptr); static WakeupBarrierOp create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::Value ptr); static void build(::mlir::OpBuilder &, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, ::llvm::ArrayRef<::mlir::NamedAttribute> attributes = {}); static WakeupBarrierOp create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, ::llvm::ArrayRef<::mlir::NamedAttribute> attributes = {}); static WakeupBarrierOp create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, ::llvm::ArrayRef<::mlir::NamedAttribute> attributes = {}); static void build(::mlir::OpBuilder &, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, const Properties &properties, ::llvm::ArrayRef<::mlir::NamedAttribute> discardableAttributes = {}); static WakeupBarrierOp create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, const Properties &properties, ::llvm::ArrayRef<::mlir::NamedAttribute> discardableAttributes = {}); static WakeupBarrierOp create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, const Properties &properties, ::llvm::ArrayRef<::mlir::NamedAttribute> discardableAttributes = {}); ::llvm::LogicalResult verifyInvariantsImpl(); ::llvm::LogicalResult verifyInvariants(); static ::mlir::ParseResult parse(::mlir::OpAsmParser &parser, ::mlir::OperationState &result); void print(::mlir::OpAsmPrinter &_odsPrinter); public: }; } // namespace mlir::ROCDL MLIR_DECLARE_EXPLICIT_TYPE_ID(::mlir::ROCDL::WakeupBarrierOp) namespace mlir::ROCDL { //===----------------------------------------------------------------------===// // ::mlir::ROCDL::WaveBarrierOp declarations //===----------------------------------------------------------------------===// namespace detail { class WaveBarrierOpGenericAdaptorBase { public: using Properties = ::mlir::EmptyProperties; protected: ::mlir::DictionaryAttr odsAttrs; ::std::optional<::mlir::OperationName> odsOpName; Properties properties; ::mlir::RegionRange odsRegions; public: WaveBarrierOpGenericAdaptorBase(::mlir::DictionaryAttr attrs, const Properties &properties, ::mlir::RegionRange regions = {}) : odsAttrs(attrs), properties(properties), odsRegions(regions) { if (odsAttrs) odsOpName.emplace("rocdl.wave.barrier", odsAttrs.getContext()); } WaveBarrierOpGenericAdaptorBase(WaveBarrierOp op); std::pair getODSOperandIndexAndLength(unsigned index, unsigned odsOperandsSize) { return {index, 1}; } const Properties &getProperties() { return properties; } ::mlir::DictionaryAttr getAttributes() { return odsAttrs; } }; } // namespace detail template class WaveBarrierOpGenericAdaptor : public detail::WaveBarrierOpGenericAdaptorBase { using ValueT = ::llvm::detail::ValueOfRange; using Base = detail::WaveBarrierOpGenericAdaptorBase; public: WaveBarrierOpGenericAdaptor(RangeT values, ::mlir::DictionaryAttr attrs, const Properties &properties, ::mlir::RegionRange regions = {}) : Base(attrs, properties, regions), odsOperands(values) {} WaveBarrierOpGenericAdaptor(RangeT values, ::mlir::DictionaryAttr attrs, ::mlir::PropertyRef properties, ::mlir::RegionRange regions = {}) : WaveBarrierOpGenericAdaptor(values, attrs, (properties ? *properties.as() : Properties{}), regions) {} WaveBarrierOpGenericAdaptor(RangeT values, ::mlir::DictionaryAttr attrs = nullptr) : WaveBarrierOpGenericAdaptor(values, attrs, Properties{}, {}) {} WaveBarrierOpGenericAdaptor(RangeT values, const WaveBarrierOpGenericAdaptorBase &base) : Base(base), odsOperands(values) {} template >> WaveBarrierOpGenericAdaptor(RangeT values, LateInst op) : Base(op), odsOperands(values) {} std::pair getODSOperandIndexAndLength(unsigned index) { return Base::getODSOperandIndexAndLength(index, odsOperands.size()); } RangeT getODSOperands(unsigned index) { auto valueRange = getODSOperandIndexAndLength(index); return {std::next(odsOperands.begin(), valueRange.first), std::next(odsOperands.begin(), valueRange.first + valueRange.second)}; } RangeT getOperands() { return odsOperands; } private: RangeT odsOperands; }; class WaveBarrierOpAdaptor : public WaveBarrierOpGenericAdaptor<::mlir::ValueRange> { public: using WaveBarrierOpGenericAdaptor::WaveBarrierOpGenericAdaptor; WaveBarrierOpAdaptor(WaveBarrierOp op); ::llvm::LogicalResult verify(::mlir::Location loc); }; class WaveBarrierOp : public ::mlir::Op { public: using Op::Op; using Op::print; using Adaptor = WaveBarrierOpAdaptor; template using GenericAdaptor = WaveBarrierOpGenericAdaptor; using FoldAdaptor = GenericAdaptor<::llvm::ArrayRef<::mlir::Attribute>>; using Properties = FoldAdaptor::Properties; static ::llvm::ArrayRef<::llvm::StringRef> getAttributeNames() { return {}; } static constexpr ::llvm::StringLiteral getOperationName() { return ::llvm::StringLiteral("rocdl.wave.barrier"); } std::pair getODSOperandIndexAndLength(unsigned index) { return {index, 1}; } ::mlir::Operation::operand_range getODSOperands(unsigned index) { auto valueRange = getODSOperandIndexAndLength(index); return {std::next(getOperation()->operand_begin(), valueRange.first), std::next(getOperation()->operand_begin(), valueRange.first + valueRange.second)}; } std::pair getODSResultIndexAndLength(unsigned index) { return {index, 1}; } ::mlir::Operation::result_range getODSResults(unsigned index) { auto valueRange = getODSResultIndexAndLength(index); return {std::next(getOperation()->result_begin(), valueRange.first), std::next(getOperation()->result_begin(), valueRange.first + valueRange.second)}; } static ::llvm::LogicalResult setPropertiesFromAttr(Properties &prop, ::mlir::Attribute attr, ::llvm::function_ref<::mlir::InFlightDiagnostic()> emitError); static ::mlir::Attribute getPropertiesAsAttr(::mlir::MLIRContext *ctx, const Properties &prop); static llvm::hash_code computePropertiesHash(const Properties &prop); static std::optional getInherentAttr(::mlir::MLIRContext *ctx, const Properties &prop, llvm::StringRef name); static void setInherentAttr(Properties &prop, llvm::StringRef name, mlir::Attribute value); static void populateInherentAttrs(::mlir::MLIRContext *ctx, const Properties &prop, ::mlir::NamedAttrList &attrs); static ::llvm::LogicalResult verifyInherentAttrs(::mlir::OperationName opName, ::mlir::NamedAttrList &attrs, llvm::function_ref<::mlir::InFlightDiagnostic()> emitError); static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState); static WaveBarrierOp create(::mlir::OpBuilder &builder, ::mlir::Location location); static WaveBarrierOp create(::mlir::ImplicitLocOpBuilder &builder); static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes); static WaveBarrierOp create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes); static WaveBarrierOp create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes); static void build(::mlir::OpBuilder &, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, ::llvm::ArrayRef<::mlir::NamedAttribute> attributes = {}); static WaveBarrierOp create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, ::llvm::ArrayRef<::mlir::NamedAttribute> attributes = {}); static WaveBarrierOp create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, ::llvm::ArrayRef<::mlir::NamedAttribute> attributes = {}); static void build(::mlir::OpBuilder &, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, const Properties &properties, ::llvm::ArrayRef<::mlir::NamedAttribute> discardableAttributes = {}); static WaveBarrierOp create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, const Properties &properties, ::llvm::ArrayRef<::mlir::NamedAttribute> discardableAttributes = {}); static WaveBarrierOp create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, const Properties &properties, ::llvm::ArrayRef<::mlir::NamedAttribute> discardableAttributes = {}); ::llvm::LogicalResult verifyInvariantsImpl(); ::llvm::LogicalResult verifyInvariants(); static ::mlir::ParseResult parse(::mlir::OpAsmParser &parser, ::mlir::OperationState &result); void print(::mlir::OpAsmPrinter &_odsPrinter); public: }; } // namespace mlir::ROCDL MLIR_DECLARE_EXPLICIT_TYPE_ID(::mlir::ROCDL::WaveBarrierOp) namespace mlir::ROCDL { //===----------------------------------------------------------------------===// // ::mlir::ROCDL::WaveId declarations //===----------------------------------------------------------------------===// namespace detail { class WaveIdGenericAdaptorBase { public: struct Properties { using rangeTy = ::mlir::LLVM::ConstantRangeAttr; rangeTy range; auto getRange() const { auto &propStorage = this->range; return ::llvm::dyn_cast_or_null<::mlir::LLVM::ConstantRangeAttr>(propStorage); } void setRange(const ::mlir::LLVM::ConstantRangeAttr &propValue) { this->range = propValue; } bool operator==(const Properties &rhs) const { return rhs.range == this->range && true; } bool operator!=(const Properties &rhs) const { return !(*this == rhs); } }; protected: ::mlir::DictionaryAttr odsAttrs; ::std::optional<::mlir::OperationName> odsOpName; Properties properties; ::mlir::RegionRange odsRegions; public: WaveIdGenericAdaptorBase(::mlir::DictionaryAttr attrs, const Properties &properties, ::mlir::RegionRange regions = {}) : odsAttrs(attrs), properties(properties), odsRegions(regions) { if (odsAttrs) odsOpName.emplace("rocdl.wave.id", odsAttrs.getContext()); } WaveIdGenericAdaptorBase(WaveId op); std::pair getODSOperandIndexAndLength(unsigned index, unsigned odsOperandsSize) { return {index, 1}; } const Properties &getProperties() { return properties; } ::mlir::DictionaryAttr getAttributes() { return odsAttrs; } ::mlir::LLVM::ConstantRangeAttr getRangeAttr() { auto attr = ::llvm::dyn_cast_or_null<::mlir::LLVM::ConstantRangeAttr>(getProperties().range); return attr; } ::std::optional<::mlir::LLVM::ConstantRangeAttr> getRange(); }; } // namespace detail template class WaveIdGenericAdaptor : public detail::WaveIdGenericAdaptorBase { using ValueT = ::llvm::detail::ValueOfRange; using Base = detail::WaveIdGenericAdaptorBase; public: WaveIdGenericAdaptor(RangeT values, ::mlir::DictionaryAttr attrs, const Properties &properties, ::mlir::RegionRange regions = {}) : Base(attrs, properties, regions), odsOperands(values) {} WaveIdGenericAdaptor(RangeT values, ::mlir::DictionaryAttr attrs, ::mlir::PropertyRef properties, ::mlir::RegionRange regions = {}) : WaveIdGenericAdaptor(values, attrs, (properties ? *properties.as() : Properties{}), regions) {} WaveIdGenericAdaptor(RangeT values, ::mlir::DictionaryAttr attrs = nullptr) : WaveIdGenericAdaptor(values, attrs, Properties{}, {}) {} WaveIdGenericAdaptor(RangeT values, const WaveIdGenericAdaptorBase &base) : Base(base), odsOperands(values) {} template >> WaveIdGenericAdaptor(RangeT values, LateInst op) : Base(op), odsOperands(values) {} std::pair getODSOperandIndexAndLength(unsigned index) { return Base::getODSOperandIndexAndLength(index, odsOperands.size()); } RangeT getODSOperands(unsigned index) { auto valueRange = getODSOperandIndexAndLength(index); return {std::next(odsOperands.begin(), valueRange.first), std::next(odsOperands.begin(), valueRange.first + valueRange.second)}; } RangeT getOperands() { return odsOperands; } private: RangeT odsOperands; }; class WaveIdAdaptor : public WaveIdGenericAdaptor<::mlir::ValueRange> { public: using WaveIdGenericAdaptor::WaveIdGenericAdaptor; WaveIdAdaptor(WaveId op); ::llvm::LogicalResult verify(::mlir::Location loc); }; class WaveId : public ::mlir::Op::Impl, ::mlir::OpTrait::ZeroSuccessors, ::mlir::OpTrait::ZeroOperands, ::mlir::OpTrait::OpInvariants, ::mlir::BytecodeOpInterface::Trait, ::mlir::ConditionallySpeculatable::Trait, ::mlir::OpTrait::AlwaysSpeculatableImplTrait, ::mlir::MemoryEffectOpInterface::Trait> { public: using Op::Op; using Op::print; using Adaptor = WaveIdAdaptor; template using GenericAdaptor = WaveIdGenericAdaptor; using FoldAdaptor = GenericAdaptor<::llvm::ArrayRef<::mlir::Attribute>>; using Properties = FoldAdaptor::Properties; static ::llvm::ArrayRef<::llvm::StringRef> getAttributeNames() { static ::llvm::StringRef attrNames[] = {::llvm::StringRef("range")}; return ::llvm::ArrayRef(attrNames); } ::mlir::StringAttr getRangeAttrName() { return getAttributeNameForIndex(0); } static ::mlir::StringAttr getRangeAttrName(::mlir::OperationName name) { return getAttributeNameForIndex(name, 0); } static constexpr ::llvm::StringLiteral getOperationName() { return ::llvm::StringLiteral("rocdl.wave.id"); } std::pair getODSOperandIndexAndLength(unsigned index) { return {index, 1}; } ::mlir::Operation::operand_range getODSOperands(unsigned index) { auto valueRange = getODSOperandIndexAndLength(index); return {std::next(getOperation()->operand_begin(), valueRange.first), std::next(getOperation()->operand_begin(), valueRange.first + valueRange.second)}; } std::pair getODSResultIndexAndLength(unsigned index) { return {index, 1}; } ::mlir::Operation::result_range getODSResults(unsigned index) { auto valueRange = getODSResultIndexAndLength(index); return {std::next(getOperation()->result_begin(), valueRange.first), std::next(getOperation()->result_begin(), valueRange.first + valueRange.second)}; } ::mlir::TypedValue<::mlir::Type> getRes() { return ::llvm::cast<::mlir::TypedValue<::mlir::Type>>(*getODSResults(0).begin()); } static ::llvm::LogicalResult setPropertiesFromAttr(Properties &prop, ::mlir::Attribute attr, ::llvm::function_ref<::mlir::InFlightDiagnostic()> emitError); static ::mlir::Attribute getPropertiesAsAttr(::mlir::MLIRContext *ctx, const Properties &prop); static llvm::hash_code computePropertiesHash(const Properties &prop); static std::optional getInherentAttr(::mlir::MLIRContext *ctx, const Properties &prop, llvm::StringRef name); static void setInherentAttr(Properties &prop, llvm::StringRef name, mlir::Attribute value); static void populateInherentAttrs(::mlir::MLIRContext *ctx, const Properties &prop, ::mlir::NamedAttrList &attrs); static ::llvm::LogicalResult verifyInherentAttrs(::mlir::OperationName opName, ::mlir::NamedAttrList &attrs, llvm::function_ref<::mlir::InFlightDiagnostic()> emitError); static ::llvm::LogicalResult readProperties(::mlir::DialectBytecodeReader &reader, ::mlir::OperationState &state); void writeProperties(::mlir::DialectBytecodeWriter &writer); ::mlir::LLVM::ConstantRangeAttr getRangeAttr() { return ::llvm::dyn_cast_or_null<::mlir::LLVM::ConstantRangeAttr>(getProperties().range); } ::std::optional<::mlir::LLVM::ConstantRangeAttr> getRange(); void setRangeAttr(::mlir::LLVM::ConstantRangeAttr attr) { getProperties().range = attr; } ::mlir::Attribute removeRangeAttr() { auto attr = getProperties().range; getProperties().range = {}; return attr; } static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, Type resultType); static WaveId create(::mlir::OpBuilder &builder, ::mlir::Location location, Type resultType); static WaveId create(::mlir::ImplicitLocOpBuilder &builder, Type resultType); static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::Type res, /*optional*/::mlir::LLVM::ConstantRangeAttr range); static WaveId create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::Type res, /*optional*/::mlir::LLVM::ConstantRangeAttr range); static WaveId create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::Type res, /*optional*/::mlir::LLVM::ConstantRangeAttr range); static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, /*optional*/::mlir::LLVM::ConstantRangeAttr range); static WaveId create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, /*optional*/::mlir::LLVM::ConstantRangeAttr range); static WaveId create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, /*optional*/::mlir::LLVM::ConstantRangeAttr range); static void build(::mlir::OpBuilder &, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, ::llvm::ArrayRef<::mlir::NamedAttribute> attributes = {}); static WaveId create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, ::llvm::ArrayRef<::mlir::NamedAttribute> attributes = {}); static WaveId create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, ::llvm::ArrayRef<::mlir::NamedAttribute> attributes = {}); static void build(::mlir::OpBuilder &, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, const Properties &properties, ::llvm::ArrayRef<::mlir::NamedAttribute> discardableAttributes = {}); static WaveId create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, const Properties &properties, ::llvm::ArrayRef<::mlir::NamedAttribute> discardableAttributes = {}); static WaveId create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, const Properties &properties, ::llvm::ArrayRef<::mlir::NamedAttribute> discardableAttributes = {}); ::llvm::LogicalResult verifyInvariantsImpl(); ::llvm::LogicalResult verifyInvariants(); static ::mlir::ParseResult parse(::mlir::OpAsmParser &parser, ::mlir::OperationState &result); void print(::mlir::OpAsmPrinter &_odsPrinter); void getEffects(::llvm::SmallVectorImpl<::mlir::SideEffects::EffectInstance<::mlir::MemoryEffects::Effect>> &effects); private: ::mlir::StringAttr getAttributeNameForIndex(unsigned index) { return getAttributeNameForIndex((*this)->getName(), index); } static ::mlir::StringAttr getAttributeNameForIndex(::mlir::OperationName name, unsigned index) { assert(index < 1 && "invalid attribute index"); assert(name.getStringRef() == getOperationName() && "invalid operation name"); assert(name.isRegistered() && "Operation isn't registered, missing a " "dependent dialect loading?"); return name.getAttributeNames()[index]; } public: }; } // namespace mlir::ROCDL MLIR_DECLARE_EXPLICIT_TYPE_ID(::mlir::ROCDL::WaveId) MLIR_DECLARE_EXPLICIT_TYPE_ID(::mlir::ROCDL::detail::WaveIdGenericAdaptorBase::Properties) namespace mlir::ROCDL { //===----------------------------------------------------------------------===// // ::mlir::ROCDL::WavefrontSizeOp declarations //===----------------------------------------------------------------------===// namespace detail { class WavefrontSizeOpGenericAdaptorBase { public: struct Properties { using rangeTy = ::mlir::LLVM::ConstantRangeAttr; rangeTy range; auto getRange() const { auto &propStorage = this->range; return ::llvm::dyn_cast_or_null<::mlir::LLVM::ConstantRangeAttr>(propStorage); } void setRange(const ::mlir::LLVM::ConstantRangeAttr &propValue) { this->range = propValue; } bool operator==(const Properties &rhs) const { return rhs.range == this->range && true; } bool operator!=(const Properties &rhs) const { return !(*this == rhs); } }; protected: ::mlir::DictionaryAttr odsAttrs; ::std::optional<::mlir::OperationName> odsOpName; Properties properties; ::mlir::RegionRange odsRegions; public: WavefrontSizeOpGenericAdaptorBase(::mlir::DictionaryAttr attrs, const Properties &properties, ::mlir::RegionRange regions = {}) : odsAttrs(attrs), properties(properties), odsRegions(regions) { if (odsAttrs) odsOpName.emplace("rocdl.wavefrontsize", odsAttrs.getContext()); } WavefrontSizeOpGenericAdaptorBase(WavefrontSizeOp op); std::pair getODSOperandIndexAndLength(unsigned index, unsigned odsOperandsSize) { return {index, 1}; } const Properties &getProperties() { return properties; } ::mlir::DictionaryAttr getAttributes() { return odsAttrs; } ::mlir::LLVM::ConstantRangeAttr getRangeAttr() { auto attr = ::llvm::dyn_cast_or_null<::mlir::LLVM::ConstantRangeAttr>(getProperties().range); return attr; } ::std::optional<::mlir::LLVM::ConstantRangeAttr> getRange(); }; } // namespace detail template class WavefrontSizeOpGenericAdaptor : public detail::WavefrontSizeOpGenericAdaptorBase { using ValueT = ::llvm::detail::ValueOfRange; using Base = detail::WavefrontSizeOpGenericAdaptorBase; public: WavefrontSizeOpGenericAdaptor(RangeT values, ::mlir::DictionaryAttr attrs, const Properties &properties, ::mlir::RegionRange regions = {}) : Base(attrs, properties, regions), odsOperands(values) {} WavefrontSizeOpGenericAdaptor(RangeT values, ::mlir::DictionaryAttr attrs, ::mlir::PropertyRef properties, ::mlir::RegionRange regions = {}) : WavefrontSizeOpGenericAdaptor(values, attrs, (properties ? *properties.as() : Properties{}), regions) {} WavefrontSizeOpGenericAdaptor(RangeT values, ::mlir::DictionaryAttr attrs = nullptr) : WavefrontSizeOpGenericAdaptor(values, attrs, Properties{}, {}) {} WavefrontSizeOpGenericAdaptor(RangeT values, const WavefrontSizeOpGenericAdaptorBase &base) : Base(base), odsOperands(values) {} template >> WavefrontSizeOpGenericAdaptor(RangeT values, LateInst op) : Base(op), odsOperands(values) {} std::pair getODSOperandIndexAndLength(unsigned index) { return Base::getODSOperandIndexAndLength(index, odsOperands.size()); } RangeT getODSOperands(unsigned index) { auto valueRange = getODSOperandIndexAndLength(index); return {std::next(odsOperands.begin(), valueRange.first), std::next(odsOperands.begin(), valueRange.first + valueRange.second)}; } RangeT getOperands() { return odsOperands; } private: RangeT odsOperands; }; class WavefrontSizeOpAdaptor : public WavefrontSizeOpGenericAdaptor<::mlir::ValueRange> { public: using WavefrontSizeOpGenericAdaptor::WavefrontSizeOpGenericAdaptor; WavefrontSizeOpAdaptor(WavefrontSizeOp op); ::llvm::LogicalResult verify(::mlir::Location loc); }; class WavefrontSizeOp : public ::mlir::Op::Impl, ::mlir::OpTrait::ZeroSuccessors, ::mlir::OpTrait::ZeroOperands, ::mlir::OpTrait::OpInvariants, ::mlir::BytecodeOpInterface::Trait, ::mlir::ConditionallySpeculatable::Trait, ::mlir::OpTrait::AlwaysSpeculatableImplTrait, ::mlir::MemoryEffectOpInterface::Trait> { public: using Op::Op; using Op::print; using Adaptor = WavefrontSizeOpAdaptor; template using GenericAdaptor = WavefrontSizeOpGenericAdaptor; using FoldAdaptor = GenericAdaptor<::llvm::ArrayRef<::mlir::Attribute>>; using Properties = FoldAdaptor::Properties; static ::llvm::ArrayRef<::llvm::StringRef> getAttributeNames() { static ::llvm::StringRef attrNames[] = {::llvm::StringRef("range")}; return ::llvm::ArrayRef(attrNames); } ::mlir::StringAttr getRangeAttrName() { return getAttributeNameForIndex(0); } static ::mlir::StringAttr getRangeAttrName(::mlir::OperationName name) { return getAttributeNameForIndex(name, 0); } static constexpr ::llvm::StringLiteral getOperationName() { return ::llvm::StringLiteral("rocdl.wavefrontsize"); } std::pair getODSOperandIndexAndLength(unsigned index) { return {index, 1}; } ::mlir::Operation::operand_range getODSOperands(unsigned index) { auto valueRange = getODSOperandIndexAndLength(index); return {std::next(getOperation()->operand_begin(), valueRange.first), std::next(getOperation()->operand_begin(), valueRange.first + valueRange.second)}; } std::pair getODSResultIndexAndLength(unsigned index) { return {index, 1}; } ::mlir::Operation::result_range getODSResults(unsigned index) { auto valueRange = getODSResultIndexAndLength(index); return {std::next(getOperation()->result_begin(), valueRange.first), std::next(getOperation()->result_begin(), valueRange.first + valueRange.second)}; } ::mlir::TypedValue<::mlir::Type> getRes() { return ::llvm::cast<::mlir::TypedValue<::mlir::Type>>(*getODSResults(0).begin()); } static ::llvm::LogicalResult setPropertiesFromAttr(Properties &prop, ::mlir::Attribute attr, ::llvm::function_ref<::mlir::InFlightDiagnostic()> emitError); static ::mlir::Attribute getPropertiesAsAttr(::mlir::MLIRContext *ctx, const Properties &prop); static llvm::hash_code computePropertiesHash(const Properties &prop); static std::optional getInherentAttr(::mlir::MLIRContext *ctx, const Properties &prop, llvm::StringRef name); static void setInherentAttr(Properties &prop, llvm::StringRef name, mlir::Attribute value); static void populateInherentAttrs(::mlir::MLIRContext *ctx, const Properties &prop, ::mlir::NamedAttrList &attrs); static ::llvm::LogicalResult verifyInherentAttrs(::mlir::OperationName opName, ::mlir::NamedAttrList &attrs, llvm::function_ref<::mlir::InFlightDiagnostic()> emitError); static ::llvm::LogicalResult readProperties(::mlir::DialectBytecodeReader &reader, ::mlir::OperationState &state); void writeProperties(::mlir::DialectBytecodeWriter &writer); ::mlir::LLVM::ConstantRangeAttr getRangeAttr() { return ::llvm::dyn_cast_or_null<::mlir::LLVM::ConstantRangeAttr>(getProperties().range); } ::std::optional<::mlir::LLVM::ConstantRangeAttr> getRange(); void setRangeAttr(::mlir::LLVM::ConstantRangeAttr attr) { getProperties().range = attr; } ::mlir::Attribute removeRangeAttr() { auto attr = getProperties().range; getProperties().range = {}; return attr; } static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, Type resultType); static WavefrontSizeOp create(::mlir::OpBuilder &builder, ::mlir::Location location, Type resultType); static WavefrontSizeOp create(::mlir::ImplicitLocOpBuilder &builder, Type resultType); static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::Type res, /*optional*/::mlir::LLVM::ConstantRangeAttr range); static WavefrontSizeOp create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::Type res, /*optional*/::mlir::LLVM::ConstantRangeAttr range); static WavefrontSizeOp create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::Type res, /*optional*/::mlir::LLVM::ConstantRangeAttr range); static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, /*optional*/::mlir::LLVM::ConstantRangeAttr range); static WavefrontSizeOp create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, /*optional*/::mlir::LLVM::ConstantRangeAttr range); static WavefrontSizeOp create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, /*optional*/::mlir::LLVM::ConstantRangeAttr range); static void build(::mlir::OpBuilder &, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, ::llvm::ArrayRef<::mlir::NamedAttribute> attributes = {}); static WavefrontSizeOp create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, ::llvm::ArrayRef<::mlir::NamedAttribute> attributes = {}); static WavefrontSizeOp create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, ::llvm::ArrayRef<::mlir::NamedAttribute> attributes = {}); static void build(::mlir::OpBuilder &, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, const Properties &properties, ::llvm::ArrayRef<::mlir::NamedAttribute> discardableAttributes = {}); static WavefrontSizeOp create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, const Properties &properties, ::llvm::ArrayRef<::mlir::NamedAttribute> discardableAttributes = {}); static WavefrontSizeOp create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, const Properties &properties, ::llvm::ArrayRef<::mlir::NamedAttribute> discardableAttributes = {}); ::llvm::LogicalResult verifyInvariantsImpl(); ::llvm::LogicalResult verifyInvariants(); static ::mlir::ParseResult parse(::mlir::OpAsmParser &parser, ::mlir::OperationState &result); void print(::mlir::OpAsmPrinter &_odsPrinter); void getEffects(::llvm::SmallVectorImpl<::mlir::SideEffects::EffectInstance<::mlir::MemoryEffects::Effect>> &effects); private: ::mlir::StringAttr getAttributeNameForIndex(unsigned index) { return getAttributeNameForIndex((*this)->getName(), index); } static ::mlir::StringAttr getAttributeNameForIndex(::mlir::OperationName name, unsigned index) { assert(index < 1 && "invalid attribute index"); assert(name.getStringRef() == getOperationName() && "invalid operation name"); assert(name.isRegistered() && "Operation isn't registered, missing a " "dependent dialect loading?"); return name.getAttributeNames()[index]; } public: }; } // namespace mlir::ROCDL MLIR_DECLARE_EXPLICIT_TYPE_ID(::mlir::ROCDL::WavefrontSizeOp) MLIR_DECLARE_EXPLICIT_TYPE_ID(::mlir::ROCDL::detail::WavefrontSizeOpGenericAdaptorBase::Properties) namespace mlir::ROCDL { //===----------------------------------------------------------------------===// // ::mlir::ROCDL::dot4_f32_bf8_bf8 declarations //===----------------------------------------------------------------------===// namespace detail { class dot4_f32_bf8_bf8GenericAdaptorBase { public: using Properties = ::mlir::EmptyProperties; protected: ::mlir::DictionaryAttr odsAttrs; ::std::optional<::mlir::OperationName> odsOpName; Properties properties; ::mlir::RegionRange odsRegions; public: dot4_f32_bf8_bf8GenericAdaptorBase(::mlir::DictionaryAttr attrs, const Properties &properties, ::mlir::RegionRange regions = {}) : odsAttrs(attrs), properties(properties), odsRegions(regions) { if (odsAttrs) odsOpName.emplace("rocdl.dot4.f32.bf8.bf8", odsAttrs.getContext()); } dot4_f32_bf8_bf8GenericAdaptorBase(dot4_f32_bf8_bf8 op); std::pair getODSOperandIndexAndLength(unsigned index, unsigned odsOperandsSize) { return {index, 1}; } const Properties &getProperties() { return properties; } ::mlir::DictionaryAttr getAttributes() { return odsAttrs; } }; } // namespace detail template class dot4_f32_bf8_bf8GenericAdaptor : public detail::dot4_f32_bf8_bf8GenericAdaptorBase { using ValueT = ::llvm::detail::ValueOfRange; using Base = detail::dot4_f32_bf8_bf8GenericAdaptorBase; static constexpr int odsIndex_a = 0; static constexpr int odsIndex_b = 1; static constexpr int odsIndex_c = 2; public: dot4_f32_bf8_bf8GenericAdaptor(RangeT values, ::mlir::DictionaryAttr attrs, const Properties &properties, ::mlir::RegionRange regions = {}) : Base(attrs, properties, regions), odsOperands(values) {} dot4_f32_bf8_bf8GenericAdaptor(RangeT values, ::mlir::DictionaryAttr attrs, ::mlir::PropertyRef properties, ::mlir::RegionRange regions = {}) : dot4_f32_bf8_bf8GenericAdaptor(values, attrs, (properties ? *properties.as() : Properties{}), regions) {} dot4_f32_bf8_bf8GenericAdaptor(RangeT values, ::mlir::DictionaryAttr attrs = nullptr) : dot4_f32_bf8_bf8GenericAdaptor(values, attrs, Properties{}, {}) {} dot4_f32_bf8_bf8GenericAdaptor(RangeT values, const dot4_f32_bf8_bf8GenericAdaptorBase &base) : Base(base), odsOperands(values) {} template >> dot4_f32_bf8_bf8GenericAdaptor(RangeT values, LateInst op) : Base(op), odsOperands(values) {} std::pair getODSOperandIndexAndLength(unsigned index) { return Base::getODSOperandIndexAndLength(index, odsOperands.size()); } RangeT getODSOperands(unsigned index) { auto valueRange = getODSOperandIndexAndLength(index); return {std::next(odsOperands.begin(), valueRange.first), std::next(odsOperands.begin(), valueRange.first + valueRange.second)}; } ValueT getA() { return (*getODSOperands(0).begin()); } ValueT getB() { return (*getODSOperands(1).begin()); } ValueT getC() { return (*getODSOperands(2).begin()); } RangeT getOperands() { return odsOperands; } private: RangeT odsOperands; }; class dot4_f32_bf8_bf8Adaptor : public dot4_f32_bf8_bf8GenericAdaptor<::mlir::ValueRange> { public: using dot4_f32_bf8_bf8GenericAdaptor::dot4_f32_bf8_bf8GenericAdaptor; dot4_f32_bf8_bf8Adaptor(dot4_f32_bf8_bf8 op); ::llvm::LogicalResult verify(::mlir::Location loc); }; class dot4_f32_bf8_bf8 : public ::mlir::Op::Impl, ::mlir::OpTrait::ZeroSuccessors, ::mlir::OpTrait::NOperands<3>::Impl, ::mlir::OpTrait::OpInvariants, ::mlir::ConditionallySpeculatable::Trait, ::mlir::OpTrait::AlwaysSpeculatableImplTrait, ::mlir::MemoryEffectOpInterface::Trait> { public: using Op::Op; using Op::print; using Adaptor = dot4_f32_bf8_bf8Adaptor; template using GenericAdaptor = dot4_f32_bf8_bf8GenericAdaptor; using FoldAdaptor = GenericAdaptor<::llvm::ArrayRef<::mlir::Attribute>>; static constexpr int odsIndex_a = 0; static constexpr int odsIndex_b = 1; static constexpr int odsIndex_c = 2; using Properties = FoldAdaptor::Properties; static ::llvm::ArrayRef<::llvm::StringRef> getAttributeNames() { return {}; } static constexpr ::llvm::StringLiteral getOperationName() { return ::llvm::StringLiteral("rocdl.dot4.f32.bf8.bf8"); } std::pair getODSOperandIndexAndLength(unsigned index) { return {index, 1}; } ::mlir::Operation::operand_range getODSOperands(unsigned index) { auto valueRange = getODSOperandIndexAndLength(index); return {std::next(getOperation()->operand_begin(), valueRange.first), std::next(getOperation()->operand_begin(), valueRange.first + valueRange.second)}; } ::mlir::TypedValue<::mlir::Type> getA() { return ::llvm::cast<::mlir::TypedValue<::mlir::Type>>(*getODSOperands(0).begin()); } ::mlir::TypedValue<::mlir::Type> getB() { return ::llvm::cast<::mlir::TypedValue<::mlir::Type>>(*getODSOperands(1).begin()); } ::mlir::TypedValue<::mlir::Type> getC() { return ::llvm::cast<::mlir::TypedValue<::mlir::Type>>(*getODSOperands(2).begin()); } ::mlir::OpOperand &getAMutable() { auto range = getODSOperandIndexAndLength(0); return getOperation()->getOpOperand(range.first); } ::mlir::OpOperand &getBMutable() { auto range = getODSOperandIndexAndLength(1); return getOperation()->getOpOperand(range.first); } ::mlir::OpOperand &getCMutable() { auto range = getODSOperandIndexAndLength(2); return getOperation()->getOpOperand(range.first); } std::pair getODSResultIndexAndLength(unsigned index) { return {index, 1}; } ::mlir::Operation::result_range getODSResults(unsigned index) { auto valueRange = getODSResultIndexAndLength(index); return {std::next(getOperation()->result_begin(), valueRange.first), std::next(getOperation()->result_begin(), valueRange.first + valueRange.second)}; } ::mlir::TypedValue<::mlir::Type> getRes() { return ::llvm::cast<::mlir::TypedValue<::mlir::Type>>(*getODSResults(0).begin()); } static ::llvm::LogicalResult setPropertiesFromAttr(Properties &prop, ::mlir::Attribute attr, ::llvm::function_ref<::mlir::InFlightDiagnostic()> emitError); static ::mlir::Attribute getPropertiesAsAttr(::mlir::MLIRContext *ctx, const Properties &prop); static llvm::hash_code computePropertiesHash(const Properties &prop); static std::optional getInherentAttr(::mlir::MLIRContext *ctx, const Properties &prop, llvm::StringRef name); static void setInherentAttr(Properties &prop, llvm::StringRef name, mlir::Attribute value); static void populateInherentAttrs(::mlir::MLIRContext *ctx, const Properties &prop, ::mlir::NamedAttrList &attrs); static ::llvm::LogicalResult verifyInherentAttrs(::mlir::OperationName opName, ::mlir::NamedAttrList &attrs, llvm::function_ref<::mlir::InFlightDiagnostic()> emitError); static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::Type res, ::mlir::Value a, ::mlir::Value b, ::mlir::Value c); static dot4_f32_bf8_bf8 create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::Type res, ::mlir::Value a, ::mlir::Value b, ::mlir::Value c); static dot4_f32_bf8_bf8 create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::Type res, ::mlir::Value a, ::mlir::Value b, ::mlir::Value c); static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::Value a, ::mlir::Value b, ::mlir::Value c); static dot4_f32_bf8_bf8 create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::Value a, ::mlir::Value b, ::mlir::Value c); static dot4_f32_bf8_bf8 create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::Value a, ::mlir::Value b, ::mlir::Value c); static void build(::mlir::OpBuilder &, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, ::llvm::ArrayRef<::mlir::NamedAttribute> attributes = {}); static dot4_f32_bf8_bf8 create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, ::llvm::ArrayRef<::mlir::NamedAttribute> attributes = {}); static dot4_f32_bf8_bf8 create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, ::llvm::ArrayRef<::mlir::NamedAttribute> attributes = {}); static void build(::mlir::OpBuilder &, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, const Properties &properties, ::llvm::ArrayRef<::mlir::NamedAttribute> discardableAttributes = {}); static dot4_f32_bf8_bf8 create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, const Properties &properties, ::llvm::ArrayRef<::mlir::NamedAttribute> discardableAttributes = {}); static dot4_f32_bf8_bf8 create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, const Properties &properties, ::llvm::ArrayRef<::mlir::NamedAttribute> discardableAttributes = {}); ::llvm::LogicalResult verifyInvariantsImpl(); ::llvm::LogicalResult verifyInvariants(); static ::mlir::ParseResult parse(::mlir::OpAsmParser &parser, ::mlir::OperationState &result); void print(::mlir::OpAsmPrinter &_odsPrinter); void getEffects(::llvm::SmallVectorImpl<::mlir::SideEffects::EffectInstance<::mlir::MemoryEffects::Effect>> &effects); public: }; } // namespace mlir::ROCDL MLIR_DECLARE_EXPLICIT_TYPE_ID(::mlir::ROCDL::dot4_f32_bf8_bf8) namespace mlir::ROCDL { //===----------------------------------------------------------------------===// // ::mlir::ROCDL::dot4_f32_bf8_fp8 declarations //===----------------------------------------------------------------------===// namespace detail { class dot4_f32_bf8_fp8GenericAdaptorBase { public: using Properties = ::mlir::EmptyProperties; protected: ::mlir::DictionaryAttr odsAttrs; ::std::optional<::mlir::OperationName> odsOpName; Properties properties; ::mlir::RegionRange odsRegions; public: dot4_f32_bf8_fp8GenericAdaptorBase(::mlir::DictionaryAttr attrs, const Properties &properties, ::mlir::RegionRange regions = {}) : odsAttrs(attrs), properties(properties), odsRegions(regions) { if (odsAttrs) odsOpName.emplace("rocdl.dot4.f32.bf8.fp8", odsAttrs.getContext()); } dot4_f32_bf8_fp8GenericAdaptorBase(dot4_f32_bf8_fp8 op); std::pair getODSOperandIndexAndLength(unsigned index, unsigned odsOperandsSize) { return {index, 1}; } const Properties &getProperties() { return properties; } ::mlir::DictionaryAttr getAttributes() { return odsAttrs; } }; } // namespace detail template class dot4_f32_bf8_fp8GenericAdaptor : public detail::dot4_f32_bf8_fp8GenericAdaptorBase { using ValueT = ::llvm::detail::ValueOfRange; using Base = detail::dot4_f32_bf8_fp8GenericAdaptorBase; static constexpr int odsIndex_a = 0; static constexpr int odsIndex_b = 1; static constexpr int odsIndex_c = 2; public: dot4_f32_bf8_fp8GenericAdaptor(RangeT values, ::mlir::DictionaryAttr attrs, const Properties &properties, ::mlir::RegionRange regions = {}) : Base(attrs, properties, regions), odsOperands(values) {} dot4_f32_bf8_fp8GenericAdaptor(RangeT values, ::mlir::DictionaryAttr attrs, ::mlir::PropertyRef properties, ::mlir::RegionRange regions = {}) : dot4_f32_bf8_fp8GenericAdaptor(values, attrs, (properties ? *properties.as() : Properties{}), regions) {} dot4_f32_bf8_fp8GenericAdaptor(RangeT values, ::mlir::DictionaryAttr attrs = nullptr) : dot4_f32_bf8_fp8GenericAdaptor(values, attrs, Properties{}, {}) {} dot4_f32_bf8_fp8GenericAdaptor(RangeT values, const dot4_f32_bf8_fp8GenericAdaptorBase &base) : Base(base), odsOperands(values) {} template >> dot4_f32_bf8_fp8GenericAdaptor(RangeT values, LateInst op) : Base(op), odsOperands(values) {} std::pair getODSOperandIndexAndLength(unsigned index) { return Base::getODSOperandIndexAndLength(index, odsOperands.size()); } RangeT getODSOperands(unsigned index) { auto valueRange = getODSOperandIndexAndLength(index); return {std::next(odsOperands.begin(), valueRange.first), std::next(odsOperands.begin(), valueRange.first + valueRange.second)}; } ValueT getA() { return (*getODSOperands(0).begin()); } ValueT getB() { return (*getODSOperands(1).begin()); } ValueT getC() { return (*getODSOperands(2).begin()); } RangeT getOperands() { return odsOperands; } private: RangeT odsOperands; }; class dot4_f32_bf8_fp8Adaptor : public dot4_f32_bf8_fp8GenericAdaptor<::mlir::ValueRange> { public: using dot4_f32_bf8_fp8GenericAdaptor::dot4_f32_bf8_fp8GenericAdaptor; dot4_f32_bf8_fp8Adaptor(dot4_f32_bf8_fp8 op); ::llvm::LogicalResult verify(::mlir::Location loc); }; class dot4_f32_bf8_fp8 : public ::mlir::Op::Impl, ::mlir::OpTrait::ZeroSuccessors, ::mlir::OpTrait::NOperands<3>::Impl, ::mlir::OpTrait::OpInvariants, ::mlir::ConditionallySpeculatable::Trait, ::mlir::OpTrait::AlwaysSpeculatableImplTrait, ::mlir::MemoryEffectOpInterface::Trait> { public: using Op::Op; using Op::print; using Adaptor = dot4_f32_bf8_fp8Adaptor; template using GenericAdaptor = dot4_f32_bf8_fp8GenericAdaptor; using FoldAdaptor = GenericAdaptor<::llvm::ArrayRef<::mlir::Attribute>>; static constexpr int odsIndex_a = 0; static constexpr int odsIndex_b = 1; static constexpr int odsIndex_c = 2; using Properties = FoldAdaptor::Properties; static ::llvm::ArrayRef<::llvm::StringRef> getAttributeNames() { return {}; } static constexpr ::llvm::StringLiteral getOperationName() { return ::llvm::StringLiteral("rocdl.dot4.f32.bf8.fp8"); } std::pair getODSOperandIndexAndLength(unsigned index) { return {index, 1}; } ::mlir::Operation::operand_range getODSOperands(unsigned index) { auto valueRange = getODSOperandIndexAndLength(index); return {std::next(getOperation()->operand_begin(), valueRange.first), std::next(getOperation()->operand_begin(), valueRange.first + valueRange.second)}; } ::mlir::TypedValue<::mlir::Type> getA() { return ::llvm::cast<::mlir::TypedValue<::mlir::Type>>(*getODSOperands(0).begin()); } ::mlir::TypedValue<::mlir::Type> getB() { return ::llvm::cast<::mlir::TypedValue<::mlir::Type>>(*getODSOperands(1).begin()); } ::mlir::TypedValue<::mlir::Type> getC() { return ::llvm::cast<::mlir::TypedValue<::mlir::Type>>(*getODSOperands(2).begin()); } ::mlir::OpOperand &getAMutable() { auto range = getODSOperandIndexAndLength(0); return getOperation()->getOpOperand(range.first); } ::mlir::OpOperand &getBMutable() { auto range = getODSOperandIndexAndLength(1); return getOperation()->getOpOperand(range.first); } ::mlir::OpOperand &getCMutable() { auto range = getODSOperandIndexAndLength(2); return getOperation()->getOpOperand(range.first); } std::pair getODSResultIndexAndLength(unsigned index) { return {index, 1}; } ::mlir::Operation::result_range getODSResults(unsigned index) { auto valueRange = getODSResultIndexAndLength(index); return {std::next(getOperation()->result_begin(), valueRange.first), std::next(getOperation()->result_begin(), valueRange.first + valueRange.second)}; } ::mlir::TypedValue<::mlir::Type> getRes() { return ::llvm::cast<::mlir::TypedValue<::mlir::Type>>(*getODSResults(0).begin()); } static ::llvm::LogicalResult setPropertiesFromAttr(Properties &prop, ::mlir::Attribute attr, ::llvm::function_ref<::mlir::InFlightDiagnostic()> emitError); static ::mlir::Attribute getPropertiesAsAttr(::mlir::MLIRContext *ctx, const Properties &prop); static llvm::hash_code computePropertiesHash(const Properties &prop); static std::optional getInherentAttr(::mlir::MLIRContext *ctx, const Properties &prop, llvm::StringRef name); static void setInherentAttr(Properties &prop, llvm::StringRef name, mlir::Attribute value); static void populateInherentAttrs(::mlir::MLIRContext *ctx, const Properties &prop, ::mlir::NamedAttrList &attrs); static ::llvm::LogicalResult verifyInherentAttrs(::mlir::OperationName opName, ::mlir::NamedAttrList &attrs, llvm::function_ref<::mlir::InFlightDiagnostic()> emitError); static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::Type res, ::mlir::Value a, ::mlir::Value b, ::mlir::Value c); static dot4_f32_bf8_fp8 create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::Type res, ::mlir::Value a, ::mlir::Value b, ::mlir::Value c); static dot4_f32_bf8_fp8 create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::Type res, ::mlir::Value a, ::mlir::Value b, ::mlir::Value c); static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::Value a, ::mlir::Value b, ::mlir::Value c); static dot4_f32_bf8_fp8 create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::Value a, ::mlir::Value b, ::mlir::Value c); static dot4_f32_bf8_fp8 create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::Value a, ::mlir::Value b, ::mlir::Value c); static void build(::mlir::OpBuilder &, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, ::llvm::ArrayRef<::mlir::NamedAttribute> attributes = {}); static dot4_f32_bf8_fp8 create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, ::llvm::ArrayRef<::mlir::NamedAttribute> attributes = {}); static dot4_f32_bf8_fp8 create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, ::llvm::ArrayRef<::mlir::NamedAttribute> attributes = {}); static void build(::mlir::OpBuilder &, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, const Properties &properties, ::llvm::ArrayRef<::mlir::NamedAttribute> discardableAttributes = {}); static dot4_f32_bf8_fp8 create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, const Properties &properties, ::llvm::ArrayRef<::mlir::NamedAttribute> discardableAttributes = {}); static dot4_f32_bf8_fp8 create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, const Properties &properties, ::llvm::ArrayRef<::mlir::NamedAttribute> discardableAttributes = {}); ::llvm::LogicalResult verifyInvariantsImpl(); ::llvm::LogicalResult verifyInvariants(); static ::mlir::ParseResult parse(::mlir::OpAsmParser &parser, ::mlir::OperationState &result); void print(::mlir::OpAsmPrinter &_odsPrinter); void getEffects(::llvm::SmallVectorImpl<::mlir::SideEffects::EffectInstance<::mlir::MemoryEffects::Effect>> &effects); public: }; } // namespace mlir::ROCDL MLIR_DECLARE_EXPLICIT_TYPE_ID(::mlir::ROCDL::dot4_f32_bf8_fp8) namespace mlir::ROCDL { //===----------------------------------------------------------------------===// // ::mlir::ROCDL::dot4_f32_fp8_bf8 declarations //===----------------------------------------------------------------------===// namespace detail { class dot4_f32_fp8_bf8GenericAdaptorBase { public: using Properties = ::mlir::EmptyProperties; protected: ::mlir::DictionaryAttr odsAttrs; ::std::optional<::mlir::OperationName> odsOpName; Properties properties; ::mlir::RegionRange odsRegions; public: dot4_f32_fp8_bf8GenericAdaptorBase(::mlir::DictionaryAttr attrs, const Properties &properties, ::mlir::RegionRange regions = {}) : odsAttrs(attrs), properties(properties), odsRegions(regions) { if (odsAttrs) odsOpName.emplace("rocdl.dot4.f32.fp8.bf8", odsAttrs.getContext()); } dot4_f32_fp8_bf8GenericAdaptorBase(dot4_f32_fp8_bf8 op); std::pair getODSOperandIndexAndLength(unsigned index, unsigned odsOperandsSize) { return {index, 1}; } const Properties &getProperties() { return properties; } ::mlir::DictionaryAttr getAttributes() { return odsAttrs; } }; } // namespace detail template class dot4_f32_fp8_bf8GenericAdaptor : public detail::dot4_f32_fp8_bf8GenericAdaptorBase { using ValueT = ::llvm::detail::ValueOfRange; using Base = detail::dot4_f32_fp8_bf8GenericAdaptorBase; static constexpr int odsIndex_a = 0; static constexpr int odsIndex_b = 1; static constexpr int odsIndex_c = 2; public: dot4_f32_fp8_bf8GenericAdaptor(RangeT values, ::mlir::DictionaryAttr attrs, const Properties &properties, ::mlir::RegionRange regions = {}) : Base(attrs, properties, regions), odsOperands(values) {} dot4_f32_fp8_bf8GenericAdaptor(RangeT values, ::mlir::DictionaryAttr attrs, ::mlir::PropertyRef properties, ::mlir::RegionRange regions = {}) : dot4_f32_fp8_bf8GenericAdaptor(values, attrs, (properties ? *properties.as() : Properties{}), regions) {} dot4_f32_fp8_bf8GenericAdaptor(RangeT values, ::mlir::DictionaryAttr attrs = nullptr) : dot4_f32_fp8_bf8GenericAdaptor(values, attrs, Properties{}, {}) {} dot4_f32_fp8_bf8GenericAdaptor(RangeT values, const dot4_f32_fp8_bf8GenericAdaptorBase &base) : Base(base), odsOperands(values) {} template >> dot4_f32_fp8_bf8GenericAdaptor(RangeT values, LateInst op) : Base(op), odsOperands(values) {} std::pair getODSOperandIndexAndLength(unsigned index) { return Base::getODSOperandIndexAndLength(index, odsOperands.size()); } RangeT getODSOperands(unsigned index) { auto valueRange = getODSOperandIndexAndLength(index); return {std::next(odsOperands.begin(), valueRange.first), std::next(odsOperands.begin(), valueRange.first + valueRange.second)}; } ValueT getA() { return (*getODSOperands(0).begin()); } ValueT getB() { return (*getODSOperands(1).begin()); } ValueT getC() { return (*getODSOperands(2).begin()); } RangeT getOperands() { return odsOperands; } private: RangeT odsOperands; }; class dot4_f32_fp8_bf8Adaptor : public dot4_f32_fp8_bf8GenericAdaptor<::mlir::ValueRange> { public: using dot4_f32_fp8_bf8GenericAdaptor::dot4_f32_fp8_bf8GenericAdaptor; dot4_f32_fp8_bf8Adaptor(dot4_f32_fp8_bf8 op); ::llvm::LogicalResult verify(::mlir::Location loc); }; class dot4_f32_fp8_bf8 : public ::mlir::Op::Impl, ::mlir::OpTrait::ZeroSuccessors, ::mlir::OpTrait::NOperands<3>::Impl, ::mlir::OpTrait::OpInvariants, ::mlir::ConditionallySpeculatable::Trait, ::mlir::OpTrait::AlwaysSpeculatableImplTrait, ::mlir::MemoryEffectOpInterface::Trait> { public: using Op::Op; using Op::print; using Adaptor = dot4_f32_fp8_bf8Adaptor; template using GenericAdaptor = dot4_f32_fp8_bf8GenericAdaptor; using FoldAdaptor = GenericAdaptor<::llvm::ArrayRef<::mlir::Attribute>>; static constexpr int odsIndex_a = 0; static constexpr int odsIndex_b = 1; static constexpr int odsIndex_c = 2; using Properties = FoldAdaptor::Properties; static ::llvm::ArrayRef<::llvm::StringRef> getAttributeNames() { return {}; } static constexpr ::llvm::StringLiteral getOperationName() { return ::llvm::StringLiteral("rocdl.dot4.f32.fp8.bf8"); } std::pair getODSOperandIndexAndLength(unsigned index) { return {index, 1}; } ::mlir::Operation::operand_range getODSOperands(unsigned index) { auto valueRange = getODSOperandIndexAndLength(index); return {std::next(getOperation()->operand_begin(), valueRange.first), std::next(getOperation()->operand_begin(), valueRange.first + valueRange.second)}; } ::mlir::TypedValue<::mlir::Type> getA() { return ::llvm::cast<::mlir::TypedValue<::mlir::Type>>(*getODSOperands(0).begin()); } ::mlir::TypedValue<::mlir::Type> getB() { return ::llvm::cast<::mlir::TypedValue<::mlir::Type>>(*getODSOperands(1).begin()); } ::mlir::TypedValue<::mlir::Type> getC() { return ::llvm::cast<::mlir::TypedValue<::mlir::Type>>(*getODSOperands(2).begin()); } ::mlir::OpOperand &getAMutable() { auto range = getODSOperandIndexAndLength(0); return getOperation()->getOpOperand(range.first); } ::mlir::OpOperand &getBMutable() { auto range = getODSOperandIndexAndLength(1); return getOperation()->getOpOperand(range.first); } ::mlir::OpOperand &getCMutable() { auto range = getODSOperandIndexAndLength(2); return getOperation()->getOpOperand(range.first); } std::pair getODSResultIndexAndLength(unsigned index) { return {index, 1}; } ::mlir::Operation::result_range getODSResults(unsigned index) { auto valueRange = getODSResultIndexAndLength(index); return {std::next(getOperation()->result_begin(), valueRange.first), std::next(getOperation()->result_begin(), valueRange.first + valueRange.second)}; } ::mlir::TypedValue<::mlir::Type> getRes() { return ::llvm::cast<::mlir::TypedValue<::mlir::Type>>(*getODSResults(0).begin()); } static ::llvm::LogicalResult setPropertiesFromAttr(Properties &prop, ::mlir::Attribute attr, ::llvm::function_ref<::mlir::InFlightDiagnostic()> emitError); static ::mlir::Attribute getPropertiesAsAttr(::mlir::MLIRContext *ctx, const Properties &prop); static llvm::hash_code computePropertiesHash(const Properties &prop); static std::optional getInherentAttr(::mlir::MLIRContext *ctx, const Properties &prop, llvm::StringRef name); static void setInherentAttr(Properties &prop, llvm::StringRef name, mlir::Attribute value); static void populateInherentAttrs(::mlir::MLIRContext *ctx, const Properties &prop, ::mlir::NamedAttrList &attrs); static ::llvm::LogicalResult verifyInherentAttrs(::mlir::OperationName opName, ::mlir::NamedAttrList &attrs, llvm::function_ref<::mlir::InFlightDiagnostic()> emitError); static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::Type res, ::mlir::Value a, ::mlir::Value b, ::mlir::Value c); static dot4_f32_fp8_bf8 create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::Type res, ::mlir::Value a, ::mlir::Value b, ::mlir::Value c); static dot4_f32_fp8_bf8 create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::Type res, ::mlir::Value a, ::mlir::Value b, ::mlir::Value c); static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::Value a, ::mlir::Value b, ::mlir::Value c); static dot4_f32_fp8_bf8 create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::Value a, ::mlir::Value b, ::mlir::Value c); static dot4_f32_fp8_bf8 create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::Value a, ::mlir::Value b, ::mlir::Value c); static void build(::mlir::OpBuilder &, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, ::llvm::ArrayRef<::mlir::NamedAttribute> attributes = {}); static dot4_f32_fp8_bf8 create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, ::llvm::ArrayRef<::mlir::NamedAttribute> attributes = {}); static dot4_f32_fp8_bf8 create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, ::llvm::ArrayRef<::mlir::NamedAttribute> attributes = {}); static void build(::mlir::OpBuilder &, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, const Properties &properties, ::llvm::ArrayRef<::mlir::NamedAttribute> discardableAttributes = {}); static dot4_f32_fp8_bf8 create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, const Properties &properties, ::llvm::ArrayRef<::mlir::NamedAttribute> discardableAttributes = {}); static dot4_f32_fp8_bf8 create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, const Properties &properties, ::llvm::ArrayRef<::mlir::NamedAttribute> discardableAttributes = {}); ::llvm::LogicalResult verifyInvariantsImpl(); ::llvm::LogicalResult verifyInvariants(); static ::mlir::ParseResult parse(::mlir::OpAsmParser &parser, ::mlir::OperationState &result); void print(::mlir::OpAsmPrinter &_odsPrinter); void getEffects(::llvm::SmallVectorImpl<::mlir::SideEffects::EffectInstance<::mlir::MemoryEffects::Effect>> &effects); public: }; } // namespace mlir::ROCDL MLIR_DECLARE_EXPLICIT_TYPE_ID(::mlir::ROCDL::dot4_f32_fp8_bf8) namespace mlir::ROCDL { //===----------------------------------------------------------------------===// // ::mlir::ROCDL::dot4_f32_fp8_fp8 declarations //===----------------------------------------------------------------------===// namespace detail { class dot4_f32_fp8_fp8GenericAdaptorBase { public: using Properties = ::mlir::EmptyProperties; protected: ::mlir::DictionaryAttr odsAttrs; ::std::optional<::mlir::OperationName> odsOpName; Properties properties; ::mlir::RegionRange odsRegions; public: dot4_f32_fp8_fp8GenericAdaptorBase(::mlir::DictionaryAttr attrs, const Properties &properties, ::mlir::RegionRange regions = {}) : odsAttrs(attrs), properties(properties), odsRegions(regions) { if (odsAttrs) odsOpName.emplace("rocdl.dot4.f32.fp8.fp8", odsAttrs.getContext()); } dot4_f32_fp8_fp8GenericAdaptorBase(dot4_f32_fp8_fp8 op); std::pair getODSOperandIndexAndLength(unsigned index, unsigned odsOperandsSize) { return {index, 1}; } const Properties &getProperties() { return properties; } ::mlir::DictionaryAttr getAttributes() { return odsAttrs; } }; } // namespace detail template class dot4_f32_fp8_fp8GenericAdaptor : public detail::dot4_f32_fp8_fp8GenericAdaptorBase { using ValueT = ::llvm::detail::ValueOfRange; using Base = detail::dot4_f32_fp8_fp8GenericAdaptorBase; static constexpr int odsIndex_a = 0; static constexpr int odsIndex_b = 1; static constexpr int odsIndex_c = 2; public: dot4_f32_fp8_fp8GenericAdaptor(RangeT values, ::mlir::DictionaryAttr attrs, const Properties &properties, ::mlir::RegionRange regions = {}) : Base(attrs, properties, regions), odsOperands(values) {} dot4_f32_fp8_fp8GenericAdaptor(RangeT values, ::mlir::DictionaryAttr attrs, ::mlir::PropertyRef properties, ::mlir::RegionRange regions = {}) : dot4_f32_fp8_fp8GenericAdaptor(values, attrs, (properties ? *properties.as() : Properties{}), regions) {} dot4_f32_fp8_fp8GenericAdaptor(RangeT values, ::mlir::DictionaryAttr attrs = nullptr) : dot4_f32_fp8_fp8GenericAdaptor(values, attrs, Properties{}, {}) {} dot4_f32_fp8_fp8GenericAdaptor(RangeT values, const dot4_f32_fp8_fp8GenericAdaptorBase &base) : Base(base), odsOperands(values) {} template >> dot4_f32_fp8_fp8GenericAdaptor(RangeT values, LateInst op) : Base(op), odsOperands(values) {} std::pair getODSOperandIndexAndLength(unsigned index) { return Base::getODSOperandIndexAndLength(index, odsOperands.size()); } RangeT getODSOperands(unsigned index) { auto valueRange = getODSOperandIndexAndLength(index); return {std::next(odsOperands.begin(), valueRange.first), std::next(odsOperands.begin(), valueRange.first + valueRange.second)}; } ValueT getA() { return (*getODSOperands(0).begin()); } ValueT getB() { return (*getODSOperands(1).begin()); } ValueT getC() { return (*getODSOperands(2).begin()); } RangeT getOperands() { return odsOperands; } private: RangeT odsOperands; }; class dot4_f32_fp8_fp8Adaptor : public dot4_f32_fp8_fp8GenericAdaptor<::mlir::ValueRange> { public: using dot4_f32_fp8_fp8GenericAdaptor::dot4_f32_fp8_fp8GenericAdaptor; dot4_f32_fp8_fp8Adaptor(dot4_f32_fp8_fp8 op); ::llvm::LogicalResult verify(::mlir::Location loc); }; class dot4_f32_fp8_fp8 : public ::mlir::Op::Impl, ::mlir::OpTrait::ZeroSuccessors, ::mlir::OpTrait::NOperands<3>::Impl, ::mlir::OpTrait::OpInvariants, ::mlir::ConditionallySpeculatable::Trait, ::mlir::OpTrait::AlwaysSpeculatableImplTrait, ::mlir::MemoryEffectOpInterface::Trait> { public: using Op::Op; using Op::print; using Adaptor = dot4_f32_fp8_fp8Adaptor; template using GenericAdaptor = dot4_f32_fp8_fp8GenericAdaptor; using FoldAdaptor = GenericAdaptor<::llvm::ArrayRef<::mlir::Attribute>>; static constexpr int odsIndex_a = 0; static constexpr int odsIndex_b = 1; static constexpr int odsIndex_c = 2; using Properties = FoldAdaptor::Properties; static ::llvm::ArrayRef<::llvm::StringRef> getAttributeNames() { return {}; } static constexpr ::llvm::StringLiteral getOperationName() { return ::llvm::StringLiteral("rocdl.dot4.f32.fp8.fp8"); } std::pair getODSOperandIndexAndLength(unsigned index) { return {index, 1}; } ::mlir::Operation::operand_range getODSOperands(unsigned index) { auto valueRange = getODSOperandIndexAndLength(index); return {std::next(getOperation()->operand_begin(), valueRange.first), std::next(getOperation()->operand_begin(), valueRange.first + valueRange.second)}; } ::mlir::TypedValue<::mlir::Type> getA() { return ::llvm::cast<::mlir::TypedValue<::mlir::Type>>(*getODSOperands(0).begin()); } ::mlir::TypedValue<::mlir::Type> getB() { return ::llvm::cast<::mlir::TypedValue<::mlir::Type>>(*getODSOperands(1).begin()); } ::mlir::TypedValue<::mlir::Type> getC() { return ::llvm::cast<::mlir::TypedValue<::mlir::Type>>(*getODSOperands(2).begin()); } ::mlir::OpOperand &getAMutable() { auto range = getODSOperandIndexAndLength(0); return getOperation()->getOpOperand(range.first); } ::mlir::OpOperand &getBMutable() { auto range = getODSOperandIndexAndLength(1); return getOperation()->getOpOperand(range.first); } ::mlir::OpOperand &getCMutable() { auto range = getODSOperandIndexAndLength(2); return getOperation()->getOpOperand(range.first); } std::pair getODSResultIndexAndLength(unsigned index) { return {index, 1}; } ::mlir::Operation::result_range getODSResults(unsigned index) { auto valueRange = getODSResultIndexAndLength(index); return {std::next(getOperation()->result_begin(), valueRange.first), std::next(getOperation()->result_begin(), valueRange.first + valueRange.second)}; } ::mlir::TypedValue<::mlir::Type> getRes() { return ::llvm::cast<::mlir::TypedValue<::mlir::Type>>(*getODSResults(0).begin()); } static ::llvm::LogicalResult setPropertiesFromAttr(Properties &prop, ::mlir::Attribute attr, ::llvm::function_ref<::mlir::InFlightDiagnostic()> emitError); static ::mlir::Attribute getPropertiesAsAttr(::mlir::MLIRContext *ctx, const Properties &prop); static llvm::hash_code computePropertiesHash(const Properties &prop); static std::optional getInherentAttr(::mlir::MLIRContext *ctx, const Properties &prop, llvm::StringRef name); static void setInherentAttr(Properties &prop, llvm::StringRef name, mlir::Attribute value); static void populateInherentAttrs(::mlir::MLIRContext *ctx, const Properties &prop, ::mlir::NamedAttrList &attrs); static ::llvm::LogicalResult verifyInherentAttrs(::mlir::OperationName opName, ::mlir::NamedAttrList &attrs, llvm::function_ref<::mlir::InFlightDiagnostic()> emitError); static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::Type res, ::mlir::Value a, ::mlir::Value b, ::mlir::Value c); static dot4_f32_fp8_fp8 create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::Type res, ::mlir::Value a, ::mlir::Value b, ::mlir::Value c); static dot4_f32_fp8_fp8 create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::Type res, ::mlir::Value a, ::mlir::Value b, ::mlir::Value c); static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::Value a, ::mlir::Value b, ::mlir::Value c); static dot4_f32_fp8_fp8 create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::Value a, ::mlir::Value b, ::mlir::Value c); static dot4_f32_fp8_fp8 create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::Value a, ::mlir::Value b, ::mlir::Value c); static void build(::mlir::OpBuilder &, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, ::llvm::ArrayRef<::mlir::NamedAttribute> attributes = {}); static dot4_f32_fp8_fp8 create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, ::llvm::ArrayRef<::mlir::NamedAttribute> attributes = {}); static dot4_f32_fp8_fp8 create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, ::llvm::ArrayRef<::mlir::NamedAttribute> attributes = {}); static void build(::mlir::OpBuilder &, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, const Properties &properties, ::llvm::ArrayRef<::mlir::NamedAttribute> discardableAttributes = {}); static dot4_f32_fp8_fp8 create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, const Properties &properties, ::llvm::ArrayRef<::mlir::NamedAttribute> discardableAttributes = {}); static dot4_f32_fp8_fp8 create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, const Properties &properties, ::llvm::ArrayRef<::mlir::NamedAttribute> discardableAttributes = {}); ::llvm::LogicalResult verifyInvariantsImpl(); ::llvm::LogicalResult verifyInvariants(); static ::mlir::ParseResult parse(::mlir::OpAsmParser &parser, ::mlir::OperationState &result); void print(::mlir::OpAsmPrinter &_odsPrinter); void getEffects(::llvm::SmallVectorImpl<::mlir::SideEffects::EffectInstance<::mlir::MemoryEffects::Effect>> &effects); public: }; } // namespace mlir::ROCDL MLIR_DECLARE_EXPLICIT_TYPE_ID(::mlir::ROCDL::dot4_f32_fp8_fp8) namespace mlir::ROCDL { //===----------------------------------------------------------------------===// // ::mlir::ROCDL::ds_read_tr16_b64 declarations //===----------------------------------------------------------------------===// namespace detail { class ds_read_tr16_b64GenericAdaptorBase { public: struct Properties { using alias_scopesTy = ::mlir::ArrayAttr; alias_scopesTy alias_scopes; auto getAliasScopes() const { auto &propStorage = this->alias_scopes; return ::llvm::dyn_cast_or_null<::mlir::ArrayAttr>(propStorage); } void setAliasScopes(const ::mlir::ArrayAttr &propValue) { this->alias_scopes = propValue; } using noalias_scopesTy = ::mlir::ArrayAttr; noalias_scopesTy noalias_scopes; auto getNoaliasScopes() const { auto &propStorage = this->noalias_scopes; return ::llvm::dyn_cast_or_null<::mlir::ArrayAttr>(propStorage); } void setNoaliasScopes(const ::mlir::ArrayAttr &propValue) { this->noalias_scopes = propValue; } using tbaaTy = ::mlir::ArrayAttr; tbaaTy tbaa; auto getTbaa() const { auto &propStorage = this->tbaa; return ::llvm::dyn_cast_or_null<::mlir::ArrayAttr>(propStorage); } void setTbaa(const ::mlir::ArrayAttr &propValue) { this->tbaa = propValue; } bool operator==(const Properties &rhs) const { return rhs.alias_scopes == this->alias_scopes && rhs.noalias_scopes == this->noalias_scopes && rhs.tbaa == this->tbaa && true; } bool operator!=(const Properties &rhs) const { return !(*this == rhs); } }; protected: ::mlir::DictionaryAttr odsAttrs; ::std::optional<::mlir::OperationName> odsOpName; Properties properties; ::mlir::RegionRange odsRegions; public: ds_read_tr16_b64GenericAdaptorBase(::mlir::DictionaryAttr attrs, const Properties &properties, ::mlir::RegionRange regions = {}) : odsAttrs(attrs), properties(properties), odsRegions(regions) { if (odsAttrs) odsOpName.emplace("rocdl.ds.read.tr16.b64", odsAttrs.getContext()); } ds_read_tr16_b64GenericAdaptorBase(ds_read_tr16_b64 op); std::pair getODSOperandIndexAndLength(unsigned index, unsigned odsOperandsSize) { return {index, 1}; } const Properties &getProperties() { return properties; } ::mlir::DictionaryAttr getAttributes() { return odsAttrs; } ::mlir::ArrayAttr getAliasScopesAttr() { auto attr = ::llvm::dyn_cast_or_null<::mlir::ArrayAttr>(getProperties().alias_scopes); return attr; } ::std::optional< ::mlir::ArrayAttr > getAliasScopes(); ::mlir::ArrayAttr getNoaliasScopesAttr() { auto attr = ::llvm::dyn_cast_or_null<::mlir::ArrayAttr>(getProperties().noalias_scopes); return attr; } ::std::optional< ::mlir::ArrayAttr > getNoaliasScopes(); ::mlir::ArrayAttr getTbaaAttr() { auto attr = ::llvm::dyn_cast_or_null<::mlir::ArrayAttr>(getProperties().tbaa); return attr; } ::std::optional< ::mlir::ArrayAttr > getTbaa(); }; } // namespace detail template class ds_read_tr16_b64GenericAdaptor : public detail::ds_read_tr16_b64GenericAdaptorBase { using ValueT = ::llvm::detail::ValueOfRange; using Base = detail::ds_read_tr16_b64GenericAdaptorBase; static constexpr int odsIndex_ptr = 0; public: ds_read_tr16_b64GenericAdaptor(RangeT values, ::mlir::DictionaryAttr attrs, const Properties &properties, ::mlir::RegionRange regions = {}) : Base(attrs, properties, regions), odsOperands(values) {} ds_read_tr16_b64GenericAdaptor(RangeT values, ::mlir::DictionaryAttr attrs, ::mlir::PropertyRef properties, ::mlir::RegionRange regions = {}) : ds_read_tr16_b64GenericAdaptor(values, attrs, (properties ? *properties.as() : Properties{}), regions) {} ds_read_tr16_b64GenericAdaptor(RangeT values, ::mlir::DictionaryAttr attrs = nullptr) : ds_read_tr16_b64GenericAdaptor(values, attrs, Properties{}, {}) {} ds_read_tr16_b64GenericAdaptor(RangeT values, const ds_read_tr16_b64GenericAdaptorBase &base) : Base(base), odsOperands(values) {} template >> ds_read_tr16_b64GenericAdaptor(RangeT values, LateInst op) : Base(op), odsOperands(values) {} std::pair getODSOperandIndexAndLength(unsigned index) { return Base::getODSOperandIndexAndLength(index, odsOperands.size()); } RangeT getODSOperands(unsigned index) { auto valueRange = getODSOperandIndexAndLength(index); return {std::next(odsOperands.begin(), valueRange.first), std::next(odsOperands.begin(), valueRange.first + valueRange.second)}; } ValueT getPtr() { return (*getODSOperands(0).begin()); } RangeT getOperands() { return odsOperands; } private: RangeT odsOperands; }; class ds_read_tr16_b64Adaptor : public ds_read_tr16_b64GenericAdaptor<::mlir::ValueRange> { public: using ds_read_tr16_b64GenericAdaptor::ds_read_tr16_b64GenericAdaptor; ds_read_tr16_b64Adaptor(ds_read_tr16_b64 op); ::llvm::LogicalResult verify(::mlir::Location loc); }; class ds_read_tr16_b64 : public ::mlir::Op::Impl, ::mlir::OpTrait::ZeroSuccessors, ::mlir::OpTrait::OneOperand, ::mlir::OpTrait::OpInvariants, ::mlir::BytecodeOpInterface::Trait, ::mlir::LLVM::AliasAnalysisOpInterface::Trait, ::mlir::MemoryEffectOpInterface::Trait> { public: using Op::Op; using Op::print; using Adaptor = ds_read_tr16_b64Adaptor; template using GenericAdaptor = ds_read_tr16_b64GenericAdaptor; using FoldAdaptor = GenericAdaptor<::llvm::ArrayRef<::mlir::Attribute>>; static constexpr int odsIndex_ptr = 0; using Properties = FoldAdaptor::Properties; using ::mlir::LLVM::AliasAnalysisOpInterface::Trait::getAliasScopesOrNull; using ::mlir::LLVM::AliasAnalysisOpInterface::Trait::setAliasScopes; using ::mlir::LLVM::AliasAnalysisOpInterface::Trait::getNoAliasScopesOrNull; using ::mlir::LLVM::AliasAnalysisOpInterface::Trait::setNoAliasScopes; using ::mlir::LLVM::AliasAnalysisOpInterface::Trait::getTBAATagsOrNull; using ::mlir::LLVM::AliasAnalysisOpInterface::Trait::setTBAATags; static ::llvm::ArrayRef<::llvm::StringRef> getAttributeNames() { static ::llvm::StringRef attrNames[] = {::llvm::StringRef("alias_scopes"), ::llvm::StringRef("noalias_scopes"), ::llvm::StringRef("tbaa")}; return ::llvm::ArrayRef(attrNames); } ::mlir::StringAttr getAliasScopesAttrName() { return getAttributeNameForIndex(0); } static ::mlir::StringAttr getAliasScopesAttrName(::mlir::OperationName name) { return getAttributeNameForIndex(name, 0); } ::mlir::StringAttr getNoaliasScopesAttrName() { return getAttributeNameForIndex(1); } static ::mlir::StringAttr getNoaliasScopesAttrName(::mlir::OperationName name) { return getAttributeNameForIndex(name, 1); } ::mlir::StringAttr getTbaaAttrName() { return getAttributeNameForIndex(2); } static ::mlir::StringAttr getTbaaAttrName(::mlir::OperationName name) { return getAttributeNameForIndex(name, 2); } static constexpr ::llvm::StringLiteral getOperationName() { return ::llvm::StringLiteral("rocdl.ds.read.tr16.b64"); } std::pair getODSOperandIndexAndLength(unsigned index) { return {index, 1}; } ::mlir::Operation::operand_range getODSOperands(unsigned index) { auto valueRange = getODSOperandIndexAndLength(index); return {std::next(getOperation()->operand_begin(), valueRange.first), std::next(getOperation()->operand_begin(), valueRange.first + valueRange.second)}; } ::mlir::TypedValue<::mlir::LLVM::LLVMPointerType> getPtr() { return ::llvm::cast<::mlir::TypedValue<::mlir::LLVM::LLVMPointerType>>(*getODSOperands(0).begin()); } ::mlir::OpOperand &getPtrMutable() { auto range = getODSOperandIndexAndLength(0); return getOperation()->getOpOperand(range.first); } std::pair getODSResultIndexAndLength(unsigned index) { return {index, 1}; } ::mlir::Operation::result_range getODSResults(unsigned index) { auto valueRange = getODSResultIndexAndLength(index); return {std::next(getOperation()->result_begin(), valueRange.first), std::next(getOperation()->result_begin(), valueRange.first + valueRange.second)}; } ::mlir::TypedValue<::mlir::Type> getRes() { return ::llvm::cast<::mlir::TypedValue<::mlir::Type>>(*getODSResults(0).begin()); } static ::llvm::LogicalResult setPropertiesFromAttr(Properties &prop, ::mlir::Attribute attr, ::llvm::function_ref<::mlir::InFlightDiagnostic()> emitError); static ::mlir::Attribute getPropertiesAsAttr(::mlir::MLIRContext *ctx, const Properties &prop); static llvm::hash_code computePropertiesHash(const Properties &prop); static std::optional getInherentAttr(::mlir::MLIRContext *ctx, const Properties &prop, llvm::StringRef name); static void setInherentAttr(Properties &prop, llvm::StringRef name, mlir::Attribute value); static void populateInherentAttrs(::mlir::MLIRContext *ctx, const Properties &prop, ::mlir::NamedAttrList &attrs); static ::llvm::LogicalResult verifyInherentAttrs(::mlir::OperationName opName, ::mlir::NamedAttrList &attrs, llvm::function_ref<::mlir::InFlightDiagnostic()> emitError); static ::llvm::LogicalResult readProperties(::mlir::DialectBytecodeReader &reader, ::mlir::OperationState &state); void writeProperties(::mlir::DialectBytecodeWriter &writer); ::mlir::ArrayAttr getAliasScopesAttr() { return ::llvm::dyn_cast_or_null<::mlir::ArrayAttr>(getProperties().alias_scopes); } ::std::optional< ::mlir::ArrayAttr > getAliasScopes(); ::mlir::ArrayAttr getNoaliasScopesAttr() { return ::llvm::dyn_cast_or_null<::mlir::ArrayAttr>(getProperties().noalias_scopes); } ::std::optional< ::mlir::ArrayAttr > getNoaliasScopes(); ::mlir::ArrayAttr getTbaaAttr() { return ::llvm::dyn_cast_or_null<::mlir::ArrayAttr>(getProperties().tbaa); } ::std::optional< ::mlir::ArrayAttr > getTbaa(); void setAliasScopesAttr(::mlir::ArrayAttr attr) { getProperties().alias_scopes = attr; } void setNoaliasScopesAttr(::mlir::ArrayAttr attr) { getProperties().noalias_scopes = attr; } void setTbaaAttr(::mlir::ArrayAttr attr) { getProperties().tbaa = attr; } ::mlir::Attribute removeAliasScopesAttr() { auto attr = getProperties().alias_scopes; getProperties().alias_scopes = {}; return attr; } ::mlir::Attribute removeNoaliasScopesAttr() { auto attr = getProperties().noalias_scopes; getProperties().noalias_scopes = {}; return attr; } ::mlir::Attribute removeTbaaAttr() { auto attr = getProperties().tbaa; getProperties().tbaa = {}; return attr; } static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::Type res, ::mlir::Value ptr, /*optional*/::mlir::ArrayAttr alias_scopes, /*optional*/::mlir::ArrayAttr noalias_scopes, /*optional*/::mlir::ArrayAttr tbaa); static ds_read_tr16_b64 create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::Type res, ::mlir::Value ptr, /*optional*/::mlir::ArrayAttr alias_scopes, /*optional*/::mlir::ArrayAttr noalias_scopes, /*optional*/::mlir::ArrayAttr tbaa); static ds_read_tr16_b64 create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::Type res, ::mlir::Value ptr, /*optional*/::mlir::ArrayAttr alias_scopes, /*optional*/::mlir::ArrayAttr noalias_scopes, /*optional*/::mlir::ArrayAttr tbaa); static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::Value ptr, /*optional*/::mlir::ArrayAttr alias_scopes, /*optional*/::mlir::ArrayAttr noalias_scopes, /*optional*/::mlir::ArrayAttr tbaa); static ds_read_tr16_b64 create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::Value ptr, /*optional*/::mlir::ArrayAttr alias_scopes, /*optional*/::mlir::ArrayAttr noalias_scopes, /*optional*/::mlir::ArrayAttr tbaa); static ds_read_tr16_b64 create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::Value ptr, /*optional*/::mlir::ArrayAttr alias_scopes, /*optional*/::mlir::ArrayAttr noalias_scopes, /*optional*/::mlir::ArrayAttr tbaa); static void build(::mlir::OpBuilder &, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, ::llvm::ArrayRef<::mlir::NamedAttribute> attributes = {}); static ds_read_tr16_b64 create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, ::llvm::ArrayRef<::mlir::NamedAttribute> attributes = {}); static ds_read_tr16_b64 create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, ::llvm::ArrayRef<::mlir::NamedAttribute> attributes = {}); static void build(::mlir::OpBuilder &, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, const Properties &properties, ::llvm::ArrayRef<::mlir::NamedAttribute> discardableAttributes = {}); static ds_read_tr16_b64 create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, const Properties &properties, ::llvm::ArrayRef<::mlir::NamedAttribute> discardableAttributes = {}); static ds_read_tr16_b64 create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, const Properties &properties, ::llvm::ArrayRef<::mlir::NamedAttribute> discardableAttributes = {}); ::llvm::LogicalResult verifyInvariantsImpl(); ::llvm::LogicalResult verifyInvariants(); ::llvm::SmallVector<::mlir::Value> getAccessedOperands(); static ::mlir::ParseResult parse(::mlir::OpAsmParser &parser, ::mlir::OperationState &result); void print(::mlir::OpAsmPrinter &_odsPrinter); void getEffects(::llvm::SmallVectorImpl<::mlir::SideEffects::EffectInstance<::mlir::MemoryEffects::Effect>> &effects); private: ::mlir::StringAttr getAttributeNameForIndex(unsigned index) { return getAttributeNameForIndex((*this)->getName(), index); } static ::mlir::StringAttr getAttributeNameForIndex(::mlir::OperationName name, unsigned index) { assert(index < 3 && "invalid attribute index"); assert(name.getStringRef() == getOperationName() && "invalid operation name"); assert(name.isRegistered() && "Operation isn't registered, missing a " "dependent dialect loading?"); return name.getAttributeNames()[index]; } public: }; } // namespace mlir::ROCDL MLIR_DECLARE_EXPLICIT_TYPE_ID(::mlir::ROCDL::ds_read_tr16_b64) MLIR_DECLARE_EXPLICIT_TYPE_ID(::mlir::ROCDL::detail::ds_read_tr16_b64GenericAdaptorBase::Properties) namespace mlir::ROCDL { //===----------------------------------------------------------------------===// // ::mlir::ROCDL::ds_read_tr4_b64 declarations //===----------------------------------------------------------------------===// namespace detail { class ds_read_tr4_b64GenericAdaptorBase { public: struct Properties { using alias_scopesTy = ::mlir::ArrayAttr; alias_scopesTy alias_scopes; auto getAliasScopes() const { auto &propStorage = this->alias_scopes; return ::llvm::dyn_cast_or_null<::mlir::ArrayAttr>(propStorage); } void setAliasScopes(const ::mlir::ArrayAttr &propValue) { this->alias_scopes = propValue; } using noalias_scopesTy = ::mlir::ArrayAttr; noalias_scopesTy noalias_scopes; auto getNoaliasScopes() const { auto &propStorage = this->noalias_scopes; return ::llvm::dyn_cast_or_null<::mlir::ArrayAttr>(propStorage); } void setNoaliasScopes(const ::mlir::ArrayAttr &propValue) { this->noalias_scopes = propValue; } using tbaaTy = ::mlir::ArrayAttr; tbaaTy tbaa; auto getTbaa() const { auto &propStorage = this->tbaa; return ::llvm::dyn_cast_or_null<::mlir::ArrayAttr>(propStorage); } void setTbaa(const ::mlir::ArrayAttr &propValue) { this->tbaa = propValue; } bool operator==(const Properties &rhs) const { return rhs.alias_scopes == this->alias_scopes && rhs.noalias_scopes == this->noalias_scopes && rhs.tbaa == this->tbaa && true; } bool operator!=(const Properties &rhs) const { return !(*this == rhs); } }; protected: ::mlir::DictionaryAttr odsAttrs; ::std::optional<::mlir::OperationName> odsOpName; Properties properties; ::mlir::RegionRange odsRegions; public: ds_read_tr4_b64GenericAdaptorBase(::mlir::DictionaryAttr attrs, const Properties &properties, ::mlir::RegionRange regions = {}) : odsAttrs(attrs), properties(properties), odsRegions(regions) { if (odsAttrs) odsOpName.emplace("rocdl.ds.read.tr4.b64", odsAttrs.getContext()); } ds_read_tr4_b64GenericAdaptorBase(ds_read_tr4_b64 op); std::pair getODSOperandIndexAndLength(unsigned index, unsigned odsOperandsSize) { return {index, 1}; } const Properties &getProperties() { return properties; } ::mlir::DictionaryAttr getAttributes() { return odsAttrs; } ::mlir::ArrayAttr getAliasScopesAttr() { auto attr = ::llvm::dyn_cast_or_null<::mlir::ArrayAttr>(getProperties().alias_scopes); return attr; } ::std::optional< ::mlir::ArrayAttr > getAliasScopes(); ::mlir::ArrayAttr getNoaliasScopesAttr() { auto attr = ::llvm::dyn_cast_or_null<::mlir::ArrayAttr>(getProperties().noalias_scopes); return attr; } ::std::optional< ::mlir::ArrayAttr > getNoaliasScopes(); ::mlir::ArrayAttr getTbaaAttr() { auto attr = ::llvm::dyn_cast_or_null<::mlir::ArrayAttr>(getProperties().tbaa); return attr; } ::std::optional< ::mlir::ArrayAttr > getTbaa(); }; } // namespace detail template class ds_read_tr4_b64GenericAdaptor : public detail::ds_read_tr4_b64GenericAdaptorBase { using ValueT = ::llvm::detail::ValueOfRange; using Base = detail::ds_read_tr4_b64GenericAdaptorBase; static constexpr int odsIndex_ptr = 0; public: ds_read_tr4_b64GenericAdaptor(RangeT values, ::mlir::DictionaryAttr attrs, const Properties &properties, ::mlir::RegionRange regions = {}) : Base(attrs, properties, regions), odsOperands(values) {} ds_read_tr4_b64GenericAdaptor(RangeT values, ::mlir::DictionaryAttr attrs, ::mlir::PropertyRef properties, ::mlir::RegionRange regions = {}) : ds_read_tr4_b64GenericAdaptor(values, attrs, (properties ? *properties.as() : Properties{}), regions) {} ds_read_tr4_b64GenericAdaptor(RangeT values, ::mlir::DictionaryAttr attrs = nullptr) : ds_read_tr4_b64GenericAdaptor(values, attrs, Properties{}, {}) {} ds_read_tr4_b64GenericAdaptor(RangeT values, const ds_read_tr4_b64GenericAdaptorBase &base) : Base(base), odsOperands(values) {} template >> ds_read_tr4_b64GenericAdaptor(RangeT values, LateInst op) : Base(op), odsOperands(values) {} std::pair getODSOperandIndexAndLength(unsigned index) { return Base::getODSOperandIndexAndLength(index, odsOperands.size()); } RangeT getODSOperands(unsigned index) { auto valueRange = getODSOperandIndexAndLength(index); return {std::next(odsOperands.begin(), valueRange.first), std::next(odsOperands.begin(), valueRange.first + valueRange.second)}; } ValueT getPtr() { return (*getODSOperands(0).begin()); } RangeT getOperands() { return odsOperands; } private: RangeT odsOperands; }; class ds_read_tr4_b64Adaptor : public ds_read_tr4_b64GenericAdaptor<::mlir::ValueRange> { public: using ds_read_tr4_b64GenericAdaptor::ds_read_tr4_b64GenericAdaptor; ds_read_tr4_b64Adaptor(ds_read_tr4_b64 op); ::llvm::LogicalResult verify(::mlir::Location loc); }; class ds_read_tr4_b64 : public ::mlir::Op::Impl, ::mlir::OpTrait::ZeroSuccessors, ::mlir::OpTrait::OneOperand, ::mlir::OpTrait::OpInvariants, ::mlir::BytecodeOpInterface::Trait, ::mlir::LLVM::AliasAnalysisOpInterface::Trait, ::mlir::MemoryEffectOpInterface::Trait> { public: using Op::Op; using Op::print; using Adaptor = ds_read_tr4_b64Adaptor; template using GenericAdaptor = ds_read_tr4_b64GenericAdaptor; using FoldAdaptor = GenericAdaptor<::llvm::ArrayRef<::mlir::Attribute>>; static constexpr int odsIndex_ptr = 0; using Properties = FoldAdaptor::Properties; using ::mlir::LLVM::AliasAnalysisOpInterface::Trait::getAliasScopesOrNull; using ::mlir::LLVM::AliasAnalysisOpInterface::Trait::setAliasScopes; using ::mlir::LLVM::AliasAnalysisOpInterface::Trait::getNoAliasScopesOrNull; using ::mlir::LLVM::AliasAnalysisOpInterface::Trait::setNoAliasScopes; using ::mlir::LLVM::AliasAnalysisOpInterface::Trait::getTBAATagsOrNull; using ::mlir::LLVM::AliasAnalysisOpInterface::Trait::setTBAATags; static ::llvm::ArrayRef<::llvm::StringRef> getAttributeNames() { static ::llvm::StringRef attrNames[] = {::llvm::StringRef("alias_scopes"), ::llvm::StringRef("noalias_scopes"), ::llvm::StringRef("tbaa")}; return ::llvm::ArrayRef(attrNames); } ::mlir::StringAttr getAliasScopesAttrName() { return getAttributeNameForIndex(0); } static ::mlir::StringAttr getAliasScopesAttrName(::mlir::OperationName name) { return getAttributeNameForIndex(name, 0); } ::mlir::StringAttr getNoaliasScopesAttrName() { return getAttributeNameForIndex(1); } static ::mlir::StringAttr getNoaliasScopesAttrName(::mlir::OperationName name) { return getAttributeNameForIndex(name, 1); } ::mlir::StringAttr getTbaaAttrName() { return getAttributeNameForIndex(2); } static ::mlir::StringAttr getTbaaAttrName(::mlir::OperationName name) { return getAttributeNameForIndex(name, 2); } static constexpr ::llvm::StringLiteral getOperationName() { return ::llvm::StringLiteral("rocdl.ds.read.tr4.b64"); } std::pair getODSOperandIndexAndLength(unsigned index) { return {index, 1}; } ::mlir::Operation::operand_range getODSOperands(unsigned index) { auto valueRange = getODSOperandIndexAndLength(index); return {std::next(getOperation()->operand_begin(), valueRange.first), std::next(getOperation()->operand_begin(), valueRange.first + valueRange.second)}; } ::mlir::TypedValue<::mlir::LLVM::LLVMPointerType> getPtr() { return ::llvm::cast<::mlir::TypedValue<::mlir::LLVM::LLVMPointerType>>(*getODSOperands(0).begin()); } ::mlir::OpOperand &getPtrMutable() { auto range = getODSOperandIndexAndLength(0); return getOperation()->getOpOperand(range.first); } std::pair getODSResultIndexAndLength(unsigned index) { return {index, 1}; } ::mlir::Operation::result_range getODSResults(unsigned index) { auto valueRange = getODSResultIndexAndLength(index); return {std::next(getOperation()->result_begin(), valueRange.first), std::next(getOperation()->result_begin(), valueRange.first + valueRange.second)}; } ::mlir::TypedValue<::mlir::Type> getRes() { return ::llvm::cast<::mlir::TypedValue<::mlir::Type>>(*getODSResults(0).begin()); } static ::llvm::LogicalResult setPropertiesFromAttr(Properties &prop, ::mlir::Attribute attr, ::llvm::function_ref<::mlir::InFlightDiagnostic()> emitError); static ::mlir::Attribute getPropertiesAsAttr(::mlir::MLIRContext *ctx, const Properties &prop); static llvm::hash_code computePropertiesHash(const Properties &prop); static std::optional getInherentAttr(::mlir::MLIRContext *ctx, const Properties &prop, llvm::StringRef name); static void setInherentAttr(Properties &prop, llvm::StringRef name, mlir::Attribute value); static void populateInherentAttrs(::mlir::MLIRContext *ctx, const Properties &prop, ::mlir::NamedAttrList &attrs); static ::llvm::LogicalResult verifyInherentAttrs(::mlir::OperationName opName, ::mlir::NamedAttrList &attrs, llvm::function_ref<::mlir::InFlightDiagnostic()> emitError); static ::llvm::LogicalResult readProperties(::mlir::DialectBytecodeReader &reader, ::mlir::OperationState &state); void writeProperties(::mlir::DialectBytecodeWriter &writer); ::mlir::ArrayAttr getAliasScopesAttr() { return ::llvm::dyn_cast_or_null<::mlir::ArrayAttr>(getProperties().alias_scopes); } ::std::optional< ::mlir::ArrayAttr > getAliasScopes(); ::mlir::ArrayAttr getNoaliasScopesAttr() { return ::llvm::dyn_cast_or_null<::mlir::ArrayAttr>(getProperties().noalias_scopes); } ::std::optional< ::mlir::ArrayAttr > getNoaliasScopes(); ::mlir::ArrayAttr getTbaaAttr() { return ::llvm::dyn_cast_or_null<::mlir::ArrayAttr>(getProperties().tbaa); } ::std::optional< ::mlir::ArrayAttr > getTbaa(); void setAliasScopesAttr(::mlir::ArrayAttr attr) { getProperties().alias_scopes = attr; } void setNoaliasScopesAttr(::mlir::ArrayAttr attr) { getProperties().noalias_scopes = attr; } void setTbaaAttr(::mlir::ArrayAttr attr) { getProperties().tbaa = attr; } ::mlir::Attribute removeAliasScopesAttr() { auto attr = getProperties().alias_scopes; getProperties().alias_scopes = {}; return attr; } ::mlir::Attribute removeNoaliasScopesAttr() { auto attr = getProperties().noalias_scopes; getProperties().noalias_scopes = {}; return attr; } ::mlir::Attribute removeTbaaAttr() { auto attr = getProperties().tbaa; getProperties().tbaa = {}; return attr; } static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::Type res, ::mlir::Value ptr, /*optional*/::mlir::ArrayAttr alias_scopes, /*optional*/::mlir::ArrayAttr noalias_scopes, /*optional*/::mlir::ArrayAttr tbaa); static ds_read_tr4_b64 create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::Type res, ::mlir::Value ptr, /*optional*/::mlir::ArrayAttr alias_scopes, /*optional*/::mlir::ArrayAttr noalias_scopes, /*optional*/::mlir::ArrayAttr tbaa); static ds_read_tr4_b64 create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::Type res, ::mlir::Value ptr, /*optional*/::mlir::ArrayAttr alias_scopes, /*optional*/::mlir::ArrayAttr noalias_scopes, /*optional*/::mlir::ArrayAttr tbaa); static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::Value ptr, /*optional*/::mlir::ArrayAttr alias_scopes, /*optional*/::mlir::ArrayAttr noalias_scopes, /*optional*/::mlir::ArrayAttr tbaa); static ds_read_tr4_b64 create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::Value ptr, /*optional*/::mlir::ArrayAttr alias_scopes, /*optional*/::mlir::ArrayAttr noalias_scopes, /*optional*/::mlir::ArrayAttr tbaa); static ds_read_tr4_b64 create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::Value ptr, /*optional*/::mlir::ArrayAttr alias_scopes, /*optional*/::mlir::ArrayAttr noalias_scopes, /*optional*/::mlir::ArrayAttr tbaa); static void build(::mlir::OpBuilder &, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, ::llvm::ArrayRef<::mlir::NamedAttribute> attributes = {}); static ds_read_tr4_b64 create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, ::llvm::ArrayRef<::mlir::NamedAttribute> attributes = {}); static ds_read_tr4_b64 create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, ::llvm::ArrayRef<::mlir::NamedAttribute> attributes = {}); static void build(::mlir::OpBuilder &, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, const Properties &properties, ::llvm::ArrayRef<::mlir::NamedAttribute> discardableAttributes = {}); static ds_read_tr4_b64 create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, const Properties &properties, ::llvm::ArrayRef<::mlir::NamedAttribute> discardableAttributes = {}); static ds_read_tr4_b64 create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, const Properties &properties, ::llvm::ArrayRef<::mlir::NamedAttribute> discardableAttributes = {}); ::llvm::LogicalResult verifyInvariantsImpl(); ::llvm::LogicalResult verifyInvariants(); ::llvm::SmallVector<::mlir::Value> getAccessedOperands(); static ::mlir::ParseResult parse(::mlir::OpAsmParser &parser, ::mlir::OperationState &result); void print(::mlir::OpAsmPrinter &_odsPrinter); void getEffects(::llvm::SmallVectorImpl<::mlir::SideEffects::EffectInstance<::mlir::MemoryEffects::Effect>> &effects); private: ::mlir::StringAttr getAttributeNameForIndex(unsigned index) { return getAttributeNameForIndex((*this)->getName(), index); } static ::mlir::StringAttr getAttributeNameForIndex(::mlir::OperationName name, unsigned index) { assert(index < 3 && "invalid attribute index"); assert(name.getStringRef() == getOperationName() && "invalid operation name"); assert(name.isRegistered() && "Operation isn't registered, missing a " "dependent dialect loading?"); return name.getAttributeNames()[index]; } public: }; } // namespace mlir::ROCDL MLIR_DECLARE_EXPLICIT_TYPE_ID(::mlir::ROCDL::ds_read_tr4_b64) MLIR_DECLARE_EXPLICIT_TYPE_ID(::mlir::ROCDL::detail::ds_read_tr4_b64GenericAdaptorBase::Properties) namespace mlir::ROCDL { //===----------------------------------------------------------------------===// // ::mlir::ROCDL::ds_read_tr6_b96 declarations //===----------------------------------------------------------------------===// namespace detail { class ds_read_tr6_b96GenericAdaptorBase { public: struct Properties { using alias_scopesTy = ::mlir::ArrayAttr; alias_scopesTy alias_scopes; auto getAliasScopes() const { auto &propStorage = this->alias_scopes; return ::llvm::dyn_cast_or_null<::mlir::ArrayAttr>(propStorage); } void setAliasScopes(const ::mlir::ArrayAttr &propValue) { this->alias_scopes = propValue; } using noalias_scopesTy = ::mlir::ArrayAttr; noalias_scopesTy noalias_scopes; auto getNoaliasScopes() const { auto &propStorage = this->noalias_scopes; return ::llvm::dyn_cast_or_null<::mlir::ArrayAttr>(propStorage); } void setNoaliasScopes(const ::mlir::ArrayAttr &propValue) { this->noalias_scopes = propValue; } using tbaaTy = ::mlir::ArrayAttr; tbaaTy tbaa; auto getTbaa() const { auto &propStorage = this->tbaa; return ::llvm::dyn_cast_or_null<::mlir::ArrayAttr>(propStorage); } void setTbaa(const ::mlir::ArrayAttr &propValue) { this->tbaa = propValue; } bool operator==(const Properties &rhs) const { return rhs.alias_scopes == this->alias_scopes && rhs.noalias_scopes == this->noalias_scopes && rhs.tbaa == this->tbaa && true; } bool operator!=(const Properties &rhs) const { return !(*this == rhs); } }; protected: ::mlir::DictionaryAttr odsAttrs; ::std::optional<::mlir::OperationName> odsOpName; Properties properties; ::mlir::RegionRange odsRegions; public: ds_read_tr6_b96GenericAdaptorBase(::mlir::DictionaryAttr attrs, const Properties &properties, ::mlir::RegionRange regions = {}) : odsAttrs(attrs), properties(properties), odsRegions(regions) { if (odsAttrs) odsOpName.emplace("rocdl.ds.read.tr6.b96", odsAttrs.getContext()); } ds_read_tr6_b96GenericAdaptorBase(ds_read_tr6_b96 op); std::pair getODSOperandIndexAndLength(unsigned index, unsigned odsOperandsSize) { return {index, 1}; } const Properties &getProperties() { return properties; } ::mlir::DictionaryAttr getAttributes() { return odsAttrs; } ::mlir::ArrayAttr getAliasScopesAttr() { auto attr = ::llvm::dyn_cast_or_null<::mlir::ArrayAttr>(getProperties().alias_scopes); return attr; } ::std::optional< ::mlir::ArrayAttr > getAliasScopes(); ::mlir::ArrayAttr getNoaliasScopesAttr() { auto attr = ::llvm::dyn_cast_or_null<::mlir::ArrayAttr>(getProperties().noalias_scopes); return attr; } ::std::optional< ::mlir::ArrayAttr > getNoaliasScopes(); ::mlir::ArrayAttr getTbaaAttr() { auto attr = ::llvm::dyn_cast_or_null<::mlir::ArrayAttr>(getProperties().tbaa); return attr; } ::std::optional< ::mlir::ArrayAttr > getTbaa(); }; } // namespace detail template class ds_read_tr6_b96GenericAdaptor : public detail::ds_read_tr6_b96GenericAdaptorBase { using ValueT = ::llvm::detail::ValueOfRange; using Base = detail::ds_read_tr6_b96GenericAdaptorBase; static constexpr int odsIndex_ptr = 0; public: ds_read_tr6_b96GenericAdaptor(RangeT values, ::mlir::DictionaryAttr attrs, const Properties &properties, ::mlir::RegionRange regions = {}) : Base(attrs, properties, regions), odsOperands(values) {} ds_read_tr6_b96GenericAdaptor(RangeT values, ::mlir::DictionaryAttr attrs, ::mlir::PropertyRef properties, ::mlir::RegionRange regions = {}) : ds_read_tr6_b96GenericAdaptor(values, attrs, (properties ? *properties.as() : Properties{}), regions) {} ds_read_tr6_b96GenericAdaptor(RangeT values, ::mlir::DictionaryAttr attrs = nullptr) : ds_read_tr6_b96GenericAdaptor(values, attrs, Properties{}, {}) {} ds_read_tr6_b96GenericAdaptor(RangeT values, const ds_read_tr6_b96GenericAdaptorBase &base) : Base(base), odsOperands(values) {} template >> ds_read_tr6_b96GenericAdaptor(RangeT values, LateInst op) : Base(op), odsOperands(values) {} std::pair getODSOperandIndexAndLength(unsigned index) { return Base::getODSOperandIndexAndLength(index, odsOperands.size()); } RangeT getODSOperands(unsigned index) { auto valueRange = getODSOperandIndexAndLength(index); return {std::next(odsOperands.begin(), valueRange.first), std::next(odsOperands.begin(), valueRange.first + valueRange.second)}; } ValueT getPtr() { return (*getODSOperands(0).begin()); } RangeT getOperands() { return odsOperands; } private: RangeT odsOperands; }; class ds_read_tr6_b96Adaptor : public ds_read_tr6_b96GenericAdaptor<::mlir::ValueRange> { public: using ds_read_tr6_b96GenericAdaptor::ds_read_tr6_b96GenericAdaptor; ds_read_tr6_b96Adaptor(ds_read_tr6_b96 op); ::llvm::LogicalResult verify(::mlir::Location loc); }; class ds_read_tr6_b96 : public ::mlir::Op::Impl, ::mlir::OpTrait::ZeroSuccessors, ::mlir::OpTrait::OneOperand, ::mlir::OpTrait::OpInvariants, ::mlir::BytecodeOpInterface::Trait, ::mlir::LLVM::AliasAnalysisOpInterface::Trait, ::mlir::MemoryEffectOpInterface::Trait> { public: using Op::Op; using Op::print; using Adaptor = ds_read_tr6_b96Adaptor; template using GenericAdaptor = ds_read_tr6_b96GenericAdaptor; using FoldAdaptor = GenericAdaptor<::llvm::ArrayRef<::mlir::Attribute>>; static constexpr int odsIndex_ptr = 0; using Properties = FoldAdaptor::Properties; using ::mlir::LLVM::AliasAnalysisOpInterface::Trait::getAliasScopesOrNull; using ::mlir::LLVM::AliasAnalysisOpInterface::Trait::setAliasScopes; using ::mlir::LLVM::AliasAnalysisOpInterface::Trait::getNoAliasScopesOrNull; using ::mlir::LLVM::AliasAnalysisOpInterface::Trait::setNoAliasScopes; using ::mlir::LLVM::AliasAnalysisOpInterface::Trait::getTBAATagsOrNull; using ::mlir::LLVM::AliasAnalysisOpInterface::Trait::setTBAATags; static ::llvm::ArrayRef<::llvm::StringRef> getAttributeNames() { static ::llvm::StringRef attrNames[] = {::llvm::StringRef("alias_scopes"), ::llvm::StringRef("noalias_scopes"), ::llvm::StringRef("tbaa")}; return ::llvm::ArrayRef(attrNames); } ::mlir::StringAttr getAliasScopesAttrName() { return getAttributeNameForIndex(0); } static ::mlir::StringAttr getAliasScopesAttrName(::mlir::OperationName name) { return getAttributeNameForIndex(name, 0); } ::mlir::StringAttr getNoaliasScopesAttrName() { return getAttributeNameForIndex(1); } static ::mlir::StringAttr getNoaliasScopesAttrName(::mlir::OperationName name) { return getAttributeNameForIndex(name, 1); } ::mlir::StringAttr getTbaaAttrName() { return getAttributeNameForIndex(2); } static ::mlir::StringAttr getTbaaAttrName(::mlir::OperationName name) { return getAttributeNameForIndex(name, 2); } static constexpr ::llvm::StringLiteral getOperationName() { return ::llvm::StringLiteral("rocdl.ds.read.tr6.b96"); } std::pair getODSOperandIndexAndLength(unsigned index) { return {index, 1}; } ::mlir::Operation::operand_range getODSOperands(unsigned index) { auto valueRange = getODSOperandIndexAndLength(index); return {std::next(getOperation()->operand_begin(), valueRange.first), std::next(getOperation()->operand_begin(), valueRange.first + valueRange.second)}; } ::mlir::TypedValue<::mlir::LLVM::LLVMPointerType> getPtr() { return ::llvm::cast<::mlir::TypedValue<::mlir::LLVM::LLVMPointerType>>(*getODSOperands(0).begin()); } ::mlir::OpOperand &getPtrMutable() { auto range = getODSOperandIndexAndLength(0); return getOperation()->getOpOperand(range.first); } std::pair getODSResultIndexAndLength(unsigned index) { return {index, 1}; } ::mlir::Operation::result_range getODSResults(unsigned index) { auto valueRange = getODSResultIndexAndLength(index); return {std::next(getOperation()->result_begin(), valueRange.first), std::next(getOperation()->result_begin(), valueRange.first + valueRange.second)}; } ::mlir::TypedValue<::mlir::Type> getRes() { return ::llvm::cast<::mlir::TypedValue<::mlir::Type>>(*getODSResults(0).begin()); } static ::llvm::LogicalResult setPropertiesFromAttr(Properties &prop, ::mlir::Attribute attr, ::llvm::function_ref<::mlir::InFlightDiagnostic()> emitError); static ::mlir::Attribute getPropertiesAsAttr(::mlir::MLIRContext *ctx, const Properties &prop); static llvm::hash_code computePropertiesHash(const Properties &prop); static std::optional getInherentAttr(::mlir::MLIRContext *ctx, const Properties &prop, llvm::StringRef name); static void setInherentAttr(Properties &prop, llvm::StringRef name, mlir::Attribute value); static void populateInherentAttrs(::mlir::MLIRContext *ctx, const Properties &prop, ::mlir::NamedAttrList &attrs); static ::llvm::LogicalResult verifyInherentAttrs(::mlir::OperationName opName, ::mlir::NamedAttrList &attrs, llvm::function_ref<::mlir::InFlightDiagnostic()> emitError); static ::llvm::LogicalResult readProperties(::mlir::DialectBytecodeReader &reader, ::mlir::OperationState &state); void writeProperties(::mlir::DialectBytecodeWriter &writer); ::mlir::ArrayAttr getAliasScopesAttr() { return ::llvm::dyn_cast_or_null<::mlir::ArrayAttr>(getProperties().alias_scopes); } ::std::optional< ::mlir::ArrayAttr > getAliasScopes(); ::mlir::ArrayAttr getNoaliasScopesAttr() { return ::llvm::dyn_cast_or_null<::mlir::ArrayAttr>(getProperties().noalias_scopes); } ::std::optional< ::mlir::ArrayAttr > getNoaliasScopes(); ::mlir::ArrayAttr getTbaaAttr() { return ::llvm::dyn_cast_or_null<::mlir::ArrayAttr>(getProperties().tbaa); } ::std::optional< ::mlir::ArrayAttr > getTbaa(); void setAliasScopesAttr(::mlir::ArrayAttr attr) { getProperties().alias_scopes = attr; } void setNoaliasScopesAttr(::mlir::ArrayAttr attr) { getProperties().noalias_scopes = attr; } void setTbaaAttr(::mlir::ArrayAttr attr) { getProperties().tbaa = attr; } ::mlir::Attribute removeAliasScopesAttr() { auto attr = getProperties().alias_scopes; getProperties().alias_scopes = {}; return attr; } ::mlir::Attribute removeNoaliasScopesAttr() { auto attr = getProperties().noalias_scopes; getProperties().noalias_scopes = {}; return attr; } ::mlir::Attribute removeTbaaAttr() { auto attr = getProperties().tbaa; getProperties().tbaa = {}; return attr; } static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::Type res, ::mlir::Value ptr, /*optional*/::mlir::ArrayAttr alias_scopes, /*optional*/::mlir::ArrayAttr noalias_scopes, /*optional*/::mlir::ArrayAttr tbaa); static ds_read_tr6_b96 create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::Type res, ::mlir::Value ptr, /*optional*/::mlir::ArrayAttr alias_scopes, /*optional*/::mlir::ArrayAttr noalias_scopes, /*optional*/::mlir::ArrayAttr tbaa); static ds_read_tr6_b96 create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::Type res, ::mlir::Value ptr, /*optional*/::mlir::ArrayAttr alias_scopes, /*optional*/::mlir::ArrayAttr noalias_scopes, /*optional*/::mlir::ArrayAttr tbaa); static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::Value ptr, /*optional*/::mlir::ArrayAttr alias_scopes, /*optional*/::mlir::ArrayAttr noalias_scopes, /*optional*/::mlir::ArrayAttr tbaa); static ds_read_tr6_b96 create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::Value ptr, /*optional*/::mlir::ArrayAttr alias_scopes, /*optional*/::mlir::ArrayAttr noalias_scopes, /*optional*/::mlir::ArrayAttr tbaa); static ds_read_tr6_b96 create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::Value ptr, /*optional*/::mlir::ArrayAttr alias_scopes, /*optional*/::mlir::ArrayAttr noalias_scopes, /*optional*/::mlir::ArrayAttr tbaa); static void build(::mlir::OpBuilder &, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, ::llvm::ArrayRef<::mlir::NamedAttribute> attributes = {}); static ds_read_tr6_b96 create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, ::llvm::ArrayRef<::mlir::NamedAttribute> attributes = {}); static ds_read_tr6_b96 create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, ::llvm::ArrayRef<::mlir::NamedAttribute> attributes = {}); static void build(::mlir::OpBuilder &, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, const Properties &properties, ::llvm::ArrayRef<::mlir::NamedAttribute> discardableAttributes = {}); static ds_read_tr6_b96 create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, const Properties &properties, ::llvm::ArrayRef<::mlir::NamedAttribute> discardableAttributes = {}); static ds_read_tr6_b96 create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, const Properties &properties, ::llvm::ArrayRef<::mlir::NamedAttribute> discardableAttributes = {}); ::llvm::LogicalResult verifyInvariantsImpl(); ::llvm::LogicalResult verifyInvariants(); ::llvm::SmallVector<::mlir::Value> getAccessedOperands(); static ::mlir::ParseResult parse(::mlir::OpAsmParser &parser, ::mlir::OperationState &result); void print(::mlir::OpAsmPrinter &_odsPrinter); void getEffects(::llvm::SmallVectorImpl<::mlir::SideEffects::EffectInstance<::mlir::MemoryEffects::Effect>> &effects); private: ::mlir::StringAttr getAttributeNameForIndex(unsigned index) { return getAttributeNameForIndex((*this)->getName(), index); } static ::mlir::StringAttr getAttributeNameForIndex(::mlir::OperationName name, unsigned index) { assert(index < 3 && "invalid attribute index"); assert(name.getStringRef() == getOperationName() && "invalid operation name"); assert(name.isRegistered() && "Operation isn't registered, missing a " "dependent dialect loading?"); return name.getAttributeNames()[index]; } public: }; } // namespace mlir::ROCDL MLIR_DECLARE_EXPLICIT_TYPE_ID(::mlir::ROCDL::ds_read_tr6_b96) MLIR_DECLARE_EXPLICIT_TYPE_ID(::mlir::ROCDL::detail::ds_read_tr6_b96GenericAdaptorBase::Properties) namespace mlir::ROCDL { //===----------------------------------------------------------------------===// // ::mlir::ROCDL::ds_read_tr8_b64 declarations //===----------------------------------------------------------------------===// namespace detail { class ds_read_tr8_b64GenericAdaptorBase { public: struct Properties { using alias_scopesTy = ::mlir::ArrayAttr; alias_scopesTy alias_scopes; auto getAliasScopes() const { auto &propStorage = this->alias_scopes; return ::llvm::dyn_cast_or_null<::mlir::ArrayAttr>(propStorage); } void setAliasScopes(const ::mlir::ArrayAttr &propValue) { this->alias_scopes = propValue; } using noalias_scopesTy = ::mlir::ArrayAttr; noalias_scopesTy noalias_scopes; auto getNoaliasScopes() const { auto &propStorage = this->noalias_scopes; return ::llvm::dyn_cast_or_null<::mlir::ArrayAttr>(propStorage); } void setNoaliasScopes(const ::mlir::ArrayAttr &propValue) { this->noalias_scopes = propValue; } using tbaaTy = ::mlir::ArrayAttr; tbaaTy tbaa; auto getTbaa() const { auto &propStorage = this->tbaa; return ::llvm::dyn_cast_or_null<::mlir::ArrayAttr>(propStorage); } void setTbaa(const ::mlir::ArrayAttr &propValue) { this->tbaa = propValue; } bool operator==(const Properties &rhs) const { return rhs.alias_scopes == this->alias_scopes && rhs.noalias_scopes == this->noalias_scopes && rhs.tbaa == this->tbaa && true; } bool operator!=(const Properties &rhs) const { return !(*this == rhs); } }; protected: ::mlir::DictionaryAttr odsAttrs; ::std::optional<::mlir::OperationName> odsOpName; Properties properties; ::mlir::RegionRange odsRegions; public: ds_read_tr8_b64GenericAdaptorBase(::mlir::DictionaryAttr attrs, const Properties &properties, ::mlir::RegionRange regions = {}) : odsAttrs(attrs), properties(properties), odsRegions(regions) { if (odsAttrs) odsOpName.emplace("rocdl.ds.read.tr8.b64", odsAttrs.getContext()); } ds_read_tr8_b64GenericAdaptorBase(ds_read_tr8_b64 op); std::pair getODSOperandIndexAndLength(unsigned index, unsigned odsOperandsSize) { return {index, 1}; } const Properties &getProperties() { return properties; } ::mlir::DictionaryAttr getAttributes() { return odsAttrs; } ::mlir::ArrayAttr getAliasScopesAttr() { auto attr = ::llvm::dyn_cast_or_null<::mlir::ArrayAttr>(getProperties().alias_scopes); return attr; } ::std::optional< ::mlir::ArrayAttr > getAliasScopes(); ::mlir::ArrayAttr getNoaliasScopesAttr() { auto attr = ::llvm::dyn_cast_or_null<::mlir::ArrayAttr>(getProperties().noalias_scopes); return attr; } ::std::optional< ::mlir::ArrayAttr > getNoaliasScopes(); ::mlir::ArrayAttr getTbaaAttr() { auto attr = ::llvm::dyn_cast_or_null<::mlir::ArrayAttr>(getProperties().tbaa); return attr; } ::std::optional< ::mlir::ArrayAttr > getTbaa(); }; } // namespace detail template class ds_read_tr8_b64GenericAdaptor : public detail::ds_read_tr8_b64GenericAdaptorBase { using ValueT = ::llvm::detail::ValueOfRange; using Base = detail::ds_read_tr8_b64GenericAdaptorBase; static constexpr int odsIndex_ptr = 0; public: ds_read_tr8_b64GenericAdaptor(RangeT values, ::mlir::DictionaryAttr attrs, const Properties &properties, ::mlir::RegionRange regions = {}) : Base(attrs, properties, regions), odsOperands(values) {} ds_read_tr8_b64GenericAdaptor(RangeT values, ::mlir::DictionaryAttr attrs, ::mlir::PropertyRef properties, ::mlir::RegionRange regions = {}) : ds_read_tr8_b64GenericAdaptor(values, attrs, (properties ? *properties.as() : Properties{}), regions) {} ds_read_tr8_b64GenericAdaptor(RangeT values, ::mlir::DictionaryAttr attrs = nullptr) : ds_read_tr8_b64GenericAdaptor(values, attrs, Properties{}, {}) {} ds_read_tr8_b64GenericAdaptor(RangeT values, const ds_read_tr8_b64GenericAdaptorBase &base) : Base(base), odsOperands(values) {} template >> ds_read_tr8_b64GenericAdaptor(RangeT values, LateInst op) : Base(op), odsOperands(values) {} std::pair getODSOperandIndexAndLength(unsigned index) { return Base::getODSOperandIndexAndLength(index, odsOperands.size()); } RangeT getODSOperands(unsigned index) { auto valueRange = getODSOperandIndexAndLength(index); return {std::next(odsOperands.begin(), valueRange.first), std::next(odsOperands.begin(), valueRange.first + valueRange.second)}; } ValueT getPtr() { return (*getODSOperands(0).begin()); } RangeT getOperands() { return odsOperands; } private: RangeT odsOperands; }; class ds_read_tr8_b64Adaptor : public ds_read_tr8_b64GenericAdaptor<::mlir::ValueRange> { public: using ds_read_tr8_b64GenericAdaptor::ds_read_tr8_b64GenericAdaptor; ds_read_tr8_b64Adaptor(ds_read_tr8_b64 op); ::llvm::LogicalResult verify(::mlir::Location loc); }; class ds_read_tr8_b64 : public ::mlir::Op::Impl, ::mlir::OpTrait::ZeroSuccessors, ::mlir::OpTrait::OneOperand, ::mlir::OpTrait::OpInvariants, ::mlir::BytecodeOpInterface::Trait, ::mlir::LLVM::AliasAnalysisOpInterface::Trait, ::mlir::MemoryEffectOpInterface::Trait> { public: using Op::Op; using Op::print; using Adaptor = ds_read_tr8_b64Adaptor; template using GenericAdaptor = ds_read_tr8_b64GenericAdaptor; using FoldAdaptor = GenericAdaptor<::llvm::ArrayRef<::mlir::Attribute>>; static constexpr int odsIndex_ptr = 0; using Properties = FoldAdaptor::Properties; using ::mlir::LLVM::AliasAnalysisOpInterface::Trait::getAliasScopesOrNull; using ::mlir::LLVM::AliasAnalysisOpInterface::Trait::setAliasScopes; using ::mlir::LLVM::AliasAnalysisOpInterface::Trait::getNoAliasScopesOrNull; using ::mlir::LLVM::AliasAnalysisOpInterface::Trait::setNoAliasScopes; using ::mlir::LLVM::AliasAnalysisOpInterface::Trait::getTBAATagsOrNull; using ::mlir::LLVM::AliasAnalysisOpInterface::Trait::setTBAATags; static ::llvm::ArrayRef<::llvm::StringRef> getAttributeNames() { static ::llvm::StringRef attrNames[] = {::llvm::StringRef("alias_scopes"), ::llvm::StringRef("noalias_scopes"), ::llvm::StringRef("tbaa")}; return ::llvm::ArrayRef(attrNames); } ::mlir::StringAttr getAliasScopesAttrName() { return getAttributeNameForIndex(0); } static ::mlir::StringAttr getAliasScopesAttrName(::mlir::OperationName name) { return getAttributeNameForIndex(name, 0); } ::mlir::StringAttr getNoaliasScopesAttrName() { return getAttributeNameForIndex(1); } static ::mlir::StringAttr getNoaliasScopesAttrName(::mlir::OperationName name) { return getAttributeNameForIndex(name, 1); } ::mlir::StringAttr getTbaaAttrName() { return getAttributeNameForIndex(2); } static ::mlir::StringAttr getTbaaAttrName(::mlir::OperationName name) { return getAttributeNameForIndex(name, 2); } static constexpr ::llvm::StringLiteral getOperationName() { return ::llvm::StringLiteral("rocdl.ds.read.tr8.b64"); } std::pair getODSOperandIndexAndLength(unsigned index) { return {index, 1}; } ::mlir::Operation::operand_range getODSOperands(unsigned index) { auto valueRange = getODSOperandIndexAndLength(index); return {std::next(getOperation()->operand_begin(), valueRange.first), std::next(getOperation()->operand_begin(), valueRange.first + valueRange.second)}; } ::mlir::TypedValue<::mlir::LLVM::LLVMPointerType> getPtr() { return ::llvm::cast<::mlir::TypedValue<::mlir::LLVM::LLVMPointerType>>(*getODSOperands(0).begin()); } ::mlir::OpOperand &getPtrMutable() { auto range = getODSOperandIndexAndLength(0); return getOperation()->getOpOperand(range.first); } std::pair getODSResultIndexAndLength(unsigned index) { return {index, 1}; } ::mlir::Operation::result_range getODSResults(unsigned index) { auto valueRange = getODSResultIndexAndLength(index); return {std::next(getOperation()->result_begin(), valueRange.first), std::next(getOperation()->result_begin(), valueRange.first + valueRange.second)}; } ::mlir::TypedValue<::mlir::Type> getRes() { return ::llvm::cast<::mlir::TypedValue<::mlir::Type>>(*getODSResults(0).begin()); } static ::llvm::LogicalResult setPropertiesFromAttr(Properties &prop, ::mlir::Attribute attr, ::llvm::function_ref<::mlir::InFlightDiagnostic()> emitError); static ::mlir::Attribute getPropertiesAsAttr(::mlir::MLIRContext *ctx, const Properties &prop); static llvm::hash_code computePropertiesHash(const Properties &prop); static std::optional getInherentAttr(::mlir::MLIRContext *ctx, const Properties &prop, llvm::StringRef name); static void setInherentAttr(Properties &prop, llvm::StringRef name, mlir::Attribute value); static void populateInherentAttrs(::mlir::MLIRContext *ctx, const Properties &prop, ::mlir::NamedAttrList &attrs); static ::llvm::LogicalResult verifyInherentAttrs(::mlir::OperationName opName, ::mlir::NamedAttrList &attrs, llvm::function_ref<::mlir::InFlightDiagnostic()> emitError); static ::llvm::LogicalResult readProperties(::mlir::DialectBytecodeReader &reader, ::mlir::OperationState &state); void writeProperties(::mlir::DialectBytecodeWriter &writer); ::mlir::ArrayAttr getAliasScopesAttr() { return ::llvm::dyn_cast_or_null<::mlir::ArrayAttr>(getProperties().alias_scopes); } ::std::optional< ::mlir::ArrayAttr > getAliasScopes(); ::mlir::ArrayAttr getNoaliasScopesAttr() { return ::llvm::dyn_cast_or_null<::mlir::ArrayAttr>(getProperties().noalias_scopes); } ::std::optional< ::mlir::ArrayAttr > getNoaliasScopes(); ::mlir::ArrayAttr getTbaaAttr() { return ::llvm::dyn_cast_or_null<::mlir::ArrayAttr>(getProperties().tbaa); } ::std::optional< ::mlir::ArrayAttr > getTbaa(); void setAliasScopesAttr(::mlir::ArrayAttr attr) { getProperties().alias_scopes = attr; } void setNoaliasScopesAttr(::mlir::ArrayAttr attr) { getProperties().noalias_scopes = attr; } void setTbaaAttr(::mlir::ArrayAttr attr) { getProperties().tbaa = attr; } ::mlir::Attribute removeAliasScopesAttr() { auto attr = getProperties().alias_scopes; getProperties().alias_scopes = {}; return attr; } ::mlir::Attribute removeNoaliasScopesAttr() { auto attr = getProperties().noalias_scopes; getProperties().noalias_scopes = {}; return attr; } ::mlir::Attribute removeTbaaAttr() { auto attr = getProperties().tbaa; getProperties().tbaa = {}; return attr; } static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::Type res, ::mlir::Value ptr, /*optional*/::mlir::ArrayAttr alias_scopes, /*optional*/::mlir::ArrayAttr noalias_scopes, /*optional*/::mlir::ArrayAttr tbaa); static ds_read_tr8_b64 create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::Type res, ::mlir::Value ptr, /*optional*/::mlir::ArrayAttr alias_scopes, /*optional*/::mlir::ArrayAttr noalias_scopes, /*optional*/::mlir::ArrayAttr tbaa); static ds_read_tr8_b64 create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::Type res, ::mlir::Value ptr, /*optional*/::mlir::ArrayAttr alias_scopes, /*optional*/::mlir::ArrayAttr noalias_scopes, /*optional*/::mlir::ArrayAttr tbaa); static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::Value ptr, /*optional*/::mlir::ArrayAttr alias_scopes, /*optional*/::mlir::ArrayAttr noalias_scopes, /*optional*/::mlir::ArrayAttr tbaa); static ds_read_tr8_b64 create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::Value ptr, /*optional*/::mlir::ArrayAttr alias_scopes, /*optional*/::mlir::ArrayAttr noalias_scopes, /*optional*/::mlir::ArrayAttr tbaa); static ds_read_tr8_b64 create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::Value ptr, /*optional*/::mlir::ArrayAttr alias_scopes, /*optional*/::mlir::ArrayAttr noalias_scopes, /*optional*/::mlir::ArrayAttr tbaa); static void build(::mlir::OpBuilder &, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, ::llvm::ArrayRef<::mlir::NamedAttribute> attributes = {}); static ds_read_tr8_b64 create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, ::llvm::ArrayRef<::mlir::NamedAttribute> attributes = {}); static ds_read_tr8_b64 create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, ::llvm::ArrayRef<::mlir::NamedAttribute> attributes = {}); static void build(::mlir::OpBuilder &, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, const Properties &properties, ::llvm::ArrayRef<::mlir::NamedAttribute> discardableAttributes = {}); static ds_read_tr8_b64 create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, const Properties &properties, ::llvm::ArrayRef<::mlir::NamedAttribute> discardableAttributes = {}); static ds_read_tr8_b64 create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, const Properties &properties, ::llvm::ArrayRef<::mlir::NamedAttribute> discardableAttributes = {}); ::llvm::LogicalResult verifyInvariantsImpl(); ::llvm::LogicalResult verifyInvariants(); ::llvm::SmallVector<::mlir::Value> getAccessedOperands(); static ::mlir::ParseResult parse(::mlir::OpAsmParser &parser, ::mlir::OperationState &result); void print(::mlir::OpAsmPrinter &_odsPrinter); void getEffects(::llvm::SmallVectorImpl<::mlir::SideEffects::EffectInstance<::mlir::MemoryEffects::Effect>> &effects); private: ::mlir::StringAttr getAttributeNameForIndex(unsigned index) { return getAttributeNameForIndex((*this)->getName(), index); } static ::mlir::StringAttr getAttributeNameForIndex(::mlir::OperationName name, unsigned index) { assert(index < 3 && "invalid attribute index"); assert(name.getStringRef() == getOperationName() && "invalid operation name"); assert(name.isRegistered() && "Operation isn't registered, missing a " "dependent dialect loading?"); return name.getAttributeNames()[index]; } public: }; } // namespace mlir::ROCDL MLIR_DECLARE_EXPLICIT_TYPE_ID(::mlir::ROCDL::ds_read_tr8_b64) MLIR_DECLARE_EXPLICIT_TYPE_ID(::mlir::ROCDL::detail::ds_read_tr8_b64GenericAdaptorBase::Properties) namespace mlir::ROCDL { //===----------------------------------------------------------------------===// // ::mlir::ROCDL::fdot2 declarations //===----------------------------------------------------------------------===// namespace detail { class fdot2GenericAdaptorBase { public: struct Properties { using clampTy = ::mlir::IntegerAttr; clampTy clamp; auto getClamp() const { auto &propStorage = this->clamp; return ::llvm::dyn_cast_or_null<::mlir::IntegerAttr>(propStorage); } void setClamp(const ::mlir::IntegerAttr &propValue) { this->clamp = propValue; } bool operator==(const Properties &rhs) const { return rhs.clamp == this->clamp && true; } bool operator!=(const Properties &rhs) const { return !(*this == rhs); } }; protected: ::mlir::DictionaryAttr odsAttrs; ::std::optional<::mlir::OperationName> odsOpName; Properties properties; ::mlir::RegionRange odsRegions; public: fdot2GenericAdaptorBase(::mlir::DictionaryAttr attrs, const Properties &properties, ::mlir::RegionRange regions = {}) : odsAttrs(attrs), properties(properties), odsRegions(regions) { if (odsAttrs) odsOpName.emplace("rocdl.fdot2", odsAttrs.getContext()); } fdot2GenericAdaptorBase(fdot2 op); std::pair getODSOperandIndexAndLength(unsigned index, unsigned odsOperandsSize) { return {index, 1}; } const Properties &getProperties() { return properties; } ::mlir::DictionaryAttr getAttributes() { return odsAttrs; } ::mlir::IntegerAttr getClampAttr(); bool getClamp(); }; } // namespace detail template class fdot2GenericAdaptor : public detail::fdot2GenericAdaptorBase { using ValueT = ::llvm::detail::ValueOfRange; using Base = detail::fdot2GenericAdaptorBase; static constexpr int odsIndex_a = 0; static constexpr int odsIndex_b = 1; static constexpr int odsIndex_c = 2; public: fdot2GenericAdaptor(RangeT values, ::mlir::DictionaryAttr attrs, const Properties &properties, ::mlir::RegionRange regions = {}) : Base(attrs, properties, regions), odsOperands(values) {} fdot2GenericAdaptor(RangeT values, ::mlir::DictionaryAttr attrs, ::mlir::PropertyRef properties, ::mlir::RegionRange regions = {}) : fdot2GenericAdaptor(values, attrs, (properties ? *properties.as() : Properties{}), regions) {} fdot2GenericAdaptor(RangeT values, ::mlir::DictionaryAttr attrs = nullptr) : fdot2GenericAdaptor(values, attrs, Properties{}, {}) {} fdot2GenericAdaptor(RangeT values, const fdot2GenericAdaptorBase &base) : Base(base), odsOperands(values) {} template >> fdot2GenericAdaptor(RangeT values, LateInst op) : Base(op), odsOperands(values) {} std::pair getODSOperandIndexAndLength(unsigned index) { return Base::getODSOperandIndexAndLength(index, odsOperands.size()); } RangeT getODSOperands(unsigned index) { auto valueRange = getODSOperandIndexAndLength(index); return {std::next(odsOperands.begin(), valueRange.first), std::next(odsOperands.begin(), valueRange.first + valueRange.second)}; } ValueT getA() { return (*getODSOperands(0).begin()); } ValueT getB() { return (*getODSOperands(1).begin()); } ValueT getC() { return (*getODSOperands(2).begin()); } RangeT getOperands() { return odsOperands; } private: RangeT odsOperands; }; class fdot2Adaptor : public fdot2GenericAdaptor<::mlir::ValueRange> { public: using fdot2GenericAdaptor::fdot2GenericAdaptor; fdot2Adaptor(fdot2 op); ::llvm::LogicalResult verify(::mlir::Location loc); }; class fdot2 : public ::mlir::Op::Impl, ::mlir::OpTrait::ZeroSuccessors, ::mlir::OpTrait::NOperands<3>::Impl, ::mlir::OpTrait::OpInvariants, ::mlir::BytecodeOpInterface::Trait, ::mlir::ConditionallySpeculatable::Trait, ::mlir::OpTrait::AlwaysSpeculatableImplTrait, ::mlir::MemoryEffectOpInterface::Trait> { public: using Op::Op; using Op::print; using Adaptor = fdot2Adaptor; template using GenericAdaptor = fdot2GenericAdaptor; using FoldAdaptor = GenericAdaptor<::llvm::ArrayRef<::mlir::Attribute>>; static constexpr int odsIndex_a = 0; static constexpr int odsIndex_b = 1; static constexpr int odsIndex_c = 2; using Properties = FoldAdaptor::Properties; static ::llvm::ArrayRef<::llvm::StringRef> getAttributeNames() { static ::llvm::StringRef attrNames[] = {::llvm::StringRef("clamp")}; return ::llvm::ArrayRef(attrNames); } ::mlir::StringAttr getClampAttrName() { return getAttributeNameForIndex(0); } static ::mlir::StringAttr getClampAttrName(::mlir::OperationName name) { return getAttributeNameForIndex(name, 0); } static constexpr ::llvm::StringLiteral getOperationName() { return ::llvm::StringLiteral("rocdl.fdot2"); } std::pair getODSOperandIndexAndLength(unsigned index) { return {index, 1}; } ::mlir::Operation::operand_range getODSOperands(unsigned index) { auto valueRange = getODSOperandIndexAndLength(index); return {std::next(getOperation()->operand_begin(), valueRange.first), std::next(getOperation()->operand_begin(), valueRange.first + valueRange.second)}; } ::mlir::TypedValue<::mlir::VectorType> getA() { return ::llvm::cast<::mlir::TypedValue<::mlir::VectorType>>(*getODSOperands(0).begin()); } ::mlir::TypedValue<::mlir::VectorType> getB() { return ::llvm::cast<::mlir::TypedValue<::mlir::VectorType>>(*getODSOperands(1).begin()); } ::mlir::TypedValue<::mlir::Type> getC() { return ::llvm::cast<::mlir::TypedValue<::mlir::Type>>(*getODSOperands(2).begin()); } ::mlir::OpOperand &getAMutable() { auto range = getODSOperandIndexAndLength(0); return getOperation()->getOpOperand(range.first); } ::mlir::OpOperand &getBMutable() { auto range = getODSOperandIndexAndLength(1); return getOperation()->getOpOperand(range.first); } ::mlir::OpOperand &getCMutable() { auto range = getODSOperandIndexAndLength(2); return getOperation()->getOpOperand(range.first); } std::pair getODSResultIndexAndLength(unsigned index) { return {index, 1}; } ::mlir::Operation::result_range getODSResults(unsigned index) { auto valueRange = getODSResultIndexAndLength(index); return {std::next(getOperation()->result_begin(), valueRange.first), std::next(getOperation()->result_begin(), valueRange.first + valueRange.second)}; } ::mlir::TypedValue<::mlir::Type> getRes() { return ::llvm::cast<::mlir::TypedValue<::mlir::Type>>(*getODSResults(0).begin()); } static ::llvm::LogicalResult setPropertiesFromAttr(Properties &prop, ::mlir::Attribute attr, ::llvm::function_ref<::mlir::InFlightDiagnostic()> emitError); static ::mlir::Attribute getPropertiesAsAttr(::mlir::MLIRContext *ctx, const Properties &prop); static llvm::hash_code computePropertiesHash(const Properties &prop); static std::optional getInherentAttr(::mlir::MLIRContext *ctx, const Properties &prop, llvm::StringRef name); static void setInherentAttr(Properties &prop, llvm::StringRef name, mlir::Attribute value); static void populateInherentAttrs(::mlir::MLIRContext *ctx, const Properties &prop, ::mlir::NamedAttrList &attrs); static ::llvm::LogicalResult verifyInherentAttrs(::mlir::OperationName opName, ::mlir::NamedAttrList &attrs, llvm::function_ref<::mlir::InFlightDiagnostic()> emitError); static ::llvm::LogicalResult readProperties(::mlir::DialectBytecodeReader &reader, ::mlir::OperationState &state); void writeProperties(::mlir::DialectBytecodeWriter &writer); ::mlir::IntegerAttr getClampAttr() { return ::llvm::dyn_cast_or_null<::mlir::IntegerAttr>(getProperties().clamp); } bool getClamp(); void setClampAttr(::mlir::IntegerAttr attr) { getProperties().clamp = attr; } void setClamp(bool attrValue); static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::Type res, ::mlir::Value a, ::mlir::Value b, ::mlir::Value c, ::mlir::IntegerAttr clamp); static fdot2 create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::Type res, ::mlir::Value a, ::mlir::Value b, ::mlir::Value c, ::mlir::IntegerAttr clamp); static fdot2 create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::Type res, ::mlir::Value a, ::mlir::Value b, ::mlir::Value c, ::mlir::IntegerAttr clamp); static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::Value a, ::mlir::Value b, ::mlir::Value c, ::mlir::IntegerAttr clamp); static fdot2 create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::Value a, ::mlir::Value b, ::mlir::Value c, ::mlir::IntegerAttr clamp); static fdot2 create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::Value a, ::mlir::Value b, ::mlir::Value c, ::mlir::IntegerAttr clamp); static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::Type res, ::mlir::Value a, ::mlir::Value b, ::mlir::Value c, bool clamp = 0); static fdot2 create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::Type res, ::mlir::Value a, ::mlir::Value b, ::mlir::Value c, bool clamp = 0); static fdot2 create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::Type res, ::mlir::Value a, ::mlir::Value b, ::mlir::Value c, bool clamp = 0); static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::Value a, ::mlir::Value b, ::mlir::Value c, bool clamp = 0); static fdot2 create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::Value a, ::mlir::Value b, ::mlir::Value c, bool clamp = 0); static fdot2 create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::Value a, ::mlir::Value b, ::mlir::Value c, bool clamp = 0); static void build(::mlir::OpBuilder &, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, ::llvm::ArrayRef<::mlir::NamedAttribute> attributes = {}); static fdot2 create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, ::llvm::ArrayRef<::mlir::NamedAttribute> attributes = {}); static fdot2 create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, ::llvm::ArrayRef<::mlir::NamedAttribute> attributes = {}); static void build(::mlir::OpBuilder &, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, const Properties &properties, ::llvm::ArrayRef<::mlir::NamedAttribute> discardableAttributes = {}); static fdot2 create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, const Properties &properties, ::llvm::ArrayRef<::mlir::NamedAttribute> discardableAttributes = {}); static fdot2 create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, const Properties &properties, ::llvm::ArrayRef<::mlir::NamedAttribute> discardableAttributes = {}); static void populateDefaultProperties(::mlir::OperationName opName, Properties &properties); ::llvm::LogicalResult verifyInvariantsImpl(); ::llvm::LogicalResult verifyInvariants(); static ::mlir::ParseResult parse(::mlir::OpAsmParser &parser, ::mlir::OperationState &result); void print(::mlir::OpAsmPrinter &_odsPrinter); void getEffects(::llvm::SmallVectorImpl<::mlir::SideEffects::EffectInstance<::mlir::MemoryEffects::Effect>> &effects); private: ::mlir::StringAttr getAttributeNameForIndex(unsigned index) { return getAttributeNameForIndex((*this)->getName(), index); } static ::mlir::StringAttr getAttributeNameForIndex(::mlir::OperationName name, unsigned index) { assert(index < 1 && "invalid attribute index"); assert(name.getStringRef() == getOperationName() && "invalid operation name"); assert(name.isRegistered() && "Operation isn't registered, missing a " "dependent dialect loading?"); return name.getAttributeNames()[index]; } public: }; } // namespace mlir::ROCDL MLIR_DECLARE_EXPLICIT_TYPE_ID(::mlir::ROCDL::fdot2) MLIR_DECLARE_EXPLICIT_TYPE_ID(::mlir::ROCDL::detail::fdot2GenericAdaptorBase::Properties) namespace mlir::ROCDL { //===----------------------------------------------------------------------===// // ::mlir::ROCDL::fdot2_bf16_bf16 declarations //===----------------------------------------------------------------------===// namespace detail { class fdot2_bf16_bf16GenericAdaptorBase { public: using Properties = ::mlir::EmptyProperties; protected: ::mlir::DictionaryAttr odsAttrs; ::std::optional<::mlir::OperationName> odsOpName; Properties properties; ::mlir::RegionRange odsRegions; public: fdot2_bf16_bf16GenericAdaptorBase(::mlir::DictionaryAttr attrs, const Properties &properties, ::mlir::RegionRange regions = {}) : odsAttrs(attrs), properties(properties), odsRegions(regions) { if (odsAttrs) odsOpName.emplace("rocdl.fdot2.bf16.bf16", odsAttrs.getContext()); } fdot2_bf16_bf16GenericAdaptorBase(fdot2_bf16_bf16 op); std::pair getODSOperandIndexAndLength(unsigned index, unsigned odsOperandsSize) { return {index, 1}; } const Properties &getProperties() { return properties; } ::mlir::DictionaryAttr getAttributes() { return odsAttrs; } }; } // namespace detail template class fdot2_bf16_bf16GenericAdaptor : public detail::fdot2_bf16_bf16GenericAdaptorBase { using ValueT = ::llvm::detail::ValueOfRange; using Base = detail::fdot2_bf16_bf16GenericAdaptorBase; static constexpr int odsIndex_a = 0; static constexpr int odsIndex_b = 1; static constexpr int odsIndex_c = 2; public: fdot2_bf16_bf16GenericAdaptor(RangeT values, ::mlir::DictionaryAttr attrs, const Properties &properties, ::mlir::RegionRange regions = {}) : Base(attrs, properties, regions), odsOperands(values) {} fdot2_bf16_bf16GenericAdaptor(RangeT values, ::mlir::DictionaryAttr attrs, ::mlir::PropertyRef properties, ::mlir::RegionRange regions = {}) : fdot2_bf16_bf16GenericAdaptor(values, attrs, (properties ? *properties.as() : Properties{}), regions) {} fdot2_bf16_bf16GenericAdaptor(RangeT values, ::mlir::DictionaryAttr attrs = nullptr) : fdot2_bf16_bf16GenericAdaptor(values, attrs, Properties{}, {}) {} fdot2_bf16_bf16GenericAdaptor(RangeT values, const fdot2_bf16_bf16GenericAdaptorBase &base) : Base(base), odsOperands(values) {} template >> fdot2_bf16_bf16GenericAdaptor(RangeT values, LateInst op) : Base(op), odsOperands(values) {} std::pair getODSOperandIndexAndLength(unsigned index) { return Base::getODSOperandIndexAndLength(index, odsOperands.size()); } RangeT getODSOperands(unsigned index) { auto valueRange = getODSOperandIndexAndLength(index); return {std::next(odsOperands.begin(), valueRange.first), std::next(odsOperands.begin(), valueRange.first + valueRange.second)}; } ValueT getA() { return (*getODSOperands(0).begin()); } ValueT getB() { return (*getODSOperands(1).begin()); } ValueT getC() { return (*getODSOperands(2).begin()); } RangeT getOperands() { return odsOperands; } private: RangeT odsOperands; }; class fdot2_bf16_bf16Adaptor : public fdot2_bf16_bf16GenericAdaptor<::mlir::ValueRange> { public: using fdot2_bf16_bf16GenericAdaptor::fdot2_bf16_bf16GenericAdaptor; fdot2_bf16_bf16Adaptor(fdot2_bf16_bf16 op); ::llvm::LogicalResult verify(::mlir::Location loc); }; class fdot2_bf16_bf16 : public ::mlir::Op::Impl, ::mlir::OpTrait::ZeroSuccessors, ::mlir::OpTrait::NOperands<3>::Impl, ::mlir::OpTrait::OpInvariants, ::mlir::ConditionallySpeculatable::Trait, ::mlir::OpTrait::AlwaysSpeculatableImplTrait, ::mlir::MemoryEffectOpInterface::Trait> { public: using Op::Op; using Op::print; using Adaptor = fdot2_bf16_bf16Adaptor; template using GenericAdaptor = fdot2_bf16_bf16GenericAdaptor; using FoldAdaptor = GenericAdaptor<::llvm::ArrayRef<::mlir::Attribute>>; static constexpr int odsIndex_a = 0; static constexpr int odsIndex_b = 1; static constexpr int odsIndex_c = 2; using Properties = FoldAdaptor::Properties; static ::llvm::ArrayRef<::llvm::StringRef> getAttributeNames() { return {}; } static constexpr ::llvm::StringLiteral getOperationName() { return ::llvm::StringLiteral("rocdl.fdot2.bf16.bf16"); } std::pair getODSOperandIndexAndLength(unsigned index) { return {index, 1}; } ::mlir::Operation::operand_range getODSOperands(unsigned index) { auto valueRange = getODSOperandIndexAndLength(index); return {std::next(getOperation()->operand_begin(), valueRange.first), std::next(getOperation()->operand_begin(), valueRange.first + valueRange.second)}; } ::mlir::TypedValue<::mlir::VectorType> getA() { return ::llvm::cast<::mlir::TypedValue<::mlir::VectorType>>(*getODSOperands(0).begin()); } ::mlir::TypedValue<::mlir::VectorType> getB() { return ::llvm::cast<::mlir::TypedValue<::mlir::VectorType>>(*getODSOperands(1).begin()); } ::mlir::TypedValue<::mlir::Type> getC() { return ::llvm::cast<::mlir::TypedValue<::mlir::Type>>(*getODSOperands(2).begin()); } ::mlir::OpOperand &getAMutable() { auto range = getODSOperandIndexAndLength(0); return getOperation()->getOpOperand(range.first); } ::mlir::OpOperand &getBMutable() { auto range = getODSOperandIndexAndLength(1); return getOperation()->getOpOperand(range.first); } ::mlir::OpOperand &getCMutable() { auto range = getODSOperandIndexAndLength(2); return getOperation()->getOpOperand(range.first); } std::pair getODSResultIndexAndLength(unsigned index) { return {index, 1}; } ::mlir::Operation::result_range getODSResults(unsigned index) { auto valueRange = getODSResultIndexAndLength(index); return {std::next(getOperation()->result_begin(), valueRange.first), std::next(getOperation()->result_begin(), valueRange.first + valueRange.second)}; } ::mlir::TypedValue<::mlir::Type> getRes() { return ::llvm::cast<::mlir::TypedValue<::mlir::Type>>(*getODSResults(0).begin()); } static ::llvm::LogicalResult setPropertiesFromAttr(Properties &prop, ::mlir::Attribute attr, ::llvm::function_ref<::mlir::InFlightDiagnostic()> emitError); static ::mlir::Attribute getPropertiesAsAttr(::mlir::MLIRContext *ctx, const Properties &prop); static llvm::hash_code computePropertiesHash(const Properties &prop); static std::optional getInherentAttr(::mlir::MLIRContext *ctx, const Properties &prop, llvm::StringRef name); static void setInherentAttr(Properties &prop, llvm::StringRef name, mlir::Attribute value); static void populateInherentAttrs(::mlir::MLIRContext *ctx, const Properties &prop, ::mlir::NamedAttrList &attrs); static ::llvm::LogicalResult verifyInherentAttrs(::mlir::OperationName opName, ::mlir::NamedAttrList &attrs, llvm::function_ref<::mlir::InFlightDiagnostic()> emitError); static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::Type res, ::mlir::Value a, ::mlir::Value b, ::mlir::Value c); static fdot2_bf16_bf16 create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::Type res, ::mlir::Value a, ::mlir::Value b, ::mlir::Value c); static fdot2_bf16_bf16 create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::Type res, ::mlir::Value a, ::mlir::Value b, ::mlir::Value c); static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::Value a, ::mlir::Value b, ::mlir::Value c); static fdot2_bf16_bf16 create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::Value a, ::mlir::Value b, ::mlir::Value c); static fdot2_bf16_bf16 create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::Value a, ::mlir::Value b, ::mlir::Value c); static void build(::mlir::OpBuilder &, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, ::llvm::ArrayRef<::mlir::NamedAttribute> attributes = {}); static fdot2_bf16_bf16 create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, ::llvm::ArrayRef<::mlir::NamedAttribute> attributes = {}); static fdot2_bf16_bf16 create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, ::llvm::ArrayRef<::mlir::NamedAttribute> attributes = {}); static void build(::mlir::OpBuilder &, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, const Properties &properties, ::llvm::ArrayRef<::mlir::NamedAttribute> discardableAttributes = {}); static fdot2_bf16_bf16 create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, const Properties &properties, ::llvm::ArrayRef<::mlir::NamedAttribute> discardableAttributes = {}); static fdot2_bf16_bf16 create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, const Properties &properties, ::llvm::ArrayRef<::mlir::NamedAttribute> discardableAttributes = {}); ::llvm::LogicalResult verifyInvariantsImpl(); ::llvm::LogicalResult verifyInvariants(); static ::mlir::ParseResult parse(::mlir::OpAsmParser &parser, ::mlir::OperationState &result); void print(::mlir::OpAsmPrinter &_odsPrinter); void getEffects(::llvm::SmallVectorImpl<::mlir::SideEffects::EffectInstance<::mlir::MemoryEffects::Effect>> &effects); public: }; } // namespace mlir::ROCDL MLIR_DECLARE_EXPLICIT_TYPE_ID(::mlir::ROCDL::fdot2_bf16_bf16) namespace mlir::ROCDL { //===----------------------------------------------------------------------===// // ::mlir::ROCDL::fdot2_f16_f16 declarations //===----------------------------------------------------------------------===// namespace detail { class fdot2_f16_f16GenericAdaptorBase { public: using Properties = ::mlir::EmptyProperties; protected: ::mlir::DictionaryAttr odsAttrs; ::std::optional<::mlir::OperationName> odsOpName; Properties properties; ::mlir::RegionRange odsRegions; public: fdot2_f16_f16GenericAdaptorBase(::mlir::DictionaryAttr attrs, const Properties &properties, ::mlir::RegionRange regions = {}) : odsAttrs(attrs), properties(properties), odsRegions(regions) { if (odsAttrs) odsOpName.emplace("rocdl.fdot2.f16.f16", odsAttrs.getContext()); } fdot2_f16_f16GenericAdaptorBase(fdot2_f16_f16 op); std::pair getODSOperandIndexAndLength(unsigned index, unsigned odsOperandsSize) { return {index, 1}; } const Properties &getProperties() { return properties; } ::mlir::DictionaryAttr getAttributes() { return odsAttrs; } }; } // namespace detail template class fdot2_f16_f16GenericAdaptor : public detail::fdot2_f16_f16GenericAdaptorBase { using ValueT = ::llvm::detail::ValueOfRange; using Base = detail::fdot2_f16_f16GenericAdaptorBase; static constexpr int odsIndex_a = 0; static constexpr int odsIndex_b = 1; static constexpr int odsIndex_c = 2; public: fdot2_f16_f16GenericAdaptor(RangeT values, ::mlir::DictionaryAttr attrs, const Properties &properties, ::mlir::RegionRange regions = {}) : Base(attrs, properties, regions), odsOperands(values) {} fdot2_f16_f16GenericAdaptor(RangeT values, ::mlir::DictionaryAttr attrs, ::mlir::PropertyRef properties, ::mlir::RegionRange regions = {}) : fdot2_f16_f16GenericAdaptor(values, attrs, (properties ? *properties.as() : Properties{}), regions) {} fdot2_f16_f16GenericAdaptor(RangeT values, ::mlir::DictionaryAttr attrs = nullptr) : fdot2_f16_f16GenericAdaptor(values, attrs, Properties{}, {}) {} fdot2_f16_f16GenericAdaptor(RangeT values, const fdot2_f16_f16GenericAdaptorBase &base) : Base(base), odsOperands(values) {} template >> fdot2_f16_f16GenericAdaptor(RangeT values, LateInst op) : Base(op), odsOperands(values) {} std::pair getODSOperandIndexAndLength(unsigned index) { return Base::getODSOperandIndexAndLength(index, odsOperands.size()); } RangeT getODSOperands(unsigned index) { auto valueRange = getODSOperandIndexAndLength(index); return {std::next(odsOperands.begin(), valueRange.first), std::next(odsOperands.begin(), valueRange.first + valueRange.second)}; } ValueT getA() { return (*getODSOperands(0).begin()); } ValueT getB() { return (*getODSOperands(1).begin()); } ValueT getC() { return (*getODSOperands(2).begin()); } RangeT getOperands() { return odsOperands; } private: RangeT odsOperands; }; class fdot2_f16_f16Adaptor : public fdot2_f16_f16GenericAdaptor<::mlir::ValueRange> { public: using fdot2_f16_f16GenericAdaptor::fdot2_f16_f16GenericAdaptor; fdot2_f16_f16Adaptor(fdot2_f16_f16 op); ::llvm::LogicalResult verify(::mlir::Location loc); }; class fdot2_f16_f16 : public ::mlir::Op::Impl, ::mlir::OpTrait::ZeroSuccessors, ::mlir::OpTrait::NOperands<3>::Impl, ::mlir::OpTrait::OpInvariants, ::mlir::ConditionallySpeculatable::Trait, ::mlir::OpTrait::AlwaysSpeculatableImplTrait, ::mlir::MemoryEffectOpInterface::Trait> { public: using Op::Op; using Op::print; using Adaptor = fdot2_f16_f16Adaptor; template using GenericAdaptor = fdot2_f16_f16GenericAdaptor; using FoldAdaptor = GenericAdaptor<::llvm::ArrayRef<::mlir::Attribute>>; static constexpr int odsIndex_a = 0; static constexpr int odsIndex_b = 1; static constexpr int odsIndex_c = 2; using Properties = FoldAdaptor::Properties; static ::llvm::ArrayRef<::llvm::StringRef> getAttributeNames() { return {}; } static constexpr ::llvm::StringLiteral getOperationName() { return ::llvm::StringLiteral("rocdl.fdot2.f16.f16"); } std::pair getODSOperandIndexAndLength(unsigned index) { return {index, 1}; } ::mlir::Operation::operand_range getODSOperands(unsigned index) { auto valueRange = getODSOperandIndexAndLength(index); return {std::next(getOperation()->operand_begin(), valueRange.first), std::next(getOperation()->operand_begin(), valueRange.first + valueRange.second)}; } ::mlir::TypedValue<::mlir::VectorType> getA() { return ::llvm::cast<::mlir::TypedValue<::mlir::VectorType>>(*getODSOperands(0).begin()); } ::mlir::TypedValue<::mlir::VectorType> getB() { return ::llvm::cast<::mlir::TypedValue<::mlir::VectorType>>(*getODSOperands(1).begin()); } ::mlir::TypedValue<::mlir::Type> getC() { return ::llvm::cast<::mlir::TypedValue<::mlir::Type>>(*getODSOperands(2).begin()); } ::mlir::OpOperand &getAMutable() { auto range = getODSOperandIndexAndLength(0); return getOperation()->getOpOperand(range.first); } ::mlir::OpOperand &getBMutable() { auto range = getODSOperandIndexAndLength(1); return getOperation()->getOpOperand(range.first); } ::mlir::OpOperand &getCMutable() { auto range = getODSOperandIndexAndLength(2); return getOperation()->getOpOperand(range.first); } std::pair getODSResultIndexAndLength(unsigned index) { return {index, 1}; } ::mlir::Operation::result_range getODSResults(unsigned index) { auto valueRange = getODSResultIndexAndLength(index); return {std::next(getOperation()->result_begin(), valueRange.first), std::next(getOperation()->result_begin(), valueRange.first + valueRange.second)}; } ::mlir::TypedValue<::mlir::Type> getRes() { return ::llvm::cast<::mlir::TypedValue<::mlir::Type>>(*getODSResults(0).begin()); } static ::llvm::LogicalResult setPropertiesFromAttr(Properties &prop, ::mlir::Attribute attr, ::llvm::function_ref<::mlir::InFlightDiagnostic()> emitError); static ::mlir::Attribute getPropertiesAsAttr(::mlir::MLIRContext *ctx, const Properties &prop); static llvm::hash_code computePropertiesHash(const Properties &prop); static std::optional getInherentAttr(::mlir::MLIRContext *ctx, const Properties &prop, llvm::StringRef name); static void setInherentAttr(Properties &prop, llvm::StringRef name, mlir::Attribute value); static void populateInherentAttrs(::mlir::MLIRContext *ctx, const Properties &prop, ::mlir::NamedAttrList &attrs); static ::llvm::LogicalResult verifyInherentAttrs(::mlir::OperationName opName, ::mlir::NamedAttrList &attrs, llvm::function_ref<::mlir::InFlightDiagnostic()> emitError); static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::Type res, ::mlir::Value a, ::mlir::Value b, ::mlir::Value c); static fdot2_f16_f16 create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::Type res, ::mlir::Value a, ::mlir::Value b, ::mlir::Value c); static fdot2_f16_f16 create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::Type res, ::mlir::Value a, ::mlir::Value b, ::mlir::Value c); static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::Value a, ::mlir::Value b, ::mlir::Value c); static fdot2_f16_f16 create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::Value a, ::mlir::Value b, ::mlir::Value c); static fdot2_f16_f16 create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::Value a, ::mlir::Value b, ::mlir::Value c); static void build(::mlir::OpBuilder &, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, ::llvm::ArrayRef<::mlir::NamedAttribute> attributes = {}); static fdot2_f16_f16 create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, ::llvm::ArrayRef<::mlir::NamedAttribute> attributes = {}); static fdot2_f16_f16 create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, ::llvm::ArrayRef<::mlir::NamedAttribute> attributes = {}); static void build(::mlir::OpBuilder &, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, const Properties &properties, ::llvm::ArrayRef<::mlir::NamedAttribute> discardableAttributes = {}); static fdot2_f16_f16 create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, const Properties &properties, ::llvm::ArrayRef<::mlir::NamedAttribute> discardableAttributes = {}); static fdot2_f16_f16 create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, const Properties &properties, ::llvm::ArrayRef<::mlir::NamedAttribute> discardableAttributes = {}); ::llvm::LogicalResult verifyInvariantsImpl(); ::llvm::LogicalResult verifyInvariants(); static ::mlir::ParseResult parse(::mlir::OpAsmParser &parser, ::mlir::OperationState &result); void print(::mlir::OpAsmPrinter &_odsPrinter); void getEffects(::llvm::SmallVectorImpl<::mlir::SideEffects::EffectInstance<::mlir::MemoryEffects::Effect>> &effects); public: }; } // namespace mlir::ROCDL MLIR_DECLARE_EXPLICIT_TYPE_ID(::mlir::ROCDL::fdot2_f16_f16) namespace mlir::ROCDL { //===----------------------------------------------------------------------===// // ::mlir::ROCDL::fdot2_f32_bf16 declarations //===----------------------------------------------------------------------===// namespace detail { class fdot2_f32_bf16GenericAdaptorBase { public: struct Properties { using clampTy = ::mlir::IntegerAttr; clampTy clamp; auto getClamp() const { auto &propStorage = this->clamp; return ::llvm::dyn_cast_or_null<::mlir::IntegerAttr>(propStorage); } void setClamp(const ::mlir::IntegerAttr &propValue) { this->clamp = propValue; } bool operator==(const Properties &rhs) const { return rhs.clamp == this->clamp && true; } bool operator!=(const Properties &rhs) const { return !(*this == rhs); } }; protected: ::mlir::DictionaryAttr odsAttrs; ::std::optional<::mlir::OperationName> odsOpName; Properties properties; ::mlir::RegionRange odsRegions; public: fdot2_f32_bf16GenericAdaptorBase(::mlir::DictionaryAttr attrs, const Properties &properties, ::mlir::RegionRange regions = {}) : odsAttrs(attrs), properties(properties), odsRegions(regions) { if (odsAttrs) odsOpName.emplace("rocdl.fdot2.f32.bf16", odsAttrs.getContext()); } fdot2_f32_bf16GenericAdaptorBase(fdot2_f32_bf16 op); std::pair getODSOperandIndexAndLength(unsigned index, unsigned odsOperandsSize) { return {index, 1}; } const Properties &getProperties() { return properties; } ::mlir::DictionaryAttr getAttributes() { return odsAttrs; } ::mlir::IntegerAttr getClampAttr(); bool getClamp(); }; } // namespace detail template class fdot2_f32_bf16GenericAdaptor : public detail::fdot2_f32_bf16GenericAdaptorBase { using ValueT = ::llvm::detail::ValueOfRange; using Base = detail::fdot2_f32_bf16GenericAdaptorBase; static constexpr int odsIndex_a = 0; static constexpr int odsIndex_b = 1; static constexpr int odsIndex_c = 2; public: fdot2_f32_bf16GenericAdaptor(RangeT values, ::mlir::DictionaryAttr attrs, const Properties &properties, ::mlir::RegionRange regions = {}) : Base(attrs, properties, regions), odsOperands(values) {} fdot2_f32_bf16GenericAdaptor(RangeT values, ::mlir::DictionaryAttr attrs, ::mlir::PropertyRef properties, ::mlir::RegionRange regions = {}) : fdot2_f32_bf16GenericAdaptor(values, attrs, (properties ? *properties.as() : Properties{}), regions) {} fdot2_f32_bf16GenericAdaptor(RangeT values, ::mlir::DictionaryAttr attrs = nullptr) : fdot2_f32_bf16GenericAdaptor(values, attrs, Properties{}, {}) {} fdot2_f32_bf16GenericAdaptor(RangeT values, const fdot2_f32_bf16GenericAdaptorBase &base) : Base(base), odsOperands(values) {} template >> fdot2_f32_bf16GenericAdaptor(RangeT values, LateInst op) : Base(op), odsOperands(values) {} std::pair getODSOperandIndexAndLength(unsigned index) { return Base::getODSOperandIndexAndLength(index, odsOperands.size()); } RangeT getODSOperands(unsigned index) { auto valueRange = getODSOperandIndexAndLength(index); return {std::next(odsOperands.begin(), valueRange.first), std::next(odsOperands.begin(), valueRange.first + valueRange.second)}; } ValueT getA() { return (*getODSOperands(0).begin()); } ValueT getB() { return (*getODSOperands(1).begin()); } ValueT getC() { return (*getODSOperands(2).begin()); } RangeT getOperands() { return odsOperands; } private: RangeT odsOperands; }; class fdot2_f32_bf16Adaptor : public fdot2_f32_bf16GenericAdaptor<::mlir::ValueRange> { public: using fdot2_f32_bf16GenericAdaptor::fdot2_f32_bf16GenericAdaptor; fdot2_f32_bf16Adaptor(fdot2_f32_bf16 op); ::llvm::LogicalResult verify(::mlir::Location loc); }; class fdot2_f32_bf16 : public ::mlir::Op::Impl, ::mlir::OpTrait::ZeroSuccessors, ::mlir::OpTrait::NOperands<3>::Impl, ::mlir::OpTrait::OpInvariants, ::mlir::BytecodeOpInterface::Trait, ::mlir::ConditionallySpeculatable::Trait, ::mlir::OpTrait::AlwaysSpeculatableImplTrait, ::mlir::MemoryEffectOpInterface::Trait> { public: using Op::Op; using Op::print; using Adaptor = fdot2_f32_bf16Adaptor; template using GenericAdaptor = fdot2_f32_bf16GenericAdaptor; using FoldAdaptor = GenericAdaptor<::llvm::ArrayRef<::mlir::Attribute>>; static constexpr int odsIndex_a = 0; static constexpr int odsIndex_b = 1; static constexpr int odsIndex_c = 2; using Properties = FoldAdaptor::Properties; static ::llvm::ArrayRef<::llvm::StringRef> getAttributeNames() { static ::llvm::StringRef attrNames[] = {::llvm::StringRef("clamp")}; return ::llvm::ArrayRef(attrNames); } ::mlir::StringAttr getClampAttrName() { return getAttributeNameForIndex(0); } static ::mlir::StringAttr getClampAttrName(::mlir::OperationName name) { return getAttributeNameForIndex(name, 0); } static constexpr ::llvm::StringLiteral getOperationName() { return ::llvm::StringLiteral("rocdl.fdot2.f32.bf16"); } std::pair getODSOperandIndexAndLength(unsigned index) { return {index, 1}; } ::mlir::Operation::operand_range getODSOperands(unsigned index) { auto valueRange = getODSOperandIndexAndLength(index); return {std::next(getOperation()->operand_begin(), valueRange.first), std::next(getOperation()->operand_begin(), valueRange.first + valueRange.second)}; } ::mlir::TypedValue<::mlir::VectorType> getA() { return ::llvm::cast<::mlir::TypedValue<::mlir::VectorType>>(*getODSOperands(0).begin()); } ::mlir::TypedValue<::mlir::VectorType> getB() { return ::llvm::cast<::mlir::TypedValue<::mlir::VectorType>>(*getODSOperands(1).begin()); } ::mlir::TypedValue<::mlir::Type> getC() { return ::llvm::cast<::mlir::TypedValue<::mlir::Type>>(*getODSOperands(2).begin()); } ::mlir::OpOperand &getAMutable() { auto range = getODSOperandIndexAndLength(0); return getOperation()->getOpOperand(range.first); } ::mlir::OpOperand &getBMutable() { auto range = getODSOperandIndexAndLength(1); return getOperation()->getOpOperand(range.first); } ::mlir::OpOperand &getCMutable() { auto range = getODSOperandIndexAndLength(2); return getOperation()->getOpOperand(range.first); } std::pair getODSResultIndexAndLength(unsigned index) { return {index, 1}; } ::mlir::Operation::result_range getODSResults(unsigned index) { auto valueRange = getODSResultIndexAndLength(index); return {std::next(getOperation()->result_begin(), valueRange.first), std::next(getOperation()->result_begin(), valueRange.first + valueRange.second)}; } ::mlir::TypedValue<::mlir::Type> getRes() { return ::llvm::cast<::mlir::TypedValue<::mlir::Type>>(*getODSResults(0).begin()); } static ::llvm::LogicalResult setPropertiesFromAttr(Properties &prop, ::mlir::Attribute attr, ::llvm::function_ref<::mlir::InFlightDiagnostic()> emitError); static ::mlir::Attribute getPropertiesAsAttr(::mlir::MLIRContext *ctx, const Properties &prop); static llvm::hash_code computePropertiesHash(const Properties &prop); static std::optional getInherentAttr(::mlir::MLIRContext *ctx, const Properties &prop, llvm::StringRef name); static void setInherentAttr(Properties &prop, llvm::StringRef name, mlir::Attribute value); static void populateInherentAttrs(::mlir::MLIRContext *ctx, const Properties &prop, ::mlir::NamedAttrList &attrs); static ::llvm::LogicalResult verifyInherentAttrs(::mlir::OperationName opName, ::mlir::NamedAttrList &attrs, llvm::function_ref<::mlir::InFlightDiagnostic()> emitError); static ::llvm::LogicalResult readProperties(::mlir::DialectBytecodeReader &reader, ::mlir::OperationState &state); void writeProperties(::mlir::DialectBytecodeWriter &writer); ::mlir::IntegerAttr getClampAttr() { return ::llvm::dyn_cast_or_null<::mlir::IntegerAttr>(getProperties().clamp); } bool getClamp(); void setClampAttr(::mlir::IntegerAttr attr) { getProperties().clamp = attr; } void setClamp(bool attrValue); static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::Type res, ::mlir::Value a, ::mlir::Value b, ::mlir::Value c, ::mlir::IntegerAttr clamp); static fdot2_f32_bf16 create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::Type res, ::mlir::Value a, ::mlir::Value b, ::mlir::Value c, ::mlir::IntegerAttr clamp); static fdot2_f32_bf16 create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::Type res, ::mlir::Value a, ::mlir::Value b, ::mlir::Value c, ::mlir::IntegerAttr clamp); static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::Value a, ::mlir::Value b, ::mlir::Value c, ::mlir::IntegerAttr clamp); static fdot2_f32_bf16 create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::Value a, ::mlir::Value b, ::mlir::Value c, ::mlir::IntegerAttr clamp); static fdot2_f32_bf16 create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::Value a, ::mlir::Value b, ::mlir::Value c, ::mlir::IntegerAttr clamp); static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::Type res, ::mlir::Value a, ::mlir::Value b, ::mlir::Value c, bool clamp = 0); static fdot2_f32_bf16 create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::Type res, ::mlir::Value a, ::mlir::Value b, ::mlir::Value c, bool clamp = 0); static fdot2_f32_bf16 create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::Type res, ::mlir::Value a, ::mlir::Value b, ::mlir::Value c, bool clamp = 0); static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::Value a, ::mlir::Value b, ::mlir::Value c, bool clamp = 0); static fdot2_f32_bf16 create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::Value a, ::mlir::Value b, ::mlir::Value c, bool clamp = 0); static fdot2_f32_bf16 create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::Value a, ::mlir::Value b, ::mlir::Value c, bool clamp = 0); static void build(::mlir::OpBuilder &, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, ::llvm::ArrayRef<::mlir::NamedAttribute> attributes = {}); static fdot2_f32_bf16 create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, ::llvm::ArrayRef<::mlir::NamedAttribute> attributes = {}); static fdot2_f32_bf16 create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, ::llvm::ArrayRef<::mlir::NamedAttribute> attributes = {}); static void build(::mlir::OpBuilder &, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, const Properties &properties, ::llvm::ArrayRef<::mlir::NamedAttribute> discardableAttributes = {}); static fdot2_f32_bf16 create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, const Properties &properties, ::llvm::ArrayRef<::mlir::NamedAttribute> discardableAttributes = {}); static fdot2_f32_bf16 create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, const Properties &properties, ::llvm::ArrayRef<::mlir::NamedAttribute> discardableAttributes = {}); static void populateDefaultProperties(::mlir::OperationName opName, Properties &properties); ::llvm::LogicalResult verifyInvariantsImpl(); ::llvm::LogicalResult verifyInvariants(); static ::mlir::ParseResult parse(::mlir::OpAsmParser &parser, ::mlir::OperationState &result); void print(::mlir::OpAsmPrinter &_odsPrinter); void getEffects(::llvm::SmallVectorImpl<::mlir::SideEffects::EffectInstance<::mlir::MemoryEffects::Effect>> &effects); private: ::mlir::StringAttr getAttributeNameForIndex(unsigned index) { return getAttributeNameForIndex((*this)->getName(), index); } static ::mlir::StringAttr getAttributeNameForIndex(::mlir::OperationName name, unsigned index) { assert(index < 1 && "invalid attribute index"); assert(name.getStringRef() == getOperationName() && "invalid operation name"); assert(name.isRegistered() && "Operation isn't registered, missing a " "dependent dialect loading?"); return name.getAttributeNames()[index]; } public: }; } // namespace mlir::ROCDL MLIR_DECLARE_EXPLICIT_TYPE_ID(::mlir::ROCDL::fdot2_f32_bf16) MLIR_DECLARE_EXPLICIT_TYPE_ID(::mlir::ROCDL::detail::fdot2_f32_bf16GenericAdaptorBase::Properties) namespace mlir::ROCDL { //===----------------------------------------------------------------------===// // ::mlir::ROCDL::mfma_f32_16x16x16bf16_1k declarations //===----------------------------------------------------------------------===// namespace detail { class mfma_f32_16x16x16bf16_1kGenericAdaptorBase { public: struct Properties { using abidTy = ::mlir::IntegerAttr; abidTy abid; auto getAbid() const { auto &propStorage = this->abid; return ::llvm::cast<::mlir::IntegerAttr>(propStorage); } void setAbid(const ::mlir::IntegerAttr &propValue) { this->abid = propValue; } using blgpTy = ::mlir::ROCDL::MFMAPermBAttr; blgpTy blgp; auto getBlgp() const { auto &propStorage = this->blgp; return ::llvm::cast<::mlir::ROCDL::MFMAPermBAttr>(propStorage); } void setBlgp(const ::mlir::ROCDL::MFMAPermBAttr &propValue) { this->blgp = propValue; } using cbszTy = ::mlir::IntegerAttr; cbszTy cbsz; auto getCbsz() const { auto &propStorage = this->cbsz; return ::llvm::cast<::mlir::IntegerAttr>(propStorage); } void setCbsz(const ::mlir::IntegerAttr &propValue) { this->cbsz = propValue; } bool operator==(const Properties &rhs) const { return rhs.abid == this->abid && rhs.blgp == this->blgp && rhs.cbsz == this->cbsz && true; } bool operator!=(const Properties &rhs) const { return !(*this == rhs); } }; protected: ::mlir::DictionaryAttr odsAttrs; ::std::optional<::mlir::OperationName> odsOpName; Properties properties; ::mlir::RegionRange odsRegions; public: mfma_f32_16x16x16bf16_1kGenericAdaptorBase(::mlir::DictionaryAttr attrs, const Properties &properties, ::mlir::RegionRange regions = {}) : odsAttrs(attrs), properties(properties), odsRegions(regions) { if (odsAttrs) odsOpName.emplace("rocdl.mfma.f32.16x16x16bf16.1k", odsAttrs.getContext()); } mfma_f32_16x16x16bf16_1kGenericAdaptorBase(mfma_f32_16x16x16bf16_1k op); std::pair getODSOperandIndexAndLength(unsigned index, unsigned odsOperandsSize) { return {index, 1}; } const Properties &getProperties() { return properties; } ::mlir::DictionaryAttr getAttributes() { return odsAttrs; } ::mlir::IntegerAttr getCbszAttr() { auto attr = ::llvm::cast<::mlir::IntegerAttr>(getProperties().cbsz); return attr; } uint32_t getCbsz(); ::mlir::IntegerAttr getAbidAttr() { auto attr = ::llvm::cast<::mlir::IntegerAttr>(getProperties().abid); return attr; } uint32_t getAbid(); ::mlir::ROCDL::MFMAPermBAttr getBlgpAttr() { auto attr = ::llvm::cast<::mlir::ROCDL::MFMAPermBAttr>(getProperties().blgp); return attr; } ::mlir::ROCDL::MFMAPermB getBlgp(); }; } // namespace detail template class mfma_f32_16x16x16bf16_1kGenericAdaptor : public detail::mfma_f32_16x16x16bf16_1kGenericAdaptorBase { using ValueT = ::llvm::detail::ValueOfRange; using Base = detail::mfma_f32_16x16x16bf16_1kGenericAdaptorBase; static constexpr int odsIndex_a = 0; static constexpr int odsIndex_b = 1; static constexpr int odsIndex_c = 2; public: mfma_f32_16x16x16bf16_1kGenericAdaptor(RangeT values, ::mlir::DictionaryAttr attrs, const Properties &properties, ::mlir::RegionRange regions = {}) : Base(attrs, properties, regions), odsOperands(values) {} mfma_f32_16x16x16bf16_1kGenericAdaptor(RangeT values, ::mlir::DictionaryAttr attrs, ::mlir::PropertyRef properties, ::mlir::RegionRange regions = {}) : mfma_f32_16x16x16bf16_1kGenericAdaptor(values, attrs, (properties ? *properties.as() : Properties{}), regions) {} mfma_f32_16x16x16bf16_1kGenericAdaptor(RangeT values, ::mlir::DictionaryAttr attrs = nullptr) : mfma_f32_16x16x16bf16_1kGenericAdaptor(values, attrs, Properties{}, {}) {} mfma_f32_16x16x16bf16_1kGenericAdaptor(RangeT values, const mfma_f32_16x16x16bf16_1kGenericAdaptorBase &base) : Base(base), odsOperands(values) {} template >> mfma_f32_16x16x16bf16_1kGenericAdaptor(RangeT values, LateInst op) : Base(op), odsOperands(values) {} std::pair getODSOperandIndexAndLength(unsigned index) { return Base::getODSOperandIndexAndLength(index, odsOperands.size()); } RangeT getODSOperands(unsigned index) { auto valueRange = getODSOperandIndexAndLength(index); return {std::next(odsOperands.begin(), valueRange.first), std::next(odsOperands.begin(), valueRange.first + valueRange.second)}; } ValueT getA() { return (*getODSOperands(0).begin()); } ValueT getB() { return (*getODSOperands(1).begin()); } ValueT getC() { return (*getODSOperands(2).begin()); } RangeT getOperands() { return odsOperands; } private: RangeT odsOperands; }; class mfma_f32_16x16x16bf16_1kAdaptor : public mfma_f32_16x16x16bf16_1kGenericAdaptor<::mlir::ValueRange> { public: using mfma_f32_16x16x16bf16_1kGenericAdaptor::mfma_f32_16x16x16bf16_1kGenericAdaptor; mfma_f32_16x16x16bf16_1kAdaptor(mfma_f32_16x16x16bf16_1k op); ::llvm::LogicalResult verify(::mlir::Location loc); }; class mfma_f32_16x16x16bf16_1k : public ::mlir::Op::Impl, ::mlir::OpTrait::ZeroSuccessors, ::mlir::OpTrait::NOperands<3>::Impl, ::mlir::OpTrait::OpInvariants, ::mlir::BytecodeOpInterface::Trait> { public: using Op::Op; using Op::print; using Adaptor = mfma_f32_16x16x16bf16_1kAdaptor; template using GenericAdaptor = mfma_f32_16x16x16bf16_1kGenericAdaptor; using FoldAdaptor = GenericAdaptor<::llvm::ArrayRef<::mlir::Attribute>>; static constexpr int odsIndex_a = 0; static constexpr int odsIndex_b = 1; static constexpr int odsIndex_c = 2; using Properties = FoldAdaptor::Properties; static ::llvm::ArrayRef<::llvm::StringRef> getAttributeNames() { static ::llvm::StringRef attrNames[] = {::llvm::StringRef("abid"), ::llvm::StringRef("blgp"), ::llvm::StringRef("cbsz")}; return ::llvm::ArrayRef(attrNames); } ::mlir::StringAttr getAbidAttrName() { return getAttributeNameForIndex(0); } static ::mlir::StringAttr getAbidAttrName(::mlir::OperationName name) { return getAttributeNameForIndex(name, 0); } ::mlir::StringAttr getBlgpAttrName() { return getAttributeNameForIndex(1); } static ::mlir::StringAttr getBlgpAttrName(::mlir::OperationName name) { return getAttributeNameForIndex(name, 1); } ::mlir::StringAttr getCbszAttrName() { return getAttributeNameForIndex(2); } static ::mlir::StringAttr getCbszAttrName(::mlir::OperationName name) { return getAttributeNameForIndex(name, 2); } static constexpr ::llvm::StringLiteral getOperationName() { return ::llvm::StringLiteral("rocdl.mfma.f32.16x16x16bf16.1k"); } std::pair getODSOperandIndexAndLength(unsigned index) { return {index, 1}; } ::mlir::Operation::operand_range getODSOperands(unsigned index) { auto valueRange = getODSOperandIndexAndLength(index); return {std::next(getOperation()->operand_begin(), valueRange.first), std::next(getOperation()->operand_begin(), valueRange.first + valueRange.second)}; } ::mlir::TypedValue<::mlir::VectorType> getA() { return ::llvm::cast<::mlir::TypedValue<::mlir::VectorType>>(*getODSOperands(0).begin()); } ::mlir::TypedValue<::mlir::VectorType> getB() { return ::llvm::cast<::mlir::TypedValue<::mlir::VectorType>>(*getODSOperands(1).begin()); } ::mlir::TypedValue<::mlir::VectorType> getC() { return ::llvm::cast<::mlir::TypedValue<::mlir::VectorType>>(*getODSOperands(2).begin()); } ::mlir::OpOperand &getAMutable() { auto range = getODSOperandIndexAndLength(0); return getOperation()->getOpOperand(range.first); } ::mlir::OpOperand &getBMutable() { auto range = getODSOperandIndexAndLength(1); return getOperation()->getOpOperand(range.first); } ::mlir::OpOperand &getCMutable() { auto range = getODSOperandIndexAndLength(2); return getOperation()->getOpOperand(range.first); } std::pair getODSResultIndexAndLength(unsigned index) { return {index, 1}; } ::mlir::Operation::result_range getODSResults(unsigned index) { auto valueRange = getODSResultIndexAndLength(index); return {std::next(getOperation()->result_begin(), valueRange.first), std::next(getOperation()->result_begin(), valueRange.first + valueRange.second)}; } ::mlir::TypedValue<::mlir::VectorType> getRes() { return ::llvm::cast<::mlir::TypedValue<::mlir::VectorType>>(*getODSResults(0).begin()); } static ::llvm::LogicalResult setPropertiesFromAttr(Properties &prop, ::mlir::Attribute attr, ::llvm::function_ref<::mlir::InFlightDiagnostic()> emitError); static ::mlir::Attribute getPropertiesAsAttr(::mlir::MLIRContext *ctx, const Properties &prop); static llvm::hash_code computePropertiesHash(const Properties &prop); static std::optional getInherentAttr(::mlir::MLIRContext *ctx, const Properties &prop, llvm::StringRef name); static void setInherentAttr(Properties &prop, llvm::StringRef name, mlir::Attribute value); static void populateInherentAttrs(::mlir::MLIRContext *ctx, const Properties &prop, ::mlir::NamedAttrList &attrs); static ::llvm::LogicalResult verifyInherentAttrs(::mlir::OperationName opName, ::mlir::NamedAttrList &attrs, llvm::function_ref<::mlir::InFlightDiagnostic()> emitError); static ::llvm::LogicalResult readProperties(::mlir::DialectBytecodeReader &reader, ::mlir::OperationState &state); void writeProperties(::mlir::DialectBytecodeWriter &writer); ::mlir::IntegerAttr getCbszAttr() { return ::llvm::cast<::mlir::IntegerAttr>(getProperties().cbsz); } uint32_t getCbsz(); ::mlir::IntegerAttr getAbidAttr() { return ::llvm::cast<::mlir::IntegerAttr>(getProperties().abid); } uint32_t getAbid(); ::mlir::ROCDL::MFMAPermBAttr getBlgpAttr() { return ::llvm::cast<::mlir::ROCDL::MFMAPermBAttr>(getProperties().blgp); } ::mlir::ROCDL::MFMAPermB getBlgp(); void setCbszAttr(::mlir::IntegerAttr attr) { getProperties().cbsz = attr; } void setCbsz(uint32_t attrValue); void setAbidAttr(::mlir::IntegerAttr attr) { getProperties().abid = attr; } void setAbid(uint32_t attrValue); void setBlgpAttr(::mlir::ROCDL::MFMAPermBAttr attr) { getProperties().blgp = attr; } void setBlgp(::mlir::ROCDL::MFMAPermB attrValue); static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::Type res, ::mlir::Value a, ::mlir::Value b, ::mlir::Value c, ::mlir::IntegerAttr cbsz, ::mlir::IntegerAttr abid, ::mlir::ROCDL::MFMAPermBAttr blgp); static mfma_f32_16x16x16bf16_1k create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::Type res, ::mlir::Value a, ::mlir::Value b, ::mlir::Value c, ::mlir::IntegerAttr cbsz, ::mlir::IntegerAttr abid, ::mlir::ROCDL::MFMAPermBAttr blgp); static mfma_f32_16x16x16bf16_1k create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::Type res, ::mlir::Value a, ::mlir::Value b, ::mlir::Value c, ::mlir::IntegerAttr cbsz, ::mlir::IntegerAttr abid, ::mlir::ROCDL::MFMAPermBAttr blgp); static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::Value a, ::mlir::Value b, ::mlir::Value c, ::mlir::IntegerAttr cbsz, ::mlir::IntegerAttr abid, ::mlir::ROCDL::MFMAPermBAttr blgp); static mfma_f32_16x16x16bf16_1k create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::Value a, ::mlir::Value b, ::mlir::Value c, ::mlir::IntegerAttr cbsz, ::mlir::IntegerAttr abid, ::mlir::ROCDL::MFMAPermBAttr blgp); static mfma_f32_16x16x16bf16_1k create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::Value a, ::mlir::Value b, ::mlir::Value c, ::mlir::IntegerAttr cbsz, ::mlir::IntegerAttr abid, ::mlir::ROCDL::MFMAPermBAttr blgp); static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::Type res, ::mlir::Value a, ::mlir::Value b, ::mlir::Value c, uint32_t cbsz, uint32_t abid, ::mlir::ROCDL::MFMAPermB blgp); static mfma_f32_16x16x16bf16_1k create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::Type res, ::mlir::Value a, ::mlir::Value b, ::mlir::Value c, uint32_t cbsz, uint32_t abid, ::mlir::ROCDL::MFMAPermB blgp); static mfma_f32_16x16x16bf16_1k create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::Type res, ::mlir::Value a, ::mlir::Value b, ::mlir::Value c, uint32_t cbsz, uint32_t abid, ::mlir::ROCDL::MFMAPermB blgp); static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::Value a, ::mlir::Value b, ::mlir::Value c, uint32_t cbsz, uint32_t abid, ::mlir::ROCDL::MFMAPermB blgp); static mfma_f32_16x16x16bf16_1k create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::Value a, ::mlir::Value b, ::mlir::Value c, uint32_t cbsz, uint32_t abid, ::mlir::ROCDL::MFMAPermB blgp); static mfma_f32_16x16x16bf16_1k create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::Value a, ::mlir::Value b, ::mlir::Value c, uint32_t cbsz, uint32_t abid, ::mlir::ROCDL::MFMAPermB blgp); static void build(::mlir::OpBuilder &, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, ::llvm::ArrayRef<::mlir::NamedAttribute> attributes = {}); static mfma_f32_16x16x16bf16_1k create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, ::llvm::ArrayRef<::mlir::NamedAttribute> attributes = {}); static mfma_f32_16x16x16bf16_1k create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, ::llvm::ArrayRef<::mlir::NamedAttribute> attributes = {}); static void build(::mlir::OpBuilder &, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, const Properties &properties, ::llvm::ArrayRef<::mlir::NamedAttribute> discardableAttributes = {}); static mfma_f32_16x16x16bf16_1k create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, const Properties &properties, ::llvm::ArrayRef<::mlir::NamedAttribute> discardableAttributes = {}); static mfma_f32_16x16x16bf16_1k create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, const Properties &properties, ::llvm::ArrayRef<::mlir::NamedAttribute> discardableAttributes = {}); ::llvm::LogicalResult verifyInvariantsImpl(); ::llvm::LogicalResult verifyInvariants(); static ::mlir::ParseResult parse(::mlir::OpAsmParser &parser, ::mlir::OperationState &result); void print(::mlir::OpAsmPrinter &_odsPrinter); private: ::mlir::StringAttr getAttributeNameForIndex(unsigned index) { return getAttributeNameForIndex((*this)->getName(), index); } static ::mlir::StringAttr getAttributeNameForIndex(::mlir::OperationName name, unsigned index) { assert(index < 3 && "invalid attribute index"); assert(name.getStringRef() == getOperationName() && "invalid operation name"); assert(name.isRegistered() && "Operation isn't registered, missing a " "dependent dialect loading?"); return name.getAttributeNames()[index]; } public: }; } // namespace mlir::ROCDL MLIR_DECLARE_EXPLICIT_TYPE_ID(::mlir::ROCDL::mfma_f32_16x16x16bf16_1k) MLIR_DECLARE_EXPLICIT_TYPE_ID(::mlir::ROCDL::detail::mfma_f32_16x16x16bf16_1kGenericAdaptorBase::Properties) namespace mlir::ROCDL { //===----------------------------------------------------------------------===// // ::mlir::ROCDL::mfma_f32_16x16x16f16 declarations //===----------------------------------------------------------------------===// namespace detail { class mfma_f32_16x16x16f16GenericAdaptorBase { public: struct Properties { using abidTy = ::mlir::IntegerAttr; abidTy abid; auto getAbid() const { auto &propStorage = this->abid; return ::llvm::cast<::mlir::IntegerAttr>(propStorage); } void setAbid(const ::mlir::IntegerAttr &propValue) { this->abid = propValue; } using blgpTy = ::mlir::ROCDL::MFMAPermBAttr; blgpTy blgp; auto getBlgp() const { auto &propStorage = this->blgp; return ::llvm::cast<::mlir::ROCDL::MFMAPermBAttr>(propStorage); } void setBlgp(const ::mlir::ROCDL::MFMAPermBAttr &propValue) { this->blgp = propValue; } using cbszTy = ::mlir::IntegerAttr; cbszTy cbsz; auto getCbsz() const { auto &propStorage = this->cbsz; return ::llvm::cast<::mlir::IntegerAttr>(propStorage); } void setCbsz(const ::mlir::IntegerAttr &propValue) { this->cbsz = propValue; } bool operator==(const Properties &rhs) const { return rhs.abid == this->abid && rhs.blgp == this->blgp && rhs.cbsz == this->cbsz && true; } bool operator!=(const Properties &rhs) const { return !(*this == rhs); } }; protected: ::mlir::DictionaryAttr odsAttrs; ::std::optional<::mlir::OperationName> odsOpName; Properties properties; ::mlir::RegionRange odsRegions; public: mfma_f32_16x16x16f16GenericAdaptorBase(::mlir::DictionaryAttr attrs, const Properties &properties, ::mlir::RegionRange regions = {}) : odsAttrs(attrs), properties(properties), odsRegions(regions) { if (odsAttrs) odsOpName.emplace("rocdl.mfma.f32.16x16x16f16", odsAttrs.getContext()); } mfma_f32_16x16x16f16GenericAdaptorBase(mfma_f32_16x16x16f16 op); std::pair getODSOperandIndexAndLength(unsigned index, unsigned odsOperandsSize) { return {index, 1}; } const Properties &getProperties() { return properties; } ::mlir::DictionaryAttr getAttributes() { return odsAttrs; } ::mlir::IntegerAttr getCbszAttr() { auto attr = ::llvm::cast<::mlir::IntegerAttr>(getProperties().cbsz); return attr; } uint32_t getCbsz(); ::mlir::IntegerAttr getAbidAttr() { auto attr = ::llvm::cast<::mlir::IntegerAttr>(getProperties().abid); return attr; } uint32_t getAbid(); ::mlir::ROCDL::MFMAPermBAttr getBlgpAttr() { auto attr = ::llvm::cast<::mlir::ROCDL::MFMAPermBAttr>(getProperties().blgp); return attr; } ::mlir::ROCDL::MFMAPermB getBlgp(); }; } // namespace detail template class mfma_f32_16x16x16f16GenericAdaptor : public detail::mfma_f32_16x16x16f16GenericAdaptorBase { using ValueT = ::llvm::detail::ValueOfRange; using Base = detail::mfma_f32_16x16x16f16GenericAdaptorBase; static constexpr int odsIndex_a = 0; static constexpr int odsIndex_b = 1; static constexpr int odsIndex_c = 2; public: mfma_f32_16x16x16f16GenericAdaptor(RangeT values, ::mlir::DictionaryAttr attrs, const Properties &properties, ::mlir::RegionRange regions = {}) : Base(attrs, properties, regions), odsOperands(values) {} mfma_f32_16x16x16f16GenericAdaptor(RangeT values, ::mlir::DictionaryAttr attrs, ::mlir::PropertyRef properties, ::mlir::RegionRange regions = {}) : mfma_f32_16x16x16f16GenericAdaptor(values, attrs, (properties ? *properties.as() : Properties{}), regions) {} mfma_f32_16x16x16f16GenericAdaptor(RangeT values, ::mlir::DictionaryAttr attrs = nullptr) : mfma_f32_16x16x16f16GenericAdaptor(values, attrs, Properties{}, {}) {} mfma_f32_16x16x16f16GenericAdaptor(RangeT values, const mfma_f32_16x16x16f16GenericAdaptorBase &base) : Base(base), odsOperands(values) {} template >> mfma_f32_16x16x16f16GenericAdaptor(RangeT values, LateInst op) : Base(op), odsOperands(values) {} std::pair getODSOperandIndexAndLength(unsigned index) { return Base::getODSOperandIndexAndLength(index, odsOperands.size()); } RangeT getODSOperands(unsigned index) { auto valueRange = getODSOperandIndexAndLength(index); return {std::next(odsOperands.begin(), valueRange.first), std::next(odsOperands.begin(), valueRange.first + valueRange.second)}; } ValueT getA() { return (*getODSOperands(0).begin()); } ValueT getB() { return (*getODSOperands(1).begin()); } ValueT getC() { return (*getODSOperands(2).begin()); } RangeT getOperands() { return odsOperands; } private: RangeT odsOperands; }; class mfma_f32_16x16x16f16Adaptor : public mfma_f32_16x16x16f16GenericAdaptor<::mlir::ValueRange> { public: using mfma_f32_16x16x16f16GenericAdaptor::mfma_f32_16x16x16f16GenericAdaptor; mfma_f32_16x16x16f16Adaptor(mfma_f32_16x16x16f16 op); ::llvm::LogicalResult verify(::mlir::Location loc); }; class mfma_f32_16x16x16f16 : public ::mlir::Op::Impl, ::mlir::OpTrait::ZeroSuccessors, ::mlir::OpTrait::NOperands<3>::Impl, ::mlir::OpTrait::OpInvariants, ::mlir::BytecodeOpInterface::Trait> { public: using Op::Op; using Op::print; using Adaptor = mfma_f32_16x16x16f16Adaptor; template using GenericAdaptor = mfma_f32_16x16x16f16GenericAdaptor; using FoldAdaptor = GenericAdaptor<::llvm::ArrayRef<::mlir::Attribute>>; static constexpr int odsIndex_a = 0; static constexpr int odsIndex_b = 1; static constexpr int odsIndex_c = 2; using Properties = FoldAdaptor::Properties; static ::llvm::ArrayRef<::llvm::StringRef> getAttributeNames() { static ::llvm::StringRef attrNames[] = {::llvm::StringRef("abid"), ::llvm::StringRef("blgp"), ::llvm::StringRef("cbsz")}; return ::llvm::ArrayRef(attrNames); } ::mlir::StringAttr getAbidAttrName() { return getAttributeNameForIndex(0); } static ::mlir::StringAttr getAbidAttrName(::mlir::OperationName name) { return getAttributeNameForIndex(name, 0); } ::mlir::StringAttr getBlgpAttrName() { return getAttributeNameForIndex(1); } static ::mlir::StringAttr getBlgpAttrName(::mlir::OperationName name) { return getAttributeNameForIndex(name, 1); } ::mlir::StringAttr getCbszAttrName() { return getAttributeNameForIndex(2); } static ::mlir::StringAttr getCbszAttrName(::mlir::OperationName name) { return getAttributeNameForIndex(name, 2); } static constexpr ::llvm::StringLiteral getOperationName() { return ::llvm::StringLiteral("rocdl.mfma.f32.16x16x16f16"); } std::pair getODSOperandIndexAndLength(unsigned index) { return {index, 1}; } ::mlir::Operation::operand_range getODSOperands(unsigned index) { auto valueRange = getODSOperandIndexAndLength(index); return {std::next(getOperation()->operand_begin(), valueRange.first), std::next(getOperation()->operand_begin(), valueRange.first + valueRange.second)}; } ::mlir::TypedValue<::mlir::VectorType> getA() { return ::llvm::cast<::mlir::TypedValue<::mlir::VectorType>>(*getODSOperands(0).begin()); } ::mlir::TypedValue<::mlir::VectorType> getB() { return ::llvm::cast<::mlir::TypedValue<::mlir::VectorType>>(*getODSOperands(1).begin()); } ::mlir::TypedValue<::mlir::VectorType> getC() { return ::llvm::cast<::mlir::TypedValue<::mlir::VectorType>>(*getODSOperands(2).begin()); } ::mlir::OpOperand &getAMutable() { auto range = getODSOperandIndexAndLength(0); return getOperation()->getOpOperand(range.first); } ::mlir::OpOperand &getBMutable() { auto range = getODSOperandIndexAndLength(1); return getOperation()->getOpOperand(range.first); } ::mlir::OpOperand &getCMutable() { auto range = getODSOperandIndexAndLength(2); return getOperation()->getOpOperand(range.first); } std::pair getODSResultIndexAndLength(unsigned index) { return {index, 1}; } ::mlir::Operation::result_range getODSResults(unsigned index) { auto valueRange = getODSResultIndexAndLength(index); return {std::next(getOperation()->result_begin(), valueRange.first), std::next(getOperation()->result_begin(), valueRange.first + valueRange.second)}; } ::mlir::TypedValue<::mlir::VectorType> getRes() { return ::llvm::cast<::mlir::TypedValue<::mlir::VectorType>>(*getODSResults(0).begin()); } static ::llvm::LogicalResult setPropertiesFromAttr(Properties &prop, ::mlir::Attribute attr, ::llvm::function_ref<::mlir::InFlightDiagnostic()> emitError); static ::mlir::Attribute getPropertiesAsAttr(::mlir::MLIRContext *ctx, const Properties &prop); static llvm::hash_code computePropertiesHash(const Properties &prop); static std::optional getInherentAttr(::mlir::MLIRContext *ctx, const Properties &prop, llvm::StringRef name); static void setInherentAttr(Properties &prop, llvm::StringRef name, mlir::Attribute value); static void populateInherentAttrs(::mlir::MLIRContext *ctx, const Properties &prop, ::mlir::NamedAttrList &attrs); static ::llvm::LogicalResult verifyInherentAttrs(::mlir::OperationName opName, ::mlir::NamedAttrList &attrs, llvm::function_ref<::mlir::InFlightDiagnostic()> emitError); static ::llvm::LogicalResult readProperties(::mlir::DialectBytecodeReader &reader, ::mlir::OperationState &state); void writeProperties(::mlir::DialectBytecodeWriter &writer); ::mlir::IntegerAttr getCbszAttr() { return ::llvm::cast<::mlir::IntegerAttr>(getProperties().cbsz); } uint32_t getCbsz(); ::mlir::IntegerAttr getAbidAttr() { return ::llvm::cast<::mlir::IntegerAttr>(getProperties().abid); } uint32_t getAbid(); ::mlir::ROCDL::MFMAPermBAttr getBlgpAttr() { return ::llvm::cast<::mlir::ROCDL::MFMAPermBAttr>(getProperties().blgp); } ::mlir::ROCDL::MFMAPermB getBlgp(); void setCbszAttr(::mlir::IntegerAttr attr) { getProperties().cbsz = attr; } void setCbsz(uint32_t attrValue); void setAbidAttr(::mlir::IntegerAttr attr) { getProperties().abid = attr; } void setAbid(uint32_t attrValue); void setBlgpAttr(::mlir::ROCDL::MFMAPermBAttr attr) { getProperties().blgp = attr; } void setBlgp(::mlir::ROCDL::MFMAPermB attrValue); static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::Type res, ::mlir::Value a, ::mlir::Value b, ::mlir::Value c, ::mlir::IntegerAttr cbsz, ::mlir::IntegerAttr abid, ::mlir::ROCDL::MFMAPermBAttr blgp); static mfma_f32_16x16x16f16 create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::Type res, ::mlir::Value a, ::mlir::Value b, ::mlir::Value c, ::mlir::IntegerAttr cbsz, ::mlir::IntegerAttr abid, ::mlir::ROCDL::MFMAPermBAttr blgp); static mfma_f32_16x16x16f16 create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::Type res, ::mlir::Value a, ::mlir::Value b, ::mlir::Value c, ::mlir::IntegerAttr cbsz, ::mlir::IntegerAttr abid, ::mlir::ROCDL::MFMAPermBAttr blgp); static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::Value a, ::mlir::Value b, ::mlir::Value c, ::mlir::IntegerAttr cbsz, ::mlir::IntegerAttr abid, ::mlir::ROCDL::MFMAPermBAttr blgp); static mfma_f32_16x16x16f16 create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::Value a, ::mlir::Value b, ::mlir::Value c, ::mlir::IntegerAttr cbsz, ::mlir::IntegerAttr abid, ::mlir::ROCDL::MFMAPermBAttr blgp); static mfma_f32_16x16x16f16 create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::Value a, ::mlir::Value b, ::mlir::Value c, ::mlir::IntegerAttr cbsz, ::mlir::IntegerAttr abid, ::mlir::ROCDL::MFMAPermBAttr blgp); static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::Type res, ::mlir::Value a, ::mlir::Value b, ::mlir::Value c, uint32_t cbsz, uint32_t abid, ::mlir::ROCDL::MFMAPermB blgp); static mfma_f32_16x16x16f16 create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::Type res, ::mlir::Value a, ::mlir::Value b, ::mlir::Value c, uint32_t cbsz, uint32_t abid, ::mlir::ROCDL::MFMAPermB blgp); static mfma_f32_16x16x16f16 create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::Type res, ::mlir::Value a, ::mlir::Value b, ::mlir::Value c, uint32_t cbsz, uint32_t abid, ::mlir::ROCDL::MFMAPermB blgp); static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::Value a, ::mlir::Value b, ::mlir::Value c, uint32_t cbsz, uint32_t abid, ::mlir::ROCDL::MFMAPermB blgp); static mfma_f32_16x16x16f16 create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::Value a, ::mlir::Value b, ::mlir::Value c, uint32_t cbsz, uint32_t abid, ::mlir::ROCDL::MFMAPermB blgp); static mfma_f32_16x16x16f16 create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::Value a, ::mlir::Value b, ::mlir::Value c, uint32_t cbsz, uint32_t abid, ::mlir::ROCDL::MFMAPermB blgp); static void build(::mlir::OpBuilder &, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, ::llvm::ArrayRef<::mlir::NamedAttribute> attributes = {}); static mfma_f32_16x16x16f16 create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, ::llvm::ArrayRef<::mlir::NamedAttribute> attributes = {}); static mfma_f32_16x16x16f16 create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, ::llvm::ArrayRef<::mlir::NamedAttribute> attributes = {}); static void build(::mlir::OpBuilder &, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, const Properties &properties, ::llvm::ArrayRef<::mlir::NamedAttribute> discardableAttributes = {}); static mfma_f32_16x16x16f16 create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, const Properties &properties, ::llvm::ArrayRef<::mlir::NamedAttribute> discardableAttributes = {}); static mfma_f32_16x16x16f16 create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, const Properties &properties, ::llvm::ArrayRef<::mlir::NamedAttribute> discardableAttributes = {}); ::llvm::LogicalResult verifyInvariantsImpl(); ::llvm::LogicalResult verifyInvariants(); static ::mlir::ParseResult parse(::mlir::OpAsmParser &parser, ::mlir::OperationState &result); void print(::mlir::OpAsmPrinter &_odsPrinter); private: ::mlir::StringAttr getAttributeNameForIndex(unsigned index) { return getAttributeNameForIndex((*this)->getName(), index); } static ::mlir::StringAttr getAttributeNameForIndex(::mlir::OperationName name, unsigned index) { assert(index < 3 && "invalid attribute index"); assert(name.getStringRef() == getOperationName() && "invalid operation name"); assert(name.isRegistered() && "Operation isn't registered, missing a " "dependent dialect loading?"); return name.getAttributeNames()[index]; } public: }; } // namespace mlir::ROCDL MLIR_DECLARE_EXPLICIT_TYPE_ID(::mlir::ROCDL::mfma_f32_16x16x16f16) MLIR_DECLARE_EXPLICIT_TYPE_ID(::mlir::ROCDL::detail::mfma_f32_16x16x16f16GenericAdaptorBase::Properties) namespace mlir::ROCDL { //===----------------------------------------------------------------------===// // ::mlir::ROCDL::mfma_f32_16x16x1f32 declarations //===----------------------------------------------------------------------===// namespace detail { class mfma_f32_16x16x1f32GenericAdaptorBase { public: struct Properties { using abidTy = ::mlir::IntegerAttr; abidTy abid; auto getAbid() const { auto &propStorage = this->abid; return ::llvm::cast<::mlir::IntegerAttr>(propStorage); } void setAbid(const ::mlir::IntegerAttr &propValue) { this->abid = propValue; } using blgpTy = ::mlir::ROCDL::MFMAPermBAttr; blgpTy blgp; auto getBlgp() const { auto &propStorage = this->blgp; return ::llvm::cast<::mlir::ROCDL::MFMAPermBAttr>(propStorage); } void setBlgp(const ::mlir::ROCDL::MFMAPermBAttr &propValue) { this->blgp = propValue; } using cbszTy = ::mlir::IntegerAttr; cbszTy cbsz; auto getCbsz() const { auto &propStorage = this->cbsz; return ::llvm::cast<::mlir::IntegerAttr>(propStorage); } void setCbsz(const ::mlir::IntegerAttr &propValue) { this->cbsz = propValue; } bool operator==(const Properties &rhs) const { return rhs.abid == this->abid && rhs.blgp == this->blgp && rhs.cbsz == this->cbsz && true; } bool operator!=(const Properties &rhs) const { return !(*this == rhs); } }; protected: ::mlir::DictionaryAttr odsAttrs; ::std::optional<::mlir::OperationName> odsOpName; Properties properties; ::mlir::RegionRange odsRegions; public: mfma_f32_16x16x1f32GenericAdaptorBase(::mlir::DictionaryAttr attrs, const Properties &properties, ::mlir::RegionRange regions = {}) : odsAttrs(attrs), properties(properties), odsRegions(regions) { if (odsAttrs) odsOpName.emplace("rocdl.mfma.f32.16x16x1f32", odsAttrs.getContext()); } mfma_f32_16x16x1f32GenericAdaptorBase(mfma_f32_16x16x1f32 op); std::pair getODSOperandIndexAndLength(unsigned index, unsigned odsOperandsSize) { return {index, 1}; } const Properties &getProperties() { return properties; } ::mlir::DictionaryAttr getAttributes() { return odsAttrs; } ::mlir::IntegerAttr getCbszAttr() { auto attr = ::llvm::cast<::mlir::IntegerAttr>(getProperties().cbsz); return attr; } uint32_t getCbsz(); ::mlir::IntegerAttr getAbidAttr() { auto attr = ::llvm::cast<::mlir::IntegerAttr>(getProperties().abid); return attr; } uint32_t getAbid(); ::mlir::ROCDL::MFMAPermBAttr getBlgpAttr() { auto attr = ::llvm::cast<::mlir::ROCDL::MFMAPermBAttr>(getProperties().blgp); return attr; } ::mlir::ROCDL::MFMAPermB getBlgp(); }; } // namespace detail template class mfma_f32_16x16x1f32GenericAdaptor : public detail::mfma_f32_16x16x1f32GenericAdaptorBase { using ValueT = ::llvm::detail::ValueOfRange; using Base = detail::mfma_f32_16x16x1f32GenericAdaptorBase; static constexpr int odsIndex_a = 0; static constexpr int odsIndex_b = 1; static constexpr int odsIndex_c = 2; public: mfma_f32_16x16x1f32GenericAdaptor(RangeT values, ::mlir::DictionaryAttr attrs, const Properties &properties, ::mlir::RegionRange regions = {}) : Base(attrs, properties, regions), odsOperands(values) {} mfma_f32_16x16x1f32GenericAdaptor(RangeT values, ::mlir::DictionaryAttr attrs, ::mlir::PropertyRef properties, ::mlir::RegionRange regions = {}) : mfma_f32_16x16x1f32GenericAdaptor(values, attrs, (properties ? *properties.as() : Properties{}), regions) {} mfma_f32_16x16x1f32GenericAdaptor(RangeT values, ::mlir::DictionaryAttr attrs = nullptr) : mfma_f32_16x16x1f32GenericAdaptor(values, attrs, Properties{}, {}) {} mfma_f32_16x16x1f32GenericAdaptor(RangeT values, const mfma_f32_16x16x1f32GenericAdaptorBase &base) : Base(base), odsOperands(values) {} template >> mfma_f32_16x16x1f32GenericAdaptor(RangeT values, LateInst op) : Base(op), odsOperands(values) {} std::pair getODSOperandIndexAndLength(unsigned index) { return Base::getODSOperandIndexAndLength(index, odsOperands.size()); } RangeT getODSOperands(unsigned index) { auto valueRange = getODSOperandIndexAndLength(index); return {std::next(odsOperands.begin(), valueRange.first), std::next(odsOperands.begin(), valueRange.first + valueRange.second)}; } ValueT getA() { return (*getODSOperands(0).begin()); } ValueT getB() { return (*getODSOperands(1).begin()); } ValueT getC() { return (*getODSOperands(2).begin()); } RangeT getOperands() { return odsOperands; } private: RangeT odsOperands; }; class mfma_f32_16x16x1f32Adaptor : public mfma_f32_16x16x1f32GenericAdaptor<::mlir::ValueRange> { public: using mfma_f32_16x16x1f32GenericAdaptor::mfma_f32_16x16x1f32GenericAdaptor; mfma_f32_16x16x1f32Adaptor(mfma_f32_16x16x1f32 op); ::llvm::LogicalResult verify(::mlir::Location loc); }; class mfma_f32_16x16x1f32 : public ::mlir::Op::Impl, ::mlir::OpTrait::ZeroSuccessors, ::mlir::OpTrait::NOperands<3>::Impl, ::mlir::OpTrait::OpInvariants, ::mlir::BytecodeOpInterface::Trait> { public: using Op::Op; using Op::print; using Adaptor = mfma_f32_16x16x1f32Adaptor; template using GenericAdaptor = mfma_f32_16x16x1f32GenericAdaptor; using FoldAdaptor = GenericAdaptor<::llvm::ArrayRef<::mlir::Attribute>>; static constexpr int odsIndex_a = 0; static constexpr int odsIndex_b = 1; static constexpr int odsIndex_c = 2; using Properties = FoldAdaptor::Properties; static ::llvm::ArrayRef<::llvm::StringRef> getAttributeNames() { static ::llvm::StringRef attrNames[] = {::llvm::StringRef("abid"), ::llvm::StringRef("blgp"), ::llvm::StringRef("cbsz")}; return ::llvm::ArrayRef(attrNames); } ::mlir::StringAttr getAbidAttrName() { return getAttributeNameForIndex(0); } static ::mlir::StringAttr getAbidAttrName(::mlir::OperationName name) { return getAttributeNameForIndex(name, 0); } ::mlir::StringAttr getBlgpAttrName() { return getAttributeNameForIndex(1); } static ::mlir::StringAttr getBlgpAttrName(::mlir::OperationName name) { return getAttributeNameForIndex(name, 1); } ::mlir::StringAttr getCbszAttrName() { return getAttributeNameForIndex(2); } static ::mlir::StringAttr getCbszAttrName(::mlir::OperationName name) { return getAttributeNameForIndex(name, 2); } static constexpr ::llvm::StringLiteral getOperationName() { return ::llvm::StringLiteral("rocdl.mfma.f32.16x16x1f32"); } std::pair getODSOperandIndexAndLength(unsigned index) { return {index, 1}; } ::mlir::Operation::operand_range getODSOperands(unsigned index) { auto valueRange = getODSOperandIndexAndLength(index); return {std::next(getOperation()->operand_begin(), valueRange.first), std::next(getOperation()->operand_begin(), valueRange.first + valueRange.second)}; } ::mlir::TypedValue<::mlir::Type> getA() { return ::llvm::cast<::mlir::TypedValue<::mlir::Type>>(*getODSOperands(0).begin()); } ::mlir::TypedValue<::mlir::Type> getB() { return ::llvm::cast<::mlir::TypedValue<::mlir::Type>>(*getODSOperands(1).begin()); } ::mlir::TypedValue<::mlir::VectorType> getC() { return ::llvm::cast<::mlir::TypedValue<::mlir::VectorType>>(*getODSOperands(2).begin()); } ::mlir::OpOperand &getAMutable() { auto range = getODSOperandIndexAndLength(0); return getOperation()->getOpOperand(range.first); } ::mlir::OpOperand &getBMutable() { auto range = getODSOperandIndexAndLength(1); return getOperation()->getOpOperand(range.first); } ::mlir::OpOperand &getCMutable() { auto range = getODSOperandIndexAndLength(2); return getOperation()->getOpOperand(range.first); } std::pair getODSResultIndexAndLength(unsigned index) { return {index, 1}; } ::mlir::Operation::result_range getODSResults(unsigned index) { auto valueRange = getODSResultIndexAndLength(index); return {std::next(getOperation()->result_begin(), valueRange.first), std::next(getOperation()->result_begin(), valueRange.first + valueRange.second)}; } ::mlir::TypedValue<::mlir::VectorType> getRes() { return ::llvm::cast<::mlir::TypedValue<::mlir::VectorType>>(*getODSResults(0).begin()); } static ::llvm::LogicalResult setPropertiesFromAttr(Properties &prop, ::mlir::Attribute attr, ::llvm::function_ref<::mlir::InFlightDiagnostic()> emitError); static ::mlir::Attribute getPropertiesAsAttr(::mlir::MLIRContext *ctx, const Properties &prop); static llvm::hash_code computePropertiesHash(const Properties &prop); static std::optional getInherentAttr(::mlir::MLIRContext *ctx, const Properties &prop, llvm::StringRef name); static void setInherentAttr(Properties &prop, llvm::StringRef name, mlir::Attribute value); static void populateInherentAttrs(::mlir::MLIRContext *ctx, const Properties &prop, ::mlir::NamedAttrList &attrs); static ::llvm::LogicalResult verifyInherentAttrs(::mlir::OperationName opName, ::mlir::NamedAttrList &attrs, llvm::function_ref<::mlir::InFlightDiagnostic()> emitError); static ::llvm::LogicalResult readProperties(::mlir::DialectBytecodeReader &reader, ::mlir::OperationState &state); void writeProperties(::mlir::DialectBytecodeWriter &writer); ::mlir::IntegerAttr getCbszAttr() { return ::llvm::cast<::mlir::IntegerAttr>(getProperties().cbsz); } uint32_t getCbsz(); ::mlir::IntegerAttr getAbidAttr() { return ::llvm::cast<::mlir::IntegerAttr>(getProperties().abid); } uint32_t getAbid(); ::mlir::ROCDL::MFMAPermBAttr getBlgpAttr() { return ::llvm::cast<::mlir::ROCDL::MFMAPermBAttr>(getProperties().blgp); } ::mlir::ROCDL::MFMAPermB getBlgp(); void setCbszAttr(::mlir::IntegerAttr attr) { getProperties().cbsz = attr; } void setCbsz(uint32_t attrValue); void setAbidAttr(::mlir::IntegerAttr attr) { getProperties().abid = attr; } void setAbid(uint32_t attrValue); void setBlgpAttr(::mlir::ROCDL::MFMAPermBAttr attr) { getProperties().blgp = attr; } void setBlgp(::mlir::ROCDL::MFMAPermB attrValue); static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::Type res, ::mlir::Value a, ::mlir::Value b, ::mlir::Value c, ::mlir::IntegerAttr cbsz, ::mlir::IntegerAttr abid, ::mlir::ROCDL::MFMAPermBAttr blgp); static mfma_f32_16x16x1f32 create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::Type res, ::mlir::Value a, ::mlir::Value b, ::mlir::Value c, ::mlir::IntegerAttr cbsz, ::mlir::IntegerAttr abid, ::mlir::ROCDL::MFMAPermBAttr blgp); static mfma_f32_16x16x1f32 create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::Type res, ::mlir::Value a, ::mlir::Value b, ::mlir::Value c, ::mlir::IntegerAttr cbsz, ::mlir::IntegerAttr abid, ::mlir::ROCDL::MFMAPermBAttr blgp); static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::Value a, ::mlir::Value b, ::mlir::Value c, ::mlir::IntegerAttr cbsz, ::mlir::IntegerAttr abid, ::mlir::ROCDL::MFMAPermBAttr blgp); static mfma_f32_16x16x1f32 create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::Value a, ::mlir::Value b, ::mlir::Value c, ::mlir::IntegerAttr cbsz, ::mlir::IntegerAttr abid, ::mlir::ROCDL::MFMAPermBAttr blgp); static mfma_f32_16x16x1f32 create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::Value a, ::mlir::Value b, ::mlir::Value c, ::mlir::IntegerAttr cbsz, ::mlir::IntegerAttr abid, ::mlir::ROCDL::MFMAPermBAttr blgp); static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::Type res, ::mlir::Value a, ::mlir::Value b, ::mlir::Value c, uint32_t cbsz, uint32_t abid, ::mlir::ROCDL::MFMAPermB blgp); static mfma_f32_16x16x1f32 create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::Type res, ::mlir::Value a, ::mlir::Value b, ::mlir::Value c, uint32_t cbsz, uint32_t abid, ::mlir::ROCDL::MFMAPermB blgp); static mfma_f32_16x16x1f32 create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::Type res, ::mlir::Value a, ::mlir::Value b, ::mlir::Value c, uint32_t cbsz, uint32_t abid, ::mlir::ROCDL::MFMAPermB blgp); static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::Value a, ::mlir::Value b, ::mlir::Value c, uint32_t cbsz, uint32_t abid, ::mlir::ROCDL::MFMAPermB blgp); static mfma_f32_16x16x1f32 create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::Value a, ::mlir::Value b, ::mlir::Value c, uint32_t cbsz, uint32_t abid, ::mlir::ROCDL::MFMAPermB blgp); static mfma_f32_16x16x1f32 create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::Value a, ::mlir::Value b, ::mlir::Value c, uint32_t cbsz, uint32_t abid, ::mlir::ROCDL::MFMAPermB blgp); static void build(::mlir::OpBuilder &, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, ::llvm::ArrayRef<::mlir::NamedAttribute> attributes = {}); static mfma_f32_16x16x1f32 create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, ::llvm::ArrayRef<::mlir::NamedAttribute> attributes = {}); static mfma_f32_16x16x1f32 create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, ::llvm::ArrayRef<::mlir::NamedAttribute> attributes = {}); static void build(::mlir::OpBuilder &, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, const Properties &properties, ::llvm::ArrayRef<::mlir::NamedAttribute> discardableAttributes = {}); static mfma_f32_16x16x1f32 create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, const Properties &properties, ::llvm::ArrayRef<::mlir::NamedAttribute> discardableAttributes = {}); static mfma_f32_16x16x1f32 create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, const Properties &properties, ::llvm::ArrayRef<::mlir::NamedAttribute> discardableAttributes = {}); ::llvm::LogicalResult verifyInvariantsImpl(); ::llvm::LogicalResult verifyInvariants(); static ::mlir::ParseResult parse(::mlir::OpAsmParser &parser, ::mlir::OperationState &result); void print(::mlir::OpAsmPrinter &_odsPrinter); private: ::mlir::StringAttr getAttributeNameForIndex(unsigned index) { return getAttributeNameForIndex((*this)->getName(), index); } static ::mlir::StringAttr getAttributeNameForIndex(::mlir::OperationName name, unsigned index) { assert(index < 3 && "invalid attribute index"); assert(name.getStringRef() == getOperationName() && "invalid operation name"); assert(name.isRegistered() && "Operation isn't registered, missing a " "dependent dialect loading?"); return name.getAttributeNames()[index]; } public: }; } // namespace mlir::ROCDL MLIR_DECLARE_EXPLICIT_TYPE_ID(::mlir::ROCDL::mfma_f32_16x16x1f32) MLIR_DECLARE_EXPLICIT_TYPE_ID(::mlir::ROCDL::detail::mfma_f32_16x16x1f32GenericAdaptorBase::Properties) namespace mlir::ROCDL { //===----------------------------------------------------------------------===// // ::mlir::ROCDL::mfma_f32_16x16x2bf16 declarations //===----------------------------------------------------------------------===// namespace detail { class mfma_f32_16x16x2bf16GenericAdaptorBase { public: struct Properties { using abidTy = ::mlir::IntegerAttr; abidTy abid; auto getAbid() const { auto &propStorage = this->abid; return ::llvm::cast<::mlir::IntegerAttr>(propStorage); } void setAbid(const ::mlir::IntegerAttr &propValue) { this->abid = propValue; } using blgpTy = ::mlir::ROCDL::MFMAPermBAttr; blgpTy blgp; auto getBlgp() const { auto &propStorage = this->blgp; return ::llvm::cast<::mlir::ROCDL::MFMAPermBAttr>(propStorage); } void setBlgp(const ::mlir::ROCDL::MFMAPermBAttr &propValue) { this->blgp = propValue; } using cbszTy = ::mlir::IntegerAttr; cbszTy cbsz; auto getCbsz() const { auto &propStorage = this->cbsz; return ::llvm::cast<::mlir::IntegerAttr>(propStorage); } void setCbsz(const ::mlir::IntegerAttr &propValue) { this->cbsz = propValue; } bool operator==(const Properties &rhs) const { return rhs.abid == this->abid && rhs.blgp == this->blgp && rhs.cbsz == this->cbsz && true; } bool operator!=(const Properties &rhs) const { return !(*this == rhs); } }; protected: ::mlir::DictionaryAttr odsAttrs; ::std::optional<::mlir::OperationName> odsOpName; Properties properties; ::mlir::RegionRange odsRegions; public: mfma_f32_16x16x2bf16GenericAdaptorBase(::mlir::DictionaryAttr attrs, const Properties &properties, ::mlir::RegionRange regions = {}) : odsAttrs(attrs), properties(properties), odsRegions(regions) { if (odsAttrs) odsOpName.emplace("rocdl.mfma.f32.16x16x2bf16", odsAttrs.getContext()); } mfma_f32_16x16x2bf16GenericAdaptorBase(mfma_f32_16x16x2bf16 op); std::pair getODSOperandIndexAndLength(unsigned index, unsigned odsOperandsSize) { return {index, 1}; } const Properties &getProperties() { return properties; } ::mlir::DictionaryAttr getAttributes() { return odsAttrs; } ::mlir::IntegerAttr getCbszAttr() { auto attr = ::llvm::cast<::mlir::IntegerAttr>(getProperties().cbsz); return attr; } uint32_t getCbsz(); ::mlir::IntegerAttr getAbidAttr() { auto attr = ::llvm::cast<::mlir::IntegerAttr>(getProperties().abid); return attr; } uint32_t getAbid(); ::mlir::ROCDL::MFMAPermBAttr getBlgpAttr() { auto attr = ::llvm::cast<::mlir::ROCDL::MFMAPermBAttr>(getProperties().blgp); return attr; } ::mlir::ROCDL::MFMAPermB getBlgp(); }; } // namespace detail template class mfma_f32_16x16x2bf16GenericAdaptor : public detail::mfma_f32_16x16x2bf16GenericAdaptorBase { using ValueT = ::llvm::detail::ValueOfRange; using Base = detail::mfma_f32_16x16x2bf16GenericAdaptorBase; static constexpr int odsIndex_a = 0; static constexpr int odsIndex_b = 1; static constexpr int odsIndex_c = 2; public: mfma_f32_16x16x2bf16GenericAdaptor(RangeT values, ::mlir::DictionaryAttr attrs, const Properties &properties, ::mlir::RegionRange regions = {}) : Base(attrs, properties, regions), odsOperands(values) {} mfma_f32_16x16x2bf16GenericAdaptor(RangeT values, ::mlir::DictionaryAttr attrs, ::mlir::PropertyRef properties, ::mlir::RegionRange regions = {}) : mfma_f32_16x16x2bf16GenericAdaptor(values, attrs, (properties ? *properties.as() : Properties{}), regions) {} mfma_f32_16x16x2bf16GenericAdaptor(RangeT values, ::mlir::DictionaryAttr attrs = nullptr) : mfma_f32_16x16x2bf16GenericAdaptor(values, attrs, Properties{}, {}) {} mfma_f32_16x16x2bf16GenericAdaptor(RangeT values, const mfma_f32_16x16x2bf16GenericAdaptorBase &base) : Base(base), odsOperands(values) {} template >> mfma_f32_16x16x2bf16GenericAdaptor(RangeT values, LateInst op) : Base(op), odsOperands(values) {} std::pair getODSOperandIndexAndLength(unsigned index) { return Base::getODSOperandIndexAndLength(index, odsOperands.size()); } RangeT getODSOperands(unsigned index) { auto valueRange = getODSOperandIndexAndLength(index); return {std::next(odsOperands.begin(), valueRange.first), std::next(odsOperands.begin(), valueRange.first + valueRange.second)}; } ValueT getA() { return (*getODSOperands(0).begin()); } ValueT getB() { return (*getODSOperands(1).begin()); } ValueT getC() { return (*getODSOperands(2).begin()); } RangeT getOperands() { return odsOperands; } private: RangeT odsOperands; }; class mfma_f32_16x16x2bf16Adaptor : public mfma_f32_16x16x2bf16GenericAdaptor<::mlir::ValueRange> { public: using mfma_f32_16x16x2bf16GenericAdaptor::mfma_f32_16x16x2bf16GenericAdaptor; mfma_f32_16x16x2bf16Adaptor(mfma_f32_16x16x2bf16 op); ::llvm::LogicalResult verify(::mlir::Location loc); }; class mfma_f32_16x16x2bf16 : public ::mlir::Op::Impl, ::mlir::OpTrait::ZeroSuccessors, ::mlir::OpTrait::NOperands<3>::Impl, ::mlir::OpTrait::OpInvariants, ::mlir::BytecodeOpInterface::Trait> { public: using Op::Op; using Op::print; using Adaptor = mfma_f32_16x16x2bf16Adaptor; template using GenericAdaptor = mfma_f32_16x16x2bf16GenericAdaptor; using FoldAdaptor = GenericAdaptor<::llvm::ArrayRef<::mlir::Attribute>>; static constexpr int odsIndex_a = 0; static constexpr int odsIndex_b = 1; static constexpr int odsIndex_c = 2; using Properties = FoldAdaptor::Properties; static ::llvm::ArrayRef<::llvm::StringRef> getAttributeNames() { static ::llvm::StringRef attrNames[] = {::llvm::StringRef("abid"), ::llvm::StringRef("blgp"), ::llvm::StringRef("cbsz")}; return ::llvm::ArrayRef(attrNames); } ::mlir::StringAttr getAbidAttrName() { return getAttributeNameForIndex(0); } static ::mlir::StringAttr getAbidAttrName(::mlir::OperationName name) { return getAttributeNameForIndex(name, 0); } ::mlir::StringAttr getBlgpAttrName() { return getAttributeNameForIndex(1); } static ::mlir::StringAttr getBlgpAttrName(::mlir::OperationName name) { return getAttributeNameForIndex(name, 1); } ::mlir::StringAttr getCbszAttrName() { return getAttributeNameForIndex(2); } static ::mlir::StringAttr getCbszAttrName(::mlir::OperationName name) { return getAttributeNameForIndex(name, 2); } static constexpr ::llvm::StringLiteral getOperationName() { return ::llvm::StringLiteral("rocdl.mfma.f32.16x16x2bf16"); } std::pair getODSOperandIndexAndLength(unsigned index) { return {index, 1}; } ::mlir::Operation::operand_range getODSOperands(unsigned index) { auto valueRange = getODSOperandIndexAndLength(index); return {std::next(getOperation()->operand_begin(), valueRange.first), std::next(getOperation()->operand_begin(), valueRange.first + valueRange.second)}; } ::mlir::TypedValue<::mlir::VectorType> getA() { return ::llvm::cast<::mlir::TypedValue<::mlir::VectorType>>(*getODSOperands(0).begin()); } ::mlir::TypedValue<::mlir::VectorType> getB() { return ::llvm::cast<::mlir::TypedValue<::mlir::VectorType>>(*getODSOperands(1).begin()); } ::mlir::TypedValue<::mlir::VectorType> getC() { return ::llvm::cast<::mlir::TypedValue<::mlir::VectorType>>(*getODSOperands(2).begin()); } ::mlir::OpOperand &getAMutable() { auto range = getODSOperandIndexAndLength(0); return getOperation()->getOpOperand(range.first); } ::mlir::OpOperand &getBMutable() { auto range = getODSOperandIndexAndLength(1); return getOperation()->getOpOperand(range.first); } ::mlir::OpOperand &getCMutable() { auto range = getODSOperandIndexAndLength(2); return getOperation()->getOpOperand(range.first); } std::pair getODSResultIndexAndLength(unsigned index) { return {index, 1}; } ::mlir::Operation::result_range getODSResults(unsigned index) { auto valueRange = getODSResultIndexAndLength(index); return {std::next(getOperation()->result_begin(), valueRange.first), std::next(getOperation()->result_begin(), valueRange.first + valueRange.second)}; } ::mlir::TypedValue<::mlir::VectorType> getRes() { return ::llvm::cast<::mlir::TypedValue<::mlir::VectorType>>(*getODSResults(0).begin()); } static ::llvm::LogicalResult setPropertiesFromAttr(Properties &prop, ::mlir::Attribute attr, ::llvm::function_ref<::mlir::InFlightDiagnostic()> emitError); static ::mlir::Attribute getPropertiesAsAttr(::mlir::MLIRContext *ctx, const Properties &prop); static llvm::hash_code computePropertiesHash(const Properties &prop); static std::optional getInherentAttr(::mlir::MLIRContext *ctx, const Properties &prop, llvm::StringRef name); static void setInherentAttr(Properties &prop, llvm::StringRef name, mlir::Attribute value); static void populateInherentAttrs(::mlir::MLIRContext *ctx, const Properties &prop, ::mlir::NamedAttrList &attrs); static ::llvm::LogicalResult verifyInherentAttrs(::mlir::OperationName opName, ::mlir::NamedAttrList &attrs, llvm::function_ref<::mlir::InFlightDiagnostic()> emitError); static ::llvm::LogicalResult readProperties(::mlir::DialectBytecodeReader &reader, ::mlir::OperationState &state); void writeProperties(::mlir::DialectBytecodeWriter &writer); ::mlir::IntegerAttr getCbszAttr() { return ::llvm::cast<::mlir::IntegerAttr>(getProperties().cbsz); } uint32_t getCbsz(); ::mlir::IntegerAttr getAbidAttr() { return ::llvm::cast<::mlir::IntegerAttr>(getProperties().abid); } uint32_t getAbid(); ::mlir::ROCDL::MFMAPermBAttr getBlgpAttr() { return ::llvm::cast<::mlir::ROCDL::MFMAPermBAttr>(getProperties().blgp); } ::mlir::ROCDL::MFMAPermB getBlgp(); void setCbszAttr(::mlir::IntegerAttr attr) { getProperties().cbsz = attr; } void setCbsz(uint32_t attrValue); void setAbidAttr(::mlir::IntegerAttr attr) { getProperties().abid = attr; } void setAbid(uint32_t attrValue); void setBlgpAttr(::mlir::ROCDL::MFMAPermBAttr attr) { getProperties().blgp = attr; } void setBlgp(::mlir::ROCDL::MFMAPermB attrValue); static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::Type res, ::mlir::Value a, ::mlir::Value b, ::mlir::Value c, ::mlir::IntegerAttr cbsz, ::mlir::IntegerAttr abid, ::mlir::ROCDL::MFMAPermBAttr blgp); static mfma_f32_16x16x2bf16 create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::Type res, ::mlir::Value a, ::mlir::Value b, ::mlir::Value c, ::mlir::IntegerAttr cbsz, ::mlir::IntegerAttr abid, ::mlir::ROCDL::MFMAPermBAttr blgp); static mfma_f32_16x16x2bf16 create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::Type res, ::mlir::Value a, ::mlir::Value b, ::mlir::Value c, ::mlir::IntegerAttr cbsz, ::mlir::IntegerAttr abid, ::mlir::ROCDL::MFMAPermBAttr blgp); static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::Value a, ::mlir::Value b, ::mlir::Value c, ::mlir::IntegerAttr cbsz, ::mlir::IntegerAttr abid, ::mlir::ROCDL::MFMAPermBAttr blgp); static mfma_f32_16x16x2bf16 create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::Value a, ::mlir::Value b, ::mlir::Value c, ::mlir::IntegerAttr cbsz, ::mlir::IntegerAttr abid, ::mlir::ROCDL::MFMAPermBAttr blgp); static mfma_f32_16x16x2bf16 create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::Value a, ::mlir::Value b, ::mlir::Value c, ::mlir::IntegerAttr cbsz, ::mlir::IntegerAttr abid, ::mlir::ROCDL::MFMAPermBAttr blgp); static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::Type res, ::mlir::Value a, ::mlir::Value b, ::mlir::Value c, uint32_t cbsz, uint32_t abid, ::mlir::ROCDL::MFMAPermB blgp); static mfma_f32_16x16x2bf16 create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::Type res, ::mlir::Value a, ::mlir::Value b, ::mlir::Value c, uint32_t cbsz, uint32_t abid, ::mlir::ROCDL::MFMAPermB blgp); static mfma_f32_16x16x2bf16 create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::Type res, ::mlir::Value a, ::mlir::Value b, ::mlir::Value c, uint32_t cbsz, uint32_t abid, ::mlir::ROCDL::MFMAPermB blgp); static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::Value a, ::mlir::Value b, ::mlir::Value c, uint32_t cbsz, uint32_t abid, ::mlir::ROCDL::MFMAPermB blgp); static mfma_f32_16x16x2bf16 create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::Value a, ::mlir::Value b, ::mlir::Value c, uint32_t cbsz, uint32_t abid, ::mlir::ROCDL::MFMAPermB blgp); static mfma_f32_16x16x2bf16 create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::Value a, ::mlir::Value b, ::mlir::Value c, uint32_t cbsz, uint32_t abid, ::mlir::ROCDL::MFMAPermB blgp); static void build(::mlir::OpBuilder &, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, ::llvm::ArrayRef<::mlir::NamedAttribute> attributes = {}); static mfma_f32_16x16x2bf16 create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, ::llvm::ArrayRef<::mlir::NamedAttribute> attributes = {}); static mfma_f32_16x16x2bf16 create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, ::llvm::ArrayRef<::mlir::NamedAttribute> attributes = {}); static void build(::mlir::OpBuilder &, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, const Properties &properties, ::llvm::ArrayRef<::mlir::NamedAttribute> discardableAttributes = {}); static mfma_f32_16x16x2bf16 create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, const Properties &properties, ::llvm::ArrayRef<::mlir::NamedAttribute> discardableAttributes = {}); static mfma_f32_16x16x2bf16 create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, const Properties &properties, ::llvm::ArrayRef<::mlir::NamedAttribute> discardableAttributes = {}); ::llvm::LogicalResult verifyInvariantsImpl(); ::llvm::LogicalResult verifyInvariants(); static ::mlir::ParseResult parse(::mlir::OpAsmParser &parser, ::mlir::OperationState &result); void print(::mlir::OpAsmPrinter &_odsPrinter); private: ::mlir::StringAttr getAttributeNameForIndex(unsigned index) { return getAttributeNameForIndex((*this)->getName(), index); } static ::mlir::StringAttr getAttributeNameForIndex(::mlir::OperationName name, unsigned index) { assert(index < 3 && "invalid attribute index"); assert(name.getStringRef() == getOperationName() && "invalid operation name"); assert(name.isRegistered() && "Operation isn't registered, missing a " "dependent dialect loading?"); return name.getAttributeNames()[index]; } public: }; } // namespace mlir::ROCDL MLIR_DECLARE_EXPLICIT_TYPE_ID(::mlir::ROCDL::mfma_f32_16x16x2bf16) MLIR_DECLARE_EXPLICIT_TYPE_ID(::mlir::ROCDL::detail::mfma_f32_16x16x2bf16GenericAdaptorBase::Properties) namespace mlir::ROCDL { //===----------------------------------------------------------------------===// // ::mlir::ROCDL::mfma_f32_16x16x32_bf16 declarations //===----------------------------------------------------------------------===// namespace detail { class mfma_f32_16x16x32_bf16GenericAdaptorBase { public: struct Properties { using abidTy = ::mlir::IntegerAttr; abidTy abid; auto getAbid() const { auto &propStorage = this->abid; return ::llvm::cast<::mlir::IntegerAttr>(propStorage); } void setAbid(const ::mlir::IntegerAttr &propValue) { this->abid = propValue; } using blgpTy = ::mlir::ROCDL::MFMAPermBAttr; blgpTy blgp; auto getBlgp() const { auto &propStorage = this->blgp; return ::llvm::cast<::mlir::ROCDL::MFMAPermBAttr>(propStorage); } void setBlgp(const ::mlir::ROCDL::MFMAPermBAttr &propValue) { this->blgp = propValue; } using cbszTy = ::mlir::IntegerAttr; cbszTy cbsz; auto getCbsz() const { auto &propStorage = this->cbsz; return ::llvm::cast<::mlir::IntegerAttr>(propStorage); } void setCbsz(const ::mlir::IntegerAttr &propValue) { this->cbsz = propValue; } bool operator==(const Properties &rhs) const { return rhs.abid == this->abid && rhs.blgp == this->blgp && rhs.cbsz == this->cbsz && true; } bool operator!=(const Properties &rhs) const { return !(*this == rhs); } }; protected: ::mlir::DictionaryAttr odsAttrs; ::std::optional<::mlir::OperationName> odsOpName; Properties properties; ::mlir::RegionRange odsRegions; public: mfma_f32_16x16x32_bf16GenericAdaptorBase(::mlir::DictionaryAttr attrs, const Properties &properties, ::mlir::RegionRange regions = {}) : odsAttrs(attrs), properties(properties), odsRegions(regions) { if (odsAttrs) odsOpName.emplace("rocdl.mfma.f32.16x16x32.bf16", odsAttrs.getContext()); } mfma_f32_16x16x32_bf16GenericAdaptorBase(mfma_f32_16x16x32_bf16 op); std::pair getODSOperandIndexAndLength(unsigned index, unsigned odsOperandsSize) { return {index, 1}; } const Properties &getProperties() { return properties; } ::mlir::DictionaryAttr getAttributes() { return odsAttrs; } ::mlir::IntegerAttr getCbszAttr() { auto attr = ::llvm::cast<::mlir::IntegerAttr>(getProperties().cbsz); return attr; } uint32_t getCbsz(); ::mlir::IntegerAttr getAbidAttr() { auto attr = ::llvm::cast<::mlir::IntegerAttr>(getProperties().abid); return attr; } uint32_t getAbid(); ::mlir::ROCDL::MFMAPermBAttr getBlgpAttr() { auto attr = ::llvm::cast<::mlir::ROCDL::MFMAPermBAttr>(getProperties().blgp); return attr; } ::mlir::ROCDL::MFMAPermB getBlgp(); }; } // namespace detail template class mfma_f32_16x16x32_bf16GenericAdaptor : public detail::mfma_f32_16x16x32_bf16GenericAdaptorBase { using ValueT = ::llvm::detail::ValueOfRange; using Base = detail::mfma_f32_16x16x32_bf16GenericAdaptorBase; static constexpr int odsIndex_a = 0; static constexpr int odsIndex_b = 1; static constexpr int odsIndex_c = 2; public: mfma_f32_16x16x32_bf16GenericAdaptor(RangeT values, ::mlir::DictionaryAttr attrs, const Properties &properties, ::mlir::RegionRange regions = {}) : Base(attrs, properties, regions), odsOperands(values) {} mfma_f32_16x16x32_bf16GenericAdaptor(RangeT values, ::mlir::DictionaryAttr attrs, ::mlir::PropertyRef properties, ::mlir::RegionRange regions = {}) : mfma_f32_16x16x32_bf16GenericAdaptor(values, attrs, (properties ? *properties.as() : Properties{}), regions) {} mfma_f32_16x16x32_bf16GenericAdaptor(RangeT values, ::mlir::DictionaryAttr attrs = nullptr) : mfma_f32_16x16x32_bf16GenericAdaptor(values, attrs, Properties{}, {}) {} mfma_f32_16x16x32_bf16GenericAdaptor(RangeT values, const mfma_f32_16x16x32_bf16GenericAdaptorBase &base) : Base(base), odsOperands(values) {} template >> mfma_f32_16x16x32_bf16GenericAdaptor(RangeT values, LateInst op) : Base(op), odsOperands(values) {} std::pair getODSOperandIndexAndLength(unsigned index) { return Base::getODSOperandIndexAndLength(index, odsOperands.size()); } RangeT getODSOperands(unsigned index) { auto valueRange = getODSOperandIndexAndLength(index); return {std::next(odsOperands.begin(), valueRange.first), std::next(odsOperands.begin(), valueRange.first + valueRange.second)}; } ValueT getA() { return (*getODSOperands(0).begin()); } ValueT getB() { return (*getODSOperands(1).begin()); } ValueT getC() { return (*getODSOperands(2).begin()); } RangeT getOperands() { return odsOperands; } private: RangeT odsOperands; }; class mfma_f32_16x16x32_bf16Adaptor : public mfma_f32_16x16x32_bf16GenericAdaptor<::mlir::ValueRange> { public: using mfma_f32_16x16x32_bf16GenericAdaptor::mfma_f32_16x16x32_bf16GenericAdaptor; mfma_f32_16x16x32_bf16Adaptor(mfma_f32_16x16x32_bf16 op); ::llvm::LogicalResult verify(::mlir::Location loc); }; class mfma_f32_16x16x32_bf16 : public ::mlir::Op::Impl, ::mlir::OpTrait::ZeroSuccessors, ::mlir::OpTrait::NOperands<3>::Impl, ::mlir::OpTrait::OpInvariants, ::mlir::BytecodeOpInterface::Trait> { public: using Op::Op; using Op::print; using Adaptor = mfma_f32_16x16x32_bf16Adaptor; template using GenericAdaptor = mfma_f32_16x16x32_bf16GenericAdaptor; using FoldAdaptor = GenericAdaptor<::llvm::ArrayRef<::mlir::Attribute>>; static constexpr int odsIndex_a = 0; static constexpr int odsIndex_b = 1; static constexpr int odsIndex_c = 2; using Properties = FoldAdaptor::Properties; static ::llvm::ArrayRef<::llvm::StringRef> getAttributeNames() { static ::llvm::StringRef attrNames[] = {::llvm::StringRef("abid"), ::llvm::StringRef("blgp"), ::llvm::StringRef("cbsz")}; return ::llvm::ArrayRef(attrNames); } ::mlir::StringAttr getAbidAttrName() { return getAttributeNameForIndex(0); } static ::mlir::StringAttr getAbidAttrName(::mlir::OperationName name) { return getAttributeNameForIndex(name, 0); } ::mlir::StringAttr getBlgpAttrName() { return getAttributeNameForIndex(1); } static ::mlir::StringAttr getBlgpAttrName(::mlir::OperationName name) { return getAttributeNameForIndex(name, 1); } ::mlir::StringAttr getCbszAttrName() { return getAttributeNameForIndex(2); } static ::mlir::StringAttr getCbszAttrName(::mlir::OperationName name) { return getAttributeNameForIndex(name, 2); } static constexpr ::llvm::StringLiteral getOperationName() { return ::llvm::StringLiteral("rocdl.mfma.f32.16x16x32.bf16"); } std::pair getODSOperandIndexAndLength(unsigned index) { return {index, 1}; } ::mlir::Operation::operand_range getODSOperands(unsigned index) { auto valueRange = getODSOperandIndexAndLength(index); return {std::next(getOperation()->operand_begin(), valueRange.first), std::next(getOperation()->operand_begin(), valueRange.first + valueRange.second)}; } ::mlir::TypedValue<::mlir::VectorType> getA() { return ::llvm::cast<::mlir::TypedValue<::mlir::VectorType>>(*getODSOperands(0).begin()); } ::mlir::TypedValue<::mlir::VectorType> getB() { return ::llvm::cast<::mlir::TypedValue<::mlir::VectorType>>(*getODSOperands(1).begin()); } ::mlir::TypedValue<::mlir::VectorType> getC() { return ::llvm::cast<::mlir::TypedValue<::mlir::VectorType>>(*getODSOperands(2).begin()); } ::mlir::OpOperand &getAMutable() { auto range = getODSOperandIndexAndLength(0); return getOperation()->getOpOperand(range.first); } ::mlir::OpOperand &getBMutable() { auto range = getODSOperandIndexAndLength(1); return getOperation()->getOpOperand(range.first); } ::mlir::OpOperand &getCMutable() { auto range = getODSOperandIndexAndLength(2); return getOperation()->getOpOperand(range.first); } std::pair getODSResultIndexAndLength(unsigned index) { return {index, 1}; } ::mlir::Operation::result_range getODSResults(unsigned index) { auto valueRange = getODSResultIndexAndLength(index); return {std::next(getOperation()->result_begin(), valueRange.first), std::next(getOperation()->result_begin(), valueRange.first + valueRange.second)}; } ::mlir::TypedValue<::mlir::VectorType> getRes() { return ::llvm::cast<::mlir::TypedValue<::mlir::VectorType>>(*getODSResults(0).begin()); } static ::llvm::LogicalResult setPropertiesFromAttr(Properties &prop, ::mlir::Attribute attr, ::llvm::function_ref<::mlir::InFlightDiagnostic()> emitError); static ::mlir::Attribute getPropertiesAsAttr(::mlir::MLIRContext *ctx, const Properties &prop); static llvm::hash_code computePropertiesHash(const Properties &prop); static std::optional getInherentAttr(::mlir::MLIRContext *ctx, const Properties &prop, llvm::StringRef name); static void setInherentAttr(Properties &prop, llvm::StringRef name, mlir::Attribute value); static void populateInherentAttrs(::mlir::MLIRContext *ctx, const Properties &prop, ::mlir::NamedAttrList &attrs); static ::llvm::LogicalResult verifyInherentAttrs(::mlir::OperationName opName, ::mlir::NamedAttrList &attrs, llvm::function_ref<::mlir::InFlightDiagnostic()> emitError); static ::llvm::LogicalResult readProperties(::mlir::DialectBytecodeReader &reader, ::mlir::OperationState &state); void writeProperties(::mlir::DialectBytecodeWriter &writer); ::mlir::IntegerAttr getCbszAttr() { return ::llvm::cast<::mlir::IntegerAttr>(getProperties().cbsz); } uint32_t getCbsz(); ::mlir::IntegerAttr getAbidAttr() { return ::llvm::cast<::mlir::IntegerAttr>(getProperties().abid); } uint32_t getAbid(); ::mlir::ROCDL::MFMAPermBAttr getBlgpAttr() { return ::llvm::cast<::mlir::ROCDL::MFMAPermBAttr>(getProperties().blgp); } ::mlir::ROCDL::MFMAPermB getBlgp(); void setCbszAttr(::mlir::IntegerAttr attr) { getProperties().cbsz = attr; } void setCbsz(uint32_t attrValue); void setAbidAttr(::mlir::IntegerAttr attr) { getProperties().abid = attr; } void setAbid(uint32_t attrValue); void setBlgpAttr(::mlir::ROCDL::MFMAPermBAttr attr) { getProperties().blgp = attr; } void setBlgp(::mlir::ROCDL::MFMAPermB attrValue); static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::Type res, ::mlir::Value a, ::mlir::Value b, ::mlir::Value c, ::mlir::IntegerAttr cbsz, ::mlir::IntegerAttr abid, ::mlir::ROCDL::MFMAPermBAttr blgp); static mfma_f32_16x16x32_bf16 create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::Type res, ::mlir::Value a, ::mlir::Value b, ::mlir::Value c, ::mlir::IntegerAttr cbsz, ::mlir::IntegerAttr abid, ::mlir::ROCDL::MFMAPermBAttr blgp); static mfma_f32_16x16x32_bf16 create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::Type res, ::mlir::Value a, ::mlir::Value b, ::mlir::Value c, ::mlir::IntegerAttr cbsz, ::mlir::IntegerAttr abid, ::mlir::ROCDL::MFMAPermBAttr blgp); static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::Value a, ::mlir::Value b, ::mlir::Value c, ::mlir::IntegerAttr cbsz, ::mlir::IntegerAttr abid, ::mlir::ROCDL::MFMAPermBAttr blgp); static mfma_f32_16x16x32_bf16 create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::Value a, ::mlir::Value b, ::mlir::Value c, ::mlir::IntegerAttr cbsz, ::mlir::IntegerAttr abid, ::mlir::ROCDL::MFMAPermBAttr blgp); static mfma_f32_16x16x32_bf16 create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::Value a, ::mlir::Value b, ::mlir::Value c, ::mlir::IntegerAttr cbsz, ::mlir::IntegerAttr abid, ::mlir::ROCDL::MFMAPermBAttr blgp); static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::Type res, ::mlir::Value a, ::mlir::Value b, ::mlir::Value c, uint32_t cbsz, uint32_t abid, ::mlir::ROCDL::MFMAPermB blgp); static mfma_f32_16x16x32_bf16 create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::Type res, ::mlir::Value a, ::mlir::Value b, ::mlir::Value c, uint32_t cbsz, uint32_t abid, ::mlir::ROCDL::MFMAPermB blgp); static mfma_f32_16x16x32_bf16 create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::Type res, ::mlir::Value a, ::mlir::Value b, ::mlir::Value c, uint32_t cbsz, uint32_t abid, ::mlir::ROCDL::MFMAPermB blgp); static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::Value a, ::mlir::Value b, ::mlir::Value c, uint32_t cbsz, uint32_t abid, ::mlir::ROCDL::MFMAPermB blgp); static mfma_f32_16x16x32_bf16 create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::Value a, ::mlir::Value b, ::mlir::Value c, uint32_t cbsz, uint32_t abid, ::mlir::ROCDL::MFMAPermB blgp); static mfma_f32_16x16x32_bf16 create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::Value a, ::mlir::Value b, ::mlir::Value c, uint32_t cbsz, uint32_t abid, ::mlir::ROCDL::MFMAPermB blgp); static void build(::mlir::OpBuilder &, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, ::llvm::ArrayRef<::mlir::NamedAttribute> attributes = {}); static mfma_f32_16x16x32_bf16 create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, ::llvm::ArrayRef<::mlir::NamedAttribute> attributes = {}); static mfma_f32_16x16x32_bf16 create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, ::llvm::ArrayRef<::mlir::NamedAttribute> attributes = {}); static void build(::mlir::OpBuilder &, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, const Properties &properties, ::llvm::ArrayRef<::mlir::NamedAttribute> discardableAttributes = {}); static mfma_f32_16x16x32_bf16 create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, const Properties &properties, ::llvm::ArrayRef<::mlir::NamedAttribute> discardableAttributes = {}); static mfma_f32_16x16x32_bf16 create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, const Properties &properties, ::llvm::ArrayRef<::mlir::NamedAttribute> discardableAttributes = {}); ::llvm::LogicalResult verifyInvariantsImpl(); ::llvm::LogicalResult verifyInvariants(); static ::mlir::ParseResult parse(::mlir::OpAsmParser &parser, ::mlir::OperationState &result); void print(::mlir::OpAsmPrinter &_odsPrinter); private: ::mlir::StringAttr getAttributeNameForIndex(unsigned index) { return getAttributeNameForIndex((*this)->getName(), index); } static ::mlir::StringAttr getAttributeNameForIndex(::mlir::OperationName name, unsigned index) { assert(index < 3 && "invalid attribute index"); assert(name.getStringRef() == getOperationName() && "invalid operation name"); assert(name.isRegistered() && "Operation isn't registered, missing a " "dependent dialect loading?"); return name.getAttributeNames()[index]; } public: }; } // namespace mlir::ROCDL MLIR_DECLARE_EXPLICIT_TYPE_ID(::mlir::ROCDL::mfma_f32_16x16x32_bf16) MLIR_DECLARE_EXPLICIT_TYPE_ID(::mlir::ROCDL::detail::mfma_f32_16x16x32_bf16GenericAdaptorBase::Properties) namespace mlir::ROCDL { //===----------------------------------------------------------------------===// // ::mlir::ROCDL::mfma_f32_16x16x32_bf8_bf8 declarations //===----------------------------------------------------------------------===// namespace detail { class mfma_f32_16x16x32_bf8_bf8GenericAdaptorBase { public: struct Properties { using abidTy = ::mlir::IntegerAttr; abidTy abid; auto getAbid() const { auto &propStorage = this->abid; return ::llvm::cast<::mlir::IntegerAttr>(propStorage); } void setAbid(const ::mlir::IntegerAttr &propValue) { this->abid = propValue; } using blgpTy = ::mlir::ROCDL::MFMAPermBAttr; blgpTy blgp; auto getBlgp() const { auto &propStorage = this->blgp; return ::llvm::cast<::mlir::ROCDL::MFMAPermBAttr>(propStorage); } void setBlgp(const ::mlir::ROCDL::MFMAPermBAttr &propValue) { this->blgp = propValue; } using cbszTy = ::mlir::IntegerAttr; cbszTy cbsz; auto getCbsz() const { auto &propStorage = this->cbsz; return ::llvm::cast<::mlir::IntegerAttr>(propStorage); } void setCbsz(const ::mlir::IntegerAttr &propValue) { this->cbsz = propValue; } bool operator==(const Properties &rhs) const { return rhs.abid == this->abid && rhs.blgp == this->blgp && rhs.cbsz == this->cbsz && true; } bool operator!=(const Properties &rhs) const { return !(*this == rhs); } }; protected: ::mlir::DictionaryAttr odsAttrs; ::std::optional<::mlir::OperationName> odsOpName; Properties properties; ::mlir::RegionRange odsRegions; public: mfma_f32_16x16x32_bf8_bf8GenericAdaptorBase(::mlir::DictionaryAttr attrs, const Properties &properties, ::mlir::RegionRange regions = {}) : odsAttrs(attrs), properties(properties), odsRegions(regions) { if (odsAttrs) odsOpName.emplace("rocdl.mfma.f32.16x16x32.bf8.bf8", odsAttrs.getContext()); } mfma_f32_16x16x32_bf8_bf8GenericAdaptorBase(mfma_f32_16x16x32_bf8_bf8 op); std::pair getODSOperandIndexAndLength(unsigned index, unsigned odsOperandsSize) { return {index, 1}; } const Properties &getProperties() { return properties; } ::mlir::DictionaryAttr getAttributes() { return odsAttrs; } ::mlir::IntegerAttr getCbszAttr() { auto attr = ::llvm::cast<::mlir::IntegerAttr>(getProperties().cbsz); return attr; } uint32_t getCbsz(); ::mlir::IntegerAttr getAbidAttr() { auto attr = ::llvm::cast<::mlir::IntegerAttr>(getProperties().abid); return attr; } uint32_t getAbid(); ::mlir::ROCDL::MFMAPermBAttr getBlgpAttr() { auto attr = ::llvm::cast<::mlir::ROCDL::MFMAPermBAttr>(getProperties().blgp); return attr; } ::mlir::ROCDL::MFMAPermB getBlgp(); }; } // namespace detail template class mfma_f32_16x16x32_bf8_bf8GenericAdaptor : public detail::mfma_f32_16x16x32_bf8_bf8GenericAdaptorBase { using ValueT = ::llvm::detail::ValueOfRange; using Base = detail::mfma_f32_16x16x32_bf8_bf8GenericAdaptorBase; static constexpr int odsIndex_a = 0; static constexpr int odsIndex_b = 1; static constexpr int odsIndex_c = 2; public: mfma_f32_16x16x32_bf8_bf8GenericAdaptor(RangeT values, ::mlir::DictionaryAttr attrs, const Properties &properties, ::mlir::RegionRange regions = {}) : Base(attrs, properties, regions), odsOperands(values) {} mfma_f32_16x16x32_bf8_bf8GenericAdaptor(RangeT values, ::mlir::DictionaryAttr attrs, ::mlir::PropertyRef properties, ::mlir::RegionRange regions = {}) : mfma_f32_16x16x32_bf8_bf8GenericAdaptor(values, attrs, (properties ? *properties.as() : Properties{}), regions) {} mfma_f32_16x16x32_bf8_bf8GenericAdaptor(RangeT values, ::mlir::DictionaryAttr attrs = nullptr) : mfma_f32_16x16x32_bf8_bf8GenericAdaptor(values, attrs, Properties{}, {}) {} mfma_f32_16x16x32_bf8_bf8GenericAdaptor(RangeT values, const mfma_f32_16x16x32_bf8_bf8GenericAdaptorBase &base) : Base(base), odsOperands(values) {} template >> mfma_f32_16x16x32_bf8_bf8GenericAdaptor(RangeT values, LateInst op) : Base(op), odsOperands(values) {} std::pair getODSOperandIndexAndLength(unsigned index) { return Base::getODSOperandIndexAndLength(index, odsOperands.size()); } RangeT getODSOperands(unsigned index) { auto valueRange = getODSOperandIndexAndLength(index); return {std::next(odsOperands.begin(), valueRange.first), std::next(odsOperands.begin(), valueRange.first + valueRange.second)}; } ValueT getA() { return (*getODSOperands(0).begin()); } ValueT getB() { return (*getODSOperands(1).begin()); } ValueT getC() { return (*getODSOperands(2).begin()); } RangeT getOperands() { return odsOperands; } private: RangeT odsOperands; }; class mfma_f32_16x16x32_bf8_bf8Adaptor : public mfma_f32_16x16x32_bf8_bf8GenericAdaptor<::mlir::ValueRange> { public: using mfma_f32_16x16x32_bf8_bf8GenericAdaptor::mfma_f32_16x16x32_bf8_bf8GenericAdaptor; mfma_f32_16x16x32_bf8_bf8Adaptor(mfma_f32_16x16x32_bf8_bf8 op); ::llvm::LogicalResult verify(::mlir::Location loc); }; class mfma_f32_16x16x32_bf8_bf8 : public ::mlir::Op::Impl, ::mlir::OpTrait::ZeroSuccessors, ::mlir::OpTrait::NOperands<3>::Impl, ::mlir::OpTrait::OpInvariants, ::mlir::BytecodeOpInterface::Trait> { public: using Op::Op; using Op::print; using Adaptor = mfma_f32_16x16x32_bf8_bf8Adaptor; template using GenericAdaptor = mfma_f32_16x16x32_bf8_bf8GenericAdaptor; using FoldAdaptor = GenericAdaptor<::llvm::ArrayRef<::mlir::Attribute>>; static constexpr int odsIndex_a = 0; static constexpr int odsIndex_b = 1; static constexpr int odsIndex_c = 2; using Properties = FoldAdaptor::Properties; static ::llvm::ArrayRef<::llvm::StringRef> getAttributeNames() { static ::llvm::StringRef attrNames[] = {::llvm::StringRef("abid"), ::llvm::StringRef("blgp"), ::llvm::StringRef("cbsz")}; return ::llvm::ArrayRef(attrNames); } ::mlir::StringAttr getAbidAttrName() { return getAttributeNameForIndex(0); } static ::mlir::StringAttr getAbidAttrName(::mlir::OperationName name) { return getAttributeNameForIndex(name, 0); } ::mlir::StringAttr getBlgpAttrName() { return getAttributeNameForIndex(1); } static ::mlir::StringAttr getBlgpAttrName(::mlir::OperationName name) { return getAttributeNameForIndex(name, 1); } ::mlir::StringAttr getCbszAttrName() { return getAttributeNameForIndex(2); } static ::mlir::StringAttr getCbszAttrName(::mlir::OperationName name) { return getAttributeNameForIndex(name, 2); } static constexpr ::llvm::StringLiteral getOperationName() { return ::llvm::StringLiteral("rocdl.mfma.f32.16x16x32.bf8.bf8"); } std::pair getODSOperandIndexAndLength(unsigned index) { return {index, 1}; } ::mlir::Operation::operand_range getODSOperands(unsigned index) { auto valueRange = getODSOperandIndexAndLength(index); return {std::next(getOperation()->operand_begin(), valueRange.first), std::next(getOperation()->operand_begin(), valueRange.first + valueRange.second)}; } ::mlir::TypedValue<::mlir::Type> getA() { return ::llvm::cast<::mlir::TypedValue<::mlir::Type>>(*getODSOperands(0).begin()); } ::mlir::TypedValue<::mlir::Type> getB() { return ::llvm::cast<::mlir::TypedValue<::mlir::Type>>(*getODSOperands(1).begin()); } ::mlir::TypedValue<::mlir::VectorType> getC() { return ::llvm::cast<::mlir::TypedValue<::mlir::VectorType>>(*getODSOperands(2).begin()); } ::mlir::OpOperand &getAMutable() { auto range = getODSOperandIndexAndLength(0); return getOperation()->getOpOperand(range.first); } ::mlir::OpOperand &getBMutable() { auto range = getODSOperandIndexAndLength(1); return getOperation()->getOpOperand(range.first); } ::mlir::OpOperand &getCMutable() { auto range = getODSOperandIndexAndLength(2); return getOperation()->getOpOperand(range.first); } std::pair getODSResultIndexAndLength(unsigned index) { return {index, 1}; } ::mlir::Operation::result_range getODSResults(unsigned index) { auto valueRange = getODSResultIndexAndLength(index); return {std::next(getOperation()->result_begin(), valueRange.first), std::next(getOperation()->result_begin(), valueRange.first + valueRange.second)}; } ::mlir::TypedValue<::mlir::VectorType> getRes() { return ::llvm::cast<::mlir::TypedValue<::mlir::VectorType>>(*getODSResults(0).begin()); } static ::llvm::LogicalResult setPropertiesFromAttr(Properties &prop, ::mlir::Attribute attr, ::llvm::function_ref<::mlir::InFlightDiagnostic()> emitError); static ::mlir::Attribute getPropertiesAsAttr(::mlir::MLIRContext *ctx, const Properties &prop); static llvm::hash_code computePropertiesHash(const Properties &prop); static std::optional getInherentAttr(::mlir::MLIRContext *ctx, const Properties &prop, llvm::StringRef name); static void setInherentAttr(Properties &prop, llvm::StringRef name, mlir::Attribute value); static void populateInherentAttrs(::mlir::MLIRContext *ctx, const Properties &prop, ::mlir::NamedAttrList &attrs); static ::llvm::LogicalResult verifyInherentAttrs(::mlir::OperationName opName, ::mlir::NamedAttrList &attrs, llvm::function_ref<::mlir::InFlightDiagnostic()> emitError); static ::llvm::LogicalResult readProperties(::mlir::DialectBytecodeReader &reader, ::mlir::OperationState &state); void writeProperties(::mlir::DialectBytecodeWriter &writer); ::mlir::IntegerAttr getCbszAttr() { return ::llvm::cast<::mlir::IntegerAttr>(getProperties().cbsz); } uint32_t getCbsz(); ::mlir::IntegerAttr getAbidAttr() { return ::llvm::cast<::mlir::IntegerAttr>(getProperties().abid); } uint32_t getAbid(); ::mlir::ROCDL::MFMAPermBAttr getBlgpAttr() { return ::llvm::cast<::mlir::ROCDL::MFMAPermBAttr>(getProperties().blgp); } ::mlir::ROCDL::MFMAPermB getBlgp(); void setCbszAttr(::mlir::IntegerAttr attr) { getProperties().cbsz = attr; } void setCbsz(uint32_t attrValue); void setAbidAttr(::mlir::IntegerAttr attr) { getProperties().abid = attr; } void setAbid(uint32_t attrValue); void setBlgpAttr(::mlir::ROCDL::MFMAPermBAttr attr) { getProperties().blgp = attr; } void setBlgp(::mlir::ROCDL::MFMAPermB attrValue); static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::Type res, ::mlir::Value a, ::mlir::Value b, ::mlir::Value c, ::mlir::IntegerAttr cbsz, ::mlir::IntegerAttr abid, ::mlir::ROCDL::MFMAPermBAttr blgp); static mfma_f32_16x16x32_bf8_bf8 create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::Type res, ::mlir::Value a, ::mlir::Value b, ::mlir::Value c, ::mlir::IntegerAttr cbsz, ::mlir::IntegerAttr abid, ::mlir::ROCDL::MFMAPermBAttr blgp); static mfma_f32_16x16x32_bf8_bf8 create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::Type res, ::mlir::Value a, ::mlir::Value b, ::mlir::Value c, ::mlir::IntegerAttr cbsz, ::mlir::IntegerAttr abid, ::mlir::ROCDL::MFMAPermBAttr blgp); static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::Value a, ::mlir::Value b, ::mlir::Value c, ::mlir::IntegerAttr cbsz, ::mlir::IntegerAttr abid, ::mlir::ROCDL::MFMAPermBAttr blgp); static mfma_f32_16x16x32_bf8_bf8 create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::Value a, ::mlir::Value b, ::mlir::Value c, ::mlir::IntegerAttr cbsz, ::mlir::IntegerAttr abid, ::mlir::ROCDL::MFMAPermBAttr blgp); static mfma_f32_16x16x32_bf8_bf8 create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::Value a, ::mlir::Value b, ::mlir::Value c, ::mlir::IntegerAttr cbsz, ::mlir::IntegerAttr abid, ::mlir::ROCDL::MFMAPermBAttr blgp); static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::Type res, ::mlir::Value a, ::mlir::Value b, ::mlir::Value c, uint32_t cbsz, uint32_t abid, ::mlir::ROCDL::MFMAPermB blgp); static mfma_f32_16x16x32_bf8_bf8 create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::Type res, ::mlir::Value a, ::mlir::Value b, ::mlir::Value c, uint32_t cbsz, uint32_t abid, ::mlir::ROCDL::MFMAPermB blgp); static mfma_f32_16x16x32_bf8_bf8 create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::Type res, ::mlir::Value a, ::mlir::Value b, ::mlir::Value c, uint32_t cbsz, uint32_t abid, ::mlir::ROCDL::MFMAPermB blgp); static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::Value a, ::mlir::Value b, ::mlir::Value c, uint32_t cbsz, uint32_t abid, ::mlir::ROCDL::MFMAPermB blgp); static mfma_f32_16x16x32_bf8_bf8 create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::Value a, ::mlir::Value b, ::mlir::Value c, uint32_t cbsz, uint32_t abid, ::mlir::ROCDL::MFMAPermB blgp); static mfma_f32_16x16x32_bf8_bf8 create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::Value a, ::mlir::Value b, ::mlir::Value c, uint32_t cbsz, uint32_t abid, ::mlir::ROCDL::MFMAPermB blgp); static void build(::mlir::OpBuilder &, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, ::llvm::ArrayRef<::mlir::NamedAttribute> attributes = {}); static mfma_f32_16x16x32_bf8_bf8 create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, ::llvm::ArrayRef<::mlir::NamedAttribute> attributes = {}); static mfma_f32_16x16x32_bf8_bf8 create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, ::llvm::ArrayRef<::mlir::NamedAttribute> attributes = {}); static void build(::mlir::OpBuilder &, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, const Properties &properties, ::llvm::ArrayRef<::mlir::NamedAttribute> discardableAttributes = {}); static mfma_f32_16x16x32_bf8_bf8 create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, const Properties &properties, ::llvm::ArrayRef<::mlir::NamedAttribute> discardableAttributes = {}); static mfma_f32_16x16x32_bf8_bf8 create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, const Properties &properties, ::llvm::ArrayRef<::mlir::NamedAttribute> discardableAttributes = {}); ::llvm::LogicalResult verifyInvariantsImpl(); ::llvm::LogicalResult verifyInvariants(); static ::mlir::ParseResult parse(::mlir::OpAsmParser &parser, ::mlir::OperationState &result); void print(::mlir::OpAsmPrinter &_odsPrinter); private: ::mlir::StringAttr getAttributeNameForIndex(unsigned index) { return getAttributeNameForIndex((*this)->getName(), index); } static ::mlir::StringAttr getAttributeNameForIndex(::mlir::OperationName name, unsigned index) { assert(index < 3 && "invalid attribute index"); assert(name.getStringRef() == getOperationName() && "invalid operation name"); assert(name.isRegistered() && "Operation isn't registered, missing a " "dependent dialect loading?"); return name.getAttributeNames()[index]; } public: }; } // namespace mlir::ROCDL MLIR_DECLARE_EXPLICIT_TYPE_ID(::mlir::ROCDL::mfma_f32_16x16x32_bf8_bf8) MLIR_DECLARE_EXPLICIT_TYPE_ID(::mlir::ROCDL::detail::mfma_f32_16x16x32_bf8_bf8GenericAdaptorBase::Properties) namespace mlir::ROCDL { //===----------------------------------------------------------------------===// // ::mlir::ROCDL::mfma_f32_16x16x32_bf8_fp8 declarations //===----------------------------------------------------------------------===// namespace detail { class mfma_f32_16x16x32_bf8_fp8GenericAdaptorBase { public: struct Properties { using abidTy = ::mlir::IntegerAttr; abidTy abid; auto getAbid() const { auto &propStorage = this->abid; return ::llvm::cast<::mlir::IntegerAttr>(propStorage); } void setAbid(const ::mlir::IntegerAttr &propValue) { this->abid = propValue; } using blgpTy = ::mlir::ROCDL::MFMAPermBAttr; blgpTy blgp; auto getBlgp() const { auto &propStorage = this->blgp; return ::llvm::cast<::mlir::ROCDL::MFMAPermBAttr>(propStorage); } void setBlgp(const ::mlir::ROCDL::MFMAPermBAttr &propValue) { this->blgp = propValue; } using cbszTy = ::mlir::IntegerAttr; cbszTy cbsz; auto getCbsz() const { auto &propStorage = this->cbsz; return ::llvm::cast<::mlir::IntegerAttr>(propStorage); } void setCbsz(const ::mlir::IntegerAttr &propValue) { this->cbsz = propValue; } bool operator==(const Properties &rhs) const { return rhs.abid == this->abid && rhs.blgp == this->blgp && rhs.cbsz == this->cbsz && true; } bool operator!=(const Properties &rhs) const { return !(*this == rhs); } }; protected: ::mlir::DictionaryAttr odsAttrs; ::std::optional<::mlir::OperationName> odsOpName; Properties properties; ::mlir::RegionRange odsRegions; public: mfma_f32_16x16x32_bf8_fp8GenericAdaptorBase(::mlir::DictionaryAttr attrs, const Properties &properties, ::mlir::RegionRange regions = {}) : odsAttrs(attrs), properties(properties), odsRegions(regions) { if (odsAttrs) odsOpName.emplace("rocdl.mfma.f32.16x16x32.bf8.fp8", odsAttrs.getContext()); } mfma_f32_16x16x32_bf8_fp8GenericAdaptorBase(mfma_f32_16x16x32_bf8_fp8 op); std::pair getODSOperandIndexAndLength(unsigned index, unsigned odsOperandsSize) { return {index, 1}; } const Properties &getProperties() { return properties; } ::mlir::DictionaryAttr getAttributes() { return odsAttrs; } ::mlir::IntegerAttr getCbszAttr() { auto attr = ::llvm::cast<::mlir::IntegerAttr>(getProperties().cbsz); return attr; } uint32_t getCbsz(); ::mlir::IntegerAttr getAbidAttr() { auto attr = ::llvm::cast<::mlir::IntegerAttr>(getProperties().abid); return attr; } uint32_t getAbid(); ::mlir::ROCDL::MFMAPermBAttr getBlgpAttr() { auto attr = ::llvm::cast<::mlir::ROCDL::MFMAPermBAttr>(getProperties().blgp); return attr; } ::mlir::ROCDL::MFMAPermB getBlgp(); }; } // namespace detail template class mfma_f32_16x16x32_bf8_fp8GenericAdaptor : public detail::mfma_f32_16x16x32_bf8_fp8GenericAdaptorBase { using ValueT = ::llvm::detail::ValueOfRange; using Base = detail::mfma_f32_16x16x32_bf8_fp8GenericAdaptorBase; static constexpr int odsIndex_a = 0; static constexpr int odsIndex_b = 1; static constexpr int odsIndex_c = 2; public: mfma_f32_16x16x32_bf8_fp8GenericAdaptor(RangeT values, ::mlir::DictionaryAttr attrs, const Properties &properties, ::mlir::RegionRange regions = {}) : Base(attrs, properties, regions), odsOperands(values) {} mfma_f32_16x16x32_bf8_fp8GenericAdaptor(RangeT values, ::mlir::DictionaryAttr attrs, ::mlir::PropertyRef properties, ::mlir::RegionRange regions = {}) : mfma_f32_16x16x32_bf8_fp8GenericAdaptor(values, attrs, (properties ? *properties.as() : Properties{}), regions) {} mfma_f32_16x16x32_bf8_fp8GenericAdaptor(RangeT values, ::mlir::DictionaryAttr attrs = nullptr) : mfma_f32_16x16x32_bf8_fp8GenericAdaptor(values, attrs, Properties{}, {}) {} mfma_f32_16x16x32_bf8_fp8GenericAdaptor(RangeT values, const mfma_f32_16x16x32_bf8_fp8GenericAdaptorBase &base) : Base(base), odsOperands(values) {} template >> mfma_f32_16x16x32_bf8_fp8GenericAdaptor(RangeT values, LateInst op) : Base(op), odsOperands(values) {} std::pair getODSOperandIndexAndLength(unsigned index) { return Base::getODSOperandIndexAndLength(index, odsOperands.size()); } RangeT getODSOperands(unsigned index) { auto valueRange = getODSOperandIndexAndLength(index); return {std::next(odsOperands.begin(), valueRange.first), std::next(odsOperands.begin(), valueRange.first + valueRange.second)}; } ValueT getA() { return (*getODSOperands(0).begin()); } ValueT getB() { return (*getODSOperands(1).begin()); } ValueT getC() { return (*getODSOperands(2).begin()); } RangeT getOperands() { return odsOperands; } private: RangeT odsOperands; }; class mfma_f32_16x16x32_bf8_fp8Adaptor : public mfma_f32_16x16x32_bf8_fp8GenericAdaptor<::mlir::ValueRange> { public: using mfma_f32_16x16x32_bf8_fp8GenericAdaptor::mfma_f32_16x16x32_bf8_fp8GenericAdaptor; mfma_f32_16x16x32_bf8_fp8Adaptor(mfma_f32_16x16x32_bf8_fp8 op); ::llvm::LogicalResult verify(::mlir::Location loc); }; class mfma_f32_16x16x32_bf8_fp8 : public ::mlir::Op::Impl, ::mlir::OpTrait::ZeroSuccessors, ::mlir::OpTrait::NOperands<3>::Impl, ::mlir::OpTrait::OpInvariants, ::mlir::BytecodeOpInterface::Trait> { public: using Op::Op; using Op::print; using Adaptor = mfma_f32_16x16x32_bf8_fp8Adaptor; template using GenericAdaptor = mfma_f32_16x16x32_bf8_fp8GenericAdaptor; using FoldAdaptor = GenericAdaptor<::llvm::ArrayRef<::mlir::Attribute>>; static constexpr int odsIndex_a = 0; static constexpr int odsIndex_b = 1; static constexpr int odsIndex_c = 2; using Properties = FoldAdaptor::Properties; static ::llvm::ArrayRef<::llvm::StringRef> getAttributeNames() { static ::llvm::StringRef attrNames[] = {::llvm::StringRef("abid"), ::llvm::StringRef("blgp"), ::llvm::StringRef("cbsz")}; return ::llvm::ArrayRef(attrNames); } ::mlir::StringAttr getAbidAttrName() { return getAttributeNameForIndex(0); } static ::mlir::StringAttr getAbidAttrName(::mlir::OperationName name) { return getAttributeNameForIndex(name, 0); } ::mlir::StringAttr getBlgpAttrName() { return getAttributeNameForIndex(1); } static ::mlir::StringAttr getBlgpAttrName(::mlir::OperationName name) { return getAttributeNameForIndex(name, 1); } ::mlir::StringAttr getCbszAttrName() { return getAttributeNameForIndex(2); } static ::mlir::StringAttr getCbszAttrName(::mlir::OperationName name) { return getAttributeNameForIndex(name, 2); } static constexpr ::llvm::StringLiteral getOperationName() { return ::llvm::StringLiteral("rocdl.mfma.f32.16x16x32.bf8.fp8"); } std::pair getODSOperandIndexAndLength(unsigned index) { return {index, 1}; } ::mlir::Operation::operand_range getODSOperands(unsigned index) { auto valueRange = getODSOperandIndexAndLength(index); return {std::next(getOperation()->operand_begin(), valueRange.first), std::next(getOperation()->operand_begin(), valueRange.first + valueRange.second)}; } ::mlir::TypedValue<::mlir::Type> getA() { return ::llvm::cast<::mlir::TypedValue<::mlir::Type>>(*getODSOperands(0).begin()); } ::mlir::TypedValue<::mlir::Type> getB() { return ::llvm::cast<::mlir::TypedValue<::mlir::Type>>(*getODSOperands(1).begin()); } ::mlir::TypedValue<::mlir::VectorType> getC() { return ::llvm::cast<::mlir::TypedValue<::mlir::VectorType>>(*getODSOperands(2).begin()); } ::mlir::OpOperand &getAMutable() { auto range = getODSOperandIndexAndLength(0); return getOperation()->getOpOperand(range.first); } ::mlir::OpOperand &getBMutable() { auto range = getODSOperandIndexAndLength(1); return getOperation()->getOpOperand(range.first); } ::mlir::OpOperand &getCMutable() { auto range = getODSOperandIndexAndLength(2); return getOperation()->getOpOperand(range.first); } std::pair getODSResultIndexAndLength(unsigned index) { return {index, 1}; } ::mlir::Operation::result_range getODSResults(unsigned index) { auto valueRange = getODSResultIndexAndLength(index); return {std::next(getOperation()->result_begin(), valueRange.first), std::next(getOperation()->result_begin(), valueRange.first + valueRange.second)}; } ::mlir::TypedValue<::mlir::VectorType> getRes() { return ::llvm::cast<::mlir::TypedValue<::mlir::VectorType>>(*getODSResults(0).begin()); } static ::llvm::LogicalResult setPropertiesFromAttr(Properties &prop, ::mlir::Attribute attr, ::llvm::function_ref<::mlir::InFlightDiagnostic()> emitError); static ::mlir::Attribute getPropertiesAsAttr(::mlir::MLIRContext *ctx, const Properties &prop); static llvm::hash_code computePropertiesHash(const Properties &prop); static std::optional getInherentAttr(::mlir::MLIRContext *ctx, const Properties &prop, llvm::StringRef name); static void setInherentAttr(Properties &prop, llvm::StringRef name, mlir::Attribute value); static void populateInherentAttrs(::mlir::MLIRContext *ctx, const Properties &prop, ::mlir::NamedAttrList &attrs); static ::llvm::LogicalResult verifyInherentAttrs(::mlir::OperationName opName, ::mlir::NamedAttrList &attrs, llvm::function_ref<::mlir::InFlightDiagnostic()> emitError); static ::llvm::LogicalResult readProperties(::mlir::DialectBytecodeReader &reader, ::mlir::OperationState &state); void writeProperties(::mlir::DialectBytecodeWriter &writer); ::mlir::IntegerAttr getCbszAttr() { return ::llvm::cast<::mlir::IntegerAttr>(getProperties().cbsz); } uint32_t getCbsz(); ::mlir::IntegerAttr getAbidAttr() { return ::llvm::cast<::mlir::IntegerAttr>(getProperties().abid); } uint32_t getAbid(); ::mlir::ROCDL::MFMAPermBAttr getBlgpAttr() { return ::llvm::cast<::mlir::ROCDL::MFMAPermBAttr>(getProperties().blgp); } ::mlir::ROCDL::MFMAPermB getBlgp(); void setCbszAttr(::mlir::IntegerAttr attr) { getProperties().cbsz = attr; } void setCbsz(uint32_t attrValue); void setAbidAttr(::mlir::IntegerAttr attr) { getProperties().abid = attr; } void setAbid(uint32_t attrValue); void setBlgpAttr(::mlir::ROCDL::MFMAPermBAttr attr) { getProperties().blgp = attr; } void setBlgp(::mlir::ROCDL::MFMAPermB attrValue); static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::Type res, ::mlir::Value a, ::mlir::Value b, ::mlir::Value c, ::mlir::IntegerAttr cbsz, ::mlir::IntegerAttr abid, ::mlir::ROCDL::MFMAPermBAttr blgp); static mfma_f32_16x16x32_bf8_fp8 create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::Type res, ::mlir::Value a, ::mlir::Value b, ::mlir::Value c, ::mlir::IntegerAttr cbsz, ::mlir::IntegerAttr abid, ::mlir::ROCDL::MFMAPermBAttr blgp); static mfma_f32_16x16x32_bf8_fp8 create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::Type res, ::mlir::Value a, ::mlir::Value b, ::mlir::Value c, ::mlir::IntegerAttr cbsz, ::mlir::IntegerAttr abid, ::mlir::ROCDL::MFMAPermBAttr blgp); static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::Value a, ::mlir::Value b, ::mlir::Value c, ::mlir::IntegerAttr cbsz, ::mlir::IntegerAttr abid, ::mlir::ROCDL::MFMAPermBAttr blgp); static mfma_f32_16x16x32_bf8_fp8 create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::Value a, ::mlir::Value b, ::mlir::Value c, ::mlir::IntegerAttr cbsz, ::mlir::IntegerAttr abid, ::mlir::ROCDL::MFMAPermBAttr blgp); static mfma_f32_16x16x32_bf8_fp8 create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::Value a, ::mlir::Value b, ::mlir::Value c, ::mlir::IntegerAttr cbsz, ::mlir::IntegerAttr abid, ::mlir::ROCDL::MFMAPermBAttr blgp); static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::Type res, ::mlir::Value a, ::mlir::Value b, ::mlir::Value c, uint32_t cbsz, uint32_t abid, ::mlir::ROCDL::MFMAPermB blgp); static mfma_f32_16x16x32_bf8_fp8 create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::Type res, ::mlir::Value a, ::mlir::Value b, ::mlir::Value c, uint32_t cbsz, uint32_t abid, ::mlir::ROCDL::MFMAPermB blgp); static mfma_f32_16x16x32_bf8_fp8 create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::Type res, ::mlir::Value a, ::mlir::Value b, ::mlir::Value c, uint32_t cbsz, uint32_t abid, ::mlir::ROCDL::MFMAPermB blgp); static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::Value a, ::mlir::Value b, ::mlir::Value c, uint32_t cbsz, uint32_t abid, ::mlir::ROCDL::MFMAPermB blgp); static mfma_f32_16x16x32_bf8_fp8 create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::Value a, ::mlir::Value b, ::mlir::Value c, uint32_t cbsz, uint32_t abid, ::mlir::ROCDL::MFMAPermB blgp); static mfma_f32_16x16x32_bf8_fp8 create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::Value a, ::mlir::Value b, ::mlir::Value c, uint32_t cbsz, uint32_t abid, ::mlir::ROCDL::MFMAPermB blgp); static void build(::mlir::OpBuilder &, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, ::llvm::ArrayRef<::mlir::NamedAttribute> attributes = {}); static mfma_f32_16x16x32_bf8_fp8 create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, ::llvm::ArrayRef<::mlir::NamedAttribute> attributes = {}); static mfma_f32_16x16x32_bf8_fp8 create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, ::llvm::ArrayRef<::mlir::NamedAttribute> attributes = {}); static void build(::mlir::OpBuilder &, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, const Properties &properties, ::llvm::ArrayRef<::mlir::NamedAttribute> discardableAttributes = {}); static mfma_f32_16x16x32_bf8_fp8 create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, const Properties &properties, ::llvm::ArrayRef<::mlir::NamedAttribute> discardableAttributes = {}); static mfma_f32_16x16x32_bf8_fp8 create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, const Properties &properties, ::llvm::ArrayRef<::mlir::NamedAttribute> discardableAttributes = {}); ::llvm::LogicalResult verifyInvariantsImpl(); ::llvm::LogicalResult verifyInvariants(); static ::mlir::ParseResult parse(::mlir::OpAsmParser &parser, ::mlir::OperationState &result); void print(::mlir::OpAsmPrinter &_odsPrinter); private: ::mlir::StringAttr getAttributeNameForIndex(unsigned index) { return getAttributeNameForIndex((*this)->getName(), index); } static ::mlir::StringAttr getAttributeNameForIndex(::mlir::OperationName name, unsigned index) { assert(index < 3 && "invalid attribute index"); assert(name.getStringRef() == getOperationName() && "invalid operation name"); assert(name.isRegistered() && "Operation isn't registered, missing a " "dependent dialect loading?"); return name.getAttributeNames()[index]; } public: }; } // namespace mlir::ROCDL MLIR_DECLARE_EXPLICIT_TYPE_ID(::mlir::ROCDL::mfma_f32_16x16x32_bf8_fp8) MLIR_DECLARE_EXPLICIT_TYPE_ID(::mlir::ROCDL::detail::mfma_f32_16x16x32_bf8_fp8GenericAdaptorBase::Properties) namespace mlir::ROCDL { //===----------------------------------------------------------------------===// // ::mlir::ROCDL::mfma_f32_16x16x32_f16 declarations //===----------------------------------------------------------------------===// namespace detail { class mfma_f32_16x16x32_f16GenericAdaptorBase { public: struct Properties { using abidTy = ::mlir::IntegerAttr; abidTy abid; auto getAbid() const { auto &propStorage = this->abid; return ::llvm::cast<::mlir::IntegerAttr>(propStorage); } void setAbid(const ::mlir::IntegerAttr &propValue) { this->abid = propValue; } using blgpTy = ::mlir::ROCDL::MFMAPermBAttr; blgpTy blgp; auto getBlgp() const { auto &propStorage = this->blgp; return ::llvm::cast<::mlir::ROCDL::MFMAPermBAttr>(propStorage); } void setBlgp(const ::mlir::ROCDL::MFMAPermBAttr &propValue) { this->blgp = propValue; } using cbszTy = ::mlir::IntegerAttr; cbszTy cbsz; auto getCbsz() const { auto &propStorage = this->cbsz; return ::llvm::cast<::mlir::IntegerAttr>(propStorage); } void setCbsz(const ::mlir::IntegerAttr &propValue) { this->cbsz = propValue; } bool operator==(const Properties &rhs) const { return rhs.abid == this->abid && rhs.blgp == this->blgp && rhs.cbsz == this->cbsz && true; } bool operator!=(const Properties &rhs) const { return !(*this == rhs); } }; protected: ::mlir::DictionaryAttr odsAttrs; ::std::optional<::mlir::OperationName> odsOpName; Properties properties; ::mlir::RegionRange odsRegions; public: mfma_f32_16x16x32_f16GenericAdaptorBase(::mlir::DictionaryAttr attrs, const Properties &properties, ::mlir::RegionRange regions = {}) : odsAttrs(attrs), properties(properties), odsRegions(regions) { if (odsAttrs) odsOpName.emplace("rocdl.mfma.f32.16x16x32.f16", odsAttrs.getContext()); } mfma_f32_16x16x32_f16GenericAdaptorBase(mfma_f32_16x16x32_f16 op); std::pair getODSOperandIndexAndLength(unsigned index, unsigned odsOperandsSize) { return {index, 1}; } const Properties &getProperties() { return properties; } ::mlir::DictionaryAttr getAttributes() { return odsAttrs; } ::mlir::IntegerAttr getCbszAttr() { auto attr = ::llvm::cast<::mlir::IntegerAttr>(getProperties().cbsz); return attr; } uint32_t getCbsz(); ::mlir::IntegerAttr getAbidAttr() { auto attr = ::llvm::cast<::mlir::IntegerAttr>(getProperties().abid); return attr; } uint32_t getAbid(); ::mlir::ROCDL::MFMAPermBAttr getBlgpAttr() { auto attr = ::llvm::cast<::mlir::ROCDL::MFMAPermBAttr>(getProperties().blgp); return attr; } ::mlir::ROCDL::MFMAPermB getBlgp(); }; } // namespace detail template class mfma_f32_16x16x32_f16GenericAdaptor : public detail::mfma_f32_16x16x32_f16GenericAdaptorBase { using ValueT = ::llvm::detail::ValueOfRange; using Base = detail::mfma_f32_16x16x32_f16GenericAdaptorBase; static constexpr int odsIndex_a = 0; static constexpr int odsIndex_b = 1; static constexpr int odsIndex_c = 2; public: mfma_f32_16x16x32_f16GenericAdaptor(RangeT values, ::mlir::DictionaryAttr attrs, const Properties &properties, ::mlir::RegionRange regions = {}) : Base(attrs, properties, regions), odsOperands(values) {} mfma_f32_16x16x32_f16GenericAdaptor(RangeT values, ::mlir::DictionaryAttr attrs, ::mlir::PropertyRef properties, ::mlir::RegionRange regions = {}) : mfma_f32_16x16x32_f16GenericAdaptor(values, attrs, (properties ? *properties.as() : Properties{}), regions) {} mfma_f32_16x16x32_f16GenericAdaptor(RangeT values, ::mlir::DictionaryAttr attrs = nullptr) : mfma_f32_16x16x32_f16GenericAdaptor(values, attrs, Properties{}, {}) {} mfma_f32_16x16x32_f16GenericAdaptor(RangeT values, const mfma_f32_16x16x32_f16GenericAdaptorBase &base) : Base(base), odsOperands(values) {} template >> mfma_f32_16x16x32_f16GenericAdaptor(RangeT values, LateInst op) : Base(op), odsOperands(values) {} std::pair getODSOperandIndexAndLength(unsigned index) { return Base::getODSOperandIndexAndLength(index, odsOperands.size()); } RangeT getODSOperands(unsigned index) { auto valueRange = getODSOperandIndexAndLength(index); return {std::next(odsOperands.begin(), valueRange.first), std::next(odsOperands.begin(), valueRange.first + valueRange.second)}; } ValueT getA() { return (*getODSOperands(0).begin()); } ValueT getB() { return (*getODSOperands(1).begin()); } ValueT getC() { return (*getODSOperands(2).begin()); } RangeT getOperands() { return odsOperands; } private: RangeT odsOperands; }; class mfma_f32_16x16x32_f16Adaptor : public mfma_f32_16x16x32_f16GenericAdaptor<::mlir::ValueRange> { public: using mfma_f32_16x16x32_f16GenericAdaptor::mfma_f32_16x16x32_f16GenericAdaptor; mfma_f32_16x16x32_f16Adaptor(mfma_f32_16x16x32_f16 op); ::llvm::LogicalResult verify(::mlir::Location loc); }; class mfma_f32_16x16x32_f16 : public ::mlir::Op::Impl, ::mlir::OpTrait::ZeroSuccessors, ::mlir::OpTrait::NOperands<3>::Impl, ::mlir::OpTrait::OpInvariants, ::mlir::BytecodeOpInterface::Trait> { public: using Op::Op; using Op::print; using Adaptor = mfma_f32_16x16x32_f16Adaptor; template using GenericAdaptor = mfma_f32_16x16x32_f16GenericAdaptor; using FoldAdaptor = GenericAdaptor<::llvm::ArrayRef<::mlir::Attribute>>; static constexpr int odsIndex_a = 0; static constexpr int odsIndex_b = 1; static constexpr int odsIndex_c = 2; using Properties = FoldAdaptor::Properties; static ::llvm::ArrayRef<::llvm::StringRef> getAttributeNames() { static ::llvm::StringRef attrNames[] = {::llvm::StringRef("abid"), ::llvm::StringRef("blgp"), ::llvm::StringRef("cbsz")}; return ::llvm::ArrayRef(attrNames); } ::mlir::StringAttr getAbidAttrName() { return getAttributeNameForIndex(0); } static ::mlir::StringAttr getAbidAttrName(::mlir::OperationName name) { return getAttributeNameForIndex(name, 0); } ::mlir::StringAttr getBlgpAttrName() { return getAttributeNameForIndex(1); } static ::mlir::StringAttr getBlgpAttrName(::mlir::OperationName name) { return getAttributeNameForIndex(name, 1); } ::mlir::StringAttr getCbszAttrName() { return getAttributeNameForIndex(2); } static ::mlir::StringAttr getCbszAttrName(::mlir::OperationName name) { return getAttributeNameForIndex(name, 2); } static constexpr ::llvm::StringLiteral getOperationName() { return ::llvm::StringLiteral("rocdl.mfma.f32.16x16x32.f16"); } std::pair getODSOperandIndexAndLength(unsigned index) { return {index, 1}; } ::mlir::Operation::operand_range getODSOperands(unsigned index) { auto valueRange = getODSOperandIndexAndLength(index); return {std::next(getOperation()->operand_begin(), valueRange.first), std::next(getOperation()->operand_begin(), valueRange.first + valueRange.second)}; } ::mlir::TypedValue<::mlir::VectorType> getA() { return ::llvm::cast<::mlir::TypedValue<::mlir::VectorType>>(*getODSOperands(0).begin()); } ::mlir::TypedValue<::mlir::VectorType> getB() { return ::llvm::cast<::mlir::TypedValue<::mlir::VectorType>>(*getODSOperands(1).begin()); } ::mlir::TypedValue<::mlir::VectorType> getC() { return ::llvm::cast<::mlir::TypedValue<::mlir::VectorType>>(*getODSOperands(2).begin()); } ::mlir::OpOperand &getAMutable() { auto range = getODSOperandIndexAndLength(0); return getOperation()->getOpOperand(range.first); } ::mlir::OpOperand &getBMutable() { auto range = getODSOperandIndexAndLength(1); return getOperation()->getOpOperand(range.first); } ::mlir::OpOperand &getCMutable() { auto range = getODSOperandIndexAndLength(2); return getOperation()->getOpOperand(range.first); } std::pair getODSResultIndexAndLength(unsigned index) { return {index, 1}; } ::mlir::Operation::result_range getODSResults(unsigned index) { auto valueRange = getODSResultIndexAndLength(index); return {std::next(getOperation()->result_begin(), valueRange.first), std::next(getOperation()->result_begin(), valueRange.first + valueRange.second)}; } ::mlir::TypedValue<::mlir::VectorType> getRes() { return ::llvm::cast<::mlir::TypedValue<::mlir::VectorType>>(*getODSResults(0).begin()); } static ::llvm::LogicalResult setPropertiesFromAttr(Properties &prop, ::mlir::Attribute attr, ::llvm::function_ref<::mlir::InFlightDiagnostic()> emitError); static ::mlir::Attribute getPropertiesAsAttr(::mlir::MLIRContext *ctx, const Properties &prop); static llvm::hash_code computePropertiesHash(const Properties &prop); static std::optional getInherentAttr(::mlir::MLIRContext *ctx, const Properties &prop, llvm::StringRef name); static void setInherentAttr(Properties &prop, llvm::StringRef name, mlir::Attribute value); static void populateInherentAttrs(::mlir::MLIRContext *ctx, const Properties &prop, ::mlir::NamedAttrList &attrs); static ::llvm::LogicalResult verifyInherentAttrs(::mlir::OperationName opName, ::mlir::NamedAttrList &attrs, llvm::function_ref<::mlir::InFlightDiagnostic()> emitError); static ::llvm::LogicalResult readProperties(::mlir::DialectBytecodeReader &reader, ::mlir::OperationState &state); void writeProperties(::mlir::DialectBytecodeWriter &writer); ::mlir::IntegerAttr getCbszAttr() { return ::llvm::cast<::mlir::IntegerAttr>(getProperties().cbsz); } uint32_t getCbsz(); ::mlir::IntegerAttr getAbidAttr() { return ::llvm::cast<::mlir::IntegerAttr>(getProperties().abid); } uint32_t getAbid(); ::mlir::ROCDL::MFMAPermBAttr getBlgpAttr() { return ::llvm::cast<::mlir::ROCDL::MFMAPermBAttr>(getProperties().blgp); } ::mlir::ROCDL::MFMAPermB getBlgp(); void setCbszAttr(::mlir::IntegerAttr attr) { getProperties().cbsz = attr; } void setCbsz(uint32_t attrValue); void setAbidAttr(::mlir::IntegerAttr attr) { getProperties().abid = attr; } void setAbid(uint32_t attrValue); void setBlgpAttr(::mlir::ROCDL::MFMAPermBAttr attr) { getProperties().blgp = attr; } void setBlgp(::mlir::ROCDL::MFMAPermB attrValue); static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::Type res, ::mlir::Value a, ::mlir::Value b, ::mlir::Value c, ::mlir::IntegerAttr cbsz, ::mlir::IntegerAttr abid, ::mlir::ROCDL::MFMAPermBAttr blgp); static mfma_f32_16x16x32_f16 create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::Type res, ::mlir::Value a, ::mlir::Value b, ::mlir::Value c, ::mlir::IntegerAttr cbsz, ::mlir::IntegerAttr abid, ::mlir::ROCDL::MFMAPermBAttr blgp); static mfma_f32_16x16x32_f16 create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::Type res, ::mlir::Value a, ::mlir::Value b, ::mlir::Value c, ::mlir::IntegerAttr cbsz, ::mlir::IntegerAttr abid, ::mlir::ROCDL::MFMAPermBAttr blgp); static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::Value a, ::mlir::Value b, ::mlir::Value c, ::mlir::IntegerAttr cbsz, ::mlir::IntegerAttr abid, ::mlir::ROCDL::MFMAPermBAttr blgp); static mfma_f32_16x16x32_f16 create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::Value a, ::mlir::Value b, ::mlir::Value c, ::mlir::IntegerAttr cbsz, ::mlir::IntegerAttr abid, ::mlir::ROCDL::MFMAPermBAttr blgp); static mfma_f32_16x16x32_f16 create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::Value a, ::mlir::Value b, ::mlir::Value c, ::mlir::IntegerAttr cbsz, ::mlir::IntegerAttr abid, ::mlir::ROCDL::MFMAPermBAttr blgp); static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::Type res, ::mlir::Value a, ::mlir::Value b, ::mlir::Value c, uint32_t cbsz, uint32_t abid, ::mlir::ROCDL::MFMAPermB blgp); static mfma_f32_16x16x32_f16 create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::Type res, ::mlir::Value a, ::mlir::Value b, ::mlir::Value c, uint32_t cbsz, uint32_t abid, ::mlir::ROCDL::MFMAPermB blgp); static mfma_f32_16x16x32_f16 create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::Type res, ::mlir::Value a, ::mlir::Value b, ::mlir::Value c, uint32_t cbsz, uint32_t abid, ::mlir::ROCDL::MFMAPermB blgp); static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::Value a, ::mlir::Value b, ::mlir::Value c, uint32_t cbsz, uint32_t abid, ::mlir::ROCDL::MFMAPermB blgp); static mfma_f32_16x16x32_f16 create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::Value a, ::mlir::Value b, ::mlir::Value c, uint32_t cbsz, uint32_t abid, ::mlir::ROCDL::MFMAPermB blgp); static mfma_f32_16x16x32_f16 create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::Value a, ::mlir::Value b, ::mlir::Value c, uint32_t cbsz, uint32_t abid, ::mlir::ROCDL::MFMAPermB blgp); static void build(::mlir::OpBuilder &, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, ::llvm::ArrayRef<::mlir::NamedAttribute> attributes = {}); static mfma_f32_16x16x32_f16 create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, ::llvm::ArrayRef<::mlir::NamedAttribute> attributes = {}); static mfma_f32_16x16x32_f16 create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, ::llvm::ArrayRef<::mlir::NamedAttribute> attributes = {}); static void build(::mlir::OpBuilder &, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, const Properties &properties, ::llvm::ArrayRef<::mlir::NamedAttribute> discardableAttributes = {}); static mfma_f32_16x16x32_f16 create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, const Properties &properties, ::llvm::ArrayRef<::mlir::NamedAttribute> discardableAttributes = {}); static mfma_f32_16x16x32_f16 create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, const Properties &properties, ::llvm::ArrayRef<::mlir::NamedAttribute> discardableAttributes = {}); ::llvm::LogicalResult verifyInvariantsImpl(); ::llvm::LogicalResult verifyInvariants(); static ::mlir::ParseResult parse(::mlir::OpAsmParser &parser, ::mlir::OperationState &result); void print(::mlir::OpAsmPrinter &_odsPrinter); private: ::mlir::StringAttr getAttributeNameForIndex(unsigned index) { return getAttributeNameForIndex((*this)->getName(), index); } static ::mlir::StringAttr getAttributeNameForIndex(::mlir::OperationName name, unsigned index) { assert(index < 3 && "invalid attribute index"); assert(name.getStringRef() == getOperationName() && "invalid operation name"); assert(name.isRegistered() && "Operation isn't registered, missing a " "dependent dialect loading?"); return name.getAttributeNames()[index]; } public: }; } // namespace mlir::ROCDL MLIR_DECLARE_EXPLICIT_TYPE_ID(::mlir::ROCDL::mfma_f32_16x16x32_f16) MLIR_DECLARE_EXPLICIT_TYPE_ID(::mlir::ROCDL::detail::mfma_f32_16x16x32_f16GenericAdaptorBase::Properties) namespace mlir::ROCDL { //===----------------------------------------------------------------------===// // ::mlir::ROCDL::mfma_f32_16x16x32_fp8_bf8 declarations //===----------------------------------------------------------------------===// namespace detail { class mfma_f32_16x16x32_fp8_bf8GenericAdaptorBase { public: struct Properties { using abidTy = ::mlir::IntegerAttr; abidTy abid; auto getAbid() const { auto &propStorage = this->abid; return ::llvm::cast<::mlir::IntegerAttr>(propStorage); } void setAbid(const ::mlir::IntegerAttr &propValue) { this->abid = propValue; } using blgpTy = ::mlir::ROCDL::MFMAPermBAttr; blgpTy blgp; auto getBlgp() const { auto &propStorage = this->blgp; return ::llvm::cast<::mlir::ROCDL::MFMAPermBAttr>(propStorage); } void setBlgp(const ::mlir::ROCDL::MFMAPermBAttr &propValue) { this->blgp = propValue; } using cbszTy = ::mlir::IntegerAttr; cbszTy cbsz; auto getCbsz() const { auto &propStorage = this->cbsz; return ::llvm::cast<::mlir::IntegerAttr>(propStorage); } void setCbsz(const ::mlir::IntegerAttr &propValue) { this->cbsz = propValue; } bool operator==(const Properties &rhs) const { return rhs.abid == this->abid && rhs.blgp == this->blgp && rhs.cbsz == this->cbsz && true; } bool operator!=(const Properties &rhs) const { return !(*this == rhs); } }; protected: ::mlir::DictionaryAttr odsAttrs; ::std::optional<::mlir::OperationName> odsOpName; Properties properties; ::mlir::RegionRange odsRegions; public: mfma_f32_16x16x32_fp8_bf8GenericAdaptorBase(::mlir::DictionaryAttr attrs, const Properties &properties, ::mlir::RegionRange regions = {}) : odsAttrs(attrs), properties(properties), odsRegions(regions) { if (odsAttrs) odsOpName.emplace("rocdl.mfma.f32.16x16x32.fp8.bf8", odsAttrs.getContext()); } mfma_f32_16x16x32_fp8_bf8GenericAdaptorBase(mfma_f32_16x16x32_fp8_bf8 op); std::pair getODSOperandIndexAndLength(unsigned index, unsigned odsOperandsSize) { return {index, 1}; } const Properties &getProperties() { return properties; } ::mlir::DictionaryAttr getAttributes() { return odsAttrs; } ::mlir::IntegerAttr getCbszAttr() { auto attr = ::llvm::cast<::mlir::IntegerAttr>(getProperties().cbsz); return attr; } uint32_t getCbsz(); ::mlir::IntegerAttr getAbidAttr() { auto attr = ::llvm::cast<::mlir::IntegerAttr>(getProperties().abid); return attr; } uint32_t getAbid(); ::mlir::ROCDL::MFMAPermBAttr getBlgpAttr() { auto attr = ::llvm::cast<::mlir::ROCDL::MFMAPermBAttr>(getProperties().blgp); return attr; } ::mlir::ROCDL::MFMAPermB getBlgp(); }; } // namespace detail template class mfma_f32_16x16x32_fp8_bf8GenericAdaptor : public detail::mfma_f32_16x16x32_fp8_bf8GenericAdaptorBase { using ValueT = ::llvm::detail::ValueOfRange; using Base = detail::mfma_f32_16x16x32_fp8_bf8GenericAdaptorBase; static constexpr int odsIndex_a = 0; static constexpr int odsIndex_b = 1; static constexpr int odsIndex_c = 2; public: mfma_f32_16x16x32_fp8_bf8GenericAdaptor(RangeT values, ::mlir::DictionaryAttr attrs, const Properties &properties, ::mlir::RegionRange regions = {}) : Base(attrs, properties, regions), odsOperands(values) {} mfma_f32_16x16x32_fp8_bf8GenericAdaptor(RangeT values, ::mlir::DictionaryAttr attrs, ::mlir::PropertyRef properties, ::mlir::RegionRange regions = {}) : mfma_f32_16x16x32_fp8_bf8GenericAdaptor(values, attrs, (properties ? *properties.as() : Properties{}), regions) {} mfma_f32_16x16x32_fp8_bf8GenericAdaptor(RangeT values, ::mlir::DictionaryAttr attrs = nullptr) : mfma_f32_16x16x32_fp8_bf8GenericAdaptor(values, attrs, Properties{}, {}) {} mfma_f32_16x16x32_fp8_bf8GenericAdaptor(RangeT values, const mfma_f32_16x16x32_fp8_bf8GenericAdaptorBase &base) : Base(base), odsOperands(values) {} template >> mfma_f32_16x16x32_fp8_bf8GenericAdaptor(RangeT values, LateInst op) : Base(op), odsOperands(values) {} std::pair getODSOperandIndexAndLength(unsigned index) { return Base::getODSOperandIndexAndLength(index, odsOperands.size()); } RangeT getODSOperands(unsigned index) { auto valueRange = getODSOperandIndexAndLength(index); return {std::next(odsOperands.begin(), valueRange.first), std::next(odsOperands.begin(), valueRange.first + valueRange.second)}; } ValueT getA() { return (*getODSOperands(0).begin()); } ValueT getB() { return (*getODSOperands(1).begin()); } ValueT getC() { return (*getODSOperands(2).begin()); } RangeT getOperands() { return odsOperands; } private: RangeT odsOperands; }; class mfma_f32_16x16x32_fp8_bf8Adaptor : public mfma_f32_16x16x32_fp8_bf8GenericAdaptor<::mlir::ValueRange> { public: using mfma_f32_16x16x32_fp8_bf8GenericAdaptor::mfma_f32_16x16x32_fp8_bf8GenericAdaptor; mfma_f32_16x16x32_fp8_bf8Adaptor(mfma_f32_16x16x32_fp8_bf8 op); ::llvm::LogicalResult verify(::mlir::Location loc); }; class mfma_f32_16x16x32_fp8_bf8 : public ::mlir::Op::Impl, ::mlir::OpTrait::ZeroSuccessors, ::mlir::OpTrait::NOperands<3>::Impl, ::mlir::OpTrait::OpInvariants, ::mlir::BytecodeOpInterface::Trait> { public: using Op::Op; using Op::print; using Adaptor = mfma_f32_16x16x32_fp8_bf8Adaptor; template using GenericAdaptor = mfma_f32_16x16x32_fp8_bf8GenericAdaptor; using FoldAdaptor = GenericAdaptor<::llvm::ArrayRef<::mlir::Attribute>>; static constexpr int odsIndex_a = 0; static constexpr int odsIndex_b = 1; static constexpr int odsIndex_c = 2; using Properties = FoldAdaptor::Properties; static ::llvm::ArrayRef<::llvm::StringRef> getAttributeNames() { static ::llvm::StringRef attrNames[] = {::llvm::StringRef("abid"), ::llvm::StringRef("blgp"), ::llvm::StringRef("cbsz")}; return ::llvm::ArrayRef(attrNames); } ::mlir::StringAttr getAbidAttrName() { return getAttributeNameForIndex(0); } static ::mlir::StringAttr getAbidAttrName(::mlir::OperationName name) { return getAttributeNameForIndex(name, 0); } ::mlir::StringAttr getBlgpAttrName() { return getAttributeNameForIndex(1); } static ::mlir::StringAttr getBlgpAttrName(::mlir::OperationName name) { return getAttributeNameForIndex(name, 1); } ::mlir::StringAttr getCbszAttrName() { return getAttributeNameForIndex(2); } static ::mlir::StringAttr getCbszAttrName(::mlir::OperationName name) { return getAttributeNameForIndex(name, 2); } static constexpr ::llvm::StringLiteral getOperationName() { return ::llvm::StringLiteral("rocdl.mfma.f32.16x16x32.fp8.bf8"); } std::pair getODSOperandIndexAndLength(unsigned index) { return {index, 1}; } ::mlir::Operation::operand_range getODSOperands(unsigned index) { auto valueRange = getODSOperandIndexAndLength(index); return {std::next(getOperation()->operand_begin(), valueRange.first), std::next(getOperation()->operand_begin(), valueRange.first + valueRange.second)}; } ::mlir::TypedValue<::mlir::Type> getA() { return ::llvm::cast<::mlir::TypedValue<::mlir::Type>>(*getODSOperands(0).begin()); } ::mlir::TypedValue<::mlir::Type> getB() { return ::llvm::cast<::mlir::TypedValue<::mlir::Type>>(*getODSOperands(1).begin()); } ::mlir::TypedValue<::mlir::VectorType> getC() { return ::llvm::cast<::mlir::TypedValue<::mlir::VectorType>>(*getODSOperands(2).begin()); } ::mlir::OpOperand &getAMutable() { auto range = getODSOperandIndexAndLength(0); return getOperation()->getOpOperand(range.first); } ::mlir::OpOperand &getBMutable() { auto range = getODSOperandIndexAndLength(1); return getOperation()->getOpOperand(range.first); } ::mlir::OpOperand &getCMutable() { auto range = getODSOperandIndexAndLength(2); return getOperation()->getOpOperand(range.first); } std::pair getODSResultIndexAndLength(unsigned index) { return {index, 1}; } ::mlir::Operation::result_range getODSResults(unsigned index) { auto valueRange = getODSResultIndexAndLength(index); return {std::next(getOperation()->result_begin(), valueRange.first), std::next(getOperation()->result_begin(), valueRange.first + valueRange.second)}; } ::mlir::TypedValue<::mlir::VectorType> getRes() { return ::llvm::cast<::mlir::TypedValue<::mlir::VectorType>>(*getODSResults(0).begin()); } static ::llvm::LogicalResult setPropertiesFromAttr(Properties &prop, ::mlir::Attribute attr, ::llvm::function_ref<::mlir::InFlightDiagnostic()> emitError); static ::mlir::Attribute getPropertiesAsAttr(::mlir::MLIRContext *ctx, const Properties &prop); static llvm::hash_code computePropertiesHash(const Properties &prop); static std::optional getInherentAttr(::mlir::MLIRContext *ctx, const Properties &prop, llvm::StringRef name); static void setInherentAttr(Properties &prop, llvm::StringRef name, mlir::Attribute value); static void populateInherentAttrs(::mlir::MLIRContext *ctx, const Properties &prop, ::mlir::NamedAttrList &attrs); static ::llvm::LogicalResult verifyInherentAttrs(::mlir::OperationName opName, ::mlir::NamedAttrList &attrs, llvm::function_ref<::mlir::InFlightDiagnostic()> emitError); static ::llvm::LogicalResult readProperties(::mlir::DialectBytecodeReader &reader, ::mlir::OperationState &state); void writeProperties(::mlir::DialectBytecodeWriter &writer); ::mlir::IntegerAttr getCbszAttr() { return ::llvm::cast<::mlir::IntegerAttr>(getProperties().cbsz); } uint32_t getCbsz(); ::mlir::IntegerAttr getAbidAttr() { return ::llvm::cast<::mlir::IntegerAttr>(getProperties().abid); } uint32_t getAbid(); ::mlir::ROCDL::MFMAPermBAttr getBlgpAttr() { return ::llvm::cast<::mlir::ROCDL::MFMAPermBAttr>(getProperties().blgp); } ::mlir::ROCDL::MFMAPermB getBlgp(); void setCbszAttr(::mlir::IntegerAttr attr) { getProperties().cbsz = attr; } void setCbsz(uint32_t attrValue); void setAbidAttr(::mlir::IntegerAttr attr) { getProperties().abid = attr; } void setAbid(uint32_t attrValue); void setBlgpAttr(::mlir::ROCDL::MFMAPermBAttr attr) { getProperties().blgp = attr; } void setBlgp(::mlir::ROCDL::MFMAPermB attrValue); static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::Type res, ::mlir::Value a, ::mlir::Value b, ::mlir::Value c, ::mlir::IntegerAttr cbsz, ::mlir::IntegerAttr abid, ::mlir::ROCDL::MFMAPermBAttr blgp); static mfma_f32_16x16x32_fp8_bf8 create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::Type res, ::mlir::Value a, ::mlir::Value b, ::mlir::Value c, ::mlir::IntegerAttr cbsz, ::mlir::IntegerAttr abid, ::mlir::ROCDL::MFMAPermBAttr blgp); static mfma_f32_16x16x32_fp8_bf8 create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::Type res, ::mlir::Value a, ::mlir::Value b, ::mlir::Value c, ::mlir::IntegerAttr cbsz, ::mlir::IntegerAttr abid, ::mlir::ROCDL::MFMAPermBAttr blgp); static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::Value a, ::mlir::Value b, ::mlir::Value c, ::mlir::IntegerAttr cbsz, ::mlir::IntegerAttr abid, ::mlir::ROCDL::MFMAPermBAttr blgp); static mfma_f32_16x16x32_fp8_bf8 create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::Value a, ::mlir::Value b, ::mlir::Value c, ::mlir::IntegerAttr cbsz, ::mlir::IntegerAttr abid, ::mlir::ROCDL::MFMAPermBAttr blgp); static mfma_f32_16x16x32_fp8_bf8 create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::Value a, ::mlir::Value b, ::mlir::Value c, ::mlir::IntegerAttr cbsz, ::mlir::IntegerAttr abid, ::mlir::ROCDL::MFMAPermBAttr blgp); static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::Type res, ::mlir::Value a, ::mlir::Value b, ::mlir::Value c, uint32_t cbsz, uint32_t abid, ::mlir::ROCDL::MFMAPermB blgp); static mfma_f32_16x16x32_fp8_bf8 create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::Type res, ::mlir::Value a, ::mlir::Value b, ::mlir::Value c, uint32_t cbsz, uint32_t abid, ::mlir::ROCDL::MFMAPermB blgp); static mfma_f32_16x16x32_fp8_bf8 create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::Type res, ::mlir::Value a, ::mlir::Value b, ::mlir::Value c, uint32_t cbsz, uint32_t abid, ::mlir::ROCDL::MFMAPermB blgp); static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::Value a, ::mlir::Value b, ::mlir::Value c, uint32_t cbsz, uint32_t abid, ::mlir::ROCDL::MFMAPermB blgp); static mfma_f32_16x16x32_fp8_bf8 create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::Value a, ::mlir::Value b, ::mlir::Value c, uint32_t cbsz, uint32_t abid, ::mlir::ROCDL::MFMAPermB blgp); static mfma_f32_16x16x32_fp8_bf8 create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::Value a, ::mlir::Value b, ::mlir::Value c, uint32_t cbsz, uint32_t abid, ::mlir::ROCDL::MFMAPermB blgp); static void build(::mlir::OpBuilder &, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, ::llvm::ArrayRef<::mlir::NamedAttribute> attributes = {}); static mfma_f32_16x16x32_fp8_bf8 create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, ::llvm::ArrayRef<::mlir::NamedAttribute> attributes = {}); static mfma_f32_16x16x32_fp8_bf8 create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, ::llvm::ArrayRef<::mlir::NamedAttribute> attributes = {}); static void build(::mlir::OpBuilder &, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, const Properties &properties, ::llvm::ArrayRef<::mlir::NamedAttribute> discardableAttributes = {}); static mfma_f32_16x16x32_fp8_bf8 create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, const Properties &properties, ::llvm::ArrayRef<::mlir::NamedAttribute> discardableAttributes = {}); static mfma_f32_16x16x32_fp8_bf8 create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, const Properties &properties, ::llvm::ArrayRef<::mlir::NamedAttribute> discardableAttributes = {}); ::llvm::LogicalResult verifyInvariantsImpl(); ::llvm::LogicalResult verifyInvariants(); static ::mlir::ParseResult parse(::mlir::OpAsmParser &parser, ::mlir::OperationState &result); void print(::mlir::OpAsmPrinter &_odsPrinter); private: ::mlir::StringAttr getAttributeNameForIndex(unsigned index) { return getAttributeNameForIndex((*this)->getName(), index); } static ::mlir::StringAttr getAttributeNameForIndex(::mlir::OperationName name, unsigned index) { assert(index < 3 && "invalid attribute index"); assert(name.getStringRef() == getOperationName() && "invalid operation name"); assert(name.isRegistered() && "Operation isn't registered, missing a " "dependent dialect loading?"); return name.getAttributeNames()[index]; } public: }; } // namespace mlir::ROCDL MLIR_DECLARE_EXPLICIT_TYPE_ID(::mlir::ROCDL::mfma_f32_16x16x32_fp8_bf8) MLIR_DECLARE_EXPLICIT_TYPE_ID(::mlir::ROCDL::detail::mfma_f32_16x16x32_fp8_bf8GenericAdaptorBase::Properties) namespace mlir::ROCDL { //===----------------------------------------------------------------------===// // ::mlir::ROCDL::mfma_f32_16x16x32_fp8_fp8 declarations //===----------------------------------------------------------------------===// namespace detail { class mfma_f32_16x16x32_fp8_fp8GenericAdaptorBase { public: struct Properties { using abidTy = ::mlir::IntegerAttr; abidTy abid; auto getAbid() const { auto &propStorage = this->abid; return ::llvm::cast<::mlir::IntegerAttr>(propStorage); } void setAbid(const ::mlir::IntegerAttr &propValue) { this->abid = propValue; } using blgpTy = ::mlir::ROCDL::MFMAPermBAttr; blgpTy blgp; auto getBlgp() const { auto &propStorage = this->blgp; return ::llvm::cast<::mlir::ROCDL::MFMAPermBAttr>(propStorage); } void setBlgp(const ::mlir::ROCDL::MFMAPermBAttr &propValue) { this->blgp = propValue; } using cbszTy = ::mlir::IntegerAttr; cbszTy cbsz; auto getCbsz() const { auto &propStorage = this->cbsz; return ::llvm::cast<::mlir::IntegerAttr>(propStorage); } void setCbsz(const ::mlir::IntegerAttr &propValue) { this->cbsz = propValue; } bool operator==(const Properties &rhs) const { return rhs.abid == this->abid && rhs.blgp == this->blgp && rhs.cbsz == this->cbsz && true; } bool operator!=(const Properties &rhs) const { return !(*this == rhs); } }; protected: ::mlir::DictionaryAttr odsAttrs; ::std::optional<::mlir::OperationName> odsOpName; Properties properties; ::mlir::RegionRange odsRegions; public: mfma_f32_16x16x32_fp8_fp8GenericAdaptorBase(::mlir::DictionaryAttr attrs, const Properties &properties, ::mlir::RegionRange regions = {}) : odsAttrs(attrs), properties(properties), odsRegions(regions) { if (odsAttrs) odsOpName.emplace("rocdl.mfma.f32.16x16x32.fp8.fp8", odsAttrs.getContext()); } mfma_f32_16x16x32_fp8_fp8GenericAdaptorBase(mfma_f32_16x16x32_fp8_fp8 op); std::pair getODSOperandIndexAndLength(unsigned index, unsigned odsOperandsSize) { return {index, 1}; } const Properties &getProperties() { return properties; } ::mlir::DictionaryAttr getAttributes() { return odsAttrs; } ::mlir::IntegerAttr getCbszAttr() { auto attr = ::llvm::cast<::mlir::IntegerAttr>(getProperties().cbsz); return attr; } uint32_t getCbsz(); ::mlir::IntegerAttr getAbidAttr() { auto attr = ::llvm::cast<::mlir::IntegerAttr>(getProperties().abid); return attr; } uint32_t getAbid(); ::mlir::ROCDL::MFMAPermBAttr getBlgpAttr() { auto attr = ::llvm::cast<::mlir::ROCDL::MFMAPermBAttr>(getProperties().blgp); return attr; } ::mlir::ROCDL::MFMAPermB getBlgp(); }; } // namespace detail template class mfma_f32_16x16x32_fp8_fp8GenericAdaptor : public detail::mfma_f32_16x16x32_fp8_fp8GenericAdaptorBase { using ValueT = ::llvm::detail::ValueOfRange; using Base = detail::mfma_f32_16x16x32_fp8_fp8GenericAdaptorBase; static constexpr int odsIndex_a = 0; static constexpr int odsIndex_b = 1; static constexpr int odsIndex_c = 2; public: mfma_f32_16x16x32_fp8_fp8GenericAdaptor(RangeT values, ::mlir::DictionaryAttr attrs, const Properties &properties, ::mlir::RegionRange regions = {}) : Base(attrs, properties, regions), odsOperands(values) {} mfma_f32_16x16x32_fp8_fp8GenericAdaptor(RangeT values, ::mlir::DictionaryAttr attrs, ::mlir::PropertyRef properties, ::mlir::RegionRange regions = {}) : mfma_f32_16x16x32_fp8_fp8GenericAdaptor(values, attrs, (properties ? *properties.as() : Properties{}), regions) {} mfma_f32_16x16x32_fp8_fp8GenericAdaptor(RangeT values, ::mlir::DictionaryAttr attrs = nullptr) : mfma_f32_16x16x32_fp8_fp8GenericAdaptor(values, attrs, Properties{}, {}) {} mfma_f32_16x16x32_fp8_fp8GenericAdaptor(RangeT values, const mfma_f32_16x16x32_fp8_fp8GenericAdaptorBase &base) : Base(base), odsOperands(values) {} template >> mfma_f32_16x16x32_fp8_fp8GenericAdaptor(RangeT values, LateInst op) : Base(op), odsOperands(values) {} std::pair getODSOperandIndexAndLength(unsigned index) { return Base::getODSOperandIndexAndLength(index, odsOperands.size()); } RangeT getODSOperands(unsigned index) { auto valueRange = getODSOperandIndexAndLength(index); return {std::next(odsOperands.begin(), valueRange.first), std::next(odsOperands.begin(), valueRange.first + valueRange.second)}; } ValueT getA() { return (*getODSOperands(0).begin()); } ValueT getB() { return (*getODSOperands(1).begin()); } ValueT getC() { return (*getODSOperands(2).begin()); } RangeT getOperands() { return odsOperands; } private: RangeT odsOperands; }; class mfma_f32_16x16x32_fp8_fp8Adaptor : public mfma_f32_16x16x32_fp8_fp8GenericAdaptor<::mlir::ValueRange> { public: using mfma_f32_16x16x32_fp8_fp8GenericAdaptor::mfma_f32_16x16x32_fp8_fp8GenericAdaptor; mfma_f32_16x16x32_fp8_fp8Adaptor(mfma_f32_16x16x32_fp8_fp8 op); ::llvm::LogicalResult verify(::mlir::Location loc); }; class mfma_f32_16x16x32_fp8_fp8 : public ::mlir::Op::Impl, ::mlir::OpTrait::ZeroSuccessors, ::mlir::OpTrait::NOperands<3>::Impl, ::mlir::OpTrait::OpInvariants, ::mlir::BytecodeOpInterface::Trait> { public: using Op::Op; using Op::print; using Adaptor = mfma_f32_16x16x32_fp8_fp8Adaptor; template using GenericAdaptor = mfma_f32_16x16x32_fp8_fp8GenericAdaptor; using FoldAdaptor = GenericAdaptor<::llvm::ArrayRef<::mlir::Attribute>>; static constexpr int odsIndex_a = 0; static constexpr int odsIndex_b = 1; static constexpr int odsIndex_c = 2; using Properties = FoldAdaptor::Properties; static ::llvm::ArrayRef<::llvm::StringRef> getAttributeNames() { static ::llvm::StringRef attrNames[] = {::llvm::StringRef("abid"), ::llvm::StringRef("blgp"), ::llvm::StringRef("cbsz")}; return ::llvm::ArrayRef(attrNames); } ::mlir::StringAttr getAbidAttrName() { return getAttributeNameForIndex(0); } static ::mlir::StringAttr getAbidAttrName(::mlir::OperationName name) { return getAttributeNameForIndex(name, 0); } ::mlir::StringAttr getBlgpAttrName() { return getAttributeNameForIndex(1); } static ::mlir::StringAttr getBlgpAttrName(::mlir::OperationName name) { return getAttributeNameForIndex(name, 1); } ::mlir::StringAttr getCbszAttrName() { return getAttributeNameForIndex(2); } static ::mlir::StringAttr getCbszAttrName(::mlir::OperationName name) { return getAttributeNameForIndex(name, 2); } static constexpr ::llvm::StringLiteral getOperationName() { return ::llvm::StringLiteral("rocdl.mfma.f32.16x16x32.fp8.fp8"); } std::pair getODSOperandIndexAndLength(unsigned index) { return {index, 1}; } ::mlir::Operation::operand_range getODSOperands(unsigned index) { auto valueRange = getODSOperandIndexAndLength(index); return {std::next(getOperation()->operand_begin(), valueRange.first), std::next(getOperation()->operand_begin(), valueRange.first + valueRange.second)}; } ::mlir::TypedValue<::mlir::Type> getA() { return ::llvm::cast<::mlir::TypedValue<::mlir::Type>>(*getODSOperands(0).begin()); } ::mlir::TypedValue<::mlir::Type> getB() { return ::llvm::cast<::mlir::TypedValue<::mlir::Type>>(*getODSOperands(1).begin()); } ::mlir::TypedValue<::mlir::VectorType> getC() { return ::llvm::cast<::mlir::TypedValue<::mlir::VectorType>>(*getODSOperands(2).begin()); } ::mlir::OpOperand &getAMutable() { auto range = getODSOperandIndexAndLength(0); return getOperation()->getOpOperand(range.first); } ::mlir::OpOperand &getBMutable() { auto range = getODSOperandIndexAndLength(1); return getOperation()->getOpOperand(range.first); } ::mlir::OpOperand &getCMutable() { auto range = getODSOperandIndexAndLength(2); return getOperation()->getOpOperand(range.first); } std::pair getODSResultIndexAndLength(unsigned index) { return {index, 1}; } ::mlir::Operation::result_range getODSResults(unsigned index) { auto valueRange = getODSResultIndexAndLength(index); return {std::next(getOperation()->result_begin(), valueRange.first), std::next(getOperation()->result_begin(), valueRange.first + valueRange.second)}; } ::mlir::TypedValue<::mlir::VectorType> getRes() { return ::llvm::cast<::mlir::TypedValue<::mlir::VectorType>>(*getODSResults(0).begin()); } static ::llvm::LogicalResult setPropertiesFromAttr(Properties &prop, ::mlir::Attribute attr, ::llvm::function_ref<::mlir::InFlightDiagnostic()> emitError); static ::mlir::Attribute getPropertiesAsAttr(::mlir::MLIRContext *ctx, const Properties &prop); static llvm::hash_code computePropertiesHash(const Properties &prop); static std::optional getInherentAttr(::mlir::MLIRContext *ctx, const Properties &prop, llvm::StringRef name); static void setInherentAttr(Properties &prop, llvm::StringRef name, mlir::Attribute value); static void populateInherentAttrs(::mlir::MLIRContext *ctx, const Properties &prop, ::mlir::NamedAttrList &attrs); static ::llvm::LogicalResult verifyInherentAttrs(::mlir::OperationName opName, ::mlir::NamedAttrList &attrs, llvm::function_ref<::mlir::InFlightDiagnostic()> emitError); static ::llvm::LogicalResult readProperties(::mlir::DialectBytecodeReader &reader, ::mlir::OperationState &state); void writeProperties(::mlir::DialectBytecodeWriter &writer); ::mlir::IntegerAttr getCbszAttr() { return ::llvm::cast<::mlir::IntegerAttr>(getProperties().cbsz); } uint32_t getCbsz(); ::mlir::IntegerAttr getAbidAttr() { return ::llvm::cast<::mlir::IntegerAttr>(getProperties().abid); } uint32_t getAbid(); ::mlir::ROCDL::MFMAPermBAttr getBlgpAttr() { return ::llvm::cast<::mlir::ROCDL::MFMAPermBAttr>(getProperties().blgp); } ::mlir::ROCDL::MFMAPermB getBlgp(); void setCbszAttr(::mlir::IntegerAttr attr) { getProperties().cbsz = attr; } void setCbsz(uint32_t attrValue); void setAbidAttr(::mlir::IntegerAttr attr) { getProperties().abid = attr; } void setAbid(uint32_t attrValue); void setBlgpAttr(::mlir::ROCDL::MFMAPermBAttr attr) { getProperties().blgp = attr; } void setBlgp(::mlir::ROCDL::MFMAPermB attrValue); static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::Type res, ::mlir::Value a, ::mlir::Value b, ::mlir::Value c, ::mlir::IntegerAttr cbsz, ::mlir::IntegerAttr abid, ::mlir::ROCDL::MFMAPermBAttr blgp); static mfma_f32_16x16x32_fp8_fp8 create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::Type res, ::mlir::Value a, ::mlir::Value b, ::mlir::Value c, ::mlir::IntegerAttr cbsz, ::mlir::IntegerAttr abid, ::mlir::ROCDL::MFMAPermBAttr blgp); static mfma_f32_16x16x32_fp8_fp8 create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::Type res, ::mlir::Value a, ::mlir::Value b, ::mlir::Value c, ::mlir::IntegerAttr cbsz, ::mlir::IntegerAttr abid, ::mlir::ROCDL::MFMAPermBAttr blgp); static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::Value a, ::mlir::Value b, ::mlir::Value c, ::mlir::IntegerAttr cbsz, ::mlir::IntegerAttr abid, ::mlir::ROCDL::MFMAPermBAttr blgp); static mfma_f32_16x16x32_fp8_fp8 create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::Value a, ::mlir::Value b, ::mlir::Value c, ::mlir::IntegerAttr cbsz, ::mlir::IntegerAttr abid, ::mlir::ROCDL::MFMAPermBAttr blgp); static mfma_f32_16x16x32_fp8_fp8 create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::Value a, ::mlir::Value b, ::mlir::Value c, ::mlir::IntegerAttr cbsz, ::mlir::IntegerAttr abid, ::mlir::ROCDL::MFMAPermBAttr blgp); static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::Type res, ::mlir::Value a, ::mlir::Value b, ::mlir::Value c, uint32_t cbsz, uint32_t abid, ::mlir::ROCDL::MFMAPermB blgp); static mfma_f32_16x16x32_fp8_fp8 create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::Type res, ::mlir::Value a, ::mlir::Value b, ::mlir::Value c, uint32_t cbsz, uint32_t abid, ::mlir::ROCDL::MFMAPermB blgp); static mfma_f32_16x16x32_fp8_fp8 create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::Type res, ::mlir::Value a, ::mlir::Value b, ::mlir::Value c, uint32_t cbsz, uint32_t abid, ::mlir::ROCDL::MFMAPermB blgp); static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::Value a, ::mlir::Value b, ::mlir::Value c, uint32_t cbsz, uint32_t abid, ::mlir::ROCDL::MFMAPermB blgp); static mfma_f32_16x16x32_fp8_fp8 create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::Value a, ::mlir::Value b, ::mlir::Value c, uint32_t cbsz, uint32_t abid, ::mlir::ROCDL::MFMAPermB blgp); static mfma_f32_16x16x32_fp8_fp8 create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::Value a, ::mlir::Value b, ::mlir::Value c, uint32_t cbsz, uint32_t abid, ::mlir::ROCDL::MFMAPermB blgp); static void build(::mlir::OpBuilder &, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, ::llvm::ArrayRef<::mlir::NamedAttribute> attributes = {}); static mfma_f32_16x16x32_fp8_fp8 create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, ::llvm::ArrayRef<::mlir::NamedAttribute> attributes = {}); static mfma_f32_16x16x32_fp8_fp8 create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, ::llvm::ArrayRef<::mlir::NamedAttribute> attributes = {}); static void build(::mlir::OpBuilder &, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, const Properties &properties, ::llvm::ArrayRef<::mlir::NamedAttribute> discardableAttributes = {}); static mfma_f32_16x16x32_fp8_fp8 create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, const Properties &properties, ::llvm::ArrayRef<::mlir::NamedAttribute> discardableAttributes = {}); static mfma_f32_16x16x32_fp8_fp8 create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, const Properties &properties, ::llvm::ArrayRef<::mlir::NamedAttribute> discardableAttributes = {}); ::llvm::LogicalResult verifyInvariantsImpl(); ::llvm::LogicalResult verifyInvariants(); static ::mlir::ParseResult parse(::mlir::OpAsmParser &parser, ::mlir::OperationState &result); void print(::mlir::OpAsmPrinter &_odsPrinter); private: ::mlir::StringAttr getAttributeNameForIndex(unsigned index) { return getAttributeNameForIndex((*this)->getName(), index); } static ::mlir::StringAttr getAttributeNameForIndex(::mlir::OperationName name, unsigned index) { assert(index < 3 && "invalid attribute index"); assert(name.getStringRef() == getOperationName() && "invalid operation name"); assert(name.isRegistered() && "Operation isn't registered, missing a " "dependent dialect loading?"); return name.getAttributeNames()[index]; } public: }; } // namespace mlir::ROCDL MLIR_DECLARE_EXPLICIT_TYPE_ID(::mlir::ROCDL::mfma_f32_16x16x32_fp8_fp8) MLIR_DECLARE_EXPLICIT_TYPE_ID(::mlir::ROCDL::detail::mfma_f32_16x16x32_fp8_fp8GenericAdaptorBase::Properties) namespace mlir::ROCDL { //===----------------------------------------------------------------------===// // ::mlir::ROCDL::mfma_f32_16x16x4bf16_1k declarations //===----------------------------------------------------------------------===// namespace detail { class mfma_f32_16x16x4bf16_1kGenericAdaptorBase { public: struct Properties { using abidTy = ::mlir::IntegerAttr; abidTy abid; auto getAbid() const { auto &propStorage = this->abid; return ::llvm::cast<::mlir::IntegerAttr>(propStorage); } void setAbid(const ::mlir::IntegerAttr &propValue) { this->abid = propValue; } using blgpTy = ::mlir::ROCDL::MFMAPermBAttr; blgpTy blgp; auto getBlgp() const { auto &propStorage = this->blgp; return ::llvm::cast<::mlir::ROCDL::MFMAPermBAttr>(propStorage); } void setBlgp(const ::mlir::ROCDL::MFMAPermBAttr &propValue) { this->blgp = propValue; } using cbszTy = ::mlir::IntegerAttr; cbszTy cbsz; auto getCbsz() const { auto &propStorage = this->cbsz; return ::llvm::cast<::mlir::IntegerAttr>(propStorage); } void setCbsz(const ::mlir::IntegerAttr &propValue) { this->cbsz = propValue; } bool operator==(const Properties &rhs) const { return rhs.abid == this->abid && rhs.blgp == this->blgp && rhs.cbsz == this->cbsz && true; } bool operator!=(const Properties &rhs) const { return !(*this == rhs); } }; protected: ::mlir::DictionaryAttr odsAttrs; ::std::optional<::mlir::OperationName> odsOpName; Properties properties; ::mlir::RegionRange odsRegions; public: mfma_f32_16x16x4bf16_1kGenericAdaptorBase(::mlir::DictionaryAttr attrs, const Properties &properties, ::mlir::RegionRange regions = {}) : odsAttrs(attrs), properties(properties), odsRegions(regions) { if (odsAttrs) odsOpName.emplace("rocdl.mfma.f32.16x16x4bf16.1k", odsAttrs.getContext()); } mfma_f32_16x16x4bf16_1kGenericAdaptorBase(mfma_f32_16x16x4bf16_1k op); std::pair getODSOperandIndexAndLength(unsigned index, unsigned odsOperandsSize) { return {index, 1}; } const Properties &getProperties() { return properties; } ::mlir::DictionaryAttr getAttributes() { return odsAttrs; } ::mlir::IntegerAttr getCbszAttr() { auto attr = ::llvm::cast<::mlir::IntegerAttr>(getProperties().cbsz); return attr; } uint32_t getCbsz(); ::mlir::IntegerAttr getAbidAttr() { auto attr = ::llvm::cast<::mlir::IntegerAttr>(getProperties().abid); return attr; } uint32_t getAbid(); ::mlir::ROCDL::MFMAPermBAttr getBlgpAttr() { auto attr = ::llvm::cast<::mlir::ROCDL::MFMAPermBAttr>(getProperties().blgp); return attr; } ::mlir::ROCDL::MFMAPermB getBlgp(); }; } // namespace detail template class mfma_f32_16x16x4bf16_1kGenericAdaptor : public detail::mfma_f32_16x16x4bf16_1kGenericAdaptorBase { using ValueT = ::llvm::detail::ValueOfRange; using Base = detail::mfma_f32_16x16x4bf16_1kGenericAdaptorBase; static constexpr int odsIndex_a = 0; static constexpr int odsIndex_b = 1; static constexpr int odsIndex_c = 2; public: mfma_f32_16x16x4bf16_1kGenericAdaptor(RangeT values, ::mlir::DictionaryAttr attrs, const Properties &properties, ::mlir::RegionRange regions = {}) : Base(attrs, properties, regions), odsOperands(values) {} mfma_f32_16x16x4bf16_1kGenericAdaptor(RangeT values, ::mlir::DictionaryAttr attrs, ::mlir::PropertyRef properties, ::mlir::RegionRange regions = {}) : mfma_f32_16x16x4bf16_1kGenericAdaptor(values, attrs, (properties ? *properties.as() : Properties{}), regions) {} mfma_f32_16x16x4bf16_1kGenericAdaptor(RangeT values, ::mlir::DictionaryAttr attrs = nullptr) : mfma_f32_16x16x4bf16_1kGenericAdaptor(values, attrs, Properties{}, {}) {} mfma_f32_16x16x4bf16_1kGenericAdaptor(RangeT values, const mfma_f32_16x16x4bf16_1kGenericAdaptorBase &base) : Base(base), odsOperands(values) {} template >> mfma_f32_16x16x4bf16_1kGenericAdaptor(RangeT values, LateInst op) : Base(op), odsOperands(values) {} std::pair getODSOperandIndexAndLength(unsigned index) { return Base::getODSOperandIndexAndLength(index, odsOperands.size()); } RangeT getODSOperands(unsigned index) { auto valueRange = getODSOperandIndexAndLength(index); return {std::next(odsOperands.begin(), valueRange.first), std::next(odsOperands.begin(), valueRange.first + valueRange.second)}; } ValueT getA() { return (*getODSOperands(0).begin()); } ValueT getB() { return (*getODSOperands(1).begin()); } ValueT getC() { return (*getODSOperands(2).begin()); } RangeT getOperands() { return odsOperands; } private: RangeT odsOperands; }; class mfma_f32_16x16x4bf16_1kAdaptor : public mfma_f32_16x16x4bf16_1kGenericAdaptor<::mlir::ValueRange> { public: using mfma_f32_16x16x4bf16_1kGenericAdaptor::mfma_f32_16x16x4bf16_1kGenericAdaptor; mfma_f32_16x16x4bf16_1kAdaptor(mfma_f32_16x16x4bf16_1k op); ::llvm::LogicalResult verify(::mlir::Location loc); }; class mfma_f32_16x16x4bf16_1k : public ::mlir::Op::Impl, ::mlir::OpTrait::ZeroSuccessors, ::mlir::OpTrait::NOperands<3>::Impl, ::mlir::OpTrait::OpInvariants, ::mlir::BytecodeOpInterface::Trait> { public: using Op::Op; using Op::print; using Adaptor = mfma_f32_16x16x4bf16_1kAdaptor; template using GenericAdaptor = mfma_f32_16x16x4bf16_1kGenericAdaptor; using FoldAdaptor = GenericAdaptor<::llvm::ArrayRef<::mlir::Attribute>>; static constexpr int odsIndex_a = 0; static constexpr int odsIndex_b = 1; static constexpr int odsIndex_c = 2; using Properties = FoldAdaptor::Properties; static ::llvm::ArrayRef<::llvm::StringRef> getAttributeNames() { static ::llvm::StringRef attrNames[] = {::llvm::StringRef("abid"), ::llvm::StringRef("blgp"), ::llvm::StringRef("cbsz")}; return ::llvm::ArrayRef(attrNames); } ::mlir::StringAttr getAbidAttrName() { return getAttributeNameForIndex(0); } static ::mlir::StringAttr getAbidAttrName(::mlir::OperationName name) { return getAttributeNameForIndex(name, 0); } ::mlir::StringAttr getBlgpAttrName() { return getAttributeNameForIndex(1); } static ::mlir::StringAttr getBlgpAttrName(::mlir::OperationName name) { return getAttributeNameForIndex(name, 1); } ::mlir::StringAttr getCbszAttrName() { return getAttributeNameForIndex(2); } static ::mlir::StringAttr getCbszAttrName(::mlir::OperationName name) { return getAttributeNameForIndex(name, 2); } static constexpr ::llvm::StringLiteral getOperationName() { return ::llvm::StringLiteral("rocdl.mfma.f32.16x16x4bf16.1k"); } std::pair getODSOperandIndexAndLength(unsigned index) { return {index, 1}; } ::mlir::Operation::operand_range getODSOperands(unsigned index) { auto valueRange = getODSOperandIndexAndLength(index); return {std::next(getOperation()->operand_begin(), valueRange.first), std::next(getOperation()->operand_begin(), valueRange.first + valueRange.second)}; } ::mlir::TypedValue<::mlir::VectorType> getA() { return ::llvm::cast<::mlir::TypedValue<::mlir::VectorType>>(*getODSOperands(0).begin()); } ::mlir::TypedValue<::mlir::VectorType> getB() { return ::llvm::cast<::mlir::TypedValue<::mlir::VectorType>>(*getODSOperands(1).begin()); } ::mlir::TypedValue<::mlir::VectorType> getC() { return ::llvm::cast<::mlir::TypedValue<::mlir::VectorType>>(*getODSOperands(2).begin()); } ::mlir::OpOperand &getAMutable() { auto range = getODSOperandIndexAndLength(0); return getOperation()->getOpOperand(range.first); } ::mlir::OpOperand &getBMutable() { auto range = getODSOperandIndexAndLength(1); return getOperation()->getOpOperand(range.first); } ::mlir::OpOperand &getCMutable() { auto range = getODSOperandIndexAndLength(2); return getOperation()->getOpOperand(range.first); } std::pair getODSResultIndexAndLength(unsigned index) { return {index, 1}; } ::mlir::Operation::result_range getODSResults(unsigned index) { auto valueRange = getODSResultIndexAndLength(index); return {std::next(getOperation()->result_begin(), valueRange.first), std::next(getOperation()->result_begin(), valueRange.first + valueRange.second)}; } ::mlir::TypedValue<::mlir::VectorType> getRes() { return ::llvm::cast<::mlir::TypedValue<::mlir::VectorType>>(*getODSResults(0).begin()); } static ::llvm::LogicalResult setPropertiesFromAttr(Properties &prop, ::mlir::Attribute attr, ::llvm::function_ref<::mlir::InFlightDiagnostic()> emitError); static ::mlir::Attribute getPropertiesAsAttr(::mlir::MLIRContext *ctx, const Properties &prop); static llvm::hash_code computePropertiesHash(const Properties &prop); static std::optional getInherentAttr(::mlir::MLIRContext *ctx, const Properties &prop, llvm::StringRef name); static void setInherentAttr(Properties &prop, llvm::StringRef name, mlir::Attribute value); static void populateInherentAttrs(::mlir::MLIRContext *ctx, const Properties &prop, ::mlir::NamedAttrList &attrs); static ::llvm::LogicalResult verifyInherentAttrs(::mlir::OperationName opName, ::mlir::NamedAttrList &attrs, llvm::function_ref<::mlir::InFlightDiagnostic()> emitError); static ::llvm::LogicalResult readProperties(::mlir::DialectBytecodeReader &reader, ::mlir::OperationState &state); void writeProperties(::mlir::DialectBytecodeWriter &writer); ::mlir::IntegerAttr getCbszAttr() { return ::llvm::cast<::mlir::IntegerAttr>(getProperties().cbsz); } uint32_t getCbsz(); ::mlir::IntegerAttr getAbidAttr() { return ::llvm::cast<::mlir::IntegerAttr>(getProperties().abid); } uint32_t getAbid(); ::mlir::ROCDL::MFMAPermBAttr getBlgpAttr() { return ::llvm::cast<::mlir::ROCDL::MFMAPermBAttr>(getProperties().blgp); } ::mlir::ROCDL::MFMAPermB getBlgp(); void setCbszAttr(::mlir::IntegerAttr attr) { getProperties().cbsz = attr; } void setCbsz(uint32_t attrValue); void setAbidAttr(::mlir::IntegerAttr attr) { getProperties().abid = attr; } void setAbid(uint32_t attrValue); void setBlgpAttr(::mlir::ROCDL::MFMAPermBAttr attr) { getProperties().blgp = attr; } void setBlgp(::mlir::ROCDL::MFMAPermB attrValue); static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::Type res, ::mlir::Value a, ::mlir::Value b, ::mlir::Value c, ::mlir::IntegerAttr cbsz, ::mlir::IntegerAttr abid, ::mlir::ROCDL::MFMAPermBAttr blgp); static mfma_f32_16x16x4bf16_1k create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::Type res, ::mlir::Value a, ::mlir::Value b, ::mlir::Value c, ::mlir::IntegerAttr cbsz, ::mlir::IntegerAttr abid, ::mlir::ROCDL::MFMAPermBAttr blgp); static mfma_f32_16x16x4bf16_1k create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::Type res, ::mlir::Value a, ::mlir::Value b, ::mlir::Value c, ::mlir::IntegerAttr cbsz, ::mlir::IntegerAttr abid, ::mlir::ROCDL::MFMAPermBAttr blgp); static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::Value a, ::mlir::Value b, ::mlir::Value c, ::mlir::IntegerAttr cbsz, ::mlir::IntegerAttr abid, ::mlir::ROCDL::MFMAPermBAttr blgp); static mfma_f32_16x16x4bf16_1k create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::Value a, ::mlir::Value b, ::mlir::Value c, ::mlir::IntegerAttr cbsz, ::mlir::IntegerAttr abid, ::mlir::ROCDL::MFMAPermBAttr blgp); static mfma_f32_16x16x4bf16_1k create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::Value a, ::mlir::Value b, ::mlir::Value c, ::mlir::IntegerAttr cbsz, ::mlir::IntegerAttr abid, ::mlir::ROCDL::MFMAPermBAttr blgp); static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::Type res, ::mlir::Value a, ::mlir::Value b, ::mlir::Value c, uint32_t cbsz, uint32_t abid, ::mlir::ROCDL::MFMAPermB blgp); static mfma_f32_16x16x4bf16_1k create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::Type res, ::mlir::Value a, ::mlir::Value b, ::mlir::Value c, uint32_t cbsz, uint32_t abid, ::mlir::ROCDL::MFMAPermB blgp); static mfma_f32_16x16x4bf16_1k create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::Type res, ::mlir::Value a, ::mlir::Value b, ::mlir::Value c, uint32_t cbsz, uint32_t abid, ::mlir::ROCDL::MFMAPermB blgp); static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::Value a, ::mlir::Value b, ::mlir::Value c, uint32_t cbsz, uint32_t abid, ::mlir::ROCDL::MFMAPermB blgp); static mfma_f32_16x16x4bf16_1k create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::Value a, ::mlir::Value b, ::mlir::Value c, uint32_t cbsz, uint32_t abid, ::mlir::ROCDL::MFMAPermB blgp); static mfma_f32_16x16x4bf16_1k create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::Value a, ::mlir::Value b, ::mlir::Value c, uint32_t cbsz, uint32_t abid, ::mlir::ROCDL::MFMAPermB blgp); static void build(::mlir::OpBuilder &, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, ::llvm::ArrayRef<::mlir::NamedAttribute> attributes = {}); static mfma_f32_16x16x4bf16_1k create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, ::llvm::ArrayRef<::mlir::NamedAttribute> attributes = {}); static mfma_f32_16x16x4bf16_1k create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, ::llvm::ArrayRef<::mlir::NamedAttribute> attributes = {}); static void build(::mlir::OpBuilder &, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, const Properties &properties, ::llvm::ArrayRef<::mlir::NamedAttribute> discardableAttributes = {}); static mfma_f32_16x16x4bf16_1k create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, const Properties &properties, ::llvm::ArrayRef<::mlir::NamedAttribute> discardableAttributes = {}); static mfma_f32_16x16x4bf16_1k create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, const Properties &properties, ::llvm::ArrayRef<::mlir::NamedAttribute> discardableAttributes = {}); ::llvm::LogicalResult verifyInvariantsImpl(); ::llvm::LogicalResult verifyInvariants(); static ::mlir::ParseResult parse(::mlir::OpAsmParser &parser, ::mlir::OperationState &result); void print(::mlir::OpAsmPrinter &_odsPrinter); private: ::mlir::StringAttr getAttributeNameForIndex(unsigned index) { return getAttributeNameForIndex((*this)->getName(), index); } static ::mlir::StringAttr getAttributeNameForIndex(::mlir::OperationName name, unsigned index) { assert(index < 3 && "invalid attribute index"); assert(name.getStringRef() == getOperationName() && "invalid operation name"); assert(name.isRegistered() && "Operation isn't registered, missing a " "dependent dialect loading?"); return name.getAttributeNames()[index]; } public: }; } // namespace mlir::ROCDL MLIR_DECLARE_EXPLICIT_TYPE_ID(::mlir::ROCDL::mfma_f32_16x16x4bf16_1k) MLIR_DECLARE_EXPLICIT_TYPE_ID(::mlir::ROCDL::detail::mfma_f32_16x16x4bf16_1kGenericAdaptorBase::Properties) namespace mlir::ROCDL { //===----------------------------------------------------------------------===// // ::mlir::ROCDL::mfma_f32_16x16x4f16 declarations //===----------------------------------------------------------------------===// namespace detail { class mfma_f32_16x16x4f16GenericAdaptorBase { public: struct Properties { using abidTy = ::mlir::IntegerAttr; abidTy abid; auto getAbid() const { auto &propStorage = this->abid; return ::llvm::cast<::mlir::IntegerAttr>(propStorage); } void setAbid(const ::mlir::IntegerAttr &propValue) { this->abid = propValue; } using blgpTy = ::mlir::ROCDL::MFMAPermBAttr; blgpTy blgp; auto getBlgp() const { auto &propStorage = this->blgp; return ::llvm::cast<::mlir::ROCDL::MFMAPermBAttr>(propStorage); } void setBlgp(const ::mlir::ROCDL::MFMAPermBAttr &propValue) { this->blgp = propValue; } using cbszTy = ::mlir::IntegerAttr; cbszTy cbsz; auto getCbsz() const { auto &propStorage = this->cbsz; return ::llvm::cast<::mlir::IntegerAttr>(propStorage); } void setCbsz(const ::mlir::IntegerAttr &propValue) { this->cbsz = propValue; } bool operator==(const Properties &rhs) const { return rhs.abid == this->abid && rhs.blgp == this->blgp && rhs.cbsz == this->cbsz && true; } bool operator!=(const Properties &rhs) const { return !(*this == rhs); } }; protected: ::mlir::DictionaryAttr odsAttrs; ::std::optional<::mlir::OperationName> odsOpName; Properties properties; ::mlir::RegionRange odsRegions; public: mfma_f32_16x16x4f16GenericAdaptorBase(::mlir::DictionaryAttr attrs, const Properties &properties, ::mlir::RegionRange regions = {}) : odsAttrs(attrs), properties(properties), odsRegions(regions) { if (odsAttrs) odsOpName.emplace("rocdl.mfma.f32.16x16x4f16", odsAttrs.getContext()); } mfma_f32_16x16x4f16GenericAdaptorBase(mfma_f32_16x16x4f16 op); std::pair getODSOperandIndexAndLength(unsigned index, unsigned odsOperandsSize) { return {index, 1}; } const Properties &getProperties() { return properties; } ::mlir::DictionaryAttr getAttributes() { return odsAttrs; } ::mlir::IntegerAttr getCbszAttr() { auto attr = ::llvm::cast<::mlir::IntegerAttr>(getProperties().cbsz); return attr; } uint32_t getCbsz(); ::mlir::IntegerAttr getAbidAttr() { auto attr = ::llvm::cast<::mlir::IntegerAttr>(getProperties().abid); return attr; } uint32_t getAbid(); ::mlir::ROCDL::MFMAPermBAttr getBlgpAttr() { auto attr = ::llvm::cast<::mlir::ROCDL::MFMAPermBAttr>(getProperties().blgp); return attr; } ::mlir::ROCDL::MFMAPermB getBlgp(); }; } // namespace detail template class mfma_f32_16x16x4f16GenericAdaptor : public detail::mfma_f32_16x16x4f16GenericAdaptorBase { using ValueT = ::llvm::detail::ValueOfRange; using Base = detail::mfma_f32_16x16x4f16GenericAdaptorBase; static constexpr int odsIndex_a = 0; static constexpr int odsIndex_b = 1; static constexpr int odsIndex_c = 2; public: mfma_f32_16x16x4f16GenericAdaptor(RangeT values, ::mlir::DictionaryAttr attrs, const Properties &properties, ::mlir::RegionRange regions = {}) : Base(attrs, properties, regions), odsOperands(values) {} mfma_f32_16x16x4f16GenericAdaptor(RangeT values, ::mlir::DictionaryAttr attrs, ::mlir::PropertyRef properties, ::mlir::RegionRange regions = {}) : mfma_f32_16x16x4f16GenericAdaptor(values, attrs, (properties ? *properties.as() : Properties{}), regions) {} mfma_f32_16x16x4f16GenericAdaptor(RangeT values, ::mlir::DictionaryAttr attrs = nullptr) : mfma_f32_16x16x4f16GenericAdaptor(values, attrs, Properties{}, {}) {} mfma_f32_16x16x4f16GenericAdaptor(RangeT values, const mfma_f32_16x16x4f16GenericAdaptorBase &base) : Base(base), odsOperands(values) {} template >> mfma_f32_16x16x4f16GenericAdaptor(RangeT values, LateInst op) : Base(op), odsOperands(values) {} std::pair getODSOperandIndexAndLength(unsigned index) { return Base::getODSOperandIndexAndLength(index, odsOperands.size()); } RangeT getODSOperands(unsigned index) { auto valueRange = getODSOperandIndexAndLength(index); return {std::next(odsOperands.begin(), valueRange.first), std::next(odsOperands.begin(), valueRange.first + valueRange.second)}; } ValueT getA() { return (*getODSOperands(0).begin()); } ValueT getB() { return (*getODSOperands(1).begin()); } ValueT getC() { return (*getODSOperands(2).begin()); } RangeT getOperands() { return odsOperands; } private: RangeT odsOperands; }; class mfma_f32_16x16x4f16Adaptor : public mfma_f32_16x16x4f16GenericAdaptor<::mlir::ValueRange> { public: using mfma_f32_16x16x4f16GenericAdaptor::mfma_f32_16x16x4f16GenericAdaptor; mfma_f32_16x16x4f16Adaptor(mfma_f32_16x16x4f16 op); ::llvm::LogicalResult verify(::mlir::Location loc); }; class mfma_f32_16x16x4f16 : public ::mlir::Op::Impl, ::mlir::OpTrait::ZeroSuccessors, ::mlir::OpTrait::NOperands<3>::Impl, ::mlir::OpTrait::OpInvariants, ::mlir::BytecodeOpInterface::Trait> { public: using Op::Op; using Op::print; using Adaptor = mfma_f32_16x16x4f16Adaptor; template using GenericAdaptor = mfma_f32_16x16x4f16GenericAdaptor; using FoldAdaptor = GenericAdaptor<::llvm::ArrayRef<::mlir::Attribute>>; static constexpr int odsIndex_a = 0; static constexpr int odsIndex_b = 1; static constexpr int odsIndex_c = 2; using Properties = FoldAdaptor::Properties; static ::llvm::ArrayRef<::llvm::StringRef> getAttributeNames() { static ::llvm::StringRef attrNames[] = {::llvm::StringRef("abid"), ::llvm::StringRef("blgp"), ::llvm::StringRef("cbsz")}; return ::llvm::ArrayRef(attrNames); } ::mlir::StringAttr getAbidAttrName() { return getAttributeNameForIndex(0); } static ::mlir::StringAttr getAbidAttrName(::mlir::OperationName name) { return getAttributeNameForIndex(name, 0); } ::mlir::StringAttr getBlgpAttrName() { return getAttributeNameForIndex(1); } static ::mlir::StringAttr getBlgpAttrName(::mlir::OperationName name) { return getAttributeNameForIndex(name, 1); } ::mlir::StringAttr getCbszAttrName() { return getAttributeNameForIndex(2); } static ::mlir::StringAttr getCbszAttrName(::mlir::OperationName name) { return getAttributeNameForIndex(name, 2); } static constexpr ::llvm::StringLiteral getOperationName() { return ::llvm::StringLiteral("rocdl.mfma.f32.16x16x4f16"); } std::pair getODSOperandIndexAndLength(unsigned index) { return {index, 1}; } ::mlir::Operation::operand_range getODSOperands(unsigned index) { auto valueRange = getODSOperandIndexAndLength(index); return {std::next(getOperation()->operand_begin(), valueRange.first), std::next(getOperation()->operand_begin(), valueRange.first + valueRange.second)}; } ::mlir::TypedValue<::mlir::VectorType> getA() { return ::llvm::cast<::mlir::TypedValue<::mlir::VectorType>>(*getODSOperands(0).begin()); } ::mlir::TypedValue<::mlir::VectorType> getB() { return ::llvm::cast<::mlir::TypedValue<::mlir::VectorType>>(*getODSOperands(1).begin()); } ::mlir::TypedValue<::mlir::VectorType> getC() { return ::llvm::cast<::mlir::TypedValue<::mlir::VectorType>>(*getODSOperands(2).begin()); } ::mlir::OpOperand &getAMutable() { auto range = getODSOperandIndexAndLength(0); return getOperation()->getOpOperand(range.first); } ::mlir::OpOperand &getBMutable() { auto range = getODSOperandIndexAndLength(1); return getOperation()->getOpOperand(range.first); } ::mlir::OpOperand &getCMutable() { auto range = getODSOperandIndexAndLength(2); return getOperation()->getOpOperand(range.first); } std::pair getODSResultIndexAndLength(unsigned index) { return {index, 1}; } ::mlir::Operation::result_range getODSResults(unsigned index) { auto valueRange = getODSResultIndexAndLength(index); return {std::next(getOperation()->result_begin(), valueRange.first), std::next(getOperation()->result_begin(), valueRange.first + valueRange.second)}; } ::mlir::TypedValue<::mlir::VectorType> getRes() { return ::llvm::cast<::mlir::TypedValue<::mlir::VectorType>>(*getODSResults(0).begin()); } static ::llvm::LogicalResult setPropertiesFromAttr(Properties &prop, ::mlir::Attribute attr, ::llvm::function_ref<::mlir::InFlightDiagnostic()> emitError); static ::mlir::Attribute getPropertiesAsAttr(::mlir::MLIRContext *ctx, const Properties &prop); static llvm::hash_code computePropertiesHash(const Properties &prop); static std::optional getInherentAttr(::mlir::MLIRContext *ctx, const Properties &prop, llvm::StringRef name); static void setInherentAttr(Properties &prop, llvm::StringRef name, mlir::Attribute value); static void populateInherentAttrs(::mlir::MLIRContext *ctx, const Properties &prop, ::mlir::NamedAttrList &attrs); static ::llvm::LogicalResult verifyInherentAttrs(::mlir::OperationName opName, ::mlir::NamedAttrList &attrs, llvm::function_ref<::mlir::InFlightDiagnostic()> emitError); static ::llvm::LogicalResult readProperties(::mlir::DialectBytecodeReader &reader, ::mlir::OperationState &state); void writeProperties(::mlir::DialectBytecodeWriter &writer); ::mlir::IntegerAttr getCbszAttr() { return ::llvm::cast<::mlir::IntegerAttr>(getProperties().cbsz); } uint32_t getCbsz(); ::mlir::IntegerAttr getAbidAttr() { return ::llvm::cast<::mlir::IntegerAttr>(getProperties().abid); } uint32_t getAbid(); ::mlir::ROCDL::MFMAPermBAttr getBlgpAttr() { return ::llvm::cast<::mlir::ROCDL::MFMAPermBAttr>(getProperties().blgp); } ::mlir::ROCDL::MFMAPermB getBlgp(); void setCbszAttr(::mlir::IntegerAttr attr) { getProperties().cbsz = attr; } void setCbsz(uint32_t attrValue); void setAbidAttr(::mlir::IntegerAttr attr) { getProperties().abid = attr; } void setAbid(uint32_t attrValue); void setBlgpAttr(::mlir::ROCDL::MFMAPermBAttr attr) { getProperties().blgp = attr; } void setBlgp(::mlir::ROCDL::MFMAPermB attrValue); static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::Type res, ::mlir::Value a, ::mlir::Value b, ::mlir::Value c, ::mlir::IntegerAttr cbsz, ::mlir::IntegerAttr abid, ::mlir::ROCDL::MFMAPermBAttr blgp); static mfma_f32_16x16x4f16 create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::Type res, ::mlir::Value a, ::mlir::Value b, ::mlir::Value c, ::mlir::IntegerAttr cbsz, ::mlir::IntegerAttr abid, ::mlir::ROCDL::MFMAPermBAttr blgp); static mfma_f32_16x16x4f16 create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::Type res, ::mlir::Value a, ::mlir::Value b, ::mlir::Value c, ::mlir::IntegerAttr cbsz, ::mlir::IntegerAttr abid, ::mlir::ROCDL::MFMAPermBAttr blgp); static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::Value a, ::mlir::Value b, ::mlir::Value c, ::mlir::IntegerAttr cbsz, ::mlir::IntegerAttr abid, ::mlir::ROCDL::MFMAPermBAttr blgp); static mfma_f32_16x16x4f16 create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::Value a, ::mlir::Value b, ::mlir::Value c, ::mlir::IntegerAttr cbsz, ::mlir::IntegerAttr abid, ::mlir::ROCDL::MFMAPermBAttr blgp); static mfma_f32_16x16x4f16 create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::Value a, ::mlir::Value b, ::mlir::Value c, ::mlir::IntegerAttr cbsz, ::mlir::IntegerAttr abid, ::mlir::ROCDL::MFMAPermBAttr blgp); static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::Type res, ::mlir::Value a, ::mlir::Value b, ::mlir::Value c, uint32_t cbsz, uint32_t abid, ::mlir::ROCDL::MFMAPermB blgp); static mfma_f32_16x16x4f16 create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::Type res, ::mlir::Value a, ::mlir::Value b, ::mlir::Value c, uint32_t cbsz, uint32_t abid, ::mlir::ROCDL::MFMAPermB blgp); static mfma_f32_16x16x4f16 create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::Type res, ::mlir::Value a, ::mlir::Value b, ::mlir::Value c, uint32_t cbsz, uint32_t abid, ::mlir::ROCDL::MFMAPermB blgp); static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::Value a, ::mlir::Value b, ::mlir::Value c, uint32_t cbsz, uint32_t abid, ::mlir::ROCDL::MFMAPermB blgp); static mfma_f32_16x16x4f16 create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::Value a, ::mlir::Value b, ::mlir::Value c, uint32_t cbsz, uint32_t abid, ::mlir::ROCDL::MFMAPermB blgp); static mfma_f32_16x16x4f16 create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::Value a, ::mlir::Value b, ::mlir::Value c, uint32_t cbsz, uint32_t abid, ::mlir::ROCDL::MFMAPermB blgp); static void build(::mlir::OpBuilder &, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, ::llvm::ArrayRef<::mlir::NamedAttribute> attributes = {}); static mfma_f32_16x16x4f16 create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, ::llvm::ArrayRef<::mlir::NamedAttribute> attributes = {}); static mfma_f32_16x16x4f16 create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, ::llvm::ArrayRef<::mlir::NamedAttribute> attributes = {}); static void build(::mlir::OpBuilder &, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, const Properties &properties, ::llvm::ArrayRef<::mlir::NamedAttribute> discardableAttributes = {}); static mfma_f32_16x16x4f16 create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, const Properties &properties, ::llvm::ArrayRef<::mlir::NamedAttribute> discardableAttributes = {}); static mfma_f32_16x16x4f16 create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, const Properties &properties, ::llvm::ArrayRef<::mlir::NamedAttribute> discardableAttributes = {}); ::llvm::LogicalResult verifyInvariantsImpl(); ::llvm::LogicalResult verifyInvariants(); static ::mlir::ParseResult parse(::mlir::OpAsmParser &parser, ::mlir::OperationState &result); void print(::mlir::OpAsmPrinter &_odsPrinter); private: ::mlir::StringAttr getAttributeNameForIndex(unsigned index) { return getAttributeNameForIndex((*this)->getName(), index); } static ::mlir::StringAttr getAttributeNameForIndex(::mlir::OperationName name, unsigned index) { assert(index < 3 && "invalid attribute index"); assert(name.getStringRef() == getOperationName() && "invalid operation name"); assert(name.isRegistered() && "Operation isn't registered, missing a " "dependent dialect loading?"); return name.getAttributeNames()[index]; } public: }; } // namespace mlir::ROCDL MLIR_DECLARE_EXPLICIT_TYPE_ID(::mlir::ROCDL::mfma_f32_16x16x4f16) MLIR_DECLARE_EXPLICIT_TYPE_ID(::mlir::ROCDL::detail::mfma_f32_16x16x4f16GenericAdaptorBase::Properties) namespace mlir::ROCDL { //===----------------------------------------------------------------------===// // ::mlir::ROCDL::mfma_f32_16x16x4f32 declarations //===----------------------------------------------------------------------===// namespace detail { class mfma_f32_16x16x4f32GenericAdaptorBase { public: struct Properties { using abidTy = ::mlir::IntegerAttr; abidTy abid; auto getAbid() const { auto &propStorage = this->abid; return ::llvm::cast<::mlir::IntegerAttr>(propStorage); } void setAbid(const ::mlir::IntegerAttr &propValue) { this->abid = propValue; } using blgpTy = ::mlir::ROCDL::MFMAPermBAttr; blgpTy blgp; auto getBlgp() const { auto &propStorage = this->blgp; return ::llvm::cast<::mlir::ROCDL::MFMAPermBAttr>(propStorage); } void setBlgp(const ::mlir::ROCDL::MFMAPermBAttr &propValue) { this->blgp = propValue; } using cbszTy = ::mlir::IntegerAttr; cbszTy cbsz; auto getCbsz() const { auto &propStorage = this->cbsz; return ::llvm::cast<::mlir::IntegerAttr>(propStorage); } void setCbsz(const ::mlir::IntegerAttr &propValue) { this->cbsz = propValue; } bool operator==(const Properties &rhs) const { return rhs.abid == this->abid && rhs.blgp == this->blgp && rhs.cbsz == this->cbsz && true; } bool operator!=(const Properties &rhs) const { return !(*this == rhs); } }; protected: ::mlir::DictionaryAttr odsAttrs; ::std::optional<::mlir::OperationName> odsOpName; Properties properties; ::mlir::RegionRange odsRegions; public: mfma_f32_16x16x4f32GenericAdaptorBase(::mlir::DictionaryAttr attrs, const Properties &properties, ::mlir::RegionRange regions = {}) : odsAttrs(attrs), properties(properties), odsRegions(regions) { if (odsAttrs) odsOpName.emplace("rocdl.mfma.f32.16x16x4f32", odsAttrs.getContext()); } mfma_f32_16x16x4f32GenericAdaptorBase(mfma_f32_16x16x4f32 op); std::pair getODSOperandIndexAndLength(unsigned index, unsigned odsOperandsSize) { return {index, 1}; } const Properties &getProperties() { return properties; } ::mlir::DictionaryAttr getAttributes() { return odsAttrs; } ::mlir::IntegerAttr getCbszAttr() { auto attr = ::llvm::cast<::mlir::IntegerAttr>(getProperties().cbsz); return attr; } uint32_t getCbsz(); ::mlir::IntegerAttr getAbidAttr() { auto attr = ::llvm::cast<::mlir::IntegerAttr>(getProperties().abid); return attr; } uint32_t getAbid(); ::mlir::ROCDL::MFMAPermBAttr getBlgpAttr() { auto attr = ::llvm::cast<::mlir::ROCDL::MFMAPermBAttr>(getProperties().blgp); return attr; } ::mlir::ROCDL::MFMAPermB getBlgp(); }; } // namespace detail template class mfma_f32_16x16x4f32GenericAdaptor : public detail::mfma_f32_16x16x4f32GenericAdaptorBase { using ValueT = ::llvm::detail::ValueOfRange; using Base = detail::mfma_f32_16x16x4f32GenericAdaptorBase; static constexpr int odsIndex_a = 0; static constexpr int odsIndex_b = 1; static constexpr int odsIndex_c = 2; public: mfma_f32_16x16x4f32GenericAdaptor(RangeT values, ::mlir::DictionaryAttr attrs, const Properties &properties, ::mlir::RegionRange regions = {}) : Base(attrs, properties, regions), odsOperands(values) {} mfma_f32_16x16x4f32GenericAdaptor(RangeT values, ::mlir::DictionaryAttr attrs, ::mlir::PropertyRef properties, ::mlir::RegionRange regions = {}) : mfma_f32_16x16x4f32GenericAdaptor(values, attrs, (properties ? *properties.as() : Properties{}), regions) {} mfma_f32_16x16x4f32GenericAdaptor(RangeT values, ::mlir::DictionaryAttr attrs = nullptr) : mfma_f32_16x16x4f32GenericAdaptor(values, attrs, Properties{}, {}) {} mfma_f32_16x16x4f32GenericAdaptor(RangeT values, const mfma_f32_16x16x4f32GenericAdaptorBase &base) : Base(base), odsOperands(values) {} template >> mfma_f32_16x16x4f32GenericAdaptor(RangeT values, LateInst op) : Base(op), odsOperands(values) {} std::pair getODSOperandIndexAndLength(unsigned index) { return Base::getODSOperandIndexAndLength(index, odsOperands.size()); } RangeT getODSOperands(unsigned index) { auto valueRange = getODSOperandIndexAndLength(index); return {std::next(odsOperands.begin(), valueRange.first), std::next(odsOperands.begin(), valueRange.first + valueRange.second)}; } ValueT getA() { return (*getODSOperands(0).begin()); } ValueT getB() { return (*getODSOperands(1).begin()); } ValueT getC() { return (*getODSOperands(2).begin()); } RangeT getOperands() { return odsOperands; } private: RangeT odsOperands; }; class mfma_f32_16x16x4f32Adaptor : public mfma_f32_16x16x4f32GenericAdaptor<::mlir::ValueRange> { public: using mfma_f32_16x16x4f32GenericAdaptor::mfma_f32_16x16x4f32GenericAdaptor; mfma_f32_16x16x4f32Adaptor(mfma_f32_16x16x4f32 op); ::llvm::LogicalResult verify(::mlir::Location loc); }; class mfma_f32_16x16x4f32 : public ::mlir::Op::Impl, ::mlir::OpTrait::ZeroSuccessors, ::mlir::OpTrait::NOperands<3>::Impl, ::mlir::OpTrait::OpInvariants, ::mlir::BytecodeOpInterface::Trait> { public: using Op::Op; using Op::print; using Adaptor = mfma_f32_16x16x4f32Adaptor; template using GenericAdaptor = mfma_f32_16x16x4f32GenericAdaptor; using FoldAdaptor = GenericAdaptor<::llvm::ArrayRef<::mlir::Attribute>>; static constexpr int odsIndex_a = 0; static constexpr int odsIndex_b = 1; static constexpr int odsIndex_c = 2; using Properties = FoldAdaptor::Properties; static ::llvm::ArrayRef<::llvm::StringRef> getAttributeNames() { static ::llvm::StringRef attrNames[] = {::llvm::StringRef("abid"), ::llvm::StringRef("blgp"), ::llvm::StringRef("cbsz")}; return ::llvm::ArrayRef(attrNames); } ::mlir::StringAttr getAbidAttrName() { return getAttributeNameForIndex(0); } static ::mlir::StringAttr getAbidAttrName(::mlir::OperationName name) { return getAttributeNameForIndex(name, 0); } ::mlir::StringAttr getBlgpAttrName() { return getAttributeNameForIndex(1); } static ::mlir::StringAttr getBlgpAttrName(::mlir::OperationName name) { return getAttributeNameForIndex(name, 1); } ::mlir::StringAttr getCbszAttrName() { return getAttributeNameForIndex(2); } static ::mlir::StringAttr getCbszAttrName(::mlir::OperationName name) { return getAttributeNameForIndex(name, 2); } static constexpr ::llvm::StringLiteral getOperationName() { return ::llvm::StringLiteral("rocdl.mfma.f32.16x16x4f32"); } std::pair getODSOperandIndexAndLength(unsigned index) { return {index, 1}; } ::mlir::Operation::operand_range getODSOperands(unsigned index) { auto valueRange = getODSOperandIndexAndLength(index); return {std::next(getOperation()->operand_begin(), valueRange.first), std::next(getOperation()->operand_begin(), valueRange.first + valueRange.second)}; } ::mlir::TypedValue<::mlir::Type> getA() { return ::llvm::cast<::mlir::TypedValue<::mlir::Type>>(*getODSOperands(0).begin()); } ::mlir::TypedValue<::mlir::Type> getB() { return ::llvm::cast<::mlir::TypedValue<::mlir::Type>>(*getODSOperands(1).begin()); } ::mlir::TypedValue<::mlir::VectorType> getC() { return ::llvm::cast<::mlir::TypedValue<::mlir::VectorType>>(*getODSOperands(2).begin()); } ::mlir::OpOperand &getAMutable() { auto range = getODSOperandIndexAndLength(0); return getOperation()->getOpOperand(range.first); } ::mlir::OpOperand &getBMutable() { auto range = getODSOperandIndexAndLength(1); return getOperation()->getOpOperand(range.first); } ::mlir::OpOperand &getCMutable() { auto range = getODSOperandIndexAndLength(2); return getOperation()->getOpOperand(range.first); } std::pair getODSResultIndexAndLength(unsigned index) { return {index, 1}; } ::mlir::Operation::result_range getODSResults(unsigned index) { auto valueRange = getODSResultIndexAndLength(index); return {std::next(getOperation()->result_begin(), valueRange.first), std::next(getOperation()->result_begin(), valueRange.first + valueRange.second)}; } ::mlir::TypedValue<::mlir::VectorType> getRes() { return ::llvm::cast<::mlir::TypedValue<::mlir::VectorType>>(*getODSResults(0).begin()); } static ::llvm::LogicalResult setPropertiesFromAttr(Properties &prop, ::mlir::Attribute attr, ::llvm::function_ref<::mlir::InFlightDiagnostic()> emitError); static ::mlir::Attribute getPropertiesAsAttr(::mlir::MLIRContext *ctx, const Properties &prop); static llvm::hash_code computePropertiesHash(const Properties &prop); static std::optional getInherentAttr(::mlir::MLIRContext *ctx, const Properties &prop, llvm::StringRef name); static void setInherentAttr(Properties &prop, llvm::StringRef name, mlir::Attribute value); static void populateInherentAttrs(::mlir::MLIRContext *ctx, const Properties &prop, ::mlir::NamedAttrList &attrs); static ::llvm::LogicalResult verifyInherentAttrs(::mlir::OperationName opName, ::mlir::NamedAttrList &attrs, llvm::function_ref<::mlir::InFlightDiagnostic()> emitError); static ::llvm::LogicalResult readProperties(::mlir::DialectBytecodeReader &reader, ::mlir::OperationState &state); void writeProperties(::mlir::DialectBytecodeWriter &writer); ::mlir::IntegerAttr getCbszAttr() { return ::llvm::cast<::mlir::IntegerAttr>(getProperties().cbsz); } uint32_t getCbsz(); ::mlir::IntegerAttr getAbidAttr() { return ::llvm::cast<::mlir::IntegerAttr>(getProperties().abid); } uint32_t getAbid(); ::mlir::ROCDL::MFMAPermBAttr getBlgpAttr() { return ::llvm::cast<::mlir::ROCDL::MFMAPermBAttr>(getProperties().blgp); } ::mlir::ROCDL::MFMAPermB getBlgp(); void setCbszAttr(::mlir::IntegerAttr attr) { getProperties().cbsz = attr; } void setCbsz(uint32_t attrValue); void setAbidAttr(::mlir::IntegerAttr attr) { getProperties().abid = attr; } void setAbid(uint32_t attrValue); void setBlgpAttr(::mlir::ROCDL::MFMAPermBAttr attr) { getProperties().blgp = attr; } void setBlgp(::mlir::ROCDL::MFMAPermB attrValue); static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::Type res, ::mlir::Value a, ::mlir::Value b, ::mlir::Value c, ::mlir::IntegerAttr cbsz, ::mlir::IntegerAttr abid, ::mlir::ROCDL::MFMAPermBAttr blgp); static mfma_f32_16x16x4f32 create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::Type res, ::mlir::Value a, ::mlir::Value b, ::mlir::Value c, ::mlir::IntegerAttr cbsz, ::mlir::IntegerAttr abid, ::mlir::ROCDL::MFMAPermBAttr blgp); static mfma_f32_16x16x4f32 create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::Type res, ::mlir::Value a, ::mlir::Value b, ::mlir::Value c, ::mlir::IntegerAttr cbsz, ::mlir::IntegerAttr abid, ::mlir::ROCDL::MFMAPermBAttr blgp); static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::Value a, ::mlir::Value b, ::mlir::Value c, ::mlir::IntegerAttr cbsz, ::mlir::IntegerAttr abid, ::mlir::ROCDL::MFMAPermBAttr blgp); static mfma_f32_16x16x4f32 create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::Value a, ::mlir::Value b, ::mlir::Value c, ::mlir::IntegerAttr cbsz, ::mlir::IntegerAttr abid, ::mlir::ROCDL::MFMAPermBAttr blgp); static mfma_f32_16x16x4f32 create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::Value a, ::mlir::Value b, ::mlir::Value c, ::mlir::IntegerAttr cbsz, ::mlir::IntegerAttr abid, ::mlir::ROCDL::MFMAPermBAttr blgp); static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::Type res, ::mlir::Value a, ::mlir::Value b, ::mlir::Value c, uint32_t cbsz, uint32_t abid, ::mlir::ROCDL::MFMAPermB blgp); static mfma_f32_16x16x4f32 create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::Type res, ::mlir::Value a, ::mlir::Value b, ::mlir::Value c, uint32_t cbsz, uint32_t abid, ::mlir::ROCDL::MFMAPermB blgp); static mfma_f32_16x16x4f32 create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::Type res, ::mlir::Value a, ::mlir::Value b, ::mlir::Value c, uint32_t cbsz, uint32_t abid, ::mlir::ROCDL::MFMAPermB blgp); static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::Value a, ::mlir::Value b, ::mlir::Value c, uint32_t cbsz, uint32_t abid, ::mlir::ROCDL::MFMAPermB blgp); static mfma_f32_16x16x4f32 create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::Value a, ::mlir::Value b, ::mlir::Value c, uint32_t cbsz, uint32_t abid, ::mlir::ROCDL::MFMAPermB blgp); static mfma_f32_16x16x4f32 create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::Value a, ::mlir::Value b, ::mlir::Value c, uint32_t cbsz, uint32_t abid, ::mlir::ROCDL::MFMAPermB blgp); static void build(::mlir::OpBuilder &, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, ::llvm::ArrayRef<::mlir::NamedAttribute> attributes = {}); static mfma_f32_16x16x4f32 create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, ::llvm::ArrayRef<::mlir::NamedAttribute> attributes = {}); static mfma_f32_16x16x4f32 create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, ::llvm::ArrayRef<::mlir::NamedAttribute> attributes = {}); static void build(::mlir::OpBuilder &, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, const Properties &properties, ::llvm::ArrayRef<::mlir::NamedAttribute> discardableAttributes = {}); static mfma_f32_16x16x4f32 create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, const Properties &properties, ::llvm::ArrayRef<::mlir::NamedAttribute> discardableAttributes = {}); static mfma_f32_16x16x4f32 create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, const Properties &properties, ::llvm::ArrayRef<::mlir::NamedAttribute> discardableAttributes = {}); ::llvm::LogicalResult verifyInvariantsImpl(); ::llvm::LogicalResult verifyInvariants(); static ::mlir::ParseResult parse(::mlir::OpAsmParser &parser, ::mlir::OperationState &result); void print(::mlir::OpAsmPrinter &_odsPrinter); private: ::mlir::StringAttr getAttributeNameForIndex(unsigned index) { return getAttributeNameForIndex((*this)->getName(), index); } static ::mlir::StringAttr getAttributeNameForIndex(::mlir::OperationName name, unsigned index) { assert(index < 3 && "invalid attribute index"); assert(name.getStringRef() == getOperationName() && "invalid operation name"); assert(name.isRegistered() && "Operation isn't registered, missing a " "dependent dialect loading?"); return name.getAttributeNames()[index]; } public: }; } // namespace mlir::ROCDL MLIR_DECLARE_EXPLICIT_TYPE_ID(::mlir::ROCDL::mfma_f32_16x16x4f32) MLIR_DECLARE_EXPLICIT_TYPE_ID(::mlir::ROCDL::detail::mfma_f32_16x16x4f32GenericAdaptorBase::Properties) namespace mlir::ROCDL { //===----------------------------------------------------------------------===// // ::mlir::ROCDL::mfma_f32_16x16x8_xf32 declarations //===----------------------------------------------------------------------===// namespace detail { class mfma_f32_16x16x8_xf32GenericAdaptorBase { public: struct Properties { using abidTy = ::mlir::IntegerAttr; abidTy abid; auto getAbid() const { auto &propStorage = this->abid; return ::llvm::cast<::mlir::IntegerAttr>(propStorage); } void setAbid(const ::mlir::IntegerAttr &propValue) { this->abid = propValue; } using blgpTy = ::mlir::ROCDL::MFMAPermBAttr; blgpTy blgp; auto getBlgp() const { auto &propStorage = this->blgp; return ::llvm::cast<::mlir::ROCDL::MFMAPermBAttr>(propStorage); } void setBlgp(const ::mlir::ROCDL::MFMAPermBAttr &propValue) { this->blgp = propValue; } using cbszTy = ::mlir::IntegerAttr; cbszTy cbsz; auto getCbsz() const { auto &propStorage = this->cbsz; return ::llvm::cast<::mlir::IntegerAttr>(propStorage); } void setCbsz(const ::mlir::IntegerAttr &propValue) { this->cbsz = propValue; } bool operator==(const Properties &rhs) const { return rhs.abid == this->abid && rhs.blgp == this->blgp && rhs.cbsz == this->cbsz && true; } bool operator!=(const Properties &rhs) const { return !(*this == rhs); } }; protected: ::mlir::DictionaryAttr odsAttrs; ::std::optional<::mlir::OperationName> odsOpName; Properties properties; ::mlir::RegionRange odsRegions; public: mfma_f32_16x16x8_xf32GenericAdaptorBase(::mlir::DictionaryAttr attrs, const Properties &properties, ::mlir::RegionRange regions = {}) : odsAttrs(attrs), properties(properties), odsRegions(regions) { if (odsAttrs) odsOpName.emplace("rocdl.mfma.f32.16x16x8.xf32", odsAttrs.getContext()); } mfma_f32_16x16x8_xf32GenericAdaptorBase(mfma_f32_16x16x8_xf32 op); std::pair getODSOperandIndexAndLength(unsigned index, unsigned odsOperandsSize) { return {index, 1}; } const Properties &getProperties() { return properties; } ::mlir::DictionaryAttr getAttributes() { return odsAttrs; } ::mlir::IntegerAttr getCbszAttr() { auto attr = ::llvm::cast<::mlir::IntegerAttr>(getProperties().cbsz); return attr; } uint32_t getCbsz(); ::mlir::IntegerAttr getAbidAttr() { auto attr = ::llvm::cast<::mlir::IntegerAttr>(getProperties().abid); return attr; } uint32_t getAbid(); ::mlir::ROCDL::MFMAPermBAttr getBlgpAttr() { auto attr = ::llvm::cast<::mlir::ROCDL::MFMAPermBAttr>(getProperties().blgp); return attr; } ::mlir::ROCDL::MFMAPermB getBlgp(); }; } // namespace detail template class mfma_f32_16x16x8_xf32GenericAdaptor : public detail::mfma_f32_16x16x8_xf32GenericAdaptorBase { using ValueT = ::llvm::detail::ValueOfRange; using Base = detail::mfma_f32_16x16x8_xf32GenericAdaptorBase; static constexpr int odsIndex_a = 0; static constexpr int odsIndex_b = 1; static constexpr int odsIndex_c = 2; public: mfma_f32_16x16x8_xf32GenericAdaptor(RangeT values, ::mlir::DictionaryAttr attrs, const Properties &properties, ::mlir::RegionRange regions = {}) : Base(attrs, properties, regions), odsOperands(values) {} mfma_f32_16x16x8_xf32GenericAdaptor(RangeT values, ::mlir::DictionaryAttr attrs, ::mlir::PropertyRef properties, ::mlir::RegionRange regions = {}) : mfma_f32_16x16x8_xf32GenericAdaptor(values, attrs, (properties ? *properties.as() : Properties{}), regions) {} mfma_f32_16x16x8_xf32GenericAdaptor(RangeT values, ::mlir::DictionaryAttr attrs = nullptr) : mfma_f32_16x16x8_xf32GenericAdaptor(values, attrs, Properties{}, {}) {} mfma_f32_16x16x8_xf32GenericAdaptor(RangeT values, const mfma_f32_16x16x8_xf32GenericAdaptorBase &base) : Base(base), odsOperands(values) {} template >> mfma_f32_16x16x8_xf32GenericAdaptor(RangeT values, LateInst op) : Base(op), odsOperands(values) {} std::pair getODSOperandIndexAndLength(unsigned index) { return Base::getODSOperandIndexAndLength(index, odsOperands.size()); } RangeT getODSOperands(unsigned index) { auto valueRange = getODSOperandIndexAndLength(index); return {std::next(odsOperands.begin(), valueRange.first), std::next(odsOperands.begin(), valueRange.first + valueRange.second)}; } ValueT getA() { return (*getODSOperands(0).begin()); } ValueT getB() { return (*getODSOperands(1).begin()); } ValueT getC() { return (*getODSOperands(2).begin()); } RangeT getOperands() { return odsOperands; } private: RangeT odsOperands; }; class mfma_f32_16x16x8_xf32Adaptor : public mfma_f32_16x16x8_xf32GenericAdaptor<::mlir::ValueRange> { public: using mfma_f32_16x16x8_xf32GenericAdaptor::mfma_f32_16x16x8_xf32GenericAdaptor; mfma_f32_16x16x8_xf32Adaptor(mfma_f32_16x16x8_xf32 op); ::llvm::LogicalResult verify(::mlir::Location loc); }; class mfma_f32_16x16x8_xf32 : public ::mlir::Op::Impl, ::mlir::OpTrait::ZeroSuccessors, ::mlir::OpTrait::NOperands<3>::Impl, ::mlir::OpTrait::OpInvariants, ::mlir::BytecodeOpInterface::Trait> { public: using Op::Op; using Op::print; using Adaptor = mfma_f32_16x16x8_xf32Adaptor; template using GenericAdaptor = mfma_f32_16x16x8_xf32GenericAdaptor; using FoldAdaptor = GenericAdaptor<::llvm::ArrayRef<::mlir::Attribute>>; static constexpr int odsIndex_a = 0; static constexpr int odsIndex_b = 1; static constexpr int odsIndex_c = 2; using Properties = FoldAdaptor::Properties; static ::llvm::ArrayRef<::llvm::StringRef> getAttributeNames() { static ::llvm::StringRef attrNames[] = {::llvm::StringRef("abid"), ::llvm::StringRef("blgp"), ::llvm::StringRef("cbsz")}; return ::llvm::ArrayRef(attrNames); } ::mlir::StringAttr getAbidAttrName() { return getAttributeNameForIndex(0); } static ::mlir::StringAttr getAbidAttrName(::mlir::OperationName name) { return getAttributeNameForIndex(name, 0); } ::mlir::StringAttr getBlgpAttrName() { return getAttributeNameForIndex(1); } static ::mlir::StringAttr getBlgpAttrName(::mlir::OperationName name) { return getAttributeNameForIndex(name, 1); } ::mlir::StringAttr getCbszAttrName() { return getAttributeNameForIndex(2); } static ::mlir::StringAttr getCbszAttrName(::mlir::OperationName name) { return getAttributeNameForIndex(name, 2); } static constexpr ::llvm::StringLiteral getOperationName() { return ::llvm::StringLiteral("rocdl.mfma.f32.16x16x8.xf32"); } std::pair getODSOperandIndexAndLength(unsigned index) { return {index, 1}; } ::mlir::Operation::operand_range getODSOperands(unsigned index) { auto valueRange = getODSOperandIndexAndLength(index); return {std::next(getOperation()->operand_begin(), valueRange.first), std::next(getOperation()->operand_begin(), valueRange.first + valueRange.second)}; } ::mlir::TypedValue<::mlir::VectorType> getA() { return ::llvm::cast<::mlir::TypedValue<::mlir::VectorType>>(*getODSOperands(0).begin()); } ::mlir::TypedValue<::mlir::VectorType> getB() { return ::llvm::cast<::mlir::TypedValue<::mlir::VectorType>>(*getODSOperands(1).begin()); } ::mlir::TypedValue<::mlir::VectorType> getC() { return ::llvm::cast<::mlir::TypedValue<::mlir::VectorType>>(*getODSOperands(2).begin()); } ::mlir::OpOperand &getAMutable() { auto range = getODSOperandIndexAndLength(0); return getOperation()->getOpOperand(range.first); } ::mlir::OpOperand &getBMutable() { auto range = getODSOperandIndexAndLength(1); return getOperation()->getOpOperand(range.first); } ::mlir::OpOperand &getCMutable() { auto range = getODSOperandIndexAndLength(2); return getOperation()->getOpOperand(range.first); } std::pair getODSResultIndexAndLength(unsigned index) { return {index, 1}; } ::mlir::Operation::result_range getODSResults(unsigned index) { auto valueRange = getODSResultIndexAndLength(index); return {std::next(getOperation()->result_begin(), valueRange.first), std::next(getOperation()->result_begin(), valueRange.first + valueRange.second)}; } ::mlir::TypedValue<::mlir::VectorType> getRes() { return ::llvm::cast<::mlir::TypedValue<::mlir::VectorType>>(*getODSResults(0).begin()); } static ::llvm::LogicalResult setPropertiesFromAttr(Properties &prop, ::mlir::Attribute attr, ::llvm::function_ref<::mlir::InFlightDiagnostic()> emitError); static ::mlir::Attribute getPropertiesAsAttr(::mlir::MLIRContext *ctx, const Properties &prop); static llvm::hash_code computePropertiesHash(const Properties &prop); static std::optional getInherentAttr(::mlir::MLIRContext *ctx, const Properties &prop, llvm::StringRef name); static void setInherentAttr(Properties &prop, llvm::StringRef name, mlir::Attribute value); static void populateInherentAttrs(::mlir::MLIRContext *ctx, const Properties &prop, ::mlir::NamedAttrList &attrs); static ::llvm::LogicalResult verifyInherentAttrs(::mlir::OperationName opName, ::mlir::NamedAttrList &attrs, llvm::function_ref<::mlir::InFlightDiagnostic()> emitError); static ::llvm::LogicalResult readProperties(::mlir::DialectBytecodeReader &reader, ::mlir::OperationState &state); void writeProperties(::mlir::DialectBytecodeWriter &writer); ::mlir::IntegerAttr getCbszAttr() { return ::llvm::cast<::mlir::IntegerAttr>(getProperties().cbsz); } uint32_t getCbsz(); ::mlir::IntegerAttr getAbidAttr() { return ::llvm::cast<::mlir::IntegerAttr>(getProperties().abid); } uint32_t getAbid(); ::mlir::ROCDL::MFMAPermBAttr getBlgpAttr() { return ::llvm::cast<::mlir::ROCDL::MFMAPermBAttr>(getProperties().blgp); } ::mlir::ROCDL::MFMAPermB getBlgp(); void setCbszAttr(::mlir::IntegerAttr attr) { getProperties().cbsz = attr; } void setCbsz(uint32_t attrValue); void setAbidAttr(::mlir::IntegerAttr attr) { getProperties().abid = attr; } void setAbid(uint32_t attrValue); void setBlgpAttr(::mlir::ROCDL::MFMAPermBAttr attr) { getProperties().blgp = attr; } void setBlgp(::mlir::ROCDL::MFMAPermB attrValue); static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::Type res, ::mlir::Value a, ::mlir::Value b, ::mlir::Value c, ::mlir::IntegerAttr cbsz, ::mlir::IntegerAttr abid, ::mlir::ROCDL::MFMAPermBAttr blgp); static mfma_f32_16x16x8_xf32 create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::Type res, ::mlir::Value a, ::mlir::Value b, ::mlir::Value c, ::mlir::IntegerAttr cbsz, ::mlir::IntegerAttr abid, ::mlir::ROCDL::MFMAPermBAttr blgp); static mfma_f32_16x16x8_xf32 create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::Type res, ::mlir::Value a, ::mlir::Value b, ::mlir::Value c, ::mlir::IntegerAttr cbsz, ::mlir::IntegerAttr abid, ::mlir::ROCDL::MFMAPermBAttr blgp); static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::Value a, ::mlir::Value b, ::mlir::Value c, ::mlir::IntegerAttr cbsz, ::mlir::IntegerAttr abid, ::mlir::ROCDL::MFMAPermBAttr blgp); static mfma_f32_16x16x8_xf32 create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::Value a, ::mlir::Value b, ::mlir::Value c, ::mlir::IntegerAttr cbsz, ::mlir::IntegerAttr abid, ::mlir::ROCDL::MFMAPermBAttr blgp); static mfma_f32_16x16x8_xf32 create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::Value a, ::mlir::Value b, ::mlir::Value c, ::mlir::IntegerAttr cbsz, ::mlir::IntegerAttr abid, ::mlir::ROCDL::MFMAPermBAttr blgp); static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::Type res, ::mlir::Value a, ::mlir::Value b, ::mlir::Value c, uint32_t cbsz, uint32_t abid, ::mlir::ROCDL::MFMAPermB blgp); static mfma_f32_16x16x8_xf32 create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::Type res, ::mlir::Value a, ::mlir::Value b, ::mlir::Value c, uint32_t cbsz, uint32_t abid, ::mlir::ROCDL::MFMAPermB blgp); static mfma_f32_16x16x8_xf32 create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::Type res, ::mlir::Value a, ::mlir::Value b, ::mlir::Value c, uint32_t cbsz, uint32_t abid, ::mlir::ROCDL::MFMAPermB blgp); static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::Value a, ::mlir::Value b, ::mlir::Value c, uint32_t cbsz, uint32_t abid, ::mlir::ROCDL::MFMAPermB blgp); static mfma_f32_16x16x8_xf32 create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::Value a, ::mlir::Value b, ::mlir::Value c, uint32_t cbsz, uint32_t abid, ::mlir::ROCDL::MFMAPermB blgp); static mfma_f32_16x16x8_xf32 create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::Value a, ::mlir::Value b, ::mlir::Value c, uint32_t cbsz, uint32_t abid, ::mlir::ROCDL::MFMAPermB blgp); static void build(::mlir::OpBuilder &, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, ::llvm::ArrayRef<::mlir::NamedAttribute> attributes = {}); static mfma_f32_16x16x8_xf32 create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, ::llvm::ArrayRef<::mlir::NamedAttribute> attributes = {}); static mfma_f32_16x16x8_xf32 create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, ::llvm::ArrayRef<::mlir::NamedAttribute> attributes = {}); static void build(::mlir::OpBuilder &, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, const Properties &properties, ::llvm::ArrayRef<::mlir::NamedAttribute> discardableAttributes = {}); static mfma_f32_16x16x8_xf32 create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, const Properties &properties, ::llvm::ArrayRef<::mlir::NamedAttribute> discardableAttributes = {}); static mfma_f32_16x16x8_xf32 create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, const Properties &properties, ::llvm::ArrayRef<::mlir::NamedAttribute> discardableAttributes = {}); ::llvm::LogicalResult verifyInvariantsImpl(); ::llvm::LogicalResult verifyInvariants(); static ::mlir::ParseResult parse(::mlir::OpAsmParser &parser, ::mlir::OperationState &result); void print(::mlir::OpAsmPrinter &_odsPrinter); private: ::mlir::StringAttr getAttributeNameForIndex(unsigned index) { return getAttributeNameForIndex((*this)->getName(), index); } static ::mlir::StringAttr getAttributeNameForIndex(::mlir::OperationName name, unsigned index) { assert(index < 3 && "invalid attribute index"); assert(name.getStringRef() == getOperationName() && "invalid operation name"); assert(name.isRegistered() && "Operation isn't registered, missing a " "dependent dialect loading?"); return name.getAttributeNames()[index]; } public: }; } // namespace mlir::ROCDL MLIR_DECLARE_EXPLICIT_TYPE_ID(::mlir::ROCDL::mfma_f32_16x16x8_xf32) MLIR_DECLARE_EXPLICIT_TYPE_ID(::mlir::ROCDL::detail::mfma_f32_16x16x8_xf32GenericAdaptorBase::Properties) namespace mlir::ROCDL { //===----------------------------------------------------------------------===// // ::mlir::ROCDL::mfma_f32_16x16x8bf16 declarations //===----------------------------------------------------------------------===// namespace detail { class mfma_f32_16x16x8bf16GenericAdaptorBase { public: struct Properties { using abidTy = ::mlir::IntegerAttr; abidTy abid; auto getAbid() const { auto &propStorage = this->abid; return ::llvm::cast<::mlir::IntegerAttr>(propStorage); } void setAbid(const ::mlir::IntegerAttr &propValue) { this->abid = propValue; } using blgpTy = ::mlir::ROCDL::MFMAPermBAttr; blgpTy blgp; auto getBlgp() const { auto &propStorage = this->blgp; return ::llvm::cast<::mlir::ROCDL::MFMAPermBAttr>(propStorage); } void setBlgp(const ::mlir::ROCDL::MFMAPermBAttr &propValue) { this->blgp = propValue; } using cbszTy = ::mlir::IntegerAttr; cbszTy cbsz; auto getCbsz() const { auto &propStorage = this->cbsz; return ::llvm::cast<::mlir::IntegerAttr>(propStorage); } void setCbsz(const ::mlir::IntegerAttr &propValue) { this->cbsz = propValue; } bool operator==(const Properties &rhs) const { return rhs.abid == this->abid && rhs.blgp == this->blgp && rhs.cbsz == this->cbsz && true; } bool operator!=(const Properties &rhs) const { return !(*this == rhs); } }; protected: ::mlir::DictionaryAttr odsAttrs; ::std::optional<::mlir::OperationName> odsOpName; Properties properties; ::mlir::RegionRange odsRegions; public: mfma_f32_16x16x8bf16GenericAdaptorBase(::mlir::DictionaryAttr attrs, const Properties &properties, ::mlir::RegionRange regions = {}) : odsAttrs(attrs), properties(properties), odsRegions(regions) { if (odsAttrs) odsOpName.emplace("rocdl.mfma.f32.16x16x8bf16", odsAttrs.getContext()); } mfma_f32_16x16x8bf16GenericAdaptorBase(mfma_f32_16x16x8bf16 op); std::pair getODSOperandIndexAndLength(unsigned index, unsigned odsOperandsSize) { return {index, 1}; } const Properties &getProperties() { return properties; } ::mlir::DictionaryAttr getAttributes() { return odsAttrs; } ::mlir::IntegerAttr getCbszAttr() { auto attr = ::llvm::cast<::mlir::IntegerAttr>(getProperties().cbsz); return attr; } uint32_t getCbsz(); ::mlir::IntegerAttr getAbidAttr() { auto attr = ::llvm::cast<::mlir::IntegerAttr>(getProperties().abid); return attr; } uint32_t getAbid(); ::mlir::ROCDL::MFMAPermBAttr getBlgpAttr() { auto attr = ::llvm::cast<::mlir::ROCDL::MFMAPermBAttr>(getProperties().blgp); return attr; } ::mlir::ROCDL::MFMAPermB getBlgp(); }; } // namespace detail template class mfma_f32_16x16x8bf16GenericAdaptor : public detail::mfma_f32_16x16x8bf16GenericAdaptorBase { using ValueT = ::llvm::detail::ValueOfRange; using Base = detail::mfma_f32_16x16x8bf16GenericAdaptorBase; static constexpr int odsIndex_a = 0; static constexpr int odsIndex_b = 1; static constexpr int odsIndex_c = 2; public: mfma_f32_16x16x8bf16GenericAdaptor(RangeT values, ::mlir::DictionaryAttr attrs, const Properties &properties, ::mlir::RegionRange regions = {}) : Base(attrs, properties, regions), odsOperands(values) {} mfma_f32_16x16x8bf16GenericAdaptor(RangeT values, ::mlir::DictionaryAttr attrs, ::mlir::PropertyRef properties, ::mlir::RegionRange regions = {}) : mfma_f32_16x16x8bf16GenericAdaptor(values, attrs, (properties ? *properties.as() : Properties{}), regions) {} mfma_f32_16x16x8bf16GenericAdaptor(RangeT values, ::mlir::DictionaryAttr attrs = nullptr) : mfma_f32_16x16x8bf16GenericAdaptor(values, attrs, Properties{}, {}) {} mfma_f32_16x16x8bf16GenericAdaptor(RangeT values, const mfma_f32_16x16x8bf16GenericAdaptorBase &base) : Base(base), odsOperands(values) {} template >> mfma_f32_16x16x8bf16GenericAdaptor(RangeT values, LateInst op) : Base(op), odsOperands(values) {} std::pair getODSOperandIndexAndLength(unsigned index) { return Base::getODSOperandIndexAndLength(index, odsOperands.size()); } RangeT getODSOperands(unsigned index) { auto valueRange = getODSOperandIndexAndLength(index); return {std::next(odsOperands.begin(), valueRange.first), std::next(odsOperands.begin(), valueRange.first + valueRange.second)}; } ValueT getA() { return (*getODSOperands(0).begin()); } ValueT getB() { return (*getODSOperands(1).begin()); } ValueT getC() { return (*getODSOperands(2).begin()); } RangeT getOperands() { return odsOperands; } private: RangeT odsOperands; }; class mfma_f32_16x16x8bf16Adaptor : public mfma_f32_16x16x8bf16GenericAdaptor<::mlir::ValueRange> { public: using mfma_f32_16x16x8bf16GenericAdaptor::mfma_f32_16x16x8bf16GenericAdaptor; mfma_f32_16x16x8bf16Adaptor(mfma_f32_16x16x8bf16 op); ::llvm::LogicalResult verify(::mlir::Location loc); }; class mfma_f32_16x16x8bf16 : public ::mlir::Op::Impl, ::mlir::OpTrait::ZeroSuccessors, ::mlir::OpTrait::NOperands<3>::Impl, ::mlir::OpTrait::OpInvariants, ::mlir::BytecodeOpInterface::Trait> { public: using Op::Op; using Op::print; using Adaptor = mfma_f32_16x16x8bf16Adaptor; template using GenericAdaptor = mfma_f32_16x16x8bf16GenericAdaptor; using FoldAdaptor = GenericAdaptor<::llvm::ArrayRef<::mlir::Attribute>>; static constexpr int odsIndex_a = 0; static constexpr int odsIndex_b = 1; static constexpr int odsIndex_c = 2; using Properties = FoldAdaptor::Properties; static ::llvm::ArrayRef<::llvm::StringRef> getAttributeNames() { static ::llvm::StringRef attrNames[] = {::llvm::StringRef("abid"), ::llvm::StringRef("blgp"), ::llvm::StringRef("cbsz")}; return ::llvm::ArrayRef(attrNames); } ::mlir::StringAttr getAbidAttrName() { return getAttributeNameForIndex(0); } static ::mlir::StringAttr getAbidAttrName(::mlir::OperationName name) { return getAttributeNameForIndex(name, 0); } ::mlir::StringAttr getBlgpAttrName() { return getAttributeNameForIndex(1); } static ::mlir::StringAttr getBlgpAttrName(::mlir::OperationName name) { return getAttributeNameForIndex(name, 1); } ::mlir::StringAttr getCbszAttrName() { return getAttributeNameForIndex(2); } static ::mlir::StringAttr getCbszAttrName(::mlir::OperationName name) { return getAttributeNameForIndex(name, 2); } static constexpr ::llvm::StringLiteral getOperationName() { return ::llvm::StringLiteral("rocdl.mfma.f32.16x16x8bf16"); } std::pair getODSOperandIndexAndLength(unsigned index) { return {index, 1}; } ::mlir::Operation::operand_range getODSOperands(unsigned index) { auto valueRange = getODSOperandIndexAndLength(index); return {std::next(getOperation()->operand_begin(), valueRange.first), std::next(getOperation()->operand_begin(), valueRange.first + valueRange.second)}; } ::mlir::TypedValue<::mlir::VectorType> getA() { return ::llvm::cast<::mlir::TypedValue<::mlir::VectorType>>(*getODSOperands(0).begin()); } ::mlir::TypedValue<::mlir::VectorType> getB() { return ::llvm::cast<::mlir::TypedValue<::mlir::VectorType>>(*getODSOperands(1).begin()); } ::mlir::TypedValue<::mlir::VectorType> getC() { return ::llvm::cast<::mlir::TypedValue<::mlir::VectorType>>(*getODSOperands(2).begin()); } ::mlir::OpOperand &getAMutable() { auto range = getODSOperandIndexAndLength(0); return getOperation()->getOpOperand(range.first); } ::mlir::OpOperand &getBMutable() { auto range = getODSOperandIndexAndLength(1); return getOperation()->getOpOperand(range.first); } ::mlir::OpOperand &getCMutable() { auto range = getODSOperandIndexAndLength(2); return getOperation()->getOpOperand(range.first); } std::pair getODSResultIndexAndLength(unsigned index) { return {index, 1}; } ::mlir::Operation::result_range getODSResults(unsigned index) { auto valueRange = getODSResultIndexAndLength(index); return {std::next(getOperation()->result_begin(), valueRange.first), std::next(getOperation()->result_begin(), valueRange.first + valueRange.second)}; } ::mlir::TypedValue<::mlir::VectorType> getRes() { return ::llvm::cast<::mlir::TypedValue<::mlir::VectorType>>(*getODSResults(0).begin()); } static ::llvm::LogicalResult setPropertiesFromAttr(Properties &prop, ::mlir::Attribute attr, ::llvm::function_ref<::mlir::InFlightDiagnostic()> emitError); static ::mlir::Attribute getPropertiesAsAttr(::mlir::MLIRContext *ctx, const Properties &prop); static llvm::hash_code computePropertiesHash(const Properties &prop); static std::optional getInherentAttr(::mlir::MLIRContext *ctx, const Properties &prop, llvm::StringRef name); static void setInherentAttr(Properties &prop, llvm::StringRef name, mlir::Attribute value); static void populateInherentAttrs(::mlir::MLIRContext *ctx, const Properties &prop, ::mlir::NamedAttrList &attrs); static ::llvm::LogicalResult verifyInherentAttrs(::mlir::OperationName opName, ::mlir::NamedAttrList &attrs, llvm::function_ref<::mlir::InFlightDiagnostic()> emitError); static ::llvm::LogicalResult readProperties(::mlir::DialectBytecodeReader &reader, ::mlir::OperationState &state); void writeProperties(::mlir::DialectBytecodeWriter &writer); ::mlir::IntegerAttr getCbszAttr() { return ::llvm::cast<::mlir::IntegerAttr>(getProperties().cbsz); } uint32_t getCbsz(); ::mlir::IntegerAttr getAbidAttr() { return ::llvm::cast<::mlir::IntegerAttr>(getProperties().abid); } uint32_t getAbid(); ::mlir::ROCDL::MFMAPermBAttr getBlgpAttr() { return ::llvm::cast<::mlir::ROCDL::MFMAPermBAttr>(getProperties().blgp); } ::mlir::ROCDL::MFMAPermB getBlgp(); void setCbszAttr(::mlir::IntegerAttr attr) { getProperties().cbsz = attr; } void setCbsz(uint32_t attrValue); void setAbidAttr(::mlir::IntegerAttr attr) { getProperties().abid = attr; } void setAbid(uint32_t attrValue); void setBlgpAttr(::mlir::ROCDL::MFMAPermBAttr attr) { getProperties().blgp = attr; } void setBlgp(::mlir::ROCDL::MFMAPermB attrValue); static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::Type res, ::mlir::Value a, ::mlir::Value b, ::mlir::Value c, ::mlir::IntegerAttr cbsz, ::mlir::IntegerAttr abid, ::mlir::ROCDL::MFMAPermBAttr blgp); static mfma_f32_16x16x8bf16 create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::Type res, ::mlir::Value a, ::mlir::Value b, ::mlir::Value c, ::mlir::IntegerAttr cbsz, ::mlir::IntegerAttr abid, ::mlir::ROCDL::MFMAPermBAttr blgp); static mfma_f32_16x16x8bf16 create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::Type res, ::mlir::Value a, ::mlir::Value b, ::mlir::Value c, ::mlir::IntegerAttr cbsz, ::mlir::IntegerAttr abid, ::mlir::ROCDL::MFMAPermBAttr blgp); static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::Value a, ::mlir::Value b, ::mlir::Value c, ::mlir::IntegerAttr cbsz, ::mlir::IntegerAttr abid, ::mlir::ROCDL::MFMAPermBAttr blgp); static mfma_f32_16x16x8bf16 create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::Value a, ::mlir::Value b, ::mlir::Value c, ::mlir::IntegerAttr cbsz, ::mlir::IntegerAttr abid, ::mlir::ROCDL::MFMAPermBAttr blgp); static mfma_f32_16x16x8bf16 create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::Value a, ::mlir::Value b, ::mlir::Value c, ::mlir::IntegerAttr cbsz, ::mlir::IntegerAttr abid, ::mlir::ROCDL::MFMAPermBAttr blgp); static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::Type res, ::mlir::Value a, ::mlir::Value b, ::mlir::Value c, uint32_t cbsz, uint32_t abid, ::mlir::ROCDL::MFMAPermB blgp); static mfma_f32_16x16x8bf16 create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::Type res, ::mlir::Value a, ::mlir::Value b, ::mlir::Value c, uint32_t cbsz, uint32_t abid, ::mlir::ROCDL::MFMAPermB blgp); static mfma_f32_16x16x8bf16 create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::Type res, ::mlir::Value a, ::mlir::Value b, ::mlir::Value c, uint32_t cbsz, uint32_t abid, ::mlir::ROCDL::MFMAPermB blgp); static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::Value a, ::mlir::Value b, ::mlir::Value c, uint32_t cbsz, uint32_t abid, ::mlir::ROCDL::MFMAPermB blgp); static mfma_f32_16x16x8bf16 create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::Value a, ::mlir::Value b, ::mlir::Value c, uint32_t cbsz, uint32_t abid, ::mlir::ROCDL::MFMAPermB blgp); static mfma_f32_16x16x8bf16 create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::Value a, ::mlir::Value b, ::mlir::Value c, uint32_t cbsz, uint32_t abid, ::mlir::ROCDL::MFMAPermB blgp); static void build(::mlir::OpBuilder &, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, ::llvm::ArrayRef<::mlir::NamedAttribute> attributes = {}); static mfma_f32_16x16x8bf16 create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, ::llvm::ArrayRef<::mlir::NamedAttribute> attributes = {}); static mfma_f32_16x16x8bf16 create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, ::llvm::ArrayRef<::mlir::NamedAttribute> attributes = {}); static void build(::mlir::OpBuilder &, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, const Properties &properties, ::llvm::ArrayRef<::mlir::NamedAttribute> discardableAttributes = {}); static mfma_f32_16x16x8bf16 create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, const Properties &properties, ::llvm::ArrayRef<::mlir::NamedAttribute> discardableAttributes = {}); static mfma_f32_16x16x8bf16 create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, const Properties &properties, ::llvm::ArrayRef<::mlir::NamedAttribute> discardableAttributes = {}); ::llvm::LogicalResult verifyInvariantsImpl(); ::llvm::LogicalResult verifyInvariants(); static ::mlir::ParseResult parse(::mlir::OpAsmParser &parser, ::mlir::OperationState &result); void print(::mlir::OpAsmPrinter &_odsPrinter); private: ::mlir::StringAttr getAttributeNameForIndex(unsigned index) { return getAttributeNameForIndex((*this)->getName(), index); } static ::mlir::StringAttr getAttributeNameForIndex(::mlir::OperationName name, unsigned index) { assert(index < 3 && "invalid attribute index"); assert(name.getStringRef() == getOperationName() && "invalid operation name"); assert(name.isRegistered() && "Operation isn't registered, missing a " "dependent dialect loading?"); return name.getAttributeNames()[index]; } public: }; } // namespace mlir::ROCDL MLIR_DECLARE_EXPLICIT_TYPE_ID(::mlir::ROCDL::mfma_f32_16x16x8bf16) MLIR_DECLARE_EXPLICIT_TYPE_ID(::mlir::ROCDL::detail::mfma_f32_16x16x8bf16GenericAdaptorBase::Properties) namespace mlir::ROCDL { //===----------------------------------------------------------------------===// // ::mlir::ROCDL::mfma_f32_32x32x16_bf16 declarations //===----------------------------------------------------------------------===// namespace detail { class mfma_f32_32x32x16_bf16GenericAdaptorBase { public: struct Properties { using abidTy = ::mlir::IntegerAttr; abidTy abid; auto getAbid() const { auto &propStorage = this->abid; return ::llvm::cast<::mlir::IntegerAttr>(propStorage); } void setAbid(const ::mlir::IntegerAttr &propValue) { this->abid = propValue; } using blgpTy = ::mlir::ROCDL::MFMAPermBAttr; blgpTy blgp; auto getBlgp() const { auto &propStorage = this->blgp; return ::llvm::cast<::mlir::ROCDL::MFMAPermBAttr>(propStorage); } void setBlgp(const ::mlir::ROCDL::MFMAPermBAttr &propValue) { this->blgp = propValue; } using cbszTy = ::mlir::IntegerAttr; cbszTy cbsz; auto getCbsz() const { auto &propStorage = this->cbsz; return ::llvm::cast<::mlir::IntegerAttr>(propStorage); } void setCbsz(const ::mlir::IntegerAttr &propValue) { this->cbsz = propValue; } bool operator==(const Properties &rhs) const { return rhs.abid == this->abid && rhs.blgp == this->blgp && rhs.cbsz == this->cbsz && true; } bool operator!=(const Properties &rhs) const { return !(*this == rhs); } }; protected: ::mlir::DictionaryAttr odsAttrs; ::std::optional<::mlir::OperationName> odsOpName; Properties properties; ::mlir::RegionRange odsRegions; public: mfma_f32_32x32x16_bf16GenericAdaptorBase(::mlir::DictionaryAttr attrs, const Properties &properties, ::mlir::RegionRange regions = {}) : odsAttrs(attrs), properties(properties), odsRegions(regions) { if (odsAttrs) odsOpName.emplace("rocdl.mfma.f32.32x32x16.bf16", odsAttrs.getContext()); } mfma_f32_32x32x16_bf16GenericAdaptorBase(mfma_f32_32x32x16_bf16 op); std::pair getODSOperandIndexAndLength(unsigned index, unsigned odsOperandsSize) { return {index, 1}; } const Properties &getProperties() { return properties; } ::mlir::DictionaryAttr getAttributes() { return odsAttrs; } ::mlir::IntegerAttr getCbszAttr() { auto attr = ::llvm::cast<::mlir::IntegerAttr>(getProperties().cbsz); return attr; } uint32_t getCbsz(); ::mlir::IntegerAttr getAbidAttr() { auto attr = ::llvm::cast<::mlir::IntegerAttr>(getProperties().abid); return attr; } uint32_t getAbid(); ::mlir::ROCDL::MFMAPermBAttr getBlgpAttr() { auto attr = ::llvm::cast<::mlir::ROCDL::MFMAPermBAttr>(getProperties().blgp); return attr; } ::mlir::ROCDL::MFMAPermB getBlgp(); }; } // namespace detail template class mfma_f32_32x32x16_bf16GenericAdaptor : public detail::mfma_f32_32x32x16_bf16GenericAdaptorBase { using ValueT = ::llvm::detail::ValueOfRange; using Base = detail::mfma_f32_32x32x16_bf16GenericAdaptorBase; static constexpr int odsIndex_a = 0; static constexpr int odsIndex_b = 1; static constexpr int odsIndex_c = 2; public: mfma_f32_32x32x16_bf16GenericAdaptor(RangeT values, ::mlir::DictionaryAttr attrs, const Properties &properties, ::mlir::RegionRange regions = {}) : Base(attrs, properties, regions), odsOperands(values) {} mfma_f32_32x32x16_bf16GenericAdaptor(RangeT values, ::mlir::DictionaryAttr attrs, ::mlir::PropertyRef properties, ::mlir::RegionRange regions = {}) : mfma_f32_32x32x16_bf16GenericAdaptor(values, attrs, (properties ? *properties.as() : Properties{}), regions) {} mfma_f32_32x32x16_bf16GenericAdaptor(RangeT values, ::mlir::DictionaryAttr attrs = nullptr) : mfma_f32_32x32x16_bf16GenericAdaptor(values, attrs, Properties{}, {}) {} mfma_f32_32x32x16_bf16GenericAdaptor(RangeT values, const mfma_f32_32x32x16_bf16GenericAdaptorBase &base) : Base(base), odsOperands(values) {} template >> mfma_f32_32x32x16_bf16GenericAdaptor(RangeT values, LateInst op) : Base(op), odsOperands(values) {} std::pair getODSOperandIndexAndLength(unsigned index) { return Base::getODSOperandIndexAndLength(index, odsOperands.size()); } RangeT getODSOperands(unsigned index) { auto valueRange = getODSOperandIndexAndLength(index); return {std::next(odsOperands.begin(), valueRange.first), std::next(odsOperands.begin(), valueRange.first + valueRange.second)}; } ValueT getA() { return (*getODSOperands(0).begin()); } ValueT getB() { return (*getODSOperands(1).begin()); } ValueT getC() { return (*getODSOperands(2).begin()); } RangeT getOperands() { return odsOperands; } private: RangeT odsOperands; }; class mfma_f32_32x32x16_bf16Adaptor : public mfma_f32_32x32x16_bf16GenericAdaptor<::mlir::ValueRange> { public: using mfma_f32_32x32x16_bf16GenericAdaptor::mfma_f32_32x32x16_bf16GenericAdaptor; mfma_f32_32x32x16_bf16Adaptor(mfma_f32_32x32x16_bf16 op); ::llvm::LogicalResult verify(::mlir::Location loc); }; class mfma_f32_32x32x16_bf16 : public ::mlir::Op::Impl, ::mlir::OpTrait::ZeroSuccessors, ::mlir::OpTrait::NOperands<3>::Impl, ::mlir::OpTrait::OpInvariants, ::mlir::BytecodeOpInterface::Trait> { public: using Op::Op; using Op::print; using Adaptor = mfma_f32_32x32x16_bf16Adaptor; template using GenericAdaptor = mfma_f32_32x32x16_bf16GenericAdaptor; using FoldAdaptor = GenericAdaptor<::llvm::ArrayRef<::mlir::Attribute>>; static constexpr int odsIndex_a = 0; static constexpr int odsIndex_b = 1; static constexpr int odsIndex_c = 2; using Properties = FoldAdaptor::Properties; static ::llvm::ArrayRef<::llvm::StringRef> getAttributeNames() { static ::llvm::StringRef attrNames[] = {::llvm::StringRef("abid"), ::llvm::StringRef("blgp"), ::llvm::StringRef("cbsz")}; return ::llvm::ArrayRef(attrNames); } ::mlir::StringAttr getAbidAttrName() { return getAttributeNameForIndex(0); } static ::mlir::StringAttr getAbidAttrName(::mlir::OperationName name) { return getAttributeNameForIndex(name, 0); } ::mlir::StringAttr getBlgpAttrName() { return getAttributeNameForIndex(1); } static ::mlir::StringAttr getBlgpAttrName(::mlir::OperationName name) { return getAttributeNameForIndex(name, 1); } ::mlir::StringAttr getCbszAttrName() { return getAttributeNameForIndex(2); } static ::mlir::StringAttr getCbszAttrName(::mlir::OperationName name) { return getAttributeNameForIndex(name, 2); } static constexpr ::llvm::StringLiteral getOperationName() { return ::llvm::StringLiteral("rocdl.mfma.f32.32x32x16.bf16"); } std::pair getODSOperandIndexAndLength(unsigned index) { return {index, 1}; } ::mlir::Operation::operand_range getODSOperands(unsigned index) { auto valueRange = getODSOperandIndexAndLength(index); return {std::next(getOperation()->operand_begin(), valueRange.first), std::next(getOperation()->operand_begin(), valueRange.first + valueRange.second)}; } ::mlir::TypedValue<::mlir::VectorType> getA() { return ::llvm::cast<::mlir::TypedValue<::mlir::VectorType>>(*getODSOperands(0).begin()); } ::mlir::TypedValue<::mlir::VectorType> getB() { return ::llvm::cast<::mlir::TypedValue<::mlir::VectorType>>(*getODSOperands(1).begin()); } ::mlir::TypedValue<::mlir::VectorType> getC() { return ::llvm::cast<::mlir::TypedValue<::mlir::VectorType>>(*getODSOperands(2).begin()); } ::mlir::OpOperand &getAMutable() { auto range = getODSOperandIndexAndLength(0); return getOperation()->getOpOperand(range.first); } ::mlir::OpOperand &getBMutable() { auto range = getODSOperandIndexAndLength(1); return getOperation()->getOpOperand(range.first); } ::mlir::OpOperand &getCMutable() { auto range = getODSOperandIndexAndLength(2); return getOperation()->getOpOperand(range.first); } std::pair getODSResultIndexAndLength(unsigned index) { return {index, 1}; } ::mlir::Operation::result_range getODSResults(unsigned index) { auto valueRange = getODSResultIndexAndLength(index); return {std::next(getOperation()->result_begin(), valueRange.first), std::next(getOperation()->result_begin(), valueRange.first + valueRange.second)}; } ::mlir::TypedValue<::mlir::VectorType> getRes() { return ::llvm::cast<::mlir::TypedValue<::mlir::VectorType>>(*getODSResults(0).begin()); } static ::llvm::LogicalResult setPropertiesFromAttr(Properties &prop, ::mlir::Attribute attr, ::llvm::function_ref<::mlir::InFlightDiagnostic()> emitError); static ::mlir::Attribute getPropertiesAsAttr(::mlir::MLIRContext *ctx, const Properties &prop); static llvm::hash_code computePropertiesHash(const Properties &prop); static std::optional getInherentAttr(::mlir::MLIRContext *ctx, const Properties &prop, llvm::StringRef name); static void setInherentAttr(Properties &prop, llvm::StringRef name, mlir::Attribute value); static void populateInherentAttrs(::mlir::MLIRContext *ctx, const Properties &prop, ::mlir::NamedAttrList &attrs); static ::llvm::LogicalResult verifyInherentAttrs(::mlir::OperationName opName, ::mlir::NamedAttrList &attrs, llvm::function_ref<::mlir::InFlightDiagnostic()> emitError); static ::llvm::LogicalResult readProperties(::mlir::DialectBytecodeReader &reader, ::mlir::OperationState &state); void writeProperties(::mlir::DialectBytecodeWriter &writer); ::mlir::IntegerAttr getCbszAttr() { return ::llvm::cast<::mlir::IntegerAttr>(getProperties().cbsz); } uint32_t getCbsz(); ::mlir::IntegerAttr getAbidAttr() { return ::llvm::cast<::mlir::IntegerAttr>(getProperties().abid); } uint32_t getAbid(); ::mlir::ROCDL::MFMAPermBAttr getBlgpAttr() { return ::llvm::cast<::mlir::ROCDL::MFMAPermBAttr>(getProperties().blgp); } ::mlir::ROCDL::MFMAPermB getBlgp(); void setCbszAttr(::mlir::IntegerAttr attr) { getProperties().cbsz = attr; } void setCbsz(uint32_t attrValue); void setAbidAttr(::mlir::IntegerAttr attr) { getProperties().abid = attr; } void setAbid(uint32_t attrValue); void setBlgpAttr(::mlir::ROCDL::MFMAPermBAttr attr) { getProperties().blgp = attr; } void setBlgp(::mlir::ROCDL::MFMAPermB attrValue); static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::Type res, ::mlir::Value a, ::mlir::Value b, ::mlir::Value c, ::mlir::IntegerAttr cbsz, ::mlir::IntegerAttr abid, ::mlir::ROCDL::MFMAPermBAttr blgp); static mfma_f32_32x32x16_bf16 create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::Type res, ::mlir::Value a, ::mlir::Value b, ::mlir::Value c, ::mlir::IntegerAttr cbsz, ::mlir::IntegerAttr abid, ::mlir::ROCDL::MFMAPermBAttr blgp); static mfma_f32_32x32x16_bf16 create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::Type res, ::mlir::Value a, ::mlir::Value b, ::mlir::Value c, ::mlir::IntegerAttr cbsz, ::mlir::IntegerAttr abid, ::mlir::ROCDL::MFMAPermBAttr blgp); static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::Value a, ::mlir::Value b, ::mlir::Value c, ::mlir::IntegerAttr cbsz, ::mlir::IntegerAttr abid, ::mlir::ROCDL::MFMAPermBAttr blgp); static mfma_f32_32x32x16_bf16 create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::Value a, ::mlir::Value b, ::mlir::Value c, ::mlir::IntegerAttr cbsz, ::mlir::IntegerAttr abid, ::mlir::ROCDL::MFMAPermBAttr blgp); static mfma_f32_32x32x16_bf16 create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::Value a, ::mlir::Value b, ::mlir::Value c, ::mlir::IntegerAttr cbsz, ::mlir::IntegerAttr abid, ::mlir::ROCDL::MFMAPermBAttr blgp); static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::Type res, ::mlir::Value a, ::mlir::Value b, ::mlir::Value c, uint32_t cbsz, uint32_t abid, ::mlir::ROCDL::MFMAPermB blgp); static mfma_f32_32x32x16_bf16 create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::Type res, ::mlir::Value a, ::mlir::Value b, ::mlir::Value c, uint32_t cbsz, uint32_t abid, ::mlir::ROCDL::MFMAPermB blgp); static mfma_f32_32x32x16_bf16 create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::Type res, ::mlir::Value a, ::mlir::Value b, ::mlir::Value c, uint32_t cbsz, uint32_t abid, ::mlir::ROCDL::MFMAPermB blgp); static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::Value a, ::mlir::Value b, ::mlir::Value c, uint32_t cbsz, uint32_t abid, ::mlir::ROCDL::MFMAPermB blgp); static mfma_f32_32x32x16_bf16 create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::Value a, ::mlir::Value b, ::mlir::Value c, uint32_t cbsz, uint32_t abid, ::mlir::ROCDL::MFMAPermB blgp); static mfma_f32_32x32x16_bf16 create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::Value a, ::mlir::Value b, ::mlir::Value c, uint32_t cbsz, uint32_t abid, ::mlir::ROCDL::MFMAPermB blgp); static void build(::mlir::OpBuilder &, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, ::llvm::ArrayRef<::mlir::NamedAttribute> attributes = {}); static mfma_f32_32x32x16_bf16 create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, ::llvm::ArrayRef<::mlir::NamedAttribute> attributes = {}); static mfma_f32_32x32x16_bf16 create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, ::llvm::ArrayRef<::mlir::NamedAttribute> attributes = {}); static void build(::mlir::OpBuilder &, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, const Properties &properties, ::llvm::ArrayRef<::mlir::NamedAttribute> discardableAttributes = {}); static mfma_f32_32x32x16_bf16 create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, const Properties &properties, ::llvm::ArrayRef<::mlir::NamedAttribute> discardableAttributes = {}); static mfma_f32_32x32x16_bf16 create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, const Properties &properties, ::llvm::ArrayRef<::mlir::NamedAttribute> discardableAttributes = {}); ::llvm::LogicalResult verifyInvariantsImpl(); ::llvm::LogicalResult verifyInvariants(); static ::mlir::ParseResult parse(::mlir::OpAsmParser &parser, ::mlir::OperationState &result); void print(::mlir::OpAsmPrinter &_odsPrinter); private: ::mlir::StringAttr getAttributeNameForIndex(unsigned index) { return getAttributeNameForIndex((*this)->getName(), index); } static ::mlir::StringAttr getAttributeNameForIndex(::mlir::OperationName name, unsigned index) { assert(index < 3 && "invalid attribute index"); assert(name.getStringRef() == getOperationName() && "invalid operation name"); assert(name.isRegistered() && "Operation isn't registered, missing a " "dependent dialect loading?"); return name.getAttributeNames()[index]; } public: }; } // namespace mlir::ROCDL MLIR_DECLARE_EXPLICIT_TYPE_ID(::mlir::ROCDL::mfma_f32_32x32x16_bf16) MLIR_DECLARE_EXPLICIT_TYPE_ID(::mlir::ROCDL::detail::mfma_f32_32x32x16_bf16GenericAdaptorBase::Properties) namespace mlir::ROCDL { //===----------------------------------------------------------------------===// // ::mlir::ROCDL::mfma_f32_32x32x16_bf8_bf8 declarations //===----------------------------------------------------------------------===// namespace detail { class mfma_f32_32x32x16_bf8_bf8GenericAdaptorBase { public: struct Properties { using abidTy = ::mlir::IntegerAttr; abidTy abid; auto getAbid() const { auto &propStorage = this->abid; return ::llvm::cast<::mlir::IntegerAttr>(propStorage); } void setAbid(const ::mlir::IntegerAttr &propValue) { this->abid = propValue; } using blgpTy = ::mlir::ROCDL::MFMAPermBAttr; blgpTy blgp; auto getBlgp() const { auto &propStorage = this->blgp; return ::llvm::cast<::mlir::ROCDL::MFMAPermBAttr>(propStorage); } void setBlgp(const ::mlir::ROCDL::MFMAPermBAttr &propValue) { this->blgp = propValue; } using cbszTy = ::mlir::IntegerAttr; cbszTy cbsz; auto getCbsz() const { auto &propStorage = this->cbsz; return ::llvm::cast<::mlir::IntegerAttr>(propStorage); } void setCbsz(const ::mlir::IntegerAttr &propValue) { this->cbsz = propValue; } bool operator==(const Properties &rhs) const { return rhs.abid == this->abid && rhs.blgp == this->blgp && rhs.cbsz == this->cbsz && true; } bool operator!=(const Properties &rhs) const { return !(*this == rhs); } }; protected: ::mlir::DictionaryAttr odsAttrs; ::std::optional<::mlir::OperationName> odsOpName; Properties properties; ::mlir::RegionRange odsRegions; public: mfma_f32_32x32x16_bf8_bf8GenericAdaptorBase(::mlir::DictionaryAttr attrs, const Properties &properties, ::mlir::RegionRange regions = {}) : odsAttrs(attrs), properties(properties), odsRegions(regions) { if (odsAttrs) odsOpName.emplace("rocdl.mfma.f32.32x32x16.bf8.bf8", odsAttrs.getContext()); } mfma_f32_32x32x16_bf8_bf8GenericAdaptorBase(mfma_f32_32x32x16_bf8_bf8 op); std::pair getODSOperandIndexAndLength(unsigned index, unsigned odsOperandsSize) { return {index, 1}; } const Properties &getProperties() { return properties; } ::mlir::DictionaryAttr getAttributes() { return odsAttrs; } ::mlir::IntegerAttr getCbszAttr() { auto attr = ::llvm::cast<::mlir::IntegerAttr>(getProperties().cbsz); return attr; } uint32_t getCbsz(); ::mlir::IntegerAttr getAbidAttr() { auto attr = ::llvm::cast<::mlir::IntegerAttr>(getProperties().abid); return attr; } uint32_t getAbid(); ::mlir::ROCDL::MFMAPermBAttr getBlgpAttr() { auto attr = ::llvm::cast<::mlir::ROCDL::MFMAPermBAttr>(getProperties().blgp); return attr; } ::mlir::ROCDL::MFMAPermB getBlgp(); }; } // namespace detail template class mfma_f32_32x32x16_bf8_bf8GenericAdaptor : public detail::mfma_f32_32x32x16_bf8_bf8GenericAdaptorBase { using ValueT = ::llvm::detail::ValueOfRange; using Base = detail::mfma_f32_32x32x16_bf8_bf8GenericAdaptorBase; static constexpr int odsIndex_a = 0; static constexpr int odsIndex_b = 1; static constexpr int odsIndex_c = 2; public: mfma_f32_32x32x16_bf8_bf8GenericAdaptor(RangeT values, ::mlir::DictionaryAttr attrs, const Properties &properties, ::mlir::RegionRange regions = {}) : Base(attrs, properties, regions), odsOperands(values) {} mfma_f32_32x32x16_bf8_bf8GenericAdaptor(RangeT values, ::mlir::DictionaryAttr attrs, ::mlir::PropertyRef properties, ::mlir::RegionRange regions = {}) : mfma_f32_32x32x16_bf8_bf8GenericAdaptor(values, attrs, (properties ? *properties.as() : Properties{}), regions) {} mfma_f32_32x32x16_bf8_bf8GenericAdaptor(RangeT values, ::mlir::DictionaryAttr attrs = nullptr) : mfma_f32_32x32x16_bf8_bf8GenericAdaptor(values, attrs, Properties{}, {}) {} mfma_f32_32x32x16_bf8_bf8GenericAdaptor(RangeT values, const mfma_f32_32x32x16_bf8_bf8GenericAdaptorBase &base) : Base(base), odsOperands(values) {} template >> mfma_f32_32x32x16_bf8_bf8GenericAdaptor(RangeT values, LateInst op) : Base(op), odsOperands(values) {} std::pair getODSOperandIndexAndLength(unsigned index) { return Base::getODSOperandIndexAndLength(index, odsOperands.size()); } RangeT getODSOperands(unsigned index) { auto valueRange = getODSOperandIndexAndLength(index); return {std::next(odsOperands.begin(), valueRange.first), std::next(odsOperands.begin(), valueRange.first + valueRange.second)}; } ValueT getA() { return (*getODSOperands(0).begin()); } ValueT getB() { return (*getODSOperands(1).begin()); } ValueT getC() { return (*getODSOperands(2).begin()); } RangeT getOperands() { return odsOperands; } private: RangeT odsOperands; }; class mfma_f32_32x32x16_bf8_bf8Adaptor : public mfma_f32_32x32x16_bf8_bf8GenericAdaptor<::mlir::ValueRange> { public: using mfma_f32_32x32x16_bf8_bf8GenericAdaptor::mfma_f32_32x32x16_bf8_bf8GenericAdaptor; mfma_f32_32x32x16_bf8_bf8Adaptor(mfma_f32_32x32x16_bf8_bf8 op); ::llvm::LogicalResult verify(::mlir::Location loc); }; class mfma_f32_32x32x16_bf8_bf8 : public ::mlir::Op::Impl, ::mlir::OpTrait::ZeroSuccessors, ::mlir::OpTrait::NOperands<3>::Impl, ::mlir::OpTrait::OpInvariants, ::mlir::BytecodeOpInterface::Trait> { public: using Op::Op; using Op::print; using Adaptor = mfma_f32_32x32x16_bf8_bf8Adaptor; template using GenericAdaptor = mfma_f32_32x32x16_bf8_bf8GenericAdaptor; using FoldAdaptor = GenericAdaptor<::llvm::ArrayRef<::mlir::Attribute>>; static constexpr int odsIndex_a = 0; static constexpr int odsIndex_b = 1; static constexpr int odsIndex_c = 2; using Properties = FoldAdaptor::Properties; static ::llvm::ArrayRef<::llvm::StringRef> getAttributeNames() { static ::llvm::StringRef attrNames[] = {::llvm::StringRef("abid"), ::llvm::StringRef("blgp"), ::llvm::StringRef("cbsz")}; return ::llvm::ArrayRef(attrNames); } ::mlir::StringAttr getAbidAttrName() { return getAttributeNameForIndex(0); } static ::mlir::StringAttr getAbidAttrName(::mlir::OperationName name) { return getAttributeNameForIndex(name, 0); } ::mlir::StringAttr getBlgpAttrName() { return getAttributeNameForIndex(1); } static ::mlir::StringAttr getBlgpAttrName(::mlir::OperationName name) { return getAttributeNameForIndex(name, 1); } ::mlir::StringAttr getCbszAttrName() { return getAttributeNameForIndex(2); } static ::mlir::StringAttr getCbszAttrName(::mlir::OperationName name) { return getAttributeNameForIndex(name, 2); } static constexpr ::llvm::StringLiteral getOperationName() { return ::llvm::StringLiteral("rocdl.mfma.f32.32x32x16.bf8.bf8"); } std::pair getODSOperandIndexAndLength(unsigned index) { return {index, 1}; } ::mlir::Operation::operand_range getODSOperands(unsigned index) { auto valueRange = getODSOperandIndexAndLength(index); return {std::next(getOperation()->operand_begin(), valueRange.first), std::next(getOperation()->operand_begin(), valueRange.first + valueRange.second)}; } ::mlir::TypedValue<::mlir::Type> getA() { return ::llvm::cast<::mlir::TypedValue<::mlir::Type>>(*getODSOperands(0).begin()); } ::mlir::TypedValue<::mlir::Type> getB() { return ::llvm::cast<::mlir::TypedValue<::mlir::Type>>(*getODSOperands(1).begin()); } ::mlir::TypedValue<::mlir::VectorType> getC() { return ::llvm::cast<::mlir::TypedValue<::mlir::VectorType>>(*getODSOperands(2).begin()); } ::mlir::OpOperand &getAMutable() { auto range = getODSOperandIndexAndLength(0); return getOperation()->getOpOperand(range.first); } ::mlir::OpOperand &getBMutable() { auto range = getODSOperandIndexAndLength(1); return getOperation()->getOpOperand(range.first); } ::mlir::OpOperand &getCMutable() { auto range = getODSOperandIndexAndLength(2); return getOperation()->getOpOperand(range.first); } std::pair getODSResultIndexAndLength(unsigned index) { return {index, 1}; } ::mlir::Operation::result_range getODSResults(unsigned index) { auto valueRange = getODSResultIndexAndLength(index); return {std::next(getOperation()->result_begin(), valueRange.first), std::next(getOperation()->result_begin(), valueRange.first + valueRange.second)}; } ::mlir::TypedValue<::mlir::VectorType> getRes() { return ::llvm::cast<::mlir::TypedValue<::mlir::VectorType>>(*getODSResults(0).begin()); } static ::llvm::LogicalResult setPropertiesFromAttr(Properties &prop, ::mlir::Attribute attr, ::llvm::function_ref<::mlir::InFlightDiagnostic()> emitError); static ::mlir::Attribute getPropertiesAsAttr(::mlir::MLIRContext *ctx, const Properties &prop); static llvm::hash_code computePropertiesHash(const Properties &prop); static std::optional getInherentAttr(::mlir::MLIRContext *ctx, const Properties &prop, llvm::StringRef name); static void setInherentAttr(Properties &prop, llvm::StringRef name, mlir::Attribute value); static void populateInherentAttrs(::mlir::MLIRContext *ctx, const Properties &prop, ::mlir::NamedAttrList &attrs); static ::llvm::LogicalResult verifyInherentAttrs(::mlir::OperationName opName, ::mlir::NamedAttrList &attrs, llvm::function_ref<::mlir::InFlightDiagnostic()> emitError); static ::llvm::LogicalResult readProperties(::mlir::DialectBytecodeReader &reader, ::mlir::OperationState &state); void writeProperties(::mlir::DialectBytecodeWriter &writer); ::mlir::IntegerAttr getCbszAttr() { return ::llvm::cast<::mlir::IntegerAttr>(getProperties().cbsz); } uint32_t getCbsz(); ::mlir::IntegerAttr getAbidAttr() { return ::llvm::cast<::mlir::IntegerAttr>(getProperties().abid); } uint32_t getAbid(); ::mlir::ROCDL::MFMAPermBAttr getBlgpAttr() { return ::llvm::cast<::mlir::ROCDL::MFMAPermBAttr>(getProperties().blgp); } ::mlir::ROCDL::MFMAPermB getBlgp(); void setCbszAttr(::mlir::IntegerAttr attr) { getProperties().cbsz = attr; } void setCbsz(uint32_t attrValue); void setAbidAttr(::mlir::IntegerAttr attr) { getProperties().abid = attr; } void setAbid(uint32_t attrValue); void setBlgpAttr(::mlir::ROCDL::MFMAPermBAttr attr) { getProperties().blgp = attr; } void setBlgp(::mlir::ROCDL::MFMAPermB attrValue); static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::Type res, ::mlir::Value a, ::mlir::Value b, ::mlir::Value c, ::mlir::IntegerAttr cbsz, ::mlir::IntegerAttr abid, ::mlir::ROCDL::MFMAPermBAttr blgp); static mfma_f32_32x32x16_bf8_bf8 create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::Type res, ::mlir::Value a, ::mlir::Value b, ::mlir::Value c, ::mlir::IntegerAttr cbsz, ::mlir::IntegerAttr abid, ::mlir::ROCDL::MFMAPermBAttr blgp); static mfma_f32_32x32x16_bf8_bf8 create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::Type res, ::mlir::Value a, ::mlir::Value b, ::mlir::Value c, ::mlir::IntegerAttr cbsz, ::mlir::IntegerAttr abid, ::mlir::ROCDL::MFMAPermBAttr blgp); static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::Value a, ::mlir::Value b, ::mlir::Value c, ::mlir::IntegerAttr cbsz, ::mlir::IntegerAttr abid, ::mlir::ROCDL::MFMAPermBAttr blgp); static mfma_f32_32x32x16_bf8_bf8 create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::Value a, ::mlir::Value b, ::mlir::Value c, ::mlir::IntegerAttr cbsz, ::mlir::IntegerAttr abid, ::mlir::ROCDL::MFMAPermBAttr blgp); static mfma_f32_32x32x16_bf8_bf8 create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::Value a, ::mlir::Value b, ::mlir::Value c, ::mlir::IntegerAttr cbsz, ::mlir::IntegerAttr abid, ::mlir::ROCDL::MFMAPermBAttr blgp); static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::Type res, ::mlir::Value a, ::mlir::Value b, ::mlir::Value c, uint32_t cbsz, uint32_t abid, ::mlir::ROCDL::MFMAPermB blgp); static mfma_f32_32x32x16_bf8_bf8 create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::Type res, ::mlir::Value a, ::mlir::Value b, ::mlir::Value c, uint32_t cbsz, uint32_t abid, ::mlir::ROCDL::MFMAPermB blgp); static mfma_f32_32x32x16_bf8_bf8 create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::Type res, ::mlir::Value a, ::mlir::Value b, ::mlir::Value c, uint32_t cbsz, uint32_t abid, ::mlir::ROCDL::MFMAPermB blgp); static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::Value a, ::mlir::Value b, ::mlir::Value c, uint32_t cbsz, uint32_t abid, ::mlir::ROCDL::MFMAPermB blgp); static mfma_f32_32x32x16_bf8_bf8 create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::Value a, ::mlir::Value b, ::mlir::Value c, uint32_t cbsz, uint32_t abid, ::mlir::ROCDL::MFMAPermB blgp); static mfma_f32_32x32x16_bf8_bf8 create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::Value a, ::mlir::Value b, ::mlir::Value c, uint32_t cbsz, uint32_t abid, ::mlir::ROCDL::MFMAPermB blgp); static void build(::mlir::OpBuilder &, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, ::llvm::ArrayRef<::mlir::NamedAttribute> attributes = {}); static mfma_f32_32x32x16_bf8_bf8 create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, ::llvm::ArrayRef<::mlir::NamedAttribute> attributes = {}); static mfma_f32_32x32x16_bf8_bf8 create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, ::llvm::ArrayRef<::mlir::NamedAttribute> attributes = {}); static void build(::mlir::OpBuilder &, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, const Properties &properties, ::llvm::ArrayRef<::mlir::NamedAttribute> discardableAttributes = {}); static mfma_f32_32x32x16_bf8_bf8 create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, const Properties &properties, ::llvm::ArrayRef<::mlir::NamedAttribute> discardableAttributes = {}); static mfma_f32_32x32x16_bf8_bf8 create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, const Properties &properties, ::llvm::ArrayRef<::mlir::NamedAttribute> discardableAttributes = {}); ::llvm::LogicalResult verifyInvariantsImpl(); ::llvm::LogicalResult verifyInvariants(); static ::mlir::ParseResult parse(::mlir::OpAsmParser &parser, ::mlir::OperationState &result); void print(::mlir::OpAsmPrinter &_odsPrinter); private: ::mlir::StringAttr getAttributeNameForIndex(unsigned index) { return getAttributeNameForIndex((*this)->getName(), index); } static ::mlir::StringAttr getAttributeNameForIndex(::mlir::OperationName name, unsigned index) { assert(index < 3 && "invalid attribute index"); assert(name.getStringRef() == getOperationName() && "invalid operation name"); assert(name.isRegistered() && "Operation isn't registered, missing a " "dependent dialect loading?"); return name.getAttributeNames()[index]; } public: }; } // namespace mlir::ROCDL MLIR_DECLARE_EXPLICIT_TYPE_ID(::mlir::ROCDL::mfma_f32_32x32x16_bf8_bf8) MLIR_DECLARE_EXPLICIT_TYPE_ID(::mlir::ROCDL::detail::mfma_f32_32x32x16_bf8_bf8GenericAdaptorBase::Properties) namespace mlir::ROCDL { //===----------------------------------------------------------------------===// // ::mlir::ROCDL::mfma_f32_32x32x16_bf8_fp8 declarations //===----------------------------------------------------------------------===// namespace detail { class mfma_f32_32x32x16_bf8_fp8GenericAdaptorBase { public: struct Properties { using abidTy = ::mlir::IntegerAttr; abidTy abid; auto getAbid() const { auto &propStorage = this->abid; return ::llvm::cast<::mlir::IntegerAttr>(propStorage); } void setAbid(const ::mlir::IntegerAttr &propValue) { this->abid = propValue; } using blgpTy = ::mlir::ROCDL::MFMAPermBAttr; blgpTy blgp; auto getBlgp() const { auto &propStorage = this->blgp; return ::llvm::cast<::mlir::ROCDL::MFMAPermBAttr>(propStorage); } void setBlgp(const ::mlir::ROCDL::MFMAPermBAttr &propValue) { this->blgp = propValue; } using cbszTy = ::mlir::IntegerAttr; cbszTy cbsz; auto getCbsz() const { auto &propStorage = this->cbsz; return ::llvm::cast<::mlir::IntegerAttr>(propStorage); } void setCbsz(const ::mlir::IntegerAttr &propValue) { this->cbsz = propValue; } bool operator==(const Properties &rhs) const { return rhs.abid == this->abid && rhs.blgp == this->blgp && rhs.cbsz == this->cbsz && true; } bool operator!=(const Properties &rhs) const { return !(*this == rhs); } }; protected: ::mlir::DictionaryAttr odsAttrs; ::std::optional<::mlir::OperationName> odsOpName; Properties properties; ::mlir::RegionRange odsRegions; public: mfma_f32_32x32x16_bf8_fp8GenericAdaptorBase(::mlir::DictionaryAttr attrs, const Properties &properties, ::mlir::RegionRange regions = {}) : odsAttrs(attrs), properties(properties), odsRegions(regions) { if (odsAttrs) odsOpName.emplace("rocdl.mfma.f32.32x32x16.bf8.fp8", odsAttrs.getContext()); } mfma_f32_32x32x16_bf8_fp8GenericAdaptorBase(mfma_f32_32x32x16_bf8_fp8 op); std::pair getODSOperandIndexAndLength(unsigned index, unsigned odsOperandsSize) { return {index, 1}; } const Properties &getProperties() { return properties; } ::mlir::DictionaryAttr getAttributes() { return odsAttrs; } ::mlir::IntegerAttr getCbszAttr() { auto attr = ::llvm::cast<::mlir::IntegerAttr>(getProperties().cbsz); return attr; } uint32_t getCbsz(); ::mlir::IntegerAttr getAbidAttr() { auto attr = ::llvm::cast<::mlir::IntegerAttr>(getProperties().abid); return attr; } uint32_t getAbid(); ::mlir::ROCDL::MFMAPermBAttr getBlgpAttr() { auto attr = ::llvm::cast<::mlir::ROCDL::MFMAPermBAttr>(getProperties().blgp); return attr; } ::mlir::ROCDL::MFMAPermB getBlgp(); }; } // namespace detail template class mfma_f32_32x32x16_bf8_fp8GenericAdaptor : public detail::mfma_f32_32x32x16_bf8_fp8GenericAdaptorBase { using ValueT = ::llvm::detail::ValueOfRange; using Base = detail::mfma_f32_32x32x16_bf8_fp8GenericAdaptorBase; static constexpr int odsIndex_a = 0; static constexpr int odsIndex_b = 1; static constexpr int odsIndex_c = 2; public: mfma_f32_32x32x16_bf8_fp8GenericAdaptor(RangeT values, ::mlir::DictionaryAttr attrs, const Properties &properties, ::mlir::RegionRange regions = {}) : Base(attrs, properties, regions), odsOperands(values) {} mfma_f32_32x32x16_bf8_fp8GenericAdaptor(RangeT values, ::mlir::DictionaryAttr attrs, ::mlir::PropertyRef properties, ::mlir::RegionRange regions = {}) : mfma_f32_32x32x16_bf8_fp8GenericAdaptor(values, attrs, (properties ? *properties.as() : Properties{}), regions) {} mfma_f32_32x32x16_bf8_fp8GenericAdaptor(RangeT values, ::mlir::DictionaryAttr attrs = nullptr) : mfma_f32_32x32x16_bf8_fp8GenericAdaptor(values, attrs, Properties{}, {}) {} mfma_f32_32x32x16_bf8_fp8GenericAdaptor(RangeT values, const mfma_f32_32x32x16_bf8_fp8GenericAdaptorBase &base) : Base(base), odsOperands(values) {} template >> mfma_f32_32x32x16_bf8_fp8GenericAdaptor(RangeT values, LateInst op) : Base(op), odsOperands(values) {} std::pair getODSOperandIndexAndLength(unsigned index) { return Base::getODSOperandIndexAndLength(index, odsOperands.size()); } RangeT getODSOperands(unsigned index) { auto valueRange = getODSOperandIndexAndLength(index); return {std::next(odsOperands.begin(), valueRange.first), std::next(odsOperands.begin(), valueRange.first + valueRange.second)}; } ValueT getA() { return (*getODSOperands(0).begin()); } ValueT getB() { return (*getODSOperands(1).begin()); } ValueT getC() { return (*getODSOperands(2).begin()); } RangeT getOperands() { return odsOperands; } private: RangeT odsOperands; }; class mfma_f32_32x32x16_bf8_fp8Adaptor : public mfma_f32_32x32x16_bf8_fp8GenericAdaptor<::mlir::ValueRange> { public: using mfma_f32_32x32x16_bf8_fp8GenericAdaptor::mfma_f32_32x32x16_bf8_fp8GenericAdaptor; mfma_f32_32x32x16_bf8_fp8Adaptor(mfma_f32_32x32x16_bf8_fp8 op); ::llvm::LogicalResult verify(::mlir::Location loc); }; class mfma_f32_32x32x16_bf8_fp8 : public ::mlir::Op::Impl, ::mlir::OpTrait::ZeroSuccessors, ::mlir::OpTrait::NOperands<3>::Impl, ::mlir::OpTrait::OpInvariants, ::mlir::BytecodeOpInterface::Trait> { public: using Op::Op; using Op::print; using Adaptor = mfma_f32_32x32x16_bf8_fp8Adaptor; template using GenericAdaptor = mfma_f32_32x32x16_bf8_fp8GenericAdaptor; using FoldAdaptor = GenericAdaptor<::llvm::ArrayRef<::mlir::Attribute>>; static constexpr int odsIndex_a = 0; static constexpr int odsIndex_b = 1; static constexpr int odsIndex_c = 2; using Properties = FoldAdaptor::Properties; static ::llvm::ArrayRef<::llvm::StringRef> getAttributeNames() { static ::llvm::StringRef attrNames[] = {::llvm::StringRef("abid"), ::llvm::StringRef("blgp"), ::llvm::StringRef("cbsz")}; return ::llvm::ArrayRef(attrNames); } ::mlir::StringAttr getAbidAttrName() { return getAttributeNameForIndex(0); } static ::mlir::StringAttr getAbidAttrName(::mlir::OperationName name) { return getAttributeNameForIndex(name, 0); } ::mlir::StringAttr getBlgpAttrName() { return getAttributeNameForIndex(1); } static ::mlir::StringAttr getBlgpAttrName(::mlir::OperationName name) { return getAttributeNameForIndex(name, 1); } ::mlir::StringAttr getCbszAttrName() { return getAttributeNameForIndex(2); } static ::mlir::StringAttr getCbszAttrName(::mlir::OperationName name) { return getAttributeNameForIndex(name, 2); } static constexpr ::llvm::StringLiteral getOperationName() { return ::llvm::StringLiteral("rocdl.mfma.f32.32x32x16.bf8.fp8"); } std::pair getODSOperandIndexAndLength(unsigned index) { return {index, 1}; } ::mlir::Operation::operand_range getODSOperands(unsigned index) { auto valueRange = getODSOperandIndexAndLength(index); return {std::next(getOperation()->operand_begin(), valueRange.first), std::next(getOperation()->operand_begin(), valueRange.first + valueRange.second)}; } ::mlir::TypedValue<::mlir::Type> getA() { return ::llvm::cast<::mlir::TypedValue<::mlir::Type>>(*getODSOperands(0).begin()); } ::mlir::TypedValue<::mlir::Type> getB() { return ::llvm::cast<::mlir::TypedValue<::mlir::Type>>(*getODSOperands(1).begin()); } ::mlir::TypedValue<::mlir::VectorType> getC() { return ::llvm::cast<::mlir::TypedValue<::mlir::VectorType>>(*getODSOperands(2).begin()); } ::mlir::OpOperand &getAMutable() { auto range = getODSOperandIndexAndLength(0); return getOperation()->getOpOperand(range.first); } ::mlir::OpOperand &getBMutable() { auto range = getODSOperandIndexAndLength(1); return getOperation()->getOpOperand(range.first); } ::mlir::OpOperand &getCMutable() { auto range = getODSOperandIndexAndLength(2); return getOperation()->getOpOperand(range.first); } std::pair getODSResultIndexAndLength(unsigned index) { return {index, 1}; } ::mlir::Operation::result_range getODSResults(unsigned index) { auto valueRange = getODSResultIndexAndLength(index); return {std::next(getOperation()->result_begin(), valueRange.first), std::next(getOperation()->result_begin(), valueRange.first + valueRange.second)}; } ::mlir::TypedValue<::mlir::VectorType> getRes() { return ::llvm::cast<::mlir::TypedValue<::mlir::VectorType>>(*getODSResults(0).begin()); } static ::llvm::LogicalResult setPropertiesFromAttr(Properties &prop, ::mlir::Attribute attr, ::llvm::function_ref<::mlir::InFlightDiagnostic()> emitError); static ::mlir::Attribute getPropertiesAsAttr(::mlir::MLIRContext *ctx, const Properties &prop); static llvm::hash_code computePropertiesHash(const Properties &prop); static std::optional getInherentAttr(::mlir::MLIRContext *ctx, const Properties &prop, llvm::StringRef name); static void setInherentAttr(Properties &prop, llvm::StringRef name, mlir::Attribute value); static void populateInherentAttrs(::mlir::MLIRContext *ctx, const Properties &prop, ::mlir::NamedAttrList &attrs); static ::llvm::LogicalResult verifyInherentAttrs(::mlir::OperationName opName, ::mlir::NamedAttrList &attrs, llvm::function_ref<::mlir::InFlightDiagnostic()> emitError); static ::llvm::LogicalResult readProperties(::mlir::DialectBytecodeReader &reader, ::mlir::OperationState &state); void writeProperties(::mlir::DialectBytecodeWriter &writer); ::mlir::IntegerAttr getCbszAttr() { return ::llvm::cast<::mlir::IntegerAttr>(getProperties().cbsz); } uint32_t getCbsz(); ::mlir::IntegerAttr getAbidAttr() { return ::llvm::cast<::mlir::IntegerAttr>(getProperties().abid); } uint32_t getAbid(); ::mlir::ROCDL::MFMAPermBAttr getBlgpAttr() { return ::llvm::cast<::mlir::ROCDL::MFMAPermBAttr>(getProperties().blgp); } ::mlir::ROCDL::MFMAPermB getBlgp(); void setCbszAttr(::mlir::IntegerAttr attr) { getProperties().cbsz = attr; } void setCbsz(uint32_t attrValue); void setAbidAttr(::mlir::IntegerAttr attr) { getProperties().abid = attr; } void setAbid(uint32_t attrValue); void setBlgpAttr(::mlir::ROCDL::MFMAPermBAttr attr) { getProperties().blgp = attr; } void setBlgp(::mlir::ROCDL::MFMAPermB attrValue); static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::Type res, ::mlir::Value a, ::mlir::Value b, ::mlir::Value c, ::mlir::IntegerAttr cbsz, ::mlir::IntegerAttr abid, ::mlir::ROCDL::MFMAPermBAttr blgp); static mfma_f32_32x32x16_bf8_fp8 create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::Type res, ::mlir::Value a, ::mlir::Value b, ::mlir::Value c, ::mlir::IntegerAttr cbsz, ::mlir::IntegerAttr abid, ::mlir::ROCDL::MFMAPermBAttr blgp); static mfma_f32_32x32x16_bf8_fp8 create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::Type res, ::mlir::Value a, ::mlir::Value b, ::mlir::Value c, ::mlir::IntegerAttr cbsz, ::mlir::IntegerAttr abid, ::mlir::ROCDL::MFMAPermBAttr blgp); static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::Value a, ::mlir::Value b, ::mlir::Value c, ::mlir::IntegerAttr cbsz, ::mlir::IntegerAttr abid, ::mlir::ROCDL::MFMAPermBAttr blgp); static mfma_f32_32x32x16_bf8_fp8 create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::Value a, ::mlir::Value b, ::mlir::Value c, ::mlir::IntegerAttr cbsz, ::mlir::IntegerAttr abid, ::mlir::ROCDL::MFMAPermBAttr blgp); static mfma_f32_32x32x16_bf8_fp8 create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::Value a, ::mlir::Value b, ::mlir::Value c, ::mlir::IntegerAttr cbsz, ::mlir::IntegerAttr abid, ::mlir::ROCDL::MFMAPermBAttr blgp); static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::Type res, ::mlir::Value a, ::mlir::Value b, ::mlir::Value c, uint32_t cbsz, uint32_t abid, ::mlir::ROCDL::MFMAPermB blgp); static mfma_f32_32x32x16_bf8_fp8 create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::Type res, ::mlir::Value a, ::mlir::Value b, ::mlir::Value c, uint32_t cbsz, uint32_t abid, ::mlir::ROCDL::MFMAPermB blgp); static mfma_f32_32x32x16_bf8_fp8 create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::Type res, ::mlir::Value a, ::mlir::Value b, ::mlir::Value c, uint32_t cbsz, uint32_t abid, ::mlir::ROCDL::MFMAPermB blgp); static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::Value a, ::mlir::Value b, ::mlir::Value c, uint32_t cbsz, uint32_t abid, ::mlir::ROCDL::MFMAPermB blgp); static mfma_f32_32x32x16_bf8_fp8 create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::Value a, ::mlir::Value b, ::mlir::Value c, uint32_t cbsz, uint32_t abid, ::mlir::ROCDL::MFMAPermB blgp); static mfma_f32_32x32x16_bf8_fp8 create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::Value a, ::mlir::Value b, ::mlir::Value c, uint32_t cbsz, uint32_t abid, ::mlir::ROCDL::MFMAPermB blgp); static void build(::mlir::OpBuilder &, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, ::llvm::ArrayRef<::mlir::NamedAttribute> attributes = {}); static mfma_f32_32x32x16_bf8_fp8 create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, ::llvm::ArrayRef<::mlir::NamedAttribute> attributes = {}); static mfma_f32_32x32x16_bf8_fp8 create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, ::llvm::ArrayRef<::mlir::NamedAttribute> attributes = {}); static void build(::mlir::OpBuilder &, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, const Properties &properties, ::llvm::ArrayRef<::mlir::NamedAttribute> discardableAttributes = {}); static mfma_f32_32x32x16_bf8_fp8 create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, const Properties &properties, ::llvm::ArrayRef<::mlir::NamedAttribute> discardableAttributes = {}); static mfma_f32_32x32x16_bf8_fp8 create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, const Properties &properties, ::llvm::ArrayRef<::mlir::NamedAttribute> discardableAttributes = {}); ::llvm::LogicalResult verifyInvariantsImpl(); ::llvm::LogicalResult verifyInvariants(); static ::mlir::ParseResult parse(::mlir::OpAsmParser &parser, ::mlir::OperationState &result); void print(::mlir::OpAsmPrinter &_odsPrinter); private: ::mlir::StringAttr getAttributeNameForIndex(unsigned index) { return getAttributeNameForIndex((*this)->getName(), index); } static ::mlir::StringAttr getAttributeNameForIndex(::mlir::OperationName name, unsigned index) { assert(index < 3 && "invalid attribute index"); assert(name.getStringRef() == getOperationName() && "invalid operation name"); assert(name.isRegistered() && "Operation isn't registered, missing a " "dependent dialect loading?"); return name.getAttributeNames()[index]; } public: }; } // namespace mlir::ROCDL MLIR_DECLARE_EXPLICIT_TYPE_ID(::mlir::ROCDL::mfma_f32_32x32x16_bf8_fp8) MLIR_DECLARE_EXPLICIT_TYPE_ID(::mlir::ROCDL::detail::mfma_f32_32x32x16_bf8_fp8GenericAdaptorBase::Properties) namespace mlir::ROCDL { //===----------------------------------------------------------------------===// // ::mlir::ROCDL::mfma_f32_32x32x16_f16 declarations //===----------------------------------------------------------------------===// namespace detail { class mfma_f32_32x32x16_f16GenericAdaptorBase { public: struct Properties { using abidTy = ::mlir::IntegerAttr; abidTy abid; auto getAbid() const { auto &propStorage = this->abid; return ::llvm::cast<::mlir::IntegerAttr>(propStorage); } void setAbid(const ::mlir::IntegerAttr &propValue) { this->abid = propValue; } using blgpTy = ::mlir::ROCDL::MFMAPermBAttr; blgpTy blgp; auto getBlgp() const { auto &propStorage = this->blgp; return ::llvm::cast<::mlir::ROCDL::MFMAPermBAttr>(propStorage); } void setBlgp(const ::mlir::ROCDL::MFMAPermBAttr &propValue) { this->blgp = propValue; } using cbszTy = ::mlir::IntegerAttr; cbszTy cbsz; auto getCbsz() const { auto &propStorage = this->cbsz; return ::llvm::cast<::mlir::IntegerAttr>(propStorage); } void setCbsz(const ::mlir::IntegerAttr &propValue) { this->cbsz = propValue; } bool operator==(const Properties &rhs) const { return rhs.abid == this->abid && rhs.blgp == this->blgp && rhs.cbsz == this->cbsz && true; } bool operator!=(const Properties &rhs) const { return !(*this == rhs); } }; protected: ::mlir::DictionaryAttr odsAttrs; ::std::optional<::mlir::OperationName> odsOpName; Properties properties; ::mlir::RegionRange odsRegions; public: mfma_f32_32x32x16_f16GenericAdaptorBase(::mlir::DictionaryAttr attrs, const Properties &properties, ::mlir::RegionRange regions = {}) : odsAttrs(attrs), properties(properties), odsRegions(regions) { if (odsAttrs) odsOpName.emplace("rocdl.mfma.f32.32x32x16.f16", odsAttrs.getContext()); } mfma_f32_32x32x16_f16GenericAdaptorBase(mfma_f32_32x32x16_f16 op); std::pair getODSOperandIndexAndLength(unsigned index, unsigned odsOperandsSize) { return {index, 1}; } const Properties &getProperties() { return properties; } ::mlir::DictionaryAttr getAttributes() { return odsAttrs; } ::mlir::IntegerAttr getCbszAttr() { auto attr = ::llvm::cast<::mlir::IntegerAttr>(getProperties().cbsz); return attr; } uint32_t getCbsz(); ::mlir::IntegerAttr getAbidAttr() { auto attr = ::llvm::cast<::mlir::IntegerAttr>(getProperties().abid); return attr; } uint32_t getAbid(); ::mlir::ROCDL::MFMAPermBAttr getBlgpAttr() { auto attr = ::llvm::cast<::mlir::ROCDL::MFMAPermBAttr>(getProperties().blgp); return attr; } ::mlir::ROCDL::MFMAPermB getBlgp(); }; } // namespace detail template class mfma_f32_32x32x16_f16GenericAdaptor : public detail::mfma_f32_32x32x16_f16GenericAdaptorBase { using ValueT = ::llvm::detail::ValueOfRange; using Base = detail::mfma_f32_32x32x16_f16GenericAdaptorBase; static constexpr int odsIndex_a = 0; static constexpr int odsIndex_b = 1; static constexpr int odsIndex_c = 2; public: mfma_f32_32x32x16_f16GenericAdaptor(RangeT values, ::mlir::DictionaryAttr attrs, const Properties &properties, ::mlir::RegionRange regions = {}) : Base(attrs, properties, regions), odsOperands(values) {} mfma_f32_32x32x16_f16GenericAdaptor(RangeT values, ::mlir::DictionaryAttr attrs, ::mlir::PropertyRef properties, ::mlir::RegionRange regions = {}) : mfma_f32_32x32x16_f16GenericAdaptor(values, attrs, (properties ? *properties.as() : Properties{}), regions) {} mfma_f32_32x32x16_f16GenericAdaptor(RangeT values, ::mlir::DictionaryAttr attrs = nullptr) : mfma_f32_32x32x16_f16GenericAdaptor(values, attrs, Properties{}, {}) {} mfma_f32_32x32x16_f16GenericAdaptor(RangeT values, const mfma_f32_32x32x16_f16GenericAdaptorBase &base) : Base(base), odsOperands(values) {} template >> mfma_f32_32x32x16_f16GenericAdaptor(RangeT values, LateInst op) : Base(op), odsOperands(values) {} std::pair getODSOperandIndexAndLength(unsigned index) { return Base::getODSOperandIndexAndLength(index, odsOperands.size()); } RangeT getODSOperands(unsigned index) { auto valueRange = getODSOperandIndexAndLength(index); return {std::next(odsOperands.begin(), valueRange.first), std::next(odsOperands.begin(), valueRange.first + valueRange.second)}; } ValueT getA() { return (*getODSOperands(0).begin()); } ValueT getB() { return (*getODSOperands(1).begin()); } ValueT getC() { return (*getODSOperands(2).begin()); } RangeT getOperands() { return odsOperands; } private: RangeT odsOperands; }; class mfma_f32_32x32x16_f16Adaptor : public mfma_f32_32x32x16_f16GenericAdaptor<::mlir::ValueRange> { public: using mfma_f32_32x32x16_f16GenericAdaptor::mfma_f32_32x32x16_f16GenericAdaptor; mfma_f32_32x32x16_f16Adaptor(mfma_f32_32x32x16_f16 op); ::llvm::LogicalResult verify(::mlir::Location loc); }; class mfma_f32_32x32x16_f16 : public ::mlir::Op::Impl, ::mlir::OpTrait::ZeroSuccessors, ::mlir::OpTrait::NOperands<3>::Impl, ::mlir::OpTrait::OpInvariants, ::mlir::BytecodeOpInterface::Trait> { public: using Op::Op; using Op::print; using Adaptor = mfma_f32_32x32x16_f16Adaptor; template using GenericAdaptor = mfma_f32_32x32x16_f16GenericAdaptor; using FoldAdaptor = GenericAdaptor<::llvm::ArrayRef<::mlir::Attribute>>; static constexpr int odsIndex_a = 0; static constexpr int odsIndex_b = 1; static constexpr int odsIndex_c = 2; using Properties = FoldAdaptor::Properties; static ::llvm::ArrayRef<::llvm::StringRef> getAttributeNames() { static ::llvm::StringRef attrNames[] = {::llvm::StringRef("abid"), ::llvm::StringRef("blgp"), ::llvm::StringRef("cbsz")}; return ::llvm::ArrayRef(attrNames); } ::mlir::StringAttr getAbidAttrName() { return getAttributeNameForIndex(0); } static ::mlir::StringAttr getAbidAttrName(::mlir::OperationName name) { return getAttributeNameForIndex(name, 0); } ::mlir::StringAttr getBlgpAttrName() { return getAttributeNameForIndex(1); } static ::mlir::StringAttr getBlgpAttrName(::mlir::OperationName name) { return getAttributeNameForIndex(name, 1); } ::mlir::StringAttr getCbszAttrName() { return getAttributeNameForIndex(2); } static ::mlir::StringAttr getCbszAttrName(::mlir::OperationName name) { return getAttributeNameForIndex(name, 2); } static constexpr ::llvm::StringLiteral getOperationName() { return ::llvm::StringLiteral("rocdl.mfma.f32.32x32x16.f16"); } std::pair getODSOperandIndexAndLength(unsigned index) { return {index, 1}; } ::mlir::Operation::operand_range getODSOperands(unsigned index) { auto valueRange = getODSOperandIndexAndLength(index); return {std::next(getOperation()->operand_begin(), valueRange.first), std::next(getOperation()->operand_begin(), valueRange.first + valueRange.second)}; } ::mlir::TypedValue<::mlir::VectorType> getA() { return ::llvm::cast<::mlir::TypedValue<::mlir::VectorType>>(*getODSOperands(0).begin()); } ::mlir::TypedValue<::mlir::VectorType> getB() { return ::llvm::cast<::mlir::TypedValue<::mlir::VectorType>>(*getODSOperands(1).begin()); } ::mlir::TypedValue<::mlir::VectorType> getC() { return ::llvm::cast<::mlir::TypedValue<::mlir::VectorType>>(*getODSOperands(2).begin()); } ::mlir::OpOperand &getAMutable() { auto range = getODSOperandIndexAndLength(0); return getOperation()->getOpOperand(range.first); } ::mlir::OpOperand &getBMutable() { auto range = getODSOperandIndexAndLength(1); return getOperation()->getOpOperand(range.first); } ::mlir::OpOperand &getCMutable() { auto range = getODSOperandIndexAndLength(2); return getOperation()->getOpOperand(range.first); } std::pair getODSResultIndexAndLength(unsigned index) { return {index, 1}; } ::mlir::Operation::result_range getODSResults(unsigned index) { auto valueRange = getODSResultIndexAndLength(index); return {std::next(getOperation()->result_begin(), valueRange.first), std::next(getOperation()->result_begin(), valueRange.first + valueRange.second)}; } ::mlir::TypedValue<::mlir::VectorType> getRes() { return ::llvm::cast<::mlir::TypedValue<::mlir::VectorType>>(*getODSResults(0).begin()); } static ::llvm::LogicalResult setPropertiesFromAttr(Properties &prop, ::mlir::Attribute attr, ::llvm::function_ref<::mlir::InFlightDiagnostic()> emitError); static ::mlir::Attribute getPropertiesAsAttr(::mlir::MLIRContext *ctx, const Properties &prop); static llvm::hash_code computePropertiesHash(const Properties &prop); static std::optional getInherentAttr(::mlir::MLIRContext *ctx, const Properties &prop, llvm::StringRef name); static void setInherentAttr(Properties &prop, llvm::StringRef name, mlir::Attribute value); static void populateInherentAttrs(::mlir::MLIRContext *ctx, const Properties &prop, ::mlir::NamedAttrList &attrs); static ::llvm::LogicalResult verifyInherentAttrs(::mlir::OperationName opName, ::mlir::NamedAttrList &attrs, llvm::function_ref<::mlir::InFlightDiagnostic()> emitError); static ::llvm::LogicalResult readProperties(::mlir::DialectBytecodeReader &reader, ::mlir::OperationState &state); void writeProperties(::mlir::DialectBytecodeWriter &writer); ::mlir::IntegerAttr getCbszAttr() { return ::llvm::cast<::mlir::IntegerAttr>(getProperties().cbsz); } uint32_t getCbsz(); ::mlir::IntegerAttr getAbidAttr() { return ::llvm::cast<::mlir::IntegerAttr>(getProperties().abid); } uint32_t getAbid(); ::mlir::ROCDL::MFMAPermBAttr getBlgpAttr() { return ::llvm::cast<::mlir::ROCDL::MFMAPermBAttr>(getProperties().blgp); } ::mlir::ROCDL::MFMAPermB getBlgp(); void setCbszAttr(::mlir::IntegerAttr attr) { getProperties().cbsz = attr; } void setCbsz(uint32_t attrValue); void setAbidAttr(::mlir::IntegerAttr attr) { getProperties().abid = attr; } void setAbid(uint32_t attrValue); void setBlgpAttr(::mlir::ROCDL::MFMAPermBAttr attr) { getProperties().blgp = attr; } void setBlgp(::mlir::ROCDL::MFMAPermB attrValue); static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::Type res, ::mlir::Value a, ::mlir::Value b, ::mlir::Value c, ::mlir::IntegerAttr cbsz, ::mlir::IntegerAttr abid, ::mlir::ROCDL::MFMAPermBAttr blgp); static mfma_f32_32x32x16_f16 create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::Type res, ::mlir::Value a, ::mlir::Value b, ::mlir::Value c, ::mlir::IntegerAttr cbsz, ::mlir::IntegerAttr abid, ::mlir::ROCDL::MFMAPermBAttr blgp); static mfma_f32_32x32x16_f16 create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::Type res, ::mlir::Value a, ::mlir::Value b, ::mlir::Value c, ::mlir::IntegerAttr cbsz, ::mlir::IntegerAttr abid, ::mlir::ROCDL::MFMAPermBAttr blgp); static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::Value a, ::mlir::Value b, ::mlir::Value c, ::mlir::IntegerAttr cbsz, ::mlir::IntegerAttr abid, ::mlir::ROCDL::MFMAPermBAttr blgp); static mfma_f32_32x32x16_f16 create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::Value a, ::mlir::Value b, ::mlir::Value c, ::mlir::IntegerAttr cbsz, ::mlir::IntegerAttr abid, ::mlir::ROCDL::MFMAPermBAttr blgp); static mfma_f32_32x32x16_f16 create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::Value a, ::mlir::Value b, ::mlir::Value c, ::mlir::IntegerAttr cbsz, ::mlir::IntegerAttr abid, ::mlir::ROCDL::MFMAPermBAttr blgp); static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::Type res, ::mlir::Value a, ::mlir::Value b, ::mlir::Value c, uint32_t cbsz, uint32_t abid, ::mlir::ROCDL::MFMAPermB blgp); static mfma_f32_32x32x16_f16 create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::Type res, ::mlir::Value a, ::mlir::Value b, ::mlir::Value c, uint32_t cbsz, uint32_t abid, ::mlir::ROCDL::MFMAPermB blgp); static mfma_f32_32x32x16_f16 create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::Type res, ::mlir::Value a, ::mlir::Value b, ::mlir::Value c, uint32_t cbsz, uint32_t abid, ::mlir::ROCDL::MFMAPermB blgp); static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::Value a, ::mlir::Value b, ::mlir::Value c, uint32_t cbsz, uint32_t abid, ::mlir::ROCDL::MFMAPermB blgp); static mfma_f32_32x32x16_f16 create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::Value a, ::mlir::Value b, ::mlir::Value c, uint32_t cbsz, uint32_t abid, ::mlir::ROCDL::MFMAPermB blgp); static mfma_f32_32x32x16_f16 create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::Value a, ::mlir::Value b, ::mlir::Value c, uint32_t cbsz, uint32_t abid, ::mlir::ROCDL::MFMAPermB blgp); static void build(::mlir::OpBuilder &, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, ::llvm::ArrayRef<::mlir::NamedAttribute> attributes = {}); static mfma_f32_32x32x16_f16 create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, ::llvm::ArrayRef<::mlir::NamedAttribute> attributes = {}); static mfma_f32_32x32x16_f16 create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, ::llvm::ArrayRef<::mlir::NamedAttribute> attributes = {}); static void build(::mlir::OpBuilder &, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, const Properties &properties, ::llvm::ArrayRef<::mlir::NamedAttribute> discardableAttributes = {}); static mfma_f32_32x32x16_f16 create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, const Properties &properties, ::llvm::ArrayRef<::mlir::NamedAttribute> discardableAttributes = {}); static mfma_f32_32x32x16_f16 create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, const Properties &properties, ::llvm::ArrayRef<::mlir::NamedAttribute> discardableAttributes = {}); ::llvm::LogicalResult verifyInvariantsImpl(); ::llvm::LogicalResult verifyInvariants(); static ::mlir::ParseResult parse(::mlir::OpAsmParser &parser, ::mlir::OperationState &result); void print(::mlir::OpAsmPrinter &_odsPrinter); private: ::mlir::StringAttr getAttributeNameForIndex(unsigned index) { return getAttributeNameForIndex((*this)->getName(), index); } static ::mlir::StringAttr getAttributeNameForIndex(::mlir::OperationName name, unsigned index) { assert(index < 3 && "invalid attribute index"); assert(name.getStringRef() == getOperationName() && "invalid operation name"); assert(name.isRegistered() && "Operation isn't registered, missing a " "dependent dialect loading?"); return name.getAttributeNames()[index]; } public: }; } // namespace mlir::ROCDL MLIR_DECLARE_EXPLICIT_TYPE_ID(::mlir::ROCDL::mfma_f32_32x32x16_f16) MLIR_DECLARE_EXPLICIT_TYPE_ID(::mlir::ROCDL::detail::mfma_f32_32x32x16_f16GenericAdaptorBase::Properties) namespace mlir::ROCDL { //===----------------------------------------------------------------------===// // ::mlir::ROCDL::mfma_f32_32x32x16_fp8_bf8 declarations //===----------------------------------------------------------------------===// namespace detail { class mfma_f32_32x32x16_fp8_bf8GenericAdaptorBase { public: struct Properties { using abidTy = ::mlir::IntegerAttr; abidTy abid; auto getAbid() const { auto &propStorage = this->abid; return ::llvm::cast<::mlir::IntegerAttr>(propStorage); } void setAbid(const ::mlir::IntegerAttr &propValue) { this->abid = propValue; } using blgpTy = ::mlir::ROCDL::MFMAPermBAttr; blgpTy blgp; auto getBlgp() const { auto &propStorage = this->blgp; return ::llvm::cast<::mlir::ROCDL::MFMAPermBAttr>(propStorage); } void setBlgp(const ::mlir::ROCDL::MFMAPermBAttr &propValue) { this->blgp = propValue; } using cbszTy = ::mlir::IntegerAttr; cbszTy cbsz; auto getCbsz() const { auto &propStorage = this->cbsz; return ::llvm::cast<::mlir::IntegerAttr>(propStorage); } void setCbsz(const ::mlir::IntegerAttr &propValue) { this->cbsz = propValue; } bool operator==(const Properties &rhs) const { return rhs.abid == this->abid && rhs.blgp == this->blgp && rhs.cbsz == this->cbsz && true; } bool operator!=(const Properties &rhs) const { return !(*this == rhs); } }; protected: ::mlir::DictionaryAttr odsAttrs; ::std::optional<::mlir::OperationName> odsOpName; Properties properties; ::mlir::RegionRange odsRegions; public: mfma_f32_32x32x16_fp8_bf8GenericAdaptorBase(::mlir::DictionaryAttr attrs, const Properties &properties, ::mlir::RegionRange regions = {}) : odsAttrs(attrs), properties(properties), odsRegions(regions) { if (odsAttrs) odsOpName.emplace("rocdl.mfma.f32.32x32x16.fp8.bf8", odsAttrs.getContext()); } mfma_f32_32x32x16_fp8_bf8GenericAdaptorBase(mfma_f32_32x32x16_fp8_bf8 op); std::pair getODSOperandIndexAndLength(unsigned index, unsigned odsOperandsSize) { return {index, 1}; } const Properties &getProperties() { return properties; } ::mlir::DictionaryAttr getAttributes() { return odsAttrs; } ::mlir::IntegerAttr getCbszAttr() { auto attr = ::llvm::cast<::mlir::IntegerAttr>(getProperties().cbsz); return attr; } uint32_t getCbsz(); ::mlir::IntegerAttr getAbidAttr() { auto attr = ::llvm::cast<::mlir::IntegerAttr>(getProperties().abid); return attr; } uint32_t getAbid(); ::mlir::ROCDL::MFMAPermBAttr getBlgpAttr() { auto attr = ::llvm::cast<::mlir::ROCDL::MFMAPermBAttr>(getProperties().blgp); return attr; } ::mlir::ROCDL::MFMAPermB getBlgp(); }; } // namespace detail template class mfma_f32_32x32x16_fp8_bf8GenericAdaptor : public detail::mfma_f32_32x32x16_fp8_bf8GenericAdaptorBase { using ValueT = ::llvm::detail::ValueOfRange; using Base = detail::mfma_f32_32x32x16_fp8_bf8GenericAdaptorBase; static constexpr int odsIndex_a = 0; static constexpr int odsIndex_b = 1; static constexpr int odsIndex_c = 2; public: mfma_f32_32x32x16_fp8_bf8GenericAdaptor(RangeT values, ::mlir::DictionaryAttr attrs, const Properties &properties, ::mlir::RegionRange regions = {}) : Base(attrs, properties, regions), odsOperands(values) {} mfma_f32_32x32x16_fp8_bf8GenericAdaptor(RangeT values, ::mlir::DictionaryAttr attrs, ::mlir::PropertyRef properties, ::mlir::RegionRange regions = {}) : mfma_f32_32x32x16_fp8_bf8GenericAdaptor(values, attrs, (properties ? *properties.as() : Properties{}), regions) {} mfma_f32_32x32x16_fp8_bf8GenericAdaptor(RangeT values, ::mlir::DictionaryAttr attrs = nullptr) : mfma_f32_32x32x16_fp8_bf8GenericAdaptor(values, attrs, Properties{}, {}) {} mfma_f32_32x32x16_fp8_bf8GenericAdaptor(RangeT values, const mfma_f32_32x32x16_fp8_bf8GenericAdaptorBase &base) : Base(base), odsOperands(values) {} template >> mfma_f32_32x32x16_fp8_bf8GenericAdaptor(RangeT values, LateInst op) : Base(op), odsOperands(values) {} std::pair getODSOperandIndexAndLength(unsigned index) { return Base::getODSOperandIndexAndLength(index, odsOperands.size()); } RangeT getODSOperands(unsigned index) { auto valueRange = getODSOperandIndexAndLength(index); return {std::next(odsOperands.begin(), valueRange.first), std::next(odsOperands.begin(), valueRange.first + valueRange.second)}; } ValueT getA() { return (*getODSOperands(0).begin()); } ValueT getB() { return (*getODSOperands(1).begin()); } ValueT getC() { return (*getODSOperands(2).begin()); } RangeT getOperands() { return odsOperands; } private: RangeT odsOperands; }; class mfma_f32_32x32x16_fp8_bf8Adaptor : public mfma_f32_32x32x16_fp8_bf8GenericAdaptor<::mlir::ValueRange> { public: using mfma_f32_32x32x16_fp8_bf8GenericAdaptor::mfma_f32_32x32x16_fp8_bf8GenericAdaptor; mfma_f32_32x32x16_fp8_bf8Adaptor(mfma_f32_32x32x16_fp8_bf8 op); ::llvm::LogicalResult verify(::mlir::Location loc); }; class mfma_f32_32x32x16_fp8_bf8 : public ::mlir::Op::Impl, ::mlir::OpTrait::ZeroSuccessors, ::mlir::OpTrait::NOperands<3>::Impl, ::mlir::OpTrait::OpInvariants, ::mlir::BytecodeOpInterface::Trait> { public: using Op::Op; using Op::print; using Adaptor = mfma_f32_32x32x16_fp8_bf8Adaptor; template using GenericAdaptor = mfma_f32_32x32x16_fp8_bf8GenericAdaptor; using FoldAdaptor = GenericAdaptor<::llvm::ArrayRef<::mlir::Attribute>>; static constexpr int odsIndex_a = 0; static constexpr int odsIndex_b = 1; static constexpr int odsIndex_c = 2; using Properties = FoldAdaptor::Properties; static ::llvm::ArrayRef<::llvm::StringRef> getAttributeNames() { static ::llvm::StringRef attrNames[] = {::llvm::StringRef("abid"), ::llvm::StringRef("blgp"), ::llvm::StringRef("cbsz")}; return ::llvm::ArrayRef(attrNames); } ::mlir::StringAttr getAbidAttrName() { return getAttributeNameForIndex(0); } static ::mlir::StringAttr getAbidAttrName(::mlir::OperationName name) { return getAttributeNameForIndex(name, 0); } ::mlir::StringAttr getBlgpAttrName() { return getAttributeNameForIndex(1); } static ::mlir::StringAttr getBlgpAttrName(::mlir::OperationName name) { return getAttributeNameForIndex(name, 1); } ::mlir::StringAttr getCbszAttrName() { return getAttributeNameForIndex(2); } static ::mlir::StringAttr getCbszAttrName(::mlir::OperationName name) { return getAttributeNameForIndex(name, 2); } static constexpr ::llvm::StringLiteral getOperationName() { return ::llvm::StringLiteral("rocdl.mfma.f32.32x32x16.fp8.bf8"); } std::pair getODSOperandIndexAndLength(unsigned index) { return {index, 1}; } ::mlir::Operation::operand_range getODSOperands(unsigned index) { auto valueRange = getODSOperandIndexAndLength(index); return {std::next(getOperation()->operand_begin(), valueRange.first), std::next(getOperation()->operand_begin(), valueRange.first + valueRange.second)}; } ::mlir::TypedValue<::mlir::Type> getA() { return ::llvm::cast<::mlir::TypedValue<::mlir::Type>>(*getODSOperands(0).begin()); } ::mlir::TypedValue<::mlir::Type> getB() { return ::llvm::cast<::mlir::TypedValue<::mlir::Type>>(*getODSOperands(1).begin()); } ::mlir::TypedValue<::mlir::VectorType> getC() { return ::llvm::cast<::mlir::TypedValue<::mlir::VectorType>>(*getODSOperands(2).begin()); } ::mlir::OpOperand &getAMutable() { auto range = getODSOperandIndexAndLength(0); return getOperation()->getOpOperand(range.first); } ::mlir::OpOperand &getBMutable() { auto range = getODSOperandIndexAndLength(1); return getOperation()->getOpOperand(range.first); } ::mlir::OpOperand &getCMutable() { auto range = getODSOperandIndexAndLength(2); return getOperation()->getOpOperand(range.first); } std::pair getODSResultIndexAndLength(unsigned index) { return {index, 1}; } ::mlir::Operation::result_range getODSResults(unsigned index) { auto valueRange = getODSResultIndexAndLength(index); return {std::next(getOperation()->result_begin(), valueRange.first), std::next(getOperation()->result_begin(), valueRange.first + valueRange.second)}; } ::mlir::TypedValue<::mlir::VectorType> getRes() { return ::llvm::cast<::mlir::TypedValue<::mlir::VectorType>>(*getODSResults(0).begin()); } static ::llvm::LogicalResult setPropertiesFromAttr(Properties &prop, ::mlir::Attribute attr, ::llvm::function_ref<::mlir::InFlightDiagnostic()> emitError); static ::mlir::Attribute getPropertiesAsAttr(::mlir::MLIRContext *ctx, const Properties &prop); static llvm::hash_code computePropertiesHash(const Properties &prop); static std::optional getInherentAttr(::mlir::MLIRContext *ctx, const Properties &prop, llvm::StringRef name); static void setInherentAttr(Properties &prop, llvm::StringRef name, mlir::Attribute value); static void populateInherentAttrs(::mlir::MLIRContext *ctx, const Properties &prop, ::mlir::NamedAttrList &attrs); static ::llvm::LogicalResult verifyInherentAttrs(::mlir::OperationName opName, ::mlir::NamedAttrList &attrs, llvm::function_ref<::mlir::InFlightDiagnostic()> emitError); static ::llvm::LogicalResult readProperties(::mlir::DialectBytecodeReader &reader, ::mlir::OperationState &state); void writeProperties(::mlir::DialectBytecodeWriter &writer); ::mlir::IntegerAttr getCbszAttr() { return ::llvm::cast<::mlir::IntegerAttr>(getProperties().cbsz); } uint32_t getCbsz(); ::mlir::IntegerAttr getAbidAttr() { return ::llvm::cast<::mlir::IntegerAttr>(getProperties().abid); } uint32_t getAbid(); ::mlir::ROCDL::MFMAPermBAttr getBlgpAttr() { return ::llvm::cast<::mlir::ROCDL::MFMAPermBAttr>(getProperties().blgp); } ::mlir::ROCDL::MFMAPermB getBlgp(); void setCbszAttr(::mlir::IntegerAttr attr) { getProperties().cbsz = attr; } void setCbsz(uint32_t attrValue); void setAbidAttr(::mlir::IntegerAttr attr) { getProperties().abid = attr; } void setAbid(uint32_t attrValue); void setBlgpAttr(::mlir::ROCDL::MFMAPermBAttr attr) { getProperties().blgp = attr; } void setBlgp(::mlir::ROCDL::MFMAPermB attrValue); static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::Type res, ::mlir::Value a, ::mlir::Value b, ::mlir::Value c, ::mlir::IntegerAttr cbsz, ::mlir::IntegerAttr abid, ::mlir::ROCDL::MFMAPermBAttr blgp); static mfma_f32_32x32x16_fp8_bf8 create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::Type res, ::mlir::Value a, ::mlir::Value b, ::mlir::Value c, ::mlir::IntegerAttr cbsz, ::mlir::IntegerAttr abid, ::mlir::ROCDL::MFMAPermBAttr blgp); static mfma_f32_32x32x16_fp8_bf8 create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::Type res, ::mlir::Value a, ::mlir::Value b, ::mlir::Value c, ::mlir::IntegerAttr cbsz, ::mlir::IntegerAttr abid, ::mlir::ROCDL::MFMAPermBAttr blgp); static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::Value a, ::mlir::Value b, ::mlir::Value c, ::mlir::IntegerAttr cbsz, ::mlir::IntegerAttr abid, ::mlir::ROCDL::MFMAPermBAttr blgp); static mfma_f32_32x32x16_fp8_bf8 create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::Value a, ::mlir::Value b, ::mlir::Value c, ::mlir::IntegerAttr cbsz, ::mlir::IntegerAttr abid, ::mlir::ROCDL::MFMAPermBAttr blgp); static mfma_f32_32x32x16_fp8_bf8 create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::Value a, ::mlir::Value b, ::mlir::Value c, ::mlir::IntegerAttr cbsz, ::mlir::IntegerAttr abid, ::mlir::ROCDL::MFMAPermBAttr blgp); static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::Type res, ::mlir::Value a, ::mlir::Value b, ::mlir::Value c, uint32_t cbsz, uint32_t abid, ::mlir::ROCDL::MFMAPermB blgp); static mfma_f32_32x32x16_fp8_bf8 create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::Type res, ::mlir::Value a, ::mlir::Value b, ::mlir::Value c, uint32_t cbsz, uint32_t abid, ::mlir::ROCDL::MFMAPermB blgp); static mfma_f32_32x32x16_fp8_bf8 create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::Type res, ::mlir::Value a, ::mlir::Value b, ::mlir::Value c, uint32_t cbsz, uint32_t abid, ::mlir::ROCDL::MFMAPermB blgp); static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::Value a, ::mlir::Value b, ::mlir::Value c, uint32_t cbsz, uint32_t abid, ::mlir::ROCDL::MFMAPermB blgp); static mfma_f32_32x32x16_fp8_bf8 create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::Value a, ::mlir::Value b, ::mlir::Value c, uint32_t cbsz, uint32_t abid, ::mlir::ROCDL::MFMAPermB blgp); static mfma_f32_32x32x16_fp8_bf8 create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::Value a, ::mlir::Value b, ::mlir::Value c, uint32_t cbsz, uint32_t abid, ::mlir::ROCDL::MFMAPermB blgp); static void build(::mlir::OpBuilder &, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, ::llvm::ArrayRef<::mlir::NamedAttribute> attributes = {}); static mfma_f32_32x32x16_fp8_bf8 create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, ::llvm::ArrayRef<::mlir::NamedAttribute> attributes = {}); static mfma_f32_32x32x16_fp8_bf8 create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, ::llvm::ArrayRef<::mlir::NamedAttribute> attributes = {}); static void build(::mlir::OpBuilder &, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, const Properties &properties, ::llvm::ArrayRef<::mlir::NamedAttribute> discardableAttributes = {}); static mfma_f32_32x32x16_fp8_bf8 create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, const Properties &properties, ::llvm::ArrayRef<::mlir::NamedAttribute> discardableAttributes = {}); static mfma_f32_32x32x16_fp8_bf8 create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, const Properties &properties, ::llvm::ArrayRef<::mlir::NamedAttribute> discardableAttributes = {}); ::llvm::LogicalResult verifyInvariantsImpl(); ::llvm::LogicalResult verifyInvariants(); static ::mlir::ParseResult parse(::mlir::OpAsmParser &parser, ::mlir::OperationState &result); void print(::mlir::OpAsmPrinter &_odsPrinter); private: ::mlir::StringAttr getAttributeNameForIndex(unsigned index) { return getAttributeNameForIndex((*this)->getName(), index); } static ::mlir::StringAttr getAttributeNameForIndex(::mlir::OperationName name, unsigned index) { assert(index < 3 && "invalid attribute index"); assert(name.getStringRef() == getOperationName() && "invalid operation name"); assert(name.isRegistered() && "Operation isn't registered, missing a " "dependent dialect loading?"); return name.getAttributeNames()[index]; } public: }; } // namespace mlir::ROCDL MLIR_DECLARE_EXPLICIT_TYPE_ID(::mlir::ROCDL::mfma_f32_32x32x16_fp8_bf8) MLIR_DECLARE_EXPLICIT_TYPE_ID(::mlir::ROCDL::detail::mfma_f32_32x32x16_fp8_bf8GenericAdaptorBase::Properties) namespace mlir::ROCDL { //===----------------------------------------------------------------------===// // ::mlir::ROCDL::mfma_f32_32x32x16_fp8_fp8 declarations //===----------------------------------------------------------------------===// namespace detail { class mfma_f32_32x32x16_fp8_fp8GenericAdaptorBase { public: struct Properties { using abidTy = ::mlir::IntegerAttr; abidTy abid; auto getAbid() const { auto &propStorage = this->abid; return ::llvm::cast<::mlir::IntegerAttr>(propStorage); } void setAbid(const ::mlir::IntegerAttr &propValue) { this->abid = propValue; } using blgpTy = ::mlir::ROCDL::MFMAPermBAttr; blgpTy blgp; auto getBlgp() const { auto &propStorage = this->blgp; return ::llvm::cast<::mlir::ROCDL::MFMAPermBAttr>(propStorage); } void setBlgp(const ::mlir::ROCDL::MFMAPermBAttr &propValue) { this->blgp = propValue; } using cbszTy = ::mlir::IntegerAttr; cbszTy cbsz; auto getCbsz() const { auto &propStorage = this->cbsz; return ::llvm::cast<::mlir::IntegerAttr>(propStorage); } void setCbsz(const ::mlir::IntegerAttr &propValue) { this->cbsz = propValue; } bool operator==(const Properties &rhs) const { return rhs.abid == this->abid && rhs.blgp == this->blgp && rhs.cbsz == this->cbsz && true; } bool operator!=(const Properties &rhs) const { return !(*this == rhs); } }; protected: ::mlir::DictionaryAttr odsAttrs; ::std::optional<::mlir::OperationName> odsOpName; Properties properties; ::mlir::RegionRange odsRegions; public: mfma_f32_32x32x16_fp8_fp8GenericAdaptorBase(::mlir::DictionaryAttr attrs, const Properties &properties, ::mlir::RegionRange regions = {}) : odsAttrs(attrs), properties(properties), odsRegions(regions) { if (odsAttrs) odsOpName.emplace("rocdl.mfma.f32.32x32x16.fp8.fp8", odsAttrs.getContext()); } mfma_f32_32x32x16_fp8_fp8GenericAdaptorBase(mfma_f32_32x32x16_fp8_fp8 op); std::pair getODSOperandIndexAndLength(unsigned index, unsigned odsOperandsSize) { return {index, 1}; } const Properties &getProperties() { return properties; } ::mlir::DictionaryAttr getAttributes() { return odsAttrs; } ::mlir::IntegerAttr getCbszAttr() { auto attr = ::llvm::cast<::mlir::IntegerAttr>(getProperties().cbsz); return attr; } uint32_t getCbsz(); ::mlir::IntegerAttr getAbidAttr() { auto attr = ::llvm::cast<::mlir::IntegerAttr>(getProperties().abid); return attr; } uint32_t getAbid(); ::mlir::ROCDL::MFMAPermBAttr getBlgpAttr() { auto attr = ::llvm::cast<::mlir::ROCDL::MFMAPermBAttr>(getProperties().blgp); return attr; } ::mlir::ROCDL::MFMAPermB getBlgp(); }; } // namespace detail template class mfma_f32_32x32x16_fp8_fp8GenericAdaptor : public detail::mfma_f32_32x32x16_fp8_fp8GenericAdaptorBase { using ValueT = ::llvm::detail::ValueOfRange; using Base = detail::mfma_f32_32x32x16_fp8_fp8GenericAdaptorBase; static constexpr int odsIndex_a = 0; static constexpr int odsIndex_b = 1; static constexpr int odsIndex_c = 2; public: mfma_f32_32x32x16_fp8_fp8GenericAdaptor(RangeT values, ::mlir::DictionaryAttr attrs, const Properties &properties, ::mlir::RegionRange regions = {}) : Base(attrs, properties, regions), odsOperands(values) {} mfma_f32_32x32x16_fp8_fp8GenericAdaptor(RangeT values, ::mlir::DictionaryAttr attrs, ::mlir::PropertyRef properties, ::mlir::RegionRange regions = {}) : mfma_f32_32x32x16_fp8_fp8GenericAdaptor(values, attrs, (properties ? *properties.as() : Properties{}), regions) {} mfma_f32_32x32x16_fp8_fp8GenericAdaptor(RangeT values, ::mlir::DictionaryAttr attrs = nullptr) : mfma_f32_32x32x16_fp8_fp8GenericAdaptor(values, attrs, Properties{}, {}) {} mfma_f32_32x32x16_fp8_fp8GenericAdaptor(RangeT values, const mfma_f32_32x32x16_fp8_fp8GenericAdaptorBase &base) : Base(base), odsOperands(values) {} template >> mfma_f32_32x32x16_fp8_fp8GenericAdaptor(RangeT values, LateInst op) : Base(op), odsOperands(values) {} std::pair getODSOperandIndexAndLength(unsigned index) { return Base::getODSOperandIndexAndLength(index, odsOperands.size()); } RangeT getODSOperands(unsigned index) { auto valueRange = getODSOperandIndexAndLength(index); return {std::next(odsOperands.begin(), valueRange.first), std::next(odsOperands.begin(), valueRange.first + valueRange.second)}; } ValueT getA() { return (*getODSOperands(0).begin()); } ValueT getB() { return (*getODSOperands(1).begin()); } ValueT getC() { return (*getODSOperands(2).begin()); } RangeT getOperands() { return odsOperands; } private: RangeT odsOperands; }; class mfma_f32_32x32x16_fp8_fp8Adaptor : public mfma_f32_32x32x16_fp8_fp8GenericAdaptor<::mlir::ValueRange> { public: using mfma_f32_32x32x16_fp8_fp8GenericAdaptor::mfma_f32_32x32x16_fp8_fp8GenericAdaptor; mfma_f32_32x32x16_fp8_fp8Adaptor(mfma_f32_32x32x16_fp8_fp8 op); ::llvm::LogicalResult verify(::mlir::Location loc); }; class mfma_f32_32x32x16_fp8_fp8 : public ::mlir::Op::Impl, ::mlir::OpTrait::ZeroSuccessors, ::mlir::OpTrait::NOperands<3>::Impl, ::mlir::OpTrait::OpInvariants, ::mlir::BytecodeOpInterface::Trait> { public: using Op::Op; using Op::print; using Adaptor = mfma_f32_32x32x16_fp8_fp8Adaptor; template using GenericAdaptor = mfma_f32_32x32x16_fp8_fp8GenericAdaptor; using FoldAdaptor = GenericAdaptor<::llvm::ArrayRef<::mlir::Attribute>>; static constexpr int odsIndex_a = 0; static constexpr int odsIndex_b = 1; static constexpr int odsIndex_c = 2; using Properties = FoldAdaptor::Properties; static ::llvm::ArrayRef<::llvm::StringRef> getAttributeNames() { static ::llvm::StringRef attrNames[] = {::llvm::StringRef("abid"), ::llvm::StringRef("blgp"), ::llvm::StringRef("cbsz")}; return ::llvm::ArrayRef(attrNames); } ::mlir::StringAttr getAbidAttrName() { return getAttributeNameForIndex(0); } static ::mlir::StringAttr getAbidAttrName(::mlir::OperationName name) { return getAttributeNameForIndex(name, 0); } ::mlir::StringAttr getBlgpAttrName() { return getAttributeNameForIndex(1); } static ::mlir::StringAttr getBlgpAttrName(::mlir::OperationName name) { return getAttributeNameForIndex(name, 1); } ::mlir::StringAttr getCbszAttrName() { return getAttributeNameForIndex(2); } static ::mlir::StringAttr getCbszAttrName(::mlir::OperationName name) { return getAttributeNameForIndex(name, 2); } static constexpr ::llvm::StringLiteral getOperationName() { return ::llvm::StringLiteral("rocdl.mfma.f32.32x32x16.fp8.fp8"); } std::pair getODSOperandIndexAndLength(unsigned index) { return {index, 1}; } ::mlir::Operation::operand_range getODSOperands(unsigned index) { auto valueRange = getODSOperandIndexAndLength(index); return {std::next(getOperation()->operand_begin(), valueRange.first), std::next(getOperation()->operand_begin(), valueRange.first + valueRange.second)}; } ::mlir::TypedValue<::mlir::Type> getA() { return ::llvm::cast<::mlir::TypedValue<::mlir::Type>>(*getODSOperands(0).begin()); } ::mlir::TypedValue<::mlir::Type> getB() { return ::llvm::cast<::mlir::TypedValue<::mlir::Type>>(*getODSOperands(1).begin()); } ::mlir::TypedValue<::mlir::VectorType> getC() { return ::llvm::cast<::mlir::TypedValue<::mlir::VectorType>>(*getODSOperands(2).begin()); } ::mlir::OpOperand &getAMutable() { auto range = getODSOperandIndexAndLength(0); return getOperation()->getOpOperand(range.first); } ::mlir::OpOperand &getBMutable() { auto range = getODSOperandIndexAndLength(1); return getOperation()->getOpOperand(range.first); } ::mlir::OpOperand &getCMutable() { auto range = getODSOperandIndexAndLength(2); return getOperation()->getOpOperand(range.first); } std::pair getODSResultIndexAndLength(unsigned index) { return {index, 1}; } ::mlir::Operation::result_range getODSResults(unsigned index) { auto valueRange = getODSResultIndexAndLength(index); return {std::next(getOperation()->result_begin(), valueRange.first), std::next(getOperation()->result_begin(), valueRange.first + valueRange.second)}; } ::mlir::TypedValue<::mlir::VectorType> getRes() { return ::llvm::cast<::mlir::TypedValue<::mlir::VectorType>>(*getODSResults(0).begin()); } static ::llvm::LogicalResult setPropertiesFromAttr(Properties &prop, ::mlir::Attribute attr, ::llvm::function_ref<::mlir::InFlightDiagnostic()> emitError); static ::mlir::Attribute getPropertiesAsAttr(::mlir::MLIRContext *ctx, const Properties &prop); static llvm::hash_code computePropertiesHash(const Properties &prop); static std::optional getInherentAttr(::mlir::MLIRContext *ctx, const Properties &prop, llvm::StringRef name); static void setInherentAttr(Properties &prop, llvm::StringRef name, mlir::Attribute value); static void populateInherentAttrs(::mlir::MLIRContext *ctx, const Properties &prop, ::mlir::NamedAttrList &attrs); static ::llvm::LogicalResult verifyInherentAttrs(::mlir::OperationName opName, ::mlir::NamedAttrList &attrs, llvm::function_ref<::mlir::InFlightDiagnostic()> emitError); static ::llvm::LogicalResult readProperties(::mlir::DialectBytecodeReader &reader, ::mlir::OperationState &state); void writeProperties(::mlir::DialectBytecodeWriter &writer); ::mlir::IntegerAttr getCbszAttr() { return ::llvm::cast<::mlir::IntegerAttr>(getProperties().cbsz); } uint32_t getCbsz(); ::mlir::IntegerAttr getAbidAttr() { return ::llvm::cast<::mlir::IntegerAttr>(getProperties().abid); } uint32_t getAbid(); ::mlir::ROCDL::MFMAPermBAttr getBlgpAttr() { return ::llvm::cast<::mlir::ROCDL::MFMAPermBAttr>(getProperties().blgp); } ::mlir::ROCDL::MFMAPermB getBlgp(); void setCbszAttr(::mlir::IntegerAttr attr) { getProperties().cbsz = attr; } void setCbsz(uint32_t attrValue); void setAbidAttr(::mlir::IntegerAttr attr) { getProperties().abid = attr; } void setAbid(uint32_t attrValue); void setBlgpAttr(::mlir::ROCDL::MFMAPermBAttr attr) { getProperties().blgp = attr; } void setBlgp(::mlir::ROCDL::MFMAPermB attrValue); static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::Type res, ::mlir::Value a, ::mlir::Value b, ::mlir::Value c, ::mlir::IntegerAttr cbsz, ::mlir::IntegerAttr abid, ::mlir::ROCDL::MFMAPermBAttr blgp); static mfma_f32_32x32x16_fp8_fp8 create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::Type res, ::mlir::Value a, ::mlir::Value b, ::mlir::Value c, ::mlir::IntegerAttr cbsz, ::mlir::IntegerAttr abid, ::mlir::ROCDL::MFMAPermBAttr blgp); static mfma_f32_32x32x16_fp8_fp8 create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::Type res, ::mlir::Value a, ::mlir::Value b, ::mlir::Value c, ::mlir::IntegerAttr cbsz, ::mlir::IntegerAttr abid, ::mlir::ROCDL::MFMAPermBAttr blgp); static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::Value a, ::mlir::Value b, ::mlir::Value c, ::mlir::IntegerAttr cbsz, ::mlir::IntegerAttr abid, ::mlir::ROCDL::MFMAPermBAttr blgp); static mfma_f32_32x32x16_fp8_fp8 create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::Value a, ::mlir::Value b, ::mlir::Value c, ::mlir::IntegerAttr cbsz, ::mlir::IntegerAttr abid, ::mlir::ROCDL::MFMAPermBAttr blgp); static mfma_f32_32x32x16_fp8_fp8 create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::Value a, ::mlir::Value b, ::mlir::Value c, ::mlir::IntegerAttr cbsz, ::mlir::IntegerAttr abid, ::mlir::ROCDL::MFMAPermBAttr blgp); static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::Type res, ::mlir::Value a, ::mlir::Value b, ::mlir::Value c, uint32_t cbsz, uint32_t abid, ::mlir::ROCDL::MFMAPermB blgp); static mfma_f32_32x32x16_fp8_fp8 create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::Type res, ::mlir::Value a, ::mlir::Value b, ::mlir::Value c, uint32_t cbsz, uint32_t abid, ::mlir::ROCDL::MFMAPermB blgp); static mfma_f32_32x32x16_fp8_fp8 create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::Type res, ::mlir::Value a, ::mlir::Value b, ::mlir::Value c, uint32_t cbsz, uint32_t abid, ::mlir::ROCDL::MFMAPermB blgp); static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::Value a, ::mlir::Value b, ::mlir::Value c, uint32_t cbsz, uint32_t abid, ::mlir::ROCDL::MFMAPermB blgp); static mfma_f32_32x32x16_fp8_fp8 create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::Value a, ::mlir::Value b, ::mlir::Value c, uint32_t cbsz, uint32_t abid, ::mlir::ROCDL::MFMAPermB blgp); static mfma_f32_32x32x16_fp8_fp8 create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::Value a, ::mlir::Value b, ::mlir::Value c, uint32_t cbsz, uint32_t abid, ::mlir::ROCDL::MFMAPermB blgp); static void build(::mlir::OpBuilder &, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, ::llvm::ArrayRef<::mlir::NamedAttribute> attributes = {}); static mfma_f32_32x32x16_fp8_fp8 create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, ::llvm::ArrayRef<::mlir::NamedAttribute> attributes = {}); static mfma_f32_32x32x16_fp8_fp8 create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, ::llvm::ArrayRef<::mlir::NamedAttribute> attributes = {}); static void build(::mlir::OpBuilder &, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, const Properties &properties, ::llvm::ArrayRef<::mlir::NamedAttribute> discardableAttributes = {}); static mfma_f32_32x32x16_fp8_fp8 create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, const Properties &properties, ::llvm::ArrayRef<::mlir::NamedAttribute> discardableAttributes = {}); static mfma_f32_32x32x16_fp8_fp8 create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, const Properties &properties, ::llvm::ArrayRef<::mlir::NamedAttribute> discardableAttributes = {}); ::llvm::LogicalResult verifyInvariantsImpl(); ::llvm::LogicalResult verifyInvariants(); static ::mlir::ParseResult parse(::mlir::OpAsmParser &parser, ::mlir::OperationState &result); void print(::mlir::OpAsmPrinter &_odsPrinter); private: ::mlir::StringAttr getAttributeNameForIndex(unsigned index) { return getAttributeNameForIndex((*this)->getName(), index); } static ::mlir::StringAttr getAttributeNameForIndex(::mlir::OperationName name, unsigned index) { assert(index < 3 && "invalid attribute index"); assert(name.getStringRef() == getOperationName() && "invalid operation name"); assert(name.isRegistered() && "Operation isn't registered, missing a " "dependent dialect loading?"); return name.getAttributeNames()[index]; } public: }; } // namespace mlir::ROCDL MLIR_DECLARE_EXPLICIT_TYPE_ID(::mlir::ROCDL::mfma_f32_32x32x16_fp8_fp8) MLIR_DECLARE_EXPLICIT_TYPE_ID(::mlir::ROCDL::detail::mfma_f32_32x32x16_fp8_fp8GenericAdaptorBase::Properties) namespace mlir::ROCDL { //===----------------------------------------------------------------------===// // ::mlir::ROCDL::mfma_f32_32x32x1f32 declarations //===----------------------------------------------------------------------===// namespace detail { class mfma_f32_32x32x1f32GenericAdaptorBase { public: struct Properties { using abidTy = ::mlir::IntegerAttr; abidTy abid; auto getAbid() const { auto &propStorage = this->abid; return ::llvm::cast<::mlir::IntegerAttr>(propStorage); } void setAbid(const ::mlir::IntegerAttr &propValue) { this->abid = propValue; } using blgpTy = ::mlir::ROCDL::MFMAPermBAttr; blgpTy blgp; auto getBlgp() const { auto &propStorage = this->blgp; return ::llvm::cast<::mlir::ROCDL::MFMAPermBAttr>(propStorage); } void setBlgp(const ::mlir::ROCDL::MFMAPermBAttr &propValue) { this->blgp = propValue; } using cbszTy = ::mlir::IntegerAttr; cbszTy cbsz; auto getCbsz() const { auto &propStorage = this->cbsz; return ::llvm::cast<::mlir::IntegerAttr>(propStorage); } void setCbsz(const ::mlir::IntegerAttr &propValue) { this->cbsz = propValue; } bool operator==(const Properties &rhs) const { return rhs.abid == this->abid && rhs.blgp == this->blgp && rhs.cbsz == this->cbsz && true; } bool operator!=(const Properties &rhs) const { return !(*this == rhs); } }; protected: ::mlir::DictionaryAttr odsAttrs; ::std::optional<::mlir::OperationName> odsOpName; Properties properties; ::mlir::RegionRange odsRegions; public: mfma_f32_32x32x1f32GenericAdaptorBase(::mlir::DictionaryAttr attrs, const Properties &properties, ::mlir::RegionRange regions = {}) : odsAttrs(attrs), properties(properties), odsRegions(regions) { if (odsAttrs) odsOpName.emplace("rocdl.mfma.f32.32x32x1f32", odsAttrs.getContext()); } mfma_f32_32x32x1f32GenericAdaptorBase(mfma_f32_32x32x1f32 op); std::pair getODSOperandIndexAndLength(unsigned index, unsigned odsOperandsSize) { return {index, 1}; } const Properties &getProperties() { return properties; } ::mlir::DictionaryAttr getAttributes() { return odsAttrs; } ::mlir::IntegerAttr getCbszAttr() { auto attr = ::llvm::cast<::mlir::IntegerAttr>(getProperties().cbsz); return attr; } uint32_t getCbsz(); ::mlir::IntegerAttr getAbidAttr() { auto attr = ::llvm::cast<::mlir::IntegerAttr>(getProperties().abid); return attr; } uint32_t getAbid(); ::mlir::ROCDL::MFMAPermBAttr getBlgpAttr() { auto attr = ::llvm::cast<::mlir::ROCDL::MFMAPermBAttr>(getProperties().blgp); return attr; } ::mlir::ROCDL::MFMAPermB getBlgp(); }; } // namespace detail template class mfma_f32_32x32x1f32GenericAdaptor : public detail::mfma_f32_32x32x1f32GenericAdaptorBase { using ValueT = ::llvm::detail::ValueOfRange; using Base = detail::mfma_f32_32x32x1f32GenericAdaptorBase; static constexpr int odsIndex_a = 0; static constexpr int odsIndex_b = 1; static constexpr int odsIndex_c = 2; public: mfma_f32_32x32x1f32GenericAdaptor(RangeT values, ::mlir::DictionaryAttr attrs, const Properties &properties, ::mlir::RegionRange regions = {}) : Base(attrs, properties, regions), odsOperands(values) {} mfma_f32_32x32x1f32GenericAdaptor(RangeT values, ::mlir::DictionaryAttr attrs, ::mlir::PropertyRef properties, ::mlir::RegionRange regions = {}) : mfma_f32_32x32x1f32GenericAdaptor(values, attrs, (properties ? *properties.as() : Properties{}), regions) {} mfma_f32_32x32x1f32GenericAdaptor(RangeT values, ::mlir::DictionaryAttr attrs = nullptr) : mfma_f32_32x32x1f32GenericAdaptor(values, attrs, Properties{}, {}) {} mfma_f32_32x32x1f32GenericAdaptor(RangeT values, const mfma_f32_32x32x1f32GenericAdaptorBase &base) : Base(base), odsOperands(values) {} template >> mfma_f32_32x32x1f32GenericAdaptor(RangeT values, LateInst op) : Base(op), odsOperands(values) {} std::pair getODSOperandIndexAndLength(unsigned index) { return Base::getODSOperandIndexAndLength(index, odsOperands.size()); } RangeT getODSOperands(unsigned index) { auto valueRange = getODSOperandIndexAndLength(index); return {std::next(odsOperands.begin(), valueRange.first), std::next(odsOperands.begin(), valueRange.first + valueRange.second)}; } ValueT getA() { return (*getODSOperands(0).begin()); } ValueT getB() { return (*getODSOperands(1).begin()); } ValueT getC() { return (*getODSOperands(2).begin()); } RangeT getOperands() { return odsOperands; } private: RangeT odsOperands; }; class mfma_f32_32x32x1f32Adaptor : public mfma_f32_32x32x1f32GenericAdaptor<::mlir::ValueRange> { public: using mfma_f32_32x32x1f32GenericAdaptor::mfma_f32_32x32x1f32GenericAdaptor; mfma_f32_32x32x1f32Adaptor(mfma_f32_32x32x1f32 op); ::llvm::LogicalResult verify(::mlir::Location loc); }; class mfma_f32_32x32x1f32 : public ::mlir::Op::Impl, ::mlir::OpTrait::ZeroSuccessors, ::mlir::OpTrait::NOperands<3>::Impl, ::mlir::OpTrait::OpInvariants, ::mlir::BytecodeOpInterface::Trait> { public: using Op::Op; using Op::print; using Adaptor = mfma_f32_32x32x1f32Adaptor; template using GenericAdaptor = mfma_f32_32x32x1f32GenericAdaptor; using FoldAdaptor = GenericAdaptor<::llvm::ArrayRef<::mlir::Attribute>>; static constexpr int odsIndex_a = 0; static constexpr int odsIndex_b = 1; static constexpr int odsIndex_c = 2; using Properties = FoldAdaptor::Properties; static ::llvm::ArrayRef<::llvm::StringRef> getAttributeNames() { static ::llvm::StringRef attrNames[] = {::llvm::StringRef("abid"), ::llvm::StringRef("blgp"), ::llvm::StringRef("cbsz")}; return ::llvm::ArrayRef(attrNames); } ::mlir::StringAttr getAbidAttrName() { return getAttributeNameForIndex(0); } static ::mlir::StringAttr getAbidAttrName(::mlir::OperationName name) { return getAttributeNameForIndex(name, 0); } ::mlir::StringAttr getBlgpAttrName() { return getAttributeNameForIndex(1); } static ::mlir::StringAttr getBlgpAttrName(::mlir::OperationName name) { return getAttributeNameForIndex(name, 1); } ::mlir::StringAttr getCbszAttrName() { return getAttributeNameForIndex(2); } static ::mlir::StringAttr getCbszAttrName(::mlir::OperationName name) { return getAttributeNameForIndex(name, 2); } static constexpr ::llvm::StringLiteral getOperationName() { return ::llvm::StringLiteral("rocdl.mfma.f32.32x32x1f32"); } std::pair getODSOperandIndexAndLength(unsigned index) { return {index, 1}; } ::mlir::Operation::operand_range getODSOperands(unsigned index) { auto valueRange = getODSOperandIndexAndLength(index); return {std::next(getOperation()->operand_begin(), valueRange.first), std::next(getOperation()->operand_begin(), valueRange.first + valueRange.second)}; } ::mlir::TypedValue<::mlir::Type> getA() { return ::llvm::cast<::mlir::TypedValue<::mlir::Type>>(*getODSOperands(0).begin()); } ::mlir::TypedValue<::mlir::Type> getB() { return ::llvm::cast<::mlir::TypedValue<::mlir::Type>>(*getODSOperands(1).begin()); } ::mlir::TypedValue<::mlir::VectorType> getC() { return ::llvm::cast<::mlir::TypedValue<::mlir::VectorType>>(*getODSOperands(2).begin()); } ::mlir::OpOperand &getAMutable() { auto range = getODSOperandIndexAndLength(0); return getOperation()->getOpOperand(range.first); } ::mlir::OpOperand &getBMutable() { auto range = getODSOperandIndexAndLength(1); return getOperation()->getOpOperand(range.first); } ::mlir::OpOperand &getCMutable() { auto range = getODSOperandIndexAndLength(2); return getOperation()->getOpOperand(range.first); } std::pair getODSResultIndexAndLength(unsigned index) { return {index, 1}; } ::mlir::Operation::result_range getODSResults(unsigned index) { auto valueRange = getODSResultIndexAndLength(index); return {std::next(getOperation()->result_begin(), valueRange.first), std::next(getOperation()->result_begin(), valueRange.first + valueRange.second)}; } ::mlir::TypedValue<::mlir::VectorType> getRes() { return ::llvm::cast<::mlir::TypedValue<::mlir::VectorType>>(*getODSResults(0).begin()); } static ::llvm::LogicalResult setPropertiesFromAttr(Properties &prop, ::mlir::Attribute attr, ::llvm::function_ref<::mlir::InFlightDiagnostic()> emitError); static ::mlir::Attribute getPropertiesAsAttr(::mlir::MLIRContext *ctx, const Properties &prop); static llvm::hash_code computePropertiesHash(const Properties &prop); static std::optional getInherentAttr(::mlir::MLIRContext *ctx, const Properties &prop, llvm::StringRef name); static void setInherentAttr(Properties &prop, llvm::StringRef name, mlir::Attribute value); static void populateInherentAttrs(::mlir::MLIRContext *ctx, const Properties &prop, ::mlir::NamedAttrList &attrs); static ::llvm::LogicalResult verifyInherentAttrs(::mlir::OperationName opName, ::mlir::NamedAttrList &attrs, llvm::function_ref<::mlir::InFlightDiagnostic()> emitError); static ::llvm::LogicalResult readProperties(::mlir::DialectBytecodeReader &reader, ::mlir::OperationState &state); void writeProperties(::mlir::DialectBytecodeWriter &writer); ::mlir::IntegerAttr getCbszAttr() { return ::llvm::cast<::mlir::IntegerAttr>(getProperties().cbsz); } uint32_t getCbsz(); ::mlir::IntegerAttr getAbidAttr() { return ::llvm::cast<::mlir::IntegerAttr>(getProperties().abid); } uint32_t getAbid(); ::mlir::ROCDL::MFMAPermBAttr getBlgpAttr() { return ::llvm::cast<::mlir::ROCDL::MFMAPermBAttr>(getProperties().blgp); } ::mlir::ROCDL::MFMAPermB getBlgp(); void setCbszAttr(::mlir::IntegerAttr attr) { getProperties().cbsz = attr; } void setCbsz(uint32_t attrValue); void setAbidAttr(::mlir::IntegerAttr attr) { getProperties().abid = attr; } void setAbid(uint32_t attrValue); void setBlgpAttr(::mlir::ROCDL::MFMAPermBAttr attr) { getProperties().blgp = attr; } void setBlgp(::mlir::ROCDL::MFMAPermB attrValue); static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::Type res, ::mlir::Value a, ::mlir::Value b, ::mlir::Value c, ::mlir::IntegerAttr cbsz, ::mlir::IntegerAttr abid, ::mlir::ROCDL::MFMAPermBAttr blgp); static mfma_f32_32x32x1f32 create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::Type res, ::mlir::Value a, ::mlir::Value b, ::mlir::Value c, ::mlir::IntegerAttr cbsz, ::mlir::IntegerAttr abid, ::mlir::ROCDL::MFMAPermBAttr blgp); static mfma_f32_32x32x1f32 create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::Type res, ::mlir::Value a, ::mlir::Value b, ::mlir::Value c, ::mlir::IntegerAttr cbsz, ::mlir::IntegerAttr abid, ::mlir::ROCDL::MFMAPermBAttr blgp); static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::Value a, ::mlir::Value b, ::mlir::Value c, ::mlir::IntegerAttr cbsz, ::mlir::IntegerAttr abid, ::mlir::ROCDL::MFMAPermBAttr blgp); static mfma_f32_32x32x1f32 create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::Value a, ::mlir::Value b, ::mlir::Value c, ::mlir::IntegerAttr cbsz, ::mlir::IntegerAttr abid, ::mlir::ROCDL::MFMAPermBAttr blgp); static mfma_f32_32x32x1f32 create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::Value a, ::mlir::Value b, ::mlir::Value c, ::mlir::IntegerAttr cbsz, ::mlir::IntegerAttr abid, ::mlir::ROCDL::MFMAPermBAttr blgp); static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::Type res, ::mlir::Value a, ::mlir::Value b, ::mlir::Value c, uint32_t cbsz, uint32_t abid, ::mlir::ROCDL::MFMAPermB blgp); static mfma_f32_32x32x1f32 create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::Type res, ::mlir::Value a, ::mlir::Value b, ::mlir::Value c, uint32_t cbsz, uint32_t abid, ::mlir::ROCDL::MFMAPermB blgp); static mfma_f32_32x32x1f32 create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::Type res, ::mlir::Value a, ::mlir::Value b, ::mlir::Value c, uint32_t cbsz, uint32_t abid, ::mlir::ROCDL::MFMAPermB blgp); static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::Value a, ::mlir::Value b, ::mlir::Value c, uint32_t cbsz, uint32_t abid, ::mlir::ROCDL::MFMAPermB blgp); static mfma_f32_32x32x1f32 create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::Value a, ::mlir::Value b, ::mlir::Value c, uint32_t cbsz, uint32_t abid, ::mlir::ROCDL::MFMAPermB blgp); static mfma_f32_32x32x1f32 create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::Value a, ::mlir::Value b, ::mlir::Value c, uint32_t cbsz, uint32_t abid, ::mlir::ROCDL::MFMAPermB blgp); static void build(::mlir::OpBuilder &, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, ::llvm::ArrayRef<::mlir::NamedAttribute> attributes = {}); static mfma_f32_32x32x1f32 create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, ::llvm::ArrayRef<::mlir::NamedAttribute> attributes = {}); static mfma_f32_32x32x1f32 create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, ::llvm::ArrayRef<::mlir::NamedAttribute> attributes = {}); static void build(::mlir::OpBuilder &, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, const Properties &properties, ::llvm::ArrayRef<::mlir::NamedAttribute> discardableAttributes = {}); static mfma_f32_32x32x1f32 create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, const Properties &properties, ::llvm::ArrayRef<::mlir::NamedAttribute> discardableAttributes = {}); static mfma_f32_32x32x1f32 create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, const Properties &properties, ::llvm::ArrayRef<::mlir::NamedAttribute> discardableAttributes = {}); ::llvm::LogicalResult verifyInvariantsImpl(); ::llvm::LogicalResult verifyInvariants(); static ::mlir::ParseResult parse(::mlir::OpAsmParser &parser, ::mlir::OperationState &result); void print(::mlir::OpAsmPrinter &_odsPrinter); private: ::mlir::StringAttr getAttributeNameForIndex(unsigned index) { return getAttributeNameForIndex((*this)->getName(), index); } static ::mlir::StringAttr getAttributeNameForIndex(::mlir::OperationName name, unsigned index) { assert(index < 3 && "invalid attribute index"); assert(name.getStringRef() == getOperationName() && "invalid operation name"); assert(name.isRegistered() && "Operation isn't registered, missing a " "dependent dialect loading?"); return name.getAttributeNames()[index]; } public: }; } // namespace mlir::ROCDL MLIR_DECLARE_EXPLICIT_TYPE_ID(::mlir::ROCDL::mfma_f32_32x32x1f32) MLIR_DECLARE_EXPLICIT_TYPE_ID(::mlir::ROCDL::detail::mfma_f32_32x32x1f32GenericAdaptorBase::Properties) namespace mlir::ROCDL { //===----------------------------------------------------------------------===// // ::mlir::ROCDL::mfma_f32_32x32x2bf16 declarations //===----------------------------------------------------------------------===// namespace detail { class mfma_f32_32x32x2bf16GenericAdaptorBase { public: struct Properties { using abidTy = ::mlir::IntegerAttr; abidTy abid; auto getAbid() const { auto &propStorage = this->abid; return ::llvm::cast<::mlir::IntegerAttr>(propStorage); } void setAbid(const ::mlir::IntegerAttr &propValue) { this->abid = propValue; } using blgpTy = ::mlir::ROCDL::MFMAPermBAttr; blgpTy blgp; auto getBlgp() const { auto &propStorage = this->blgp; return ::llvm::cast<::mlir::ROCDL::MFMAPermBAttr>(propStorage); } void setBlgp(const ::mlir::ROCDL::MFMAPermBAttr &propValue) { this->blgp = propValue; } using cbszTy = ::mlir::IntegerAttr; cbszTy cbsz; auto getCbsz() const { auto &propStorage = this->cbsz; return ::llvm::cast<::mlir::IntegerAttr>(propStorage); } void setCbsz(const ::mlir::IntegerAttr &propValue) { this->cbsz = propValue; } bool operator==(const Properties &rhs) const { return rhs.abid == this->abid && rhs.blgp == this->blgp && rhs.cbsz == this->cbsz && true; } bool operator!=(const Properties &rhs) const { return !(*this == rhs); } }; protected: ::mlir::DictionaryAttr odsAttrs; ::std::optional<::mlir::OperationName> odsOpName; Properties properties; ::mlir::RegionRange odsRegions; public: mfma_f32_32x32x2bf16GenericAdaptorBase(::mlir::DictionaryAttr attrs, const Properties &properties, ::mlir::RegionRange regions = {}) : odsAttrs(attrs), properties(properties), odsRegions(regions) { if (odsAttrs) odsOpName.emplace("rocdl.mfma.f32.32x32x2bf16", odsAttrs.getContext()); } mfma_f32_32x32x2bf16GenericAdaptorBase(mfma_f32_32x32x2bf16 op); std::pair getODSOperandIndexAndLength(unsigned index, unsigned odsOperandsSize) { return {index, 1}; } const Properties &getProperties() { return properties; } ::mlir::DictionaryAttr getAttributes() { return odsAttrs; } ::mlir::IntegerAttr getCbszAttr() { auto attr = ::llvm::cast<::mlir::IntegerAttr>(getProperties().cbsz); return attr; } uint32_t getCbsz(); ::mlir::IntegerAttr getAbidAttr() { auto attr = ::llvm::cast<::mlir::IntegerAttr>(getProperties().abid); return attr; } uint32_t getAbid(); ::mlir::ROCDL::MFMAPermBAttr getBlgpAttr() { auto attr = ::llvm::cast<::mlir::ROCDL::MFMAPermBAttr>(getProperties().blgp); return attr; } ::mlir::ROCDL::MFMAPermB getBlgp(); }; } // namespace detail template class mfma_f32_32x32x2bf16GenericAdaptor : public detail::mfma_f32_32x32x2bf16GenericAdaptorBase { using ValueT = ::llvm::detail::ValueOfRange; using Base = detail::mfma_f32_32x32x2bf16GenericAdaptorBase; static constexpr int odsIndex_a = 0; static constexpr int odsIndex_b = 1; static constexpr int odsIndex_c = 2; public: mfma_f32_32x32x2bf16GenericAdaptor(RangeT values, ::mlir::DictionaryAttr attrs, const Properties &properties, ::mlir::RegionRange regions = {}) : Base(attrs, properties, regions), odsOperands(values) {} mfma_f32_32x32x2bf16GenericAdaptor(RangeT values, ::mlir::DictionaryAttr attrs, ::mlir::PropertyRef properties, ::mlir::RegionRange regions = {}) : mfma_f32_32x32x2bf16GenericAdaptor(values, attrs, (properties ? *properties.as() : Properties{}), regions) {} mfma_f32_32x32x2bf16GenericAdaptor(RangeT values, ::mlir::DictionaryAttr attrs = nullptr) : mfma_f32_32x32x2bf16GenericAdaptor(values, attrs, Properties{}, {}) {} mfma_f32_32x32x2bf16GenericAdaptor(RangeT values, const mfma_f32_32x32x2bf16GenericAdaptorBase &base) : Base(base), odsOperands(values) {} template >> mfma_f32_32x32x2bf16GenericAdaptor(RangeT values, LateInst op) : Base(op), odsOperands(values) {} std::pair getODSOperandIndexAndLength(unsigned index) { return Base::getODSOperandIndexAndLength(index, odsOperands.size()); } RangeT getODSOperands(unsigned index) { auto valueRange = getODSOperandIndexAndLength(index); return {std::next(odsOperands.begin(), valueRange.first), std::next(odsOperands.begin(), valueRange.first + valueRange.second)}; } ValueT getA() { return (*getODSOperands(0).begin()); } ValueT getB() { return (*getODSOperands(1).begin()); } ValueT getC() { return (*getODSOperands(2).begin()); } RangeT getOperands() { return odsOperands; } private: RangeT odsOperands; }; class mfma_f32_32x32x2bf16Adaptor : public mfma_f32_32x32x2bf16GenericAdaptor<::mlir::ValueRange> { public: using mfma_f32_32x32x2bf16GenericAdaptor::mfma_f32_32x32x2bf16GenericAdaptor; mfma_f32_32x32x2bf16Adaptor(mfma_f32_32x32x2bf16 op); ::llvm::LogicalResult verify(::mlir::Location loc); }; class mfma_f32_32x32x2bf16 : public ::mlir::Op::Impl, ::mlir::OpTrait::ZeroSuccessors, ::mlir::OpTrait::NOperands<3>::Impl, ::mlir::OpTrait::OpInvariants, ::mlir::BytecodeOpInterface::Trait> { public: using Op::Op; using Op::print; using Adaptor = mfma_f32_32x32x2bf16Adaptor; template using GenericAdaptor = mfma_f32_32x32x2bf16GenericAdaptor; using FoldAdaptor = GenericAdaptor<::llvm::ArrayRef<::mlir::Attribute>>; static constexpr int odsIndex_a = 0; static constexpr int odsIndex_b = 1; static constexpr int odsIndex_c = 2; using Properties = FoldAdaptor::Properties; static ::llvm::ArrayRef<::llvm::StringRef> getAttributeNames() { static ::llvm::StringRef attrNames[] = {::llvm::StringRef("abid"), ::llvm::StringRef("blgp"), ::llvm::StringRef("cbsz")}; return ::llvm::ArrayRef(attrNames); } ::mlir::StringAttr getAbidAttrName() { return getAttributeNameForIndex(0); } static ::mlir::StringAttr getAbidAttrName(::mlir::OperationName name) { return getAttributeNameForIndex(name, 0); } ::mlir::StringAttr getBlgpAttrName() { return getAttributeNameForIndex(1); } static ::mlir::StringAttr getBlgpAttrName(::mlir::OperationName name) { return getAttributeNameForIndex(name, 1); } ::mlir::StringAttr getCbszAttrName() { return getAttributeNameForIndex(2); } static ::mlir::StringAttr getCbszAttrName(::mlir::OperationName name) { return getAttributeNameForIndex(name, 2); } static constexpr ::llvm::StringLiteral getOperationName() { return ::llvm::StringLiteral("rocdl.mfma.f32.32x32x2bf16"); } std::pair getODSOperandIndexAndLength(unsigned index) { return {index, 1}; } ::mlir::Operation::operand_range getODSOperands(unsigned index) { auto valueRange = getODSOperandIndexAndLength(index); return {std::next(getOperation()->operand_begin(), valueRange.first), std::next(getOperation()->operand_begin(), valueRange.first + valueRange.second)}; } ::mlir::TypedValue<::mlir::VectorType> getA() { return ::llvm::cast<::mlir::TypedValue<::mlir::VectorType>>(*getODSOperands(0).begin()); } ::mlir::TypedValue<::mlir::VectorType> getB() { return ::llvm::cast<::mlir::TypedValue<::mlir::VectorType>>(*getODSOperands(1).begin()); } ::mlir::TypedValue<::mlir::VectorType> getC() { return ::llvm::cast<::mlir::TypedValue<::mlir::VectorType>>(*getODSOperands(2).begin()); } ::mlir::OpOperand &getAMutable() { auto range = getODSOperandIndexAndLength(0); return getOperation()->getOpOperand(range.first); } ::mlir::OpOperand &getBMutable() { auto range = getODSOperandIndexAndLength(1); return getOperation()->getOpOperand(range.first); } ::mlir::OpOperand &getCMutable() { auto range = getODSOperandIndexAndLength(2); return getOperation()->getOpOperand(range.first); } std::pair getODSResultIndexAndLength(unsigned index) { return {index, 1}; } ::mlir::Operation::result_range getODSResults(unsigned index) { auto valueRange = getODSResultIndexAndLength(index); return {std::next(getOperation()->result_begin(), valueRange.first), std::next(getOperation()->result_begin(), valueRange.first + valueRange.second)}; } ::mlir::TypedValue<::mlir::VectorType> getRes() { return ::llvm::cast<::mlir::TypedValue<::mlir::VectorType>>(*getODSResults(0).begin()); } static ::llvm::LogicalResult setPropertiesFromAttr(Properties &prop, ::mlir::Attribute attr, ::llvm::function_ref<::mlir::InFlightDiagnostic()> emitError); static ::mlir::Attribute getPropertiesAsAttr(::mlir::MLIRContext *ctx, const Properties &prop); static llvm::hash_code computePropertiesHash(const Properties &prop); static std::optional getInherentAttr(::mlir::MLIRContext *ctx, const Properties &prop, llvm::StringRef name); static void setInherentAttr(Properties &prop, llvm::StringRef name, mlir::Attribute value); static void populateInherentAttrs(::mlir::MLIRContext *ctx, const Properties &prop, ::mlir::NamedAttrList &attrs); static ::llvm::LogicalResult verifyInherentAttrs(::mlir::OperationName opName, ::mlir::NamedAttrList &attrs, llvm::function_ref<::mlir::InFlightDiagnostic()> emitError); static ::llvm::LogicalResult readProperties(::mlir::DialectBytecodeReader &reader, ::mlir::OperationState &state); void writeProperties(::mlir::DialectBytecodeWriter &writer); ::mlir::IntegerAttr getCbszAttr() { return ::llvm::cast<::mlir::IntegerAttr>(getProperties().cbsz); } uint32_t getCbsz(); ::mlir::IntegerAttr getAbidAttr() { return ::llvm::cast<::mlir::IntegerAttr>(getProperties().abid); } uint32_t getAbid(); ::mlir::ROCDL::MFMAPermBAttr getBlgpAttr() { return ::llvm::cast<::mlir::ROCDL::MFMAPermBAttr>(getProperties().blgp); } ::mlir::ROCDL::MFMAPermB getBlgp(); void setCbszAttr(::mlir::IntegerAttr attr) { getProperties().cbsz = attr; } void setCbsz(uint32_t attrValue); void setAbidAttr(::mlir::IntegerAttr attr) { getProperties().abid = attr; } void setAbid(uint32_t attrValue); void setBlgpAttr(::mlir::ROCDL::MFMAPermBAttr attr) { getProperties().blgp = attr; } void setBlgp(::mlir::ROCDL::MFMAPermB attrValue); static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::Type res, ::mlir::Value a, ::mlir::Value b, ::mlir::Value c, ::mlir::IntegerAttr cbsz, ::mlir::IntegerAttr abid, ::mlir::ROCDL::MFMAPermBAttr blgp); static mfma_f32_32x32x2bf16 create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::Type res, ::mlir::Value a, ::mlir::Value b, ::mlir::Value c, ::mlir::IntegerAttr cbsz, ::mlir::IntegerAttr abid, ::mlir::ROCDL::MFMAPermBAttr blgp); static mfma_f32_32x32x2bf16 create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::Type res, ::mlir::Value a, ::mlir::Value b, ::mlir::Value c, ::mlir::IntegerAttr cbsz, ::mlir::IntegerAttr abid, ::mlir::ROCDL::MFMAPermBAttr blgp); static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::Value a, ::mlir::Value b, ::mlir::Value c, ::mlir::IntegerAttr cbsz, ::mlir::IntegerAttr abid, ::mlir::ROCDL::MFMAPermBAttr blgp); static mfma_f32_32x32x2bf16 create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::Value a, ::mlir::Value b, ::mlir::Value c, ::mlir::IntegerAttr cbsz, ::mlir::IntegerAttr abid, ::mlir::ROCDL::MFMAPermBAttr blgp); static mfma_f32_32x32x2bf16 create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::Value a, ::mlir::Value b, ::mlir::Value c, ::mlir::IntegerAttr cbsz, ::mlir::IntegerAttr abid, ::mlir::ROCDL::MFMAPermBAttr blgp); static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::Type res, ::mlir::Value a, ::mlir::Value b, ::mlir::Value c, uint32_t cbsz, uint32_t abid, ::mlir::ROCDL::MFMAPermB blgp); static mfma_f32_32x32x2bf16 create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::Type res, ::mlir::Value a, ::mlir::Value b, ::mlir::Value c, uint32_t cbsz, uint32_t abid, ::mlir::ROCDL::MFMAPermB blgp); static mfma_f32_32x32x2bf16 create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::Type res, ::mlir::Value a, ::mlir::Value b, ::mlir::Value c, uint32_t cbsz, uint32_t abid, ::mlir::ROCDL::MFMAPermB blgp); static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::Value a, ::mlir::Value b, ::mlir::Value c, uint32_t cbsz, uint32_t abid, ::mlir::ROCDL::MFMAPermB blgp); static mfma_f32_32x32x2bf16 create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::Value a, ::mlir::Value b, ::mlir::Value c, uint32_t cbsz, uint32_t abid, ::mlir::ROCDL::MFMAPermB blgp); static mfma_f32_32x32x2bf16 create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::Value a, ::mlir::Value b, ::mlir::Value c, uint32_t cbsz, uint32_t abid, ::mlir::ROCDL::MFMAPermB blgp); static void build(::mlir::OpBuilder &, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, ::llvm::ArrayRef<::mlir::NamedAttribute> attributes = {}); static mfma_f32_32x32x2bf16 create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, ::llvm::ArrayRef<::mlir::NamedAttribute> attributes = {}); static mfma_f32_32x32x2bf16 create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, ::llvm::ArrayRef<::mlir::NamedAttribute> attributes = {}); static void build(::mlir::OpBuilder &, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, const Properties &properties, ::llvm::ArrayRef<::mlir::NamedAttribute> discardableAttributes = {}); static mfma_f32_32x32x2bf16 create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, const Properties &properties, ::llvm::ArrayRef<::mlir::NamedAttribute> discardableAttributes = {}); static mfma_f32_32x32x2bf16 create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, const Properties &properties, ::llvm::ArrayRef<::mlir::NamedAttribute> discardableAttributes = {}); ::llvm::LogicalResult verifyInvariantsImpl(); ::llvm::LogicalResult verifyInvariants(); static ::mlir::ParseResult parse(::mlir::OpAsmParser &parser, ::mlir::OperationState &result); void print(::mlir::OpAsmPrinter &_odsPrinter); private: ::mlir::StringAttr getAttributeNameForIndex(unsigned index) { return getAttributeNameForIndex((*this)->getName(), index); } static ::mlir::StringAttr getAttributeNameForIndex(::mlir::OperationName name, unsigned index) { assert(index < 3 && "invalid attribute index"); assert(name.getStringRef() == getOperationName() && "invalid operation name"); assert(name.isRegistered() && "Operation isn't registered, missing a " "dependent dialect loading?"); return name.getAttributeNames()[index]; } public: }; } // namespace mlir::ROCDL MLIR_DECLARE_EXPLICIT_TYPE_ID(::mlir::ROCDL::mfma_f32_32x32x2bf16) MLIR_DECLARE_EXPLICIT_TYPE_ID(::mlir::ROCDL::detail::mfma_f32_32x32x2bf16GenericAdaptorBase::Properties) namespace mlir::ROCDL { //===----------------------------------------------------------------------===// // ::mlir::ROCDL::mfma_f32_32x32x2f32 declarations //===----------------------------------------------------------------------===// namespace detail { class mfma_f32_32x32x2f32GenericAdaptorBase { public: struct Properties { using abidTy = ::mlir::IntegerAttr; abidTy abid; auto getAbid() const { auto &propStorage = this->abid; return ::llvm::cast<::mlir::IntegerAttr>(propStorage); } void setAbid(const ::mlir::IntegerAttr &propValue) { this->abid = propValue; } using blgpTy = ::mlir::ROCDL::MFMAPermBAttr; blgpTy blgp; auto getBlgp() const { auto &propStorage = this->blgp; return ::llvm::cast<::mlir::ROCDL::MFMAPermBAttr>(propStorage); } void setBlgp(const ::mlir::ROCDL::MFMAPermBAttr &propValue) { this->blgp = propValue; } using cbszTy = ::mlir::IntegerAttr; cbszTy cbsz; auto getCbsz() const { auto &propStorage = this->cbsz; return ::llvm::cast<::mlir::IntegerAttr>(propStorage); } void setCbsz(const ::mlir::IntegerAttr &propValue) { this->cbsz = propValue; } bool operator==(const Properties &rhs) const { return rhs.abid == this->abid && rhs.blgp == this->blgp && rhs.cbsz == this->cbsz && true; } bool operator!=(const Properties &rhs) const { return !(*this == rhs); } }; protected: ::mlir::DictionaryAttr odsAttrs; ::std::optional<::mlir::OperationName> odsOpName; Properties properties; ::mlir::RegionRange odsRegions; public: mfma_f32_32x32x2f32GenericAdaptorBase(::mlir::DictionaryAttr attrs, const Properties &properties, ::mlir::RegionRange regions = {}) : odsAttrs(attrs), properties(properties), odsRegions(regions) { if (odsAttrs) odsOpName.emplace("rocdl.mfma.f32.32x32x2f32", odsAttrs.getContext()); } mfma_f32_32x32x2f32GenericAdaptorBase(mfma_f32_32x32x2f32 op); std::pair getODSOperandIndexAndLength(unsigned index, unsigned odsOperandsSize) { return {index, 1}; } const Properties &getProperties() { return properties; } ::mlir::DictionaryAttr getAttributes() { return odsAttrs; } ::mlir::IntegerAttr getCbszAttr() { auto attr = ::llvm::cast<::mlir::IntegerAttr>(getProperties().cbsz); return attr; } uint32_t getCbsz(); ::mlir::IntegerAttr getAbidAttr() { auto attr = ::llvm::cast<::mlir::IntegerAttr>(getProperties().abid); return attr; } uint32_t getAbid(); ::mlir::ROCDL::MFMAPermBAttr getBlgpAttr() { auto attr = ::llvm::cast<::mlir::ROCDL::MFMAPermBAttr>(getProperties().blgp); return attr; } ::mlir::ROCDL::MFMAPermB getBlgp(); }; } // namespace detail template class mfma_f32_32x32x2f32GenericAdaptor : public detail::mfma_f32_32x32x2f32GenericAdaptorBase { using ValueT = ::llvm::detail::ValueOfRange; using Base = detail::mfma_f32_32x32x2f32GenericAdaptorBase; static constexpr int odsIndex_a = 0; static constexpr int odsIndex_b = 1; static constexpr int odsIndex_c = 2; public: mfma_f32_32x32x2f32GenericAdaptor(RangeT values, ::mlir::DictionaryAttr attrs, const Properties &properties, ::mlir::RegionRange regions = {}) : Base(attrs, properties, regions), odsOperands(values) {} mfma_f32_32x32x2f32GenericAdaptor(RangeT values, ::mlir::DictionaryAttr attrs, ::mlir::PropertyRef properties, ::mlir::RegionRange regions = {}) : mfma_f32_32x32x2f32GenericAdaptor(values, attrs, (properties ? *properties.as() : Properties{}), regions) {} mfma_f32_32x32x2f32GenericAdaptor(RangeT values, ::mlir::DictionaryAttr attrs = nullptr) : mfma_f32_32x32x2f32GenericAdaptor(values, attrs, Properties{}, {}) {} mfma_f32_32x32x2f32GenericAdaptor(RangeT values, const mfma_f32_32x32x2f32GenericAdaptorBase &base) : Base(base), odsOperands(values) {} template >> mfma_f32_32x32x2f32GenericAdaptor(RangeT values, LateInst op) : Base(op), odsOperands(values) {} std::pair getODSOperandIndexAndLength(unsigned index) { return Base::getODSOperandIndexAndLength(index, odsOperands.size()); } RangeT getODSOperands(unsigned index) { auto valueRange = getODSOperandIndexAndLength(index); return {std::next(odsOperands.begin(), valueRange.first), std::next(odsOperands.begin(), valueRange.first + valueRange.second)}; } ValueT getA() { return (*getODSOperands(0).begin()); } ValueT getB() { return (*getODSOperands(1).begin()); } ValueT getC() { return (*getODSOperands(2).begin()); } RangeT getOperands() { return odsOperands; } private: RangeT odsOperands; }; class mfma_f32_32x32x2f32Adaptor : public mfma_f32_32x32x2f32GenericAdaptor<::mlir::ValueRange> { public: using mfma_f32_32x32x2f32GenericAdaptor::mfma_f32_32x32x2f32GenericAdaptor; mfma_f32_32x32x2f32Adaptor(mfma_f32_32x32x2f32 op); ::llvm::LogicalResult verify(::mlir::Location loc); }; class mfma_f32_32x32x2f32 : public ::mlir::Op::Impl, ::mlir::OpTrait::ZeroSuccessors, ::mlir::OpTrait::NOperands<3>::Impl, ::mlir::OpTrait::OpInvariants, ::mlir::BytecodeOpInterface::Trait> { public: using Op::Op; using Op::print; using Adaptor = mfma_f32_32x32x2f32Adaptor; template using GenericAdaptor = mfma_f32_32x32x2f32GenericAdaptor; using FoldAdaptor = GenericAdaptor<::llvm::ArrayRef<::mlir::Attribute>>; static constexpr int odsIndex_a = 0; static constexpr int odsIndex_b = 1; static constexpr int odsIndex_c = 2; using Properties = FoldAdaptor::Properties; static ::llvm::ArrayRef<::llvm::StringRef> getAttributeNames() { static ::llvm::StringRef attrNames[] = {::llvm::StringRef("abid"), ::llvm::StringRef("blgp"), ::llvm::StringRef("cbsz")}; return ::llvm::ArrayRef(attrNames); } ::mlir::StringAttr getAbidAttrName() { return getAttributeNameForIndex(0); } static ::mlir::StringAttr getAbidAttrName(::mlir::OperationName name) { return getAttributeNameForIndex(name, 0); } ::mlir::StringAttr getBlgpAttrName() { return getAttributeNameForIndex(1); } static ::mlir::StringAttr getBlgpAttrName(::mlir::OperationName name) { return getAttributeNameForIndex(name, 1); } ::mlir::StringAttr getCbszAttrName() { return getAttributeNameForIndex(2); } static ::mlir::StringAttr getCbszAttrName(::mlir::OperationName name) { return getAttributeNameForIndex(name, 2); } static constexpr ::llvm::StringLiteral getOperationName() { return ::llvm::StringLiteral("rocdl.mfma.f32.32x32x2f32"); } std::pair getODSOperandIndexAndLength(unsigned index) { return {index, 1}; } ::mlir::Operation::operand_range getODSOperands(unsigned index) { auto valueRange = getODSOperandIndexAndLength(index); return {std::next(getOperation()->operand_begin(), valueRange.first), std::next(getOperation()->operand_begin(), valueRange.first + valueRange.second)}; } ::mlir::TypedValue<::mlir::Type> getA() { return ::llvm::cast<::mlir::TypedValue<::mlir::Type>>(*getODSOperands(0).begin()); } ::mlir::TypedValue<::mlir::Type> getB() { return ::llvm::cast<::mlir::TypedValue<::mlir::Type>>(*getODSOperands(1).begin()); } ::mlir::TypedValue<::mlir::VectorType> getC() { return ::llvm::cast<::mlir::TypedValue<::mlir::VectorType>>(*getODSOperands(2).begin()); } ::mlir::OpOperand &getAMutable() { auto range = getODSOperandIndexAndLength(0); return getOperation()->getOpOperand(range.first); } ::mlir::OpOperand &getBMutable() { auto range = getODSOperandIndexAndLength(1); return getOperation()->getOpOperand(range.first); } ::mlir::OpOperand &getCMutable() { auto range = getODSOperandIndexAndLength(2); return getOperation()->getOpOperand(range.first); } std::pair getODSResultIndexAndLength(unsigned index) { return {index, 1}; } ::mlir::Operation::result_range getODSResults(unsigned index) { auto valueRange = getODSResultIndexAndLength(index); return {std::next(getOperation()->result_begin(), valueRange.first), std::next(getOperation()->result_begin(), valueRange.first + valueRange.second)}; } ::mlir::TypedValue<::mlir::VectorType> getRes() { return ::llvm::cast<::mlir::TypedValue<::mlir::VectorType>>(*getODSResults(0).begin()); } static ::llvm::LogicalResult setPropertiesFromAttr(Properties &prop, ::mlir::Attribute attr, ::llvm::function_ref<::mlir::InFlightDiagnostic()> emitError); static ::mlir::Attribute getPropertiesAsAttr(::mlir::MLIRContext *ctx, const Properties &prop); static llvm::hash_code computePropertiesHash(const Properties &prop); static std::optional getInherentAttr(::mlir::MLIRContext *ctx, const Properties &prop, llvm::StringRef name); static void setInherentAttr(Properties &prop, llvm::StringRef name, mlir::Attribute value); static void populateInherentAttrs(::mlir::MLIRContext *ctx, const Properties &prop, ::mlir::NamedAttrList &attrs); static ::llvm::LogicalResult verifyInherentAttrs(::mlir::OperationName opName, ::mlir::NamedAttrList &attrs, llvm::function_ref<::mlir::InFlightDiagnostic()> emitError); static ::llvm::LogicalResult readProperties(::mlir::DialectBytecodeReader &reader, ::mlir::OperationState &state); void writeProperties(::mlir::DialectBytecodeWriter &writer); ::mlir::IntegerAttr getCbszAttr() { return ::llvm::cast<::mlir::IntegerAttr>(getProperties().cbsz); } uint32_t getCbsz(); ::mlir::IntegerAttr getAbidAttr() { return ::llvm::cast<::mlir::IntegerAttr>(getProperties().abid); } uint32_t getAbid(); ::mlir::ROCDL::MFMAPermBAttr getBlgpAttr() { return ::llvm::cast<::mlir::ROCDL::MFMAPermBAttr>(getProperties().blgp); } ::mlir::ROCDL::MFMAPermB getBlgp(); void setCbszAttr(::mlir::IntegerAttr attr) { getProperties().cbsz = attr; } void setCbsz(uint32_t attrValue); void setAbidAttr(::mlir::IntegerAttr attr) { getProperties().abid = attr; } void setAbid(uint32_t attrValue); void setBlgpAttr(::mlir::ROCDL::MFMAPermBAttr attr) { getProperties().blgp = attr; } void setBlgp(::mlir::ROCDL::MFMAPermB attrValue); static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::Type res, ::mlir::Value a, ::mlir::Value b, ::mlir::Value c, ::mlir::IntegerAttr cbsz, ::mlir::IntegerAttr abid, ::mlir::ROCDL::MFMAPermBAttr blgp); static mfma_f32_32x32x2f32 create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::Type res, ::mlir::Value a, ::mlir::Value b, ::mlir::Value c, ::mlir::IntegerAttr cbsz, ::mlir::IntegerAttr abid, ::mlir::ROCDL::MFMAPermBAttr blgp); static mfma_f32_32x32x2f32 create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::Type res, ::mlir::Value a, ::mlir::Value b, ::mlir::Value c, ::mlir::IntegerAttr cbsz, ::mlir::IntegerAttr abid, ::mlir::ROCDL::MFMAPermBAttr blgp); static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::Value a, ::mlir::Value b, ::mlir::Value c, ::mlir::IntegerAttr cbsz, ::mlir::IntegerAttr abid, ::mlir::ROCDL::MFMAPermBAttr blgp); static mfma_f32_32x32x2f32 create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::Value a, ::mlir::Value b, ::mlir::Value c, ::mlir::IntegerAttr cbsz, ::mlir::IntegerAttr abid, ::mlir::ROCDL::MFMAPermBAttr blgp); static mfma_f32_32x32x2f32 create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::Value a, ::mlir::Value b, ::mlir::Value c, ::mlir::IntegerAttr cbsz, ::mlir::IntegerAttr abid, ::mlir::ROCDL::MFMAPermBAttr blgp); static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::Type res, ::mlir::Value a, ::mlir::Value b, ::mlir::Value c, uint32_t cbsz, uint32_t abid, ::mlir::ROCDL::MFMAPermB blgp); static mfma_f32_32x32x2f32 create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::Type res, ::mlir::Value a, ::mlir::Value b, ::mlir::Value c, uint32_t cbsz, uint32_t abid, ::mlir::ROCDL::MFMAPermB blgp); static mfma_f32_32x32x2f32 create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::Type res, ::mlir::Value a, ::mlir::Value b, ::mlir::Value c, uint32_t cbsz, uint32_t abid, ::mlir::ROCDL::MFMAPermB blgp); static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::Value a, ::mlir::Value b, ::mlir::Value c, uint32_t cbsz, uint32_t abid, ::mlir::ROCDL::MFMAPermB blgp); static mfma_f32_32x32x2f32 create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::Value a, ::mlir::Value b, ::mlir::Value c, uint32_t cbsz, uint32_t abid, ::mlir::ROCDL::MFMAPermB blgp); static mfma_f32_32x32x2f32 create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::Value a, ::mlir::Value b, ::mlir::Value c, uint32_t cbsz, uint32_t abid, ::mlir::ROCDL::MFMAPermB blgp); static void build(::mlir::OpBuilder &, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, ::llvm::ArrayRef<::mlir::NamedAttribute> attributes = {}); static mfma_f32_32x32x2f32 create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, ::llvm::ArrayRef<::mlir::NamedAttribute> attributes = {}); static mfma_f32_32x32x2f32 create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, ::llvm::ArrayRef<::mlir::NamedAttribute> attributes = {}); static void build(::mlir::OpBuilder &, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, const Properties &properties, ::llvm::ArrayRef<::mlir::NamedAttribute> discardableAttributes = {}); static mfma_f32_32x32x2f32 create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, const Properties &properties, ::llvm::ArrayRef<::mlir::NamedAttribute> discardableAttributes = {}); static mfma_f32_32x32x2f32 create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, const Properties &properties, ::llvm::ArrayRef<::mlir::NamedAttribute> discardableAttributes = {}); ::llvm::LogicalResult verifyInvariantsImpl(); ::llvm::LogicalResult verifyInvariants(); static ::mlir::ParseResult parse(::mlir::OpAsmParser &parser, ::mlir::OperationState &result); void print(::mlir::OpAsmPrinter &_odsPrinter); private: ::mlir::StringAttr getAttributeNameForIndex(unsigned index) { return getAttributeNameForIndex((*this)->getName(), index); } static ::mlir::StringAttr getAttributeNameForIndex(::mlir::OperationName name, unsigned index) { assert(index < 3 && "invalid attribute index"); assert(name.getStringRef() == getOperationName() && "invalid operation name"); assert(name.isRegistered() && "Operation isn't registered, missing a " "dependent dialect loading?"); return name.getAttributeNames()[index]; } public: }; } // namespace mlir::ROCDL MLIR_DECLARE_EXPLICIT_TYPE_ID(::mlir::ROCDL::mfma_f32_32x32x2f32) MLIR_DECLARE_EXPLICIT_TYPE_ID(::mlir::ROCDL::detail::mfma_f32_32x32x2f32GenericAdaptorBase::Properties) namespace mlir::ROCDL { //===----------------------------------------------------------------------===// // ::mlir::ROCDL::mfma_f32_32x32x4_xf32 declarations //===----------------------------------------------------------------------===// namespace detail { class mfma_f32_32x32x4_xf32GenericAdaptorBase { public: struct Properties { using abidTy = ::mlir::IntegerAttr; abidTy abid; auto getAbid() const { auto &propStorage = this->abid; return ::llvm::cast<::mlir::IntegerAttr>(propStorage); } void setAbid(const ::mlir::IntegerAttr &propValue) { this->abid = propValue; } using blgpTy = ::mlir::ROCDL::MFMAPermBAttr; blgpTy blgp; auto getBlgp() const { auto &propStorage = this->blgp; return ::llvm::cast<::mlir::ROCDL::MFMAPermBAttr>(propStorage); } void setBlgp(const ::mlir::ROCDL::MFMAPermBAttr &propValue) { this->blgp = propValue; } using cbszTy = ::mlir::IntegerAttr; cbszTy cbsz; auto getCbsz() const { auto &propStorage = this->cbsz; return ::llvm::cast<::mlir::IntegerAttr>(propStorage); } void setCbsz(const ::mlir::IntegerAttr &propValue) { this->cbsz = propValue; } bool operator==(const Properties &rhs) const { return rhs.abid == this->abid && rhs.blgp == this->blgp && rhs.cbsz == this->cbsz && true; } bool operator!=(const Properties &rhs) const { return !(*this == rhs); } }; protected: ::mlir::DictionaryAttr odsAttrs; ::std::optional<::mlir::OperationName> odsOpName; Properties properties; ::mlir::RegionRange odsRegions; public: mfma_f32_32x32x4_xf32GenericAdaptorBase(::mlir::DictionaryAttr attrs, const Properties &properties, ::mlir::RegionRange regions = {}) : odsAttrs(attrs), properties(properties), odsRegions(regions) { if (odsAttrs) odsOpName.emplace("rocdl.mfma.f32.32x32x4.xf32", odsAttrs.getContext()); } mfma_f32_32x32x4_xf32GenericAdaptorBase(mfma_f32_32x32x4_xf32 op); std::pair getODSOperandIndexAndLength(unsigned index, unsigned odsOperandsSize) { return {index, 1}; } const Properties &getProperties() { return properties; } ::mlir::DictionaryAttr getAttributes() { return odsAttrs; } ::mlir::IntegerAttr getCbszAttr() { auto attr = ::llvm::cast<::mlir::IntegerAttr>(getProperties().cbsz); return attr; } uint32_t getCbsz(); ::mlir::IntegerAttr getAbidAttr() { auto attr = ::llvm::cast<::mlir::IntegerAttr>(getProperties().abid); return attr; } uint32_t getAbid(); ::mlir::ROCDL::MFMAPermBAttr getBlgpAttr() { auto attr = ::llvm::cast<::mlir::ROCDL::MFMAPermBAttr>(getProperties().blgp); return attr; } ::mlir::ROCDL::MFMAPermB getBlgp(); }; } // namespace detail template class mfma_f32_32x32x4_xf32GenericAdaptor : public detail::mfma_f32_32x32x4_xf32GenericAdaptorBase { using ValueT = ::llvm::detail::ValueOfRange; using Base = detail::mfma_f32_32x32x4_xf32GenericAdaptorBase; static constexpr int odsIndex_a = 0; static constexpr int odsIndex_b = 1; static constexpr int odsIndex_c = 2; public: mfma_f32_32x32x4_xf32GenericAdaptor(RangeT values, ::mlir::DictionaryAttr attrs, const Properties &properties, ::mlir::RegionRange regions = {}) : Base(attrs, properties, regions), odsOperands(values) {} mfma_f32_32x32x4_xf32GenericAdaptor(RangeT values, ::mlir::DictionaryAttr attrs, ::mlir::PropertyRef properties, ::mlir::RegionRange regions = {}) : mfma_f32_32x32x4_xf32GenericAdaptor(values, attrs, (properties ? *properties.as() : Properties{}), regions) {} mfma_f32_32x32x4_xf32GenericAdaptor(RangeT values, ::mlir::DictionaryAttr attrs = nullptr) : mfma_f32_32x32x4_xf32GenericAdaptor(values, attrs, Properties{}, {}) {} mfma_f32_32x32x4_xf32GenericAdaptor(RangeT values, const mfma_f32_32x32x4_xf32GenericAdaptorBase &base) : Base(base), odsOperands(values) {} template >> mfma_f32_32x32x4_xf32GenericAdaptor(RangeT values, LateInst op) : Base(op), odsOperands(values) {} std::pair getODSOperandIndexAndLength(unsigned index) { return Base::getODSOperandIndexAndLength(index, odsOperands.size()); } RangeT getODSOperands(unsigned index) { auto valueRange = getODSOperandIndexAndLength(index); return {std::next(odsOperands.begin(), valueRange.first), std::next(odsOperands.begin(), valueRange.first + valueRange.second)}; } ValueT getA() { return (*getODSOperands(0).begin()); } ValueT getB() { return (*getODSOperands(1).begin()); } ValueT getC() { return (*getODSOperands(2).begin()); } RangeT getOperands() { return odsOperands; } private: RangeT odsOperands; }; class mfma_f32_32x32x4_xf32Adaptor : public mfma_f32_32x32x4_xf32GenericAdaptor<::mlir::ValueRange> { public: using mfma_f32_32x32x4_xf32GenericAdaptor::mfma_f32_32x32x4_xf32GenericAdaptor; mfma_f32_32x32x4_xf32Adaptor(mfma_f32_32x32x4_xf32 op); ::llvm::LogicalResult verify(::mlir::Location loc); }; class mfma_f32_32x32x4_xf32 : public ::mlir::Op::Impl, ::mlir::OpTrait::ZeroSuccessors, ::mlir::OpTrait::NOperands<3>::Impl, ::mlir::OpTrait::OpInvariants, ::mlir::BytecodeOpInterface::Trait> { public: using Op::Op; using Op::print; using Adaptor = mfma_f32_32x32x4_xf32Adaptor; template using GenericAdaptor = mfma_f32_32x32x4_xf32GenericAdaptor; using FoldAdaptor = GenericAdaptor<::llvm::ArrayRef<::mlir::Attribute>>; static constexpr int odsIndex_a = 0; static constexpr int odsIndex_b = 1; static constexpr int odsIndex_c = 2; using Properties = FoldAdaptor::Properties; static ::llvm::ArrayRef<::llvm::StringRef> getAttributeNames() { static ::llvm::StringRef attrNames[] = {::llvm::StringRef("abid"), ::llvm::StringRef("blgp"), ::llvm::StringRef("cbsz")}; return ::llvm::ArrayRef(attrNames); } ::mlir::StringAttr getAbidAttrName() { return getAttributeNameForIndex(0); } static ::mlir::StringAttr getAbidAttrName(::mlir::OperationName name) { return getAttributeNameForIndex(name, 0); } ::mlir::StringAttr getBlgpAttrName() { return getAttributeNameForIndex(1); } static ::mlir::StringAttr getBlgpAttrName(::mlir::OperationName name) { return getAttributeNameForIndex(name, 1); } ::mlir::StringAttr getCbszAttrName() { return getAttributeNameForIndex(2); } static ::mlir::StringAttr getCbszAttrName(::mlir::OperationName name) { return getAttributeNameForIndex(name, 2); } static constexpr ::llvm::StringLiteral getOperationName() { return ::llvm::StringLiteral("rocdl.mfma.f32.32x32x4.xf32"); } std::pair getODSOperandIndexAndLength(unsigned index) { return {index, 1}; } ::mlir::Operation::operand_range getODSOperands(unsigned index) { auto valueRange = getODSOperandIndexAndLength(index); return {std::next(getOperation()->operand_begin(), valueRange.first), std::next(getOperation()->operand_begin(), valueRange.first + valueRange.second)}; } ::mlir::TypedValue<::mlir::VectorType> getA() { return ::llvm::cast<::mlir::TypedValue<::mlir::VectorType>>(*getODSOperands(0).begin()); } ::mlir::TypedValue<::mlir::VectorType> getB() { return ::llvm::cast<::mlir::TypedValue<::mlir::VectorType>>(*getODSOperands(1).begin()); } ::mlir::TypedValue<::mlir::VectorType> getC() { return ::llvm::cast<::mlir::TypedValue<::mlir::VectorType>>(*getODSOperands(2).begin()); } ::mlir::OpOperand &getAMutable() { auto range = getODSOperandIndexAndLength(0); return getOperation()->getOpOperand(range.first); } ::mlir::OpOperand &getBMutable() { auto range = getODSOperandIndexAndLength(1); return getOperation()->getOpOperand(range.first); } ::mlir::OpOperand &getCMutable() { auto range = getODSOperandIndexAndLength(2); return getOperation()->getOpOperand(range.first); } std::pair getODSResultIndexAndLength(unsigned index) { return {index, 1}; } ::mlir::Operation::result_range getODSResults(unsigned index) { auto valueRange = getODSResultIndexAndLength(index); return {std::next(getOperation()->result_begin(), valueRange.first), std::next(getOperation()->result_begin(), valueRange.first + valueRange.second)}; } ::mlir::TypedValue<::mlir::VectorType> getRes() { return ::llvm::cast<::mlir::TypedValue<::mlir::VectorType>>(*getODSResults(0).begin()); } static ::llvm::LogicalResult setPropertiesFromAttr(Properties &prop, ::mlir::Attribute attr, ::llvm::function_ref<::mlir::InFlightDiagnostic()> emitError); static ::mlir::Attribute getPropertiesAsAttr(::mlir::MLIRContext *ctx, const Properties &prop); static llvm::hash_code computePropertiesHash(const Properties &prop); static std::optional getInherentAttr(::mlir::MLIRContext *ctx, const Properties &prop, llvm::StringRef name); static void setInherentAttr(Properties &prop, llvm::StringRef name, mlir::Attribute value); static void populateInherentAttrs(::mlir::MLIRContext *ctx, const Properties &prop, ::mlir::NamedAttrList &attrs); static ::llvm::LogicalResult verifyInherentAttrs(::mlir::OperationName opName, ::mlir::NamedAttrList &attrs, llvm::function_ref<::mlir::InFlightDiagnostic()> emitError); static ::llvm::LogicalResult readProperties(::mlir::DialectBytecodeReader &reader, ::mlir::OperationState &state); void writeProperties(::mlir::DialectBytecodeWriter &writer); ::mlir::IntegerAttr getCbszAttr() { return ::llvm::cast<::mlir::IntegerAttr>(getProperties().cbsz); } uint32_t getCbsz(); ::mlir::IntegerAttr getAbidAttr() { return ::llvm::cast<::mlir::IntegerAttr>(getProperties().abid); } uint32_t getAbid(); ::mlir::ROCDL::MFMAPermBAttr getBlgpAttr() { return ::llvm::cast<::mlir::ROCDL::MFMAPermBAttr>(getProperties().blgp); } ::mlir::ROCDL::MFMAPermB getBlgp(); void setCbszAttr(::mlir::IntegerAttr attr) { getProperties().cbsz = attr; } void setCbsz(uint32_t attrValue); void setAbidAttr(::mlir::IntegerAttr attr) { getProperties().abid = attr; } void setAbid(uint32_t attrValue); void setBlgpAttr(::mlir::ROCDL::MFMAPermBAttr attr) { getProperties().blgp = attr; } void setBlgp(::mlir::ROCDL::MFMAPermB attrValue); static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::Type res, ::mlir::Value a, ::mlir::Value b, ::mlir::Value c, ::mlir::IntegerAttr cbsz, ::mlir::IntegerAttr abid, ::mlir::ROCDL::MFMAPermBAttr blgp); static mfma_f32_32x32x4_xf32 create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::Type res, ::mlir::Value a, ::mlir::Value b, ::mlir::Value c, ::mlir::IntegerAttr cbsz, ::mlir::IntegerAttr abid, ::mlir::ROCDL::MFMAPermBAttr blgp); static mfma_f32_32x32x4_xf32 create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::Type res, ::mlir::Value a, ::mlir::Value b, ::mlir::Value c, ::mlir::IntegerAttr cbsz, ::mlir::IntegerAttr abid, ::mlir::ROCDL::MFMAPermBAttr blgp); static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::Value a, ::mlir::Value b, ::mlir::Value c, ::mlir::IntegerAttr cbsz, ::mlir::IntegerAttr abid, ::mlir::ROCDL::MFMAPermBAttr blgp); static mfma_f32_32x32x4_xf32 create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::Value a, ::mlir::Value b, ::mlir::Value c, ::mlir::IntegerAttr cbsz, ::mlir::IntegerAttr abid, ::mlir::ROCDL::MFMAPermBAttr blgp); static mfma_f32_32x32x4_xf32 create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::Value a, ::mlir::Value b, ::mlir::Value c, ::mlir::IntegerAttr cbsz, ::mlir::IntegerAttr abid, ::mlir::ROCDL::MFMAPermBAttr blgp); static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::Type res, ::mlir::Value a, ::mlir::Value b, ::mlir::Value c, uint32_t cbsz, uint32_t abid, ::mlir::ROCDL::MFMAPermB blgp); static mfma_f32_32x32x4_xf32 create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::Type res, ::mlir::Value a, ::mlir::Value b, ::mlir::Value c, uint32_t cbsz, uint32_t abid, ::mlir::ROCDL::MFMAPermB blgp); static mfma_f32_32x32x4_xf32 create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::Type res, ::mlir::Value a, ::mlir::Value b, ::mlir::Value c, uint32_t cbsz, uint32_t abid, ::mlir::ROCDL::MFMAPermB blgp); static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::Value a, ::mlir::Value b, ::mlir::Value c, uint32_t cbsz, uint32_t abid, ::mlir::ROCDL::MFMAPermB blgp); static mfma_f32_32x32x4_xf32 create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::Value a, ::mlir::Value b, ::mlir::Value c, uint32_t cbsz, uint32_t abid, ::mlir::ROCDL::MFMAPermB blgp); static mfma_f32_32x32x4_xf32 create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::Value a, ::mlir::Value b, ::mlir::Value c, uint32_t cbsz, uint32_t abid, ::mlir::ROCDL::MFMAPermB blgp); static void build(::mlir::OpBuilder &, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, ::llvm::ArrayRef<::mlir::NamedAttribute> attributes = {}); static mfma_f32_32x32x4_xf32 create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, ::llvm::ArrayRef<::mlir::NamedAttribute> attributes = {}); static mfma_f32_32x32x4_xf32 create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, ::llvm::ArrayRef<::mlir::NamedAttribute> attributes = {}); static void build(::mlir::OpBuilder &, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, const Properties &properties, ::llvm::ArrayRef<::mlir::NamedAttribute> discardableAttributes = {}); static mfma_f32_32x32x4_xf32 create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, const Properties &properties, ::llvm::ArrayRef<::mlir::NamedAttribute> discardableAttributes = {}); static mfma_f32_32x32x4_xf32 create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, const Properties &properties, ::llvm::ArrayRef<::mlir::NamedAttribute> discardableAttributes = {}); ::llvm::LogicalResult verifyInvariantsImpl(); ::llvm::LogicalResult verifyInvariants(); static ::mlir::ParseResult parse(::mlir::OpAsmParser &parser, ::mlir::OperationState &result); void print(::mlir::OpAsmPrinter &_odsPrinter); private: ::mlir::StringAttr getAttributeNameForIndex(unsigned index) { return getAttributeNameForIndex((*this)->getName(), index); } static ::mlir::StringAttr getAttributeNameForIndex(::mlir::OperationName name, unsigned index) { assert(index < 3 && "invalid attribute index"); assert(name.getStringRef() == getOperationName() && "invalid operation name"); assert(name.isRegistered() && "Operation isn't registered, missing a " "dependent dialect loading?"); return name.getAttributeNames()[index]; } public: }; } // namespace mlir::ROCDL MLIR_DECLARE_EXPLICIT_TYPE_ID(::mlir::ROCDL::mfma_f32_32x32x4_xf32) MLIR_DECLARE_EXPLICIT_TYPE_ID(::mlir::ROCDL::detail::mfma_f32_32x32x4_xf32GenericAdaptorBase::Properties) namespace mlir::ROCDL { //===----------------------------------------------------------------------===// // ::mlir::ROCDL::mfma_f32_32x32x4bf16 declarations //===----------------------------------------------------------------------===// namespace detail { class mfma_f32_32x32x4bf16GenericAdaptorBase { public: struct Properties { using abidTy = ::mlir::IntegerAttr; abidTy abid; auto getAbid() const { auto &propStorage = this->abid; return ::llvm::cast<::mlir::IntegerAttr>(propStorage); } void setAbid(const ::mlir::IntegerAttr &propValue) { this->abid = propValue; } using blgpTy = ::mlir::ROCDL::MFMAPermBAttr; blgpTy blgp; auto getBlgp() const { auto &propStorage = this->blgp; return ::llvm::cast<::mlir::ROCDL::MFMAPermBAttr>(propStorage); } void setBlgp(const ::mlir::ROCDL::MFMAPermBAttr &propValue) { this->blgp = propValue; } using cbszTy = ::mlir::IntegerAttr; cbszTy cbsz; auto getCbsz() const { auto &propStorage = this->cbsz; return ::llvm::cast<::mlir::IntegerAttr>(propStorage); } void setCbsz(const ::mlir::IntegerAttr &propValue) { this->cbsz = propValue; } bool operator==(const Properties &rhs) const { return rhs.abid == this->abid && rhs.blgp == this->blgp && rhs.cbsz == this->cbsz && true; } bool operator!=(const Properties &rhs) const { return !(*this == rhs); } }; protected: ::mlir::DictionaryAttr odsAttrs; ::std::optional<::mlir::OperationName> odsOpName; Properties properties; ::mlir::RegionRange odsRegions; public: mfma_f32_32x32x4bf16GenericAdaptorBase(::mlir::DictionaryAttr attrs, const Properties &properties, ::mlir::RegionRange regions = {}) : odsAttrs(attrs), properties(properties), odsRegions(regions) { if (odsAttrs) odsOpName.emplace("rocdl.mfma.f32.32x32x4bf16", odsAttrs.getContext()); } mfma_f32_32x32x4bf16GenericAdaptorBase(mfma_f32_32x32x4bf16 op); std::pair getODSOperandIndexAndLength(unsigned index, unsigned odsOperandsSize) { return {index, 1}; } const Properties &getProperties() { return properties; } ::mlir::DictionaryAttr getAttributes() { return odsAttrs; } ::mlir::IntegerAttr getCbszAttr() { auto attr = ::llvm::cast<::mlir::IntegerAttr>(getProperties().cbsz); return attr; } uint32_t getCbsz(); ::mlir::IntegerAttr getAbidAttr() { auto attr = ::llvm::cast<::mlir::IntegerAttr>(getProperties().abid); return attr; } uint32_t getAbid(); ::mlir::ROCDL::MFMAPermBAttr getBlgpAttr() { auto attr = ::llvm::cast<::mlir::ROCDL::MFMAPermBAttr>(getProperties().blgp); return attr; } ::mlir::ROCDL::MFMAPermB getBlgp(); }; } // namespace detail template class mfma_f32_32x32x4bf16GenericAdaptor : public detail::mfma_f32_32x32x4bf16GenericAdaptorBase { using ValueT = ::llvm::detail::ValueOfRange; using Base = detail::mfma_f32_32x32x4bf16GenericAdaptorBase; static constexpr int odsIndex_a = 0; static constexpr int odsIndex_b = 1; static constexpr int odsIndex_c = 2; public: mfma_f32_32x32x4bf16GenericAdaptor(RangeT values, ::mlir::DictionaryAttr attrs, const Properties &properties, ::mlir::RegionRange regions = {}) : Base(attrs, properties, regions), odsOperands(values) {} mfma_f32_32x32x4bf16GenericAdaptor(RangeT values, ::mlir::DictionaryAttr attrs, ::mlir::PropertyRef properties, ::mlir::RegionRange regions = {}) : mfma_f32_32x32x4bf16GenericAdaptor(values, attrs, (properties ? *properties.as() : Properties{}), regions) {} mfma_f32_32x32x4bf16GenericAdaptor(RangeT values, ::mlir::DictionaryAttr attrs = nullptr) : mfma_f32_32x32x4bf16GenericAdaptor(values, attrs, Properties{}, {}) {} mfma_f32_32x32x4bf16GenericAdaptor(RangeT values, const mfma_f32_32x32x4bf16GenericAdaptorBase &base) : Base(base), odsOperands(values) {} template >> mfma_f32_32x32x4bf16GenericAdaptor(RangeT values, LateInst op) : Base(op), odsOperands(values) {} std::pair getODSOperandIndexAndLength(unsigned index) { return Base::getODSOperandIndexAndLength(index, odsOperands.size()); } RangeT getODSOperands(unsigned index) { auto valueRange = getODSOperandIndexAndLength(index); return {std::next(odsOperands.begin(), valueRange.first), std::next(odsOperands.begin(), valueRange.first + valueRange.second)}; } ValueT getA() { return (*getODSOperands(0).begin()); } ValueT getB() { return (*getODSOperands(1).begin()); } ValueT getC() { return (*getODSOperands(2).begin()); } RangeT getOperands() { return odsOperands; } private: RangeT odsOperands; }; class mfma_f32_32x32x4bf16Adaptor : public mfma_f32_32x32x4bf16GenericAdaptor<::mlir::ValueRange> { public: using mfma_f32_32x32x4bf16GenericAdaptor::mfma_f32_32x32x4bf16GenericAdaptor; mfma_f32_32x32x4bf16Adaptor(mfma_f32_32x32x4bf16 op); ::llvm::LogicalResult verify(::mlir::Location loc); }; class mfma_f32_32x32x4bf16 : public ::mlir::Op::Impl, ::mlir::OpTrait::ZeroSuccessors, ::mlir::OpTrait::NOperands<3>::Impl, ::mlir::OpTrait::OpInvariants, ::mlir::BytecodeOpInterface::Trait> { public: using Op::Op; using Op::print; using Adaptor = mfma_f32_32x32x4bf16Adaptor; template using GenericAdaptor = mfma_f32_32x32x4bf16GenericAdaptor; using FoldAdaptor = GenericAdaptor<::llvm::ArrayRef<::mlir::Attribute>>; static constexpr int odsIndex_a = 0; static constexpr int odsIndex_b = 1; static constexpr int odsIndex_c = 2; using Properties = FoldAdaptor::Properties; static ::llvm::ArrayRef<::llvm::StringRef> getAttributeNames() { static ::llvm::StringRef attrNames[] = {::llvm::StringRef("abid"), ::llvm::StringRef("blgp"), ::llvm::StringRef("cbsz")}; return ::llvm::ArrayRef(attrNames); } ::mlir::StringAttr getAbidAttrName() { return getAttributeNameForIndex(0); } static ::mlir::StringAttr getAbidAttrName(::mlir::OperationName name) { return getAttributeNameForIndex(name, 0); } ::mlir::StringAttr getBlgpAttrName() { return getAttributeNameForIndex(1); } static ::mlir::StringAttr getBlgpAttrName(::mlir::OperationName name) { return getAttributeNameForIndex(name, 1); } ::mlir::StringAttr getCbszAttrName() { return getAttributeNameForIndex(2); } static ::mlir::StringAttr getCbszAttrName(::mlir::OperationName name) { return getAttributeNameForIndex(name, 2); } static constexpr ::llvm::StringLiteral getOperationName() { return ::llvm::StringLiteral("rocdl.mfma.f32.32x32x4bf16"); } std::pair getODSOperandIndexAndLength(unsigned index) { return {index, 1}; } ::mlir::Operation::operand_range getODSOperands(unsigned index) { auto valueRange = getODSOperandIndexAndLength(index); return {std::next(getOperation()->operand_begin(), valueRange.first), std::next(getOperation()->operand_begin(), valueRange.first + valueRange.second)}; } ::mlir::TypedValue<::mlir::VectorType> getA() { return ::llvm::cast<::mlir::TypedValue<::mlir::VectorType>>(*getODSOperands(0).begin()); } ::mlir::TypedValue<::mlir::VectorType> getB() { return ::llvm::cast<::mlir::TypedValue<::mlir::VectorType>>(*getODSOperands(1).begin()); } ::mlir::TypedValue<::mlir::VectorType> getC() { return ::llvm::cast<::mlir::TypedValue<::mlir::VectorType>>(*getODSOperands(2).begin()); } ::mlir::OpOperand &getAMutable() { auto range = getODSOperandIndexAndLength(0); return getOperation()->getOpOperand(range.first); } ::mlir::OpOperand &getBMutable() { auto range = getODSOperandIndexAndLength(1); return getOperation()->getOpOperand(range.first); } ::mlir::OpOperand &getCMutable() { auto range = getODSOperandIndexAndLength(2); return getOperation()->getOpOperand(range.first); } std::pair getODSResultIndexAndLength(unsigned index) { return {index, 1}; } ::mlir::Operation::result_range getODSResults(unsigned index) { auto valueRange = getODSResultIndexAndLength(index); return {std::next(getOperation()->result_begin(), valueRange.first), std::next(getOperation()->result_begin(), valueRange.first + valueRange.second)}; } ::mlir::TypedValue<::mlir::VectorType> getRes() { return ::llvm::cast<::mlir::TypedValue<::mlir::VectorType>>(*getODSResults(0).begin()); } static ::llvm::LogicalResult setPropertiesFromAttr(Properties &prop, ::mlir::Attribute attr, ::llvm::function_ref<::mlir::InFlightDiagnostic()> emitError); static ::mlir::Attribute getPropertiesAsAttr(::mlir::MLIRContext *ctx, const Properties &prop); static llvm::hash_code computePropertiesHash(const Properties &prop); static std::optional getInherentAttr(::mlir::MLIRContext *ctx, const Properties &prop, llvm::StringRef name); static void setInherentAttr(Properties &prop, llvm::StringRef name, mlir::Attribute value); static void populateInherentAttrs(::mlir::MLIRContext *ctx, const Properties &prop, ::mlir::NamedAttrList &attrs); static ::llvm::LogicalResult verifyInherentAttrs(::mlir::OperationName opName, ::mlir::NamedAttrList &attrs, llvm::function_ref<::mlir::InFlightDiagnostic()> emitError); static ::llvm::LogicalResult readProperties(::mlir::DialectBytecodeReader &reader, ::mlir::OperationState &state); void writeProperties(::mlir::DialectBytecodeWriter &writer); ::mlir::IntegerAttr getCbszAttr() { return ::llvm::cast<::mlir::IntegerAttr>(getProperties().cbsz); } uint32_t getCbsz(); ::mlir::IntegerAttr getAbidAttr() { return ::llvm::cast<::mlir::IntegerAttr>(getProperties().abid); } uint32_t getAbid(); ::mlir::ROCDL::MFMAPermBAttr getBlgpAttr() { return ::llvm::cast<::mlir::ROCDL::MFMAPermBAttr>(getProperties().blgp); } ::mlir::ROCDL::MFMAPermB getBlgp(); void setCbszAttr(::mlir::IntegerAttr attr) { getProperties().cbsz = attr; } void setCbsz(uint32_t attrValue); void setAbidAttr(::mlir::IntegerAttr attr) { getProperties().abid = attr; } void setAbid(uint32_t attrValue); void setBlgpAttr(::mlir::ROCDL::MFMAPermBAttr attr) { getProperties().blgp = attr; } void setBlgp(::mlir::ROCDL::MFMAPermB attrValue); static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::Type res, ::mlir::Value a, ::mlir::Value b, ::mlir::Value c, ::mlir::IntegerAttr cbsz, ::mlir::IntegerAttr abid, ::mlir::ROCDL::MFMAPermBAttr blgp); static mfma_f32_32x32x4bf16 create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::Type res, ::mlir::Value a, ::mlir::Value b, ::mlir::Value c, ::mlir::IntegerAttr cbsz, ::mlir::IntegerAttr abid, ::mlir::ROCDL::MFMAPermBAttr blgp); static mfma_f32_32x32x4bf16 create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::Type res, ::mlir::Value a, ::mlir::Value b, ::mlir::Value c, ::mlir::IntegerAttr cbsz, ::mlir::IntegerAttr abid, ::mlir::ROCDL::MFMAPermBAttr blgp); static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::Value a, ::mlir::Value b, ::mlir::Value c, ::mlir::IntegerAttr cbsz, ::mlir::IntegerAttr abid, ::mlir::ROCDL::MFMAPermBAttr blgp); static mfma_f32_32x32x4bf16 create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::Value a, ::mlir::Value b, ::mlir::Value c, ::mlir::IntegerAttr cbsz, ::mlir::IntegerAttr abid, ::mlir::ROCDL::MFMAPermBAttr blgp); static mfma_f32_32x32x4bf16 create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::Value a, ::mlir::Value b, ::mlir::Value c, ::mlir::IntegerAttr cbsz, ::mlir::IntegerAttr abid, ::mlir::ROCDL::MFMAPermBAttr blgp); static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::Type res, ::mlir::Value a, ::mlir::Value b, ::mlir::Value c, uint32_t cbsz, uint32_t abid, ::mlir::ROCDL::MFMAPermB blgp); static mfma_f32_32x32x4bf16 create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::Type res, ::mlir::Value a, ::mlir::Value b, ::mlir::Value c, uint32_t cbsz, uint32_t abid, ::mlir::ROCDL::MFMAPermB blgp); static mfma_f32_32x32x4bf16 create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::Type res, ::mlir::Value a, ::mlir::Value b, ::mlir::Value c, uint32_t cbsz, uint32_t abid, ::mlir::ROCDL::MFMAPermB blgp); static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::Value a, ::mlir::Value b, ::mlir::Value c, uint32_t cbsz, uint32_t abid, ::mlir::ROCDL::MFMAPermB blgp); static mfma_f32_32x32x4bf16 create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::Value a, ::mlir::Value b, ::mlir::Value c, uint32_t cbsz, uint32_t abid, ::mlir::ROCDL::MFMAPermB blgp); static mfma_f32_32x32x4bf16 create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::Value a, ::mlir::Value b, ::mlir::Value c, uint32_t cbsz, uint32_t abid, ::mlir::ROCDL::MFMAPermB blgp); static void build(::mlir::OpBuilder &, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, ::llvm::ArrayRef<::mlir::NamedAttribute> attributes = {}); static mfma_f32_32x32x4bf16 create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, ::llvm::ArrayRef<::mlir::NamedAttribute> attributes = {}); static mfma_f32_32x32x4bf16 create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, ::llvm::ArrayRef<::mlir::NamedAttribute> attributes = {}); static void build(::mlir::OpBuilder &, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, const Properties &properties, ::llvm::ArrayRef<::mlir::NamedAttribute> discardableAttributes = {}); static mfma_f32_32x32x4bf16 create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, const Properties &properties, ::llvm::ArrayRef<::mlir::NamedAttribute> discardableAttributes = {}); static mfma_f32_32x32x4bf16 create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, const Properties &properties, ::llvm::ArrayRef<::mlir::NamedAttribute> discardableAttributes = {}); ::llvm::LogicalResult verifyInvariantsImpl(); ::llvm::LogicalResult verifyInvariants(); static ::mlir::ParseResult parse(::mlir::OpAsmParser &parser, ::mlir::OperationState &result); void print(::mlir::OpAsmPrinter &_odsPrinter); private: ::mlir::StringAttr getAttributeNameForIndex(unsigned index) { return getAttributeNameForIndex((*this)->getName(), index); } static ::mlir::StringAttr getAttributeNameForIndex(::mlir::OperationName name, unsigned index) { assert(index < 3 && "invalid attribute index"); assert(name.getStringRef() == getOperationName() && "invalid operation name"); assert(name.isRegistered() && "Operation isn't registered, missing a " "dependent dialect loading?"); return name.getAttributeNames()[index]; } public: }; } // namespace mlir::ROCDL MLIR_DECLARE_EXPLICIT_TYPE_ID(::mlir::ROCDL::mfma_f32_32x32x4bf16) MLIR_DECLARE_EXPLICIT_TYPE_ID(::mlir::ROCDL::detail::mfma_f32_32x32x4bf16GenericAdaptorBase::Properties) namespace mlir::ROCDL { //===----------------------------------------------------------------------===// // ::mlir::ROCDL::mfma_f32_32x32x4bf16_1k declarations //===----------------------------------------------------------------------===// namespace detail { class mfma_f32_32x32x4bf16_1kGenericAdaptorBase { public: struct Properties { using abidTy = ::mlir::IntegerAttr; abidTy abid; auto getAbid() const { auto &propStorage = this->abid; return ::llvm::cast<::mlir::IntegerAttr>(propStorage); } void setAbid(const ::mlir::IntegerAttr &propValue) { this->abid = propValue; } using blgpTy = ::mlir::ROCDL::MFMAPermBAttr; blgpTy blgp; auto getBlgp() const { auto &propStorage = this->blgp; return ::llvm::cast<::mlir::ROCDL::MFMAPermBAttr>(propStorage); } void setBlgp(const ::mlir::ROCDL::MFMAPermBAttr &propValue) { this->blgp = propValue; } using cbszTy = ::mlir::IntegerAttr; cbszTy cbsz; auto getCbsz() const { auto &propStorage = this->cbsz; return ::llvm::cast<::mlir::IntegerAttr>(propStorage); } void setCbsz(const ::mlir::IntegerAttr &propValue) { this->cbsz = propValue; } bool operator==(const Properties &rhs) const { return rhs.abid == this->abid && rhs.blgp == this->blgp && rhs.cbsz == this->cbsz && true; } bool operator!=(const Properties &rhs) const { return !(*this == rhs); } }; protected: ::mlir::DictionaryAttr odsAttrs; ::std::optional<::mlir::OperationName> odsOpName; Properties properties; ::mlir::RegionRange odsRegions; public: mfma_f32_32x32x4bf16_1kGenericAdaptorBase(::mlir::DictionaryAttr attrs, const Properties &properties, ::mlir::RegionRange regions = {}) : odsAttrs(attrs), properties(properties), odsRegions(regions) { if (odsAttrs) odsOpName.emplace("rocdl.mfma.f32.32x32x4bf16.1k", odsAttrs.getContext()); } mfma_f32_32x32x4bf16_1kGenericAdaptorBase(mfma_f32_32x32x4bf16_1k op); std::pair getODSOperandIndexAndLength(unsigned index, unsigned odsOperandsSize) { return {index, 1}; } const Properties &getProperties() { return properties; } ::mlir::DictionaryAttr getAttributes() { return odsAttrs; } ::mlir::IntegerAttr getCbszAttr() { auto attr = ::llvm::cast<::mlir::IntegerAttr>(getProperties().cbsz); return attr; } uint32_t getCbsz(); ::mlir::IntegerAttr getAbidAttr() { auto attr = ::llvm::cast<::mlir::IntegerAttr>(getProperties().abid); return attr; } uint32_t getAbid(); ::mlir::ROCDL::MFMAPermBAttr getBlgpAttr() { auto attr = ::llvm::cast<::mlir::ROCDL::MFMAPermBAttr>(getProperties().blgp); return attr; } ::mlir::ROCDL::MFMAPermB getBlgp(); }; } // namespace detail template class mfma_f32_32x32x4bf16_1kGenericAdaptor : public detail::mfma_f32_32x32x4bf16_1kGenericAdaptorBase { using ValueT = ::llvm::detail::ValueOfRange; using Base = detail::mfma_f32_32x32x4bf16_1kGenericAdaptorBase; static constexpr int odsIndex_a = 0; static constexpr int odsIndex_b = 1; static constexpr int odsIndex_c = 2; public: mfma_f32_32x32x4bf16_1kGenericAdaptor(RangeT values, ::mlir::DictionaryAttr attrs, const Properties &properties, ::mlir::RegionRange regions = {}) : Base(attrs, properties, regions), odsOperands(values) {} mfma_f32_32x32x4bf16_1kGenericAdaptor(RangeT values, ::mlir::DictionaryAttr attrs, ::mlir::PropertyRef properties, ::mlir::RegionRange regions = {}) : mfma_f32_32x32x4bf16_1kGenericAdaptor(values, attrs, (properties ? *properties.as() : Properties{}), regions) {} mfma_f32_32x32x4bf16_1kGenericAdaptor(RangeT values, ::mlir::DictionaryAttr attrs = nullptr) : mfma_f32_32x32x4bf16_1kGenericAdaptor(values, attrs, Properties{}, {}) {} mfma_f32_32x32x4bf16_1kGenericAdaptor(RangeT values, const mfma_f32_32x32x4bf16_1kGenericAdaptorBase &base) : Base(base), odsOperands(values) {} template >> mfma_f32_32x32x4bf16_1kGenericAdaptor(RangeT values, LateInst op) : Base(op), odsOperands(values) {} std::pair getODSOperandIndexAndLength(unsigned index) { return Base::getODSOperandIndexAndLength(index, odsOperands.size()); } RangeT getODSOperands(unsigned index) { auto valueRange = getODSOperandIndexAndLength(index); return {std::next(odsOperands.begin(), valueRange.first), std::next(odsOperands.begin(), valueRange.first + valueRange.second)}; } ValueT getA() { return (*getODSOperands(0).begin()); } ValueT getB() { return (*getODSOperands(1).begin()); } ValueT getC() { return (*getODSOperands(2).begin()); } RangeT getOperands() { return odsOperands; } private: RangeT odsOperands; }; class mfma_f32_32x32x4bf16_1kAdaptor : public mfma_f32_32x32x4bf16_1kGenericAdaptor<::mlir::ValueRange> { public: using mfma_f32_32x32x4bf16_1kGenericAdaptor::mfma_f32_32x32x4bf16_1kGenericAdaptor; mfma_f32_32x32x4bf16_1kAdaptor(mfma_f32_32x32x4bf16_1k op); ::llvm::LogicalResult verify(::mlir::Location loc); }; class mfma_f32_32x32x4bf16_1k : public ::mlir::Op::Impl, ::mlir::OpTrait::ZeroSuccessors, ::mlir::OpTrait::NOperands<3>::Impl, ::mlir::OpTrait::OpInvariants, ::mlir::BytecodeOpInterface::Trait> { public: using Op::Op; using Op::print; using Adaptor = mfma_f32_32x32x4bf16_1kAdaptor; template using GenericAdaptor = mfma_f32_32x32x4bf16_1kGenericAdaptor; using FoldAdaptor = GenericAdaptor<::llvm::ArrayRef<::mlir::Attribute>>; static constexpr int odsIndex_a = 0; static constexpr int odsIndex_b = 1; static constexpr int odsIndex_c = 2; using Properties = FoldAdaptor::Properties; static ::llvm::ArrayRef<::llvm::StringRef> getAttributeNames() { static ::llvm::StringRef attrNames[] = {::llvm::StringRef("abid"), ::llvm::StringRef("blgp"), ::llvm::StringRef("cbsz")}; return ::llvm::ArrayRef(attrNames); } ::mlir::StringAttr getAbidAttrName() { return getAttributeNameForIndex(0); } static ::mlir::StringAttr getAbidAttrName(::mlir::OperationName name) { return getAttributeNameForIndex(name, 0); } ::mlir::StringAttr getBlgpAttrName() { return getAttributeNameForIndex(1); } static ::mlir::StringAttr getBlgpAttrName(::mlir::OperationName name) { return getAttributeNameForIndex(name, 1); } ::mlir::StringAttr getCbszAttrName() { return getAttributeNameForIndex(2); } static ::mlir::StringAttr getCbszAttrName(::mlir::OperationName name) { return getAttributeNameForIndex(name, 2); } static constexpr ::llvm::StringLiteral getOperationName() { return ::llvm::StringLiteral("rocdl.mfma.f32.32x32x4bf16.1k"); } std::pair getODSOperandIndexAndLength(unsigned index) { return {index, 1}; } ::mlir::Operation::operand_range getODSOperands(unsigned index) { auto valueRange = getODSOperandIndexAndLength(index); return {std::next(getOperation()->operand_begin(), valueRange.first), std::next(getOperation()->operand_begin(), valueRange.first + valueRange.second)}; } ::mlir::TypedValue<::mlir::VectorType> getA() { return ::llvm::cast<::mlir::TypedValue<::mlir::VectorType>>(*getODSOperands(0).begin()); } ::mlir::TypedValue<::mlir::VectorType> getB() { return ::llvm::cast<::mlir::TypedValue<::mlir::VectorType>>(*getODSOperands(1).begin()); } ::mlir::TypedValue<::mlir::VectorType> getC() { return ::llvm::cast<::mlir::TypedValue<::mlir::VectorType>>(*getODSOperands(2).begin()); } ::mlir::OpOperand &getAMutable() { auto range = getODSOperandIndexAndLength(0); return getOperation()->getOpOperand(range.first); } ::mlir::OpOperand &getBMutable() { auto range = getODSOperandIndexAndLength(1); return getOperation()->getOpOperand(range.first); } ::mlir::OpOperand &getCMutable() { auto range = getODSOperandIndexAndLength(2); return getOperation()->getOpOperand(range.first); } std::pair getODSResultIndexAndLength(unsigned index) { return {index, 1}; } ::mlir::Operation::result_range getODSResults(unsigned index) { auto valueRange = getODSResultIndexAndLength(index); return {std::next(getOperation()->result_begin(), valueRange.first), std::next(getOperation()->result_begin(), valueRange.first + valueRange.second)}; } ::mlir::TypedValue<::mlir::VectorType> getRes() { return ::llvm::cast<::mlir::TypedValue<::mlir::VectorType>>(*getODSResults(0).begin()); } static ::llvm::LogicalResult setPropertiesFromAttr(Properties &prop, ::mlir::Attribute attr, ::llvm::function_ref<::mlir::InFlightDiagnostic()> emitError); static ::mlir::Attribute getPropertiesAsAttr(::mlir::MLIRContext *ctx, const Properties &prop); static llvm::hash_code computePropertiesHash(const Properties &prop); static std::optional getInherentAttr(::mlir::MLIRContext *ctx, const Properties &prop, llvm::StringRef name); static void setInherentAttr(Properties &prop, llvm::StringRef name, mlir::Attribute value); static void populateInherentAttrs(::mlir::MLIRContext *ctx, const Properties &prop, ::mlir::NamedAttrList &attrs); static ::llvm::LogicalResult verifyInherentAttrs(::mlir::OperationName opName, ::mlir::NamedAttrList &attrs, llvm::function_ref<::mlir::InFlightDiagnostic()> emitError); static ::llvm::LogicalResult readProperties(::mlir::DialectBytecodeReader &reader, ::mlir::OperationState &state); void writeProperties(::mlir::DialectBytecodeWriter &writer); ::mlir::IntegerAttr getCbszAttr() { return ::llvm::cast<::mlir::IntegerAttr>(getProperties().cbsz); } uint32_t getCbsz(); ::mlir::IntegerAttr getAbidAttr() { return ::llvm::cast<::mlir::IntegerAttr>(getProperties().abid); } uint32_t getAbid(); ::mlir::ROCDL::MFMAPermBAttr getBlgpAttr() { return ::llvm::cast<::mlir::ROCDL::MFMAPermBAttr>(getProperties().blgp); } ::mlir::ROCDL::MFMAPermB getBlgp(); void setCbszAttr(::mlir::IntegerAttr attr) { getProperties().cbsz = attr; } void setCbsz(uint32_t attrValue); void setAbidAttr(::mlir::IntegerAttr attr) { getProperties().abid = attr; } void setAbid(uint32_t attrValue); void setBlgpAttr(::mlir::ROCDL::MFMAPermBAttr attr) { getProperties().blgp = attr; } void setBlgp(::mlir::ROCDL::MFMAPermB attrValue); static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::Type res, ::mlir::Value a, ::mlir::Value b, ::mlir::Value c, ::mlir::IntegerAttr cbsz, ::mlir::IntegerAttr abid, ::mlir::ROCDL::MFMAPermBAttr blgp); static mfma_f32_32x32x4bf16_1k create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::Type res, ::mlir::Value a, ::mlir::Value b, ::mlir::Value c, ::mlir::IntegerAttr cbsz, ::mlir::IntegerAttr abid, ::mlir::ROCDL::MFMAPermBAttr blgp); static mfma_f32_32x32x4bf16_1k create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::Type res, ::mlir::Value a, ::mlir::Value b, ::mlir::Value c, ::mlir::IntegerAttr cbsz, ::mlir::IntegerAttr abid, ::mlir::ROCDL::MFMAPermBAttr blgp); static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::Value a, ::mlir::Value b, ::mlir::Value c, ::mlir::IntegerAttr cbsz, ::mlir::IntegerAttr abid, ::mlir::ROCDL::MFMAPermBAttr blgp); static mfma_f32_32x32x4bf16_1k create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::Value a, ::mlir::Value b, ::mlir::Value c, ::mlir::IntegerAttr cbsz, ::mlir::IntegerAttr abid, ::mlir::ROCDL::MFMAPermBAttr blgp); static mfma_f32_32x32x4bf16_1k create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::Value a, ::mlir::Value b, ::mlir::Value c, ::mlir::IntegerAttr cbsz, ::mlir::IntegerAttr abid, ::mlir::ROCDL::MFMAPermBAttr blgp); static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::Type res, ::mlir::Value a, ::mlir::Value b, ::mlir::Value c, uint32_t cbsz, uint32_t abid, ::mlir::ROCDL::MFMAPermB blgp); static mfma_f32_32x32x4bf16_1k create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::Type res, ::mlir::Value a, ::mlir::Value b, ::mlir::Value c, uint32_t cbsz, uint32_t abid, ::mlir::ROCDL::MFMAPermB blgp); static mfma_f32_32x32x4bf16_1k create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::Type res, ::mlir::Value a, ::mlir::Value b, ::mlir::Value c, uint32_t cbsz, uint32_t abid, ::mlir::ROCDL::MFMAPermB blgp); static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::Value a, ::mlir::Value b, ::mlir::Value c, uint32_t cbsz, uint32_t abid, ::mlir::ROCDL::MFMAPermB blgp); static mfma_f32_32x32x4bf16_1k create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::Value a, ::mlir::Value b, ::mlir::Value c, uint32_t cbsz, uint32_t abid, ::mlir::ROCDL::MFMAPermB blgp); static mfma_f32_32x32x4bf16_1k create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::Value a, ::mlir::Value b, ::mlir::Value c, uint32_t cbsz, uint32_t abid, ::mlir::ROCDL::MFMAPermB blgp); static void build(::mlir::OpBuilder &, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, ::llvm::ArrayRef<::mlir::NamedAttribute> attributes = {}); static mfma_f32_32x32x4bf16_1k create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, ::llvm::ArrayRef<::mlir::NamedAttribute> attributes = {}); static mfma_f32_32x32x4bf16_1k create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, ::llvm::ArrayRef<::mlir::NamedAttribute> attributes = {}); static void build(::mlir::OpBuilder &, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, const Properties &properties, ::llvm::ArrayRef<::mlir::NamedAttribute> discardableAttributes = {}); static mfma_f32_32x32x4bf16_1k create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, const Properties &properties, ::llvm::ArrayRef<::mlir::NamedAttribute> discardableAttributes = {}); static mfma_f32_32x32x4bf16_1k create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, const Properties &properties, ::llvm::ArrayRef<::mlir::NamedAttribute> discardableAttributes = {}); ::llvm::LogicalResult verifyInvariantsImpl(); ::llvm::LogicalResult verifyInvariants(); static ::mlir::ParseResult parse(::mlir::OpAsmParser &parser, ::mlir::OperationState &result); void print(::mlir::OpAsmPrinter &_odsPrinter); private: ::mlir::StringAttr getAttributeNameForIndex(unsigned index) { return getAttributeNameForIndex((*this)->getName(), index); } static ::mlir::StringAttr getAttributeNameForIndex(::mlir::OperationName name, unsigned index) { assert(index < 3 && "invalid attribute index"); assert(name.getStringRef() == getOperationName() && "invalid operation name"); assert(name.isRegistered() && "Operation isn't registered, missing a " "dependent dialect loading?"); return name.getAttributeNames()[index]; } public: }; } // namespace mlir::ROCDL MLIR_DECLARE_EXPLICIT_TYPE_ID(::mlir::ROCDL::mfma_f32_32x32x4bf16_1k) MLIR_DECLARE_EXPLICIT_TYPE_ID(::mlir::ROCDL::detail::mfma_f32_32x32x4bf16_1kGenericAdaptorBase::Properties) namespace mlir::ROCDL { //===----------------------------------------------------------------------===// // ::mlir::ROCDL::mfma_f32_32x32x4f16 declarations //===----------------------------------------------------------------------===// namespace detail { class mfma_f32_32x32x4f16GenericAdaptorBase { public: struct Properties { using abidTy = ::mlir::IntegerAttr; abidTy abid; auto getAbid() const { auto &propStorage = this->abid; return ::llvm::cast<::mlir::IntegerAttr>(propStorage); } void setAbid(const ::mlir::IntegerAttr &propValue) { this->abid = propValue; } using blgpTy = ::mlir::ROCDL::MFMAPermBAttr; blgpTy blgp; auto getBlgp() const { auto &propStorage = this->blgp; return ::llvm::cast<::mlir::ROCDL::MFMAPermBAttr>(propStorage); } void setBlgp(const ::mlir::ROCDL::MFMAPermBAttr &propValue) { this->blgp = propValue; } using cbszTy = ::mlir::IntegerAttr; cbszTy cbsz; auto getCbsz() const { auto &propStorage = this->cbsz; return ::llvm::cast<::mlir::IntegerAttr>(propStorage); } void setCbsz(const ::mlir::IntegerAttr &propValue) { this->cbsz = propValue; } bool operator==(const Properties &rhs) const { return rhs.abid == this->abid && rhs.blgp == this->blgp && rhs.cbsz == this->cbsz && true; } bool operator!=(const Properties &rhs) const { return !(*this == rhs); } }; protected: ::mlir::DictionaryAttr odsAttrs; ::std::optional<::mlir::OperationName> odsOpName; Properties properties; ::mlir::RegionRange odsRegions; public: mfma_f32_32x32x4f16GenericAdaptorBase(::mlir::DictionaryAttr attrs, const Properties &properties, ::mlir::RegionRange regions = {}) : odsAttrs(attrs), properties(properties), odsRegions(regions) { if (odsAttrs) odsOpName.emplace("rocdl.mfma.f32.32x32x4f16", odsAttrs.getContext()); } mfma_f32_32x32x4f16GenericAdaptorBase(mfma_f32_32x32x4f16 op); std::pair getODSOperandIndexAndLength(unsigned index, unsigned odsOperandsSize) { return {index, 1}; } const Properties &getProperties() { return properties; } ::mlir::DictionaryAttr getAttributes() { return odsAttrs; } ::mlir::IntegerAttr getCbszAttr() { auto attr = ::llvm::cast<::mlir::IntegerAttr>(getProperties().cbsz); return attr; } uint32_t getCbsz(); ::mlir::IntegerAttr getAbidAttr() { auto attr = ::llvm::cast<::mlir::IntegerAttr>(getProperties().abid); return attr; } uint32_t getAbid(); ::mlir::ROCDL::MFMAPermBAttr getBlgpAttr() { auto attr = ::llvm::cast<::mlir::ROCDL::MFMAPermBAttr>(getProperties().blgp); return attr; } ::mlir::ROCDL::MFMAPermB getBlgp(); }; } // namespace detail template class mfma_f32_32x32x4f16GenericAdaptor : public detail::mfma_f32_32x32x4f16GenericAdaptorBase { using ValueT = ::llvm::detail::ValueOfRange; using Base = detail::mfma_f32_32x32x4f16GenericAdaptorBase; static constexpr int odsIndex_a = 0; static constexpr int odsIndex_b = 1; static constexpr int odsIndex_c = 2; public: mfma_f32_32x32x4f16GenericAdaptor(RangeT values, ::mlir::DictionaryAttr attrs, const Properties &properties, ::mlir::RegionRange regions = {}) : Base(attrs, properties, regions), odsOperands(values) {} mfma_f32_32x32x4f16GenericAdaptor(RangeT values, ::mlir::DictionaryAttr attrs, ::mlir::PropertyRef properties, ::mlir::RegionRange regions = {}) : mfma_f32_32x32x4f16GenericAdaptor(values, attrs, (properties ? *properties.as() : Properties{}), regions) {} mfma_f32_32x32x4f16GenericAdaptor(RangeT values, ::mlir::DictionaryAttr attrs = nullptr) : mfma_f32_32x32x4f16GenericAdaptor(values, attrs, Properties{}, {}) {} mfma_f32_32x32x4f16GenericAdaptor(RangeT values, const mfma_f32_32x32x4f16GenericAdaptorBase &base) : Base(base), odsOperands(values) {} template >> mfma_f32_32x32x4f16GenericAdaptor(RangeT values, LateInst op) : Base(op), odsOperands(values) {} std::pair getODSOperandIndexAndLength(unsigned index) { return Base::getODSOperandIndexAndLength(index, odsOperands.size()); } RangeT getODSOperands(unsigned index) { auto valueRange = getODSOperandIndexAndLength(index); return {std::next(odsOperands.begin(), valueRange.first), std::next(odsOperands.begin(), valueRange.first + valueRange.second)}; } ValueT getA() { return (*getODSOperands(0).begin()); } ValueT getB() { return (*getODSOperands(1).begin()); } ValueT getC() { return (*getODSOperands(2).begin()); } RangeT getOperands() { return odsOperands; } private: RangeT odsOperands; }; class mfma_f32_32x32x4f16Adaptor : public mfma_f32_32x32x4f16GenericAdaptor<::mlir::ValueRange> { public: using mfma_f32_32x32x4f16GenericAdaptor::mfma_f32_32x32x4f16GenericAdaptor; mfma_f32_32x32x4f16Adaptor(mfma_f32_32x32x4f16 op); ::llvm::LogicalResult verify(::mlir::Location loc); }; class mfma_f32_32x32x4f16 : public ::mlir::Op::Impl, ::mlir::OpTrait::ZeroSuccessors, ::mlir::OpTrait::NOperands<3>::Impl, ::mlir::OpTrait::OpInvariants, ::mlir::BytecodeOpInterface::Trait> { public: using Op::Op; using Op::print; using Adaptor = mfma_f32_32x32x4f16Adaptor; template using GenericAdaptor = mfma_f32_32x32x4f16GenericAdaptor; using FoldAdaptor = GenericAdaptor<::llvm::ArrayRef<::mlir::Attribute>>; static constexpr int odsIndex_a = 0; static constexpr int odsIndex_b = 1; static constexpr int odsIndex_c = 2; using Properties = FoldAdaptor::Properties; static ::llvm::ArrayRef<::llvm::StringRef> getAttributeNames() { static ::llvm::StringRef attrNames[] = {::llvm::StringRef("abid"), ::llvm::StringRef("blgp"), ::llvm::StringRef("cbsz")}; return ::llvm::ArrayRef(attrNames); } ::mlir::StringAttr getAbidAttrName() { return getAttributeNameForIndex(0); } static ::mlir::StringAttr getAbidAttrName(::mlir::OperationName name) { return getAttributeNameForIndex(name, 0); } ::mlir::StringAttr getBlgpAttrName() { return getAttributeNameForIndex(1); } static ::mlir::StringAttr getBlgpAttrName(::mlir::OperationName name) { return getAttributeNameForIndex(name, 1); } ::mlir::StringAttr getCbszAttrName() { return getAttributeNameForIndex(2); } static ::mlir::StringAttr getCbszAttrName(::mlir::OperationName name) { return getAttributeNameForIndex(name, 2); } static constexpr ::llvm::StringLiteral getOperationName() { return ::llvm::StringLiteral("rocdl.mfma.f32.32x32x4f16"); } std::pair getODSOperandIndexAndLength(unsigned index) { return {index, 1}; } ::mlir::Operation::operand_range getODSOperands(unsigned index) { auto valueRange = getODSOperandIndexAndLength(index); return {std::next(getOperation()->operand_begin(), valueRange.first), std::next(getOperation()->operand_begin(), valueRange.first + valueRange.second)}; } ::mlir::TypedValue<::mlir::VectorType> getA() { return ::llvm::cast<::mlir::TypedValue<::mlir::VectorType>>(*getODSOperands(0).begin()); } ::mlir::TypedValue<::mlir::VectorType> getB() { return ::llvm::cast<::mlir::TypedValue<::mlir::VectorType>>(*getODSOperands(1).begin()); } ::mlir::TypedValue<::mlir::VectorType> getC() { return ::llvm::cast<::mlir::TypedValue<::mlir::VectorType>>(*getODSOperands(2).begin()); } ::mlir::OpOperand &getAMutable() { auto range = getODSOperandIndexAndLength(0); return getOperation()->getOpOperand(range.first); } ::mlir::OpOperand &getBMutable() { auto range = getODSOperandIndexAndLength(1); return getOperation()->getOpOperand(range.first); } ::mlir::OpOperand &getCMutable() { auto range = getODSOperandIndexAndLength(2); return getOperation()->getOpOperand(range.first); } std::pair getODSResultIndexAndLength(unsigned index) { return {index, 1}; } ::mlir::Operation::result_range getODSResults(unsigned index) { auto valueRange = getODSResultIndexAndLength(index); return {std::next(getOperation()->result_begin(), valueRange.first), std::next(getOperation()->result_begin(), valueRange.first + valueRange.second)}; } ::mlir::TypedValue<::mlir::VectorType> getRes() { return ::llvm::cast<::mlir::TypedValue<::mlir::VectorType>>(*getODSResults(0).begin()); } static ::llvm::LogicalResult setPropertiesFromAttr(Properties &prop, ::mlir::Attribute attr, ::llvm::function_ref<::mlir::InFlightDiagnostic()> emitError); static ::mlir::Attribute getPropertiesAsAttr(::mlir::MLIRContext *ctx, const Properties &prop); static llvm::hash_code computePropertiesHash(const Properties &prop); static std::optional getInherentAttr(::mlir::MLIRContext *ctx, const Properties &prop, llvm::StringRef name); static void setInherentAttr(Properties &prop, llvm::StringRef name, mlir::Attribute value); static void populateInherentAttrs(::mlir::MLIRContext *ctx, const Properties &prop, ::mlir::NamedAttrList &attrs); static ::llvm::LogicalResult verifyInherentAttrs(::mlir::OperationName opName, ::mlir::NamedAttrList &attrs, llvm::function_ref<::mlir::InFlightDiagnostic()> emitError); static ::llvm::LogicalResult readProperties(::mlir::DialectBytecodeReader &reader, ::mlir::OperationState &state); void writeProperties(::mlir::DialectBytecodeWriter &writer); ::mlir::IntegerAttr getCbszAttr() { return ::llvm::cast<::mlir::IntegerAttr>(getProperties().cbsz); } uint32_t getCbsz(); ::mlir::IntegerAttr getAbidAttr() { return ::llvm::cast<::mlir::IntegerAttr>(getProperties().abid); } uint32_t getAbid(); ::mlir::ROCDL::MFMAPermBAttr getBlgpAttr() { return ::llvm::cast<::mlir::ROCDL::MFMAPermBAttr>(getProperties().blgp); } ::mlir::ROCDL::MFMAPermB getBlgp(); void setCbszAttr(::mlir::IntegerAttr attr) { getProperties().cbsz = attr; } void setCbsz(uint32_t attrValue); void setAbidAttr(::mlir::IntegerAttr attr) { getProperties().abid = attr; } void setAbid(uint32_t attrValue); void setBlgpAttr(::mlir::ROCDL::MFMAPermBAttr attr) { getProperties().blgp = attr; } void setBlgp(::mlir::ROCDL::MFMAPermB attrValue); static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::Type res, ::mlir::Value a, ::mlir::Value b, ::mlir::Value c, ::mlir::IntegerAttr cbsz, ::mlir::IntegerAttr abid, ::mlir::ROCDL::MFMAPermBAttr blgp); static mfma_f32_32x32x4f16 create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::Type res, ::mlir::Value a, ::mlir::Value b, ::mlir::Value c, ::mlir::IntegerAttr cbsz, ::mlir::IntegerAttr abid, ::mlir::ROCDL::MFMAPermBAttr blgp); static mfma_f32_32x32x4f16 create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::Type res, ::mlir::Value a, ::mlir::Value b, ::mlir::Value c, ::mlir::IntegerAttr cbsz, ::mlir::IntegerAttr abid, ::mlir::ROCDL::MFMAPermBAttr blgp); static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::Value a, ::mlir::Value b, ::mlir::Value c, ::mlir::IntegerAttr cbsz, ::mlir::IntegerAttr abid, ::mlir::ROCDL::MFMAPermBAttr blgp); static mfma_f32_32x32x4f16 create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::Value a, ::mlir::Value b, ::mlir::Value c, ::mlir::IntegerAttr cbsz, ::mlir::IntegerAttr abid, ::mlir::ROCDL::MFMAPermBAttr blgp); static mfma_f32_32x32x4f16 create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::Value a, ::mlir::Value b, ::mlir::Value c, ::mlir::IntegerAttr cbsz, ::mlir::IntegerAttr abid, ::mlir::ROCDL::MFMAPermBAttr blgp); static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::Type res, ::mlir::Value a, ::mlir::Value b, ::mlir::Value c, uint32_t cbsz, uint32_t abid, ::mlir::ROCDL::MFMAPermB blgp); static mfma_f32_32x32x4f16 create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::Type res, ::mlir::Value a, ::mlir::Value b, ::mlir::Value c, uint32_t cbsz, uint32_t abid, ::mlir::ROCDL::MFMAPermB blgp); static mfma_f32_32x32x4f16 create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::Type res, ::mlir::Value a, ::mlir::Value b, ::mlir::Value c, uint32_t cbsz, uint32_t abid, ::mlir::ROCDL::MFMAPermB blgp); static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::Value a, ::mlir::Value b, ::mlir::Value c, uint32_t cbsz, uint32_t abid, ::mlir::ROCDL::MFMAPermB blgp); static mfma_f32_32x32x4f16 create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::Value a, ::mlir::Value b, ::mlir::Value c, uint32_t cbsz, uint32_t abid, ::mlir::ROCDL::MFMAPermB blgp); static mfma_f32_32x32x4f16 create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::Value a, ::mlir::Value b, ::mlir::Value c, uint32_t cbsz, uint32_t abid, ::mlir::ROCDL::MFMAPermB blgp); static void build(::mlir::OpBuilder &, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, ::llvm::ArrayRef<::mlir::NamedAttribute> attributes = {}); static mfma_f32_32x32x4f16 create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, ::llvm::ArrayRef<::mlir::NamedAttribute> attributes = {}); static mfma_f32_32x32x4f16 create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, ::llvm::ArrayRef<::mlir::NamedAttribute> attributes = {}); static void build(::mlir::OpBuilder &, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, const Properties &properties, ::llvm::ArrayRef<::mlir::NamedAttribute> discardableAttributes = {}); static mfma_f32_32x32x4f16 create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, const Properties &properties, ::llvm::ArrayRef<::mlir::NamedAttribute> discardableAttributes = {}); static mfma_f32_32x32x4f16 create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, const Properties &properties, ::llvm::ArrayRef<::mlir::NamedAttribute> discardableAttributes = {}); ::llvm::LogicalResult verifyInvariantsImpl(); ::llvm::LogicalResult verifyInvariants(); static ::mlir::ParseResult parse(::mlir::OpAsmParser &parser, ::mlir::OperationState &result); void print(::mlir::OpAsmPrinter &_odsPrinter); private: ::mlir::StringAttr getAttributeNameForIndex(unsigned index) { return getAttributeNameForIndex((*this)->getName(), index); } static ::mlir::StringAttr getAttributeNameForIndex(::mlir::OperationName name, unsigned index) { assert(index < 3 && "invalid attribute index"); assert(name.getStringRef() == getOperationName() && "invalid operation name"); assert(name.isRegistered() && "Operation isn't registered, missing a " "dependent dialect loading?"); return name.getAttributeNames()[index]; } public: }; } // namespace mlir::ROCDL MLIR_DECLARE_EXPLICIT_TYPE_ID(::mlir::ROCDL::mfma_f32_32x32x4f16) MLIR_DECLARE_EXPLICIT_TYPE_ID(::mlir::ROCDL::detail::mfma_f32_32x32x4f16GenericAdaptorBase::Properties) namespace mlir::ROCDL { //===----------------------------------------------------------------------===// // ::mlir::ROCDL::mfma_f32_32x32x8bf16_1k declarations //===----------------------------------------------------------------------===// namespace detail { class mfma_f32_32x32x8bf16_1kGenericAdaptorBase { public: struct Properties { using abidTy = ::mlir::IntegerAttr; abidTy abid; auto getAbid() const { auto &propStorage = this->abid; return ::llvm::cast<::mlir::IntegerAttr>(propStorage); } void setAbid(const ::mlir::IntegerAttr &propValue) { this->abid = propValue; } using blgpTy = ::mlir::ROCDL::MFMAPermBAttr; blgpTy blgp; auto getBlgp() const { auto &propStorage = this->blgp; return ::llvm::cast<::mlir::ROCDL::MFMAPermBAttr>(propStorage); } void setBlgp(const ::mlir::ROCDL::MFMAPermBAttr &propValue) { this->blgp = propValue; } using cbszTy = ::mlir::IntegerAttr; cbszTy cbsz; auto getCbsz() const { auto &propStorage = this->cbsz; return ::llvm::cast<::mlir::IntegerAttr>(propStorage); } void setCbsz(const ::mlir::IntegerAttr &propValue) { this->cbsz = propValue; } bool operator==(const Properties &rhs) const { return rhs.abid == this->abid && rhs.blgp == this->blgp && rhs.cbsz == this->cbsz && true; } bool operator!=(const Properties &rhs) const { return !(*this == rhs); } }; protected: ::mlir::DictionaryAttr odsAttrs; ::std::optional<::mlir::OperationName> odsOpName; Properties properties; ::mlir::RegionRange odsRegions; public: mfma_f32_32x32x8bf16_1kGenericAdaptorBase(::mlir::DictionaryAttr attrs, const Properties &properties, ::mlir::RegionRange regions = {}) : odsAttrs(attrs), properties(properties), odsRegions(regions) { if (odsAttrs) odsOpName.emplace("rocdl.mfma.f32.32x32x8bf16.1k", odsAttrs.getContext()); } mfma_f32_32x32x8bf16_1kGenericAdaptorBase(mfma_f32_32x32x8bf16_1k op); std::pair getODSOperandIndexAndLength(unsigned index, unsigned odsOperandsSize) { return {index, 1}; } const Properties &getProperties() { return properties; } ::mlir::DictionaryAttr getAttributes() { return odsAttrs; } ::mlir::IntegerAttr getCbszAttr() { auto attr = ::llvm::cast<::mlir::IntegerAttr>(getProperties().cbsz); return attr; } uint32_t getCbsz(); ::mlir::IntegerAttr getAbidAttr() { auto attr = ::llvm::cast<::mlir::IntegerAttr>(getProperties().abid); return attr; } uint32_t getAbid(); ::mlir::ROCDL::MFMAPermBAttr getBlgpAttr() { auto attr = ::llvm::cast<::mlir::ROCDL::MFMAPermBAttr>(getProperties().blgp); return attr; } ::mlir::ROCDL::MFMAPermB getBlgp(); }; } // namespace detail template class mfma_f32_32x32x8bf16_1kGenericAdaptor : public detail::mfma_f32_32x32x8bf16_1kGenericAdaptorBase { using ValueT = ::llvm::detail::ValueOfRange; using Base = detail::mfma_f32_32x32x8bf16_1kGenericAdaptorBase; static constexpr int odsIndex_a = 0; static constexpr int odsIndex_b = 1; static constexpr int odsIndex_c = 2; public: mfma_f32_32x32x8bf16_1kGenericAdaptor(RangeT values, ::mlir::DictionaryAttr attrs, const Properties &properties, ::mlir::RegionRange regions = {}) : Base(attrs, properties, regions), odsOperands(values) {} mfma_f32_32x32x8bf16_1kGenericAdaptor(RangeT values, ::mlir::DictionaryAttr attrs, ::mlir::PropertyRef properties, ::mlir::RegionRange regions = {}) : mfma_f32_32x32x8bf16_1kGenericAdaptor(values, attrs, (properties ? *properties.as() : Properties{}), regions) {} mfma_f32_32x32x8bf16_1kGenericAdaptor(RangeT values, ::mlir::DictionaryAttr attrs = nullptr) : mfma_f32_32x32x8bf16_1kGenericAdaptor(values, attrs, Properties{}, {}) {} mfma_f32_32x32x8bf16_1kGenericAdaptor(RangeT values, const mfma_f32_32x32x8bf16_1kGenericAdaptorBase &base) : Base(base), odsOperands(values) {} template >> mfma_f32_32x32x8bf16_1kGenericAdaptor(RangeT values, LateInst op) : Base(op), odsOperands(values) {} std::pair getODSOperandIndexAndLength(unsigned index) { return Base::getODSOperandIndexAndLength(index, odsOperands.size()); } RangeT getODSOperands(unsigned index) { auto valueRange = getODSOperandIndexAndLength(index); return {std::next(odsOperands.begin(), valueRange.first), std::next(odsOperands.begin(), valueRange.first + valueRange.second)}; } ValueT getA() { return (*getODSOperands(0).begin()); } ValueT getB() { return (*getODSOperands(1).begin()); } ValueT getC() { return (*getODSOperands(2).begin()); } RangeT getOperands() { return odsOperands; } private: RangeT odsOperands; }; class mfma_f32_32x32x8bf16_1kAdaptor : public mfma_f32_32x32x8bf16_1kGenericAdaptor<::mlir::ValueRange> { public: using mfma_f32_32x32x8bf16_1kGenericAdaptor::mfma_f32_32x32x8bf16_1kGenericAdaptor; mfma_f32_32x32x8bf16_1kAdaptor(mfma_f32_32x32x8bf16_1k op); ::llvm::LogicalResult verify(::mlir::Location loc); }; class mfma_f32_32x32x8bf16_1k : public ::mlir::Op::Impl, ::mlir::OpTrait::ZeroSuccessors, ::mlir::OpTrait::NOperands<3>::Impl, ::mlir::OpTrait::OpInvariants, ::mlir::BytecodeOpInterface::Trait> { public: using Op::Op; using Op::print; using Adaptor = mfma_f32_32x32x8bf16_1kAdaptor; template using GenericAdaptor = mfma_f32_32x32x8bf16_1kGenericAdaptor; using FoldAdaptor = GenericAdaptor<::llvm::ArrayRef<::mlir::Attribute>>; static constexpr int odsIndex_a = 0; static constexpr int odsIndex_b = 1; static constexpr int odsIndex_c = 2; using Properties = FoldAdaptor::Properties; static ::llvm::ArrayRef<::llvm::StringRef> getAttributeNames() { static ::llvm::StringRef attrNames[] = {::llvm::StringRef("abid"), ::llvm::StringRef("blgp"), ::llvm::StringRef("cbsz")}; return ::llvm::ArrayRef(attrNames); } ::mlir::StringAttr getAbidAttrName() { return getAttributeNameForIndex(0); } static ::mlir::StringAttr getAbidAttrName(::mlir::OperationName name) { return getAttributeNameForIndex(name, 0); } ::mlir::StringAttr getBlgpAttrName() { return getAttributeNameForIndex(1); } static ::mlir::StringAttr getBlgpAttrName(::mlir::OperationName name) { return getAttributeNameForIndex(name, 1); } ::mlir::StringAttr getCbszAttrName() { return getAttributeNameForIndex(2); } static ::mlir::StringAttr getCbszAttrName(::mlir::OperationName name) { return getAttributeNameForIndex(name, 2); } static constexpr ::llvm::StringLiteral getOperationName() { return ::llvm::StringLiteral("rocdl.mfma.f32.32x32x8bf16.1k"); } std::pair getODSOperandIndexAndLength(unsigned index) { return {index, 1}; } ::mlir::Operation::operand_range getODSOperands(unsigned index) { auto valueRange = getODSOperandIndexAndLength(index); return {std::next(getOperation()->operand_begin(), valueRange.first), std::next(getOperation()->operand_begin(), valueRange.first + valueRange.second)}; } ::mlir::TypedValue<::mlir::VectorType> getA() { return ::llvm::cast<::mlir::TypedValue<::mlir::VectorType>>(*getODSOperands(0).begin()); } ::mlir::TypedValue<::mlir::VectorType> getB() { return ::llvm::cast<::mlir::TypedValue<::mlir::VectorType>>(*getODSOperands(1).begin()); } ::mlir::TypedValue<::mlir::VectorType> getC() { return ::llvm::cast<::mlir::TypedValue<::mlir::VectorType>>(*getODSOperands(2).begin()); } ::mlir::OpOperand &getAMutable() { auto range = getODSOperandIndexAndLength(0); return getOperation()->getOpOperand(range.first); } ::mlir::OpOperand &getBMutable() { auto range = getODSOperandIndexAndLength(1); return getOperation()->getOpOperand(range.first); } ::mlir::OpOperand &getCMutable() { auto range = getODSOperandIndexAndLength(2); return getOperation()->getOpOperand(range.first); } std::pair getODSResultIndexAndLength(unsigned index) { return {index, 1}; } ::mlir::Operation::result_range getODSResults(unsigned index) { auto valueRange = getODSResultIndexAndLength(index); return {std::next(getOperation()->result_begin(), valueRange.first), std::next(getOperation()->result_begin(), valueRange.first + valueRange.second)}; } ::mlir::TypedValue<::mlir::VectorType> getRes() { return ::llvm::cast<::mlir::TypedValue<::mlir::VectorType>>(*getODSResults(0).begin()); } static ::llvm::LogicalResult setPropertiesFromAttr(Properties &prop, ::mlir::Attribute attr, ::llvm::function_ref<::mlir::InFlightDiagnostic()> emitError); static ::mlir::Attribute getPropertiesAsAttr(::mlir::MLIRContext *ctx, const Properties &prop); static llvm::hash_code computePropertiesHash(const Properties &prop); static std::optional getInherentAttr(::mlir::MLIRContext *ctx, const Properties &prop, llvm::StringRef name); static void setInherentAttr(Properties &prop, llvm::StringRef name, mlir::Attribute value); static void populateInherentAttrs(::mlir::MLIRContext *ctx, const Properties &prop, ::mlir::NamedAttrList &attrs); static ::llvm::LogicalResult verifyInherentAttrs(::mlir::OperationName opName, ::mlir::NamedAttrList &attrs, llvm::function_ref<::mlir::InFlightDiagnostic()> emitError); static ::llvm::LogicalResult readProperties(::mlir::DialectBytecodeReader &reader, ::mlir::OperationState &state); void writeProperties(::mlir::DialectBytecodeWriter &writer); ::mlir::IntegerAttr getCbszAttr() { return ::llvm::cast<::mlir::IntegerAttr>(getProperties().cbsz); } uint32_t getCbsz(); ::mlir::IntegerAttr getAbidAttr() { return ::llvm::cast<::mlir::IntegerAttr>(getProperties().abid); } uint32_t getAbid(); ::mlir::ROCDL::MFMAPermBAttr getBlgpAttr() { return ::llvm::cast<::mlir::ROCDL::MFMAPermBAttr>(getProperties().blgp); } ::mlir::ROCDL::MFMAPermB getBlgp(); void setCbszAttr(::mlir::IntegerAttr attr) { getProperties().cbsz = attr; } void setCbsz(uint32_t attrValue); void setAbidAttr(::mlir::IntegerAttr attr) { getProperties().abid = attr; } void setAbid(uint32_t attrValue); void setBlgpAttr(::mlir::ROCDL::MFMAPermBAttr attr) { getProperties().blgp = attr; } void setBlgp(::mlir::ROCDL::MFMAPermB attrValue); static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::Type res, ::mlir::Value a, ::mlir::Value b, ::mlir::Value c, ::mlir::IntegerAttr cbsz, ::mlir::IntegerAttr abid, ::mlir::ROCDL::MFMAPermBAttr blgp); static mfma_f32_32x32x8bf16_1k create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::Type res, ::mlir::Value a, ::mlir::Value b, ::mlir::Value c, ::mlir::IntegerAttr cbsz, ::mlir::IntegerAttr abid, ::mlir::ROCDL::MFMAPermBAttr blgp); static mfma_f32_32x32x8bf16_1k create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::Type res, ::mlir::Value a, ::mlir::Value b, ::mlir::Value c, ::mlir::IntegerAttr cbsz, ::mlir::IntegerAttr abid, ::mlir::ROCDL::MFMAPermBAttr blgp); static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::Value a, ::mlir::Value b, ::mlir::Value c, ::mlir::IntegerAttr cbsz, ::mlir::IntegerAttr abid, ::mlir::ROCDL::MFMAPermBAttr blgp); static mfma_f32_32x32x8bf16_1k create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::Value a, ::mlir::Value b, ::mlir::Value c, ::mlir::IntegerAttr cbsz, ::mlir::IntegerAttr abid, ::mlir::ROCDL::MFMAPermBAttr blgp); static mfma_f32_32x32x8bf16_1k create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::Value a, ::mlir::Value b, ::mlir::Value c, ::mlir::IntegerAttr cbsz, ::mlir::IntegerAttr abid, ::mlir::ROCDL::MFMAPermBAttr blgp); static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::Type res, ::mlir::Value a, ::mlir::Value b, ::mlir::Value c, uint32_t cbsz, uint32_t abid, ::mlir::ROCDL::MFMAPermB blgp); static mfma_f32_32x32x8bf16_1k create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::Type res, ::mlir::Value a, ::mlir::Value b, ::mlir::Value c, uint32_t cbsz, uint32_t abid, ::mlir::ROCDL::MFMAPermB blgp); static mfma_f32_32x32x8bf16_1k create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::Type res, ::mlir::Value a, ::mlir::Value b, ::mlir::Value c, uint32_t cbsz, uint32_t abid, ::mlir::ROCDL::MFMAPermB blgp); static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::Value a, ::mlir::Value b, ::mlir::Value c, uint32_t cbsz, uint32_t abid, ::mlir::ROCDL::MFMAPermB blgp); static mfma_f32_32x32x8bf16_1k create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::Value a, ::mlir::Value b, ::mlir::Value c, uint32_t cbsz, uint32_t abid, ::mlir::ROCDL::MFMAPermB blgp); static mfma_f32_32x32x8bf16_1k create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::Value a, ::mlir::Value b, ::mlir::Value c, uint32_t cbsz, uint32_t abid, ::mlir::ROCDL::MFMAPermB blgp); static void build(::mlir::OpBuilder &, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, ::llvm::ArrayRef<::mlir::NamedAttribute> attributes = {}); static mfma_f32_32x32x8bf16_1k create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, ::llvm::ArrayRef<::mlir::NamedAttribute> attributes = {}); static mfma_f32_32x32x8bf16_1k create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, ::llvm::ArrayRef<::mlir::NamedAttribute> attributes = {}); static void build(::mlir::OpBuilder &, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, const Properties &properties, ::llvm::ArrayRef<::mlir::NamedAttribute> discardableAttributes = {}); static mfma_f32_32x32x8bf16_1k create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, const Properties &properties, ::llvm::ArrayRef<::mlir::NamedAttribute> discardableAttributes = {}); static mfma_f32_32x32x8bf16_1k create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, const Properties &properties, ::llvm::ArrayRef<::mlir::NamedAttribute> discardableAttributes = {}); ::llvm::LogicalResult verifyInvariantsImpl(); ::llvm::LogicalResult verifyInvariants(); static ::mlir::ParseResult parse(::mlir::OpAsmParser &parser, ::mlir::OperationState &result); void print(::mlir::OpAsmPrinter &_odsPrinter); private: ::mlir::StringAttr getAttributeNameForIndex(unsigned index) { return getAttributeNameForIndex((*this)->getName(), index); } static ::mlir::StringAttr getAttributeNameForIndex(::mlir::OperationName name, unsigned index) { assert(index < 3 && "invalid attribute index"); assert(name.getStringRef() == getOperationName() && "invalid operation name"); assert(name.isRegistered() && "Operation isn't registered, missing a " "dependent dialect loading?"); return name.getAttributeNames()[index]; } public: }; } // namespace mlir::ROCDL MLIR_DECLARE_EXPLICIT_TYPE_ID(::mlir::ROCDL::mfma_f32_32x32x8bf16_1k) MLIR_DECLARE_EXPLICIT_TYPE_ID(::mlir::ROCDL::detail::mfma_f32_32x32x8bf16_1kGenericAdaptorBase::Properties) namespace mlir::ROCDL { //===----------------------------------------------------------------------===// // ::mlir::ROCDL::mfma_f32_32x32x8f16 declarations //===----------------------------------------------------------------------===// namespace detail { class mfma_f32_32x32x8f16GenericAdaptorBase { public: struct Properties { using abidTy = ::mlir::IntegerAttr; abidTy abid; auto getAbid() const { auto &propStorage = this->abid; return ::llvm::cast<::mlir::IntegerAttr>(propStorage); } void setAbid(const ::mlir::IntegerAttr &propValue) { this->abid = propValue; } using blgpTy = ::mlir::ROCDL::MFMAPermBAttr; blgpTy blgp; auto getBlgp() const { auto &propStorage = this->blgp; return ::llvm::cast<::mlir::ROCDL::MFMAPermBAttr>(propStorage); } void setBlgp(const ::mlir::ROCDL::MFMAPermBAttr &propValue) { this->blgp = propValue; } using cbszTy = ::mlir::IntegerAttr; cbszTy cbsz; auto getCbsz() const { auto &propStorage = this->cbsz; return ::llvm::cast<::mlir::IntegerAttr>(propStorage); } void setCbsz(const ::mlir::IntegerAttr &propValue) { this->cbsz = propValue; } bool operator==(const Properties &rhs) const { return rhs.abid == this->abid && rhs.blgp == this->blgp && rhs.cbsz == this->cbsz && true; } bool operator!=(const Properties &rhs) const { return !(*this == rhs); } }; protected: ::mlir::DictionaryAttr odsAttrs; ::std::optional<::mlir::OperationName> odsOpName; Properties properties; ::mlir::RegionRange odsRegions; public: mfma_f32_32x32x8f16GenericAdaptorBase(::mlir::DictionaryAttr attrs, const Properties &properties, ::mlir::RegionRange regions = {}) : odsAttrs(attrs), properties(properties), odsRegions(regions) { if (odsAttrs) odsOpName.emplace("rocdl.mfma.f32.32x32x8f16", odsAttrs.getContext()); } mfma_f32_32x32x8f16GenericAdaptorBase(mfma_f32_32x32x8f16 op); std::pair getODSOperandIndexAndLength(unsigned index, unsigned odsOperandsSize) { return {index, 1}; } const Properties &getProperties() { return properties; } ::mlir::DictionaryAttr getAttributes() { return odsAttrs; } ::mlir::IntegerAttr getCbszAttr() { auto attr = ::llvm::cast<::mlir::IntegerAttr>(getProperties().cbsz); return attr; } uint32_t getCbsz(); ::mlir::IntegerAttr getAbidAttr() { auto attr = ::llvm::cast<::mlir::IntegerAttr>(getProperties().abid); return attr; } uint32_t getAbid(); ::mlir::ROCDL::MFMAPermBAttr getBlgpAttr() { auto attr = ::llvm::cast<::mlir::ROCDL::MFMAPermBAttr>(getProperties().blgp); return attr; } ::mlir::ROCDL::MFMAPermB getBlgp(); }; } // namespace detail template class mfma_f32_32x32x8f16GenericAdaptor : public detail::mfma_f32_32x32x8f16GenericAdaptorBase { using ValueT = ::llvm::detail::ValueOfRange; using Base = detail::mfma_f32_32x32x8f16GenericAdaptorBase; static constexpr int odsIndex_a = 0; static constexpr int odsIndex_b = 1; static constexpr int odsIndex_c = 2; public: mfma_f32_32x32x8f16GenericAdaptor(RangeT values, ::mlir::DictionaryAttr attrs, const Properties &properties, ::mlir::RegionRange regions = {}) : Base(attrs, properties, regions), odsOperands(values) {} mfma_f32_32x32x8f16GenericAdaptor(RangeT values, ::mlir::DictionaryAttr attrs, ::mlir::PropertyRef properties, ::mlir::RegionRange regions = {}) : mfma_f32_32x32x8f16GenericAdaptor(values, attrs, (properties ? *properties.as() : Properties{}), regions) {} mfma_f32_32x32x8f16GenericAdaptor(RangeT values, ::mlir::DictionaryAttr attrs = nullptr) : mfma_f32_32x32x8f16GenericAdaptor(values, attrs, Properties{}, {}) {} mfma_f32_32x32x8f16GenericAdaptor(RangeT values, const mfma_f32_32x32x8f16GenericAdaptorBase &base) : Base(base), odsOperands(values) {} template >> mfma_f32_32x32x8f16GenericAdaptor(RangeT values, LateInst op) : Base(op), odsOperands(values) {} std::pair getODSOperandIndexAndLength(unsigned index) { return Base::getODSOperandIndexAndLength(index, odsOperands.size()); } RangeT getODSOperands(unsigned index) { auto valueRange = getODSOperandIndexAndLength(index); return {std::next(odsOperands.begin(), valueRange.first), std::next(odsOperands.begin(), valueRange.first + valueRange.second)}; } ValueT getA() { return (*getODSOperands(0).begin()); } ValueT getB() { return (*getODSOperands(1).begin()); } ValueT getC() { return (*getODSOperands(2).begin()); } RangeT getOperands() { return odsOperands; } private: RangeT odsOperands; }; class mfma_f32_32x32x8f16Adaptor : public mfma_f32_32x32x8f16GenericAdaptor<::mlir::ValueRange> { public: using mfma_f32_32x32x8f16GenericAdaptor::mfma_f32_32x32x8f16GenericAdaptor; mfma_f32_32x32x8f16Adaptor(mfma_f32_32x32x8f16 op); ::llvm::LogicalResult verify(::mlir::Location loc); }; class mfma_f32_32x32x8f16 : public ::mlir::Op::Impl, ::mlir::OpTrait::ZeroSuccessors, ::mlir::OpTrait::NOperands<3>::Impl, ::mlir::OpTrait::OpInvariants, ::mlir::BytecodeOpInterface::Trait> { public: using Op::Op; using Op::print; using Adaptor = mfma_f32_32x32x8f16Adaptor; template using GenericAdaptor = mfma_f32_32x32x8f16GenericAdaptor; using FoldAdaptor = GenericAdaptor<::llvm::ArrayRef<::mlir::Attribute>>; static constexpr int odsIndex_a = 0; static constexpr int odsIndex_b = 1; static constexpr int odsIndex_c = 2; using Properties = FoldAdaptor::Properties; static ::llvm::ArrayRef<::llvm::StringRef> getAttributeNames() { static ::llvm::StringRef attrNames[] = {::llvm::StringRef("abid"), ::llvm::StringRef("blgp"), ::llvm::StringRef("cbsz")}; return ::llvm::ArrayRef(attrNames); } ::mlir::StringAttr getAbidAttrName() { return getAttributeNameForIndex(0); } static ::mlir::StringAttr getAbidAttrName(::mlir::OperationName name) { return getAttributeNameForIndex(name, 0); } ::mlir::StringAttr getBlgpAttrName() { return getAttributeNameForIndex(1); } static ::mlir::StringAttr getBlgpAttrName(::mlir::OperationName name) { return getAttributeNameForIndex(name, 1); } ::mlir::StringAttr getCbszAttrName() { return getAttributeNameForIndex(2); } static ::mlir::StringAttr getCbszAttrName(::mlir::OperationName name) { return getAttributeNameForIndex(name, 2); } static constexpr ::llvm::StringLiteral getOperationName() { return ::llvm::StringLiteral("rocdl.mfma.f32.32x32x8f16"); } std::pair getODSOperandIndexAndLength(unsigned index) { return {index, 1}; } ::mlir::Operation::operand_range getODSOperands(unsigned index) { auto valueRange = getODSOperandIndexAndLength(index); return {std::next(getOperation()->operand_begin(), valueRange.first), std::next(getOperation()->operand_begin(), valueRange.first + valueRange.second)}; } ::mlir::TypedValue<::mlir::VectorType> getA() { return ::llvm::cast<::mlir::TypedValue<::mlir::VectorType>>(*getODSOperands(0).begin()); } ::mlir::TypedValue<::mlir::VectorType> getB() { return ::llvm::cast<::mlir::TypedValue<::mlir::VectorType>>(*getODSOperands(1).begin()); } ::mlir::TypedValue<::mlir::VectorType> getC() { return ::llvm::cast<::mlir::TypedValue<::mlir::VectorType>>(*getODSOperands(2).begin()); } ::mlir::OpOperand &getAMutable() { auto range = getODSOperandIndexAndLength(0); return getOperation()->getOpOperand(range.first); } ::mlir::OpOperand &getBMutable() { auto range = getODSOperandIndexAndLength(1); return getOperation()->getOpOperand(range.first); } ::mlir::OpOperand &getCMutable() { auto range = getODSOperandIndexAndLength(2); return getOperation()->getOpOperand(range.first); } std::pair getODSResultIndexAndLength(unsigned index) { return {index, 1}; } ::mlir::Operation::result_range getODSResults(unsigned index) { auto valueRange = getODSResultIndexAndLength(index); return {std::next(getOperation()->result_begin(), valueRange.first), std::next(getOperation()->result_begin(), valueRange.first + valueRange.second)}; } ::mlir::TypedValue<::mlir::VectorType> getRes() { return ::llvm::cast<::mlir::TypedValue<::mlir::VectorType>>(*getODSResults(0).begin()); } static ::llvm::LogicalResult setPropertiesFromAttr(Properties &prop, ::mlir::Attribute attr, ::llvm::function_ref<::mlir::InFlightDiagnostic()> emitError); static ::mlir::Attribute getPropertiesAsAttr(::mlir::MLIRContext *ctx, const Properties &prop); static llvm::hash_code computePropertiesHash(const Properties &prop); static std::optional getInherentAttr(::mlir::MLIRContext *ctx, const Properties &prop, llvm::StringRef name); static void setInherentAttr(Properties &prop, llvm::StringRef name, mlir::Attribute value); static void populateInherentAttrs(::mlir::MLIRContext *ctx, const Properties &prop, ::mlir::NamedAttrList &attrs); static ::llvm::LogicalResult verifyInherentAttrs(::mlir::OperationName opName, ::mlir::NamedAttrList &attrs, llvm::function_ref<::mlir::InFlightDiagnostic()> emitError); static ::llvm::LogicalResult readProperties(::mlir::DialectBytecodeReader &reader, ::mlir::OperationState &state); void writeProperties(::mlir::DialectBytecodeWriter &writer); ::mlir::IntegerAttr getCbszAttr() { return ::llvm::cast<::mlir::IntegerAttr>(getProperties().cbsz); } uint32_t getCbsz(); ::mlir::IntegerAttr getAbidAttr() { return ::llvm::cast<::mlir::IntegerAttr>(getProperties().abid); } uint32_t getAbid(); ::mlir::ROCDL::MFMAPermBAttr getBlgpAttr() { return ::llvm::cast<::mlir::ROCDL::MFMAPermBAttr>(getProperties().blgp); } ::mlir::ROCDL::MFMAPermB getBlgp(); void setCbszAttr(::mlir::IntegerAttr attr) { getProperties().cbsz = attr; } void setCbsz(uint32_t attrValue); void setAbidAttr(::mlir::IntegerAttr attr) { getProperties().abid = attr; } void setAbid(uint32_t attrValue); void setBlgpAttr(::mlir::ROCDL::MFMAPermBAttr attr) { getProperties().blgp = attr; } void setBlgp(::mlir::ROCDL::MFMAPermB attrValue); static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::Type res, ::mlir::Value a, ::mlir::Value b, ::mlir::Value c, ::mlir::IntegerAttr cbsz, ::mlir::IntegerAttr abid, ::mlir::ROCDL::MFMAPermBAttr blgp); static mfma_f32_32x32x8f16 create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::Type res, ::mlir::Value a, ::mlir::Value b, ::mlir::Value c, ::mlir::IntegerAttr cbsz, ::mlir::IntegerAttr abid, ::mlir::ROCDL::MFMAPermBAttr blgp); static mfma_f32_32x32x8f16 create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::Type res, ::mlir::Value a, ::mlir::Value b, ::mlir::Value c, ::mlir::IntegerAttr cbsz, ::mlir::IntegerAttr abid, ::mlir::ROCDL::MFMAPermBAttr blgp); static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::Value a, ::mlir::Value b, ::mlir::Value c, ::mlir::IntegerAttr cbsz, ::mlir::IntegerAttr abid, ::mlir::ROCDL::MFMAPermBAttr blgp); static mfma_f32_32x32x8f16 create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::Value a, ::mlir::Value b, ::mlir::Value c, ::mlir::IntegerAttr cbsz, ::mlir::IntegerAttr abid, ::mlir::ROCDL::MFMAPermBAttr blgp); static mfma_f32_32x32x8f16 create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::Value a, ::mlir::Value b, ::mlir::Value c, ::mlir::IntegerAttr cbsz, ::mlir::IntegerAttr abid, ::mlir::ROCDL::MFMAPermBAttr blgp); static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::Type res, ::mlir::Value a, ::mlir::Value b, ::mlir::Value c, uint32_t cbsz, uint32_t abid, ::mlir::ROCDL::MFMAPermB blgp); static mfma_f32_32x32x8f16 create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::Type res, ::mlir::Value a, ::mlir::Value b, ::mlir::Value c, uint32_t cbsz, uint32_t abid, ::mlir::ROCDL::MFMAPermB blgp); static mfma_f32_32x32x8f16 create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::Type res, ::mlir::Value a, ::mlir::Value b, ::mlir::Value c, uint32_t cbsz, uint32_t abid, ::mlir::ROCDL::MFMAPermB blgp); static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::Value a, ::mlir::Value b, ::mlir::Value c, uint32_t cbsz, uint32_t abid, ::mlir::ROCDL::MFMAPermB blgp); static mfma_f32_32x32x8f16 create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::Value a, ::mlir::Value b, ::mlir::Value c, uint32_t cbsz, uint32_t abid, ::mlir::ROCDL::MFMAPermB blgp); static mfma_f32_32x32x8f16 create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::Value a, ::mlir::Value b, ::mlir::Value c, uint32_t cbsz, uint32_t abid, ::mlir::ROCDL::MFMAPermB blgp); static void build(::mlir::OpBuilder &, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, ::llvm::ArrayRef<::mlir::NamedAttribute> attributes = {}); static mfma_f32_32x32x8f16 create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, ::llvm::ArrayRef<::mlir::NamedAttribute> attributes = {}); static mfma_f32_32x32x8f16 create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, ::llvm::ArrayRef<::mlir::NamedAttribute> attributes = {}); static void build(::mlir::OpBuilder &, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, const Properties &properties, ::llvm::ArrayRef<::mlir::NamedAttribute> discardableAttributes = {}); static mfma_f32_32x32x8f16 create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, const Properties &properties, ::llvm::ArrayRef<::mlir::NamedAttribute> discardableAttributes = {}); static mfma_f32_32x32x8f16 create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, const Properties &properties, ::llvm::ArrayRef<::mlir::NamedAttribute> discardableAttributes = {}); ::llvm::LogicalResult verifyInvariantsImpl(); ::llvm::LogicalResult verifyInvariants(); static ::mlir::ParseResult parse(::mlir::OpAsmParser &parser, ::mlir::OperationState &result); void print(::mlir::OpAsmPrinter &_odsPrinter); private: ::mlir::StringAttr getAttributeNameForIndex(unsigned index) { return getAttributeNameForIndex((*this)->getName(), index); } static ::mlir::StringAttr getAttributeNameForIndex(::mlir::OperationName name, unsigned index) { assert(index < 3 && "invalid attribute index"); assert(name.getStringRef() == getOperationName() && "invalid operation name"); assert(name.isRegistered() && "Operation isn't registered, missing a " "dependent dialect loading?"); return name.getAttributeNames()[index]; } public: }; } // namespace mlir::ROCDL MLIR_DECLARE_EXPLICIT_TYPE_ID(::mlir::ROCDL::mfma_f32_32x32x8f16) MLIR_DECLARE_EXPLICIT_TYPE_ID(::mlir::ROCDL::detail::mfma_f32_32x32x8f16GenericAdaptorBase::Properties) namespace mlir::ROCDL { //===----------------------------------------------------------------------===// // ::mlir::ROCDL::mfma_f32_4x4x1f32 declarations //===----------------------------------------------------------------------===// namespace detail { class mfma_f32_4x4x1f32GenericAdaptorBase { public: struct Properties { using abidTy = ::mlir::IntegerAttr; abidTy abid; auto getAbid() const { auto &propStorage = this->abid; return ::llvm::cast<::mlir::IntegerAttr>(propStorage); } void setAbid(const ::mlir::IntegerAttr &propValue) { this->abid = propValue; } using blgpTy = ::mlir::ROCDL::MFMAPermBAttr; blgpTy blgp; auto getBlgp() const { auto &propStorage = this->blgp; return ::llvm::cast<::mlir::ROCDL::MFMAPermBAttr>(propStorage); } void setBlgp(const ::mlir::ROCDL::MFMAPermBAttr &propValue) { this->blgp = propValue; } using cbszTy = ::mlir::IntegerAttr; cbszTy cbsz; auto getCbsz() const { auto &propStorage = this->cbsz; return ::llvm::cast<::mlir::IntegerAttr>(propStorage); } void setCbsz(const ::mlir::IntegerAttr &propValue) { this->cbsz = propValue; } bool operator==(const Properties &rhs) const { return rhs.abid == this->abid && rhs.blgp == this->blgp && rhs.cbsz == this->cbsz && true; } bool operator!=(const Properties &rhs) const { return !(*this == rhs); } }; protected: ::mlir::DictionaryAttr odsAttrs; ::std::optional<::mlir::OperationName> odsOpName; Properties properties; ::mlir::RegionRange odsRegions; public: mfma_f32_4x4x1f32GenericAdaptorBase(::mlir::DictionaryAttr attrs, const Properties &properties, ::mlir::RegionRange regions = {}) : odsAttrs(attrs), properties(properties), odsRegions(regions) { if (odsAttrs) odsOpName.emplace("rocdl.mfma.f32.4x4x1f32", odsAttrs.getContext()); } mfma_f32_4x4x1f32GenericAdaptorBase(mfma_f32_4x4x1f32 op); std::pair getODSOperandIndexAndLength(unsigned index, unsigned odsOperandsSize) { return {index, 1}; } const Properties &getProperties() { return properties; } ::mlir::DictionaryAttr getAttributes() { return odsAttrs; } ::mlir::IntegerAttr getCbszAttr() { auto attr = ::llvm::cast<::mlir::IntegerAttr>(getProperties().cbsz); return attr; } uint32_t getCbsz(); ::mlir::IntegerAttr getAbidAttr() { auto attr = ::llvm::cast<::mlir::IntegerAttr>(getProperties().abid); return attr; } uint32_t getAbid(); ::mlir::ROCDL::MFMAPermBAttr getBlgpAttr() { auto attr = ::llvm::cast<::mlir::ROCDL::MFMAPermBAttr>(getProperties().blgp); return attr; } ::mlir::ROCDL::MFMAPermB getBlgp(); }; } // namespace detail template class mfma_f32_4x4x1f32GenericAdaptor : public detail::mfma_f32_4x4x1f32GenericAdaptorBase { using ValueT = ::llvm::detail::ValueOfRange; using Base = detail::mfma_f32_4x4x1f32GenericAdaptorBase; static constexpr int odsIndex_a = 0; static constexpr int odsIndex_b = 1; static constexpr int odsIndex_c = 2; public: mfma_f32_4x4x1f32GenericAdaptor(RangeT values, ::mlir::DictionaryAttr attrs, const Properties &properties, ::mlir::RegionRange regions = {}) : Base(attrs, properties, regions), odsOperands(values) {} mfma_f32_4x4x1f32GenericAdaptor(RangeT values, ::mlir::DictionaryAttr attrs, ::mlir::PropertyRef properties, ::mlir::RegionRange regions = {}) : mfma_f32_4x4x1f32GenericAdaptor(values, attrs, (properties ? *properties.as() : Properties{}), regions) {} mfma_f32_4x4x1f32GenericAdaptor(RangeT values, ::mlir::DictionaryAttr attrs = nullptr) : mfma_f32_4x4x1f32GenericAdaptor(values, attrs, Properties{}, {}) {} mfma_f32_4x4x1f32GenericAdaptor(RangeT values, const mfma_f32_4x4x1f32GenericAdaptorBase &base) : Base(base), odsOperands(values) {} template >> mfma_f32_4x4x1f32GenericAdaptor(RangeT values, LateInst op) : Base(op), odsOperands(values) {} std::pair getODSOperandIndexAndLength(unsigned index) { return Base::getODSOperandIndexAndLength(index, odsOperands.size()); } RangeT getODSOperands(unsigned index) { auto valueRange = getODSOperandIndexAndLength(index); return {std::next(odsOperands.begin(), valueRange.first), std::next(odsOperands.begin(), valueRange.first + valueRange.second)}; } ValueT getA() { return (*getODSOperands(0).begin()); } ValueT getB() { return (*getODSOperands(1).begin()); } ValueT getC() { return (*getODSOperands(2).begin()); } RangeT getOperands() { return odsOperands; } private: RangeT odsOperands; }; class mfma_f32_4x4x1f32Adaptor : public mfma_f32_4x4x1f32GenericAdaptor<::mlir::ValueRange> { public: using mfma_f32_4x4x1f32GenericAdaptor::mfma_f32_4x4x1f32GenericAdaptor; mfma_f32_4x4x1f32Adaptor(mfma_f32_4x4x1f32 op); ::llvm::LogicalResult verify(::mlir::Location loc); }; class mfma_f32_4x4x1f32 : public ::mlir::Op::Impl, ::mlir::OpTrait::ZeroSuccessors, ::mlir::OpTrait::NOperands<3>::Impl, ::mlir::OpTrait::OpInvariants, ::mlir::BytecodeOpInterface::Trait> { public: using Op::Op; using Op::print; using Adaptor = mfma_f32_4x4x1f32Adaptor; template using GenericAdaptor = mfma_f32_4x4x1f32GenericAdaptor; using FoldAdaptor = GenericAdaptor<::llvm::ArrayRef<::mlir::Attribute>>; static constexpr int odsIndex_a = 0; static constexpr int odsIndex_b = 1; static constexpr int odsIndex_c = 2; using Properties = FoldAdaptor::Properties; static ::llvm::ArrayRef<::llvm::StringRef> getAttributeNames() { static ::llvm::StringRef attrNames[] = {::llvm::StringRef("abid"), ::llvm::StringRef("blgp"), ::llvm::StringRef("cbsz")}; return ::llvm::ArrayRef(attrNames); } ::mlir::StringAttr getAbidAttrName() { return getAttributeNameForIndex(0); } static ::mlir::StringAttr getAbidAttrName(::mlir::OperationName name) { return getAttributeNameForIndex(name, 0); } ::mlir::StringAttr getBlgpAttrName() { return getAttributeNameForIndex(1); } static ::mlir::StringAttr getBlgpAttrName(::mlir::OperationName name) { return getAttributeNameForIndex(name, 1); } ::mlir::StringAttr getCbszAttrName() { return getAttributeNameForIndex(2); } static ::mlir::StringAttr getCbszAttrName(::mlir::OperationName name) { return getAttributeNameForIndex(name, 2); } static constexpr ::llvm::StringLiteral getOperationName() { return ::llvm::StringLiteral("rocdl.mfma.f32.4x4x1f32"); } std::pair getODSOperandIndexAndLength(unsigned index) { return {index, 1}; } ::mlir::Operation::operand_range getODSOperands(unsigned index) { auto valueRange = getODSOperandIndexAndLength(index); return {std::next(getOperation()->operand_begin(), valueRange.first), std::next(getOperation()->operand_begin(), valueRange.first + valueRange.second)}; } ::mlir::TypedValue<::mlir::Type> getA() { return ::llvm::cast<::mlir::TypedValue<::mlir::Type>>(*getODSOperands(0).begin()); } ::mlir::TypedValue<::mlir::Type> getB() { return ::llvm::cast<::mlir::TypedValue<::mlir::Type>>(*getODSOperands(1).begin()); } ::mlir::TypedValue<::mlir::VectorType> getC() { return ::llvm::cast<::mlir::TypedValue<::mlir::VectorType>>(*getODSOperands(2).begin()); } ::mlir::OpOperand &getAMutable() { auto range = getODSOperandIndexAndLength(0); return getOperation()->getOpOperand(range.first); } ::mlir::OpOperand &getBMutable() { auto range = getODSOperandIndexAndLength(1); return getOperation()->getOpOperand(range.first); } ::mlir::OpOperand &getCMutable() { auto range = getODSOperandIndexAndLength(2); return getOperation()->getOpOperand(range.first); } std::pair getODSResultIndexAndLength(unsigned index) { return {index, 1}; } ::mlir::Operation::result_range getODSResults(unsigned index) { auto valueRange = getODSResultIndexAndLength(index); return {std::next(getOperation()->result_begin(), valueRange.first), std::next(getOperation()->result_begin(), valueRange.first + valueRange.second)}; } ::mlir::TypedValue<::mlir::VectorType> getRes() { return ::llvm::cast<::mlir::TypedValue<::mlir::VectorType>>(*getODSResults(0).begin()); } static ::llvm::LogicalResult setPropertiesFromAttr(Properties &prop, ::mlir::Attribute attr, ::llvm::function_ref<::mlir::InFlightDiagnostic()> emitError); static ::mlir::Attribute getPropertiesAsAttr(::mlir::MLIRContext *ctx, const Properties &prop); static llvm::hash_code computePropertiesHash(const Properties &prop); static std::optional getInherentAttr(::mlir::MLIRContext *ctx, const Properties &prop, llvm::StringRef name); static void setInherentAttr(Properties &prop, llvm::StringRef name, mlir::Attribute value); static void populateInherentAttrs(::mlir::MLIRContext *ctx, const Properties &prop, ::mlir::NamedAttrList &attrs); static ::llvm::LogicalResult verifyInherentAttrs(::mlir::OperationName opName, ::mlir::NamedAttrList &attrs, llvm::function_ref<::mlir::InFlightDiagnostic()> emitError); static ::llvm::LogicalResult readProperties(::mlir::DialectBytecodeReader &reader, ::mlir::OperationState &state); void writeProperties(::mlir::DialectBytecodeWriter &writer); ::mlir::IntegerAttr getCbszAttr() { return ::llvm::cast<::mlir::IntegerAttr>(getProperties().cbsz); } uint32_t getCbsz(); ::mlir::IntegerAttr getAbidAttr() { return ::llvm::cast<::mlir::IntegerAttr>(getProperties().abid); } uint32_t getAbid(); ::mlir::ROCDL::MFMAPermBAttr getBlgpAttr() { return ::llvm::cast<::mlir::ROCDL::MFMAPermBAttr>(getProperties().blgp); } ::mlir::ROCDL::MFMAPermB getBlgp(); void setCbszAttr(::mlir::IntegerAttr attr) { getProperties().cbsz = attr; } void setCbsz(uint32_t attrValue); void setAbidAttr(::mlir::IntegerAttr attr) { getProperties().abid = attr; } void setAbid(uint32_t attrValue); void setBlgpAttr(::mlir::ROCDL::MFMAPermBAttr attr) { getProperties().blgp = attr; } void setBlgp(::mlir::ROCDL::MFMAPermB attrValue); static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::Type res, ::mlir::Value a, ::mlir::Value b, ::mlir::Value c, ::mlir::IntegerAttr cbsz, ::mlir::IntegerAttr abid, ::mlir::ROCDL::MFMAPermBAttr blgp); static mfma_f32_4x4x1f32 create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::Type res, ::mlir::Value a, ::mlir::Value b, ::mlir::Value c, ::mlir::IntegerAttr cbsz, ::mlir::IntegerAttr abid, ::mlir::ROCDL::MFMAPermBAttr blgp); static mfma_f32_4x4x1f32 create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::Type res, ::mlir::Value a, ::mlir::Value b, ::mlir::Value c, ::mlir::IntegerAttr cbsz, ::mlir::IntegerAttr abid, ::mlir::ROCDL::MFMAPermBAttr blgp); static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::Value a, ::mlir::Value b, ::mlir::Value c, ::mlir::IntegerAttr cbsz, ::mlir::IntegerAttr abid, ::mlir::ROCDL::MFMAPermBAttr blgp); static mfma_f32_4x4x1f32 create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::Value a, ::mlir::Value b, ::mlir::Value c, ::mlir::IntegerAttr cbsz, ::mlir::IntegerAttr abid, ::mlir::ROCDL::MFMAPermBAttr blgp); static mfma_f32_4x4x1f32 create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::Value a, ::mlir::Value b, ::mlir::Value c, ::mlir::IntegerAttr cbsz, ::mlir::IntegerAttr abid, ::mlir::ROCDL::MFMAPermBAttr blgp); static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::Type res, ::mlir::Value a, ::mlir::Value b, ::mlir::Value c, uint32_t cbsz, uint32_t abid, ::mlir::ROCDL::MFMAPermB blgp); static mfma_f32_4x4x1f32 create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::Type res, ::mlir::Value a, ::mlir::Value b, ::mlir::Value c, uint32_t cbsz, uint32_t abid, ::mlir::ROCDL::MFMAPermB blgp); static mfma_f32_4x4x1f32 create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::Type res, ::mlir::Value a, ::mlir::Value b, ::mlir::Value c, uint32_t cbsz, uint32_t abid, ::mlir::ROCDL::MFMAPermB blgp); static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::Value a, ::mlir::Value b, ::mlir::Value c, uint32_t cbsz, uint32_t abid, ::mlir::ROCDL::MFMAPermB blgp); static mfma_f32_4x4x1f32 create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::Value a, ::mlir::Value b, ::mlir::Value c, uint32_t cbsz, uint32_t abid, ::mlir::ROCDL::MFMAPermB blgp); static mfma_f32_4x4x1f32 create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::Value a, ::mlir::Value b, ::mlir::Value c, uint32_t cbsz, uint32_t abid, ::mlir::ROCDL::MFMAPermB blgp); static void build(::mlir::OpBuilder &, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, ::llvm::ArrayRef<::mlir::NamedAttribute> attributes = {}); static mfma_f32_4x4x1f32 create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, ::llvm::ArrayRef<::mlir::NamedAttribute> attributes = {}); static mfma_f32_4x4x1f32 create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, ::llvm::ArrayRef<::mlir::NamedAttribute> attributes = {}); static void build(::mlir::OpBuilder &, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, const Properties &properties, ::llvm::ArrayRef<::mlir::NamedAttribute> discardableAttributes = {}); static mfma_f32_4x4x1f32 create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, const Properties &properties, ::llvm::ArrayRef<::mlir::NamedAttribute> discardableAttributes = {}); static mfma_f32_4x4x1f32 create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, const Properties &properties, ::llvm::ArrayRef<::mlir::NamedAttribute> discardableAttributes = {}); ::llvm::LogicalResult verifyInvariantsImpl(); ::llvm::LogicalResult verifyInvariants(); static ::mlir::ParseResult parse(::mlir::OpAsmParser &parser, ::mlir::OperationState &result); void print(::mlir::OpAsmPrinter &_odsPrinter); private: ::mlir::StringAttr getAttributeNameForIndex(unsigned index) { return getAttributeNameForIndex((*this)->getName(), index); } static ::mlir::StringAttr getAttributeNameForIndex(::mlir::OperationName name, unsigned index) { assert(index < 3 && "invalid attribute index"); assert(name.getStringRef() == getOperationName() && "invalid operation name"); assert(name.isRegistered() && "Operation isn't registered, missing a " "dependent dialect loading?"); return name.getAttributeNames()[index]; } public: }; } // namespace mlir::ROCDL MLIR_DECLARE_EXPLICIT_TYPE_ID(::mlir::ROCDL::mfma_f32_4x4x1f32) MLIR_DECLARE_EXPLICIT_TYPE_ID(::mlir::ROCDL::detail::mfma_f32_4x4x1f32GenericAdaptorBase::Properties) namespace mlir::ROCDL { //===----------------------------------------------------------------------===// // ::mlir::ROCDL::mfma_f32_4x4x2bf16 declarations //===----------------------------------------------------------------------===// namespace detail { class mfma_f32_4x4x2bf16GenericAdaptorBase { public: struct Properties { using abidTy = ::mlir::IntegerAttr; abidTy abid; auto getAbid() const { auto &propStorage = this->abid; return ::llvm::cast<::mlir::IntegerAttr>(propStorage); } void setAbid(const ::mlir::IntegerAttr &propValue) { this->abid = propValue; } using blgpTy = ::mlir::ROCDL::MFMAPermBAttr; blgpTy blgp; auto getBlgp() const { auto &propStorage = this->blgp; return ::llvm::cast<::mlir::ROCDL::MFMAPermBAttr>(propStorage); } void setBlgp(const ::mlir::ROCDL::MFMAPermBAttr &propValue) { this->blgp = propValue; } using cbszTy = ::mlir::IntegerAttr; cbszTy cbsz; auto getCbsz() const { auto &propStorage = this->cbsz; return ::llvm::cast<::mlir::IntegerAttr>(propStorage); } void setCbsz(const ::mlir::IntegerAttr &propValue) { this->cbsz = propValue; } bool operator==(const Properties &rhs) const { return rhs.abid == this->abid && rhs.blgp == this->blgp && rhs.cbsz == this->cbsz && true; } bool operator!=(const Properties &rhs) const { return !(*this == rhs); } }; protected: ::mlir::DictionaryAttr odsAttrs; ::std::optional<::mlir::OperationName> odsOpName; Properties properties; ::mlir::RegionRange odsRegions; public: mfma_f32_4x4x2bf16GenericAdaptorBase(::mlir::DictionaryAttr attrs, const Properties &properties, ::mlir::RegionRange regions = {}) : odsAttrs(attrs), properties(properties), odsRegions(regions) { if (odsAttrs) odsOpName.emplace("rocdl.mfma.f32.4x4x2bf16", odsAttrs.getContext()); } mfma_f32_4x4x2bf16GenericAdaptorBase(mfma_f32_4x4x2bf16 op); std::pair getODSOperandIndexAndLength(unsigned index, unsigned odsOperandsSize) { return {index, 1}; } const Properties &getProperties() { return properties; } ::mlir::DictionaryAttr getAttributes() { return odsAttrs; } ::mlir::IntegerAttr getCbszAttr() { auto attr = ::llvm::cast<::mlir::IntegerAttr>(getProperties().cbsz); return attr; } uint32_t getCbsz(); ::mlir::IntegerAttr getAbidAttr() { auto attr = ::llvm::cast<::mlir::IntegerAttr>(getProperties().abid); return attr; } uint32_t getAbid(); ::mlir::ROCDL::MFMAPermBAttr getBlgpAttr() { auto attr = ::llvm::cast<::mlir::ROCDL::MFMAPermBAttr>(getProperties().blgp); return attr; } ::mlir::ROCDL::MFMAPermB getBlgp(); }; } // namespace detail template class mfma_f32_4x4x2bf16GenericAdaptor : public detail::mfma_f32_4x4x2bf16GenericAdaptorBase { using ValueT = ::llvm::detail::ValueOfRange; using Base = detail::mfma_f32_4x4x2bf16GenericAdaptorBase; static constexpr int odsIndex_a = 0; static constexpr int odsIndex_b = 1; static constexpr int odsIndex_c = 2; public: mfma_f32_4x4x2bf16GenericAdaptor(RangeT values, ::mlir::DictionaryAttr attrs, const Properties &properties, ::mlir::RegionRange regions = {}) : Base(attrs, properties, regions), odsOperands(values) {} mfma_f32_4x4x2bf16GenericAdaptor(RangeT values, ::mlir::DictionaryAttr attrs, ::mlir::PropertyRef properties, ::mlir::RegionRange regions = {}) : mfma_f32_4x4x2bf16GenericAdaptor(values, attrs, (properties ? *properties.as() : Properties{}), regions) {} mfma_f32_4x4x2bf16GenericAdaptor(RangeT values, ::mlir::DictionaryAttr attrs = nullptr) : mfma_f32_4x4x2bf16GenericAdaptor(values, attrs, Properties{}, {}) {} mfma_f32_4x4x2bf16GenericAdaptor(RangeT values, const mfma_f32_4x4x2bf16GenericAdaptorBase &base) : Base(base), odsOperands(values) {} template >> mfma_f32_4x4x2bf16GenericAdaptor(RangeT values, LateInst op) : Base(op), odsOperands(values) {} std::pair getODSOperandIndexAndLength(unsigned index) { return Base::getODSOperandIndexAndLength(index, odsOperands.size()); } RangeT getODSOperands(unsigned index) { auto valueRange = getODSOperandIndexAndLength(index); return {std::next(odsOperands.begin(), valueRange.first), std::next(odsOperands.begin(), valueRange.first + valueRange.second)}; } ValueT getA() { return (*getODSOperands(0).begin()); } ValueT getB() { return (*getODSOperands(1).begin()); } ValueT getC() { return (*getODSOperands(2).begin()); } RangeT getOperands() { return odsOperands; } private: RangeT odsOperands; }; class mfma_f32_4x4x2bf16Adaptor : public mfma_f32_4x4x2bf16GenericAdaptor<::mlir::ValueRange> { public: using mfma_f32_4x4x2bf16GenericAdaptor::mfma_f32_4x4x2bf16GenericAdaptor; mfma_f32_4x4x2bf16Adaptor(mfma_f32_4x4x2bf16 op); ::llvm::LogicalResult verify(::mlir::Location loc); }; class mfma_f32_4x4x2bf16 : public ::mlir::Op::Impl, ::mlir::OpTrait::ZeroSuccessors, ::mlir::OpTrait::NOperands<3>::Impl, ::mlir::OpTrait::OpInvariants, ::mlir::BytecodeOpInterface::Trait> { public: using Op::Op; using Op::print; using Adaptor = mfma_f32_4x4x2bf16Adaptor; template using GenericAdaptor = mfma_f32_4x4x2bf16GenericAdaptor; using FoldAdaptor = GenericAdaptor<::llvm::ArrayRef<::mlir::Attribute>>; static constexpr int odsIndex_a = 0; static constexpr int odsIndex_b = 1; static constexpr int odsIndex_c = 2; using Properties = FoldAdaptor::Properties; static ::llvm::ArrayRef<::llvm::StringRef> getAttributeNames() { static ::llvm::StringRef attrNames[] = {::llvm::StringRef("abid"), ::llvm::StringRef("blgp"), ::llvm::StringRef("cbsz")}; return ::llvm::ArrayRef(attrNames); } ::mlir::StringAttr getAbidAttrName() { return getAttributeNameForIndex(0); } static ::mlir::StringAttr getAbidAttrName(::mlir::OperationName name) { return getAttributeNameForIndex(name, 0); } ::mlir::StringAttr getBlgpAttrName() { return getAttributeNameForIndex(1); } static ::mlir::StringAttr getBlgpAttrName(::mlir::OperationName name) { return getAttributeNameForIndex(name, 1); } ::mlir::StringAttr getCbszAttrName() { return getAttributeNameForIndex(2); } static ::mlir::StringAttr getCbszAttrName(::mlir::OperationName name) { return getAttributeNameForIndex(name, 2); } static constexpr ::llvm::StringLiteral getOperationName() { return ::llvm::StringLiteral("rocdl.mfma.f32.4x4x2bf16"); } std::pair getODSOperandIndexAndLength(unsigned index) { return {index, 1}; } ::mlir::Operation::operand_range getODSOperands(unsigned index) { auto valueRange = getODSOperandIndexAndLength(index); return {std::next(getOperation()->operand_begin(), valueRange.first), std::next(getOperation()->operand_begin(), valueRange.first + valueRange.second)}; } ::mlir::TypedValue<::mlir::VectorType> getA() { return ::llvm::cast<::mlir::TypedValue<::mlir::VectorType>>(*getODSOperands(0).begin()); } ::mlir::TypedValue<::mlir::VectorType> getB() { return ::llvm::cast<::mlir::TypedValue<::mlir::VectorType>>(*getODSOperands(1).begin()); } ::mlir::TypedValue<::mlir::VectorType> getC() { return ::llvm::cast<::mlir::TypedValue<::mlir::VectorType>>(*getODSOperands(2).begin()); } ::mlir::OpOperand &getAMutable() { auto range = getODSOperandIndexAndLength(0); return getOperation()->getOpOperand(range.first); } ::mlir::OpOperand &getBMutable() { auto range = getODSOperandIndexAndLength(1); return getOperation()->getOpOperand(range.first); } ::mlir::OpOperand &getCMutable() { auto range = getODSOperandIndexAndLength(2); return getOperation()->getOpOperand(range.first); } std::pair getODSResultIndexAndLength(unsigned index) { return {index, 1}; } ::mlir::Operation::result_range getODSResults(unsigned index) { auto valueRange = getODSResultIndexAndLength(index); return {std::next(getOperation()->result_begin(), valueRange.first), std::next(getOperation()->result_begin(), valueRange.first + valueRange.second)}; } ::mlir::TypedValue<::mlir::VectorType> getRes() { return ::llvm::cast<::mlir::TypedValue<::mlir::VectorType>>(*getODSResults(0).begin()); } static ::llvm::LogicalResult setPropertiesFromAttr(Properties &prop, ::mlir::Attribute attr, ::llvm::function_ref<::mlir::InFlightDiagnostic()> emitError); static ::mlir::Attribute getPropertiesAsAttr(::mlir::MLIRContext *ctx, const Properties &prop); static llvm::hash_code computePropertiesHash(const Properties &prop); static std::optional getInherentAttr(::mlir::MLIRContext *ctx, const Properties &prop, llvm::StringRef name); static void setInherentAttr(Properties &prop, llvm::StringRef name, mlir::Attribute value); static void populateInherentAttrs(::mlir::MLIRContext *ctx, const Properties &prop, ::mlir::NamedAttrList &attrs); static ::llvm::LogicalResult verifyInherentAttrs(::mlir::OperationName opName, ::mlir::NamedAttrList &attrs, llvm::function_ref<::mlir::InFlightDiagnostic()> emitError); static ::llvm::LogicalResult readProperties(::mlir::DialectBytecodeReader &reader, ::mlir::OperationState &state); void writeProperties(::mlir::DialectBytecodeWriter &writer); ::mlir::IntegerAttr getCbszAttr() { return ::llvm::cast<::mlir::IntegerAttr>(getProperties().cbsz); } uint32_t getCbsz(); ::mlir::IntegerAttr getAbidAttr() { return ::llvm::cast<::mlir::IntegerAttr>(getProperties().abid); } uint32_t getAbid(); ::mlir::ROCDL::MFMAPermBAttr getBlgpAttr() { return ::llvm::cast<::mlir::ROCDL::MFMAPermBAttr>(getProperties().blgp); } ::mlir::ROCDL::MFMAPermB getBlgp(); void setCbszAttr(::mlir::IntegerAttr attr) { getProperties().cbsz = attr; } void setCbsz(uint32_t attrValue); void setAbidAttr(::mlir::IntegerAttr attr) { getProperties().abid = attr; } void setAbid(uint32_t attrValue); void setBlgpAttr(::mlir::ROCDL::MFMAPermBAttr attr) { getProperties().blgp = attr; } void setBlgp(::mlir::ROCDL::MFMAPermB attrValue); static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::Type res, ::mlir::Value a, ::mlir::Value b, ::mlir::Value c, ::mlir::IntegerAttr cbsz, ::mlir::IntegerAttr abid, ::mlir::ROCDL::MFMAPermBAttr blgp); static mfma_f32_4x4x2bf16 create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::Type res, ::mlir::Value a, ::mlir::Value b, ::mlir::Value c, ::mlir::IntegerAttr cbsz, ::mlir::IntegerAttr abid, ::mlir::ROCDL::MFMAPermBAttr blgp); static mfma_f32_4x4x2bf16 create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::Type res, ::mlir::Value a, ::mlir::Value b, ::mlir::Value c, ::mlir::IntegerAttr cbsz, ::mlir::IntegerAttr abid, ::mlir::ROCDL::MFMAPermBAttr blgp); static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::Value a, ::mlir::Value b, ::mlir::Value c, ::mlir::IntegerAttr cbsz, ::mlir::IntegerAttr abid, ::mlir::ROCDL::MFMAPermBAttr blgp); static mfma_f32_4x4x2bf16 create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::Value a, ::mlir::Value b, ::mlir::Value c, ::mlir::IntegerAttr cbsz, ::mlir::IntegerAttr abid, ::mlir::ROCDL::MFMAPermBAttr blgp); static mfma_f32_4x4x2bf16 create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::Value a, ::mlir::Value b, ::mlir::Value c, ::mlir::IntegerAttr cbsz, ::mlir::IntegerAttr abid, ::mlir::ROCDL::MFMAPermBAttr blgp); static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::Type res, ::mlir::Value a, ::mlir::Value b, ::mlir::Value c, uint32_t cbsz, uint32_t abid, ::mlir::ROCDL::MFMAPermB blgp); static mfma_f32_4x4x2bf16 create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::Type res, ::mlir::Value a, ::mlir::Value b, ::mlir::Value c, uint32_t cbsz, uint32_t abid, ::mlir::ROCDL::MFMAPermB blgp); static mfma_f32_4x4x2bf16 create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::Type res, ::mlir::Value a, ::mlir::Value b, ::mlir::Value c, uint32_t cbsz, uint32_t abid, ::mlir::ROCDL::MFMAPermB blgp); static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::Value a, ::mlir::Value b, ::mlir::Value c, uint32_t cbsz, uint32_t abid, ::mlir::ROCDL::MFMAPermB blgp); static mfma_f32_4x4x2bf16 create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::Value a, ::mlir::Value b, ::mlir::Value c, uint32_t cbsz, uint32_t abid, ::mlir::ROCDL::MFMAPermB blgp); static mfma_f32_4x4x2bf16 create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::Value a, ::mlir::Value b, ::mlir::Value c, uint32_t cbsz, uint32_t abid, ::mlir::ROCDL::MFMAPermB blgp); static void build(::mlir::OpBuilder &, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, ::llvm::ArrayRef<::mlir::NamedAttribute> attributes = {}); static mfma_f32_4x4x2bf16 create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, ::llvm::ArrayRef<::mlir::NamedAttribute> attributes = {}); static mfma_f32_4x4x2bf16 create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, ::llvm::ArrayRef<::mlir::NamedAttribute> attributes = {}); static void build(::mlir::OpBuilder &, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, const Properties &properties, ::llvm::ArrayRef<::mlir::NamedAttribute> discardableAttributes = {}); static mfma_f32_4x4x2bf16 create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, const Properties &properties, ::llvm::ArrayRef<::mlir::NamedAttribute> discardableAttributes = {}); static mfma_f32_4x4x2bf16 create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, const Properties &properties, ::llvm::ArrayRef<::mlir::NamedAttribute> discardableAttributes = {}); ::llvm::LogicalResult verifyInvariantsImpl(); ::llvm::LogicalResult verifyInvariants(); static ::mlir::ParseResult parse(::mlir::OpAsmParser &parser, ::mlir::OperationState &result); void print(::mlir::OpAsmPrinter &_odsPrinter); private: ::mlir::StringAttr getAttributeNameForIndex(unsigned index) { return getAttributeNameForIndex((*this)->getName(), index); } static ::mlir::StringAttr getAttributeNameForIndex(::mlir::OperationName name, unsigned index) { assert(index < 3 && "invalid attribute index"); assert(name.getStringRef() == getOperationName() && "invalid operation name"); assert(name.isRegistered() && "Operation isn't registered, missing a " "dependent dialect loading?"); return name.getAttributeNames()[index]; } public: }; } // namespace mlir::ROCDL MLIR_DECLARE_EXPLICIT_TYPE_ID(::mlir::ROCDL::mfma_f32_4x4x2bf16) MLIR_DECLARE_EXPLICIT_TYPE_ID(::mlir::ROCDL::detail::mfma_f32_4x4x2bf16GenericAdaptorBase::Properties) namespace mlir::ROCDL { //===----------------------------------------------------------------------===// // ::mlir::ROCDL::mfma_f32_4x4x4bf16_1k declarations //===----------------------------------------------------------------------===// namespace detail { class mfma_f32_4x4x4bf16_1kGenericAdaptorBase { public: struct Properties { using abidTy = ::mlir::IntegerAttr; abidTy abid; auto getAbid() const { auto &propStorage = this->abid; return ::llvm::cast<::mlir::IntegerAttr>(propStorage); } void setAbid(const ::mlir::IntegerAttr &propValue) { this->abid = propValue; } using blgpTy = ::mlir::ROCDL::MFMAPermBAttr; blgpTy blgp; auto getBlgp() const { auto &propStorage = this->blgp; return ::llvm::cast<::mlir::ROCDL::MFMAPermBAttr>(propStorage); } void setBlgp(const ::mlir::ROCDL::MFMAPermBAttr &propValue) { this->blgp = propValue; } using cbszTy = ::mlir::IntegerAttr; cbszTy cbsz; auto getCbsz() const { auto &propStorage = this->cbsz; return ::llvm::cast<::mlir::IntegerAttr>(propStorage); } void setCbsz(const ::mlir::IntegerAttr &propValue) { this->cbsz = propValue; } bool operator==(const Properties &rhs) const { return rhs.abid == this->abid && rhs.blgp == this->blgp && rhs.cbsz == this->cbsz && true; } bool operator!=(const Properties &rhs) const { return !(*this == rhs); } }; protected: ::mlir::DictionaryAttr odsAttrs; ::std::optional<::mlir::OperationName> odsOpName; Properties properties; ::mlir::RegionRange odsRegions; public: mfma_f32_4x4x4bf16_1kGenericAdaptorBase(::mlir::DictionaryAttr attrs, const Properties &properties, ::mlir::RegionRange regions = {}) : odsAttrs(attrs), properties(properties), odsRegions(regions) { if (odsAttrs) odsOpName.emplace("rocdl.mfma.f32.4x4x4bf16.1k", odsAttrs.getContext()); } mfma_f32_4x4x4bf16_1kGenericAdaptorBase(mfma_f32_4x4x4bf16_1k op); std::pair getODSOperandIndexAndLength(unsigned index, unsigned odsOperandsSize) { return {index, 1}; } const Properties &getProperties() { return properties; } ::mlir::DictionaryAttr getAttributes() { return odsAttrs; } ::mlir::IntegerAttr getCbszAttr() { auto attr = ::llvm::cast<::mlir::IntegerAttr>(getProperties().cbsz); return attr; } uint32_t getCbsz(); ::mlir::IntegerAttr getAbidAttr() { auto attr = ::llvm::cast<::mlir::IntegerAttr>(getProperties().abid); return attr; } uint32_t getAbid(); ::mlir::ROCDL::MFMAPermBAttr getBlgpAttr() { auto attr = ::llvm::cast<::mlir::ROCDL::MFMAPermBAttr>(getProperties().blgp); return attr; } ::mlir::ROCDL::MFMAPermB getBlgp(); }; } // namespace detail template class mfma_f32_4x4x4bf16_1kGenericAdaptor : public detail::mfma_f32_4x4x4bf16_1kGenericAdaptorBase { using ValueT = ::llvm::detail::ValueOfRange; using Base = detail::mfma_f32_4x4x4bf16_1kGenericAdaptorBase; static constexpr int odsIndex_a = 0; static constexpr int odsIndex_b = 1; static constexpr int odsIndex_c = 2; public: mfma_f32_4x4x4bf16_1kGenericAdaptor(RangeT values, ::mlir::DictionaryAttr attrs, const Properties &properties, ::mlir::RegionRange regions = {}) : Base(attrs, properties, regions), odsOperands(values) {} mfma_f32_4x4x4bf16_1kGenericAdaptor(RangeT values, ::mlir::DictionaryAttr attrs, ::mlir::PropertyRef properties, ::mlir::RegionRange regions = {}) : mfma_f32_4x4x4bf16_1kGenericAdaptor(values, attrs, (properties ? *properties.as() : Properties{}), regions) {} mfma_f32_4x4x4bf16_1kGenericAdaptor(RangeT values, ::mlir::DictionaryAttr attrs = nullptr) : mfma_f32_4x4x4bf16_1kGenericAdaptor(values, attrs, Properties{}, {}) {} mfma_f32_4x4x4bf16_1kGenericAdaptor(RangeT values, const mfma_f32_4x4x4bf16_1kGenericAdaptorBase &base) : Base(base), odsOperands(values) {} template >> mfma_f32_4x4x4bf16_1kGenericAdaptor(RangeT values, LateInst op) : Base(op), odsOperands(values) {} std::pair getODSOperandIndexAndLength(unsigned index) { return Base::getODSOperandIndexAndLength(index, odsOperands.size()); } RangeT getODSOperands(unsigned index) { auto valueRange = getODSOperandIndexAndLength(index); return {std::next(odsOperands.begin(), valueRange.first), std::next(odsOperands.begin(), valueRange.first + valueRange.second)}; } ValueT getA() { return (*getODSOperands(0).begin()); } ValueT getB() { return (*getODSOperands(1).begin()); } ValueT getC() { return (*getODSOperands(2).begin()); } RangeT getOperands() { return odsOperands; } private: RangeT odsOperands; }; class mfma_f32_4x4x4bf16_1kAdaptor : public mfma_f32_4x4x4bf16_1kGenericAdaptor<::mlir::ValueRange> { public: using mfma_f32_4x4x4bf16_1kGenericAdaptor::mfma_f32_4x4x4bf16_1kGenericAdaptor; mfma_f32_4x4x4bf16_1kAdaptor(mfma_f32_4x4x4bf16_1k op); ::llvm::LogicalResult verify(::mlir::Location loc); }; class mfma_f32_4x4x4bf16_1k : public ::mlir::Op::Impl, ::mlir::OpTrait::ZeroSuccessors, ::mlir::OpTrait::NOperands<3>::Impl, ::mlir::OpTrait::OpInvariants, ::mlir::BytecodeOpInterface::Trait> { public: using Op::Op; using Op::print; using Adaptor = mfma_f32_4x4x4bf16_1kAdaptor; template using GenericAdaptor = mfma_f32_4x4x4bf16_1kGenericAdaptor; using FoldAdaptor = GenericAdaptor<::llvm::ArrayRef<::mlir::Attribute>>; static constexpr int odsIndex_a = 0; static constexpr int odsIndex_b = 1; static constexpr int odsIndex_c = 2; using Properties = FoldAdaptor::Properties; static ::llvm::ArrayRef<::llvm::StringRef> getAttributeNames() { static ::llvm::StringRef attrNames[] = {::llvm::StringRef("abid"), ::llvm::StringRef("blgp"), ::llvm::StringRef("cbsz")}; return ::llvm::ArrayRef(attrNames); } ::mlir::StringAttr getAbidAttrName() { return getAttributeNameForIndex(0); } static ::mlir::StringAttr getAbidAttrName(::mlir::OperationName name) { return getAttributeNameForIndex(name, 0); } ::mlir::StringAttr getBlgpAttrName() { return getAttributeNameForIndex(1); } static ::mlir::StringAttr getBlgpAttrName(::mlir::OperationName name) { return getAttributeNameForIndex(name, 1); } ::mlir::StringAttr getCbszAttrName() { return getAttributeNameForIndex(2); } static ::mlir::StringAttr getCbszAttrName(::mlir::OperationName name) { return getAttributeNameForIndex(name, 2); } static constexpr ::llvm::StringLiteral getOperationName() { return ::llvm::StringLiteral("rocdl.mfma.f32.4x4x4bf16.1k"); } std::pair getODSOperandIndexAndLength(unsigned index) { return {index, 1}; } ::mlir::Operation::operand_range getODSOperands(unsigned index) { auto valueRange = getODSOperandIndexAndLength(index); return {std::next(getOperation()->operand_begin(), valueRange.first), std::next(getOperation()->operand_begin(), valueRange.first + valueRange.second)}; } ::mlir::TypedValue<::mlir::VectorType> getA() { return ::llvm::cast<::mlir::TypedValue<::mlir::VectorType>>(*getODSOperands(0).begin()); } ::mlir::TypedValue<::mlir::VectorType> getB() { return ::llvm::cast<::mlir::TypedValue<::mlir::VectorType>>(*getODSOperands(1).begin()); } ::mlir::TypedValue<::mlir::VectorType> getC() { return ::llvm::cast<::mlir::TypedValue<::mlir::VectorType>>(*getODSOperands(2).begin()); } ::mlir::OpOperand &getAMutable() { auto range = getODSOperandIndexAndLength(0); return getOperation()->getOpOperand(range.first); } ::mlir::OpOperand &getBMutable() { auto range = getODSOperandIndexAndLength(1); return getOperation()->getOpOperand(range.first); } ::mlir::OpOperand &getCMutable() { auto range = getODSOperandIndexAndLength(2); return getOperation()->getOpOperand(range.first); } std::pair getODSResultIndexAndLength(unsigned index) { return {index, 1}; } ::mlir::Operation::result_range getODSResults(unsigned index) { auto valueRange = getODSResultIndexAndLength(index); return {std::next(getOperation()->result_begin(), valueRange.first), std::next(getOperation()->result_begin(), valueRange.first + valueRange.second)}; } ::mlir::TypedValue<::mlir::VectorType> getRes() { return ::llvm::cast<::mlir::TypedValue<::mlir::VectorType>>(*getODSResults(0).begin()); } static ::llvm::LogicalResult setPropertiesFromAttr(Properties &prop, ::mlir::Attribute attr, ::llvm::function_ref<::mlir::InFlightDiagnostic()> emitError); static ::mlir::Attribute getPropertiesAsAttr(::mlir::MLIRContext *ctx, const Properties &prop); static llvm::hash_code computePropertiesHash(const Properties &prop); static std::optional getInherentAttr(::mlir::MLIRContext *ctx, const Properties &prop, llvm::StringRef name); static void setInherentAttr(Properties &prop, llvm::StringRef name, mlir::Attribute value); static void populateInherentAttrs(::mlir::MLIRContext *ctx, const Properties &prop, ::mlir::NamedAttrList &attrs); static ::llvm::LogicalResult verifyInherentAttrs(::mlir::OperationName opName, ::mlir::NamedAttrList &attrs, llvm::function_ref<::mlir::InFlightDiagnostic()> emitError); static ::llvm::LogicalResult readProperties(::mlir::DialectBytecodeReader &reader, ::mlir::OperationState &state); void writeProperties(::mlir::DialectBytecodeWriter &writer); ::mlir::IntegerAttr getCbszAttr() { return ::llvm::cast<::mlir::IntegerAttr>(getProperties().cbsz); } uint32_t getCbsz(); ::mlir::IntegerAttr getAbidAttr() { return ::llvm::cast<::mlir::IntegerAttr>(getProperties().abid); } uint32_t getAbid(); ::mlir::ROCDL::MFMAPermBAttr getBlgpAttr() { return ::llvm::cast<::mlir::ROCDL::MFMAPermBAttr>(getProperties().blgp); } ::mlir::ROCDL::MFMAPermB getBlgp(); void setCbszAttr(::mlir::IntegerAttr attr) { getProperties().cbsz = attr; } void setCbsz(uint32_t attrValue); void setAbidAttr(::mlir::IntegerAttr attr) { getProperties().abid = attr; } void setAbid(uint32_t attrValue); void setBlgpAttr(::mlir::ROCDL::MFMAPermBAttr attr) { getProperties().blgp = attr; } void setBlgp(::mlir::ROCDL::MFMAPermB attrValue); static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::Type res, ::mlir::Value a, ::mlir::Value b, ::mlir::Value c, ::mlir::IntegerAttr cbsz, ::mlir::IntegerAttr abid, ::mlir::ROCDL::MFMAPermBAttr blgp); static mfma_f32_4x4x4bf16_1k create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::Type res, ::mlir::Value a, ::mlir::Value b, ::mlir::Value c, ::mlir::IntegerAttr cbsz, ::mlir::IntegerAttr abid, ::mlir::ROCDL::MFMAPermBAttr blgp); static mfma_f32_4x4x4bf16_1k create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::Type res, ::mlir::Value a, ::mlir::Value b, ::mlir::Value c, ::mlir::IntegerAttr cbsz, ::mlir::IntegerAttr abid, ::mlir::ROCDL::MFMAPermBAttr blgp); static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::Value a, ::mlir::Value b, ::mlir::Value c, ::mlir::IntegerAttr cbsz, ::mlir::IntegerAttr abid, ::mlir::ROCDL::MFMAPermBAttr blgp); static mfma_f32_4x4x4bf16_1k create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::Value a, ::mlir::Value b, ::mlir::Value c, ::mlir::IntegerAttr cbsz, ::mlir::IntegerAttr abid, ::mlir::ROCDL::MFMAPermBAttr blgp); static mfma_f32_4x4x4bf16_1k create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::Value a, ::mlir::Value b, ::mlir::Value c, ::mlir::IntegerAttr cbsz, ::mlir::IntegerAttr abid, ::mlir::ROCDL::MFMAPermBAttr blgp); static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::Type res, ::mlir::Value a, ::mlir::Value b, ::mlir::Value c, uint32_t cbsz, uint32_t abid, ::mlir::ROCDL::MFMAPermB blgp); static mfma_f32_4x4x4bf16_1k create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::Type res, ::mlir::Value a, ::mlir::Value b, ::mlir::Value c, uint32_t cbsz, uint32_t abid, ::mlir::ROCDL::MFMAPermB blgp); static mfma_f32_4x4x4bf16_1k create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::Type res, ::mlir::Value a, ::mlir::Value b, ::mlir::Value c, uint32_t cbsz, uint32_t abid, ::mlir::ROCDL::MFMAPermB blgp); static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::Value a, ::mlir::Value b, ::mlir::Value c, uint32_t cbsz, uint32_t abid, ::mlir::ROCDL::MFMAPermB blgp); static mfma_f32_4x4x4bf16_1k create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::Value a, ::mlir::Value b, ::mlir::Value c, uint32_t cbsz, uint32_t abid, ::mlir::ROCDL::MFMAPermB blgp); static mfma_f32_4x4x4bf16_1k create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::Value a, ::mlir::Value b, ::mlir::Value c, uint32_t cbsz, uint32_t abid, ::mlir::ROCDL::MFMAPermB blgp); static void build(::mlir::OpBuilder &, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, ::llvm::ArrayRef<::mlir::NamedAttribute> attributes = {}); static mfma_f32_4x4x4bf16_1k create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, ::llvm::ArrayRef<::mlir::NamedAttribute> attributes = {}); static mfma_f32_4x4x4bf16_1k create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, ::llvm::ArrayRef<::mlir::NamedAttribute> attributes = {}); static void build(::mlir::OpBuilder &, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, const Properties &properties, ::llvm::ArrayRef<::mlir::NamedAttribute> discardableAttributes = {}); static mfma_f32_4x4x4bf16_1k create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, const Properties &properties, ::llvm::ArrayRef<::mlir::NamedAttribute> discardableAttributes = {}); static mfma_f32_4x4x4bf16_1k create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, const Properties &properties, ::llvm::ArrayRef<::mlir::NamedAttribute> discardableAttributes = {}); ::llvm::LogicalResult verifyInvariantsImpl(); ::llvm::LogicalResult verifyInvariants(); static ::mlir::ParseResult parse(::mlir::OpAsmParser &parser, ::mlir::OperationState &result); void print(::mlir::OpAsmPrinter &_odsPrinter); private: ::mlir::StringAttr getAttributeNameForIndex(unsigned index) { return getAttributeNameForIndex((*this)->getName(), index); } static ::mlir::StringAttr getAttributeNameForIndex(::mlir::OperationName name, unsigned index) { assert(index < 3 && "invalid attribute index"); assert(name.getStringRef() == getOperationName() && "invalid operation name"); assert(name.isRegistered() && "Operation isn't registered, missing a " "dependent dialect loading?"); return name.getAttributeNames()[index]; } public: }; } // namespace mlir::ROCDL MLIR_DECLARE_EXPLICIT_TYPE_ID(::mlir::ROCDL::mfma_f32_4x4x4bf16_1k) MLIR_DECLARE_EXPLICIT_TYPE_ID(::mlir::ROCDL::detail::mfma_f32_4x4x4bf16_1kGenericAdaptorBase::Properties) namespace mlir::ROCDL { //===----------------------------------------------------------------------===// // ::mlir::ROCDL::mfma_f32_4x4x4f16 declarations //===----------------------------------------------------------------------===// namespace detail { class mfma_f32_4x4x4f16GenericAdaptorBase { public: struct Properties { using abidTy = ::mlir::IntegerAttr; abidTy abid; auto getAbid() const { auto &propStorage = this->abid; return ::llvm::cast<::mlir::IntegerAttr>(propStorage); } void setAbid(const ::mlir::IntegerAttr &propValue) { this->abid = propValue; } using blgpTy = ::mlir::ROCDL::MFMAPermBAttr; blgpTy blgp; auto getBlgp() const { auto &propStorage = this->blgp; return ::llvm::cast<::mlir::ROCDL::MFMAPermBAttr>(propStorage); } void setBlgp(const ::mlir::ROCDL::MFMAPermBAttr &propValue) { this->blgp = propValue; } using cbszTy = ::mlir::IntegerAttr; cbszTy cbsz; auto getCbsz() const { auto &propStorage = this->cbsz; return ::llvm::cast<::mlir::IntegerAttr>(propStorage); } void setCbsz(const ::mlir::IntegerAttr &propValue) { this->cbsz = propValue; } bool operator==(const Properties &rhs) const { return rhs.abid == this->abid && rhs.blgp == this->blgp && rhs.cbsz == this->cbsz && true; } bool operator!=(const Properties &rhs) const { return !(*this == rhs); } }; protected: ::mlir::DictionaryAttr odsAttrs; ::std::optional<::mlir::OperationName> odsOpName; Properties properties; ::mlir::RegionRange odsRegions; public: mfma_f32_4x4x4f16GenericAdaptorBase(::mlir::DictionaryAttr attrs, const Properties &properties, ::mlir::RegionRange regions = {}) : odsAttrs(attrs), properties(properties), odsRegions(regions) { if (odsAttrs) odsOpName.emplace("rocdl.mfma.f32.4x4x4f16", odsAttrs.getContext()); } mfma_f32_4x4x4f16GenericAdaptorBase(mfma_f32_4x4x4f16 op); std::pair getODSOperandIndexAndLength(unsigned index, unsigned odsOperandsSize) { return {index, 1}; } const Properties &getProperties() { return properties; } ::mlir::DictionaryAttr getAttributes() { return odsAttrs; } ::mlir::IntegerAttr getCbszAttr() { auto attr = ::llvm::cast<::mlir::IntegerAttr>(getProperties().cbsz); return attr; } uint32_t getCbsz(); ::mlir::IntegerAttr getAbidAttr() { auto attr = ::llvm::cast<::mlir::IntegerAttr>(getProperties().abid); return attr; } uint32_t getAbid(); ::mlir::ROCDL::MFMAPermBAttr getBlgpAttr() { auto attr = ::llvm::cast<::mlir::ROCDL::MFMAPermBAttr>(getProperties().blgp); return attr; } ::mlir::ROCDL::MFMAPermB getBlgp(); }; } // namespace detail template class mfma_f32_4x4x4f16GenericAdaptor : public detail::mfma_f32_4x4x4f16GenericAdaptorBase { using ValueT = ::llvm::detail::ValueOfRange; using Base = detail::mfma_f32_4x4x4f16GenericAdaptorBase; static constexpr int odsIndex_a = 0; static constexpr int odsIndex_b = 1; static constexpr int odsIndex_c = 2; public: mfma_f32_4x4x4f16GenericAdaptor(RangeT values, ::mlir::DictionaryAttr attrs, const Properties &properties, ::mlir::RegionRange regions = {}) : Base(attrs, properties, regions), odsOperands(values) {} mfma_f32_4x4x4f16GenericAdaptor(RangeT values, ::mlir::DictionaryAttr attrs, ::mlir::PropertyRef properties, ::mlir::RegionRange regions = {}) : mfma_f32_4x4x4f16GenericAdaptor(values, attrs, (properties ? *properties.as() : Properties{}), regions) {} mfma_f32_4x4x4f16GenericAdaptor(RangeT values, ::mlir::DictionaryAttr attrs = nullptr) : mfma_f32_4x4x4f16GenericAdaptor(values, attrs, Properties{}, {}) {} mfma_f32_4x4x4f16GenericAdaptor(RangeT values, const mfma_f32_4x4x4f16GenericAdaptorBase &base) : Base(base), odsOperands(values) {} template >> mfma_f32_4x4x4f16GenericAdaptor(RangeT values, LateInst op) : Base(op), odsOperands(values) {} std::pair getODSOperandIndexAndLength(unsigned index) { return Base::getODSOperandIndexAndLength(index, odsOperands.size()); } RangeT getODSOperands(unsigned index) { auto valueRange = getODSOperandIndexAndLength(index); return {std::next(odsOperands.begin(), valueRange.first), std::next(odsOperands.begin(), valueRange.first + valueRange.second)}; } ValueT getA() { return (*getODSOperands(0).begin()); } ValueT getB() { return (*getODSOperands(1).begin()); } ValueT getC() { return (*getODSOperands(2).begin()); } RangeT getOperands() { return odsOperands; } private: RangeT odsOperands; }; class mfma_f32_4x4x4f16Adaptor : public mfma_f32_4x4x4f16GenericAdaptor<::mlir::ValueRange> { public: using mfma_f32_4x4x4f16GenericAdaptor::mfma_f32_4x4x4f16GenericAdaptor; mfma_f32_4x4x4f16Adaptor(mfma_f32_4x4x4f16 op); ::llvm::LogicalResult verify(::mlir::Location loc); }; class mfma_f32_4x4x4f16 : public ::mlir::Op::Impl, ::mlir::OpTrait::ZeroSuccessors, ::mlir::OpTrait::NOperands<3>::Impl, ::mlir::OpTrait::OpInvariants, ::mlir::BytecodeOpInterface::Trait> { public: using Op::Op; using Op::print; using Adaptor = mfma_f32_4x4x4f16Adaptor; template using GenericAdaptor = mfma_f32_4x4x4f16GenericAdaptor; using FoldAdaptor = GenericAdaptor<::llvm::ArrayRef<::mlir::Attribute>>; static constexpr int odsIndex_a = 0; static constexpr int odsIndex_b = 1; static constexpr int odsIndex_c = 2; using Properties = FoldAdaptor::Properties; static ::llvm::ArrayRef<::llvm::StringRef> getAttributeNames() { static ::llvm::StringRef attrNames[] = {::llvm::StringRef("abid"), ::llvm::StringRef("blgp"), ::llvm::StringRef("cbsz")}; return ::llvm::ArrayRef(attrNames); } ::mlir::StringAttr getAbidAttrName() { return getAttributeNameForIndex(0); } static ::mlir::StringAttr getAbidAttrName(::mlir::OperationName name) { return getAttributeNameForIndex(name, 0); } ::mlir::StringAttr getBlgpAttrName() { return getAttributeNameForIndex(1); } static ::mlir::StringAttr getBlgpAttrName(::mlir::OperationName name) { return getAttributeNameForIndex(name, 1); } ::mlir::StringAttr getCbszAttrName() { return getAttributeNameForIndex(2); } static ::mlir::StringAttr getCbszAttrName(::mlir::OperationName name) { return getAttributeNameForIndex(name, 2); } static constexpr ::llvm::StringLiteral getOperationName() { return ::llvm::StringLiteral("rocdl.mfma.f32.4x4x4f16"); } std::pair getODSOperandIndexAndLength(unsigned index) { return {index, 1}; } ::mlir::Operation::operand_range getODSOperands(unsigned index) { auto valueRange = getODSOperandIndexAndLength(index); return {std::next(getOperation()->operand_begin(), valueRange.first), std::next(getOperation()->operand_begin(), valueRange.first + valueRange.second)}; } ::mlir::TypedValue<::mlir::VectorType> getA() { return ::llvm::cast<::mlir::TypedValue<::mlir::VectorType>>(*getODSOperands(0).begin()); } ::mlir::TypedValue<::mlir::VectorType> getB() { return ::llvm::cast<::mlir::TypedValue<::mlir::VectorType>>(*getODSOperands(1).begin()); } ::mlir::TypedValue<::mlir::VectorType> getC() { return ::llvm::cast<::mlir::TypedValue<::mlir::VectorType>>(*getODSOperands(2).begin()); } ::mlir::OpOperand &getAMutable() { auto range = getODSOperandIndexAndLength(0); return getOperation()->getOpOperand(range.first); } ::mlir::OpOperand &getBMutable() { auto range = getODSOperandIndexAndLength(1); return getOperation()->getOpOperand(range.first); } ::mlir::OpOperand &getCMutable() { auto range = getODSOperandIndexAndLength(2); return getOperation()->getOpOperand(range.first); } std::pair getODSResultIndexAndLength(unsigned index) { return {index, 1}; } ::mlir::Operation::result_range getODSResults(unsigned index) { auto valueRange = getODSResultIndexAndLength(index); return {std::next(getOperation()->result_begin(), valueRange.first), std::next(getOperation()->result_begin(), valueRange.first + valueRange.second)}; } ::mlir::TypedValue<::mlir::VectorType> getRes() { return ::llvm::cast<::mlir::TypedValue<::mlir::VectorType>>(*getODSResults(0).begin()); } static ::llvm::LogicalResult setPropertiesFromAttr(Properties &prop, ::mlir::Attribute attr, ::llvm::function_ref<::mlir::InFlightDiagnostic()> emitError); static ::mlir::Attribute getPropertiesAsAttr(::mlir::MLIRContext *ctx, const Properties &prop); static llvm::hash_code computePropertiesHash(const Properties &prop); static std::optional getInherentAttr(::mlir::MLIRContext *ctx, const Properties &prop, llvm::StringRef name); static void setInherentAttr(Properties &prop, llvm::StringRef name, mlir::Attribute value); static void populateInherentAttrs(::mlir::MLIRContext *ctx, const Properties &prop, ::mlir::NamedAttrList &attrs); static ::llvm::LogicalResult verifyInherentAttrs(::mlir::OperationName opName, ::mlir::NamedAttrList &attrs, llvm::function_ref<::mlir::InFlightDiagnostic()> emitError); static ::llvm::LogicalResult readProperties(::mlir::DialectBytecodeReader &reader, ::mlir::OperationState &state); void writeProperties(::mlir::DialectBytecodeWriter &writer); ::mlir::IntegerAttr getCbszAttr() { return ::llvm::cast<::mlir::IntegerAttr>(getProperties().cbsz); } uint32_t getCbsz(); ::mlir::IntegerAttr getAbidAttr() { return ::llvm::cast<::mlir::IntegerAttr>(getProperties().abid); } uint32_t getAbid(); ::mlir::ROCDL::MFMAPermBAttr getBlgpAttr() { return ::llvm::cast<::mlir::ROCDL::MFMAPermBAttr>(getProperties().blgp); } ::mlir::ROCDL::MFMAPermB getBlgp(); void setCbszAttr(::mlir::IntegerAttr attr) { getProperties().cbsz = attr; } void setCbsz(uint32_t attrValue); void setAbidAttr(::mlir::IntegerAttr attr) { getProperties().abid = attr; } void setAbid(uint32_t attrValue); void setBlgpAttr(::mlir::ROCDL::MFMAPermBAttr attr) { getProperties().blgp = attr; } void setBlgp(::mlir::ROCDL::MFMAPermB attrValue); static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::Type res, ::mlir::Value a, ::mlir::Value b, ::mlir::Value c, ::mlir::IntegerAttr cbsz, ::mlir::IntegerAttr abid, ::mlir::ROCDL::MFMAPermBAttr blgp); static mfma_f32_4x4x4f16 create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::Type res, ::mlir::Value a, ::mlir::Value b, ::mlir::Value c, ::mlir::IntegerAttr cbsz, ::mlir::IntegerAttr abid, ::mlir::ROCDL::MFMAPermBAttr blgp); static mfma_f32_4x4x4f16 create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::Type res, ::mlir::Value a, ::mlir::Value b, ::mlir::Value c, ::mlir::IntegerAttr cbsz, ::mlir::IntegerAttr abid, ::mlir::ROCDL::MFMAPermBAttr blgp); static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::Value a, ::mlir::Value b, ::mlir::Value c, ::mlir::IntegerAttr cbsz, ::mlir::IntegerAttr abid, ::mlir::ROCDL::MFMAPermBAttr blgp); static mfma_f32_4x4x4f16 create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::Value a, ::mlir::Value b, ::mlir::Value c, ::mlir::IntegerAttr cbsz, ::mlir::IntegerAttr abid, ::mlir::ROCDL::MFMAPermBAttr blgp); static mfma_f32_4x4x4f16 create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::Value a, ::mlir::Value b, ::mlir::Value c, ::mlir::IntegerAttr cbsz, ::mlir::IntegerAttr abid, ::mlir::ROCDL::MFMAPermBAttr blgp); static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::Type res, ::mlir::Value a, ::mlir::Value b, ::mlir::Value c, uint32_t cbsz, uint32_t abid, ::mlir::ROCDL::MFMAPermB blgp); static mfma_f32_4x4x4f16 create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::Type res, ::mlir::Value a, ::mlir::Value b, ::mlir::Value c, uint32_t cbsz, uint32_t abid, ::mlir::ROCDL::MFMAPermB blgp); static mfma_f32_4x4x4f16 create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::Type res, ::mlir::Value a, ::mlir::Value b, ::mlir::Value c, uint32_t cbsz, uint32_t abid, ::mlir::ROCDL::MFMAPermB blgp); static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::Value a, ::mlir::Value b, ::mlir::Value c, uint32_t cbsz, uint32_t abid, ::mlir::ROCDL::MFMAPermB blgp); static mfma_f32_4x4x4f16 create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::Value a, ::mlir::Value b, ::mlir::Value c, uint32_t cbsz, uint32_t abid, ::mlir::ROCDL::MFMAPermB blgp); static mfma_f32_4x4x4f16 create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::Value a, ::mlir::Value b, ::mlir::Value c, uint32_t cbsz, uint32_t abid, ::mlir::ROCDL::MFMAPermB blgp); static void build(::mlir::OpBuilder &, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, ::llvm::ArrayRef<::mlir::NamedAttribute> attributes = {}); static mfma_f32_4x4x4f16 create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, ::llvm::ArrayRef<::mlir::NamedAttribute> attributes = {}); static mfma_f32_4x4x4f16 create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, ::llvm::ArrayRef<::mlir::NamedAttribute> attributes = {}); static void build(::mlir::OpBuilder &, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, const Properties &properties, ::llvm::ArrayRef<::mlir::NamedAttribute> discardableAttributes = {}); static mfma_f32_4x4x4f16 create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, const Properties &properties, ::llvm::ArrayRef<::mlir::NamedAttribute> discardableAttributes = {}); static mfma_f32_4x4x4f16 create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, const Properties &properties, ::llvm::ArrayRef<::mlir::NamedAttribute> discardableAttributes = {}); ::llvm::LogicalResult verifyInvariantsImpl(); ::llvm::LogicalResult verifyInvariants(); static ::mlir::ParseResult parse(::mlir::OpAsmParser &parser, ::mlir::OperationState &result); void print(::mlir::OpAsmPrinter &_odsPrinter); private: ::mlir::StringAttr getAttributeNameForIndex(unsigned index) { return getAttributeNameForIndex((*this)->getName(), index); } static ::mlir::StringAttr getAttributeNameForIndex(::mlir::OperationName name, unsigned index) { assert(index < 3 && "invalid attribute index"); assert(name.getStringRef() == getOperationName() && "invalid operation name"); assert(name.isRegistered() && "Operation isn't registered, missing a " "dependent dialect loading?"); return name.getAttributeNames()[index]; } public: }; } // namespace mlir::ROCDL MLIR_DECLARE_EXPLICIT_TYPE_ID(::mlir::ROCDL::mfma_f32_4x4x4f16) MLIR_DECLARE_EXPLICIT_TYPE_ID(::mlir::ROCDL::detail::mfma_f32_4x4x4f16GenericAdaptorBase::Properties) namespace mlir::ROCDL { //===----------------------------------------------------------------------===// // ::mlir::ROCDL::mfma_f64_16x16x4f64 declarations //===----------------------------------------------------------------------===// namespace detail { class mfma_f64_16x16x4f64GenericAdaptorBase { public: struct Properties { using abidTy = ::mlir::IntegerAttr; abidTy abid; auto getAbid() const { auto &propStorage = this->abid; return ::llvm::cast<::mlir::IntegerAttr>(propStorage); } void setAbid(const ::mlir::IntegerAttr &propValue) { this->abid = propValue; } using blgpTy = ::mlir::ROCDL::MFMANegModifierAttr; blgpTy blgp; auto getBlgp() const { auto &propStorage = this->blgp; return ::llvm::cast<::mlir::ROCDL::MFMANegModifierAttr>(propStorage); } void setBlgp(const ::mlir::ROCDL::MFMANegModifierAttr &propValue) { this->blgp = propValue; } using cbszTy = ::mlir::IntegerAttr; cbszTy cbsz; auto getCbsz() const { auto &propStorage = this->cbsz; return ::llvm::cast<::mlir::IntegerAttr>(propStorage); } void setCbsz(const ::mlir::IntegerAttr &propValue) { this->cbsz = propValue; } bool operator==(const Properties &rhs) const { return rhs.abid == this->abid && rhs.blgp == this->blgp && rhs.cbsz == this->cbsz && true; } bool operator!=(const Properties &rhs) const { return !(*this == rhs); } }; protected: ::mlir::DictionaryAttr odsAttrs; ::std::optional<::mlir::OperationName> odsOpName; Properties properties; ::mlir::RegionRange odsRegions; public: mfma_f64_16x16x4f64GenericAdaptorBase(::mlir::DictionaryAttr attrs, const Properties &properties, ::mlir::RegionRange regions = {}) : odsAttrs(attrs), properties(properties), odsRegions(regions) { if (odsAttrs) odsOpName.emplace("rocdl.mfma.f64.16x16x4f64", odsAttrs.getContext()); } mfma_f64_16x16x4f64GenericAdaptorBase(mfma_f64_16x16x4f64 op); std::pair getODSOperandIndexAndLength(unsigned index, unsigned odsOperandsSize) { return {index, 1}; } const Properties &getProperties() { return properties; } ::mlir::DictionaryAttr getAttributes() { return odsAttrs; } ::mlir::IntegerAttr getCbszAttr() { auto attr = ::llvm::cast<::mlir::IntegerAttr>(getProperties().cbsz); return attr; } uint32_t getCbsz(); ::mlir::IntegerAttr getAbidAttr() { auto attr = ::llvm::cast<::mlir::IntegerAttr>(getProperties().abid); return attr; } uint32_t getAbid(); ::mlir::ROCDL::MFMANegModifierAttr getBlgpAttr() { auto attr = ::llvm::cast<::mlir::ROCDL::MFMANegModifierAttr>(getProperties().blgp); return attr; } ::mlir::ROCDL::MFMANegModifier getBlgp(); }; } // namespace detail template class mfma_f64_16x16x4f64GenericAdaptor : public detail::mfma_f64_16x16x4f64GenericAdaptorBase { using ValueT = ::llvm::detail::ValueOfRange; using Base = detail::mfma_f64_16x16x4f64GenericAdaptorBase; static constexpr int odsIndex_a = 0; static constexpr int odsIndex_b = 1; static constexpr int odsIndex_c = 2; public: mfma_f64_16x16x4f64GenericAdaptor(RangeT values, ::mlir::DictionaryAttr attrs, const Properties &properties, ::mlir::RegionRange regions = {}) : Base(attrs, properties, regions), odsOperands(values) {} mfma_f64_16x16x4f64GenericAdaptor(RangeT values, ::mlir::DictionaryAttr attrs, ::mlir::PropertyRef properties, ::mlir::RegionRange regions = {}) : mfma_f64_16x16x4f64GenericAdaptor(values, attrs, (properties ? *properties.as() : Properties{}), regions) {} mfma_f64_16x16x4f64GenericAdaptor(RangeT values, ::mlir::DictionaryAttr attrs = nullptr) : mfma_f64_16x16x4f64GenericAdaptor(values, attrs, Properties{}, {}) {} mfma_f64_16x16x4f64GenericAdaptor(RangeT values, const mfma_f64_16x16x4f64GenericAdaptorBase &base) : Base(base), odsOperands(values) {} template >> mfma_f64_16x16x4f64GenericAdaptor(RangeT values, LateInst op) : Base(op), odsOperands(values) {} std::pair getODSOperandIndexAndLength(unsigned index) { return Base::getODSOperandIndexAndLength(index, odsOperands.size()); } RangeT getODSOperands(unsigned index) { auto valueRange = getODSOperandIndexAndLength(index); return {std::next(odsOperands.begin(), valueRange.first), std::next(odsOperands.begin(), valueRange.first + valueRange.second)}; } ValueT getA() { return (*getODSOperands(0).begin()); } ValueT getB() { return (*getODSOperands(1).begin()); } ValueT getC() { return (*getODSOperands(2).begin()); } RangeT getOperands() { return odsOperands; } private: RangeT odsOperands; }; class mfma_f64_16x16x4f64Adaptor : public mfma_f64_16x16x4f64GenericAdaptor<::mlir::ValueRange> { public: using mfma_f64_16x16x4f64GenericAdaptor::mfma_f64_16x16x4f64GenericAdaptor; mfma_f64_16x16x4f64Adaptor(mfma_f64_16x16x4f64 op); ::llvm::LogicalResult verify(::mlir::Location loc); }; class mfma_f64_16x16x4f64 : public ::mlir::Op::Impl, ::mlir::OpTrait::ZeroSuccessors, ::mlir::OpTrait::NOperands<3>::Impl, ::mlir::OpTrait::OpInvariants, ::mlir::BytecodeOpInterface::Trait> { public: using Op::Op; using Op::print; using Adaptor = mfma_f64_16x16x4f64Adaptor; template using GenericAdaptor = mfma_f64_16x16x4f64GenericAdaptor; using FoldAdaptor = GenericAdaptor<::llvm::ArrayRef<::mlir::Attribute>>; static constexpr int odsIndex_a = 0; static constexpr int odsIndex_b = 1; static constexpr int odsIndex_c = 2; using Properties = FoldAdaptor::Properties; static ::llvm::ArrayRef<::llvm::StringRef> getAttributeNames() { static ::llvm::StringRef attrNames[] = {::llvm::StringRef("abid"), ::llvm::StringRef("blgp"), ::llvm::StringRef("cbsz")}; return ::llvm::ArrayRef(attrNames); } ::mlir::StringAttr getAbidAttrName() { return getAttributeNameForIndex(0); } static ::mlir::StringAttr getAbidAttrName(::mlir::OperationName name) { return getAttributeNameForIndex(name, 0); } ::mlir::StringAttr getBlgpAttrName() { return getAttributeNameForIndex(1); } static ::mlir::StringAttr getBlgpAttrName(::mlir::OperationName name) { return getAttributeNameForIndex(name, 1); } ::mlir::StringAttr getCbszAttrName() { return getAttributeNameForIndex(2); } static ::mlir::StringAttr getCbszAttrName(::mlir::OperationName name) { return getAttributeNameForIndex(name, 2); } static constexpr ::llvm::StringLiteral getOperationName() { return ::llvm::StringLiteral("rocdl.mfma.f64.16x16x4f64"); } std::pair getODSOperandIndexAndLength(unsigned index) { return {index, 1}; } ::mlir::Operation::operand_range getODSOperands(unsigned index) { auto valueRange = getODSOperandIndexAndLength(index); return {std::next(getOperation()->operand_begin(), valueRange.first), std::next(getOperation()->operand_begin(), valueRange.first + valueRange.second)}; } ::mlir::TypedValue<::mlir::Type> getA() { return ::llvm::cast<::mlir::TypedValue<::mlir::Type>>(*getODSOperands(0).begin()); } ::mlir::TypedValue<::mlir::Type> getB() { return ::llvm::cast<::mlir::TypedValue<::mlir::Type>>(*getODSOperands(1).begin()); } ::mlir::TypedValue<::mlir::VectorType> getC() { return ::llvm::cast<::mlir::TypedValue<::mlir::VectorType>>(*getODSOperands(2).begin()); } ::mlir::OpOperand &getAMutable() { auto range = getODSOperandIndexAndLength(0); return getOperation()->getOpOperand(range.first); } ::mlir::OpOperand &getBMutable() { auto range = getODSOperandIndexAndLength(1); return getOperation()->getOpOperand(range.first); } ::mlir::OpOperand &getCMutable() { auto range = getODSOperandIndexAndLength(2); return getOperation()->getOpOperand(range.first); } std::pair getODSResultIndexAndLength(unsigned index) { return {index, 1}; } ::mlir::Operation::result_range getODSResults(unsigned index) { auto valueRange = getODSResultIndexAndLength(index); return {std::next(getOperation()->result_begin(), valueRange.first), std::next(getOperation()->result_begin(), valueRange.first + valueRange.second)}; } ::mlir::TypedValue<::mlir::VectorType> getRes() { return ::llvm::cast<::mlir::TypedValue<::mlir::VectorType>>(*getODSResults(0).begin()); } static ::llvm::LogicalResult setPropertiesFromAttr(Properties &prop, ::mlir::Attribute attr, ::llvm::function_ref<::mlir::InFlightDiagnostic()> emitError); static ::mlir::Attribute getPropertiesAsAttr(::mlir::MLIRContext *ctx, const Properties &prop); static llvm::hash_code computePropertiesHash(const Properties &prop); static std::optional getInherentAttr(::mlir::MLIRContext *ctx, const Properties &prop, llvm::StringRef name); static void setInherentAttr(Properties &prop, llvm::StringRef name, mlir::Attribute value); static void populateInherentAttrs(::mlir::MLIRContext *ctx, const Properties &prop, ::mlir::NamedAttrList &attrs); static ::llvm::LogicalResult verifyInherentAttrs(::mlir::OperationName opName, ::mlir::NamedAttrList &attrs, llvm::function_ref<::mlir::InFlightDiagnostic()> emitError); static ::llvm::LogicalResult readProperties(::mlir::DialectBytecodeReader &reader, ::mlir::OperationState &state); void writeProperties(::mlir::DialectBytecodeWriter &writer); ::mlir::IntegerAttr getCbszAttr() { return ::llvm::cast<::mlir::IntegerAttr>(getProperties().cbsz); } uint32_t getCbsz(); ::mlir::IntegerAttr getAbidAttr() { return ::llvm::cast<::mlir::IntegerAttr>(getProperties().abid); } uint32_t getAbid(); ::mlir::ROCDL::MFMANegModifierAttr getBlgpAttr() { return ::llvm::cast<::mlir::ROCDL::MFMANegModifierAttr>(getProperties().blgp); } ::mlir::ROCDL::MFMANegModifier getBlgp(); void setCbszAttr(::mlir::IntegerAttr attr) { getProperties().cbsz = attr; } void setCbsz(uint32_t attrValue); void setAbidAttr(::mlir::IntegerAttr attr) { getProperties().abid = attr; } void setAbid(uint32_t attrValue); void setBlgpAttr(::mlir::ROCDL::MFMANegModifierAttr attr) { getProperties().blgp = attr; } void setBlgp(::mlir::ROCDL::MFMANegModifier attrValue); static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::Type res, ::mlir::Value a, ::mlir::Value b, ::mlir::Value c, ::mlir::IntegerAttr cbsz, ::mlir::IntegerAttr abid, ::mlir::ROCDL::MFMANegModifierAttr blgp); static mfma_f64_16x16x4f64 create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::Type res, ::mlir::Value a, ::mlir::Value b, ::mlir::Value c, ::mlir::IntegerAttr cbsz, ::mlir::IntegerAttr abid, ::mlir::ROCDL::MFMANegModifierAttr blgp); static mfma_f64_16x16x4f64 create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::Type res, ::mlir::Value a, ::mlir::Value b, ::mlir::Value c, ::mlir::IntegerAttr cbsz, ::mlir::IntegerAttr abid, ::mlir::ROCDL::MFMANegModifierAttr blgp); static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::Value a, ::mlir::Value b, ::mlir::Value c, ::mlir::IntegerAttr cbsz, ::mlir::IntegerAttr abid, ::mlir::ROCDL::MFMANegModifierAttr blgp); static mfma_f64_16x16x4f64 create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::Value a, ::mlir::Value b, ::mlir::Value c, ::mlir::IntegerAttr cbsz, ::mlir::IntegerAttr abid, ::mlir::ROCDL::MFMANegModifierAttr blgp); static mfma_f64_16x16x4f64 create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::Value a, ::mlir::Value b, ::mlir::Value c, ::mlir::IntegerAttr cbsz, ::mlir::IntegerAttr abid, ::mlir::ROCDL::MFMANegModifierAttr blgp); static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::Type res, ::mlir::Value a, ::mlir::Value b, ::mlir::Value c, uint32_t cbsz, uint32_t abid, ::mlir::ROCDL::MFMANegModifier blgp); static mfma_f64_16x16x4f64 create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::Type res, ::mlir::Value a, ::mlir::Value b, ::mlir::Value c, uint32_t cbsz, uint32_t abid, ::mlir::ROCDL::MFMANegModifier blgp); static mfma_f64_16x16x4f64 create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::Type res, ::mlir::Value a, ::mlir::Value b, ::mlir::Value c, uint32_t cbsz, uint32_t abid, ::mlir::ROCDL::MFMANegModifier blgp); static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::Value a, ::mlir::Value b, ::mlir::Value c, uint32_t cbsz, uint32_t abid, ::mlir::ROCDL::MFMANegModifier blgp); static mfma_f64_16x16x4f64 create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::Value a, ::mlir::Value b, ::mlir::Value c, uint32_t cbsz, uint32_t abid, ::mlir::ROCDL::MFMANegModifier blgp); static mfma_f64_16x16x4f64 create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::Value a, ::mlir::Value b, ::mlir::Value c, uint32_t cbsz, uint32_t abid, ::mlir::ROCDL::MFMANegModifier blgp); static void build(::mlir::OpBuilder &, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, ::llvm::ArrayRef<::mlir::NamedAttribute> attributes = {}); static mfma_f64_16x16x4f64 create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, ::llvm::ArrayRef<::mlir::NamedAttribute> attributes = {}); static mfma_f64_16x16x4f64 create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, ::llvm::ArrayRef<::mlir::NamedAttribute> attributes = {}); static void build(::mlir::OpBuilder &, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, const Properties &properties, ::llvm::ArrayRef<::mlir::NamedAttribute> discardableAttributes = {}); static mfma_f64_16x16x4f64 create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, const Properties &properties, ::llvm::ArrayRef<::mlir::NamedAttribute> discardableAttributes = {}); static mfma_f64_16x16x4f64 create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, const Properties &properties, ::llvm::ArrayRef<::mlir::NamedAttribute> discardableAttributes = {}); ::llvm::LogicalResult verifyInvariantsImpl(); ::llvm::LogicalResult verifyInvariants(); static ::mlir::ParseResult parse(::mlir::OpAsmParser &parser, ::mlir::OperationState &result); void print(::mlir::OpAsmPrinter &_odsPrinter); private: ::mlir::StringAttr getAttributeNameForIndex(unsigned index) { return getAttributeNameForIndex((*this)->getName(), index); } static ::mlir::StringAttr getAttributeNameForIndex(::mlir::OperationName name, unsigned index) { assert(index < 3 && "invalid attribute index"); assert(name.getStringRef() == getOperationName() && "invalid operation name"); assert(name.isRegistered() && "Operation isn't registered, missing a " "dependent dialect loading?"); return name.getAttributeNames()[index]; } public: }; } // namespace mlir::ROCDL MLIR_DECLARE_EXPLICIT_TYPE_ID(::mlir::ROCDL::mfma_f64_16x16x4f64) MLIR_DECLARE_EXPLICIT_TYPE_ID(::mlir::ROCDL::detail::mfma_f64_16x16x4f64GenericAdaptorBase::Properties) namespace mlir::ROCDL { //===----------------------------------------------------------------------===// // ::mlir::ROCDL::mfma_f64_4x4x4f64 declarations //===----------------------------------------------------------------------===// namespace detail { class mfma_f64_4x4x4f64GenericAdaptorBase { public: struct Properties { using abidTy = ::mlir::IntegerAttr; abidTy abid; auto getAbid() const { auto &propStorage = this->abid; return ::llvm::cast<::mlir::IntegerAttr>(propStorage); } void setAbid(const ::mlir::IntegerAttr &propValue) { this->abid = propValue; } using blgpTy = ::mlir::ROCDL::MFMANegModifierAttr; blgpTy blgp; auto getBlgp() const { auto &propStorage = this->blgp; return ::llvm::cast<::mlir::ROCDL::MFMANegModifierAttr>(propStorage); } void setBlgp(const ::mlir::ROCDL::MFMANegModifierAttr &propValue) { this->blgp = propValue; } using cbszTy = ::mlir::IntegerAttr; cbszTy cbsz; auto getCbsz() const { auto &propStorage = this->cbsz; return ::llvm::cast<::mlir::IntegerAttr>(propStorage); } void setCbsz(const ::mlir::IntegerAttr &propValue) { this->cbsz = propValue; } bool operator==(const Properties &rhs) const { return rhs.abid == this->abid && rhs.blgp == this->blgp && rhs.cbsz == this->cbsz && true; } bool operator!=(const Properties &rhs) const { return !(*this == rhs); } }; protected: ::mlir::DictionaryAttr odsAttrs; ::std::optional<::mlir::OperationName> odsOpName; Properties properties; ::mlir::RegionRange odsRegions; public: mfma_f64_4x4x4f64GenericAdaptorBase(::mlir::DictionaryAttr attrs, const Properties &properties, ::mlir::RegionRange regions = {}) : odsAttrs(attrs), properties(properties), odsRegions(regions) { if (odsAttrs) odsOpName.emplace("rocdl.mfma.f64.4x4x4f64", odsAttrs.getContext()); } mfma_f64_4x4x4f64GenericAdaptorBase(mfma_f64_4x4x4f64 op); std::pair getODSOperandIndexAndLength(unsigned index, unsigned odsOperandsSize) { return {index, 1}; } const Properties &getProperties() { return properties; } ::mlir::DictionaryAttr getAttributes() { return odsAttrs; } ::mlir::IntegerAttr getCbszAttr() { auto attr = ::llvm::cast<::mlir::IntegerAttr>(getProperties().cbsz); return attr; } uint32_t getCbsz(); ::mlir::IntegerAttr getAbidAttr() { auto attr = ::llvm::cast<::mlir::IntegerAttr>(getProperties().abid); return attr; } uint32_t getAbid(); ::mlir::ROCDL::MFMANegModifierAttr getBlgpAttr() { auto attr = ::llvm::cast<::mlir::ROCDL::MFMANegModifierAttr>(getProperties().blgp); return attr; } ::mlir::ROCDL::MFMANegModifier getBlgp(); }; } // namespace detail template class mfma_f64_4x4x4f64GenericAdaptor : public detail::mfma_f64_4x4x4f64GenericAdaptorBase { using ValueT = ::llvm::detail::ValueOfRange; using Base = detail::mfma_f64_4x4x4f64GenericAdaptorBase; static constexpr int odsIndex_a = 0; static constexpr int odsIndex_b = 1; static constexpr int odsIndex_c = 2; public: mfma_f64_4x4x4f64GenericAdaptor(RangeT values, ::mlir::DictionaryAttr attrs, const Properties &properties, ::mlir::RegionRange regions = {}) : Base(attrs, properties, regions), odsOperands(values) {} mfma_f64_4x4x4f64GenericAdaptor(RangeT values, ::mlir::DictionaryAttr attrs, ::mlir::PropertyRef properties, ::mlir::RegionRange regions = {}) : mfma_f64_4x4x4f64GenericAdaptor(values, attrs, (properties ? *properties.as() : Properties{}), regions) {} mfma_f64_4x4x4f64GenericAdaptor(RangeT values, ::mlir::DictionaryAttr attrs = nullptr) : mfma_f64_4x4x4f64GenericAdaptor(values, attrs, Properties{}, {}) {} mfma_f64_4x4x4f64GenericAdaptor(RangeT values, const mfma_f64_4x4x4f64GenericAdaptorBase &base) : Base(base), odsOperands(values) {} template >> mfma_f64_4x4x4f64GenericAdaptor(RangeT values, LateInst op) : Base(op), odsOperands(values) {} std::pair getODSOperandIndexAndLength(unsigned index) { return Base::getODSOperandIndexAndLength(index, odsOperands.size()); } RangeT getODSOperands(unsigned index) { auto valueRange = getODSOperandIndexAndLength(index); return {std::next(odsOperands.begin(), valueRange.first), std::next(odsOperands.begin(), valueRange.first + valueRange.second)}; } ValueT getA() { return (*getODSOperands(0).begin()); } ValueT getB() { return (*getODSOperands(1).begin()); } ValueT getC() { return (*getODSOperands(2).begin()); } RangeT getOperands() { return odsOperands; } private: RangeT odsOperands; }; class mfma_f64_4x4x4f64Adaptor : public mfma_f64_4x4x4f64GenericAdaptor<::mlir::ValueRange> { public: using mfma_f64_4x4x4f64GenericAdaptor::mfma_f64_4x4x4f64GenericAdaptor; mfma_f64_4x4x4f64Adaptor(mfma_f64_4x4x4f64 op); ::llvm::LogicalResult verify(::mlir::Location loc); }; class mfma_f64_4x4x4f64 : public ::mlir::Op::Impl, ::mlir::OpTrait::ZeroSuccessors, ::mlir::OpTrait::NOperands<3>::Impl, ::mlir::OpTrait::OpInvariants, ::mlir::BytecodeOpInterface::Trait> { public: using Op::Op; using Op::print; using Adaptor = mfma_f64_4x4x4f64Adaptor; template using GenericAdaptor = mfma_f64_4x4x4f64GenericAdaptor; using FoldAdaptor = GenericAdaptor<::llvm::ArrayRef<::mlir::Attribute>>; static constexpr int odsIndex_a = 0; static constexpr int odsIndex_b = 1; static constexpr int odsIndex_c = 2; using Properties = FoldAdaptor::Properties; static ::llvm::ArrayRef<::llvm::StringRef> getAttributeNames() { static ::llvm::StringRef attrNames[] = {::llvm::StringRef("abid"), ::llvm::StringRef("blgp"), ::llvm::StringRef("cbsz")}; return ::llvm::ArrayRef(attrNames); } ::mlir::StringAttr getAbidAttrName() { return getAttributeNameForIndex(0); } static ::mlir::StringAttr getAbidAttrName(::mlir::OperationName name) { return getAttributeNameForIndex(name, 0); } ::mlir::StringAttr getBlgpAttrName() { return getAttributeNameForIndex(1); } static ::mlir::StringAttr getBlgpAttrName(::mlir::OperationName name) { return getAttributeNameForIndex(name, 1); } ::mlir::StringAttr getCbszAttrName() { return getAttributeNameForIndex(2); } static ::mlir::StringAttr getCbszAttrName(::mlir::OperationName name) { return getAttributeNameForIndex(name, 2); } static constexpr ::llvm::StringLiteral getOperationName() { return ::llvm::StringLiteral("rocdl.mfma.f64.4x4x4f64"); } std::pair getODSOperandIndexAndLength(unsigned index) { return {index, 1}; } ::mlir::Operation::operand_range getODSOperands(unsigned index) { auto valueRange = getODSOperandIndexAndLength(index); return {std::next(getOperation()->operand_begin(), valueRange.first), std::next(getOperation()->operand_begin(), valueRange.first + valueRange.second)}; } ::mlir::TypedValue<::mlir::Type> getA() { return ::llvm::cast<::mlir::TypedValue<::mlir::Type>>(*getODSOperands(0).begin()); } ::mlir::TypedValue<::mlir::Type> getB() { return ::llvm::cast<::mlir::TypedValue<::mlir::Type>>(*getODSOperands(1).begin()); } ::mlir::TypedValue<::mlir::Type> getC() { return ::llvm::cast<::mlir::TypedValue<::mlir::Type>>(*getODSOperands(2).begin()); } ::mlir::OpOperand &getAMutable() { auto range = getODSOperandIndexAndLength(0); return getOperation()->getOpOperand(range.first); } ::mlir::OpOperand &getBMutable() { auto range = getODSOperandIndexAndLength(1); return getOperation()->getOpOperand(range.first); } ::mlir::OpOperand &getCMutable() { auto range = getODSOperandIndexAndLength(2); return getOperation()->getOpOperand(range.first); } std::pair getODSResultIndexAndLength(unsigned index) { return {index, 1}; } ::mlir::Operation::result_range getODSResults(unsigned index) { auto valueRange = getODSResultIndexAndLength(index); return {std::next(getOperation()->result_begin(), valueRange.first), std::next(getOperation()->result_begin(), valueRange.first + valueRange.second)}; } ::mlir::TypedValue<::mlir::Type> getRes() { return ::llvm::cast<::mlir::TypedValue<::mlir::Type>>(*getODSResults(0).begin()); } static ::llvm::LogicalResult setPropertiesFromAttr(Properties &prop, ::mlir::Attribute attr, ::llvm::function_ref<::mlir::InFlightDiagnostic()> emitError); static ::mlir::Attribute getPropertiesAsAttr(::mlir::MLIRContext *ctx, const Properties &prop); static llvm::hash_code computePropertiesHash(const Properties &prop); static std::optional getInherentAttr(::mlir::MLIRContext *ctx, const Properties &prop, llvm::StringRef name); static void setInherentAttr(Properties &prop, llvm::StringRef name, mlir::Attribute value); static void populateInherentAttrs(::mlir::MLIRContext *ctx, const Properties &prop, ::mlir::NamedAttrList &attrs); static ::llvm::LogicalResult verifyInherentAttrs(::mlir::OperationName opName, ::mlir::NamedAttrList &attrs, llvm::function_ref<::mlir::InFlightDiagnostic()> emitError); static ::llvm::LogicalResult readProperties(::mlir::DialectBytecodeReader &reader, ::mlir::OperationState &state); void writeProperties(::mlir::DialectBytecodeWriter &writer); ::mlir::IntegerAttr getCbszAttr() { return ::llvm::cast<::mlir::IntegerAttr>(getProperties().cbsz); } uint32_t getCbsz(); ::mlir::IntegerAttr getAbidAttr() { return ::llvm::cast<::mlir::IntegerAttr>(getProperties().abid); } uint32_t getAbid(); ::mlir::ROCDL::MFMANegModifierAttr getBlgpAttr() { return ::llvm::cast<::mlir::ROCDL::MFMANegModifierAttr>(getProperties().blgp); } ::mlir::ROCDL::MFMANegModifier getBlgp(); void setCbszAttr(::mlir::IntegerAttr attr) { getProperties().cbsz = attr; } void setCbsz(uint32_t attrValue); void setAbidAttr(::mlir::IntegerAttr attr) { getProperties().abid = attr; } void setAbid(uint32_t attrValue); void setBlgpAttr(::mlir::ROCDL::MFMANegModifierAttr attr) { getProperties().blgp = attr; } void setBlgp(::mlir::ROCDL::MFMANegModifier attrValue); static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::Type res, ::mlir::Value a, ::mlir::Value b, ::mlir::Value c, ::mlir::IntegerAttr cbsz, ::mlir::IntegerAttr abid, ::mlir::ROCDL::MFMANegModifierAttr blgp); static mfma_f64_4x4x4f64 create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::Type res, ::mlir::Value a, ::mlir::Value b, ::mlir::Value c, ::mlir::IntegerAttr cbsz, ::mlir::IntegerAttr abid, ::mlir::ROCDL::MFMANegModifierAttr blgp); static mfma_f64_4x4x4f64 create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::Type res, ::mlir::Value a, ::mlir::Value b, ::mlir::Value c, ::mlir::IntegerAttr cbsz, ::mlir::IntegerAttr abid, ::mlir::ROCDL::MFMANegModifierAttr blgp); static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::Value a, ::mlir::Value b, ::mlir::Value c, ::mlir::IntegerAttr cbsz, ::mlir::IntegerAttr abid, ::mlir::ROCDL::MFMANegModifierAttr blgp); static mfma_f64_4x4x4f64 create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::Value a, ::mlir::Value b, ::mlir::Value c, ::mlir::IntegerAttr cbsz, ::mlir::IntegerAttr abid, ::mlir::ROCDL::MFMANegModifierAttr blgp); static mfma_f64_4x4x4f64 create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::Value a, ::mlir::Value b, ::mlir::Value c, ::mlir::IntegerAttr cbsz, ::mlir::IntegerAttr abid, ::mlir::ROCDL::MFMANegModifierAttr blgp); static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::Type res, ::mlir::Value a, ::mlir::Value b, ::mlir::Value c, uint32_t cbsz, uint32_t abid, ::mlir::ROCDL::MFMANegModifier blgp); static mfma_f64_4x4x4f64 create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::Type res, ::mlir::Value a, ::mlir::Value b, ::mlir::Value c, uint32_t cbsz, uint32_t abid, ::mlir::ROCDL::MFMANegModifier blgp); static mfma_f64_4x4x4f64 create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::Type res, ::mlir::Value a, ::mlir::Value b, ::mlir::Value c, uint32_t cbsz, uint32_t abid, ::mlir::ROCDL::MFMANegModifier blgp); static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::Value a, ::mlir::Value b, ::mlir::Value c, uint32_t cbsz, uint32_t abid, ::mlir::ROCDL::MFMANegModifier blgp); static mfma_f64_4x4x4f64 create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::Value a, ::mlir::Value b, ::mlir::Value c, uint32_t cbsz, uint32_t abid, ::mlir::ROCDL::MFMANegModifier blgp); static mfma_f64_4x4x4f64 create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::Value a, ::mlir::Value b, ::mlir::Value c, uint32_t cbsz, uint32_t abid, ::mlir::ROCDL::MFMANegModifier blgp); static void build(::mlir::OpBuilder &, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, ::llvm::ArrayRef<::mlir::NamedAttribute> attributes = {}); static mfma_f64_4x4x4f64 create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, ::llvm::ArrayRef<::mlir::NamedAttribute> attributes = {}); static mfma_f64_4x4x4f64 create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, ::llvm::ArrayRef<::mlir::NamedAttribute> attributes = {}); static void build(::mlir::OpBuilder &, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, const Properties &properties, ::llvm::ArrayRef<::mlir::NamedAttribute> discardableAttributes = {}); static mfma_f64_4x4x4f64 create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, const Properties &properties, ::llvm::ArrayRef<::mlir::NamedAttribute> discardableAttributes = {}); static mfma_f64_4x4x4f64 create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, const Properties &properties, ::llvm::ArrayRef<::mlir::NamedAttribute> discardableAttributes = {}); ::llvm::LogicalResult verifyInvariantsImpl(); ::llvm::LogicalResult verifyInvariants(); static ::mlir::ParseResult parse(::mlir::OpAsmParser &parser, ::mlir::OperationState &result); void print(::mlir::OpAsmPrinter &_odsPrinter); private: ::mlir::StringAttr getAttributeNameForIndex(unsigned index) { return getAttributeNameForIndex((*this)->getName(), index); } static ::mlir::StringAttr getAttributeNameForIndex(::mlir::OperationName name, unsigned index) { assert(index < 3 && "invalid attribute index"); assert(name.getStringRef() == getOperationName() && "invalid operation name"); assert(name.isRegistered() && "Operation isn't registered, missing a " "dependent dialect loading?"); return name.getAttributeNames()[index]; } public: }; } // namespace mlir::ROCDL MLIR_DECLARE_EXPLICIT_TYPE_ID(::mlir::ROCDL::mfma_f64_4x4x4f64) MLIR_DECLARE_EXPLICIT_TYPE_ID(::mlir::ROCDL::detail::mfma_f64_4x4x4f64GenericAdaptorBase::Properties) namespace mlir::ROCDL { //===----------------------------------------------------------------------===// // ::mlir::ROCDL::mfma_i32_16x16x16i8 declarations //===----------------------------------------------------------------------===// namespace detail { class mfma_i32_16x16x16i8GenericAdaptorBase { public: struct Properties { using abidTy = ::mlir::IntegerAttr; abidTy abid; auto getAbid() const { auto &propStorage = this->abid; return ::llvm::cast<::mlir::IntegerAttr>(propStorage); } void setAbid(const ::mlir::IntegerAttr &propValue) { this->abid = propValue; } using blgpTy = ::mlir::ROCDL::MFMAPermBAttr; blgpTy blgp; auto getBlgp() const { auto &propStorage = this->blgp; return ::llvm::cast<::mlir::ROCDL::MFMAPermBAttr>(propStorage); } void setBlgp(const ::mlir::ROCDL::MFMAPermBAttr &propValue) { this->blgp = propValue; } using cbszTy = ::mlir::IntegerAttr; cbszTy cbsz; auto getCbsz() const { auto &propStorage = this->cbsz; return ::llvm::cast<::mlir::IntegerAttr>(propStorage); } void setCbsz(const ::mlir::IntegerAttr &propValue) { this->cbsz = propValue; } bool operator==(const Properties &rhs) const { return rhs.abid == this->abid && rhs.blgp == this->blgp && rhs.cbsz == this->cbsz && true; } bool operator!=(const Properties &rhs) const { return !(*this == rhs); } }; protected: ::mlir::DictionaryAttr odsAttrs; ::std::optional<::mlir::OperationName> odsOpName; Properties properties; ::mlir::RegionRange odsRegions; public: mfma_i32_16x16x16i8GenericAdaptorBase(::mlir::DictionaryAttr attrs, const Properties &properties, ::mlir::RegionRange regions = {}) : odsAttrs(attrs), properties(properties), odsRegions(regions) { if (odsAttrs) odsOpName.emplace("rocdl.mfma.i32.16x16x16i8", odsAttrs.getContext()); } mfma_i32_16x16x16i8GenericAdaptorBase(mfma_i32_16x16x16i8 op); std::pair getODSOperandIndexAndLength(unsigned index, unsigned odsOperandsSize) { return {index, 1}; } const Properties &getProperties() { return properties; } ::mlir::DictionaryAttr getAttributes() { return odsAttrs; } ::mlir::IntegerAttr getCbszAttr() { auto attr = ::llvm::cast<::mlir::IntegerAttr>(getProperties().cbsz); return attr; } uint32_t getCbsz(); ::mlir::IntegerAttr getAbidAttr() { auto attr = ::llvm::cast<::mlir::IntegerAttr>(getProperties().abid); return attr; } uint32_t getAbid(); ::mlir::ROCDL::MFMAPermBAttr getBlgpAttr() { auto attr = ::llvm::cast<::mlir::ROCDL::MFMAPermBAttr>(getProperties().blgp); return attr; } ::mlir::ROCDL::MFMAPermB getBlgp(); }; } // namespace detail template class mfma_i32_16x16x16i8GenericAdaptor : public detail::mfma_i32_16x16x16i8GenericAdaptorBase { using ValueT = ::llvm::detail::ValueOfRange; using Base = detail::mfma_i32_16x16x16i8GenericAdaptorBase; static constexpr int odsIndex_a = 0; static constexpr int odsIndex_b = 1; static constexpr int odsIndex_c = 2; public: mfma_i32_16x16x16i8GenericAdaptor(RangeT values, ::mlir::DictionaryAttr attrs, const Properties &properties, ::mlir::RegionRange regions = {}) : Base(attrs, properties, regions), odsOperands(values) {} mfma_i32_16x16x16i8GenericAdaptor(RangeT values, ::mlir::DictionaryAttr attrs, ::mlir::PropertyRef properties, ::mlir::RegionRange regions = {}) : mfma_i32_16x16x16i8GenericAdaptor(values, attrs, (properties ? *properties.as() : Properties{}), regions) {} mfma_i32_16x16x16i8GenericAdaptor(RangeT values, ::mlir::DictionaryAttr attrs = nullptr) : mfma_i32_16x16x16i8GenericAdaptor(values, attrs, Properties{}, {}) {} mfma_i32_16x16x16i8GenericAdaptor(RangeT values, const mfma_i32_16x16x16i8GenericAdaptorBase &base) : Base(base), odsOperands(values) {} template >> mfma_i32_16x16x16i8GenericAdaptor(RangeT values, LateInst op) : Base(op), odsOperands(values) {} std::pair getODSOperandIndexAndLength(unsigned index) { return Base::getODSOperandIndexAndLength(index, odsOperands.size()); } RangeT getODSOperands(unsigned index) { auto valueRange = getODSOperandIndexAndLength(index); return {std::next(odsOperands.begin(), valueRange.first), std::next(odsOperands.begin(), valueRange.first + valueRange.second)}; } ValueT getA() { return (*getODSOperands(0).begin()); } ValueT getB() { return (*getODSOperands(1).begin()); } ValueT getC() { return (*getODSOperands(2).begin()); } RangeT getOperands() { return odsOperands; } private: RangeT odsOperands; }; class mfma_i32_16x16x16i8Adaptor : public mfma_i32_16x16x16i8GenericAdaptor<::mlir::ValueRange> { public: using mfma_i32_16x16x16i8GenericAdaptor::mfma_i32_16x16x16i8GenericAdaptor; mfma_i32_16x16x16i8Adaptor(mfma_i32_16x16x16i8 op); ::llvm::LogicalResult verify(::mlir::Location loc); }; class mfma_i32_16x16x16i8 : public ::mlir::Op::Impl, ::mlir::OpTrait::ZeroSuccessors, ::mlir::OpTrait::NOperands<3>::Impl, ::mlir::OpTrait::OpInvariants, ::mlir::BytecodeOpInterface::Trait> { public: using Op::Op; using Op::print; using Adaptor = mfma_i32_16x16x16i8Adaptor; template using GenericAdaptor = mfma_i32_16x16x16i8GenericAdaptor; using FoldAdaptor = GenericAdaptor<::llvm::ArrayRef<::mlir::Attribute>>; static constexpr int odsIndex_a = 0; static constexpr int odsIndex_b = 1; static constexpr int odsIndex_c = 2; using Properties = FoldAdaptor::Properties; static ::llvm::ArrayRef<::llvm::StringRef> getAttributeNames() { static ::llvm::StringRef attrNames[] = {::llvm::StringRef("abid"), ::llvm::StringRef("blgp"), ::llvm::StringRef("cbsz")}; return ::llvm::ArrayRef(attrNames); } ::mlir::StringAttr getAbidAttrName() { return getAttributeNameForIndex(0); } static ::mlir::StringAttr getAbidAttrName(::mlir::OperationName name) { return getAttributeNameForIndex(name, 0); } ::mlir::StringAttr getBlgpAttrName() { return getAttributeNameForIndex(1); } static ::mlir::StringAttr getBlgpAttrName(::mlir::OperationName name) { return getAttributeNameForIndex(name, 1); } ::mlir::StringAttr getCbszAttrName() { return getAttributeNameForIndex(2); } static ::mlir::StringAttr getCbszAttrName(::mlir::OperationName name) { return getAttributeNameForIndex(name, 2); } static constexpr ::llvm::StringLiteral getOperationName() { return ::llvm::StringLiteral("rocdl.mfma.i32.16x16x16i8"); } std::pair getODSOperandIndexAndLength(unsigned index) { return {index, 1}; } ::mlir::Operation::operand_range getODSOperands(unsigned index) { auto valueRange = getODSOperandIndexAndLength(index); return {std::next(getOperation()->operand_begin(), valueRange.first), std::next(getOperation()->operand_begin(), valueRange.first + valueRange.second)}; } ::mlir::TypedValue<::mlir::Type> getA() { return ::llvm::cast<::mlir::TypedValue<::mlir::Type>>(*getODSOperands(0).begin()); } ::mlir::TypedValue<::mlir::Type> getB() { return ::llvm::cast<::mlir::TypedValue<::mlir::Type>>(*getODSOperands(1).begin()); } ::mlir::TypedValue<::mlir::VectorType> getC() { return ::llvm::cast<::mlir::TypedValue<::mlir::VectorType>>(*getODSOperands(2).begin()); } ::mlir::OpOperand &getAMutable() { auto range = getODSOperandIndexAndLength(0); return getOperation()->getOpOperand(range.first); } ::mlir::OpOperand &getBMutable() { auto range = getODSOperandIndexAndLength(1); return getOperation()->getOpOperand(range.first); } ::mlir::OpOperand &getCMutable() { auto range = getODSOperandIndexAndLength(2); return getOperation()->getOpOperand(range.first); } std::pair getODSResultIndexAndLength(unsigned index) { return {index, 1}; } ::mlir::Operation::result_range getODSResults(unsigned index) { auto valueRange = getODSResultIndexAndLength(index); return {std::next(getOperation()->result_begin(), valueRange.first), std::next(getOperation()->result_begin(), valueRange.first + valueRange.second)}; } ::mlir::TypedValue<::mlir::VectorType> getRes() { return ::llvm::cast<::mlir::TypedValue<::mlir::VectorType>>(*getODSResults(0).begin()); } static ::llvm::LogicalResult setPropertiesFromAttr(Properties &prop, ::mlir::Attribute attr, ::llvm::function_ref<::mlir::InFlightDiagnostic()> emitError); static ::mlir::Attribute getPropertiesAsAttr(::mlir::MLIRContext *ctx, const Properties &prop); static llvm::hash_code computePropertiesHash(const Properties &prop); static std::optional getInherentAttr(::mlir::MLIRContext *ctx, const Properties &prop, llvm::StringRef name); static void setInherentAttr(Properties &prop, llvm::StringRef name, mlir::Attribute value); static void populateInherentAttrs(::mlir::MLIRContext *ctx, const Properties &prop, ::mlir::NamedAttrList &attrs); static ::llvm::LogicalResult verifyInherentAttrs(::mlir::OperationName opName, ::mlir::NamedAttrList &attrs, llvm::function_ref<::mlir::InFlightDiagnostic()> emitError); static ::llvm::LogicalResult readProperties(::mlir::DialectBytecodeReader &reader, ::mlir::OperationState &state); void writeProperties(::mlir::DialectBytecodeWriter &writer); ::mlir::IntegerAttr getCbszAttr() { return ::llvm::cast<::mlir::IntegerAttr>(getProperties().cbsz); } uint32_t getCbsz(); ::mlir::IntegerAttr getAbidAttr() { return ::llvm::cast<::mlir::IntegerAttr>(getProperties().abid); } uint32_t getAbid(); ::mlir::ROCDL::MFMAPermBAttr getBlgpAttr() { return ::llvm::cast<::mlir::ROCDL::MFMAPermBAttr>(getProperties().blgp); } ::mlir::ROCDL::MFMAPermB getBlgp(); void setCbszAttr(::mlir::IntegerAttr attr) { getProperties().cbsz = attr; } void setCbsz(uint32_t attrValue); void setAbidAttr(::mlir::IntegerAttr attr) { getProperties().abid = attr; } void setAbid(uint32_t attrValue); void setBlgpAttr(::mlir::ROCDL::MFMAPermBAttr attr) { getProperties().blgp = attr; } void setBlgp(::mlir::ROCDL::MFMAPermB attrValue); static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::Type res, ::mlir::Value a, ::mlir::Value b, ::mlir::Value c, ::mlir::IntegerAttr cbsz, ::mlir::IntegerAttr abid, ::mlir::ROCDL::MFMAPermBAttr blgp); static mfma_i32_16x16x16i8 create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::Type res, ::mlir::Value a, ::mlir::Value b, ::mlir::Value c, ::mlir::IntegerAttr cbsz, ::mlir::IntegerAttr abid, ::mlir::ROCDL::MFMAPermBAttr blgp); static mfma_i32_16x16x16i8 create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::Type res, ::mlir::Value a, ::mlir::Value b, ::mlir::Value c, ::mlir::IntegerAttr cbsz, ::mlir::IntegerAttr abid, ::mlir::ROCDL::MFMAPermBAttr blgp); static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::Value a, ::mlir::Value b, ::mlir::Value c, ::mlir::IntegerAttr cbsz, ::mlir::IntegerAttr abid, ::mlir::ROCDL::MFMAPermBAttr blgp); static mfma_i32_16x16x16i8 create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::Value a, ::mlir::Value b, ::mlir::Value c, ::mlir::IntegerAttr cbsz, ::mlir::IntegerAttr abid, ::mlir::ROCDL::MFMAPermBAttr blgp); static mfma_i32_16x16x16i8 create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::Value a, ::mlir::Value b, ::mlir::Value c, ::mlir::IntegerAttr cbsz, ::mlir::IntegerAttr abid, ::mlir::ROCDL::MFMAPermBAttr blgp); static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::Type res, ::mlir::Value a, ::mlir::Value b, ::mlir::Value c, uint32_t cbsz, uint32_t abid, ::mlir::ROCDL::MFMAPermB blgp); static mfma_i32_16x16x16i8 create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::Type res, ::mlir::Value a, ::mlir::Value b, ::mlir::Value c, uint32_t cbsz, uint32_t abid, ::mlir::ROCDL::MFMAPermB blgp); static mfma_i32_16x16x16i8 create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::Type res, ::mlir::Value a, ::mlir::Value b, ::mlir::Value c, uint32_t cbsz, uint32_t abid, ::mlir::ROCDL::MFMAPermB blgp); static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::Value a, ::mlir::Value b, ::mlir::Value c, uint32_t cbsz, uint32_t abid, ::mlir::ROCDL::MFMAPermB blgp); static mfma_i32_16x16x16i8 create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::Value a, ::mlir::Value b, ::mlir::Value c, uint32_t cbsz, uint32_t abid, ::mlir::ROCDL::MFMAPermB blgp); static mfma_i32_16x16x16i8 create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::Value a, ::mlir::Value b, ::mlir::Value c, uint32_t cbsz, uint32_t abid, ::mlir::ROCDL::MFMAPermB blgp); static void build(::mlir::OpBuilder &, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, ::llvm::ArrayRef<::mlir::NamedAttribute> attributes = {}); static mfma_i32_16x16x16i8 create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, ::llvm::ArrayRef<::mlir::NamedAttribute> attributes = {}); static mfma_i32_16x16x16i8 create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, ::llvm::ArrayRef<::mlir::NamedAttribute> attributes = {}); static void build(::mlir::OpBuilder &, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, const Properties &properties, ::llvm::ArrayRef<::mlir::NamedAttribute> discardableAttributes = {}); static mfma_i32_16x16x16i8 create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, const Properties &properties, ::llvm::ArrayRef<::mlir::NamedAttribute> discardableAttributes = {}); static mfma_i32_16x16x16i8 create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, const Properties &properties, ::llvm::ArrayRef<::mlir::NamedAttribute> discardableAttributes = {}); ::llvm::LogicalResult verifyInvariantsImpl(); ::llvm::LogicalResult verifyInvariants(); static ::mlir::ParseResult parse(::mlir::OpAsmParser &parser, ::mlir::OperationState &result); void print(::mlir::OpAsmPrinter &_odsPrinter); private: ::mlir::StringAttr getAttributeNameForIndex(unsigned index) { return getAttributeNameForIndex((*this)->getName(), index); } static ::mlir::StringAttr getAttributeNameForIndex(::mlir::OperationName name, unsigned index) { assert(index < 3 && "invalid attribute index"); assert(name.getStringRef() == getOperationName() && "invalid operation name"); assert(name.isRegistered() && "Operation isn't registered, missing a " "dependent dialect loading?"); return name.getAttributeNames()[index]; } public: }; } // namespace mlir::ROCDL MLIR_DECLARE_EXPLICIT_TYPE_ID(::mlir::ROCDL::mfma_i32_16x16x16i8) MLIR_DECLARE_EXPLICIT_TYPE_ID(::mlir::ROCDL::detail::mfma_i32_16x16x16i8GenericAdaptorBase::Properties) namespace mlir::ROCDL { //===----------------------------------------------------------------------===// // ::mlir::ROCDL::mfma_i32_16x16x32_i8 declarations //===----------------------------------------------------------------------===// namespace detail { class mfma_i32_16x16x32_i8GenericAdaptorBase { public: struct Properties { using abidTy = ::mlir::IntegerAttr; abidTy abid; auto getAbid() const { auto &propStorage = this->abid; return ::llvm::cast<::mlir::IntegerAttr>(propStorage); } void setAbid(const ::mlir::IntegerAttr &propValue) { this->abid = propValue; } using blgpTy = ::mlir::ROCDL::MFMAPermBAttr; blgpTy blgp; auto getBlgp() const { auto &propStorage = this->blgp; return ::llvm::cast<::mlir::ROCDL::MFMAPermBAttr>(propStorage); } void setBlgp(const ::mlir::ROCDL::MFMAPermBAttr &propValue) { this->blgp = propValue; } using cbszTy = ::mlir::IntegerAttr; cbszTy cbsz; auto getCbsz() const { auto &propStorage = this->cbsz; return ::llvm::cast<::mlir::IntegerAttr>(propStorage); } void setCbsz(const ::mlir::IntegerAttr &propValue) { this->cbsz = propValue; } bool operator==(const Properties &rhs) const { return rhs.abid == this->abid && rhs.blgp == this->blgp && rhs.cbsz == this->cbsz && true; } bool operator!=(const Properties &rhs) const { return !(*this == rhs); } }; protected: ::mlir::DictionaryAttr odsAttrs; ::std::optional<::mlir::OperationName> odsOpName; Properties properties; ::mlir::RegionRange odsRegions; public: mfma_i32_16x16x32_i8GenericAdaptorBase(::mlir::DictionaryAttr attrs, const Properties &properties, ::mlir::RegionRange regions = {}) : odsAttrs(attrs), properties(properties), odsRegions(regions) { if (odsAttrs) odsOpName.emplace("rocdl.mfma.i32.16x16x32.i8", odsAttrs.getContext()); } mfma_i32_16x16x32_i8GenericAdaptorBase(mfma_i32_16x16x32_i8 op); std::pair getODSOperandIndexAndLength(unsigned index, unsigned odsOperandsSize) { return {index, 1}; } const Properties &getProperties() { return properties; } ::mlir::DictionaryAttr getAttributes() { return odsAttrs; } ::mlir::IntegerAttr getCbszAttr() { auto attr = ::llvm::cast<::mlir::IntegerAttr>(getProperties().cbsz); return attr; } uint32_t getCbsz(); ::mlir::IntegerAttr getAbidAttr() { auto attr = ::llvm::cast<::mlir::IntegerAttr>(getProperties().abid); return attr; } uint32_t getAbid(); ::mlir::ROCDL::MFMAPermBAttr getBlgpAttr() { auto attr = ::llvm::cast<::mlir::ROCDL::MFMAPermBAttr>(getProperties().blgp); return attr; } ::mlir::ROCDL::MFMAPermB getBlgp(); }; } // namespace detail template class mfma_i32_16x16x32_i8GenericAdaptor : public detail::mfma_i32_16x16x32_i8GenericAdaptorBase { using ValueT = ::llvm::detail::ValueOfRange; using Base = detail::mfma_i32_16x16x32_i8GenericAdaptorBase; static constexpr int odsIndex_a = 0; static constexpr int odsIndex_b = 1; static constexpr int odsIndex_c = 2; public: mfma_i32_16x16x32_i8GenericAdaptor(RangeT values, ::mlir::DictionaryAttr attrs, const Properties &properties, ::mlir::RegionRange regions = {}) : Base(attrs, properties, regions), odsOperands(values) {} mfma_i32_16x16x32_i8GenericAdaptor(RangeT values, ::mlir::DictionaryAttr attrs, ::mlir::PropertyRef properties, ::mlir::RegionRange regions = {}) : mfma_i32_16x16x32_i8GenericAdaptor(values, attrs, (properties ? *properties.as() : Properties{}), regions) {} mfma_i32_16x16x32_i8GenericAdaptor(RangeT values, ::mlir::DictionaryAttr attrs = nullptr) : mfma_i32_16x16x32_i8GenericAdaptor(values, attrs, Properties{}, {}) {} mfma_i32_16x16x32_i8GenericAdaptor(RangeT values, const mfma_i32_16x16x32_i8GenericAdaptorBase &base) : Base(base), odsOperands(values) {} template >> mfma_i32_16x16x32_i8GenericAdaptor(RangeT values, LateInst op) : Base(op), odsOperands(values) {} std::pair getODSOperandIndexAndLength(unsigned index) { return Base::getODSOperandIndexAndLength(index, odsOperands.size()); } RangeT getODSOperands(unsigned index) { auto valueRange = getODSOperandIndexAndLength(index); return {std::next(odsOperands.begin(), valueRange.first), std::next(odsOperands.begin(), valueRange.first + valueRange.second)}; } ValueT getA() { return (*getODSOperands(0).begin()); } ValueT getB() { return (*getODSOperands(1).begin()); } ValueT getC() { return (*getODSOperands(2).begin()); } RangeT getOperands() { return odsOperands; } private: RangeT odsOperands; }; class mfma_i32_16x16x32_i8Adaptor : public mfma_i32_16x16x32_i8GenericAdaptor<::mlir::ValueRange> { public: using mfma_i32_16x16x32_i8GenericAdaptor::mfma_i32_16x16x32_i8GenericAdaptor; mfma_i32_16x16x32_i8Adaptor(mfma_i32_16x16x32_i8 op); ::llvm::LogicalResult verify(::mlir::Location loc); }; class mfma_i32_16x16x32_i8 : public ::mlir::Op::Impl, ::mlir::OpTrait::ZeroSuccessors, ::mlir::OpTrait::NOperands<3>::Impl, ::mlir::OpTrait::OpInvariants, ::mlir::BytecodeOpInterface::Trait> { public: using Op::Op; using Op::print; using Adaptor = mfma_i32_16x16x32_i8Adaptor; template using GenericAdaptor = mfma_i32_16x16x32_i8GenericAdaptor; using FoldAdaptor = GenericAdaptor<::llvm::ArrayRef<::mlir::Attribute>>; static constexpr int odsIndex_a = 0; static constexpr int odsIndex_b = 1; static constexpr int odsIndex_c = 2; using Properties = FoldAdaptor::Properties; static ::llvm::ArrayRef<::llvm::StringRef> getAttributeNames() { static ::llvm::StringRef attrNames[] = {::llvm::StringRef("abid"), ::llvm::StringRef("blgp"), ::llvm::StringRef("cbsz")}; return ::llvm::ArrayRef(attrNames); } ::mlir::StringAttr getAbidAttrName() { return getAttributeNameForIndex(0); } static ::mlir::StringAttr getAbidAttrName(::mlir::OperationName name) { return getAttributeNameForIndex(name, 0); } ::mlir::StringAttr getBlgpAttrName() { return getAttributeNameForIndex(1); } static ::mlir::StringAttr getBlgpAttrName(::mlir::OperationName name) { return getAttributeNameForIndex(name, 1); } ::mlir::StringAttr getCbszAttrName() { return getAttributeNameForIndex(2); } static ::mlir::StringAttr getCbszAttrName(::mlir::OperationName name) { return getAttributeNameForIndex(name, 2); } static constexpr ::llvm::StringLiteral getOperationName() { return ::llvm::StringLiteral("rocdl.mfma.i32.16x16x32.i8"); } std::pair getODSOperandIndexAndLength(unsigned index) { return {index, 1}; } ::mlir::Operation::operand_range getODSOperands(unsigned index) { auto valueRange = getODSOperandIndexAndLength(index); return {std::next(getOperation()->operand_begin(), valueRange.first), std::next(getOperation()->operand_begin(), valueRange.first + valueRange.second)}; } ::mlir::TypedValue<::mlir::Type> getA() { return ::llvm::cast<::mlir::TypedValue<::mlir::Type>>(*getODSOperands(0).begin()); } ::mlir::TypedValue<::mlir::Type> getB() { return ::llvm::cast<::mlir::TypedValue<::mlir::Type>>(*getODSOperands(1).begin()); } ::mlir::TypedValue<::mlir::VectorType> getC() { return ::llvm::cast<::mlir::TypedValue<::mlir::VectorType>>(*getODSOperands(2).begin()); } ::mlir::OpOperand &getAMutable() { auto range = getODSOperandIndexAndLength(0); return getOperation()->getOpOperand(range.first); } ::mlir::OpOperand &getBMutable() { auto range = getODSOperandIndexAndLength(1); return getOperation()->getOpOperand(range.first); } ::mlir::OpOperand &getCMutable() { auto range = getODSOperandIndexAndLength(2); return getOperation()->getOpOperand(range.first); } std::pair getODSResultIndexAndLength(unsigned index) { return {index, 1}; } ::mlir::Operation::result_range getODSResults(unsigned index) { auto valueRange = getODSResultIndexAndLength(index); return {std::next(getOperation()->result_begin(), valueRange.first), std::next(getOperation()->result_begin(), valueRange.first + valueRange.second)}; } ::mlir::TypedValue<::mlir::VectorType> getRes() { return ::llvm::cast<::mlir::TypedValue<::mlir::VectorType>>(*getODSResults(0).begin()); } static ::llvm::LogicalResult setPropertiesFromAttr(Properties &prop, ::mlir::Attribute attr, ::llvm::function_ref<::mlir::InFlightDiagnostic()> emitError); static ::mlir::Attribute getPropertiesAsAttr(::mlir::MLIRContext *ctx, const Properties &prop); static llvm::hash_code computePropertiesHash(const Properties &prop); static std::optional getInherentAttr(::mlir::MLIRContext *ctx, const Properties &prop, llvm::StringRef name); static void setInherentAttr(Properties &prop, llvm::StringRef name, mlir::Attribute value); static void populateInherentAttrs(::mlir::MLIRContext *ctx, const Properties &prop, ::mlir::NamedAttrList &attrs); static ::llvm::LogicalResult verifyInherentAttrs(::mlir::OperationName opName, ::mlir::NamedAttrList &attrs, llvm::function_ref<::mlir::InFlightDiagnostic()> emitError); static ::llvm::LogicalResult readProperties(::mlir::DialectBytecodeReader &reader, ::mlir::OperationState &state); void writeProperties(::mlir::DialectBytecodeWriter &writer); ::mlir::IntegerAttr getCbszAttr() { return ::llvm::cast<::mlir::IntegerAttr>(getProperties().cbsz); } uint32_t getCbsz(); ::mlir::IntegerAttr getAbidAttr() { return ::llvm::cast<::mlir::IntegerAttr>(getProperties().abid); } uint32_t getAbid(); ::mlir::ROCDL::MFMAPermBAttr getBlgpAttr() { return ::llvm::cast<::mlir::ROCDL::MFMAPermBAttr>(getProperties().blgp); } ::mlir::ROCDL::MFMAPermB getBlgp(); void setCbszAttr(::mlir::IntegerAttr attr) { getProperties().cbsz = attr; } void setCbsz(uint32_t attrValue); void setAbidAttr(::mlir::IntegerAttr attr) { getProperties().abid = attr; } void setAbid(uint32_t attrValue); void setBlgpAttr(::mlir::ROCDL::MFMAPermBAttr attr) { getProperties().blgp = attr; } void setBlgp(::mlir::ROCDL::MFMAPermB attrValue); static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::Type res, ::mlir::Value a, ::mlir::Value b, ::mlir::Value c, ::mlir::IntegerAttr cbsz, ::mlir::IntegerAttr abid, ::mlir::ROCDL::MFMAPermBAttr blgp); static mfma_i32_16x16x32_i8 create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::Type res, ::mlir::Value a, ::mlir::Value b, ::mlir::Value c, ::mlir::IntegerAttr cbsz, ::mlir::IntegerAttr abid, ::mlir::ROCDL::MFMAPermBAttr blgp); static mfma_i32_16x16x32_i8 create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::Type res, ::mlir::Value a, ::mlir::Value b, ::mlir::Value c, ::mlir::IntegerAttr cbsz, ::mlir::IntegerAttr abid, ::mlir::ROCDL::MFMAPermBAttr blgp); static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::Value a, ::mlir::Value b, ::mlir::Value c, ::mlir::IntegerAttr cbsz, ::mlir::IntegerAttr abid, ::mlir::ROCDL::MFMAPermBAttr blgp); static mfma_i32_16x16x32_i8 create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::Value a, ::mlir::Value b, ::mlir::Value c, ::mlir::IntegerAttr cbsz, ::mlir::IntegerAttr abid, ::mlir::ROCDL::MFMAPermBAttr blgp); static mfma_i32_16x16x32_i8 create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::Value a, ::mlir::Value b, ::mlir::Value c, ::mlir::IntegerAttr cbsz, ::mlir::IntegerAttr abid, ::mlir::ROCDL::MFMAPermBAttr blgp); static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::Type res, ::mlir::Value a, ::mlir::Value b, ::mlir::Value c, uint32_t cbsz, uint32_t abid, ::mlir::ROCDL::MFMAPermB blgp); static mfma_i32_16x16x32_i8 create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::Type res, ::mlir::Value a, ::mlir::Value b, ::mlir::Value c, uint32_t cbsz, uint32_t abid, ::mlir::ROCDL::MFMAPermB blgp); static mfma_i32_16x16x32_i8 create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::Type res, ::mlir::Value a, ::mlir::Value b, ::mlir::Value c, uint32_t cbsz, uint32_t abid, ::mlir::ROCDL::MFMAPermB blgp); static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::Value a, ::mlir::Value b, ::mlir::Value c, uint32_t cbsz, uint32_t abid, ::mlir::ROCDL::MFMAPermB blgp); static mfma_i32_16x16x32_i8 create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::Value a, ::mlir::Value b, ::mlir::Value c, uint32_t cbsz, uint32_t abid, ::mlir::ROCDL::MFMAPermB blgp); static mfma_i32_16x16x32_i8 create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::Value a, ::mlir::Value b, ::mlir::Value c, uint32_t cbsz, uint32_t abid, ::mlir::ROCDL::MFMAPermB blgp); static void build(::mlir::OpBuilder &, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, ::llvm::ArrayRef<::mlir::NamedAttribute> attributes = {}); static mfma_i32_16x16x32_i8 create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, ::llvm::ArrayRef<::mlir::NamedAttribute> attributes = {}); static mfma_i32_16x16x32_i8 create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, ::llvm::ArrayRef<::mlir::NamedAttribute> attributes = {}); static void build(::mlir::OpBuilder &, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, const Properties &properties, ::llvm::ArrayRef<::mlir::NamedAttribute> discardableAttributes = {}); static mfma_i32_16x16x32_i8 create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, const Properties &properties, ::llvm::ArrayRef<::mlir::NamedAttribute> discardableAttributes = {}); static mfma_i32_16x16x32_i8 create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, const Properties &properties, ::llvm::ArrayRef<::mlir::NamedAttribute> discardableAttributes = {}); ::llvm::LogicalResult verifyInvariantsImpl(); ::llvm::LogicalResult verifyInvariants(); static ::mlir::ParseResult parse(::mlir::OpAsmParser &parser, ::mlir::OperationState &result); void print(::mlir::OpAsmPrinter &_odsPrinter); private: ::mlir::StringAttr getAttributeNameForIndex(unsigned index) { return getAttributeNameForIndex((*this)->getName(), index); } static ::mlir::StringAttr getAttributeNameForIndex(::mlir::OperationName name, unsigned index) { assert(index < 3 && "invalid attribute index"); assert(name.getStringRef() == getOperationName() && "invalid operation name"); assert(name.isRegistered() && "Operation isn't registered, missing a " "dependent dialect loading?"); return name.getAttributeNames()[index]; } public: }; } // namespace mlir::ROCDL MLIR_DECLARE_EXPLICIT_TYPE_ID(::mlir::ROCDL::mfma_i32_16x16x32_i8) MLIR_DECLARE_EXPLICIT_TYPE_ID(::mlir::ROCDL::detail::mfma_i32_16x16x32_i8GenericAdaptorBase::Properties) namespace mlir::ROCDL { //===----------------------------------------------------------------------===// // ::mlir::ROCDL::mfma_i32_16x16x4i8 declarations //===----------------------------------------------------------------------===// namespace detail { class mfma_i32_16x16x4i8GenericAdaptorBase { public: struct Properties { using abidTy = ::mlir::IntegerAttr; abidTy abid; auto getAbid() const { auto &propStorage = this->abid; return ::llvm::cast<::mlir::IntegerAttr>(propStorage); } void setAbid(const ::mlir::IntegerAttr &propValue) { this->abid = propValue; } using blgpTy = ::mlir::ROCDL::MFMAPermBAttr; blgpTy blgp; auto getBlgp() const { auto &propStorage = this->blgp; return ::llvm::cast<::mlir::ROCDL::MFMAPermBAttr>(propStorage); } void setBlgp(const ::mlir::ROCDL::MFMAPermBAttr &propValue) { this->blgp = propValue; } using cbszTy = ::mlir::IntegerAttr; cbszTy cbsz; auto getCbsz() const { auto &propStorage = this->cbsz; return ::llvm::cast<::mlir::IntegerAttr>(propStorage); } void setCbsz(const ::mlir::IntegerAttr &propValue) { this->cbsz = propValue; } bool operator==(const Properties &rhs) const { return rhs.abid == this->abid && rhs.blgp == this->blgp && rhs.cbsz == this->cbsz && true; } bool operator!=(const Properties &rhs) const { return !(*this == rhs); } }; protected: ::mlir::DictionaryAttr odsAttrs; ::std::optional<::mlir::OperationName> odsOpName; Properties properties; ::mlir::RegionRange odsRegions; public: mfma_i32_16x16x4i8GenericAdaptorBase(::mlir::DictionaryAttr attrs, const Properties &properties, ::mlir::RegionRange regions = {}) : odsAttrs(attrs), properties(properties), odsRegions(regions) { if (odsAttrs) odsOpName.emplace("rocdl.mfma.i32.16x16x4i8", odsAttrs.getContext()); } mfma_i32_16x16x4i8GenericAdaptorBase(mfma_i32_16x16x4i8 op); std::pair getODSOperandIndexAndLength(unsigned index, unsigned odsOperandsSize) { return {index, 1}; } const Properties &getProperties() { return properties; } ::mlir::DictionaryAttr getAttributes() { return odsAttrs; } ::mlir::IntegerAttr getCbszAttr() { auto attr = ::llvm::cast<::mlir::IntegerAttr>(getProperties().cbsz); return attr; } uint32_t getCbsz(); ::mlir::IntegerAttr getAbidAttr() { auto attr = ::llvm::cast<::mlir::IntegerAttr>(getProperties().abid); return attr; } uint32_t getAbid(); ::mlir::ROCDL::MFMAPermBAttr getBlgpAttr() { auto attr = ::llvm::cast<::mlir::ROCDL::MFMAPermBAttr>(getProperties().blgp); return attr; } ::mlir::ROCDL::MFMAPermB getBlgp(); }; } // namespace detail template class mfma_i32_16x16x4i8GenericAdaptor : public detail::mfma_i32_16x16x4i8GenericAdaptorBase { using ValueT = ::llvm::detail::ValueOfRange; using Base = detail::mfma_i32_16x16x4i8GenericAdaptorBase; static constexpr int odsIndex_a = 0; static constexpr int odsIndex_b = 1; static constexpr int odsIndex_c = 2; public: mfma_i32_16x16x4i8GenericAdaptor(RangeT values, ::mlir::DictionaryAttr attrs, const Properties &properties, ::mlir::RegionRange regions = {}) : Base(attrs, properties, regions), odsOperands(values) {} mfma_i32_16x16x4i8GenericAdaptor(RangeT values, ::mlir::DictionaryAttr attrs, ::mlir::PropertyRef properties, ::mlir::RegionRange regions = {}) : mfma_i32_16x16x4i8GenericAdaptor(values, attrs, (properties ? *properties.as() : Properties{}), regions) {} mfma_i32_16x16x4i8GenericAdaptor(RangeT values, ::mlir::DictionaryAttr attrs = nullptr) : mfma_i32_16x16x4i8GenericAdaptor(values, attrs, Properties{}, {}) {} mfma_i32_16x16x4i8GenericAdaptor(RangeT values, const mfma_i32_16x16x4i8GenericAdaptorBase &base) : Base(base), odsOperands(values) {} template >> mfma_i32_16x16x4i8GenericAdaptor(RangeT values, LateInst op) : Base(op), odsOperands(values) {} std::pair getODSOperandIndexAndLength(unsigned index) { return Base::getODSOperandIndexAndLength(index, odsOperands.size()); } RangeT getODSOperands(unsigned index) { auto valueRange = getODSOperandIndexAndLength(index); return {std::next(odsOperands.begin(), valueRange.first), std::next(odsOperands.begin(), valueRange.first + valueRange.second)}; } ValueT getA() { return (*getODSOperands(0).begin()); } ValueT getB() { return (*getODSOperands(1).begin()); } ValueT getC() { return (*getODSOperands(2).begin()); } RangeT getOperands() { return odsOperands; } private: RangeT odsOperands; }; class mfma_i32_16x16x4i8Adaptor : public mfma_i32_16x16x4i8GenericAdaptor<::mlir::ValueRange> { public: using mfma_i32_16x16x4i8GenericAdaptor::mfma_i32_16x16x4i8GenericAdaptor; mfma_i32_16x16x4i8Adaptor(mfma_i32_16x16x4i8 op); ::llvm::LogicalResult verify(::mlir::Location loc); }; class mfma_i32_16x16x4i8 : public ::mlir::Op::Impl, ::mlir::OpTrait::ZeroSuccessors, ::mlir::OpTrait::NOperands<3>::Impl, ::mlir::OpTrait::OpInvariants, ::mlir::BytecodeOpInterface::Trait> { public: using Op::Op; using Op::print; using Adaptor = mfma_i32_16x16x4i8Adaptor; template using GenericAdaptor = mfma_i32_16x16x4i8GenericAdaptor; using FoldAdaptor = GenericAdaptor<::llvm::ArrayRef<::mlir::Attribute>>; static constexpr int odsIndex_a = 0; static constexpr int odsIndex_b = 1; static constexpr int odsIndex_c = 2; using Properties = FoldAdaptor::Properties; static ::llvm::ArrayRef<::llvm::StringRef> getAttributeNames() { static ::llvm::StringRef attrNames[] = {::llvm::StringRef("abid"), ::llvm::StringRef("blgp"), ::llvm::StringRef("cbsz")}; return ::llvm::ArrayRef(attrNames); } ::mlir::StringAttr getAbidAttrName() { return getAttributeNameForIndex(0); } static ::mlir::StringAttr getAbidAttrName(::mlir::OperationName name) { return getAttributeNameForIndex(name, 0); } ::mlir::StringAttr getBlgpAttrName() { return getAttributeNameForIndex(1); } static ::mlir::StringAttr getBlgpAttrName(::mlir::OperationName name) { return getAttributeNameForIndex(name, 1); } ::mlir::StringAttr getCbszAttrName() { return getAttributeNameForIndex(2); } static ::mlir::StringAttr getCbszAttrName(::mlir::OperationName name) { return getAttributeNameForIndex(name, 2); } static constexpr ::llvm::StringLiteral getOperationName() { return ::llvm::StringLiteral("rocdl.mfma.i32.16x16x4i8"); } std::pair getODSOperandIndexAndLength(unsigned index) { return {index, 1}; } ::mlir::Operation::operand_range getODSOperands(unsigned index) { auto valueRange = getODSOperandIndexAndLength(index); return {std::next(getOperation()->operand_begin(), valueRange.first), std::next(getOperation()->operand_begin(), valueRange.first + valueRange.second)}; } ::mlir::TypedValue<::mlir::Type> getA() { return ::llvm::cast<::mlir::TypedValue<::mlir::Type>>(*getODSOperands(0).begin()); } ::mlir::TypedValue<::mlir::Type> getB() { return ::llvm::cast<::mlir::TypedValue<::mlir::Type>>(*getODSOperands(1).begin()); } ::mlir::TypedValue<::mlir::VectorType> getC() { return ::llvm::cast<::mlir::TypedValue<::mlir::VectorType>>(*getODSOperands(2).begin()); } ::mlir::OpOperand &getAMutable() { auto range = getODSOperandIndexAndLength(0); return getOperation()->getOpOperand(range.first); } ::mlir::OpOperand &getBMutable() { auto range = getODSOperandIndexAndLength(1); return getOperation()->getOpOperand(range.first); } ::mlir::OpOperand &getCMutable() { auto range = getODSOperandIndexAndLength(2); return getOperation()->getOpOperand(range.first); } std::pair getODSResultIndexAndLength(unsigned index) { return {index, 1}; } ::mlir::Operation::result_range getODSResults(unsigned index) { auto valueRange = getODSResultIndexAndLength(index); return {std::next(getOperation()->result_begin(), valueRange.first), std::next(getOperation()->result_begin(), valueRange.first + valueRange.second)}; } ::mlir::TypedValue<::mlir::VectorType> getRes() { return ::llvm::cast<::mlir::TypedValue<::mlir::VectorType>>(*getODSResults(0).begin()); } static ::llvm::LogicalResult setPropertiesFromAttr(Properties &prop, ::mlir::Attribute attr, ::llvm::function_ref<::mlir::InFlightDiagnostic()> emitError); static ::mlir::Attribute getPropertiesAsAttr(::mlir::MLIRContext *ctx, const Properties &prop); static llvm::hash_code computePropertiesHash(const Properties &prop); static std::optional getInherentAttr(::mlir::MLIRContext *ctx, const Properties &prop, llvm::StringRef name); static void setInherentAttr(Properties &prop, llvm::StringRef name, mlir::Attribute value); static void populateInherentAttrs(::mlir::MLIRContext *ctx, const Properties &prop, ::mlir::NamedAttrList &attrs); static ::llvm::LogicalResult verifyInherentAttrs(::mlir::OperationName opName, ::mlir::NamedAttrList &attrs, llvm::function_ref<::mlir::InFlightDiagnostic()> emitError); static ::llvm::LogicalResult readProperties(::mlir::DialectBytecodeReader &reader, ::mlir::OperationState &state); void writeProperties(::mlir::DialectBytecodeWriter &writer); ::mlir::IntegerAttr getCbszAttr() { return ::llvm::cast<::mlir::IntegerAttr>(getProperties().cbsz); } uint32_t getCbsz(); ::mlir::IntegerAttr getAbidAttr() { return ::llvm::cast<::mlir::IntegerAttr>(getProperties().abid); } uint32_t getAbid(); ::mlir::ROCDL::MFMAPermBAttr getBlgpAttr() { return ::llvm::cast<::mlir::ROCDL::MFMAPermBAttr>(getProperties().blgp); } ::mlir::ROCDL::MFMAPermB getBlgp(); void setCbszAttr(::mlir::IntegerAttr attr) { getProperties().cbsz = attr; } void setCbsz(uint32_t attrValue); void setAbidAttr(::mlir::IntegerAttr attr) { getProperties().abid = attr; } void setAbid(uint32_t attrValue); void setBlgpAttr(::mlir::ROCDL::MFMAPermBAttr attr) { getProperties().blgp = attr; } void setBlgp(::mlir::ROCDL::MFMAPermB attrValue); static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::Type res, ::mlir::Value a, ::mlir::Value b, ::mlir::Value c, ::mlir::IntegerAttr cbsz, ::mlir::IntegerAttr abid, ::mlir::ROCDL::MFMAPermBAttr blgp); static mfma_i32_16x16x4i8 create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::Type res, ::mlir::Value a, ::mlir::Value b, ::mlir::Value c, ::mlir::IntegerAttr cbsz, ::mlir::IntegerAttr abid, ::mlir::ROCDL::MFMAPermBAttr blgp); static mfma_i32_16x16x4i8 create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::Type res, ::mlir::Value a, ::mlir::Value b, ::mlir::Value c, ::mlir::IntegerAttr cbsz, ::mlir::IntegerAttr abid, ::mlir::ROCDL::MFMAPermBAttr blgp); static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::Value a, ::mlir::Value b, ::mlir::Value c, ::mlir::IntegerAttr cbsz, ::mlir::IntegerAttr abid, ::mlir::ROCDL::MFMAPermBAttr blgp); static mfma_i32_16x16x4i8 create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::Value a, ::mlir::Value b, ::mlir::Value c, ::mlir::IntegerAttr cbsz, ::mlir::IntegerAttr abid, ::mlir::ROCDL::MFMAPermBAttr blgp); static mfma_i32_16x16x4i8 create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::Value a, ::mlir::Value b, ::mlir::Value c, ::mlir::IntegerAttr cbsz, ::mlir::IntegerAttr abid, ::mlir::ROCDL::MFMAPermBAttr blgp); static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::Type res, ::mlir::Value a, ::mlir::Value b, ::mlir::Value c, uint32_t cbsz, uint32_t abid, ::mlir::ROCDL::MFMAPermB blgp); static mfma_i32_16x16x4i8 create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::Type res, ::mlir::Value a, ::mlir::Value b, ::mlir::Value c, uint32_t cbsz, uint32_t abid, ::mlir::ROCDL::MFMAPermB blgp); static mfma_i32_16x16x4i8 create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::Type res, ::mlir::Value a, ::mlir::Value b, ::mlir::Value c, uint32_t cbsz, uint32_t abid, ::mlir::ROCDL::MFMAPermB blgp); static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::Value a, ::mlir::Value b, ::mlir::Value c, uint32_t cbsz, uint32_t abid, ::mlir::ROCDL::MFMAPermB blgp); static mfma_i32_16x16x4i8 create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::Value a, ::mlir::Value b, ::mlir::Value c, uint32_t cbsz, uint32_t abid, ::mlir::ROCDL::MFMAPermB blgp); static mfma_i32_16x16x4i8 create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::Value a, ::mlir::Value b, ::mlir::Value c, uint32_t cbsz, uint32_t abid, ::mlir::ROCDL::MFMAPermB blgp); static void build(::mlir::OpBuilder &, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, ::llvm::ArrayRef<::mlir::NamedAttribute> attributes = {}); static mfma_i32_16x16x4i8 create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, ::llvm::ArrayRef<::mlir::NamedAttribute> attributes = {}); static mfma_i32_16x16x4i8 create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, ::llvm::ArrayRef<::mlir::NamedAttribute> attributes = {}); static void build(::mlir::OpBuilder &, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, const Properties &properties, ::llvm::ArrayRef<::mlir::NamedAttribute> discardableAttributes = {}); static mfma_i32_16x16x4i8 create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, const Properties &properties, ::llvm::ArrayRef<::mlir::NamedAttribute> discardableAttributes = {}); static mfma_i32_16x16x4i8 create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, const Properties &properties, ::llvm::ArrayRef<::mlir::NamedAttribute> discardableAttributes = {}); ::llvm::LogicalResult verifyInvariantsImpl(); ::llvm::LogicalResult verifyInvariants(); static ::mlir::ParseResult parse(::mlir::OpAsmParser &parser, ::mlir::OperationState &result); void print(::mlir::OpAsmPrinter &_odsPrinter); private: ::mlir::StringAttr getAttributeNameForIndex(unsigned index) { return getAttributeNameForIndex((*this)->getName(), index); } static ::mlir::StringAttr getAttributeNameForIndex(::mlir::OperationName name, unsigned index) { assert(index < 3 && "invalid attribute index"); assert(name.getStringRef() == getOperationName() && "invalid operation name"); assert(name.isRegistered() && "Operation isn't registered, missing a " "dependent dialect loading?"); return name.getAttributeNames()[index]; } public: }; } // namespace mlir::ROCDL MLIR_DECLARE_EXPLICIT_TYPE_ID(::mlir::ROCDL::mfma_i32_16x16x4i8) MLIR_DECLARE_EXPLICIT_TYPE_ID(::mlir::ROCDL::detail::mfma_i32_16x16x4i8GenericAdaptorBase::Properties) namespace mlir::ROCDL { //===----------------------------------------------------------------------===// // ::mlir::ROCDL::mfma_i32_16x16x64_i8 declarations //===----------------------------------------------------------------------===// namespace detail { class mfma_i32_16x16x64_i8GenericAdaptorBase { public: struct Properties { using abidTy = ::mlir::IntegerAttr; abidTy abid; auto getAbid() const { auto &propStorage = this->abid; return ::llvm::cast<::mlir::IntegerAttr>(propStorage); } void setAbid(const ::mlir::IntegerAttr &propValue) { this->abid = propValue; } using blgpTy = ::mlir::ROCDL::MFMAPermBAttr; blgpTy blgp; auto getBlgp() const { auto &propStorage = this->blgp; return ::llvm::cast<::mlir::ROCDL::MFMAPermBAttr>(propStorage); } void setBlgp(const ::mlir::ROCDL::MFMAPermBAttr &propValue) { this->blgp = propValue; } using cbszTy = ::mlir::IntegerAttr; cbszTy cbsz; auto getCbsz() const { auto &propStorage = this->cbsz; return ::llvm::cast<::mlir::IntegerAttr>(propStorage); } void setCbsz(const ::mlir::IntegerAttr &propValue) { this->cbsz = propValue; } bool operator==(const Properties &rhs) const { return rhs.abid == this->abid && rhs.blgp == this->blgp && rhs.cbsz == this->cbsz && true; } bool operator!=(const Properties &rhs) const { return !(*this == rhs); } }; protected: ::mlir::DictionaryAttr odsAttrs; ::std::optional<::mlir::OperationName> odsOpName; Properties properties; ::mlir::RegionRange odsRegions; public: mfma_i32_16x16x64_i8GenericAdaptorBase(::mlir::DictionaryAttr attrs, const Properties &properties, ::mlir::RegionRange regions = {}) : odsAttrs(attrs), properties(properties), odsRegions(regions) { if (odsAttrs) odsOpName.emplace("rocdl.mfma.i32.16x16x64.i8", odsAttrs.getContext()); } mfma_i32_16x16x64_i8GenericAdaptorBase(mfma_i32_16x16x64_i8 op); std::pair getODSOperandIndexAndLength(unsigned index, unsigned odsOperandsSize) { return {index, 1}; } const Properties &getProperties() { return properties; } ::mlir::DictionaryAttr getAttributes() { return odsAttrs; } ::mlir::IntegerAttr getCbszAttr() { auto attr = ::llvm::cast<::mlir::IntegerAttr>(getProperties().cbsz); return attr; } uint32_t getCbsz(); ::mlir::IntegerAttr getAbidAttr() { auto attr = ::llvm::cast<::mlir::IntegerAttr>(getProperties().abid); return attr; } uint32_t getAbid(); ::mlir::ROCDL::MFMAPermBAttr getBlgpAttr() { auto attr = ::llvm::cast<::mlir::ROCDL::MFMAPermBAttr>(getProperties().blgp); return attr; } ::mlir::ROCDL::MFMAPermB getBlgp(); }; } // namespace detail template class mfma_i32_16x16x64_i8GenericAdaptor : public detail::mfma_i32_16x16x64_i8GenericAdaptorBase { using ValueT = ::llvm::detail::ValueOfRange; using Base = detail::mfma_i32_16x16x64_i8GenericAdaptorBase; static constexpr int odsIndex_a = 0; static constexpr int odsIndex_b = 1; static constexpr int odsIndex_c = 2; public: mfma_i32_16x16x64_i8GenericAdaptor(RangeT values, ::mlir::DictionaryAttr attrs, const Properties &properties, ::mlir::RegionRange regions = {}) : Base(attrs, properties, regions), odsOperands(values) {} mfma_i32_16x16x64_i8GenericAdaptor(RangeT values, ::mlir::DictionaryAttr attrs, ::mlir::PropertyRef properties, ::mlir::RegionRange regions = {}) : mfma_i32_16x16x64_i8GenericAdaptor(values, attrs, (properties ? *properties.as() : Properties{}), regions) {} mfma_i32_16x16x64_i8GenericAdaptor(RangeT values, ::mlir::DictionaryAttr attrs = nullptr) : mfma_i32_16x16x64_i8GenericAdaptor(values, attrs, Properties{}, {}) {} mfma_i32_16x16x64_i8GenericAdaptor(RangeT values, const mfma_i32_16x16x64_i8GenericAdaptorBase &base) : Base(base), odsOperands(values) {} template >> mfma_i32_16x16x64_i8GenericAdaptor(RangeT values, LateInst op) : Base(op), odsOperands(values) {} std::pair getODSOperandIndexAndLength(unsigned index) { return Base::getODSOperandIndexAndLength(index, odsOperands.size()); } RangeT getODSOperands(unsigned index) { auto valueRange = getODSOperandIndexAndLength(index); return {std::next(odsOperands.begin(), valueRange.first), std::next(odsOperands.begin(), valueRange.first + valueRange.second)}; } ValueT getA() { return (*getODSOperands(0).begin()); } ValueT getB() { return (*getODSOperands(1).begin()); } ValueT getC() { return (*getODSOperands(2).begin()); } RangeT getOperands() { return odsOperands; } private: RangeT odsOperands; }; class mfma_i32_16x16x64_i8Adaptor : public mfma_i32_16x16x64_i8GenericAdaptor<::mlir::ValueRange> { public: using mfma_i32_16x16x64_i8GenericAdaptor::mfma_i32_16x16x64_i8GenericAdaptor; mfma_i32_16x16x64_i8Adaptor(mfma_i32_16x16x64_i8 op); ::llvm::LogicalResult verify(::mlir::Location loc); }; class mfma_i32_16x16x64_i8 : public ::mlir::Op::Impl, ::mlir::OpTrait::ZeroSuccessors, ::mlir::OpTrait::NOperands<3>::Impl, ::mlir::OpTrait::OpInvariants, ::mlir::BytecodeOpInterface::Trait> { public: using Op::Op; using Op::print; using Adaptor = mfma_i32_16x16x64_i8Adaptor; template using GenericAdaptor = mfma_i32_16x16x64_i8GenericAdaptor; using FoldAdaptor = GenericAdaptor<::llvm::ArrayRef<::mlir::Attribute>>; static constexpr int odsIndex_a = 0; static constexpr int odsIndex_b = 1; static constexpr int odsIndex_c = 2; using Properties = FoldAdaptor::Properties; static ::llvm::ArrayRef<::llvm::StringRef> getAttributeNames() { static ::llvm::StringRef attrNames[] = {::llvm::StringRef("abid"), ::llvm::StringRef("blgp"), ::llvm::StringRef("cbsz")}; return ::llvm::ArrayRef(attrNames); } ::mlir::StringAttr getAbidAttrName() { return getAttributeNameForIndex(0); } static ::mlir::StringAttr getAbidAttrName(::mlir::OperationName name) { return getAttributeNameForIndex(name, 0); } ::mlir::StringAttr getBlgpAttrName() { return getAttributeNameForIndex(1); } static ::mlir::StringAttr getBlgpAttrName(::mlir::OperationName name) { return getAttributeNameForIndex(name, 1); } ::mlir::StringAttr getCbszAttrName() { return getAttributeNameForIndex(2); } static ::mlir::StringAttr getCbszAttrName(::mlir::OperationName name) { return getAttributeNameForIndex(name, 2); } static constexpr ::llvm::StringLiteral getOperationName() { return ::llvm::StringLiteral("rocdl.mfma.i32.16x16x64.i8"); } std::pair getODSOperandIndexAndLength(unsigned index) { return {index, 1}; } ::mlir::Operation::operand_range getODSOperands(unsigned index) { auto valueRange = getODSOperandIndexAndLength(index); return {std::next(getOperation()->operand_begin(), valueRange.first), std::next(getOperation()->operand_begin(), valueRange.first + valueRange.second)}; } ::mlir::TypedValue<::mlir::VectorType> getA() { return ::llvm::cast<::mlir::TypedValue<::mlir::VectorType>>(*getODSOperands(0).begin()); } ::mlir::TypedValue<::mlir::VectorType> getB() { return ::llvm::cast<::mlir::TypedValue<::mlir::VectorType>>(*getODSOperands(1).begin()); } ::mlir::TypedValue<::mlir::VectorType> getC() { return ::llvm::cast<::mlir::TypedValue<::mlir::VectorType>>(*getODSOperands(2).begin()); } ::mlir::OpOperand &getAMutable() { auto range = getODSOperandIndexAndLength(0); return getOperation()->getOpOperand(range.first); } ::mlir::OpOperand &getBMutable() { auto range = getODSOperandIndexAndLength(1); return getOperation()->getOpOperand(range.first); } ::mlir::OpOperand &getCMutable() { auto range = getODSOperandIndexAndLength(2); return getOperation()->getOpOperand(range.first); } std::pair getODSResultIndexAndLength(unsigned index) { return {index, 1}; } ::mlir::Operation::result_range getODSResults(unsigned index) { auto valueRange = getODSResultIndexAndLength(index); return {std::next(getOperation()->result_begin(), valueRange.first), std::next(getOperation()->result_begin(), valueRange.first + valueRange.second)}; } ::mlir::TypedValue<::mlir::VectorType> getRes() { return ::llvm::cast<::mlir::TypedValue<::mlir::VectorType>>(*getODSResults(0).begin()); } static ::llvm::LogicalResult setPropertiesFromAttr(Properties &prop, ::mlir::Attribute attr, ::llvm::function_ref<::mlir::InFlightDiagnostic()> emitError); static ::mlir::Attribute getPropertiesAsAttr(::mlir::MLIRContext *ctx, const Properties &prop); static llvm::hash_code computePropertiesHash(const Properties &prop); static std::optional getInherentAttr(::mlir::MLIRContext *ctx, const Properties &prop, llvm::StringRef name); static void setInherentAttr(Properties &prop, llvm::StringRef name, mlir::Attribute value); static void populateInherentAttrs(::mlir::MLIRContext *ctx, const Properties &prop, ::mlir::NamedAttrList &attrs); static ::llvm::LogicalResult verifyInherentAttrs(::mlir::OperationName opName, ::mlir::NamedAttrList &attrs, llvm::function_ref<::mlir::InFlightDiagnostic()> emitError); static ::llvm::LogicalResult readProperties(::mlir::DialectBytecodeReader &reader, ::mlir::OperationState &state); void writeProperties(::mlir::DialectBytecodeWriter &writer); ::mlir::IntegerAttr getCbszAttr() { return ::llvm::cast<::mlir::IntegerAttr>(getProperties().cbsz); } uint32_t getCbsz(); ::mlir::IntegerAttr getAbidAttr() { return ::llvm::cast<::mlir::IntegerAttr>(getProperties().abid); } uint32_t getAbid(); ::mlir::ROCDL::MFMAPermBAttr getBlgpAttr() { return ::llvm::cast<::mlir::ROCDL::MFMAPermBAttr>(getProperties().blgp); } ::mlir::ROCDL::MFMAPermB getBlgp(); void setCbszAttr(::mlir::IntegerAttr attr) { getProperties().cbsz = attr; } void setCbsz(uint32_t attrValue); void setAbidAttr(::mlir::IntegerAttr attr) { getProperties().abid = attr; } void setAbid(uint32_t attrValue); void setBlgpAttr(::mlir::ROCDL::MFMAPermBAttr attr) { getProperties().blgp = attr; } void setBlgp(::mlir::ROCDL::MFMAPermB attrValue); static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::Type res, ::mlir::Value a, ::mlir::Value b, ::mlir::Value c, ::mlir::IntegerAttr cbsz, ::mlir::IntegerAttr abid, ::mlir::ROCDL::MFMAPermBAttr blgp); static mfma_i32_16x16x64_i8 create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::Type res, ::mlir::Value a, ::mlir::Value b, ::mlir::Value c, ::mlir::IntegerAttr cbsz, ::mlir::IntegerAttr abid, ::mlir::ROCDL::MFMAPermBAttr blgp); static mfma_i32_16x16x64_i8 create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::Type res, ::mlir::Value a, ::mlir::Value b, ::mlir::Value c, ::mlir::IntegerAttr cbsz, ::mlir::IntegerAttr abid, ::mlir::ROCDL::MFMAPermBAttr blgp); static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::Value a, ::mlir::Value b, ::mlir::Value c, ::mlir::IntegerAttr cbsz, ::mlir::IntegerAttr abid, ::mlir::ROCDL::MFMAPermBAttr blgp); static mfma_i32_16x16x64_i8 create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::Value a, ::mlir::Value b, ::mlir::Value c, ::mlir::IntegerAttr cbsz, ::mlir::IntegerAttr abid, ::mlir::ROCDL::MFMAPermBAttr blgp); static mfma_i32_16x16x64_i8 create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::Value a, ::mlir::Value b, ::mlir::Value c, ::mlir::IntegerAttr cbsz, ::mlir::IntegerAttr abid, ::mlir::ROCDL::MFMAPermBAttr blgp); static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::Type res, ::mlir::Value a, ::mlir::Value b, ::mlir::Value c, uint32_t cbsz, uint32_t abid, ::mlir::ROCDL::MFMAPermB blgp); static mfma_i32_16x16x64_i8 create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::Type res, ::mlir::Value a, ::mlir::Value b, ::mlir::Value c, uint32_t cbsz, uint32_t abid, ::mlir::ROCDL::MFMAPermB blgp); static mfma_i32_16x16x64_i8 create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::Type res, ::mlir::Value a, ::mlir::Value b, ::mlir::Value c, uint32_t cbsz, uint32_t abid, ::mlir::ROCDL::MFMAPermB blgp); static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::Value a, ::mlir::Value b, ::mlir::Value c, uint32_t cbsz, uint32_t abid, ::mlir::ROCDL::MFMAPermB blgp); static mfma_i32_16x16x64_i8 create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::Value a, ::mlir::Value b, ::mlir::Value c, uint32_t cbsz, uint32_t abid, ::mlir::ROCDL::MFMAPermB blgp); static mfma_i32_16x16x64_i8 create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::Value a, ::mlir::Value b, ::mlir::Value c, uint32_t cbsz, uint32_t abid, ::mlir::ROCDL::MFMAPermB blgp); static void build(::mlir::OpBuilder &, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, ::llvm::ArrayRef<::mlir::NamedAttribute> attributes = {}); static mfma_i32_16x16x64_i8 create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, ::llvm::ArrayRef<::mlir::NamedAttribute> attributes = {}); static mfma_i32_16x16x64_i8 create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, ::llvm::ArrayRef<::mlir::NamedAttribute> attributes = {}); static void build(::mlir::OpBuilder &, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, const Properties &properties, ::llvm::ArrayRef<::mlir::NamedAttribute> discardableAttributes = {}); static mfma_i32_16x16x64_i8 create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, const Properties &properties, ::llvm::ArrayRef<::mlir::NamedAttribute> discardableAttributes = {}); static mfma_i32_16x16x64_i8 create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, const Properties &properties, ::llvm::ArrayRef<::mlir::NamedAttribute> discardableAttributes = {}); ::llvm::LogicalResult verifyInvariantsImpl(); ::llvm::LogicalResult verifyInvariants(); static ::mlir::ParseResult parse(::mlir::OpAsmParser &parser, ::mlir::OperationState &result); void print(::mlir::OpAsmPrinter &_odsPrinter); private: ::mlir::StringAttr getAttributeNameForIndex(unsigned index) { return getAttributeNameForIndex((*this)->getName(), index); } static ::mlir::StringAttr getAttributeNameForIndex(::mlir::OperationName name, unsigned index) { assert(index < 3 && "invalid attribute index"); assert(name.getStringRef() == getOperationName() && "invalid operation name"); assert(name.isRegistered() && "Operation isn't registered, missing a " "dependent dialect loading?"); return name.getAttributeNames()[index]; } public: }; } // namespace mlir::ROCDL MLIR_DECLARE_EXPLICIT_TYPE_ID(::mlir::ROCDL::mfma_i32_16x16x64_i8) MLIR_DECLARE_EXPLICIT_TYPE_ID(::mlir::ROCDL::detail::mfma_i32_16x16x64_i8GenericAdaptorBase::Properties) namespace mlir::ROCDL { //===----------------------------------------------------------------------===// // ::mlir::ROCDL::mfma_i32_32x32x16_i8 declarations //===----------------------------------------------------------------------===// namespace detail { class mfma_i32_32x32x16_i8GenericAdaptorBase { public: struct Properties { using abidTy = ::mlir::IntegerAttr; abidTy abid; auto getAbid() const { auto &propStorage = this->abid; return ::llvm::cast<::mlir::IntegerAttr>(propStorage); } void setAbid(const ::mlir::IntegerAttr &propValue) { this->abid = propValue; } using blgpTy = ::mlir::ROCDL::MFMAPermBAttr; blgpTy blgp; auto getBlgp() const { auto &propStorage = this->blgp; return ::llvm::cast<::mlir::ROCDL::MFMAPermBAttr>(propStorage); } void setBlgp(const ::mlir::ROCDL::MFMAPermBAttr &propValue) { this->blgp = propValue; } using cbszTy = ::mlir::IntegerAttr; cbszTy cbsz; auto getCbsz() const { auto &propStorage = this->cbsz; return ::llvm::cast<::mlir::IntegerAttr>(propStorage); } void setCbsz(const ::mlir::IntegerAttr &propValue) { this->cbsz = propValue; } bool operator==(const Properties &rhs) const { return rhs.abid == this->abid && rhs.blgp == this->blgp && rhs.cbsz == this->cbsz && true; } bool operator!=(const Properties &rhs) const { return !(*this == rhs); } }; protected: ::mlir::DictionaryAttr odsAttrs; ::std::optional<::mlir::OperationName> odsOpName; Properties properties; ::mlir::RegionRange odsRegions; public: mfma_i32_32x32x16_i8GenericAdaptorBase(::mlir::DictionaryAttr attrs, const Properties &properties, ::mlir::RegionRange regions = {}) : odsAttrs(attrs), properties(properties), odsRegions(regions) { if (odsAttrs) odsOpName.emplace("rocdl.mfma.i32.32x32x16.i8", odsAttrs.getContext()); } mfma_i32_32x32x16_i8GenericAdaptorBase(mfma_i32_32x32x16_i8 op); std::pair getODSOperandIndexAndLength(unsigned index, unsigned odsOperandsSize) { return {index, 1}; } const Properties &getProperties() { return properties; } ::mlir::DictionaryAttr getAttributes() { return odsAttrs; } ::mlir::IntegerAttr getCbszAttr() { auto attr = ::llvm::cast<::mlir::IntegerAttr>(getProperties().cbsz); return attr; } uint32_t getCbsz(); ::mlir::IntegerAttr getAbidAttr() { auto attr = ::llvm::cast<::mlir::IntegerAttr>(getProperties().abid); return attr; } uint32_t getAbid(); ::mlir::ROCDL::MFMAPermBAttr getBlgpAttr() { auto attr = ::llvm::cast<::mlir::ROCDL::MFMAPermBAttr>(getProperties().blgp); return attr; } ::mlir::ROCDL::MFMAPermB getBlgp(); }; } // namespace detail template class mfma_i32_32x32x16_i8GenericAdaptor : public detail::mfma_i32_32x32x16_i8GenericAdaptorBase { using ValueT = ::llvm::detail::ValueOfRange; using Base = detail::mfma_i32_32x32x16_i8GenericAdaptorBase; static constexpr int odsIndex_a = 0; static constexpr int odsIndex_b = 1; static constexpr int odsIndex_c = 2; public: mfma_i32_32x32x16_i8GenericAdaptor(RangeT values, ::mlir::DictionaryAttr attrs, const Properties &properties, ::mlir::RegionRange regions = {}) : Base(attrs, properties, regions), odsOperands(values) {} mfma_i32_32x32x16_i8GenericAdaptor(RangeT values, ::mlir::DictionaryAttr attrs, ::mlir::PropertyRef properties, ::mlir::RegionRange regions = {}) : mfma_i32_32x32x16_i8GenericAdaptor(values, attrs, (properties ? *properties.as() : Properties{}), regions) {} mfma_i32_32x32x16_i8GenericAdaptor(RangeT values, ::mlir::DictionaryAttr attrs = nullptr) : mfma_i32_32x32x16_i8GenericAdaptor(values, attrs, Properties{}, {}) {} mfma_i32_32x32x16_i8GenericAdaptor(RangeT values, const mfma_i32_32x32x16_i8GenericAdaptorBase &base) : Base(base), odsOperands(values) {} template >> mfma_i32_32x32x16_i8GenericAdaptor(RangeT values, LateInst op) : Base(op), odsOperands(values) {} std::pair getODSOperandIndexAndLength(unsigned index) { return Base::getODSOperandIndexAndLength(index, odsOperands.size()); } RangeT getODSOperands(unsigned index) { auto valueRange = getODSOperandIndexAndLength(index); return {std::next(odsOperands.begin(), valueRange.first), std::next(odsOperands.begin(), valueRange.first + valueRange.second)}; } ValueT getA() { return (*getODSOperands(0).begin()); } ValueT getB() { return (*getODSOperands(1).begin()); } ValueT getC() { return (*getODSOperands(2).begin()); } RangeT getOperands() { return odsOperands; } private: RangeT odsOperands; }; class mfma_i32_32x32x16_i8Adaptor : public mfma_i32_32x32x16_i8GenericAdaptor<::mlir::ValueRange> { public: using mfma_i32_32x32x16_i8GenericAdaptor::mfma_i32_32x32x16_i8GenericAdaptor; mfma_i32_32x32x16_i8Adaptor(mfma_i32_32x32x16_i8 op); ::llvm::LogicalResult verify(::mlir::Location loc); }; class mfma_i32_32x32x16_i8 : public ::mlir::Op::Impl, ::mlir::OpTrait::ZeroSuccessors, ::mlir::OpTrait::NOperands<3>::Impl, ::mlir::OpTrait::OpInvariants, ::mlir::BytecodeOpInterface::Trait> { public: using Op::Op; using Op::print; using Adaptor = mfma_i32_32x32x16_i8Adaptor; template using GenericAdaptor = mfma_i32_32x32x16_i8GenericAdaptor; using FoldAdaptor = GenericAdaptor<::llvm::ArrayRef<::mlir::Attribute>>; static constexpr int odsIndex_a = 0; static constexpr int odsIndex_b = 1; static constexpr int odsIndex_c = 2; using Properties = FoldAdaptor::Properties; static ::llvm::ArrayRef<::llvm::StringRef> getAttributeNames() { static ::llvm::StringRef attrNames[] = {::llvm::StringRef("abid"), ::llvm::StringRef("blgp"), ::llvm::StringRef("cbsz")}; return ::llvm::ArrayRef(attrNames); } ::mlir::StringAttr getAbidAttrName() { return getAttributeNameForIndex(0); } static ::mlir::StringAttr getAbidAttrName(::mlir::OperationName name) { return getAttributeNameForIndex(name, 0); } ::mlir::StringAttr getBlgpAttrName() { return getAttributeNameForIndex(1); } static ::mlir::StringAttr getBlgpAttrName(::mlir::OperationName name) { return getAttributeNameForIndex(name, 1); } ::mlir::StringAttr getCbszAttrName() { return getAttributeNameForIndex(2); } static ::mlir::StringAttr getCbszAttrName(::mlir::OperationName name) { return getAttributeNameForIndex(name, 2); } static constexpr ::llvm::StringLiteral getOperationName() { return ::llvm::StringLiteral("rocdl.mfma.i32.32x32x16.i8"); } std::pair getODSOperandIndexAndLength(unsigned index) { return {index, 1}; } ::mlir::Operation::operand_range getODSOperands(unsigned index) { auto valueRange = getODSOperandIndexAndLength(index); return {std::next(getOperation()->operand_begin(), valueRange.first), std::next(getOperation()->operand_begin(), valueRange.first + valueRange.second)}; } ::mlir::TypedValue<::mlir::Type> getA() { return ::llvm::cast<::mlir::TypedValue<::mlir::Type>>(*getODSOperands(0).begin()); } ::mlir::TypedValue<::mlir::Type> getB() { return ::llvm::cast<::mlir::TypedValue<::mlir::Type>>(*getODSOperands(1).begin()); } ::mlir::TypedValue<::mlir::VectorType> getC() { return ::llvm::cast<::mlir::TypedValue<::mlir::VectorType>>(*getODSOperands(2).begin()); } ::mlir::OpOperand &getAMutable() { auto range = getODSOperandIndexAndLength(0); return getOperation()->getOpOperand(range.first); } ::mlir::OpOperand &getBMutable() { auto range = getODSOperandIndexAndLength(1); return getOperation()->getOpOperand(range.first); } ::mlir::OpOperand &getCMutable() { auto range = getODSOperandIndexAndLength(2); return getOperation()->getOpOperand(range.first); } std::pair getODSResultIndexAndLength(unsigned index) { return {index, 1}; } ::mlir::Operation::result_range getODSResults(unsigned index) { auto valueRange = getODSResultIndexAndLength(index); return {std::next(getOperation()->result_begin(), valueRange.first), std::next(getOperation()->result_begin(), valueRange.first + valueRange.second)}; } ::mlir::TypedValue<::mlir::VectorType> getRes() { return ::llvm::cast<::mlir::TypedValue<::mlir::VectorType>>(*getODSResults(0).begin()); } static ::llvm::LogicalResult setPropertiesFromAttr(Properties &prop, ::mlir::Attribute attr, ::llvm::function_ref<::mlir::InFlightDiagnostic()> emitError); static ::mlir::Attribute getPropertiesAsAttr(::mlir::MLIRContext *ctx, const Properties &prop); static llvm::hash_code computePropertiesHash(const Properties &prop); static std::optional getInherentAttr(::mlir::MLIRContext *ctx, const Properties &prop, llvm::StringRef name); static void setInherentAttr(Properties &prop, llvm::StringRef name, mlir::Attribute value); static void populateInherentAttrs(::mlir::MLIRContext *ctx, const Properties &prop, ::mlir::NamedAttrList &attrs); static ::llvm::LogicalResult verifyInherentAttrs(::mlir::OperationName opName, ::mlir::NamedAttrList &attrs, llvm::function_ref<::mlir::InFlightDiagnostic()> emitError); static ::llvm::LogicalResult readProperties(::mlir::DialectBytecodeReader &reader, ::mlir::OperationState &state); void writeProperties(::mlir::DialectBytecodeWriter &writer); ::mlir::IntegerAttr getCbszAttr() { return ::llvm::cast<::mlir::IntegerAttr>(getProperties().cbsz); } uint32_t getCbsz(); ::mlir::IntegerAttr getAbidAttr() { return ::llvm::cast<::mlir::IntegerAttr>(getProperties().abid); } uint32_t getAbid(); ::mlir::ROCDL::MFMAPermBAttr getBlgpAttr() { return ::llvm::cast<::mlir::ROCDL::MFMAPermBAttr>(getProperties().blgp); } ::mlir::ROCDL::MFMAPermB getBlgp(); void setCbszAttr(::mlir::IntegerAttr attr) { getProperties().cbsz = attr; } void setCbsz(uint32_t attrValue); void setAbidAttr(::mlir::IntegerAttr attr) { getProperties().abid = attr; } void setAbid(uint32_t attrValue); void setBlgpAttr(::mlir::ROCDL::MFMAPermBAttr attr) { getProperties().blgp = attr; } void setBlgp(::mlir::ROCDL::MFMAPermB attrValue); static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::Type res, ::mlir::Value a, ::mlir::Value b, ::mlir::Value c, ::mlir::IntegerAttr cbsz, ::mlir::IntegerAttr abid, ::mlir::ROCDL::MFMAPermBAttr blgp); static mfma_i32_32x32x16_i8 create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::Type res, ::mlir::Value a, ::mlir::Value b, ::mlir::Value c, ::mlir::IntegerAttr cbsz, ::mlir::IntegerAttr abid, ::mlir::ROCDL::MFMAPermBAttr blgp); static mfma_i32_32x32x16_i8 create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::Type res, ::mlir::Value a, ::mlir::Value b, ::mlir::Value c, ::mlir::IntegerAttr cbsz, ::mlir::IntegerAttr abid, ::mlir::ROCDL::MFMAPermBAttr blgp); static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::Value a, ::mlir::Value b, ::mlir::Value c, ::mlir::IntegerAttr cbsz, ::mlir::IntegerAttr abid, ::mlir::ROCDL::MFMAPermBAttr blgp); static mfma_i32_32x32x16_i8 create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::Value a, ::mlir::Value b, ::mlir::Value c, ::mlir::IntegerAttr cbsz, ::mlir::IntegerAttr abid, ::mlir::ROCDL::MFMAPermBAttr blgp); static mfma_i32_32x32x16_i8 create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::Value a, ::mlir::Value b, ::mlir::Value c, ::mlir::IntegerAttr cbsz, ::mlir::IntegerAttr abid, ::mlir::ROCDL::MFMAPermBAttr blgp); static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::Type res, ::mlir::Value a, ::mlir::Value b, ::mlir::Value c, uint32_t cbsz, uint32_t abid, ::mlir::ROCDL::MFMAPermB blgp); static mfma_i32_32x32x16_i8 create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::Type res, ::mlir::Value a, ::mlir::Value b, ::mlir::Value c, uint32_t cbsz, uint32_t abid, ::mlir::ROCDL::MFMAPermB blgp); static mfma_i32_32x32x16_i8 create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::Type res, ::mlir::Value a, ::mlir::Value b, ::mlir::Value c, uint32_t cbsz, uint32_t abid, ::mlir::ROCDL::MFMAPermB blgp); static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::Value a, ::mlir::Value b, ::mlir::Value c, uint32_t cbsz, uint32_t abid, ::mlir::ROCDL::MFMAPermB blgp); static mfma_i32_32x32x16_i8 create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::Value a, ::mlir::Value b, ::mlir::Value c, uint32_t cbsz, uint32_t abid, ::mlir::ROCDL::MFMAPermB blgp); static mfma_i32_32x32x16_i8 create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::Value a, ::mlir::Value b, ::mlir::Value c, uint32_t cbsz, uint32_t abid, ::mlir::ROCDL::MFMAPermB blgp); static void build(::mlir::OpBuilder &, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, ::llvm::ArrayRef<::mlir::NamedAttribute> attributes = {}); static mfma_i32_32x32x16_i8 create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, ::llvm::ArrayRef<::mlir::NamedAttribute> attributes = {}); static mfma_i32_32x32x16_i8 create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, ::llvm::ArrayRef<::mlir::NamedAttribute> attributes = {}); static void build(::mlir::OpBuilder &, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, const Properties &properties, ::llvm::ArrayRef<::mlir::NamedAttribute> discardableAttributes = {}); static mfma_i32_32x32x16_i8 create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, const Properties &properties, ::llvm::ArrayRef<::mlir::NamedAttribute> discardableAttributes = {}); static mfma_i32_32x32x16_i8 create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, const Properties &properties, ::llvm::ArrayRef<::mlir::NamedAttribute> discardableAttributes = {}); ::llvm::LogicalResult verifyInvariantsImpl(); ::llvm::LogicalResult verifyInvariants(); static ::mlir::ParseResult parse(::mlir::OpAsmParser &parser, ::mlir::OperationState &result); void print(::mlir::OpAsmPrinter &_odsPrinter); private: ::mlir::StringAttr getAttributeNameForIndex(unsigned index) { return getAttributeNameForIndex((*this)->getName(), index); } static ::mlir::StringAttr getAttributeNameForIndex(::mlir::OperationName name, unsigned index) { assert(index < 3 && "invalid attribute index"); assert(name.getStringRef() == getOperationName() && "invalid operation name"); assert(name.isRegistered() && "Operation isn't registered, missing a " "dependent dialect loading?"); return name.getAttributeNames()[index]; } public: }; } // namespace mlir::ROCDL MLIR_DECLARE_EXPLICIT_TYPE_ID(::mlir::ROCDL::mfma_i32_32x32x16_i8) MLIR_DECLARE_EXPLICIT_TYPE_ID(::mlir::ROCDL::detail::mfma_i32_32x32x16_i8GenericAdaptorBase::Properties) namespace mlir::ROCDL { //===----------------------------------------------------------------------===// // ::mlir::ROCDL::mfma_i32_32x32x32_i8 declarations //===----------------------------------------------------------------------===// namespace detail { class mfma_i32_32x32x32_i8GenericAdaptorBase { public: struct Properties { using abidTy = ::mlir::IntegerAttr; abidTy abid; auto getAbid() const { auto &propStorage = this->abid; return ::llvm::cast<::mlir::IntegerAttr>(propStorage); } void setAbid(const ::mlir::IntegerAttr &propValue) { this->abid = propValue; } using blgpTy = ::mlir::ROCDL::MFMAPermBAttr; blgpTy blgp; auto getBlgp() const { auto &propStorage = this->blgp; return ::llvm::cast<::mlir::ROCDL::MFMAPermBAttr>(propStorage); } void setBlgp(const ::mlir::ROCDL::MFMAPermBAttr &propValue) { this->blgp = propValue; } using cbszTy = ::mlir::IntegerAttr; cbszTy cbsz; auto getCbsz() const { auto &propStorage = this->cbsz; return ::llvm::cast<::mlir::IntegerAttr>(propStorage); } void setCbsz(const ::mlir::IntegerAttr &propValue) { this->cbsz = propValue; } bool operator==(const Properties &rhs) const { return rhs.abid == this->abid && rhs.blgp == this->blgp && rhs.cbsz == this->cbsz && true; } bool operator!=(const Properties &rhs) const { return !(*this == rhs); } }; protected: ::mlir::DictionaryAttr odsAttrs; ::std::optional<::mlir::OperationName> odsOpName; Properties properties; ::mlir::RegionRange odsRegions; public: mfma_i32_32x32x32_i8GenericAdaptorBase(::mlir::DictionaryAttr attrs, const Properties &properties, ::mlir::RegionRange regions = {}) : odsAttrs(attrs), properties(properties), odsRegions(regions) { if (odsAttrs) odsOpName.emplace("rocdl.mfma.i32.32x32x32.i8", odsAttrs.getContext()); } mfma_i32_32x32x32_i8GenericAdaptorBase(mfma_i32_32x32x32_i8 op); std::pair getODSOperandIndexAndLength(unsigned index, unsigned odsOperandsSize) { return {index, 1}; } const Properties &getProperties() { return properties; } ::mlir::DictionaryAttr getAttributes() { return odsAttrs; } ::mlir::IntegerAttr getCbszAttr() { auto attr = ::llvm::cast<::mlir::IntegerAttr>(getProperties().cbsz); return attr; } uint32_t getCbsz(); ::mlir::IntegerAttr getAbidAttr() { auto attr = ::llvm::cast<::mlir::IntegerAttr>(getProperties().abid); return attr; } uint32_t getAbid(); ::mlir::ROCDL::MFMAPermBAttr getBlgpAttr() { auto attr = ::llvm::cast<::mlir::ROCDL::MFMAPermBAttr>(getProperties().blgp); return attr; } ::mlir::ROCDL::MFMAPermB getBlgp(); }; } // namespace detail template class mfma_i32_32x32x32_i8GenericAdaptor : public detail::mfma_i32_32x32x32_i8GenericAdaptorBase { using ValueT = ::llvm::detail::ValueOfRange; using Base = detail::mfma_i32_32x32x32_i8GenericAdaptorBase; static constexpr int odsIndex_a = 0; static constexpr int odsIndex_b = 1; static constexpr int odsIndex_c = 2; public: mfma_i32_32x32x32_i8GenericAdaptor(RangeT values, ::mlir::DictionaryAttr attrs, const Properties &properties, ::mlir::RegionRange regions = {}) : Base(attrs, properties, regions), odsOperands(values) {} mfma_i32_32x32x32_i8GenericAdaptor(RangeT values, ::mlir::DictionaryAttr attrs, ::mlir::PropertyRef properties, ::mlir::RegionRange regions = {}) : mfma_i32_32x32x32_i8GenericAdaptor(values, attrs, (properties ? *properties.as() : Properties{}), regions) {} mfma_i32_32x32x32_i8GenericAdaptor(RangeT values, ::mlir::DictionaryAttr attrs = nullptr) : mfma_i32_32x32x32_i8GenericAdaptor(values, attrs, Properties{}, {}) {} mfma_i32_32x32x32_i8GenericAdaptor(RangeT values, const mfma_i32_32x32x32_i8GenericAdaptorBase &base) : Base(base), odsOperands(values) {} template >> mfma_i32_32x32x32_i8GenericAdaptor(RangeT values, LateInst op) : Base(op), odsOperands(values) {} std::pair getODSOperandIndexAndLength(unsigned index) { return Base::getODSOperandIndexAndLength(index, odsOperands.size()); } RangeT getODSOperands(unsigned index) { auto valueRange = getODSOperandIndexAndLength(index); return {std::next(odsOperands.begin(), valueRange.first), std::next(odsOperands.begin(), valueRange.first + valueRange.second)}; } ValueT getA() { return (*getODSOperands(0).begin()); } ValueT getB() { return (*getODSOperands(1).begin()); } ValueT getC() { return (*getODSOperands(2).begin()); } RangeT getOperands() { return odsOperands; } private: RangeT odsOperands; }; class mfma_i32_32x32x32_i8Adaptor : public mfma_i32_32x32x32_i8GenericAdaptor<::mlir::ValueRange> { public: using mfma_i32_32x32x32_i8GenericAdaptor::mfma_i32_32x32x32_i8GenericAdaptor; mfma_i32_32x32x32_i8Adaptor(mfma_i32_32x32x32_i8 op); ::llvm::LogicalResult verify(::mlir::Location loc); }; class mfma_i32_32x32x32_i8 : public ::mlir::Op::Impl, ::mlir::OpTrait::ZeroSuccessors, ::mlir::OpTrait::NOperands<3>::Impl, ::mlir::OpTrait::OpInvariants, ::mlir::BytecodeOpInterface::Trait> { public: using Op::Op; using Op::print; using Adaptor = mfma_i32_32x32x32_i8Adaptor; template using GenericAdaptor = mfma_i32_32x32x32_i8GenericAdaptor; using FoldAdaptor = GenericAdaptor<::llvm::ArrayRef<::mlir::Attribute>>; static constexpr int odsIndex_a = 0; static constexpr int odsIndex_b = 1; static constexpr int odsIndex_c = 2; using Properties = FoldAdaptor::Properties; static ::llvm::ArrayRef<::llvm::StringRef> getAttributeNames() { static ::llvm::StringRef attrNames[] = {::llvm::StringRef("abid"), ::llvm::StringRef("blgp"), ::llvm::StringRef("cbsz")}; return ::llvm::ArrayRef(attrNames); } ::mlir::StringAttr getAbidAttrName() { return getAttributeNameForIndex(0); } static ::mlir::StringAttr getAbidAttrName(::mlir::OperationName name) { return getAttributeNameForIndex(name, 0); } ::mlir::StringAttr getBlgpAttrName() { return getAttributeNameForIndex(1); } static ::mlir::StringAttr getBlgpAttrName(::mlir::OperationName name) { return getAttributeNameForIndex(name, 1); } ::mlir::StringAttr getCbszAttrName() { return getAttributeNameForIndex(2); } static ::mlir::StringAttr getCbszAttrName(::mlir::OperationName name) { return getAttributeNameForIndex(name, 2); } static constexpr ::llvm::StringLiteral getOperationName() { return ::llvm::StringLiteral("rocdl.mfma.i32.32x32x32.i8"); } std::pair getODSOperandIndexAndLength(unsigned index) { return {index, 1}; } ::mlir::Operation::operand_range getODSOperands(unsigned index) { auto valueRange = getODSOperandIndexAndLength(index); return {std::next(getOperation()->operand_begin(), valueRange.first), std::next(getOperation()->operand_begin(), valueRange.first + valueRange.second)}; } ::mlir::TypedValue<::mlir::VectorType> getA() { return ::llvm::cast<::mlir::TypedValue<::mlir::VectorType>>(*getODSOperands(0).begin()); } ::mlir::TypedValue<::mlir::VectorType> getB() { return ::llvm::cast<::mlir::TypedValue<::mlir::VectorType>>(*getODSOperands(1).begin()); } ::mlir::TypedValue<::mlir::VectorType> getC() { return ::llvm::cast<::mlir::TypedValue<::mlir::VectorType>>(*getODSOperands(2).begin()); } ::mlir::OpOperand &getAMutable() { auto range = getODSOperandIndexAndLength(0); return getOperation()->getOpOperand(range.first); } ::mlir::OpOperand &getBMutable() { auto range = getODSOperandIndexAndLength(1); return getOperation()->getOpOperand(range.first); } ::mlir::OpOperand &getCMutable() { auto range = getODSOperandIndexAndLength(2); return getOperation()->getOpOperand(range.first); } std::pair getODSResultIndexAndLength(unsigned index) { return {index, 1}; } ::mlir::Operation::result_range getODSResults(unsigned index) { auto valueRange = getODSResultIndexAndLength(index); return {std::next(getOperation()->result_begin(), valueRange.first), std::next(getOperation()->result_begin(), valueRange.first + valueRange.second)}; } ::mlir::TypedValue<::mlir::VectorType> getRes() { return ::llvm::cast<::mlir::TypedValue<::mlir::VectorType>>(*getODSResults(0).begin()); } static ::llvm::LogicalResult setPropertiesFromAttr(Properties &prop, ::mlir::Attribute attr, ::llvm::function_ref<::mlir::InFlightDiagnostic()> emitError); static ::mlir::Attribute getPropertiesAsAttr(::mlir::MLIRContext *ctx, const Properties &prop); static llvm::hash_code computePropertiesHash(const Properties &prop); static std::optional getInherentAttr(::mlir::MLIRContext *ctx, const Properties &prop, llvm::StringRef name); static void setInherentAttr(Properties &prop, llvm::StringRef name, mlir::Attribute value); static void populateInherentAttrs(::mlir::MLIRContext *ctx, const Properties &prop, ::mlir::NamedAttrList &attrs); static ::llvm::LogicalResult verifyInherentAttrs(::mlir::OperationName opName, ::mlir::NamedAttrList &attrs, llvm::function_ref<::mlir::InFlightDiagnostic()> emitError); static ::llvm::LogicalResult readProperties(::mlir::DialectBytecodeReader &reader, ::mlir::OperationState &state); void writeProperties(::mlir::DialectBytecodeWriter &writer); ::mlir::IntegerAttr getCbszAttr() { return ::llvm::cast<::mlir::IntegerAttr>(getProperties().cbsz); } uint32_t getCbsz(); ::mlir::IntegerAttr getAbidAttr() { return ::llvm::cast<::mlir::IntegerAttr>(getProperties().abid); } uint32_t getAbid(); ::mlir::ROCDL::MFMAPermBAttr getBlgpAttr() { return ::llvm::cast<::mlir::ROCDL::MFMAPermBAttr>(getProperties().blgp); } ::mlir::ROCDL::MFMAPermB getBlgp(); void setCbszAttr(::mlir::IntegerAttr attr) { getProperties().cbsz = attr; } void setCbsz(uint32_t attrValue); void setAbidAttr(::mlir::IntegerAttr attr) { getProperties().abid = attr; } void setAbid(uint32_t attrValue); void setBlgpAttr(::mlir::ROCDL::MFMAPermBAttr attr) { getProperties().blgp = attr; } void setBlgp(::mlir::ROCDL::MFMAPermB attrValue); static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::Type res, ::mlir::Value a, ::mlir::Value b, ::mlir::Value c, ::mlir::IntegerAttr cbsz, ::mlir::IntegerAttr abid, ::mlir::ROCDL::MFMAPermBAttr blgp); static mfma_i32_32x32x32_i8 create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::Type res, ::mlir::Value a, ::mlir::Value b, ::mlir::Value c, ::mlir::IntegerAttr cbsz, ::mlir::IntegerAttr abid, ::mlir::ROCDL::MFMAPermBAttr blgp); static mfma_i32_32x32x32_i8 create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::Type res, ::mlir::Value a, ::mlir::Value b, ::mlir::Value c, ::mlir::IntegerAttr cbsz, ::mlir::IntegerAttr abid, ::mlir::ROCDL::MFMAPermBAttr blgp); static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::Value a, ::mlir::Value b, ::mlir::Value c, ::mlir::IntegerAttr cbsz, ::mlir::IntegerAttr abid, ::mlir::ROCDL::MFMAPermBAttr blgp); static mfma_i32_32x32x32_i8 create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::Value a, ::mlir::Value b, ::mlir::Value c, ::mlir::IntegerAttr cbsz, ::mlir::IntegerAttr abid, ::mlir::ROCDL::MFMAPermBAttr blgp); static mfma_i32_32x32x32_i8 create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::Value a, ::mlir::Value b, ::mlir::Value c, ::mlir::IntegerAttr cbsz, ::mlir::IntegerAttr abid, ::mlir::ROCDL::MFMAPermBAttr blgp); static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::Type res, ::mlir::Value a, ::mlir::Value b, ::mlir::Value c, uint32_t cbsz, uint32_t abid, ::mlir::ROCDL::MFMAPermB blgp); static mfma_i32_32x32x32_i8 create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::Type res, ::mlir::Value a, ::mlir::Value b, ::mlir::Value c, uint32_t cbsz, uint32_t abid, ::mlir::ROCDL::MFMAPermB blgp); static mfma_i32_32x32x32_i8 create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::Type res, ::mlir::Value a, ::mlir::Value b, ::mlir::Value c, uint32_t cbsz, uint32_t abid, ::mlir::ROCDL::MFMAPermB blgp); static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::Value a, ::mlir::Value b, ::mlir::Value c, uint32_t cbsz, uint32_t abid, ::mlir::ROCDL::MFMAPermB blgp); static mfma_i32_32x32x32_i8 create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::Value a, ::mlir::Value b, ::mlir::Value c, uint32_t cbsz, uint32_t abid, ::mlir::ROCDL::MFMAPermB blgp); static mfma_i32_32x32x32_i8 create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::Value a, ::mlir::Value b, ::mlir::Value c, uint32_t cbsz, uint32_t abid, ::mlir::ROCDL::MFMAPermB blgp); static void build(::mlir::OpBuilder &, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, ::llvm::ArrayRef<::mlir::NamedAttribute> attributes = {}); static mfma_i32_32x32x32_i8 create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, ::llvm::ArrayRef<::mlir::NamedAttribute> attributes = {}); static mfma_i32_32x32x32_i8 create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, ::llvm::ArrayRef<::mlir::NamedAttribute> attributes = {}); static void build(::mlir::OpBuilder &, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, const Properties &properties, ::llvm::ArrayRef<::mlir::NamedAttribute> discardableAttributes = {}); static mfma_i32_32x32x32_i8 create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, const Properties &properties, ::llvm::ArrayRef<::mlir::NamedAttribute> discardableAttributes = {}); static mfma_i32_32x32x32_i8 create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, const Properties &properties, ::llvm::ArrayRef<::mlir::NamedAttribute> discardableAttributes = {}); ::llvm::LogicalResult verifyInvariantsImpl(); ::llvm::LogicalResult verifyInvariants(); static ::mlir::ParseResult parse(::mlir::OpAsmParser &parser, ::mlir::OperationState &result); void print(::mlir::OpAsmPrinter &_odsPrinter); private: ::mlir::StringAttr getAttributeNameForIndex(unsigned index) { return getAttributeNameForIndex((*this)->getName(), index); } static ::mlir::StringAttr getAttributeNameForIndex(::mlir::OperationName name, unsigned index) { assert(index < 3 && "invalid attribute index"); assert(name.getStringRef() == getOperationName() && "invalid operation name"); assert(name.isRegistered() && "Operation isn't registered, missing a " "dependent dialect loading?"); return name.getAttributeNames()[index]; } public: }; } // namespace mlir::ROCDL MLIR_DECLARE_EXPLICIT_TYPE_ID(::mlir::ROCDL::mfma_i32_32x32x32_i8) MLIR_DECLARE_EXPLICIT_TYPE_ID(::mlir::ROCDL::detail::mfma_i32_32x32x32_i8GenericAdaptorBase::Properties) namespace mlir::ROCDL { //===----------------------------------------------------------------------===// // ::mlir::ROCDL::mfma_i32_32x32x4i8 declarations //===----------------------------------------------------------------------===// namespace detail { class mfma_i32_32x32x4i8GenericAdaptorBase { public: struct Properties { using abidTy = ::mlir::IntegerAttr; abidTy abid; auto getAbid() const { auto &propStorage = this->abid; return ::llvm::cast<::mlir::IntegerAttr>(propStorage); } void setAbid(const ::mlir::IntegerAttr &propValue) { this->abid = propValue; } using blgpTy = ::mlir::ROCDL::MFMAPermBAttr; blgpTy blgp; auto getBlgp() const { auto &propStorage = this->blgp; return ::llvm::cast<::mlir::ROCDL::MFMAPermBAttr>(propStorage); } void setBlgp(const ::mlir::ROCDL::MFMAPermBAttr &propValue) { this->blgp = propValue; } using cbszTy = ::mlir::IntegerAttr; cbszTy cbsz; auto getCbsz() const { auto &propStorage = this->cbsz; return ::llvm::cast<::mlir::IntegerAttr>(propStorage); } void setCbsz(const ::mlir::IntegerAttr &propValue) { this->cbsz = propValue; } bool operator==(const Properties &rhs) const { return rhs.abid == this->abid && rhs.blgp == this->blgp && rhs.cbsz == this->cbsz && true; } bool operator!=(const Properties &rhs) const { return !(*this == rhs); } }; protected: ::mlir::DictionaryAttr odsAttrs; ::std::optional<::mlir::OperationName> odsOpName; Properties properties; ::mlir::RegionRange odsRegions; public: mfma_i32_32x32x4i8GenericAdaptorBase(::mlir::DictionaryAttr attrs, const Properties &properties, ::mlir::RegionRange regions = {}) : odsAttrs(attrs), properties(properties), odsRegions(regions) { if (odsAttrs) odsOpName.emplace("rocdl.mfma.i32.32x32x4i8", odsAttrs.getContext()); } mfma_i32_32x32x4i8GenericAdaptorBase(mfma_i32_32x32x4i8 op); std::pair getODSOperandIndexAndLength(unsigned index, unsigned odsOperandsSize) { return {index, 1}; } const Properties &getProperties() { return properties; } ::mlir::DictionaryAttr getAttributes() { return odsAttrs; } ::mlir::IntegerAttr getCbszAttr() { auto attr = ::llvm::cast<::mlir::IntegerAttr>(getProperties().cbsz); return attr; } uint32_t getCbsz(); ::mlir::IntegerAttr getAbidAttr() { auto attr = ::llvm::cast<::mlir::IntegerAttr>(getProperties().abid); return attr; } uint32_t getAbid(); ::mlir::ROCDL::MFMAPermBAttr getBlgpAttr() { auto attr = ::llvm::cast<::mlir::ROCDL::MFMAPermBAttr>(getProperties().blgp); return attr; } ::mlir::ROCDL::MFMAPermB getBlgp(); }; } // namespace detail template class mfma_i32_32x32x4i8GenericAdaptor : public detail::mfma_i32_32x32x4i8GenericAdaptorBase { using ValueT = ::llvm::detail::ValueOfRange; using Base = detail::mfma_i32_32x32x4i8GenericAdaptorBase; static constexpr int odsIndex_a = 0; static constexpr int odsIndex_b = 1; static constexpr int odsIndex_c = 2; public: mfma_i32_32x32x4i8GenericAdaptor(RangeT values, ::mlir::DictionaryAttr attrs, const Properties &properties, ::mlir::RegionRange regions = {}) : Base(attrs, properties, regions), odsOperands(values) {} mfma_i32_32x32x4i8GenericAdaptor(RangeT values, ::mlir::DictionaryAttr attrs, ::mlir::PropertyRef properties, ::mlir::RegionRange regions = {}) : mfma_i32_32x32x4i8GenericAdaptor(values, attrs, (properties ? *properties.as() : Properties{}), regions) {} mfma_i32_32x32x4i8GenericAdaptor(RangeT values, ::mlir::DictionaryAttr attrs = nullptr) : mfma_i32_32x32x4i8GenericAdaptor(values, attrs, Properties{}, {}) {} mfma_i32_32x32x4i8GenericAdaptor(RangeT values, const mfma_i32_32x32x4i8GenericAdaptorBase &base) : Base(base), odsOperands(values) {} template >> mfma_i32_32x32x4i8GenericAdaptor(RangeT values, LateInst op) : Base(op), odsOperands(values) {} std::pair getODSOperandIndexAndLength(unsigned index) { return Base::getODSOperandIndexAndLength(index, odsOperands.size()); } RangeT getODSOperands(unsigned index) { auto valueRange = getODSOperandIndexAndLength(index); return {std::next(odsOperands.begin(), valueRange.first), std::next(odsOperands.begin(), valueRange.first + valueRange.second)}; } ValueT getA() { return (*getODSOperands(0).begin()); } ValueT getB() { return (*getODSOperands(1).begin()); } ValueT getC() { return (*getODSOperands(2).begin()); } RangeT getOperands() { return odsOperands; } private: RangeT odsOperands; }; class mfma_i32_32x32x4i8Adaptor : public mfma_i32_32x32x4i8GenericAdaptor<::mlir::ValueRange> { public: using mfma_i32_32x32x4i8GenericAdaptor::mfma_i32_32x32x4i8GenericAdaptor; mfma_i32_32x32x4i8Adaptor(mfma_i32_32x32x4i8 op); ::llvm::LogicalResult verify(::mlir::Location loc); }; class mfma_i32_32x32x4i8 : public ::mlir::Op::Impl, ::mlir::OpTrait::ZeroSuccessors, ::mlir::OpTrait::NOperands<3>::Impl, ::mlir::OpTrait::OpInvariants, ::mlir::BytecodeOpInterface::Trait> { public: using Op::Op; using Op::print; using Adaptor = mfma_i32_32x32x4i8Adaptor; template using GenericAdaptor = mfma_i32_32x32x4i8GenericAdaptor; using FoldAdaptor = GenericAdaptor<::llvm::ArrayRef<::mlir::Attribute>>; static constexpr int odsIndex_a = 0; static constexpr int odsIndex_b = 1; static constexpr int odsIndex_c = 2; using Properties = FoldAdaptor::Properties; static ::llvm::ArrayRef<::llvm::StringRef> getAttributeNames() { static ::llvm::StringRef attrNames[] = {::llvm::StringRef("abid"), ::llvm::StringRef("blgp"), ::llvm::StringRef("cbsz")}; return ::llvm::ArrayRef(attrNames); } ::mlir::StringAttr getAbidAttrName() { return getAttributeNameForIndex(0); } static ::mlir::StringAttr getAbidAttrName(::mlir::OperationName name) { return getAttributeNameForIndex(name, 0); } ::mlir::StringAttr getBlgpAttrName() { return getAttributeNameForIndex(1); } static ::mlir::StringAttr getBlgpAttrName(::mlir::OperationName name) { return getAttributeNameForIndex(name, 1); } ::mlir::StringAttr getCbszAttrName() { return getAttributeNameForIndex(2); } static ::mlir::StringAttr getCbszAttrName(::mlir::OperationName name) { return getAttributeNameForIndex(name, 2); } static constexpr ::llvm::StringLiteral getOperationName() { return ::llvm::StringLiteral("rocdl.mfma.i32.32x32x4i8"); } std::pair getODSOperandIndexAndLength(unsigned index) { return {index, 1}; } ::mlir::Operation::operand_range getODSOperands(unsigned index) { auto valueRange = getODSOperandIndexAndLength(index); return {std::next(getOperation()->operand_begin(), valueRange.first), std::next(getOperation()->operand_begin(), valueRange.first + valueRange.second)}; } ::mlir::TypedValue<::mlir::Type> getA() { return ::llvm::cast<::mlir::TypedValue<::mlir::Type>>(*getODSOperands(0).begin()); } ::mlir::TypedValue<::mlir::Type> getB() { return ::llvm::cast<::mlir::TypedValue<::mlir::Type>>(*getODSOperands(1).begin()); } ::mlir::TypedValue<::mlir::VectorType> getC() { return ::llvm::cast<::mlir::TypedValue<::mlir::VectorType>>(*getODSOperands(2).begin()); } ::mlir::OpOperand &getAMutable() { auto range = getODSOperandIndexAndLength(0); return getOperation()->getOpOperand(range.first); } ::mlir::OpOperand &getBMutable() { auto range = getODSOperandIndexAndLength(1); return getOperation()->getOpOperand(range.first); } ::mlir::OpOperand &getCMutable() { auto range = getODSOperandIndexAndLength(2); return getOperation()->getOpOperand(range.first); } std::pair getODSResultIndexAndLength(unsigned index) { return {index, 1}; } ::mlir::Operation::result_range getODSResults(unsigned index) { auto valueRange = getODSResultIndexAndLength(index); return {std::next(getOperation()->result_begin(), valueRange.first), std::next(getOperation()->result_begin(), valueRange.first + valueRange.second)}; } ::mlir::TypedValue<::mlir::VectorType> getRes() { return ::llvm::cast<::mlir::TypedValue<::mlir::VectorType>>(*getODSResults(0).begin()); } static ::llvm::LogicalResult setPropertiesFromAttr(Properties &prop, ::mlir::Attribute attr, ::llvm::function_ref<::mlir::InFlightDiagnostic()> emitError); static ::mlir::Attribute getPropertiesAsAttr(::mlir::MLIRContext *ctx, const Properties &prop); static llvm::hash_code computePropertiesHash(const Properties &prop); static std::optional getInherentAttr(::mlir::MLIRContext *ctx, const Properties &prop, llvm::StringRef name); static void setInherentAttr(Properties &prop, llvm::StringRef name, mlir::Attribute value); static void populateInherentAttrs(::mlir::MLIRContext *ctx, const Properties &prop, ::mlir::NamedAttrList &attrs); static ::llvm::LogicalResult verifyInherentAttrs(::mlir::OperationName opName, ::mlir::NamedAttrList &attrs, llvm::function_ref<::mlir::InFlightDiagnostic()> emitError); static ::llvm::LogicalResult readProperties(::mlir::DialectBytecodeReader &reader, ::mlir::OperationState &state); void writeProperties(::mlir::DialectBytecodeWriter &writer); ::mlir::IntegerAttr getCbszAttr() { return ::llvm::cast<::mlir::IntegerAttr>(getProperties().cbsz); } uint32_t getCbsz(); ::mlir::IntegerAttr getAbidAttr() { return ::llvm::cast<::mlir::IntegerAttr>(getProperties().abid); } uint32_t getAbid(); ::mlir::ROCDL::MFMAPermBAttr getBlgpAttr() { return ::llvm::cast<::mlir::ROCDL::MFMAPermBAttr>(getProperties().blgp); } ::mlir::ROCDL::MFMAPermB getBlgp(); void setCbszAttr(::mlir::IntegerAttr attr) { getProperties().cbsz = attr; } void setCbsz(uint32_t attrValue); void setAbidAttr(::mlir::IntegerAttr attr) { getProperties().abid = attr; } void setAbid(uint32_t attrValue); void setBlgpAttr(::mlir::ROCDL::MFMAPermBAttr attr) { getProperties().blgp = attr; } void setBlgp(::mlir::ROCDL::MFMAPermB attrValue); static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::Type res, ::mlir::Value a, ::mlir::Value b, ::mlir::Value c, ::mlir::IntegerAttr cbsz, ::mlir::IntegerAttr abid, ::mlir::ROCDL::MFMAPermBAttr blgp); static mfma_i32_32x32x4i8 create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::Type res, ::mlir::Value a, ::mlir::Value b, ::mlir::Value c, ::mlir::IntegerAttr cbsz, ::mlir::IntegerAttr abid, ::mlir::ROCDL::MFMAPermBAttr blgp); static mfma_i32_32x32x4i8 create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::Type res, ::mlir::Value a, ::mlir::Value b, ::mlir::Value c, ::mlir::IntegerAttr cbsz, ::mlir::IntegerAttr abid, ::mlir::ROCDL::MFMAPermBAttr blgp); static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::Value a, ::mlir::Value b, ::mlir::Value c, ::mlir::IntegerAttr cbsz, ::mlir::IntegerAttr abid, ::mlir::ROCDL::MFMAPermBAttr blgp); static mfma_i32_32x32x4i8 create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::Value a, ::mlir::Value b, ::mlir::Value c, ::mlir::IntegerAttr cbsz, ::mlir::IntegerAttr abid, ::mlir::ROCDL::MFMAPermBAttr blgp); static mfma_i32_32x32x4i8 create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::Value a, ::mlir::Value b, ::mlir::Value c, ::mlir::IntegerAttr cbsz, ::mlir::IntegerAttr abid, ::mlir::ROCDL::MFMAPermBAttr blgp); static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::Type res, ::mlir::Value a, ::mlir::Value b, ::mlir::Value c, uint32_t cbsz, uint32_t abid, ::mlir::ROCDL::MFMAPermB blgp); static mfma_i32_32x32x4i8 create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::Type res, ::mlir::Value a, ::mlir::Value b, ::mlir::Value c, uint32_t cbsz, uint32_t abid, ::mlir::ROCDL::MFMAPermB blgp); static mfma_i32_32x32x4i8 create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::Type res, ::mlir::Value a, ::mlir::Value b, ::mlir::Value c, uint32_t cbsz, uint32_t abid, ::mlir::ROCDL::MFMAPermB blgp); static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::Value a, ::mlir::Value b, ::mlir::Value c, uint32_t cbsz, uint32_t abid, ::mlir::ROCDL::MFMAPermB blgp); static mfma_i32_32x32x4i8 create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::Value a, ::mlir::Value b, ::mlir::Value c, uint32_t cbsz, uint32_t abid, ::mlir::ROCDL::MFMAPermB blgp); static mfma_i32_32x32x4i8 create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::Value a, ::mlir::Value b, ::mlir::Value c, uint32_t cbsz, uint32_t abid, ::mlir::ROCDL::MFMAPermB blgp); static void build(::mlir::OpBuilder &, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, ::llvm::ArrayRef<::mlir::NamedAttribute> attributes = {}); static mfma_i32_32x32x4i8 create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, ::llvm::ArrayRef<::mlir::NamedAttribute> attributes = {}); static mfma_i32_32x32x4i8 create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, ::llvm::ArrayRef<::mlir::NamedAttribute> attributes = {}); static void build(::mlir::OpBuilder &, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, const Properties &properties, ::llvm::ArrayRef<::mlir::NamedAttribute> discardableAttributes = {}); static mfma_i32_32x32x4i8 create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, const Properties &properties, ::llvm::ArrayRef<::mlir::NamedAttribute> discardableAttributes = {}); static mfma_i32_32x32x4i8 create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, const Properties &properties, ::llvm::ArrayRef<::mlir::NamedAttribute> discardableAttributes = {}); ::llvm::LogicalResult verifyInvariantsImpl(); ::llvm::LogicalResult verifyInvariants(); static ::mlir::ParseResult parse(::mlir::OpAsmParser &parser, ::mlir::OperationState &result); void print(::mlir::OpAsmPrinter &_odsPrinter); private: ::mlir::StringAttr getAttributeNameForIndex(unsigned index) { return getAttributeNameForIndex((*this)->getName(), index); } static ::mlir::StringAttr getAttributeNameForIndex(::mlir::OperationName name, unsigned index) { assert(index < 3 && "invalid attribute index"); assert(name.getStringRef() == getOperationName() && "invalid operation name"); assert(name.isRegistered() && "Operation isn't registered, missing a " "dependent dialect loading?"); return name.getAttributeNames()[index]; } public: }; } // namespace mlir::ROCDL MLIR_DECLARE_EXPLICIT_TYPE_ID(::mlir::ROCDL::mfma_i32_32x32x4i8) MLIR_DECLARE_EXPLICIT_TYPE_ID(::mlir::ROCDL::detail::mfma_i32_32x32x4i8GenericAdaptorBase::Properties) namespace mlir::ROCDL { //===----------------------------------------------------------------------===// // ::mlir::ROCDL::mfma_i32_32x32x8i8 declarations //===----------------------------------------------------------------------===// namespace detail { class mfma_i32_32x32x8i8GenericAdaptorBase { public: struct Properties { using abidTy = ::mlir::IntegerAttr; abidTy abid; auto getAbid() const { auto &propStorage = this->abid; return ::llvm::cast<::mlir::IntegerAttr>(propStorage); } void setAbid(const ::mlir::IntegerAttr &propValue) { this->abid = propValue; } using blgpTy = ::mlir::ROCDL::MFMAPermBAttr; blgpTy blgp; auto getBlgp() const { auto &propStorage = this->blgp; return ::llvm::cast<::mlir::ROCDL::MFMAPermBAttr>(propStorage); } void setBlgp(const ::mlir::ROCDL::MFMAPermBAttr &propValue) { this->blgp = propValue; } using cbszTy = ::mlir::IntegerAttr; cbszTy cbsz; auto getCbsz() const { auto &propStorage = this->cbsz; return ::llvm::cast<::mlir::IntegerAttr>(propStorage); } void setCbsz(const ::mlir::IntegerAttr &propValue) { this->cbsz = propValue; } bool operator==(const Properties &rhs) const { return rhs.abid == this->abid && rhs.blgp == this->blgp && rhs.cbsz == this->cbsz && true; } bool operator!=(const Properties &rhs) const { return !(*this == rhs); } }; protected: ::mlir::DictionaryAttr odsAttrs; ::std::optional<::mlir::OperationName> odsOpName; Properties properties; ::mlir::RegionRange odsRegions; public: mfma_i32_32x32x8i8GenericAdaptorBase(::mlir::DictionaryAttr attrs, const Properties &properties, ::mlir::RegionRange regions = {}) : odsAttrs(attrs), properties(properties), odsRegions(regions) { if (odsAttrs) odsOpName.emplace("rocdl.mfma.i32.32x32x8i8", odsAttrs.getContext()); } mfma_i32_32x32x8i8GenericAdaptorBase(mfma_i32_32x32x8i8 op); std::pair getODSOperandIndexAndLength(unsigned index, unsigned odsOperandsSize) { return {index, 1}; } const Properties &getProperties() { return properties; } ::mlir::DictionaryAttr getAttributes() { return odsAttrs; } ::mlir::IntegerAttr getCbszAttr() { auto attr = ::llvm::cast<::mlir::IntegerAttr>(getProperties().cbsz); return attr; } uint32_t getCbsz(); ::mlir::IntegerAttr getAbidAttr() { auto attr = ::llvm::cast<::mlir::IntegerAttr>(getProperties().abid); return attr; } uint32_t getAbid(); ::mlir::ROCDL::MFMAPermBAttr getBlgpAttr() { auto attr = ::llvm::cast<::mlir::ROCDL::MFMAPermBAttr>(getProperties().blgp); return attr; } ::mlir::ROCDL::MFMAPermB getBlgp(); }; } // namespace detail template class mfma_i32_32x32x8i8GenericAdaptor : public detail::mfma_i32_32x32x8i8GenericAdaptorBase { using ValueT = ::llvm::detail::ValueOfRange; using Base = detail::mfma_i32_32x32x8i8GenericAdaptorBase; static constexpr int odsIndex_a = 0; static constexpr int odsIndex_b = 1; static constexpr int odsIndex_c = 2; public: mfma_i32_32x32x8i8GenericAdaptor(RangeT values, ::mlir::DictionaryAttr attrs, const Properties &properties, ::mlir::RegionRange regions = {}) : Base(attrs, properties, regions), odsOperands(values) {} mfma_i32_32x32x8i8GenericAdaptor(RangeT values, ::mlir::DictionaryAttr attrs, ::mlir::PropertyRef properties, ::mlir::RegionRange regions = {}) : mfma_i32_32x32x8i8GenericAdaptor(values, attrs, (properties ? *properties.as() : Properties{}), regions) {} mfma_i32_32x32x8i8GenericAdaptor(RangeT values, ::mlir::DictionaryAttr attrs = nullptr) : mfma_i32_32x32x8i8GenericAdaptor(values, attrs, Properties{}, {}) {} mfma_i32_32x32x8i8GenericAdaptor(RangeT values, const mfma_i32_32x32x8i8GenericAdaptorBase &base) : Base(base), odsOperands(values) {} template >> mfma_i32_32x32x8i8GenericAdaptor(RangeT values, LateInst op) : Base(op), odsOperands(values) {} std::pair getODSOperandIndexAndLength(unsigned index) { return Base::getODSOperandIndexAndLength(index, odsOperands.size()); } RangeT getODSOperands(unsigned index) { auto valueRange = getODSOperandIndexAndLength(index); return {std::next(odsOperands.begin(), valueRange.first), std::next(odsOperands.begin(), valueRange.first + valueRange.second)}; } ValueT getA() { return (*getODSOperands(0).begin()); } ValueT getB() { return (*getODSOperands(1).begin()); } ValueT getC() { return (*getODSOperands(2).begin()); } RangeT getOperands() { return odsOperands; } private: RangeT odsOperands; }; class mfma_i32_32x32x8i8Adaptor : public mfma_i32_32x32x8i8GenericAdaptor<::mlir::ValueRange> { public: using mfma_i32_32x32x8i8GenericAdaptor::mfma_i32_32x32x8i8GenericAdaptor; mfma_i32_32x32x8i8Adaptor(mfma_i32_32x32x8i8 op); ::llvm::LogicalResult verify(::mlir::Location loc); }; class mfma_i32_32x32x8i8 : public ::mlir::Op::Impl, ::mlir::OpTrait::ZeroSuccessors, ::mlir::OpTrait::NOperands<3>::Impl, ::mlir::OpTrait::OpInvariants, ::mlir::BytecodeOpInterface::Trait> { public: using Op::Op; using Op::print; using Adaptor = mfma_i32_32x32x8i8Adaptor; template using GenericAdaptor = mfma_i32_32x32x8i8GenericAdaptor; using FoldAdaptor = GenericAdaptor<::llvm::ArrayRef<::mlir::Attribute>>; static constexpr int odsIndex_a = 0; static constexpr int odsIndex_b = 1; static constexpr int odsIndex_c = 2; using Properties = FoldAdaptor::Properties; static ::llvm::ArrayRef<::llvm::StringRef> getAttributeNames() { static ::llvm::StringRef attrNames[] = {::llvm::StringRef("abid"), ::llvm::StringRef("blgp"), ::llvm::StringRef("cbsz")}; return ::llvm::ArrayRef(attrNames); } ::mlir::StringAttr getAbidAttrName() { return getAttributeNameForIndex(0); } static ::mlir::StringAttr getAbidAttrName(::mlir::OperationName name) { return getAttributeNameForIndex(name, 0); } ::mlir::StringAttr getBlgpAttrName() { return getAttributeNameForIndex(1); } static ::mlir::StringAttr getBlgpAttrName(::mlir::OperationName name) { return getAttributeNameForIndex(name, 1); } ::mlir::StringAttr getCbszAttrName() { return getAttributeNameForIndex(2); } static ::mlir::StringAttr getCbszAttrName(::mlir::OperationName name) { return getAttributeNameForIndex(name, 2); } static constexpr ::llvm::StringLiteral getOperationName() { return ::llvm::StringLiteral("rocdl.mfma.i32.32x32x8i8"); } std::pair getODSOperandIndexAndLength(unsigned index) { return {index, 1}; } ::mlir::Operation::operand_range getODSOperands(unsigned index) { auto valueRange = getODSOperandIndexAndLength(index); return {std::next(getOperation()->operand_begin(), valueRange.first), std::next(getOperation()->operand_begin(), valueRange.first + valueRange.second)}; } ::mlir::TypedValue<::mlir::Type> getA() { return ::llvm::cast<::mlir::TypedValue<::mlir::Type>>(*getODSOperands(0).begin()); } ::mlir::TypedValue<::mlir::Type> getB() { return ::llvm::cast<::mlir::TypedValue<::mlir::Type>>(*getODSOperands(1).begin()); } ::mlir::TypedValue<::mlir::VectorType> getC() { return ::llvm::cast<::mlir::TypedValue<::mlir::VectorType>>(*getODSOperands(2).begin()); } ::mlir::OpOperand &getAMutable() { auto range = getODSOperandIndexAndLength(0); return getOperation()->getOpOperand(range.first); } ::mlir::OpOperand &getBMutable() { auto range = getODSOperandIndexAndLength(1); return getOperation()->getOpOperand(range.first); } ::mlir::OpOperand &getCMutable() { auto range = getODSOperandIndexAndLength(2); return getOperation()->getOpOperand(range.first); } std::pair getODSResultIndexAndLength(unsigned index) { return {index, 1}; } ::mlir::Operation::result_range getODSResults(unsigned index) { auto valueRange = getODSResultIndexAndLength(index); return {std::next(getOperation()->result_begin(), valueRange.first), std::next(getOperation()->result_begin(), valueRange.first + valueRange.second)}; } ::mlir::TypedValue<::mlir::VectorType> getRes() { return ::llvm::cast<::mlir::TypedValue<::mlir::VectorType>>(*getODSResults(0).begin()); } static ::llvm::LogicalResult setPropertiesFromAttr(Properties &prop, ::mlir::Attribute attr, ::llvm::function_ref<::mlir::InFlightDiagnostic()> emitError); static ::mlir::Attribute getPropertiesAsAttr(::mlir::MLIRContext *ctx, const Properties &prop); static llvm::hash_code computePropertiesHash(const Properties &prop); static std::optional getInherentAttr(::mlir::MLIRContext *ctx, const Properties &prop, llvm::StringRef name); static void setInherentAttr(Properties &prop, llvm::StringRef name, mlir::Attribute value); static void populateInherentAttrs(::mlir::MLIRContext *ctx, const Properties &prop, ::mlir::NamedAttrList &attrs); static ::llvm::LogicalResult verifyInherentAttrs(::mlir::OperationName opName, ::mlir::NamedAttrList &attrs, llvm::function_ref<::mlir::InFlightDiagnostic()> emitError); static ::llvm::LogicalResult readProperties(::mlir::DialectBytecodeReader &reader, ::mlir::OperationState &state); void writeProperties(::mlir::DialectBytecodeWriter &writer); ::mlir::IntegerAttr getCbszAttr() { return ::llvm::cast<::mlir::IntegerAttr>(getProperties().cbsz); } uint32_t getCbsz(); ::mlir::IntegerAttr getAbidAttr() { return ::llvm::cast<::mlir::IntegerAttr>(getProperties().abid); } uint32_t getAbid(); ::mlir::ROCDL::MFMAPermBAttr getBlgpAttr() { return ::llvm::cast<::mlir::ROCDL::MFMAPermBAttr>(getProperties().blgp); } ::mlir::ROCDL::MFMAPermB getBlgp(); void setCbszAttr(::mlir::IntegerAttr attr) { getProperties().cbsz = attr; } void setCbsz(uint32_t attrValue); void setAbidAttr(::mlir::IntegerAttr attr) { getProperties().abid = attr; } void setAbid(uint32_t attrValue); void setBlgpAttr(::mlir::ROCDL::MFMAPermBAttr attr) { getProperties().blgp = attr; } void setBlgp(::mlir::ROCDL::MFMAPermB attrValue); static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::Type res, ::mlir::Value a, ::mlir::Value b, ::mlir::Value c, ::mlir::IntegerAttr cbsz, ::mlir::IntegerAttr abid, ::mlir::ROCDL::MFMAPermBAttr blgp); static mfma_i32_32x32x8i8 create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::Type res, ::mlir::Value a, ::mlir::Value b, ::mlir::Value c, ::mlir::IntegerAttr cbsz, ::mlir::IntegerAttr abid, ::mlir::ROCDL::MFMAPermBAttr blgp); static mfma_i32_32x32x8i8 create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::Type res, ::mlir::Value a, ::mlir::Value b, ::mlir::Value c, ::mlir::IntegerAttr cbsz, ::mlir::IntegerAttr abid, ::mlir::ROCDL::MFMAPermBAttr blgp); static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::Value a, ::mlir::Value b, ::mlir::Value c, ::mlir::IntegerAttr cbsz, ::mlir::IntegerAttr abid, ::mlir::ROCDL::MFMAPermBAttr blgp); static mfma_i32_32x32x8i8 create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::Value a, ::mlir::Value b, ::mlir::Value c, ::mlir::IntegerAttr cbsz, ::mlir::IntegerAttr abid, ::mlir::ROCDL::MFMAPermBAttr blgp); static mfma_i32_32x32x8i8 create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::Value a, ::mlir::Value b, ::mlir::Value c, ::mlir::IntegerAttr cbsz, ::mlir::IntegerAttr abid, ::mlir::ROCDL::MFMAPermBAttr blgp); static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::Type res, ::mlir::Value a, ::mlir::Value b, ::mlir::Value c, uint32_t cbsz, uint32_t abid, ::mlir::ROCDL::MFMAPermB blgp); static mfma_i32_32x32x8i8 create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::Type res, ::mlir::Value a, ::mlir::Value b, ::mlir::Value c, uint32_t cbsz, uint32_t abid, ::mlir::ROCDL::MFMAPermB blgp); static mfma_i32_32x32x8i8 create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::Type res, ::mlir::Value a, ::mlir::Value b, ::mlir::Value c, uint32_t cbsz, uint32_t abid, ::mlir::ROCDL::MFMAPermB blgp); static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::Value a, ::mlir::Value b, ::mlir::Value c, uint32_t cbsz, uint32_t abid, ::mlir::ROCDL::MFMAPermB blgp); static mfma_i32_32x32x8i8 create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::Value a, ::mlir::Value b, ::mlir::Value c, uint32_t cbsz, uint32_t abid, ::mlir::ROCDL::MFMAPermB blgp); static mfma_i32_32x32x8i8 create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::Value a, ::mlir::Value b, ::mlir::Value c, uint32_t cbsz, uint32_t abid, ::mlir::ROCDL::MFMAPermB blgp); static void build(::mlir::OpBuilder &, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, ::llvm::ArrayRef<::mlir::NamedAttribute> attributes = {}); static mfma_i32_32x32x8i8 create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, ::llvm::ArrayRef<::mlir::NamedAttribute> attributes = {}); static mfma_i32_32x32x8i8 create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, ::llvm::ArrayRef<::mlir::NamedAttribute> attributes = {}); static void build(::mlir::OpBuilder &, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, const Properties &properties, ::llvm::ArrayRef<::mlir::NamedAttribute> discardableAttributes = {}); static mfma_i32_32x32x8i8 create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, const Properties &properties, ::llvm::ArrayRef<::mlir::NamedAttribute> discardableAttributes = {}); static mfma_i32_32x32x8i8 create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, const Properties &properties, ::llvm::ArrayRef<::mlir::NamedAttribute> discardableAttributes = {}); ::llvm::LogicalResult verifyInvariantsImpl(); ::llvm::LogicalResult verifyInvariants(); static ::mlir::ParseResult parse(::mlir::OpAsmParser &parser, ::mlir::OperationState &result); void print(::mlir::OpAsmPrinter &_odsPrinter); private: ::mlir::StringAttr getAttributeNameForIndex(unsigned index) { return getAttributeNameForIndex((*this)->getName(), index); } static ::mlir::StringAttr getAttributeNameForIndex(::mlir::OperationName name, unsigned index) { assert(index < 3 && "invalid attribute index"); assert(name.getStringRef() == getOperationName() && "invalid operation name"); assert(name.isRegistered() && "Operation isn't registered, missing a " "dependent dialect loading?"); return name.getAttributeNames()[index]; } public: }; } // namespace mlir::ROCDL MLIR_DECLARE_EXPLICIT_TYPE_ID(::mlir::ROCDL::mfma_i32_32x32x8i8) MLIR_DECLARE_EXPLICIT_TYPE_ID(::mlir::ROCDL::detail::mfma_i32_32x32x8i8GenericAdaptorBase::Properties) namespace mlir::ROCDL { //===----------------------------------------------------------------------===// // ::mlir::ROCDL::mfma_i32_4x4x4i8 declarations //===----------------------------------------------------------------------===// namespace detail { class mfma_i32_4x4x4i8GenericAdaptorBase { public: struct Properties { using abidTy = ::mlir::IntegerAttr; abidTy abid; auto getAbid() const { auto &propStorage = this->abid; return ::llvm::cast<::mlir::IntegerAttr>(propStorage); } void setAbid(const ::mlir::IntegerAttr &propValue) { this->abid = propValue; } using blgpTy = ::mlir::ROCDL::MFMAPermBAttr; blgpTy blgp; auto getBlgp() const { auto &propStorage = this->blgp; return ::llvm::cast<::mlir::ROCDL::MFMAPermBAttr>(propStorage); } void setBlgp(const ::mlir::ROCDL::MFMAPermBAttr &propValue) { this->blgp = propValue; } using cbszTy = ::mlir::IntegerAttr; cbszTy cbsz; auto getCbsz() const { auto &propStorage = this->cbsz; return ::llvm::cast<::mlir::IntegerAttr>(propStorage); } void setCbsz(const ::mlir::IntegerAttr &propValue) { this->cbsz = propValue; } bool operator==(const Properties &rhs) const { return rhs.abid == this->abid && rhs.blgp == this->blgp && rhs.cbsz == this->cbsz && true; } bool operator!=(const Properties &rhs) const { return !(*this == rhs); } }; protected: ::mlir::DictionaryAttr odsAttrs; ::std::optional<::mlir::OperationName> odsOpName; Properties properties; ::mlir::RegionRange odsRegions; public: mfma_i32_4x4x4i8GenericAdaptorBase(::mlir::DictionaryAttr attrs, const Properties &properties, ::mlir::RegionRange regions = {}) : odsAttrs(attrs), properties(properties), odsRegions(regions) { if (odsAttrs) odsOpName.emplace("rocdl.mfma.i32.4x4x4i8", odsAttrs.getContext()); } mfma_i32_4x4x4i8GenericAdaptorBase(mfma_i32_4x4x4i8 op); std::pair getODSOperandIndexAndLength(unsigned index, unsigned odsOperandsSize) { return {index, 1}; } const Properties &getProperties() { return properties; } ::mlir::DictionaryAttr getAttributes() { return odsAttrs; } ::mlir::IntegerAttr getCbszAttr() { auto attr = ::llvm::cast<::mlir::IntegerAttr>(getProperties().cbsz); return attr; } uint32_t getCbsz(); ::mlir::IntegerAttr getAbidAttr() { auto attr = ::llvm::cast<::mlir::IntegerAttr>(getProperties().abid); return attr; } uint32_t getAbid(); ::mlir::ROCDL::MFMAPermBAttr getBlgpAttr() { auto attr = ::llvm::cast<::mlir::ROCDL::MFMAPermBAttr>(getProperties().blgp); return attr; } ::mlir::ROCDL::MFMAPermB getBlgp(); }; } // namespace detail template class mfma_i32_4x4x4i8GenericAdaptor : public detail::mfma_i32_4x4x4i8GenericAdaptorBase { using ValueT = ::llvm::detail::ValueOfRange; using Base = detail::mfma_i32_4x4x4i8GenericAdaptorBase; static constexpr int odsIndex_a = 0; static constexpr int odsIndex_b = 1; static constexpr int odsIndex_c = 2; public: mfma_i32_4x4x4i8GenericAdaptor(RangeT values, ::mlir::DictionaryAttr attrs, const Properties &properties, ::mlir::RegionRange regions = {}) : Base(attrs, properties, regions), odsOperands(values) {} mfma_i32_4x4x4i8GenericAdaptor(RangeT values, ::mlir::DictionaryAttr attrs, ::mlir::PropertyRef properties, ::mlir::RegionRange regions = {}) : mfma_i32_4x4x4i8GenericAdaptor(values, attrs, (properties ? *properties.as() : Properties{}), regions) {} mfma_i32_4x4x4i8GenericAdaptor(RangeT values, ::mlir::DictionaryAttr attrs = nullptr) : mfma_i32_4x4x4i8GenericAdaptor(values, attrs, Properties{}, {}) {} mfma_i32_4x4x4i8GenericAdaptor(RangeT values, const mfma_i32_4x4x4i8GenericAdaptorBase &base) : Base(base), odsOperands(values) {} template >> mfma_i32_4x4x4i8GenericAdaptor(RangeT values, LateInst op) : Base(op), odsOperands(values) {} std::pair getODSOperandIndexAndLength(unsigned index) { return Base::getODSOperandIndexAndLength(index, odsOperands.size()); } RangeT getODSOperands(unsigned index) { auto valueRange = getODSOperandIndexAndLength(index); return {std::next(odsOperands.begin(), valueRange.first), std::next(odsOperands.begin(), valueRange.first + valueRange.second)}; } ValueT getA() { return (*getODSOperands(0).begin()); } ValueT getB() { return (*getODSOperands(1).begin()); } ValueT getC() { return (*getODSOperands(2).begin()); } RangeT getOperands() { return odsOperands; } private: RangeT odsOperands; }; class mfma_i32_4x4x4i8Adaptor : public mfma_i32_4x4x4i8GenericAdaptor<::mlir::ValueRange> { public: using mfma_i32_4x4x4i8GenericAdaptor::mfma_i32_4x4x4i8GenericAdaptor; mfma_i32_4x4x4i8Adaptor(mfma_i32_4x4x4i8 op); ::llvm::LogicalResult verify(::mlir::Location loc); }; class mfma_i32_4x4x4i8 : public ::mlir::Op::Impl, ::mlir::OpTrait::ZeroSuccessors, ::mlir::OpTrait::NOperands<3>::Impl, ::mlir::OpTrait::OpInvariants, ::mlir::BytecodeOpInterface::Trait> { public: using Op::Op; using Op::print; using Adaptor = mfma_i32_4x4x4i8Adaptor; template using GenericAdaptor = mfma_i32_4x4x4i8GenericAdaptor; using FoldAdaptor = GenericAdaptor<::llvm::ArrayRef<::mlir::Attribute>>; static constexpr int odsIndex_a = 0; static constexpr int odsIndex_b = 1; static constexpr int odsIndex_c = 2; using Properties = FoldAdaptor::Properties; static ::llvm::ArrayRef<::llvm::StringRef> getAttributeNames() { static ::llvm::StringRef attrNames[] = {::llvm::StringRef("abid"), ::llvm::StringRef("blgp"), ::llvm::StringRef("cbsz")}; return ::llvm::ArrayRef(attrNames); } ::mlir::StringAttr getAbidAttrName() { return getAttributeNameForIndex(0); } static ::mlir::StringAttr getAbidAttrName(::mlir::OperationName name) { return getAttributeNameForIndex(name, 0); } ::mlir::StringAttr getBlgpAttrName() { return getAttributeNameForIndex(1); } static ::mlir::StringAttr getBlgpAttrName(::mlir::OperationName name) { return getAttributeNameForIndex(name, 1); } ::mlir::StringAttr getCbszAttrName() { return getAttributeNameForIndex(2); } static ::mlir::StringAttr getCbszAttrName(::mlir::OperationName name) { return getAttributeNameForIndex(name, 2); } static constexpr ::llvm::StringLiteral getOperationName() { return ::llvm::StringLiteral("rocdl.mfma.i32.4x4x4i8"); } std::pair getODSOperandIndexAndLength(unsigned index) { return {index, 1}; } ::mlir::Operation::operand_range getODSOperands(unsigned index) { auto valueRange = getODSOperandIndexAndLength(index); return {std::next(getOperation()->operand_begin(), valueRange.first), std::next(getOperation()->operand_begin(), valueRange.first + valueRange.second)}; } ::mlir::TypedValue<::mlir::Type> getA() { return ::llvm::cast<::mlir::TypedValue<::mlir::Type>>(*getODSOperands(0).begin()); } ::mlir::TypedValue<::mlir::Type> getB() { return ::llvm::cast<::mlir::TypedValue<::mlir::Type>>(*getODSOperands(1).begin()); } ::mlir::TypedValue<::mlir::VectorType> getC() { return ::llvm::cast<::mlir::TypedValue<::mlir::VectorType>>(*getODSOperands(2).begin()); } ::mlir::OpOperand &getAMutable() { auto range = getODSOperandIndexAndLength(0); return getOperation()->getOpOperand(range.first); } ::mlir::OpOperand &getBMutable() { auto range = getODSOperandIndexAndLength(1); return getOperation()->getOpOperand(range.first); } ::mlir::OpOperand &getCMutable() { auto range = getODSOperandIndexAndLength(2); return getOperation()->getOpOperand(range.first); } std::pair getODSResultIndexAndLength(unsigned index) { return {index, 1}; } ::mlir::Operation::result_range getODSResults(unsigned index) { auto valueRange = getODSResultIndexAndLength(index); return {std::next(getOperation()->result_begin(), valueRange.first), std::next(getOperation()->result_begin(), valueRange.first + valueRange.second)}; } ::mlir::TypedValue<::mlir::VectorType> getRes() { return ::llvm::cast<::mlir::TypedValue<::mlir::VectorType>>(*getODSResults(0).begin()); } static ::llvm::LogicalResult setPropertiesFromAttr(Properties &prop, ::mlir::Attribute attr, ::llvm::function_ref<::mlir::InFlightDiagnostic()> emitError); static ::mlir::Attribute getPropertiesAsAttr(::mlir::MLIRContext *ctx, const Properties &prop); static llvm::hash_code computePropertiesHash(const Properties &prop); static std::optional getInherentAttr(::mlir::MLIRContext *ctx, const Properties &prop, llvm::StringRef name); static void setInherentAttr(Properties &prop, llvm::StringRef name, mlir::Attribute value); static void populateInherentAttrs(::mlir::MLIRContext *ctx, const Properties &prop, ::mlir::NamedAttrList &attrs); static ::llvm::LogicalResult verifyInherentAttrs(::mlir::OperationName opName, ::mlir::NamedAttrList &attrs, llvm::function_ref<::mlir::InFlightDiagnostic()> emitError); static ::llvm::LogicalResult readProperties(::mlir::DialectBytecodeReader &reader, ::mlir::OperationState &state); void writeProperties(::mlir::DialectBytecodeWriter &writer); ::mlir::IntegerAttr getCbszAttr() { return ::llvm::cast<::mlir::IntegerAttr>(getProperties().cbsz); } uint32_t getCbsz(); ::mlir::IntegerAttr getAbidAttr() { return ::llvm::cast<::mlir::IntegerAttr>(getProperties().abid); } uint32_t getAbid(); ::mlir::ROCDL::MFMAPermBAttr getBlgpAttr() { return ::llvm::cast<::mlir::ROCDL::MFMAPermBAttr>(getProperties().blgp); } ::mlir::ROCDL::MFMAPermB getBlgp(); void setCbszAttr(::mlir::IntegerAttr attr) { getProperties().cbsz = attr; } void setCbsz(uint32_t attrValue); void setAbidAttr(::mlir::IntegerAttr attr) { getProperties().abid = attr; } void setAbid(uint32_t attrValue); void setBlgpAttr(::mlir::ROCDL::MFMAPermBAttr attr) { getProperties().blgp = attr; } void setBlgp(::mlir::ROCDL::MFMAPermB attrValue); static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::Type res, ::mlir::Value a, ::mlir::Value b, ::mlir::Value c, ::mlir::IntegerAttr cbsz, ::mlir::IntegerAttr abid, ::mlir::ROCDL::MFMAPermBAttr blgp); static mfma_i32_4x4x4i8 create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::Type res, ::mlir::Value a, ::mlir::Value b, ::mlir::Value c, ::mlir::IntegerAttr cbsz, ::mlir::IntegerAttr abid, ::mlir::ROCDL::MFMAPermBAttr blgp); static mfma_i32_4x4x4i8 create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::Type res, ::mlir::Value a, ::mlir::Value b, ::mlir::Value c, ::mlir::IntegerAttr cbsz, ::mlir::IntegerAttr abid, ::mlir::ROCDL::MFMAPermBAttr blgp); static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::Value a, ::mlir::Value b, ::mlir::Value c, ::mlir::IntegerAttr cbsz, ::mlir::IntegerAttr abid, ::mlir::ROCDL::MFMAPermBAttr blgp); static mfma_i32_4x4x4i8 create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::Value a, ::mlir::Value b, ::mlir::Value c, ::mlir::IntegerAttr cbsz, ::mlir::IntegerAttr abid, ::mlir::ROCDL::MFMAPermBAttr blgp); static mfma_i32_4x4x4i8 create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::Value a, ::mlir::Value b, ::mlir::Value c, ::mlir::IntegerAttr cbsz, ::mlir::IntegerAttr abid, ::mlir::ROCDL::MFMAPermBAttr blgp); static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::Type res, ::mlir::Value a, ::mlir::Value b, ::mlir::Value c, uint32_t cbsz, uint32_t abid, ::mlir::ROCDL::MFMAPermB blgp); static mfma_i32_4x4x4i8 create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::Type res, ::mlir::Value a, ::mlir::Value b, ::mlir::Value c, uint32_t cbsz, uint32_t abid, ::mlir::ROCDL::MFMAPermB blgp); static mfma_i32_4x4x4i8 create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::Type res, ::mlir::Value a, ::mlir::Value b, ::mlir::Value c, uint32_t cbsz, uint32_t abid, ::mlir::ROCDL::MFMAPermB blgp); static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::Value a, ::mlir::Value b, ::mlir::Value c, uint32_t cbsz, uint32_t abid, ::mlir::ROCDL::MFMAPermB blgp); static mfma_i32_4x4x4i8 create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::Value a, ::mlir::Value b, ::mlir::Value c, uint32_t cbsz, uint32_t abid, ::mlir::ROCDL::MFMAPermB blgp); static mfma_i32_4x4x4i8 create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::Value a, ::mlir::Value b, ::mlir::Value c, uint32_t cbsz, uint32_t abid, ::mlir::ROCDL::MFMAPermB blgp); static void build(::mlir::OpBuilder &, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, ::llvm::ArrayRef<::mlir::NamedAttribute> attributes = {}); static mfma_i32_4x4x4i8 create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, ::llvm::ArrayRef<::mlir::NamedAttribute> attributes = {}); static mfma_i32_4x4x4i8 create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, ::llvm::ArrayRef<::mlir::NamedAttribute> attributes = {}); static void build(::mlir::OpBuilder &, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, const Properties &properties, ::llvm::ArrayRef<::mlir::NamedAttribute> discardableAttributes = {}); static mfma_i32_4x4x4i8 create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, const Properties &properties, ::llvm::ArrayRef<::mlir::NamedAttribute> discardableAttributes = {}); static mfma_i32_4x4x4i8 create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, const Properties &properties, ::llvm::ArrayRef<::mlir::NamedAttribute> discardableAttributes = {}); ::llvm::LogicalResult verifyInvariantsImpl(); ::llvm::LogicalResult verifyInvariants(); static ::mlir::ParseResult parse(::mlir::OpAsmParser &parser, ::mlir::OperationState &result); void print(::mlir::OpAsmPrinter &_odsPrinter); private: ::mlir::StringAttr getAttributeNameForIndex(unsigned index) { return getAttributeNameForIndex((*this)->getName(), index); } static ::mlir::StringAttr getAttributeNameForIndex(::mlir::OperationName name, unsigned index) { assert(index < 3 && "invalid attribute index"); assert(name.getStringRef() == getOperationName() && "invalid operation name"); assert(name.isRegistered() && "Operation isn't registered, missing a " "dependent dialect loading?"); return name.getAttributeNames()[index]; } public: }; } // namespace mlir::ROCDL MLIR_DECLARE_EXPLICIT_TYPE_ID(::mlir::ROCDL::mfma_i32_4x4x4i8) MLIR_DECLARE_EXPLICIT_TYPE_ID(::mlir::ROCDL::detail::mfma_i32_4x4x4i8GenericAdaptorBase::Properties) namespace mlir::ROCDL { //===----------------------------------------------------------------------===// // ::mlir::ROCDL::mfma_scale_f32_16x16x128_f8f6f4 declarations //===----------------------------------------------------------------------===// namespace detail { class mfma_scale_f32_16x16x128_f8f6f4GenericAdaptorBase { public: struct Properties { using blgpTy = ::mlir::ROCDL::MatrixFormatAttr; blgpTy blgp; auto getBlgp() const { auto &propStorage = this->blgp; return ::llvm::cast<::mlir::ROCDL::MatrixFormatAttr>(propStorage); } void setBlgp(const ::mlir::ROCDL::MatrixFormatAttr &propValue) { this->blgp = propValue; } using cbszTy = ::mlir::ROCDL::MatrixFormatAttr; cbszTy cbsz; auto getCbsz() const { auto &propStorage = this->cbsz; return ::llvm::cast<::mlir::ROCDL::MatrixFormatAttr>(propStorage); } void setCbsz(const ::mlir::ROCDL::MatrixFormatAttr &propValue) { this->cbsz = propValue; } using opselATy = ::mlir::IntegerAttr; opselATy opselA; auto getOpselA() const { auto &propStorage = this->opselA; return ::llvm::cast<::mlir::IntegerAttr>(propStorage); } void setOpselA(const ::mlir::IntegerAttr &propValue) { this->opselA = propValue; } using opselBTy = ::mlir::IntegerAttr; opselBTy opselB; auto getOpselB() const { auto &propStorage = this->opselB; return ::llvm::cast<::mlir::IntegerAttr>(propStorage); } void setOpselB(const ::mlir::IntegerAttr &propValue) { this->opselB = propValue; } bool operator==(const Properties &rhs) const { return rhs.blgp == this->blgp && rhs.cbsz == this->cbsz && rhs.opselA == this->opselA && rhs.opselB == this->opselB && true; } bool operator!=(const Properties &rhs) const { return !(*this == rhs); } }; protected: ::mlir::DictionaryAttr odsAttrs; ::std::optional<::mlir::OperationName> odsOpName; Properties properties; ::mlir::RegionRange odsRegions; public: mfma_scale_f32_16x16x128_f8f6f4GenericAdaptorBase(::mlir::DictionaryAttr attrs, const Properties &properties, ::mlir::RegionRange regions = {}) : odsAttrs(attrs), properties(properties), odsRegions(regions) { if (odsAttrs) odsOpName.emplace("rocdl.mfma.scale.f32.16x16x128.f8f6f4", odsAttrs.getContext()); } mfma_scale_f32_16x16x128_f8f6f4GenericAdaptorBase(mfma_scale_f32_16x16x128_f8f6f4 op); std::pair getODSOperandIndexAndLength(unsigned index, unsigned odsOperandsSize) { return {index, 1}; } const Properties &getProperties() { return properties; } ::mlir::DictionaryAttr getAttributes() { return odsAttrs; } ::mlir::ROCDL::MatrixFormatAttr getCbszAttr() { auto attr = ::llvm::cast<::mlir::ROCDL::MatrixFormatAttr>(getProperties().cbsz); return attr; } ::mlir::ROCDL::MatrixFormat getCbsz(); ::mlir::ROCDL::MatrixFormatAttr getBlgpAttr() { auto attr = ::llvm::cast<::mlir::ROCDL::MatrixFormatAttr>(getProperties().blgp); return attr; } ::mlir::ROCDL::MatrixFormat getBlgp(); ::mlir::IntegerAttr getOpselAAttr() { auto attr = ::llvm::cast<::mlir::IntegerAttr>(getProperties().opselA); return attr; } uint32_t getOpselA(); ::mlir::IntegerAttr getOpselBAttr() { auto attr = ::llvm::cast<::mlir::IntegerAttr>(getProperties().opselB); return attr; } uint32_t getOpselB(); }; } // namespace detail template class mfma_scale_f32_16x16x128_f8f6f4GenericAdaptor : public detail::mfma_scale_f32_16x16x128_f8f6f4GenericAdaptorBase { using ValueT = ::llvm::detail::ValueOfRange; using Base = detail::mfma_scale_f32_16x16x128_f8f6f4GenericAdaptorBase; static constexpr int odsIndex_a = 0; static constexpr int odsIndex_b = 1; static constexpr int odsIndex_c = 2; static constexpr int odsIndex_scaleA = 3; static constexpr int odsIndex_scaleB = 4; public: mfma_scale_f32_16x16x128_f8f6f4GenericAdaptor(RangeT values, ::mlir::DictionaryAttr attrs, const Properties &properties, ::mlir::RegionRange regions = {}) : Base(attrs, properties, regions), odsOperands(values) {} mfma_scale_f32_16x16x128_f8f6f4GenericAdaptor(RangeT values, ::mlir::DictionaryAttr attrs, ::mlir::PropertyRef properties, ::mlir::RegionRange regions = {}) : mfma_scale_f32_16x16x128_f8f6f4GenericAdaptor(values, attrs, (properties ? *properties.as() : Properties{}), regions) {} mfma_scale_f32_16x16x128_f8f6f4GenericAdaptor(RangeT values, ::mlir::DictionaryAttr attrs = nullptr) : mfma_scale_f32_16x16x128_f8f6f4GenericAdaptor(values, attrs, Properties{}, {}) {} mfma_scale_f32_16x16x128_f8f6f4GenericAdaptor(RangeT values, const mfma_scale_f32_16x16x128_f8f6f4GenericAdaptorBase &base) : Base(base), odsOperands(values) {} template >> mfma_scale_f32_16x16x128_f8f6f4GenericAdaptor(RangeT values, LateInst op) : Base(op), odsOperands(values) {} std::pair getODSOperandIndexAndLength(unsigned index) { return Base::getODSOperandIndexAndLength(index, odsOperands.size()); } RangeT getODSOperands(unsigned index) { auto valueRange = getODSOperandIndexAndLength(index); return {std::next(odsOperands.begin(), valueRange.first), std::next(odsOperands.begin(), valueRange.first + valueRange.second)}; } ValueT getA() { return (*getODSOperands(0).begin()); } ValueT getB() { return (*getODSOperands(1).begin()); } ValueT getC() { return (*getODSOperands(2).begin()); } ValueT getScaleA() { return (*getODSOperands(3).begin()); } ValueT getScaleB() { return (*getODSOperands(4).begin()); } RangeT getOperands() { return odsOperands; } private: RangeT odsOperands; }; class mfma_scale_f32_16x16x128_f8f6f4Adaptor : public mfma_scale_f32_16x16x128_f8f6f4GenericAdaptor<::mlir::ValueRange> { public: using mfma_scale_f32_16x16x128_f8f6f4GenericAdaptor::mfma_scale_f32_16x16x128_f8f6f4GenericAdaptor; mfma_scale_f32_16x16x128_f8f6f4Adaptor(mfma_scale_f32_16x16x128_f8f6f4 op); ::llvm::LogicalResult verify(::mlir::Location loc); }; class mfma_scale_f32_16x16x128_f8f6f4 : public ::mlir::Op::Impl, ::mlir::OpTrait::ZeroSuccessors, ::mlir::OpTrait::NOperands<5>::Impl, ::mlir::OpTrait::OpInvariants, ::mlir::BytecodeOpInterface::Trait> { public: using Op::Op; using Op::print; using Adaptor = mfma_scale_f32_16x16x128_f8f6f4Adaptor; template using GenericAdaptor = mfma_scale_f32_16x16x128_f8f6f4GenericAdaptor; using FoldAdaptor = GenericAdaptor<::llvm::ArrayRef<::mlir::Attribute>>; static constexpr int odsIndex_a = 0; static constexpr int odsIndex_b = 1; static constexpr int odsIndex_c = 2; static constexpr int odsIndex_scaleA = 3; static constexpr int odsIndex_scaleB = 4; using Properties = FoldAdaptor::Properties; static ::llvm::ArrayRef<::llvm::StringRef> getAttributeNames() { static ::llvm::StringRef attrNames[] = {::llvm::StringRef("blgp"), ::llvm::StringRef("cbsz"), ::llvm::StringRef("opselA"), ::llvm::StringRef("opselB")}; return ::llvm::ArrayRef(attrNames); } ::mlir::StringAttr getBlgpAttrName() { return getAttributeNameForIndex(0); } static ::mlir::StringAttr getBlgpAttrName(::mlir::OperationName name) { return getAttributeNameForIndex(name, 0); } ::mlir::StringAttr getCbszAttrName() { return getAttributeNameForIndex(1); } static ::mlir::StringAttr getCbszAttrName(::mlir::OperationName name) { return getAttributeNameForIndex(name, 1); } ::mlir::StringAttr getOpselAAttrName() { return getAttributeNameForIndex(2); } static ::mlir::StringAttr getOpselAAttrName(::mlir::OperationName name) { return getAttributeNameForIndex(name, 2); } ::mlir::StringAttr getOpselBAttrName() { return getAttributeNameForIndex(3); } static ::mlir::StringAttr getOpselBAttrName(::mlir::OperationName name) { return getAttributeNameForIndex(name, 3); } static constexpr ::llvm::StringLiteral getOperationName() { return ::llvm::StringLiteral("rocdl.mfma.scale.f32.16x16x128.f8f6f4"); } std::pair getODSOperandIndexAndLength(unsigned index) { return {index, 1}; } ::mlir::Operation::operand_range getODSOperands(unsigned index) { auto valueRange = getODSOperandIndexAndLength(index); return {std::next(getOperation()->operand_begin(), valueRange.first), std::next(getOperation()->operand_begin(), valueRange.first + valueRange.second)}; } ::mlir::TypedValue<::mlir::VectorType> getA() { return ::llvm::cast<::mlir::TypedValue<::mlir::VectorType>>(*getODSOperands(0).begin()); } ::mlir::TypedValue<::mlir::VectorType> getB() { return ::llvm::cast<::mlir::TypedValue<::mlir::VectorType>>(*getODSOperands(1).begin()); } ::mlir::TypedValue<::mlir::VectorType> getC() { return ::llvm::cast<::mlir::TypedValue<::mlir::VectorType>>(*getODSOperands(2).begin()); } ::mlir::TypedValue<::mlir::IntegerType> getScaleA() { return ::llvm::cast<::mlir::TypedValue<::mlir::IntegerType>>(*getODSOperands(3).begin()); } ::mlir::TypedValue<::mlir::IntegerType> getScaleB() { return ::llvm::cast<::mlir::TypedValue<::mlir::IntegerType>>(*getODSOperands(4).begin()); } ::mlir::OpOperand &getAMutable() { auto range = getODSOperandIndexAndLength(0); return getOperation()->getOpOperand(range.first); } ::mlir::OpOperand &getBMutable() { auto range = getODSOperandIndexAndLength(1); return getOperation()->getOpOperand(range.first); } ::mlir::OpOperand &getCMutable() { auto range = getODSOperandIndexAndLength(2); return getOperation()->getOpOperand(range.first); } ::mlir::OpOperand &getScaleAMutable() { auto range = getODSOperandIndexAndLength(3); return getOperation()->getOpOperand(range.first); } ::mlir::OpOperand &getScaleBMutable() { auto range = getODSOperandIndexAndLength(4); return getOperation()->getOpOperand(range.first); } std::pair getODSResultIndexAndLength(unsigned index) { return {index, 1}; } ::mlir::Operation::result_range getODSResults(unsigned index) { auto valueRange = getODSResultIndexAndLength(index); return {std::next(getOperation()->result_begin(), valueRange.first), std::next(getOperation()->result_begin(), valueRange.first + valueRange.second)}; } ::mlir::TypedValue<::mlir::Type> getRes() { return ::llvm::cast<::mlir::TypedValue<::mlir::Type>>(*getODSResults(0).begin()); } static ::llvm::LogicalResult setPropertiesFromAttr(Properties &prop, ::mlir::Attribute attr, ::llvm::function_ref<::mlir::InFlightDiagnostic()> emitError); static ::mlir::Attribute getPropertiesAsAttr(::mlir::MLIRContext *ctx, const Properties &prop); static llvm::hash_code computePropertiesHash(const Properties &prop); static std::optional getInherentAttr(::mlir::MLIRContext *ctx, const Properties &prop, llvm::StringRef name); static void setInherentAttr(Properties &prop, llvm::StringRef name, mlir::Attribute value); static void populateInherentAttrs(::mlir::MLIRContext *ctx, const Properties &prop, ::mlir::NamedAttrList &attrs); static ::llvm::LogicalResult verifyInherentAttrs(::mlir::OperationName opName, ::mlir::NamedAttrList &attrs, llvm::function_ref<::mlir::InFlightDiagnostic()> emitError); static ::llvm::LogicalResult readProperties(::mlir::DialectBytecodeReader &reader, ::mlir::OperationState &state); void writeProperties(::mlir::DialectBytecodeWriter &writer); ::mlir::ROCDL::MatrixFormatAttr getCbszAttr() { return ::llvm::cast<::mlir::ROCDL::MatrixFormatAttr>(getProperties().cbsz); } ::mlir::ROCDL::MatrixFormat getCbsz(); ::mlir::ROCDL::MatrixFormatAttr getBlgpAttr() { return ::llvm::cast<::mlir::ROCDL::MatrixFormatAttr>(getProperties().blgp); } ::mlir::ROCDL::MatrixFormat getBlgp(); ::mlir::IntegerAttr getOpselAAttr() { return ::llvm::cast<::mlir::IntegerAttr>(getProperties().opselA); } uint32_t getOpselA(); ::mlir::IntegerAttr getOpselBAttr() { return ::llvm::cast<::mlir::IntegerAttr>(getProperties().opselB); } uint32_t getOpselB(); void setCbszAttr(::mlir::ROCDL::MatrixFormatAttr attr) { getProperties().cbsz = attr; } void setCbsz(::mlir::ROCDL::MatrixFormat attrValue); void setBlgpAttr(::mlir::ROCDL::MatrixFormatAttr attr) { getProperties().blgp = attr; } void setBlgp(::mlir::ROCDL::MatrixFormat attrValue); void setOpselAAttr(::mlir::IntegerAttr attr) { getProperties().opselA = attr; } void setOpselA(uint32_t attrValue); void setOpselBAttr(::mlir::IntegerAttr attr) { getProperties().opselB = attr; } void setOpselB(uint32_t attrValue); static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::Type res, ::mlir::Value a, ::mlir::Value b, ::mlir::Value c, ::mlir::ROCDL::MatrixFormatAttr cbsz, ::mlir::ROCDL::MatrixFormatAttr blgp, ::mlir::IntegerAttr opselA, ::mlir::Value scaleA, ::mlir::IntegerAttr opselB, ::mlir::Value scaleB); static mfma_scale_f32_16x16x128_f8f6f4 create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::Type res, ::mlir::Value a, ::mlir::Value b, ::mlir::Value c, ::mlir::ROCDL::MatrixFormatAttr cbsz, ::mlir::ROCDL::MatrixFormatAttr blgp, ::mlir::IntegerAttr opselA, ::mlir::Value scaleA, ::mlir::IntegerAttr opselB, ::mlir::Value scaleB); static mfma_scale_f32_16x16x128_f8f6f4 create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::Type res, ::mlir::Value a, ::mlir::Value b, ::mlir::Value c, ::mlir::ROCDL::MatrixFormatAttr cbsz, ::mlir::ROCDL::MatrixFormatAttr blgp, ::mlir::IntegerAttr opselA, ::mlir::Value scaleA, ::mlir::IntegerAttr opselB, ::mlir::Value scaleB); static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::Value a, ::mlir::Value b, ::mlir::Value c, ::mlir::ROCDL::MatrixFormatAttr cbsz, ::mlir::ROCDL::MatrixFormatAttr blgp, ::mlir::IntegerAttr opselA, ::mlir::Value scaleA, ::mlir::IntegerAttr opselB, ::mlir::Value scaleB); static mfma_scale_f32_16x16x128_f8f6f4 create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::Value a, ::mlir::Value b, ::mlir::Value c, ::mlir::ROCDL::MatrixFormatAttr cbsz, ::mlir::ROCDL::MatrixFormatAttr blgp, ::mlir::IntegerAttr opselA, ::mlir::Value scaleA, ::mlir::IntegerAttr opselB, ::mlir::Value scaleB); static mfma_scale_f32_16x16x128_f8f6f4 create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::Value a, ::mlir::Value b, ::mlir::Value c, ::mlir::ROCDL::MatrixFormatAttr cbsz, ::mlir::ROCDL::MatrixFormatAttr blgp, ::mlir::IntegerAttr opselA, ::mlir::Value scaleA, ::mlir::IntegerAttr opselB, ::mlir::Value scaleB); static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::Type res, ::mlir::Value a, ::mlir::Value b, ::mlir::Value c, ::mlir::ROCDL::MatrixFormat cbsz, ::mlir::ROCDL::MatrixFormat blgp, uint32_t opselA, ::mlir::Value scaleA, uint32_t opselB, ::mlir::Value scaleB); static mfma_scale_f32_16x16x128_f8f6f4 create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::Type res, ::mlir::Value a, ::mlir::Value b, ::mlir::Value c, ::mlir::ROCDL::MatrixFormat cbsz, ::mlir::ROCDL::MatrixFormat blgp, uint32_t opselA, ::mlir::Value scaleA, uint32_t opselB, ::mlir::Value scaleB); static mfma_scale_f32_16x16x128_f8f6f4 create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::Type res, ::mlir::Value a, ::mlir::Value b, ::mlir::Value c, ::mlir::ROCDL::MatrixFormat cbsz, ::mlir::ROCDL::MatrixFormat blgp, uint32_t opselA, ::mlir::Value scaleA, uint32_t opselB, ::mlir::Value scaleB); static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::Value a, ::mlir::Value b, ::mlir::Value c, ::mlir::ROCDL::MatrixFormat cbsz, ::mlir::ROCDL::MatrixFormat blgp, uint32_t opselA, ::mlir::Value scaleA, uint32_t opselB, ::mlir::Value scaleB); static mfma_scale_f32_16x16x128_f8f6f4 create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::Value a, ::mlir::Value b, ::mlir::Value c, ::mlir::ROCDL::MatrixFormat cbsz, ::mlir::ROCDL::MatrixFormat blgp, uint32_t opselA, ::mlir::Value scaleA, uint32_t opselB, ::mlir::Value scaleB); static mfma_scale_f32_16x16x128_f8f6f4 create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::Value a, ::mlir::Value b, ::mlir::Value c, ::mlir::ROCDL::MatrixFormat cbsz, ::mlir::ROCDL::MatrixFormat blgp, uint32_t opselA, ::mlir::Value scaleA, uint32_t opselB, ::mlir::Value scaleB); static void build(::mlir::OpBuilder &, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, ::llvm::ArrayRef<::mlir::NamedAttribute> attributes = {}); static mfma_scale_f32_16x16x128_f8f6f4 create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, ::llvm::ArrayRef<::mlir::NamedAttribute> attributes = {}); static mfma_scale_f32_16x16x128_f8f6f4 create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, ::llvm::ArrayRef<::mlir::NamedAttribute> attributes = {}); static void build(::mlir::OpBuilder &, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, const Properties &properties, ::llvm::ArrayRef<::mlir::NamedAttribute> discardableAttributes = {}); static mfma_scale_f32_16x16x128_f8f6f4 create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, const Properties &properties, ::llvm::ArrayRef<::mlir::NamedAttribute> discardableAttributes = {}); static mfma_scale_f32_16x16x128_f8f6f4 create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, const Properties &properties, ::llvm::ArrayRef<::mlir::NamedAttribute> discardableAttributes = {}); ::llvm::LogicalResult verifyInvariantsImpl(); ::llvm::LogicalResult verifyInvariants(); static ::mlir::ParseResult parse(::mlir::OpAsmParser &parser, ::mlir::OperationState &result); void print(::mlir::OpAsmPrinter &_odsPrinter); private: ::mlir::StringAttr getAttributeNameForIndex(unsigned index) { return getAttributeNameForIndex((*this)->getName(), index); } static ::mlir::StringAttr getAttributeNameForIndex(::mlir::OperationName name, unsigned index) { assert(index < 4 && "invalid attribute index"); assert(name.getStringRef() == getOperationName() && "invalid operation name"); assert(name.isRegistered() && "Operation isn't registered, missing a " "dependent dialect loading?"); return name.getAttributeNames()[index]; } public: }; } // namespace mlir::ROCDL MLIR_DECLARE_EXPLICIT_TYPE_ID(::mlir::ROCDL::mfma_scale_f32_16x16x128_f8f6f4) MLIR_DECLARE_EXPLICIT_TYPE_ID(::mlir::ROCDL::detail::mfma_scale_f32_16x16x128_f8f6f4GenericAdaptorBase::Properties) namespace mlir::ROCDL { //===----------------------------------------------------------------------===// // ::mlir::ROCDL::mfma_scale_f32_32x32x64_f8f6f4 declarations //===----------------------------------------------------------------------===// namespace detail { class mfma_scale_f32_32x32x64_f8f6f4GenericAdaptorBase { public: struct Properties { using blgpTy = ::mlir::ROCDL::MatrixFormatAttr; blgpTy blgp; auto getBlgp() const { auto &propStorage = this->blgp; return ::llvm::cast<::mlir::ROCDL::MatrixFormatAttr>(propStorage); } void setBlgp(const ::mlir::ROCDL::MatrixFormatAttr &propValue) { this->blgp = propValue; } using cbszTy = ::mlir::ROCDL::MatrixFormatAttr; cbszTy cbsz; auto getCbsz() const { auto &propStorage = this->cbsz; return ::llvm::cast<::mlir::ROCDL::MatrixFormatAttr>(propStorage); } void setCbsz(const ::mlir::ROCDL::MatrixFormatAttr &propValue) { this->cbsz = propValue; } using opselATy = ::mlir::IntegerAttr; opselATy opselA; auto getOpselA() const { auto &propStorage = this->opselA; return ::llvm::cast<::mlir::IntegerAttr>(propStorage); } void setOpselA(const ::mlir::IntegerAttr &propValue) { this->opselA = propValue; } using opselBTy = ::mlir::IntegerAttr; opselBTy opselB; auto getOpselB() const { auto &propStorage = this->opselB; return ::llvm::cast<::mlir::IntegerAttr>(propStorage); } void setOpselB(const ::mlir::IntegerAttr &propValue) { this->opselB = propValue; } bool operator==(const Properties &rhs) const { return rhs.blgp == this->blgp && rhs.cbsz == this->cbsz && rhs.opselA == this->opselA && rhs.opselB == this->opselB && true; } bool operator!=(const Properties &rhs) const { return !(*this == rhs); } }; protected: ::mlir::DictionaryAttr odsAttrs; ::std::optional<::mlir::OperationName> odsOpName; Properties properties; ::mlir::RegionRange odsRegions; public: mfma_scale_f32_32x32x64_f8f6f4GenericAdaptorBase(::mlir::DictionaryAttr attrs, const Properties &properties, ::mlir::RegionRange regions = {}) : odsAttrs(attrs), properties(properties), odsRegions(regions) { if (odsAttrs) odsOpName.emplace("rocdl.mfma.scale.f32.32x32x64.f8f6f4", odsAttrs.getContext()); } mfma_scale_f32_32x32x64_f8f6f4GenericAdaptorBase(mfma_scale_f32_32x32x64_f8f6f4 op); std::pair getODSOperandIndexAndLength(unsigned index, unsigned odsOperandsSize) { return {index, 1}; } const Properties &getProperties() { return properties; } ::mlir::DictionaryAttr getAttributes() { return odsAttrs; } ::mlir::ROCDL::MatrixFormatAttr getCbszAttr() { auto attr = ::llvm::cast<::mlir::ROCDL::MatrixFormatAttr>(getProperties().cbsz); return attr; } ::mlir::ROCDL::MatrixFormat getCbsz(); ::mlir::ROCDL::MatrixFormatAttr getBlgpAttr() { auto attr = ::llvm::cast<::mlir::ROCDL::MatrixFormatAttr>(getProperties().blgp); return attr; } ::mlir::ROCDL::MatrixFormat getBlgp(); ::mlir::IntegerAttr getOpselAAttr() { auto attr = ::llvm::cast<::mlir::IntegerAttr>(getProperties().opselA); return attr; } uint32_t getOpselA(); ::mlir::IntegerAttr getOpselBAttr() { auto attr = ::llvm::cast<::mlir::IntegerAttr>(getProperties().opselB); return attr; } uint32_t getOpselB(); }; } // namespace detail template class mfma_scale_f32_32x32x64_f8f6f4GenericAdaptor : public detail::mfma_scale_f32_32x32x64_f8f6f4GenericAdaptorBase { using ValueT = ::llvm::detail::ValueOfRange; using Base = detail::mfma_scale_f32_32x32x64_f8f6f4GenericAdaptorBase; static constexpr int odsIndex_a = 0; static constexpr int odsIndex_b = 1; static constexpr int odsIndex_c = 2; static constexpr int odsIndex_scaleA = 3; static constexpr int odsIndex_scaleB = 4; public: mfma_scale_f32_32x32x64_f8f6f4GenericAdaptor(RangeT values, ::mlir::DictionaryAttr attrs, const Properties &properties, ::mlir::RegionRange regions = {}) : Base(attrs, properties, regions), odsOperands(values) {} mfma_scale_f32_32x32x64_f8f6f4GenericAdaptor(RangeT values, ::mlir::DictionaryAttr attrs, ::mlir::PropertyRef properties, ::mlir::RegionRange regions = {}) : mfma_scale_f32_32x32x64_f8f6f4GenericAdaptor(values, attrs, (properties ? *properties.as() : Properties{}), regions) {} mfma_scale_f32_32x32x64_f8f6f4GenericAdaptor(RangeT values, ::mlir::DictionaryAttr attrs = nullptr) : mfma_scale_f32_32x32x64_f8f6f4GenericAdaptor(values, attrs, Properties{}, {}) {} mfma_scale_f32_32x32x64_f8f6f4GenericAdaptor(RangeT values, const mfma_scale_f32_32x32x64_f8f6f4GenericAdaptorBase &base) : Base(base), odsOperands(values) {} template >> mfma_scale_f32_32x32x64_f8f6f4GenericAdaptor(RangeT values, LateInst op) : Base(op), odsOperands(values) {} std::pair getODSOperandIndexAndLength(unsigned index) { return Base::getODSOperandIndexAndLength(index, odsOperands.size()); } RangeT getODSOperands(unsigned index) { auto valueRange = getODSOperandIndexAndLength(index); return {std::next(odsOperands.begin(), valueRange.first), std::next(odsOperands.begin(), valueRange.first + valueRange.second)}; } ValueT getA() { return (*getODSOperands(0).begin()); } ValueT getB() { return (*getODSOperands(1).begin()); } ValueT getC() { return (*getODSOperands(2).begin()); } ValueT getScaleA() { return (*getODSOperands(3).begin()); } ValueT getScaleB() { return (*getODSOperands(4).begin()); } RangeT getOperands() { return odsOperands; } private: RangeT odsOperands; }; class mfma_scale_f32_32x32x64_f8f6f4Adaptor : public mfma_scale_f32_32x32x64_f8f6f4GenericAdaptor<::mlir::ValueRange> { public: using mfma_scale_f32_32x32x64_f8f6f4GenericAdaptor::mfma_scale_f32_32x32x64_f8f6f4GenericAdaptor; mfma_scale_f32_32x32x64_f8f6f4Adaptor(mfma_scale_f32_32x32x64_f8f6f4 op); ::llvm::LogicalResult verify(::mlir::Location loc); }; class mfma_scale_f32_32x32x64_f8f6f4 : public ::mlir::Op::Impl, ::mlir::OpTrait::ZeroSuccessors, ::mlir::OpTrait::NOperands<5>::Impl, ::mlir::OpTrait::OpInvariants, ::mlir::BytecodeOpInterface::Trait> { public: using Op::Op; using Op::print; using Adaptor = mfma_scale_f32_32x32x64_f8f6f4Adaptor; template using GenericAdaptor = mfma_scale_f32_32x32x64_f8f6f4GenericAdaptor; using FoldAdaptor = GenericAdaptor<::llvm::ArrayRef<::mlir::Attribute>>; static constexpr int odsIndex_a = 0; static constexpr int odsIndex_b = 1; static constexpr int odsIndex_c = 2; static constexpr int odsIndex_scaleA = 3; static constexpr int odsIndex_scaleB = 4; using Properties = FoldAdaptor::Properties; static ::llvm::ArrayRef<::llvm::StringRef> getAttributeNames() { static ::llvm::StringRef attrNames[] = {::llvm::StringRef("blgp"), ::llvm::StringRef("cbsz"), ::llvm::StringRef("opselA"), ::llvm::StringRef("opselB")}; return ::llvm::ArrayRef(attrNames); } ::mlir::StringAttr getBlgpAttrName() { return getAttributeNameForIndex(0); } static ::mlir::StringAttr getBlgpAttrName(::mlir::OperationName name) { return getAttributeNameForIndex(name, 0); } ::mlir::StringAttr getCbszAttrName() { return getAttributeNameForIndex(1); } static ::mlir::StringAttr getCbszAttrName(::mlir::OperationName name) { return getAttributeNameForIndex(name, 1); } ::mlir::StringAttr getOpselAAttrName() { return getAttributeNameForIndex(2); } static ::mlir::StringAttr getOpselAAttrName(::mlir::OperationName name) { return getAttributeNameForIndex(name, 2); } ::mlir::StringAttr getOpselBAttrName() { return getAttributeNameForIndex(3); } static ::mlir::StringAttr getOpselBAttrName(::mlir::OperationName name) { return getAttributeNameForIndex(name, 3); } static constexpr ::llvm::StringLiteral getOperationName() { return ::llvm::StringLiteral("rocdl.mfma.scale.f32.32x32x64.f8f6f4"); } std::pair getODSOperandIndexAndLength(unsigned index) { return {index, 1}; } ::mlir::Operation::operand_range getODSOperands(unsigned index) { auto valueRange = getODSOperandIndexAndLength(index); return {std::next(getOperation()->operand_begin(), valueRange.first), std::next(getOperation()->operand_begin(), valueRange.first + valueRange.second)}; } ::mlir::TypedValue<::mlir::VectorType> getA() { return ::llvm::cast<::mlir::TypedValue<::mlir::VectorType>>(*getODSOperands(0).begin()); } ::mlir::TypedValue<::mlir::VectorType> getB() { return ::llvm::cast<::mlir::TypedValue<::mlir::VectorType>>(*getODSOperands(1).begin()); } ::mlir::TypedValue<::mlir::VectorType> getC() { return ::llvm::cast<::mlir::TypedValue<::mlir::VectorType>>(*getODSOperands(2).begin()); } ::mlir::TypedValue<::mlir::IntegerType> getScaleA() { return ::llvm::cast<::mlir::TypedValue<::mlir::IntegerType>>(*getODSOperands(3).begin()); } ::mlir::TypedValue<::mlir::IntegerType> getScaleB() { return ::llvm::cast<::mlir::TypedValue<::mlir::IntegerType>>(*getODSOperands(4).begin()); } ::mlir::OpOperand &getAMutable() { auto range = getODSOperandIndexAndLength(0); return getOperation()->getOpOperand(range.first); } ::mlir::OpOperand &getBMutable() { auto range = getODSOperandIndexAndLength(1); return getOperation()->getOpOperand(range.first); } ::mlir::OpOperand &getCMutable() { auto range = getODSOperandIndexAndLength(2); return getOperation()->getOpOperand(range.first); } ::mlir::OpOperand &getScaleAMutable() { auto range = getODSOperandIndexAndLength(3); return getOperation()->getOpOperand(range.first); } ::mlir::OpOperand &getScaleBMutable() { auto range = getODSOperandIndexAndLength(4); return getOperation()->getOpOperand(range.first); } std::pair getODSResultIndexAndLength(unsigned index) { return {index, 1}; } ::mlir::Operation::result_range getODSResults(unsigned index) { auto valueRange = getODSResultIndexAndLength(index); return {std::next(getOperation()->result_begin(), valueRange.first), std::next(getOperation()->result_begin(), valueRange.first + valueRange.second)}; } ::mlir::TypedValue<::mlir::Type> getRes() { return ::llvm::cast<::mlir::TypedValue<::mlir::Type>>(*getODSResults(0).begin()); } static ::llvm::LogicalResult setPropertiesFromAttr(Properties &prop, ::mlir::Attribute attr, ::llvm::function_ref<::mlir::InFlightDiagnostic()> emitError); static ::mlir::Attribute getPropertiesAsAttr(::mlir::MLIRContext *ctx, const Properties &prop); static llvm::hash_code computePropertiesHash(const Properties &prop); static std::optional getInherentAttr(::mlir::MLIRContext *ctx, const Properties &prop, llvm::StringRef name); static void setInherentAttr(Properties &prop, llvm::StringRef name, mlir::Attribute value); static void populateInherentAttrs(::mlir::MLIRContext *ctx, const Properties &prop, ::mlir::NamedAttrList &attrs); static ::llvm::LogicalResult verifyInherentAttrs(::mlir::OperationName opName, ::mlir::NamedAttrList &attrs, llvm::function_ref<::mlir::InFlightDiagnostic()> emitError); static ::llvm::LogicalResult readProperties(::mlir::DialectBytecodeReader &reader, ::mlir::OperationState &state); void writeProperties(::mlir::DialectBytecodeWriter &writer); ::mlir::ROCDL::MatrixFormatAttr getCbszAttr() { return ::llvm::cast<::mlir::ROCDL::MatrixFormatAttr>(getProperties().cbsz); } ::mlir::ROCDL::MatrixFormat getCbsz(); ::mlir::ROCDL::MatrixFormatAttr getBlgpAttr() { return ::llvm::cast<::mlir::ROCDL::MatrixFormatAttr>(getProperties().blgp); } ::mlir::ROCDL::MatrixFormat getBlgp(); ::mlir::IntegerAttr getOpselAAttr() { return ::llvm::cast<::mlir::IntegerAttr>(getProperties().opselA); } uint32_t getOpselA(); ::mlir::IntegerAttr getOpselBAttr() { return ::llvm::cast<::mlir::IntegerAttr>(getProperties().opselB); } uint32_t getOpselB(); void setCbszAttr(::mlir::ROCDL::MatrixFormatAttr attr) { getProperties().cbsz = attr; } void setCbsz(::mlir::ROCDL::MatrixFormat attrValue); void setBlgpAttr(::mlir::ROCDL::MatrixFormatAttr attr) { getProperties().blgp = attr; } void setBlgp(::mlir::ROCDL::MatrixFormat attrValue); void setOpselAAttr(::mlir::IntegerAttr attr) { getProperties().opselA = attr; } void setOpselA(uint32_t attrValue); void setOpselBAttr(::mlir::IntegerAttr attr) { getProperties().opselB = attr; } void setOpselB(uint32_t attrValue); static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::Type res, ::mlir::Value a, ::mlir::Value b, ::mlir::Value c, ::mlir::ROCDL::MatrixFormatAttr cbsz, ::mlir::ROCDL::MatrixFormatAttr blgp, ::mlir::IntegerAttr opselA, ::mlir::Value scaleA, ::mlir::IntegerAttr opselB, ::mlir::Value scaleB); static mfma_scale_f32_32x32x64_f8f6f4 create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::Type res, ::mlir::Value a, ::mlir::Value b, ::mlir::Value c, ::mlir::ROCDL::MatrixFormatAttr cbsz, ::mlir::ROCDL::MatrixFormatAttr blgp, ::mlir::IntegerAttr opselA, ::mlir::Value scaleA, ::mlir::IntegerAttr opselB, ::mlir::Value scaleB); static mfma_scale_f32_32x32x64_f8f6f4 create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::Type res, ::mlir::Value a, ::mlir::Value b, ::mlir::Value c, ::mlir::ROCDL::MatrixFormatAttr cbsz, ::mlir::ROCDL::MatrixFormatAttr blgp, ::mlir::IntegerAttr opselA, ::mlir::Value scaleA, ::mlir::IntegerAttr opselB, ::mlir::Value scaleB); static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::Value a, ::mlir::Value b, ::mlir::Value c, ::mlir::ROCDL::MatrixFormatAttr cbsz, ::mlir::ROCDL::MatrixFormatAttr blgp, ::mlir::IntegerAttr opselA, ::mlir::Value scaleA, ::mlir::IntegerAttr opselB, ::mlir::Value scaleB); static mfma_scale_f32_32x32x64_f8f6f4 create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::Value a, ::mlir::Value b, ::mlir::Value c, ::mlir::ROCDL::MatrixFormatAttr cbsz, ::mlir::ROCDL::MatrixFormatAttr blgp, ::mlir::IntegerAttr opselA, ::mlir::Value scaleA, ::mlir::IntegerAttr opselB, ::mlir::Value scaleB); static mfma_scale_f32_32x32x64_f8f6f4 create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::Value a, ::mlir::Value b, ::mlir::Value c, ::mlir::ROCDL::MatrixFormatAttr cbsz, ::mlir::ROCDL::MatrixFormatAttr blgp, ::mlir::IntegerAttr opselA, ::mlir::Value scaleA, ::mlir::IntegerAttr opselB, ::mlir::Value scaleB); static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::Type res, ::mlir::Value a, ::mlir::Value b, ::mlir::Value c, ::mlir::ROCDL::MatrixFormat cbsz, ::mlir::ROCDL::MatrixFormat blgp, uint32_t opselA, ::mlir::Value scaleA, uint32_t opselB, ::mlir::Value scaleB); static mfma_scale_f32_32x32x64_f8f6f4 create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::Type res, ::mlir::Value a, ::mlir::Value b, ::mlir::Value c, ::mlir::ROCDL::MatrixFormat cbsz, ::mlir::ROCDL::MatrixFormat blgp, uint32_t opselA, ::mlir::Value scaleA, uint32_t opselB, ::mlir::Value scaleB); static mfma_scale_f32_32x32x64_f8f6f4 create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::Type res, ::mlir::Value a, ::mlir::Value b, ::mlir::Value c, ::mlir::ROCDL::MatrixFormat cbsz, ::mlir::ROCDL::MatrixFormat blgp, uint32_t opselA, ::mlir::Value scaleA, uint32_t opselB, ::mlir::Value scaleB); static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::Value a, ::mlir::Value b, ::mlir::Value c, ::mlir::ROCDL::MatrixFormat cbsz, ::mlir::ROCDL::MatrixFormat blgp, uint32_t opselA, ::mlir::Value scaleA, uint32_t opselB, ::mlir::Value scaleB); static mfma_scale_f32_32x32x64_f8f6f4 create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::Value a, ::mlir::Value b, ::mlir::Value c, ::mlir::ROCDL::MatrixFormat cbsz, ::mlir::ROCDL::MatrixFormat blgp, uint32_t opselA, ::mlir::Value scaleA, uint32_t opselB, ::mlir::Value scaleB); static mfma_scale_f32_32x32x64_f8f6f4 create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::Value a, ::mlir::Value b, ::mlir::Value c, ::mlir::ROCDL::MatrixFormat cbsz, ::mlir::ROCDL::MatrixFormat blgp, uint32_t opselA, ::mlir::Value scaleA, uint32_t opselB, ::mlir::Value scaleB); static void build(::mlir::OpBuilder &, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, ::llvm::ArrayRef<::mlir::NamedAttribute> attributes = {}); static mfma_scale_f32_32x32x64_f8f6f4 create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, ::llvm::ArrayRef<::mlir::NamedAttribute> attributes = {}); static mfma_scale_f32_32x32x64_f8f6f4 create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, ::llvm::ArrayRef<::mlir::NamedAttribute> attributes = {}); static void build(::mlir::OpBuilder &, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, const Properties &properties, ::llvm::ArrayRef<::mlir::NamedAttribute> discardableAttributes = {}); static mfma_scale_f32_32x32x64_f8f6f4 create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, const Properties &properties, ::llvm::ArrayRef<::mlir::NamedAttribute> discardableAttributes = {}); static mfma_scale_f32_32x32x64_f8f6f4 create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, const Properties &properties, ::llvm::ArrayRef<::mlir::NamedAttribute> discardableAttributes = {}); ::llvm::LogicalResult verifyInvariantsImpl(); ::llvm::LogicalResult verifyInvariants(); static ::mlir::ParseResult parse(::mlir::OpAsmParser &parser, ::mlir::OperationState &result); void print(::mlir::OpAsmPrinter &_odsPrinter); private: ::mlir::StringAttr getAttributeNameForIndex(unsigned index) { return getAttributeNameForIndex((*this)->getName(), index); } static ::mlir::StringAttr getAttributeNameForIndex(::mlir::OperationName name, unsigned index) { assert(index < 4 && "invalid attribute index"); assert(name.getStringRef() == getOperationName() && "invalid operation name"); assert(name.isRegistered() && "Operation isn't registered, missing a " "dependent dialect loading?"); return name.getAttributeNames()[index]; } public: }; } // namespace mlir::ROCDL MLIR_DECLARE_EXPLICIT_TYPE_ID(::mlir::ROCDL::mfma_scale_f32_32x32x64_f8f6f4) MLIR_DECLARE_EXPLICIT_TYPE_ID(::mlir::ROCDL::detail::mfma_scale_f32_32x32x64_f8f6f4GenericAdaptorBase::Properties) namespace mlir::ROCDL { //===----------------------------------------------------------------------===// // ::mlir::ROCDL::sdot2 declarations //===----------------------------------------------------------------------===// namespace detail { class sdot2GenericAdaptorBase { public: struct Properties { using clampTy = ::mlir::IntegerAttr; clampTy clamp; auto getClamp() const { auto &propStorage = this->clamp; return ::llvm::dyn_cast_or_null<::mlir::IntegerAttr>(propStorage); } void setClamp(const ::mlir::IntegerAttr &propValue) { this->clamp = propValue; } bool operator==(const Properties &rhs) const { return rhs.clamp == this->clamp && true; } bool operator!=(const Properties &rhs) const { return !(*this == rhs); } }; protected: ::mlir::DictionaryAttr odsAttrs; ::std::optional<::mlir::OperationName> odsOpName; Properties properties; ::mlir::RegionRange odsRegions; public: sdot2GenericAdaptorBase(::mlir::DictionaryAttr attrs, const Properties &properties, ::mlir::RegionRange regions = {}) : odsAttrs(attrs), properties(properties), odsRegions(regions) { if (odsAttrs) odsOpName.emplace("rocdl.sdot2", odsAttrs.getContext()); } sdot2GenericAdaptorBase(sdot2 op); std::pair getODSOperandIndexAndLength(unsigned index, unsigned odsOperandsSize) { return {index, 1}; } const Properties &getProperties() { return properties; } ::mlir::DictionaryAttr getAttributes() { return odsAttrs; } ::mlir::IntegerAttr getClampAttr(); bool getClamp(); }; } // namespace detail template class sdot2GenericAdaptor : public detail::sdot2GenericAdaptorBase { using ValueT = ::llvm::detail::ValueOfRange; using Base = detail::sdot2GenericAdaptorBase; static constexpr int odsIndex_a = 0; static constexpr int odsIndex_b = 1; static constexpr int odsIndex_c = 2; public: sdot2GenericAdaptor(RangeT values, ::mlir::DictionaryAttr attrs, const Properties &properties, ::mlir::RegionRange regions = {}) : Base(attrs, properties, regions), odsOperands(values) {} sdot2GenericAdaptor(RangeT values, ::mlir::DictionaryAttr attrs, ::mlir::PropertyRef properties, ::mlir::RegionRange regions = {}) : sdot2GenericAdaptor(values, attrs, (properties ? *properties.as() : Properties{}), regions) {} sdot2GenericAdaptor(RangeT values, ::mlir::DictionaryAttr attrs = nullptr) : sdot2GenericAdaptor(values, attrs, Properties{}, {}) {} sdot2GenericAdaptor(RangeT values, const sdot2GenericAdaptorBase &base) : Base(base), odsOperands(values) {} template >> sdot2GenericAdaptor(RangeT values, LateInst op) : Base(op), odsOperands(values) {} std::pair getODSOperandIndexAndLength(unsigned index) { return Base::getODSOperandIndexAndLength(index, odsOperands.size()); } RangeT getODSOperands(unsigned index) { auto valueRange = getODSOperandIndexAndLength(index); return {std::next(odsOperands.begin(), valueRange.first), std::next(odsOperands.begin(), valueRange.first + valueRange.second)}; } ValueT getA() { return (*getODSOperands(0).begin()); } ValueT getB() { return (*getODSOperands(1).begin()); } ValueT getC() { return (*getODSOperands(2).begin()); } RangeT getOperands() { return odsOperands; } private: RangeT odsOperands; }; class sdot2Adaptor : public sdot2GenericAdaptor<::mlir::ValueRange> { public: using sdot2GenericAdaptor::sdot2GenericAdaptor; sdot2Adaptor(sdot2 op); ::llvm::LogicalResult verify(::mlir::Location loc); }; class sdot2 : public ::mlir::Op::Impl, ::mlir::OpTrait::ZeroSuccessors, ::mlir::OpTrait::NOperands<3>::Impl, ::mlir::OpTrait::OpInvariants, ::mlir::BytecodeOpInterface::Trait, ::mlir::ConditionallySpeculatable::Trait, ::mlir::OpTrait::AlwaysSpeculatableImplTrait, ::mlir::MemoryEffectOpInterface::Trait> { public: using Op::Op; using Op::print; using Adaptor = sdot2Adaptor; template using GenericAdaptor = sdot2GenericAdaptor; using FoldAdaptor = GenericAdaptor<::llvm::ArrayRef<::mlir::Attribute>>; static constexpr int odsIndex_a = 0; static constexpr int odsIndex_b = 1; static constexpr int odsIndex_c = 2; using Properties = FoldAdaptor::Properties; static ::llvm::ArrayRef<::llvm::StringRef> getAttributeNames() { static ::llvm::StringRef attrNames[] = {::llvm::StringRef("clamp")}; return ::llvm::ArrayRef(attrNames); } ::mlir::StringAttr getClampAttrName() { return getAttributeNameForIndex(0); } static ::mlir::StringAttr getClampAttrName(::mlir::OperationName name) { return getAttributeNameForIndex(name, 0); } static constexpr ::llvm::StringLiteral getOperationName() { return ::llvm::StringLiteral("rocdl.sdot2"); } std::pair getODSOperandIndexAndLength(unsigned index) { return {index, 1}; } ::mlir::Operation::operand_range getODSOperands(unsigned index) { auto valueRange = getODSOperandIndexAndLength(index); return {std::next(getOperation()->operand_begin(), valueRange.first), std::next(getOperation()->operand_begin(), valueRange.first + valueRange.second)}; } ::mlir::TypedValue<::mlir::VectorType> getA() { return ::llvm::cast<::mlir::TypedValue<::mlir::VectorType>>(*getODSOperands(0).begin()); } ::mlir::TypedValue<::mlir::VectorType> getB() { return ::llvm::cast<::mlir::TypedValue<::mlir::VectorType>>(*getODSOperands(1).begin()); } ::mlir::TypedValue<::mlir::Type> getC() { return ::llvm::cast<::mlir::TypedValue<::mlir::Type>>(*getODSOperands(2).begin()); } ::mlir::OpOperand &getAMutable() { auto range = getODSOperandIndexAndLength(0); return getOperation()->getOpOperand(range.first); } ::mlir::OpOperand &getBMutable() { auto range = getODSOperandIndexAndLength(1); return getOperation()->getOpOperand(range.first); } ::mlir::OpOperand &getCMutable() { auto range = getODSOperandIndexAndLength(2); return getOperation()->getOpOperand(range.first); } std::pair getODSResultIndexAndLength(unsigned index) { return {index, 1}; } ::mlir::Operation::result_range getODSResults(unsigned index) { auto valueRange = getODSResultIndexAndLength(index); return {std::next(getOperation()->result_begin(), valueRange.first), std::next(getOperation()->result_begin(), valueRange.first + valueRange.second)}; } ::mlir::TypedValue<::mlir::Type> getRes() { return ::llvm::cast<::mlir::TypedValue<::mlir::Type>>(*getODSResults(0).begin()); } static ::llvm::LogicalResult setPropertiesFromAttr(Properties &prop, ::mlir::Attribute attr, ::llvm::function_ref<::mlir::InFlightDiagnostic()> emitError); static ::mlir::Attribute getPropertiesAsAttr(::mlir::MLIRContext *ctx, const Properties &prop); static llvm::hash_code computePropertiesHash(const Properties &prop); static std::optional getInherentAttr(::mlir::MLIRContext *ctx, const Properties &prop, llvm::StringRef name); static void setInherentAttr(Properties &prop, llvm::StringRef name, mlir::Attribute value); static void populateInherentAttrs(::mlir::MLIRContext *ctx, const Properties &prop, ::mlir::NamedAttrList &attrs); static ::llvm::LogicalResult verifyInherentAttrs(::mlir::OperationName opName, ::mlir::NamedAttrList &attrs, llvm::function_ref<::mlir::InFlightDiagnostic()> emitError); static ::llvm::LogicalResult readProperties(::mlir::DialectBytecodeReader &reader, ::mlir::OperationState &state); void writeProperties(::mlir::DialectBytecodeWriter &writer); ::mlir::IntegerAttr getClampAttr() { return ::llvm::dyn_cast_or_null<::mlir::IntegerAttr>(getProperties().clamp); } bool getClamp(); void setClampAttr(::mlir::IntegerAttr attr) { getProperties().clamp = attr; } void setClamp(bool attrValue); static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::Type res, ::mlir::Value a, ::mlir::Value b, ::mlir::Value c, ::mlir::IntegerAttr clamp); static sdot2 create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::Type res, ::mlir::Value a, ::mlir::Value b, ::mlir::Value c, ::mlir::IntegerAttr clamp); static sdot2 create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::Type res, ::mlir::Value a, ::mlir::Value b, ::mlir::Value c, ::mlir::IntegerAttr clamp); static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::Value a, ::mlir::Value b, ::mlir::Value c, ::mlir::IntegerAttr clamp); static sdot2 create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::Value a, ::mlir::Value b, ::mlir::Value c, ::mlir::IntegerAttr clamp); static sdot2 create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::Value a, ::mlir::Value b, ::mlir::Value c, ::mlir::IntegerAttr clamp); static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::Type res, ::mlir::Value a, ::mlir::Value b, ::mlir::Value c, bool clamp = 0); static sdot2 create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::Type res, ::mlir::Value a, ::mlir::Value b, ::mlir::Value c, bool clamp = 0); static sdot2 create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::Type res, ::mlir::Value a, ::mlir::Value b, ::mlir::Value c, bool clamp = 0); static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::Value a, ::mlir::Value b, ::mlir::Value c, bool clamp = 0); static sdot2 create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::Value a, ::mlir::Value b, ::mlir::Value c, bool clamp = 0); static sdot2 create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::Value a, ::mlir::Value b, ::mlir::Value c, bool clamp = 0); static void build(::mlir::OpBuilder &, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, ::llvm::ArrayRef<::mlir::NamedAttribute> attributes = {}); static sdot2 create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, ::llvm::ArrayRef<::mlir::NamedAttribute> attributes = {}); static sdot2 create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, ::llvm::ArrayRef<::mlir::NamedAttribute> attributes = {}); static void build(::mlir::OpBuilder &, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, const Properties &properties, ::llvm::ArrayRef<::mlir::NamedAttribute> discardableAttributes = {}); static sdot2 create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, const Properties &properties, ::llvm::ArrayRef<::mlir::NamedAttribute> discardableAttributes = {}); static sdot2 create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, const Properties &properties, ::llvm::ArrayRef<::mlir::NamedAttribute> discardableAttributes = {}); static void populateDefaultProperties(::mlir::OperationName opName, Properties &properties); ::llvm::LogicalResult verifyInvariantsImpl(); ::llvm::LogicalResult verifyInvariants(); static ::mlir::ParseResult parse(::mlir::OpAsmParser &parser, ::mlir::OperationState &result); void print(::mlir::OpAsmPrinter &_odsPrinter); void getEffects(::llvm::SmallVectorImpl<::mlir::SideEffects::EffectInstance<::mlir::MemoryEffects::Effect>> &effects); private: ::mlir::StringAttr getAttributeNameForIndex(unsigned index) { return getAttributeNameForIndex((*this)->getName(), index); } static ::mlir::StringAttr getAttributeNameForIndex(::mlir::OperationName name, unsigned index) { assert(index < 1 && "invalid attribute index"); assert(name.getStringRef() == getOperationName() && "invalid operation name"); assert(name.isRegistered() && "Operation isn't registered, missing a " "dependent dialect loading?"); return name.getAttributeNames()[index]; } public: }; } // namespace mlir::ROCDL MLIR_DECLARE_EXPLICIT_TYPE_ID(::mlir::ROCDL::sdot2) MLIR_DECLARE_EXPLICIT_TYPE_ID(::mlir::ROCDL::detail::sdot2GenericAdaptorBase::Properties) namespace mlir::ROCDL { //===----------------------------------------------------------------------===// // ::mlir::ROCDL::sdot4 declarations //===----------------------------------------------------------------------===// namespace detail { class sdot4GenericAdaptorBase { public: struct Properties { using clampTy = ::mlir::IntegerAttr; clampTy clamp; auto getClamp() const { auto &propStorage = this->clamp; return ::llvm::dyn_cast_or_null<::mlir::IntegerAttr>(propStorage); } void setClamp(const ::mlir::IntegerAttr &propValue) { this->clamp = propValue; } bool operator==(const Properties &rhs) const { return rhs.clamp == this->clamp && true; } bool operator!=(const Properties &rhs) const { return !(*this == rhs); } }; protected: ::mlir::DictionaryAttr odsAttrs; ::std::optional<::mlir::OperationName> odsOpName; Properties properties; ::mlir::RegionRange odsRegions; public: sdot4GenericAdaptorBase(::mlir::DictionaryAttr attrs, const Properties &properties, ::mlir::RegionRange regions = {}) : odsAttrs(attrs), properties(properties), odsRegions(regions) { if (odsAttrs) odsOpName.emplace("rocdl.sdot4", odsAttrs.getContext()); } sdot4GenericAdaptorBase(sdot4 op); std::pair getODSOperandIndexAndLength(unsigned index, unsigned odsOperandsSize) { return {index, 1}; } const Properties &getProperties() { return properties; } ::mlir::DictionaryAttr getAttributes() { return odsAttrs; } ::mlir::IntegerAttr getClampAttr(); bool getClamp(); }; } // namespace detail template class sdot4GenericAdaptor : public detail::sdot4GenericAdaptorBase { using ValueT = ::llvm::detail::ValueOfRange; using Base = detail::sdot4GenericAdaptorBase; static constexpr int odsIndex_a = 0; static constexpr int odsIndex_b = 1; static constexpr int odsIndex_c = 2; public: sdot4GenericAdaptor(RangeT values, ::mlir::DictionaryAttr attrs, const Properties &properties, ::mlir::RegionRange regions = {}) : Base(attrs, properties, regions), odsOperands(values) {} sdot4GenericAdaptor(RangeT values, ::mlir::DictionaryAttr attrs, ::mlir::PropertyRef properties, ::mlir::RegionRange regions = {}) : sdot4GenericAdaptor(values, attrs, (properties ? *properties.as() : Properties{}), regions) {} sdot4GenericAdaptor(RangeT values, ::mlir::DictionaryAttr attrs = nullptr) : sdot4GenericAdaptor(values, attrs, Properties{}, {}) {} sdot4GenericAdaptor(RangeT values, const sdot4GenericAdaptorBase &base) : Base(base), odsOperands(values) {} template >> sdot4GenericAdaptor(RangeT values, LateInst op) : Base(op), odsOperands(values) {} std::pair getODSOperandIndexAndLength(unsigned index) { return Base::getODSOperandIndexAndLength(index, odsOperands.size()); } RangeT getODSOperands(unsigned index) { auto valueRange = getODSOperandIndexAndLength(index); return {std::next(odsOperands.begin(), valueRange.first), std::next(odsOperands.begin(), valueRange.first + valueRange.second)}; } ValueT getA() { return (*getODSOperands(0).begin()); } ValueT getB() { return (*getODSOperands(1).begin()); } ValueT getC() { return (*getODSOperands(2).begin()); } RangeT getOperands() { return odsOperands; } private: RangeT odsOperands; }; class sdot4Adaptor : public sdot4GenericAdaptor<::mlir::ValueRange> { public: using sdot4GenericAdaptor::sdot4GenericAdaptor; sdot4Adaptor(sdot4 op); ::llvm::LogicalResult verify(::mlir::Location loc); }; class sdot4 : public ::mlir::Op::Impl, ::mlir::OpTrait::ZeroSuccessors, ::mlir::OpTrait::NOperands<3>::Impl, ::mlir::OpTrait::OpInvariants, ::mlir::BytecodeOpInterface::Trait, ::mlir::ConditionallySpeculatable::Trait, ::mlir::OpTrait::AlwaysSpeculatableImplTrait, ::mlir::MemoryEffectOpInterface::Trait> { public: using Op::Op; using Op::print; using Adaptor = sdot4Adaptor; template using GenericAdaptor = sdot4GenericAdaptor; using FoldAdaptor = GenericAdaptor<::llvm::ArrayRef<::mlir::Attribute>>; static constexpr int odsIndex_a = 0; static constexpr int odsIndex_b = 1; static constexpr int odsIndex_c = 2; using Properties = FoldAdaptor::Properties; static ::llvm::ArrayRef<::llvm::StringRef> getAttributeNames() { static ::llvm::StringRef attrNames[] = {::llvm::StringRef("clamp")}; return ::llvm::ArrayRef(attrNames); } ::mlir::StringAttr getClampAttrName() { return getAttributeNameForIndex(0); } static ::mlir::StringAttr getClampAttrName(::mlir::OperationName name) { return getAttributeNameForIndex(name, 0); } static constexpr ::llvm::StringLiteral getOperationName() { return ::llvm::StringLiteral("rocdl.sdot4"); } std::pair getODSOperandIndexAndLength(unsigned index) { return {index, 1}; } ::mlir::Operation::operand_range getODSOperands(unsigned index) { auto valueRange = getODSOperandIndexAndLength(index); return {std::next(getOperation()->operand_begin(), valueRange.first), std::next(getOperation()->operand_begin(), valueRange.first + valueRange.second)}; } ::mlir::TypedValue<::mlir::Type> getA() { return ::llvm::cast<::mlir::TypedValue<::mlir::Type>>(*getODSOperands(0).begin()); } ::mlir::TypedValue<::mlir::Type> getB() { return ::llvm::cast<::mlir::TypedValue<::mlir::Type>>(*getODSOperands(1).begin()); } ::mlir::TypedValue<::mlir::Type> getC() { return ::llvm::cast<::mlir::TypedValue<::mlir::Type>>(*getODSOperands(2).begin()); } ::mlir::OpOperand &getAMutable() { auto range = getODSOperandIndexAndLength(0); return getOperation()->getOpOperand(range.first); } ::mlir::OpOperand &getBMutable() { auto range = getODSOperandIndexAndLength(1); return getOperation()->getOpOperand(range.first); } ::mlir::OpOperand &getCMutable() { auto range = getODSOperandIndexAndLength(2); return getOperation()->getOpOperand(range.first); } std::pair getODSResultIndexAndLength(unsigned index) { return {index, 1}; } ::mlir::Operation::result_range getODSResults(unsigned index) { auto valueRange = getODSResultIndexAndLength(index); return {std::next(getOperation()->result_begin(), valueRange.first), std::next(getOperation()->result_begin(), valueRange.first + valueRange.second)}; } ::mlir::TypedValue<::mlir::Type> getRes() { return ::llvm::cast<::mlir::TypedValue<::mlir::Type>>(*getODSResults(0).begin()); } static ::llvm::LogicalResult setPropertiesFromAttr(Properties &prop, ::mlir::Attribute attr, ::llvm::function_ref<::mlir::InFlightDiagnostic()> emitError); static ::mlir::Attribute getPropertiesAsAttr(::mlir::MLIRContext *ctx, const Properties &prop); static llvm::hash_code computePropertiesHash(const Properties &prop); static std::optional getInherentAttr(::mlir::MLIRContext *ctx, const Properties &prop, llvm::StringRef name); static void setInherentAttr(Properties &prop, llvm::StringRef name, mlir::Attribute value); static void populateInherentAttrs(::mlir::MLIRContext *ctx, const Properties &prop, ::mlir::NamedAttrList &attrs); static ::llvm::LogicalResult verifyInherentAttrs(::mlir::OperationName opName, ::mlir::NamedAttrList &attrs, llvm::function_ref<::mlir::InFlightDiagnostic()> emitError); static ::llvm::LogicalResult readProperties(::mlir::DialectBytecodeReader &reader, ::mlir::OperationState &state); void writeProperties(::mlir::DialectBytecodeWriter &writer); ::mlir::IntegerAttr getClampAttr() { return ::llvm::dyn_cast_or_null<::mlir::IntegerAttr>(getProperties().clamp); } bool getClamp(); void setClampAttr(::mlir::IntegerAttr attr) { getProperties().clamp = attr; } void setClamp(bool attrValue); static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::Type res, ::mlir::Value a, ::mlir::Value b, ::mlir::Value c, ::mlir::IntegerAttr clamp); static sdot4 create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::Type res, ::mlir::Value a, ::mlir::Value b, ::mlir::Value c, ::mlir::IntegerAttr clamp); static sdot4 create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::Type res, ::mlir::Value a, ::mlir::Value b, ::mlir::Value c, ::mlir::IntegerAttr clamp); static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::Value a, ::mlir::Value b, ::mlir::Value c, ::mlir::IntegerAttr clamp); static sdot4 create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::Value a, ::mlir::Value b, ::mlir::Value c, ::mlir::IntegerAttr clamp); static sdot4 create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::Value a, ::mlir::Value b, ::mlir::Value c, ::mlir::IntegerAttr clamp); static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::Type res, ::mlir::Value a, ::mlir::Value b, ::mlir::Value c, bool clamp = 0); static sdot4 create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::Type res, ::mlir::Value a, ::mlir::Value b, ::mlir::Value c, bool clamp = 0); static sdot4 create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::Type res, ::mlir::Value a, ::mlir::Value b, ::mlir::Value c, bool clamp = 0); static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::Value a, ::mlir::Value b, ::mlir::Value c, bool clamp = 0); static sdot4 create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::Value a, ::mlir::Value b, ::mlir::Value c, bool clamp = 0); static sdot4 create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::Value a, ::mlir::Value b, ::mlir::Value c, bool clamp = 0); static void build(::mlir::OpBuilder &, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, ::llvm::ArrayRef<::mlir::NamedAttribute> attributes = {}); static sdot4 create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, ::llvm::ArrayRef<::mlir::NamedAttribute> attributes = {}); static sdot4 create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, ::llvm::ArrayRef<::mlir::NamedAttribute> attributes = {}); static void build(::mlir::OpBuilder &, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, const Properties &properties, ::llvm::ArrayRef<::mlir::NamedAttribute> discardableAttributes = {}); static sdot4 create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, const Properties &properties, ::llvm::ArrayRef<::mlir::NamedAttribute> discardableAttributes = {}); static sdot4 create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, const Properties &properties, ::llvm::ArrayRef<::mlir::NamedAttribute> discardableAttributes = {}); static void populateDefaultProperties(::mlir::OperationName opName, Properties &properties); ::llvm::LogicalResult verifyInvariantsImpl(); ::llvm::LogicalResult verifyInvariants(); static ::mlir::ParseResult parse(::mlir::OpAsmParser &parser, ::mlir::OperationState &result); void print(::mlir::OpAsmPrinter &_odsPrinter); void getEffects(::llvm::SmallVectorImpl<::mlir::SideEffects::EffectInstance<::mlir::MemoryEffects::Effect>> &effects); private: ::mlir::StringAttr getAttributeNameForIndex(unsigned index) { return getAttributeNameForIndex((*this)->getName(), index); } static ::mlir::StringAttr getAttributeNameForIndex(::mlir::OperationName name, unsigned index) { assert(index < 1 && "invalid attribute index"); assert(name.getStringRef() == getOperationName() && "invalid operation name"); assert(name.isRegistered() && "Operation isn't registered, missing a " "dependent dialect loading?"); return name.getAttributeNames()[index]; } public: }; } // namespace mlir::ROCDL MLIR_DECLARE_EXPLICIT_TYPE_ID(::mlir::ROCDL::sdot4) MLIR_DECLARE_EXPLICIT_TYPE_ID(::mlir::ROCDL::detail::sdot4GenericAdaptorBase::Properties) namespace mlir::ROCDL { //===----------------------------------------------------------------------===// // ::mlir::ROCDL::sdot8 declarations //===----------------------------------------------------------------------===// namespace detail { class sdot8GenericAdaptorBase { public: struct Properties { using clampTy = ::mlir::IntegerAttr; clampTy clamp; auto getClamp() const { auto &propStorage = this->clamp; return ::llvm::dyn_cast_or_null<::mlir::IntegerAttr>(propStorage); } void setClamp(const ::mlir::IntegerAttr &propValue) { this->clamp = propValue; } bool operator==(const Properties &rhs) const { return rhs.clamp == this->clamp && true; } bool operator!=(const Properties &rhs) const { return !(*this == rhs); } }; protected: ::mlir::DictionaryAttr odsAttrs; ::std::optional<::mlir::OperationName> odsOpName; Properties properties; ::mlir::RegionRange odsRegions; public: sdot8GenericAdaptorBase(::mlir::DictionaryAttr attrs, const Properties &properties, ::mlir::RegionRange regions = {}) : odsAttrs(attrs), properties(properties), odsRegions(regions) { if (odsAttrs) odsOpName.emplace("rocdl.sdot8", odsAttrs.getContext()); } sdot8GenericAdaptorBase(sdot8 op); std::pair getODSOperandIndexAndLength(unsigned index, unsigned odsOperandsSize) { return {index, 1}; } const Properties &getProperties() { return properties; } ::mlir::DictionaryAttr getAttributes() { return odsAttrs; } ::mlir::IntegerAttr getClampAttr(); bool getClamp(); }; } // namespace detail template class sdot8GenericAdaptor : public detail::sdot8GenericAdaptorBase { using ValueT = ::llvm::detail::ValueOfRange; using Base = detail::sdot8GenericAdaptorBase; static constexpr int odsIndex_a = 0; static constexpr int odsIndex_b = 1; static constexpr int odsIndex_c = 2; public: sdot8GenericAdaptor(RangeT values, ::mlir::DictionaryAttr attrs, const Properties &properties, ::mlir::RegionRange regions = {}) : Base(attrs, properties, regions), odsOperands(values) {} sdot8GenericAdaptor(RangeT values, ::mlir::DictionaryAttr attrs, ::mlir::PropertyRef properties, ::mlir::RegionRange regions = {}) : sdot8GenericAdaptor(values, attrs, (properties ? *properties.as() : Properties{}), regions) {} sdot8GenericAdaptor(RangeT values, ::mlir::DictionaryAttr attrs = nullptr) : sdot8GenericAdaptor(values, attrs, Properties{}, {}) {} sdot8GenericAdaptor(RangeT values, const sdot8GenericAdaptorBase &base) : Base(base), odsOperands(values) {} template >> sdot8GenericAdaptor(RangeT values, LateInst op) : Base(op), odsOperands(values) {} std::pair getODSOperandIndexAndLength(unsigned index) { return Base::getODSOperandIndexAndLength(index, odsOperands.size()); } RangeT getODSOperands(unsigned index) { auto valueRange = getODSOperandIndexAndLength(index); return {std::next(odsOperands.begin(), valueRange.first), std::next(odsOperands.begin(), valueRange.first + valueRange.second)}; } ValueT getA() { return (*getODSOperands(0).begin()); } ValueT getB() { return (*getODSOperands(1).begin()); } ValueT getC() { return (*getODSOperands(2).begin()); } RangeT getOperands() { return odsOperands; } private: RangeT odsOperands; }; class sdot8Adaptor : public sdot8GenericAdaptor<::mlir::ValueRange> { public: using sdot8GenericAdaptor::sdot8GenericAdaptor; sdot8Adaptor(sdot8 op); ::llvm::LogicalResult verify(::mlir::Location loc); }; class sdot8 : public ::mlir::Op::Impl, ::mlir::OpTrait::ZeroSuccessors, ::mlir::OpTrait::NOperands<3>::Impl, ::mlir::OpTrait::OpInvariants, ::mlir::BytecodeOpInterface::Trait, ::mlir::ConditionallySpeculatable::Trait, ::mlir::OpTrait::AlwaysSpeculatableImplTrait, ::mlir::MemoryEffectOpInterface::Trait> { public: using Op::Op; using Op::print; using Adaptor = sdot8Adaptor; template using GenericAdaptor = sdot8GenericAdaptor; using FoldAdaptor = GenericAdaptor<::llvm::ArrayRef<::mlir::Attribute>>; static constexpr int odsIndex_a = 0; static constexpr int odsIndex_b = 1; static constexpr int odsIndex_c = 2; using Properties = FoldAdaptor::Properties; static ::llvm::ArrayRef<::llvm::StringRef> getAttributeNames() { static ::llvm::StringRef attrNames[] = {::llvm::StringRef("clamp")}; return ::llvm::ArrayRef(attrNames); } ::mlir::StringAttr getClampAttrName() { return getAttributeNameForIndex(0); } static ::mlir::StringAttr getClampAttrName(::mlir::OperationName name) { return getAttributeNameForIndex(name, 0); } static constexpr ::llvm::StringLiteral getOperationName() { return ::llvm::StringLiteral("rocdl.sdot8"); } std::pair getODSOperandIndexAndLength(unsigned index) { return {index, 1}; } ::mlir::Operation::operand_range getODSOperands(unsigned index) { auto valueRange = getODSOperandIndexAndLength(index); return {std::next(getOperation()->operand_begin(), valueRange.first), std::next(getOperation()->operand_begin(), valueRange.first + valueRange.second)}; } ::mlir::TypedValue<::mlir::Type> getA() { return ::llvm::cast<::mlir::TypedValue<::mlir::Type>>(*getODSOperands(0).begin()); } ::mlir::TypedValue<::mlir::Type> getB() { return ::llvm::cast<::mlir::TypedValue<::mlir::Type>>(*getODSOperands(1).begin()); } ::mlir::TypedValue<::mlir::Type> getC() { return ::llvm::cast<::mlir::TypedValue<::mlir::Type>>(*getODSOperands(2).begin()); } ::mlir::OpOperand &getAMutable() { auto range = getODSOperandIndexAndLength(0); return getOperation()->getOpOperand(range.first); } ::mlir::OpOperand &getBMutable() { auto range = getODSOperandIndexAndLength(1); return getOperation()->getOpOperand(range.first); } ::mlir::OpOperand &getCMutable() { auto range = getODSOperandIndexAndLength(2); return getOperation()->getOpOperand(range.first); } std::pair getODSResultIndexAndLength(unsigned index) { return {index, 1}; } ::mlir::Operation::result_range getODSResults(unsigned index) { auto valueRange = getODSResultIndexAndLength(index); return {std::next(getOperation()->result_begin(), valueRange.first), std::next(getOperation()->result_begin(), valueRange.first + valueRange.second)}; } ::mlir::TypedValue<::mlir::Type> getRes() { return ::llvm::cast<::mlir::TypedValue<::mlir::Type>>(*getODSResults(0).begin()); } static ::llvm::LogicalResult setPropertiesFromAttr(Properties &prop, ::mlir::Attribute attr, ::llvm::function_ref<::mlir::InFlightDiagnostic()> emitError); static ::mlir::Attribute getPropertiesAsAttr(::mlir::MLIRContext *ctx, const Properties &prop); static llvm::hash_code computePropertiesHash(const Properties &prop); static std::optional getInherentAttr(::mlir::MLIRContext *ctx, const Properties &prop, llvm::StringRef name); static void setInherentAttr(Properties &prop, llvm::StringRef name, mlir::Attribute value); static void populateInherentAttrs(::mlir::MLIRContext *ctx, const Properties &prop, ::mlir::NamedAttrList &attrs); static ::llvm::LogicalResult verifyInherentAttrs(::mlir::OperationName opName, ::mlir::NamedAttrList &attrs, llvm::function_ref<::mlir::InFlightDiagnostic()> emitError); static ::llvm::LogicalResult readProperties(::mlir::DialectBytecodeReader &reader, ::mlir::OperationState &state); void writeProperties(::mlir::DialectBytecodeWriter &writer); ::mlir::IntegerAttr getClampAttr() { return ::llvm::dyn_cast_or_null<::mlir::IntegerAttr>(getProperties().clamp); } bool getClamp(); void setClampAttr(::mlir::IntegerAttr attr) { getProperties().clamp = attr; } void setClamp(bool attrValue); static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::Type res, ::mlir::Value a, ::mlir::Value b, ::mlir::Value c, ::mlir::IntegerAttr clamp); static sdot8 create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::Type res, ::mlir::Value a, ::mlir::Value b, ::mlir::Value c, ::mlir::IntegerAttr clamp); static sdot8 create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::Type res, ::mlir::Value a, ::mlir::Value b, ::mlir::Value c, ::mlir::IntegerAttr clamp); static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::Value a, ::mlir::Value b, ::mlir::Value c, ::mlir::IntegerAttr clamp); static sdot8 create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::Value a, ::mlir::Value b, ::mlir::Value c, ::mlir::IntegerAttr clamp); static sdot8 create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::Value a, ::mlir::Value b, ::mlir::Value c, ::mlir::IntegerAttr clamp); static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::Type res, ::mlir::Value a, ::mlir::Value b, ::mlir::Value c, bool clamp = 0); static sdot8 create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::Type res, ::mlir::Value a, ::mlir::Value b, ::mlir::Value c, bool clamp = 0); static sdot8 create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::Type res, ::mlir::Value a, ::mlir::Value b, ::mlir::Value c, bool clamp = 0); static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::Value a, ::mlir::Value b, ::mlir::Value c, bool clamp = 0); static sdot8 create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::Value a, ::mlir::Value b, ::mlir::Value c, bool clamp = 0); static sdot8 create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::Value a, ::mlir::Value b, ::mlir::Value c, bool clamp = 0); static void build(::mlir::OpBuilder &, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, ::llvm::ArrayRef<::mlir::NamedAttribute> attributes = {}); static sdot8 create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, ::llvm::ArrayRef<::mlir::NamedAttribute> attributes = {}); static sdot8 create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, ::llvm::ArrayRef<::mlir::NamedAttribute> attributes = {}); static void build(::mlir::OpBuilder &, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, const Properties &properties, ::llvm::ArrayRef<::mlir::NamedAttribute> discardableAttributes = {}); static sdot8 create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, const Properties &properties, ::llvm::ArrayRef<::mlir::NamedAttribute> discardableAttributes = {}); static sdot8 create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, const Properties &properties, ::llvm::ArrayRef<::mlir::NamedAttribute> discardableAttributes = {}); static void populateDefaultProperties(::mlir::OperationName opName, Properties &properties); ::llvm::LogicalResult verifyInvariantsImpl(); ::llvm::LogicalResult verifyInvariants(); static ::mlir::ParseResult parse(::mlir::OpAsmParser &parser, ::mlir::OperationState &result); void print(::mlir::OpAsmPrinter &_odsPrinter); void getEffects(::llvm::SmallVectorImpl<::mlir::SideEffects::EffectInstance<::mlir::MemoryEffects::Effect>> &effects); private: ::mlir::StringAttr getAttributeNameForIndex(unsigned index) { return getAttributeNameForIndex((*this)->getName(), index); } static ::mlir::StringAttr getAttributeNameForIndex(::mlir::OperationName name, unsigned index) { assert(index < 1 && "invalid attribute index"); assert(name.getStringRef() == getOperationName() && "invalid operation name"); assert(name.isRegistered() && "Operation isn't registered, missing a " "dependent dialect loading?"); return name.getAttributeNames()[index]; } public: }; } // namespace mlir::ROCDL MLIR_DECLARE_EXPLICIT_TYPE_ID(::mlir::ROCDL::sdot8) MLIR_DECLARE_EXPLICIT_TYPE_ID(::mlir::ROCDL::detail::sdot8GenericAdaptorBase::Properties) namespace mlir::ROCDL { //===----------------------------------------------------------------------===// // ::mlir::ROCDL::smfmac_f32_16x16x128_bf8_bf8 declarations //===----------------------------------------------------------------------===// namespace detail { class smfmac_f32_16x16x128_bf8_bf8GenericAdaptorBase { public: struct Properties { using abidTy = ::mlir::IntegerAttr; abidTy abid; auto getAbid() const { auto &propStorage = this->abid; return ::llvm::cast<::mlir::IntegerAttr>(propStorage); } void setAbid(const ::mlir::IntegerAttr &propValue) { this->abid = propValue; } using cbszTy = ::mlir::IntegerAttr; cbszTy cbsz; auto getCbsz() const { auto &propStorage = this->cbsz; return ::llvm::cast<::mlir::IntegerAttr>(propStorage); } void setCbsz(const ::mlir::IntegerAttr &propValue) { this->cbsz = propValue; } bool operator==(const Properties &rhs) const { return rhs.abid == this->abid && rhs.cbsz == this->cbsz && true; } bool operator!=(const Properties &rhs) const { return !(*this == rhs); } }; protected: ::mlir::DictionaryAttr odsAttrs; ::std::optional<::mlir::OperationName> odsOpName; Properties properties; ::mlir::RegionRange odsRegions; public: smfmac_f32_16x16x128_bf8_bf8GenericAdaptorBase(::mlir::DictionaryAttr attrs, const Properties &properties, ::mlir::RegionRange regions = {}) : odsAttrs(attrs), properties(properties), odsRegions(regions) { if (odsAttrs) odsOpName.emplace("rocdl.smfmac.f32.16x16x128.bf8.bf8", odsAttrs.getContext()); } smfmac_f32_16x16x128_bf8_bf8GenericAdaptorBase(smfmac_f32_16x16x128_bf8_bf8 op); std::pair getODSOperandIndexAndLength(unsigned index, unsigned odsOperandsSize) { return {index, 1}; } const Properties &getProperties() { return properties; } ::mlir::DictionaryAttr getAttributes() { return odsAttrs; } ::mlir::IntegerAttr getCbszAttr() { auto attr = ::llvm::cast<::mlir::IntegerAttr>(getProperties().cbsz); return attr; } uint32_t getCbsz(); ::mlir::IntegerAttr getAbidAttr() { auto attr = ::llvm::cast<::mlir::IntegerAttr>(getProperties().abid); return attr; } uint32_t getAbid(); }; } // namespace detail template class smfmac_f32_16x16x128_bf8_bf8GenericAdaptor : public detail::smfmac_f32_16x16x128_bf8_bf8GenericAdaptorBase { using ValueT = ::llvm::detail::ValueOfRange; using Base = detail::smfmac_f32_16x16x128_bf8_bf8GenericAdaptorBase; static constexpr int odsIndex_a = 0; static constexpr int odsIndex_b = 1; static constexpr int odsIndex_c = 2; static constexpr int odsIndex_index = 3; public: smfmac_f32_16x16x128_bf8_bf8GenericAdaptor(RangeT values, ::mlir::DictionaryAttr attrs, const Properties &properties, ::mlir::RegionRange regions = {}) : Base(attrs, properties, regions), odsOperands(values) {} smfmac_f32_16x16x128_bf8_bf8GenericAdaptor(RangeT values, ::mlir::DictionaryAttr attrs, ::mlir::PropertyRef properties, ::mlir::RegionRange regions = {}) : smfmac_f32_16x16x128_bf8_bf8GenericAdaptor(values, attrs, (properties ? *properties.as() : Properties{}), regions) {} smfmac_f32_16x16x128_bf8_bf8GenericAdaptor(RangeT values, ::mlir::DictionaryAttr attrs = nullptr) : smfmac_f32_16x16x128_bf8_bf8GenericAdaptor(values, attrs, Properties{}, {}) {} smfmac_f32_16x16x128_bf8_bf8GenericAdaptor(RangeT values, const smfmac_f32_16x16x128_bf8_bf8GenericAdaptorBase &base) : Base(base), odsOperands(values) {} template >> smfmac_f32_16x16x128_bf8_bf8GenericAdaptor(RangeT values, LateInst op) : Base(op), odsOperands(values) {} std::pair getODSOperandIndexAndLength(unsigned index) { return Base::getODSOperandIndexAndLength(index, odsOperands.size()); } RangeT getODSOperands(unsigned index) { auto valueRange = getODSOperandIndexAndLength(index); return {std::next(odsOperands.begin(), valueRange.first), std::next(odsOperands.begin(), valueRange.first + valueRange.second)}; } ValueT getA() { return (*getODSOperands(0).begin()); } ValueT getB() { return (*getODSOperands(1).begin()); } ValueT getC() { return (*getODSOperands(2).begin()); } ValueT getIndex() { return (*getODSOperands(3).begin()); } RangeT getOperands() { return odsOperands; } private: RangeT odsOperands; }; class smfmac_f32_16x16x128_bf8_bf8Adaptor : public smfmac_f32_16x16x128_bf8_bf8GenericAdaptor<::mlir::ValueRange> { public: using smfmac_f32_16x16x128_bf8_bf8GenericAdaptor::smfmac_f32_16x16x128_bf8_bf8GenericAdaptor; smfmac_f32_16x16x128_bf8_bf8Adaptor(smfmac_f32_16x16x128_bf8_bf8 op); ::llvm::LogicalResult verify(::mlir::Location loc); }; class smfmac_f32_16x16x128_bf8_bf8 : public ::mlir::Op::Impl, ::mlir::OpTrait::ZeroSuccessors, ::mlir::OpTrait::NOperands<4>::Impl, ::mlir::OpTrait::OpInvariants, ::mlir::BytecodeOpInterface::Trait> { public: using Op::Op; using Op::print; using Adaptor = smfmac_f32_16x16x128_bf8_bf8Adaptor; template using GenericAdaptor = smfmac_f32_16x16x128_bf8_bf8GenericAdaptor; using FoldAdaptor = GenericAdaptor<::llvm::ArrayRef<::mlir::Attribute>>; static constexpr int odsIndex_a = 0; static constexpr int odsIndex_b = 1; static constexpr int odsIndex_c = 2; static constexpr int odsIndex_index = 3; using Properties = FoldAdaptor::Properties; static ::llvm::ArrayRef<::llvm::StringRef> getAttributeNames() { static ::llvm::StringRef attrNames[] = {::llvm::StringRef("abid"), ::llvm::StringRef("cbsz")}; return ::llvm::ArrayRef(attrNames); } ::mlir::StringAttr getAbidAttrName() { return getAttributeNameForIndex(0); } static ::mlir::StringAttr getAbidAttrName(::mlir::OperationName name) { return getAttributeNameForIndex(name, 0); } ::mlir::StringAttr getCbszAttrName() { return getAttributeNameForIndex(1); } static ::mlir::StringAttr getCbszAttrName(::mlir::OperationName name) { return getAttributeNameForIndex(name, 1); } static constexpr ::llvm::StringLiteral getOperationName() { return ::llvm::StringLiteral("rocdl.smfmac.f32.16x16x128.bf8.bf8"); } std::pair getODSOperandIndexAndLength(unsigned index) { return {index, 1}; } ::mlir::Operation::operand_range getODSOperands(unsigned index) { auto valueRange = getODSOperandIndexAndLength(index); return {std::next(getOperation()->operand_begin(), valueRange.first), std::next(getOperation()->operand_begin(), valueRange.first + valueRange.second)}; } ::mlir::TypedValue<::mlir::VectorType> getA() { return ::llvm::cast<::mlir::TypedValue<::mlir::VectorType>>(*getODSOperands(0).begin()); } ::mlir::TypedValue<::mlir::VectorType> getB() { return ::llvm::cast<::mlir::TypedValue<::mlir::VectorType>>(*getODSOperands(1).begin()); } ::mlir::TypedValue<::mlir::VectorType> getC() { return ::llvm::cast<::mlir::TypedValue<::mlir::VectorType>>(*getODSOperands(2).begin()); } ::mlir::TypedValue<::mlir::IntegerType> getIndex() { return ::llvm::cast<::mlir::TypedValue<::mlir::IntegerType>>(*getODSOperands(3).begin()); } ::mlir::OpOperand &getAMutable() { auto range = getODSOperandIndexAndLength(0); return getOperation()->getOpOperand(range.first); } ::mlir::OpOperand &getBMutable() { auto range = getODSOperandIndexAndLength(1); return getOperation()->getOpOperand(range.first); } ::mlir::OpOperand &getCMutable() { auto range = getODSOperandIndexAndLength(2); return getOperation()->getOpOperand(range.first); } ::mlir::OpOperand &getIndexMutable() { auto range = getODSOperandIndexAndLength(3); return getOperation()->getOpOperand(range.first); } std::pair getODSResultIndexAndLength(unsigned index) { return {index, 1}; } ::mlir::Operation::result_range getODSResults(unsigned index) { auto valueRange = getODSResultIndexAndLength(index); return {std::next(getOperation()->result_begin(), valueRange.first), std::next(getOperation()->result_begin(), valueRange.first + valueRange.second)}; } ::mlir::TypedValue<::mlir::VectorType> getRes() { return ::llvm::cast<::mlir::TypedValue<::mlir::VectorType>>(*getODSResults(0).begin()); } static ::llvm::LogicalResult setPropertiesFromAttr(Properties &prop, ::mlir::Attribute attr, ::llvm::function_ref<::mlir::InFlightDiagnostic()> emitError); static ::mlir::Attribute getPropertiesAsAttr(::mlir::MLIRContext *ctx, const Properties &prop); static llvm::hash_code computePropertiesHash(const Properties &prop); static std::optional getInherentAttr(::mlir::MLIRContext *ctx, const Properties &prop, llvm::StringRef name); static void setInherentAttr(Properties &prop, llvm::StringRef name, mlir::Attribute value); static void populateInherentAttrs(::mlir::MLIRContext *ctx, const Properties &prop, ::mlir::NamedAttrList &attrs); static ::llvm::LogicalResult verifyInherentAttrs(::mlir::OperationName opName, ::mlir::NamedAttrList &attrs, llvm::function_ref<::mlir::InFlightDiagnostic()> emitError); static ::llvm::LogicalResult readProperties(::mlir::DialectBytecodeReader &reader, ::mlir::OperationState &state); void writeProperties(::mlir::DialectBytecodeWriter &writer); ::mlir::IntegerAttr getCbszAttr() { return ::llvm::cast<::mlir::IntegerAttr>(getProperties().cbsz); } uint32_t getCbsz(); ::mlir::IntegerAttr getAbidAttr() { return ::llvm::cast<::mlir::IntegerAttr>(getProperties().abid); } uint32_t getAbid(); void setCbszAttr(::mlir::IntegerAttr attr) { getProperties().cbsz = attr; } void setCbsz(uint32_t attrValue); void setAbidAttr(::mlir::IntegerAttr attr) { getProperties().abid = attr; } void setAbid(uint32_t attrValue); static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::Type res, ::mlir::Value a, ::mlir::Value b, ::mlir::Value c, ::mlir::Value index, ::mlir::IntegerAttr cbsz, ::mlir::IntegerAttr abid); static smfmac_f32_16x16x128_bf8_bf8 create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::Type res, ::mlir::Value a, ::mlir::Value b, ::mlir::Value c, ::mlir::Value index, ::mlir::IntegerAttr cbsz, ::mlir::IntegerAttr abid); static smfmac_f32_16x16x128_bf8_bf8 create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::Type res, ::mlir::Value a, ::mlir::Value b, ::mlir::Value c, ::mlir::Value index, ::mlir::IntegerAttr cbsz, ::mlir::IntegerAttr abid); static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::Value a, ::mlir::Value b, ::mlir::Value c, ::mlir::Value index, ::mlir::IntegerAttr cbsz, ::mlir::IntegerAttr abid); static smfmac_f32_16x16x128_bf8_bf8 create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::Value a, ::mlir::Value b, ::mlir::Value c, ::mlir::Value index, ::mlir::IntegerAttr cbsz, ::mlir::IntegerAttr abid); static smfmac_f32_16x16x128_bf8_bf8 create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::Value a, ::mlir::Value b, ::mlir::Value c, ::mlir::Value index, ::mlir::IntegerAttr cbsz, ::mlir::IntegerAttr abid); static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::Type res, ::mlir::Value a, ::mlir::Value b, ::mlir::Value c, ::mlir::Value index, uint32_t cbsz, uint32_t abid); static smfmac_f32_16x16x128_bf8_bf8 create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::Type res, ::mlir::Value a, ::mlir::Value b, ::mlir::Value c, ::mlir::Value index, uint32_t cbsz, uint32_t abid); static smfmac_f32_16x16x128_bf8_bf8 create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::Type res, ::mlir::Value a, ::mlir::Value b, ::mlir::Value c, ::mlir::Value index, uint32_t cbsz, uint32_t abid); static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::Value a, ::mlir::Value b, ::mlir::Value c, ::mlir::Value index, uint32_t cbsz, uint32_t abid); static smfmac_f32_16x16x128_bf8_bf8 create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::Value a, ::mlir::Value b, ::mlir::Value c, ::mlir::Value index, uint32_t cbsz, uint32_t abid); static smfmac_f32_16x16x128_bf8_bf8 create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::Value a, ::mlir::Value b, ::mlir::Value c, ::mlir::Value index, uint32_t cbsz, uint32_t abid); static void build(::mlir::OpBuilder &, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, ::llvm::ArrayRef<::mlir::NamedAttribute> attributes = {}); static smfmac_f32_16x16x128_bf8_bf8 create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, ::llvm::ArrayRef<::mlir::NamedAttribute> attributes = {}); static smfmac_f32_16x16x128_bf8_bf8 create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, ::llvm::ArrayRef<::mlir::NamedAttribute> attributes = {}); static void build(::mlir::OpBuilder &, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, const Properties &properties, ::llvm::ArrayRef<::mlir::NamedAttribute> discardableAttributes = {}); static smfmac_f32_16x16x128_bf8_bf8 create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, const Properties &properties, ::llvm::ArrayRef<::mlir::NamedAttribute> discardableAttributes = {}); static smfmac_f32_16x16x128_bf8_bf8 create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, const Properties &properties, ::llvm::ArrayRef<::mlir::NamedAttribute> discardableAttributes = {}); ::llvm::LogicalResult verifyInvariantsImpl(); ::llvm::LogicalResult verifyInvariants(); static ::mlir::ParseResult parse(::mlir::OpAsmParser &parser, ::mlir::OperationState &result); void print(::mlir::OpAsmPrinter &_odsPrinter); private: ::mlir::StringAttr getAttributeNameForIndex(unsigned index) { return getAttributeNameForIndex((*this)->getName(), index); } static ::mlir::StringAttr getAttributeNameForIndex(::mlir::OperationName name, unsigned index) { assert(index < 2 && "invalid attribute index"); assert(name.getStringRef() == getOperationName() && "invalid operation name"); assert(name.isRegistered() && "Operation isn't registered, missing a " "dependent dialect loading?"); return name.getAttributeNames()[index]; } public: }; } // namespace mlir::ROCDL MLIR_DECLARE_EXPLICIT_TYPE_ID(::mlir::ROCDL::smfmac_f32_16x16x128_bf8_bf8) MLIR_DECLARE_EXPLICIT_TYPE_ID(::mlir::ROCDL::detail::smfmac_f32_16x16x128_bf8_bf8GenericAdaptorBase::Properties) namespace mlir::ROCDL { //===----------------------------------------------------------------------===// // ::mlir::ROCDL::smfmac_f32_16x16x128_bf8_fp8 declarations //===----------------------------------------------------------------------===// namespace detail { class smfmac_f32_16x16x128_bf8_fp8GenericAdaptorBase { public: struct Properties { using abidTy = ::mlir::IntegerAttr; abidTy abid; auto getAbid() const { auto &propStorage = this->abid; return ::llvm::cast<::mlir::IntegerAttr>(propStorage); } void setAbid(const ::mlir::IntegerAttr &propValue) { this->abid = propValue; } using cbszTy = ::mlir::IntegerAttr; cbszTy cbsz; auto getCbsz() const { auto &propStorage = this->cbsz; return ::llvm::cast<::mlir::IntegerAttr>(propStorage); } void setCbsz(const ::mlir::IntegerAttr &propValue) { this->cbsz = propValue; } bool operator==(const Properties &rhs) const { return rhs.abid == this->abid && rhs.cbsz == this->cbsz && true; } bool operator!=(const Properties &rhs) const { return !(*this == rhs); } }; protected: ::mlir::DictionaryAttr odsAttrs; ::std::optional<::mlir::OperationName> odsOpName; Properties properties; ::mlir::RegionRange odsRegions; public: smfmac_f32_16x16x128_bf8_fp8GenericAdaptorBase(::mlir::DictionaryAttr attrs, const Properties &properties, ::mlir::RegionRange regions = {}) : odsAttrs(attrs), properties(properties), odsRegions(regions) { if (odsAttrs) odsOpName.emplace("rocdl.smfmac.f32.16x16x128.bf8.fp8", odsAttrs.getContext()); } smfmac_f32_16x16x128_bf8_fp8GenericAdaptorBase(smfmac_f32_16x16x128_bf8_fp8 op); std::pair getODSOperandIndexAndLength(unsigned index, unsigned odsOperandsSize) { return {index, 1}; } const Properties &getProperties() { return properties; } ::mlir::DictionaryAttr getAttributes() { return odsAttrs; } ::mlir::IntegerAttr getCbszAttr() { auto attr = ::llvm::cast<::mlir::IntegerAttr>(getProperties().cbsz); return attr; } uint32_t getCbsz(); ::mlir::IntegerAttr getAbidAttr() { auto attr = ::llvm::cast<::mlir::IntegerAttr>(getProperties().abid); return attr; } uint32_t getAbid(); }; } // namespace detail template class smfmac_f32_16x16x128_bf8_fp8GenericAdaptor : public detail::smfmac_f32_16x16x128_bf8_fp8GenericAdaptorBase { using ValueT = ::llvm::detail::ValueOfRange; using Base = detail::smfmac_f32_16x16x128_bf8_fp8GenericAdaptorBase; static constexpr int odsIndex_a = 0; static constexpr int odsIndex_b = 1; static constexpr int odsIndex_c = 2; static constexpr int odsIndex_index = 3; public: smfmac_f32_16x16x128_bf8_fp8GenericAdaptor(RangeT values, ::mlir::DictionaryAttr attrs, const Properties &properties, ::mlir::RegionRange regions = {}) : Base(attrs, properties, regions), odsOperands(values) {} smfmac_f32_16x16x128_bf8_fp8GenericAdaptor(RangeT values, ::mlir::DictionaryAttr attrs, ::mlir::PropertyRef properties, ::mlir::RegionRange regions = {}) : smfmac_f32_16x16x128_bf8_fp8GenericAdaptor(values, attrs, (properties ? *properties.as() : Properties{}), regions) {} smfmac_f32_16x16x128_bf8_fp8GenericAdaptor(RangeT values, ::mlir::DictionaryAttr attrs = nullptr) : smfmac_f32_16x16x128_bf8_fp8GenericAdaptor(values, attrs, Properties{}, {}) {} smfmac_f32_16x16x128_bf8_fp8GenericAdaptor(RangeT values, const smfmac_f32_16x16x128_bf8_fp8GenericAdaptorBase &base) : Base(base), odsOperands(values) {} template >> smfmac_f32_16x16x128_bf8_fp8GenericAdaptor(RangeT values, LateInst op) : Base(op), odsOperands(values) {} std::pair getODSOperandIndexAndLength(unsigned index) { return Base::getODSOperandIndexAndLength(index, odsOperands.size()); } RangeT getODSOperands(unsigned index) { auto valueRange = getODSOperandIndexAndLength(index); return {std::next(odsOperands.begin(), valueRange.first), std::next(odsOperands.begin(), valueRange.first + valueRange.second)}; } ValueT getA() { return (*getODSOperands(0).begin()); } ValueT getB() { return (*getODSOperands(1).begin()); } ValueT getC() { return (*getODSOperands(2).begin()); } ValueT getIndex() { return (*getODSOperands(3).begin()); } RangeT getOperands() { return odsOperands; } private: RangeT odsOperands; }; class smfmac_f32_16x16x128_bf8_fp8Adaptor : public smfmac_f32_16x16x128_bf8_fp8GenericAdaptor<::mlir::ValueRange> { public: using smfmac_f32_16x16x128_bf8_fp8GenericAdaptor::smfmac_f32_16x16x128_bf8_fp8GenericAdaptor; smfmac_f32_16x16x128_bf8_fp8Adaptor(smfmac_f32_16x16x128_bf8_fp8 op); ::llvm::LogicalResult verify(::mlir::Location loc); }; class smfmac_f32_16x16x128_bf8_fp8 : public ::mlir::Op::Impl, ::mlir::OpTrait::ZeroSuccessors, ::mlir::OpTrait::NOperands<4>::Impl, ::mlir::OpTrait::OpInvariants, ::mlir::BytecodeOpInterface::Trait> { public: using Op::Op; using Op::print; using Adaptor = smfmac_f32_16x16x128_bf8_fp8Adaptor; template using GenericAdaptor = smfmac_f32_16x16x128_bf8_fp8GenericAdaptor; using FoldAdaptor = GenericAdaptor<::llvm::ArrayRef<::mlir::Attribute>>; static constexpr int odsIndex_a = 0; static constexpr int odsIndex_b = 1; static constexpr int odsIndex_c = 2; static constexpr int odsIndex_index = 3; using Properties = FoldAdaptor::Properties; static ::llvm::ArrayRef<::llvm::StringRef> getAttributeNames() { static ::llvm::StringRef attrNames[] = {::llvm::StringRef("abid"), ::llvm::StringRef("cbsz")}; return ::llvm::ArrayRef(attrNames); } ::mlir::StringAttr getAbidAttrName() { return getAttributeNameForIndex(0); } static ::mlir::StringAttr getAbidAttrName(::mlir::OperationName name) { return getAttributeNameForIndex(name, 0); } ::mlir::StringAttr getCbszAttrName() { return getAttributeNameForIndex(1); } static ::mlir::StringAttr getCbszAttrName(::mlir::OperationName name) { return getAttributeNameForIndex(name, 1); } static constexpr ::llvm::StringLiteral getOperationName() { return ::llvm::StringLiteral("rocdl.smfmac.f32.16x16x128.bf8.fp8"); } std::pair getODSOperandIndexAndLength(unsigned index) { return {index, 1}; } ::mlir::Operation::operand_range getODSOperands(unsigned index) { auto valueRange = getODSOperandIndexAndLength(index); return {std::next(getOperation()->operand_begin(), valueRange.first), std::next(getOperation()->operand_begin(), valueRange.first + valueRange.second)}; } ::mlir::TypedValue<::mlir::VectorType> getA() { return ::llvm::cast<::mlir::TypedValue<::mlir::VectorType>>(*getODSOperands(0).begin()); } ::mlir::TypedValue<::mlir::VectorType> getB() { return ::llvm::cast<::mlir::TypedValue<::mlir::VectorType>>(*getODSOperands(1).begin()); } ::mlir::TypedValue<::mlir::VectorType> getC() { return ::llvm::cast<::mlir::TypedValue<::mlir::VectorType>>(*getODSOperands(2).begin()); } ::mlir::TypedValue<::mlir::IntegerType> getIndex() { return ::llvm::cast<::mlir::TypedValue<::mlir::IntegerType>>(*getODSOperands(3).begin()); } ::mlir::OpOperand &getAMutable() { auto range = getODSOperandIndexAndLength(0); return getOperation()->getOpOperand(range.first); } ::mlir::OpOperand &getBMutable() { auto range = getODSOperandIndexAndLength(1); return getOperation()->getOpOperand(range.first); } ::mlir::OpOperand &getCMutable() { auto range = getODSOperandIndexAndLength(2); return getOperation()->getOpOperand(range.first); } ::mlir::OpOperand &getIndexMutable() { auto range = getODSOperandIndexAndLength(3); return getOperation()->getOpOperand(range.first); } std::pair getODSResultIndexAndLength(unsigned index) { return {index, 1}; } ::mlir::Operation::result_range getODSResults(unsigned index) { auto valueRange = getODSResultIndexAndLength(index); return {std::next(getOperation()->result_begin(), valueRange.first), std::next(getOperation()->result_begin(), valueRange.first + valueRange.second)}; } ::mlir::TypedValue<::mlir::VectorType> getRes() { return ::llvm::cast<::mlir::TypedValue<::mlir::VectorType>>(*getODSResults(0).begin()); } static ::llvm::LogicalResult setPropertiesFromAttr(Properties &prop, ::mlir::Attribute attr, ::llvm::function_ref<::mlir::InFlightDiagnostic()> emitError); static ::mlir::Attribute getPropertiesAsAttr(::mlir::MLIRContext *ctx, const Properties &prop); static llvm::hash_code computePropertiesHash(const Properties &prop); static std::optional getInherentAttr(::mlir::MLIRContext *ctx, const Properties &prop, llvm::StringRef name); static void setInherentAttr(Properties &prop, llvm::StringRef name, mlir::Attribute value); static void populateInherentAttrs(::mlir::MLIRContext *ctx, const Properties &prop, ::mlir::NamedAttrList &attrs); static ::llvm::LogicalResult verifyInherentAttrs(::mlir::OperationName opName, ::mlir::NamedAttrList &attrs, llvm::function_ref<::mlir::InFlightDiagnostic()> emitError); static ::llvm::LogicalResult readProperties(::mlir::DialectBytecodeReader &reader, ::mlir::OperationState &state); void writeProperties(::mlir::DialectBytecodeWriter &writer); ::mlir::IntegerAttr getCbszAttr() { return ::llvm::cast<::mlir::IntegerAttr>(getProperties().cbsz); } uint32_t getCbsz(); ::mlir::IntegerAttr getAbidAttr() { return ::llvm::cast<::mlir::IntegerAttr>(getProperties().abid); } uint32_t getAbid(); void setCbszAttr(::mlir::IntegerAttr attr) { getProperties().cbsz = attr; } void setCbsz(uint32_t attrValue); void setAbidAttr(::mlir::IntegerAttr attr) { getProperties().abid = attr; } void setAbid(uint32_t attrValue); static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::Type res, ::mlir::Value a, ::mlir::Value b, ::mlir::Value c, ::mlir::Value index, ::mlir::IntegerAttr cbsz, ::mlir::IntegerAttr abid); static smfmac_f32_16x16x128_bf8_fp8 create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::Type res, ::mlir::Value a, ::mlir::Value b, ::mlir::Value c, ::mlir::Value index, ::mlir::IntegerAttr cbsz, ::mlir::IntegerAttr abid); static smfmac_f32_16x16x128_bf8_fp8 create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::Type res, ::mlir::Value a, ::mlir::Value b, ::mlir::Value c, ::mlir::Value index, ::mlir::IntegerAttr cbsz, ::mlir::IntegerAttr abid); static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::Value a, ::mlir::Value b, ::mlir::Value c, ::mlir::Value index, ::mlir::IntegerAttr cbsz, ::mlir::IntegerAttr abid); static smfmac_f32_16x16x128_bf8_fp8 create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::Value a, ::mlir::Value b, ::mlir::Value c, ::mlir::Value index, ::mlir::IntegerAttr cbsz, ::mlir::IntegerAttr abid); static smfmac_f32_16x16x128_bf8_fp8 create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::Value a, ::mlir::Value b, ::mlir::Value c, ::mlir::Value index, ::mlir::IntegerAttr cbsz, ::mlir::IntegerAttr abid); static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::Type res, ::mlir::Value a, ::mlir::Value b, ::mlir::Value c, ::mlir::Value index, uint32_t cbsz, uint32_t abid); static smfmac_f32_16x16x128_bf8_fp8 create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::Type res, ::mlir::Value a, ::mlir::Value b, ::mlir::Value c, ::mlir::Value index, uint32_t cbsz, uint32_t abid); static smfmac_f32_16x16x128_bf8_fp8 create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::Type res, ::mlir::Value a, ::mlir::Value b, ::mlir::Value c, ::mlir::Value index, uint32_t cbsz, uint32_t abid); static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::Value a, ::mlir::Value b, ::mlir::Value c, ::mlir::Value index, uint32_t cbsz, uint32_t abid); static smfmac_f32_16x16x128_bf8_fp8 create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::Value a, ::mlir::Value b, ::mlir::Value c, ::mlir::Value index, uint32_t cbsz, uint32_t abid); static smfmac_f32_16x16x128_bf8_fp8 create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::Value a, ::mlir::Value b, ::mlir::Value c, ::mlir::Value index, uint32_t cbsz, uint32_t abid); static void build(::mlir::OpBuilder &, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, ::llvm::ArrayRef<::mlir::NamedAttribute> attributes = {}); static smfmac_f32_16x16x128_bf8_fp8 create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, ::llvm::ArrayRef<::mlir::NamedAttribute> attributes = {}); static smfmac_f32_16x16x128_bf8_fp8 create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, ::llvm::ArrayRef<::mlir::NamedAttribute> attributes = {}); static void build(::mlir::OpBuilder &, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, const Properties &properties, ::llvm::ArrayRef<::mlir::NamedAttribute> discardableAttributes = {}); static smfmac_f32_16x16x128_bf8_fp8 create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, const Properties &properties, ::llvm::ArrayRef<::mlir::NamedAttribute> discardableAttributes = {}); static smfmac_f32_16x16x128_bf8_fp8 create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, const Properties &properties, ::llvm::ArrayRef<::mlir::NamedAttribute> discardableAttributes = {}); ::llvm::LogicalResult verifyInvariantsImpl(); ::llvm::LogicalResult verifyInvariants(); static ::mlir::ParseResult parse(::mlir::OpAsmParser &parser, ::mlir::OperationState &result); void print(::mlir::OpAsmPrinter &_odsPrinter); private: ::mlir::StringAttr getAttributeNameForIndex(unsigned index) { return getAttributeNameForIndex((*this)->getName(), index); } static ::mlir::StringAttr getAttributeNameForIndex(::mlir::OperationName name, unsigned index) { assert(index < 2 && "invalid attribute index"); assert(name.getStringRef() == getOperationName() && "invalid operation name"); assert(name.isRegistered() && "Operation isn't registered, missing a " "dependent dialect loading?"); return name.getAttributeNames()[index]; } public: }; } // namespace mlir::ROCDL MLIR_DECLARE_EXPLICIT_TYPE_ID(::mlir::ROCDL::smfmac_f32_16x16x128_bf8_fp8) MLIR_DECLARE_EXPLICIT_TYPE_ID(::mlir::ROCDL::detail::smfmac_f32_16x16x128_bf8_fp8GenericAdaptorBase::Properties) namespace mlir::ROCDL { //===----------------------------------------------------------------------===// // ::mlir::ROCDL::smfmac_f32_16x16x128_fp8_bf8 declarations //===----------------------------------------------------------------------===// namespace detail { class smfmac_f32_16x16x128_fp8_bf8GenericAdaptorBase { public: struct Properties { using abidTy = ::mlir::IntegerAttr; abidTy abid; auto getAbid() const { auto &propStorage = this->abid; return ::llvm::cast<::mlir::IntegerAttr>(propStorage); } void setAbid(const ::mlir::IntegerAttr &propValue) { this->abid = propValue; } using cbszTy = ::mlir::IntegerAttr; cbszTy cbsz; auto getCbsz() const { auto &propStorage = this->cbsz; return ::llvm::cast<::mlir::IntegerAttr>(propStorage); } void setCbsz(const ::mlir::IntegerAttr &propValue) { this->cbsz = propValue; } bool operator==(const Properties &rhs) const { return rhs.abid == this->abid && rhs.cbsz == this->cbsz && true; } bool operator!=(const Properties &rhs) const { return !(*this == rhs); } }; protected: ::mlir::DictionaryAttr odsAttrs; ::std::optional<::mlir::OperationName> odsOpName; Properties properties; ::mlir::RegionRange odsRegions; public: smfmac_f32_16x16x128_fp8_bf8GenericAdaptorBase(::mlir::DictionaryAttr attrs, const Properties &properties, ::mlir::RegionRange regions = {}) : odsAttrs(attrs), properties(properties), odsRegions(regions) { if (odsAttrs) odsOpName.emplace("rocdl.smfmac.f32.16x16x128.fp8.bf8", odsAttrs.getContext()); } smfmac_f32_16x16x128_fp8_bf8GenericAdaptorBase(smfmac_f32_16x16x128_fp8_bf8 op); std::pair getODSOperandIndexAndLength(unsigned index, unsigned odsOperandsSize) { return {index, 1}; } const Properties &getProperties() { return properties; } ::mlir::DictionaryAttr getAttributes() { return odsAttrs; } ::mlir::IntegerAttr getCbszAttr() { auto attr = ::llvm::cast<::mlir::IntegerAttr>(getProperties().cbsz); return attr; } uint32_t getCbsz(); ::mlir::IntegerAttr getAbidAttr() { auto attr = ::llvm::cast<::mlir::IntegerAttr>(getProperties().abid); return attr; } uint32_t getAbid(); }; } // namespace detail template class smfmac_f32_16x16x128_fp8_bf8GenericAdaptor : public detail::smfmac_f32_16x16x128_fp8_bf8GenericAdaptorBase { using ValueT = ::llvm::detail::ValueOfRange; using Base = detail::smfmac_f32_16x16x128_fp8_bf8GenericAdaptorBase; static constexpr int odsIndex_a = 0; static constexpr int odsIndex_b = 1; static constexpr int odsIndex_c = 2; static constexpr int odsIndex_index = 3; public: smfmac_f32_16x16x128_fp8_bf8GenericAdaptor(RangeT values, ::mlir::DictionaryAttr attrs, const Properties &properties, ::mlir::RegionRange regions = {}) : Base(attrs, properties, regions), odsOperands(values) {} smfmac_f32_16x16x128_fp8_bf8GenericAdaptor(RangeT values, ::mlir::DictionaryAttr attrs, ::mlir::PropertyRef properties, ::mlir::RegionRange regions = {}) : smfmac_f32_16x16x128_fp8_bf8GenericAdaptor(values, attrs, (properties ? *properties.as() : Properties{}), regions) {} smfmac_f32_16x16x128_fp8_bf8GenericAdaptor(RangeT values, ::mlir::DictionaryAttr attrs = nullptr) : smfmac_f32_16x16x128_fp8_bf8GenericAdaptor(values, attrs, Properties{}, {}) {} smfmac_f32_16x16x128_fp8_bf8GenericAdaptor(RangeT values, const smfmac_f32_16x16x128_fp8_bf8GenericAdaptorBase &base) : Base(base), odsOperands(values) {} template >> smfmac_f32_16x16x128_fp8_bf8GenericAdaptor(RangeT values, LateInst op) : Base(op), odsOperands(values) {} std::pair getODSOperandIndexAndLength(unsigned index) { return Base::getODSOperandIndexAndLength(index, odsOperands.size()); } RangeT getODSOperands(unsigned index) { auto valueRange = getODSOperandIndexAndLength(index); return {std::next(odsOperands.begin(), valueRange.first), std::next(odsOperands.begin(), valueRange.first + valueRange.second)}; } ValueT getA() { return (*getODSOperands(0).begin()); } ValueT getB() { return (*getODSOperands(1).begin()); } ValueT getC() { return (*getODSOperands(2).begin()); } ValueT getIndex() { return (*getODSOperands(3).begin()); } RangeT getOperands() { return odsOperands; } private: RangeT odsOperands; }; class smfmac_f32_16x16x128_fp8_bf8Adaptor : public smfmac_f32_16x16x128_fp8_bf8GenericAdaptor<::mlir::ValueRange> { public: using smfmac_f32_16x16x128_fp8_bf8GenericAdaptor::smfmac_f32_16x16x128_fp8_bf8GenericAdaptor; smfmac_f32_16x16x128_fp8_bf8Adaptor(smfmac_f32_16x16x128_fp8_bf8 op); ::llvm::LogicalResult verify(::mlir::Location loc); }; class smfmac_f32_16x16x128_fp8_bf8 : public ::mlir::Op::Impl, ::mlir::OpTrait::ZeroSuccessors, ::mlir::OpTrait::NOperands<4>::Impl, ::mlir::OpTrait::OpInvariants, ::mlir::BytecodeOpInterface::Trait> { public: using Op::Op; using Op::print; using Adaptor = smfmac_f32_16x16x128_fp8_bf8Adaptor; template using GenericAdaptor = smfmac_f32_16x16x128_fp8_bf8GenericAdaptor; using FoldAdaptor = GenericAdaptor<::llvm::ArrayRef<::mlir::Attribute>>; static constexpr int odsIndex_a = 0; static constexpr int odsIndex_b = 1; static constexpr int odsIndex_c = 2; static constexpr int odsIndex_index = 3; using Properties = FoldAdaptor::Properties; static ::llvm::ArrayRef<::llvm::StringRef> getAttributeNames() { static ::llvm::StringRef attrNames[] = {::llvm::StringRef("abid"), ::llvm::StringRef("cbsz")}; return ::llvm::ArrayRef(attrNames); } ::mlir::StringAttr getAbidAttrName() { return getAttributeNameForIndex(0); } static ::mlir::StringAttr getAbidAttrName(::mlir::OperationName name) { return getAttributeNameForIndex(name, 0); } ::mlir::StringAttr getCbszAttrName() { return getAttributeNameForIndex(1); } static ::mlir::StringAttr getCbszAttrName(::mlir::OperationName name) { return getAttributeNameForIndex(name, 1); } static constexpr ::llvm::StringLiteral getOperationName() { return ::llvm::StringLiteral("rocdl.smfmac.f32.16x16x128.fp8.bf8"); } std::pair getODSOperandIndexAndLength(unsigned index) { return {index, 1}; } ::mlir::Operation::operand_range getODSOperands(unsigned index) { auto valueRange = getODSOperandIndexAndLength(index); return {std::next(getOperation()->operand_begin(), valueRange.first), std::next(getOperation()->operand_begin(), valueRange.first + valueRange.second)}; } ::mlir::TypedValue<::mlir::VectorType> getA() { return ::llvm::cast<::mlir::TypedValue<::mlir::VectorType>>(*getODSOperands(0).begin()); } ::mlir::TypedValue<::mlir::VectorType> getB() { return ::llvm::cast<::mlir::TypedValue<::mlir::VectorType>>(*getODSOperands(1).begin()); } ::mlir::TypedValue<::mlir::VectorType> getC() { return ::llvm::cast<::mlir::TypedValue<::mlir::VectorType>>(*getODSOperands(2).begin()); } ::mlir::TypedValue<::mlir::IntegerType> getIndex() { return ::llvm::cast<::mlir::TypedValue<::mlir::IntegerType>>(*getODSOperands(3).begin()); } ::mlir::OpOperand &getAMutable() { auto range = getODSOperandIndexAndLength(0); return getOperation()->getOpOperand(range.first); } ::mlir::OpOperand &getBMutable() { auto range = getODSOperandIndexAndLength(1); return getOperation()->getOpOperand(range.first); } ::mlir::OpOperand &getCMutable() { auto range = getODSOperandIndexAndLength(2); return getOperation()->getOpOperand(range.first); } ::mlir::OpOperand &getIndexMutable() { auto range = getODSOperandIndexAndLength(3); return getOperation()->getOpOperand(range.first); } std::pair getODSResultIndexAndLength(unsigned index) { return {index, 1}; } ::mlir::Operation::result_range getODSResults(unsigned index) { auto valueRange = getODSResultIndexAndLength(index); return {std::next(getOperation()->result_begin(), valueRange.first), std::next(getOperation()->result_begin(), valueRange.first + valueRange.second)}; } ::mlir::TypedValue<::mlir::VectorType> getRes() { return ::llvm::cast<::mlir::TypedValue<::mlir::VectorType>>(*getODSResults(0).begin()); } static ::llvm::LogicalResult setPropertiesFromAttr(Properties &prop, ::mlir::Attribute attr, ::llvm::function_ref<::mlir::InFlightDiagnostic()> emitError); static ::mlir::Attribute getPropertiesAsAttr(::mlir::MLIRContext *ctx, const Properties &prop); static llvm::hash_code computePropertiesHash(const Properties &prop); static std::optional getInherentAttr(::mlir::MLIRContext *ctx, const Properties &prop, llvm::StringRef name); static void setInherentAttr(Properties &prop, llvm::StringRef name, mlir::Attribute value); static void populateInherentAttrs(::mlir::MLIRContext *ctx, const Properties &prop, ::mlir::NamedAttrList &attrs); static ::llvm::LogicalResult verifyInherentAttrs(::mlir::OperationName opName, ::mlir::NamedAttrList &attrs, llvm::function_ref<::mlir::InFlightDiagnostic()> emitError); static ::llvm::LogicalResult readProperties(::mlir::DialectBytecodeReader &reader, ::mlir::OperationState &state); void writeProperties(::mlir::DialectBytecodeWriter &writer); ::mlir::IntegerAttr getCbszAttr() { return ::llvm::cast<::mlir::IntegerAttr>(getProperties().cbsz); } uint32_t getCbsz(); ::mlir::IntegerAttr getAbidAttr() { return ::llvm::cast<::mlir::IntegerAttr>(getProperties().abid); } uint32_t getAbid(); void setCbszAttr(::mlir::IntegerAttr attr) { getProperties().cbsz = attr; } void setCbsz(uint32_t attrValue); void setAbidAttr(::mlir::IntegerAttr attr) { getProperties().abid = attr; } void setAbid(uint32_t attrValue); static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::Type res, ::mlir::Value a, ::mlir::Value b, ::mlir::Value c, ::mlir::Value index, ::mlir::IntegerAttr cbsz, ::mlir::IntegerAttr abid); static smfmac_f32_16x16x128_fp8_bf8 create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::Type res, ::mlir::Value a, ::mlir::Value b, ::mlir::Value c, ::mlir::Value index, ::mlir::IntegerAttr cbsz, ::mlir::IntegerAttr abid); static smfmac_f32_16x16x128_fp8_bf8 create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::Type res, ::mlir::Value a, ::mlir::Value b, ::mlir::Value c, ::mlir::Value index, ::mlir::IntegerAttr cbsz, ::mlir::IntegerAttr abid); static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::Value a, ::mlir::Value b, ::mlir::Value c, ::mlir::Value index, ::mlir::IntegerAttr cbsz, ::mlir::IntegerAttr abid); static smfmac_f32_16x16x128_fp8_bf8 create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::Value a, ::mlir::Value b, ::mlir::Value c, ::mlir::Value index, ::mlir::IntegerAttr cbsz, ::mlir::IntegerAttr abid); static smfmac_f32_16x16x128_fp8_bf8 create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::Value a, ::mlir::Value b, ::mlir::Value c, ::mlir::Value index, ::mlir::IntegerAttr cbsz, ::mlir::IntegerAttr abid); static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::Type res, ::mlir::Value a, ::mlir::Value b, ::mlir::Value c, ::mlir::Value index, uint32_t cbsz, uint32_t abid); static smfmac_f32_16x16x128_fp8_bf8 create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::Type res, ::mlir::Value a, ::mlir::Value b, ::mlir::Value c, ::mlir::Value index, uint32_t cbsz, uint32_t abid); static smfmac_f32_16x16x128_fp8_bf8 create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::Type res, ::mlir::Value a, ::mlir::Value b, ::mlir::Value c, ::mlir::Value index, uint32_t cbsz, uint32_t abid); static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::Value a, ::mlir::Value b, ::mlir::Value c, ::mlir::Value index, uint32_t cbsz, uint32_t abid); static smfmac_f32_16x16x128_fp8_bf8 create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::Value a, ::mlir::Value b, ::mlir::Value c, ::mlir::Value index, uint32_t cbsz, uint32_t abid); static smfmac_f32_16x16x128_fp8_bf8 create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::Value a, ::mlir::Value b, ::mlir::Value c, ::mlir::Value index, uint32_t cbsz, uint32_t abid); static void build(::mlir::OpBuilder &, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, ::llvm::ArrayRef<::mlir::NamedAttribute> attributes = {}); static smfmac_f32_16x16x128_fp8_bf8 create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, ::llvm::ArrayRef<::mlir::NamedAttribute> attributes = {}); static smfmac_f32_16x16x128_fp8_bf8 create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, ::llvm::ArrayRef<::mlir::NamedAttribute> attributes = {}); static void build(::mlir::OpBuilder &, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, const Properties &properties, ::llvm::ArrayRef<::mlir::NamedAttribute> discardableAttributes = {}); static smfmac_f32_16x16x128_fp8_bf8 create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, const Properties &properties, ::llvm::ArrayRef<::mlir::NamedAttribute> discardableAttributes = {}); static smfmac_f32_16x16x128_fp8_bf8 create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, const Properties &properties, ::llvm::ArrayRef<::mlir::NamedAttribute> discardableAttributes = {}); ::llvm::LogicalResult verifyInvariantsImpl(); ::llvm::LogicalResult verifyInvariants(); static ::mlir::ParseResult parse(::mlir::OpAsmParser &parser, ::mlir::OperationState &result); void print(::mlir::OpAsmPrinter &_odsPrinter); private: ::mlir::StringAttr getAttributeNameForIndex(unsigned index) { return getAttributeNameForIndex((*this)->getName(), index); } static ::mlir::StringAttr getAttributeNameForIndex(::mlir::OperationName name, unsigned index) { assert(index < 2 && "invalid attribute index"); assert(name.getStringRef() == getOperationName() && "invalid operation name"); assert(name.isRegistered() && "Operation isn't registered, missing a " "dependent dialect loading?"); return name.getAttributeNames()[index]; } public: }; } // namespace mlir::ROCDL MLIR_DECLARE_EXPLICIT_TYPE_ID(::mlir::ROCDL::smfmac_f32_16x16x128_fp8_bf8) MLIR_DECLARE_EXPLICIT_TYPE_ID(::mlir::ROCDL::detail::smfmac_f32_16x16x128_fp8_bf8GenericAdaptorBase::Properties) namespace mlir::ROCDL { //===----------------------------------------------------------------------===// // ::mlir::ROCDL::smfmac_f32_16x16x128_fp8_fp8 declarations //===----------------------------------------------------------------------===// namespace detail { class smfmac_f32_16x16x128_fp8_fp8GenericAdaptorBase { public: struct Properties { using abidTy = ::mlir::IntegerAttr; abidTy abid; auto getAbid() const { auto &propStorage = this->abid; return ::llvm::cast<::mlir::IntegerAttr>(propStorage); } void setAbid(const ::mlir::IntegerAttr &propValue) { this->abid = propValue; } using cbszTy = ::mlir::IntegerAttr; cbszTy cbsz; auto getCbsz() const { auto &propStorage = this->cbsz; return ::llvm::cast<::mlir::IntegerAttr>(propStorage); } void setCbsz(const ::mlir::IntegerAttr &propValue) { this->cbsz = propValue; } bool operator==(const Properties &rhs) const { return rhs.abid == this->abid && rhs.cbsz == this->cbsz && true; } bool operator!=(const Properties &rhs) const { return !(*this == rhs); } }; protected: ::mlir::DictionaryAttr odsAttrs; ::std::optional<::mlir::OperationName> odsOpName; Properties properties; ::mlir::RegionRange odsRegions; public: smfmac_f32_16x16x128_fp8_fp8GenericAdaptorBase(::mlir::DictionaryAttr attrs, const Properties &properties, ::mlir::RegionRange regions = {}) : odsAttrs(attrs), properties(properties), odsRegions(regions) { if (odsAttrs) odsOpName.emplace("rocdl.smfmac.f32.16x16x128.fp8.fp8", odsAttrs.getContext()); } smfmac_f32_16x16x128_fp8_fp8GenericAdaptorBase(smfmac_f32_16x16x128_fp8_fp8 op); std::pair getODSOperandIndexAndLength(unsigned index, unsigned odsOperandsSize) { return {index, 1}; } const Properties &getProperties() { return properties; } ::mlir::DictionaryAttr getAttributes() { return odsAttrs; } ::mlir::IntegerAttr getCbszAttr() { auto attr = ::llvm::cast<::mlir::IntegerAttr>(getProperties().cbsz); return attr; } uint32_t getCbsz(); ::mlir::IntegerAttr getAbidAttr() { auto attr = ::llvm::cast<::mlir::IntegerAttr>(getProperties().abid); return attr; } uint32_t getAbid(); }; } // namespace detail template class smfmac_f32_16x16x128_fp8_fp8GenericAdaptor : public detail::smfmac_f32_16x16x128_fp8_fp8GenericAdaptorBase { using ValueT = ::llvm::detail::ValueOfRange; using Base = detail::smfmac_f32_16x16x128_fp8_fp8GenericAdaptorBase; static constexpr int odsIndex_a = 0; static constexpr int odsIndex_b = 1; static constexpr int odsIndex_c = 2; static constexpr int odsIndex_index = 3; public: smfmac_f32_16x16x128_fp8_fp8GenericAdaptor(RangeT values, ::mlir::DictionaryAttr attrs, const Properties &properties, ::mlir::RegionRange regions = {}) : Base(attrs, properties, regions), odsOperands(values) {} smfmac_f32_16x16x128_fp8_fp8GenericAdaptor(RangeT values, ::mlir::DictionaryAttr attrs, ::mlir::PropertyRef properties, ::mlir::RegionRange regions = {}) : smfmac_f32_16x16x128_fp8_fp8GenericAdaptor(values, attrs, (properties ? *properties.as() : Properties{}), regions) {} smfmac_f32_16x16x128_fp8_fp8GenericAdaptor(RangeT values, ::mlir::DictionaryAttr attrs = nullptr) : smfmac_f32_16x16x128_fp8_fp8GenericAdaptor(values, attrs, Properties{}, {}) {} smfmac_f32_16x16x128_fp8_fp8GenericAdaptor(RangeT values, const smfmac_f32_16x16x128_fp8_fp8GenericAdaptorBase &base) : Base(base), odsOperands(values) {} template >> smfmac_f32_16x16x128_fp8_fp8GenericAdaptor(RangeT values, LateInst op) : Base(op), odsOperands(values) {} std::pair getODSOperandIndexAndLength(unsigned index) { return Base::getODSOperandIndexAndLength(index, odsOperands.size()); } RangeT getODSOperands(unsigned index) { auto valueRange = getODSOperandIndexAndLength(index); return {std::next(odsOperands.begin(), valueRange.first), std::next(odsOperands.begin(), valueRange.first + valueRange.second)}; } ValueT getA() { return (*getODSOperands(0).begin()); } ValueT getB() { return (*getODSOperands(1).begin()); } ValueT getC() { return (*getODSOperands(2).begin()); } ValueT getIndex() { return (*getODSOperands(3).begin()); } RangeT getOperands() { return odsOperands; } private: RangeT odsOperands; }; class smfmac_f32_16x16x128_fp8_fp8Adaptor : public smfmac_f32_16x16x128_fp8_fp8GenericAdaptor<::mlir::ValueRange> { public: using smfmac_f32_16x16x128_fp8_fp8GenericAdaptor::smfmac_f32_16x16x128_fp8_fp8GenericAdaptor; smfmac_f32_16x16x128_fp8_fp8Adaptor(smfmac_f32_16x16x128_fp8_fp8 op); ::llvm::LogicalResult verify(::mlir::Location loc); }; class smfmac_f32_16x16x128_fp8_fp8 : public ::mlir::Op::Impl, ::mlir::OpTrait::ZeroSuccessors, ::mlir::OpTrait::NOperands<4>::Impl, ::mlir::OpTrait::OpInvariants, ::mlir::BytecodeOpInterface::Trait> { public: using Op::Op; using Op::print; using Adaptor = smfmac_f32_16x16x128_fp8_fp8Adaptor; template using GenericAdaptor = smfmac_f32_16x16x128_fp8_fp8GenericAdaptor; using FoldAdaptor = GenericAdaptor<::llvm::ArrayRef<::mlir::Attribute>>; static constexpr int odsIndex_a = 0; static constexpr int odsIndex_b = 1; static constexpr int odsIndex_c = 2; static constexpr int odsIndex_index = 3; using Properties = FoldAdaptor::Properties; static ::llvm::ArrayRef<::llvm::StringRef> getAttributeNames() { static ::llvm::StringRef attrNames[] = {::llvm::StringRef("abid"), ::llvm::StringRef("cbsz")}; return ::llvm::ArrayRef(attrNames); } ::mlir::StringAttr getAbidAttrName() { return getAttributeNameForIndex(0); } static ::mlir::StringAttr getAbidAttrName(::mlir::OperationName name) { return getAttributeNameForIndex(name, 0); } ::mlir::StringAttr getCbszAttrName() { return getAttributeNameForIndex(1); } static ::mlir::StringAttr getCbszAttrName(::mlir::OperationName name) { return getAttributeNameForIndex(name, 1); } static constexpr ::llvm::StringLiteral getOperationName() { return ::llvm::StringLiteral("rocdl.smfmac.f32.16x16x128.fp8.fp8"); } std::pair getODSOperandIndexAndLength(unsigned index) { return {index, 1}; } ::mlir::Operation::operand_range getODSOperands(unsigned index) { auto valueRange = getODSOperandIndexAndLength(index); return {std::next(getOperation()->operand_begin(), valueRange.first), std::next(getOperation()->operand_begin(), valueRange.first + valueRange.second)}; } ::mlir::TypedValue<::mlir::VectorType> getA() { return ::llvm::cast<::mlir::TypedValue<::mlir::VectorType>>(*getODSOperands(0).begin()); } ::mlir::TypedValue<::mlir::VectorType> getB() { return ::llvm::cast<::mlir::TypedValue<::mlir::VectorType>>(*getODSOperands(1).begin()); } ::mlir::TypedValue<::mlir::VectorType> getC() { return ::llvm::cast<::mlir::TypedValue<::mlir::VectorType>>(*getODSOperands(2).begin()); } ::mlir::TypedValue<::mlir::IntegerType> getIndex() { return ::llvm::cast<::mlir::TypedValue<::mlir::IntegerType>>(*getODSOperands(3).begin()); } ::mlir::OpOperand &getAMutable() { auto range = getODSOperandIndexAndLength(0); return getOperation()->getOpOperand(range.first); } ::mlir::OpOperand &getBMutable() { auto range = getODSOperandIndexAndLength(1); return getOperation()->getOpOperand(range.first); } ::mlir::OpOperand &getCMutable() { auto range = getODSOperandIndexAndLength(2); return getOperation()->getOpOperand(range.first); } ::mlir::OpOperand &getIndexMutable() { auto range = getODSOperandIndexAndLength(3); return getOperation()->getOpOperand(range.first); } std::pair getODSResultIndexAndLength(unsigned index) { return {index, 1}; } ::mlir::Operation::result_range getODSResults(unsigned index) { auto valueRange = getODSResultIndexAndLength(index); return {std::next(getOperation()->result_begin(), valueRange.first), std::next(getOperation()->result_begin(), valueRange.first + valueRange.second)}; } ::mlir::TypedValue<::mlir::VectorType> getRes() { return ::llvm::cast<::mlir::TypedValue<::mlir::VectorType>>(*getODSResults(0).begin()); } static ::llvm::LogicalResult setPropertiesFromAttr(Properties &prop, ::mlir::Attribute attr, ::llvm::function_ref<::mlir::InFlightDiagnostic()> emitError); static ::mlir::Attribute getPropertiesAsAttr(::mlir::MLIRContext *ctx, const Properties &prop); static llvm::hash_code computePropertiesHash(const Properties &prop); static std::optional getInherentAttr(::mlir::MLIRContext *ctx, const Properties &prop, llvm::StringRef name); static void setInherentAttr(Properties &prop, llvm::StringRef name, mlir::Attribute value); static void populateInherentAttrs(::mlir::MLIRContext *ctx, const Properties &prop, ::mlir::NamedAttrList &attrs); static ::llvm::LogicalResult verifyInherentAttrs(::mlir::OperationName opName, ::mlir::NamedAttrList &attrs, llvm::function_ref<::mlir::InFlightDiagnostic()> emitError); static ::llvm::LogicalResult readProperties(::mlir::DialectBytecodeReader &reader, ::mlir::OperationState &state); void writeProperties(::mlir::DialectBytecodeWriter &writer); ::mlir::IntegerAttr getCbszAttr() { return ::llvm::cast<::mlir::IntegerAttr>(getProperties().cbsz); } uint32_t getCbsz(); ::mlir::IntegerAttr getAbidAttr() { return ::llvm::cast<::mlir::IntegerAttr>(getProperties().abid); } uint32_t getAbid(); void setCbszAttr(::mlir::IntegerAttr attr) { getProperties().cbsz = attr; } void setCbsz(uint32_t attrValue); void setAbidAttr(::mlir::IntegerAttr attr) { getProperties().abid = attr; } void setAbid(uint32_t attrValue); static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::Type res, ::mlir::Value a, ::mlir::Value b, ::mlir::Value c, ::mlir::Value index, ::mlir::IntegerAttr cbsz, ::mlir::IntegerAttr abid); static smfmac_f32_16x16x128_fp8_fp8 create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::Type res, ::mlir::Value a, ::mlir::Value b, ::mlir::Value c, ::mlir::Value index, ::mlir::IntegerAttr cbsz, ::mlir::IntegerAttr abid); static smfmac_f32_16x16x128_fp8_fp8 create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::Type res, ::mlir::Value a, ::mlir::Value b, ::mlir::Value c, ::mlir::Value index, ::mlir::IntegerAttr cbsz, ::mlir::IntegerAttr abid); static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::Value a, ::mlir::Value b, ::mlir::Value c, ::mlir::Value index, ::mlir::IntegerAttr cbsz, ::mlir::IntegerAttr abid); static smfmac_f32_16x16x128_fp8_fp8 create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::Value a, ::mlir::Value b, ::mlir::Value c, ::mlir::Value index, ::mlir::IntegerAttr cbsz, ::mlir::IntegerAttr abid); static smfmac_f32_16x16x128_fp8_fp8 create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::Value a, ::mlir::Value b, ::mlir::Value c, ::mlir::Value index, ::mlir::IntegerAttr cbsz, ::mlir::IntegerAttr abid); static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::Type res, ::mlir::Value a, ::mlir::Value b, ::mlir::Value c, ::mlir::Value index, uint32_t cbsz, uint32_t abid); static smfmac_f32_16x16x128_fp8_fp8 create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::Type res, ::mlir::Value a, ::mlir::Value b, ::mlir::Value c, ::mlir::Value index, uint32_t cbsz, uint32_t abid); static smfmac_f32_16x16x128_fp8_fp8 create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::Type res, ::mlir::Value a, ::mlir::Value b, ::mlir::Value c, ::mlir::Value index, uint32_t cbsz, uint32_t abid); static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::Value a, ::mlir::Value b, ::mlir::Value c, ::mlir::Value index, uint32_t cbsz, uint32_t abid); static smfmac_f32_16x16x128_fp8_fp8 create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::Value a, ::mlir::Value b, ::mlir::Value c, ::mlir::Value index, uint32_t cbsz, uint32_t abid); static smfmac_f32_16x16x128_fp8_fp8 create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::Value a, ::mlir::Value b, ::mlir::Value c, ::mlir::Value index, uint32_t cbsz, uint32_t abid); static void build(::mlir::OpBuilder &, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, ::llvm::ArrayRef<::mlir::NamedAttribute> attributes = {}); static smfmac_f32_16x16x128_fp8_fp8 create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, ::llvm::ArrayRef<::mlir::NamedAttribute> attributes = {}); static smfmac_f32_16x16x128_fp8_fp8 create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, ::llvm::ArrayRef<::mlir::NamedAttribute> attributes = {}); static void build(::mlir::OpBuilder &, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, const Properties &properties, ::llvm::ArrayRef<::mlir::NamedAttribute> discardableAttributes = {}); static smfmac_f32_16x16x128_fp8_fp8 create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, const Properties &properties, ::llvm::ArrayRef<::mlir::NamedAttribute> discardableAttributes = {}); static smfmac_f32_16x16x128_fp8_fp8 create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, const Properties &properties, ::llvm::ArrayRef<::mlir::NamedAttribute> discardableAttributes = {}); ::llvm::LogicalResult verifyInvariantsImpl(); ::llvm::LogicalResult verifyInvariants(); static ::mlir::ParseResult parse(::mlir::OpAsmParser &parser, ::mlir::OperationState &result); void print(::mlir::OpAsmPrinter &_odsPrinter); private: ::mlir::StringAttr getAttributeNameForIndex(unsigned index) { return getAttributeNameForIndex((*this)->getName(), index); } static ::mlir::StringAttr getAttributeNameForIndex(::mlir::OperationName name, unsigned index) { assert(index < 2 && "invalid attribute index"); assert(name.getStringRef() == getOperationName() && "invalid operation name"); assert(name.isRegistered() && "Operation isn't registered, missing a " "dependent dialect loading?"); return name.getAttributeNames()[index]; } public: }; } // namespace mlir::ROCDL MLIR_DECLARE_EXPLICIT_TYPE_ID(::mlir::ROCDL::smfmac_f32_16x16x128_fp8_fp8) MLIR_DECLARE_EXPLICIT_TYPE_ID(::mlir::ROCDL::detail::smfmac_f32_16x16x128_fp8_fp8GenericAdaptorBase::Properties) namespace mlir::ROCDL { //===----------------------------------------------------------------------===// // ::mlir::ROCDL::smfmac_f32_16x16x32_bf16 declarations //===----------------------------------------------------------------------===// namespace detail { class smfmac_f32_16x16x32_bf16GenericAdaptorBase { public: struct Properties { using abidTy = ::mlir::IntegerAttr; abidTy abid; auto getAbid() const { auto &propStorage = this->abid; return ::llvm::cast<::mlir::IntegerAttr>(propStorage); } void setAbid(const ::mlir::IntegerAttr &propValue) { this->abid = propValue; } using cbszTy = ::mlir::IntegerAttr; cbszTy cbsz; auto getCbsz() const { auto &propStorage = this->cbsz; return ::llvm::cast<::mlir::IntegerAttr>(propStorage); } void setCbsz(const ::mlir::IntegerAttr &propValue) { this->cbsz = propValue; } bool operator==(const Properties &rhs) const { return rhs.abid == this->abid && rhs.cbsz == this->cbsz && true; } bool operator!=(const Properties &rhs) const { return !(*this == rhs); } }; protected: ::mlir::DictionaryAttr odsAttrs; ::std::optional<::mlir::OperationName> odsOpName; Properties properties; ::mlir::RegionRange odsRegions; public: smfmac_f32_16x16x32_bf16GenericAdaptorBase(::mlir::DictionaryAttr attrs, const Properties &properties, ::mlir::RegionRange regions = {}) : odsAttrs(attrs), properties(properties), odsRegions(regions) { if (odsAttrs) odsOpName.emplace("rocdl.smfmac.f32.16x16x32.bf16", odsAttrs.getContext()); } smfmac_f32_16x16x32_bf16GenericAdaptorBase(smfmac_f32_16x16x32_bf16 op); std::pair getODSOperandIndexAndLength(unsigned index, unsigned odsOperandsSize) { return {index, 1}; } const Properties &getProperties() { return properties; } ::mlir::DictionaryAttr getAttributes() { return odsAttrs; } ::mlir::IntegerAttr getCbszAttr() { auto attr = ::llvm::cast<::mlir::IntegerAttr>(getProperties().cbsz); return attr; } uint32_t getCbsz(); ::mlir::IntegerAttr getAbidAttr() { auto attr = ::llvm::cast<::mlir::IntegerAttr>(getProperties().abid); return attr; } uint32_t getAbid(); }; } // namespace detail template class smfmac_f32_16x16x32_bf16GenericAdaptor : public detail::smfmac_f32_16x16x32_bf16GenericAdaptorBase { using ValueT = ::llvm::detail::ValueOfRange; using Base = detail::smfmac_f32_16x16x32_bf16GenericAdaptorBase; static constexpr int odsIndex_a = 0; static constexpr int odsIndex_b = 1; static constexpr int odsIndex_c = 2; static constexpr int odsIndex_index = 3; public: smfmac_f32_16x16x32_bf16GenericAdaptor(RangeT values, ::mlir::DictionaryAttr attrs, const Properties &properties, ::mlir::RegionRange regions = {}) : Base(attrs, properties, regions), odsOperands(values) {} smfmac_f32_16x16x32_bf16GenericAdaptor(RangeT values, ::mlir::DictionaryAttr attrs, ::mlir::PropertyRef properties, ::mlir::RegionRange regions = {}) : smfmac_f32_16x16x32_bf16GenericAdaptor(values, attrs, (properties ? *properties.as() : Properties{}), regions) {} smfmac_f32_16x16x32_bf16GenericAdaptor(RangeT values, ::mlir::DictionaryAttr attrs = nullptr) : smfmac_f32_16x16x32_bf16GenericAdaptor(values, attrs, Properties{}, {}) {} smfmac_f32_16x16x32_bf16GenericAdaptor(RangeT values, const smfmac_f32_16x16x32_bf16GenericAdaptorBase &base) : Base(base), odsOperands(values) {} template >> smfmac_f32_16x16x32_bf16GenericAdaptor(RangeT values, LateInst op) : Base(op), odsOperands(values) {} std::pair getODSOperandIndexAndLength(unsigned index) { return Base::getODSOperandIndexAndLength(index, odsOperands.size()); } RangeT getODSOperands(unsigned index) { auto valueRange = getODSOperandIndexAndLength(index); return {std::next(odsOperands.begin(), valueRange.first), std::next(odsOperands.begin(), valueRange.first + valueRange.second)}; } ValueT getA() { return (*getODSOperands(0).begin()); } ValueT getB() { return (*getODSOperands(1).begin()); } ValueT getC() { return (*getODSOperands(2).begin()); } ValueT getIndex() { return (*getODSOperands(3).begin()); } RangeT getOperands() { return odsOperands; } private: RangeT odsOperands; }; class smfmac_f32_16x16x32_bf16Adaptor : public smfmac_f32_16x16x32_bf16GenericAdaptor<::mlir::ValueRange> { public: using smfmac_f32_16x16x32_bf16GenericAdaptor::smfmac_f32_16x16x32_bf16GenericAdaptor; smfmac_f32_16x16x32_bf16Adaptor(smfmac_f32_16x16x32_bf16 op); ::llvm::LogicalResult verify(::mlir::Location loc); }; class smfmac_f32_16x16x32_bf16 : public ::mlir::Op::Impl, ::mlir::OpTrait::ZeroSuccessors, ::mlir::OpTrait::NOperands<4>::Impl, ::mlir::OpTrait::OpInvariants, ::mlir::BytecodeOpInterface::Trait> { public: using Op::Op; using Op::print; using Adaptor = smfmac_f32_16x16x32_bf16Adaptor; template using GenericAdaptor = smfmac_f32_16x16x32_bf16GenericAdaptor; using FoldAdaptor = GenericAdaptor<::llvm::ArrayRef<::mlir::Attribute>>; static constexpr int odsIndex_a = 0; static constexpr int odsIndex_b = 1; static constexpr int odsIndex_c = 2; static constexpr int odsIndex_index = 3; using Properties = FoldAdaptor::Properties; static ::llvm::ArrayRef<::llvm::StringRef> getAttributeNames() { static ::llvm::StringRef attrNames[] = {::llvm::StringRef("abid"), ::llvm::StringRef("cbsz")}; return ::llvm::ArrayRef(attrNames); } ::mlir::StringAttr getAbidAttrName() { return getAttributeNameForIndex(0); } static ::mlir::StringAttr getAbidAttrName(::mlir::OperationName name) { return getAttributeNameForIndex(name, 0); } ::mlir::StringAttr getCbszAttrName() { return getAttributeNameForIndex(1); } static ::mlir::StringAttr getCbszAttrName(::mlir::OperationName name) { return getAttributeNameForIndex(name, 1); } static constexpr ::llvm::StringLiteral getOperationName() { return ::llvm::StringLiteral("rocdl.smfmac.f32.16x16x32.bf16"); } std::pair getODSOperandIndexAndLength(unsigned index) { return {index, 1}; } ::mlir::Operation::operand_range getODSOperands(unsigned index) { auto valueRange = getODSOperandIndexAndLength(index); return {std::next(getOperation()->operand_begin(), valueRange.first), std::next(getOperation()->operand_begin(), valueRange.first + valueRange.second)}; } ::mlir::TypedValue<::mlir::VectorType> getA() { return ::llvm::cast<::mlir::TypedValue<::mlir::VectorType>>(*getODSOperands(0).begin()); } ::mlir::TypedValue<::mlir::VectorType> getB() { return ::llvm::cast<::mlir::TypedValue<::mlir::VectorType>>(*getODSOperands(1).begin()); } ::mlir::TypedValue<::mlir::VectorType> getC() { return ::llvm::cast<::mlir::TypedValue<::mlir::VectorType>>(*getODSOperands(2).begin()); } ::mlir::TypedValue<::mlir::IntegerType> getIndex() { return ::llvm::cast<::mlir::TypedValue<::mlir::IntegerType>>(*getODSOperands(3).begin()); } ::mlir::OpOperand &getAMutable() { auto range = getODSOperandIndexAndLength(0); return getOperation()->getOpOperand(range.first); } ::mlir::OpOperand &getBMutable() { auto range = getODSOperandIndexAndLength(1); return getOperation()->getOpOperand(range.first); } ::mlir::OpOperand &getCMutable() { auto range = getODSOperandIndexAndLength(2); return getOperation()->getOpOperand(range.first); } ::mlir::OpOperand &getIndexMutable() { auto range = getODSOperandIndexAndLength(3); return getOperation()->getOpOperand(range.first); } std::pair getODSResultIndexAndLength(unsigned index) { return {index, 1}; } ::mlir::Operation::result_range getODSResults(unsigned index) { auto valueRange = getODSResultIndexAndLength(index); return {std::next(getOperation()->result_begin(), valueRange.first), std::next(getOperation()->result_begin(), valueRange.first + valueRange.second)}; } ::mlir::TypedValue<::mlir::VectorType> getRes() { return ::llvm::cast<::mlir::TypedValue<::mlir::VectorType>>(*getODSResults(0).begin()); } static ::llvm::LogicalResult setPropertiesFromAttr(Properties &prop, ::mlir::Attribute attr, ::llvm::function_ref<::mlir::InFlightDiagnostic()> emitError); static ::mlir::Attribute getPropertiesAsAttr(::mlir::MLIRContext *ctx, const Properties &prop); static llvm::hash_code computePropertiesHash(const Properties &prop); static std::optional getInherentAttr(::mlir::MLIRContext *ctx, const Properties &prop, llvm::StringRef name); static void setInherentAttr(Properties &prop, llvm::StringRef name, mlir::Attribute value); static void populateInherentAttrs(::mlir::MLIRContext *ctx, const Properties &prop, ::mlir::NamedAttrList &attrs); static ::llvm::LogicalResult verifyInherentAttrs(::mlir::OperationName opName, ::mlir::NamedAttrList &attrs, llvm::function_ref<::mlir::InFlightDiagnostic()> emitError); static ::llvm::LogicalResult readProperties(::mlir::DialectBytecodeReader &reader, ::mlir::OperationState &state); void writeProperties(::mlir::DialectBytecodeWriter &writer); ::mlir::IntegerAttr getCbszAttr() { return ::llvm::cast<::mlir::IntegerAttr>(getProperties().cbsz); } uint32_t getCbsz(); ::mlir::IntegerAttr getAbidAttr() { return ::llvm::cast<::mlir::IntegerAttr>(getProperties().abid); } uint32_t getAbid(); void setCbszAttr(::mlir::IntegerAttr attr) { getProperties().cbsz = attr; } void setCbsz(uint32_t attrValue); void setAbidAttr(::mlir::IntegerAttr attr) { getProperties().abid = attr; } void setAbid(uint32_t attrValue); static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::Type res, ::mlir::Value a, ::mlir::Value b, ::mlir::Value c, ::mlir::Value index, ::mlir::IntegerAttr cbsz, ::mlir::IntegerAttr abid); static smfmac_f32_16x16x32_bf16 create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::Type res, ::mlir::Value a, ::mlir::Value b, ::mlir::Value c, ::mlir::Value index, ::mlir::IntegerAttr cbsz, ::mlir::IntegerAttr abid); static smfmac_f32_16x16x32_bf16 create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::Type res, ::mlir::Value a, ::mlir::Value b, ::mlir::Value c, ::mlir::Value index, ::mlir::IntegerAttr cbsz, ::mlir::IntegerAttr abid); static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::Value a, ::mlir::Value b, ::mlir::Value c, ::mlir::Value index, ::mlir::IntegerAttr cbsz, ::mlir::IntegerAttr abid); static smfmac_f32_16x16x32_bf16 create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::Value a, ::mlir::Value b, ::mlir::Value c, ::mlir::Value index, ::mlir::IntegerAttr cbsz, ::mlir::IntegerAttr abid); static smfmac_f32_16x16x32_bf16 create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::Value a, ::mlir::Value b, ::mlir::Value c, ::mlir::Value index, ::mlir::IntegerAttr cbsz, ::mlir::IntegerAttr abid); static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::Type res, ::mlir::Value a, ::mlir::Value b, ::mlir::Value c, ::mlir::Value index, uint32_t cbsz, uint32_t abid); static smfmac_f32_16x16x32_bf16 create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::Type res, ::mlir::Value a, ::mlir::Value b, ::mlir::Value c, ::mlir::Value index, uint32_t cbsz, uint32_t abid); static smfmac_f32_16x16x32_bf16 create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::Type res, ::mlir::Value a, ::mlir::Value b, ::mlir::Value c, ::mlir::Value index, uint32_t cbsz, uint32_t abid); static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::Value a, ::mlir::Value b, ::mlir::Value c, ::mlir::Value index, uint32_t cbsz, uint32_t abid); static smfmac_f32_16x16x32_bf16 create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::Value a, ::mlir::Value b, ::mlir::Value c, ::mlir::Value index, uint32_t cbsz, uint32_t abid); static smfmac_f32_16x16x32_bf16 create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::Value a, ::mlir::Value b, ::mlir::Value c, ::mlir::Value index, uint32_t cbsz, uint32_t abid); static void build(::mlir::OpBuilder &, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, ::llvm::ArrayRef<::mlir::NamedAttribute> attributes = {}); static smfmac_f32_16x16x32_bf16 create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, ::llvm::ArrayRef<::mlir::NamedAttribute> attributes = {}); static smfmac_f32_16x16x32_bf16 create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, ::llvm::ArrayRef<::mlir::NamedAttribute> attributes = {}); static void build(::mlir::OpBuilder &, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, const Properties &properties, ::llvm::ArrayRef<::mlir::NamedAttribute> discardableAttributes = {}); static smfmac_f32_16x16x32_bf16 create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, const Properties &properties, ::llvm::ArrayRef<::mlir::NamedAttribute> discardableAttributes = {}); static smfmac_f32_16x16x32_bf16 create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, const Properties &properties, ::llvm::ArrayRef<::mlir::NamedAttribute> discardableAttributes = {}); ::llvm::LogicalResult verifyInvariantsImpl(); ::llvm::LogicalResult verifyInvariants(); static ::mlir::ParseResult parse(::mlir::OpAsmParser &parser, ::mlir::OperationState &result); void print(::mlir::OpAsmPrinter &_odsPrinter); private: ::mlir::StringAttr getAttributeNameForIndex(unsigned index) { return getAttributeNameForIndex((*this)->getName(), index); } static ::mlir::StringAttr getAttributeNameForIndex(::mlir::OperationName name, unsigned index) { assert(index < 2 && "invalid attribute index"); assert(name.getStringRef() == getOperationName() && "invalid operation name"); assert(name.isRegistered() && "Operation isn't registered, missing a " "dependent dialect loading?"); return name.getAttributeNames()[index]; } public: }; } // namespace mlir::ROCDL MLIR_DECLARE_EXPLICIT_TYPE_ID(::mlir::ROCDL::smfmac_f32_16x16x32_bf16) MLIR_DECLARE_EXPLICIT_TYPE_ID(::mlir::ROCDL::detail::smfmac_f32_16x16x32_bf16GenericAdaptorBase::Properties) namespace mlir::ROCDL { //===----------------------------------------------------------------------===// // ::mlir::ROCDL::smfmac_f32_16x16x32_f16 declarations //===----------------------------------------------------------------------===// namespace detail { class smfmac_f32_16x16x32_f16GenericAdaptorBase { public: struct Properties { using abidTy = ::mlir::IntegerAttr; abidTy abid; auto getAbid() const { auto &propStorage = this->abid; return ::llvm::cast<::mlir::IntegerAttr>(propStorage); } void setAbid(const ::mlir::IntegerAttr &propValue) { this->abid = propValue; } using cbszTy = ::mlir::IntegerAttr; cbszTy cbsz; auto getCbsz() const { auto &propStorage = this->cbsz; return ::llvm::cast<::mlir::IntegerAttr>(propStorage); } void setCbsz(const ::mlir::IntegerAttr &propValue) { this->cbsz = propValue; } bool operator==(const Properties &rhs) const { return rhs.abid == this->abid && rhs.cbsz == this->cbsz && true; } bool operator!=(const Properties &rhs) const { return !(*this == rhs); } }; protected: ::mlir::DictionaryAttr odsAttrs; ::std::optional<::mlir::OperationName> odsOpName; Properties properties; ::mlir::RegionRange odsRegions; public: smfmac_f32_16x16x32_f16GenericAdaptorBase(::mlir::DictionaryAttr attrs, const Properties &properties, ::mlir::RegionRange regions = {}) : odsAttrs(attrs), properties(properties), odsRegions(regions) { if (odsAttrs) odsOpName.emplace("rocdl.smfmac.f32.16x16x32.f16", odsAttrs.getContext()); } smfmac_f32_16x16x32_f16GenericAdaptorBase(smfmac_f32_16x16x32_f16 op); std::pair getODSOperandIndexAndLength(unsigned index, unsigned odsOperandsSize) { return {index, 1}; } const Properties &getProperties() { return properties; } ::mlir::DictionaryAttr getAttributes() { return odsAttrs; } ::mlir::IntegerAttr getCbszAttr() { auto attr = ::llvm::cast<::mlir::IntegerAttr>(getProperties().cbsz); return attr; } uint32_t getCbsz(); ::mlir::IntegerAttr getAbidAttr() { auto attr = ::llvm::cast<::mlir::IntegerAttr>(getProperties().abid); return attr; } uint32_t getAbid(); }; } // namespace detail template class smfmac_f32_16x16x32_f16GenericAdaptor : public detail::smfmac_f32_16x16x32_f16GenericAdaptorBase { using ValueT = ::llvm::detail::ValueOfRange; using Base = detail::smfmac_f32_16x16x32_f16GenericAdaptorBase; static constexpr int odsIndex_a = 0; static constexpr int odsIndex_b = 1; static constexpr int odsIndex_c = 2; static constexpr int odsIndex_index = 3; public: smfmac_f32_16x16x32_f16GenericAdaptor(RangeT values, ::mlir::DictionaryAttr attrs, const Properties &properties, ::mlir::RegionRange regions = {}) : Base(attrs, properties, regions), odsOperands(values) {} smfmac_f32_16x16x32_f16GenericAdaptor(RangeT values, ::mlir::DictionaryAttr attrs, ::mlir::PropertyRef properties, ::mlir::RegionRange regions = {}) : smfmac_f32_16x16x32_f16GenericAdaptor(values, attrs, (properties ? *properties.as() : Properties{}), regions) {} smfmac_f32_16x16x32_f16GenericAdaptor(RangeT values, ::mlir::DictionaryAttr attrs = nullptr) : smfmac_f32_16x16x32_f16GenericAdaptor(values, attrs, Properties{}, {}) {} smfmac_f32_16x16x32_f16GenericAdaptor(RangeT values, const smfmac_f32_16x16x32_f16GenericAdaptorBase &base) : Base(base), odsOperands(values) {} template >> smfmac_f32_16x16x32_f16GenericAdaptor(RangeT values, LateInst op) : Base(op), odsOperands(values) {} std::pair getODSOperandIndexAndLength(unsigned index) { return Base::getODSOperandIndexAndLength(index, odsOperands.size()); } RangeT getODSOperands(unsigned index) { auto valueRange = getODSOperandIndexAndLength(index); return {std::next(odsOperands.begin(), valueRange.first), std::next(odsOperands.begin(), valueRange.first + valueRange.second)}; } ValueT getA() { return (*getODSOperands(0).begin()); } ValueT getB() { return (*getODSOperands(1).begin()); } ValueT getC() { return (*getODSOperands(2).begin()); } ValueT getIndex() { return (*getODSOperands(3).begin()); } RangeT getOperands() { return odsOperands; } private: RangeT odsOperands; }; class smfmac_f32_16x16x32_f16Adaptor : public smfmac_f32_16x16x32_f16GenericAdaptor<::mlir::ValueRange> { public: using smfmac_f32_16x16x32_f16GenericAdaptor::smfmac_f32_16x16x32_f16GenericAdaptor; smfmac_f32_16x16x32_f16Adaptor(smfmac_f32_16x16x32_f16 op); ::llvm::LogicalResult verify(::mlir::Location loc); }; class smfmac_f32_16x16x32_f16 : public ::mlir::Op::Impl, ::mlir::OpTrait::ZeroSuccessors, ::mlir::OpTrait::NOperands<4>::Impl, ::mlir::OpTrait::OpInvariants, ::mlir::BytecodeOpInterface::Trait> { public: using Op::Op; using Op::print; using Adaptor = smfmac_f32_16x16x32_f16Adaptor; template using GenericAdaptor = smfmac_f32_16x16x32_f16GenericAdaptor; using FoldAdaptor = GenericAdaptor<::llvm::ArrayRef<::mlir::Attribute>>; static constexpr int odsIndex_a = 0; static constexpr int odsIndex_b = 1; static constexpr int odsIndex_c = 2; static constexpr int odsIndex_index = 3; using Properties = FoldAdaptor::Properties; static ::llvm::ArrayRef<::llvm::StringRef> getAttributeNames() { static ::llvm::StringRef attrNames[] = {::llvm::StringRef("abid"), ::llvm::StringRef("cbsz")}; return ::llvm::ArrayRef(attrNames); } ::mlir::StringAttr getAbidAttrName() { return getAttributeNameForIndex(0); } static ::mlir::StringAttr getAbidAttrName(::mlir::OperationName name) { return getAttributeNameForIndex(name, 0); } ::mlir::StringAttr getCbszAttrName() { return getAttributeNameForIndex(1); } static ::mlir::StringAttr getCbszAttrName(::mlir::OperationName name) { return getAttributeNameForIndex(name, 1); } static constexpr ::llvm::StringLiteral getOperationName() { return ::llvm::StringLiteral("rocdl.smfmac.f32.16x16x32.f16"); } std::pair getODSOperandIndexAndLength(unsigned index) { return {index, 1}; } ::mlir::Operation::operand_range getODSOperands(unsigned index) { auto valueRange = getODSOperandIndexAndLength(index); return {std::next(getOperation()->operand_begin(), valueRange.first), std::next(getOperation()->operand_begin(), valueRange.first + valueRange.second)}; } ::mlir::TypedValue<::mlir::VectorType> getA() { return ::llvm::cast<::mlir::TypedValue<::mlir::VectorType>>(*getODSOperands(0).begin()); } ::mlir::TypedValue<::mlir::VectorType> getB() { return ::llvm::cast<::mlir::TypedValue<::mlir::VectorType>>(*getODSOperands(1).begin()); } ::mlir::TypedValue<::mlir::VectorType> getC() { return ::llvm::cast<::mlir::TypedValue<::mlir::VectorType>>(*getODSOperands(2).begin()); } ::mlir::TypedValue<::mlir::IntegerType> getIndex() { return ::llvm::cast<::mlir::TypedValue<::mlir::IntegerType>>(*getODSOperands(3).begin()); } ::mlir::OpOperand &getAMutable() { auto range = getODSOperandIndexAndLength(0); return getOperation()->getOpOperand(range.first); } ::mlir::OpOperand &getBMutable() { auto range = getODSOperandIndexAndLength(1); return getOperation()->getOpOperand(range.first); } ::mlir::OpOperand &getCMutable() { auto range = getODSOperandIndexAndLength(2); return getOperation()->getOpOperand(range.first); } ::mlir::OpOperand &getIndexMutable() { auto range = getODSOperandIndexAndLength(3); return getOperation()->getOpOperand(range.first); } std::pair getODSResultIndexAndLength(unsigned index) { return {index, 1}; } ::mlir::Operation::result_range getODSResults(unsigned index) { auto valueRange = getODSResultIndexAndLength(index); return {std::next(getOperation()->result_begin(), valueRange.first), std::next(getOperation()->result_begin(), valueRange.first + valueRange.second)}; } ::mlir::TypedValue<::mlir::VectorType> getRes() { return ::llvm::cast<::mlir::TypedValue<::mlir::VectorType>>(*getODSResults(0).begin()); } static ::llvm::LogicalResult setPropertiesFromAttr(Properties &prop, ::mlir::Attribute attr, ::llvm::function_ref<::mlir::InFlightDiagnostic()> emitError); static ::mlir::Attribute getPropertiesAsAttr(::mlir::MLIRContext *ctx, const Properties &prop); static llvm::hash_code computePropertiesHash(const Properties &prop); static std::optional getInherentAttr(::mlir::MLIRContext *ctx, const Properties &prop, llvm::StringRef name); static void setInherentAttr(Properties &prop, llvm::StringRef name, mlir::Attribute value); static void populateInherentAttrs(::mlir::MLIRContext *ctx, const Properties &prop, ::mlir::NamedAttrList &attrs); static ::llvm::LogicalResult verifyInherentAttrs(::mlir::OperationName opName, ::mlir::NamedAttrList &attrs, llvm::function_ref<::mlir::InFlightDiagnostic()> emitError); static ::llvm::LogicalResult readProperties(::mlir::DialectBytecodeReader &reader, ::mlir::OperationState &state); void writeProperties(::mlir::DialectBytecodeWriter &writer); ::mlir::IntegerAttr getCbszAttr() { return ::llvm::cast<::mlir::IntegerAttr>(getProperties().cbsz); } uint32_t getCbsz(); ::mlir::IntegerAttr getAbidAttr() { return ::llvm::cast<::mlir::IntegerAttr>(getProperties().abid); } uint32_t getAbid(); void setCbszAttr(::mlir::IntegerAttr attr) { getProperties().cbsz = attr; } void setCbsz(uint32_t attrValue); void setAbidAttr(::mlir::IntegerAttr attr) { getProperties().abid = attr; } void setAbid(uint32_t attrValue); static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::Type res, ::mlir::Value a, ::mlir::Value b, ::mlir::Value c, ::mlir::Value index, ::mlir::IntegerAttr cbsz, ::mlir::IntegerAttr abid); static smfmac_f32_16x16x32_f16 create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::Type res, ::mlir::Value a, ::mlir::Value b, ::mlir::Value c, ::mlir::Value index, ::mlir::IntegerAttr cbsz, ::mlir::IntegerAttr abid); static smfmac_f32_16x16x32_f16 create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::Type res, ::mlir::Value a, ::mlir::Value b, ::mlir::Value c, ::mlir::Value index, ::mlir::IntegerAttr cbsz, ::mlir::IntegerAttr abid); static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::Value a, ::mlir::Value b, ::mlir::Value c, ::mlir::Value index, ::mlir::IntegerAttr cbsz, ::mlir::IntegerAttr abid); static smfmac_f32_16x16x32_f16 create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::Value a, ::mlir::Value b, ::mlir::Value c, ::mlir::Value index, ::mlir::IntegerAttr cbsz, ::mlir::IntegerAttr abid); static smfmac_f32_16x16x32_f16 create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::Value a, ::mlir::Value b, ::mlir::Value c, ::mlir::Value index, ::mlir::IntegerAttr cbsz, ::mlir::IntegerAttr abid); static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::Type res, ::mlir::Value a, ::mlir::Value b, ::mlir::Value c, ::mlir::Value index, uint32_t cbsz, uint32_t abid); static smfmac_f32_16x16x32_f16 create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::Type res, ::mlir::Value a, ::mlir::Value b, ::mlir::Value c, ::mlir::Value index, uint32_t cbsz, uint32_t abid); static smfmac_f32_16x16x32_f16 create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::Type res, ::mlir::Value a, ::mlir::Value b, ::mlir::Value c, ::mlir::Value index, uint32_t cbsz, uint32_t abid); static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::Value a, ::mlir::Value b, ::mlir::Value c, ::mlir::Value index, uint32_t cbsz, uint32_t abid); static smfmac_f32_16x16x32_f16 create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::Value a, ::mlir::Value b, ::mlir::Value c, ::mlir::Value index, uint32_t cbsz, uint32_t abid); static smfmac_f32_16x16x32_f16 create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::Value a, ::mlir::Value b, ::mlir::Value c, ::mlir::Value index, uint32_t cbsz, uint32_t abid); static void build(::mlir::OpBuilder &, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, ::llvm::ArrayRef<::mlir::NamedAttribute> attributes = {}); static smfmac_f32_16x16x32_f16 create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, ::llvm::ArrayRef<::mlir::NamedAttribute> attributes = {}); static smfmac_f32_16x16x32_f16 create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, ::llvm::ArrayRef<::mlir::NamedAttribute> attributes = {}); static void build(::mlir::OpBuilder &, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, const Properties &properties, ::llvm::ArrayRef<::mlir::NamedAttribute> discardableAttributes = {}); static smfmac_f32_16x16x32_f16 create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, const Properties &properties, ::llvm::ArrayRef<::mlir::NamedAttribute> discardableAttributes = {}); static smfmac_f32_16x16x32_f16 create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, const Properties &properties, ::llvm::ArrayRef<::mlir::NamedAttribute> discardableAttributes = {}); ::llvm::LogicalResult verifyInvariantsImpl(); ::llvm::LogicalResult verifyInvariants(); static ::mlir::ParseResult parse(::mlir::OpAsmParser &parser, ::mlir::OperationState &result); void print(::mlir::OpAsmPrinter &_odsPrinter); private: ::mlir::StringAttr getAttributeNameForIndex(unsigned index) { return getAttributeNameForIndex((*this)->getName(), index); } static ::mlir::StringAttr getAttributeNameForIndex(::mlir::OperationName name, unsigned index) { assert(index < 2 && "invalid attribute index"); assert(name.getStringRef() == getOperationName() && "invalid operation name"); assert(name.isRegistered() && "Operation isn't registered, missing a " "dependent dialect loading?"); return name.getAttributeNames()[index]; } public: }; } // namespace mlir::ROCDL MLIR_DECLARE_EXPLICIT_TYPE_ID(::mlir::ROCDL::smfmac_f32_16x16x32_f16) MLIR_DECLARE_EXPLICIT_TYPE_ID(::mlir::ROCDL::detail::smfmac_f32_16x16x32_f16GenericAdaptorBase::Properties) namespace mlir::ROCDL { //===----------------------------------------------------------------------===// // ::mlir::ROCDL::smfmac_f32_16x16x64_bf16 declarations //===----------------------------------------------------------------------===// namespace detail { class smfmac_f32_16x16x64_bf16GenericAdaptorBase { public: struct Properties { using abidTy = ::mlir::IntegerAttr; abidTy abid; auto getAbid() const { auto &propStorage = this->abid; return ::llvm::cast<::mlir::IntegerAttr>(propStorage); } void setAbid(const ::mlir::IntegerAttr &propValue) { this->abid = propValue; } using cbszTy = ::mlir::IntegerAttr; cbszTy cbsz; auto getCbsz() const { auto &propStorage = this->cbsz; return ::llvm::cast<::mlir::IntegerAttr>(propStorage); } void setCbsz(const ::mlir::IntegerAttr &propValue) { this->cbsz = propValue; } bool operator==(const Properties &rhs) const { return rhs.abid == this->abid && rhs.cbsz == this->cbsz && true; } bool operator!=(const Properties &rhs) const { return !(*this == rhs); } }; protected: ::mlir::DictionaryAttr odsAttrs; ::std::optional<::mlir::OperationName> odsOpName; Properties properties; ::mlir::RegionRange odsRegions; public: smfmac_f32_16x16x64_bf16GenericAdaptorBase(::mlir::DictionaryAttr attrs, const Properties &properties, ::mlir::RegionRange regions = {}) : odsAttrs(attrs), properties(properties), odsRegions(regions) { if (odsAttrs) odsOpName.emplace("rocdl.smfmac.f32.16x16x64.bf16", odsAttrs.getContext()); } smfmac_f32_16x16x64_bf16GenericAdaptorBase(smfmac_f32_16x16x64_bf16 op); std::pair getODSOperandIndexAndLength(unsigned index, unsigned odsOperandsSize) { return {index, 1}; } const Properties &getProperties() { return properties; } ::mlir::DictionaryAttr getAttributes() { return odsAttrs; } ::mlir::IntegerAttr getCbszAttr() { auto attr = ::llvm::cast<::mlir::IntegerAttr>(getProperties().cbsz); return attr; } uint32_t getCbsz(); ::mlir::IntegerAttr getAbidAttr() { auto attr = ::llvm::cast<::mlir::IntegerAttr>(getProperties().abid); return attr; } uint32_t getAbid(); }; } // namespace detail template class smfmac_f32_16x16x64_bf16GenericAdaptor : public detail::smfmac_f32_16x16x64_bf16GenericAdaptorBase { using ValueT = ::llvm::detail::ValueOfRange; using Base = detail::smfmac_f32_16x16x64_bf16GenericAdaptorBase; static constexpr int odsIndex_a = 0; static constexpr int odsIndex_b = 1; static constexpr int odsIndex_c = 2; static constexpr int odsIndex_index = 3; public: smfmac_f32_16x16x64_bf16GenericAdaptor(RangeT values, ::mlir::DictionaryAttr attrs, const Properties &properties, ::mlir::RegionRange regions = {}) : Base(attrs, properties, regions), odsOperands(values) {} smfmac_f32_16x16x64_bf16GenericAdaptor(RangeT values, ::mlir::DictionaryAttr attrs, ::mlir::PropertyRef properties, ::mlir::RegionRange regions = {}) : smfmac_f32_16x16x64_bf16GenericAdaptor(values, attrs, (properties ? *properties.as() : Properties{}), regions) {} smfmac_f32_16x16x64_bf16GenericAdaptor(RangeT values, ::mlir::DictionaryAttr attrs = nullptr) : smfmac_f32_16x16x64_bf16GenericAdaptor(values, attrs, Properties{}, {}) {} smfmac_f32_16x16x64_bf16GenericAdaptor(RangeT values, const smfmac_f32_16x16x64_bf16GenericAdaptorBase &base) : Base(base), odsOperands(values) {} template >> smfmac_f32_16x16x64_bf16GenericAdaptor(RangeT values, LateInst op) : Base(op), odsOperands(values) {} std::pair getODSOperandIndexAndLength(unsigned index) { return Base::getODSOperandIndexAndLength(index, odsOperands.size()); } RangeT getODSOperands(unsigned index) { auto valueRange = getODSOperandIndexAndLength(index); return {std::next(odsOperands.begin(), valueRange.first), std::next(odsOperands.begin(), valueRange.first + valueRange.second)}; } ValueT getA() { return (*getODSOperands(0).begin()); } ValueT getB() { return (*getODSOperands(1).begin()); } ValueT getC() { return (*getODSOperands(2).begin()); } ValueT getIndex() { return (*getODSOperands(3).begin()); } RangeT getOperands() { return odsOperands; } private: RangeT odsOperands; }; class smfmac_f32_16x16x64_bf16Adaptor : public smfmac_f32_16x16x64_bf16GenericAdaptor<::mlir::ValueRange> { public: using smfmac_f32_16x16x64_bf16GenericAdaptor::smfmac_f32_16x16x64_bf16GenericAdaptor; smfmac_f32_16x16x64_bf16Adaptor(smfmac_f32_16x16x64_bf16 op); ::llvm::LogicalResult verify(::mlir::Location loc); }; class smfmac_f32_16x16x64_bf16 : public ::mlir::Op::Impl, ::mlir::OpTrait::ZeroSuccessors, ::mlir::OpTrait::NOperands<4>::Impl, ::mlir::OpTrait::OpInvariants, ::mlir::BytecodeOpInterface::Trait> { public: using Op::Op; using Op::print; using Adaptor = smfmac_f32_16x16x64_bf16Adaptor; template using GenericAdaptor = smfmac_f32_16x16x64_bf16GenericAdaptor; using FoldAdaptor = GenericAdaptor<::llvm::ArrayRef<::mlir::Attribute>>; static constexpr int odsIndex_a = 0; static constexpr int odsIndex_b = 1; static constexpr int odsIndex_c = 2; static constexpr int odsIndex_index = 3; using Properties = FoldAdaptor::Properties; static ::llvm::ArrayRef<::llvm::StringRef> getAttributeNames() { static ::llvm::StringRef attrNames[] = {::llvm::StringRef("abid"), ::llvm::StringRef("cbsz")}; return ::llvm::ArrayRef(attrNames); } ::mlir::StringAttr getAbidAttrName() { return getAttributeNameForIndex(0); } static ::mlir::StringAttr getAbidAttrName(::mlir::OperationName name) { return getAttributeNameForIndex(name, 0); } ::mlir::StringAttr getCbszAttrName() { return getAttributeNameForIndex(1); } static ::mlir::StringAttr getCbszAttrName(::mlir::OperationName name) { return getAttributeNameForIndex(name, 1); } static constexpr ::llvm::StringLiteral getOperationName() { return ::llvm::StringLiteral("rocdl.smfmac.f32.16x16x64.bf16"); } std::pair getODSOperandIndexAndLength(unsigned index) { return {index, 1}; } ::mlir::Operation::operand_range getODSOperands(unsigned index) { auto valueRange = getODSOperandIndexAndLength(index); return {std::next(getOperation()->operand_begin(), valueRange.first), std::next(getOperation()->operand_begin(), valueRange.first + valueRange.second)}; } ::mlir::TypedValue<::mlir::VectorType> getA() { return ::llvm::cast<::mlir::TypedValue<::mlir::VectorType>>(*getODSOperands(0).begin()); } ::mlir::TypedValue<::mlir::VectorType> getB() { return ::llvm::cast<::mlir::TypedValue<::mlir::VectorType>>(*getODSOperands(1).begin()); } ::mlir::TypedValue<::mlir::VectorType> getC() { return ::llvm::cast<::mlir::TypedValue<::mlir::VectorType>>(*getODSOperands(2).begin()); } ::mlir::TypedValue<::mlir::IntegerType> getIndex() { return ::llvm::cast<::mlir::TypedValue<::mlir::IntegerType>>(*getODSOperands(3).begin()); } ::mlir::OpOperand &getAMutable() { auto range = getODSOperandIndexAndLength(0); return getOperation()->getOpOperand(range.first); } ::mlir::OpOperand &getBMutable() { auto range = getODSOperandIndexAndLength(1); return getOperation()->getOpOperand(range.first); } ::mlir::OpOperand &getCMutable() { auto range = getODSOperandIndexAndLength(2); return getOperation()->getOpOperand(range.first); } ::mlir::OpOperand &getIndexMutable() { auto range = getODSOperandIndexAndLength(3); return getOperation()->getOpOperand(range.first); } std::pair getODSResultIndexAndLength(unsigned index) { return {index, 1}; } ::mlir::Operation::result_range getODSResults(unsigned index) { auto valueRange = getODSResultIndexAndLength(index); return {std::next(getOperation()->result_begin(), valueRange.first), std::next(getOperation()->result_begin(), valueRange.first + valueRange.second)}; } ::mlir::TypedValue<::mlir::VectorType> getRes() { return ::llvm::cast<::mlir::TypedValue<::mlir::VectorType>>(*getODSResults(0).begin()); } static ::llvm::LogicalResult setPropertiesFromAttr(Properties &prop, ::mlir::Attribute attr, ::llvm::function_ref<::mlir::InFlightDiagnostic()> emitError); static ::mlir::Attribute getPropertiesAsAttr(::mlir::MLIRContext *ctx, const Properties &prop); static llvm::hash_code computePropertiesHash(const Properties &prop); static std::optional getInherentAttr(::mlir::MLIRContext *ctx, const Properties &prop, llvm::StringRef name); static void setInherentAttr(Properties &prop, llvm::StringRef name, mlir::Attribute value); static void populateInherentAttrs(::mlir::MLIRContext *ctx, const Properties &prop, ::mlir::NamedAttrList &attrs); static ::llvm::LogicalResult verifyInherentAttrs(::mlir::OperationName opName, ::mlir::NamedAttrList &attrs, llvm::function_ref<::mlir::InFlightDiagnostic()> emitError); static ::llvm::LogicalResult readProperties(::mlir::DialectBytecodeReader &reader, ::mlir::OperationState &state); void writeProperties(::mlir::DialectBytecodeWriter &writer); ::mlir::IntegerAttr getCbszAttr() { return ::llvm::cast<::mlir::IntegerAttr>(getProperties().cbsz); } uint32_t getCbsz(); ::mlir::IntegerAttr getAbidAttr() { return ::llvm::cast<::mlir::IntegerAttr>(getProperties().abid); } uint32_t getAbid(); void setCbszAttr(::mlir::IntegerAttr attr) { getProperties().cbsz = attr; } void setCbsz(uint32_t attrValue); void setAbidAttr(::mlir::IntegerAttr attr) { getProperties().abid = attr; } void setAbid(uint32_t attrValue); static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::Type res, ::mlir::Value a, ::mlir::Value b, ::mlir::Value c, ::mlir::Value index, ::mlir::IntegerAttr cbsz, ::mlir::IntegerAttr abid); static smfmac_f32_16x16x64_bf16 create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::Type res, ::mlir::Value a, ::mlir::Value b, ::mlir::Value c, ::mlir::Value index, ::mlir::IntegerAttr cbsz, ::mlir::IntegerAttr abid); static smfmac_f32_16x16x64_bf16 create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::Type res, ::mlir::Value a, ::mlir::Value b, ::mlir::Value c, ::mlir::Value index, ::mlir::IntegerAttr cbsz, ::mlir::IntegerAttr abid); static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::Value a, ::mlir::Value b, ::mlir::Value c, ::mlir::Value index, ::mlir::IntegerAttr cbsz, ::mlir::IntegerAttr abid); static smfmac_f32_16x16x64_bf16 create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::Value a, ::mlir::Value b, ::mlir::Value c, ::mlir::Value index, ::mlir::IntegerAttr cbsz, ::mlir::IntegerAttr abid); static smfmac_f32_16x16x64_bf16 create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::Value a, ::mlir::Value b, ::mlir::Value c, ::mlir::Value index, ::mlir::IntegerAttr cbsz, ::mlir::IntegerAttr abid); static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::Type res, ::mlir::Value a, ::mlir::Value b, ::mlir::Value c, ::mlir::Value index, uint32_t cbsz, uint32_t abid); static smfmac_f32_16x16x64_bf16 create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::Type res, ::mlir::Value a, ::mlir::Value b, ::mlir::Value c, ::mlir::Value index, uint32_t cbsz, uint32_t abid); static smfmac_f32_16x16x64_bf16 create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::Type res, ::mlir::Value a, ::mlir::Value b, ::mlir::Value c, ::mlir::Value index, uint32_t cbsz, uint32_t abid); static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::Value a, ::mlir::Value b, ::mlir::Value c, ::mlir::Value index, uint32_t cbsz, uint32_t abid); static smfmac_f32_16x16x64_bf16 create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::Value a, ::mlir::Value b, ::mlir::Value c, ::mlir::Value index, uint32_t cbsz, uint32_t abid); static smfmac_f32_16x16x64_bf16 create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::Value a, ::mlir::Value b, ::mlir::Value c, ::mlir::Value index, uint32_t cbsz, uint32_t abid); static void build(::mlir::OpBuilder &, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, ::llvm::ArrayRef<::mlir::NamedAttribute> attributes = {}); static smfmac_f32_16x16x64_bf16 create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, ::llvm::ArrayRef<::mlir::NamedAttribute> attributes = {}); static smfmac_f32_16x16x64_bf16 create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, ::llvm::ArrayRef<::mlir::NamedAttribute> attributes = {}); static void build(::mlir::OpBuilder &, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, const Properties &properties, ::llvm::ArrayRef<::mlir::NamedAttribute> discardableAttributes = {}); static smfmac_f32_16x16x64_bf16 create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, const Properties &properties, ::llvm::ArrayRef<::mlir::NamedAttribute> discardableAttributes = {}); static smfmac_f32_16x16x64_bf16 create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, const Properties &properties, ::llvm::ArrayRef<::mlir::NamedAttribute> discardableAttributes = {}); ::llvm::LogicalResult verifyInvariantsImpl(); ::llvm::LogicalResult verifyInvariants(); static ::mlir::ParseResult parse(::mlir::OpAsmParser &parser, ::mlir::OperationState &result); void print(::mlir::OpAsmPrinter &_odsPrinter); private: ::mlir::StringAttr getAttributeNameForIndex(unsigned index) { return getAttributeNameForIndex((*this)->getName(), index); } static ::mlir::StringAttr getAttributeNameForIndex(::mlir::OperationName name, unsigned index) { assert(index < 2 && "invalid attribute index"); assert(name.getStringRef() == getOperationName() && "invalid operation name"); assert(name.isRegistered() && "Operation isn't registered, missing a " "dependent dialect loading?"); return name.getAttributeNames()[index]; } public: }; } // namespace mlir::ROCDL MLIR_DECLARE_EXPLICIT_TYPE_ID(::mlir::ROCDL::smfmac_f32_16x16x64_bf16) MLIR_DECLARE_EXPLICIT_TYPE_ID(::mlir::ROCDL::detail::smfmac_f32_16x16x64_bf16GenericAdaptorBase::Properties) namespace mlir::ROCDL { //===----------------------------------------------------------------------===// // ::mlir::ROCDL::smfmac_f32_16x16x64_bf8_bf8 declarations //===----------------------------------------------------------------------===// namespace detail { class smfmac_f32_16x16x64_bf8_bf8GenericAdaptorBase { public: struct Properties { using abidTy = ::mlir::IntegerAttr; abidTy abid; auto getAbid() const { auto &propStorage = this->abid; return ::llvm::cast<::mlir::IntegerAttr>(propStorage); } void setAbid(const ::mlir::IntegerAttr &propValue) { this->abid = propValue; } using cbszTy = ::mlir::IntegerAttr; cbszTy cbsz; auto getCbsz() const { auto &propStorage = this->cbsz; return ::llvm::cast<::mlir::IntegerAttr>(propStorage); } void setCbsz(const ::mlir::IntegerAttr &propValue) { this->cbsz = propValue; } bool operator==(const Properties &rhs) const { return rhs.abid == this->abid && rhs.cbsz == this->cbsz && true; } bool operator!=(const Properties &rhs) const { return !(*this == rhs); } }; protected: ::mlir::DictionaryAttr odsAttrs; ::std::optional<::mlir::OperationName> odsOpName; Properties properties; ::mlir::RegionRange odsRegions; public: smfmac_f32_16x16x64_bf8_bf8GenericAdaptorBase(::mlir::DictionaryAttr attrs, const Properties &properties, ::mlir::RegionRange regions = {}) : odsAttrs(attrs), properties(properties), odsRegions(regions) { if (odsAttrs) odsOpName.emplace("rocdl.smfmac.f32.16x16x64.bf8.bf8", odsAttrs.getContext()); } smfmac_f32_16x16x64_bf8_bf8GenericAdaptorBase(smfmac_f32_16x16x64_bf8_bf8 op); std::pair getODSOperandIndexAndLength(unsigned index, unsigned odsOperandsSize) { return {index, 1}; } const Properties &getProperties() { return properties; } ::mlir::DictionaryAttr getAttributes() { return odsAttrs; } ::mlir::IntegerAttr getCbszAttr() { auto attr = ::llvm::cast<::mlir::IntegerAttr>(getProperties().cbsz); return attr; } uint32_t getCbsz(); ::mlir::IntegerAttr getAbidAttr() { auto attr = ::llvm::cast<::mlir::IntegerAttr>(getProperties().abid); return attr; } uint32_t getAbid(); }; } // namespace detail template class smfmac_f32_16x16x64_bf8_bf8GenericAdaptor : public detail::smfmac_f32_16x16x64_bf8_bf8GenericAdaptorBase { using ValueT = ::llvm::detail::ValueOfRange; using Base = detail::smfmac_f32_16x16x64_bf8_bf8GenericAdaptorBase; static constexpr int odsIndex_a = 0; static constexpr int odsIndex_b = 1; static constexpr int odsIndex_c = 2; static constexpr int odsIndex_index = 3; public: smfmac_f32_16x16x64_bf8_bf8GenericAdaptor(RangeT values, ::mlir::DictionaryAttr attrs, const Properties &properties, ::mlir::RegionRange regions = {}) : Base(attrs, properties, regions), odsOperands(values) {} smfmac_f32_16x16x64_bf8_bf8GenericAdaptor(RangeT values, ::mlir::DictionaryAttr attrs, ::mlir::PropertyRef properties, ::mlir::RegionRange regions = {}) : smfmac_f32_16x16x64_bf8_bf8GenericAdaptor(values, attrs, (properties ? *properties.as() : Properties{}), regions) {} smfmac_f32_16x16x64_bf8_bf8GenericAdaptor(RangeT values, ::mlir::DictionaryAttr attrs = nullptr) : smfmac_f32_16x16x64_bf8_bf8GenericAdaptor(values, attrs, Properties{}, {}) {} smfmac_f32_16x16x64_bf8_bf8GenericAdaptor(RangeT values, const smfmac_f32_16x16x64_bf8_bf8GenericAdaptorBase &base) : Base(base), odsOperands(values) {} template >> smfmac_f32_16x16x64_bf8_bf8GenericAdaptor(RangeT values, LateInst op) : Base(op), odsOperands(values) {} std::pair getODSOperandIndexAndLength(unsigned index) { return Base::getODSOperandIndexAndLength(index, odsOperands.size()); } RangeT getODSOperands(unsigned index) { auto valueRange = getODSOperandIndexAndLength(index); return {std::next(odsOperands.begin(), valueRange.first), std::next(odsOperands.begin(), valueRange.first + valueRange.second)}; } ValueT getA() { return (*getODSOperands(0).begin()); } ValueT getB() { return (*getODSOperands(1).begin()); } ValueT getC() { return (*getODSOperands(2).begin()); } ValueT getIndex() { return (*getODSOperands(3).begin()); } RangeT getOperands() { return odsOperands; } private: RangeT odsOperands; }; class smfmac_f32_16x16x64_bf8_bf8Adaptor : public smfmac_f32_16x16x64_bf8_bf8GenericAdaptor<::mlir::ValueRange> { public: using smfmac_f32_16x16x64_bf8_bf8GenericAdaptor::smfmac_f32_16x16x64_bf8_bf8GenericAdaptor; smfmac_f32_16x16x64_bf8_bf8Adaptor(smfmac_f32_16x16x64_bf8_bf8 op); ::llvm::LogicalResult verify(::mlir::Location loc); }; class smfmac_f32_16x16x64_bf8_bf8 : public ::mlir::Op::Impl, ::mlir::OpTrait::ZeroSuccessors, ::mlir::OpTrait::NOperands<4>::Impl, ::mlir::OpTrait::OpInvariants, ::mlir::BytecodeOpInterface::Trait> { public: using Op::Op; using Op::print; using Adaptor = smfmac_f32_16x16x64_bf8_bf8Adaptor; template using GenericAdaptor = smfmac_f32_16x16x64_bf8_bf8GenericAdaptor; using FoldAdaptor = GenericAdaptor<::llvm::ArrayRef<::mlir::Attribute>>; static constexpr int odsIndex_a = 0; static constexpr int odsIndex_b = 1; static constexpr int odsIndex_c = 2; static constexpr int odsIndex_index = 3; using Properties = FoldAdaptor::Properties; static ::llvm::ArrayRef<::llvm::StringRef> getAttributeNames() { static ::llvm::StringRef attrNames[] = {::llvm::StringRef("abid"), ::llvm::StringRef("cbsz")}; return ::llvm::ArrayRef(attrNames); } ::mlir::StringAttr getAbidAttrName() { return getAttributeNameForIndex(0); } static ::mlir::StringAttr getAbidAttrName(::mlir::OperationName name) { return getAttributeNameForIndex(name, 0); } ::mlir::StringAttr getCbszAttrName() { return getAttributeNameForIndex(1); } static ::mlir::StringAttr getCbszAttrName(::mlir::OperationName name) { return getAttributeNameForIndex(name, 1); } static constexpr ::llvm::StringLiteral getOperationName() { return ::llvm::StringLiteral("rocdl.smfmac.f32.16x16x64.bf8.bf8"); } std::pair getODSOperandIndexAndLength(unsigned index) { return {index, 1}; } ::mlir::Operation::operand_range getODSOperands(unsigned index) { auto valueRange = getODSOperandIndexAndLength(index); return {std::next(getOperation()->operand_begin(), valueRange.first), std::next(getOperation()->operand_begin(), valueRange.first + valueRange.second)}; } ::mlir::TypedValue<::mlir::VectorType> getA() { return ::llvm::cast<::mlir::TypedValue<::mlir::VectorType>>(*getODSOperands(0).begin()); } ::mlir::TypedValue<::mlir::VectorType> getB() { return ::llvm::cast<::mlir::TypedValue<::mlir::VectorType>>(*getODSOperands(1).begin()); } ::mlir::TypedValue<::mlir::VectorType> getC() { return ::llvm::cast<::mlir::TypedValue<::mlir::VectorType>>(*getODSOperands(2).begin()); } ::mlir::TypedValue<::mlir::IntegerType> getIndex() { return ::llvm::cast<::mlir::TypedValue<::mlir::IntegerType>>(*getODSOperands(3).begin()); } ::mlir::OpOperand &getAMutable() { auto range = getODSOperandIndexAndLength(0); return getOperation()->getOpOperand(range.first); } ::mlir::OpOperand &getBMutable() { auto range = getODSOperandIndexAndLength(1); return getOperation()->getOpOperand(range.first); } ::mlir::OpOperand &getCMutable() { auto range = getODSOperandIndexAndLength(2); return getOperation()->getOpOperand(range.first); } ::mlir::OpOperand &getIndexMutable() { auto range = getODSOperandIndexAndLength(3); return getOperation()->getOpOperand(range.first); } std::pair getODSResultIndexAndLength(unsigned index) { return {index, 1}; } ::mlir::Operation::result_range getODSResults(unsigned index) { auto valueRange = getODSResultIndexAndLength(index); return {std::next(getOperation()->result_begin(), valueRange.first), std::next(getOperation()->result_begin(), valueRange.first + valueRange.second)}; } ::mlir::TypedValue<::mlir::VectorType> getRes() { return ::llvm::cast<::mlir::TypedValue<::mlir::VectorType>>(*getODSResults(0).begin()); } static ::llvm::LogicalResult setPropertiesFromAttr(Properties &prop, ::mlir::Attribute attr, ::llvm::function_ref<::mlir::InFlightDiagnostic()> emitError); static ::mlir::Attribute getPropertiesAsAttr(::mlir::MLIRContext *ctx, const Properties &prop); static llvm::hash_code computePropertiesHash(const Properties &prop); static std::optional getInherentAttr(::mlir::MLIRContext *ctx, const Properties &prop, llvm::StringRef name); static void setInherentAttr(Properties &prop, llvm::StringRef name, mlir::Attribute value); static void populateInherentAttrs(::mlir::MLIRContext *ctx, const Properties &prop, ::mlir::NamedAttrList &attrs); static ::llvm::LogicalResult verifyInherentAttrs(::mlir::OperationName opName, ::mlir::NamedAttrList &attrs, llvm::function_ref<::mlir::InFlightDiagnostic()> emitError); static ::llvm::LogicalResult readProperties(::mlir::DialectBytecodeReader &reader, ::mlir::OperationState &state); void writeProperties(::mlir::DialectBytecodeWriter &writer); ::mlir::IntegerAttr getCbszAttr() { return ::llvm::cast<::mlir::IntegerAttr>(getProperties().cbsz); } uint32_t getCbsz(); ::mlir::IntegerAttr getAbidAttr() { return ::llvm::cast<::mlir::IntegerAttr>(getProperties().abid); } uint32_t getAbid(); void setCbszAttr(::mlir::IntegerAttr attr) { getProperties().cbsz = attr; } void setCbsz(uint32_t attrValue); void setAbidAttr(::mlir::IntegerAttr attr) { getProperties().abid = attr; } void setAbid(uint32_t attrValue); static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::Type res, ::mlir::Value a, ::mlir::Value b, ::mlir::Value c, ::mlir::Value index, ::mlir::IntegerAttr cbsz, ::mlir::IntegerAttr abid); static smfmac_f32_16x16x64_bf8_bf8 create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::Type res, ::mlir::Value a, ::mlir::Value b, ::mlir::Value c, ::mlir::Value index, ::mlir::IntegerAttr cbsz, ::mlir::IntegerAttr abid); static smfmac_f32_16x16x64_bf8_bf8 create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::Type res, ::mlir::Value a, ::mlir::Value b, ::mlir::Value c, ::mlir::Value index, ::mlir::IntegerAttr cbsz, ::mlir::IntegerAttr abid); static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::Value a, ::mlir::Value b, ::mlir::Value c, ::mlir::Value index, ::mlir::IntegerAttr cbsz, ::mlir::IntegerAttr abid); static smfmac_f32_16x16x64_bf8_bf8 create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::Value a, ::mlir::Value b, ::mlir::Value c, ::mlir::Value index, ::mlir::IntegerAttr cbsz, ::mlir::IntegerAttr abid); static smfmac_f32_16x16x64_bf8_bf8 create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::Value a, ::mlir::Value b, ::mlir::Value c, ::mlir::Value index, ::mlir::IntegerAttr cbsz, ::mlir::IntegerAttr abid); static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::Type res, ::mlir::Value a, ::mlir::Value b, ::mlir::Value c, ::mlir::Value index, uint32_t cbsz, uint32_t abid); static smfmac_f32_16x16x64_bf8_bf8 create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::Type res, ::mlir::Value a, ::mlir::Value b, ::mlir::Value c, ::mlir::Value index, uint32_t cbsz, uint32_t abid); static smfmac_f32_16x16x64_bf8_bf8 create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::Type res, ::mlir::Value a, ::mlir::Value b, ::mlir::Value c, ::mlir::Value index, uint32_t cbsz, uint32_t abid); static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::Value a, ::mlir::Value b, ::mlir::Value c, ::mlir::Value index, uint32_t cbsz, uint32_t abid); static smfmac_f32_16x16x64_bf8_bf8 create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::Value a, ::mlir::Value b, ::mlir::Value c, ::mlir::Value index, uint32_t cbsz, uint32_t abid); static smfmac_f32_16x16x64_bf8_bf8 create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::Value a, ::mlir::Value b, ::mlir::Value c, ::mlir::Value index, uint32_t cbsz, uint32_t abid); static void build(::mlir::OpBuilder &, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, ::llvm::ArrayRef<::mlir::NamedAttribute> attributes = {}); static smfmac_f32_16x16x64_bf8_bf8 create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, ::llvm::ArrayRef<::mlir::NamedAttribute> attributes = {}); static smfmac_f32_16x16x64_bf8_bf8 create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, ::llvm::ArrayRef<::mlir::NamedAttribute> attributes = {}); static void build(::mlir::OpBuilder &, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, const Properties &properties, ::llvm::ArrayRef<::mlir::NamedAttribute> discardableAttributes = {}); static smfmac_f32_16x16x64_bf8_bf8 create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, const Properties &properties, ::llvm::ArrayRef<::mlir::NamedAttribute> discardableAttributes = {}); static smfmac_f32_16x16x64_bf8_bf8 create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, const Properties &properties, ::llvm::ArrayRef<::mlir::NamedAttribute> discardableAttributes = {}); ::llvm::LogicalResult verifyInvariantsImpl(); ::llvm::LogicalResult verifyInvariants(); static ::mlir::ParseResult parse(::mlir::OpAsmParser &parser, ::mlir::OperationState &result); void print(::mlir::OpAsmPrinter &_odsPrinter); private: ::mlir::StringAttr getAttributeNameForIndex(unsigned index) { return getAttributeNameForIndex((*this)->getName(), index); } static ::mlir::StringAttr getAttributeNameForIndex(::mlir::OperationName name, unsigned index) { assert(index < 2 && "invalid attribute index"); assert(name.getStringRef() == getOperationName() && "invalid operation name"); assert(name.isRegistered() && "Operation isn't registered, missing a " "dependent dialect loading?"); return name.getAttributeNames()[index]; } public: }; } // namespace mlir::ROCDL MLIR_DECLARE_EXPLICIT_TYPE_ID(::mlir::ROCDL::smfmac_f32_16x16x64_bf8_bf8) MLIR_DECLARE_EXPLICIT_TYPE_ID(::mlir::ROCDL::detail::smfmac_f32_16x16x64_bf8_bf8GenericAdaptorBase::Properties) namespace mlir::ROCDL { //===----------------------------------------------------------------------===// // ::mlir::ROCDL::smfmac_f32_16x16x64_bf8_fp8 declarations //===----------------------------------------------------------------------===// namespace detail { class smfmac_f32_16x16x64_bf8_fp8GenericAdaptorBase { public: struct Properties { using abidTy = ::mlir::IntegerAttr; abidTy abid; auto getAbid() const { auto &propStorage = this->abid; return ::llvm::cast<::mlir::IntegerAttr>(propStorage); } void setAbid(const ::mlir::IntegerAttr &propValue) { this->abid = propValue; } using cbszTy = ::mlir::IntegerAttr; cbszTy cbsz; auto getCbsz() const { auto &propStorage = this->cbsz; return ::llvm::cast<::mlir::IntegerAttr>(propStorage); } void setCbsz(const ::mlir::IntegerAttr &propValue) { this->cbsz = propValue; } bool operator==(const Properties &rhs) const { return rhs.abid == this->abid && rhs.cbsz == this->cbsz && true; } bool operator!=(const Properties &rhs) const { return !(*this == rhs); } }; protected: ::mlir::DictionaryAttr odsAttrs; ::std::optional<::mlir::OperationName> odsOpName; Properties properties; ::mlir::RegionRange odsRegions; public: smfmac_f32_16x16x64_bf8_fp8GenericAdaptorBase(::mlir::DictionaryAttr attrs, const Properties &properties, ::mlir::RegionRange regions = {}) : odsAttrs(attrs), properties(properties), odsRegions(regions) { if (odsAttrs) odsOpName.emplace("rocdl.smfmac.f32.16x16x64.bf8.fp8", odsAttrs.getContext()); } smfmac_f32_16x16x64_bf8_fp8GenericAdaptorBase(smfmac_f32_16x16x64_bf8_fp8 op); std::pair getODSOperandIndexAndLength(unsigned index, unsigned odsOperandsSize) { return {index, 1}; } const Properties &getProperties() { return properties; } ::mlir::DictionaryAttr getAttributes() { return odsAttrs; } ::mlir::IntegerAttr getCbszAttr() { auto attr = ::llvm::cast<::mlir::IntegerAttr>(getProperties().cbsz); return attr; } uint32_t getCbsz(); ::mlir::IntegerAttr getAbidAttr() { auto attr = ::llvm::cast<::mlir::IntegerAttr>(getProperties().abid); return attr; } uint32_t getAbid(); }; } // namespace detail template class smfmac_f32_16x16x64_bf8_fp8GenericAdaptor : public detail::smfmac_f32_16x16x64_bf8_fp8GenericAdaptorBase { using ValueT = ::llvm::detail::ValueOfRange; using Base = detail::smfmac_f32_16x16x64_bf8_fp8GenericAdaptorBase; static constexpr int odsIndex_a = 0; static constexpr int odsIndex_b = 1; static constexpr int odsIndex_c = 2; static constexpr int odsIndex_index = 3; public: smfmac_f32_16x16x64_bf8_fp8GenericAdaptor(RangeT values, ::mlir::DictionaryAttr attrs, const Properties &properties, ::mlir::RegionRange regions = {}) : Base(attrs, properties, regions), odsOperands(values) {} smfmac_f32_16x16x64_bf8_fp8GenericAdaptor(RangeT values, ::mlir::DictionaryAttr attrs, ::mlir::PropertyRef properties, ::mlir::RegionRange regions = {}) : smfmac_f32_16x16x64_bf8_fp8GenericAdaptor(values, attrs, (properties ? *properties.as() : Properties{}), regions) {} smfmac_f32_16x16x64_bf8_fp8GenericAdaptor(RangeT values, ::mlir::DictionaryAttr attrs = nullptr) : smfmac_f32_16x16x64_bf8_fp8GenericAdaptor(values, attrs, Properties{}, {}) {} smfmac_f32_16x16x64_bf8_fp8GenericAdaptor(RangeT values, const smfmac_f32_16x16x64_bf8_fp8GenericAdaptorBase &base) : Base(base), odsOperands(values) {} template >> smfmac_f32_16x16x64_bf8_fp8GenericAdaptor(RangeT values, LateInst op) : Base(op), odsOperands(values) {} std::pair getODSOperandIndexAndLength(unsigned index) { return Base::getODSOperandIndexAndLength(index, odsOperands.size()); } RangeT getODSOperands(unsigned index) { auto valueRange = getODSOperandIndexAndLength(index); return {std::next(odsOperands.begin(), valueRange.first), std::next(odsOperands.begin(), valueRange.first + valueRange.second)}; } ValueT getA() { return (*getODSOperands(0).begin()); } ValueT getB() { return (*getODSOperands(1).begin()); } ValueT getC() { return (*getODSOperands(2).begin()); } ValueT getIndex() { return (*getODSOperands(3).begin()); } RangeT getOperands() { return odsOperands; } private: RangeT odsOperands; }; class smfmac_f32_16x16x64_bf8_fp8Adaptor : public smfmac_f32_16x16x64_bf8_fp8GenericAdaptor<::mlir::ValueRange> { public: using smfmac_f32_16x16x64_bf8_fp8GenericAdaptor::smfmac_f32_16x16x64_bf8_fp8GenericAdaptor; smfmac_f32_16x16x64_bf8_fp8Adaptor(smfmac_f32_16x16x64_bf8_fp8 op); ::llvm::LogicalResult verify(::mlir::Location loc); }; class smfmac_f32_16x16x64_bf8_fp8 : public ::mlir::Op::Impl, ::mlir::OpTrait::ZeroSuccessors, ::mlir::OpTrait::NOperands<4>::Impl, ::mlir::OpTrait::OpInvariants, ::mlir::BytecodeOpInterface::Trait> { public: using Op::Op; using Op::print; using Adaptor = smfmac_f32_16x16x64_bf8_fp8Adaptor; template using GenericAdaptor = smfmac_f32_16x16x64_bf8_fp8GenericAdaptor; using FoldAdaptor = GenericAdaptor<::llvm::ArrayRef<::mlir::Attribute>>; static constexpr int odsIndex_a = 0; static constexpr int odsIndex_b = 1; static constexpr int odsIndex_c = 2; static constexpr int odsIndex_index = 3; using Properties = FoldAdaptor::Properties; static ::llvm::ArrayRef<::llvm::StringRef> getAttributeNames() { static ::llvm::StringRef attrNames[] = {::llvm::StringRef("abid"), ::llvm::StringRef("cbsz")}; return ::llvm::ArrayRef(attrNames); } ::mlir::StringAttr getAbidAttrName() { return getAttributeNameForIndex(0); } static ::mlir::StringAttr getAbidAttrName(::mlir::OperationName name) { return getAttributeNameForIndex(name, 0); } ::mlir::StringAttr getCbszAttrName() { return getAttributeNameForIndex(1); } static ::mlir::StringAttr getCbszAttrName(::mlir::OperationName name) { return getAttributeNameForIndex(name, 1); } static constexpr ::llvm::StringLiteral getOperationName() { return ::llvm::StringLiteral("rocdl.smfmac.f32.16x16x64.bf8.fp8"); } std::pair getODSOperandIndexAndLength(unsigned index) { return {index, 1}; } ::mlir::Operation::operand_range getODSOperands(unsigned index) { auto valueRange = getODSOperandIndexAndLength(index); return {std::next(getOperation()->operand_begin(), valueRange.first), std::next(getOperation()->operand_begin(), valueRange.first + valueRange.second)}; } ::mlir::TypedValue<::mlir::VectorType> getA() { return ::llvm::cast<::mlir::TypedValue<::mlir::VectorType>>(*getODSOperands(0).begin()); } ::mlir::TypedValue<::mlir::VectorType> getB() { return ::llvm::cast<::mlir::TypedValue<::mlir::VectorType>>(*getODSOperands(1).begin()); } ::mlir::TypedValue<::mlir::VectorType> getC() { return ::llvm::cast<::mlir::TypedValue<::mlir::VectorType>>(*getODSOperands(2).begin()); } ::mlir::TypedValue<::mlir::IntegerType> getIndex() { return ::llvm::cast<::mlir::TypedValue<::mlir::IntegerType>>(*getODSOperands(3).begin()); } ::mlir::OpOperand &getAMutable() { auto range = getODSOperandIndexAndLength(0); return getOperation()->getOpOperand(range.first); } ::mlir::OpOperand &getBMutable() { auto range = getODSOperandIndexAndLength(1); return getOperation()->getOpOperand(range.first); } ::mlir::OpOperand &getCMutable() { auto range = getODSOperandIndexAndLength(2); return getOperation()->getOpOperand(range.first); } ::mlir::OpOperand &getIndexMutable() { auto range = getODSOperandIndexAndLength(3); return getOperation()->getOpOperand(range.first); } std::pair getODSResultIndexAndLength(unsigned index) { return {index, 1}; } ::mlir::Operation::result_range getODSResults(unsigned index) { auto valueRange = getODSResultIndexAndLength(index); return {std::next(getOperation()->result_begin(), valueRange.first), std::next(getOperation()->result_begin(), valueRange.first + valueRange.second)}; } ::mlir::TypedValue<::mlir::VectorType> getRes() { return ::llvm::cast<::mlir::TypedValue<::mlir::VectorType>>(*getODSResults(0).begin()); } static ::llvm::LogicalResult setPropertiesFromAttr(Properties &prop, ::mlir::Attribute attr, ::llvm::function_ref<::mlir::InFlightDiagnostic()> emitError); static ::mlir::Attribute getPropertiesAsAttr(::mlir::MLIRContext *ctx, const Properties &prop); static llvm::hash_code computePropertiesHash(const Properties &prop); static std::optional getInherentAttr(::mlir::MLIRContext *ctx, const Properties &prop, llvm::StringRef name); static void setInherentAttr(Properties &prop, llvm::StringRef name, mlir::Attribute value); static void populateInherentAttrs(::mlir::MLIRContext *ctx, const Properties &prop, ::mlir::NamedAttrList &attrs); static ::llvm::LogicalResult verifyInherentAttrs(::mlir::OperationName opName, ::mlir::NamedAttrList &attrs, llvm::function_ref<::mlir::InFlightDiagnostic()> emitError); static ::llvm::LogicalResult readProperties(::mlir::DialectBytecodeReader &reader, ::mlir::OperationState &state); void writeProperties(::mlir::DialectBytecodeWriter &writer); ::mlir::IntegerAttr getCbszAttr() { return ::llvm::cast<::mlir::IntegerAttr>(getProperties().cbsz); } uint32_t getCbsz(); ::mlir::IntegerAttr getAbidAttr() { return ::llvm::cast<::mlir::IntegerAttr>(getProperties().abid); } uint32_t getAbid(); void setCbszAttr(::mlir::IntegerAttr attr) { getProperties().cbsz = attr; } void setCbsz(uint32_t attrValue); void setAbidAttr(::mlir::IntegerAttr attr) { getProperties().abid = attr; } void setAbid(uint32_t attrValue); static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::Type res, ::mlir::Value a, ::mlir::Value b, ::mlir::Value c, ::mlir::Value index, ::mlir::IntegerAttr cbsz, ::mlir::IntegerAttr abid); static smfmac_f32_16x16x64_bf8_fp8 create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::Type res, ::mlir::Value a, ::mlir::Value b, ::mlir::Value c, ::mlir::Value index, ::mlir::IntegerAttr cbsz, ::mlir::IntegerAttr abid); static smfmac_f32_16x16x64_bf8_fp8 create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::Type res, ::mlir::Value a, ::mlir::Value b, ::mlir::Value c, ::mlir::Value index, ::mlir::IntegerAttr cbsz, ::mlir::IntegerAttr abid); static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::Value a, ::mlir::Value b, ::mlir::Value c, ::mlir::Value index, ::mlir::IntegerAttr cbsz, ::mlir::IntegerAttr abid); static smfmac_f32_16x16x64_bf8_fp8 create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::Value a, ::mlir::Value b, ::mlir::Value c, ::mlir::Value index, ::mlir::IntegerAttr cbsz, ::mlir::IntegerAttr abid); static smfmac_f32_16x16x64_bf8_fp8 create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::Value a, ::mlir::Value b, ::mlir::Value c, ::mlir::Value index, ::mlir::IntegerAttr cbsz, ::mlir::IntegerAttr abid); static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::Type res, ::mlir::Value a, ::mlir::Value b, ::mlir::Value c, ::mlir::Value index, uint32_t cbsz, uint32_t abid); static smfmac_f32_16x16x64_bf8_fp8 create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::Type res, ::mlir::Value a, ::mlir::Value b, ::mlir::Value c, ::mlir::Value index, uint32_t cbsz, uint32_t abid); static smfmac_f32_16x16x64_bf8_fp8 create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::Type res, ::mlir::Value a, ::mlir::Value b, ::mlir::Value c, ::mlir::Value index, uint32_t cbsz, uint32_t abid); static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::Value a, ::mlir::Value b, ::mlir::Value c, ::mlir::Value index, uint32_t cbsz, uint32_t abid); static smfmac_f32_16x16x64_bf8_fp8 create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::Value a, ::mlir::Value b, ::mlir::Value c, ::mlir::Value index, uint32_t cbsz, uint32_t abid); static smfmac_f32_16x16x64_bf8_fp8 create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::Value a, ::mlir::Value b, ::mlir::Value c, ::mlir::Value index, uint32_t cbsz, uint32_t abid); static void build(::mlir::OpBuilder &, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, ::llvm::ArrayRef<::mlir::NamedAttribute> attributes = {}); static smfmac_f32_16x16x64_bf8_fp8 create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, ::llvm::ArrayRef<::mlir::NamedAttribute> attributes = {}); static smfmac_f32_16x16x64_bf8_fp8 create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, ::llvm::ArrayRef<::mlir::NamedAttribute> attributes = {}); static void build(::mlir::OpBuilder &, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, const Properties &properties, ::llvm::ArrayRef<::mlir::NamedAttribute> discardableAttributes = {}); static smfmac_f32_16x16x64_bf8_fp8 create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, const Properties &properties, ::llvm::ArrayRef<::mlir::NamedAttribute> discardableAttributes = {}); static smfmac_f32_16x16x64_bf8_fp8 create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, const Properties &properties, ::llvm::ArrayRef<::mlir::NamedAttribute> discardableAttributes = {}); ::llvm::LogicalResult verifyInvariantsImpl(); ::llvm::LogicalResult verifyInvariants(); static ::mlir::ParseResult parse(::mlir::OpAsmParser &parser, ::mlir::OperationState &result); void print(::mlir::OpAsmPrinter &_odsPrinter); private: ::mlir::StringAttr getAttributeNameForIndex(unsigned index) { return getAttributeNameForIndex((*this)->getName(), index); } static ::mlir::StringAttr getAttributeNameForIndex(::mlir::OperationName name, unsigned index) { assert(index < 2 && "invalid attribute index"); assert(name.getStringRef() == getOperationName() && "invalid operation name"); assert(name.isRegistered() && "Operation isn't registered, missing a " "dependent dialect loading?"); return name.getAttributeNames()[index]; } public: }; } // namespace mlir::ROCDL MLIR_DECLARE_EXPLICIT_TYPE_ID(::mlir::ROCDL::smfmac_f32_16x16x64_bf8_fp8) MLIR_DECLARE_EXPLICIT_TYPE_ID(::mlir::ROCDL::detail::smfmac_f32_16x16x64_bf8_fp8GenericAdaptorBase::Properties) namespace mlir::ROCDL { //===----------------------------------------------------------------------===// // ::mlir::ROCDL::smfmac_f32_16x16x64_f16 declarations //===----------------------------------------------------------------------===// namespace detail { class smfmac_f32_16x16x64_f16GenericAdaptorBase { public: struct Properties { using abidTy = ::mlir::IntegerAttr; abidTy abid; auto getAbid() const { auto &propStorage = this->abid; return ::llvm::cast<::mlir::IntegerAttr>(propStorage); } void setAbid(const ::mlir::IntegerAttr &propValue) { this->abid = propValue; } using cbszTy = ::mlir::IntegerAttr; cbszTy cbsz; auto getCbsz() const { auto &propStorage = this->cbsz; return ::llvm::cast<::mlir::IntegerAttr>(propStorage); } void setCbsz(const ::mlir::IntegerAttr &propValue) { this->cbsz = propValue; } bool operator==(const Properties &rhs) const { return rhs.abid == this->abid && rhs.cbsz == this->cbsz && true; } bool operator!=(const Properties &rhs) const { return !(*this == rhs); } }; protected: ::mlir::DictionaryAttr odsAttrs; ::std::optional<::mlir::OperationName> odsOpName; Properties properties; ::mlir::RegionRange odsRegions; public: smfmac_f32_16x16x64_f16GenericAdaptorBase(::mlir::DictionaryAttr attrs, const Properties &properties, ::mlir::RegionRange regions = {}) : odsAttrs(attrs), properties(properties), odsRegions(regions) { if (odsAttrs) odsOpName.emplace("rocdl.smfmac.f32.16x16x64.f16", odsAttrs.getContext()); } smfmac_f32_16x16x64_f16GenericAdaptorBase(smfmac_f32_16x16x64_f16 op); std::pair getODSOperandIndexAndLength(unsigned index, unsigned odsOperandsSize) { return {index, 1}; } const Properties &getProperties() { return properties; } ::mlir::DictionaryAttr getAttributes() { return odsAttrs; } ::mlir::IntegerAttr getCbszAttr() { auto attr = ::llvm::cast<::mlir::IntegerAttr>(getProperties().cbsz); return attr; } uint32_t getCbsz(); ::mlir::IntegerAttr getAbidAttr() { auto attr = ::llvm::cast<::mlir::IntegerAttr>(getProperties().abid); return attr; } uint32_t getAbid(); }; } // namespace detail template class smfmac_f32_16x16x64_f16GenericAdaptor : public detail::smfmac_f32_16x16x64_f16GenericAdaptorBase { using ValueT = ::llvm::detail::ValueOfRange; using Base = detail::smfmac_f32_16x16x64_f16GenericAdaptorBase; static constexpr int odsIndex_a = 0; static constexpr int odsIndex_b = 1; static constexpr int odsIndex_c = 2; static constexpr int odsIndex_index = 3; public: smfmac_f32_16x16x64_f16GenericAdaptor(RangeT values, ::mlir::DictionaryAttr attrs, const Properties &properties, ::mlir::RegionRange regions = {}) : Base(attrs, properties, regions), odsOperands(values) {} smfmac_f32_16x16x64_f16GenericAdaptor(RangeT values, ::mlir::DictionaryAttr attrs, ::mlir::PropertyRef properties, ::mlir::RegionRange regions = {}) : smfmac_f32_16x16x64_f16GenericAdaptor(values, attrs, (properties ? *properties.as() : Properties{}), regions) {} smfmac_f32_16x16x64_f16GenericAdaptor(RangeT values, ::mlir::DictionaryAttr attrs = nullptr) : smfmac_f32_16x16x64_f16GenericAdaptor(values, attrs, Properties{}, {}) {} smfmac_f32_16x16x64_f16GenericAdaptor(RangeT values, const smfmac_f32_16x16x64_f16GenericAdaptorBase &base) : Base(base), odsOperands(values) {} template >> smfmac_f32_16x16x64_f16GenericAdaptor(RangeT values, LateInst op) : Base(op), odsOperands(values) {} std::pair getODSOperandIndexAndLength(unsigned index) { return Base::getODSOperandIndexAndLength(index, odsOperands.size()); } RangeT getODSOperands(unsigned index) { auto valueRange = getODSOperandIndexAndLength(index); return {std::next(odsOperands.begin(), valueRange.first), std::next(odsOperands.begin(), valueRange.first + valueRange.second)}; } ValueT getA() { return (*getODSOperands(0).begin()); } ValueT getB() { return (*getODSOperands(1).begin()); } ValueT getC() { return (*getODSOperands(2).begin()); } ValueT getIndex() { return (*getODSOperands(3).begin()); } RangeT getOperands() { return odsOperands; } private: RangeT odsOperands; }; class smfmac_f32_16x16x64_f16Adaptor : public smfmac_f32_16x16x64_f16GenericAdaptor<::mlir::ValueRange> { public: using smfmac_f32_16x16x64_f16GenericAdaptor::smfmac_f32_16x16x64_f16GenericAdaptor; smfmac_f32_16x16x64_f16Adaptor(smfmac_f32_16x16x64_f16 op); ::llvm::LogicalResult verify(::mlir::Location loc); }; class smfmac_f32_16x16x64_f16 : public ::mlir::Op::Impl, ::mlir::OpTrait::ZeroSuccessors, ::mlir::OpTrait::NOperands<4>::Impl, ::mlir::OpTrait::OpInvariants, ::mlir::BytecodeOpInterface::Trait> { public: using Op::Op; using Op::print; using Adaptor = smfmac_f32_16x16x64_f16Adaptor; template using GenericAdaptor = smfmac_f32_16x16x64_f16GenericAdaptor; using FoldAdaptor = GenericAdaptor<::llvm::ArrayRef<::mlir::Attribute>>; static constexpr int odsIndex_a = 0; static constexpr int odsIndex_b = 1; static constexpr int odsIndex_c = 2; static constexpr int odsIndex_index = 3; using Properties = FoldAdaptor::Properties; static ::llvm::ArrayRef<::llvm::StringRef> getAttributeNames() { static ::llvm::StringRef attrNames[] = {::llvm::StringRef("abid"), ::llvm::StringRef("cbsz")}; return ::llvm::ArrayRef(attrNames); } ::mlir::StringAttr getAbidAttrName() { return getAttributeNameForIndex(0); } static ::mlir::StringAttr getAbidAttrName(::mlir::OperationName name) { return getAttributeNameForIndex(name, 0); } ::mlir::StringAttr getCbszAttrName() { return getAttributeNameForIndex(1); } static ::mlir::StringAttr getCbszAttrName(::mlir::OperationName name) { return getAttributeNameForIndex(name, 1); } static constexpr ::llvm::StringLiteral getOperationName() { return ::llvm::StringLiteral("rocdl.smfmac.f32.16x16x64.f16"); } std::pair getODSOperandIndexAndLength(unsigned index) { return {index, 1}; } ::mlir::Operation::operand_range getODSOperands(unsigned index) { auto valueRange = getODSOperandIndexAndLength(index); return {std::next(getOperation()->operand_begin(), valueRange.first), std::next(getOperation()->operand_begin(), valueRange.first + valueRange.second)}; } ::mlir::TypedValue<::mlir::VectorType> getA() { return ::llvm::cast<::mlir::TypedValue<::mlir::VectorType>>(*getODSOperands(0).begin()); } ::mlir::TypedValue<::mlir::VectorType> getB() { return ::llvm::cast<::mlir::TypedValue<::mlir::VectorType>>(*getODSOperands(1).begin()); } ::mlir::TypedValue<::mlir::VectorType> getC() { return ::llvm::cast<::mlir::TypedValue<::mlir::VectorType>>(*getODSOperands(2).begin()); } ::mlir::TypedValue<::mlir::IntegerType> getIndex() { return ::llvm::cast<::mlir::TypedValue<::mlir::IntegerType>>(*getODSOperands(3).begin()); } ::mlir::OpOperand &getAMutable() { auto range = getODSOperandIndexAndLength(0); return getOperation()->getOpOperand(range.first); } ::mlir::OpOperand &getBMutable() { auto range = getODSOperandIndexAndLength(1); return getOperation()->getOpOperand(range.first); } ::mlir::OpOperand &getCMutable() { auto range = getODSOperandIndexAndLength(2); return getOperation()->getOpOperand(range.first); } ::mlir::OpOperand &getIndexMutable() { auto range = getODSOperandIndexAndLength(3); return getOperation()->getOpOperand(range.first); } std::pair getODSResultIndexAndLength(unsigned index) { return {index, 1}; } ::mlir::Operation::result_range getODSResults(unsigned index) { auto valueRange = getODSResultIndexAndLength(index); return {std::next(getOperation()->result_begin(), valueRange.first), std::next(getOperation()->result_begin(), valueRange.first + valueRange.second)}; } ::mlir::TypedValue<::mlir::VectorType> getRes() { return ::llvm::cast<::mlir::TypedValue<::mlir::VectorType>>(*getODSResults(0).begin()); } static ::llvm::LogicalResult setPropertiesFromAttr(Properties &prop, ::mlir::Attribute attr, ::llvm::function_ref<::mlir::InFlightDiagnostic()> emitError); static ::mlir::Attribute getPropertiesAsAttr(::mlir::MLIRContext *ctx, const Properties &prop); static llvm::hash_code computePropertiesHash(const Properties &prop); static std::optional getInherentAttr(::mlir::MLIRContext *ctx, const Properties &prop, llvm::StringRef name); static void setInherentAttr(Properties &prop, llvm::StringRef name, mlir::Attribute value); static void populateInherentAttrs(::mlir::MLIRContext *ctx, const Properties &prop, ::mlir::NamedAttrList &attrs); static ::llvm::LogicalResult verifyInherentAttrs(::mlir::OperationName opName, ::mlir::NamedAttrList &attrs, llvm::function_ref<::mlir::InFlightDiagnostic()> emitError); static ::llvm::LogicalResult readProperties(::mlir::DialectBytecodeReader &reader, ::mlir::OperationState &state); void writeProperties(::mlir::DialectBytecodeWriter &writer); ::mlir::IntegerAttr getCbszAttr() { return ::llvm::cast<::mlir::IntegerAttr>(getProperties().cbsz); } uint32_t getCbsz(); ::mlir::IntegerAttr getAbidAttr() { return ::llvm::cast<::mlir::IntegerAttr>(getProperties().abid); } uint32_t getAbid(); void setCbszAttr(::mlir::IntegerAttr attr) { getProperties().cbsz = attr; } void setCbsz(uint32_t attrValue); void setAbidAttr(::mlir::IntegerAttr attr) { getProperties().abid = attr; } void setAbid(uint32_t attrValue); static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::Type res, ::mlir::Value a, ::mlir::Value b, ::mlir::Value c, ::mlir::Value index, ::mlir::IntegerAttr cbsz, ::mlir::IntegerAttr abid); static smfmac_f32_16x16x64_f16 create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::Type res, ::mlir::Value a, ::mlir::Value b, ::mlir::Value c, ::mlir::Value index, ::mlir::IntegerAttr cbsz, ::mlir::IntegerAttr abid); static smfmac_f32_16x16x64_f16 create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::Type res, ::mlir::Value a, ::mlir::Value b, ::mlir::Value c, ::mlir::Value index, ::mlir::IntegerAttr cbsz, ::mlir::IntegerAttr abid); static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::Value a, ::mlir::Value b, ::mlir::Value c, ::mlir::Value index, ::mlir::IntegerAttr cbsz, ::mlir::IntegerAttr abid); static smfmac_f32_16x16x64_f16 create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::Value a, ::mlir::Value b, ::mlir::Value c, ::mlir::Value index, ::mlir::IntegerAttr cbsz, ::mlir::IntegerAttr abid); static smfmac_f32_16x16x64_f16 create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::Value a, ::mlir::Value b, ::mlir::Value c, ::mlir::Value index, ::mlir::IntegerAttr cbsz, ::mlir::IntegerAttr abid); static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::Type res, ::mlir::Value a, ::mlir::Value b, ::mlir::Value c, ::mlir::Value index, uint32_t cbsz, uint32_t abid); static smfmac_f32_16x16x64_f16 create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::Type res, ::mlir::Value a, ::mlir::Value b, ::mlir::Value c, ::mlir::Value index, uint32_t cbsz, uint32_t abid); static smfmac_f32_16x16x64_f16 create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::Type res, ::mlir::Value a, ::mlir::Value b, ::mlir::Value c, ::mlir::Value index, uint32_t cbsz, uint32_t abid); static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::Value a, ::mlir::Value b, ::mlir::Value c, ::mlir::Value index, uint32_t cbsz, uint32_t abid); static smfmac_f32_16x16x64_f16 create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::Value a, ::mlir::Value b, ::mlir::Value c, ::mlir::Value index, uint32_t cbsz, uint32_t abid); static smfmac_f32_16x16x64_f16 create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::Value a, ::mlir::Value b, ::mlir::Value c, ::mlir::Value index, uint32_t cbsz, uint32_t abid); static void build(::mlir::OpBuilder &, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, ::llvm::ArrayRef<::mlir::NamedAttribute> attributes = {}); static smfmac_f32_16x16x64_f16 create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, ::llvm::ArrayRef<::mlir::NamedAttribute> attributes = {}); static smfmac_f32_16x16x64_f16 create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, ::llvm::ArrayRef<::mlir::NamedAttribute> attributes = {}); static void build(::mlir::OpBuilder &, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, const Properties &properties, ::llvm::ArrayRef<::mlir::NamedAttribute> discardableAttributes = {}); static smfmac_f32_16x16x64_f16 create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, const Properties &properties, ::llvm::ArrayRef<::mlir::NamedAttribute> discardableAttributes = {}); static smfmac_f32_16x16x64_f16 create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, const Properties &properties, ::llvm::ArrayRef<::mlir::NamedAttribute> discardableAttributes = {}); ::llvm::LogicalResult verifyInvariantsImpl(); ::llvm::LogicalResult verifyInvariants(); static ::mlir::ParseResult parse(::mlir::OpAsmParser &parser, ::mlir::OperationState &result); void print(::mlir::OpAsmPrinter &_odsPrinter); private: ::mlir::StringAttr getAttributeNameForIndex(unsigned index) { return getAttributeNameForIndex((*this)->getName(), index); } static ::mlir::StringAttr getAttributeNameForIndex(::mlir::OperationName name, unsigned index) { assert(index < 2 && "invalid attribute index"); assert(name.getStringRef() == getOperationName() && "invalid operation name"); assert(name.isRegistered() && "Operation isn't registered, missing a " "dependent dialect loading?"); return name.getAttributeNames()[index]; } public: }; } // namespace mlir::ROCDL MLIR_DECLARE_EXPLICIT_TYPE_ID(::mlir::ROCDL::smfmac_f32_16x16x64_f16) MLIR_DECLARE_EXPLICIT_TYPE_ID(::mlir::ROCDL::detail::smfmac_f32_16x16x64_f16GenericAdaptorBase::Properties) namespace mlir::ROCDL { //===----------------------------------------------------------------------===// // ::mlir::ROCDL::smfmac_f32_16x16x64_fp8_bf8 declarations //===----------------------------------------------------------------------===// namespace detail { class smfmac_f32_16x16x64_fp8_bf8GenericAdaptorBase { public: struct Properties { using abidTy = ::mlir::IntegerAttr; abidTy abid; auto getAbid() const { auto &propStorage = this->abid; return ::llvm::cast<::mlir::IntegerAttr>(propStorage); } void setAbid(const ::mlir::IntegerAttr &propValue) { this->abid = propValue; } using cbszTy = ::mlir::IntegerAttr; cbszTy cbsz; auto getCbsz() const { auto &propStorage = this->cbsz; return ::llvm::cast<::mlir::IntegerAttr>(propStorage); } void setCbsz(const ::mlir::IntegerAttr &propValue) { this->cbsz = propValue; } bool operator==(const Properties &rhs) const { return rhs.abid == this->abid && rhs.cbsz == this->cbsz && true; } bool operator!=(const Properties &rhs) const { return !(*this == rhs); } }; protected: ::mlir::DictionaryAttr odsAttrs; ::std::optional<::mlir::OperationName> odsOpName; Properties properties; ::mlir::RegionRange odsRegions; public: smfmac_f32_16x16x64_fp8_bf8GenericAdaptorBase(::mlir::DictionaryAttr attrs, const Properties &properties, ::mlir::RegionRange regions = {}) : odsAttrs(attrs), properties(properties), odsRegions(regions) { if (odsAttrs) odsOpName.emplace("rocdl.smfmac.f32.16x16x64.fp8.bf8", odsAttrs.getContext()); } smfmac_f32_16x16x64_fp8_bf8GenericAdaptorBase(smfmac_f32_16x16x64_fp8_bf8 op); std::pair getODSOperandIndexAndLength(unsigned index, unsigned odsOperandsSize) { return {index, 1}; } const Properties &getProperties() { return properties; } ::mlir::DictionaryAttr getAttributes() { return odsAttrs; } ::mlir::IntegerAttr getCbszAttr() { auto attr = ::llvm::cast<::mlir::IntegerAttr>(getProperties().cbsz); return attr; } uint32_t getCbsz(); ::mlir::IntegerAttr getAbidAttr() { auto attr = ::llvm::cast<::mlir::IntegerAttr>(getProperties().abid); return attr; } uint32_t getAbid(); }; } // namespace detail template class smfmac_f32_16x16x64_fp8_bf8GenericAdaptor : public detail::smfmac_f32_16x16x64_fp8_bf8GenericAdaptorBase { using ValueT = ::llvm::detail::ValueOfRange; using Base = detail::smfmac_f32_16x16x64_fp8_bf8GenericAdaptorBase; static constexpr int odsIndex_a = 0; static constexpr int odsIndex_b = 1; static constexpr int odsIndex_c = 2; static constexpr int odsIndex_index = 3; public: smfmac_f32_16x16x64_fp8_bf8GenericAdaptor(RangeT values, ::mlir::DictionaryAttr attrs, const Properties &properties, ::mlir::RegionRange regions = {}) : Base(attrs, properties, regions), odsOperands(values) {} smfmac_f32_16x16x64_fp8_bf8GenericAdaptor(RangeT values, ::mlir::DictionaryAttr attrs, ::mlir::PropertyRef properties, ::mlir::RegionRange regions = {}) : smfmac_f32_16x16x64_fp8_bf8GenericAdaptor(values, attrs, (properties ? *properties.as() : Properties{}), regions) {} smfmac_f32_16x16x64_fp8_bf8GenericAdaptor(RangeT values, ::mlir::DictionaryAttr attrs = nullptr) : smfmac_f32_16x16x64_fp8_bf8GenericAdaptor(values, attrs, Properties{}, {}) {} smfmac_f32_16x16x64_fp8_bf8GenericAdaptor(RangeT values, const smfmac_f32_16x16x64_fp8_bf8GenericAdaptorBase &base) : Base(base), odsOperands(values) {} template >> smfmac_f32_16x16x64_fp8_bf8GenericAdaptor(RangeT values, LateInst op) : Base(op), odsOperands(values) {} std::pair getODSOperandIndexAndLength(unsigned index) { return Base::getODSOperandIndexAndLength(index, odsOperands.size()); } RangeT getODSOperands(unsigned index) { auto valueRange = getODSOperandIndexAndLength(index); return {std::next(odsOperands.begin(), valueRange.first), std::next(odsOperands.begin(), valueRange.first + valueRange.second)}; } ValueT getA() { return (*getODSOperands(0).begin()); } ValueT getB() { return (*getODSOperands(1).begin()); } ValueT getC() { return (*getODSOperands(2).begin()); } ValueT getIndex() { return (*getODSOperands(3).begin()); } RangeT getOperands() { return odsOperands; } private: RangeT odsOperands; }; class smfmac_f32_16x16x64_fp8_bf8Adaptor : public smfmac_f32_16x16x64_fp8_bf8GenericAdaptor<::mlir::ValueRange> { public: using smfmac_f32_16x16x64_fp8_bf8GenericAdaptor::smfmac_f32_16x16x64_fp8_bf8GenericAdaptor; smfmac_f32_16x16x64_fp8_bf8Adaptor(smfmac_f32_16x16x64_fp8_bf8 op); ::llvm::LogicalResult verify(::mlir::Location loc); }; class smfmac_f32_16x16x64_fp8_bf8 : public ::mlir::Op::Impl, ::mlir::OpTrait::ZeroSuccessors, ::mlir::OpTrait::NOperands<4>::Impl, ::mlir::OpTrait::OpInvariants, ::mlir::BytecodeOpInterface::Trait> { public: using Op::Op; using Op::print; using Adaptor = smfmac_f32_16x16x64_fp8_bf8Adaptor; template using GenericAdaptor = smfmac_f32_16x16x64_fp8_bf8GenericAdaptor; using FoldAdaptor = GenericAdaptor<::llvm::ArrayRef<::mlir::Attribute>>; static constexpr int odsIndex_a = 0; static constexpr int odsIndex_b = 1; static constexpr int odsIndex_c = 2; static constexpr int odsIndex_index = 3; using Properties = FoldAdaptor::Properties; static ::llvm::ArrayRef<::llvm::StringRef> getAttributeNames() { static ::llvm::StringRef attrNames[] = {::llvm::StringRef("abid"), ::llvm::StringRef("cbsz")}; return ::llvm::ArrayRef(attrNames); } ::mlir::StringAttr getAbidAttrName() { return getAttributeNameForIndex(0); } static ::mlir::StringAttr getAbidAttrName(::mlir::OperationName name) { return getAttributeNameForIndex(name, 0); } ::mlir::StringAttr getCbszAttrName() { return getAttributeNameForIndex(1); } static ::mlir::StringAttr getCbszAttrName(::mlir::OperationName name) { return getAttributeNameForIndex(name, 1); } static constexpr ::llvm::StringLiteral getOperationName() { return ::llvm::StringLiteral("rocdl.smfmac.f32.16x16x64.fp8.bf8"); } std::pair getODSOperandIndexAndLength(unsigned index) { return {index, 1}; } ::mlir::Operation::operand_range getODSOperands(unsigned index) { auto valueRange = getODSOperandIndexAndLength(index); return {std::next(getOperation()->operand_begin(), valueRange.first), std::next(getOperation()->operand_begin(), valueRange.first + valueRange.second)}; } ::mlir::TypedValue<::mlir::VectorType> getA() { return ::llvm::cast<::mlir::TypedValue<::mlir::VectorType>>(*getODSOperands(0).begin()); } ::mlir::TypedValue<::mlir::VectorType> getB() { return ::llvm::cast<::mlir::TypedValue<::mlir::VectorType>>(*getODSOperands(1).begin()); } ::mlir::TypedValue<::mlir::VectorType> getC() { return ::llvm::cast<::mlir::TypedValue<::mlir::VectorType>>(*getODSOperands(2).begin()); } ::mlir::TypedValue<::mlir::IntegerType> getIndex() { return ::llvm::cast<::mlir::TypedValue<::mlir::IntegerType>>(*getODSOperands(3).begin()); } ::mlir::OpOperand &getAMutable() { auto range = getODSOperandIndexAndLength(0); return getOperation()->getOpOperand(range.first); } ::mlir::OpOperand &getBMutable() { auto range = getODSOperandIndexAndLength(1); return getOperation()->getOpOperand(range.first); } ::mlir::OpOperand &getCMutable() { auto range = getODSOperandIndexAndLength(2); return getOperation()->getOpOperand(range.first); } ::mlir::OpOperand &getIndexMutable() { auto range = getODSOperandIndexAndLength(3); return getOperation()->getOpOperand(range.first); } std::pair getODSResultIndexAndLength(unsigned index) { return {index, 1}; } ::mlir::Operation::result_range getODSResults(unsigned index) { auto valueRange = getODSResultIndexAndLength(index); return {std::next(getOperation()->result_begin(), valueRange.first), std::next(getOperation()->result_begin(), valueRange.first + valueRange.second)}; } ::mlir::TypedValue<::mlir::VectorType> getRes() { return ::llvm::cast<::mlir::TypedValue<::mlir::VectorType>>(*getODSResults(0).begin()); } static ::llvm::LogicalResult setPropertiesFromAttr(Properties &prop, ::mlir::Attribute attr, ::llvm::function_ref<::mlir::InFlightDiagnostic()> emitError); static ::mlir::Attribute getPropertiesAsAttr(::mlir::MLIRContext *ctx, const Properties &prop); static llvm::hash_code computePropertiesHash(const Properties &prop); static std::optional getInherentAttr(::mlir::MLIRContext *ctx, const Properties &prop, llvm::StringRef name); static void setInherentAttr(Properties &prop, llvm::StringRef name, mlir::Attribute value); static void populateInherentAttrs(::mlir::MLIRContext *ctx, const Properties &prop, ::mlir::NamedAttrList &attrs); static ::llvm::LogicalResult verifyInherentAttrs(::mlir::OperationName opName, ::mlir::NamedAttrList &attrs, llvm::function_ref<::mlir::InFlightDiagnostic()> emitError); static ::llvm::LogicalResult readProperties(::mlir::DialectBytecodeReader &reader, ::mlir::OperationState &state); void writeProperties(::mlir::DialectBytecodeWriter &writer); ::mlir::IntegerAttr getCbszAttr() { return ::llvm::cast<::mlir::IntegerAttr>(getProperties().cbsz); } uint32_t getCbsz(); ::mlir::IntegerAttr getAbidAttr() { return ::llvm::cast<::mlir::IntegerAttr>(getProperties().abid); } uint32_t getAbid(); void setCbszAttr(::mlir::IntegerAttr attr) { getProperties().cbsz = attr; } void setCbsz(uint32_t attrValue); void setAbidAttr(::mlir::IntegerAttr attr) { getProperties().abid = attr; } void setAbid(uint32_t attrValue); static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::Type res, ::mlir::Value a, ::mlir::Value b, ::mlir::Value c, ::mlir::Value index, ::mlir::IntegerAttr cbsz, ::mlir::IntegerAttr abid); static smfmac_f32_16x16x64_fp8_bf8 create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::Type res, ::mlir::Value a, ::mlir::Value b, ::mlir::Value c, ::mlir::Value index, ::mlir::IntegerAttr cbsz, ::mlir::IntegerAttr abid); static smfmac_f32_16x16x64_fp8_bf8 create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::Type res, ::mlir::Value a, ::mlir::Value b, ::mlir::Value c, ::mlir::Value index, ::mlir::IntegerAttr cbsz, ::mlir::IntegerAttr abid); static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::Value a, ::mlir::Value b, ::mlir::Value c, ::mlir::Value index, ::mlir::IntegerAttr cbsz, ::mlir::IntegerAttr abid); static smfmac_f32_16x16x64_fp8_bf8 create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::Value a, ::mlir::Value b, ::mlir::Value c, ::mlir::Value index, ::mlir::IntegerAttr cbsz, ::mlir::IntegerAttr abid); static smfmac_f32_16x16x64_fp8_bf8 create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::Value a, ::mlir::Value b, ::mlir::Value c, ::mlir::Value index, ::mlir::IntegerAttr cbsz, ::mlir::IntegerAttr abid); static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::Type res, ::mlir::Value a, ::mlir::Value b, ::mlir::Value c, ::mlir::Value index, uint32_t cbsz, uint32_t abid); static smfmac_f32_16x16x64_fp8_bf8 create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::Type res, ::mlir::Value a, ::mlir::Value b, ::mlir::Value c, ::mlir::Value index, uint32_t cbsz, uint32_t abid); static smfmac_f32_16x16x64_fp8_bf8 create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::Type res, ::mlir::Value a, ::mlir::Value b, ::mlir::Value c, ::mlir::Value index, uint32_t cbsz, uint32_t abid); static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::Value a, ::mlir::Value b, ::mlir::Value c, ::mlir::Value index, uint32_t cbsz, uint32_t abid); static smfmac_f32_16x16x64_fp8_bf8 create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::Value a, ::mlir::Value b, ::mlir::Value c, ::mlir::Value index, uint32_t cbsz, uint32_t abid); static smfmac_f32_16x16x64_fp8_bf8 create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::Value a, ::mlir::Value b, ::mlir::Value c, ::mlir::Value index, uint32_t cbsz, uint32_t abid); static void build(::mlir::OpBuilder &, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, ::llvm::ArrayRef<::mlir::NamedAttribute> attributes = {}); static smfmac_f32_16x16x64_fp8_bf8 create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, ::llvm::ArrayRef<::mlir::NamedAttribute> attributes = {}); static smfmac_f32_16x16x64_fp8_bf8 create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, ::llvm::ArrayRef<::mlir::NamedAttribute> attributes = {}); static void build(::mlir::OpBuilder &, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, const Properties &properties, ::llvm::ArrayRef<::mlir::NamedAttribute> discardableAttributes = {}); static smfmac_f32_16x16x64_fp8_bf8 create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, const Properties &properties, ::llvm::ArrayRef<::mlir::NamedAttribute> discardableAttributes = {}); static smfmac_f32_16x16x64_fp8_bf8 create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, const Properties &properties, ::llvm::ArrayRef<::mlir::NamedAttribute> discardableAttributes = {}); ::llvm::LogicalResult verifyInvariantsImpl(); ::llvm::LogicalResult verifyInvariants(); static ::mlir::ParseResult parse(::mlir::OpAsmParser &parser, ::mlir::OperationState &result); void print(::mlir::OpAsmPrinter &_odsPrinter); private: ::mlir::StringAttr getAttributeNameForIndex(unsigned index) { return getAttributeNameForIndex((*this)->getName(), index); } static ::mlir::StringAttr getAttributeNameForIndex(::mlir::OperationName name, unsigned index) { assert(index < 2 && "invalid attribute index"); assert(name.getStringRef() == getOperationName() && "invalid operation name"); assert(name.isRegistered() && "Operation isn't registered, missing a " "dependent dialect loading?"); return name.getAttributeNames()[index]; } public: }; } // namespace mlir::ROCDL MLIR_DECLARE_EXPLICIT_TYPE_ID(::mlir::ROCDL::smfmac_f32_16x16x64_fp8_bf8) MLIR_DECLARE_EXPLICIT_TYPE_ID(::mlir::ROCDL::detail::smfmac_f32_16x16x64_fp8_bf8GenericAdaptorBase::Properties) namespace mlir::ROCDL { //===----------------------------------------------------------------------===// // ::mlir::ROCDL::smfmac_f32_16x16x64_fp8_fp8 declarations //===----------------------------------------------------------------------===// namespace detail { class smfmac_f32_16x16x64_fp8_fp8GenericAdaptorBase { public: struct Properties { using abidTy = ::mlir::IntegerAttr; abidTy abid; auto getAbid() const { auto &propStorage = this->abid; return ::llvm::cast<::mlir::IntegerAttr>(propStorage); } void setAbid(const ::mlir::IntegerAttr &propValue) { this->abid = propValue; } using cbszTy = ::mlir::IntegerAttr; cbszTy cbsz; auto getCbsz() const { auto &propStorage = this->cbsz; return ::llvm::cast<::mlir::IntegerAttr>(propStorage); } void setCbsz(const ::mlir::IntegerAttr &propValue) { this->cbsz = propValue; } bool operator==(const Properties &rhs) const { return rhs.abid == this->abid && rhs.cbsz == this->cbsz && true; } bool operator!=(const Properties &rhs) const { return !(*this == rhs); } }; protected: ::mlir::DictionaryAttr odsAttrs; ::std::optional<::mlir::OperationName> odsOpName; Properties properties; ::mlir::RegionRange odsRegions; public: smfmac_f32_16x16x64_fp8_fp8GenericAdaptorBase(::mlir::DictionaryAttr attrs, const Properties &properties, ::mlir::RegionRange regions = {}) : odsAttrs(attrs), properties(properties), odsRegions(regions) { if (odsAttrs) odsOpName.emplace("rocdl.smfmac.f32.16x16x64.fp8.fp8", odsAttrs.getContext()); } smfmac_f32_16x16x64_fp8_fp8GenericAdaptorBase(smfmac_f32_16x16x64_fp8_fp8 op); std::pair getODSOperandIndexAndLength(unsigned index, unsigned odsOperandsSize) { return {index, 1}; } const Properties &getProperties() { return properties; } ::mlir::DictionaryAttr getAttributes() { return odsAttrs; } ::mlir::IntegerAttr getCbszAttr() { auto attr = ::llvm::cast<::mlir::IntegerAttr>(getProperties().cbsz); return attr; } uint32_t getCbsz(); ::mlir::IntegerAttr getAbidAttr() { auto attr = ::llvm::cast<::mlir::IntegerAttr>(getProperties().abid); return attr; } uint32_t getAbid(); }; } // namespace detail template class smfmac_f32_16x16x64_fp8_fp8GenericAdaptor : public detail::smfmac_f32_16x16x64_fp8_fp8GenericAdaptorBase { using ValueT = ::llvm::detail::ValueOfRange; using Base = detail::smfmac_f32_16x16x64_fp8_fp8GenericAdaptorBase; static constexpr int odsIndex_a = 0; static constexpr int odsIndex_b = 1; static constexpr int odsIndex_c = 2; static constexpr int odsIndex_index = 3; public: smfmac_f32_16x16x64_fp8_fp8GenericAdaptor(RangeT values, ::mlir::DictionaryAttr attrs, const Properties &properties, ::mlir::RegionRange regions = {}) : Base(attrs, properties, regions), odsOperands(values) {} smfmac_f32_16x16x64_fp8_fp8GenericAdaptor(RangeT values, ::mlir::DictionaryAttr attrs, ::mlir::PropertyRef properties, ::mlir::RegionRange regions = {}) : smfmac_f32_16x16x64_fp8_fp8GenericAdaptor(values, attrs, (properties ? *properties.as() : Properties{}), regions) {} smfmac_f32_16x16x64_fp8_fp8GenericAdaptor(RangeT values, ::mlir::DictionaryAttr attrs = nullptr) : smfmac_f32_16x16x64_fp8_fp8GenericAdaptor(values, attrs, Properties{}, {}) {} smfmac_f32_16x16x64_fp8_fp8GenericAdaptor(RangeT values, const smfmac_f32_16x16x64_fp8_fp8GenericAdaptorBase &base) : Base(base), odsOperands(values) {} template >> smfmac_f32_16x16x64_fp8_fp8GenericAdaptor(RangeT values, LateInst op) : Base(op), odsOperands(values) {} std::pair getODSOperandIndexAndLength(unsigned index) { return Base::getODSOperandIndexAndLength(index, odsOperands.size()); } RangeT getODSOperands(unsigned index) { auto valueRange = getODSOperandIndexAndLength(index); return {std::next(odsOperands.begin(), valueRange.first), std::next(odsOperands.begin(), valueRange.first + valueRange.second)}; } ValueT getA() { return (*getODSOperands(0).begin()); } ValueT getB() { return (*getODSOperands(1).begin()); } ValueT getC() { return (*getODSOperands(2).begin()); } ValueT getIndex() { return (*getODSOperands(3).begin()); } RangeT getOperands() { return odsOperands; } private: RangeT odsOperands; }; class smfmac_f32_16x16x64_fp8_fp8Adaptor : public smfmac_f32_16x16x64_fp8_fp8GenericAdaptor<::mlir::ValueRange> { public: using smfmac_f32_16x16x64_fp8_fp8GenericAdaptor::smfmac_f32_16x16x64_fp8_fp8GenericAdaptor; smfmac_f32_16x16x64_fp8_fp8Adaptor(smfmac_f32_16x16x64_fp8_fp8 op); ::llvm::LogicalResult verify(::mlir::Location loc); }; class smfmac_f32_16x16x64_fp8_fp8 : public ::mlir::Op::Impl, ::mlir::OpTrait::ZeroSuccessors, ::mlir::OpTrait::NOperands<4>::Impl, ::mlir::OpTrait::OpInvariants, ::mlir::BytecodeOpInterface::Trait> { public: using Op::Op; using Op::print; using Adaptor = smfmac_f32_16x16x64_fp8_fp8Adaptor; template using GenericAdaptor = smfmac_f32_16x16x64_fp8_fp8GenericAdaptor; using FoldAdaptor = GenericAdaptor<::llvm::ArrayRef<::mlir::Attribute>>; static constexpr int odsIndex_a = 0; static constexpr int odsIndex_b = 1; static constexpr int odsIndex_c = 2; static constexpr int odsIndex_index = 3; using Properties = FoldAdaptor::Properties; static ::llvm::ArrayRef<::llvm::StringRef> getAttributeNames() { static ::llvm::StringRef attrNames[] = {::llvm::StringRef("abid"), ::llvm::StringRef("cbsz")}; return ::llvm::ArrayRef(attrNames); } ::mlir::StringAttr getAbidAttrName() { return getAttributeNameForIndex(0); } static ::mlir::StringAttr getAbidAttrName(::mlir::OperationName name) { return getAttributeNameForIndex(name, 0); } ::mlir::StringAttr getCbszAttrName() { return getAttributeNameForIndex(1); } static ::mlir::StringAttr getCbszAttrName(::mlir::OperationName name) { return getAttributeNameForIndex(name, 1); } static constexpr ::llvm::StringLiteral getOperationName() { return ::llvm::StringLiteral("rocdl.smfmac.f32.16x16x64.fp8.fp8"); } std::pair getODSOperandIndexAndLength(unsigned index) { return {index, 1}; } ::mlir::Operation::operand_range getODSOperands(unsigned index) { auto valueRange = getODSOperandIndexAndLength(index); return {std::next(getOperation()->operand_begin(), valueRange.first), std::next(getOperation()->operand_begin(), valueRange.first + valueRange.second)}; } ::mlir::TypedValue<::mlir::VectorType> getA() { return ::llvm::cast<::mlir::TypedValue<::mlir::VectorType>>(*getODSOperands(0).begin()); } ::mlir::TypedValue<::mlir::VectorType> getB() { return ::llvm::cast<::mlir::TypedValue<::mlir::VectorType>>(*getODSOperands(1).begin()); } ::mlir::TypedValue<::mlir::VectorType> getC() { return ::llvm::cast<::mlir::TypedValue<::mlir::VectorType>>(*getODSOperands(2).begin()); } ::mlir::TypedValue<::mlir::IntegerType> getIndex() { return ::llvm::cast<::mlir::TypedValue<::mlir::IntegerType>>(*getODSOperands(3).begin()); } ::mlir::OpOperand &getAMutable() { auto range = getODSOperandIndexAndLength(0); return getOperation()->getOpOperand(range.first); } ::mlir::OpOperand &getBMutable() { auto range = getODSOperandIndexAndLength(1); return getOperation()->getOpOperand(range.first); } ::mlir::OpOperand &getCMutable() { auto range = getODSOperandIndexAndLength(2); return getOperation()->getOpOperand(range.first); } ::mlir::OpOperand &getIndexMutable() { auto range = getODSOperandIndexAndLength(3); return getOperation()->getOpOperand(range.first); } std::pair getODSResultIndexAndLength(unsigned index) { return {index, 1}; } ::mlir::Operation::result_range getODSResults(unsigned index) { auto valueRange = getODSResultIndexAndLength(index); return {std::next(getOperation()->result_begin(), valueRange.first), std::next(getOperation()->result_begin(), valueRange.first + valueRange.second)}; } ::mlir::TypedValue<::mlir::VectorType> getRes() { return ::llvm::cast<::mlir::TypedValue<::mlir::VectorType>>(*getODSResults(0).begin()); } static ::llvm::LogicalResult setPropertiesFromAttr(Properties &prop, ::mlir::Attribute attr, ::llvm::function_ref<::mlir::InFlightDiagnostic()> emitError); static ::mlir::Attribute getPropertiesAsAttr(::mlir::MLIRContext *ctx, const Properties &prop); static llvm::hash_code computePropertiesHash(const Properties &prop); static std::optional getInherentAttr(::mlir::MLIRContext *ctx, const Properties &prop, llvm::StringRef name); static void setInherentAttr(Properties &prop, llvm::StringRef name, mlir::Attribute value); static void populateInherentAttrs(::mlir::MLIRContext *ctx, const Properties &prop, ::mlir::NamedAttrList &attrs); static ::llvm::LogicalResult verifyInherentAttrs(::mlir::OperationName opName, ::mlir::NamedAttrList &attrs, llvm::function_ref<::mlir::InFlightDiagnostic()> emitError); static ::llvm::LogicalResult readProperties(::mlir::DialectBytecodeReader &reader, ::mlir::OperationState &state); void writeProperties(::mlir::DialectBytecodeWriter &writer); ::mlir::IntegerAttr getCbszAttr() { return ::llvm::cast<::mlir::IntegerAttr>(getProperties().cbsz); } uint32_t getCbsz(); ::mlir::IntegerAttr getAbidAttr() { return ::llvm::cast<::mlir::IntegerAttr>(getProperties().abid); } uint32_t getAbid(); void setCbszAttr(::mlir::IntegerAttr attr) { getProperties().cbsz = attr; } void setCbsz(uint32_t attrValue); void setAbidAttr(::mlir::IntegerAttr attr) { getProperties().abid = attr; } void setAbid(uint32_t attrValue); static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::Type res, ::mlir::Value a, ::mlir::Value b, ::mlir::Value c, ::mlir::Value index, ::mlir::IntegerAttr cbsz, ::mlir::IntegerAttr abid); static smfmac_f32_16x16x64_fp8_fp8 create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::Type res, ::mlir::Value a, ::mlir::Value b, ::mlir::Value c, ::mlir::Value index, ::mlir::IntegerAttr cbsz, ::mlir::IntegerAttr abid); static smfmac_f32_16x16x64_fp8_fp8 create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::Type res, ::mlir::Value a, ::mlir::Value b, ::mlir::Value c, ::mlir::Value index, ::mlir::IntegerAttr cbsz, ::mlir::IntegerAttr abid); static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::Value a, ::mlir::Value b, ::mlir::Value c, ::mlir::Value index, ::mlir::IntegerAttr cbsz, ::mlir::IntegerAttr abid); static smfmac_f32_16x16x64_fp8_fp8 create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::Value a, ::mlir::Value b, ::mlir::Value c, ::mlir::Value index, ::mlir::IntegerAttr cbsz, ::mlir::IntegerAttr abid); static smfmac_f32_16x16x64_fp8_fp8 create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::Value a, ::mlir::Value b, ::mlir::Value c, ::mlir::Value index, ::mlir::IntegerAttr cbsz, ::mlir::IntegerAttr abid); static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::Type res, ::mlir::Value a, ::mlir::Value b, ::mlir::Value c, ::mlir::Value index, uint32_t cbsz, uint32_t abid); static smfmac_f32_16x16x64_fp8_fp8 create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::Type res, ::mlir::Value a, ::mlir::Value b, ::mlir::Value c, ::mlir::Value index, uint32_t cbsz, uint32_t abid); static smfmac_f32_16x16x64_fp8_fp8 create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::Type res, ::mlir::Value a, ::mlir::Value b, ::mlir::Value c, ::mlir::Value index, uint32_t cbsz, uint32_t abid); static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::Value a, ::mlir::Value b, ::mlir::Value c, ::mlir::Value index, uint32_t cbsz, uint32_t abid); static smfmac_f32_16x16x64_fp8_fp8 create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::Value a, ::mlir::Value b, ::mlir::Value c, ::mlir::Value index, uint32_t cbsz, uint32_t abid); static smfmac_f32_16x16x64_fp8_fp8 create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::Value a, ::mlir::Value b, ::mlir::Value c, ::mlir::Value index, uint32_t cbsz, uint32_t abid); static void build(::mlir::OpBuilder &, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, ::llvm::ArrayRef<::mlir::NamedAttribute> attributes = {}); static smfmac_f32_16x16x64_fp8_fp8 create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, ::llvm::ArrayRef<::mlir::NamedAttribute> attributes = {}); static smfmac_f32_16x16x64_fp8_fp8 create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, ::llvm::ArrayRef<::mlir::NamedAttribute> attributes = {}); static void build(::mlir::OpBuilder &, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, const Properties &properties, ::llvm::ArrayRef<::mlir::NamedAttribute> discardableAttributes = {}); static smfmac_f32_16x16x64_fp8_fp8 create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, const Properties &properties, ::llvm::ArrayRef<::mlir::NamedAttribute> discardableAttributes = {}); static smfmac_f32_16x16x64_fp8_fp8 create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, const Properties &properties, ::llvm::ArrayRef<::mlir::NamedAttribute> discardableAttributes = {}); ::llvm::LogicalResult verifyInvariantsImpl(); ::llvm::LogicalResult verifyInvariants(); static ::mlir::ParseResult parse(::mlir::OpAsmParser &parser, ::mlir::OperationState &result); void print(::mlir::OpAsmPrinter &_odsPrinter); private: ::mlir::StringAttr getAttributeNameForIndex(unsigned index) { return getAttributeNameForIndex((*this)->getName(), index); } static ::mlir::StringAttr getAttributeNameForIndex(::mlir::OperationName name, unsigned index) { assert(index < 2 && "invalid attribute index"); assert(name.getStringRef() == getOperationName() && "invalid operation name"); assert(name.isRegistered() && "Operation isn't registered, missing a " "dependent dialect loading?"); return name.getAttributeNames()[index]; } public: }; } // namespace mlir::ROCDL MLIR_DECLARE_EXPLICIT_TYPE_ID(::mlir::ROCDL::smfmac_f32_16x16x64_fp8_fp8) MLIR_DECLARE_EXPLICIT_TYPE_ID(::mlir::ROCDL::detail::smfmac_f32_16x16x64_fp8_fp8GenericAdaptorBase::Properties) namespace mlir::ROCDL { //===----------------------------------------------------------------------===// // ::mlir::ROCDL::smfmac_f32_32x32x16_bf16 declarations //===----------------------------------------------------------------------===// namespace detail { class smfmac_f32_32x32x16_bf16GenericAdaptorBase { public: struct Properties { using abidTy = ::mlir::IntegerAttr; abidTy abid; auto getAbid() const { auto &propStorage = this->abid; return ::llvm::cast<::mlir::IntegerAttr>(propStorage); } void setAbid(const ::mlir::IntegerAttr &propValue) { this->abid = propValue; } using cbszTy = ::mlir::IntegerAttr; cbszTy cbsz; auto getCbsz() const { auto &propStorage = this->cbsz; return ::llvm::cast<::mlir::IntegerAttr>(propStorage); } void setCbsz(const ::mlir::IntegerAttr &propValue) { this->cbsz = propValue; } bool operator==(const Properties &rhs) const { return rhs.abid == this->abid && rhs.cbsz == this->cbsz && true; } bool operator!=(const Properties &rhs) const { return !(*this == rhs); } }; protected: ::mlir::DictionaryAttr odsAttrs; ::std::optional<::mlir::OperationName> odsOpName; Properties properties; ::mlir::RegionRange odsRegions; public: smfmac_f32_32x32x16_bf16GenericAdaptorBase(::mlir::DictionaryAttr attrs, const Properties &properties, ::mlir::RegionRange regions = {}) : odsAttrs(attrs), properties(properties), odsRegions(regions) { if (odsAttrs) odsOpName.emplace("rocdl.smfmac.f32.32x32x16.bf16", odsAttrs.getContext()); } smfmac_f32_32x32x16_bf16GenericAdaptorBase(smfmac_f32_32x32x16_bf16 op); std::pair getODSOperandIndexAndLength(unsigned index, unsigned odsOperandsSize) { return {index, 1}; } const Properties &getProperties() { return properties; } ::mlir::DictionaryAttr getAttributes() { return odsAttrs; } ::mlir::IntegerAttr getCbszAttr() { auto attr = ::llvm::cast<::mlir::IntegerAttr>(getProperties().cbsz); return attr; } uint32_t getCbsz(); ::mlir::IntegerAttr getAbidAttr() { auto attr = ::llvm::cast<::mlir::IntegerAttr>(getProperties().abid); return attr; } uint32_t getAbid(); }; } // namespace detail template class smfmac_f32_32x32x16_bf16GenericAdaptor : public detail::smfmac_f32_32x32x16_bf16GenericAdaptorBase { using ValueT = ::llvm::detail::ValueOfRange; using Base = detail::smfmac_f32_32x32x16_bf16GenericAdaptorBase; static constexpr int odsIndex_a = 0; static constexpr int odsIndex_b = 1; static constexpr int odsIndex_c = 2; static constexpr int odsIndex_index = 3; public: smfmac_f32_32x32x16_bf16GenericAdaptor(RangeT values, ::mlir::DictionaryAttr attrs, const Properties &properties, ::mlir::RegionRange regions = {}) : Base(attrs, properties, regions), odsOperands(values) {} smfmac_f32_32x32x16_bf16GenericAdaptor(RangeT values, ::mlir::DictionaryAttr attrs, ::mlir::PropertyRef properties, ::mlir::RegionRange regions = {}) : smfmac_f32_32x32x16_bf16GenericAdaptor(values, attrs, (properties ? *properties.as() : Properties{}), regions) {} smfmac_f32_32x32x16_bf16GenericAdaptor(RangeT values, ::mlir::DictionaryAttr attrs = nullptr) : smfmac_f32_32x32x16_bf16GenericAdaptor(values, attrs, Properties{}, {}) {} smfmac_f32_32x32x16_bf16GenericAdaptor(RangeT values, const smfmac_f32_32x32x16_bf16GenericAdaptorBase &base) : Base(base), odsOperands(values) {} template >> smfmac_f32_32x32x16_bf16GenericAdaptor(RangeT values, LateInst op) : Base(op), odsOperands(values) {} std::pair getODSOperandIndexAndLength(unsigned index) { return Base::getODSOperandIndexAndLength(index, odsOperands.size()); } RangeT getODSOperands(unsigned index) { auto valueRange = getODSOperandIndexAndLength(index); return {std::next(odsOperands.begin(), valueRange.first), std::next(odsOperands.begin(), valueRange.first + valueRange.second)}; } ValueT getA() { return (*getODSOperands(0).begin()); } ValueT getB() { return (*getODSOperands(1).begin()); } ValueT getC() { return (*getODSOperands(2).begin()); } ValueT getIndex() { return (*getODSOperands(3).begin()); } RangeT getOperands() { return odsOperands; } private: RangeT odsOperands; }; class smfmac_f32_32x32x16_bf16Adaptor : public smfmac_f32_32x32x16_bf16GenericAdaptor<::mlir::ValueRange> { public: using smfmac_f32_32x32x16_bf16GenericAdaptor::smfmac_f32_32x32x16_bf16GenericAdaptor; smfmac_f32_32x32x16_bf16Adaptor(smfmac_f32_32x32x16_bf16 op); ::llvm::LogicalResult verify(::mlir::Location loc); }; class smfmac_f32_32x32x16_bf16 : public ::mlir::Op::Impl, ::mlir::OpTrait::ZeroSuccessors, ::mlir::OpTrait::NOperands<4>::Impl, ::mlir::OpTrait::OpInvariants, ::mlir::BytecodeOpInterface::Trait> { public: using Op::Op; using Op::print; using Adaptor = smfmac_f32_32x32x16_bf16Adaptor; template using GenericAdaptor = smfmac_f32_32x32x16_bf16GenericAdaptor; using FoldAdaptor = GenericAdaptor<::llvm::ArrayRef<::mlir::Attribute>>; static constexpr int odsIndex_a = 0; static constexpr int odsIndex_b = 1; static constexpr int odsIndex_c = 2; static constexpr int odsIndex_index = 3; using Properties = FoldAdaptor::Properties; static ::llvm::ArrayRef<::llvm::StringRef> getAttributeNames() { static ::llvm::StringRef attrNames[] = {::llvm::StringRef("abid"), ::llvm::StringRef("cbsz")}; return ::llvm::ArrayRef(attrNames); } ::mlir::StringAttr getAbidAttrName() { return getAttributeNameForIndex(0); } static ::mlir::StringAttr getAbidAttrName(::mlir::OperationName name) { return getAttributeNameForIndex(name, 0); } ::mlir::StringAttr getCbszAttrName() { return getAttributeNameForIndex(1); } static ::mlir::StringAttr getCbszAttrName(::mlir::OperationName name) { return getAttributeNameForIndex(name, 1); } static constexpr ::llvm::StringLiteral getOperationName() { return ::llvm::StringLiteral("rocdl.smfmac.f32.32x32x16.bf16"); } std::pair getODSOperandIndexAndLength(unsigned index) { return {index, 1}; } ::mlir::Operation::operand_range getODSOperands(unsigned index) { auto valueRange = getODSOperandIndexAndLength(index); return {std::next(getOperation()->operand_begin(), valueRange.first), std::next(getOperation()->operand_begin(), valueRange.first + valueRange.second)}; } ::mlir::TypedValue<::mlir::VectorType> getA() { return ::llvm::cast<::mlir::TypedValue<::mlir::VectorType>>(*getODSOperands(0).begin()); } ::mlir::TypedValue<::mlir::VectorType> getB() { return ::llvm::cast<::mlir::TypedValue<::mlir::VectorType>>(*getODSOperands(1).begin()); } ::mlir::TypedValue<::mlir::VectorType> getC() { return ::llvm::cast<::mlir::TypedValue<::mlir::VectorType>>(*getODSOperands(2).begin()); } ::mlir::TypedValue<::mlir::IntegerType> getIndex() { return ::llvm::cast<::mlir::TypedValue<::mlir::IntegerType>>(*getODSOperands(3).begin()); } ::mlir::OpOperand &getAMutable() { auto range = getODSOperandIndexAndLength(0); return getOperation()->getOpOperand(range.first); } ::mlir::OpOperand &getBMutable() { auto range = getODSOperandIndexAndLength(1); return getOperation()->getOpOperand(range.first); } ::mlir::OpOperand &getCMutable() { auto range = getODSOperandIndexAndLength(2); return getOperation()->getOpOperand(range.first); } ::mlir::OpOperand &getIndexMutable() { auto range = getODSOperandIndexAndLength(3); return getOperation()->getOpOperand(range.first); } std::pair getODSResultIndexAndLength(unsigned index) { return {index, 1}; } ::mlir::Operation::result_range getODSResults(unsigned index) { auto valueRange = getODSResultIndexAndLength(index); return {std::next(getOperation()->result_begin(), valueRange.first), std::next(getOperation()->result_begin(), valueRange.first + valueRange.second)}; } ::mlir::TypedValue<::mlir::VectorType> getRes() { return ::llvm::cast<::mlir::TypedValue<::mlir::VectorType>>(*getODSResults(0).begin()); } static ::llvm::LogicalResult setPropertiesFromAttr(Properties &prop, ::mlir::Attribute attr, ::llvm::function_ref<::mlir::InFlightDiagnostic()> emitError); static ::mlir::Attribute getPropertiesAsAttr(::mlir::MLIRContext *ctx, const Properties &prop); static llvm::hash_code computePropertiesHash(const Properties &prop); static std::optional getInherentAttr(::mlir::MLIRContext *ctx, const Properties &prop, llvm::StringRef name); static void setInherentAttr(Properties &prop, llvm::StringRef name, mlir::Attribute value); static void populateInherentAttrs(::mlir::MLIRContext *ctx, const Properties &prop, ::mlir::NamedAttrList &attrs); static ::llvm::LogicalResult verifyInherentAttrs(::mlir::OperationName opName, ::mlir::NamedAttrList &attrs, llvm::function_ref<::mlir::InFlightDiagnostic()> emitError); static ::llvm::LogicalResult readProperties(::mlir::DialectBytecodeReader &reader, ::mlir::OperationState &state); void writeProperties(::mlir::DialectBytecodeWriter &writer); ::mlir::IntegerAttr getCbszAttr() { return ::llvm::cast<::mlir::IntegerAttr>(getProperties().cbsz); } uint32_t getCbsz(); ::mlir::IntegerAttr getAbidAttr() { return ::llvm::cast<::mlir::IntegerAttr>(getProperties().abid); } uint32_t getAbid(); void setCbszAttr(::mlir::IntegerAttr attr) { getProperties().cbsz = attr; } void setCbsz(uint32_t attrValue); void setAbidAttr(::mlir::IntegerAttr attr) { getProperties().abid = attr; } void setAbid(uint32_t attrValue); static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::Type res, ::mlir::Value a, ::mlir::Value b, ::mlir::Value c, ::mlir::Value index, ::mlir::IntegerAttr cbsz, ::mlir::IntegerAttr abid); static smfmac_f32_32x32x16_bf16 create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::Type res, ::mlir::Value a, ::mlir::Value b, ::mlir::Value c, ::mlir::Value index, ::mlir::IntegerAttr cbsz, ::mlir::IntegerAttr abid); static smfmac_f32_32x32x16_bf16 create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::Type res, ::mlir::Value a, ::mlir::Value b, ::mlir::Value c, ::mlir::Value index, ::mlir::IntegerAttr cbsz, ::mlir::IntegerAttr abid); static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::Value a, ::mlir::Value b, ::mlir::Value c, ::mlir::Value index, ::mlir::IntegerAttr cbsz, ::mlir::IntegerAttr abid); static smfmac_f32_32x32x16_bf16 create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::Value a, ::mlir::Value b, ::mlir::Value c, ::mlir::Value index, ::mlir::IntegerAttr cbsz, ::mlir::IntegerAttr abid); static smfmac_f32_32x32x16_bf16 create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::Value a, ::mlir::Value b, ::mlir::Value c, ::mlir::Value index, ::mlir::IntegerAttr cbsz, ::mlir::IntegerAttr abid); static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::Type res, ::mlir::Value a, ::mlir::Value b, ::mlir::Value c, ::mlir::Value index, uint32_t cbsz, uint32_t abid); static smfmac_f32_32x32x16_bf16 create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::Type res, ::mlir::Value a, ::mlir::Value b, ::mlir::Value c, ::mlir::Value index, uint32_t cbsz, uint32_t abid); static smfmac_f32_32x32x16_bf16 create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::Type res, ::mlir::Value a, ::mlir::Value b, ::mlir::Value c, ::mlir::Value index, uint32_t cbsz, uint32_t abid); static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::Value a, ::mlir::Value b, ::mlir::Value c, ::mlir::Value index, uint32_t cbsz, uint32_t abid); static smfmac_f32_32x32x16_bf16 create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::Value a, ::mlir::Value b, ::mlir::Value c, ::mlir::Value index, uint32_t cbsz, uint32_t abid); static smfmac_f32_32x32x16_bf16 create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::Value a, ::mlir::Value b, ::mlir::Value c, ::mlir::Value index, uint32_t cbsz, uint32_t abid); static void build(::mlir::OpBuilder &, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, ::llvm::ArrayRef<::mlir::NamedAttribute> attributes = {}); static smfmac_f32_32x32x16_bf16 create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, ::llvm::ArrayRef<::mlir::NamedAttribute> attributes = {}); static smfmac_f32_32x32x16_bf16 create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, ::llvm::ArrayRef<::mlir::NamedAttribute> attributes = {}); static void build(::mlir::OpBuilder &, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, const Properties &properties, ::llvm::ArrayRef<::mlir::NamedAttribute> discardableAttributes = {}); static smfmac_f32_32x32x16_bf16 create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, const Properties &properties, ::llvm::ArrayRef<::mlir::NamedAttribute> discardableAttributes = {}); static smfmac_f32_32x32x16_bf16 create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, const Properties &properties, ::llvm::ArrayRef<::mlir::NamedAttribute> discardableAttributes = {}); ::llvm::LogicalResult verifyInvariantsImpl(); ::llvm::LogicalResult verifyInvariants(); static ::mlir::ParseResult parse(::mlir::OpAsmParser &parser, ::mlir::OperationState &result); void print(::mlir::OpAsmPrinter &_odsPrinter); private: ::mlir::StringAttr getAttributeNameForIndex(unsigned index) { return getAttributeNameForIndex((*this)->getName(), index); } static ::mlir::StringAttr getAttributeNameForIndex(::mlir::OperationName name, unsigned index) { assert(index < 2 && "invalid attribute index"); assert(name.getStringRef() == getOperationName() && "invalid operation name"); assert(name.isRegistered() && "Operation isn't registered, missing a " "dependent dialect loading?"); return name.getAttributeNames()[index]; } public: }; } // namespace mlir::ROCDL MLIR_DECLARE_EXPLICIT_TYPE_ID(::mlir::ROCDL::smfmac_f32_32x32x16_bf16) MLIR_DECLARE_EXPLICIT_TYPE_ID(::mlir::ROCDL::detail::smfmac_f32_32x32x16_bf16GenericAdaptorBase::Properties) namespace mlir::ROCDL { //===----------------------------------------------------------------------===// // ::mlir::ROCDL::smfmac_f32_32x32x16_f16 declarations //===----------------------------------------------------------------------===// namespace detail { class smfmac_f32_32x32x16_f16GenericAdaptorBase { public: struct Properties { using abidTy = ::mlir::IntegerAttr; abidTy abid; auto getAbid() const { auto &propStorage = this->abid; return ::llvm::cast<::mlir::IntegerAttr>(propStorage); } void setAbid(const ::mlir::IntegerAttr &propValue) { this->abid = propValue; } using cbszTy = ::mlir::IntegerAttr; cbszTy cbsz; auto getCbsz() const { auto &propStorage = this->cbsz; return ::llvm::cast<::mlir::IntegerAttr>(propStorage); } void setCbsz(const ::mlir::IntegerAttr &propValue) { this->cbsz = propValue; } bool operator==(const Properties &rhs) const { return rhs.abid == this->abid && rhs.cbsz == this->cbsz && true; } bool operator!=(const Properties &rhs) const { return !(*this == rhs); } }; protected: ::mlir::DictionaryAttr odsAttrs; ::std::optional<::mlir::OperationName> odsOpName; Properties properties; ::mlir::RegionRange odsRegions; public: smfmac_f32_32x32x16_f16GenericAdaptorBase(::mlir::DictionaryAttr attrs, const Properties &properties, ::mlir::RegionRange regions = {}) : odsAttrs(attrs), properties(properties), odsRegions(regions) { if (odsAttrs) odsOpName.emplace("rocdl.smfmac.f32.32x32x16.f16", odsAttrs.getContext()); } smfmac_f32_32x32x16_f16GenericAdaptorBase(smfmac_f32_32x32x16_f16 op); std::pair getODSOperandIndexAndLength(unsigned index, unsigned odsOperandsSize) { return {index, 1}; } const Properties &getProperties() { return properties; } ::mlir::DictionaryAttr getAttributes() { return odsAttrs; } ::mlir::IntegerAttr getCbszAttr() { auto attr = ::llvm::cast<::mlir::IntegerAttr>(getProperties().cbsz); return attr; } uint32_t getCbsz(); ::mlir::IntegerAttr getAbidAttr() { auto attr = ::llvm::cast<::mlir::IntegerAttr>(getProperties().abid); return attr; } uint32_t getAbid(); }; } // namespace detail template class smfmac_f32_32x32x16_f16GenericAdaptor : public detail::smfmac_f32_32x32x16_f16GenericAdaptorBase { using ValueT = ::llvm::detail::ValueOfRange; using Base = detail::smfmac_f32_32x32x16_f16GenericAdaptorBase; static constexpr int odsIndex_a = 0; static constexpr int odsIndex_b = 1; static constexpr int odsIndex_c = 2; static constexpr int odsIndex_index = 3; public: smfmac_f32_32x32x16_f16GenericAdaptor(RangeT values, ::mlir::DictionaryAttr attrs, const Properties &properties, ::mlir::RegionRange regions = {}) : Base(attrs, properties, regions), odsOperands(values) {} smfmac_f32_32x32x16_f16GenericAdaptor(RangeT values, ::mlir::DictionaryAttr attrs, ::mlir::PropertyRef properties, ::mlir::RegionRange regions = {}) : smfmac_f32_32x32x16_f16GenericAdaptor(values, attrs, (properties ? *properties.as() : Properties{}), regions) {} smfmac_f32_32x32x16_f16GenericAdaptor(RangeT values, ::mlir::DictionaryAttr attrs = nullptr) : smfmac_f32_32x32x16_f16GenericAdaptor(values, attrs, Properties{}, {}) {} smfmac_f32_32x32x16_f16GenericAdaptor(RangeT values, const smfmac_f32_32x32x16_f16GenericAdaptorBase &base) : Base(base), odsOperands(values) {} template >> smfmac_f32_32x32x16_f16GenericAdaptor(RangeT values, LateInst op) : Base(op), odsOperands(values) {} std::pair getODSOperandIndexAndLength(unsigned index) { return Base::getODSOperandIndexAndLength(index, odsOperands.size()); } RangeT getODSOperands(unsigned index) { auto valueRange = getODSOperandIndexAndLength(index); return {std::next(odsOperands.begin(), valueRange.first), std::next(odsOperands.begin(), valueRange.first + valueRange.second)}; } ValueT getA() { return (*getODSOperands(0).begin()); } ValueT getB() { return (*getODSOperands(1).begin()); } ValueT getC() { return (*getODSOperands(2).begin()); } ValueT getIndex() { return (*getODSOperands(3).begin()); } RangeT getOperands() { return odsOperands; } private: RangeT odsOperands; }; class smfmac_f32_32x32x16_f16Adaptor : public smfmac_f32_32x32x16_f16GenericAdaptor<::mlir::ValueRange> { public: using smfmac_f32_32x32x16_f16GenericAdaptor::smfmac_f32_32x32x16_f16GenericAdaptor; smfmac_f32_32x32x16_f16Adaptor(smfmac_f32_32x32x16_f16 op); ::llvm::LogicalResult verify(::mlir::Location loc); }; class smfmac_f32_32x32x16_f16 : public ::mlir::Op::Impl, ::mlir::OpTrait::ZeroSuccessors, ::mlir::OpTrait::NOperands<4>::Impl, ::mlir::OpTrait::OpInvariants, ::mlir::BytecodeOpInterface::Trait> { public: using Op::Op; using Op::print; using Adaptor = smfmac_f32_32x32x16_f16Adaptor; template using GenericAdaptor = smfmac_f32_32x32x16_f16GenericAdaptor; using FoldAdaptor = GenericAdaptor<::llvm::ArrayRef<::mlir::Attribute>>; static constexpr int odsIndex_a = 0; static constexpr int odsIndex_b = 1; static constexpr int odsIndex_c = 2; static constexpr int odsIndex_index = 3; using Properties = FoldAdaptor::Properties; static ::llvm::ArrayRef<::llvm::StringRef> getAttributeNames() { static ::llvm::StringRef attrNames[] = {::llvm::StringRef("abid"), ::llvm::StringRef("cbsz")}; return ::llvm::ArrayRef(attrNames); } ::mlir::StringAttr getAbidAttrName() { return getAttributeNameForIndex(0); } static ::mlir::StringAttr getAbidAttrName(::mlir::OperationName name) { return getAttributeNameForIndex(name, 0); } ::mlir::StringAttr getCbszAttrName() { return getAttributeNameForIndex(1); } static ::mlir::StringAttr getCbszAttrName(::mlir::OperationName name) { return getAttributeNameForIndex(name, 1); } static constexpr ::llvm::StringLiteral getOperationName() { return ::llvm::StringLiteral("rocdl.smfmac.f32.32x32x16.f16"); } std::pair getODSOperandIndexAndLength(unsigned index) { return {index, 1}; } ::mlir::Operation::operand_range getODSOperands(unsigned index) { auto valueRange = getODSOperandIndexAndLength(index); return {std::next(getOperation()->operand_begin(), valueRange.first), std::next(getOperation()->operand_begin(), valueRange.first + valueRange.second)}; } ::mlir::TypedValue<::mlir::VectorType> getA() { return ::llvm::cast<::mlir::TypedValue<::mlir::VectorType>>(*getODSOperands(0).begin()); } ::mlir::TypedValue<::mlir::VectorType> getB() { return ::llvm::cast<::mlir::TypedValue<::mlir::VectorType>>(*getODSOperands(1).begin()); } ::mlir::TypedValue<::mlir::VectorType> getC() { return ::llvm::cast<::mlir::TypedValue<::mlir::VectorType>>(*getODSOperands(2).begin()); } ::mlir::TypedValue<::mlir::IntegerType> getIndex() { return ::llvm::cast<::mlir::TypedValue<::mlir::IntegerType>>(*getODSOperands(3).begin()); } ::mlir::OpOperand &getAMutable() { auto range = getODSOperandIndexAndLength(0); return getOperation()->getOpOperand(range.first); } ::mlir::OpOperand &getBMutable() { auto range = getODSOperandIndexAndLength(1); return getOperation()->getOpOperand(range.first); } ::mlir::OpOperand &getCMutable() { auto range = getODSOperandIndexAndLength(2); return getOperation()->getOpOperand(range.first); } ::mlir::OpOperand &getIndexMutable() { auto range = getODSOperandIndexAndLength(3); return getOperation()->getOpOperand(range.first); } std::pair getODSResultIndexAndLength(unsigned index) { return {index, 1}; } ::mlir::Operation::result_range getODSResults(unsigned index) { auto valueRange = getODSResultIndexAndLength(index); return {std::next(getOperation()->result_begin(), valueRange.first), std::next(getOperation()->result_begin(), valueRange.first + valueRange.second)}; } ::mlir::TypedValue<::mlir::VectorType> getRes() { return ::llvm::cast<::mlir::TypedValue<::mlir::VectorType>>(*getODSResults(0).begin()); } static ::llvm::LogicalResult setPropertiesFromAttr(Properties &prop, ::mlir::Attribute attr, ::llvm::function_ref<::mlir::InFlightDiagnostic()> emitError); static ::mlir::Attribute getPropertiesAsAttr(::mlir::MLIRContext *ctx, const Properties &prop); static llvm::hash_code computePropertiesHash(const Properties &prop); static std::optional getInherentAttr(::mlir::MLIRContext *ctx, const Properties &prop, llvm::StringRef name); static void setInherentAttr(Properties &prop, llvm::StringRef name, mlir::Attribute value); static void populateInherentAttrs(::mlir::MLIRContext *ctx, const Properties &prop, ::mlir::NamedAttrList &attrs); static ::llvm::LogicalResult verifyInherentAttrs(::mlir::OperationName opName, ::mlir::NamedAttrList &attrs, llvm::function_ref<::mlir::InFlightDiagnostic()> emitError); static ::llvm::LogicalResult readProperties(::mlir::DialectBytecodeReader &reader, ::mlir::OperationState &state); void writeProperties(::mlir::DialectBytecodeWriter &writer); ::mlir::IntegerAttr getCbszAttr() { return ::llvm::cast<::mlir::IntegerAttr>(getProperties().cbsz); } uint32_t getCbsz(); ::mlir::IntegerAttr getAbidAttr() { return ::llvm::cast<::mlir::IntegerAttr>(getProperties().abid); } uint32_t getAbid(); void setCbszAttr(::mlir::IntegerAttr attr) { getProperties().cbsz = attr; } void setCbsz(uint32_t attrValue); void setAbidAttr(::mlir::IntegerAttr attr) { getProperties().abid = attr; } void setAbid(uint32_t attrValue); static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::Type res, ::mlir::Value a, ::mlir::Value b, ::mlir::Value c, ::mlir::Value index, ::mlir::IntegerAttr cbsz, ::mlir::IntegerAttr abid); static smfmac_f32_32x32x16_f16 create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::Type res, ::mlir::Value a, ::mlir::Value b, ::mlir::Value c, ::mlir::Value index, ::mlir::IntegerAttr cbsz, ::mlir::IntegerAttr abid); static smfmac_f32_32x32x16_f16 create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::Type res, ::mlir::Value a, ::mlir::Value b, ::mlir::Value c, ::mlir::Value index, ::mlir::IntegerAttr cbsz, ::mlir::IntegerAttr abid); static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::Value a, ::mlir::Value b, ::mlir::Value c, ::mlir::Value index, ::mlir::IntegerAttr cbsz, ::mlir::IntegerAttr abid); static smfmac_f32_32x32x16_f16 create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::Value a, ::mlir::Value b, ::mlir::Value c, ::mlir::Value index, ::mlir::IntegerAttr cbsz, ::mlir::IntegerAttr abid); static smfmac_f32_32x32x16_f16 create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::Value a, ::mlir::Value b, ::mlir::Value c, ::mlir::Value index, ::mlir::IntegerAttr cbsz, ::mlir::IntegerAttr abid); static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::Type res, ::mlir::Value a, ::mlir::Value b, ::mlir::Value c, ::mlir::Value index, uint32_t cbsz, uint32_t abid); static smfmac_f32_32x32x16_f16 create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::Type res, ::mlir::Value a, ::mlir::Value b, ::mlir::Value c, ::mlir::Value index, uint32_t cbsz, uint32_t abid); static smfmac_f32_32x32x16_f16 create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::Type res, ::mlir::Value a, ::mlir::Value b, ::mlir::Value c, ::mlir::Value index, uint32_t cbsz, uint32_t abid); static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::Value a, ::mlir::Value b, ::mlir::Value c, ::mlir::Value index, uint32_t cbsz, uint32_t abid); static smfmac_f32_32x32x16_f16 create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::Value a, ::mlir::Value b, ::mlir::Value c, ::mlir::Value index, uint32_t cbsz, uint32_t abid); static smfmac_f32_32x32x16_f16 create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::Value a, ::mlir::Value b, ::mlir::Value c, ::mlir::Value index, uint32_t cbsz, uint32_t abid); static void build(::mlir::OpBuilder &, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, ::llvm::ArrayRef<::mlir::NamedAttribute> attributes = {}); static smfmac_f32_32x32x16_f16 create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, ::llvm::ArrayRef<::mlir::NamedAttribute> attributes = {}); static smfmac_f32_32x32x16_f16 create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, ::llvm::ArrayRef<::mlir::NamedAttribute> attributes = {}); static void build(::mlir::OpBuilder &, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, const Properties &properties, ::llvm::ArrayRef<::mlir::NamedAttribute> discardableAttributes = {}); static smfmac_f32_32x32x16_f16 create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, const Properties &properties, ::llvm::ArrayRef<::mlir::NamedAttribute> discardableAttributes = {}); static smfmac_f32_32x32x16_f16 create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, const Properties &properties, ::llvm::ArrayRef<::mlir::NamedAttribute> discardableAttributes = {}); ::llvm::LogicalResult verifyInvariantsImpl(); ::llvm::LogicalResult verifyInvariants(); static ::mlir::ParseResult parse(::mlir::OpAsmParser &parser, ::mlir::OperationState &result); void print(::mlir::OpAsmPrinter &_odsPrinter); private: ::mlir::StringAttr getAttributeNameForIndex(unsigned index) { return getAttributeNameForIndex((*this)->getName(), index); } static ::mlir::StringAttr getAttributeNameForIndex(::mlir::OperationName name, unsigned index) { assert(index < 2 && "invalid attribute index"); assert(name.getStringRef() == getOperationName() && "invalid operation name"); assert(name.isRegistered() && "Operation isn't registered, missing a " "dependent dialect loading?"); return name.getAttributeNames()[index]; } public: }; } // namespace mlir::ROCDL MLIR_DECLARE_EXPLICIT_TYPE_ID(::mlir::ROCDL::smfmac_f32_32x32x16_f16) MLIR_DECLARE_EXPLICIT_TYPE_ID(::mlir::ROCDL::detail::smfmac_f32_32x32x16_f16GenericAdaptorBase::Properties) namespace mlir::ROCDL { //===----------------------------------------------------------------------===// // ::mlir::ROCDL::smfmac_f32_32x32x32_bf16 declarations //===----------------------------------------------------------------------===// namespace detail { class smfmac_f32_32x32x32_bf16GenericAdaptorBase { public: struct Properties { using abidTy = ::mlir::IntegerAttr; abidTy abid; auto getAbid() const { auto &propStorage = this->abid; return ::llvm::cast<::mlir::IntegerAttr>(propStorage); } void setAbid(const ::mlir::IntegerAttr &propValue) { this->abid = propValue; } using cbszTy = ::mlir::IntegerAttr; cbszTy cbsz; auto getCbsz() const { auto &propStorage = this->cbsz; return ::llvm::cast<::mlir::IntegerAttr>(propStorage); } void setCbsz(const ::mlir::IntegerAttr &propValue) { this->cbsz = propValue; } bool operator==(const Properties &rhs) const { return rhs.abid == this->abid && rhs.cbsz == this->cbsz && true; } bool operator!=(const Properties &rhs) const { return !(*this == rhs); } }; protected: ::mlir::DictionaryAttr odsAttrs; ::std::optional<::mlir::OperationName> odsOpName; Properties properties; ::mlir::RegionRange odsRegions; public: smfmac_f32_32x32x32_bf16GenericAdaptorBase(::mlir::DictionaryAttr attrs, const Properties &properties, ::mlir::RegionRange regions = {}) : odsAttrs(attrs), properties(properties), odsRegions(regions) { if (odsAttrs) odsOpName.emplace("rocdl.smfmac.f32.32x32x32.bf16", odsAttrs.getContext()); } smfmac_f32_32x32x32_bf16GenericAdaptorBase(smfmac_f32_32x32x32_bf16 op); std::pair getODSOperandIndexAndLength(unsigned index, unsigned odsOperandsSize) { return {index, 1}; } const Properties &getProperties() { return properties; } ::mlir::DictionaryAttr getAttributes() { return odsAttrs; } ::mlir::IntegerAttr getCbszAttr() { auto attr = ::llvm::cast<::mlir::IntegerAttr>(getProperties().cbsz); return attr; } uint32_t getCbsz(); ::mlir::IntegerAttr getAbidAttr() { auto attr = ::llvm::cast<::mlir::IntegerAttr>(getProperties().abid); return attr; } uint32_t getAbid(); }; } // namespace detail template class smfmac_f32_32x32x32_bf16GenericAdaptor : public detail::smfmac_f32_32x32x32_bf16GenericAdaptorBase { using ValueT = ::llvm::detail::ValueOfRange; using Base = detail::smfmac_f32_32x32x32_bf16GenericAdaptorBase; static constexpr int odsIndex_a = 0; static constexpr int odsIndex_b = 1; static constexpr int odsIndex_c = 2; static constexpr int odsIndex_index = 3; public: smfmac_f32_32x32x32_bf16GenericAdaptor(RangeT values, ::mlir::DictionaryAttr attrs, const Properties &properties, ::mlir::RegionRange regions = {}) : Base(attrs, properties, regions), odsOperands(values) {} smfmac_f32_32x32x32_bf16GenericAdaptor(RangeT values, ::mlir::DictionaryAttr attrs, ::mlir::PropertyRef properties, ::mlir::RegionRange regions = {}) : smfmac_f32_32x32x32_bf16GenericAdaptor(values, attrs, (properties ? *properties.as() : Properties{}), regions) {} smfmac_f32_32x32x32_bf16GenericAdaptor(RangeT values, ::mlir::DictionaryAttr attrs = nullptr) : smfmac_f32_32x32x32_bf16GenericAdaptor(values, attrs, Properties{}, {}) {} smfmac_f32_32x32x32_bf16GenericAdaptor(RangeT values, const smfmac_f32_32x32x32_bf16GenericAdaptorBase &base) : Base(base), odsOperands(values) {} template >> smfmac_f32_32x32x32_bf16GenericAdaptor(RangeT values, LateInst op) : Base(op), odsOperands(values) {} std::pair getODSOperandIndexAndLength(unsigned index) { return Base::getODSOperandIndexAndLength(index, odsOperands.size()); } RangeT getODSOperands(unsigned index) { auto valueRange = getODSOperandIndexAndLength(index); return {std::next(odsOperands.begin(), valueRange.first), std::next(odsOperands.begin(), valueRange.first + valueRange.second)}; } ValueT getA() { return (*getODSOperands(0).begin()); } ValueT getB() { return (*getODSOperands(1).begin()); } ValueT getC() { return (*getODSOperands(2).begin()); } ValueT getIndex() { return (*getODSOperands(3).begin()); } RangeT getOperands() { return odsOperands; } private: RangeT odsOperands; }; class smfmac_f32_32x32x32_bf16Adaptor : public smfmac_f32_32x32x32_bf16GenericAdaptor<::mlir::ValueRange> { public: using smfmac_f32_32x32x32_bf16GenericAdaptor::smfmac_f32_32x32x32_bf16GenericAdaptor; smfmac_f32_32x32x32_bf16Adaptor(smfmac_f32_32x32x32_bf16 op); ::llvm::LogicalResult verify(::mlir::Location loc); }; class smfmac_f32_32x32x32_bf16 : public ::mlir::Op::Impl, ::mlir::OpTrait::ZeroSuccessors, ::mlir::OpTrait::NOperands<4>::Impl, ::mlir::OpTrait::OpInvariants, ::mlir::BytecodeOpInterface::Trait> { public: using Op::Op; using Op::print; using Adaptor = smfmac_f32_32x32x32_bf16Adaptor; template using GenericAdaptor = smfmac_f32_32x32x32_bf16GenericAdaptor; using FoldAdaptor = GenericAdaptor<::llvm::ArrayRef<::mlir::Attribute>>; static constexpr int odsIndex_a = 0; static constexpr int odsIndex_b = 1; static constexpr int odsIndex_c = 2; static constexpr int odsIndex_index = 3; using Properties = FoldAdaptor::Properties; static ::llvm::ArrayRef<::llvm::StringRef> getAttributeNames() { static ::llvm::StringRef attrNames[] = {::llvm::StringRef("abid"), ::llvm::StringRef("cbsz")}; return ::llvm::ArrayRef(attrNames); } ::mlir::StringAttr getAbidAttrName() { return getAttributeNameForIndex(0); } static ::mlir::StringAttr getAbidAttrName(::mlir::OperationName name) { return getAttributeNameForIndex(name, 0); } ::mlir::StringAttr getCbszAttrName() { return getAttributeNameForIndex(1); } static ::mlir::StringAttr getCbszAttrName(::mlir::OperationName name) { return getAttributeNameForIndex(name, 1); } static constexpr ::llvm::StringLiteral getOperationName() { return ::llvm::StringLiteral("rocdl.smfmac.f32.32x32x32.bf16"); } std::pair getODSOperandIndexAndLength(unsigned index) { return {index, 1}; } ::mlir::Operation::operand_range getODSOperands(unsigned index) { auto valueRange = getODSOperandIndexAndLength(index); return {std::next(getOperation()->operand_begin(), valueRange.first), std::next(getOperation()->operand_begin(), valueRange.first + valueRange.second)}; } ::mlir::TypedValue<::mlir::VectorType> getA() { return ::llvm::cast<::mlir::TypedValue<::mlir::VectorType>>(*getODSOperands(0).begin()); } ::mlir::TypedValue<::mlir::VectorType> getB() { return ::llvm::cast<::mlir::TypedValue<::mlir::VectorType>>(*getODSOperands(1).begin()); } ::mlir::TypedValue<::mlir::VectorType> getC() { return ::llvm::cast<::mlir::TypedValue<::mlir::VectorType>>(*getODSOperands(2).begin()); } ::mlir::TypedValue<::mlir::IntegerType> getIndex() { return ::llvm::cast<::mlir::TypedValue<::mlir::IntegerType>>(*getODSOperands(3).begin()); } ::mlir::OpOperand &getAMutable() { auto range = getODSOperandIndexAndLength(0); return getOperation()->getOpOperand(range.first); } ::mlir::OpOperand &getBMutable() { auto range = getODSOperandIndexAndLength(1); return getOperation()->getOpOperand(range.first); } ::mlir::OpOperand &getCMutable() { auto range = getODSOperandIndexAndLength(2); return getOperation()->getOpOperand(range.first); } ::mlir::OpOperand &getIndexMutable() { auto range = getODSOperandIndexAndLength(3); return getOperation()->getOpOperand(range.first); } std::pair getODSResultIndexAndLength(unsigned index) { return {index, 1}; } ::mlir::Operation::result_range getODSResults(unsigned index) { auto valueRange = getODSResultIndexAndLength(index); return {std::next(getOperation()->result_begin(), valueRange.first), std::next(getOperation()->result_begin(), valueRange.first + valueRange.second)}; } ::mlir::TypedValue<::mlir::VectorType> getRes() { return ::llvm::cast<::mlir::TypedValue<::mlir::VectorType>>(*getODSResults(0).begin()); } static ::llvm::LogicalResult setPropertiesFromAttr(Properties &prop, ::mlir::Attribute attr, ::llvm::function_ref<::mlir::InFlightDiagnostic()> emitError); static ::mlir::Attribute getPropertiesAsAttr(::mlir::MLIRContext *ctx, const Properties &prop); static llvm::hash_code computePropertiesHash(const Properties &prop); static std::optional getInherentAttr(::mlir::MLIRContext *ctx, const Properties &prop, llvm::StringRef name); static void setInherentAttr(Properties &prop, llvm::StringRef name, mlir::Attribute value); static void populateInherentAttrs(::mlir::MLIRContext *ctx, const Properties &prop, ::mlir::NamedAttrList &attrs); static ::llvm::LogicalResult verifyInherentAttrs(::mlir::OperationName opName, ::mlir::NamedAttrList &attrs, llvm::function_ref<::mlir::InFlightDiagnostic()> emitError); static ::llvm::LogicalResult readProperties(::mlir::DialectBytecodeReader &reader, ::mlir::OperationState &state); void writeProperties(::mlir::DialectBytecodeWriter &writer); ::mlir::IntegerAttr getCbszAttr() { return ::llvm::cast<::mlir::IntegerAttr>(getProperties().cbsz); } uint32_t getCbsz(); ::mlir::IntegerAttr getAbidAttr() { return ::llvm::cast<::mlir::IntegerAttr>(getProperties().abid); } uint32_t getAbid(); void setCbszAttr(::mlir::IntegerAttr attr) { getProperties().cbsz = attr; } void setCbsz(uint32_t attrValue); void setAbidAttr(::mlir::IntegerAttr attr) { getProperties().abid = attr; } void setAbid(uint32_t attrValue); static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::Type res, ::mlir::Value a, ::mlir::Value b, ::mlir::Value c, ::mlir::Value index, ::mlir::IntegerAttr cbsz, ::mlir::IntegerAttr abid); static smfmac_f32_32x32x32_bf16 create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::Type res, ::mlir::Value a, ::mlir::Value b, ::mlir::Value c, ::mlir::Value index, ::mlir::IntegerAttr cbsz, ::mlir::IntegerAttr abid); static smfmac_f32_32x32x32_bf16 create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::Type res, ::mlir::Value a, ::mlir::Value b, ::mlir::Value c, ::mlir::Value index, ::mlir::IntegerAttr cbsz, ::mlir::IntegerAttr abid); static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::Value a, ::mlir::Value b, ::mlir::Value c, ::mlir::Value index, ::mlir::IntegerAttr cbsz, ::mlir::IntegerAttr abid); static smfmac_f32_32x32x32_bf16 create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::Value a, ::mlir::Value b, ::mlir::Value c, ::mlir::Value index, ::mlir::IntegerAttr cbsz, ::mlir::IntegerAttr abid); static smfmac_f32_32x32x32_bf16 create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::Value a, ::mlir::Value b, ::mlir::Value c, ::mlir::Value index, ::mlir::IntegerAttr cbsz, ::mlir::IntegerAttr abid); static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::Type res, ::mlir::Value a, ::mlir::Value b, ::mlir::Value c, ::mlir::Value index, uint32_t cbsz, uint32_t abid); static smfmac_f32_32x32x32_bf16 create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::Type res, ::mlir::Value a, ::mlir::Value b, ::mlir::Value c, ::mlir::Value index, uint32_t cbsz, uint32_t abid); static smfmac_f32_32x32x32_bf16 create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::Type res, ::mlir::Value a, ::mlir::Value b, ::mlir::Value c, ::mlir::Value index, uint32_t cbsz, uint32_t abid); static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::Value a, ::mlir::Value b, ::mlir::Value c, ::mlir::Value index, uint32_t cbsz, uint32_t abid); static smfmac_f32_32x32x32_bf16 create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::Value a, ::mlir::Value b, ::mlir::Value c, ::mlir::Value index, uint32_t cbsz, uint32_t abid); static smfmac_f32_32x32x32_bf16 create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::Value a, ::mlir::Value b, ::mlir::Value c, ::mlir::Value index, uint32_t cbsz, uint32_t abid); static void build(::mlir::OpBuilder &, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, ::llvm::ArrayRef<::mlir::NamedAttribute> attributes = {}); static smfmac_f32_32x32x32_bf16 create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, ::llvm::ArrayRef<::mlir::NamedAttribute> attributes = {}); static smfmac_f32_32x32x32_bf16 create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, ::llvm::ArrayRef<::mlir::NamedAttribute> attributes = {}); static void build(::mlir::OpBuilder &, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, const Properties &properties, ::llvm::ArrayRef<::mlir::NamedAttribute> discardableAttributes = {}); static smfmac_f32_32x32x32_bf16 create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, const Properties &properties, ::llvm::ArrayRef<::mlir::NamedAttribute> discardableAttributes = {}); static smfmac_f32_32x32x32_bf16 create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, const Properties &properties, ::llvm::ArrayRef<::mlir::NamedAttribute> discardableAttributes = {}); ::llvm::LogicalResult verifyInvariantsImpl(); ::llvm::LogicalResult verifyInvariants(); static ::mlir::ParseResult parse(::mlir::OpAsmParser &parser, ::mlir::OperationState &result); void print(::mlir::OpAsmPrinter &_odsPrinter); private: ::mlir::StringAttr getAttributeNameForIndex(unsigned index) { return getAttributeNameForIndex((*this)->getName(), index); } static ::mlir::StringAttr getAttributeNameForIndex(::mlir::OperationName name, unsigned index) { assert(index < 2 && "invalid attribute index"); assert(name.getStringRef() == getOperationName() && "invalid operation name"); assert(name.isRegistered() && "Operation isn't registered, missing a " "dependent dialect loading?"); return name.getAttributeNames()[index]; } public: }; } // namespace mlir::ROCDL MLIR_DECLARE_EXPLICIT_TYPE_ID(::mlir::ROCDL::smfmac_f32_32x32x32_bf16) MLIR_DECLARE_EXPLICIT_TYPE_ID(::mlir::ROCDL::detail::smfmac_f32_32x32x32_bf16GenericAdaptorBase::Properties) namespace mlir::ROCDL { //===----------------------------------------------------------------------===// // ::mlir::ROCDL::smfmac_f32_32x32x32_bf8_bf8 declarations //===----------------------------------------------------------------------===// namespace detail { class smfmac_f32_32x32x32_bf8_bf8GenericAdaptorBase { public: struct Properties { using abidTy = ::mlir::IntegerAttr; abidTy abid; auto getAbid() const { auto &propStorage = this->abid; return ::llvm::cast<::mlir::IntegerAttr>(propStorage); } void setAbid(const ::mlir::IntegerAttr &propValue) { this->abid = propValue; } using cbszTy = ::mlir::IntegerAttr; cbszTy cbsz; auto getCbsz() const { auto &propStorage = this->cbsz; return ::llvm::cast<::mlir::IntegerAttr>(propStorage); } void setCbsz(const ::mlir::IntegerAttr &propValue) { this->cbsz = propValue; } bool operator==(const Properties &rhs) const { return rhs.abid == this->abid && rhs.cbsz == this->cbsz && true; } bool operator!=(const Properties &rhs) const { return !(*this == rhs); } }; protected: ::mlir::DictionaryAttr odsAttrs; ::std::optional<::mlir::OperationName> odsOpName; Properties properties; ::mlir::RegionRange odsRegions; public: smfmac_f32_32x32x32_bf8_bf8GenericAdaptorBase(::mlir::DictionaryAttr attrs, const Properties &properties, ::mlir::RegionRange regions = {}) : odsAttrs(attrs), properties(properties), odsRegions(regions) { if (odsAttrs) odsOpName.emplace("rocdl.smfmac.f32.32x32x32.bf8.bf8", odsAttrs.getContext()); } smfmac_f32_32x32x32_bf8_bf8GenericAdaptorBase(smfmac_f32_32x32x32_bf8_bf8 op); std::pair getODSOperandIndexAndLength(unsigned index, unsigned odsOperandsSize) { return {index, 1}; } const Properties &getProperties() { return properties; } ::mlir::DictionaryAttr getAttributes() { return odsAttrs; } ::mlir::IntegerAttr getCbszAttr() { auto attr = ::llvm::cast<::mlir::IntegerAttr>(getProperties().cbsz); return attr; } uint32_t getCbsz(); ::mlir::IntegerAttr getAbidAttr() { auto attr = ::llvm::cast<::mlir::IntegerAttr>(getProperties().abid); return attr; } uint32_t getAbid(); }; } // namespace detail template class smfmac_f32_32x32x32_bf8_bf8GenericAdaptor : public detail::smfmac_f32_32x32x32_bf8_bf8GenericAdaptorBase { using ValueT = ::llvm::detail::ValueOfRange; using Base = detail::smfmac_f32_32x32x32_bf8_bf8GenericAdaptorBase; static constexpr int odsIndex_a = 0; static constexpr int odsIndex_b = 1; static constexpr int odsIndex_c = 2; static constexpr int odsIndex_index = 3; public: smfmac_f32_32x32x32_bf8_bf8GenericAdaptor(RangeT values, ::mlir::DictionaryAttr attrs, const Properties &properties, ::mlir::RegionRange regions = {}) : Base(attrs, properties, regions), odsOperands(values) {} smfmac_f32_32x32x32_bf8_bf8GenericAdaptor(RangeT values, ::mlir::DictionaryAttr attrs, ::mlir::PropertyRef properties, ::mlir::RegionRange regions = {}) : smfmac_f32_32x32x32_bf8_bf8GenericAdaptor(values, attrs, (properties ? *properties.as() : Properties{}), regions) {} smfmac_f32_32x32x32_bf8_bf8GenericAdaptor(RangeT values, ::mlir::DictionaryAttr attrs = nullptr) : smfmac_f32_32x32x32_bf8_bf8GenericAdaptor(values, attrs, Properties{}, {}) {} smfmac_f32_32x32x32_bf8_bf8GenericAdaptor(RangeT values, const smfmac_f32_32x32x32_bf8_bf8GenericAdaptorBase &base) : Base(base), odsOperands(values) {} template >> smfmac_f32_32x32x32_bf8_bf8GenericAdaptor(RangeT values, LateInst op) : Base(op), odsOperands(values) {} std::pair getODSOperandIndexAndLength(unsigned index) { return Base::getODSOperandIndexAndLength(index, odsOperands.size()); } RangeT getODSOperands(unsigned index) { auto valueRange = getODSOperandIndexAndLength(index); return {std::next(odsOperands.begin(), valueRange.first), std::next(odsOperands.begin(), valueRange.first + valueRange.second)}; } ValueT getA() { return (*getODSOperands(0).begin()); } ValueT getB() { return (*getODSOperands(1).begin()); } ValueT getC() { return (*getODSOperands(2).begin()); } ValueT getIndex() { return (*getODSOperands(3).begin()); } RangeT getOperands() { return odsOperands; } private: RangeT odsOperands; }; class smfmac_f32_32x32x32_bf8_bf8Adaptor : public smfmac_f32_32x32x32_bf8_bf8GenericAdaptor<::mlir::ValueRange> { public: using smfmac_f32_32x32x32_bf8_bf8GenericAdaptor::smfmac_f32_32x32x32_bf8_bf8GenericAdaptor; smfmac_f32_32x32x32_bf8_bf8Adaptor(smfmac_f32_32x32x32_bf8_bf8 op); ::llvm::LogicalResult verify(::mlir::Location loc); }; class smfmac_f32_32x32x32_bf8_bf8 : public ::mlir::Op::Impl, ::mlir::OpTrait::ZeroSuccessors, ::mlir::OpTrait::NOperands<4>::Impl, ::mlir::OpTrait::OpInvariants, ::mlir::BytecodeOpInterface::Trait> { public: using Op::Op; using Op::print; using Adaptor = smfmac_f32_32x32x32_bf8_bf8Adaptor; template using GenericAdaptor = smfmac_f32_32x32x32_bf8_bf8GenericAdaptor; using FoldAdaptor = GenericAdaptor<::llvm::ArrayRef<::mlir::Attribute>>; static constexpr int odsIndex_a = 0; static constexpr int odsIndex_b = 1; static constexpr int odsIndex_c = 2; static constexpr int odsIndex_index = 3; using Properties = FoldAdaptor::Properties; static ::llvm::ArrayRef<::llvm::StringRef> getAttributeNames() { static ::llvm::StringRef attrNames[] = {::llvm::StringRef("abid"), ::llvm::StringRef("cbsz")}; return ::llvm::ArrayRef(attrNames); } ::mlir::StringAttr getAbidAttrName() { return getAttributeNameForIndex(0); } static ::mlir::StringAttr getAbidAttrName(::mlir::OperationName name) { return getAttributeNameForIndex(name, 0); } ::mlir::StringAttr getCbszAttrName() { return getAttributeNameForIndex(1); } static ::mlir::StringAttr getCbszAttrName(::mlir::OperationName name) { return getAttributeNameForIndex(name, 1); } static constexpr ::llvm::StringLiteral getOperationName() { return ::llvm::StringLiteral("rocdl.smfmac.f32.32x32x32.bf8.bf8"); } std::pair getODSOperandIndexAndLength(unsigned index) { return {index, 1}; } ::mlir::Operation::operand_range getODSOperands(unsigned index) { auto valueRange = getODSOperandIndexAndLength(index); return {std::next(getOperation()->operand_begin(), valueRange.first), std::next(getOperation()->operand_begin(), valueRange.first + valueRange.second)}; } ::mlir::TypedValue<::mlir::VectorType> getA() { return ::llvm::cast<::mlir::TypedValue<::mlir::VectorType>>(*getODSOperands(0).begin()); } ::mlir::TypedValue<::mlir::VectorType> getB() { return ::llvm::cast<::mlir::TypedValue<::mlir::VectorType>>(*getODSOperands(1).begin()); } ::mlir::TypedValue<::mlir::VectorType> getC() { return ::llvm::cast<::mlir::TypedValue<::mlir::VectorType>>(*getODSOperands(2).begin()); } ::mlir::TypedValue<::mlir::IntegerType> getIndex() { return ::llvm::cast<::mlir::TypedValue<::mlir::IntegerType>>(*getODSOperands(3).begin()); } ::mlir::OpOperand &getAMutable() { auto range = getODSOperandIndexAndLength(0); return getOperation()->getOpOperand(range.first); } ::mlir::OpOperand &getBMutable() { auto range = getODSOperandIndexAndLength(1); return getOperation()->getOpOperand(range.first); } ::mlir::OpOperand &getCMutable() { auto range = getODSOperandIndexAndLength(2); return getOperation()->getOpOperand(range.first); } ::mlir::OpOperand &getIndexMutable() { auto range = getODSOperandIndexAndLength(3); return getOperation()->getOpOperand(range.first); } std::pair getODSResultIndexAndLength(unsigned index) { return {index, 1}; } ::mlir::Operation::result_range getODSResults(unsigned index) { auto valueRange = getODSResultIndexAndLength(index); return {std::next(getOperation()->result_begin(), valueRange.first), std::next(getOperation()->result_begin(), valueRange.first + valueRange.second)}; } ::mlir::TypedValue<::mlir::VectorType> getRes() { return ::llvm::cast<::mlir::TypedValue<::mlir::VectorType>>(*getODSResults(0).begin()); } static ::llvm::LogicalResult setPropertiesFromAttr(Properties &prop, ::mlir::Attribute attr, ::llvm::function_ref<::mlir::InFlightDiagnostic()> emitError); static ::mlir::Attribute getPropertiesAsAttr(::mlir::MLIRContext *ctx, const Properties &prop); static llvm::hash_code computePropertiesHash(const Properties &prop); static std::optional getInherentAttr(::mlir::MLIRContext *ctx, const Properties &prop, llvm::StringRef name); static void setInherentAttr(Properties &prop, llvm::StringRef name, mlir::Attribute value); static void populateInherentAttrs(::mlir::MLIRContext *ctx, const Properties &prop, ::mlir::NamedAttrList &attrs); static ::llvm::LogicalResult verifyInherentAttrs(::mlir::OperationName opName, ::mlir::NamedAttrList &attrs, llvm::function_ref<::mlir::InFlightDiagnostic()> emitError); static ::llvm::LogicalResult readProperties(::mlir::DialectBytecodeReader &reader, ::mlir::OperationState &state); void writeProperties(::mlir::DialectBytecodeWriter &writer); ::mlir::IntegerAttr getCbszAttr() { return ::llvm::cast<::mlir::IntegerAttr>(getProperties().cbsz); } uint32_t getCbsz(); ::mlir::IntegerAttr getAbidAttr() { return ::llvm::cast<::mlir::IntegerAttr>(getProperties().abid); } uint32_t getAbid(); void setCbszAttr(::mlir::IntegerAttr attr) { getProperties().cbsz = attr; } void setCbsz(uint32_t attrValue); void setAbidAttr(::mlir::IntegerAttr attr) { getProperties().abid = attr; } void setAbid(uint32_t attrValue); static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::Type res, ::mlir::Value a, ::mlir::Value b, ::mlir::Value c, ::mlir::Value index, ::mlir::IntegerAttr cbsz, ::mlir::IntegerAttr abid); static smfmac_f32_32x32x32_bf8_bf8 create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::Type res, ::mlir::Value a, ::mlir::Value b, ::mlir::Value c, ::mlir::Value index, ::mlir::IntegerAttr cbsz, ::mlir::IntegerAttr abid); static smfmac_f32_32x32x32_bf8_bf8 create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::Type res, ::mlir::Value a, ::mlir::Value b, ::mlir::Value c, ::mlir::Value index, ::mlir::IntegerAttr cbsz, ::mlir::IntegerAttr abid); static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::Value a, ::mlir::Value b, ::mlir::Value c, ::mlir::Value index, ::mlir::IntegerAttr cbsz, ::mlir::IntegerAttr abid); static smfmac_f32_32x32x32_bf8_bf8 create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::Value a, ::mlir::Value b, ::mlir::Value c, ::mlir::Value index, ::mlir::IntegerAttr cbsz, ::mlir::IntegerAttr abid); static smfmac_f32_32x32x32_bf8_bf8 create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::Value a, ::mlir::Value b, ::mlir::Value c, ::mlir::Value index, ::mlir::IntegerAttr cbsz, ::mlir::IntegerAttr abid); static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::Type res, ::mlir::Value a, ::mlir::Value b, ::mlir::Value c, ::mlir::Value index, uint32_t cbsz, uint32_t abid); static smfmac_f32_32x32x32_bf8_bf8 create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::Type res, ::mlir::Value a, ::mlir::Value b, ::mlir::Value c, ::mlir::Value index, uint32_t cbsz, uint32_t abid); static smfmac_f32_32x32x32_bf8_bf8 create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::Type res, ::mlir::Value a, ::mlir::Value b, ::mlir::Value c, ::mlir::Value index, uint32_t cbsz, uint32_t abid); static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::Value a, ::mlir::Value b, ::mlir::Value c, ::mlir::Value index, uint32_t cbsz, uint32_t abid); static smfmac_f32_32x32x32_bf8_bf8 create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::Value a, ::mlir::Value b, ::mlir::Value c, ::mlir::Value index, uint32_t cbsz, uint32_t abid); static smfmac_f32_32x32x32_bf8_bf8 create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::Value a, ::mlir::Value b, ::mlir::Value c, ::mlir::Value index, uint32_t cbsz, uint32_t abid); static void build(::mlir::OpBuilder &, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, ::llvm::ArrayRef<::mlir::NamedAttribute> attributes = {}); static smfmac_f32_32x32x32_bf8_bf8 create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, ::llvm::ArrayRef<::mlir::NamedAttribute> attributes = {}); static smfmac_f32_32x32x32_bf8_bf8 create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, ::llvm::ArrayRef<::mlir::NamedAttribute> attributes = {}); static void build(::mlir::OpBuilder &, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, const Properties &properties, ::llvm::ArrayRef<::mlir::NamedAttribute> discardableAttributes = {}); static smfmac_f32_32x32x32_bf8_bf8 create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, const Properties &properties, ::llvm::ArrayRef<::mlir::NamedAttribute> discardableAttributes = {}); static smfmac_f32_32x32x32_bf8_bf8 create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, const Properties &properties, ::llvm::ArrayRef<::mlir::NamedAttribute> discardableAttributes = {}); ::llvm::LogicalResult verifyInvariantsImpl(); ::llvm::LogicalResult verifyInvariants(); static ::mlir::ParseResult parse(::mlir::OpAsmParser &parser, ::mlir::OperationState &result); void print(::mlir::OpAsmPrinter &_odsPrinter); private: ::mlir::StringAttr getAttributeNameForIndex(unsigned index) { return getAttributeNameForIndex((*this)->getName(), index); } static ::mlir::StringAttr getAttributeNameForIndex(::mlir::OperationName name, unsigned index) { assert(index < 2 && "invalid attribute index"); assert(name.getStringRef() == getOperationName() && "invalid operation name"); assert(name.isRegistered() && "Operation isn't registered, missing a " "dependent dialect loading?"); return name.getAttributeNames()[index]; } public: }; } // namespace mlir::ROCDL MLIR_DECLARE_EXPLICIT_TYPE_ID(::mlir::ROCDL::smfmac_f32_32x32x32_bf8_bf8) MLIR_DECLARE_EXPLICIT_TYPE_ID(::mlir::ROCDL::detail::smfmac_f32_32x32x32_bf8_bf8GenericAdaptorBase::Properties) namespace mlir::ROCDL { //===----------------------------------------------------------------------===// // ::mlir::ROCDL::smfmac_f32_32x32x32_bf8_fp8 declarations //===----------------------------------------------------------------------===// namespace detail { class smfmac_f32_32x32x32_bf8_fp8GenericAdaptorBase { public: struct Properties { using abidTy = ::mlir::IntegerAttr; abidTy abid; auto getAbid() const { auto &propStorage = this->abid; return ::llvm::cast<::mlir::IntegerAttr>(propStorage); } void setAbid(const ::mlir::IntegerAttr &propValue) { this->abid = propValue; } using cbszTy = ::mlir::IntegerAttr; cbszTy cbsz; auto getCbsz() const { auto &propStorage = this->cbsz; return ::llvm::cast<::mlir::IntegerAttr>(propStorage); } void setCbsz(const ::mlir::IntegerAttr &propValue) { this->cbsz = propValue; } bool operator==(const Properties &rhs) const { return rhs.abid == this->abid && rhs.cbsz == this->cbsz && true; } bool operator!=(const Properties &rhs) const { return !(*this == rhs); } }; protected: ::mlir::DictionaryAttr odsAttrs; ::std::optional<::mlir::OperationName> odsOpName; Properties properties; ::mlir::RegionRange odsRegions; public: smfmac_f32_32x32x32_bf8_fp8GenericAdaptorBase(::mlir::DictionaryAttr attrs, const Properties &properties, ::mlir::RegionRange regions = {}) : odsAttrs(attrs), properties(properties), odsRegions(regions) { if (odsAttrs) odsOpName.emplace("rocdl.smfmac.f32.32x32x32.bf8.fp8", odsAttrs.getContext()); } smfmac_f32_32x32x32_bf8_fp8GenericAdaptorBase(smfmac_f32_32x32x32_bf8_fp8 op); std::pair getODSOperandIndexAndLength(unsigned index, unsigned odsOperandsSize) { return {index, 1}; } const Properties &getProperties() { return properties; } ::mlir::DictionaryAttr getAttributes() { return odsAttrs; } ::mlir::IntegerAttr getCbszAttr() { auto attr = ::llvm::cast<::mlir::IntegerAttr>(getProperties().cbsz); return attr; } uint32_t getCbsz(); ::mlir::IntegerAttr getAbidAttr() { auto attr = ::llvm::cast<::mlir::IntegerAttr>(getProperties().abid); return attr; } uint32_t getAbid(); }; } // namespace detail template class smfmac_f32_32x32x32_bf8_fp8GenericAdaptor : public detail::smfmac_f32_32x32x32_bf8_fp8GenericAdaptorBase { using ValueT = ::llvm::detail::ValueOfRange; using Base = detail::smfmac_f32_32x32x32_bf8_fp8GenericAdaptorBase; static constexpr int odsIndex_a = 0; static constexpr int odsIndex_b = 1; static constexpr int odsIndex_c = 2; static constexpr int odsIndex_index = 3; public: smfmac_f32_32x32x32_bf8_fp8GenericAdaptor(RangeT values, ::mlir::DictionaryAttr attrs, const Properties &properties, ::mlir::RegionRange regions = {}) : Base(attrs, properties, regions), odsOperands(values) {} smfmac_f32_32x32x32_bf8_fp8GenericAdaptor(RangeT values, ::mlir::DictionaryAttr attrs, ::mlir::PropertyRef properties, ::mlir::RegionRange regions = {}) : smfmac_f32_32x32x32_bf8_fp8GenericAdaptor(values, attrs, (properties ? *properties.as() : Properties{}), regions) {} smfmac_f32_32x32x32_bf8_fp8GenericAdaptor(RangeT values, ::mlir::DictionaryAttr attrs = nullptr) : smfmac_f32_32x32x32_bf8_fp8GenericAdaptor(values, attrs, Properties{}, {}) {} smfmac_f32_32x32x32_bf8_fp8GenericAdaptor(RangeT values, const smfmac_f32_32x32x32_bf8_fp8GenericAdaptorBase &base) : Base(base), odsOperands(values) {} template >> smfmac_f32_32x32x32_bf8_fp8GenericAdaptor(RangeT values, LateInst op) : Base(op), odsOperands(values) {} std::pair getODSOperandIndexAndLength(unsigned index) { return Base::getODSOperandIndexAndLength(index, odsOperands.size()); } RangeT getODSOperands(unsigned index) { auto valueRange = getODSOperandIndexAndLength(index); return {std::next(odsOperands.begin(), valueRange.first), std::next(odsOperands.begin(), valueRange.first + valueRange.second)}; } ValueT getA() { return (*getODSOperands(0).begin()); } ValueT getB() { return (*getODSOperands(1).begin()); } ValueT getC() { return (*getODSOperands(2).begin()); } ValueT getIndex() { return (*getODSOperands(3).begin()); } RangeT getOperands() { return odsOperands; } private: RangeT odsOperands; }; class smfmac_f32_32x32x32_bf8_fp8Adaptor : public smfmac_f32_32x32x32_bf8_fp8GenericAdaptor<::mlir::ValueRange> { public: using smfmac_f32_32x32x32_bf8_fp8GenericAdaptor::smfmac_f32_32x32x32_bf8_fp8GenericAdaptor; smfmac_f32_32x32x32_bf8_fp8Adaptor(smfmac_f32_32x32x32_bf8_fp8 op); ::llvm::LogicalResult verify(::mlir::Location loc); }; class smfmac_f32_32x32x32_bf8_fp8 : public ::mlir::Op::Impl, ::mlir::OpTrait::ZeroSuccessors, ::mlir::OpTrait::NOperands<4>::Impl, ::mlir::OpTrait::OpInvariants, ::mlir::BytecodeOpInterface::Trait> { public: using Op::Op; using Op::print; using Adaptor = smfmac_f32_32x32x32_bf8_fp8Adaptor; template using GenericAdaptor = smfmac_f32_32x32x32_bf8_fp8GenericAdaptor; using FoldAdaptor = GenericAdaptor<::llvm::ArrayRef<::mlir::Attribute>>; static constexpr int odsIndex_a = 0; static constexpr int odsIndex_b = 1; static constexpr int odsIndex_c = 2; static constexpr int odsIndex_index = 3; using Properties = FoldAdaptor::Properties; static ::llvm::ArrayRef<::llvm::StringRef> getAttributeNames() { static ::llvm::StringRef attrNames[] = {::llvm::StringRef("abid"), ::llvm::StringRef("cbsz")}; return ::llvm::ArrayRef(attrNames); } ::mlir::StringAttr getAbidAttrName() { return getAttributeNameForIndex(0); } static ::mlir::StringAttr getAbidAttrName(::mlir::OperationName name) { return getAttributeNameForIndex(name, 0); } ::mlir::StringAttr getCbszAttrName() { return getAttributeNameForIndex(1); } static ::mlir::StringAttr getCbszAttrName(::mlir::OperationName name) { return getAttributeNameForIndex(name, 1); } static constexpr ::llvm::StringLiteral getOperationName() { return ::llvm::StringLiteral("rocdl.smfmac.f32.32x32x32.bf8.fp8"); } std::pair getODSOperandIndexAndLength(unsigned index) { return {index, 1}; } ::mlir::Operation::operand_range getODSOperands(unsigned index) { auto valueRange = getODSOperandIndexAndLength(index); return {std::next(getOperation()->operand_begin(), valueRange.first), std::next(getOperation()->operand_begin(), valueRange.first + valueRange.second)}; } ::mlir::TypedValue<::mlir::VectorType> getA() { return ::llvm::cast<::mlir::TypedValue<::mlir::VectorType>>(*getODSOperands(0).begin()); } ::mlir::TypedValue<::mlir::VectorType> getB() { return ::llvm::cast<::mlir::TypedValue<::mlir::VectorType>>(*getODSOperands(1).begin()); } ::mlir::TypedValue<::mlir::VectorType> getC() { return ::llvm::cast<::mlir::TypedValue<::mlir::VectorType>>(*getODSOperands(2).begin()); } ::mlir::TypedValue<::mlir::IntegerType> getIndex() { return ::llvm::cast<::mlir::TypedValue<::mlir::IntegerType>>(*getODSOperands(3).begin()); } ::mlir::OpOperand &getAMutable() { auto range = getODSOperandIndexAndLength(0); return getOperation()->getOpOperand(range.first); } ::mlir::OpOperand &getBMutable() { auto range = getODSOperandIndexAndLength(1); return getOperation()->getOpOperand(range.first); } ::mlir::OpOperand &getCMutable() { auto range = getODSOperandIndexAndLength(2); return getOperation()->getOpOperand(range.first); } ::mlir::OpOperand &getIndexMutable() { auto range = getODSOperandIndexAndLength(3); return getOperation()->getOpOperand(range.first); } std::pair getODSResultIndexAndLength(unsigned index) { return {index, 1}; } ::mlir::Operation::result_range getODSResults(unsigned index) { auto valueRange = getODSResultIndexAndLength(index); return {std::next(getOperation()->result_begin(), valueRange.first), std::next(getOperation()->result_begin(), valueRange.first + valueRange.second)}; } ::mlir::TypedValue<::mlir::VectorType> getRes() { return ::llvm::cast<::mlir::TypedValue<::mlir::VectorType>>(*getODSResults(0).begin()); } static ::llvm::LogicalResult setPropertiesFromAttr(Properties &prop, ::mlir::Attribute attr, ::llvm::function_ref<::mlir::InFlightDiagnostic()> emitError); static ::mlir::Attribute getPropertiesAsAttr(::mlir::MLIRContext *ctx, const Properties &prop); static llvm::hash_code computePropertiesHash(const Properties &prop); static std::optional getInherentAttr(::mlir::MLIRContext *ctx, const Properties &prop, llvm::StringRef name); static void setInherentAttr(Properties &prop, llvm::StringRef name, mlir::Attribute value); static void populateInherentAttrs(::mlir::MLIRContext *ctx, const Properties &prop, ::mlir::NamedAttrList &attrs); static ::llvm::LogicalResult verifyInherentAttrs(::mlir::OperationName opName, ::mlir::NamedAttrList &attrs, llvm::function_ref<::mlir::InFlightDiagnostic()> emitError); static ::llvm::LogicalResult readProperties(::mlir::DialectBytecodeReader &reader, ::mlir::OperationState &state); void writeProperties(::mlir::DialectBytecodeWriter &writer); ::mlir::IntegerAttr getCbszAttr() { return ::llvm::cast<::mlir::IntegerAttr>(getProperties().cbsz); } uint32_t getCbsz(); ::mlir::IntegerAttr getAbidAttr() { return ::llvm::cast<::mlir::IntegerAttr>(getProperties().abid); } uint32_t getAbid(); void setCbszAttr(::mlir::IntegerAttr attr) { getProperties().cbsz = attr; } void setCbsz(uint32_t attrValue); void setAbidAttr(::mlir::IntegerAttr attr) { getProperties().abid = attr; } void setAbid(uint32_t attrValue); static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::Type res, ::mlir::Value a, ::mlir::Value b, ::mlir::Value c, ::mlir::Value index, ::mlir::IntegerAttr cbsz, ::mlir::IntegerAttr abid); static smfmac_f32_32x32x32_bf8_fp8 create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::Type res, ::mlir::Value a, ::mlir::Value b, ::mlir::Value c, ::mlir::Value index, ::mlir::IntegerAttr cbsz, ::mlir::IntegerAttr abid); static smfmac_f32_32x32x32_bf8_fp8 create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::Type res, ::mlir::Value a, ::mlir::Value b, ::mlir::Value c, ::mlir::Value index, ::mlir::IntegerAttr cbsz, ::mlir::IntegerAttr abid); static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::Value a, ::mlir::Value b, ::mlir::Value c, ::mlir::Value index, ::mlir::IntegerAttr cbsz, ::mlir::IntegerAttr abid); static smfmac_f32_32x32x32_bf8_fp8 create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::Value a, ::mlir::Value b, ::mlir::Value c, ::mlir::Value index, ::mlir::IntegerAttr cbsz, ::mlir::IntegerAttr abid); static smfmac_f32_32x32x32_bf8_fp8 create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::Value a, ::mlir::Value b, ::mlir::Value c, ::mlir::Value index, ::mlir::IntegerAttr cbsz, ::mlir::IntegerAttr abid); static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::Type res, ::mlir::Value a, ::mlir::Value b, ::mlir::Value c, ::mlir::Value index, uint32_t cbsz, uint32_t abid); static smfmac_f32_32x32x32_bf8_fp8 create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::Type res, ::mlir::Value a, ::mlir::Value b, ::mlir::Value c, ::mlir::Value index, uint32_t cbsz, uint32_t abid); static smfmac_f32_32x32x32_bf8_fp8 create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::Type res, ::mlir::Value a, ::mlir::Value b, ::mlir::Value c, ::mlir::Value index, uint32_t cbsz, uint32_t abid); static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::Value a, ::mlir::Value b, ::mlir::Value c, ::mlir::Value index, uint32_t cbsz, uint32_t abid); static smfmac_f32_32x32x32_bf8_fp8 create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::Value a, ::mlir::Value b, ::mlir::Value c, ::mlir::Value index, uint32_t cbsz, uint32_t abid); static smfmac_f32_32x32x32_bf8_fp8 create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::Value a, ::mlir::Value b, ::mlir::Value c, ::mlir::Value index, uint32_t cbsz, uint32_t abid); static void build(::mlir::OpBuilder &, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, ::llvm::ArrayRef<::mlir::NamedAttribute> attributes = {}); static smfmac_f32_32x32x32_bf8_fp8 create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, ::llvm::ArrayRef<::mlir::NamedAttribute> attributes = {}); static smfmac_f32_32x32x32_bf8_fp8 create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, ::llvm::ArrayRef<::mlir::NamedAttribute> attributes = {}); static void build(::mlir::OpBuilder &, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, const Properties &properties, ::llvm::ArrayRef<::mlir::NamedAttribute> discardableAttributes = {}); static smfmac_f32_32x32x32_bf8_fp8 create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, const Properties &properties, ::llvm::ArrayRef<::mlir::NamedAttribute> discardableAttributes = {}); static smfmac_f32_32x32x32_bf8_fp8 create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, const Properties &properties, ::llvm::ArrayRef<::mlir::NamedAttribute> discardableAttributes = {}); ::llvm::LogicalResult verifyInvariantsImpl(); ::llvm::LogicalResult verifyInvariants(); static ::mlir::ParseResult parse(::mlir::OpAsmParser &parser, ::mlir::OperationState &result); void print(::mlir::OpAsmPrinter &_odsPrinter); private: ::mlir::StringAttr getAttributeNameForIndex(unsigned index) { return getAttributeNameForIndex((*this)->getName(), index); } static ::mlir::StringAttr getAttributeNameForIndex(::mlir::OperationName name, unsigned index) { assert(index < 2 && "invalid attribute index"); assert(name.getStringRef() == getOperationName() && "invalid operation name"); assert(name.isRegistered() && "Operation isn't registered, missing a " "dependent dialect loading?"); return name.getAttributeNames()[index]; } public: }; } // namespace mlir::ROCDL MLIR_DECLARE_EXPLICIT_TYPE_ID(::mlir::ROCDL::smfmac_f32_32x32x32_bf8_fp8) MLIR_DECLARE_EXPLICIT_TYPE_ID(::mlir::ROCDL::detail::smfmac_f32_32x32x32_bf8_fp8GenericAdaptorBase::Properties) namespace mlir::ROCDL { //===----------------------------------------------------------------------===// // ::mlir::ROCDL::smfmac_f32_32x32x32_f16 declarations //===----------------------------------------------------------------------===// namespace detail { class smfmac_f32_32x32x32_f16GenericAdaptorBase { public: struct Properties { using abidTy = ::mlir::IntegerAttr; abidTy abid; auto getAbid() const { auto &propStorage = this->abid; return ::llvm::cast<::mlir::IntegerAttr>(propStorage); } void setAbid(const ::mlir::IntegerAttr &propValue) { this->abid = propValue; } using cbszTy = ::mlir::IntegerAttr; cbszTy cbsz; auto getCbsz() const { auto &propStorage = this->cbsz; return ::llvm::cast<::mlir::IntegerAttr>(propStorage); } void setCbsz(const ::mlir::IntegerAttr &propValue) { this->cbsz = propValue; } bool operator==(const Properties &rhs) const { return rhs.abid == this->abid && rhs.cbsz == this->cbsz && true; } bool operator!=(const Properties &rhs) const { return !(*this == rhs); } }; protected: ::mlir::DictionaryAttr odsAttrs; ::std::optional<::mlir::OperationName> odsOpName; Properties properties; ::mlir::RegionRange odsRegions; public: smfmac_f32_32x32x32_f16GenericAdaptorBase(::mlir::DictionaryAttr attrs, const Properties &properties, ::mlir::RegionRange regions = {}) : odsAttrs(attrs), properties(properties), odsRegions(regions) { if (odsAttrs) odsOpName.emplace("rocdl.smfmac.f32.32x32x32.f16", odsAttrs.getContext()); } smfmac_f32_32x32x32_f16GenericAdaptorBase(smfmac_f32_32x32x32_f16 op); std::pair getODSOperandIndexAndLength(unsigned index, unsigned odsOperandsSize) { return {index, 1}; } const Properties &getProperties() { return properties; } ::mlir::DictionaryAttr getAttributes() { return odsAttrs; } ::mlir::IntegerAttr getCbszAttr() { auto attr = ::llvm::cast<::mlir::IntegerAttr>(getProperties().cbsz); return attr; } uint32_t getCbsz(); ::mlir::IntegerAttr getAbidAttr() { auto attr = ::llvm::cast<::mlir::IntegerAttr>(getProperties().abid); return attr; } uint32_t getAbid(); }; } // namespace detail template class smfmac_f32_32x32x32_f16GenericAdaptor : public detail::smfmac_f32_32x32x32_f16GenericAdaptorBase { using ValueT = ::llvm::detail::ValueOfRange; using Base = detail::smfmac_f32_32x32x32_f16GenericAdaptorBase; static constexpr int odsIndex_a = 0; static constexpr int odsIndex_b = 1; static constexpr int odsIndex_c = 2; static constexpr int odsIndex_index = 3; public: smfmac_f32_32x32x32_f16GenericAdaptor(RangeT values, ::mlir::DictionaryAttr attrs, const Properties &properties, ::mlir::RegionRange regions = {}) : Base(attrs, properties, regions), odsOperands(values) {} smfmac_f32_32x32x32_f16GenericAdaptor(RangeT values, ::mlir::DictionaryAttr attrs, ::mlir::PropertyRef properties, ::mlir::RegionRange regions = {}) : smfmac_f32_32x32x32_f16GenericAdaptor(values, attrs, (properties ? *properties.as() : Properties{}), regions) {} smfmac_f32_32x32x32_f16GenericAdaptor(RangeT values, ::mlir::DictionaryAttr attrs = nullptr) : smfmac_f32_32x32x32_f16GenericAdaptor(values, attrs, Properties{}, {}) {} smfmac_f32_32x32x32_f16GenericAdaptor(RangeT values, const smfmac_f32_32x32x32_f16GenericAdaptorBase &base) : Base(base), odsOperands(values) {} template >> smfmac_f32_32x32x32_f16GenericAdaptor(RangeT values, LateInst op) : Base(op), odsOperands(values) {} std::pair getODSOperandIndexAndLength(unsigned index) { return Base::getODSOperandIndexAndLength(index, odsOperands.size()); } RangeT getODSOperands(unsigned index) { auto valueRange = getODSOperandIndexAndLength(index); return {std::next(odsOperands.begin(), valueRange.first), std::next(odsOperands.begin(), valueRange.first + valueRange.second)}; } ValueT getA() { return (*getODSOperands(0).begin()); } ValueT getB() { return (*getODSOperands(1).begin()); } ValueT getC() { return (*getODSOperands(2).begin()); } ValueT getIndex() { return (*getODSOperands(3).begin()); } RangeT getOperands() { return odsOperands; } private: RangeT odsOperands; }; class smfmac_f32_32x32x32_f16Adaptor : public smfmac_f32_32x32x32_f16GenericAdaptor<::mlir::ValueRange> { public: using smfmac_f32_32x32x32_f16GenericAdaptor::smfmac_f32_32x32x32_f16GenericAdaptor; smfmac_f32_32x32x32_f16Adaptor(smfmac_f32_32x32x32_f16 op); ::llvm::LogicalResult verify(::mlir::Location loc); }; class smfmac_f32_32x32x32_f16 : public ::mlir::Op::Impl, ::mlir::OpTrait::ZeroSuccessors, ::mlir::OpTrait::NOperands<4>::Impl, ::mlir::OpTrait::OpInvariants, ::mlir::BytecodeOpInterface::Trait> { public: using Op::Op; using Op::print; using Adaptor = smfmac_f32_32x32x32_f16Adaptor; template using GenericAdaptor = smfmac_f32_32x32x32_f16GenericAdaptor; using FoldAdaptor = GenericAdaptor<::llvm::ArrayRef<::mlir::Attribute>>; static constexpr int odsIndex_a = 0; static constexpr int odsIndex_b = 1; static constexpr int odsIndex_c = 2; static constexpr int odsIndex_index = 3; using Properties = FoldAdaptor::Properties; static ::llvm::ArrayRef<::llvm::StringRef> getAttributeNames() { static ::llvm::StringRef attrNames[] = {::llvm::StringRef("abid"), ::llvm::StringRef("cbsz")}; return ::llvm::ArrayRef(attrNames); } ::mlir::StringAttr getAbidAttrName() { return getAttributeNameForIndex(0); } static ::mlir::StringAttr getAbidAttrName(::mlir::OperationName name) { return getAttributeNameForIndex(name, 0); } ::mlir::StringAttr getCbszAttrName() { return getAttributeNameForIndex(1); } static ::mlir::StringAttr getCbszAttrName(::mlir::OperationName name) { return getAttributeNameForIndex(name, 1); } static constexpr ::llvm::StringLiteral getOperationName() { return ::llvm::StringLiteral("rocdl.smfmac.f32.32x32x32.f16"); } std::pair getODSOperandIndexAndLength(unsigned index) { return {index, 1}; } ::mlir::Operation::operand_range getODSOperands(unsigned index) { auto valueRange = getODSOperandIndexAndLength(index); return {std::next(getOperation()->operand_begin(), valueRange.first), std::next(getOperation()->operand_begin(), valueRange.first + valueRange.second)}; } ::mlir::TypedValue<::mlir::VectorType> getA() { return ::llvm::cast<::mlir::TypedValue<::mlir::VectorType>>(*getODSOperands(0).begin()); } ::mlir::TypedValue<::mlir::VectorType> getB() { return ::llvm::cast<::mlir::TypedValue<::mlir::VectorType>>(*getODSOperands(1).begin()); } ::mlir::TypedValue<::mlir::VectorType> getC() { return ::llvm::cast<::mlir::TypedValue<::mlir::VectorType>>(*getODSOperands(2).begin()); } ::mlir::TypedValue<::mlir::IntegerType> getIndex() { return ::llvm::cast<::mlir::TypedValue<::mlir::IntegerType>>(*getODSOperands(3).begin()); } ::mlir::OpOperand &getAMutable() { auto range = getODSOperandIndexAndLength(0); return getOperation()->getOpOperand(range.first); } ::mlir::OpOperand &getBMutable() { auto range = getODSOperandIndexAndLength(1); return getOperation()->getOpOperand(range.first); } ::mlir::OpOperand &getCMutable() { auto range = getODSOperandIndexAndLength(2); return getOperation()->getOpOperand(range.first); } ::mlir::OpOperand &getIndexMutable() { auto range = getODSOperandIndexAndLength(3); return getOperation()->getOpOperand(range.first); } std::pair getODSResultIndexAndLength(unsigned index) { return {index, 1}; } ::mlir::Operation::result_range getODSResults(unsigned index) { auto valueRange = getODSResultIndexAndLength(index); return {std::next(getOperation()->result_begin(), valueRange.first), std::next(getOperation()->result_begin(), valueRange.first + valueRange.second)}; } ::mlir::TypedValue<::mlir::VectorType> getRes() { return ::llvm::cast<::mlir::TypedValue<::mlir::VectorType>>(*getODSResults(0).begin()); } static ::llvm::LogicalResult setPropertiesFromAttr(Properties &prop, ::mlir::Attribute attr, ::llvm::function_ref<::mlir::InFlightDiagnostic()> emitError); static ::mlir::Attribute getPropertiesAsAttr(::mlir::MLIRContext *ctx, const Properties &prop); static llvm::hash_code computePropertiesHash(const Properties &prop); static std::optional getInherentAttr(::mlir::MLIRContext *ctx, const Properties &prop, llvm::StringRef name); static void setInherentAttr(Properties &prop, llvm::StringRef name, mlir::Attribute value); static void populateInherentAttrs(::mlir::MLIRContext *ctx, const Properties &prop, ::mlir::NamedAttrList &attrs); static ::llvm::LogicalResult verifyInherentAttrs(::mlir::OperationName opName, ::mlir::NamedAttrList &attrs, llvm::function_ref<::mlir::InFlightDiagnostic()> emitError); static ::llvm::LogicalResult readProperties(::mlir::DialectBytecodeReader &reader, ::mlir::OperationState &state); void writeProperties(::mlir::DialectBytecodeWriter &writer); ::mlir::IntegerAttr getCbszAttr() { return ::llvm::cast<::mlir::IntegerAttr>(getProperties().cbsz); } uint32_t getCbsz(); ::mlir::IntegerAttr getAbidAttr() { return ::llvm::cast<::mlir::IntegerAttr>(getProperties().abid); } uint32_t getAbid(); void setCbszAttr(::mlir::IntegerAttr attr) { getProperties().cbsz = attr; } void setCbsz(uint32_t attrValue); void setAbidAttr(::mlir::IntegerAttr attr) { getProperties().abid = attr; } void setAbid(uint32_t attrValue); static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::Type res, ::mlir::Value a, ::mlir::Value b, ::mlir::Value c, ::mlir::Value index, ::mlir::IntegerAttr cbsz, ::mlir::IntegerAttr abid); static smfmac_f32_32x32x32_f16 create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::Type res, ::mlir::Value a, ::mlir::Value b, ::mlir::Value c, ::mlir::Value index, ::mlir::IntegerAttr cbsz, ::mlir::IntegerAttr abid); static smfmac_f32_32x32x32_f16 create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::Type res, ::mlir::Value a, ::mlir::Value b, ::mlir::Value c, ::mlir::Value index, ::mlir::IntegerAttr cbsz, ::mlir::IntegerAttr abid); static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::Value a, ::mlir::Value b, ::mlir::Value c, ::mlir::Value index, ::mlir::IntegerAttr cbsz, ::mlir::IntegerAttr abid); static smfmac_f32_32x32x32_f16 create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::Value a, ::mlir::Value b, ::mlir::Value c, ::mlir::Value index, ::mlir::IntegerAttr cbsz, ::mlir::IntegerAttr abid); static smfmac_f32_32x32x32_f16 create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::Value a, ::mlir::Value b, ::mlir::Value c, ::mlir::Value index, ::mlir::IntegerAttr cbsz, ::mlir::IntegerAttr abid); static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::Type res, ::mlir::Value a, ::mlir::Value b, ::mlir::Value c, ::mlir::Value index, uint32_t cbsz, uint32_t abid); static smfmac_f32_32x32x32_f16 create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::Type res, ::mlir::Value a, ::mlir::Value b, ::mlir::Value c, ::mlir::Value index, uint32_t cbsz, uint32_t abid); static smfmac_f32_32x32x32_f16 create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::Type res, ::mlir::Value a, ::mlir::Value b, ::mlir::Value c, ::mlir::Value index, uint32_t cbsz, uint32_t abid); static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::Value a, ::mlir::Value b, ::mlir::Value c, ::mlir::Value index, uint32_t cbsz, uint32_t abid); static smfmac_f32_32x32x32_f16 create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::Value a, ::mlir::Value b, ::mlir::Value c, ::mlir::Value index, uint32_t cbsz, uint32_t abid); static smfmac_f32_32x32x32_f16 create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::Value a, ::mlir::Value b, ::mlir::Value c, ::mlir::Value index, uint32_t cbsz, uint32_t abid); static void build(::mlir::OpBuilder &, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, ::llvm::ArrayRef<::mlir::NamedAttribute> attributes = {}); static smfmac_f32_32x32x32_f16 create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, ::llvm::ArrayRef<::mlir::NamedAttribute> attributes = {}); static smfmac_f32_32x32x32_f16 create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, ::llvm::ArrayRef<::mlir::NamedAttribute> attributes = {}); static void build(::mlir::OpBuilder &, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, const Properties &properties, ::llvm::ArrayRef<::mlir::NamedAttribute> discardableAttributes = {}); static smfmac_f32_32x32x32_f16 create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, const Properties &properties, ::llvm::ArrayRef<::mlir::NamedAttribute> discardableAttributes = {}); static smfmac_f32_32x32x32_f16 create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, const Properties &properties, ::llvm::ArrayRef<::mlir::NamedAttribute> discardableAttributes = {}); ::llvm::LogicalResult verifyInvariantsImpl(); ::llvm::LogicalResult verifyInvariants(); static ::mlir::ParseResult parse(::mlir::OpAsmParser &parser, ::mlir::OperationState &result); void print(::mlir::OpAsmPrinter &_odsPrinter); private: ::mlir::StringAttr getAttributeNameForIndex(unsigned index) { return getAttributeNameForIndex((*this)->getName(), index); } static ::mlir::StringAttr getAttributeNameForIndex(::mlir::OperationName name, unsigned index) { assert(index < 2 && "invalid attribute index"); assert(name.getStringRef() == getOperationName() && "invalid operation name"); assert(name.isRegistered() && "Operation isn't registered, missing a " "dependent dialect loading?"); return name.getAttributeNames()[index]; } public: }; } // namespace mlir::ROCDL MLIR_DECLARE_EXPLICIT_TYPE_ID(::mlir::ROCDL::smfmac_f32_32x32x32_f16) MLIR_DECLARE_EXPLICIT_TYPE_ID(::mlir::ROCDL::detail::smfmac_f32_32x32x32_f16GenericAdaptorBase::Properties) namespace mlir::ROCDL { //===----------------------------------------------------------------------===// // ::mlir::ROCDL::smfmac_f32_32x32x32_fp8_bf8 declarations //===----------------------------------------------------------------------===// namespace detail { class smfmac_f32_32x32x32_fp8_bf8GenericAdaptorBase { public: struct Properties { using abidTy = ::mlir::IntegerAttr; abidTy abid; auto getAbid() const { auto &propStorage = this->abid; return ::llvm::cast<::mlir::IntegerAttr>(propStorage); } void setAbid(const ::mlir::IntegerAttr &propValue) { this->abid = propValue; } using cbszTy = ::mlir::IntegerAttr; cbszTy cbsz; auto getCbsz() const { auto &propStorage = this->cbsz; return ::llvm::cast<::mlir::IntegerAttr>(propStorage); } void setCbsz(const ::mlir::IntegerAttr &propValue) { this->cbsz = propValue; } bool operator==(const Properties &rhs) const { return rhs.abid == this->abid && rhs.cbsz == this->cbsz && true; } bool operator!=(const Properties &rhs) const { return !(*this == rhs); } }; protected: ::mlir::DictionaryAttr odsAttrs; ::std::optional<::mlir::OperationName> odsOpName; Properties properties; ::mlir::RegionRange odsRegions; public: smfmac_f32_32x32x32_fp8_bf8GenericAdaptorBase(::mlir::DictionaryAttr attrs, const Properties &properties, ::mlir::RegionRange regions = {}) : odsAttrs(attrs), properties(properties), odsRegions(regions) { if (odsAttrs) odsOpName.emplace("rocdl.smfmac.f32.32x32x32.fp8.bf8", odsAttrs.getContext()); } smfmac_f32_32x32x32_fp8_bf8GenericAdaptorBase(smfmac_f32_32x32x32_fp8_bf8 op); std::pair getODSOperandIndexAndLength(unsigned index, unsigned odsOperandsSize) { return {index, 1}; } const Properties &getProperties() { return properties; } ::mlir::DictionaryAttr getAttributes() { return odsAttrs; } ::mlir::IntegerAttr getCbszAttr() { auto attr = ::llvm::cast<::mlir::IntegerAttr>(getProperties().cbsz); return attr; } uint32_t getCbsz(); ::mlir::IntegerAttr getAbidAttr() { auto attr = ::llvm::cast<::mlir::IntegerAttr>(getProperties().abid); return attr; } uint32_t getAbid(); }; } // namespace detail template class smfmac_f32_32x32x32_fp8_bf8GenericAdaptor : public detail::smfmac_f32_32x32x32_fp8_bf8GenericAdaptorBase { using ValueT = ::llvm::detail::ValueOfRange; using Base = detail::smfmac_f32_32x32x32_fp8_bf8GenericAdaptorBase; static constexpr int odsIndex_a = 0; static constexpr int odsIndex_b = 1; static constexpr int odsIndex_c = 2; static constexpr int odsIndex_index = 3; public: smfmac_f32_32x32x32_fp8_bf8GenericAdaptor(RangeT values, ::mlir::DictionaryAttr attrs, const Properties &properties, ::mlir::RegionRange regions = {}) : Base(attrs, properties, regions), odsOperands(values) {} smfmac_f32_32x32x32_fp8_bf8GenericAdaptor(RangeT values, ::mlir::DictionaryAttr attrs, ::mlir::PropertyRef properties, ::mlir::RegionRange regions = {}) : smfmac_f32_32x32x32_fp8_bf8GenericAdaptor(values, attrs, (properties ? *properties.as() : Properties{}), regions) {} smfmac_f32_32x32x32_fp8_bf8GenericAdaptor(RangeT values, ::mlir::DictionaryAttr attrs = nullptr) : smfmac_f32_32x32x32_fp8_bf8GenericAdaptor(values, attrs, Properties{}, {}) {} smfmac_f32_32x32x32_fp8_bf8GenericAdaptor(RangeT values, const smfmac_f32_32x32x32_fp8_bf8GenericAdaptorBase &base) : Base(base), odsOperands(values) {} template >> smfmac_f32_32x32x32_fp8_bf8GenericAdaptor(RangeT values, LateInst op) : Base(op), odsOperands(values) {} std::pair getODSOperandIndexAndLength(unsigned index) { return Base::getODSOperandIndexAndLength(index, odsOperands.size()); } RangeT getODSOperands(unsigned index) { auto valueRange = getODSOperandIndexAndLength(index); return {std::next(odsOperands.begin(), valueRange.first), std::next(odsOperands.begin(), valueRange.first + valueRange.second)}; } ValueT getA() { return (*getODSOperands(0).begin()); } ValueT getB() { return (*getODSOperands(1).begin()); } ValueT getC() { return (*getODSOperands(2).begin()); } ValueT getIndex() { return (*getODSOperands(3).begin()); } RangeT getOperands() { return odsOperands; } private: RangeT odsOperands; }; class smfmac_f32_32x32x32_fp8_bf8Adaptor : public smfmac_f32_32x32x32_fp8_bf8GenericAdaptor<::mlir::ValueRange> { public: using smfmac_f32_32x32x32_fp8_bf8GenericAdaptor::smfmac_f32_32x32x32_fp8_bf8GenericAdaptor; smfmac_f32_32x32x32_fp8_bf8Adaptor(smfmac_f32_32x32x32_fp8_bf8 op); ::llvm::LogicalResult verify(::mlir::Location loc); }; class smfmac_f32_32x32x32_fp8_bf8 : public ::mlir::Op::Impl, ::mlir::OpTrait::ZeroSuccessors, ::mlir::OpTrait::NOperands<4>::Impl, ::mlir::OpTrait::OpInvariants, ::mlir::BytecodeOpInterface::Trait> { public: using Op::Op; using Op::print; using Adaptor = smfmac_f32_32x32x32_fp8_bf8Adaptor; template using GenericAdaptor = smfmac_f32_32x32x32_fp8_bf8GenericAdaptor; using FoldAdaptor = GenericAdaptor<::llvm::ArrayRef<::mlir::Attribute>>; static constexpr int odsIndex_a = 0; static constexpr int odsIndex_b = 1; static constexpr int odsIndex_c = 2; static constexpr int odsIndex_index = 3; using Properties = FoldAdaptor::Properties; static ::llvm::ArrayRef<::llvm::StringRef> getAttributeNames() { static ::llvm::StringRef attrNames[] = {::llvm::StringRef("abid"), ::llvm::StringRef("cbsz")}; return ::llvm::ArrayRef(attrNames); } ::mlir::StringAttr getAbidAttrName() { return getAttributeNameForIndex(0); } static ::mlir::StringAttr getAbidAttrName(::mlir::OperationName name) { return getAttributeNameForIndex(name, 0); } ::mlir::StringAttr getCbszAttrName() { return getAttributeNameForIndex(1); } static ::mlir::StringAttr getCbszAttrName(::mlir::OperationName name) { return getAttributeNameForIndex(name, 1); } static constexpr ::llvm::StringLiteral getOperationName() { return ::llvm::StringLiteral("rocdl.smfmac.f32.32x32x32.fp8.bf8"); } std::pair getODSOperandIndexAndLength(unsigned index) { return {index, 1}; } ::mlir::Operation::operand_range getODSOperands(unsigned index) { auto valueRange = getODSOperandIndexAndLength(index); return {std::next(getOperation()->operand_begin(), valueRange.first), std::next(getOperation()->operand_begin(), valueRange.first + valueRange.second)}; } ::mlir::TypedValue<::mlir::VectorType> getA() { return ::llvm::cast<::mlir::TypedValue<::mlir::VectorType>>(*getODSOperands(0).begin()); } ::mlir::TypedValue<::mlir::VectorType> getB() { return ::llvm::cast<::mlir::TypedValue<::mlir::VectorType>>(*getODSOperands(1).begin()); } ::mlir::TypedValue<::mlir::VectorType> getC() { return ::llvm::cast<::mlir::TypedValue<::mlir::VectorType>>(*getODSOperands(2).begin()); } ::mlir::TypedValue<::mlir::IntegerType> getIndex() { return ::llvm::cast<::mlir::TypedValue<::mlir::IntegerType>>(*getODSOperands(3).begin()); } ::mlir::OpOperand &getAMutable() { auto range = getODSOperandIndexAndLength(0); return getOperation()->getOpOperand(range.first); } ::mlir::OpOperand &getBMutable() { auto range = getODSOperandIndexAndLength(1); return getOperation()->getOpOperand(range.first); } ::mlir::OpOperand &getCMutable() { auto range = getODSOperandIndexAndLength(2); return getOperation()->getOpOperand(range.first); } ::mlir::OpOperand &getIndexMutable() { auto range = getODSOperandIndexAndLength(3); return getOperation()->getOpOperand(range.first); } std::pair getODSResultIndexAndLength(unsigned index) { return {index, 1}; } ::mlir::Operation::result_range getODSResults(unsigned index) { auto valueRange = getODSResultIndexAndLength(index); return {std::next(getOperation()->result_begin(), valueRange.first), std::next(getOperation()->result_begin(), valueRange.first + valueRange.second)}; } ::mlir::TypedValue<::mlir::VectorType> getRes() { return ::llvm::cast<::mlir::TypedValue<::mlir::VectorType>>(*getODSResults(0).begin()); } static ::llvm::LogicalResult setPropertiesFromAttr(Properties &prop, ::mlir::Attribute attr, ::llvm::function_ref<::mlir::InFlightDiagnostic()> emitError); static ::mlir::Attribute getPropertiesAsAttr(::mlir::MLIRContext *ctx, const Properties &prop); static llvm::hash_code computePropertiesHash(const Properties &prop); static std::optional getInherentAttr(::mlir::MLIRContext *ctx, const Properties &prop, llvm::StringRef name); static void setInherentAttr(Properties &prop, llvm::StringRef name, mlir::Attribute value); static void populateInherentAttrs(::mlir::MLIRContext *ctx, const Properties &prop, ::mlir::NamedAttrList &attrs); static ::llvm::LogicalResult verifyInherentAttrs(::mlir::OperationName opName, ::mlir::NamedAttrList &attrs, llvm::function_ref<::mlir::InFlightDiagnostic()> emitError); static ::llvm::LogicalResult readProperties(::mlir::DialectBytecodeReader &reader, ::mlir::OperationState &state); void writeProperties(::mlir::DialectBytecodeWriter &writer); ::mlir::IntegerAttr getCbszAttr() { return ::llvm::cast<::mlir::IntegerAttr>(getProperties().cbsz); } uint32_t getCbsz(); ::mlir::IntegerAttr getAbidAttr() { return ::llvm::cast<::mlir::IntegerAttr>(getProperties().abid); } uint32_t getAbid(); void setCbszAttr(::mlir::IntegerAttr attr) { getProperties().cbsz = attr; } void setCbsz(uint32_t attrValue); void setAbidAttr(::mlir::IntegerAttr attr) { getProperties().abid = attr; } void setAbid(uint32_t attrValue); static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::Type res, ::mlir::Value a, ::mlir::Value b, ::mlir::Value c, ::mlir::Value index, ::mlir::IntegerAttr cbsz, ::mlir::IntegerAttr abid); static smfmac_f32_32x32x32_fp8_bf8 create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::Type res, ::mlir::Value a, ::mlir::Value b, ::mlir::Value c, ::mlir::Value index, ::mlir::IntegerAttr cbsz, ::mlir::IntegerAttr abid); static smfmac_f32_32x32x32_fp8_bf8 create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::Type res, ::mlir::Value a, ::mlir::Value b, ::mlir::Value c, ::mlir::Value index, ::mlir::IntegerAttr cbsz, ::mlir::IntegerAttr abid); static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::Value a, ::mlir::Value b, ::mlir::Value c, ::mlir::Value index, ::mlir::IntegerAttr cbsz, ::mlir::IntegerAttr abid); static smfmac_f32_32x32x32_fp8_bf8 create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::Value a, ::mlir::Value b, ::mlir::Value c, ::mlir::Value index, ::mlir::IntegerAttr cbsz, ::mlir::IntegerAttr abid); static smfmac_f32_32x32x32_fp8_bf8 create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::Value a, ::mlir::Value b, ::mlir::Value c, ::mlir::Value index, ::mlir::IntegerAttr cbsz, ::mlir::IntegerAttr abid); static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::Type res, ::mlir::Value a, ::mlir::Value b, ::mlir::Value c, ::mlir::Value index, uint32_t cbsz, uint32_t abid); static smfmac_f32_32x32x32_fp8_bf8 create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::Type res, ::mlir::Value a, ::mlir::Value b, ::mlir::Value c, ::mlir::Value index, uint32_t cbsz, uint32_t abid); static smfmac_f32_32x32x32_fp8_bf8 create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::Type res, ::mlir::Value a, ::mlir::Value b, ::mlir::Value c, ::mlir::Value index, uint32_t cbsz, uint32_t abid); static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::Value a, ::mlir::Value b, ::mlir::Value c, ::mlir::Value index, uint32_t cbsz, uint32_t abid); static smfmac_f32_32x32x32_fp8_bf8 create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::Value a, ::mlir::Value b, ::mlir::Value c, ::mlir::Value index, uint32_t cbsz, uint32_t abid); static smfmac_f32_32x32x32_fp8_bf8 create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::Value a, ::mlir::Value b, ::mlir::Value c, ::mlir::Value index, uint32_t cbsz, uint32_t abid); static void build(::mlir::OpBuilder &, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, ::llvm::ArrayRef<::mlir::NamedAttribute> attributes = {}); static smfmac_f32_32x32x32_fp8_bf8 create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, ::llvm::ArrayRef<::mlir::NamedAttribute> attributes = {}); static smfmac_f32_32x32x32_fp8_bf8 create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, ::llvm::ArrayRef<::mlir::NamedAttribute> attributes = {}); static void build(::mlir::OpBuilder &, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, const Properties &properties, ::llvm::ArrayRef<::mlir::NamedAttribute> discardableAttributes = {}); static smfmac_f32_32x32x32_fp8_bf8 create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, const Properties &properties, ::llvm::ArrayRef<::mlir::NamedAttribute> discardableAttributes = {}); static smfmac_f32_32x32x32_fp8_bf8 create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, const Properties &properties, ::llvm::ArrayRef<::mlir::NamedAttribute> discardableAttributes = {}); ::llvm::LogicalResult verifyInvariantsImpl(); ::llvm::LogicalResult verifyInvariants(); static ::mlir::ParseResult parse(::mlir::OpAsmParser &parser, ::mlir::OperationState &result); void print(::mlir::OpAsmPrinter &_odsPrinter); private: ::mlir::StringAttr getAttributeNameForIndex(unsigned index) { return getAttributeNameForIndex((*this)->getName(), index); } static ::mlir::StringAttr getAttributeNameForIndex(::mlir::OperationName name, unsigned index) { assert(index < 2 && "invalid attribute index"); assert(name.getStringRef() == getOperationName() && "invalid operation name"); assert(name.isRegistered() && "Operation isn't registered, missing a " "dependent dialect loading?"); return name.getAttributeNames()[index]; } public: }; } // namespace mlir::ROCDL MLIR_DECLARE_EXPLICIT_TYPE_ID(::mlir::ROCDL::smfmac_f32_32x32x32_fp8_bf8) MLIR_DECLARE_EXPLICIT_TYPE_ID(::mlir::ROCDL::detail::smfmac_f32_32x32x32_fp8_bf8GenericAdaptorBase::Properties) namespace mlir::ROCDL { //===----------------------------------------------------------------------===// // ::mlir::ROCDL::smfmac_f32_32x32x32_fp8_fp8 declarations //===----------------------------------------------------------------------===// namespace detail { class smfmac_f32_32x32x32_fp8_fp8GenericAdaptorBase { public: struct Properties { using abidTy = ::mlir::IntegerAttr; abidTy abid; auto getAbid() const { auto &propStorage = this->abid; return ::llvm::cast<::mlir::IntegerAttr>(propStorage); } void setAbid(const ::mlir::IntegerAttr &propValue) { this->abid = propValue; } using cbszTy = ::mlir::IntegerAttr; cbszTy cbsz; auto getCbsz() const { auto &propStorage = this->cbsz; return ::llvm::cast<::mlir::IntegerAttr>(propStorage); } void setCbsz(const ::mlir::IntegerAttr &propValue) { this->cbsz = propValue; } bool operator==(const Properties &rhs) const { return rhs.abid == this->abid && rhs.cbsz == this->cbsz && true; } bool operator!=(const Properties &rhs) const { return !(*this == rhs); } }; protected: ::mlir::DictionaryAttr odsAttrs; ::std::optional<::mlir::OperationName> odsOpName; Properties properties; ::mlir::RegionRange odsRegions; public: smfmac_f32_32x32x32_fp8_fp8GenericAdaptorBase(::mlir::DictionaryAttr attrs, const Properties &properties, ::mlir::RegionRange regions = {}) : odsAttrs(attrs), properties(properties), odsRegions(regions) { if (odsAttrs) odsOpName.emplace("rocdl.smfmac.f32.32x32x32.fp8.fp8", odsAttrs.getContext()); } smfmac_f32_32x32x32_fp8_fp8GenericAdaptorBase(smfmac_f32_32x32x32_fp8_fp8 op); std::pair getODSOperandIndexAndLength(unsigned index, unsigned odsOperandsSize) { return {index, 1}; } const Properties &getProperties() { return properties; } ::mlir::DictionaryAttr getAttributes() { return odsAttrs; } ::mlir::IntegerAttr getCbszAttr() { auto attr = ::llvm::cast<::mlir::IntegerAttr>(getProperties().cbsz); return attr; } uint32_t getCbsz(); ::mlir::IntegerAttr getAbidAttr() { auto attr = ::llvm::cast<::mlir::IntegerAttr>(getProperties().abid); return attr; } uint32_t getAbid(); }; } // namespace detail template class smfmac_f32_32x32x32_fp8_fp8GenericAdaptor : public detail::smfmac_f32_32x32x32_fp8_fp8GenericAdaptorBase { using ValueT = ::llvm::detail::ValueOfRange; using Base = detail::smfmac_f32_32x32x32_fp8_fp8GenericAdaptorBase; static constexpr int odsIndex_a = 0; static constexpr int odsIndex_b = 1; static constexpr int odsIndex_c = 2; static constexpr int odsIndex_index = 3; public: smfmac_f32_32x32x32_fp8_fp8GenericAdaptor(RangeT values, ::mlir::DictionaryAttr attrs, const Properties &properties, ::mlir::RegionRange regions = {}) : Base(attrs, properties, regions), odsOperands(values) {} smfmac_f32_32x32x32_fp8_fp8GenericAdaptor(RangeT values, ::mlir::DictionaryAttr attrs, ::mlir::PropertyRef properties, ::mlir::RegionRange regions = {}) : smfmac_f32_32x32x32_fp8_fp8GenericAdaptor(values, attrs, (properties ? *properties.as() : Properties{}), regions) {} smfmac_f32_32x32x32_fp8_fp8GenericAdaptor(RangeT values, ::mlir::DictionaryAttr attrs = nullptr) : smfmac_f32_32x32x32_fp8_fp8GenericAdaptor(values, attrs, Properties{}, {}) {} smfmac_f32_32x32x32_fp8_fp8GenericAdaptor(RangeT values, const smfmac_f32_32x32x32_fp8_fp8GenericAdaptorBase &base) : Base(base), odsOperands(values) {} template >> smfmac_f32_32x32x32_fp8_fp8GenericAdaptor(RangeT values, LateInst op) : Base(op), odsOperands(values) {} std::pair getODSOperandIndexAndLength(unsigned index) { return Base::getODSOperandIndexAndLength(index, odsOperands.size()); } RangeT getODSOperands(unsigned index) { auto valueRange = getODSOperandIndexAndLength(index); return {std::next(odsOperands.begin(), valueRange.first), std::next(odsOperands.begin(), valueRange.first + valueRange.second)}; } ValueT getA() { return (*getODSOperands(0).begin()); } ValueT getB() { return (*getODSOperands(1).begin()); } ValueT getC() { return (*getODSOperands(2).begin()); } ValueT getIndex() { return (*getODSOperands(3).begin()); } RangeT getOperands() { return odsOperands; } private: RangeT odsOperands; }; class smfmac_f32_32x32x32_fp8_fp8Adaptor : public smfmac_f32_32x32x32_fp8_fp8GenericAdaptor<::mlir::ValueRange> { public: using smfmac_f32_32x32x32_fp8_fp8GenericAdaptor::smfmac_f32_32x32x32_fp8_fp8GenericAdaptor; smfmac_f32_32x32x32_fp8_fp8Adaptor(smfmac_f32_32x32x32_fp8_fp8 op); ::llvm::LogicalResult verify(::mlir::Location loc); }; class smfmac_f32_32x32x32_fp8_fp8 : public ::mlir::Op::Impl, ::mlir::OpTrait::ZeroSuccessors, ::mlir::OpTrait::NOperands<4>::Impl, ::mlir::OpTrait::OpInvariants, ::mlir::BytecodeOpInterface::Trait> { public: using Op::Op; using Op::print; using Adaptor = smfmac_f32_32x32x32_fp8_fp8Adaptor; template using GenericAdaptor = smfmac_f32_32x32x32_fp8_fp8GenericAdaptor; using FoldAdaptor = GenericAdaptor<::llvm::ArrayRef<::mlir::Attribute>>; static constexpr int odsIndex_a = 0; static constexpr int odsIndex_b = 1; static constexpr int odsIndex_c = 2; static constexpr int odsIndex_index = 3; using Properties = FoldAdaptor::Properties; static ::llvm::ArrayRef<::llvm::StringRef> getAttributeNames() { static ::llvm::StringRef attrNames[] = {::llvm::StringRef("abid"), ::llvm::StringRef("cbsz")}; return ::llvm::ArrayRef(attrNames); } ::mlir::StringAttr getAbidAttrName() { return getAttributeNameForIndex(0); } static ::mlir::StringAttr getAbidAttrName(::mlir::OperationName name) { return getAttributeNameForIndex(name, 0); } ::mlir::StringAttr getCbszAttrName() { return getAttributeNameForIndex(1); } static ::mlir::StringAttr getCbszAttrName(::mlir::OperationName name) { return getAttributeNameForIndex(name, 1); } static constexpr ::llvm::StringLiteral getOperationName() { return ::llvm::StringLiteral("rocdl.smfmac.f32.32x32x32.fp8.fp8"); } std::pair getODSOperandIndexAndLength(unsigned index) { return {index, 1}; } ::mlir::Operation::operand_range getODSOperands(unsigned index) { auto valueRange = getODSOperandIndexAndLength(index); return {std::next(getOperation()->operand_begin(), valueRange.first), std::next(getOperation()->operand_begin(), valueRange.first + valueRange.second)}; } ::mlir::TypedValue<::mlir::VectorType> getA() { return ::llvm::cast<::mlir::TypedValue<::mlir::VectorType>>(*getODSOperands(0).begin()); } ::mlir::TypedValue<::mlir::VectorType> getB() { return ::llvm::cast<::mlir::TypedValue<::mlir::VectorType>>(*getODSOperands(1).begin()); } ::mlir::TypedValue<::mlir::VectorType> getC() { return ::llvm::cast<::mlir::TypedValue<::mlir::VectorType>>(*getODSOperands(2).begin()); } ::mlir::TypedValue<::mlir::IntegerType> getIndex() { return ::llvm::cast<::mlir::TypedValue<::mlir::IntegerType>>(*getODSOperands(3).begin()); } ::mlir::OpOperand &getAMutable() { auto range = getODSOperandIndexAndLength(0); return getOperation()->getOpOperand(range.first); } ::mlir::OpOperand &getBMutable() { auto range = getODSOperandIndexAndLength(1); return getOperation()->getOpOperand(range.first); } ::mlir::OpOperand &getCMutable() { auto range = getODSOperandIndexAndLength(2); return getOperation()->getOpOperand(range.first); } ::mlir::OpOperand &getIndexMutable() { auto range = getODSOperandIndexAndLength(3); return getOperation()->getOpOperand(range.first); } std::pair getODSResultIndexAndLength(unsigned index) { return {index, 1}; } ::mlir::Operation::result_range getODSResults(unsigned index) { auto valueRange = getODSResultIndexAndLength(index); return {std::next(getOperation()->result_begin(), valueRange.first), std::next(getOperation()->result_begin(), valueRange.first + valueRange.second)}; } ::mlir::TypedValue<::mlir::VectorType> getRes() { return ::llvm::cast<::mlir::TypedValue<::mlir::VectorType>>(*getODSResults(0).begin()); } static ::llvm::LogicalResult setPropertiesFromAttr(Properties &prop, ::mlir::Attribute attr, ::llvm::function_ref<::mlir::InFlightDiagnostic()> emitError); static ::mlir::Attribute getPropertiesAsAttr(::mlir::MLIRContext *ctx, const Properties &prop); static llvm::hash_code computePropertiesHash(const Properties &prop); static std::optional getInherentAttr(::mlir::MLIRContext *ctx, const Properties &prop, llvm::StringRef name); static void setInherentAttr(Properties &prop, llvm::StringRef name, mlir::Attribute value); static void populateInherentAttrs(::mlir::MLIRContext *ctx, const Properties &prop, ::mlir::NamedAttrList &attrs); static ::llvm::LogicalResult verifyInherentAttrs(::mlir::OperationName opName, ::mlir::NamedAttrList &attrs, llvm::function_ref<::mlir::InFlightDiagnostic()> emitError); static ::llvm::LogicalResult readProperties(::mlir::DialectBytecodeReader &reader, ::mlir::OperationState &state); void writeProperties(::mlir::DialectBytecodeWriter &writer); ::mlir::IntegerAttr getCbszAttr() { return ::llvm::cast<::mlir::IntegerAttr>(getProperties().cbsz); } uint32_t getCbsz(); ::mlir::IntegerAttr getAbidAttr() { return ::llvm::cast<::mlir::IntegerAttr>(getProperties().abid); } uint32_t getAbid(); void setCbszAttr(::mlir::IntegerAttr attr) { getProperties().cbsz = attr; } void setCbsz(uint32_t attrValue); void setAbidAttr(::mlir::IntegerAttr attr) { getProperties().abid = attr; } void setAbid(uint32_t attrValue); static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::Type res, ::mlir::Value a, ::mlir::Value b, ::mlir::Value c, ::mlir::Value index, ::mlir::IntegerAttr cbsz, ::mlir::IntegerAttr abid); static smfmac_f32_32x32x32_fp8_fp8 create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::Type res, ::mlir::Value a, ::mlir::Value b, ::mlir::Value c, ::mlir::Value index, ::mlir::IntegerAttr cbsz, ::mlir::IntegerAttr abid); static smfmac_f32_32x32x32_fp8_fp8 create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::Type res, ::mlir::Value a, ::mlir::Value b, ::mlir::Value c, ::mlir::Value index, ::mlir::IntegerAttr cbsz, ::mlir::IntegerAttr abid); static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::Value a, ::mlir::Value b, ::mlir::Value c, ::mlir::Value index, ::mlir::IntegerAttr cbsz, ::mlir::IntegerAttr abid); static smfmac_f32_32x32x32_fp8_fp8 create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::Value a, ::mlir::Value b, ::mlir::Value c, ::mlir::Value index, ::mlir::IntegerAttr cbsz, ::mlir::IntegerAttr abid); static smfmac_f32_32x32x32_fp8_fp8 create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::Value a, ::mlir::Value b, ::mlir::Value c, ::mlir::Value index, ::mlir::IntegerAttr cbsz, ::mlir::IntegerAttr abid); static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::Type res, ::mlir::Value a, ::mlir::Value b, ::mlir::Value c, ::mlir::Value index, uint32_t cbsz, uint32_t abid); static smfmac_f32_32x32x32_fp8_fp8 create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::Type res, ::mlir::Value a, ::mlir::Value b, ::mlir::Value c, ::mlir::Value index, uint32_t cbsz, uint32_t abid); static smfmac_f32_32x32x32_fp8_fp8 create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::Type res, ::mlir::Value a, ::mlir::Value b, ::mlir::Value c, ::mlir::Value index, uint32_t cbsz, uint32_t abid); static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::Value a, ::mlir::Value b, ::mlir::Value c, ::mlir::Value index, uint32_t cbsz, uint32_t abid); static smfmac_f32_32x32x32_fp8_fp8 create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::Value a, ::mlir::Value b, ::mlir::Value c, ::mlir::Value index, uint32_t cbsz, uint32_t abid); static smfmac_f32_32x32x32_fp8_fp8 create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::Value a, ::mlir::Value b, ::mlir::Value c, ::mlir::Value index, uint32_t cbsz, uint32_t abid); static void build(::mlir::OpBuilder &, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, ::llvm::ArrayRef<::mlir::NamedAttribute> attributes = {}); static smfmac_f32_32x32x32_fp8_fp8 create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, ::llvm::ArrayRef<::mlir::NamedAttribute> attributes = {}); static smfmac_f32_32x32x32_fp8_fp8 create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, ::llvm::ArrayRef<::mlir::NamedAttribute> attributes = {}); static void build(::mlir::OpBuilder &, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, const Properties &properties, ::llvm::ArrayRef<::mlir::NamedAttribute> discardableAttributes = {}); static smfmac_f32_32x32x32_fp8_fp8 create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, const Properties &properties, ::llvm::ArrayRef<::mlir::NamedAttribute> discardableAttributes = {}); static smfmac_f32_32x32x32_fp8_fp8 create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, const Properties &properties, ::llvm::ArrayRef<::mlir::NamedAttribute> discardableAttributes = {}); ::llvm::LogicalResult verifyInvariantsImpl(); ::llvm::LogicalResult verifyInvariants(); static ::mlir::ParseResult parse(::mlir::OpAsmParser &parser, ::mlir::OperationState &result); void print(::mlir::OpAsmPrinter &_odsPrinter); private: ::mlir::StringAttr getAttributeNameForIndex(unsigned index) { return getAttributeNameForIndex((*this)->getName(), index); } static ::mlir::StringAttr getAttributeNameForIndex(::mlir::OperationName name, unsigned index) { assert(index < 2 && "invalid attribute index"); assert(name.getStringRef() == getOperationName() && "invalid operation name"); assert(name.isRegistered() && "Operation isn't registered, missing a " "dependent dialect loading?"); return name.getAttributeNames()[index]; } public: }; } // namespace mlir::ROCDL MLIR_DECLARE_EXPLICIT_TYPE_ID(::mlir::ROCDL::smfmac_f32_32x32x32_fp8_fp8) MLIR_DECLARE_EXPLICIT_TYPE_ID(::mlir::ROCDL::detail::smfmac_f32_32x32x32_fp8_fp8GenericAdaptorBase::Properties) namespace mlir::ROCDL { //===----------------------------------------------------------------------===// // ::mlir::ROCDL::smfmac_f32_32x32x64_bf8_bf8 declarations //===----------------------------------------------------------------------===// namespace detail { class smfmac_f32_32x32x64_bf8_bf8GenericAdaptorBase { public: struct Properties { using abidTy = ::mlir::IntegerAttr; abidTy abid; auto getAbid() const { auto &propStorage = this->abid; return ::llvm::cast<::mlir::IntegerAttr>(propStorage); } void setAbid(const ::mlir::IntegerAttr &propValue) { this->abid = propValue; } using cbszTy = ::mlir::IntegerAttr; cbszTy cbsz; auto getCbsz() const { auto &propStorage = this->cbsz; return ::llvm::cast<::mlir::IntegerAttr>(propStorage); } void setCbsz(const ::mlir::IntegerAttr &propValue) { this->cbsz = propValue; } bool operator==(const Properties &rhs) const { return rhs.abid == this->abid && rhs.cbsz == this->cbsz && true; } bool operator!=(const Properties &rhs) const { return !(*this == rhs); } }; protected: ::mlir::DictionaryAttr odsAttrs; ::std::optional<::mlir::OperationName> odsOpName; Properties properties; ::mlir::RegionRange odsRegions; public: smfmac_f32_32x32x64_bf8_bf8GenericAdaptorBase(::mlir::DictionaryAttr attrs, const Properties &properties, ::mlir::RegionRange regions = {}) : odsAttrs(attrs), properties(properties), odsRegions(regions) { if (odsAttrs) odsOpName.emplace("rocdl.smfmac.f32.32x32x64.bf8.bf8", odsAttrs.getContext()); } smfmac_f32_32x32x64_bf8_bf8GenericAdaptorBase(smfmac_f32_32x32x64_bf8_bf8 op); std::pair getODSOperandIndexAndLength(unsigned index, unsigned odsOperandsSize) { return {index, 1}; } const Properties &getProperties() { return properties; } ::mlir::DictionaryAttr getAttributes() { return odsAttrs; } ::mlir::IntegerAttr getCbszAttr() { auto attr = ::llvm::cast<::mlir::IntegerAttr>(getProperties().cbsz); return attr; } uint32_t getCbsz(); ::mlir::IntegerAttr getAbidAttr() { auto attr = ::llvm::cast<::mlir::IntegerAttr>(getProperties().abid); return attr; } uint32_t getAbid(); }; } // namespace detail template class smfmac_f32_32x32x64_bf8_bf8GenericAdaptor : public detail::smfmac_f32_32x32x64_bf8_bf8GenericAdaptorBase { using ValueT = ::llvm::detail::ValueOfRange; using Base = detail::smfmac_f32_32x32x64_bf8_bf8GenericAdaptorBase; static constexpr int odsIndex_a = 0; static constexpr int odsIndex_b = 1; static constexpr int odsIndex_c = 2; static constexpr int odsIndex_index = 3; public: smfmac_f32_32x32x64_bf8_bf8GenericAdaptor(RangeT values, ::mlir::DictionaryAttr attrs, const Properties &properties, ::mlir::RegionRange regions = {}) : Base(attrs, properties, regions), odsOperands(values) {} smfmac_f32_32x32x64_bf8_bf8GenericAdaptor(RangeT values, ::mlir::DictionaryAttr attrs, ::mlir::PropertyRef properties, ::mlir::RegionRange regions = {}) : smfmac_f32_32x32x64_bf8_bf8GenericAdaptor(values, attrs, (properties ? *properties.as() : Properties{}), regions) {} smfmac_f32_32x32x64_bf8_bf8GenericAdaptor(RangeT values, ::mlir::DictionaryAttr attrs = nullptr) : smfmac_f32_32x32x64_bf8_bf8GenericAdaptor(values, attrs, Properties{}, {}) {} smfmac_f32_32x32x64_bf8_bf8GenericAdaptor(RangeT values, const smfmac_f32_32x32x64_bf8_bf8GenericAdaptorBase &base) : Base(base), odsOperands(values) {} template >> smfmac_f32_32x32x64_bf8_bf8GenericAdaptor(RangeT values, LateInst op) : Base(op), odsOperands(values) {} std::pair getODSOperandIndexAndLength(unsigned index) { return Base::getODSOperandIndexAndLength(index, odsOperands.size()); } RangeT getODSOperands(unsigned index) { auto valueRange = getODSOperandIndexAndLength(index); return {std::next(odsOperands.begin(), valueRange.first), std::next(odsOperands.begin(), valueRange.first + valueRange.second)}; } ValueT getA() { return (*getODSOperands(0).begin()); } ValueT getB() { return (*getODSOperands(1).begin()); } ValueT getC() { return (*getODSOperands(2).begin()); } ValueT getIndex() { return (*getODSOperands(3).begin()); } RangeT getOperands() { return odsOperands; } private: RangeT odsOperands; }; class smfmac_f32_32x32x64_bf8_bf8Adaptor : public smfmac_f32_32x32x64_bf8_bf8GenericAdaptor<::mlir::ValueRange> { public: using smfmac_f32_32x32x64_bf8_bf8GenericAdaptor::smfmac_f32_32x32x64_bf8_bf8GenericAdaptor; smfmac_f32_32x32x64_bf8_bf8Adaptor(smfmac_f32_32x32x64_bf8_bf8 op); ::llvm::LogicalResult verify(::mlir::Location loc); }; class smfmac_f32_32x32x64_bf8_bf8 : public ::mlir::Op::Impl, ::mlir::OpTrait::ZeroSuccessors, ::mlir::OpTrait::NOperands<4>::Impl, ::mlir::OpTrait::OpInvariants, ::mlir::BytecodeOpInterface::Trait> { public: using Op::Op; using Op::print; using Adaptor = smfmac_f32_32x32x64_bf8_bf8Adaptor; template using GenericAdaptor = smfmac_f32_32x32x64_bf8_bf8GenericAdaptor; using FoldAdaptor = GenericAdaptor<::llvm::ArrayRef<::mlir::Attribute>>; static constexpr int odsIndex_a = 0; static constexpr int odsIndex_b = 1; static constexpr int odsIndex_c = 2; static constexpr int odsIndex_index = 3; using Properties = FoldAdaptor::Properties; static ::llvm::ArrayRef<::llvm::StringRef> getAttributeNames() { static ::llvm::StringRef attrNames[] = {::llvm::StringRef("abid"), ::llvm::StringRef("cbsz")}; return ::llvm::ArrayRef(attrNames); } ::mlir::StringAttr getAbidAttrName() { return getAttributeNameForIndex(0); } static ::mlir::StringAttr getAbidAttrName(::mlir::OperationName name) { return getAttributeNameForIndex(name, 0); } ::mlir::StringAttr getCbszAttrName() { return getAttributeNameForIndex(1); } static ::mlir::StringAttr getCbszAttrName(::mlir::OperationName name) { return getAttributeNameForIndex(name, 1); } static constexpr ::llvm::StringLiteral getOperationName() { return ::llvm::StringLiteral("rocdl.smfmac.f32.32x32x64.bf8.bf8"); } std::pair getODSOperandIndexAndLength(unsigned index) { return {index, 1}; } ::mlir::Operation::operand_range getODSOperands(unsigned index) { auto valueRange = getODSOperandIndexAndLength(index); return {std::next(getOperation()->operand_begin(), valueRange.first), std::next(getOperation()->operand_begin(), valueRange.first + valueRange.second)}; } ::mlir::TypedValue<::mlir::VectorType> getA() { return ::llvm::cast<::mlir::TypedValue<::mlir::VectorType>>(*getODSOperands(0).begin()); } ::mlir::TypedValue<::mlir::VectorType> getB() { return ::llvm::cast<::mlir::TypedValue<::mlir::VectorType>>(*getODSOperands(1).begin()); } ::mlir::TypedValue<::mlir::VectorType> getC() { return ::llvm::cast<::mlir::TypedValue<::mlir::VectorType>>(*getODSOperands(2).begin()); } ::mlir::TypedValue<::mlir::IntegerType> getIndex() { return ::llvm::cast<::mlir::TypedValue<::mlir::IntegerType>>(*getODSOperands(3).begin()); } ::mlir::OpOperand &getAMutable() { auto range = getODSOperandIndexAndLength(0); return getOperation()->getOpOperand(range.first); } ::mlir::OpOperand &getBMutable() { auto range = getODSOperandIndexAndLength(1); return getOperation()->getOpOperand(range.first); } ::mlir::OpOperand &getCMutable() { auto range = getODSOperandIndexAndLength(2); return getOperation()->getOpOperand(range.first); } ::mlir::OpOperand &getIndexMutable() { auto range = getODSOperandIndexAndLength(3); return getOperation()->getOpOperand(range.first); } std::pair getODSResultIndexAndLength(unsigned index) { return {index, 1}; } ::mlir::Operation::result_range getODSResults(unsigned index) { auto valueRange = getODSResultIndexAndLength(index); return {std::next(getOperation()->result_begin(), valueRange.first), std::next(getOperation()->result_begin(), valueRange.first + valueRange.second)}; } ::mlir::TypedValue<::mlir::VectorType> getRes() { return ::llvm::cast<::mlir::TypedValue<::mlir::VectorType>>(*getODSResults(0).begin()); } static ::llvm::LogicalResult setPropertiesFromAttr(Properties &prop, ::mlir::Attribute attr, ::llvm::function_ref<::mlir::InFlightDiagnostic()> emitError); static ::mlir::Attribute getPropertiesAsAttr(::mlir::MLIRContext *ctx, const Properties &prop); static llvm::hash_code computePropertiesHash(const Properties &prop); static std::optional getInherentAttr(::mlir::MLIRContext *ctx, const Properties &prop, llvm::StringRef name); static void setInherentAttr(Properties &prop, llvm::StringRef name, mlir::Attribute value); static void populateInherentAttrs(::mlir::MLIRContext *ctx, const Properties &prop, ::mlir::NamedAttrList &attrs); static ::llvm::LogicalResult verifyInherentAttrs(::mlir::OperationName opName, ::mlir::NamedAttrList &attrs, llvm::function_ref<::mlir::InFlightDiagnostic()> emitError); static ::llvm::LogicalResult readProperties(::mlir::DialectBytecodeReader &reader, ::mlir::OperationState &state); void writeProperties(::mlir::DialectBytecodeWriter &writer); ::mlir::IntegerAttr getCbszAttr() { return ::llvm::cast<::mlir::IntegerAttr>(getProperties().cbsz); } uint32_t getCbsz(); ::mlir::IntegerAttr getAbidAttr() { return ::llvm::cast<::mlir::IntegerAttr>(getProperties().abid); } uint32_t getAbid(); void setCbszAttr(::mlir::IntegerAttr attr) { getProperties().cbsz = attr; } void setCbsz(uint32_t attrValue); void setAbidAttr(::mlir::IntegerAttr attr) { getProperties().abid = attr; } void setAbid(uint32_t attrValue); static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::Type res, ::mlir::Value a, ::mlir::Value b, ::mlir::Value c, ::mlir::Value index, ::mlir::IntegerAttr cbsz, ::mlir::IntegerAttr abid); static smfmac_f32_32x32x64_bf8_bf8 create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::Type res, ::mlir::Value a, ::mlir::Value b, ::mlir::Value c, ::mlir::Value index, ::mlir::IntegerAttr cbsz, ::mlir::IntegerAttr abid); static smfmac_f32_32x32x64_bf8_bf8 create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::Type res, ::mlir::Value a, ::mlir::Value b, ::mlir::Value c, ::mlir::Value index, ::mlir::IntegerAttr cbsz, ::mlir::IntegerAttr abid); static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::Value a, ::mlir::Value b, ::mlir::Value c, ::mlir::Value index, ::mlir::IntegerAttr cbsz, ::mlir::IntegerAttr abid); static smfmac_f32_32x32x64_bf8_bf8 create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::Value a, ::mlir::Value b, ::mlir::Value c, ::mlir::Value index, ::mlir::IntegerAttr cbsz, ::mlir::IntegerAttr abid); static smfmac_f32_32x32x64_bf8_bf8 create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::Value a, ::mlir::Value b, ::mlir::Value c, ::mlir::Value index, ::mlir::IntegerAttr cbsz, ::mlir::IntegerAttr abid); static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::Type res, ::mlir::Value a, ::mlir::Value b, ::mlir::Value c, ::mlir::Value index, uint32_t cbsz, uint32_t abid); static smfmac_f32_32x32x64_bf8_bf8 create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::Type res, ::mlir::Value a, ::mlir::Value b, ::mlir::Value c, ::mlir::Value index, uint32_t cbsz, uint32_t abid); static smfmac_f32_32x32x64_bf8_bf8 create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::Type res, ::mlir::Value a, ::mlir::Value b, ::mlir::Value c, ::mlir::Value index, uint32_t cbsz, uint32_t abid); static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::Value a, ::mlir::Value b, ::mlir::Value c, ::mlir::Value index, uint32_t cbsz, uint32_t abid); static smfmac_f32_32x32x64_bf8_bf8 create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::Value a, ::mlir::Value b, ::mlir::Value c, ::mlir::Value index, uint32_t cbsz, uint32_t abid); static smfmac_f32_32x32x64_bf8_bf8 create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::Value a, ::mlir::Value b, ::mlir::Value c, ::mlir::Value index, uint32_t cbsz, uint32_t abid); static void build(::mlir::OpBuilder &, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, ::llvm::ArrayRef<::mlir::NamedAttribute> attributes = {}); static smfmac_f32_32x32x64_bf8_bf8 create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, ::llvm::ArrayRef<::mlir::NamedAttribute> attributes = {}); static smfmac_f32_32x32x64_bf8_bf8 create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, ::llvm::ArrayRef<::mlir::NamedAttribute> attributes = {}); static void build(::mlir::OpBuilder &, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, const Properties &properties, ::llvm::ArrayRef<::mlir::NamedAttribute> discardableAttributes = {}); static smfmac_f32_32x32x64_bf8_bf8 create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, const Properties &properties, ::llvm::ArrayRef<::mlir::NamedAttribute> discardableAttributes = {}); static smfmac_f32_32x32x64_bf8_bf8 create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, const Properties &properties, ::llvm::ArrayRef<::mlir::NamedAttribute> discardableAttributes = {}); ::llvm::LogicalResult verifyInvariantsImpl(); ::llvm::LogicalResult verifyInvariants(); static ::mlir::ParseResult parse(::mlir::OpAsmParser &parser, ::mlir::OperationState &result); void print(::mlir::OpAsmPrinter &_odsPrinter); private: ::mlir::StringAttr getAttributeNameForIndex(unsigned index) { return getAttributeNameForIndex((*this)->getName(), index); } static ::mlir::StringAttr getAttributeNameForIndex(::mlir::OperationName name, unsigned index) { assert(index < 2 && "invalid attribute index"); assert(name.getStringRef() == getOperationName() && "invalid operation name"); assert(name.isRegistered() && "Operation isn't registered, missing a " "dependent dialect loading?"); return name.getAttributeNames()[index]; } public: }; } // namespace mlir::ROCDL MLIR_DECLARE_EXPLICIT_TYPE_ID(::mlir::ROCDL::smfmac_f32_32x32x64_bf8_bf8) MLIR_DECLARE_EXPLICIT_TYPE_ID(::mlir::ROCDL::detail::smfmac_f32_32x32x64_bf8_bf8GenericAdaptorBase::Properties) namespace mlir::ROCDL { //===----------------------------------------------------------------------===// // ::mlir::ROCDL::smfmac_f32_32x32x64_bf8_fp8 declarations //===----------------------------------------------------------------------===// namespace detail { class smfmac_f32_32x32x64_bf8_fp8GenericAdaptorBase { public: struct Properties { using abidTy = ::mlir::IntegerAttr; abidTy abid; auto getAbid() const { auto &propStorage = this->abid; return ::llvm::cast<::mlir::IntegerAttr>(propStorage); } void setAbid(const ::mlir::IntegerAttr &propValue) { this->abid = propValue; } using cbszTy = ::mlir::IntegerAttr; cbszTy cbsz; auto getCbsz() const { auto &propStorage = this->cbsz; return ::llvm::cast<::mlir::IntegerAttr>(propStorage); } void setCbsz(const ::mlir::IntegerAttr &propValue) { this->cbsz = propValue; } bool operator==(const Properties &rhs) const { return rhs.abid == this->abid && rhs.cbsz == this->cbsz && true; } bool operator!=(const Properties &rhs) const { return !(*this == rhs); } }; protected: ::mlir::DictionaryAttr odsAttrs; ::std::optional<::mlir::OperationName> odsOpName; Properties properties; ::mlir::RegionRange odsRegions; public: smfmac_f32_32x32x64_bf8_fp8GenericAdaptorBase(::mlir::DictionaryAttr attrs, const Properties &properties, ::mlir::RegionRange regions = {}) : odsAttrs(attrs), properties(properties), odsRegions(regions) { if (odsAttrs) odsOpName.emplace("rocdl.smfmac.f32.32x32x64.bf8.fp8", odsAttrs.getContext()); } smfmac_f32_32x32x64_bf8_fp8GenericAdaptorBase(smfmac_f32_32x32x64_bf8_fp8 op); std::pair getODSOperandIndexAndLength(unsigned index, unsigned odsOperandsSize) { return {index, 1}; } const Properties &getProperties() { return properties; } ::mlir::DictionaryAttr getAttributes() { return odsAttrs; } ::mlir::IntegerAttr getCbszAttr() { auto attr = ::llvm::cast<::mlir::IntegerAttr>(getProperties().cbsz); return attr; } uint32_t getCbsz(); ::mlir::IntegerAttr getAbidAttr() { auto attr = ::llvm::cast<::mlir::IntegerAttr>(getProperties().abid); return attr; } uint32_t getAbid(); }; } // namespace detail template class smfmac_f32_32x32x64_bf8_fp8GenericAdaptor : public detail::smfmac_f32_32x32x64_bf8_fp8GenericAdaptorBase { using ValueT = ::llvm::detail::ValueOfRange; using Base = detail::smfmac_f32_32x32x64_bf8_fp8GenericAdaptorBase; static constexpr int odsIndex_a = 0; static constexpr int odsIndex_b = 1; static constexpr int odsIndex_c = 2; static constexpr int odsIndex_index = 3; public: smfmac_f32_32x32x64_bf8_fp8GenericAdaptor(RangeT values, ::mlir::DictionaryAttr attrs, const Properties &properties, ::mlir::RegionRange regions = {}) : Base(attrs, properties, regions), odsOperands(values) {} smfmac_f32_32x32x64_bf8_fp8GenericAdaptor(RangeT values, ::mlir::DictionaryAttr attrs, ::mlir::PropertyRef properties, ::mlir::RegionRange regions = {}) : smfmac_f32_32x32x64_bf8_fp8GenericAdaptor(values, attrs, (properties ? *properties.as() : Properties{}), regions) {} smfmac_f32_32x32x64_bf8_fp8GenericAdaptor(RangeT values, ::mlir::DictionaryAttr attrs = nullptr) : smfmac_f32_32x32x64_bf8_fp8GenericAdaptor(values, attrs, Properties{}, {}) {} smfmac_f32_32x32x64_bf8_fp8GenericAdaptor(RangeT values, const smfmac_f32_32x32x64_bf8_fp8GenericAdaptorBase &base) : Base(base), odsOperands(values) {} template >> smfmac_f32_32x32x64_bf8_fp8GenericAdaptor(RangeT values, LateInst op) : Base(op), odsOperands(values) {} std::pair getODSOperandIndexAndLength(unsigned index) { return Base::getODSOperandIndexAndLength(index, odsOperands.size()); } RangeT getODSOperands(unsigned index) { auto valueRange = getODSOperandIndexAndLength(index); return {std::next(odsOperands.begin(), valueRange.first), std::next(odsOperands.begin(), valueRange.first + valueRange.second)}; } ValueT getA() { return (*getODSOperands(0).begin()); } ValueT getB() { return (*getODSOperands(1).begin()); } ValueT getC() { return (*getODSOperands(2).begin()); } ValueT getIndex() { return (*getODSOperands(3).begin()); } RangeT getOperands() { return odsOperands; } private: RangeT odsOperands; }; class smfmac_f32_32x32x64_bf8_fp8Adaptor : public smfmac_f32_32x32x64_bf8_fp8GenericAdaptor<::mlir::ValueRange> { public: using smfmac_f32_32x32x64_bf8_fp8GenericAdaptor::smfmac_f32_32x32x64_bf8_fp8GenericAdaptor; smfmac_f32_32x32x64_bf8_fp8Adaptor(smfmac_f32_32x32x64_bf8_fp8 op); ::llvm::LogicalResult verify(::mlir::Location loc); }; class smfmac_f32_32x32x64_bf8_fp8 : public ::mlir::Op::Impl, ::mlir::OpTrait::ZeroSuccessors, ::mlir::OpTrait::NOperands<4>::Impl, ::mlir::OpTrait::OpInvariants, ::mlir::BytecodeOpInterface::Trait> { public: using Op::Op; using Op::print; using Adaptor = smfmac_f32_32x32x64_bf8_fp8Adaptor; template using GenericAdaptor = smfmac_f32_32x32x64_bf8_fp8GenericAdaptor; using FoldAdaptor = GenericAdaptor<::llvm::ArrayRef<::mlir::Attribute>>; static constexpr int odsIndex_a = 0; static constexpr int odsIndex_b = 1; static constexpr int odsIndex_c = 2; static constexpr int odsIndex_index = 3; using Properties = FoldAdaptor::Properties; static ::llvm::ArrayRef<::llvm::StringRef> getAttributeNames() { static ::llvm::StringRef attrNames[] = {::llvm::StringRef("abid"), ::llvm::StringRef("cbsz")}; return ::llvm::ArrayRef(attrNames); } ::mlir::StringAttr getAbidAttrName() { return getAttributeNameForIndex(0); } static ::mlir::StringAttr getAbidAttrName(::mlir::OperationName name) { return getAttributeNameForIndex(name, 0); } ::mlir::StringAttr getCbszAttrName() { return getAttributeNameForIndex(1); } static ::mlir::StringAttr getCbszAttrName(::mlir::OperationName name) { return getAttributeNameForIndex(name, 1); } static constexpr ::llvm::StringLiteral getOperationName() { return ::llvm::StringLiteral("rocdl.smfmac.f32.32x32x64.bf8.fp8"); } std::pair getODSOperandIndexAndLength(unsigned index) { return {index, 1}; } ::mlir::Operation::operand_range getODSOperands(unsigned index) { auto valueRange = getODSOperandIndexAndLength(index); return {std::next(getOperation()->operand_begin(), valueRange.first), std::next(getOperation()->operand_begin(), valueRange.first + valueRange.second)}; } ::mlir::TypedValue<::mlir::VectorType> getA() { return ::llvm::cast<::mlir::TypedValue<::mlir::VectorType>>(*getODSOperands(0).begin()); } ::mlir::TypedValue<::mlir::VectorType> getB() { return ::llvm::cast<::mlir::TypedValue<::mlir::VectorType>>(*getODSOperands(1).begin()); } ::mlir::TypedValue<::mlir::VectorType> getC() { return ::llvm::cast<::mlir::TypedValue<::mlir::VectorType>>(*getODSOperands(2).begin()); } ::mlir::TypedValue<::mlir::IntegerType> getIndex() { return ::llvm::cast<::mlir::TypedValue<::mlir::IntegerType>>(*getODSOperands(3).begin()); } ::mlir::OpOperand &getAMutable() { auto range = getODSOperandIndexAndLength(0); return getOperation()->getOpOperand(range.first); } ::mlir::OpOperand &getBMutable() { auto range = getODSOperandIndexAndLength(1); return getOperation()->getOpOperand(range.first); } ::mlir::OpOperand &getCMutable() { auto range = getODSOperandIndexAndLength(2); return getOperation()->getOpOperand(range.first); } ::mlir::OpOperand &getIndexMutable() { auto range = getODSOperandIndexAndLength(3); return getOperation()->getOpOperand(range.first); } std::pair getODSResultIndexAndLength(unsigned index) { return {index, 1}; } ::mlir::Operation::result_range getODSResults(unsigned index) { auto valueRange = getODSResultIndexAndLength(index); return {std::next(getOperation()->result_begin(), valueRange.first), std::next(getOperation()->result_begin(), valueRange.first + valueRange.second)}; } ::mlir::TypedValue<::mlir::VectorType> getRes() { return ::llvm::cast<::mlir::TypedValue<::mlir::VectorType>>(*getODSResults(0).begin()); } static ::llvm::LogicalResult setPropertiesFromAttr(Properties &prop, ::mlir::Attribute attr, ::llvm::function_ref<::mlir::InFlightDiagnostic()> emitError); static ::mlir::Attribute getPropertiesAsAttr(::mlir::MLIRContext *ctx, const Properties &prop); static llvm::hash_code computePropertiesHash(const Properties &prop); static std::optional getInherentAttr(::mlir::MLIRContext *ctx, const Properties &prop, llvm::StringRef name); static void setInherentAttr(Properties &prop, llvm::StringRef name, mlir::Attribute value); static void populateInherentAttrs(::mlir::MLIRContext *ctx, const Properties &prop, ::mlir::NamedAttrList &attrs); static ::llvm::LogicalResult verifyInherentAttrs(::mlir::OperationName opName, ::mlir::NamedAttrList &attrs, llvm::function_ref<::mlir::InFlightDiagnostic()> emitError); static ::llvm::LogicalResult readProperties(::mlir::DialectBytecodeReader &reader, ::mlir::OperationState &state); void writeProperties(::mlir::DialectBytecodeWriter &writer); ::mlir::IntegerAttr getCbszAttr() { return ::llvm::cast<::mlir::IntegerAttr>(getProperties().cbsz); } uint32_t getCbsz(); ::mlir::IntegerAttr getAbidAttr() { return ::llvm::cast<::mlir::IntegerAttr>(getProperties().abid); } uint32_t getAbid(); void setCbszAttr(::mlir::IntegerAttr attr) { getProperties().cbsz = attr; } void setCbsz(uint32_t attrValue); void setAbidAttr(::mlir::IntegerAttr attr) { getProperties().abid = attr; } void setAbid(uint32_t attrValue); static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::Type res, ::mlir::Value a, ::mlir::Value b, ::mlir::Value c, ::mlir::Value index, ::mlir::IntegerAttr cbsz, ::mlir::IntegerAttr abid); static smfmac_f32_32x32x64_bf8_fp8 create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::Type res, ::mlir::Value a, ::mlir::Value b, ::mlir::Value c, ::mlir::Value index, ::mlir::IntegerAttr cbsz, ::mlir::IntegerAttr abid); static smfmac_f32_32x32x64_bf8_fp8 create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::Type res, ::mlir::Value a, ::mlir::Value b, ::mlir::Value c, ::mlir::Value index, ::mlir::IntegerAttr cbsz, ::mlir::IntegerAttr abid); static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::Value a, ::mlir::Value b, ::mlir::Value c, ::mlir::Value index, ::mlir::IntegerAttr cbsz, ::mlir::IntegerAttr abid); static smfmac_f32_32x32x64_bf8_fp8 create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::Value a, ::mlir::Value b, ::mlir::Value c, ::mlir::Value index, ::mlir::IntegerAttr cbsz, ::mlir::IntegerAttr abid); static smfmac_f32_32x32x64_bf8_fp8 create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::Value a, ::mlir::Value b, ::mlir::Value c, ::mlir::Value index, ::mlir::IntegerAttr cbsz, ::mlir::IntegerAttr abid); static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::Type res, ::mlir::Value a, ::mlir::Value b, ::mlir::Value c, ::mlir::Value index, uint32_t cbsz, uint32_t abid); static smfmac_f32_32x32x64_bf8_fp8 create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::Type res, ::mlir::Value a, ::mlir::Value b, ::mlir::Value c, ::mlir::Value index, uint32_t cbsz, uint32_t abid); static smfmac_f32_32x32x64_bf8_fp8 create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::Type res, ::mlir::Value a, ::mlir::Value b, ::mlir::Value c, ::mlir::Value index, uint32_t cbsz, uint32_t abid); static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::Value a, ::mlir::Value b, ::mlir::Value c, ::mlir::Value index, uint32_t cbsz, uint32_t abid); static smfmac_f32_32x32x64_bf8_fp8 create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::Value a, ::mlir::Value b, ::mlir::Value c, ::mlir::Value index, uint32_t cbsz, uint32_t abid); static smfmac_f32_32x32x64_bf8_fp8 create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::Value a, ::mlir::Value b, ::mlir::Value c, ::mlir::Value index, uint32_t cbsz, uint32_t abid); static void build(::mlir::OpBuilder &, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, ::llvm::ArrayRef<::mlir::NamedAttribute> attributes = {}); static smfmac_f32_32x32x64_bf8_fp8 create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, ::llvm::ArrayRef<::mlir::NamedAttribute> attributes = {}); static smfmac_f32_32x32x64_bf8_fp8 create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, ::llvm::ArrayRef<::mlir::NamedAttribute> attributes = {}); static void build(::mlir::OpBuilder &, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, const Properties &properties, ::llvm::ArrayRef<::mlir::NamedAttribute> discardableAttributes = {}); static smfmac_f32_32x32x64_bf8_fp8 create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, const Properties &properties, ::llvm::ArrayRef<::mlir::NamedAttribute> discardableAttributes = {}); static smfmac_f32_32x32x64_bf8_fp8 create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, const Properties &properties, ::llvm::ArrayRef<::mlir::NamedAttribute> discardableAttributes = {}); ::llvm::LogicalResult verifyInvariantsImpl(); ::llvm::LogicalResult verifyInvariants(); static ::mlir::ParseResult parse(::mlir::OpAsmParser &parser, ::mlir::OperationState &result); void print(::mlir::OpAsmPrinter &_odsPrinter); private: ::mlir::StringAttr getAttributeNameForIndex(unsigned index) { return getAttributeNameForIndex((*this)->getName(), index); } static ::mlir::StringAttr getAttributeNameForIndex(::mlir::OperationName name, unsigned index) { assert(index < 2 && "invalid attribute index"); assert(name.getStringRef() == getOperationName() && "invalid operation name"); assert(name.isRegistered() && "Operation isn't registered, missing a " "dependent dialect loading?"); return name.getAttributeNames()[index]; } public: }; } // namespace mlir::ROCDL MLIR_DECLARE_EXPLICIT_TYPE_ID(::mlir::ROCDL::smfmac_f32_32x32x64_bf8_fp8) MLIR_DECLARE_EXPLICIT_TYPE_ID(::mlir::ROCDL::detail::smfmac_f32_32x32x64_bf8_fp8GenericAdaptorBase::Properties) namespace mlir::ROCDL { //===----------------------------------------------------------------------===// // ::mlir::ROCDL::smfmac_f32_32x32x64_fp8_bf8 declarations //===----------------------------------------------------------------------===// namespace detail { class smfmac_f32_32x32x64_fp8_bf8GenericAdaptorBase { public: struct Properties { using abidTy = ::mlir::IntegerAttr; abidTy abid; auto getAbid() const { auto &propStorage = this->abid; return ::llvm::cast<::mlir::IntegerAttr>(propStorage); } void setAbid(const ::mlir::IntegerAttr &propValue) { this->abid = propValue; } using cbszTy = ::mlir::IntegerAttr; cbszTy cbsz; auto getCbsz() const { auto &propStorage = this->cbsz; return ::llvm::cast<::mlir::IntegerAttr>(propStorage); } void setCbsz(const ::mlir::IntegerAttr &propValue) { this->cbsz = propValue; } bool operator==(const Properties &rhs) const { return rhs.abid == this->abid && rhs.cbsz == this->cbsz && true; } bool operator!=(const Properties &rhs) const { return !(*this == rhs); } }; protected: ::mlir::DictionaryAttr odsAttrs; ::std::optional<::mlir::OperationName> odsOpName; Properties properties; ::mlir::RegionRange odsRegions; public: smfmac_f32_32x32x64_fp8_bf8GenericAdaptorBase(::mlir::DictionaryAttr attrs, const Properties &properties, ::mlir::RegionRange regions = {}) : odsAttrs(attrs), properties(properties), odsRegions(regions) { if (odsAttrs) odsOpName.emplace("rocdl.smfmac.f32.32x32x64.fp8.bf8", odsAttrs.getContext()); } smfmac_f32_32x32x64_fp8_bf8GenericAdaptorBase(smfmac_f32_32x32x64_fp8_bf8 op); std::pair getODSOperandIndexAndLength(unsigned index, unsigned odsOperandsSize) { return {index, 1}; } const Properties &getProperties() { return properties; } ::mlir::DictionaryAttr getAttributes() { return odsAttrs; } ::mlir::IntegerAttr getCbszAttr() { auto attr = ::llvm::cast<::mlir::IntegerAttr>(getProperties().cbsz); return attr; } uint32_t getCbsz(); ::mlir::IntegerAttr getAbidAttr() { auto attr = ::llvm::cast<::mlir::IntegerAttr>(getProperties().abid); return attr; } uint32_t getAbid(); }; } // namespace detail template class smfmac_f32_32x32x64_fp8_bf8GenericAdaptor : public detail::smfmac_f32_32x32x64_fp8_bf8GenericAdaptorBase { using ValueT = ::llvm::detail::ValueOfRange; using Base = detail::smfmac_f32_32x32x64_fp8_bf8GenericAdaptorBase; static constexpr int odsIndex_a = 0; static constexpr int odsIndex_b = 1; static constexpr int odsIndex_c = 2; static constexpr int odsIndex_index = 3; public: smfmac_f32_32x32x64_fp8_bf8GenericAdaptor(RangeT values, ::mlir::DictionaryAttr attrs, const Properties &properties, ::mlir::RegionRange regions = {}) : Base(attrs, properties, regions), odsOperands(values) {} smfmac_f32_32x32x64_fp8_bf8GenericAdaptor(RangeT values, ::mlir::DictionaryAttr attrs, ::mlir::PropertyRef properties, ::mlir::RegionRange regions = {}) : smfmac_f32_32x32x64_fp8_bf8GenericAdaptor(values, attrs, (properties ? *properties.as() : Properties{}), regions) {} smfmac_f32_32x32x64_fp8_bf8GenericAdaptor(RangeT values, ::mlir::DictionaryAttr attrs = nullptr) : smfmac_f32_32x32x64_fp8_bf8GenericAdaptor(values, attrs, Properties{}, {}) {} smfmac_f32_32x32x64_fp8_bf8GenericAdaptor(RangeT values, const smfmac_f32_32x32x64_fp8_bf8GenericAdaptorBase &base) : Base(base), odsOperands(values) {} template >> smfmac_f32_32x32x64_fp8_bf8GenericAdaptor(RangeT values, LateInst op) : Base(op), odsOperands(values) {} std::pair getODSOperandIndexAndLength(unsigned index) { return Base::getODSOperandIndexAndLength(index, odsOperands.size()); } RangeT getODSOperands(unsigned index) { auto valueRange = getODSOperandIndexAndLength(index); return {std::next(odsOperands.begin(), valueRange.first), std::next(odsOperands.begin(), valueRange.first + valueRange.second)}; } ValueT getA() { return (*getODSOperands(0).begin()); } ValueT getB() { return (*getODSOperands(1).begin()); } ValueT getC() { return (*getODSOperands(2).begin()); } ValueT getIndex() { return (*getODSOperands(3).begin()); } RangeT getOperands() { return odsOperands; } private: RangeT odsOperands; }; class smfmac_f32_32x32x64_fp8_bf8Adaptor : public smfmac_f32_32x32x64_fp8_bf8GenericAdaptor<::mlir::ValueRange> { public: using smfmac_f32_32x32x64_fp8_bf8GenericAdaptor::smfmac_f32_32x32x64_fp8_bf8GenericAdaptor; smfmac_f32_32x32x64_fp8_bf8Adaptor(smfmac_f32_32x32x64_fp8_bf8 op); ::llvm::LogicalResult verify(::mlir::Location loc); }; class smfmac_f32_32x32x64_fp8_bf8 : public ::mlir::Op::Impl, ::mlir::OpTrait::ZeroSuccessors, ::mlir::OpTrait::NOperands<4>::Impl, ::mlir::OpTrait::OpInvariants, ::mlir::BytecodeOpInterface::Trait> { public: using Op::Op; using Op::print; using Adaptor = smfmac_f32_32x32x64_fp8_bf8Adaptor; template using GenericAdaptor = smfmac_f32_32x32x64_fp8_bf8GenericAdaptor; using FoldAdaptor = GenericAdaptor<::llvm::ArrayRef<::mlir::Attribute>>; static constexpr int odsIndex_a = 0; static constexpr int odsIndex_b = 1; static constexpr int odsIndex_c = 2; static constexpr int odsIndex_index = 3; using Properties = FoldAdaptor::Properties; static ::llvm::ArrayRef<::llvm::StringRef> getAttributeNames() { static ::llvm::StringRef attrNames[] = {::llvm::StringRef("abid"), ::llvm::StringRef("cbsz")}; return ::llvm::ArrayRef(attrNames); } ::mlir::StringAttr getAbidAttrName() { return getAttributeNameForIndex(0); } static ::mlir::StringAttr getAbidAttrName(::mlir::OperationName name) { return getAttributeNameForIndex(name, 0); } ::mlir::StringAttr getCbszAttrName() { return getAttributeNameForIndex(1); } static ::mlir::StringAttr getCbszAttrName(::mlir::OperationName name) { return getAttributeNameForIndex(name, 1); } static constexpr ::llvm::StringLiteral getOperationName() { return ::llvm::StringLiteral("rocdl.smfmac.f32.32x32x64.fp8.bf8"); } std::pair getODSOperandIndexAndLength(unsigned index) { return {index, 1}; } ::mlir::Operation::operand_range getODSOperands(unsigned index) { auto valueRange = getODSOperandIndexAndLength(index); return {std::next(getOperation()->operand_begin(), valueRange.first), std::next(getOperation()->operand_begin(), valueRange.first + valueRange.second)}; } ::mlir::TypedValue<::mlir::VectorType> getA() { return ::llvm::cast<::mlir::TypedValue<::mlir::VectorType>>(*getODSOperands(0).begin()); } ::mlir::TypedValue<::mlir::VectorType> getB() { return ::llvm::cast<::mlir::TypedValue<::mlir::VectorType>>(*getODSOperands(1).begin()); } ::mlir::TypedValue<::mlir::VectorType> getC() { return ::llvm::cast<::mlir::TypedValue<::mlir::VectorType>>(*getODSOperands(2).begin()); } ::mlir::TypedValue<::mlir::IntegerType> getIndex() { return ::llvm::cast<::mlir::TypedValue<::mlir::IntegerType>>(*getODSOperands(3).begin()); } ::mlir::OpOperand &getAMutable() { auto range = getODSOperandIndexAndLength(0); return getOperation()->getOpOperand(range.first); } ::mlir::OpOperand &getBMutable() { auto range = getODSOperandIndexAndLength(1); return getOperation()->getOpOperand(range.first); } ::mlir::OpOperand &getCMutable() { auto range = getODSOperandIndexAndLength(2); return getOperation()->getOpOperand(range.first); } ::mlir::OpOperand &getIndexMutable() { auto range = getODSOperandIndexAndLength(3); return getOperation()->getOpOperand(range.first); } std::pair getODSResultIndexAndLength(unsigned index) { return {index, 1}; } ::mlir::Operation::result_range getODSResults(unsigned index) { auto valueRange = getODSResultIndexAndLength(index); return {std::next(getOperation()->result_begin(), valueRange.first), std::next(getOperation()->result_begin(), valueRange.first + valueRange.second)}; } ::mlir::TypedValue<::mlir::VectorType> getRes() { return ::llvm::cast<::mlir::TypedValue<::mlir::VectorType>>(*getODSResults(0).begin()); } static ::llvm::LogicalResult setPropertiesFromAttr(Properties &prop, ::mlir::Attribute attr, ::llvm::function_ref<::mlir::InFlightDiagnostic()> emitError); static ::mlir::Attribute getPropertiesAsAttr(::mlir::MLIRContext *ctx, const Properties &prop); static llvm::hash_code computePropertiesHash(const Properties &prop); static std::optional getInherentAttr(::mlir::MLIRContext *ctx, const Properties &prop, llvm::StringRef name); static void setInherentAttr(Properties &prop, llvm::StringRef name, mlir::Attribute value); static void populateInherentAttrs(::mlir::MLIRContext *ctx, const Properties &prop, ::mlir::NamedAttrList &attrs); static ::llvm::LogicalResult verifyInherentAttrs(::mlir::OperationName opName, ::mlir::NamedAttrList &attrs, llvm::function_ref<::mlir::InFlightDiagnostic()> emitError); static ::llvm::LogicalResult readProperties(::mlir::DialectBytecodeReader &reader, ::mlir::OperationState &state); void writeProperties(::mlir::DialectBytecodeWriter &writer); ::mlir::IntegerAttr getCbszAttr() { return ::llvm::cast<::mlir::IntegerAttr>(getProperties().cbsz); } uint32_t getCbsz(); ::mlir::IntegerAttr getAbidAttr() { return ::llvm::cast<::mlir::IntegerAttr>(getProperties().abid); } uint32_t getAbid(); void setCbszAttr(::mlir::IntegerAttr attr) { getProperties().cbsz = attr; } void setCbsz(uint32_t attrValue); void setAbidAttr(::mlir::IntegerAttr attr) { getProperties().abid = attr; } void setAbid(uint32_t attrValue); static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::Type res, ::mlir::Value a, ::mlir::Value b, ::mlir::Value c, ::mlir::Value index, ::mlir::IntegerAttr cbsz, ::mlir::IntegerAttr abid); static smfmac_f32_32x32x64_fp8_bf8 create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::Type res, ::mlir::Value a, ::mlir::Value b, ::mlir::Value c, ::mlir::Value index, ::mlir::IntegerAttr cbsz, ::mlir::IntegerAttr abid); static smfmac_f32_32x32x64_fp8_bf8 create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::Type res, ::mlir::Value a, ::mlir::Value b, ::mlir::Value c, ::mlir::Value index, ::mlir::IntegerAttr cbsz, ::mlir::IntegerAttr abid); static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::Value a, ::mlir::Value b, ::mlir::Value c, ::mlir::Value index, ::mlir::IntegerAttr cbsz, ::mlir::IntegerAttr abid); static smfmac_f32_32x32x64_fp8_bf8 create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::Value a, ::mlir::Value b, ::mlir::Value c, ::mlir::Value index, ::mlir::IntegerAttr cbsz, ::mlir::IntegerAttr abid); static smfmac_f32_32x32x64_fp8_bf8 create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::Value a, ::mlir::Value b, ::mlir::Value c, ::mlir::Value index, ::mlir::IntegerAttr cbsz, ::mlir::IntegerAttr abid); static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::Type res, ::mlir::Value a, ::mlir::Value b, ::mlir::Value c, ::mlir::Value index, uint32_t cbsz, uint32_t abid); static smfmac_f32_32x32x64_fp8_bf8 create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::Type res, ::mlir::Value a, ::mlir::Value b, ::mlir::Value c, ::mlir::Value index, uint32_t cbsz, uint32_t abid); static smfmac_f32_32x32x64_fp8_bf8 create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::Type res, ::mlir::Value a, ::mlir::Value b, ::mlir::Value c, ::mlir::Value index, uint32_t cbsz, uint32_t abid); static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::Value a, ::mlir::Value b, ::mlir::Value c, ::mlir::Value index, uint32_t cbsz, uint32_t abid); static smfmac_f32_32x32x64_fp8_bf8 create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::Value a, ::mlir::Value b, ::mlir::Value c, ::mlir::Value index, uint32_t cbsz, uint32_t abid); static smfmac_f32_32x32x64_fp8_bf8 create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::Value a, ::mlir::Value b, ::mlir::Value c, ::mlir::Value index, uint32_t cbsz, uint32_t abid); static void build(::mlir::OpBuilder &, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, ::llvm::ArrayRef<::mlir::NamedAttribute> attributes = {}); static smfmac_f32_32x32x64_fp8_bf8 create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, ::llvm::ArrayRef<::mlir::NamedAttribute> attributes = {}); static smfmac_f32_32x32x64_fp8_bf8 create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, ::llvm::ArrayRef<::mlir::NamedAttribute> attributes = {}); static void build(::mlir::OpBuilder &, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, const Properties &properties, ::llvm::ArrayRef<::mlir::NamedAttribute> discardableAttributes = {}); static smfmac_f32_32x32x64_fp8_bf8 create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, const Properties &properties, ::llvm::ArrayRef<::mlir::NamedAttribute> discardableAttributes = {}); static smfmac_f32_32x32x64_fp8_bf8 create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, const Properties &properties, ::llvm::ArrayRef<::mlir::NamedAttribute> discardableAttributes = {}); ::llvm::LogicalResult verifyInvariantsImpl(); ::llvm::LogicalResult verifyInvariants(); static ::mlir::ParseResult parse(::mlir::OpAsmParser &parser, ::mlir::OperationState &result); void print(::mlir::OpAsmPrinter &_odsPrinter); private: ::mlir::StringAttr getAttributeNameForIndex(unsigned index) { return getAttributeNameForIndex((*this)->getName(), index); } static ::mlir::StringAttr getAttributeNameForIndex(::mlir::OperationName name, unsigned index) { assert(index < 2 && "invalid attribute index"); assert(name.getStringRef() == getOperationName() && "invalid operation name"); assert(name.isRegistered() && "Operation isn't registered, missing a " "dependent dialect loading?"); return name.getAttributeNames()[index]; } public: }; } // namespace mlir::ROCDL MLIR_DECLARE_EXPLICIT_TYPE_ID(::mlir::ROCDL::smfmac_f32_32x32x64_fp8_bf8) MLIR_DECLARE_EXPLICIT_TYPE_ID(::mlir::ROCDL::detail::smfmac_f32_32x32x64_fp8_bf8GenericAdaptorBase::Properties) namespace mlir::ROCDL { //===----------------------------------------------------------------------===// // ::mlir::ROCDL::smfmac_f32_32x32x64_fp8_fp8 declarations //===----------------------------------------------------------------------===// namespace detail { class smfmac_f32_32x32x64_fp8_fp8GenericAdaptorBase { public: struct Properties { using abidTy = ::mlir::IntegerAttr; abidTy abid; auto getAbid() const { auto &propStorage = this->abid; return ::llvm::cast<::mlir::IntegerAttr>(propStorage); } void setAbid(const ::mlir::IntegerAttr &propValue) { this->abid = propValue; } using cbszTy = ::mlir::IntegerAttr; cbszTy cbsz; auto getCbsz() const { auto &propStorage = this->cbsz; return ::llvm::cast<::mlir::IntegerAttr>(propStorage); } void setCbsz(const ::mlir::IntegerAttr &propValue) { this->cbsz = propValue; } bool operator==(const Properties &rhs) const { return rhs.abid == this->abid && rhs.cbsz == this->cbsz && true; } bool operator!=(const Properties &rhs) const { return !(*this == rhs); } }; protected: ::mlir::DictionaryAttr odsAttrs; ::std::optional<::mlir::OperationName> odsOpName; Properties properties; ::mlir::RegionRange odsRegions; public: smfmac_f32_32x32x64_fp8_fp8GenericAdaptorBase(::mlir::DictionaryAttr attrs, const Properties &properties, ::mlir::RegionRange regions = {}) : odsAttrs(attrs), properties(properties), odsRegions(regions) { if (odsAttrs) odsOpName.emplace("rocdl.smfmac.f32.32x32x64.fp8.fp8", odsAttrs.getContext()); } smfmac_f32_32x32x64_fp8_fp8GenericAdaptorBase(smfmac_f32_32x32x64_fp8_fp8 op); std::pair getODSOperandIndexAndLength(unsigned index, unsigned odsOperandsSize) { return {index, 1}; } const Properties &getProperties() { return properties; } ::mlir::DictionaryAttr getAttributes() { return odsAttrs; } ::mlir::IntegerAttr getCbszAttr() { auto attr = ::llvm::cast<::mlir::IntegerAttr>(getProperties().cbsz); return attr; } uint32_t getCbsz(); ::mlir::IntegerAttr getAbidAttr() { auto attr = ::llvm::cast<::mlir::IntegerAttr>(getProperties().abid); return attr; } uint32_t getAbid(); }; } // namespace detail template class smfmac_f32_32x32x64_fp8_fp8GenericAdaptor : public detail::smfmac_f32_32x32x64_fp8_fp8GenericAdaptorBase { using ValueT = ::llvm::detail::ValueOfRange; using Base = detail::smfmac_f32_32x32x64_fp8_fp8GenericAdaptorBase; static constexpr int odsIndex_a = 0; static constexpr int odsIndex_b = 1; static constexpr int odsIndex_c = 2; static constexpr int odsIndex_index = 3; public: smfmac_f32_32x32x64_fp8_fp8GenericAdaptor(RangeT values, ::mlir::DictionaryAttr attrs, const Properties &properties, ::mlir::RegionRange regions = {}) : Base(attrs, properties, regions), odsOperands(values) {} smfmac_f32_32x32x64_fp8_fp8GenericAdaptor(RangeT values, ::mlir::DictionaryAttr attrs, ::mlir::PropertyRef properties, ::mlir::RegionRange regions = {}) : smfmac_f32_32x32x64_fp8_fp8GenericAdaptor(values, attrs, (properties ? *properties.as() : Properties{}), regions) {} smfmac_f32_32x32x64_fp8_fp8GenericAdaptor(RangeT values, ::mlir::DictionaryAttr attrs = nullptr) : smfmac_f32_32x32x64_fp8_fp8GenericAdaptor(values, attrs, Properties{}, {}) {} smfmac_f32_32x32x64_fp8_fp8GenericAdaptor(RangeT values, const smfmac_f32_32x32x64_fp8_fp8GenericAdaptorBase &base) : Base(base), odsOperands(values) {} template >> smfmac_f32_32x32x64_fp8_fp8GenericAdaptor(RangeT values, LateInst op) : Base(op), odsOperands(values) {} std::pair getODSOperandIndexAndLength(unsigned index) { return Base::getODSOperandIndexAndLength(index, odsOperands.size()); } RangeT getODSOperands(unsigned index) { auto valueRange = getODSOperandIndexAndLength(index); return {std::next(odsOperands.begin(), valueRange.first), std::next(odsOperands.begin(), valueRange.first + valueRange.second)}; } ValueT getA() { return (*getODSOperands(0).begin()); } ValueT getB() { return (*getODSOperands(1).begin()); } ValueT getC() { return (*getODSOperands(2).begin()); } ValueT getIndex() { return (*getODSOperands(3).begin()); } RangeT getOperands() { return odsOperands; } private: RangeT odsOperands; }; class smfmac_f32_32x32x64_fp8_fp8Adaptor : public smfmac_f32_32x32x64_fp8_fp8GenericAdaptor<::mlir::ValueRange> { public: using smfmac_f32_32x32x64_fp8_fp8GenericAdaptor::smfmac_f32_32x32x64_fp8_fp8GenericAdaptor; smfmac_f32_32x32x64_fp8_fp8Adaptor(smfmac_f32_32x32x64_fp8_fp8 op); ::llvm::LogicalResult verify(::mlir::Location loc); }; class smfmac_f32_32x32x64_fp8_fp8 : public ::mlir::Op::Impl, ::mlir::OpTrait::ZeroSuccessors, ::mlir::OpTrait::NOperands<4>::Impl, ::mlir::OpTrait::OpInvariants, ::mlir::BytecodeOpInterface::Trait> { public: using Op::Op; using Op::print; using Adaptor = smfmac_f32_32x32x64_fp8_fp8Adaptor; template using GenericAdaptor = smfmac_f32_32x32x64_fp8_fp8GenericAdaptor; using FoldAdaptor = GenericAdaptor<::llvm::ArrayRef<::mlir::Attribute>>; static constexpr int odsIndex_a = 0; static constexpr int odsIndex_b = 1; static constexpr int odsIndex_c = 2; static constexpr int odsIndex_index = 3; using Properties = FoldAdaptor::Properties; static ::llvm::ArrayRef<::llvm::StringRef> getAttributeNames() { static ::llvm::StringRef attrNames[] = {::llvm::StringRef("abid"), ::llvm::StringRef("cbsz")}; return ::llvm::ArrayRef(attrNames); } ::mlir::StringAttr getAbidAttrName() { return getAttributeNameForIndex(0); } static ::mlir::StringAttr getAbidAttrName(::mlir::OperationName name) { return getAttributeNameForIndex(name, 0); } ::mlir::StringAttr getCbszAttrName() { return getAttributeNameForIndex(1); } static ::mlir::StringAttr getCbszAttrName(::mlir::OperationName name) { return getAttributeNameForIndex(name, 1); } static constexpr ::llvm::StringLiteral getOperationName() { return ::llvm::StringLiteral("rocdl.smfmac.f32.32x32x64.fp8.fp8"); } std::pair getODSOperandIndexAndLength(unsigned index) { return {index, 1}; } ::mlir::Operation::operand_range getODSOperands(unsigned index) { auto valueRange = getODSOperandIndexAndLength(index); return {std::next(getOperation()->operand_begin(), valueRange.first), std::next(getOperation()->operand_begin(), valueRange.first + valueRange.second)}; } ::mlir::TypedValue<::mlir::VectorType> getA() { return ::llvm::cast<::mlir::TypedValue<::mlir::VectorType>>(*getODSOperands(0).begin()); } ::mlir::TypedValue<::mlir::VectorType> getB() { return ::llvm::cast<::mlir::TypedValue<::mlir::VectorType>>(*getODSOperands(1).begin()); } ::mlir::TypedValue<::mlir::VectorType> getC() { return ::llvm::cast<::mlir::TypedValue<::mlir::VectorType>>(*getODSOperands(2).begin()); } ::mlir::TypedValue<::mlir::IntegerType> getIndex() { return ::llvm::cast<::mlir::TypedValue<::mlir::IntegerType>>(*getODSOperands(3).begin()); } ::mlir::OpOperand &getAMutable() { auto range = getODSOperandIndexAndLength(0); return getOperation()->getOpOperand(range.first); } ::mlir::OpOperand &getBMutable() { auto range = getODSOperandIndexAndLength(1); return getOperation()->getOpOperand(range.first); } ::mlir::OpOperand &getCMutable() { auto range = getODSOperandIndexAndLength(2); return getOperation()->getOpOperand(range.first); } ::mlir::OpOperand &getIndexMutable() { auto range = getODSOperandIndexAndLength(3); return getOperation()->getOpOperand(range.first); } std::pair getODSResultIndexAndLength(unsigned index) { return {index, 1}; } ::mlir::Operation::result_range getODSResults(unsigned index) { auto valueRange = getODSResultIndexAndLength(index); return {std::next(getOperation()->result_begin(), valueRange.first), std::next(getOperation()->result_begin(), valueRange.first + valueRange.second)}; } ::mlir::TypedValue<::mlir::VectorType> getRes() { return ::llvm::cast<::mlir::TypedValue<::mlir::VectorType>>(*getODSResults(0).begin()); } static ::llvm::LogicalResult setPropertiesFromAttr(Properties &prop, ::mlir::Attribute attr, ::llvm::function_ref<::mlir::InFlightDiagnostic()> emitError); static ::mlir::Attribute getPropertiesAsAttr(::mlir::MLIRContext *ctx, const Properties &prop); static llvm::hash_code computePropertiesHash(const Properties &prop); static std::optional getInherentAttr(::mlir::MLIRContext *ctx, const Properties &prop, llvm::StringRef name); static void setInherentAttr(Properties &prop, llvm::StringRef name, mlir::Attribute value); static void populateInherentAttrs(::mlir::MLIRContext *ctx, const Properties &prop, ::mlir::NamedAttrList &attrs); static ::llvm::LogicalResult verifyInherentAttrs(::mlir::OperationName opName, ::mlir::NamedAttrList &attrs, llvm::function_ref<::mlir::InFlightDiagnostic()> emitError); static ::llvm::LogicalResult readProperties(::mlir::DialectBytecodeReader &reader, ::mlir::OperationState &state); void writeProperties(::mlir::DialectBytecodeWriter &writer); ::mlir::IntegerAttr getCbszAttr() { return ::llvm::cast<::mlir::IntegerAttr>(getProperties().cbsz); } uint32_t getCbsz(); ::mlir::IntegerAttr getAbidAttr() { return ::llvm::cast<::mlir::IntegerAttr>(getProperties().abid); } uint32_t getAbid(); void setCbszAttr(::mlir::IntegerAttr attr) { getProperties().cbsz = attr; } void setCbsz(uint32_t attrValue); void setAbidAttr(::mlir::IntegerAttr attr) { getProperties().abid = attr; } void setAbid(uint32_t attrValue); static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::Type res, ::mlir::Value a, ::mlir::Value b, ::mlir::Value c, ::mlir::Value index, ::mlir::IntegerAttr cbsz, ::mlir::IntegerAttr abid); static smfmac_f32_32x32x64_fp8_fp8 create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::Type res, ::mlir::Value a, ::mlir::Value b, ::mlir::Value c, ::mlir::Value index, ::mlir::IntegerAttr cbsz, ::mlir::IntegerAttr abid); static smfmac_f32_32x32x64_fp8_fp8 create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::Type res, ::mlir::Value a, ::mlir::Value b, ::mlir::Value c, ::mlir::Value index, ::mlir::IntegerAttr cbsz, ::mlir::IntegerAttr abid); static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::Value a, ::mlir::Value b, ::mlir::Value c, ::mlir::Value index, ::mlir::IntegerAttr cbsz, ::mlir::IntegerAttr abid); static smfmac_f32_32x32x64_fp8_fp8 create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::Value a, ::mlir::Value b, ::mlir::Value c, ::mlir::Value index, ::mlir::IntegerAttr cbsz, ::mlir::IntegerAttr abid); static smfmac_f32_32x32x64_fp8_fp8 create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::Value a, ::mlir::Value b, ::mlir::Value c, ::mlir::Value index, ::mlir::IntegerAttr cbsz, ::mlir::IntegerAttr abid); static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::Type res, ::mlir::Value a, ::mlir::Value b, ::mlir::Value c, ::mlir::Value index, uint32_t cbsz, uint32_t abid); static smfmac_f32_32x32x64_fp8_fp8 create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::Type res, ::mlir::Value a, ::mlir::Value b, ::mlir::Value c, ::mlir::Value index, uint32_t cbsz, uint32_t abid); static smfmac_f32_32x32x64_fp8_fp8 create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::Type res, ::mlir::Value a, ::mlir::Value b, ::mlir::Value c, ::mlir::Value index, uint32_t cbsz, uint32_t abid); static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::Value a, ::mlir::Value b, ::mlir::Value c, ::mlir::Value index, uint32_t cbsz, uint32_t abid); static smfmac_f32_32x32x64_fp8_fp8 create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::Value a, ::mlir::Value b, ::mlir::Value c, ::mlir::Value index, uint32_t cbsz, uint32_t abid); static smfmac_f32_32x32x64_fp8_fp8 create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::Value a, ::mlir::Value b, ::mlir::Value c, ::mlir::Value index, uint32_t cbsz, uint32_t abid); static void build(::mlir::OpBuilder &, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, ::llvm::ArrayRef<::mlir::NamedAttribute> attributes = {}); static smfmac_f32_32x32x64_fp8_fp8 create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, ::llvm::ArrayRef<::mlir::NamedAttribute> attributes = {}); static smfmac_f32_32x32x64_fp8_fp8 create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, ::llvm::ArrayRef<::mlir::NamedAttribute> attributes = {}); static void build(::mlir::OpBuilder &, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, const Properties &properties, ::llvm::ArrayRef<::mlir::NamedAttribute> discardableAttributes = {}); static smfmac_f32_32x32x64_fp8_fp8 create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, const Properties &properties, ::llvm::ArrayRef<::mlir::NamedAttribute> discardableAttributes = {}); static smfmac_f32_32x32x64_fp8_fp8 create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, const Properties &properties, ::llvm::ArrayRef<::mlir::NamedAttribute> discardableAttributes = {}); ::llvm::LogicalResult verifyInvariantsImpl(); ::llvm::LogicalResult verifyInvariants(); static ::mlir::ParseResult parse(::mlir::OpAsmParser &parser, ::mlir::OperationState &result); void print(::mlir::OpAsmPrinter &_odsPrinter); private: ::mlir::StringAttr getAttributeNameForIndex(unsigned index) { return getAttributeNameForIndex((*this)->getName(), index); } static ::mlir::StringAttr getAttributeNameForIndex(::mlir::OperationName name, unsigned index) { assert(index < 2 && "invalid attribute index"); assert(name.getStringRef() == getOperationName() && "invalid operation name"); assert(name.isRegistered() && "Operation isn't registered, missing a " "dependent dialect loading?"); return name.getAttributeNames()[index]; } public: }; } // namespace mlir::ROCDL MLIR_DECLARE_EXPLICIT_TYPE_ID(::mlir::ROCDL::smfmac_f32_32x32x64_fp8_fp8) MLIR_DECLARE_EXPLICIT_TYPE_ID(::mlir::ROCDL::detail::smfmac_f32_32x32x64_fp8_fp8GenericAdaptorBase::Properties) namespace mlir::ROCDL { //===----------------------------------------------------------------------===// // ::mlir::ROCDL::smfmac_i32_16x16x128_i8 declarations //===----------------------------------------------------------------------===// namespace detail { class smfmac_i32_16x16x128_i8GenericAdaptorBase { public: struct Properties { using abidTy = ::mlir::IntegerAttr; abidTy abid; auto getAbid() const { auto &propStorage = this->abid; return ::llvm::cast<::mlir::IntegerAttr>(propStorage); } void setAbid(const ::mlir::IntegerAttr &propValue) { this->abid = propValue; } using cbszTy = ::mlir::IntegerAttr; cbszTy cbsz; auto getCbsz() const { auto &propStorage = this->cbsz; return ::llvm::cast<::mlir::IntegerAttr>(propStorage); } void setCbsz(const ::mlir::IntegerAttr &propValue) { this->cbsz = propValue; } bool operator==(const Properties &rhs) const { return rhs.abid == this->abid && rhs.cbsz == this->cbsz && true; } bool operator!=(const Properties &rhs) const { return !(*this == rhs); } }; protected: ::mlir::DictionaryAttr odsAttrs; ::std::optional<::mlir::OperationName> odsOpName; Properties properties; ::mlir::RegionRange odsRegions; public: smfmac_i32_16x16x128_i8GenericAdaptorBase(::mlir::DictionaryAttr attrs, const Properties &properties, ::mlir::RegionRange regions = {}) : odsAttrs(attrs), properties(properties), odsRegions(regions) { if (odsAttrs) odsOpName.emplace("rocdl.smfmac.i32.16x16x128.i8", odsAttrs.getContext()); } smfmac_i32_16x16x128_i8GenericAdaptorBase(smfmac_i32_16x16x128_i8 op); std::pair getODSOperandIndexAndLength(unsigned index, unsigned odsOperandsSize) { return {index, 1}; } const Properties &getProperties() { return properties; } ::mlir::DictionaryAttr getAttributes() { return odsAttrs; } ::mlir::IntegerAttr getCbszAttr() { auto attr = ::llvm::cast<::mlir::IntegerAttr>(getProperties().cbsz); return attr; } uint32_t getCbsz(); ::mlir::IntegerAttr getAbidAttr() { auto attr = ::llvm::cast<::mlir::IntegerAttr>(getProperties().abid); return attr; } uint32_t getAbid(); }; } // namespace detail template class smfmac_i32_16x16x128_i8GenericAdaptor : public detail::smfmac_i32_16x16x128_i8GenericAdaptorBase { using ValueT = ::llvm::detail::ValueOfRange; using Base = detail::smfmac_i32_16x16x128_i8GenericAdaptorBase; static constexpr int odsIndex_a = 0; static constexpr int odsIndex_b = 1; static constexpr int odsIndex_c = 2; static constexpr int odsIndex_index = 3; public: smfmac_i32_16x16x128_i8GenericAdaptor(RangeT values, ::mlir::DictionaryAttr attrs, const Properties &properties, ::mlir::RegionRange regions = {}) : Base(attrs, properties, regions), odsOperands(values) {} smfmac_i32_16x16x128_i8GenericAdaptor(RangeT values, ::mlir::DictionaryAttr attrs, ::mlir::PropertyRef properties, ::mlir::RegionRange regions = {}) : smfmac_i32_16x16x128_i8GenericAdaptor(values, attrs, (properties ? *properties.as() : Properties{}), regions) {} smfmac_i32_16x16x128_i8GenericAdaptor(RangeT values, ::mlir::DictionaryAttr attrs = nullptr) : smfmac_i32_16x16x128_i8GenericAdaptor(values, attrs, Properties{}, {}) {} smfmac_i32_16x16x128_i8GenericAdaptor(RangeT values, const smfmac_i32_16x16x128_i8GenericAdaptorBase &base) : Base(base), odsOperands(values) {} template >> smfmac_i32_16x16x128_i8GenericAdaptor(RangeT values, LateInst op) : Base(op), odsOperands(values) {} std::pair getODSOperandIndexAndLength(unsigned index) { return Base::getODSOperandIndexAndLength(index, odsOperands.size()); } RangeT getODSOperands(unsigned index) { auto valueRange = getODSOperandIndexAndLength(index); return {std::next(odsOperands.begin(), valueRange.first), std::next(odsOperands.begin(), valueRange.first + valueRange.second)}; } ValueT getA() { return (*getODSOperands(0).begin()); } ValueT getB() { return (*getODSOperands(1).begin()); } ValueT getC() { return (*getODSOperands(2).begin()); } ValueT getIndex() { return (*getODSOperands(3).begin()); } RangeT getOperands() { return odsOperands; } private: RangeT odsOperands; }; class smfmac_i32_16x16x128_i8Adaptor : public smfmac_i32_16x16x128_i8GenericAdaptor<::mlir::ValueRange> { public: using smfmac_i32_16x16x128_i8GenericAdaptor::smfmac_i32_16x16x128_i8GenericAdaptor; smfmac_i32_16x16x128_i8Adaptor(smfmac_i32_16x16x128_i8 op); ::llvm::LogicalResult verify(::mlir::Location loc); }; class smfmac_i32_16x16x128_i8 : public ::mlir::Op::Impl, ::mlir::OpTrait::ZeroSuccessors, ::mlir::OpTrait::NOperands<4>::Impl, ::mlir::OpTrait::OpInvariants, ::mlir::BytecodeOpInterface::Trait> { public: using Op::Op; using Op::print; using Adaptor = smfmac_i32_16x16x128_i8Adaptor; template using GenericAdaptor = smfmac_i32_16x16x128_i8GenericAdaptor; using FoldAdaptor = GenericAdaptor<::llvm::ArrayRef<::mlir::Attribute>>; static constexpr int odsIndex_a = 0; static constexpr int odsIndex_b = 1; static constexpr int odsIndex_c = 2; static constexpr int odsIndex_index = 3; using Properties = FoldAdaptor::Properties; static ::llvm::ArrayRef<::llvm::StringRef> getAttributeNames() { static ::llvm::StringRef attrNames[] = {::llvm::StringRef("abid"), ::llvm::StringRef("cbsz")}; return ::llvm::ArrayRef(attrNames); } ::mlir::StringAttr getAbidAttrName() { return getAttributeNameForIndex(0); } static ::mlir::StringAttr getAbidAttrName(::mlir::OperationName name) { return getAttributeNameForIndex(name, 0); } ::mlir::StringAttr getCbszAttrName() { return getAttributeNameForIndex(1); } static ::mlir::StringAttr getCbszAttrName(::mlir::OperationName name) { return getAttributeNameForIndex(name, 1); } static constexpr ::llvm::StringLiteral getOperationName() { return ::llvm::StringLiteral("rocdl.smfmac.i32.16x16x128.i8"); } std::pair getODSOperandIndexAndLength(unsigned index) { return {index, 1}; } ::mlir::Operation::operand_range getODSOperands(unsigned index) { auto valueRange = getODSOperandIndexAndLength(index); return {std::next(getOperation()->operand_begin(), valueRange.first), std::next(getOperation()->operand_begin(), valueRange.first + valueRange.second)}; } ::mlir::TypedValue<::mlir::VectorType> getA() { return ::llvm::cast<::mlir::TypedValue<::mlir::VectorType>>(*getODSOperands(0).begin()); } ::mlir::TypedValue<::mlir::VectorType> getB() { return ::llvm::cast<::mlir::TypedValue<::mlir::VectorType>>(*getODSOperands(1).begin()); } ::mlir::TypedValue<::mlir::VectorType> getC() { return ::llvm::cast<::mlir::TypedValue<::mlir::VectorType>>(*getODSOperands(2).begin()); } ::mlir::TypedValue<::mlir::IntegerType> getIndex() { return ::llvm::cast<::mlir::TypedValue<::mlir::IntegerType>>(*getODSOperands(3).begin()); } ::mlir::OpOperand &getAMutable() { auto range = getODSOperandIndexAndLength(0); return getOperation()->getOpOperand(range.first); } ::mlir::OpOperand &getBMutable() { auto range = getODSOperandIndexAndLength(1); return getOperation()->getOpOperand(range.first); } ::mlir::OpOperand &getCMutable() { auto range = getODSOperandIndexAndLength(2); return getOperation()->getOpOperand(range.first); } ::mlir::OpOperand &getIndexMutable() { auto range = getODSOperandIndexAndLength(3); return getOperation()->getOpOperand(range.first); } std::pair getODSResultIndexAndLength(unsigned index) { return {index, 1}; } ::mlir::Operation::result_range getODSResults(unsigned index) { auto valueRange = getODSResultIndexAndLength(index); return {std::next(getOperation()->result_begin(), valueRange.first), std::next(getOperation()->result_begin(), valueRange.first + valueRange.second)}; } ::mlir::TypedValue<::mlir::VectorType> getRes() { return ::llvm::cast<::mlir::TypedValue<::mlir::VectorType>>(*getODSResults(0).begin()); } static ::llvm::LogicalResult setPropertiesFromAttr(Properties &prop, ::mlir::Attribute attr, ::llvm::function_ref<::mlir::InFlightDiagnostic()> emitError); static ::mlir::Attribute getPropertiesAsAttr(::mlir::MLIRContext *ctx, const Properties &prop); static llvm::hash_code computePropertiesHash(const Properties &prop); static std::optional getInherentAttr(::mlir::MLIRContext *ctx, const Properties &prop, llvm::StringRef name); static void setInherentAttr(Properties &prop, llvm::StringRef name, mlir::Attribute value); static void populateInherentAttrs(::mlir::MLIRContext *ctx, const Properties &prop, ::mlir::NamedAttrList &attrs); static ::llvm::LogicalResult verifyInherentAttrs(::mlir::OperationName opName, ::mlir::NamedAttrList &attrs, llvm::function_ref<::mlir::InFlightDiagnostic()> emitError); static ::llvm::LogicalResult readProperties(::mlir::DialectBytecodeReader &reader, ::mlir::OperationState &state); void writeProperties(::mlir::DialectBytecodeWriter &writer); ::mlir::IntegerAttr getCbszAttr() { return ::llvm::cast<::mlir::IntegerAttr>(getProperties().cbsz); } uint32_t getCbsz(); ::mlir::IntegerAttr getAbidAttr() { return ::llvm::cast<::mlir::IntegerAttr>(getProperties().abid); } uint32_t getAbid(); void setCbszAttr(::mlir::IntegerAttr attr) { getProperties().cbsz = attr; } void setCbsz(uint32_t attrValue); void setAbidAttr(::mlir::IntegerAttr attr) { getProperties().abid = attr; } void setAbid(uint32_t attrValue); static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::Type res, ::mlir::Value a, ::mlir::Value b, ::mlir::Value c, ::mlir::Value index, ::mlir::IntegerAttr cbsz, ::mlir::IntegerAttr abid); static smfmac_i32_16x16x128_i8 create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::Type res, ::mlir::Value a, ::mlir::Value b, ::mlir::Value c, ::mlir::Value index, ::mlir::IntegerAttr cbsz, ::mlir::IntegerAttr abid); static smfmac_i32_16x16x128_i8 create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::Type res, ::mlir::Value a, ::mlir::Value b, ::mlir::Value c, ::mlir::Value index, ::mlir::IntegerAttr cbsz, ::mlir::IntegerAttr abid); static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::Value a, ::mlir::Value b, ::mlir::Value c, ::mlir::Value index, ::mlir::IntegerAttr cbsz, ::mlir::IntegerAttr abid); static smfmac_i32_16x16x128_i8 create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::Value a, ::mlir::Value b, ::mlir::Value c, ::mlir::Value index, ::mlir::IntegerAttr cbsz, ::mlir::IntegerAttr abid); static smfmac_i32_16x16x128_i8 create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::Value a, ::mlir::Value b, ::mlir::Value c, ::mlir::Value index, ::mlir::IntegerAttr cbsz, ::mlir::IntegerAttr abid); static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::Type res, ::mlir::Value a, ::mlir::Value b, ::mlir::Value c, ::mlir::Value index, uint32_t cbsz, uint32_t abid); static smfmac_i32_16x16x128_i8 create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::Type res, ::mlir::Value a, ::mlir::Value b, ::mlir::Value c, ::mlir::Value index, uint32_t cbsz, uint32_t abid); static smfmac_i32_16x16x128_i8 create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::Type res, ::mlir::Value a, ::mlir::Value b, ::mlir::Value c, ::mlir::Value index, uint32_t cbsz, uint32_t abid); static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::Value a, ::mlir::Value b, ::mlir::Value c, ::mlir::Value index, uint32_t cbsz, uint32_t abid); static smfmac_i32_16x16x128_i8 create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::Value a, ::mlir::Value b, ::mlir::Value c, ::mlir::Value index, uint32_t cbsz, uint32_t abid); static smfmac_i32_16x16x128_i8 create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::Value a, ::mlir::Value b, ::mlir::Value c, ::mlir::Value index, uint32_t cbsz, uint32_t abid); static void build(::mlir::OpBuilder &, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, ::llvm::ArrayRef<::mlir::NamedAttribute> attributes = {}); static smfmac_i32_16x16x128_i8 create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, ::llvm::ArrayRef<::mlir::NamedAttribute> attributes = {}); static smfmac_i32_16x16x128_i8 create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, ::llvm::ArrayRef<::mlir::NamedAttribute> attributes = {}); static void build(::mlir::OpBuilder &, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, const Properties &properties, ::llvm::ArrayRef<::mlir::NamedAttribute> discardableAttributes = {}); static smfmac_i32_16x16x128_i8 create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, const Properties &properties, ::llvm::ArrayRef<::mlir::NamedAttribute> discardableAttributes = {}); static smfmac_i32_16x16x128_i8 create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, const Properties &properties, ::llvm::ArrayRef<::mlir::NamedAttribute> discardableAttributes = {}); ::llvm::LogicalResult verifyInvariantsImpl(); ::llvm::LogicalResult verifyInvariants(); static ::mlir::ParseResult parse(::mlir::OpAsmParser &parser, ::mlir::OperationState &result); void print(::mlir::OpAsmPrinter &_odsPrinter); private: ::mlir::StringAttr getAttributeNameForIndex(unsigned index) { return getAttributeNameForIndex((*this)->getName(), index); } static ::mlir::StringAttr getAttributeNameForIndex(::mlir::OperationName name, unsigned index) { assert(index < 2 && "invalid attribute index"); assert(name.getStringRef() == getOperationName() && "invalid operation name"); assert(name.isRegistered() && "Operation isn't registered, missing a " "dependent dialect loading?"); return name.getAttributeNames()[index]; } public: }; } // namespace mlir::ROCDL MLIR_DECLARE_EXPLICIT_TYPE_ID(::mlir::ROCDL::smfmac_i32_16x16x128_i8) MLIR_DECLARE_EXPLICIT_TYPE_ID(::mlir::ROCDL::detail::smfmac_i32_16x16x128_i8GenericAdaptorBase::Properties) namespace mlir::ROCDL { //===----------------------------------------------------------------------===// // ::mlir::ROCDL::smfmac_i32_16x16x64_i8 declarations //===----------------------------------------------------------------------===// namespace detail { class smfmac_i32_16x16x64_i8GenericAdaptorBase { public: struct Properties { using abidTy = ::mlir::IntegerAttr; abidTy abid; auto getAbid() const { auto &propStorage = this->abid; return ::llvm::cast<::mlir::IntegerAttr>(propStorage); } void setAbid(const ::mlir::IntegerAttr &propValue) { this->abid = propValue; } using cbszTy = ::mlir::IntegerAttr; cbszTy cbsz; auto getCbsz() const { auto &propStorage = this->cbsz; return ::llvm::cast<::mlir::IntegerAttr>(propStorage); } void setCbsz(const ::mlir::IntegerAttr &propValue) { this->cbsz = propValue; } bool operator==(const Properties &rhs) const { return rhs.abid == this->abid && rhs.cbsz == this->cbsz && true; } bool operator!=(const Properties &rhs) const { return !(*this == rhs); } }; protected: ::mlir::DictionaryAttr odsAttrs; ::std::optional<::mlir::OperationName> odsOpName; Properties properties; ::mlir::RegionRange odsRegions; public: smfmac_i32_16x16x64_i8GenericAdaptorBase(::mlir::DictionaryAttr attrs, const Properties &properties, ::mlir::RegionRange regions = {}) : odsAttrs(attrs), properties(properties), odsRegions(regions) { if (odsAttrs) odsOpName.emplace("rocdl.smfmac.i32.16x16x64.i8", odsAttrs.getContext()); } smfmac_i32_16x16x64_i8GenericAdaptorBase(smfmac_i32_16x16x64_i8 op); std::pair getODSOperandIndexAndLength(unsigned index, unsigned odsOperandsSize) { return {index, 1}; } const Properties &getProperties() { return properties; } ::mlir::DictionaryAttr getAttributes() { return odsAttrs; } ::mlir::IntegerAttr getCbszAttr() { auto attr = ::llvm::cast<::mlir::IntegerAttr>(getProperties().cbsz); return attr; } uint32_t getCbsz(); ::mlir::IntegerAttr getAbidAttr() { auto attr = ::llvm::cast<::mlir::IntegerAttr>(getProperties().abid); return attr; } uint32_t getAbid(); }; } // namespace detail template class smfmac_i32_16x16x64_i8GenericAdaptor : public detail::smfmac_i32_16x16x64_i8GenericAdaptorBase { using ValueT = ::llvm::detail::ValueOfRange; using Base = detail::smfmac_i32_16x16x64_i8GenericAdaptorBase; static constexpr int odsIndex_a = 0; static constexpr int odsIndex_b = 1; static constexpr int odsIndex_c = 2; static constexpr int odsIndex_index = 3; public: smfmac_i32_16x16x64_i8GenericAdaptor(RangeT values, ::mlir::DictionaryAttr attrs, const Properties &properties, ::mlir::RegionRange regions = {}) : Base(attrs, properties, regions), odsOperands(values) {} smfmac_i32_16x16x64_i8GenericAdaptor(RangeT values, ::mlir::DictionaryAttr attrs, ::mlir::PropertyRef properties, ::mlir::RegionRange regions = {}) : smfmac_i32_16x16x64_i8GenericAdaptor(values, attrs, (properties ? *properties.as() : Properties{}), regions) {} smfmac_i32_16x16x64_i8GenericAdaptor(RangeT values, ::mlir::DictionaryAttr attrs = nullptr) : smfmac_i32_16x16x64_i8GenericAdaptor(values, attrs, Properties{}, {}) {} smfmac_i32_16x16x64_i8GenericAdaptor(RangeT values, const smfmac_i32_16x16x64_i8GenericAdaptorBase &base) : Base(base), odsOperands(values) {} template >> smfmac_i32_16x16x64_i8GenericAdaptor(RangeT values, LateInst op) : Base(op), odsOperands(values) {} std::pair getODSOperandIndexAndLength(unsigned index) { return Base::getODSOperandIndexAndLength(index, odsOperands.size()); } RangeT getODSOperands(unsigned index) { auto valueRange = getODSOperandIndexAndLength(index); return {std::next(odsOperands.begin(), valueRange.first), std::next(odsOperands.begin(), valueRange.first + valueRange.second)}; } ValueT getA() { return (*getODSOperands(0).begin()); } ValueT getB() { return (*getODSOperands(1).begin()); } ValueT getC() { return (*getODSOperands(2).begin()); } ValueT getIndex() { return (*getODSOperands(3).begin()); } RangeT getOperands() { return odsOperands; } private: RangeT odsOperands; }; class smfmac_i32_16x16x64_i8Adaptor : public smfmac_i32_16x16x64_i8GenericAdaptor<::mlir::ValueRange> { public: using smfmac_i32_16x16x64_i8GenericAdaptor::smfmac_i32_16x16x64_i8GenericAdaptor; smfmac_i32_16x16x64_i8Adaptor(smfmac_i32_16x16x64_i8 op); ::llvm::LogicalResult verify(::mlir::Location loc); }; class smfmac_i32_16x16x64_i8 : public ::mlir::Op::Impl, ::mlir::OpTrait::ZeroSuccessors, ::mlir::OpTrait::NOperands<4>::Impl, ::mlir::OpTrait::OpInvariants, ::mlir::BytecodeOpInterface::Trait> { public: using Op::Op; using Op::print; using Adaptor = smfmac_i32_16x16x64_i8Adaptor; template using GenericAdaptor = smfmac_i32_16x16x64_i8GenericAdaptor; using FoldAdaptor = GenericAdaptor<::llvm::ArrayRef<::mlir::Attribute>>; static constexpr int odsIndex_a = 0; static constexpr int odsIndex_b = 1; static constexpr int odsIndex_c = 2; static constexpr int odsIndex_index = 3; using Properties = FoldAdaptor::Properties; static ::llvm::ArrayRef<::llvm::StringRef> getAttributeNames() { static ::llvm::StringRef attrNames[] = {::llvm::StringRef("abid"), ::llvm::StringRef("cbsz")}; return ::llvm::ArrayRef(attrNames); } ::mlir::StringAttr getAbidAttrName() { return getAttributeNameForIndex(0); } static ::mlir::StringAttr getAbidAttrName(::mlir::OperationName name) { return getAttributeNameForIndex(name, 0); } ::mlir::StringAttr getCbszAttrName() { return getAttributeNameForIndex(1); } static ::mlir::StringAttr getCbszAttrName(::mlir::OperationName name) { return getAttributeNameForIndex(name, 1); } static constexpr ::llvm::StringLiteral getOperationName() { return ::llvm::StringLiteral("rocdl.smfmac.i32.16x16x64.i8"); } std::pair getODSOperandIndexAndLength(unsigned index) { return {index, 1}; } ::mlir::Operation::operand_range getODSOperands(unsigned index) { auto valueRange = getODSOperandIndexAndLength(index); return {std::next(getOperation()->operand_begin(), valueRange.first), std::next(getOperation()->operand_begin(), valueRange.first + valueRange.second)}; } ::mlir::TypedValue<::mlir::VectorType> getA() { return ::llvm::cast<::mlir::TypedValue<::mlir::VectorType>>(*getODSOperands(0).begin()); } ::mlir::TypedValue<::mlir::VectorType> getB() { return ::llvm::cast<::mlir::TypedValue<::mlir::VectorType>>(*getODSOperands(1).begin()); } ::mlir::TypedValue<::mlir::VectorType> getC() { return ::llvm::cast<::mlir::TypedValue<::mlir::VectorType>>(*getODSOperands(2).begin()); } ::mlir::TypedValue<::mlir::IntegerType> getIndex() { return ::llvm::cast<::mlir::TypedValue<::mlir::IntegerType>>(*getODSOperands(3).begin()); } ::mlir::OpOperand &getAMutable() { auto range = getODSOperandIndexAndLength(0); return getOperation()->getOpOperand(range.first); } ::mlir::OpOperand &getBMutable() { auto range = getODSOperandIndexAndLength(1); return getOperation()->getOpOperand(range.first); } ::mlir::OpOperand &getCMutable() { auto range = getODSOperandIndexAndLength(2); return getOperation()->getOpOperand(range.first); } ::mlir::OpOperand &getIndexMutable() { auto range = getODSOperandIndexAndLength(3); return getOperation()->getOpOperand(range.first); } std::pair getODSResultIndexAndLength(unsigned index) { return {index, 1}; } ::mlir::Operation::result_range getODSResults(unsigned index) { auto valueRange = getODSResultIndexAndLength(index); return {std::next(getOperation()->result_begin(), valueRange.first), std::next(getOperation()->result_begin(), valueRange.first + valueRange.second)}; } ::mlir::TypedValue<::mlir::VectorType> getRes() { return ::llvm::cast<::mlir::TypedValue<::mlir::VectorType>>(*getODSResults(0).begin()); } static ::llvm::LogicalResult setPropertiesFromAttr(Properties &prop, ::mlir::Attribute attr, ::llvm::function_ref<::mlir::InFlightDiagnostic()> emitError); static ::mlir::Attribute getPropertiesAsAttr(::mlir::MLIRContext *ctx, const Properties &prop); static llvm::hash_code computePropertiesHash(const Properties &prop); static std::optional getInherentAttr(::mlir::MLIRContext *ctx, const Properties &prop, llvm::StringRef name); static void setInherentAttr(Properties &prop, llvm::StringRef name, mlir::Attribute value); static void populateInherentAttrs(::mlir::MLIRContext *ctx, const Properties &prop, ::mlir::NamedAttrList &attrs); static ::llvm::LogicalResult verifyInherentAttrs(::mlir::OperationName opName, ::mlir::NamedAttrList &attrs, llvm::function_ref<::mlir::InFlightDiagnostic()> emitError); static ::llvm::LogicalResult readProperties(::mlir::DialectBytecodeReader &reader, ::mlir::OperationState &state); void writeProperties(::mlir::DialectBytecodeWriter &writer); ::mlir::IntegerAttr getCbszAttr() { return ::llvm::cast<::mlir::IntegerAttr>(getProperties().cbsz); } uint32_t getCbsz(); ::mlir::IntegerAttr getAbidAttr() { return ::llvm::cast<::mlir::IntegerAttr>(getProperties().abid); } uint32_t getAbid(); void setCbszAttr(::mlir::IntegerAttr attr) { getProperties().cbsz = attr; } void setCbsz(uint32_t attrValue); void setAbidAttr(::mlir::IntegerAttr attr) { getProperties().abid = attr; } void setAbid(uint32_t attrValue); static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::Type res, ::mlir::Value a, ::mlir::Value b, ::mlir::Value c, ::mlir::Value index, ::mlir::IntegerAttr cbsz, ::mlir::IntegerAttr abid); static smfmac_i32_16x16x64_i8 create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::Type res, ::mlir::Value a, ::mlir::Value b, ::mlir::Value c, ::mlir::Value index, ::mlir::IntegerAttr cbsz, ::mlir::IntegerAttr abid); static smfmac_i32_16x16x64_i8 create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::Type res, ::mlir::Value a, ::mlir::Value b, ::mlir::Value c, ::mlir::Value index, ::mlir::IntegerAttr cbsz, ::mlir::IntegerAttr abid); static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::Value a, ::mlir::Value b, ::mlir::Value c, ::mlir::Value index, ::mlir::IntegerAttr cbsz, ::mlir::IntegerAttr abid); static smfmac_i32_16x16x64_i8 create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::Value a, ::mlir::Value b, ::mlir::Value c, ::mlir::Value index, ::mlir::IntegerAttr cbsz, ::mlir::IntegerAttr abid); static smfmac_i32_16x16x64_i8 create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::Value a, ::mlir::Value b, ::mlir::Value c, ::mlir::Value index, ::mlir::IntegerAttr cbsz, ::mlir::IntegerAttr abid); static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::Type res, ::mlir::Value a, ::mlir::Value b, ::mlir::Value c, ::mlir::Value index, uint32_t cbsz, uint32_t abid); static smfmac_i32_16x16x64_i8 create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::Type res, ::mlir::Value a, ::mlir::Value b, ::mlir::Value c, ::mlir::Value index, uint32_t cbsz, uint32_t abid); static smfmac_i32_16x16x64_i8 create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::Type res, ::mlir::Value a, ::mlir::Value b, ::mlir::Value c, ::mlir::Value index, uint32_t cbsz, uint32_t abid); static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::Value a, ::mlir::Value b, ::mlir::Value c, ::mlir::Value index, uint32_t cbsz, uint32_t abid); static smfmac_i32_16x16x64_i8 create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::Value a, ::mlir::Value b, ::mlir::Value c, ::mlir::Value index, uint32_t cbsz, uint32_t abid); static smfmac_i32_16x16x64_i8 create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::Value a, ::mlir::Value b, ::mlir::Value c, ::mlir::Value index, uint32_t cbsz, uint32_t abid); static void build(::mlir::OpBuilder &, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, ::llvm::ArrayRef<::mlir::NamedAttribute> attributes = {}); static smfmac_i32_16x16x64_i8 create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, ::llvm::ArrayRef<::mlir::NamedAttribute> attributes = {}); static smfmac_i32_16x16x64_i8 create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, ::llvm::ArrayRef<::mlir::NamedAttribute> attributes = {}); static void build(::mlir::OpBuilder &, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, const Properties &properties, ::llvm::ArrayRef<::mlir::NamedAttribute> discardableAttributes = {}); static smfmac_i32_16x16x64_i8 create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, const Properties &properties, ::llvm::ArrayRef<::mlir::NamedAttribute> discardableAttributes = {}); static smfmac_i32_16x16x64_i8 create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, const Properties &properties, ::llvm::ArrayRef<::mlir::NamedAttribute> discardableAttributes = {}); ::llvm::LogicalResult verifyInvariantsImpl(); ::llvm::LogicalResult verifyInvariants(); static ::mlir::ParseResult parse(::mlir::OpAsmParser &parser, ::mlir::OperationState &result); void print(::mlir::OpAsmPrinter &_odsPrinter); private: ::mlir::StringAttr getAttributeNameForIndex(unsigned index) { return getAttributeNameForIndex((*this)->getName(), index); } static ::mlir::StringAttr getAttributeNameForIndex(::mlir::OperationName name, unsigned index) { assert(index < 2 && "invalid attribute index"); assert(name.getStringRef() == getOperationName() && "invalid operation name"); assert(name.isRegistered() && "Operation isn't registered, missing a " "dependent dialect loading?"); return name.getAttributeNames()[index]; } public: }; } // namespace mlir::ROCDL MLIR_DECLARE_EXPLICIT_TYPE_ID(::mlir::ROCDL::smfmac_i32_16x16x64_i8) MLIR_DECLARE_EXPLICIT_TYPE_ID(::mlir::ROCDL::detail::smfmac_i32_16x16x64_i8GenericAdaptorBase::Properties) namespace mlir::ROCDL { //===----------------------------------------------------------------------===// // ::mlir::ROCDL::smfmac_i32_32x32x32_i8 declarations //===----------------------------------------------------------------------===// namespace detail { class smfmac_i32_32x32x32_i8GenericAdaptorBase { public: struct Properties { using abidTy = ::mlir::IntegerAttr; abidTy abid; auto getAbid() const { auto &propStorage = this->abid; return ::llvm::cast<::mlir::IntegerAttr>(propStorage); } void setAbid(const ::mlir::IntegerAttr &propValue) { this->abid = propValue; } using cbszTy = ::mlir::IntegerAttr; cbszTy cbsz; auto getCbsz() const { auto &propStorage = this->cbsz; return ::llvm::cast<::mlir::IntegerAttr>(propStorage); } void setCbsz(const ::mlir::IntegerAttr &propValue) { this->cbsz = propValue; } bool operator==(const Properties &rhs) const { return rhs.abid == this->abid && rhs.cbsz == this->cbsz && true; } bool operator!=(const Properties &rhs) const { return !(*this == rhs); } }; protected: ::mlir::DictionaryAttr odsAttrs; ::std::optional<::mlir::OperationName> odsOpName; Properties properties; ::mlir::RegionRange odsRegions; public: smfmac_i32_32x32x32_i8GenericAdaptorBase(::mlir::DictionaryAttr attrs, const Properties &properties, ::mlir::RegionRange regions = {}) : odsAttrs(attrs), properties(properties), odsRegions(regions) { if (odsAttrs) odsOpName.emplace("rocdl.smfmac.i32.32x32x32.i8", odsAttrs.getContext()); } smfmac_i32_32x32x32_i8GenericAdaptorBase(smfmac_i32_32x32x32_i8 op); std::pair getODSOperandIndexAndLength(unsigned index, unsigned odsOperandsSize) { return {index, 1}; } const Properties &getProperties() { return properties; } ::mlir::DictionaryAttr getAttributes() { return odsAttrs; } ::mlir::IntegerAttr getCbszAttr() { auto attr = ::llvm::cast<::mlir::IntegerAttr>(getProperties().cbsz); return attr; } uint32_t getCbsz(); ::mlir::IntegerAttr getAbidAttr() { auto attr = ::llvm::cast<::mlir::IntegerAttr>(getProperties().abid); return attr; } uint32_t getAbid(); }; } // namespace detail template class smfmac_i32_32x32x32_i8GenericAdaptor : public detail::smfmac_i32_32x32x32_i8GenericAdaptorBase { using ValueT = ::llvm::detail::ValueOfRange; using Base = detail::smfmac_i32_32x32x32_i8GenericAdaptorBase; static constexpr int odsIndex_a = 0; static constexpr int odsIndex_b = 1; static constexpr int odsIndex_c = 2; static constexpr int odsIndex_index = 3; public: smfmac_i32_32x32x32_i8GenericAdaptor(RangeT values, ::mlir::DictionaryAttr attrs, const Properties &properties, ::mlir::RegionRange regions = {}) : Base(attrs, properties, regions), odsOperands(values) {} smfmac_i32_32x32x32_i8GenericAdaptor(RangeT values, ::mlir::DictionaryAttr attrs, ::mlir::PropertyRef properties, ::mlir::RegionRange regions = {}) : smfmac_i32_32x32x32_i8GenericAdaptor(values, attrs, (properties ? *properties.as() : Properties{}), regions) {} smfmac_i32_32x32x32_i8GenericAdaptor(RangeT values, ::mlir::DictionaryAttr attrs = nullptr) : smfmac_i32_32x32x32_i8GenericAdaptor(values, attrs, Properties{}, {}) {} smfmac_i32_32x32x32_i8GenericAdaptor(RangeT values, const smfmac_i32_32x32x32_i8GenericAdaptorBase &base) : Base(base), odsOperands(values) {} template >> smfmac_i32_32x32x32_i8GenericAdaptor(RangeT values, LateInst op) : Base(op), odsOperands(values) {} std::pair getODSOperandIndexAndLength(unsigned index) { return Base::getODSOperandIndexAndLength(index, odsOperands.size()); } RangeT getODSOperands(unsigned index) { auto valueRange = getODSOperandIndexAndLength(index); return {std::next(odsOperands.begin(), valueRange.first), std::next(odsOperands.begin(), valueRange.first + valueRange.second)}; } ValueT getA() { return (*getODSOperands(0).begin()); } ValueT getB() { return (*getODSOperands(1).begin()); } ValueT getC() { return (*getODSOperands(2).begin()); } ValueT getIndex() { return (*getODSOperands(3).begin()); } RangeT getOperands() { return odsOperands; } private: RangeT odsOperands; }; class smfmac_i32_32x32x32_i8Adaptor : public smfmac_i32_32x32x32_i8GenericAdaptor<::mlir::ValueRange> { public: using smfmac_i32_32x32x32_i8GenericAdaptor::smfmac_i32_32x32x32_i8GenericAdaptor; smfmac_i32_32x32x32_i8Adaptor(smfmac_i32_32x32x32_i8 op); ::llvm::LogicalResult verify(::mlir::Location loc); }; class smfmac_i32_32x32x32_i8 : public ::mlir::Op::Impl, ::mlir::OpTrait::ZeroSuccessors, ::mlir::OpTrait::NOperands<4>::Impl, ::mlir::OpTrait::OpInvariants, ::mlir::BytecodeOpInterface::Trait> { public: using Op::Op; using Op::print; using Adaptor = smfmac_i32_32x32x32_i8Adaptor; template using GenericAdaptor = smfmac_i32_32x32x32_i8GenericAdaptor; using FoldAdaptor = GenericAdaptor<::llvm::ArrayRef<::mlir::Attribute>>; static constexpr int odsIndex_a = 0; static constexpr int odsIndex_b = 1; static constexpr int odsIndex_c = 2; static constexpr int odsIndex_index = 3; using Properties = FoldAdaptor::Properties; static ::llvm::ArrayRef<::llvm::StringRef> getAttributeNames() { static ::llvm::StringRef attrNames[] = {::llvm::StringRef("abid"), ::llvm::StringRef("cbsz")}; return ::llvm::ArrayRef(attrNames); } ::mlir::StringAttr getAbidAttrName() { return getAttributeNameForIndex(0); } static ::mlir::StringAttr getAbidAttrName(::mlir::OperationName name) { return getAttributeNameForIndex(name, 0); } ::mlir::StringAttr getCbszAttrName() { return getAttributeNameForIndex(1); } static ::mlir::StringAttr getCbszAttrName(::mlir::OperationName name) { return getAttributeNameForIndex(name, 1); } static constexpr ::llvm::StringLiteral getOperationName() { return ::llvm::StringLiteral("rocdl.smfmac.i32.32x32x32.i8"); } std::pair getODSOperandIndexAndLength(unsigned index) { return {index, 1}; } ::mlir::Operation::operand_range getODSOperands(unsigned index) { auto valueRange = getODSOperandIndexAndLength(index); return {std::next(getOperation()->operand_begin(), valueRange.first), std::next(getOperation()->operand_begin(), valueRange.first + valueRange.second)}; } ::mlir::TypedValue<::mlir::VectorType> getA() { return ::llvm::cast<::mlir::TypedValue<::mlir::VectorType>>(*getODSOperands(0).begin()); } ::mlir::TypedValue<::mlir::VectorType> getB() { return ::llvm::cast<::mlir::TypedValue<::mlir::VectorType>>(*getODSOperands(1).begin()); } ::mlir::TypedValue<::mlir::VectorType> getC() { return ::llvm::cast<::mlir::TypedValue<::mlir::VectorType>>(*getODSOperands(2).begin()); } ::mlir::TypedValue<::mlir::IntegerType> getIndex() { return ::llvm::cast<::mlir::TypedValue<::mlir::IntegerType>>(*getODSOperands(3).begin()); } ::mlir::OpOperand &getAMutable() { auto range = getODSOperandIndexAndLength(0); return getOperation()->getOpOperand(range.first); } ::mlir::OpOperand &getBMutable() { auto range = getODSOperandIndexAndLength(1); return getOperation()->getOpOperand(range.first); } ::mlir::OpOperand &getCMutable() { auto range = getODSOperandIndexAndLength(2); return getOperation()->getOpOperand(range.first); } ::mlir::OpOperand &getIndexMutable() { auto range = getODSOperandIndexAndLength(3); return getOperation()->getOpOperand(range.first); } std::pair getODSResultIndexAndLength(unsigned index) { return {index, 1}; } ::mlir::Operation::result_range getODSResults(unsigned index) { auto valueRange = getODSResultIndexAndLength(index); return {std::next(getOperation()->result_begin(), valueRange.first), std::next(getOperation()->result_begin(), valueRange.first + valueRange.second)}; } ::mlir::TypedValue<::mlir::VectorType> getRes() { return ::llvm::cast<::mlir::TypedValue<::mlir::VectorType>>(*getODSResults(0).begin()); } static ::llvm::LogicalResult setPropertiesFromAttr(Properties &prop, ::mlir::Attribute attr, ::llvm::function_ref<::mlir::InFlightDiagnostic()> emitError); static ::mlir::Attribute getPropertiesAsAttr(::mlir::MLIRContext *ctx, const Properties &prop); static llvm::hash_code computePropertiesHash(const Properties &prop); static std::optional getInherentAttr(::mlir::MLIRContext *ctx, const Properties &prop, llvm::StringRef name); static void setInherentAttr(Properties &prop, llvm::StringRef name, mlir::Attribute value); static void populateInherentAttrs(::mlir::MLIRContext *ctx, const Properties &prop, ::mlir::NamedAttrList &attrs); static ::llvm::LogicalResult verifyInherentAttrs(::mlir::OperationName opName, ::mlir::NamedAttrList &attrs, llvm::function_ref<::mlir::InFlightDiagnostic()> emitError); static ::llvm::LogicalResult readProperties(::mlir::DialectBytecodeReader &reader, ::mlir::OperationState &state); void writeProperties(::mlir::DialectBytecodeWriter &writer); ::mlir::IntegerAttr getCbszAttr() { return ::llvm::cast<::mlir::IntegerAttr>(getProperties().cbsz); } uint32_t getCbsz(); ::mlir::IntegerAttr getAbidAttr() { return ::llvm::cast<::mlir::IntegerAttr>(getProperties().abid); } uint32_t getAbid(); void setCbszAttr(::mlir::IntegerAttr attr) { getProperties().cbsz = attr; } void setCbsz(uint32_t attrValue); void setAbidAttr(::mlir::IntegerAttr attr) { getProperties().abid = attr; } void setAbid(uint32_t attrValue); static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::Type res, ::mlir::Value a, ::mlir::Value b, ::mlir::Value c, ::mlir::Value index, ::mlir::IntegerAttr cbsz, ::mlir::IntegerAttr abid); static smfmac_i32_32x32x32_i8 create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::Type res, ::mlir::Value a, ::mlir::Value b, ::mlir::Value c, ::mlir::Value index, ::mlir::IntegerAttr cbsz, ::mlir::IntegerAttr abid); static smfmac_i32_32x32x32_i8 create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::Type res, ::mlir::Value a, ::mlir::Value b, ::mlir::Value c, ::mlir::Value index, ::mlir::IntegerAttr cbsz, ::mlir::IntegerAttr abid); static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::Value a, ::mlir::Value b, ::mlir::Value c, ::mlir::Value index, ::mlir::IntegerAttr cbsz, ::mlir::IntegerAttr abid); static smfmac_i32_32x32x32_i8 create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::Value a, ::mlir::Value b, ::mlir::Value c, ::mlir::Value index, ::mlir::IntegerAttr cbsz, ::mlir::IntegerAttr abid); static smfmac_i32_32x32x32_i8 create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::Value a, ::mlir::Value b, ::mlir::Value c, ::mlir::Value index, ::mlir::IntegerAttr cbsz, ::mlir::IntegerAttr abid); static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::Type res, ::mlir::Value a, ::mlir::Value b, ::mlir::Value c, ::mlir::Value index, uint32_t cbsz, uint32_t abid); static smfmac_i32_32x32x32_i8 create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::Type res, ::mlir::Value a, ::mlir::Value b, ::mlir::Value c, ::mlir::Value index, uint32_t cbsz, uint32_t abid); static smfmac_i32_32x32x32_i8 create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::Type res, ::mlir::Value a, ::mlir::Value b, ::mlir::Value c, ::mlir::Value index, uint32_t cbsz, uint32_t abid); static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::Value a, ::mlir::Value b, ::mlir::Value c, ::mlir::Value index, uint32_t cbsz, uint32_t abid); static smfmac_i32_32x32x32_i8 create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::Value a, ::mlir::Value b, ::mlir::Value c, ::mlir::Value index, uint32_t cbsz, uint32_t abid); static smfmac_i32_32x32x32_i8 create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::Value a, ::mlir::Value b, ::mlir::Value c, ::mlir::Value index, uint32_t cbsz, uint32_t abid); static void build(::mlir::OpBuilder &, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, ::llvm::ArrayRef<::mlir::NamedAttribute> attributes = {}); static smfmac_i32_32x32x32_i8 create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, ::llvm::ArrayRef<::mlir::NamedAttribute> attributes = {}); static smfmac_i32_32x32x32_i8 create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, ::llvm::ArrayRef<::mlir::NamedAttribute> attributes = {}); static void build(::mlir::OpBuilder &, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, const Properties &properties, ::llvm::ArrayRef<::mlir::NamedAttribute> discardableAttributes = {}); static smfmac_i32_32x32x32_i8 create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, const Properties &properties, ::llvm::ArrayRef<::mlir::NamedAttribute> discardableAttributes = {}); static smfmac_i32_32x32x32_i8 create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, const Properties &properties, ::llvm::ArrayRef<::mlir::NamedAttribute> discardableAttributes = {}); ::llvm::LogicalResult verifyInvariantsImpl(); ::llvm::LogicalResult verifyInvariants(); static ::mlir::ParseResult parse(::mlir::OpAsmParser &parser, ::mlir::OperationState &result); void print(::mlir::OpAsmPrinter &_odsPrinter); private: ::mlir::StringAttr getAttributeNameForIndex(unsigned index) { return getAttributeNameForIndex((*this)->getName(), index); } static ::mlir::StringAttr getAttributeNameForIndex(::mlir::OperationName name, unsigned index) { assert(index < 2 && "invalid attribute index"); assert(name.getStringRef() == getOperationName() && "invalid operation name"); assert(name.isRegistered() && "Operation isn't registered, missing a " "dependent dialect loading?"); return name.getAttributeNames()[index]; } public: }; } // namespace mlir::ROCDL MLIR_DECLARE_EXPLICIT_TYPE_ID(::mlir::ROCDL::smfmac_i32_32x32x32_i8) MLIR_DECLARE_EXPLICIT_TYPE_ID(::mlir::ROCDL::detail::smfmac_i32_32x32x32_i8GenericAdaptorBase::Properties) namespace mlir::ROCDL { //===----------------------------------------------------------------------===// // ::mlir::ROCDL::smfmac_i32_32x32x64_i8 declarations //===----------------------------------------------------------------------===// namespace detail { class smfmac_i32_32x32x64_i8GenericAdaptorBase { public: struct Properties { using abidTy = ::mlir::IntegerAttr; abidTy abid; auto getAbid() const { auto &propStorage = this->abid; return ::llvm::cast<::mlir::IntegerAttr>(propStorage); } void setAbid(const ::mlir::IntegerAttr &propValue) { this->abid = propValue; } using cbszTy = ::mlir::IntegerAttr; cbszTy cbsz; auto getCbsz() const { auto &propStorage = this->cbsz; return ::llvm::cast<::mlir::IntegerAttr>(propStorage); } void setCbsz(const ::mlir::IntegerAttr &propValue) { this->cbsz = propValue; } bool operator==(const Properties &rhs) const { return rhs.abid == this->abid && rhs.cbsz == this->cbsz && true; } bool operator!=(const Properties &rhs) const { return !(*this == rhs); } }; protected: ::mlir::DictionaryAttr odsAttrs; ::std::optional<::mlir::OperationName> odsOpName; Properties properties; ::mlir::RegionRange odsRegions; public: smfmac_i32_32x32x64_i8GenericAdaptorBase(::mlir::DictionaryAttr attrs, const Properties &properties, ::mlir::RegionRange regions = {}) : odsAttrs(attrs), properties(properties), odsRegions(regions) { if (odsAttrs) odsOpName.emplace("rocdl.smfmac.i32.32x32x64.i8", odsAttrs.getContext()); } smfmac_i32_32x32x64_i8GenericAdaptorBase(smfmac_i32_32x32x64_i8 op); std::pair getODSOperandIndexAndLength(unsigned index, unsigned odsOperandsSize) { return {index, 1}; } const Properties &getProperties() { return properties; } ::mlir::DictionaryAttr getAttributes() { return odsAttrs; } ::mlir::IntegerAttr getCbszAttr() { auto attr = ::llvm::cast<::mlir::IntegerAttr>(getProperties().cbsz); return attr; } uint32_t getCbsz(); ::mlir::IntegerAttr getAbidAttr() { auto attr = ::llvm::cast<::mlir::IntegerAttr>(getProperties().abid); return attr; } uint32_t getAbid(); }; } // namespace detail template class smfmac_i32_32x32x64_i8GenericAdaptor : public detail::smfmac_i32_32x32x64_i8GenericAdaptorBase { using ValueT = ::llvm::detail::ValueOfRange; using Base = detail::smfmac_i32_32x32x64_i8GenericAdaptorBase; static constexpr int odsIndex_a = 0; static constexpr int odsIndex_b = 1; static constexpr int odsIndex_c = 2; static constexpr int odsIndex_index = 3; public: smfmac_i32_32x32x64_i8GenericAdaptor(RangeT values, ::mlir::DictionaryAttr attrs, const Properties &properties, ::mlir::RegionRange regions = {}) : Base(attrs, properties, regions), odsOperands(values) {} smfmac_i32_32x32x64_i8GenericAdaptor(RangeT values, ::mlir::DictionaryAttr attrs, ::mlir::PropertyRef properties, ::mlir::RegionRange regions = {}) : smfmac_i32_32x32x64_i8GenericAdaptor(values, attrs, (properties ? *properties.as() : Properties{}), regions) {} smfmac_i32_32x32x64_i8GenericAdaptor(RangeT values, ::mlir::DictionaryAttr attrs = nullptr) : smfmac_i32_32x32x64_i8GenericAdaptor(values, attrs, Properties{}, {}) {} smfmac_i32_32x32x64_i8GenericAdaptor(RangeT values, const smfmac_i32_32x32x64_i8GenericAdaptorBase &base) : Base(base), odsOperands(values) {} template >> smfmac_i32_32x32x64_i8GenericAdaptor(RangeT values, LateInst op) : Base(op), odsOperands(values) {} std::pair getODSOperandIndexAndLength(unsigned index) { return Base::getODSOperandIndexAndLength(index, odsOperands.size()); } RangeT getODSOperands(unsigned index) { auto valueRange = getODSOperandIndexAndLength(index); return {std::next(odsOperands.begin(), valueRange.first), std::next(odsOperands.begin(), valueRange.first + valueRange.second)}; } ValueT getA() { return (*getODSOperands(0).begin()); } ValueT getB() { return (*getODSOperands(1).begin()); } ValueT getC() { return (*getODSOperands(2).begin()); } ValueT getIndex() { return (*getODSOperands(3).begin()); } RangeT getOperands() { return odsOperands; } private: RangeT odsOperands; }; class smfmac_i32_32x32x64_i8Adaptor : public smfmac_i32_32x32x64_i8GenericAdaptor<::mlir::ValueRange> { public: using smfmac_i32_32x32x64_i8GenericAdaptor::smfmac_i32_32x32x64_i8GenericAdaptor; smfmac_i32_32x32x64_i8Adaptor(smfmac_i32_32x32x64_i8 op); ::llvm::LogicalResult verify(::mlir::Location loc); }; class smfmac_i32_32x32x64_i8 : public ::mlir::Op::Impl, ::mlir::OpTrait::ZeroSuccessors, ::mlir::OpTrait::NOperands<4>::Impl, ::mlir::OpTrait::OpInvariants, ::mlir::BytecodeOpInterface::Trait> { public: using Op::Op; using Op::print; using Adaptor = smfmac_i32_32x32x64_i8Adaptor; template using GenericAdaptor = smfmac_i32_32x32x64_i8GenericAdaptor; using FoldAdaptor = GenericAdaptor<::llvm::ArrayRef<::mlir::Attribute>>; static constexpr int odsIndex_a = 0; static constexpr int odsIndex_b = 1; static constexpr int odsIndex_c = 2; static constexpr int odsIndex_index = 3; using Properties = FoldAdaptor::Properties; static ::llvm::ArrayRef<::llvm::StringRef> getAttributeNames() { static ::llvm::StringRef attrNames[] = {::llvm::StringRef("abid"), ::llvm::StringRef("cbsz")}; return ::llvm::ArrayRef(attrNames); } ::mlir::StringAttr getAbidAttrName() { return getAttributeNameForIndex(0); } static ::mlir::StringAttr getAbidAttrName(::mlir::OperationName name) { return getAttributeNameForIndex(name, 0); } ::mlir::StringAttr getCbszAttrName() { return getAttributeNameForIndex(1); } static ::mlir::StringAttr getCbszAttrName(::mlir::OperationName name) { return getAttributeNameForIndex(name, 1); } static constexpr ::llvm::StringLiteral getOperationName() { return ::llvm::StringLiteral("rocdl.smfmac.i32.32x32x64.i8"); } std::pair getODSOperandIndexAndLength(unsigned index) { return {index, 1}; } ::mlir::Operation::operand_range getODSOperands(unsigned index) { auto valueRange = getODSOperandIndexAndLength(index); return {std::next(getOperation()->operand_begin(), valueRange.first), std::next(getOperation()->operand_begin(), valueRange.first + valueRange.second)}; } ::mlir::TypedValue<::mlir::VectorType> getA() { return ::llvm::cast<::mlir::TypedValue<::mlir::VectorType>>(*getODSOperands(0).begin()); } ::mlir::TypedValue<::mlir::VectorType> getB() { return ::llvm::cast<::mlir::TypedValue<::mlir::VectorType>>(*getODSOperands(1).begin()); } ::mlir::TypedValue<::mlir::VectorType> getC() { return ::llvm::cast<::mlir::TypedValue<::mlir::VectorType>>(*getODSOperands(2).begin()); } ::mlir::TypedValue<::mlir::IntegerType> getIndex() { return ::llvm::cast<::mlir::TypedValue<::mlir::IntegerType>>(*getODSOperands(3).begin()); } ::mlir::OpOperand &getAMutable() { auto range = getODSOperandIndexAndLength(0); return getOperation()->getOpOperand(range.first); } ::mlir::OpOperand &getBMutable() { auto range = getODSOperandIndexAndLength(1); return getOperation()->getOpOperand(range.first); } ::mlir::OpOperand &getCMutable() { auto range = getODSOperandIndexAndLength(2); return getOperation()->getOpOperand(range.first); } ::mlir::OpOperand &getIndexMutable() { auto range = getODSOperandIndexAndLength(3); return getOperation()->getOpOperand(range.first); } std::pair getODSResultIndexAndLength(unsigned index) { return {index, 1}; } ::mlir::Operation::result_range getODSResults(unsigned index) { auto valueRange = getODSResultIndexAndLength(index); return {std::next(getOperation()->result_begin(), valueRange.first), std::next(getOperation()->result_begin(), valueRange.first + valueRange.second)}; } ::mlir::TypedValue<::mlir::VectorType> getRes() { return ::llvm::cast<::mlir::TypedValue<::mlir::VectorType>>(*getODSResults(0).begin()); } static ::llvm::LogicalResult setPropertiesFromAttr(Properties &prop, ::mlir::Attribute attr, ::llvm::function_ref<::mlir::InFlightDiagnostic()> emitError); static ::mlir::Attribute getPropertiesAsAttr(::mlir::MLIRContext *ctx, const Properties &prop); static llvm::hash_code computePropertiesHash(const Properties &prop); static std::optional getInherentAttr(::mlir::MLIRContext *ctx, const Properties &prop, llvm::StringRef name); static void setInherentAttr(Properties &prop, llvm::StringRef name, mlir::Attribute value); static void populateInherentAttrs(::mlir::MLIRContext *ctx, const Properties &prop, ::mlir::NamedAttrList &attrs); static ::llvm::LogicalResult verifyInherentAttrs(::mlir::OperationName opName, ::mlir::NamedAttrList &attrs, llvm::function_ref<::mlir::InFlightDiagnostic()> emitError); static ::llvm::LogicalResult readProperties(::mlir::DialectBytecodeReader &reader, ::mlir::OperationState &state); void writeProperties(::mlir::DialectBytecodeWriter &writer); ::mlir::IntegerAttr getCbszAttr() { return ::llvm::cast<::mlir::IntegerAttr>(getProperties().cbsz); } uint32_t getCbsz(); ::mlir::IntegerAttr getAbidAttr() { return ::llvm::cast<::mlir::IntegerAttr>(getProperties().abid); } uint32_t getAbid(); void setCbszAttr(::mlir::IntegerAttr attr) { getProperties().cbsz = attr; } void setCbsz(uint32_t attrValue); void setAbidAttr(::mlir::IntegerAttr attr) { getProperties().abid = attr; } void setAbid(uint32_t attrValue); static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::Type res, ::mlir::Value a, ::mlir::Value b, ::mlir::Value c, ::mlir::Value index, ::mlir::IntegerAttr cbsz, ::mlir::IntegerAttr abid); static smfmac_i32_32x32x64_i8 create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::Type res, ::mlir::Value a, ::mlir::Value b, ::mlir::Value c, ::mlir::Value index, ::mlir::IntegerAttr cbsz, ::mlir::IntegerAttr abid); static smfmac_i32_32x32x64_i8 create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::Type res, ::mlir::Value a, ::mlir::Value b, ::mlir::Value c, ::mlir::Value index, ::mlir::IntegerAttr cbsz, ::mlir::IntegerAttr abid); static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::Value a, ::mlir::Value b, ::mlir::Value c, ::mlir::Value index, ::mlir::IntegerAttr cbsz, ::mlir::IntegerAttr abid); static smfmac_i32_32x32x64_i8 create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::Value a, ::mlir::Value b, ::mlir::Value c, ::mlir::Value index, ::mlir::IntegerAttr cbsz, ::mlir::IntegerAttr abid); static smfmac_i32_32x32x64_i8 create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::Value a, ::mlir::Value b, ::mlir::Value c, ::mlir::Value index, ::mlir::IntegerAttr cbsz, ::mlir::IntegerAttr abid); static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::Type res, ::mlir::Value a, ::mlir::Value b, ::mlir::Value c, ::mlir::Value index, uint32_t cbsz, uint32_t abid); static smfmac_i32_32x32x64_i8 create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::Type res, ::mlir::Value a, ::mlir::Value b, ::mlir::Value c, ::mlir::Value index, uint32_t cbsz, uint32_t abid); static smfmac_i32_32x32x64_i8 create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::Type res, ::mlir::Value a, ::mlir::Value b, ::mlir::Value c, ::mlir::Value index, uint32_t cbsz, uint32_t abid); static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::Value a, ::mlir::Value b, ::mlir::Value c, ::mlir::Value index, uint32_t cbsz, uint32_t abid); static smfmac_i32_32x32x64_i8 create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::Value a, ::mlir::Value b, ::mlir::Value c, ::mlir::Value index, uint32_t cbsz, uint32_t abid); static smfmac_i32_32x32x64_i8 create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::Value a, ::mlir::Value b, ::mlir::Value c, ::mlir::Value index, uint32_t cbsz, uint32_t abid); static void build(::mlir::OpBuilder &, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, ::llvm::ArrayRef<::mlir::NamedAttribute> attributes = {}); static smfmac_i32_32x32x64_i8 create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, ::llvm::ArrayRef<::mlir::NamedAttribute> attributes = {}); static smfmac_i32_32x32x64_i8 create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, ::llvm::ArrayRef<::mlir::NamedAttribute> attributes = {}); static void build(::mlir::OpBuilder &, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, const Properties &properties, ::llvm::ArrayRef<::mlir::NamedAttribute> discardableAttributes = {}); static smfmac_i32_32x32x64_i8 create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, const Properties &properties, ::llvm::ArrayRef<::mlir::NamedAttribute> discardableAttributes = {}); static smfmac_i32_32x32x64_i8 create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, const Properties &properties, ::llvm::ArrayRef<::mlir::NamedAttribute> discardableAttributes = {}); ::llvm::LogicalResult verifyInvariantsImpl(); ::llvm::LogicalResult verifyInvariants(); static ::mlir::ParseResult parse(::mlir::OpAsmParser &parser, ::mlir::OperationState &result); void print(::mlir::OpAsmPrinter &_odsPrinter); private: ::mlir::StringAttr getAttributeNameForIndex(unsigned index) { return getAttributeNameForIndex((*this)->getName(), index); } static ::mlir::StringAttr getAttributeNameForIndex(::mlir::OperationName name, unsigned index) { assert(index < 2 && "invalid attribute index"); assert(name.getStringRef() == getOperationName() && "invalid operation name"); assert(name.isRegistered() && "Operation isn't registered, missing a " "dependent dialect loading?"); return name.getAttributeNames()[index]; } public: }; } // namespace mlir::ROCDL MLIR_DECLARE_EXPLICIT_TYPE_ID(::mlir::ROCDL::smfmac_i32_32x32x64_i8) MLIR_DECLARE_EXPLICIT_TYPE_ID(::mlir::ROCDL::detail::smfmac_i32_32x32x64_i8GenericAdaptorBase::Properties) namespace mlir::ROCDL { //===----------------------------------------------------------------------===// // ::mlir::ROCDL::sudot4 declarations //===----------------------------------------------------------------------===// namespace detail { class sudot4GenericAdaptorBase { public: struct Properties { using clampTy = ::mlir::IntegerAttr; clampTy clamp; auto getClamp() const { auto &propStorage = this->clamp; return ::llvm::dyn_cast_or_null<::mlir::IntegerAttr>(propStorage); } void setClamp(const ::mlir::IntegerAttr &propValue) { this->clamp = propValue; } using signATy = ::mlir::IntegerAttr; signATy signA; auto getSignA() const { auto &propStorage = this->signA; return ::llvm::dyn_cast_or_null<::mlir::IntegerAttr>(propStorage); } void setSignA(const ::mlir::IntegerAttr &propValue) { this->signA = propValue; } using signBTy = ::mlir::IntegerAttr; signBTy signB; auto getSignB() const { auto &propStorage = this->signB; return ::llvm::dyn_cast_or_null<::mlir::IntegerAttr>(propStorage); } void setSignB(const ::mlir::IntegerAttr &propValue) { this->signB = propValue; } bool operator==(const Properties &rhs) const { return rhs.clamp == this->clamp && rhs.signA == this->signA && rhs.signB == this->signB && true; } bool operator!=(const Properties &rhs) const { return !(*this == rhs); } }; protected: ::mlir::DictionaryAttr odsAttrs; ::std::optional<::mlir::OperationName> odsOpName; Properties properties; ::mlir::RegionRange odsRegions; public: sudot4GenericAdaptorBase(::mlir::DictionaryAttr attrs, const Properties &properties, ::mlir::RegionRange regions = {}) : odsAttrs(attrs), properties(properties), odsRegions(regions) { if (odsAttrs) odsOpName.emplace("rocdl.sudot4", odsAttrs.getContext()); } sudot4GenericAdaptorBase(sudot4 op); std::pair getODSOperandIndexAndLength(unsigned index, unsigned odsOperandsSize) { return {index, 1}; } const Properties &getProperties() { return properties; } ::mlir::DictionaryAttr getAttributes() { return odsAttrs; } ::mlir::IntegerAttr getSignAAttr(); bool getSignA(); ::mlir::IntegerAttr getSignBAttr(); bool getSignB(); ::mlir::IntegerAttr getClampAttr(); bool getClamp(); }; } // namespace detail template class sudot4GenericAdaptor : public detail::sudot4GenericAdaptorBase { using ValueT = ::llvm::detail::ValueOfRange; using Base = detail::sudot4GenericAdaptorBase; static constexpr int odsIndex_a = 0; static constexpr int odsIndex_b = 1; static constexpr int odsIndex_c = 2; public: sudot4GenericAdaptor(RangeT values, ::mlir::DictionaryAttr attrs, const Properties &properties, ::mlir::RegionRange regions = {}) : Base(attrs, properties, regions), odsOperands(values) {} sudot4GenericAdaptor(RangeT values, ::mlir::DictionaryAttr attrs, ::mlir::PropertyRef properties, ::mlir::RegionRange regions = {}) : sudot4GenericAdaptor(values, attrs, (properties ? *properties.as() : Properties{}), regions) {} sudot4GenericAdaptor(RangeT values, ::mlir::DictionaryAttr attrs = nullptr) : sudot4GenericAdaptor(values, attrs, Properties{}, {}) {} sudot4GenericAdaptor(RangeT values, const sudot4GenericAdaptorBase &base) : Base(base), odsOperands(values) {} template >> sudot4GenericAdaptor(RangeT values, LateInst op) : Base(op), odsOperands(values) {} std::pair getODSOperandIndexAndLength(unsigned index) { return Base::getODSOperandIndexAndLength(index, odsOperands.size()); } RangeT getODSOperands(unsigned index) { auto valueRange = getODSOperandIndexAndLength(index); return {std::next(odsOperands.begin(), valueRange.first), std::next(odsOperands.begin(), valueRange.first + valueRange.second)}; } ValueT getA() { return (*getODSOperands(0).begin()); } ValueT getB() { return (*getODSOperands(1).begin()); } ValueT getC() { return (*getODSOperands(2).begin()); } RangeT getOperands() { return odsOperands; } private: RangeT odsOperands; }; class sudot4Adaptor : public sudot4GenericAdaptor<::mlir::ValueRange> { public: using sudot4GenericAdaptor::sudot4GenericAdaptor; sudot4Adaptor(sudot4 op); ::llvm::LogicalResult verify(::mlir::Location loc); }; class sudot4 : public ::mlir::Op::Impl, ::mlir::OpTrait::ZeroSuccessors, ::mlir::OpTrait::NOperands<3>::Impl, ::mlir::OpTrait::OpInvariants, ::mlir::BytecodeOpInterface::Trait, ::mlir::ConditionallySpeculatable::Trait, ::mlir::OpTrait::AlwaysSpeculatableImplTrait, ::mlir::MemoryEffectOpInterface::Trait> { public: using Op::Op; using Op::print; using Adaptor = sudot4Adaptor; template using GenericAdaptor = sudot4GenericAdaptor; using FoldAdaptor = GenericAdaptor<::llvm::ArrayRef<::mlir::Attribute>>; static constexpr int odsIndex_a = 0; static constexpr int odsIndex_b = 1; static constexpr int odsIndex_c = 2; using Properties = FoldAdaptor::Properties; static ::llvm::ArrayRef<::llvm::StringRef> getAttributeNames() { static ::llvm::StringRef attrNames[] = {::llvm::StringRef("clamp"), ::llvm::StringRef("signA"), ::llvm::StringRef("signB")}; return ::llvm::ArrayRef(attrNames); } ::mlir::StringAttr getClampAttrName() { return getAttributeNameForIndex(0); } static ::mlir::StringAttr getClampAttrName(::mlir::OperationName name) { return getAttributeNameForIndex(name, 0); } ::mlir::StringAttr getSignAAttrName() { return getAttributeNameForIndex(1); } static ::mlir::StringAttr getSignAAttrName(::mlir::OperationName name) { return getAttributeNameForIndex(name, 1); } ::mlir::StringAttr getSignBAttrName() { return getAttributeNameForIndex(2); } static ::mlir::StringAttr getSignBAttrName(::mlir::OperationName name) { return getAttributeNameForIndex(name, 2); } static constexpr ::llvm::StringLiteral getOperationName() { return ::llvm::StringLiteral("rocdl.sudot4"); } std::pair getODSOperandIndexAndLength(unsigned index) { return {index, 1}; } ::mlir::Operation::operand_range getODSOperands(unsigned index) { auto valueRange = getODSOperandIndexAndLength(index); return {std::next(getOperation()->operand_begin(), valueRange.first), std::next(getOperation()->operand_begin(), valueRange.first + valueRange.second)}; } ::mlir::TypedValue<::mlir::IntegerType> getA() { return ::llvm::cast<::mlir::TypedValue<::mlir::IntegerType>>(*getODSOperands(0).begin()); } ::mlir::TypedValue<::mlir::IntegerType> getB() { return ::llvm::cast<::mlir::TypedValue<::mlir::IntegerType>>(*getODSOperands(1).begin()); } ::mlir::TypedValue<::mlir::IntegerType> getC() { return ::llvm::cast<::mlir::TypedValue<::mlir::IntegerType>>(*getODSOperands(2).begin()); } ::mlir::OpOperand &getAMutable() { auto range = getODSOperandIndexAndLength(0); return getOperation()->getOpOperand(range.first); } ::mlir::OpOperand &getBMutable() { auto range = getODSOperandIndexAndLength(1); return getOperation()->getOpOperand(range.first); } ::mlir::OpOperand &getCMutable() { auto range = getODSOperandIndexAndLength(2); return getOperation()->getOpOperand(range.first); } std::pair getODSResultIndexAndLength(unsigned index) { return {index, 1}; } ::mlir::Operation::result_range getODSResults(unsigned index) { auto valueRange = getODSResultIndexAndLength(index); return {std::next(getOperation()->result_begin(), valueRange.first), std::next(getOperation()->result_begin(), valueRange.first + valueRange.second)}; } ::mlir::TypedValue<::mlir::IntegerType> getRes() { return ::llvm::cast<::mlir::TypedValue<::mlir::IntegerType>>(*getODSResults(0).begin()); } static ::llvm::LogicalResult setPropertiesFromAttr(Properties &prop, ::mlir::Attribute attr, ::llvm::function_ref<::mlir::InFlightDiagnostic()> emitError); static ::mlir::Attribute getPropertiesAsAttr(::mlir::MLIRContext *ctx, const Properties &prop); static llvm::hash_code computePropertiesHash(const Properties &prop); static std::optional getInherentAttr(::mlir::MLIRContext *ctx, const Properties &prop, llvm::StringRef name); static void setInherentAttr(Properties &prop, llvm::StringRef name, mlir::Attribute value); static void populateInherentAttrs(::mlir::MLIRContext *ctx, const Properties &prop, ::mlir::NamedAttrList &attrs); static ::llvm::LogicalResult verifyInherentAttrs(::mlir::OperationName opName, ::mlir::NamedAttrList &attrs, llvm::function_ref<::mlir::InFlightDiagnostic()> emitError); static ::llvm::LogicalResult readProperties(::mlir::DialectBytecodeReader &reader, ::mlir::OperationState &state); void writeProperties(::mlir::DialectBytecodeWriter &writer); ::mlir::IntegerAttr getSignAAttr() { return ::llvm::dyn_cast_or_null<::mlir::IntegerAttr>(getProperties().signA); } bool getSignA(); ::mlir::IntegerAttr getSignBAttr() { return ::llvm::dyn_cast_or_null<::mlir::IntegerAttr>(getProperties().signB); } bool getSignB(); ::mlir::IntegerAttr getClampAttr() { return ::llvm::dyn_cast_or_null<::mlir::IntegerAttr>(getProperties().clamp); } bool getClamp(); void setSignAAttr(::mlir::IntegerAttr attr) { getProperties().signA = attr; } void setSignA(bool attrValue); void setSignBAttr(::mlir::IntegerAttr attr) { getProperties().signB = attr; } void setSignB(bool attrValue); void setClampAttr(::mlir::IntegerAttr attr) { getProperties().clamp = attr; } void setClamp(bool attrValue); static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::Type res, ::mlir::IntegerAttr signA, ::mlir::Value a, ::mlir::IntegerAttr signB, ::mlir::Value b, ::mlir::Value c, ::mlir::IntegerAttr clamp); static sudot4 create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::Type res, ::mlir::IntegerAttr signA, ::mlir::Value a, ::mlir::IntegerAttr signB, ::mlir::Value b, ::mlir::Value c, ::mlir::IntegerAttr clamp); static sudot4 create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::Type res, ::mlir::IntegerAttr signA, ::mlir::Value a, ::mlir::IntegerAttr signB, ::mlir::Value b, ::mlir::Value c, ::mlir::IntegerAttr clamp); static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::IntegerAttr signA, ::mlir::Value a, ::mlir::IntegerAttr signB, ::mlir::Value b, ::mlir::Value c, ::mlir::IntegerAttr clamp); static sudot4 create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::IntegerAttr signA, ::mlir::Value a, ::mlir::IntegerAttr signB, ::mlir::Value b, ::mlir::Value c, ::mlir::IntegerAttr clamp); static sudot4 create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::IntegerAttr signA, ::mlir::Value a, ::mlir::IntegerAttr signB, ::mlir::Value b, ::mlir::Value c, ::mlir::IntegerAttr clamp); static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::Type res, bool signA, ::mlir::Value a, bool signB, ::mlir::Value b, ::mlir::Value c, bool clamp = 0); static sudot4 create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::Type res, bool signA, ::mlir::Value a, bool signB, ::mlir::Value b, ::mlir::Value c, bool clamp = 0); static sudot4 create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::Type res, bool signA, ::mlir::Value a, bool signB, ::mlir::Value b, ::mlir::Value c, bool clamp = 0); static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, bool signA, ::mlir::Value a, bool signB, ::mlir::Value b, ::mlir::Value c, bool clamp = 0); static sudot4 create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, bool signA, ::mlir::Value a, bool signB, ::mlir::Value b, ::mlir::Value c, bool clamp = 0); static sudot4 create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, bool signA, ::mlir::Value a, bool signB, ::mlir::Value b, ::mlir::Value c, bool clamp = 0); static void build(::mlir::OpBuilder &, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, ::llvm::ArrayRef<::mlir::NamedAttribute> attributes = {}); static sudot4 create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, ::llvm::ArrayRef<::mlir::NamedAttribute> attributes = {}); static sudot4 create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, ::llvm::ArrayRef<::mlir::NamedAttribute> attributes = {}); static void build(::mlir::OpBuilder &, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, const Properties &properties, ::llvm::ArrayRef<::mlir::NamedAttribute> discardableAttributes = {}); static sudot4 create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, const Properties &properties, ::llvm::ArrayRef<::mlir::NamedAttribute> discardableAttributes = {}); static sudot4 create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, const Properties &properties, ::llvm::ArrayRef<::mlir::NamedAttribute> discardableAttributes = {}); static void populateDefaultProperties(::mlir::OperationName opName, Properties &properties); ::llvm::LogicalResult verifyInvariantsImpl(); ::llvm::LogicalResult verifyInvariants(); static ::mlir::ParseResult parse(::mlir::OpAsmParser &parser, ::mlir::OperationState &result); void print(::mlir::OpAsmPrinter &_odsPrinter); void getEffects(::llvm::SmallVectorImpl<::mlir::SideEffects::EffectInstance<::mlir::MemoryEffects::Effect>> &effects); private: ::mlir::StringAttr getAttributeNameForIndex(unsigned index) { return getAttributeNameForIndex((*this)->getName(), index); } static ::mlir::StringAttr getAttributeNameForIndex(::mlir::OperationName name, unsigned index) { assert(index < 3 && "invalid attribute index"); assert(name.getStringRef() == getOperationName() && "invalid operation name"); assert(name.isRegistered() && "Operation isn't registered, missing a " "dependent dialect loading?"); return name.getAttributeNames()[index]; } public: }; } // namespace mlir::ROCDL MLIR_DECLARE_EXPLICIT_TYPE_ID(::mlir::ROCDL::sudot4) MLIR_DECLARE_EXPLICIT_TYPE_ID(::mlir::ROCDL::detail::sudot4GenericAdaptorBase::Properties) namespace mlir::ROCDL { //===----------------------------------------------------------------------===// // ::mlir::ROCDL::sudot8 declarations //===----------------------------------------------------------------------===// namespace detail { class sudot8GenericAdaptorBase { public: struct Properties { using clampTy = ::mlir::IntegerAttr; clampTy clamp; auto getClamp() const { auto &propStorage = this->clamp; return ::llvm::dyn_cast_or_null<::mlir::IntegerAttr>(propStorage); } void setClamp(const ::mlir::IntegerAttr &propValue) { this->clamp = propValue; } using signATy = ::mlir::IntegerAttr; signATy signA; auto getSignA() const { auto &propStorage = this->signA; return ::llvm::dyn_cast_or_null<::mlir::IntegerAttr>(propStorage); } void setSignA(const ::mlir::IntegerAttr &propValue) { this->signA = propValue; } using signBTy = ::mlir::IntegerAttr; signBTy signB; auto getSignB() const { auto &propStorage = this->signB; return ::llvm::dyn_cast_or_null<::mlir::IntegerAttr>(propStorage); } void setSignB(const ::mlir::IntegerAttr &propValue) { this->signB = propValue; } bool operator==(const Properties &rhs) const { return rhs.clamp == this->clamp && rhs.signA == this->signA && rhs.signB == this->signB && true; } bool operator!=(const Properties &rhs) const { return !(*this == rhs); } }; protected: ::mlir::DictionaryAttr odsAttrs; ::std::optional<::mlir::OperationName> odsOpName; Properties properties; ::mlir::RegionRange odsRegions; public: sudot8GenericAdaptorBase(::mlir::DictionaryAttr attrs, const Properties &properties, ::mlir::RegionRange regions = {}) : odsAttrs(attrs), properties(properties), odsRegions(regions) { if (odsAttrs) odsOpName.emplace("rocdl.sudot8", odsAttrs.getContext()); } sudot8GenericAdaptorBase(sudot8 op); std::pair getODSOperandIndexAndLength(unsigned index, unsigned odsOperandsSize) { return {index, 1}; } const Properties &getProperties() { return properties; } ::mlir::DictionaryAttr getAttributes() { return odsAttrs; } ::mlir::IntegerAttr getSignAAttr(); bool getSignA(); ::mlir::IntegerAttr getSignBAttr(); bool getSignB(); ::mlir::IntegerAttr getClampAttr(); bool getClamp(); }; } // namespace detail template class sudot8GenericAdaptor : public detail::sudot8GenericAdaptorBase { using ValueT = ::llvm::detail::ValueOfRange; using Base = detail::sudot8GenericAdaptorBase; static constexpr int odsIndex_a = 0; static constexpr int odsIndex_b = 1; static constexpr int odsIndex_c = 2; public: sudot8GenericAdaptor(RangeT values, ::mlir::DictionaryAttr attrs, const Properties &properties, ::mlir::RegionRange regions = {}) : Base(attrs, properties, regions), odsOperands(values) {} sudot8GenericAdaptor(RangeT values, ::mlir::DictionaryAttr attrs, ::mlir::PropertyRef properties, ::mlir::RegionRange regions = {}) : sudot8GenericAdaptor(values, attrs, (properties ? *properties.as() : Properties{}), regions) {} sudot8GenericAdaptor(RangeT values, ::mlir::DictionaryAttr attrs = nullptr) : sudot8GenericAdaptor(values, attrs, Properties{}, {}) {} sudot8GenericAdaptor(RangeT values, const sudot8GenericAdaptorBase &base) : Base(base), odsOperands(values) {} template >> sudot8GenericAdaptor(RangeT values, LateInst op) : Base(op), odsOperands(values) {} std::pair getODSOperandIndexAndLength(unsigned index) { return Base::getODSOperandIndexAndLength(index, odsOperands.size()); } RangeT getODSOperands(unsigned index) { auto valueRange = getODSOperandIndexAndLength(index); return {std::next(odsOperands.begin(), valueRange.first), std::next(odsOperands.begin(), valueRange.first + valueRange.second)}; } ValueT getA() { return (*getODSOperands(0).begin()); } ValueT getB() { return (*getODSOperands(1).begin()); } ValueT getC() { return (*getODSOperands(2).begin()); } RangeT getOperands() { return odsOperands; } private: RangeT odsOperands; }; class sudot8Adaptor : public sudot8GenericAdaptor<::mlir::ValueRange> { public: using sudot8GenericAdaptor::sudot8GenericAdaptor; sudot8Adaptor(sudot8 op); ::llvm::LogicalResult verify(::mlir::Location loc); }; class sudot8 : public ::mlir::Op::Impl, ::mlir::OpTrait::ZeroSuccessors, ::mlir::OpTrait::NOperands<3>::Impl, ::mlir::OpTrait::OpInvariants, ::mlir::BytecodeOpInterface::Trait, ::mlir::ConditionallySpeculatable::Trait, ::mlir::OpTrait::AlwaysSpeculatableImplTrait, ::mlir::MemoryEffectOpInterface::Trait> { public: using Op::Op; using Op::print; using Adaptor = sudot8Adaptor; template using GenericAdaptor = sudot8GenericAdaptor; using FoldAdaptor = GenericAdaptor<::llvm::ArrayRef<::mlir::Attribute>>; static constexpr int odsIndex_a = 0; static constexpr int odsIndex_b = 1; static constexpr int odsIndex_c = 2; using Properties = FoldAdaptor::Properties; static ::llvm::ArrayRef<::llvm::StringRef> getAttributeNames() { static ::llvm::StringRef attrNames[] = {::llvm::StringRef("clamp"), ::llvm::StringRef("signA"), ::llvm::StringRef("signB")}; return ::llvm::ArrayRef(attrNames); } ::mlir::StringAttr getClampAttrName() { return getAttributeNameForIndex(0); } static ::mlir::StringAttr getClampAttrName(::mlir::OperationName name) { return getAttributeNameForIndex(name, 0); } ::mlir::StringAttr getSignAAttrName() { return getAttributeNameForIndex(1); } static ::mlir::StringAttr getSignAAttrName(::mlir::OperationName name) { return getAttributeNameForIndex(name, 1); } ::mlir::StringAttr getSignBAttrName() { return getAttributeNameForIndex(2); } static ::mlir::StringAttr getSignBAttrName(::mlir::OperationName name) { return getAttributeNameForIndex(name, 2); } static constexpr ::llvm::StringLiteral getOperationName() { return ::llvm::StringLiteral("rocdl.sudot8"); } std::pair getODSOperandIndexAndLength(unsigned index) { return {index, 1}; } ::mlir::Operation::operand_range getODSOperands(unsigned index) { auto valueRange = getODSOperandIndexAndLength(index); return {std::next(getOperation()->operand_begin(), valueRange.first), std::next(getOperation()->operand_begin(), valueRange.first + valueRange.second)}; } ::mlir::TypedValue<::mlir::IntegerType> getA() { return ::llvm::cast<::mlir::TypedValue<::mlir::IntegerType>>(*getODSOperands(0).begin()); } ::mlir::TypedValue<::mlir::IntegerType> getB() { return ::llvm::cast<::mlir::TypedValue<::mlir::IntegerType>>(*getODSOperands(1).begin()); } ::mlir::TypedValue<::mlir::IntegerType> getC() { return ::llvm::cast<::mlir::TypedValue<::mlir::IntegerType>>(*getODSOperands(2).begin()); } ::mlir::OpOperand &getAMutable() { auto range = getODSOperandIndexAndLength(0); return getOperation()->getOpOperand(range.first); } ::mlir::OpOperand &getBMutable() { auto range = getODSOperandIndexAndLength(1); return getOperation()->getOpOperand(range.first); } ::mlir::OpOperand &getCMutable() { auto range = getODSOperandIndexAndLength(2); return getOperation()->getOpOperand(range.first); } std::pair getODSResultIndexAndLength(unsigned index) { return {index, 1}; } ::mlir::Operation::result_range getODSResults(unsigned index) { auto valueRange = getODSResultIndexAndLength(index); return {std::next(getOperation()->result_begin(), valueRange.first), std::next(getOperation()->result_begin(), valueRange.first + valueRange.second)}; } ::mlir::TypedValue<::mlir::IntegerType> getRes() { return ::llvm::cast<::mlir::TypedValue<::mlir::IntegerType>>(*getODSResults(0).begin()); } static ::llvm::LogicalResult setPropertiesFromAttr(Properties &prop, ::mlir::Attribute attr, ::llvm::function_ref<::mlir::InFlightDiagnostic()> emitError); static ::mlir::Attribute getPropertiesAsAttr(::mlir::MLIRContext *ctx, const Properties &prop); static llvm::hash_code computePropertiesHash(const Properties &prop); static std::optional getInherentAttr(::mlir::MLIRContext *ctx, const Properties &prop, llvm::StringRef name); static void setInherentAttr(Properties &prop, llvm::StringRef name, mlir::Attribute value); static void populateInherentAttrs(::mlir::MLIRContext *ctx, const Properties &prop, ::mlir::NamedAttrList &attrs); static ::llvm::LogicalResult verifyInherentAttrs(::mlir::OperationName opName, ::mlir::NamedAttrList &attrs, llvm::function_ref<::mlir::InFlightDiagnostic()> emitError); static ::llvm::LogicalResult readProperties(::mlir::DialectBytecodeReader &reader, ::mlir::OperationState &state); void writeProperties(::mlir::DialectBytecodeWriter &writer); ::mlir::IntegerAttr getSignAAttr() { return ::llvm::dyn_cast_or_null<::mlir::IntegerAttr>(getProperties().signA); } bool getSignA(); ::mlir::IntegerAttr getSignBAttr() { return ::llvm::dyn_cast_or_null<::mlir::IntegerAttr>(getProperties().signB); } bool getSignB(); ::mlir::IntegerAttr getClampAttr() { return ::llvm::dyn_cast_or_null<::mlir::IntegerAttr>(getProperties().clamp); } bool getClamp(); void setSignAAttr(::mlir::IntegerAttr attr) { getProperties().signA = attr; } void setSignA(bool attrValue); void setSignBAttr(::mlir::IntegerAttr attr) { getProperties().signB = attr; } void setSignB(bool attrValue); void setClampAttr(::mlir::IntegerAttr attr) { getProperties().clamp = attr; } void setClamp(bool attrValue); static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::Type res, ::mlir::IntegerAttr signA, ::mlir::Value a, ::mlir::IntegerAttr signB, ::mlir::Value b, ::mlir::Value c, ::mlir::IntegerAttr clamp); static sudot8 create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::Type res, ::mlir::IntegerAttr signA, ::mlir::Value a, ::mlir::IntegerAttr signB, ::mlir::Value b, ::mlir::Value c, ::mlir::IntegerAttr clamp); static sudot8 create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::Type res, ::mlir::IntegerAttr signA, ::mlir::Value a, ::mlir::IntegerAttr signB, ::mlir::Value b, ::mlir::Value c, ::mlir::IntegerAttr clamp); static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::IntegerAttr signA, ::mlir::Value a, ::mlir::IntegerAttr signB, ::mlir::Value b, ::mlir::Value c, ::mlir::IntegerAttr clamp); static sudot8 create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::IntegerAttr signA, ::mlir::Value a, ::mlir::IntegerAttr signB, ::mlir::Value b, ::mlir::Value c, ::mlir::IntegerAttr clamp); static sudot8 create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::IntegerAttr signA, ::mlir::Value a, ::mlir::IntegerAttr signB, ::mlir::Value b, ::mlir::Value c, ::mlir::IntegerAttr clamp); static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::Type res, bool signA, ::mlir::Value a, bool signB, ::mlir::Value b, ::mlir::Value c, bool clamp = 0); static sudot8 create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::Type res, bool signA, ::mlir::Value a, bool signB, ::mlir::Value b, ::mlir::Value c, bool clamp = 0); static sudot8 create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::Type res, bool signA, ::mlir::Value a, bool signB, ::mlir::Value b, ::mlir::Value c, bool clamp = 0); static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, bool signA, ::mlir::Value a, bool signB, ::mlir::Value b, ::mlir::Value c, bool clamp = 0); static sudot8 create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, bool signA, ::mlir::Value a, bool signB, ::mlir::Value b, ::mlir::Value c, bool clamp = 0); static sudot8 create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, bool signA, ::mlir::Value a, bool signB, ::mlir::Value b, ::mlir::Value c, bool clamp = 0); static void build(::mlir::OpBuilder &, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, ::llvm::ArrayRef<::mlir::NamedAttribute> attributes = {}); static sudot8 create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, ::llvm::ArrayRef<::mlir::NamedAttribute> attributes = {}); static sudot8 create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, ::llvm::ArrayRef<::mlir::NamedAttribute> attributes = {}); static void build(::mlir::OpBuilder &, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, const Properties &properties, ::llvm::ArrayRef<::mlir::NamedAttribute> discardableAttributes = {}); static sudot8 create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, const Properties &properties, ::llvm::ArrayRef<::mlir::NamedAttribute> discardableAttributes = {}); static sudot8 create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, const Properties &properties, ::llvm::ArrayRef<::mlir::NamedAttribute> discardableAttributes = {}); static void populateDefaultProperties(::mlir::OperationName opName, Properties &properties); ::llvm::LogicalResult verifyInvariantsImpl(); ::llvm::LogicalResult verifyInvariants(); static ::mlir::ParseResult parse(::mlir::OpAsmParser &parser, ::mlir::OperationState &result); void print(::mlir::OpAsmPrinter &_odsPrinter); void getEffects(::llvm::SmallVectorImpl<::mlir::SideEffects::EffectInstance<::mlir::MemoryEffects::Effect>> &effects); private: ::mlir::StringAttr getAttributeNameForIndex(unsigned index) { return getAttributeNameForIndex((*this)->getName(), index); } static ::mlir::StringAttr getAttributeNameForIndex(::mlir::OperationName name, unsigned index) { assert(index < 3 && "invalid attribute index"); assert(name.getStringRef() == getOperationName() && "invalid operation name"); assert(name.isRegistered() && "Operation isn't registered, missing a " "dependent dialect loading?"); return name.getAttributeNames()[index]; } public: }; } // namespace mlir::ROCDL MLIR_DECLARE_EXPLICIT_TYPE_ID(::mlir::ROCDL::sudot8) MLIR_DECLARE_EXPLICIT_TYPE_ID(::mlir::ROCDL::detail::sudot8GenericAdaptorBase::Properties) namespace mlir::ROCDL { //===----------------------------------------------------------------------===// // ::mlir::ROCDL::swmmac_bf16_16x16x32_bf16 declarations //===----------------------------------------------------------------------===// namespace detail { class swmmac_bf16_16x16x32_bf16GenericAdaptorBase { public: using Properties = ::mlir::EmptyProperties; protected: ::mlir::DictionaryAttr odsAttrs; ::std::optional<::mlir::OperationName> odsOpName; Properties properties; ::mlir::RegionRange odsRegions; public: swmmac_bf16_16x16x32_bf16GenericAdaptorBase(::mlir::DictionaryAttr attrs, const Properties &properties, ::mlir::RegionRange regions = {}) : odsAttrs(attrs), properties(properties), odsRegions(regions) { if (odsAttrs) odsOpName.emplace("rocdl.swmmac.bf16.16x16x32.bf16", odsAttrs.getContext()); } swmmac_bf16_16x16x32_bf16GenericAdaptorBase(swmmac_bf16_16x16x32_bf16 op); std::pair getODSOperandIndexAndLength(unsigned index, unsigned odsOperandsSize) { return {index, 1}; } const Properties &getProperties() { return properties; } ::mlir::DictionaryAttr getAttributes() { return odsAttrs; } }; } // namespace detail template class swmmac_bf16_16x16x32_bf16GenericAdaptor : public detail::swmmac_bf16_16x16x32_bf16GenericAdaptorBase { using ValueT = ::llvm::detail::ValueOfRange; using Base = detail::swmmac_bf16_16x16x32_bf16GenericAdaptorBase; static constexpr int odsIndex_a = 0; static constexpr int odsIndex_b = 1; static constexpr int odsIndex_c = 2; static constexpr int odsIndex_index = 3; public: swmmac_bf16_16x16x32_bf16GenericAdaptor(RangeT values, ::mlir::DictionaryAttr attrs, const Properties &properties, ::mlir::RegionRange regions = {}) : Base(attrs, properties, regions), odsOperands(values) {} swmmac_bf16_16x16x32_bf16GenericAdaptor(RangeT values, ::mlir::DictionaryAttr attrs, ::mlir::PropertyRef properties, ::mlir::RegionRange regions = {}) : swmmac_bf16_16x16x32_bf16GenericAdaptor(values, attrs, (properties ? *properties.as() : Properties{}), regions) {} swmmac_bf16_16x16x32_bf16GenericAdaptor(RangeT values, ::mlir::DictionaryAttr attrs = nullptr) : swmmac_bf16_16x16x32_bf16GenericAdaptor(values, attrs, Properties{}, {}) {} swmmac_bf16_16x16x32_bf16GenericAdaptor(RangeT values, const swmmac_bf16_16x16x32_bf16GenericAdaptorBase &base) : Base(base), odsOperands(values) {} template >> swmmac_bf16_16x16x32_bf16GenericAdaptor(RangeT values, LateInst op) : Base(op), odsOperands(values) {} std::pair getODSOperandIndexAndLength(unsigned index) { return Base::getODSOperandIndexAndLength(index, odsOperands.size()); } RangeT getODSOperands(unsigned index) { auto valueRange = getODSOperandIndexAndLength(index); return {std::next(odsOperands.begin(), valueRange.first), std::next(odsOperands.begin(), valueRange.first + valueRange.second)}; } ValueT getA() { return (*getODSOperands(0).begin()); } ValueT getB() { return (*getODSOperands(1).begin()); } ValueT getC() { return (*getODSOperands(2).begin()); } ValueT getIndex() { return (*getODSOperands(3).begin()); } RangeT getOperands() { return odsOperands; } private: RangeT odsOperands; }; class swmmac_bf16_16x16x32_bf16Adaptor : public swmmac_bf16_16x16x32_bf16GenericAdaptor<::mlir::ValueRange> { public: using swmmac_bf16_16x16x32_bf16GenericAdaptor::swmmac_bf16_16x16x32_bf16GenericAdaptor; swmmac_bf16_16x16x32_bf16Adaptor(swmmac_bf16_16x16x32_bf16 op); ::llvm::LogicalResult verify(::mlir::Location loc); }; class swmmac_bf16_16x16x32_bf16 : public ::mlir::Op::Impl, ::mlir::OpTrait::ZeroSuccessors, ::mlir::OpTrait::NOperands<4>::Impl, ::mlir::OpTrait::OpInvariants> { public: using Op::Op; using Op::print; using Adaptor = swmmac_bf16_16x16x32_bf16Adaptor; template using GenericAdaptor = swmmac_bf16_16x16x32_bf16GenericAdaptor; using FoldAdaptor = GenericAdaptor<::llvm::ArrayRef<::mlir::Attribute>>; static constexpr int odsIndex_a = 0; static constexpr int odsIndex_b = 1; static constexpr int odsIndex_c = 2; static constexpr int odsIndex_index = 3; using Properties = FoldAdaptor::Properties; static ::llvm::ArrayRef<::llvm::StringRef> getAttributeNames() { return {}; } static constexpr ::llvm::StringLiteral getOperationName() { return ::llvm::StringLiteral("rocdl.swmmac.bf16.16x16x32.bf16"); } std::pair getODSOperandIndexAndLength(unsigned index) { return {index, 1}; } ::mlir::Operation::operand_range getODSOperands(unsigned index) { auto valueRange = getODSOperandIndexAndLength(index); return {std::next(getOperation()->operand_begin(), valueRange.first), std::next(getOperation()->operand_begin(), valueRange.first + valueRange.second)}; } ::mlir::TypedValue<::mlir::VectorType> getA() { return ::llvm::cast<::mlir::TypedValue<::mlir::VectorType>>(*getODSOperands(0).begin()); } ::mlir::TypedValue<::mlir::VectorType> getB() { return ::llvm::cast<::mlir::TypedValue<::mlir::VectorType>>(*getODSOperands(1).begin()); } ::mlir::TypedValue<::mlir::VectorType> getC() { return ::llvm::cast<::mlir::TypedValue<::mlir::VectorType>>(*getODSOperands(2).begin()); } ::mlir::TypedValue<::mlir::IntegerType> getIndex() { return ::llvm::cast<::mlir::TypedValue<::mlir::IntegerType>>(*getODSOperands(3).begin()); } ::mlir::OpOperand &getAMutable() { auto range = getODSOperandIndexAndLength(0); return getOperation()->getOpOperand(range.first); } ::mlir::OpOperand &getBMutable() { auto range = getODSOperandIndexAndLength(1); return getOperation()->getOpOperand(range.first); } ::mlir::OpOperand &getCMutable() { auto range = getODSOperandIndexAndLength(2); return getOperation()->getOpOperand(range.first); } ::mlir::OpOperand &getIndexMutable() { auto range = getODSOperandIndexAndLength(3); return getOperation()->getOpOperand(range.first); } std::pair getODSResultIndexAndLength(unsigned index) { return {index, 1}; } ::mlir::Operation::result_range getODSResults(unsigned index) { auto valueRange = getODSResultIndexAndLength(index); return {std::next(getOperation()->result_begin(), valueRange.first), std::next(getOperation()->result_begin(), valueRange.first + valueRange.second)}; } ::mlir::TypedValue<::mlir::VectorType> getRes() { return ::llvm::cast<::mlir::TypedValue<::mlir::VectorType>>(*getODSResults(0).begin()); } static ::llvm::LogicalResult setPropertiesFromAttr(Properties &prop, ::mlir::Attribute attr, ::llvm::function_ref<::mlir::InFlightDiagnostic()> emitError); static ::mlir::Attribute getPropertiesAsAttr(::mlir::MLIRContext *ctx, const Properties &prop); static llvm::hash_code computePropertiesHash(const Properties &prop); static std::optional getInherentAttr(::mlir::MLIRContext *ctx, const Properties &prop, llvm::StringRef name); static void setInherentAttr(Properties &prop, llvm::StringRef name, mlir::Attribute value); static void populateInherentAttrs(::mlir::MLIRContext *ctx, const Properties &prop, ::mlir::NamedAttrList &attrs); static ::llvm::LogicalResult verifyInherentAttrs(::mlir::OperationName opName, ::mlir::NamedAttrList &attrs, llvm::function_ref<::mlir::InFlightDiagnostic()> emitError); static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::Type res, ::mlir::Value a, ::mlir::Value b, ::mlir::Value c, ::mlir::Value index); static swmmac_bf16_16x16x32_bf16 create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::Type res, ::mlir::Value a, ::mlir::Value b, ::mlir::Value c, ::mlir::Value index); static swmmac_bf16_16x16x32_bf16 create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::Type res, ::mlir::Value a, ::mlir::Value b, ::mlir::Value c, ::mlir::Value index); static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::Value a, ::mlir::Value b, ::mlir::Value c, ::mlir::Value index); static swmmac_bf16_16x16x32_bf16 create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::Value a, ::mlir::Value b, ::mlir::Value c, ::mlir::Value index); static swmmac_bf16_16x16x32_bf16 create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::Value a, ::mlir::Value b, ::mlir::Value c, ::mlir::Value index); static void build(::mlir::OpBuilder &, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, ::llvm::ArrayRef<::mlir::NamedAttribute> attributes = {}); static swmmac_bf16_16x16x32_bf16 create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, ::llvm::ArrayRef<::mlir::NamedAttribute> attributes = {}); static swmmac_bf16_16x16x32_bf16 create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, ::llvm::ArrayRef<::mlir::NamedAttribute> attributes = {}); static void build(::mlir::OpBuilder &, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, const Properties &properties, ::llvm::ArrayRef<::mlir::NamedAttribute> discardableAttributes = {}); static swmmac_bf16_16x16x32_bf16 create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, const Properties &properties, ::llvm::ArrayRef<::mlir::NamedAttribute> discardableAttributes = {}); static swmmac_bf16_16x16x32_bf16 create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, const Properties &properties, ::llvm::ArrayRef<::mlir::NamedAttribute> discardableAttributes = {}); ::llvm::LogicalResult verifyInvariantsImpl(); ::llvm::LogicalResult verifyInvariants(); static ::mlir::ParseResult parse(::mlir::OpAsmParser &parser, ::mlir::OperationState &result); void print(::mlir::OpAsmPrinter &_odsPrinter); public: }; } // namespace mlir::ROCDL MLIR_DECLARE_EXPLICIT_TYPE_ID(::mlir::ROCDL::swmmac_bf16_16x16x32_bf16) namespace mlir::ROCDL { //===----------------------------------------------------------------------===// // ::mlir::ROCDL::swmmac_bf16_16x16x64_bf16 declarations //===----------------------------------------------------------------------===// namespace detail { class swmmac_bf16_16x16x64_bf16GenericAdaptorBase { public: struct Properties { using reuseATy = ::mlir::IntegerAttr; reuseATy reuseA; auto getReuseA() const { auto &propStorage = this->reuseA; return ::llvm::dyn_cast_or_null<::mlir::IntegerAttr>(propStorage); } void setReuseA(const ::mlir::IntegerAttr &propValue) { this->reuseA = propValue; } using reuseBTy = ::mlir::IntegerAttr; reuseBTy reuseB; auto getReuseB() const { auto &propStorage = this->reuseB; return ::llvm::dyn_cast_or_null<::mlir::IntegerAttr>(propStorage); } void setReuseB(const ::mlir::IntegerAttr &propValue) { this->reuseB = propValue; } using signATy = ::mlir::IntegerAttr; signATy signA; auto getSignA() const { auto &propStorage = this->signA; return ::llvm::dyn_cast_or_null<::mlir::IntegerAttr>(propStorage); } void setSignA(const ::mlir::IntegerAttr &propValue) { this->signA = propValue; } using signBTy = ::mlir::IntegerAttr; signBTy signB; auto getSignB() const { auto &propStorage = this->signB; return ::llvm::dyn_cast_or_null<::mlir::IntegerAttr>(propStorage); } void setSignB(const ::mlir::IntegerAttr &propValue) { this->signB = propValue; } bool operator==(const Properties &rhs) const { return rhs.reuseA == this->reuseA && rhs.reuseB == this->reuseB && rhs.signA == this->signA && rhs.signB == this->signB && true; } bool operator!=(const Properties &rhs) const { return !(*this == rhs); } }; protected: ::mlir::DictionaryAttr odsAttrs; ::std::optional<::mlir::OperationName> odsOpName; Properties properties; ::mlir::RegionRange odsRegions; public: swmmac_bf16_16x16x64_bf16GenericAdaptorBase(::mlir::DictionaryAttr attrs, const Properties &properties, ::mlir::RegionRange regions = {}) : odsAttrs(attrs), properties(properties), odsRegions(regions) { if (odsAttrs) odsOpName.emplace("rocdl.swmmac.bf16.16x16x64.bf16", odsAttrs.getContext()); } swmmac_bf16_16x16x64_bf16GenericAdaptorBase(swmmac_bf16_16x16x64_bf16 op); std::pair getODSOperandIndexAndLength(unsigned index, unsigned odsOperandsSize) { return {index, 1}; } const Properties &getProperties() { return properties; } ::mlir::DictionaryAttr getAttributes() { return odsAttrs; } ::mlir::IntegerAttr getSignAAttr(); bool getSignA(); ::mlir::IntegerAttr getSignBAttr(); bool getSignB(); ::mlir::IntegerAttr getReuseAAttr(); bool getReuseA(); ::mlir::IntegerAttr getReuseBAttr(); bool getReuseB(); }; } // namespace detail template class swmmac_bf16_16x16x64_bf16GenericAdaptor : public detail::swmmac_bf16_16x16x64_bf16GenericAdaptorBase { using ValueT = ::llvm::detail::ValueOfRange; using Base = detail::swmmac_bf16_16x16x64_bf16GenericAdaptorBase; static constexpr int odsIndex_a = 0; static constexpr int odsIndex_b = 1; static constexpr int odsIndex_c = 2; static constexpr int odsIndex_index = 3; public: swmmac_bf16_16x16x64_bf16GenericAdaptor(RangeT values, ::mlir::DictionaryAttr attrs, const Properties &properties, ::mlir::RegionRange regions = {}) : Base(attrs, properties, regions), odsOperands(values) {} swmmac_bf16_16x16x64_bf16GenericAdaptor(RangeT values, ::mlir::DictionaryAttr attrs, ::mlir::PropertyRef properties, ::mlir::RegionRange regions = {}) : swmmac_bf16_16x16x64_bf16GenericAdaptor(values, attrs, (properties ? *properties.as() : Properties{}), regions) {} swmmac_bf16_16x16x64_bf16GenericAdaptor(RangeT values, ::mlir::DictionaryAttr attrs = nullptr) : swmmac_bf16_16x16x64_bf16GenericAdaptor(values, attrs, Properties{}, {}) {} swmmac_bf16_16x16x64_bf16GenericAdaptor(RangeT values, const swmmac_bf16_16x16x64_bf16GenericAdaptorBase &base) : Base(base), odsOperands(values) {} template >> swmmac_bf16_16x16x64_bf16GenericAdaptor(RangeT values, LateInst op) : Base(op), odsOperands(values) {} std::pair getODSOperandIndexAndLength(unsigned index) { return Base::getODSOperandIndexAndLength(index, odsOperands.size()); } RangeT getODSOperands(unsigned index) { auto valueRange = getODSOperandIndexAndLength(index); return {std::next(odsOperands.begin(), valueRange.first), std::next(odsOperands.begin(), valueRange.first + valueRange.second)}; } ValueT getA() { return (*getODSOperands(0).begin()); } ValueT getB() { return (*getODSOperands(1).begin()); } ValueT getC() { return (*getODSOperands(2).begin()); } ValueT getIndex() { return (*getODSOperands(3).begin()); } RangeT getOperands() { return odsOperands; } private: RangeT odsOperands; }; class swmmac_bf16_16x16x64_bf16Adaptor : public swmmac_bf16_16x16x64_bf16GenericAdaptor<::mlir::ValueRange> { public: using swmmac_bf16_16x16x64_bf16GenericAdaptor::swmmac_bf16_16x16x64_bf16GenericAdaptor; swmmac_bf16_16x16x64_bf16Adaptor(swmmac_bf16_16x16x64_bf16 op); ::llvm::LogicalResult verify(::mlir::Location loc); }; class swmmac_bf16_16x16x64_bf16 : public ::mlir::Op::Impl, ::mlir::OpTrait::ZeroSuccessors, ::mlir::OpTrait::NOperands<4>::Impl, ::mlir::OpTrait::OpInvariants, ::mlir::BytecodeOpInterface::Trait> { public: using Op::Op; using Op::print; using Adaptor = swmmac_bf16_16x16x64_bf16Adaptor; template using GenericAdaptor = swmmac_bf16_16x16x64_bf16GenericAdaptor; using FoldAdaptor = GenericAdaptor<::llvm::ArrayRef<::mlir::Attribute>>; static constexpr int odsIndex_a = 0; static constexpr int odsIndex_b = 1; static constexpr int odsIndex_c = 2; static constexpr int odsIndex_index = 3; using Properties = FoldAdaptor::Properties; static ::llvm::ArrayRef<::llvm::StringRef> getAttributeNames() { static ::llvm::StringRef attrNames[] = {::llvm::StringRef("reuseA"), ::llvm::StringRef("reuseB"), ::llvm::StringRef("signA"), ::llvm::StringRef("signB")}; return ::llvm::ArrayRef(attrNames); } ::mlir::StringAttr getReuseAAttrName() { return getAttributeNameForIndex(0); } static ::mlir::StringAttr getReuseAAttrName(::mlir::OperationName name) { return getAttributeNameForIndex(name, 0); } ::mlir::StringAttr getReuseBAttrName() { return getAttributeNameForIndex(1); } static ::mlir::StringAttr getReuseBAttrName(::mlir::OperationName name) { return getAttributeNameForIndex(name, 1); } ::mlir::StringAttr getSignAAttrName() { return getAttributeNameForIndex(2); } static ::mlir::StringAttr getSignAAttrName(::mlir::OperationName name) { return getAttributeNameForIndex(name, 2); } ::mlir::StringAttr getSignBAttrName() { return getAttributeNameForIndex(3); } static ::mlir::StringAttr getSignBAttrName(::mlir::OperationName name) { return getAttributeNameForIndex(name, 3); } static constexpr ::llvm::StringLiteral getOperationName() { return ::llvm::StringLiteral("rocdl.swmmac.bf16.16x16x64.bf16"); } std::pair getODSOperandIndexAndLength(unsigned index) { return {index, 1}; } ::mlir::Operation::operand_range getODSOperands(unsigned index) { auto valueRange = getODSOperandIndexAndLength(index); return {std::next(getOperation()->operand_begin(), valueRange.first), std::next(getOperation()->operand_begin(), valueRange.first + valueRange.second)}; } ::mlir::TypedValue<::mlir::Type> getA() { return ::llvm::cast<::mlir::TypedValue<::mlir::Type>>(*getODSOperands(0).begin()); } ::mlir::TypedValue<::mlir::Type> getB() { return ::llvm::cast<::mlir::TypedValue<::mlir::Type>>(*getODSOperands(1).begin()); } ::mlir::TypedValue<::mlir::Type> getC() { return ::llvm::cast<::mlir::TypedValue<::mlir::Type>>(*getODSOperands(2).begin()); } ::mlir::TypedValue<::mlir::IntegerType> getIndex() { return ::llvm::cast<::mlir::TypedValue<::mlir::IntegerType>>(*getODSOperands(3).begin()); } ::mlir::OpOperand &getAMutable() { auto range = getODSOperandIndexAndLength(0); return getOperation()->getOpOperand(range.first); } ::mlir::OpOperand &getBMutable() { auto range = getODSOperandIndexAndLength(1); return getOperation()->getOpOperand(range.first); } ::mlir::OpOperand &getCMutable() { auto range = getODSOperandIndexAndLength(2); return getOperation()->getOpOperand(range.first); } ::mlir::OpOperand &getIndexMutable() { auto range = getODSOperandIndexAndLength(3); return getOperation()->getOpOperand(range.first); } std::pair getODSResultIndexAndLength(unsigned index) { return {index, 1}; } ::mlir::Operation::result_range getODSResults(unsigned index) { auto valueRange = getODSResultIndexAndLength(index); return {std::next(getOperation()->result_begin(), valueRange.first), std::next(getOperation()->result_begin(), valueRange.first + valueRange.second)}; } ::mlir::TypedValue<::mlir::Type> getRes() { return ::llvm::cast<::mlir::TypedValue<::mlir::Type>>(*getODSResults(0).begin()); } static ::llvm::LogicalResult setPropertiesFromAttr(Properties &prop, ::mlir::Attribute attr, ::llvm::function_ref<::mlir::InFlightDiagnostic()> emitError); static ::mlir::Attribute getPropertiesAsAttr(::mlir::MLIRContext *ctx, const Properties &prop); static llvm::hash_code computePropertiesHash(const Properties &prop); static std::optional getInherentAttr(::mlir::MLIRContext *ctx, const Properties &prop, llvm::StringRef name); static void setInherentAttr(Properties &prop, llvm::StringRef name, mlir::Attribute value); static void populateInherentAttrs(::mlir::MLIRContext *ctx, const Properties &prop, ::mlir::NamedAttrList &attrs); static ::llvm::LogicalResult verifyInherentAttrs(::mlir::OperationName opName, ::mlir::NamedAttrList &attrs, llvm::function_ref<::mlir::InFlightDiagnostic()> emitError); static ::llvm::LogicalResult readProperties(::mlir::DialectBytecodeReader &reader, ::mlir::OperationState &state); void writeProperties(::mlir::DialectBytecodeWriter &writer); ::mlir::IntegerAttr getSignAAttr() { return ::llvm::dyn_cast_or_null<::mlir::IntegerAttr>(getProperties().signA); } bool getSignA(); ::mlir::IntegerAttr getSignBAttr() { return ::llvm::dyn_cast_or_null<::mlir::IntegerAttr>(getProperties().signB); } bool getSignB(); ::mlir::IntegerAttr getReuseAAttr() { return ::llvm::dyn_cast_or_null<::mlir::IntegerAttr>(getProperties().reuseA); } bool getReuseA(); ::mlir::IntegerAttr getReuseBAttr() { return ::llvm::dyn_cast_or_null<::mlir::IntegerAttr>(getProperties().reuseB); } bool getReuseB(); void setSignAAttr(::mlir::IntegerAttr attr) { getProperties().signA = attr; } void setSignA(bool attrValue); void setSignBAttr(::mlir::IntegerAttr attr) { getProperties().signB = attr; } void setSignB(bool attrValue); void setReuseAAttr(::mlir::IntegerAttr attr) { getProperties().reuseA = attr; } void setReuseA(bool attrValue); void setReuseBAttr(::mlir::IntegerAttr attr) { getProperties().reuseB = attr; } void setReuseB(bool attrValue); static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::Type res, ::mlir::IntegerAttr signA, ::mlir::Value a, ::mlir::IntegerAttr signB, ::mlir::Value b, ::mlir::Value c, ::mlir::Value index, ::mlir::IntegerAttr reuseA, ::mlir::IntegerAttr reuseB = nullptr); static swmmac_bf16_16x16x64_bf16 create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::Type res, ::mlir::IntegerAttr signA, ::mlir::Value a, ::mlir::IntegerAttr signB, ::mlir::Value b, ::mlir::Value c, ::mlir::Value index, ::mlir::IntegerAttr reuseA, ::mlir::IntegerAttr reuseB = nullptr); static swmmac_bf16_16x16x64_bf16 create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::Type res, ::mlir::IntegerAttr signA, ::mlir::Value a, ::mlir::IntegerAttr signB, ::mlir::Value b, ::mlir::Value c, ::mlir::Value index, ::mlir::IntegerAttr reuseA, ::mlir::IntegerAttr reuseB = nullptr); static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::IntegerAttr signA, ::mlir::Value a, ::mlir::IntegerAttr signB, ::mlir::Value b, ::mlir::Value c, ::mlir::Value index, ::mlir::IntegerAttr reuseA, ::mlir::IntegerAttr reuseB = nullptr); static swmmac_bf16_16x16x64_bf16 create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::IntegerAttr signA, ::mlir::Value a, ::mlir::IntegerAttr signB, ::mlir::Value b, ::mlir::Value c, ::mlir::Value index, ::mlir::IntegerAttr reuseA, ::mlir::IntegerAttr reuseB = nullptr); static swmmac_bf16_16x16x64_bf16 create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::IntegerAttr signA, ::mlir::Value a, ::mlir::IntegerAttr signB, ::mlir::Value b, ::mlir::Value c, ::mlir::Value index, ::mlir::IntegerAttr reuseA, ::mlir::IntegerAttr reuseB = nullptr); static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::Type res, bool signA, ::mlir::Value a, bool signB, ::mlir::Value b, ::mlir::Value c, ::mlir::Value index, bool reuseA = 0, bool reuseB = 0); static swmmac_bf16_16x16x64_bf16 create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::Type res, bool signA, ::mlir::Value a, bool signB, ::mlir::Value b, ::mlir::Value c, ::mlir::Value index, bool reuseA = 0, bool reuseB = 0); static swmmac_bf16_16x16x64_bf16 create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::Type res, bool signA, ::mlir::Value a, bool signB, ::mlir::Value b, ::mlir::Value c, ::mlir::Value index, bool reuseA = 0, bool reuseB = 0); static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, bool signA, ::mlir::Value a, bool signB, ::mlir::Value b, ::mlir::Value c, ::mlir::Value index, bool reuseA = 0, bool reuseB = 0); static swmmac_bf16_16x16x64_bf16 create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, bool signA, ::mlir::Value a, bool signB, ::mlir::Value b, ::mlir::Value c, ::mlir::Value index, bool reuseA = 0, bool reuseB = 0); static swmmac_bf16_16x16x64_bf16 create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, bool signA, ::mlir::Value a, bool signB, ::mlir::Value b, ::mlir::Value c, ::mlir::Value index, bool reuseA = 0, bool reuseB = 0); static void build(::mlir::OpBuilder &, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, ::llvm::ArrayRef<::mlir::NamedAttribute> attributes = {}); static swmmac_bf16_16x16x64_bf16 create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, ::llvm::ArrayRef<::mlir::NamedAttribute> attributes = {}); static swmmac_bf16_16x16x64_bf16 create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, ::llvm::ArrayRef<::mlir::NamedAttribute> attributes = {}); static void build(::mlir::OpBuilder &, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, const Properties &properties, ::llvm::ArrayRef<::mlir::NamedAttribute> discardableAttributes = {}); static swmmac_bf16_16x16x64_bf16 create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, const Properties &properties, ::llvm::ArrayRef<::mlir::NamedAttribute> discardableAttributes = {}); static swmmac_bf16_16x16x64_bf16 create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, const Properties &properties, ::llvm::ArrayRef<::mlir::NamedAttribute> discardableAttributes = {}); static void populateDefaultProperties(::mlir::OperationName opName, Properties &properties); ::llvm::LogicalResult verifyInvariantsImpl(); ::llvm::LogicalResult verifyInvariants(); static ::mlir::ParseResult parse(::mlir::OpAsmParser &parser, ::mlir::OperationState &result); void print(::mlir::OpAsmPrinter &_odsPrinter); private: ::mlir::StringAttr getAttributeNameForIndex(unsigned index) { return getAttributeNameForIndex((*this)->getName(), index); } static ::mlir::StringAttr getAttributeNameForIndex(::mlir::OperationName name, unsigned index) { assert(index < 4 && "invalid attribute index"); assert(name.getStringRef() == getOperationName() && "invalid operation name"); assert(name.isRegistered() && "Operation isn't registered, missing a " "dependent dialect loading?"); return name.getAttributeNames()[index]; } public: }; } // namespace mlir::ROCDL MLIR_DECLARE_EXPLICIT_TYPE_ID(::mlir::ROCDL::swmmac_bf16_16x16x64_bf16) MLIR_DECLARE_EXPLICIT_TYPE_ID(::mlir::ROCDL::detail::swmmac_bf16_16x16x64_bf16GenericAdaptorBase::Properties) namespace mlir::ROCDL { //===----------------------------------------------------------------------===// // ::mlir::ROCDL::swmmac_bf16f32_16x16x64_bf16 declarations //===----------------------------------------------------------------------===// namespace detail { class swmmac_bf16f32_16x16x64_bf16GenericAdaptorBase { public: struct Properties { using reuseATy = ::mlir::IntegerAttr; reuseATy reuseA; auto getReuseA() const { auto &propStorage = this->reuseA; return ::llvm::dyn_cast_or_null<::mlir::IntegerAttr>(propStorage); } void setReuseA(const ::mlir::IntegerAttr &propValue) { this->reuseA = propValue; } using reuseBTy = ::mlir::IntegerAttr; reuseBTy reuseB; auto getReuseB() const { auto &propStorage = this->reuseB; return ::llvm::dyn_cast_or_null<::mlir::IntegerAttr>(propStorage); } void setReuseB(const ::mlir::IntegerAttr &propValue) { this->reuseB = propValue; } using signATy = ::mlir::IntegerAttr; signATy signA; auto getSignA() const { auto &propStorage = this->signA; return ::llvm::dyn_cast_or_null<::mlir::IntegerAttr>(propStorage); } void setSignA(const ::mlir::IntegerAttr &propValue) { this->signA = propValue; } using signBTy = ::mlir::IntegerAttr; signBTy signB; auto getSignB() const { auto &propStorage = this->signB; return ::llvm::dyn_cast_or_null<::mlir::IntegerAttr>(propStorage); } void setSignB(const ::mlir::IntegerAttr &propValue) { this->signB = propValue; } bool operator==(const Properties &rhs) const { return rhs.reuseA == this->reuseA && rhs.reuseB == this->reuseB && rhs.signA == this->signA && rhs.signB == this->signB && true; } bool operator!=(const Properties &rhs) const { return !(*this == rhs); } }; protected: ::mlir::DictionaryAttr odsAttrs; ::std::optional<::mlir::OperationName> odsOpName; Properties properties; ::mlir::RegionRange odsRegions; public: swmmac_bf16f32_16x16x64_bf16GenericAdaptorBase(::mlir::DictionaryAttr attrs, const Properties &properties, ::mlir::RegionRange regions = {}) : odsAttrs(attrs), properties(properties), odsRegions(regions) { if (odsAttrs) odsOpName.emplace("rocdl.swmmac.bf16f32.16x16x64.bf16", odsAttrs.getContext()); } swmmac_bf16f32_16x16x64_bf16GenericAdaptorBase(swmmac_bf16f32_16x16x64_bf16 op); std::pair getODSOperandIndexAndLength(unsigned index, unsigned odsOperandsSize) { return {index, 1}; } const Properties &getProperties() { return properties; } ::mlir::DictionaryAttr getAttributes() { return odsAttrs; } ::mlir::IntegerAttr getSignAAttr(); bool getSignA(); ::mlir::IntegerAttr getSignBAttr(); bool getSignB(); ::mlir::IntegerAttr getReuseAAttr(); bool getReuseA(); ::mlir::IntegerAttr getReuseBAttr(); bool getReuseB(); }; } // namespace detail template class swmmac_bf16f32_16x16x64_bf16GenericAdaptor : public detail::swmmac_bf16f32_16x16x64_bf16GenericAdaptorBase { using ValueT = ::llvm::detail::ValueOfRange; using Base = detail::swmmac_bf16f32_16x16x64_bf16GenericAdaptorBase; static constexpr int odsIndex_a = 0; static constexpr int odsIndex_b = 1; static constexpr int odsIndex_c = 2; static constexpr int odsIndex_index = 3; public: swmmac_bf16f32_16x16x64_bf16GenericAdaptor(RangeT values, ::mlir::DictionaryAttr attrs, const Properties &properties, ::mlir::RegionRange regions = {}) : Base(attrs, properties, regions), odsOperands(values) {} swmmac_bf16f32_16x16x64_bf16GenericAdaptor(RangeT values, ::mlir::DictionaryAttr attrs, ::mlir::PropertyRef properties, ::mlir::RegionRange regions = {}) : swmmac_bf16f32_16x16x64_bf16GenericAdaptor(values, attrs, (properties ? *properties.as() : Properties{}), regions) {} swmmac_bf16f32_16x16x64_bf16GenericAdaptor(RangeT values, ::mlir::DictionaryAttr attrs = nullptr) : swmmac_bf16f32_16x16x64_bf16GenericAdaptor(values, attrs, Properties{}, {}) {} swmmac_bf16f32_16x16x64_bf16GenericAdaptor(RangeT values, const swmmac_bf16f32_16x16x64_bf16GenericAdaptorBase &base) : Base(base), odsOperands(values) {} template >> swmmac_bf16f32_16x16x64_bf16GenericAdaptor(RangeT values, LateInst op) : Base(op), odsOperands(values) {} std::pair getODSOperandIndexAndLength(unsigned index) { return Base::getODSOperandIndexAndLength(index, odsOperands.size()); } RangeT getODSOperands(unsigned index) { auto valueRange = getODSOperandIndexAndLength(index); return {std::next(odsOperands.begin(), valueRange.first), std::next(odsOperands.begin(), valueRange.first + valueRange.second)}; } ValueT getA() { return (*getODSOperands(0).begin()); } ValueT getB() { return (*getODSOperands(1).begin()); } ValueT getC() { return (*getODSOperands(2).begin()); } ValueT getIndex() { return (*getODSOperands(3).begin()); } RangeT getOperands() { return odsOperands; } private: RangeT odsOperands; }; class swmmac_bf16f32_16x16x64_bf16Adaptor : public swmmac_bf16f32_16x16x64_bf16GenericAdaptor<::mlir::ValueRange> { public: using swmmac_bf16f32_16x16x64_bf16GenericAdaptor::swmmac_bf16f32_16x16x64_bf16GenericAdaptor; swmmac_bf16f32_16x16x64_bf16Adaptor(swmmac_bf16f32_16x16x64_bf16 op); ::llvm::LogicalResult verify(::mlir::Location loc); }; class swmmac_bf16f32_16x16x64_bf16 : public ::mlir::Op::Impl, ::mlir::OpTrait::ZeroSuccessors, ::mlir::OpTrait::NOperands<4>::Impl, ::mlir::OpTrait::OpInvariants, ::mlir::BytecodeOpInterface::Trait> { public: using Op::Op; using Op::print; using Adaptor = swmmac_bf16f32_16x16x64_bf16Adaptor; template using GenericAdaptor = swmmac_bf16f32_16x16x64_bf16GenericAdaptor; using FoldAdaptor = GenericAdaptor<::llvm::ArrayRef<::mlir::Attribute>>; static constexpr int odsIndex_a = 0; static constexpr int odsIndex_b = 1; static constexpr int odsIndex_c = 2; static constexpr int odsIndex_index = 3; using Properties = FoldAdaptor::Properties; static ::llvm::ArrayRef<::llvm::StringRef> getAttributeNames() { static ::llvm::StringRef attrNames[] = {::llvm::StringRef("reuseA"), ::llvm::StringRef("reuseB"), ::llvm::StringRef("signA"), ::llvm::StringRef("signB")}; return ::llvm::ArrayRef(attrNames); } ::mlir::StringAttr getReuseAAttrName() { return getAttributeNameForIndex(0); } static ::mlir::StringAttr getReuseAAttrName(::mlir::OperationName name) { return getAttributeNameForIndex(name, 0); } ::mlir::StringAttr getReuseBAttrName() { return getAttributeNameForIndex(1); } static ::mlir::StringAttr getReuseBAttrName(::mlir::OperationName name) { return getAttributeNameForIndex(name, 1); } ::mlir::StringAttr getSignAAttrName() { return getAttributeNameForIndex(2); } static ::mlir::StringAttr getSignAAttrName(::mlir::OperationName name) { return getAttributeNameForIndex(name, 2); } ::mlir::StringAttr getSignBAttrName() { return getAttributeNameForIndex(3); } static ::mlir::StringAttr getSignBAttrName(::mlir::OperationName name) { return getAttributeNameForIndex(name, 3); } static constexpr ::llvm::StringLiteral getOperationName() { return ::llvm::StringLiteral("rocdl.swmmac.bf16f32.16x16x64.bf16"); } std::pair getODSOperandIndexAndLength(unsigned index) { return {index, 1}; } ::mlir::Operation::operand_range getODSOperands(unsigned index) { auto valueRange = getODSOperandIndexAndLength(index); return {std::next(getOperation()->operand_begin(), valueRange.first), std::next(getOperation()->operand_begin(), valueRange.first + valueRange.second)}; } ::mlir::TypedValue<::mlir::Type> getA() { return ::llvm::cast<::mlir::TypedValue<::mlir::Type>>(*getODSOperands(0).begin()); } ::mlir::TypedValue<::mlir::Type> getB() { return ::llvm::cast<::mlir::TypedValue<::mlir::Type>>(*getODSOperands(1).begin()); } ::mlir::TypedValue<::mlir::Type> getC() { return ::llvm::cast<::mlir::TypedValue<::mlir::Type>>(*getODSOperands(2).begin()); } ::mlir::TypedValue<::mlir::IntegerType> getIndex() { return ::llvm::cast<::mlir::TypedValue<::mlir::IntegerType>>(*getODSOperands(3).begin()); } ::mlir::OpOperand &getAMutable() { auto range = getODSOperandIndexAndLength(0); return getOperation()->getOpOperand(range.first); } ::mlir::OpOperand &getBMutable() { auto range = getODSOperandIndexAndLength(1); return getOperation()->getOpOperand(range.first); } ::mlir::OpOperand &getCMutable() { auto range = getODSOperandIndexAndLength(2); return getOperation()->getOpOperand(range.first); } ::mlir::OpOperand &getIndexMutable() { auto range = getODSOperandIndexAndLength(3); return getOperation()->getOpOperand(range.first); } std::pair getODSResultIndexAndLength(unsigned index) { return {index, 1}; } ::mlir::Operation::result_range getODSResults(unsigned index) { auto valueRange = getODSResultIndexAndLength(index); return {std::next(getOperation()->result_begin(), valueRange.first), std::next(getOperation()->result_begin(), valueRange.first + valueRange.second)}; } ::mlir::TypedValue<::mlir::Type> getRes() { return ::llvm::cast<::mlir::TypedValue<::mlir::Type>>(*getODSResults(0).begin()); } static ::llvm::LogicalResult setPropertiesFromAttr(Properties &prop, ::mlir::Attribute attr, ::llvm::function_ref<::mlir::InFlightDiagnostic()> emitError); static ::mlir::Attribute getPropertiesAsAttr(::mlir::MLIRContext *ctx, const Properties &prop); static llvm::hash_code computePropertiesHash(const Properties &prop); static std::optional getInherentAttr(::mlir::MLIRContext *ctx, const Properties &prop, llvm::StringRef name); static void setInherentAttr(Properties &prop, llvm::StringRef name, mlir::Attribute value); static void populateInherentAttrs(::mlir::MLIRContext *ctx, const Properties &prop, ::mlir::NamedAttrList &attrs); static ::llvm::LogicalResult verifyInherentAttrs(::mlir::OperationName opName, ::mlir::NamedAttrList &attrs, llvm::function_ref<::mlir::InFlightDiagnostic()> emitError); static ::llvm::LogicalResult readProperties(::mlir::DialectBytecodeReader &reader, ::mlir::OperationState &state); void writeProperties(::mlir::DialectBytecodeWriter &writer); ::mlir::IntegerAttr getSignAAttr() { return ::llvm::dyn_cast_or_null<::mlir::IntegerAttr>(getProperties().signA); } bool getSignA(); ::mlir::IntegerAttr getSignBAttr() { return ::llvm::dyn_cast_or_null<::mlir::IntegerAttr>(getProperties().signB); } bool getSignB(); ::mlir::IntegerAttr getReuseAAttr() { return ::llvm::dyn_cast_or_null<::mlir::IntegerAttr>(getProperties().reuseA); } bool getReuseA(); ::mlir::IntegerAttr getReuseBAttr() { return ::llvm::dyn_cast_or_null<::mlir::IntegerAttr>(getProperties().reuseB); } bool getReuseB(); void setSignAAttr(::mlir::IntegerAttr attr) { getProperties().signA = attr; } void setSignA(bool attrValue); void setSignBAttr(::mlir::IntegerAttr attr) { getProperties().signB = attr; } void setSignB(bool attrValue); void setReuseAAttr(::mlir::IntegerAttr attr) { getProperties().reuseA = attr; } void setReuseA(bool attrValue); void setReuseBAttr(::mlir::IntegerAttr attr) { getProperties().reuseB = attr; } void setReuseB(bool attrValue); static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::Type res, ::mlir::IntegerAttr signA, ::mlir::Value a, ::mlir::IntegerAttr signB, ::mlir::Value b, ::mlir::Value c, ::mlir::Value index, ::mlir::IntegerAttr reuseA, ::mlir::IntegerAttr reuseB = nullptr); static swmmac_bf16f32_16x16x64_bf16 create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::Type res, ::mlir::IntegerAttr signA, ::mlir::Value a, ::mlir::IntegerAttr signB, ::mlir::Value b, ::mlir::Value c, ::mlir::Value index, ::mlir::IntegerAttr reuseA, ::mlir::IntegerAttr reuseB = nullptr); static swmmac_bf16f32_16x16x64_bf16 create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::Type res, ::mlir::IntegerAttr signA, ::mlir::Value a, ::mlir::IntegerAttr signB, ::mlir::Value b, ::mlir::Value c, ::mlir::Value index, ::mlir::IntegerAttr reuseA, ::mlir::IntegerAttr reuseB = nullptr); static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::IntegerAttr signA, ::mlir::Value a, ::mlir::IntegerAttr signB, ::mlir::Value b, ::mlir::Value c, ::mlir::Value index, ::mlir::IntegerAttr reuseA, ::mlir::IntegerAttr reuseB = nullptr); static swmmac_bf16f32_16x16x64_bf16 create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::IntegerAttr signA, ::mlir::Value a, ::mlir::IntegerAttr signB, ::mlir::Value b, ::mlir::Value c, ::mlir::Value index, ::mlir::IntegerAttr reuseA, ::mlir::IntegerAttr reuseB = nullptr); static swmmac_bf16f32_16x16x64_bf16 create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::IntegerAttr signA, ::mlir::Value a, ::mlir::IntegerAttr signB, ::mlir::Value b, ::mlir::Value c, ::mlir::Value index, ::mlir::IntegerAttr reuseA, ::mlir::IntegerAttr reuseB = nullptr); static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::Type res, bool signA, ::mlir::Value a, bool signB, ::mlir::Value b, ::mlir::Value c, ::mlir::Value index, bool reuseA = 0, bool reuseB = 0); static swmmac_bf16f32_16x16x64_bf16 create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::Type res, bool signA, ::mlir::Value a, bool signB, ::mlir::Value b, ::mlir::Value c, ::mlir::Value index, bool reuseA = 0, bool reuseB = 0); static swmmac_bf16f32_16x16x64_bf16 create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::Type res, bool signA, ::mlir::Value a, bool signB, ::mlir::Value b, ::mlir::Value c, ::mlir::Value index, bool reuseA = 0, bool reuseB = 0); static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, bool signA, ::mlir::Value a, bool signB, ::mlir::Value b, ::mlir::Value c, ::mlir::Value index, bool reuseA = 0, bool reuseB = 0); static swmmac_bf16f32_16x16x64_bf16 create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, bool signA, ::mlir::Value a, bool signB, ::mlir::Value b, ::mlir::Value c, ::mlir::Value index, bool reuseA = 0, bool reuseB = 0); static swmmac_bf16f32_16x16x64_bf16 create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, bool signA, ::mlir::Value a, bool signB, ::mlir::Value b, ::mlir::Value c, ::mlir::Value index, bool reuseA = 0, bool reuseB = 0); static void build(::mlir::OpBuilder &, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, ::llvm::ArrayRef<::mlir::NamedAttribute> attributes = {}); static swmmac_bf16f32_16x16x64_bf16 create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, ::llvm::ArrayRef<::mlir::NamedAttribute> attributes = {}); static swmmac_bf16f32_16x16x64_bf16 create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, ::llvm::ArrayRef<::mlir::NamedAttribute> attributes = {}); static void build(::mlir::OpBuilder &, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, const Properties &properties, ::llvm::ArrayRef<::mlir::NamedAttribute> discardableAttributes = {}); static swmmac_bf16f32_16x16x64_bf16 create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, const Properties &properties, ::llvm::ArrayRef<::mlir::NamedAttribute> discardableAttributes = {}); static swmmac_bf16f32_16x16x64_bf16 create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, const Properties &properties, ::llvm::ArrayRef<::mlir::NamedAttribute> discardableAttributes = {}); static void populateDefaultProperties(::mlir::OperationName opName, Properties &properties); ::llvm::LogicalResult verifyInvariantsImpl(); ::llvm::LogicalResult verifyInvariants(); static ::mlir::ParseResult parse(::mlir::OpAsmParser &parser, ::mlir::OperationState &result); void print(::mlir::OpAsmPrinter &_odsPrinter); private: ::mlir::StringAttr getAttributeNameForIndex(unsigned index) { return getAttributeNameForIndex((*this)->getName(), index); } static ::mlir::StringAttr getAttributeNameForIndex(::mlir::OperationName name, unsigned index) { assert(index < 4 && "invalid attribute index"); assert(name.getStringRef() == getOperationName() && "invalid operation name"); assert(name.isRegistered() && "Operation isn't registered, missing a " "dependent dialect loading?"); return name.getAttributeNames()[index]; } public: }; } // namespace mlir::ROCDL MLIR_DECLARE_EXPLICIT_TYPE_ID(::mlir::ROCDL::swmmac_bf16f32_16x16x64_bf16) MLIR_DECLARE_EXPLICIT_TYPE_ID(::mlir::ROCDL::detail::swmmac_bf16f32_16x16x64_bf16GenericAdaptorBase::Properties) namespace mlir::ROCDL { //===----------------------------------------------------------------------===// // ::mlir::ROCDL::swmmac_f16_16x16x128_bf8_bf8 declarations //===----------------------------------------------------------------------===// namespace detail { class swmmac_f16_16x16x128_bf8_bf8GenericAdaptorBase { public: struct Properties { using reuseATy = ::mlir::IntegerAttr; reuseATy reuseA; auto getReuseA() const { auto &propStorage = this->reuseA; return ::llvm::dyn_cast_or_null<::mlir::IntegerAttr>(propStorage); } void setReuseA(const ::mlir::IntegerAttr &propValue) { this->reuseA = propValue; } using reuseBTy = ::mlir::IntegerAttr; reuseBTy reuseB; auto getReuseB() const { auto &propStorage = this->reuseB; return ::llvm::dyn_cast_or_null<::mlir::IntegerAttr>(propStorage); } void setReuseB(const ::mlir::IntegerAttr &propValue) { this->reuseB = propValue; } bool operator==(const Properties &rhs) const { return rhs.reuseA == this->reuseA && rhs.reuseB == this->reuseB && true; } bool operator!=(const Properties &rhs) const { return !(*this == rhs); } }; protected: ::mlir::DictionaryAttr odsAttrs; ::std::optional<::mlir::OperationName> odsOpName; Properties properties; ::mlir::RegionRange odsRegions; public: swmmac_f16_16x16x128_bf8_bf8GenericAdaptorBase(::mlir::DictionaryAttr attrs, const Properties &properties, ::mlir::RegionRange regions = {}) : odsAttrs(attrs), properties(properties), odsRegions(regions) { if (odsAttrs) odsOpName.emplace("rocdl.swmmac.f16.16x16x128.bf8.bf8", odsAttrs.getContext()); } swmmac_f16_16x16x128_bf8_bf8GenericAdaptorBase(swmmac_f16_16x16x128_bf8_bf8 op); std::pair getODSOperandIndexAndLength(unsigned index, unsigned odsOperandsSize) { return {index, 1}; } const Properties &getProperties() { return properties; } ::mlir::DictionaryAttr getAttributes() { return odsAttrs; } ::mlir::IntegerAttr getReuseAAttr(); bool getReuseA(); ::mlir::IntegerAttr getReuseBAttr(); bool getReuseB(); }; } // namespace detail template class swmmac_f16_16x16x128_bf8_bf8GenericAdaptor : public detail::swmmac_f16_16x16x128_bf8_bf8GenericAdaptorBase { using ValueT = ::llvm::detail::ValueOfRange; using Base = detail::swmmac_f16_16x16x128_bf8_bf8GenericAdaptorBase; static constexpr int odsIndex_a = 0; static constexpr int odsIndex_b = 1; static constexpr int odsIndex_c = 2; static constexpr int odsIndex_index = 3; public: swmmac_f16_16x16x128_bf8_bf8GenericAdaptor(RangeT values, ::mlir::DictionaryAttr attrs, const Properties &properties, ::mlir::RegionRange regions = {}) : Base(attrs, properties, regions), odsOperands(values) {} swmmac_f16_16x16x128_bf8_bf8GenericAdaptor(RangeT values, ::mlir::DictionaryAttr attrs, ::mlir::PropertyRef properties, ::mlir::RegionRange regions = {}) : swmmac_f16_16x16x128_bf8_bf8GenericAdaptor(values, attrs, (properties ? *properties.as() : Properties{}), regions) {} swmmac_f16_16x16x128_bf8_bf8GenericAdaptor(RangeT values, ::mlir::DictionaryAttr attrs = nullptr) : swmmac_f16_16x16x128_bf8_bf8GenericAdaptor(values, attrs, Properties{}, {}) {} swmmac_f16_16x16x128_bf8_bf8GenericAdaptor(RangeT values, const swmmac_f16_16x16x128_bf8_bf8GenericAdaptorBase &base) : Base(base), odsOperands(values) {} template >> swmmac_f16_16x16x128_bf8_bf8GenericAdaptor(RangeT values, LateInst op) : Base(op), odsOperands(values) {} std::pair getODSOperandIndexAndLength(unsigned index) { return Base::getODSOperandIndexAndLength(index, odsOperands.size()); } RangeT getODSOperands(unsigned index) { auto valueRange = getODSOperandIndexAndLength(index); return {std::next(odsOperands.begin(), valueRange.first), std::next(odsOperands.begin(), valueRange.first + valueRange.second)}; } ValueT getA() { return (*getODSOperands(0).begin()); } ValueT getB() { return (*getODSOperands(1).begin()); } ValueT getC() { return (*getODSOperands(2).begin()); } ValueT getIndex() { return (*getODSOperands(3).begin()); } RangeT getOperands() { return odsOperands; } private: RangeT odsOperands; }; class swmmac_f16_16x16x128_bf8_bf8Adaptor : public swmmac_f16_16x16x128_bf8_bf8GenericAdaptor<::mlir::ValueRange> { public: using swmmac_f16_16x16x128_bf8_bf8GenericAdaptor::swmmac_f16_16x16x128_bf8_bf8GenericAdaptor; swmmac_f16_16x16x128_bf8_bf8Adaptor(swmmac_f16_16x16x128_bf8_bf8 op); ::llvm::LogicalResult verify(::mlir::Location loc); }; class swmmac_f16_16x16x128_bf8_bf8 : public ::mlir::Op::Impl, ::mlir::OpTrait::ZeroSuccessors, ::mlir::OpTrait::NOperands<4>::Impl, ::mlir::OpTrait::OpInvariants, ::mlir::BytecodeOpInterface::Trait> { public: using Op::Op; using Op::print; using Adaptor = swmmac_f16_16x16x128_bf8_bf8Adaptor; template using GenericAdaptor = swmmac_f16_16x16x128_bf8_bf8GenericAdaptor; using FoldAdaptor = GenericAdaptor<::llvm::ArrayRef<::mlir::Attribute>>; static constexpr int odsIndex_a = 0; static constexpr int odsIndex_b = 1; static constexpr int odsIndex_c = 2; static constexpr int odsIndex_index = 3; using Properties = FoldAdaptor::Properties; static ::llvm::ArrayRef<::llvm::StringRef> getAttributeNames() { static ::llvm::StringRef attrNames[] = {::llvm::StringRef("reuseA"), ::llvm::StringRef("reuseB")}; return ::llvm::ArrayRef(attrNames); } ::mlir::StringAttr getReuseAAttrName() { return getAttributeNameForIndex(0); } static ::mlir::StringAttr getReuseAAttrName(::mlir::OperationName name) { return getAttributeNameForIndex(name, 0); } ::mlir::StringAttr getReuseBAttrName() { return getAttributeNameForIndex(1); } static ::mlir::StringAttr getReuseBAttrName(::mlir::OperationName name) { return getAttributeNameForIndex(name, 1); } static constexpr ::llvm::StringLiteral getOperationName() { return ::llvm::StringLiteral("rocdl.swmmac.f16.16x16x128.bf8.bf8"); } std::pair getODSOperandIndexAndLength(unsigned index) { return {index, 1}; } ::mlir::Operation::operand_range getODSOperands(unsigned index) { auto valueRange = getODSOperandIndexAndLength(index); return {std::next(getOperation()->operand_begin(), valueRange.first), std::next(getOperation()->operand_begin(), valueRange.first + valueRange.second)}; } ::mlir::TypedValue<::mlir::Type> getA() { return ::llvm::cast<::mlir::TypedValue<::mlir::Type>>(*getODSOperands(0).begin()); } ::mlir::TypedValue<::mlir::Type> getB() { return ::llvm::cast<::mlir::TypedValue<::mlir::Type>>(*getODSOperands(1).begin()); } ::mlir::TypedValue<::mlir::Type> getC() { return ::llvm::cast<::mlir::TypedValue<::mlir::Type>>(*getODSOperands(2).begin()); } ::mlir::TypedValue<::mlir::IntegerType> getIndex() { return ::llvm::cast<::mlir::TypedValue<::mlir::IntegerType>>(*getODSOperands(3).begin()); } ::mlir::OpOperand &getAMutable() { auto range = getODSOperandIndexAndLength(0); return getOperation()->getOpOperand(range.first); } ::mlir::OpOperand &getBMutable() { auto range = getODSOperandIndexAndLength(1); return getOperation()->getOpOperand(range.first); } ::mlir::OpOperand &getCMutable() { auto range = getODSOperandIndexAndLength(2); return getOperation()->getOpOperand(range.first); } ::mlir::OpOperand &getIndexMutable() { auto range = getODSOperandIndexAndLength(3); return getOperation()->getOpOperand(range.first); } std::pair getODSResultIndexAndLength(unsigned index) { return {index, 1}; } ::mlir::Operation::result_range getODSResults(unsigned index) { auto valueRange = getODSResultIndexAndLength(index); return {std::next(getOperation()->result_begin(), valueRange.first), std::next(getOperation()->result_begin(), valueRange.first + valueRange.second)}; } ::mlir::TypedValue<::mlir::Type> getRes() { return ::llvm::cast<::mlir::TypedValue<::mlir::Type>>(*getODSResults(0).begin()); } static ::llvm::LogicalResult setPropertiesFromAttr(Properties &prop, ::mlir::Attribute attr, ::llvm::function_ref<::mlir::InFlightDiagnostic()> emitError); static ::mlir::Attribute getPropertiesAsAttr(::mlir::MLIRContext *ctx, const Properties &prop); static llvm::hash_code computePropertiesHash(const Properties &prop); static std::optional getInherentAttr(::mlir::MLIRContext *ctx, const Properties &prop, llvm::StringRef name); static void setInherentAttr(Properties &prop, llvm::StringRef name, mlir::Attribute value); static void populateInherentAttrs(::mlir::MLIRContext *ctx, const Properties &prop, ::mlir::NamedAttrList &attrs); static ::llvm::LogicalResult verifyInherentAttrs(::mlir::OperationName opName, ::mlir::NamedAttrList &attrs, llvm::function_ref<::mlir::InFlightDiagnostic()> emitError); static ::llvm::LogicalResult readProperties(::mlir::DialectBytecodeReader &reader, ::mlir::OperationState &state); void writeProperties(::mlir::DialectBytecodeWriter &writer); ::mlir::IntegerAttr getReuseAAttr() { return ::llvm::dyn_cast_or_null<::mlir::IntegerAttr>(getProperties().reuseA); } bool getReuseA(); ::mlir::IntegerAttr getReuseBAttr() { return ::llvm::dyn_cast_or_null<::mlir::IntegerAttr>(getProperties().reuseB); } bool getReuseB(); void setReuseAAttr(::mlir::IntegerAttr attr) { getProperties().reuseA = attr; } void setReuseA(bool attrValue); void setReuseBAttr(::mlir::IntegerAttr attr) { getProperties().reuseB = attr; } void setReuseB(bool attrValue); static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::Type res, ::mlir::Value a, ::mlir::Value b, ::mlir::Value c, ::mlir::Value index, ::mlir::IntegerAttr reuseA, ::mlir::IntegerAttr reuseB = nullptr); static swmmac_f16_16x16x128_bf8_bf8 create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::Type res, ::mlir::Value a, ::mlir::Value b, ::mlir::Value c, ::mlir::Value index, ::mlir::IntegerAttr reuseA, ::mlir::IntegerAttr reuseB = nullptr); static swmmac_f16_16x16x128_bf8_bf8 create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::Type res, ::mlir::Value a, ::mlir::Value b, ::mlir::Value c, ::mlir::Value index, ::mlir::IntegerAttr reuseA, ::mlir::IntegerAttr reuseB = nullptr); static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::Value a, ::mlir::Value b, ::mlir::Value c, ::mlir::Value index, ::mlir::IntegerAttr reuseA, ::mlir::IntegerAttr reuseB = nullptr); static swmmac_f16_16x16x128_bf8_bf8 create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::Value a, ::mlir::Value b, ::mlir::Value c, ::mlir::Value index, ::mlir::IntegerAttr reuseA, ::mlir::IntegerAttr reuseB = nullptr); static swmmac_f16_16x16x128_bf8_bf8 create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::Value a, ::mlir::Value b, ::mlir::Value c, ::mlir::Value index, ::mlir::IntegerAttr reuseA, ::mlir::IntegerAttr reuseB = nullptr); static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::Type res, ::mlir::Value a, ::mlir::Value b, ::mlir::Value c, ::mlir::Value index, bool reuseA = 0, bool reuseB = 0); static swmmac_f16_16x16x128_bf8_bf8 create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::Type res, ::mlir::Value a, ::mlir::Value b, ::mlir::Value c, ::mlir::Value index, bool reuseA = 0, bool reuseB = 0); static swmmac_f16_16x16x128_bf8_bf8 create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::Type res, ::mlir::Value a, ::mlir::Value b, ::mlir::Value c, ::mlir::Value index, bool reuseA = 0, bool reuseB = 0); static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::Value a, ::mlir::Value b, ::mlir::Value c, ::mlir::Value index, bool reuseA = 0, bool reuseB = 0); static swmmac_f16_16x16x128_bf8_bf8 create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::Value a, ::mlir::Value b, ::mlir::Value c, ::mlir::Value index, bool reuseA = 0, bool reuseB = 0); static swmmac_f16_16x16x128_bf8_bf8 create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::Value a, ::mlir::Value b, ::mlir::Value c, ::mlir::Value index, bool reuseA = 0, bool reuseB = 0); static void build(::mlir::OpBuilder &, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, ::llvm::ArrayRef<::mlir::NamedAttribute> attributes = {}); static swmmac_f16_16x16x128_bf8_bf8 create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, ::llvm::ArrayRef<::mlir::NamedAttribute> attributes = {}); static swmmac_f16_16x16x128_bf8_bf8 create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, ::llvm::ArrayRef<::mlir::NamedAttribute> attributes = {}); static void build(::mlir::OpBuilder &, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, const Properties &properties, ::llvm::ArrayRef<::mlir::NamedAttribute> discardableAttributes = {}); static swmmac_f16_16x16x128_bf8_bf8 create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, const Properties &properties, ::llvm::ArrayRef<::mlir::NamedAttribute> discardableAttributes = {}); static swmmac_f16_16x16x128_bf8_bf8 create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, const Properties &properties, ::llvm::ArrayRef<::mlir::NamedAttribute> discardableAttributes = {}); static void populateDefaultProperties(::mlir::OperationName opName, Properties &properties); ::llvm::LogicalResult verifyInvariantsImpl(); ::llvm::LogicalResult verifyInvariants(); static ::mlir::ParseResult parse(::mlir::OpAsmParser &parser, ::mlir::OperationState &result); void print(::mlir::OpAsmPrinter &_odsPrinter); private: ::mlir::StringAttr getAttributeNameForIndex(unsigned index) { return getAttributeNameForIndex((*this)->getName(), index); } static ::mlir::StringAttr getAttributeNameForIndex(::mlir::OperationName name, unsigned index) { assert(index < 2 && "invalid attribute index"); assert(name.getStringRef() == getOperationName() && "invalid operation name"); assert(name.isRegistered() && "Operation isn't registered, missing a " "dependent dialect loading?"); return name.getAttributeNames()[index]; } public: }; } // namespace mlir::ROCDL MLIR_DECLARE_EXPLICIT_TYPE_ID(::mlir::ROCDL::swmmac_f16_16x16x128_bf8_bf8) MLIR_DECLARE_EXPLICIT_TYPE_ID(::mlir::ROCDL::detail::swmmac_f16_16x16x128_bf8_bf8GenericAdaptorBase::Properties) namespace mlir::ROCDL { //===----------------------------------------------------------------------===// // ::mlir::ROCDL::swmmac_f16_16x16x128_bf8_fp8 declarations //===----------------------------------------------------------------------===// namespace detail { class swmmac_f16_16x16x128_bf8_fp8GenericAdaptorBase { public: struct Properties { using reuseATy = ::mlir::IntegerAttr; reuseATy reuseA; auto getReuseA() const { auto &propStorage = this->reuseA; return ::llvm::dyn_cast_or_null<::mlir::IntegerAttr>(propStorage); } void setReuseA(const ::mlir::IntegerAttr &propValue) { this->reuseA = propValue; } using reuseBTy = ::mlir::IntegerAttr; reuseBTy reuseB; auto getReuseB() const { auto &propStorage = this->reuseB; return ::llvm::dyn_cast_or_null<::mlir::IntegerAttr>(propStorage); } void setReuseB(const ::mlir::IntegerAttr &propValue) { this->reuseB = propValue; } bool operator==(const Properties &rhs) const { return rhs.reuseA == this->reuseA && rhs.reuseB == this->reuseB && true; } bool operator!=(const Properties &rhs) const { return !(*this == rhs); } }; protected: ::mlir::DictionaryAttr odsAttrs; ::std::optional<::mlir::OperationName> odsOpName; Properties properties; ::mlir::RegionRange odsRegions; public: swmmac_f16_16x16x128_bf8_fp8GenericAdaptorBase(::mlir::DictionaryAttr attrs, const Properties &properties, ::mlir::RegionRange regions = {}) : odsAttrs(attrs), properties(properties), odsRegions(regions) { if (odsAttrs) odsOpName.emplace("rocdl.swmmac.f16.16x16x128.bf8.fp8", odsAttrs.getContext()); } swmmac_f16_16x16x128_bf8_fp8GenericAdaptorBase(swmmac_f16_16x16x128_bf8_fp8 op); std::pair getODSOperandIndexAndLength(unsigned index, unsigned odsOperandsSize) { return {index, 1}; } const Properties &getProperties() { return properties; } ::mlir::DictionaryAttr getAttributes() { return odsAttrs; } ::mlir::IntegerAttr getReuseAAttr(); bool getReuseA(); ::mlir::IntegerAttr getReuseBAttr(); bool getReuseB(); }; } // namespace detail template class swmmac_f16_16x16x128_bf8_fp8GenericAdaptor : public detail::swmmac_f16_16x16x128_bf8_fp8GenericAdaptorBase { using ValueT = ::llvm::detail::ValueOfRange; using Base = detail::swmmac_f16_16x16x128_bf8_fp8GenericAdaptorBase; static constexpr int odsIndex_a = 0; static constexpr int odsIndex_b = 1; static constexpr int odsIndex_c = 2; static constexpr int odsIndex_index = 3; public: swmmac_f16_16x16x128_bf8_fp8GenericAdaptor(RangeT values, ::mlir::DictionaryAttr attrs, const Properties &properties, ::mlir::RegionRange regions = {}) : Base(attrs, properties, regions), odsOperands(values) {} swmmac_f16_16x16x128_bf8_fp8GenericAdaptor(RangeT values, ::mlir::DictionaryAttr attrs, ::mlir::PropertyRef properties, ::mlir::RegionRange regions = {}) : swmmac_f16_16x16x128_bf8_fp8GenericAdaptor(values, attrs, (properties ? *properties.as() : Properties{}), regions) {} swmmac_f16_16x16x128_bf8_fp8GenericAdaptor(RangeT values, ::mlir::DictionaryAttr attrs = nullptr) : swmmac_f16_16x16x128_bf8_fp8GenericAdaptor(values, attrs, Properties{}, {}) {} swmmac_f16_16x16x128_bf8_fp8GenericAdaptor(RangeT values, const swmmac_f16_16x16x128_bf8_fp8GenericAdaptorBase &base) : Base(base), odsOperands(values) {} template >> swmmac_f16_16x16x128_bf8_fp8GenericAdaptor(RangeT values, LateInst op) : Base(op), odsOperands(values) {} std::pair getODSOperandIndexAndLength(unsigned index) { return Base::getODSOperandIndexAndLength(index, odsOperands.size()); } RangeT getODSOperands(unsigned index) { auto valueRange = getODSOperandIndexAndLength(index); return {std::next(odsOperands.begin(), valueRange.first), std::next(odsOperands.begin(), valueRange.first + valueRange.second)}; } ValueT getA() { return (*getODSOperands(0).begin()); } ValueT getB() { return (*getODSOperands(1).begin()); } ValueT getC() { return (*getODSOperands(2).begin()); } ValueT getIndex() { return (*getODSOperands(3).begin()); } RangeT getOperands() { return odsOperands; } private: RangeT odsOperands; }; class swmmac_f16_16x16x128_bf8_fp8Adaptor : public swmmac_f16_16x16x128_bf8_fp8GenericAdaptor<::mlir::ValueRange> { public: using swmmac_f16_16x16x128_bf8_fp8GenericAdaptor::swmmac_f16_16x16x128_bf8_fp8GenericAdaptor; swmmac_f16_16x16x128_bf8_fp8Adaptor(swmmac_f16_16x16x128_bf8_fp8 op); ::llvm::LogicalResult verify(::mlir::Location loc); }; class swmmac_f16_16x16x128_bf8_fp8 : public ::mlir::Op::Impl, ::mlir::OpTrait::ZeroSuccessors, ::mlir::OpTrait::NOperands<4>::Impl, ::mlir::OpTrait::OpInvariants, ::mlir::BytecodeOpInterface::Trait> { public: using Op::Op; using Op::print; using Adaptor = swmmac_f16_16x16x128_bf8_fp8Adaptor; template using GenericAdaptor = swmmac_f16_16x16x128_bf8_fp8GenericAdaptor; using FoldAdaptor = GenericAdaptor<::llvm::ArrayRef<::mlir::Attribute>>; static constexpr int odsIndex_a = 0; static constexpr int odsIndex_b = 1; static constexpr int odsIndex_c = 2; static constexpr int odsIndex_index = 3; using Properties = FoldAdaptor::Properties; static ::llvm::ArrayRef<::llvm::StringRef> getAttributeNames() { static ::llvm::StringRef attrNames[] = {::llvm::StringRef("reuseA"), ::llvm::StringRef("reuseB")}; return ::llvm::ArrayRef(attrNames); } ::mlir::StringAttr getReuseAAttrName() { return getAttributeNameForIndex(0); } static ::mlir::StringAttr getReuseAAttrName(::mlir::OperationName name) { return getAttributeNameForIndex(name, 0); } ::mlir::StringAttr getReuseBAttrName() { return getAttributeNameForIndex(1); } static ::mlir::StringAttr getReuseBAttrName(::mlir::OperationName name) { return getAttributeNameForIndex(name, 1); } static constexpr ::llvm::StringLiteral getOperationName() { return ::llvm::StringLiteral("rocdl.swmmac.f16.16x16x128.bf8.fp8"); } std::pair getODSOperandIndexAndLength(unsigned index) { return {index, 1}; } ::mlir::Operation::operand_range getODSOperands(unsigned index) { auto valueRange = getODSOperandIndexAndLength(index); return {std::next(getOperation()->operand_begin(), valueRange.first), std::next(getOperation()->operand_begin(), valueRange.first + valueRange.second)}; } ::mlir::TypedValue<::mlir::Type> getA() { return ::llvm::cast<::mlir::TypedValue<::mlir::Type>>(*getODSOperands(0).begin()); } ::mlir::TypedValue<::mlir::Type> getB() { return ::llvm::cast<::mlir::TypedValue<::mlir::Type>>(*getODSOperands(1).begin()); } ::mlir::TypedValue<::mlir::Type> getC() { return ::llvm::cast<::mlir::TypedValue<::mlir::Type>>(*getODSOperands(2).begin()); } ::mlir::TypedValue<::mlir::IntegerType> getIndex() { return ::llvm::cast<::mlir::TypedValue<::mlir::IntegerType>>(*getODSOperands(3).begin()); } ::mlir::OpOperand &getAMutable() { auto range = getODSOperandIndexAndLength(0); return getOperation()->getOpOperand(range.first); } ::mlir::OpOperand &getBMutable() { auto range = getODSOperandIndexAndLength(1); return getOperation()->getOpOperand(range.first); } ::mlir::OpOperand &getCMutable() { auto range = getODSOperandIndexAndLength(2); return getOperation()->getOpOperand(range.first); } ::mlir::OpOperand &getIndexMutable() { auto range = getODSOperandIndexAndLength(3); return getOperation()->getOpOperand(range.first); } std::pair getODSResultIndexAndLength(unsigned index) { return {index, 1}; } ::mlir::Operation::result_range getODSResults(unsigned index) { auto valueRange = getODSResultIndexAndLength(index); return {std::next(getOperation()->result_begin(), valueRange.first), std::next(getOperation()->result_begin(), valueRange.first + valueRange.second)}; } ::mlir::TypedValue<::mlir::Type> getRes() { return ::llvm::cast<::mlir::TypedValue<::mlir::Type>>(*getODSResults(0).begin()); } static ::llvm::LogicalResult setPropertiesFromAttr(Properties &prop, ::mlir::Attribute attr, ::llvm::function_ref<::mlir::InFlightDiagnostic()> emitError); static ::mlir::Attribute getPropertiesAsAttr(::mlir::MLIRContext *ctx, const Properties &prop); static llvm::hash_code computePropertiesHash(const Properties &prop); static std::optional getInherentAttr(::mlir::MLIRContext *ctx, const Properties &prop, llvm::StringRef name); static void setInherentAttr(Properties &prop, llvm::StringRef name, mlir::Attribute value); static void populateInherentAttrs(::mlir::MLIRContext *ctx, const Properties &prop, ::mlir::NamedAttrList &attrs); static ::llvm::LogicalResult verifyInherentAttrs(::mlir::OperationName opName, ::mlir::NamedAttrList &attrs, llvm::function_ref<::mlir::InFlightDiagnostic()> emitError); static ::llvm::LogicalResult readProperties(::mlir::DialectBytecodeReader &reader, ::mlir::OperationState &state); void writeProperties(::mlir::DialectBytecodeWriter &writer); ::mlir::IntegerAttr getReuseAAttr() { return ::llvm::dyn_cast_or_null<::mlir::IntegerAttr>(getProperties().reuseA); } bool getReuseA(); ::mlir::IntegerAttr getReuseBAttr() { return ::llvm::dyn_cast_or_null<::mlir::IntegerAttr>(getProperties().reuseB); } bool getReuseB(); void setReuseAAttr(::mlir::IntegerAttr attr) { getProperties().reuseA = attr; } void setReuseA(bool attrValue); void setReuseBAttr(::mlir::IntegerAttr attr) { getProperties().reuseB = attr; } void setReuseB(bool attrValue); static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::Type res, ::mlir::Value a, ::mlir::Value b, ::mlir::Value c, ::mlir::Value index, ::mlir::IntegerAttr reuseA, ::mlir::IntegerAttr reuseB = nullptr); static swmmac_f16_16x16x128_bf8_fp8 create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::Type res, ::mlir::Value a, ::mlir::Value b, ::mlir::Value c, ::mlir::Value index, ::mlir::IntegerAttr reuseA, ::mlir::IntegerAttr reuseB = nullptr); static swmmac_f16_16x16x128_bf8_fp8 create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::Type res, ::mlir::Value a, ::mlir::Value b, ::mlir::Value c, ::mlir::Value index, ::mlir::IntegerAttr reuseA, ::mlir::IntegerAttr reuseB = nullptr); static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::Value a, ::mlir::Value b, ::mlir::Value c, ::mlir::Value index, ::mlir::IntegerAttr reuseA, ::mlir::IntegerAttr reuseB = nullptr); static swmmac_f16_16x16x128_bf8_fp8 create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::Value a, ::mlir::Value b, ::mlir::Value c, ::mlir::Value index, ::mlir::IntegerAttr reuseA, ::mlir::IntegerAttr reuseB = nullptr); static swmmac_f16_16x16x128_bf8_fp8 create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::Value a, ::mlir::Value b, ::mlir::Value c, ::mlir::Value index, ::mlir::IntegerAttr reuseA, ::mlir::IntegerAttr reuseB = nullptr); static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::Type res, ::mlir::Value a, ::mlir::Value b, ::mlir::Value c, ::mlir::Value index, bool reuseA = 0, bool reuseB = 0); static swmmac_f16_16x16x128_bf8_fp8 create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::Type res, ::mlir::Value a, ::mlir::Value b, ::mlir::Value c, ::mlir::Value index, bool reuseA = 0, bool reuseB = 0); static swmmac_f16_16x16x128_bf8_fp8 create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::Type res, ::mlir::Value a, ::mlir::Value b, ::mlir::Value c, ::mlir::Value index, bool reuseA = 0, bool reuseB = 0); static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::Value a, ::mlir::Value b, ::mlir::Value c, ::mlir::Value index, bool reuseA = 0, bool reuseB = 0); static swmmac_f16_16x16x128_bf8_fp8 create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::Value a, ::mlir::Value b, ::mlir::Value c, ::mlir::Value index, bool reuseA = 0, bool reuseB = 0); static swmmac_f16_16x16x128_bf8_fp8 create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::Value a, ::mlir::Value b, ::mlir::Value c, ::mlir::Value index, bool reuseA = 0, bool reuseB = 0); static void build(::mlir::OpBuilder &, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, ::llvm::ArrayRef<::mlir::NamedAttribute> attributes = {}); static swmmac_f16_16x16x128_bf8_fp8 create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, ::llvm::ArrayRef<::mlir::NamedAttribute> attributes = {}); static swmmac_f16_16x16x128_bf8_fp8 create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, ::llvm::ArrayRef<::mlir::NamedAttribute> attributes = {}); static void build(::mlir::OpBuilder &, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, const Properties &properties, ::llvm::ArrayRef<::mlir::NamedAttribute> discardableAttributes = {}); static swmmac_f16_16x16x128_bf8_fp8 create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, const Properties &properties, ::llvm::ArrayRef<::mlir::NamedAttribute> discardableAttributes = {}); static swmmac_f16_16x16x128_bf8_fp8 create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, const Properties &properties, ::llvm::ArrayRef<::mlir::NamedAttribute> discardableAttributes = {}); static void populateDefaultProperties(::mlir::OperationName opName, Properties &properties); ::llvm::LogicalResult verifyInvariantsImpl(); ::llvm::LogicalResult verifyInvariants(); static ::mlir::ParseResult parse(::mlir::OpAsmParser &parser, ::mlir::OperationState &result); void print(::mlir::OpAsmPrinter &_odsPrinter); private: ::mlir::StringAttr getAttributeNameForIndex(unsigned index) { return getAttributeNameForIndex((*this)->getName(), index); } static ::mlir::StringAttr getAttributeNameForIndex(::mlir::OperationName name, unsigned index) { assert(index < 2 && "invalid attribute index"); assert(name.getStringRef() == getOperationName() && "invalid operation name"); assert(name.isRegistered() && "Operation isn't registered, missing a " "dependent dialect loading?"); return name.getAttributeNames()[index]; } public: }; } // namespace mlir::ROCDL MLIR_DECLARE_EXPLICIT_TYPE_ID(::mlir::ROCDL::swmmac_f16_16x16x128_bf8_fp8) MLIR_DECLARE_EXPLICIT_TYPE_ID(::mlir::ROCDL::detail::swmmac_f16_16x16x128_bf8_fp8GenericAdaptorBase::Properties) namespace mlir::ROCDL { //===----------------------------------------------------------------------===// // ::mlir::ROCDL::swmmac_f16_16x16x128_fp8_bf8 declarations //===----------------------------------------------------------------------===// namespace detail { class swmmac_f16_16x16x128_fp8_bf8GenericAdaptorBase { public: struct Properties { using reuseATy = ::mlir::IntegerAttr; reuseATy reuseA; auto getReuseA() const { auto &propStorage = this->reuseA; return ::llvm::dyn_cast_or_null<::mlir::IntegerAttr>(propStorage); } void setReuseA(const ::mlir::IntegerAttr &propValue) { this->reuseA = propValue; } using reuseBTy = ::mlir::IntegerAttr; reuseBTy reuseB; auto getReuseB() const { auto &propStorage = this->reuseB; return ::llvm::dyn_cast_or_null<::mlir::IntegerAttr>(propStorage); } void setReuseB(const ::mlir::IntegerAttr &propValue) { this->reuseB = propValue; } bool operator==(const Properties &rhs) const { return rhs.reuseA == this->reuseA && rhs.reuseB == this->reuseB && true; } bool operator!=(const Properties &rhs) const { return !(*this == rhs); } }; protected: ::mlir::DictionaryAttr odsAttrs; ::std::optional<::mlir::OperationName> odsOpName; Properties properties; ::mlir::RegionRange odsRegions; public: swmmac_f16_16x16x128_fp8_bf8GenericAdaptorBase(::mlir::DictionaryAttr attrs, const Properties &properties, ::mlir::RegionRange regions = {}) : odsAttrs(attrs), properties(properties), odsRegions(regions) { if (odsAttrs) odsOpName.emplace("rocdl.swmmac.f16.16x16x128.fp8.bf8", odsAttrs.getContext()); } swmmac_f16_16x16x128_fp8_bf8GenericAdaptorBase(swmmac_f16_16x16x128_fp8_bf8 op); std::pair getODSOperandIndexAndLength(unsigned index, unsigned odsOperandsSize) { return {index, 1}; } const Properties &getProperties() { return properties; } ::mlir::DictionaryAttr getAttributes() { return odsAttrs; } ::mlir::IntegerAttr getReuseAAttr(); bool getReuseA(); ::mlir::IntegerAttr getReuseBAttr(); bool getReuseB(); }; } // namespace detail template class swmmac_f16_16x16x128_fp8_bf8GenericAdaptor : public detail::swmmac_f16_16x16x128_fp8_bf8GenericAdaptorBase { using ValueT = ::llvm::detail::ValueOfRange; using Base = detail::swmmac_f16_16x16x128_fp8_bf8GenericAdaptorBase; static constexpr int odsIndex_a = 0; static constexpr int odsIndex_b = 1; static constexpr int odsIndex_c = 2; static constexpr int odsIndex_index = 3; public: swmmac_f16_16x16x128_fp8_bf8GenericAdaptor(RangeT values, ::mlir::DictionaryAttr attrs, const Properties &properties, ::mlir::RegionRange regions = {}) : Base(attrs, properties, regions), odsOperands(values) {} swmmac_f16_16x16x128_fp8_bf8GenericAdaptor(RangeT values, ::mlir::DictionaryAttr attrs, ::mlir::PropertyRef properties, ::mlir::RegionRange regions = {}) : swmmac_f16_16x16x128_fp8_bf8GenericAdaptor(values, attrs, (properties ? *properties.as() : Properties{}), regions) {} swmmac_f16_16x16x128_fp8_bf8GenericAdaptor(RangeT values, ::mlir::DictionaryAttr attrs = nullptr) : swmmac_f16_16x16x128_fp8_bf8GenericAdaptor(values, attrs, Properties{}, {}) {} swmmac_f16_16x16x128_fp8_bf8GenericAdaptor(RangeT values, const swmmac_f16_16x16x128_fp8_bf8GenericAdaptorBase &base) : Base(base), odsOperands(values) {} template >> swmmac_f16_16x16x128_fp8_bf8GenericAdaptor(RangeT values, LateInst op) : Base(op), odsOperands(values) {} std::pair getODSOperandIndexAndLength(unsigned index) { return Base::getODSOperandIndexAndLength(index, odsOperands.size()); } RangeT getODSOperands(unsigned index) { auto valueRange = getODSOperandIndexAndLength(index); return {std::next(odsOperands.begin(), valueRange.first), std::next(odsOperands.begin(), valueRange.first + valueRange.second)}; } ValueT getA() { return (*getODSOperands(0).begin()); } ValueT getB() { return (*getODSOperands(1).begin()); } ValueT getC() { return (*getODSOperands(2).begin()); } ValueT getIndex() { return (*getODSOperands(3).begin()); } RangeT getOperands() { return odsOperands; } private: RangeT odsOperands; }; class swmmac_f16_16x16x128_fp8_bf8Adaptor : public swmmac_f16_16x16x128_fp8_bf8GenericAdaptor<::mlir::ValueRange> { public: using swmmac_f16_16x16x128_fp8_bf8GenericAdaptor::swmmac_f16_16x16x128_fp8_bf8GenericAdaptor; swmmac_f16_16x16x128_fp8_bf8Adaptor(swmmac_f16_16x16x128_fp8_bf8 op); ::llvm::LogicalResult verify(::mlir::Location loc); }; class swmmac_f16_16x16x128_fp8_bf8 : public ::mlir::Op::Impl, ::mlir::OpTrait::ZeroSuccessors, ::mlir::OpTrait::NOperands<4>::Impl, ::mlir::OpTrait::OpInvariants, ::mlir::BytecodeOpInterface::Trait> { public: using Op::Op; using Op::print; using Adaptor = swmmac_f16_16x16x128_fp8_bf8Adaptor; template using GenericAdaptor = swmmac_f16_16x16x128_fp8_bf8GenericAdaptor; using FoldAdaptor = GenericAdaptor<::llvm::ArrayRef<::mlir::Attribute>>; static constexpr int odsIndex_a = 0; static constexpr int odsIndex_b = 1; static constexpr int odsIndex_c = 2; static constexpr int odsIndex_index = 3; using Properties = FoldAdaptor::Properties; static ::llvm::ArrayRef<::llvm::StringRef> getAttributeNames() { static ::llvm::StringRef attrNames[] = {::llvm::StringRef("reuseA"), ::llvm::StringRef("reuseB")}; return ::llvm::ArrayRef(attrNames); } ::mlir::StringAttr getReuseAAttrName() { return getAttributeNameForIndex(0); } static ::mlir::StringAttr getReuseAAttrName(::mlir::OperationName name) { return getAttributeNameForIndex(name, 0); } ::mlir::StringAttr getReuseBAttrName() { return getAttributeNameForIndex(1); } static ::mlir::StringAttr getReuseBAttrName(::mlir::OperationName name) { return getAttributeNameForIndex(name, 1); } static constexpr ::llvm::StringLiteral getOperationName() { return ::llvm::StringLiteral("rocdl.swmmac.f16.16x16x128.fp8.bf8"); } std::pair getODSOperandIndexAndLength(unsigned index) { return {index, 1}; } ::mlir::Operation::operand_range getODSOperands(unsigned index) { auto valueRange = getODSOperandIndexAndLength(index); return {std::next(getOperation()->operand_begin(), valueRange.first), std::next(getOperation()->operand_begin(), valueRange.first + valueRange.second)}; } ::mlir::TypedValue<::mlir::Type> getA() { return ::llvm::cast<::mlir::TypedValue<::mlir::Type>>(*getODSOperands(0).begin()); } ::mlir::TypedValue<::mlir::Type> getB() { return ::llvm::cast<::mlir::TypedValue<::mlir::Type>>(*getODSOperands(1).begin()); } ::mlir::TypedValue<::mlir::Type> getC() { return ::llvm::cast<::mlir::TypedValue<::mlir::Type>>(*getODSOperands(2).begin()); } ::mlir::TypedValue<::mlir::IntegerType> getIndex() { return ::llvm::cast<::mlir::TypedValue<::mlir::IntegerType>>(*getODSOperands(3).begin()); } ::mlir::OpOperand &getAMutable() { auto range = getODSOperandIndexAndLength(0); return getOperation()->getOpOperand(range.first); } ::mlir::OpOperand &getBMutable() { auto range = getODSOperandIndexAndLength(1); return getOperation()->getOpOperand(range.first); } ::mlir::OpOperand &getCMutable() { auto range = getODSOperandIndexAndLength(2); return getOperation()->getOpOperand(range.first); } ::mlir::OpOperand &getIndexMutable() { auto range = getODSOperandIndexAndLength(3); return getOperation()->getOpOperand(range.first); } std::pair getODSResultIndexAndLength(unsigned index) { return {index, 1}; } ::mlir::Operation::result_range getODSResults(unsigned index) { auto valueRange = getODSResultIndexAndLength(index); return {std::next(getOperation()->result_begin(), valueRange.first), std::next(getOperation()->result_begin(), valueRange.first + valueRange.second)}; } ::mlir::TypedValue<::mlir::Type> getRes() { return ::llvm::cast<::mlir::TypedValue<::mlir::Type>>(*getODSResults(0).begin()); } static ::llvm::LogicalResult setPropertiesFromAttr(Properties &prop, ::mlir::Attribute attr, ::llvm::function_ref<::mlir::InFlightDiagnostic()> emitError); static ::mlir::Attribute getPropertiesAsAttr(::mlir::MLIRContext *ctx, const Properties &prop); static llvm::hash_code computePropertiesHash(const Properties &prop); static std::optional getInherentAttr(::mlir::MLIRContext *ctx, const Properties &prop, llvm::StringRef name); static void setInherentAttr(Properties &prop, llvm::StringRef name, mlir::Attribute value); static void populateInherentAttrs(::mlir::MLIRContext *ctx, const Properties &prop, ::mlir::NamedAttrList &attrs); static ::llvm::LogicalResult verifyInherentAttrs(::mlir::OperationName opName, ::mlir::NamedAttrList &attrs, llvm::function_ref<::mlir::InFlightDiagnostic()> emitError); static ::llvm::LogicalResult readProperties(::mlir::DialectBytecodeReader &reader, ::mlir::OperationState &state); void writeProperties(::mlir::DialectBytecodeWriter &writer); ::mlir::IntegerAttr getReuseAAttr() { return ::llvm::dyn_cast_or_null<::mlir::IntegerAttr>(getProperties().reuseA); } bool getReuseA(); ::mlir::IntegerAttr getReuseBAttr() { return ::llvm::dyn_cast_or_null<::mlir::IntegerAttr>(getProperties().reuseB); } bool getReuseB(); void setReuseAAttr(::mlir::IntegerAttr attr) { getProperties().reuseA = attr; } void setReuseA(bool attrValue); void setReuseBAttr(::mlir::IntegerAttr attr) { getProperties().reuseB = attr; } void setReuseB(bool attrValue); static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::Type res, ::mlir::Value a, ::mlir::Value b, ::mlir::Value c, ::mlir::Value index, ::mlir::IntegerAttr reuseA, ::mlir::IntegerAttr reuseB = nullptr); static swmmac_f16_16x16x128_fp8_bf8 create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::Type res, ::mlir::Value a, ::mlir::Value b, ::mlir::Value c, ::mlir::Value index, ::mlir::IntegerAttr reuseA, ::mlir::IntegerAttr reuseB = nullptr); static swmmac_f16_16x16x128_fp8_bf8 create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::Type res, ::mlir::Value a, ::mlir::Value b, ::mlir::Value c, ::mlir::Value index, ::mlir::IntegerAttr reuseA, ::mlir::IntegerAttr reuseB = nullptr); static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::Value a, ::mlir::Value b, ::mlir::Value c, ::mlir::Value index, ::mlir::IntegerAttr reuseA, ::mlir::IntegerAttr reuseB = nullptr); static swmmac_f16_16x16x128_fp8_bf8 create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::Value a, ::mlir::Value b, ::mlir::Value c, ::mlir::Value index, ::mlir::IntegerAttr reuseA, ::mlir::IntegerAttr reuseB = nullptr); static swmmac_f16_16x16x128_fp8_bf8 create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::Value a, ::mlir::Value b, ::mlir::Value c, ::mlir::Value index, ::mlir::IntegerAttr reuseA, ::mlir::IntegerAttr reuseB = nullptr); static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::Type res, ::mlir::Value a, ::mlir::Value b, ::mlir::Value c, ::mlir::Value index, bool reuseA = 0, bool reuseB = 0); static swmmac_f16_16x16x128_fp8_bf8 create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::Type res, ::mlir::Value a, ::mlir::Value b, ::mlir::Value c, ::mlir::Value index, bool reuseA = 0, bool reuseB = 0); static swmmac_f16_16x16x128_fp8_bf8 create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::Type res, ::mlir::Value a, ::mlir::Value b, ::mlir::Value c, ::mlir::Value index, bool reuseA = 0, bool reuseB = 0); static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::Value a, ::mlir::Value b, ::mlir::Value c, ::mlir::Value index, bool reuseA = 0, bool reuseB = 0); static swmmac_f16_16x16x128_fp8_bf8 create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::Value a, ::mlir::Value b, ::mlir::Value c, ::mlir::Value index, bool reuseA = 0, bool reuseB = 0); static swmmac_f16_16x16x128_fp8_bf8 create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::Value a, ::mlir::Value b, ::mlir::Value c, ::mlir::Value index, bool reuseA = 0, bool reuseB = 0); static void build(::mlir::OpBuilder &, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, ::llvm::ArrayRef<::mlir::NamedAttribute> attributes = {}); static swmmac_f16_16x16x128_fp8_bf8 create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, ::llvm::ArrayRef<::mlir::NamedAttribute> attributes = {}); static swmmac_f16_16x16x128_fp8_bf8 create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, ::llvm::ArrayRef<::mlir::NamedAttribute> attributes = {}); static void build(::mlir::OpBuilder &, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, const Properties &properties, ::llvm::ArrayRef<::mlir::NamedAttribute> discardableAttributes = {}); static swmmac_f16_16x16x128_fp8_bf8 create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, const Properties &properties, ::llvm::ArrayRef<::mlir::NamedAttribute> discardableAttributes = {}); static swmmac_f16_16x16x128_fp8_bf8 create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, const Properties &properties, ::llvm::ArrayRef<::mlir::NamedAttribute> discardableAttributes = {}); static void populateDefaultProperties(::mlir::OperationName opName, Properties &properties); ::llvm::LogicalResult verifyInvariantsImpl(); ::llvm::LogicalResult verifyInvariants(); static ::mlir::ParseResult parse(::mlir::OpAsmParser &parser, ::mlir::OperationState &result); void print(::mlir::OpAsmPrinter &_odsPrinter); private: ::mlir::StringAttr getAttributeNameForIndex(unsigned index) { return getAttributeNameForIndex((*this)->getName(), index); } static ::mlir::StringAttr getAttributeNameForIndex(::mlir::OperationName name, unsigned index) { assert(index < 2 && "invalid attribute index"); assert(name.getStringRef() == getOperationName() && "invalid operation name"); assert(name.isRegistered() && "Operation isn't registered, missing a " "dependent dialect loading?"); return name.getAttributeNames()[index]; } public: }; } // namespace mlir::ROCDL MLIR_DECLARE_EXPLICIT_TYPE_ID(::mlir::ROCDL::swmmac_f16_16x16x128_fp8_bf8) MLIR_DECLARE_EXPLICIT_TYPE_ID(::mlir::ROCDL::detail::swmmac_f16_16x16x128_fp8_bf8GenericAdaptorBase::Properties) namespace mlir::ROCDL { //===----------------------------------------------------------------------===// // ::mlir::ROCDL::swmmac_f16_16x16x128_fp8_fp8 declarations //===----------------------------------------------------------------------===// namespace detail { class swmmac_f16_16x16x128_fp8_fp8GenericAdaptorBase { public: struct Properties { using reuseATy = ::mlir::IntegerAttr; reuseATy reuseA; auto getReuseA() const { auto &propStorage = this->reuseA; return ::llvm::dyn_cast_or_null<::mlir::IntegerAttr>(propStorage); } void setReuseA(const ::mlir::IntegerAttr &propValue) { this->reuseA = propValue; } using reuseBTy = ::mlir::IntegerAttr; reuseBTy reuseB; auto getReuseB() const { auto &propStorage = this->reuseB; return ::llvm::dyn_cast_or_null<::mlir::IntegerAttr>(propStorage); } void setReuseB(const ::mlir::IntegerAttr &propValue) { this->reuseB = propValue; } bool operator==(const Properties &rhs) const { return rhs.reuseA == this->reuseA && rhs.reuseB == this->reuseB && true; } bool operator!=(const Properties &rhs) const { return !(*this == rhs); } }; protected: ::mlir::DictionaryAttr odsAttrs; ::std::optional<::mlir::OperationName> odsOpName; Properties properties; ::mlir::RegionRange odsRegions; public: swmmac_f16_16x16x128_fp8_fp8GenericAdaptorBase(::mlir::DictionaryAttr attrs, const Properties &properties, ::mlir::RegionRange regions = {}) : odsAttrs(attrs), properties(properties), odsRegions(regions) { if (odsAttrs) odsOpName.emplace("rocdl.swmmac.f16.16x16x128.fp8.fp8", odsAttrs.getContext()); } swmmac_f16_16x16x128_fp8_fp8GenericAdaptorBase(swmmac_f16_16x16x128_fp8_fp8 op); std::pair getODSOperandIndexAndLength(unsigned index, unsigned odsOperandsSize) { return {index, 1}; } const Properties &getProperties() { return properties; } ::mlir::DictionaryAttr getAttributes() { return odsAttrs; } ::mlir::IntegerAttr getReuseAAttr(); bool getReuseA(); ::mlir::IntegerAttr getReuseBAttr(); bool getReuseB(); }; } // namespace detail template class swmmac_f16_16x16x128_fp8_fp8GenericAdaptor : public detail::swmmac_f16_16x16x128_fp8_fp8GenericAdaptorBase { using ValueT = ::llvm::detail::ValueOfRange; using Base = detail::swmmac_f16_16x16x128_fp8_fp8GenericAdaptorBase; static constexpr int odsIndex_a = 0; static constexpr int odsIndex_b = 1; static constexpr int odsIndex_c = 2; static constexpr int odsIndex_index = 3; public: swmmac_f16_16x16x128_fp8_fp8GenericAdaptor(RangeT values, ::mlir::DictionaryAttr attrs, const Properties &properties, ::mlir::RegionRange regions = {}) : Base(attrs, properties, regions), odsOperands(values) {} swmmac_f16_16x16x128_fp8_fp8GenericAdaptor(RangeT values, ::mlir::DictionaryAttr attrs, ::mlir::PropertyRef properties, ::mlir::RegionRange regions = {}) : swmmac_f16_16x16x128_fp8_fp8GenericAdaptor(values, attrs, (properties ? *properties.as() : Properties{}), regions) {} swmmac_f16_16x16x128_fp8_fp8GenericAdaptor(RangeT values, ::mlir::DictionaryAttr attrs = nullptr) : swmmac_f16_16x16x128_fp8_fp8GenericAdaptor(values, attrs, Properties{}, {}) {} swmmac_f16_16x16x128_fp8_fp8GenericAdaptor(RangeT values, const swmmac_f16_16x16x128_fp8_fp8GenericAdaptorBase &base) : Base(base), odsOperands(values) {} template >> swmmac_f16_16x16x128_fp8_fp8GenericAdaptor(RangeT values, LateInst op) : Base(op), odsOperands(values) {} std::pair getODSOperandIndexAndLength(unsigned index) { return Base::getODSOperandIndexAndLength(index, odsOperands.size()); } RangeT getODSOperands(unsigned index) { auto valueRange = getODSOperandIndexAndLength(index); return {std::next(odsOperands.begin(), valueRange.first), std::next(odsOperands.begin(), valueRange.first + valueRange.second)}; } ValueT getA() { return (*getODSOperands(0).begin()); } ValueT getB() { return (*getODSOperands(1).begin()); } ValueT getC() { return (*getODSOperands(2).begin()); } ValueT getIndex() { return (*getODSOperands(3).begin()); } RangeT getOperands() { return odsOperands; } private: RangeT odsOperands; }; class swmmac_f16_16x16x128_fp8_fp8Adaptor : public swmmac_f16_16x16x128_fp8_fp8GenericAdaptor<::mlir::ValueRange> { public: using swmmac_f16_16x16x128_fp8_fp8GenericAdaptor::swmmac_f16_16x16x128_fp8_fp8GenericAdaptor; swmmac_f16_16x16x128_fp8_fp8Adaptor(swmmac_f16_16x16x128_fp8_fp8 op); ::llvm::LogicalResult verify(::mlir::Location loc); }; class swmmac_f16_16x16x128_fp8_fp8 : public ::mlir::Op::Impl, ::mlir::OpTrait::ZeroSuccessors, ::mlir::OpTrait::NOperands<4>::Impl, ::mlir::OpTrait::OpInvariants, ::mlir::BytecodeOpInterface::Trait> { public: using Op::Op; using Op::print; using Adaptor = swmmac_f16_16x16x128_fp8_fp8Adaptor; template using GenericAdaptor = swmmac_f16_16x16x128_fp8_fp8GenericAdaptor; using FoldAdaptor = GenericAdaptor<::llvm::ArrayRef<::mlir::Attribute>>; static constexpr int odsIndex_a = 0; static constexpr int odsIndex_b = 1; static constexpr int odsIndex_c = 2; static constexpr int odsIndex_index = 3; using Properties = FoldAdaptor::Properties; static ::llvm::ArrayRef<::llvm::StringRef> getAttributeNames() { static ::llvm::StringRef attrNames[] = {::llvm::StringRef("reuseA"), ::llvm::StringRef("reuseB")}; return ::llvm::ArrayRef(attrNames); } ::mlir::StringAttr getReuseAAttrName() { return getAttributeNameForIndex(0); } static ::mlir::StringAttr getReuseAAttrName(::mlir::OperationName name) { return getAttributeNameForIndex(name, 0); } ::mlir::StringAttr getReuseBAttrName() { return getAttributeNameForIndex(1); } static ::mlir::StringAttr getReuseBAttrName(::mlir::OperationName name) { return getAttributeNameForIndex(name, 1); } static constexpr ::llvm::StringLiteral getOperationName() { return ::llvm::StringLiteral("rocdl.swmmac.f16.16x16x128.fp8.fp8"); } std::pair getODSOperandIndexAndLength(unsigned index) { return {index, 1}; } ::mlir::Operation::operand_range getODSOperands(unsigned index) { auto valueRange = getODSOperandIndexAndLength(index); return {std::next(getOperation()->operand_begin(), valueRange.first), std::next(getOperation()->operand_begin(), valueRange.first + valueRange.second)}; } ::mlir::TypedValue<::mlir::Type> getA() { return ::llvm::cast<::mlir::TypedValue<::mlir::Type>>(*getODSOperands(0).begin()); } ::mlir::TypedValue<::mlir::Type> getB() { return ::llvm::cast<::mlir::TypedValue<::mlir::Type>>(*getODSOperands(1).begin()); } ::mlir::TypedValue<::mlir::Type> getC() { return ::llvm::cast<::mlir::TypedValue<::mlir::Type>>(*getODSOperands(2).begin()); } ::mlir::TypedValue<::mlir::IntegerType> getIndex() { return ::llvm::cast<::mlir::TypedValue<::mlir::IntegerType>>(*getODSOperands(3).begin()); } ::mlir::OpOperand &getAMutable() { auto range = getODSOperandIndexAndLength(0); return getOperation()->getOpOperand(range.first); } ::mlir::OpOperand &getBMutable() { auto range = getODSOperandIndexAndLength(1); return getOperation()->getOpOperand(range.first); } ::mlir::OpOperand &getCMutable() { auto range = getODSOperandIndexAndLength(2); return getOperation()->getOpOperand(range.first); } ::mlir::OpOperand &getIndexMutable() { auto range = getODSOperandIndexAndLength(3); return getOperation()->getOpOperand(range.first); } std::pair getODSResultIndexAndLength(unsigned index) { return {index, 1}; } ::mlir::Operation::result_range getODSResults(unsigned index) { auto valueRange = getODSResultIndexAndLength(index); return {std::next(getOperation()->result_begin(), valueRange.first), std::next(getOperation()->result_begin(), valueRange.first + valueRange.second)}; } ::mlir::TypedValue<::mlir::Type> getRes() { return ::llvm::cast<::mlir::TypedValue<::mlir::Type>>(*getODSResults(0).begin()); } static ::llvm::LogicalResult setPropertiesFromAttr(Properties &prop, ::mlir::Attribute attr, ::llvm::function_ref<::mlir::InFlightDiagnostic()> emitError); static ::mlir::Attribute getPropertiesAsAttr(::mlir::MLIRContext *ctx, const Properties &prop); static llvm::hash_code computePropertiesHash(const Properties &prop); static std::optional getInherentAttr(::mlir::MLIRContext *ctx, const Properties &prop, llvm::StringRef name); static void setInherentAttr(Properties &prop, llvm::StringRef name, mlir::Attribute value); static void populateInherentAttrs(::mlir::MLIRContext *ctx, const Properties &prop, ::mlir::NamedAttrList &attrs); static ::llvm::LogicalResult verifyInherentAttrs(::mlir::OperationName opName, ::mlir::NamedAttrList &attrs, llvm::function_ref<::mlir::InFlightDiagnostic()> emitError); static ::llvm::LogicalResult readProperties(::mlir::DialectBytecodeReader &reader, ::mlir::OperationState &state); void writeProperties(::mlir::DialectBytecodeWriter &writer); ::mlir::IntegerAttr getReuseAAttr() { return ::llvm::dyn_cast_or_null<::mlir::IntegerAttr>(getProperties().reuseA); } bool getReuseA(); ::mlir::IntegerAttr getReuseBAttr() { return ::llvm::dyn_cast_or_null<::mlir::IntegerAttr>(getProperties().reuseB); } bool getReuseB(); void setReuseAAttr(::mlir::IntegerAttr attr) { getProperties().reuseA = attr; } void setReuseA(bool attrValue); void setReuseBAttr(::mlir::IntegerAttr attr) { getProperties().reuseB = attr; } void setReuseB(bool attrValue); static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::Type res, ::mlir::Value a, ::mlir::Value b, ::mlir::Value c, ::mlir::Value index, ::mlir::IntegerAttr reuseA, ::mlir::IntegerAttr reuseB = nullptr); static swmmac_f16_16x16x128_fp8_fp8 create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::Type res, ::mlir::Value a, ::mlir::Value b, ::mlir::Value c, ::mlir::Value index, ::mlir::IntegerAttr reuseA, ::mlir::IntegerAttr reuseB = nullptr); static swmmac_f16_16x16x128_fp8_fp8 create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::Type res, ::mlir::Value a, ::mlir::Value b, ::mlir::Value c, ::mlir::Value index, ::mlir::IntegerAttr reuseA, ::mlir::IntegerAttr reuseB = nullptr); static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::Value a, ::mlir::Value b, ::mlir::Value c, ::mlir::Value index, ::mlir::IntegerAttr reuseA, ::mlir::IntegerAttr reuseB = nullptr); static swmmac_f16_16x16x128_fp8_fp8 create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::Value a, ::mlir::Value b, ::mlir::Value c, ::mlir::Value index, ::mlir::IntegerAttr reuseA, ::mlir::IntegerAttr reuseB = nullptr); static swmmac_f16_16x16x128_fp8_fp8 create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::Value a, ::mlir::Value b, ::mlir::Value c, ::mlir::Value index, ::mlir::IntegerAttr reuseA, ::mlir::IntegerAttr reuseB = nullptr); static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::Type res, ::mlir::Value a, ::mlir::Value b, ::mlir::Value c, ::mlir::Value index, bool reuseA = 0, bool reuseB = 0); static swmmac_f16_16x16x128_fp8_fp8 create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::Type res, ::mlir::Value a, ::mlir::Value b, ::mlir::Value c, ::mlir::Value index, bool reuseA = 0, bool reuseB = 0); static swmmac_f16_16x16x128_fp8_fp8 create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::Type res, ::mlir::Value a, ::mlir::Value b, ::mlir::Value c, ::mlir::Value index, bool reuseA = 0, bool reuseB = 0); static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::Value a, ::mlir::Value b, ::mlir::Value c, ::mlir::Value index, bool reuseA = 0, bool reuseB = 0); static swmmac_f16_16x16x128_fp8_fp8 create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::Value a, ::mlir::Value b, ::mlir::Value c, ::mlir::Value index, bool reuseA = 0, bool reuseB = 0); static swmmac_f16_16x16x128_fp8_fp8 create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::Value a, ::mlir::Value b, ::mlir::Value c, ::mlir::Value index, bool reuseA = 0, bool reuseB = 0); static void build(::mlir::OpBuilder &, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, ::llvm::ArrayRef<::mlir::NamedAttribute> attributes = {}); static swmmac_f16_16x16x128_fp8_fp8 create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, ::llvm::ArrayRef<::mlir::NamedAttribute> attributes = {}); static swmmac_f16_16x16x128_fp8_fp8 create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, ::llvm::ArrayRef<::mlir::NamedAttribute> attributes = {}); static void build(::mlir::OpBuilder &, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, const Properties &properties, ::llvm::ArrayRef<::mlir::NamedAttribute> discardableAttributes = {}); static swmmac_f16_16x16x128_fp8_fp8 create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, const Properties &properties, ::llvm::ArrayRef<::mlir::NamedAttribute> discardableAttributes = {}); static swmmac_f16_16x16x128_fp8_fp8 create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, const Properties &properties, ::llvm::ArrayRef<::mlir::NamedAttribute> discardableAttributes = {}); static void populateDefaultProperties(::mlir::OperationName opName, Properties &properties); ::llvm::LogicalResult verifyInvariantsImpl(); ::llvm::LogicalResult verifyInvariants(); static ::mlir::ParseResult parse(::mlir::OpAsmParser &parser, ::mlir::OperationState &result); void print(::mlir::OpAsmPrinter &_odsPrinter); private: ::mlir::StringAttr getAttributeNameForIndex(unsigned index) { return getAttributeNameForIndex((*this)->getName(), index); } static ::mlir::StringAttr getAttributeNameForIndex(::mlir::OperationName name, unsigned index) { assert(index < 2 && "invalid attribute index"); assert(name.getStringRef() == getOperationName() && "invalid operation name"); assert(name.isRegistered() && "Operation isn't registered, missing a " "dependent dialect loading?"); return name.getAttributeNames()[index]; } public: }; } // namespace mlir::ROCDL MLIR_DECLARE_EXPLICIT_TYPE_ID(::mlir::ROCDL::swmmac_f16_16x16x128_fp8_fp8) MLIR_DECLARE_EXPLICIT_TYPE_ID(::mlir::ROCDL::detail::swmmac_f16_16x16x128_fp8_fp8GenericAdaptorBase::Properties) namespace mlir::ROCDL { //===----------------------------------------------------------------------===// // ::mlir::ROCDL::swmmac_f16_16x16x32_f16 declarations //===----------------------------------------------------------------------===// namespace detail { class swmmac_f16_16x16x32_f16GenericAdaptorBase { public: using Properties = ::mlir::EmptyProperties; protected: ::mlir::DictionaryAttr odsAttrs; ::std::optional<::mlir::OperationName> odsOpName; Properties properties; ::mlir::RegionRange odsRegions; public: swmmac_f16_16x16x32_f16GenericAdaptorBase(::mlir::DictionaryAttr attrs, const Properties &properties, ::mlir::RegionRange regions = {}) : odsAttrs(attrs), properties(properties), odsRegions(regions) { if (odsAttrs) odsOpName.emplace("rocdl.swmmac.f16.16x16x32.f16", odsAttrs.getContext()); } swmmac_f16_16x16x32_f16GenericAdaptorBase(swmmac_f16_16x16x32_f16 op); std::pair getODSOperandIndexAndLength(unsigned index, unsigned odsOperandsSize) { return {index, 1}; } const Properties &getProperties() { return properties; } ::mlir::DictionaryAttr getAttributes() { return odsAttrs; } }; } // namespace detail template class swmmac_f16_16x16x32_f16GenericAdaptor : public detail::swmmac_f16_16x16x32_f16GenericAdaptorBase { using ValueT = ::llvm::detail::ValueOfRange; using Base = detail::swmmac_f16_16x16x32_f16GenericAdaptorBase; static constexpr int odsIndex_a = 0; static constexpr int odsIndex_b = 1; static constexpr int odsIndex_c = 2; static constexpr int odsIndex_index = 3; public: swmmac_f16_16x16x32_f16GenericAdaptor(RangeT values, ::mlir::DictionaryAttr attrs, const Properties &properties, ::mlir::RegionRange regions = {}) : Base(attrs, properties, regions), odsOperands(values) {} swmmac_f16_16x16x32_f16GenericAdaptor(RangeT values, ::mlir::DictionaryAttr attrs, ::mlir::PropertyRef properties, ::mlir::RegionRange regions = {}) : swmmac_f16_16x16x32_f16GenericAdaptor(values, attrs, (properties ? *properties.as() : Properties{}), regions) {} swmmac_f16_16x16x32_f16GenericAdaptor(RangeT values, ::mlir::DictionaryAttr attrs = nullptr) : swmmac_f16_16x16x32_f16GenericAdaptor(values, attrs, Properties{}, {}) {} swmmac_f16_16x16x32_f16GenericAdaptor(RangeT values, const swmmac_f16_16x16x32_f16GenericAdaptorBase &base) : Base(base), odsOperands(values) {} template >> swmmac_f16_16x16x32_f16GenericAdaptor(RangeT values, LateInst op) : Base(op), odsOperands(values) {} std::pair getODSOperandIndexAndLength(unsigned index) { return Base::getODSOperandIndexAndLength(index, odsOperands.size()); } RangeT getODSOperands(unsigned index) { auto valueRange = getODSOperandIndexAndLength(index); return {std::next(odsOperands.begin(), valueRange.first), std::next(odsOperands.begin(), valueRange.first + valueRange.second)}; } ValueT getA() { return (*getODSOperands(0).begin()); } ValueT getB() { return (*getODSOperands(1).begin()); } ValueT getC() { return (*getODSOperands(2).begin()); } ValueT getIndex() { return (*getODSOperands(3).begin()); } RangeT getOperands() { return odsOperands; } private: RangeT odsOperands; }; class swmmac_f16_16x16x32_f16Adaptor : public swmmac_f16_16x16x32_f16GenericAdaptor<::mlir::ValueRange> { public: using swmmac_f16_16x16x32_f16GenericAdaptor::swmmac_f16_16x16x32_f16GenericAdaptor; swmmac_f16_16x16x32_f16Adaptor(swmmac_f16_16x16x32_f16 op); ::llvm::LogicalResult verify(::mlir::Location loc); }; class swmmac_f16_16x16x32_f16 : public ::mlir::Op::Impl, ::mlir::OpTrait::ZeroSuccessors, ::mlir::OpTrait::NOperands<4>::Impl, ::mlir::OpTrait::OpInvariants> { public: using Op::Op; using Op::print; using Adaptor = swmmac_f16_16x16x32_f16Adaptor; template using GenericAdaptor = swmmac_f16_16x16x32_f16GenericAdaptor; using FoldAdaptor = GenericAdaptor<::llvm::ArrayRef<::mlir::Attribute>>; static constexpr int odsIndex_a = 0; static constexpr int odsIndex_b = 1; static constexpr int odsIndex_c = 2; static constexpr int odsIndex_index = 3; using Properties = FoldAdaptor::Properties; static ::llvm::ArrayRef<::llvm::StringRef> getAttributeNames() { return {}; } static constexpr ::llvm::StringLiteral getOperationName() { return ::llvm::StringLiteral("rocdl.swmmac.f16.16x16x32.f16"); } std::pair getODSOperandIndexAndLength(unsigned index) { return {index, 1}; } ::mlir::Operation::operand_range getODSOperands(unsigned index) { auto valueRange = getODSOperandIndexAndLength(index); return {std::next(getOperation()->operand_begin(), valueRange.first), std::next(getOperation()->operand_begin(), valueRange.first + valueRange.second)}; } ::mlir::TypedValue<::mlir::VectorType> getA() { return ::llvm::cast<::mlir::TypedValue<::mlir::VectorType>>(*getODSOperands(0).begin()); } ::mlir::TypedValue<::mlir::VectorType> getB() { return ::llvm::cast<::mlir::TypedValue<::mlir::VectorType>>(*getODSOperands(1).begin()); } ::mlir::TypedValue<::mlir::VectorType> getC() { return ::llvm::cast<::mlir::TypedValue<::mlir::VectorType>>(*getODSOperands(2).begin()); } ::mlir::TypedValue<::mlir::IntegerType> getIndex() { return ::llvm::cast<::mlir::TypedValue<::mlir::IntegerType>>(*getODSOperands(3).begin()); } ::mlir::OpOperand &getAMutable() { auto range = getODSOperandIndexAndLength(0); return getOperation()->getOpOperand(range.first); } ::mlir::OpOperand &getBMutable() { auto range = getODSOperandIndexAndLength(1); return getOperation()->getOpOperand(range.first); } ::mlir::OpOperand &getCMutable() { auto range = getODSOperandIndexAndLength(2); return getOperation()->getOpOperand(range.first); } ::mlir::OpOperand &getIndexMutable() { auto range = getODSOperandIndexAndLength(3); return getOperation()->getOpOperand(range.first); } std::pair getODSResultIndexAndLength(unsigned index) { return {index, 1}; } ::mlir::Operation::result_range getODSResults(unsigned index) { auto valueRange = getODSResultIndexAndLength(index); return {std::next(getOperation()->result_begin(), valueRange.first), std::next(getOperation()->result_begin(), valueRange.first + valueRange.second)}; } ::mlir::TypedValue<::mlir::VectorType> getRes() { return ::llvm::cast<::mlir::TypedValue<::mlir::VectorType>>(*getODSResults(0).begin()); } static ::llvm::LogicalResult setPropertiesFromAttr(Properties &prop, ::mlir::Attribute attr, ::llvm::function_ref<::mlir::InFlightDiagnostic()> emitError); static ::mlir::Attribute getPropertiesAsAttr(::mlir::MLIRContext *ctx, const Properties &prop); static llvm::hash_code computePropertiesHash(const Properties &prop); static std::optional getInherentAttr(::mlir::MLIRContext *ctx, const Properties &prop, llvm::StringRef name); static void setInherentAttr(Properties &prop, llvm::StringRef name, mlir::Attribute value); static void populateInherentAttrs(::mlir::MLIRContext *ctx, const Properties &prop, ::mlir::NamedAttrList &attrs); static ::llvm::LogicalResult verifyInherentAttrs(::mlir::OperationName opName, ::mlir::NamedAttrList &attrs, llvm::function_ref<::mlir::InFlightDiagnostic()> emitError); static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::Type res, ::mlir::Value a, ::mlir::Value b, ::mlir::Value c, ::mlir::Value index); static swmmac_f16_16x16x32_f16 create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::Type res, ::mlir::Value a, ::mlir::Value b, ::mlir::Value c, ::mlir::Value index); static swmmac_f16_16x16x32_f16 create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::Type res, ::mlir::Value a, ::mlir::Value b, ::mlir::Value c, ::mlir::Value index); static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::Value a, ::mlir::Value b, ::mlir::Value c, ::mlir::Value index); static swmmac_f16_16x16x32_f16 create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::Value a, ::mlir::Value b, ::mlir::Value c, ::mlir::Value index); static swmmac_f16_16x16x32_f16 create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::Value a, ::mlir::Value b, ::mlir::Value c, ::mlir::Value index); static void build(::mlir::OpBuilder &, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, ::llvm::ArrayRef<::mlir::NamedAttribute> attributes = {}); static swmmac_f16_16x16x32_f16 create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, ::llvm::ArrayRef<::mlir::NamedAttribute> attributes = {}); static swmmac_f16_16x16x32_f16 create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, ::llvm::ArrayRef<::mlir::NamedAttribute> attributes = {}); static void build(::mlir::OpBuilder &, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, const Properties &properties, ::llvm::ArrayRef<::mlir::NamedAttribute> discardableAttributes = {}); static swmmac_f16_16x16x32_f16 create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, const Properties &properties, ::llvm::ArrayRef<::mlir::NamedAttribute> discardableAttributes = {}); static swmmac_f16_16x16x32_f16 create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, const Properties &properties, ::llvm::ArrayRef<::mlir::NamedAttribute> discardableAttributes = {}); ::llvm::LogicalResult verifyInvariantsImpl(); ::llvm::LogicalResult verifyInvariants(); static ::mlir::ParseResult parse(::mlir::OpAsmParser &parser, ::mlir::OperationState &result); void print(::mlir::OpAsmPrinter &_odsPrinter); public: }; } // namespace mlir::ROCDL MLIR_DECLARE_EXPLICIT_TYPE_ID(::mlir::ROCDL::swmmac_f16_16x16x32_f16) namespace mlir::ROCDL { //===----------------------------------------------------------------------===// // ::mlir::ROCDL::swmmac_f16_16x16x64_f16 declarations //===----------------------------------------------------------------------===// namespace detail { class swmmac_f16_16x16x64_f16GenericAdaptorBase { public: struct Properties { using reuseATy = ::mlir::IntegerAttr; reuseATy reuseA; auto getReuseA() const { auto &propStorage = this->reuseA; return ::llvm::dyn_cast_or_null<::mlir::IntegerAttr>(propStorage); } void setReuseA(const ::mlir::IntegerAttr &propValue) { this->reuseA = propValue; } using reuseBTy = ::mlir::IntegerAttr; reuseBTy reuseB; auto getReuseB() const { auto &propStorage = this->reuseB; return ::llvm::dyn_cast_or_null<::mlir::IntegerAttr>(propStorage); } void setReuseB(const ::mlir::IntegerAttr &propValue) { this->reuseB = propValue; } using signATy = ::mlir::IntegerAttr; signATy signA; auto getSignA() const { auto &propStorage = this->signA; return ::llvm::dyn_cast_or_null<::mlir::IntegerAttr>(propStorage); } void setSignA(const ::mlir::IntegerAttr &propValue) { this->signA = propValue; } using signBTy = ::mlir::IntegerAttr; signBTy signB; auto getSignB() const { auto &propStorage = this->signB; return ::llvm::dyn_cast_or_null<::mlir::IntegerAttr>(propStorage); } void setSignB(const ::mlir::IntegerAttr &propValue) { this->signB = propValue; } bool operator==(const Properties &rhs) const { return rhs.reuseA == this->reuseA && rhs.reuseB == this->reuseB && rhs.signA == this->signA && rhs.signB == this->signB && true; } bool operator!=(const Properties &rhs) const { return !(*this == rhs); } }; protected: ::mlir::DictionaryAttr odsAttrs; ::std::optional<::mlir::OperationName> odsOpName; Properties properties; ::mlir::RegionRange odsRegions; public: swmmac_f16_16x16x64_f16GenericAdaptorBase(::mlir::DictionaryAttr attrs, const Properties &properties, ::mlir::RegionRange regions = {}) : odsAttrs(attrs), properties(properties), odsRegions(regions) { if (odsAttrs) odsOpName.emplace("rocdl.swmmac.f16.16x16x64.f16", odsAttrs.getContext()); } swmmac_f16_16x16x64_f16GenericAdaptorBase(swmmac_f16_16x16x64_f16 op); std::pair getODSOperandIndexAndLength(unsigned index, unsigned odsOperandsSize) { return {index, 1}; } const Properties &getProperties() { return properties; } ::mlir::DictionaryAttr getAttributes() { return odsAttrs; } ::mlir::IntegerAttr getSignAAttr(); bool getSignA(); ::mlir::IntegerAttr getSignBAttr(); bool getSignB(); ::mlir::IntegerAttr getReuseAAttr(); bool getReuseA(); ::mlir::IntegerAttr getReuseBAttr(); bool getReuseB(); }; } // namespace detail template class swmmac_f16_16x16x64_f16GenericAdaptor : public detail::swmmac_f16_16x16x64_f16GenericAdaptorBase { using ValueT = ::llvm::detail::ValueOfRange; using Base = detail::swmmac_f16_16x16x64_f16GenericAdaptorBase; static constexpr int odsIndex_a = 0; static constexpr int odsIndex_b = 1; static constexpr int odsIndex_c = 2; static constexpr int odsIndex_index = 3; public: swmmac_f16_16x16x64_f16GenericAdaptor(RangeT values, ::mlir::DictionaryAttr attrs, const Properties &properties, ::mlir::RegionRange regions = {}) : Base(attrs, properties, regions), odsOperands(values) {} swmmac_f16_16x16x64_f16GenericAdaptor(RangeT values, ::mlir::DictionaryAttr attrs, ::mlir::PropertyRef properties, ::mlir::RegionRange regions = {}) : swmmac_f16_16x16x64_f16GenericAdaptor(values, attrs, (properties ? *properties.as() : Properties{}), regions) {} swmmac_f16_16x16x64_f16GenericAdaptor(RangeT values, ::mlir::DictionaryAttr attrs = nullptr) : swmmac_f16_16x16x64_f16GenericAdaptor(values, attrs, Properties{}, {}) {} swmmac_f16_16x16x64_f16GenericAdaptor(RangeT values, const swmmac_f16_16x16x64_f16GenericAdaptorBase &base) : Base(base), odsOperands(values) {} template >> swmmac_f16_16x16x64_f16GenericAdaptor(RangeT values, LateInst op) : Base(op), odsOperands(values) {} std::pair getODSOperandIndexAndLength(unsigned index) { return Base::getODSOperandIndexAndLength(index, odsOperands.size()); } RangeT getODSOperands(unsigned index) { auto valueRange = getODSOperandIndexAndLength(index); return {std::next(odsOperands.begin(), valueRange.first), std::next(odsOperands.begin(), valueRange.first + valueRange.second)}; } ValueT getA() { return (*getODSOperands(0).begin()); } ValueT getB() { return (*getODSOperands(1).begin()); } ValueT getC() { return (*getODSOperands(2).begin()); } ValueT getIndex() { return (*getODSOperands(3).begin()); } RangeT getOperands() { return odsOperands; } private: RangeT odsOperands; }; class swmmac_f16_16x16x64_f16Adaptor : public swmmac_f16_16x16x64_f16GenericAdaptor<::mlir::ValueRange> { public: using swmmac_f16_16x16x64_f16GenericAdaptor::swmmac_f16_16x16x64_f16GenericAdaptor; swmmac_f16_16x16x64_f16Adaptor(swmmac_f16_16x16x64_f16 op); ::llvm::LogicalResult verify(::mlir::Location loc); }; class swmmac_f16_16x16x64_f16 : public ::mlir::Op::Impl, ::mlir::OpTrait::ZeroSuccessors, ::mlir::OpTrait::NOperands<4>::Impl, ::mlir::OpTrait::OpInvariants, ::mlir::BytecodeOpInterface::Trait> { public: using Op::Op; using Op::print; using Adaptor = swmmac_f16_16x16x64_f16Adaptor; template using GenericAdaptor = swmmac_f16_16x16x64_f16GenericAdaptor; using FoldAdaptor = GenericAdaptor<::llvm::ArrayRef<::mlir::Attribute>>; static constexpr int odsIndex_a = 0; static constexpr int odsIndex_b = 1; static constexpr int odsIndex_c = 2; static constexpr int odsIndex_index = 3; using Properties = FoldAdaptor::Properties; static ::llvm::ArrayRef<::llvm::StringRef> getAttributeNames() { static ::llvm::StringRef attrNames[] = {::llvm::StringRef("reuseA"), ::llvm::StringRef("reuseB"), ::llvm::StringRef("signA"), ::llvm::StringRef("signB")}; return ::llvm::ArrayRef(attrNames); } ::mlir::StringAttr getReuseAAttrName() { return getAttributeNameForIndex(0); } static ::mlir::StringAttr getReuseAAttrName(::mlir::OperationName name) { return getAttributeNameForIndex(name, 0); } ::mlir::StringAttr getReuseBAttrName() { return getAttributeNameForIndex(1); } static ::mlir::StringAttr getReuseBAttrName(::mlir::OperationName name) { return getAttributeNameForIndex(name, 1); } ::mlir::StringAttr getSignAAttrName() { return getAttributeNameForIndex(2); } static ::mlir::StringAttr getSignAAttrName(::mlir::OperationName name) { return getAttributeNameForIndex(name, 2); } ::mlir::StringAttr getSignBAttrName() { return getAttributeNameForIndex(3); } static ::mlir::StringAttr getSignBAttrName(::mlir::OperationName name) { return getAttributeNameForIndex(name, 3); } static constexpr ::llvm::StringLiteral getOperationName() { return ::llvm::StringLiteral("rocdl.swmmac.f16.16x16x64.f16"); } std::pair getODSOperandIndexAndLength(unsigned index) { return {index, 1}; } ::mlir::Operation::operand_range getODSOperands(unsigned index) { auto valueRange = getODSOperandIndexAndLength(index); return {std::next(getOperation()->operand_begin(), valueRange.first), std::next(getOperation()->operand_begin(), valueRange.first + valueRange.second)}; } ::mlir::TypedValue<::mlir::Type> getA() { return ::llvm::cast<::mlir::TypedValue<::mlir::Type>>(*getODSOperands(0).begin()); } ::mlir::TypedValue<::mlir::Type> getB() { return ::llvm::cast<::mlir::TypedValue<::mlir::Type>>(*getODSOperands(1).begin()); } ::mlir::TypedValue<::mlir::Type> getC() { return ::llvm::cast<::mlir::TypedValue<::mlir::Type>>(*getODSOperands(2).begin()); } ::mlir::TypedValue<::mlir::IntegerType> getIndex() { return ::llvm::cast<::mlir::TypedValue<::mlir::IntegerType>>(*getODSOperands(3).begin()); } ::mlir::OpOperand &getAMutable() { auto range = getODSOperandIndexAndLength(0); return getOperation()->getOpOperand(range.first); } ::mlir::OpOperand &getBMutable() { auto range = getODSOperandIndexAndLength(1); return getOperation()->getOpOperand(range.first); } ::mlir::OpOperand &getCMutable() { auto range = getODSOperandIndexAndLength(2); return getOperation()->getOpOperand(range.first); } ::mlir::OpOperand &getIndexMutable() { auto range = getODSOperandIndexAndLength(3); return getOperation()->getOpOperand(range.first); } std::pair getODSResultIndexAndLength(unsigned index) { return {index, 1}; } ::mlir::Operation::result_range getODSResults(unsigned index) { auto valueRange = getODSResultIndexAndLength(index); return {std::next(getOperation()->result_begin(), valueRange.first), std::next(getOperation()->result_begin(), valueRange.first + valueRange.second)}; } ::mlir::TypedValue<::mlir::Type> getRes() { return ::llvm::cast<::mlir::TypedValue<::mlir::Type>>(*getODSResults(0).begin()); } static ::llvm::LogicalResult setPropertiesFromAttr(Properties &prop, ::mlir::Attribute attr, ::llvm::function_ref<::mlir::InFlightDiagnostic()> emitError); static ::mlir::Attribute getPropertiesAsAttr(::mlir::MLIRContext *ctx, const Properties &prop); static llvm::hash_code computePropertiesHash(const Properties &prop); static std::optional getInherentAttr(::mlir::MLIRContext *ctx, const Properties &prop, llvm::StringRef name); static void setInherentAttr(Properties &prop, llvm::StringRef name, mlir::Attribute value); static void populateInherentAttrs(::mlir::MLIRContext *ctx, const Properties &prop, ::mlir::NamedAttrList &attrs); static ::llvm::LogicalResult verifyInherentAttrs(::mlir::OperationName opName, ::mlir::NamedAttrList &attrs, llvm::function_ref<::mlir::InFlightDiagnostic()> emitError); static ::llvm::LogicalResult readProperties(::mlir::DialectBytecodeReader &reader, ::mlir::OperationState &state); void writeProperties(::mlir::DialectBytecodeWriter &writer); ::mlir::IntegerAttr getSignAAttr() { return ::llvm::dyn_cast_or_null<::mlir::IntegerAttr>(getProperties().signA); } bool getSignA(); ::mlir::IntegerAttr getSignBAttr() { return ::llvm::dyn_cast_or_null<::mlir::IntegerAttr>(getProperties().signB); } bool getSignB(); ::mlir::IntegerAttr getReuseAAttr() { return ::llvm::dyn_cast_or_null<::mlir::IntegerAttr>(getProperties().reuseA); } bool getReuseA(); ::mlir::IntegerAttr getReuseBAttr() { return ::llvm::dyn_cast_or_null<::mlir::IntegerAttr>(getProperties().reuseB); } bool getReuseB(); void setSignAAttr(::mlir::IntegerAttr attr) { getProperties().signA = attr; } void setSignA(bool attrValue); void setSignBAttr(::mlir::IntegerAttr attr) { getProperties().signB = attr; } void setSignB(bool attrValue); void setReuseAAttr(::mlir::IntegerAttr attr) { getProperties().reuseA = attr; } void setReuseA(bool attrValue); void setReuseBAttr(::mlir::IntegerAttr attr) { getProperties().reuseB = attr; } void setReuseB(bool attrValue); static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::Type res, ::mlir::IntegerAttr signA, ::mlir::Value a, ::mlir::IntegerAttr signB, ::mlir::Value b, ::mlir::Value c, ::mlir::Value index, ::mlir::IntegerAttr reuseA, ::mlir::IntegerAttr reuseB = nullptr); static swmmac_f16_16x16x64_f16 create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::Type res, ::mlir::IntegerAttr signA, ::mlir::Value a, ::mlir::IntegerAttr signB, ::mlir::Value b, ::mlir::Value c, ::mlir::Value index, ::mlir::IntegerAttr reuseA, ::mlir::IntegerAttr reuseB = nullptr); static swmmac_f16_16x16x64_f16 create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::Type res, ::mlir::IntegerAttr signA, ::mlir::Value a, ::mlir::IntegerAttr signB, ::mlir::Value b, ::mlir::Value c, ::mlir::Value index, ::mlir::IntegerAttr reuseA, ::mlir::IntegerAttr reuseB = nullptr); static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::IntegerAttr signA, ::mlir::Value a, ::mlir::IntegerAttr signB, ::mlir::Value b, ::mlir::Value c, ::mlir::Value index, ::mlir::IntegerAttr reuseA, ::mlir::IntegerAttr reuseB = nullptr); static swmmac_f16_16x16x64_f16 create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::IntegerAttr signA, ::mlir::Value a, ::mlir::IntegerAttr signB, ::mlir::Value b, ::mlir::Value c, ::mlir::Value index, ::mlir::IntegerAttr reuseA, ::mlir::IntegerAttr reuseB = nullptr); static swmmac_f16_16x16x64_f16 create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::IntegerAttr signA, ::mlir::Value a, ::mlir::IntegerAttr signB, ::mlir::Value b, ::mlir::Value c, ::mlir::Value index, ::mlir::IntegerAttr reuseA, ::mlir::IntegerAttr reuseB = nullptr); static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::Type res, bool signA, ::mlir::Value a, bool signB, ::mlir::Value b, ::mlir::Value c, ::mlir::Value index, bool reuseA = 0, bool reuseB = 0); static swmmac_f16_16x16x64_f16 create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::Type res, bool signA, ::mlir::Value a, bool signB, ::mlir::Value b, ::mlir::Value c, ::mlir::Value index, bool reuseA = 0, bool reuseB = 0); static swmmac_f16_16x16x64_f16 create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::Type res, bool signA, ::mlir::Value a, bool signB, ::mlir::Value b, ::mlir::Value c, ::mlir::Value index, bool reuseA = 0, bool reuseB = 0); static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, bool signA, ::mlir::Value a, bool signB, ::mlir::Value b, ::mlir::Value c, ::mlir::Value index, bool reuseA = 0, bool reuseB = 0); static swmmac_f16_16x16x64_f16 create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, bool signA, ::mlir::Value a, bool signB, ::mlir::Value b, ::mlir::Value c, ::mlir::Value index, bool reuseA = 0, bool reuseB = 0); static swmmac_f16_16x16x64_f16 create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, bool signA, ::mlir::Value a, bool signB, ::mlir::Value b, ::mlir::Value c, ::mlir::Value index, bool reuseA = 0, bool reuseB = 0); static void build(::mlir::OpBuilder &, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, ::llvm::ArrayRef<::mlir::NamedAttribute> attributes = {}); static swmmac_f16_16x16x64_f16 create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, ::llvm::ArrayRef<::mlir::NamedAttribute> attributes = {}); static swmmac_f16_16x16x64_f16 create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, ::llvm::ArrayRef<::mlir::NamedAttribute> attributes = {}); static void build(::mlir::OpBuilder &, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, const Properties &properties, ::llvm::ArrayRef<::mlir::NamedAttribute> discardableAttributes = {}); static swmmac_f16_16x16x64_f16 create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, const Properties &properties, ::llvm::ArrayRef<::mlir::NamedAttribute> discardableAttributes = {}); static swmmac_f16_16x16x64_f16 create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, const Properties &properties, ::llvm::ArrayRef<::mlir::NamedAttribute> discardableAttributes = {}); static void populateDefaultProperties(::mlir::OperationName opName, Properties &properties); ::llvm::LogicalResult verifyInvariantsImpl(); ::llvm::LogicalResult verifyInvariants(); static ::mlir::ParseResult parse(::mlir::OpAsmParser &parser, ::mlir::OperationState &result); void print(::mlir::OpAsmPrinter &_odsPrinter); private: ::mlir::StringAttr getAttributeNameForIndex(unsigned index) { return getAttributeNameForIndex((*this)->getName(), index); } static ::mlir::StringAttr getAttributeNameForIndex(::mlir::OperationName name, unsigned index) { assert(index < 4 && "invalid attribute index"); assert(name.getStringRef() == getOperationName() && "invalid operation name"); assert(name.isRegistered() && "Operation isn't registered, missing a " "dependent dialect loading?"); return name.getAttributeNames()[index]; } public: }; } // namespace mlir::ROCDL MLIR_DECLARE_EXPLICIT_TYPE_ID(::mlir::ROCDL::swmmac_f16_16x16x64_f16) MLIR_DECLARE_EXPLICIT_TYPE_ID(::mlir::ROCDL::detail::swmmac_f16_16x16x64_f16GenericAdaptorBase::Properties) namespace mlir::ROCDL { //===----------------------------------------------------------------------===// // ::mlir::ROCDL::swmmac_f32_16x16x128_bf8_bf8 declarations //===----------------------------------------------------------------------===// namespace detail { class swmmac_f32_16x16x128_bf8_bf8GenericAdaptorBase { public: struct Properties { using reuseATy = ::mlir::IntegerAttr; reuseATy reuseA; auto getReuseA() const { auto &propStorage = this->reuseA; return ::llvm::dyn_cast_or_null<::mlir::IntegerAttr>(propStorage); } void setReuseA(const ::mlir::IntegerAttr &propValue) { this->reuseA = propValue; } using reuseBTy = ::mlir::IntegerAttr; reuseBTy reuseB; auto getReuseB() const { auto &propStorage = this->reuseB; return ::llvm::dyn_cast_or_null<::mlir::IntegerAttr>(propStorage); } void setReuseB(const ::mlir::IntegerAttr &propValue) { this->reuseB = propValue; } bool operator==(const Properties &rhs) const { return rhs.reuseA == this->reuseA && rhs.reuseB == this->reuseB && true; } bool operator!=(const Properties &rhs) const { return !(*this == rhs); } }; protected: ::mlir::DictionaryAttr odsAttrs; ::std::optional<::mlir::OperationName> odsOpName; Properties properties; ::mlir::RegionRange odsRegions; public: swmmac_f32_16x16x128_bf8_bf8GenericAdaptorBase(::mlir::DictionaryAttr attrs, const Properties &properties, ::mlir::RegionRange regions = {}) : odsAttrs(attrs), properties(properties), odsRegions(regions) { if (odsAttrs) odsOpName.emplace("rocdl.swmmac.f32.16x16x128.bf8.bf8", odsAttrs.getContext()); } swmmac_f32_16x16x128_bf8_bf8GenericAdaptorBase(swmmac_f32_16x16x128_bf8_bf8 op); std::pair getODSOperandIndexAndLength(unsigned index, unsigned odsOperandsSize) { return {index, 1}; } const Properties &getProperties() { return properties; } ::mlir::DictionaryAttr getAttributes() { return odsAttrs; } ::mlir::IntegerAttr getReuseAAttr(); bool getReuseA(); ::mlir::IntegerAttr getReuseBAttr(); bool getReuseB(); }; } // namespace detail template class swmmac_f32_16x16x128_bf8_bf8GenericAdaptor : public detail::swmmac_f32_16x16x128_bf8_bf8GenericAdaptorBase { using ValueT = ::llvm::detail::ValueOfRange; using Base = detail::swmmac_f32_16x16x128_bf8_bf8GenericAdaptorBase; static constexpr int odsIndex_a = 0; static constexpr int odsIndex_b = 1; static constexpr int odsIndex_c = 2; static constexpr int odsIndex_index = 3; public: swmmac_f32_16x16x128_bf8_bf8GenericAdaptor(RangeT values, ::mlir::DictionaryAttr attrs, const Properties &properties, ::mlir::RegionRange regions = {}) : Base(attrs, properties, regions), odsOperands(values) {} swmmac_f32_16x16x128_bf8_bf8GenericAdaptor(RangeT values, ::mlir::DictionaryAttr attrs, ::mlir::PropertyRef properties, ::mlir::RegionRange regions = {}) : swmmac_f32_16x16x128_bf8_bf8GenericAdaptor(values, attrs, (properties ? *properties.as() : Properties{}), regions) {} swmmac_f32_16x16x128_bf8_bf8GenericAdaptor(RangeT values, ::mlir::DictionaryAttr attrs = nullptr) : swmmac_f32_16x16x128_bf8_bf8GenericAdaptor(values, attrs, Properties{}, {}) {} swmmac_f32_16x16x128_bf8_bf8GenericAdaptor(RangeT values, const swmmac_f32_16x16x128_bf8_bf8GenericAdaptorBase &base) : Base(base), odsOperands(values) {} template >> swmmac_f32_16x16x128_bf8_bf8GenericAdaptor(RangeT values, LateInst op) : Base(op), odsOperands(values) {} std::pair getODSOperandIndexAndLength(unsigned index) { return Base::getODSOperandIndexAndLength(index, odsOperands.size()); } RangeT getODSOperands(unsigned index) { auto valueRange = getODSOperandIndexAndLength(index); return {std::next(odsOperands.begin(), valueRange.first), std::next(odsOperands.begin(), valueRange.first + valueRange.second)}; } ValueT getA() { return (*getODSOperands(0).begin()); } ValueT getB() { return (*getODSOperands(1).begin()); } ValueT getC() { return (*getODSOperands(2).begin()); } ValueT getIndex() { return (*getODSOperands(3).begin()); } RangeT getOperands() { return odsOperands; } private: RangeT odsOperands; }; class swmmac_f32_16x16x128_bf8_bf8Adaptor : public swmmac_f32_16x16x128_bf8_bf8GenericAdaptor<::mlir::ValueRange> { public: using swmmac_f32_16x16x128_bf8_bf8GenericAdaptor::swmmac_f32_16x16x128_bf8_bf8GenericAdaptor; swmmac_f32_16x16x128_bf8_bf8Adaptor(swmmac_f32_16x16x128_bf8_bf8 op); ::llvm::LogicalResult verify(::mlir::Location loc); }; class swmmac_f32_16x16x128_bf8_bf8 : public ::mlir::Op::Impl, ::mlir::OpTrait::ZeroSuccessors, ::mlir::OpTrait::NOperands<4>::Impl, ::mlir::OpTrait::OpInvariants, ::mlir::BytecodeOpInterface::Trait> { public: using Op::Op; using Op::print; using Adaptor = swmmac_f32_16x16x128_bf8_bf8Adaptor; template using GenericAdaptor = swmmac_f32_16x16x128_bf8_bf8GenericAdaptor; using FoldAdaptor = GenericAdaptor<::llvm::ArrayRef<::mlir::Attribute>>; static constexpr int odsIndex_a = 0; static constexpr int odsIndex_b = 1; static constexpr int odsIndex_c = 2; static constexpr int odsIndex_index = 3; using Properties = FoldAdaptor::Properties; static ::llvm::ArrayRef<::llvm::StringRef> getAttributeNames() { static ::llvm::StringRef attrNames[] = {::llvm::StringRef("reuseA"), ::llvm::StringRef("reuseB")}; return ::llvm::ArrayRef(attrNames); } ::mlir::StringAttr getReuseAAttrName() { return getAttributeNameForIndex(0); } static ::mlir::StringAttr getReuseAAttrName(::mlir::OperationName name) { return getAttributeNameForIndex(name, 0); } ::mlir::StringAttr getReuseBAttrName() { return getAttributeNameForIndex(1); } static ::mlir::StringAttr getReuseBAttrName(::mlir::OperationName name) { return getAttributeNameForIndex(name, 1); } static constexpr ::llvm::StringLiteral getOperationName() { return ::llvm::StringLiteral("rocdl.swmmac.f32.16x16x128.bf8.bf8"); } std::pair getODSOperandIndexAndLength(unsigned index) { return {index, 1}; } ::mlir::Operation::operand_range getODSOperands(unsigned index) { auto valueRange = getODSOperandIndexAndLength(index); return {std::next(getOperation()->operand_begin(), valueRange.first), std::next(getOperation()->operand_begin(), valueRange.first + valueRange.second)}; } ::mlir::TypedValue<::mlir::Type> getA() { return ::llvm::cast<::mlir::TypedValue<::mlir::Type>>(*getODSOperands(0).begin()); } ::mlir::TypedValue<::mlir::Type> getB() { return ::llvm::cast<::mlir::TypedValue<::mlir::Type>>(*getODSOperands(1).begin()); } ::mlir::TypedValue<::mlir::Type> getC() { return ::llvm::cast<::mlir::TypedValue<::mlir::Type>>(*getODSOperands(2).begin()); } ::mlir::TypedValue<::mlir::IntegerType> getIndex() { return ::llvm::cast<::mlir::TypedValue<::mlir::IntegerType>>(*getODSOperands(3).begin()); } ::mlir::OpOperand &getAMutable() { auto range = getODSOperandIndexAndLength(0); return getOperation()->getOpOperand(range.first); } ::mlir::OpOperand &getBMutable() { auto range = getODSOperandIndexAndLength(1); return getOperation()->getOpOperand(range.first); } ::mlir::OpOperand &getCMutable() { auto range = getODSOperandIndexAndLength(2); return getOperation()->getOpOperand(range.first); } ::mlir::OpOperand &getIndexMutable() { auto range = getODSOperandIndexAndLength(3); return getOperation()->getOpOperand(range.first); } std::pair getODSResultIndexAndLength(unsigned index) { return {index, 1}; } ::mlir::Operation::result_range getODSResults(unsigned index) { auto valueRange = getODSResultIndexAndLength(index); return {std::next(getOperation()->result_begin(), valueRange.first), std::next(getOperation()->result_begin(), valueRange.first + valueRange.second)}; } ::mlir::TypedValue<::mlir::Type> getRes() { return ::llvm::cast<::mlir::TypedValue<::mlir::Type>>(*getODSResults(0).begin()); } static ::llvm::LogicalResult setPropertiesFromAttr(Properties &prop, ::mlir::Attribute attr, ::llvm::function_ref<::mlir::InFlightDiagnostic()> emitError); static ::mlir::Attribute getPropertiesAsAttr(::mlir::MLIRContext *ctx, const Properties &prop); static llvm::hash_code computePropertiesHash(const Properties &prop); static std::optional getInherentAttr(::mlir::MLIRContext *ctx, const Properties &prop, llvm::StringRef name); static void setInherentAttr(Properties &prop, llvm::StringRef name, mlir::Attribute value); static void populateInherentAttrs(::mlir::MLIRContext *ctx, const Properties &prop, ::mlir::NamedAttrList &attrs); static ::llvm::LogicalResult verifyInherentAttrs(::mlir::OperationName opName, ::mlir::NamedAttrList &attrs, llvm::function_ref<::mlir::InFlightDiagnostic()> emitError); static ::llvm::LogicalResult readProperties(::mlir::DialectBytecodeReader &reader, ::mlir::OperationState &state); void writeProperties(::mlir::DialectBytecodeWriter &writer); ::mlir::IntegerAttr getReuseAAttr() { return ::llvm::dyn_cast_or_null<::mlir::IntegerAttr>(getProperties().reuseA); } bool getReuseA(); ::mlir::IntegerAttr getReuseBAttr() { return ::llvm::dyn_cast_or_null<::mlir::IntegerAttr>(getProperties().reuseB); } bool getReuseB(); void setReuseAAttr(::mlir::IntegerAttr attr) { getProperties().reuseA = attr; } void setReuseA(bool attrValue); void setReuseBAttr(::mlir::IntegerAttr attr) { getProperties().reuseB = attr; } void setReuseB(bool attrValue); static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::Type res, ::mlir::Value a, ::mlir::Value b, ::mlir::Value c, ::mlir::Value index, ::mlir::IntegerAttr reuseA, ::mlir::IntegerAttr reuseB = nullptr); static swmmac_f32_16x16x128_bf8_bf8 create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::Type res, ::mlir::Value a, ::mlir::Value b, ::mlir::Value c, ::mlir::Value index, ::mlir::IntegerAttr reuseA, ::mlir::IntegerAttr reuseB = nullptr); static swmmac_f32_16x16x128_bf8_bf8 create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::Type res, ::mlir::Value a, ::mlir::Value b, ::mlir::Value c, ::mlir::Value index, ::mlir::IntegerAttr reuseA, ::mlir::IntegerAttr reuseB = nullptr); static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::Value a, ::mlir::Value b, ::mlir::Value c, ::mlir::Value index, ::mlir::IntegerAttr reuseA, ::mlir::IntegerAttr reuseB = nullptr); static swmmac_f32_16x16x128_bf8_bf8 create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::Value a, ::mlir::Value b, ::mlir::Value c, ::mlir::Value index, ::mlir::IntegerAttr reuseA, ::mlir::IntegerAttr reuseB = nullptr); static swmmac_f32_16x16x128_bf8_bf8 create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::Value a, ::mlir::Value b, ::mlir::Value c, ::mlir::Value index, ::mlir::IntegerAttr reuseA, ::mlir::IntegerAttr reuseB = nullptr); static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::Type res, ::mlir::Value a, ::mlir::Value b, ::mlir::Value c, ::mlir::Value index, bool reuseA = 0, bool reuseB = 0); static swmmac_f32_16x16x128_bf8_bf8 create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::Type res, ::mlir::Value a, ::mlir::Value b, ::mlir::Value c, ::mlir::Value index, bool reuseA = 0, bool reuseB = 0); static swmmac_f32_16x16x128_bf8_bf8 create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::Type res, ::mlir::Value a, ::mlir::Value b, ::mlir::Value c, ::mlir::Value index, bool reuseA = 0, bool reuseB = 0); static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::Value a, ::mlir::Value b, ::mlir::Value c, ::mlir::Value index, bool reuseA = 0, bool reuseB = 0); static swmmac_f32_16x16x128_bf8_bf8 create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::Value a, ::mlir::Value b, ::mlir::Value c, ::mlir::Value index, bool reuseA = 0, bool reuseB = 0); static swmmac_f32_16x16x128_bf8_bf8 create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::Value a, ::mlir::Value b, ::mlir::Value c, ::mlir::Value index, bool reuseA = 0, bool reuseB = 0); static void build(::mlir::OpBuilder &, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, ::llvm::ArrayRef<::mlir::NamedAttribute> attributes = {}); static swmmac_f32_16x16x128_bf8_bf8 create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, ::llvm::ArrayRef<::mlir::NamedAttribute> attributes = {}); static swmmac_f32_16x16x128_bf8_bf8 create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, ::llvm::ArrayRef<::mlir::NamedAttribute> attributes = {}); static void build(::mlir::OpBuilder &, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, const Properties &properties, ::llvm::ArrayRef<::mlir::NamedAttribute> discardableAttributes = {}); static swmmac_f32_16x16x128_bf8_bf8 create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, const Properties &properties, ::llvm::ArrayRef<::mlir::NamedAttribute> discardableAttributes = {}); static swmmac_f32_16x16x128_bf8_bf8 create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, const Properties &properties, ::llvm::ArrayRef<::mlir::NamedAttribute> discardableAttributes = {}); static void populateDefaultProperties(::mlir::OperationName opName, Properties &properties); ::llvm::LogicalResult verifyInvariantsImpl(); ::llvm::LogicalResult verifyInvariants(); static ::mlir::ParseResult parse(::mlir::OpAsmParser &parser, ::mlir::OperationState &result); void print(::mlir::OpAsmPrinter &_odsPrinter); private: ::mlir::StringAttr getAttributeNameForIndex(unsigned index) { return getAttributeNameForIndex((*this)->getName(), index); } static ::mlir::StringAttr getAttributeNameForIndex(::mlir::OperationName name, unsigned index) { assert(index < 2 && "invalid attribute index"); assert(name.getStringRef() == getOperationName() && "invalid operation name"); assert(name.isRegistered() && "Operation isn't registered, missing a " "dependent dialect loading?"); return name.getAttributeNames()[index]; } public: }; } // namespace mlir::ROCDL MLIR_DECLARE_EXPLICIT_TYPE_ID(::mlir::ROCDL::swmmac_f32_16x16x128_bf8_bf8) MLIR_DECLARE_EXPLICIT_TYPE_ID(::mlir::ROCDL::detail::swmmac_f32_16x16x128_bf8_bf8GenericAdaptorBase::Properties) namespace mlir::ROCDL { //===----------------------------------------------------------------------===// // ::mlir::ROCDL::swmmac_f32_16x16x128_bf8_fp8 declarations //===----------------------------------------------------------------------===// namespace detail { class swmmac_f32_16x16x128_bf8_fp8GenericAdaptorBase { public: struct Properties { using reuseATy = ::mlir::IntegerAttr; reuseATy reuseA; auto getReuseA() const { auto &propStorage = this->reuseA; return ::llvm::dyn_cast_or_null<::mlir::IntegerAttr>(propStorage); } void setReuseA(const ::mlir::IntegerAttr &propValue) { this->reuseA = propValue; } using reuseBTy = ::mlir::IntegerAttr; reuseBTy reuseB; auto getReuseB() const { auto &propStorage = this->reuseB; return ::llvm::dyn_cast_or_null<::mlir::IntegerAttr>(propStorage); } void setReuseB(const ::mlir::IntegerAttr &propValue) { this->reuseB = propValue; } bool operator==(const Properties &rhs) const { return rhs.reuseA == this->reuseA && rhs.reuseB == this->reuseB && true; } bool operator!=(const Properties &rhs) const { return !(*this == rhs); } }; protected: ::mlir::DictionaryAttr odsAttrs; ::std::optional<::mlir::OperationName> odsOpName; Properties properties; ::mlir::RegionRange odsRegions; public: swmmac_f32_16x16x128_bf8_fp8GenericAdaptorBase(::mlir::DictionaryAttr attrs, const Properties &properties, ::mlir::RegionRange regions = {}) : odsAttrs(attrs), properties(properties), odsRegions(regions) { if (odsAttrs) odsOpName.emplace("rocdl.swmmac.f32.16x16x128.bf8.fp8", odsAttrs.getContext()); } swmmac_f32_16x16x128_bf8_fp8GenericAdaptorBase(swmmac_f32_16x16x128_bf8_fp8 op); std::pair getODSOperandIndexAndLength(unsigned index, unsigned odsOperandsSize) { return {index, 1}; } const Properties &getProperties() { return properties; } ::mlir::DictionaryAttr getAttributes() { return odsAttrs; } ::mlir::IntegerAttr getReuseAAttr(); bool getReuseA(); ::mlir::IntegerAttr getReuseBAttr(); bool getReuseB(); }; } // namespace detail template class swmmac_f32_16x16x128_bf8_fp8GenericAdaptor : public detail::swmmac_f32_16x16x128_bf8_fp8GenericAdaptorBase { using ValueT = ::llvm::detail::ValueOfRange; using Base = detail::swmmac_f32_16x16x128_bf8_fp8GenericAdaptorBase; static constexpr int odsIndex_a = 0; static constexpr int odsIndex_b = 1; static constexpr int odsIndex_c = 2; static constexpr int odsIndex_index = 3; public: swmmac_f32_16x16x128_bf8_fp8GenericAdaptor(RangeT values, ::mlir::DictionaryAttr attrs, const Properties &properties, ::mlir::RegionRange regions = {}) : Base(attrs, properties, regions), odsOperands(values) {} swmmac_f32_16x16x128_bf8_fp8GenericAdaptor(RangeT values, ::mlir::DictionaryAttr attrs, ::mlir::PropertyRef properties, ::mlir::RegionRange regions = {}) : swmmac_f32_16x16x128_bf8_fp8GenericAdaptor(values, attrs, (properties ? *properties.as() : Properties{}), regions) {} swmmac_f32_16x16x128_bf8_fp8GenericAdaptor(RangeT values, ::mlir::DictionaryAttr attrs = nullptr) : swmmac_f32_16x16x128_bf8_fp8GenericAdaptor(values, attrs, Properties{}, {}) {} swmmac_f32_16x16x128_bf8_fp8GenericAdaptor(RangeT values, const swmmac_f32_16x16x128_bf8_fp8GenericAdaptorBase &base) : Base(base), odsOperands(values) {} template >> swmmac_f32_16x16x128_bf8_fp8GenericAdaptor(RangeT values, LateInst op) : Base(op), odsOperands(values) {} std::pair getODSOperandIndexAndLength(unsigned index) { return Base::getODSOperandIndexAndLength(index, odsOperands.size()); } RangeT getODSOperands(unsigned index) { auto valueRange = getODSOperandIndexAndLength(index); return {std::next(odsOperands.begin(), valueRange.first), std::next(odsOperands.begin(), valueRange.first + valueRange.second)}; } ValueT getA() { return (*getODSOperands(0).begin()); } ValueT getB() { return (*getODSOperands(1).begin()); } ValueT getC() { return (*getODSOperands(2).begin()); } ValueT getIndex() { return (*getODSOperands(3).begin()); } RangeT getOperands() { return odsOperands; } private: RangeT odsOperands; }; class swmmac_f32_16x16x128_bf8_fp8Adaptor : public swmmac_f32_16x16x128_bf8_fp8GenericAdaptor<::mlir::ValueRange> { public: using swmmac_f32_16x16x128_bf8_fp8GenericAdaptor::swmmac_f32_16x16x128_bf8_fp8GenericAdaptor; swmmac_f32_16x16x128_bf8_fp8Adaptor(swmmac_f32_16x16x128_bf8_fp8 op); ::llvm::LogicalResult verify(::mlir::Location loc); }; class swmmac_f32_16x16x128_bf8_fp8 : public ::mlir::Op::Impl, ::mlir::OpTrait::ZeroSuccessors, ::mlir::OpTrait::NOperands<4>::Impl, ::mlir::OpTrait::OpInvariants, ::mlir::BytecodeOpInterface::Trait> { public: using Op::Op; using Op::print; using Adaptor = swmmac_f32_16x16x128_bf8_fp8Adaptor; template using GenericAdaptor = swmmac_f32_16x16x128_bf8_fp8GenericAdaptor; using FoldAdaptor = GenericAdaptor<::llvm::ArrayRef<::mlir::Attribute>>; static constexpr int odsIndex_a = 0; static constexpr int odsIndex_b = 1; static constexpr int odsIndex_c = 2; static constexpr int odsIndex_index = 3; using Properties = FoldAdaptor::Properties; static ::llvm::ArrayRef<::llvm::StringRef> getAttributeNames() { static ::llvm::StringRef attrNames[] = {::llvm::StringRef("reuseA"), ::llvm::StringRef("reuseB")}; return ::llvm::ArrayRef(attrNames); } ::mlir::StringAttr getReuseAAttrName() { return getAttributeNameForIndex(0); } static ::mlir::StringAttr getReuseAAttrName(::mlir::OperationName name) { return getAttributeNameForIndex(name, 0); } ::mlir::StringAttr getReuseBAttrName() { return getAttributeNameForIndex(1); } static ::mlir::StringAttr getReuseBAttrName(::mlir::OperationName name) { return getAttributeNameForIndex(name, 1); } static constexpr ::llvm::StringLiteral getOperationName() { return ::llvm::StringLiteral("rocdl.swmmac.f32.16x16x128.bf8.fp8"); } std::pair getODSOperandIndexAndLength(unsigned index) { return {index, 1}; } ::mlir::Operation::operand_range getODSOperands(unsigned index) { auto valueRange = getODSOperandIndexAndLength(index); return {std::next(getOperation()->operand_begin(), valueRange.first), std::next(getOperation()->operand_begin(), valueRange.first + valueRange.second)}; } ::mlir::TypedValue<::mlir::Type> getA() { return ::llvm::cast<::mlir::TypedValue<::mlir::Type>>(*getODSOperands(0).begin()); } ::mlir::TypedValue<::mlir::Type> getB() { return ::llvm::cast<::mlir::TypedValue<::mlir::Type>>(*getODSOperands(1).begin()); } ::mlir::TypedValue<::mlir::Type> getC() { return ::llvm::cast<::mlir::TypedValue<::mlir::Type>>(*getODSOperands(2).begin()); } ::mlir::TypedValue<::mlir::IntegerType> getIndex() { return ::llvm::cast<::mlir::TypedValue<::mlir::IntegerType>>(*getODSOperands(3).begin()); } ::mlir::OpOperand &getAMutable() { auto range = getODSOperandIndexAndLength(0); return getOperation()->getOpOperand(range.first); } ::mlir::OpOperand &getBMutable() { auto range = getODSOperandIndexAndLength(1); return getOperation()->getOpOperand(range.first); } ::mlir::OpOperand &getCMutable() { auto range = getODSOperandIndexAndLength(2); return getOperation()->getOpOperand(range.first); } ::mlir::OpOperand &getIndexMutable() { auto range = getODSOperandIndexAndLength(3); return getOperation()->getOpOperand(range.first); } std::pair getODSResultIndexAndLength(unsigned index) { return {index, 1}; } ::mlir::Operation::result_range getODSResults(unsigned index) { auto valueRange = getODSResultIndexAndLength(index); return {std::next(getOperation()->result_begin(), valueRange.first), std::next(getOperation()->result_begin(), valueRange.first + valueRange.second)}; } ::mlir::TypedValue<::mlir::Type> getRes() { return ::llvm::cast<::mlir::TypedValue<::mlir::Type>>(*getODSResults(0).begin()); } static ::llvm::LogicalResult setPropertiesFromAttr(Properties &prop, ::mlir::Attribute attr, ::llvm::function_ref<::mlir::InFlightDiagnostic()> emitError); static ::mlir::Attribute getPropertiesAsAttr(::mlir::MLIRContext *ctx, const Properties &prop); static llvm::hash_code computePropertiesHash(const Properties &prop); static std::optional getInherentAttr(::mlir::MLIRContext *ctx, const Properties &prop, llvm::StringRef name); static void setInherentAttr(Properties &prop, llvm::StringRef name, mlir::Attribute value); static void populateInherentAttrs(::mlir::MLIRContext *ctx, const Properties &prop, ::mlir::NamedAttrList &attrs); static ::llvm::LogicalResult verifyInherentAttrs(::mlir::OperationName opName, ::mlir::NamedAttrList &attrs, llvm::function_ref<::mlir::InFlightDiagnostic()> emitError); static ::llvm::LogicalResult readProperties(::mlir::DialectBytecodeReader &reader, ::mlir::OperationState &state); void writeProperties(::mlir::DialectBytecodeWriter &writer); ::mlir::IntegerAttr getReuseAAttr() { return ::llvm::dyn_cast_or_null<::mlir::IntegerAttr>(getProperties().reuseA); } bool getReuseA(); ::mlir::IntegerAttr getReuseBAttr() { return ::llvm::dyn_cast_or_null<::mlir::IntegerAttr>(getProperties().reuseB); } bool getReuseB(); void setReuseAAttr(::mlir::IntegerAttr attr) { getProperties().reuseA = attr; } void setReuseA(bool attrValue); void setReuseBAttr(::mlir::IntegerAttr attr) { getProperties().reuseB = attr; } void setReuseB(bool attrValue); static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::Type res, ::mlir::Value a, ::mlir::Value b, ::mlir::Value c, ::mlir::Value index, ::mlir::IntegerAttr reuseA, ::mlir::IntegerAttr reuseB = nullptr); static swmmac_f32_16x16x128_bf8_fp8 create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::Type res, ::mlir::Value a, ::mlir::Value b, ::mlir::Value c, ::mlir::Value index, ::mlir::IntegerAttr reuseA, ::mlir::IntegerAttr reuseB = nullptr); static swmmac_f32_16x16x128_bf8_fp8 create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::Type res, ::mlir::Value a, ::mlir::Value b, ::mlir::Value c, ::mlir::Value index, ::mlir::IntegerAttr reuseA, ::mlir::IntegerAttr reuseB = nullptr); static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::Value a, ::mlir::Value b, ::mlir::Value c, ::mlir::Value index, ::mlir::IntegerAttr reuseA, ::mlir::IntegerAttr reuseB = nullptr); static swmmac_f32_16x16x128_bf8_fp8 create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::Value a, ::mlir::Value b, ::mlir::Value c, ::mlir::Value index, ::mlir::IntegerAttr reuseA, ::mlir::IntegerAttr reuseB = nullptr); static swmmac_f32_16x16x128_bf8_fp8 create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::Value a, ::mlir::Value b, ::mlir::Value c, ::mlir::Value index, ::mlir::IntegerAttr reuseA, ::mlir::IntegerAttr reuseB = nullptr); static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::Type res, ::mlir::Value a, ::mlir::Value b, ::mlir::Value c, ::mlir::Value index, bool reuseA = 0, bool reuseB = 0); static swmmac_f32_16x16x128_bf8_fp8 create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::Type res, ::mlir::Value a, ::mlir::Value b, ::mlir::Value c, ::mlir::Value index, bool reuseA = 0, bool reuseB = 0); static swmmac_f32_16x16x128_bf8_fp8 create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::Type res, ::mlir::Value a, ::mlir::Value b, ::mlir::Value c, ::mlir::Value index, bool reuseA = 0, bool reuseB = 0); static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::Value a, ::mlir::Value b, ::mlir::Value c, ::mlir::Value index, bool reuseA = 0, bool reuseB = 0); static swmmac_f32_16x16x128_bf8_fp8 create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::Value a, ::mlir::Value b, ::mlir::Value c, ::mlir::Value index, bool reuseA = 0, bool reuseB = 0); static swmmac_f32_16x16x128_bf8_fp8 create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::Value a, ::mlir::Value b, ::mlir::Value c, ::mlir::Value index, bool reuseA = 0, bool reuseB = 0); static void build(::mlir::OpBuilder &, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, ::llvm::ArrayRef<::mlir::NamedAttribute> attributes = {}); static swmmac_f32_16x16x128_bf8_fp8 create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, ::llvm::ArrayRef<::mlir::NamedAttribute> attributes = {}); static swmmac_f32_16x16x128_bf8_fp8 create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, ::llvm::ArrayRef<::mlir::NamedAttribute> attributes = {}); static void build(::mlir::OpBuilder &, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, const Properties &properties, ::llvm::ArrayRef<::mlir::NamedAttribute> discardableAttributes = {}); static swmmac_f32_16x16x128_bf8_fp8 create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, const Properties &properties, ::llvm::ArrayRef<::mlir::NamedAttribute> discardableAttributes = {}); static swmmac_f32_16x16x128_bf8_fp8 create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, const Properties &properties, ::llvm::ArrayRef<::mlir::NamedAttribute> discardableAttributes = {}); static void populateDefaultProperties(::mlir::OperationName opName, Properties &properties); ::llvm::LogicalResult verifyInvariantsImpl(); ::llvm::LogicalResult verifyInvariants(); static ::mlir::ParseResult parse(::mlir::OpAsmParser &parser, ::mlir::OperationState &result); void print(::mlir::OpAsmPrinter &_odsPrinter); private: ::mlir::StringAttr getAttributeNameForIndex(unsigned index) { return getAttributeNameForIndex((*this)->getName(), index); } static ::mlir::StringAttr getAttributeNameForIndex(::mlir::OperationName name, unsigned index) { assert(index < 2 && "invalid attribute index"); assert(name.getStringRef() == getOperationName() && "invalid operation name"); assert(name.isRegistered() && "Operation isn't registered, missing a " "dependent dialect loading?"); return name.getAttributeNames()[index]; } public: }; } // namespace mlir::ROCDL MLIR_DECLARE_EXPLICIT_TYPE_ID(::mlir::ROCDL::swmmac_f32_16x16x128_bf8_fp8) MLIR_DECLARE_EXPLICIT_TYPE_ID(::mlir::ROCDL::detail::swmmac_f32_16x16x128_bf8_fp8GenericAdaptorBase::Properties) namespace mlir::ROCDL { //===----------------------------------------------------------------------===// // ::mlir::ROCDL::swmmac_f32_16x16x128_fp8_bf8 declarations //===----------------------------------------------------------------------===// namespace detail { class swmmac_f32_16x16x128_fp8_bf8GenericAdaptorBase { public: struct Properties { using reuseATy = ::mlir::IntegerAttr; reuseATy reuseA; auto getReuseA() const { auto &propStorage = this->reuseA; return ::llvm::dyn_cast_or_null<::mlir::IntegerAttr>(propStorage); } void setReuseA(const ::mlir::IntegerAttr &propValue) { this->reuseA = propValue; } using reuseBTy = ::mlir::IntegerAttr; reuseBTy reuseB; auto getReuseB() const { auto &propStorage = this->reuseB; return ::llvm::dyn_cast_or_null<::mlir::IntegerAttr>(propStorage); } void setReuseB(const ::mlir::IntegerAttr &propValue) { this->reuseB = propValue; } bool operator==(const Properties &rhs) const { return rhs.reuseA == this->reuseA && rhs.reuseB == this->reuseB && true; } bool operator!=(const Properties &rhs) const { return !(*this == rhs); } }; protected: ::mlir::DictionaryAttr odsAttrs; ::std::optional<::mlir::OperationName> odsOpName; Properties properties; ::mlir::RegionRange odsRegions; public: swmmac_f32_16x16x128_fp8_bf8GenericAdaptorBase(::mlir::DictionaryAttr attrs, const Properties &properties, ::mlir::RegionRange regions = {}) : odsAttrs(attrs), properties(properties), odsRegions(regions) { if (odsAttrs) odsOpName.emplace("rocdl.swmmac.f32.16x16x128.fp8.bf8", odsAttrs.getContext()); } swmmac_f32_16x16x128_fp8_bf8GenericAdaptorBase(swmmac_f32_16x16x128_fp8_bf8 op); std::pair getODSOperandIndexAndLength(unsigned index, unsigned odsOperandsSize) { return {index, 1}; } const Properties &getProperties() { return properties; } ::mlir::DictionaryAttr getAttributes() { return odsAttrs; } ::mlir::IntegerAttr getReuseAAttr(); bool getReuseA(); ::mlir::IntegerAttr getReuseBAttr(); bool getReuseB(); }; } // namespace detail template class swmmac_f32_16x16x128_fp8_bf8GenericAdaptor : public detail::swmmac_f32_16x16x128_fp8_bf8GenericAdaptorBase { using ValueT = ::llvm::detail::ValueOfRange; using Base = detail::swmmac_f32_16x16x128_fp8_bf8GenericAdaptorBase; static constexpr int odsIndex_a = 0; static constexpr int odsIndex_b = 1; static constexpr int odsIndex_c = 2; static constexpr int odsIndex_index = 3; public: swmmac_f32_16x16x128_fp8_bf8GenericAdaptor(RangeT values, ::mlir::DictionaryAttr attrs, const Properties &properties, ::mlir::RegionRange regions = {}) : Base(attrs, properties, regions), odsOperands(values) {} swmmac_f32_16x16x128_fp8_bf8GenericAdaptor(RangeT values, ::mlir::DictionaryAttr attrs, ::mlir::PropertyRef properties, ::mlir::RegionRange regions = {}) : swmmac_f32_16x16x128_fp8_bf8GenericAdaptor(values, attrs, (properties ? *properties.as() : Properties{}), regions) {} swmmac_f32_16x16x128_fp8_bf8GenericAdaptor(RangeT values, ::mlir::DictionaryAttr attrs = nullptr) : swmmac_f32_16x16x128_fp8_bf8GenericAdaptor(values, attrs, Properties{}, {}) {} swmmac_f32_16x16x128_fp8_bf8GenericAdaptor(RangeT values, const swmmac_f32_16x16x128_fp8_bf8GenericAdaptorBase &base) : Base(base), odsOperands(values) {} template >> swmmac_f32_16x16x128_fp8_bf8GenericAdaptor(RangeT values, LateInst op) : Base(op), odsOperands(values) {} std::pair getODSOperandIndexAndLength(unsigned index) { return Base::getODSOperandIndexAndLength(index, odsOperands.size()); } RangeT getODSOperands(unsigned index) { auto valueRange = getODSOperandIndexAndLength(index); return {std::next(odsOperands.begin(), valueRange.first), std::next(odsOperands.begin(), valueRange.first + valueRange.second)}; } ValueT getA() { return (*getODSOperands(0).begin()); } ValueT getB() { return (*getODSOperands(1).begin()); } ValueT getC() { return (*getODSOperands(2).begin()); } ValueT getIndex() { return (*getODSOperands(3).begin()); } RangeT getOperands() { return odsOperands; } private: RangeT odsOperands; }; class swmmac_f32_16x16x128_fp8_bf8Adaptor : public swmmac_f32_16x16x128_fp8_bf8GenericAdaptor<::mlir::ValueRange> { public: using swmmac_f32_16x16x128_fp8_bf8GenericAdaptor::swmmac_f32_16x16x128_fp8_bf8GenericAdaptor; swmmac_f32_16x16x128_fp8_bf8Adaptor(swmmac_f32_16x16x128_fp8_bf8 op); ::llvm::LogicalResult verify(::mlir::Location loc); }; class swmmac_f32_16x16x128_fp8_bf8 : public ::mlir::Op::Impl, ::mlir::OpTrait::ZeroSuccessors, ::mlir::OpTrait::NOperands<4>::Impl, ::mlir::OpTrait::OpInvariants, ::mlir::BytecodeOpInterface::Trait> { public: using Op::Op; using Op::print; using Adaptor = swmmac_f32_16x16x128_fp8_bf8Adaptor; template using GenericAdaptor = swmmac_f32_16x16x128_fp8_bf8GenericAdaptor; using FoldAdaptor = GenericAdaptor<::llvm::ArrayRef<::mlir::Attribute>>; static constexpr int odsIndex_a = 0; static constexpr int odsIndex_b = 1; static constexpr int odsIndex_c = 2; static constexpr int odsIndex_index = 3; using Properties = FoldAdaptor::Properties; static ::llvm::ArrayRef<::llvm::StringRef> getAttributeNames() { static ::llvm::StringRef attrNames[] = {::llvm::StringRef("reuseA"), ::llvm::StringRef("reuseB")}; return ::llvm::ArrayRef(attrNames); } ::mlir::StringAttr getReuseAAttrName() { return getAttributeNameForIndex(0); } static ::mlir::StringAttr getReuseAAttrName(::mlir::OperationName name) { return getAttributeNameForIndex(name, 0); } ::mlir::StringAttr getReuseBAttrName() { return getAttributeNameForIndex(1); } static ::mlir::StringAttr getReuseBAttrName(::mlir::OperationName name) { return getAttributeNameForIndex(name, 1); } static constexpr ::llvm::StringLiteral getOperationName() { return ::llvm::StringLiteral("rocdl.swmmac.f32.16x16x128.fp8.bf8"); } std::pair getODSOperandIndexAndLength(unsigned index) { return {index, 1}; } ::mlir::Operation::operand_range getODSOperands(unsigned index) { auto valueRange = getODSOperandIndexAndLength(index); return {std::next(getOperation()->operand_begin(), valueRange.first), std::next(getOperation()->operand_begin(), valueRange.first + valueRange.second)}; } ::mlir::TypedValue<::mlir::Type> getA() { return ::llvm::cast<::mlir::TypedValue<::mlir::Type>>(*getODSOperands(0).begin()); } ::mlir::TypedValue<::mlir::Type> getB() { return ::llvm::cast<::mlir::TypedValue<::mlir::Type>>(*getODSOperands(1).begin()); } ::mlir::TypedValue<::mlir::Type> getC() { return ::llvm::cast<::mlir::TypedValue<::mlir::Type>>(*getODSOperands(2).begin()); } ::mlir::TypedValue<::mlir::IntegerType> getIndex() { return ::llvm::cast<::mlir::TypedValue<::mlir::IntegerType>>(*getODSOperands(3).begin()); } ::mlir::OpOperand &getAMutable() { auto range = getODSOperandIndexAndLength(0); return getOperation()->getOpOperand(range.first); } ::mlir::OpOperand &getBMutable() { auto range = getODSOperandIndexAndLength(1); return getOperation()->getOpOperand(range.first); } ::mlir::OpOperand &getCMutable() { auto range = getODSOperandIndexAndLength(2); return getOperation()->getOpOperand(range.first); } ::mlir::OpOperand &getIndexMutable() { auto range = getODSOperandIndexAndLength(3); return getOperation()->getOpOperand(range.first); } std::pair getODSResultIndexAndLength(unsigned index) { return {index, 1}; } ::mlir::Operation::result_range getODSResults(unsigned index) { auto valueRange = getODSResultIndexAndLength(index); return {std::next(getOperation()->result_begin(), valueRange.first), std::next(getOperation()->result_begin(), valueRange.first + valueRange.second)}; } ::mlir::TypedValue<::mlir::Type> getRes() { return ::llvm::cast<::mlir::TypedValue<::mlir::Type>>(*getODSResults(0).begin()); } static ::llvm::LogicalResult setPropertiesFromAttr(Properties &prop, ::mlir::Attribute attr, ::llvm::function_ref<::mlir::InFlightDiagnostic()> emitError); static ::mlir::Attribute getPropertiesAsAttr(::mlir::MLIRContext *ctx, const Properties &prop); static llvm::hash_code computePropertiesHash(const Properties &prop); static std::optional getInherentAttr(::mlir::MLIRContext *ctx, const Properties &prop, llvm::StringRef name); static void setInherentAttr(Properties &prop, llvm::StringRef name, mlir::Attribute value); static void populateInherentAttrs(::mlir::MLIRContext *ctx, const Properties &prop, ::mlir::NamedAttrList &attrs); static ::llvm::LogicalResult verifyInherentAttrs(::mlir::OperationName opName, ::mlir::NamedAttrList &attrs, llvm::function_ref<::mlir::InFlightDiagnostic()> emitError); static ::llvm::LogicalResult readProperties(::mlir::DialectBytecodeReader &reader, ::mlir::OperationState &state); void writeProperties(::mlir::DialectBytecodeWriter &writer); ::mlir::IntegerAttr getReuseAAttr() { return ::llvm::dyn_cast_or_null<::mlir::IntegerAttr>(getProperties().reuseA); } bool getReuseA(); ::mlir::IntegerAttr getReuseBAttr() { return ::llvm::dyn_cast_or_null<::mlir::IntegerAttr>(getProperties().reuseB); } bool getReuseB(); void setReuseAAttr(::mlir::IntegerAttr attr) { getProperties().reuseA = attr; } void setReuseA(bool attrValue); void setReuseBAttr(::mlir::IntegerAttr attr) { getProperties().reuseB = attr; } void setReuseB(bool attrValue); static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::Type res, ::mlir::Value a, ::mlir::Value b, ::mlir::Value c, ::mlir::Value index, ::mlir::IntegerAttr reuseA, ::mlir::IntegerAttr reuseB = nullptr); static swmmac_f32_16x16x128_fp8_bf8 create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::Type res, ::mlir::Value a, ::mlir::Value b, ::mlir::Value c, ::mlir::Value index, ::mlir::IntegerAttr reuseA, ::mlir::IntegerAttr reuseB = nullptr); static swmmac_f32_16x16x128_fp8_bf8 create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::Type res, ::mlir::Value a, ::mlir::Value b, ::mlir::Value c, ::mlir::Value index, ::mlir::IntegerAttr reuseA, ::mlir::IntegerAttr reuseB = nullptr); static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::Value a, ::mlir::Value b, ::mlir::Value c, ::mlir::Value index, ::mlir::IntegerAttr reuseA, ::mlir::IntegerAttr reuseB = nullptr); static swmmac_f32_16x16x128_fp8_bf8 create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::Value a, ::mlir::Value b, ::mlir::Value c, ::mlir::Value index, ::mlir::IntegerAttr reuseA, ::mlir::IntegerAttr reuseB = nullptr); static swmmac_f32_16x16x128_fp8_bf8 create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::Value a, ::mlir::Value b, ::mlir::Value c, ::mlir::Value index, ::mlir::IntegerAttr reuseA, ::mlir::IntegerAttr reuseB = nullptr); static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::Type res, ::mlir::Value a, ::mlir::Value b, ::mlir::Value c, ::mlir::Value index, bool reuseA = 0, bool reuseB = 0); static swmmac_f32_16x16x128_fp8_bf8 create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::Type res, ::mlir::Value a, ::mlir::Value b, ::mlir::Value c, ::mlir::Value index, bool reuseA = 0, bool reuseB = 0); static swmmac_f32_16x16x128_fp8_bf8 create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::Type res, ::mlir::Value a, ::mlir::Value b, ::mlir::Value c, ::mlir::Value index, bool reuseA = 0, bool reuseB = 0); static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::Value a, ::mlir::Value b, ::mlir::Value c, ::mlir::Value index, bool reuseA = 0, bool reuseB = 0); static swmmac_f32_16x16x128_fp8_bf8 create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::Value a, ::mlir::Value b, ::mlir::Value c, ::mlir::Value index, bool reuseA = 0, bool reuseB = 0); static swmmac_f32_16x16x128_fp8_bf8 create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::Value a, ::mlir::Value b, ::mlir::Value c, ::mlir::Value index, bool reuseA = 0, bool reuseB = 0); static void build(::mlir::OpBuilder &, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, ::llvm::ArrayRef<::mlir::NamedAttribute> attributes = {}); static swmmac_f32_16x16x128_fp8_bf8 create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, ::llvm::ArrayRef<::mlir::NamedAttribute> attributes = {}); static swmmac_f32_16x16x128_fp8_bf8 create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, ::llvm::ArrayRef<::mlir::NamedAttribute> attributes = {}); static void build(::mlir::OpBuilder &, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, const Properties &properties, ::llvm::ArrayRef<::mlir::NamedAttribute> discardableAttributes = {}); static swmmac_f32_16x16x128_fp8_bf8 create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, const Properties &properties, ::llvm::ArrayRef<::mlir::NamedAttribute> discardableAttributes = {}); static swmmac_f32_16x16x128_fp8_bf8 create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, const Properties &properties, ::llvm::ArrayRef<::mlir::NamedAttribute> discardableAttributes = {}); static void populateDefaultProperties(::mlir::OperationName opName, Properties &properties); ::llvm::LogicalResult verifyInvariantsImpl(); ::llvm::LogicalResult verifyInvariants(); static ::mlir::ParseResult parse(::mlir::OpAsmParser &parser, ::mlir::OperationState &result); void print(::mlir::OpAsmPrinter &_odsPrinter); private: ::mlir::StringAttr getAttributeNameForIndex(unsigned index) { return getAttributeNameForIndex((*this)->getName(), index); } static ::mlir::StringAttr getAttributeNameForIndex(::mlir::OperationName name, unsigned index) { assert(index < 2 && "invalid attribute index"); assert(name.getStringRef() == getOperationName() && "invalid operation name"); assert(name.isRegistered() && "Operation isn't registered, missing a " "dependent dialect loading?"); return name.getAttributeNames()[index]; } public: }; } // namespace mlir::ROCDL MLIR_DECLARE_EXPLICIT_TYPE_ID(::mlir::ROCDL::swmmac_f32_16x16x128_fp8_bf8) MLIR_DECLARE_EXPLICIT_TYPE_ID(::mlir::ROCDL::detail::swmmac_f32_16x16x128_fp8_bf8GenericAdaptorBase::Properties) namespace mlir::ROCDL { //===----------------------------------------------------------------------===// // ::mlir::ROCDL::swmmac_f32_16x16x128_fp8_fp8 declarations //===----------------------------------------------------------------------===// namespace detail { class swmmac_f32_16x16x128_fp8_fp8GenericAdaptorBase { public: struct Properties { using reuseATy = ::mlir::IntegerAttr; reuseATy reuseA; auto getReuseA() const { auto &propStorage = this->reuseA; return ::llvm::dyn_cast_or_null<::mlir::IntegerAttr>(propStorage); } void setReuseA(const ::mlir::IntegerAttr &propValue) { this->reuseA = propValue; } using reuseBTy = ::mlir::IntegerAttr; reuseBTy reuseB; auto getReuseB() const { auto &propStorage = this->reuseB; return ::llvm::dyn_cast_or_null<::mlir::IntegerAttr>(propStorage); } void setReuseB(const ::mlir::IntegerAttr &propValue) { this->reuseB = propValue; } bool operator==(const Properties &rhs) const { return rhs.reuseA == this->reuseA && rhs.reuseB == this->reuseB && true; } bool operator!=(const Properties &rhs) const { return !(*this == rhs); } }; protected: ::mlir::DictionaryAttr odsAttrs; ::std::optional<::mlir::OperationName> odsOpName; Properties properties; ::mlir::RegionRange odsRegions; public: swmmac_f32_16x16x128_fp8_fp8GenericAdaptorBase(::mlir::DictionaryAttr attrs, const Properties &properties, ::mlir::RegionRange regions = {}) : odsAttrs(attrs), properties(properties), odsRegions(regions) { if (odsAttrs) odsOpName.emplace("rocdl.swmmac.f32.16x16x128.fp8.fp8", odsAttrs.getContext()); } swmmac_f32_16x16x128_fp8_fp8GenericAdaptorBase(swmmac_f32_16x16x128_fp8_fp8 op); std::pair getODSOperandIndexAndLength(unsigned index, unsigned odsOperandsSize) { return {index, 1}; } const Properties &getProperties() { return properties; } ::mlir::DictionaryAttr getAttributes() { return odsAttrs; } ::mlir::IntegerAttr getReuseAAttr(); bool getReuseA(); ::mlir::IntegerAttr getReuseBAttr(); bool getReuseB(); }; } // namespace detail template class swmmac_f32_16x16x128_fp8_fp8GenericAdaptor : public detail::swmmac_f32_16x16x128_fp8_fp8GenericAdaptorBase { using ValueT = ::llvm::detail::ValueOfRange; using Base = detail::swmmac_f32_16x16x128_fp8_fp8GenericAdaptorBase; static constexpr int odsIndex_a = 0; static constexpr int odsIndex_b = 1; static constexpr int odsIndex_c = 2; static constexpr int odsIndex_index = 3; public: swmmac_f32_16x16x128_fp8_fp8GenericAdaptor(RangeT values, ::mlir::DictionaryAttr attrs, const Properties &properties, ::mlir::RegionRange regions = {}) : Base(attrs, properties, regions), odsOperands(values) {} swmmac_f32_16x16x128_fp8_fp8GenericAdaptor(RangeT values, ::mlir::DictionaryAttr attrs, ::mlir::PropertyRef properties, ::mlir::RegionRange regions = {}) : swmmac_f32_16x16x128_fp8_fp8GenericAdaptor(values, attrs, (properties ? *properties.as() : Properties{}), regions) {} swmmac_f32_16x16x128_fp8_fp8GenericAdaptor(RangeT values, ::mlir::DictionaryAttr attrs = nullptr) : swmmac_f32_16x16x128_fp8_fp8GenericAdaptor(values, attrs, Properties{}, {}) {} swmmac_f32_16x16x128_fp8_fp8GenericAdaptor(RangeT values, const swmmac_f32_16x16x128_fp8_fp8GenericAdaptorBase &base) : Base(base), odsOperands(values) {} template >> swmmac_f32_16x16x128_fp8_fp8GenericAdaptor(RangeT values, LateInst op) : Base(op), odsOperands(values) {} std::pair getODSOperandIndexAndLength(unsigned index) { return Base::getODSOperandIndexAndLength(index, odsOperands.size()); } RangeT getODSOperands(unsigned index) { auto valueRange = getODSOperandIndexAndLength(index); return {std::next(odsOperands.begin(), valueRange.first), std::next(odsOperands.begin(), valueRange.first + valueRange.second)}; } ValueT getA() { return (*getODSOperands(0).begin()); } ValueT getB() { return (*getODSOperands(1).begin()); } ValueT getC() { return (*getODSOperands(2).begin()); } ValueT getIndex() { return (*getODSOperands(3).begin()); } RangeT getOperands() { return odsOperands; } private: RangeT odsOperands; }; class swmmac_f32_16x16x128_fp8_fp8Adaptor : public swmmac_f32_16x16x128_fp8_fp8GenericAdaptor<::mlir::ValueRange> { public: using swmmac_f32_16x16x128_fp8_fp8GenericAdaptor::swmmac_f32_16x16x128_fp8_fp8GenericAdaptor; swmmac_f32_16x16x128_fp8_fp8Adaptor(swmmac_f32_16x16x128_fp8_fp8 op); ::llvm::LogicalResult verify(::mlir::Location loc); }; class swmmac_f32_16x16x128_fp8_fp8 : public ::mlir::Op::Impl, ::mlir::OpTrait::ZeroSuccessors, ::mlir::OpTrait::NOperands<4>::Impl, ::mlir::OpTrait::OpInvariants, ::mlir::BytecodeOpInterface::Trait> { public: using Op::Op; using Op::print; using Adaptor = swmmac_f32_16x16x128_fp8_fp8Adaptor; template using GenericAdaptor = swmmac_f32_16x16x128_fp8_fp8GenericAdaptor; using FoldAdaptor = GenericAdaptor<::llvm::ArrayRef<::mlir::Attribute>>; static constexpr int odsIndex_a = 0; static constexpr int odsIndex_b = 1; static constexpr int odsIndex_c = 2; static constexpr int odsIndex_index = 3; using Properties = FoldAdaptor::Properties; static ::llvm::ArrayRef<::llvm::StringRef> getAttributeNames() { static ::llvm::StringRef attrNames[] = {::llvm::StringRef("reuseA"), ::llvm::StringRef("reuseB")}; return ::llvm::ArrayRef(attrNames); } ::mlir::StringAttr getReuseAAttrName() { return getAttributeNameForIndex(0); } static ::mlir::StringAttr getReuseAAttrName(::mlir::OperationName name) { return getAttributeNameForIndex(name, 0); } ::mlir::StringAttr getReuseBAttrName() { return getAttributeNameForIndex(1); } static ::mlir::StringAttr getReuseBAttrName(::mlir::OperationName name) { return getAttributeNameForIndex(name, 1); } static constexpr ::llvm::StringLiteral getOperationName() { return ::llvm::StringLiteral("rocdl.swmmac.f32.16x16x128.fp8.fp8"); } std::pair getODSOperandIndexAndLength(unsigned index) { return {index, 1}; } ::mlir::Operation::operand_range getODSOperands(unsigned index) { auto valueRange = getODSOperandIndexAndLength(index); return {std::next(getOperation()->operand_begin(), valueRange.first), std::next(getOperation()->operand_begin(), valueRange.first + valueRange.second)}; } ::mlir::TypedValue<::mlir::Type> getA() { return ::llvm::cast<::mlir::TypedValue<::mlir::Type>>(*getODSOperands(0).begin()); } ::mlir::TypedValue<::mlir::Type> getB() { return ::llvm::cast<::mlir::TypedValue<::mlir::Type>>(*getODSOperands(1).begin()); } ::mlir::TypedValue<::mlir::Type> getC() { return ::llvm::cast<::mlir::TypedValue<::mlir::Type>>(*getODSOperands(2).begin()); } ::mlir::TypedValue<::mlir::IntegerType> getIndex() { return ::llvm::cast<::mlir::TypedValue<::mlir::IntegerType>>(*getODSOperands(3).begin()); } ::mlir::OpOperand &getAMutable() { auto range = getODSOperandIndexAndLength(0); return getOperation()->getOpOperand(range.first); } ::mlir::OpOperand &getBMutable() { auto range = getODSOperandIndexAndLength(1); return getOperation()->getOpOperand(range.first); } ::mlir::OpOperand &getCMutable() { auto range = getODSOperandIndexAndLength(2); return getOperation()->getOpOperand(range.first); } ::mlir::OpOperand &getIndexMutable() { auto range = getODSOperandIndexAndLength(3); return getOperation()->getOpOperand(range.first); } std::pair getODSResultIndexAndLength(unsigned index) { return {index, 1}; } ::mlir::Operation::result_range getODSResults(unsigned index) { auto valueRange = getODSResultIndexAndLength(index); return {std::next(getOperation()->result_begin(), valueRange.first), std::next(getOperation()->result_begin(), valueRange.first + valueRange.second)}; } ::mlir::TypedValue<::mlir::Type> getRes() { return ::llvm::cast<::mlir::TypedValue<::mlir::Type>>(*getODSResults(0).begin()); } static ::llvm::LogicalResult setPropertiesFromAttr(Properties &prop, ::mlir::Attribute attr, ::llvm::function_ref<::mlir::InFlightDiagnostic()> emitError); static ::mlir::Attribute getPropertiesAsAttr(::mlir::MLIRContext *ctx, const Properties &prop); static llvm::hash_code computePropertiesHash(const Properties &prop); static std::optional getInherentAttr(::mlir::MLIRContext *ctx, const Properties &prop, llvm::StringRef name); static void setInherentAttr(Properties &prop, llvm::StringRef name, mlir::Attribute value); static void populateInherentAttrs(::mlir::MLIRContext *ctx, const Properties &prop, ::mlir::NamedAttrList &attrs); static ::llvm::LogicalResult verifyInherentAttrs(::mlir::OperationName opName, ::mlir::NamedAttrList &attrs, llvm::function_ref<::mlir::InFlightDiagnostic()> emitError); static ::llvm::LogicalResult readProperties(::mlir::DialectBytecodeReader &reader, ::mlir::OperationState &state); void writeProperties(::mlir::DialectBytecodeWriter &writer); ::mlir::IntegerAttr getReuseAAttr() { return ::llvm::dyn_cast_or_null<::mlir::IntegerAttr>(getProperties().reuseA); } bool getReuseA(); ::mlir::IntegerAttr getReuseBAttr() { return ::llvm::dyn_cast_or_null<::mlir::IntegerAttr>(getProperties().reuseB); } bool getReuseB(); void setReuseAAttr(::mlir::IntegerAttr attr) { getProperties().reuseA = attr; } void setReuseA(bool attrValue); void setReuseBAttr(::mlir::IntegerAttr attr) { getProperties().reuseB = attr; } void setReuseB(bool attrValue); static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::Type res, ::mlir::Value a, ::mlir::Value b, ::mlir::Value c, ::mlir::Value index, ::mlir::IntegerAttr reuseA, ::mlir::IntegerAttr reuseB = nullptr); static swmmac_f32_16x16x128_fp8_fp8 create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::Type res, ::mlir::Value a, ::mlir::Value b, ::mlir::Value c, ::mlir::Value index, ::mlir::IntegerAttr reuseA, ::mlir::IntegerAttr reuseB = nullptr); static swmmac_f32_16x16x128_fp8_fp8 create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::Type res, ::mlir::Value a, ::mlir::Value b, ::mlir::Value c, ::mlir::Value index, ::mlir::IntegerAttr reuseA, ::mlir::IntegerAttr reuseB = nullptr); static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::Value a, ::mlir::Value b, ::mlir::Value c, ::mlir::Value index, ::mlir::IntegerAttr reuseA, ::mlir::IntegerAttr reuseB = nullptr); static swmmac_f32_16x16x128_fp8_fp8 create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::Value a, ::mlir::Value b, ::mlir::Value c, ::mlir::Value index, ::mlir::IntegerAttr reuseA, ::mlir::IntegerAttr reuseB = nullptr); static swmmac_f32_16x16x128_fp8_fp8 create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::Value a, ::mlir::Value b, ::mlir::Value c, ::mlir::Value index, ::mlir::IntegerAttr reuseA, ::mlir::IntegerAttr reuseB = nullptr); static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::Type res, ::mlir::Value a, ::mlir::Value b, ::mlir::Value c, ::mlir::Value index, bool reuseA = 0, bool reuseB = 0); static swmmac_f32_16x16x128_fp8_fp8 create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::Type res, ::mlir::Value a, ::mlir::Value b, ::mlir::Value c, ::mlir::Value index, bool reuseA = 0, bool reuseB = 0); static swmmac_f32_16x16x128_fp8_fp8 create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::Type res, ::mlir::Value a, ::mlir::Value b, ::mlir::Value c, ::mlir::Value index, bool reuseA = 0, bool reuseB = 0); static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::Value a, ::mlir::Value b, ::mlir::Value c, ::mlir::Value index, bool reuseA = 0, bool reuseB = 0); static swmmac_f32_16x16x128_fp8_fp8 create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::Value a, ::mlir::Value b, ::mlir::Value c, ::mlir::Value index, bool reuseA = 0, bool reuseB = 0); static swmmac_f32_16x16x128_fp8_fp8 create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::Value a, ::mlir::Value b, ::mlir::Value c, ::mlir::Value index, bool reuseA = 0, bool reuseB = 0); static void build(::mlir::OpBuilder &, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, ::llvm::ArrayRef<::mlir::NamedAttribute> attributes = {}); static swmmac_f32_16x16x128_fp8_fp8 create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, ::llvm::ArrayRef<::mlir::NamedAttribute> attributes = {}); static swmmac_f32_16x16x128_fp8_fp8 create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, ::llvm::ArrayRef<::mlir::NamedAttribute> attributes = {}); static void build(::mlir::OpBuilder &, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, const Properties &properties, ::llvm::ArrayRef<::mlir::NamedAttribute> discardableAttributes = {}); static swmmac_f32_16x16x128_fp8_fp8 create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, const Properties &properties, ::llvm::ArrayRef<::mlir::NamedAttribute> discardableAttributes = {}); static swmmac_f32_16x16x128_fp8_fp8 create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, const Properties &properties, ::llvm::ArrayRef<::mlir::NamedAttribute> discardableAttributes = {}); static void populateDefaultProperties(::mlir::OperationName opName, Properties &properties); ::llvm::LogicalResult verifyInvariantsImpl(); ::llvm::LogicalResult verifyInvariants(); static ::mlir::ParseResult parse(::mlir::OpAsmParser &parser, ::mlir::OperationState &result); void print(::mlir::OpAsmPrinter &_odsPrinter); private: ::mlir::StringAttr getAttributeNameForIndex(unsigned index) { return getAttributeNameForIndex((*this)->getName(), index); } static ::mlir::StringAttr getAttributeNameForIndex(::mlir::OperationName name, unsigned index) { assert(index < 2 && "invalid attribute index"); assert(name.getStringRef() == getOperationName() && "invalid operation name"); assert(name.isRegistered() && "Operation isn't registered, missing a " "dependent dialect loading?"); return name.getAttributeNames()[index]; } public: }; } // namespace mlir::ROCDL MLIR_DECLARE_EXPLICIT_TYPE_ID(::mlir::ROCDL::swmmac_f32_16x16x128_fp8_fp8) MLIR_DECLARE_EXPLICIT_TYPE_ID(::mlir::ROCDL::detail::swmmac_f32_16x16x128_fp8_fp8GenericAdaptorBase::Properties) namespace mlir::ROCDL { //===----------------------------------------------------------------------===// // ::mlir::ROCDL::swmmac_f32_16x16x32_bf16 declarations //===----------------------------------------------------------------------===// namespace detail { class swmmac_f32_16x16x32_bf16GenericAdaptorBase { public: using Properties = ::mlir::EmptyProperties; protected: ::mlir::DictionaryAttr odsAttrs; ::std::optional<::mlir::OperationName> odsOpName; Properties properties; ::mlir::RegionRange odsRegions; public: swmmac_f32_16x16x32_bf16GenericAdaptorBase(::mlir::DictionaryAttr attrs, const Properties &properties, ::mlir::RegionRange regions = {}) : odsAttrs(attrs), properties(properties), odsRegions(regions) { if (odsAttrs) odsOpName.emplace("rocdl.swmmac.f32.16x16x32.bf16", odsAttrs.getContext()); } swmmac_f32_16x16x32_bf16GenericAdaptorBase(swmmac_f32_16x16x32_bf16 op); std::pair getODSOperandIndexAndLength(unsigned index, unsigned odsOperandsSize) { return {index, 1}; } const Properties &getProperties() { return properties; } ::mlir::DictionaryAttr getAttributes() { return odsAttrs; } }; } // namespace detail template class swmmac_f32_16x16x32_bf16GenericAdaptor : public detail::swmmac_f32_16x16x32_bf16GenericAdaptorBase { using ValueT = ::llvm::detail::ValueOfRange; using Base = detail::swmmac_f32_16x16x32_bf16GenericAdaptorBase; static constexpr int odsIndex_a = 0; static constexpr int odsIndex_b = 1; static constexpr int odsIndex_c = 2; static constexpr int odsIndex_index = 3; public: swmmac_f32_16x16x32_bf16GenericAdaptor(RangeT values, ::mlir::DictionaryAttr attrs, const Properties &properties, ::mlir::RegionRange regions = {}) : Base(attrs, properties, regions), odsOperands(values) {} swmmac_f32_16x16x32_bf16GenericAdaptor(RangeT values, ::mlir::DictionaryAttr attrs, ::mlir::PropertyRef properties, ::mlir::RegionRange regions = {}) : swmmac_f32_16x16x32_bf16GenericAdaptor(values, attrs, (properties ? *properties.as() : Properties{}), regions) {} swmmac_f32_16x16x32_bf16GenericAdaptor(RangeT values, ::mlir::DictionaryAttr attrs = nullptr) : swmmac_f32_16x16x32_bf16GenericAdaptor(values, attrs, Properties{}, {}) {} swmmac_f32_16x16x32_bf16GenericAdaptor(RangeT values, const swmmac_f32_16x16x32_bf16GenericAdaptorBase &base) : Base(base), odsOperands(values) {} template >> swmmac_f32_16x16x32_bf16GenericAdaptor(RangeT values, LateInst op) : Base(op), odsOperands(values) {} std::pair getODSOperandIndexAndLength(unsigned index) { return Base::getODSOperandIndexAndLength(index, odsOperands.size()); } RangeT getODSOperands(unsigned index) { auto valueRange = getODSOperandIndexAndLength(index); return {std::next(odsOperands.begin(), valueRange.first), std::next(odsOperands.begin(), valueRange.first + valueRange.second)}; } ValueT getA() { return (*getODSOperands(0).begin()); } ValueT getB() { return (*getODSOperands(1).begin()); } ValueT getC() { return (*getODSOperands(2).begin()); } ValueT getIndex() { return (*getODSOperands(3).begin()); } RangeT getOperands() { return odsOperands; } private: RangeT odsOperands; }; class swmmac_f32_16x16x32_bf16Adaptor : public swmmac_f32_16x16x32_bf16GenericAdaptor<::mlir::ValueRange> { public: using swmmac_f32_16x16x32_bf16GenericAdaptor::swmmac_f32_16x16x32_bf16GenericAdaptor; swmmac_f32_16x16x32_bf16Adaptor(swmmac_f32_16x16x32_bf16 op); ::llvm::LogicalResult verify(::mlir::Location loc); }; class swmmac_f32_16x16x32_bf16 : public ::mlir::Op::Impl, ::mlir::OpTrait::ZeroSuccessors, ::mlir::OpTrait::NOperands<4>::Impl, ::mlir::OpTrait::OpInvariants> { public: using Op::Op; using Op::print; using Adaptor = swmmac_f32_16x16x32_bf16Adaptor; template using GenericAdaptor = swmmac_f32_16x16x32_bf16GenericAdaptor; using FoldAdaptor = GenericAdaptor<::llvm::ArrayRef<::mlir::Attribute>>; static constexpr int odsIndex_a = 0; static constexpr int odsIndex_b = 1; static constexpr int odsIndex_c = 2; static constexpr int odsIndex_index = 3; using Properties = FoldAdaptor::Properties; static ::llvm::ArrayRef<::llvm::StringRef> getAttributeNames() { return {}; } static constexpr ::llvm::StringLiteral getOperationName() { return ::llvm::StringLiteral("rocdl.swmmac.f32.16x16x32.bf16"); } std::pair getODSOperandIndexAndLength(unsigned index) { return {index, 1}; } ::mlir::Operation::operand_range getODSOperands(unsigned index) { auto valueRange = getODSOperandIndexAndLength(index); return {std::next(getOperation()->operand_begin(), valueRange.first), std::next(getOperation()->operand_begin(), valueRange.first + valueRange.second)}; } ::mlir::TypedValue<::mlir::VectorType> getA() { return ::llvm::cast<::mlir::TypedValue<::mlir::VectorType>>(*getODSOperands(0).begin()); } ::mlir::TypedValue<::mlir::VectorType> getB() { return ::llvm::cast<::mlir::TypedValue<::mlir::VectorType>>(*getODSOperands(1).begin()); } ::mlir::TypedValue<::mlir::VectorType> getC() { return ::llvm::cast<::mlir::TypedValue<::mlir::VectorType>>(*getODSOperands(2).begin()); } ::mlir::TypedValue<::mlir::IntegerType> getIndex() { return ::llvm::cast<::mlir::TypedValue<::mlir::IntegerType>>(*getODSOperands(3).begin()); } ::mlir::OpOperand &getAMutable() { auto range = getODSOperandIndexAndLength(0); return getOperation()->getOpOperand(range.first); } ::mlir::OpOperand &getBMutable() { auto range = getODSOperandIndexAndLength(1); return getOperation()->getOpOperand(range.first); } ::mlir::OpOperand &getCMutable() { auto range = getODSOperandIndexAndLength(2); return getOperation()->getOpOperand(range.first); } ::mlir::OpOperand &getIndexMutable() { auto range = getODSOperandIndexAndLength(3); return getOperation()->getOpOperand(range.first); } std::pair getODSResultIndexAndLength(unsigned index) { return {index, 1}; } ::mlir::Operation::result_range getODSResults(unsigned index) { auto valueRange = getODSResultIndexAndLength(index); return {std::next(getOperation()->result_begin(), valueRange.first), std::next(getOperation()->result_begin(), valueRange.first + valueRange.second)}; } ::mlir::TypedValue<::mlir::VectorType> getRes() { return ::llvm::cast<::mlir::TypedValue<::mlir::VectorType>>(*getODSResults(0).begin()); } static ::llvm::LogicalResult setPropertiesFromAttr(Properties &prop, ::mlir::Attribute attr, ::llvm::function_ref<::mlir::InFlightDiagnostic()> emitError); static ::mlir::Attribute getPropertiesAsAttr(::mlir::MLIRContext *ctx, const Properties &prop); static llvm::hash_code computePropertiesHash(const Properties &prop); static std::optional getInherentAttr(::mlir::MLIRContext *ctx, const Properties &prop, llvm::StringRef name); static void setInherentAttr(Properties &prop, llvm::StringRef name, mlir::Attribute value); static void populateInherentAttrs(::mlir::MLIRContext *ctx, const Properties &prop, ::mlir::NamedAttrList &attrs); static ::llvm::LogicalResult verifyInherentAttrs(::mlir::OperationName opName, ::mlir::NamedAttrList &attrs, llvm::function_ref<::mlir::InFlightDiagnostic()> emitError); static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::Type res, ::mlir::Value a, ::mlir::Value b, ::mlir::Value c, ::mlir::Value index); static swmmac_f32_16x16x32_bf16 create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::Type res, ::mlir::Value a, ::mlir::Value b, ::mlir::Value c, ::mlir::Value index); static swmmac_f32_16x16x32_bf16 create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::Type res, ::mlir::Value a, ::mlir::Value b, ::mlir::Value c, ::mlir::Value index); static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::Value a, ::mlir::Value b, ::mlir::Value c, ::mlir::Value index); static swmmac_f32_16x16x32_bf16 create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::Value a, ::mlir::Value b, ::mlir::Value c, ::mlir::Value index); static swmmac_f32_16x16x32_bf16 create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::Value a, ::mlir::Value b, ::mlir::Value c, ::mlir::Value index); static void build(::mlir::OpBuilder &, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, ::llvm::ArrayRef<::mlir::NamedAttribute> attributes = {}); static swmmac_f32_16x16x32_bf16 create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, ::llvm::ArrayRef<::mlir::NamedAttribute> attributes = {}); static swmmac_f32_16x16x32_bf16 create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, ::llvm::ArrayRef<::mlir::NamedAttribute> attributes = {}); static void build(::mlir::OpBuilder &, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, const Properties &properties, ::llvm::ArrayRef<::mlir::NamedAttribute> discardableAttributes = {}); static swmmac_f32_16x16x32_bf16 create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, const Properties &properties, ::llvm::ArrayRef<::mlir::NamedAttribute> discardableAttributes = {}); static swmmac_f32_16x16x32_bf16 create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, const Properties &properties, ::llvm::ArrayRef<::mlir::NamedAttribute> discardableAttributes = {}); ::llvm::LogicalResult verifyInvariantsImpl(); ::llvm::LogicalResult verifyInvariants(); static ::mlir::ParseResult parse(::mlir::OpAsmParser &parser, ::mlir::OperationState &result); void print(::mlir::OpAsmPrinter &_odsPrinter); public: }; } // namespace mlir::ROCDL MLIR_DECLARE_EXPLICIT_TYPE_ID(::mlir::ROCDL::swmmac_f32_16x16x32_bf16) namespace mlir::ROCDL { //===----------------------------------------------------------------------===// // ::mlir::ROCDL::swmmac_f32_16x16x32_bf8_bf8 declarations //===----------------------------------------------------------------------===// namespace detail { class swmmac_f32_16x16x32_bf8_bf8GenericAdaptorBase { public: using Properties = ::mlir::EmptyProperties; protected: ::mlir::DictionaryAttr odsAttrs; ::std::optional<::mlir::OperationName> odsOpName; Properties properties; ::mlir::RegionRange odsRegions; public: swmmac_f32_16x16x32_bf8_bf8GenericAdaptorBase(::mlir::DictionaryAttr attrs, const Properties &properties, ::mlir::RegionRange regions = {}) : odsAttrs(attrs), properties(properties), odsRegions(regions) { if (odsAttrs) odsOpName.emplace("rocdl.swmmac.f32.16x16x32.bf8.bf8", odsAttrs.getContext()); } swmmac_f32_16x16x32_bf8_bf8GenericAdaptorBase(swmmac_f32_16x16x32_bf8_bf8 op); std::pair getODSOperandIndexAndLength(unsigned index, unsigned odsOperandsSize) { return {index, 1}; } const Properties &getProperties() { return properties; } ::mlir::DictionaryAttr getAttributes() { return odsAttrs; } }; } // namespace detail template class swmmac_f32_16x16x32_bf8_bf8GenericAdaptor : public detail::swmmac_f32_16x16x32_bf8_bf8GenericAdaptorBase { using ValueT = ::llvm::detail::ValueOfRange; using Base = detail::swmmac_f32_16x16x32_bf8_bf8GenericAdaptorBase; static constexpr int odsIndex_a = 0; static constexpr int odsIndex_b = 1; static constexpr int odsIndex_c = 2; static constexpr int odsIndex_index = 3; public: swmmac_f32_16x16x32_bf8_bf8GenericAdaptor(RangeT values, ::mlir::DictionaryAttr attrs, const Properties &properties, ::mlir::RegionRange regions = {}) : Base(attrs, properties, regions), odsOperands(values) {} swmmac_f32_16x16x32_bf8_bf8GenericAdaptor(RangeT values, ::mlir::DictionaryAttr attrs, ::mlir::PropertyRef properties, ::mlir::RegionRange regions = {}) : swmmac_f32_16x16x32_bf8_bf8GenericAdaptor(values, attrs, (properties ? *properties.as() : Properties{}), regions) {} swmmac_f32_16x16x32_bf8_bf8GenericAdaptor(RangeT values, ::mlir::DictionaryAttr attrs = nullptr) : swmmac_f32_16x16x32_bf8_bf8GenericAdaptor(values, attrs, Properties{}, {}) {} swmmac_f32_16x16x32_bf8_bf8GenericAdaptor(RangeT values, const swmmac_f32_16x16x32_bf8_bf8GenericAdaptorBase &base) : Base(base), odsOperands(values) {} template >> swmmac_f32_16x16x32_bf8_bf8GenericAdaptor(RangeT values, LateInst op) : Base(op), odsOperands(values) {} std::pair getODSOperandIndexAndLength(unsigned index) { return Base::getODSOperandIndexAndLength(index, odsOperands.size()); } RangeT getODSOperands(unsigned index) { auto valueRange = getODSOperandIndexAndLength(index); return {std::next(odsOperands.begin(), valueRange.first), std::next(odsOperands.begin(), valueRange.first + valueRange.second)}; } ValueT getA() { return (*getODSOperands(0).begin()); } ValueT getB() { return (*getODSOperands(1).begin()); } ValueT getC() { return (*getODSOperands(2).begin()); } ValueT getIndex() { return (*getODSOperands(3).begin()); } RangeT getOperands() { return odsOperands; } private: RangeT odsOperands; }; class swmmac_f32_16x16x32_bf8_bf8Adaptor : public swmmac_f32_16x16x32_bf8_bf8GenericAdaptor<::mlir::ValueRange> { public: using swmmac_f32_16x16x32_bf8_bf8GenericAdaptor::swmmac_f32_16x16x32_bf8_bf8GenericAdaptor; swmmac_f32_16x16x32_bf8_bf8Adaptor(swmmac_f32_16x16x32_bf8_bf8 op); ::llvm::LogicalResult verify(::mlir::Location loc); }; class swmmac_f32_16x16x32_bf8_bf8 : public ::mlir::Op::Impl, ::mlir::OpTrait::ZeroSuccessors, ::mlir::OpTrait::NOperands<4>::Impl, ::mlir::OpTrait::OpInvariants> { public: using Op::Op; using Op::print; using Adaptor = swmmac_f32_16x16x32_bf8_bf8Adaptor; template using GenericAdaptor = swmmac_f32_16x16x32_bf8_bf8GenericAdaptor; using FoldAdaptor = GenericAdaptor<::llvm::ArrayRef<::mlir::Attribute>>; static constexpr int odsIndex_a = 0; static constexpr int odsIndex_b = 1; static constexpr int odsIndex_c = 2; static constexpr int odsIndex_index = 3; using Properties = FoldAdaptor::Properties; static ::llvm::ArrayRef<::llvm::StringRef> getAttributeNames() { return {}; } static constexpr ::llvm::StringLiteral getOperationName() { return ::llvm::StringLiteral("rocdl.swmmac.f32.16x16x32.bf8.bf8"); } std::pair getODSOperandIndexAndLength(unsigned index) { return {index, 1}; } ::mlir::Operation::operand_range getODSOperands(unsigned index) { auto valueRange = getODSOperandIndexAndLength(index); return {std::next(getOperation()->operand_begin(), valueRange.first), std::next(getOperation()->operand_begin(), valueRange.first + valueRange.second)}; } ::mlir::TypedValue<::mlir::Type> getA() { return ::llvm::cast<::mlir::TypedValue<::mlir::Type>>(*getODSOperands(0).begin()); } ::mlir::TypedValue<::mlir::Type> getB() { return ::llvm::cast<::mlir::TypedValue<::mlir::Type>>(*getODSOperands(1).begin()); } ::mlir::TypedValue<::mlir::Type> getC() { return ::llvm::cast<::mlir::TypedValue<::mlir::Type>>(*getODSOperands(2).begin()); } ::mlir::TypedValue<::mlir::IntegerType> getIndex() { return ::llvm::cast<::mlir::TypedValue<::mlir::IntegerType>>(*getODSOperands(3).begin()); } ::mlir::OpOperand &getAMutable() { auto range = getODSOperandIndexAndLength(0); return getOperation()->getOpOperand(range.first); } ::mlir::OpOperand &getBMutable() { auto range = getODSOperandIndexAndLength(1); return getOperation()->getOpOperand(range.first); } ::mlir::OpOperand &getCMutable() { auto range = getODSOperandIndexAndLength(2); return getOperation()->getOpOperand(range.first); } ::mlir::OpOperand &getIndexMutable() { auto range = getODSOperandIndexAndLength(3); return getOperation()->getOpOperand(range.first); } std::pair getODSResultIndexAndLength(unsigned index) { return {index, 1}; } ::mlir::Operation::result_range getODSResults(unsigned index) { auto valueRange = getODSResultIndexAndLength(index); return {std::next(getOperation()->result_begin(), valueRange.first), std::next(getOperation()->result_begin(), valueRange.first + valueRange.second)}; } ::mlir::TypedValue<::mlir::Type> getRes() { return ::llvm::cast<::mlir::TypedValue<::mlir::Type>>(*getODSResults(0).begin()); } static ::llvm::LogicalResult setPropertiesFromAttr(Properties &prop, ::mlir::Attribute attr, ::llvm::function_ref<::mlir::InFlightDiagnostic()> emitError); static ::mlir::Attribute getPropertiesAsAttr(::mlir::MLIRContext *ctx, const Properties &prop); static llvm::hash_code computePropertiesHash(const Properties &prop); static std::optional getInherentAttr(::mlir::MLIRContext *ctx, const Properties &prop, llvm::StringRef name); static void setInherentAttr(Properties &prop, llvm::StringRef name, mlir::Attribute value); static void populateInherentAttrs(::mlir::MLIRContext *ctx, const Properties &prop, ::mlir::NamedAttrList &attrs); static ::llvm::LogicalResult verifyInherentAttrs(::mlir::OperationName opName, ::mlir::NamedAttrList &attrs, llvm::function_ref<::mlir::InFlightDiagnostic()> emitError); static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::Type res, ::mlir::Value a, ::mlir::Value b, ::mlir::Value c, ::mlir::Value index); static swmmac_f32_16x16x32_bf8_bf8 create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::Type res, ::mlir::Value a, ::mlir::Value b, ::mlir::Value c, ::mlir::Value index); static swmmac_f32_16x16x32_bf8_bf8 create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::Type res, ::mlir::Value a, ::mlir::Value b, ::mlir::Value c, ::mlir::Value index); static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::Value a, ::mlir::Value b, ::mlir::Value c, ::mlir::Value index); static swmmac_f32_16x16x32_bf8_bf8 create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::Value a, ::mlir::Value b, ::mlir::Value c, ::mlir::Value index); static swmmac_f32_16x16x32_bf8_bf8 create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::Value a, ::mlir::Value b, ::mlir::Value c, ::mlir::Value index); static void build(::mlir::OpBuilder &, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, ::llvm::ArrayRef<::mlir::NamedAttribute> attributes = {}); static swmmac_f32_16x16x32_bf8_bf8 create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, ::llvm::ArrayRef<::mlir::NamedAttribute> attributes = {}); static swmmac_f32_16x16x32_bf8_bf8 create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, ::llvm::ArrayRef<::mlir::NamedAttribute> attributes = {}); static void build(::mlir::OpBuilder &, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, const Properties &properties, ::llvm::ArrayRef<::mlir::NamedAttribute> discardableAttributes = {}); static swmmac_f32_16x16x32_bf8_bf8 create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, const Properties &properties, ::llvm::ArrayRef<::mlir::NamedAttribute> discardableAttributes = {}); static swmmac_f32_16x16x32_bf8_bf8 create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, const Properties &properties, ::llvm::ArrayRef<::mlir::NamedAttribute> discardableAttributes = {}); ::llvm::LogicalResult verifyInvariantsImpl(); ::llvm::LogicalResult verifyInvariants(); static ::mlir::ParseResult parse(::mlir::OpAsmParser &parser, ::mlir::OperationState &result); void print(::mlir::OpAsmPrinter &_odsPrinter); public: }; } // namespace mlir::ROCDL MLIR_DECLARE_EXPLICIT_TYPE_ID(::mlir::ROCDL::swmmac_f32_16x16x32_bf8_bf8) namespace mlir::ROCDL { //===----------------------------------------------------------------------===// // ::mlir::ROCDL::swmmac_f32_16x16x32_bf8_fp8 declarations //===----------------------------------------------------------------------===// namespace detail { class swmmac_f32_16x16x32_bf8_fp8GenericAdaptorBase { public: using Properties = ::mlir::EmptyProperties; protected: ::mlir::DictionaryAttr odsAttrs; ::std::optional<::mlir::OperationName> odsOpName; Properties properties; ::mlir::RegionRange odsRegions; public: swmmac_f32_16x16x32_bf8_fp8GenericAdaptorBase(::mlir::DictionaryAttr attrs, const Properties &properties, ::mlir::RegionRange regions = {}) : odsAttrs(attrs), properties(properties), odsRegions(regions) { if (odsAttrs) odsOpName.emplace("rocdl.swmmac.f32.16x16x32.bf8.fp8", odsAttrs.getContext()); } swmmac_f32_16x16x32_bf8_fp8GenericAdaptorBase(swmmac_f32_16x16x32_bf8_fp8 op); std::pair getODSOperandIndexAndLength(unsigned index, unsigned odsOperandsSize) { return {index, 1}; } const Properties &getProperties() { return properties; } ::mlir::DictionaryAttr getAttributes() { return odsAttrs; } }; } // namespace detail template class swmmac_f32_16x16x32_bf8_fp8GenericAdaptor : public detail::swmmac_f32_16x16x32_bf8_fp8GenericAdaptorBase { using ValueT = ::llvm::detail::ValueOfRange; using Base = detail::swmmac_f32_16x16x32_bf8_fp8GenericAdaptorBase; static constexpr int odsIndex_a = 0; static constexpr int odsIndex_b = 1; static constexpr int odsIndex_c = 2; static constexpr int odsIndex_index = 3; public: swmmac_f32_16x16x32_bf8_fp8GenericAdaptor(RangeT values, ::mlir::DictionaryAttr attrs, const Properties &properties, ::mlir::RegionRange regions = {}) : Base(attrs, properties, regions), odsOperands(values) {} swmmac_f32_16x16x32_bf8_fp8GenericAdaptor(RangeT values, ::mlir::DictionaryAttr attrs, ::mlir::PropertyRef properties, ::mlir::RegionRange regions = {}) : swmmac_f32_16x16x32_bf8_fp8GenericAdaptor(values, attrs, (properties ? *properties.as() : Properties{}), regions) {} swmmac_f32_16x16x32_bf8_fp8GenericAdaptor(RangeT values, ::mlir::DictionaryAttr attrs = nullptr) : swmmac_f32_16x16x32_bf8_fp8GenericAdaptor(values, attrs, Properties{}, {}) {} swmmac_f32_16x16x32_bf8_fp8GenericAdaptor(RangeT values, const swmmac_f32_16x16x32_bf8_fp8GenericAdaptorBase &base) : Base(base), odsOperands(values) {} template >> swmmac_f32_16x16x32_bf8_fp8GenericAdaptor(RangeT values, LateInst op) : Base(op), odsOperands(values) {} std::pair getODSOperandIndexAndLength(unsigned index) { return Base::getODSOperandIndexAndLength(index, odsOperands.size()); } RangeT getODSOperands(unsigned index) { auto valueRange = getODSOperandIndexAndLength(index); return {std::next(odsOperands.begin(), valueRange.first), std::next(odsOperands.begin(), valueRange.first + valueRange.second)}; } ValueT getA() { return (*getODSOperands(0).begin()); } ValueT getB() { return (*getODSOperands(1).begin()); } ValueT getC() { return (*getODSOperands(2).begin()); } ValueT getIndex() { return (*getODSOperands(3).begin()); } RangeT getOperands() { return odsOperands; } private: RangeT odsOperands; }; class swmmac_f32_16x16x32_bf8_fp8Adaptor : public swmmac_f32_16x16x32_bf8_fp8GenericAdaptor<::mlir::ValueRange> { public: using swmmac_f32_16x16x32_bf8_fp8GenericAdaptor::swmmac_f32_16x16x32_bf8_fp8GenericAdaptor; swmmac_f32_16x16x32_bf8_fp8Adaptor(swmmac_f32_16x16x32_bf8_fp8 op); ::llvm::LogicalResult verify(::mlir::Location loc); }; class swmmac_f32_16x16x32_bf8_fp8 : public ::mlir::Op::Impl, ::mlir::OpTrait::ZeroSuccessors, ::mlir::OpTrait::NOperands<4>::Impl, ::mlir::OpTrait::OpInvariants> { public: using Op::Op; using Op::print; using Adaptor = swmmac_f32_16x16x32_bf8_fp8Adaptor; template using GenericAdaptor = swmmac_f32_16x16x32_bf8_fp8GenericAdaptor; using FoldAdaptor = GenericAdaptor<::llvm::ArrayRef<::mlir::Attribute>>; static constexpr int odsIndex_a = 0; static constexpr int odsIndex_b = 1; static constexpr int odsIndex_c = 2; static constexpr int odsIndex_index = 3; using Properties = FoldAdaptor::Properties; static ::llvm::ArrayRef<::llvm::StringRef> getAttributeNames() { return {}; } static constexpr ::llvm::StringLiteral getOperationName() { return ::llvm::StringLiteral("rocdl.swmmac.f32.16x16x32.bf8.fp8"); } std::pair getODSOperandIndexAndLength(unsigned index) { return {index, 1}; } ::mlir::Operation::operand_range getODSOperands(unsigned index) { auto valueRange = getODSOperandIndexAndLength(index); return {std::next(getOperation()->operand_begin(), valueRange.first), std::next(getOperation()->operand_begin(), valueRange.first + valueRange.second)}; } ::mlir::TypedValue<::mlir::Type> getA() { return ::llvm::cast<::mlir::TypedValue<::mlir::Type>>(*getODSOperands(0).begin()); } ::mlir::TypedValue<::mlir::Type> getB() { return ::llvm::cast<::mlir::TypedValue<::mlir::Type>>(*getODSOperands(1).begin()); } ::mlir::TypedValue<::mlir::Type> getC() { return ::llvm::cast<::mlir::TypedValue<::mlir::Type>>(*getODSOperands(2).begin()); } ::mlir::TypedValue<::mlir::IntegerType> getIndex() { return ::llvm::cast<::mlir::TypedValue<::mlir::IntegerType>>(*getODSOperands(3).begin()); } ::mlir::OpOperand &getAMutable() { auto range = getODSOperandIndexAndLength(0); return getOperation()->getOpOperand(range.first); } ::mlir::OpOperand &getBMutable() { auto range = getODSOperandIndexAndLength(1); return getOperation()->getOpOperand(range.first); } ::mlir::OpOperand &getCMutable() { auto range = getODSOperandIndexAndLength(2); return getOperation()->getOpOperand(range.first); } ::mlir::OpOperand &getIndexMutable() { auto range = getODSOperandIndexAndLength(3); return getOperation()->getOpOperand(range.first); } std::pair getODSResultIndexAndLength(unsigned index) { return {index, 1}; } ::mlir::Operation::result_range getODSResults(unsigned index) { auto valueRange = getODSResultIndexAndLength(index); return {std::next(getOperation()->result_begin(), valueRange.first), std::next(getOperation()->result_begin(), valueRange.first + valueRange.second)}; } ::mlir::TypedValue<::mlir::Type> getRes() { return ::llvm::cast<::mlir::TypedValue<::mlir::Type>>(*getODSResults(0).begin()); } static ::llvm::LogicalResult setPropertiesFromAttr(Properties &prop, ::mlir::Attribute attr, ::llvm::function_ref<::mlir::InFlightDiagnostic()> emitError); static ::mlir::Attribute getPropertiesAsAttr(::mlir::MLIRContext *ctx, const Properties &prop); static llvm::hash_code computePropertiesHash(const Properties &prop); static std::optional getInherentAttr(::mlir::MLIRContext *ctx, const Properties &prop, llvm::StringRef name); static void setInherentAttr(Properties &prop, llvm::StringRef name, mlir::Attribute value); static void populateInherentAttrs(::mlir::MLIRContext *ctx, const Properties &prop, ::mlir::NamedAttrList &attrs); static ::llvm::LogicalResult verifyInherentAttrs(::mlir::OperationName opName, ::mlir::NamedAttrList &attrs, llvm::function_ref<::mlir::InFlightDiagnostic()> emitError); static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::Type res, ::mlir::Value a, ::mlir::Value b, ::mlir::Value c, ::mlir::Value index); static swmmac_f32_16x16x32_bf8_fp8 create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::Type res, ::mlir::Value a, ::mlir::Value b, ::mlir::Value c, ::mlir::Value index); static swmmac_f32_16x16x32_bf8_fp8 create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::Type res, ::mlir::Value a, ::mlir::Value b, ::mlir::Value c, ::mlir::Value index); static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::Value a, ::mlir::Value b, ::mlir::Value c, ::mlir::Value index); static swmmac_f32_16x16x32_bf8_fp8 create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::Value a, ::mlir::Value b, ::mlir::Value c, ::mlir::Value index); static swmmac_f32_16x16x32_bf8_fp8 create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::Value a, ::mlir::Value b, ::mlir::Value c, ::mlir::Value index); static void build(::mlir::OpBuilder &, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, ::llvm::ArrayRef<::mlir::NamedAttribute> attributes = {}); static swmmac_f32_16x16x32_bf8_fp8 create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, ::llvm::ArrayRef<::mlir::NamedAttribute> attributes = {}); static swmmac_f32_16x16x32_bf8_fp8 create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, ::llvm::ArrayRef<::mlir::NamedAttribute> attributes = {}); static void build(::mlir::OpBuilder &, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, const Properties &properties, ::llvm::ArrayRef<::mlir::NamedAttribute> discardableAttributes = {}); static swmmac_f32_16x16x32_bf8_fp8 create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, const Properties &properties, ::llvm::ArrayRef<::mlir::NamedAttribute> discardableAttributes = {}); static swmmac_f32_16x16x32_bf8_fp8 create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, const Properties &properties, ::llvm::ArrayRef<::mlir::NamedAttribute> discardableAttributes = {}); ::llvm::LogicalResult verifyInvariantsImpl(); ::llvm::LogicalResult verifyInvariants(); static ::mlir::ParseResult parse(::mlir::OpAsmParser &parser, ::mlir::OperationState &result); void print(::mlir::OpAsmPrinter &_odsPrinter); public: }; } // namespace mlir::ROCDL MLIR_DECLARE_EXPLICIT_TYPE_ID(::mlir::ROCDL::swmmac_f32_16x16x32_bf8_fp8) namespace mlir::ROCDL { //===----------------------------------------------------------------------===// // ::mlir::ROCDL::swmmac_f32_16x16x32_f16 declarations //===----------------------------------------------------------------------===// namespace detail { class swmmac_f32_16x16x32_f16GenericAdaptorBase { public: using Properties = ::mlir::EmptyProperties; protected: ::mlir::DictionaryAttr odsAttrs; ::std::optional<::mlir::OperationName> odsOpName; Properties properties; ::mlir::RegionRange odsRegions; public: swmmac_f32_16x16x32_f16GenericAdaptorBase(::mlir::DictionaryAttr attrs, const Properties &properties, ::mlir::RegionRange regions = {}) : odsAttrs(attrs), properties(properties), odsRegions(regions) { if (odsAttrs) odsOpName.emplace("rocdl.swmmac.f32.16x16x32.f16", odsAttrs.getContext()); } swmmac_f32_16x16x32_f16GenericAdaptorBase(swmmac_f32_16x16x32_f16 op); std::pair getODSOperandIndexAndLength(unsigned index, unsigned odsOperandsSize) { return {index, 1}; } const Properties &getProperties() { return properties; } ::mlir::DictionaryAttr getAttributes() { return odsAttrs; } }; } // namespace detail template class swmmac_f32_16x16x32_f16GenericAdaptor : public detail::swmmac_f32_16x16x32_f16GenericAdaptorBase { using ValueT = ::llvm::detail::ValueOfRange; using Base = detail::swmmac_f32_16x16x32_f16GenericAdaptorBase; static constexpr int odsIndex_a = 0; static constexpr int odsIndex_b = 1; static constexpr int odsIndex_c = 2; static constexpr int odsIndex_index = 3; public: swmmac_f32_16x16x32_f16GenericAdaptor(RangeT values, ::mlir::DictionaryAttr attrs, const Properties &properties, ::mlir::RegionRange regions = {}) : Base(attrs, properties, regions), odsOperands(values) {} swmmac_f32_16x16x32_f16GenericAdaptor(RangeT values, ::mlir::DictionaryAttr attrs, ::mlir::PropertyRef properties, ::mlir::RegionRange regions = {}) : swmmac_f32_16x16x32_f16GenericAdaptor(values, attrs, (properties ? *properties.as() : Properties{}), regions) {} swmmac_f32_16x16x32_f16GenericAdaptor(RangeT values, ::mlir::DictionaryAttr attrs = nullptr) : swmmac_f32_16x16x32_f16GenericAdaptor(values, attrs, Properties{}, {}) {} swmmac_f32_16x16x32_f16GenericAdaptor(RangeT values, const swmmac_f32_16x16x32_f16GenericAdaptorBase &base) : Base(base), odsOperands(values) {} template >> swmmac_f32_16x16x32_f16GenericAdaptor(RangeT values, LateInst op) : Base(op), odsOperands(values) {} std::pair getODSOperandIndexAndLength(unsigned index) { return Base::getODSOperandIndexAndLength(index, odsOperands.size()); } RangeT getODSOperands(unsigned index) { auto valueRange = getODSOperandIndexAndLength(index); return {std::next(odsOperands.begin(), valueRange.first), std::next(odsOperands.begin(), valueRange.first + valueRange.second)}; } ValueT getA() { return (*getODSOperands(0).begin()); } ValueT getB() { return (*getODSOperands(1).begin()); } ValueT getC() { return (*getODSOperands(2).begin()); } ValueT getIndex() { return (*getODSOperands(3).begin()); } RangeT getOperands() { return odsOperands; } private: RangeT odsOperands; }; class swmmac_f32_16x16x32_f16Adaptor : public swmmac_f32_16x16x32_f16GenericAdaptor<::mlir::ValueRange> { public: using swmmac_f32_16x16x32_f16GenericAdaptor::swmmac_f32_16x16x32_f16GenericAdaptor; swmmac_f32_16x16x32_f16Adaptor(swmmac_f32_16x16x32_f16 op); ::llvm::LogicalResult verify(::mlir::Location loc); }; class swmmac_f32_16x16x32_f16 : public ::mlir::Op::Impl, ::mlir::OpTrait::ZeroSuccessors, ::mlir::OpTrait::NOperands<4>::Impl, ::mlir::OpTrait::OpInvariants> { public: using Op::Op; using Op::print; using Adaptor = swmmac_f32_16x16x32_f16Adaptor; template using GenericAdaptor = swmmac_f32_16x16x32_f16GenericAdaptor; using FoldAdaptor = GenericAdaptor<::llvm::ArrayRef<::mlir::Attribute>>; static constexpr int odsIndex_a = 0; static constexpr int odsIndex_b = 1; static constexpr int odsIndex_c = 2; static constexpr int odsIndex_index = 3; using Properties = FoldAdaptor::Properties; static ::llvm::ArrayRef<::llvm::StringRef> getAttributeNames() { return {}; } static constexpr ::llvm::StringLiteral getOperationName() { return ::llvm::StringLiteral("rocdl.swmmac.f32.16x16x32.f16"); } std::pair getODSOperandIndexAndLength(unsigned index) { return {index, 1}; } ::mlir::Operation::operand_range getODSOperands(unsigned index) { auto valueRange = getODSOperandIndexAndLength(index); return {std::next(getOperation()->operand_begin(), valueRange.first), std::next(getOperation()->operand_begin(), valueRange.first + valueRange.second)}; } ::mlir::TypedValue<::mlir::VectorType> getA() { return ::llvm::cast<::mlir::TypedValue<::mlir::VectorType>>(*getODSOperands(0).begin()); } ::mlir::TypedValue<::mlir::VectorType> getB() { return ::llvm::cast<::mlir::TypedValue<::mlir::VectorType>>(*getODSOperands(1).begin()); } ::mlir::TypedValue<::mlir::VectorType> getC() { return ::llvm::cast<::mlir::TypedValue<::mlir::VectorType>>(*getODSOperands(2).begin()); } ::mlir::TypedValue<::mlir::IntegerType> getIndex() { return ::llvm::cast<::mlir::TypedValue<::mlir::IntegerType>>(*getODSOperands(3).begin()); } ::mlir::OpOperand &getAMutable() { auto range = getODSOperandIndexAndLength(0); return getOperation()->getOpOperand(range.first); } ::mlir::OpOperand &getBMutable() { auto range = getODSOperandIndexAndLength(1); return getOperation()->getOpOperand(range.first); } ::mlir::OpOperand &getCMutable() { auto range = getODSOperandIndexAndLength(2); return getOperation()->getOpOperand(range.first); } ::mlir::OpOperand &getIndexMutable() { auto range = getODSOperandIndexAndLength(3); return getOperation()->getOpOperand(range.first); } std::pair getODSResultIndexAndLength(unsigned index) { return {index, 1}; } ::mlir::Operation::result_range getODSResults(unsigned index) { auto valueRange = getODSResultIndexAndLength(index); return {std::next(getOperation()->result_begin(), valueRange.first), std::next(getOperation()->result_begin(), valueRange.first + valueRange.second)}; } ::mlir::TypedValue<::mlir::VectorType> getRes() { return ::llvm::cast<::mlir::TypedValue<::mlir::VectorType>>(*getODSResults(0).begin()); } static ::llvm::LogicalResult setPropertiesFromAttr(Properties &prop, ::mlir::Attribute attr, ::llvm::function_ref<::mlir::InFlightDiagnostic()> emitError); static ::mlir::Attribute getPropertiesAsAttr(::mlir::MLIRContext *ctx, const Properties &prop); static llvm::hash_code computePropertiesHash(const Properties &prop); static std::optional getInherentAttr(::mlir::MLIRContext *ctx, const Properties &prop, llvm::StringRef name); static void setInherentAttr(Properties &prop, llvm::StringRef name, mlir::Attribute value); static void populateInherentAttrs(::mlir::MLIRContext *ctx, const Properties &prop, ::mlir::NamedAttrList &attrs); static ::llvm::LogicalResult verifyInherentAttrs(::mlir::OperationName opName, ::mlir::NamedAttrList &attrs, llvm::function_ref<::mlir::InFlightDiagnostic()> emitError); static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::Type res, ::mlir::Value a, ::mlir::Value b, ::mlir::Value c, ::mlir::Value index); static swmmac_f32_16x16x32_f16 create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::Type res, ::mlir::Value a, ::mlir::Value b, ::mlir::Value c, ::mlir::Value index); static swmmac_f32_16x16x32_f16 create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::Type res, ::mlir::Value a, ::mlir::Value b, ::mlir::Value c, ::mlir::Value index); static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::Value a, ::mlir::Value b, ::mlir::Value c, ::mlir::Value index); static swmmac_f32_16x16x32_f16 create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::Value a, ::mlir::Value b, ::mlir::Value c, ::mlir::Value index); static swmmac_f32_16x16x32_f16 create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::Value a, ::mlir::Value b, ::mlir::Value c, ::mlir::Value index); static void build(::mlir::OpBuilder &, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, ::llvm::ArrayRef<::mlir::NamedAttribute> attributes = {}); static swmmac_f32_16x16x32_f16 create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, ::llvm::ArrayRef<::mlir::NamedAttribute> attributes = {}); static swmmac_f32_16x16x32_f16 create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, ::llvm::ArrayRef<::mlir::NamedAttribute> attributes = {}); static void build(::mlir::OpBuilder &, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, const Properties &properties, ::llvm::ArrayRef<::mlir::NamedAttribute> discardableAttributes = {}); static swmmac_f32_16x16x32_f16 create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, const Properties &properties, ::llvm::ArrayRef<::mlir::NamedAttribute> discardableAttributes = {}); static swmmac_f32_16x16x32_f16 create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, const Properties &properties, ::llvm::ArrayRef<::mlir::NamedAttribute> discardableAttributes = {}); ::llvm::LogicalResult verifyInvariantsImpl(); ::llvm::LogicalResult verifyInvariants(); static ::mlir::ParseResult parse(::mlir::OpAsmParser &parser, ::mlir::OperationState &result); void print(::mlir::OpAsmPrinter &_odsPrinter); public: }; } // namespace mlir::ROCDL MLIR_DECLARE_EXPLICIT_TYPE_ID(::mlir::ROCDL::swmmac_f32_16x16x32_f16) namespace mlir::ROCDL { //===----------------------------------------------------------------------===// // ::mlir::ROCDL::swmmac_f32_16x16x32_fp8_bf8 declarations //===----------------------------------------------------------------------===// namespace detail { class swmmac_f32_16x16x32_fp8_bf8GenericAdaptorBase { public: using Properties = ::mlir::EmptyProperties; protected: ::mlir::DictionaryAttr odsAttrs; ::std::optional<::mlir::OperationName> odsOpName; Properties properties; ::mlir::RegionRange odsRegions; public: swmmac_f32_16x16x32_fp8_bf8GenericAdaptorBase(::mlir::DictionaryAttr attrs, const Properties &properties, ::mlir::RegionRange regions = {}) : odsAttrs(attrs), properties(properties), odsRegions(regions) { if (odsAttrs) odsOpName.emplace("rocdl.swmmac.f32.16x16x32.fp8.bf8", odsAttrs.getContext()); } swmmac_f32_16x16x32_fp8_bf8GenericAdaptorBase(swmmac_f32_16x16x32_fp8_bf8 op); std::pair getODSOperandIndexAndLength(unsigned index, unsigned odsOperandsSize) { return {index, 1}; } const Properties &getProperties() { return properties; } ::mlir::DictionaryAttr getAttributes() { return odsAttrs; } }; } // namespace detail template class swmmac_f32_16x16x32_fp8_bf8GenericAdaptor : public detail::swmmac_f32_16x16x32_fp8_bf8GenericAdaptorBase { using ValueT = ::llvm::detail::ValueOfRange; using Base = detail::swmmac_f32_16x16x32_fp8_bf8GenericAdaptorBase; static constexpr int odsIndex_a = 0; static constexpr int odsIndex_b = 1; static constexpr int odsIndex_c = 2; static constexpr int odsIndex_index = 3; public: swmmac_f32_16x16x32_fp8_bf8GenericAdaptor(RangeT values, ::mlir::DictionaryAttr attrs, const Properties &properties, ::mlir::RegionRange regions = {}) : Base(attrs, properties, regions), odsOperands(values) {} swmmac_f32_16x16x32_fp8_bf8GenericAdaptor(RangeT values, ::mlir::DictionaryAttr attrs, ::mlir::PropertyRef properties, ::mlir::RegionRange regions = {}) : swmmac_f32_16x16x32_fp8_bf8GenericAdaptor(values, attrs, (properties ? *properties.as() : Properties{}), regions) {} swmmac_f32_16x16x32_fp8_bf8GenericAdaptor(RangeT values, ::mlir::DictionaryAttr attrs = nullptr) : swmmac_f32_16x16x32_fp8_bf8GenericAdaptor(values, attrs, Properties{}, {}) {} swmmac_f32_16x16x32_fp8_bf8GenericAdaptor(RangeT values, const swmmac_f32_16x16x32_fp8_bf8GenericAdaptorBase &base) : Base(base), odsOperands(values) {} template >> swmmac_f32_16x16x32_fp8_bf8GenericAdaptor(RangeT values, LateInst op) : Base(op), odsOperands(values) {} std::pair getODSOperandIndexAndLength(unsigned index) { return Base::getODSOperandIndexAndLength(index, odsOperands.size()); } RangeT getODSOperands(unsigned index) { auto valueRange = getODSOperandIndexAndLength(index); return {std::next(odsOperands.begin(), valueRange.first), std::next(odsOperands.begin(), valueRange.first + valueRange.second)}; } ValueT getA() { return (*getODSOperands(0).begin()); } ValueT getB() { return (*getODSOperands(1).begin()); } ValueT getC() { return (*getODSOperands(2).begin()); } ValueT getIndex() { return (*getODSOperands(3).begin()); } RangeT getOperands() { return odsOperands; } private: RangeT odsOperands; }; class swmmac_f32_16x16x32_fp8_bf8Adaptor : public swmmac_f32_16x16x32_fp8_bf8GenericAdaptor<::mlir::ValueRange> { public: using swmmac_f32_16x16x32_fp8_bf8GenericAdaptor::swmmac_f32_16x16x32_fp8_bf8GenericAdaptor; swmmac_f32_16x16x32_fp8_bf8Adaptor(swmmac_f32_16x16x32_fp8_bf8 op); ::llvm::LogicalResult verify(::mlir::Location loc); }; class swmmac_f32_16x16x32_fp8_bf8 : public ::mlir::Op::Impl, ::mlir::OpTrait::ZeroSuccessors, ::mlir::OpTrait::NOperands<4>::Impl, ::mlir::OpTrait::OpInvariants> { public: using Op::Op; using Op::print; using Adaptor = swmmac_f32_16x16x32_fp8_bf8Adaptor; template using GenericAdaptor = swmmac_f32_16x16x32_fp8_bf8GenericAdaptor; using FoldAdaptor = GenericAdaptor<::llvm::ArrayRef<::mlir::Attribute>>; static constexpr int odsIndex_a = 0; static constexpr int odsIndex_b = 1; static constexpr int odsIndex_c = 2; static constexpr int odsIndex_index = 3; using Properties = FoldAdaptor::Properties; static ::llvm::ArrayRef<::llvm::StringRef> getAttributeNames() { return {}; } static constexpr ::llvm::StringLiteral getOperationName() { return ::llvm::StringLiteral("rocdl.swmmac.f32.16x16x32.fp8.bf8"); } std::pair getODSOperandIndexAndLength(unsigned index) { return {index, 1}; } ::mlir::Operation::operand_range getODSOperands(unsigned index) { auto valueRange = getODSOperandIndexAndLength(index); return {std::next(getOperation()->operand_begin(), valueRange.first), std::next(getOperation()->operand_begin(), valueRange.first + valueRange.second)}; } ::mlir::TypedValue<::mlir::Type> getA() { return ::llvm::cast<::mlir::TypedValue<::mlir::Type>>(*getODSOperands(0).begin()); } ::mlir::TypedValue<::mlir::Type> getB() { return ::llvm::cast<::mlir::TypedValue<::mlir::Type>>(*getODSOperands(1).begin()); } ::mlir::TypedValue<::mlir::Type> getC() { return ::llvm::cast<::mlir::TypedValue<::mlir::Type>>(*getODSOperands(2).begin()); } ::mlir::TypedValue<::mlir::IntegerType> getIndex() { return ::llvm::cast<::mlir::TypedValue<::mlir::IntegerType>>(*getODSOperands(3).begin()); } ::mlir::OpOperand &getAMutable() { auto range = getODSOperandIndexAndLength(0); return getOperation()->getOpOperand(range.first); } ::mlir::OpOperand &getBMutable() { auto range = getODSOperandIndexAndLength(1); return getOperation()->getOpOperand(range.first); } ::mlir::OpOperand &getCMutable() { auto range = getODSOperandIndexAndLength(2); return getOperation()->getOpOperand(range.first); } ::mlir::OpOperand &getIndexMutable() { auto range = getODSOperandIndexAndLength(3); return getOperation()->getOpOperand(range.first); } std::pair getODSResultIndexAndLength(unsigned index) { return {index, 1}; } ::mlir::Operation::result_range getODSResults(unsigned index) { auto valueRange = getODSResultIndexAndLength(index); return {std::next(getOperation()->result_begin(), valueRange.first), std::next(getOperation()->result_begin(), valueRange.first + valueRange.second)}; } ::mlir::TypedValue<::mlir::Type> getRes() { return ::llvm::cast<::mlir::TypedValue<::mlir::Type>>(*getODSResults(0).begin()); } static ::llvm::LogicalResult setPropertiesFromAttr(Properties &prop, ::mlir::Attribute attr, ::llvm::function_ref<::mlir::InFlightDiagnostic()> emitError); static ::mlir::Attribute getPropertiesAsAttr(::mlir::MLIRContext *ctx, const Properties &prop); static llvm::hash_code computePropertiesHash(const Properties &prop); static std::optional getInherentAttr(::mlir::MLIRContext *ctx, const Properties &prop, llvm::StringRef name); static void setInherentAttr(Properties &prop, llvm::StringRef name, mlir::Attribute value); static void populateInherentAttrs(::mlir::MLIRContext *ctx, const Properties &prop, ::mlir::NamedAttrList &attrs); static ::llvm::LogicalResult verifyInherentAttrs(::mlir::OperationName opName, ::mlir::NamedAttrList &attrs, llvm::function_ref<::mlir::InFlightDiagnostic()> emitError); static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::Type res, ::mlir::Value a, ::mlir::Value b, ::mlir::Value c, ::mlir::Value index); static swmmac_f32_16x16x32_fp8_bf8 create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::Type res, ::mlir::Value a, ::mlir::Value b, ::mlir::Value c, ::mlir::Value index); static swmmac_f32_16x16x32_fp8_bf8 create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::Type res, ::mlir::Value a, ::mlir::Value b, ::mlir::Value c, ::mlir::Value index); static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::Value a, ::mlir::Value b, ::mlir::Value c, ::mlir::Value index); static swmmac_f32_16x16x32_fp8_bf8 create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::Value a, ::mlir::Value b, ::mlir::Value c, ::mlir::Value index); static swmmac_f32_16x16x32_fp8_bf8 create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::Value a, ::mlir::Value b, ::mlir::Value c, ::mlir::Value index); static void build(::mlir::OpBuilder &, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, ::llvm::ArrayRef<::mlir::NamedAttribute> attributes = {}); static swmmac_f32_16x16x32_fp8_bf8 create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, ::llvm::ArrayRef<::mlir::NamedAttribute> attributes = {}); static swmmac_f32_16x16x32_fp8_bf8 create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, ::llvm::ArrayRef<::mlir::NamedAttribute> attributes = {}); static void build(::mlir::OpBuilder &, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, const Properties &properties, ::llvm::ArrayRef<::mlir::NamedAttribute> discardableAttributes = {}); static swmmac_f32_16x16x32_fp8_bf8 create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, const Properties &properties, ::llvm::ArrayRef<::mlir::NamedAttribute> discardableAttributes = {}); static swmmac_f32_16x16x32_fp8_bf8 create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, const Properties &properties, ::llvm::ArrayRef<::mlir::NamedAttribute> discardableAttributes = {}); ::llvm::LogicalResult verifyInvariantsImpl(); ::llvm::LogicalResult verifyInvariants(); static ::mlir::ParseResult parse(::mlir::OpAsmParser &parser, ::mlir::OperationState &result); void print(::mlir::OpAsmPrinter &_odsPrinter); public: }; } // namespace mlir::ROCDL MLIR_DECLARE_EXPLICIT_TYPE_ID(::mlir::ROCDL::swmmac_f32_16x16x32_fp8_bf8) namespace mlir::ROCDL { //===----------------------------------------------------------------------===// // ::mlir::ROCDL::swmmac_f32_16x16x32_fp8_fp8 declarations //===----------------------------------------------------------------------===// namespace detail { class swmmac_f32_16x16x32_fp8_fp8GenericAdaptorBase { public: using Properties = ::mlir::EmptyProperties; protected: ::mlir::DictionaryAttr odsAttrs; ::std::optional<::mlir::OperationName> odsOpName; Properties properties; ::mlir::RegionRange odsRegions; public: swmmac_f32_16x16x32_fp8_fp8GenericAdaptorBase(::mlir::DictionaryAttr attrs, const Properties &properties, ::mlir::RegionRange regions = {}) : odsAttrs(attrs), properties(properties), odsRegions(regions) { if (odsAttrs) odsOpName.emplace("rocdl.swmmac.f32.16x16x32.fp8.fp8", odsAttrs.getContext()); } swmmac_f32_16x16x32_fp8_fp8GenericAdaptorBase(swmmac_f32_16x16x32_fp8_fp8 op); std::pair getODSOperandIndexAndLength(unsigned index, unsigned odsOperandsSize) { return {index, 1}; } const Properties &getProperties() { return properties; } ::mlir::DictionaryAttr getAttributes() { return odsAttrs; } }; } // namespace detail template class swmmac_f32_16x16x32_fp8_fp8GenericAdaptor : public detail::swmmac_f32_16x16x32_fp8_fp8GenericAdaptorBase { using ValueT = ::llvm::detail::ValueOfRange; using Base = detail::swmmac_f32_16x16x32_fp8_fp8GenericAdaptorBase; static constexpr int odsIndex_a = 0; static constexpr int odsIndex_b = 1; static constexpr int odsIndex_c = 2; static constexpr int odsIndex_index = 3; public: swmmac_f32_16x16x32_fp8_fp8GenericAdaptor(RangeT values, ::mlir::DictionaryAttr attrs, const Properties &properties, ::mlir::RegionRange regions = {}) : Base(attrs, properties, regions), odsOperands(values) {} swmmac_f32_16x16x32_fp8_fp8GenericAdaptor(RangeT values, ::mlir::DictionaryAttr attrs, ::mlir::PropertyRef properties, ::mlir::RegionRange regions = {}) : swmmac_f32_16x16x32_fp8_fp8GenericAdaptor(values, attrs, (properties ? *properties.as() : Properties{}), regions) {} swmmac_f32_16x16x32_fp8_fp8GenericAdaptor(RangeT values, ::mlir::DictionaryAttr attrs = nullptr) : swmmac_f32_16x16x32_fp8_fp8GenericAdaptor(values, attrs, Properties{}, {}) {} swmmac_f32_16x16x32_fp8_fp8GenericAdaptor(RangeT values, const swmmac_f32_16x16x32_fp8_fp8GenericAdaptorBase &base) : Base(base), odsOperands(values) {} template >> swmmac_f32_16x16x32_fp8_fp8GenericAdaptor(RangeT values, LateInst op) : Base(op), odsOperands(values) {} std::pair getODSOperandIndexAndLength(unsigned index) { return Base::getODSOperandIndexAndLength(index, odsOperands.size()); } RangeT getODSOperands(unsigned index) { auto valueRange = getODSOperandIndexAndLength(index); return {std::next(odsOperands.begin(), valueRange.first), std::next(odsOperands.begin(), valueRange.first + valueRange.second)}; } ValueT getA() { return (*getODSOperands(0).begin()); } ValueT getB() { return (*getODSOperands(1).begin()); } ValueT getC() { return (*getODSOperands(2).begin()); } ValueT getIndex() { return (*getODSOperands(3).begin()); } RangeT getOperands() { return odsOperands; } private: RangeT odsOperands; }; class swmmac_f32_16x16x32_fp8_fp8Adaptor : public swmmac_f32_16x16x32_fp8_fp8GenericAdaptor<::mlir::ValueRange> { public: using swmmac_f32_16x16x32_fp8_fp8GenericAdaptor::swmmac_f32_16x16x32_fp8_fp8GenericAdaptor; swmmac_f32_16x16x32_fp8_fp8Adaptor(swmmac_f32_16x16x32_fp8_fp8 op); ::llvm::LogicalResult verify(::mlir::Location loc); }; class swmmac_f32_16x16x32_fp8_fp8 : public ::mlir::Op::Impl, ::mlir::OpTrait::ZeroSuccessors, ::mlir::OpTrait::NOperands<4>::Impl, ::mlir::OpTrait::OpInvariants> { public: using Op::Op; using Op::print; using Adaptor = swmmac_f32_16x16x32_fp8_fp8Adaptor; template using GenericAdaptor = swmmac_f32_16x16x32_fp8_fp8GenericAdaptor; using FoldAdaptor = GenericAdaptor<::llvm::ArrayRef<::mlir::Attribute>>; static constexpr int odsIndex_a = 0; static constexpr int odsIndex_b = 1; static constexpr int odsIndex_c = 2; static constexpr int odsIndex_index = 3; using Properties = FoldAdaptor::Properties; static ::llvm::ArrayRef<::llvm::StringRef> getAttributeNames() { return {}; } static constexpr ::llvm::StringLiteral getOperationName() { return ::llvm::StringLiteral("rocdl.swmmac.f32.16x16x32.fp8.fp8"); } std::pair getODSOperandIndexAndLength(unsigned index) { return {index, 1}; } ::mlir::Operation::operand_range getODSOperands(unsigned index) { auto valueRange = getODSOperandIndexAndLength(index); return {std::next(getOperation()->operand_begin(), valueRange.first), std::next(getOperation()->operand_begin(), valueRange.first + valueRange.second)}; } ::mlir::TypedValue<::mlir::Type> getA() { return ::llvm::cast<::mlir::TypedValue<::mlir::Type>>(*getODSOperands(0).begin()); } ::mlir::TypedValue<::mlir::Type> getB() { return ::llvm::cast<::mlir::TypedValue<::mlir::Type>>(*getODSOperands(1).begin()); } ::mlir::TypedValue<::mlir::Type> getC() { return ::llvm::cast<::mlir::TypedValue<::mlir::Type>>(*getODSOperands(2).begin()); } ::mlir::TypedValue<::mlir::IntegerType> getIndex() { return ::llvm::cast<::mlir::TypedValue<::mlir::IntegerType>>(*getODSOperands(3).begin()); } ::mlir::OpOperand &getAMutable() { auto range = getODSOperandIndexAndLength(0); return getOperation()->getOpOperand(range.first); } ::mlir::OpOperand &getBMutable() { auto range = getODSOperandIndexAndLength(1); return getOperation()->getOpOperand(range.first); } ::mlir::OpOperand &getCMutable() { auto range = getODSOperandIndexAndLength(2); return getOperation()->getOpOperand(range.first); } ::mlir::OpOperand &getIndexMutable() { auto range = getODSOperandIndexAndLength(3); return getOperation()->getOpOperand(range.first); } std::pair getODSResultIndexAndLength(unsigned index) { return {index, 1}; } ::mlir::Operation::result_range getODSResults(unsigned index) { auto valueRange = getODSResultIndexAndLength(index); return {std::next(getOperation()->result_begin(), valueRange.first), std::next(getOperation()->result_begin(), valueRange.first + valueRange.second)}; } ::mlir::TypedValue<::mlir::Type> getRes() { return ::llvm::cast<::mlir::TypedValue<::mlir::Type>>(*getODSResults(0).begin()); } static ::llvm::LogicalResult setPropertiesFromAttr(Properties &prop, ::mlir::Attribute attr, ::llvm::function_ref<::mlir::InFlightDiagnostic()> emitError); static ::mlir::Attribute getPropertiesAsAttr(::mlir::MLIRContext *ctx, const Properties &prop); static llvm::hash_code computePropertiesHash(const Properties &prop); static std::optional getInherentAttr(::mlir::MLIRContext *ctx, const Properties &prop, llvm::StringRef name); static void setInherentAttr(Properties &prop, llvm::StringRef name, mlir::Attribute value); static void populateInherentAttrs(::mlir::MLIRContext *ctx, const Properties &prop, ::mlir::NamedAttrList &attrs); static ::llvm::LogicalResult verifyInherentAttrs(::mlir::OperationName opName, ::mlir::NamedAttrList &attrs, llvm::function_ref<::mlir::InFlightDiagnostic()> emitError); static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::Type res, ::mlir::Value a, ::mlir::Value b, ::mlir::Value c, ::mlir::Value index); static swmmac_f32_16x16x32_fp8_fp8 create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::Type res, ::mlir::Value a, ::mlir::Value b, ::mlir::Value c, ::mlir::Value index); static swmmac_f32_16x16x32_fp8_fp8 create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::Type res, ::mlir::Value a, ::mlir::Value b, ::mlir::Value c, ::mlir::Value index); static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::Value a, ::mlir::Value b, ::mlir::Value c, ::mlir::Value index); static swmmac_f32_16x16x32_fp8_fp8 create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::Value a, ::mlir::Value b, ::mlir::Value c, ::mlir::Value index); static swmmac_f32_16x16x32_fp8_fp8 create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::Value a, ::mlir::Value b, ::mlir::Value c, ::mlir::Value index); static void build(::mlir::OpBuilder &, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, ::llvm::ArrayRef<::mlir::NamedAttribute> attributes = {}); static swmmac_f32_16x16x32_fp8_fp8 create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, ::llvm::ArrayRef<::mlir::NamedAttribute> attributes = {}); static swmmac_f32_16x16x32_fp8_fp8 create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, ::llvm::ArrayRef<::mlir::NamedAttribute> attributes = {}); static void build(::mlir::OpBuilder &, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, const Properties &properties, ::llvm::ArrayRef<::mlir::NamedAttribute> discardableAttributes = {}); static swmmac_f32_16x16x32_fp8_fp8 create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, const Properties &properties, ::llvm::ArrayRef<::mlir::NamedAttribute> discardableAttributes = {}); static swmmac_f32_16x16x32_fp8_fp8 create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, const Properties &properties, ::llvm::ArrayRef<::mlir::NamedAttribute> discardableAttributes = {}); ::llvm::LogicalResult verifyInvariantsImpl(); ::llvm::LogicalResult verifyInvariants(); static ::mlir::ParseResult parse(::mlir::OpAsmParser &parser, ::mlir::OperationState &result); void print(::mlir::OpAsmPrinter &_odsPrinter); public: }; } // namespace mlir::ROCDL MLIR_DECLARE_EXPLICIT_TYPE_ID(::mlir::ROCDL::swmmac_f32_16x16x32_fp8_fp8) namespace mlir::ROCDL { //===----------------------------------------------------------------------===// // ::mlir::ROCDL::swmmac_f32_16x16x64_bf16 declarations //===----------------------------------------------------------------------===// namespace detail { class swmmac_f32_16x16x64_bf16GenericAdaptorBase { public: struct Properties { using reuseATy = ::mlir::IntegerAttr; reuseATy reuseA; auto getReuseA() const { auto &propStorage = this->reuseA; return ::llvm::dyn_cast_or_null<::mlir::IntegerAttr>(propStorage); } void setReuseA(const ::mlir::IntegerAttr &propValue) { this->reuseA = propValue; } using reuseBTy = ::mlir::IntegerAttr; reuseBTy reuseB; auto getReuseB() const { auto &propStorage = this->reuseB; return ::llvm::dyn_cast_or_null<::mlir::IntegerAttr>(propStorage); } void setReuseB(const ::mlir::IntegerAttr &propValue) { this->reuseB = propValue; } using signATy = ::mlir::IntegerAttr; signATy signA; auto getSignA() const { auto &propStorage = this->signA; return ::llvm::dyn_cast_or_null<::mlir::IntegerAttr>(propStorage); } void setSignA(const ::mlir::IntegerAttr &propValue) { this->signA = propValue; } using signBTy = ::mlir::IntegerAttr; signBTy signB; auto getSignB() const { auto &propStorage = this->signB; return ::llvm::dyn_cast_or_null<::mlir::IntegerAttr>(propStorage); } void setSignB(const ::mlir::IntegerAttr &propValue) { this->signB = propValue; } bool operator==(const Properties &rhs) const { return rhs.reuseA == this->reuseA && rhs.reuseB == this->reuseB && rhs.signA == this->signA && rhs.signB == this->signB && true; } bool operator!=(const Properties &rhs) const { return !(*this == rhs); } }; protected: ::mlir::DictionaryAttr odsAttrs; ::std::optional<::mlir::OperationName> odsOpName; Properties properties; ::mlir::RegionRange odsRegions; public: swmmac_f32_16x16x64_bf16GenericAdaptorBase(::mlir::DictionaryAttr attrs, const Properties &properties, ::mlir::RegionRange regions = {}) : odsAttrs(attrs), properties(properties), odsRegions(regions) { if (odsAttrs) odsOpName.emplace("rocdl.swmmac.f32.16x16x64.bf16", odsAttrs.getContext()); } swmmac_f32_16x16x64_bf16GenericAdaptorBase(swmmac_f32_16x16x64_bf16 op); std::pair getODSOperandIndexAndLength(unsigned index, unsigned odsOperandsSize) { return {index, 1}; } const Properties &getProperties() { return properties; } ::mlir::DictionaryAttr getAttributes() { return odsAttrs; } ::mlir::IntegerAttr getSignAAttr(); bool getSignA(); ::mlir::IntegerAttr getSignBAttr(); bool getSignB(); ::mlir::IntegerAttr getReuseAAttr(); bool getReuseA(); ::mlir::IntegerAttr getReuseBAttr(); bool getReuseB(); }; } // namespace detail template class swmmac_f32_16x16x64_bf16GenericAdaptor : public detail::swmmac_f32_16x16x64_bf16GenericAdaptorBase { using ValueT = ::llvm::detail::ValueOfRange; using Base = detail::swmmac_f32_16x16x64_bf16GenericAdaptorBase; static constexpr int odsIndex_a = 0; static constexpr int odsIndex_b = 1; static constexpr int odsIndex_c = 2; static constexpr int odsIndex_index = 3; public: swmmac_f32_16x16x64_bf16GenericAdaptor(RangeT values, ::mlir::DictionaryAttr attrs, const Properties &properties, ::mlir::RegionRange regions = {}) : Base(attrs, properties, regions), odsOperands(values) {} swmmac_f32_16x16x64_bf16GenericAdaptor(RangeT values, ::mlir::DictionaryAttr attrs, ::mlir::PropertyRef properties, ::mlir::RegionRange regions = {}) : swmmac_f32_16x16x64_bf16GenericAdaptor(values, attrs, (properties ? *properties.as() : Properties{}), regions) {} swmmac_f32_16x16x64_bf16GenericAdaptor(RangeT values, ::mlir::DictionaryAttr attrs = nullptr) : swmmac_f32_16x16x64_bf16GenericAdaptor(values, attrs, Properties{}, {}) {} swmmac_f32_16x16x64_bf16GenericAdaptor(RangeT values, const swmmac_f32_16x16x64_bf16GenericAdaptorBase &base) : Base(base), odsOperands(values) {} template >> swmmac_f32_16x16x64_bf16GenericAdaptor(RangeT values, LateInst op) : Base(op), odsOperands(values) {} std::pair getODSOperandIndexAndLength(unsigned index) { return Base::getODSOperandIndexAndLength(index, odsOperands.size()); } RangeT getODSOperands(unsigned index) { auto valueRange = getODSOperandIndexAndLength(index); return {std::next(odsOperands.begin(), valueRange.first), std::next(odsOperands.begin(), valueRange.first + valueRange.second)}; } ValueT getA() { return (*getODSOperands(0).begin()); } ValueT getB() { return (*getODSOperands(1).begin()); } ValueT getC() { return (*getODSOperands(2).begin()); } ValueT getIndex() { return (*getODSOperands(3).begin()); } RangeT getOperands() { return odsOperands; } private: RangeT odsOperands; }; class swmmac_f32_16x16x64_bf16Adaptor : public swmmac_f32_16x16x64_bf16GenericAdaptor<::mlir::ValueRange> { public: using swmmac_f32_16x16x64_bf16GenericAdaptor::swmmac_f32_16x16x64_bf16GenericAdaptor; swmmac_f32_16x16x64_bf16Adaptor(swmmac_f32_16x16x64_bf16 op); ::llvm::LogicalResult verify(::mlir::Location loc); }; class swmmac_f32_16x16x64_bf16 : public ::mlir::Op::Impl, ::mlir::OpTrait::ZeroSuccessors, ::mlir::OpTrait::NOperands<4>::Impl, ::mlir::OpTrait::OpInvariants, ::mlir::BytecodeOpInterface::Trait> { public: using Op::Op; using Op::print; using Adaptor = swmmac_f32_16x16x64_bf16Adaptor; template using GenericAdaptor = swmmac_f32_16x16x64_bf16GenericAdaptor; using FoldAdaptor = GenericAdaptor<::llvm::ArrayRef<::mlir::Attribute>>; static constexpr int odsIndex_a = 0; static constexpr int odsIndex_b = 1; static constexpr int odsIndex_c = 2; static constexpr int odsIndex_index = 3; using Properties = FoldAdaptor::Properties; static ::llvm::ArrayRef<::llvm::StringRef> getAttributeNames() { static ::llvm::StringRef attrNames[] = {::llvm::StringRef("reuseA"), ::llvm::StringRef("reuseB"), ::llvm::StringRef("signA"), ::llvm::StringRef("signB")}; return ::llvm::ArrayRef(attrNames); } ::mlir::StringAttr getReuseAAttrName() { return getAttributeNameForIndex(0); } static ::mlir::StringAttr getReuseAAttrName(::mlir::OperationName name) { return getAttributeNameForIndex(name, 0); } ::mlir::StringAttr getReuseBAttrName() { return getAttributeNameForIndex(1); } static ::mlir::StringAttr getReuseBAttrName(::mlir::OperationName name) { return getAttributeNameForIndex(name, 1); } ::mlir::StringAttr getSignAAttrName() { return getAttributeNameForIndex(2); } static ::mlir::StringAttr getSignAAttrName(::mlir::OperationName name) { return getAttributeNameForIndex(name, 2); } ::mlir::StringAttr getSignBAttrName() { return getAttributeNameForIndex(3); } static ::mlir::StringAttr getSignBAttrName(::mlir::OperationName name) { return getAttributeNameForIndex(name, 3); } static constexpr ::llvm::StringLiteral getOperationName() { return ::llvm::StringLiteral("rocdl.swmmac.f32.16x16x64.bf16"); } std::pair getODSOperandIndexAndLength(unsigned index) { return {index, 1}; } ::mlir::Operation::operand_range getODSOperands(unsigned index) { auto valueRange = getODSOperandIndexAndLength(index); return {std::next(getOperation()->operand_begin(), valueRange.first), std::next(getOperation()->operand_begin(), valueRange.first + valueRange.second)}; } ::mlir::TypedValue<::mlir::Type> getA() { return ::llvm::cast<::mlir::TypedValue<::mlir::Type>>(*getODSOperands(0).begin()); } ::mlir::TypedValue<::mlir::Type> getB() { return ::llvm::cast<::mlir::TypedValue<::mlir::Type>>(*getODSOperands(1).begin()); } ::mlir::TypedValue<::mlir::Type> getC() { return ::llvm::cast<::mlir::TypedValue<::mlir::Type>>(*getODSOperands(2).begin()); } ::mlir::TypedValue<::mlir::IntegerType> getIndex() { return ::llvm::cast<::mlir::TypedValue<::mlir::IntegerType>>(*getODSOperands(3).begin()); } ::mlir::OpOperand &getAMutable() { auto range = getODSOperandIndexAndLength(0); return getOperation()->getOpOperand(range.first); } ::mlir::OpOperand &getBMutable() { auto range = getODSOperandIndexAndLength(1); return getOperation()->getOpOperand(range.first); } ::mlir::OpOperand &getCMutable() { auto range = getODSOperandIndexAndLength(2); return getOperation()->getOpOperand(range.first); } ::mlir::OpOperand &getIndexMutable() { auto range = getODSOperandIndexAndLength(3); return getOperation()->getOpOperand(range.first); } std::pair getODSResultIndexAndLength(unsigned index) { return {index, 1}; } ::mlir::Operation::result_range getODSResults(unsigned index) { auto valueRange = getODSResultIndexAndLength(index); return {std::next(getOperation()->result_begin(), valueRange.first), std::next(getOperation()->result_begin(), valueRange.first + valueRange.second)}; } ::mlir::TypedValue<::mlir::Type> getRes() { return ::llvm::cast<::mlir::TypedValue<::mlir::Type>>(*getODSResults(0).begin()); } static ::llvm::LogicalResult setPropertiesFromAttr(Properties &prop, ::mlir::Attribute attr, ::llvm::function_ref<::mlir::InFlightDiagnostic()> emitError); static ::mlir::Attribute getPropertiesAsAttr(::mlir::MLIRContext *ctx, const Properties &prop); static llvm::hash_code computePropertiesHash(const Properties &prop); static std::optional getInherentAttr(::mlir::MLIRContext *ctx, const Properties &prop, llvm::StringRef name); static void setInherentAttr(Properties &prop, llvm::StringRef name, mlir::Attribute value); static void populateInherentAttrs(::mlir::MLIRContext *ctx, const Properties &prop, ::mlir::NamedAttrList &attrs); static ::llvm::LogicalResult verifyInherentAttrs(::mlir::OperationName opName, ::mlir::NamedAttrList &attrs, llvm::function_ref<::mlir::InFlightDiagnostic()> emitError); static ::llvm::LogicalResult readProperties(::mlir::DialectBytecodeReader &reader, ::mlir::OperationState &state); void writeProperties(::mlir::DialectBytecodeWriter &writer); ::mlir::IntegerAttr getSignAAttr() { return ::llvm::dyn_cast_or_null<::mlir::IntegerAttr>(getProperties().signA); } bool getSignA(); ::mlir::IntegerAttr getSignBAttr() { return ::llvm::dyn_cast_or_null<::mlir::IntegerAttr>(getProperties().signB); } bool getSignB(); ::mlir::IntegerAttr getReuseAAttr() { return ::llvm::dyn_cast_or_null<::mlir::IntegerAttr>(getProperties().reuseA); } bool getReuseA(); ::mlir::IntegerAttr getReuseBAttr() { return ::llvm::dyn_cast_or_null<::mlir::IntegerAttr>(getProperties().reuseB); } bool getReuseB(); void setSignAAttr(::mlir::IntegerAttr attr) { getProperties().signA = attr; } void setSignA(bool attrValue); void setSignBAttr(::mlir::IntegerAttr attr) { getProperties().signB = attr; } void setSignB(bool attrValue); void setReuseAAttr(::mlir::IntegerAttr attr) { getProperties().reuseA = attr; } void setReuseA(bool attrValue); void setReuseBAttr(::mlir::IntegerAttr attr) { getProperties().reuseB = attr; } void setReuseB(bool attrValue); static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::Type res, ::mlir::IntegerAttr signA, ::mlir::Value a, ::mlir::IntegerAttr signB, ::mlir::Value b, ::mlir::Value c, ::mlir::Value index, ::mlir::IntegerAttr reuseA, ::mlir::IntegerAttr reuseB = nullptr); static swmmac_f32_16x16x64_bf16 create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::Type res, ::mlir::IntegerAttr signA, ::mlir::Value a, ::mlir::IntegerAttr signB, ::mlir::Value b, ::mlir::Value c, ::mlir::Value index, ::mlir::IntegerAttr reuseA, ::mlir::IntegerAttr reuseB = nullptr); static swmmac_f32_16x16x64_bf16 create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::Type res, ::mlir::IntegerAttr signA, ::mlir::Value a, ::mlir::IntegerAttr signB, ::mlir::Value b, ::mlir::Value c, ::mlir::Value index, ::mlir::IntegerAttr reuseA, ::mlir::IntegerAttr reuseB = nullptr); static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::IntegerAttr signA, ::mlir::Value a, ::mlir::IntegerAttr signB, ::mlir::Value b, ::mlir::Value c, ::mlir::Value index, ::mlir::IntegerAttr reuseA, ::mlir::IntegerAttr reuseB = nullptr); static swmmac_f32_16x16x64_bf16 create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::IntegerAttr signA, ::mlir::Value a, ::mlir::IntegerAttr signB, ::mlir::Value b, ::mlir::Value c, ::mlir::Value index, ::mlir::IntegerAttr reuseA, ::mlir::IntegerAttr reuseB = nullptr); static swmmac_f32_16x16x64_bf16 create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::IntegerAttr signA, ::mlir::Value a, ::mlir::IntegerAttr signB, ::mlir::Value b, ::mlir::Value c, ::mlir::Value index, ::mlir::IntegerAttr reuseA, ::mlir::IntegerAttr reuseB = nullptr); static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::Type res, bool signA, ::mlir::Value a, bool signB, ::mlir::Value b, ::mlir::Value c, ::mlir::Value index, bool reuseA = 0, bool reuseB = 0); static swmmac_f32_16x16x64_bf16 create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::Type res, bool signA, ::mlir::Value a, bool signB, ::mlir::Value b, ::mlir::Value c, ::mlir::Value index, bool reuseA = 0, bool reuseB = 0); static swmmac_f32_16x16x64_bf16 create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::Type res, bool signA, ::mlir::Value a, bool signB, ::mlir::Value b, ::mlir::Value c, ::mlir::Value index, bool reuseA = 0, bool reuseB = 0); static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, bool signA, ::mlir::Value a, bool signB, ::mlir::Value b, ::mlir::Value c, ::mlir::Value index, bool reuseA = 0, bool reuseB = 0); static swmmac_f32_16x16x64_bf16 create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, bool signA, ::mlir::Value a, bool signB, ::mlir::Value b, ::mlir::Value c, ::mlir::Value index, bool reuseA = 0, bool reuseB = 0); static swmmac_f32_16x16x64_bf16 create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, bool signA, ::mlir::Value a, bool signB, ::mlir::Value b, ::mlir::Value c, ::mlir::Value index, bool reuseA = 0, bool reuseB = 0); static void build(::mlir::OpBuilder &, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, ::llvm::ArrayRef<::mlir::NamedAttribute> attributes = {}); static swmmac_f32_16x16x64_bf16 create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, ::llvm::ArrayRef<::mlir::NamedAttribute> attributes = {}); static swmmac_f32_16x16x64_bf16 create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, ::llvm::ArrayRef<::mlir::NamedAttribute> attributes = {}); static void build(::mlir::OpBuilder &, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, const Properties &properties, ::llvm::ArrayRef<::mlir::NamedAttribute> discardableAttributes = {}); static swmmac_f32_16x16x64_bf16 create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, const Properties &properties, ::llvm::ArrayRef<::mlir::NamedAttribute> discardableAttributes = {}); static swmmac_f32_16x16x64_bf16 create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, const Properties &properties, ::llvm::ArrayRef<::mlir::NamedAttribute> discardableAttributes = {}); static void populateDefaultProperties(::mlir::OperationName opName, Properties &properties); ::llvm::LogicalResult verifyInvariantsImpl(); ::llvm::LogicalResult verifyInvariants(); static ::mlir::ParseResult parse(::mlir::OpAsmParser &parser, ::mlir::OperationState &result); void print(::mlir::OpAsmPrinter &_odsPrinter); private: ::mlir::StringAttr getAttributeNameForIndex(unsigned index) { return getAttributeNameForIndex((*this)->getName(), index); } static ::mlir::StringAttr getAttributeNameForIndex(::mlir::OperationName name, unsigned index) { assert(index < 4 && "invalid attribute index"); assert(name.getStringRef() == getOperationName() && "invalid operation name"); assert(name.isRegistered() && "Operation isn't registered, missing a " "dependent dialect loading?"); return name.getAttributeNames()[index]; } public: }; } // namespace mlir::ROCDL MLIR_DECLARE_EXPLICIT_TYPE_ID(::mlir::ROCDL::swmmac_f32_16x16x64_bf16) MLIR_DECLARE_EXPLICIT_TYPE_ID(::mlir::ROCDL::detail::swmmac_f32_16x16x64_bf16GenericAdaptorBase::Properties) namespace mlir::ROCDL { //===----------------------------------------------------------------------===// // ::mlir::ROCDL::swmmac_f32_16x16x64_f16 declarations //===----------------------------------------------------------------------===// namespace detail { class swmmac_f32_16x16x64_f16GenericAdaptorBase { public: struct Properties { using reuseATy = ::mlir::IntegerAttr; reuseATy reuseA; auto getReuseA() const { auto &propStorage = this->reuseA; return ::llvm::dyn_cast_or_null<::mlir::IntegerAttr>(propStorage); } void setReuseA(const ::mlir::IntegerAttr &propValue) { this->reuseA = propValue; } using reuseBTy = ::mlir::IntegerAttr; reuseBTy reuseB; auto getReuseB() const { auto &propStorage = this->reuseB; return ::llvm::dyn_cast_or_null<::mlir::IntegerAttr>(propStorage); } void setReuseB(const ::mlir::IntegerAttr &propValue) { this->reuseB = propValue; } using signATy = ::mlir::IntegerAttr; signATy signA; auto getSignA() const { auto &propStorage = this->signA; return ::llvm::dyn_cast_or_null<::mlir::IntegerAttr>(propStorage); } void setSignA(const ::mlir::IntegerAttr &propValue) { this->signA = propValue; } using signBTy = ::mlir::IntegerAttr; signBTy signB; auto getSignB() const { auto &propStorage = this->signB; return ::llvm::dyn_cast_or_null<::mlir::IntegerAttr>(propStorage); } void setSignB(const ::mlir::IntegerAttr &propValue) { this->signB = propValue; } bool operator==(const Properties &rhs) const { return rhs.reuseA == this->reuseA && rhs.reuseB == this->reuseB && rhs.signA == this->signA && rhs.signB == this->signB && true; } bool operator!=(const Properties &rhs) const { return !(*this == rhs); } }; protected: ::mlir::DictionaryAttr odsAttrs; ::std::optional<::mlir::OperationName> odsOpName; Properties properties; ::mlir::RegionRange odsRegions; public: swmmac_f32_16x16x64_f16GenericAdaptorBase(::mlir::DictionaryAttr attrs, const Properties &properties, ::mlir::RegionRange regions = {}) : odsAttrs(attrs), properties(properties), odsRegions(regions) { if (odsAttrs) odsOpName.emplace("rocdl.swmmac.f32.16x16x64.f16", odsAttrs.getContext()); } swmmac_f32_16x16x64_f16GenericAdaptorBase(swmmac_f32_16x16x64_f16 op); std::pair getODSOperandIndexAndLength(unsigned index, unsigned odsOperandsSize) { return {index, 1}; } const Properties &getProperties() { return properties; } ::mlir::DictionaryAttr getAttributes() { return odsAttrs; } ::mlir::IntegerAttr getSignAAttr(); bool getSignA(); ::mlir::IntegerAttr getSignBAttr(); bool getSignB(); ::mlir::IntegerAttr getReuseAAttr(); bool getReuseA(); ::mlir::IntegerAttr getReuseBAttr(); bool getReuseB(); }; } // namespace detail template class swmmac_f32_16x16x64_f16GenericAdaptor : public detail::swmmac_f32_16x16x64_f16GenericAdaptorBase { using ValueT = ::llvm::detail::ValueOfRange; using Base = detail::swmmac_f32_16x16x64_f16GenericAdaptorBase; static constexpr int odsIndex_a = 0; static constexpr int odsIndex_b = 1; static constexpr int odsIndex_c = 2; static constexpr int odsIndex_index = 3; public: swmmac_f32_16x16x64_f16GenericAdaptor(RangeT values, ::mlir::DictionaryAttr attrs, const Properties &properties, ::mlir::RegionRange regions = {}) : Base(attrs, properties, regions), odsOperands(values) {} swmmac_f32_16x16x64_f16GenericAdaptor(RangeT values, ::mlir::DictionaryAttr attrs, ::mlir::PropertyRef properties, ::mlir::RegionRange regions = {}) : swmmac_f32_16x16x64_f16GenericAdaptor(values, attrs, (properties ? *properties.as() : Properties{}), regions) {} swmmac_f32_16x16x64_f16GenericAdaptor(RangeT values, ::mlir::DictionaryAttr attrs = nullptr) : swmmac_f32_16x16x64_f16GenericAdaptor(values, attrs, Properties{}, {}) {} swmmac_f32_16x16x64_f16GenericAdaptor(RangeT values, const swmmac_f32_16x16x64_f16GenericAdaptorBase &base) : Base(base), odsOperands(values) {} template >> swmmac_f32_16x16x64_f16GenericAdaptor(RangeT values, LateInst op) : Base(op), odsOperands(values) {} std::pair getODSOperandIndexAndLength(unsigned index) { return Base::getODSOperandIndexAndLength(index, odsOperands.size()); } RangeT getODSOperands(unsigned index) { auto valueRange = getODSOperandIndexAndLength(index); return {std::next(odsOperands.begin(), valueRange.first), std::next(odsOperands.begin(), valueRange.first + valueRange.second)}; } ValueT getA() { return (*getODSOperands(0).begin()); } ValueT getB() { return (*getODSOperands(1).begin()); } ValueT getC() { return (*getODSOperands(2).begin()); } ValueT getIndex() { return (*getODSOperands(3).begin()); } RangeT getOperands() { return odsOperands; } private: RangeT odsOperands; }; class swmmac_f32_16x16x64_f16Adaptor : public swmmac_f32_16x16x64_f16GenericAdaptor<::mlir::ValueRange> { public: using swmmac_f32_16x16x64_f16GenericAdaptor::swmmac_f32_16x16x64_f16GenericAdaptor; swmmac_f32_16x16x64_f16Adaptor(swmmac_f32_16x16x64_f16 op); ::llvm::LogicalResult verify(::mlir::Location loc); }; class swmmac_f32_16x16x64_f16 : public ::mlir::Op::Impl, ::mlir::OpTrait::ZeroSuccessors, ::mlir::OpTrait::NOperands<4>::Impl, ::mlir::OpTrait::OpInvariants, ::mlir::BytecodeOpInterface::Trait> { public: using Op::Op; using Op::print; using Adaptor = swmmac_f32_16x16x64_f16Adaptor; template using GenericAdaptor = swmmac_f32_16x16x64_f16GenericAdaptor; using FoldAdaptor = GenericAdaptor<::llvm::ArrayRef<::mlir::Attribute>>; static constexpr int odsIndex_a = 0; static constexpr int odsIndex_b = 1; static constexpr int odsIndex_c = 2; static constexpr int odsIndex_index = 3; using Properties = FoldAdaptor::Properties; static ::llvm::ArrayRef<::llvm::StringRef> getAttributeNames() { static ::llvm::StringRef attrNames[] = {::llvm::StringRef("reuseA"), ::llvm::StringRef("reuseB"), ::llvm::StringRef("signA"), ::llvm::StringRef("signB")}; return ::llvm::ArrayRef(attrNames); } ::mlir::StringAttr getReuseAAttrName() { return getAttributeNameForIndex(0); } static ::mlir::StringAttr getReuseAAttrName(::mlir::OperationName name) { return getAttributeNameForIndex(name, 0); } ::mlir::StringAttr getReuseBAttrName() { return getAttributeNameForIndex(1); } static ::mlir::StringAttr getReuseBAttrName(::mlir::OperationName name) { return getAttributeNameForIndex(name, 1); } ::mlir::StringAttr getSignAAttrName() { return getAttributeNameForIndex(2); } static ::mlir::StringAttr getSignAAttrName(::mlir::OperationName name) { return getAttributeNameForIndex(name, 2); } ::mlir::StringAttr getSignBAttrName() { return getAttributeNameForIndex(3); } static ::mlir::StringAttr getSignBAttrName(::mlir::OperationName name) { return getAttributeNameForIndex(name, 3); } static constexpr ::llvm::StringLiteral getOperationName() { return ::llvm::StringLiteral("rocdl.swmmac.f32.16x16x64.f16"); } std::pair getODSOperandIndexAndLength(unsigned index) { return {index, 1}; } ::mlir::Operation::operand_range getODSOperands(unsigned index) { auto valueRange = getODSOperandIndexAndLength(index); return {std::next(getOperation()->operand_begin(), valueRange.first), std::next(getOperation()->operand_begin(), valueRange.first + valueRange.second)}; } ::mlir::TypedValue<::mlir::Type> getA() { return ::llvm::cast<::mlir::TypedValue<::mlir::Type>>(*getODSOperands(0).begin()); } ::mlir::TypedValue<::mlir::Type> getB() { return ::llvm::cast<::mlir::TypedValue<::mlir::Type>>(*getODSOperands(1).begin()); } ::mlir::TypedValue<::mlir::Type> getC() { return ::llvm::cast<::mlir::TypedValue<::mlir::Type>>(*getODSOperands(2).begin()); } ::mlir::TypedValue<::mlir::IntegerType> getIndex() { return ::llvm::cast<::mlir::TypedValue<::mlir::IntegerType>>(*getODSOperands(3).begin()); } ::mlir::OpOperand &getAMutable() { auto range = getODSOperandIndexAndLength(0); return getOperation()->getOpOperand(range.first); } ::mlir::OpOperand &getBMutable() { auto range = getODSOperandIndexAndLength(1); return getOperation()->getOpOperand(range.first); } ::mlir::OpOperand &getCMutable() { auto range = getODSOperandIndexAndLength(2); return getOperation()->getOpOperand(range.first); } ::mlir::OpOperand &getIndexMutable() { auto range = getODSOperandIndexAndLength(3); return getOperation()->getOpOperand(range.first); } std::pair getODSResultIndexAndLength(unsigned index) { return {index, 1}; } ::mlir::Operation::result_range getODSResults(unsigned index) { auto valueRange = getODSResultIndexAndLength(index); return {std::next(getOperation()->result_begin(), valueRange.first), std::next(getOperation()->result_begin(), valueRange.first + valueRange.second)}; } ::mlir::TypedValue<::mlir::Type> getRes() { return ::llvm::cast<::mlir::TypedValue<::mlir::Type>>(*getODSResults(0).begin()); } static ::llvm::LogicalResult setPropertiesFromAttr(Properties &prop, ::mlir::Attribute attr, ::llvm::function_ref<::mlir::InFlightDiagnostic()> emitError); static ::mlir::Attribute getPropertiesAsAttr(::mlir::MLIRContext *ctx, const Properties &prop); static llvm::hash_code computePropertiesHash(const Properties &prop); static std::optional getInherentAttr(::mlir::MLIRContext *ctx, const Properties &prop, llvm::StringRef name); static void setInherentAttr(Properties &prop, llvm::StringRef name, mlir::Attribute value); static void populateInherentAttrs(::mlir::MLIRContext *ctx, const Properties &prop, ::mlir::NamedAttrList &attrs); static ::llvm::LogicalResult verifyInherentAttrs(::mlir::OperationName opName, ::mlir::NamedAttrList &attrs, llvm::function_ref<::mlir::InFlightDiagnostic()> emitError); static ::llvm::LogicalResult readProperties(::mlir::DialectBytecodeReader &reader, ::mlir::OperationState &state); void writeProperties(::mlir::DialectBytecodeWriter &writer); ::mlir::IntegerAttr getSignAAttr() { return ::llvm::dyn_cast_or_null<::mlir::IntegerAttr>(getProperties().signA); } bool getSignA(); ::mlir::IntegerAttr getSignBAttr() { return ::llvm::dyn_cast_or_null<::mlir::IntegerAttr>(getProperties().signB); } bool getSignB(); ::mlir::IntegerAttr getReuseAAttr() { return ::llvm::dyn_cast_or_null<::mlir::IntegerAttr>(getProperties().reuseA); } bool getReuseA(); ::mlir::IntegerAttr getReuseBAttr() { return ::llvm::dyn_cast_or_null<::mlir::IntegerAttr>(getProperties().reuseB); } bool getReuseB(); void setSignAAttr(::mlir::IntegerAttr attr) { getProperties().signA = attr; } void setSignA(bool attrValue); void setSignBAttr(::mlir::IntegerAttr attr) { getProperties().signB = attr; } void setSignB(bool attrValue); void setReuseAAttr(::mlir::IntegerAttr attr) { getProperties().reuseA = attr; } void setReuseA(bool attrValue); void setReuseBAttr(::mlir::IntegerAttr attr) { getProperties().reuseB = attr; } void setReuseB(bool attrValue); static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::Type res, ::mlir::IntegerAttr signA, ::mlir::Value a, ::mlir::IntegerAttr signB, ::mlir::Value b, ::mlir::Value c, ::mlir::Value index, ::mlir::IntegerAttr reuseA, ::mlir::IntegerAttr reuseB = nullptr); static swmmac_f32_16x16x64_f16 create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::Type res, ::mlir::IntegerAttr signA, ::mlir::Value a, ::mlir::IntegerAttr signB, ::mlir::Value b, ::mlir::Value c, ::mlir::Value index, ::mlir::IntegerAttr reuseA, ::mlir::IntegerAttr reuseB = nullptr); static swmmac_f32_16x16x64_f16 create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::Type res, ::mlir::IntegerAttr signA, ::mlir::Value a, ::mlir::IntegerAttr signB, ::mlir::Value b, ::mlir::Value c, ::mlir::Value index, ::mlir::IntegerAttr reuseA, ::mlir::IntegerAttr reuseB = nullptr); static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::IntegerAttr signA, ::mlir::Value a, ::mlir::IntegerAttr signB, ::mlir::Value b, ::mlir::Value c, ::mlir::Value index, ::mlir::IntegerAttr reuseA, ::mlir::IntegerAttr reuseB = nullptr); static swmmac_f32_16x16x64_f16 create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::IntegerAttr signA, ::mlir::Value a, ::mlir::IntegerAttr signB, ::mlir::Value b, ::mlir::Value c, ::mlir::Value index, ::mlir::IntegerAttr reuseA, ::mlir::IntegerAttr reuseB = nullptr); static swmmac_f32_16x16x64_f16 create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::IntegerAttr signA, ::mlir::Value a, ::mlir::IntegerAttr signB, ::mlir::Value b, ::mlir::Value c, ::mlir::Value index, ::mlir::IntegerAttr reuseA, ::mlir::IntegerAttr reuseB = nullptr); static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::Type res, bool signA, ::mlir::Value a, bool signB, ::mlir::Value b, ::mlir::Value c, ::mlir::Value index, bool reuseA = 0, bool reuseB = 0); static swmmac_f32_16x16x64_f16 create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::Type res, bool signA, ::mlir::Value a, bool signB, ::mlir::Value b, ::mlir::Value c, ::mlir::Value index, bool reuseA = 0, bool reuseB = 0); static swmmac_f32_16x16x64_f16 create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::Type res, bool signA, ::mlir::Value a, bool signB, ::mlir::Value b, ::mlir::Value c, ::mlir::Value index, bool reuseA = 0, bool reuseB = 0); static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, bool signA, ::mlir::Value a, bool signB, ::mlir::Value b, ::mlir::Value c, ::mlir::Value index, bool reuseA = 0, bool reuseB = 0); static swmmac_f32_16x16x64_f16 create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, bool signA, ::mlir::Value a, bool signB, ::mlir::Value b, ::mlir::Value c, ::mlir::Value index, bool reuseA = 0, bool reuseB = 0); static swmmac_f32_16x16x64_f16 create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, bool signA, ::mlir::Value a, bool signB, ::mlir::Value b, ::mlir::Value c, ::mlir::Value index, bool reuseA = 0, bool reuseB = 0); static void build(::mlir::OpBuilder &, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, ::llvm::ArrayRef<::mlir::NamedAttribute> attributes = {}); static swmmac_f32_16x16x64_f16 create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, ::llvm::ArrayRef<::mlir::NamedAttribute> attributes = {}); static swmmac_f32_16x16x64_f16 create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, ::llvm::ArrayRef<::mlir::NamedAttribute> attributes = {}); static void build(::mlir::OpBuilder &, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, const Properties &properties, ::llvm::ArrayRef<::mlir::NamedAttribute> discardableAttributes = {}); static swmmac_f32_16x16x64_f16 create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, const Properties &properties, ::llvm::ArrayRef<::mlir::NamedAttribute> discardableAttributes = {}); static swmmac_f32_16x16x64_f16 create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, const Properties &properties, ::llvm::ArrayRef<::mlir::NamedAttribute> discardableAttributes = {}); static void populateDefaultProperties(::mlir::OperationName opName, Properties &properties); ::llvm::LogicalResult verifyInvariantsImpl(); ::llvm::LogicalResult verifyInvariants(); static ::mlir::ParseResult parse(::mlir::OpAsmParser &parser, ::mlir::OperationState &result); void print(::mlir::OpAsmPrinter &_odsPrinter); private: ::mlir::StringAttr getAttributeNameForIndex(unsigned index) { return getAttributeNameForIndex((*this)->getName(), index); } static ::mlir::StringAttr getAttributeNameForIndex(::mlir::OperationName name, unsigned index) { assert(index < 4 && "invalid attribute index"); assert(name.getStringRef() == getOperationName() && "invalid operation name"); assert(name.isRegistered() && "Operation isn't registered, missing a " "dependent dialect loading?"); return name.getAttributeNames()[index]; } public: }; } // namespace mlir::ROCDL MLIR_DECLARE_EXPLICIT_TYPE_ID(::mlir::ROCDL::swmmac_f32_16x16x64_f16) MLIR_DECLARE_EXPLICIT_TYPE_ID(::mlir::ROCDL::detail::swmmac_f32_16x16x64_f16GenericAdaptorBase::Properties) namespace mlir::ROCDL { //===----------------------------------------------------------------------===// // ::mlir::ROCDL::swmmac_i32_16x16x128_iu8 declarations //===----------------------------------------------------------------------===// namespace detail { class swmmac_i32_16x16x128_iu8GenericAdaptorBase { public: struct Properties { using clampTy = ::mlir::IntegerAttr; clampTy clamp; auto getClamp() const { auto &propStorage = this->clamp; return ::llvm::dyn_cast_or_null<::mlir::IntegerAttr>(propStorage); } void setClamp(const ::mlir::IntegerAttr &propValue) { this->clamp = propValue; } using reuseATy = ::mlir::IntegerAttr; reuseATy reuseA; auto getReuseA() const { auto &propStorage = this->reuseA; return ::llvm::dyn_cast_or_null<::mlir::IntegerAttr>(propStorage); } void setReuseA(const ::mlir::IntegerAttr &propValue) { this->reuseA = propValue; } using reuseBTy = ::mlir::IntegerAttr; reuseBTy reuseB; auto getReuseB() const { auto &propStorage = this->reuseB; return ::llvm::dyn_cast_or_null<::mlir::IntegerAttr>(propStorage); } void setReuseB(const ::mlir::IntegerAttr &propValue) { this->reuseB = propValue; } using signATy = ::mlir::IntegerAttr; signATy signA; auto getSignA() const { auto &propStorage = this->signA; return ::llvm::dyn_cast_or_null<::mlir::IntegerAttr>(propStorage); } void setSignA(const ::mlir::IntegerAttr &propValue) { this->signA = propValue; } using signBTy = ::mlir::IntegerAttr; signBTy signB; auto getSignB() const { auto &propStorage = this->signB; return ::llvm::dyn_cast_or_null<::mlir::IntegerAttr>(propStorage); } void setSignB(const ::mlir::IntegerAttr &propValue) { this->signB = propValue; } bool operator==(const Properties &rhs) const { return rhs.clamp == this->clamp && rhs.reuseA == this->reuseA && rhs.reuseB == this->reuseB && rhs.signA == this->signA && rhs.signB == this->signB && true; } bool operator!=(const Properties &rhs) const { return !(*this == rhs); } }; protected: ::mlir::DictionaryAttr odsAttrs; ::std::optional<::mlir::OperationName> odsOpName; Properties properties; ::mlir::RegionRange odsRegions; public: swmmac_i32_16x16x128_iu8GenericAdaptorBase(::mlir::DictionaryAttr attrs, const Properties &properties, ::mlir::RegionRange regions = {}) : odsAttrs(attrs), properties(properties), odsRegions(regions) { if (odsAttrs) odsOpName.emplace("rocdl.swmmac.i32.16x16x128.iu8", odsAttrs.getContext()); } swmmac_i32_16x16x128_iu8GenericAdaptorBase(swmmac_i32_16x16x128_iu8 op); std::pair getODSOperandIndexAndLength(unsigned index, unsigned odsOperandsSize) { return {index, 1}; } const Properties &getProperties() { return properties; } ::mlir::DictionaryAttr getAttributes() { return odsAttrs; } ::mlir::IntegerAttr getSignAAttr(); bool getSignA(); ::mlir::IntegerAttr getSignBAttr(); bool getSignB(); ::mlir::IntegerAttr getReuseAAttr(); bool getReuseA(); ::mlir::IntegerAttr getReuseBAttr(); bool getReuseB(); ::mlir::IntegerAttr getClampAttr(); bool getClamp(); }; } // namespace detail template class swmmac_i32_16x16x128_iu8GenericAdaptor : public detail::swmmac_i32_16x16x128_iu8GenericAdaptorBase { using ValueT = ::llvm::detail::ValueOfRange; using Base = detail::swmmac_i32_16x16x128_iu8GenericAdaptorBase; static constexpr int odsIndex_a = 0; static constexpr int odsIndex_b = 1; static constexpr int odsIndex_c = 2; static constexpr int odsIndex_index = 3; public: swmmac_i32_16x16x128_iu8GenericAdaptor(RangeT values, ::mlir::DictionaryAttr attrs, const Properties &properties, ::mlir::RegionRange regions = {}) : Base(attrs, properties, regions), odsOperands(values) {} swmmac_i32_16x16x128_iu8GenericAdaptor(RangeT values, ::mlir::DictionaryAttr attrs, ::mlir::PropertyRef properties, ::mlir::RegionRange regions = {}) : swmmac_i32_16x16x128_iu8GenericAdaptor(values, attrs, (properties ? *properties.as() : Properties{}), regions) {} swmmac_i32_16x16x128_iu8GenericAdaptor(RangeT values, ::mlir::DictionaryAttr attrs = nullptr) : swmmac_i32_16x16x128_iu8GenericAdaptor(values, attrs, Properties{}, {}) {} swmmac_i32_16x16x128_iu8GenericAdaptor(RangeT values, const swmmac_i32_16x16x128_iu8GenericAdaptorBase &base) : Base(base), odsOperands(values) {} template >> swmmac_i32_16x16x128_iu8GenericAdaptor(RangeT values, LateInst op) : Base(op), odsOperands(values) {} std::pair getODSOperandIndexAndLength(unsigned index) { return Base::getODSOperandIndexAndLength(index, odsOperands.size()); } RangeT getODSOperands(unsigned index) { auto valueRange = getODSOperandIndexAndLength(index); return {std::next(odsOperands.begin(), valueRange.first), std::next(odsOperands.begin(), valueRange.first + valueRange.second)}; } ValueT getA() { return (*getODSOperands(0).begin()); } ValueT getB() { return (*getODSOperands(1).begin()); } ValueT getC() { return (*getODSOperands(2).begin()); } ValueT getIndex() { return (*getODSOperands(3).begin()); } RangeT getOperands() { return odsOperands; } private: RangeT odsOperands; }; class swmmac_i32_16x16x128_iu8Adaptor : public swmmac_i32_16x16x128_iu8GenericAdaptor<::mlir::ValueRange> { public: using swmmac_i32_16x16x128_iu8GenericAdaptor::swmmac_i32_16x16x128_iu8GenericAdaptor; swmmac_i32_16x16x128_iu8Adaptor(swmmac_i32_16x16x128_iu8 op); ::llvm::LogicalResult verify(::mlir::Location loc); }; class swmmac_i32_16x16x128_iu8 : public ::mlir::Op::Impl, ::mlir::OpTrait::ZeroSuccessors, ::mlir::OpTrait::NOperands<4>::Impl, ::mlir::OpTrait::OpInvariants, ::mlir::BytecodeOpInterface::Trait> { public: using Op::Op; using Op::print; using Adaptor = swmmac_i32_16x16x128_iu8Adaptor; template using GenericAdaptor = swmmac_i32_16x16x128_iu8GenericAdaptor; using FoldAdaptor = GenericAdaptor<::llvm::ArrayRef<::mlir::Attribute>>; static constexpr int odsIndex_a = 0; static constexpr int odsIndex_b = 1; static constexpr int odsIndex_c = 2; static constexpr int odsIndex_index = 3; using Properties = FoldAdaptor::Properties; static ::llvm::ArrayRef<::llvm::StringRef> getAttributeNames() { static ::llvm::StringRef attrNames[] = {::llvm::StringRef("clamp"), ::llvm::StringRef("reuseA"), ::llvm::StringRef("reuseB"), ::llvm::StringRef("signA"), ::llvm::StringRef("signB")}; return ::llvm::ArrayRef(attrNames); } ::mlir::StringAttr getClampAttrName() { return getAttributeNameForIndex(0); } static ::mlir::StringAttr getClampAttrName(::mlir::OperationName name) { return getAttributeNameForIndex(name, 0); } ::mlir::StringAttr getReuseAAttrName() { return getAttributeNameForIndex(1); } static ::mlir::StringAttr getReuseAAttrName(::mlir::OperationName name) { return getAttributeNameForIndex(name, 1); } ::mlir::StringAttr getReuseBAttrName() { return getAttributeNameForIndex(2); } static ::mlir::StringAttr getReuseBAttrName(::mlir::OperationName name) { return getAttributeNameForIndex(name, 2); } ::mlir::StringAttr getSignAAttrName() { return getAttributeNameForIndex(3); } static ::mlir::StringAttr getSignAAttrName(::mlir::OperationName name) { return getAttributeNameForIndex(name, 3); } ::mlir::StringAttr getSignBAttrName() { return getAttributeNameForIndex(4); } static ::mlir::StringAttr getSignBAttrName(::mlir::OperationName name) { return getAttributeNameForIndex(name, 4); } static constexpr ::llvm::StringLiteral getOperationName() { return ::llvm::StringLiteral("rocdl.swmmac.i32.16x16x128.iu8"); } std::pair getODSOperandIndexAndLength(unsigned index) { return {index, 1}; } ::mlir::Operation::operand_range getODSOperands(unsigned index) { auto valueRange = getODSOperandIndexAndLength(index); return {std::next(getOperation()->operand_begin(), valueRange.first), std::next(getOperation()->operand_begin(), valueRange.first + valueRange.second)}; } ::mlir::TypedValue<::mlir::Type> getA() { return ::llvm::cast<::mlir::TypedValue<::mlir::Type>>(*getODSOperands(0).begin()); } ::mlir::TypedValue<::mlir::Type> getB() { return ::llvm::cast<::mlir::TypedValue<::mlir::Type>>(*getODSOperands(1).begin()); } ::mlir::TypedValue<::mlir::Type> getC() { return ::llvm::cast<::mlir::TypedValue<::mlir::Type>>(*getODSOperands(2).begin()); } ::mlir::TypedValue<::mlir::IntegerType> getIndex() { return ::llvm::cast<::mlir::TypedValue<::mlir::IntegerType>>(*getODSOperands(3).begin()); } ::mlir::OpOperand &getAMutable() { auto range = getODSOperandIndexAndLength(0); return getOperation()->getOpOperand(range.first); } ::mlir::OpOperand &getBMutable() { auto range = getODSOperandIndexAndLength(1); return getOperation()->getOpOperand(range.first); } ::mlir::OpOperand &getCMutable() { auto range = getODSOperandIndexAndLength(2); return getOperation()->getOpOperand(range.first); } ::mlir::OpOperand &getIndexMutable() { auto range = getODSOperandIndexAndLength(3); return getOperation()->getOpOperand(range.first); } std::pair getODSResultIndexAndLength(unsigned index) { return {index, 1}; } ::mlir::Operation::result_range getODSResults(unsigned index) { auto valueRange = getODSResultIndexAndLength(index); return {std::next(getOperation()->result_begin(), valueRange.first), std::next(getOperation()->result_begin(), valueRange.first + valueRange.second)}; } ::mlir::TypedValue<::mlir::Type> getRes() { return ::llvm::cast<::mlir::TypedValue<::mlir::Type>>(*getODSResults(0).begin()); } static ::llvm::LogicalResult setPropertiesFromAttr(Properties &prop, ::mlir::Attribute attr, ::llvm::function_ref<::mlir::InFlightDiagnostic()> emitError); static ::mlir::Attribute getPropertiesAsAttr(::mlir::MLIRContext *ctx, const Properties &prop); static llvm::hash_code computePropertiesHash(const Properties &prop); static std::optional getInherentAttr(::mlir::MLIRContext *ctx, const Properties &prop, llvm::StringRef name); static void setInherentAttr(Properties &prop, llvm::StringRef name, mlir::Attribute value); static void populateInherentAttrs(::mlir::MLIRContext *ctx, const Properties &prop, ::mlir::NamedAttrList &attrs); static ::llvm::LogicalResult verifyInherentAttrs(::mlir::OperationName opName, ::mlir::NamedAttrList &attrs, llvm::function_ref<::mlir::InFlightDiagnostic()> emitError); static ::llvm::LogicalResult readProperties(::mlir::DialectBytecodeReader &reader, ::mlir::OperationState &state); void writeProperties(::mlir::DialectBytecodeWriter &writer); ::mlir::IntegerAttr getSignAAttr() { return ::llvm::dyn_cast_or_null<::mlir::IntegerAttr>(getProperties().signA); } bool getSignA(); ::mlir::IntegerAttr getSignBAttr() { return ::llvm::dyn_cast_or_null<::mlir::IntegerAttr>(getProperties().signB); } bool getSignB(); ::mlir::IntegerAttr getReuseAAttr() { return ::llvm::dyn_cast_or_null<::mlir::IntegerAttr>(getProperties().reuseA); } bool getReuseA(); ::mlir::IntegerAttr getReuseBAttr() { return ::llvm::dyn_cast_or_null<::mlir::IntegerAttr>(getProperties().reuseB); } bool getReuseB(); ::mlir::IntegerAttr getClampAttr() { return ::llvm::dyn_cast_or_null<::mlir::IntegerAttr>(getProperties().clamp); } bool getClamp(); void setSignAAttr(::mlir::IntegerAttr attr) { getProperties().signA = attr; } void setSignA(bool attrValue); void setSignBAttr(::mlir::IntegerAttr attr) { getProperties().signB = attr; } void setSignB(bool attrValue); void setReuseAAttr(::mlir::IntegerAttr attr) { getProperties().reuseA = attr; } void setReuseA(bool attrValue); void setReuseBAttr(::mlir::IntegerAttr attr) { getProperties().reuseB = attr; } void setReuseB(bool attrValue); void setClampAttr(::mlir::IntegerAttr attr) { getProperties().clamp = attr; } void setClamp(bool attrValue); static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::Type res, ::mlir::IntegerAttr signA, ::mlir::Value a, ::mlir::IntegerAttr signB, ::mlir::Value b, ::mlir::Value c, ::mlir::Value index, ::mlir::IntegerAttr reuseA, ::mlir::IntegerAttr reuseB = nullptr, ::mlir::IntegerAttr clamp = nullptr); static swmmac_i32_16x16x128_iu8 create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::Type res, ::mlir::IntegerAttr signA, ::mlir::Value a, ::mlir::IntegerAttr signB, ::mlir::Value b, ::mlir::Value c, ::mlir::Value index, ::mlir::IntegerAttr reuseA, ::mlir::IntegerAttr reuseB = nullptr, ::mlir::IntegerAttr clamp = nullptr); static swmmac_i32_16x16x128_iu8 create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::Type res, ::mlir::IntegerAttr signA, ::mlir::Value a, ::mlir::IntegerAttr signB, ::mlir::Value b, ::mlir::Value c, ::mlir::Value index, ::mlir::IntegerAttr reuseA, ::mlir::IntegerAttr reuseB = nullptr, ::mlir::IntegerAttr clamp = nullptr); static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::IntegerAttr signA, ::mlir::Value a, ::mlir::IntegerAttr signB, ::mlir::Value b, ::mlir::Value c, ::mlir::Value index, ::mlir::IntegerAttr reuseA, ::mlir::IntegerAttr reuseB = nullptr, ::mlir::IntegerAttr clamp = nullptr); static swmmac_i32_16x16x128_iu8 create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::IntegerAttr signA, ::mlir::Value a, ::mlir::IntegerAttr signB, ::mlir::Value b, ::mlir::Value c, ::mlir::Value index, ::mlir::IntegerAttr reuseA, ::mlir::IntegerAttr reuseB = nullptr, ::mlir::IntegerAttr clamp = nullptr); static swmmac_i32_16x16x128_iu8 create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::IntegerAttr signA, ::mlir::Value a, ::mlir::IntegerAttr signB, ::mlir::Value b, ::mlir::Value c, ::mlir::Value index, ::mlir::IntegerAttr reuseA, ::mlir::IntegerAttr reuseB = nullptr, ::mlir::IntegerAttr clamp = nullptr); static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::Type res, bool signA, ::mlir::Value a, bool signB, ::mlir::Value b, ::mlir::Value c, ::mlir::Value index, bool reuseA = 0, bool reuseB = 0, bool clamp = 0); static swmmac_i32_16x16x128_iu8 create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::Type res, bool signA, ::mlir::Value a, bool signB, ::mlir::Value b, ::mlir::Value c, ::mlir::Value index, bool reuseA = 0, bool reuseB = 0, bool clamp = 0); static swmmac_i32_16x16x128_iu8 create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::Type res, bool signA, ::mlir::Value a, bool signB, ::mlir::Value b, ::mlir::Value c, ::mlir::Value index, bool reuseA = 0, bool reuseB = 0, bool clamp = 0); static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, bool signA, ::mlir::Value a, bool signB, ::mlir::Value b, ::mlir::Value c, ::mlir::Value index, bool reuseA = 0, bool reuseB = 0, bool clamp = 0); static swmmac_i32_16x16x128_iu8 create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, bool signA, ::mlir::Value a, bool signB, ::mlir::Value b, ::mlir::Value c, ::mlir::Value index, bool reuseA = 0, bool reuseB = 0, bool clamp = 0); static swmmac_i32_16x16x128_iu8 create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, bool signA, ::mlir::Value a, bool signB, ::mlir::Value b, ::mlir::Value c, ::mlir::Value index, bool reuseA = 0, bool reuseB = 0, bool clamp = 0); static void build(::mlir::OpBuilder &, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, ::llvm::ArrayRef<::mlir::NamedAttribute> attributes = {}); static swmmac_i32_16x16x128_iu8 create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, ::llvm::ArrayRef<::mlir::NamedAttribute> attributes = {}); static swmmac_i32_16x16x128_iu8 create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, ::llvm::ArrayRef<::mlir::NamedAttribute> attributes = {}); static void build(::mlir::OpBuilder &, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, const Properties &properties, ::llvm::ArrayRef<::mlir::NamedAttribute> discardableAttributes = {}); static swmmac_i32_16x16x128_iu8 create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, const Properties &properties, ::llvm::ArrayRef<::mlir::NamedAttribute> discardableAttributes = {}); static swmmac_i32_16x16x128_iu8 create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, const Properties &properties, ::llvm::ArrayRef<::mlir::NamedAttribute> discardableAttributes = {}); static void populateDefaultProperties(::mlir::OperationName opName, Properties &properties); ::llvm::LogicalResult verifyInvariantsImpl(); ::llvm::LogicalResult verifyInvariants(); static ::mlir::ParseResult parse(::mlir::OpAsmParser &parser, ::mlir::OperationState &result); void print(::mlir::OpAsmPrinter &_odsPrinter); private: ::mlir::StringAttr getAttributeNameForIndex(unsigned index) { return getAttributeNameForIndex((*this)->getName(), index); } static ::mlir::StringAttr getAttributeNameForIndex(::mlir::OperationName name, unsigned index) { assert(index < 5 && "invalid attribute index"); assert(name.getStringRef() == getOperationName() && "invalid operation name"); assert(name.isRegistered() && "Operation isn't registered, missing a " "dependent dialect loading?"); return name.getAttributeNames()[index]; } public: }; } // namespace mlir::ROCDL MLIR_DECLARE_EXPLICIT_TYPE_ID(::mlir::ROCDL::swmmac_i32_16x16x128_iu8) MLIR_DECLARE_EXPLICIT_TYPE_ID(::mlir::ROCDL::detail::swmmac_i32_16x16x128_iu8GenericAdaptorBase::Properties) namespace mlir::ROCDL { //===----------------------------------------------------------------------===// // ::mlir::ROCDL::swmmac_i32_16x16x32_iu4 declarations //===----------------------------------------------------------------------===// namespace detail { class swmmac_i32_16x16x32_iu4GenericAdaptorBase { public: struct Properties { using clampTy = ::mlir::IntegerAttr; clampTy clamp; auto getClamp() const { auto &propStorage = this->clamp; return ::llvm::dyn_cast_or_null<::mlir::IntegerAttr>(propStorage); } void setClamp(const ::mlir::IntegerAttr &propValue) { this->clamp = propValue; } using signATy = ::mlir::IntegerAttr; signATy signA; auto getSignA() const { auto &propStorage = this->signA; return ::llvm::dyn_cast_or_null<::mlir::IntegerAttr>(propStorage); } void setSignA(const ::mlir::IntegerAttr &propValue) { this->signA = propValue; } using signBTy = ::mlir::IntegerAttr; signBTy signB; auto getSignB() const { auto &propStorage = this->signB; return ::llvm::dyn_cast_or_null<::mlir::IntegerAttr>(propStorage); } void setSignB(const ::mlir::IntegerAttr &propValue) { this->signB = propValue; } bool operator==(const Properties &rhs) const { return rhs.clamp == this->clamp && rhs.signA == this->signA && rhs.signB == this->signB && true; } bool operator!=(const Properties &rhs) const { return !(*this == rhs); } }; protected: ::mlir::DictionaryAttr odsAttrs; ::std::optional<::mlir::OperationName> odsOpName; Properties properties; ::mlir::RegionRange odsRegions; public: swmmac_i32_16x16x32_iu4GenericAdaptorBase(::mlir::DictionaryAttr attrs, const Properties &properties, ::mlir::RegionRange regions = {}) : odsAttrs(attrs), properties(properties), odsRegions(regions) { if (odsAttrs) odsOpName.emplace("rocdl.swmmac.i32.16x16x32.iu4", odsAttrs.getContext()); } swmmac_i32_16x16x32_iu4GenericAdaptorBase(swmmac_i32_16x16x32_iu4 op); std::pair getODSOperandIndexAndLength(unsigned index, unsigned odsOperandsSize) { return {index, 1}; } const Properties &getProperties() { return properties; } ::mlir::DictionaryAttr getAttributes() { return odsAttrs; } ::mlir::IntegerAttr getSignAAttr(); bool getSignA(); ::mlir::IntegerAttr getSignBAttr(); bool getSignB(); ::mlir::IntegerAttr getClampAttr(); bool getClamp(); }; } // namespace detail template class swmmac_i32_16x16x32_iu4GenericAdaptor : public detail::swmmac_i32_16x16x32_iu4GenericAdaptorBase { using ValueT = ::llvm::detail::ValueOfRange; using Base = detail::swmmac_i32_16x16x32_iu4GenericAdaptorBase; static constexpr int odsIndex_a = 0; static constexpr int odsIndex_b = 1; static constexpr int odsIndex_c = 2; static constexpr int odsIndex_index = 3; public: swmmac_i32_16x16x32_iu4GenericAdaptor(RangeT values, ::mlir::DictionaryAttr attrs, const Properties &properties, ::mlir::RegionRange regions = {}) : Base(attrs, properties, regions), odsOperands(values) {} swmmac_i32_16x16x32_iu4GenericAdaptor(RangeT values, ::mlir::DictionaryAttr attrs, ::mlir::PropertyRef properties, ::mlir::RegionRange regions = {}) : swmmac_i32_16x16x32_iu4GenericAdaptor(values, attrs, (properties ? *properties.as() : Properties{}), regions) {} swmmac_i32_16x16x32_iu4GenericAdaptor(RangeT values, ::mlir::DictionaryAttr attrs = nullptr) : swmmac_i32_16x16x32_iu4GenericAdaptor(values, attrs, Properties{}, {}) {} swmmac_i32_16x16x32_iu4GenericAdaptor(RangeT values, const swmmac_i32_16x16x32_iu4GenericAdaptorBase &base) : Base(base), odsOperands(values) {} template >> swmmac_i32_16x16x32_iu4GenericAdaptor(RangeT values, LateInst op) : Base(op), odsOperands(values) {} std::pair getODSOperandIndexAndLength(unsigned index) { return Base::getODSOperandIndexAndLength(index, odsOperands.size()); } RangeT getODSOperands(unsigned index) { auto valueRange = getODSOperandIndexAndLength(index); return {std::next(odsOperands.begin(), valueRange.first), std::next(odsOperands.begin(), valueRange.first + valueRange.second)}; } ValueT getA() { return (*getODSOperands(0).begin()); } ValueT getB() { return (*getODSOperands(1).begin()); } ValueT getC() { return (*getODSOperands(2).begin()); } ValueT getIndex() { return (*getODSOperands(3).begin()); } RangeT getOperands() { return odsOperands; } private: RangeT odsOperands; }; class swmmac_i32_16x16x32_iu4Adaptor : public swmmac_i32_16x16x32_iu4GenericAdaptor<::mlir::ValueRange> { public: using swmmac_i32_16x16x32_iu4GenericAdaptor::swmmac_i32_16x16x32_iu4GenericAdaptor; swmmac_i32_16x16x32_iu4Adaptor(swmmac_i32_16x16x32_iu4 op); ::llvm::LogicalResult verify(::mlir::Location loc); }; class swmmac_i32_16x16x32_iu4 : public ::mlir::Op::Impl, ::mlir::OpTrait::ZeroSuccessors, ::mlir::OpTrait::NOperands<4>::Impl, ::mlir::OpTrait::OpInvariants, ::mlir::BytecodeOpInterface::Trait> { public: using Op::Op; using Op::print; using Adaptor = swmmac_i32_16x16x32_iu4Adaptor; template using GenericAdaptor = swmmac_i32_16x16x32_iu4GenericAdaptor; using FoldAdaptor = GenericAdaptor<::llvm::ArrayRef<::mlir::Attribute>>; static constexpr int odsIndex_a = 0; static constexpr int odsIndex_b = 1; static constexpr int odsIndex_c = 2; static constexpr int odsIndex_index = 3; using Properties = FoldAdaptor::Properties; static ::llvm::ArrayRef<::llvm::StringRef> getAttributeNames() { static ::llvm::StringRef attrNames[] = {::llvm::StringRef("clamp"), ::llvm::StringRef("signA"), ::llvm::StringRef("signB")}; return ::llvm::ArrayRef(attrNames); } ::mlir::StringAttr getClampAttrName() { return getAttributeNameForIndex(0); } static ::mlir::StringAttr getClampAttrName(::mlir::OperationName name) { return getAttributeNameForIndex(name, 0); } ::mlir::StringAttr getSignAAttrName() { return getAttributeNameForIndex(1); } static ::mlir::StringAttr getSignAAttrName(::mlir::OperationName name) { return getAttributeNameForIndex(name, 1); } ::mlir::StringAttr getSignBAttrName() { return getAttributeNameForIndex(2); } static ::mlir::StringAttr getSignBAttrName(::mlir::OperationName name) { return getAttributeNameForIndex(name, 2); } static constexpr ::llvm::StringLiteral getOperationName() { return ::llvm::StringLiteral("rocdl.swmmac.i32.16x16x32.iu4"); } std::pair getODSOperandIndexAndLength(unsigned index) { return {index, 1}; } ::mlir::Operation::operand_range getODSOperands(unsigned index) { auto valueRange = getODSOperandIndexAndLength(index); return {std::next(getOperation()->operand_begin(), valueRange.first), std::next(getOperation()->operand_begin(), valueRange.first + valueRange.second)}; } ::mlir::TypedValue<::mlir::Type> getA() { return ::llvm::cast<::mlir::TypedValue<::mlir::Type>>(*getODSOperands(0).begin()); } ::mlir::TypedValue<::mlir::Type> getB() { return ::llvm::cast<::mlir::TypedValue<::mlir::Type>>(*getODSOperands(1).begin()); } ::mlir::TypedValue<::mlir::Type> getC() { return ::llvm::cast<::mlir::TypedValue<::mlir::Type>>(*getODSOperands(2).begin()); } ::mlir::TypedValue<::mlir::IntegerType> getIndex() { return ::llvm::cast<::mlir::TypedValue<::mlir::IntegerType>>(*getODSOperands(3).begin()); } ::mlir::OpOperand &getAMutable() { auto range = getODSOperandIndexAndLength(0); return getOperation()->getOpOperand(range.first); } ::mlir::OpOperand &getBMutable() { auto range = getODSOperandIndexAndLength(1); return getOperation()->getOpOperand(range.first); } ::mlir::OpOperand &getCMutable() { auto range = getODSOperandIndexAndLength(2); return getOperation()->getOpOperand(range.first); } ::mlir::OpOperand &getIndexMutable() { auto range = getODSOperandIndexAndLength(3); return getOperation()->getOpOperand(range.first); } std::pair getODSResultIndexAndLength(unsigned index) { return {index, 1}; } ::mlir::Operation::result_range getODSResults(unsigned index) { auto valueRange = getODSResultIndexAndLength(index); return {std::next(getOperation()->result_begin(), valueRange.first), std::next(getOperation()->result_begin(), valueRange.first + valueRange.second)}; } ::mlir::TypedValue<::mlir::Type> getRes() { return ::llvm::cast<::mlir::TypedValue<::mlir::Type>>(*getODSResults(0).begin()); } static ::llvm::LogicalResult setPropertiesFromAttr(Properties &prop, ::mlir::Attribute attr, ::llvm::function_ref<::mlir::InFlightDiagnostic()> emitError); static ::mlir::Attribute getPropertiesAsAttr(::mlir::MLIRContext *ctx, const Properties &prop); static llvm::hash_code computePropertiesHash(const Properties &prop); static std::optional getInherentAttr(::mlir::MLIRContext *ctx, const Properties &prop, llvm::StringRef name); static void setInherentAttr(Properties &prop, llvm::StringRef name, mlir::Attribute value); static void populateInherentAttrs(::mlir::MLIRContext *ctx, const Properties &prop, ::mlir::NamedAttrList &attrs); static ::llvm::LogicalResult verifyInherentAttrs(::mlir::OperationName opName, ::mlir::NamedAttrList &attrs, llvm::function_ref<::mlir::InFlightDiagnostic()> emitError); static ::llvm::LogicalResult readProperties(::mlir::DialectBytecodeReader &reader, ::mlir::OperationState &state); void writeProperties(::mlir::DialectBytecodeWriter &writer); ::mlir::IntegerAttr getSignAAttr() { return ::llvm::dyn_cast_or_null<::mlir::IntegerAttr>(getProperties().signA); } bool getSignA(); ::mlir::IntegerAttr getSignBAttr() { return ::llvm::dyn_cast_or_null<::mlir::IntegerAttr>(getProperties().signB); } bool getSignB(); ::mlir::IntegerAttr getClampAttr() { return ::llvm::dyn_cast_or_null<::mlir::IntegerAttr>(getProperties().clamp); } bool getClamp(); void setSignAAttr(::mlir::IntegerAttr attr) { getProperties().signA = attr; } void setSignA(bool attrValue); void setSignBAttr(::mlir::IntegerAttr attr) { getProperties().signB = attr; } void setSignB(bool attrValue); void setClampAttr(::mlir::IntegerAttr attr) { getProperties().clamp = attr; } void setClamp(bool attrValue); static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::Type res, ::mlir::IntegerAttr signA, ::mlir::Value a, ::mlir::IntegerAttr signB, ::mlir::Value b, ::mlir::Value c, ::mlir::Value index, ::mlir::IntegerAttr clamp); static swmmac_i32_16x16x32_iu4 create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::Type res, ::mlir::IntegerAttr signA, ::mlir::Value a, ::mlir::IntegerAttr signB, ::mlir::Value b, ::mlir::Value c, ::mlir::Value index, ::mlir::IntegerAttr clamp); static swmmac_i32_16x16x32_iu4 create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::Type res, ::mlir::IntegerAttr signA, ::mlir::Value a, ::mlir::IntegerAttr signB, ::mlir::Value b, ::mlir::Value c, ::mlir::Value index, ::mlir::IntegerAttr clamp); static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::IntegerAttr signA, ::mlir::Value a, ::mlir::IntegerAttr signB, ::mlir::Value b, ::mlir::Value c, ::mlir::Value index, ::mlir::IntegerAttr clamp); static swmmac_i32_16x16x32_iu4 create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::IntegerAttr signA, ::mlir::Value a, ::mlir::IntegerAttr signB, ::mlir::Value b, ::mlir::Value c, ::mlir::Value index, ::mlir::IntegerAttr clamp); static swmmac_i32_16x16x32_iu4 create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::IntegerAttr signA, ::mlir::Value a, ::mlir::IntegerAttr signB, ::mlir::Value b, ::mlir::Value c, ::mlir::Value index, ::mlir::IntegerAttr clamp); static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::Type res, bool signA, ::mlir::Value a, bool signB, ::mlir::Value b, ::mlir::Value c, ::mlir::Value index, bool clamp = 0); static swmmac_i32_16x16x32_iu4 create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::Type res, bool signA, ::mlir::Value a, bool signB, ::mlir::Value b, ::mlir::Value c, ::mlir::Value index, bool clamp = 0); static swmmac_i32_16x16x32_iu4 create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::Type res, bool signA, ::mlir::Value a, bool signB, ::mlir::Value b, ::mlir::Value c, ::mlir::Value index, bool clamp = 0); static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, bool signA, ::mlir::Value a, bool signB, ::mlir::Value b, ::mlir::Value c, ::mlir::Value index, bool clamp = 0); static swmmac_i32_16x16x32_iu4 create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, bool signA, ::mlir::Value a, bool signB, ::mlir::Value b, ::mlir::Value c, ::mlir::Value index, bool clamp = 0); static swmmac_i32_16x16x32_iu4 create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, bool signA, ::mlir::Value a, bool signB, ::mlir::Value b, ::mlir::Value c, ::mlir::Value index, bool clamp = 0); static void build(::mlir::OpBuilder &, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, ::llvm::ArrayRef<::mlir::NamedAttribute> attributes = {}); static swmmac_i32_16x16x32_iu4 create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, ::llvm::ArrayRef<::mlir::NamedAttribute> attributes = {}); static swmmac_i32_16x16x32_iu4 create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, ::llvm::ArrayRef<::mlir::NamedAttribute> attributes = {}); static void build(::mlir::OpBuilder &, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, const Properties &properties, ::llvm::ArrayRef<::mlir::NamedAttribute> discardableAttributes = {}); static swmmac_i32_16x16x32_iu4 create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, const Properties &properties, ::llvm::ArrayRef<::mlir::NamedAttribute> discardableAttributes = {}); static swmmac_i32_16x16x32_iu4 create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, const Properties &properties, ::llvm::ArrayRef<::mlir::NamedAttribute> discardableAttributes = {}); static void populateDefaultProperties(::mlir::OperationName opName, Properties &properties); ::llvm::LogicalResult verifyInvariantsImpl(); ::llvm::LogicalResult verifyInvariants(); static ::mlir::ParseResult parse(::mlir::OpAsmParser &parser, ::mlir::OperationState &result); void print(::mlir::OpAsmPrinter &_odsPrinter); private: ::mlir::StringAttr getAttributeNameForIndex(unsigned index) { return getAttributeNameForIndex((*this)->getName(), index); } static ::mlir::StringAttr getAttributeNameForIndex(::mlir::OperationName name, unsigned index) { assert(index < 3 && "invalid attribute index"); assert(name.getStringRef() == getOperationName() && "invalid operation name"); assert(name.isRegistered() && "Operation isn't registered, missing a " "dependent dialect loading?"); return name.getAttributeNames()[index]; } public: }; } // namespace mlir::ROCDL MLIR_DECLARE_EXPLICIT_TYPE_ID(::mlir::ROCDL::swmmac_i32_16x16x32_iu4) MLIR_DECLARE_EXPLICIT_TYPE_ID(::mlir::ROCDL::detail::swmmac_i32_16x16x32_iu4GenericAdaptorBase::Properties) namespace mlir::ROCDL { //===----------------------------------------------------------------------===// // ::mlir::ROCDL::swmmac_i32_16x16x32_iu8 declarations //===----------------------------------------------------------------------===// namespace detail { class swmmac_i32_16x16x32_iu8GenericAdaptorBase { public: struct Properties { using clampTy = ::mlir::IntegerAttr; clampTy clamp; auto getClamp() const { auto &propStorage = this->clamp; return ::llvm::dyn_cast_or_null<::mlir::IntegerAttr>(propStorage); } void setClamp(const ::mlir::IntegerAttr &propValue) { this->clamp = propValue; } using signATy = ::mlir::IntegerAttr; signATy signA; auto getSignA() const { auto &propStorage = this->signA; return ::llvm::dyn_cast_or_null<::mlir::IntegerAttr>(propStorage); } void setSignA(const ::mlir::IntegerAttr &propValue) { this->signA = propValue; } using signBTy = ::mlir::IntegerAttr; signBTy signB; auto getSignB() const { auto &propStorage = this->signB; return ::llvm::dyn_cast_or_null<::mlir::IntegerAttr>(propStorage); } void setSignB(const ::mlir::IntegerAttr &propValue) { this->signB = propValue; } bool operator==(const Properties &rhs) const { return rhs.clamp == this->clamp && rhs.signA == this->signA && rhs.signB == this->signB && true; } bool operator!=(const Properties &rhs) const { return !(*this == rhs); } }; protected: ::mlir::DictionaryAttr odsAttrs; ::std::optional<::mlir::OperationName> odsOpName; Properties properties; ::mlir::RegionRange odsRegions; public: swmmac_i32_16x16x32_iu8GenericAdaptorBase(::mlir::DictionaryAttr attrs, const Properties &properties, ::mlir::RegionRange regions = {}) : odsAttrs(attrs), properties(properties), odsRegions(regions) { if (odsAttrs) odsOpName.emplace("rocdl.swmmac.i32.16x16x32.iu8", odsAttrs.getContext()); } swmmac_i32_16x16x32_iu8GenericAdaptorBase(swmmac_i32_16x16x32_iu8 op); std::pair getODSOperandIndexAndLength(unsigned index, unsigned odsOperandsSize) { return {index, 1}; } const Properties &getProperties() { return properties; } ::mlir::DictionaryAttr getAttributes() { return odsAttrs; } ::mlir::IntegerAttr getSignAAttr(); bool getSignA(); ::mlir::IntegerAttr getSignBAttr(); bool getSignB(); ::mlir::IntegerAttr getClampAttr(); bool getClamp(); }; } // namespace detail template class swmmac_i32_16x16x32_iu8GenericAdaptor : public detail::swmmac_i32_16x16x32_iu8GenericAdaptorBase { using ValueT = ::llvm::detail::ValueOfRange; using Base = detail::swmmac_i32_16x16x32_iu8GenericAdaptorBase; static constexpr int odsIndex_a = 0; static constexpr int odsIndex_b = 1; static constexpr int odsIndex_c = 2; static constexpr int odsIndex_index = 3; public: swmmac_i32_16x16x32_iu8GenericAdaptor(RangeT values, ::mlir::DictionaryAttr attrs, const Properties &properties, ::mlir::RegionRange regions = {}) : Base(attrs, properties, regions), odsOperands(values) {} swmmac_i32_16x16x32_iu8GenericAdaptor(RangeT values, ::mlir::DictionaryAttr attrs, ::mlir::PropertyRef properties, ::mlir::RegionRange regions = {}) : swmmac_i32_16x16x32_iu8GenericAdaptor(values, attrs, (properties ? *properties.as() : Properties{}), regions) {} swmmac_i32_16x16x32_iu8GenericAdaptor(RangeT values, ::mlir::DictionaryAttr attrs = nullptr) : swmmac_i32_16x16x32_iu8GenericAdaptor(values, attrs, Properties{}, {}) {} swmmac_i32_16x16x32_iu8GenericAdaptor(RangeT values, const swmmac_i32_16x16x32_iu8GenericAdaptorBase &base) : Base(base), odsOperands(values) {} template >> swmmac_i32_16x16x32_iu8GenericAdaptor(RangeT values, LateInst op) : Base(op), odsOperands(values) {} std::pair getODSOperandIndexAndLength(unsigned index) { return Base::getODSOperandIndexAndLength(index, odsOperands.size()); } RangeT getODSOperands(unsigned index) { auto valueRange = getODSOperandIndexAndLength(index); return {std::next(odsOperands.begin(), valueRange.first), std::next(odsOperands.begin(), valueRange.first + valueRange.second)}; } ValueT getA() { return (*getODSOperands(0).begin()); } ValueT getB() { return (*getODSOperands(1).begin()); } ValueT getC() { return (*getODSOperands(2).begin()); } ValueT getIndex() { return (*getODSOperands(3).begin()); } RangeT getOperands() { return odsOperands; } private: RangeT odsOperands; }; class swmmac_i32_16x16x32_iu8Adaptor : public swmmac_i32_16x16x32_iu8GenericAdaptor<::mlir::ValueRange> { public: using swmmac_i32_16x16x32_iu8GenericAdaptor::swmmac_i32_16x16x32_iu8GenericAdaptor; swmmac_i32_16x16x32_iu8Adaptor(swmmac_i32_16x16x32_iu8 op); ::llvm::LogicalResult verify(::mlir::Location loc); }; class swmmac_i32_16x16x32_iu8 : public ::mlir::Op::Impl, ::mlir::OpTrait::ZeroSuccessors, ::mlir::OpTrait::NOperands<4>::Impl, ::mlir::OpTrait::OpInvariants, ::mlir::BytecodeOpInterface::Trait> { public: using Op::Op; using Op::print; using Adaptor = swmmac_i32_16x16x32_iu8Adaptor; template using GenericAdaptor = swmmac_i32_16x16x32_iu8GenericAdaptor; using FoldAdaptor = GenericAdaptor<::llvm::ArrayRef<::mlir::Attribute>>; static constexpr int odsIndex_a = 0; static constexpr int odsIndex_b = 1; static constexpr int odsIndex_c = 2; static constexpr int odsIndex_index = 3; using Properties = FoldAdaptor::Properties; static ::llvm::ArrayRef<::llvm::StringRef> getAttributeNames() { static ::llvm::StringRef attrNames[] = {::llvm::StringRef("clamp"), ::llvm::StringRef("signA"), ::llvm::StringRef("signB")}; return ::llvm::ArrayRef(attrNames); } ::mlir::StringAttr getClampAttrName() { return getAttributeNameForIndex(0); } static ::mlir::StringAttr getClampAttrName(::mlir::OperationName name) { return getAttributeNameForIndex(name, 0); } ::mlir::StringAttr getSignAAttrName() { return getAttributeNameForIndex(1); } static ::mlir::StringAttr getSignAAttrName(::mlir::OperationName name) { return getAttributeNameForIndex(name, 1); } ::mlir::StringAttr getSignBAttrName() { return getAttributeNameForIndex(2); } static ::mlir::StringAttr getSignBAttrName(::mlir::OperationName name) { return getAttributeNameForIndex(name, 2); } static constexpr ::llvm::StringLiteral getOperationName() { return ::llvm::StringLiteral("rocdl.swmmac.i32.16x16x32.iu8"); } std::pair getODSOperandIndexAndLength(unsigned index) { return {index, 1}; } ::mlir::Operation::operand_range getODSOperands(unsigned index) { auto valueRange = getODSOperandIndexAndLength(index); return {std::next(getOperation()->operand_begin(), valueRange.first), std::next(getOperation()->operand_begin(), valueRange.first + valueRange.second)}; } ::mlir::TypedValue<::mlir::Type> getA() { return ::llvm::cast<::mlir::TypedValue<::mlir::Type>>(*getODSOperands(0).begin()); } ::mlir::TypedValue<::mlir::Type> getB() { return ::llvm::cast<::mlir::TypedValue<::mlir::Type>>(*getODSOperands(1).begin()); } ::mlir::TypedValue<::mlir::Type> getC() { return ::llvm::cast<::mlir::TypedValue<::mlir::Type>>(*getODSOperands(2).begin()); } ::mlir::TypedValue<::mlir::IntegerType> getIndex() { return ::llvm::cast<::mlir::TypedValue<::mlir::IntegerType>>(*getODSOperands(3).begin()); } ::mlir::OpOperand &getAMutable() { auto range = getODSOperandIndexAndLength(0); return getOperation()->getOpOperand(range.first); } ::mlir::OpOperand &getBMutable() { auto range = getODSOperandIndexAndLength(1); return getOperation()->getOpOperand(range.first); } ::mlir::OpOperand &getCMutable() { auto range = getODSOperandIndexAndLength(2); return getOperation()->getOpOperand(range.first); } ::mlir::OpOperand &getIndexMutable() { auto range = getODSOperandIndexAndLength(3); return getOperation()->getOpOperand(range.first); } std::pair getODSResultIndexAndLength(unsigned index) { return {index, 1}; } ::mlir::Operation::result_range getODSResults(unsigned index) { auto valueRange = getODSResultIndexAndLength(index); return {std::next(getOperation()->result_begin(), valueRange.first), std::next(getOperation()->result_begin(), valueRange.first + valueRange.second)}; } ::mlir::TypedValue<::mlir::Type> getRes() { return ::llvm::cast<::mlir::TypedValue<::mlir::Type>>(*getODSResults(0).begin()); } static ::llvm::LogicalResult setPropertiesFromAttr(Properties &prop, ::mlir::Attribute attr, ::llvm::function_ref<::mlir::InFlightDiagnostic()> emitError); static ::mlir::Attribute getPropertiesAsAttr(::mlir::MLIRContext *ctx, const Properties &prop); static llvm::hash_code computePropertiesHash(const Properties &prop); static std::optional getInherentAttr(::mlir::MLIRContext *ctx, const Properties &prop, llvm::StringRef name); static void setInherentAttr(Properties &prop, llvm::StringRef name, mlir::Attribute value); static void populateInherentAttrs(::mlir::MLIRContext *ctx, const Properties &prop, ::mlir::NamedAttrList &attrs); static ::llvm::LogicalResult verifyInherentAttrs(::mlir::OperationName opName, ::mlir::NamedAttrList &attrs, llvm::function_ref<::mlir::InFlightDiagnostic()> emitError); static ::llvm::LogicalResult readProperties(::mlir::DialectBytecodeReader &reader, ::mlir::OperationState &state); void writeProperties(::mlir::DialectBytecodeWriter &writer); ::mlir::IntegerAttr getSignAAttr() { return ::llvm::dyn_cast_or_null<::mlir::IntegerAttr>(getProperties().signA); } bool getSignA(); ::mlir::IntegerAttr getSignBAttr() { return ::llvm::dyn_cast_or_null<::mlir::IntegerAttr>(getProperties().signB); } bool getSignB(); ::mlir::IntegerAttr getClampAttr() { return ::llvm::dyn_cast_or_null<::mlir::IntegerAttr>(getProperties().clamp); } bool getClamp(); void setSignAAttr(::mlir::IntegerAttr attr) { getProperties().signA = attr; } void setSignA(bool attrValue); void setSignBAttr(::mlir::IntegerAttr attr) { getProperties().signB = attr; } void setSignB(bool attrValue); void setClampAttr(::mlir::IntegerAttr attr) { getProperties().clamp = attr; } void setClamp(bool attrValue); static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::Type res, ::mlir::IntegerAttr signA, ::mlir::Value a, ::mlir::IntegerAttr signB, ::mlir::Value b, ::mlir::Value c, ::mlir::Value index, ::mlir::IntegerAttr clamp); static swmmac_i32_16x16x32_iu8 create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::Type res, ::mlir::IntegerAttr signA, ::mlir::Value a, ::mlir::IntegerAttr signB, ::mlir::Value b, ::mlir::Value c, ::mlir::Value index, ::mlir::IntegerAttr clamp); static swmmac_i32_16x16x32_iu8 create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::Type res, ::mlir::IntegerAttr signA, ::mlir::Value a, ::mlir::IntegerAttr signB, ::mlir::Value b, ::mlir::Value c, ::mlir::Value index, ::mlir::IntegerAttr clamp); static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::IntegerAttr signA, ::mlir::Value a, ::mlir::IntegerAttr signB, ::mlir::Value b, ::mlir::Value c, ::mlir::Value index, ::mlir::IntegerAttr clamp); static swmmac_i32_16x16x32_iu8 create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::IntegerAttr signA, ::mlir::Value a, ::mlir::IntegerAttr signB, ::mlir::Value b, ::mlir::Value c, ::mlir::Value index, ::mlir::IntegerAttr clamp); static swmmac_i32_16x16x32_iu8 create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::IntegerAttr signA, ::mlir::Value a, ::mlir::IntegerAttr signB, ::mlir::Value b, ::mlir::Value c, ::mlir::Value index, ::mlir::IntegerAttr clamp); static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::Type res, bool signA, ::mlir::Value a, bool signB, ::mlir::Value b, ::mlir::Value c, ::mlir::Value index, bool clamp = 0); static swmmac_i32_16x16x32_iu8 create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::Type res, bool signA, ::mlir::Value a, bool signB, ::mlir::Value b, ::mlir::Value c, ::mlir::Value index, bool clamp = 0); static swmmac_i32_16x16x32_iu8 create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::Type res, bool signA, ::mlir::Value a, bool signB, ::mlir::Value b, ::mlir::Value c, ::mlir::Value index, bool clamp = 0); static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, bool signA, ::mlir::Value a, bool signB, ::mlir::Value b, ::mlir::Value c, ::mlir::Value index, bool clamp = 0); static swmmac_i32_16x16x32_iu8 create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, bool signA, ::mlir::Value a, bool signB, ::mlir::Value b, ::mlir::Value c, ::mlir::Value index, bool clamp = 0); static swmmac_i32_16x16x32_iu8 create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, bool signA, ::mlir::Value a, bool signB, ::mlir::Value b, ::mlir::Value c, ::mlir::Value index, bool clamp = 0); static void build(::mlir::OpBuilder &, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, ::llvm::ArrayRef<::mlir::NamedAttribute> attributes = {}); static swmmac_i32_16x16x32_iu8 create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, ::llvm::ArrayRef<::mlir::NamedAttribute> attributes = {}); static swmmac_i32_16x16x32_iu8 create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, ::llvm::ArrayRef<::mlir::NamedAttribute> attributes = {}); static void build(::mlir::OpBuilder &, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, const Properties &properties, ::llvm::ArrayRef<::mlir::NamedAttribute> discardableAttributes = {}); static swmmac_i32_16x16x32_iu8 create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, const Properties &properties, ::llvm::ArrayRef<::mlir::NamedAttribute> discardableAttributes = {}); static swmmac_i32_16x16x32_iu8 create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, const Properties &properties, ::llvm::ArrayRef<::mlir::NamedAttribute> discardableAttributes = {}); static void populateDefaultProperties(::mlir::OperationName opName, Properties &properties); ::llvm::LogicalResult verifyInvariantsImpl(); ::llvm::LogicalResult verifyInvariants(); static ::mlir::ParseResult parse(::mlir::OpAsmParser &parser, ::mlir::OperationState &result); void print(::mlir::OpAsmPrinter &_odsPrinter); private: ::mlir::StringAttr getAttributeNameForIndex(unsigned index) { return getAttributeNameForIndex((*this)->getName(), index); } static ::mlir::StringAttr getAttributeNameForIndex(::mlir::OperationName name, unsigned index) { assert(index < 3 && "invalid attribute index"); assert(name.getStringRef() == getOperationName() && "invalid operation name"); assert(name.isRegistered() && "Operation isn't registered, missing a " "dependent dialect loading?"); return name.getAttributeNames()[index]; } public: }; } // namespace mlir::ROCDL MLIR_DECLARE_EXPLICIT_TYPE_ID(::mlir::ROCDL::swmmac_i32_16x16x32_iu8) MLIR_DECLARE_EXPLICIT_TYPE_ID(::mlir::ROCDL::detail::swmmac_i32_16x16x32_iu8GenericAdaptorBase::Properties) namespace mlir::ROCDL { //===----------------------------------------------------------------------===// // ::mlir::ROCDL::swmmac_i32_16x16x64_iu4 declarations //===----------------------------------------------------------------------===// namespace detail { class swmmac_i32_16x16x64_iu4GenericAdaptorBase { public: struct Properties { using clampTy = ::mlir::IntegerAttr; clampTy clamp; auto getClamp() const { auto &propStorage = this->clamp; return ::llvm::dyn_cast_or_null<::mlir::IntegerAttr>(propStorage); } void setClamp(const ::mlir::IntegerAttr &propValue) { this->clamp = propValue; } using signATy = ::mlir::IntegerAttr; signATy signA; auto getSignA() const { auto &propStorage = this->signA; return ::llvm::dyn_cast_or_null<::mlir::IntegerAttr>(propStorage); } void setSignA(const ::mlir::IntegerAttr &propValue) { this->signA = propValue; } using signBTy = ::mlir::IntegerAttr; signBTy signB; auto getSignB() const { auto &propStorage = this->signB; return ::llvm::dyn_cast_or_null<::mlir::IntegerAttr>(propStorage); } void setSignB(const ::mlir::IntegerAttr &propValue) { this->signB = propValue; } bool operator==(const Properties &rhs) const { return rhs.clamp == this->clamp && rhs.signA == this->signA && rhs.signB == this->signB && true; } bool operator!=(const Properties &rhs) const { return !(*this == rhs); } }; protected: ::mlir::DictionaryAttr odsAttrs; ::std::optional<::mlir::OperationName> odsOpName; Properties properties; ::mlir::RegionRange odsRegions; public: swmmac_i32_16x16x64_iu4GenericAdaptorBase(::mlir::DictionaryAttr attrs, const Properties &properties, ::mlir::RegionRange regions = {}) : odsAttrs(attrs), properties(properties), odsRegions(regions) { if (odsAttrs) odsOpName.emplace("rocdl.swmmac.i32.16x16x64.iu4", odsAttrs.getContext()); } swmmac_i32_16x16x64_iu4GenericAdaptorBase(swmmac_i32_16x16x64_iu4 op); std::pair getODSOperandIndexAndLength(unsigned index, unsigned odsOperandsSize) { return {index, 1}; } const Properties &getProperties() { return properties; } ::mlir::DictionaryAttr getAttributes() { return odsAttrs; } ::mlir::IntegerAttr getSignAAttr(); bool getSignA(); ::mlir::IntegerAttr getSignBAttr(); bool getSignB(); ::mlir::IntegerAttr getClampAttr(); bool getClamp(); }; } // namespace detail template class swmmac_i32_16x16x64_iu4GenericAdaptor : public detail::swmmac_i32_16x16x64_iu4GenericAdaptorBase { using ValueT = ::llvm::detail::ValueOfRange; using Base = detail::swmmac_i32_16x16x64_iu4GenericAdaptorBase; static constexpr int odsIndex_a = 0; static constexpr int odsIndex_b = 1; static constexpr int odsIndex_c = 2; static constexpr int odsIndex_index = 3; public: swmmac_i32_16x16x64_iu4GenericAdaptor(RangeT values, ::mlir::DictionaryAttr attrs, const Properties &properties, ::mlir::RegionRange regions = {}) : Base(attrs, properties, regions), odsOperands(values) {} swmmac_i32_16x16x64_iu4GenericAdaptor(RangeT values, ::mlir::DictionaryAttr attrs, ::mlir::PropertyRef properties, ::mlir::RegionRange regions = {}) : swmmac_i32_16x16x64_iu4GenericAdaptor(values, attrs, (properties ? *properties.as() : Properties{}), regions) {} swmmac_i32_16x16x64_iu4GenericAdaptor(RangeT values, ::mlir::DictionaryAttr attrs = nullptr) : swmmac_i32_16x16x64_iu4GenericAdaptor(values, attrs, Properties{}, {}) {} swmmac_i32_16x16x64_iu4GenericAdaptor(RangeT values, const swmmac_i32_16x16x64_iu4GenericAdaptorBase &base) : Base(base), odsOperands(values) {} template >> swmmac_i32_16x16x64_iu4GenericAdaptor(RangeT values, LateInst op) : Base(op), odsOperands(values) {} std::pair getODSOperandIndexAndLength(unsigned index) { return Base::getODSOperandIndexAndLength(index, odsOperands.size()); } RangeT getODSOperands(unsigned index) { auto valueRange = getODSOperandIndexAndLength(index); return {std::next(odsOperands.begin(), valueRange.first), std::next(odsOperands.begin(), valueRange.first + valueRange.second)}; } ValueT getA() { return (*getODSOperands(0).begin()); } ValueT getB() { return (*getODSOperands(1).begin()); } ValueT getC() { return (*getODSOperands(2).begin()); } ValueT getIndex() { return (*getODSOperands(3).begin()); } RangeT getOperands() { return odsOperands; } private: RangeT odsOperands; }; class swmmac_i32_16x16x64_iu4Adaptor : public swmmac_i32_16x16x64_iu4GenericAdaptor<::mlir::ValueRange> { public: using swmmac_i32_16x16x64_iu4GenericAdaptor::swmmac_i32_16x16x64_iu4GenericAdaptor; swmmac_i32_16x16x64_iu4Adaptor(swmmac_i32_16x16x64_iu4 op); ::llvm::LogicalResult verify(::mlir::Location loc); }; class swmmac_i32_16x16x64_iu4 : public ::mlir::Op::Impl, ::mlir::OpTrait::ZeroSuccessors, ::mlir::OpTrait::NOperands<4>::Impl, ::mlir::OpTrait::OpInvariants, ::mlir::BytecodeOpInterface::Trait> { public: using Op::Op; using Op::print; using Adaptor = swmmac_i32_16x16x64_iu4Adaptor; template using GenericAdaptor = swmmac_i32_16x16x64_iu4GenericAdaptor; using FoldAdaptor = GenericAdaptor<::llvm::ArrayRef<::mlir::Attribute>>; static constexpr int odsIndex_a = 0; static constexpr int odsIndex_b = 1; static constexpr int odsIndex_c = 2; static constexpr int odsIndex_index = 3; using Properties = FoldAdaptor::Properties; static ::llvm::ArrayRef<::llvm::StringRef> getAttributeNames() { static ::llvm::StringRef attrNames[] = {::llvm::StringRef("clamp"), ::llvm::StringRef("signA"), ::llvm::StringRef("signB")}; return ::llvm::ArrayRef(attrNames); } ::mlir::StringAttr getClampAttrName() { return getAttributeNameForIndex(0); } static ::mlir::StringAttr getClampAttrName(::mlir::OperationName name) { return getAttributeNameForIndex(name, 0); } ::mlir::StringAttr getSignAAttrName() { return getAttributeNameForIndex(1); } static ::mlir::StringAttr getSignAAttrName(::mlir::OperationName name) { return getAttributeNameForIndex(name, 1); } ::mlir::StringAttr getSignBAttrName() { return getAttributeNameForIndex(2); } static ::mlir::StringAttr getSignBAttrName(::mlir::OperationName name) { return getAttributeNameForIndex(name, 2); } static constexpr ::llvm::StringLiteral getOperationName() { return ::llvm::StringLiteral("rocdl.swmmac.i32.16x16x64.iu4"); } std::pair getODSOperandIndexAndLength(unsigned index) { return {index, 1}; } ::mlir::Operation::operand_range getODSOperands(unsigned index) { auto valueRange = getODSOperandIndexAndLength(index); return {std::next(getOperation()->operand_begin(), valueRange.first), std::next(getOperation()->operand_begin(), valueRange.first + valueRange.second)}; } ::mlir::TypedValue<::mlir::Type> getA() { return ::llvm::cast<::mlir::TypedValue<::mlir::Type>>(*getODSOperands(0).begin()); } ::mlir::TypedValue<::mlir::Type> getB() { return ::llvm::cast<::mlir::TypedValue<::mlir::Type>>(*getODSOperands(1).begin()); } ::mlir::TypedValue<::mlir::Type> getC() { return ::llvm::cast<::mlir::TypedValue<::mlir::Type>>(*getODSOperands(2).begin()); } ::mlir::TypedValue<::mlir::IntegerType> getIndex() { return ::llvm::cast<::mlir::TypedValue<::mlir::IntegerType>>(*getODSOperands(3).begin()); } ::mlir::OpOperand &getAMutable() { auto range = getODSOperandIndexAndLength(0); return getOperation()->getOpOperand(range.first); } ::mlir::OpOperand &getBMutable() { auto range = getODSOperandIndexAndLength(1); return getOperation()->getOpOperand(range.first); } ::mlir::OpOperand &getCMutable() { auto range = getODSOperandIndexAndLength(2); return getOperation()->getOpOperand(range.first); } ::mlir::OpOperand &getIndexMutable() { auto range = getODSOperandIndexAndLength(3); return getOperation()->getOpOperand(range.first); } std::pair getODSResultIndexAndLength(unsigned index) { return {index, 1}; } ::mlir::Operation::result_range getODSResults(unsigned index) { auto valueRange = getODSResultIndexAndLength(index); return {std::next(getOperation()->result_begin(), valueRange.first), std::next(getOperation()->result_begin(), valueRange.first + valueRange.second)}; } ::mlir::TypedValue<::mlir::Type> getRes() { return ::llvm::cast<::mlir::TypedValue<::mlir::Type>>(*getODSResults(0).begin()); } static ::llvm::LogicalResult setPropertiesFromAttr(Properties &prop, ::mlir::Attribute attr, ::llvm::function_ref<::mlir::InFlightDiagnostic()> emitError); static ::mlir::Attribute getPropertiesAsAttr(::mlir::MLIRContext *ctx, const Properties &prop); static llvm::hash_code computePropertiesHash(const Properties &prop); static std::optional getInherentAttr(::mlir::MLIRContext *ctx, const Properties &prop, llvm::StringRef name); static void setInherentAttr(Properties &prop, llvm::StringRef name, mlir::Attribute value); static void populateInherentAttrs(::mlir::MLIRContext *ctx, const Properties &prop, ::mlir::NamedAttrList &attrs); static ::llvm::LogicalResult verifyInherentAttrs(::mlir::OperationName opName, ::mlir::NamedAttrList &attrs, llvm::function_ref<::mlir::InFlightDiagnostic()> emitError); static ::llvm::LogicalResult readProperties(::mlir::DialectBytecodeReader &reader, ::mlir::OperationState &state); void writeProperties(::mlir::DialectBytecodeWriter &writer); ::mlir::IntegerAttr getSignAAttr() { return ::llvm::dyn_cast_or_null<::mlir::IntegerAttr>(getProperties().signA); } bool getSignA(); ::mlir::IntegerAttr getSignBAttr() { return ::llvm::dyn_cast_or_null<::mlir::IntegerAttr>(getProperties().signB); } bool getSignB(); ::mlir::IntegerAttr getClampAttr() { return ::llvm::dyn_cast_or_null<::mlir::IntegerAttr>(getProperties().clamp); } bool getClamp(); void setSignAAttr(::mlir::IntegerAttr attr) { getProperties().signA = attr; } void setSignA(bool attrValue); void setSignBAttr(::mlir::IntegerAttr attr) { getProperties().signB = attr; } void setSignB(bool attrValue); void setClampAttr(::mlir::IntegerAttr attr) { getProperties().clamp = attr; } void setClamp(bool attrValue); static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::Type res, ::mlir::IntegerAttr signA, ::mlir::Value a, ::mlir::IntegerAttr signB, ::mlir::Value b, ::mlir::Value c, ::mlir::Value index, ::mlir::IntegerAttr clamp); static swmmac_i32_16x16x64_iu4 create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::Type res, ::mlir::IntegerAttr signA, ::mlir::Value a, ::mlir::IntegerAttr signB, ::mlir::Value b, ::mlir::Value c, ::mlir::Value index, ::mlir::IntegerAttr clamp); static swmmac_i32_16x16x64_iu4 create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::Type res, ::mlir::IntegerAttr signA, ::mlir::Value a, ::mlir::IntegerAttr signB, ::mlir::Value b, ::mlir::Value c, ::mlir::Value index, ::mlir::IntegerAttr clamp); static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::IntegerAttr signA, ::mlir::Value a, ::mlir::IntegerAttr signB, ::mlir::Value b, ::mlir::Value c, ::mlir::Value index, ::mlir::IntegerAttr clamp); static swmmac_i32_16x16x64_iu4 create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::IntegerAttr signA, ::mlir::Value a, ::mlir::IntegerAttr signB, ::mlir::Value b, ::mlir::Value c, ::mlir::Value index, ::mlir::IntegerAttr clamp); static swmmac_i32_16x16x64_iu4 create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::IntegerAttr signA, ::mlir::Value a, ::mlir::IntegerAttr signB, ::mlir::Value b, ::mlir::Value c, ::mlir::Value index, ::mlir::IntegerAttr clamp); static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::Type res, bool signA, ::mlir::Value a, bool signB, ::mlir::Value b, ::mlir::Value c, ::mlir::Value index, bool clamp = 0); static swmmac_i32_16x16x64_iu4 create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::Type res, bool signA, ::mlir::Value a, bool signB, ::mlir::Value b, ::mlir::Value c, ::mlir::Value index, bool clamp = 0); static swmmac_i32_16x16x64_iu4 create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::Type res, bool signA, ::mlir::Value a, bool signB, ::mlir::Value b, ::mlir::Value c, ::mlir::Value index, bool clamp = 0); static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, bool signA, ::mlir::Value a, bool signB, ::mlir::Value b, ::mlir::Value c, ::mlir::Value index, bool clamp = 0); static swmmac_i32_16x16x64_iu4 create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, bool signA, ::mlir::Value a, bool signB, ::mlir::Value b, ::mlir::Value c, ::mlir::Value index, bool clamp = 0); static swmmac_i32_16x16x64_iu4 create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, bool signA, ::mlir::Value a, bool signB, ::mlir::Value b, ::mlir::Value c, ::mlir::Value index, bool clamp = 0); static void build(::mlir::OpBuilder &, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, ::llvm::ArrayRef<::mlir::NamedAttribute> attributes = {}); static swmmac_i32_16x16x64_iu4 create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, ::llvm::ArrayRef<::mlir::NamedAttribute> attributes = {}); static swmmac_i32_16x16x64_iu4 create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, ::llvm::ArrayRef<::mlir::NamedAttribute> attributes = {}); static void build(::mlir::OpBuilder &, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, const Properties &properties, ::llvm::ArrayRef<::mlir::NamedAttribute> discardableAttributes = {}); static swmmac_i32_16x16x64_iu4 create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, const Properties &properties, ::llvm::ArrayRef<::mlir::NamedAttribute> discardableAttributes = {}); static swmmac_i32_16x16x64_iu4 create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, const Properties &properties, ::llvm::ArrayRef<::mlir::NamedAttribute> discardableAttributes = {}); static void populateDefaultProperties(::mlir::OperationName opName, Properties &properties); ::llvm::LogicalResult verifyInvariantsImpl(); ::llvm::LogicalResult verifyInvariants(); static ::mlir::ParseResult parse(::mlir::OpAsmParser &parser, ::mlir::OperationState &result); void print(::mlir::OpAsmPrinter &_odsPrinter); private: ::mlir::StringAttr getAttributeNameForIndex(unsigned index) { return getAttributeNameForIndex((*this)->getName(), index); } static ::mlir::StringAttr getAttributeNameForIndex(::mlir::OperationName name, unsigned index) { assert(index < 3 && "invalid attribute index"); assert(name.getStringRef() == getOperationName() && "invalid operation name"); assert(name.isRegistered() && "Operation isn't registered, missing a " "dependent dialect loading?"); return name.getAttributeNames()[index]; } public: }; } // namespace mlir::ROCDL MLIR_DECLARE_EXPLICIT_TYPE_ID(::mlir::ROCDL::swmmac_i32_16x16x64_iu4) MLIR_DECLARE_EXPLICIT_TYPE_ID(::mlir::ROCDL::detail::swmmac_i32_16x16x64_iu4GenericAdaptorBase::Properties) namespace mlir::ROCDL { //===----------------------------------------------------------------------===// // ::mlir::ROCDL::udot2 declarations //===----------------------------------------------------------------------===// namespace detail { class udot2GenericAdaptorBase { public: struct Properties { using clampTy = ::mlir::IntegerAttr; clampTy clamp; auto getClamp() const { auto &propStorage = this->clamp; return ::llvm::dyn_cast_or_null<::mlir::IntegerAttr>(propStorage); } void setClamp(const ::mlir::IntegerAttr &propValue) { this->clamp = propValue; } bool operator==(const Properties &rhs) const { return rhs.clamp == this->clamp && true; } bool operator!=(const Properties &rhs) const { return !(*this == rhs); } }; protected: ::mlir::DictionaryAttr odsAttrs; ::std::optional<::mlir::OperationName> odsOpName; Properties properties; ::mlir::RegionRange odsRegions; public: udot2GenericAdaptorBase(::mlir::DictionaryAttr attrs, const Properties &properties, ::mlir::RegionRange regions = {}) : odsAttrs(attrs), properties(properties), odsRegions(regions) { if (odsAttrs) odsOpName.emplace("rocdl.udot2", odsAttrs.getContext()); } udot2GenericAdaptorBase(udot2 op); std::pair getODSOperandIndexAndLength(unsigned index, unsigned odsOperandsSize) { return {index, 1}; } const Properties &getProperties() { return properties; } ::mlir::DictionaryAttr getAttributes() { return odsAttrs; } ::mlir::IntegerAttr getClampAttr(); bool getClamp(); }; } // namespace detail template class udot2GenericAdaptor : public detail::udot2GenericAdaptorBase { using ValueT = ::llvm::detail::ValueOfRange; using Base = detail::udot2GenericAdaptorBase; static constexpr int odsIndex_a = 0; static constexpr int odsIndex_b = 1; static constexpr int odsIndex_c = 2; public: udot2GenericAdaptor(RangeT values, ::mlir::DictionaryAttr attrs, const Properties &properties, ::mlir::RegionRange regions = {}) : Base(attrs, properties, regions), odsOperands(values) {} udot2GenericAdaptor(RangeT values, ::mlir::DictionaryAttr attrs, ::mlir::PropertyRef properties, ::mlir::RegionRange regions = {}) : udot2GenericAdaptor(values, attrs, (properties ? *properties.as() : Properties{}), regions) {} udot2GenericAdaptor(RangeT values, ::mlir::DictionaryAttr attrs = nullptr) : udot2GenericAdaptor(values, attrs, Properties{}, {}) {} udot2GenericAdaptor(RangeT values, const udot2GenericAdaptorBase &base) : Base(base), odsOperands(values) {} template >> udot2GenericAdaptor(RangeT values, LateInst op) : Base(op), odsOperands(values) {} std::pair getODSOperandIndexAndLength(unsigned index) { return Base::getODSOperandIndexAndLength(index, odsOperands.size()); } RangeT getODSOperands(unsigned index) { auto valueRange = getODSOperandIndexAndLength(index); return {std::next(odsOperands.begin(), valueRange.first), std::next(odsOperands.begin(), valueRange.first + valueRange.second)}; } ValueT getA() { return (*getODSOperands(0).begin()); } ValueT getB() { return (*getODSOperands(1).begin()); } ValueT getC() { return (*getODSOperands(2).begin()); } RangeT getOperands() { return odsOperands; } private: RangeT odsOperands; }; class udot2Adaptor : public udot2GenericAdaptor<::mlir::ValueRange> { public: using udot2GenericAdaptor::udot2GenericAdaptor; udot2Adaptor(udot2 op); ::llvm::LogicalResult verify(::mlir::Location loc); }; class udot2 : public ::mlir::Op::Impl, ::mlir::OpTrait::ZeroSuccessors, ::mlir::OpTrait::NOperands<3>::Impl, ::mlir::OpTrait::OpInvariants, ::mlir::BytecodeOpInterface::Trait, ::mlir::ConditionallySpeculatable::Trait, ::mlir::OpTrait::AlwaysSpeculatableImplTrait, ::mlir::MemoryEffectOpInterface::Trait> { public: using Op::Op; using Op::print; using Adaptor = udot2Adaptor; template using GenericAdaptor = udot2GenericAdaptor; using FoldAdaptor = GenericAdaptor<::llvm::ArrayRef<::mlir::Attribute>>; static constexpr int odsIndex_a = 0; static constexpr int odsIndex_b = 1; static constexpr int odsIndex_c = 2; using Properties = FoldAdaptor::Properties; static ::llvm::ArrayRef<::llvm::StringRef> getAttributeNames() { static ::llvm::StringRef attrNames[] = {::llvm::StringRef("clamp")}; return ::llvm::ArrayRef(attrNames); } ::mlir::StringAttr getClampAttrName() { return getAttributeNameForIndex(0); } static ::mlir::StringAttr getClampAttrName(::mlir::OperationName name) { return getAttributeNameForIndex(name, 0); } static constexpr ::llvm::StringLiteral getOperationName() { return ::llvm::StringLiteral("rocdl.udot2"); } std::pair getODSOperandIndexAndLength(unsigned index) { return {index, 1}; } ::mlir::Operation::operand_range getODSOperands(unsigned index) { auto valueRange = getODSOperandIndexAndLength(index); return {std::next(getOperation()->operand_begin(), valueRange.first), std::next(getOperation()->operand_begin(), valueRange.first + valueRange.second)}; } ::mlir::TypedValue<::mlir::VectorType> getA() { return ::llvm::cast<::mlir::TypedValue<::mlir::VectorType>>(*getODSOperands(0).begin()); } ::mlir::TypedValue<::mlir::VectorType> getB() { return ::llvm::cast<::mlir::TypedValue<::mlir::VectorType>>(*getODSOperands(1).begin()); } ::mlir::TypedValue<::mlir::Type> getC() { return ::llvm::cast<::mlir::TypedValue<::mlir::Type>>(*getODSOperands(2).begin()); } ::mlir::OpOperand &getAMutable() { auto range = getODSOperandIndexAndLength(0); return getOperation()->getOpOperand(range.first); } ::mlir::OpOperand &getBMutable() { auto range = getODSOperandIndexAndLength(1); return getOperation()->getOpOperand(range.first); } ::mlir::OpOperand &getCMutable() { auto range = getODSOperandIndexAndLength(2); return getOperation()->getOpOperand(range.first); } std::pair getODSResultIndexAndLength(unsigned index) { return {index, 1}; } ::mlir::Operation::result_range getODSResults(unsigned index) { auto valueRange = getODSResultIndexAndLength(index); return {std::next(getOperation()->result_begin(), valueRange.first), std::next(getOperation()->result_begin(), valueRange.first + valueRange.second)}; } ::mlir::TypedValue<::mlir::Type> getRes() { return ::llvm::cast<::mlir::TypedValue<::mlir::Type>>(*getODSResults(0).begin()); } static ::llvm::LogicalResult setPropertiesFromAttr(Properties &prop, ::mlir::Attribute attr, ::llvm::function_ref<::mlir::InFlightDiagnostic()> emitError); static ::mlir::Attribute getPropertiesAsAttr(::mlir::MLIRContext *ctx, const Properties &prop); static llvm::hash_code computePropertiesHash(const Properties &prop); static std::optional getInherentAttr(::mlir::MLIRContext *ctx, const Properties &prop, llvm::StringRef name); static void setInherentAttr(Properties &prop, llvm::StringRef name, mlir::Attribute value); static void populateInherentAttrs(::mlir::MLIRContext *ctx, const Properties &prop, ::mlir::NamedAttrList &attrs); static ::llvm::LogicalResult verifyInherentAttrs(::mlir::OperationName opName, ::mlir::NamedAttrList &attrs, llvm::function_ref<::mlir::InFlightDiagnostic()> emitError); static ::llvm::LogicalResult readProperties(::mlir::DialectBytecodeReader &reader, ::mlir::OperationState &state); void writeProperties(::mlir::DialectBytecodeWriter &writer); ::mlir::IntegerAttr getClampAttr() { return ::llvm::dyn_cast_or_null<::mlir::IntegerAttr>(getProperties().clamp); } bool getClamp(); void setClampAttr(::mlir::IntegerAttr attr) { getProperties().clamp = attr; } void setClamp(bool attrValue); static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::Type res, ::mlir::Value a, ::mlir::Value b, ::mlir::Value c, ::mlir::IntegerAttr clamp); static udot2 create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::Type res, ::mlir::Value a, ::mlir::Value b, ::mlir::Value c, ::mlir::IntegerAttr clamp); static udot2 create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::Type res, ::mlir::Value a, ::mlir::Value b, ::mlir::Value c, ::mlir::IntegerAttr clamp); static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::Value a, ::mlir::Value b, ::mlir::Value c, ::mlir::IntegerAttr clamp); static udot2 create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::Value a, ::mlir::Value b, ::mlir::Value c, ::mlir::IntegerAttr clamp); static udot2 create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::Value a, ::mlir::Value b, ::mlir::Value c, ::mlir::IntegerAttr clamp); static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::Type res, ::mlir::Value a, ::mlir::Value b, ::mlir::Value c, bool clamp = 0); static udot2 create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::Type res, ::mlir::Value a, ::mlir::Value b, ::mlir::Value c, bool clamp = 0); static udot2 create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::Type res, ::mlir::Value a, ::mlir::Value b, ::mlir::Value c, bool clamp = 0); static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::Value a, ::mlir::Value b, ::mlir::Value c, bool clamp = 0); static udot2 create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::Value a, ::mlir::Value b, ::mlir::Value c, bool clamp = 0); static udot2 create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::Value a, ::mlir::Value b, ::mlir::Value c, bool clamp = 0); static void build(::mlir::OpBuilder &, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, ::llvm::ArrayRef<::mlir::NamedAttribute> attributes = {}); static udot2 create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, ::llvm::ArrayRef<::mlir::NamedAttribute> attributes = {}); static udot2 create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, ::llvm::ArrayRef<::mlir::NamedAttribute> attributes = {}); static void build(::mlir::OpBuilder &, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, const Properties &properties, ::llvm::ArrayRef<::mlir::NamedAttribute> discardableAttributes = {}); static udot2 create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, const Properties &properties, ::llvm::ArrayRef<::mlir::NamedAttribute> discardableAttributes = {}); static udot2 create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, const Properties &properties, ::llvm::ArrayRef<::mlir::NamedAttribute> discardableAttributes = {}); static void populateDefaultProperties(::mlir::OperationName opName, Properties &properties); ::llvm::LogicalResult verifyInvariantsImpl(); ::llvm::LogicalResult verifyInvariants(); static ::mlir::ParseResult parse(::mlir::OpAsmParser &parser, ::mlir::OperationState &result); void print(::mlir::OpAsmPrinter &_odsPrinter); void getEffects(::llvm::SmallVectorImpl<::mlir::SideEffects::EffectInstance<::mlir::MemoryEffects::Effect>> &effects); private: ::mlir::StringAttr getAttributeNameForIndex(unsigned index) { return getAttributeNameForIndex((*this)->getName(), index); } static ::mlir::StringAttr getAttributeNameForIndex(::mlir::OperationName name, unsigned index) { assert(index < 1 && "invalid attribute index"); assert(name.getStringRef() == getOperationName() && "invalid operation name"); assert(name.isRegistered() && "Operation isn't registered, missing a " "dependent dialect loading?"); return name.getAttributeNames()[index]; } public: }; } // namespace mlir::ROCDL MLIR_DECLARE_EXPLICIT_TYPE_ID(::mlir::ROCDL::udot2) MLIR_DECLARE_EXPLICIT_TYPE_ID(::mlir::ROCDL::detail::udot2GenericAdaptorBase::Properties) namespace mlir::ROCDL { //===----------------------------------------------------------------------===// // ::mlir::ROCDL::udot4 declarations //===----------------------------------------------------------------------===// namespace detail { class udot4GenericAdaptorBase { public: struct Properties { using clampTy = ::mlir::IntegerAttr; clampTy clamp; auto getClamp() const { auto &propStorage = this->clamp; return ::llvm::dyn_cast_or_null<::mlir::IntegerAttr>(propStorage); } void setClamp(const ::mlir::IntegerAttr &propValue) { this->clamp = propValue; } bool operator==(const Properties &rhs) const { return rhs.clamp == this->clamp && true; } bool operator!=(const Properties &rhs) const { return !(*this == rhs); } }; protected: ::mlir::DictionaryAttr odsAttrs; ::std::optional<::mlir::OperationName> odsOpName; Properties properties; ::mlir::RegionRange odsRegions; public: udot4GenericAdaptorBase(::mlir::DictionaryAttr attrs, const Properties &properties, ::mlir::RegionRange regions = {}) : odsAttrs(attrs), properties(properties), odsRegions(regions) { if (odsAttrs) odsOpName.emplace("rocdl.udot4", odsAttrs.getContext()); } udot4GenericAdaptorBase(udot4 op); std::pair getODSOperandIndexAndLength(unsigned index, unsigned odsOperandsSize) { return {index, 1}; } const Properties &getProperties() { return properties; } ::mlir::DictionaryAttr getAttributes() { return odsAttrs; } ::mlir::IntegerAttr getClampAttr(); bool getClamp(); }; } // namespace detail template class udot4GenericAdaptor : public detail::udot4GenericAdaptorBase { using ValueT = ::llvm::detail::ValueOfRange; using Base = detail::udot4GenericAdaptorBase; static constexpr int odsIndex_a = 0; static constexpr int odsIndex_b = 1; static constexpr int odsIndex_c = 2; public: udot4GenericAdaptor(RangeT values, ::mlir::DictionaryAttr attrs, const Properties &properties, ::mlir::RegionRange regions = {}) : Base(attrs, properties, regions), odsOperands(values) {} udot4GenericAdaptor(RangeT values, ::mlir::DictionaryAttr attrs, ::mlir::PropertyRef properties, ::mlir::RegionRange regions = {}) : udot4GenericAdaptor(values, attrs, (properties ? *properties.as() : Properties{}), regions) {} udot4GenericAdaptor(RangeT values, ::mlir::DictionaryAttr attrs = nullptr) : udot4GenericAdaptor(values, attrs, Properties{}, {}) {} udot4GenericAdaptor(RangeT values, const udot4GenericAdaptorBase &base) : Base(base), odsOperands(values) {} template >> udot4GenericAdaptor(RangeT values, LateInst op) : Base(op), odsOperands(values) {} std::pair getODSOperandIndexAndLength(unsigned index) { return Base::getODSOperandIndexAndLength(index, odsOperands.size()); } RangeT getODSOperands(unsigned index) { auto valueRange = getODSOperandIndexAndLength(index); return {std::next(odsOperands.begin(), valueRange.first), std::next(odsOperands.begin(), valueRange.first + valueRange.second)}; } ValueT getA() { return (*getODSOperands(0).begin()); } ValueT getB() { return (*getODSOperands(1).begin()); } ValueT getC() { return (*getODSOperands(2).begin()); } RangeT getOperands() { return odsOperands; } private: RangeT odsOperands; }; class udot4Adaptor : public udot4GenericAdaptor<::mlir::ValueRange> { public: using udot4GenericAdaptor::udot4GenericAdaptor; udot4Adaptor(udot4 op); ::llvm::LogicalResult verify(::mlir::Location loc); }; class udot4 : public ::mlir::Op::Impl, ::mlir::OpTrait::ZeroSuccessors, ::mlir::OpTrait::NOperands<3>::Impl, ::mlir::OpTrait::OpInvariants, ::mlir::BytecodeOpInterface::Trait, ::mlir::ConditionallySpeculatable::Trait, ::mlir::OpTrait::AlwaysSpeculatableImplTrait, ::mlir::MemoryEffectOpInterface::Trait> { public: using Op::Op; using Op::print; using Adaptor = udot4Adaptor; template using GenericAdaptor = udot4GenericAdaptor; using FoldAdaptor = GenericAdaptor<::llvm::ArrayRef<::mlir::Attribute>>; static constexpr int odsIndex_a = 0; static constexpr int odsIndex_b = 1; static constexpr int odsIndex_c = 2; using Properties = FoldAdaptor::Properties; static ::llvm::ArrayRef<::llvm::StringRef> getAttributeNames() { static ::llvm::StringRef attrNames[] = {::llvm::StringRef("clamp")}; return ::llvm::ArrayRef(attrNames); } ::mlir::StringAttr getClampAttrName() { return getAttributeNameForIndex(0); } static ::mlir::StringAttr getClampAttrName(::mlir::OperationName name) { return getAttributeNameForIndex(name, 0); } static constexpr ::llvm::StringLiteral getOperationName() { return ::llvm::StringLiteral("rocdl.udot4"); } std::pair getODSOperandIndexAndLength(unsigned index) { return {index, 1}; } ::mlir::Operation::operand_range getODSOperands(unsigned index) { auto valueRange = getODSOperandIndexAndLength(index); return {std::next(getOperation()->operand_begin(), valueRange.first), std::next(getOperation()->operand_begin(), valueRange.first + valueRange.second)}; } ::mlir::TypedValue<::mlir::Type> getA() { return ::llvm::cast<::mlir::TypedValue<::mlir::Type>>(*getODSOperands(0).begin()); } ::mlir::TypedValue<::mlir::Type> getB() { return ::llvm::cast<::mlir::TypedValue<::mlir::Type>>(*getODSOperands(1).begin()); } ::mlir::TypedValue<::mlir::Type> getC() { return ::llvm::cast<::mlir::TypedValue<::mlir::Type>>(*getODSOperands(2).begin()); } ::mlir::OpOperand &getAMutable() { auto range = getODSOperandIndexAndLength(0); return getOperation()->getOpOperand(range.first); } ::mlir::OpOperand &getBMutable() { auto range = getODSOperandIndexAndLength(1); return getOperation()->getOpOperand(range.first); } ::mlir::OpOperand &getCMutable() { auto range = getODSOperandIndexAndLength(2); return getOperation()->getOpOperand(range.first); } std::pair getODSResultIndexAndLength(unsigned index) { return {index, 1}; } ::mlir::Operation::result_range getODSResults(unsigned index) { auto valueRange = getODSResultIndexAndLength(index); return {std::next(getOperation()->result_begin(), valueRange.first), std::next(getOperation()->result_begin(), valueRange.first + valueRange.second)}; } ::mlir::TypedValue<::mlir::Type> getRes() { return ::llvm::cast<::mlir::TypedValue<::mlir::Type>>(*getODSResults(0).begin()); } static ::llvm::LogicalResult setPropertiesFromAttr(Properties &prop, ::mlir::Attribute attr, ::llvm::function_ref<::mlir::InFlightDiagnostic()> emitError); static ::mlir::Attribute getPropertiesAsAttr(::mlir::MLIRContext *ctx, const Properties &prop); static llvm::hash_code computePropertiesHash(const Properties &prop); static std::optional getInherentAttr(::mlir::MLIRContext *ctx, const Properties &prop, llvm::StringRef name); static void setInherentAttr(Properties &prop, llvm::StringRef name, mlir::Attribute value); static void populateInherentAttrs(::mlir::MLIRContext *ctx, const Properties &prop, ::mlir::NamedAttrList &attrs); static ::llvm::LogicalResult verifyInherentAttrs(::mlir::OperationName opName, ::mlir::NamedAttrList &attrs, llvm::function_ref<::mlir::InFlightDiagnostic()> emitError); static ::llvm::LogicalResult readProperties(::mlir::DialectBytecodeReader &reader, ::mlir::OperationState &state); void writeProperties(::mlir::DialectBytecodeWriter &writer); ::mlir::IntegerAttr getClampAttr() { return ::llvm::dyn_cast_or_null<::mlir::IntegerAttr>(getProperties().clamp); } bool getClamp(); void setClampAttr(::mlir::IntegerAttr attr) { getProperties().clamp = attr; } void setClamp(bool attrValue); static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::Type res, ::mlir::Value a, ::mlir::Value b, ::mlir::Value c, ::mlir::IntegerAttr clamp); static udot4 create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::Type res, ::mlir::Value a, ::mlir::Value b, ::mlir::Value c, ::mlir::IntegerAttr clamp); static udot4 create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::Type res, ::mlir::Value a, ::mlir::Value b, ::mlir::Value c, ::mlir::IntegerAttr clamp); static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::Value a, ::mlir::Value b, ::mlir::Value c, ::mlir::IntegerAttr clamp); static udot4 create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::Value a, ::mlir::Value b, ::mlir::Value c, ::mlir::IntegerAttr clamp); static udot4 create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::Value a, ::mlir::Value b, ::mlir::Value c, ::mlir::IntegerAttr clamp); static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::Type res, ::mlir::Value a, ::mlir::Value b, ::mlir::Value c, bool clamp = 0); static udot4 create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::Type res, ::mlir::Value a, ::mlir::Value b, ::mlir::Value c, bool clamp = 0); static udot4 create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::Type res, ::mlir::Value a, ::mlir::Value b, ::mlir::Value c, bool clamp = 0); static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::Value a, ::mlir::Value b, ::mlir::Value c, bool clamp = 0); static udot4 create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::Value a, ::mlir::Value b, ::mlir::Value c, bool clamp = 0); static udot4 create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::Value a, ::mlir::Value b, ::mlir::Value c, bool clamp = 0); static void build(::mlir::OpBuilder &, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, ::llvm::ArrayRef<::mlir::NamedAttribute> attributes = {}); static udot4 create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, ::llvm::ArrayRef<::mlir::NamedAttribute> attributes = {}); static udot4 create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, ::llvm::ArrayRef<::mlir::NamedAttribute> attributes = {}); static void build(::mlir::OpBuilder &, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, const Properties &properties, ::llvm::ArrayRef<::mlir::NamedAttribute> discardableAttributes = {}); static udot4 create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, const Properties &properties, ::llvm::ArrayRef<::mlir::NamedAttribute> discardableAttributes = {}); static udot4 create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, const Properties &properties, ::llvm::ArrayRef<::mlir::NamedAttribute> discardableAttributes = {}); static void populateDefaultProperties(::mlir::OperationName opName, Properties &properties); ::llvm::LogicalResult verifyInvariantsImpl(); ::llvm::LogicalResult verifyInvariants(); static ::mlir::ParseResult parse(::mlir::OpAsmParser &parser, ::mlir::OperationState &result); void print(::mlir::OpAsmPrinter &_odsPrinter); void getEffects(::llvm::SmallVectorImpl<::mlir::SideEffects::EffectInstance<::mlir::MemoryEffects::Effect>> &effects); private: ::mlir::StringAttr getAttributeNameForIndex(unsigned index) { return getAttributeNameForIndex((*this)->getName(), index); } static ::mlir::StringAttr getAttributeNameForIndex(::mlir::OperationName name, unsigned index) { assert(index < 1 && "invalid attribute index"); assert(name.getStringRef() == getOperationName() && "invalid operation name"); assert(name.isRegistered() && "Operation isn't registered, missing a " "dependent dialect loading?"); return name.getAttributeNames()[index]; } public: }; } // namespace mlir::ROCDL MLIR_DECLARE_EXPLICIT_TYPE_ID(::mlir::ROCDL::udot4) MLIR_DECLARE_EXPLICIT_TYPE_ID(::mlir::ROCDL::detail::udot4GenericAdaptorBase::Properties) namespace mlir::ROCDL { //===----------------------------------------------------------------------===// // ::mlir::ROCDL::udot8 declarations //===----------------------------------------------------------------------===// namespace detail { class udot8GenericAdaptorBase { public: struct Properties { using clampTy = ::mlir::IntegerAttr; clampTy clamp; auto getClamp() const { auto &propStorage = this->clamp; return ::llvm::dyn_cast_or_null<::mlir::IntegerAttr>(propStorage); } void setClamp(const ::mlir::IntegerAttr &propValue) { this->clamp = propValue; } bool operator==(const Properties &rhs) const { return rhs.clamp == this->clamp && true; } bool operator!=(const Properties &rhs) const { return !(*this == rhs); } }; protected: ::mlir::DictionaryAttr odsAttrs; ::std::optional<::mlir::OperationName> odsOpName; Properties properties; ::mlir::RegionRange odsRegions; public: udot8GenericAdaptorBase(::mlir::DictionaryAttr attrs, const Properties &properties, ::mlir::RegionRange regions = {}) : odsAttrs(attrs), properties(properties), odsRegions(regions) { if (odsAttrs) odsOpName.emplace("rocdl.udot8", odsAttrs.getContext()); } udot8GenericAdaptorBase(udot8 op); std::pair getODSOperandIndexAndLength(unsigned index, unsigned odsOperandsSize) { return {index, 1}; } const Properties &getProperties() { return properties; } ::mlir::DictionaryAttr getAttributes() { return odsAttrs; } ::mlir::IntegerAttr getClampAttr(); bool getClamp(); }; } // namespace detail template class udot8GenericAdaptor : public detail::udot8GenericAdaptorBase { using ValueT = ::llvm::detail::ValueOfRange; using Base = detail::udot8GenericAdaptorBase; static constexpr int odsIndex_a = 0; static constexpr int odsIndex_b = 1; static constexpr int odsIndex_c = 2; public: udot8GenericAdaptor(RangeT values, ::mlir::DictionaryAttr attrs, const Properties &properties, ::mlir::RegionRange regions = {}) : Base(attrs, properties, regions), odsOperands(values) {} udot8GenericAdaptor(RangeT values, ::mlir::DictionaryAttr attrs, ::mlir::PropertyRef properties, ::mlir::RegionRange regions = {}) : udot8GenericAdaptor(values, attrs, (properties ? *properties.as() : Properties{}), regions) {} udot8GenericAdaptor(RangeT values, ::mlir::DictionaryAttr attrs = nullptr) : udot8GenericAdaptor(values, attrs, Properties{}, {}) {} udot8GenericAdaptor(RangeT values, const udot8GenericAdaptorBase &base) : Base(base), odsOperands(values) {} template >> udot8GenericAdaptor(RangeT values, LateInst op) : Base(op), odsOperands(values) {} std::pair getODSOperandIndexAndLength(unsigned index) { return Base::getODSOperandIndexAndLength(index, odsOperands.size()); } RangeT getODSOperands(unsigned index) { auto valueRange = getODSOperandIndexAndLength(index); return {std::next(odsOperands.begin(), valueRange.first), std::next(odsOperands.begin(), valueRange.first + valueRange.second)}; } ValueT getA() { return (*getODSOperands(0).begin()); } ValueT getB() { return (*getODSOperands(1).begin()); } ValueT getC() { return (*getODSOperands(2).begin()); } RangeT getOperands() { return odsOperands; } private: RangeT odsOperands; }; class udot8Adaptor : public udot8GenericAdaptor<::mlir::ValueRange> { public: using udot8GenericAdaptor::udot8GenericAdaptor; udot8Adaptor(udot8 op); ::llvm::LogicalResult verify(::mlir::Location loc); }; class udot8 : public ::mlir::Op::Impl, ::mlir::OpTrait::ZeroSuccessors, ::mlir::OpTrait::NOperands<3>::Impl, ::mlir::OpTrait::OpInvariants, ::mlir::BytecodeOpInterface::Trait, ::mlir::ConditionallySpeculatable::Trait, ::mlir::OpTrait::AlwaysSpeculatableImplTrait, ::mlir::MemoryEffectOpInterface::Trait> { public: using Op::Op; using Op::print; using Adaptor = udot8Adaptor; template using GenericAdaptor = udot8GenericAdaptor; using FoldAdaptor = GenericAdaptor<::llvm::ArrayRef<::mlir::Attribute>>; static constexpr int odsIndex_a = 0; static constexpr int odsIndex_b = 1; static constexpr int odsIndex_c = 2; using Properties = FoldAdaptor::Properties; static ::llvm::ArrayRef<::llvm::StringRef> getAttributeNames() { static ::llvm::StringRef attrNames[] = {::llvm::StringRef("clamp")}; return ::llvm::ArrayRef(attrNames); } ::mlir::StringAttr getClampAttrName() { return getAttributeNameForIndex(0); } static ::mlir::StringAttr getClampAttrName(::mlir::OperationName name) { return getAttributeNameForIndex(name, 0); } static constexpr ::llvm::StringLiteral getOperationName() { return ::llvm::StringLiteral("rocdl.udot8"); } std::pair getODSOperandIndexAndLength(unsigned index) { return {index, 1}; } ::mlir::Operation::operand_range getODSOperands(unsigned index) { auto valueRange = getODSOperandIndexAndLength(index); return {std::next(getOperation()->operand_begin(), valueRange.first), std::next(getOperation()->operand_begin(), valueRange.first + valueRange.second)}; } ::mlir::TypedValue<::mlir::Type> getA() { return ::llvm::cast<::mlir::TypedValue<::mlir::Type>>(*getODSOperands(0).begin()); } ::mlir::TypedValue<::mlir::Type> getB() { return ::llvm::cast<::mlir::TypedValue<::mlir::Type>>(*getODSOperands(1).begin()); } ::mlir::TypedValue<::mlir::Type> getC() { return ::llvm::cast<::mlir::TypedValue<::mlir::Type>>(*getODSOperands(2).begin()); } ::mlir::OpOperand &getAMutable() { auto range = getODSOperandIndexAndLength(0); return getOperation()->getOpOperand(range.first); } ::mlir::OpOperand &getBMutable() { auto range = getODSOperandIndexAndLength(1); return getOperation()->getOpOperand(range.first); } ::mlir::OpOperand &getCMutable() { auto range = getODSOperandIndexAndLength(2); return getOperation()->getOpOperand(range.first); } std::pair getODSResultIndexAndLength(unsigned index) { return {index, 1}; } ::mlir::Operation::result_range getODSResults(unsigned index) { auto valueRange = getODSResultIndexAndLength(index); return {std::next(getOperation()->result_begin(), valueRange.first), std::next(getOperation()->result_begin(), valueRange.first + valueRange.second)}; } ::mlir::TypedValue<::mlir::Type> getRes() { return ::llvm::cast<::mlir::TypedValue<::mlir::Type>>(*getODSResults(0).begin()); } static ::llvm::LogicalResult setPropertiesFromAttr(Properties &prop, ::mlir::Attribute attr, ::llvm::function_ref<::mlir::InFlightDiagnostic()> emitError); static ::mlir::Attribute getPropertiesAsAttr(::mlir::MLIRContext *ctx, const Properties &prop); static llvm::hash_code computePropertiesHash(const Properties &prop); static std::optional getInherentAttr(::mlir::MLIRContext *ctx, const Properties &prop, llvm::StringRef name); static void setInherentAttr(Properties &prop, llvm::StringRef name, mlir::Attribute value); static void populateInherentAttrs(::mlir::MLIRContext *ctx, const Properties &prop, ::mlir::NamedAttrList &attrs); static ::llvm::LogicalResult verifyInherentAttrs(::mlir::OperationName opName, ::mlir::NamedAttrList &attrs, llvm::function_ref<::mlir::InFlightDiagnostic()> emitError); static ::llvm::LogicalResult readProperties(::mlir::DialectBytecodeReader &reader, ::mlir::OperationState &state); void writeProperties(::mlir::DialectBytecodeWriter &writer); ::mlir::IntegerAttr getClampAttr() { return ::llvm::dyn_cast_or_null<::mlir::IntegerAttr>(getProperties().clamp); } bool getClamp(); void setClampAttr(::mlir::IntegerAttr attr) { getProperties().clamp = attr; } void setClamp(bool attrValue); static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::Type res, ::mlir::Value a, ::mlir::Value b, ::mlir::Value c, ::mlir::IntegerAttr clamp); static udot8 create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::Type res, ::mlir::Value a, ::mlir::Value b, ::mlir::Value c, ::mlir::IntegerAttr clamp); static udot8 create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::Type res, ::mlir::Value a, ::mlir::Value b, ::mlir::Value c, ::mlir::IntegerAttr clamp); static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::Value a, ::mlir::Value b, ::mlir::Value c, ::mlir::IntegerAttr clamp); static udot8 create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::Value a, ::mlir::Value b, ::mlir::Value c, ::mlir::IntegerAttr clamp); static udot8 create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::Value a, ::mlir::Value b, ::mlir::Value c, ::mlir::IntegerAttr clamp); static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::Type res, ::mlir::Value a, ::mlir::Value b, ::mlir::Value c, bool clamp = 0); static udot8 create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::Type res, ::mlir::Value a, ::mlir::Value b, ::mlir::Value c, bool clamp = 0); static udot8 create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::Type res, ::mlir::Value a, ::mlir::Value b, ::mlir::Value c, bool clamp = 0); static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::Value a, ::mlir::Value b, ::mlir::Value c, bool clamp = 0); static udot8 create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::Value a, ::mlir::Value b, ::mlir::Value c, bool clamp = 0); static udot8 create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::Value a, ::mlir::Value b, ::mlir::Value c, bool clamp = 0); static void build(::mlir::OpBuilder &, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, ::llvm::ArrayRef<::mlir::NamedAttribute> attributes = {}); static udot8 create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, ::llvm::ArrayRef<::mlir::NamedAttribute> attributes = {}); static udot8 create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, ::llvm::ArrayRef<::mlir::NamedAttribute> attributes = {}); static void build(::mlir::OpBuilder &, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, const Properties &properties, ::llvm::ArrayRef<::mlir::NamedAttribute> discardableAttributes = {}); static udot8 create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, const Properties &properties, ::llvm::ArrayRef<::mlir::NamedAttribute> discardableAttributes = {}); static udot8 create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, const Properties &properties, ::llvm::ArrayRef<::mlir::NamedAttribute> discardableAttributes = {}); static void populateDefaultProperties(::mlir::OperationName opName, Properties &properties); ::llvm::LogicalResult verifyInvariantsImpl(); ::llvm::LogicalResult verifyInvariants(); static ::mlir::ParseResult parse(::mlir::OpAsmParser &parser, ::mlir::OperationState &result); void print(::mlir::OpAsmPrinter &_odsPrinter); void getEffects(::llvm::SmallVectorImpl<::mlir::SideEffects::EffectInstance<::mlir::MemoryEffects::Effect>> &effects); private: ::mlir::StringAttr getAttributeNameForIndex(unsigned index) { return getAttributeNameForIndex((*this)->getName(), index); } static ::mlir::StringAttr getAttributeNameForIndex(::mlir::OperationName name, unsigned index) { assert(index < 1 && "invalid attribute index"); assert(name.getStringRef() == getOperationName() && "invalid operation name"); assert(name.isRegistered() && "Operation isn't registered, missing a " "dependent dialect loading?"); return name.getAttributeNames()[index]; } public: }; } // namespace mlir::ROCDL MLIR_DECLARE_EXPLICIT_TYPE_ID(::mlir::ROCDL::udot8) MLIR_DECLARE_EXPLICIT_TYPE_ID(::mlir::ROCDL::detail::udot8GenericAdaptorBase::Properties) namespace mlir::ROCDL { //===----------------------------------------------------------------------===// // ::mlir::ROCDL::wmma_bf16_16x16x16_bf16 declarations //===----------------------------------------------------------------------===// namespace detail { class wmma_bf16_16x16x16_bf16GenericAdaptorBase { public: struct Properties { using opselTy = ::mlir::IntegerAttr; opselTy opsel; auto getOpsel() const { auto &propStorage = this->opsel; return ::llvm::dyn_cast_or_null<::mlir::IntegerAttr>(propStorage); } void setOpsel(const ::mlir::IntegerAttr &propValue) { this->opsel = propValue; } bool operator==(const Properties &rhs) const { return rhs.opsel == this->opsel && true; } bool operator!=(const Properties &rhs) const { return !(*this == rhs); } }; protected: ::mlir::DictionaryAttr odsAttrs; ::std::optional<::mlir::OperationName> odsOpName; Properties properties; ::mlir::RegionRange odsRegions; public: wmma_bf16_16x16x16_bf16GenericAdaptorBase(::mlir::DictionaryAttr attrs, const Properties &properties, ::mlir::RegionRange regions = {}) : odsAttrs(attrs), properties(properties), odsRegions(regions) { if (odsAttrs) odsOpName.emplace("rocdl.wmma.bf16.16x16x16.bf16", odsAttrs.getContext()); } wmma_bf16_16x16x16_bf16GenericAdaptorBase(wmma_bf16_16x16x16_bf16 op); std::pair getODSOperandIndexAndLength(unsigned index, unsigned odsOperandsSize) { return {index, 1}; } const Properties &getProperties() { return properties; } ::mlir::DictionaryAttr getAttributes() { return odsAttrs; } ::mlir::IntegerAttr getOpselAttr(); bool getOpsel(); }; } // namespace detail template class wmma_bf16_16x16x16_bf16GenericAdaptor : public detail::wmma_bf16_16x16x16_bf16GenericAdaptorBase { using ValueT = ::llvm::detail::ValueOfRange; using Base = detail::wmma_bf16_16x16x16_bf16GenericAdaptorBase; static constexpr int odsIndex_a = 0; static constexpr int odsIndex_b = 1; static constexpr int odsIndex_c = 2; public: wmma_bf16_16x16x16_bf16GenericAdaptor(RangeT values, ::mlir::DictionaryAttr attrs, const Properties &properties, ::mlir::RegionRange regions = {}) : Base(attrs, properties, regions), odsOperands(values) {} wmma_bf16_16x16x16_bf16GenericAdaptor(RangeT values, ::mlir::DictionaryAttr attrs, ::mlir::PropertyRef properties, ::mlir::RegionRange regions = {}) : wmma_bf16_16x16x16_bf16GenericAdaptor(values, attrs, (properties ? *properties.as() : Properties{}), regions) {} wmma_bf16_16x16x16_bf16GenericAdaptor(RangeT values, ::mlir::DictionaryAttr attrs = nullptr) : wmma_bf16_16x16x16_bf16GenericAdaptor(values, attrs, Properties{}, {}) {} wmma_bf16_16x16x16_bf16GenericAdaptor(RangeT values, const wmma_bf16_16x16x16_bf16GenericAdaptorBase &base) : Base(base), odsOperands(values) {} template >> wmma_bf16_16x16x16_bf16GenericAdaptor(RangeT values, LateInst op) : Base(op), odsOperands(values) {} std::pair getODSOperandIndexAndLength(unsigned index) { return Base::getODSOperandIndexAndLength(index, odsOperands.size()); } RangeT getODSOperands(unsigned index) { auto valueRange = getODSOperandIndexAndLength(index); return {std::next(odsOperands.begin(), valueRange.first), std::next(odsOperands.begin(), valueRange.first + valueRange.second)}; } ValueT getA() { return (*getODSOperands(0).begin()); } ValueT getB() { return (*getODSOperands(1).begin()); } ValueT getC() { return (*getODSOperands(2).begin()); } RangeT getOperands() { return odsOperands; } private: RangeT odsOperands; }; class wmma_bf16_16x16x16_bf16Adaptor : public wmma_bf16_16x16x16_bf16GenericAdaptor<::mlir::ValueRange> { public: using wmma_bf16_16x16x16_bf16GenericAdaptor::wmma_bf16_16x16x16_bf16GenericAdaptor; wmma_bf16_16x16x16_bf16Adaptor(wmma_bf16_16x16x16_bf16 op); ::llvm::LogicalResult verify(::mlir::Location loc); }; class wmma_bf16_16x16x16_bf16 : public ::mlir::Op::Impl, ::mlir::OpTrait::ZeroSuccessors, ::mlir::OpTrait::NOperands<3>::Impl, ::mlir::OpTrait::OpInvariants, ::mlir::BytecodeOpInterface::Trait> { public: using Op::Op; using Op::print; using Adaptor = wmma_bf16_16x16x16_bf16Adaptor; template using GenericAdaptor = wmma_bf16_16x16x16_bf16GenericAdaptor; using FoldAdaptor = GenericAdaptor<::llvm::ArrayRef<::mlir::Attribute>>; static constexpr int odsIndex_a = 0; static constexpr int odsIndex_b = 1; static constexpr int odsIndex_c = 2; using Properties = FoldAdaptor::Properties; static ::llvm::ArrayRef<::llvm::StringRef> getAttributeNames() { static ::llvm::StringRef attrNames[] = {::llvm::StringRef("opsel")}; return ::llvm::ArrayRef(attrNames); } ::mlir::StringAttr getOpselAttrName() { return getAttributeNameForIndex(0); } static ::mlir::StringAttr getOpselAttrName(::mlir::OperationName name) { return getAttributeNameForIndex(name, 0); } static constexpr ::llvm::StringLiteral getOperationName() { return ::llvm::StringLiteral("rocdl.wmma.bf16.16x16x16.bf16"); } std::pair getODSOperandIndexAndLength(unsigned index) { return {index, 1}; } ::mlir::Operation::operand_range getODSOperands(unsigned index) { auto valueRange = getODSOperandIndexAndLength(index); return {std::next(getOperation()->operand_begin(), valueRange.first), std::next(getOperation()->operand_begin(), valueRange.first + valueRange.second)}; } ::mlir::TypedValue<::mlir::Type> getA() { return ::llvm::cast<::mlir::TypedValue<::mlir::Type>>(*getODSOperands(0).begin()); } ::mlir::TypedValue<::mlir::Type> getB() { return ::llvm::cast<::mlir::TypedValue<::mlir::Type>>(*getODSOperands(1).begin()); } ::mlir::TypedValue<::mlir::Type> getC() { return ::llvm::cast<::mlir::TypedValue<::mlir::Type>>(*getODSOperands(2).begin()); } ::mlir::OpOperand &getAMutable() { auto range = getODSOperandIndexAndLength(0); return getOperation()->getOpOperand(range.first); } ::mlir::OpOperand &getBMutable() { auto range = getODSOperandIndexAndLength(1); return getOperation()->getOpOperand(range.first); } ::mlir::OpOperand &getCMutable() { auto range = getODSOperandIndexAndLength(2); return getOperation()->getOpOperand(range.first); } std::pair getODSResultIndexAndLength(unsigned index) { return {index, 1}; } ::mlir::Operation::result_range getODSResults(unsigned index) { auto valueRange = getODSResultIndexAndLength(index); return {std::next(getOperation()->result_begin(), valueRange.first), std::next(getOperation()->result_begin(), valueRange.first + valueRange.second)}; } ::mlir::TypedValue<::mlir::Type> getRes() { return ::llvm::cast<::mlir::TypedValue<::mlir::Type>>(*getODSResults(0).begin()); } static ::llvm::LogicalResult setPropertiesFromAttr(Properties &prop, ::mlir::Attribute attr, ::llvm::function_ref<::mlir::InFlightDiagnostic()> emitError); static ::mlir::Attribute getPropertiesAsAttr(::mlir::MLIRContext *ctx, const Properties &prop); static llvm::hash_code computePropertiesHash(const Properties &prop); static std::optional getInherentAttr(::mlir::MLIRContext *ctx, const Properties &prop, llvm::StringRef name); static void setInherentAttr(Properties &prop, llvm::StringRef name, mlir::Attribute value); static void populateInherentAttrs(::mlir::MLIRContext *ctx, const Properties &prop, ::mlir::NamedAttrList &attrs); static ::llvm::LogicalResult verifyInherentAttrs(::mlir::OperationName opName, ::mlir::NamedAttrList &attrs, llvm::function_ref<::mlir::InFlightDiagnostic()> emitError); static ::llvm::LogicalResult readProperties(::mlir::DialectBytecodeReader &reader, ::mlir::OperationState &state); void writeProperties(::mlir::DialectBytecodeWriter &writer); ::mlir::IntegerAttr getOpselAttr() { return ::llvm::dyn_cast_or_null<::mlir::IntegerAttr>(getProperties().opsel); } bool getOpsel(); void setOpselAttr(::mlir::IntegerAttr attr) { getProperties().opsel = attr; } void setOpsel(bool attrValue); static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::Type res, ::mlir::Value a, ::mlir::Value b, ::mlir::Value c, ::mlir::IntegerAttr opsel); static wmma_bf16_16x16x16_bf16 create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::Type res, ::mlir::Value a, ::mlir::Value b, ::mlir::Value c, ::mlir::IntegerAttr opsel); static wmma_bf16_16x16x16_bf16 create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::Type res, ::mlir::Value a, ::mlir::Value b, ::mlir::Value c, ::mlir::IntegerAttr opsel); static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::Value a, ::mlir::Value b, ::mlir::Value c, ::mlir::IntegerAttr opsel); static wmma_bf16_16x16x16_bf16 create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::Value a, ::mlir::Value b, ::mlir::Value c, ::mlir::IntegerAttr opsel); static wmma_bf16_16x16x16_bf16 create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::Value a, ::mlir::Value b, ::mlir::Value c, ::mlir::IntegerAttr opsel); static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::Type res, ::mlir::Value a, ::mlir::Value b, ::mlir::Value c, bool opsel = 0); static wmma_bf16_16x16x16_bf16 create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::Type res, ::mlir::Value a, ::mlir::Value b, ::mlir::Value c, bool opsel = 0); static wmma_bf16_16x16x16_bf16 create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::Type res, ::mlir::Value a, ::mlir::Value b, ::mlir::Value c, bool opsel = 0); static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::Value a, ::mlir::Value b, ::mlir::Value c, bool opsel = 0); static wmma_bf16_16x16x16_bf16 create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::Value a, ::mlir::Value b, ::mlir::Value c, bool opsel = 0); static wmma_bf16_16x16x16_bf16 create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::Value a, ::mlir::Value b, ::mlir::Value c, bool opsel = 0); static void build(::mlir::OpBuilder &, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, ::llvm::ArrayRef<::mlir::NamedAttribute> attributes = {}); static wmma_bf16_16x16x16_bf16 create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, ::llvm::ArrayRef<::mlir::NamedAttribute> attributes = {}); static wmma_bf16_16x16x16_bf16 create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, ::llvm::ArrayRef<::mlir::NamedAttribute> attributes = {}); static void build(::mlir::OpBuilder &, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, const Properties &properties, ::llvm::ArrayRef<::mlir::NamedAttribute> discardableAttributes = {}); static wmma_bf16_16x16x16_bf16 create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, const Properties &properties, ::llvm::ArrayRef<::mlir::NamedAttribute> discardableAttributes = {}); static wmma_bf16_16x16x16_bf16 create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, const Properties &properties, ::llvm::ArrayRef<::mlir::NamedAttribute> discardableAttributes = {}); static void populateDefaultProperties(::mlir::OperationName opName, Properties &properties); ::llvm::LogicalResult verifyInvariantsImpl(); ::llvm::LogicalResult verifyInvariants(); static ::mlir::ParseResult parse(::mlir::OpAsmParser &parser, ::mlir::OperationState &result); void print(::mlir::OpAsmPrinter &_odsPrinter); private: ::mlir::StringAttr getAttributeNameForIndex(unsigned index) { return getAttributeNameForIndex((*this)->getName(), index); } static ::mlir::StringAttr getAttributeNameForIndex(::mlir::OperationName name, unsigned index) { assert(index < 1 && "invalid attribute index"); assert(name.getStringRef() == getOperationName() && "invalid operation name"); assert(name.isRegistered() && "Operation isn't registered, missing a " "dependent dialect loading?"); return name.getAttributeNames()[index]; } public: }; } // namespace mlir::ROCDL MLIR_DECLARE_EXPLICIT_TYPE_ID(::mlir::ROCDL::wmma_bf16_16x16x16_bf16) MLIR_DECLARE_EXPLICIT_TYPE_ID(::mlir::ROCDL::detail::wmma_bf16_16x16x16_bf16GenericAdaptorBase::Properties) namespace mlir::ROCDL { //===----------------------------------------------------------------------===// // ::mlir::ROCDL::wmma_bf16_16x16x32_bf16 declarations //===----------------------------------------------------------------------===// namespace detail { class wmma_bf16_16x16x32_bf16GenericAdaptorBase { public: struct Properties { using modCTy = ::mlir::ROCDL::WMMACModifierAttr; modCTy modC; auto getModC() const { auto &propStorage = this->modC; return ::llvm::dyn_cast_or_null<::mlir::ROCDL::WMMACModifierAttr>(propStorage); } void setModC(const ::mlir::ROCDL::WMMACModifierAttr &propValue) { this->modC = propValue; } using reuseATy = ::mlir::IntegerAttr; reuseATy reuseA; auto getReuseA() const { auto &propStorage = this->reuseA; return ::llvm::dyn_cast_or_null<::mlir::IntegerAttr>(propStorage); } void setReuseA(const ::mlir::IntegerAttr &propValue) { this->reuseA = propValue; } using reuseBTy = ::mlir::IntegerAttr; reuseBTy reuseB; auto getReuseB() const { auto &propStorage = this->reuseB; return ::llvm::dyn_cast_or_null<::mlir::IntegerAttr>(propStorage); } void setReuseB(const ::mlir::IntegerAttr &propValue) { this->reuseB = propValue; } bool operator==(const Properties &rhs) const { return rhs.modC == this->modC && rhs.reuseA == this->reuseA && rhs.reuseB == this->reuseB && true; } bool operator!=(const Properties &rhs) const { return !(*this == rhs); } }; protected: ::mlir::DictionaryAttr odsAttrs; ::std::optional<::mlir::OperationName> odsOpName; Properties properties; ::mlir::RegionRange odsRegions; public: wmma_bf16_16x16x32_bf16GenericAdaptorBase(::mlir::DictionaryAttr attrs, const Properties &properties, ::mlir::RegionRange regions = {}) : odsAttrs(attrs), properties(properties), odsRegions(regions) { if (odsAttrs) odsOpName.emplace("rocdl.wmma.bf16.16x16x32.bf16", odsAttrs.getContext()); } wmma_bf16_16x16x32_bf16GenericAdaptorBase(wmma_bf16_16x16x32_bf16 op); std::pair getODSOperandIndexAndLength(unsigned index, unsigned odsOperandsSize) { return {index, 1}; } const Properties &getProperties() { return properties; } ::mlir::DictionaryAttr getAttributes() { return odsAttrs; } ::mlir::ROCDL::WMMACModifierAttr getModCAttr(); ::mlir::ROCDL::WMMACModifier getModC(); ::mlir::IntegerAttr getReuseAAttr(); bool getReuseA(); ::mlir::IntegerAttr getReuseBAttr(); bool getReuseB(); }; } // namespace detail template class wmma_bf16_16x16x32_bf16GenericAdaptor : public detail::wmma_bf16_16x16x32_bf16GenericAdaptorBase { using ValueT = ::llvm::detail::ValueOfRange; using Base = detail::wmma_bf16_16x16x32_bf16GenericAdaptorBase; static constexpr int odsIndex_a = 0; static constexpr int odsIndex_b = 1; static constexpr int odsIndex_c = 2; public: wmma_bf16_16x16x32_bf16GenericAdaptor(RangeT values, ::mlir::DictionaryAttr attrs, const Properties &properties, ::mlir::RegionRange regions = {}) : Base(attrs, properties, regions), odsOperands(values) {} wmma_bf16_16x16x32_bf16GenericAdaptor(RangeT values, ::mlir::DictionaryAttr attrs, ::mlir::PropertyRef properties, ::mlir::RegionRange regions = {}) : wmma_bf16_16x16x32_bf16GenericAdaptor(values, attrs, (properties ? *properties.as() : Properties{}), regions) {} wmma_bf16_16x16x32_bf16GenericAdaptor(RangeT values, ::mlir::DictionaryAttr attrs = nullptr) : wmma_bf16_16x16x32_bf16GenericAdaptor(values, attrs, Properties{}, {}) {} wmma_bf16_16x16x32_bf16GenericAdaptor(RangeT values, const wmma_bf16_16x16x32_bf16GenericAdaptorBase &base) : Base(base), odsOperands(values) {} template >> wmma_bf16_16x16x32_bf16GenericAdaptor(RangeT values, LateInst op) : Base(op), odsOperands(values) {} std::pair getODSOperandIndexAndLength(unsigned index) { return Base::getODSOperandIndexAndLength(index, odsOperands.size()); } RangeT getODSOperands(unsigned index) { auto valueRange = getODSOperandIndexAndLength(index); return {std::next(odsOperands.begin(), valueRange.first), std::next(odsOperands.begin(), valueRange.first + valueRange.second)}; } ValueT getA() { return (*getODSOperands(0).begin()); } ValueT getB() { return (*getODSOperands(1).begin()); } ValueT getC() { return (*getODSOperands(2).begin()); } RangeT getOperands() { return odsOperands; } private: RangeT odsOperands; }; class wmma_bf16_16x16x32_bf16Adaptor : public wmma_bf16_16x16x32_bf16GenericAdaptor<::mlir::ValueRange> { public: using wmma_bf16_16x16x32_bf16GenericAdaptor::wmma_bf16_16x16x32_bf16GenericAdaptor; wmma_bf16_16x16x32_bf16Adaptor(wmma_bf16_16x16x32_bf16 op); ::llvm::LogicalResult verify(::mlir::Location loc); }; class wmma_bf16_16x16x32_bf16 : public ::mlir::Op::Impl, ::mlir::OpTrait::ZeroSuccessors, ::mlir::OpTrait::NOperands<3>::Impl, ::mlir::OpTrait::OpInvariants, ::mlir::BytecodeOpInterface::Trait> { public: using Op::Op; using Op::print; using Adaptor = wmma_bf16_16x16x32_bf16Adaptor; template using GenericAdaptor = wmma_bf16_16x16x32_bf16GenericAdaptor; using FoldAdaptor = GenericAdaptor<::llvm::ArrayRef<::mlir::Attribute>>; static constexpr int odsIndex_a = 0; static constexpr int odsIndex_b = 1; static constexpr int odsIndex_c = 2; using Properties = FoldAdaptor::Properties; static ::llvm::ArrayRef<::llvm::StringRef> getAttributeNames() { static ::llvm::StringRef attrNames[] = {::llvm::StringRef("modC"), ::llvm::StringRef("reuseA"), ::llvm::StringRef("reuseB")}; return ::llvm::ArrayRef(attrNames); } ::mlir::StringAttr getModCAttrName() { return getAttributeNameForIndex(0); } static ::mlir::StringAttr getModCAttrName(::mlir::OperationName name) { return getAttributeNameForIndex(name, 0); } ::mlir::StringAttr getReuseAAttrName() { return getAttributeNameForIndex(1); } static ::mlir::StringAttr getReuseAAttrName(::mlir::OperationName name) { return getAttributeNameForIndex(name, 1); } ::mlir::StringAttr getReuseBAttrName() { return getAttributeNameForIndex(2); } static ::mlir::StringAttr getReuseBAttrName(::mlir::OperationName name) { return getAttributeNameForIndex(name, 2); } static constexpr ::llvm::StringLiteral getOperationName() { return ::llvm::StringLiteral("rocdl.wmma.bf16.16x16x32.bf16"); } std::pair getODSOperandIndexAndLength(unsigned index) { return {index, 1}; } ::mlir::Operation::operand_range getODSOperands(unsigned index) { auto valueRange = getODSOperandIndexAndLength(index); return {std::next(getOperation()->operand_begin(), valueRange.first), std::next(getOperation()->operand_begin(), valueRange.first + valueRange.second)}; } ::mlir::TypedValue<::mlir::Type> getA() { return ::llvm::cast<::mlir::TypedValue<::mlir::Type>>(*getODSOperands(0).begin()); } ::mlir::TypedValue<::mlir::Type> getB() { return ::llvm::cast<::mlir::TypedValue<::mlir::Type>>(*getODSOperands(1).begin()); } ::mlir::TypedValue<::mlir::Type> getC() { return ::llvm::cast<::mlir::TypedValue<::mlir::Type>>(*getODSOperands(2).begin()); } ::mlir::OpOperand &getAMutable() { auto range = getODSOperandIndexAndLength(0); return getOperation()->getOpOperand(range.first); } ::mlir::OpOperand &getBMutable() { auto range = getODSOperandIndexAndLength(1); return getOperation()->getOpOperand(range.first); } ::mlir::OpOperand &getCMutable() { auto range = getODSOperandIndexAndLength(2); return getOperation()->getOpOperand(range.first); } std::pair getODSResultIndexAndLength(unsigned index) { return {index, 1}; } ::mlir::Operation::result_range getODSResults(unsigned index) { auto valueRange = getODSResultIndexAndLength(index); return {std::next(getOperation()->result_begin(), valueRange.first), std::next(getOperation()->result_begin(), valueRange.first + valueRange.second)}; } ::mlir::TypedValue<::mlir::Type> getRes() { return ::llvm::cast<::mlir::TypedValue<::mlir::Type>>(*getODSResults(0).begin()); } static ::llvm::LogicalResult setPropertiesFromAttr(Properties &prop, ::mlir::Attribute attr, ::llvm::function_ref<::mlir::InFlightDiagnostic()> emitError); static ::mlir::Attribute getPropertiesAsAttr(::mlir::MLIRContext *ctx, const Properties &prop); static llvm::hash_code computePropertiesHash(const Properties &prop); static std::optional getInherentAttr(::mlir::MLIRContext *ctx, const Properties &prop, llvm::StringRef name); static void setInherentAttr(Properties &prop, llvm::StringRef name, mlir::Attribute value); static void populateInherentAttrs(::mlir::MLIRContext *ctx, const Properties &prop, ::mlir::NamedAttrList &attrs); static ::llvm::LogicalResult verifyInherentAttrs(::mlir::OperationName opName, ::mlir::NamedAttrList &attrs, llvm::function_ref<::mlir::InFlightDiagnostic()> emitError); static ::llvm::LogicalResult readProperties(::mlir::DialectBytecodeReader &reader, ::mlir::OperationState &state); void writeProperties(::mlir::DialectBytecodeWriter &writer); ::mlir::ROCDL::WMMACModifierAttr getModCAttr() { return ::llvm::dyn_cast_or_null<::mlir::ROCDL::WMMACModifierAttr>(getProperties().modC); } ::mlir::ROCDL::WMMACModifier getModC(); ::mlir::IntegerAttr getReuseAAttr() { return ::llvm::dyn_cast_or_null<::mlir::IntegerAttr>(getProperties().reuseA); } bool getReuseA(); ::mlir::IntegerAttr getReuseBAttr() { return ::llvm::dyn_cast_or_null<::mlir::IntegerAttr>(getProperties().reuseB); } bool getReuseB(); void setModCAttr(::mlir::ROCDL::WMMACModifierAttr attr) { getProperties().modC = attr; } void setModC(::mlir::ROCDL::WMMACModifier attrValue); void setReuseAAttr(::mlir::IntegerAttr attr) { getProperties().reuseA = attr; } void setReuseA(bool attrValue); void setReuseBAttr(::mlir::IntegerAttr attr) { getProperties().reuseB = attr; } void setReuseB(bool attrValue); static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::Type res, ::mlir::Value a, ::mlir::Value b, ::mlir::ROCDL::WMMACModifierAttr modC, ::mlir::Value c, ::mlir::IntegerAttr reuseA, ::mlir::IntegerAttr reuseB = nullptr); static wmma_bf16_16x16x32_bf16 create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::Type res, ::mlir::Value a, ::mlir::Value b, ::mlir::ROCDL::WMMACModifierAttr modC, ::mlir::Value c, ::mlir::IntegerAttr reuseA, ::mlir::IntegerAttr reuseB = nullptr); static wmma_bf16_16x16x32_bf16 create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::Type res, ::mlir::Value a, ::mlir::Value b, ::mlir::ROCDL::WMMACModifierAttr modC, ::mlir::Value c, ::mlir::IntegerAttr reuseA, ::mlir::IntegerAttr reuseB = nullptr); static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::Value a, ::mlir::Value b, ::mlir::ROCDL::WMMACModifierAttr modC, ::mlir::Value c, ::mlir::IntegerAttr reuseA, ::mlir::IntegerAttr reuseB = nullptr); static wmma_bf16_16x16x32_bf16 create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::Value a, ::mlir::Value b, ::mlir::ROCDL::WMMACModifierAttr modC, ::mlir::Value c, ::mlir::IntegerAttr reuseA, ::mlir::IntegerAttr reuseB = nullptr); static wmma_bf16_16x16x32_bf16 create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::Value a, ::mlir::Value b, ::mlir::ROCDL::WMMACModifierAttr modC, ::mlir::Value c, ::mlir::IntegerAttr reuseA, ::mlir::IntegerAttr reuseB = nullptr); static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::Type res, ::mlir::Value a, ::mlir::Value b, ::mlir::ROCDL::WMMACModifier modC, ::mlir::Value c, bool reuseA = 0, bool reuseB = 0); static wmma_bf16_16x16x32_bf16 create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::Type res, ::mlir::Value a, ::mlir::Value b, ::mlir::ROCDL::WMMACModifier modC, ::mlir::Value c, bool reuseA = 0, bool reuseB = 0); static wmma_bf16_16x16x32_bf16 create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::Type res, ::mlir::Value a, ::mlir::Value b, ::mlir::ROCDL::WMMACModifier modC, ::mlir::Value c, bool reuseA = 0, bool reuseB = 0); static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::Value a, ::mlir::Value b, ::mlir::ROCDL::WMMACModifier modC, ::mlir::Value c, bool reuseA = 0, bool reuseB = 0); static wmma_bf16_16x16x32_bf16 create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::Value a, ::mlir::Value b, ::mlir::ROCDL::WMMACModifier modC, ::mlir::Value c, bool reuseA = 0, bool reuseB = 0); static wmma_bf16_16x16x32_bf16 create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::Value a, ::mlir::Value b, ::mlir::ROCDL::WMMACModifier modC, ::mlir::Value c, bool reuseA = 0, bool reuseB = 0); static void build(::mlir::OpBuilder &, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, ::llvm::ArrayRef<::mlir::NamedAttribute> attributes = {}); static wmma_bf16_16x16x32_bf16 create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, ::llvm::ArrayRef<::mlir::NamedAttribute> attributes = {}); static wmma_bf16_16x16x32_bf16 create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, ::llvm::ArrayRef<::mlir::NamedAttribute> attributes = {}); static void build(::mlir::OpBuilder &, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, const Properties &properties, ::llvm::ArrayRef<::mlir::NamedAttribute> discardableAttributes = {}); static wmma_bf16_16x16x32_bf16 create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, const Properties &properties, ::llvm::ArrayRef<::mlir::NamedAttribute> discardableAttributes = {}); static wmma_bf16_16x16x32_bf16 create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, const Properties &properties, ::llvm::ArrayRef<::mlir::NamedAttribute> discardableAttributes = {}); static void populateDefaultProperties(::mlir::OperationName opName, Properties &properties); ::llvm::LogicalResult verifyInvariantsImpl(); ::llvm::LogicalResult verifyInvariants(); static ::mlir::ParseResult parse(::mlir::OpAsmParser &parser, ::mlir::OperationState &result); void print(::mlir::OpAsmPrinter &_odsPrinter); private: ::mlir::StringAttr getAttributeNameForIndex(unsigned index) { return getAttributeNameForIndex((*this)->getName(), index); } static ::mlir::StringAttr getAttributeNameForIndex(::mlir::OperationName name, unsigned index) { assert(index < 3 && "invalid attribute index"); assert(name.getStringRef() == getOperationName() && "invalid operation name"); assert(name.isRegistered() && "Operation isn't registered, missing a " "dependent dialect loading?"); return name.getAttributeNames()[index]; } public: }; } // namespace mlir::ROCDL MLIR_DECLARE_EXPLICIT_TYPE_ID(::mlir::ROCDL::wmma_bf16_16x16x32_bf16) MLIR_DECLARE_EXPLICIT_TYPE_ID(::mlir::ROCDL::detail::wmma_bf16_16x16x32_bf16GenericAdaptorBase::Properties) namespace mlir::ROCDL { //===----------------------------------------------------------------------===// // ::mlir::ROCDL::wmma_bf16f32_16x16x32_bf16 declarations //===----------------------------------------------------------------------===// namespace detail { class wmma_bf16f32_16x16x32_bf16GenericAdaptorBase { public: struct Properties { using modCTy = ::mlir::ROCDL::WMMACModifierAttr; modCTy modC; auto getModC() const { auto &propStorage = this->modC; return ::llvm::dyn_cast_or_null<::mlir::ROCDL::WMMACModifierAttr>(propStorage); } void setModC(const ::mlir::ROCDL::WMMACModifierAttr &propValue) { this->modC = propValue; } using reuseATy = ::mlir::IntegerAttr; reuseATy reuseA; auto getReuseA() const { auto &propStorage = this->reuseA; return ::llvm::dyn_cast_or_null<::mlir::IntegerAttr>(propStorage); } void setReuseA(const ::mlir::IntegerAttr &propValue) { this->reuseA = propValue; } using reuseBTy = ::mlir::IntegerAttr; reuseBTy reuseB; auto getReuseB() const { auto &propStorage = this->reuseB; return ::llvm::dyn_cast_or_null<::mlir::IntegerAttr>(propStorage); } void setReuseB(const ::mlir::IntegerAttr &propValue) { this->reuseB = propValue; } bool operator==(const Properties &rhs) const { return rhs.modC == this->modC && rhs.reuseA == this->reuseA && rhs.reuseB == this->reuseB && true; } bool operator!=(const Properties &rhs) const { return !(*this == rhs); } }; protected: ::mlir::DictionaryAttr odsAttrs; ::std::optional<::mlir::OperationName> odsOpName; Properties properties; ::mlir::RegionRange odsRegions; public: wmma_bf16f32_16x16x32_bf16GenericAdaptorBase(::mlir::DictionaryAttr attrs, const Properties &properties, ::mlir::RegionRange regions = {}) : odsAttrs(attrs), properties(properties), odsRegions(regions) { if (odsAttrs) odsOpName.emplace("rocdl.wmma.bf16f32.16x16x32.bf16", odsAttrs.getContext()); } wmma_bf16f32_16x16x32_bf16GenericAdaptorBase(wmma_bf16f32_16x16x32_bf16 op); std::pair getODSOperandIndexAndLength(unsigned index, unsigned odsOperandsSize) { return {index, 1}; } const Properties &getProperties() { return properties; } ::mlir::DictionaryAttr getAttributes() { return odsAttrs; } ::mlir::ROCDL::WMMACModifierAttr getModCAttr(); ::mlir::ROCDL::WMMACModifier getModC(); ::mlir::IntegerAttr getReuseAAttr(); bool getReuseA(); ::mlir::IntegerAttr getReuseBAttr(); bool getReuseB(); }; } // namespace detail template class wmma_bf16f32_16x16x32_bf16GenericAdaptor : public detail::wmma_bf16f32_16x16x32_bf16GenericAdaptorBase { using ValueT = ::llvm::detail::ValueOfRange; using Base = detail::wmma_bf16f32_16x16x32_bf16GenericAdaptorBase; static constexpr int odsIndex_a = 0; static constexpr int odsIndex_b = 1; static constexpr int odsIndex_c = 2; public: wmma_bf16f32_16x16x32_bf16GenericAdaptor(RangeT values, ::mlir::DictionaryAttr attrs, const Properties &properties, ::mlir::RegionRange regions = {}) : Base(attrs, properties, regions), odsOperands(values) {} wmma_bf16f32_16x16x32_bf16GenericAdaptor(RangeT values, ::mlir::DictionaryAttr attrs, ::mlir::PropertyRef properties, ::mlir::RegionRange regions = {}) : wmma_bf16f32_16x16x32_bf16GenericAdaptor(values, attrs, (properties ? *properties.as() : Properties{}), regions) {} wmma_bf16f32_16x16x32_bf16GenericAdaptor(RangeT values, ::mlir::DictionaryAttr attrs = nullptr) : wmma_bf16f32_16x16x32_bf16GenericAdaptor(values, attrs, Properties{}, {}) {} wmma_bf16f32_16x16x32_bf16GenericAdaptor(RangeT values, const wmma_bf16f32_16x16x32_bf16GenericAdaptorBase &base) : Base(base), odsOperands(values) {} template >> wmma_bf16f32_16x16x32_bf16GenericAdaptor(RangeT values, LateInst op) : Base(op), odsOperands(values) {} std::pair getODSOperandIndexAndLength(unsigned index) { return Base::getODSOperandIndexAndLength(index, odsOperands.size()); } RangeT getODSOperands(unsigned index) { auto valueRange = getODSOperandIndexAndLength(index); return {std::next(odsOperands.begin(), valueRange.first), std::next(odsOperands.begin(), valueRange.first + valueRange.second)}; } ValueT getA() { return (*getODSOperands(0).begin()); } ValueT getB() { return (*getODSOperands(1).begin()); } ValueT getC() { return (*getODSOperands(2).begin()); } RangeT getOperands() { return odsOperands; } private: RangeT odsOperands; }; class wmma_bf16f32_16x16x32_bf16Adaptor : public wmma_bf16f32_16x16x32_bf16GenericAdaptor<::mlir::ValueRange> { public: using wmma_bf16f32_16x16x32_bf16GenericAdaptor::wmma_bf16f32_16x16x32_bf16GenericAdaptor; wmma_bf16f32_16x16x32_bf16Adaptor(wmma_bf16f32_16x16x32_bf16 op); ::llvm::LogicalResult verify(::mlir::Location loc); }; class wmma_bf16f32_16x16x32_bf16 : public ::mlir::Op::Impl, ::mlir::OpTrait::ZeroSuccessors, ::mlir::OpTrait::NOperands<3>::Impl, ::mlir::OpTrait::OpInvariants, ::mlir::BytecodeOpInterface::Trait> { public: using Op::Op; using Op::print; using Adaptor = wmma_bf16f32_16x16x32_bf16Adaptor; template using GenericAdaptor = wmma_bf16f32_16x16x32_bf16GenericAdaptor; using FoldAdaptor = GenericAdaptor<::llvm::ArrayRef<::mlir::Attribute>>; static constexpr int odsIndex_a = 0; static constexpr int odsIndex_b = 1; static constexpr int odsIndex_c = 2; using Properties = FoldAdaptor::Properties; static ::llvm::ArrayRef<::llvm::StringRef> getAttributeNames() { static ::llvm::StringRef attrNames[] = {::llvm::StringRef("modC"), ::llvm::StringRef("reuseA"), ::llvm::StringRef("reuseB")}; return ::llvm::ArrayRef(attrNames); } ::mlir::StringAttr getModCAttrName() { return getAttributeNameForIndex(0); } static ::mlir::StringAttr getModCAttrName(::mlir::OperationName name) { return getAttributeNameForIndex(name, 0); } ::mlir::StringAttr getReuseAAttrName() { return getAttributeNameForIndex(1); } static ::mlir::StringAttr getReuseAAttrName(::mlir::OperationName name) { return getAttributeNameForIndex(name, 1); } ::mlir::StringAttr getReuseBAttrName() { return getAttributeNameForIndex(2); } static ::mlir::StringAttr getReuseBAttrName(::mlir::OperationName name) { return getAttributeNameForIndex(name, 2); } static constexpr ::llvm::StringLiteral getOperationName() { return ::llvm::StringLiteral("rocdl.wmma.bf16f32.16x16x32.bf16"); } std::pair getODSOperandIndexAndLength(unsigned index) { return {index, 1}; } ::mlir::Operation::operand_range getODSOperands(unsigned index) { auto valueRange = getODSOperandIndexAndLength(index); return {std::next(getOperation()->operand_begin(), valueRange.first), std::next(getOperation()->operand_begin(), valueRange.first + valueRange.second)}; } ::mlir::TypedValue<::mlir::Type> getA() { return ::llvm::cast<::mlir::TypedValue<::mlir::Type>>(*getODSOperands(0).begin()); } ::mlir::TypedValue<::mlir::Type> getB() { return ::llvm::cast<::mlir::TypedValue<::mlir::Type>>(*getODSOperands(1).begin()); } ::mlir::TypedValue<::mlir::Type> getC() { return ::llvm::cast<::mlir::TypedValue<::mlir::Type>>(*getODSOperands(2).begin()); } ::mlir::OpOperand &getAMutable() { auto range = getODSOperandIndexAndLength(0); return getOperation()->getOpOperand(range.first); } ::mlir::OpOperand &getBMutable() { auto range = getODSOperandIndexAndLength(1); return getOperation()->getOpOperand(range.first); } ::mlir::OpOperand &getCMutable() { auto range = getODSOperandIndexAndLength(2); return getOperation()->getOpOperand(range.first); } std::pair getODSResultIndexAndLength(unsigned index) { return {index, 1}; } ::mlir::Operation::result_range getODSResults(unsigned index) { auto valueRange = getODSResultIndexAndLength(index); return {std::next(getOperation()->result_begin(), valueRange.first), std::next(getOperation()->result_begin(), valueRange.first + valueRange.second)}; } ::mlir::TypedValue<::mlir::Type> getRes() { return ::llvm::cast<::mlir::TypedValue<::mlir::Type>>(*getODSResults(0).begin()); } static ::llvm::LogicalResult setPropertiesFromAttr(Properties &prop, ::mlir::Attribute attr, ::llvm::function_ref<::mlir::InFlightDiagnostic()> emitError); static ::mlir::Attribute getPropertiesAsAttr(::mlir::MLIRContext *ctx, const Properties &prop); static llvm::hash_code computePropertiesHash(const Properties &prop); static std::optional getInherentAttr(::mlir::MLIRContext *ctx, const Properties &prop, llvm::StringRef name); static void setInherentAttr(Properties &prop, llvm::StringRef name, mlir::Attribute value); static void populateInherentAttrs(::mlir::MLIRContext *ctx, const Properties &prop, ::mlir::NamedAttrList &attrs); static ::llvm::LogicalResult verifyInherentAttrs(::mlir::OperationName opName, ::mlir::NamedAttrList &attrs, llvm::function_ref<::mlir::InFlightDiagnostic()> emitError); static ::llvm::LogicalResult readProperties(::mlir::DialectBytecodeReader &reader, ::mlir::OperationState &state); void writeProperties(::mlir::DialectBytecodeWriter &writer); ::mlir::ROCDL::WMMACModifierAttr getModCAttr() { return ::llvm::dyn_cast_or_null<::mlir::ROCDL::WMMACModifierAttr>(getProperties().modC); } ::mlir::ROCDL::WMMACModifier getModC(); ::mlir::IntegerAttr getReuseAAttr() { return ::llvm::dyn_cast_or_null<::mlir::IntegerAttr>(getProperties().reuseA); } bool getReuseA(); ::mlir::IntegerAttr getReuseBAttr() { return ::llvm::dyn_cast_or_null<::mlir::IntegerAttr>(getProperties().reuseB); } bool getReuseB(); void setModCAttr(::mlir::ROCDL::WMMACModifierAttr attr) { getProperties().modC = attr; } void setModC(::mlir::ROCDL::WMMACModifier attrValue); void setReuseAAttr(::mlir::IntegerAttr attr) { getProperties().reuseA = attr; } void setReuseA(bool attrValue); void setReuseBAttr(::mlir::IntegerAttr attr) { getProperties().reuseB = attr; } void setReuseB(bool attrValue); static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::Type res, ::mlir::Value a, ::mlir::Value b, ::mlir::ROCDL::WMMACModifierAttr modC, ::mlir::Value c, ::mlir::IntegerAttr reuseA, ::mlir::IntegerAttr reuseB = nullptr); static wmma_bf16f32_16x16x32_bf16 create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::Type res, ::mlir::Value a, ::mlir::Value b, ::mlir::ROCDL::WMMACModifierAttr modC, ::mlir::Value c, ::mlir::IntegerAttr reuseA, ::mlir::IntegerAttr reuseB = nullptr); static wmma_bf16f32_16x16x32_bf16 create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::Type res, ::mlir::Value a, ::mlir::Value b, ::mlir::ROCDL::WMMACModifierAttr modC, ::mlir::Value c, ::mlir::IntegerAttr reuseA, ::mlir::IntegerAttr reuseB = nullptr); static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::Value a, ::mlir::Value b, ::mlir::ROCDL::WMMACModifierAttr modC, ::mlir::Value c, ::mlir::IntegerAttr reuseA, ::mlir::IntegerAttr reuseB = nullptr); static wmma_bf16f32_16x16x32_bf16 create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::Value a, ::mlir::Value b, ::mlir::ROCDL::WMMACModifierAttr modC, ::mlir::Value c, ::mlir::IntegerAttr reuseA, ::mlir::IntegerAttr reuseB = nullptr); static wmma_bf16f32_16x16x32_bf16 create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::Value a, ::mlir::Value b, ::mlir::ROCDL::WMMACModifierAttr modC, ::mlir::Value c, ::mlir::IntegerAttr reuseA, ::mlir::IntegerAttr reuseB = nullptr); static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::Type res, ::mlir::Value a, ::mlir::Value b, ::mlir::ROCDL::WMMACModifier modC, ::mlir::Value c, bool reuseA = 0, bool reuseB = 0); static wmma_bf16f32_16x16x32_bf16 create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::Type res, ::mlir::Value a, ::mlir::Value b, ::mlir::ROCDL::WMMACModifier modC, ::mlir::Value c, bool reuseA = 0, bool reuseB = 0); static wmma_bf16f32_16x16x32_bf16 create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::Type res, ::mlir::Value a, ::mlir::Value b, ::mlir::ROCDL::WMMACModifier modC, ::mlir::Value c, bool reuseA = 0, bool reuseB = 0); static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::Value a, ::mlir::Value b, ::mlir::ROCDL::WMMACModifier modC, ::mlir::Value c, bool reuseA = 0, bool reuseB = 0); static wmma_bf16f32_16x16x32_bf16 create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::Value a, ::mlir::Value b, ::mlir::ROCDL::WMMACModifier modC, ::mlir::Value c, bool reuseA = 0, bool reuseB = 0); static wmma_bf16f32_16x16x32_bf16 create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::Value a, ::mlir::Value b, ::mlir::ROCDL::WMMACModifier modC, ::mlir::Value c, bool reuseA = 0, bool reuseB = 0); static void build(::mlir::OpBuilder &, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, ::llvm::ArrayRef<::mlir::NamedAttribute> attributes = {}); static wmma_bf16f32_16x16x32_bf16 create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, ::llvm::ArrayRef<::mlir::NamedAttribute> attributes = {}); static wmma_bf16f32_16x16x32_bf16 create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, ::llvm::ArrayRef<::mlir::NamedAttribute> attributes = {}); static void build(::mlir::OpBuilder &, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, const Properties &properties, ::llvm::ArrayRef<::mlir::NamedAttribute> discardableAttributes = {}); static wmma_bf16f32_16x16x32_bf16 create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, const Properties &properties, ::llvm::ArrayRef<::mlir::NamedAttribute> discardableAttributes = {}); static wmma_bf16f32_16x16x32_bf16 create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, const Properties &properties, ::llvm::ArrayRef<::mlir::NamedAttribute> discardableAttributes = {}); static void populateDefaultProperties(::mlir::OperationName opName, Properties &properties); ::llvm::LogicalResult verifyInvariantsImpl(); ::llvm::LogicalResult verifyInvariants(); static ::mlir::ParseResult parse(::mlir::OpAsmParser &parser, ::mlir::OperationState &result); void print(::mlir::OpAsmPrinter &_odsPrinter); private: ::mlir::StringAttr getAttributeNameForIndex(unsigned index) { return getAttributeNameForIndex((*this)->getName(), index); } static ::mlir::StringAttr getAttributeNameForIndex(::mlir::OperationName name, unsigned index) { assert(index < 3 && "invalid attribute index"); assert(name.getStringRef() == getOperationName() && "invalid operation name"); assert(name.isRegistered() && "Operation isn't registered, missing a " "dependent dialect loading?"); return name.getAttributeNames()[index]; } public: }; } // namespace mlir::ROCDL MLIR_DECLARE_EXPLICIT_TYPE_ID(::mlir::ROCDL::wmma_bf16f32_16x16x32_bf16) MLIR_DECLARE_EXPLICIT_TYPE_ID(::mlir::ROCDL::detail::wmma_bf16f32_16x16x32_bf16GenericAdaptorBase::Properties) namespace mlir::ROCDL { //===----------------------------------------------------------------------===// // ::mlir::ROCDL::wmma_f16_16x16x128_bf8_bf8 declarations //===----------------------------------------------------------------------===// namespace detail { class wmma_f16_16x16x128_bf8_bf8GenericAdaptorBase { public: struct Properties { using modCTy = ::mlir::ROCDL::WMMACModifierAttr; modCTy modC; auto getModC() const { auto &propStorage = this->modC; return ::llvm::dyn_cast_or_null<::mlir::ROCDL::WMMACModifierAttr>(propStorage); } void setModC(const ::mlir::ROCDL::WMMACModifierAttr &propValue) { this->modC = propValue; } using reuseATy = ::mlir::IntegerAttr; reuseATy reuseA; auto getReuseA() const { auto &propStorage = this->reuseA; return ::llvm::dyn_cast_or_null<::mlir::IntegerAttr>(propStorage); } void setReuseA(const ::mlir::IntegerAttr &propValue) { this->reuseA = propValue; } using reuseBTy = ::mlir::IntegerAttr; reuseBTy reuseB; auto getReuseB() const { auto &propStorage = this->reuseB; return ::llvm::dyn_cast_or_null<::mlir::IntegerAttr>(propStorage); } void setReuseB(const ::mlir::IntegerAttr &propValue) { this->reuseB = propValue; } bool operator==(const Properties &rhs) const { return rhs.modC == this->modC && rhs.reuseA == this->reuseA && rhs.reuseB == this->reuseB && true; } bool operator!=(const Properties &rhs) const { return !(*this == rhs); } }; protected: ::mlir::DictionaryAttr odsAttrs; ::std::optional<::mlir::OperationName> odsOpName; Properties properties; ::mlir::RegionRange odsRegions; public: wmma_f16_16x16x128_bf8_bf8GenericAdaptorBase(::mlir::DictionaryAttr attrs, const Properties &properties, ::mlir::RegionRange regions = {}) : odsAttrs(attrs), properties(properties), odsRegions(regions) { if (odsAttrs) odsOpName.emplace("rocdl.wmma.f16.16x16x128.bf8_bf8", odsAttrs.getContext()); } wmma_f16_16x16x128_bf8_bf8GenericAdaptorBase(wmma_f16_16x16x128_bf8_bf8 op); std::pair getODSOperandIndexAndLength(unsigned index, unsigned odsOperandsSize) { return {index, 1}; } const Properties &getProperties() { return properties; } ::mlir::DictionaryAttr getAttributes() { return odsAttrs; } ::mlir::ROCDL::WMMACModifierAttr getModCAttr(); ::mlir::ROCDL::WMMACModifier getModC(); ::mlir::IntegerAttr getReuseAAttr(); bool getReuseA(); ::mlir::IntegerAttr getReuseBAttr(); bool getReuseB(); }; } // namespace detail template class wmma_f16_16x16x128_bf8_bf8GenericAdaptor : public detail::wmma_f16_16x16x128_bf8_bf8GenericAdaptorBase { using ValueT = ::llvm::detail::ValueOfRange; using Base = detail::wmma_f16_16x16x128_bf8_bf8GenericAdaptorBase; static constexpr int odsIndex_a = 0; static constexpr int odsIndex_b = 1; static constexpr int odsIndex_c = 2; public: wmma_f16_16x16x128_bf8_bf8GenericAdaptor(RangeT values, ::mlir::DictionaryAttr attrs, const Properties &properties, ::mlir::RegionRange regions = {}) : Base(attrs, properties, regions), odsOperands(values) {} wmma_f16_16x16x128_bf8_bf8GenericAdaptor(RangeT values, ::mlir::DictionaryAttr attrs, ::mlir::PropertyRef properties, ::mlir::RegionRange regions = {}) : wmma_f16_16x16x128_bf8_bf8GenericAdaptor(values, attrs, (properties ? *properties.as() : Properties{}), regions) {} wmma_f16_16x16x128_bf8_bf8GenericAdaptor(RangeT values, ::mlir::DictionaryAttr attrs = nullptr) : wmma_f16_16x16x128_bf8_bf8GenericAdaptor(values, attrs, Properties{}, {}) {} wmma_f16_16x16x128_bf8_bf8GenericAdaptor(RangeT values, const wmma_f16_16x16x128_bf8_bf8GenericAdaptorBase &base) : Base(base), odsOperands(values) {} template >> wmma_f16_16x16x128_bf8_bf8GenericAdaptor(RangeT values, LateInst op) : Base(op), odsOperands(values) {} std::pair getODSOperandIndexAndLength(unsigned index) { return Base::getODSOperandIndexAndLength(index, odsOperands.size()); } RangeT getODSOperands(unsigned index) { auto valueRange = getODSOperandIndexAndLength(index); return {std::next(odsOperands.begin(), valueRange.first), std::next(odsOperands.begin(), valueRange.first + valueRange.second)}; } ValueT getA() { return (*getODSOperands(0).begin()); } ValueT getB() { return (*getODSOperands(1).begin()); } ValueT getC() { return (*getODSOperands(2).begin()); } RangeT getOperands() { return odsOperands; } private: RangeT odsOperands; }; class wmma_f16_16x16x128_bf8_bf8Adaptor : public wmma_f16_16x16x128_bf8_bf8GenericAdaptor<::mlir::ValueRange> { public: using wmma_f16_16x16x128_bf8_bf8GenericAdaptor::wmma_f16_16x16x128_bf8_bf8GenericAdaptor; wmma_f16_16x16x128_bf8_bf8Adaptor(wmma_f16_16x16x128_bf8_bf8 op); ::llvm::LogicalResult verify(::mlir::Location loc); }; class wmma_f16_16x16x128_bf8_bf8 : public ::mlir::Op::Impl, ::mlir::OpTrait::ZeroSuccessors, ::mlir::OpTrait::NOperands<3>::Impl, ::mlir::OpTrait::OpInvariants, ::mlir::BytecodeOpInterface::Trait> { public: using Op::Op; using Op::print; using Adaptor = wmma_f16_16x16x128_bf8_bf8Adaptor; template using GenericAdaptor = wmma_f16_16x16x128_bf8_bf8GenericAdaptor; using FoldAdaptor = GenericAdaptor<::llvm::ArrayRef<::mlir::Attribute>>; static constexpr int odsIndex_a = 0; static constexpr int odsIndex_b = 1; static constexpr int odsIndex_c = 2; using Properties = FoldAdaptor::Properties; static ::llvm::ArrayRef<::llvm::StringRef> getAttributeNames() { static ::llvm::StringRef attrNames[] = {::llvm::StringRef("modC"), ::llvm::StringRef("reuseA"), ::llvm::StringRef("reuseB")}; return ::llvm::ArrayRef(attrNames); } ::mlir::StringAttr getModCAttrName() { return getAttributeNameForIndex(0); } static ::mlir::StringAttr getModCAttrName(::mlir::OperationName name) { return getAttributeNameForIndex(name, 0); } ::mlir::StringAttr getReuseAAttrName() { return getAttributeNameForIndex(1); } static ::mlir::StringAttr getReuseAAttrName(::mlir::OperationName name) { return getAttributeNameForIndex(name, 1); } ::mlir::StringAttr getReuseBAttrName() { return getAttributeNameForIndex(2); } static ::mlir::StringAttr getReuseBAttrName(::mlir::OperationName name) { return getAttributeNameForIndex(name, 2); } static constexpr ::llvm::StringLiteral getOperationName() { return ::llvm::StringLiteral("rocdl.wmma.f16.16x16x128.bf8_bf8"); } std::pair getODSOperandIndexAndLength(unsigned index) { return {index, 1}; } ::mlir::Operation::operand_range getODSOperands(unsigned index) { auto valueRange = getODSOperandIndexAndLength(index); return {std::next(getOperation()->operand_begin(), valueRange.first), std::next(getOperation()->operand_begin(), valueRange.first + valueRange.second)}; } ::mlir::TypedValue<::mlir::Type> getA() { return ::llvm::cast<::mlir::TypedValue<::mlir::Type>>(*getODSOperands(0).begin()); } ::mlir::TypedValue<::mlir::Type> getB() { return ::llvm::cast<::mlir::TypedValue<::mlir::Type>>(*getODSOperands(1).begin()); } ::mlir::TypedValue<::mlir::Type> getC() { return ::llvm::cast<::mlir::TypedValue<::mlir::Type>>(*getODSOperands(2).begin()); } ::mlir::OpOperand &getAMutable() { auto range = getODSOperandIndexAndLength(0); return getOperation()->getOpOperand(range.first); } ::mlir::OpOperand &getBMutable() { auto range = getODSOperandIndexAndLength(1); return getOperation()->getOpOperand(range.first); } ::mlir::OpOperand &getCMutable() { auto range = getODSOperandIndexAndLength(2); return getOperation()->getOpOperand(range.first); } std::pair getODSResultIndexAndLength(unsigned index) { return {index, 1}; } ::mlir::Operation::result_range getODSResults(unsigned index) { auto valueRange = getODSResultIndexAndLength(index); return {std::next(getOperation()->result_begin(), valueRange.first), std::next(getOperation()->result_begin(), valueRange.first + valueRange.second)}; } ::mlir::TypedValue<::mlir::Type> getRes() { return ::llvm::cast<::mlir::TypedValue<::mlir::Type>>(*getODSResults(0).begin()); } static ::llvm::LogicalResult setPropertiesFromAttr(Properties &prop, ::mlir::Attribute attr, ::llvm::function_ref<::mlir::InFlightDiagnostic()> emitError); static ::mlir::Attribute getPropertiesAsAttr(::mlir::MLIRContext *ctx, const Properties &prop); static llvm::hash_code computePropertiesHash(const Properties &prop); static std::optional getInherentAttr(::mlir::MLIRContext *ctx, const Properties &prop, llvm::StringRef name); static void setInherentAttr(Properties &prop, llvm::StringRef name, mlir::Attribute value); static void populateInherentAttrs(::mlir::MLIRContext *ctx, const Properties &prop, ::mlir::NamedAttrList &attrs); static ::llvm::LogicalResult verifyInherentAttrs(::mlir::OperationName opName, ::mlir::NamedAttrList &attrs, llvm::function_ref<::mlir::InFlightDiagnostic()> emitError); static ::llvm::LogicalResult readProperties(::mlir::DialectBytecodeReader &reader, ::mlir::OperationState &state); void writeProperties(::mlir::DialectBytecodeWriter &writer); ::mlir::ROCDL::WMMACModifierAttr getModCAttr() { return ::llvm::dyn_cast_or_null<::mlir::ROCDL::WMMACModifierAttr>(getProperties().modC); } ::mlir::ROCDL::WMMACModifier getModC(); ::mlir::IntegerAttr getReuseAAttr() { return ::llvm::dyn_cast_or_null<::mlir::IntegerAttr>(getProperties().reuseA); } bool getReuseA(); ::mlir::IntegerAttr getReuseBAttr() { return ::llvm::dyn_cast_or_null<::mlir::IntegerAttr>(getProperties().reuseB); } bool getReuseB(); void setModCAttr(::mlir::ROCDL::WMMACModifierAttr attr) { getProperties().modC = attr; } void setModC(::mlir::ROCDL::WMMACModifier attrValue); void setReuseAAttr(::mlir::IntegerAttr attr) { getProperties().reuseA = attr; } void setReuseA(bool attrValue); void setReuseBAttr(::mlir::IntegerAttr attr) { getProperties().reuseB = attr; } void setReuseB(bool attrValue); static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::Type res, ::mlir::Value a, ::mlir::Value b, ::mlir::ROCDL::WMMACModifierAttr modC, ::mlir::Value c, ::mlir::IntegerAttr reuseA, ::mlir::IntegerAttr reuseB = nullptr); static wmma_f16_16x16x128_bf8_bf8 create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::Type res, ::mlir::Value a, ::mlir::Value b, ::mlir::ROCDL::WMMACModifierAttr modC, ::mlir::Value c, ::mlir::IntegerAttr reuseA, ::mlir::IntegerAttr reuseB = nullptr); static wmma_f16_16x16x128_bf8_bf8 create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::Type res, ::mlir::Value a, ::mlir::Value b, ::mlir::ROCDL::WMMACModifierAttr modC, ::mlir::Value c, ::mlir::IntegerAttr reuseA, ::mlir::IntegerAttr reuseB = nullptr); static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::Value a, ::mlir::Value b, ::mlir::ROCDL::WMMACModifierAttr modC, ::mlir::Value c, ::mlir::IntegerAttr reuseA, ::mlir::IntegerAttr reuseB = nullptr); static wmma_f16_16x16x128_bf8_bf8 create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::Value a, ::mlir::Value b, ::mlir::ROCDL::WMMACModifierAttr modC, ::mlir::Value c, ::mlir::IntegerAttr reuseA, ::mlir::IntegerAttr reuseB = nullptr); static wmma_f16_16x16x128_bf8_bf8 create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::Value a, ::mlir::Value b, ::mlir::ROCDL::WMMACModifierAttr modC, ::mlir::Value c, ::mlir::IntegerAttr reuseA, ::mlir::IntegerAttr reuseB = nullptr); static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::Type res, ::mlir::Value a, ::mlir::Value b, ::mlir::ROCDL::WMMACModifier modC, ::mlir::Value c, bool reuseA = 0, bool reuseB = 0); static wmma_f16_16x16x128_bf8_bf8 create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::Type res, ::mlir::Value a, ::mlir::Value b, ::mlir::ROCDL::WMMACModifier modC, ::mlir::Value c, bool reuseA = 0, bool reuseB = 0); static wmma_f16_16x16x128_bf8_bf8 create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::Type res, ::mlir::Value a, ::mlir::Value b, ::mlir::ROCDL::WMMACModifier modC, ::mlir::Value c, bool reuseA = 0, bool reuseB = 0); static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::Value a, ::mlir::Value b, ::mlir::ROCDL::WMMACModifier modC, ::mlir::Value c, bool reuseA = 0, bool reuseB = 0); static wmma_f16_16x16x128_bf8_bf8 create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::Value a, ::mlir::Value b, ::mlir::ROCDL::WMMACModifier modC, ::mlir::Value c, bool reuseA = 0, bool reuseB = 0); static wmma_f16_16x16x128_bf8_bf8 create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::Value a, ::mlir::Value b, ::mlir::ROCDL::WMMACModifier modC, ::mlir::Value c, bool reuseA = 0, bool reuseB = 0); static void build(::mlir::OpBuilder &, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, ::llvm::ArrayRef<::mlir::NamedAttribute> attributes = {}); static wmma_f16_16x16x128_bf8_bf8 create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, ::llvm::ArrayRef<::mlir::NamedAttribute> attributes = {}); static wmma_f16_16x16x128_bf8_bf8 create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, ::llvm::ArrayRef<::mlir::NamedAttribute> attributes = {}); static void build(::mlir::OpBuilder &, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, const Properties &properties, ::llvm::ArrayRef<::mlir::NamedAttribute> discardableAttributes = {}); static wmma_f16_16x16x128_bf8_bf8 create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, const Properties &properties, ::llvm::ArrayRef<::mlir::NamedAttribute> discardableAttributes = {}); static wmma_f16_16x16x128_bf8_bf8 create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, const Properties &properties, ::llvm::ArrayRef<::mlir::NamedAttribute> discardableAttributes = {}); static void populateDefaultProperties(::mlir::OperationName opName, Properties &properties); ::llvm::LogicalResult verifyInvariantsImpl(); ::llvm::LogicalResult verifyInvariants(); static ::mlir::ParseResult parse(::mlir::OpAsmParser &parser, ::mlir::OperationState &result); void print(::mlir::OpAsmPrinter &_odsPrinter); private: ::mlir::StringAttr getAttributeNameForIndex(unsigned index) { return getAttributeNameForIndex((*this)->getName(), index); } static ::mlir::StringAttr getAttributeNameForIndex(::mlir::OperationName name, unsigned index) { assert(index < 3 && "invalid attribute index"); assert(name.getStringRef() == getOperationName() && "invalid operation name"); assert(name.isRegistered() && "Operation isn't registered, missing a " "dependent dialect loading?"); return name.getAttributeNames()[index]; } public: }; } // namespace mlir::ROCDL MLIR_DECLARE_EXPLICIT_TYPE_ID(::mlir::ROCDL::wmma_f16_16x16x128_bf8_bf8) MLIR_DECLARE_EXPLICIT_TYPE_ID(::mlir::ROCDL::detail::wmma_f16_16x16x128_bf8_bf8GenericAdaptorBase::Properties) namespace mlir::ROCDL { //===----------------------------------------------------------------------===// // ::mlir::ROCDL::wmma_f16_16x16x128_bf8_fp8 declarations //===----------------------------------------------------------------------===// namespace detail { class wmma_f16_16x16x128_bf8_fp8GenericAdaptorBase { public: struct Properties { using modCTy = ::mlir::ROCDL::WMMACModifierAttr; modCTy modC; auto getModC() const { auto &propStorage = this->modC; return ::llvm::dyn_cast_or_null<::mlir::ROCDL::WMMACModifierAttr>(propStorage); } void setModC(const ::mlir::ROCDL::WMMACModifierAttr &propValue) { this->modC = propValue; } using reuseATy = ::mlir::IntegerAttr; reuseATy reuseA; auto getReuseA() const { auto &propStorage = this->reuseA; return ::llvm::dyn_cast_or_null<::mlir::IntegerAttr>(propStorage); } void setReuseA(const ::mlir::IntegerAttr &propValue) { this->reuseA = propValue; } using reuseBTy = ::mlir::IntegerAttr; reuseBTy reuseB; auto getReuseB() const { auto &propStorage = this->reuseB; return ::llvm::dyn_cast_or_null<::mlir::IntegerAttr>(propStorage); } void setReuseB(const ::mlir::IntegerAttr &propValue) { this->reuseB = propValue; } bool operator==(const Properties &rhs) const { return rhs.modC == this->modC && rhs.reuseA == this->reuseA && rhs.reuseB == this->reuseB && true; } bool operator!=(const Properties &rhs) const { return !(*this == rhs); } }; protected: ::mlir::DictionaryAttr odsAttrs; ::std::optional<::mlir::OperationName> odsOpName; Properties properties; ::mlir::RegionRange odsRegions; public: wmma_f16_16x16x128_bf8_fp8GenericAdaptorBase(::mlir::DictionaryAttr attrs, const Properties &properties, ::mlir::RegionRange regions = {}) : odsAttrs(attrs), properties(properties), odsRegions(regions) { if (odsAttrs) odsOpName.emplace("rocdl.wmma.f16.16x16x128.bf8_fp8", odsAttrs.getContext()); } wmma_f16_16x16x128_bf8_fp8GenericAdaptorBase(wmma_f16_16x16x128_bf8_fp8 op); std::pair getODSOperandIndexAndLength(unsigned index, unsigned odsOperandsSize) { return {index, 1}; } const Properties &getProperties() { return properties; } ::mlir::DictionaryAttr getAttributes() { return odsAttrs; } ::mlir::ROCDL::WMMACModifierAttr getModCAttr(); ::mlir::ROCDL::WMMACModifier getModC(); ::mlir::IntegerAttr getReuseAAttr(); bool getReuseA(); ::mlir::IntegerAttr getReuseBAttr(); bool getReuseB(); }; } // namespace detail template class wmma_f16_16x16x128_bf8_fp8GenericAdaptor : public detail::wmma_f16_16x16x128_bf8_fp8GenericAdaptorBase { using ValueT = ::llvm::detail::ValueOfRange; using Base = detail::wmma_f16_16x16x128_bf8_fp8GenericAdaptorBase; static constexpr int odsIndex_a = 0; static constexpr int odsIndex_b = 1; static constexpr int odsIndex_c = 2; public: wmma_f16_16x16x128_bf8_fp8GenericAdaptor(RangeT values, ::mlir::DictionaryAttr attrs, const Properties &properties, ::mlir::RegionRange regions = {}) : Base(attrs, properties, regions), odsOperands(values) {} wmma_f16_16x16x128_bf8_fp8GenericAdaptor(RangeT values, ::mlir::DictionaryAttr attrs, ::mlir::PropertyRef properties, ::mlir::RegionRange regions = {}) : wmma_f16_16x16x128_bf8_fp8GenericAdaptor(values, attrs, (properties ? *properties.as() : Properties{}), regions) {} wmma_f16_16x16x128_bf8_fp8GenericAdaptor(RangeT values, ::mlir::DictionaryAttr attrs = nullptr) : wmma_f16_16x16x128_bf8_fp8GenericAdaptor(values, attrs, Properties{}, {}) {} wmma_f16_16x16x128_bf8_fp8GenericAdaptor(RangeT values, const wmma_f16_16x16x128_bf8_fp8GenericAdaptorBase &base) : Base(base), odsOperands(values) {} template >> wmma_f16_16x16x128_bf8_fp8GenericAdaptor(RangeT values, LateInst op) : Base(op), odsOperands(values) {} std::pair getODSOperandIndexAndLength(unsigned index) { return Base::getODSOperandIndexAndLength(index, odsOperands.size()); } RangeT getODSOperands(unsigned index) { auto valueRange = getODSOperandIndexAndLength(index); return {std::next(odsOperands.begin(), valueRange.first), std::next(odsOperands.begin(), valueRange.first + valueRange.second)}; } ValueT getA() { return (*getODSOperands(0).begin()); } ValueT getB() { return (*getODSOperands(1).begin()); } ValueT getC() { return (*getODSOperands(2).begin()); } RangeT getOperands() { return odsOperands; } private: RangeT odsOperands; }; class wmma_f16_16x16x128_bf8_fp8Adaptor : public wmma_f16_16x16x128_bf8_fp8GenericAdaptor<::mlir::ValueRange> { public: using wmma_f16_16x16x128_bf8_fp8GenericAdaptor::wmma_f16_16x16x128_bf8_fp8GenericAdaptor; wmma_f16_16x16x128_bf8_fp8Adaptor(wmma_f16_16x16x128_bf8_fp8 op); ::llvm::LogicalResult verify(::mlir::Location loc); }; class wmma_f16_16x16x128_bf8_fp8 : public ::mlir::Op::Impl, ::mlir::OpTrait::ZeroSuccessors, ::mlir::OpTrait::NOperands<3>::Impl, ::mlir::OpTrait::OpInvariants, ::mlir::BytecodeOpInterface::Trait> { public: using Op::Op; using Op::print; using Adaptor = wmma_f16_16x16x128_bf8_fp8Adaptor; template using GenericAdaptor = wmma_f16_16x16x128_bf8_fp8GenericAdaptor; using FoldAdaptor = GenericAdaptor<::llvm::ArrayRef<::mlir::Attribute>>; static constexpr int odsIndex_a = 0; static constexpr int odsIndex_b = 1; static constexpr int odsIndex_c = 2; using Properties = FoldAdaptor::Properties; static ::llvm::ArrayRef<::llvm::StringRef> getAttributeNames() { static ::llvm::StringRef attrNames[] = {::llvm::StringRef("modC"), ::llvm::StringRef("reuseA"), ::llvm::StringRef("reuseB")}; return ::llvm::ArrayRef(attrNames); } ::mlir::StringAttr getModCAttrName() { return getAttributeNameForIndex(0); } static ::mlir::StringAttr getModCAttrName(::mlir::OperationName name) { return getAttributeNameForIndex(name, 0); } ::mlir::StringAttr getReuseAAttrName() { return getAttributeNameForIndex(1); } static ::mlir::StringAttr getReuseAAttrName(::mlir::OperationName name) { return getAttributeNameForIndex(name, 1); } ::mlir::StringAttr getReuseBAttrName() { return getAttributeNameForIndex(2); } static ::mlir::StringAttr getReuseBAttrName(::mlir::OperationName name) { return getAttributeNameForIndex(name, 2); } static constexpr ::llvm::StringLiteral getOperationName() { return ::llvm::StringLiteral("rocdl.wmma.f16.16x16x128.bf8_fp8"); } std::pair getODSOperandIndexAndLength(unsigned index) { return {index, 1}; } ::mlir::Operation::operand_range getODSOperands(unsigned index) { auto valueRange = getODSOperandIndexAndLength(index); return {std::next(getOperation()->operand_begin(), valueRange.first), std::next(getOperation()->operand_begin(), valueRange.first + valueRange.second)}; } ::mlir::TypedValue<::mlir::Type> getA() { return ::llvm::cast<::mlir::TypedValue<::mlir::Type>>(*getODSOperands(0).begin()); } ::mlir::TypedValue<::mlir::Type> getB() { return ::llvm::cast<::mlir::TypedValue<::mlir::Type>>(*getODSOperands(1).begin()); } ::mlir::TypedValue<::mlir::Type> getC() { return ::llvm::cast<::mlir::TypedValue<::mlir::Type>>(*getODSOperands(2).begin()); } ::mlir::OpOperand &getAMutable() { auto range = getODSOperandIndexAndLength(0); return getOperation()->getOpOperand(range.first); } ::mlir::OpOperand &getBMutable() { auto range = getODSOperandIndexAndLength(1); return getOperation()->getOpOperand(range.first); } ::mlir::OpOperand &getCMutable() { auto range = getODSOperandIndexAndLength(2); return getOperation()->getOpOperand(range.first); } std::pair getODSResultIndexAndLength(unsigned index) { return {index, 1}; } ::mlir::Operation::result_range getODSResults(unsigned index) { auto valueRange = getODSResultIndexAndLength(index); return {std::next(getOperation()->result_begin(), valueRange.first), std::next(getOperation()->result_begin(), valueRange.first + valueRange.second)}; } ::mlir::TypedValue<::mlir::Type> getRes() { return ::llvm::cast<::mlir::TypedValue<::mlir::Type>>(*getODSResults(0).begin()); } static ::llvm::LogicalResult setPropertiesFromAttr(Properties &prop, ::mlir::Attribute attr, ::llvm::function_ref<::mlir::InFlightDiagnostic()> emitError); static ::mlir::Attribute getPropertiesAsAttr(::mlir::MLIRContext *ctx, const Properties &prop); static llvm::hash_code computePropertiesHash(const Properties &prop); static std::optional getInherentAttr(::mlir::MLIRContext *ctx, const Properties &prop, llvm::StringRef name); static void setInherentAttr(Properties &prop, llvm::StringRef name, mlir::Attribute value); static void populateInherentAttrs(::mlir::MLIRContext *ctx, const Properties &prop, ::mlir::NamedAttrList &attrs); static ::llvm::LogicalResult verifyInherentAttrs(::mlir::OperationName opName, ::mlir::NamedAttrList &attrs, llvm::function_ref<::mlir::InFlightDiagnostic()> emitError); static ::llvm::LogicalResult readProperties(::mlir::DialectBytecodeReader &reader, ::mlir::OperationState &state); void writeProperties(::mlir::DialectBytecodeWriter &writer); ::mlir::ROCDL::WMMACModifierAttr getModCAttr() { return ::llvm::dyn_cast_or_null<::mlir::ROCDL::WMMACModifierAttr>(getProperties().modC); } ::mlir::ROCDL::WMMACModifier getModC(); ::mlir::IntegerAttr getReuseAAttr() { return ::llvm::dyn_cast_or_null<::mlir::IntegerAttr>(getProperties().reuseA); } bool getReuseA(); ::mlir::IntegerAttr getReuseBAttr() { return ::llvm::dyn_cast_or_null<::mlir::IntegerAttr>(getProperties().reuseB); } bool getReuseB(); void setModCAttr(::mlir::ROCDL::WMMACModifierAttr attr) { getProperties().modC = attr; } void setModC(::mlir::ROCDL::WMMACModifier attrValue); void setReuseAAttr(::mlir::IntegerAttr attr) { getProperties().reuseA = attr; } void setReuseA(bool attrValue); void setReuseBAttr(::mlir::IntegerAttr attr) { getProperties().reuseB = attr; } void setReuseB(bool attrValue); static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::Type res, ::mlir::Value a, ::mlir::Value b, ::mlir::ROCDL::WMMACModifierAttr modC, ::mlir::Value c, ::mlir::IntegerAttr reuseA, ::mlir::IntegerAttr reuseB = nullptr); static wmma_f16_16x16x128_bf8_fp8 create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::Type res, ::mlir::Value a, ::mlir::Value b, ::mlir::ROCDL::WMMACModifierAttr modC, ::mlir::Value c, ::mlir::IntegerAttr reuseA, ::mlir::IntegerAttr reuseB = nullptr); static wmma_f16_16x16x128_bf8_fp8 create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::Type res, ::mlir::Value a, ::mlir::Value b, ::mlir::ROCDL::WMMACModifierAttr modC, ::mlir::Value c, ::mlir::IntegerAttr reuseA, ::mlir::IntegerAttr reuseB = nullptr); static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::Value a, ::mlir::Value b, ::mlir::ROCDL::WMMACModifierAttr modC, ::mlir::Value c, ::mlir::IntegerAttr reuseA, ::mlir::IntegerAttr reuseB = nullptr); static wmma_f16_16x16x128_bf8_fp8 create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::Value a, ::mlir::Value b, ::mlir::ROCDL::WMMACModifierAttr modC, ::mlir::Value c, ::mlir::IntegerAttr reuseA, ::mlir::IntegerAttr reuseB = nullptr); static wmma_f16_16x16x128_bf8_fp8 create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::Value a, ::mlir::Value b, ::mlir::ROCDL::WMMACModifierAttr modC, ::mlir::Value c, ::mlir::IntegerAttr reuseA, ::mlir::IntegerAttr reuseB = nullptr); static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::Type res, ::mlir::Value a, ::mlir::Value b, ::mlir::ROCDL::WMMACModifier modC, ::mlir::Value c, bool reuseA = 0, bool reuseB = 0); static wmma_f16_16x16x128_bf8_fp8 create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::Type res, ::mlir::Value a, ::mlir::Value b, ::mlir::ROCDL::WMMACModifier modC, ::mlir::Value c, bool reuseA = 0, bool reuseB = 0); static wmma_f16_16x16x128_bf8_fp8 create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::Type res, ::mlir::Value a, ::mlir::Value b, ::mlir::ROCDL::WMMACModifier modC, ::mlir::Value c, bool reuseA = 0, bool reuseB = 0); static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::Value a, ::mlir::Value b, ::mlir::ROCDL::WMMACModifier modC, ::mlir::Value c, bool reuseA = 0, bool reuseB = 0); static wmma_f16_16x16x128_bf8_fp8 create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::Value a, ::mlir::Value b, ::mlir::ROCDL::WMMACModifier modC, ::mlir::Value c, bool reuseA = 0, bool reuseB = 0); static wmma_f16_16x16x128_bf8_fp8 create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::Value a, ::mlir::Value b, ::mlir::ROCDL::WMMACModifier modC, ::mlir::Value c, bool reuseA = 0, bool reuseB = 0); static void build(::mlir::OpBuilder &, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, ::llvm::ArrayRef<::mlir::NamedAttribute> attributes = {}); static wmma_f16_16x16x128_bf8_fp8 create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, ::llvm::ArrayRef<::mlir::NamedAttribute> attributes = {}); static wmma_f16_16x16x128_bf8_fp8 create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, ::llvm::ArrayRef<::mlir::NamedAttribute> attributes = {}); static void build(::mlir::OpBuilder &, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, const Properties &properties, ::llvm::ArrayRef<::mlir::NamedAttribute> discardableAttributes = {}); static wmma_f16_16x16x128_bf8_fp8 create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, const Properties &properties, ::llvm::ArrayRef<::mlir::NamedAttribute> discardableAttributes = {}); static wmma_f16_16x16x128_bf8_fp8 create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, const Properties &properties, ::llvm::ArrayRef<::mlir::NamedAttribute> discardableAttributes = {}); static void populateDefaultProperties(::mlir::OperationName opName, Properties &properties); ::llvm::LogicalResult verifyInvariantsImpl(); ::llvm::LogicalResult verifyInvariants(); static ::mlir::ParseResult parse(::mlir::OpAsmParser &parser, ::mlir::OperationState &result); void print(::mlir::OpAsmPrinter &_odsPrinter); private: ::mlir::StringAttr getAttributeNameForIndex(unsigned index) { return getAttributeNameForIndex((*this)->getName(), index); } static ::mlir::StringAttr getAttributeNameForIndex(::mlir::OperationName name, unsigned index) { assert(index < 3 && "invalid attribute index"); assert(name.getStringRef() == getOperationName() && "invalid operation name"); assert(name.isRegistered() && "Operation isn't registered, missing a " "dependent dialect loading?"); return name.getAttributeNames()[index]; } public: }; } // namespace mlir::ROCDL MLIR_DECLARE_EXPLICIT_TYPE_ID(::mlir::ROCDL::wmma_f16_16x16x128_bf8_fp8) MLIR_DECLARE_EXPLICIT_TYPE_ID(::mlir::ROCDL::detail::wmma_f16_16x16x128_bf8_fp8GenericAdaptorBase::Properties) namespace mlir::ROCDL { //===----------------------------------------------------------------------===// // ::mlir::ROCDL::wmma_f16_16x16x128_fp8_bf8 declarations //===----------------------------------------------------------------------===// namespace detail { class wmma_f16_16x16x128_fp8_bf8GenericAdaptorBase { public: struct Properties { using modCTy = ::mlir::ROCDL::WMMACModifierAttr; modCTy modC; auto getModC() const { auto &propStorage = this->modC; return ::llvm::dyn_cast_or_null<::mlir::ROCDL::WMMACModifierAttr>(propStorage); } void setModC(const ::mlir::ROCDL::WMMACModifierAttr &propValue) { this->modC = propValue; } using reuseATy = ::mlir::IntegerAttr; reuseATy reuseA; auto getReuseA() const { auto &propStorage = this->reuseA; return ::llvm::dyn_cast_or_null<::mlir::IntegerAttr>(propStorage); } void setReuseA(const ::mlir::IntegerAttr &propValue) { this->reuseA = propValue; } using reuseBTy = ::mlir::IntegerAttr; reuseBTy reuseB; auto getReuseB() const { auto &propStorage = this->reuseB; return ::llvm::dyn_cast_or_null<::mlir::IntegerAttr>(propStorage); } void setReuseB(const ::mlir::IntegerAttr &propValue) { this->reuseB = propValue; } bool operator==(const Properties &rhs) const { return rhs.modC == this->modC && rhs.reuseA == this->reuseA && rhs.reuseB == this->reuseB && true; } bool operator!=(const Properties &rhs) const { return !(*this == rhs); } }; protected: ::mlir::DictionaryAttr odsAttrs; ::std::optional<::mlir::OperationName> odsOpName; Properties properties; ::mlir::RegionRange odsRegions; public: wmma_f16_16x16x128_fp8_bf8GenericAdaptorBase(::mlir::DictionaryAttr attrs, const Properties &properties, ::mlir::RegionRange regions = {}) : odsAttrs(attrs), properties(properties), odsRegions(regions) { if (odsAttrs) odsOpName.emplace("rocdl.wmma.f16.16x16x128.fp8_bf8", odsAttrs.getContext()); } wmma_f16_16x16x128_fp8_bf8GenericAdaptorBase(wmma_f16_16x16x128_fp8_bf8 op); std::pair getODSOperandIndexAndLength(unsigned index, unsigned odsOperandsSize) { return {index, 1}; } const Properties &getProperties() { return properties; } ::mlir::DictionaryAttr getAttributes() { return odsAttrs; } ::mlir::ROCDL::WMMACModifierAttr getModCAttr(); ::mlir::ROCDL::WMMACModifier getModC(); ::mlir::IntegerAttr getReuseAAttr(); bool getReuseA(); ::mlir::IntegerAttr getReuseBAttr(); bool getReuseB(); }; } // namespace detail template class wmma_f16_16x16x128_fp8_bf8GenericAdaptor : public detail::wmma_f16_16x16x128_fp8_bf8GenericAdaptorBase { using ValueT = ::llvm::detail::ValueOfRange; using Base = detail::wmma_f16_16x16x128_fp8_bf8GenericAdaptorBase; static constexpr int odsIndex_a = 0; static constexpr int odsIndex_b = 1; static constexpr int odsIndex_c = 2; public: wmma_f16_16x16x128_fp8_bf8GenericAdaptor(RangeT values, ::mlir::DictionaryAttr attrs, const Properties &properties, ::mlir::RegionRange regions = {}) : Base(attrs, properties, regions), odsOperands(values) {} wmma_f16_16x16x128_fp8_bf8GenericAdaptor(RangeT values, ::mlir::DictionaryAttr attrs, ::mlir::PropertyRef properties, ::mlir::RegionRange regions = {}) : wmma_f16_16x16x128_fp8_bf8GenericAdaptor(values, attrs, (properties ? *properties.as() : Properties{}), regions) {} wmma_f16_16x16x128_fp8_bf8GenericAdaptor(RangeT values, ::mlir::DictionaryAttr attrs = nullptr) : wmma_f16_16x16x128_fp8_bf8GenericAdaptor(values, attrs, Properties{}, {}) {} wmma_f16_16x16x128_fp8_bf8GenericAdaptor(RangeT values, const wmma_f16_16x16x128_fp8_bf8GenericAdaptorBase &base) : Base(base), odsOperands(values) {} template >> wmma_f16_16x16x128_fp8_bf8GenericAdaptor(RangeT values, LateInst op) : Base(op), odsOperands(values) {} std::pair getODSOperandIndexAndLength(unsigned index) { return Base::getODSOperandIndexAndLength(index, odsOperands.size()); } RangeT getODSOperands(unsigned index) { auto valueRange = getODSOperandIndexAndLength(index); return {std::next(odsOperands.begin(), valueRange.first), std::next(odsOperands.begin(), valueRange.first + valueRange.second)}; } ValueT getA() { return (*getODSOperands(0).begin()); } ValueT getB() { return (*getODSOperands(1).begin()); } ValueT getC() { return (*getODSOperands(2).begin()); } RangeT getOperands() { return odsOperands; } private: RangeT odsOperands; }; class wmma_f16_16x16x128_fp8_bf8Adaptor : public wmma_f16_16x16x128_fp8_bf8GenericAdaptor<::mlir::ValueRange> { public: using wmma_f16_16x16x128_fp8_bf8GenericAdaptor::wmma_f16_16x16x128_fp8_bf8GenericAdaptor; wmma_f16_16x16x128_fp8_bf8Adaptor(wmma_f16_16x16x128_fp8_bf8 op); ::llvm::LogicalResult verify(::mlir::Location loc); }; class wmma_f16_16x16x128_fp8_bf8 : public ::mlir::Op::Impl, ::mlir::OpTrait::ZeroSuccessors, ::mlir::OpTrait::NOperands<3>::Impl, ::mlir::OpTrait::OpInvariants, ::mlir::BytecodeOpInterface::Trait> { public: using Op::Op; using Op::print; using Adaptor = wmma_f16_16x16x128_fp8_bf8Adaptor; template using GenericAdaptor = wmma_f16_16x16x128_fp8_bf8GenericAdaptor; using FoldAdaptor = GenericAdaptor<::llvm::ArrayRef<::mlir::Attribute>>; static constexpr int odsIndex_a = 0; static constexpr int odsIndex_b = 1; static constexpr int odsIndex_c = 2; using Properties = FoldAdaptor::Properties; static ::llvm::ArrayRef<::llvm::StringRef> getAttributeNames() { static ::llvm::StringRef attrNames[] = {::llvm::StringRef("modC"), ::llvm::StringRef("reuseA"), ::llvm::StringRef("reuseB")}; return ::llvm::ArrayRef(attrNames); } ::mlir::StringAttr getModCAttrName() { return getAttributeNameForIndex(0); } static ::mlir::StringAttr getModCAttrName(::mlir::OperationName name) { return getAttributeNameForIndex(name, 0); } ::mlir::StringAttr getReuseAAttrName() { return getAttributeNameForIndex(1); } static ::mlir::StringAttr getReuseAAttrName(::mlir::OperationName name) { return getAttributeNameForIndex(name, 1); } ::mlir::StringAttr getReuseBAttrName() { return getAttributeNameForIndex(2); } static ::mlir::StringAttr getReuseBAttrName(::mlir::OperationName name) { return getAttributeNameForIndex(name, 2); } static constexpr ::llvm::StringLiteral getOperationName() { return ::llvm::StringLiteral("rocdl.wmma.f16.16x16x128.fp8_bf8"); } std::pair getODSOperandIndexAndLength(unsigned index) { return {index, 1}; } ::mlir::Operation::operand_range getODSOperands(unsigned index) { auto valueRange = getODSOperandIndexAndLength(index); return {std::next(getOperation()->operand_begin(), valueRange.first), std::next(getOperation()->operand_begin(), valueRange.first + valueRange.second)}; } ::mlir::TypedValue<::mlir::Type> getA() { return ::llvm::cast<::mlir::TypedValue<::mlir::Type>>(*getODSOperands(0).begin()); } ::mlir::TypedValue<::mlir::Type> getB() { return ::llvm::cast<::mlir::TypedValue<::mlir::Type>>(*getODSOperands(1).begin()); } ::mlir::TypedValue<::mlir::Type> getC() { return ::llvm::cast<::mlir::TypedValue<::mlir::Type>>(*getODSOperands(2).begin()); } ::mlir::OpOperand &getAMutable() { auto range = getODSOperandIndexAndLength(0); return getOperation()->getOpOperand(range.first); } ::mlir::OpOperand &getBMutable() { auto range = getODSOperandIndexAndLength(1); return getOperation()->getOpOperand(range.first); } ::mlir::OpOperand &getCMutable() { auto range = getODSOperandIndexAndLength(2); return getOperation()->getOpOperand(range.first); } std::pair getODSResultIndexAndLength(unsigned index) { return {index, 1}; } ::mlir::Operation::result_range getODSResults(unsigned index) { auto valueRange = getODSResultIndexAndLength(index); return {std::next(getOperation()->result_begin(), valueRange.first), std::next(getOperation()->result_begin(), valueRange.first + valueRange.second)}; } ::mlir::TypedValue<::mlir::Type> getRes() { return ::llvm::cast<::mlir::TypedValue<::mlir::Type>>(*getODSResults(0).begin()); } static ::llvm::LogicalResult setPropertiesFromAttr(Properties &prop, ::mlir::Attribute attr, ::llvm::function_ref<::mlir::InFlightDiagnostic()> emitError); static ::mlir::Attribute getPropertiesAsAttr(::mlir::MLIRContext *ctx, const Properties &prop); static llvm::hash_code computePropertiesHash(const Properties &prop); static std::optional getInherentAttr(::mlir::MLIRContext *ctx, const Properties &prop, llvm::StringRef name); static void setInherentAttr(Properties &prop, llvm::StringRef name, mlir::Attribute value); static void populateInherentAttrs(::mlir::MLIRContext *ctx, const Properties &prop, ::mlir::NamedAttrList &attrs); static ::llvm::LogicalResult verifyInherentAttrs(::mlir::OperationName opName, ::mlir::NamedAttrList &attrs, llvm::function_ref<::mlir::InFlightDiagnostic()> emitError); static ::llvm::LogicalResult readProperties(::mlir::DialectBytecodeReader &reader, ::mlir::OperationState &state); void writeProperties(::mlir::DialectBytecodeWriter &writer); ::mlir::ROCDL::WMMACModifierAttr getModCAttr() { return ::llvm::dyn_cast_or_null<::mlir::ROCDL::WMMACModifierAttr>(getProperties().modC); } ::mlir::ROCDL::WMMACModifier getModC(); ::mlir::IntegerAttr getReuseAAttr() { return ::llvm::dyn_cast_or_null<::mlir::IntegerAttr>(getProperties().reuseA); } bool getReuseA(); ::mlir::IntegerAttr getReuseBAttr() { return ::llvm::dyn_cast_or_null<::mlir::IntegerAttr>(getProperties().reuseB); } bool getReuseB(); void setModCAttr(::mlir::ROCDL::WMMACModifierAttr attr) { getProperties().modC = attr; } void setModC(::mlir::ROCDL::WMMACModifier attrValue); void setReuseAAttr(::mlir::IntegerAttr attr) { getProperties().reuseA = attr; } void setReuseA(bool attrValue); void setReuseBAttr(::mlir::IntegerAttr attr) { getProperties().reuseB = attr; } void setReuseB(bool attrValue); static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::Type res, ::mlir::Value a, ::mlir::Value b, ::mlir::ROCDL::WMMACModifierAttr modC, ::mlir::Value c, ::mlir::IntegerAttr reuseA, ::mlir::IntegerAttr reuseB = nullptr); static wmma_f16_16x16x128_fp8_bf8 create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::Type res, ::mlir::Value a, ::mlir::Value b, ::mlir::ROCDL::WMMACModifierAttr modC, ::mlir::Value c, ::mlir::IntegerAttr reuseA, ::mlir::IntegerAttr reuseB = nullptr); static wmma_f16_16x16x128_fp8_bf8 create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::Type res, ::mlir::Value a, ::mlir::Value b, ::mlir::ROCDL::WMMACModifierAttr modC, ::mlir::Value c, ::mlir::IntegerAttr reuseA, ::mlir::IntegerAttr reuseB = nullptr); static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::Value a, ::mlir::Value b, ::mlir::ROCDL::WMMACModifierAttr modC, ::mlir::Value c, ::mlir::IntegerAttr reuseA, ::mlir::IntegerAttr reuseB = nullptr); static wmma_f16_16x16x128_fp8_bf8 create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::Value a, ::mlir::Value b, ::mlir::ROCDL::WMMACModifierAttr modC, ::mlir::Value c, ::mlir::IntegerAttr reuseA, ::mlir::IntegerAttr reuseB = nullptr); static wmma_f16_16x16x128_fp8_bf8 create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::Value a, ::mlir::Value b, ::mlir::ROCDL::WMMACModifierAttr modC, ::mlir::Value c, ::mlir::IntegerAttr reuseA, ::mlir::IntegerAttr reuseB = nullptr); static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::Type res, ::mlir::Value a, ::mlir::Value b, ::mlir::ROCDL::WMMACModifier modC, ::mlir::Value c, bool reuseA = 0, bool reuseB = 0); static wmma_f16_16x16x128_fp8_bf8 create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::Type res, ::mlir::Value a, ::mlir::Value b, ::mlir::ROCDL::WMMACModifier modC, ::mlir::Value c, bool reuseA = 0, bool reuseB = 0); static wmma_f16_16x16x128_fp8_bf8 create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::Type res, ::mlir::Value a, ::mlir::Value b, ::mlir::ROCDL::WMMACModifier modC, ::mlir::Value c, bool reuseA = 0, bool reuseB = 0); static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::Value a, ::mlir::Value b, ::mlir::ROCDL::WMMACModifier modC, ::mlir::Value c, bool reuseA = 0, bool reuseB = 0); static wmma_f16_16x16x128_fp8_bf8 create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::Value a, ::mlir::Value b, ::mlir::ROCDL::WMMACModifier modC, ::mlir::Value c, bool reuseA = 0, bool reuseB = 0); static wmma_f16_16x16x128_fp8_bf8 create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::Value a, ::mlir::Value b, ::mlir::ROCDL::WMMACModifier modC, ::mlir::Value c, bool reuseA = 0, bool reuseB = 0); static void build(::mlir::OpBuilder &, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, ::llvm::ArrayRef<::mlir::NamedAttribute> attributes = {}); static wmma_f16_16x16x128_fp8_bf8 create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, ::llvm::ArrayRef<::mlir::NamedAttribute> attributes = {}); static wmma_f16_16x16x128_fp8_bf8 create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, ::llvm::ArrayRef<::mlir::NamedAttribute> attributes = {}); static void build(::mlir::OpBuilder &, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, const Properties &properties, ::llvm::ArrayRef<::mlir::NamedAttribute> discardableAttributes = {}); static wmma_f16_16x16x128_fp8_bf8 create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, const Properties &properties, ::llvm::ArrayRef<::mlir::NamedAttribute> discardableAttributes = {}); static wmma_f16_16x16x128_fp8_bf8 create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, const Properties &properties, ::llvm::ArrayRef<::mlir::NamedAttribute> discardableAttributes = {}); static void populateDefaultProperties(::mlir::OperationName opName, Properties &properties); ::llvm::LogicalResult verifyInvariantsImpl(); ::llvm::LogicalResult verifyInvariants(); static ::mlir::ParseResult parse(::mlir::OpAsmParser &parser, ::mlir::OperationState &result); void print(::mlir::OpAsmPrinter &_odsPrinter); private: ::mlir::StringAttr getAttributeNameForIndex(unsigned index) { return getAttributeNameForIndex((*this)->getName(), index); } static ::mlir::StringAttr getAttributeNameForIndex(::mlir::OperationName name, unsigned index) { assert(index < 3 && "invalid attribute index"); assert(name.getStringRef() == getOperationName() && "invalid operation name"); assert(name.isRegistered() && "Operation isn't registered, missing a " "dependent dialect loading?"); return name.getAttributeNames()[index]; } public: }; } // namespace mlir::ROCDL MLIR_DECLARE_EXPLICIT_TYPE_ID(::mlir::ROCDL::wmma_f16_16x16x128_fp8_bf8) MLIR_DECLARE_EXPLICIT_TYPE_ID(::mlir::ROCDL::detail::wmma_f16_16x16x128_fp8_bf8GenericAdaptorBase::Properties) namespace mlir::ROCDL { //===----------------------------------------------------------------------===// // ::mlir::ROCDL::wmma_f16_16x16x128_fp8_fp8 declarations //===----------------------------------------------------------------------===// namespace detail { class wmma_f16_16x16x128_fp8_fp8GenericAdaptorBase { public: struct Properties { using modCTy = ::mlir::ROCDL::WMMACModifierAttr; modCTy modC; auto getModC() const { auto &propStorage = this->modC; return ::llvm::dyn_cast_or_null<::mlir::ROCDL::WMMACModifierAttr>(propStorage); } void setModC(const ::mlir::ROCDL::WMMACModifierAttr &propValue) { this->modC = propValue; } using reuseATy = ::mlir::IntegerAttr; reuseATy reuseA; auto getReuseA() const { auto &propStorage = this->reuseA; return ::llvm::dyn_cast_or_null<::mlir::IntegerAttr>(propStorage); } void setReuseA(const ::mlir::IntegerAttr &propValue) { this->reuseA = propValue; } using reuseBTy = ::mlir::IntegerAttr; reuseBTy reuseB; auto getReuseB() const { auto &propStorage = this->reuseB; return ::llvm::dyn_cast_or_null<::mlir::IntegerAttr>(propStorage); } void setReuseB(const ::mlir::IntegerAttr &propValue) { this->reuseB = propValue; } bool operator==(const Properties &rhs) const { return rhs.modC == this->modC && rhs.reuseA == this->reuseA && rhs.reuseB == this->reuseB && true; } bool operator!=(const Properties &rhs) const { return !(*this == rhs); } }; protected: ::mlir::DictionaryAttr odsAttrs; ::std::optional<::mlir::OperationName> odsOpName; Properties properties; ::mlir::RegionRange odsRegions; public: wmma_f16_16x16x128_fp8_fp8GenericAdaptorBase(::mlir::DictionaryAttr attrs, const Properties &properties, ::mlir::RegionRange regions = {}) : odsAttrs(attrs), properties(properties), odsRegions(regions) { if (odsAttrs) odsOpName.emplace("rocdl.wmma.f16.16x16x128.fp8_fp8", odsAttrs.getContext()); } wmma_f16_16x16x128_fp8_fp8GenericAdaptorBase(wmma_f16_16x16x128_fp8_fp8 op); std::pair getODSOperandIndexAndLength(unsigned index, unsigned odsOperandsSize) { return {index, 1}; } const Properties &getProperties() { return properties; } ::mlir::DictionaryAttr getAttributes() { return odsAttrs; } ::mlir::ROCDL::WMMACModifierAttr getModCAttr(); ::mlir::ROCDL::WMMACModifier getModC(); ::mlir::IntegerAttr getReuseAAttr(); bool getReuseA(); ::mlir::IntegerAttr getReuseBAttr(); bool getReuseB(); }; } // namespace detail template class wmma_f16_16x16x128_fp8_fp8GenericAdaptor : public detail::wmma_f16_16x16x128_fp8_fp8GenericAdaptorBase { using ValueT = ::llvm::detail::ValueOfRange; using Base = detail::wmma_f16_16x16x128_fp8_fp8GenericAdaptorBase; static constexpr int odsIndex_a = 0; static constexpr int odsIndex_b = 1; static constexpr int odsIndex_c = 2; public: wmma_f16_16x16x128_fp8_fp8GenericAdaptor(RangeT values, ::mlir::DictionaryAttr attrs, const Properties &properties, ::mlir::RegionRange regions = {}) : Base(attrs, properties, regions), odsOperands(values) {} wmma_f16_16x16x128_fp8_fp8GenericAdaptor(RangeT values, ::mlir::DictionaryAttr attrs, ::mlir::PropertyRef properties, ::mlir::RegionRange regions = {}) : wmma_f16_16x16x128_fp8_fp8GenericAdaptor(values, attrs, (properties ? *properties.as() : Properties{}), regions) {} wmma_f16_16x16x128_fp8_fp8GenericAdaptor(RangeT values, ::mlir::DictionaryAttr attrs = nullptr) : wmma_f16_16x16x128_fp8_fp8GenericAdaptor(values, attrs, Properties{}, {}) {} wmma_f16_16x16x128_fp8_fp8GenericAdaptor(RangeT values, const wmma_f16_16x16x128_fp8_fp8GenericAdaptorBase &base) : Base(base), odsOperands(values) {} template >> wmma_f16_16x16x128_fp8_fp8GenericAdaptor(RangeT values, LateInst op) : Base(op), odsOperands(values) {} std::pair getODSOperandIndexAndLength(unsigned index) { return Base::getODSOperandIndexAndLength(index, odsOperands.size()); } RangeT getODSOperands(unsigned index) { auto valueRange = getODSOperandIndexAndLength(index); return {std::next(odsOperands.begin(), valueRange.first), std::next(odsOperands.begin(), valueRange.first + valueRange.second)}; } ValueT getA() { return (*getODSOperands(0).begin()); } ValueT getB() { return (*getODSOperands(1).begin()); } ValueT getC() { return (*getODSOperands(2).begin()); } RangeT getOperands() { return odsOperands; } private: RangeT odsOperands; }; class wmma_f16_16x16x128_fp8_fp8Adaptor : public wmma_f16_16x16x128_fp8_fp8GenericAdaptor<::mlir::ValueRange> { public: using wmma_f16_16x16x128_fp8_fp8GenericAdaptor::wmma_f16_16x16x128_fp8_fp8GenericAdaptor; wmma_f16_16x16x128_fp8_fp8Adaptor(wmma_f16_16x16x128_fp8_fp8 op); ::llvm::LogicalResult verify(::mlir::Location loc); }; class wmma_f16_16x16x128_fp8_fp8 : public ::mlir::Op::Impl, ::mlir::OpTrait::ZeroSuccessors, ::mlir::OpTrait::NOperands<3>::Impl, ::mlir::OpTrait::OpInvariants, ::mlir::BytecodeOpInterface::Trait> { public: using Op::Op; using Op::print; using Adaptor = wmma_f16_16x16x128_fp8_fp8Adaptor; template using GenericAdaptor = wmma_f16_16x16x128_fp8_fp8GenericAdaptor; using FoldAdaptor = GenericAdaptor<::llvm::ArrayRef<::mlir::Attribute>>; static constexpr int odsIndex_a = 0; static constexpr int odsIndex_b = 1; static constexpr int odsIndex_c = 2; using Properties = FoldAdaptor::Properties; static ::llvm::ArrayRef<::llvm::StringRef> getAttributeNames() { static ::llvm::StringRef attrNames[] = {::llvm::StringRef("modC"), ::llvm::StringRef("reuseA"), ::llvm::StringRef("reuseB")}; return ::llvm::ArrayRef(attrNames); } ::mlir::StringAttr getModCAttrName() { return getAttributeNameForIndex(0); } static ::mlir::StringAttr getModCAttrName(::mlir::OperationName name) { return getAttributeNameForIndex(name, 0); } ::mlir::StringAttr getReuseAAttrName() { return getAttributeNameForIndex(1); } static ::mlir::StringAttr getReuseAAttrName(::mlir::OperationName name) { return getAttributeNameForIndex(name, 1); } ::mlir::StringAttr getReuseBAttrName() { return getAttributeNameForIndex(2); } static ::mlir::StringAttr getReuseBAttrName(::mlir::OperationName name) { return getAttributeNameForIndex(name, 2); } static constexpr ::llvm::StringLiteral getOperationName() { return ::llvm::StringLiteral("rocdl.wmma.f16.16x16x128.fp8_fp8"); } std::pair getODSOperandIndexAndLength(unsigned index) { return {index, 1}; } ::mlir::Operation::operand_range getODSOperands(unsigned index) { auto valueRange = getODSOperandIndexAndLength(index); return {std::next(getOperation()->operand_begin(), valueRange.first), std::next(getOperation()->operand_begin(), valueRange.first + valueRange.second)}; } ::mlir::TypedValue<::mlir::Type> getA() { return ::llvm::cast<::mlir::TypedValue<::mlir::Type>>(*getODSOperands(0).begin()); } ::mlir::TypedValue<::mlir::Type> getB() { return ::llvm::cast<::mlir::TypedValue<::mlir::Type>>(*getODSOperands(1).begin()); } ::mlir::TypedValue<::mlir::Type> getC() { return ::llvm::cast<::mlir::TypedValue<::mlir::Type>>(*getODSOperands(2).begin()); } ::mlir::OpOperand &getAMutable() { auto range = getODSOperandIndexAndLength(0); return getOperation()->getOpOperand(range.first); } ::mlir::OpOperand &getBMutable() { auto range = getODSOperandIndexAndLength(1); return getOperation()->getOpOperand(range.first); } ::mlir::OpOperand &getCMutable() { auto range = getODSOperandIndexAndLength(2); return getOperation()->getOpOperand(range.first); } std::pair getODSResultIndexAndLength(unsigned index) { return {index, 1}; } ::mlir::Operation::result_range getODSResults(unsigned index) { auto valueRange = getODSResultIndexAndLength(index); return {std::next(getOperation()->result_begin(), valueRange.first), std::next(getOperation()->result_begin(), valueRange.first + valueRange.second)}; } ::mlir::TypedValue<::mlir::Type> getRes() { return ::llvm::cast<::mlir::TypedValue<::mlir::Type>>(*getODSResults(0).begin()); } static ::llvm::LogicalResult setPropertiesFromAttr(Properties &prop, ::mlir::Attribute attr, ::llvm::function_ref<::mlir::InFlightDiagnostic()> emitError); static ::mlir::Attribute getPropertiesAsAttr(::mlir::MLIRContext *ctx, const Properties &prop); static llvm::hash_code computePropertiesHash(const Properties &prop); static std::optional getInherentAttr(::mlir::MLIRContext *ctx, const Properties &prop, llvm::StringRef name); static void setInherentAttr(Properties &prop, llvm::StringRef name, mlir::Attribute value); static void populateInherentAttrs(::mlir::MLIRContext *ctx, const Properties &prop, ::mlir::NamedAttrList &attrs); static ::llvm::LogicalResult verifyInherentAttrs(::mlir::OperationName opName, ::mlir::NamedAttrList &attrs, llvm::function_ref<::mlir::InFlightDiagnostic()> emitError); static ::llvm::LogicalResult readProperties(::mlir::DialectBytecodeReader &reader, ::mlir::OperationState &state); void writeProperties(::mlir::DialectBytecodeWriter &writer); ::mlir::ROCDL::WMMACModifierAttr getModCAttr() { return ::llvm::dyn_cast_or_null<::mlir::ROCDL::WMMACModifierAttr>(getProperties().modC); } ::mlir::ROCDL::WMMACModifier getModC(); ::mlir::IntegerAttr getReuseAAttr() { return ::llvm::dyn_cast_or_null<::mlir::IntegerAttr>(getProperties().reuseA); } bool getReuseA(); ::mlir::IntegerAttr getReuseBAttr() { return ::llvm::dyn_cast_or_null<::mlir::IntegerAttr>(getProperties().reuseB); } bool getReuseB(); void setModCAttr(::mlir::ROCDL::WMMACModifierAttr attr) { getProperties().modC = attr; } void setModC(::mlir::ROCDL::WMMACModifier attrValue); void setReuseAAttr(::mlir::IntegerAttr attr) { getProperties().reuseA = attr; } void setReuseA(bool attrValue); void setReuseBAttr(::mlir::IntegerAttr attr) { getProperties().reuseB = attr; } void setReuseB(bool attrValue); static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::Type res, ::mlir::Value a, ::mlir::Value b, ::mlir::ROCDL::WMMACModifierAttr modC, ::mlir::Value c, ::mlir::IntegerAttr reuseA, ::mlir::IntegerAttr reuseB = nullptr); static wmma_f16_16x16x128_fp8_fp8 create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::Type res, ::mlir::Value a, ::mlir::Value b, ::mlir::ROCDL::WMMACModifierAttr modC, ::mlir::Value c, ::mlir::IntegerAttr reuseA, ::mlir::IntegerAttr reuseB = nullptr); static wmma_f16_16x16x128_fp8_fp8 create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::Type res, ::mlir::Value a, ::mlir::Value b, ::mlir::ROCDL::WMMACModifierAttr modC, ::mlir::Value c, ::mlir::IntegerAttr reuseA, ::mlir::IntegerAttr reuseB = nullptr); static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::Value a, ::mlir::Value b, ::mlir::ROCDL::WMMACModifierAttr modC, ::mlir::Value c, ::mlir::IntegerAttr reuseA, ::mlir::IntegerAttr reuseB = nullptr); static wmma_f16_16x16x128_fp8_fp8 create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::Value a, ::mlir::Value b, ::mlir::ROCDL::WMMACModifierAttr modC, ::mlir::Value c, ::mlir::IntegerAttr reuseA, ::mlir::IntegerAttr reuseB = nullptr); static wmma_f16_16x16x128_fp8_fp8 create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::Value a, ::mlir::Value b, ::mlir::ROCDL::WMMACModifierAttr modC, ::mlir::Value c, ::mlir::IntegerAttr reuseA, ::mlir::IntegerAttr reuseB = nullptr); static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::Type res, ::mlir::Value a, ::mlir::Value b, ::mlir::ROCDL::WMMACModifier modC, ::mlir::Value c, bool reuseA = 0, bool reuseB = 0); static wmma_f16_16x16x128_fp8_fp8 create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::Type res, ::mlir::Value a, ::mlir::Value b, ::mlir::ROCDL::WMMACModifier modC, ::mlir::Value c, bool reuseA = 0, bool reuseB = 0); static wmma_f16_16x16x128_fp8_fp8 create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::Type res, ::mlir::Value a, ::mlir::Value b, ::mlir::ROCDL::WMMACModifier modC, ::mlir::Value c, bool reuseA = 0, bool reuseB = 0); static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::Value a, ::mlir::Value b, ::mlir::ROCDL::WMMACModifier modC, ::mlir::Value c, bool reuseA = 0, bool reuseB = 0); static wmma_f16_16x16x128_fp8_fp8 create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::Value a, ::mlir::Value b, ::mlir::ROCDL::WMMACModifier modC, ::mlir::Value c, bool reuseA = 0, bool reuseB = 0); static wmma_f16_16x16x128_fp8_fp8 create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::Value a, ::mlir::Value b, ::mlir::ROCDL::WMMACModifier modC, ::mlir::Value c, bool reuseA = 0, bool reuseB = 0); static void build(::mlir::OpBuilder &, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, ::llvm::ArrayRef<::mlir::NamedAttribute> attributes = {}); static wmma_f16_16x16x128_fp8_fp8 create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, ::llvm::ArrayRef<::mlir::NamedAttribute> attributes = {}); static wmma_f16_16x16x128_fp8_fp8 create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, ::llvm::ArrayRef<::mlir::NamedAttribute> attributes = {}); static void build(::mlir::OpBuilder &, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, const Properties &properties, ::llvm::ArrayRef<::mlir::NamedAttribute> discardableAttributes = {}); static wmma_f16_16x16x128_fp8_fp8 create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, const Properties &properties, ::llvm::ArrayRef<::mlir::NamedAttribute> discardableAttributes = {}); static wmma_f16_16x16x128_fp8_fp8 create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, const Properties &properties, ::llvm::ArrayRef<::mlir::NamedAttribute> discardableAttributes = {}); static void populateDefaultProperties(::mlir::OperationName opName, Properties &properties); ::llvm::LogicalResult verifyInvariantsImpl(); ::llvm::LogicalResult verifyInvariants(); static ::mlir::ParseResult parse(::mlir::OpAsmParser &parser, ::mlir::OperationState &result); void print(::mlir::OpAsmPrinter &_odsPrinter); private: ::mlir::StringAttr getAttributeNameForIndex(unsigned index) { return getAttributeNameForIndex((*this)->getName(), index); } static ::mlir::StringAttr getAttributeNameForIndex(::mlir::OperationName name, unsigned index) { assert(index < 3 && "invalid attribute index"); assert(name.getStringRef() == getOperationName() && "invalid operation name"); assert(name.isRegistered() && "Operation isn't registered, missing a " "dependent dialect loading?"); return name.getAttributeNames()[index]; } public: }; } // namespace mlir::ROCDL MLIR_DECLARE_EXPLICIT_TYPE_ID(::mlir::ROCDL::wmma_f16_16x16x128_fp8_fp8) MLIR_DECLARE_EXPLICIT_TYPE_ID(::mlir::ROCDL::detail::wmma_f16_16x16x128_fp8_fp8GenericAdaptorBase::Properties) namespace mlir::ROCDL { //===----------------------------------------------------------------------===// // ::mlir::ROCDL::wmma_f16_16x16x16_f16 declarations //===----------------------------------------------------------------------===// namespace detail { class wmma_f16_16x16x16_f16GenericAdaptorBase { public: struct Properties { using opselTy = ::mlir::IntegerAttr; opselTy opsel; auto getOpsel() const { auto &propStorage = this->opsel; return ::llvm::dyn_cast_or_null<::mlir::IntegerAttr>(propStorage); } void setOpsel(const ::mlir::IntegerAttr &propValue) { this->opsel = propValue; } bool operator==(const Properties &rhs) const { return rhs.opsel == this->opsel && true; } bool operator!=(const Properties &rhs) const { return !(*this == rhs); } }; protected: ::mlir::DictionaryAttr odsAttrs; ::std::optional<::mlir::OperationName> odsOpName; Properties properties; ::mlir::RegionRange odsRegions; public: wmma_f16_16x16x16_f16GenericAdaptorBase(::mlir::DictionaryAttr attrs, const Properties &properties, ::mlir::RegionRange regions = {}) : odsAttrs(attrs), properties(properties), odsRegions(regions) { if (odsAttrs) odsOpName.emplace("rocdl.wmma.f16.16x16x16.f16", odsAttrs.getContext()); } wmma_f16_16x16x16_f16GenericAdaptorBase(wmma_f16_16x16x16_f16 op); std::pair getODSOperandIndexAndLength(unsigned index, unsigned odsOperandsSize) { return {index, 1}; } const Properties &getProperties() { return properties; } ::mlir::DictionaryAttr getAttributes() { return odsAttrs; } ::mlir::IntegerAttr getOpselAttr(); bool getOpsel(); }; } // namespace detail template class wmma_f16_16x16x16_f16GenericAdaptor : public detail::wmma_f16_16x16x16_f16GenericAdaptorBase { using ValueT = ::llvm::detail::ValueOfRange; using Base = detail::wmma_f16_16x16x16_f16GenericAdaptorBase; static constexpr int odsIndex_a = 0; static constexpr int odsIndex_b = 1; static constexpr int odsIndex_c = 2; public: wmma_f16_16x16x16_f16GenericAdaptor(RangeT values, ::mlir::DictionaryAttr attrs, const Properties &properties, ::mlir::RegionRange regions = {}) : Base(attrs, properties, regions), odsOperands(values) {} wmma_f16_16x16x16_f16GenericAdaptor(RangeT values, ::mlir::DictionaryAttr attrs, ::mlir::PropertyRef properties, ::mlir::RegionRange regions = {}) : wmma_f16_16x16x16_f16GenericAdaptor(values, attrs, (properties ? *properties.as() : Properties{}), regions) {} wmma_f16_16x16x16_f16GenericAdaptor(RangeT values, ::mlir::DictionaryAttr attrs = nullptr) : wmma_f16_16x16x16_f16GenericAdaptor(values, attrs, Properties{}, {}) {} wmma_f16_16x16x16_f16GenericAdaptor(RangeT values, const wmma_f16_16x16x16_f16GenericAdaptorBase &base) : Base(base), odsOperands(values) {} template >> wmma_f16_16x16x16_f16GenericAdaptor(RangeT values, LateInst op) : Base(op), odsOperands(values) {} std::pair getODSOperandIndexAndLength(unsigned index) { return Base::getODSOperandIndexAndLength(index, odsOperands.size()); } RangeT getODSOperands(unsigned index) { auto valueRange = getODSOperandIndexAndLength(index); return {std::next(odsOperands.begin(), valueRange.first), std::next(odsOperands.begin(), valueRange.first + valueRange.second)}; } ValueT getA() { return (*getODSOperands(0).begin()); } ValueT getB() { return (*getODSOperands(1).begin()); } ValueT getC() { return (*getODSOperands(2).begin()); } RangeT getOperands() { return odsOperands; } private: RangeT odsOperands; }; class wmma_f16_16x16x16_f16Adaptor : public wmma_f16_16x16x16_f16GenericAdaptor<::mlir::ValueRange> { public: using wmma_f16_16x16x16_f16GenericAdaptor::wmma_f16_16x16x16_f16GenericAdaptor; wmma_f16_16x16x16_f16Adaptor(wmma_f16_16x16x16_f16 op); ::llvm::LogicalResult verify(::mlir::Location loc); }; class wmma_f16_16x16x16_f16 : public ::mlir::Op::Impl, ::mlir::OpTrait::ZeroSuccessors, ::mlir::OpTrait::NOperands<3>::Impl, ::mlir::OpTrait::OpInvariants, ::mlir::BytecodeOpInterface::Trait> { public: using Op::Op; using Op::print; using Adaptor = wmma_f16_16x16x16_f16Adaptor; template using GenericAdaptor = wmma_f16_16x16x16_f16GenericAdaptor; using FoldAdaptor = GenericAdaptor<::llvm::ArrayRef<::mlir::Attribute>>; static constexpr int odsIndex_a = 0; static constexpr int odsIndex_b = 1; static constexpr int odsIndex_c = 2; using Properties = FoldAdaptor::Properties; static ::llvm::ArrayRef<::llvm::StringRef> getAttributeNames() { static ::llvm::StringRef attrNames[] = {::llvm::StringRef("opsel")}; return ::llvm::ArrayRef(attrNames); } ::mlir::StringAttr getOpselAttrName() { return getAttributeNameForIndex(0); } static ::mlir::StringAttr getOpselAttrName(::mlir::OperationName name) { return getAttributeNameForIndex(name, 0); } static constexpr ::llvm::StringLiteral getOperationName() { return ::llvm::StringLiteral("rocdl.wmma.f16.16x16x16.f16"); } std::pair getODSOperandIndexAndLength(unsigned index) { return {index, 1}; } ::mlir::Operation::operand_range getODSOperands(unsigned index) { auto valueRange = getODSOperandIndexAndLength(index); return {std::next(getOperation()->operand_begin(), valueRange.first), std::next(getOperation()->operand_begin(), valueRange.first + valueRange.second)}; } ::mlir::TypedValue<::mlir::Type> getA() { return ::llvm::cast<::mlir::TypedValue<::mlir::Type>>(*getODSOperands(0).begin()); } ::mlir::TypedValue<::mlir::Type> getB() { return ::llvm::cast<::mlir::TypedValue<::mlir::Type>>(*getODSOperands(1).begin()); } ::mlir::TypedValue<::mlir::Type> getC() { return ::llvm::cast<::mlir::TypedValue<::mlir::Type>>(*getODSOperands(2).begin()); } ::mlir::OpOperand &getAMutable() { auto range = getODSOperandIndexAndLength(0); return getOperation()->getOpOperand(range.first); } ::mlir::OpOperand &getBMutable() { auto range = getODSOperandIndexAndLength(1); return getOperation()->getOpOperand(range.first); } ::mlir::OpOperand &getCMutable() { auto range = getODSOperandIndexAndLength(2); return getOperation()->getOpOperand(range.first); } std::pair getODSResultIndexAndLength(unsigned index) { return {index, 1}; } ::mlir::Operation::result_range getODSResults(unsigned index) { auto valueRange = getODSResultIndexAndLength(index); return {std::next(getOperation()->result_begin(), valueRange.first), std::next(getOperation()->result_begin(), valueRange.first + valueRange.second)}; } ::mlir::TypedValue<::mlir::Type> getRes() { return ::llvm::cast<::mlir::TypedValue<::mlir::Type>>(*getODSResults(0).begin()); } static ::llvm::LogicalResult setPropertiesFromAttr(Properties &prop, ::mlir::Attribute attr, ::llvm::function_ref<::mlir::InFlightDiagnostic()> emitError); static ::mlir::Attribute getPropertiesAsAttr(::mlir::MLIRContext *ctx, const Properties &prop); static llvm::hash_code computePropertiesHash(const Properties &prop); static std::optional getInherentAttr(::mlir::MLIRContext *ctx, const Properties &prop, llvm::StringRef name); static void setInherentAttr(Properties &prop, llvm::StringRef name, mlir::Attribute value); static void populateInherentAttrs(::mlir::MLIRContext *ctx, const Properties &prop, ::mlir::NamedAttrList &attrs); static ::llvm::LogicalResult verifyInherentAttrs(::mlir::OperationName opName, ::mlir::NamedAttrList &attrs, llvm::function_ref<::mlir::InFlightDiagnostic()> emitError); static ::llvm::LogicalResult readProperties(::mlir::DialectBytecodeReader &reader, ::mlir::OperationState &state); void writeProperties(::mlir::DialectBytecodeWriter &writer); ::mlir::IntegerAttr getOpselAttr() { return ::llvm::dyn_cast_or_null<::mlir::IntegerAttr>(getProperties().opsel); } bool getOpsel(); void setOpselAttr(::mlir::IntegerAttr attr) { getProperties().opsel = attr; } void setOpsel(bool attrValue); static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::Type res, ::mlir::Value a, ::mlir::Value b, ::mlir::Value c, ::mlir::IntegerAttr opsel); static wmma_f16_16x16x16_f16 create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::Type res, ::mlir::Value a, ::mlir::Value b, ::mlir::Value c, ::mlir::IntegerAttr opsel); static wmma_f16_16x16x16_f16 create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::Type res, ::mlir::Value a, ::mlir::Value b, ::mlir::Value c, ::mlir::IntegerAttr opsel); static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::Value a, ::mlir::Value b, ::mlir::Value c, ::mlir::IntegerAttr opsel); static wmma_f16_16x16x16_f16 create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::Value a, ::mlir::Value b, ::mlir::Value c, ::mlir::IntegerAttr opsel); static wmma_f16_16x16x16_f16 create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::Value a, ::mlir::Value b, ::mlir::Value c, ::mlir::IntegerAttr opsel); static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::Type res, ::mlir::Value a, ::mlir::Value b, ::mlir::Value c, bool opsel = 0); static wmma_f16_16x16x16_f16 create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::Type res, ::mlir::Value a, ::mlir::Value b, ::mlir::Value c, bool opsel = 0); static wmma_f16_16x16x16_f16 create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::Type res, ::mlir::Value a, ::mlir::Value b, ::mlir::Value c, bool opsel = 0); static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::Value a, ::mlir::Value b, ::mlir::Value c, bool opsel = 0); static wmma_f16_16x16x16_f16 create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::Value a, ::mlir::Value b, ::mlir::Value c, bool opsel = 0); static wmma_f16_16x16x16_f16 create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::Value a, ::mlir::Value b, ::mlir::Value c, bool opsel = 0); static void build(::mlir::OpBuilder &, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, ::llvm::ArrayRef<::mlir::NamedAttribute> attributes = {}); static wmma_f16_16x16x16_f16 create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, ::llvm::ArrayRef<::mlir::NamedAttribute> attributes = {}); static wmma_f16_16x16x16_f16 create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, ::llvm::ArrayRef<::mlir::NamedAttribute> attributes = {}); static void build(::mlir::OpBuilder &, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, const Properties &properties, ::llvm::ArrayRef<::mlir::NamedAttribute> discardableAttributes = {}); static wmma_f16_16x16x16_f16 create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, const Properties &properties, ::llvm::ArrayRef<::mlir::NamedAttribute> discardableAttributes = {}); static wmma_f16_16x16x16_f16 create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, const Properties &properties, ::llvm::ArrayRef<::mlir::NamedAttribute> discardableAttributes = {}); static void populateDefaultProperties(::mlir::OperationName opName, Properties &properties); ::llvm::LogicalResult verifyInvariantsImpl(); ::llvm::LogicalResult verifyInvariants(); static ::mlir::ParseResult parse(::mlir::OpAsmParser &parser, ::mlir::OperationState &result); void print(::mlir::OpAsmPrinter &_odsPrinter); private: ::mlir::StringAttr getAttributeNameForIndex(unsigned index) { return getAttributeNameForIndex((*this)->getName(), index); } static ::mlir::StringAttr getAttributeNameForIndex(::mlir::OperationName name, unsigned index) { assert(index < 1 && "invalid attribute index"); assert(name.getStringRef() == getOperationName() && "invalid operation name"); assert(name.isRegistered() && "Operation isn't registered, missing a " "dependent dialect loading?"); return name.getAttributeNames()[index]; } public: }; } // namespace mlir::ROCDL MLIR_DECLARE_EXPLICIT_TYPE_ID(::mlir::ROCDL::wmma_f16_16x16x16_f16) MLIR_DECLARE_EXPLICIT_TYPE_ID(::mlir::ROCDL::detail::wmma_f16_16x16x16_f16GenericAdaptorBase::Properties) namespace mlir::ROCDL { //===----------------------------------------------------------------------===// // ::mlir::ROCDL::wmma_f16_16x16x32_f16 declarations //===----------------------------------------------------------------------===// namespace detail { class wmma_f16_16x16x32_f16GenericAdaptorBase { public: struct Properties { using modCTy = ::mlir::ROCDL::WMMACModifierAttr; modCTy modC; auto getModC() const { auto &propStorage = this->modC; return ::llvm::dyn_cast_or_null<::mlir::ROCDL::WMMACModifierAttr>(propStorage); } void setModC(const ::mlir::ROCDL::WMMACModifierAttr &propValue) { this->modC = propValue; } using reuseATy = ::mlir::IntegerAttr; reuseATy reuseA; auto getReuseA() const { auto &propStorage = this->reuseA; return ::llvm::dyn_cast_or_null<::mlir::IntegerAttr>(propStorage); } void setReuseA(const ::mlir::IntegerAttr &propValue) { this->reuseA = propValue; } using reuseBTy = ::mlir::IntegerAttr; reuseBTy reuseB; auto getReuseB() const { auto &propStorage = this->reuseB; return ::llvm::dyn_cast_or_null<::mlir::IntegerAttr>(propStorage); } void setReuseB(const ::mlir::IntegerAttr &propValue) { this->reuseB = propValue; } bool operator==(const Properties &rhs) const { return rhs.modC == this->modC && rhs.reuseA == this->reuseA && rhs.reuseB == this->reuseB && true; } bool operator!=(const Properties &rhs) const { return !(*this == rhs); } }; protected: ::mlir::DictionaryAttr odsAttrs; ::std::optional<::mlir::OperationName> odsOpName; Properties properties; ::mlir::RegionRange odsRegions; public: wmma_f16_16x16x32_f16GenericAdaptorBase(::mlir::DictionaryAttr attrs, const Properties &properties, ::mlir::RegionRange regions = {}) : odsAttrs(attrs), properties(properties), odsRegions(regions) { if (odsAttrs) odsOpName.emplace("rocdl.wmma.f16.16x16x32.f16", odsAttrs.getContext()); } wmma_f16_16x16x32_f16GenericAdaptorBase(wmma_f16_16x16x32_f16 op); std::pair getODSOperandIndexAndLength(unsigned index, unsigned odsOperandsSize) { return {index, 1}; } const Properties &getProperties() { return properties; } ::mlir::DictionaryAttr getAttributes() { return odsAttrs; } ::mlir::ROCDL::WMMACModifierAttr getModCAttr(); ::mlir::ROCDL::WMMACModifier getModC(); ::mlir::IntegerAttr getReuseAAttr(); bool getReuseA(); ::mlir::IntegerAttr getReuseBAttr(); bool getReuseB(); }; } // namespace detail template class wmma_f16_16x16x32_f16GenericAdaptor : public detail::wmma_f16_16x16x32_f16GenericAdaptorBase { using ValueT = ::llvm::detail::ValueOfRange; using Base = detail::wmma_f16_16x16x32_f16GenericAdaptorBase; static constexpr int odsIndex_a = 0; static constexpr int odsIndex_b = 1; static constexpr int odsIndex_c = 2; public: wmma_f16_16x16x32_f16GenericAdaptor(RangeT values, ::mlir::DictionaryAttr attrs, const Properties &properties, ::mlir::RegionRange regions = {}) : Base(attrs, properties, regions), odsOperands(values) {} wmma_f16_16x16x32_f16GenericAdaptor(RangeT values, ::mlir::DictionaryAttr attrs, ::mlir::PropertyRef properties, ::mlir::RegionRange regions = {}) : wmma_f16_16x16x32_f16GenericAdaptor(values, attrs, (properties ? *properties.as() : Properties{}), regions) {} wmma_f16_16x16x32_f16GenericAdaptor(RangeT values, ::mlir::DictionaryAttr attrs = nullptr) : wmma_f16_16x16x32_f16GenericAdaptor(values, attrs, Properties{}, {}) {} wmma_f16_16x16x32_f16GenericAdaptor(RangeT values, const wmma_f16_16x16x32_f16GenericAdaptorBase &base) : Base(base), odsOperands(values) {} template >> wmma_f16_16x16x32_f16GenericAdaptor(RangeT values, LateInst op) : Base(op), odsOperands(values) {} std::pair getODSOperandIndexAndLength(unsigned index) { return Base::getODSOperandIndexAndLength(index, odsOperands.size()); } RangeT getODSOperands(unsigned index) { auto valueRange = getODSOperandIndexAndLength(index); return {std::next(odsOperands.begin(), valueRange.first), std::next(odsOperands.begin(), valueRange.first + valueRange.second)}; } ValueT getA() { return (*getODSOperands(0).begin()); } ValueT getB() { return (*getODSOperands(1).begin()); } ValueT getC() { return (*getODSOperands(2).begin()); } RangeT getOperands() { return odsOperands; } private: RangeT odsOperands; }; class wmma_f16_16x16x32_f16Adaptor : public wmma_f16_16x16x32_f16GenericAdaptor<::mlir::ValueRange> { public: using wmma_f16_16x16x32_f16GenericAdaptor::wmma_f16_16x16x32_f16GenericAdaptor; wmma_f16_16x16x32_f16Adaptor(wmma_f16_16x16x32_f16 op); ::llvm::LogicalResult verify(::mlir::Location loc); }; class wmma_f16_16x16x32_f16 : public ::mlir::Op::Impl, ::mlir::OpTrait::ZeroSuccessors, ::mlir::OpTrait::NOperands<3>::Impl, ::mlir::OpTrait::OpInvariants, ::mlir::BytecodeOpInterface::Trait> { public: using Op::Op; using Op::print; using Adaptor = wmma_f16_16x16x32_f16Adaptor; template using GenericAdaptor = wmma_f16_16x16x32_f16GenericAdaptor; using FoldAdaptor = GenericAdaptor<::llvm::ArrayRef<::mlir::Attribute>>; static constexpr int odsIndex_a = 0; static constexpr int odsIndex_b = 1; static constexpr int odsIndex_c = 2; using Properties = FoldAdaptor::Properties; static ::llvm::ArrayRef<::llvm::StringRef> getAttributeNames() { static ::llvm::StringRef attrNames[] = {::llvm::StringRef("modC"), ::llvm::StringRef("reuseA"), ::llvm::StringRef("reuseB")}; return ::llvm::ArrayRef(attrNames); } ::mlir::StringAttr getModCAttrName() { return getAttributeNameForIndex(0); } static ::mlir::StringAttr getModCAttrName(::mlir::OperationName name) { return getAttributeNameForIndex(name, 0); } ::mlir::StringAttr getReuseAAttrName() { return getAttributeNameForIndex(1); } static ::mlir::StringAttr getReuseAAttrName(::mlir::OperationName name) { return getAttributeNameForIndex(name, 1); } ::mlir::StringAttr getReuseBAttrName() { return getAttributeNameForIndex(2); } static ::mlir::StringAttr getReuseBAttrName(::mlir::OperationName name) { return getAttributeNameForIndex(name, 2); } static constexpr ::llvm::StringLiteral getOperationName() { return ::llvm::StringLiteral("rocdl.wmma.f16.16x16x32.f16"); } std::pair getODSOperandIndexAndLength(unsigned index) { return {index, 1}; } ::mlir::Operation::operand_range getODSOperands(unsigned index) { auto valueRange = getODSOperandIndexAndLength(index); return {std::next(getOperation()->operand_begin(), valueRange.first), std::next(getOperation()->operand_begin(), valueRange.first + valueRange.second)}; } ::mlir::TypedValue<::mlir::Type> getA() { return ::llvm::cast<::mlir::TypedValue<::mlir::Type>>(*getODSOperands(0).begin()); } ::mlir::TypedValue<::mlir::Type> getB() { return ::llvm::cast<::mlir::TypedValue<::mlir::Type>>(*getODSOperands(1).begin()); } ::mlir::TypedValue<::mlir::Type> getC() { return ::llvm::cast<::mlir::TypedValue<::mlir::Type>>(*getODSOperands(2).begin()); } ::mlir::OpOperand &getAMutable() { auto range = getODSOperandIndexAndLength(0); return getOperation()->getOpOperand(range.first); } ::mlir::OpOperand &getBMutable() { auto range = getODSOperandIndexAndLength(1); return getOperation()->getOpOperand(range.first); } ::mlir::OpOperand &getCMutable() { auto range = getODSOperandIndexAndLength(2); return getOperation()->getOpOperand(range.first); } std::pair getODSResultIndexAndLength(unsigned index) { return {index, 1}; } ::mlir::Operation::result_range getODSResults(unsigned index) { auto valueRange = getODSResultIndexAndLength(index); return {std::next(getOperation()->result_begin(), valueRange.first), std::next(getOperation()->result_begin(), valueRange.first + valueRange.second)}; } ::mlir::TypedValue<::mlir::Type> getRes() { return ::llvm::cast<::mlir::TypedValue<::mlir::Type>>(*getODSResults(0).begin()); } static ::llvm::LogicalResult setPropertiesFromAttr(Properties &prop, ::mlir::Attribute attr, ::llvm::function_ref<::mlir::InFlightDiagnostic()> emitError); static ::mlir::Attribute getPropertiesAsAttr(::mlir::MLIRContext *ctx, const Properties &prop); static llvm::hash_code computePropertiesHash(const Properties &prop); static std::optional getInherentAttr(::mlir::MLIRContext *ctx, const Properties &prop, llvm::StringRef name); static void setInherentAttr(Properties &prop, llvm::StringRef name, mlir::Attribute value); static void populateInherentAttrs(::mlir::MLIRContext *ctx, const Properties &prop, ::mlir::NamedAttrList &attrs); static ::llvm::LogicalResult verifyInherentAttrs(::mlir::OperationName opName, ::mlir::NamedAttrList &attrs, llvm::function_ref<::mlir::InFlightDiagnostic()> emitError); static ::llvm::LogicalResult readProperties(::mlir::DialectBytecodeReader &reader, ::mlir::OperationState &state); void writeProperties(::mlir::DialectBytecodeWriter &writer); ::mlir::ROCDL::WMMACModifierAttr getModCAttr() { return ::llvm::dyn_cast_or_null<::mlir::ROCDL::WMMACModifierAttr>(getProperties().modC); } ::mlir::ROCDL::WMMACModifier getModC(); ::mlir::IntegerAttr getReuseAAttr() { return ::llvm::dyn_cast_or_null<::mlir::IntegerAttr>(getProperties().reuseA); } bool getReuseA(); ::mlir::IntegerAttr getReuseBAttr() { return ::llvm::dyn_cast_or_null<::mlir::IntegerAttr>(getProperties().reuseB); } bool getReuseB(); void setModCAttr(::mlir::ROCDL::WMMACModifierAttr attr) { getProperties().modC = attr; } void setModC(::mlir::ROCDL::WMMACModifier attrValue); void setReuseAAttr(::mlir::IntegerAttr attr) { getProperties().reuseA = attr; } void setReuseA(bool attrValue); void setReuseBAttr(::mlir::IntegerAttr attr) { getProperties().reuseB = attr; } void setReuseB(bool attrValue); static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::Type res, ::mlir::Value a, ::mlir::Value b, ::mlir::ROCDL::WMMACModifierAttr modC, ::mlir::Value c, ::mlir::IntegerAttr reuseA, ::mlir::IntegerAttr reuseB = nullptr); static wmma_f16_16x16x32_f16 create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::Type res, ::mlir::Value a, ::mlir::Value b, ::mlir::ROCDL::WMMACModifierAttr modC, ::mlir::Value c, ::mlir::IntegerAttr reuseA, ::mlir::IntegerAttr reuseB = nullptr); static wmma_f16_16x16x32_f16 create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::Type res, ::mlir::Value a, ::mlir::Value b, ::mlir::ROCDL::WMMACModifierAttr modC, ::mlir::Value c, ::mlir::IntegerAttr reuseA, ::mlir::IntegerAttr reuseB = nullptr); static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::Value a, ::mlir::Value b, ::mlir::ROCDL::WMMACModifierAttr modC, ::mlir::Value c, ::mlir::IntegerAttr reuseA, ::mlir::IntegerAttr reuseB = nullptr); static wmma_f16_16x16x32_f16 create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::Value a, ::mlir::Value b, ::mlir::ROCDL::WMMACModifierAttr modC, ::mlir::Value c, ::mlir::IntegerAttr reuseA, ::mlir::IntegerAttr reuseB = nullptr); static wmma_f16_16x16x32_f16 create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::Value a, ::mlir::Value b, ::mlir::ROCDL::WMMACModifierAttr modC, ::mlir::Value c, ::mlir::IntegerAttr reuseA, ::mlir::IntegerAttr reuseB = nullptr); static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::Type res, ::mlir::Value a, ::mlir::Value b, ::mlir::ROCDL::WMMACModifier modC, ::mlir::Value c, bool reuseA = 0, bool reuseB = 0); static wmma_f16_16x16x32_f16 create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::Type res, ::mlir::Value a, ::mlir::Value b, ::mlir::ROCDL::WMMACModifier modC, ::mlir::Value c, bool reuseA = 0, bool reuseB = 0); static wmma_f16_16x16x32_f16 create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::Type res, ::mlir::Value a, ::mlir::Value b, ::mlir::ROCDL::WMMACModifier modC, ::mlir::Value c, bool reuseA = 0, bool reuseB = 0); static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::Value a, ::mlir::Value b, ::mlir::ROCDL::WMMACModifier modC, ::mlir::Value c, bool reuseA = 0, bool reuseB = 0); static wmma_f16_16x16x32_f16 create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::Value a, ::mlir::Value b, ::mlir::ROCDL::WMMACModifier modC, ::mlir::Value c, bool reuseA = 0, bool reuseB = 0); static wmma_f16_16x16x32_f16 create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::Value a, ::mlir::Value b, ::mlir::ROCDL::WMMACModifier modC, ::mlir::Value c, bool reuseA = 0, bool reuseB = 0); static void build(::mlir::OpBuilder &, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, ::llvm::ArrayRef<::mlir::NamedAttribute> attributes = {}); static wmma_f16_16x16x32_f16 create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, ::llvm::ArrayRef<::mlir::NamedAttribute> attributes = {}); static wmma_f16_16x16x32_f16 create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, ::llvm::ArrayRef<::mlir::NamedAttribute> attributes = {}); static void build(::mlir::OpBuilder &, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, const Properties &properties, ::llvm::ArrayRef<::mlir::NamedAttribute> discardableAttributes = {}); static wmma_f16_16x16x32_f16 create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, const Properties &properties, ::llvm::ArrayRef<::mlir::NamedAttribute> discardableAttributes = {}); static wmma_f16_16x16x32_f16 create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, const Properties &properties, ::llvm::ArrayRef<::mlir::NamedAttribute> discardableAttributes = {}); static void populateDefaultProperties(::mlir::OperationName opName, Properties &properties); ::llvm::LogicalResult verifyInvariantsImpl(); ::llvm::LogicalResult verifyInvariants(); static ::mlir::ParseResult parse(::mlir::OpAsmParser &parser, ::mlir::OperationState &result); void print(::mlir::OpAsmPrinter &_odsPrinter); private: ::mlir::StringAttr getAttributeNameForIndex(unsigned index) { return getAttributeNameForIndex((*this)->getName(), index); } static ::mlir::StringAttr getAttributeNameForIndex(::mlir::OperationName name, unsigned index) { assert(index < 3 && "invalid attribute index"); assert(name.getStringRef() == getOperationName() && "invalid operation name"); assert(name.isRegistered() && "Operation isn't registered, missing a " "dependent dialect loading?"); return name.getAttributeNames()[index]; } public: }; } // namespace mlir::ROCDL MLIR_DECLARE_EXPLICIT_TYPE_ID(::mlir::ROCDL::wmma_f16_16x16x32_f16) MLIR_DECLARE_EXPLICIT_TYPE_ID(::mlir::ROCDL::detail::wmma_f16_16x16x32_f16GenericAdaptorBase::Properties) namespace mlir::ROCDL { //===----------------------------------------------------------------------===// // ::mlir::ROCDL::wmma_f16_16x16x64_bf8_bf8 declarations //===----------------------------------------------------------------------===// namespace detail { class wmma_f16_16x16x64_bf8_bf8GenericAdaptorBase { public: struct Properties { using modCTy = ::mlir::ROCDL::WMMACModifierAttr; modCTy modC; auto getModC() const { auto &propStorage = this->modC; return ::llvm::dyn_cast_or_null<::mlir::ROCDL::WMMACModifierAttr>(propStorage); } void setModC(const ::mlir::ROCDL::WMMACModifierAttr &propValue) { this->modC = propValue; } using reuseATy = ::mlir::IntegerAttr; reuseATy reuseA; auto getReuseA() const { auto &propStorage = this->reuseA; return ::llvm::dyn_cast_or_null<::mlir::IntegerAttr>(propStorage); } void setReuseA(const ::mlir::IntegerAttr &propValue) { this->reuseA = propValue; } using reuseBTy = ::mlir::IntegerAttr; reuseBTy reuseB; auto getReuseB() const { auto &propStorage = this->reuseB; return ::llvm::dyn_cast_or_null<::mlir::IntegerAttr>(propStorage); } void setReuseB(const ::mlir::IntegerAttr &propValue) { this->reuseB = propValue; } bool operator==(const Properties &rhs) const { return rhs.modC == this->modC && rhs.reuseA == this->reuseA && rhs.reuseB == this->reuseB && true; } bool operator!=(const Properties &rhs) const { return !(*this == rhs); } }; protected: ::mlir::DictionaryAttr odsAttrs; ::std::optional<::mlir::OperationName> odsOpName; Properties properties; ::mlir::RegionRange odsRegions; public: wmma_f16_16x16x64_bf8_bf8GenericAdaptorBase(::mlir::DictionaryAttr attrs, const Properties &properties, ::mlir::RegionRange regions = {}) : odsAttrs(attrs), properties(properties), odsRegions(regions) { if (odsAttrs) odsOpName.emplace("rocdl.wmma.f16.16x16x64.bf8_bf8", odsAttrs.getContext()); } wmma_f16_16x16x64_bf8_bf8GenericAdaptorBase(wmma_f16_16x16x64_bf8_bf8 op); std::pair getODSOperandIndexAndLength(unsigned index, unsigned odsOperandsSize) { return {index, 1}; } const Properties &getProperties() { return properties; } ::mlir::DictionaryAttr getAttributes() { return odsAttrs; } ::mlir::ROCDL::WMMACModifierAttr getModCAttr(); ::mlir::ROCDL::WMMACModifier getModC(); ::mlir::IntegerAttr getReuseAAttr(); bool getReuseA(); ::mlir::IntegerAttr getReuseBAttr(); bool getReuseB(); }; } // namespace detail template class wmma_f16_16x16x64_bf8_bf8GenericAdaptor : public detail::wmma_f16_16x16x64_bf8_bf8GenericAdaptorBase { using ValueT = ::llvm::detail::ValueOfRange; using Base = detail::wmma_f16_16x16x64_bf8_bf8GenericAdaptorBase; static constexpr int odsIndex_a = 0; static constexpr int odsIndex_b = 1; static constexpr int odsIndex_c = 2; public: wmma_f16_16x16x64_bf8_bf8GenericAdaptor(RangeT values, ::mlir::DictionaryAttr attrs, const Properties &properties, ::mlir::RegionRange regions = {}) : Base(attrs, properties, regions), odsOperands(values) {} wmma_f16_16x16x64_bf8_bf8GenericAdaptor(RangeT values, ::mlir::DictionaryAttr attrs, ::mlir::PropertyRef properties, ::mlir::RegionRange regions = {}) : wmma_f16_16x16x64_bf8_bf8GenericAdaptor(values, attrs, (properties ? *properties.as() : Properties{}), regions) {} wmma_f16_16x16x64_bf8_bf8GenericAdaptor(RangeT values, ::mlir::DictionaryAttr attrs = nullptr) : wmma_f16_16x16x64_bf8_bf8GenericAdaptor(values, attrs, Properties{}, {}) {} wmma_f16_16x16x64_bf8_bf8GenericAdaptor(RangeT values, const wmma_f16_16x16x64_bf8_bf8GenericAdaptorBase &base) : Base(base), odsOperands(values) {} template >> wmma_f16_16x16x64_bf8_bf8GenericAdaptor(RangeT values, LateInst op) : Base(op), odsOperands(values) {} std::pair getODSOperandIndexAndLength(unsigned index) { return Base::getODSOperandIndexAndLength(index, odsOperands.size()); } RangeT getODSOperands(unsigned index) { auto valueRange = getODSOperandIndexAndLength(index); return {std::next(odsOperands.begin(), valueRange.first), std::next(odsOperands.begin(), valueRange.first + valueRange.second)}; } ValueT getA() { return (*getODSOperands(0).begin()); } ValueT getB() { return (*getODSOperands(1).begin()); } ValueT getC() { return (*getODSOperands(2).begin()); } RangeT getOperands() { return odsOperands; } private: RangeT odsOperands; }; class wmma_f16_16x16x64_bf8_bf8Adaptor : public wmma_f16_16x16x64_bf8_bf8GenericAdaptor<::mlir::ValueRange> { public: using wmma_f16_16x16x64_bf8_bf8GenericAdaptor::wmma_f16_16x16x64_bf8_bf8GenericAdaptor; wmma_f16_16x16x64_bf8_bf8Adaptor(wmma_f16_16x16x64_bf8_bf8 op); ::llvm::LogicalResult verify(::mlir::Location loc); }; class wmma_f16_16x16x64_bf8_bf8 : public ::mlir::Op::Impl, ::mlir::OpTrait::ZeroSuccessors, ::mlir::OpTrait::NOperands<3>::Impl, ::mlir::OpTrait::OpInvariants, ::mlir::BytecodeOpInterface::Trait> { public: using Op::Op; using Op::print; using Adaptor = wmma_f16_16x16x64_bf8_bf8Adaptor; template using GenericAdaptor = wmma_f16_16x16x64_bf8_bf8GenericAdaptor; using FoldAdaptor = GenericAdaptor<::llvm::ArrayRef<::mlir::Attribute>>; static constexpr int odsIndex_a = 0; static constexpr int odsIndex_b = 1; static constexpr int odsIndex_c = 2; using Properties = FoldAdaptor::Properties; static ::llvm::ArrayRef<::llvm::StringRef> getAttributeNames() { static ::llvm::StringRef attrNames[] = {::llvm::StringRef("modC"), ::llvm::StringRef("reuseA"), ::llvm::StringRef("reuseB")}; return ::llvm::ArrayRef(attrNames); } ::mlir::StringAttr getModCAttrName() { return getAttributeNameForIndex(0); } static ::mlir::StringAttr getModCAttrName(::mlir::OperationName name) { return getAttributeNameForIndex(name, 0); } ::mlir::StringAttr getReuseAAttrName() { return getAttributeNameForIndex(1); } static ::mlir::StringAttr getReuseAAttrName(::mlir::OperationName name) { return getAttributeNameForIndex(name, 1); } ::mlir::StringAttr getReuseBAttrName() { return getAttributeNameForIndex(2); } static ::mlir::StringAttr getReuseBAttrName(::mlir::OperationName name) { return getAttributeNameForIndex(name, 2); } static constexpr ::llvm::StringLiteral getOperationName() { return ::llvm::StringLiteral("rocdl.wmma.f16.16x16x64.bf8_bf8"); } std::pair getODSOperandIndexAndLength(unsigned index) { return {index, 1}; } ::mlir::Operation::operand_range getODSOperands(unsigned index) { auto valueRange = getODSOperandIndexAndLength(index); return {std::next(getOperation()->operand_begin(), valueRange.first), std::next(getOperation()->operand_begin(), valueRange.first + valueRange.second)}; } ::mlir::TypedValue<::mlir::Type> getA() { return ::llvm::cast<::mlir::TypedValue<::mlir::Type>>(*getODSOperands(0).begin()); } ::mlir::TypedValue<::mlir::Type> getB() { return ::llvm::cast<::mlir::TypedValue<::mlir::Type>>(*getODSOperands(1).begin()); } ::mlir::TypedValue<::mlir::Type> getC() { return ::llvm::cast<::mlir::TypedValue<::mlir::Type>>(*getODSOperands(2).begin()); } ::mlir::OpOperand &getAMutable() { auto range = getODSOperandIndexAndLength(0); return getOperation()->getOpOperand(range.first); } ::mlir::OpOperand &getBMutable() { auto range = getODSOperandIndexAndLength(1); return getOperation()->getOpOperand(range.first); } ::mlir::OpOperand &getCMutable() { auto range = getODSOperandIndexAndLength(2); return getOperation()->getOpOperand(range.first); } std::pair getODSResultIndexAndLength(unsigned index) { return {index, 1}; } ::mlir::Operation::result_range getODSResults(unsigned index) { auto valueRange = getODSResultIndexAndLength(index); return {std::next(getOperation()->result_begin(), valueRange.first), std::next(getOperation()->result_begin(), valueRange.first + valueRange.second)}; } ::mlir::TypedValue<::mlir::Type> getRes() { return ::llvm::cast<::mlir::TypedValue<::mlir::Type>>(*getODSResults(0).begin()); } static ::llvm::LogicalResult setPropertiesFromAttr(Properties &prop, ::mlir::Attribute attr, ::llvm::function_ref<::mlir::InFlightDiagnostic()> emitError); static ::mlir::Attribute getPropertiesAsAttr(::mlir::MLIRContext *ctx, const Properties &prop); static llvm::hash_code computePropertiesHash(const Properties &prop); static std::optional getInherentAttr(::mlir::MLIRContext *ctx, const Properties &prop, llvm::StringRef name); static void setInherentAttr(Properties &prop, llvm::StringRef name, mlir::Attribute value); static void populateInherentAttrs(::mlir::MLIRContext *ctx, const Properties &prop, ::mlir::NamedAttrList &attrs); static ::llvm::LogicalResult verifyInherentAttrs(::mlir::OperationName opName, ::mlir::NamedAttrList &attrs, llvm::function_ref<::mlir::InFlightDiagnostic()> emitError); static ::llvm::LogicalResult readProperties(::mlir::DialectBytecodeReader &reader, ::mlir::OperationState &state); void writeProperties(::mlir::DialectBytecodeWriter &writer); ::mlir::ROCDL::WMMACModifierAttr getModCAttr() { return ::llvm::dyn_cast_or_null<::mlir::ROCDL::WMMACModifierAttr>(getProperties().modC); } ::mlir::ROCDL::WMMACModifier getModC(); ::mlir::IntegerAttr getReuseAAttr() { return ::llvm::dyn_cast_or_null<::mlir::IntegerAttr>(getProperties().reuseA); } bool getReuseA(); ::mlir::IntegerAttr getReuseBAttr() { return ::llvm::dyn_cast_or_null<::mlir::IntegerAttr>(getProperties().reuseB); } bool getReuseB(); void setModCAttr(::mlir::ROCDL::WMMACModifierAttr attr) { getProperties().modC = attr; } void setModC(::mlir::ROCDL::WMMACModifier attrValue); void setReuseAAttr(::mlir::IntegerAttr attr) { getProperties().reuseA = attr; } void setReuseA(bool attrValue); void setReuseBAttr(::mlir::IntegerAttr attr) { getProperties().reuseB = attr; } void setReuseB(bool attrValue); static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::Type res, ::mlir::Value a, ::mlir::Value b, ::mlir::ROCDL::WMMACModifierAttr modC, ::mlir::Value c, ::mlir::IntegerAttr reuseA, ::mlir::IntegerAttr reuseB = nullptr); static wmma_f16_16x16x64_bf8_bf8 create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::Type res, ::mlir::Value a, ::mlir::Value b, ::mlir::ROCDL::WMMACModifierAttr modC, ::mlir::Value c, ::mlir::IntegerAttr reuseA, ::mlir::IntegerAttr reuseB = nullptr); static wmma_f16_16x16x64_bf8_bf8 create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::Type res, ::mlir::Value a, ::mlir::Value b, ::mlir::ROCDL::WMMACModifierAttr modC, ::mlir::Value c, ::mlir::IntegerAttr reuseA, ::mlir::IntegerAttr reuseB = nullptr); static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::Value a, ::mlir::Value b, ::mlir::ROCDL::WMMACModifierAttr modC, ::mlir::Value c, ::mlir::IntegerAttr reuseA, ::mlir::IntegerAttr reuseB = nullptr); static wmma_f16_16x16x64_bf8_bf8 create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::Value a, ::mlir::Value b, ::mlir::ROCDL::WMMACModifierAttr modC, ::mlir::Value c, ::mlir::IntegerAttr reuseA, ::mlir::IntegerAttr reuseB = nullptr); static wmma_f16_16x16x64_bf8_bf8 create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::Value a, ::mlir::Value b, ::mlir::ROCDL::WMMACModifierAttr modC, ::mlir::Value c, ::mlir::IntegerAttr reuseA, ::mlir::IntegerAttr reuseB = nullptr); static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::Type res, ::mlir::Value a, ::mlir::Value b, ::mlir::ROCDL::WMMACModifier modC, ::mlir::Value c, bool reuseA = 0, bool reuseB = 0); static wmma_f16_16x16x64_bf8_bf8 create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::Type res, ::mlir::Value a, ::mlir::Value b, ::mlir::ROCDL::WMMACModifier modC, ::mlir::Value c, bool reuseA = 0, bool reuseB = 0); static wmma_f16_16x16x64_bf8_bf8 create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::Type res, ::mlir::Value a, ::mlir::Value b, ::mlir::ROCDL::WMMACModifier modC, ::mlir::Value c, bool reuseA = 0, bool reuseB = 0); static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::Value a, ::mlir::Value b, ::mlir::ROCDL::WMMACModifier modC, ::mlir::Value c, bool reuseA = 0, bool reuseB = 0); static wmma_f16_16x16x64_bf8_bf8 create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::Value a, ::mlir::Value b, ::mlir::ROCDL::WMMACModifier modC, ::mlir::Value c, bool reuseA = 0, bool reuseB = 0); static wmma_f16_16x16x64_bf8_bf8 create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::Value a, ::mlir::Value b, ::mlir::ROCDL::WMMACModifier modC, ::mlir::Value c, bool reuseA = 0, bool reuseB = 0); static void build(::mlir::OpBuilder &, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, ::llvm::ArrayRef<::mlir::NamedAttribute> attributes = {}); static wmma_f16_16x16x64_bf8_bf8 create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, ::llvm::ArrayRef<::mlir::NamedAttribute> attributes = {}); static wmma_f16_16x16x64_bf8_bf8 create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, ::llvm::ArrayRef<::mlir::NamedAttribute> attributes = {}); static void build(::mlir::OpBuilder &, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, const Properties &properties, ::llvm::ArrayRef<::mlir::NamedAttribute> discardableAttributes = {}); static wmma_f16_16x16x64_bf8_bf8 create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, const Properties &properties, ::llvm::ArrayRef<::mlir::NamedAttribute> discardableAttributes = {}); static wmma_f16_16x16x64_bf8_bf8 create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, const Properties &properties, ::llvm::ArrayRef<::mlir::NamedAttribute> discardableAttributes = {}); static void populateDefaultProperties(::mlir::OperationName opName, Properties &properties); ::llvm::LogicalResult verifyInvariantsImpl(); ::llvm::LogicalResult verifyInvariants(); static ::mlir::ParseResult parse(::mlir::OpAsmParser &parser, ::mlir::OperationState &result); void print(::mlir::OpAsmPrinter &_odsPrinter); private: ::mlir::StringAttr getAttributeNameForIndex(unsigned index) { return getAttributeNameForIndex((*this)->getName(), index); } static ::mlir::StringAttr getAttributeNameForIndex(::mlir::OperationName name, unsigned index) { assert(index < 3 && "invalid attribute index"); assert(name.getStringRef() == getOperationName() && "invalid operation name"); assert(name.isRegistered() && "Operation isn't registered, missing a " "dependent dialect loading?"); return name.getAttributeNames()[index]; } public: }; } // namespace mlir::ROCDL MLIR_DECLARE_EXPLICIT_TYPE_ID(::mlir::ROCDL::wmma_f16_16x16x64_bf8_bf8) MLIR_DECLARE_EXPLICIT_TYPE_ID(::mlir::ROCDL::detail::wmma_f16_16x16x64_bf8_bf8GenericAdaptorBase::Properties) namespace mlir::ROCDL { //===----------------------------------------------------------------------===// // ::mlir::ROCDL::wmma_f16_16x16x64_bf8_fp8 declarations //===----------------------------------------------------------------------===// namespace detail { class wmma_f16_16x16x64_bf8_fp8GenericAdaptorBase { public: struct Properties { using modCTy = ::mlir::ROCDL::WMMACModifierAttr; modCTy modC; auto getModC() const { auto &propStorage = this->modC; return ::llvm::dyn_cast_or_null<::mlir::ROCDL::WMMACModifierAttr>(propStorage); } void setModC(const ::mlir::ROCDL::WMMACModifierAttr &propValue) { this->modC = propValue; } using reuseATy = ::mlir::IntegerAttr; reuseATy reuseA; auto getReuseA() const { auto &propStorage = this->reuseA; return ::llvm::dyn_cast_or_null<::mlir::IntegerAttr>(propStorage); } void setReuseA(const ::mlir::IntegerAttr &propValue) { this->reuseA = propValue; } using reuseBTy = ::mlir::IntegerAttr; reuseBTy reuseB; auto getReuseB() const { auto &propStorage = this->reuseB; return ::llvm::dyn_cast_or_null<::mlir::IntegerAttr>(propStorage); } void setReuseB(const ::mlir::IntegerAttr &propValue) { this->reuseB = propValue; } bool operator==(const Properties &rhs) const { return rhs.modC == this->modC && rhs.reuseA == this->reuseA && rhs.reuseB == this->reuseB && true; } bool operator!=(const Properties &rhs) const { return !(*this == rhs); } }; protected: ::mlir::DictionaryAttr odsAttrs; ::std::optional<::mlir::OperationName> odsOpName; Properties properties; ::mlir::RegionRange odsRegions; public: wmma_f16_16x16x64_bf8_fp8GenericAdaptorBase(::mlir::DictionaryAttr attrs, const Properties &properties, ::mlir::RegionRange regions = {}) : odsAttrs(attrs), properties(properties), odsRegions(regions) { if (odsAttrs) odsOpName.emplace("rocdl.wmma.f16.16x16x64.bf8_fp8", odsAttrs.getContext()); } wmma_f16_16x16x64_bf8_fp8GenericAdaptorBase(wmma_f16_16x16x64_bf8_fp8 op); std::pair getODSOperandIndexAndLength(unsigned index, unsigned odsOperandsSize) { return {index, 1}; } const Properties &getProperties() { return properties; } ::mlir::DictionaryAttr getAttributes() { return odsAttrs; } ::mlir::ROCDL::WMMACModifierAttr getModCAttr(); ::mlir::ROCDL::WMMACModifier getModC(); ::mlir::IntegerAttr getReuseAAttr(); bool getReuseA(); ::mlir::IntegerAttr getReuseBAttr(); bool getReuseB(); }; } // namespace detail template class wmma_f16_16x16x64_bf8_fp8GenericAdaptor : public detail::wmma_f16_16x16x64_bf8_fp8GenericAdaptorBase { using ValueT = ::llvm::detail::ValueOfRange; using Base = detail::wmma_f16_16x16x64_bf8_fp8GenericAdaptorBase; static constexpr int odsIndex_a = 0; static constexpr int odsIndex_b = 1; static constexpr int odsIndex_c = 2; public: wmma_f16_16x16x64_bf8_fp8GenericAdaptor(RangeT values, ::mlir::DictionaryAttr attrs, const Properties &properties, ::mlir::RegionRange regions = {}) : Base(attrs, properties, regions), odsOperands(values) {} wmma_f16_16x16x64_bf8_fp8GenericAdaptor(RangeT values, ::mlir::DictionaryAttr attrs, ::mlir::PropertyRef properties, ::mlir::RegionRange regions = {}) : wmma_f16_16x16x64_bf8_fp8GenericAdaptor(values, attrs, (properties ? *properties.as() : Properties{}), regions) {} wmma_f16_16x16x64_bf8_fp8GenericAdaptor(RangeT values, ::mlir::DictionaryAttr attrs = nullptr) : wmma_f16_16x16x64_bf8_fp8GenericAdaptor(values, attrs, Properties{}, {}) {} wmma_f16_16x16x64_bf8_fp8GenericAdaptor(RangeT values, const wmma_f16_16x16x64_bf8_fp8GenericAdaptorBase &base) : Base(base), odsOperands(values) {} template >> wmma_f16_16x16x64_bf8_fp8GenericAdaptor(RangeT values, LateInst op) : Base(op), odsOperands(values) {} std::pair getODSOperandIndexAndLength(unsigned index) { return Base::getODSOperandIndexAndLength(index, odsOperands.size()); } RangeT getODSOperands(unsigned index) { auto valueRange = getODSOperandIndexAndLength(index); return {std::next(odsOperands.begin(), valueRange.first), std::next(odsOperands.begin(), valueRange.first + valueRange.second)}; } ValueT getA() { return (*getODSOperands(0).begin()); } ValueT getB() { return (*getODSOperands(1).begin()); } ValueT getC() { return (*getODSOperands(2).begin()); } RangeT getOperands() { return odsOperands; } private: RangeT odsOperands; }; class wmma_f16_16x16x64_bf8_fp8Adaptor : public wmma_f16_16x16x64_bf8_fp8GenericAdaptor<::mlir::ValueRange> { public: using wmma_f16_16x16x64_bf8_fp8GenericAdaptor::wmma_f16_16x16x64_bf8_fp8GenericAdaptor; wmma_f16_16x16x64_bf8_fp8Adaptor(wmma_f16_16x16x64_bf8_fp8 op); ::llvm::LogicalResult verify(::mlir::Location loc); }; class wmma_f16_16x16x64_bf8_fp8 : public ::mlir::Op::Impl, ::mlir::OpTrait::ZeroSuccessors, ::mlir::OpTrait::NOperands<3>::Impl, ::mlir::OpTrait::OpInvariants, ::mlir::BytecodeOpInterface::Trait> { public: using Op::Op; using Op::print; using Adaptor = wmma_f16_16x16x64_bf8_fp8Adaptor; template using GenericAdaptor = wmma_f16_16x16x64_bf8_fp8GenericAdaptor; using FoldAdaptor = GenericAdaptor<::llvm::ArrayRef<::mlir::Attribute>>; static constexpr int odsIndex_a = 0; static constexpr int odsIndex_b = 1; static constexpr int odsIndex_c = 2; using Properties = FoldAdaptor::Properties; static ::llvm::ArrayRef<::llvm::StringRef> getAttributeNames() { static ::llvm::StringRef attrNames[] = {::llvm::StringRef("modC"), ::llvm::StringRef("reuseA"), ::llvm::StringRef("reuseB")}; return ::llvm::ArrayRef(attrNames); } ::mlir::StringAttr getModCAttrName() { return getAttributeNameForIndex(0); } static ::mlir::StringAttr getModCAttrName(::mlir::OperationName name) { return getAttributeNameForIndex(name, 0); } ::mlir::StringAttr getReuseAAttrName() { return getAttributeNameForIndex(1); } static ::mlir::StringAttr getReuseAAttrName(::mlir::OperationName name) { return getAttributeNameForIndex(name, 1); } ::mlir::StringAttr getReuseBAttrName() { return getAttributeNameForIndex(2); } static ::mlir::StringAttr getReuseBAttrName(::mlir::OperationName name) { return getAttributeNameForIndex(name, 2); } static constexpr ::llvm::StringLiteral getOperationName() { return ::llvm::StringLiteral("rocdl.wmma.f16.16x16x64.bf8_fp8"); } std::pair getODSOperandIndexAndLength(unsigned index) { return {index, 1}; } ::mlir::Operation::operand_range getODSOperands(unsigned index) { auto valueRange = getODSOperandIndexAndLength(index); return {std::next(getOperation()->operand_begin(), valueRange.first), std::next(getOperation()->operand_begin(), valueRange.first + valueRange.second)}; } ::mlir::TypedValue<::mlir::Type> getA() { return ::llvm::cast<::mlir::TypedValue<::mlir::Type>>(*getODSOperands(0).begin()); } ::mlir::TypedValue<::mlir::Type> getB() { return ::llvm::cast<::mlir::TypedValue<::mlir::Type>>(*getODSOperands(1).begin()); } ::mlir::TypedValue<::mlir::Type> getC() { return ::llvm::cast<::mlir::TypedValue<::mlir::Type>>(*getODSOperands(2).begin()); } ::mlir::OpOperand &getAMutable() { auto range = getODSOperandIndexAndLength(0); return getOperation()->getOpOperand(range.first); } ::mlir::OpOperand &getBMutable() { auto range = getODSOperandIndexAndLength(1); return getOperation()->getOpOperand(range.first); } ::mlir::OpOperand &getCMutable() { auto range = getODSOperandIndexAndLength(2); return getOperation()->getOpOperand(range.first); } std::pair getODSResultIndexAndLength(unsigned index) { return {index, 1}; } ::mlir::Operation::result_range getODSResults(unsigned index) { auto valueRange = getODSResultIndexAndLength(index); return {std::next(getOperation()->result_begin(), valueRange.first), std::next(getOperation()->result_begin(), valueRange.first + valueRange.second)}; } ::mlir::TypedValue<::mlir::Type> getRes() { return ::llvm::cast<::mlir::TypedValue<::mlir::Type>>(*getODSResults(0).begin()); } static ::llvm::LogicalResult setPropertiesFromAttr(Properties &prop, ::mlir::Attribute attr, ::llvm::function_ref<::mlir::InFlightDiagnostic()> emitError); static ::mlir::Attribute getPropertiesAsAttr(::mlir::MLIRContext *ctx, const Properties &prop); static llvm::hash_code computePropertiesHash(const Properties &prop); static std::optional getInherentAttr(::mlir::MLIRContext *ctx, const Properties &prop, llvm::StringRef name); static void setInherentAttr(Properties &prop, llvm::StringRef name, mlir::Attribute value); static void populateInherentAttrs(::mlir::MLIRContext *ctx, const Properties &prop, ::mlir::NamedAttrList &attrs); static ::llvm::LogicalResult verifyInherentAttrs(::mlir::OperationName opName, ::mlir::NamedAttrList &attrs, llvm::function_ref<::mlir::InFlightDiagnostic()> emitError); static ::llvm::LogicalResult readProperties(::mlir::DialectBytecodeReader &reader, ::mlir::OperationState &state); void writeProperties(::mlir::DialectBytecodeWriter &writer); ::mlir::ROCDL::WMMACModifierAttr getModCAttr() { return ::llvm::dyn_cast_or_null<::mlir::ROCDL::WMMACModifierAttr>(getProperties().modC); } ::mlir::ROCDL::WMMACModifier getModC(); ::mlir::IntegerAttr getReuseAAttr() { return ::llvm::dyn_cast_or_null<::mlir::IntegerAttr>(getProperties().reuseA); } bool getReuseA(); ::mlir::IntegerAttr getReuseBAttr() { return ::llvm::dyn_cast_or_null<::mlir::IntegerAttr>(getProperties().reuseB); } bool getReuseB(); void setModCAttr(::mlir::ROCDL::WMMACModifierAttr attr) { getProperties().modC = attr; } void setModC(::mlir::ROCDL::WMMACModifier attrValue); void setReuseAAttr(::mlir::IntegerAttr attr) { getProperties().reuseA = attr; } void setReuseA(bool attrValue); void setReuseBAttr(::mlir::IntegerAttr attr) { getProperties().reuseB = attr; } void setReuseB(bool attrValue); static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::Type res, ::mlir::Value a, ::mlir::Value b, ::mlir::ROCDL::WMMACModifierAttr modC, ::mlir::Value c, ::mlir::IntegerAttr reuseA, ::mlir::IntegerAttr reuseB = nullptr); static wmma_f16_16x16x64_bf8_fp8 create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::Type res, ::mlir::Value a, ::mlir::Value b, ::mlir::ROCDL::WMMACModifierAttr modC, ::mlir::Value c, ::mlir::IntegerAttr reuseA, ::mlir::IntegerAttr reuseB = nullptr); static wmma_f16_16x16x64_bf8_fp8 create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::Type res, ::mlir::Value a, ::mlir::Value b, ::mlir::ROCDL::WMMACModifierAttr modC, ::mlir::Value c, ::mlir::IntegerAttr reuseA, ::mlir::IntegerAttr reuseB = nullptr); static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::Value a, ::mlir::Value b, ::mlir::ROCDL::WMMACModifierAttr modC, ::mlir::Value c, ::mlir::IntegerAttr reuseA, ::mlir::IntegerAttr reuseB = nullptr); static wmma_f16_16x16x64_bf8_fp8 create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::Value a, ::mlir::Value b, ::mlir::ROCDL::WMMACModifierAttr modC, ::mlir::Value c, ::mlir::IntegerAttr reuseA, ::mlir::IntegerAttr reuseB = nullptr); static wmma_f16_16x16x64_bf8_fp8 create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::Value a, ::mlir::Value b, ::mlir::ROCDL::WMMACModifierAttr modC, ::mlir::Value c, ::mlir::IntegerAttr reuseA, ::mlir::IntegerAttr reuseB = nullptr); static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::Type res, ::mlir::Value a, ::mlir::Value b, ::mlir::ROCDL::WMMACModifier modC, ::mlir::Value c, bool reuseA = 0, bool reuseB = 0); static wmma_f16_16x16x64_bf8_fp8 create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::Type res, ::mlir::Value a, ::mlir::Value b, ::mlir::ROCDL::WMMACModifier modC, ::mlir::Value c, bool reuseA = 0, bool reuseB = 0); static wmma_f16_16x16x64_bf8_fp8 create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::Type res, ::mlir::Value a, ::mlir::Value b, ::mlir::ROCDL::WMMACModifier modC, ::mlir::Value c, bool reuseA = 0, bool reuseB = 0); static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::Value a, ::mlir::Value b, ::mlir::ROCDL::WMMACModifier modC, ::mlir::Value c, bool reuseA = 0, bool reuseB = 0); static wmma_f16_16x16x64_bf8_fp8 create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::Value a, ::mlir::Value b, ::mlir::ROCDL::WMMACModifier modC, ::mlir::Value c, bool reuseA = 0, bool reuseB = 0); static wmma_f16_16x16x64_bf8_fp8 create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::Value a, ::mlir::Value b, ::mlir::ROCDL::WMMACModifier modC, ::mlir::Value c, bool reuseA = 0, bool reuseB = 0); static void build(::mlir::OpBuilder &, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, ::llvm::ArrayRef<::mlir::NamedAttribute> attributes = {}); static wmma_f16_16x16x64_bf8_fp8 create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, ::llvm::ArrayRef<::mlir::NamedAttribute> attributes = {}); static wmma_f16_16x16x64_bf8_fp8 create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, ::llvm::ArrayRef<::mlir::NamedAttribute> attributes = {}); static void build(::mlir::OpBuilder &, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, const Properties &properties, ::llvm::ArrayRef<::mlir::NamedAttribute> discardableAttributes = {}); static wmma_f16_16x16x64_bf8_fp8 create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, const Properties &properties, ::llvm::ArrayRef<::mlir::NamedAttribute> discardableAttributes = {}); static wmma_f16_16x16x64_bf8_fp8 create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, const Properties &properties, ::llvm::ArrayRef<::mlir::NamedAttribute> discardableAttributes = {}); static void populateDefaultProperties(::mlir::OperationName opName, Properties &properties); ::llvm::LogicalResult verifyInvariantsImpl(); ::llvm::LogicalResult verifyInvariants(); static ::mlir::ParseResult parse(::mlir::OpAsmParser &parser, ::mlir::OperationState &result); void print(::mlir::OpAsmPrinter &_odsPrinter); private: ::mlir::StringAttr getAttributeNameForIndex(unsigned index) { return getAttributeNameForIndex((*this)->getName(), index); } static ::mlir::StringAttr getAttributeNameForIndex(::mlir::OperationName name, unsigned index) { assert(index < 3 && "invalid attribute index"); assert(name.getStringRef() == getOperationName() && "invalid operation name"); assert(name.isRegistered() && "Operation isn't registered, missing a " "dependent dialect loading?"); return name.getAttributeNames()[index]; } public: }; } // namespace mlir::ROCDL MLIR_DECLARE_EXPLICIT_TYPE_ID(::mlir::ROCDL::wmma_f16_16x16x64_bf8_fp8) MLIR_DECLARE_EXPLICIT_TYPE_ID(::mlir::ROCDL::detail::wmma_f16_16x16x64_bf8_fp8GenericAdaptorBase::Properties) namespace mlir::ROCDL { //===----------------------------------------------------------------------===// // ::mlir::ROCDL::wmma_f16_16x16x64_fp8_bf8 declarations //===----------------------------------------------------------------------===// namespace detail { class wmma_f16_16x16x64_fp8_bf8GenericAdaptorBase { public: struct Properties { using modCTy = ::mlir::ROCDL::WMMACModifierAttr; modCTy modC; auto getModC() const { auto &propStorage = this->modC; return ::llvm::dyn_cast_or_null<::mlir::ROCDL::WMMACModifierAttr>(propStorage); } void setModC(const ::mlir::ROCDL::WMMACModifierAttr &propValue) { this->modC = propValue; } using reuseATy = ::mlir::IntegerAttr; reuseATy reuseA; auto getReuseA() const { auto &propStorage = this->reuseA; return ::llvm::dyn_cast_or_null<::mlir::IntegerAttr>(propStorage); } void setReuseA(const ::mlir::IntegerAttr &propValue) { this->reuseA = propValue; } using reuseBTy = ::mlir::IntegerAttr; reuseBTy reuseB; auto getReuseB() const { auto &propStorage = this->reuseB; return ::llvm::dyn_cast_or_null<::mlir::IntegerAttr>(propStorage); } void setReuseB(const ::mlir::IntegerAttr &propValue) { this->reuseB = propValue; } bool operator==(const Properties &rhs) const { return rhs.modC == this->modC && rhs.reuseA == this->reuseA && rhs.reuseB == this->reuseB && true; } bool operator!=(const Properties &rhs) const { return !(*this == rhs); } }; protected: ::mlir::DictionaryAttr odsAttrs; ::std::optional<::mlir::OperationName> odsOpName; Properties properties; ::mlir::RegionRange odsRegions; public: wmma_f16_16x16x64_fp8_bf8GenericAdaptorBase(::mlir::DictionaryAttr attrs, const Properties &properties, ::mlir::RegionRange regions = {}) : odsAttrs(attrs), properties(properties), odsRegions(regions) { if (odsAttrs) odsOpName.emplace("rocdl.wmma.f16.16x16x64.fp8_bf8", odsAttrs.getContext()); } wmma_f16_16x16x64_fp8_bf8GenericAdaptorBase(wmma_f16_16x16x64_fp8_bf8 op); std::pair getODSOperandIndexAndLength(unsigned index, unsigned odsOperandsSize) { return {index, 1}; } const Properties &getProperties() { return properties; } ::mlir::DictionaryAttr getAttributes() { return odsAttrs; } ::mlir::ROCDL::WMMACModifierAttr getModCAttr(); ::mlir::ROCDL::WMMACModifier getModC(); ::mlir::IntegerAttr getReuseAAttr(); bool getReuseA(); ::mlir::IntegerAttr getReuseBAttr(); bool getReuseB(); }; } // namespace detail template class wmma_f16_16x16x64_fp8_bf8GenericAdaptor : public detail::wmma_f16_16x16x64_fp8_bf8GenericAdaptorBase { using ValueT = ::llvm::detail::ValueOfRange; using Base = detail::wmma_f16_16x16x64_fp8_bf8GenericAdaptorBase; static constexpr int odsIndex_a = 0; static constexpr int odsIndex_b = 1; static constexpr int odsIndex_c = 2; public: wmma_f16_16x16x64_fp8_bf8GenericAdaptor(RangeT values, ::mlir::DictionaryAttr attrs, const Properties &properties, ::mlir::RegionRange regions = {}) : Base(attrs, properties, regions), odsOperands(values) {} wmma_f16_16x16x64_fp8_bf8GenericAdaptor(RangeT values, ::mlir::DictionaryAttr attrs, ::mlir::PropertyRef properties, ::mlir::RegionRange regions = {}) : wmma_f16_16x16x64_fp8_bf8GenericAdaptor(values, attrs, (properties ? *properties.as() : Properties{}), regions) {} wmma_f16_16x16x64_fp8_bf8GenericAdaptor(RangeT values, ::mlir::DictionaryAttr attrs = nullptr) : wmma_f16_16x16x64_fp8_bf8GenericAdaptor(values, attrs, Properties{}, {}) {} wmma_f16_16x16x64_fp8_bf8GenericAdaptor(RangeT values, const wmma_f16_16x16x64_fp8_bf8GenericAdaptorBase &base) : Base(base), odsOperands(values) {} template >> wmma_f16_16x16x64_fp8_bf8GenericAdaptor(RangeT values, LateInst op) : Base(op), odsOperands(values) {} std::pair getODSOperandIndexAndLength(unsigned index) { return Base::getODSOperandIndexAndLength(index, odsOperands.size()); } RangeT getODSOperands(unsigned index) { auto valueRange = getODSOperandIndexAndLength(index); return {std::next(odsOperands.begin(), valueRange.first), std::next(odsOperands.begin(), valueRange.first + valueRange.second)}; } ValueT getA() { return (*getODSOperands(0).begin()); } ValueT getB() { return (*getODSOperands(1).begin()); } ValueT getC() { return (*getODSOperands(2).begin()); } RangeT getOperands() { return odsOperands; } private: RangeT odsOperands; }; class wmma_f16_16x16x64_fp8_bf8Adaptor : public wmma_f16_16x16x64_fp8_bf8GenericAdaptor<::mlir::ValueRange> { public: using wmma_f16_16x16x64_fp8_bf8GenericAdaptor::wmma_f16_16x16x64_fp8_bf8GenericAdaptor; wmma_f16_16x16x64_fp8_bf8Adaptor(wmma_f16_16x16x64_fp8_bf8 op); ::llvm::LogicalResult verify(::mlir::Location loc); }; class wmma_f16_16x16x64_fp8_bf8 : public ::mlir::Op::Impl, ::mlir::OpTrait::ZeroSuccessors, ::mlir::OpTrait::NOperands<3>::Impl, ::mlir::OpTrait::OpInvariants, ::mlir::BytecodeOpInterface::Trait> { public: using Op::Op; using Op::print; using Adaptor = wmma_f16_16x16x64_fp8_bf8Adaptor; template using GenericAdaptor = wmma_f16_16x16x64_fp8_bf8GenericAdaptor; using FoldAdaptor = GenericAdaptor<::llvm::ArrayRef<::mlir::Attribute>>; static constexpr int odsIndex_a = 0; static constexpr int odsIndex_b = 1; static constexpr int odsIndex_c = 2; using Properties = FoldAdaptor::Properties; static ::llvm::ArrayRef<::llvm::StringRef> getAttributeNames() { static ::llvm::StringRef attrNames[] = {::llvm::StringRef("modC"), ::llvm::StringRef("reuseA"), ::llvm::StringRef("reuseB")}; return ::llvm::ArrayRef(attrNames); } ::mlir::StringAttr getModCAttrName() { return getAttributeNameForIndex(0); } static ::mlir::StringAttr getModCAttrName(::mlir::OperationName name) { return getAttributeNameForIndex(name, 0); } ::mlir::StringAttr getReuseAAttrName() { return getAttributeNameForIndex(1); } static ::mlir::StringAttr getReuseAAttrName(::mlir::OperationName name) { return getAttributeNameForIndex(name, 1); } ::mlir::StringAttr getReuseBAttrName() { return getAttributeNameForIndex(2); } static ::mlir::StringAttr getReuseBAttrName(::mlir::OperationName name) { return getAttributeNameForIndex(name, 2); } static constexpr ::llvm::StringLiteral getOperationName() { return ::llvm::StringLiteral("rocdl.wmma.f16.16x16x64.fp8_bf8"); } std::pair getODSOperandIndexAndLength(unsigned index) { return {index, 1}; } ::mlir::Operation::operand_range getODSOperands(unsigned index) { auto valueRange = getODSOperandIndexAndLength(index); return {std::next(getOperation()->operand_begin(), valueRange.first), std::next(getOperation()->operand_begin(), valueRange.first + valueRange.second)}; } ::mlir::TypedValue<::mlir::Type> getA() { return ::llvm::cast<::mlir::TypedValue<::mlir::Type>>(*getODSOperands(0).begin()); } ::mlir::TypedValue<::mlir::Type> getB() { return ::llvm::cast<::mlir::TypedValue<::mlir::Type>>(*getODSOperands(1).begin()); } ::mlir::TypedValue<::mlir::Type> getC() { return ::llvm::cast<::mlir::TypedValue<::mlir::Type>>(*getODSOperands(2).begin()); } ::mlir::OpOperand &getAMutable() { auto range = getODSOperandIndexAndLength(0); return getOperation()->getOpOperand(range.first); } ::mlir::OpOperand &getBMutable() { auto range = getODSOperandIndexAndLength(1); return getOperation()->getOpOperand(range.first); } ::mlir::OpOperand &getCMutable() { auto range = getODSOperandIndexAndLength(2); return getOperation()->getOpOperand(range.first); } std::pair getODSResultIndexAndLength(unsigned index) { return {index, 1}; } ::mlir::Operation::result_range getODSResults(unsigned index) { auto valueRange = getODSResultIndexAndLength(index); return {std::next(getOperation()->result_begin(), valueRange.first), std::next(getOperation()->result_begin(), valueRange.first + valueRange.second)}; } ::mlir::TypedValue<::mlir::Type> getRes() { return ::llvm::cast<::mlir::TypedValue<::mlir::Type>>(*getODSResults(0).begin()); } static ::llvm::LogicalResult setPropertiesFromAttr(Properties &prop, ::mlir::Attribute attr, ::llvm::function_ref<::mlir::InFlightDiagnostic()> emitError); static ::mlir::Attribute getPropertiesAsAttr(::mlir::MLIRContext *ctx, const Properties &prop); static llvm::hash_code computePropertiesHash(const Properties &prop); static std::optional getInherentAttr(::mlir::MLIRContext *ctx, const Properties &prop, llvm::StringRef name); static void setInherentAttr(Properties &prop, llvm::StringRef name, mlir::Attribute value); static void populateInherentAttrs(::mlir::MLIRContext *ctx, const Properties &prop, ::mlir::NamedAttrList &attrs); static ::llvm::LogicalResult verifyInherentAttrs(::mlir::OperationName opName, ::mlir::NamedAttrList &attrs, llvm::function_ref<::mlir::InFlightDiagnostic()> emitError); static ::llvm::LogicalResult readProperties(::mlir::DialectBytecodeReader &reader, ::mlir::OperationState &state); void writeProperties(::mlir::DialectBytecodeWriter &writer); ::mlir::ROCDL::WMMACModifierAttr getModCAttr() { return ::llvm::dyn_cast_or_null<::mlir::ROCDL::WMMACModifierAttr>(getProperties().modC); } ::mlir::ROCDL::WMMACModifier getModC(); ::mlir::IntegerAttr getReuseAAttr() { return ::llvm::dyn_cast_or_null<::mlir::IntegerAttr>(getProperties().reuseA); } bool getReuseA(); ::mlir::IntegerAttr getReuseBAttr() { return ::llvm::dyn_cast_or_null<::mlir::IntegerAttr>(getProperties().reuseB); } bool getReuseB(); void setModCAttr(::mlir::ROCDL::WMMACModifierAttr attr) { getProperties().modC = attr; } void setModC(::mlir::ROCDL::WMMACModifier attrValue); void setReuseAAttr(::mlir::IntegerAttr attr) { getProperties().reuseA = attr; } void setReuseA(bool attrValue); void setReuseBAttr(::mlir::IntegerAttr attr) { getProperties().reuseB = attr; } void setReuseB(bool attrValue); static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::Type res, ::mlir::Value a, ::mlir::Value b, ::mlir::ROCDL::WMMACModifierAttr modC, ::mlir::Value c, ::mlir::IntegerAttr reuseA, ::mlir::IntegerAttr reuseB = nullptr); static wmma_f16_16x16x64_fp8_bf8 create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::Type res, ::mlir::Value a, ::mlir::Value b, ::mlir::ROCDL::WMMACModifierAttr modC, ::mlir::Value c, ::mlir::IntegerAttr reuseA, ::mlir::IntegerAttr reuseB = nullptr); static wmma_f16_16x16x64_fp8_bf8 create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::Type res, ::mlir::Value a, ::mlir::Value b, ::mlir::ROCDL::WMMACModifierAttr modC, ::mlir::Value c, ::mlir::IntegerAttr reuseA, ::mlir::IntegerAttr reuseB = nullptr); static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::Value a, ::mlir::Value b, ::mlir::ROCDL::WMMACModifierAttr modC, ::mlir::Value c, ::mlir::IntegerAttr reuseA, ::mlir::IntegerAttr reuseB = nullptr); static wmma_f16_16x16x64_fp8_bf8 create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::Value a, ::mlir::Value b, ::mlir::ROCDL::WMMACModifierAttr modC, ::mlir::Value c, ::mlir::IntegerAttr reuseA, ::mlir::IntegerAttr reuseB = nullptr); static wmma_f16_16x16x64_fp8_bf8 create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::Value a, ::mlir::Value b, ::mlir::ROCDL::WMMACModifierAttr modC, ::mlir::Value c, ::mlir::IntegerAttr reuseA, ::mlir::IntegerAttr reuseB = nullptr); static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::Type res, ::mlir::Value a, ::mlir::Value b, ::mlir::ROCDL::WMMACModifier modC, ::mlir::Value c, bool reuseA = 0, bool reuseB = 0); static wmma_f16_16x16x64_fp8_bf8 create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::Type res, ::mlir::Value a, ::mlir::Value b, ::mlir::ROCDL::WMMACModifier modC, ::mlir::Value c, bool reuseA = 0, bool reuseB = 0); static wmma_f16_16x16x64_fp8_bf8 create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::Type res, ::mlir::Value a, ::mlir::Value b, ::mlir::ROCDL::WMMACModifier modC, ::mlir::Value c, bool reuseA = 0, bool reuseB = 0); static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::Value a, ::mlir::Value b, ::mlir::ROCDL::WMMACModifier modC, ::mlir::Value c, bool reuseA = 0, bool reuseB = 0); static wmma_f16_16x16x64_fp8_bf8 create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::Value a, ::mlir::Value b, ::mlir::ROCDL::WMMACModifier modC, ::mlir::Value c, bool reuseA = 0, bool reuseB = 0); static wmma_f16_16x16x64_fp8_bf8 create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::Value a, ::mlir::Value b, ::mlir::ROCDL::WMMACModifier modC, ::mlir::Value c, bool reuseA = 0, bool reuseB = 0); static void build(::mlir::OpBuilder &, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, ::llvm::ArrayRef<::mlir::NamedAttribute> attributes = {}); static wmma_f16_16x16x64_fp8_bf8 create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, ::llvm::ArrayRef<::mlir::NamedAttribute> attributes = {}); static wmma_f16_16x16x64_fp8_bf8 create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, ::llvm::ArrayRef<::mlir::NamedAttribute> attributes = {}); static void build(::mlir::OpBuilder &, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, const Properties &properties, ::llvm::ArrayRef<::mlir::NamedAttribute> discardableAttributes = {}); static wmma_f16_16x16x64_fp8_bf8 create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, const Properties &properties, ::llvm::ArrayRef<::mlir::NamedAttribute> discardableAttributes = {}); static wmma_f16_16x16x64_fp8_bf8 create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, const Properties &properties, ::llvm::ArrayRef<::mlir::NamedAttribute> discardableAttributes = {}); static void populateDefaultProperties(::mlir::OperationName opName, Properties &properties); ::llvm::LogicalResult verifyInvariantsImpl(); ::llvm::LogicalResult verifyInvariants(); static ::mlir::ParseResult parse(::mlir::OpAsmParser &parser, ::mlir::OperationState &result); void print(::mlir::OpAsmPrinter &_odsPrinter); private: ::mlir::StringAttr getAttributeNameForIndex(unsigned index) { return getAttributeNameForIndex((*this)->getName(), index); } static ::mlir::StringAttr getAttributeNameForIndex(::mlir::OperationName name, unsigned index) { assert(index < 3 && "invalid attribute index"); assert(name.getStringRef() == getOperationName() && "invalid operation name"); assert(name.isRegistered() && "Operation isn't registered, missing a " "dependent dialect loading?"); return name.getAttributeNames()[index]; } public: }; } // namespace mlir::ROCDL MLIR_DECLARE_EXPLICIT_TYPE_ID(::mlir::ROCDL::wmma_f16_16x16x64_fp8_bf8) MLIR_DECLARE_EXPLICIT_TYPE_ID(::mlir::ROCDL::detail::wmma_f16_16x16x64_fp8_bf8GenericAdaptorBase::Properties) namespace mlir::ROCDL { //===----------------------------------------------------------------------===// // ::mlir::ROCDL::wmma_f16_16x16x64_fp8_fp8 declarations //===----------------------------------------------------------------------===// namespace detail { class wmma_f16_16x16x64_fp8_fp8GenericAdaptorBase { public: struct Properties { using modCTy = ::mlir::ROCDL::WMMACModifierAttr; modCTy modC; auto getModC() const { auto &propStorage = this->modC; return ::llvm::dyn_cast_or_null<::mlir::ROCDL::WMMACModifierAttr>(propStorage); } void setModC(const ::mlir::ROCDL::WMMACModifierAttr &propValue) { this->modC = propValue; } using reuseATy = ::mlir::IntegerAttr; reuseATy reuseA; auto getReuseA() const { auto &propStorage = this->reuseA; return ::llvm::dyn_cast_or_null<::mlir::IntegerAttr>(propStorage); } void setReuseA(const ::mlir::IntegerAttr &propValue) { this->reuseA = propValue; } using reuseBTy = ::mlir::IntegerAttr; reuseBTy reuseB; auto getReuseB() const { auto &propStorage = this->reuseB; return ::llvm::dyn_cast_or_null<::mlir::IntegerAttr>(propStorage); } void setReuseB(const ::mlir::IntegerAttr &propValue) { this->reuseB = propValue; } bool operator==(const Properties &rhs) const { return rhs.modC == this->modC && rhs.reuseA == this->reuseA && rhs.reuseB == this->reuseB && true; } bool operator!=(const Properties &rhs) const { return !(*this == rhs); } }; protected: ::mlir::DictionaryAttr odsAttrs; ::std::optional<::mlir::OperationName> odsOpName; Properties properties; ::mlir::RegionRange odsRegions; public: wmma_f16_16x16x64_fp8_fp8GenericAdaptorBase(::mlir::DictionaryAttr attrs, const Properties &properties, ::mlir::RegionRange regions = {}) : odsAttrs(attrs), properties(properties), odsRegions(regions) { if (odsAttrs) odsOpName.emplace("rocdl.wmma.f16.16x16x64.fp8_fp8", odsAttrs.getContext()); } wmma_f16_16x16x64_fp8_fp8GenericAdaptorBase(wmma_f16_16x16x64_fp8_fp8 op); std::pair getODSOperandIndexAndLength(unsigned index, unsigned odsOperandsSize) { return {index, 1}; } const Properties &getProperties() { return properties; } ::mlir::DictionaryAttr getAttributes() { return odsAttrs; } ::mlir::ROCDL::WMMACModifierAttr getModCAttr(); ::mlir::ROCDL::WMMACModifier getModC(); ::mlir::IntegerAttr getReuseAAttr(); bool getReuseA(); ::mlir::IntegerAttr getReuseBAttr(); bool getReuseB(); }; } // namespace detail template class wmma_f16_16x16x64_fp8_fp8GenericAdaptor : public detail::wmma_f16_16x16x64_fp8_fp8GenericAdaptorBase { using ValueT = ::llvm::detail::ValueOfRange; using Base = detail::wmma_f16_16x16x64_fp8_fp8GenericAdaptorBase; static constexpr int odsIndex_a = 0; static constexpr int odsIndex_b = 1; static constexpr int odsIndex_c = 2; public: wmma_f16_16x16x64_fp8_fp8GenericAdaptor(RangeT values, ::mlir::DictionaryAttr attrs, const Properties &properties, ::mlir::RegionRange regions = {}) : Base(attrs, properties, regions), odsOperands(values) {} wmma_f16_16x16x64_fp8_fp8GenericAdaptor(RangeT values, ::mlir::DictionaryAttr attrs, ::mlir::PropertyRef properties, ::mlir::RegionRange regions = {}) : wmma_f16_16x16x64_fp8_fp8GenericAdaptor(values, attrs, (properties ? *properties.as() : Properties{}), regions) {} wmma_f16_16x16x64_fp8_fp8GenericAdaptor(RangeT values, ::mlir::DictionaryAttr attrs = nullptr) : wmma_f16_16x16x64_fp8_fp8GenericAdaptor(values, attrs, Properties{}, {}) {} wmma_f16_16x16x64_fp8_fp8GenericAdaptor(RangeT values, const wmma_f16_16x16x64_fp8_fp8GenericAdaptorBase &base) : Base(base), odsOperands(values) {} template >> wmma_f16_16x16x64_fp8_fp8GenericAdaptor(RangeT values, LateInst op) : Base(op), odsOperands(values) {} std::pair getODSOperandIndexAndLength(unsigned index) { return Base::getODSOperandIndexAndLength(index, odsOperands.size()); } RangeT getODSOperands(unsigned index) { auto valueRange = getODSOperandIndexAndLength(index); return {std::next(odsOperands.begin(), valueRange.first), std::next(odsOperands.begin(), valueRange.first + valueRange.second)}; } ValueT getA() { return (*getODSOperands(0).begin()); } ValueT getB() { return (*getODSOperands(1).begin()); } ValueT getC() { return (*getODSOperands(2).begin()); } RangeT getOperands() { return odsOperands; } private: RangeT odsOperands; }; class wmma_f16_16x16x64_fp8_fp8Adaptor : public wmma_f16_16x16x64_fp8_fp8GenericAdaptor<::mlir::ValueRange> { public: using wmma_f16_16x16x64_fp8_fp8GenericAdaptor::wmma_f16_16x16x64_fp8_fp8GenericAdaptor; wmma_f16_16x16x64_fp8_fp8Adaptor(wmma_f16_16x16x64_fp8_fp8 op); ::llvm::LogicalResult verify(::mlir::Location loc); }; class wmma_f16_16x16x64_fp8_fp8 : public ::mlir::Op::Impl, ::mlir::OpTrait::ZeroSuccessors, ::mlir::OpTrait::NOperands<3>::Impl, ::mlir::OpTrait::OpInvariants, ::mlir::BytecodeOpInterface::Trait> { public: using Op::Op; using Op::print; using Adaptor = wmma_f16_16x16x64_fp8_fp8Adaptor; template using GenericAdaptor = wmma_f16_16x16x64_fp8_fp8GenericAdaptor; using FoldAdaptor = GenericAdaptor<::llvm::ArrayRef<::mlir::Attribute>>; static constexpr int odsIndex_a = 0; static constexpr int odsIndex_b = 1; static constexpr int odsIndex_c = 2; using Properties = FoldAdaptor::Properties; static ::llvm::ArrayRef<::llvm::StringRef> getAttributeNames() { static ::llvm::StringRef attrNames[] = {::llvm::StringRef("modC"), ::llvm::StringRef("reuseA"), ::llvm::StringRef("reuseB")}; return ::llvm::ArrayRef(attrNames); } ::mlir::StringAttr getModCAttrName() { return getAttributeNameForIndex(0); } static ::mlir::StringAttr getModCAttrName(::mlir::OperationName name) { return getAttributeNameForIndex(name, 0); } ::mlir::StringAttr getReuseAAttrName() { return getAttributeNameForIndex(1); } static ::mlir::StringAttr getReuseAAttrName(::mlir::OperationName name) { return getAttributeNameForIndex(name, 1); } ::mlir::StringAttr getReuseBAttrName() { return getAttributeNameForIndex(2); } static ::mlir::StringAttr getReuseBAttrName(::mlir::OperationName name) { return getAttributeNameForIndex(name, 2); } static constexpr ::llvm::StringLiteral getOperationName() { return ::llvm::StringLiteral("rocdl.wmma.f16.16x16x64.fp8_fp8"); } std::pair getODSOperandIndexAndLength(unsigned index) { return {index, 1}; } ::mlir::Operation::operand_range getODSOperands(unsigned index) { auto valueRange = getODSOperandIndexAndLength(index); return {std::next(getOperation()->operand_begin(), valueRange.first), std::next(getOperation()->operand_begin(), valueRange.first + valueRange.second)}; } ::mlir::TypedValue<::mlir::Type> getA() { return ::llvm::cast<::mlir::TypedValue<::mlir::Type>>(*getODSOperands(0).begin()); } ::mlir::TypedValue<::mlir::Type> getB() { return ::llvm::cast<::mlir::TypedValue<::mlir::Type>>(*getODSOperands(1).begin()); } ::mlir::TypedValue<::mlir::Type> getC() { return ::llvm::cast<::mlir::TypedValue<::mlir::Type>>(*getODSOperands(2).begin()); } ::mlir::OpOperand &getAMutable() { auto range = getODSOperandIndexAndLength(0); return getOperation()->getOpOperand(range.first); } ::mlir::OpOperand &getBMutable() { auto range = getODSOperandIndexAndLength(1); return getOperation()->getOpOperand(range.first); } ::mlir::OpOperand &getCMutable() { auto range = getODSOperandIndexAndLength(2); return getOperation()->getOpOperand(range.first); } std::pair getODSResultIndexAndLength(unsigned index) { return {index, 1}; } ::mlir::Operation::result_range getODSResults(unsigned index) { auto valueRange = getODSResultIndexAndLength(index); return {std::next(getOperation()->result_begin(), valueRange.first), std::next(getOperation()->result_begin(), valueRange.first + valueRange.second)}; } ::mlir::TypedValue<::mlir::Type> getRes() { return ::llvm::cast<::mlir::TypedValue<::mlir::Type>>(*getODSResults(0).begin()); } static ::llvm::LogicalResult setPropertiesFromAttr(Properties &prop, ::mlir::Attribute attr, ::llvm::function_ref<::mlir::InFlightDiagnostic()> emitError); static ::mlir::Attribute getPropertiesAsAttr(::mlir::MLIRContext *ctx, const Properties &prop); static llvm::hash_code computePropertiesHash(const Properties &prop); static std::optional getInherentAttr(::mlir::MLIRContext *ctx, const Properties &prop, llvm::StringRef name); static void setInherentAttr(Properties &prop, llvm::StringRef name, mlir::Attribute value); static void populateInherentAttrs(::mlir::MLIRContext *ctx, const Properties &prop, ::mlir::NamedAttrList &attrs); static ::llvm::LogicalResult verifyInherentAttrs(::mlir::OperationName opName, ::mlir::NamedAttrList &attrs, llvm::function_ref<::mlir::InFlightDiagnostic()> emitError); static ::llvm::LogicalResult readProperties(::mlir::DialectBytecodeReader &reader, ::mlir::OperationState &state); void writeProperties(::mlir::DialectBytecodeWriter &writer); ::mlir::ROCDL::WMMACModifierAttr getModCAttr() { return ::llvm::dyn_cast_or_null<::mlir::ROCDL::WMMACModifierAttr>(getProperties().modC); } ::mlir::ROCDL::WMMACModifier getModC(); ::mlir::IntegerAttr getReuseAAttr() { return ::llvm::dyn_cast_or_null<::mlir::IntegerAttr>(getProperties().reuseA); } bool getReuseA(); ::mlir::IntegerAttr getReuseBAttr() { return ::llvm::dyn_cast_or_null<::mlir::IntegerAttr>(getProperties().reuseB); } bool getReuseB(); void setModCAttr(::mlir::ROCDL::WMMACModifierAttr attr) { getProperties().modC = attr; } void setModC(::mlir::ROCDL::WMMACModifier attrValue); void setReuseAAttr(::mlir::IntegerAttr attr) { getProperties().reuseA = attr; } void setReuseA(bool attrValue); void setReuseBAttr(::mlir::IntegerAttr attr) { getProperties().reuseB = attr; } void setReuseB(bool attrValue); static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::Type res, ::mlir::Value a, ::mlir::Value b, ::mlir::ROCDL::WMMACModifierAttr modC, ::mlir::Value c, ::mlir::IntegerAttr reuseA, ::mlir::IntegerAttr reuseB = nullptr); static wmma_f16_16x16x64_fp8_fp8 create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::Type res, ::mlir::Value a, ::mlir::Value b, ::mlir::ROCDL::WMMACModifierAttr modC, ::mlir::Value c, ::mlir::IntegerAttr reuseA, ::mlir::IntegerAttr reuseB = nullptr); static wmma_f16_16x16x64_fp8_fp8 create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::Type res, ::mlir::Value a, ::mlir::Value b, ::mlir::ROCDL::WMMACModifierAttr modC, ::mlir::Value c, ::mlir::IntegerAttr reuseA, ::mlir::IntegerAttr reuseB = nullptr); static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::Value a, ::mlir::Value b, ::mlir::ROCDL::WMMACModifierAttr modC, ::mlir::Value c, ::mlir::IntegerAttr reuseA, ::mlir::IntegerAttr reuseB = nullptr); static wmma_f16_16x16x64_fp8_fp8 create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::Value a, ::mlir::Value b, ::mlir::ROCDL::WMMACModifierAttr modC, ::mlir::Value c, ::mlir::IntegerAttr reuseA, ::mlir::IntegerAttr reuseB = nullptr); static wmma_f16_16x16x64_fp8_fp8 create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::Value a, ::mlir::Value b, ::mlir::ROCDL::WMMACModifierAttr modC, ::mlir::Value c, ::mlir::IntegerAttr reuseA, ::mlir::IntegerAttr reuseB = nullptr); static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::Type res, ::mlir::Value a, ::mlir::Value b, ::mlir::ROCDL::WMMACModifier modC, ::mlir::Value c, bool reuseA = 0, bool reuseB = 0); static wmma_f16_16x16x64_fp8_fp8 create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::Type res, ::mlir::Value a, ::mlir::Value b, ::mlir::ROCDL::WMMACModifier modC, ::mlir::Value c, bool reuseA = 0, bool reuseB = 0); static wmma_f16_16x16x64_fp8_fp8 create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::Type res, ::mlir::Value a, ::mlir::Value b, ::mlir::ROCDL::WMMACModifier modC, ::mlir::Value c, bool reuseA = 0, bool reuseB = 0); static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::Value a, ::mlir::Value b, ::mlir::ROCDL::WMMACModifier modC, ::mlir::Value c, bool reuseA = 0, bool reuseB = 0); static wmma_f16_16x16x64_fp8_fp8 create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::Value a, ::mlir::Value b, ::mlir::ROCDL::WMMACModifier modC, ::mlir::Value c, bool reuseA = 0, bool reuseB = 0); static wmma_f16_16x16x64_fp8_fp8 create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::Value a, ::mlir::Value b, ::mlir::ROCDL::WMMACModifier modC, ::mlir::Value c, bool reuseA = 0, bool reuseB = 0); static void build(::mlir::OpBuilder &, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, ::llvm::ArrayRef<::mlir::NamedAttribute> attributes = {}); static wmma_f16_16x16x64_fp8_fp8 create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, ::llvm::ArrayRef<::mlir::NamedAttribute> attributes = {}); static wmma_f16_16x16x64_fp8_fp8 create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, ::llvm::ArrayRef<::mlir::NamedAttribute> attributes = {}); static void build(::mlir::OpBuilder &, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, const Properties &properties, ::llvm::ArrayRef<::mlir::NamedAttribute> discardableAttributes = {}); static wmma_f16_16x16x64_fp8_fp8 create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, const Properties &properties, ::llvm::ArrayRef<::mlir::NamedAttribute> discardableAttributes = {}); static wmma_f16_16x16x64_fp8_fp8 create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, const Properties &properties, ::llvm::ArrayRef<::mlir::NamedAttribute> discardableAttributes = {}); static void populateDefaultProperties(::mlir::OperationName opName, Properties &properties); ::llvm::LogicalResult verifyInvariantsImpl(); ::llvm::LogicalResult verifyInvariants(); static ::mlir::ParseResult parse(::mlir::OpAsmParser &parser, ::mlir::OperationState &result); void print(::mlir::OpAsmPrinter &_odsPrinter); private: ::mlir::StringAttr getAttributeNameForIndex(unsigned index) { return getAttributeNameForIndex((*this)->getName(), index); } static ::mlir::StringAttr getAttributeNameForIndex(::mlir::OperationName name, unsigned index) { assert(index < 3 && "invalid attribute index"); assert(name.getStringRef() == getOperationName() && "invalid operation name"); assert(name.isRegistered() && "Operation isn't registered, missing a " "dependent dialect loading?"); return name.getAttributeNames()[index]; } public: }; } // namespace mlir::ROCDL MLIR_DECLARE_EXPLICIT_TYPE_ID(::mlir::ROCDL::wmma_f16_16x16x64_fp8_fp8) MLIR_DECLARE_EXPLICIT_TYPE_ID(::mlir::ROCDL::detail::wmma_f16_16x16x64_fp8_fp8GenericAdaptorBase::Properties) namespace mlir::ROCDL { //===----------------------------------------------------------------------===// // ::mlir::ROCDL::wmma_f32_16x16x128_bf8_bf8 declarations //===----------------------------------------------------------------------===// namespace detail { class wmma_f32_16x16x128_bf8_bf8GenericAdaptorBase { public: struct Properties { using modCTy = ::mlir::ROCDL::WMMACModifierAttr; modCTy modC; auto getModC() const { auto &propStorage = this->modC; return ::llvm::dyn_cast_or_null<::mlir::ROCDL::WMMACModifierAttr>(propStorage); } void setModC(const ::mlir::ROCDL::WMMACModifierAttr &propValue) { this->modC = propValue; } using reuseATy = ::mlir::IntegerAttr; reuseATy reuseA; auto getReuseA() const { auto &propStorage = this->reuseA; return ::llvm::dyn_cast_or_null<::mlir::IntegerAttr>(propStorage); } void setReuseA(const ::mlir::IntegerAttr &propValue) { this->reuseA = propValue; } using reuseBTy = ::mlir::IntegerAttr; reuseBTy reuseB; auto getReuseB() const { auto &propStorage = this->reuseB; return ::llvm::dyn_cast_or_null<::mlir::IntegerAttr>(propStorage); } void setReuseB(const ::mlir::IntegerAttr &propValue) { this->reuseB = propValue; } bool operator==(const Properties &rhs) const { return rhs.modC == this->modC && rhs.reuseA == this->reuseA && rhs.reuseB == this->reuseB && true; } bool operator!=(const Properties &rhs) const { return !(*this == rhs); } }; protected: ::mlir::DictionaryAttr odsAttrs; ::std::optional<::mlir::OperationName> odsOpName; Properties properties; ::mlir::RegionRange odsRegions; public: wmma_f32_16x16x128_bf8_bf8GenericAdaptorBase(::mlir::DictionaryAttr attrs, const Properties &properties, ::mlir::RegionRange regions = {}) : odsAttrs(attrs), properties(properties), odsRegions(regions) { if (odsAttrs) odsOpName.emplace("rocdl.wmma.f32.16x16x128.bf8_bf8", odsAttrs.getContext()); } wmma_f32_16x16x128_bf8_bf8GenericAdaptorBase(wmma_f32_16x16x128_bf8_bf8 op); std::pair getODSOperandIndexAndLength(unsigned index, unsigned odsOperandsSize) { return {index, 1}; } const Properties &getProperties() { return properties; } ::mlir::DictionaryAttr getAttributes() { return odsAttrs; } ::mlir::ROCDL::WMMACModifierAttr getModCAttr(); ::mlir::ROCDL::WMMACModifier getModC(); ::mlir::IntegerAttr getReuseAAttr(); bool getReuseA(); ::mlir::IntegerAttr getReuseBAttr(); bool getReuseB(); }; } // namespace detail template class wmma_f32_16x16x128_bf8_bf8GenericAdaptor : public detail::wmma_f32_16x16x128_bf8_bf8GenericAdaptorBase { using ValueT = ::llvm::detail::ValueOfRange; using Base = detail::wmma_f32_16x16x128_bf8_bf8GenericAdaptorBase; static constexpr int odsIndex_a = 0; static constexpr int odsIndex_b = 1; static constexpr int odsIndex_c = 2; public: wmma_f32_16x16x128_bf8_bf8GenericAdaptor(RangeT values, ::mlir::DictionaryAttr attrs, const Properties &properties, ::mlir::RegionRange regions = {}) : Base(attrs, properties, regions), odsOperands(values) {} wmma_f32_16x16x128_bf8_bf8GenericAdaptor(RangeT values, ::mlir::DictionaryAttr attrs, ::mlir::PropertyRef properties, ::mlir::RegionRange regions = {}) : wmma_f32_16x16x128_bf8_bf8GenericAdaptor(values, attrs, (properties ? *properties.as() : Properties{}), regions) {} wmma_f32_16x16x128_bf8_bf8GenericAdaptor(RangeT values, ::mlir::DictionaryAttr attrs = nullptr) : wmma_f32_16x16x128_bf8_bf8GenericAdaptor(values, attrs, Properties{}, {}) {} wmma_f32_16x16x128_bf8_bf8GenericAdaptor(RangeT values, const wmma_f32_16x16x128_bf8_bf8GenericAdaptorBase &base) : Base(base), odsOperands(values) {} template >> wmma_f32_16x16x128_bf8_bf8GenericAdaptor(RangeT values, LateInst op) : Base(op), odsOperands(values) {} std::pair getODSOperandIndexAndLength(unsigned index) { return Base::getODSOperandIndexAndLength(index, odsOperands.size()); } RangeT getODSOperands(unsigned index) { auto valueRange = getODSOperandIndexAndLength(index); return {std::next(odsOperands.begin(), valueRange.first), std::next(odsOperands.begin(), valueRange.first + valueRange.second)}; } ValueT getA() { return (*getODSOperands(0).begin()); } ValueT getB() { return (*getODSOperands(1).begin()); } ValueT getC() { return (*getODSOperands(2).begin()); } RangeT getOperands() { return odsOperands; } private: RangeT odsOperands; }; class wmma_f32_16x16x128_bf8_bf8Adaptor : public wmma_f32_16x16x128_bf8_bf8GenericAdaptor<::mlir::ValueRange> { public: using wmma_f32_16x16x128_bf8_bf8GenericAdaptor::wmma_f32_16x16x128_bf8_bf8GenericAdaptor; wmma_f32_16x16x128_bf8_bf8Adaptor(wmma_f32_16x16x128_bf8_bf8 op); ::llvm::LogicalResult verify(::mlir::Location loc); }; class wmma_f32_16x16x128_bf8_bf8 : public ::mlir::Op::Impl, ::mlir::OpTrait::ZeroSuccessors, ::mlir::OpTrait::NOperands<3>::Impl, ::mlir::OpTrait::OpInvariants, ::mlir::BytecodeOpInterface::Trait> { public: using Op::Op; using Op::print; using Adaptor = wmma_f32_16x16x128_bf8_bf8Adaptor; template using GenericAdaptor = wmma_f32_16x16x128_bf8_bf8GenericAdaptor; using FoldAdaptor = GenericAdaptor<::llvm::ArrayRef<::mlir::Attribute>>; static constexpr int odsIndex_a = 0; static constexpr int odsIndex_b = 1; static constexpr int odsIndex_c = 2; using Properties = FoldAdaptor::Properties; static ::llvm::ArrayRef<::llvm::StringRef> getAttributeNames() { static ::llvm::StringRef attrNames[] = {::llvm::StringRef("modC"), ::llvm::StringRef("reuseA"), ::llvm::StringRef("reuseB")}; return ::llvm::ArrayRef(attrNames); } ::mlir::StringAttr getModCAttrName() { return getAttributeNameForIndex(0); } static ::mlir::StringAttr getModCAttrName(::mlir::OperationName name) { return getAttributeNameForIndex(name, 0); } ::mlir::StringAttr getReuseAAttrName() { return getAttributeNameForIndex(1); } static ::mlir::StringAttr getReuseAAttrName(::mlir::OperationName name) { return getAttributeNameForIndex(name, 1); } ::mlir::StringAttr getReuseBAttrName() { return getAttributeNameForIndex(2); } static ::mlir::StringAttr getReuseBAttrName(::mlir::OperationName name) { return getAttributeNameForIndex(name, 2); } static constexpr ::llvm::StringLiteral getOperationName() { return ::llvm::StringLiteral("rocdl.wmma.f32.16x16x128.bf8_bf8"); } std::pair getODSOperandIndexAndLength(unsigned index) { return {index, 1}; } ::mlir::Operation::operand_range getODSOperands(unsigned index) { auto valueRange = getODSOperandIndexAndLength(index); return {std::next(getOperation()->operand_begin(), valueRange.first), std::next(getOperation()->operand_begin(), valueRange.first + valueRange.second)}; } ::mlir::TypedValue<::mlir::Type> getA() { return ::llvm::cast<::mlir::TypedValue<::mlir::Type>>(*getODSOperands(0).begin()); } ::mlir::TypedValue<::mlir::Type> getB() { return ::llvm::cast<::mlir::TypedValue<::mlir::Type>>(*getODSOperands(1).begin()); } ::mlir::TypedValue<::mlir::Type> getC() { return ::llvm::cast<::mlir::TypedValue<::mlir::Type>>(*getODSOperands(2).begin()); } ::mlir::OpOperand &getAMutable() { auto range = getODSOperandIndexAndLength(0); return getOperation()->getOpOperand(range.first); } ::mlir::OpOperand &getBMutable() { auto range = getODSOperandIndexAndLength(1); return getOperation()->getOpOperand(range.first); } ::mlir::OpOperand &getCMutable() { auto range = getODSOperandIndexAndLength(2); return getOperation()->getOpOperand(range.first); } std::pair getODSResultIndexAndLength(unsigned index) { return {index, 1}; } ::mlir::Operation::result_range getODSResults(unsigned index) { auto valueRange = getODSResultIndexAndLength(index); return {std::next(getOperation()->result_begin(), valueRange.first), std::next(getOperation()->result_begin(), valueRange.first + valueRange.second)}; } ::mlir::TypedValue<::mlir::Type> getRes() { return ::llvm::cast<::mlir::TypedValue<::mlir::Type>>(*getODSResults(0).begin()); } static ::llvm::LogicalResult setPropertiesFromAttr(Properties &prop, ::mlir::Attribute attr, ::llvm::function_ref<::mlir::InFlightDiagnostic()> emitError); static ::mlir::Attribute getPropertiesAsAttr(::mlir::MLIRContext *ctx, const Properties &prop); static llvm::hash_code computePropertiesHash(const Properties &prop); static std::optional getInherentAttr(::mlir::MLIRContext *ctx, const Properties &prop, llvm::StringRef name); static void setInherentAttr(Properties &prop, llvm::StringRef name, mlir::Attribute value); static void populateInherentAttrs(::mlir::MLIRContext *ctx, const Properties &prop, ::mlir::NamedAttrList &attrs); static ::llvm::LogicalResult verifyInherentAttrs(::mlir::OperationName opName, ::mlir::NamedAttrList &attrs, llvm::function_ref<::mlir::InFlightDiagnostic()> emitError); static ::llvm::LogicalResult readProperties(::mlir::DialectBytecodeReader &reader, ::mlir::OperationState &state); void writeProperties(::mlir::DialectBytecodeWriter &writer); ::mlir::ROCDL::WMMACModifierAttr getModCAttr() { return ::llvm::dyn_cast_or_null<::mlir::ROCDL::WMMACModifierAttr>(getProperties().modC); } ::mlir::ROCDL::WMMACModifier getModC(); ::mlir::IntegerAttr getReuseAAttr() { return ::llvm::dyn_cast_or_null<::mlir::IntegerAttr>(getProperties().reuseA); } bool getReuseA(); ::mlir::IntegerAttr getReuseBAttr() { return ::llvm::dyn_cast_or_null<::mlir::IntegerAttr>(getProperties().reuseB); } bool getReuseB(); void setModCAttr(::mlir::ROCDL::WMMACModifierAttr attr) { getProperties().modC = attr; } void setModC(::mlir::ROCDL::WMMACModifier attrValue); void setReuseAAttr(::mlir::IntegerAttr attr) { getProperties().reuseA = attr; } void setReuseA(bool attrValue); void setReuseBAttr(::mlir::IntegerAttr attr) { getProperties().reuseB = attr; } void setReuseB(bool attrValue); static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::Type res, ::mlir::Value a, ::mlir::Value b, ::mlir::ROCDL::WMMACModifierAttr modC, ::mlir::Value c, ::mlir::IntegerAttr reuseA, ::mlir::IntegerAttr reuseB = nullptr); static wmma_f32_16x16x128_bf8_bf8 create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::Type res, ::mlir::Value a, ::mlir::Value b, ::mlir::ROCDL::WMMACModifierAttr modC, ::mlir::Value c, ::mlir::IntegerAttr reuseA, ::mlir::IntegerAttr reuseB = nullptr); static wmma_f32_16x16x128_bf8_bf8 create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::Type res, ::mlir::Value a, ::mlir::Value b, ::mlir::ROCDL::WMMACModifierAttr modC, ::mlir::Value c, ::mlir::IntegerAttr reuseA, ::mlir::IntegerAttr reuseB = nullptr); static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::Value a, ::mlir::Value b, ::mlir::ROCDL::WMMACModifierAttr modC, ::mlir::Value c, ::mlir::IntegerAttr reuseA, ::mlir::IntegerAttr reuseB = nullptr); static wmma_f32_16x16x128_bf8_bf8 create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::Value a, ::mlir::Value b, ::mlir::ROCDL::WMMACModifierAttr modC, ::mlir::Value c, ::mlir::IntegerAttr reuseA, ::mlir::IntegerAttr reuseB = nullptr); static wmma_f32_16x16x128_bf8_bf8 create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::Value a, ::mlir::Value b, ::mlir::ROCDL::WMMACModifierAttr modC, ::mlir::Value c, ::mlir::IntegerAttr reuseA, ::mlir::IntegerAttr reuseB = nullptr); static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::Type res, ::mlir::Value a, ::mlir::Value b, ::mlir::ROCDL::WMMACModifier modC, ::mlir::Value c, bool reuseA = 0, bool reuseB = 0); static wmma_f32_16x16x128_bf8_bf8 create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::Type res, ::mlir::Value a, ::mlir::Value b, ::mlir::ROCDL::WMMACModifier modC, ::mlir::Value c, bool reuseA = 0, bool reuseB = 0); static wmma_f32_16x16x128_bf8_bf8 create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::Type res, ::mlir::Value a, ::mlir::Value b, ::mlir::ROCDL::WMMACModifier modC, ::mlir::Value c, bool reuseA = 0, bool reuseB = 0); static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::Value a, ::mlir::Value b, ::mlir::ROCDL::WMMACModifier modC, ::mlir::Value c, bool reuseA = 0, bool reuseB = 0); static wmma_f32_16x16x128_bf8_bf8 create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::Value a, ::mlir::Value b, ::mlir::ROCDL::WMMACModifier modC, ::mlir::Value c, bool reuseA = 0, bool reuseB = 0); static wmma_f32_16x16x128_bf8_bf8 create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::Value a, ::mlir::Value b, ::mlir::ROCDL::WMMACModifier modC, ::mlir::Value c, bool reuseA = 0, bool reuseB = 0); static void build(::mlir::OpBuilder &, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, ::llvm::ArrayRef<::mlir::NamedAttribute> attributes = {}); static wmma_f32_16x16x128_bf8_bf8 create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, ::llvm::ArrayRef<::mlir::NamedAttribute> attributes = {}); static wmma_f32_16x16x128_bf8_bf8 create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, ::llvm::ArrayRef<::mlir::NamedAttribute> attributes = {}); static void build(::mlir::OpBuilder &, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, const Properties &properties, ::llvm::ArrayRef<::mlir::NamedAttribute> discardableAttributes = {}); static wmma_f32_16x16x128_bf8_bf8 create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, const Properties &properties, ::llvm::ArrayRef<::mlir::NamedAttribute> discardableAttributes = {}); static wmma_f32_16x16x128_bf8_bf8 create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, const Properties &properties, ::llvm::ArrayRef<::mlir::NamedAttribute> discardableAttributes = {}); static void populateDefaultProperties(::mlir::OperationName opName, Properties &properties); ::llvm::LogicalResult verifyInvariantsImpl(); ::llvm::LogicalResult verifyInvariants(); static ::mlir::ParseResult parse(::mlir::OpAsmParser &parser, ::mlir::OperationState &result); void print(::mlir::OpAsmPrinter &_odsPrinter); private: ::mlir::StringAttr getAttributeNameForIndex(unsigned index) { return getAttributeNameForIndex((*this)->getName(), index); } static ::mlir::StringAttr getAttributeNameForIndex(::mlir::OperationName name, unsigned index) { assert(index < 3 && "invalid attribute index"); assert(name.getStringRef() == getOperationName() && "invalid operation name"); assert(name.isRegistered() && "Operation isn't registered, missing a " "dependent dialect loading?"); return name.getAttributeNames()[index]; } public: }; } // namespace mlir::ROCDL MLIR_DECLARE_EXPLICIT_TYPE_ID(::mlir::ROCDL::wmma_f32_16x16x128_bf8_bf8) MLIR_DECLARE_EXPLICIT_TYPE_ID(::mlir::ROCDL::detail::wmma_f32_16x16x128_bf8_bf8GenericAdaptorBase::Properties) namespace mlir::ROCDL { //===----------------------------------------------------------------------===// // ::mlir::ROCDL::wmma_f32_16x16x128_bf8_fp8 declarations //===----------------------------------------------------------------------===// namespace detail { class wmma_f32_16x16x128_bf8_fp8GenericAdaptorBase { public: struct Properties { using modCTy = ::mlir::ROCDL::WMMACModifierAttr; modCTy modC; auto getModC() const { auto &propStorage = this->modC; return ::llvm::dyn_cast_or_null<::mlir::ROCDL::WMMACModifierAttr>(propStorage); } void setModC(const ::mlir::ROCDL::WMMACModifierAttr &propValue) { this->modC = propValue; } using reuseATy = ::mlir::IntegerAttr; reuseATy reuseA; auto getReuseA() const { auto &propStorage = this->reuseA; return ::llvm::dyn_cast_or_null<::mlir::IntegerAttr>(propStorage); } void setReuseA(const ::mlir::IntegerAttr &propValue) { this->reuseA = propValue; } using reuseBTy = ::mlir::IntegerAttr; reuseBTy reuseB; auto getReuseB() const { auto &propStorage = this->reuseB; return ::llvm::dyn_cast_or_null<::mlir::IntegerAttr>(propStorage); } void setReuseB(const ::mlir::IntegerAttr &propValue) { this->reuseB = propValue; } bool operator==(const Properties &rhs) const { return rhs.modC == this->modC && rhs.reuseA == this->reuseA && rhs.reuseB == this->reuseB && true; } bool operator!=(const Properties &rhs) const { return !(*this == rhs); } }; protected: ::mlir::DictionaryAttr odsAttrs; ::std::optional<::mlir::OperationName> odsOpName; Properties properties; ::mlir::RegionRange odsRegions; public: wmma_f32_16x16x128_bf8_fp8GenericAdaptorBase(::mlir::DictionaryAttr attrs, const Properties &properties, ::mlir::RegionRange regions = {}) : odsAttrs(attrs), properties(properties), odsRegions(regions) { if (odsAttrs) odsOpName.emplace("rocdl.wmma.f32.16x16x128.bf8_fp8", odsAttrs.getContext()); } wmma_f32_16x16x128_bf8_fp8GenericAdaptorBase(wmma_f32_16x16x128_bf8_fp8 op); std::pair getODSOperandIndexAndLength(unsigned index, unsigned odsOperandsSize) { return {index, 1}; } const Properties &getProperties() { return properties; } ::mlir::DictionaryAttr getAttributes() { return odsAttrs; } ::mlir::ROCDL::WMMACModifierAttr getModCAttr(); ::mlir::ROCDL::WMMACModifier getModC(); ::mlir::IntegerAttr getReuseAAttr(); bool getReuseA(); ::mlir::IntegerAttr getReuseBAttr(); bool getReuseB(); }; } // namespace detail template class wmma_f32_16x16x128_bf8_fp8GenericAdaptor : public detail::wmma_f32_16x16x128_bf8_fp8GenericAdaptorBase { using ValueT = ::llvm::detail::ValueOfRange; using Base = detail::wmma_f32_16x16x128_bf8_fp8GenericAdaptorBase; static constexpr int odsIndex_a = 0; static constexpr int odsIndex_b = 1; static constexpr int odsIndex_c = 2; public: wmma_f32_16x16x128_bf8_fp8GenericAdaptor(RangeT values, ::mlir::DictionaryAttr attrs, const Properties &properties, ::mlir::RegionRange regions = {}) : Base(attrs, properties, regions), odsOperands(values) {} wmma_f32_16x16x128_bf8_fp8GenericAdaptor(RangeT values, ::mlir::DictionaryAttr attrs, ::mlir::PropertyRef properties, ::mlir::RegionRange regions = {}) : wmma_f32_16x16x128_bf8_fp8GenericAdaptor(values, attrs, (properties ? *properties.as() : Properties{}), regions) {} wmma_f32_16x16x128_bf8_fp8GenericAdaptor(RangeT values, ::mlir::DictionaryAttr attrs = nullptr) : wmma_f32_16x16x128_bf8_fp8GenericAdaptor(values, attrs, Properties{}, {}) {} wmma_f32_16x16x128_bf8_fp8GenericAdaptor(RangeT values, const wmma_f32_16x16x128_bf8_fp8GenericAdaptorBase &base) : Base(base), odsOperands(values) {} template >> wmma_f32_16x16x128_bf8_fp8GenericAdaptor(RangeT values, LateInst op) : Base(op), odsOperands(values) {} std::pair getODSOperandIndexAndLength(unsigned index) { return Base::getODSOperandIndexAndLength(index, odsOperands.size()); } RangeT getODSOperands(unsigned index) { auto valueRange = getODSOperandIndexAndLength(index); return {std::next(odsOperands.begin(), valueRange.first), std::next(odsOperands.begin(), valueRange.first + valueRange.second)}; } ValueT getA() { return (*getODSOperands(0).begin()); } ValueT getB() { return (*getODSOperands(1).begin()); } ValueT getC() { return (*getODSOperands(2).begin()); } RangeT getOperands() { return odsOperands; } private: RangeT odsOperands; }; class wmma_f32_16x16x128_bf8_fp8Adaptor : public wmma_f32_16x16x128_bf8_fp8GenericAdaptor<::mlir::ValueRange> { public: using wmma_f32_16x16x128_bf8_fp8GenericAdaptor::wmma_f32_16x16x128_bf8_fp8GenericAdaptor; wmma_f32_16x16x128_bf8_fp8Adaptor(wmma_f32_16x16x128_bf8_fp8 op); ::llvm::LogicalResult verify(::mlir::Location loc); }; class wmma_f32_16x16x128_bf8_fp8 : public ::mlir::Op::Impl, ::mlir::OpTrait::ZeroSuccessors, ::mlir::OpTrait::NOperands<3>::Impl, ::mlir::OpTrait::OpInvariants, ::mlir::BytecodeOpInterface::Trait> { public: using Op::Op; using Op::print; using Adaptor = wmma_f32_16x16x128_bf8_fp8Adaptor; template using GenericAdaptor = wmma_f32_16x16x128_bf8_fp8GenericAdaptor; using FoldAdaptor = GenericAdaptor<::llvm::ArrayRef<::mlir::Attribute>>; static constexpr int odsIndex_a = 0; static constexpr int odsIndex_b = 1; static constexpr int odsIndex_c = 2; using Properties = FoldAdaptor::Properties; static ::llvm::ArrayRef<::llvm::StringRef> getAttributeNames() { static ::llvm::StringRef attrNames[] = {::llvm::StringRef("modC"), ::llvm::StringRef("reuseA"), ::llvm::StringRef("reuseB")}; return ::llvm::ArrayRef(attrNames); } ::mlir::StringAttr getModCAttrName() { return getAttributeNameForIndex(0); } static ::mlir::StringAttr getModCAttrName(::mlir::OperationName name) { return getAttributeNameForIndex(name, 0); } ::mlir::StringAttr getReuseAAttrName() { return getAttributeNameForIndex(1); } static ::mlir::StringAttr getReuseAAttrName(::mlir::OperationName name) { return getAttributeNameForIndex(name, 1); } ::mlir::StringAttr getReuseBAttrName() { return getAttributeNameForIndex(2); } static ::mlir::StringAttr getReuseBAttrName(::mlir::OperationName name) { return getAttributeNameForIndex(name, 2); } static constexpr ::llvm::StringLiteral getOperationName() { return ::llvm::StringLiteral("rocdl.wmma.f32.16x16x128.bf8_fp8"); } std::pair getODSOperandIndexAndLength(unsigned index) { return {index, 1}; } ::mlir::Operation::operand_range getODSOperands(unsigned index) { auto valueRange = getODSOperandIndexAndLength(index); return {std::next(getOperation()->operand_begin(), valueRange.first), std::next(getOperation()->operand_begin(), valueRange.first + valueRange.second)}; } ::mlir::TypedValue<::mlir::Type> getA() { return ::llvm::cast<::mlir::TypedValue<::mlir::Type>>(*getODSOperands(0).begin()); } ::mlir::TypedValue<::mlir::Type> getB() { return ::llvm::cast<::mlir::TypedValue<::mlir::Type>>(*getODSOperands(1).begin()); } ::mlir::TypedValue<::mlir::Type> getC() { return ::llvm::cast<::mlir::TypedValue<::mlir::Type>>(*getODSOperands(2).begin()); } ::mlir::OpOperand &getAMutable() { auto range = getODSOperandIndexAndLength(0); return getOperation()->getOpOperand(range.first); } ::mlir::OpOperand &getBMutable() { auto range = getODSOperandIndexAndLength(1); return getOperation()->getOpOperand(range.first); } ::mlir::OpOperand &getCMutable() { auto range = getODSOperandIndexAndLength(2); return getOperation()->getOpOperand(range.first); } std::pair getODSResultIndexAndLength(unsigned index) { return {index, 1}; } ::mlir::Operation::result_range getODSResults(unsigned index) { auto valueRange = getODSResultIndexAndLength(index); return {std::next(getOperation()->result_begin(), valueRange.first), std::next(getOperation()->result_begin(), valueRange.first + valueRange.second)}; } ::mlir::TypedValue<::mlir::Type> getRes() { return ::llvm::cast<::mlir::TypedValue<::mlir::Type>>(*getODSResults(0).begin()); } static ::llvm::LogicalResult setPropertiesFromAttr(Properties &prop, ::mlir::Attribute attr, ::llvm::function_ref<::mlir::InFlightDiagnostic()> emitError); static ::mlir::Attribute getPropertiesAsAttr(::mlir::MLIRContext *ctx, const Properties &prop); static llvm::hash_code computePropertiesHash(const Properties &prop); static std::optional getInherentAttr(::mlir::MLIRContext *ctx, const Properties &prop, llvm::StringRef name); static void setInherentAttr(Properties &prop, llvm::StringRef name, mlir::Attribute value); static void populateInherentAttrs(::mlir::MLIRContext *ctx, const Properties &prop, ::mlir::NamedAttrList &attrs); static ::llvm::LogicalResult verifyInherentAttrs(::mlir::OperationName opName, ::mlir::NamedAttrList &attrs, llvm::function_ref<::mlir::InFlightDiagnostic()> emitError); static ::llvm::LogicalResult readProperties(::mlir::DialectBytecodeReader &reader, ::mlir::OperationState &state); void writeProperties(::mlir::DialectBytecodeWriter &writer); ::mlir::ROCDL::WMMACModifierAttr getModCAttr() { return ::llvm::dyn_cast_or_null<::mlir::ROCDL::WMMACModifierAttr>(getProperties().modC); } ::mlir::ROCDL::WMMACModifier getModC(); ::mlir::IntegerAttr getReuseAAttr() { return ::llvm::dyn_cast_or_null<::mlir::IntegerAttr>(getProperties().reuseA); } bool getReuseA(); ::mlir::IntegerAttr getReuseBAttr() { return ::llvm::dyn_cast_or_null<::mlir::IntegerAttr>(getProperties().reuseB); } bool getReuseB(); void setModCAttr(::mlir::ROCDL::WMMACModifierAttr attr) { getProperties().modC = attr; } void setModC(::mlir::ROCDL::WMMACModifier attrValue); void setReuseAAttr(::mlir::IntegerAttr attr) { getProperties().reuseA = attr; } void setReuseA(bool attrValue); void setReuseBAttr(::mlir::IntegerAttr attr) { getProperties().reuseB = attr; } void setReuseB(bool attrValue); static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::Type res, ::mlir::Value a, ::mlir::Value b, ::mlir::ROCDL::WMMACModifierAttr modC, ::mlir::Value c, ::mlir::IntegerAttr reuseA, ::mlir::IntegerAttr reuseB = nullptr); static wmma_f32_16x16x128_bf8_fp8 create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::Type res, ::mlir::Value a, ::mlir::Value b, ::mlir::ROCDL::WMMACModifierAttr modC, ::mlir::Value c, ::mlir::IntegerAttr reuseA, ::mlir::IntegerAttr reuseB = nullptr); static wmma_f32_16x16x128_bf8_fp8 create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::Type res, ::mlir::Value a, ::mlir::Value b, ::mlir::ROCDL::WMMACModifierAttr modC, ::mlir::Value c, ::mlir::IntegerAttr reuseA, ::mlir::IntegerAttr reuseB = nullptr); static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::Value a, ::mlir::Value b, ::mlir::ROCDL::WMMACModifierAttr modC, ::mlir::Value c, ::mlir::IntegerAttr reuseA, ::mlir::IntegerAttr reuseB = nullptr); static wmma_f32_16x16x128_bf8_fp8 create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::Value a, ::mlir::Value b, ::mlir::ROCDL::WMMACModifierAttr modC, ::mlir::Value c, ::mlir::IntegerAttr reuseA, ::mlir::IntegerAttr reuseB = nullptr); static wmma_f32_16x16x128_bf8_fp8 create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::Value a, ::mlir::Value b, ::mlir::ROCDL::WMMACModifierAttr modC, ::mlir::Value c, ::mlir::IntegerAttr reuseA, ::mlir::IntegerAttr reuseB = nullptr); static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::Type res, ::mlir::Value a, ::mlir::Value b, ::mlir::ROCDL::WMMACModifier modC, ::mlir::Value c, bool reuseA = 0, bool reuseB = 0); static wmma_f32_16x16x128_bf8_fp8 create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::Type res, ::mlir::Value a, ::mlir::Value b, ::mlir::ROCDL::WMMACModifier modC, ::mlir::Value c, bool reuseA = 0, bool reuseB = 0); static wmma_f32_16x16x128_bf8_fp8 create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::Type res, ::mlir::Value a, ::mlir::Value b, ::mlir::ROCDL::WMMACModifier modC, ::mlir::Value c, bool reuseA = 0, bool reuseB = 0); static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::Value a, ::mlir::Value b, ::mlir::ROCDL::WMMACModifier modC, ::mlir::Value c, bool reuseA = 0, bool reuseB = 0); static wmma_f32_16x16x128_bf8_fp8 create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::Value a, ::mlir::Value b, ::mlir::ROCDL::WMMACModifier modC, ::mlir::Value c, bool reuseA = 0, bool reuseB = 0); static wmma_f32_16x16x128_bf8_fp8 create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::Value a, ::mlir::Value b, ::mlir::ROCDL::WMMACModifier modC, ::mlir::Value c, bool reuseA = 0, bool reuseB = 0); static void build(::mlir::OpBuilder &, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, ::llvm::ArrayRef<::mlir::NamedAttribute> attributes = {}); static wmma_f32_16x16x128_bf8_fp8 create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, ::llvm::ArrayRef<::mlir::NamedAttribute> attributes = {}); static wmma_f32_16x16x128_bf8_fp8 create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, ::llvm::ArrayRef<::mlir::NamedAttribute> attributes = {}); static void build(::mlir::OpBuilder &, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, const Properties &properties, ::llvm::ArrayRef<::mlir::NamedAttribute> discardableAttributes = {}); static wmma_f32_16x16x128_bf8_fp8 create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, const Properties &properties, ::llvm::ArrayRef<::mlir::NamedAttribute> discardableAttributes = {}); static wmma_f32_16x16x128_bf8_fp8 create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, const Properties &properties, ::llvm::ArrayRef<::mlir::NamedAttribute> discardableAttributes = {}); static void populateDefaultProperties(::mlir::OperationName opName, Properties &properties); ::llvm::LogicalResult verifyInvariantsImpl(); ::llvm::LogicalResult verifyInvariants(); static ::mlir::ParseResult parse(::mlir::OpAsmParser &parser, ::mlir::OperationState &result); void print(::mlir::OpAsmPrinter &_odsPrinter); private: ::mlir::StringAttr getAttributeNameForIndex(unsigned index) { return getAttributeNameForIndex((*this)->getName(), index); } static ::mlir::StringAttr getAttributeNameForIndex(::mlir::OperationName name, unsigned index) { assert(index < 3 && "invalid attribute index"); assert(name.getStringRef() == getOperationName() && "invalid operation name"); assert(name.isRegistered() && "Operation isn't registered, missing a " "dependent dialect loading?"); return name.getAttributeNames()[index]; } public: }; } // namespace mlir::ROCDL MLIR_DECLARE_EXPLICIT_TYPE_ID(::mlir::ROCDL::wmma_f32_16x16x128_bf8_fp8) MLIR_DECLARE_EXPLICIT_TYPE_ID(::mlir::ROCDL::detail::wmma_f32_16x16x128_bf8_fp8GenericAdaptorBase::Properties) namespace mlir::ROCDL { //===----------------------------------------------------------------------===// // ::mlir::ROCDL::wmma_f32_16x16x128_fp8_bf8 declarations //===----------------------------------------------------------------------===// namespace detail { class wmma_f32_16x16x128_fp8_bf8GenericAdaptorBase { public: struct Properties { using modCTy = ::mlir::ROCDL::WMMACModifierAttr; modCTy modC; auto getModC() const { auto &propStorage = this->modC; return ::llvm::dyn_cast_or_null<::mlir::ROCDL::WMMACModifierAttr>(propStorage); } void setModC(const ::mlir::ROCDL::WMMACModifierAttr &propValue) { this->modC = propValue; } using reuseATy = ::mlir::IntegerAttr; reuseATy reuseA; auto getReuseA() const { auto &propStorage = this->reuseA; return ::llvm::dyn_cast_or_null<::mlir::IntegerAttr>(propStorage); } void setReuseA(const ::mlir::IntegerAttr &propValue) { this->reuseA = propValue; } using reuseBTy = ::mlir::IntegerAttr; reuseBTy reuseB; auto getReuseB() const { auto &propStorage = this->reuseB; return ::llvm::dyn_cast_or_null<::mlir::IntegerAttr>(propStorage); } void setReuseB(const ::mlir::IntegerAttr &propValue) { this->reuseB = propValue; } bool operator==(const Properties &rhs) const { return rhs.modC == this->modC && rhs.reuseA == this->reuseA && rhs.reuseB == this->reuseB && true; } bool operator!=(const Properties &rhs) const { return !(*this == rhs); } }; protected: ::mlir::DictionaryAttr odsAttrs; ::std::optional<::mlir::OperationName> odsOpName; Properties properties; ::mlir::RegionRange odsRegions; public: wmma_f32_16x16x128_fp8_bf8GenericAdaptorBase(::mlir::DictionaryAttr attrs, const Properties &properties, ::mlir::RegionRange regions = {}) : odsAttrs(attrs), properties(properties), odsRegions(regions) { if (odsAttrs) odsOpName.emplace("rocdl.wmma.f32.16x16x128.fp8_bf8", odsAttrs.getContext()); } wmma_f32_16x16x128_fp8_bf8GenericAdaptorBase(wmma_f32_16x16x128_fp8_bf8 op); std::pair getODSOperandIndexAndLength(unsigned index, unsigned odsOperandsSize) { return {index, 1}; } const Properties &getProperties() { return properties; } ::mlir::DictionaryAttr getAttributes() { return odsAttrs; } ::mlir::ROCDL::WMMACModifierAttr getModCAttr(); ::mlir::ROCDL::WMMACModifier getModC(); ::mlir::IntegerAttr getReuseAAttr(); bool getReuseA(); ::mlir::IntegerAttr getReuseBAttr(); bool getReuseB(); }; } // namespace detail template class wmma_f32_16x16x128_fp8_bf8GenericAdaptor : public detail::wmma_f32_16x16x128_fp8_bf8GenericAdaptorBase { using ValueT = ::llvm::detail::ValueOfRange; using Base = detail::wmma_f32_16x16x128_fp8_bf8GenericAdaptorBase; static constexpr int odsIndex_a = 0; static constexpr int odsIndex_b = 1; static constexpr int odsIndex_c = 2; public: wmma_f32_16x16x128_fp8_bf8GenericAdaptor(RangeT values, ::mlir::DictionaryAttr attrs, const Properties &properties, ::mlir::RegionRange regions = {}) : Base(attrs, properties, regions), odsOperands(values) {} wmma_f32_16x16x128_fp8_bf8GenericAdaptor(RangeT values, ::mlir::DictionaryAttr attrs, ::mlir::PropertyRef properties, ::mlir::RegionRange regions = {}) : wmma_f32_16x16x128_fp8_bf8GenericAdaptor(values, attrs, (properties ? *properties.as() : Properties{}), regions) {} wmma_f32_16x16x128_fp8_bf8GenericAdaptor(RangeT values, ::mlir::DictionaryAttr attrs = nullptr) : wmma_f32_16x16x128_fp8_bf8GenericAdaptor(values, attrs, Properties{}, {}) {} wmma_f32_16x16x128_fp8_bf8GenericAdaptor(RangeT values, const wmma_f32_16x16x128_fp8_bf8GenericAdaptorBase &base) : Base(base), odsOperands(values) {} template >> wmma_f32_16x16x128_fp8_bf8GenericAdaptor(RangeT values, LateInst op) : Base(op), odsOperands(values) {} std::pair getODSOperandIndexAndLength(unsigned index) { return Base::getODSOperandIndexAndLength(index, odsOperands.size()); } RangeT getODSOperands(unsigned index) { auto valueRange = getODSOperandIndexAndLength(index); return {std::next(odsOperands.begin(), valueRange.first), std::next(odsOperands.begin(), valueRange.first + valueRange.second)}; } ValueT getA() { return (*getODSOperands(0).begin()); } ValueT getB() { return (*getODSOperands(1).begin()); } ValueT getC() { return (*getODSOperands(2).begin()); } RangeT getOperands() { return odsOperands; } private: RangeT odsOperands; }; class wmma_f32_16x16x128_fp8_bf8Adaptor : public wmma_f32_16x16x128_fp8_bf8GenericAdaptor<::mlir::ValueRange> { public: using wmma_f32_16x16x128_fp8_bf8GenericAdaptor::wmma_f32_16x16x128_fp8_bf8GenericAdaptor; wmma_f32_16x16x128_fp8_bf8Adaptor(wmma_f32_16x16x128_fp8_bf8 op); ::llvm::LogicalResult verify(::mlir::Location loc); }; class wmma_f32_16x16x128_fp8_bf8 : public ::mlir::Op::Impl, ::mlir::OpTrait::ZeroSuccessors, ::mlir::OpTrait::NOperands<3>::Impl, ::mlir::OpTrait::OpInvariants, ::mlir::BytecodeOpInterface::Trait> { public: using Op::Op; using Op::print; using Adaptor = wmma_f32_16x16x128_fp8_bf8Adaptor; template using GenericAdaptor = wmma_f32_16x16x128_fp8_bf8GenericAdaptor; using FoldAdaptor = GenericAdaptor<::llvm::ArrayRef<::mlir::Attribute>>; static constexpr int odsIndex_a = 0; static constexpr int odsIndex_b = 1; static constexpr int odsIndex_c = 2; using Properties = FoldAdaptor::Properties; static ::llvm::ArrayRef<::llvm::StringRef> getAttributeNames() { static ::llvm::StringRef attrNames[] = {::llvm::StringRef("modC"), ::llvm::StringRef("reuseA"), ::llvm::StringRef("reuseB")}; return ::llvm::ArrayRef(attrNames); } ::mlir::StringAttr getModCAttrName() { return getAttributeNameForIndex(0); } static ::mlir::StringAttr getModCAttrName(::mlir::OperationName name) { return getAttributeNameForIndex(name, 0); } ::mlir::StringAttr getReuseAAttrName() { return getAttributeNameForIndex(1); } static ::mlir::StringAttr getReuseAAttrName(::mlir::OperationName name) { return getAttributeNameForIndex(name, 1); } ::mlir::StringAttr getReuseBAttrName() { return getAttributeNameForIndex(2); } static ::mlir::StringAttr getReuseBAttrName(::mlir::OperationName name) { return getAttributeNameForIndex(name, 2); } static constexpr ::llvm::StringLiteral getOperationName() { return ::llvm::StringLiteral("rocdl.wmma.f32.16x16x128.fp8_bf8"); } std::pair getODSOperandIndexAndLength(unsigned index) { return {index, 1}; } ::mlir::Operation::operand_range getODSOperands(unsigned index) { auto valueRange = getODSOperandIndexAndLength(index); return {std::next(getOperation()->operand_begin(), valueRange.first), std::next(getOperation()->operand_begin(), valueRange.first + valueRange.second)}; } ::mlir::TypedValue<::mlir::Type> getA() { return ::llvm::cast<::mlir::TypedValue<::mlir::Type>>(*getODSOperands(0).begin()); } ::mlir::TypedValue<::mlir::Type> getB() { return ::llvm::cast<::mlir::TypedValue<::mlir::Type>>(*getODSOperands(1).begin()); } ::mlir::TypedValue<::mlir::Type> getC() { return ::llvm::cast<::mlir::TypedValue<::mlir::Type>>(*getODSOperands(2).begin()); } ::mlir::OpOperand &getAMutable() { auto range = getODSOperandIndexAndLength(0); return getOperation()->getOpOperand(range.first); } ::mlir::OpOperand &getBMutable() { auto range = getODSOperandIndexAndLength(1); return getOperation()->getOpOperand(range.first); } ::mlir::OpOperand &getCMutable() { auto range = getODSOperandIndexAndLength(2); return getOperation()->getOpOperand(range.first); } std::pair getODSResultIndexAndLength(unsigned index) { return {index, 1}; } ::mlir::Operation::result_range getODSResults(unsigned index) { auto valueRange = getODSResultIndexAndLength(index); return {std::next(getOperation()->result_begin(), valueRange.first), std::next(getOperation()->result_begin(), valueRange.first + valueRange.second)}; } ::mlir::TypedValue<::mlir::Type> getRes() { return ::llvm::cast<::mlir::TypedValue<::mlir::Type>>(*getODSResults(0).begin()); } static ::llvm::LogicalResult setPropertiesFromAttr(Properties &prop, ::mlir::Attribute attr, ::llvm::function_ref<::mlir::InFlightDiagnostic()> emitError); static ::mlir::Attribute getPropertiesAsAttr(::mlir::MLIRContext *ctx, const Properties &prop); static llvm::hash_code computePropertiesHash(const Properties &prop); static std::optional getInherentAttr(::mlir::MLIRContext *ctx, const Properties &prop, llvm::StringRef name); static void setInherentAttr(Properties &prop, llvm::StringRef name, mlir::Attribute value); static void populateInherentAttrs(::mlir::MLIRContext *ctx, const Properties &prop, ::mlir::NamedAttrList &attrs); static ::llvm::LogicalResult verifyInherentAttrs(::mlir::OperationName opName, ::mlir::NamedAttrList &attrs, llvm::function_ref<::mlir::InFlightDiagnostic()> emitError); static ::llvm::LogicalResult readProperties(::mlir::DialectBytecodeReader &reader, ::mlir::OperationState &state); void writeProperties(::mlir::DialectBytecodeWriter &writer); ::mlir::ROCDL::WMMACModifierAttr getModCAttr() { return ::llvm::dyn_cast_or_null<::mlir::ROCDL::WMMACModifierAttr>(getProperties().modC); } ::mlir::ROCDL::WMMACModifier getModC(); ::mlir::IntegerAttr getReuseAAttr() { return ::llvm::dyn_cast_or_null<::mlir::IntegerAttr>(getProperties().reuseA); } bool getReuseA(); ::mlir::IntegerAttr getReuseBAttr() { return ::llvm::dyn_cast_or_null<::mlir::IntegerAttr>(getProperties().reuseB); } bool getReuseB(); void setModCAttr(::mlir::ROCDL::WMMACModifierAttr attr) { getProperties().modC = attr; } void setModC(::mlir::ROCDL::WMMACModifier attrValue); void setReuseAAttr(::mlir::IntegerAttr attr) { getProperties().reuseA = attr; } void setReuseA(bool attrValue); void setReuseBAttr(::mlir::IntegerAttr attr) { getProperties().reuseB = attr; } void setReuseB(bool attrValue); static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::Type res, ::mlir::Value a, ::mlir::Value b, ::mlir::ROCDL::WMMACModifierAttr modC, ::mlir::Value c, ::mlir::IntegerAttr reuseA, ::mlir::IntegerAttr reuseB = nullptr); static wmma_f32_16x16x128_fp8_bf8 create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::Type res, ::mlir::Value a, ::mlir::Value b, ::mlir::ROCDL::WMMACModifierAttr modC, ::mlir::Value c, ::mlir::IntegerAttr reuseA, ::mlir::IntegerAttr reuseB = nullptr); static wmma_f32_16x16x128_fp8_bf8 create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::Type res, ::mlir::Value a, ::mlir::Value b, ::mlir::ROCDL::WMMACModifierAttr modC, ::mlir::Value c, ::mlir::IntegerAttr reuseA, ::mlir::IntegerAttr reuseB = nullptr); static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::Value a, ::mlir::Value b, ::mlir::ROCDL::WMMACModifierAttr modC, ::mlir::Value c, ::mlir::IntegerAttr reuseA, ::mlir::IntegerAttr reuseB = nullptr); static wmma_f32_16x16x128_fp8_bf8 create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::Value a, ::mlir::Value b, ::mlir::ROCDL::WMMACModifierAttr modC, ::mlir::Value c, ::mlir::IntegerAttr reuseA, ::mlir::IntegerAttr reuseB = nullptr); static wmma_f32_16x16x128_fp8_bf8 create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::Value a, ::mlir::Value b, ::mlir::ROCDL::WMMACModifierAttr modC, ::mlir::Value c, ::mlir::IntegerAttr reuseA, ::mlir::IntegerAttr reuseB = nullptr); static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::Type res, ::mlir::Value a, ::mlir::Value b, ::mlir::ROCDL::WMMACModifier modC, ::mlir::Value c, bool reuseA = 0, bool reuseB = 0); static wmma_f32_16x16x128_fp8_bf8 create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::Type res, ::mlir::Value a, ::mlir::Value b, ::mlir::ROCDL::WMMACModifier modC, ::mlir::Value c, bool reuseA = 0, bool reuseB = 0); static wmma_f32_16x16x128_fp8_bf8 create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::Type res, ::mlir::Value a, ::mlir::Value b, ::mlir::ROCDL::WMMACModifier modC, ::mlir::Value c, bool reuseA = 0, bool reuseB = 0); static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::Value a, ::mlir::Value b, ::mlir::ROCDL::WMMACModifier modC, ::mlir::Value c, bool reuseA = 0, bool reuseB = 0); static wmma_f32_16x16x128_fp8_bf8 create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::Value a, ::mlir::Value b, ::mlir::ROCDL::WMMACModifier modC, ::mlir::Value c, bool reuseA = 0, bool reuseB = 0); static wmma_f32_16x16x128_fp8_bf8 create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::Value a, ::mlir::Value b, ::mlir::ROCDL::WMMACModifier modC, ::mlir::Value c, bool reuseA = 0, bool reuseB = 0); static void build(::mlir::OpBuilder &, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, ::llvm::ArrayRef<::mlir::NamedAttribute> attributes = {}); static wmma_f32_16x16x128_fp8_bf8 create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, ::llvm::ArrayRef<::mlir::NamedAttribute> attributes = {}); static wmma_f32_16x16x128_fp8_bf8 create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, ::llvm::ArrayRef<::mlir::NamedAttribute> attributes = {}); static void build(::mlir::OpBuilder &, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, const Properties &properties, ::llvm::ArrayRef<::mlir::NamedAttribute> discardableAttributes = {}); static wmma_f32_16x16x128_fp8_bf8 create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, const Properties &properties, ::llvm::ArrayRef<::mlir::NamedAttribute> discardableAttributes = {}); static wmma_f32_16x16x128_fp8_bf8 create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, const Properties &properties, ::llvm::ArrayRef<::mlir::NamedAttribute> discardableAttributes = {}); static void populateDefaultProperties(::mlir::OperationName opName, Properties &properties); ::llvm::LogicalResult verifyInvariantsImpl(); ::llvm::LogicalResult verifyInvariants(); static ::mlir::ParseResult parse(::mlir::OpAsmParser &parser, ::mlir::OperationState &result); void print(::mlir::OpAsmPrinter &_odsPrinter); private: ::mlir::StringAttr getAttributeNameForIndex(unsigned index) { return getAttributeNameForIndex((*this)->getName(), index); } static ::mlir::StringAttr getAttributeNameForIndex(::mlir::OperationName name, unsigned index) { assert(index < 3 && "invalid attribute index"); assert(name.getStringRef() == getOperationName() && "invalid operation name"); assert(name.isRegistered() && "Operation isn't registered, missing a " "dependent dialect loading?"); return name.getAttributeNames()[index]; } public: }; } // namespace mlir::ROCDL MLIR_DECLARE_EXPLICIT_TYPE_ID(::mlir::ROCDL::wmma_f32_16x16x128_fp8_bf8) MLIR_DECLARE_EXPLICIT_TYPE_ID(::mlir::ROCDL::detail::wmma_f32_16x16x128_fp8_bf8GenericAdaptorBase::Properties) namespace mlir::ROCDL { //===----------------------------------------------------------------------===// // ::mlir::ROCDL::wmma_f32_16x16x128_fp8_fp8 declarations //===----------------------------------------------------------------------===// namespace detail { class wmma_f32_16x16x128_fp8_fp8GenericAdaptorBase { public: struct Properties { using modCTy = ::mlir::ROCDL::WMMACModifierAttr; modCTy modC; auto getModC() const { auto &propStorage = this->modC; return ::llvm::dyn_cast_or_null<::mlir::ROCDL::WMMACModifierAttr>(propStorage); } void setModC(const ::mlir::ROCDL::WMMACModifierAttr &propValue) { this->modC = propValue; } using reuseATy = ::mlir::IntegerAttr; reuseATy reuseA; auto getReuseA() const { auto &propStorage = this->reuseA; return ::llvm::dyn_cast_or_null<::mlir::IntegerAttr>(propStorage); } void setReuseA(const ::mlir::IntegerAttr &propValue) { this->reuseA = propValue; } using reuseBTy = ::mlir::IntegerAttr; reuseBTy reuseB; auto getReuseB() const { auto &propStorage = this->reuseB; return ::llvm::dyn_cast_or_null<::mlir::IntegerAttr>(propStorage); } void setReuseB(const ::mlir::IntegerAttr &propValue) { this->reuseB = propValue; } bool operator==(const Properties &rhs) const { return rhs.modC == this->modC && rhs.reuseA == this->reuseA && rhs.reuseB == this->reuseB && true; } bool operator!=(const Properties &rhs) const { return !(*this == rhs); } }; protected: ::mlir::DictionaryAttr odsAttrs; ::std::optional<::mlir::OperationName> odsOpName; Properties properties; ::mlir::RegionRange odsRegions; public: wmma_f32_16x16x128_fp8_fp8GenericAdaptorBase(::mlir::DictionaryAttr attrs, const Properties &properties, ::mlir::RegionRange regions = {}) : odsAttrs(attrs), properties(properties), odsRegions(regions) { if (odsAttrs) odsOpName.emplace("rocdl.wmma.f32.16x16x128.fp8_fp8", odsAttrs.getContext()); } wmma_f32_16x16x128_fp8_fp8GenericAdaptorBase(wmma_f32_16x16x128_fp8_fp8 op); std::pair getODSOperandIndexAndLength(unsigned index, unsigned odsOperandsSize) { return {index, 1}; } const Properties &getProperties() { return properties; } ::mlir::DictionaryAttr getAttributes() { return odsAttrs; } ::mlir::ROCDL::WMMACModifierAttr getModCAttr(); ::mlir::ROCDL::WMMACModifier getModC(); ::mlir::IntegerAttr getReuseAAttr(); bool getReuseA(); ::mlir::IntegerAttr getReuseBAttr(); bool getReuseB(); }; } // namespace detail template class wmma_f32_16x16x128_fp8_fp8GenericAdaptor : public detail::wmma_f32_16x16x128_fp8_fp8GenericAdaptorBase { using ValueT = ::llvm::detail::ValueOfRange; using Base = detail::wmma_f32_16x16x128_fp8_fp8GenericAdaptorBase; static constexpr int odsIndex_a = 0; static constexpr int odsIndex_b = 1; static constexpr int odsIndex_c = 2; public: wmma_f32_16x16x128_fp8_fp8GenericAdaptor(RangeT values, ::mlir::DictionaryAttr attrs, const Properties &properties, ::mlir::RegionRange regions = {}) : Base(attrs, properties, regions), odsOperands(values) {} wmma_f32_16x16x128_fp8_fp8GenericAdaptor(RangeT values, ::mlir::DictionaryAttr attrs, ::mlir::PropertyRef properties, ::mlir::RegionRange regions = {}) : wmma_f32_16x16x128_fp8_fp8GenericAdaptor(values, attrs, (properties ? *properties.as() : Properties{}), regions) {} wmma_f32_16x16x128_fp8_fp8GenericAdaptor(RangeT values, ::mlir::DictionaryAttr attrs = nullptr) : wmma_f32_16x16x128_fp8_fp8GenericAdaptor(values, attrs, Properties{}, {}) {} wmma_f32_16x16x128_fp8_fp8GenericAdaptor(RangeT values, const wmma_f32_16x16x128_fp8_fp8GenericAdaptorBase &base) : Base(base), odsOperands(values) {} template >> wmma_f32_16x16x128_fp8_fp8GenericAdaptor(RangeT values, LateInst op) : Base(op), odsOperands(values) {} std::pair getODSOperandIndexAndLength(unsigned index) { return Base::getODSOperandIndexAndLength(index, odsOperands.size()); } RangeT getODSOperands(unsigned index) { auto valueRange = getODSOperandIndexAndLength(index); return {std::next(odsOperands.begin(), valueRange.first), std::next(odsOperands.begin(), valueRange.first + valueRange.second)}; } ValueT getA() { return (*getODSOperands(0).begin()); } ValueT getB() { return (*getODSOperands(1).begin()); } ValueT getC() { return (*getODSOperands(2).begin()); } RangeT getOperands() { return odsOperands; } private: RangeT odsOperands; }; class wmma_f32_16x16x128_fp8_fp8Adaptor : public wmma_f32_16x16x128_fp8_fp8GenericAdaptor<::mlir::ValueRange> { public: using wmma_f32_16x16x128_fp8_fp8GenericAdaptor::wmma_f32_16x16x128_fp8_fp8GenericAdaptor; wmma_f32_16x16x128_fp8_fp8Adaptor(wmma_f32_16x16x128_fp8_fp8 op); ::llvm::LogicalResult verify(::mlir::Location loc); }; class wmma_f32_16x16x128_fp8_fp8 : public ::mlir::Op::Impl, ::mlir::OpTrait::ZeroSuccessors, ::mlir::OpTrait::NOperands<3>::Impl, ::mlir::OpTrait::OpInvariants, ::mlir::BytecodeOpInterface::Trait> { public: using Op::Op; using Op::print; using Adaptor = wmma_f32_16x16x128_fp8_fp8Adaptor; template using GenericAdaptor = wmma_f32_16x16x128_fp8_fp8GenericAdaptor; using FoldAdaptor = GenericAdaptor<::llvm::ArrayRef<::mlir::Attribute>>; static constexpr int odsIndex_a = 0; static constexpr int odsIndex_b = 1; static constexpr int odsIndex_c = 2; using Properties = FoldAdaptor::Properties; static ::llvm::ArrayRef<::llvm::StringRef> getAttributeNames() { static ::llvm::StringRef attrNames[] = {::llvm::StringRef("modC"), ::llvm::StringRef("reuseA"), ::llvm::StringRef("reuseB")}; return ::llvm::ArrayRef(attrNames); } ::mlir::StringAttr getModCAttrName() { return getAttributeNameForIndex(0); } static ::mlir::StringAttr getModCAttrName(::mlir::OperationName name) { return getAttributeNameForIndex(name, 0); } ::mlir::StringAttr getReuseAAttrName() { return getAttributeNameForIndex(1); } static ::mlir::StringAttr getReuseAAttrName(::mlir::OperationName name) { return getAttributeNameForIndex(name, 1); } ::mlir::StringAttr getReuseBAttrName() { return getAttributeNameForIndex(2); } static ::mlir::StringAttr getReuseBAttrName(::mlir::OperationName name) { return getAttributeNameForIndex(name, 2); } static constexpr ::llvm::StringLiteral getOperationName() { return ::llvm::StringLiteral("rocdl.wmma.f32.16x16x128.fp8_fp8"); } std::pair getODSOperandIndexAndLength(unsigned index) { return {index, 1}; } ::mlir::Operation::operand_range getODSOperands(unsigned index) { auto valueRange = getODSOperandIndexAndLength(index); return {std::next(getOperation()->operand_begin(), valueRange.first), std::next(getOperation()->operand_begin(), valueRange.first + valueRange.second)}; } ::mlir::TypedValue<::mlir::Type> getA() { return ::llvm::cast<::mlir::TypedValue<::mlir::Type>>(*getODSOperands(0).begin()); } ::mlir::TypedValue<::mlir::Type> getB() { return ::llvm::cast<::mlir::TypedValue<::mlir::Type>>(*getODSOperands(1).begin()); } ::mlir::TypedValue<::mlir::Type> getC() { return ::llvm::cast<::mlir::TypedValue<::mlir::Type>>(*getODSOperands(2).begin()); } ::mlir::OpOperand &getAMutable() { auto range = getODSOperandIndexAndLength(0); return getOperation()->getOpOperand(range.first); } ::mlir::OpOperand &getBMutable() { auto range = getODSOperandIndexAndLength(1); return getOperation()->getOpOperand(range.first); } ::mlir::OpOperand &getCMutable() { auto range = getODSOperandIndexAndLength(2); return getOperation()->getOpOperand(range.first); } std::pair getODSResultIndexAndLength(unsigned index) { return {index, 1}; } ::mlir::Operation::result_range getODSResults(unsigned index) { auto valueRange = getODSResultIndexAndLength(index); return {std::next(getOperation()->result_begin(), valueRange.first), std::next(getOperation()->result_begin(), valueRange.first + valueRange.second)}; } ::mlir::TypedValue<::mlir::Type> getRes() { return ::llvm::cast<::mlir::TypedValue<::mlir::Type>>(*getODSResults(0).begin()); } static ::llvm::LogicalResult setPropertiesFromAttr(Properties &prop, ::mlir::Attribute attr, ::llvm::function_ref<::mlir::InFlightDiagnostic()> emitError); static ::mlir::Attribute getPropertiesAsAttr(::mlir::MLIRContext *ctx, const Properties &prop); static llvm::hash_code computePropertiesHash(const Properties &prop); static std::optional getInherentAttr(::mlir::MLIRContext *ctx, const Properties &prop, llvm::StringRef name); static void setInherentAttr(Properties &prop, llvm::StringRef name, mlir::Attribute value); static void populateInherentAttrs(::mlir::MLIRContext *ctx, const Properties &prop, ::mlir::NamedAttrList &attrs); static ::llvm::LogicalResult verifyInherentAttrs(::mlir::OperationName opName, ::mlir::NamedAttrList &attrs, llvm::function_ref<::mlir::InFlightDiagnostic()> emitError); static ::llvm::LogicalResult readProperties(::mlir::DialectBytecodeReader &reader, ::mlir::OperationState &state); void writeProperties(::mlir::DialectBytecodeWriter &writer); ::mlir::ROCDL::WMMACModifierAttr getModCAttr() { return ::llvm::dyn_cast_or_null<::mlir::ROCDL::WMMACModifierAttr>(getProperties().modC); } ::mlir::ROCDL::WMMACModifier getModC(); ::mlir::IntegerAttr getReuseAAttr() { return ::llvm::dyn_cast_or_null<::mlir::IntegerAttr>(getProperties().reuseA); } bool getReuseA(); ::mlir::IntegerAttr getReuseBAttr() { return ::llvm::dyn_cast_or_null<::mlir::IntegerAttr>(getProperties().reuseB); } bool getReuseB(); void setModCAttr(::mlir::ROCDL::WMMACModifierAttr attr) { getProperties().modC = attr; } void setModC(::mlir::ROCDL::WMMACModifier attrValue); void setReuseAAttr(::mlir::IntegerAttr attr) { getProperties().reuseA = attr; } void setReuseA(bool attrValue); void setReuseBAttr(::mlir::IntegerAttr attr) { getProperties().reuseB = attr; } void setReuseB(bool attrValue); static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::Type res, ::mlir::Value a, ::mlir::Value b, ::mlir::ROCDL::WMMACModifierAttr modC, ::mlir::Value c, ::mlir::IntegerAttr reuseA, ::mlir::IntegerAttr reuseB = nullptr); static wmma_f32_16x16x128_fp8_fp8 create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::Type res, ::mlir::Value a, ::mlir::Value b, ::mlir::ROCDL::WMMACModifierAttr modC, ::mlir::Value c, ::mlir::IntegerAttr reuseA, ::mlir::IntegerAttr reuseB = nullptr); static wmma_f32_16x16x128_fp8_fp8 create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::Type res, ::mlir::Value a, ::mlir::Value b, ::mlir::ROCDL::WMMACModifierAttr modC, ::mlir::Value c, ::mlir::IntegerAttr reuseA, ::mlir::IntegerAttr reuseB = nullptr); static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::Value a, ::mlir::Value b, ::mlir::ROCDL::WMMACModifierAttr modC, ::mlir::Value c, ::mlir::IntegerAttr reuseA, ::mlir::IntegerAttr reuseB = nullptr); static wmma_f32_16x16x128_fp8_fp8 create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::Value a, ::mlir::Value b, ::mlir::ROCDL::WMMACModifierAttr modC, ::mlir::Value c, ::mlir::IntegerAttr reuseA, ::mlir::IntegerAttr reuseB = nullptr); static wmma_f32_16x16x128_fp8_fp8 create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::Value a, ::mlir::Value b, ::mlir::ROCDL::WMMACModifierAttr modC, ::mlir::Value c, ::mlir::IntegerAttr reuseA, ::mlir::IntegerAttr reuseB = nullptr); static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::Type res, ::mlir::Value a, ::mlir::Value b, ::mlir::ROCDL::WMMACModifier modC, ::mlir::Value c, bool reuseA = 0, bool reuseB = 0); static wmma_f32_16x16x128_fp8_fp8 create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::Type res, ::mlir::Value a, ::mlir::Value b, ::mlir::ROCDL::WMMACModifier modC, ::mlir::Value c, bool reuseA = 0, bool reuseB = 0); static wmma_f32_16x16x128_fp8_fp8 create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::Type res, ::mlir::Value a, ::mlir::Value b, ::mlir::ROCDL::WMMACModifier modC, ::mlir::Value c, bool reuseA = 0, bool reuseB = 0); static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::Value a, ::mlir::Value b, ::mlir::ROCDL::WMMACModifier modC, ::mlir::Value c, bool reuseA = 0, bool reuseB = 0); static wmma_f32_16x16x128_fp8_fp8 create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::Value a, ::mlir::Value b, ::mlir::ROCDL::WMMACModifier modC, ::mlir::Value c, bool reuseA = 0, bool reuseB = 0); static wmma_f32_16x16x128_fp8_fp8 create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::Value a, ::mlir::Value b, ::mlir::ROCDL::WMMACModifier modC, ::mlir::Value c, bool reuseA = 0, bool reuseB = 0); static void build(::mlir::OpBuilder &, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, ::llvm::ArrayRef<::mlir::NamedAttribute> attributes = {}); static wmma_f32_16x16x128_fp8_fp8 create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, ::llvm::ArrayRef<::mlir::NamedAttribute> attributes = {}); static wmma_f32_16x16x128_fp8_fp8 create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, ::llvm::ArrayRef<::mlir::NamedAttribute> attributes = {}); static void build(::mlir::OpBuilder &, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, const Properties &properties, ::llvm::ArrayRef<::mlir::NamedAttribute> discardableAttributes = {}); static wmma_f32_16x16x128_fp8_fp8 create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, const Properties &properties, ::llvm::ArrayRef<::mlir::NamedAttribute> discardableAttributes = {}); static wmma_f32_16x16x128_fp8_fp8 create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, const Properties &properties, ::llvm::ArrayRef<::mlir::NamedAttribute> discardableAttributes = {}); static void populateDefaultProperties(::mlir::OperationName opName, Properties &properties); ::llvm::LogicalResult verifyInvariantsImpl(); ::llvm::LogicalResult verifyInvariants(); static ::mlir::ParseResult parse(::mlir::OpAsmParser &parser, ::mlir::OperationState &result); void print(::mlir::OpAsmPrinter &_odsPrinter); private: ::mlir::StringAttr getAttributeNameForIndex(unsigned index) { return getAttributeNameForIndex((*this)->getName(), index); } static ::mlir::StringAttr getAttributeNameForIndex(::mlir::OperationName name, unsigned index) { assert(index < 3 && "invalid attribute index"); assert(name.getStringRef() == getOperationName() && "invalid operation name"); assert(name.isRegistered() && "Operation isn't registered, missing a " "dependent dialect loading?"); return name.getAttributeNames()[index]; } public: }; } // namespace mlir::ROCDL MLIR_DECLARE_EXPLICIT_TYPE_ID(::mlir::ROCDL::wmma_f32_16x16x128_fp8_fp8) MLIR_DECLARE_EXPLICIT_TYPE_ID(::mlir::ROCDL::detail::wmma_f32_16x16x128_fp8_fp8GenericAdaptorBase::Properties) namespace mlir::ROCDL { //===----------------------------------------------------------------------===// // ::mlir::ROCDL::wmma_f32_16x16x16_bf16 declarations //===----------------------------------------------------------------------===// namespace detail { class wmma_f32_16x16x16_bf16GenericAdaptorBase { public: using Properties = ::mlir::EmptyProperties; protected: ::mlir::DictionaryAttr odsAttrs; ::std::optional<::mlir::OperationName> odsOpName; Properties properties; ::mlir::RegionRange odsRegions; public: wmma_f32_16x16x16_bf16GenericAdaptorBase(::mlir::DictionaryAttr attrs, const Properties &properties, ::mlir::RegionRange regions = {}) : odsAttrs(attrs), properties(properties), odsRegions(regions) { if (odsAttrs) odsOpName.emplace("rocdl.wmma.f32.16x16x16.bf16", odsAttrs.getContext()); } wmma_f32_16x16x16_bf16GenericAdaptorBase(wmma_f32_16x16x16_bf16 op); std::pair getODSOperandIndexAndLength(unsigned index, unsigned odsOperandsSize) { return {index, 1}; } const Properties &getProperties() { return properties; } ::mlir::DictionaryAttr getAttributes() { return odsAttrs; } }; } // namespace detail template class wmma_f32_16x16x16_bf16GenericAdaptor : public detail::wmma_f32_16x16x16_bf16GenericAdaptorBase { using ValueT = ::llvm::detail::ValueOfRange; using Base = detail::wmma_f32_16x16x16_bf16GenericAdaptorBase; static constexpr int odsIndex_a = 0; static constexpr int odsIndex_b = 1; static constexpr int odsIndex_c = 2; public: wmma_f32_16x16x16_bf16GenericAdaptor(RangeT values, ::mlir::DictionaryAttr attrs, const Properties &properties, ::mlir::RegionRange regions = {}) : Base(attrs, properties, regions), odsOperands(values) {} wmma_f32_16x16x16_bf16GenericAdaptor(RangeT values, ::mlir::DictionaryAttr attrs, ::mlir::PropertyRef properties, ::mlir::RegionRange regions = {}) : wmma_f32_16x16x16_bf16GenericAdaptor(values, attrs, (properties ? *properties.as() : Properties{}), regions) {} wmma_f32_16x16x16_bf16GenericAdaptor(RangeT values, ::mlir::DictionaryAttr attrs = nullptr) : wmma_f32_16x16x16_bf16GenericAdaptor(values, attrs, Properties{}, {}) {} wmma_f32_16x16x16_bf16GenericAdaptor(RangeT values, const wmma_f32_16x16x16_bf16GenericAdaptorBase &base) : Base(base), odsOperands(values) {} template >> wmma_f32_16x16x16_bf16GenericAdaptor(RangeT values, LateInst op) : Base(op), odsOperands(values) {} std::pair getODSOperandIndexAndLength(unsigned index) { return Base::getODSOperandIndexAndLength(index, odsOperands.size()); } RangeT getODSOperands(unsigned index) { auto valueRange = getODSOperandIndexAndLength(index); return {std::next(odsOperands.begin(), valueRange.first), std::next(odsOperands.begin(), valueRange.first + valueRange.second)}; } ValueT getA() { return (*getODSOperands(0).begin()); } ValueT getB() { return (*getODSOperands(1).begin()); } ValueT getC() { return (*getODSOperands(2).begin()); } RangeT getOperands() { return odsOperands; } private: RangeT odsOperands; }; class wmma_f32_16x16x16_bf16Adaptor : public wmma_f32_16x16x16_bf16GenericAdaptor<::mlir::ValueRange> { public: using wmma_f32_16x16x16_bf16GenericAdaptor::wmma_f32_16x16x16_bf16GenericAdaptor; wmma_f32_16x16x16_bf16Adaptor(wmma_f32_16x16x16_bf16 op); ::llvm::LogicalResult verify(::mlir::Location loc); }; class wmma_f32_16x16x16_bf16 : public ::mlir::Op::Impl, ::mlir::OpTrait::ZeroSuccessors, ::mlir::OpTrait::NOperands<3>::Impl, ::mlir::OpTrait::OpInvariants> { public: using Op::Op; using Op::print; using Adaptor = wmma_f32_16x16x16_bf16Adaptor; template using GenericAdaptor = wmma_f32_16x16x16_bf16GenericAdaptor; using FoldAdaptor = GenericAdaptor<::llvm::ArrayRef<::mlir::Attribute>>; static constexpr int odsIndex_a = 0; static constexpr int odsIndex_b = 1; static constexpr int odsIndex_c = 2; using Properties = FoldAdaptor::Properties; static ::llvm::ArrayRef<::llvm::StringRef> getAttributeNames() { return {}; } static constexpr ::llvm::StringLiteral getOperationName() { return ::llvm::StringLiteral("rocdl.wmma.f32.16x16x16.bf16"); } std::pair getODSOperandIndexAndLength(unsigned index) { return {index, 1}; } ::mlir::Operation::operand_range getODSOperands(unsigned index) { auto valueRange = getODSOperandIndexAndLength(index); return {std::next(getOperation()->operand_begin(), valueRange.first), std::next(getOperation()->operand_begin(), valueRange.first + valueRange.second)}; } ::mlir::TypedValue<::mlir::Type> getA() { return ::llvm::cast<::mlir::TypedValue<::mlir::Type>>(*getODSOperands(0).begin()); } ::mlir::TypedValue<::mlir::Type> getB() { return ::llvm::cast<::mlir::TypedValue<::mlir::Type>>(*getODSOperands(1).begin()); } ::mlir::TypedValue<::mlir::Type> getC() { return ::llvm::cast<::mlir::TypedValue<::mlir::Type>>(*getODSOperands(2).begin()); } ::mlir::OpOperand &getAMutable() { auto range = getODSOperandIndexAndLength(0); return getOperation()->getOpOperand(range.first); } ::mlir::OpOperand &getBMutable() { auto range = getODSOperandIndexAndLength(1); return getOperation()->getOpOperand(range.first); } ::mlir::OpOperand &getCMutable() { auto range = getODSOperandIndexAndLength(2); return getOperation()->getOpOperand(range.first); } std::pair getODSResultIndexAndLength(unsigned index) { return {index, 1}; } ::mlir::Operation::result_range getODSResults(unsigned index) { auto valueRange = getODSResultIndexAndLength(index); return {std::next(getOperation()->result_begin(), valueRange.first), std::next(getOperation()->result_begin(), valueRange.first + valueRange.second)}; } ::mlir::TypedValue<::mlir::Type> getRes() { return ::llvm::cast<::mlir::TypedValue<::mlir::Type>>(*getODSResults(0).begin()); } static ::llvm::LogicalResult setPropertiesFromAttr(Properties &prop, ::mlir::Attribute attr, ::llvm::function_ref<::mlir::InFlightDiagnostic()> emitError); static ::mlir::Attribute getPropertiesAsAttr(::mlir::MLIRContext *ctx, const Properties &prop); static llvm::hash_code computePropertiesHash(const Properties &prop); static std::optional getInherentAttr(::mlir::MLIRContext *ctx, const Properties &prop, llvm::StringRef name); static void setInherentAttr(Properties &prop, llvm::StringRef name, mlir::Attribute value); static void populateInherentAttrs(::mlir::MLIRContext *ctx, const Properties &prop, ::mlir::NamedAttrList &attrs); static ::llvm::LogicalResult verifyInherentAttrs(::mlir::OperationName opName, ::mlir::NamedAttrList &attrs, llvm::function_ref<::mlir::InFlightDiagnostic()> emitError); static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::Type res, ::mlir::Value a, ::mlir::Value b, ::mlir::Value c); static wmma_f32_16x16x16_bf16 create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::Type res, ::mlir::Value a, ::mlir::Value b, ::mlir::Value c); static wmma_f32_16x16x16_bf16 create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::Type res, ::mlir::Value a, ::mlir::Value b, ::mlir::Value c); static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::Value a, ::mlir::Value b, ::mlir::Value c); static wmma_f32_16x16x16_bf16 create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::Value a, ::mlir::Value b, ::mlir::Value c); static wmma_f32_16x16x16_bf16 create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::Value a, ::mlir::Value b, ::mlir::Value c); static void build(::mlir::OpBuilder &, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, ::llvm::ArrayRef<::mlir::NamedAttribute> attributes = {}); static wmma_f32_16x16x16_bf16 create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, ::llvm::ArrayRef<::mlir::NamedAttribute> attributes = {}); static wmma_f32_16x16x16_bf16 create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, ::llvm::ArrayRef<::mlir::NamedAttribute> attributes = {}); static void build(::mlir::OpBuilder &, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, const Properties &properties, ::llvm::ArrayRef<::mlir::NamedAttribute> discardableAttributes = {}); static wmma_f32_16x16x16_bf16 create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, const Properties &properties, ::llvm::ArrayRef<::mlir::NamedAttribute> discardableAttributes = {}); static wmma_f32_16x16x16_bf16 create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, const Properties &properties, ::llvm::ArrayRef<::mlir::NamedAttribute> discardableAttributes = {}); ::llvm::LogicalResult verifyInvariantsImpl(); ::llvm::LogicalResult verifyInvariants(); static ::mlir::ParseResult parse(::mlir::OpAsmParser &parser, ::mlir::OperationState &result); void print(::mlir::OpAsmPrinter &_odsPrinter); public: }; } // namespace mlir::ROCDL MLIR_DECLARE_EXPLICIT_TYPE_ID(::mlir::ROCDL::wmma_f32_16x16x16_bf16) namespace mlir::ROCDL { //===----------------------------------------------------------------------===// // ::mlir::ROCDL::wmma_f32_16x16x16_bf8_bf8 declarations //===----------------------------------------------------------------------===// namespace detail { class wmma_f32_16x16x16_bf8_bf8GenericAdaptorBase { public: using Properties = ::mlir::EmptyProperties; protected: ::mlir::DictionaryAttr odsAttrs; ::std::optional<::mlir::OperationName> odsOpName; Properties properties; ::mlir::RegionRange odsRegions; public: wmma_f32_16x16x16_bf8_bf8GenericAdaptorBase(::mlir::DictionaryAttr attrs, const Properties &properties, ::mlir::RegionRange regions = {}) : odsAttrs(attrs), properties(properties), odsRegions(regions) { if (odsAttrs) odsOpName.emplace("rocdl.wmma.f32.16x16x16.bf8_bf8", odsAttrs.getContext()); } wmma_f32_16x16x16_bf8_bf8GenericAdaptorBase(wmma_f32_16x16x16_bf8_bf8 op); std::pair getODSOperandIndexAndLength(unsigned index, unsigned odsOperandsSize) { return {index, 1}; } const Properties &getProperties() { return properties; } ::mlir::DictionaryAttr getAttributes() { return odsAttrs; } }; } // namespace detail template class wmma_f32_16x16x16_bf8_bf8GenericAdaptor : public detail::wmma_f32_16x16x16_bf8_bf8GenericAdaptorBase { using ValueT = ::llvm::detail::ValueOfRange; using Base = detail::wmma_f32_16x16x16_bf8_bf8GenericAdaptorBase; static constexpr int odsIndex_a = 0; static constexpr int odsIndex_b = 1; static constexpr int odsIndex_c = 2; public: wmma_f32_16x16x16_bf8_bf8GenericAdaptor(RangeT values, ::mlir::DictionaryAttr attrs, const Properties &properties, ::mlir::RegionRange regions = {}) : Base(attrs, properties, regions), odsOperands(values) {} wmma_f32_16x16x16_bf8_bf8GenericAdaptor(RangeT values, ::mlir::DictionaryAttr attrs, ::mlir::PropertyRef properties, ::mlir::RegionRange regions = {}) : wmma_f32_16x16x16_bf8_bf8GenericAdaptor(values, attrs, (properties ? *properties.as() : Properties{}), regions) {} wmma_f32_16x16x16_bf8_bf8GenericAdaptor(RangeT values, ::mlir::DictionaryAttr attrs = nullptr) : wmma_f32_16x16x16_bf8_bf8GenericAdaptor(values, attrs, Properties{}, {}) {} wmma_f32_16x16x16_bf8_bf8GenericAdaptor(RangeT values, const wmma_f32_16x16x16_bf8_bf8GenericAdaptorBase &base) : Base(base), odsOperands(values) {} template >> wmma_f32_16x16x16_bf8_bf8GenericAdaptor(RangeT values, LateInst op) : Base(op), odsOperands(values) {} std::pair getODSOperandIndexAndLength(unsigned index) { return Base::getODSOperandIndexAndLength(index, odsOperands.size()); } RangeT getODSOperands(unsigned index) { auto valueRange = getODSOperandIndexAndLength(index); return {std::next(odsOperands.begin(), valueRange.first), std::next(odsOperands.begin(), valueRange.first + valueRange.second)}; } ValueT getA() { return (*getODSOperands(0).begin()); } ValueT getB() { return (*getODSOperands(1).begin()); } ValueT getC() { return (*getODSOperands(2).begin()); } RangeT getOperands() { return odsOperands; } private: RangeT odsOperands; }; class wmma_f32_16x16x16_bf8_bf8Adaptor : public wmma_f32_16x16x16_bf8_bf8GenericAdaptor<::mlir::ValueRange> { public: using wmma_f32_16x16x16_bf8_bf8GenericAdaptor::wmma_f32_16x16x16_bf8_bf8GenericAdaptor; wmma_f32_16x16x16_bf8_bf8Adaptor(wmma_f32_16x16x16_bf8_bf8 op); ::llvm::LogicalResult verify(::mlir::Location loc); }; class wmma_f32_16x16x16_bf8_bf8 : public ::mlir::Op::Impl, ::mlir::OpTrait::ZeroSuccessors, ::mlir::OpTrait::NOperands<3>::Impl, ::mlir::OpTrait::OpInvariants> { public: using Op::Op; using Op::print; using Adaptor = wmma_f32_16x16x16_bf8_bf8Adaptor; template using GenericAdaptor = wmma_f32_16x16x16_bf8_bf8GenericAdaptor; using FoldAdaptor = GenericAdaptor<::llvm::ArrayRef<::mlir::Attribute>>; static constexpr int odsIndex_a = 0; static constexpr int odsIndex_b = 1; static constexpr int odsIndex_c = 2; using Properties = FoldAdaptor::Properties; static ::llvm::ArrayRef<::llvm::StringRef> getAttributeNames() { return {}; } static constexpr ::llvm::StringLiteral getOperationName() { return ::llvm::StringLiteral("rocdl.wmma.f32.16x16x16.bf8_bf8"); } std::pair getODSOperandIndexAndLength(unsigned index) { return {index, 1}; } ::mlir::Operation::operand_range getODSOperands(unsigned index) { auto valueRange = getODSOperandIndexAndLength(index); return {std::next(getOperation()->operand_begin(), valueRange.first), std::next(getOperation()->operand_begin(), valueRange.first + valueRange.second)}; } ::mlir::TypedValue<::mlir::Type> getA() { return ::llvm::cast<::mlir::TypedValue<::mlir::Type>>(*getODSOperands(0).begin()); } ::mlir::TypedValue<::mlir::Type> getB() { return ::llvm::cast<::mlir::TypedValue<::mlir::Type>>(*getODSOperands(1).begin()); } ::mlir::TypedValue<::mlir::Type> getC() { return ::llvm::cast<::mlir::TypedValue<::mlir::Type>>(*getODSOperands(2).begin()); } ::mlir::OpOperand &getAMutable() { auto range = getODSOperandIndexAndLength(0); return getOperation()->getOpOperand(range.first); } ::mlir::OpOperand &getBMutable() { auto range = getODSOperandIndexAndLength(1); return getOperation()->getOpOperand(range.first); } ::mlir::OpOperand &getCMutable() { auto range = getODSOperandIndexAndLength(2); return getOperation()->getOpOperand(range.first); } std::pair getODSResultIndexAndLength(unsigned index) { return {index, 1}; } ::mlir::Operation::result_range getODSResults(unsigned index) { auto valueRange = getODSResultIndexAndLength(index); return {std::next(getOperation()->result_begin(), valueRange.first), std::next(getOperation()->result_begin(), valueRange.first + valueRange.second)}; } ::mlir::TypedValue<::mlir::Type> getRes() { return ::llvm::cast<::mlir::TypedValue<::mlir::Type>>(*getODSResults(0).begin()); } static ::llvm::LogicalResult setPropertiesFromAttr(Properties &prop, ::mlir::Attribute attr, ::llvm::function_ref<::mlir::InFlightDiagnostic()> emitError); static ::mlir::Attribute getPropertiesAsAttr(::mlir::MLIRContext *ctx, const Properties &prop); static llvm::hash_code computePropertiesHash(const Properties &prop); static std::optional getInherentAttr(::mlir::MLIRContext *ctx, const Properties &prop, llvm::StringRef name); static void setInherentAttr(Properties &prop, llvm::StringRef name, mlir::Attribute value); static void populateInherentAttrs(::mlir::MLIRContext *ctx, const Properties &prop, ::mlir::NamedAttrList &attrs); static ::llvm::LogicalResult verifyInherentAttrs(::mlir::OperationName opName, ::mlir::NamedAttrList &attrs, llvm::function_ref<::mlir::InFlightDiagnostic()> emitError); static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::Type res, ::mlir::Value a, ::mlir::Value b, ::mlir::Value c); static wmma_f32_16x16x16_bf8_bf8 create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::Type res, ::mlir::Value a, ::mlir::Value b, ::mlir::Value c); static wmma_f32_16x16x16_bf8_bf8 create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::Type res, ::mlir::Value a, ::mlir::Value b, ::mlir::Value c); static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::Value a, ::mlir::Value b, ::mlir::Value c); static wmma_f32_16x16x16_bf8_bf8 create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::Value a, ::mlir::Value b, ::mlir::Value c); static wmma_f32_16x16x16_bf8_bf8 create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::Value a, ::mlir::Value b, ::mlir::Value c); static void build(::mlir::OpBuilder &, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, ::llvm::ArrayRef<::mlir::NamedAttribute> attributes = {}); static wmma_f32_16x16x16_bf8_bf8 create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, ::llvm::ArrayRef<::mlir::NamedAttribute> attributes = {}); static wmma_f32_16x16x16_bf8_bf8 create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, ::llvm::ArrayRef<::mlir::NamedAttribute> attributes = {}); static void build(::mlir::OpBuilder &, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, const Properties &properties, ::llvm::ArrayRef<::mlir::NamedAttribute> discardableAttributes = {}); static wmma_f32_16x16x16_bf8_bf8 create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, const Properties &properties, ::llvm::ArrayRef<::mlir::NamedAttribute> discardableAttributes = {}); static wmma_f32_16x16x16_bf8_bf8 create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, const Properties &properties, ::llvm::ArrayRef<::mlir::NamedAttribute> discardableAttributes = {}); ::llvm::LogicalResult verifyInvariantsImpl(); ::llvm::LogicalResult verifyInvariants(); static ::mlir::ParseResult parse(::mlir::OpAsmParser &parser, ::mlir::OperationState &result); void print(::mlir::OpAsmPrinter &_odsPrinter); public: }; } // namespace mlir::ROCDL MLIR_DECLARE_EXPLICIT_TYPE_ID(::mlir::ROCDL::wmma_f32_16x16x16_bf8_bf8) namespace mlir::ROCDL { //===----------------------------------------------------------------------===// // ::mlir::ROCDL::wmma_f32_16x16x16_bf8_fp8 declarations //===----------------------------------------------------------------------===// namespace detail { class wmma_f32_16x16x16_bf8_fp8GenericAdaptorBase { public: using Properties = ::mlir::EmptyProperties; protected: ::mlir::DictionaryAttr odsAttrs; ::std::optional<::mlir::OperationName> odsOpName; Properties properties; ::mlir::RegionRange odsRegions; public: wmma_f32_16x16x16_bf8_fp8GenericAdaptorBase(::mlir::DictionaryAttr attrs, const Properties &properties, ::mlir::RegionRange regions = {}) : odsAttrs(attrs), properties(properties), odsRegions(regions) { if (odsAttrs) odsOpName.emplace("rocdl.wmma.f32.16x16x16.bf8_fp8", odsAttrs.getContext()); } wmma_f32_16x16x16_bf8_fp8GenericAdaptorBase(wmma_f32_16x16x16_bf8_fp8 op); std::pair getODSOperandIndexAndLength(unsigned index, unsigned odsOperandsSize) { return {index, 1}; } const Properties &getProperties() { return properties; } ::mlir::DictionaryAttr getAttributes() { return odsAttrs; } }; } // namespace detail template class wmma_f32_16x16x16_bf8_fp8GenericAdaptor : public detail::wmma_f32_16x16x16_bf8_fp8GenericAdaptorBase { using ValueT = ::llvm::detail::ValueOfRange; using Base = detail::wmma_f32_16x16x16_bf8_fp8GenericAdaptorBase; static constexpr int odsIndex_a = 0; static constexpr int odsIndex_b = 1; static constexpr int odsIndex_c = 2; public: wmma_f32_16x16x16_bf8_fp8GenericAdaptor(RangeT values, ::mlir::DictionaryAttr attrs, const Properties &properties, ::mlir::RegionRange regions = {}) : Base(attrs, properties, regions), odsOperands(values) {} wmma_f32_16x16x16_bf8_fp8GenericAdaptor(RangeT values, ::mlir::DictionaryAttr attrs, ::mlir::PropertyRef properties, ::mlir::RegionRange regions = {}) : wmma_f32_16x16x16_bf8_fp8GenericAdaptor(values, attrs, (properties ? *properties.as() : Properties{}), regions) {} wmma_f32_16x16x16_bf8_fp8GenericAdaptor(RangeT values, ::mlir::DictionaryAttr attrs = nullptr) : wmma_f32_16x16x16_bf8_fp8GenericAdaptor(values, attrs, Properties{}, {}) {} wmma_f32_16x16x16_bf8_fp8GenericAdaptor(RangeT values, const wmma_f32_16x16x16_bf8_fp8GenericAdaptorBase &base) : Base(base), odsOperands(values) {} template >> wmma_f32_16x16x16_bf8_fp8GenericAdaptor(RangeT values, LateInst op) : Base(op), odsOperands(values) {} std::pair getODSOperandIndexAndLength(unsigned index) { return Base::getODSOperandIndexAndLength(index, odsOperands.size()); } RangeT getODSOperands(unsigned index) { auto valueRange = getODSOperandIndexAndLength(index); return {std::next(odsOperands.begin(), valueRange.first), std::next(odsOperands.begin(), valueRange.first + valueRange.second)}; } ValueT getA() { return (*getODSOperands(0).begin()); } ValueT getB() { return (*getODSOperands(1).begin()); } ValueT getC() { return (*getODSOperands(2).begin()); } RangeT getOperands() { return odsOperands; } private: RangeT odsOperands; }; class wmma_f32_16x16x16_bf8_fp8Adaptor : public wmma_f32_16x16x16_bf8_fp8GenericAdaptor<::mlir::ValueRange> { public: using wmma_f32_16x16x16_bf8_fp8GenericAdaptor::wmma_f32_16x16x16_bf8_fp8GenericAdaptor; wmma_f32_16x16x16_bf8_fp8Adaptor(wmma_f32_16x16x16_bf8_fp8 op); ::llvm::LogicalResult verify(::mlir::Location loc); }; class wmma_f32_16x16x16_bf8_fp8 : public ::mlir::Op::Impl, ::mlir::OpTrait::ZeroSuccessors, ::mlir::OpTrait::NOperands<3>::Impl, ::mlir::OpTrait::OpInvariants> { public: using Op::Op; using Op::print; using Adaptor = wmma_f32_16x16x16_bf8_fp8Adaptor; template using GenericAdaptor = wmma_f32_16x16x16_bf8_fp8GenericAdaptor; using FoldAdaptor = GenericAdaptor<::llvm::ArrayRef<::mlir::Attribute>>; static constexpr int odsIndex_a = 0; static constexpr int odsIndex_b = 1; static constexpr int odsIndex_c = 2; using Properties = FoldAdaptor::Properties; static ::llvm::ArrayRef<::llvm::StringRef> getAttributeNames() { return {}; } static constexpr ::llvm::StringLiteral getOperationName() { return ::llvm::StringLiteral("rocdl.wmma.f32.16x16x16.bf8_fp8"); } std::pair getODSOperandIndexAndLength(unsigned index) { return {index, 1}; } ::mlir::Operation::operand_range getODSOperands(unsigned index) { auto valueRange = getODSOperandIndexAndLength(index); return {std::next(getOperation()->operand_begin(), valueRange.first), std::next(getOperation()->operand_begin(), valueRange.first + valueRange.second)}; } ::mlir::TypedValue<::mlir::Type> getA() { return ::llvm::cast<::mlir::TypedValue<::mlir::Type>>(*getODSOperands(0).begin()); } ::mlir::TypedValue<::mlir::Type> getB() { return ::llvm::cast<::mlir::TypedValue<::mlir::Type>>(*getODSOperands(1).begin()); } ::mlir::TypedValue<::mlir::Type> getC() { return ::llvm::cast<::mlir::TypedValue<::mlir::Type>>(*getODSOperands(2).begin()); } ::mlir::OpOperand &getAMutable() { auto range = getODSOperandIndexAndLength(0); return getOperation()->getOpOperand(range.first); } ::mlir::OpOperand &getBMutable() { auto range = getODSOperandIndexAndLength(1); return getOperation()->getOpOperand(range.first); } ::mlir::OpOperand &getCMutable() { auto range = getODSOperandIndexAndLength(2); return getOperation()->getOpOperand(range.first); } std::pair getODSResultIndexAndLength(unsigned index) { return {index, 1}; } ::mlir::Operation::result_range getODSResults(unsigned index) { auto valueRange = getODSResultIndexAndLength(index); return {std::next(getOperation()->result_begin(), valueRange.first), std::next(getOperation()->result_begin(), valueRange.first + valueRange.second)}; } ::mlir::TypedValue<::mlir::Type> getRes() { return ::llvm::cast<::mlir::TypedValue<::mlir::Type>>(*getODSResults(0).begin()); } static ::llvm::LogicalResult setPropertiesFromAttr(Properties &prop, ::mlir::Attribute attr, ::llvm::function_ref<::mlir::InFlightDiagnostic()> emitError); static ::mlir::Attribute getPropertiesAsAttr(::mlir::MLIRContext *ctx, const Properties &prop); static llvm::hash_code computePropertiesHash(const Properties &prop); static std::optional getInherentAttr(::mlir::MLIRContext *ctx, const Properties &prop, llvm::StringRef name); static void setInherentAttr(Properties &prop, llvm::StringRef name, mlir::Attribute value); static void populateInherentAttrs(::mlir::MLIRContext *ctx, const Properties &prop, ::mlir::NamedAttrList &attrs); static ::llvm::LogicalResult verifyInherentAttrs(::mlir::OperationName opName, ::mlir::NamedAttrList &attrs, llvm::function_ref<::mlir::InFlightDiagnostic()> emitError); static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::Type res, ::mlir::Value a, ::mlir::Value b, ::mlir::Value c); static wmma_f32_16x16x16_bf8_fp8 create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::Type res, ::mlir::Value a, ::mlir::Value b, ::mlir::Value c); static wmma_f32_16x16x16_bf8_fp8 create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::Type res, ::mlir::Value a, ::mlir::Value b, ::mlir::Value c); static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::Value a, ::mlir::Value b, ::mlir::Value c); static wmma_f32_16x16x16_bf8_fp8 create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::Value a, ::mlir::Value b, ::mlir::Value c); static wmma_f32_16x16x16_bf8_fp8 create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::Value a, ::mlir::Value b, ::mlir::Value c); static void build(::mlir::OpBuilder &, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, ::llvm::ArrayRef<::mlir::NamedAttribute> attributes = {}); static wmma_f32_16x16x16_bf8_fp8 create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, ::llvm::ArrayRef<::mlir::NamedAttribute> attributes = {}); static wmma_f32_16x16x16_bf8_fp8 create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, ::llvm::ArrayRef<::mlir::NamedAttribute> attributes = {}); static void build(::mlir::OpBuilder &, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, const Properties &properties, ::llvm::ArrayRef<::mlir::NamedAttribute> discardableAttributes = {}); static wmma_f32_16x16x16_bf8_fp8 create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, const Properties &properties, ::llvm::ArrayRef<::mlir::NamedAttribute> discardableAttributes = {}); static wmma_f32_16x16x16_bf8_fp8 create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, const Properties &properties, ::llvm::ArrayRef<::mlir::NamedAttribute> discardableAttributes = {}); ::llvm::LogicalResult verifyInvariantsImpl(); ::llvm::LogicalResult verifyInvariants(); static ::mlir::ParseResult parse(::mlir::OpAsmParser &parser, ::mlir::OperationState &result); void print(::mlir::OpAsmPrinter &_odsPrinter); public: }; } // namespace mlir::ROCDL MLIR_DECLARE_EXPLICIT_TYPE_ID(::mlir::ROCDL::wmma_f32_16x16x16_bf8_fp8) namespace mlir::ROCDL { //===----------------------------------------------------------------------===// // ::mlir::ROCDL::wmma_f32_16x16x16_f16 declarations //===----------------------------------------------------------------------===// namespace detail { class wmma_f32_16x16x16_f16GenericAdaptorBase { public: using Properties = ::mlir::EmptyProperties; protected: ::mlir::DictionaryAttr odsAttrs; ::std::optional<::mlir::OperationName> odsOpName; Properties properties; ::mlir::RegionRange odsRegions; public: wmma_f32_16x16x16_f16GenericAdaptorBase(::mlir::DictionaryAttr attrs, const Properties &properties, ::mlir::RegionRange regions = {}) : odsAttrs(attrs), properties(properties), odsRegions(regions) { if (odsAttrs) odsOpName.emplace("rocdl.wmma.f32.16x16x16.f16", odsAttrs.getContext()); } wmma_f32_16x16x16_f16GenericAdaptorBase(wmma_f32_16x16x16_f16 op); std::pair getODSOperandIndexAndLength(unsigned index, unsigned odsOperandsSize) { return {index, 1}; } const Properties &getProperties() { return properties; } ::mlir::DictionaryAttr getAttributes() { return odsAttrs; } }; } // namespace detail template class wmma_f32_16x16x16_f16GenericAdaptor : public detail::wmma_f32_16x16x16_f16GenericAdaptorBase { using ValueT = ::llvm::detail::ValueOfRange; using Base = detail::wmma_f32_16x16x16_f16GenericAdaptorBase; static constexpr int odsIndex_a = 0; static constexpr int odsIndex_b = 1; static constexpr int odsIndex_c = 2; public: wmma_f32_16x16x16_f16GenericAdaptor(RangeT values, ::mlir::DictionaryAttr attrs, const Properties &properties, ::mlir::RegionRange regions = {}) : Base(attrs, properties, regions), odsOperands(values) {} wmma_f32_16x16x16_f16GenericAdaptor(RangeT values, ::mlir::DictionaryAttr attrs, ::mlir::PropertyRef properties, ::mlir::RegionRange regions = {}) : wmma_f32_16x16x16_f16GenericAdaptor(values, attrs, (properties ? *properties.as() : Properties{}), regions) {} wmma_f32_16x16x16_f16GenericAdaptor(RangeT values, ::mlir::DictionaryAttr attrs = nullptr) : wmma_f32_16x16x16_f16GenericAdaptor(values, attrs, Properties{}, {}) {} wmma_f32_16x16x16_f16GenericAdaptor(RangeT values, const wmma_f32_16x16x16_f16GenericAdaptorBase &base) : Base(base), odsOperands(values) {} template >> wmma_f32_16x16x16_f16GenericAdaptor(RangeT values, LateInst op) : Base(op), odsOperands(values) {} std::pair getODSOperandIndexAndLength(unsigned index) { return Base::getODSOperandIndexAndLength(index, odsOperands.size()); } RangeT getODSOperands(unsigned index) { auto valueRange = getODSOperandIndexAndLength(index); return {std::next(odsOperands.begin(), valueRange.first), std::next(odsOperands.begin(), valueRange.first + valueRange.second)}; } ValueT getA() { return (*getODSOperands(0).begin()); } ValueT getB() { return (*getODSOperands(1).begin()); } ValueT getC() { return (*getODSOperands(2).begin()); } RangeT getOperands() { return odsOperands; } private: RangeT odsOperands; }; class wmma_f32_16x16x16_f16Adaptor : public wmma_f32_16x16x16_f16GenericAdaptor<::mlir::ValueRange> { public: using wmma_f32_16x16x16_f16GenericAdaptor::wmma_f32_16x16x16_f16GenericAdaptor; wmma_f32_16x16x16_f16Adaptor(wmma_f32_16x16x16_f16 op); ::llvm::LogicalResult verify(::mlir::Location loc); }; class wmma_f32_16x16x16_f16 : public ::mlir::Op::Impl, ::mlir::OpTrait::ZeroSuccessors, ::mlir::OpTrait::NOperands<3>::Impl, ::mlir::OpTrait::OpInvariants> { public: using Op::Op; using Op::print; using Adaptor = wmma_f32_16x16x16_f16Adaptor; template using GenericAdaptor = wmma_f32_16x16x16_f16GenericAdaptor; using FoldAdaptor = GenericAdaptor<::llvm::ArrayRef<::mlir::Attribute>>; static constexpr int odsIndex_a = 0; static constexpr int odsIndex_b = 1; static constexpr int odsIndex_c = 2; using Properties = FoldAdaptor::Properties; static ::llvm::ArrayRef<::llvm::StringRef> getAttributeNames() { return {}; } static constexpr ::llvm::StringLiteral getOperationName() { return ::llvm::StringLiteral("rocdl.wmma.f32.16x16x16.f16"); } std::pair getODSOperandIndexAndLength(unsigned index) { return {index, 1}; } ::mlir::Operation::operand_range getODSOperands(unsigned index) { auto valueRange = getODSOperandIndexAndLength(index); return {std::next(getOperation()->operand_begin(), valueRange.first), std::next(getOperation()->operand_begin(), valueRange.first + valueRange.second)}; } ::mlir::TypedValue<::mlir::Type> getA() { return ::llvm::cast<::mlir::TypedValue<::mlir::Type>>(*getODSOperands(0).begin()); } ::mlir::TypedValue<::mlir::Type> getB() { return ::llvm::cast<::mlir::TypedValue<::mlir::Type>>(*getODSOperands(1).begin()); } ::mlir::TypedValue<::mlir::Type> getC() { return ::llvm::cast<::mlir::TypedValue<::mlir::Type>>(*getODSOperands(2).begin()); } ::mlir::OpOperand &getAMutable() { auto range = getODSOperandIndexAndLength(0); return getOperation()->getOpOperand(range.first); } ::mlir::OpOperand &getBMutable() { auto range = getODSOperandIndexAndLength(1); return getOperation()->getOpOperand(range.first); } ::mlir::OpOperand &getCMutable() { auto range = getODSOperandIndexAndLength(2); return getOperation()->getOpOperand(range.first); } std::pair getODSResultIndexAndLength(unsigned index) { return {index, 1}; } ::mlir::Operation::result_range getODSResults(unsigned index) { auto valueRange = getODSResultIndexAndLength(index); return {std::next(getOperation()->result_begin(), valueRange.first), std::next(getOperation()->result_begin(), valueRange.first + valueRange.second)}; } ::mlir::TypedValue<::mlir::Type> getRes() { return ::llvm::cast<::mlir::TypedValue<::mlir::Type>>(*getODSResults(0).begin()); } static ::llvm::LogicalResult setPropertiesFromAttr(Properties &prop, ::mlir::Attribute attr, ::llvm::function_ref<::mlir::InFlightDiagnostic()> emitError); static ::mlir::Attribute getPropertiesAsAttr(::mlir::MLIRContext *ctx, const Properties &prop); static llvm::hash_code computePropertiesHash(const Properties &prop); static std::optional getInherentAttr(::mlir::MLIRContext *ctx, const Properties &prop, llvm::StringRef name); static void setInherentAttr(Properties &prop, llvm::StringRef name, mlir::Attribute value); static void populateInherentAttrs(::mlir::MLIRContext *ctx, const Properties &prop, ::mlir::NamedAttrList &attrs); static ::llvm::LogicalResult verifyInherentAttrs(::mlir::OperationName opName, ::mlir::NamedAttrList &attrs, llvm::function_ref<::mlir::InFlightDiagnostic()> emitError); static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::Type res, ::mlir::Value a, ::mlir::Value b, ::mlir::Value c); static wmma_f32_16x16x16_f16 create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::Type res, ::mlir::Value a, ::mlir::Value b, ::mlir::Value c); static wmma_f32_16x16x16_f16 create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::Type res, ::mlir::Value a, ::mlir::Value b, ::mlir::Value c); static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::Value a, ::mlir::Value b, ::mlir::Value c); static wmma_f32_16x16x16_f16 create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::Value a, ::mlir::Value b, ::mlir::Value c); static wmma_f32_16x16x16_f16 create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::Value a, ::mlir::Value b, ::mlir::Value c); static void build(::mlir::OpBuilder &, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, ::llvm::ArrayRef<::mlir::NamedAttribute> attributes = {}); static wmma_f32_16x16x16_f16 create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, ::llvm::ArrayRef<::mlir::NamedAttribute> attributes = {}); static wmma_f32_16x16x16_f16 create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, ::llvm::ArrayRef<::mlir::NamedAttribute> attributes = {}); static void build(::mlir::OpBuilder &, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, const Properties &properties, ::llvm::ArrayRef<::mlir::NamedAttribute> discardableAttributes = {}); static wmma_f32_16x16x16_f16 create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, const Properties &properties, ::llvm::ArrayRef<::mlir::NamedAttribute> discardableAttributes = {}); static wmma_f32_16x16x16_f16 create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, const Properties &properties, ::llvm::ArrayRef<::mlir::NamedAttribute> discardableAttributes = {}); ::llvm::LogicalResult verifyInvariantsImpl(); ::llvm::LogicalResult verifyInvariants(); static ::mlir::ParseResult parse(::mlir::OpAsmParser &parser, ::mlir::OperationState &result); void print(::mlir::OpAsmPrinter &_odsPrinter); public: }; } // namespace mlir::ROCDL MLIR_DECLARE_EXPLICIT_TYPE_ID(::mlir::ROCDL::wmma_f32_16x16x16_f16) namespace mlir::ROCDL { //===----------------------------------------------------------------------===// // ::mlir::ROCDL::wmma_f32_16x16x16_fp8_bf8 declarations //===----------------------------------------------------------------------===// namespace detail { class wmma_f32_16x16x16_fp8_bf8GenericAdaptorBase { public: using Properties = ::mlir::EmptyProperties; protected: ::mlir::DictionaryAttr odsAttrs; ::std::optional<::mlir::OperationName> odsOpName; Properties properties; ::mlir::RegionRange odsRegions; public: wmma_f32_16x16x16_fp8_bf8GenericAdaptorBase(::mlir::DictionaryAttr attrs, const Properties &properties, ::mlir::RegionRange regions = {}) : odsAttrs(attrs), properties(properties), odsRegions(regions) { if (odsAttrs) odsOpName.emplace("rocdl.wmma.f32.16x16x16.fp8_bf8", odsAttrs.getContext()); } wmma_f32_16x16x16_fp8_bf8GenericAdaptorBase(wmma_f32_16x16x16_fp8_bf8 op); std::pair getODSOperandIndexAndLength(unsigned index, unsigned odsOperandsSize) { return {index, 1}; } const Properties &getProperties() { return properties; } ::mlir::DictionaryAttr getAttributes() { return odsAttrs; } }; } // namespace detail template class wmma_f32_16x16x16_fp8_bf8GenericAdaptor : public detail::wmma_f32_16x16x16_fp8_bf8GenericAdaptorBase { using ValueT = ::llvm::detail::ValueOfRange; using Base = detail::wmma_f32_16x16x16_fp8_bf8GenericAdaptorBase; static constexpr int odsIndex_a = 0; static constexpr int odsIndex_b = 1; static constexpr int odsIndex_c = 2; public: wmma_f32_16x16x16_fp8_bf8GenericAdaptor(RangeT values, ::mlir::DictionaryAttr attrs, const Properties &properties, ::mlir::RegionRange regions = {}) : Base(attrs, properties, regions), odsOperands(values) {} wmma_f32_16x16x16_fp8_bf8GenericAdaptor(RangeT values, ::mlir::DictionaryAttr attrs, ::mlir::PropertyRef properties, ::mlir::RegionRange regions = {}) : wmma_f32_16x16x16_fp8_bf8GenericAdaptor(values, attrs, (properties ? *properties.as() : Properties{}), regions) {} wmma_f32_16x16x16_fp8_bf8GenericAdaptor(RangeT values, ::mlir::DictionaryAttr attrs = nullptr) : wmma_f32_16x16x16_fp8_bf8GenericAdaptor(values, attrs, Properties{}, {}) {} wmma_f32_16x16x16_fp8_bf8GenericAdaptor(RangeT values, const wmma_f32_16x16x16_fp8_bf8GenericAdaptorBase &base) : Base(base), odsOperands(values) {} template >> wmma_f32_16x16x16_fp8_bf8GenericAdaptor(RangeT values, LateInst op) : Base(op), odsOperands(values) {} std::pair getODSOperandIndexAndLength(unsigned index) { return Base::getODSOperandIndexAndLength(index, odsOperands.size()); } RangeT getODSOperands(unsigned index) { auto valueRange = getODSOperandIndexAndLength(index); return {std::next(odsOperands.begin(), valueRange.first), std::next(odsOperands.begin(), valueRange.first + valueRange.second)}; } ValueT getA() { return (*getODSOperands(0).begin()); } ValueT getB() { return (*getODSOperands(1).begin()); } ValueT getC() { return (*getODSOperands(2).begin()); } RangeT getOperands() { return odsOperands; } private: RangeT odsOperands; }; class wmma_f32_16x16x16_fp8_bf8Adaptor : public wmma_f32_16x16x16_fp8_bf8GenericAdaptor<::mlir::ValueRange> { public: using wmma_f32_16x16x16_fp8_bf8GenericAdaptor::wmma_f32_16x16x16_fp8_bf8GenericAdaptor; wmma_f32_16x16x16_fp8_bf8Adaptor(wmma_f32_16x16x16_fp8_bf8 op); ::llvm::LogicalResult verify(::mlir::Location loc); }; class wmma_f32_16x16x16_fp8_bf8 : public ::mlir::Op::Impl, ::mlir::OpTrait::ZeroSuccessors, ::mlir::OpTrait::NOperands<3>::Impl, ::mlir::OpTrait::OpInvariants> { public: using Op::Op; using Op::print; using Adaptor = wmma_f32_16x16x16_fp8_bf8Adaptor; template using GenericAdaptor = wmma_f32_16x16x16_fp8_bf8GenericAdaptor; using FoldAdaptor = GenericAdaptor<::llvm::ArrayRef<::mlir::Attribute>>; static constexpr int odsIndex_a = 0; static constexpr int odsIndex_b = 1; static constexpr int odsIndex_c = 2; using Properties = FoldAdaptor::Properties; static ::llvm::ArrayRef<::llvm::StringRef> getAttributeNames() { return {}; } static constexpr ::llvm::StringLiteral getOperationName() { return ::llvm::StringLiteral("rocdl.wmma.f32.16x16x16.fp8_bf8"); } std::pair getODSOperandIndexAndLength(unsigned index) { return {index, 1}; } ::mlir::Operation::operand_range getODSOperands(unsigned index) { auto valueRange = getODSOperandIndexAndLength(index); return {std::next(getOperation()->operand_begin(), valueRange.first), std::next(getOperation()->operand_begin(), valueRange.first + valueRange.second)}; } ::mlir::TypedValue<::mlir::Type> getA() { return ::llvm::cast<::mlir::TypedValue<::mlir::Type>>(*getODSOperands(0).begin()); } ::mlir::TypedValue<::mlir::Type> getB() { return ::llvm::cast<::mlir::TypedValue<::mlir::Type>>(*getODSOperands(1).begin()); } ::mlir::TypedValue<::mlir::Type> getC() { return ::llvm::cast<::mlir::TypedValue<::mlir::Type>>(*getODSOperands(2).begin()); } ::mlir::OpOperand &getAMutable() { auto range = getODSOperandIndexAndLength(0); return getOperation()->getOpOperand(range.first); } ::mlir::OpOperand &getBMutable() { auto range = getODSOperandIndexAndLength(1); return getOperation()->getOpOperand(range.first); } ::mlir::OpOperand &getCMutable() { auto range = getODSOperandIndexAndLength(2); return getOperation()->getOpOperand(range.first); } std::pair getODSResultIndexAndLength(unsigned index) { return {index, 1}; } ::mlir::Operation::result_range getODSResults(unsigned index) { auto valueRange = getODSResultIndexAndLength(index); return {std::next(getOperation()->result_begin(), valueRange.first), std::next(getOperation()->result_begin(), valueRange.first + valueRange.second)}; } ::mlir::TypedValue<::mlir::Type> getRes() { return ::llvm::cast<::mlir::TypedValue<::mlir::Type>>(*getODSResults(0).begin()); } static ::llvm::LogicalResult setPropertiesFromAttr(Properties &prop, ::mlir::Attribute attr, ::llvm::function_ref<::mlir::InFlightDiagnostic()> emitError); static ::mlir::Attribute getPropertiesAsAttr(::mlir::MLIRContext *ctx, const Properties &prop); static llvm::hash_code computePropertiesHash(const Properties &prop); static std::optional getInherentAttr(::mlir::MLIRContext *ctx, const Properties &prop, llvm::StringRef name); static void setInherentAttr(Properties &prop, llvm::StringRef name, mlir::Attribute value); static void populateInherentAttrs(::mlir::MLIRContext *ctx, const Properties &prop, ::mlir::NamedAttrList &attrs); static ::llvm::LogicalResult verifyInherentAttrs(::mlir::OperationName opName, ::mlir::NamedAttrList &attrs, llvm::function_ref<::mlir::InFlightDiagnostic()> emitError); static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::Type res, ::mlir::Value a, ::mlir::Value b, ::mlir::Value c); static wmma_f32_16x16x16_fp8_bf8 create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::Type res, ::mlir::Value a, ::mlir::Value b, ::mlir::Value c); static wmma_f32_16x16x16_fp8_bf8 create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::Type res, ::mlir::Value a, ::mlir::Value b, ::mlir::Value c); static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::Value a, ::mlir::Value b, ::mlir::Value c); static wmma_f32_16x16x16_fp8_bf8 create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::Value a, ::mlir::Value b, ::mlir::Value c); static wmma_f32_16x16x16_fp8_bf8 create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::Value a, ::mlir::Value b, ::mlir::Value c); static void build(::mlir::OpBuilder &, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, ::llvm::ArrayRef<::mlir::NamedAttribute> attributes = {}); static wmma_f32_16x16x16_fp8_bf8 create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, ::llvm::ArrayRef<::mlir::NamedAttribute> attributes = {}); static wmma_f32_16x16x16_fp8_bf8 create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, ::llvm::ArrayRef<::mlir::NamedAttribute> attributes = {}); static void build(::mlir::OpBuilder &, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, const Properties &properties, ::llvm::ArrayRef<::mlir::NamedAttribute> discardableAttributes = {}); static wmma_f32_16x16x16_fp8_bf8 create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, const Properties &properties, ::llvm::ArrayRef<::mlir::NamedAttribute> discardableAttributes = {}); static wmma_f32_16x16x16_fp8_bf8 create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, const Properties &properties, ::llvm::ArrayRef<::mlir::NamedAttribute> discardableAttributes = {}); ::llvm::LogicalResult verifyInvariantsImpl(); ::llvm::LogicalResult verifyInvariants(); static ::mlir::ParseResult parse(::mlir::OpAsmParser &parser, ::mlir::OperationState &result); void print(::mlir::OpAsmPrinter &_odsPrinter); public: }; } // namespace mlir::ROCDL MLIR_DECLARE_EXPLICIT_TYPE_ID(::mlir::ROCDL::wmma_f32_16x16x16_fp8_bf8) namespace mlir::ROCDL { //===----------------------------------------------------------------------===// // ::mlir::ROCDL::wmma_f32_16x16x16_fp8_fp8 declarations //===----------------------------------------------------------------------===// namespace detail { class wmma_f32_16x16x16_fp8_fp8GenericAdaptorBase { public: using Properties = ::mlir::EmptyProperties; protected: ::mlir::DictionaryAttr odsAttrs; ::std::optional<::mlir::OperationName> odsOpName; Properties properties; ::mlir::RegionRange odsRegions; public: wmma_f32_16x16x16_fp8_fp8GenericAdaptorBase(::mlir::DictionaryAttr attrs, const Properties &properties, ::mlir::RegionRange regions = {}) : odsAttrs(attrs), properties(properties), odsRegions(regions) { if (odsAttrs) odsOpName.emplace("rocdl.wmma.f32.16x16x16.fp8_fp8", odsAttrs.getContext()); } wmma_f32_16x16x16_fp8_fp8GenericAdaptorBase(wmma_f32_16x16x16_fp8_fp8 op); std::pair getODSOperandIndexAndLength(unsigned index, unsigned odsOperandsSize) { return {index, 1}; } const Properties &getProperties() { return properties; } ::mlir::DictionaryAttr getAttributes() { return odsAttrs; } }; } // namespace detail template class wmma_f32_16x16x16_fp8_fp8GenericAdaptor : public detail::wmma_f32_16x16x16_fp8_fp8GenericAdaptorBase { using ValueT = ::llvm::detail::ValueOfRange; using Base = detail::wmma_f32_16x16x16_fp8_fp8GenericAdaptorBase; static constexpr int odsIndex_a = 0; static constexpr int odsIndex_b = 1; static constexpr int odsIndex_c = 2; public: wmma_f32_16x16x16_fp8_fp8GenericAdaptor(RangeT values, ::mlir::DictionaryAttr attrs, const Properties &properties, ::mlir::RegionRange regions = {}) : Base(attrs, properties, regions), odsOperands(values) {} wmma_f32_16x16x16_fp8_fp8GenericAdaptor(RangeT values, ::mlir::DictionaryAttr attrs, ::mlir::PropertyRef properties, ::mlir::RegionRange regions = {}) : wmma_f32_16x16x16_fp8_fp8GenericAdaptor(values, attrs, (properties ? *properties.as() : Properties{}), regions) {} wmma_f32_16x16x16_fp8_fp8GenericAdaptor(RangeT values, ::mlir::DictionaryAttr attrs = nullptr) : wmma_f32_16x16x16_fp8_fp8GenericAdaptor(values, attrs, Properties{}, {}) {} wmma_f32_16x16x16_fp8_fp8GenericAdaptor(RangeT values, const wmma_f32_16x16x16_fp8_fp8GenericAdaptorBase &base) : Base(base), odsOperands(values) {} template >> wmma_f32_16x16x16_fp8_fp8GenericAdaptor(RangeT values, LateInst op) : Base(op), odsOperands(values) {} std::pair getODSOperandIndexAndLength(unsigned index) { return Base::getODSOperandIndexAndLength(index, odsOperands.size()); } RangeT getODSOperands(unsigned index) { auto valueRange = getODSOperandIndexAndLength(index); return {std::next(odsOperands.begin(), valueRange.first), std::next(odsOperands.begin(), valueRange.first + valueRange.second)}; } ValueT getA() { return (*getODSOperands(0).begin()); } ValueT getB() { return (*getODSOperands(1).begin()); } ValueT getC() { return (*getODSOperands(2).begin()); } RangeT getOperands() { return odsOperands; } private: RangeT odsOperands; }; class wmma_f32_16x16x16_fp8_fp8Adaptor : public wmma_f32_16x16x16_fp8_fp8GenericAdaptor<::mlir::ValueRange> { public: using wmma_f32_16x16x16_fp8_fp8GenericAdaptor::wmma_f32_16x16x16_fp8_fp8GenericAdaptor; wmma_f32_16x16x16_fp8_fp8Adaptor(wmma_f32_16x16x16_fp8_fp8 op); ::llvm::LogicalResult verify(::mlir::Location loc); }; class wmma_f32_16x16x16_fp8_fp8 : public ::mlir::Op::Impl, ::mlir::OpTrait::ZeroSuccessors, ::mlir::OpTrait::NOperands<3>::Impl, ::mlir::OpTrait::OpInvariants> { public: using Op::Op; using Op::print; using Adaptor = wmma_f32_16x16x16_fp8_fp8Adaptor; template using GenericAdaptor = wmma_f32_16x16x16_fp8_fp8GenericAdaptor; using FoldAdaptor = GenericAdaptor<::llvm::ArrayRef<::mlir::Attribute>>; static constexpr int odsIndex_a = 0; static constexpr int odsIndex_b = 1; static constexpr int odsIndex_c = 2; using Properties = FoldAdaptor::Properties; static ::llvm::ArrayRef<::llvm::StringRef> getAttributeNames() { return {}; } static constexpr ::llvm::StringLiteral getOperationName() { return ::llvm::StringLiteral("rocdl.wmma.f32.16x16x16.fp8_fp8"); } std::pair getODSOperandIndexAndLength(unsigned index) { return {index, 1}; } ::mlir::Operation::operand_range getODSOperands(unsigned index) { auto valueRange = getODSOperandIndexAndLength(index); return {std::next(getOperation()->operand_begin(), valueRange.first), std::next(getOperation()->operand_begin(), valueRange.first + valueRange.second)}; } ::mlir::TypedValue<::mlir::Type> getA() { return ::llvm::cast<::mlir::TypedValue<::mlir::Type>>(*getODSOperands(0).begin()); } ::mlir::TypedValue<::mlir::Type> getB() { return ::llvm::cast<::mlir::TypedValue<::mlir::Type>>(*getODSOperands(1).begin()); } ::mlir::TypedValue<::mlir::Type> getC() { return ::llvm::cast<::mlir::TypedValue<::mlir::Type>>(*getODSOperands(2).begin()); } ::mlir::OpOperand &getAMutable() { auto range = getODSOperandIndexAndLength(0); return getOperation()->getOpOperand(range.first); } ::mlir::OpOperand &getBMutable() { auto range = getODSOperandIndexAndLength(1); return getOperation()->getOpOperand(range.first); } ::mlir::OpOperand &getCMutable() { auto range = getODSOperandIndexAndLength(2); return getOperation()->getOpOperand(range.first); } std::pair getODSResultIndexAndLength(unsigned index) { return {index, 1}; } ::mlir::Operation::result_range getODSResults(unsigned index) { auto valueRange = getODSResultIndexAndLength(index); return {std::next(getOperation()->result_begin(), valueRange.first), std::next(getOperation()->result_begin(), valueRange.first + valueRange.second)}; } ::mlir::TypedValue<::mlir::Type> getRes() { return ::llvm::cast<::mlir::TypedValue<::mlir::Type>>(*getODSResults(0).begin()); } static ::llvm::LogicalResult setPropertiesFromAttr(Properties &prop, ::mlir::Attribute attr, ::llvm::function_ref<::mlir::InFlightDiagnostic()> emitError); static ::mlir::Attribute getPropertiesAsAttr(::mlir::MLIRContext *ctx, const Properties &prop); static llvm::hash_code computePropertiesHash(const Properties &prop); static std::optional getInherentAttr(::mlir::MLIRContext *ctx, const Properties &prop, llvm::StringRef name); static void setInherentAttr(Properties &prop, llvm::StringRef name, mlir::Attribute value); static void populateInherentAttrs(::mlir::MLIRContext *ctx, const Properties &prop, ::mlir::NamedAttrList &attrs); static ::llvm::LogicalResult verifyInherentAttrs(::mlir::OperationName opName, ::mlir::NamedAttrList &attrs, llvm::function_ref<::mlir::InFlightDiagnostic()> emitError); static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::Type res, ::mlir::Value a, ::mlir::Value b, ::mlir::Value c); static wmma_f32_16x16x16_fp8_fp8 create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::Type res, ::mlir::Value a, ::mlir::Value b, ::mlir::Value c); static wmma_f32_16x16x16_fp8_fp8 create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::Type res, ::mlir::Value a, ::mlir::Value b, ::mlir::Value c); static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::Value a, ::mlir::Value b, ::mlir::Value c); static wmma_f32_16x16x16_fp8_fp8 create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::Value a, ::mlir::Value b, ::mlir::Value c); static wmma_f32_16x16x16_fp8_fp8 create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::Value a, ::mlir::Value b, ::mlir::Value c); static void build(::mlir::OpBuilder &, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, ::llvm::ArrayRef<::mlir::NamedAttribute> attributes = {}); static wmma_f32_16x16x16_fp8_fp8 create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, ::llvm::ArrayRef<::mlir::NamedAttribute> attributes = {}); static wmma_f32_16x16x16_fp8_fp8 create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, ::llvm::ArrayRef<::mlir::NamedAttribute> attributes = {}); static void build(::mlir::OpBuilder &, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, const Properties &properties, ::llvm::ArrayRef<::mlir::NamedAttribute> discardableAttributes = {}); static wmma_f32_16x16x16_fp8_fp8 create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, const Properties &properties, ::llvm::ArrayRef<::mlir::NamedAttribute> discardableAttributes = {}); static wmma_f32_16x16x16_fp8_fp8 create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, const Properties &properties, ::llvm::ArrayRef<::mlir::NamedAttribute> discardableAttributes = {}); ::llvm::LogicalResult verifyInvariantsImpl(); ::llvm::LogicalResult verifyInvariants(); static ::mlir::ParseResult parse(::mlir::OpAsmParser &parser, ::mlir::OperationState &result); void print(::mlir::OpAsmPrinter &_odsPrinter); public: }; } // namespace mlir::ROCDL MLIR_DECLARE_EXPLICIT_TYPE_ID(::mlir::ROCDL::wmma_f32_16x16x16_fp8_fp8) namespace mlir::ROCDL { //===----------------------------------------------------------------------===// // ::mlir::ROCDL::wmma_f32_16x16x32_bf16 declarations //===----------------------------------------------------------------------===// namespace detail { class wmma_f32_16x16x32_bf16GenericAdaptorBase { public: struct Properties { using modCTy = ::mlir::ROCDL::WMMACModifierAttr; modCTy modC; auto getModC() const { auto &propStorage = this->modC; return ::llvm::dyn_cast_or_null<::mlir::ROCDL::WMMACModifierAttr>(propStorage); } void setModC(const ::mlir::ROCDL::WMMACModifierAttr &propValue) { this->modC = propValue; } using reuseATy = ::mlir::IntegerAttr; reuseATy reuseA; auto getReuseA() const { auto &propStorage = this->reuseA; return ::llvm::dyn_cast_or_null<::mlir::IntegerAttr>(propStorage); } void setReuseA(const ::mlir::IntegerAttr &propValue) { this->reuseA = propValue; } using reuseBTy = ::mlir::IntegerAttr; reuseBTy reuseB; auto getReuseB() const { auto &propStorage = this->reuseB; return ::llvm::dyn_cast_or_null<::mlir::IntegerAttr>(propStorage); } void setReuseB(const ::mlir::IntegerAttr &propValue) { this->reuseB = propValue; } bool operator==(const Properties &rhs) const { return rhs.modC == this->modC && rhs.reuseA == this->reuseA && rhs.reuseB == this->reuseB && true; } bool operator!=(const Properties &rhs) const { return !(*this == rhs); } }; protected: ::mlir::DictionaryAttr odsAttrs; ::std::optional<::mlir::OperationName> odsOpName; Properties properties; ::mlir::RegionRange odsRegions; public: wmma_f32_16x16x32_bf16GenericAdaptorBase(::mlir::DictionaryAttr attrs, const Properties &properties, ::mlir::RegionRange regions = {}) : odsAttrs(attrs), properties(properties), odsRegions(regions) { if (odsAttrs) odsOpName.emplace("rocdl.wmma.f32.16x16x32.bf16", odsAttrs.getContext()); } wmma_f32_16x16x32_bf16GenericAdaptorBase(wmma_f32_16x16x32_bf16 op); std::pair getODSOperandIndexAndLength(unsigned index, unsigned odsOperandsSize) { return {index, 1}; } const Properties &getProperties() { return properties; } ::mlir::DictionaryAttr getAttributes() { return odsAttrs; } ::mlir::ROCDL::WMMACModifierAttr getModCAttr(); ::mlir::ROCDL::WMMACModifier getModC(); ::mlir::IntegerAttr getReuseAAttr(); bool getReuseA(); ::mlir::IntegerAttr getReuseBAttr(); bool getReuseB(); }; } // namespace detail template class wmma_f32_16x16x32_bf16GenericAdaptor : public detail::wmma_f32_16x16x32_bf16GenericAdaptorBase { using ValueT = ::llvm::detail::ValueOfRange; using Base = detail::wmma_f32_16x16x32_bf16GenericAdaptorBase; static constexpr int odsIndex_a = 0; static constexpr int odsIndex_b = 1; static constexpr int odsIndex_c = 2; public: wmma_f32_16x16x32_bf16GenericAdaptor(RangeT values, ::mlir::DictionaryAttr attrs, const Properties &properties, ::mlir::RegionRange regions = {}) : Base(attrs, properties, regions), odsOperands(values) {} wmma_f32_16x16x32_bf16GenericAdaptor(RangeT values, ::mlir::DictionaryAttr attrs, ::mlir::PropertyRef properties, ::mlir::RegionRange regions = {}) : wmma_f32_16x16x32_bf16GenericAdaptor(values, attrs, (properties ? *properties.as() : Properties{}), regions) {} wmma_f32_16x16x32_bf16GenericAdaptor(RangeT values, ::mlir::DictionaryAttr attrs = nullptr) : wmma_f32_16x16x32_bf16GenericAdaptor(values, attrs, Properties{}, {}) {} wmma_f32_16x16x32_bf16GenericAdaptor(RangeT values, const wmma_f32_16x16x32_bf16GenericAdaptorBase &base) : Base(base), odsOperands(values) {} template >> wmma_f32_16x16x32_bf16GenericAdaptor(RangeT values, LateInst op) : Base(op), odsOperands(values) {} std::pair getODSOperandIndexAndLength(unsigned index) { return Base::getODSOperandIndexAndLength(index, odsOperands.size()); } RangeT getODSOperands(unsigned index) { auto valueRange = getODSOperandIndexAndLength(index); return {std::next(odsOperands.begin(), valueRange.first), std::next(odsOperands.begin(), valueRange.first + valueRange.second)}; } ValueT getA() { return (*getODSOperands(0).begin()); } ValueT getB() { return (*getODSOperands(1).begin()); } ValueT getC() { return (*getODSOperands(2).begin()); } RangeT getOperands() { return odsOperands; } private: RangeT odsOperands; }; class wmma_f32_16x16x32_bf16Adaptor : public wmma_f32_16x16x32_bf16GenericAdaptor<::mlir::ValueRange> { public: using wmma_f32_16x16x32_bf16GenericAdaptor::wmma_f32_16x16x32_bf16GenericAdaptor; wmma_f32_16x16x32_bf16Adaptor(wmma_f32_16x16x32_bf16 op); ::llvm::LogicalResult verify(::mlir::Location loc); }; class wmma_f32_16x16x32_bf16 : public ::mlir::Op::Impl, ::mlir::OpTrait::ZeroSuccessors, ::mlir::OpTrait::NOperands<3>::Impl, ::mlir::OpTrait::OpInvariants, ::mlir::BytecodeOpInterface::Trait> { public: using Op::Op; using Op::print; using Adaptor = wmma_f32_16x16x32_bf16Adaptor; template using GenericAdaptor = wmma_f32_16x16x32_bf16GenericAdaptor; using FoldAdaptor = GenericAdaptor<::llvm::ArrayRef<::mlir::Attribute>>; static constexpr int odsIndex_a = 0; static constexpr int odsIndex_b = 1; static constexpr int odsIndex_c = 2; using Properties = FoldAdaptor::Properties; static ::llvm::ArrayRef<::llvm::StringRef> getAttributeNames() { static ::llvm::StringRef attrNames[] = {::llvm::StringRef("modC"), ::llvm::StringRef("reuseA"), ::llvm::StringRef("reuseB")}; return ::llvm::ArrayRef(attrNames); } ::mlir::StringAttr getModCAttrName() { return getAttributeNameForIndex(0); } static ::mlir::StringAttr getModCAttrName(::mlir::OperationName name) { return getAttributeNameForIndex(name, 0); } ::mlir::StringAttr getReuseAAttrName() { return getAttributeNameForIndex(1); } static ::mlir::StringAttr getReuseAAttrName(::mlir::OperationName name) { return getAttributeNameForIndex(name, 1); } ::mlir::StringAttr getReuseBAttrName() { return getAttributeNameForIndex(2); } static ::mlir::StringAttr getReuseBAttrName(::mlir::OperationName name) { return getAttributeNameForIndex(name, 2); } static constexpr ::llvm::StringLiteral getOperationName() { return ::llvm::StringLiteral("rocdl.wmma.f32.16x16x32.bf16"); } std::pair getODSOperandIndexAndLength(unsigned index) { return {index, 1}; } ::mlir::Operation::operand_range getODSOperands(unsigned index) { auto valueRange = getODSOperandIndexAndLength(index); return {std::next(getOperation()->operand_begin(), valueRange.first), std::next(getOperation()->operand_begin(), valueRange.first + valueRange.second)}; } ::mlir::TypedValue<::mlir::Type> getA() { return ::llvm::cast<::mlir::TypedValue<::mlir::Type>>(*getODSOperands(0).begin()); } ::mlir::TypedValue<::mlir::Type> getB() { return ::llvm::cast<::mlir::TypedValue<::mlir::Type>>(*getODSOperands(1).begin()); } ::mlir::TypedValue<::mlir::Type> getC() { return ::llvm::cast<::mlir::TypedValue<::mlir::Type>>(*getODSOperands(2).begin()); } ::mlir::OpOperand &getAMutable() { auto range = getODSOperandIndexAndLength(0); return getOperation()->getOpOperand(range.first); } ::mlir::OpOperand &getBMutable() { auto range = getODSOperandIndexAndLength(1); return getOperation()->getOpOperand(range.first); } ::mlir::OpOperand &getCMutable() { auto range = getODSOperandIndexAndLength(2); return getOperation()->getOpOperand(range.first); } std::pair getODSResultIndexAndLength(unsigned index) { return {index, 1}; } ::mlir::Operation::result_range getODSResults(unsigned index) { auto valueRange = getODSResultIndexAndLength(index); return {std::next(getOperation()->result_begin(), valueRange.first), std::next(getOperation()->result_begin(), valueRange.first + valueRange.second)}; } ::mlir::TypedValue<::mlir::Type> getRes() { return ::llvm::cast<::mlir::TypedValue<::mlir::Type>>(*getODSResults(0).begin()); } static ::llvm::LogicalResult setPropertiesFromAttr(Properties &prop, ::mlir::Attribute attr, ::llvm::function_ref<::mlir::InFlightDiagnostic()> emitError); static ::mlir::Attribute getPropertiesAsAttr(::mlir::MLIRContext *ctx, const Properties &prop); static llvm::hash_code computePropertiesHash(const Properties &prop); static std::optional getInherentAttr(::mlir::MLIRContext *ctx, const Properties &prop, llvm::StringRef name); static void setInherentAttr(Properties &prop, llvm::StringRef name, mlir::Attribute value); static void populateInherentAttrs(::mlir::MLIRContext *ctx, const Properties &prop, ::mlir::NamedAttrList &attrs); static ::llvm::LogicalResult verifyInherentAttrs(::mlir::OperationName opName, ::mlir::NamedAttrList &attrs, llvm::function_ref<::mlir::InFlightDiagnostic()> emitError); static ::llvm::LogicalResult readProperties(::mlir::DialectBytecodeReader &reader, ::mlir::OperationState &state); void writeProperties(::mlir::DialectBytecodeWriter &writer); ::mlir::ROCDL::WMMACModifierAttr getModCAttr() { return ::llvm::dyn_cast_or_null<::mlir::ROCDL::WMMACModifierAttr>(getProperties().modC); } ::mlir::ROCDL::WMMACModifier getModC(); ::mlir::IntegerAttr getReuseAAttr() { return ::llvm::dyn_cast_or_null<::mlir::IntegerAttr>(getProperties().reuseA); } bool getReuseA(); ::mlir::IntegerAttr getReuseBAttr() { return ::llvm::dyn_cast_or_null<::mlir::IntegerAttr>(getProperties().reuseB); } bool getReuseB(); void setModCAttr(::mlir::ROCDL::WMMACModifierAttr attr) { getProperties().modC = attr; } void setModC(::mlir::ROCDL::WMMACModifier attrValue); void setReuseAAttr(::mlir::IntegerAttr attr) { getProperties().reuseA = attr; } void setReuseA(bool attrValue); void setReuseBAttr(::mlir::IntegerAttr attr) { getProperties().reuseB = attr; } void setReuseB(bool attrValue); static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::Type res, ::mlir::Value a, ::mlir::Value b, ::mlir::ROCDL::WMMACModifierAttr modC, ::mlir::Value c, ::mlir::IntegerAttr reuseA, ::mlir::IntegerAttr reuseB = nullptr); static wmma_f32_16x16x32_bf16 create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::Type res, ::mlir::Value a, ::mlir::Value b, ::mlir::ROCDL::WMMACModifierAttr modC, ::mlir::Value c, ::mlir::IntegerAttr reuseA, ::mlir::IntegerAttr reuseB = nullptr); static wmma_f32_16x16x32_bf16 create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::Type res, ::mlir::Value a, ::mlir::Value b, ::mlir::ROCDL::WMMACModifierAttr modC, ::mlir::Value c, ::mlir::IntegerAttr reuseA, ::mlir::IntegerAttr reuseB = nullptr); static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::Value a, ::mlir::Value b, ::mlir::ROCDL::WMMACModifierAttr modC, ::mlir::Value c, ::mlir::IntegerAttr reuseA, ::mlir::IntegerAttr reuseB = nullptr); static wmma_f32_16x16x32_bf16 create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::Value a, ::mlir::Value b, ::mlir::ROCDL::WMMACModifierAttr modC, ::mlir::Value c, ::mlir::IntegerAttr reuseA, ::mlir::IntegerAttr reuseB = nullptr); static wmma_f32_16x16x32_bf16 create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::Value a, ::mlir::Value b, ::mlir::ROCDL::WMMACModifierAttr modC, ::mlir::Value c, ::mlir::IntegerAttr reuseA, ::mlir::IntegerAttr reuseB = nullptr); static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::Type res, ::mlir::Value a, ::mlir::Value b, ::mlir::ROCDL::WMMACModifier modC, ::mlir::Value c, bool reuseA = 0, bool reuseB = 0); static wmma_f32_16x16x32_bf16 create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::Type res, ::mlir::Value a, ::mlir::Value b, ::mlir::ROCDL::WMMACModifier modC, ::mlir::Value c, bool reuseA = 0, bool reuseB = 0); static wmma_f32_16x16x32_bf16 create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::Type res, ::mlir::Value a, ::mlir::Value b, ::mlir::ROCDL::WMMACModifier modC, ::mlir::Value c, bool reuseA = 0, bool reuseB = 0); static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::Value a, ::mlir::Value b, ::mlir::ROCDL::WMMACModifier modC, ::mlir::Value c, bool reuseA = 0, bool reuseB = 0); static wmma_f32_16x16x32_bf16 create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::Value a, ::mlir::Value b, ::mlir::ROCDL::WMMACModifier modC, ::mlir::Value c, bool reuseA = 0, bool reuseB = 0); static wmma_f32_16x16x32_bf16 create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::Value a, ::mlir::Value b, ::mlir::ROCDL::WMMACModifier modC, ::mlir::Value c, bool reuseA = 0, bool reuseB = 0); static void build(::mlir::OpBuilder &, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, ::llvm::ArrayRef<::mlir::NamedAttribute> attributes = {}); static wmma_f32_16x16x32_bf16 create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, ::llvm::ArrayRef<::mlir::NamedAttribute> attributes = {}); static wmma_f32_16x16x32_bf16 create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, ::llvm::ArrayRef<::mlir::NamedAttribute> attributes = {}); static void build(::mlir::OpBuilder &, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, const Properties &properties, ::llvm::ArrayRef<::mlir::NamedAttribute> discardableAttributes = {}); static wmma_f32_16x16x32_bf16 create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, const Properties &properties, ::llvm::ArrayRef<::mlir::NamedAttribute> discardableAttributes = {}); static wmma_f32_16x16x32_bf16 create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, const Properties &properties, ::llvm::ArrayRef<::mlir::NamedAttribute> discardableAttributes = {}); static void populateDefaultProperties(::mlir::OperationName opName, Properties &properties); ::llvm::LogicalResult verifyInvariantsImpl(); ::llvm::LogicalResult verifyInvariants(); static ::mlir::ParseResult parse(::mlir::OpAsmParser &parser, ::mlir::OperationState &result); void print(::mlir::OpAsmPrinter &_odsPrinter); private: ::mlir::StringAttr getAttributeNameForIndex(unsigned index) { return getAttributeNameForIndex((*this)->getName(), index); } static ::mlir::StringAttr getAttributeNameForIndex(::mlir::OperationName name, unsigned index) { assert(index < 3 && "invalid attribute index"); assert(name.getStringRef() == getOperationName() && "invalid operation name"); assert(name.isRegistered() && "Operation isn't registered, missing a " "dependent dialect loading?"); return name.getAttributeNames()[index]; } public: }; } // namespace mlir::ROCDL MLIR_DECLARE_EXPLICIT_TYPE_ID(::mlir::ROCDL::wmma_f32_16x16x32_bf16) MLIR_DECLARE_EXPLICIT_TYPE_ID(::mlir::ROCDL::detail::wmma_f32_16x16x32_bf16GenericAdaptorBase::Properties) namespace mlir::ROCDL { //===----------------------------------------------------------------------===// // ::mlir::ROCDL::wmma_f32_16x16x32_f16 declarations //===----------------------------------------------------------------------===// namespace detail { class wmma_f32_16x16x32_f16GenericAdaptorBase { public: struct Properties { using modCTy = ::mlir::ROCDL::WMMACModifierAttr; modCTy modC; auto getModC() const { auto &propStorage = this->modC; return ::llvm::dyn_cast_or_null<::mlir::ROCDL::WMMACModifierAttr>(propStorage); } void setModC(const ::mlir::ROCDL::WMMACModifierAttr &propValue) { this->modC = propValue; } using reuseATy = ::mlir::IntegerAttr; reuseATy reuseA; auto getReuseA() const { auto &propStorage = this->reuseA; return ::llvm::dyn_cast_or_null<::mlir::IntegerAttr>(propStorage); } void setReuseA(const ::mlir::IntegerAttr &propValue) { this->reuseA = propValue; } using reuseBTy = ::mlir::IntegerAttr; reuseBTy reuseB; auto getReuseB() const { auto &propStorage = this->reuseB; return ::llvm::dyn_cast_or_null<::mlir::IntegerAttr>(propStorage); } void setReuseB(const ::mlir::IntegerAttr &propValue) { this->reuseB = propValue; } bool operator==(const Properties &rhs) const { return rhs.modC == this->modC && rhs.reuseA == this->reuseA && rhs.reuseB == this->reuseB && true; } bool operator!=(const Properties &rhs) const { return !(*this == rhs); } }; protected: ::mlir::DictionaryAttr odsAttrs; ::std::optional<::mlir::OperationName> odsOpName; Properties properties; ::mlir::RegionRange odsRegions; public: wmma_f32_16x16x32_f16GenericAdaptorBase(::mlir::DictionaryAttr attrs, const Properties &properties, ::mlir::RegionRange regions = {}) : odsAttrs(attrs), properties(properties), odsRegions(regions) { if (odsAttrs) odsOpName.emplace("rocdl.wmma.f32.16x16x32.f16", odsAttrs.getContext()); } wmma_f32_16x16x32_f16GenericAdaptorBase(wmma_f32_16x16x32_f16 op); std::pair getODSOperandIndexAndLength(unsigned index, unsigned odsOperandsSize) { return {index, 1}; } const Properties &getProperties() { return properties; } ::mlir::DictionaryAttr getAttributes() { return odsAttrs; } ::mlir::ROCDL::WMMACModifierAttr getModCAttr(); ::mlir::ROCDL::WMMACModifier getModC(); ::mlir::IntegerAttr getReuseAAttr(); bool getReuseA(); ::mlir::IntegerAttr getReuseBAttr(); bool getReuseB(); }; } // namespace detail template class wmma_f32_16x16x32_f16GenericAdaptor : public detail::wmma_f32_16x16x32_f16GenericAdaptorBase { using ValueT = ::llvm::detail::ValueOfRange; using Base = detail::wmma_f32_16x16x32_f16GenericAdaptorBase; static constexpr int odsIndex_a = 0; static constexpr int odsIndex_b = 1; static constexpr int odsIndex_c = 2; public: wmma_f32_16x16x32_f16GenericAdaptor(RangeT values, ::mlir::DictionaryAttr attrs, const Properties &properties, ::mlir::RegionRange regions = {}) : Base(attrs, properties, regions), odsOperands(values) {} wmma_f32_16x16x32_f16GenericAdaptor(RangeT values, ::mlir::DictionaryAttr attrs, ::mlir::PropertyRef properties, ::mlir::RegionRange regions = {}) : wmma_f32_16x16x32_f16GenericAdaptor(values, attrs, (properties ? *properties.as() : Properties{}), regions) {} wmma_f32_16x16x32_f16GenericAdaptor(RangeT values, ::mlir::DictionaryAttr attrs = nullptr) : wmma_f32_16x16x32_f16GenericAdaptor(values, attrs, Properties{}, {}) {} wmma_f32_16x16x32_f16GenericAdaptor(RangeT values, const wmma_f32_16x16x32_f16GenericAdaptorBase &base) : Base(base), odsOperands(values) {} template >> wmma_f32_16x16x32_f16GenericAdaptor(RangeT values, LateInst op) : Base(op), odsOperands(values) {} std::pair getODSOperandIndexAndLength(unsigned index) { return Base::getODSOperandIndexAndLength(index, odsOperands.size()); } RangeT getODSOperands(unsigned index) { auto valueRange = getODSOperandIndexAndLength(index); return {std::next(odsOperands.begin(), valueRange.first), std::next(odsOperands.begin(), valueRange.first + valueRange.second)}; } ValueT getA() { return (*getODSOperands(0).begin()); } ValueT getB() { return (*getODSOperands(1).begin()); } ValueT getC() { return (*getODSOperands(2).begin()); } RangeT getOperands() { return odsOperands; } private: RangeT odsOperands; }; class wmma_f32_16x16x32_f16Adaptor : public wmma_f32_16x16x32_f16GenericAdaptor<::mlir::ValueRange> { public: using wmma_f32_16x16x32_f16GenericAdaptor::wmma_f32_16x16x32_f16GenericAdaptor; wmma_f32_16x16x32_f16Adaptor(wmma_f32_16x16x32_f16 op); ::llvm::LogicalResult verify(::mlir::Location loc); }; class wmma_f32_16x16x32_f16 : public ::mlir::Op::Impl, ::mlir::OpTrait::ZeroSuccessors, ::mlir::OpTrait::NOperands<3>::Impl, ::mlir::OpTrait::OpInvariants, ::mlir::BytecodeOpInterface::Trait> { public: using Op::Op; using Op::print; using Adaptor = wmma_f32_16x16x32_f16Adaptor; template using GenericAdaptor = wmma_f32_16x16x32_f16GenericAdaptor; using FoldAdaptor = GenericAdaptor<::llvm::ArrayRef<::mlir::Attribute>>; static constexpr int odsIndex_a = 0; static constexpr int odsIndex_b = 1; static constexpr int odsIndex_c = 2; using Properties = FoldAdaptor::Properties; static ::llvm::ArrayRef<::llvm::StringRef> getAttributeNames() { static ::llvm::StringRef attrNames[] = {::llvm::StringRef("modC"), ::llvm::StringRef("reuseA"), ::llvm::StringRef("reuseB")}; return ::llvm::ArrayRef(attrNames); } ::mlir::StringAttr getModCAttrName() { return getAttributeNameForIndex(0); } static ::mlir::StringAttr getModCAttrName(::mlir::OperationName name) { return getAttributeNameForIndex(name, 0); } ::mlir::StringAttr getReuseAAttrName() { return getAttributeNameForIndex(1); } static ::mlir::StringAttr getReuseAAttrName(::mlir::OperationName name) { return getAttributeNameForIndex(name, 1); } ::mlir::StringAttr getReuseBAttrName() { return getAttributeNameForIndex(2); } static ::mlir::StringAttr getReuseBAttrName(::mlir::OperationName name) { return getAttributeNameForIndex(name, 2); } static constexpr ::llvm::StringLiteral getOperationName() { return ::llvm::StringLiteral("rocdl.wmma.f32.16x16x32.f16"); } std::pair getODSOperandIndexAndLength(unsigned index) { return {index, 1}; } ::mlir::Operation::operand_range getODSOperands(unsigned index) { auto valueRange = getODSOperandIndexAndLength(index); return {std::next(getOperation()->operand_begin(), valueRange.first), std::next(getOperation()->operand_begin(), valueRange.first + valueRange.second)}; } ::mlir::TypedValue<::mlir::Type> getA() { return ::llvm::cast<::mlir::TypedValue<::mlir::Type>>(*getODSOperands(0).begin()); } ::mlir::TypedValue<::mlir::Type> getB() { return ::llvm::cast<::mlir::TypedValue<::mlir::Type>>(*getODSOperands(1).begin()); } ::mlir::TypedValue<::mlir::Type> getC() { return ::llvm::cast<::mlir::TypedValue<::mlir::Type>>(*getODSOperands(2).begin()); } ::mlir::OpOperand &getAMutable() { auto range = getODSOperandIndexAndLength(0); return getOperation()->getOpOperand(range.first); } ::mlir::OpOperand &getBMutable() { auto range = getODSOperandIndexAndLength(1); return getOperation()->getOpOperand(range.first); } ::mlir::OpOperand &getCMutable() { auto range = getODSOperandIndexAndLength(2); return getOperation()->getOpOperand(range.first); } std::pair getODSResultIndexAndLength(unsigned index) { return {index, 1}; } ::mlir::Operation::result_range getODSResults(unsigned index) { auto valueRange = getODSResultIndexAndLength(index); return {std::next(getOperation()->result_begin(), valueRange.first), std::next(getOperation()->result_begin(), valueRange.first + valueRange.second)}; } ::mlir::TypedValue<::mlir::Type> getRes() { return ::llvm::cast<::mlir::TypedValue<::mlir::Type>>(*getODSResults(0).begin()); } static ::llvm::LogicalResult setPropertiesFromAttr(Properties &prop, ::mlir::Attribute attr, ::llvm::function_ref<::mlir::InFlightDiagnostic()> emitError); static ::mlir::Attribute getPropertiesAsAttr(::mlir::MLIRContext *ctx, const Properties &prop); static llvm::hash_code computePropertiesHash(const Properties &prop); static std::optional getInherentAttr(::mlir::MLIRContext *ctx, const Properties &prop, llvm::StringRef name); static void setInherentAttr(Properties &prop, llvm::StringRef name, mlir::Attribute value); static void populateInherentAttrs(::mlir::MLIRContext *ctx, const Properties &prop, ::mlir::NamedAttrList &attrs); static ::llvm::LogicalResult verifyInherentAttrs(::mlir::OperationName opName, ::mlir::NamedAttrList &attrs, llvm::function_ref<::mlir::InFlightDiagnostic()> emitError); static ::llvm::LogicalResult readProperties(::mlir::DialectBytecodeReader &reader, ::mlir::OperationState &state); void writeProperties(::mlir::DialectBytecodeWriter &writer); ::mlir::ROCDL::WMMACModifierAttr getModCAttr() { return ::llvm::dyn_cast_or_null<::mlir::ROCDL::WMMACModifierAttr>(getProperties().modC); } ::mlir::ROCDL::WMMACModifier getModC(); ::mlir::IntegerAttr getReuseAAttr() { return ::llvm::dyn_cast_or_null<::mlir::IntegerAttr>(getProperties().reuseA); } bool getReuseA(); ::mlir::IntegerAttr getReuseBAttr() { return ::llvm::dyn_cast_or_null<::mlir::IntegerAttr>(getProperties().reuseB); } bool getReuseB(); void setModCAttr(::mlir::ROCDL::WMMACModifierAttr attr) { getProperties().modC = attr; } void setModC(::mlir::ROCDL::WMMACModifier attrValue); void setReuseAAttr(::mlir::IntegerAttr attr) { getProperties().reuseA = attr; } void setReuseA(bool attrValue); void setReuseBAttr(::mlir::IntegerAttr attr) { getProperties().reuseB = attr; } void setReuseB(bool attrValue); static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::Type res, ::mlir::Value a, ::mlir::Value b, ::mlir::ROCDL::WMMACModifierAttr modC, ::mlir::Value c, ::mlir::IntegerAttr reuseA, ::mlir::IntegerAttr reuseB = nullptr); static wmma_f32_16x16x32_f16 create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::Type res, ::mlir::Value a, ::mlir::Value b, ::mlir::ROCDL::WMMACModifierAttr modC, ::mlir::Value c, ::mlir::IntegerAttr reuseA, ::mlir::IntegerAttr reuseB = nullptr); static wmma_f32_16x16x32_f16 create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::Type res, ::mlir::Value a, ::mlir::Value b, ::mlir::ROCDL::WMMACModifierAttr modC, ::mlir::Value c, ::mlir::IntegerAttr reuseA, ::mlir::IntegerAttr reuseB = nullptr); static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::Value a, ::mlir::Value b, ::mlir::ROCDL::WMMACModifierAttr modC, ::mlir::Value c, ::mlir::IntegerAttr reuseA, ::mlir::IntegerAttr reuseB = nullptr); static wmma_f32_16x16x32_f16 create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::Value a, ::mlir::Value b, ::mlir::ROCDL::WMMACModifierAttr modC, ::mlir::Value c, ::mlir::IntegerAttr reuseA, ::mlir::IntegerAttr reuseB = nullptr); static wmma_f32_16x16x32_f16 create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::Value a, ::mlir::Value b, ::mlir::ROCDL::WMMACModifierAttr modC, ::mlir::Value c, ::mlir::IntegerAttr reuseA, ::mlir::IntegerAttr reuseB = nullptr); static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::Type res, ::mlir::Value a, ::mlir::Value b, ::mlir::ROCDL::WMMACModifier modC, ::mlir::Value c, bool reuseA = 0, bool reuseB = 0); static wmma_f32_16x16x32_f16 create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::Type res, ::mlir::Value a, ::mlir::Value b, ::mlir::ROCDL::WMMACModifier modC, ::mlir::Value c, bool reuseA = 0, bool reuseB = 0); static wmma_f32_16x16x32_f16 create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::Type res, ::mlir::Value a, ::mlir::Value b, ::mlir::ROCDL::WMMACModifier modC, ::mlir::Value c, bool reuseA = 0, bool reuseB = 0); static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::Value a, ::mlir::Value b, ::mlir::ROCDL::WMMACModifier modC, ::mlir::Value c, bool reuseA = 0, bool reuseB = 0); static wmma_f32_16x16x32_f16 create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::Value a, ::mlir::Value b, ::mlir::ROCDL::WMMACModifier modC, ::mlir::Value c, bool reuseA = 0, bool reuseB = 0); static wmma_f32_16x16x32_f16 create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::Value a, ::mlir::Value b, ::mlir::ROCDL::WMMACModifier modC, ::mlir::Value c, bool reuseA = 0, bool reuseB = 0); static void build(::mlir::OpBuilder &, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, ::llvm::ArrayRef<::mlir::NamedAttribute> attributes = {}); static wmma_f32_16x16x32_f16 create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, ::llvm::ArrayRef<::mlir::NamedAttribute> attributes = {}); static wmma_f32_16x16x32_f16 create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, ::llvm::ArrayRef<::mlir::NamedAttribute> attributes = {}); static void build(::mlir::OpBuilder &, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, const Properties &properties, ::llvm::ArrayRef<::mlir::NamedAttribute> discardableAttributes = {}); static wmma_f32_16x16x32_f16 create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, const Properties &properties, ::llvm::ArrayRef<::mlir::NamedAttribute> discardableAttributes = {}); static wmma_f32_16x16x32_f16 create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, const Properties &properties, ::llvm::ArrayRef<::mlir::NamedAttribute> discardableAttributes = {}); static void populateDefaultProperties(::mlir::OperationName opName, Properties &properties); ::llvm::LogicalResult verifyInvariantsImpl(); ::llvm::LogicalResult verifyInvariants(); static ::mlir::ParseResult parse(::mlir::OpAsmParser &parser, ::mlir::OperationState &result); void print(::mlir::OpAsmPrinter &_odsPrinter); private: ::mlir::StringAttr getAttributeNameForIndex(unsigned index) { return getAttributeNameForIndex((*this)->getName(), index); } static ::mlir::StringAttr getAttributeNameForIndex(::mlir::OperationName name, unsigned index) { assert(index < 3 && "invalid attribute index"); assert(name.getStringRef() == getOperationName() && "invalid operation name"); assert(name.isRegistered() && "Operation isn't registered, missing a " "dependent dialect loading?"); return name.getAttributeNames()[index]; } public: }; } // namespace mlir::ROCDL MLIR_DECLARE_EXPLICIT_TYPE_ID(::mlir::ROCDL::wmma_f32_16x16x32_f16) MLIR_DECLARE_EXPLICIT_TYPE_ID(::mlir::ROCDL::detail::wmma_f32_16x16x32_f16GenericAdaptorBase::Properties) namespace mlir::ROCDL { //===----------------------------------------------------------------------===// // ::mlir::ROCDL::wmma_f32_16x16x4_f32 declarations //===----------------------------------------------------------------------===// namespace detail { class wmma_f32_16x16x4_f32GenericAdaptorBase { public: struct Properties { using modCTy = ::mlir::ROCDL::WMMACModifierAttr; modCTy modC; auto getModC() const { auto &propStorage = this->modC; return ::llvm::dyn_cast_or_null<::mlir::ROCDL::WMMACModifierAttr>(propStorage); } void setModC(const ::mlir::ROCDL::WMMACModifierAttr &propValue) { this->modC = propValue; } using reuseATy = ::mlir::IntegerAttr; reuseATy reuseA; auto getReuseA() const { auto &propStorage = this->reuseA; return ::llvm::dyn_cast_or_null<::mlir::IntegerAttr>(propStorage); } void setReuseA(const ::mlir::IntegerAttr &propValue) { this->reuseA = propValue; } using reuseBTy = ::mlir::IntegerAttr; reuseBTy reuseB; auto getReuseB() const { auto &propStorage = this->reuseB; return ::llvm::dyn_cast_or_null<::mlir::IntegerAttr>(propStorage); } void setReuseB(const ::mlir::IntegerAttr &propValue) { this->reuseB = propValue; } bool operator==(const Properties &rhs) const { return rhs.modC == this->modC && rhs.reuseA == this->reuseA && rhs.reuseB == this->reuseB && true; } bool operator!=(const Properties &rhs) const { return !(*this == rhs); } }; protected: ::mlir::DictionaryAttr odsAttrs; ::std::optional<::mlir::OperationName> odsOpName; Properties properties; ::mlir::RegionRange odsRegions; public: wmma_f32_16x16x4_f32GenericAdaptorBase(::mlir::DictionaryAttr attrs, const Properties &properties, ::mlir::RegionRange regions = {}) : odsAttrs(attrs), properties(properties), odsRegions(regions) { if (odsAttrs) odsOpName.emplace("rocdl.wmma.f32.16x16x4.f32", odsAttrs.getContext()); } wmma_f32_16x16x4_f32GenericAdaptorBase(wmma_f32_16x16x4_f32 op); std::pair getODSOperandIndexAndLength(unsigned index, unsigned odsOperandsSize) { return {index, 1}; } const Properties &getProperties() { return properties; } ::mlir::DictionaryAttr getAttributes() { return odsAttrs; } ::mlir::ROCDL::WMMACModifierAttr getModCAttr(); ::mlir::ROCDL::WMMACModifier getModC(); ::mlir::IntegerAttr getReuseAAttr(); bool getReuseA(); ::mlir::IntegerAttr getReuseBAttr(); bool getReuseB(); }; } // namespace detail template class wmma_f32_16x16x4_f32GenericAdaptor : public detail::wmma_f32_16x16x4_f32GenericAdaptorBase { using ValueT = ::llvm::detail::ValueOfRange; using Base = detail::wmma_f32_16x16x4_f32GenericAdaptorBase; static constexpr int odsIndex_a = 0; static constexpr int odsIndex_b = 1; static constexpr int odsIndex_c = 2; public: wmma_f32_16x16x4_f32GenericAdaptor(RangeT values, ::mlir::DictionaryAttr attrs, const Properties &properties, ::mlir::RegionRange regions = {}) : Base(attrs, properties, regions), odsOperands(values) {} wmma_f32_16x16x4_f32GenericAdaptor(RangeT values, ::mlir::DictionaryAttr attrs, ::mlir::PropertyRef properties, ::mlir::RegionRange regions = {}) : wmma_f32_16x16x4_f32GenericAdaptor(values, attrs, (properties ? *properties.as() : Properties{}), regions) {} wmma_f32_16x16x4_f32GenericAdaptor(RangeT values, ::mlir::DictionaryAttr attrs = nullptr) : wmma_f32_16x16x4_f32GenericAdaptor(values, attrs, Properties{}, {}) {} wmma_f32_16x16x4_f32GenericAdaptor(RangeT values, const wmma_f32_16x16x4_f32GenericAdaptorBase &base) : Base(base), odsOperands(values) {} template >> wmma_f32_16x16x4_f32GenericAdaptor(RangeT values, LateInst op) : Base(op), odsOperands(values) {} std::pair getODSOperandIndexAndLength(unsigned index) { return Base::getODSOperandIndexAndLength(index, odsOperands.size()); } RangeT getODSOperands(unsigned index) { auto valueRange = getODSOperandIndexAndLength(index); return {std::next(odsOperands.begin(), valueRange.first), std::next(odsOperands.begin(), valueRange.first + valueRange.second)}; } ValueT getA() { return (*getODSOperands(0).begin()); } ValueT getB() { return (*getODSOperands(1).begin()); } ValueT getC() { return (*getODSOperands(2).begin()); } RangeT getOperands() { return odsOperands; } private: RangeT odsOperands; }; class wmma_f32_16x16x4_f32Adaptor : public wmma_f32_16x16x4_f32GenericAdaptor<::mlir::ValueRange> { public: using wmma_f32_16x16x4_f32GenericAdaptor::wmma_f32_16x16x4_f32GenericAdaptor; wmma_f32_16x16x4_f32Adaptor(wmma_f32_16x16x4_f32 op); ::llvm::LogicalResult verify(::mlir::Location loc); }; class wmma_f32_16x16x4_f32 : public ::mlir::Op::Impl, ::mlir::OpTrait::ZeroSuccessors, ::mlir::OpTrait::NOperands<3>::Impl, ::mlir::OpTrait::OpInvariants, ::mlir::BytecodeOpInterface::Trait> { public: using Op::Op; using Op::print; using Adaptor = wmma_f32_16x16x4_f32Adaptor; template using GenericAdaptor = wmma_f32_16x16x4_f32GenericAdaptor; using FoldAdaptor = GenericAdaptor<::llvm::ArrayRef<::mlir::Attribute>>; static constexpr int odsIndex_a = 0; static constexpr int odsIndex_b = 1; static constexpr int odsIndex_c = 2; using Properties = FoldAdaptor::Properties; static ::llvm::ArrayRef<::llvm::StringRef> getAttributeNames() { static ::llvm::StringRef attrNames[] = {::llvm::StringRef("modC"), ::llvm::StringRef("reuseA"), ::llvm::StringRef("reuseB")}; return ::llvm::ArrayRef(attrNames); } ::mlir::StringAttr getModCAttrName() { return getAttributeNameForIndex(0); } static ::mlir::StringAttr getModCAttrName(::mlir::OperationName name) { return getAttributeNameForIndex(name, 0); } ::mlir::StringAttr getReuseAAttrName() { return getAttributeNameForIndex(1); } static ::mlir::StringAttr getReuseAAttrName(::mlir::OperationName name) { return getAttributeNameForIndex(name, 1); } ::mlir::StringAttr getReuseBAttrName() { return getAttributeNameForIndex(2); } static ::mlir::StringAttr getReuseBAttrName(::mlir::OperationName name) { return getAttributeNameForIndex(name, 2); } static constexpr ::llvm::StringLiteral getOperationName() { return ::llvm::StringLiteral("rocdl.wmma.f32.16x16x4.f32"); } std::pair getODSOperandIndexAndLength(unsigned index) { return {index, 1}; } ::mlir::Operation::operand_range getODSOperands(unsigned index) { auto valueRange = getODSOperandIndexAndLength(index); return {std::next(getOperation()->operand_begin(), valueRange.first), std::next(getOperation()->operand_begin(), valueRange.first + valueRange.second)}; } ::mlir::TypedValue<::mlir::Type> getA() { return ::llvm::cast<::mlir::TypedValue<::mlir::Type>>(*getODSOperands(0).begin()); } ::mlir::TypedValue<::mlir::Type> getB() { return ::llvm::cast<::mlir::TypedValue<::mlir::Type>>(*getODSOperands(1).begin()); } ::mlir::TypedValue<::mlir::Type> getC() { return ::llvm::cast<::mlir::TypedValue<::mlir::Type>>(*getODSOperands(2).begin()); } ::mlir::OpOperand &getAMutable() { auto range = getODSOperandIndexAndLength(0); return getOperation()->getOpOperand(range.first); } ::mlir::OpOperand &getBMutable() { auto range = getODSOperandIndexAndLength(1); return getOperation()->getOpOperand(range.first); } ::mlir::OpOperand &getCMutable() { auto range = getODSOperandIndexAndLength(2); return getOperation()->getOpOperand(range.first); } std::pair getODSResultIndexAndLength(unsigned index) { return {index, 1}; } ::mlir::Operation::result_range getODSResults(unsigned index) { auto valueRange = getODSResultIndexAndLength(index); return {std::next(getOperation()->result_begin(), valueRange.first), std::next(getOperation()->result_begin(), valueRange.first + valueRange.second)}; } ::mlir::TypedValue<::mlir::Type> getRes() { return ::llvm::cast<::mlir::TypedValue<::mlir::Type>>(*getODSResults(0).begin()); } static ::llvm::LogicalResult setPropertiesFromAttr(Properties &prop, ::mlir::Attribute attr, ::llvm::function_ref<::mlir::InFlightDiagnostic()> emitError); static ::mlir::Attribute getPropertiesAsAttr(::mlir::MLIRContext *ctx, const Properties &prop); static llvm::hash_code computePropertiesHash(const Properties &prop); static std::optional getInherentAttr(::mlir::MLIRContext *ctx, const Properties &prop, llvm::StringRef name); static void setInherentAttr(Properties &prop, llvm::StringRef name, mlir::Attribute value); static void populateInherentAttrs(::mlir::MLIRContext *ctx, const Properties &prop, ::mlir::NamedAttrList &attrs); static ::llvm::LogicalResult verifyInherentAttrs(::mlir::OperationName opName, ::mlir::NamedAttrList &attrs, llvm::function_ref<::mlir::InFlightDiagnostic()> emitError); static ::llvm::LogicalResult readProperties(::mlir::DialectBytecodeReader &reader, ::mlir::OperationState &state); void writeProperties(::mlir::DialectBytecodeWriter &writer); ::mlir::ROCDL::WMMACModifierAttr getModCAttr() { return ::llvm::dyn_cast_or_null<::mlir::ROCDL::WMMACModifierAttr>(getProperties().modC); } ::mlir::ROCDL::WMMACModifier getModC(); ::mlir::IntegerAttr getReuseAAttr() { return ::llvm::dyn_cast_or_null<::mlir::IntegerAttr>(getProperties().reuseA); } bool getReuseA(); ::mlir::IntegerAttr getReuseBAttr() { return ::llvm::dyn_cast_or_null<::mlir::IntegerAttr>(getProperties().reuseB); } bool getReuseB(); void setModCAttr(::mlir::ROCDL::WMMACModifierAttr attr) { getProperties().modC = attr; } void setModC(::mlir::ROCDL::WMMACModifier attrValue); void setReuseAAttr(::mlir::IntegerAttr attr) { getProperties().reuseA = attr; } void setReuseA(bool attrValue); void setReuseBAttr(::mlir::IntegerAttr attr) { getProperties().reuseB = attr; } void setReuseB(bool attrValue); static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::Type res, ::mlir::Value a, ::mlir::Value b, ::mlir::ROCDL::WMMACModifierAttr modC, ::mlir::Value c, ::mlir::IntegerAttr reuseA, ::mlir::IntegerAttr reuseB = nullptr); static wmma_f32_16x16x4_f32 create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::Type res, ::mlir::Value a, ::mlir::Value b, ::mlir::ROCDL::WMMACModifierAttr modC, ::mlir::Value c, ::mlir::IntegerAttr reuseA, ::mlir::IntegerAttr reuseB = nullptr); static wmma_f32_16x16x4_f32 create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::Type res, ::mlir::Value a, ::mlir::Value b, ::mlir::ROCDL::WMMACModifierAttr modC, ::mlir::Value c, ::mlir::IntegerAttr reuseA, ::mlir::IntegerAttr reuseB = nullptr); static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::Value a, ::mlir::Value b, ::mlir::ROCDL::WMMACModifierAttr modC, ::mlir::Value c, ::mlir::IntegerAttr reuseA, ::mlir::IntegerAttr reuseB = nullptr); static wmma_f32_16x16x4_f32 create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::Value a, ::mlir::Value b, ::mlir::ROCDL::WMMACModifierAttr modC, ::mlir::Value c, ::mlir::IntegerAttr reuseA, ::mlir::IntegerAttr reuseB = nullptr); static wmma_f32_16x16x4_f32 create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::Value a, ::mlir::Value b, ::mlir::ROCDL::WMMACModifierAttr modC, ::mlir::Value c, ::mlir::IntegerAttr reuseA, ::mlir::IntegerAttr reuseB = nullptr); static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::Type res, ::mlir::Value a, ::mlir::Value b, ::mlir::ROCDL::WMMACModifier modC, ::mlir::Value c, bool reuseA = 0, bool reuseB = 0); static wmma_f32_16x16x4_f32 create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::Type res, ::mlir::Value a, ::mlir::Value b, ::mlir::ROCDL::WMMACModifier modC, ::mlir::Value c, bool reuseA = 0, bool reuseB = 0); static wmma_f32_16x16x4_f32 create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::Type res, ::mlir::Value a, ::mlir::Value b, ::mlir::ROCDL::WMMACModifier modC, ::mlir::Value c, bool reuseA = 0, bool reuseB = 0); static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::Value a, ::mlir::Value b, ::mlir::ROCDL::WMMACModifier modC, ::mlir::Value c, bool reuseA = 0, bool reuseB = 0); static wmma_f32_16x16x4_f32 create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::Value a, ::mlir::Value b, ::mlir::ROCDL::WMMACModifier modC, ::mlir::Value c, bool reuseA = 0, bool reuseB = 0); static wmma_f32_16x16x4_f32 create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::Value a, ::mlir::Value b, ::mlir::ROCDL::WMMACModifier modC, ::mlir::Value c, bool reuseA = 0, bool reuseB = 0); static void build(::mlir::OpBuilder &, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, ::llvm::ArrayRef<::mlir::NamedAttribute> attributes = {}); static wmma_f32_16x16x4_f32 create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, ::llvm::ArrayRef<::mlir::NamedAttribute> attributes = {}); static wmma_f32_16x16x4_f32 create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, ::llvm::ArrayRef<::mlir::NamedAttribute> attributes = {}); static void build(::mlir::OpBuilder &, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, const Properties &properties, ::llvm::ArrayRef<::mlir::NamedAttribute> discardableAttributes = {}); static wmma_f32_16x16x4_f32 create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, const Properties &properties, ::llvm::ArrayRef<::mlir::NamedAttribute> discardableAttributes = {}); static wmma_f32_16x16x4_f32 create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, const Properties &properties, ::llvm::ArrayRef<::mlir::NamedAttribute> discardableAttributes = {}); static void populateDefaultProperties(::mlir::OperationName opName, Properties &properties); ::llvm::LogicalResult verifyInvariantsImpl(); ::llvm::LogicalResult verifyInvariants(); static ::mlir::ParseResult parse(::mlir::OpAsmParser &parser, ::mlir::OperationState &result); void print(::mlir::OpAsmPrinter &_odsPrinter); private: ::mlir::StringAttr getAttributeNameForIndex(unsigned index) { return getAttributeNameForIndex((*this)->getName(), index); } static ::mlir::StringAttr getAttributeNameForIndex(::mlir::OperationName name, unsigned index) { assert(index < 3 && "invalid attribute index"); assert(name.getStringRef() == getOperationName() && "invalid operation name"); assert(name.isRegistered() && "Operation isn't registered, missing a " "dependent dialect loading?"); return name.getAttributeNames()[index]; } public: }; } // namespace mlir::ROCDL MLIR_DECLARE_EXPLICIT_TYPE_ID(::mlir::ROCDL::wmma_f32_16x16x4_f32) MLIR_DECLARE_EXPLICIT_TYPE_ID(::mlir::ROCDL::detail::wmma_f32_16x16x4_f32GenericAdaptorBase::Properties) namespace mlir::ROCDL { //===----------------------------------------------------------------------===// // ::mlir::ROCDL::wmma_f32_16x16x64_bf8_bf8 declarations //===----------------------------------------------------------------------===// namespace detail { class wmma_f32_16x16x64_bf8_bf8GenericAdaptorBase { public: struct Properties { using modCTy = ::mlir::ROCDL::WMMACModifierAttr; modCTy modC; auto getModC() const { auto &propStorage = this->modC; return ::llvm::dyn_cast_or_null<::mlir::ROCDL::WMMACModifierAttr>(propStorage); } void setModC(const ::mlir::ROCDL::WMMACModifierAttr &propValue) { this->modC = propValue; } using reuseATy = ::mlir::IntegerAttr; reuseATy reuseA; auto getReuseA() const { auto &propStorage = this->reuseA; return ::llvm::dyn_cast_or_null<::mlir::IntegerAttr>(propStorage); } void setReuseA(const ::mlir::IntegerAttr &propValue) { this->reuseA = propValue; } using reuseBTy = ::mlir::IntegerAttr; reuseBTy reuseB; auto getReuseB() const { auto &propStorage = this->reuseB; return ::llvm::dyn_cast_or_null<::mlir::IntegerAttr>(propStorage); } void setReuseB(const ::mlir::IntegerAttr &propValue) { this->reuseB = propValue; } bool operator==(const Properties &rhs) const { return rhs.modC == this->modC && rhs.reuseA == this->reuseA && rhs.reuseB == this->reuseB && true; } bool operator!=(const Properties &rhs) const { return !(*this == rhs); } }; protected: ::mlir::DictionaryAttr odsAttrs; ::std::optional<::mlir::OperationName> odsOpName; Properties properties; ::mlir::RegionRange odsRegions; public: wmma_f32_16x16x64_bf8_bf8GenericAdaptorBase(::mlir::DictionaryAttr attrs, const Properties &properties, ::mlir::RegionRange regions = {}) : odsAttrs(attrs), properties(properties), odsRegions(regions) { if (odsAttrs) odsOpName.emplace("rocdl.wmma.f32.16x16x64.bf8_bf8", odsAttrs.getContext()); } wmma_f32_16x16x64_bf8_bf8GenericAdaptorBase(wmma_f32_16x16x64_bf8_bf8 op); std::pair getODSOperandIndexAndLength(unsigned index, unsigned odsOperandsSize) { return {index, 1}; } const Properties &getProperties() { return properties; } ::mlir::DictionaryAttr getAttributes() { return odsAttrs; } ::mlir::ROCDL::WMMACModifierAttr getModCAttr(); ::mlir::ROCDL::WMMACModifier getModC(); ::mlir::IntegerAttr getReuseAAttr(); bool getReuseA(); ::mlir::IntegerAttr getReuseBAttr(); bool getReuseB(); }; } // namespace detail template class wmma_f32_16x16x64_bf8_bf8GenericAdaptor : public detail::wmma_f32_16x16x64_bf8_bf8GenericAdaptorBase { using ValueT = ::llvm::detail::ValueOfRange; using Base = detail::wmma_f32_16x16x64_bf8_bf8GenericAdaptorBase; static constexpr int odsIndex_a = 0; static constexpr int odsIndex_b = 1; static constexpr int odsIndex_c = 2; public: wmma_f32_16x16x64_bf8_bf8GenericAdaptor(RangeT values, ::mlir::DictionaryAttr attrs, const Properties &properties, ::mlir::RegionRange regions = {}) : Base(attrs, properties, regions), odsOperands(values) {} wmma_f32_16x16x64_bf8_bf8GenericAdaptor(RangeT values, ::mlir::DictionaryAttr attrs, ::mlir::PropertyRef properties, ::mlir::RegionRange regions = {}) : wmma_f32_16x16x64_bf8_bf8GenericAdaptor(values, attrs, (properties ? *properties.as() : Properties{}), regions) {} wmma_f32_16x16x64_bf8_bf8GenericAdaptor(RangeT values, ::mlir::DictionaryAttr attrs = nullptr) : wmma_f32_16x16x64_bf8_bf8GenericAdaptor(values, attrs, Properties{}, {}) {} wmma_f32_16x16x64_bf8_bf8GenericAdaptor(RangeT values, const wmma_f32_16x16x64_bf8_bf8GenericAdaptorBase &base) : Base(base), odsOperands(values) {} template >> wmma_f32_16x16x64_bf8_bf8GenericAdaptor(RangeT values, LateInst op) : Base(op), odsOperands(values) {} std::pair getODSOperandIndexAndLength(unsigned index) { return Base::getODSOperandIndexAndLength(index, odsOperands.size()); } RangeT getODSOperands(unsigned index) { auto valueRange = getODSOperandIndexAndLength(index); return {std::next(odsOperands.begin(), valueRange.first), std::next(odsOperands.begin(), valueRange.first + valueRange.second)}; } ValueT getA() { return (*getODSOperands(0).begin()); } ValueT getB() { return (*getODSOperands(1).begin()); } ValueT getC() { return (*getODSOperands(2).begin()); } RangeT getOperands() { return odsOperands; } private: RangeT odsOperands; }; class wmma_f32_16x16x64_bf8_bf8Adaptor : public wmma_f32_16x16x64_bf8_bf8GenericAdaptor<::mlir::ValueRange> { public: using wmma_f32_16x16x64_bf8_bf8GenericAdaptor::wmma_f32_16x16x64_bf8_bf8GenericAdaptor; wmma_f32_16x16x64_bf8_bf8Adaptor(wmma_f32_16x16x64_bf8_bf8 op); ::llvm::LogicalResult verify(::mlir::Location loc); }; class wmma_f32_16x16x64_bf8_bf8 : public ::mlir::Op::Impl, ::mlir::OpTrait::ZeroSuccessors, ::mlir::OpTrait::NOperands<3>::Impl, ::mlir::OpTrait::OpInvariants, ::mlir::BytecodeOpInterface::Trait> { public: using Op::Op; using Op::print; using Adaptor = wmma_f32_16x16x64_bf8_bf8Adaptor; template using GenericAdaptor = wmma_f32_16x16x64_bf8_bf8GenericAdaptor; using FoldAdaptor = GenericAdaptor<::llvm::ArrayRef<::mlir::Attribute>>; static constexpr int odsIndex_a = 0; static constexpr int odsIndex_b = 1; static constexpr int odsIndex_c = 2; using Properties = FoldAdaptor::Properties; static ::llvm::ArrayRef<::llvm::StringRef> getAttributeNames() { static ::llvm::StringRef attrNames[] = {::llvm::StringRef("modC"), ::llvm::StringRef("reuseA"), ::llvm::StringRef("reuseB")}; return ::llvm::ArrayRef(attrNames); } ::mlir::StringAttr getModCAttrName() { return getAttributeNameForIndex(0); } static ::mlir::StringAttr getModCAttrName(::mlir::OperationName name) { return getAttributeNameForIndex(name, 0); } ::mlir::StringAttr getReuseAAttrName() { return getAttributeNameForIndex(1); } static ::mlir::StringAttr getReuseAAttrName(::mlir::OperationName name) { return getAttributeNameForIndex(name, 1); } ::mlir::StringAttr getReuseBAttrName() { return getAttributeNameForIndex(2); } static ::mlir::StringAttr getReuseBAttrName(::mlir::OperationName name) { return getAttributeNameForIndex(name, 2); } static constexpr ::llvm::StringLiteral getOperationName() { return ::llvm::StringLiteral("rocdl.wmma.f32.16x16x64.bf8_bf8"); } std::pair getODSOperandIndexAndLength(unsigned index) { return {index, 1}; } ::mlir::Operation::operand_range getODSOperands(unsigned index) { auto valueRange = getODSOperandIndexAndLength(index); return {std::next(getOperation()->operand_begin(), valueRange.first), std::next(getOperation()->operand_begin(), valueRange.first + valueRange.second)}; } ::mlir::TypedValue<::mlir::Type> getA() { return ::llvm::cast<::mlir::TypedValue<::mlir::Type>>(*getODSOperands(0).begin()); } ::mlir::TypedValue<::mlir::Type> getB() { return ::llvm::cast<::mlir::TypedValue<::mlir::Type>>(*getODSOperands(1).begin()); } ::mlir::TypedValue<::mlir::Type> getC() { return ::llvm::cast<::mlir::TypedValue<::mlir::Type>>(*getODSOperands(2).begin()); } ::mlir::OpOperand &getAMutable() { auto range = getODSOperandIndexAndLength(0); return getOperation()->getOpOperand(range.first); } ::mlir::OpOperand &getBMutable() { auto range = getODSOperandIndexAndLength(1); return getOperation()->getOpOperand(range.first); } ::mlir::OpOperand &getCMutable() { auto range = getODSOperandIndexAndLength(2); return getOperation()->getOpOperand(range.first); } std::pair getODSResultIndexAndLength(unsigned index) { return {index, 1}; } ::mlir::Operation::result_range getODSResults(unsigned index) { auto valueRange = getODSResultIndexAndLength(index); return {std::next(getOperation()->result_begin(), valueRange.first), std::next(getOperation()->result_begin(), valueRange.first + valueRange.second)}; } ::mlir::TypedValue<::mlir::Type> getRes() { return ::llvm::cast<::mlir::TypedValue<::mlir::Type>>(*getODSResults(0).begin()); } static ::llvm::LogicalResult setPropertiesFromAttr(Properties &prop, ::mlir::Attribute attr, ::llvm::function_ref<::mlir::InFlightDiagnostic()> emitError); static ::mlir::Attribute getPropertiesAsAttr(::mlir::MLIRContext *ctx, const Properties &prop); static llvm::hash_code computePropertiesHash(const Properties &prop); static std::optional getInherentAttr(::mlir::MLIRContext *ctx, const Properties &prop, llvm::StringRef name); static void setInherentAttr(Properties &prop, llvm::StringRef name, mlir::Attribute value); static void populateInherentAttrs(::mlir::MLIRContext *ctx, const Properties &prop, ::mlir::NamedAttrList &attrs); static ::llvm::LogicalResult verifyInherentAttrs(::mlir::OperationName opName, ::mlir::NamedAttrList &attrs, llvm::function_ref<::mlir::InFlightDiagnostic()> emitError); static ::llvm::LogicalResult readProperties(::mlir::DialectBytecodeReader &reader, ::mlir::OperationState &state); void writeProperties(::mlir::DialectBytecodeWriter &writer); ::mlir::ROCDL::WMMACModifierAttr getModCAttr() { return ::llvm::dyn_cast_or_null<::mlir::ROCDL::WMMACModifierAttr>(getProperties().modC); } ::mlir::ROCDL::WMMACModifier getModC(); ::mlir::IntegerAttr getReuseAAttr() { return ::llvm::dyn_cast_or_null<::mlir::IntegerAttr>(getProperties().reuseA); } bool getReuseA(); ::mlir::IntegerAttr getReuseBAttr() { return ::llvm::dyn_cast_or_null<::mlir::IntegerAttr>(getProperties().reuseB); } bool getReuseB(); void setModCAttr(::mlir::ROCDL::WMMACModifierAttr attr) { getProperties().modC = attr; } void setModC(::mlir::ROCDL::WMMACModifier attrValue); void setReuseAAttr(::mlir::IntegerAttr attr) { getProperties().reuseA = attr; } void setReuseA(bool attrValue); void setReuseBAttr(::mlir::IntegerAttr attr) { getProperties().reuseB = attr; } void setReuseB(bool attrValue); static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::Type res, ::mlir::Value a, ::mlir::Value b, ::mlir::ROCDL::WMMACModifierAttr modC, ::mlir::Value c, ::mlir::IntegerAttr reuseA, ::mlir::IntegerAttr reuseB = nullptr); static wmma_f32_16x16x64_bf8_bf8 create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::Type res, ::mlir::Value a, ::mlir::Value b, ::mlir::ROCDL::WMMACModifierAttr modC, ::mlir::Value c, ::mlir::IntegerAttr reuseA, ::mlir::IntegerAttr reuseB = nullptr); static wmma_f32_16x16x64_bf8_bf8 create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::Type res, ::mlir::Value a, ::mlir::Value b, ::mlir::ROCDL::WMMACModifierAttr modC, ::mlir::Value c, ::mlir::IntegerAttr reuseA, ::mlir::IntegerAttr reuseB = nullptr); static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::Value a, ::mlir::Value b, ::mlir::ROCDL::WMMACModifierAttr modC, ::mlir::Value c, ::mlir::IntegerAttr reuseA, ::mlir::IntegerAttr reuseB = nullptr); static wmma_f32_16x16x64_bf8_bf8 create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::Value a, ::mlir::Value b, ::mlir::ROCDL::WMMACModifierAttr modC, ::mlir::Value c, ::mlir::IntegerAttr reuseA, ::mlir::IntegerAttr reuseB = nullptr); static wmma_f32_16x16x64_bf8_bf8 create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::Value a, ::mlir::Value b, ::mlir::ROCDL::WMMACModifierAttr modC, ::mlir::Value c, ::mlir::IntegerAttr reuseA, ::mlir::IntegerAttr reuseB = nullptr); static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::Type res, ::mlir::Value a, ::mlir::Value b, ::mlir::ROCDL::WMMACModifier modC, ::mlir::Value c, bool reuseA = 0, bool reuseB = 0); static wmma_f32_16x16x64_bf8_bf8 create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::Type res, ::mlir::Value a, ::mlir::Value b, ::mlir::ROCDL::WMMACModifier modC, ::mlir::Value c, bool reuseA = 0, bool reuseB = 0); static wmma_f32_16x16x64_bf8_bf8 create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::Type res, ::mlir::Value a, ::mlir::Value b, ::mlir::ROCDL::WMMACModifier modC, ::mlir::Value c, bool reuseA = 0, bool reuseB = 0); static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::Value a, ::mlir::Value b, ::mlir::ROCDL::WMMACModifier modC, ::mlir::Value c, bool reuseA = 0, bool reuseB = 0); static wmma_f32_16x16x64_bf8_bf8 create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::Value a, ::mlir::Value b, ::mlir::ROCDL::WMMACModifier modC, ::mlir::Value c, bool reuseA = 0, bool reuseB = 0); static wmma_f32_16x16x64_bf8_bf8 create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::Value a, ::mlir::Value b, ::mlir::ROCDL::WMMACModifier modC, ::mlir::Value c, bool reuseA = 0, bool reuseB = 0); static void build(::mlir::OpBuilder &, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, ::llvm::ArrayRef<::mlir::NamedAttribute> attributes = {}); static wmma_f32_16x16x64_bf8_bf8 create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, ::llvm::ArrayRef<::mlir::NamedAttribute> attributes = {}); static wmma_f32_16x16x64_bf8_bf8 create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, ::llvm::ArrayRef<::mlir::NamedAttribute> attributes = {}); static void build(::mlir::OpBuilder &, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, const Properties &properties, ::llvm::ArrayRef<::mlir::NamedAttribute> discardableAttributes = {}); static wmma_f32_16x16x64_bf8_bf8 create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, const Properties &properties, ::llvm::ArrayRef<::mlir::NamedAttribute> discardableAttributes = {}); static wmma_f32_16x16x64_bf8_bf8 create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, const Properties &properties, ::llvm::ArrayRef<::mlir::NamedAttribute> discardableAttributes = {}); static void populateDefaultProperties(::mlir::OperationName opName, Properties &properties); ::llvm::LogicalResult verifyInvariantsImpl(); ::llvm::LogicalResult verifyInvariants(); static ::mlir::ParseResult parse(::mlir::OpAsmParser &parser, ::mlir::OperationState &result); void print(::mlir::OpAsmPrinter &_odsPrinter); private: ::mlir::StringAttr getAttributeNameForIndex(unsigned index) { return getAttributeNameForIndex((*this)->getName(), index); } static ::mlir::StringAttr getAttributeNameForIndex(::mlir::OperationName name, unsigned index) { assert(index < 3 && "invalid attribute index"); assert(name.getStringRef() == getOperationName() && "invalid operation name"); assert(name.isRegistered() && "Operation isn't registered, missing a " "dependent dialect loading?"); return name.getAttributeNames()[index]; } public: }; } // namespace mlir::ROCDL MLIR_DECLARE_EXPLICIT_TYPE_ID(::mlir::ROCDL::wmma_f32_16x16x64_bf8_bf8) MLIR_DECLARE_EXPLICIT_TYPE_ID(::mlir::ROCDL::detail::wmma_f32_16x16x64_bf8_bf8GenericAdaptorBase::Properties) namespace mlir::ROCDL { //===----------------------------------------------------------------------===// // ::mlir::ROCDL::wmma_f32_16x16x64_bf8_fp8 declarations //===----------------------------------------------------------------------===// namespace detail { class wmma_f32_16x16x64_bf8_fp8GenericAdaptorBase { public: struct Properties { using modCTy = ::mlir::ROCDL::WMMACModifierAttr; modCTy modC; auto getModC() const { auto &propStorage = this->modC; return ::llvm::dyn_cast_or_null<::mlir::ROCDL::WMMACModifierAttr>(propStorage); } void setModC(const ::mlir::ROCDL::WMMACModifierAttr &propValue) { this->modC = propValue; } using reuseATy = ::mlir::IntegerAttr; reuseATy reuseA; auto getReuseA() const { auto &propStorage = this->reuseA; return ::llvm::dyn_cast_or_null<::mlir::IntegerAttr>(propStorage); } void setReuseA(const ::mlir::IntegerAttr &propValue) { this->reuseA = propValue; } using reuseBTy = ::mlir::IntegerAttr; reuseBTy reuseB; auto getReuseB() const { auto &propStorage = this->reuseB; return ::llvm::dyn_cast_or_null<::mlir::IntegerAttr>(propStorage); } void setReuseB(const ::mlir::IntegerAttr &propValue) { this->reuseB = propValue; } bool operator==(const Properties &rhs) const { return rhs.modC == this->modC && rhs.reuseA == this->reuseA && rhs.reuseB == this->reuseB && true; } bool operator!=(const Properties &rhs) const { return !(*this == rhs); } }; protected: ::mlir::DictionaryAttr odsAttrs; ::std::optional<::mlir::OperationName> odsOpName; Properties properties; ::mlir::RegionRange odsRegions; public: wmma_f32_16x16x64_bf8_fp8GenericAdaptorBase(::mlir::DictionaryAttr attrs, const Properties &properties, ::mlir::RegionRange regions = {}) : odsAttrs(attrs), properties(properties), odsRegions(regions) { if (odsAttrs) odsOpName.emplace("rocdl.wmma.f32.16x16x64.bf8_fp8", odsAttrs.getContext()); } wmma_f32_16x16x64_bf8_fp8GenericAdaptorBase(wmma_f32_16x16x64_bf8_fp8 op); std::pair getODSOperandIndexAndLength(unsigned index, unsigned odsOperandsSize) { return {index, 1}; } const Properties &getProperties() { return properties; } ::mlir::DictionaryAttr getAttributes() { return odsAttrs; } ::mlir::ROCDL::WMMACModifierAttr getModCAttr(); ::mlir::ROCDL::WMMACModifier getModC(); ::mlir::IntegerAttr getReuseAAttr(); bool getReuseA(); ::mlir::IntegerAttr getReuseBAttr(); bool getReuseB(); }; } // namespace detail template class wmma_f32_16x16x64_bf8_fp8GenericAdaptor : public detail::wmma_f32_16x16x64_bf8_fp8GenericAdaptorBase { using ValueT = ::llvm::detail::ValueOfRange; using Base = detail::wmma_f32_16x16x64_bf8_fp8GenericAdaptorBase; static constexpr int odsIndex_a = 0; static constexpr int odsIndex_b = 1; static constexpr int odsIndex_c = 2; public: wmma_f32_16x16x64_bf8_fp8GenericAdaptor(RangeT values, ::mlir::DictionaryAttr attrs, const Properties &properties, ::mlir::RegionRange regions = {}) : Base(attrs, properties, regions), odsOperands(values) {} wmma_f32_16x16x64_bf8_fp8GenericAdaptor(RangeT values, ::mlir::DictionaryAttr attrs, ::mlir::PropertyRef properties, ::mlir::RegionRange regions = {}) : wmma_f32_16x16x64_bf8_fp8GenericAdaptor(values, attrs, (properties ? *properties.as() : Properties{}), regions) {} wmma_f32_16x16x64_bf8_fp8GenericAdaptor(RangeT values, ::mlir::DictionaryAttr attrs = nullptr) : wmma_f32_16x16x64_bf8_fp8GenericAdaptor(values, attrs, Properties{}, {}) {} wmma_f32_16x16x64_bf8_fp8GenericAdaptor(RangeT values, const wmma_f32_16x16x64_bf8_fp8GenericAdaptorBase &base) : Base(base), odsOperands(values) {} template >> wmma_f32_16x16x64_bf8_fp8GenericAdaptor(RangeT values, LateInst op) : Base(op), odsOperands(values) {} std::pair getODSOperandIndexAndLength(unsigned index) { return Base::getODSOperandIndexAndLength(index, odsOperands.size()); } RangeT getODSOperands(unsigned index) { auto valueRange = getODSOperandIndexAndLength(index); return {std::next(odsOperands.begin(), valueRange.first), std::next(odsOperands.begin(), valueRange.first + valueRange.second)}; } ValueT getA() { return (*getODSOperands(0).begin()); } ValueT getB() { return (*getODSOperands(1).begin()); } ValueT getC() { return (*getODSOperands(2).begin()); } RangeT getOperands() { return odsOperands; } private: RangeT odsOperands; }; class wmma_f32_16x16x64_bf8_fp8Adaptor : public wmma_f32_16x16x64_bf8_fp8GenericAdaptor<::mlir::ValueRange> { public: using wmma_f32_16x16x64_bf8_fp8GenericAdaptor::wmma_f32_16x16x64_bf8_fp8GenericAdaptor; wmma_f32_16x16x64_bf8_fp8Adaptor(wmma_f32_16x16x64_bf8_fp8 op); ::llvm::LogicalResult verify(::mlir::Location loc); }; class wmma_f32_16x16x64_bf8_fp8 : public ::mlir::Op::Impl, ::mlir::OpTrait::ZeroSuccessors, ::mlir::OpTrait::NOperands<3>::Impl, ::mlir::OpTrait::OpInvariants, ::mlir::BytecodeOpInterface::Trait> { public: using Op::Op; using Op::print; using Adaptor = wmma_f32_16x16x64_bf8_fp8Adaptor; template using GenericAdaptor = wmma_f32_16x16x64_bf8_fp8GenericAdaptor; using FoldAdaptor = GenericAdaptor<::llvm::ArrayRef<::mlir::Attribute>>; static constexpr int odsIndex_a = 0; static constexpr int odsIndex_b = 1; static constexpr int odsIndex_c = 2; using Properties = FoldAdaptor::Properties; static ::llvm::ArrayRef<::llvm::StringRef> getAttributeNames() { static ::llvm::StringRef attrNames[] = {::llvm::StringRef("modC"), ::llvm::StringRef("reuseA"), ::llvm::StringRef("reuseB")}; return ::llvm::ArrayRef(attrNames); } ::mlir::StringAttr getModCAttrName() { return getAttributeNameForIndex(0); } static ::mlir::StringAttr getModCAttrName(::mlir::OperationName name) { return getAttributeNameForIndex(name, 0); } ::mlir::StringAttr getReuseAAttrName() { return getAttributeNameForIndex(1); } static ::mlir::StringAttr getReuseAAttrName(::mlir::OperationName name) { return getAttributeNameForIndex(name, 1); } ::mlir::StringAttr getReuseBAttrName() { return getAttributeNameForIndex(2); } static ::mlir::StringAttr getReuseBAttrName(::mlir::OperationName name) { return getAttributeNameForIndex(name, 2); } static constexpr ::llvm::StringLiteral getOperationName() { return ::llvm::StringLiteral("rocdl.wmma.f32.16x16x64.bf8_fp8"); } std::pair getODSOperandIndexAndLength(unsigned index) { return {index, 1}; } ::mlir::Operation::operand_range getODSOperands(unsigned index) { auto valueRange = getODSOperandIndexAndLength(index); return {std::next(getOperation()->operand_begin(), valueRange.first), std::next(getOperation()->operand_begin(), valueRange.first + valueRange.second)}; } ::mlir::TypedValue<::mlir::Type> getA() { return ::llvm::cast<::mlir::TypedValue<::mlir::Type>>(*getODSOperands(0).begin()); } ::mlir::TypedValue<::mlir::Type> getB() { return ::llvm::cast<::mlir::TypedValue<::mlir::Type>>(*getODSOperands(1).begin()); } ::mlir::TypedValue<::mlir::Type> getC() { return ::llvm::cast<::mlir::TypedValue<::mlir::Type>>(*getODSOperands(2).begin()); } ::mlir::OpOperand &getAMutable() { auto range = getODSOperandIndexAndLength(0); return getOperation()->getOpOperand(range.first); } ::mlir::OpOperand &getBMutable() { auto range = getODSOperandIndexAndLength(1); return getOperation()->getOpOperand(range.first); } ::mlir::OpOperand &getCMutable() { auto range = getODSOperandIndexAndLength(2); return getOperation()->getOpOperand(range.first); } std::pair getODSResultIndexAndLength(unsigned index) { return {index, 1}; } ::mlir::Operation::result_range getODSResults(unsigned index) { auto valueRange = getODSResultIndexAndLength(index); return {std::next(getOperation()->result_begin(), valueRange.first), std::next(getOperation()->result_begin(), valueRange.first + valueRange.second)}; } ::mlir::TypedValue<::mlir::Type> getRes() { return ::llvm::cast<::mlir::TypedValue<::mlir::Type>>(*getODSResults(0).begin()); } static ::llvm::LogicalResult setPropertiesFromAttr(Properties &prop, ::mlir::Attribute attr, ::llvm::function_ref<::mlir::InFlightDiagnostic()> emitError); static ::mlir::Attribute getPropertiesAsAttr(::mlir::MLIRContext *ctx, const Properties &prop); static llvm::hash_code computePropertiesHash(const Properties &prop); static std::optional getInherentAttr(::mlir::MLIRContext *ctx, const Properties &prop, llvm::StringRef name); static void setInherentAttr(Properties &prop, llvm::StringRef name, mlir::Attribute value); static void populateInherentAttrs(::mlir::MLIRContext *ctx, const Properties &prop, ::mlir::NamedAttrList &attrs); static ::llvm::LogicalResult verifyInherentAttrs(::mlir::OperationName opName, ::mlir::NamedAttrList &attrs, llvm::function_ref<::mlir::InFlightDiagnostic()> emitError); static ::llvm::LogicalResult readProperties(::mlir::DialectBytecodeReader &reader, ::mlir::OperationState &state); void writeProperties(::mlir::DialectBytecodeWriter &writer); ::mlir::ROCDL::WMMACModifierAttr getModCAttr() { return ::llvm::dyn_cast_or_null<::mlir::ROCDL::WMMACModifierAttr>(getProperties().modC); } ::mlir::ROCDL::WMMACModifier getModC(); ::mlir::IntegerAttr getReuseAAttr() { return ::llvm::dyn_cast_or_null<::mlir::IntegerAttr>(getProperties().reuseA); } bool getReuseA(); ::mlir::IntegerAttr getReuseBAttr() { return ::llvm::dyn_cast_or_null<::mlir::IntegerAttr>(getProperties().reuseB); } bool getReuseB(); void setModCAttr(::mlir::ROCDL::WMMACModifierAttr attr) { getProperties().modC = attr; } void setModC(::mlir::ROCDL::WMMACModifier attrValue); void setReuseAAttr(::mlir::IntegerAttr attr) { getProperties().reuseA = attr; } void setReuseA(bool attrValue); void setReuseBAttr(::mlir::IntegerAttr attr) { getProperties().reuseB = attr; } void setReuseB(bool attrValue); static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::Type res, ::mlir::Value a, ::mlir::Value b, ::mlir::ROCDL::WMMACModifierAttr modC, ::mlir::Value c, ::mlir::IntegerAttr reuseA, ::mlir::IntegerAttr reuseB = nullptr); static wmma_f32_16x16x64_bf8_fp8 create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::Type res, ::mlir::Value a, ::mlir::Value b, ::mlir::ROCDL::WMMACModifierAttr modC, ::mlir::Value c, ::mlir::IntegerAttr reuseA, ::mlir::IntegerAttr reuseB = nullptr); static wmma_f32_16x16x64_bf8_fp8 create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::Type res, ::mlir::Value a, ::mlir::Value b, ::mlir::ROCDL::WMMACModifierAttr modC, ::mlir::Value c, ::mlir::IntegerAttr reuseA, ::mlir::IntegerAttr reuseB = nullptr); static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::Value a, ::mlir::Value b, ::mlir::ROCDL::WMMACModifierAttr modC, ::mlir::Value c, ::mlir::IntegerAttr reuseA, ::mlir::IntegerAttr reuseB = nullptr); static wmma_f32_16x16x64_bf8_fp8 create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::Value a, ::mlir::Value b, ::mlir::ROCDL::WMMACModifierAttr modC, ::mlir::Value c, ::mlir::IntegerAttr reuseA, ::mlir::IntegerAttr reuseB = nullptr); static wmma_f32_16x16x64_bf8_fp8 create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::Value a, ::mlir::Value b, ::mlir::ROCDL::WMMACModifierAttr modC, ::mlir::Value c, ::mlir::IntegerAttr reuseA, ::mlir::IntegerAttr reuseB = nullptr); static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::Type res, ::mlir::Value a, ::mlir::Value b, ::mlir::ROCDL::WMMACModifier modC, ::mlir::Value c, bool reuseA = 0, bool reuseB = 0); static wmma_f32_16x16x64_bf8_fp8 create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::Type res, ::mlir::Value a, ::mlir::Value b, ::mlir::ROCDL::WMMACModifier modC, ::mlir::Value c, bool reuseA = 0, bool reuseB = 0); static wmma_f32_16x16x64_bf8_fp8 create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::Type res, ::mlir::Value a, ::mlir::Value b, ::mlir::ROCDL::WMMACModifier modC, ::mlir::Value c, bool reuseA = 0, bool reuseB = 0); static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::Value a, ::mlir::Value b, ::mlir::ROCDL::WMMACModifier modC, ::mlir::Value c, bool reuseA = 0, bool reuseB = 0); static wmma_f32_16x16x64_bf8_fp8 create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::Value a, ::mlir::Value b, ::mlir::ROCDL::WMMACModifier modC, ::mlir::Value c, bool reuseA = 0, bool reuseB = 0); static wmma_f32_16x16x64_bf8_fp8 create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::Value a, ::mlir::Value b, ::mlir::ROCDL::WMMACModifier modC, ::mlir::Value c, bool reuseA = 0, bool reuseB = 0); static void build(::mlir::OpBuilder &, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, ::llvm::ArrayRef<::mlir::NamedAttribute> attributes = {}); static wmma_f32_16x16x64_bf8_fp8 create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, ::llvm::ArrayRef<::mlir::NamedAttribute> attributes = {}); static wmma_f32_16x16x64_bf8_fp8 create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, ::llvm::ArrayRef<::mlir::NamedAttribute> attributes = {}); static void build(::mlir::OpBuilder &, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, const Properties &properties, ::llvm::ArrayRef<::mlir::NamedAttribute> discardableAttributes = {}); static wmma_f32_16x16x64_bf8_fp8 create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, const Properties &properties, ::llvm::ArrayRef<::mlir::NamedAttribute> discardableAttributes = {}); static wmma_f32_16x16x64_bf8_fp8 create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, const Properties &properties, ::llvm::ArrayRef<::mlir::NamedAttribute> discardableAttributes = {}); static void populateDefaultProperties(::mlir::OperationName opName, Properties &properties); ::llvm::LogicalResult verifyInvariantsImpl(); ::llvm::LogicalResult verifyInvariants(); static ::mlir::ParseResult parse(::mlir::OpAsmParser &parser, ::mlir::OperationState &result); void print(::mlir::OpAsmPrinter &_odsPrinter); private: ::mlir::StringAttr getAttributeNameForIndex(unsigned index) { return getAttributeNameForIndex((*this)->getName(), index); } static ::mlir::StringAttr getAttributeNameForIndex(::mlir::OperationName name, unsigned index) { assert(index < 3 && "invalid attribute index"); assert(name.getStringRef() == getOperationName() && "invalid operation name"); assert(name.isRegistered() && "Operation isn't registered, missing a " "dependent dialect loading?"); return name.getAttributeNames()[index]; } public: }; } // namespace mlir::ROCDL MLIR_DECLARE_EXPLICIT_TYPE_ID(::mlir::ROCDL::wmma_f32_16x16x64_bf8_fp8) MLIR_DECLARE_EXPLICIT_TYPE_ID(::mlir::ROCDL::detail::wmma_f32_16x16x64_bf8_fp8GenericAdaptorBase::Properties) namespace mlir::ROCDL { //===----------------------------------------------------------------------===// // ::mlir::ROCDL::wmma_f32_16x16x64_fp8_bf8 declarations //===----------------------------------------------------------------------===// namespace detail { class wmma_f32_16x16x64_fp8_bf8GenericAdaptorBase { public: struct Properties { using modCTy = ::mlir::ROCDL::WMMACModifierAttr; modCTy modC; auto getModC() const { auto &propStorage = this->modC; return ::llvm::dyn_cast_or_null<::mlir::ROCDL::WMMACModifierAttr>(propStorage); } void setModC(const ::mlir::ROCDL::WMMACModifierAttr &propValue) { this->modC = propValue; } using reuseATy = ::mlir::IntegerAttr; reuseATy reuseA; auto getReuseA() const { auto &propStorage = this->reuseA; return ::llvm::dyn_cast_or_null<::mlir::IntegerAttr>(propStorage); } void setReuseA(const ::mlir::IntegerAttr &propValue) { this->reuseA = propValue; } using reuseBTy = ::mlir::IntegerAttr; reuseBTy reuseB; auto getReuseB() const { auto &propStorage = this->reuseB; return ::llvm::dyn_cast_or_null<::mlir::IntegerAttr>(propStorage); } void setReuseB(const ::mlir::IntegerAttr &propValue) { this->reuseB = propValue; } bool operator==(const Properties &rhs) const { return rhs.modC == this->modC && rhs.reuseA == this->reuseA && rhs.reuseB == this->reuseB && true; } bool operator!=(const Properties &rhs) const { return !(*this == rhs); } }; protected: ::mlir::DictionaryAttr odsAttrs; ::std::optional<::mlir::OperationName> odsOpName; Properties properties; ::mlir::RegionRange odsRegions; public: wmma_f32_16x16x64_fp8_bf8GenericAdaptorBase(::mlir::DictionaryAttr attrs, const Properties &properties, ::mlir::RegionRange regions = {}) : odsAttrs(attrs), properties(properties), odsRegions(regions) { if (odsAttrs) odsOpName.emplace("rocdl.wmma.f32.16x16x64.fp8_bf8", odsAttrs.getContext()); } wmma_f32_16x16x64_fp8_bf8GenericAdaptorBase(wmma_f32_16x16x64_fp8_bf8 op); std::pair getODSOperandIndexAndLength(unsigned index, unsigned odsOperandsSize) { return {index, 1}; } const Properties &getProperties() { return properties; } ::mlir::DictionaryAttr getAttributes() { return odsAttrs; } ::mlir::ROCDL::WMMACModifierAttr getModCAttr(); ::mlir::ROCDL::WMMACModifier getModC(); ::mlir::IntegerAttr getReuseAAttr(); bool getReuseA(); ::mlir::IntegerAttr getReuseBAttr(); bool getReuseB(); }; } // namespace detail template class wmma_f32_16x16x64_fp8_bf8GenericAdaptor : public detail::wmma_f32_16x16x64_fp8_bf8GenericAdaptorBase { using ValueT = ::llvm::detail::ValueOfRange; using Base = detail::wmma_f32_16x16x64_fp8_bf8GenericAdaptorBase; static constexpr int odsIndex_a = 0; static constexpr int odsIndex_b = 1; static constexpr int odsIndex_c = 2; public: wmma_f32_16x16x64_fp8_bf8GenericAdaptor(RangeT values, ::mlir::DictionaryAttr attrs, const Properties &properties, ::mlir::RegionRange regions = {}) : Base(attrs, properties, regions), odsOperands(values) {} wmma_f32_16x16x64_fp8_bf8GenericAdaptor(RangeT values, ::mlir::DictionaryAttr attrs, ::mlir::PropertyRef properties, ::mlir::RegionRange regions = {}) : wmma_f32_16x16x64_fp8_bf8GenericAdaptor(values, attrs, (properties ? *properties.as() : Properties{}), regions) {} wmma_f32_16x16x64_fp8_bf8GenericAdaptor(RangeT values, ::mlir::DictionaryAttr attrs = nullptr) : wmma_f32_16x16x64_fp8_bf8GenericAdaptor(values, attrs, Properties{}, {}) {} wmma_f32_16x16x64_fp8_bf8GenericAdaptor(RangeT values, const wmma_f32_16x16x64_fp8_bf8GenericAdaptorBase &base) : Base(base), odsOperands(values) {} template >> wmma_f32_16x16x64_fp8_bf8GenericAdaptor(RangeT values, LateInst op) : Base(op), odsOperands(values) {} std::pair getODSOperandIndexAndLength(unsigned index) { return Base::getODSOperandIndexAndLength(index, odsOperands.size()); } RangeT getODSOperands(unsigned index) { auto valueRange = getODSOperandIndexAndLength(index); return {std::next(odsOperands.begin(), valueRange.first), std::next(odsOperands.begin(), valueRange.first + valueRange.second)}; } ValueT getA() { return (*getODSOperands(0).begin()); } ValueT getB() { return (*getODSOperands(1).begin()); } ValueT getC() { return (*getODSOperands(2).begin()); } RangeT getOperands() { return odsOperands; } private: RangeT odsOperands; }; class wmma_f32_16x16x64_fp8_bf8Adaptor : public wmma_f32_16x16x64_fp8_bf8GenericAdaptor<::mlir::ValueRange> { public: using wmma_f32_16x16x64_fp8_bf8GenericAdaptor::wmma_f32_16x16x64_fp8_bf8GenericAdaptor; wmma_f32_16x16x64_fp8_bf8Adaptor(wmma_f32_16x16x64_fp8_bf8 op); ::llvm::LogicalResult verify(::mlir::Location loc); }; class wmma_f32_16x16x64_fp8_bf8 : public ::mlir::Op::Impl, ::mlir::OpTrait::ZeroSuccessors, ::mlir::OpTrait::NOperands<3>::Impl, ::mlir::OpTrait::OpInvariants, ::mlir::BytecodeOpInterface::Trait> { public: using Op::Op; using Op::print; using Adaptor = wmma_f32_16x16x64_fp8_bf8Adaptor; template using GenericAdaptor = wmma_f32_16x16x64_fp8_bf8GenericAdaptor; using FoldAdaptor = GenericAdaptor<::llvm::ArrayRef<::mlir::Attribute>>; static constexpr int odsIndex_a = 0; static constexpr int odsIndex_b = 1; static constexpr int odsIndex_c = 2; using Properties = FoldAdaptor::Properties; static ::llvm::ArrayRef<::llvm::StringRef> getAttributeNames() { static ::llvm::StringRef attrNames[] = {::llvm::StringRef("modC"), ::llvm::StringRef("reuseA"), ::llvm::StringRef("reuseB")}; return ::llvm::ArrayRef(attrNames); } ::mlir::StringAttr getModCAttrName() { return getAttributeNameForIndex(0); } static ::mlir::StringAttr getModCAttrName(::mlir::OperationName name) { return getAttributeNameForIndex(name, 0); } ::mlir::StringAttr getReuseAAttrName() { return getAttributeNameForIndex(1); } static ::mlir::StringAttr getReuseAAttrName(::mlir::OperationName name) { return getAttributeNameForIndex(name, 1); } ::mlir::StringAttr getReuseBAttrName() { return getAttributeNameForIndex(2); } static ::mlir::StringAttr getReuseBAttrName(::mlir::OperationName name) { return getAttributeNameForIndex(name, 2); } static constexpr ::llvm::StringLiteral getOperationName() { return ::llvm::StringLiteral("rocdl.wmma.f32.16x16x64.fp8_bf8"); } std::pair getODSOperandIndexAndLength(unsigned index) { return {index, 1}; } ::mlir::Operation::operand_range getODSOperands(unsigned index) { auto valueRange = getODSOperandIndexAndLength(index); return {std::next(getOperation()->operand_begin(), valueRange.first), std::next(getOperation()->operand_begin(), valueRange.first + valueRange.second)}; } ::mlir::TypedValue<::mlir::Type> getA() { return ::llvm::cast<::mlir::TypedValue<::mlir::Type>>(*getODSOperands(0).begin()); } ::mlir::TypedValue<::mlir::Type> getB() { return ::llvm::cast<::mlir::TypedValue<::mlir::Type>>(*getODSOperands(1).begin()); } ::mlir::TypedValue<::mlir::Type> getC() { return ::llvm::cast<::mlir::TypedValue<::mlir::Type>>(*getODSOperands(2).begin()); } ::mlir::OpOperand &getAMutable() { auto range = getODSOperandIndexAndLength(0); return getOperation()->getOpOperand(range.first); } ::mlir::OpOperand &getBMutable() { auto range = getODSOperandIndexAndLength(1); return getOperation()->getOpOperand(range.first); } ::mlir::OpOperand &getCMutable() { auto range = getODSOperandIndexAndLength(2); return getOperation()->getOpOperand(range.first); } std::pair getODSResultIndexAndLength(unsigned index) { return {index, 1}; } ::mlir::Operation::result_range getODSResults(unsigned index) { auto valueRange = getODSResultIndexAndLength(index); return {std::next(getOperation()->result_begin(), valueRange.first), std::next(getOperation()->result_begin(), valueRange.first + valueRange.second)}; } ::mlir::TypedValue<::mlir::Type> getRes() { return ::llvm::cast<::mlir::TypedValue<::mlir::Type>>(*getODSResults(0).begin()); } static ::llvm::LogicalResult setPropertiesFromAttr(Properties &prop, ::mlir::Attribute attr, ::llvm::function_ref<::mlir::InFlightDiagnostic()> emitError); static ::mlir::Attribute getPropertiesAsAttr(::mlir::MLIRContext *ctx, const Properties &prop); static llvm::hash_code computePropertiesHash(const Properties &prop); static std::optional getInherentAttr(::mlir::MLIRContext *ctx, const Properties &prop, llvm::StringRef name); static void setInherentAttr(Properties &prop, llvm::StringRef name, mlir::Attribute value); static void populateInherentAttrs(::mlir::MLIRContext *ctx, const Properties &prop, ::mlir::NamedAttrList &attrs); static ::llvm::LogicalResult verifyInherentAttrs(::mlir::OperationName opName, ::mlir::NamedAttrList &attrs, llvm::function_ref<::mlir::InFlightDiagnostic()> emitError); static ::llvm::LogicalResult readProperties(::mlir::DialectBytecodeReader &reader, ::mlir::OperationState &state); void writeProperties(::mlir::DialectBytecodeWriter &writer); ::mlir::ROCDL::WMMACModifierAttr getModCAttr() { return ::llvm::dyn_cast_or_null<::mlir::ROCDL::WMMACModifierAttr>(getProperties().modC); } ::mlir::ROCDL::WMMACModifier getModC(); ::mlir::IntegerAttr getReuseAAttr() { return ::llvm::dyn_cast_or_null<::mlir::IntegerAttr>(getProperties().reuseA); } bool getReuseA(); ::mlir::IntegerAttr getReuseBAttr() { return ::llvm::dyn_cast_or_null<::mlir::IntegerAttr>(getProperties().reuseB); } bool getReuseB(); void setModCAttr(::mlir::ROCDL::WMMACModifierAttr attr) { getProperties().modC = attr; } void setModC(::mlir::ROCDL::WMMACModifier attrValue); void setReuseAAttr(::mlir::IntegerAttr attr) { getProperties().reuseA = attr; } void setReuseA(bool attrValue); void setReuseBAttr(::mlir::IntegerAttr attr) { getProperties().reuseB = attr; } void setReuseB(bool attrValue); static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::Type res, ::mlir::Value a, ::mlir::Value b, ::mlir::ROCDL::WMMACModifierAttr modC, ::mlir::Value c, ::mlir::IntegerAttr reuseA, ::mlir::IntegerAttr reuseB = nullptr); static wmma_f32_16x16x64_fp8_bf8 create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::Type res, ::mlir::Value a, ::mlir::Value b, ::mlir::ROCDL::WMMACModifierAttr modC, ::mlir::Value c, ::mlir::IntegerAttr reuseA, ::mlir::IntegerAttr reuseB = nullptr); static wmma_f32_16x16x64_fp8_bf8 create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::Type res, ::mlir::Value a, ::mlir::Value b, ::mlir::ROCDL::WMMACModifierAttr modC, ::mlir::Value c, ::mlir::IntegerAttr reuseA, ::mlir::IntegerAttr reuseB = nullptr); static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::Value a, ::mlir::Value b, ::mlir::ROCDL::WMMACModifierAttr modC, ::mlir::Value c, ::mlir::IntegerAttr reuseA, ::mlir::IntegerAttr reuseB = nullptr); static wmma_f32_16x16x64_fp8_bf8 create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::Value a, ::mlir::Value b, ::mlir::ROCDL::WMMACModifierAttr modC, ::mlir::Value c, ::mlir::IntegerAttr reuseA, ::mlir::IntegerAttr reuseB = nullptr); static wmma_f32_16x16x64_fp8_bf8 create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::Value a, ::mlir::Value b, ::mlir::ROCDL::WMMACModifierAttr modC, ::mlir::Value c, ::mlir::IntegerAttr reuseA, ::mlir::IntegerAttr reuseB = nullptr); static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::Type res, ::mlir::Value a, ::mlir::Value b, ::mlir::ROCDL::WMMACModifier modC, ::mlir::Value c, bool reuseA = 0, bool reuseB = 0); static wmma_f32_16x16x64_fp8_bf8 create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::Type res, ::mlir::Value a, ::mlir::Value b, ::mlir::ROCDL::WMMACModifier modC, ::mlir::Value c, bool reuseA = 0, bool reuseB = 0); static wmma_f32_16x16x64_fp8_bf8 create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::Type res, ::mlir::Value a, ::mlir::Value b, ::mlir::ROCDL::WMMACModifier modC, ::mlir::Value c, bool reuseA = 0, bool reuseB = 0); static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::Value a, ::mlir::Value b, ::mlir::ROCDL::WMMACModifier modC, ::mlir::Value c, bool reuseA = 0, bool reuseB = 0); static wmma_f32_16x16x64_fp8_bf8 create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::Value a, ::mlir::Value b, ::mlir::ROCDL::WMMACModifier modC, ::mlir::Value c, bool reuseA = 0, bool reuseB = 0); static wmma_f32_16x16x64_fp8_bf8 create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::Value a, ::mlir::Value b, ::mlir::ROCDL::WMMACModifier modC, ::mlir::Value c, bool reuseA = 0, bool reuseB = 0); static void build(::mlir::OpBuilder &, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, ::llvm::ArrayRef<::mlir::NamedAttribute> attributes = {}); static wmma_f32_16x16x64_fp8_bf8 create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, ::llvm::ArrayRef<::mlir::NamedAttribute> attributes = {}); static wmma_f32_16x16x64_fp8_bf8 create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, ::llvm::ArrayRef<::mlir::NamedAttribute> attributes = {}); static void build(::mlir::OpBuilder &, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, const Properties &properties, ::llvm::ArrayRef<::mlir::NamedAttribute> discardableAttributes = {}); static wmma_f32_16x16x64_fp8_bf8 create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, const Properties &properties, ::llvm::ArrayRef<::mlir::NamedAttribute> discardableAttributes = {}); static wmma_f32_16x16x64_fp8_bf8 create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, const Properties &properties, ::llvm::ArrayRef<::mlir::NamedAttribute> discardableAttributes = {}); static void populateDefaultProperties(::mlir::OperationName opName, Properties &properties); ::llvm::LogicalResult verifyInvariantsImpl(); ::llvm::LogicalResult verifyInvariants(); static ::mlir::ParseResult parse(::mlir::OpAsmParser &parser, ::mlir::OperationState &result); void print(::mlir::OpAsmPrinter &_odsPrinter); private: ::mlir::StringAttr getAttributeNameForIndex(unsigned index) { return getAttributeNameForIndex((*this)->getName(), index); } static ::mlir::StringAttr getAttributeNameForIndex(::mlir::OperationName name, unsigned index) { assert(index < 3 && "invalid attribute index"); assert(name.getStringRef() == getOperationName() && "invalid operation name"); assert(name.isRegistered() && "Operation isn't registered, missing a " "dependent dialect loading?"); return name.getAttributeNames()[index]; } public: }; } // namespace mlir::ROCDL MLIR_DECLARE_EXPLICIT_TYPE_ID(::mlir::ROCDL::wmma_f32_16x16x64_fp8_bf8) MLIR_DECLARE_EXPLICIT_TYPE_ID(::mlir::ROCDL::detail::wmma_f32_16x16x64_fp8_bf8GenericAdaptorBase::Properties) namespace mlir::ROCDL { //===----------------------------------------------------------------------===// // ::mlir::ROCDL::wmma_f32_16x16x64_fp8_fp8 declarations //===----------------------------------------------------------------------===// namespace detail { class wmma_f32_16x16x64_fp8_fp8GenericAdaptorBase { public: struct Properties { using modCTy = ::mlir::ROCDL::WMMACModifierAttr; modCTy modC; auto getModC() const { auto &propStorage = this->modC; return ::llvm::dyn_cast_or_null<::mlir::ROCDL::WMMACModifierAttr>(propStorage); } void setModC(const ::mlir::ROCDL::WMMACModifierAttr &propValue) { this->modC = propValue; } using reuseATy = ::mlir::IntegerAttr; reuseATy reuseA; auto getReuseA() const { auto &propStorage = this->reuseA; return ::llvm::dyn_cast_or_null<::mlir::IntegerAttr>(propStorage); } void setReuseA(const ::mlir::IntegerAttr &propValue) { this->reuseA = propValue; } using reuseBTy = ::mlir::IntegerAttr; reuseBTy reuseB; auto getReuseB() const { auto &propStorage = this->reuseB; return ::llvm::dyn_cast_or_null<::mlir::IntegerAttr>(propStorage); } void setReuseB(const ::mlir::IntegerAttr &propValue) { this->reuseB = propValue; } bool operator==(const Properties &rhs) const { return rhs.modC == this->modC && rhs.reuseA == this->reuseA && rhs.reuseB == this->reuseB && true; } bool operator!=(const Properties &rhs) const { return !(*this == rhs); } }; protected: ::mlir::DictionaryAttr odsAttrs; ::std::optional<::mlir::OperationName> odsOpName; Properties properties; ::mlir::RegionRange odsRegions; public: wmma_f32_16x16x64_fp8_fp8GenericAdaptorBase(::mlir::DictionaryAttr attrs, const Properties &properties, ::mlir::RegionRange regions = {}) : odsAttrs(attrs), properties(properties), odsRegions(regions) { if (odsAttrs) odsOpName.emplace("rocdl.wmma.f32.16x16x64.fp8_fp8", odsAttrs.getContext()); } wmma_f32_16x16x64_fp8_fp8GenericAdaptorBase(wmma_f32_16x16x64_fp8_fp8 op); std::pair getODSOperandIndexAndLength(unsigned index, unsigned odsOperandsSize) { return {index, 1}; } const Properties &getProperties() { return properties; } ::mlir::DictionaryAttr getAttributes() { return odsAttrs; } ::mlir::ROCDL::WMMACModifierAttr getModCAttr(); ::mlir::ROCDL::WMMACModifier getModC(); ::mlir::IntegerAttr getReuseAAttr(); bool getReuseA(); ::mlir::IntegerAttr getReuseBAttr(); bool getReuseB(); }; } // namespace detail template class wmma_f32_16x16x64_fp8_fp8GenericAdaptor : public detail::wmma_f32_16x16x64_fp8_fp8GenericAdaptorBase { using ValueT = ::llvm::detail::ValueOfRange; using Base = detail::wmma_f32_16x16x64_fp8_fp8GenericAdaptorBase; static constexpr int odsIndex_a = 0; static constexpr int odsIndex_b = 1; static constexpr int odsIndex_c = 2; public: wmma_f32_16x16x64_fp8_fp8GenericAdaptor(RangeT values, ::mlir::DictionaryAttr attrs, const Properties &properties, ::mlir::RegionRange regions = {}) : Base(attrs, properties, regions), odsOperands(values) {} wmma_f32_16x16x64_fp8_fp8GenericAdaptor(RangeT values, ::mlir::DictionaryAttr attrs, ::mlir::PropertyRef properties, ::mlir::RegionRange regions = {}) : wmma_f32_16x16x64_fp8_fp8GenericAdaptor(values, attrs, (properties ? *properties.as() : Properties{}), regions) {} wmma_f32_16x16x64_fp8_fp8GenericAdaptor(RangeT values, ::mlir::DictionaryAttr attrs = nullptr) : wmma_f32_16x16x64_fp8_fp8GenericAdaptor(values, attrs, Properties{}, {}) {} wmma_f32_16x16x64_fp8_fp8GenericAdaptor(RangeT values, const wmma_f32_16x16x64_fp8_fp8GenericAdaptorBase &base) : Base(base), odsOperands(values) {} template >> wmma_f32_16x16x64_fp8_fp8GenericAdaptor(RangeT values, LateInst op) : Base(op), odsOperands(values) {} std::pair getODSOperandIndexAndLength(unsigned index) { return Base::getODSOperandIndexAndLength(index, odsOperands.size()); } RangeT getODSOperands(unsigned index) { auto valueRange = getODSOperandIndexAndLength(index); return {std::next(odsOperands.begin(), valueRange.first), std::next(odsOperands.begin(), valueRange.first + valueRange.second)}; } ValueT getA() { return (*getODSOperands(0).begin()); } ValueT getB() { return (*getODSOperands(1).begin()); } ValueT getC() { return (*getODSOperands(2).begin()); } RangeT getOperands() { return odsOperands; } private: RangeT odsOperands; }; class wmma_f32_16x16x64_fp8_fp8Adaptor : public wmma_f32_16x16x64_fp8_fp8GenericAdaptor<::mlir::ValueRange> { public: using wmma_f32_16x16x64_fp8_fp8GenericAdaptor::wmma_f32_16x16x64_fp8_fp8GenericAdaptor; wmma_f32_16x16x64_fp8_fp8Adaptor(wmma_f32_16x16x64_fp8_fp8 op); ::llvm::LogicalResult verify(::mlir::Location loc); }; class wmma_f32_16x16x64_fp8_fp8 : public ::mlir::Op::Impl, ::mlir::OpTrait::ZeroSuccessors, ::mlir::OpTrait::NOperands<3>::Impl, ::mlir::OpTrait::OpInvariants, ::mlir::BytecodeOpInterface::Trait> { public: using Op::Op; using Op::print; using Adaptor = wmma_f32_16x16x64_fp8_fp8Adaptor; template using GenericAdaptor = wmma_f32_16x16x64_fp8_fp8GenericAdaptor; using FoldAdaptor = GenericAdaptor<::llvm::ArrayRef<::mlir::Attribute>>; static constexpr int odsIndex_a = 0; static constexpr int odsIndex_b = 1; static constexpr int odsIndex_c = 2; using Properties = FoldAdaptor::Properties; static ::llvm::ArrayRef<::llvm::StringRef> getAttributeNames() { static ::llvm::StringRef attrNames[] = {::llvm::StringRef("modC"), ::llvm::StringRef("reuseA"), ::llvm::StringRef("reuseB")}; return ::llvm::ArrayRef(attrNames); } ::mlir::StringAttr getModCAttrName() { return getAttributeNameForIndex(0); } static ::mlir::StringAttr getModCAttrName(::mlir::OperationName name) { return getAttributeNameForIndex(name, 0); } ::mlir::StringAttr getReuseAAttrName() { return getAttributeNameForIndex(1); } static ::mlir::StringAttr getReuseAAttrName(::mlir::OperationName name) { return getAttributeNameForIndex(name, 1); } ::mlir::StringAttr getReuseBAttrName() { return getAttributeNameForIndex(2); } static ::mlir::StringAttr getReuseBAttrName(::mlir::OperationName name) { return getAttributeNameForIndex(name, 2); } static constexpr ::llvm::StringLiteral getOperationName() { return ::llvm::StringLiteral("rocdl.wmma.f32.16x16x64.fp8_fp8"); } std::pair getODSOperandIndexAndLength(unsigned index) { return {index, 1}; } ::mlir::Operation::operand_range getODSOperands(unsigned index) { auto valueRange = getODSOperandIndexAndLength(index); return {std::next(getOperation()->operand_begin(), valueRange.first), std::next(getOperation()->operand_begin(), valueRange.first + valueRange.second)}; } ::mlir::TypedValue<::mlir::Type> getA() { return ::llvm::cast<::mlir::TypedValue<::mlir::Type>>(*getODSOperands(0).begin()); } ::mlir::TypedValue<::mlir::Type> getB() { return ::llvm::cast<::mlir::TypedValue<::mlir::Type>>(*getODSOperands(1).begin()); } ::mlir::TypedValue<::mlir::Type> getC() { return ::llvm::cast<::mlir::TypedValue<::mlir::Type>>(*getODSOperands(2).begin()); } ::mlir::OpOperand &getAMutable() { auto range = getODSOperandIndexAndLength(0); return getOperation()->getOpOperand(range.first); } ::mlir::OpOperand &getBMutable() { auto range = getODSOperandIndexAndLength(1); return getOperation()->getOpOperand(range.first); } ::mlir::OpOperand &getCMutable() { auto range = getODSOperandIndexAndLength(2); return getOperation()->getOpOperand(range.first); } std::pair getODSResultIndexAndLength(unsigned index) { return {index, 1}; } ::mlir::Operation::result_range getODSResults(unsigned index) { auto valueRange = getODSResultIndexAndLength(index); return {std::next(getOperation()->result_begin(), valueRange.first), std::next(getOperation()->result_begin(), valueRange.first + valueRange.second)}; } ::mlir::TypedValue<::mlir::Type> getRes() { return ::llvm::cast<::mlir::TypedValue<::mlir::Type>>(*getODSResults(0).begin()); } static ::llvm::LogicalResult setPropertiesFromAttr(Properties &prop, ::mlir::Attribute attr, ::llvm::function_ref<::mlir::InFlightDiagnostic()> emitError); static ::mlir::Attribute getPropertiesAsAttr(::mlir::MLIRContext *ctx, const Properties &prop); static llvm::hash_code computePropertiesHash(const Properties &prop); static std::optional getInherentAttr(::mlir::MLIRContext *ctx, const Properties &prop, llvm::StringRef name); static void setInherentAttr(Properties &prop, llvm::StringRef name, mlir::Attribute value); static void populateInherentAttrs(::mlir::MLIRContext *ctx, const Properties &prop, ::mlir::NamedAttrList &attrs); static ::llvm::LogicalResult verifyInherentAttrs(::mlir::OperationName opName, ::mlir::NamedAttrList &attrs, llvm::function_ref<::mlir::InFlightDiagnostic()> emitError); static ::llvm::LogicalResult readProperties(::mlir::DialectBytecodeReader &reader, ::mlir::OperationState &state); void writeProperties(::mlir::DialectBytecodeWriter &writer); ::mlir::ROCDL::WMMACModifierAttr getModCAttr() { return ::llvm::dyn_cast_or_null<::mlir::ROCDL::WMMACModifierAttr>(getProperties().modC); } ::mlir::ROCDL::WMMACModifier getModC(); ::mlir::IntegerAttr getReuseAAttr() { return ::llvm::dyn_cast_or_null<::mlir::IntegerAttr>(getProperties().reuseA); } bool getReuseA(); ::mlir::IntegerAttr getReuseBAttr() { return ::llvm::dyn_cast_or_null<::mlir::IntegerAttr>(getProperties().reuseB); } bool getReuseB(); void setModCAttr(::mlir::ROCDL::WMMACModifierAttr attr) { getProperties().modC = attr; } void setModC(::mlir::ROCDL::WMMACModifier attrValue); void setReuseAAttr(::mlir::IntegerAttr attr) { getProperties().reuseA = attr; } void setReuseA(bool attrValue); void setReuseBAttr(::mlir::IntegerAttr attr) { getProperties().reuseB = attr; } void setReuseB(bool attrValue); static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::Type res, ::mlir::Value a, ::mlir::Value b, ::mlir::ROCDL::WMMACModifierAttr modC, ::mlir::Value c, ::mlir::IntegerAttr reuseA, ::mlir::IntegerAttr reuseB = nullptr); static wmma_f32_16x16x64_fp8_fp8 create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::Type res, ::mlir::Value a, ::mlir::Value b, ::mlir::ROCDL::WMMACModifierAttr modC, ::mlir::Value c, ::mlir::IntegerAttr reuseA, ::mlir::IntegerAttr reuseB = nullptr); static wmma_f32_16x16x64_fp8_fp8 create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::Type res, ::mlir::Value a, ::mlir::Value b, ::mlir::ROCDL::WMMACModifierAttr modC, ::mlir::Value c, ::mlir::IntegerAttr reuseA, ::mlir::IntegerAttr reuseB = nullptr); static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::Value a, ::mlir::Value b, ::mlir::ROCDL::WMMACModifierAttr modC, ::mlir::Value c, ::mlir::IntegerAttr reuseA, ::mlir::IntegerAttr reuseB = nullptr); static wmma_f32_16x16x64_fp8_fp8 create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::Value a, ::mlir::Value b, ::mlir::ROCDL::WMMACModifierAttr modC, ::mlir::Value c, ::mlir::IntegerAttr reuseA, ::mlir::IntegerAttr reuseB = nullptr); static wmma_f32_16x16x64_fp8_fp8 create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::Value a, ::mlir::Value b, ::mlir::ROCDL::WMMACModifierAttr modC, ::mlir::Value c, ::mlir::IntegerAttr reuseA, ::mlir::IntegerAttr reuseB = nullptr); static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::Type res, ::mlir::Value a, ::mlir::Value b, ::mlir::ROCDL::WMMACModifier modC, ::mlir::Value c, bool reuseA = 0, bool reuseB = 0); static wmma_f32_16x16x64_fp8_fp8 create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::Type res, ::mlir::Value a, ::mlir::Value b, ::mlir::ROCDL::WMMACModifier modC, ::mlir::Value c, bool reuseA = 0, bool reuseB = 0); static wmma_f32_16x16x64_fp8_fp8 create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::Type res, ::mlir::Value a, ::mlir::Value b, ::mlir::ROCDL::WMMACModifier modC, ::mlir::Value c, bool reuseA = 0, bool reuseB = 0); static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::Value a, ::mlir::Value b, ::mlir::ROCDL::WMMACModifier modC, ::mlir::Value c, bool reuseA = 0, bool reuseB = 0); static wmma_f32_16x16x64_fp8_fp8 create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::Value a, ::mlir::Value b, ::mlir::ROCDL::WMMACModifier modC, ::mlir::Value c, bool reuseA = 0, bool reuseB = 0); static wmma_f32_16x16x64_fp8_fp8 create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::Value a, ::mlir::Value b, ::mlir::ROCDL::WMMACModifier modC, ::mlir::Value c, bool reuseA = 0, bool reuseB = 0); static void build(::mlir::OpBuilder &, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, ::llvm::ArrayRef<::mlir::NamedAttribute> attributes = {}); static wmma_f32_16x16x64_fp8_fp8 create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, ::llvm::ArrayRef<::mlir::NamedAttribute> attributes = {}); static wmma_f32_16x16x64_fp8_fp8 create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, ::llvm::ArrayRef<::mlir::NamedAttribute> attributes = {}); static void build(::mlir::OpBuilder &, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, const Properties &properties, ::llvm::ArrayRef<::mlir::NamedAttribute> discardableAttributes = {}); static wmma_f32_16x16x64_fp8_fp8 create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, const Properties &properties, ::llvm::ArrayRef<::mlir::NamedAttribute> discardableAttributes = {}); static wmma_f32_16x16x64_fp8_fp8 create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, const Properties &properties, ::llvm::ArrayRef<::mlir::NamedAttribute> discardableAttributes = {}); static void populateDefaultProperties(::mlir::OperationName opName, Properties &properties); ::llvm::LogicalResult verifyInvariantsImpl(); ::llvm::LogicalResult verifyInvariants(); static ::mlir::ParseResult parse(::mlir::OpAsmParser &parser, ::mlir::OperationState &result); void print(::mlir::OpAsmPrinter &_odsPrinter); private: ::mlir::StringAttr getAttributeNameForIndex(unsigned index) { return getAttributeNameForIndex((*this)->getName(), index); } static ::mlir::StringAttr getAttributeNameForIndex(::mlir::OperationName name, unsigned index) { assert(index < 3 && "invalid attribute index"); assert(name.getStringRef() == getOperationName() && "invalid operation name"); assert(name.isRegistered() && "Operation isn't registered, missing a " "dependent dialect loading?"); return name.getAttributeNames()[index]; } public: }; } // namespace mlir::ROCDL MLIR_DECLARE_EXPLICIT_TYPE_ID(::mlir::ROCDL::wmma_f32_16x16x64_fp8_fp8) MLIR_DECLARE_EXPLICIT_TYPE_ID(::mlir::ROCDL::detail::wmma_f32_16x16x64_fp8_fp8GenericAdaptorBase::Properties) namespace mlir::ROCDL { //===----------------------------------------------------------------------===// // ::mlir::ROCDL::wmma_i32_16x16x16_iu4 declarations //===----------------------------------------------------------------------===// namespace detail { class wmma_i32_16x16x16_iu4GenericAdaptorBase { public: struct Properties { using clampTy = ::mlir::IntegerAttr; clampTy clamp; auto getClamp() const { auto &propStorage = this->clamp; return ::llvm::dyn_cast_or_null<::mlir::IntegerAttr>(propStorage); } void setClamp(const ::mlir::IntegerAttr &propValue) { this->clamp = propValue; } using signATy = ::mlir::IntegerAttr; signATy signA; auto getSignA() const { auto &propStorage = this->signA; return ::llvm::dyn_cast_or_null<::mlir::IntegerAttr>(propStorage); } void setSignA(const ::mlir::IntegerAttr &propValue) { this->signA = propValue; } using signBTy = ::mlir::IntegerAttr; signBTy signB; auto getSignB() const { auto &propStorage = this->signB; return ::llvm::dyn_cast_or_null<::mlir::IntegerAttr>(propStorage); } void setSignB(const ::mlir::IntegerAttr &propValue) { this->signB = propValue; } bool operator==(const Properties &rhs) const { return rhs.clamp == this->clamp && rhs.signA == this->signA && rhs.signB == this->signB && true; } bool operator!=(const Properties &rhs) const { return !(*this == rhs); } }; protected: ::mlir::DictionaryAttr odsAttrs; ::std::optional<::mlir::OperationName> odsOpName; Properties properties; ::mlir::RegionRange odsRegions; public: wmma_i32_16x16x16_iu4GenericAdaptorBase(::mlir::DictionaryAttr attrs, const Properties &properties, ::mlir::RegionRange regions = {}) : odsAttrs(attrs), properties(properties), odsRegions(regions) { if (odsAttrs) odsOpName.emplace("rocdl.wmma.i32.16x16x16.iu4", odsAttrs.getContext()); } wmma_i32_16x16x16_iu4GenericAdaptorBase(wmma_i32_16x16x16_iu4 op); std::pair getODSOperandIndexAndLength(unsigned index, unsigned odsOperandsSize) { return {index, 1}; } const Properties &getProperties() { return properties; } ::mlir::DictionaryAttr getAttributes() { return odsAttrs; } ::mlir::IntegerAttr getSignAAttr(); bool getSignA(); ::mlir::IntegerAttr getSignBAttr(); bool getSignB(); ::mlir::IntegerAttr getClampAttr(); bool getClamp(); }; } // namespace detail template class wmma_i32_16x16x16_iu4GenericAdaptor : public detail::wmma_i32_16x16x16_iu4GenericAdaptorBase { using ValueT = ::llvm::detail::ValueOfRange; using Base = detail::wmma_i32_16x16x16_iu4GenericAdaptorBase; static constexpr int odsIndex_a = 0; static constexpr int odsIndex_b = 1; static constexpr int odsIndex_c = 2; public: wmma_i32_16x16x16_iu4GenericAdaptor(RangeT values, ::mlir::DictionaryAttr attrs, const Properties &properties, ::mlir::RegionRange regions = {}) : Base(attrs, properties, regions), odsOperands(values) {} wmma_i32_16x16x16_iu4GenericAdaptor(RangeT values, ::mlir::DictionaryAttr attrs, ::mlir::PropertyRef properties, ::mlir::RegionRange regions = {}) : wmma_i32_16x16x16_iu4GenericAdaptor(values, attrs, (properties ? *properties.as() : Properties{}), regions) {} wmma_i32_16x16x16_iu4GenericAdaptor(RangeT values, ::mlir::DictionaryAttr attrs = nullptr) : wmma_i32_16x16x16_iu4GenericAdaptor(values, attrs, Properties{}, {}) {} wmma_i32_16x16x16_iu4GenericAdaptor(RangeT values, const wmma_i32_16x16x16_iu4GenericAdaptorBase &base) : Base(base), odsOperands(values) {} template >> wmma_i32_16x16x16_iu4GenericAdaptor(RangeT values, LateInst op) : Base(op), odsOperands(values) {} std::pair getODSOperandIndexAndLength(unsigned index) { return Base::getODSOperandIndexAndLength(index, odsOperands.size()); } RangeT getODSOperands(unsigned index) { auto valueRange = getODSOperandIndexAndLength(index); return {std::next(odsOperands.begin(), valueRange.first), std::next(odsOperands.begin(), valueRange.first + valueRange.second)}; } ValueT getA() { return (*getODSOperands(0).begin()); } ValueT getB() { return (*getODSOperands(1).begin()); } ValueT getC() { return (*getODSOperands(2).begin()); } RangeT getOperands() { return odsOperands; } private: RangeT odsOperands; }; class wmma_i32_16x16x16_iu4Adaptor : public wmma_i32_16x16x16_iu4GenericAdaptor<::mlir::ValueRange> { public: using wmma_i32_16x16x16_iu4GenericAdaptor::wmma_i32_16x16x16_iu4GenericAdaptor; wmma_i32_16x16x16_iu4Adaptor(wmma_i32_16x16x16_iu4 op); ::llvm::LogicalResult verify(::mlir::Location loc); }; class wmma_i32_16x16x16_iu4 : public ::mlir::Op::Impl, ::mlir::OpTrait::ZeroSuccessors, ::mlir::OpTrait::NOperands<3>::Impl, ::mlir::OpTrait::OpInvariants, ::mlir::BytecodeOpInterface::Trait> { public: using Op::Op; using Op::print; using Adaptor = wmma_i32_16x16x16_iu4Adaptor; template using GenericAdaptor = wmma_i32_16x16x16_iu4GenericAdaptor; using FoldAdaptor = GenericAdaptor<::llvm::ArrayRef<::mlir::Attribute>>; static constexpr int odsIndex_a = 0; static constexpr int odsIndex_b = 1; static constexpr int odsIndex_c = 2; using Properties = FoldAdaptor::Properties; static ::llvm::ArrayRef<::llvm::StringRef> getAttributeNames() { static ::llvm::StringRef attrNames[] = {::llvm::StringRef("clamp"), ::llvm::StringRef("signA"), ::llvm::StringRef("signB")}; return ::llvm::ArrayRef(attrNames); } ::mlir::StringAttr getClampAttrName() { return getAttributeNameForIndex(0); } static ::mlir::StringAttr getClampAttrName(::mlir::OperationName name) { return getAttributeNameForIndex(name, 0); } ::mlir::StringAttr getSignAAttrName() { return getAttributeNameForIndex(1); } static ::mlir::StringAttr getSignAAttrName(::mlir::OperationName name) { return getAttributeNameForIndex(name, 1); } ::mlir::StringAttr getSignBAttrName() { return getAttributeNameForIndex(2); } static ::mlir::StringAttr getSignBAttrName(::mlir::OperationName name) { return getAttributeNameForIndex(name, 2); } static constexpr ::llvm::StringLiteral getOperationName() { return ::llvm::StringLiteral("rocdl.wmma.i32.16x16x16.iu4"); } std::pair getODSOperandIndexAndLength(unsigned index) { return {index, 1}; } ::mlir::Operation::operand_range getODSOperands(unsigned index) { auto valueRange = getODSOperandIndexAndLength(index); return {std::next(getOperation()->operand_begin(), valueRange.first), std::next(getOperation()->operand_begin(), valueRange.first + valueRange.second)}; } ::mlir::TypedValue<::mlir::Type> getA() { return ::llvm::cast<::mlir::TypedValue<::mlir::Type>>(*getODSOperands(0).begin()); } ::mlir::TypedValue<::mlir::Type> getB() { return ::llvm::cast<::mlir::TypedValue<::mlir::Type>>(*getODSOperands(1).begin()); } ::mlir::TypedValue<::mlir::Type> getC() { return ::llvm::cast<::mlir::TypedValue<::mlir::Type>>(*getODSOperands(2).begin()); } ::mlir::OpOperand &getAMutable() { auto range = getODSOperandIndexAndLength(0); return getOperation()->getOpOperand(range.first); } ::mlir::OpOperand &getBMutable() { auto range = getODSOperandIndexAndLength(1); return getOperation()->getOpOperand(range.first); } ::mlir::OpOperand &getCMutable() { auto range = getODSOperandIndexAndLength(2); return getOperation()->getOpOperand(range.first); } std::pair getODSResultIndexAndLength(unsigned index) { return {index, 1}; } ::mlir::Operation::result_range getODSResults(unsigned index) { auto valueRange = getODSResultIndexAndLength(index); return {std::next(getOperation()->result_begin(), valueRange.first), std::next(getOperation()->result_begin(), valueRange.first + valueRange.second)}; } ::mlir::TypedValue<::mlir::Type> getRes() { return ::llvm::cast<::mlir::TypedValue<::mlir::Type>>(*getODSResults(0).begin()); } static ::llvm::LogicalResult setPropertiesFromAttr(Properties &prop, ::mlir::Attribute attr, ::llvm::function_ref<::mlir::InFlightDiagnostic()> emitError); static ::mlir::Attribute getPropertiesAsAttr(::mlir::MLIRContext *ctx, const Properties &prop); static llvm::hash_code computePropertiesHash(const Properties &prop); static std::optional getInherentAttr(::mlir::MLIRContext *ctx, const Properties &prop, llvm::StringRef name); static void setInherentAttr(Properties &prop, llvm::StringRef name, mlir::Attribute value); static void populateInherentAttrs(::mlir::MLIRContext *ctx, const Properties &prop, ::mlir::NamedAttrList &attrs); static ::llvm::LogicalResult verifyInherentAttrs(::mlir::OperationName opName, ::mlir::NamedAttrList &attrs, llvm::function_ref<::mlir::InFlightDiagnostic()> emitError); static ::llvm::LogicalResult readProperties(::mlir::DialectBytecodeReader &reader, ::mlir::OperationState &state); void writeProperties(::mlir::DialectBytecodeWriter &writer); ::mlir::IntegerAttr getSignAAttr() { return ::llvm::dyn_cast_or_null<::mlir::IntegerAttr>(getProperties().signA); } bool getSignA(); ::mlir::IntegerAttr getSignBAttr() { return ::llvm::dyn_cast_or_null<::mlir::IntegerAttr>(getProperties().signB); } bool getSignB(); ::mlir::IntegerAttr getClampAttr() { return ::llvm::dyn_cast_or_null<::mlir::IntegerAttr>(getProperties().clamp); } bool getClamp(); void setSignAAttr(::mlir::IntegerAttr attr) { getProperties().signA = attr; } void setSignA(bool attrValue); void setSignBAttr(::mlir::IntegerAttr attr) { getProperties().signB = attr; } void setSignB(bool attrValue); void setClampAttr(::mlir::IntegerAttr attr) { getProperties().clamp = attr; } void setClamp(bool attrValue); static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::Type res, ::mlir::IntegerAttr signA, ::mlir::Value a, ::mlir::IntegerAttr signB, ::mlir::Value b, ::mlir::Value c, ::mlir::IntegerAttr clamp); static wmma_i32_16x16x16_iu4 create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::Type res, ::mlir::IntegerAttr signA, ::mlir::Value a, ::mlir::IntegerAttr signB, ::mlir::Value b, ::mlir::Value c, ::mlir::IntegerAttr clamp); static wmma_i32_16x16x16_iu4 create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::Type res, ::mlir::IntegerAttr signA, ::mlir::Value a, ::mlir::IntegerAttr signB, ::mlir::Value b, ::mlir::Value c, ::mlir::IntegerAttr clamp); static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::IntegerAttr signA, ::mlir::Value a, ::mlir::IntegerAttr signB, ::mlir::Value b, ::mlir::Value c, ::mlir::IntegerAttr clamp); static wmma_i32_16x16x16_iu4 create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::IntegerAttr signA, ::mlir::Value a, ::mlir::IntegerAttr signB, ::mlir::Value b, ::mlir::Value c, ::mlir::IntegerAttr clamp); static wmma_i32_16x16x16_iu4 create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::IntegerAttr signA, ::mlir::Value a, ::mlir::IntegerAttr signB, ::mlir::Value b, ::mlir::Value c, ::mlir::IntegerAttr clamp); static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::Type res, bool signA, ::mlir::Value a, bool signB, ::mlir::Value b, ::mlir::Value c, bool clamp = 0); static wmma_i32_16x16x16_iu4 create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::Type res, bool signA, ::mlir::Value a, bool signB, ::mlir::Value b, ::mlir::Value c, bool clamp = 0); static wmma_i32_16x16x16_iu4 create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::Type res, bool signA, ::mlir::Value a, bool signB, ::mlir::Value b, ::mlir::Value c, bool clamp = 0); static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, bool signA, ::mlir::Value a, bool signB, ::mlir::Value b, ::mlir::Value c, bool clamp = 0); static wmma_i32_16x16x16_iu4 create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, bool signA, ::mlir::Value a, bool signB, ::mlir::Value b, ::mlir::Value c, bool clamp = 0); static wmma_i32_16x16x16_iu4 create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, bool signA, ::mlir::Value a, bool signB, ::mlir::Value b, ::mlir::Value c, bool clamp = 0); static void build(::mlir::OpBuilder &, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, ::llvm::ArrayRef<::mlir::NamedAttribute> attributes = {}); static wmma_i32_16x16x16_iu4 create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, ::llvm::ArrayRef<::mlir::NamedAttribute> attributes = {}); static wmma_i32_16x16x16_iu4 create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, ::llvm::ArrayRef<::mlir::NamedAttribute> attributes = {}); static void build(::mlir::OpBuilder &, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, const Properties &properties, ::llvm::ArrayRef<::mlir::NamedAttribute> discardableAttributes = {}); static wmma_i32_16x16x16_iu4 create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, const Properties &properties, ::llvm::ArrayRef<::mlir::NamedAttribute> discardableAttributes = {}); static wmma_i32_16x16x16_iu4 create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, const Properties &properties, ::llvm::ArrayRef<::mlir::NamedAttribute> discardableAttributes = {}); static void populateDefaultProperties(::mlir::OperationName opName, Properties &properties); ::llvm::LogicalResult verifyInvariantsImpl(); ::llvm::LogicalResult verifyInvariants(); static ::mlir::ParseResult parse(::mlir::OpAsmParser &parser, ::mlir::OperationState &result); void print(::mlir::OpAsmPrinter &_odsPrinter); private: ::mlir::StringAttr getAttributeNameForIndex(unsigned index) { return getAttributeNameForIndex((*this)->getName(), index); } static ::mlir::StringAttr getAttributeNameForIndex(::mlir::OperationName name, unsigned index) { assert(index < 3 && "invalid attribute index"); assert(name.getStringRef() == getOperationName() && "invalid operation name"); assert(name.isRegistered() && "Operation isn't registered, missing a " "dependent dialect loading?"); return name.getAttributeNames()[index]; } public: }; } // namespace mlir::ROCDL MLIR_DECLARE_EXPLICIT_TYPE_ID(::mlir::ROCDL::wmma_i32_16x16x16_iu4) MLIR_DECLARE_EXPLICIT_TYPE_ID(::mlir::ROCDL::detail::wmma_i32_16x16x16_iu4GenericAdaptorBase::Properties) namespace mlir::ROCDL { //===----------------------------------------------------------------------===// // ::mlir::ROCDL::wmma_i32_16x16x16_iu8 declarations //===----------------------------------------------------------------------===// namespace detail { class wmma_i32_16x16x16_iu8GenericAdaptorBase { public: struct Properties { using clampTy = ::mlir::IntegerAttr; clampTy clamp; auto getClamp() const { auto &propStorage = this->clamp; return ::llvm::dyn_cast_or_null<::mlir::IntegerAttr>(propStorage); } void setClamp(const ::mlir::IntegerAttr &propValue) { this->clamp = propValue; } using signATy = ::mlir::IntegerAttr; signATy signA; auto getSignA() const { auto &propStorage = this->signA; return ::llvm::dyn_cast_or_null<::mlir::IntegerAttr>(propStorage); } void setSignA(const ::mlir::IntegerAttr &propValue) { this->signA = propValue; } using signBTy = ::mlir::IntegerAttr; signBTy signB; auto getSignB() const { auto &propStorage = this->signB; return ::llvm::dyn_cast_or_null<::mlir::IntegerAttr>(propStorage); } void setSignB(const ::mlir::IntegerAttr &propValue) { this->signB = propValue; } bool operator==(const Properties &rhs) const { return rhs.clamp == this->clamp && rhs.signA == this->signA && rhs.signB == this->signB && true; } bool operator!=(const Properties &rhs) const { return !(*this == rhs); } }; protected: ::mlir::DictionaryAttr odsAttrs; ::std::optional<::mlir::OperationName> odsOpName; Properties properties; ::mlir::RegionRange odsRegions; public: wmma_i32_16x16x16_iu8GenericAdaptorBase(::mlir::DictionaryAttr attrs, const Properties &properties, ::mlir::RegionRange regions = {}) : odsAttrs(attrs), properties(properties), odsRegions(regions) { if (odsAttrs) odsOpName.emplace("rocdl.wmma.i32.16x16x16.iu8", odsAttrs.getContext()); } wmma_i32_16x16x16_iu8GenericAdaptorBase(wmma_i32_16x16x16_iu8 op); std::pair getODSOperandIndexAndLength(unsigned index, unsigned odsOperandsSize) { return {index, 1}; } const Properties &getProperties() { return properties; } ::mlir::DictionaryAttr getAttributes() { return odsAttrs; } ::mlir::IntegerAttr getSignAAttr(); bool getSignA(); ::mlir::IntegerAttr getSignBAttr(); bool getSignB(); ::mlir::IntegerAttr getClampAttr(); bool getClamp(); }; } // namespace detail template class wmma_i32_16x16x16_iu8GenericAdaptor : public detail::wmma_i32_16x16x16_iu8GenericAdaptorBase { using ValueT = ::llvm::detail::ValueOfRange; using Base = detail::wmma_i32_16x16x16_iu8GenericAdaptorBase; static constexpr int odsIndex_a = 0; static constexpr int odsIndex_b = 1; static constexpr int odsIndex_c = 2; public: wmma_i32_16x16x16_iu8GenericAdaptor(RangeT values, ::mlir::DictionaryAttr attrs, const Properties &properties, ::mlir::RegionRange regions = {}) : Base(attrs, properties, regions), odsOperands(values) {} wmma_i32_16x16x16_iu8GenericAdaptor(RangeT values, ::mlir::DictionaryAttr attrs, ::mlir::PropertyRef properties, ::mlir::RegionRange regions = {}) : wmma_i32_16x16x16_iu8GenericAdaptor(values, attrs, (properties ? *properties.as() : Properties{}), regions) {} wmma_i32_16x16x16_iu8GenericAdaptor(RangeT values, ::mlir::DictionaryAttr attrs = nullptr) : wmma_i32_16x16x16_iu8GenericAdaptor(values, attrs, Properties{}, {}) {} wmma_i32_16x16x16_iu8GenericAdaptor(RangeT values, const wmma_i32_16x16x16_iu8GenericAdaptorBase &base) : Base(base), odsOperands(values) {} template >> wmma_i32_16x16x16_iu8GenericAdaptor(RangeT values, LateInst op) : Base(op), odsOperands(values) {} std::pair getODSOperandIndexAndLength(unsigned index) { return Base::getODSOperandIndexAndLength(index, odsOperands.size()); } RangeT getODSOperands(unsigned index) { auto valueRange = getODSOperandIndexAndLength(index); return {std::next(odsOperands.begin(), valueRange.first), std::next(odsOperands.begin(), valueRange.first + valueRange.second)}; } ValueT getA() { return (*getODSOperands(0).begin()); } ValueT getB() { return (*getODSOperands(1).begin()); } ValueT getC() { return (*getODSOperands(2).begin()); } RangeT getOperands() { return odsOperands; } private: RangeT odsOperands; }; class wmma_i32_16x16x16_iu8Adaptor : public wmma_i32_16x16x16_iu8GenericAdaptor<::mlir::ValueRange> { public: using wmma_i32_16x16x16_iu8GenericAdaptor::wmma_i32_16x16x16_iu8GenericAdaptor; wmma_i32_16x16x16_iu8Adaptor(wmma_i32_16x16x16_iu8 op); ::llvm::LogicalResult verify(::mlir::Location loc); }; class wmma_i32_16x16x16_iu8 : public ::mlir::Op::Impl, ::mlir::OpTrait::ZeroSuccessors, ::mlir::OpTrait::NOperands<3>::Impl, ::mlir::OpTrait::OpInvariants, ::mlir::BytecodeOpInterface::Trait> { public: using Op::Op; using Op::print; using Adaptor = wmma_i32_16x16x16_iu8Adaptor; template using GenericAdaptor = wmma_i32_16x16x16_iu8GenericAdaptor; using FoldAdaptor = GenericAdaptor<::llvm::ArrayRef<::mlir::Attribute>>; static constexpr int odsIndex_a = 0; static constexpr int odsIndex_b = 1; static constexpr int odsIndex_c = 2; using Properties = FoldAdaptor::Properties; static ::llvm::ArrayRef<::llvm::StringRef> getAttributeNames() { static ::llvm::StringRef attrNames[] = {::llvm::StringRef("clamp"), ::llvm::StringRef("signA"), ::llvm::StringRef("signB")}; return ::llvm::ArrayRef(attrNames); } ::mlir::StringAttr getClampAttrName() { return getAttributeNameForIndex(0); } static ::mlir::StringAttr getClampAttrName(::mlir::OperationName name) { return getAttributeNameForIndex(name, 0); } ::mlir::StringAttr getSignAAttrName() { return getAttributeNameForIndex(1); } static ::mlir::StringAttr getSignAAttrName(::mlir::OperationName name) { return getAttributeNameForIndex(name, 1); } ::mlir::StringAttr getSignBAttrName() { return getAttributeNameForIndex(2); } static ::mlir::StringAttr getSignBAttrName(::mlir::OperationName name) { return getAttributeNameForIndex(name, 2); } static constexpr ::llvm::StringLiteral getOperationName() { return ::llvm::StringLiteral("rocdl.wmma.i32.16x16x16.iu8"); } std::pair getODSOperandIndexAndLength(unsigned index) { return {index, 1}; } ::mlir::Operation::operand_range getODSOperands(unsigned index) { auto valueRange = getODSOperandIndexAndLength(index); return {std::next(getOperation()->operand_begin(), valueRange.first), std::next(getOperation()->operand_begin(), valueRange.first + valueRange.second)}; } ::mlir::TypedValue<::mlir::Type> getA() { return ::llvm::cast<::mlir::TypedValue<::mlir::Type>>(*getODSOperands(0).begin()); } ::mlir::TypedValue<::mlir::Type> getB() { return ::llvm::cast<::mlir::TypedValue<::mlir::Type>>(*getODSOperands(1).begin()); } ::mlir::TypedValue<::mlir::Type> getC() { return ::llvm::cast<::mlir::TypedValue<::mlir::Type>>(*getODSOperands(2).begin()); } ::mlir::OpOperand &getAMutable() { auto range = getODSOperandIndexAndLength(0); return getOperation()->getOpOperand(range.first); } ::mlir::OpOperand &getBMutable() { auto range = getODSOperandIndexAndLength(1); return getOperation()->getOpOperand(range.first); } ::mlir::OpOperand &getCMutable() { auto range = getODSOperandIndexAndLength(2); return getOperation()->getOpOperand(range.first); } std::pair getODSResultIndexAndLength(unsigned index) { return {index, 1}; } ::mlir::Operation::result_range getODSResults(unsigned index) { auto valueRange = getODSResultIndexAndLength(index); return {std::next(getOperation()->result_begin(), valueRange.first), std::next(getOperation()->result_begin(), valueRange.first + valueRange.second)}; } ::mlir::TypedValue<::mlir::Type> getRes() { return ::llvm::cast<::mlir::TypedValue<::mlir::Type>>(*getODSResults(0).begin()); } static ::llvm::LogicalResult setPropertiesFromAttr(Properties &prop, ::mlir::Attribute attr, ::llvm::function_ref<::mlir::InFlightDiagnostic()> emitError); static ::mlir::Attribute getPropertiesAsAttr(::mlir::MLIRContext *ctx, const Properties &prop); static llvm::hash_code computePropertiesHash(const Properties &prop); static std::optional getInherentAttr(::mlir::MLIRContext *ctx, const Properties &prop, llvm::StringRef name); static void setInherentAttr(Properties &prop, llvm::StringRef name, mlir::Attribute value); static void populateInherentAttrs(::mlir::MLIRContext *ctx, const Properties &prop, ::mlir::NamedAttrList &attrs); static ::llvm::LogicalResult verifyInherentAttrs(::mlir::OperationName opName, ::mlir::NamedAttrList &attrs, llvm::function_ref<::mlir::InFlightDiagnostic()> emitError); static ::llvm::LogicalResult readProperties(::mlir::DialectBytecodeReader &reader, ::mlir::OperationState &state); void writeProperties(::mlir::DialectBytecodeWriter &writer); ::mlir::IntegerAttr getSignAAttr() { return ::llvm::dyn_cast_or_null<::mlir::IntegerAttr>(getProperties().signA); } bool getSignA(); ::mlir::IntegerAttr getSignBAttr() { return ::llvm::dyn_cast_or_null<::mlir::IntegerAttr>(getProperties().signB); } bool getSignB(); ::mlir::IntegerAttr getClampAttr() { return ::llvm::dyn_cast_or_null<::mlir::IntegerAttr>(getProperties().clamp); } bool getClamp(); void setSignAAttr(::mlir::IntegerAttr attr) { getProperties().signA = attr; } void setSignA(bool attrValue); void setSignBAttr(::mlir::IntegerAttr attr) { getProperties().signB = attr; } void setSignB(bool attrValue); void setClampAttr(::mlir::IntegerAttr attr) { getProperties().clamp = attr; } void setClamp(bool attrValue); static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::Type res, ::mlir::IntegerAttr signA, ::mlir::Value a, ::mlir::IntegerAttr signB, ::mlir::Value b, ::mlir::Value c, ::mlir::IntegerAttr clamp); static wmma_i32_16x16x16_iu8 create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::Type res, ::mlir::IntegerAttr signA, ::mlir::Value a, ::mlir::IntegerAttr signB, ::mlir::Value b, ::mlir::Value c, ::mlir::IntegerAttr clamp); static wmma_i32_16x16x16_iu8 create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::Type res, ::mlir::IntegerAttr signA, ::mlir::Value a, ::mlir::IntegerAttr signB, ::mlir::Value b, ::mlir::Value c, ::mlir::IntegerAttr clamp); static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::IntegerAttr signA, ::mlir::Value a, ::mlir::IntegerAttr signB, ::mlir::Value b, ::mlir::Value c, ::mlir::IntegerAttr clamp); static wmma_i32_16x16x16_iu8 create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::IntegerAttr signA, ::mlir::Value a, ::mlir::IntegerAttr signB, ::mlir::Value b, ::mlir::Value c, ::mlir::IntegerAttr clamp); static wmma_i32_16x16x16_iu8 create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::IntegerAttr signA, ::mlir::Value a, ::mlir::IntegerAttr signB, ::mlir::Value b, ::mlir::Value c, ::mlir::IntegerAttr clamp); static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::Type res, bool signA, ::mlir::Value a, bool signB, ::mlir::Value b, ::mlir::Value c, bool clamp = 0); static wmma_i32_16x16x16_iu8 create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::Type res, bool signA, ::mlir::Value a, bool signB, ::mlir::Value b, ::mlir::Value c, bool clamp = 0); static wmma_i32_16x16x16_iu8 create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::Type res, bool signA, ::mlir::Value a, bool signB, ::mlir::Value b, ::mlir::Value c, bool clamp = 0); static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, bool signA, ::mlir::Value a, bool signB, ::mlir::Value b, ::mlir::Value c, bool clamp = 0); static wmma_i32_16x16x16_iu8 create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, bool signA, ::mlir::Value a, bool signB, ::mlir::Value b, ::mlir::Value c, bool clamp = 0); static wmma_i32_16x16x16_iu8 create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, bool signA, ::mlir::Value a, bool signB, ::mlir::Value b, ::mlir::Value c, bool clamp = 0); static void build(::mlir::OpBuilder &, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, ::llvm::ArrayRef<::mlir::NamedAttribute> attributes = {}); static wmma_i32_16x16x16_iu8 create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, ::llvm::ArrayRef<::mlir::NamedAttribute> attributes = {}); static wmma_i32_16x16x16_iu8 create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, ::llvm::ArrayRef<::mlir::NamedAttribute> attributes = {}); static void build(::mlir::OpBuilder &, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, const Properties &properties, ::llvm::ArrayRef<::mlir::NamedAttribute> discardableAttributes = {}); static wmma_i32_16x16x16_iu8 create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, const Properties &properties, ::llvm::ArrayRef<::mlir::NamedAttribute> discardableAttributes = {}); static wmma_i32_16x16x16_iu8 create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, const Properties &properties, ::llvm::ArrayRef<::mlir::NamedAttribute> discardableAttributes = {}); static void populateDefaultProperties(::mlir::OperationName opName, Properties &properties); ::llvm::LogicalResult verifyInvariantsImpl(); ::llvm::LogicalResult verifyInvariants(); static ::mlir::ParseResult parse(::mlir::OpAsmParser &parser, ::mlir::OperationState &result); void print(::mlir::OpAsmPrinter &_odsPrinter); private: ::mlir::StringAttr getAttributeNameForIndex(unsigned index) { return getAttributeNameForIndex((*this)->getName(), index); } static ::mlir::StringAttr getAttributeNameForIndex(::mlir::OperationName name, unsigned index) { assert(index < 3 && "invalid attribute index"); assert(name.getStringRef() == getOperationName() && "invalid operation name"); assert(name.isRegistered() && "Operation isn't registered, missing a " "dependent dialect loading?"); return name.getAttributeNames()[index]; } public: }; } // namespace mlir::ROCDL MLIR_DECLARE_EXPLICIT_TYPE_ID(::mlir::ROCDL::wmma_i32_16x16x16_iu8) MLIR_DECLARE_EXPLICIT_TYPE_ID(::mlir::ROCDL::detail::wmma_i32_16x16x16_iu8GenericAdaptorBase::Properties) namespace mlir::ROCDL { //===----------------------------------------------------------------------===// // ::mlir::ROCDL::wmma_i32_16x16x32_iu4 declarations //===----------------------------------------------------------------------===// namespace detail { class wmma_i32_16x16x32_iu4GenericAdaptorBase { public: struct Properties { using clampTy = ::mlir::IntegerAttr; clampTy clamp; auto getClamp() const { auto &propStorage = this->clamp; return ::llvm::dyn_cast_or_null<::mlir::IntegerAttr>(propStorage); } void setClamp(const ::mlir::IntegerAttr &propValue) { this->clamp = propValue; } using signATy = ::mlir::IntegerAttr; signATy signA; auto getSignA() const { auto &propStorage = this->signA; return ::llvm::dyn_cast_or_null<::mlir::IntegerAttr>(propStorage); } void setSignA(const ::mlir::IntegerAttr &propValue) { this->signA = propValue; } using signBTy = ::mlir::IntegerAttr; signBTy signB; auto getSignB() const { auto &propStorage = this->signB; return ::llvm::dyn_cast_or_null<::mlir::IntegerAttr>(propStorage); } void setSignB(const ::mlir::IntegerAttr &propValue) { this->signB = propValue; } bool operator==(const Properties &rhs) const { return rhs.clamp == this->clamp && rhs.signA == this->signA && rhs.signB == this->signB && true; } bool operator!=(const Properties &rhs) const { return !(*this == rhs); } }; protected: ::mlir::DictionaryAttr odsAttrs; ::std::optional<::mlir::OperationName> odsOpName; Properties properties; ::mlir::RegionRange odsRegions; public: wmma_i32_16x16x32_iu4GenericAdaptorBase(::mlir::DictionaryAttr attrs, const Properties &properties, ::mlir::RegionRange regions = {}) : odsAttrs(attrs), properties(properties), odsRegions(regions) { if (odsAttrs) odsOpName.emplace("rocdl.wmma.i32.16x16x32.iu4", odsAttrs.getContext()); } wmma_i32_16x16x32_iu4GenericAdaptorBase(wmma_i32_16x16x32_iu4 op); std::pair getODSOperandIndexAndLength(unsigned index, unsigned odsOperandsSize) { return {index, 1}; } const Properties &getProperties() { return properties; } ::mlir::DictionaryAttr getAttributes() { return odsAttrs; } ::mlir::IntegerAttr getSignAAttr(); bool getSignA(); ::mlir::IntegerAttr getSignBAttr(); bool getSignB(); ::mlir::IntegerAttr getClampAttr(); bool getClamp(); }; } // namespace detail template class wmma_i32_16x16x32_iu4GenericAdaptor : public detail::wmma_i32_16x16x32_iu4GenericAdaptorBase { using ValueT = ::llvm::detail::ValueOfRange; using Base = detail::wmma_i32_16x16x32_iu4GenericAdaptorBase; static constexpr int odsIndex_a = 0; static constexpr int odsIndex_b = 1; static constexpr int odsIndex_c = 2; public: wmma_i32_16x16x32_iu4GenericAdaptor(RangeT values, ::mlir::DictionaryAttr attrs, const Properties &properties, ::mlir::RegionRange regions = {}) : Base(attrs, properties, regions), odsOperands(values) {} wmma_i32_16x16x32_iu4GenericAdaptor(RangeT values, ::mlir::DictionaryAttr attrs, ::mlir::PropertyRef properties, ::mlir::RegionRange regions = {}) : wmma_i32_16x16x32_iu4GenericAdaptor(values, attrs, (properties ? *properties.as() : Properties{}), regions) {} wmma_i32_16x16x32_iu4GenericAdaptor(RangeT values, ::mlir::DictionaryAttr attrs = nullptr) : wmma_i32_16x16x32_iu4GenericAdaptor(values, attrs, Properties{}, {}) {} wmma_i32_16x16x32_iu4GenericAdaptor(RangeT values, const wmma_i32_16x16x32_iu4GenericAdaptorBase &base) : Base(base), odsOperands(values) {} template >> wmma_i32_16x16x32_iu4GenericAdaptor(RangeT values, LateInst op) : Base(op), odsOperands(values) {} std::pair getODSOperandIndexAndLength(unsigned index) { return Base::getODSOperandIndexAndLength(index, odsOperands.size()); } RangeT getODSOperands(unsigned index) { auto valueRange = getODSOperandIndexAndLength(index); return {std::next(odsOperands.begin(), valueRange.first), std::next(odsOperands.begin(), valueRange.first + valueRange.second)}; } ValueT getA() { return (*getODSOperands(0).begin()); } ValueT getB() { return (*getODSOperands(1).begin()); } ValueT getC() { return (*getODSOperands(2).begin()); } RangeT getOperands() { return odsOperands; } private: RangeT odsOperands; }; class wmma_i32_16x16x32_iu4Adaptor : public wmma_i32_16x16x32_iu4GenericAdaptor<::mlir::ValueRange> { public: using wmma_i32_16x16x32_iu4GenericAdaptor::wmma_i32_16x16x32_iu4GenericAdaptor; wmma_i32_16x16x32_iu4Adaptor(wmma_i32_16x16x32_iu4 op); ::llvm::LogicalResult verify(::mlir::Location loc); }; class wmma_i32_16x16x32_iu4 : public ::mlir::Op::Impl, ::mlir::OpTrait::ZeroSuccessors, ::mlir::OpTrait::NOperands<3>::Impl, ::mlir::OpTrait::OpInvariants, ::mlir::BytecodeOpInterface::Trait> { public: using Op::Op; using Op::print; using Adaptor = wmma_i32_16x16x32_iu4Adaptor; template using GenericAdaptor = wmma_i32_16x16x32_iu4GenericAdaptor; using FoldAdaptor = GenericAdaptor<::llvm::ArrayRef<::mlir::Attribute>>; static constexpr int odsIndex_a = 0; static constexpr int odsIndex_b = 1; static constexpr int odsIndex_c = 2; using Properties = FoldAdaptor::Properties; static ::llvm::ArrayRef<::llvm::StringRef> getAttributeNames() { static ::llvm::StringRef attrNames[] = {::llvm::StringRef("clamp"), ::llvm::StringRef("signA"), ::llvm::StringRef("signB")}; return ::llvm::ArrayRef(attrNames); } ::mlir::StringAttr getClampAttrName() { return getAttributeNameForIndex(0); } static ::mlir::StringAttr getClampAttrName(::mlir::OperationName name) { return getAttributeNameForIndex(name, 0); } ::mlir::StringAttr getSignAAttrName() { return getAttributeNameForIndex(1); } static ::mlir::StringAttr getSignAAttrName(::mlir::OperationName name) { return getAttributeNameForIndex(name, 1); } ::mlir::StringAttr getSignBAttrName() { return getAttributeNameForIndex(2); } static ::mlir::StringAttr getSignBAttrName(::mlir::OperationName name) { return getAttributeNameForIndex(name, 2); } static constexpr ::llvm::StringLiteral getOperationName() { return ::llvm::StringLiteral("rocdl.wmma.i32.16x16x32.iu4"); } std::pair getODSOperandIndexAndLength(unsigned index) { return {index, 1}; } ::mlir::Operation::operand_range getODSOperands(unsigned index) { auto valueRange = getODSOperandIndexAndLength(index); return {std::next(getOperation()->operand_begin(), valueRange.first), std::next(getOperation()->operand_begin(), valueRange.first + valueRange.second)}; } ::mlir::TypedValue<::mlir::Type> getA() { return ::llvm::cast<::mlir::TypedValue<::mlir::Type>>(*getODSOperands(0).begin()); } ::mlir::TypedValue<::mlir::Type> getB() { return ::llvm::cast<::mlir::TypedValue<::mlir::Type>>(*getODSOperands(1).begin()); } ::mlir::TypedValue<::mlir::Type> getC() { return ::llvm::cast<::mlir::TypedValue<::mlir::Type>>(*getODSOperands(2).begin()); } ::mlir::OpOperand &getAMutable() { auto range = getODSOperandIndexAndLength(0); return getOperation()->getOpOperand(range.first); } ::mlir::OpOperand &getBMutable() { auto range = getODSOperandIndexAndLength(1); return getOperation()->getOpOperand(range.first); } ::mlir::OpOperand &getCMutable() { auto range = getODSOperandIndexAndLength(2); return getOperation()->getOpOperand(range.first); } std::pair getODSResultIndexAndLength(unsigned index) { return {index, 1}; } ::mlir::Operation::result_range getODSResults(unsigned index) { auto valueRange = getODSResultIndexAndLength(index); return {std::next(getOperation()->result_begin(), valueRange.first), std::next(getOperation()->result_begin(), valueRange.first + valueRange.second)}; } ::mlir::TypedValue<::mlir::Type> getRes() { return ::llvm::cast<::mlir::TypedValue<::mlir::Type>>(*getODSResults(0).begin()); } static ::llvm::LogicalResult setPropertiesFromAttr(Properties &prop, ::mlir::Attribute attr, ::llvm::function_ref<::mlir::InFlightDiagnostic()> emitError); static ::mlir::Attribute getPropertiesAsAttr(::mlir::MLIRContext *ctx, const Properties &prop); static llvm::hash_code computePropertiesHash(const Properties &prop); static std::optional getInherentAttr(::mlir::MLIRContext *ctx, const Properties &prop, llvm::StringRef name); static void setInherentAttr(Properties &prop, llvm::StringRef name, mlir::Attribute value); static void populateInherentAttrs(::mlir::MLIRContext *ctx, const Properties &prop, ::mlir::NamedAttrList &attrs); static ::llvm::LogicalResult verifyInherentAttrs(::mlir::OperationName opName, ::mlir::NamedAttrList &attrs, llvm::function_ref<::mlir::InFlightDiagnostic()> emitError); static ::llvm::LogicalResult readProperties(::mlir::DialectBytecodeReader &reader, ::mlir::OperationState &state); void writeProperties(::mlir::DialectBytecodeWriter &writer); ::mlir::IntegerAttr getSignAAttr() { return ::llvm::dyn_cast_or_null<::mlir::IntegerAttr>(getProperties().signA); } bool getSignA(); ::mlir::IntegerAttr getSignBAttr() { return ::llvm::dyn_cast_or_null<::mlir::IntegerAttr>(getProperties().signB); } bool getSignB(); ::mlir::IntegerAttr getClampAttr() { return ::llvm::dyn_cast_or_null<::mlir::IntegerAttr>(getProperties().clamp); } bool getClamp(); void setSignAAttr(::mlir::IntegerAttr attr) { getProperties().signA = attr; } void setSignA(bool attrValue); void setSignBAttr(::mlir::IntegerAttr attr) { getProperties().signB = attr; } void setSignB(bool attrValue); void setClampAttr(::mlir::IntegerAttr attr) { getProperties().clamp = attr; } void setClamp(bool attrValue); static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::Type res, ::mlir::IntegerAttr signA, ::mlir::Value a, ::mlir::IntegerAttr signB, ::mlir::Value b, ::mlir::Value c, ::mlir::IntegerAttr clamp); static wmma_i32_16x16x32_iu4 create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::Type res, ::mlir::IntegerAttr signA, ::mlir::Value a, ::mlir::IntegerAttr signB, ::mlir::Value b, ::mlir::Value c, ::mlir::IntegerAttr clamp); static wmma_i32_16x16x32_iu4 create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::Type res, ::mlir::IntegerAttr signA, ::mlir::Value a, ::mlir::IntegerAttr signB, ::mlir::Value b, ::mlir::Value c, ::mlir::IntegerAttr clamp); static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::IntegerAttr signA, ::mlir::Value a, ::mlir::IntegerAttr signB, ::mlir::Value b, ::mlir::Value c, ::mlir::IntegerAttr clamp); static wmma_i32_16x16x32_iu4 create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::IntegerAttr signA, ::mlir::Value a, ::mlir::IntegerAttr signB, ::mlir::Value b, ::mlir::Value c, ::mlir::IntegerAttr clamp); static wmma_i32_16x16x32_iu4 create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::IntegerAttr signA, ::mlir::Value a, ::mlir::IntegerAttr signB, ::mlir::Value b, ::mlir::Value c, ::mlir::IntegerAttr clamp); static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::Type res, bool signA, ::mlir::Value a, bool signB, ::mlir::Value b, ::mlir::Value c, bool clamp = 0); static wmma_i32_16x16x32_iu4 create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::Type res, bool signA, ::mlir::Value a, bool signB, ::mlir::Value b, ::mlir::Value c, bool clamp = 0); static wmma_i32_16x16x32_iu4 create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::Type res, bool signA, ::mlir::Value a, bool signB, ::mlir::Value b, ::mlir::Value c, bool clamp = 0); static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, bool signA, ::mlir::Value a, bool signB, ::mlir::Value b, ::mlir::Value c, bool clamp = 0); static wmma_i32_16x16x32_iu4 create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, bool signA, ::mlir::Value a, bool signB, ::mlir::Value b, ::mlir::Value c, bool clamp = 0); static wmma_i32_16x16x32_iu4 create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, bool signA, ::mlir::Value a, bool signB, ::mlir::Value b, ::mlir::Value c, bool clamp = 0); static void build(::mlir::OpBuilder &, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, ::llvm::ArrayRef<::mlir::NamedAttribute> attributes = {}); static wmma_i32_16x16x32_iu4 create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, ::llvm::ArrayRef<::mlir::NamedAttribute> attributes = {}); static wmma_i32_16x16x32_iu4 create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, ::llvm::ArrayRef<::mlir::NamedAttribute> attributes = {}); static void build(::mlir::OpBuilder &, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, const Properties &properties, ::llvm::ArrayRef<::mlir::NamedAttribute> discardableAttributes = {}); static wmma_i32_16x16x32_iu4 create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, const Properties &properties, ::llvm::ArrayRef<::mlir::NamedAttribute> discardableAttributes = {}); static wmma_i32_16x16x32_iu4 create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, const Properties &properties, ::llvm::ArrayRef<::mlir::NamedAttribute> discardableAttributes = {}); static void populateDefaultProperties(::mlir::OperationName opName, Properties &properties); ::llvm::LogicalResult verifyInvariantsImpl(); ::llvm::LogicalResult verifyInvariants(); static ::mlir::ParseResult parse(::mlir::OpAsmParser &parser, ::mlir::OperationState &result); void print(::mlir::OpAsmPrinter &_odsPrinter); private: ::mlir::StringAttr getAttributeNameForIndex(unsigned index) { return getAttributeNameForIndex((*this)->getName(), index); } static ::mlir::StringAttr getAttributeNameForIndex(::mlir::OperationName name, unsigned index) { assert(index < 3 && "invalid attribute index"); assert(name.getStringRef() == getOperationName() && "invalid operation name"); assert(name.isRegistered() && "Operation isn't registered, missing a " "dependent dialect loading?"); return name.getAttributeNames()[index]; } public: }; } // namespace mlir::ROCDL MLIR_DECLARE_EXPLICIT_TYPE_ID(::mlir::ROCDL::wmma_i32_16x16x32_iu4) MLIR_DECLARE_EXPLICIT_TYPE_ID(::mlir::ROCDL::detail::wmma_i32_16x16x32_iu4GenericAdaptorBase::Properties) namespace mlir::ROCDL { //===----------------------------------------------------------------------===// // ::mlir::ROCDL::wmma_i32_16x16x64_iu8 declarations //===----------------------------------------------------------------------===// namespace detail { class wmma_i32_16x16x64_iu8GenericAdaptorBase { public: struct Properties { using clampTy = ::mlir::IntegerAttr; clampTy clamp; auto getClamp() const { auto &propStorage = this->clamp; return ::llvm::dyn_cast_or_null<::mlir::IntegerAttr>(propStorage); } void setClamp(const ::mlir::IntegerAttr &propValue) { this->clamp = propValue; } using reuseATy = ::mlir::IntegerAttr; reuseATy reuseA; auto getReuseA() const { auto &propStorage = this->reuseA; return ::llvm::dyn_cast_or_null<::mlir::IntegerAttr>(propStorage); } void setReuseA(const ::mlir::IntegerAttr &propValue) { this->reuseA = propValue; } using reuseBTy = ::mlir::IntegerAttr; reuseBTy reuseB; auto getReuseB() const { auto &propStorage = this->reuseB; return ::llvm::dyn_cast_or_null<::mlir::IntegerAttr>(propStorage); } void setReuseB(const ::mlir::IntegerAttr &propValue) { this->reuseB = propValue; } using signATy = ::mlir::IntegerAttr; signATy signA; auto getSignA() const { auto &propStorage = this->signA; return ::llvm::dyn_cast_or_null<::mlir::IntegerAttr>(propStorage); } void setSignA(const ::mlir::IntegerAttr &propValue) { this->signA = propValue; } using signBTy = ::mlir::IntegerAttr; signBTy signB; auto getSignB() const { auto &propStorage = this->signB; return ::llvm::dyn_cast_or_null<::mlir::IntegerAttr>(propStorage); } void setSignB(const ::mlir::IntegerAttr &propValue) { this->signB = propValue; } bool operator==(const Properties &rhs) const { return rhs.clamp == this->clamp && rhs.reuseA == this->reuseA && rhs.reuseB == this->reuseB && rhs.signA == this->signA && rhs.signB == this->signB && true; } bool operator!=(const Properties &rhs) const { return !(*this == rhs); } }; protected: ::mlir::DictionaryAttr odsAttrs; ::std::optional<::mlir::OperationName> odsOpName; Properties properties; ::mlir::RegionRange odsRegions; public: wmma_i32_16x16x64_iu8GenericAdaptorBase(::mlir::DictionaryAttr attrs, const Properties &properties, ::mlir::RegionRange regions = {}) : odsAttrs(attrs), properties(properties), odsRegions(regions) { if (odsAttrs) odsOpName.emplace("rocdl.wmma.i32.16x16x64.iu8", odsAttrs.getContext()); } wmma_i32_16x16x64_iu8GenericAdaptorBase(wmma_i32_16x16x64_iu8 op); std::pair getODSOperandIndexAndLength(unsigned index, unsigned odsOperandsSize) { return {index, 1}; } const Properties &getProperties() { return properties; } ::mlir::DictionaryAttr getAttributes() { return odsAttrs; } ::mlir::IntegerAttr getSignAAttr(); bool getSignA(); ::mlir::IntegerAttr getSignBAttr(); bool getSignB(); ::mlir::IntegerAttr getReuseAAttr(); bool getReuseA(); ::mlir::IntegerAttr getReuseBAttr(); bool getReuseB(); ::mlir::IntegerAttr getClampAttr(); bool getClamp(); }; } // namespace detail template class wmma_i32_16x16x64_iu8GenericAdaptor : public detail::wmma_i32_16x16x64_iu8GenericAdaptorBase { using ValueT = ::llvm::detail::ValueOfRange; using Base = detail::wmma_i32_16x16x64_iu8GenericAdaptorBase; static constexpr int odsIndex_a = 0; static constexpr int odsIndex_b = 1; static constexpr int odsIndex_c = 2; public: wmma_i32_16x16x64_iu8GenericAdaptor(RangeT values, ::mlir::DictionaryAttr attrs, const Properties &properties, ::mlir::RegionRange regions = {}) : Base(attrs, properties, regions), odsOperands(values) {} wmma_i32_16x16x64_iu8GenericAdaptor(RangeT values, ::mlir::DictionaryAttr attrs, ::mlir::PropertyRef properties, ::mlir::RegionRange regions = {}) : wmma_i32_16x16x64_iu8GenericAdaptor(values, attrs, (properties ? *properties.as() : Properties{}), regions) {} wmma_i32_16x16x64_iu8GenericAdaptor(RangeT values, ::mlir::DictionaryAttr attrs = nullptr) : wmma_i32_16x16x64_iu8GenericAdaptor(values, attrs, Properties{}, {}) {} wmma_i32_16x16x64_iu8GenericAdaptor(RangeT values, const wmma_i32_16x16x64_iu8GenericAdaptorBase &base) : Base(base), odsOperands(values) {} template >> wmma_i32_16x16x64_iu8GenericAdaptor(RangeT values, LateInst op) : Base(op), odsOperands(values) {} std::pair getODSOperandIndexAndLength(unsigned index) { return Base::getODSOperandIndexAndLength(index, odsOperands.size()); } RangeT getODSOperands(unsigned index) { auto valueRange = getODSOperandIndexAndLength(index); return {std::next(odsOperands.begin(), valueRange.first), std::next(odsOperands.begin(), valueRange.first + valueRange.second)}; } ValueT getA() { return (*getODSOperands(0).begin()); } ValueT getB() { return (*getODSOperands(1).begin()); } ValueT getC() { return (*getODSOperands(2).begin()); } RangeT getOperands() { return odsOperands; } private: RangeT odsOperands; }; class wmma_i32_16x16x64_iu8Adaptor : public wmma_i32_16x16x64_iu8GenericAdaptor<::mlir::ValueRange> { public: using wmma_i32_16x16x64_iu8GenericAdaptor::wmma_i32_16x16x64_iu8GenericAdaptor; wmma_i32_16x16x64_iu8Adaptor(wmma_i32_16x16x64_iu8 op); ::llvm::LogicalResult verify(::mlir::Location loc); }; class wmma_i32_16x16x64_iu8 : public ::mlir::Op::Impl, ::mlir::OpTrait::ZeroSuccessors, ::mlir::OpTrait::NOperands<3>::Impl, ::mlir::OpTrait::OpInvariants, ::mlir::BytecodeOpInterface::Trait> { public: using Op::Op; using Op::print; using Adaptor = wmma_i32_16x16x64_iu8Adaptor; template using GenericAdaptor = wmma_i32_16x16x64_iu8GenericAdaptor; using FoldAdaptor = GenericAdaptor<::llvm::ArrayRef<::mlir::Attribute>>; static constexpr int odsIndex_a = 0; static constexpr int odsIndex_b = 1; static constexpr int odsIndex_c = 2; using Properties = FoldAdaptor::Properties; static ::llvm::ArrayRef<::llvm::StringRef> getAttributeNames() { static ::llvm::StringRef attrNames[] = {::llvm::StringRef("clamp"), ::llvm::StringRef("reuseA"), ::llvm::StringRef("reuseB"), ::llvm::StringRef("signA"), ::llvm::StringRef("signB")}; return ::llvm::ArrayRef(attrNames); } ::mlir::StringAttr getClampAttrName() { return getAttributeNameForIndex(0); } static ::mlir::StringAttr getClampAttrName(::mlir::OperationName name) { return getAttributeNameForIndex(name, 0); } ::mlir::StringAttr getReuseAAttrName() { return getAttributeNameForIndex(1); } static ::mlir::StringAttr getReuseAAttrName(::mlir::OperationName name) { return getAttributeNameForIndex(name, 1); } ::mlir::StringAttr getReuseBAttrName() { return getAttributeNameForIndex(2); } static ::mlir::StringAttr getReuseBAttrName(::mlir::OperationName name) { return getAttributeNameForIndex(name, 2); } ::mlir::StringAttr getSignAAttrName() { return getAttributeNameForIndex(3); } static ::mlir::StringAttr getSignAAttrName(::mlir::OperationName name) { return getAttributeNameForIndex(name, 3); } ::mlir::StringAttr getSignBAttrName() { return getAttributeNameForIndex(4); } static ::mlir::StringAttr getSignBAttrName(::mlir::OperationName name) { return getAttributeNameForIndex(name, 4); } static constexpr ::llvm::StringLiteral getOperationName() { return ::llvm::StringLiteral("rocdl.wmma.i32.16x16x64.iu8"); } std::pair getODSOperandIndexAndLength(unsigned index) { return {index, 1}; } ::mlir::Operation::operand_range getODSOperands(unsigned index) { auto valueRange = getODSOperandIndexAndLength(index); return {std::next(getOperation()->operand_begin(), valueRange.first), std::next(getOperation()->operand_begin(), valueRange.first + valueRange.second)}; } ::mlir::TypedValue<::mlir::Type> getA() { return ::llvm::cast<::mlir::TypedValue<::mlir::Type>>(*getODSOperands(0).begin()); } ::mlir::TypedValue<::mlir::Type> getB() { return ::llvm::cast<::mlir::TypedValue<::mlir::Type>>(*getODSOperands(1).begin()); } ::mlir::TypedValue<::mlir::Type> getC() { return ::llvm::cast<::mlir::TypedValue<::mlir::Type>>(*getODSOperands(2).begin()); } ::mlir::OpOperand &getAMutable() { auto range = getODSOperandIndexAndLength(0); return getOperation()->getOpOperand(range.first); } ::mlir::OpOperand &getBMutable() { auto range = getODSOperandIndexAndLength(1); return getOperation()->getOpOperand(range.first); } ::mlir::OpOperand &getCMutable() { auto range = getODSOperandIndexAndLength(2); return getOperation()->getOpOperand(range.first); } std::pair getODSResultIndexAndLength(unsigned index) { return {index, 1}; } ::mlir::Operation::result_range getODSResults(unsigned index) { auto valueRange = getODSResultIndexAndLength(index); return {std::next(getOperation()->result_begin(), valueRange.first), std::next(getOperation()->result_begin(), valueRange.first + valueRange.second)}; } ::mlir::TypedValue<::mlir::Type> getRes() { return ::llvm::cast<::mlir::TypedValue<::mlir::Type>>(*getODSResults(0).begin()); } static ::llvm::LogicalResult setPropertiesFromAttr(Properties &prop, ::mlir::Attribute attr, ::llvm::function_ref<::mlir::InFlightDiagnostic()> emitError); static ::mlir::Attribute getPropertiesAsAttr(::mlir::MLIRContext *ctx, const Properties &prop); static llvm::hash_code computePropertiesHash(const Properties &prop); static std::optional getInherentAttr(::mlir::MLIRContext *ctx, const Properties &prop, llvm::StringRef name); static void setInherentAttr(Properties &prop, llvm::StringRef name, mlir::Attribute value); static void populateInherentAttrs(::mlir::MLIRContext *ctx, const Properties &prop, ::mlir::NamedAttrList &attrs); static ::llvm::LogicalResult verifyInherentAttrs(::mlir::OperationName opName, ::mlir::NamedAttrList &attrs, llvm::function_ref<::mlir::InFlightDiagnostic()> emitError); static ::llvm::LogicalResult readProperties(::mlir::DialectBytecodeReader &reader, ::mlir::OperationState &state); void writeProperties(::mlir::DialectBytecodeWriter &writer); ::mlir::IntegerAttr getSignAAttr() { return ::llvm::dyn_cast_or_null<::mlir::IntegerAttr>(getProperties().signA); } bool getSignA(); ::mlir::IntegerAttr getSignBAttr() { return ::llvm::dyn_cast_or_null<::mlir::IntegerAttr>(getProperties().signB); } bool getSignB(); ::mlir::IntegerAttr getReuseAAttr() { return ::llvm::dyn_cast_or_null<::mlir::IntegerAttr>(getProperties().reuseA); } bool getReuseA(); ::mlir::IntegerAttr getReuseBAttr() { return ::llvm::dyn_cast_or_null<::mlir::IntegerAttr>(getProperties().reuseB); } bool getReuseB(); ::mlir::IntegerAttr getClampAttr() { return ::llvm::dyn_cast_or_null<::mlir::IntegerAttr>(getProperties().clamp); } bool getClamp(); void setSignAAttr(::mlir::IntegerAttr attr) { getProperties().signA = attr; } void setSignA(bool attrValue); void setSignBAttr(::mlir::IntegerAttr attr) { getProperties().signB = attr; } void setSignB(bool attrValue); void setReuseAAttr(::mlir::IntegerAttr attr) { getProperties().reuseA = attr; } void setReuseA(bool attrValue); void setReuseBAttr(::mlir::IntegerAttr attr) { getProperties().reuseB = attr; } void setReuseB(bool attrValue); void setClampAttr(::mlir::IntegerAttr attr) { getProperties().clamp = attr; } void setClamp(bool attrValue); static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::Type res, ::mlir::IntegerAttr signA, ::mlir::Value a, ::mlir::IntegerAttr signB, ::mlir::Value b, ::mlir::Value c, ::mlir::IntegerAttr reuseA, ::mlir::IntegerAttr reuseB = nullptr, ::mlir::IntegerAttr clamp = nullptr); static wmma_i32_16x16x64_iu8 create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::Type res, ::mlir::IntegerAttr signA, ::mlir::Value a, ::mlir::IntegerAttr signB, ::mlir::Value b, ::mlir::Value c, ::mlir::IntegerAttr reuseA, ::mlir::IntegerAttr reuseB = nullptr, ::mlir::IntegerAttr clamp = nullptr); static wmma_i32_16x16x64_iu8 create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::Type res, ::mlir::IntegerAttr signA, ::mlir::Value a, ::mlir::IntegerAttr signB, ::mlir::Value b, ::mlir::Value c, ::mlir::IntegerAttr reuseA, ::mlir::IntegerAttr reuseB = nullptr, ::mlir::IntegerAttr clamp = nullptr); static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::IntegerAttr signA, ::mlir::Value a, ::mlir::IntegerAttr signB, ::mlir::Value b, ::mlir::Value c, ::mlir::IntegerAttr reuseA, ::mlir::IntegerAttr reuseB = nullptr, ::mlir::IntegerAttr clamp = nullptr); static wmma_i32_16x16x64_iu8 create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::IntegerAttr signA, ::mlir::Value a, ::mlir::IntegerAttr signB, ::mlir::Value b, ::mlir::Value c, ::mlir::IntegerAttr reuseA, ::mlir::IntegerAttr reuseB = nullptr, ::mlir::IntegerAttr clamp = nullptr); static wmma_i32_16x16x64_iu8 create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::IntegerAttr signA, ::mlir::Value a, ::mlir::IntegerAttr signB, ::mlir::Value b, ::mlir::Value c, ::mlir::IntegerAttr reuseA, ::mlir::IntegerAttr reuseB = nullptr, ::mlir::IntegerAttr clamp = nullptr); static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::Type res, bool signA, ::mlir::Value a, bool signB, ::mlir::Value b, ::mlir::Value c, bool reuseA = 0, bool reuseB = 0, bool clamp = 0); static wmma_i32_16x16x64_iu8 create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::Type res, bool signA, ::mlir::Value a, bool signB, ::mlir::Value b, ::mlir::Value c, bool reuseA = 0, bool reuseB = 0, bool clamp = 0); static wmma_i32_16x16x64_iu8 create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::Type res, bool signA, ::mlir::Value a, bool signB, ::mlir::Value b, ::mlir::Value c, bool reuseA = 0, bool reuseB = 0, bool clamp = 0); static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, bool signA, ::mlir::Value a, bool signB, ::mlir::Value b, ::mlir::Value c, bool reuseA = 0, bool reuseB = 0, bool clamp = 0); static wmma_i32_16x16x64_iu8 create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, bool signA, ::mlir::Value a, bool signB, ::mlir::Value b, ::mlir::Value c, bool reuseA = 0, bool reuseB = 0, bool clamp = 0); static wmma_i32_16x16x64_iu8 create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, bool signA, ::mlir::Value a, bool signB, ::mlir::Value b, ::mlir::Value c, bool reuseA = 0, bool reuseB = 0, bool clamp = 0); static void build(::mlir::OpBuilder &, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, ::llvm::ArrayRef<::mlir::NamedAttribute> attributes = {}); static wmma_i32_16x16x64_iu8 create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, ::llvm::ArrayRef<::mlir::NamedAttribute> attributes = {}); static wmma_i32_16x16x64_iu8 create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, ::llvm::ArrayRef<::mlir::NamedAttribute> attributes = {}); static void build(::mlir::OpBuilder &, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, const Properties &properties, ::llvm::ArrayRef<::mlir::NamedAttribute> discardableAttributes = {}); static wmma_i32_16x16x64_iu8 create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, const Properties &properties, ::llvm::ArrayRef<::mlir::NamedAttribute> discardableAttributes = {}); static wmma_i32_16x16x64_iu8 create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, const Properties &properties, ::llvm::ArrayRef<::mlir::NamedAttribute> discardableAttributes = {}); static void populateDefaultProperties(::mlir::OperationName opName, Properties &properties); ::llvm::LogicalResult verifyInvariantsImpl(); ::llvm::LogicalResult verifyInvariants(); static ::mlir::ParseResult parse(::mlir::OpAsmParser &parser, ::mlir::OperationState &result); void print(::mlir::OpAsmPrinter &_odsPrinter); private: ::mlir::StringAttr getAttributeNameForIndex(unsigned index) { return getAttributeNameForIndex((*this)->getName(), index); } static ::mlir::StringAttr getAttributeNameForIndex(::mlir::OperationName name, unsigned index) { assert(index < 5 && "invalid attribute index"); assert(name.getStringRef() == getOperationName() && "invalid operation name"); assert(name.isRegistered() && "Operation isn't registered, missing a " "dependent dialect loading?"); return name.getAttributeNames()[index]; } public: }; } // namespace mlir::ROCDL MLIR_DECLARE_EXPLICIT_TYPE_ID(::mlir::ROCDL::wmma_i32_16x16x64_iu8) MLIR_DECLARE_EXPLICIT_TYPE_ID(::mlir::ROCDL::detail::wmma_i32_16x16x64_iu8GenericAdaptorBase::Properties) namespace mlir::ROCDL { //===----------------------------------------------------------------------===// // ::mlir::ROCDL::wmma_scale16_f32_16x16x128_f8f6f4 declarations //===----------------------------------------------------------------------===// namespace detail { class wmma_scale16_f32_16x16x128_f8f6f4GenericAdaptorBase { public: struct Properties { using fmtATy = ::mlir::ROCDL::MatrixFormatAttr; fmtATy fmtA; auto getFmtA() const { auto &propStorage = this->fmtA; return ::llvm::dyn_cast_or_null<::mlir::ROCDL::MatrixFormatAttr>(propStorage); } void setFmtA(const ::mlir::ROCDL::MatrixFormatAttr &propValue) { this->fmtA = propValue; } using fmtBTy = ::mlir::ROCDL::MatrixFormatAttr; fmtBTy fmtB; auto getFmtB() const { auto &propStorage = this->fmtB; return ::llvm::dyn_cast_or_null<::mlir::ROCDL::MatrixFormatAttr>(propStorage); } void setFmtB(const ::mlir::ROCDL::MatrixFormatAttr &propValue) { this->fmtB = propValue; } using fmtScaleATy = ::mlir::ROCDL::WMMAMatrixScaleFormatAttr; fmtScaleATy fmtScaleA; auto getFmtScaleA() const { auto &propStorage = this->fmtScaleA; return ::llvm::dyn_cast_or_null<::mlir::ROCDL::WMMAMatrixScaleFormatAttr>(propStorage); } void setFmtScaleA(const ::mlir::ROCDL::WMMAMatrixScaleFormatAttr &propValue) { this->fmtScaleA = propValue; } using fmtScaleBTy = ::mlir::ROCDL::WMMAMatrixScaleFormatAttr; fmtScaleBTy fmtScaleB; auto getFmtScaleB() const { auto &propStorage = this->fmtScaleB; return ::llvm::dyn_cast_or_null<::mlir::ROCDL::WMMAMatrixScaleFormatAttr>(propStorage); } void setFmtScaleB(const ::mlir::ROCDL::WMMAMatrixScaleFormatAttr &propValue) { this->fmtScaleB = propValue; } using modCTy = ::mlir::ROCDL::WMMACModifierAttr; modCTy modC; auto getModC() const { auto &propStorage = this->modC; return ::llvm::dyn_cast_or_null<::mlir::ROCDL::WMMACModifierAttr>(propStorage); } void setModC(const ::mlir::ROCDL::WMMACModifierAttr &propValue) { this->modC = propValue; } using reuseATy = ::mlir::IntegerAttr; reuseATy reuseA; auto getReuseA() const { auto &propStorage = this->reuseA; return ::llvm::dyn_cast_or_null<::mlir::IntegerAttr>(propStorage); } void setReuseA(const ::mlir::IntegerAttr &propValue) { this->reuseA = propValue; } using reuseBTy = ::mlir::IntegerAttr; reuseBTy reuseB; auto getReuseB() const { auto &propStorage = this->reuseB; return ::llvm::dyn_cast_or_null<::mlir::IntegerAttr>(propStorage); } void setReuseB(const ::mlir::IntegerAttr &propValue) { this->reuseB = propValue; } using scaleATypeTy = ::mlir::ROCDL::WMMAMatrixScaleAttr; scaleATypeTy scaleAType; auto getScaleAType() const { auto &propStorage = this->scaleAType; return ::llvm::dyn_cast_or_null<::mlir::ROCDL::WMMAMatrixScaleAttr>(propStorage); } void setScaleAType(const ::mlir::ROCDL::WMMAMatrixScaleAttr &propValue) { this->scaleAType = propValue; } using scaleBTypeTy = ::mlir::ROCDL::WMMAMatrixScaleAttr; scaleBTypeTy scaleBType; auto getScaleBType() const { auto &propStorage = this->scaleBType; return ::llvm::dyn_cast_or_null<::mlir::ROCDL::WMMAMatrixScaleAttr>(propStorage); } void setScaleBType(const ::mlir::ROCDL::WMMAMatrixScaleAttr &propValue) { this->scaleBType = propValue; } bool operator==(const Properties &rhs) const { return rhs.fmtA == this->fmtA && rhs.fmtB == this->fmtB && rhs.fmtScaleA == this->fmtScaleA && rhs.fmtScaleB == this->fmtScaleB && rhs.modC == this->modC && rhs.reuseA == this->reuseA && rhs.reuseB == this->reuseB && rhs.scaleAType == this->scaleAType && rhs.scaleBType == this->scaleBType && true; } bool operator!=(const Properties &rhs) const { return !(*this == rhs); } }; protected: ::mlir::DictionaryAttr odsAttrs; ::std::optional<::mlir::OperationName> odsOpName; Properties properties; ::mlir::RegionRange odsRegions; public: wmma_scale16_f32_16x16x128_f8f6f4GenericAdaptorBase(::mlir::DictionaryAttr attrs, const Properties &properties, ::mlir::RegionRange regions = {}) : odsAttrs(attrs), properties(properties), odsRegions(regions) { if (odsAttrs) odsOpName.emplace("rocdl.wmma.scale16.f32.16x16x128.f8f6f4", odsAttrs.getContext()); } wmma_scale16_f32_16x16x128_f8f6f4GenericAdaptorBase(wmma_scale16_f32_16x16x128_f8f6f4 op); std::pair getODSOperandIndexAndLength(unsigned index, unsigned odsOperandsSize) { return {index, 1}; } const Properties &getProperties() { return properties; } ::mlir::DictionaryAttr getAttributes() { return odsAttrs; } ::mlir::ROCDL::MatrixFormatAttr getFmtAAttr(); ::mlir::ROCDL::MatrixFormat getFmtA(); ::mlir::ROCDL::MatrixFormatAttr getFmtBAttr(); ::mlir::ROCDL::MatrixFormat getFmtB(); ::mlir::ROCDL::WMMACModifierAttr getModCAttr(); ::mlir::ROCDL::WMMACModifier getModC(); ::mlir::ROCDL::WMMAMatrixScaleAttr getScaleATypeAttr(); ::mlir::ROCDL::WMMAMatrixScale getScaleAType(); ::mlir::ROCDL::WMMAMatrixScaleFormatAttr getFmtScaleAAttr(); ::mlir::ROCDL::WMMAMatrixScaleFormat getFmtScaleA(); ::mlir::ROCDL::WMMAMatrixScaleAttr getScaleBTypeAttr(); ::mlir::ROCDL::WMMAMatrixScale getScaleBType(); ::mlir::ROCDL::WMMAMatrixScaleFormatAttr getFmtScaleBAttr(); ::mlir::ROCDL::WMMAMatrixScaleFormat getFmtScaleB(); ::mlir::IntegerAttr getReuseAAttr(); bool getReuseA(); ::mlir::IntegerAttr getReuseBAttr(); bool getReuseB(); }; } // namespace detail template class wmma_scale16_f32_16x16x128_f8f6f4GenericAdaptor : public detail::wmma_scale16_f32_16x16x128_f8f6f4GenericAdaptorBase { using ValueT = ::llvm::detail::ValueOfRange; using Base = detail::wmma_scale16_f32_16x16x128_f8f6f4GenericAdaptorBase; static constexpr int odsIndex_a = 0; static constexpr int odsIndex_b = 1; static constexpr int odsIndex_c = 2; static constexpr int odsIndex_scaleA = 3; static constexpr int odsIndex_scaleB = 4; public: wmma_scale16_f32_16x16x128_f8f6f4GenericAdaptor(RangeT values, ::mlir::DictionaryAttr attrs, const Properties &properties, ::mlir::RegionRange regions = {}) : Base(attrs, properties, regions), odsOperands(values) {} wmma_scale16_f32_16x16x128_f8f6f4GenericAdaptor(RangeT values, ::mlir::DictionaryAttr attrs, ::mlir::PropertyRef properties, ::mlir::RegionRange regions = {}) : wmma_scale16_f32_16x16x128_f8f6f4GenericAdaptor(values, attrs, (properties ? *properties.as() : Properties{}), regions) {} wmma_scale16_f32_16x16x128_f8f6f4GenericAdaptor(RangeT values, ::mlir::DictionaryAttr attrs = nullptr) : wmma_scale16_f32_16x16x128_f8f6f4GenericAdaptor(values, attrs, Properties{}, {}) {} wmma_scale16_f32_16x16x128_f8f6f4GenericAdaptor(RangeT values, const wmma_scale16_f32_16x16x128_f8f6f4GenericAdaptorBase &base) : Base(base), odsOperands(values) {} template >> wmma_scale16_f32_16x16x128_f8f6f4GenericAdaptor(RangeT values, LateInst op) : Base(op), odsOperands(values) {} std::pair getODSOperandIndexAndLength(unsigned index) { return Base::getODSOperandIndexAndLength(index, odsOperands.size()); } RangeT getODSOperands(unsigned index) { auto valueRange = getODSOperandIndexAndLength(index); return {std::next(odsOperands.begin(), valueRange.first), std::next(odsOperands.begin(), valueRange.first + valueRange.second)}; } ValueT getA() { return (*getODSOperands(0).begin()); } ValueT getB() { return (*getODSOperands(1).begin()); } ValueT getC() { return (*getODSOperands(2).begin()); } ValueT getScaleA() { return (*getODSOperands(3).begin()); } ValueT getScaleB() { return (*getODSOperands(4).begin()); } RangeT getOperands() { return odsOperands; } private: RangeT odsOperands; }; class wmma_scale16_f32_16x16x128_f8f6f4Adaptor : public wmma_scale16_f32_16x16x128_f8f6f4GenericAdaptor<::mlir::ValueRange> { public: using wmma_scale16_f32_16x16x128_f8f6f4GenericAdaptor::wmma_scale16_f32_16x16x128_f8f6f4GenericAdaptor; wmma_scale16_f32_16x16x128_f8f6f4Adaptor(wmma_scale16_f32_16x16x128_f8f6f4 op); ::llvm::LogicalResult verify(::mlir::Location loc); }; class wmma_scale16_f32_16x16x128_f8f6f4 : public ::mlir::Op::Impl, ::mlir::OpTrait::ZeroSuccessors, ::mlir::OpTrait::NOperands<5>::Impl, ::mlir::OpTrait::OpInvariants, ::mlir::BytecodeOpInterface::Trait> { public: using Op::Op; using Op::print; using Adaptor = wmma_scale16_f32_16x16x128_f8f6f4Adaptor; template using GenericAdaptor = wmma_scale16_f32_16x16x128_f8f6f4GenericAdaptor; using FoldAdaptor = GenericAdaptor<::llvm::ArrayRef<::mlir::Attribute>>; static constexpr int odsIndex_a = 0; static constexpr int odsIndex_b = 1; static constexpr int odsIndex_c = 2; static constexpr int odsIndex_scaleA = 3; static constexpr int odsIndex_scaleB = 4; using Properties = FoldAdaptor::Properties; static ::llvm::ArrayRef<::llvm::StringRef> getAttributeNames() { static ::llvm::StringRef attrNames[] = {::llvm::StringRef("fmtA"), ::llvm::StringRef("fmtB"), ::llvm::StringRef("fmtScaleA"), ::llvm::StringRef("fmtScaleB"), ::llvm::StringRef("modC"), ::llvm::StringRef("reuseA"), ::llvm::StringRef("reuseB"), ::llvm::StringRef("scaleAType"), ::llvm::StringRef("scaleBType")}; return ::llvm::ArrayRef(attrNames); } ::mlir::StringAttr getFmtAAttrName() { return getAttributeNameForIndex(0); } static ::mlir::StringAttr getFmtAAttrName(::mlir::OperationName name) { return getAttributeNameForIndex(name, 0); } ::mlir::StringAttr getFmtBAttrName() { return getAttributeNameForIndex(1); } static ::mlir::StringAttr getFmtBAttrName(::mlir::OperationName name) { return getAttributeNameForIndex(name, 1); } ::mlir::StringAttr getFmtScaleAAttrName() { return getAttributeNameForIndex(2); } static ::mlir::StringAttr getFmtScaleAAttrName(::mlir::OperationName name) { return getAttributeNameForIndex(name, 2); } ::mlir::StringAttr getFmtScaleBAttrName() { return getAttributeNameForIndex(3); } static ::mlir::StringAttr getFmtScaleBAttrName(::mlir::OperationName name) { return getAttributeNameForIndex(name, 3); } ::mlir::StringAttr getModCAttrName() { return getAttributeNameForIndex(4); } static ::mlir::StringAttr getModCAttrName(::mlir::OperationName name) { return getAttributeNameForIndex(name, 4); } ::mlir::StringAttr getReuseAAttrName() { return getAttributeNameForIndex(5); } static ::mlir::StringAttr getReuseAAttrName(::mlir::OperationName name) { return getAttributeNameForIndex(name, 5); } ::mlir::StringAttr getReuseBAttrName() { return getAttributeNameForIndex(6); } static ::mlir::StringAttr getReuseBAttrName(::mlir::OperationName name) { return getAttributeNameForIndex(name, 6); } ::mlir::StringAttr getScaleATypeAttrName() { return getAttributeNameForIndex(7); } static ::mlir::StringAttr getScaleATypeAttrName(::mlir::OperationName name) { return getAttributeNameForIndex(name, 7); } ::mlir::StringAttr getScaleBTypeAttrName() { return getAttributeNameForIndex(8); } static ::mlir::StringAttr getScaleBTypeAttrName(::mlir::OperationName name) { return getAttributeNameForIndex(name, 8); } static constexpr ::llvm::StringLiteral getOperationName() { return ::llvm::StringLiteral("rocdl.wmma.scale16.f32.16x16x128.f8f6f4"); } std::pair getODSOperandIndexAndLength(unsigned index) { return {index, 1}; } ::mlir::Operation::operand_range getODSOperands(unsigned index) { auto valueRange = getODSOperandIndexAndLength(index); return {std::next(getOperation()->operand_begin(), valueRange.first), std::next(getOperation()->operand_begin(), valueRange.first + valueRange.second)}; } ::mlir::TypedValue<::mlir::Type> getA() { return ::llvm::cast<::mlir::TypedValue<::mlir::Type>>(*getODSOperands(0).begin()); } ::mlir::TypedValue<::mlir::Type> getB() { return ::llvm::cast<::mlir::TypedValue<::mlir::Type>>(*getODSOperands(1).begin()); } ::mlir::TypedValue<::mlir::Type> getC() { return ::llvm::cast<::mlir::TypedValue<::mlir::Type>>(*getODSOperands(2).begin()); } ::mlir::TypedValue<::mlir::IntegerType> getScaleA() { return ::llvm::cast<::mlir::TypedValue<::mlir::IntegerType>>(*getODSOperands(3).begin()); } ::mlir::TypedValue<::mlir::IntegerType> getScaleB() { return ::llvm::cast<::mlir::TypedValue<::mlir::IntegerType>>(*getODSOperands(4).begin()); } ::mlir::OpOperand &getAMutable() { auto range = getODSOperandIndexAndLength(0); return getOperation()->getOpOperand(range.first); } ::mlir::OpOperand &getBMutable() { auto range = getODSOperandIndexAndLength(1); return getOperation()->getOpOperand(range.first); } ::mlir::OpOperand &getCMutable() { auto range = getODSOperandIndexAndLength(2); return getOperation()->getOpOperand(range.first); } ::mlir::OpOperand &getScaleAMutable() { auto range = getODSOperandIndexAndLength(3); return getOperation()->getOpOperand(range.first); } ::mlir::OpOperand &getScaleBMutable() { auto range = getODSOperandIndexAndLength(4); return getOperation()->getOpOperand(range.first); } std::pair getODSResultIndexAndLength(unsigned index) { return {index, 1}; } ::mlir::Operation::result_range getODSResults(unsigned index) { auto valueRange = getODSResultIndexAndLength(index); return {std::next(getOperation()->result_begin(), valueRange.first), std::next(getOperation()->result_begin(), valueRange.first + valueRange.second)}; } ::mlir::TypedValue<::mlir::Type> getRes() { return ::llvm::cast<::mlir::TypedValue<::mlir::Type>>(*getODSResults(0).begin()); } static ::llvm::LogicalResult setPropertiesFromAttr(Properties &prop, ::mlir::Attribute attr, ::llvm::function_ref<::mlir::InFlightDiagnostic()> emitError); static ::mlir::Attribute getPropertiesAsAttr(::mlir::MLIRContext *ctx, const Properties &prop); static llvm::hash_code computePropertiesHash(const Properties &prop); static std::optional getInherentAttr(::mlir::MLIRContext *ctx, const Properties &prop, llvm::StringRef name); static void setInherentAttr(Properties &prop, llvm::StringRef name, mlir::Attribute value); static void populateInherentAttrs(::mlir::MLIRContext *ctx, const Properties &prop, ::mlir::NamedAttrList &attrs); static ::llvm::LogicalResult verifyInherentAttrs(::mlir::OperationName opName, ::mlir::NamedAttrList &attrs, llvm::function_ref<::mlir::InFlightDiagnostic()> emitError); static ::llvm::LogicalResult readProperties(::mlir::DialectBytecodeReader &reader, ::mlir::OperationState &state); void writeProperties(::mlir::DialectBytecodeWriter &writer); ::mlir::ROCDL::MatrixFormatAttr getFmtAAttr() { return ::llvm::dyn_cast_or_null<::mlir::ROCDL::MatrixFormatAttr>(getProperties().fmtA); } ::mlir::ROCDL::MatrixFormat getFmtA(); ::mlir::ROCDL::MatrixFormatAttr getFmtBAttr() { return ::llvm::dyn_cast_or_null<::mlir::ROCDL::MatrixFormatAttr>(getProperties().fmtB); } ::mlir::ROCDL::MatrixFormat getFmtB(); ::mlir::ROCDL::WMMACModifierAttr getModCAttr() { return ::llvm::dyn_cast_or_null<::mlir::ROCDL::WMMACModifierAttr>(getProperties().modC); } ::mlir::ROCDL::WMMACModifier getModC(); ::mlir::ROCDL::WMMAMatrixScaleAttr getScaleATypeAttr() { return ::llvm::dyn_cast_or_null<::mlir::ROCDL::WMMAMatrixScaleAttr>(getProperties().scaleAType); } ::mlir::ROCDL::WMMAMatrixScale getScaleAType(); ::mlir::ROCDL::WMMAMatrixScaleFormatAttr getFmtScaleAAttr() { return ::llvm::dyn_cast_or_null<::mlir::ROCDL::WMMAMatrixScaleFormatAttr>(getProperties().fmtScaleA); } ::mlir::ROCDL::WMMAMatrixScaleFormat getFmtScaleA(); ::mlir::ROCDL::WMMAMatrixScaleAttr getScaleBTypeAttr() { return ::llvm::dyn_cast_or_null<::mlir::ROCDL::WMMAMatrixScaleAttr>(getProperties().scaleBType); } ::mlir::ROCDL::WMMAMatrixScale getScaleBType(); ::mlir::ROCDL::WMMAMatrixScaleFormatAttr getFmtScaleBAttr() { return ::llvm::dyn_cast_or_null<::mlir::ROCDL::WMMAMatrixScaleFormatAttr>(getProperties().fmtScaleB); } ::mlir::ROCDL::WMMAMatrixScaleFormat getFmtScaleB(); ::mlir::IntegerAttr getReuseAAttr() { return ::llvm::dyn_cast_or_null<::mlir::IntegerAttr>(getProperties().reuseA); } bool getReuseA(); ::mlir::IntegerAttr getReuseBAttr() { return ::llvm::dyn_cast_or_null<::mlir::IntegerAttr>(getProperties().reuseB); } bool getReuseB(); void setFmtAAttr(::mlir::ROCDL::MatrixFormatAttr attr) { getProperties().fmtA = attr; } void setFmtA(::mlir::ROCDL::MatrixFormat attrValue); void setFmtBAttr(::mlir::ROCDL::MatrixFormatAttr attr) { getProperties().fmtB = attr; } void setFmtB(::mlir::ROCDL::MatrixFormat attrValue); void setModCAttr(::mlir::ROCDL::WMMACModifierAttr attr) { getProperties().modC = attr; } void setModC(::mlir::ROCDL::WMMACModifier attrValue); void setScaleATypeAttr(::mlir::ROCDL::WMMAMatrixScaleAttr attr) { getProperties().scaleAType = attr; } void setScaleAType(::mlir::ROCDL::WMMAMatrixScale attrValue); void setFmtScaleAAttr(::mlir::ROCDL::WMMAMatrixScaleFormatAttr attr) { getProperties().fmtScaleA = attr; } void setFmtScaleA(::mlir::ROCDL::WMMAMatrixScaleFormat attrValue); void setScaleBTypeAttr(::mlir::ROCDL::WMMAMatrixScaleAttr attr) { getProperties().scaleBType = attr; } void setScaleBType(::mlir::ROCDL::WMMAMatrixScale attrValue); void setFmtScaleBAttr(::mlir::ROCDL::WMMAMatrixScaleFormatAttr attr) { getProperties().fmtScaleB = attr; } void setFmtScaleB(::mlir::ROCDL::WMMAMatrixScaleFormat attrValue); void setReuseAAttr(::mlir::IntegerAttr attr) { getProperties().reuseA = attr; } void setReuseA(bool attrValue); void setReuseBAttr(::mlir::IntegerAttr attr) { getProperties().reuseB = attr; } void setReuseB(bool attrValue); static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::Type res, ::mlir::ROCDL::MatrixFormatAttr fmtA, ::mlir::Value a, ::mlir::ROCDL::MatrixFormatAttr fmtB, ::mlir::Value b, ::mlir::ROCDL::WMMACModifierAttr modC, ::mlir::Value c, ::mlir::ROCDL::WMMAMatrixScaleAttr scaleAType, ::mlir::ROCDL::WMMAMatrixScaleFormatAttr fmtScaleA, ::mlir::Value scaleA, ::mlir::ROCDL::WMMAMatrixScaleAttr scaleBType, ::mlir::ROCDL::WMMAMatrixScaleFormatAttr fmtScaleB, ::mlir::Value scaleB, ::mlir::IntegerAttr reuseA, ::mlir::IntegerAttr reuseB = nullptr); static wmma_scale16_f32_16x16x128_f8f6f4 create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::Type res, ::mlir::ROCDL::MatrixFormatAttr fmtA, ::mlir::Value a, ::mlir::ROCDL::MatrixFormatAttr fmtB, ::mlir::Value b, ::mlir::ROCDL::WMMACModifierAttr modC, ::mlir::Value c, ::mlir::ROCDL::WMMAMatrixScaleAttr scaleAType, ::mlir::ROCDL::WMMAMatrixScaleFormatAttr fmtScaleA, ::mlir::Value scaleA, ::mlir::ROCDL::WMMAMatrixScaleAttr scaleBType, ::mlir::ROCDL::WMMAMatrixScaleFormatAttr fmtScaleB, ::mlir::Value scaleB, ::mlir::IntegerAttr reuseA, ::mlir::IntegerAttr reuseB = nullptr); static wmma_scale16_f32_16x16x128_f8f6f4 create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::Type res, ::mlir::ROCDL::MatrixFormatAttr fmtA, ::mlir::Value a, ::mlir::ROCDL::MatrixFormatAttr fmtB, ::mlir::Value b, ::mlir::ROCDL::WMMACModifierAttr modC, ::mlir::Value c, ::mlir::ROCDL::WMMAMatrixScaleAttr scaleAType, ::mlir::ROCDL::WMMAMatrixScaleFormatAttr fmtScaleA, ::mlir::Value scaleA, ::mlir::ROCDL::WMMAMatrixScaleAttr scaleBType, ::mlir::ROCDL::WMMAMatrixScaleFormatAttr fmtScaleB, ::mlir::Value scaleB, ::mlir::IntegerAttr reuseA, ::mlir::IntegerAttr reuseB = nullptr); static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::ROCDL::MatrixFormatAttr fmtA, ::mlir::Value a, ::mlir::ROCDL::MatrixFormatAttr fmtB, ::mlir::Value b, ::mlir::ROCDL::WMMACModifierAttr modC, ::mlir::Value c, ::mlir::ROCDL::WMMAMatrixScaleAttr scaleAType, ::mlir::ROCDL::WMMAMatrixScaleFormatAttr fmtScaleA, ::mlir::Value scaleA, ::mlir::ROCDL::WMMAMatrixScaleAttr scaleBType, ::mlir::ROCDL::WMMAMatrixScaleFormatAttr fmtScaleB, ::mlir::Value scaleB, ::mlir::IntegerAttr reuseA, ::mlir::IntegerAttr reuseB = nullptr); static wmma_scale16_f32_16x16x128_f8f6f4 create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::ROCDL::MatrixFormatAttr fmtA, ::mlir::Value a, ::mlir::ROCDL::MatrixFormatAttr fmtB, ::mlir::Value b, ::mlir::ROCDL::WMMACModifierAttr modC, ::mlir::Value c, ::mlir::ROCDL::WMMAMatrixScaleAttr scaleAType, ::mlir::ROCDL::WMMAMatrixScaleFormatAttr fmtScaleA, ::mlir::Value scaleA, ::mlir::ROCDL::WMMAMatrixScaleAttr scaleBType, ::mlir::ROCDL::WMMAMatrixScaleFormatAttr fmtScaleB, ::mlir::Value scaleB, ::mlir::IntegerAttr reuseA, ::mlir::IntegerAttr reuseB = nullptr); static wmma_scale16_f32_16x16x128_f8f6f4 create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::ROCDL::MatrixFormatAttr fmtA, ::mlir::Value a, ::mlir::ROCDL::MatrixFormatAttr fmtB, ::mlir::Value b, ::mlir::ROCDL::WMMACModifierAttr modC, ::mlir::Value c, ::mlir::ROCDL::WMMAMatrixScaleAttr scaleAType, ::mlir::ROCDL::WMMAMatrixScaleFormatAttr fmtScaleA, ::mlir::Value scaleA, ::mlir::ROCDL::WMMAMatrixScaleAttr scaleBType, ::mlir::ROCDL::WMMAMatrixScaleFormatAttr fmtScaleB, ::mlir::Value scaleB, ::mlir::IntegerAttr reuseA, ::mlir::IntegerAttr reuseB = nullptr); static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::Type res, ::mlir::ROCDL::MatrixFormat fmtA, ::mlir::Value a, ::mlir::ROCDL::MatrixFormat fmtB, ::mlir::Value b, ::mlir::ROCDL::WMMACModifier modC, ::mlir::Value c, ::mlir::ROCDL::WMMAMatrixScale scaleAType, ::mlir::ROCDL::WMMAMatrixScaleFormat fmtScaleA, ::mlir::Value scaleA, ::mlir::ROCDL::WMMAMatrixScale scaleBType, ::mlir::ROCDL::WMMAMatrixScaleFormat fmtScaleB, ::mlir::Value scaleB, bool reuseA = 0, bool reuseB = 0); static wmma_scale16_f32_16x16x128_f8f6f4 create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::Type res, ::mlir::ROCDL::MatrixFormat fmtA, ::mlir::Value a, ::mlir::ROCDL::MatrixFormat fmtB, ::mlir::Value b, ::mlir::ROCDL::WMMACModifier modC, ::mlir::Value c, ::mlir::ROCDL::WMMAMatrixScale scaleAType, ::mlir::ROCDL::WMMAMatrixScaleFormat fmtScaleA, ::mlir::Value scaleA, ::mlir::ROCDL::WMMAMatrixScale scaleBType, ::mlir::ROCDL::WMMAMatrixScaleFormat fmtScaleB, ::mlir::Value scaleB, bool reuseA = 0, bool reuseB = 0); static wmma_scale16_f32_16x16x128_f8f6f4 create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::Type res, ::mlir::ROCDL::MatrixFormat fmtA, ::mlir::Value a, ::mlir::ROCDL::MatrixFormat fmtB, ::mlir::Value b, ::mlir::ROCDL::WMMACModifier modC, ::mlir::Value c, ::mlir::ROCDL::WMMAMatrixScale scaleAType, ::mlir::ROCDL::WMMAMatrixScaleFormat fmtScaleA, ::mlir::Value scaleA, ::mlir::ROCDL::WMMAMatrixScale scaleBType, ::mlir::ROCDL::WMMAMatrixScaleFormat fmtScaleB, ::mlir::Value scaleB, bool reuseA = 0, bool reuseB = 0); static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::ROCDL::MatrixFormat fmtA, ::mlir::Value a, ::mlir::ROCDL::MatrixFormat fmtB, ::mlir::Value b, ::mlir::ROCDL::WMMACModifier modC, ::mlir::Value c, ::mlir::ROCDL::WMMAMatrixScale scaleAType, ::mlir::ROCDL::WMMAMatrixScaleFormat fmtScaleA, ::mlir::Value scaleA, ::mlir::ROCDL::WMMAMatrixScale scaleBType, ::mlir::ROCDL::WMMAMatrixScaleFormat fmtScaleB, ::mlir::Value scaleB, bool reuseA = 0, bool reuseB = 0); static wmma_scale16_f32_16x16x128_f8f6f4 create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::ROCDL::MatrixFormat fmtA, ::mlir::Value a, ::mlir::ROCDL::MatrixFormat fmtB, ::mlir::Value b, ::mlir::ROCDL::WMMACModifier modC, ::mlir::Value c, ::mlir::ROCDL::WMMAMatrixScale scaleAType, ::mlir::ROCDL::WMMAMatrixScaleFormat fmtScaleA, ::mlir::Value scaleA, ::mlir::ROCDL::WMMAMatrixScale scaleBType, ::mlir::ROCDL::WMMAMatrixScaleFormat fmtScaleB, ::mlir::Value scaleB, bool reuseA = 0, bool reuseB = 0); static wmma_scale16_f32_16x16x128_f8f6f4 create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::ROCDL::MatrixFormat fmtA, ::mlir::Value a, ::mlir::ROCDL::MatrixFormat fmtB, ::mlir::Value b, ::mlir::ROCDL::WMMACModifier modC, ::mlir::Value c, ::mlir::ROCDL::WMMAMatrixScale scaleAType, ::mlir::ROCDL::WMMAMatrixScaleFormat fmtScaleA, ::mlir::Value scaleA, ::mlir::ROCDL::WMMAMatrixScale scaleBType, ::mlir::ROCDL::WMMAMatrixScaleFormat fmtScaleB, ::mlir::Value scaleB, bool reuseA = 0, bool reuseB = 0); static void build(::mlir::OpBuilder &, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, ::llvm::ArrayRef<::mlir::NamedAttribute> attributes = {}); static wmma_scale16_f32_16x16x128_f8f6f4 create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, ::llvm::ArrayRef<::mlir::NamedAttribute> attributes = {}); static wmma_scale16_f32_16x16x128_f8f6f4 create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, ::llvm::ArrayRef<::mlir::NamedAttribute> attributes = {}); static void build(::mlir::OpBuilder &, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, const Properties &properties, ::llvm::ArrayRef<::mlir::NamedAttribute> discardableAttributes = {}); static wmma_scale16_f32_16x16x128_f8f6f4 create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, const Properties &properties, ::llvm::ArrayRef<::mlir::NamedAttribute> discardableAttributes = {}); static wmma_scale16_f32_16x16x128_f8f6f4 create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, const Properties &properties, ::llvm::ArrayRef<::mlir::NamedAttribute> discardableAttributes = {}); static void populateDefaultProperties(::mlir::OperationName opName, Properties &properties); ::llvm::LogicalResult verifyInvariantsImpl(); ::llvm::LogicalResult verifyInvariants(); static ::mlir::ParseResult parse(::mlir::OpAsmParser &parser, ::mlir::OperationState &result); void print(::mlir::OpAsmPrinter &_odsPrinter); private: ::mlir::StringAttr getAttributeNameForIndex(unsigned index) { return getAttributeNameForIndex((*this)->getName(), index); } static ::mlir::StringAttr getAttributeNameForIndex(::mlir::OperationName name, unsigned index) { assert(index < 9 && "invalid attribute index"); assert(name.getStringRef() == getOperationName() && "invalid operation name"); assert(name.isRegistered() && "Operation isn't registered, missing a " "dependent dialect loading?"); return name.getAttributeNames()[index]; } public: }; } // namespace mlir::ROCDL MLIR_DECLARE_EXPLICIT_TYPE_ID(::mlir::ROCDL::wmma_scale16_f32_16x16x128_f8f6f4) MLIR_DECLARE_EXPLICIT_TYPE_ID(::mlir::ROCDL::detail::wmma_scale16_f32_16x16x128_f8f6f4GenericAdaptorBase::Properties) namespace mlir::ROCDL { //===----------------------------------------------------------------------===// // ::mlir::ROCDL::wmma_scale16_f32_32x16x128_f4 declarations //===----------------------------------------------------------------------===// namespace detail { class wmma_scale16_f32_32x16x128_f4GenericAdaptorBase { public: struct Properties { using fmtScaleATy = ::mlir::ROCDL::WMMAMatrixScaleFormatAttr; fmtScaleATy fmtScaleA; auto getFmtScaleA() const { auto &propStorage = this->fmtScaleA; return ::llvm::dyn_cast_or_null<::mlir::ROCDL::WMMAMatrixScaleFormatAttr>(propStorage); } void setFmtScaleA(const ::mlir::ROCDL::WMMAMatrixScaleFormatAttr &propValue) { this->fmtScaleA = propValue; } using fmtScaleBTy = ::mlir::ROCDL::WMMAMatrixScaleFormatAttr; fmtScaleBTy fmtScaleB; auto getFmtScaleB() const { auto &propStorage = this->fmtScaleB; return ::llvm::dyn_cast_or_null<::mlir::ROCDL::WMMAMatrixScaleFormatAttr>(propStorage); } void setFmtScaleB(const ::mlir::ROCDL::WMMAMatrixScaleFormatAttr &propValue) { this->fmtScaleB = propValue; } using modCTy = ::mlir::ROCDL::WMMACModifierAttr; modCTy modC; auto getModC() const { auto &propStorage = this->modC; return ::llvm::dyn_cast_or_null<::mlir::ROCDL::WMMACModifierAttr>(propStorage); } void setModC(const ::mlir::ROCDL::WMMACModifierAttr &propValue) { this->modC = propValue; } using reuseATy = ::mlir::IntegerAttr; reuseATy reuseA; auto getReuseA() const { auto &propStorage = this->reuseA; return ::llvm::dyn_cast_or_null<::mlir::IntegerAttr>(propStorage); } void setReuseA(const ::mlir::IntegerAttr &propValue) { this->reuseA = propValue; } using reuseBTy = ::mlir::IntegerAttr; reuseBTy reuseB; auto getReuseB() const { auto &propStorage = this->reuseB; return ::llvm::dyn_cast_or_null<::mlir::IntegerAttr>(propStorage); } void setReuseB(const ::mlir::IntegerAttr &propValue) { this->reuseB = propValue; } using scaleATypeTy = ::mlir::ROCDL::WMMAMatrixScaleAttr; scaleATypeTy scaleAType; auto getScaleAType() const { auto &propStorage = this->scaleAType; return ::llvm::dyn_cast_or_null<::mlir::ROCDL::WMMAMatrixScaleAttr>(propStorage); } void setScaleAType(const ::mlir::ROCDL::WMMAMatrixScaleAttr &propValue) { this->scaleAType = propValue; } using scaleBTypeTy = ::mlir::ROCDL::WMMAMatrixScaleAttr; scaleBTypeTy scaleBType; auto getScaleBType() const { auto &propStorage = this->scaleBType; return ::llvm::dyn_cast_or_null<::mlir::ROCDL::WMMAMatrixScaleAttr>(propStorage); } void setScaleBType(const ::mlir::ROCDL::WMMAMatrixScaleAttr &propValue) { this->scaleBType = propValue; } bool operator==(const Properties &rhs) const { return rhs.fmtScaleA == this->fmtScaleA && rhs.fmtScaleB == this->fmtScaleB && rhs.modC == this->modC && rhs.reuseA == this->reuseA && rhs.reuseB == this->reuseB && rhs.scaleAType == this->scaleAType && rhs.scaleBType == this->scaleBType && true; } bool operator!=(const Properties &rhs) const { return !(*this == rhs); } }; protected: ::mlir::DictionaryAttr odsAttrs; ::std::optional<::mlir::OperationName> odsOpName; Properties properties; ::mlir::RegionRange odsRegions; public: wmma_scale16_f32_32x16x128_f4GenericAdaptorBase(::mlir::DictionaryAttr attrs, const Properties &properties, ::mlir::RegionRange regions = {}) : odsAttrs(attrs), properties(properties), odsRegions(regions) { if (odsAttrs) odsOpName.emplace("rocdl.wmma.scale16.f32.32x16x128.f4", odsAttrs.getContext()); } wmma_scale16_f32_32x16x128_f4GenericAdaptorBase(wmma_scale16_f32_32x16x128_f4 op); std::pair getODSOperandIndexAndLength(unsigned index, unsigned odsOperandsSize) { return {index, 1}; } const Properties &getProperties() { return properties; } ::mlir::DictionaryAttr getAttributes() { return odsAttrs; } ::mlir::ROCDL::WMMACModifierAttr getModCAttr(); ::mlir::ROCDL::WMMACModifier getModC(); ::mlir::ROCDL::WMMAMatrixScaleAttr getScaleATypeAttr(); ::mlir::ROCDL::WMMAMatrixScale getScaleAType(); ::mlir::ROCDL::WMMAMatrixScaleFormatAttr getFmtScaleAAttr(); ::mlir::ROCDL::WMMAMatrixScaleFormat getFmtScaleA(); ::mlir::ROCDL::WMMAMatrixScaleAttr getScaleBTypeAttr(); ::mlir::ROCDL::WMMAMatrixScale getScaleBType(); ::mlir::ROCDL::WMMAMatrixScaleFormatAttr getFmtScaleBAttr(); ::mlir::ROCDL::WMMAMatrixScaleFormat getFmtScaleB(); ::mlir::IntegerAttr getReuseAAttr(); bool getReuseA(); ::mlir::IntegerAttr getReuseBAttr(); bool getReuseB(); }; } // namespace detail template class wmma_scale16_f32_32x16x128_f4GenericAdaptor : public detail::wmma_scale16_f32_32x16x128_f4GenericAdaptorBase { using ValueT = ::llvm::detail::ValueOfRange; using Base = detail::wmma_scale16_f32_32x16x128_f4GenericAdaptorBase; static constexpr int odsIndex_a = 0; static constexpr int odsIndex_b = 1; static constexpr int odsIndex_c = 2; static constexpr int odsIndex_scaleA = 3; static constexpr int odsIndex_scaleB = 4; public: wmma_scale16_f32_32x16x128_f4GenericAdaptor(RangeT values, ::mlir::DictionaryAttr attrs, const Properties &properties, ::mlir::RegionRange regions = {}) : Base(attrs, properties, regions), odsOperands(values) {} wmma_scale16_f32_32x16x128_f4GenericAdaptor(RangeT values, ::mlir::DictionaryAttr attrs, ::mlir::PropertyRef properties, ::mlir::RegionRange regions = {}) : wmma_scale16_f32_32x16x128_f4GenericAdaptor(values, attrs, (properties ? *properties.as() : Properties{}), regions) {} wmma_scale16_f32_32x16x128_f4GenericAdaptor(RangeT values, ::mlir::DictionaryAttr attrs = nullptr) : wmma_scale16_f32_32x16x128_f4GenericAdaptor(values, attrs, Properties{}, {}) {} wmma_scale16_f32_32x16x128_f4GenericAdaptor(RangeT values, const wmma_scale16_f32_32x16x128_f4GenericAdaptorBase &base) : Base(base), odsOperands(values) {} template >> wmma_scale16_f32_32x16x128_f4GenericAdaptor(RangeT values, LateInst op) : Base(op), odsOperands(values) {} std::pair getODSOperandIndexAndLength(unsigned index) { return Base::getODSOperandIndexAndLength(index, odsOperands.size()); } RangeT getODSOperands(unsigned index) { auto valueRange = getODSOperandIndexAndLength(index); return {std::next(odsOperands.begin(), valueRange.first), std::next(odsOperands.begin(), valueRange.first + valueRange.second)}; } ValueT getA() { return (*getODSOperands(0).begin()); } ValueT getB() { return (*getODSOperands(1).begin()); } ValueT getC() { return (*getODSOperands(2).begin()); } ValueT getScaleA() { return (*getODSOperands(3).begin()); } ValueT getScaleB() { return (*getODSOperands(4).begin()); } RangeT getOperands() { return odsOperands; } private: RangeT odsOperands; }; class wmma_scale16_f32_32x16x128_f4Adaptor : public wmma_scale16_f32_32x16x128_f4GenericAdaptor<::mlir::ValueRange> { public: using wmma_scale16_f32_32x16x128_f4GenericAdaptor::wmma_scale16_f32_32x16x128_f4GenericAdaptor; wmma_scale16_f32_32x16x128_f4Adaptor(wmma_scale16_f32_32x16x128_f4 op); ::llvm::LogicalResult verify(::mlir::Location loc); }; class wmma_scale16_f32_32x16x128_f4 : public ::mlir::Op::Impl, ::mlir::OpTrait::ZeroSuccessors, ::mlir::OpTrait::NOperands<5>::Impl, ::mlir::OpTrait::OpInvariants, ::mlir::BytecodeOpInterface::Trait> { public: using Op::Op; using Op::print; using Adaptor = wmma_scale16_f32_32x16x128_f4Adaptor; template using GenericAdaptor = wmma_scale16_f32_32x16x128_f4GenericAdaptor; using FoldAdaptor = GenericAdaptor<::llvm::ArrayRef<::mlir::Attribute>>; static constexpr int odsIndex_a = 0; static constexpr int odsIndex_b = 1; static constexpr int odsIndex_c = 2; static constexpr int odsIndex_scaleA = 3; static constexpr int odsIndex_scaleB = 4; using Properties = FoldAdaptor::Properties; static ::llvm::ArrayRef<::llvm::StringRef> getAttributeNames() { static ::llvm::StringRef attrNames[] = {::llvm::StringRef("fmtScaleA"), ::llvm::StringRef("fmtScaleB"), ::llvm::StringRef("modC"), ::llvm::StringRef("reuseA"), ::llvm::StringRef("reuseB"), ::llvm::StringRef("scaleAType"), ::llvm::StringRef("scaleBType")}; return ::llvm::ArrayRef(attrNames); } ::mlir::StringAttr getFmtScaleAAttrName() { return getAttributeNameForIndex(0); } static ::mlir::StringAttr getFmtScaleAAttrName(::mlir::OperationName name) { return getAttributeNameForIndex(name, 0); } ::mlir::StringAttr getFmtScaleBAttrName() { return getAttributeNameForIndex(1); } static ::mlir::StringAttr getFmtScaleBAttrName(::mlir::OperationName name) { return getAttributeNameForIndex(name, 1); } ::mlir::StringAttr getModCAttrName() { return getAttributeNameForIndex(2); } static ::mlir::StringAttr getModCAttrName(::mlir::OperationName name) { return getAttributeNameForIndex(name, 2); } ::mlir::StringAttr getReuseAAttrName() { return getAttributeNameForIndex(3); } static ::mlir::StringAttr getReuseAAttrName(::mlir::OperationName name) { return getAttributeNameForIndex(name, 3); } ::mlir::StringAttr getReuseBAttrName() { return getAttributeNameForIndex(4); } static ::mlir::StringAttr getReuseBAttrName(::mlir::OperationName name) { return getAttributeNameForIndex(name, 4); } ::mlir::StringAttr getScaleATypeAttrName() { return getAttributeNameForIndex(5); } static ::mlir::StringAttr getScaleATypeAttrName(::mlir::OperationName name) { return getAttributeNameForIndex(name, 5); } ::mlir::StringAttr getScaleBTypeAttrName() { return getAttributeNameForIndex(6); } static ::mlir::StringAttr getScaleBTypeAttrName(::mlir::OperationName name) { return getAttributeNameForIndex(name, 6); } static constexpr ::llvm::StringLiteral getOperationName() { return ::llvm::StringLiteral("rocdl.wmma.scale16.f32.32x16x128.f4"); } std::pair getODSOperandIndexAndLength(unsigned index) { return {index, 1}; } ::mlir::Operation::operand_range getODSOperands(unsigned index) { auto valueRange = getODSOperandIndexAndLength(index); return {std::next(getOperation()->operand_begin(), valueRange.first), std::next(getOperation()->operand_begin(), valueRange.first + valueRange.second)}; } ::mlir::TypedValue<::mlir::Type> getA() { return ::llvm::cast<::mlir::TypedValue<::mlir::Type>>(*getODSOperands(0).begin()); } ::mlir::TypedValue<::mlir::Type> getB() { return ::llvm::cast<::mlir::TypedValue<::mlir::Type>>(*getODSOperands(1).begin()); } ::mlir::TypedValue<::mlir::Type> getC() { return ::llvm::cast<::mlir::TypedValue<::mlir::Type>>(*getODSOperands(2).begin()); } ::mlir::TypedValue<::mlir::IntegerType> getScaleA() { return ::llvm::cast<::mlir::TypedValue<::mlir::IntegerType>>(*getODSOperands(3).begin()); } ::mlir::TypedValue<::mlir::IntegerType> getScaleB() { return ::llvm::cast<::mlir::TypedValue<::mlir::IntegerType>>(*getODSOperands(4).begin()); } ::mlir::OpOperand &getAMutable() { auto range = getODSOperandIndexAndLength(0); return getOperation()->getOpOperand(range.first); } ::mlir::OpOperand &getBMutable() { auto range = getODSOperandIndexAndLength(1); return getOperation()->getOpOperand(range.first); } ::mlir::OpOperand &getCMutable() { auto range = getODSOperandIndexAndLength(2); return getOperation()->getOpOperand(range.first); } ::mlir::OpOperand &getScaleAMutable() { auto range = getODSOperandIndexAndLength(3); return getOperation()->getOpOperand(range.first); } ::mlir::OpOperand &getScaleBMutable() { auto range = getODSOperandIndexAndLength(4); return getOperation()->getOpOperand(range.first); } std::pair getODSResultIndexAndLength(unsigned index) { return {index, 1}; } ::mlir::Operation::result_range getODSResults(unsigned index) { auto valueRange = getODSResultIndexAndLength(index); return {std::next(getOperation()->result_begin(), valueRange.first), std::next(getOperation()->result_begin(), valueRange.first + valueRange.second)}; } ::mlir::TypedValue<::mlir::Type> getRes() { return ::llvm::cast<::mlir::TypedValue<::mlir::Type>>(*getODSResults(0).begin()); } static ::llvm::LogicalResult setPropertiesFromAttr(Properties &prop, ::mlir::Attribute attr, ::llvm::function_ref<::mlir::InFlightDiagnostic()> emitError); static ::mlir::Attribute getPropertiesAsAttr(::mlir::MLIRContext *ctx, const Properties &prop); static llvm::hash_code computePropertiesHash(const Properties &prop); static std::optional getInherentAttr(::mlir::MLIRContext *ctx, const Properties &prop, llvm::StringRef name); static void setInherentAttr(Properties &prop, llvm::StringRef name, mlir::Attribute value); static void populateInherentAttrs(::mlir::MLIRContext *ctx, const Properties &prop, ::mlir::NamedAttrList &attrs); static ::llvm::LogicalResult verifyInherentAttrs(::mlir::OperationName opName, ::mlir::NamedAttrList &attrs, llvm::function_ref<::mlir::InFlightDiagnostic()> emitError); static ::llvm::LogicalResult readProperties(::mlir::DialectBytecodeReader &reader, ::mlir::OperationState &state); void writeProperties(::mlir::DialectBytecodeWriter &writer); ::mlir::ROCDL::WMMACModifierAttr getModCAttr() { return ::llvm::dyn_cast_or_null<::mlir::ROCDL::WMMACModifierAttr>(getProperties().modC); } ::mlir::ROCDL::WMMACModifier getModC(); ::mlir::ROCDL::WMMAMatrixScaleAttr getScaleATypeAttr() { return ::llvm::dyn_cast_or_null<::mlir::ROCDL::WMMAMatrixScaleAttr>(getProperties().scaleAType); } ::mlir::ROCDL::WMMAMatrixScale getScaleAType(); ::mlir::ROCDL::WMMAMatrixScaleFormatAttr getFmtScaleAAttr() { return ::llvm::dyn_cast_or_null<::mlir::ROCDL::WMMAMatrixScaleFormatAttr>(getProperties().fmtScaleA); } ::mlir::ROCDL::WMMAMatrixScaleFormat getFmtScaleA(); ::mlir::ROCDL::WMMAMatrixScaleAttr getScaleBTypeAttr() { return ::llvm::dyn_cast_or_null<::mlir::ROCDL::WMMAMatrixScaleAttr>(getProperties().scaleBType); } ::mlir::ROCDL::WMMAMatrixScale getScaleBType(); ::mlir::ROCDL::WMMAMatrixScaleFormatAttr getFmtScaleBAttr() { return ::llvm::dyn_cast_or_null<::mlir::ROCDL::WMMAMatrixScaleFormatAttr>(getProperties().fmtScaleB); } ::mlir::ROCDL::WMMAMatrixScaleFormat getFmtScaleB(); ::mlir::IntegerAttr getReuseAAttr() { return ::llvm::dyn_cast_or_null<::mlir::IntegerAttr>(getProperties().reuseA); } bool getReuseA(); ::mlir::IntegerAttr getReuseBAttr() { return ::llvm::dyn_cast_or_null<::mlir::IntegerAttr>(getProperties().reuseB); } bool getReuseB(); void setModCAttr(::mlir::ROCDL::WMMACModifierAttr attr) { getProperties().modC = attr; } void setModC(::mlir::ROCDL::WMMACModifier attrValue); void setScaleATypeAttr(::mlir::ROCDL::WMMAMatrixScaleAttr attr) { getProperties().scaleAType = attr; } void setScaleAType(::mlir::ROCDL::WMMAMatrixScale attrValue); void setFmtScaleAAttr(::mlir::ROCDL::WMMAMatrixScaleFormatAttr attr) { getProperties().fmtScaleA = attr; } void setFmtScaleA(::mlir::ROCDL::WMMAMatrixScaleFormat attrValue); void setScaleBTypeAttr(::mlir::ROCDL::WMMAMatrixScaleAttr attr) { getProperties().scaleBType = attr; } void setScaleBType(::mlir::ROCDL::WMMAMatrixScale attrValue); void setFmtScaleBAttr(::mlir::ROCDL::WMMAMatrixScaleFormatAttr attr) { getProperties().fmtScaleB = attr; } void setFmtScaleB(::mlir::ROCDL::WMMAMatrixScaleFormat attrValue); void setReuseAAttr(::mlir::IntegerAttr attr) { getProperties().reuseA = attr; } void setReuseA(bool attrValue); void setReuseBAttr(::mlir::IntegerAttr attr) { getProperties().reuseB = attr; } void setReuseB(bool attrValue); static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::Type res, ::mlir::Value a, ::mlir::Value b, ::mlir::ROCDL::WMMACModifierAttr modC, ::mlir::Value c, ::mlir::ROCDL::WMMAMatrixScaleAttr scaleAType, ::mlir::ROCDL::WMMAMatrixScaleFormatAttr fmtScaleA, ::mlir::Value scaleA, ::mlir::ROCDL::WMMAMatrixScaleAttr scaleBType, ::mlir::ROCDL::WMMAMatrixScaleFormatAttr fmtScaleB, ::mlir::Value scaleB, ::mlir::IntegerAttr reuseA, ::mlir::IntegerAttr reuseB = nullptr); static wmma_scale16_f32_32x16x128_f4 create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::Type res, ::mlir::Value a, ::mlir::Value b, ::mlir::ROCDL::WMMACModifierAttr modC, ::mlir::Value c, ::mlir::ROCDL::WMMAMatrixScaleAttr scaleAType, ::mlir::ROCDL::WMMAMatrixScaleFormatAttr fmtScaleA, ::mlir::Value scaleA, ::mlir::ROCDL::WMMAMatrixScaleAttr scaleBType, ::mlir::ROCDL::WMMAMatrixScaleFormatAttr fmtScaleB, ::mlir::Value scaleB, ::mlir::IntegerAttr reuseA, ::mlir::IntegerAttr reuseB = nullptr); static wmma_scale16_f32_32x16x128_f4 create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::Type res, ::mlir::Value a, ::mlir::Value b, ::mlir::ROCDL::WMMACModifierAttr modC, ::mlir::Value c, ::mlir::ROCDL::WMMAMatrixScaleAttr scaleAType, ::mlir::ROCDL::WMMAMatrixScaleFormatAttr fmtScaleA, ::mlir::Value scaleA, ::mlir::ROCDL::WMMAMatrixScaleAttr scaleBType, ::mlir::ROCDL::WMMAMatrixScaleFormatAttr fmtScaleB, ::mlir::Value scaleB, ::mlir::IntegerAttr reuseA, ::mlir::IntegerAttr reuseB = nullptr); static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::Value a, ::mlir::Value b, ::mlir::ROCDL::WMMACModifierAttr modC, ::mlir::Value c, ::mlir::ROCDL::WMMAMatrixScaleAttr scaleAType, ::mlir::ROCDL::WMMAMatrixScaleFormatAttr fmtScaleA, ::mlir::Value scaleA, ::mlir::ROCDL::WMMAMatrixScaleAttr scaleBType, ::mlir::ROCDL::WMMAMatrixScaleFormatAttr fmtScaleB, ::mlir::Value scaleB, ::mlir::IntegerAttr reuseA, ::mlir::IntegerAttr reuseB = nullptr); static wmma_scale16_f32_32x16x128_f4 create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::Value a, ::mlir::Value b, ::mlir::ROCDL::WMMACModifierAttr modC, ::mlir::Value c, ::mlir::ROCDL::WMMAMatrixScaleAttr scaleAType, ::mlir::ROCDL::WMMAMatrixScaleFormatAttr fmtScaleA, ::mlir::Value scaleA, ::mlir::ROCDL::WMMAMatrixScaleAttr scaleBType, ::mlir::ROCDL::WMMAMatrixScaleFormatAttr fmtScaleB, ::mlir::Value scaleB, ::mlir::IntegerAttr reuseA, ::mlir::IntegerAttr reuseB = nullptr); static wmma_scale16_f32_32x16x128_f4 create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::Value a, ::mlir::Value b, ::mlir::ROCDL::WMMACModifierAttr modC, ::mlir::Value c, ::mlir::ROCDL::WMMAMatrixScaleAttr scaleAType, ::mlir::ROCDL::WMMAMatrixScaleFormatAttr fmtScaleA, ::mlir::Value scaleA, ::mlir::ROCDL::WMMAMatrixScaleAttr scaleBType, ::mlir::ROCDL::WMMAMatrixScaleFormatAttr fmtScaleB, ::mlir::Value scaleB, ::mlir::IntegerAttr reuseA, ::mlir::IntegerAttr reuseB = nullptr); static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::Type res, ::mlir::Value a, ::mlir::Value b, ::mlir::ROCDL::WMMACModifier modC, ::mlir::Value c, ::mlir::ROCDL::WMMAMatrixScale scaleAType, ::mlir::ROCDL::WMMAMatrixScaleFormat fmtScaleA, ::mlir::Value scaleA, ::mlir::ROCDL::WMMAMatrixScale scaleBType, ::mlir::ROCDL::WMMAMatrixScaleFormat fmtScaleB, ::mlir::Value scaleB, bool reuseA = 0, bool reuseB = 0); static wmma_scale16_f32_32x16x128_f4 create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::Type res, ::mlir::Value a, ::mlir::Value b, ::mlir::ROCDL::WMMACModifier modC, ::mlir::Value c, ::mlir::ROCDL::WMMAMatrixScale scaleAType, ::mlir::ROCDL::WMMAMatrixScaleFormat fmtScaleA, ::mlir::Value scaleA, ::mlir::ROCDL::WMMAMatrixScale scaleBType, ::mlir::ROCDL::WMMAMatrixScaleFormat fmtScaleB, ::mlir::Value scaleB, bool reuseA = 0, bool reuseB = 0); static wmma_scale16_f32_32x16x128_f4 create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::Type res, ::mlir::Value a, ::mlir::Value b, ::mlir::ROCDL::WMMACModifier modC, ::mlir::Value c, ::mlir::ROCDL::WMMAMatrixScale scaleAType, ::mlir::ROCDL::WMMAMatrixScaleFormat fmtScaleA, ::mlir::Value scaleA, ::mlir::ROCDL::WMMAMatrixScale scaleBType, ::mlir::ROCDL::WMMAMatrixScaleFormat fmtScaleB, ::mlir::Value scaleB, bool reuseA = 0, bool reuseB = 0); static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::Value a, ::mlir::Value b, ::mlir::ROCDL::WMMACModifier modC, ::mlir::Value c, ::mlir::ROCDL::WMMAMatrixScale scaleAType, ::mlir::ROCDL::WMMAMatrixScaleFormat fmtScaleA, ::mlir::Value scaleA, ::mlir::ROCDL::WMMAMatrixScale scaleBType, ::mlir::ROCDL::WMMAMatrixScaleFormat fmtScaleB, ::mlir::Value scaleB, bool reuseA = 0, bool reuseB = 0); static wmma_scale16_f32_32x16x128_f4 create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::Value a, ::mlir::Value b, ::mlir::ROCDL::WMMACModifier modC, ::mlir::Value c, ::mlir::ROCDL::WMMAMatrixScale scaleAType, ::mlir::ROCDL::WMMAMatrixScaleFormat fmtScaleA, ::mlir::Value scaleA, ::mlir::ROCDL::WMMAMatrixScale scaleBType, ::mlir::ROCDL::WMMAMatrixScaleFormat fmtScaleB, ::mlir::Value scaleB, bool reuseA = 0, bool reuseB = 0); static wmma_scale16_f32_32x16x128_f4 create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::Value a, ::mlir::Value b, ::mlir::ROCDL::WMMACModifier modC, ::mlir::Value c, ::mlir::ROCDL::WMMAMatrixScale scaleAType, ::mlir::ROCDL::WMMAMatrixScaleFormat fmtScaleA, ::mlir::Value scaleA, ::mlir::ROCDL::WMMAMatrixScale scaleBType, ::mlir::ROCDL::WMMAMatrixScaleFormat fmtScaleB, ::mlir::Value scaleB, bool reuseA = 0, bool reuseB = 0); static void build(::mlir::OpBuilder &, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, ::llvm::ArrayRef<::mlir::NamedAttribute> attributes = {}); static wmma_scale16_f32_32x16x128_f4 create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, ::llvm::ArrayRef<::mlir::NamedAttribute> attributes = {}); static wmma_scale16_f32_32x16x128_f4 create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, ::llvm::ArrayRef<::mlir::NamedAttribute> attributes = {}); static void build(::mlir::OpBuilder &, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, const Properties &properties, ::llvm::ArrayRef<::mlir::NamedAttribute> discardableAttributes = {}); static wmma_scale16_f32_32x16x128_f4 create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, const Properties &properties, ::llvm::ArrayRef<::mlir::NamedAttribute> discardableAttributes = {}); static wmma_scale16_f32_32x16x128_f4 create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, const Properties &properties, ::llvm::ArrayRef<::mlir::NamedAttribute> discardableAttributes = {}); static void populateDefaultProperties(::mlir::OperationName opName, Properties &properties); ::llvm::LogicalResult verifyInvariantsImpl(); ::llvm::LogicalResult verifyInvariants(); static ::mlir::ParseResult parse(::mlir::OpAsmParser &parser, ::mlir::OperationState &result); void print(::mlir::OpAsmPrinter &_odsPrinter); private: ::mlir::StringAttr getAttributeNameForIndex(unsigned index) { return getAttributeNameForIndex((*this)->getName(), index); } static ::mlir::StringAttr getAttributeNameForIndex(::mlir::OperationName name, unsigned index) { assert(index < 7 && "invalid attribute index"); assert(name.getStringRef() == getOperationName() && "invalid operation name"); assert(name.isRegistered() && "Operation isn't registered, missing a " "dependent dialect loading?"); return name.getAttributeNames()[index]; } public: }; } // namespace mlir::ROCDL MLIR_DECLARE_EXPLICIT_TYPE_ID(::mlir::ROCDL::wmma_scale16_f32_32x16x128_f4) MLIR_DECLARE_EXPLICIT_TYPE_ID(::mlir::ROCDL::detail::wmma_scale16_f32_32x16x128_f4GenericAdaptorBase::Properties) namespace mlir::ROCDL { //===----------------------------------------------------------------------===// // ::mlir::ROCDL::wmma_scale_f32_16x16x128_f8f6f4 declarations //===----------------------------------------------------------------------===// namespace detail { class wmma_scale_f32_16x16x128_f8f6f4GenericAdaptorBase { public: struct Properties { using fmtATy = ::mlir::ROCDL::MatrixFormatAttr; fmtATy fmtA; auto getFmtA() const { auto &propStorage = this->fmtA; return ::llvm::dyn_cast_or_null<::mlir::ROCDL::MatrixFormatAttr>(propStorage); } void setFmtA(const ::mlir::ROCDL::MatrixFormatAttr &propValue) { this->fmtA = propValue; } using fmtBTy = ::mlir::ROCDL::MatrixFormatAttr; fmtBTy fmtB; auto getFmtB() const { auto &propStorage = this->fmtB; return ::llvm::dyn_cast_or_null<::mlir::ROCDL::MatrixFormatAttr>(propStorage); } void setFmtB(const ::mlir::ROCDL::MatrixFormatAttr &propValue) { this->fmtB = propValue; } using fmtScaleATy = ::mlir::ROCDL::WMMAMatrixScaleFormatAttr; fmtScaleATy fmtScaleA; auto getFmtScaleA() const { auto &propStorage = this->fmtScaleA; return ::llvm::dyn_cast_or_null<::mlir::ROCDL::WMMAMatrixScaleFormatAttr>(propStorage); } void setFmtScaleA(const ::mlir::ROCDL::WMMAMatrixScaleFormatAttr &propValue) { this->fmtScaleA = propValue; } using fmtScaleBTy = ::mlir::ROCDL::WMMAMatrixScaleFormatAttr; fmtScaleBTy fmtScaleB; auto getFmtScaleB() const { auto &propStorage = this->fmtScaleB; return ::llvm::dyn_cast_or_null<::mlir::ROCDL::WMMAMatrixScaleFormatAttr>(propStorage); } void setFmtScaleB(const ::mlir::ROCDL::WMMAMatrixScaleFormatAttr &propValue) { this->fmtScaleB = propValue; } using modCTy = ::mlir::ROCDL::WMMACModifierAttr; modCTy modC; auto getModC() const { auto &propStorage = this->modC; return ::llvm::dyn_cast_or_null<::mlir::ROCDL::WMMACModifierAttr>(propStorage); } void setModC(const ::mlir::ROCDL::WMMACModifierAttr &propValue) { this->modC = propValue; } using reuseATy = ::mlir::IntegerAttr; reuseATy reuseA; auto getReuseA() const { auto &propStorage = this->reuseA; return ::llvm::dyn_cast_or_null<::mlir::IntegerAttr>(propStorage); } void setReuseA(const ::mlir::IntegerAttr &propValue) { this->reuseA = propValue; } using reuseBTy = ::mlir::IntegerAttr; reuseBTy reuseB; auto getReuseB() const { auto &propStorage = this->reuseB; return ::llvm::dyn_cast_or_null<::mlir::IntegerAttr>(propStorage); } void setReuseB(const ::mlir::IntegerAttr &propValue) { this->reuseB = propValue; } using scaleATypeTy = ::mlir::ROCDL::WMMAMatrixScaleAttr; scaleATypeTy scaleAType; auto getScaleAType() const { auto &propStorage = this->scaleAType; return ::llvm::dyn_cast_or_null<::mlir::ROCDL::WMMAMatrixScaleAttr>(propStorage); } void setScaleAType(const ::mlir::ROCDL::WMMAMatrixScaleAttr &propValue) { this->scaleAType = propValue; } using scaleBTypeTy = ::mlir::ROCDL::WMMAMatrixScaleAttr; scaleBTypeTy scaleBType; auto getScaleBType() const { auto &propStorage = this->scaleBType; return ::llvm::dyn_cast_or_null<::mlir::ROCDL::WMMAMatrixScaleAttr>(propStorage); } void setScaleBType(const ::mlir::ROCDL::WMMAMatrixScaleAttr &propValue) { this->scaleBType = propValue; } bool operator==(const Properties &rhs) const { return rhs.fmtA == this->fmtA && rhs.fmtB == this->fmtB && rhs.fmtScaleA == this->fmtScaleA && rhs.fmtScaleB == this->fmtScaleB && rhs.modC == this->modC && rhs.reuseA == this->reuseA && rhs.reuseB == this->reuseB && rhs.scaleAType == this->scaleAType && rhs.scaleBType == this->scaleBType && true; } bool operator!=(const Properties &rhs) const { return !(*this == rhs); } }; protected: ::mlir::DictionaryAttr odsAttrs; ::std::optional<::mlir::OperationName> odsOpName; Properties properties; ::mlir::RegionRange odsRegions; public: wmma_scale_f32_16x16x128_f8f6f4GenericAdaptorBase(::mlir::DictionaryAttr attrs, const Properties &properties, ::mlir::RegionRange regions = {}) : odsAttrs(attrs), properties(properties), odsRegions(regions) { if (odsAttrs) odsOpName.emplace("rocdl.wmma.scale.f32.16x16x128.f8f6f4", odsAttrs.getContext()); } wmma_scale_f32_16x16x128_f8f6f4GenericAdaptorBase(wmma_scale_f32_16x16x128_f8f6f4 op); std::pair getODSOperandIndexAndLength(unsigned index, unsigned odsOperandsSize) { return {index, 1}; } const Properties &getProperties() { return properties; } ::mlir::DictionaryAttr getAttributes() { return odsAttrs; } ::mlir::ROCDL::MatrixFormatAttr getFmtAAttr(); ::mlir::ROCDL::MatrixFormat getFmtA(); ::mlir::ROCDL::MatrixFormatAttr getFmtBAttr(); ::mlir::ROCDL::MatrixFormat getFmtB(); ::mlir::ROCDL::WMMACModifierAttr getModCAttr(); ::mlir::ROCDL::WMMACModifier getModC(); ::mlir::ROCDL::WMMAMatrixScaleAttr getScaleATypeAttr(); ::mlir::ROCDL::WMMAMatrixScale getScaleAType(); ::mlir::ROCDL::WMMAMatrixScaleFormatAttr getFmtScaleAAttr(); ::mlir::ROCDL::WMMAMatrixScaleFormat getFmtScaleA(); ::mlir::ROCDL::WMMAMatrixScaleAttr getScaleBTypeAttr(); ::mlir::ROCDL::WMMAMatrixScale getScaleBType(); ::mlir::ROCDL::WMMAMatrixScaleFormatAttr getFmtScaleBAttr(); ::mlir::ROCDL::WMMAMatrixScaleFormat getFmtScaleB(); ::mlir::IntegerAttr getReuseAAttr(); bool getReuseA(); ::mlir::IntegerAttr getReuseBAttr(); bool getReuseB(); }; } // namespace detail template class wmma_scale_f32_16x16x128_f8f6f4GenericAdaptor : public detail::wmma_scale_f32_16x16x128_f8f6f4GenericAdaptorBase { using ValueT = ::llvm::detail::ValueOfRange; using Base = detail::wmma_scale_f32_16x16x128_f8f6f4GenericAdaptorBase; static constexpr int odsIndex_a = 0; static constexpr int odsIndex_b = 1; static constexpr int odsIndex_c = 2; static constexpr int odsIndex_scaleA = 3; static constexpr int odsIndex_scaleB = 4; public: wmma_scale_f32_16x16x128_f8f6f4GenericAdaptor(RangeT values, ::mlir::DictionaryAttr attrs, const Properties &properties, ::mlir::RegionRange regions = {}) : Base(attrs, properties, regions), odsOperands(values) {} wmma_scale_f32_16x16x128_f8f6f4GenericAdaptor(RangeT values, ::mlir::DictionaryAttr attrs, ::mlir::PropertyRef properties, ::mlir::RegionRange regions = {}) : wmma_scale_f32_16x16x128_f8f6f4GenericAdaptor(values, attrs, (properties ? *properties.as() : Properties{}), regions) {} wmma_scale_f32_16x16x128_f8f6f4GenericAdaptor(RangeT values, ::mlir::DictionaryAttr attrs = nullptr) : wmma_scale_f32_16x16x128_f8f6f4GenericAdaptor(values, attrs, Properties{}, {}) {} wmma_scale_f32_16x16x128_f8f6f4GenericAdaptor(RangeT values, const wmma_scale_f32_16x16x128_f8f6f4GenericAdaptorBase &base) : Base(base), odsOperands(values) {} template >> wmma_scale_f32_16x16x128_f8f6f4GenericAdaptor(RangeT values, LateInst op) : Base(op), odsOperands(values) {} std::pair getODSOperandIndexAndLength(unsigned index) { return Base::getODSOperandIndexAndLength(index, odsOperands.size()); } RangeT getODSOperands(unsigned index) { auto valueRange = getODSOperandIndexAndLength(index); return {std::next(odsOperands.begin(), valueRange.first), std::next(odsOperands.begin(), valueRange.first + valueRange.second)}; } ValueT getA() { return (*getODSOperands(0).begin()); } ValueT getB() { return (*getODSOperands(1).begin()); } ValueT getC() { return (*getODSOperands(2).begin()); } ValueT getScaleA() { return (*getODSOperands(3).begin()); } ValueT getScaleB() { return (*getODSOperands(4).begin()); } RangeT getOperands() { return odsOperands; } private: RangeT odsOperands; }; class wmma_scale_f32_16x16x128_f8f6f4Adaptor : public wmma_scale_f32_16x16x128_f8f6f4GenericAdaptor<::mlir::ValueRange> { public: using wmma_scale_f32_16x16x128_f8f6f4GenericAdaptor::wmma_scale_f32_16x16x128_f8f6f4GenericAdaptor; wmma_scale_f32_16x16x128_f8f6f4Adaptor(wmma_scale_f32_16x16x128_f8f6f4 op); ::llvm::LogicalResult verify(::mlir::Location loc); }; class wmma_scale_f32_16x16x128_f8f6f4 : public ::mlir::Op::Impl, ::mlir::OpTrait::ZeroSuccessors, ::mlir::OpTrait::NOperands<5>::Impl, ::mlir::OpTrait::OpInvariants, ::mlir::BytecodeOpInterface::Trait> { public: using Op::Op; using Op::print; using Adaptor = wmma_scale_f32_16x16x128_f8f6f4Adaptor; template using GenericAdaptor = wmma_scale_f32_16x16x128_f8f6f4GenericAdaptor; using FoldAdaptor = GenericAdaptor<::llvm::ArrayRef<::mlir::Attribute>>; static constexpr int odsIndex_a = 0; static constexpr int odsIndex_b = 1; static constexpr int odsIndex_c = 2; static constexpr int odsIndex_scaleA = 3; static constexpr int odsIndex_scaleB = 4; using Properties = FoldAdaptor::Properties; static ::llvm::ArrayRef<::llvm::StringRef> getAttributeNames() { static ::llvm::StringRef attrNames[] = {::llvm::StringRef("fmtA"), ::llvm::StringRef("fmtB"), ::llvm::StringRef("fmtScaleA"), ::llvm::StringRef("fmtScaleB"), ::llvm::StringRef("modC"), ::llvm::StringRef("reuseA"), ::llvm::StringRef("reuseB"), ::llvm::StringRef("scaleAType"), ::llvm::StringRef("scaleBType")}; return ::llvm::ArrayRef(attrNames); } ::mlir::StringAttr getFmtAAttrName() { return getAttributeNameForIndex(0); } static ::mlir::StringAttr getFmtAAttrName(::mlir::OperationName name) { return getAttributeNameForIndex(name, 0); } ::mlir::StringAttr getFmtBAttrName() { return getAttributeNameForIndex(1); } static ::mlir::StringAttr getFmtBAttrName(::mlir::OperationName name) { return getAttributeNameForIndex(name, 1); } ::mlir::StringAttr getFmtScaleAAttrName() { return getAttributeNameForIndex(2); } static ::mlir::StringAttr getFmtScaleAAttrName(::mlir::OperationName name) { return getAttributeNameForIndex(name, 2); } ::mlir::StringAttr getFmtScaleBAttrName() { return getAttributeNameForIndex(3); } static ::mlir::StringAttr getFmtScaleBAttrName(::mlir::OperationName name) { return getAttributeNameForIndex(name, 3); } ::mlir::StringAttr getModCAttrName() { return getAttributeNameForIndex(4); } static ::mlir::StringAttr getModCAttrName(::mlir::OperationName name) { return getAttributeNameForIndex(name, 4); } ::mlir::StringAttr getReuseAAttrName() { return getAttributeNameForIndex(5); } static ::mlir::StringAttr getReuseAAttrName(::mlir::OperationName name) { return getAttributeNameForIndex(name, 5); } ::mlir::StringAttr getReuseBAttrName() { return getAttributeNameForIndex(6); } static ::mlir::StringAttr getReuseBAttrName(::mlir::OperationName name) { return getAttributeNameForIndex(name, 6); } ::mlir::StringAttr getScaleATypeAttrName() { return getAttributeNameForIndex(7); } static ::mlir::StringAttr getScaleATypeAttrName(::mlir::OperationName name) { return getAttributeNameForIndex(name, 7); } ::mlir::StringAttr getScaleBTypeAttrName() { return getAttributeNameForIndex(8); } static ::mlir::StringAttr getScaleBTypeAttrName(::mlir::OperationName name) { return getAttributeNameForIndex(name, 8); } static constexpr ::llvm::StringLiteral getOperationName() { return ::llvm::StringLiteral("rocdl.wmma.scale.f32.16x16x128.f8f6f4"); } std::pair getODSOperandIndexAndLength(unsigned index) { return {index, 1}; } ::mlir::Operation::operand_range getODSOperands(unsigned index) { auto valueRange = getODSOperandIndexAndLength(index); return {std::next(getOperation()->operand_begin(), valueRange.first), std::next(getOperation()->operand_begin(), valueRange.first + valueRange.second)}; } ::mlir::TypedValue<::mlir::Type> getA() { return ::llvm::cast<::mlir::TypedValue<::mlir::Type>>(*getODSOperands(0).begin()); } ::mlir::TypedValue<::mlir::Type> getB() { return ::llvm::cast<::mlir::TypedValue<::mlir::Type>>(*getODSOperands(1).begin()); } ::mlir::TypedValue<::mlir::Type> getC() { return ::llvm::cast<::mlir::TypedValue<::mlir::Type>>(*getODSOperands(2).begin()); } ::mlir::TypedValue<::mlir::IntegerType> getScaleA() { return ::llvm::cast<::mlir::TypedValue<::mlir::IntegerType>>(*getODSOperands(3).begin()); } ::mlir::TypedValue<::mlir::IntegerType> getScaleB() { return ::llvm::cast<::mlir::TypedValue<::mlir::IntegerType>>(*getODSOperands(4).begin()); } ::mlir::OpOperand &getAMutable() { auto range = getODSOperandIndexAndLength(0); return getOperation()->getOpOperand(range.first); } ::mlir::OpOperand &getBMutable() { auto range = getODSOperandIndexAndLength(1); return getOperation()->getOpOperand(range.first); } ::mlir::OpOperand &getCMutable() { auto range = getODSOperandIndexAndLength(2); return getOperation()->getOpOperand(range.first); } ::mlir::OpOperand &getScaleAMutable() { auto range = getODSOperandIndexAndLength(3); return getOperation()->getOpOperand(range.first); } ::mlir::OpOperand &getScaleBMutable() { auto range = getODSOperandIndexAndLength(4); return getOperation()->getOpOperand(range.first); } std::pair getODSResultIndexAndLength(unsigned index) { return {index, 1}; } ::mlir::Operation::result_range getODSResults(unsigned index) { auto valueRange = getODSResultIndexAndLength(index); return {std::next(getOperation()->result_begin(), valueRange.first), std::next(getOperation()->result_begin(), valueRange.first + valueRange.second)}; } ::mlir::TypedValue<::mlir::Type> getRes() { return ::llvm::cast<::mlir::TypedValue<::mlir::Type>>(*getODSResults(0).begin()); } static ::llvm::LogicalResult setPropertiesFromAttr(Properties &prop, ::mlir::Attribute attr, ::llvm::function_ref<::mlir::InFlightDiagnostic()> emitError); static ::mlir::Attribute getPropertiesAsAttr(::mlir::MLIRContext *ctx, const Properties &prop); static llvm::hash_code computePropertiesHash(const Properties &prop); static std::optional getInherentAttr(::mlir::MLIRContext *ctx, const Properties &prop, llvm::StringRef name); static void setInherentAttr(Properties &prop, llvm::StringRef name, mlir::Attribute value); static void populateInherentAttrs(::mlir::MLIRContext *ctx, const Properties &prop, ::mlir::NamedAttrList &attrs); static ::llvm::LogicalResult verifyInherentAttrs(::mlir::OperationName opName, ::mlir::NamedAttrList &attrs, llvm::function_ref<::mlir::InFlightDiagnostic()> emitError); static ::llvm::LogicalResult readProperties(::mlir::DialectBytecodeReader &reader, ::mlir::OperationState &state); void writeProperties(::mlir::DialectBytecodeWriter &writer); ::mlir::ROCDL::MatrixFormatAttr getFmtAAttr() { return ::llvm::dyn_cast_or_null<::mlir::ROCDL::MatrixFormatAttr>(getProperties().fmtA); } ::mlir::ROCDL::MatrixFormat getFmtA(); ::mlir::ROCDL::MatrixFormatAttr getFmtBAttr() { return ::llvm::dyn_cast_or_null<::mlir::ROCDL::MatrixFormatAttr>(getProperties().fmtB); } ::mlir::ROCDL::MatrixFormat getFmtB(); ::mlir::ROCDL::WMMACModifierAttr getModCAttr() { return ::llvm::dyn_cast_or_null<::mlir::ROCDL::WMMACModifierAttr>(getProperties().modC); } ::mlir::ROCDL::WMMACModifier getModC(); ::mlir::ROCDL::WMMAMatrixScaleAttr getScaleATypeAttr() { return ::llvm::dyn_cast_or_null<::mlir::ROCDL::WMMAMatrixScaleAttr>(getProperties().scaleAType); } ::mlir::ROCDL::WMMAMatrixScale getScaleAType(); ::mlir::ROCDL::WMMAMatrixScaleFormatAttr getFmtScaleAAttr() { return ::llvm::dyn_cast_or_null<::mlir::ROCDL::WMMAMatrixScaleFormatAttr>(getProperties().fmtScaleA); } ::mlir::ROCDL::WMMAMatrixScaleFormat getFmtScaleA(); ::mlir::ROCDL::WMMAMatrixScaleAttr getScaleBTypeAttr() { return ::llvm::dyn_cast_or_null<::mlir::ROCDL::WMMAMatrixScaleAttr>(getProperties().scaleBType); } ::mlir::ROCDL::WMMAMatrixScale getScaleBType(); ::mlir::ROCDL::WMMAMatrixScaleFormatAttr getFmtScaleBAttr() { return ::llvm::dyn_cast_or_null<::mlir::ROCDL::WMMAMatrixScaleFormatAttr>(getProperties().fmtScaleB); } ::mlir::ROCDL::WMMAMatrixScaleFormat getFmtScaleB(); ::mlir::IntegerAttr getReuseAAttr() { return ::llvm::dyn_cast_or_null<::mlir::IntegerAttr>(getProperties().reuseA); } bool getReuseA(); ::mlir::IntegerAttr getReuseBAttr() { return ::llvm::dyn_cast_or_null<::mlir::IntegerAttr>(getProperties().reuseB); } bool getReuseB(); void setFmtAAttr(::mlir::ROCDL::MatrixFormatAttr attr) { getProperties().fmtA = attr; } void setFmtA(::mlir::ROCDL::MatrixFormat attrValue); void setFmtBAttr(::mlir::ROCDL::MatrixFormatAttr attr) { getProperties().fmtB = attr; } void setFmtB(::mlir::ROCDL::MatrixFormat attrValue); void setModCAttr(::mlir::ROCDL::WMMACModifierAttr attr) { getProperties().modC = attr; } void setModC(::mlir::ROCDL::WMMACModifier attrValue); void setScaleATypeAttr(::mlir::ROCDL::WMMAMatrixScaleAttr attr) { getProperties().scaleAType = attr; } void setScaleAType(::mlir::ROCDL::WMMAMatrixScale attrValue); void setFmtScaleAAttr(::mlir::ROCDL::WMMAMatrixScaleFormatAttr attr) { getProperties().fmtScaleA = attr; } void setFmtScaleA(::mlir::ROCDL::WMMAMatrixScaleFormat attrValue); void setScaleBTypeAttr(::mlir::ROCDL::WMMAMatrixScaleAttr attr) { getProperties().scaleBType = attr; } void setScaleBType(::mlir::ROCDL::WMMAMatrixScale attrValue); void setFmtScaleBAttr(::mlir::ROCDL::WMMAMatrixScaleFormatAttr attr) { getProperties().fmtScaleB = attr; } void setFmtScaleB(::mlir::ROCDL::WMMAMatrixScaleFormat attrValue); void setReuseAAttr(::mlir::IntegerAttr attr) { getProperties().reuseA = attr; } void setReuseA(bool attrValue); void setReuseBAttr(::mlir::IntegerAttr attr) { getProperties().reuseB = attr; } void setReuseB(bool attrValue); static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::Type res, ::mlir::ROCDL::MatrixFormatAttr fmtA, ::mlir::Value a, ::mlir::ROCDL::MatrixFormatAttr fmtB, ::mlir::Value b, ::mlir::ROCDL::WMMACModifierAttr modC, ::mlir::Value c, ::mlir::ROCDL::WMMAMatrixScaleAttr scaleAType, ::mlir::ROCDL::WMMAMatrixScaleFormatAttr fmtScaleA, ::mlir::Value scaleA, ::mlir::ROCDL::WMMAMatrixScaleAttr scaleBType, ::mlir::ROCDL::WMMAMatrixScaleFormatAttr fmtScaleB, ::mlir::Value scaleB, ::mlir::IntegerAttr reuseA, ::mlir::IntegerAttr reuseB = nullptr); static wmma_scale_f32_16x16x128_f8f6f4 create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::Type res, ::mlir::ROCDL::MatrixFormatAttr fmtA, ::mlir::Value a, ::mlir::ROCDL::MatrixFormatAttr fmtB, ::mlir::Value b, ::mlir::ROCDL::WMMACModifierAttr modC, ::mlir::Value c, ::mlir::ROCDL::WMMAMatrixScaleAttr scaleAType, ::mlir::ROCDL::WMMAMatrixScaleFormatAttr fmtScaleA, ::mlir::Value scaleA, ::mlir::ROCDL::WMMAMatrixScaleAttr scaleBType, ::mlir::ROCDL::WMMAMatrixScaleFormatAttr fmtScaleB, ::mlir::Value scaleB, ::mlir::IntegerAttr reuseA, ::mlir::IntegerAttr reuseB = nullptr); static wmma_scale_f32_16x16x128_f8f6f4 create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::Type res, ::mlir::ROCDL::MatrixFormatAttr fmtA, ::mlir::Value a, ::mlir::ROCDL::MatrixFormatAttr fmtB, ::mlir::Value b, ::mlir::ROCDL::WMMACModifierAttr modC, ::mlir::Value c, ::mlir::ROCDL::WMMAMatrixScaleAttr scaleAType, ::mlir::ROCDL::WMMAMatrixScaleFormatAttr fmtScaleA, ::mlir::Value scaleA, ::mlir::ROCDL::WMMAMatrixScaleAttr scaleBType, ::mlir::ROCDL::WMMAMatrixScaleFormatAttr fmtScaleB, ::mlir::Value scaleB, ::mlir::IntegerAttr reuseA, ::mlir::IntegerAttr reuseB = nullptr); static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::ROCDL::MatrixFormatAttr fmtA, ::mlir::Value a, ::mlir::ROCDL::MatrixFormatAttr fmtB, ::mlir::Value b, ::mlir::ROCDL::WMMACModifierAttr modC, ::mlir::Value c, ::mlir::ROCDL::WMMAMatrixScaleAttr scaleAType, ::mlir::ROCDL::WMMAMatrixScaleFormatAttr fmtScaleA, ::mlir::Value scaleA, ::mlir::ROCDL::WMMAMatrixScaleAttr scaleBType, ::mlir::ROCDL::WMMAMatrixScaleFormatAttr fmtScaleB, ::mlir::Value scaleB, ::mlir::IntegerAttr reuseA, ::mlir::IntegerAttr reuseB = nullptr); static wmma_scale_f32_16x16x128_f8f6f4 create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::ROCDL::MatrixFormatAttr fmtA, ::mlir::Value a, ::mlir::ROCDL::MatrixFormatAttr fmtB, ::mlir::Value b, ::mlir::ROCDL::WMMACModifierAttr modC, ::mlir::Value c, ::mlir::ROCDL::WMMAMatrixScaleAttr scaleAType, ::mlir::ROCDL::WMMAMatrixScaleFormatAttr fmtScaleA, ::mlir::Value scaleA, ::mlir::ROCDL::WMMAMatrixScaleAttr scaleBType, ::mlir::ROCDL::WMMAMatrixScaleFormatAttr fmtScaleB, ::mlir::Value scaleB, ::mlir::IntegerAttr reuseA, ::mlir::IntegerAttr reuseB = nullptr); static wmma_scale_f32_16x16x128_f8f6f4 create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::ROCDL::MatrixFormatAttr fmtA, ::mlir::Value a, ::mlir::ROCDL::MatrixFormatAttr fmtB, ::mlir::Value b, ::mlir::ROCDL::WMMACModifierAttr modC, ::mlir::Value c, ::mlir::ROCDL::WMMAMatrixScaleAttr scaleAType, ::mlir::ROCDL::WMMAMatrixScaleFormatAttr fmtScaleA, ::mlir::Value scaleA, ::mlir::ROCDL::WMMAMatrixScaleAttr scaleBType, ::mlir::ROCDL::WMMAMatrixScaleFormatAttr fmtScaleB, ::mlir::Value scaleB, ::mlir::IntegerAttr reuseA, ::mlir::IntegerAttr reuseB = nullptr); static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::Type res, ::mlir::ROCDL::MatrixFormat fmtA, ::mlir::Value a, ::mlir::ROCDL::MatrixFormat fmtB, ::mlir::Value b, ::mlir::ROCDL::WMMACModifier modC, ::mlir::Value c, ::mlir::ROCDL::WMMAMatrixScale scaleAType, ::mlir::ROCDL::WMMAMatrixScaleFormat fmtScaleA, ::mlir::Value scaleA, ::mlir::ROCDL::WMMAMatrixScale scaleBType, ::mlir::ROCDL::WMMAMatrixScaleFormat fmtScaleB, ::mlir::Value scaleB, bool reuseA = 0, bool reuseB = 0); static wmma_scale_f32_16x16x128_f8f6f4 create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::Type res, ::mlir::ROCDL::MatrixFormat fmtA, ::mlir::Value a, ::mlir::ROCDL::MatrixFormat fmtB, ::mlir::Value b, ::mlir::ROCDL::WMMACModifier modC, ::mlir::Value c, ::mlir::ROCDL::WMMAMatrixScale scaleAType, ::mlir::ROCDL::WMMAMatrixScaleFormat fmtScaleA, ::mlir::Value scaleA, ::mlir::ROCDL::WMMAMatrixScale scaleBType, ::mlir::ROCDL::WMMAMatrixScaleFormat fmtScaleB, ::mlir::Value scaleB, bool reuseA = 0, bool reuseB = 0); static wmma_scale_f32_16x16x128_f8f6f4 create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::Type res, ::mlir::ROCDL::MatrixFormat fmtA, ::mlir::Value a, ::mlir::ROCDL::MatrixFormat fmtB, ::mlir::Value b, ::mlir::ROCDL::WMMACModifier modC, ::mlir::Value c, ::mlir::ROCDL::WMMAMatrixScale scaleAType, ::mlir::ROCDL::WMMAMatrixScaleFormat fmtScaleA, ::mlir::Value scaleA, ::mlir::ROCDL::WMMAMatrixScale scaleBType, ::mlir::ROCDL::WMMAMatrixScaleFormat fmtScaleB, ::mlir::Value scaleB, bool reuseA = 0, bool reuseB = 0); static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::ROCDL::MatrixFormat fmtA, ::mlir::Value a, ::mlir::ROCDL::MatrixFormat fmtB, ::mlir::Value b, ::mlir::ROCDL::WMMACModifier modC, ::mlir::Value c, ::mlir::ROCDL::WMMAMatrixScale scaleAType, ::mlir::ROCDL::WMMAMatrixScaleFormat fmtScaleA, ::mlir::Value scaleA, ::mlir::ROCDL::WMMAMatrixScale scaleBType, ::mlir::ROCDL::WMMAMatrixScaleFormat fmtScaleB, ::mlir::Value scaleB, bool reuseA = 0, bool reuseB = 0); static wmma_scale_f32_16x16x128_f8f6f4 create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::ROCDL::MatrixFormat fmtA, ::mlir::Value a, ::mlir::ROCDL::MatrixFormat fmtB, ::mlir::Value b, ::mlir::ROCDL::WMMACModifier modC, ::mlir::Value c, ::mlir::ROCDL::WMMAMatrixScale scaleAType, ::mlir::ROCDL::WMMAMatrixScaleFormat fmtScaleA, ::mlir::Value scaleA, ::mlir::ROCDL::WMMAMatrixScale scaleBType, ::mlir::ROCDL::WMMAMatrixScaleFormat fmtScaleB, ::mlir::Value scaleB, bool reuseA = 0, bool reuseB = 0); static wmma_scale_f32_16x16x128_f8f6f4 create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::ROCDL::MatrixFormat fmtA, ::mlir::Value a, ::mlir::ROCDL::MatrixFormat fmtB, ::mlir::Value b, ::mlir::ROCDL::WMMACModifier modC, ::mlir::Value c, ::mlir::ROCDL::WMMAMatrixScale scaleAType, ::mlir::ROCDL::WMMAMatrixScaleFormat fmtScaleA, ::mlir::Value scaleA, ::mlir::ROCDL::WMMAMatrixScale scaleBType, ::mlir::ROCDL::WMMAMatrixScaleFormat fmtScaleB, ::mlir::Value scaleB, bool reuseA = 0, bool reuseB = 0); static void build(::mlir::OpBuilder &, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, ::llvm::ArrayRef<::mlir::NamedAttribute> attributes = {}); static wmma_scale_f32_16x16x128_f8f6f4 create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, ::llvm::ArrayRef<::mlir::NamedAttribute> attributes = {}); static wmma_scale_f32_16x16x128_f8f6f4 create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, ::llvm::ArrayRef<::mlir::NamedAttribute> attributes = {}); static void build(::mlir::OpBuilder &, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, const Properties &properties, ::llvm::ArrayRef<::mlir::NamedAttribute> discardableAttributes = {}); static wmma_scale_f32_16x16x128_f8f6f4 create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, const Properties &properties, ::llvm::ArrayRef<::mlir::NamedAttribute> discardableAttributes = {}); static wmma_scale_f32_16x16x128_f8f6f4 create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, const Properties &properties, ::llvm::ArrayRef<::mlir::NamedAttribute> discardableAttributes = {}); static void populateDefaultProperties(::mlir::OperationName opName, Properties &properties); ::llvm::LogicalResult verifyInvariantsImpl(); ::llvm::LogicalResult verifyInvariants(); static ::mlir::ParseResult parse(::mlir::OpAsmParser &parser, ::mlir::OperationState &result); void print(::mlir::OpAsmPrinter &_odsPrinter); private: ::mlir::StringAttr getAttributeNameForIndex(unsigned index) { return getAttributeNameForIndex((*this)->getName(), index); } static ::mlir::StringAttr getAttributeNameForIndex(::mlir::OperationName name, unsigned index) { assert(index < 9 && "invalid attribute index"); assert(name.getStringRef() == getOperationName() && "invalid operation name"); assert(name.isRegistered() && "Operation isn't registered, missing a " "dependent dialect loading?"); return name.getAttributeNames()[index]; } public: }; } // namespace mlir::ROCDL MLIR_DECLARE_EXPLICIT_TYPE_ID(::mlir::ROCDL::wmma_scale_f32_16x16x128_f8f6f4) MLIR_DECLARE_EXPLICIT_TYPE_ID(::mlir::ROCDL::detail::wmma_scale_f32_16x16x128_f8f6f4GenericAdaptorBase::Properties) namespace mlir::ROCDL { //===----------------------------------------------------------------------===// // ::mlir::ROCDL::wmma_scale_f32_32x16x128_f4 declarations //===----------------------------------------------------------------------===// namespace detail { class wmma_scale_f32_32x16x128_f4GenericAdaptorBase { public: struct Properties { using fmtScaleATy = ::mlir::ROCDL::WMMAMatrixScaleFormatAttr; fmtScaleATy fmtScaleA; auto getFmtScaleA() const { auto &propStorage = this->fmtScaleA; return ::llvm::dyn_cast_or_null<::mlir::ROCDL::WMMAMatrixScaleFormatAttr>(propStorage); } void setFmtScaleA(const ::mlir::ROCDL::WMMAMatrixScaleFormatAttr &propValue) { this->fmtScaleA = propValue; } using fmtScaleBTy = ::mlir::ROCDL::WMMAMatrixScaleFormatAttr; fmtScaleBTy fmtScaleB; auto getFmtScaleB() const { auto &propStorage = this->fmtScaleB; return ::llvm::dyn_cast_or_null<::mlir::ROCDL::WMMAMatrixScaleFormatAttr>(propStorage); } void setFmtScaleB(const ::mlir::ROCDL::WMMAMatrixScaleFormatAttr &propValue) { this->fmtScaleB = propValue; } using modCTy = ::mlir::ROCDL::WMMACModifierAttr; modCTy modC; auto getModC() const { auto &propStorage = this->modC; return ::llvm::dyn_cast_or_null<::mlir::ROCDL::WMMACModifierAttr>(propStorage); } void setModC(const ::mlir::ROCDL::WMMACModifierAttr &propValue) { this->modC = propValue; } using reuseATy = ::mlir::IntegerAttr; reuseATy reuseA; auto getReuseA() const { auto &propStorage = this->reuseA; return ::llvm::dyn_cast_or_null<::mlir::IntegerAttr>(propStorage); } void setReuseA(const ::mlir::IntegerAttr &propValue) { this->reuseA = propValue; } using reuseBTy = ::mlir::IntegerAttr; reuseBTy reuseB; auto getReuseB() const { auto &propStorage = this->reuseB; return ::llvm::dyn_cast_or_null<::mlir::IntegerAttr>(propStorage); } void setReuseB(const ::mlir::IntegerAttr &propValue) { this->reuseB = propValue; } using scaleATypeTy = ::mlir::ROCDL::WMMAMatrixScaleAttr; scaleATypeTy scaleAType; auto getScaleAType() const { auto &propStorage = this->scaleAType; return ::llvm::dyn_cast_or_null<::mlir::ROCDL::WMMAMatrixScaleAttr>(propStorage); } void setScaleAType(const ::mlir::ROCDL::WMMAMatrixScaleAttr &propValue) { this->scaleAType = propValue; } using scaleBTypeTy = ::mlir::ROCDL::WMMAMatrixScaleAttr; scaleBTypeTy scaleBType; auto getScaleBType() const { auto &propStorage = this->scaleBType; return ::llvm::dyn_cast_or_null<::mlir::ROCDL::WMMAMatrixScaleAttr>(propStorage); } void setScaleBType(const ::mlir::ROCDL::WMMAMatrixScaleAttr &propValue) { this->scaleBType = propValue; } bool operator==(const Properties &rhs) const { return rhs.fmtScaleA == this->fmtScaleA && rhs.fmtScaleB == this->fmtScaleB && rhs.modC == this->modC && rhs.reuseA == this->reuseA && rhs.reuseB == this->reuseB && rhs.scaleAType == this->scaleAType && rhs.scaleBType == this->scaleBType && true; } bool operator!=(const Properties &rhs) const { return !(*this == rhs); } }; protected: ::mlir::DictionaryAttr odsAttrs; ::std::optional<::mlir::OperationName> odsOpName; Properties properties; ::mlir::RegionRange odsRegions; public: wmma_scale_f32_32x16x128_f4GenericAdaptorBase(::mlir::DictionaryAttr attrs, const Properties &properties, ::mlir::RegionRange regions = {}) : odsAttrs(attrs), properties(properties), odsRegions(regions) { if (odsAttrs) odsOpName.emplace("rocdl.wmma.scale.f32.32x16x128.f4", odsAttrs.getContext()); } wmma_scale_f32_32x16x128_f4GenericAdaptorBase(wmma_scale_f32_32x16x128_f4 op); std::pair getODSOperandIndexAndLength(unsigned index, unsigned odsOperandsSize) { return {index, 1}; } const Properties &getProperties() { return properties; } ::mlir::DictionaryAttr getAttributes() { return odsAttrs; } ::mlir::ROCDL::WMMACModifierAttr getModCAttr(); ::mlir::ROCDL::WMMACModifier getModC(); ::mlir::ROCDL::WMMAMatrixScaleAttr getScaleATypeAttr(); ::mlir::ROCDL::WMMAMatrixScale getScaleAType(); ::mlir::ROCDL::WMMAMatrixScaleFormatAttr getFmtScaleAAttr(); ::mlir::ROCDL::WMMAMatrixScaleFormat getFmtScaleA(); ::mlir::ROCDL::WMMAMatrixScaleAttr getScaleBTypeAttr(); ::mlir::ROCDL::WMMAMatrixScale getScaleBType(); ::mlir::ROCDL::WMMAMatrixScaleFormatAttr getFmtScaleBAttr(); ::mlir::ROCDL::WMMAMatrixScaleFormat getFmtScaleB(); ::mlir::IntegerAttr getReuseAAttr(); bool getReuseA(); ::mlir::IntegerAttr getReuseBAttr(); bool getReuseB(); }; } // namespace detail template class wmma_scale_f32_32x16x128_f4GenericAdaptor : public detail::wmma_scale_f32_32x16x128_f4GenericAdaptorBase { using ValueT = ::llvm::detail::ValueOfRange; using Base = detail::wmma_scale_f32_32x16x128_f4GenericAdaptorBase; static constexpr int odsIndex_a = 0; static constexpr int odsIndex_b = 1; static constexpr int odsIndex_c = 2; static constexpr int odsIndex_scaleA = 3; static constexpr int odsIndex_scaleB = 4; public: wmma_scale_f32_32x16x128_f4GenericAdaptor(RangeT values, ::mlir::DictionaryAttr attrs, const Properties &properties, ::mlir::RegionRange regions = {}) : Base(attrs, properties, regions), odsOperands(values) {} wmma_scale_f32_32x16x128_f4GenericAdaptor(RangeT values, ::mlir::DictionaryAttr attrs, ::mlir::PropertyRef properties, ::mlir::RegionRange regions = {}) : wmma_scale_f32_32x16x128_f4GenericAdaptor(values, attrs, (properties ? *properties.as() : Properties{}), regions) {} wmma_scale_f32_32x16x128_f4GenericAdaptor(RangeT values, ::mlir::DictionaryAttr attrs = nullptr) : wmma_scale_f32_32x16x128_f4GenericAdaptor(values, attrs, Properties{}, {}) {} wmma_scale_f32_32x16x128_f4GenericAdaptor(RangeT values, const wmma_scale_f32_32x16x128_f4GenericAdaptorBase &base) : Base(base), odsOperands(values) {} template >> wmma_scale_f32_32x16x128_f4GenericAdaptor(RangeT values, LateInst op) : Base(op), odsOperands(values) {} std::pair getODSOperandIndexAndLength(unsigned index) { return Base::getODSOperandIndexAndLength(index, odsOperands.size()); } RangeT getODSOperands(unsigned index) { auto valueRange = getODSOperandIndexAndLength(index); return {std::next(odsOperands.begin(), valueRange.first), std::next(odsOperands.begin(), valueRange.first + valueRange.second)}; } ValueT getA() { return (*getODSOperands(0).begin()); } ValueT getB() { return (*getODSOperands(1).begin()); } ValueT getC() { return (*getODSOperands(2).begin()); } ValueT getScaleA() { return (*getODSOperands(3).begin()); } ValueT getScaleB() { return (*getODSOperands(4).begin()); } RangeT getOperands() { return odsOperands; } private: RangeT odsOperands; }; class wmma_scale_f32_32x16x128_f4Adaptor : public wmma_scale_f32_32x16x128_f4GenericAdaptor<::mlir::ValueRange> { public: using wmma_scale_f32_32x16x128_f4GenericAdaptor::wmma_scale_f32_32x16x128_f4GenericAdaptor; wmma_scale_f32_32x16x128_f4Adaptor(wmma_scale_f32_32x16x128_f4 op); ::llvm::LogicalResult verify(::mlir::Location loc); }; class wmma_scale_f32_32x16x128_f4 : public ::mlir::Op::Impl, ::mlir::OpTrait::ZeroSuccessors, ::mlir::OpTrait::NOperands<5>::Impl, ::mlir::OpTrait::OpInvariants, ::mlir::BytecodeOpInterface::Trait> { public: using Op::Op; using Op::print; using Adaptor = wmma_scale_f32_32x16x128_f4Adaptor; template using GenericAdaptor = wmma_scale_f32_32x16x128_f4GenericAdaptor; using FoldAdaptor = GenericAdaptor<::llvm::ArrayRef<::mlir::Attribute>>; static constexpr int odsIndex_a = 0; static constexpr int odsIndex_b = 1; static constexpr int odsIndex_c = 2; static constexpr int odsIndex_scaleA = 3; static constexpr int odsIndex_scaleB = 4; using Properties = FoldAdaptor::Properties; static ::llvm::ArrayRef<::llvm::StringRef> getAttributeNames() { static ::llvm::StringRef attrNames[] = {::llvm::StringRef("fmtScaleA"), ::llvm::StringRef("fmtScaleB"), ::llvm::StringRef("modC"), ::llvm::StringRef("reuseA"), ::llvm::StringRef("reuseB"), ::llvm::StringRef("scaleAType"), ::llvm::StringRef("scaleBType")}; return ::llvm::ArrayRef(attrNames); } ::mlir::StringAttr getFmtScaleAAttrName() { return getAttributeNameForIndex(0); } static ::mlir::StringAttr getFmtScaleAAttrName(::mlir::OperationName name) { return getAttributeNameForIndex(name, 0); } ::mlir::StringAttr getFmtScaleBAttrName() { return getAttributeNameForIndex(1); } static ::mlir::StringAttr getFmtScaleBAttrName(::mlir::OperationName name) { return getAttributeNameForIndex(name, 1); } ::mlir::StringAttr getModCAttrName() { return getAttributeNameForIndex(2); } static ::mlir::StringAttr getModCAttrName(::mlir::OperationName name) { return getAttributeNameForIndex(name, 2); } ::mlir::StringAttr getReuseAAttrName() { return getAttributeNameForIndex(3); } static ::mlir::StringAttr getReuseAAttrName(::mlir::OperationName name) { return getAttributeNameForIndex(name, 3); } ::mlir::StringAttr getReuseBAttrName() { return getAttributeNameForIndex(4); } static ::mlir::StringAttr getReuseBAttrName(::mlir::OperationName name) { return getAttributeNameForIndex(name, 4); } ::mlir::StringAttr getScaleATypeAttrName() { return getAttributeNameForIndex(5); } static ::mlir::StringAttr getScaleATypeAttrName(::mlir::OperationName name) { return getAttributeNameForIndex(name, 5); } ::mlir::StringAttr getScaleBTypeAttrName() { return getAttributeNameForIndex(6); } static ::mlir::StringAttr getScaleBTypeAttrName(::mlir::OperationName name) { return getAttributeNameForIndex(name, 6); } static constexpr ::llvm::StringLiteral getOperationName() { return ::llvm::StringLiteral("rocdl.wmma.scale.f32.32x16x128.f4"); } std::pair getODSOperandIndexAndLength(unsigned index) { return {index, 1}; } ::mlir::Operation::operand_range getODSOperands(unsigned index) { auto valueRange = getODSOperandIndexAndLength(index); return {std::next(getOperation()->operand_begin(), valueRange.first), std::next(getOperation()->operand_begin(), valueRange.first + valueRange.second)}; } ::mlir::TypedValue<::mlir::Type> getA() { return ::llvm::cast<::mlir::TypedValue<::mlir::Type>>(*getODSOperands(0).begin()); } ::mlir::TypedValue<::mlir::Type> getB() { return ::llvm::cast<::mlir::TypedValue<::mlir::Type>>(*getODSOperands(1).begin()); } ::mlir::TypedValue<::mlir::Type> getC() { return ::llvm::cast<::mlir::TypedValue<::mlir::Type>>(*getODSOperands(2).begin()); } ::mlir::TypedValue<::mlir::IntegerType> getScaleA() { return ::llvm::cast<::mlir::TypedValue<::mlir::IntegerType>>(*getODSOperands(3).begin()); } ::mlir::TypedValue<::mlir::IntegerType> getScaleB() { return ::llvm::cast<::mlir::TypedValue<::mlir::IntegerType>>(*getODSOperands(4).begin()); } ::mlir::OpOperand &getAMutable() { auto range = getODSOperandIndexAndLength(0); return getOperation()->getOpOperand(range.first); } ::mlir::OpOperand &getBMutable() { auto range = getODSOperandIndexAndLength(1); return getOperation()->getOpOperand(range.first); } ::mlir::OpOperand &getCMutable() { auto range = getODSOperandIndexAndLength(2); return getOperation()->getOpOperand(range.first); } ::mlir::OpOperand &getScaleAMutable() { auto range = getODSOperandIndexAndLength(3); return getOperation()->getOpOperand(range.first); } ::mlir::OpOperand &getScaleBMutable() { auto range = getODSOperandIndexAndLength(4); return getOperation()->getOpOperand(range.first); } std::pair getODSResultIndexAndLength(unsigned index) { return {index, 1}; } ::mlir::Operation::result_range getODSResults(unsigned index) { auto valueRange = getODSResultIndexAndLength(index); return {std::next(getOperation()->result_begin(), valueRange.first), std::next(getOperation()->result_begin(), valueRange.first + valueRange.second)}; } ::mlir::TypedValue<::mlir::Type> getRes() { return ::llvm::cast<::mlir::TypedValue<::mlir::Type>>(*getODSResults(0).begin()); } static ::llvm::LogicalResult setPropertiesFromAttr(Properties &prop, ::mlir::Attribute attr, ::llvm::function_ref<::mlir::InFlightDiagnostic()> emitError); static ::mlir::Attribute getPropertiesAsAttr(::mlir::MLIRContext *ctx, const Properties &prop); static llvm::hash_code computePropertiesHash(const Properties &prop); static std::optional getInherentAttr(::mlir::MLIRContext *ctx, const Properties &prop, llvm::StringRef name); static void setInherentAttr(Properties &prop, llvm::StringRef name, mlir::Attribute value); static void populateInherentAttrs(::mlir::MLIRContext *ctx, const Properties &prop, ::mlir::NamedAttrList &attrs); static ::llvm::LogicalResult verifyInherentAttrs(::mlir::OperationName opName, ::mlir::NamedAttrList &attrs, llvm::function_ref<::mlir::InFlightDiagnostic()> emitError); static ::llvm::LogicalResult readProperties(::mlir::DialectBytecodeReader &reader, ::mlir::OperationState &state); void writeProperties(::mlir::DialectBytecodeWriter &writer); ::mlir::ROCDL::WMMACModifierAttr getModCAttr() { return ::llvm::dyn_cast_or_null<::mlir::ROCDL::WMMACModifierAttr>(getProperties().modC); } ::mlir::ROCDL::WMMACModifier getModC(); ::mlir::ROCDL::WMMAMatrixScaleAttr getScaleATypeAttr() { return ::llvm::dyn_cast_or_null<::mlir::ROCDL::WMMAMatrixScaleAttr>(getProperties().scaleAType); } ::mlir::ROCDL::WMMAMatrixScale getScaleAType(); ::mlir::ROCDL::WMMAMatrixScaleFormatAttr getFmtScaleAAttr() { return ::llvm::dyn_cast_or_null<::mlir::ROCDL::WMMAMatrixScaleFormatAttr>(getProperties().fmtScaleA); } ::mlir::ROCDL::WMMAMatrixScaleFormat getFmtScaleA(); ::mlir::ROCDL::WMMAMatrixScaleAttr getScaleBTypeAttr() { return ::llvm::dyn_cast_or_null<::mlir::ROCDL::WMMAMatrixScaleAttr>(getProperties().scaleBType); } ::mlir::ROCDL::WMMAMatrixScale getScaleBType(); ::mlir::ROCDL::WMMAMatrixScaleFormatAttr getFmtScaleBAttr() { return ::llvm::dyn_cast_or_null<::mlir::ROCDL::WMMAMatrixScaleFormatAttr>(getProperties().fmtScaleB); } ::mlir::ROCDL::WMMAMatrixScaleFormat getFmtScaleB(); ::mlir::IntegerAttr getReuseAAttr() { return ::llvm::dyn_cast_or_null<::mlir::IntegerAttr>(getProperties().reuseA); } bool getReuseA(); ::mlir::IntegerAttr getReuseBAttr() { return ::llvm::dyn_cast_or_null<::mlir::IntegerAttr>(getProperties().reuseB); } bool getReuseB(); void setModCAttr(::mlir::ROCDL::WMMACModifierAttr attr) { getProperties().modC = attr; } void setModC(::mlir::ROCDL::WMMACModifier attrValue); void setScaleATypeAttr(::mlir::ROCDL::WMMAMatrixScaleAttr attr) { getProperties().scaleAType = attr; } void setScaleAType(::mlir::ROCDL::WMMAMatrixScale attrValue); void setFmtScaleAAttr(::mlir::ROCDL::WMMAMatrixScaleFormatAttr attr) { getProperties().fmtScaleA = attr; } void setFmtScaleA(::mlir::ROCDL::WMMAMatrixScaleFormat attrValue); void setScaleBTypeAttr(::mlir::ROCDL::WMMAMatrixScaleAttr attr) { getProperties().scaleBType = attr; } void setScaleBType(::mlir::ROCDL::WMMAMatrixScale attrValue); void setFmtScaleBAttr(::mlir::ROCDL::WMMAMatrixScaleFormatAttr attr) { getProperties().fmtScaleB = attr; } void setFmtScaleB(::mlir::ROCDL::WMMAMatrixScaleFormat attrValue); void setReuseAAttr(::mlir::IntegerAttr attr) { getProperties().reuseA = attr; } void setReuseA(bool attrValue); void setReuseBAttr(::mlir::IntegerAttr attr) { getProperties().reuseB = attr; } void setReuseB(bool attrValue); static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::Type res, ::mlir::Value a, ::mlir::Value b, ::mlir::ROCDL::WMMACModifierAttr modC, ::mlir::Value c, ::mlir::ROCDL::WMMAMatrixScaleAttr scaleAType, ::mlir::ROCDL::WMMAMatrixScaleFormatAttr fmtScaleA, ::mlir::Value scaleA, ::mlir::ROCDL::WMMAMatrixScaleAttr scaleBType, ::mlir::ROCDL::WMMAMatrixScaleFormatAttr fmtScaleB, ::mlir::Value scaleB, ::mlir::IntegerAttr reuseA, ::mlir::IntegerAttr reuseB = nullptr); static wmma_scale_f32_32x16x128_f4 create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::Type res, ::mlir::Value a, ::mlir::Value b, ::mlir::ROCDL::WMMACModifierAttr modC, ::mlir::Value c, ::mlir::ROCDL::WMMAMatrixScaleAttr scaleAType, ::mlir::ROCDL::WMMAMatrixScaleFormatAttr fmtScaleA, ::mlir::Value scaleA, ::mlir::ROCDL::WMMAMatrixScaleAttr scaleBType, ::mlir::ROCDL::WMMAMatrixScaleFormatAttr fmtScaleB, ::mlir::Value scaleB, ::mlir::IntegerAttr reuseA, ::mlir::IntegerAttr reuseB = nullptr); static wmma_scale_f32_32x16x128_f4 create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::Type res, ::mlir::Value a, ::mlir::Value b, ::mlir::ROCDL::WMMACModifierAttr modC, ::mlir::Value c, ::mlir::ROCDL::WMMAMatrixScaleAttr scaleAType, ::mlir::ROCDL::WMMAMatrixScaleFormatAttr fmtScaleA, ::mlir::Value scaleA, ::mlir::ROCDL::WMMAMatrixScaleAttr scaleBType, ::mlir::ROCDL::WMMAMatrixScaleFormatAttr fmtScaleB, ::mlir::Value scaleB, ::mlir::IntegerAttr reuseA, ::mlir::IntegerAttr reuseB = nullptr); static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::Value a, ::mlir::Value b, ::mlir::ROCDL::WMMACModifierAttr modC, ::mlir::Value c, ::mlir::ROCDL::WMMAMatrixScaleAttr scaleAType, ::mlir::ROCDL::WMMAMatrixScaleFormatAttr fmtScaleA, ::mlir::Value scaleA, ::mlir::ROCDL::WMMAMatrixScaleAttr scaleBType, ::mlir::ROCDL::WMMAMatrixScaleFormatAttr fmtScaleB, ::mlir::Value scaleB, ::mlir::IntegerAttr reuseA, ::mlir::IntegerAttr reuseB = nullptr); static wmma_scale_f32_32x16x128_f4 create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::Value a, ::mlir::Value b, ::mlir::ROCDL::WMMACModifierAttr modC, ::mlir::Value c, ::mlir::ROCDL::WMMAMatrixScaleAttr scaleAType, ::mlir::ROCDL::WMMAMatrixScaleFormatAttr fmtScaleA, ::mlir::Value scaleA, ::mlir::ROCDL::WMMAMatrixScaleAttr scaleBType, ::mlir::ROCDL::WMMAMatrixScaleFormatAttr fmtScaleB, ::mlir::Value scaleB, ::mlir::IntegerAttr reuseA, ::mlir::IntegerAttr reuseB = nullptr); static wmma_scale_f32_32x16x128_f4 create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::Value a, ::mlir::Value b, ::mlir::ROCDL::WMMACModifierAttr modC, ::mlir::Value c, ::mlir::ROCDL::WMMAMatrixScaleAttr scaleAType, ::mlir::ROCDL::WMMAMatrixScaleFormatAttr fmtScaleA, ::mlir::Value scaleA, ::mlir::ROCDL::WMMAMatrixScaleAttr scaleBType, ::mlir::ROCDL::WMMAMatrixScaleFormatAttr fmtScaleB, ::mlir::Value scaleB, ::mlir::IntegerAttr reuseA, ::mlir::IntegerAttr reuseB = nullptr); static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::Type res, ::mlir::Value a, ::mlir::Value b, ::mlir::ROCDL::WMMACModifier modC, ::mlir::Value c, ::mlir::ROCDL::WMMAMatrixScale scaleAType, ::mlir::ROCDL::WMMAMatrixScaleFormat fmtScaleA, ::mlir::Value scaleA, ::mlir::ROCDL::WMMAMatrixScale scaleBType, ::mlir::ROCDL::WMMAMatrixScaleFormat fmtScaleB, ::mlir::Value scaleB, bool reuseA = 0, bool reuseB = 0); static wmma_scale_f32_32x16x128_f4 create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::Type res, ::mlir::Value a, ::mlir::Value b, ::mlir::ROCDL::WMMACModifier modC, ::mlir::Value c, ::mlir::ROCDL::WMMAMatrixScale scaleAType, ::mlir::ROCDL::WMMAMatrixScaleFormat fmtScaleA, ::mlir::Value scaleA, ::mlir::ROCDL::WMMAMatrixScale scaleBType, ::mlir::ROCDL::WMMAMatrixScaleFormat fmtScaleB, ::mlir::Value scaleB, bool reuseA = 0, bool reuseB = 0); static wmma_scale_f32_32x16x128_f4 create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::Type res, ::mlir::Value a, ::mlir::Value b, ::mlir::ROCDL::WMMACModifier modC, ::mlir::Value c, ::mlir::ROCDL::WMMAMatrixScale scaleAType, ::mlir::ROCDL::WMMAMatrixScaleFormat fmtScaleA, ::mlir::Value scaleA, ::mlir::ROCDL::WMMAMatrixScale scaleBType, ::mlir::ROCDL::WMMAMatrixScaleFormat fmtScaleB, ::mlir::Value scaleB, bool reuseA = 0, bool reuseB = 0); static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::Value a, ::mlir::Value b, ::mlir::ROCDL::WMMACModifier modC, ::mlir::Value c, ::mlir::ROCDL::WMMAMatrixScale scaleAType, ::mlir::ROCDL::WMMAMatrixScaleFormat fmtScaleA, ::mlir::Value scaleA, ::mlir::ROCDL::WMMAMatrixScale scaleBType, ::mlir::ROCDL::WMMAMatrixScaleFormat fmtScaleB, ::mlir::Value scaleB, bool reuseA = 0, bool reuseB = 0); static wmma_scale_f32_32x16x128_f4 create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::Value a, ::mlir::Value b, ::mlir::ROCDL::WMMACModifier modC, ::mlir::Value c, ::mlir::ROCDL::WMMAMatrixScale scaleAType, ::mlir::ROCDL::WMMAMatrixScaleFormat fmtScaleA, ::mlir::Value scaleA, ::mlir::ROCDL::WMMAMatrixScale scaleBType, ::mlir::ROCDL::WMMAMatrixScaleFormat fmtScaleB, ::mlir::Value scaleB, bool reuseA = 0, bool reuseB = 0); static wmma_scale_f32_32x16x128_f4 create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::Value a, ::mlir::Value b, ::mlir::ROCDL::WMMACModifier modC, ::mlir::Value c, ::mlir::ROCDL::WMMAMatrixScale scaleAType, ::mlir::ROCDL::WMMAMatrixScaleFormat fmtScaleA, ::mlir::Value scaleA, ::mlir::ROCDL::WMMAMatrixScale scaleBType, ::mlir::ROCDL::WMMAMatrixScaleFormat fmtScaleB, ::mlir::Value scaleB, bool reuseA = 0, bool reuseB = 0); static void build(::mlir::OpBuilder &, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, ::llvm::ArrayRef<::mlir::NamedAttribute> attributes = {}); static wmma_scale_f32_32x16x128_f4 create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, ::llvm::ArrayRef<::mlir::NamedAttribute> attributes = {}); static wmma_scale_f32_32x16x128_f4 create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, ::llvm::ArrayRef<::mlir::NamedAttribute> attributes = {}); static void build(::mlir::OpBuilder &, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, const Properties &properties, ::llvm::ArrayRef<::mlir::NamedAttribute> discardableAttributes = {}); static wmma_scale_f32_32x16x128_f4 create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, const Properties &properties, ::llvm::ArrayRef<::mlir::NamedAttribute> discardableAttributes = {}); static wmma_scale_f32_32x16x128_f4 create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, const Properties &properties, ::llvm::ArrayRef<::mlir::NamedAttribute> discardableAttributes = {}); static void populateDefaultProperties(::mlir::OperationName opName, Properties &properties); ::llvm::LogicalResult verifyInvariantsImpl(); ::llvm::LogicalResult verifyInvariants(); static ::mlir::ParseResult parse(::mlir::OpAsmParser &parser, ::mlir::OperationState &result); void print(::mlir::OpAsmPrinter &_odsPrinter); private: ::mlir::StringAttr getAttributeNameForIndex(unsigned index) { return getAttributeNameForIndex((*this)->getName(), index); } static ::mlir::StringAttr getAttributeNameForIndex(::mlir::OperationName name, unsigned index) { assert(index < 7 && "invalid attribute index"); assert(name.getStringRef() == getOperationName() && "invalid operation name"); assert(name.isRegistered() && "Operation isn't registered, missing a " "dependent dialect loading?"); return name.getAttributeNames()[index]; } public: }; } // namespace mlir::ROCDL MLIR_DECLARE_EXPLICIT_TYPE_ID(::mlir::ROCDL::wmma_scale_f32_32x16x128_f4) MLIR_DECLARE_EXPLICIT_TYPE_ID(::mlir::ROCDL::detail::wmma_scale_f32_32x16x128_f4GenericAdaptorBase::Properties) #endif // GET_OP_CLASSES