
# Autogenerated by mlir-tblgen; don't manually edit.

from ._ods_common import _cext as _ods_cext
from ._ods_common import (
    equally_sized_accessor as _ods_equally_sized_accessor,
    get_default_loc_context as _ods_get_default_loc_context,
    get_op_results_or_values as _get_op_results_or_values,
    segmented_accessor as _ods_segmented_accessor,
)
_ods_ir = _ods_cext.ir
_ods_cext.globals.register_traceback_file_exclusion(__file__)

import builtins
from typing import Any as _Any, Sequence as _Sequence, Union as _Union, Optional as _Optional
import sys as _sys
if _sys.version_info >= (3, 12):
  from collections.abc import Buffer as _Buffer  # pytype: disable=not-supported-yet
else:
  try:
    from typing_extensions import Buffer as _Buffer
  except ImportError:
    _Buffer = _Any


@_ods_cext.register_dialect
class _Dialect(_ods_ir.Dialect):
  DIALECT_NAMESPACE = "rocdl"

@_ods_cext.register_operation(_Dialect)
class ROCDLCos(_ods_ir.OpView):
  r"""
  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
  ```
  """

  OPERATION_NAME = "rocdl.cos"

  _ODS_REGIONS = (0, True)

  def __init__(self, res: _ods_ir.Type, arg: _ods_ir.Value, *, loc: _Optional[_ods_ir.Location] = None, ip: _Optional[_ods_ir.InsertionPoint] = None):
    operands = []
    attributes = {}
    regions = None
    operands.append(arg)
    _ods_context = _ods_get_default_loc_context(loc)
    results = []
    results.append(res)
    _ods_successors = None
    super().__init__(self.OPERATION_NAME, self._ODS_REGIONS, self._ODS_OPERAND_SEGMENTS, self._ODS_RESULT_SEGMENTS, attributes=attributes, results=results, operands=operands, successors=_ods_successors, regions=regions, loc=loc, ip=ip)

  @builtins.property
  def arg(self) -> _ods_ir.Value:
    return self.operation.operands[0]

  @builtins.property
  def res(self) -> _ods_ir.OpResult:
    return self.operation.results[0]

@_ods_cext.register_op_adaptor(ROCDLCos)
class ROCDLCosAdaptor(_ods_ir.OpAdaptor):
  OPERATION_NAME = "rocdl.cos"

  @builtins.property
  def arg(self) -> _ods_ir.Value:
    return self.operands[0]

def cos(res: _ods_ir.Type, arg: _ods_ir.Value, *, loc: _Optional[_ods_ir.Location] = None, ip: _Optional[_ods_ir.InsertionPoint] = None) -> _ods_ir.OpResult:
  return ROCDLCos(res=res, arg=arg, loc=loc, ip=ip).result

@_ods_cext.register_operation(_Dialect)
class ROCDLExp(_ods_ir.OpView):
  r"""
  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
  ```
  """

  OPERATION_NAME = "rocdl.exp"

  _ODS_REGIONS = (0, True)

  def __init__(self, res: _ods_ir.Type, arg: _ods_ir.Value, *, loc: _Optional[_ods_ir.Location] = None, ip: _Optional[_ods_ir.InsertionPoint] = None):
    operands = []
    attributes = {}
    regions = None
    operands.append(arg)
    _ods_context = _ods_get_default_loc_context(loc)
    results = []
    results.append(res)
    _ods_successors = None
    super().__init__(self.OPERATION_NAME, self._ODS_REGIONS, self._ODS_OPERAND_SEGMENTS, self._ODS_RESULT_SEGMENTS, attributes=attributes, results=results, operands=operands, successors=_ods_successors, regions=regions, loc=loc, ip=ip)

  @builtins.property
  def arg(self) -> _ods_ir.Value:
    return self.operation.operands[0]

  @builtins.property
  def res(self) -> _ods_ir.OpResult:
    return self.operation.results[0]

@_ods_cext.register_op_adaptor(ROCDLExp)
class ROCDLExpAdaptor(_ods_ir.OpAdaptor):
  OPERATION_NAME = "rocdl.exp"

  @builtins.property
  def arg(self) -> _ods_ir.Value:
    return self.operands[0]

def exp(res: _ods_ir.Type, arg: _ods_ir.Value, *, loc: _Optional[_ods_ir.Location] = None, ip: _Optional[_ods_ir.InsertionPoint] = None) -> _ods_ir.OpResult:
  return ROCDLExp(res=res, arg=arg, loc=loc, ip=ip).result

@_ods_cext.register_operation(_Dialect)
class ROCDLExp2(_ods_ir.OpView):
  r"""
  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
  ```
  """

  OPERATION_NAME = "rocdl.exp2"

  _ODS_REGIONS = (0, True)

  def __init__(self, res: _ods_ir.Type, arg: _ods_ir.Value, *, loc: _Optional[_ods_ir.Location] = None, ip: _Optional[_ods_ir.InsertionPoint] = None):
    operands = []
    attributes = {}
    regions = None
    operands.append(arg)
    _ods_context = _ods_get_default_loc_context(loc)
    results = []
    results.append(res)
    _ods_successors = None
    super().__init__(self.OPERATION_NAME, self._ODS_REGIONS, self._ODS_OPERAND_SEGMENTS, self._ODS_RESULT_SEGMENTS, attributes=attributes, results=results, operands=operands, successors=_ods_successors, regions=regions, loc=loc, ip=ip)

  @builtins.property
  def arg(self) -> _ods_ir.Value:
    return self.operation.operands[0]

  @builtins.property
  def res(self) -> _ods_ir.OpResult:
    return self.operation.results[0]

@_ods_cext.register_op_adaptor(ROCDLExp2)
class ROCDLExp2Adaptor(_ods_ir.OpAdaptor):
  OPERATION_NAME = "rocdl.exp2"

  @builtins.property
  def arg(self) -> _ods_ir.Value:
    return self.operands[0]

def exp2(res: _ods_ir.Type, arg: _ods_ir.Value, *, loc: _Optional[_ods_ir.Location] = None, ip: _Optional[_ods_ir.InsertionPoint] = None) -> _ods_ir.OpResult:
  return ROCDLExp2(res=res, arg=arg, loc=loc, ip=ip).result

@_ods_cext.register_operation(_Dialect)
class ROCDLLog(_ods_ir.OpView):
  r"""
  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
  ```
  """

  OPERATION_NAME = "rocdl.log"

  _ODS_REGIONS = (0, True)

  def __init__(self, res: _ods_ir.Type, arg: _ods_ir.Value, *, loc: _Optional[_ods_ir.Location] = None, ip: _Optional[_ods_ir.InsertionPoint] = None):
    operands = []
    attributes = {}
    regions = None
    operands.append(arg)
    _ods_context = _ods_get_default_loc_context(loc)
    results = []
    results.append(res)
    _ods_successors = None
    super().__init__(self.OPERATION_NAME, self._ODS_REGIONS, self._ODS_OPERAND_SEGMENTS, self._ODS_RESULT_SEGMENTS, attributes=attributes, results=results, operands=operands, successors=_ods_successors, regions=regions, loc=loc, ip=ip)

  @builtins.property
  def arg(self) -> _ods_ir.Value:
    return self.operation.operands[0]

  @builtins.property
  def res(self) -> _ods_ir.OpResult:
    return self.operation.results[0]

@_ods_cext.register_op_adaptor(ROCDLLog)
class ROCDLLogAdaptor(_ods_ir.OpAdaptor):
  OPERATION_NAME = "rocdl.log"

  @builtins.property
  def arg(self) -> _ods_ir.Value:
    return self.operands[0]

def log(res: _ods_ir.Type, arg: _ods_ir.Value, *, loc: _Optional[_ods_ir.Location] = None, ip: _Optional[_ods_ir.InsertionPoint] = None) -> _ods_ir.OpResult:
  return ROCDLLog(res=res, arg=arg, loc=loc, ip=ip).result

@_ods_cext.register_operation(_Dialect)
class ROCDLRcp(_ods_ir.OpView):
  r"""
  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
  ```
  """

  OPERATION_NAME = "rocdl.rcp"

  _ODS_REGIONS = (0, True)

  def __init__(self, res: _ods_ir.Type, arg: _ods_ir.Value, *, loc: _Optional[_ods_ir.Location] = None, ip: _Optional[_ods_ir.InsertionPoint] = None):
    operands = []
    attributes = {}
    regions = None
    operands.append(arg)
    _ods_context = _ods_get_default_loc_context(loc)
    results = []
    results.append(res)
    _ods_successors = None
    super().__init__(self.OPERATION_NAME, self._ODS_REGIONS, self._ODS_OPERAND_SEGMENTS, self._ODS_RESULT_SEGMENTS, attributes=attributes, results=results, operands=operands, successors=_ods_successors, regions=regions, loc=loc, ip=ip)

  @builtins.property
  def arg(self) -> _ods_ir.Value:
    return self.operation.operands[0]

  @builtins.property
  def res(self) -> _ods_ir.OpResult:
    return self.operation.results[0]

@_ods_cext.register_op_adaptor(ROCDLRcp)
class ROCDLRcpAdaptor(_ods_ir.OpAdaptor):
  OPERATION_NAME = "rocdl.rcp"

  @builtins.property
  def arg(self) -> _ods_ir.Value:
    return self.operands[0]

def rcp(res: _ods_ir.Type, arg: _ods_ir.Value, *, loc: _Optional[_ods_ir.Location] = None, ip: _Optional[_ods_ir.InsertionPoint] = None) -> _ods_ir.OpResult:
  return ROCDLRcp(res=res, arg=arg, loc=loc, ip=ip).result

@_ods_cext.register_operation(_Dialect)
class ROCDLRsq(_ods_ir.OpView):
  r"""
  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
  ```
  """

  OPERATION_NAME = "rocdl.rsq"

  _ODS_REGIONS = (0, True)

  def __init__(self, res: _ods_ir.Type, arg: _ods_ir.Value, *, loc: _Optional[_ods_ir.Location] = None, ip: _Optional[_ods_ir.InsertionPoint] = None):
    operands = []
    attributes = {}
    regions = None
    operands.append(arg)
    _ods_context = _ods_get_default_loc_context(loc)
    results = []
    results.append(res)
    _ods_successors = None
    super().__init__(self.OPERATION_NAME, self._ODS_REGIONS, self._ODS_OPERAND_SEGMENTS, self._ODS_RESULT_SEGMENTS, attributes=attributes, results=results, operands=operands, successors=_ods_successors, regions=regions, loc=loc, ip=ip)

  @builtins.property
  def arg(self) -> _ods_ir.Value:
    return self.operation.operands[0]

  @builtins.property
  def res(self) -> _ods_ir.OpResult:
    return self.operation.results[0]

@_ods_cext.register_op_adaptor(ROCDLRsq)
class ROCDLRsqAdaptor(_ods_ir.OpAdaptor):
  OPERATION_NAME = "rocdl.rsq"

  @builtins.property
  def arg(self) -> _ods_ir.Value:
    return self.operands[0]

def rsq(res: _ods_ir.Type, arg: _ods_ir.Value, *, loc: _Optional[_ods_ir.Location] = None, ip: _Optional[_ods_ir.InsertionPoint] = None) -> _ods_ir.OpResult:
  return ROCDLRsq(res=res, arg=arg, loc=loc, ip=ip).result

@_ods_cext.register_operation(_Dialect)
class ROCDLSin(_ods_ir.OpView):
  r"""
  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
  ```
  """

  OPERATION_NAME = "rocdl.sin"

  _ODS_REGIONS = (0, True)

  def __init__(self, res: _ods_ir.Type, arg: _ods_ir.Value, *, loc: _Optional[_ods_ir.Location] = None, ip: _Optional[_ods_ir.InsertionPoint] = None):
    operands = []
    attributes = {}
    regions = None
    operands.append(arg)
    _ods_context = _ods_get_default_loc_context(loc)
    results = []
    results.append(res)
    _ods_successors = None
    super().__init__(self.OPERATION_NAME, self._ODS_REGIONS, self._ODS_OPERAND_SEGMENTS, self._ODS_RESULT_SEGMENTS, attributes=attributes, results=results, operands=operands, successors=_ods_successors, regions=regions, loc=loc, ip=ip)

  @builtins.property
  def arg(self) -> _ods_ir.Value:
    return self.operation.operands[0]

  @builtins.property
  def res(self) -> _ods_ir.OpResult:
    return self.operation.results[0]

@_ods_cext.register_op_adaptor(ROCDLSin)
class ROCDLSinAdaptor(_ods_ir.OpAdaptor):
  OPERATION_NAME = "rocdl.sin"

  @builtins.property
  def arg(self) -> _ods_ir.Value:
    return self.operands[0]

def sin(res: _ods_ir.Type, arg: _ods_ir.Value, *, loc: _Optional[_ods_ir.Location] = None, ip: _Optional[_ods_ir.InsertionPoint] = None) -> _ods_ir.OpResult:
  return ROCDLSin(res=res, arg=arg, loc=loc, ip=ip).result

@_ods_cext.register_operation(_Dialect)
class ROCDLSqrt(_ods_ir.OpView):
  r"""
  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
  ```
  """

  OPERATION_NAME = "rocdl.sqrt"

  _ODS_REGIONS = (0, True)

  def __init__(self, res: _ods_ir.Type, arg: _ods_ir.Value, *, loc: _Optional[_ods_ir.Location] = None, ip: _Optional[_ods_ir.InsertionPoint] = None):
    operands = []
    attributes = {}
    regions = None
    operands.append(arg)
    _ods_context = _ods_get_default_loc_context(loc)
    results = []
    results.append(res)
    _ods_successors = None
    super().__init__(self.OPERATION_NAME, self._ODS_REGIONS, self._ODS_OPERAND_SEGMENTS, self._ODS_RESULT_SEGMENTS, attributes=attributes, results=results, operands=operands, successors=_ods_successors, regions=regions, loc=loc, ip=ip)

  @builtins.property
  def arg(self) -> _ods_ir.Value:
    return self.operation.operands[0]

  @builtins.property
  def res(self) -> _ods_ir.OpResult:
    return self.operation.results[0]

@_ods_cext.register_op_adaptor(ROCDLSqrt)
class ROCDLSqrtAdaptor(_ods_ir.OpAdaptor):
  OPERATION_NAME = "rocdl.sqrt"

  @builtins.property
  def arg(self) -> _ods_ir.Value:
    return self.operands[0]

def sqrt(res: _ods_ir.Type, arg: _ods_ir.Value, *, loc: _Optional[_ods_ir.Location] = None, ip: _Optional[_ods_ir.InsertionPoint] = None) -> _ods_ir.OpResult:
  return ROCDLSqrt(res=res, arg=arg, loc=loc, ip=ip).result

@_ods_cext.register_operation(_Dialect)
class ROCDLTanh(_ods_ir.OpView):
  r"""
  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
  ```
  """

  OPERATION_NAME = "rocdl.tanh"

  _ODS_REGIONS = (0, True)

  def __init__(self, res: _ods_ir.Type, arg: _ods_ir.Value, *, loc: _Optional[_ods_ir.Location] = None, ip: _Optional[_ods_ir.InsertionPoint] = None):
    operands = []
    attributes = {}
    regions = None
    operands.append(arg)
    _ods_context = _ods_get_default_loc_context(loc)
    results = []
    results.append(res)
    _ods_successors = None
    super().__init__(self.OPERATION_NAME, self._ODS_REGIONS, self._ODS_OPERAND_SEGMENTS, self._ODS_RESULT_SEGMENTS, attributes=attributes, results=results, operands=operands, successors=_ods_successors, regions=regions, loc=loc, ip=ip)

  @builtins.property
  def arg(self) -> _ods_ir.Value:
    return self.operation.operands[0]

  @builtins.property
  def res(self) -> _ods_ir.OpResult:
    return self.operation.results[0]

@_ods_cext.register_op_adaptor(ROCDLTanh)
class ROCDLTanhAdaptor(_ods_ir.OpAdaptor):
  OPERATION_NAME = "rocdl.tanh"

  @builtins.property
  def arg(self) -> _ods_ir.Value:
    return self.operands[0]

def tanh(res: _ods_ir.Type, arg: _ods_ir.Value, *, loc: _Optional[_ods_ir.Location] = None, ip: _Optional[_ods_ir.InsertionPoint] = None) -> _ods_ir.OpResult:
  return ROCDLTanh(res=res, arg=arg, loc=loc, ip=ip).result

@_ods_cext.register_operation(_Dialect)
class AsyncmarkOp(_ods_ir.OpView):
  r"""
  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.
  """

  OPERATION_NAME = "rocdl.asyncmark"

  _ODS_REGIONS = (0, True)

  def __init__(self, *, loc: _Optional[_ods_ir.Location] = None, ip: _Optional[_ods_ir.InsertionPoint] = None):
    operands = []
    attributes = {}
    regions = None
    _ods_context = _ods_get_default_loc_context(loc)
    results = []
    _ods_successors = None
    super().__init__(self.OPERATION_NAME, self._ODS_REGIONS, self._ODS_OPERAND_SEGMENTS, self._ODS_RESULT_SEGMENTS, attributes=attributes, results=results, operands=operands, successors=_ods_successors, regions=regions, loc=loc, ip=ip)

@_ods_cext.register_op_adaptor(AsyncmarkOp)
class AsyncmarkOpAdaptor(_ods_ir.OpAdaptor):
  OPERATION_NAME = "rocdl.asyncmark"

def asyncmark(*, loc: _Optional[_ods_ir.Location] = None, ip: _Optional[_ods_ir.InsertionPoint] = None) -> AsyncmarkOp:
  return AsyncmarkOp(loc=loc, ip=ip)

@_ods_cext.register_operation(_Dialect)
class BallotOp(_ods_ir.OpView):
  r"""
  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
  ```
  """

  OPERATION_NAME = "rocdl.ballot"

  _ODS_REGIONS = (0, True)

  def __init__(self, res: _ods_ir.Type, pred: _ods_ir.Value[_ods_ir.IntegerType], *, loc: _Optional[_ods_ir.Location] = None, ip: _Optional[_ods_ir.InsertionPoint] = None):
    operands = []
    attributes = {}
    regions = None
    operands.append(pred)
    _ods_context = _ods_get_default_loc_context(loc)
    results = []
    results.append(res)
    _ods_successors = None
    super().__init__(self.OPERATION_NAME, self._ODS_REGIONS, self._ODS_OPERAND_SEGMENTS, self._ODS_RESULT_SEGMENTS, attributes=attributes, results=results, operands=operands, successors=_ods_successors, regions=regions, loc=loc, ip=ip)

  @builtins.property
  def pred(self) -> _ods_ir.Value[_ods_ir.IntegerType]:
    return self.operation.operands[0]

  @builtins.property
  def res(self) -> _ods_ir.OpResult:
    return self.operation.results[0]

@_ods_cext.register_op_adaptor(BallotOp)
class BallotOpAdaptor(_ods_ir.OpAdaptor):
  OPERATION_NAME = "rocdl.ballot"

  @builtins.property
  def pred(self) -> _ods_ir.Value[_ods_ir.IntegerType]:
    return self.operands[0]

def ballot(res: _ods_ir.Type, pred: _ods_ir.Value[_ods_ir.IntegerType], *, loc: _Optional[_ods_ir.Location] = None, ip: _Optional[_ods_ir.InsertionPoint] = None) -> _ods_ir.OpResult:
  return BallotOp(res=res, pred=pred, loc=loc, ip=ip).result

@_ods_cext.register_operation(_Dialect)
class BarrierInitOp(_ods_ir.OpView):
  r"""
  Available on gfx1250+.
  
  Example:
  ```mlir
  // Initialize a named barrier with member count.
  rocdl.s.barrier.init %ptr member_cnt = 1 : !llvm.ptr<3>
  ```
  """

  OPERATION_NAME = "rocdl.s.barrier.init"

  _ODS_REGIONS = (0, True)

  def __init__(self, ptr: _ods_ir.Value, memberCnt: _Union[int, _ods_ir.IntegerAttr], *, loc: _Optional[_ods_ir.Location] = None, ip: _Optional[_ods_ir.InsertionPoint] = None):
    operands = []
    attributes = {}
    regions = None
    operands.append(ptr)
    _ods_context = _ods_get_default_loc_context(loc)
    attributes["memberCnt"] = (memberCnt if (
    isinstance(memberCnt, _ods_ir.Attribute) or
    not _ods_ir.AttrBuilder.contains('I32Attr')) else
      _ods_ir.AttrBuilder.get('I32Attr')(memberCnt, context=_ods_context))
    results = []
    _ods_successors = None
    super().__init__(self.OPERATION_NAME, self._ODS_REGIONS, self._ODS_OPERAND_SEGMENTS, self._ODS_RESULT_SEGMENTS, attributes=attributes, results=results, operands=operands, successors=_ods_successors, regions=regions, loc=loc, ip=ip)

  @builtins.property
  def ptr(self) -> _ods_ir.Value:
    return self.operation.operands[0]

  @builtins.property
  def memberCnt(self) -> _ods_ir.IntegerAttr:
    return self.operation.attributes["memberCnt"]

  @memberCnt.setter
  def memberCnt(self, value: _ods_ir.IntegerAttr):
    if value is None:
      raise ValueError("'None' not allowed as value for mandatory attributes")
    self.operation.attributes["memberCnt"] = value

@_ods_cext.register_op_adaptor(BarrierInitOp)
class BarrierInitOpAdaptor(_ods_ir.OpAdaptor):
  OPERATION_NAME = "rocdl.s.barrier.init"

  @builtins.property
  def ptr(self) -> _ods_ir.Value:
    return self.operands[0]

  @builtins.property
  def memberCnt(self) -> _ods_ir.IntegerAttr:
    return self.attributes["memberCnt"]

def s_barrier_init(ptr: _ods_ir.Value, member_cnt: _Union[int, _ods_ir.IntegerAttr], *, loc: _Optional[_ods_ir.Location] = None, ip: _Optional[_ods_ir.InsertionPoint] = None) -> BarrierInitOp:
  return BarrierInitOp(ptr=ptr, memberCnt=member_cnt, loc=loc, ip=ip)

@_ods_cext.register_operation(_Dialect)
class BarrierJoinOp(_ods_ir.OpView):
  r"""
  Available on gfx1250+.
  
  Example:
  ```mlir
  // Join a named barrier.
  rocdl.s.barrier.join %ptr : !llvm.ptr<3>
  ```
  """

  OPERATION_NAME = "rocdl.s.barrier.join"

  _ODS_REGIONS = (0, True)

  def __init__(self, ptr: _ods_ir.Value, *, loc: _Optional[_ods_ir.Location] = None, ip: _Optional[_ods_ir.InsertionPoint] = None):
    operands = []
    attributes = {}
    regions = None
    operands.append(ptr)
    _ods_context = _ods_get_default_loc_context(loc)
    results = []
    _ods_successors = None
    super().__init__(self.OPERATION_NAME, self._ODS_REGIONS, self._ODS_OPERAND_SEGMENTS, self._ODS_RESULT_SEGMENTS, attributes=attributes, results=results, operands=operands, successors=_ods_successors, regions=regions, loc=loc, ip=ip)

  @builtins.property
  def ptr(self) -> _ods_ir.Value:
    return self.operation.operands[0]

@_ods_cext.register_op_adaptor(BarrierJoinOp)
class BarrierJoinOpAdaptor(_ods_ir.OpAdaptor):
  OPERATION_NAME = "rocdl.s.barrier.join"

  @builtins.property
  def ptr(self) -> _ods_ir.Value:
    return self.operands[0]

def s_barrier_join(ptr: _ods_ir.Value, *, loc: _Optional[_ods_ir.Location] = None, ip: _Optional[_ods_ir.InsertionPoint] = None) -> BarrierJoinOp:
  return BarrierJoinOp(ptr=ptr, loc=loc, ip=ip)

@_ods_cext.register_operation(_Dialect)
class BarrierLeaveOp(_ods_ir.OpView):
  r"""
  Available on gfx1250+.
  
  Example:
  ```mlir
  // Leave a named barrier by id.
  rocdl.s.barrier.leave id = 1
  ```
  """

  OPERATION_NAME = "rocdl.s.barrier.leave"

  _ODS_REGIONS = (0, True)

  def __init__(self, id: _Union[int, _ods_ir.IntegerAttr], *, loc: _Optional[_ods_ir.Location] = None, ip: _Optional[_ods_ir.InsertionPoint] = None):
    operands = []
    attributes = {}
    regions = None
    _ods_context = _ods_get_default_loc_context(loc)
    attributes["id"] = (id if (
    isinstance(id, _ods_ir.Attribute) or
    not _ods_ir.AttrBuilder.contains('I16Attr')) else
      _ods_ir.AttrBuilder.get('I16Attr')(id, context=_ods_context))
    results = []
    _ods_successors = None
    super().__init__(self.OPERATION_NAME, self._ODS_REGIONS, self._ODS_OPERAND_SEGMENTS, self._ODS_RESULT_SEGMENTS, attributes=attributes, results=results, operands=operands, successors=_ods_successors, regions=regions, loc=loc, ip=ip)

  @builtins.property
  def id(self) -> _ods_ir.IntegerAttr:
    return self.operation.attributes["id"]

  @id.setter
  def id(self, value: _ods_ir.IntegerAttr):
    if value is None:
      raise ValueError("'None' not allowed as value for mandatory attributes")
    self.operation.attributes["id"] = value

@_ods_cext.register_op_adaptor(BarrierLeaveOp)
class BarrierLeaveOpAdaptor(_ods_ir.OpAdaptor):
  OPERATION_NAME = "rocdl.s.barrier.leave"

  @builtins.property
  def id(self) -> _ods_ir.IntegerAttr:
    return self.attributes["id"]

def s_barrier_leave(id: _Union[int, _ods_ir.IntegerAttr], *, loc: _Optional[_ods_ir.Location] = None, ip: _Optional[_ods_ir.InsertionPoint] = None) -> BarrierLeaveOp:
  return BarrierLeaveOp(id=id, loc=loc, ip=ip)

@_ods_cext.register_operation(_Dialect)
class BarrierOp(_ods_ir.OpView):
  r"""
  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
  ```
  """

  OPERATION_NAME = "rocdl.barrier"

  _ODS_REGIONS = (0, True)

  def __init__(self, *, loc: _Optional[_ods_ir.Location] = None, ip: _Optional[_ods_ir.InsertionPoint] = None):
    operands = []
    attributes = {}
    regions = None
    _ods_context = _ods_get_default_loc_context(loc)
    results = []
    _ods_successors = None
    super().__init__(self.OPERATION_NAME, self._ODS_REGIONS, self._ODS_OPERAND_SEGMENTS, self._ODS_RESULT_SEGMENTS, attributes=attributes, results=results, operands=operands, successors=_ods_successors, regions=regions, loc=loc, ip=ip)

@_ods_cext.register_op_adaptor(BarrierOp)
class BarrierOpAdaptor(_ods_ir.OpAdaptor):
  OPERATION_NAME = "rocdl.barrier"

def barrier(*, loc: _Optional[_ods_ir.Location] = None, ip: _Optional[_ods_ir.InsertionPoint] = None) -> BarrierOp:
  return BarrierOp(loc=loc, ip=ip)

@_ods_cext.register_operation(_Dialect)
class BarrierSignalIsfirstOp(_ods_ir.OpView):
  r"""
  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
  ```
  """

  OPERATION_NAME = "rocdl.s.barrier.signal.isfirst"

  _ODS_REGIONS = (0, True)

  def __init__(self, res: _ods_ir.Type, id: _Union[int, _ods_ir.IntegerAttr], *, loc: _Optional[_ods_ir.Location] = None, ip: _Optional[_ods_ir.InsertionPoint] = None):
    operands = []
    attributes = {}
    regions = None
    _ods_context = _ods_get_default_loc_context(loc)
    attributes["id"] = (id if (
    isinstance(id, _ods_ir.Attribute) or
    not _ods_ir.AttrBuilder.contains('I32Attr')) else
      _ods_ir.AttrBuilder.get('I32Attr')(id, context=_ods_context))
    results = []
    results.append(res)
    _ods_successors = None
    super().__init__(self.OPERATION_NAME, self._ODS_REGIONS, self._ODS_OPERAND_SEGMENTS, self._ODS_RESULT_SEGMENTS, attributes=attributes, results=results, operands=operands, successors=_ods_successors, regions=regions, loc=loc, ip=ip)

  @builtins.property
  def id(self) -> _ods_ir.IntegerAttr:
    return self.operation.attributes["id"]

  @id.setter
  def id(self, value: _ods_ir.IntegerAttr):
    if value is None:
      raise ValueError("'None' not allowed as value for mandatory attributes")
    self.operation.attributes["id"] = value

  @builtins.property
  def res(self) -> _ods_ir.OpResult[_ods_ir.IntegerType]:
    return self.operation.results[0]

@_ods_cext.register_op_adaptor(BarrierSignalIsfirstOp)
class BarrierSignalIsfirstOpAdaptor(_ods_ir.OpAdaptor):
  OPERATION_NAME = "rocdl.s.barrier.signal.isfirst"

  @builtins.property
  def id(self) -> _ods_ir.IntegerAttr:
    return self.attributes["id"]

def s_barrier_signal_isfirst(res: _ods_ir.Type, id: _Union[int, _ods_ir.IntegerAttr], *, loc: _Optional[_ods_ir.Location] = None, ip: _Optional[_ods_ir.InsertionPoint] = None) -> _ods_ir.OpResult[_ods_ir.IntegerType]:
  return BarrierSignalIsfirstOp(res=res, id=id, loc=loc, ip=ip).result

@_ods_cext.register_operation(_Dialect)
class BarrierSignalOp(_ods_ir.OpView):
  r"""
  Signal a barrier by id. Available on gfx1250+.
  
  Example:
  ```mlir
  // Signal barrier with id -1 (all barriers).
  rocdl.s.barrier.signal id = -1
  ```
  """

  OPERATION_NAME = "rocdl.s.barrier.signal"

  _ODS_REGIONS = (0, True)

  def __init__(self, id: _Union[int, _ods_ir.IntegerAttr], *, loc: _Optional[_ods_ir.Location] = None, ip: _Optional[_ods_ir.InsertionPoint] = None):
    operands = []
    attributes = {}
    regions = None
    _ods_context = _ods_get_default_loc_context(loc)
    attributes["id"] = (id if (
    isinstance(id, _ods_ir.Attribute) or
    not _ods_ir.AttrBuilder.contains('I32Attr')) else
      _ods_ir.AttrBuilder.get('I32Attr')(id, context=_ods_context))
    results = []
    _ods_successors = None
    super().__init__(self.OPERATION_NAME, self._ODS_REGIONS, self._ODS_OPERAND_SEGMENTS, self._ODS_RESULT_SEGMENTS, attributes=attributes, results=results, operands=operands, successors=_ods_successors, regions=regions, loc=loc, ip=ip)

  @builtins.property
  def id(self) -> _ods_ir.IntegerAttr:
    return self.operation.attributes["id"]

  @id.setter
  def id(self, value: _ods_ir.IntegerAttr):
    if value is None:
      raise ValueError("'None' not allowed as value for mandatory attributes")
    self.operation.attributes["id"] = value

@_ods_cext.register_op_adaptor(BarrierSignalOp)
class BarrierSignalOpAdaptor(_ods_ir.OpAdaptor):
  OPERATION_NAME = "rocdl.s.barrier.signal"

  @builtins.property
  def id(self) -> _ods_ir.IntegerAttr:
    return self.attributes["id"]

def s_barrier_signal(id: _Union[int, _ods_ir.IntegerAttr], *, loc: _Optional[_ods_ir.Location] = None, ip: _Optional[_ods_ir.InsertionPoint] = None) -> BarrierSignalOp:
  return BarrierSignalOp(id=id, loc=loc, ip=ip)

@_ods_cext.register_operation(_Dialect)
class BarrierSignalVarOp(_ods_ir.OpView):
  r"""
  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>
  ```
  """

  OPERATION_NAME = "rocdl.s.barrier.signal.var"

  _ODS_REGIONS = (0, True)

  def __init__(self, ptr: _ods_ir.Value, memberCnt: _Union[int, _ods_ir.IntegerAttr], *, loc: _Optional[_ods_ir.Location] = None, ip: _Optional[_ods_ir.InsertionPoint] = None):
    operands = []
    attributes = {}
    regions = None
    operands.append(ptr)
    _ods_context = _ods_get_default_loc_context(loc)
    attributes["memberCnt"] = (memberCnt if (
    isinstance(memberCnt, _ods_ir.Attribute) or
    not _ods_ir.AttrBuilder.contains('I32Attr')) else
      _ods_ir.AttrBuilder.get('I32Attr')(memberCnt, context=_ods_context))
    results = []
    _ods_successors = None
    super().__init__(self.OPERATION_NAME, self._ODS_REGIONS, self._ODS_OPERAND_SEGMENTS, self._ODS_RESULT_SEGMENTS, attributes=attributes, results=results, operands=operands, successors=_ods_successors, regions=regions, loc=loc, ip=ip)

  @builtins.property
  def ptr(self) -> _ods_ir.Value:
    return self.operation.operands[0]

  @builtins.property
  def memberCnt(self) -> _ods_ir.IntegerAttr:
    return self.operation.attributes["memberCnt"]

  @memberCnt.setter
  def memberCnt(self, value: _ods_ir.IntegerAttr):
    if value is None:
      raise ValueError("'None' not allowed as value for mandatory attributes")
    self.operation.attributes["memberCnt"] = value

@_ods_cext.register_op_adaptor(BarrierSignalVarOp)
class BarrierSignalVarOpAdaptor(_ods_ir.OpAdaptor):
  OPERATION_NAME = "rocdl.s.barrier.signal.var"

  @builtins.property
  def ptr(self) -> _ods_ir.Value:
    return self.operands[0]

  @builtins.property
  def memberCnt(self) -> _ods_ir.IntegerAttr:
    return self.attributes["memberCnt"]

def s_barrier_signal_var(ptr: _ods_ir.Value, member_cnt: _Union[int, _ods_ir.IntegerAttr], *, loc: _Optional[_ods_ir.Location] = None, ip: _Optional[_ods_ir.InsertionPoint] = None) -> BarrierSignalVarOp:
  return BarrierSignalVarOp(ptr=ptr, memberCnt=member_cnt, loc=loc, ip=ip)

@_ods_cext.register_operation(_Dialect)
class BarrierWaitOp(_ods_ir.OpView):
  r"""
  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
  ```
  """

  OPERATION_NAME = "rocdl.s.barrier.wait"

  _ODS_REGIONS = (0, True)

  def __init__(self, id: _Union[int, _ods_ir.IntegerAttr], *, loc: _Optional[_ods_ir.Location] = None, ip: _Optional[_ods_ir.InsertionPoint] = None):
    operands = []
    attributes = {}
    regions = None
    _ods_context = _ods_get_default_loc_context(loc)
    attributes["id"] = (id if (
    isinstance(id, _ods_ir.Attribute) or
    not _ods_ir.AttrBuilder.contains('I16Attr')) else
      _ods_ir.AttrBuilder.get('I16Attr')(id, context=_ods_context))
    results = []
    _ods_successors = None
    super().__init__(self.OPERATION_NAME, self._ODS_REGIONS, self._ODS_OPERAND_SEGMENTS, self._ODS_RESULT_SEGMENTS, attributes=attributes, results=results, operands=operands, successors=_ods_successors, regions=regions, loc=loc, ip=ip)

  @builtins.property
  def id(self) -> _ods_ir.IntegerAttr:
    return self.operation.attributes["id"]

  @id.setter
  def id(self, value: _ods_ir.IntegerAttr):
    if value is None:
      raise ValueError("'None' not allowed as value for mandatory attributes")
    self.operation.attributes["id"] = value

@_ods_cext.register_op_adaptor(BarrierWaitOp)
class BarrierWaitOpAdaptor(_ods_ir.OpAdaptor):
  OPERATION_NAME = "rocdl.s.barrier.wait"

  @builtins.property
  def id(self) -> _ods_ir.IntegerAttr:
    return self.attributes["id"]

def s_barrier_wait(id: _Union[int, _ods_ir.IntegerAttr], *, loc: _Optional[_ods_ir.Location] = None, ip: _Optional[_ods_ir.InsertionPoint] = None) -> BarrierWaitOp:
  return BarrierWaitOp(id=id, loc=loc, ip=ip)

@_ods_cext.register_operation(_Dialect)
class BlockIdXOp(_ods_ir.OpView):
  r"""
  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, 0, 64> : i32
  ```
  """

  OPERATION_NAME = "rocdl.workgroup.id.x"

  _ODS_REGIONS = (0, True)

  def __init__(self, res: _ods_ir.Type, *, range: _Optional[_Union[_Any, _ods_ir.Attribute]] = None, loc: _Optional[_ods_ir.Location] = None, ip: _Optional[_ods_ir.InsertionPoint] = None):
    operands = []
    attributes = {}
    regions = None
    _ods_context = _ods_get_default_loc_context(loc)
    if range is not None: attributes["range"] = (range if (
        isinstance(range, _ods_ir.Attribute) or
        not _ods_ir.AttrBuilder.contains('LLVM_ConstantRangeAttr')) else
          _ods_ir.AttrBuilder.get('LLVM_ConstantRangeAttr')(range, context=_ods_context))
    results = []
    results.append(res)
    _ods_successors = None
    super().__init__(self.OPERATION_NAME, self._ODS_REGIONS, self._ODS_OPERAND_SEGMENTS, self._ODS_RESULT_SEGMENTS, attributes=attributes, results=results, operands=operands, successors=_ods_successors, regions=regions, loc=loc, ip=ip)

  @builtins.property
  def range(self) -> _Optional[_ods_ir.Attribute]:
    if "range" not in self.operation.attributes:
      return None
    return self.operation.attributes["range"]

  @range.setter
  def range(self, value: _Optional[_ods_ir.Attribute]):
    if value is not None:
      self.operation.attributes["range"] = value
    elif "range" in self.operation.attributes:
      del self.operation.attributes["range"]

  @range.deleter
  def range(self):
    del self.operation.attributes["range"]

  @builtins.property
  def res(self) -> _ods_ir.OpResult:
    return self.operation.results[0]

@_ods_cext.register_op_adaptor(BlockIdXOp)
class BlockIdXOpAdaptor(_ods_ir.OpAdaptor):
  OPERATION_NAME = "rocdl.workgroup.id.x"

  @builtins.property
  def range(self) -> _Optional[_ods_ir.Attribute]:
    if "range" not in self.attributes:
      return None
    return self.attributes["range"]

def workgroup_id_x(res: _ods_ir.Type, *, range: _Optional[_Union[_Any, _ods_ir.Attribute]] = None, loc: _Optional[_ods_ir.Location] = None, ip: _Optional[_ods_ir.InsertionPoint] = None) -> _ods_ir.OpResult:
  return BlockIdXOp(res=res, range=range, loc=loc, ip=ip).result

@_ods_cext.register_operation(_Dialect)
class BlockIdYOp(_ods_ir.OpView):
  r"""
  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, 0, 64> : i32
  ```
  """

  OPERATION_NAME = "rocdl.workgroup.id.y"

  _ODS_REGIONS = (0, True)

  def __init__(self, res: _ods_ir.Type, *, range: _Optional[_Union[_Any, _ods_ir.Attribute]] = None, loc: _Optional[_ods_ir.Location] = None, ip: _Optional[_ods_ir.InsertionPoint] = None):
    operands = []
    attributes = {}
    regions = None
    _ods_context = _ods_get_default_loc_context(loc)
    if range is not None: attributes["range"] = (range if (
        isinstance(range, _ods_ir.Attribute) or
        not _ods_ir.AttrBuilder.contains('LLVM_ConstantRangeAttr')) else
          _ods_ir.AttrBuilder.get('LLVM_ConstantRangeAttr')(range, context=_ods_context))
    results = []
    results.append(res)
    _ods_successors = None
    super().__init__(self.OPERATION_NAME, self._ODS_REGIONS, self._ODS_OPERAND_SEGMENTS, self._ODS_RESULT_SEGMENTS, attributes=attributes, results=results, operands=operands, successors=_ods_successors, regions=regions, loc=loc, ip=ip)

  @builtins.property
  def range(self) -> _Optional[_ods_ir.Attribute]:
    if "range" not in self.operation.attributes:
      return None
    return self.operation.attributes["range"]

  @range.setter
  def range(self, value: _Optional[_ods_ir.Attribute]):
    if value is not None:
      self.operation.attributes["range"] = value
    elif "range" in self.operation.attributes:
      del self.operation.attributes["range"]

  @range.deleter
  def range(self):
    del self.operation.attributes["range"]

  @builtins.property
  def res(self) -> _ods_ir.OpResult:
    return self.operation.results[0]

@_ods_cext.register_op_adaptor(BlockIdYOp)
class BlockIdYOpAdaptor(_ods_ir.OpAdaptor):
  OPERATION_NAME = "rocdl.workgroup.id.y"

  @builtins.property
  def range(self) -> _Optional[_ods_ir.Attribute]:
    if "range" not in self.attributes:
      return None
    return self.attributes["range"]

def workgroup_id_y(res: _ods_ir.Type, *, range: _Optional[_Union[_Any, _ods_ir.Attribute]] = None, loc: _Optional[_ods_ir.Location] = None, ip: _Optional[_ods_ir.InsertionPoint] = None) -> _ods_ir.OpResult:
  return BlockIdYOp(res=res, range=range, loc=loc, ip=ip).result

@_ods_cext.register_operation(_Dialect)
class BlockIdZOp(_ods_ir.OpView):
  r"""
  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, 0, 64> : i32
  ```
  """

  OPERATION_NAME = "rocdl.workgroup.id.z"

  _ODS_REGIONS = (0, True)

  def __init__(self, res: _ods_ir.Type, *, range: _Optional[_Union[_Any, _ods_ir.Attribute]] = None, loc: _Optional[_ods_ir.Location] = None, ip: _Optional[_ods_ir.InsertionPoint] = None):
    operands = []
    attributes = {}
    regions = None
    _ods_context = _ods_get_default_loc_context(loc)
    if range is not None: attributes["range"] = (range if (
        isinstance(range, _ods_ir.Attribute) or
        not _ods_ir.AttrBuilder.contains('LLVM_ConstantRangeAttr')) else
          _ods_ir.AttrBuilder.get('LLVM_ConstantRangeAttr')(range, context=_ods_context))
    results = []
    results.append(res)
    _ods_successors = None
    super().__init__(self.OPERATION_NAME, self._ODS_REGIONS, self._ODS_OPERAND_SEGMENTS, self._ODS_RESULT_SEGMENTS, attributes=attributes, results=results, operands=operands, successors=_ods_successors, regions=regions, loc=loc, ip=ip)

  @builtins.property
  def range(self) -> _Optional[_ods_ir.Attribute]:
    if "range" not in self.operation.attributes:
      return None
    return self.operation.attributes["range"]

  @range.setter
  def range(self, value: _Optional[_ods_ir.Attribute]):
    if value is not None:
      self.operation.attributes["range"] = value
    elif "range" in self.operation.attributes:
      del self.operation.attributes["range"]

  @range.deleter
  def range(self):
    del self.operation.attributes["range"]

  @builtins.property
  def res(self) -> _ods_ir.OpResult:
    return self.operation.results[0]

@_ods_cext.register_op_adaptor(BlockIdZOp)
class BlockIdZOpAdaptor(_ods_ir.OpAdaptor):
  OPERATION_NAME = "rocdl.workgroup.id.z"

  @builtins.property
  def range(self) -> _Optional[_ods_ir.Attribute]:
    if "range" not in self.attributes:
      return None
    return self.attributes["range"]

def workgroup_id_z(res: _ods_ir.Type, *, range: _Optional[_Union[_Any, _ods_ir.Attribute]] = None, loc: _Optional[_ods_ir.Location] = None, ip: _Optional[_ods_ir.InsertionPoint] = None) -> _ods_ir.OpResult:
  return BlockIdZOp(res=res, range=range, loc=loc, ip=ip).result

@_ods_cext.register_operation(_Dialect)
class ClusterIdXOp(_ods_ir.OpView):
  r"""
  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, 0, 64> : i32
  ```
  """

  OPERATION_NAME = "rocdl.cluster.id.x"

  _ODS_REGIONS = (0, True)

  def __init__(self, res: _ods_ir.Type, *, range: _Optional[_Union[_Any, _ods_ir.Attribute]] = None, loc: _Optional[_ods_ir.Location] = None, ip: _Optional[_ods_ir.InsertionPoint] = None):
    operands = []
    attributes = {}
    regions = None
    _ods_context = _ods_get_default_loc_context(loc)
    if range is not None: attributes["range"] = (range if (
        isinstance(range, _ods_ir.Attribute) or
        not _ods_ir.AttrBuilder.contains('LLVM_ConstantRangeAttr')) else
          _ods_ir.AttrBuilder.get('LLVM_ConstantRangeAttr')(range, context=_ods_context))
    results = []
    results.append(res)
    _ods_successors = None
    super().__init__(self.OPERATION_NAME, self._ODS_REGIONS, self._ODS_OPERAND_SEGMENTS, self._ODS_RESULT_SEGMENTS, attributes=attributes, results=results, operands=operands, successors=_ods_successors, regions=regions, loc=loc, ip=ip)

  @builtins.property
  def range(self) -> _Optional[_ods_ir.Attribute]:
    if "range" not in self.operation.attributes:
      return None
    return self.operation.attributes["range"]

  @range.setter
  def range(self, value: _Optional[_ods_ir.Attribute]):
    if value is not None:
      self.operation.attributes["range"] = value
    elif "range" in self.operation.attributes:
      del self.operation.attributes["range"]

  @range.deleter
  def range(self):
    del self.operation.attributes["range"]

  @builtins.property
  def res(self) -> _ods_ir.OpResult:
    return self.operation.results[0]

@_ods_cext.register_op_adaptor(ClusterIdXOp)
class ClusterIdXOpAdaptor(_ods_ir.OpAdaptor):
  OPERATION_NAME = "rocdl.cluster.id.x"

  @builtins.property
  def range(self) -> _Optional[_ods_ir.Attribute]:
    if "range" not in self.attributes:
      return None
    return self.attributes["range"]

def cluster_id_x(res: _ods_ir.Type, *, range: _Optional[_Union[_Any, _ods_ir.Attribute]] = None, loc: _Optional[_ods_ir.Location] = None, ip: _Optional[_ods_ir.InsertionPoint] = None) -> _ods_ir.OpResult:
  return ClusterIdXOp(res=res, range=range, loc=loc, ip=ip).result

@_ods_cext.register_operation(_Dialect)
class ClusterIdYOp(_ods_ir.OpView):
  r"""
  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, 0, 64> : i32
  ```
  """

  OPERATION_NAME = "rocdl.cluster.id.y"

  _ODS_REGIONS = (0, True)

  def __init__(self, res: _ods_ir.Type, *, range: _Optional[_Union[_Any, _ods_ir.Attribute]] = None, loc: _Optional[_ods_ir.Location] = None, ip: _Optional[_ods_ir.InsertionPoint] = None):
    operands = []
    attributes = {}
    regions = None
    _ods_context = _ods_get_default_loc_context(loc)
    if range is not None: attributes["range"] = (range if (
        isinstance(range, _ods_ir.Attribute) or
        not _ods_ir.AttrBuilder.contains('LLVM_ConstantRangeAttr')) else
          _ods_ir.AttrBuilder.get('LLVM_ConstantRangeAttr')(range, context=_ods_context))
    results = []
    results.append(res)
    _ods_successors = None
    super().__init__(self.OPERATION_NAME, self._ODS_REGIONS, self._ODS_OPERAND_SEGMENTS, self._ODS_RESULT_SEGMENTS, attributes=attributes, results=results, operands=operands, successors=_ods_successors, regions=regions, loc=loc, ip=ip)

  @builtins.property
  def range(self) -> _Optional[_ods_ir.Attribute]:
    if "range" not in self.operation.attributes:
      return None
    return self.operation.attributes["range"]

  @range.setter
  def range(self, value: _Optional[_ods_ir.Attribute]):
    if value is not None:
      self.operation.attributes["range"] = value
    elif "range" in self.operation.attributes:
      del self.operation.attributes["range"]

  @range.deleter
  def range(self):
    del self.operation.attributes["range"]

  @builtins.property
  def res(self) -> _ods_ir.OpResult:
    return self.operation.results[0]

@_ods_cext.register_op_adaptor(ClusterIdYOp)
class ClusterIdYOpAdaptor(_ods_ir.OpAdaptor):
  OPERATION_NAME = "rocdl.cluster.id.y"

  @builtins.property
  def range(self) -> _Optional[_ods_ir.Attribute]:
    if "range" not in self.attributes:
      return None
    return self.attributes["range"]

def cluster_id_y(res: _ods_ir.Type, *, range: _Optional[_Union[_Any, _ods_ir.Attribute]] = None, loc: _Optional[_ods_ir.Location] = None, ip: _Optional[_ods_ir.InsertionPoint] = None) -> _ods_ir.OpResult:
  return ClusterIdYOp(res=res, range=range, loc=loc, ip=ip).result

@_ods_cext.register_operation(_Dialect)
class ClusterIdZOp(_ods_ir.OpView):
  r"""
  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, 0, 64> : i32
  ```
  """

  OPERATION_NAME = "rocdl.cluster.id.z"

  _ODS_REGIONS = (0, True)

  def __init__(self, res: _ods_ir.Type, *, range: _Optional[_Union[_Any, _ods_ir.Attribute]] = None, loc: _Optional[_ods_ir.Location] = None, ip: _Optional[_ods_ir.InsertionPoint] = None):
    operands = []
    attributes = {}
    regions = None
    _ods_context = _ods_get_default_loc_context(loc)
    if range is not None: attributes["range"] = (range if (
        isinstance(range, _ods_ir.Attribute) or
        not _ods_ir.AttrBuilder.contains('LLVM_ConstantRangeAttr')) else
          _ods_ir.AttrBuilder.get('LLVM_ConstantRangeAttr')(range, context=_ods_context))
    results = []
    results.append(res)
    _ods_successors = None
    super().__init__(self.OPERATION_NAME, self._ODS_REGIONS, self._ODS_OPERAND_SEGMENTS, self._ODS_RESULT_SEGMENTS, attributes=attributes, results=results, operands=operands, successors=_ods_successors, regions=regions, loc=loc, ip=ip)

  @builtins.property
  def range(self) -> _Optional[_ods_ir.Attribute]:
    if "range" not in self.operation.attributes:
      return None
    return self.operation.attributes["range"]

  @range.setter
  def range(self, value: _Optional[_ods_ir.Attribute]):
    if value is not None:
      self.operation.attributes["range"] = value
    elif "range" in self.operation.attributes:
      del self.operation.attributes["range"]

  @range.deleter
  def range(self):
    del self.operation.attributes["range"]

  @builtins.property
  def res(self) -> _ods_ir.OpResult:
    return self.operation.results[0]

@_ods_cext.register_op_adaptor(ClusterIdZOp)
class ClusterIdZOpAdaptor(_ods_ir.OpAdaptor):
  OPERATION_NAME = "rocdl.cluster.id.z"

  @builtins.property
  def range(self) -> _Optional[_ods_ir.Attribute]:
    if "range" not in self.attributes:
      return None
    return self.attributes["range"]

def cluster_id_z(res: _ods_ir.Type, *, range: _Optional[_Union[_Any, _ods_ir.Attribute]] = None, loc: _Optional[_ods_ir.Location] = None, ip: _Optional[_ods_ir.InsertionPoint] = None) -> _ods_ir.OpResult:
  return ClusterIdZOp(res=res, range=range, loc=loc, ip=ip).result

@_ods_cext.register_operation(_Dialect)
class ClusterLoadAsyncToLDSB8Op(_ods_ir.OpView):
  r"""
  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>
  ```
  """

  OPERATION_NAME = "rocdl.cluster.load.async.to.lds.b8"

  _ODS_REGIONS = (0, True)

  def __init__(self, globalPtr: _ods_ir.Value, ldsPtr: _ods_ir.Value, offset: _Union[int, _ods_ir.IntegerAttr], cpol: _Union[int, _ods_ir.IntegerAttr], mask: _ods_ir.Value[_ods_ir.IntegerType], *, alias_scopes: _Optional[_Union[_Any, _ods_ir.ArrayAttr]] = None, noalias_scopes: _Optional[_Union[_Any, _ods_ir.ArrayAttr]] = None, tbaa: _Optional[_Union[_Any, _ods_ir.ArrayAttr]] = None, loc: _Optional[_ods_ir.Location] = None, ip: _Optional[_ods_ir.InsertionPoint] = None):
    operands = []
    attributes = {}
    regions = None
    operands.append(globalPtr)
    operands.append(ldsPtr)
    operands.append(mask)
    _ods_context = _ods_get_default_loc_context(loc)
    attributes["offset"] = (offset if (
    isinstance(offset, _ods_ir.Attribute) or
    not _ods_ir.AttrBuilder.contains('I32Attr')) else
      _ods_ir.AttrBuilder.get('I32Attr')(offset, context=_ods_context))
    attributes["cpol"] = (cpol if (
    isinstance(cpol, _ods_ir.Attribute) or
    not _ods_ir.AttrBuilder.contains('I32Attr')) else
      _ods_ir.AttrBuilder.get('I32Attr')(cpol, context=_ods_context))
    if alias_scopes is not None: attributes["alias_scopes"] = (alias_scopes if (
        isinstance(alias_scopes, _ods_ir.Attribute) or
        not _ods_ir.AttrBuilder.contains('LLVM_AliasScopeArrayAttr')) else
          _ods_ir.AttrBuilder.get('LLVM_AliasScopeArrayAttr')(alias_scopes, context=_ods_context))
    if noalias_scopes is not None: attributes["noalias_scopes"] = (noalias_scopes if (
        isinstance(noalias_scopes, _ods_ir.Attribute) or
        not _ods_ir.AttrBuilder.contains('LLVM_AliasScopeArrayAttr')) else
          _ods_ir.AttrBuilder.get('LLVM_AliasScopeArrayAttr')(noalias_scopes, context=_ods_context))
    if tbaa is not None: attributes["tbaa"] = (tbaa if (
        isinstance(tbaa, _ods_ir.Attribute) or
        not _ods_ir.AttrBuilder.contains('LLVM_TBAATagArrayAttr')) else
          _ods_ir.AttrBuilder.get('LLVM_TBAATagArrayAttr')(tbaa, context=_ods_context))
    results = []
    _ods_successors = None
    super().__init__(self.OPERATION_NAME, self._ODS_REGIONS, self._ODS_OPERAND_SEGMENTS, self._ODS_RESULT_SEGMENTS, attributes=attributes, results=results, operands=operands, successors=_ods_successors, regions=regions, loc=loc, ip=ip)

  @builtins.property
  def globalPtr(self) -> _ods_ir.Value:
    return self.operation.operands[0]

  @builtins.property
  def ldsPtr(self) -> _ods_ir.Value:
    return self.operation.operands[1]

  @builtins.property
  def mask(self) -> _ods_ir.Value[_ods_ir.IntegerType]:
    return self.operation.operands[2]

  @builtins.property
  def offset(self) -> _ods_ir.IntegerAttr:
    return self.operation.attributes["offset"]

  @offset.setter
  def offset(self, value: _ods_ir.IntegerAttr):
    if value is None:
      raise ValueError("'None' not allowed as value for mandatory attributes")
    self.operation.attributes["offset"] = value

  @builtins.property
  def cpol(self) -> _ods_ir.IntegerAttr:
    return self.operation.attributes["cpol"]

  @cpol.setter
  def cpol(self, value: _ods_ir.IntegerAttr):
    if value is None:
      raise ValueError("'None' not allowed as value for mandatory attributes")
    self.operation.attributes["cpol"] = value

  @builtins.property
  def alias_scopes(self) -> _Optional[_ods_ir.ArrayAttr]:
    if "alias_scopes" not in self.operation.attributes:
      return None
    return self.operation.attributes["alias_scopes"]

  @alias_scopes.setter
  def alias_scopes(self, value: _Optional[_ods_ir.ArrayAttr]):
    if value is not None:
      self.operation.attributes["alias_scopes"] = value
    elif "alias_scopes" in self.operation.attributes:
      del self.operation.attributes["alias_scopes"]

  @alias_scopes.deleter
  def alias_scopes(self):
    del self.operation.attributes["alias_scopes"]

  @builtins.property
  def noalias_scopes(self) -> _Optional[_ods_ir.ArrayAttr]:
    if "noalias_scopes" not in self.operation.attributes:
      return None
    return self.operation.attributes["noalias_scopes"]

  @noalias_scopes.setter
  def noalias_scopes(self, value: _Optional[_ods_ir.ArrayAttr]):
    if value is not None:
      self.operation.attributes["noalias_scopes"] = value
    elif "noalias_scopes" in self.operation.attributes:
      del self.operation.attributes["noalias_scopes"]

  @noalias_scopes.deleter
  def noalias_scopes(self):
    del self.operation.attributes["noalias_scopes"]

  @builtins.property
  def tbaa(self) -> _Optional[_ods_ir.ArrayAttr]:
    if "tbaa" not in self.operation.attributes:
      return None
    return self.operation.attributes["tbaa"]

  @tbaa.setter
  def tbaa(self, value: _Optional[_ods_ir.ArrayAttr]):
    if value is not None:
      self.operation.attributes["tbaa"] = value
    elif "tbaa" in self.operation.attributes:
      del self.operation.attributes["tbaa"]

  @tbaa.deleter
  def tbaa(self):
    del self.operation.attributes["tbaa"]

@_ods_cext.register_op_adaptor(ClusterLoadAsyncToLDSB8Op)
class ClusterLoadAsyncToLDSB8OpAdaptor(_ods_ir.OpAdaptor):
  OPERATION_NAME = "rocdl.cluster.load.async.to.lds.b8"

  @builtins.property
  def globalPtr(self) -> _ods_ir.Value:
    return self.operands[0]

  @builtins.property
  def ldsPtr(self) -> _ods_ir.Value:
    return self.operands[1]

  @builtins.property
  def mask(self) -> _ods_ir.Value[_ods_ir.IntegerType]:
    return self.operands[2]

  @builtins.property
  def offset(self) -> _ods_ir.IntegerAttr:
    return self.attributes["offset"]

  @builtins.property
  def cpol(self) -> _ods_ir.IntegerAttr:
    return self.attributes["cpol"]

  @builtins.property
  def alias_scopes(self) -> _Optional[_ods_ir.ArrayAttr]:
    if "alias_scopes" not in self.attributes:
      return None
    return self.attributes["alias_scopes"]

  @builtins.property
  def noalias_scopes(self) -> _Optional[_ods_ir.ArrayAttr]:
    if "noalias_scopes" not in self.attributes:
      return None
    return self.attributes["noalias_scopes"]

  @builtins.property
  def tbaa(self) -> _Optional[_ods_ir.ArrayAttr]:
    if "tbaa" not in self.attributes:
      return None
    return self.attributes["tbaa"]

def cluster_load_async_to_lds_b8(global_ptr: _ods_ir.Value, lds_ptr: _ods_ir.Value, offset: _Union[int, _ods_ir.IntegerAttr], cpol: _Union[int, _ods_ir.IntegerAttr], mask: _ods_ir.Value[_ods_ir.IntegerType], *, alias_scopes: _Optional[_Union[_Any, _ods_ir.ArrayAttr]] = None, noalias_scopes: _Optional[_Union[_Any, _ods_ir.ArrayAttr]] = None, tbaa: _Optional[_Union[_Any, _ods_ir.ArrayAttr]] = None, loc: _Optional[_ods_ir.Location] = None, ip: _Optional[_ods_ir.InsertionPoint] = None) -> ClusterLoadAsyncToLDSB8Op:
  return ClusterLoadAsyncToLDSB8Op(globalPtr=global_ptr, ldsPtr=lds_ptr, offset=offset, cpol=cpol, mask=mask, alias_scopes=alias_scopes, noalias_scopes=noalias_scopes, tbaa=tbaa, loc=loc, ip=ip)

@_ods_cext.register_operation(_Dialect)
class ClusterLoadAsyncToLDSB32Op(_ods_ir.OpView):
  r"""
  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>
  ```
  """

  OPERATION_NAME = "rocdl.cluster.load.async.to.lds.b32"

  _ODS_REGIONS = (0, True)

  def __init__(self, globalPtr: _ods_ir.Value, ldsPtr: _ods_ir.Value, offset: _Union[int, _ods_ir.IntegerAttr], cpol: _Union[int, _ods_ir.IntegerAttr], mask: _ods_ir.Value[_ods_ir.IntegerType], *, alias_scopes: _Optional[_Union[_Any, _ods_ir.ArrayAttr]] = None, noalias_scopes: _Optional[_Union[_Any, _ods_ir.ArrayAttr]] = None, tbaa: _Optional[_Union[_Any, _ods_ir.ArrayAttr]] = None, loc: _Optional[_ods_ir.Location] = None, ip: _Optional[_ods_ir.InsertionPoint] = None):
    operands = []
    attributes = {}
    regions = None
    operands.append(globalPtr)
    operands.append(ldsPtr)
    operands.append(mask)
    _ods_context = _ods_get_default_loc_context(loc)
    attributes["offset"] = (offset if (
    isinstance(offset, _ods_ir.Attribute) or
    not _ods_ir.AttrBuilder.contains('I32Attr')) else
      _ods_ir.AttrBuilder.get('I32Attr')(offset, context=_ods_context))
    attributes["cpol"] = (cpol if (
    isinstance(cpol, _ods_ir.Attribute) or
    not _ods_ir.AttrBuilder.contains('I32Attr')) else
      _ods_ir.AttrBuilder.get('I32Attr')(cpol, context=_ods_context))
    if alias_scopes is not None: attributes["alias_scopes"] = (alias_scopes if (
        isinstance(alias_scopes, _ods_ir.Attribute) or
        not _ods_ir.AttrBuilder.contains('LLVM_AliasScopeArrayAttr')) else
          _ods_ir.AttrBuilder.get('LLVM_AliasScopeArrayAttr')(alias_scopes, context=_ods_context))
    if noalias_scopes is not None: attributes["noalias_scopes"] = (noalias_scopes if (
        isinstance(noalias_scopes, _ods_ir.Attribute) or
        not _ods_ir.AttrBuilder.contains('LLVM_AliasScopeArrayAttr')) else
          _ods_ir.AttrBuilder.get('LLVM_AliasScopeArrayAttr')(noalias_scopes, context=_ods_context))
    if tbaa is not None: attributes["tbaa"] = (tbaa if (
        isinstance(tbaa, _ods_ir.Attribute) or
        not _ods_ir.AttrBuilder.contains('LLVM_TBAATagArrayAttr')) else
          _ods_ir.AttrBuilder.get('LLVM_TBAATagArrayAttr')(tbaa, context=_ods_context))
    results = []
    _ods_successors = None
    super().__init__(self.OPERATION_NAME, self._ODS_REGIONS, self._ODS_OPERAND_SEGMENTS, self._ODS_RESULT_SEGMENTS, attributes=attributes, results=results, operands=operands, successors=_ods_successors, regions=regions, loc=loc, ip=ip)

  @builtins.property
  def globalPtr(self) -> _ods_ir.Value:
    return self.operation.operands[0]

  @builtins.property
  def ldsPtr(self) -> _ods_ir.Value:
    return self.operation.operands[1]

  @builtins.property
  def mask(self) -> _ods_ir.Value[_ods_ir.IntegerType]:
    return self.operation.operands[2]

  @builtins.property
  def offset(self) -> _ods_ir.IntegerAttr:
    return self.operation.attributes["offset"]

  @offset.setter
  def offset(self, value: _ods_ir.IntegerAttr):
    if value is None:
      raise ValueError("'None' not allowed as value for mandatory attributes")
    self.operation.attributes["offset"] = value

  @builtins.property
  def cpol(self) -> _ods_ir.IntegerAttr:
    return self.operation.attributes["cpol"]

  @cpol.setter
  def cpol(self, value: _ods_ir.IntegerAttr):
    if value is None:
      raise ValueError("'None' not allowed as value for mandatory attributes")
    self.operation.attributes["cpol"] = value

  @builtins.property
  def alias_scopes(self) -> _Optional[_ods_ir.ArrayAttr]:
    if "alias_scopes" not in self.operation.attributes:
      return None
    return self.operation.attributes["alias_scopes"]

  @alias_scopes.setter
  def alias_scopes(self, value: _Optional[_ods_ir.ArrayAttr]):
    if value is not None:
      self.operation.attributes["alias_scopes"] = value
    elif "alias_scopes" in self.operation.attributes:
      del self.operation.attributes["alias_scopes"]

  @alias_scopes.deleter
  def alias_scopes(self):
    del self.operation.attributes["alias_scopes"]

  @builtins.property
  def noalias_scopes(self) -> _Optional[_ods_ir.ArrayAttr]:
    if "noalias_scopes" not in self.operation.attributes:
      return None
    return self.operation.attributes["noalias_scopes"]

  @noalias_scopes.setter
  def noalias_scopes(self, value: _Optional[_ods_ir.ArrayAttr]):
    if value is not None:
      self.operation.attributes["noalias_scopes"] = value
    elif "noalias_scopes" in self.operation.attributes:
      del self.operation.attributes["noalias_scopes"]

  @noalias_scopes.deleter
  def noalias_scopes(self):
    del self.operation.attributes["noalias_scopes"]

  @builtins.property
  def tbaa(self) -> _Optional[_ods_ir.ArrayAttr]:
    if "tbaa" not in self.operation.attributes:
      return None
    return self.operation.attributes["tbaa"]

  @tbaa.setter
  def tbaa(self, value: _Optional[_ods_ir.ArrayAttr]):
    if value is not None:
      self.operation.attributes["tbaa"] = value
    elif "tbaa" in self.operation.attributes:
      del self.operation.attributes["tbaa"]

  @tbaa.deleter
  def tbaa(self):
    del self.operation.attributes["tbaa"]

@_ods_cext.register_op_adaptor(ClusterLoadAsyncToLDSB32Op)
class ClusterLoadAsyncToLDSB32OpAdaptor(_ods_ir.OpAdaptor):
  OPERATION_NAME = "rocdl.cluster.load.async.to.lds.b32"

  @builtins.property
  def globalPtr(self) -> _ods_ir.Value:
    return self.operands[0]

  @builtins.property
  def ldsPtr(self) -> _ods_ir.Value:
    return self.operands[1]

  @builtins.property
  def mask(self) -> _ods_ir.Value[_ods_ir.IntegerType]:
    return self.operands[2]

  @builtins.property
  def offset(self) -> _ods_ir.IntegerAttr:
    return self.attributes["offset"]

  @builtins.property
  def cpol(self) -> _ods_ir.IntegerAttr:
    return self.attributes["cpol"]

  @builtins.property
  def alias_scopes(self) -> _Optional[_ods_ir.ArrayAttr]:
    if "alias_scopes" not in self.attributes:
      return None
    return self.attributes["alias_scopes"]

  @builtins.property
  def noalias_scopes(self) -> _Optional[_ods_ir.ArrayAttr]:
    if "noalias_scopes" not in self.attributes:
      return None
    return self.attributes["noalias_scopes"]

  @builtins.property
  def tbaa(self) -> _Optional[_ods_ir.ArrayAttr]:
    if "tbaa" not in self.attributes:
      return None
    return self.attributes["tbaa"]

def cluster_load_async_to_lds_b32(global_ptr: _ods_ir.Value, lds_ptr: _ods_ir.Value, offset: _Union[int, _ods_ir.IntegerAttr], cpol: _Union[int, _ods_ir.IntegerAttr], mask: _ods_ir.Value[_ods_ir.IntegerType], *, alias_scopes: _Optional[_Union[_Any, _ods_ir.ArrayAttr]] = None, noalias_scopes: _Optional[_Union[_Any, _ods_ir.ArrayAttr]] = None, tbaa: _Optional[_Union[_Any, _ods_ir.ArrayAttr]] = None, loc: _Optional[_ods_ir.Location] = None, ip: _Optional[_ods_ir.InsertionPoint] = None) -> ClusterLoadAsyncToLDSB32Op:
  return ClusterLoadAsyncToLDSB32Op(globalPtr=global_ptr, ldsPtr=lds_ptr, offset=offset, cpol=cpol, mask=mask, alias_scopes=alias_scopes, noalias_scopes=noalias_scopes, tbaa=tbaa, loc=loc, ip=ip)

@_ods_cext.register_operation(_Dialect)
class ClusterLoadAsyncToLDSB64Op(_ods_ir.OpView):
  r"""
  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>
  ```
  """

  OPERATION_NAME = "rocdl.cluster.load.async.to.lds.b64"

  _ODS_REGIONS = (0, True)

  def __init__(self, globalPtr: _ods_ir.Value, ldsPtr: _ods_ir.Value, offset: _Union[int, _ods_ir.IntegerAttr], cpol: _Union[int, _ods_ir.IntegerAttr], mask: _ods_ir.Value[_ods_ir.IntegerType], *, alias_scopes: _Optional[_Union[_Any, _ods_ir.ArrayAttr]] = None, noalias_scopes: _Optional[_Union[_Any, _ods_ir.ArrayAttr]] = None, tbaa: _Optional[_Union[_Any, _ods_ir.ArrayAttr]] = None, loc: _Optional[_ods_ir.Location] = None, ip: _Optional[_ods_ir.InsertionPoint] = None):
    operands = []
    attributes = {}
    regions = None
    operands.append(globalPtr)
    operands.append(ldsPtr)
    operands.append(mask)
    _ods_context = _ods_get_default_loc_context(loc)
    attributes["offset"] = (offset if (
    isinstance(offset, _ods_ir.Attribute) or
    not _ods_ir.AttrBuilder.contains('I32Attr')) else
      _ods_ir.AttrBuilder.get('I32Attr')(offset, context=_ods_context))
    attributes["cpol"] = (cpol if (
    isinstance(cpol, _ods_ir.Attribute) or
    not _ods_ir.AttrBuilder.contains('I32Attr')) else
      _ods_ir.AttrBuilder.get('I32Attr')(cpol, context=_ods_context))
    if alias_scopes is not None: attributes["alias_scopes"] = (alias_scopes if (
        isinstance(alias_scopes, _ods_ir.Attribute) or
        not _ods_ir.AttrBuilder.contains('LLVM_AliasScopeArrayAttr')) else
          _ods_ir.AttrBuilder.get('LLVM_AliasScopeArrayAttr')(alias_scopes, context=_ods_context))
    if noalias_scopes is not None: attributes["noalias_scopes"] = (noalias_scopes if (
        isinstance(noalias_scopes, _ods_ir.Attribute) or
        not _ods_ir.AttrBuilder.contains('LLVM_AliasScopeArrayAttr')) else
          _ods_ir.AttrBuilder.get('LLVM_AliasScopeArrayAttr')(noalias_scopes, context=_ods_context))
    if tbaa is not None: attributes["tbaa"] = (tbaa if (
        isinstance(tbaa, _ods_ir.Attribute) or
        not _ods_ir.AttrBuilder.contains('LLVM_TBAATagArrayAttr')) else
          _ods_ir.AttrBuilder.get('LLVM_TBAATagArrayAttr')(tbaa, context=_ods_context))
    results = []
    _ods_successors = None
    super().__init__(self.OPERATION_NAME, self._ODS_REGIONS, self._ODS_OPERAND_SEGMENTS, self._ODS_RESULT_SEGMENTS, attributes=attributes, results=results, operands=operands, successors=_ods_successors, regions=regions, loc=loc, ip=ip)

  @builtins.property
  def globalPtr(self) -> _ods_ir.Value:
    return self.operation.operands[0]

  @builtins.property
  def ldsPtr(self) -> _ods_ir.Value:
    return self.operation.operands[1]

  @builtins.property
  def mask(self) -> _ods_ir.Value[_ods_ir.IntegerType]:
    return self.operation.operands[2]

  @builtins.property
  def offset(self) -> _ods_ir.IntegerAttr:
    return self.operation.attributes["offset"]

  @offset.setter
  def offset(self, value: _ods_ir.IntegerAttr):
    if value is None:
      raise ValueError("'None' not allowed as value for mandatory attributes")
    self.operation.attributes["offset"] = value

  @builtins.property
  def cpol(self) -> _ods_ir.IntegerAttr:
    return self.operation.attributes["cpol"]

  @cpol.setter
  def cpol(self, value: _ods_ir.IntegerAttr):
    if value is None:
      raise ValueError("'None' not allowed as value for mandatory attributes")
    self.operation.attributes["cpol"] = value

  @builtins.property
  def alias_scopes(self) -> _Optional[_ods_ir.ArrayAttr]:
    if "alias_scopes" not in self.operation.attributes:
      return None
    return self.operation.attributes["alias_scopes"]

  @alias_scopes.setter
  def alias_scopes(self, value: _Optional[_ods_ir.ArrayAttr]):
    if value is not None:
      self.operation.attributes["alias_scopes"] = value
    elif "alias_scopes" in self.operation.attributes:
      del self.operation.attributes["alias_scopes"]

  @alias_scopes.deleter
  def alias_scopes(self):
    del self.operation.attributes["alias_scopes"]

  @builtins.property
  def noalias_scopes(self) -> _Optional[_ods_ir.ArrayAttr]:
    if "noalias_scopes" not in self.operation.attributes:
      return None
    return self.operation.attributes["noalias_scopes"]

  @noalias_scopes.setter
  def noalias_scopes(self, value: _Optional[_ods_ir.ArrayAttr]):
    if value is not None:
      self.operation.attributes["noalias_scopes"] = value
    elif "noalias_scopes" in self.operation.attributes:
      del self.operation.attributes["noalias_scopes"]

  @noalias_scopes.deleter
  def noalias_scopes(self):
    del self.operation.attributes["noalias_scopes"]

  @builtins.property
  def tbaa(self) -> _Optional[_ods_ir.ArrayAttr]:
    if "tbaa" not in self.operation.attributes:
      return None
    return self.operation.attributes["tbaa"]

  @tbaa.setter
  def tbaa(self, value: _Optional[_ods_ir.ArrayAttr]):
    if value is not None:
      self.operation.attributes["tbaa"] = value
    elif "tbaa" in self.operation.attributes:
      del self.operation.attributes["tbaa"]

  @tbaa.deleter
  def tbaa(self):
    del self.operation.attributes["tbaa"]

@_ods_cext.register_op_adaptor(ClusterLoadAsyncToLDSB64Op)
class ClusterLoadAsyncToLDSB64OpAdaptor(_ods_ir.OpAdaptor):
  OPERATION_NAME = "rocdl.cluster.load.async.to.lds.b64"

  @builtins.property
  def globalPtr(self) -> _ods_ir.Value:
    return self.operands[0]

  @builtins.property
  def ldsPtr(self) -> _ods_ir.Value:
    return self.operands[1]

  @builtins.property
  def mask(self) -> _ods_ir.Value[_ods_ir.IntegerType]:
    return self.operands[2]

  @builtins.property
  def offset(self) -> _ods_ir.IntegerAttr:
    return self.attributes["offset"]

  @builtins.property
  def cpol(self) -> _ods_ir.IntegerAttr:
    return self.attributes["cpol"]

  @builtins.property
  def alias_scopes(self) -> _Optional[_ods_ir.ArrayAttr]:
    if "alias_scopes" not in self.attributes:
      return None
    return self.attributes["alias_scopes"]

  @builtins.property
  def noalias_scopes(self) -> _Optional[_ods_ir.ArrayAttr]:
    if "noalias_scopes" not in self.attributes:
      return None
    return self.attributes["noalias_scopes"]

  @builtins.property
  def tbaa(self) -> _Optional[_ods_ir.ArrayAttr]:
    if "tbaa" not in self.attributes:
      return None
    return self.attributes["tbaa"]

def cluster_load_async_to_lds_b64(global_ptr: _ods_ir.Value, lds_ptr: _ods_ir.Value, offset: _Union[int, _ods_ir.IntegerAttr], cpol: _Union[int, _ods_ir.IntegerAttr], mask: _ods_ir.Value[_ods_ir.IntegerType], *, alias_scopes: _Optional[_Union[_Any, _ods_ir.ArrayAttr]] = None, noalias_scopes: _Optional[_Union[_Any, _ods_ir.ArrayAttr]] = None, tbaa: _Optional[_Union[_Any, _ods_ir.ArrayAttr]] = None, loc: _Optional[_ods_ir.Location] = None, ip: _Optional[_ods_ir.InsertionPoint] = None) -> ClusterLoadAsyncToLDSB64Op:
  return ClusterLoadAsyncToLDSB64Op(globalPtr=global_ptr, ldsPtr=lds_ptr, offset=offset, cpol=cpol, mask=mask, alias_scopes=alias_scopes, noalias_scopes=noalias_scopes, tbaa=tbaa, loc=loc, ip=ip)

@_ods_cext.register_operation(_Dialect)
class ClusterLoadAsyncToLDSB128Op(_ods_ir.OpView):
  r"""
  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>
  ```
  """

  OPERATION_NAME = "rocdl.cluster.load.async.to.lds.b128"

  _ODS_REGIONS = (0, True)

  def __init__(self, globalPtr: _ods_ir.Value, ldsPtr: _ods_ir.Value, offset: _Union[int, _ods_ir.IntegerAttr], cpol: _Union[int, _ods_ir.IntegerAttr], mask: _ods_ir.Value[_ods_ir.IntegerType], *, alias_scopes: _Optional[_Union[_Any, _ods_ir.ArrayAttr]] = None, noalias_scopes: _Optional[_Union[_Any, _ods_ir.ArrayAttr]] = None, tbaa: _Optional[_Union[_Any, _ods_ir.ArrayAttr]] = None, loc: _Optional[_ods_ir.Location] = None, ip: _Optional[_ods_ir.InsertionPoint] = None):
    operands = []
    attributes = {}
    regions = None
    operands.append(globalPtr)
    operands.append(ldsPtr)
    operands.append(mask)
    _ods_context = _ods_get_default_loc_context(loc)
    attributes["offset"] = (offset if (
    isinstance(offset, _ods_ir.Attribute) or
    not _ods_ir.AttrBuilder.contains('I32Attr')) else
      _ods_ir.AttrBuilder.get('I32Attr')(offset, context=_ods_context))
    attributes["cpol"] = (cpol if (
    isinstance(cpol, _ods_ir.Attribute) or
    not _ods_ir.AttrBuilder.contains('I32Attr')) else
      _ods_ir.AttrBuilder.get('I32Attr')(cpol, context=_ods_context))
    if alias_scopes is not None: attributes["alias_scopes"] = (alias_scopes if (
        isinstance(alias_scopes, _ods_ir.Attribute) or
        not _ods_ir.AttrBuilder.contains('LLVM_AliasScopeArrayAttr')) else
          _ods_ir.AttrBuilder.get('LLVM_AliasScopeArrayAttr')(alias_scopes, context=_ods_context))
    if noalias_scopes is not None: attributes["noalias_scopes"] = (noalias_scopes if (
        isinstance(noalias_scopes, _ods_ir.Attribute) or
        not _ods_ir.AttrBuilder.contains('LLVM_AliasScopeArrayAttr')) else
          _ods_ir.AttrBuilder.get('LLVM_AliasScopeArrayAttr')(noalias_scopes, context=_ods_context))
    if tbaa is not None: attributes["tbaa"] = (tbaa if (
        isinstance(tbaa, _ods_ir.Attribute) or
        not _ods_ir.AttrBuilder.contains('LLVM_TBAATagArrayAttr')) else
          _ods_ir.AttrBuilder.get('LLVM_TBAATagArrayAttr')(tbaa, context=_ods_context))
    results = []
    _ods_successors = None
    super().__init__(self.OPERATION_NAME, self._ODS_REGIONS, self._ODS_OPERAND_SEGMENTS, self._ODS_RESULT_SEGMENTS, attributes=attributes, results=results, operands=operands, successors=_ods_successors, regions=regions, loc=loc, ip=ip)

  @builtins.property
  def globalPtr(self) -> _ods_ir.Value:
    return self.operation.operands[0]

  @builtins.property
  def ldsPtr(self) -> _ods_ir.Value:
    return self.operation.operands[1]

  @builtins.property
  def mask(self) -> _ods_ir.Value[_ods_ir.IntegerType]:
    return self.operation.operands[2]

  @builtins.property
  def offset(self) -> _ods_ir.IntegerAttr:
    return self.operation.attributes["offset"]

  @offset.setter
  def offset(self, value: _ods_ir.IntegerAttr):
    if value is None:
      raise ValueError("'None' not allowed as value for mandatory attributes")
    self.operation.attributes["offset"] = value

  @builtins.property
  def cpol(self) -> _ods_ir.IntegerAttr:
    return self.operation.attributes["cpol"]

  @cpol.setter
  def cpol(self, value: _ods_ir.IntegerAttr):
    if value is None:
      raise ValueError("'None' not allowed as value for mandatory attributes")
    self.operation.attributes["cpol"] = value

  @builtins.property
  def alias_scopes(self) -> _Optional[_ods_ir.ArrayAttr]:
    if "alias_scopes" not in self.operation.attributes:
      return None
    return self.operation.attributes["alias_scopes"]

  @alias_scopes.setter
  def alias_scopes(self, value: _Optional[_ods_ir.ArrayAttr]):
    if value is not None:
      self.operation.attributes["alias_scopes"] = value
    elif "alias_scopes" in self.operation.attributes:
      del self.operation.attributes["alias_scopes"]

  @alias_scopes.deleter
  def alias_scopes(self):
    del self.operation.attributes["alias_scopes"]

  @builtins.property
  def noalias_scopes(self) -> _Optional[_ods_ir.ArrayAttr]:
    if "noalias_scopes" not in self.operation.attributes:
      return None
    return self.operation.attributes["noalias_scopes"]

  @noalias_scopes.setter
  def noalias_scopes(self, value: _Optional[_ods_ir.ArrayAttr]):
    if value is not None:
      self.operation.attributes["noalias_scopes"] = value
    elif "noalias_scopes" in self.operation.attributes:
      del self.operation.attributes["noalias_scopes"]

  @noalias_scopes.deleter
  def noalias_scopes(self):
    del self.operation.attributes["noalias_scopes"]

  @builtins.property
  def tbaa(self) -> _Optional[_ods_ir.ArrayAttr]:
    if "tbaa" not in self.operation.attributes:
      return None
    return self.operation.attributes["tbaa"]

  @tbaa.setter
  def tbaa(self, value: _Optional[_ods_ir.ArrayAttr]):
    if value is not None:
      self.operation.attributes["tbaa"] = value
    elif "tbaa" in self.operation.attributes:
      del self.operation.attributes["tbaa"]

  @tbaa.deleter
  def tbaa(self):
    del self.operation.attributes["tbaa"]

@_ods_cext.register_op_adaptor(ClusterLoadAsyncToLDSB128Op)
class ClusterLoadAsyncToLDSB128OpAdaptor(_ods_ir.OpAdaptor):
  OPERATION_NAME = "rocdl.cluster.load.async.to.lds.b128"

  @builtins.property
  def globalPtr(self) -> _ods_ir.Value:
    return self.operands[0]

  @builtins.property
  def ldsPtr(self) -> _ods_ir.Value:
    return self.operands[1]

  @builtins.property
  def mask(self) -> _ods_ir.Value[_ods_ir.IntegerType]:
    return self.operands[2]

  @builtins.property
  def offset(self) -> _ods_ir.IntegerAttr:
    return self.attributes["offset"]

  @builtins.property
  def cpol(self) -> _ods_ir.IntegerAttr:
    return self.attributes["cpol"]

  @builtins.property
  def alias_scopes(self) -> _Optional[_ods_ir.ArrayAttr]:
    if "alias_scopes" not in self.attributes:
      return None
    return self.attributes["alias_scopes"]

  @builtins.property
  def noalias_scopes(self) -> _Optional[_ods_ir.ArrayAttr]:
    if "noalias_scopes" not in self.attributes:
      return None
    return self.attributes["noalias_scopes"]

  @builtins.property
  def tbaa(self) -> _Optional[_ods_ir.ArrayAttr]:
    if "tbaa" not in self.attributes:
      return None
    return self.attributes["tbaa"]

def cluster_load_async_to_lds_b128(global_ptr: _ods_ir.Value, lds_ptr: _ods_ir.Value, offset: _Union[int, _ods_ir.IntegerAttr], cpol: _Union[int, _ods_ir.IntegerAttr], mask: _ods_ir.Value[_ods_ir.IntegerType], *, alias_scopes: _Optional[_Union[_Any, _ods_ir.ArrayAttr]] = None, noalias_scopes: _Optional[_Union[_Any, _ods_ir.ArrayAttr]] = None, tbaa: _Optional[_Union[_Any, _ods_ir.ArrayAttr]] = None, loc: _Optional[_ods_ir.Location] = None, ip: _Optional[_ods_ir.InsertionPoint] = None) -> ClusterLoadAsyncToLDSB128Op:
  return ClusterLoadAsyncToLDSB128Op(globalPtr=global_ptr, ldsPtr=lds_ptr, offset=offset, cpol=cpol, mask=mask, alias_scopes=alias_scopes, noalias_scopes=noalias_scopes, tbaa=tbaa, loc=loc, ip=ip)

@_ods_cext.register_operation(_Dialect)
class ClusterWorkgroupIdXOp(_ods_ir.OpView):
  r"""
  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, 0, 64> : i32
  ```
  """

  OPERATION_NAME = "rocdl.cluster.workgroup.id.x"

  _ODS_REGIONS = (0, True)

  def __init__(self, res: _ods_ir.Type, *, range: _Optional[_Union[_Any, _ods_ir.Attribute]] = None, loc: _Optional[_ods_ir.Location] = None, ip: _Optional[_ods_ir.InsertionPoint] = None):
    operands = []
    attributes = {}
    regions = None
    _ods_context = _ods_get_default_loc_context(loc)
    if range is not None: attributes["range"] = (range if (
        isinstance(range, _ods_ir.Attribute) or
        not _ods_ir.AttrBuilder.contains('LLVM_ConstantRangeAttr')) else
          _ods_ir.AttrBuilder.get('LLVM_ConstantRangeAttr')(range, context=_ods_context))
    results = []
    results.append(res)
    _ods_successors = None
    super().__init__(self.OPERATION_NAME, self._ODS_REGIONS, self._ODS_OPERAND_SEGMENTS, self._ODS_RESULT_SEGMENTS, attributes=attributes, results=results, operands=operands, successors=_ods_successors, regions=regions, loc=loc, ip=ip)

  @builtins.property
  def range(self) -> _Optional[_ods_ir.Attribute]:
    if "range" not in self.operation.attributes:
      return None
    return self.operation.attributes["range"]

  @range.setter
  def range(self, value: _Optional[_ods_ir.Attribute]):
    if value is not None:
      self.operation.attributes["range"] = value
    elif "range" in self.operation.attributes:
      del self.operation.attributes["range"]

  @range.deleter
  def range(self):
    del self.operation.attributes["range"]

  @builtins.property
  def res(self) -> _ods_ir.OpResult:
    return self.operation.results[0]

@_ods_cext.register_op_adaptor(ClusterWorkgroupIdXOp)
class ClusterWorkgroupIdXOpAdaptor(_ods_ir.OpAdaptor):
  OPERATION_NAME = "rocdl.cluster.workgroup.id.x"

  @builtins.property
  def range(self) -> _Optional[_ods_ir.Attribute]:
    if "range" not in self.attributes:
      return None
    return self.attributes["range"]

def cluster_workgroup_id_x(res: _ods_ir.Type, *, range: _Optional[_Union[_Any, _ods_ir.Attribute]] = None, loc: _Optional[_ods_ir.Location] = None, ip: _Optional[_ods_ir.InsertionPoint] = None) -> _ods_ir.OpResult:
  return ClusterWorkgroupIdXOp(res=res, range=range, loc=loc, ip=ip).result

@_ods_cext.register_operation(_Dialect)
class ClusterWorkgroupIdYOp(_ods_ir.OpView):
  r"""
  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, 0, 64> : i32
  ```
  """

  OPERATION_NAME = "rocdl.cluster.workgroup.id.y"

  _ODS_REGIONS = (0, True)

  def __init__(self, res: _ods_ir.Type, *, range: _Optional[_Union[_Any, _ods_ir.Attribute]] = None, loc: _Optional[_ods_ir.Location] = None, ip: _Optional[_ods_ir.InsertionPoint] = None):
    operands = []
    attributes = {}
    regions = None
    _ods_context = _ods_get_default_loc_context(loc)
    if range is not None: attributes["range"] = (range if (
        isinstance(range, _ods_ir.Attribute) or
        not _ods_ir.AttrBuilder.contains('LLVM_ConstantRangeAttr')) else
          _ods_ir.AttrBuilder.get('LLVM_ConstantRangeAttr')(range, context=_ods_context))
    results = []
    results.append(res)
    _ods_successors = None
    super().__init__(self.OPERATION_NAME, self._ODS_REGIONS, self._ODS_OPERAND_SEGMENTS, self._ODS_RESULT_SEGMENTS, attributes=attributes, results=results, operands=operands, successors=_ods_successors, regions=regions, loc=loc, ip=ip)

  @builtins.property
  def range(self) -> _Optional[_ods_ir.Attribute]:
    if "range" not in self.operation.attributes:
      return None
    return self.operation.attributes["range"]

  @range.setter
  def range(self, value: _Optional[_ods_ir.Attribute]):
    if value is not None:
      self.operation.attributes["range"] = value
    elif "range" in self.operation.attributes:
      del self.operation.attributes["range"]

  @range.deleter
  def range(self):
    del self.operation.attributes["range"]

  @builtins.property
  def res(self) -> _ods_ir.OpResult:
    return self.operation.results[0]

@_ods_cext.register_op_adaptor(ClusterWorkgroupIdYOp)
class ClusterWorkgroupIdYOpAdaptor(_ods_ir.OpAdaptor):
  OPERATION_NAME = "rocdl.cluster.workgroup.id.y"

  @builtins.property
  def range(self) -> _Optional[_ods_ir.Attribute]:
    if "range" not in self.attributes:
      return None
    return self.attributes["range"]

def cluster_workgroup_id_y(res: _ods_ir.Type, *, range: _Optional[_Union[_Any, _ods_ir.Attribute]] = None, loc: _Optional[_ods_ir.Location] = None, ip: _Optional[_ods_ir.InsertionPoint] = None) -> _ods_ir.OpResult:
  return ClusterWorkgroupIdYOp(res=res, range=range, loc=loc, ip=ip).result

@_ods_cext.register_operation(_Dialect)
class ClusterWorkgroupIdZOp(_ods_ir.OpView):
  r"""
  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, 0, 64> : i32
  ```
  """

  OPERATION_NAME = "rocdl.cluster.workgroup.id.z"

  _ODS_REGIONS = (0, True)

  def __init__(self, res: _ods_ir.Type, *, range: _Optional[_Union[_Any, _ods_ir.Attribute]] = None, loc: _Optional[_ods_ir.Location] = None, ip: _Optional[_ods_ir.InsertionPoint] = None):
    operands = []
    attributes = {}
    regions = None
    _ods_context = _ods_get_default_loc_context(loc)
    if range is not None: attributes["range"] = (range if (
        isinstance(range, _ods_ir.Attribute) or
        not _ods_ir.AttrBuilder.contains('LLVM_ConstantRangeAttr')) else
          _ods_ir.AttrBuilder.get('LLVM_ConstantRangeAttr')(range, context=_ods_context))
    results = []
    results.append(res)
    _ods_successors = None
    super().__init__(self.OPERATION_NAME, self._ODS_REGIONS, self._ODS_OPERAND_SEGMENTS, self._ODS_RESULT_SEGMENTS, attributes=attributes, results=results, operands=operands, successors=_ods_successors, regions=regions, loc=loc, ip=ip)

  @builtins.property
  def range(self) -> _Optional[_ods_ir.Attribute]:
    if "range" not in self.operation.attributes:
      return None
    return self.operation.attributes["range"]

  @range.setter
  def range(self, value: _Optional[_ods_ir.Attribute]):
    if value is not None:
      self.operation.attributes["range"] = value
    elif "range" in self.operation.attributes:
      del self.operation.attributes["range"]

  @range.deleter
  def range(self):
    del self.operation.attributes["range"]

  @builtins.property
  def res(self) -> _ods_ir.OpResult:
    return self.operation.results[0]

@_ods_cext.register_op_adaptor(ClusterWorkgroupIdZOp)
class ClusterWorkgroupIdZOpAdaptor(_ods_ir.OpAdaptor):
  OPERATION_NAME = "rocdl.cluster.workgroup.id.z"

  @builtins.property
  def range(self) -> _Optional[_ods_ir.Attribute]:
    if "range" not in self.attributes:
      return None
    return self.attributes["range"]

def cluster_workgroup_id_z(res: _ods_ir.Type, *, range: _Optional[_Union[_Any, _ods_ir.Attribute]] = None, loc: _Optional[_ods_ir.Location] = None, ip: _Optional[_ods_ir.InsertionPoint] = None) -> _ods_ir.OpResult:
  return ClusterWorkgroupIdZOp(res=res, range=range, loc=loc, ip=ip).result

@_ods_cext.register_operation(_Dialect)
class CvtF32Bf8Op(_ods_ir.OpView):
  r"""
  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
  ```
  """

  OPERATION_NAME = "rocdl.cvt.f32.bf8"

  _ODS_REGIONS = (0, True)

  def __init__(self, res: _ods_ir.Type, srcA: _ods_ir.Value[_ods_ir.IntegerType], byteSel: _Union[int, _ods_ir.IntegerAttr], *, loc: _Optional[_ods_ir.Location] = None, ip: _Optional[_ods_ir.InsertionPoint] = None):
    operands = []
    attributes = {}
    regions = None
    operands.append(srcA)
    _ods_context = _ods_get_default_loc_context(loc)
    attributes["byteSel"] = (byteSel if (
    isinstance(byteSel, _ods_ir.Attribute) or
    not _ods_ir.AttrBuilder.contains('I32Attr')) else
      _ods_ir.AttrBuilder.get('I32Attr')(byteSel, context=_ods_context))
    results = []
    results.append(res)
    _ods_successors = None
    super().__init__(self.OPERATION_NAME, self._ODS_REGIONS, self._ODS_OPERAND_SEGMENTS, self._ODS_RESULT_SEGMENTS, attributes=attributes, results=results, operands=operands, successors=_ods_successors, regions=regions, loc=loc, ip=ip)

  @builtins.property
  def srcA(self) -> _ods_ir.Value[_ods_ir.IntegerType]:
    return self.operation.operands[0]

  @builtins.property
  def byteSel(self) -> _ods_ir.IntegerAttr:
    return self.operation.attributes["byteSel"]

  @byteSel.setter
  def byteSel(self, value: _ods_ir.IntegerAttr):
    if value is None:
      raise ValueError("'None' not allowed as value for mandatory attributes")
    self.operation.attributes["byteSel"] = value

  @builtins.property
  def res(self) -> _ods_ir.OpResult:
    return self.operation.results[0]

@_ods_cext.register_op_adaptor(CvtF32Bf8Op)
class CvtF32Bf8OpAdaptor(_ods_ir.OpAdaptor):
  OPERATION_NAME = "rocdl.cvt.f32.bf8"

  @builtins.property
  def srcA(self) -> _ods_ir.Value[_ods_ir.IntegerType]:
    return self.operands[0]

  @builtins.property
  def byteSel(self) -> _ods_ir.IntegerAttr:
    return self.attributes["byteSel"]

def cvt_f32_bf8(res: _ods_ir.Type, src_a: _ods_ir.Value[_ods_ir.IntegerType], byte_sel: _Union[int, _ods_ir.IntegerAttr], *, loc: _Optional[_ods_ir.Location] = None, ip: _Optional[_ods_ir.InsertionPoint] = None) -> _ods_ir.OpResult:
  return CvtF32Bf8Op(res=res, srcA=src_a, byteSel=byte_sel, loc=loc, ip=ip).result

@_ods_cext.register_operation(_Dialect)
class CvtF32Fp8Op(_ods_ir.OpView):
  r"""
  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
  ```
  """

  OPERATION_NAME = "rocdl.cvt.f32.fp8"

  _ODS_REGIONS = (0, True)

  def __init__(self, res: _ods_ir.Type, srcA: _ods_ir.Value[_ods_ir.IntegerType], byteSel: _Union[int, _ods_ir.IntegerAttr], *, loc: _Optional[_ods_ir.Location] = None, ip: _Optional[_ods_ir.InsertionPoint] = None):
    operands = []
    attributes = {}
    regions = None
    operands.append(srcA)
    _ods_context = _ods_get_default_loc_context(loc)
    attributes["byteSel"] = (byteSel if (
    isinstance(byteSel, _ods_ir.Attribute) or
    not _ods_ir.AttrBuilder.contains('I32Attr')) else
      _ods_ir.AttrBuilder.get('I32Attr')(byteSel, context=_ods_context))
    results = []
    results.append(res)
    _ods_successors = None
    super().__init__(self.OPERATION_NAME, self._ODS_REGIONS, self._ODS_OPERAND_SEGMENTS, self._ODS_RESULT_SEGMENTS, attributes=attributes, results=results, operands=operands, successors=_ods_successors, regions=regions, loc=loc, ip=ip)

  @builtins.property
  def srcA(self) -> _ods_ir.Value[_ods_ir.IntegerType]:
    return self.operation.operands[0]

  @builtins.property
  def byteSel(self) -> _ods_ir.IntegerAttr:
    return self.operation.attributes["byteSel"]

  @byteSel.setter
  def byteSel(self, value: _ods_ir.IntegerAttr):
    if value is None:
      raise ValueError("'None' not allowed as value for mandatory attributes")
    self.operation.attributes["byteSel"] = value

  @builtins.property
  def res(self) -> _ods_ir.OpResult:
    return self.operation.results[0]

@_ods_cext.register_op_adaptor(CvtF32Fp8Op)
class CvtF32Fp8OpAdaptor(_ods_ir.OpAdaptor):
  OPERATION_NAME = "rocdl.cvt.f32.fp8"

  @builtins.property
  def srcA(self) -> _ods_ir.Value[_ods_ir.IntegerType]:
    return self.operands[0]

  @builtins.property
  def byteSel(self) -> _ods_ir.IntegerAttr:
    return self.attributes["byteSel"]

def cvt_f32_fp8(res: _ods_ir.Type, src_a: _ods_ir.Value[_ods_ir.IntegerType], byte_sel: _Union[int, _ods_ir.IntegerAttr], *, loc: _Optional[_ods_ir.Location] = None, ip: _Optional[_ods_ir.InsertionPoint] = None) -> _ods_ir.OpResult:
  return CvtF32Fp8Op(res=res, srcA=src_a, byteSel=byte_sel, loc=loc, ip=ip).result

@_ods_cext.register_operation(_Dialect)
class CvtPkBf8F32Op(_ods_ir.OpView):
  r"""
  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
  ```
  """

  OPERATION_NAME = "rocdl.cvt.pk.bf8.f32"

  _ODS_REGIONS = (0, True)

  def __init__(self, res: _ods_ir.Type, srcA: _ods_ir.Value[_ods_ir.FloatType], srcB: _ods_ir.Value[_ods_ir.FloatType], old: _ods_ir.Value[_ods_ir.IntegerType], wordSel: _Union[bool, _ods_ir.BoolAttr], *, loc: _Optional[_ods_ir.Location] = None, ip: _Optional[_ods_ir.InsertionPoint] = None):
    operands = []
    attributes = {}
    regions = None
    operands.append(srcA)
    operands.append(srcB)
    operands.append(old)
    _ods_context = _ods_get_default_loc_context(loc)
    attributes["wordSel"] = (wordSel if (
    isinstance(wordSel, _ods_ir.Attribute) or
    not _ods_ir.AttrBuilder.contains('I1Attr')) else
      _ods_ir.AttrBuilder.get('I1Attr')(wordSel, context=_ods_context))
    results = []
    results.append(res)
    _ods_successors = None
    super().__init__(self.OPERATION_NAME, self._ODS_REGIONS, self._ODS_OPERAND_SEGMENTS, self._ODS_RESULT_SEGMENTS, attributes=attributes, results=results, operands=operands, successors=_ods_successors, regions=regions, loc=loc, ip=ip)

  @builtins.property
  def srcA(self) -> _ods_ir.Value[_ods_ir.FloatType]:
    return self.operation.operands[0]

  @builtins.property
  def srcB(self) -> _ods_ir.Value[_ods_ir.FloatType]:
    return self.operation.operands[1]

  @builtins.property
  def old(self) -> _ods_ir.Value[_ods_ir.IntegerType]:
    return self.operation.operands[2]

  @builtins.property
  def wordSel(self) -> _ods_ir.BoolAttr:
    return self.operation.attributes["wordSel"]

  @wordSel.setter
  def wordSel(self, value: _ods_ir.BoolAttr):
    if value is None:
      raise ValueError("'None' not allowed as value for mandatory attributes")
    self.operation.attributes["wordSel"] = value

  @builtins.property
  def res(self) -> _ods_ir.OpResult:
    return self.operation.results[0]

@_ods_cext.register_op_adaptor(CvtPkBf8F32Op)
class CvtPkBf8F32OpAdaptor(_ods_ir.OpAdaptor):
  OPERATION_NAME = "rocdl.cvt.pk.bf8.f32"

  @builtins.property
  def srcA(self) -> _ods_ir.Value[_ods_ir.FloatType]:
    return self.operands[0]

  @builtins.property
  def srcB(self) -> _ods_ir.Value[_ods_ir.FloatType]:
    return self.operands[1]

  @builtins.property
  def old(self) -> _ods_ir.Value[_ods_ir.IntegerType]:
    return self.operands[2]

  @builtins.property
  def wordSel(self) -> _ods_ir.BoolAttr:
    return self.attributes["wordSel"]

def cvt_pk_bf8_f32(res: _ods_ir.Type, src_a: _ods_ir.Value[_ods_ir.FloatType], src_b: _ods_ir.Value[_ods_ir.FloatType], old: _ods_ir.Value[_ods_ir.IntegerType], word_sel: _Union[bool, _ods_ir.BoolAttr], *, loc: _Optional[_ods_ir.Location] = None, ip: _Optional[_ods_ir.InsertionPoint] = None) -> _ods_ir.OpResult:
  return CvtPkBf8F32Op(res=res, srcA=src_a, srcB=src_b, old=old, wordSel=word_sel, loc=loc, ip=ip).result

@_ods_cext.register_operation(_Dialect)
class CvtPkF32Bf8Op(_ods_ir.OpView):
  r"""
  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>
  ```
  """

  OPERATION_NAME = "rocdl.cvt.pk.f32.bf8"

  _ODS_REGIONS = (0, True)

  def __init__(self, res: _ods_ir.Type, src: _ods_ir.Value[_ods_ir.IntegerType], wordSel: _Union[bool, _ods_ir.BoolAttr], *, loc: _Optional[_ods_ir.Location] = None, ip: _Optional[_ods_ir.InsertionPoint] = None):
    operands = []
    attributes = {}
    regions = None
    operands.append(src)
    _ods_context = _ods_get_default_loc_context(loc)
    attributes["wordSel"] = (wordSel if (
    isinstance(wordSel, _ods_ir.Attribute) or
    not _ods_ir.AttrBuilder.contains('I1Attr')) else
      _ods_ir.AttrBuilder.get('I1Attr')(wordSel, context=_ods_context))
    results = []
    results.append(res)
    _ods_successors = None
    super().__init__(self.OPERATION_NAME, self._ODS_REGIONS, self._ODS_OPERAND_SEGMENTS, self._ODS_RESULT_SEGMENTS, attributes=attributes, results=results, operands=operands, successors=_ods_successors, regions=regions, loc=loc, ip=ip)

  @builtins.property
  def src(self) -> _ods_ir.Value[_ods_ir.IntegerType]:
    return self.operation.operands[0]

  @builtins.property
  def wordSel(self) -> _ods_ir.BoolAttr:
    return self.operation.attributes["wordSel"]

  @wordSel.setter
  def wordSel(self, value: _ods_ir.BoolAttr):
    if value is None:
      raise ValueError("'None' not allowed as value for mandatory attributes")
    self.operation.attributes["wordSel"] = value

  @builtins.property
  def res(self) -> _ods_ir.OpResult:
    return self.operation.results[0]

@_ods_cext.register_op_adaptor(CvtPkF32Bf8Op)
class CvtPkF32Bf8OpAdaptor(_ods_ir.OpAdaptor):
  OPERATION_NAME = "rocdl.cvt.pk.f32.bf8"

  @builtins.property
  def src(self) -> _ods_ir.Value[_ods_ir.IntegerType]:
    return self.operands[0]

  @builtins.property
  def wordSel(self) -> _ods_ir.BoolAttr:
    return self.attributes["wordSel"]

def cvt_pk_f32_bf8(res: _ods_ir.Type, src: _ods_ir.Value[_ods_ir.IntegerType], word_sel: _Union[bool, _ods_ir.BoolAttr], *, loc: _Optional[_ods_ir.Location] = None, ip: _Optional[_ods_ir.InsertionPoint] = None) -> _ods_ir.OpResult:
  return CvtPkF32Bf8Op(res=res, src=src, wordSel=word_sel, loc=loc, ip=ip).result

@_ods_cext.register_operation(_Dialect)
class CvtPkF32Fp8Op(_ods_ir.OpView):
  r"""
  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>
  ```
  """

  OPERATION_NAME = "rocdl.cvt.pk.f32.fp8"

  _ODS_REGIONS = (0, True)

  def __init__(self, res: _ods_ir.Type, src: _ods_ir.Value[_ods_ir.IntegerType], wordSel: _Union[bool, _ods_ir.BoolAttr], *, loc: _Optional[_ods_ir.Location] = None, ip: _Optional[_ods_ir.InsertionPoint] = None):
    operands = []
    attributes = {}
    regions = None
    operands.append(src)
    _ods_context = _ods_get_default_loc_context(loc)
    attributes["wordSel"] = (wordSel if (
    isinstance(wordSel, _ods_ir.Attribute) or
    not _ods_ir.AttrBuilder.contains('I1Attr')) else
      _ods_ir.AttrBuilder.get('I1Attr')(wordSel, context=_ods_context))
    results = []
    results.append(res)
    _ods_successors = None
    super().__init__(self.OPERATION_NAME, self._ODS_REGIONS, self._ODS_OPERAND_SEGMENTS, self._ODS_RESULT_SEGMENTS, attributes=attributes, results=results, operands=operands, successors=_ods_successors, regions=regions, loc=loc, ip=ip)

  @builtins.property
  def src(self) -> _ods_ir.Value[_ods_ir.IntegerType]:
    return self.operation.operands[0]

  @builtins.property
  def wordSel(self) -> _ods_ir.BoolAttr:
    return self.operation.attributes["wordSel"]

  @wordSel.setter
  def wordSel(self, value: _ods_ir.BoolAttr):
    if value is None:
      raise ValueError("'None' not allowed as value for mandatory attributes")
    self.operation.attributes["wordSel"] = value

  @builtins.property
  def res(self) -> _ods_ir.OpResult:
    return self.operation.results[0]

@_ods_cext.register_op_adaptor(CvtPkF32Fp8Op)
class CvtPkF32Fp8OpAdaptor(_ods_ir.OpAdaptor):
  OPERATION_NAME = "rocdl.cvt.pk.f32.fp8"

  @builtins.property
  def src(self) -> _ods_ir.Value[_ods_ir.IntegerType]:
    return self.operands[0]

  @builtins.property
  def wordSel(self) -> _ods_ir.BoolAttr:
    return self.attributes["wordSel"]

def cvt_pk_f32_fp8(res: _ods_ir.Type, src: _ods_ir.Value[_ods_ir.IntegerType], word_sel: _Union[bool, _ods_ir.BoolAttr], *, loc: _Optional[_ods_ir.Location] = None, ip: _Optional[_ods_ir.InsertionPoint] = None) -> _ods_ir.OpResult:
  return CvtPkF32Fp8Op(res=res, src=src, wordSel=word_sel, loc=loc, ip=ip).result

@_ods_cext.register_operation(_Dialect)
class CvtPkFp8F32Op(_ods_ir.OpView):
  r"""
  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
  ```
  """

  OPERATION_NAME = "rocdl.cvt.pk.fp8.f32"

  _ODS_REGIONS = (0, True)

  def __init__(self, res: _ods_ir.Type, srcA: _ods_ir.Value[_ods_ir.FloatType], srcB: _ods_ir.Value[_ods_ir.FloatType], old: _ods_ir.Value[_ods_ir.IntegerType], wordSel: _Union[bool, _ods_ir.BoolAttr], *, loc: _Optional[_ods_ir.Location] = None, ip: _Optional[_ods_ir.InsertionPoint] = None):
    operands = []
    attributes = {}
    regions = None
    operands.append(srcA)
    operands.append(srcB)
    operands.append(old)
    _ods_context = _ods_get_default_loc_context(loc)
    attributes["wordSel"] = (wordSel if (
    isinstance(wordSel, _ods_ir.Attribute) or
    not _ods_ir.AttrBuilder.contains('I1Attr')) else
      _ods_ir.AttrBuilder.get('I1Attr')(wordSel, context=_ods_context))
    results = []
    results.append(res)
    _ods_successors = None
    super().__init__(self.OPERATION_NAME, self._ODS_REGIONS, self._ODS_OPERAND_SEGMENTS, self._ODS_RESULT_SEGMENTS, attributes=attributes, results=results, operands=operands, successors=_ods_successors, regions=regions, loc=loc, ip=ip)

  @builtins.property
  def srcA(self) -> _ods_ir.Value[_ods_ir.FloatType]:
    return self.operation.operands[0]

  @builtins.property
  def srcB(self) -> _ods_ir.Value[_ods_ir.FloatType]:
    return self.operation.operands[1]

  @builtins.property
  def old(self) -> _ods_ir.Value[_ods_ir.IntegerType]:
    return self.operation.operands[2]

  @builtins.property
  def wordSel(self) -> _ods_ir.BoolAttr:
    return self.operation.attributes["wordSel"]

  @wordSel.setter
  def wordSel(self, value: _ods_ir.BoolAttr):
    if value is None:
      raise ValueError("'None' not allowed as value for mandatory attributes")
    self.operation.attributes["wordSel"] = value

  @builtins.property
  def res(self) -> _ods_ir.OpResult:
    return self.operation.results[0]

@_ods_cext.register_op_adaptor(CvtPkFp8F32Op)
class CvtPkFp8F32OpAdaptor(_ods_ir.OpAdaptor):
  OPERATION_NAME = "rocdl.cvt.pk.fp8.f32"

  @builtins.property
  def srcA(self) -> _ods_ir.Value[_ods_ir.FloatType]:
    return self.operands[0]

  @builtins.property
  def srcB(self) -> _ods_ir.Value[_ods_ir.FloatType]:
    return self.operands[1]

  @builtins.property
  def old(self) -> _ods_ir.Value[_ods_ir.IntegerType]:
    return self.operands[2]

  @builtins.property
  def wordSel(self) -> _ods_ir.BoolAttr:
    return self.attributes["wordSel"]

def cvt_pk_fp8_f32(res: _ods_ir.Type, src_a: _ods_ir.Value[_ods_ir.FloatType], src_b: _ods_ir.Value[_ods_ir.FloatType], old: _ods_ir.Value[_ods_ir.IntegerType], word_sel: _Union[bool, _ods_ir.BoolAttr], *, loc: _Optional[_ods_ir.Location] = None, ip: _Optional[_ods_ir.InsertionPoint] = None) -> _ods_ir.OpResult:
  return CvtPkFp8F32Op(res=res, srcA=src_a, srcB=src_b, old=old, wordSel=word_sel, loc=loc, ip=ip).result

@_ods_cext.register_operation(_Dialect)
class CvtPkRtz(_ods_ir.OpView):
  r"""
  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>
  ```
  """

  OPERATION_NAME = "rocdl.cvt.pkrtz"

  _ODS_REGIONS = (0, True)

  def __init__(self, res: _ods_ir.Type, srcA: _ods_ir.Value[_ods_ir.FloatType], srcB: _ods_ir.Value[_ods_ir.FloatType], *, loc: _Optional[_ods_ir.Location] = None, ip: _Optional[_ods_ir.InsertionPoint] = None):
    operands = []
    attributes = {}
    regions = None
    operands.append(srcA)
    operands.append(srcB)
    _ods_context = _ods_get_default_loc_context(loc)
    results = []
    results.append(res)
    _ods_successors = None
    super().__init__(self.OPERATION_NAME, self._ODS_REGIONS, self._ODS_OPERAND_SEGMENTS, self._ODS_RESULT_SEGMENTS, attributes=attributes, results=results, operands=operands, successors=_ods_successors, regions=regions, loc=loc, ip=ip)

  @builtins.property
  def srcA(self) -> _ods_ir.Value[_ods_ir.FloatType]:
    return self.operation.operands[0]

  @builtins.property
  def srcB(self) -> _ods_ir.Value[_ods_ir.FloatType]:
    return self.operation.operands[1]

  @builtins.property
  def res(self) -> _ods_ir.OpResult:
    return self.operation.results[0]

@_ods_cext.register_op_adaptor(CvtPkRtz)
class CvtPkRtzAdaptor(_ods_ir.OpAdaptor):
  OPERATION_NAME = "rocdl.cvt.pkrtz"

  @builtins.property
  def srcA(self) -> _ods_ir.Value[_ods_ir.FloatType]:
    return self.operands[0]

  @builtins.property
  def srcB(self) -> _ods_ir.Value[_ods_ir.FloatType]:
    return self.operands[1]

def cvt_pkrtz(res: _ods_ir.Type, src_a: _ods_ir.Value[_ods_ir.FloatType], src_b: _ods_ir.Value[_ods_ir.FloatType], *, loc: _Optional[_ods_ir.Location] = None, ip: _Optional[_ods_ir.InsertionPoint] = None) -> _ods_ir.OpResult:
  return CvtPkRtz(res=res, srcA=src_a, srcB=src_b, loc=loc, ip=ip).result

@_ods_cext.register_operation(_Dialect)
class CvtPkScalePk8Bf16Bf8Op(_ods_ir.OpView):
  r"""
  Available on gfx1250+.
  """

  OPERATION_NAME = "rocdl.cvt.scale.pk8.bf16.bf8"

  _ODS_REGIONS = (0, True)

  def __init__(self, res: _ods_ir.Type, src: _ods_ir.Value[_ods_ir.VectorType], scale: _ods_ir.Value[_ods_ir.IntegerType], scaleSel: _Union[int, _ods_ir.IntegerAttr], *, loc: _Optional[_ods_ir.Location] = None, ip: _Optional[_ods_ir.InsertionPoint] = None):
    operands = []
    attributes = {}
    regions = None
    operands.append(src)
    operands.append(scale)
    _ods_context = _ods_get_default_loc_context(loc)
    attributes["scaleSel"] = (scaleSel if (
    isinstance(scaleSel, _ods_ir.Attribute) or
    not _ods_ir.AttrBuilder.contains('I32Attr')) else
      _ods_ir.AttrBuilder.get('I32Attr')(scaleSel, context=_ods_context))
    results = []
    results.append(res)
    _ods_successors = None
    super().__init__(self.OPERATION_NAME, self._ODS_REGIONS, self._ODS_OPERAND_SEGMENTS, self._ODS_RESULT_SEGMENTS, attributes=attributes, results=results, operands=operands, successors=_ods_successors, regions=regions, loc=loc, ip=ip)

  @builtins.property
  def src(self) -> _ods_ir.Value[_ods_ir.VectorType]:
    return self.operation.operands[0]

  @builtins.property
  def scale(self) -> _ods_ir.Value[_ods_ir.IntegerType]:
    return self.operation.operands[1]

  @builtins.property
  def scaleSel(self) -> _ods_ir.IntegerAttr:
    return self.operation.attributes["scaleSel"]

  @scaleSel.setter
  def scaleSel(self, value: _ods_ir.IntegerAttr):
    if value is None:
      raise ValueError("'None' not allowed as value for mandatory attributes")
    self.operation.attributes["scaleSel"] = value

  @builtins.property
  def res(self) -> _ods_ir.OpResult[_ods_ir.VectorType]:
    return self.operation.results[0]

@_ods_cext.register_op_adaptor(CvtPkScalePk8Bf16Bf8Op)
class CvtPkScalePk8Bf16Bf8OpAdaptor(_ods_ir.OpAdaptor):
  OPERATION_NAME = "rocdl.cvt.scale.pk8.bf16.bf8"

  @builtins.property
  def src(self) -> _ods_ir.Value[_ods_ir.VectorType]:
    return self.operands[0]

  @builtins.property
  def scale(self) -> _ods_ir.Value[_ods_ir.IntegerType]:
    return self.operands[1]

  @builtins.property
  def scaleSel(self) -> _ods_ir.IntegerAttr:
    return self.attributes["scaleSel"]

def cvt_scale_pk8_bf16_bf8(res: _ods_ir.Type, src: _ods_ir.Value[_ods_ir.VectorType], scale: _ods_ir.Value[_ods_ir.IntegerType], scale_sel: _Union[int, _ods_ir.IntegerAttr], *, loc: _Optional[_ods_ir.Location] = None, ip: _Optional[_ods_ir.InsertionPoint] = None) -> _ods_ir.OpResult[_ods_ir.VectorType]:
  return CvtPkScalePk8Bf16Bf8Op(res=res, src=src, scale=scale, scaleSel=scale_sel, loc=loc, ip=ip).result

@_ods_cext.register_operation(_Dialect)
class CvtPkScalePk8Bf16Fp4Op(_ods_ir.OpView):
  r"""
  Available on gfx1250+.
  """

  OPERATION_NAME = "rocdl.cvt.scale.pk8.bf16.fp4"

  _ODS_REGIONS = (0, True)

  def __init__(self, res: _ods_ir.Type, src: _ods_ir.Value[_ods_ir.IntegerType], scale: _ods_ir.Value[_ods_ir.IntegerType], scaleSel: _Union[int, _ods_ir.IntegerAttr], *, loc: _Optional[_ods_ir.Location] = None, ip: _Optional[_ods_ir.InsertionPoint] = None):
    operands = []
    attributes = {}
    regions = None
    operands.append(src)
    operands.append(scale)
    _ods_context = _ods_get_default_loc_context(loc)
    attributes["scaleSel"] = (scaleSel if (
    isinstance(scaleSel, _ods_ir.Attribute) or
    not _ods_ir.AttrBuilder.contains('I32Attr')) else
      _ods_ir.AttrBuilder.get('I32Attr')(scaleSel, context=_ods_context))
    results = []
    results.append(res)
    _ods_successors = None
    super().__init__(self.OPERATION_NAME, self._ODS_REGIONS, self._ODS_OPERAND_SEGMENTS, self._ODS_RESULT_SEGMENTS, attributes=attributes, results=results, operands=operands, successors=_ods_successors, regions=regions, loc=loc, ip=ip)

  @builtins.property
  def src(self) -> _ods_ir.Value[_ods_ir.IntegerType]:
    return self.operation.operands[0]

  @builtins.property
  def scale(self) -> _ods_ir.Value[_ods_ir.IntegerType]:
    return self.operation.operands[1]

  @builtins.property
  def scaleSel(self) -> _ods_ir.IntegerAttr:
    return self.operation.attributes["scaleSel"]

  @scaleSel.setter
  def scaleSel(self, value: _ods_ir.IntegerAttr):
    if value is None:
      raise ValueError("'None' not allowed as value for mandatory attributes")
    self.operation.attributes["scaleSel"] = value

  @builtins.property
  def res(self) -> _ods_ir.OpResult[_ods_ir.VectorType]:
    return self.operation.results[0]

@_ods_cext.register_op_adaptor(CvtPkScalePk8Bf16Fp4Op)
class CvtPkScalePk8Bf16Fp4OpAdaptor(_ods_ir.OpAdaptor):
  OPERATION_NAME = "rocdl.cvt.scale.pk8.bf16.fp4"

  @builtins.property
  def src(self) -> _ods_ir.Value[_ods_ir.IntegerType]:
    return self.operands[0]

  @builtins.property
  def scale(self) -> _ods_ir.Value[_ods_ir.IntegerType]:
    return self.operands[1]

  @builtins.property
  def scaleSel(self) -> _ods_ir.IntegerAttr:
    return self.attributes["scaleSel"]

def cvt_scale_pk8_bf16_fp4(res: _ods_ir.Type, src: _ods_ir.Value[_ods_ir.IntegerType], scale: _ods_ir.Value[_ods_ir.IntegerType], scale_sel: _Union[int, _ods_ir.IntegerAttr], *, loc: _Optional[_ods_ir.Location] = None, ip: _Optional[_ods_ir.InsertionPoint] = None) -> _ods_ir.OpResult[_ods_ir.VectorType]:
  return CvtPkScalePk8Bf16Fp4Op(res=res, src=src, scale=scale, scaleSel=scale_sel, loc=loc, ip=ip).result

@_ods_cext.register_operation(_Dialect)
class CvtPkScalePk8Bf16Fp8Op(_ods_ir.OpView):
  r"""
  Available on gfx1250+.
  """

  OPERATION_NAME = "rocdl.cvt.scale.pk8.bf16.fp8"

  _ODS_REGIONS = (0, True)

  def __init__(self, res: _ods_ir.Type, src: _ods_ir.Value[_ods_ir.VectorType], scale: _ods_ir.Value[_ods_ir.IntegerType], scaleSel: _Union[int, _ods_ir.IntegerAttr], *, loc: _Optional[_ods_ir.Location] = None, ip: _Optional[_ods_ir.InsertionPoint] = None):
    operands = []
    attributes = {}
    regions = None
    operands.append(src)
    operands.append(scale)
    _ods_context = _ods_get_default_loc_context(loc)
    attributes["scaleSel"] = (scaleSel if (
    isinstance(scaleSel, _ods_ir.Attribute) or
    not _ods_ir.AttrBuilder.contains('I32Attr')) else
      _ods_ir.AttrBuilder.get('I32Attr')(scaleSel, context=_ods_context))
    results = []
    results.append(res)
    _ods_successors = None
    super().__init__(self.OPERATION_NAME, self._ODS_REGIONS, self._ODS_OPERAND_SEGMENTS, self._ODS_RESULT_SEGMENTS, attributes=attributes, results=results, operands=operands, successors=_ods_successors, regions=regions, loc=loc, ip=ip)

  @builtins.property
  def src(self) -> _ods_ir.Value[_ods_ir.VectorType]:
    return self.operation.operands[0]

  @builtins.property
  def scale(self) -> _ods_ir.Value[_ods_ir.IntegerType]:
    return self.operation.operands[1]

  @builtins.property
  def scaleSel(self) -> _ods_ir.IntegerAttr:
    return self.operation.attributes["scaleSel"]

  @scaleSel.setter
  def scaleSel(self, value: _ods_ir.IntegerAttr):
    if value is None:
      raise ValueError("'None' not allowed as value for mandatory attributes")
    self.operation.attributes["scaleSel"] = value

  @builtins.property
  def res(self) -> _ods_ir.OpResult[_ods_ir.VectorType]:
    return self.operation.results[0]

@_ods_cext.register_op_adaptor(CvtPkScalePk8Bf16Fp8Op)
class CvtPkScalePk8Bf16Fp8OpAdaptor(_ods_ir.OpAdaptor):
  OPERATION_NAME = "rocdl.cvt.scale.pk8.bf16.fp8"

  @builtins.property
  def src(self) -> _ods_ir.Value[_ods_ir.VectorType]:
    return self.operands[0]

  @builtins.property
  def scale(self) -> _ods_ir.Value[_ods_ir.IntegerType]:
    return self.operands[1]

  @builtins.property
  def scaleSel(self) -> _ods_ir.IntegerAttr:
    return self.attributes["scaleSel"]

def cvt_scale_pk8_bf16_fp8(res: _ods_ir.Type, src: _ods_ir.Value[_ods_ir.VectorType], scale: _ods_ir.Value[_ods_ir.IntegerType], scale_sel: _Union[int, _ods_ir.IntegerAttr], *, loc: _Optional[_ods_ir.Location] = None, ip: _Optional[_ods_ir.InsertionPoint] = None) -> _ods_ir.OpResult[_ods_ir.VectorType]:
  return CvtPkScalePk8Bf16Fp8Op(res=res, src=src, scale=scale, scaleSel=scale_sel, loc=loc, ip=ip).result

@_ods_cext.register_operation(_Dialect)
class CvtPkScalePk8F16Bf8Op(_ods_ir.OpView):
  r"""
  Available on gfx1250+.
  """

  OPERATION_NAME = "rocdl.cvt.scale.pk8.f16.bf8"

  _ODS_REGIONS = (0, True)

  def __init__(self, res: _ods_ir.Type, src: _ods_ir.Value[_ods_ir.VectorType], scale: _ods_ir.Value[_ods_ir.IntegerType], scaleSel: _Union[int, _ods_ir.IntegerAttr], *, loc: _Optional[_ods_ir.Location] = None, ip: _Optional[_ods_ir.InsertionPoint] = None):
    operands = []
    attributes = {}
    regions = None
    operands.append(src)
    operands.append(scale)
    _ods_context = _ods_get_default_loc_context(loc)
    attributes["scaleSel"] = (scaleSel if (
    isinstance(scaleSel, _ods_ir.Attribute) or
    not _ods_ir.AttrBuilder.contains('I32Attr')) else
      _ods_ir.AttrBuilder.get('I32Attr')(scaleSel, context=_ods_context))
    results = []
    results.append(res)
    _ods_successors = None
    super().__init__(self.OPERATION_NAME, self._ODS_REGIONS, self._ODS_OPERAND_SEGMENTS, self._ODS_RESULT_SEGMENTS, attributes=attributes, results=results, operands=operands, successors=_ods_successors, regions=regions, loc=loc, ip=ip)

  @builtins.property
  def src(self) -> _ods_ir.Value[_ods_ir.VectorType]:
    return self.operation.operands[0]

  @builtins.property
  def scale(self) -> _ods_ir.Value[_ods_ir.IntegerType]:
    return self.operation.operands[1]

  @builtins.property
  def scaleSel(self) -> _ods_ir.IntegerAttr:
    return self.operation.attributes["scaleSel"]

  @scaleSel.setter
  def scaleSel(self, value: _ods_ir.IntegerAttr):
    if value is None:
      raise ValueError("'None' not allowed as value for mandatory attributes")
    self.operation.attributes["scaleSel"] = value

  @builtins.property
  def res(self) -> _ods_ir.OpResult[_ods_ir.VectorType]:
    return self.operation.results[0]

@_ods_cext.register_op_adaptor(CvtPkScalePk8F16Bf8Op)
class CvtPkScalePk8F16Bf8OpAdaptor(_ods_ir.OpAdaptor):
  OPERATION_NAME = "rocdl.cvt.scale.pk8.f16.bf8"

  @builtins.property
  def src(self) -> _ods_ir.Value[_ods_ir.VectorType]:
    return self.operands[0]

  @builtins.property
  def scale(self) -> _ods_ir.Value[_ods_ir.IntegerType]:
    return self.operands[1]

  @builtins.property
  def scaleSel(self) -> _ods_ir.IntegerAttr:
    return self.attributes["scaleSel"]

def cvt_scale_pk8_f16_bf8(res: _ods_ir.Type, src: _ods_ir.Value[_ods_ir.VectorType], scale: _ods_ir.Value[_ods_ir.IntegerType], scale_sel: _Union[int, _ods_ir.IntegerAttr], *, loc: _Optional[_ods_ir.Location] = None, ip: _Optional[_ods_ir.InsertionPoint] = None) -> _ods_ir.OpResult[_ods_ir.VectorType]:
  return CvtPkScalePk8F16Bf8Op(res=res, src=src, scale=scale, scaleSel=scale_sel, loc=loc, ip=ip).result

@_ods_cext.register_operation(_Dialect)
class CvtPkScalePk8F16Fp4Op(_ods_ir.OpView):
  r"""
  Available on gfx1250+.
  """

  OPERATION_NAME = "rocdl.cvt.scale.pk8.f16.fp4"

  _ODS_REGIONS = (0, True)

  def __init__(self, res: _ods_ir.Type, src: _ods_ir.Value[_ods_ir.IntegerType], scale: _ods_ir.Value[_ods_ir.IntegerType], scaleSel: _Union[int, _ods_ir.IntegerAttr], *, loc: _Optional[_ods_ir.Location] = None, ip: _Optional[_ods_ir.InsertionPoint] = None):
    operands = []
    attributes = {}
    regions = None
    operands.append(src)
    operands.append(scale)
    _ods_context = _ods_get_default_loc_context(loc)
    attributes["scaleSel"] = (scaleSel if (
    isinstance(scaleSel, _ods_ir.Attribute) or
    not _ods_ir.AttrBuilder.contains('I32Attr')) else
      _ods_ir.AttrBuilder.get('I32Attr')(scaleSel, context=_ods_context))
    results = []
    results.append(res)
    _ods_successors = None
    super().__init__(self.OPERATION_NAME, self._ODS_REGIONS, self._ODS_OPERAND_SEGMENTS, self._ODS_RESULT_SEGMENTS, attributes=attributes, results=results, operands=operands, successors=_ods_successors, regions=regions, loc=loc, ip=ip)

  @builtins.property
  def src(self) -> _ods_ir.Value[_ods_ir.IntegerType]:
    return self.operation.operands[0]

  @builtins.property
  def scale(self) -> _ods_ir.Value[_ods_ir.IntegerType]:
    return self.operation.operands[1]

  @builtins.property
  def scaleSel(self) -> _ods_ir.IntegerAttr:
    return self.operation.attributes["scaleSel"]

  @scaleSel.setter
  def scaleSel(self, value: _ods_ir.IntegerAttr):
    if value is None:
      raise ValueError("'None' not allowed as value for mandatory attributes")
    self.operation.attributes["scaleSel"] = value

  @builtins.property
  def res(self) -> _ods_ir.OpResult[_ods_ir.VectorType]:
    return self.operation.results[0]

@_ods_cext.register_op_adaptor(CvtPkScalePk8F16Fp4Op)
class CvtPkScalePk8F16Fp4OpAdaptor(_ods_ir.OpAdaptor):
  OPERATION_NAME = "rocdl.cvt.scale.pk8.f16.fp4"

  @builtins.property
  def src(self) -> _ods_ir.Value[_ods_ir.IntegerType]:
    return self.operands[0]

  @builtins.property
  def scale(self) -> _ods_ir.Value[_ods_ir.IntegerType]:
    return self.operands[1]

  @builtins.property
  def scaleSel(self) -> _ods_ir.IntegerAttr:
    return self.attributes["scaleSel"]

def cvt_scale_pk8_f16_fp4(res: _ods_ir.Type, src: _ods_ir.Value[_ods_ir.IntegerType], scale: _ods_ir.Value[_ods_ir.IntegerType], scale_sel: _Union[int, _ods_ir.IntegerAttr], *, loc: _Optional[_ods_ir.Location] = None, ip: _Optional[_ods_ir.InsertionPoint] = None) -> _ods_ir.OpResult[_ods_ir.VectorType]:
  return CvtPkScalePk8F16Fp4Op(res=res, src=src, scale=scale, scaleSel=scale_sel, loc=loc, ip=ip).result

@_ods_cext.register_operation(_Dialect)
class CvtPkScalePk8F16Fp8Op(_ods_ir.OpView):
  r"""
  Available on gfx1250+.
  """

  OPERATION_NAME = "rocdl.cvt.scale.pk8.f16.fp8"

  _ODS_REGIONS = (0, True)

  def __init__(self, res: _ods_ir.Type, src: _ods_ir.Value[_ods_ir.VectorType], scale: _ods_ir.Value[_ods_ir.IntegerType], scaleSel: _Union[int, _ods_ir.IntegerAttr], *, loc: _Optional[_ods_ir.Location] = None, ip: _Optional[_ods_ir.InsertionPoint] = None):
    operands = []
    attributes = {}
    regions = None
    operands.append(src)
    operands.append(scale)
    _ods_context = _ods_get_default_loc_context(loc)
    attributes["scaleSel"] = (scaleSel if (
    isinstance(scaleSel, _ods_ir.Attribute) or
    not _ods_ir.AttrBuilder.contains('I32Attr')) else
      _ods_ir.AttrBuilder.get('I32Attr')(scaleSel, context=_ods_context))
    results = []
    results.append(res)
    _ods_successors = None
    super().__init__(self.OPERATION_NAME, self._ODS_REGIONS, self._ODS_OPERAND_SEGMENTS, self._ODS_RESULT_SEGMENTS, attributes=attributes, results=results, operands=operands, successors=_ods_successors, regions=regions, loc=loc, ip=ip)

  @builtins.property
  def src(self) -> _ods_ir.Value[_ods_ir.VectorType]:
    return self.operation.operands[0]

  @builtins.property
  def scale(self) -> _ods_ir.Value[_ods_ir.IntegerType]:
    return self.operation.operands[1]

  @builtins.property
  def scaleSel(self) -> _ods_ir.IntegerAttr:
    return self.operation.attributes["scaleSel"]

  @scaleSel.setter
  def scaleSel(self, value: _ods_ir.IntegerAttr):
    if value is None:
      raise ValueError("'None' not allowed as value for mandatory attributes")
    self.operation.attributes["scaleSel"] = value

  @builtins.property
  def res(self) -> _ods_ir.OpResult[_ods_ir.VectorType]:
    return self.operation.results[0]

@_ods_cext.register_op_adaptor(CvtPkScalePk8F16Fp8Op)
class CvtPkScalePk8F16Fp8OpAdaptor(_ods_ir.OpAdaptor):
  OPERATION_NAME = "rocdl.cvt.scale.pk8.f16.fp8"

  @builtins.property
  def src(self) -> _ods_ir.Value[_ods_ir.VectorType]:
    return self.operands[0]

  @builtins.property
  def scale(self) -> _ods_ir.Value[_ods_ir.IntegerType]:
    return self.operands[1]

  @builtins.property
  def scaleSel(self) -> _ods_ir.IntegerAttr:
    return self.attributes["scaleSel"]

def cvt_scale_pk8_f16_fp8(res: _ods_ir.Type, src: _ods_ir.Value[_ods_ir.VectorType], scale: _ods_ir.Value[_ods_ir.IntegerType], scale_sel: _Union[int, _ods_ir.IntegerAttr], *, loc: _Optional[_ods_ir.Location] = None, ip: _Optional[_ods_ir.InsertionPoint] = None) -> _ods_ir.OpResult[_ods_ir.VectorType]:
  return CvtPkScalePk8F16Fp8Op(res=res, src=src, scale=scale, scaleSel=scale_sel, loc=loc, ip=ip).result

@_ods_cext.register_operation(_Dialect)
class CvtPkScalePk8F32Bf8Op(_ods_ir.OpView):
  r"""
  Available on gfx1250+.
  """

  OPERATION_NAME = "rocdl.cvt.scale.pk8.f32.bf8"

  _ODS_REGIONS = (0, True)

  def __init__(self, res: _ods_ir.Type, src: _ods_ir.Value[_ods_ir.VectorType], scale: _ods_ir.Value[_ods_ir.IntegerType], scaleSel: _Union[int, _ods_ir.IntegerAttr], *, loc: _Optional[_ods_ir.Location] = None, ip: _Optional[_ods_ir.InsertionPoint] = None):
    operands = []
    attributes = {}
    regions = None
    operands.append(src)
    operands.append(scale)
    _ods_context = _ods_get_default_loc_context(loc)
    attributes["scaleSel"] = (scaleSel if (
    isinstance(scaleSel, _ods_ir.Attribute) or
    not _ods_ir.AttrBuilder.contains('I32Attr')) else
      _ods_ir.AttrBuilder.get('I32Attr')(scaleSel, context=_ods_context))
    results = []
    results.append(res)
    _ods_successors = None
    super().__init__(self.OPERATION_NAME, self._ODS_REGIONS, self._ODS_OPERAND_SEGMENTS, self._ODS_RESULT_SEGMENTS, attributes=attributes, results=results, operands=operands, successors=_ods_successors, regions=regions, loc=loc, ip=ip)

  @builtins.property
  def src(self) -> _ods_ir.Value[_ods_ir.VectorType]:
    return self.operation.operands[0]

  @builtins.property
  def scale(self) -> _ods_ir.Value[_ods_ir.IntegerType]:
    return self.operation.operands[1]

  @builtins.property
  def scaleSel(self) -> _ods_ir.IntegerAttr:
    return self.operation.attributes["scaleSel"]

  @scaleSel.setter
  def scaleSel(self, value: _ods_ir.IntegerAttr):
    if value is None:
      raise ValueError("'None' not allowed as value for mandatory attributes")
    self.operation.attributes["scaleSel"] = value

  @builtins.property
  def res(self) -> _ods_ir.OpResult[_ods_ir.VectorType]:
    return self.operation.results[0]

@_ods_cext.register_op_adaptor(CvtPkScalePk8F32Bf8Op)
class CvtPkScalePk8F32Bf8OpAdaptor(_ods_ir.OpAdaptor):
  OPERATION_NAME = "rocdl.cvt.scale.pk8.f32.bf8"

  @builtins.property
  def src(self) -> _ods_ir.Value[_ods_ir.VectorType]:
    return self.operands[0]

  @builtins.property
  def scale(self) -> _ods_ir.Value[_ods_ir.IntegerType]:
    return self.operands[1]

  @builtins.property
  def scaleSel(self) -> _ods_ir.IntegerAttr:
    return self.attributes["scaleSel"]

def cvt_scale_pk8_f32_bf8(res: _ods_ir.Type, src: _ods_ir.Value[_ods_ir.VectorType], scale: _ods_ir.Value[_ods_ir.IntegerType], scale_sel: _Union[int, _ods_ir.IntegerAttr], *, loc: _Optional[_ods_ir.Location] = None, ip: _Optional[_ods_ir.InsertionPoint] = None) -> _ods_ir.OpResult[_ods_ir.VectorType]:
  return CvtPkScalePk8F32Bf8Op(res=res, src=src, scale=scale, scaleSel=scale_sel, loc=loc, ip=ip).result

@_ods_cext.register_operation(_Dialect)
class CvtPkScalePk8F32Fp4Op(_ods_ir.OpView):
  r"""
  Available on gfx1250+.
  """

  OPERATION_NAME = "rocdl.cvt.scale.pk8.f32.fp4"

  _ODS_REGIONS = (0, True)

  def __init__(self, res: _ods_ir.Type, src: _ods_ir.Value[_ods_ir.IntegerType], scale: _ods_ir.Value[_ods_ir.IntegerType], scaleSel: _Union[int, _ods_ir.IntegerAttr], *, loc: _Optional[_ods_ir.Location] = None, ip: _Optional[_ods_ir.InsertionPoint] = None):
    operands = []
    attributes = {}
    regions = None
    operands.append(src)
    operands.append(scale)
    _ods_context = _ods_get_default_loc_context(loc)
    attributes["scaleSel"] = (scaleSel if (
    isinstance(scaleSel, _ods_ir.Attribute) or
    not _ods_ir.AttrBuilder.contains('I32Attr')) else
      _ods_ir.AttrBuilder.get('I32Attr')(scaleSel, context=_ods_context))
    results = []
    results.append(res)
    _ods_successors = None
    super().__init__(self.OPERATION_NAME, self._ODS_REGIONS, self._ODS_OPERAND_SEGMENTS, self._ODS_RESULT_SEGMENTS, attributes=attributes, results=results, operands=operands, successors=_ods_successors, regions=regions, loc=loc, ip=ip)

  @builtins.property
  def src(self) -> _ods_ir.Value[_ods_ir.IntegerType]:
    return self.operation.operands[0]

  @builtins.property
  def scale(self) -> _ods_ir.Value[_ods_ir.IntegerType]:
    return self.operation.operands[1]

  @builtins.property
  def scaleSel(self) -> _ods_ir.IntegerAttr:
    return self.operation.attributes["scaleSel"]

  @scaleSel.setter
  def scaleSel(self, value: _ods_ir.IntegerAttr):
    if value is None:
      raise ValueError("'None' not allowed as value for mandatory attributes")
    self.operation.attributes["scaleSel"] = value

  @builtins.property
  def res(self) -> _ods_ir.OpResult[_ods_ir.VectorType]:
    return self.operation.results[0]

@_ods_cext.register_op_adaptor(CvtPkScalePk8F32Fp4Op)
class CvtPkScalePk8F32Fp4OpAdaptor(_ods_ir.OpAdaptor):
  OPERATION_NAME = "rocdl.cvt.scale.pk8.f32.fp4"

  @builtins.property
  def src(self) -> _ods_ir.Value[_ods_ir.IntegerType]:
    return self.operands[0]

  @builtins.property
  def scale(self) -> _ods_ir.Value[_ods_ir.IntegerType]:
    return self.operands[1]

  @builtins.property
  def scaleSel(self) -> _ods_ir.IntegerAttr:
    return self.attributes["scaleSel"]

def cvt_scale_pk8_f32_fp4(res: _ods_ir.Type, src: _ods_ir.Value[_ods_ir.IntegerType], scale: _ods_ir.Value[_ods_ir.IntegerType], scale_sel: _Union[int, _ods_ir.IntegerAttr], *, loc: _Optional[_ods_ir.Location] = None, ip: _Optional[_ods_ir.InsertionPoint] = None) -> _ods_ir.OpResult[_ods_ir.VectorType]:
  return CvtPkScalePk8F32Fp4Op(res=res, src=src, scale=scale, scaleSel=scale_sel, loc=loc, ip=ip).result

@_ods_cext.register_operation(_Dialect)
class CvtPkScalePk8F32Fp8Op(_ods_ir.OpView):
  r"""
  Available on gfx1250+.
  """

  OPERATION_NAME = "rocdl.cvt.scale.pk8.f32.fp8"

  _ODS_REGIONS = (0, True)

  def __init__(self, res: _ods_ir.Type, src: _ods_ir.Value[_ods_ir.VectorType], scale: _ods_ir.Value[_ods_ir.IntegerType], scaleSel: _Union[int, _ods_ir.IntegerAttr], *, loc: _Optional[_ods_ir.Location] = None, ip: _Optional[_ods_ir.InsertionPoint] = None):
    operands = []
    attributes = {}
    regions = None
    operands.append(src)
    operands.append(scale)
    _ods_context = _ods_get_default_loc_context(loc)
    attributes["scaleSel"] = (scaleSel if (
    isinstance(scaleSel, _ods_ir.Attribute) or
    not _ods_ir.AttrBuilder.contains('I32Attr')) else
      _ods_ir.AttrBuilder.get('I32Attr')(scaleSel, context=_ods_context))
    results = []
    results.append(res)
    _ods_successors = None
    super().__init__(self.OPERATION_NAME, self._ODS_REGIONS, self._ODS_OPERAND_SEGMENTS, self._ODS_RESULT_SEGMENTS, attributes=attributes, results=results, operands=operands, successors=_ods_successors, regions=regions, loc=loc, ip=ip)

  @builtins.property
  def src(self) -> _ods_ir.Value[_ods_ir.VectorType]:
    return self.operation.operands[0]

  @builtins.property
  def scale(self) -> _ods_ir.Value[_ods_ir.IntegerType]:
    return self.operation.operands[1]

  @builtins.property
  def scaleSel(self) -> _ods_ir.IntegerAttr:
    return self.operation.attributes["scaleSel"]

  @scaleSel.setter
  def scaleSel(self, value: _ods_ir.IntegerAttr):
    if value is None:
      raise ValueError("'None' not allowed as value for mandatory attributes")
    self.operation.attributes["scaleSel"] = value

  @builtins.property
  def res(self) -> _ods_ir.OpResult[_ods_ir.VectorType]:
    return self.operation.results[0]

@_ods_cext.register_op_adaptor(CvtPkScalePk8F32Fp8Op)
class CvtPkScalePk8F32Fp8OpAdaptor(_ods_ir.OpAdaptor):
  OPERATION_NAME = "rocdl.cvt.scale.pk8.f32.fp8"

  @builtins.property
  def src(self) -> _ods_ir.Value[_ods_ir.VectorType]:
    return self.operands[0]

  @builtins.property
  def scale(self) -> _ods_ir.Value[_ods_ir.IntegerType]:
    return self.operands[1]

  @builtins.property
  def scaleSel(self) -> _ods_ir.IntegerAttr:
    return self.attributes["scaleSel"]

def cvt_scale_pk8_f32_fp8(res: _ods_ir.Type, src: _ods_ir.Value[_ods_ir.VectorType], scale: _ods_ir.Value[_ods_ir.IntegerType], scale_sel: _Union[int, _ods_ir.IntegerAttr], *, loc: _Optional[_ods_ir.Location] = None, ip: _Optional[_ods_ir.InsertionPoint] = None) -> _ods_ir.OpResult[_ods_ir.VectorType]:
  return CvtPkScalePk8F32Fp8Op(res=res, src=src, scale=scale, scaleSel=scale_sel, loc=loc, ip=ip).result

@_ods_cext.register_operation(_Dialect)
class CvtPkScalePk16Bf16Bf6Op(_ods_ir.OpView):
  r"""
  Available on gfx1250+.
  """

  OPERATION_NAME = "rocdl.cvt.scale.pk16.bf16.bf6"

  _ODS_REGIONS = (0, True)

  def __init__(self, res: _ods_ir.Type, src: _ods_ir.Value[_ods_ir.VectorType], scale: _ods_ir.Value[_ods_ir.IntegerType], scaleSel: _Union[int, _ods_ir.IntegerAttr], *, loc: _Optional[_ods_ir.Location] = None, ip: _Optional[_ods_ir.InsertionPoint] = None):
    operands = []
    attributes = {}
    regions = None
    operands.append(src)
    operands.append(scale)
    _ods_context = _ods_get_default_loc_context(loc)
    attributes["scaleSel"] = (scaleSel if (
    isinstance(scaleSel, _ods_ir.Attribute) or
    not _ods_ir.AttrBuilder.contains('I32Attr')) else
      _ods_ir.AttrBuilder.get('I32Attr')(scaleSel, context=_ods_context))
    results = []
    results.append(res)
    _ods_successors = None
    super().__init__(self.OPERATION_NAME, self._ODS_REGIONS, self._ODS_OPERAND_SEGMENTS, self._ODS_RESULT_SEGMENTS, attributes=attributes, results=results, operands=operands, successors=_ods_successors, regions=regions, loc=loc, ip=ip)

  @builtins.property
  def src(self) -> _ods_ir.Value[_ods_ir.VectorType]:
    return self.operation.operands[0]

  @builtins.property
  def scale(self) -> _ods_ir.Value[_ods_ir.IntegerType]:
    return self.operation.operands[1]

  @builtins.property
  def scaleSel(self) -> _ods_ir.IntegerAttr:
    return self.operation.attributes["scaleSel"]

  @scaleSel.setter
  def scaleSel(self, value: _ods_ir.IntegerAttr):
    if value is None:
      raise ValueError("'None' not allowed as value for mandatory attributes")
    self.operation.attributes["scaleSel"] = value

  @builtins.property
  def res(self) -> _ods_ir.OpResult[_ods_ir.VectorType]:
    return self.operation.results[0]

@_ods_cext.register_op_adaptor(CvtPkScalePk16Bf16Bf6Op)
class CvtPkScalePk16Bf16Bf6OpAdaptor(_ods_ir.OpAdaptor):
  OPERATION_NAME = "rocdl.cvt.scale.pk16.bf16.bf6"

  @builtins.property
  def src(self) -> _ods_ir.Value[_ods_ir.VectorType]:
    return self.operands[0]

  @builtins.property
  def scale(self) -> _ods_ir.Value[_ods_ir.IntegerType]:
    return self.operands[1]

  @builtins.property
  def scaleSel(self) -> _ods_ir.IntegerAttr:
    return self.attributes["scaleSel"]

def cvt_scale_pk16_bf16_bf6(res: _ods_ir.Type, src: _ods_ir.Value[_ods_ir.VectorType], scale: _ods_ir.Value[_ods_ir.IntegerType], scale_sel: _Union[int, _ods_ir.IntegerAttr], *, loc: _Optional[_ods_ir.Location] = None, ip: _Optional[_ods_ir.InsertionPoint] = None) -> _ods_ir.OpResult[_ods_ir.VectorType]:
  return CvtPkScalePk16Bf16Bf6Op(res=res, src=src, scale=scale, scaleSel=scale_sel, loc=loc, ip=ip).result

@_ods_cext.register_operation(_Dialect)
class CvtPkScalePk16Bf16Fp6Op(_ods_ir.OpView):
  r"""
  Available on gfx1250+.
  """

  OPERATION_NAME = "rocdl.cvt.scale.pk16.bf16.fp6"

  _ODS_REGIONS = (0, True)

  def __init__(self, res: _ods_ir.Type, src: _ods_ir.Value[_ods_ir.VectorType], scale: _ods_ir.Value[_ods_ir.IntegerType], scaleSel: _Union[int, _ods_ir.IntegerAttr], *, loc: _Optional[_ods_ir.Location] = None, ip: _Optional[_ods_ir.InsertionPoint] = None):
    operands = []
    attributes = {}
    regions = None
    operands.append(src)
    operands.append(scale)
    _ods_context = _ods_get_default_loc_context(loc)
    attributes["scaleSel"] = (scaleSel if (
    isinstance(scaleSel, _ods_ir.Attribute) or
    not _ods_ir.AttrBuilder.contains('I32Attr')) else
      _ods_ir.AttrBuilder.get('I32Attr')(scaleSel, context=_ods_context))
    results = []
    results.append(res)
    _ods_successors = None
    super().__init__(self.OPERATION_NAME, self._ODS_REGIONS, self._ODS_OPERAND_SEGMENTS, self._ODS_RESULT_SEGMENTS, attributes=attributes, results=results, operands=operands, successors=_ods_successors, regions=regions, loc=loc, ip=ip)

  @builtins.property
  def src(self) -> _ods_ir.Value[_ods_ir.VectorType]:
    return self.operation.operands[0]

  @builtins.property
  def scale(self) -> _ods_ir.Value[_ods_ir.IntegerType]:
    return self.operation.operands[1]

  @builtins.property
  def scaleSel(self) -> _ods_ir.IntegerAttr:
    return self.operation.attributes["scaleSel"]

  @scaleSel.setter
  def scaleSel(self, value: _ods_ir.IntegerAttr):
    if value is None:
      raise ValueError("'None' not allowed as value for mandatory attributes")
    self.operation.attributes["scaleSel"] = value

  @builtins.property
  def res(self) -> _ods_ir.OpResult[_ods_ir.VectorType]:
    return self.operation.results[0]

@_ods_cext.register_op_adaptor(CvtPkScalePk16Bf16Fp6Op)
class CvtPkScalePk16Bf16Fp6OpAdaptor(_ods_ir.OpAdaptor):
  OPERATION_NAME = "rocdl.cvt.scale.pk16.bf16.fp6"

  @builtins.property
  def src(self) -> _ods_ir.Value[_ods_ir.VectorType]:
    return self.operands[0]

  @builtins.property
  def scale(self) -> _ods_ir.Value[_ods_ir.IntegerType]:
    return self.operands[1]

  @builtins.property
  def scaleSel(self) -> _ods_ir.IntegerAttr:
    return self.attributes["scaleSel"]

def cvt_scale_pk16_bf16_fp6(res: _ods_ir.Type, src: _ods_ir.Value[_ods_ir.VectorType], scale: _ods_ir.Value[_ods_ir.IntegerType], scale_sel: _Union[int, _ods_ir.IntegerAttr], *, loc: _Optional[_ods_ir.Location] = None, ip: _Optional[_ods_ir.InsertionPoint] = None) -> _ods_ir.OpResult[_ods_ir.VectorType]:
  return CvtPkScalePk16Bf16Fp6Op(res=res, src=src, scale=scale, scaleSel=scale_sel, loc=loc, ip=ip).result

@_ods_cext.register_operation(_Dialect)
class CvtPkScalePk16F16Bf6Op(_ods_ir.OpView):
  r"""
  Available on gfx1250+.
  """

  OPERATION_NAME = "rocdl.cvt.scale.pk16.f16.bf6"

  _ODS_REGIONS = (0, True)

  def __init__(self, res: _ods_ir.Type, src: _ods_ir.Value[_ods_ir.VectorType], scale: _ods_ir.Value[_ods_ir.IntegerType], scaleSel: _Union[int, _ods_ir.IntegerAttr], *, loc: _Optional[_ods_ir.Location] = None, ip: _Optional[_ods_ir.InsertionPoint] = None):
    operands = []
    attributes = {}
    regions = None
    operands.append(src)
    operands.append(scale)
    _ods_context = _ods_get_default_loc_context(loc)
    attributes["scaleSel"] = (scaleSel if (
    isinstance(scaleSel, _ods_ir.Attribute) or
    not _ods_ir.AttrBuilder.contains('I32Attr')) else
      _ods_ir.AttrBuilder.get('I32Attr')(scaleSel, context=_ods_context))
    results = []
    results.append(res)
    _ods_successors = None
    super().__init__(self.OPERATION_NAME, self._ODS_REGIONS, self._ODS_OPERAND_SEGMENTS, self._ODS_RESULT_SEGMENTS, attributes=attributes, results=results, operands=operands, successors=_ods_successors, regions=regions, loc=loc, ip=ip)

  @builtins.property
  def src(self) -> _ods_ir.Value[_ods_ir.VectorType]:
    return self.operation.operands[0]

  @builtins.property
  def scale(self) -> _ods_ir.Value[_ods_ir.IntegerType]:
    return self.operation.operands[1]

  @builtins.property
  def scaleSel(self) -> _ods_ir.IntegerAttr:
    return self.operation.attributes["scaleSel"]

  @scaleSel.setter
  def scaleSel(self, value: _ods_ir.IntegerAttr):
    if value is None:
      raise ValueError("'None' not allowed as value for mandatory attributes")
    self.operation.attributes["scaleSel"] = value

  @builtins.property
  def res(self) -> _ods_ir.OpResult[_ods_ir.VectorType]:
    return self.operation.results[0]

@_ods_cext.register_op_adaptor(CvtPkScalePk16F16Bf6Op)
class CvtPkScalePk16F16Bf6OpAdaptor(_ods_ir.OpAdaptor):
  OPERATION_NAME = "rocdl.cvt.scale.pk16.f16.bf6"

  @builtins.property
  def src(self) -> _ods_ir.Value[_ods_ir.VectorType]:
    return self.operands[0]

  @builtins.property
  def scale(self) -> _ods_ir.Value[_ods_ir.IntegerType]:
    return self.operands[1]

  @builtins.property
  def scaleSel(self) -> _ods_ir.IntegerAttr:
    return self.attributes["scaleSel"]

def cvt_scale_pk16_f16_bf6(res: _ods_ir.Type, src: _ods_ir.Value[_ods_ir.VectorType], scale: _ods_ir.Value[_ods_ir.IntegerType], scale_sel: _Union[int, _ods_ir.IntegerAttr], *, loc: _Optional[_ods_ir.Location] = None, ip: _Optional[_ods_ir.InsertionPoint] = None) -> _ods_ir.OpResult[_ods_ir.VectorType]:
  return CvtPkScalePk16F16Bf6Op(res=res, src=src, scale=scale, scaleSel=scale_sel, loc=loc, ip=ip).result

@_ods_cext.register_operation(_Dialect)
class CvtPkScalePk16F16Fp6Op(_ods_ir.OpView):
  r"""
  Available on gfx1250+.
  """

  OPERATION_NAME = "rocdl.cvt.scale.pk16.f16.fp6"

  _ODS_REGIONS = (0, True)

  def __init__(self, res: _ods_ir.Type, src: _ods_ir.Value[_ods_ir.VectorType], scale: _ods_ir.Value[_ods_ir.IntegerType], scaleSel: _Union[int, _ods_ir.IntegerAttr], *, loc: _Optional[_ods_ir.Location] = None, ip: _Optional[_ods_ir.InsertionPoint] = None):
    operands = []
    attributes = {}
    regions = None
    operands.append(src)
    operands.append(scale)
    _ods_context = _ods_get_default_loc_context(loc)
    attributes["scaleSel"] = (scaleSel if (
    isinstance(scaleSel, _ods_ir.Attribute) or
    not _ods_ir.AttrBuilder.contains('I32Attr')) else
      _ods_ir.AttrBuilder.get('I32Attr')(scaleSel, context=_ods_context))
    results = []
    results.append(res)
    _ods_successors = None
    super().__init__(self.OPERATION_NAME, self._ODS_REGIONS, self._ODS_OPERAND_SEGMENTS, self._ODS_RESULT_SEGMENTS, attributes=attributes, results=results, operands=operands, successors=_ods_successors, regions=regions, loc=loc, ip=ip)

  @builtins.property
  def src(self) -> _ods_ir.Value[_ods_ir.VectorType]:
    return self.operation.operands[0]

  @builtins.property
  def scale(self) -> _ods_ir.Value[_ods_ir.IntegerType]:
    return self.operation.operands[1]

  @builtins.property
  def scaleSel(self) -> _ods_ir.IntegerAttr:
    return self.operation.attributes["scaleSel"]

  @scaleSel.setter
  def scaleSel(self, value: _ods_ir.IntegerAttr):
    if value is None:
      raise ValueError("'None' not allowed as value for mandatory attributes")
    self.operation.attributes["scaleSel"] = value

  @builtins.property
  def res(self) -> _ods_ir.OpResult[_ods_ir.VectorType]:
    return self.operation.results[0]

@_ods_cext.register_op_adaptor(CvtPkScalePk16F16Fp6Op)
class CvtPkScalePk16F16Fp6OpAdaptor(_ods_ir.OpAdaptor):
  OPERATION_NAME = "rocdl.cvt.scale.pk16.f16.fp6"

  @builtins.property
  def src(self) -> _ods_ir.Value[_ods_ir.VectorType]:
    return self.operands[0]

  @builtins.property
  def scale(self) -> _ods_ir.Value[_ods_ir.IntegerType]:
    return self.operands[1]

  @builtins.property
  def scaleSel(self) -> _ods_ir.IntegerAttr:
    return self.attributes["scaleSel"]

def cvt_scale_pk16_f16_fp6(res: _ods_ir.Type, src: _ods_ir.Value[_ods_ir.VectorType], scale: _ods_ir.Value[_ods_ir.IntegerType], scale_sel: _Union[int, _ods_ir.IntegerAttr], *, loc: _Optional[_ods_ir.Location] = None, ip: _Optional[_ods_ir.InsertionPoint] = None) -> _ods_ir.OpResult[_ods_ir.VectorType]:
  return CvtPkScalePk16F16Fp6Op(res=res, src=src, scale=scale, scaleSel=scale_sel, loc=loc, ip=ip).result

@_ods_cext.register_operation(_Dialect)
class CvtPkScalePk16F32Bf6Op(_ods_ir.OpView):
  r"""
  Available on gfx1250+.
  """

  OPERATION_NAME = "rocdl.cvt.scale.pk16.f32.bf6"

  _ODS_REGIONS = (0, True)

  def __init__(self, res: _ods_ir.Type, src: _ods_ir.Value[_ods_ir.VectorType], scale: _ods_ir.Value[_ods_ir.IntegerType], scaleSel: _Union[int, _ods_ir.IntegerAttr], *, loc: _Optional[_ods_ir.Location] = None, ip: _Optional[_ods_ir.InsertionPoint] = None):
    operands = []
    attributes = {}
    regions = None
    operands.append(src)
    operands.append(scale)
    _ods_context = _ods_get_default_loc_context(loc)
    attributes["scaleSel"] = (scaleSel if (
    isinstance(scaleSel, _ods_ir.Attribute) or
    not _ods_ir.AttrBuilder.contains('I32Attr')) else
      _ods_ir.AttrBuilder.get('I32Attr')(scaleSel, context=_ods_context))
    results = []
    results.append(res)
    _ods_successors = None
    super().__init__(self.OPERATION_NAME, self._ODS_REGIONS, self._ODS_OPERAND_SEGMENTS, self._ODS_RESULT_SEGMENTS, attributes=attributes, results=results, operands=operands, successors=_ods_successors, regions=regions, loc=loc, ip=ip)

  @builtins.property
  def src(self) -> _ods_ir.Value[_ods_ir.VectorType]:
    return self.operation.operands[0]

  @builtins.property
  def scale(self) -> _ods_ir.Value[_ods_ir.IntegerType]:
    return self.operation.operands[1]

  @builtins.property
  def scaleSel(self) -> _ods_ir.IntegerAttr:
    return self.operation.attributes["scaleSel"]

  @scaleSel.setter
  def scaleSel(self, value: _ods_ir.IntegerAttr):
    if value is None:
      raise ValueError("'None' not allowed as value for mandatory attributes")
    self.operation.attributes["scaleSel"] = value

  @builtins.property
  def res(self) -> _ods_ir.OpResult[_ods_ir.VectorType]:
    return self.operation.results[0]

@_ods_cext.register_op_adaptor(CvtPkScalePk16F32Bf6Op)
class CvtPkScalePk16F32Bf6OpAdaptor(_ods_ir.OpAdaptor):
  OPERATION_NAME = "rocdl.cvt.scale.pk16.f32.bf6"

  @builtins.property
  def src(self) -> _ods_ir.Value[_ods_ir.VectorType]:
    return self.operands[0]

  @builtins.property
  def scale(self) -> _ods_ir.Value[_ods_ir.IntegerType]:
    return self.operands[1]

  @builtins.property
  def scaleSel(self) -> _ods_ir.IntegerAttr:
    return self.attributes["scaleSel"]

def cvt_scale_pk16_f32_bf6(res: _ods_ir.Type, src: _ods_ir.Value[_ods_ir.VectorType], scale: _ods_ir.Value[_ods_ir.IntegerType], scale_sel: _Union[int, _ods_ir.IntegerAttr], *, loc: _Optional[_ods_ir.Location] = None, ip: _Optional[_ods_ir.InsertionPoint] = None) -> _ods_ir.OpResult[_ods_ir.VectorType]:
  return CvtPkScalePk16F32Bf6Op(res=res, src=src, scale=scale, scaleSel=scale_sel, loc=loc, ip=ip).result

@_ods_cext.register_operation(_Dialect)
class CvtPkScalePk16F32Fp6Op(_ods_ir.OpView):
  r"""
  Available on gfx1250+.
  """

  OPERATION_NAME = "rocdl.cvt.scale.pk16.f32.fp6"

  _ODS_REGIONS = (0, True)

  def __init__(self, res: _ods_ir.Type, src: _ods_ir.Value[_ods_ir.VectorType], scale: _ods_ir.Value[_ods_ir.IntegerType], scaleSel: _Union[int, _ods_ir.IntegerAttr], *, loc: _Optional[_ods_ir.Location] = None, ip: _Optional[_ods_ir.InsertionPoint] = None):
    operands = []
    attributes = {}
    regions = None
    operands.append(src)
    operands.append(scale)
    _ods_context = _ods_get_default_loc_context(loc)
    attributes["scaleSel"] = (scaleSel if (
    isinstance(scaleSel, _ods_ir.Attribute) or
    not _ods_ir.AttrBuilder.contains('I32Attr')) else
      _ods_ir.AttrBuilder.get('I32Attr')(scaleSel, context=_ods_context))
    results = []
    results.append(res)
    _ods_successors = None
    super().__init__(self.OPERATION_NAME, self._ODS_REGIONS, self._ODS_OPERAND_SEGMENTS, self._ODS_RESULT_SEGMENTS, attributes=attributes, results=results, operands=operands, successors=_ods_successors, regions=regions, loc=loc, ip=ip)

  @builtins.property
  def src(self) -> _ods_ir.Value[_ods_ir.VectorType]:
    return self.operation.operands[0]

  @builtins.property
  def scale(self) -> _ods_ir.Value[_ods_ir.IntegerType]:
    return self.operation.operands[1]

  @builtins.property
  def scaleSel(self) -> _ods_ir.IntegerAttr:
    return self.operation.attributes["scaleSel"]

  @scaleSel.setter
  def scaleSel(self, value: _ods_ir.IntegerAttr):
    if value is None:
      raise ValueError("'None' not allowed as value for mandatory attributes")
    self.operation.attributes["scaleSel"] = value

  @builtins.property
  def res(self) -> _ods_ir.OpResult[_ods_ir.VectorType]:
    return self.operation.results[0]

@_ods_cext.register_op_adaptor(CvtPkScalePk16F32Fp6Op)
class CvtPkScalePk16F32Fp6OpAdaptor(_ods_ir.OpAdaptor):
  OPERATION_NAME = "rocdl.cvt.scale.pk16.f32.fp6"

  @builtins.property
  def src(self) -> _ods_ir.Value[_ods_ir.VectorType]:
    return self.operands[0]

  @builtins.property
  def scale(self) -> _ods_ir.Value[_ods_ir.IntegerType]:
    return self.operands[1]

  @builtins.property
  def scaleSel(self) -> _ods_ir.IntegerAttr:
    return self.attributes["scaleSel"]

def cvt_scale_pk16_f32_fp6(res: _ods_ir.Type, src: _ods_ir.Value[_ods_ir.VectorType], scale: _ods_ir.Value[_ods_ir.IntegerType], scale_sel: _Union[int, _ods_ir.IntegerAttr], *, loc: _Optional[_ods_ir.Location] = None, ip: _Optional[_ods_ir.InsertionPoint] = None) -> _ods_ir.OpResult[_ods_ir.VectorType]:
  return CvtPkScalePk16F32Fp6Op(res=res, src=src, scale=scale, scaleSel=scale_sel, loc=loc, ip=ip).result

@_ods_cext.register_operation(_Dialect)
class CvtScaleF32F16Bf8Op(_ods_ir.OpView):
  r"""
  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>`.
  """

  OPERATION_NAME = "rocdl.cvt.scalef32.f16.bf8"

  _ODS_REGIONS = (0, True)

  def __init__(self, res: _ods_ir.Type, oldVdst: _ods_ir.Value[_ods_ir.VectorType], src: _ods_ir.Value[_ods_ir.IntegerType], scale: _ods_ir.Value[_ods_ir.FloatType], srcSelIndex: _Union[int, _ods_ir.IntegerAttr], dstLoHiSel: _Union[bool, _ods_ir.BoolAttr], *, loc: _Optional[_ods_ir.Location] = None, ip: _Optional[_ods_ir.InsertionPoint] = None):
    operands = []
    attributes = {}
    regions = None
    operands.append(oldVdst)
    operands.append(src)
    operands.append(scale)
    _ods_context = _ods_get_default_loc_context(loc)
    attributes["srcSelIndex"] = (srcSelIndex if (
    isinstance(srcSelIndex, _ods_ir.Attribute) or
    not _ods_ir.AttrBuilder.contains('I32Attr')) else
      _ods_ir.AttrBuilder.get('I32Attr')(srcSelIndex, context=_ods_context))
    attributes["dstLoHiSel"] = (dstLoHiSel if (
    isinstance(dstLoHiSel, _ods_ir.Attribute) or
    not _ods_ir.AttrBuilder.contains('I1Attr')) else
      _ods_ir.AttrBuilder.get('I1Attr')(dstLoHiSel, context=_ods_context))
    results = []
    results.append(res)
    _ods_successors = None
    super().__init__(self.OPERATION_NAME, self._ODS_REGIONS, self._ODS_OPERAND_SEGMENTS, self._ODS_RESULT_SEGMENTS, attributes=attributes, results=results, operands=operands, successors=_ods_successors, regions=regions, loc=loc, ip=ip)

  @builtins.property
  def oldVdst(self) -> _ods_ir.Value[_ods_ir.VectorType]:
    return self.operation.operands[0]

  @builtins.property
  def src(self) -> _ods_ir.Value[_ods_ir.IntegerType]:
    return self.operation.operands[1]

  @builtins.property
  def scale(self) -> _ods_ir.Value[_ods_ir.FloatType]:
    return self.operation.operands[2]

  @builtins.property
  def srcSelIndex(self) -> _ods_ir.IntegerAttr:
    return self.operation.attributes["srcSelIndex"]

  @srcSelIndex.setter
  def srcSelIndex(self, value: _ods_ir.IntegerAttr):
    if value is None:
      raise ValueError("'None' not allowed as value for mandatory attributes")
    self.operation.attributes["srcSelIndex"] = value

  @builtins.property
  def dstLoHiSel(self) -> _ods_ir.BoolAttr:
    return self.operation.attributes["dstLoHiSel"]

  @dstLoHiSel.setter
  def dstLoHiSel(self, value: _ods_ir.BoolAttr):
    if value is None:
      raise ValueError("'None' not allowed as value for mandatory attributes")
    self.operation.attributes["dstLoHiSel"] = value

  @builtins.property
  def res(self) -> _ods_ir.OpResult[_ods_ir.VectorType]:
    return self.operation.results[0]

@_ods_cext.register_op_adaptor(CvtScaleF32F16Bf8Op)
class CvtScaleF32F16Bf8OpAdaptor(_ods_ir.OpAdaptor):
  OPERATION_NAME = "rocdl.cvt.scalef32.f16.bf8"

  @builtins.property
  def oldVdst(self) -> _ods_ir.Value[_ods_ir.VectorType]:
    return self.operands[0]

  @builtins.property
  def src(self) -> _ods_ir.Value[_ods_ir.IntegerType]:
    return self.operands[1]

  @builtins.property
  def scale(self) -> _ods_ir.Value[_ods_ir.FloatType]:
    return self.operands[2]

  @builtins.property
  def srcSelIndex(self) -> _ods_ir.IntegerAttr:
    return self.attributes["srcSelIndex"]

  @builtins.property
  def dstLoHiSel(self) -> _ods_ir.BoolAttr:
    return self.attributes["dstLoHiSel"]

def cvt_scalef32_f16_bf8(res: _ods_ir.Type, old_vdst: _ods_ir.Value[_ods_ir.VectorType], src: _ods_ir.Value[_ods_ir.IntegerType], scale: _ods_ir.Value[_ods_ir.FloatType], src_sel_index: _Union[int, _ods_ir.IntegerAttr], dst_lo_hi_sel: _Union[bool, _ods_ir.BoolAttr], *, loc: _Optional[_ods_ir.Location] = None, ip: _Optional[_ods_ir.InsertionPoint] = None) -> _ods_ir.OpResult[_ods_ir.VectorType]:
  return CvtScaleF32F16Bf8Op(res=res, oldVdst=old_vdst, src=src, scale=scale, srcSelIndex=src_sel_index, dstLoHiSel=dst_lo_hi_sel, loc=loc, ip=ip).result

@_ods_cext.register_operation(_Dialect)
class CvtScaleF32F16Fp8Op(_ods_ir.OpView):
  r"""
  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>`.
  """

  OPERATION_NAME = "rocdl.cvt.scalef32.f16.fp8"

  _ODS_REGIONS = (0, True)

  def __init__(self, res: _ods_ir.Type, oldVdst: _ods_ir.Value[_ods_ir.VectorType], src: _ods_ir.Value[_ods_ir.IntegerType], scale: _ods_ir.Value[_ods_ir.FloatType], srcSelIndex: _Union[int, _ods_ir.IntegerAttr], dstLoHiSel: _Union[bool, _ods_ir.BoolAttr], *, loc: _Optional[_ods_ir.Location] = None, ip: _Optional[_ods_ir.InsertionPoint] = None):
    operands = []
    attributes = {}
    regions = None
    operands.append(oldVdst)
    operands.append(src)
    operands.append(scale)
    _ods_context = _ods_get_default_loc_context(loc)
    attributes["srcSelIndex"] = (srcSelIndex if (
    isinstance(srcSelIndex, _ods_ir.Attribute) or
    not _ods_ir.AttrBuilder.contains('I32Attr')) else
      _ods_ir.AttrBuilder.get('I32Attr')(srcSelIndex, context=_ods_context))
    attributes["dstLoHiSel"] = (dstLoHiSel if (
    isinstance(dstLoHiSel, _ods_ir.Attribute) or
    not _ods_ir.AttrBuilder.contains('I1Attr')) else
      _ods_ir.AttrBuilder.get('I1Attr')(dstLoHiSel, context=_ods_context))
    results = []
    results.append(res)
    _ods_successors = None
    super().__init__(self.OPERATION_NAME, self._ODS_REGIONS, self._ODS_OPERAND_SEGMENTS, self._ODS_RESULT_SEGMENTS, attributes=attributes, results=results, operands=operands, successors=_ods_successors, regions=regions, loc=loc, ip=ip)

  @builtins.property
  def oldVdst(self) -> _ods_ir.Value[_ods_ir.VectorType]:
    return self.operation.operands[0]

  @builtins.property
  def src(self) -> _ods_ir.Value[_ods_ir.IntegerType]:
    return self.operation.operands[1]

  @builtins.property
  def scale(self) -> _ods_ir.Value[_ods_ir.FloatType]:
    return self.operation.operands[2]

  @builtins.property
  def srcSelIndex(self) -> _ods_ir.IntegerAttr:
    return self.operation.attributes["srcSelIndex"]

  @srcSelIndex.setter
  def srcSelIndex(self, value: _ods_ir.IntegerAttr):
    if value is None:
      raise ValueError("'None' not allowed as value for mandatory attributes")
    self.operation.attributes["srcSelIndex"] = value

  @builtins.property
  def dstLoHiSel(self) -> _ods_ir.BoolAttr:
    return self.operation.attributes["dstLoHiSel"]

  @dstLoHiSel.setter
  def dstLoHiSel(self, value: _ods_ir.BoolAttr):
    if value is None:
      raise ValueError("'None' not allowed as value for mandatory attributes")
    self.operation.attributes["dstLoHiSel"] = value

  @builtins.property
  def res(self) -> _ods_ir.OpResult[_ods_ir.VectorType]:
    return self.operation.results[0]

@_ods_cext.register_op_adaptor(CvtScaleF32F16Fp8Op)
class CvtScaleF32F16Fp8OpAdaptor(_ods_ir.OpAdaptor):
  OPERATION_NAME = "rocdl.cvt.scalef32.f16.fp8"

  @builtins.property
  def oldVdst(self) -> _ods_ir.Value[_ods_ir.VectorType]:
    return self.operands[0]

  @builtins.property
  def src(self) -> _ods_ir.Value[_ods_ir.IntegerType]:
    return self.operands[1]

  @builtins.property
  def scale(self) -> _ods_ir.Value[_ods_ir.FloatType]:
    return self.operands[2]

  @builtins.property
  def srcSelIndex(self) -> _ods_ir.IntegerAttr:
    return self.attributes["srcSelIndex"]

  @builtins.property
  def dstLoHiSel(self) -> _ods_ir.BoolAttr:
    return self.attributes["dstLoHiSel"]

def cvt_scalef32_f16_fp8(res: _ods_ir.Type, old_vdst: _ods_ir.Value[_ods_ir.VectorType], src: _ods_ir.Value[_ods_ir.IntegerType], scale: _ods_ir.Value[_ods_ir.FloatType], src_sel_index: _Union[int, _ods_ir.IntegerAttr], dst_lo_hi_sel: _Union[bool, _ods_ir.BoolAttr], *, loc: _Optional[_ods_ir.Location] = None, ip: _Optional[_ods_ir.InsertionPoint] = None) -> _ods_ir.OpResult[_ods_ir.VectorType]:
  return CvtScaleF32F16Fp8Op(res=res, oldVdst=old_vdst, src=src, scale=scale, srcSelIndex=src_sel_index, dstLoHiSel=dst_lo_hi_sel, loc=loc, ip=ip).result

@_ods_cext.register_operation(_Dialect)
class CvtScaleF32F32Bf8Op(_ods_ir.OpView):
  r"""
  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>`.
  """

  OPERATION_NAME = "rocdl.cvt.scalef32.f32.bf8"

  _ODS_REGIONS = (0, True)

  def __init__(self, res: _ods_ir.Type, src: _ods_ir.Value[_ods_ir.IntegerType], scale: _ods_ir.Value[_ods_ir.FloatType], srcSelIndex: _Union[int, _ods_ir.IntegerAttr], *, loc: _Optional[_ods_ir.Location] = None, ip: _Optional[_ods_ir.InsertionPoint] = None):
    operands = []
    attributes = {}
    regions = None
    operands.append(src)
    operands.append(scale)
    _ods_context = _ods_get_default_loc_context(loc)
    attributes["srcSelIndex"] = (srcSelIndex if (
    isinstance(srcSelIndex, _ods_ir.Attribute) or
    not _ods_ir.AttrBuilder.contains('I32Attr')) else
      _ods_ir.AttrBuilder.get('I32Attr')(srcSelIndex, context=_ods_context))
    results = []
    results.append(res)
    _ods_successors = None
    super().__init__(self.OPERATION_NAME, self._ODS_REGIONS, self._ODS_OPERAND_SEGMENTS, self._ODS_RESULT_SEGMENTS, attributes=attributes, results=results, operands=operands, successors=_ods_successors, regions=regions, loc=loc, ip=ip)

  @builtins.property
  def src(self) -> _ods_ir.Value[_ods_ir.IntegerType]:
    return self.operation.operands[0]

  @builtins.property
  def scale(self) -> _ods_ir.Value[_ods_ir.FloatType]:
    return self.operation.operands[1]

  @builtins.property
  def srcSelIndex(self) -> _ods_ir.IntegerAttr:
    return self.operation.attributes["srcSelIndex"]

  @srcSelIndex.setter
  def srcSelIndex(self, value: _ods_ir.IntegerAttr):
    if value is None:
      raise ValueError("'None' not allowed as value for mandatory attributes")
    self.operation.attributes["srcSelIndex"] = value

  @builtins.property
  def res(self) -> _ods_ir.OpResult[_ods_ir.FloatType]:
    return self.operation.results[0]

@_ods_cext.register_op_adaptor(CvtScaleF32F32Bf8Op)
class CvtScaleF32F32Bf8OpAdaptor(_ods_ir.OpAdaptor):
  OPERATION_NAME = "rocdl.cvt.scalef32.f32.bf8"

  @builtins.property
  def src(self) -> _ods_ir.Value[_ods_ir.IntegerType]:
    return self.operands[0]

  @builtins.property
  def scale(self) -> _ods_ir.Value[_ods_ir.FloatType]:
    return self.operands[1]

  @builtins.property
  def srcSelIndex(self) -> _ods_ir.IntegerAttr:
    return self.attributes["srcSelIndex"]

def cvt_scalef32_f32_bf8(res: _ods_ir.Type, src: _ods_ir.Value[_ods_ir.IntegerType], scale: _ods_ir.Value[_ods_ir.FloatType], src_sel_index: _Union[int, _ods_ir.IntegerAttr], *, loc: _Optional[_ods_ir.Location] = None, ip: _Optional[_ods_ir.InsertionPoint] = None) -> _ods_ir.OpResult[_ods_ir.FloatType]:
  return CvtScaleF32F32Bf8Op(res=res, src=src, scale=scale, srcSelIndex=src_sel_index, loc=loc, ip=ip).result

@_ods_cext.register_operation(_Dialect)
class CvtScaleF32F32Fp8Op(_ods_ir.OpView):
  r"""
  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>`.
  """

  OPERATION_NAME = "rocdl.cvt.scalef32.f32.fp8"

  _ODS_REGIONS = (0, True)

  def __init__(self, res: _ods_ir.Type, src: _ods_ir.Value[_ods_ir.IntegerType], scale: _ods_ir.Value[_ods_ir.FloatType], srcSelIndex: _Union[int, _ods_ir.IntegerAttr], *, loc: _Optional[_ods_ir.Location] = None, ip: _Optional[_ods_ir.InsertionPoint] = None):
    operands = []
    attributes = {}
    regions = None
    operands.append(src)
    operands.append(scale)
    _ods_context = _ods_get_default_loc_context(loc)
    attributes["srcSelIndex"] = (srcSelIndex if (
    isinstance(srcSelIndex, _ods_ir.Attribute) or
    not _ods_ir.AttrBuilder.contains('I32Attr')) else
      _ods_ir.AttrBuilder.get('I32Attr')(srcSelIndex, context=_ods_context))
    results = []
    results.append(res)
    _ods_successors = None
    super().__init__(self.OPERATION_NAME, self._ODS_REGIONS, self._ODS_OPERAND_SEGMENTS, self._ODS_RESULT_SEGMENTS, attributes=attributes, results=results, operands=operands, successors=_ods_successors, regions=regions, loc=loc, ip=ip)

  @builtins.property
  def src(self) -> _ods_ir.Value[_ods_ir.IntegerType]:
    return self.operation.operands[0]

  @builtins.property
  def scale(self) -> _ods_ir.Value[_ods_ir.FloatType]:
    return self.operation.operands[1]

  @builtins.property
  def srcSelIndex(self) -> _ods_ir.IntegerAttr:
    return self.operation.attributes["srcSelIndex"]

  @srcSelIndex.setter
  def srcSelIndex(self, value: _ods_ir.IntegerAttr):
    if value is None:
      raise ValueError("'None' not allowed as value for mandatory attributes")
    self.operation.attributes["srcSelIndex"] = value

  @builtins.property
  def res(self) -> _ods_ir.OpResult[_ods_ir.FloatType]:
    return self.operation.results[0]

@_ods_cext.register_op_adaptor(CvtScaleF32F32Fp8Op)
class CvtScaleF32F32Fp8OpAdaptor(_ods_ir.OpAdaptor):
  OPERATION_NAME = "rocdl.cvt.scalef32.f32.fp8"

  @builtins.property
  def src(self) -> _ods_ir.Value[_ods_ir.IntegerType]:
    return self.operands[0]

  @builtins.property
  def scale(self) -> _ods_ir.Value[_ods_ir.FloatType]:
    return self.operands[1]

  @builtins.property
  def srcSelIndex(self) -> _ods_ir.IntegerAttr:
    return self.attributes["srcSelIndex"]

def cvt_scalef32_f32_fp8(res: _ods_ir.Type, src: _ods_ir.Value[_ods_ir.IntegerType], scale: _ods_ir.Value[_ods_ir.FloatType], src_sel_index: _Union[int, _ods_ir.IntegerAttr], *, loc: _Optional[_ods_ir.Location] = None, ip: _Optional[_ods_ir.InsertionPoint] = None) -> _ods_ir.OpResult[_ods_ir.FloatType]:
  return CvtScaleF32F32Fp8Op(res=res, src=src, scale=scale, srcSelIndex=src_sel_index, loc=loc, ip=ip).result

@_ods_cext.register_operation(_Dialect)
class CvtScaleF32Pk8Bf8Bf16Op(_ods_ir.OpView):
  r"""
  Convert 8 packed bf16 values to packed bf8, multiplying by the exponent part of `scale`
  before doing so. This op is for gfx1250+ arch.
  """

  OPERATION_NAME = "rocdl.cvt.scalef32.pk8.bf8.bf16"

  _ODS_REGIONS = (0, True)

  def __init__(self, res: _ods_ir.Type, src: _ods_ir.Value[_ods_ir.VectorType], scale: _ods_ir.Value[_ods_ir.FloatType], *, loc: _Optional[_ods_ir.Location] = None, ip: _Optional[_ods_ir.InsertionPoint] = None):
    operands = []
    attributes = {}
    regions = None
    operands.append(src)
    operands.append(scale)
    _ods_context = _ods_get_default_loc_context(loc)
    results = []
    results.append(res)
    _ods_successors = None
    super().__init__(self.OPERATION_NAME, self._ODS_REGIONS, self._ODS_OPERAND_SEGMENTS, self._ODS_RESULT_SEGMENTS, attributes=attributes, results=results, operands=operands, successors=_ods_successors, regions=regions, loc=loc, ip=ip)

  @builtins.property
  def src(self) -> _ods_ir.Value[_ods_ir.VectorType]:
    return self.operation.operands[0]

  @builtins.property
  def scale(self) -> _ods_ir.Value[_ods_ir.FloatType]:
    return self.operation.operands[1]

  @builtins.property
  def res(self) -> _ods_ir.OpResult[_ods_ir.VectorType]:
    return self.operation.results[0]

@_ods_cext.register_op_adaptor(CvtScaleF32Pk8Bf8Bf16Op)
class CvtScaleF32Pk8Bf8Bf16OpAdaptor(_ods_ir.OpAdaptor):
  OPERATION_NAME = "rocdl.cvt.scalef32.pk8.bf8.bf16"

  @builtins.property
  def src(self) -> _ods_ir.Value[_ods_ir.VectorType]:
    return self.operands[0]

  @builtins.property
  def scale(self) -> _ods_ir.Value[_ods_ir.FloatType]:
    return self.operands[1]

def cvt_scalef32_pk8_bf8_bf16(res: _ods_ir.Type, src: _ods_ir.Value[_ods_ir.VectorType], scale: _ods_ir.Value[_ods_ir.FloatType], *, loc: _Optional[_ods_ir.Location] = None, ip: _Optional[_ods_ir.InsertionPoint] = None) -> _ods_ir.OpResult[_ods_ir.VectorType]:
  return CvtScaleF32Pk8Bf8Bf16Op(res=res, src=src, scale=scale, loc=loc, ip=ip).result

@_ods_cext.register_operation(_Dialect)
class CvtScaleF32Pk8Bf8F16Op(_ods_ir.OpView):
  r"""
  Convert 8 packed f16 values to packed bf8, multiplying by the exponent part of `scale`
  before doing so. This op is for gfx1250+ arch.
  """

  OPERATION_NAME = "rocdl.cvt.scalef32.pk8.bf8.f16"

  _ODS_REGIONS = (0, True)

  def __init__(self, res: _ods_ir.Type, src: _ods_ir.Value[_ods_ir.VectorType], scale: _ods_ir.Value[_ods_ir.FloatType], *, loc: _Optional[_ods_ir.Location] = None, ip: _Optional[_ods_ir.InsertionPoint] = None):
    operands = []
    attributes = {}
    regions = None
    operands.append(src)
    operands.append(scale)
    _ods_context = _ods_get_default_loc_context(loc)
    results = []
    results.append(res)
    _ods_successors = None
    super().__init__(self.OPERATION_NAME, self._ODS_REGIONS, self._ODS_OPERAND_SEGMENTS, self._ODS_RESULT_SEGMENTS, attributes=attributes, results=results, operands=operands, successors=_ods_successors, regions=regions, loc=loc, ip=ip)

  @builtins.property
  def src(self) -> _ods_ir.Value[_ods_ir.VectorType]:
    return self.operation.operands[0]

  @builtins.property
  def scale(self) -> _ods_ir.Value[_ods_ir.FloatType]:
    return self.operation.operands[1]

  @builtins.property
  def res(self) -> _ods_ir.OpResult[_ods_ir.VectorType]:
    return self.operation.results[0]

@_ods_cext.register_op_adaptor(CvtScaleF32Pk8Bf8F16Op)
class CvtScaleF32Pk8Bf8F16OpAdaptor(_ods_ir.OpAdaptor):
  OPERATION_NAME = "rocdl.cvt.scalef32.pk8.bf8.f16"

  @builtins.property
  def src(self) -> _ods_ir.Value[_ods_ir.VectorType]:
    return self.operands[0]

  @builtins.property
  def scale(self) -> _ods_ir.Value[_ods_ir.FloatType]:
    return self.operands[1]

def cvt_scalef32_pk8_bf8_f16(res: _ods_ir.Type, src: _ods_ir.Value[_ods_ir.VectorType], scale: _ods_ir.Value[_ods_ir.FloatType], *, loc: _Optional[_ods_ir.Location] = None, ip: _Optional[_ods_ir.InsertionPoint] = None) -> _ods_ir.OpResult[_ods_ir.VectorType]:
  return CvtScaleF32Pk8Bf8F16Op(res=res, src=src, scale=scale, loc=loc, ip=ip).result

@_ods_cext.register_operation(_Dialect)
class CvtScaleF32Pk8Bf8F32Op(_ods_ir.OpView):
  r"""
  Convert 8 packed f32 values to packed bf8, multiplying by the exponent part of `scale`
  before doing so. This op is for gfx1250+ arch.
  """

  OPERATION_NAME = "rocdl.cvt.scalef32.pk8.bf8.f32"

  _ODS_REGIONS = (0, True)

  def __init__(self, res: _ods_ir.Type, src: _ods_ir.Value[_ods_ir.VectorType], scale: _ods_ir.Value[_ods_ir.FloatType], *, loc: _Optional[_ods_ir.Location] = None, ip: _Optional[_ods_ir.InsertionPoint] = None):
    operands = []
    attributes = {}
    regions = None
    operands.append(src)
    operands.append(scale)
    _ods_context = _ods_get_default_loc_context(loc)
    results = []
    results.append(res)
    _ods_successors = None
    super().__init__(self.OPERATION_NAME, self._ODS_REGIONS, self._ODS_OPERAND_SEGMENTS, self._ODS_RESULT_SEGMENTS, attributes=attributes, results=results, operands=operands, successors=_ods_successors, regions=regions, loc=loc, ip=ip)

  @builtins.property
  def src(self) -> _ods_ir.Value[_ods_ir.VectorType]:
    return self.operation.operands[0]

  @builtins.property
  def scale(self) -> _ods_ir.Value[_ods_ir.FloatType]:
    return self.operation.operands[1]

  @builtins.property
  def res(self) -> _ods_ir.OpResult[_ods_ir.VectorType]:
    return self.operation.results[0]

@_ods_cext.register_op_adaptor(CvtScaleF32Pk8Bf8F32Op)
class CvtScaleF32Pk8Bf8F32OpAdaptor(_ods_ir.OpAdaptor):
  OPERATION_NAME = "rocdl.cvt.scalef32.pk8.bf8.f32"

  @builtins.property
  def src(self) -> _ods_ir.Value[_ods_ir.VectorType]:
    return self.operands[0]

  @builtins.property
  def scale(self) -> _ods_ir.Value[_ods_ir.FloatType]:
    return self.operands[1]

def cvt_scalef32_pk8_bf8_f32(res: _ods_ir.Type, src: _ods_ir.Value[_ods_ir.VectorType], scale: _ods_ir.Value[_ods_ir.FloatType], *, loc: _Optional[_ods_ir.Location] = None, ip: _Optional[_ods_ir.InsertionPoint] = None) -> _ods_ir.OpResult[_ods_ir.VectorType]:
  return CvtScaleF32Pk8Bf8F32Op(res=res, src=src, scale=scale, loc=loc, ip=ip).result

@_ods_cext.register_operation(_Dialect)
class CvtScaleF32Pk8Fp4Bf16Op(_ods_ir.OpView):
  r"""
  Convert 8 packed bf16 values to packed fp4, multiplying by the exponent part of `scale`
  before doing so. This op is for gfx1250+ arch.
  """

  OPERATION_NAME = "rocdl.cvt.scalef32.pk8.fp4.bf16"

  _ODS_REGIONS = (0, True)

  def __init__(self, res: _ods_ir.Type, src: _ods_ir.Value[_ods_ir.VectorType], scale: _ods_ir.Value[_ods_ir.FloatType], *, loc: _Optional[_ods_ir.Location] = None, ip: _Optional[_ods_ir.InsertionPoint] = None):
    operands = []
    attributes = {}
    regions = None
    operands.append(src)
    operands.append(scale)
    _ods_context = _ods_get_default_loc_context(loc)
    results = []
    results.append(res)
    _ods_successors = None
    super().__init__(self.OPERATION_NAME, self._ODS_REGIONS, self._ODS_OPERAND_SEGMENTS, self._ODS_RESULT_SEGMENTS, attributes=attributes, results=results, operands=operands, successors=_ods_successors, regions=regions, loc=loc, ip=ip)

  @builtins.property
  def src(self) -> _ods_ir.Value[_ods_ir.VectorType]:
    return self.operation.operands[0]

  @builtins.property
  def scale(self) -> _ods_ir.Value[_ods_ir.FloatType]:
    return self.operation.operands[1]

  @builtins.property
  def res(self) -> _ods_ir.OpResult[_ods_ir.IntegerType]:
    return self.operation.results[0]

@_ods_cext.register_op_adaptor(CvtScaleF32Pk8Fp4Bf16Op)
class CvtScaleF32Pk8Fp4Bf16OpAdaptor(_ods_ir.OpAdaptor):
  OPERATION_NAME = "rocdl.cvt.scalef32.pk8.fp4.bf16"

  @builtins.property
  def src(self) -> _ods_ir.Value[_ods_ir.VectorType]:
    return self.operands[0]

  @builtins.property
  def scale(self) -> _ods_ir.Value[_ods_ir.FloatType]:
    return self.operands[1]

def cvt_scalef32_pk8_fp4_bf16(res: _ods_ir.Type, src: _ods_ir.Value[_ods_ir.VectorType], scale: _ods_ir.Value[_ods_ir.FloatType], *, loc: _Optional[_ods_ir.Location] = None, ip: _Optional[_ods_ir.InsertionPoint] = None) -> _ods_ir.OpResult[_ods_ir.IntegerType]:
  return CvtScaleF32Pk8Fp4Bf16Op(res=res, src=src, scale=scale, loc=loc, ip=ip).result

@_ods_cext.register_operation(_Dialect)
class CvtScaleF32Pk8Fp4F16Op(_ods_ir.OpView):
  r"""
  Convert 8 packed f16 values to packed fp4, multiplying by the exponent part of `scale`
  before doing so. This op is for gfx1250+ arch.
  """

  OPERATION_NAME = "rocdl.cvt.scalef32.pk8.fp4.f16"

  _ODS_REGIONS = (0, True)

  def __init__(self, res: _ods_ir.Type, src: _ods_ir.Value[_ods_ir.VectorType], scale: _ods_ir.Value[_ods_ir.FloatType], *, loc: _Optional[_ods_ir.Location] = None, ip: _Optional[_ods_ir.InsertionPoint] = None):
    operands = []
    attributes = {}
    regions = None
    operands.append(src)
    operands.append(scale)
    _ods_context = _ods_get_default_loc_context(loc)
    results = []
    results.append(res)
    _ods_successors = None
    super().__init__(self.OPERATION_NAME, self._ODS_REGIONS, self._ODS_OPERAND_SEGMENTS, self._ODS_RESULT_SEGMENTS, attributes=attributes, results=results, operands=operands, successors=_ods_successors, regions=regions, loc=loc, ip=ip)

  @builtins.property
  def src(self) -> _ods_ir.Value[_ods_ir.VectorType]:
    return self.operation.operands[0]

  @builtins.property
  def scale(self) -> _ods_ir.Value[_ods_ir.FloatType]:
    return self.operation.operands[1]

  @builtins.property
  def res(self) -> _ods_ir.OpResult[_ods_ir.IntegerType]:
    return self.operation.results[0]

@_ods_cext.register_op_adaptor(CvtScaleF32Pk8Fp4F16Op)
class CvtScaleF32Pk8Fp4F16OpAdaptor(_ods_ir.OpAdaptor):
  OPERATION_NAME = "rocdl.cvt.scalef32.pk8.fp4.f16"

  @builtins.property
  def src(self) -> _ods_ir.Value[_ods_ir.VectorType]:
    return self.operands[0]

  @builtins.property
  def scale(self) -> _ods_ir.Value[_ods_ir.FloatType]:
    return self.operands[1]

def cvt_scalef32_pk8_fp4_f16(res: _ods_ir.Type, src: _ods_ir.Value[_ods_ir.VectorType], scale: _ods_ir.Value[_ods_ir.FloatType], *, loc: _Optional[_ods_ir.Location] = None, ip: _Optional[_ods_ir.InsertionPoint] = None) -> _ods_ir.OpResult[_ods_ir.IntegerType]:
  return CvtScaleF32Pk8Fp4F16Op(res=res, src=src, scale=scale, loc=loc, ip=ip).result

@_ods_cext.register_operation(_Dialect)
class CvtScaleF32Pk8Fp4F32Op(_ods_ir.OpView):
  r"""
  Convert 8 packed f32 values to packed fp4, multiplying by the exponent part of `scale`
  before doing so. This op is for gfx1250+ arch.
  """

  OPERATION_NAME = "rocdl.cvt.scalef32.pk8.fp4.f32"

  _ODS_REGIONS = (0, True)

  def __init__(self, res: _ods_ir.Type, src: _ods_ir.Value[_ods_ir.VectorType], scale: _ods_ir.Value[_ods_ir.FloatType], *, loc: _Optional[_ods_ir.Location] = None, ip: _Optional[_ods_ir.InsertionPoint] = None):
    operands = []
    attributes = {}
    regions = None
    operands.append(src)
    operands.append(scale)
    _ods_context = _ods_get_default_loc_context(loc)
    results = []
    results.append(res)
    _ods_successors = None
    super().__init__(self.OPERATION_NAME, self._ODS_REGIONS, self._ODS_OPERAND_SEGMENTS, self._ODS_RESULT_SEGMENTS, attributes=attributes, results=results, operands=operands, successors=_ods_successors, regions=regions, loc=loc, ip=ip)

  @builtins.property
  def src(self) -> _ods_ir.Value[_ods_ir.VectorType]:
    return self.operation.operands[0]

  @builtins.property
  def scale(self) -> _ods_ir.Value[_ods_ir.FloatType]:
    return self.operation.operands[1]

  @builtins.property
  def res(self) -> _ods_ir.OpResult[_ods_ir.IntegerType]:
    return self.operation.results[0]

@_ods_cext.register_op_adaptor(CvtScaleF32Pk8Fp4F32Op)
class CvtScaleF32Pk8Fp4F32OpAdaptor(_ods_ir.OpAdaptor):
  OPERATION_NAME = "rocdl.cvt.scalef32.pk8.fp4.f32"

  @builtins.property
  def src(self) -> _ods_ir.Value[_ods_ir.VectorType]:
    return self.operands[0]

  @builtins.property
  def scale(self) -> _ods_ir.Value[_ods_ir.FloatType]:
    return self.operands[1]

def cvt_scalef32_pk8_fp4_f32(res: _ods_ir.Type, src: _ods_ir.Value[_ods_ir.VectorType], scale: _ods_ir.Value[_ods_ir.FloatType], *, loc: _Optional[_ods_ir.Location] = None, ip: _Optional[_ods_ir.InsertionPoint] = None) -> _ods_ir.OpResult[_ods_ir.IntegerType]:
  return CvtScaleF32Pk8Fp4F32Op(res=res, src=src, scale=scale, loc=loc, ip=ip).result

@_ods_cext.register_operation(_Dialect)
class CvtScaleF32Pk8Fp8Bf16Op(_ods_ir.OpView):
  r"""
  Convert 8 packed bf16 values to packed fp8, multiplying by the exponent part of `scale`
  before doing so. This op is for gfx1250+ arch.
  """

  OPERATION_NAME = "rocdl.cvt.scalef32.pk8.fp8.bf16"

  _ODS_REGIONS = (0, True)

  def __init__(self, res: _ods_ir.Type, src: _ods_ir.Value[_ods_ir.VectorType], scale: _ods_ir.Value[_ods_ir.FloatType], *, loc: _Optional[_ods_ir.Location] = None, ip: _Optional[_ods_ir.InsertionPoint] = None):
    operands = []
    attributes = {}
    regions = None
    operands.append(src)
    operands.append(scale)
    _ods_context = _ods_get_default_loc_context(loc)
    results = []
    results.append(res)
    _ods_successors = None
    super().__init__(self.OPERATION_NAME, self._ODS_REGIONS, self._ODS_OPERAND_SEGMENTS, self._ODS_RESULT_SEGMENTS, attributes=attributes, results=results, operands=operands, successors=_ods_successors, regions=regions, loc=loc, ip=ip)

  @builtins.property
  def src(self) -> _ods_ir.Value[_ods_ir.VectorType]:
    return self.operation.operands[0]

  @builtins.property
  def scale(self) -> _ods_ir.Value[_ods_ir.FloatType]:
    return self.operation.operands[1]

  @builtins.property
  def res(self) -> _ods_ir.OpResult[_ods_ir.VectorType]:
    return self.operation.results[0]

@_ods_cext.register_op_adaptor(CvtScaleF32Pk8Fp8Bf16Op)
class CvtScaleF32Pk8Fp8Bf16OpAdaptor(_ods_ir.OpAdaptor):
  OPERATION_NAME = "rocdl.cvt.scalef32.pk8.fp8.bf16"

  @builtins.property
  def src(self) -> _ods_ir.Value[_ods_ir.VectorType]:
    return self.operands[0]

  @builtins.property
  def scale(self) -> _ods_ir.Value[_ods_ir.FloatType]:
    return self.operands[1]

def cvt_scalef32_pk8_fp8_bf16(res: _ods_ir.Type, src: _ods_ir.Value[_ods_ir.VectorType], scale: _ods_ir.Value[_ods_ir.FloatType], *, loc: _Optional[_ods_ir.Location] = None, ip: _Optional[_ods_ir.InsertionPoint] = None) -> _ods_ir.OpResult[_ods_ir.VectorType]:
  return CvtScaleF32Pk8Fp8Bf16Op(res=res, src=src, scale=scale, loc=loc, ip=ip).result

@_ods_cext.register_operation(_Dialect)
class CvtScaleF32Pk8Fp8F16Op(_ods_ir.OpView):
  r"""
  Convert 8 packed f16 values to packed fp8, multiplying by the exponent part of `scale`
  before doing so. This op is for gfx1250+ arch.
  """

  OPERATION_NAME = "rocdl.cvt.scalef32.pk8.fp8.f16"

  _ODS_REGIONS = (0, True)

  def __init__(self, res: _ods_ir.Type, src: _ods_ir.Value[_ods_ir.VectorType], scale: _ods_ir.Value[_ods_ir.FloatType], *, loc: _Optional[_ods_ir.Location] = None, ip: _Optional[_ods_ir.InsertionPoint] = None):
    operands = []
    attributes = {}
    regions = None
    operands.append(src)
    operands.append(scale)
    _ods_context = _ods_get_default_loc_context(loc)
    results = []
    results.append(res)
    _ods_successors = None
    super().__init__(self.OPERATION_NAME, self._ODS_REGIONS, self._ODS_OPERAND_SEGMENTS, self._ODS_RESULT_SEGMENTS, attributes=attributes, results=results, operands=operands, successors=_ods_successors, regions=regions, loc=loc, ip=ip)

  @builtins.property
  def src(self) -> _ods_ir.Value[_ods_ir.VectorType]:
    return self.operation.operands[0]

  @builtins.property
  def scale(self) -> _ods_ir.Value[_ods_ir.FloatType]:
    return self.operation.operands[1]

  @builtins.property
  def res(self) -> _ods_ir.OpResult[_ods_ir.VectorType]:
    return self.operation.results[0]

@_ods_cext.register_op_adaptor(CvtScaleF32Pk8Fp8F16Op)
class CvtScaleF32Pk8Fp8F16OpAdaptor(_ods_ir.OpAdaptor):
  OPERATION_NAME = "rocdl.cvt.scalef32.pk8.fp8.f16"

  @builtins.property
  def src(self) -> _ods_ir.Value[_ods_ir.VectorType]:
    return self.operands[0]

  @builtins.property
  def scale(self) -> _ods_ir.Value[_ods_ir.FloatType]:
    return self.operands[1]

def cvt_scalef32_pk8_fp8_f16(res: _ods_ir.Type, src: _ods_ir.Value[_ods_ir.VectorType], scale: _ods_ir.Value[_ods_ir.FloatType], *, loc: _Optional[_ods_ir.Location] = None, ip: _Optional[_ods_ir.InsertionPoint] = None) -> _ods_ir.OpResult[_ods_ir.VectorType]:
  return CvtScaleF32Pk8Fp8F16Op(res=res, src=src, scale=scale, loc=loc, ip=ip).result

@_ods_cext.register_operation(_Dialect)
class CvtScaleF32Pk8Fp8F32Op(_ods_ir.OpView):
  r"""
  Convert 8 packed f32 values to packed fp8, multiplying by the exponent part of `scale`
  before doing so. This op is for gfx1250+ arch.
  """

  OPERATION_NAME = "rocdl.cvt.scalef32.pk8.fp8.f32"

  _ODS_REGIONS = (0, True)

  def __init__(self, res: _ods_ir.Type, src: _ods_ir.Value[_ods_ir.VectorType], scale: _ods_ir.Value[_ods_ir.FloatType], *, loc: _Optional[_ods_ir.Location] = None, ip: _Optional[_ods_ir.InsertionPoint] = None):
    operands = []
    attributes = {}
    regions = None
    operands.append(src)
    operands.append(scale)
    _ods_context = _ods_get_default_loc_context(loc)
    results = []
    results.append(res)
    _ods_successors = None
    super().__init__(self.OPERATION_NAME, self._ODS_REGIONS, self._ODS_OPERAND_SEGMENTS, self._ODS_RESULT_SEGMENTS, attributes=attributes, results=results, operands=operands, successors=_ods_successors, regions=regions, loc=loc, ip=ip)

  @builtins.property
  def src(self) -> _ods_ir.Value[_ods_ir.VectorType]:
    return self.operation.operands[0]

  @builtins.property
  def scale(self) -> _ods_ir.Value[_ods_ir.FloatType]:
    return self.operation.operands[1]

  @builtins.property
  def res(self) -> _ods_ir.OpResult[_ods_ir.VectorType]:
    return self.operation.results[0]

@_ods_cext.register_op_adaptor(CvtScaleF32Pk8Fp8F32Op)
class CvtScaleF32Pk8Fp8F32OpAdaptor(_ods_ir.OpAdaptor):
  OPERATION_NAME = "rocdl.cvt.scalef32.pk8.fp8.f32"

  @builtins.property
  def src(self) -> _ods_ir.Value[_ods_ir.VectorType]:
    return self.operands[0]

  @builtins.property
  def scale(self) -> _ods_ir.Value[_ods_ir.FloatType]:
    return self.operands[1]

def cvt_scalef32_pk8_fp8_f32(res: _ods_ir.Type, src: _ods_ir.Value[_ods_ir.VectorType], scale: _ods_ir.Value[_ods_ir.FloatType], *, loc: _Optional[_ods_ir.Location] = None, ip: _Optional[_ods_ir.InsertionPoint] = None) -> _ods_ir.OpResult[_ods_ir.VectorType]:
  return CvtScaleF32Pk8Fp8F32Op(res=res, src=src, scale=scale, loc=loc, ip=ip).result

@_ods_cext.register_operation(_Dialect)
class CvtScaleF32Pk16Bf6Bf16Op(_ods_ir.OpView):
  r"""
  Convert 8 packed bf16 values to packed bf6, multiplying by the exponent part of `scale`
  before doing so. This op is for gfx1250+ arch.
  """

  OPERATION_NAME = "rocdl.cvt.scalef32.pk16.bf6.bf16"

  _ODS_REGIONS = (0, True)

  def __init__(self, res: _ods_ir.Type, src: _ods_ir.Value[_ods_ir.VectorType], scale: _ods_ir.Value[_ods_ir.FloatType], *, loc: _Optional[_ods_ir.Location] = None, ip: _Optional[_ods_ir.InsertionPoint] = None):
    operands = []
    attributes = {}
    regions = None
    operands.append(src)
    operands.append(scale)
    _ods_context = _ods_get_default_loc_context(loc)
    results = []
    results.append(res)
    _ods_successors = None
    super().__init__(self.OPERATION_NAME, self._ODS_REGIONS, self._ODS_OPERAND_SEGMENTS, self._ODS_RESULT_SEGMENTS, attributes=attributes, results=results, operands=operands, successors=_ods_successors, regions=regions, loc=loc, ip=ip)

  @builtins.property
  def src(self) -> _ods_ir.Value[_ods_ir.VectorType]:
    return self.operation.operands[0]

  @builtins.property
  def scale(self) -> _ods_ir.Value[_ods_ir.FloatType]:
    return self.operation.operands[1]

  @builtins.property
  def res(self) -> _ods_ir.OpResult[_ods_ir.VectorType]:
    return self.operation.results[0]

@_ods_cext.register_op_adaptor(CvtScaleF32Pk16Bf6Bf16Op)
class CvtScaleF32Pk16Bf6Bf16OpAdaptor(_ods_ir.OpAdaptor):
  OPERATION_NAME = "rocdl.cvt.scalef32.pk16.bf6.bf16"

  @builtins.property
  def src(self) -> _ods_ir.Value[_ods_ir.VectorType]:
    return self.operands[0]

  @builtins.property
  def scale(self) -> _ods_ir.Value[_ods_ir.FloatType]:
    return self.operands[1]

def cvt_scalef32_pk16_bf6_bf16(res: _ods_ir.Type, src: _ods_ir.Value[_ods_ir.VectorType], scale: _ods_ir.Value[_ods_ir.FloatType], *, loc: _Optional[_ods_ir.Location] = None, ip: _Optional[_ods_ir.InsertionPoint] = None) -> _ods_ir.OpResult[_ods_ir.VectorType]:
  return CvtScaleF32Pk16Bf6Bf16Op(res=res, src=src, scale=scale, loc=loc, ip=ip).result

@_ods_cext.register_operation(_Dialect)
class CvtScaleF32Pk16Bf6F16Op(_ods_ir.OpView):
  r"""
  Convert 8 packed f16 values to packed bf6, multiplying by the exponent part of `scale`
  before doing so. This op is for gfx1250+ arch.
  """

  OPERATION_NAME = "rocdl.cvt.scalef32.pk16.bf6.f16"

  _ODS_REGIONS = (0, True)

  def __init__(self, res: _ods_ir.Type, src: _ods_ir.Value[_ods_ir.VectorType], scale: _ods_ir.Value[_ods_ir.FloatType], *, loc: _Optional[_ods_ir.Location] = None, ip: _Optional[_ods_ir.InsertionPoint] = None):
    operands = []
    attributes = {}
    regions = None
    operands.append(src)
    operands.append(scale)
    _ods_context = _ods_get_default_loc_context(loc)
    results = []
    results.append(res)
    _ods_successors = None
    super().__init__(self.OPERATION_NAME, self._ODS_REGIONS, self._ODS_OPERAND_SEGMENTS, self._ODS_RESULT_SEGMENTS, attributes=attributes, results=results, operands=operands, successors=_ods_successors, regions=regions, loc=loc, ip=ip)

  @builtins.property
  def src(self) -> _ods_ir.Value[_ods_ir.VectorType]:
    return self.operation.operands[0]

  @builtins.property
  def scale(self) -> _ods_ir.Value[_ods_ir.FloatType]:
    return self.operation.operands[1]

  @builtins.property
  def res(self) -> _ods_ir.OpResult[_ods_ir.VectorType]:
    return self.operation.results[0]

@_ods_cext.register_op_adaptor(CvtScaleF32Pk16Bf6F16Op)
class CvtScaleF32Pk16Bf6F16OpAdaptor(_ods_ir.OpAdaptor):
  OPERATION_NAME = "rocdl.cvt.scalef32.pk16.bf6.f16"

  @builtins.property
  def src(self) -> _ods_ir.Value[_ods_ir.VectorType]:
    return self.operands[0]

  @builtins.property
  def scale(self) -> _ods_ir.Value[_ods_ir.FloatType]:
    return self.operands[1]

def cvt_scalef32_pk16_bf6_f16(res: _ods_ir.Type, src: _ods_ir.Value[_ods_ir.VectorType], scale: _ods_ir.Value[_ods_ir.FloatType], *, loc: _Optional[_ods_ir.Location] = None, ip: _Optional[_ods_ir.InsertionPoint] = None) -> _ods_ir.OpResult[_ods_ir.VectorType]:
  return CvtScaleF32Pk16Bf6F16Op(res=res, src=src, scale=scale, loc=loc, ip=ip).result

@_ods_cext.register_operation(_Dialect)
class CvtScaleF32Pk16Bf6F32Op(_ods_ir.OpView):
  r"""
  Convert 8 packed f32 values to packed bf6, multiplying by the exponent part of `scale`
  before doing so. This op is for gfx1250+ arch.
  """

  OPERATION_NAME = "rocdl.cvt.scalef32.pk16.bf6.f32"

  _ODS_REGIONS = (0, True)

  def __init__(self, res: _ods_ir.Type, src: _ods_ir.Value[_ods_ir.VectorType], scale: _ods_ir.Value[_ods_ir.FloatType], *, loc: _Optional[_ods_ir.Location] = None, ip: _Optional[_ods_ir.InsertionPoint] = None):
    operands = []
    attributes = {}
    regions = None
    operands.append(src)
    operands.append(scale)
    _ods_context = _ods_get_default_loc_context(loc)
    results = []
    results.append(res)
    _ods_successors = None
    super().__init__(self.OPERATION_NAME, self._ODS_REGIONS, self._ODS_OPERAND_SEGMENTS, self._ODS_RESULT_SEGMENTS, attributes=attributes, results=results, operands=operands, successors=_ods_successors, regions=regions, loc=loc, ip=ip)

  @builtins.property
  def src(self) -> _ods_ir.Value[_ods_ir.VectorType]:
    return self.operation.operands[0]

  @builtins.property
  def scale(self) -> _ods_ir.Value[_ods_ir.FloatType]:
    return self.operation.operands[1]

  @builtins.property
  def res(self) -> _ods_ir.OpResult[_ods_ir.VectorType]:
    return self.operation.results[0]

@_ods_cext.register_op_adaptor(CvtScaleF32Pk16Bf6F32Op)
class CvtScaleF32Pk16Bf6F32OpAdaptor(_ods_ir.OpAdaptor):
  OPERATION_NAME = "rocdl.cvt.scalef32.pk16.bf6.f32"

  @builtins.property
  def src(self) -> _ods_ir.Value[_ods_ir.VectorType]:
    return self.operands[0]

  @builtins.property
  def scale(self) -> _ods_ir.Value[_ods_ir.FloatType]:
    return self.operands[1]

def cvt_scalef32_pk16_bf6_f32(res: _ods_ir.Type, src: _ods_ir.Value[_ods_ir.VectorType], scale: _ods_ir.Value[_ods_ir.FloatType], *, loc: _Optional[_ods_ir.Location] = None, ip: _Optional[_ods_ir.InsertionPoint] = None) -> _ods_ir.OpResult[_ods_ir.VectorType]:
  return CvtScaleF32Pk16Bf6F32Op(res=res, src=src, scale=scale, loc=loc, ip=ip).result

@_ods_cext.register_operation(_Dialect)
class CvtScaleF32Pk16Fp6Bf16Op(_ods_ir.OpView):
  r"""
  Convert 8 packed bf16 values to packed fp6, multiplying by the exponent part of `scale`
  before doing so. This op is for gfx1250+ arch.
  """

  OPERATION_NAME = "rocdl.cvt.scalef32.pk16.fp6.bf16"

  _ODS_REGIONS = (0, True)

  def __init__(self, res: _ods_ir.Type, src: _ods_ir.Value[_ods_ir.VectorType], scale: _ods_ir.Value[_ods_ir.FloatType], *, loc: _Optional[_ods_ir.Location] = None, ip: _Optional[_ods_ir.InsertionPoint] = None):
    operands = []
    attributes = {}
    regions = None
    operands.append(src)
    operands.append(scale)
    _ods_context = _ods_get_default_loc_context(loc)
    results = []
    results.append(res)
    _ods_successors = None
    super().__init__(self.OPERATION_NAME, self._ODS_REGIONS, self._ODS_OPERAND_SEGMENTS, self._ODS_RESULT_SEGMENTS, attributes=attributes, results=results, operands=operands, successors=_ods_successors, regions=regions, loc=loc, ip=ip)

  @builtins.property
  def src(self) -> _ods_ir.Value[_ods_ir.VectorType]:
    return self.operation.operands[0]

  @builtins.property
  def scale(self) -> _ods_ir.Value[_ods_ir.FloatType]:
    return self.operation.operands[1]

  @builtins.property
  def res(self) -> _ods_ir.OpResult[_ods_ir.VectorType]:
    return self.operation.results[0]

@_ods_cext.register_op_adaptor(CvtScaleF32Pk16Fp6Bf16Op)
class CvtScaleF32Pk16Fp6Bf16OpAdaptor(_ods_ir.OpAdaptor):
  OPERATION_NAME = "rocdl.cvt.scalef32.pk16.fp6.bf16"

  @builtins.property
  def src(self) -> _ods_ir.Value[_ods_ir.VectorType]:
    return self.operands[0]

  @builtins.property
  def scale(self) -> _ods_ir.Value[_ods_ir.FloatType]:
    return self.operands[1]

def cvt_scalef32_pk16_fp6_bf16(res: _ods_ir.Type, src: _ods_ir.Value[_ods_ir.VectorType], scale: _ods_ir.Value[_ods_ir.FloatType], *, loc: _Optional[_ods_ir.Location] = None, ip: _Optional[_ods_ir.InsertionPoint] = None) -> _ods_ir.OpResult[_ods_ir.VectorType]:
  return CvtScaleF32Pk16Fp6Bf16Op(res=res, src=src, scale=scale, loc=loc, ip=ip).result

@_ods_cext.register_operation(_Dialect)
class CvtScaleF32Pk16Fp6F16Op(_ods_ir.OpView):
  r"""
  Convert 8 packed f16 values to packed fp6, multiplying by the exponent part of `scale`
  before doing so. This op is for gfx1250+ arch.
  """

  OPERATION_NAME = "rocdl.cvt.scalef32.pk16.fp6.f16"

  _ODS_REGIONS = (0, True)

  def __init__(self, res: _ods_ir.Type, src: _ods_ir.Value[_ods_ir.VectorType], scale: _ods_ir.Value[_ods_ir.FloatType], *, loc: _Optional[_ods_ir.Location] = None, ip: _Optional[_ods_ir.InsertionPoint] = None):
    operands = []
    attributes = {}
    regions = None
    operands.append(src)
    operands.append(scale)
    _ods_context = _ods_get_default_loc_context(loc)
    results = []
    results.append(res)
    _ods_successors = None
    super().__init__(self.OPERATION_NAME, self._ODS_REGIONS, self._ODS_OPERAND_SEGMENTS, self._ODS_RESULT_SEGMENTS, attributes=attributes, results=results, operands=operands, successors=_ods_successors, regions=regions, loc=loc, ip=ip)

  @builtins.property
  def src(self) -> _ods_ir.Value[_ods_ir.VectorType]:
    return self.operation.operands[0]

  @builtins.property
  def scale(self) -> _ods_ir.Value[_ods_ir.FloatType]:
    return self.operation.operands[1]

  @builtins.property
  def res(self) -> _ods_ir.OpResult[_ods_ir.VectorType]:
    return self.operation.results[0]

@_ods_cext.register_op_adaptor(CvtScaleF32Pk16Fp6F16Op)
class CvtScaleF32Pk16Fp6F16OpAdaptor(_ods_ir.OpAdaptor):
  OPERATION_NAME = "rocdl.cvt.scalef32.pk16.fp6.f16"

  @builtins.property
  def src(self) -> _ods_ir.Value[_ods_ir.VectorType]:
    return self.operands[0]

  @builtins.property
  def scale(self) -> _ods_ir.Value[_ods_ir.FloatType]:
    return self.operands[1]

def cvt_scalef32_pk16_fp6_f16(res: _ods_ir.Type, src: _ods_ir.Value[_ods_ir.VectorType], scale: _ods_ir.Value[_ods_ir.FloatType], *, loc: _Optional[_ods_ir.Location] = None, ip: _Optional[_ods_ir.InsertionPoint] = None) -> _ods_ir.OpResult[_ods_ir.VectorType]:
  return CvtScaleF32Pk16Fp6F16Op(res=res, src=src, scale=scale, loc=loc, ip=ip).result

@_ods_cext.register_operation(_Dialect)
class CvtScaleF32Pk16Fp6F32Op(_ods_ir.OpView):
  r"""
  Convert 8 packed f32 values to packed fp6, multiplying by the exponent part of `scale`
  before doing so. This op is for gfx1250+ arch.
  """

  OPERATION_NAME = "rocdl.cvt.scalef32.pk16.fp6.f32"

  _ODS_REGIONS = (0, True)

  def __init__(self, res: _ods_ir.Type, src: _ods_ir.Value[_ods_ir.VectorType], scale: _ods_ir.Value[_ods_ir.FloatType], *, loc: _Optional[_ods_ir.Location] = None, ip: _Optional[_ods_ir.InsertionPoint] = None):
    operands = []
    attributes = {}
    regions = None
    operands.append(src)
    operands.append(scale)
    _ods_context = _ods_get_default_loc_context(loc)
    results = []
    results.append(res)
    _ods_successors = None
    super().__init__(self.OPERATION_NAME, self._ODS_REGIONS, self._ODS_OPERAND_SEGMENTS, self._ODS_RESULT_SEGMENTS, attributes=attributes, results=results, operands=operands, successors=_ods_successors, regions=regions, loc=loc, ip=ip)

  @builtins.property
  def src(self) -> _ods_ir.Value[_ods_ir.VectorType]:
    return self.operation.operands[0]

  @builtins.property
  def scale(self) -> _ods_ir.Value[_ods_ir.FloatType]:
    return self.operation.operands[1]

  @builtins.property
  def res(self) -> _ods_ir.OpResult[_ods_ir.VectorType]:
    return self.operation.results[0]

@_ods_cext.register_op_adaptor(CvtScaleF32Pk16Fp6F32Op)
class CvtScaleF32Pk16Fp6F32OpAdaptor(_ods_ir.OpAdaptor):
  OPERATION_NAME = "rocdl.cvt.scalef32.pk16.fp6.f32"

  @builtins.property
  def src(self) -> _ods_ir.Value[_ods_ir.VectorType]:
    return self.operands[0]

  @builtins.property
  def scale(self) -> _ods_ir.Value[_ods_ir.FloatType]:
    return self.operands[1]

def cvt_scalef32_pk16_fp6_f32(res: _ods_ir.Type, src: _ods_ir.Value[_ods_ir.VectorType], scale: _ods_ir.Value[_ods_ir.FloatType], *, loc: _Optional[_ods_ir.Location] = None, ip: _Optional[_ods_ir.InsertionPoint] = None) -> _ods_ir.OpResult[_ods_ir.VectorType]:
  return CvtScaleF32Pk16Fp6F32Op(res=res, src=src, scale=scale, loc=loc, ip=ip).result

@_ods_cext.register_operation(_Dialect)
class CvtScaleF32Pk32Bf6Bf16Op(_ods_ir.OpView):
  r"""
  Convert 32 packed bf16 values to packed bf6, dividing by the exponent part of `scale`
  before doing so.
  """

  OPERATION_NAME = "rocdl.cvt.scalef32.pk32.bf6.bf16"

  _ODS_REGIONS = (0, True)

  def __init__(self, res: _ods_ir.Type, src: _ods_ir.Value[_ods_ir.VectorType], scale: _ods_ir.Value[_ods_ir.FloatType], *, loc: _Optional[_ods_ir.Location] = None, ip: _Optional[_ods_ir.InsertionPoint] = None):
    operands = []
    attributes = {}
    regions = None
    operands.append(src)
    operands.append(scale)
    _ods_context = _ods_get_default_loc_context(loc)
    results = []
    results.append(res)
    _ods_successors = None
    super().__init__(self.OPERATION_NAME, self._ODS_REGIONS, self._ODS_OPERAND_SEGMENTS, self._ODS_RESULT_SEGMENTS, attributes=attributes, results=results, operands=operands, successors=_ods_successors, regions=regions, loc=loc, ip=ip)

  @builtins.property
  def src(self) -> _ods_ir.Value[_ods_ir.VectorType]:
    return self.operation.operands[0]

  @builtins.property
  def scale(self) -> _ods_ir.Value[_ods_ir.FloatType]:
    return self.operation.operands[1]

  @builtins.property
  def res(self) -> _ods_ir.OpResult[_ods_ir.VectorType]:
    return self.operation.results[0]

@_ods_cext.register_op_adaptor(CvtScaleF32Pk32Bf6Bf16Op)
class CvtScaleF32Pk32Bf6Bf16OpAdaptor(_ods_ir.OpAdaptor):
  OPERATION_NAME = "rocdl.cvt.scalef32.pk32.bf6.bf16"

  @builtins.property
  def src(self) -> _ods_ir.Value[_ods_ir.VectorType]:
    return self.operands[0]

  @builtins.property
  def scale(self) -> _ods_ir.Value[_ods_ir.FloatType]:
    return self.operands[1]

def cvt_scalef32_pk32_bf6_bf16(res: _ods_ir.Type, src: _ods_ir.Value[_ods_ir.VectorType], scale: _ods_ir.Value[_ods_ir.FloatType], *, loc: _Optional[_ods_ir.Location] = None, ip: _Optional[_ods_ir.InsertionPoint] = None) -> _ods_ir.OpResult[_ods_ir.VectorType]:
  return CvtScaleF32Pk32Bf6Bf16Op(res=res, src=src, scale=scale, loc=loc, ip=ip).result

@_ods_cext.register_operation(_Dialect)
class CvtScaleF32Pk32Bf6F16Op(_ods_ir.OpView):
  r"""
  Convert 32 packed f16 values to packed bf6, dividing by the exponent part of `scale`
  before doing so.
  """

  OPERATION_NAME = "rocdl.cvt.scalef32.pk32.bf6.f16"

  _ODS_REGIONS = (0, True)

  def __init__(self, res: _ods_ir.Type, src: _ods_ir.Value[_ods_ir.VectorType], scale: _ods_ir.Value[_ods_ir.FloatType], *, loc: _Optional[_ods_ir.Location] = None, ip: _Optional[_ods_ir.InsertionPoint] = None):
    operands = []
    attributes = {}
    regions = None
    operands.append(src)
    operands.append(scale)
    _ods_context = _ods_get_default_loc_context(loc)
    results = []
    results.append(res)
    _ods_successors = None
    super().__init__(self.OPERATION_NAME, self._ODS_REGIONS, self._ODS_OPERAND_SEGMENTS, self._ODS_RESULT_SEGMENTS, attributes=attributes, results=results, operands=operands, successors=_ods_successors, regions=regions, loc=loc, ip=ip)

  @builtins.property
  def src(self) -> _ods_ir.Value[_ods_ir.VectorType]:
    return self.operation.operands[0]

  @builtins.property
  def scale(self) -> _ods_ir.Value[_ods_ir.FloatType]:
    return self.operation.operands[1]

  @builtins.property
  def res(self) -> _ods_ir.OpResult[_ods_ir.VectorType]:
    return self.operation.results[0]

@_ods_cext.register_op_adaptor(CvtScaleF32Pk32Bf6F16Op)
class CvtScaleF32Pk32Bf6F16OpAdaptor(_ods_ir.OpAdaptor):
  OPERATION_NAME = "rocdl.cvt.scalef32.pk32.bf6.f16"

  @builtins.property
  def src(self) -> _ods_ir.Value[_ods_ir.VectorType]:
    return self.operands[0]

  @builtins.property
  def scale(self) -> _ods_ir.Value[_ods_ir.FloatType]:
    return self.operands[1]

def cvt_scalef32_pk32_bf6_f16(res: _ods_ir.Type, src: _ods_ir.Value[_ods_ir.VectorType], scale: _ods_ir.Value[_ods_ir.FloatType], *, loc: _Optional[_ods_ir.Location] = None, ip: _Optional[_ods_ir.InsertionPoint] = None) -> _ods_ir.OpResult[_ods_ir.VectorType]:
  return CvtScaleF32Pk32Bf6F16Op(res=res, src=src, scale=scale, loc=loc, ip=ip).result

@_ods_cext.register_operation(_Dialect)
class CvtScaleF32Pk32Bf16Bf6Op(_ods_ir.OpView):
  r"""
  Convert 32 packed bf6 values to packed bf16, multiplying by the exponent part of `scale`
  before doing so.
  """

  OPERATION_NAME = "rocdl.cvt.scalef32.pk32.bf16.bf6"

  _ODS_REGIONS = (0, True)

  def __init__(self, res: _ods_ir.Type, src: _ods_ir.Value[_ods_ir.VectorType], scale: _ods_ir.Value[_ods_ir.FloatType], *, loc: _Optional[_ods_ir.Location] = None, ip: _Optional[_ods_ir.InsertionPoint] = None):
    operands = []
    attributes = {}
    regions = None
    operands.append(src)
    operands.append(scale)
    _ods_context = _ods_get_default_loc_context(loc)
    results = []
    results.append(res)
    _ods_successors = None
    super().__init__(self.OPERATION_NAME, self._ODS_REGIONS, self._ODS_OPERAND_SEGMENTS, self._ODS_RESULT_SEGMENTS, attributes=attributes, results=results, operands=operands, successors=_ods_successors, regions=regions, loc=loc, ip=ip)

  @builtins.property
  def src(self) -> _ods_ir.Value[_ods_ir.VectorType]:
    return self.operation.operands[0]

  @builtins.property
  def scale(self) -> _ods_ir.Value[_ods_ir.FloatType]:
    return self.operation.operands[1]

  @builtins.property
  def res(self) -> _ods_ir.OpResult[_ods_ir.VectorType]:
    return self.operation.results[0]

@_ods_cext.register_op_adaptor(CvtScaleF32Pk32Bf16Bf6Op)
class CvtScaleF32Pk32Bf16Bf6OpAdaptor(_ods_ir.OpAdaptor):
  OPERATION_NAME = "rocdl.cvt.scalef32.pk32.bf16.bf6"

  @builtins.property
  def src(self) -> _ods_ir.Value[_ods_ir.VectorType]:
    return self.operands[0]

  @builtins.property
  def scale(self) -> _ods_ir.Value[_ods_ir.FloatType]:
    return self.operands[1]

def cvt_scalef32_pk32_bf16_bf6(res: _ods_ir.Type, src: _ods_ir.Value[_ods_ir.VectorType], scale: _ods_ir.Value[_ods_ir.FloatType], *, loc: _Optional[_ods_ir.Location] = None, ip: _Optional[_ods_ir.InsertionPoint] = None) -> _ods_ir.OpResult[_ods_ir.VectorType]:
  return CvtScaleF32Pk32Bf16Bf6Op(res=res, src=src, scale=scale, loc=loc, ip=ip).result

@_ods_cext.register_operation(_Dialect)
class CvtScaleF32Pk32Bf16Fp6Op(_ods_ir.OpView):
  r"""
  Convert 32 packed fp6 values to packed bf16, multiplying by the exponent part of `scale`
  before doing so.
  """

  OPERATION_NAME = "rocdl.cvt.scalef32.pk32.bf16.fp6"

  _ODS_REGIONS = (0, True)

  def __init__(self, res: _ods_ir.Type, src: _ods_ir.Value[_ods_ir.VectorType], scale: _ods_ir.Value[_ods_ir.FloatType], *, loc: _Optional[_ods_ir.Location] = None, ip: _Optional[_ods_ir.InsertionPoint] = None):
    operands = []
    attributes = {}
    regions = None
    operands.append(src)
    operands.append(scale)
    _ods_context = _ods_get_default_loc_context(loc)
    results = []
    results.append(res)
    _ods_successors = None
    super().__init__(self.OPERATION_NAME, self._ODS_REGIONS, self._ODS_OPERAND_SEGMENTS, self._ODS_RESULT_SEGMENTS, attributes=attributes, results=results, operands=operands, successors=_ods_successors, regions=regions, loc=loc, ip=ip)

  @builtins.property
  def src(self) -> _ods_ir.Value[_ods_ir.VectorType]:
    return self.operation.operands[0]

  @builtins.property
  def scale(self) -> _ods_ir.Value[_ods_ir.FloatType]:
    return self.operation.operands[1]

  @builtins.property
  def res(self) -> _ods_ir.OpResult[_ods_ir.VectorType]:
    return self.operation.results[0]

@_ods_cext.register_op_adaptor(CvtScaleF32Pk32Bf16Fp6Op)
class CvtScaleF32Pk32Bf16Fp6OpAdaptor(_ods_ir.OpAdaptor):
  OPERATION_NAME = "rocdl.cvt.scalef32.pk32.bf16.fp6"

  @builtins.property
  def src(self) -> _ods_ir.Value[_ods_ir.VectorType]:
    return self.operands[0]

  @builtins.property
  def scale(self) -> _ods_ir.Value[_ods_ir.FloatType]:
    return self.operands[1]

def cvt_scalef32_pk32_bf16_fp6(res: _ods_ir.Type, src: _ods_ir.Value[_ods_ir.VectorType], scale: _ods_ir.Value[_ods_ir.FloatType], *, loc: _Optional[_ods_ir.Location] = None, ip: _Optional[_ods_ir.InsertionPoint] = None) -> _ods_ir.OpResult[_ods_ir.VectorType]:
  return CvtScaleF32Pk32Bf16Fp6Op(res=res, src=src, scale=scale, loc=loc, ip=ip).result

@_ods_cext.register_operation(_Dialect)
class CvtScaleF32Pk32F16Bf6Op(_ods_ir.OpView):
  r"""
  Convert 32 packed bf6 values to packed f16, multiplying by the exponent part of `scale`
  before doing so.
  """

  OPERATION_NAME = "rocdl.cvt.scalef32.pk32.f16.bf6"

  _ODS_REGIONS = (0, True)

  def __init__(self, res: _ods_ir.Type, src: _ods_ir.Value[_ods_ir.VectorType], scale: _ods_ir.Value[_ods_ir.FloatType], *, loc: _Optional[_ods_ir.Location] = None, ip: _Optional[_ods_ir.InsertionPoint] = None):
    operands = []
    attributes = {}
    regions = None
    operands.append(src)
    operands.append(scale)
    _ods_context = _ods_get_default_loc_context(loc)
    results = []
    results.append(res)
    _ods_successors = None
    super().__init__(self.OPERATION_NAME, self._ODS_REGIONS, self._ODS_OPERAND_SEGMENTS, self._ODS_RESULT_SEGMENTS, attributes=attributes, results=results, operands=operands, successors=_ods_successors, regions=regions, loc=loc, ip=ip)

  @builtins.property
  def src(self) -> _ods_ir.Value[_ods_ir.VectorType]:
    return self.operation.operands[0]

  @builtins.property
  def scale(self) -> _ods_ir.Value[_ods_ir.FloatType]:
    return self.operation.operands[1]

  @builtins.property
  def res(self) -> _ods_ir.OpResult[_ods_ir.VectorType]:
    return self.operation.results[0]

@_ods_cext.register_op_adaptor(CvtScaleF32Pk32F16Bf6Op)
class CvtScaleF32Pk32F16Bf6OpAdaptor(_ods_ir.OpAdaptor):
  OPERATION_NAME = "rocdl.cvt.scalef32.pk32.f16.bf6"

  @builtins.property
  def src(self) -> _ods_ir.Value[_ods_ir.VectorType]:
    return self.operands[0]

  @builtins.property
  def scale(self) -> _ods_ir.Value[_ods_ir.FloatType]:
    return self.operands[1]

def cvt_scalef32_pk32_f16_bf6(res: _ods_ir.Type, src: _ods_ir.Value[_ods_ir.VectorType], scale: _ods_ir.Value[_ods_ir.FloatType], *, loc: _Optional[_ods_ir.Location] = None, ip: _Optional[_ods_ir.InsertionPoint] = None) -> _ods_ir.OpResult[_ods_ir.VectorType]:
  return CvtScaleF32Pk32F16Bf6Op(res=res, src=src, scale=scale, loc=loc, ip=ip).result

@_ods_cext.register_operation(_Dialect)
class CvtScaleF32Pk32F16Fp6Op(_ods_ir.OpView):
  r"""
  Convert 32 packed fp6 values to packed f16, multiplying by the exponent part of `scale`
  before doing so.
  """

  OPERATION_NAME = "rocdl.cvt.scalef32.pk32.f16.fp6"

  _ODS_REGIONS = (0, True)

  def __init__(self, res: _ods_ir.Type, src: _ods_ir.Value[_ods_ir.VectorType], scale: _ods_ir.Value[_ods_ir.FloatType], *, loc: _Optional[_ods_ir.Location] = None, ip: _Optional[_ods_ir.InsertionPoint] = None):
    operands = []
    attributes = {}
    regions = None
    operands.append(src)
    operands.append(scale)
    _ods_context = _ods_get_default_loc_context(loc)
    results = []
    results.append(res)
    _ods_successors = None
    super().__init__(self.OPERATION_NAME, self._ODS_REGIONS, self._ODS_OPERAND_SEGMENTS, self._ODS_RESULT_SEGMENTS, attributes=attributes, results=results, operands=operands, successors=_ods_successors, regions=regions, loc=loc, ip=ip)

  @builtins.property
  def src(self) -> _ods_ir.Value[_ods_ir.VectorType]:
    return self.operation.operands[0]

  @builtins.property
  def scale(self) -> _ods_ir.Value[_ods_ir.FloatType]:
    return self.operation.operands[1]

  @builtins.property
  def res(self) -> _ods_ir.OpResult[_ods_ir.VectorType]:
    return self.operation.results[0]

@_ods_cext.register_op_adaptor(CvtScaleF32Pk32F16Fp6Op)
class CvtScaleF32Pk32F16Fp6OpAdaptor(_ods_ir.OpAdaptor):
  OPERATION_NAME = "rocdl.cvt.scalef32.pk32.f16.fp6"

  @builtins.property
  def src(self) -> _ods_ir.Value[_ods_ir.VectorType]:
    return self.operands[0]

  @builtins.property
  def scale(self) -> _ods_ir.Value[_ods_ir.FloatType]:
    return self.operands[1]

def cvt_scalef32_pk32_f16_fp6(res: _ods_ir.Type, src: _ods_ir.Value[_ods_ir.VectorType], scale: _ods_ir.Value[_ods_ir.FloatType], *, loc: _Optional[_ods_ir.Location] = None, ip: _Optional[_ods_ir.InsertionPoint] = None) -> _ods_ir.OpResult[_ods_ir.VectorType]:
  return CvtScaleF32Pk32F16Fp6Op(res=res, src=src, scale=scale, loc=loc, ip=ip).result

@_ods_cext.register_operation(_Dialect)
class CvtScaleF32Pk32F32Bf6Op(_ods_ir.OpView):
  r"""
  Convert 32 packed bf6 values to packed f32, multiplying by the exponent part of `scale`
  before doing so.
  """

  OPERATION_NAME = "rocdl.cvt.scalef32.pk32.f32.bf6"

  _ODS_REGIONS = (0, True)

  def __init__(self, res: _ods_ir.Type, src: _ods_ir.Value[_ods_ir.VectorType], scale: _ods_ir.Value[_ods_ir.FloatType], *, loc: _Optional[_ods_ir.Location] = None, ip: _Optional[_ods_ir.InsertionPoint] = None):
    operands = []
    attributes = {}
    regions = None
    operands.append(src)
    operands.append(scale)
    _ods_context = _ods_get_default_loc_context(loc)
    results = []
    results.append(res)
    _ods_successors = None
    super().__init__(self.OPERATION_NAME, self._ODS_REGIONS, self._ODS_OPERAND_SEGMENTS, self._ODS_RESULT_SEGMENTS, attributes=attributes, results=results, operands=operands, successors=_ods_successors, regions=regions, loc=loc, ip=ip)

  @builtins.property
  def src(self) -> _ods_ir.Value[_ods_ir.VectorType]:
    return self.operation.operands[0]

  @builtins.property
  def scale(self) -> _ods_ir.Value[_ods_ir.FloatType]:
    return self.operation.operands[1]

  @builtins.property
  def res(self) -> _ods_ir.OpResult[_ods_ir.VectorType]:
    return self.operation.results[0]

@_ods_cext.register_op_adaptor(CvtScaleF32Pk32F32Bf6Op)
class CvtScaleF32Pk32F32Bf6OpAdaptor(_ods_ir.OpAdaptor):
  OPERATION_NAME = "rocdl.cvt.scalef32.pk32.f32.bf6"

  @builtins.property
  def src(self) -> _ods_ir.Value[_ods_ir.VectorType]:
    return self.operands[0]

  @builtins.property
  def scale(self) -> _ods_ir.Value[_ods_ir.FloatType]:
    return self.operands[1]

def cvt_scalef32_pk32_f32_bf6(res: _ods_ir.Type, src: _ods_ir.Value[_ods_ir.VectorType], scale: _ods_ir.Value[_ods_ir.FloatType], *, loc: _Optional[_ods_ir.Location] = None, ip: _Optional[_ods_ir.InsertionPoint] = None) -> _ods_ir.OpResult[_ods_ir.VectorType]:
  return CvtScaleF32Pk32F32Bf6Op(res=res, src=src, scale=scale, loc=loc, ip=ip).result

@_ods_cext.register_operation(_Dialect)
class CvtScaleF32Pk32F32Fp6Op(_ods_ir.OpView):
  r"""
  Convert 32 packed fp6 values to packed f32, multiplying by the exponent part of `scale`
  before doing so.
  """

  OPERATION_NAME = "rocdl.cvt.scalef32.pk32.f32.fp6"

  _ODS_REGIONS = (0, True)

  def __init__(self, res: _ods_ir.Type, src: _ods_ir.Value[_ods_ir.VectorType], scale: _ods_ir.Value[_ods_ir.FloatType], *, loc: _Optional[_ods_ir.Location] = None, ip: _Optional[_ods_ir.InsertionPoint] = None):
    operands = []
    attributes = {}
    regions = None
    operands.append(src)
    operands.append(scale)
    _ods_context = _ods_get_default_loc_context(loc)
    results = []
    results.append(res)
    _ods_successors = None
    super().__init__(self.OPERATION_NAME, self._ODS_REGIONS, self._ODS_OPERAND_SEGMENTS, self._ODS_RESULT_SEGMENTS, attributes=attributes, results=results, operands=operands, successors=_ods_successors, regions=regions, loc=loc, ip=ip)

  @builtins.property
  def src(self) -> _ods_ir.Value[_ods_ir.VectorType]:
    return self.operation.operands[0]

  @builtins.property
  def scale(self) -> _ods_ir.Value[_ods_ir.FloatType]:
    return self.operation.operands[1]

  @builtins.property
  def res(self) -> _ods_ir.OpResult[_ods_ir.VectorType]:
    return self.operation.results[0]

@_ods_cext.register_op_adaptor(CvtScaleF32Pk32F32Fp6Op)
class CvtScaleF32Pk32F32Fp6OpAdaptor(_ods_ir.OpAdaptor):
  OPERATION_NAME = "rocdl.cvt.scalef32.pk32.f32.fp6"

  @builtins.property
  def src(self) -> _ods_ir.Value[_ods_ir.VectorType]:
    return self.operands[0]

  @builtins.property
  def scale(self) -> _ods_ir.Value[_ods_ir.FloatType]:
    return self.operands[1]

def cvt_scalef32_pk32_f32_fp6(res: _ods_ir.Type, src: _ods_ir.Value[_ods_ir.VectorType], scale: _ods_ir.Value[_ods_ir.FloatType], *, loc: _Optional[_ods_ir.Location] = None, ip: _Optional[_ods_ir.InsertionPoint] = None) -> _ods_ir.OpResult[_ods_ir.VectorType]:
  return CvtScaleF32Pk32F32Fp6Op(res=res, src=src, scale=scale, loc=loc, ip=ip).result

@_ods_cext.register_operation(_Dialect)
class CvtScaleF32Pk32Fp6Bf16Op(_ods_ir.OpView):
  r"""
  Convert 32 packed bf16 values to packed fp6, dividing by the exponent part of `scale`
  before doing so.
  """

  OPERATION_NAME = "rocdl.cvt.scalef32.pk32.fp6.bf16"

  _ODS_REGIONS = (0, True)

  def __init__(self, res: _ods_ir.Type, src: _ods_ir.Value[_ods_ir.VectorType], scale: _ods_ir.Value[_ods_ir.FloatType], *, loc: _Optional[_ods_ir.Location] = None, ip: _Optional[_ods_ir.InsertionPoint] = None):
    operands = []
    attributes = {}
    regions = None
    operands.append(src)
    operands.append(scale)
    _ods_context = _ods_get_default_loc_context(loc)
    results = []
    results.append(res)
    _ods_successors = None
    super().__init__(self.OPERATION_NAME, self._ODS_REGIONS, self._ODS_OPERAND_SEGMENTS, self._ODS_RESULT_SEGMENTS, attributes=attributes, results=results, operands=operands, successors=_ods_successors, regions=regions, loc=loc, ip=ip)

  @builtins.property
  def src(self) -> _ods_ir.Value[_ods_ir.VectorType]:
    return self.operation.operands[0]

  @builtins.property
  def scale(self) -> _ods_ir.Value[_ods_ir.FloatType]:
    return self.operation.operands[1]

  @builtins.property
  def res(self) -> _ods_ir.OpResult[_ods_ir.VectorType]:
    return self.operation.results[0]

@_ods_cext.register_op_adaptor(CvtScaleF32Pk32Fp6Bf16Op)
class CvtScaleF32Pk32Fp6Bf16OpAdaptor(_ods_ir.OpAdaptor):
  OPERATION_NAME = "rocdl.cvt.scalef32.pk32.fp6.bf16"

  @builtins.property
  def src(self) -> _ods_ir.Value[_ods_ir.VectorType]:
    return self.operands[0]

  @builtins.property
  def scale(self) -> _ods_ir.Value[_ods_ir.FloatType]:
    return self.operands[1]

def cvt_scalef32_pk32_fp6_bf16(res: _ods_ir.Type, src: _ods_ir.Value[_ods_ir.VectorType], scale: _ods_ir.Value[_ods_ir.FloatType], *, loc: _Optional[_ods_ir.Location] = None, ip: _Optional[_ods_ir.InsertionPoint] = None) -> _ods_ir.OpResult[_ods_ir.VectorType]:
  return CvtScaleF32Pk32Fp6Bf16Op(res=res, src=src, scale=scale, loc=loc, ip=ip).result

@_ods_cext.register_operation(_Dialect)
class CvtScaleF32Pk32Fp6F16Op(_ods_ir.OpView):
  r"""
  Convert 32 packed f16 values to packed fp6, dividing by the exponent part of `scale`
  before doing so.
  """

  OPERATION_NAME = "rocdl.cvt.scalef32.pk32.fp6.f16"

  _ODS_REGIONS = (0, True)

  def __init__(self, res: _ods_ir.Type, src: _ods_ir.Value[_ods_ir.VectorType], scale: _ods_ir.Value[_ods_ir.FloatType], *, loc: _Optional[_ods_ir.Location] = None, ip: _Optional[_ods_ir.InsertionPoint] = None):
    operands = []
    attributes = {}
    regions = None
    operands.append(src)
    operands.append(scale)
    _ods_context = _ods_get_default_loc_context(loc)
    results = []
    results.append(res)
    _ods_successors = None
    super().__init__(self.OPERATION_NAME, self._ODS_REGIONS, self._ODS_OPERAND_SEGMENTS, self._ODS_RESULT_SEGMENTS, attributes=attributes, results=results, operands=operands, successors=_ods_successors, regions=regions, loc=loc, ip=ip)

  @builtins.property
  def src(self) -> _ods_ir.Value[_ods_ir.VectorType]:
    return self.operation.operands[0]

  @builtins.property
  def scale(self) -> _ods_ir.Value[_ods_ir.FloatType]:
    return self.operation.operands[1]

  @builtins.property
  def res(self) -> _ods_ir.OpResult[_ods_ir.VectorType]:
    return self.operation.results[0]

@_ods_cext.register_op_adaptor(CvtScaleF32Pk32Fp6F16Op)
class CvtScaleF32Pk32Fp6F16OpAdaptor(_ods_ir.OpAdaptor):
  OPERATION_NAME = "rocdl.cvt.scalef32.pk32.fp6.f16"

  @builtins.property
  def src(self) -> _ods_ir.Value[_ods_ir.VectorType]:
    return self.operands[0]

  @builtins.property
  def scale(self) -> _ods_ir.Value[_ods_ir.FloatType]:
    return self.operands[1]

def cvt_scalef32_pk32_fp6_f16(res: _ods_ir.Type, src: _ods_ir.Value[_ods_ir.VectorType], scale: _ods_ir.Value[_ods_ir.FloatType], *, loc: _Optional[_ods_ir.Location] = None, ip: _Optional[_ods_ir.InsertionPoint] = None) -> _ods_ir.OpResult[_ods_ir.VectorType]:
  return CvtScaleF32Pk32Fp6F16Op(res=res, src=src, scale=scale, loc=loc, ip=ip).result

@_ods_cext.register_operation(_Dialect)
class CvtScaleF32PkBf8Bf16Op(_ods_ir.OpView):
  r"""
  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.
  """

  OPERATION_NAME = "rocdl.cvt.scalef32.pk.bf8.bf16"

  _ODS_REGIONS = (0, True)

  def __init__(self, res: _ods_ir.Type, oldVdst: _ods_ir.Value[_ods_ir.VectorType], src0: _ods_ir.Value[_ods_ir.VectorType], scale: _ods_ir.Value[_ods_ir.FloatType], dstLoHiSel: _Union[bool, _ods_ir.BoolAttr], *, loc: _Optional[_ods_ir.Location] = None, ip: _Optional[_ods_ir.InsertionPoint] = None):
    operands = []
    attributes = {}
    regions = None
    operands.append(oldVdst)
    operands.append(src0)
    operands.append(scale)
    _ods_context = _ods_get_default_loc_context(loc)
    attributes["dstLoHiSel"] = (dstLoHiSel if (
    isinstance(dstLoHiSel, _ods_ir.Attribute) or
    not _ods_ir.AttrBuilder.contains('I1Attr')) else
      _ods_ir.AttrBuilder.get('I1Attr')(dstLoHiSel, context=_ods_context))
    results = []
    results.append(res)
    _ods_successors = None
    super().__init__(self.OPERATION_NAME, self._ODS_REGIONS, self._ODS_OPERAND_SEGMENTS, self._ODS_RESULT_SEGMENTS, attributes=attributes, results=results, operands=operands, successors=_ods_successors, regions=regions, loc=loc, ip=ip)

  @builtins.property
  def oldVdst(self) -> _ods_ir.Value[_ods_ir.VectorType]:
    return self.operation.operands[0]

  @builtins.property
  def src0(self) -> _ods_ir.Value[_ods_ir.VectorType]:
    return self.operation.operands[1]

  @builtins.property
  def scale(self) -> _ods_ir.Value[_ods_ir.FloatType]:
    return self.operation.operands[2]

  @builtins.property
  def dstLoHiSel(self) -> _ods_ir.BoolAttr:
    return self.operation.attributes["dstLoHiSel"]

  @dstLoHiSel.setter
  def dstLoHiSel(self, value: _ods_ir.BoolAttr):
    if value is None:
      raise ValueError("'None' not allowed as value for mandatory attributes")
    self.operation.attributes["dstLoHiSel"] = value

  @builtins.property
  def res(self) -> _ods_ir.OpResult[_ods_ir.VectorType]:
    return self.operation.results[0]

@_ods_cext.register_op_adaptor(CvtScaleF32PkBf8Bf16Op)
class CvtScaleF32PkBf8Bf16OpAdaptor(_ods_ir.OpAdaptor):
  OPERATION_NAME = "rocdl.cvt.scalef32.pk.bf8.bf16"

  @builtins.property
  def oldVdst(self) -> _ods_ir.Value[_ods_ir.VectorType]:
    return self.operands[0]

  @builtins.property
  def src0(self) -> _ods_ir.Value[_ods_ir.VectorType]:
    return self.operands[1]

  @builtins.property
  def scale(self) -> _ods_ir.Value[_ods_ir.FloatType]:
    return self.operands[2]

  @builtins.property
  def dstLoHiSel(self) -> _ods_ir.BoolAttr:
    return self.attributes["dstLoHiSel"]

def cvt_scalef32_pk_bf8_bf16(res: _ods_ir.Type, old_vdst: _ods_ir.Value[_ods_ir.VectorType], src0: _ods_ir.Value[_ods_ir.VectorType], scale: _ods_ir.Value[_ods_ir.FloatType], dst_lo_hi_sel: _Union[bool, _ods_ir.BoolAttr], *, loc: _Optional[_ods_ir.Location] = None, ip: _Optional[_ods_ir.InsertionPoint] = None) -> _ods_ir.OpResult[_ods_ir.VectorType]:
  return CvtScaleF32PkBf8Bf16Op(res=res, oldVdst=old_vdst, src0=src0, scale=scale, dstLoHiSel=dst_lo_hi_sel, loc=loc, ip=ip).result

@_ods_cext.register_operation(_Dialect)
class CvtScaleF32PkBf8F16Op(_ods_ir.OpView):
  r"""
  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.
  """

  OPERATION_NAME = "rocdl.cvt.scalef32.pk.bf8.f16"

  _ODS_REGIONS = (0, True)

  def __init__(self, res: _ods_ir.Type, oldVdst: _ods_ir.Value[_ods_ir.VectorType], src0: _ods_ir.Value[_ods_ir.VectorType], scale: _ods_ir.Value[_ods_ir.FloatType], dstLoHiSel: _Union[bool, _ods_ir.BoolAttr], *, loc: _Optional[_ods_ir.Location] = None, ip: _Optional[_ods_ir.InsertionPoint] = None):
    operands = []
    attributes = {}
    regions = None
    operands.append(oldVdst)
    operands.append(src0)
    operands.append(scale)
    _ods_context = _ods_get_default_loc_context(loc)
    attributes["dstLoHiSel"] = (dstLoHiSel if (
    isinstance(dstLoHiSel, _ods_ir.Attribute) or
    not _ods_ir.AttrBuilder.contains('I1Attr')) else
      _ods_ir.AttrBuilder.get('I1Attr')(dstLoHiSel, context=_ods_context))
    results = []
    results.append(res)
    _ods_successors = None
    super().__init__(self.OPERATION_NAME, self._ODS_REGIONS, self._ODS_OPERAND_SEGMENTS, self._ODS_RESULT_SEGMENTS, attributes=attributes, results=results, operands=operands, successors=_ods_successors, regions=regions, loc=loc, ip=ip)

  @builtins.property
  def oldVdst(self) -> _ods_ir.Value[_ods_ir.VectorType]:
    return self.operation.operands[0]

  @builtins.property
  def src0(self) -> _ods_ir.Value[_ods_ir.VectorType]:
    return self.operation.operands[1]

  @builtins.property
  def scale(self) -> _ods_ir.Value[_ods_ir.FloatType]:
    return self.operation.operands[2]

  @builtins.property
  def dstLoHiSel(self) -> _ods_ir.BoolAttr:
    return self.operation.attributes["dstLoHiSel"]

  @dstLoHiSel.setter
  def dstLoHiSel(self, value: _ods_ir.BoolAttr):
    if value is None:
      raise ValueError("'None' not allowed as value for mandatory attributes")
    self.operation.attributes["dstLoHiSel"] = value

  @builtins.property
  def res(self) -> _ods_ir.OpResult[_ods_ir.VectorType]:
    return self.operation.results[0]

@_ods_cext.register_op_adaptor(CvtScaleF32PkBf8F16Op)
class CvtScaleF32PkBf8F16OpAdaptor(_ods_ir.OpAdaptor):
  OPERATION_NAME = "rocdl.cvt.scalef32.pk.bf8.f16"

  @builtins.property
  def oldVdst(self) -> _ods_ir.Value[_ods_ir.VectorType]:
    return self.operands[0]

  @builtins.property
  def src0(self) -> _ods_ir.Value[_ods_ir.VectorType]:
    return self.operands[1]

  @builtins.property
  def scale(self) -> _ods_ir.Value[_ods_ir.FloatType]:
    return self.operands[2]

  @builtins.property
  def dstLoHiSel(self) -> _ods_ir.BoolAttr:
    return self.attributes["dstLoHiSel"]

def cvt_scalef32_pk_bf8_f16(res: _ods_ir.Type, old_vdst: _ods_ir.Value[_ods_ir.VectorType], src0: _ods_ir.Value[_ods_ir.VectorType], scale: _ods_ir.Value[_ods_ir.FloatType], dst_lo_hi_sel: _Union[bool, _ods_ir.BoolAttr], *, loc: _Optional[_ods_ir.Location] = None, ip: _Optional[_ods_ir.InsertionPoint] = None) -> _ods_ir.OpResult[_ods_ir.VectorType]:
  return CvtScaleF32PkBf8F16Op(res=res, oldVdst=old_vdst, src0=src0, scale=scale, dstLoHiSel=dst_lo_hi_sel, loc=loc, ip=ip).result

@_ods_cext.register_operation(_Dialect)
class CvtScaleF32PkBf8F32Op(_ods_ir.OpView):
  r"""
  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.
  """

  OPERATION_NAME = "rocdl.cvt.scalef32.pk.bf8.f32"

  _ODS_REGIONS = (0, True)

  def __init__(self, res: _ods_ir.Type, oldVdst: _ods_ir.Value[_ods_ir.VectorType], src0: _ods_ir.Value[_ods_ir.FloatType], src1: _ods_ir.Value[_ods_ir.FloatType], scale: _ods_ir.Value[_ods_ir.FloatType], dstLoHiSel: _Union[bool, _ods_ir.BoolAttr], *, loc: _Optional[_ods_ir.Location] = None, ip: _Optional[_ods_ir.InsertionPoint] = None):
    operands = []
    attributes = {}
    regions = None
    operands.append(oldVdst)
    operands.append(src0)
    operands.append(src1)
    operands.append(scale)
    _ods_context = _ods_get_default_loc_context(loc)
    attributes["dstLoHiSel"] = (dstLoHiSel if (
    isinstance(dstLoHiSel, _ods_ir.Attribute) or
    not _ods_ir.AttrBuilder.contains('I1Attr')) else
      _ods_ir.AttrBuilder.get('I1Attr')(dstLoHiSel, context=_ods_context))
    results = []
    results.append(res)
    _ods_successors = None
    super().__init__(self.OPERATION_NAME, self._ODS_REGIONS, self._ODS_OPERAND_SEGMENTS, self._ODS_RESULT_SEGMENTS, attributes=attributes, results=results, operands=operands, successors=_ods_successors, regions=regions, loc=loc, ip=ip)

  @builtins.property
  def oldVdst(self) -> _ods_ir.Value[_ods_ir.VectorType]:
    return self.operation.operands[0]

  @builtins.property
  def src0(self) -> _ods_ir.Value[_ods_ir.FloatType]:
    return self.operation.operands[1]

  @builtins.property
  def src1(self) -> _ods_ir.Value[_ods_ir.FloatType]:
    return self.operation.operands[2]

  @builtins.property
  def scale(self) -> _ods_ir.Value[_ods_ir.FloatType]:
    return self.operation.operands[3]

  @builtins.property
  def dstLoHiSel(self) -> _ods_ir.BoolAttr:
    return self.operation.attributes["dstLoHiSel"]

  @dstLoHiSel.setter
  def dstLoHiSel(self, value: _ods_ir.BoolAttr):
    if value is None:
      raise ValueError("'None' not allowed as value for mandatory attributes")
    self.operation.attributes["dstLoHiSel"] = value

  @builtins.property
  def res(self) -> _ods_ir.OpResult[_ods_ir.VectorType]:
    return self.operation.results[0]

@_ods_cext.register_op_adaptor(CvtScaleF32PkBf8F32Op)
class CvtScaleF32PkBf8F32OpAdaptor(_ods_ir.OpAdaptor):
  OPERATION_NAME = "rocdl.cvt.scalef32.pk.bf8.f32"

  @builtins.property
  def oldVdst(self) -> _ods_ir.Value[_ods_ir.VectorType]:
    return self.operands[0]

  @builtins.property
  def src0(self) -> _ods_ir.Value[_ods_ir.FloatType]:
    return self.operands[1]

  @builtins.property
  def src1(self) -> _ods_ir.Value[_ods_ir.FloatType]:
    return self.operands[2]

  @builtins.property
  def scale(self) -> _ods_ir.Value[_ods_ir.FloatType]:
    return self.operands[3]

  @builtins.property
  def dstLoHiSel(self) -> _ods_ir.BoolAttr:
    return self.attributes["dstLoHiSel"]

def cvt_scalef32_pk_bf8_f32(res: _ods_ir.Type, old_vdst: _ods_ir.Value[_ods_ir.VectorType], src0: _ods_ir.Value[_ods_ir.FloatType], src1: _ods_ir.Value[_ods_ir.FloatType], scale: _ods_ir.Value[_ods_ir.FloatType], dst_lo_hi_sel: _Union[bool, _ods_ir.BoolAttr], *, loc: _Optional[_ods_ir.Location] = None, ip: _Optional[_ods_ir.InsertionPoint] = None) -> _ods_ir.OpResult[_ods_ir.VectorType]:
  return CvtScaleF32PkBf8F32Op(res=res, oldVdst=old_vdst, src0=src0, src1=src1, scale=scale, dstLoHiSel=dst_lo_hi_sel, loc=loc, ip=ip).result

@_ods_cext.register_operation(_Dialect)
class CvtScaleF32PkBf16Bf8Op(_ods_ir.OpView):
  r"""
  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`.
  """

  OPERATION_NAME = "rocdl.cvt.scalef32.pk.bf16.bf8"

  _ODS_REGIONS = (0, True)

  def __init__(self, res: _ods_ir.Type, src: _ods_ir.Value[_ods_ir.IntegerType], scale: _ods_ir.Value[_ods_ir.FloatType], srcLoHiSel: _Union[bool, _ods_ir.BoolAttr], *, loc: _Optional[_ods_ir.Location] = None, ip: _Optional[_ods_ir.InsertionPoint] = None):
    operands = []
    attributes = {}
    regions = None
    operands.append(src)
    operands.append(scale)
    _ods_context = _ods_get_default_loc_context(loc)
    attributes["srcLoHiSel"] = (srcLoHiSel if (
    isinstance(srcLoHiSel, _ods_ir.Attribute) or
    not _ods_ir.AttrBuilder.contains('I1Attr')) else
      _ods_ir.AttrBuilder.get('I1Attr')(srcLoHiSel, context=_ods_context))
    results = []
    results.append(res)
    _ods_successors = None
    super().__init__(self.OPERATION_NAME, self._ODS_REGIONS, self._ODS_OPERAND_SEGMENTS, self._ODS_RESULT_SEGMENTS, attributes=attributes, results=results, operands=operands, successors=_ods_successors, regions=regions, loc=loc, ip=ip)

  @builtins.property
  def src(self) -> _ods_ir.Value[_ods_ir.IntegerType]:
    return self.operation.operands[0]

  @builtins.property
  def scale(self) -> _ods_ir.Value[_ods_ir.FloatType]:
    return self.operation.operands[1]

  @builtins.property
  def srcLoHiSel(self) -> _ods_ir.BoolAttr:
    return self.operation.attributes["srcLoHiSel"]

  @srcLoHiSel.setter
  def srcLoHiSel(self, value: _ods_ir.BoolAttr):
    if value is None:
      raise ValueError("'None' not allowed as value for mandatory attributes")
    self.operation.attributes["srcLoHiSel"] = value

  @builtins.property
  def res(self) -> _ods_ir.OpResult[_ods_ir.VectorType]:
    return self.operation.results[0]

@_ods_cext.register_op_adaptor(CvtScaleF32PkBf16Bf8Op)
class CvtScaleF32PkBf16Bf8OpAdaptor(_ods_ir.OpAdaptor):
  OPERATION_NAME = "rocdl.cvt.scalef32.pk.bf16.bf8"

  @builtins.property
  def src(self) -> _ods_ir.Value[_ods_ir.IntegerType]:
    return self.operands[0]

  @builtins.property
  def scale(self) -> _ods_ir.Value[_ods_ir.FloatType]:
    return self.operands[1]

  @builtins.property
  def srcLoHiSel(self) -> _ods_ir.BoolAttr:
    return self.attributes["srcLoHiSel"]

def cvt_scalef32_pk_bf16_bf8(res: _ods_ir.Type, src: _ods_ir.Value[_ods_ir.IntegerType], scale: _ods_ir.Value[_ods_ir.FloatType], src_lo_hi_sel: _Union[bool, _ods_ir.BoolAttr], *, loc: _Optional[_ods_ir.Location] = None, ip: _Optional[_ods_ir.InsertionPoint] = None) -> _ods_ir.OpResult[_ods_ir.VectorType]:
  return CvtScaleF32PkBf16Bf8Op(res=res, src=src, scale=scale, srcLoHiSel=src_lo_hi_sel, loc=loc, ip=ip).result

@_ods_cext.register_operation(_Dialect)
class CvtScaleF32PkBf16Fp4Op(_ods_ir.OpView):
  r"""
  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`.
  """

  OPERATION_NAME = "rocdl.cvt.scalef32.pk.bf16.fp4"

  _ODS_REGIONS = (0, True)

  def __init__(self, res: _ods_ir.Type, src: _ods_ir.Value[_ods_ir.IntegerType], scale: _ods_ir.Value[_ods_ir.FloatType], srcSelIndex: _Union[int, _ods_ir.IntegerAttr], *, loc: _Optional[_ods_ir.Location] = None, ip: _Optional[_ods_ir.InsertionPoint] = None):
    operands = []
    attributes = {}
    regions = None
    operands.append(src)
    operands.append(scale)
    _ods_context = _ods_get_default_loc_context(loc)
    attributes["srcSelIndex"] = (srcSelIndex if (
    isinstance(srcSelIndex, _ods_ir.Attribute) or
    not _ods_ir.AttrBuilder.contains('I32Attr')) else
      _ods_ir.AttrBuilder.get('I32Attr')(srcSelIndex, context=_ods_context))
    results = []
    results.append(res)
    _ods_successors = None
    super().__init__(self.OPERATION_NAME, self._ODS_REGIONS, self._ODS_OPERAND_SEGMENTS, self._ODS_RESULT_SEGMENTS, attributes=attributes, results=results, operands=operands, successors=_ods_successors, regions=regions, loc=loc, ip=ip)

  @builtins.property
  def src(self) -> _ods_ir.Value[_ods_ir.IntegerType]:
    return self.operation.operands[0]

  @builtins.property
  def scale(self) -> _ods_ir.Value[_ods_ir.FloatType]:
    return self.operation.operands[1]

  @builtins.property
  def srcSelIndex(self) -> _ods_ir.IntegerAttr:
    return self.operation.attributes["srcSelIndex"]

  @srcSelIndex.setter
  def srcSelIndex(self, value: _ods_ir.IntegerAttr):
    if value is None:
      raise ValueError("'None' not allowed as value for mandatory attributes")
    self.operation.attributes["srcSelIndex"] = value

  @builtins.property
  def res(self) -> _ods_ir.OpResult[_ods_ir.VectorType]:
    return self.operation.results[0]

@_ods_cext.register_op_adaptor(CvtScaleF32PkBf16Fp4Op)
class CvtScaleF32PkBf16Fp4OpAdaptor(_ods_ir.OpAdaptor):
  OPERATION_NAME = "rocdl.cvt.scalef32.pk.bf16.fp4"

  @builtins.property
  def src(self) -> _ods_ir.Value[_ods_ir.IntegerType]:
    return self.operands[0]

  @builtins.property
  def scale(self) -> _ods_ir.Value[_ods_ir.FloatType]:
    return self.operands[1]

  @builtins.property
  def srcSelIndex(self) -> _ods_ir.IntegerAttr:
    return self.attributes["srcSelIndex"]

def cvt_scalef32_pk_bf16_fp4(res: _ods_ir.Type, src: _ods_ir.Value[_ods_ir.IntegerType], scale: _ods_ir.Value[_ods_ir.FloatType], src_sel_index: _Union[int, _ods_ir.IntegerAttr], *, loc: _Optional[_ods_ir.Location] = None, ip: _Optional[_ods_ir.InsertionPoint] = None) -> _ods_ir.OpResult[_ods_ir.VectorType]:
  return CvtScaleF32PkBf16Fp4Op(res=res, src=src, scale=scale, srcSelIndex=src_sel_index, loc=loc, ip=ip).result

@_ods_cext.register_operation(_Dialect)
class CvtScaleF32PkBf16Fp8Op(_ods_ir.OpView):
  r"""
  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`.
  """

  OPERATION_NAME = "rocdl.cvt.scalef32.pk.bf16.fp8"

  _ODS_REGIONS = (0, True)

  def __init__(self, res: _ods_ir.Type, src: _ods_ir.Value[_ods_ir.IntegerType], scale: _ods_ir.Value[_ods_ir.FloatType], srcLoHiSel: _Union[bool, _ods_ir.BoolAttr], *, loc: _Optional[_ods_ir.Location] = None, ip: _Optional[_ods_ir.InsertionPoint] = None):
    operands = []
    attributes = {}
    regions = None
    operands.append(src)
    operands.append(scale)
    _ods_context = _ods_get_default_loc_context(loc)
    attributes["srcLoHiSel"] = (srcLoHiSel if (
    isinstance(srcLoHiSel, _ods_ir.Attribute) or
    not _ods_ir.AttrBuilder.contains('I1Attr')) else
      _ods_ir.AttrBuilder.get('I1Attr')(srcLoHiSel, context=_ods_context))
    results = []
    results.append(res)
    _ods_successors = None
    super().__init__(self.OPERATION_NAME, self._ODS_REGIONS, self._ODS_OPERAND_SEGMENTS, self._ODS_RESULT_SEGMENTS, attributes=attributes, results=results, operands=operands, successors=_ods_successors, regions=regions, loc=loc, ip=ip)

  @builtins.property
  def src(self) -> _ods_ir.Value[_ods_ir.IntegerType]:
    return self.operation.operands[0]

  @builtins.property
  def scale(self) -> _ods_ir.Value[_ods_ir.FloatType]:
    return self.operation.operands[1]

  @builtins.property
  def srcLoHiSel(self) -> _ods_ir.BoolAttr:
    return self.operation.attributes["srcLoHiSel"]

  @srcLoHiSel.setter
  def srcLoHiSel(self, value: _ods_ir.BoolAttr):
    if value is None:
      raise ValueError("'None' not allowed as value for mandatory attributes")
    self.operation.attributes["srcLoHiSel"] = value

  @builtins.property
  def res(self) -> _ods_ir.OpResult[_ods_ir.VectorType]:
    return self.operation.results[0]

@_ods_cext.register_op_adaptor(CvtScaleF32PkBf16Fp8Op)
class CvtScaleF32PkBf16Fp8OpAdaptor(_ods_ir.OpAdaptor):
  OPERATION_NAME = "rocdl.cvt.scalef32.pk.bf16.fp8"

  @builtins.property
  def src(self) -> _ods_ir.Value[_ods_ir.IntegerType]:
    return self.operands[0]

  @builtins.property
  def scale(self) -> _ods_ir.Value[_ods_ir.FloatType]:
    return self.operands[1]

  @builtins.property
  def srcLoHiSel(self) -> _ods_ir.BoolAttr:
    return self.attributes["srcLoHiSel"]

def cvt_scalef32_pk_bf16_fp8(res: _ods_ir.Type, src: _ods_ir.Value[_ods_ir.IntegerType], scale: _ods_ir.Value[_ods_ir.FloatType], src_lo_hi_sel: _Union[bool, _ods_ir.BoolAttr], *, loc: _Optional[_ods_ir.Location] = None, ip: _Optional[_ods_ir.InsertionPoint] = None) -> _ods_ir.OpResult[_ods_ir.VectorType]:
  return CvtScaleF32PkBf16Fp8Op(res=res, src=src, scale=scale, srcLoHiSel=src_lo_hi_sel, loc=loc, ip=ip).result

@_ods_cext.register_operation(_Dialect)
class CvtScaleF32PkF16Bf8Op(_ods_ir.OpView):
  r"""
  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`.
  """

  OPERATION_NAME = "rocdl.cvt.scalef32.pk.f16.bf8"

  _ODS_REGIONS = (0, True)

  def __init__(self, res: _ods_ir.Type, src: _ods_ir.Value[_ods_ir.IntegerType], scale: _ods_ir.Value[_ods_ir.FloatType], srcLoHiSel: _Union[bool, _ods_ir.BoolAttr], *, loc: _Optional[_ods_ir.Location] = None, ip: _Optional[_ods_ir.InsertionPoint] = None):
    operands = []
    attributes = {}
    regions = None
    operands.append(src)
    operands.append(scale)
    _ods_context = _ods_get_default_loc_context(loc)
    attributes["srcLoHiSel"] = (srcLoHiSel if (
    isinstance(srcLoHiSel, _ods_ir.Attribute) or
    not _ods_ir.AttrBuilder.contains('I1Attr')) else
      _ods_ir.AttrBuilder.get('I1Attr')(srcLoHiSel, context=_ods_context))
    results = []
    results.append(res)
    _ods_successors = None
    super().__init__(self.OPERATION_NAME, self._ODS_REGIONS, self._ODS_OPERAND_SEGMENTS, self._ODS_RESULT_SEGMENTS, attributes=attributes, results=results, operands=operands, successors=_ods_successors, regions=regions, loc=loc, ip=ip)

  @builtins.property
  def src(self) -> _ods_ir.Value[_ods_ir.IntegerType]:
    return self.operation.operands[0]

  @builtins.property
  def scale(self) -> _ods_ir.Value[_ods_ir.FloatType]:
    return self.operation.operands[1]

  @builtins.property
  def srcLoHiSel(self) -> _ods_ir.BoolAttr:
    return self.operation.attributes["srcLoHiSel"]

  @srcLoHiSel.setter
  def srcLoHiSel(self, value: _ods_ir.BoolAttr):
    if value is None:
      raise ValueError("'None' not allowed as value for mandatory attributes")
    self.operation.attributes["srcLoHiSel"] = value

  @builtins.property
  def res(self) -> _ods_ir.OpResult[_ods_ir.VectorType]:
    return self.operation.results[0]

@_ods_cext.register_op_adaptor(CvtScaleF32PkF16Bf8Op)
class CvtScaleF32PkF16Bf8OpAdaptor(_ods_ir.OpAdaptor):
  OPERATION_NAME = "rocdl.cvt.scalef32.pk.f16.bf8"

  @builtins.property
  def src(self) -> _ods_ir.Value[_ods_ir.IntegerType]:
    return self.operands[0]

  @builtins.property
  def scale(self) -> _ods_ir.Value[_ods_ir.FloatType]:
    return self.operands[1]

  @builtins.property
  def srcLoHiSel(self) -> _ods_ir.BoolAttr:
    return self.attributes["srcLoHiSel"]

def cvt_scalef32_pk_f16_bf8(res: _ods_ir.Type, src: _ods_ir.Value[_ods_ir.IntegerType], scale: _ods_ir.Value[_ods_ir.FloatType], src_lo_hi_sel: _Union[bool, _ods_ir.BoolAttr], *, loc: _Optional[_ods_ir.Location] = None, ip: _Optional[_ods_ir.InsertionPoint] = None) -> _ods_ir.OpResult[_ods_ir.VectorType]:
  return CvtScaleF32PkF16Bf8Op(res=res, src=src, scale=scale, srcLoHiSel=src_lo_hi_sel, loc=loc, ip=ip).result

@_ods_cext.register_operation(_Dialect)
class CvtScaleF32PkF16Fp4Op(_ods_ir.OpView):
  r"""
  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`.
  """

  OPERATION_NAME = "rocdl.cvt.scalef32.pk.f16.fp4"

  _ODS_REGIONS = (0, True)

  def __init__(self, res: _ods_ir.Type, src: _ods_ir.Value[_ods_ir.IntegerType], scale: _ods_ir.Value[_ods_ir.FloatType], srcSelIndex: _Union[int, _ods_ir.IntegerAttr], *, loc: _Optional[_ods_ir.Location] = None, ip: _Optional[_ods_ir.InsertionPoint] = None):
    operands = []
    attributes = {}
    regions = None
    operands.append(src)
    operands.append(scale)
    _ods_context = _ods_get_default_loc_context(loc)
    attributes["srcSelIndex"] = (srcSelIndex if (
    isinstance(srcSelIndex, _ods_ir.Attribute) or
    not _ods_ir.AttrBuilder.contains('I32Attr')) else
      _ods_ir.AttrBuilder.get('I32Attr')(srcSelIndex, context=_ods_context))
    results = []
    results.append(res)
    _ods_successors = None
    super().__init__(self.OPERATION_NAME, self._ODS_REGIONS, self._ODS_OPERAND_SEGMENTS, self._ODS_RESULT_SEGMENTS, attributes=attributes, results=results, operands=operands, successors=_ods_successors, regions=regions, loc=loc, ip=ip)

  @builtins.property
  def src(self) -> _ods_ir.Value[_ods_ir.IntegerType]:
    return self.operation.operands[0]

  @builtins.property
  def scale(self) -> _ods_ir.Value[_ods_ir.FloatType]:
    return self.operation.operands[1]

  @builtins.property
  def srcSelIndex(self) -> _ods_ir.IntegerAttr:
    return self.operation.attributes["srcSelIndex"]

  @srcSelIndex.setter
  def srcSelIndex(self, value: _ods_ir.IntegerAttr):
    if value is None:
      raise ValueError("'None' not allowed as value for mandatory attributes")
    self.operation.attributes["srcSelIndex"] = value

  @builtins.property
  def res(self) -> _ods_ir.OpResult[_ods_ir.VectorType]:
    return self.operation.results[0]

@_ods_cext.register_op_adaptor(CvtScaleF32PkF16Fp4Op)
class CvtScaleF32PkF16Fp4OpAdaptor(_ods_ir.OpAdaptor):
  OPERATION_NAME = "rocdl.cvt.scalef32.pk.f16.fp4"

  @builtins.property
  def src(self) -> _ods_ir.Value[_ods_ir.IntegerType]:
    return self.operands[0]

  @builtins.property
  def scale(self) -> _ods_ir.Value[_ods_ir.FloatType]:
    return self.operands[1]

  @builtins.property
  def srcSelIndex(self) -> _ods_ir.IntegerAttr:
    return self.attributes["srcSelIndex"]

def cvt_scalef32_pk_f16_fp4(res: _ods_ir.Type, src: _ods_ir.Value[_ods_ir.IntegerType], scale: _ods_ir.Value[_ods_ir.FloatType], src_sel_index: _Union[int, _ods_ir.IntegerAttr], *, loc: _Optional[_ods_ir.Location] = None, ip: _Optional[_ods_ir.InsertionPoint] = None) -> _ods_ir.OpResult[_ods_ir.VectorType]:
  return CvtScaleF32PkF16Fp4Op(res=res, src=src, scale=scale, srcSelIndex=src_sel_index, loc=loc, ip=ip).result

@_ods_cext.register_operation(_Dialect)
class CvtScaleF32PkF16Fp8Op(_ods_ir.OpView):
  r"""
  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`.
  """

  OPERATION_NAME = "rocdl.cvt.scalef32.pk.f16.fp8"

  _ODS_REGIONS = (0, True)

  def __init__(self, res: _ods_ir.Type, src: _ods_ir.Value[_ods_ir.IntegerType], scale: _ods_ir.Value[_ods_ir.FloatType], srcLoHiSel: _Union[bool, _ods_ir.BoolAttr], *, loc: _Optional[_ods_ir.Location] = None, ip: _Optional[_ods_ir.InsertionPoint] = None):
    operands = []
    attributes = {}
    regions = None
    operands.append(src)
    operands.append(scale)
    _ods_context = _ods_get_default_loc_context(loc)
    attributes["srcLoHiSel"] = (srcLoHiSel if (
    isinstance(srcLoHiSel, _ods_ir.Attribute) or
    not _ods_ir.AttrBuilder.contains('I1Attr')) else
      _ods_ir.AttrBuilder.get('I1Attr')(srcLoHiSel, context=_ods_context))
    results = []
    results.append(res)
    _ods_successors = None
    super().__init__(self.OPERATION_NAME, self._ODS_REGIONS, self._ODS_OPERAND_SEGMENTS, self._ODS_RESULT_SEGMENTS, attributes=attributes, results=results, operands=operands, successors=_ods_successors, regions=regions, loc=loc, ip=ip)

  @builtins.property
  def src(self) -> _ods_ir.Value[_ods_ir.IntegerType]:
    return self.operation.operands[0]

  @builtins.property
  def scale(self) -> _ods_ir.Value[_ods_ir.FloatType]:
    return self.operation.operands[1]

  @builtins.property
  def srcLoHiSel(self) -> _ods_ir.BoolAttr:
    return self.operation.attributes["srcLoHiSel"]

  @srcLoHiSel.setter
  def srcLoHiSel(self, value: _ods_ir.BoolAttr):
    if value is None:
      raise ValueError("'None' not allowed as value for mandatory attributes")
    self.operation.attributes["srcLoHiSel"] = value

  @builtins.property
  def res(self) -> _ods_ir.OpResult[_ods_ir.VectorType]:
    return self.operation.results[0]

@_ods_cext.register_op_adaptor(CvtScaleF32PkF16Fp8Op)
class CvtScaleF32PkF16Fp8OpAdaptor(_ods_ir.OpAdaptor):
  OPERATION_NAME = "rocdl.cvt.scalef32.pk.f16.fp8"

  @builtins.property
  def src(self) -> _ods_ir.Value[_ods_ir.IntegerType]:
    return self.operands[0]

  @builtins.property
  def scale(self) -> _ods_ir.Value[_ods_ir.FloatType]:
    return self.operands[1]

  @builtins.property
  def srcLoHiSel(self) -> _ods_ir.BoolAttr:
    return self.attributes["srcLoHiSel"]

def cvt_scalef32_pk_f16_fp8(res: _ods_ir.Type, src: _ods_ir.Value[_ods_ir.IntegerType], scale: _ods_ir.Value[_ods_ir.FloatType], src_lo_hi_sel: _Union[bool, _ods_ir.BoolAttr], *, loc: _Optional[_ods_ir.Location] = None, ip: _Optional[_ods_ir.InsertionPoint] = None) -> _ods_ir.OpResult[_ods_ir.VectorType]:
  return CvtScaleF32PkF16Fp8Op(res=res, src=src, scale=scale, srcLoHiSel=src_lo_hi_sel, loc=loc, ip=ip).result

@_ods_cext.register_operation(_Dialect)
class CvtScaleF32PkF32Bf8Op(_ods_ir.OpView):
  r"""
  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`.
  """

  OPERATION_NAME = "rocdl.cvt.scalef32.pk.f32.bf8"

  _ODS_REGIONS = (0, True)

  def __init__(self, res: _ods_ir.Type, src: _ods_ir.Value[_ods_ir.IntegerType], scale: _ods_ir.Value[_ods_ir.FloatType], srcLoHiSel: _Union[bool, _ods_ir.BoolAttr], *, loc: _Optional[_ods_ir.Location] = None, ip: _Optional[_ods_ir.InsertionPoint] = None):
    operands = []
    attributes = {}
    regions = None
    operands.append(src)
    operands.append(scale)
    _ods_context = _ods_get_default_loc_context(loc)
    attributes["srcLoHiSel"] = (srcLoHiSel if (
    isinstance(srcLoHiSel, _ods_ir.Attribute) or
    not _ods_ir.AttrBuilder.contains('I1Attr')) else
      _ods_ir.AttrBuilder.get('I1Attr')(srcLoHiSel, context=_ods_context))
    results = []
    results.append(res)
    _ods_successors = None
    super().__init__(self.OPERATION_NAME, self._ODS_REGIONS, self._ODS_OPERAND_SEGMENTS, self._ODS_RESULT_SEGMENTS, attributes=attributes, results=results, operands=operands, successors=_ods_successors, regions=regions, loc=loc, ip=ip)

  @builtins.property
  def src(self) -> _ods_ir.Value[_ods_ir.IntegerType]:
    return self.operation.operands[0]

  @builtins.property
  def scale(self) -> _ods_ir.Value[_ods_ir.FloatType]:
    return self.operation.operands[1]

  @builtins.property
  def srcLoHiSel(self) -> _ods_ir.BoolAttr:
    return self.operation.attributes["srcLoHiSel"]

  @srcLoHiSel.setter
  def srcLoHiSel(self, value: _ods_ir.BoolAttr):
    if value is None:
      raise ValueError("'None' not allowed as value for mandatory attributes")
    self.operation.attributes["srcLoHiSel"] = value

  @builtins.property
  def res(self) -> _ods_ir.OpResult[_ods_ir.VectorType]:
    return self.operation.results[0]

@_ods_cext.register_op_adaptor(CvtScaleF32PkF32Bf8Op)
class CvtScaleF32PkF32Bf8OpAdaptor(_ods_ir.OpAdaptor):
  OPERATION_NAME = "rocdl.cvt.scalef32.pk.f32.bf8"

  @builtins.property
  def src(self) -> _ods_ir.Value[_ods_ir.IntegerType]:
    return self.operands[0]

  @builtins.property
  def scale(self) -> _ods_ir.Value[_ods_ir.FloatType]:
    return self.operands[1]

  @builtins.property
  def srcLoHiSel(self) -> _ods_ir.BoolAttr:
    return self.attributes["srcLoHiSel"]

def cvt_scalef32_pk_f32_bf8(res: _ods_ir.Type, src: _ods_ir.Value[_ods_ir.IntegerType], scale: _ods_ir.Value[_ods_ir.FloatType], src_lo_hi_sel: _Union[bool, _ods_ir.BoolAttr], *, loc: _Optional[_ods_ir.Location] = None, ip: _Optional[_ods_ir.InsertionPoint] = None) -> _ods_ir.OpResult[_ods_ir.VectorType]:
  return CvtScaleF32PkF32Bf8Op(res=res, src=src, scale=scale, srcLoHiSel=src_lo_hi_sel, loc=loc, ip=ip).result

@_ods_cext.register_operation(_Dialect)
class CvtScaleF32PkF32Fp4Op(_ods_ir.OpView):
  r"""
  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`.
  """

  OPERATION_NAME = "rocdl.cvt.scalef32.pk.f32.fp4"

  _ODS_REGIONS = (0, True)

  def __init__(self, res: _ods_ir.Type, src: _ods_ir.Value[_ods_ir.IntegerType], scale: _ods_ir.Value[_ods_ir.FloatType], srcSelIndex: _Union[int, _ods_ir.IntegerAttr], *, loc: _Optional[_ods_ir.Location] = None, ip: _Optional[_ods_ir.InsertionPoint] = None):
    operands = []
    attributes = {}
    regions = None
    operands.append(src)
    operands.append(scale)
    _ods_context = _ods_get_default_loc_context(loc)
    attributes["srcSelIndex"] = (srcSelIndex if (
    isinstance(srcSelIndex, _ods_ir.Attribute) or
    not _ods_ir.AttrBuilder.contains('I32Attr')) else
      _ods_ir.AttrBuilder.get('I32Attr')(srcSelIndex, context=_ods_context))
    results = []
    results.append(res)
    _ods_successors = None
    super().__init__(self.OPERATION_NAME, self._ODS_REGIONS, self._ODS_OPERAND_SEGMENTS, self._ODS_RESULT_SEGMENTS, attributes=attributes, results=results, operands=operands, successors=_ods_successors, regions=regions, loc=loc, ip=ip)

  @builtins.property
  def src(self) -> _ods_ir.Value[_ods_ir.IntegerType]:
    return self.operation.operands[0]

  @builtins.property
  def scale(self) -> _ods_ir.Value[_ods_ir.FloatType]:
    return self.operation.operands[1]

  @builtins.property
  def srcSelIndex(self) -> _ods_ir.IntegerAttr:
    return self.operation.attributes["srcSelIndex"]

  @srcSelIndex.setter
  def srcSelIndex(self, value: _ods_ir.IntegerAttr):
    if value is None:
      raise ValueError("'None' not allowed as value for mandatory attributes")
    self.operation.attributes["srcSelIndex"] = value

  @builtins.property
  def res(self) -> _ods_ir.OpResult[_ods_ir.VectorType]:
    return self.operation.results[0]

@_ods_cext.register_op_adaptor(CvtScaleF32PkF32Fp4Op)
class CvtScaleF32PkF32Fp4OpAdaptor(_ods_ir.OpAdaptor):
  OPERATION_NAME = "rocdl.cvt.scalef32.pk.f32.fp4"

  @builtins.property
  def src(self) -> _ods_ir.Value[_ods_ir.IntegerType]:
    return self.operands[0]

  @builtins.property
  def scale(self) -> _ods_ir.Value[_ods_ir.FloatType]:
    return self.operands[1]

  @builtins.property
  def srcSelIndex(self) -> _ods_ir.IntegerAttr:
    return self.attributes["srcSelIndex"]

def cvt_scalef32_pk_f32_fp4(res: _ods_ir.Type, src: _ods_ir.Value[_ods_ir.IntegerType], scale: _ods_ir.Value[_ods_ir.FloatType], src_sel_index: _Union[int, _ods_ir.IntegerAttr], *, loc: _Optional[_ods_ir.Location] = None, ip: _Optional[_ods_ir.InsertionPoint] = None) -> _ods_ir.OpResult[_ods_ir.VectorType]:
  return CvtScaleF32PkF32Fp4Op(res=res, src=src, scale=scale, srcSelIndex=src_sel_index, loc=loc, ip=ip).result

@_ods_cext.register_operation(_Dialect)
class CvtScaleF32PkF32Fp8Op(_ods_ir.OpView):
  r"""
  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`.
  """

  OPERATION_NAME = "rocdl.cvt.scalef32.pk.f32.fp8"

  _ODS_REGIONS = (0, True)

  def __init__(self, res: _ods_ir.Type, src: _ods_ir.Value[_ods_ir.IntegerType], scale: _ods_ir.Value[_ods_ir.FloatType], srcLoHiSel: _Union[bool, _ods_ir.BoolAttr], *, loc: _Optional[_ods_ir.Location] = None, ip: _Optional[_ods_ir.InsertionPoint] = None):
    operands = []
    attributes = {}
    regions = None
    operands.append(src)
    operands.append(scale)
    _ods_context = _ods_get_default_loc_context(loc)
    attributes["srcLoHiSel"] = (srcLoHiSel if (
    isinstance(srcLoHiSel, _ods_ir.Attribute) or
    not _ods_ir.AttrBuilder.contains('I1Attr')) else
      _ods_ir.AttrBuilder.get('I1Attr')(srcLoHiSel, context=_ods_context))
    results = []
    results.append(res)
    _ods_successors = None
    super().__init__(self.OPERATION_NAME, self._ODS_REGIONS, self._ODS_OPERAND_SEGMENTS, self._ODS_RESULT_SEGMENTS, attributes=attributes, results=results, operands=operands, successors=_ods_successors, regions=regions, loc=loc, ip=ip)

  @builtins.property
  def src(self) -> _ods_ir.Value[_ods_ir.IntegerType]:
    return self.operation.operands[0]

  @builtins.property
  def scale(self) -> _ods_ir.Value[_ods_ir.FloatType]:
    return self.operation.operands[1]

  @builtins.property
  def srcLoHiSel(self) -> _ods_ir.BoolAttr:
    return self.operation.attributes["srcLoHiSel"]

  @srcLoHiSel.setter
  def srcLoHiSel(self, value: _ods_ir.BoolAttr):
    if value is None:
      raise ValueError("'None' not allowed as value for mandatory attributes")
    self.operation.attributes["srcLoHiSel"] = value

  @builtins.property
  def res(self) -> _ods_ir.OpResult[_ods_ir.VectorType]:
    return self.operation.results[0]

@_ods_cext.register_op_adaptor(CvtScaleF32PkF32Fp8Op)
class CvtScaleF32PkF32Fp8OpAdaptor(_ods_ir.OpAdaptor):
  OPERATION_NAME = "rocdl.cvt.scalef32.pk.f32.fp8"

  @builtins.property
  def src(self) -> _ods_ir.Value[_ods_ir.IntegerType]:
    return self.operands[0]

  @builtins.property
  def scale(self) -> _ods_ir.Value[_ods_ir.FloatType]:
    return self.operands[1]

  @builtins.property
  def srcLoHiSel(self) -> _ods_ir.BoolAttr:
    return self.attributes["srcLoHiSel"]

def cvt_scalef32_pk_f32_fp8(res: _ods_ir.Type, src: _ods_ir.Value[_ods_ir.IntegerType], scale: _ods_ir.Value[_ods_ir.FloatType], src_lo_hi_sel: _Union[bool, _ods_ir.BoolAttr], *, loc: _Optional[_ods_ir.Location] = None, ip: _Optional[_ods_ir.InsertionPoint] = None) -> _ods_ir.OpResult[_ods_ir.VectorType]:
  return CvtScaleF32PkF32Fp8Op(res=res, src=src, scale=scale, srcLoHiSel=src_lo_hi_sel, loc=loc, ip=ip).result

@_ods_cext.register_operation(_Dialect)
class CvtScaleF32PkFp4Bf16Op(_ods_ir.OpView):
  r"""
  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.
  """

  OPERATION_NAME = "rocdl.cvt.scalef32.pk.fp4.bf16"

  _ODS_REGIONS = (0, True)

  def __init__(self, res: _ods_ir.Type, oldVdst: _ods_ir.Value[_ods_ir.IntegerType], src: _ods_ir.Value[_ods_ir.VectorType], scale: _ods_ir.Value[_ods_ir.FloatType], dstSelIndex: _Union[int, _ods_ir.IntegerAttr], *, loc: _Optional[_ods_ir.Location] = None, ip: _Optional[_ods_ir.InsertionPoint] = None):
    operands = []
    attributes = {}
    regions = None
    operands.append(oldVdst)
    operands.append(src)
    operands.append(scale)
    _ods_context = _ods_get_default_loc_context(loc)
    attributes["dstSelIndex"] = (dstSelIndex if (
    isinstance(dstSelIndex, _ods_ir.Attribute) or
    not _ods_ir.AttrBuilder.contains('I32Attr')) else
      _ods_ir.AttrBuilder.get('I32Attr')(dstSelIndex, context=_ods_context))
    results = []
    results.append(res)
    _ods_successors = None
    super().__init__(self.OPERATION_NAME, self._ODS_REGIONS, self._ODS_OPERAND_SEGMENTS, self._ODS_RESULT_SEGMENTS, attributes=attributes, results=results, operands=operands, successors=_ods_successors, regions=regions, loc=loc, ip=ip)

  @builtins.property
  def oldVdst(self) -> _ods_ir.Value[_ods_ir.IntegerType]:
    return self.operation.operands[0]

  @builtins.property
  def src(self) -> _ods_ir.Value[_ods_ir.VectorType]:
    return self.operation.operands[1]

  @builtins.property
  def scale(self) -> _ods_ir.Value[_ods_ir.FloatType]:
    return self.operation.operands[2]

  @builtins.property
  def dstSelIndex(self) -> _ods_ir.IntegerAttr:
    return self.operation.attributes["dstSelIndex"]

  @dstSelIndex.setter
  def dstSelIndex(self, value: _ods_ir.IntegerAttr):
    if value is None:
      raise ValueError("'None' not allowed as value for mandatory attributes")
    self.operation.attributes["dstSelIndex"] = value

  @builtins.property
  def res(self) -> _ods_ir.OpResult[_ods_ir.IntegerType]:
    return self.operation.results[0]

@_ods_cext.register_op_adaptor(CvtScaleF32PkFp4Bf16Op)
class CvtScaleF32PkFp4Bf16OpAdaptor(_ods_ir.OpAdaptor):
  OPERATION_NAME = "rocdl.cvt.scalef32.pk.fp4.bf16"

  @builtins.property
  def oldVdst(self) -> _ods_ir.Value[_ods_ir.IntegerType]:
    return self.operands[0]

  @builtins.property
  def src(self) -> _ods_ir.Value[_ods_ir.VectorType]:
    return self.operands[1]

  @builtins.property
  def scale(self) -> _ods_ir.Value[_ods_ir.FloatType]:
    return self.operands[2]

  @builtins.property
  def dstSelIndex(self) -> _ods_ir.IntegerAttr:
    return self.attributes["dstSelIndex"]

def cvt_scalef32_pk_fp4_bf16(res: _ods_ir.Type, old_vdst: _ods_ir.Value[_ods_ir.IntegerType], src: _ods_ir.Value[_ods_ir.VectorType], scale: _ods_ir.Value[_ods_ir.FloatType], dst_sel_index: _Union[int, _ods_ir.IntegerAttr], *, loc: _Optional[_ods_ir.Location] = None, ip: _Optional[_ods_ir.InsertionPoint] = None) -> _ods_ir.OpResult[_ods_ir.IntegerType]:
  return CvtScaleF32PkFp4Bf16Op(res=res, oldVdst=old_vdst, src=src, scale=scale, dstSelIndex=dst_sel_index, loc=loc, ip=ip).result

@_ods_cext.register_operation(_Dialect)
class CvtScaleF32PkFp4F16Op(_ods_ir.OpView):
  r"""
  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.
  """

  OPERATION_NAME = "rocdl.cvt.scalef32.pk.fp4.f16"

  _ODS_REGIONS = (0, True)

  def __init__(self, res: _ods_ir.Type, oldVdst: _ods_ir.Value[_ods_ir.IntegerType], src: _ods_ir.Value[_ods_ir.VectorType], scale: _ods_ir.Value[_ods_ir.FloatType], dstSelIndex: _Union[int, _ods_ir.IntegerAttr], *, loc: _Optional[_ods_ir.Location] = None, ip: _Optional[_ods_ir.InsertionPoint] = None):
    operands = []
    attributes = {}
    regions = None
    operands.append(oldVdst)
    operands.append(src)
    operands.append(scale)
    _ods_context = _ods_get_default_loc_context(loc)
    attributes["dstSelIndex"] = (dstSelIndex if (
    isinstance(dstSelIndex, _ods_ir.Attribute) or
    not _ods_ir.AttrBuilder.contains('I32Attr')) else
      _ods_ir.AttrBuilder.get('I32Attr')(dstSelIndex, context=_ods_context))
    results = []
    results.append(res)
    _ods_successors = None
    super().__init__(self.OPERATION_NAME, self._ODS_REGIONS, self._ODS_OPERAND_SEGMENTS, self._ODS_RESULT_SEGMENTS, attributes=attributes, results=results, operands=operands, successors=_ods_successors, regions=regions, loc=loc, ip=ip)

  @builtins.property
  def oldVdst(self) -> _ods_ir.Value[_ods_ir.IntegerType]:
    return self.operation.operands[0]

  @builtins.property
  def src(self) -> _ods_ir.Value[_ods_ir.VectorType]:
    return self.operation.operands[1]

  @builtins.property
  def scale(self) -> _ods_ir.Value[_ods_ir.FloatType]:
    return self.operation.operands[2]

  @builtins.property
  def dstSelIndex(self) -> _ods_ir.IntegerAttr:
    return self.operation.attributes["dstSelIndex"]

  @dstSelIndex.setter
  def dstSelIndex(self, value: _ods_ir.IntegerAttr):
    if value is None:
      raise ValueError("'None' not allowed as value for mandatory attributes")
    self.operation.attributes["dstSelIndex"] = value

  @builtins.property
  def res(self) -> _ods_ir.OpResult[_ods_ir.IntegerType]:
    return self.operation.results[0]

@_ods_cext.register_op_adaptor(CvtScaleF32PkFp4F16Op)
class CvtScaleF32PkFp4F16OpAdaptor(_ods_ir.OpAdaptor):
  OPERATION_NAME = "rocdl.cvt.scalef32.pk.fp4.f16"

  @builtins.property
  def oldVdst(self) -> _ods_ir.Value[_ods_ir.IntegerType]:
    return self.operands[0]

  @builtins.property
  def src(self) -> _ods_ir.Value[_ods_ir.VectorType]:
    return self.operands[1]

  @builtins.property
  def scale(self) -> _ods_ir.Value[_ods_ir.FloatType]:
    return self.operands[2]

  @builtins.property
  def dstSelIndex(self) -> _ods_ir.IntegerAttr:
    return self.attributes["dstSelIndex"]

def cvt_scalef32_pk_fp4_f16(res: _ods_ir.Type, old_vdst: _ods_ir.Value[_ods_ir.IntegerType], src: _ods_ir.Value[_ods_ir.VectorType], scale: _ods_ir.Value[_ods_ir.FloatType], dst_sel_index: _Union[int, _ods_ir.IntegerAttr], *, loc: _Optional[_ods_ir.Location] = None, ip: _Optional[_ods_ir.InsertionPoint] = None) -> _ods_ir.OpResult[_ods_ir.IntegerType]:
  return CvtScaleF32PkFp4F16Op(res=res, oldVdst=old_vdst, src=src, scale=scale, dstSelIndex=dst_sel_index, loc=loc, ip=ip).result

@_ods_cext.register_operation(_Dialect)
class CvtScaleF32PkFp4F32Op(_ods_ir.OpView):
  r"""
  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
  ```
  """

  OPERATION_NAME = "rocdl.cvt.scalef32.pk.fp4.f32"

  _ODS_REGIONS = (0, True)

  def __init__(self, res: _ods_ir.Type, oldVdst: _ods_ir.Value[_ods_ir.IntegerType], src0: _ods_ir.Value[_ods_ir.FloatType], src1: _ods_ir.Value[_ods_ir.FloatType], scale: _ods_ir.Value[_ods_ir.FloatType], dstSelIndex: _Union[int, _ods_ir.IntegerAttr], *, loc: _Optional[_ods_ir.Location] = None, ip: _Optional[_ods_ir.InsertionPoint] = None):
    operands = []
    attributes = {}
    regions = None
    operands.append(oldVdst)
    operands.append(src0)
    operands.append(src1)
    operands.append(scale)
    _ods_context = _ods_get_default_loc_context(loc)
    attributes["dstSelIndex"] = (dstSelIndex if (
    isinstance(dstSelIndex, _ods_ir.Attribute) or
    not _ods_ir.AttrBuilder.contains('I32Attr')) else
      _ods_ir.AttrBuilder.get('I32Attr')(dstSelIndex, context=_ods_context))
    results = []
    results.append(res)
    _ods_successors = None
    super().__init__(self.OPERATION_NAME, self._ODS_REGIONS, self._ODS_OPERAND_SEGMENTS, self._ODS_RESULT_SEGMENTS, attributes=attributes, results=results, operands=operands, successors=_ods_successors, regions=regions, loc=loc, ip=ip)

  @builtins.property
  def oldVdst(self) -> _ods_ir.Value[_ods_ir.IntegerType]:
    return self.operation.operands[0]

  @builtins.property
  def src0(self) -> _ods_ir.Value[_ods_ir.FloatType]:
    return self.operation.operands[1]

  @builtins.property
  def src1(self) -> _ods_ir.Value[_ods_ir.FloatType]:
    return self.operation.operands[2]

  @builtins.property
  def scale(self) -> _ods_ir.Value[_ods_ir.FloatType]:
    return self.operation.operands[3]

  @builtins.property
  def dstSelIndex(self) -> _ods_ir.IntegerAttr:
    return self.operation.attributes["dstSelIndex"]

  @dstSelIndex.setter
  def dstSelIndex(self, value: _ods_ir.IntegerAttr):
    if value is None:
      raise ValueError("'None' not allowed as value for mandatory attributes")
    self.operation.attributes["dstSelIndex"] = value

  @builtins.property
  def res(self) -> _ods_ir.OpResult[_ods_ir.IntegerType]:
    return self.operation.results[0]

@_ods_cext.register_op_adaptor(CvtScaleF32PkFp4F32Op)
class CvtScaleF32PkFp4F32OpAdaptor(_ods_ir.OpAdaptor):
  OPERATION_NAME = "rocdl.cvt.scalef32.pk.fp4.f32"

  @builtins.property
  def oldVdst(self) -> _ods_ir.Value[_ods_ir.IntegerType]:
    return self.operands[0]

  @builtins.property
  def src0(self) -> _ods_ir.Value[_ods_ir.FloatType]:
    return self.operands[1]

  @builtins.property
  def src1(self) -> _ods_ir.Value[_ods_ir.FloatType]:
    return self.operands[2]

  @builtins.property
  def scale(self) -> _ods_ir.Value[_ods_ir.FloatType]:
    return self.operands[3]

  @builtins.property
  def dstSelIndex(self) -> _ods_ir.IntegerAttr:
    return self.attributes["dstSelIndex"]

def cvt_scalef32_pk_fp4_f32(res: _ods_ir.Type, old_vdst: _ods_ir.Value[_ods_ir.IntegerType], src0: _ods_ir.Value[_ods_ir.FloatType], src1: _ods_ir.Value[_ods_ir.FloatType], scale: _ods_ir.Value[_ods_ir.FloatType], dst_sel_index: _Union[int, _ods_ir.IntegerAttr], *, loc: _Optional[_ods_ir.Location] = None, ip: _Optional[_ods_ir.InsertionPoint] = None) -> _ods_ir.OpResult[_ods_ir.IntegerType]:
  return CvtScaleF32PkFp4F32Op(res=res, oldVdst=old_vdst, src0=src0, src1=src1, scale=scale, dstSelIndex=dst_sel_index, loc=loc, ip=ip).result

@_ods_cext.register_operation(_Dialect)
class CvtScaleF32PkFp8Bf16Op(_ods_ir.OpView):
  r"""
  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.
  """

  OPERATION_NAME = "rocdl.cvt.scalef32.pk.fp8.bf16"

  _ODS_REGIONS = (0, True)

  def __init__(self, res: _ods_ir.Type, oldVdst: _ods_ir.Value[_ods_ir.VectorType], src0: _ods_ir.Value[_ods_ir.VectorType], scale: _ods_ir.Value[_ods_ir.FloatType], dstLoHiSel: _Union[bool, _ods_ir.BoolAttr], *, loc: _Optional[_ods_ir.Location] = None, ip: _Optional[_ods_ir.InsertionPoint] = None):
    operands = []
    attributes = {}
    regions = None
    operands.append(oldVdst)
    operands.append(src0)
    operands.append(scale)
    _ods_context = _ods_get_default_loc_context(loc)
    attributes["dstLoHiSel"] = (dstLoHiSel if (
    isinstance(dstLoHiSel, _ods_ir.Attribute) or
    not _ods_ir.AttrBuilder.contains('I1Attr')) else
      _ods_ir.AttrBuilder.get('I1Attr')(dstLoHiSel, context=_ods_context))
    results = []
    results.append(res)
    _ods_successors = None
    super().__init__(self.OPERATION_NAME, self._ODS_REGIONS, self._ODS_OPERAND_SEGMENTS, self._ODS_RESULT_SEGMENTS, attributes=attributes, results=results, operands=operands, successors=_ods_successors, regions=regions, loc=loc, ip=ip)

  @builtins.property
  def oldVdst(self) -> _ods_ir.Value[_ods_ir.VectorType]:
    return self.operation.operands[0]

  @builtins.property
  def src0(self) -> _ods_ir.Value[_ods_ir.VectorType]:
    return self.operation.operands[1]

  @builtins.property
  def scale(self) -> _ods_ir.Value[_ods_ir.FloatType]:
    return self.operation.operands[2]

  @builtins.property
  def dstLoHiSel(self) -> _ods_ir.BoolAttr:
    return self.operation.attributes["dstLoHiSel"]

  @dstLoHiSel.setter
  def dstLoHiSel(self, value: _ods_ir.BoolAttr):
    if value is None:
      raise ValueError("'None' not allowed as value for mandatory attributes")
    self.operation.attributes["dstLoHiSel"] = value

  @builtins.property
  def res(self) -> _ods_ir.OpResult[_ods_ir.VectorType]:
    return self.operation.results[0]

@_ods_cext.register_op_adaptor(CvtScaleF32PkFp8Bf16Op)
class CvtScaleF32PkFp8Bf16OpAdaptor(_ods_ir.OpAdaptor):
  OPERATION_NAME = "rocdl.cvt.scalef32.pk.fp8.bf16"

  @builtins.property
  def oldVdst(self) -> _ods_ir.Value[_ods_ir.VectorType]:
    return self.operands[0]

  @builtins.property
  def src0(self) -> _ods_ir.Value[_ods_ir.VectorType]:
    return self.operands[1]

  @builtins.property
  def scale(self) -> _ods_ir.Value[_ods_ir.FloatType]:
    return self.operands[2]

  @builtins.property
  def dstLoHiSel(self) -> _ods_ir.BoolAttr:
    return self.attributes["dstLoHiSel"]

def cvt_scalef32_pk_fp8_bf16(res: _ods_ir.Type, old_vdst: _ods_ir.Value[_ods_ir.VectorType], src0: _ods_ir.Value[_ods_ir.VectorType], scale: _ods_ir.Value[_ods_ir.FloatType], dst_lo_hi_sel: _Union[bool, _ods_ir.BoolAttr], *, loc: _Optional[_ods_ir.Location] = None, ip: _Optional[_ods_ir.InsertionPoint] = None) -> _ods_ir.OpResult[_ods_ir.VectorType]:
  return CvtScaleF32PkFp8Bf16Op(res=res, oldVdst=old_vdst, src0=src0, scale=scale, dstLoHiSel=dst_lo_hi_sel, loc=loc, ip=ip).result

@_ods_cext.register_operation(_Dialect)
class CvtScaleF32PkFp8F16Op(_ods_ir.OpView):
  r"""
  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.
  """

  OPERATION_NAME = "rocdl.cvt.scalef32.pk.fp8.f16"

  _ODS_REGIONS = (0, True)

  def __init__(self, res: _ods_ir.Type, oldVdst: _ods_ir.Value[_ods_ir.VectorType], src0: _ods_ir.Value[_ods_ir.VectorType], scale: _ods_ir.Value[_ods_ir.FloatType], dstLoHiSel: _Union[bool, _ods_ir.BoolAttr], *, loc: _Optional[_ods_ir.Location] = None, ip: _Optional[_ods_ir.InsertionPoint] = None):
    operands = []
    attributes = {}
    regions = None
    operands.append(oldVdst)
    operands.append(src0)
    operands.append(scale)
    _ods_context = _ods_get_default_loc_context(loc)
    attributes["dstLoHiSel"] = (dstLoHiSel if (
    isinstance(dstLoHiSel, _ods_ir.Attribute) or
    not _ods_ir.AttrBuilder.contains('I1Attr')) else
      _ods_ir.AttrBuilder.get('I1Attr')(dstLoHiSel, context=_ods_context))
    results = []
    results.append(res)
    _ods_successors = None
    super().__init__(self.OPERATION_NAME, self._ODS_REGIONS, self._ODS_OPERAND_SEGMENTS, self._ODS_RESULT_SEGMENTS, attributes=attributes, results=results, operands=operands, successors=_ods_successors, regions=regions, loc=loc, ip=ip)

  @builtins.property
  def oldVdst(self) -> _ods_ir.Value[_ods_ir.VectorType]:
    return self.operation.operands[0]

  @builtins.property
  def src0(self) -> _ods_ir.Value[_ods_ir.VectorType]:
    return self.operation.operands[1]

  @builtins.property
  def scale(self) -> _ods_ir.Value[_ods_ir.FloatType]:
    return self.operation.operands[2]

  @builtins.property
  def dstLoHiSel(self) -> _ods_ir.BoolAttr:
    return self.operation.attributes["dstLoHiSel"]

  @dstLoHiSel.setter
  def dstLoHiSel(self, value: _ods_ir.BoolAttr):
    if value is None:
      raise ValueError("'None' not allowed as value for mandatory attributes")
    self.operation.attributes["dstLoHiSel"] = value

  @builtins.property
  def res(self) -> _ods_ir.OpResult[_ods_ir.VectorType]:
    return self.operation.results[0]

@_ods_cext.register_op_adaptor(CvtScaleF32PkFp8F16Op)
class CvtScaleF32PkFp8F16OpAdaptor(_ods_ir.OpAdaptor):
  OPERATION_NAME = "rocdl.cvt.scalef32.pk.fp8.f16"

  @builtins.property
  def oldVdst(self) -> _ods_ir.Value[_ods_ir.VectorType]:
    return self.operands[0]

  @builtins.property
  def src0(self) -> _ods_ir.Value[_ods_ir.VectorType]:
    return self.operands[1]

  @builtins.property
  def scale(self) -> _ods_ir.Value[_ods_ir.FloatType]:
    return self.operands[2]

  @builtins.property
  def dstLoHiSel(self) -> _ods_ir.BoolAttr:
    return self.attributes["dstLoHiSel"]

def cvt_scalef32_pk_fp8_f16(res: _ods_ir.Type, old_vdst: _ods_ir.Value[_ods_ir.VectorType], src0: _ods_ir.Value[_ods_ir.VectorType], scale: _ods_ir.Value[_ods_ir.FloatType], dst_lo_hi_sel: _Union[bool, _ods_ir.BoolAttr], *, loc: _Optional[_ods_ir.Location] = None, ip: _Optional[_ods_ir.InsertionPoint] = None) -> _ods_ir.OpResult[_ods_ir.VectorType]:
  return CvtScaleF32PkFp8F16Op(res=res, oldVdst=old_vdst, src0=src0, scale=scale, dstLoHiSel=dst_lo_hi_sel, loc=loc, ip=ip).result

@_ods_cext.register_operation(_Dialect)
class CvtScaleF32PkFp8F32Op(_ods_ir.OpView):
  r"""
  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.
  """

  OPERATION_NAME = "rocdl.cvt.scalef32.pk.fp8.f32"

  _ODS_REGIONS = (0, True)

  def __init__(self, res: _ods_ir.Type, oldVdst: _ods_ir.Value[_ods_ir.VectorType], src0: _ods_ir.Value[_ods_ir.FloatType], src1: _ods_ir.Value[_ods_ir.FloatType], scale: _ods_ir.Value[_ods_ir.FloatType], dstLoHiSel: _Union[bool, _ods_ir.BoolAttr], *, loc: _Optional[_ods_ir.Location] = None, ip: _Optional[_ods_ir.InsertionPoint] = None):
    operands = []
    attributes = {}
    regions = None
    operands.append(oldVdst)
    operands.append(src0)
    operands.append(src1)
    operands.append(scale)
    _ods_context = _ods_get_default_loc_context(loc)
    attributes["dstLoHiSel"] = (dstLoHiSel if (
    isinstance(dstLoHiSel, _ods_ir.Attribute) or
    not _ods_ir.AttrBuilder.contains('I1Attr')) else
      _ods_ir.AttrBuilder.get('I1Attr')(dstLoHiSel, context=_ods_context))
    results = []
    results.append(res)
    _ods_successors = None
    super().__init__(self.OPERATION_NAME, self._ODS_REGIONS, self._ODS_OPERAND_SEGMENTS, self._ODS_RESULT_SEGMENTS, attributes=attributes, results=results, operands=operands, successors=_ods_successors, regions=regions, loc=loc, ip=ip)

  @builtins.property
  def oldVdst(self) -> _ods_ir.Value[_ods_ir.VectorType]:
    return self.operation.operands[0]

  @builtins.property
  def src0(self) -> _ods_ir.Value[_ods_ir.FloatType]:
    return self.operation.operands[1]

  @builtins.property
  def src1(self) -> _ods_ir.Value[_ods_ir.FloatType]:
    return self.operation.operands[2]

  @builtins.property
  def scale(self) -> _ods_ir.Value[_ods_ir.FloatType]:
    return self.operation.operands[3]

  @builtins.property
  def dstLoHiSel(self) -> _ods_ir.BoolAttr:
    return self.operation.attributes["dstLoHiSel"]

  @dstLoHiSel.setter
  def dstLoHiSel(self, value: _ods_ir.BoolAttr):
    if value is None:
      raise ValueError("'None' not allowed as value for mandatory attributes")
    self.operation.attributes["dstLoHiSel"] = value

  @builtins.property
  def res(self) -> _ods_ir.OpResult[_ods_ir.VectorType]:
    return self.operation.results[0]

@_ods_cext.register_op_adaptor(CvtScaleF32PkFp8F32Op)
class CvtScaleF32PkFp8F32OpAdaptor(_ods_ir.OpAdaptor):
  OPERATION_NAME = "rocdl.cvt.scalef32.pk.fp8.f32"

  @builtins.property
  def oldVdst(self) -> _ods_ir.Value[_ods_ir.VectorType]:
    return self.operands[0]

  @builtins.property
  def src0(self) -> _ods_ir.Value[_ods_ir.FloatType]:
    return self.operands[1]

  @builtins.property
  def src1(self) -> _ods_ir.Value[_ods_ir.FloatType]:
    return self.operands[2]

  @builtins.property
  def scale(self) -> _ods_ir.Value[_ods_ir.FloatType]:
    return self.operands[3]

  @builtins.property
  def dstLoHiSel(self) -> _ods_ir.BoolAttr:
    return self.attributes["dstLoHiSel"]

def cvt_scalef32_pk_fp8_f32(res: _ods_ir.Type, old_vdst: _ods_ir.Value[_ods_ir.VectorType], src0: _ods_ir.Value[_ods_ir.FloatType], src1: _ods_ir.Value[_ods_ir.FloatType], scale: _ods_ir.Value[_ods_ir.FloatType], dst_lo_hi_sel: _Union[bool, _ods_ir.BoolAttr], *, loc: _Optional[_ods_ir.Location] = None, ip: _Optional[_ods_ir.InsertionPoint] = None) -> _ods_ir.OpResult[_ods_ir.VectorType]:
  return CvtScaleF32PkFp8F32Op(res=res, oldVdst=old_vdst, src0=src0, src1=src1, scale=scale, dstLoHiSel=dst_lo_hi_sel, loc=loc, ip=ip).result

@_ods_cext.register_operation(_Dialect)
class CvtScaleF32SrBf8BF16Op(_ods_ir.OpView):
  r"""
  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`.
  """

  OPERATION_NAME = "rocdl.cvt.scalef32.sr.bf8.bf16"

  _ODS_REGIONS = (0, True)

  def __init__(self, res: _ods_ir.Type, oldVdst: _ods_ir.Value[_ods_ir.IntegerType], src0: _ods_ir.Value, seed: _ods_ir.Value[_ods_ir.IntegerType], scale: _ods_ir.Value[_ods_ir.FloatType], dstSelIndex: _Union[int, _ods_ir.IntegerAttr], *, loc: _Optional[_ods_ir.Location] = None, ip: _Optional[_ods_ir.InsertionPoint] = None):
    operands = []
    attributes = {}
    regions = None
    operands.append(oldVdst)
    operands.append(src0)
    operands.append(seed)
    operands.append(scale)
    _ods_context = _ods_get_default_loc_context(loc)
    attributes["dstSelIndex"] = (dstSelIndex if (
    isinstance(dstSelIndex, _ods_ir.Attribute) or
    not _ods_ir.AttrBuilder.contains('I32Attr')) else
      _ods_ir.AttrBuilder.get('I32Attr')(dstSelIndex, context=_ods_context))
    results = []
    results.append(res)
    _ods_successors = None
    super().__init__(self.OPERATION_NAME, self._ODS_REGIONS, self._ODS_OPERAND_SEGMENTS, self._ODS_RESULT_SEGMENTS, attributes=attributes, results=results, operands=operands, successors=_ods_successors, regions=regions, loc=loc, ip=ip)

  @builtins.property
  def oldVdst(self) -> _ods_ir.Value[_ods_ir.IntegerType]:
    return self.operation.operands[0]

  @builtins.property
  def src0(self) -> _ods_ir.Value:
    return self.operation.operands[1]

  @builtins.property
  def seed(self) -> _ods_ir.Value[_ods_ir.IntegerType]:
    return self.operation.operands[2]

  @builtins.property
  def scale(self) -> _ods_ir.Value[_ods_ir.FloatType]:
    return self.operation.operands[3]

  @builtins.property
  def dstSelIndex(self) -> _ods_ir.IntegerAttr:
    return self.operation.attributes["dstSelIndex"]

  @dstSelIndex.setter
  def dstSelIndex(self, value: _ods_ir.IntegerAttr):
    if value is None:
      raise ValueError("'None' not allowed as value for mandatory attributes")
    self.operation.attributes["dstSelIndex"] = value

  @builtins.property
  def res(self) -> _ods_ir.OpResult[_ods_ir.IntegerType]:
    return self.operation.results[0]

@_ods_cext.register_op_adaptor(CvtScaleF32SrBf8BF16Op)
class CvtScaleF32SrBf8BF16OpAdaptor(_ods_ir.OpAdaptor):
  OPERATION_NAME = "rocdl.cvt.scalef32.sr.bf8.bf16"

  @builtins.property
  def oldVdst(self) -> _ods_ir.Value[_ods_ir.IntegerType]:
    return self.operands[0]

  @builtins.property
  def src0(self) -> _ods_ir.Value:
    return self.operands[1]

  @builtins.property
  def seed(self) -> _ods_ir.Value[_ods_ir.IntegerType]:
    return self.operands[2]

  @builtins.property
  def scale(self) -> _ods_ir.Value[_ods_ir.FloatType]:
    return self.operands[3]

  @builtins.property
  def dstSelIndex(self) -> _ods_ir.IntegerAttr:
    return self.attributes["dstSelIndex"]

def cvt_scalef32_sr_bf8_bf16(res: _ods_ir.Type, old_vdst: _ods_ir.Value[_ods_ir.IntegerType], src0: _ods_ir.Value, seed: _ods_ir.Value[_ods_ir.IntegerType], scale: _ods_ir.Value[_ods_ir.FloatType], dst_sel_index: _Union[int, _ods_ir.IntegerAttr], *, loc: _Optional[_ods_ir.Location] = None, ip: _Optional[_ods_ir.InsertionPoint] = None) -> _ods_ir.OpResult[_ods_ir.IntegerType]:
  return CvtScaleF32SrBf8BF16Op(res=res, oldVdst=old_vdst, src0=src0, seed=seed, scale=scale, dstSelIndex=dst_sel_index, loc=loc, ip=ip).result

@_ods_cext.register_operation(_Dialect)
class CvtScaleF32SrBf8F16Op(_ods_ir.OpView):
  r"""
  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`.
  """

  OPERATION_NAME = "rocdl.cvt.scalef32.sr.bf8.f16"

  _ODS_REGIONS = (0, True)

  def __init__(self, res: _ods_ir.Type, oldVdst: _ods_ir.Value[_ods_ir.IntegerType], src0: _ods_ir.Value[_ods_ir.FloatType], seed: _ods_ir.Value[_ods_ir.IntegerType], scale: _ods_ir.Value[_ods_ir.FloatType], dstSelIndex: _Union[int, _ods_ir.IntegerAttr], *, loc: _Optional[_ods_ir.Location] = None, ip: _Optional[_ods_ir.InsertionPoint] = None):
    operands = []
    attributes = {}
    regions = None
    operands.append(oldVdst)
    operands.append(src0)
    operands.append(seed)
    operands.append(scale)
    _ods_context = _ods_get_default_loc_context(loc)
    attributes["dstSelIndex"] = (dstSelIndex if (
    isinstance(dstSelIndex, _ods_ir.Attribute) or
    not _ods_ir.AttrBuilder.contains('I32Attr')) else
      _ods_ir.AttrBuilder.get('I32Attr')(dstSelIndex, context=_ods_context))
    results = []
    results.append(res)
    _ods_successors = None
    super().__init__(self.OPERATION_NAME, self._ODS_REGIONS, self._ODS_OPERAND_SEGMENTS, self._ODS_RESULT_SEGMENTS, attributes=attributes, results=results, operands=operands, successors=_ods_successors, regions=regions, loc=loc, ip=ip)

  @builtins.property
  def oldVdst(self) -> _ods_ir.Value[_ods_ir.IntegerType]:
    return self.operation.operands[0]

  @builtins.property
  def src0(self) -> _ods_ir.Value[_ods_ir.FloatType]:
    return self.operation.operands[1]

  @builtins.property
  def seed(self) -> _ods_ir.Value[_ods_ir.IntegerType]:
    return self.operation.operands[2]

  @builtins.property
  def scale(self) -> _ods_ir.Value[_ods_ir.FloatType]:
    return self.operation.operands[3]

  @builtins.property
  def dstSelIndex(self) -> _ods_ir.IntegerAttr:
    return self.operation.attributes["dstSelIndex"]

  @dstSelIndex.setter
  def dstSelIndex(self, value: _ods_ir.IntegerAttr):
    if value is None:
      raise ValueError("'None' not allowed as value for mandatory attributes")
    self.operation.attributes["dstSelIndex"] = value

  @builtins.property
  def res(self) -> _ods_ir.OpResult[_ods_ir.IntegerType]:
    return self.operation.results[0]

@_ods_cext.register_op_adaptor(CvtScaleF32SrBf8F16Op)
class CvtScaleF32SrBf8F16OpAdaptor(_ods_ir.OpAdaptor):
  OPERATION_NAME = "rocdl.cvt.scalef32.sr.bf8.f16"

  @builtins.property
  def oldVdst(self) -> _ods_ir.Value[_ods_ir.IntegerType]:
    return self.operands[0]

  @builtins.property
  def src0(self) -> _ods_ir.Value[_ods_ir.FloatType]:
    return self.operands[1]

  @builtins.property
  def seed(self) -> _ods_ir.Value[_ods_ir.IntegerType]:
    return self.operands[2]

  @builtins.property
  def scale(self) -> _ods_ir.Value[_ods_ir.FloatType]:
    return self.operands[3]

  @builtins.property
  def dstSelIndex(self) -> _ods_ir.IntegerAttr:
    return self.attributes["dstSelIndex"]

def cvt_scalef32_sr_bf8_f16(res: _ods_ir.Type, old_vdst: _ods_ir.Value[_ods_ir.IntegerType], src0: _ods_ir.Value[_ods_ir.FloatType], seed: _ods_ir.Value[_ods_ir.IntegerType], scale: _ods_ir.Value[_ods_ir.FloatType], dst_sel_index: _Union[int, _ods_ir.IntegerAttr], *, loc: _Optional[_ods_ir.Location] = None, ip: _Optional[_ods_ir.InsertionPoint] = None) -> _ods_ir.OpResult[_ods_ir.IntegerType]:
  return CvtScaleF32SrBf8F16Op(res=res, oldVdst=old_vdst, src0=src0, seed=seed, scale=scale, dstSelIndex=dst_sel_index, loc=loc, ip=ip).result

@_ods_cext.register_operation(_Dialect)
class CvtScaleF32SrBf8F32Op(_ods_ir.OpView):
  r"""
  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`.
  """

  OPERATION_NAME = "rocdl.cvt.scalef32.sr.bf8.f32"

  _ODS_REGIONS = (0, True)

  def __init__(self, res: _ods_ir.Type, oldVdst: _ods_ir.Value[_ods_ir.IntegerType], src0: _ods_ir.Value[_ods_ir.FloatType], seed: _ods_ir.Value[_ods_ir.IntegerType], scale: _ods_ir.Value[_ods_ir.FloatType], dstSelIndex: _Union[int, _ods_ir.IntegerAttr], *, loc: _Optional[_ods_ir.Location] = None, ip: _Optional[_ods_ir.InsertionPoint] = None):
    operands = []
    attributes = {}
    regions = None
    operands.append(oldVdst)
    operands.append(src0)
    operands.append(seed)
    operands.append(scale)
    _ods_context = _ods_get_default_loc_context(loc)
    attributes["dstSelIndex"] = (dstSelIndex if (
    isinstance(dstSelIndex, _ods_ir.Attribute) or
    not _ods_ir.AttrBuilder.contains('I32Attr')) else
      _ods_ir.AttrBuilder.get('I32Attr')(dstSelIndex, context=_ods_context))
    results = []
    results.append(res)
    _ods_successors = None
    super().__init__(self.OPERATION_NAME, self._ODS_REGIONS, self._ODS_OPERAND_SEGMENTS, self._ODS_RESULT_SEGMENTS, attributes=attributes, results=results, operands=operands, successors=_ods_successors, regions=regions, loc=loc, ip=ip)

  @builtins.property
  def oldVdst(self) -> _ods_ir.Value[_ods_ir.IntegerType]:
    return self.operation.operands[0]

  @builtins.property
  def src0(self) -> _ods_ir.Value[_ods_ir.FloatType]:
    return self.operation.operands[1]

  @builtins.property
  def seed(self) -> _ods_ir.Value[_ods_ir.IntegerType]:
    return self.operation.operands[2]

  @builtins.property
  def scale(self) -> _ods_ir.Value[_ods_ir.FloatType]:
    return self.operation.operands[3]

  @builtins.property
  def dstSelIndex(self) -> _ods_ir.IntegerAttr:
    return self.operation.attributes["dstSelIndex"]

  @dstSelIndex.setter
  def dstSelIndex(self, value: _ods_ir.IntegerAttr):
    if value is None:
      raise ValueError("'None' not allowed as value for mandatory attributes")
    self.operation.attributes["dstSelIndex"] = value

  @builtins.property
  def res(self) -> _ods_ir.OpResult[_ods_ir.IntegerType]:
    return self.operation.results[0]

@_ods_cext.register_op_adaptor(CvtScaleF32SrBf8F32Op)
class CvtScaleF32SrBf8F32OpAdaptor(_ods_ir.OpAdaptor):
  OPERATION_NAME = "rocdl.cvt.scalef32.sr.bf8.f32"

  @builtins.property
  def oldVdst(self) -> _ods_ir.Value[_ods_ir.IntegerType]:
    return self.operands[0]

  @builtins.property
  def src0(self) -> _ods_ir.Value[_ods_ir.FloatType]:
    return self.operands[1]

  @builtins.property
  def seed(self) -> _ods_ir.Value[_ods_ir.IntegerType]:
    return self.operands[2]

  @builtins.property
  def scale(self) -> _ods_ir.Value[_ods_ir.FloatType]:
    return self.operands[3]

  @builtins.property
  def dstSelIndex(self) -> _ods_ir.IntegerAttr:
    return self.attributes["dstSelIndex"]

def cvt_scalef32_sr_bf8_f32(res: _ods_ir.Type, old_vdst: _ods_ir.Value[_ods_ir.IntegerType], src0: _ods_ir.Value[_ods_ir.FloatType], seed: _ods_ir.Value[_ods_ir.IntegerType], scale: _ods_ir.Value[_ods_ir.FloatType], dst_sel_index: _Union[int, _ods_ir.IntegerAttr], *, loc: _Optional[_ods_ir.Location] = None, ip: _Optional[_ods_ir.InsertionPoint] = None) -> _ods_ir.OpResult[_ods_ir.IntegerType]:
  return CvtScaleF32SrBf8F32Op(res=res, oldVdst=old_vdst, src0=src0, seed=seed, scale=scale, dstSelIndex=dst_sel_index, loc=loc, ip=ip).result

@_ods_cext.register_operation(_Dialect)
class CvtScaleF32SrFp8BF16Op(_ods_ir.OpView):
  r"""
  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`.
  """

  OPERATION_NAME = "rocdl.cvt.scalef32.sr.fp8.bf16"

  _ODS_REGIONS = (0, True)

  def __init__(self, res: _ods_ir.Type, oldVdst: _ods_ir.Value[_ods_ir.IntegerType], src0: _ods_ir.Value, seed: _ods_ir.Value[_ods_ir.IntegerType], scale: _ods_ir.Value[_ods_ir.FloatType], dstSelIndex: _Union[int, _ods_ir.IntegerAttr], *, loc: _Optional[_ods_ir.Location] = None, ip: _Optional[_ods_ir.InsertionPoint] = None):
    operands = []
    attributes = {}
    regions = None
    operands.append(oldVdst)
    operands.append(src0)
    operands.append(seed)
    operands.append(scale)
    _ods_context = _ods_get_default_loc_context(loc)
    attributes["dstSelIndex"] = (dstSelIndex if (
    isinstance(dstSelIndex, _ods_ir.Attribute) or
    not _ods_ir.AttrBuilder.contains('I32Attr')) else
      _ods_ir.AttrBuilder.get('I32Attr')(dstSelIndex, context=_ods_context))
    results = []
    results.append(res)
    _ods_successors = None
    super().__init__(self.OPERATION_NAME, self._ODS_REGIONS, self._ODS_OPERAND_SEGMENTS, self._ODS_RESULT_SEGMENTS, attributes=attributes, results=results, operands=operands, successors=_ods_successors, regions=regions, loc=loc, ip=ip)

  @builtins.property
  def oldVdst(self) -> _ods_ir.Value[_ods_ir.IntegerType]:
    return self.operation.operands[0]

  @builtins.property
  def src0(self) -> _ods_ir.Value:
    return self.operation.operands[1]

  @builtins.property
  def seed(self) -> _ods_ir.Value[_ods_ir.IntegerType]:
    return self.operation.operands[2]

  @builtins.property
  def scale(self) -> _ods_ir.Value[_ods_ir.FloatType]:
    return self.operation.operands[3]

  @builtins.property
  def dstSelIndex(self) -> _ods_ir.IntegerAttr:
    return self.operation.attributes["dstSelIndex"]

  @dstSelIndex.setter
  def dstSelIndex(self, value: _ods_ir.IntegerAttr):
    if value is None:
      raise ValueError("'None' not allowed as value for mandatory attributes")
    self.operation.attributes["dstSelIndex"] = value

  @builtins.property
  def res(self) -> _ods_ir.OpResult[_ods_ir.IntegerType]:
    return self.operation.results[0]

@_ods_cext.register_op_adaptor(CvtScaleF32SrFp8BF16Op)
class CvtScaleF32SrFp8BF16OpAdaptor(_ods_ir.OpAdaptor):
  OPERATION_NAME = "rocdl.cvt.scalef32.sr.fp8.bf16"

  @builtins.property
  def oldVdst(self) -> _ods_ir.Value[_ods_ir.IntegerType]:
    return self.operands[0]

  @builtins.property
  def src0(self) -> _ods_ir.Value:
    return self.operands[1]

  @builtins.property
  def seed(self) -> _ods_ir.Value[_ods_ir.IntegerType]:
    return self.operands[2]

  @builtins.property
  def scale(self) -> _ods_ir.Value[_ods_ir.FloatType]:
    return self.operands[3]

  @builtins.property
  def dstSelIndex(self) -> _ods_ir.IntegerAttr:
    return self.attributes["dstSelIndex"]

def cvt_scalef32_sr_fp8_bf16(res: _ods_ir.Type, old_vdst: _ods_ir.Value[_ods_ir.IntegerType], src0: _ods_ir.Value, seed: _ods_ir.Value[_ods_ir.IntegerType], scale: _ods_ir.Value[_ods_ir.FloatType], dst_sel_index: _Union[int, _ods_ir.IntegerAttr], *, loc: _Optional[_ods_ir.Location] = None, ip: _Optional[_ods_ir.InsertionPoint] = None) -> _ods_ir.OpResult[_ods_ir.IntegerType]:
  return CvtScaleF32SrFp8BF16Op(res=res, oldVdst=old_vdst, src0=src0, seed=seed, scale=scale, dstSelIndex=dst_sel_index, loc=loc, ip=ip).result

@_ods_cext.register_operation(_Dialect)
class CvtScaleF32SrFp8F16Op(_ods_ir.OpView):
  r"""
  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`.
  """

  OPERATION_NAME = "rocdl.cvt.scalef32.sr.fp8.f16"

  _ODS_REGIONS = (0, True)

  def __init__(self, res: _ods_ir.Type, oldVdst: _ods_ir.Value[_ods_ir.IntegerType], src0: _ods_ir.Value[_ods_ir.FloatType], seed: _ods_ir.Value[_ods_ir.IntegerType], scale: _ods_ir.Value[_ods_ir.FloatType], dstSelIndex: _Union[int, _ods_ir.IntegerAttr], *, loc: _Optional[_ods_ir.Location] = None, ip: _Optional[_ods_ir.InsertionPoint] = None):
    operands = []
    attributes = {}
    regions = None
    operands.append(oldVdst)
    operands.append(src0)
    operands.append(seed)
    operands.append(scale)
    _ods_context = _ods_get_default_loc_context(loc)
    attributes["dstSelIndex"] = (dstSelIndex if (
    isinstance(dstSelIndex, _ods_ir.Attribute) or
    not _ods_ir.AttrBuilder.contains('I32Attr')) else
      _ods_ir.AttrBuilder.get('I32Attr')(dstSelIndex, context=_ods_context))
    results = []
    results.append(res)
    _ods_successors = None
    super().__init__(self.OPERATION_NAME, self._ODS_REGIONS, self._ODS_OPERAND_SEGMENTS, self._ODS_RESULT_SEGMENTS, attributes=attributes, results=results, operands=operands, successors=_ods_successors, regions=regions, loc=loc, ip=ip)

  @builtins.property
  def oldVdst(self) -> _ods_ir.Value[_ods_ir.IntegerType]:
    return self.operation.operands[0]

  @builtins.property
  def src0(self) -> _ods_ir.Value[_ods_ir.FloatType]:
    return self.operation.operands[1]

  @builtins.property
  def seed(self) -> _ods_ir.Value[_ods_ir.IntegerType]:
    return self.operation.operands[2]

  @builtins.property
  def scale(self) -> _ods_ir.Value[_ods_ir.FloatType]:
    return self.operation.operands[3]

  @builtins.property
  def dstSelIndex(self) -> _ods_ir.IntegerAttr:
    return self.operation.attributes["dstSelIndex"]

  @dstSelIndex.setter
  def dstSelIndex(self, value: _ods_ir.IntegerAttr):
    if value is None:
      raise ValueError("'None' not allowed as value for mandatory attributes")
    self.operation.attributes["dstSelIndex"] = value

  @builtins.property
  def res(self) -> _ods_ir.OpResult[_ods_ir.IntegerType]:
    return self.operation.results[0]

@_ods_cext.register_op_adaptor(CvtScaleF32SrFp8F16Op)
class CvtScaleF32SrFp8F16OpAdaptor(_ods_ir.OpAdaptor):
  OPERATION_NAME = "rocdl.cvt.scalef32.sr.fp8.f16"

  @builtins.property
  def oldVdst(self) -> _ods_ir.Value[_ods_ir.IntegerType]:
    return self.operands[0]

  @builtins.property
  def src0(self) -> _ods_ir.Value[_ods_ir.FloatType]:
    return self.operands[1]

  @builtins.property
  def seed(self) -> _ods_ir.Value[_ods_ir.IntegerType]:
    return self.operands[2]

  @builtins.property
  def scale(self) -> _ods_ir.Value[_ods_ir.FloatType]:
    return self.operands[3]

  @builtins.property
  def dstSelIndex(self) -> _ods_ir.IntegerAttr:
    return self.attributes["dstSelIndex"]

def cvt_scalef32_sr_fp8_f16(res: _ods_ir.Type, old_vdst: _ods_ir.Value[_ods_ir.IntegerType], src0: _ods_ir.Value[_ods_ir.FloatType], seed: _ods_ir.Value[_ods_ir.IntegerType], scale: _ods_ir.Value[_ods_ir.FloatType], dst_sel_index: _Union[int, _ods_ir.IntegerAttr], *, loc: _Optional[_ods_ir.Location] = None, ip: _Optional[_ods_ir.InsertionPoint] = None) -> _ods_ir.OpResult[_ods_ir.IntegerType]:
  return CvtScaleF32SrFp8F16Op(res=res, oldVdst=old_vdst, src0=src0, seed=seed, scale=scale, dstSelIndex=dst_sel_index, loc=loc, ip=ip).result

@_ods_cext.register_operation(_Dialect)
class CvtScaleF32SrFp8F32Op(_ods_ir.OpView):
  r"""
  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`.
  """

  OPERATION_NAME = "rocdl.cvt.scalef32.sr.fp8.f32"

  _ODS_REGIONS = (0, True)

  def __init__(self, res: _ods_ir.Type, oldVdst: _ods_ir.Value[_ods_ir.IntegerType], src0: _ods_ir.Value[_ods_ir.FloatType], seed: _ods_ir.Value[_ods_ir.IntegerType], scale: _ods_ir.Value[_ods_ir.FloatType], dstSelIndex: _Union[int, _ods_ir.IntegerAttr], *, loc: _Optional[_ods_ir.Location] = None, ip: _Optional[_ods_ir.InsertionPoint] = None):
    operands = []
    attributes = {}
    regions = None
    operands.append(oldVdst)
    operands.append(src0)
    operands.append(seed)
    operands.append(scale)
    _ods_context = _ods_get_default_loc_context(loc)
    attributes["dstSelIndex"] = (dstSelIndex if (
    isinstance(dstSelIndex, _ods_ir.Attribute) or
    not _ods_ir.AttrBuilder.contains('I32Attr')) else
      _ods_ir.AttrBuilder.get('I32Attr')(dstSelIndex, context=_ods_context))
    results = []
    results.append(res)
    _ods_successors = None
    super().__init__(self.OPERATION_NAME, self._ODS_REGIONS, self._ODS_OPERAND_SEGMENTS, self._ODS_RESULT_SEGMENTS, attributes=attributes, results=results, operands=operands, successors=_ods_successors, regions=regions, loc=loc, ip=ip)

  @builtins.property
  def oldVdst(self) -> _ods_ir.Value[_ods_ir.IntegerType]:
    return self.operation.operands[0]

  @builtins.property
  def src0(self) -> _ods_ir.Value[_ods_ir.FloatType]:
    return self.operation.operands[1]

  @builtins.property
  def seed(self) -> _ods_ir.Value[_ods_ir.IntegerType]:
    return self.operation.operands[2]

  @builtins.property
  def scale(self) -> _ods_ir.Value[_ods_ir.FloatType]:
    return self.operation.operands[3]

  @builtins.property
  def dstSelIndex(self) -> _ods_ir.IntegerAttr:
    return self.operation.attributes["dstSelIndex"]

  @dstSelIndex.setter
  def dstSelIndex(self, value: _ods_ir.IntegerAttr):
    if value is None:
      raise ValueError("'None' not allowed as value for mandatory attributes")
    self.operation.attributes["dstSelIndex"] = value

  @builtins.property
  def res(self) -> _ods_ir.OpResult[_ods_ir.IntegerType]:
    return self.operation.results[0]

@_ods_cext.register_op_adaptor(CvtScaleF32SrFp8F32Op)
class CvtScaleF32SrFp8F32OpAdaptor(_ods_ir.OpAdaptor):
  OPERATION_NAME = "rocdl.cvt.scalef32.sr.fp8.f32"

  @builtins.property
  def oldVdst(self) -> _ods_ir.Value[_ods_ir.IntegerType]:
    return self.operands[0]

  @builtins.property
  def src0(self) -> _ods_ir.Value[_ods_ir.FloatType]:
    return self.operands[1]

  @builtins.property
  def seed(self) -> _ods_ir.Value[_ods_ir.IntegerType]:
    return self.operands[2]

  @builtins.property
  def scale(self) -> _ods_ir.Value[_ods_ir.FloatType]:
    return self.operands[3]

  @builtins.property
  def dstSelIndex(self) -> _ods_ir.IntegerAttr:
    return self.attributes["dstSelIndex"]

def cvt_scalef32_sr_fp8_f32(res: _ods_ir.Type, old_vdst: _ods_ir.Value[_ods_ir.IntegerType], src0: _ods_ir.Value[_ods_ir.FloatType], seed: _ods_ir.Value[_ods_ir.IntegerType], scale: _ods_ir.Value[_ods_ir.FloatType], dst_sel_index: _Union[int, _ods_ir.IntegerAttr], *, loc: _Optional[_ods_ir.Location] = None, ip: _Optional[_ods_ir.InsertionPoint] = None) -> _ods_ir.OpResult[_ods_ir.IntegerType]:
  return CvtScaleF32SrFp8F32Op(res=res, oldVdst=old_vdst, src0=src0, seed=seed, scale=scale, dstSelIndex=dst_sel_index, loc=loc, ip=ip).result

@_ods_cext.register_operation(_Dialect)
class CvtScaleF32SrPk8Bf8Bf16Op(_ods_ir.OpView):
  r"""
  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.
  """

  OPERATION_NAME = "rocdl.cvt.scalef32.sr.pk8.bf8.bf16"

  _ODS_REGIONS = (0, True)

  def __init__(self, res: _ods_ir.Type, src: _ods_ir.Value[_ods_ir.VectorType], seed: _ods_ir.Value[_ods_ir.IntegerType], scale: _ods_ir.Value[_ods_ir.FloatType], *, loc: _Optional[_ods_ir.Location] = None, ip: _Optional[_ods_ir.InsertionPoint] = None):
    operands = []
    attributes = {}
    regions = None
    operands.append(src)
    operands.append(seed)
    operands.append(scale)
    _ods_context = _ods_get_default_loc_context(loc)
    results = []
    results.append(res)
    _ods_successors = None
    super().__init__(self.OPERATION_NAME, self._ODS_REGIONS, self._ODS_OPERAND_SEGMENTS, self._ODS_RESULT_SEGMENTS, attributes=attributes, results=results, operands=operands, successors=_ods_successors, regions=regions, loc=loc, ip=ip)

  @builtins.property
  def src(self) -> _ods_ir.Value[_ods_ir.VectorType]:
    return self.operation.operands[0]

  @builtins.property
  def seed(self) -> _ods_ir.Value[_ods_ir.IntegerType]:
    return self.operation.operands[1]

  @builtins.property
  def scale(self) -> _ods_ir.Value[_ods_ir.FloatType]:
    return self.operation.operands[2]

  @builtins.property
  def res(self) -> _ods_ir.OpResult[_ods_ir.VectorType]:
    return self.operation.results[0]

@_ods_cext.register_op_adaptor(CvtScaleF32SrPk8Bf8Bf16Op)
class CvtScaleF32SrPk8Bf8Bf16OpAdaptor(_ods_ir.OpAdaptor):
  OPERATION_NAME = "rocdl.cvt.scalef32.sr.pk8.bf8.bf16"

  @builtins.property
  def src(self) -> _ods_ir.Value[_ods_ir.VectorType]:
    return self.operands[0]

  @builtins.property
  def seed(self) -> _ods_ir.Value[_ods_ir.IntegerType]:
    return self.operands[1]

  @builtins.property
  def scale(self) -> _ods_ir.Value[_ods_ir.FloatType]:
    return self.operands[2]

def cvt_scalef32_sr_pk8_bf8_bf16(res: _ods_ir.Type, src: _ods_ir.Value[_ods_ir.VectorType], seed: _ods_ir.Value[_ods_ir.IntegerType], scale: _ods_ir.Value[_ods_ir.FloatType], *, loc: _Optional[_ods_ir.Location] = None, ip: _Optional[_ods_ir.InsertionPoint] = None) -> _ods_ir.OpResult[_ods_ir.VectorType]:
  return CvtScaleF32SrPk8Bf8Bf16Op(res=res, src=src, seed=seed, scale=scale, loc=loc, ip=ip).result

@_ods_cext.register_operation(_Dialect)
class CvtScaleF32SrPk8Bf8F16Op(_ods_ir.OpView):
  r"""
  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.
  """

  OPERATION_NAME = "rocdl.cvt.scalef32.sr.pk8.bf8.f16"

  _ODS_REGIONS = (0, True)

  def __init__(self, res: _ods_ir.Type, src: _ods_ir.Value[_ods_ir.VectorType], seed: _ods_ir.Value[_ods_ir.IntegerType], scale: _ods_ir.Value[_ods_ir.FloatType], *, loc: _Optional[_ods_ir.Location] = None, ip: _Optional[_ods_ir.InsertionPoint] = None):
    operands = []
    attributes = {}
    regions = None
    operands.append(src)
    operands.append(seed)
    operands.append(scale)
    _ods_context = _ods_get_default_loc_context(loc)
    results = []
    results.append(res)
    _ods_successors = None
    super().__init__(self.OPERATION_NAME, self._ODS_REGIONS, self._ODS_OPERAND_SEGMENTS, self._ODS_RESULT_SEGMENTS, attributes=attributes, results=results, operands=operands, successors=_ods_successors, regions=regions, loc=loc, ip=ip)

  @builtins.property
  def src(self) -> _ods_ir.Value[_ods_ir.VectorType]:
    return self.operation.operands[0]

  @builtins.property
  def seed(self) -> _ods_ir.Value[_ods_ir.IntegerType]:
    return self.operation.operands[1]

  @builtins.property
  def scale(self) -> _ods_ir.Value[_ods_ir.FloatType]:
    return self.operation.operands[2]

  @builtins.property
  def res(self) -> _ods_ir.OpResult[_ods_ir.VectorType]:
    return self.operation.results[0]

@_ods_cext.register_op_adaptor(CvtScaleF32SrPk8Bf8F16Op)
class CvtScaleF32SrPk8Bf8F16OpAdaptor(_ods_ir.OpAdaptor):
  OPERATION_NAME = "rocdl.cvt.scalef32.sr.pk8.bf8.f16"

  @builtins.property
  def src(self) -> _ods_ir.Value[_ods_ir.VectorType]:
    return self.operands[0]

  @builtins.property
  def seed(self) -> _ods_ir.Value[_ods_ir.IntegerType]:
    return self.operands[1]

  @builtins.property
  def scale(self) -> _ods_ir.Value[_ods_ir.FloatType]:
    return self.operands[2]

def cvt_scalef32_sr_pk8_bf8_f16(res: _ods_ir.Type, src: _ods_ir.Value[_ods_ir.VectorType], seed: _ods_ir.Value[_ods_ir.IntegerType], scale: _ods_ir.Value[_ods_ir.FloatType], *, loc: _Optional[_ods_ir.Location] = None, ip: _Optional[_ods_ir.InsertionPoint] = None) -> _ods_ir.OpResult[_ods_ir.VectorType]:
  return CvtScaleF32SrPk8Bf8F16Op(res=res, src=src, seed=seed, scale=scale, loc=loc, ip=ip).result

@_ods_cext.register_operation(_Dialect)
class CvtScaleF32SrPk8Bf8F32Op(_ods_ir.OpView):
  r"""
  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.
  """

  OPERATION_NAME = "rocdl.cvt.scalef32.sr.pk8.bf8.f32"

  _ODS_REGIONS = (0, True)

  def __init__(self, res: _ods_ir.Type, src: _ods_ir.Value[_ods_ir.VectorType], seed: _ods_ir.Value[_ods_ir.IntegerType], scale: _ods_ir.Value[_ods_ir.FloatType], *, loc: _Optional[_ods_ir.Location] = None, ip: _Optional[_ods_ir.InsertionPoint] = None):
    operands = []
    attributes = {}
    regions = None
    operands.append(src)
    operands.append(seed)
    operands.append(scale)
    _ods_context = _ods_get_default_loc_context(loc)
    results = []
    results.append(res)
    _ods_successors = None
    super().__init__(self.OPERATION_NAME, self._ODS_REGIONS, self._ODS_OPERAND_SEGMENTS, self._ODS_RESULT_SEGMENTS, attributes=attributes, results=results, operands=operands, successors=_ods_successors, regions=regions, loc=loc, ip=ip)

  @builtins.property
  def src(self) -> _ods_ir.Value[_ods_ir.VectorType]:
    return self.operation.operands[0]

  @builtins.property
  def seed(self) -> _ods_ir.Value[_ods_ir.IntegerType]:
    return self.operation.operands[1]

  @builtins.property
  def scale(self) -> _ods_ir.Value[_ods_ir.FloatType]:
    return self.operation.operands[2]

  @builtins.property
  def res(self) -> _ods_ir.OpResult[_ods_ir.VectorType]:
    return self.operation.results[0]

@_ods_cext.register_op_adaptor(CvtScaleF32SrPk8Bf8F32Op)
class CvtScaleF32SrPk8Bf8F32OpAdaptor(_ods_ir.OpAdaptor):
  OPERATION_NAME = "rocdl.cvt.scalef32.sr.pk8.bf8.f32"

  @builtins.property
  def src(self) -> _ods_ir.Value[_ods_ir.VectorType]:
    return self.operands[0]

  @builtins.property
  def seed(self) -> _ods_ir.Value[_ods_ir.IntegerType]:
    return self.operands[1]

  @builtins.property
  def scale(self) -> _ods_ir.Value[_ods_ir.FloatType]:
    return self.operands[2]

def cvt_scalef32_sr_pk8_bf8_f32(res: _ods_ir.Type, src: _ods_ir.Value[_ods_ir.VectorType], seed: _ods_ir.Value[_ods_ir.IntegerType], scale: _ods_ir.Value[_ods_ir.FloatType], *, loc: _Optional[_ods_ir.Location] = None, ip: _Optional[_ods_ir.InsertionPoint] = None) -> _ods_ir.OpResult[_ods_ir.VectorType]:
  return CvtScaleF32SrPk8Bf8F32Op(res=res, src=src, seed=seed, scale=scale, loc=loc, ip=ip).result

@_ods_cext.register_operation(_Dialect)
class CvtScaleF32SrPk8Fp4Bf16Op(_ods_ir.OpView):
  r"""
  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.
  """

  OPERATION_NAME = "rocdl.cvt.scalef32.sr.pk8.fp4.bf16"

  _ODS_REGIONS = (0, True)

  def __init__(self, res: _ods_ir.Type, src: _ods_ir.Value[_ods_ir.VectorType], seed: _ods_ir.Value[_ods_ir.IntegerType], scale: _ods_ir.Value[_ods_ir.FloatType], *, loc: _Optional[_ods_ir.Location] = None, ip: _Optional[_ods_ir.InsertionPoint] = None):
    operands = []
    attributes = {}
    regions = None
    operands.append(src)
    operands.append(seed)
    operands.append(scale)
    _ods_context = _ods_get_default_loc_context(loc)
    results = []
    results.append(res)
    _ods_successors = None
    super().__init__(self.OPERATION_NAME, self._ODS_REGIONS, self._ODS_OPERAND_SEGMENTS, self._ODS_RESULT_SEGMENTS, attributes=attributes, results=results, operands=operands, successors=_ods_successors, regions=regions, loc=loc, ip=ip)

  @builtins.property
  def src(self) -> _ods_ir.Value[_ods_ir.VectorType]:
    return self.operation.operands[0]

  @builtins.property
  def seed(self) -> _ods_ir.Value[_ods_ir.IntegerType]:
    return self.operation.operands[1]

  @builtins.property
  def scale(self) -> _ods_ir.Value[_ods_ir.FloatType]:
    return self.operation.operands[2]

  @builtins.property
  def res(self) -> _ods_ir.OpResult[_ods_ir.IntegerType]:
    return self.operation.results[0]

@_ods_cext.register_op_adaptor(CvtScaleF32SrPk8Fp4Bf16Op)
class CvtScaleF32SrPk8Fp4Bf16OpAdaptor(_ods_ir.OpAdaptor):
  OPERATION_NAME = "rocdl.cvt.scalef32.sr.pk8.fp4.bf16"

  @builtins.property
  def src(self) -> _ods_ir.Value[_ods_ir.VectorType]:
    return self.operands[0]

  @builtins.property
  def seed(self) -> _ods_ir.Value[_ods_ir.IntegerType]:
    return self.operands[1]

  @builtins.property
  def scale(self) -> _ods_ir.Value[_ods_ir.FloatType]:
    return self.operands[2]

def cvt_scalef32_sr_pk8_fp4_bf16(res: _ods_ir.Type, src: _ods_ir.Value[_ods_ir.VectorType], seed: _ods_ir.Value[_ods_ir.IntegerType], scale: _ods_ir.Value[_ods_ir.FloatType], *, loc: _Optional[_ods_ir.Location] = None, ip: _Optional[_ods_ir.InsertionPoint] = None) -> _ods_ir.OpResult[_ods_ir.IntegerType]:
  return CvtScaleF32SrPk8Fp4Bf16Op(res=res, src=src, seed=seed, scale=scale, loc=loc, ip=ip).result

@_ods_cext.register_operation(_Dialect)
class CvtScaleF32SrPk8Fp4F16Op(_ods_ir.OpView):
  r"""
  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.
  """

  OPERATION_NAME = "rocdl.cvt.scalef32.sr.pk8.fp4.f16"

  _ODS_REGIONS = (0, True)

  def __init__(self, res: _ods_ir.Type, src: _ods_ir.Value[_ods_ir.VectorType], seed: _ods_ir.Value[_ods_ir.IntegerType], scale: _ods_ir.Value[_ods_ir.FloatType], *, loc: _Optional[_ods_ir.Location] = None, ip: _Optional[_ods_ir.InsertionPoint] = None):
    operands = []
    attributes = {}
    regions = None
    operands.append(src)
    operands.append(seed)
    operands.append(scale)
    _ods_context = _ods_get_default_loc_context(loc)
    results = []
    results.append(res)
    _ods_successors = None
    super().__init__(self.OPERATION_NAME, self._ODS_REGIONS, self._ODS_OPERAND_SEGMENTS, self._ODS_RESULT_SEGMENTS, attributes=attributes, results=results, operands=operands, successors=_ods_successors, regions=regions, loc=loc, ip=ip)

  @builtins.property
  def src(self) -> _ods_ir.Value[_ods_ir.VectorType]:
    return self.operation.operands[0]

  @builtins.property
  def seed(self) -> _ods_ir.Value[_ods_ir.IntegerType]:
    return self.operation.operands[1]

  @builtins.property
  def scale(self) -> _ods_ir.Value[_ods_ir.FloatType]:
    return self.operation.operands[2]

  @builtins.property
  def res(self) -> _ods_ir.OpResult[_ods_ir.IntegerType]:
    return self.operation.results[0]

@_ods_cext.register_op_adaptor(CvtScaleF32SrPk8Fp4F16Op)
class CvtScaleF32SrPk8Fp4F16OpAdaptor(_ods_ir.OpAdaptor):
  OPERATION_NAME = "rocdl.cvt.scalef32.sr.pk8.fp4.f16"

  @builtins.property
  def src(self) -> _ods_ir.Value[_ods_ir.VectorType]:
    return self.operands[0]

  @builtins.property
  def seed(self) -> _ods_ir.Value[_ods_ir.IntegerType]:
    return self.operands[1]

  @builtins.property
  def scale(self) -> _ods_ir.Value[_ods_ir.FloatType]:
    return self.operands[2]

def cvt_scalef32_sr_pk8_fp4_f16(res: _ods_ir.Type, src: _ods_ir.Value[_ods_ir.VectorType], seed: _ods_ir.Value[_ods_ir.IntegerType], scale: _ods_ir.Value[_ods_ir.FloatType], *, loc: _Optional[_ods_ir.Location] = None, ip: _Optional[_ods_ir.InsertionPoint] = None) -> _ods_ir.OpResult[_ods_ir.IntegerType]:
  return CvtScaleF32SrPk8Fp4F16Op(res=res, src=src, seed=seed, scale=scale, loc=loc, ip=ip).result

@_ods_cext.register_operation(_Dialect)
class CvtScaleF32SrPk8Fp4F32Op(_ods_ir.OpView):
  r"""
  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.
  """

  OPERATION_NAME = "rocdl.cvt.scalef32.sr.pk8.fp4.f32"

  _ODS_REGIONS = (0, True)

  def __init__(self, res: _ods_ir.Type, src: _ods_ir.Value[_ods_ir.VectorType], seed: _ods_ir.Value[_ods_ir.IntegerType], scale: _ods_ir.Value[_ods_ir.FloatType], *, loc: _Optional[_ods_ir.Location] = None, ip: _Optional[_ods_ir.InsertionPoint] = None):
    operands = []
    attributes = {}
    regions = None
    operands.append(src)
    operands.append(seed)
    operands.append(scale)
    _ods_context = _ods_get_default_loc_context(loc)
    results = []
    results.append(res)
    _ods_successors = None
    super().__init__(self.OPERATION_NAME, self._ODS_REGIONS, self._ODS_OPERAND_SEGMENTS, self._ODS_RESULT_SEGMENTS, attributes=attributes, results=results, operands=operands, successors=_ods_successors, regions=regions, loc=loc, ip=ip)

  @builtins.property
  def src(self) -> _ods_ir.Value[_ods_ir.VectorType]:
    return self.operation.operands[0]

  @builtins.property
  def seed(self) -> _ods_ir.Value[_ods_ir.IntegerType]:
    return self.operation.operands[1]

  @builtins.property
  def scale(self) -> _ods_ir.Value[_ods_ir.FloatType]:
    return self.operation.operands[2]

  @builtins.property
  def res(self) -> _ods_ir.OpResult[_ods_ir.IntegerType]:
    return self.operation.results[0]

@_ods_cext.register_op_adaptor(CvtScaleF32SrPk8Fp4F32Op)
class CvtScaleF32SrPk8Fp4F32OpAdaptor(_ods_ir.OpAdaptor):
  OPERATION_NAME = "rocdl.cvt.scalef32.sr.pk8.fp4.f32"

  @builtins.property
  def src(self) -> _ods_ir.Value[_ods_ir.VectorType]:
    return self.operands[0]

  @builtins.property
  def seed(self) -> _ods_ir.Value[_ods_ir.IntegerType]:
    return self.operands[1]

  @builtins.property
  def scale(self) -> _ods_ir.Value[_ods_ir.FloatType]:
    return self.operands[2]

def cvt_scalef32_sr_pk8_fp4_f32(res: _ods_ir.Type, src: _ods_ir.Value[_ods_ir.VectorType], seed: _ods_ir.Value[_ods_ir.IntegerType], scale: _ods_ir.Value[_ods_ir.FloatType], *, loc: _Optional[_ods_ir.Location] = None, ip: _Optional[_ods_ir.InsertionPoint] = None) -> _ods_ir.OpResult[_ods_ir.IntegerType]:
  return CvtScaleF32SrPk8Fp4F32Op(res=res, src=src, seed=seed, scale=scale, loc=loc, ip=ip).result

@_ods_cext.register_operation(_Dialect)
class CvtScaleF32SrPk8Fp8Bf16Op(_ods_ir.OpView):
  r"""
  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.
  """

  OPERATION_NAME = "rocdl.cvt.scalef32.sr.pk8.fp8.bf16"

  _ODS_REGIONS = (0, True)

  def __init__(self, res: _ods_ir.Type, src: _ods_ir.Value[_ods_ir.VectorType], seed: _ods_ir.Value[_ods_ir.IntegerType], scale: _ods_ir.Value[_ods_ir.FloatType], *, loc: _Optional[_ods_ir.Location] = None, ip: _Optional[_ods_ir.InsertionPoint] = None):
    operands = []
    attributes = {}
    regions = None
    operands.append(src)
    operands.append(seed)
    operands.append(scale)
    _ods_context = _ods_get_default_loc_context(loc)
    results = []
    results.append(res)
    _ods_successors = None
    super().__init__(self.OPERATION_NAME, self._ODS_REGIONS, self._ODS_OPERAND_SEGMENTS, self._ODS_RESULT_SEGMENTS, attributes=attributes, results=results, operands=operands, successors=_ods_successors, regions=regions, loc=loc, ip=ip)

  @builtins.property
  def src(self) -> _ods_ir.Value[_ods_ir.VectorType]:
    return self.operation.operands[0]

  @builtins.property
  def seed(self) -> _ods_ir.Value[_ods_ir.IntegerType]:
    return self.operation.operands[1]

  @builtins.property
  def scale(self) -> _ods_ir.Value[_ods_ir.FloatType]:
    return self.operation.operands[2]

  @builtins.property
  def res(self) -> _ods_ir.OpResult[_ods_ir.VectorType]:
    return self.operation.results[0]

@_ods_cext.register_op_adaptor(CvtScaleF32SrPk8Fp8Bf16Op)
class CvtScaleF32SrPk8Fp8Bf16OpAdaptor(_ods_ir.OpAdaptor):
  OPERATION_NAME = "rocdl.cvt.scalef32.sr.pk8.fp8.bf16"

  @builtins.property
  def src(self) -> _ods_ir.Value[_ods_ir.VectorType]:
    return self.operands[0]

  @builtins.property
  def seed(self) -> _ods_ir.Value[_ods_ir.IntegerType]:
    return self.operands[1]

  @builtins.property
  def scale(self) -> _ods_ir.Value[_ods_ir.FloatType]:
    return self.operands[2]

def cvt_scalef32_sr_pk8_fp8_bf16(res: _ods_ir.Type, src: _ods_ir.Value[_ods_ir.VectorType], seed: _ods_ir.Value[_ods_ir.IntegerType], scale: _ods_ir.Value[_ods_ir.FloatType], *, loc: _Optional[_ods_ir.Location] = None, ip: _Optional[_ods_ir.InsertionPoint] = None) -> _ods_ir.OpResult[_ods_ir.VectorType]:
  return CvtScaleF32SrPk8Fp8Bf16Op(res=res, src=src, seed=seed, scale=scale, loc=loc, ip=ip).result

@_ods_cext.register_operation(_Dialect)
class CvtScaleF32SrPk8Fp8F16Op(_ods_ir.OpView):
  r"""
  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.
  """

  OPERATION_NAME = "rocdl.cvt.scalef32.sr.pk8.fp8.f16"

  _ODS_REGIONS = (0, True)

  def __init__(self, res: _ods_ir.Type, src: _ods_ir.Value[_ods_ir.VectorType], seed: _ods_ir.Value[_ods_ir.IntegerType], scale: _ods_ir.Value[_ods_ir.FloatType], *, loc: _Optional[_ods_ir.Location] = None, ip: _Optional[_ods_ir.InsertionPoint] = None):
    operands = []
    attributes = {}
    regions = None
    operands.append(src)
    operands.append(seed)
    operands.append(scale)
    _ods_context = _ods_get_default_loc_context(loc)
    results = []
    results.append(res)
    _ods_successors = None
    super().__init__(self.OPERATION_NAME, self._ODS_REGIONS, self._ODS_OPERAND_SEGMENTS, self._ODS_RESULT_SEGMENTS, attributes=attributes, results=results, operands=operands, successors=_ods_successors, regions=regions, loc=loc, ip=ip)

  @builtins.property
  def src(self) -> _ods_ir.Value[_ods_ir.VectorType]:
    return self.operation.operands[0]

  @builtins.property
  def seed(self) -> _ods_ir.Value[_ods_ir.IntegerType]:
    return self.operation.operands[1]

  @builtins.property
  def scale(self) -> _ods_ir.Value[_ods_ir.FloatType]:
    return self.operation.operands[2]

  @builtins.property
  def res(self) -> _ods_ir.OpResult[_ods_ir.VectorType]:
    return self.operation.results[0]

@_ods_cext.register_op_adaptor(CvtScaleF32SrPk8Fp8F16Op)
class CvtScaleF32SrPk8Fp8F16OpAdaptor(_ods_ir.OpAdaptor):
  OPERATION_NAME = "rocdl.cvt.scalef32.sr.pk8.fp8.f16"

  @builtins.property
  def src(self) -> _ods_ir.Value[_ods_ir.VectorType]:
    return self.operands[0]

  @builtins.property
  def seed(self) -> _ods_ir.Value[_ods_ir.IntegerType]:
    return self.operands[1]

  @builtins.property
  def scale(self) -> _ods_ir.Value[_ods_ir.FloatType]:
    return self.operands[2]

def cvt_scalef32_sr_pk8_fp8_f16(res: _ods_ir.Type, src: _ods_ir.Value[_ods_ir.VectorType], seed: _ods_ir.Value[_ods_ir.IntegerType], scale: _ods_ir.Value[_ods_ir.FloatType], *, loc: _Optional[_ods_ir.Location] = None, ip: _Optional[_ods_ir.InsertionPoint] = None) -> _ods_ir.OpResult[_ods_ir.VectorType]:
  return CvtScaleF32SrPk8Fp8F16Op(res=res, src=src, seed=seed, scale=scale, loc=loc, ip=ip).result

@_ods_cext.register_operation(_Dialect)
class CvtScaleF32SrPk8Fp8F32Op(_ods_ir.OpView):
  r"""
  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.
  """

  OPERATION_NAME = "rocdl.cvt.scalef32.sr.pk8.fp8.f32"

  _ODS_REGIONS = (0, True)

  def __init__(self, res: _ods_ir.Type, src: _ods_ir.Value[_ods_ir.VectorType], seed: _ods_ir.Value[_ods_ir.IntegerType], scale: _ods_ir.Value[_ods_ir.FloatType], *, loc: _Optional[_ods_ir.Location] = None, ip: _Optional[_ods_ir.InsertionPoint] = None):
    operands = []
    attributes = {}
    regions = None
    operands.append(src)
    operands.append(seed)
    operands.append(scale)
    _ods_context = _ods_get_default_loc_context(loc)
    results = []
    results.append(res)
    _ods_successors = None
    super().__init__(self.OPERATION_NAME, self._ODS_REGIONS, self._ODS_OPERAND_SEGMENTS, self._ODS_RESULT_SEGMENTS, attributes=attributes, results=results, operands=operands, successors=_ods_successors, regions=regions, loc=loc, ip=ip)

  @builtins.property
  def src(self) -> _ods_ir.Value[_ods_ir.VectorType]:
    return self.operation.operands[0]

  @builtins.property
  def seed(self) -> _ods_ir.Value[_ods_ir.IntegerType]:
    return self.operation.operands[1]

  @builtins.property
  def scale(self) -> _ods_ir.Value[_ods_ir.FloatType]:
    return self.operation.operands[2]

  @builtins.property
  def res(self) -> _ods_ir.OpResult[_ods_ir.VectorType]:
    return self.operation.results[0]

@_ods_cext.register_op_adaptor(CvtScaleF32SrPk8Fp8F32Op)
class CvtScaleF32SrPk8Fp8F32OpAdaptor(_ods_ir.OpAdaptor):
  OPERATION_NAME = "rocdl.cvt.scalef32.sr.pk8.fp8.f32"

  @builtins.property
  def src(self) -> _ods_ir.Value[_ods_ir.VectorType]:
    return self.operands[0]

  @builtins.property
  def seed(self) -> _ods_ir.Value[_ods_ir.IntegerType]:
    return self.operands[1]

  @builtins.property
  def scale(self) -> _ods_ir.Value[_ods_ir.FloatType]:
    return self.operands[2]

def cvt_scalef32_sr_pk8_fp8_f32(res: _ods_ir.Type, src: _ods_ir.Value[_ods_ir.VectorType], seed: _ods_ir.Value[_ods_ir.IntegerType], scale: _ods_ir.Value[_ods_ir.FloatType], *, loc: _Optional[_ods_ir.Location] = None, ip: _Optional[_ods_ir.InsertionPoint] = None) -> _ods_ir.OpResult[_ods_ir.VectorType]:
  return CvtScaleF32SrPk8Fp8F32Op(res=res, src=src, seed=seed, scale=scale, loc=loc, ip=ip).result

@_ods_cext.register_operation(_Dialect)
class CvtScaleF32SrPk16Bf6Bf16Op(_ods_ir.OpView):
  r"""
  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.
  """

  OPERATION_NAME = "rocdl.cvt.scalef32.sr.pk16.bf6.bf16"

  _ODS_REGIONS = (0, True)

  def __init__(self, res: _ods_ir.Type, src: _ods_ir.Value[_ods_ir.VectorType], seed: _ods_ir.Value[_ods_ir.IntegerType], scale: _ods_ir.Value[_ods_ir.FloatType], *, loc: _Optional[_ods_ir.Location] = None, ip: _Optional[_ods_ir.InsertionPoint] = None):
    operands = []
    attributes = {}
    regions = None
    operands.append(src)
    operands.append(seed)
    operands.append(scale)
    _ods_context = _ods_get_default_loc_context(loc)
    results = []
    results.append(res)
    _ods_successors = None
    super().__init__(self.OPERATION_NAME, self._ODS_REGIONS, self._ODS_OPERAND_SEGMENTS, self._ODS_RESULT_SEGMENTS, attributes=attributes, results=results, operands=operands, successors=_ods_successors, regions=regions, loc=loc, ip=ip)

  @builtins.property
  def src(self) -> _ods_ir.Value[_ods_ir.VectorType]:
    return self.operation.operands[0]

  @builtins.property
  def seed(self) -> _ods_ir.Value[_ods_ir.IntegerType]:
    return self.operation.operands[1]

  @builtins.property
  def scale(self) -> _ods_ir.Value[_ods_ir.FloatType]:
    return self.operation.operands[2]

  @builtins.property
  def res(self) -> _ods_ir.OpResult[_ods_ir.VectorType]:
    return self.operation.results[0]

@_ods_cext.register_op_adaptor(CvtScaleF32SrPk16Bf6Bf16Op)
class CvtScaleF32SrPk16Bf6Bf16OpAdaptor(_ods_ir.OpAdaptor):
  OPERATION_NAME = "rocdl.cvt.scalef32.sr.pk16.bf6.bf16"

  @builtins.property
  def src(self) -> _ods_ir.Value[_ods_ir.VectorType]:
    return self.operands[0]

  @builtins.property
  def seed(self) -> _ods_ir.Value[_ods_ir.IntegerType]:
    return self.operands[1]

  @builtins.property
  def scale(self) -> _ods_ir.Value[_ods_ir.FloatType]:
    return self.operands[2]

def cvt_scalef32_sr_pk16_bf6_bf16(res: _ods_ir.Type, src: _ods_ir.Value[_ods_ir.VectorType], seed: _ods_ir.Value[_ods_ir.IntegerType], scale: _ods_ir.Value[_ods_ir.FloatType], *, loc: _Optional[_ods_ir.Location] = None, ip: _Optional[_ods_ir.InsertionPoint] = None) -> _ods_ir.OpResult[_ods_ir.VectorType]:
  return CvtScaleF32SrPk16Bf6Bf16Op(res=res, src=src, seed=seed, scale=scale, loc=loc, ip=ip).result

@_ods_cext.register_operation(_Dialect)
class CvtScaleF32SrPk16Bf6F16Op(_ods_ir.OpView):
  r"""
  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.
  """

  OPERATION_NAME = "rocdl.cvt.scalef32.sr.pk16.bf6.f16"

  _ODS_REGIONS = (0, True)

  def __init__(self, res: _ods_ir.Type, src: _ods_ir.Value[_ods_ir.VectorType], seed: _ods_ir.Value[_ods_ir.IntegerType], scale: _ods_ir.Value[_ods_ir.FloatType], *, loc: _Optional[_ods_ir.Location] = None, ip: _Optional[_ods_ir.InsertionPoint] = None):
    operands = []
    attributes = {}
    regions = None
    operands.append(src)
    operands.append(seed)
    operands.append(scale)
    _ods_context = _ods_get_default_loc_context(loc)
    results = []
    results.append(res)
    _ods_successors = None
    super().__init__(self.OPERATION_NAME, self._ODS_REGIONS, self._ODS_OPERAND_SEGMENTS, self._ODS_RESULT_SEGMENTS, attributes=attributes, results=results, operands=operands, successors=_ods_successors, regions=regions, loc=loc, ip=ip)

  @builtins.property
  def src(self) -> _ods_ir.Value[_ods_ir.VectorType]:
    return self.operation.operands[0]

  @builtins.property
  def seed(self) -> _ods_ir.Value[_ods_ir.IntegerType]:
    return self.operation.operands[1]

  @builtins.property
  def scale(self) -> _ods_ir.Value[_ods_ir.FloatType]:
    return self.operation.operands[2]

  @builtins.property
  def res(self) -> _ods_ir.OpResult[_ods_ir.VectorType]:
    return self.operation.results[0]

@_ods_cext.register_op_adaptor(CvtScaleF32SrPk16Bf6F16Op)
class CvtScaleF32SrPk16Bf6F16OpAdaptor(_ods_ir.OpAdaptor):
  OPERATION_NAME = "rocdl.cvt.scalef32.sr.pk16.bf6.f16"

  @builtins.property
  def src(self) -> _ods_ir.Value[_ods_ir.VectorType]:
    return self.operands[0]

  @builtins.property
  def seed(self) -> _ods_ir.Value[_ods_ir.IntegerType]:
    return self.operands[1]

  @builtins.property
  def scale(self) -> _ods_ir.Value[_ods_ir.FloatType]:
    return self.operands[2]

def cvt_scalef32_sr_pk16_bf6_f16(res: _ods_ir.Type, src: _ods_ir.Value[_ods_ir.VectorType], seed: _ods_ir.Value[_ods_ir.IntegerType], scale: _ods_ir.Value[_ods_ir.FloatType], *, loc: _Optional[_ods_ir.Location] = None, ip: _Optional[_ods_ir.InsertionPoint] = None) -> _ods_ir.OpResult[_ods_ir.VectorType]:
  return CvtScaleF32SrPk16Bf6F16Op(res=res, src=src, seed=seed, scale=scale, loc=loc, ip=ip).result

@_ods_cext.register_operation(_Dialect)
class CvtScaleF32SrPk16Bf6F32Op(_ods_ir.OpView):
  r"""
  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.
  """

  OPERATION_NAME = "rocdl.cvt.scalef32.sr.pk16.bf6.f32"

  _ODS_REGIONS = (0, True)

  def __init__(self, res: _ods_ir.Type, src: _ods_ir.Value[_ods_ir.VectorType], seed: _ods_ir.Value[_ods_ir.IntegerType], scale: _ods_ir.Value[_ods_ir.FloatType], *, loc: _Optional[_ods_ir.Location] = None, ip: _Optional[_ods_ir.InsertionPoint] = None):
    operands = []
    attributes = {}
    regions = None
    operands.append(src)
    operands.append(seed)
    operands.append(scale)
    _ods_context = _ods_get_default_loc_context(loc)
    results = []
    results.append(res)
    _ods_successors = None
    super().__init__(self.OPERATION_NAME, self._ODS_REGIONS, self._ODS_OPERAND_SEGMENTS, self._ODS_RESULT_SEGMENTS, attributes=attributes, results=results, operands=operands, successors=_ods_successors, regions=regions, loc=loc, ip=ip)

  @builtins.property
  def src(self) -> _ods_ir.Value[_ods_ir.VectorType]:
    return self.operation.operands[0]

  @builtins.property
  def seed(self) -> _ods_ir.Value[_ods_ir.IntegerType]:
    return self.operation.operands[1]

  @builtins.property
  def scale(self) -> _ods_ir.Value[_ods_ir.FloatType]:
    return self.operation.operands[2]

  @builtins.property
  def res(self) -> _ods_ir.OpResult[_ods_ir.VectorType]:
    return self.operation.results[0]

@_ods_cext.register_op_adaptor(CvtScaleF32SrPk16Bf6F32Op)
class CvtScaleF32SrPk16Bf6F32OpAdaptor(_ods_ir.OpAdaptor):
  OPERATION_NAME = "rocdl.cvt.scalef32.sr.pk16.bf6.f32"

  @builtins.property
  def src(self) -> _ods_ir.Value[_ods_ir.VectorType]:
    return self.operands[0]

  @builtins.property
  def seed(self) -> _ods_ir.Value[_ods_ir.IntegerType]:
    return self.operands[1]

  @builtins.property
  def scale(self) -> _ods_ir.Value[_ods_ir.FloatType]:
    return self.operands[2]

def cvt_scalef32_sr_pk16_bf6_f32(res: _ods_ir.Type, src: _ods_ir.Value[_ods_ir.VectorType], seed: _ods_ir.Value[_ods_ir.IntegerType], scale: _ods_ir.Value[_ods_ir.FloatType], *, loc: _Optional[_ods_ir.Location] = None, ip: _Optional[_ods_ir.InsertionPoint] = None) -> _ods_ir.OpResult[_ods_ir.VectorType]:
  return CvtScaleF32SrPk16Bf6F32Op(res=res, src=src, seed=seed, scale=scale, loc=loc, ip=ip).result

@_ods_cext.register_operation(_Dialect)
class CvtScaleF32SrPk16Fp6Bf16Op(_ods_ir.OpView):
  r"""
  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.
  """

  OPERATION_NAME = "rocdl.cvt.scalef32.sr.pk16.fp6.bf16"

  _ODS_REGIONS = (0, True)

  def __init__(self, res: _ods_ir.Type, src: _ods_ir.Value[_ods_ir.VectorType], seed: _ods_ir.Value[_ods_ir.IntegerType], scale: _ods_ir.Value[_ods_ir.FloatType], *, loc: _Optional[_ods_ir.Location] = None, ip: _Optional[_ods_ir.InsertionPoint] = None):
    operands = []
    attributes = {}
    regions = None
    operands.append(src)
    operands.append(seed)
    operands.append(scale)
    _ods_context = _ods_get_default_loc_context(loc)
    results = []
    results.append(res)
    _ods_successors = None
    super().__init__(self.OPERATION_NAME, self._ODS_REGIONS, self._ODS_OPERAND_SEGMENTS, self._ODS_RESULT_SEGMENTS, attributes=attributes, results=results, operands=operands, successors=_ods_successors, regions=regions, loc=loc, ip=ip)

  @builtins.property
  def src(self) -> _ods_ir.Value[_ods_ir.VectorType]:
    return self.operation.operands[0]

  @builtins.property
  def seed(self) -> _ods_ir.Value[_ods_ir.IntegerType]:
    return self.operation.operands[1]

  @builtins.property
  def scale(self) -> _ods_ir.Value[_ods_ir.FloatType]:
    return self.operation.operands[2]

  @builtins.property
  def res(self) -> _ods_ir.OpResult[_ods_ir.VectorType]:
    return self.operation.results[0]

@_ods_cext.register_op_adaptor(CvtScaleF32SrPk16Fp6Bf16Op)
class CvtScaleF32SrPk16Fp6Bf16OpAdaptor(_ods_ir.OpAdaptor):
  OPERATION_NAME = "rocdl.cvt.scalef32.sr.pk16.fp6.bf16"

  @builtins.property
  def src(self) -> _ods_ir.Value[_ods_ir.VectorType]:
    return self.operands[0]

  @builtins.property
  def seed(self) -> _ods_ir.Value[_ods_ir.IntegerType]:
    return self.operands[1]

  @builtins.property
  def scale(self) -> _ods_ir.Value[_ods_ir.FloatType]:
    return self.operands[2]

def cvt_scalef32_sr_pk16_fp6_bf16(res: _ods_ir.Type, src: _ods_ir.Value[_ods_ir.VectorType], seed: _ods_ir.Value[_ods_ir.IntegerType], scale: _ods_ir.Value[_ods_ir.FloatType], *, loc: _Optional[_ods_ir.Location] = None, ip: _Optional[_ods_ir.InsertionPoint] = None) -> _ods_ir.OpResult[_ods_ir.VectorType]:
  return CvtScaleF32SrPk16Fp6Bf16Op(res=res, src=src, seed=seed, scale=scale, loc=loc, ip=ip).result

@_ods_cext.register_operation(_Dialect)
class CvtScaleF32SrPk16Fp6F16Op(_ods_ir.OpView):
  r"""
  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.
  """

  OPERATION_NAME = "rocdl.cvt.scalef32.sr.pk16.fp6.f16"

  _ODS_REGIONS = (0, True)

  def __init__(self, res: _ods_ir.Type, src: _ods_ir.Value[_ods_ir.VectorType], seed: _ods_ir.Value[_ods_ir.IntegerType], scale: _ods_ir.Value[_ods_ir.FloatType], *, loc: _Optional[_ods_ir.Location] = None, ip: _Optional[_ods_ir.InsertionPoint] = None):
    operands = []
    attributes = {}
    regions = None
    operands.append(src)
    operands.append(seed)
    operands.append(scale)
    _ods_context = _ods_get_default_loc_context(loc)
    results = []
    results.append(res)
    _ods_successors = None
    super().__init__(self.OPERATION_NAME, self._ODS_REGIONS, self._ODS_OPERAND_SEGMENTS, self._ODS_RESULT_SEGMENTS, attributes=attributes, results=results, operands=operands, successors=_ods_successors, regions=regions, loc=loc, ip=ip)

  @builtins.property
  def src(self) -> _ods_ir.Value[_ods_ir.VectorType]:
    return self.operation.operands[0]

  @builtins.property
  def seed(self) -> _ods_ir.Value[_ods_ir.IntegerType]:
    return self.operation.operands[1]

  @builtins.property
  def scale(self) -> _ods_ir.Value[_ods_ir.FloatType]:
    return self.operation.operands[2]

  @builtins.property
  def res(self) -> _ods_ir.OpResult[_ods_ir.VectorType]:
    return self.operation.results[0]

@_ods_cext.register_op_adaptor(CvtScaleF32SrPk16Fp6F16Op)
class CvtScaleF32SrPk16Fp6F16OpAdaptor(_ods_ir.OpAdaptor):
  OPERATION_NAME = "rocdl.cvt.scalef32.sr.pk16.fp6.f16"

  @builtins.property
  def src(self) -> _ods_ir.Value[_ods_ir.VectorType]:
    return self.operands[0]

  @builtins.property
  def seed(self) -> _ods_ir.Value[_ods_ir.IntegerType]:
    return self.operands[1]

  @builtins.property
  def scale(self) -> _ods_ir.Value[_ods_ir.FloatType]:
    return self.operands[2]

def cvt_scalef32_sr_pk16_fp6_f16(res: _ods_ir.Type, src: _ods_ir.Value[_ods_ir.VectorType], seed: _ods_ir.Value[_ods_ir.IntegerType], scale: _ods_ir.Value[_ods_ir.FloatType], *, loc: _Optional[_ods_ir.Location] = None, ip: _Optional[_ods_ir.InsertionPoint] = None) -> _ods_ir.OpResult[_ods_ir.VectorType]:
  return CvtScaleF32SrPk16Fp6F16Op(res=res, src=src, seed=seed, scale=scale, loc=loc, ip=ip).result

@_ods_cext.register_operation(_Dialect)
class CvtScaleF32SrPk16Fp6F32Op(_ods_ir.OpView):
  r"""
  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.
  """

  OPERATION_NAME = "rocdl.cvt.scalef32.sr.pk16.fp6.f32"

  _ODS_REGIONS = (0, True)

  def __init__(self, res: _ods_ir.Type, src: _ods_ir.Value[_ods_ir.VectorType], seed: _ods_ir.Value[_ods_ir.IntegerType], scale: _ods_ir.Value[_ods_ir.FloatType], *, loc: _Optional[_ods_ir.Location] = None, ip: _Optional[_ods_ir.InsertionPoint] = None):
    operands = []
    attributes = {}
    regions = None
    operands.append(src)
    operands.append(seed)
    operands.append(scale)
    _ods_context = _ods_get_default_loc_context(loc)
    results = []
    results.append(res)
    _ods_successors = None
    super().__init__(self.OPERATION_NAME, self._ODS_REGIONS, self._ODS_OPERAND_SEGMENTS, self._ODS_RESULT_SEGMENTS, attributes=attributes, results=results, operands=operands, successors=_ods_successors, regions=regions, loc=loc, ip=ip)

  @builtins.property
  def src(self) -> _ods_ir.Value[_ods_ir.VectorType]:
    return self.operation.operands[0]

  @builtins.property
  def seed(self) -> _ods_ir.Value[_ods_ir.IntegerType]:
    return self.operation.operands[1]

  @builtins.property
  def scale(self) -> _ods_ir.Value[_ods_ir.FloatType]:
    return self.operation.operands[2]

  @builtins.property
  def res(self) -> _ods_ir.OpResult[_ods_ir.VectorType]:
    return self.operation.results[0]

@_ods_cext.register_op_adaptor(CvtScaleF32SrPk16Fp6F32Op)
class CvtScaleF32SrPk16Fp6F32OpAdaptor(_ods_ir.OpAdaptor):
  OPERATION_NAME = "rocdl.cvt.scalef32.sr.pk16.fp6.f32"

  @builtins.property
  def src(self) -> _ods_ir.Value[_ods_ir.VectorType]:
    return self.operands[0]

  @builtins.property
  def seed(self) -> _ods_ir.Value[_ods_ir.IntegerType]:
    return self.operands[1]

  @builtins.property
  def scale(self) -> _ods_ir.Value[_ods_ir.FloatType]:
    return self.operands[2]

def cvt_scalef32_sr_pk16_fp6_f32(res: _ods_ir.Type, src: _ods_ir.Value[_ods_ir.VectorType], seed: _ods_ir.Value[_ods_ir.IntegerType], scale: _ods_ir.Value[_ods_ir.FloatType], *, loc: _Optional[_ods_ir.Location] = None, ip: _Optional[_ods_ir.InsertionPoint] = None) -> _ods_ir.OpResult[_ods_ir.VectorType]:
  return CvtScaleF32SrPk16Fp6F32Op(res=res, src=src, seed=seed, scale=scale, loc=loc, ip=ip).result

@_ods_cext.register_operation(_Dialect)
class CvtScaleF32SrPk32Bf6Bf16Op(_ods_ir.OpView):
  r"""
  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`.
  """

  OPERATION_NAME = "rocdl.cvt.scalef32.sr.pk32.bf6.bf16"

  _ODS_REGIONS = (0, True)

  def __init__(self, res: _ods_ir.Type, src: _ods_ir.Value[_ods_ir.VectorType], seed: _ods_ir.Value[_ods_ir.IntegerType], scale: _ods_ir.Value[_ods_ir.FloatType], *, loc: _Optional[_ods_ir.Location] = None, ip: _Optional[_ods_ir.InsertionPoint] = None):
    operands = []
    attributes = {}
    regions = None
    operands.append(src)
    operands.append(seed)
    operands.append(scale)
    _ods_context = _ods_get_default_loc_context(loc)
    results = []
    results.append(res)
    _ods_successors = None
    super().__init__(self.OPERATION_NAME, self._ODS_REGIONS, self._ODS_OPERAND_SEGMENTS, self._ODS_RESULT_SEGMENTS, attributes=attributes, results=results, operands=operands, successors=_ods_successors, regions=regions, loc=loc, ip=ip)

  @builtins.property
  def src(self) -> _ods_ir.Value[_ods_ir.VectorType]:
    return self.operation.operands[0]

  @builtins.property
  def seed(self) -> _ods_ir.Value[_ods_ir.IntegerType]:
    return self.operation.operands[1]

  @builtins.property
  def scale(self) -> _ods_ir.Value[_ods_ir.FloatType]:
    return self.operation.operands[2]

  @builtins.property
  def res(self) -> _ods_ir.OpResult[_ods_ir.VectorType]:
    return self.operation.results[0]

@_ods_cext.register_op_adaptor(CvtScaleF32SrPk32Bf6Bf16Op)
class CvtScaleF32SrPk32Bf6Bf16OpAdaptor(_ods_ir.OpAdaptor):
  OPERATION_NAME = "rocdl.cvt.scalef32.sr.pk32.bf6.bf16"

  @builtins.property
  def src(self) -> _ods_ir.Value[_ods_ir.VectorType]:
    return self.operands[0]

  @builtins.property
  def seed(self) -> _ods_ir.Value[_ods_ir.IntegerType]:
    return self.operands[1]

  @builtins.property
  def scale(self) -> _ods_ir.Value[_ods_ir.FloatType]:
    return self.operands[2]

def cvt_scalef32_sr_pk32_bf6_bf16(res: _ods_ir.Type, src: _ods_ir.Value[_ods_ir.VectorType], seed: _ods_ir.Value[_ods_ir.IntegerType], scale: _ods_ir.Value[_ods_ir.FloatType], *, loc: _Optional[_ods_ir.Location] = None, ip: _Optional[_ods_ir.InsertionPoint] = None) -> _ods_ir.OpResult[_ods_ir.VectorType]:
  return CvtScaleF32SrPk32Bf6Bf16Op(res=res, src=src, seed=seed, scale=scale, loc=loc, ip=ip).result

@_ods_cext.register_operation(_Dialect)
class CvtScaleF32SrPk32Bf6F16Op(_ods_ir.OpView):
  r"""
  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`.
  """

  OPERATION_NAME = "rocdl.cvt.scalef32.sr.pk32.bf6.f16"

  _ODS_REGIONS = (0, True)

  def __init__(self, res: _ods_ir.Type, src: _ods_ir.Value[_ods_ir.VectorType], seed: _ods_ir.Value[_ods_ir.IntegerType], scale: _ods_ir.Value[_ods_ir.FloatType], *, loc: _Optional[_ods_ir.Location] = None, ip: _Optional[_ods_ir.InsertionPoint] = None):
    operands = []
    attributes = {}
    regions = None
    operands.append(src)
    operands.append(seed)
    operands.append(scale)
    _ods_context = _ods_get_default_loc_context(loc)
    results = []
    results.append(res)
    _ods_successors = None
    super().__init__(self.OPERATION_NAME, self._ODS_REGIONS, self._ODS_OPERAND_SEGMENTS, self._ODS_RESULT_SEGMENTS, attributes=attributes, results=results, operands=operands, successors=_ods_successors, regions=regions, loc=loc, ip=ip)

  @builtins.property
  def src(self) -> _ods_ir.Value[_ods_ir.VectorType]:
    return self.operation.operands[0]

  @builtins.property
  def seed(self) -> _ods_ir.Value[_ods_ir.IntegerType]:
    return self.operation.operands[1]

  @builtins.property
  def scale(self) -> _ods_ir.Value[_ods_ir.FloatType]:
    return self.operation.operands[2]

  @builtins.property
  def res(self) -> _ods_ir.OpResult[_ods_ir.VectorType]:
    return self.operation.results[0]

@_ods_cext.register_op_adaptor(CvtScaleF32SrPk32Bf6F16Op)
class CvtScaleF32SrPk32Bf6F16OpAdaptor(_ods_ir.OpAdaptor):
  OPERATION_NAME = "rocdl.cvt.scalef32.sr.pk32.bf6.f16"

  @builtins.property
  def src(self) -> _ods_ir.Value[_ods_ir.VectorType]:
    return self.operands[0]

  @builtins.property
  def seed(self) -> _ods_ir.Value[_ods_ir.IntegerType]:
    return self.operands[1]

  @builtins.property
  def scale(self) -> _ods_ir.Value[_ods_ir.FloatType]:
    return self.operands[2]

def cvt_scalef32_sr_pk32_bf6_f16(res: _ods_ir.Type, src: _ods_ir.Value[_ods_ir.VectorType], seed: _ods_ir.Value[_ods_ir.IntegerType], scale: _ods_ir.Value[_ods_ir.FloatType], *, loc: _Optional[_ods_ir.Location] = None, ip: _Optional[_ods_ir.InsertionPoint] = None) -> _ods_ir.OpResult[_ods_ir.VectorType]:
  return CvtScaleF32SrPk32Bf6F16Op(res=res, src=src, seed=seed, scale=scale, loc=loc, ip=ip).result

@_ods_cext.register_operation(_Dialect)
class CvtScaleF32SrPk32Bf6F32Op(_ods_ir.OpView):
  r"""
  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`.
  """

  OPERATION_NAME = "rocdl.cvt.scalef32.sr.pk32.bf6.f32"

  _ODS_REGIONS = (0, True)

  def __init__(self, res: _ods_ir.Type, src: _ods_ir.Value[_ods_ir.VectorType], seed: _ods_ir.Value[_ods_ir.IntegerType], scale: _ods_ir.Value[_ods_ir.FloatType], *, loc: _Optional[_ods_ir.Location] = None, ip: _Optional[_ods_ir.InsertionPoint] = None):
    operands = []
    attributes = {}
    regions = None
    operands.append(src)
    operands.append(seed)
    operands.append(scale)
    _ods_context = _ods_get_default_loc_context(loc)
    results = []
    results.append(res)
    _ods_successors = None
    super().__init__(self.OPERATION_NAME, self._ODS_REGIONS, self._ODS_OPERAND_SEGMENTS, self._ODS_RESULT_SEGMENTS, attributes=attributes, results=results, operands=operands, successors=_ods_successors, regions=regions, loc=loc, ip=ip)

  @builtins.property
  def src(self) -> _ods_ir.Value[_ods_ir.VectorType]:
    return self.operation.operands[0]

  @builtins.property
  def seed(self) -> _ods_ir.Value[_ods_ir.IntegerType]:
    return self.operation.operands[1]

  @builtins.property
  def scale(self) -> _ods_ir.Value[_ods_ir.FloatType]:
    return self.operation.operands[2]

  @builtins.property
  def res(self) -> _ods_ir.OpResult[_ods_ir.VectorType]:
    return self.operation.results[0]

@_ods_cext.register_op_adaptor(CvtScaleF32SrPk32Bf6F32Op)
class CvtScaleF32SrPk32Bf6F32OpAdaptor(_ods_ir.OpAdaptor):
  OPERATION_NAME = "rocdl.cvt.scalef32.sr.pk32.bf6.f32"

  @builtins.property
  def src(self) -> _ods_ir.Value[_ods_ir.VectorType]:
    return self.operands[0]

  @builtins.property
  def seed(self) -> _ods_ir.Value[_ods_ir.IntegerType]:
    return self.operands[1]

  @builtins.property
  def scale(self) -> _ods_ir.Value[_ods_ir.FloatType]:
    return self.operands[2]

def cvt_scalef32_sr_pk32_bf6_f32(res: _ods_ir.Type, src: _ods_ir.Value[_ods_ir.VectorType], seed: _ods_ir.Value[_ods_ir.IntegerType], scale: _ods_ir.Value[_ods_ir.FloatType], *, loc: _Optional[_ods_ir.Location] = None, ip: _Optional[_ods_ir.InsertionPoint] = None) -> _ods_ir.OpResult[_ods_ir.VectorType]:
  return CvtScaleF32SrPk32Bf6F32Op(res=res, src=src, seed=seed, scale=scale, loc=loc, ip=ip).result

@_ods_cext.register_operation(_Dialect)
class CvtScaleF32SrPk32Fp6Bf16Op(_ods_ir.OpView):
  r"""
  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`.
  """

  OPERATION_NAME = "rocdl.cvt.scalef32.sr.pk32.fp6.bf16"

  _ODS_REGIONS = (0, True)

  def __init__(self, res: _ods_ir.Type, src: _ods_ir.Value[_ods_ir.VectorType], seed: _ods_ir.Value[_ods_ir.IntegerType], scale: _ods_ir.Value[_ods_ir.FloatType], *, loc: _Optional[_ods_ir.Location] = None, ip: _Optional[_ods_ir.InsertionPoint] = None):
    operands = []
    attributes = {}
    regions = None
    operands.append(src)
    operands.append(seed)
    operands.append(scale)
    _ods_context = _ods_get_default_loc_context(loc)
    results = []
    results.append(res)
    _ods_successors = None
    super().__init__(self.OPERATION_NAME, self._ODS_REGIONS, self._ODS_OPERAND_SEGMENTS, self._ODS_RESULT_SEGMENTS, attributes=attributes, results=results, operands=operands, successors=_ods_successors, regions=regions, loc=loc, ip=ip)

  @builtins.property
  def src(self) -> _ods_ir.Value[_ods_ir.VectorType]:
    return self.operation.operands[0]

  @builtins.property
  def seed(self) -> _ods_ir.Value[_ods_ir.IntegerType]:
    return self.operation.operands[1]

  @builtins.property
  def scale(self) -> _ods_ir.Value[_ods_ir.FloatType]:
    return self.operation.operands[2]

  @builtins.property
  def res(self) -> _ods_ir.OpResult[_ods_ir.VectorType]:
    return self.operation.results[0]

@_ods_cext.register_op_adaptor(CvtScaleF32SrPk32Fp6Bf16Op)
class CvtScaleF32SrPk32Fp6Bf16OpAdaptor(_ods_ir.OpAdaptor):
  OPERATION_NAME = "rocdl.cvt.scalef32.sr.pk32.fp6.bf16"

  @builtins.property
  def src(self) -> _ods_ir.Value[_ods_ir.VectorType]:
    return self.operands[0]

  @builtins.property
  def seed(self) -> _ods_ir.Value[_ods_ir.IntegerType]:
    return self.operands[1]

  @builtins.property
  def scale(self) -> _ods_ir.Value[_ods_ir.FloatType]:
    return self.operands[2]

def cvt_scalef32_sr_pk32_fp6_bf16(res: _ods_ir.Type, src: _ods_ir.Value[_ods_ir.VectorType], seed: _ods_ir.Value[_ods_ir.IntegerType], scale: _ods_ir.Value[_ods_ir.FloatType], *, loc: _Optional[_ods_ir.Location] = None, ip: _Optional[_ods_ir.InsertionPoint] = None) -> _ods_ir.OpResult[_ods_ir.VectorType]:
  return CvtScaleF32SrPk32Fp6Bf16Op(res=res, src=src, seed=seed, scale=scale, loc=loc, ip=ip).result

@_ods_cext.register_operation(_Dialect)
class CvtScaleF32SrPk32Fp6F16Op(_ods_ir.OpView):
  r"""
  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`.
  """

  OPERATION_NAME = "rocdl.cvt.scalef32.sr.pk32.fp6.f16"

  _ODS_REGIONS = (0, True)

  def __init__(self, res: _ods_ir.Type, src: _ods_ir.Value[_ods_ir.VectorType], seed: _ods_ir.Value[_ods_ir.IntegerType], scale: _ods_ir.Value[_ods_ir.FloatType], *, loc: _Optional[_ods_ir.Location] = None, ip: _Optional[_ods_ir.InsertionPoint] = None):
    operands = []
    attributes = {}
    regions = None
    operands.append(src)
    operands.append(seed)
    operands.append(scale)
    _ods_context = _ods_get_default_loc_context(loc)
    results = []
    results.append(res)
    _ods_successors = None
    super().__init__(self.OPERATION_NAME, self._ODS_REGIONS, self._ODS_OPERAND_SEGMENTS, self._ODS_RESULT_SEGMENTS, attributes=attributes, results=results, operands=operands, successors=_ods_successors, regions=regions, loc=loc, ip=ip)

  @builtins.property
  def src(self) -> _ods_ir.Value[_ods_ir.VectorType]:
    return self.operation.operands[0]

  @builtins.property
  def seed(self) -> _ods_ir.Value[_ods_ir.IntegerType]:
    return self.operation.operands[1]

  @builtins.property
  def scale(self) -> _ods_ir.Value[_ods_ir.FloatType]:
    return self.operation.operands[2]

  @builtins.property
  def res(self) -> _ods_ir.OpResult[_ods_ir.VectorType]:
    return self.operation.results[0]

@_ods_cext.register_op_adaptor(CvtScaleF32SrPk32Fp6F16Op)
class CvtScaleF32SrPk32Fp6F16OpAdaptor(_ods_ir.OpAdaptor):
  OPERATION_NAME = "rocdl.cvt.scalef32.sr.pk32.fp6.f16"

  @builtins.property
  def src(self) -> _ods_ir.Value[_ods_ir.VectorType]:
    return self.operands[0]

  @builtins.property
  def seed(self) -> _ods_ir.Value[_ods_ir.IntegerType]:
    return self.operands[1]

  @builtins.property
  def scale(self) -> _ods_ir.Value[_ods_ir.FloatType]:
    return self.operands[2]

def cvt_scalef32_sr_pk32_fp6_f16(res: _ods_ir.Type, src: _ods_ir.Value[_ods_ir.VectorType], seed: _ods_ir.Value[_ods_ir.IntegerType], scale: _ods_ir.Value[_ods_ir.FloatType], *, loc: _Optional[_ods_ir.Location] = None, ip: _Optional[_ods_ir.InsertionPoint] = None) -> _ods_ir.OpResult[_ods_ir.VectorType]:
  return CvtScaleF32SrPk32Fp6F16Op(res=res, src=src, seed=seed, scale=scale, loc=loc, ip=ip).result

@_ods_cext.register_operation(_Dialect)
class CvtScaleF32SrPk32Fp6F32Op(_ods_ir.OpView):
  r"""
  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`.
  """

  OPERATION_NAME = "rocdl.cvt.scalef32.sr.pk32.fp6.f32"

  _ODS_REGIONS = (0, True)

  def __init__(self, res: _ods_ir.Type, src: _ods_ir.Value[_ods_ir.VectorType], seed: _ods_ir.Value[_ods_ir.IntegerType], scale: _ods_ir.Value[_ods_ir.FloatType], *, loc: _Optional[_ods_ir.Location] = None, ip: _Optional[_ods_ir.InsertionPoint] = None):
    operands = []
    attributes = {}
    regions = None
    operands.append(src)
    operands.append(seed)
    operands.append(scale)
    _ods_context = _ods_get_default_loc_context(loc)
    results = []
    results.append(res)
    _ods_successors = None
    super().__init__(self.OPERATION_NAME, self._ODS_REGIONS, self._ODS_OPERAND_SEGMENTS, self._ODS_RESULT_SEGMENTS, attributes=attributes, results=results, operands=operands, successors=_ods_successors, regions=regions, loc=loc, ip=ip)

  @builtins.property
  def src(self) -> _ods_ir.Value[_ods_ir.VectorType]:
    return self.operation.operands[0]

  @builtins.property
  def seed(self) -> _ods_ir.Value[_ods_ir.IntegerType]:
    return self.operation.operands[1]

  @builtins.property
  def scale(self) -> _ods_ir.Value[_ods_ir.FloatType]:
    return self.operation.operands[2]

  @builtins.property
  def res(self) -> _ods_ir.OpResult[_ods_ir.VectorType]:
    return self.operation.results[0]

@_ods_cext.register_op_adaptor(CvtScaleF32SrPk32Fp6F32Op)
class CvtScaleF32SrPk32Fp6F32OpAdaptor(_ods_ir.OpAdaptor):
  OPERATION_NAME = "rocdl.cvt.scalef32.sr.pk32.fp6.f32"

  @builtins.property
  def src(self) -> _ods_ir.Value[_ods_ir.VectorType]:
    return self.operands[0]

  @builtins.property
  def seed(self) -> _ods_ir.Value[_ods_ir.IntegerType]:
    return self.operands[1]

  @builtins.property
  def scale(self) -> _ods_ir.Value[_ods_ir.FloatType]:
    return self.operands[2]

def cvt_scalef32_sr_pk32_fp6_f32(res: _ods_ir.Type, src: _ods_ir.Value[_ods_ir.VectorType], seed: _ods_ir.Value[_ods_ir.IntegerType], scale: _ods_ir.Value[_ods_ir.FloatType], *, loc: _Optional[_ods_ir.Location] = None, ip: _Optional[_ods_ir.InsertionPoint] = None) -> _ods_ir.OpResult[_ods_ir.VectorType]:
  return CvtScaleF32SrPk32Fp6F32Op(res=res, src=src, seed=seed, scale=scale, loc=loc, ip=ip).result

@_ods_cext.register_operation(_Dialect)
class CvtScaleF32SrPkFp4Bf16Op(_ods_ir.OpView):
  r"""
  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.
  """

  OPERATION_NAME = "rocdl.cvt.scalef32.sr.pk.fp4.bf16"

  _ODS_REGIONS = (0, True)

  def __init__(self, res: _ods_ir.Type, oldVdst: _ods_ir.Value[_ods_ir.IntegerType], src: _ods_ir.Value[_ods_ir.VectorType], seed: _ods_ir.Value[_ods_ir.IntegerType], scale: _ods_ir.Value[_ods_ir.FloatType], dstSelIndex: _Union[int, _ods_ir.IntegerAttr], *, loc: _Optional[_ods_ir.Location] = None, ip: _Optional[_ods_ir.InsertionPoint] = None):
    operands = []
    attributes = {}
    regions = None
    operands.append(oldVdst)
    operands.append(src)
    operands.append(seed)
    operands.append(scale)
    _ods_context = _ods_get_default_loc_context(loc)
    attributes["dstSelIndex"] = (dstSelIndex if (
    isinstance(dstSelIndex, _ods_ir.Attribute) or
    not _ods_ir.AttrBuilder.contains('I32Attr')) else
      _ods_ir.AttrBuilder.get('I32Attr')(dstSelIndex, context=_ods_context))
    results = []
    results.append(res)
    _ods_successors = None
    super().__init__(self.OPERATION_NAME, self._ODS_REGIONS, self._ODS_OPERAND_SEGMENTS, self._ODS_RESULT_SEGMENTS, attributes=attributes, results=results, operands=operands, successors=_ods_successors, regions=regions, loc=loc, ip=ip)

  @builtins.property
  def oldVdst(self) -> _ods_ir.Value[_ods_ir.IntegerType]:
    return self.operation.operands[0]

  @builtins.property
  def src(self) -> _ods_ir.Value[_ods_ir.VectorType]:
    return self.operation.operands[1]

  @builtins.property
  def seed(self) -> _ods_ir.Value[_ods_ir.IntegerType]:
    return self.operation.operands[2]

  @builtins.property
  def scale(self) -> _ods_ir.Value[_ods_ir.FloatType]:
    return self.operation.operands[3]

  @builtins.property
  def dstSelIndex(self) -> _ods_ir.IntegerAttr:
    return self.operation.attributes["dstSelIndex"]

  @dstSelIndex.setter
  def dstSelIndex(self, value: _ods_ir.IntegerAttr):
    if value is None:
      raise ValueError("'None' not allowed as value for mandatory attributes")
    self.operation.attributes["dstSelIndex"] = value

  @builtins.property
  def res(self) -> _ods_ir.OpResult[_ods_ir.IntegerType]:
    return self.operation.results[0]

@_ods_cext.register_op_adaptor(CvtScaleF32SrPkFp4Bf16Op)
class CvtScaleF32SrPkFp4Bf16OpAdaptor(_ods_ir.OpAdaptor):
  OPERATION_NAME = "rocdl.cvt.scalef32.sr.pk.fp4.bf16"

  @builtins.property
  def oldVdst(self) -> _ods_ir.Value[_ods_ir.IntegerType]:
    return self.operands[0]

  @builtins.property
  def src(self) -> _ods_ir.Value[_ods_ir.VectorType]:
    return self.operands[1]

  @builtins.property
  def seed(self) -> _ods_ir.Value[_ods_ir.IntegerType]:
    return self.operands[2]

  @builtins.property
  def scale(self) -> _ods_ir.Value[_ods_ir.FloatType]:
    return self.operands[3]

  @builtins.property
  def dstSelIndex(self) -> _ods_ir.IntegerAttr:
    return self.attributes["dstSelIndex"]

def cvt_scalef32_sr_pk_fp4_bf16(res: _ods_ir.Type, old_vdst: _ods_ir.Value[_ods_ir.IntegerType], src: _ods_ir.Value[_ods_ir.VectorType], seed: _ods_ir.Value[_ods_ir.IntegerType], scale: _ods_ir.Value[_ods_ir.FloatType], dst_sel_index: _Union[int, _ods_ir.IntegerAttr], *, loc: _Optional[_ods_ir.Location] = None, ip: _Optional[_ods_ir.InsertionPoint] = None) -> _ods_ir.OpResult[_ods_ir.IntegerType]:
  return CvtScaleF32SrPkFp4Bf16Op(res=res, oldVdst=old_vdst, src=src, seed=seed, scale=scale, dstSelIndex=dst_sel_index, loc=loc, ip=ip).result

@_ods_cext.register_operation(_Dialect)
class CvtScaleF32SrPkFp4F16Op(_ods_ir.OpView):
  r"""
  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.
  """

  OPERATION_NAME = "rocdl.cvt.scalef32.sr.pk.fp4.f16"

  _ODS_REGIONS = (0, True)

  def __init__(self, res: _ods_ir.Type, oldVdst: _ods_ir.Value[_ods_ir.IntegerType], src: _ods_ir.Value[_ods_ir.VectorType], seed: _ods_ir.Value[_ods_ir.IntegerType], scale: _ods_ir.Value[_ods_ir.FloatType], dstSelIndex: _Union[int, _ods_ir.IntegerAttr], *, loc: _Optional[_ods_ir.Location] = None, ip: _Optional[_ods_ir.InsertionPoint] = None):
    operands = []
    attributes = {}
    regions = None
    operands.append(oldVdst)
    operands.append(src)
    operands.append(seed)
    operands.append(scale)
    _ods_context = _ods_get_default_loc_context(loc)
    attributes["dstSelIndex"] = (dstSelIndex if (
    isinstance(dstSelIndex, _ods_ir.Attribute) or
    not _ods_ir.AttrBuilder.contains('I32Attr')) else
      _ods_ir.AttrBuilder.get('I32Attr')(dstSelIndex, context=_ods_context))
    results = []
    results.append(res)
    _ods_successors = None
    super().__init__(self.OPERATION_NAME, self._ODS_REGIONS, self._ODS_OPERAND_SEGMENTS, self._ODS_RESULT_SEGMENTS, attributes=attributes, results=results, operands=operands, successors=_ods_successors, regions=regions, loc=loc, ip=ip)

  @builtins.property
  def oldVdst(self) -> _ods_ir.Value[_ods_ir.IntegerType]:
    return self.operation.operands[0]

  @builtins.property
  def src(self) -> _ods_ir.Value[_ods_ir.VectorType]:
    return self.operation.operands[1]

  @builtins.property
  def seed(self) -> _ods_ir.Value[_ods_ir.IntegerType]:
    return self.operation.operands[2]

  @builtins.property
  def scale(self) -> _ods_ir.Value[_ods_ir.FloatType]:
    return self.operation.operands[3]

  @builtins.property
  def dstSelIndex(self) -> _ods_ir.IntegerAttr:
    return self.operation.attributes["dstSelIndex"]

  @dstSelIndex.setter
  def dstSelIndex(self, value: _ods_ir.IntegerAttr):
    if value is None:
      raise ValueError("'None' not allowed as value for mandatory attributes")
    self.operation.attributes["dstSelIndex"] = value

  @builtins.property
  def res(self) -> _ods_ir.OpResult[_ods_ir.IntegerType]:
    return self.operation.results[0]

@_ods_cext.register_op_adaptor(CvtScaleF32SrPkFp4F16Op)
class CvtScaleF32SrPkFp4F16OpAdaptor(_ods_ir.OpAdaptor):
  OPERATION_NAME = "rocdl.cvt.scalef32.sr.pk.fp4.f16"

  @builtins.property
  def oldVdst(self) -> _ods_ir.Value[_ods_ir.IntegerType]:
    return self.operands[0]

  @builtins.property
  def src(self) -> _ods_ir.Value[_ods_ir.VectorType]:
    return self.operands[1]

  @builtins.property
  def seed(self) -> _ods_ir.Value[_ods_ir.IntegerType]:
    return self.operands[2]

  @builtins.property
  def scale(self) -> _ods_ir.Value[_ods_ir.FloatType]:
    return self.operands[3]

  @builtins.property
  def dstSelIndex(self) -> _ods_ir.IntegerAttr:
    return self.attributes["dstSelIndex"]

def cvt_scalef32_sr_pk_fp4_f16(res: _ods_ir.Type, old_vdst: _ods_ir.Value[_ods_ir.IntegerType], src: _ods_ir.Value[_ods_ir.VectorType], seed: _ods_ir.Value[_ods_ir.IntegerType], scale: _ods_ir.Value[_ods_ir.FloatType], dst_sel_index: _Union[int, _ods_ir.IntegerAttr], *, loc: _Optional[_ods_ir.Location] = None, ip: _Optional[_ods_ir.InsertionPoint] = None) -> _ods_ir.OpResult[_ods_ir.IntegerType]:
  return CvtScaleF32SrPkFp4F16Op(res=res, oldVdst=old_vdst, src=src, seed=seed, scale=scale, dstSelIndex=dst_sel_index, loc=loc, ip=ip).result

@_ods_cext.register_operation(_Dialect)
class CvtScaleF32SrPkFp4F32Op(_ods_ir.OpView):
  r"""
  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.
  """

  OPERATION_NAME = "rocdl.cvt.scalef32.sr.pk.fp4.f32"

  _ODS_REGIONS = (0, True)

  def __init__(self, res: _ods_ir.Type, oldVdst: _ods_ir.Value[_ods_ir.IntegerType], src: _ods_ir.Value[_ods_ir.VectorType], seed: _ods_ir.Value[_ods_ir.IntegerType], scale: _ods_ir.Value[_ods_ir.FloatType], dstSelIndex: _Union[int, _ods_ir.IntegerAttr], *, loc: _Optional[_ods_ir.Location] = None, ip: _Optional[_ods_ir.InsertionPoint] = None):
    operands = []
    attributes = {}
    regions = None
    operands.append(oldVdst)
    operands.append(src)
    operands.append(seed)
    operands.append(scale)
    _ods_context = _ods_get_default_loc_context(loc)
    attributes["dstSelIndex"] = (dstSelIndex if (
    isinstance(dstSelIndex, _ods_ir.Attribute) or
    not _ods_ir.AttrBuilder.contains('I32Attr')) else
      _ods_ir.AttrBuilder.get('I32Attr')(dstSelIndex, context=_ods_context))
    results = []
    results.append(res)
    _ods_successors = None
    super().__init__(self.OPERATION_NAME, self._ODS_REGIONS, self._ODS_OPERAND_SEGMENTS, self._ODS_RESULT_SEGMENTS, attributes=attributes, results=results, operands=operands, successors=_ods_successors, regions=regions, loc=loc, ip=ip)

  @builtins.property
  def oldVdst(self) -> _ods_ir.Value[_ods_ir.IntegerType]:
    return self.operation.operands[0]

  @builtins.property
  def src(self) -> _ods_ir.Value[_ods_ir.VectorType]:
    return self.operation.operands[1]

  @builtins.property
  def seed(self) -> _ods_ir.Value[_ods_ir.IntegerType]:
    return self.operation.operands[2]

  @builtins.property
  def scale(self) -> _ods_ir.Value[_ods_ir.FloatType]:
    return self.operation.operands[3]

  @builtins.property
  def dstSelIndex(self) -> _ods_ir.IntegerAttr:
    return self.operation.attributes["dstSelIndex"]

  @dstSelIndex.setter
  def dstSelIndex(self, value: _ods_ir.IntegerAttr):
    if value is None:
      raise ValueError("'None' not allowed as value for mandatory attributes")
    self.operation.attributes["dstSelIndex"] = value

  @builtins.property
  def res(self) -> _ods_ir.OpResult[_ods_ir.IntegerType]:
    return self.operation.results[0]

@_ods_cext.register_op_adaptor(CvtScaleF32SrPkFp4F32Op)
class CvtScaleF32SrPkFp4F32OpAdaptor(_ods_ir.OpAdaptor):
  OPERATION_NAME = "rocdl.cvt.scalef32.sr.pk.fp4.f32"

  @builtins.property
  def oldVdst(self) -> _ods_ir.Value[_ods_ir.IntegerType]:
    return self.operands[0]

  @builtins.property
  def src(self) -> _ods_ir.Value[_ods_ir.VectorType]:
    return self.operands[1]

  @builtins.property
  def seed(self) -> _ods_ir.Value[_ods_ir.IntegerType]:
    return self.operands[2]

  @builtins.property
  def scale(self) -> _ods_ir.Value[_ods_ir.FloatType]:
    return self.operands[3]

  @builtins.property
  def dstSelIndex(self) -> _ods_ir.IntegerAttr:
    return self.attributes["dstSelIndex"]

def cvt_scalef32_sr_pk_fp4_f32(res: _ods_ir.Type, old_vdst: _ods_ir.Value[_ods_ir.IntegerType], src: _ods_ir.Value[_ods_ir.VectorType], seed: _ods_ir.Value[_ods_ir.IntegerType], scale: _ods_ir.Value[_ods_ir.FloatType], dst_sel_index: _Union[int, _ods_ir.IntegerAttr], *, loc: _Optional[_ods_ir.Location] = None, ip: _Optional[_ods_ir.InsertionPoint] = None) -> _ods_ir.OpResult[_ods_ir.IntegerType]:
  return CvtScaleF32SrPkFp4F32Op(res=res, oldVdst=old_vdst, src=src, seed=seed, scale=scale, dstSelIndex=dst_sel_index, loc=loc, ip=ip).result

@_ods_cext.register_operation(_Dialect)
class CvtScaleF322xPk16Bf6F32Op(_ods_ir.OpView):
  r"""
  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.
  """

  OPERATION_NAME = "rocdl.cvt.scalef32.2xpk16.bf6.f32"

  _ODS_REGIONS = (0, True)

  def __init__(self, res: _ods_ir.Type, src0: _ods_ir.Value[_ods_ir.VectorType], src1: _ods_ir.Value[_ods_ir.VectorType], scale: _ods_ir.Value[_ods_ir.FloatType], *, loc: _Optional[_ods_ir.Location] = None, ip: _Optional[_ods_ir.InsertionPoint] = None):
    operands = []
    attributes = {}
    regions = None
    operands.append(src0)
    operands.append(src1)
    operands.append(scale)
    _ods_context = _ods_get_default_loc_context(loc)
    results = []
    results.append(res)
    _ods_successors = None
    super().__init__(self.OPERATION_NAME, self._ODS_REGIONS, self._ODS_OPERAND_SEGMENTS, self._ODS_RESULT_SEGMENTS, attributes=attributes, results=results, operands=operands, successors=_ods_successors, regions=regions, loc=loc, ip=ip)

  @builtins.property
  def src0(self) -> _ods_ir.Value[_ods_ir.VectorType]:
    return self.operation.operands[0]

  @builtins.property
  def src1(self) -> _ods_ir.Value[_ods_ir.VectorType]:
    return self.operation.operands[1]

  @builtins.property
  def scale(self) -> _ods_ir.Value[_ods_ir.FloatType]:
    return self.operation.operands[2]

  @builtins.property
  def res(self) -> _ods_ir.OpResult[_ods_ir.VectorType]:
    return self.operation.results[0]

@_ods_cext.register_op_adaptor(CvtScaleF322xPk16Bf6F32Op)
class CvtScaleF322xPk16Bf6F32OpAdaptor(_ods_ir.OpAdaptor):
  OPERATION_NAME = "rocdl.cvt.scalef32.2xpk16.bf6.f32"

  @builtins.property
  def src0(self) -> _ods_ir.Value[_ods_ir.VectorType]:
    return self.operands[0]

  @builtins.property
  def src1(self) -> _ods_ir.Value[_ods_ir.VectorType]:
    return self.operands[1]

  @builtins.property
  def scale(self) -> _ods_ir.Value[_ods_ir.FloatType]:
    return self.operands[2]

def cvt_scalef32_2xpk16_bf6_f32(res: _ods_ir.Type, src0: _ods_ir.Value[_ods_ir.VectorType], src1: _ods_ir.Value[_ods_ir.VectorType], scale: _ods_ir.Value[_ods_ir.FloatType], *, loc: _Optional[_ods_ir.Location] = None, ip: _Optional[_ods_ir.InsertionPoint] = None) -> _ods_ir.OpResult[_ods_ir.VectorType]:
  return CvtScaleF322xPk16Bf6F32Op(res=res, src0=src0, src1=src1, scale=scale, loc=loc, ip=ip).result

@_ods_cext.register_operation(_Dialect)
class CvtScaleF322xPk16Fp6F32Op(_ods_ir.OpView):
  r"""
  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.
  """

  OPERATION_NAME = "rocdl.cvt.scalef32.2xpk16.fp6.f32"

  _ODS_REGIONS = (0, True)

  def __init__(self, res: _ods_ir.Type, src0: _ods_ir.Value[_ods_ir.VectorType], src1: _ods_ir.Value[_ods_ir.VectorType], scale: _ods_ir.Value[_ods_ir.FloatType], *, loc: _Optional[_ods_ir.Location] = None, ip: _Optional[_ods_ir.InsertionPoint] = None):
    operands = []
    attributes = {}
    regions = None
    operands.append(src0)
    operands.append(src1)
    operands.append(scale)
    _ods_context = _ods_get_default_loc_context(loc)
    results = []
    results.append(res)
    _ods_successors = None
    super().__init__(self.OPERATION_NAME, self._ODS_REGIONS, self._ODS_OPERAND_SEGMENTS, self._ODS_RESULT_SEGMENTS, attributes=attributes, results=results, operands=operands, successors=_ods_successors, regions=regions, loc=loc, ip=ip)

  @builtins.property
  def src0(self) -> _ods_ir.Value[_ods_ir.VectorType]:
    return self.operation.operands[0]

  @builtins.property
  def src1(self) -> _ods_ir.Value[_ods_ir.VectorType]:
    return self.operation.operands[1]

  @builtins.property
  def scale(self) -> _ods_ir.Value[_ods_ir.FloatType]:
    return self.operation.operands[2]

  @builtins.property
  def res(self) -> _ods_ir.OpResult[_ods_ir.VectorType]:
    return self.operation.results[0]

@_ods_cext.register_op_adaptor(CvtScaleF322xPk16Fp6F32Op)
class CvtScaleF322xPk16Fp6F32OpAdaptor(_ods_ir.OpAdaptor):
  OPERATION_NAME = "rocdl.cvt.scalef32.2xpk16.fp6.f32"

  @builtins.property
  def src0(self) -> _ods_ir.Value[_ods_ir.VectorType]:
    return self.operands[0]

  @builtins.property
  def src1(self) -> _ods_ir.Value[_ods_ir.VectorType]:
    return self.operands[1]

  @builtins.property
  def scale(self) -> _ods_ir.Value[_ods_ir.FloatType]:
    return self.operands[2]

def cvt_scalef32_2xpk16_fp6_f32(res: _ods_ir.Type, src0: _ods_ir.Value[_ods_ir.VectorType], src1: _ods_ir.Value[_ods_ir.VectorType], scale: _ods_ir.Value[_ods_ir.FloatType], *, loc: _Optional[_ods_ir.Location] = None, ip: _Optional[_ods_ir.InsertionPoint] = None) -> _ods_ir.OpResult[_ods_ir.VectorType]:
  return CvtScaleF322xPk16Fp6F32Op(res=res, src0=src0, src1=src1, scale=scale, loc=loc, ip=ip).result

@_ods_cext.register_operation(_Dialect)
class CvtSrBf8F32Op(_ods_ir.OpView):
  r"""
  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
  ```
  """

  OPERATION_NAME = "rocdl.cvt.sr.bf8.f32"

  _ODS_REGIONS = (0, True)

  def __init__(self, res: _ods_ir.Type, srcA: _ods_ir.Value[_ods_ir.FloatType], srcB: _ods_ir.Value[_ods_ir.IntegerType], old: _ods_ir.Value[_ods_ir.IntegerType], byteSel: _Union[int, _ods_ir.IntegerAttr], *, loc: _Optional[_ods_ir.Location] = None, ip: _Optional[_ods_ir.InsertionPoint] = None):
    operands = []
    attributes = {}
    regions = None
    operands.append(srcA)
    operands.append(srcB)
    operands.append(old)
    _ods_context = _ods_get_default_loc_context(loc)
    attributes["byteSel"] = (byteSel if (
    isinstance(byteSel, _ods_ir.Attribute) or
    not _ods_ir.AttrBuilder.contains('I32Attr')) else
      _ods_ir.AttrBuilder.get('I32Attr')(byteSel, context=_ods_context))
    results = []
    results.append(res)
    _ods_successors = None
    super().__init__(self.OPERATION_NAME, self._ODS_REGIONS, self._ODS_OPERAND_SEGMENTS, self._ODS_RESULT_SEGMENTS, attributes=attributes, results=results, operands=operands, successors=_ods_successors, regions=regions, loc=loc, ip=ip)

  @builtins.property
  def srcA(self) -> _ods_ir.Value[_ods_ir.FloatType]:
    return self.operation.operands[0]

  @builtins.property
  def srcB(self) -> _ods_ir.Value[_ods_ir.IntegerType]:
    return self.operation.operands[1]

  @builtins.property
  def old(self) -> _ods_ir.Value[_ods_ir.IntegerType]:
    return self.operation.operands[2]

  @builtins.property
  def byteSel(self) -> _ods_ir.IntegerAttr:
    return self.operation.attributes["byteSel"]

  @byteSel.setter
  def byteSel(self, value: _ods_ir.IntegerAttr):
    if value is None:
      raise ValueError("'None' not allowed as value for mandatory attributes")
    self.operation.attributes["byteSel"] = value

  @builtins.property
  def res(self) -> _ods_ir.OpResult:
    return self.operation.results[0]

@_ods_cext.register_op_adaptor(CvtSrBf8F32Op)
class CvtSrBf8F32OpAdaptor(_ods_ir.OpAdaptor):
  OPERATION_NAME = "rocdl.cvt.sr.bf8.f32"

  @builtins.property
  def srcA(self) -> _ods_ir.Value[_ods_ir.FloatType]:
    return self.operands[0]

  @builtins.property
  def srcB(self) -> _ods_ir.Value[_ods_ir.IntegerType]:
    return self.operands[1]

  @builtins.property
  def old(self) -> _ods_ir.Value[_ods_ir.IntegerType]:
    return self.operands[2]

  @builtins.property
  def byteSel(self) -> _ods_ir.IntegerAttr:
    return self.attributes["byteSel"]

def cvt_sr_bf8_f32(res: _ods_ir.Type, src_a: _ods_ir.Value[_ods_ir.FloatType], src_b: _ods_ir.Value[_ods_ir.IntegerType], old: _ods_ir.Value[_ods_ir.IntegerType], byte_sel: _Union[int, _ods_ir.IntegerAttr], *, loc: _Optional[_ods_ir.Location] = None, ip: _Optional[_ods_ir.InsertionPoint] = None) -> _ods_ir.OpResult:
  return CvtSrBf8F32Op(res=res, srcA=src_a, srcB=src_b, old=old, byteSel=byte_sel, loc=loc, ip=ip).result

@_ods_cext.register_operation(_Dialect)
class CvtSrFp8F32Op(_ods_ir.OpView):
  r"""
  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
  ```
  """

  OPERATION_NAME = "rocdl.cvt.sr.fp8.f32"

  _ODS_REGIONS = (0, True)

  def __init__(self, res: _ods_ir.Type, srcA: _ods_ir.Value[_ods_ir.FloatType], srcB: _ods_ir.Value[_ods_ir.IntegerType], old: _ods_ir.Value[_ods_ir.IntegerType], byteSel: _Union[int, _ods_ir.IntegerAttr], *, loc: _Optional[_ods_ir.Location] = None, ip: _Optional[_ods_ir.InsertionPoint] = None):
    operands = []
    attributes = {}
    regions = None
    operands.append(srcA)
    operands.append(srcB)
    operands.append(old)
    _ods_context = _ods_get_default_loc_context(loc)
    attributes["byteSel"] = (byteSel if (
    isinstance(byteSel, _ods_ir.Attribute) or
    not _ods_ir.AttrBuilder.contains('I32Attr')) else
      _ods_ir.AttrBuilder.get('I32Attr')(byteSel, context=_ods_context))
    results = []
    results.append(res)
    _ods_successors = None
    super().__init__(self.OPERATION_NAME, self._ODS_REGIONS, self._ODS_OPERAND_SEGMENTS, self._ODS_RESULT_SEGMENTS, attributes=attributes, results=results, operands=operands, successors=_ods_successors, regions=regions, loc=loc, ip=ip)

  @builtins.property
  def srcA(self) -> _ods_ir.Value[_ods_ir.FloatType]:
    return self.operation.operands[0]

  @builtins.property
  def srcB(self) -> _ods_ir.Value[_ods_ir.IntegerType]:
    return self.operation.operands[1]

  @builtins.property
  def old(self) -> _ods_ir.Value[_ods_ir.IntegerType]:
    return self.operation.operands[2]

  @builtins.property
  def byteSel(self) -> _ods_ir.IntegerAttr:
    return self.operation.attributes["byteSel"]

  @byteSel.setter
  def byteSel(self, value: _ods_ir.IntegerAttr):
    if value is None:
      raise ValueError("'None' not allowed as value for mandatory attributes")
    self.operation.attributes["byteSel"] = value

  @builtins.property
  def res(self) -> _ods_ir.OpResult:
    return self.operation.results[0]

@_ods_cext.register_op_adaptor(CvtSrFp8F32Op)
class CvtSrFp8F32OpAdaptor(_ods_ir.OpAdaptor):
  OPERATION_NAME = "rocdl.cvt.sr.fp8.f32"

  @builtins.property
  def srcA(self) -> _ods_ir.Value[_ods_ir.FloatType]:
    return self.operands[0]

  @builtins.property
  def srcB(self) -> _ods_ir.Value[_ods_ir.IntegerType]:
    return self.operands[1]

  @builtins.property
  def old(self) -> _ods_ir.Value[_ods_ir.IntegerType]:
    return self.operands[2]

  @builtins.property
  def byteSel(self) -> _ods_ir.IntegerAttr:
    return self.attributes["byteSel"]

def cvt_sr_fp8_f32(res: _ods_ir.Type, src_a: _ods_ir.Value[_ods_ir.FloatType], src_b: _ods_ir.Value[_ods_ir.IntegerType], old: _ods_ir.Value[_ods_ir.IntegerType], byte_sel: _Union[int, _ods_ir.IntegerAttr], *, loc: _Optional[_ods_ir.Location] = None, ip: _Optional[_ods_ir.InsertionPoint] = None) -> _ods_ir.OpResult:
  return CvtSrFp8F32Op(res=res, srcA=src_a, srcB=src_b, old=old, byteSel=byte_sel, loc=loc, ip=ip).result

@_ods_cext.register_operation(_Dialect)
class DPPUpdateOp(_ods_ir.OpView):
  OPERATION_NAME = "rocdl.update.dpp"

  _ODS_REGIONS = (0, True)

  def __init__(self, res: _ods_ir.Type, old: _ods_ir.Value, src: _ods_ir.Value, dppCtrl: _Union[int, _ods_ir.IntegerAttr], rowMask: _Union[int, _ods_ir.IntegerAttr], bankMask: _Union[int, _ods_ir.IntegerAttr], boundCtrl: _Union[bool, _ods_ir.BoolAttr], *, loc: _Optional[_ods_ir.Location] = None, ip: _Optional[_ods_ir.InsertionPoint] = None):
    operands = []
    attributes = {}
    regions = None
    operands.append(old)
    operands.append(src)
    _ods_context = _ods_get_default_loc_context(loc)
    attributes["dppCtrl"] = (dppCtrl if (
    isinstance(dppCtrl, _ods_ir.Attribute) or
    not _ods_ir.AttrBuilder.contains('I32Attr')) else
      _ods_ir.AttrBuilder.get('I32Attr')(dppCtrl, context=_ods_context))
    attributes["rowMask"] = (rowMask if (
    isinstance(rowMask, _ods_ir.Attribute) or
    not _ods_ir.AttrBuilder.contains('I32Attr')) else
      _ods_ir.AttrBuilder.get('I32Attr')(rowMask, context=_ods_context))
    attributes["bankMask"] = (bankMask if (
    isinstance(bankMask, _ods_ir.Attribute) or
    not _ods_ir.AttrBuilder.contains('I32Attr')) else
      _ods_ir.AttrBuilder.get('I32Attr')(bankMask, context=_ods_context))
    attributes["boundCtrl"] = (boundCtrl if (
    isinstance(boundCtrl, _ods_ir.Attribute) or
    not _ods_ir.AttrBuilder.contains('I1Attr')) else
      _ods_ir.AttrBuilder.get('I1Attr')(boundCtrl, context=_ods_context))
    results = []
    results.append(res)
    _ods_successors = None
    super().__init__(self.OPERATION_NAME, self._ODS_REGIONS, self._ODS_OPERAND_SEGMENTS, self._ODS_RESULT_SEGMENTS, attributes=attributes, results=results, operands=operands, successors=_ods_successors, regions=regions, loc=loc, ip=ip)

  @builtins.property
  def old(self) -> _ods_ir.Value:
    return self.operation.operands[0]

  @builtins.property
  def src(self) -> _ods_ir.Value:
    return self.operation.operands[1]

  @builtins.property
  def dppCtrl(self) -> _ods_ir.IntegerAttr:
    return self.operation.attributes["dppCtrl"]

  @dppCtrl.setter
  def dppCtrl(self, value: _ods_ir.IntegerAttr):
    if value is None:
      raise ValueError("'None' not allowed as value for mandatory attributes")
    self.operation.attributes["dppCtrl"] = value

  @builtins.property
  def rowMask(self) -> _ods_ir.IntegerAttr:
    return self.operation.attributes["rowMask"]

  @rowMask.setter
  def rowMask(self, value: _ods_ir.IntegerAttr):
    if value is None:
      raise ValueError("'None' not allowed as value for mandatory attributes")
    self.operation.attributes["rowMask"] = value

  @builtins.property
  def bankMask(self) -> _ods_ir.IntegerAttr:
    return self.operation.attributes["bankMask"]

  @bankMask.setter
  def bankMask(self, value: _ods_ir.IntegerAttr):
    if value is None:
      raise ValueError("'None' not allowed as value for mandatory attributes")
    self.operation.attributes["bankMask"] = value

  @builtins.property
  def boundCtrl(self) -> _ods_ir.BoolAttr:
    return self.operation.attributes["boundCtrl"]

  @boundCtrl.setter
  def boundCtrl(self, value: _ods_ir.BoolAttr):
    if value is None:
      raise ValueError("'None' not allowed as value for mandatory attributes")
    self.operation.attributes["boundCtrl"] = value

  @builtins.property
  def res(self) -> _ods_ir.OpResult:
    return self.operation.results[0]

@_ods_cext.register_op_adaptor(DPPUpdateOp)
class DPPUpdateOpAdaptor(_ods_ir.OpAdaptor):
  OPERATION_NAME = "rocdl.update.dpp"

  @builtins.property
  def old(self) -> _ods_ir.Value:
    return self.operands[0]

  @builtins.property
  def src(self) -> _ods_ir.Value:
    return self.operands[1]

  @builtins.property
  def dppCtrl(self) -> _ods_ir.IntegerAttr:
    return self.attributes["dppCtrl"]

  @builtins.property
  def rowMask(self) -> _ods_ir.IntegerAttr:
    return self.attributes["rowMask"]

  @builtins.property
  def bankMask(self) -> _ods_ir.IntegerAttr:
    return self.attributes["bankMask"]

  @builtins.property
  def boundCtrl(self) -> _ods_ir.BoolAttr:
    return self.attributes["boundCtrl"]

def update_dpp(res: _ods_ir.Type, old: _ods_ir.Value, src: _ods_ir.Value, dpp_ctrl: _Union[int, _ods_ir.IntegerAttr], row_mask: _Union[int, _ods_ir.IntegerAttr], bank_mask: _Union[int, _ods_ir.IntegerAttr], bound_ctrl: _Union[bool, _ods_ir.BoolAttr], *, loc: _Optional[_ods_ir.Location] = None, ip: _Optional[_ods_ir.InsertionPoint] = None) -> _ods_ir.OpResult:
  return DPPUpdateOp(res=res, old=old, src=src, dppCtrl=dpp_ctrl, rowMask=row_mask, bankMask=bank_mask, boundCtrl=bound_ctrl, loc=loc, ip=ip).result

@_ods_cext.register_operation(_Dialect)
class DsAtomicAsyncBarrierArriveOp(_ods_ir.OpView):
  r"""
  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>
  ```
  """

  OPERATION_NAME = "rocdl.ds.atomic.async.barrier.arrive.b64"

  _ODS_REGIONS = (0, True)

  def __init__(self, barrierPtr: _ods_ir.Value, *, alias_scopes: _Optional[_Union[_Any, _ods_ir.ArrayAttr]] = None, noalias_scopes: _Optional[_Union[_Any, _ods_ir.ArrayAttr]] = None, tbaa: _Optional[_Union[_Any, _ods_ir.ArrayAttr]] = None, loc: _Optional[_ods_ir.Location] = None, ip: _Optional[_ods_ir.InsertionPoint] = None):
    operands = []
    attributes = {}
    regions = None
    operands.append(barrierPtr)
    _ods_context = _ods_get_default_loc_context(loc)
    if alias_scopes is not None: attributes["alias_scopes"] = (alias_scopes if (
        isinstance(alias_scopes, _ods_ir.Attribute) or
        not _ods_ir.AttrBuilder.contains('LLVM_AliasScopeArrayAttr')) else
          _ods_ir.AttrBuilder.get('LLVM_AliasScopeArrayAttr')(alias_scopes, context=_ods_context))
    if noalias_scopes is not None: attributes["noalias_scopes"] = (noalias_scopes if (
        isinstance(noalias_scopes, _ods_ir.Attribute) or
        not _ods_ir.AttrBuilder.contains('LLVM_AliasScopeArrayAttr')) else
          _ods_ir.AttrBuilder.get('LLVM_AliasScopeArrayAttr')(noalias_scopes, context=_ods_context))
    if tbaa is not None: attributes["tbaa"] = (tbaa if (
        isinstance(tbaa, _ods_ir.Attribute) or
        not _ods_ir.AttrBuilder.contains('LLVM_TBAATagArrayAttr')) else
          _ods_ir.AttrBuilder.get('LLVM_TBAATagArrayAttr')(tbaa, context=_ods_context))
    results = []
    _ods_successors = None
    super().__init__(self.OPERATION_NAME, self._ODS_REGIONS, self._ODS_OPERAND_SEGMENTS, self._ODS_RESULT_SEGMENTS, attributes=attributes, results=results, operands=operands, successors=_ods_successors, regions=regions, loc=loc, ip=ip)

  @builtins.property
  def barrierPtr(self) -> _ods_ir.Value:
    return self.operation.operands[0]

  @builtins.property
  def alias_scopes(self) -> _Optional[_ods_ir.ArrayAttr]:
    if "alias_scopes" not in self.operation.attributes:
      return None
    return self.operation.attributes["alias_scopes"]

  @alias_scopes.setter
  def alias_scopes(self, value: _Optional[_ods_ir.ArrayAttr]):
    if value is not None:
      self.operation.attributes["alias_scopes"] = value
    elif "alias_scopes" in self.operation.attributes:
      del self.operation.attributes["alias_scopes"]

  @alias_scopes.deleter
  def alias_scopes(self):
    del self.operation.attributes["alias_scopes"]

  @builtins.property
  def noalias_scopes(self) -> _Optional[_ods_ir.ArrayAttr]:
    if "noalias_scopes" not in self.operation.attributes:
      return None
    return self.operation.attributes["noalias_scopes"]

  @noalias_scopes.setter
  def noalias_scopes(self, value: _Optional[_ods_ir.ArrayAttr]):
    if value is not None:
      self.operation.attributes["noalias_scopes"] = value
    elif "noalias_scopes" in self.operation.attributes:
      del self.operation.attributes["noalias_scopes"]

  @noalias_scopes.deleter
  def noalias_scopes(self):
    del self.operation.attributes["noalias_scopes"]

  @builtins.property
  def tbaa(self) -> _Optional[_ods_ir.ArrayAttr]:
    if "tbaa" not in self.operation.attributes:
      return None
    return self.operation.attributes["tbaa"]

  @tbaa.setter
  def tbaa(self, value: _Optional[_ods_ir.ArrayAttr]):
    if value is not None:
      self.operation.attributes["tbaa"] = value
    elif "tbaa" in self.operation.attributes:
      del self.operation.attributes["tbaa"]

  @tbaa.deleter
  def tbaa(self):
    del self.operation.attributes["tbaa"]

@_ods_cext.register_op_adaptor(DsAtomicAsyncBarrierArriveOp)
class DsAtomicAsyncBarrierArriveOpAdaptor(_ods_ir.OpAdaptor):
  OPERATION_NAME = "rocdl.ds.atomic.async.barrier.arrive.b64"

  @builtins.property
  def barrierPtr(self) -> _ods_ir.Value:
    return self.operands[0]

  @builtins.property
  def alias_scopes(self) -> _Optional[_ods_ir.ArrayAttr]:
    if "alias_scopes" not in self.attributes:
      return None
    return self.attributes["alias_scopes"]

  @builtins.property
  def noalias_scopes(self) -> _Optional[_ods_ir.ArrayAttr]:
    if "noalias_scopes" not in self.attributes:
      return None
    return self.attributes["noalias_scopes"]

  @builtins.property
  def tbaa(self) -> _Optional[_ods_ir.ArrayAttr]:
    if "tbaa" not in self.attributes:
      return None
    return self.attributes["tbaa"]

def ds_atomic_async_barrier_arrive_b64(barrier_ptr: _ods_ir.Value, *, alias_scopes: _Optional[_Union[_Any, _ods_ir.ArrayAttr]] = None, noalias_scopes: _Optional[_Union[_Any, _ods_ir.ArrayAttr]] = None, tbaa: _Optional[_Union[_Any, _ods_ir.ArrayAttr]] = None, loc: _Optional[_ods_ir.Location] = None, ip: _Optional[_ods_ir.InsertionPoint] = None) -> DsAtomicAsyncBarrierArriveOp:
  return DsAtomicAsyncBarrierArriveOp(barrierPtr=barrier_ptr, alias_scopes=alias_scopes, noalias_scopes=noalias_scopes, tbaa=tbaa, loc=loc, ip=ip)

@_ods_cext.register_operation(_Dialect)
class DsAtomicBarrierArriveRtnOp(_ods_ir.OpView):
  r"""
  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
  ```
  """

  OPERATION_NAME = "rocdl.ds.atomic.barrier.arrive.rtn.b64"

  _ODS_REGIONS = (0, True)

  def __init__(self, res: _ods_ir.Type, barrierPtr: _ods_ir.Value, val: _ods_ir.Value[_ods_ir.IntegerType], *, alias_scopes: _Optional[_Union[_Any, _ods_ir.ArrayAttr]] = None, noalias_scopes: _Optional[_Union[_Any, _ods_ir.ArrayAttr]] = None, tbaa: _Optional[_Union[_Any, _ods_ir.ArrayAttr]] = None, loc: _Optional[_ods_ir.Location] = None, ip: _Optional[_ods_ir.InsertionPoint] = None):
    operands = []
    attributes = {}
    regions = None
    operands.append(barrierPtr)
    operands.append(val)
    _ods_context = _ods_get_default_loc_context(loc)
    if alias_scopes is not None: attributes["alias_scopes"] = (alias_scopes if (
        isinstance(alias_scopes, _ods_ir.Attribute) or
        not _ods_ir.AttrBuilder.contains('LLVM_AliasScopeArrayAttr')) else
          _ods_ir.AttrBuilder.get('LLVM_AliasScopeArrayAttr')(alias_scopes, context=_ods_context))
    if noalias_scopes is not None: attributes["noalias_scopes"] = (noalias_scopes if (
        isinstance(noalias_scopes, _ods_ir.Attribute) or
        not _ods_ir.AttrBuilder.contains('LLVM_AliasScopeArrayAttr')) else
          _ods_ir.AttrBuilder.get('LLVM_AliasScopeArrayAttr')(noalias_scopes, context=_ods_context))
    if tbaa is not None: attributes["tbaa"] = (tbaa if (
        isinstance(tbaa, _ods_ir.Attribute) or
        not _ods_ir.AttrBuilder.contains('LLVM_TBAATagArrayAttr')) else
          _ods_ir.AttrBuilder.get('LLVM_TBAATagArrayAttr')(tbaa, context=_ods_context))
    results = []
    results.append(res)
    _ods_successors = None
    super().__init__(self.OPERATION_NAME, self._ODS_REGIONS, self._ODS_OPERAND_SEGMENTS, self._ODS_RESULT_SEGMENTS, attributes=attributes, results=results, operands=operands, successors=_ods_successors, regions=regions, loc=loc, ip=ip)

  @builtins.property
  def barrierPtr(self) -> _ods_ir.Value:
    return self.operation.operands[0]

  @builtins.property
  def val(self) -> _ods_ir.Value[_ods_ir.IntegerType]:
    return self.operation.operands[1]

  @builtins.property
  def alias_scopes(self) -> _Optional[_ods_ir.ArrayAttr]:
    if "alias_scopes" not in self.operation.attributes:
      return None
    return self.operation.attributes["alias_scopes"]

  @alias_scopes.setter
  def alias_scopes(self, value: _Optional[_ods_ir.ArrayAttr]):
    if value is not None:
      self.operation.attributes["alias_scopes"] = value
    elif "alias_scopes" in self.operation.attributes:
      del self.operation.attributes["alias_scopes"]

  @alias_scopes.deleter
  def alias_scopes(self):
    del self.operation.attributes["alias_scopes"]

  @builtins.property
  def noalias_scopes(self) -> _Optional[_ods_ir.ArrayAttr]:
    if "noalias_scopes" not in self.operation.attributes:
      return None
    return self.operation.attributes["noalias_scopes"]

  @noalias_scopes.setter
  def noalias_scopes(self, value: _Optional[_ods_ir.ArrayAttr]):
    if value is not None:
      self.operation.attributes["noalias_scopes"] = value
    elif "noalias_scopes" in self.operation.attributes:
      del self.operation.attributes["noalias_scopes"]

  @noalias_scopes.deleter
  def noalias_scopes(self):
    del self.operation.attributes["noalias_scopes"]

  @builtins.property
  def tbaa(self) -> _Optional[_ods_ir.ArrayAttr]:
    if "tbaa" not in self.operation.attributes:
      return None
    return self.operation.attributes["tbaa"]

  @tbaa.setter
  def tbaa(self, value: _Optional[_ods_ir.ArrayAttr]):
    if value is not None:
      self.operation.attributes["tbaa"] = value
    elif "tbaa" in self.operation.attributes:
      del self.operation.attributes["tbaa"]

  @tbaa.deleter
  def tbaa(self):
    del self.operation.attributes["tbaa"]

  @builtins.property
  def res(self) -> _ods_ir.OpResult[_ods_ir.IntegerType]:
    return self.operation.results[0]

@_ods_cext.register_op_adaptor(DsAtomicBarrierArriveRtnOp)
class DsAtomicBarrierArriveRtnOpAdaptor(_ods_ir.OpAdaptor):
  OPERATION_NAME = "rocdl.ds.atomic.barrier.arrive.rtn.b64"

  @builtins.property
  def barrierPtr(self) -> _ods_ir.Value:
    return self.operands[0]

  @builtins.property
  def val(self) -> _ods_ir.Value[_ods_ir.IntegerType]:
    return self.operands[1]

  @builtins.property
  def alias_scopes(self) -> _Optional[_ods_ir.ArrayAttr]:
    if "alias_scopes" not in self.attributes:
      return None
    return self.attributes["alias_scopes"]

  @builtins.property
  def noalias_scopes(self) -> _Optional[_ods_ir.ArrayAttr]:
    if "noalias_scopes" not in self.attributes:
      return None
    return self.attributes["noalias_scopes"]

  @builtins.property
  def tbaa(self) -> _Optional[_ods_ir.ArrayAttr]:
    if "tbaa" not in self.attributes:
      return None
    return self.attributes["tbaa"]

def ds_atomic_barrier_arrive_rtn_b64(res: _ods_ir.Type, barrier_ptr: _ods_ir.Value, val: _ods_ir.Value[_ods_ir.IntegerType], *, alias_scopes: _Optional[_Union[_Any, _ods_ir.ArrayAttr]] = None, noalias_scopes: _Optional[_Union[_Any, _ods_ir.ArrayAttr]] = None, tbaa: _Optional[_Union[_Any, _ods_ir.ArrayAttr]] = None, loc: _Optional[_ods_ir.Location] = None, ip: _Optional[_ods_ir.InsertionPoint] = None) -> _ods_ir.OpResult[_ods_ir.IntegerType]:
  return DsAtomicBarrierArriveRtnOp(res=res, barrierPtr=barrier_ptr, val=val, alias_scopes=alias_scopes, noalias_scopes=noalias_scopes, tbaa=tbaa, loc=loc, ip=ip).result

@_ods_cext.register_operation(_Dialect)
class DsBpermuteOp(_ods_ir.OpView):
  r"""
  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
  ```
  """

  OPERATION_NAME = "rocdl.ds_bpermute"

  _ODS_REGIONS = (0, True)

  def __init__(self, res: _ods_ir.Type, index: _ods_ir.Value[_ods_ir.IntegerType], src: _ods_ir.Value[_ods_ir.IntegerType], *, loc: _Optional[_ods_ir.Location] = None, ip: _Optional[_ods_ir.InsertionPoint] = None):
    operands = []
    attributes = {}
    regions = None
    operands.append(index)
    operands.append(src)
    _ods_context = _ods_get_default_loc_context(loc)
    results = []
    results.append(res)
    _ods_successors = None
    super().__init__(self.OPERATION_NAME, self._ODS_REGIONS, self._ODS_OPERAND_SEGMENTS, self._ODS_RESULT_SEGMENTS, attributes=attributes, results=results, operands=operands, successors=_ods_successors, regions=regions, loc=loc, ip=ip)

  @builtins.property
  def index(self) -> _ods_ir.Value[_ods_ir.IntegerType]:
    return self.operation.operands[0]

  @builtins.property
  def src(self) -> _ods_ir.Value[_ods_ir.IntegerType]:
    return self.operation.operands[1]

  @builtins.property
  def res(self) -> _ods_ir.OpResult[_ods_ir.IntegerType]:
    return self.operation.results[0]

@_ods_cext.register_op_adaptor(DsBpermuteOp)
class DsBpermuteOpAdaptor(_ods_ir.OpAdaptor):
  OPERATION_NAME = "rocdl.ds_bpermute"

  @builtins.property
  def index(self) -> _ods_ir.Value[_ods_ir.IntegerType]:
    return self.operands[0]

  @builtins.property
  def src(self) -> _ods_ir.Value[_ods_ir.IntegerType]:
    return self.operands[1]

def ds_bpermute(res: _ods_ir.Type, index: _ods_ir.Value[_ods_ir.IntegerType], src: _ods_ir.Value[_ods_ir.IntegerType], *, loc: _Optional[_ods_ir.Location] = None, ip: _Optional[_ods_ir.InsertionPoint] = None) -> _ods_ir.OpResult[_ods_ir.IntegerType]:
  return DsBpermuteOp(res=res, index=index, src=src, loc=loc, ip=ip).result

@_ods_cext.register_operation(_Dialect)
class DsLoadTr4_B64(_ods_ir.OpView):
  r"""
  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>
  ```
  """

  OPERATION_NAME = "rocdl.ds.load.tr4.b64"

  _ODS_REGIONS = (0, True)

  def __init__(self, res: _ods_ir.Type, ptr: _ods_ir.Value, *, alias_scopes: _Optional[_Union[_Any, _ods_ir.ArrayAttr]] = None, noalias_scopes: _Optional[_Union[_Any, _ods_ir.ArrayAttr]] = None, tbaa: _Optional[_Union[_Any, _ods_ir.ArrayAttr]] = None, loc: _Optional[_ods_ir.Location] = None, ip: _Optional[_ods_ir.InsertionPoint] = None):
    operands = []
    attributes = {}
    regions = None
    operands.append(ptr)
    _ods_context = _ods_get_default_loc_context(loc)
    if alias_scopes is not None: attributes["alias_scopes"] = (alias_scopes if (
        isinstance(alias_scopes, _ods_ir.Attribute) or
        not _ods_ir.AttrBuilder.contains('LLVM_AliasScopeArrayAttr')) else
          _ods_ir.AttrBuilder.get('LLVM_AliasScopeArrayAttr')(alias_scopes, context=_ods_context))
    if noalias_scopes is not None: attributes["noalias_scopes"] = (noalias_scopes if (
        isinstance(noalias_scopes, _ods_ir.Attribute) or
        not _ods_ir.AttrBuilder.contains('LLVM_AliasScopeArrayAttr')) else
          _ods_ir.AttrBuilder.get('LLVM_AliasScopeArrayAttr')(noalias_scopes, context=_ods_context))
    if tbaa is not None: attributes["tbaa"] = (tbaa if (
        isinstance(tbaa, _ods_ir.Attribute) or
        not _ods_ir.AttrBuilder.contains('LLVM_TBAATagArrayAttr')) else
          _ods_ir.AttrBuilder.get('LLVM_TBAATagArrayAttr')(tbaa, context=_ods_context))
    results = []
    results.append(res)
    _ods_successors = None
    super().__init__(self.OPERATION_NAME, self._ODS_REGIONS, self._ODS_OPERAND_SEGMENTS, self._ODS_RESULT_SEGMENTS, attributes=attributes, results=results, operands=operands, successors=_ods_successors, regions=regions, loc=loc, ip=ip)

  @builtins.property
  def ptr(self) -> _ods_ir.Value:
    return self.operation.operands[0]

  @builtins.property
  def alias_scopes(self) -> _Optional[_ods_ir.ArrayAttr]:
    if "alias_scopes" not in self.operation.attributes:
      return None
    return self.operation.attributes["alias_scopes"]

  @alias_scopes.setter
  def alias_scopes(self, value: _Optional[_ods_ir.ArrayAttr]):
    if value is not None:
      self.operation.attributes["alias_scopes"] = value
    elif "alias_scopes" in self.operation.attributes:
      del self.operation.attributes["alias_scopes"]

  @alias_scopes.deleter
  def alias_scopes(self):
    del self.operation.attributes["alias_scopes"]

  @builtins.property
  def noalias_scopes(self) -> _Optional[_ods_ir.ArrayAttr]:
    if "noalias_scopes" not in self.operation.attributes:
      return None
    return self.operation.attributes["noalias_scopes"]

  @noalias_scopes.setter
  def noalias_scopes(self, value: _Optional[_ods_ir.ArrayAttr]):
    if value is not None:
      self.operation.attributes["noalias_scopes"] = value
    elif "noalias_scopes" in self.operation.attributes:
      del self.operation.attributes["noalias_scopes"]

  @noalias_scopes.deleter
  def noalias_scopes(self):
    del self.operation.attributes["noalias_scopes"]

  @builtins.property
  def tbaa(self) -> _Optional[_ods_ir.ArrayAttr]:
    if "tbaa" not in self.operation.attributes:
      return None
    return self.operation.attributes["tbaa"]

  @tbaa.setter
  def tbaa(self, value: _Optional[_ods_ir.ArrayAttr]):
    if value is not None:
      self.operation.attributes["tbaa"] = value
    elif "tbaa" in self.operation.attributes:
      del self.operation.attributes["tbaa"]

  @tbaa.deleter
  def tbaa(self):
    del self.operation.attributes["tbaa"]

  @builtins.property
  def res(self) -> _ods_ir.OpResult:
    return self.operation.results[0]

@_ods_cext.register_op_adaptor(DsLoadTr4_B64)
class DsLoadTr4_B64Adaptor(_ods_ir.OpAdaptor):
  OPERATION_NAME = "rocdl.ds.load.tr4.b64"

  @builtins.property
  def ptr(self) -> _ods_ir.Value:
    return self.operands[0]

  @builtins.property
  def alias_scopes(self) -> _Optional[_ods_ir.ArrayAttr]:
    if "alias_scopes" not in self.attributes:
      return None
    return self.attributes["alias_scopes"]

  @builtins.property
  def noalias_scopes(self) -> _Optional[_ods_ir.ArrayAttr]:
    if "noalias_scopes" not in self.attributes:
      return None
    return self.attributes["noalias_scopes"]

  @builtins.property
  def tbaa(self) -> _Optional[_ods_ir.ArrayAttr]:
    if "tbaa" not in self.attributes:
      return None
    return self.attributes["tbaa"]

def ds_load_tr4_b64(res: _ods_ir.Type, ptr: _ods_ir.Value, *, alias_scopes: _Optional[_Union[_Any, _ods_ir.ArrayAttr]] = None, noalias_scopes: _Optional[_Union[_Any, _ods_ir.ArrayAttr]] = None, tbaa: _Optional[_Union[_Any, _ods_ir.ArrayAttr]] = None, loc: _Optional[_ods_ir.Location] = None, ip: _Optional[_ods_ir.InsertionPoint] = None) -> _ods_ir.OpResult:
  return DsLoadTr4_B64(res=res, ptr=ptr, alias_scopes=alias_scopes, noalias_scopes=noalias_scopes, tbaa=tbaa, loc=loc, ip=ip).result

@_ods_cext.register_operation(_Dialect)
class DsLoadTr6_B96(_ods_ir.OpView):
  r"""
  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>
  ```
  """

  OPERATION_NAME = "rocdl.ds.load.tr6.b96"

  _ODS_REGIONS = (0, True)

  def __init__(self, res: _ods_ir.Type, ptr: _ods_ir.Value, *, alias_scopes: _Optional[_Union[_Any, _ods_ir.ArrayAttr]] = None, noalias_scopes: _Optional[_Union[_Any, _ods_ir.ArrayAttr]] = None, tbaa: _Optional[_Union[_Any, _ods_ir.ArrayAttr]] = None, loc: _Optional[_ods_ir.Location] = None, ip: _Optional[_ods_ir.InsertionPoint] = None):
    operands = []
    attributes = {}
    regions = None
    operands.append(ptr)
    _ods_context = _ods_get_default_loc_context(loc)
    if alias_scopes is not None: attributes["alias_scopes"] = (alias_scopes if (
        isinstance(alias_scopes, _ods_ir.Attribute) or
        not _ods_ir.AttrBuilder.contains('LLVM_AliasScopeArrayAttr')) else
          _ods_ir.AttrBuilder.get('LLVM_AliasScopeArrayAttr')(alias_scopes, context=_ods_context))
    if noalias_scopes is not None: attributes["noalias_scopes"] = (noalias_scopes if (
        isinstance(noalias_scopes, _ods_ir.Attribute) or
        not _ods_ir.AttrBuilder.contains('LLVM_AliasScopeArrayAttr')) else
          _ods_ir.AttrBuilder.get('LLVM_AliasScopeArrayAttr')(noalias_scopes, context=_ods_context))
    if tbaa is not None: attributes["tbaa"] = (tbaa if (
        isinstance(tbaa, _ods_ir.Attribute) or
        not _ods_ir.AttrBuilder.contains('LLVM_TBAATagArrayAttr')) else
          _ods_ir.AttrBuilder.get('LLVM_TBAATagArrayAttr')(tbaa, context=_ods_context))
    results = []
    results.append(res)
    _ods_successors = None
    super().__init__(self.OPERATION_NAME, self._ODS_REGIONS, self._ODS_OPERAND_SEGMENTS, self._ODS_RESULT_SEGMENTS, attributes=attributes, results=results, operands=operands, successors=_ods_successors, regions=regions, loc=loc, ip=ip)

  @builtins.property
  def ptr(self) -> _ods_ir.Value:
    return self.operation.operands[0]

  @builtins.property
  def alias_scopes(self) -> _Optional[_ods_ir.ArrayAttr]:
    if "alias_scopes" not in self.operation.attributes:
      return None
    return self.operation.attributes["alias_scopes"]

  @alias_scopes.setter
  def alias_scopes(self, value: _Optional[_ods_ir.ArrayAttr]):
    if value is not None:
      self.operation.attributes["alias_scopes"] = value
    elif "alias_scopes" in self.operation.attributes:
      del self.operation.attributes["alias_scopes"]

  @alias_scopes.deleter
  def alias_scopes(self):
    del self.operation.attributes["alias_scopes"]

  @builtins.property
  def noalias_scopes(self) -> _Optional[_ods_ir.ArrayAttr]:
    if "noalias_scopes" not in self.operation.attributes:
      return None
    return self.operation.attributes["noalias_scopes"]

  @noalias_scopes.setter
  def noalias_scopes(self, value: _Optional[_ods_ir.ArrayAttr]):
    if value is not None:
      self.operation.attributes["noalias_scopes"] = value
    elif "noalias_scopes" in self.operation.attributes:
      del self.operation.attributes["noalias_scopes"]

  @noalias_scopes.deleter
  def noalias_scopes(self):
    del self.operation.attributes["noalias_scopes"]

  @builtins.property
  def tbaa(self) -> _Optional[_ods_ir.ArrayAttr]:
    if "tbaa" not in self.operation.attributes:
      return None
    return self.operation.attributes["tbaa"]

  @tbaa.setter
  def tbaa(self, value: _Optional[_ods_ir.ArrayAttr]):
    if value is not None:
      self.operation.attributes["tbaa"] = value
    elif "tbaa" in self.operation.attributes:
      del self.operation.attributes["tbaa"]

  @tbaa.deleter
  def tbaa(self):
    del self.operation.attributes["tbaa"]

  @builtins.property
  def res(self) -> _ods_ir.OpResult:
    return self.operation.results[0]

@_ods_cext.register_op_adaptor(DsLoadTr6_B96)
class DsLoadTr6_B96Adaptor(_ods_ir.OpAdaptor):
  OPERATION_NAME = "rocdl.ds.load.tr6.b96"

  @builtins.property
  def ptr(self) -> _ods_ir.Value:
    return self.operands[0]

  @builtins.property
  def alias_scopes(self) -> _Optional[_ods_ir.ArrayAttr]:
    if "alias_scopes" not in self.attributes:
      return None
    return self.attributes["alias_scopes"]

  @builtins.property
  def noalias_scopes(self) -> _Optional[_ods_ir.ArrayAttr]:
    if "noalias_scopes" not in self.attributes:
      return None
    return self.attributes["noalias_scopes"]

  @builtins.property
  def tbaa(self) -> _Optional[_ods_ir.ArrayAttr]:
    if "tbaa" not in self.attributes:
      return None
    return self.attributes["tbaa"]

def ds_load_tr6_b96(res: _ods_ir.Type, ptr: _ods_ir.Value, *, alias_scopes: _Optional[_Union[_Any, _ods_ir.ArrayAttr]] = None, noalias_scopes: _Optional[_Union[_Any, _ods_ir.ArrayAttr]] = None, tbaa: _Optional[_Union[_Any, _ods_ir.ArrayAttr]] = None, loc: _Optional[_ods_ir.Location] = None, ip: _Optional[_ods_ir.InsertionPoint] = None) -> _ods_ir.OpResult:
  return DsLoadTr6_B96(res=res, ptr=ptr, alias_scopes=alias_scopes, noalias_scopes=noalias_scopes, tbaa=tbaa, loc=loc, ip=ip).result

@_ods_cext.register_operation(_Dialect)
class DsLoadTr8_B64(_ods_ir.OpView):
  r"""
  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>
  ```
  """

  OPERATION_NAME = "rocdl.ds.load.tr8.b64"

  _ODS_REGIONS = (0, True)

  def __init__(self, res: _ods_ir.Type, ptr: _ods_ir.Value, *, alias_scopes: _Optional[_Union[_Any, _ods_ir.ArrayAttr]] = None, noalias_scopes: _Optional[_Union[_Any, _ods_ir.ArrayAttr]] = None, tbaa: _Optional[_Union[_Any, _ods_ir.ArrayAttr]] = None, loc: _Optional[_ods_ir.Location] = None, ip: _Optional[_ods_ir.InsertionPoint] = None):
    operands = []
    attributes = {}
    regions = None
    operands.append(ptr)
    _ods_context = _ods_get_default_loc_context(loc)
    if alias_scopes is not None: attributes["alias_scopes"] = (alias_scopes if (
        isinstance(alias_scopes, _ods_ir.Attribute) or
        not _ods_ir.AttrBuilder.contains('LLVM_AliasScopeArrayAttr')) else
          _ods_ir.AttrBuilder.get('LLVM_AliasScopeArrayAttr')(alias_scopes, context=_ods_context))
    if noalias_scopes is not None: attributes["noalias_scopes"] = (noalias_scopes if (
        isinstance(noalias_scopes, _ods_ir.Attribute) or
        not _ods_ir.AttrBuilder.contains('LLVM_AliasScopeArrayAttr')) else
          _ods_ir.AttrBuilder.get('LLVM_AliasScopeArrayAttr')(noalias_scopes, context=_ods_context))
    if tbaa is not None: attributes["tbaa"] = (tbaa if (
        isinstance(tbaa, _ods_ir.Attribute) or
        not _ods_ir.AttrBuilder.contains('LLVM_TBAATagArrayAttr')) else
          _ods_ir.AttrBuilder.get('LLVM_TBAATagArrayAttr')(tbaa, context=_ods_context))
    results = []
    results.append(res)
    _ods_successors = None
    super().__init__(self.OPERATION_NAME, self._ODS_REGIONS, self._ODS_OPERAND_SEGMENTS, self._ODS_RESULT_SEGMENTS, attributes=attributes, results=results, operands=operands, successors=_ods_successors, regions=regions, loc=loc, ip=ip)

  @builtins.property
  def ptr(self) -> _ods_ir.Value:
    return self.operation.operands[0]

  @builtins.property
  def alias_scopes(self) -> _Optional[_ods_ir.ArrayAttr]:
    if "alias_scopes" not in self.operation.attributes:
      return None
    return self.operation.attributes["alias_scopes"]

  @alias_scopes.setter
  def alias_scopes(self, value: _Optional[_ods_ir.ArrayAttr]):
    if value is not None:
      self.operation.attributes["alias_scopes"] = value
    elif "alias_scopes" in self.operation.attributes:
      del self.operation.attributes["alias_scopes"]

  @alias_scopes.deleter
  def alias_scopes(self):
    del self.operation.attributes["alias_scopes"]

  @builtins.property
  def noalias_scopes(self) -> _Optional[_ods_ir.ArrayAttr]:
    if "noalias_scopes" not in self.operation.attributes:
      return None
    return self.operation.attributes["noalias_scopes"]

  @noalias_scopes.setter
  def noalias_scopes(self, value: _Optional[_ods_ir.ArrayAttr]):
    if value is not None:
      self.operation.attributes["noalias_scopes"] = value
    elif "noalias_scopes" in self.operation.attributes:
      del self.operation.attributes["noalias_scopes"]

  @noalias_scopes.deleter
  def noalias_scopes(self):
    del self.operation.attributes["noalias_scopes"]

  @builtins.property
  def tbaa(self) -> _Optional[_ods_ir.ArrayAttr]:
    if "tbaa" not in self.operation.attributes:
      return None
    return self.operation.attributes["tbaa"]

  @tbaa.setter
  def tbaa(self, value: _Optional[_ods_ir.ArrayAttr]):
    if value is not None:
      self.operation.attributes["tbaa"] = value
    elif "tbaa" in self.operation.attributes:
      del self.operation.attributes["tbaa"]

  @tbaa.deleter
  def tbaa(self):
    del self.operation.attributes["tbaa"]

  @builtins.property
  def res(self) -> _ods_ir.OpResult:
    return self.operation.results[0]

@_ods_cext.register_op_adaptor(DsLoadTr8_B64)
class DsLoadTr8_B64Adaptor(_ods_ir.OpAdaptor):
  OPERATION_NAME = "rocdl.ds.load.tr8.b64"

  @builtins.property
  def ptr(self) -> _ods_ir.Value:
    return self.operands[0]

  @builtins.property
  def alias_scopes(self) -> _Optional[_ods_ir.ArrayAttr]:
    if "alias_scopes" not in self.attributes:
      return None
    return self.attributes["alias_scopes"]

  @builtins.property
  def noalias_scopes(self) -> _Optional[_ods_ir.ArrayAttr]:
    if "noalias_scopes" not in self.attributes:
      return None
    return self.attributes["noalias_scopes"]

  @builtins.property
  def tbaa(self) -> _Optional[_ods_ir.ArrayAttr]:
    if "tbaa" not in self.attributes:
      return None
    return self.attributes["tbaa"]

def ds_load_tr8_b64(res: _ods_ir.Type, ptr: _ods_ir.Value, *, alias_scopes: _Optional[_Union[_Any, _ods_ir.ArrayAttr]] = None, noalias_scopes: _Optional[_Union[_Any, _ods_ir.ArrayAttr]] = None, tbaa: _Optional[_Union[_Any, _ods_ir.ArrayAttr]] = None, loc: _Optional[_ods_ir.Location] = None, ip: _Optional[_ods_ir.InsertionPoint] = None) -> _ods_ir.OpResult:
  return DsLoadTr8_B64(res=res, ptr=ptr, alias_scopes=alias_scopes, noalias_scopes=noalias_scopes, tbaa=tbaa, loc=loc, ip=ip).result

@_ods_cext.register_operation(_Dialect)
class DsLoadTr16_B128(_ods_ir.OpView):
  r"""
  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>
  ```
  """

  OPERATION_NAME = "rocdl.ds.load.tr16.b128"

  _ODS_REGIONS = (0, True)

  def __init__(self, res: _ods_ir.Type, ptr: _ods_ir.Value, *, alias_scopes: _Optional[_Union[_Any, _ods_ir.ArrayAttr]] = None, noalias_scopes: _Optional[_Union[_Any, _ods_ir.ArrayAttr]] = None, tbaa: _Optional[_Union[_Any, _ods_ir.ArrayAttr]] = None, loc: _Optional[_ods_ir.Location] = None, ip: _Optional[_ods_ir.InsertionPoint] = None):
    operands = []
    attributes = {}
    regions = None
    operands.append(ptr)
    _ods_context = _ods_get_default_loc_context(loc)
    if alias_scopes is not None: attributes["alias_scopes"] = (alias_scopes if (
        isinstance(alias_scopes, _ods_ir.Attribute) or
        not _ods_ir.AttrBuilder.contains('LLVM_AliasScopeArrayAttr')) else
          _ods_ir.AttrBuilder.get('LLVM_AliasScopeArrayAttr')(alias_scopes, context=_ods_context))
    if noalias_scopes is not None: attributes["noalias_scopes"] = (noalias_scopes if (
        isinstance(noalias_scopes, _ods_ir.Attribute) or
        not _ods_ir.AttrBuilder.contains('LLVM_AliasScopeArrayAttr')) else
          _ods_ir.AttrBuilder.get('LLVM_AliasScopeArrayAttr')(noalias_scopes, context=_ods_context))
    if tbaa is not None: attributes["tbaa"] = (tbaa if (
        isinstance(tbaa, _ods_ir.Attribute) or
        not _ods_ir.AttrBuilder.contains('LLVM_TBAATagArrayAttr')) else
          _ods_ir.AttrBuilder.get('LLVM_TBAATagArrayAttr')(tbaa, context=_ods_context))
    results = []
    results.append(res)
    _ods_successors = None
    super().__init__(self.OPERATION_NAME, self._ODS_REGIONS, self._ODS_OPERAND_SEGMENTS, self._ODS_RESULT_SEGMENTS, attributes=attributes, results=results, operands=operands, successors=_ods_successors, regions=regions, loc=loc, ip=ip)

  @builtins.property
  def ptr(self) -> _ods_ir.Value:
    return self.operation.operands[0]

  @builtins.property
  def alias_scopes(self) -> _Optional[_ods_ir.ArrayAttr]:
    if "alias_scopes" not in self.operation.attributes:
      return None
    return self.operation.attributes["alias_scopes"]

  @alias_scopes.setter
  def alias_scopes(self, value: _Optional[_ods_ir.ArrayAttr]):
    if value is not None:
      self.operation.attributes["alias_scopes"] = value
    elif "alias_scopes" in self.operation.attributes:
      del self.operation.attributes["alias_scopes"]

  @alias_scopes.deleter
  def alias_scopes(self):
    del self.operation.attributes["alias_scopes"]

  @builtins.property
  def noalias_scopes(self) -> _Optional[_ods_ir.ArrayAttr]:
    if "noalias_scopes" not in self.operation.attributes:
      return None
    return self.operation.attributes["noalias_scopes"]

  @noalias_scopes.setter
  def noalias_scopes(self, value: _Optional[_ods_ir.ArrayAttr]):
    if value is not None:
      self.operation.attributes["noalias_scopes"] = value
    elif "noalias_scopes" in self.operation.attributes:
      del self.operation.attributes["noalias_scopes"]

  @noalias_scopes.deleter
  def noalias_scopes(self):
    del self.operation.attributes["noalias_scopes"]

  @builtins.property
  def tbaa(self) -> _Optional[_ods_ir.ArrayAttr]:
    if "tbaa" not in self.operation.attributes:
      return None
    return self.operation.attributes["tbaa"]

  @tbaa.setter
  def tbaa(self, value: _Optional[_ods_ir.ArrayAttr]):
    if value is not None:
      self.operation.attributes["tbaa"] = value
    elif "tbaa" in self.operation.attributes:
      del self.operation.attributes["tbaa"]

  @tbaa.deleter
  def tbaa(self):
    del self.operation.attributes["tbaa"]

  @builtins.property
  def res(self) -> _ods_ir.OpResult:
    return self.operation.results[0]

@_ods_cext.register_op_adaptor(DsLoadTr16_B128)
class DsLoadTr16_B128Adaptor(_ods_ir.OpAdaptor):
  OPERATION_NAME = "rocdl.ds.load.tr16.b128"

  @builtins.property
  def ptr(self) -> _ods_ir.Value:
    return self.operands[0]

  @builtins.property
  def alias_scopes(self) -> _Optional[_ods_ir.ArrayAttr]:
    if "alias_scopes" not in self.attributes:
      return None
    return self.attributes["alias_scopes"]

  @builtins.property
  def noalias_scopes(self) -> _Optional[_ods_ir.ArrayAttr]:
    if "noalias_scopes" not in self.attributes:
      return None
    return self.attributes["noalias_scopes"]

  @builtins.property
  def tbaa(self) -> _Optional[_ods_ir.ArrayAttr]:
    if "tbaa" not in self.attributes:
      return None
    return self.attributes["tbaa"]

def ds_load_tr16_b128(res: _ods_ir.Type, ptr: _ods_ir.Value, *, alias_scopes: _Optional[_Union[_Any, _ods_ir.ArrayAttr]] = None, noalias_scopes: _Optional[_Union[_Any, _ods_ir.ArrayAttr]] = None, tbaa: _Optional[_Union[_Any, _ods_ir.ArrayAttr]] = None, loc: _Optional[_ods_ir.Location] = None, ip: _Optional[_ods_ir.InsertionPoint] = None) -> _ods_ir.OpResult:
  return DsLoadTr16_B128(res=res, ptr=ptr, alias_scopes=alias_scopes, noalias_scopes=noalias_scopes, tbaa=tbaa, loc=loc, ip=ip).result

@_ods_cext.register_operation(_Dialect)
class DsSwizzleOp(_ods_ir.OpView):
  r"""
  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
  ```
  """

  OPERATION_NAME = "rocdl.ds_swizzle"

  _ODS_REGIONS = (0, True)

  def __init__(self, res: _ods_ir.Type, src: _ods_ir.Value[_ods_ir.IntegerType], offset: _ods_ir.Value[_ods_ir.IntegerType], *, loc: _Optional[_ods_ir.Location] = None, ip: _Optional[_ods_ir.InsertionPoint] = None):
    operands = []
    attributes = {}
    regions = None
    operands.append(src)
    operands.append(offset)
    _ods_context = _ods_get_default_loc_context(loc)
    results = []
    results.append(res)
    _ods_successors = None
    super().__init__(self.OPERATION_NAME, self._ODS_REGIONS, self._ODS_OPERAND_SEGMENTS, self._ODS_RESULT_SEGMENTS, attributes=attributes, results=results, operands=operands, successors=_ods_successors, regions=regions, loc=loc, ip=ip)

  @builtins.property
  def src(self) -> _ods_ir.Value[_ods_ir.IntegerType]:
    return self.operation.operands[0]

  @builtins.property
  def offset(self) -> _ods_ir.Value[_ods_ir.IntegerType]:
    return self.operation.operands[1]

  @builtins.property
  def res(self) -> _ods_ir.OpResult[_ods_ir.IntegerType]:
    return self.operation.results[0]

@_ods_cext.register_op_adaptor(DsSwizzleOp)
class DsSwizzleOpAdaptor(_ods_ir.OpAdaptor):
  OPERATION_NAME = "rocdl.ds_swizzle"

  @builtins.property
  def src(self) -> _ods_ir.Value[_ods_ir.IntegerType]:
    return self.operands[0]

  @builtins.property
  def offset(self) -> _ods_ir.Value[_ods_ir.IntegerType]:
    return self.operands[1]

def ds_swizzle(res: _ods_ir.Type, src: _ods_ir.Value[_ods_ir.IntegerType], offset: _ods_ir.Value[_ods_ir.IntegerType], *, loc: _Optional[_ods_ir.Location] = None, ip: _Optional[_ods_ir.InsertionPoint] = None) -> _ods_ir.OpResult[_ods_ir.IntegerType]:
  return DsSwizzleOp(res=res, src=src, offset=offset, loc=loc, ip=ip).result

@_ods_cext.register_operation(_Dialect)
class FMed3Op(_ods_ir.OpView):
  r"""
  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>
  ```
  """

  OPERATION_NAME = "rocdl.fmed3"

  _ODS_REGIONS = (0, True)

  def __init__(self, res: _ods_ir.Type, src0: _ods_ir.Value, src1: _ods_ir.Value, src2: _ods_ir.Value, *, loc: _Optional[_ods_ir.Location] = None, ip: _Optional[_ods_ir.InsertionPoint] = None):
    operands = []
    attributes = {}
    regions = None
    operands.append(src0)
    operands.append(src1)
    operands.append(src2)
    _ods_context = _ods_get_default_loc_context(loc)
    results = []
    results.append(res)
    _ods_successors = None
    super().__init__(self.OPERATION_NAME, self._ODS_REGIONS, self._ODS_OPERAND_SEGMENTS, self._ODS_RESULT_SEGMENTS, attributes=attributes, results=results, operands=operands, successors=_ods_successors, regions=regions, loc=loc, ip=ip)

  @builtins.property
  def src0(self) -> _ods_ir.Value:
    return self.operation.operands[0]

  @builtins.property
  def src1(self) -> _ods_ir.Value:
    return self.operation.operands[1]

  @builtins.property
  def src2(self) -> _ods_ir.Value:
    return self.operation.operands[2]

  @builtins.property
  def res(self) -> _ods_ir.OpResult:
    return self.operation.results[0]

@_ods_cext.register_op_adaptor(FMed3Op)
class FMed3OpAdaptor(_ods_ir.OpAdaptor):
  OPERATION_NAME = "rocdl.fmed3"

  @builtins.property
  def src0(self) -> _ods_ir.Value:
    return self.operands[0]

  @builtins.property
  def src1(self) -> _ods_ir.Value:
    return self.operands[1]

  @builtins.property
  def src2(self) -> _ods_ir.Value:
    return self.operands[2]

def fmed3(res: _ods_ir.Type, src0: _ods_ir.Value, src1: _ods_ir.Value, src2: _ods_ir.Value, *, loc: _Optional[_ods_ir.Location] = None, ip: _Optional[_ods_ir.InsertionPoint] = None) -> _ods_ir.OpResult:
  return FMed3Op(res=res, src0=src0, src1=src1, src2=src2, loc=loc, ip=ip).result

@_ods_cext.register_operation(_Dialect)
class FlatPrefetchOp(_ods_ir.OpView):
  r"""
  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, scope 0 : !llvm.ptr
  ```
  """

  OPERATION_NAME = "rocdl.flat.prefetch"

  _ODS_REGIONS = (0, True)

  def __init__(self, ptr: _ods_ir.Value, scope: _Union[int, _ods_ir.IntegerAttr], *, alias_scopes: _Optional[_Union[_Any, _ods_ir.ArrayAttr]] = None, noalias_scopes: _Optional[_Union[_Any, _ods_ir.ArrayAttr]] = None, tbaa: _Optional[_Union[_Any, _ods_ir.ArrayAttr]] = None, loc: _Optional[_ods_ir.Location] = None, ip: _Optional[_ods_ir.InsertionPoint] = None):
    operands = []
    attributes = {}
    regions = None
    operands.append(ptr)
    _ods_context = _ods_get_default_loc_context(loc)
    attributes["scope"] = (scope if (
    isinstance(scope, _ods_ir.Attribute) or
    not _ods_ir.AttrBuilder.contains('I32Attr')) else
      _ods_ir.AttrBuilder.get('I32Attr')(scope, context=_ods_context))
    if alias_scopes is not None: attributes["alias_scopes"] = (alias_scopes if (
        isinstance(alias_scopes, _ods_ir.Attribute) or
        not _ods_ir.AttrBuilder.contains('LLVM_AliasScopeArrayAttr')) else
          _ods_ir.AttrBuilder.get('LLVM_AliasScopeArrayAttr')(alias_scopes, context=_ods_context))
    if noalias_scopes is not None: attributes["noalias_scopes"] = (noalias_scopes if (
        isinstance(noalias_scopes, _ods_ir.Attribute) or
        not _ods_ir.AttrBuilder.contains('LLVM_AliasScopeArrayAttr')) else
          _ods_ir.AttrBuilder.get('LLVM_AliasScopeArrayAttr')(noalias_scopes, context=_ods_context))
    if tbaa is not None: attributes["tbaa"] = (tbaa if (
        isinstance(tbaa, _ods_ir.Attribute) or
        not _ods_ir.AttrBuilder.contains('LLVM_TBAATagArrayAttr')) else
          _ods_ir.AttrBuilder.get('LLVM_TBAATagArrayAttr')(tbaa, context=_ods_context))
    results = []
    _ods_successors = None
    super().__init__(self.OPERATION_NAME, self._ODS_REGIONS, self._ODS_OPERAND_SEGMENTS, self._ODS_RESULT_SEGMENTS, attributes=attributes, results=results, operands=operands, successors=_ods_successors, regions=regions, loc=loc, ip=ip)

  @builtins.property
  def ptr(self) -> _ods_ir.Value:
    return self.operation.operands[0]

  @builtins.property
  def scope(self) -> _ods_ir.IntegerAttr:
    return self.operation.attributes["scope"]

  @scope.setter
  def scope(self, value: _ods_ir.IntegerAttr):
    if value is None:
      raise ValueError("'None' not allowed as value for mandatory attributes")
    self.operation.attributes["scope"] = value

  @builtins.property
  def alias_scopes(self) -> _Optional[_ods_ir.ArrayAttr]:
    if "alias_scopes" not in self.operation.attributes:
      return None
    return self.operation.attributes["alias_scopes"]

  @alias_scopes.setter
  def alias_scopes(self, value: _Optional[_ods_ir.ArrayAttr]):
    if value is not None:
      self.operation.attributes["alias_scopes"] = value
    elif "alias_scopes" in self.operation.attributes:
      del self.operation.attributes["alias_scopes"]

  @alias_scopes.deleter
  def alias_scopes(self):
    del self.operation.attributes["alias_scopes"]

  @builtins.property
  def noalias_scopes(self) -> _Optional[_ods_ir.ArrayAttr]:
    if "noalias_scopes" not in self.operation.attributes:
      return None
    return self.operation.attributes["noalias_scopes"]

  @noalias_scopes.setter
  def noalias_scopes(self, value: _Optional[_ods_ir.ArrayAttr]):
    if value is not None:
      self.operation.attributes["noalias_scopes"] = value
    elif "noalias_scopes" in self.operation.attributes:
      del self.operation.attributes["noalias_scopes"]

  @noalias_scopes.deleter
  def noalias_scopes(self):
    del self.operation.attributes["noalias_scopes"]

  @builtins.property
  def tbaa(self) -> _Optional[_ods_ir.ArrayAttr]:
    if "tbaa" not in self.operation.attributes:
      return None
    return self.operation.attributes["tbaa"]

  @tbaa.setter
  def tbaa(self, value: _Optional[_ods_ir.ArrayAttr]):
    if value is not None:
      self.operation.attributes["tbaa"] = value
    elif "tbaa" in self.operation.attributes:
      del self.operation.attributes["tbaa"]

  @tbaa.deleter
  def tbaa(self):
    del self.operation.attributes["tbaa"]

@_ods_cext.register_op_adaptor(FlatPrefetchOp)
class FlatPrefetchOpAdaptor(_ods_ir.OpAdaptor):
  OPERATION_NAME = "rocdl.flat.prefetch"

  @builtins.property
  def ptr(self) -> _ods_ir.Value:
    return self.operands[0]

  @builtins.property
  def scope(self) -> _ods_ir.IntegerAttr:
    return self.attributes["scope"]

  @builtins.property
  def alias_scopes(self) -> _Optional[_ods_ir.ArrayAttr]:
    if "alias_scopes" not in self.attributes:
      return None
    return self.attributes["alias_scopes"]

  @builtins.property
  def noalias_scopes(self) -> _Optional[_ods_ir.ArrayAttr]:
    if "noalias_scopes" not in self.attributes:
      return None
    return self.attributes["noalias_scopes"]

  @builtins.property
  def tbaa(self) -> _Optional[_ods_ir.ArrayAttr]:
    if "tbaa" not in self.attributes:
      return None
    return self.attributes["tbaa"]

def flat_prefetch(ptr: _ods_ir.Value, scope: _Union[int, _ods_ir.IntegerAttr], *, alias_scopes: _Optional[_Union[_Any, _ods_ir.ArrayAttr]] = None, noalias_scopes: _Optional[_Union[_Any, _ods_ir.ArrayAttr]] = None, tbaa: _Optional[_Union[_Any, _ods_ir.ArrayAttr]] = None, loc: _Optional[_ods_ir.Location] = None, ip: _Optional[_ods_ir.InsertionPoint] = None) -> FlatPrefetchOp:
  return FlatPrefetchOp(ptr=ptr, scope=scope, alias_scopes=alias_scopes, noalias_scopes=noalias_scopes, tbaa=tbaa, loc=loc, ip=ip)

@_ods_cext.register_operation(_Dialect)
class GetBarrierStateOp(_ods_ir.OpView):
  r"""
  Available on gfx1200+.
  
  Example:
  ```mlir
  // Query barrier state by id.
  %0 = rocdl.s.get.barrier.state id = 1 -> i32
  ```
  """

  OPERATION_NAME = "rocdl.s.get.barrier.state"

  _ODS_REGIONS = (0, True)

  def __init__(self, res: _ods_ir.Type, id: _Union[int, _ods_ir.IntegerAttr], *, loc: _Optional[_ods_ir.Location] = None, ip: _Optional[_ods_ir.InsertionPoint] = None):
    operands = []
    attributes = {}
    regions = None
    _ods_context = _ods_get_default_loc_context(loc)
    attributes["id"] = (id if (
    isinstance(id, _ods_ir.Attribute) or
    not _ods_ir.AttrBuilder.contains('I32Attr')) else
      _ods_ir.AttrBuilder.get('I32Attr')(id, context=_ods_context))
    results = []
    results.append(res)
    _ods_successors = None
    super().__init__(self.OPERATION_NAME, self._ODS_REGIONS, self._ODS_OPERAND_SEGMENTS, self._ODS_RESULT_SEGMENTS, attributes=attributes, results=results, operands=operands, successors=_ods_successors, regions=regions, loc=loc, ip=ip)

  @builtins.property
  def id(self) -> _ods_ir.IntegerAttr:
    return self.operation.attributes["id"]

  @id.setter
  def id(self, value: _ods_ir.IntegerAttr):
    if value is None:
      raise ValueError("'None' not allowed as value for mandatory attributes")
    self.operation.attributes["id"] = value

  @builtins.property
  def res(self) -> _ods_ir.OpResult[_ods_ir.IntegerType]:
    return self.operation.results[0]

@_ods_cext.register_op_adaptor(GetBarrierStateOp)
class GetBarrierStateOpAdaptor(_ods_ir.OpAdaptor):
  OPERATION_NAME = "rocdl.s.get.barrier.state"

  @builtins.property
  def id(self) -> _ods_ir.IntegerAttr:
    return self.attributes["id"]

def s_get_barrier_state(res: _ods_ir.Type, id: _Union[int, _ods_ir.IntegerAttr], *, loc: _Optional[_ods_ir.Location] = None, ip: _Optional[_ods_ir.InsertionPoint] = None) -> _ods_ir.OpResult[_ods_ir.IntegerType]:
  return GetBarrierStateOp(res=res, id=id, loc=loc, ip=ip).result

@_ods_cext.register_operation(_Dialect)
class GetNamedBarrierStateOp(_ods_ir.OpView):
  r"""
  Available on gfx1250+.
  
  Example:
  ```mlir
  // Query named barrier state by pointer.
  %0 = rocdl.s.get.named.barrier.state %ptr : !llvm.ptr<3> -> i32
  ```
  """

  OPERATION_NAME = "rocdl.s.get.named.barrier.state"

  _ODS_REGIONS = (0, True)

  def __init__(self, res: _ods_ir.Type, ptr: _ods_ir.Value, *, loc: _Optional[_ods_ir.Location] = None, ip: _Optional[_ods_ir.InsertionPoint] = None):
    operands = []
    attributes = {}
    regions = None
    operands.append(ptr)
    _ods_context = _ods_get_default_loc_context(loc)
    results = []
    results.append(res)
    _ods_successors = None
    super().__init__(self.OPERATION_NAME, self._ODS_REGIONS, self._ODS_OPERAND_SEGMENTS, self._ODS_RESULT_SEGMENTS, attributes=attributes, results=results, operands=operands, successors=_ods_successors, regions=regions, loc=loc, ip=ip)

  @builtins.property
  def ptr(self) -> _ods_ir.Value:
    return self.operation.operands[0]

  @builtins.property
  def res(self) -> _ods_ir.OpResult[_ods_ir.IntegerType]:
    return self.operation.results[0]

@_ods_cext.register_op_adaptor(GetNamedBarrierStateOp)
class GetNamedBarrierStateOpAdaptor(_ods_ir.OpAdaptor):
  OPERATION_NAME = "rocdl.s.get.named.barrier.state"

  @builtins.property
  def ptr(self) -> _ods_ir.Value:
    return self.operands[0]

def s_get_named_barrier_state(res: _ods_ir.Type, ptr: _ods_ir.Value, *, loc: _Optional[_ods_ir.Location] = None, ip: _Optional[_ods_ir.InsertionPoint] = None) -> _ods_ir.OpResult[_ods_ir.IntegerType]:
  return GetNamedBarrierStateOp(res=res, ptr=ptr, loc=loc, ip=ip).result

@_ods_cext.register_operation(_Dialect)
class GlobalLoadAsyncLDSOp(_ods_ir.OpView):
  r"""
  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>
  ```
  """

  OPERATION_NAME = "rocdl.global.load.async.lds"

  _ODS_REGIONS = (0, True)

  def __init__(self, globalPtr: _ods_ir.Value, ldsPtr: _ods_ir.Value, size: _Union[int, _ods_ir.IntegerAttr], offset: _Union[int, _ods_ir.IntegerAttr], aux: _Union[int, _ods_ir.IntegerAttr], *, alias_scopes: _Optional[_Union[_Any, _ods_ir.ArrayAttr]] = None, noalias_scopes: _Optional[_Union[_Any, _ods_ir.ArrayAttr]] = None, tbaa: _Optional[_Union[_Any, _ods_ir.ArrayAttr]] = None, loc: _Optional[_ods_ir.Location] = None, ip: _Optional[_ods_ir.InsertionPoint] = None):
    operands = []
    attributes = {}
    regions = None
    operands.append(globalPtr)
    operands.append(ldsPtr)
    _ods_context = _ods_get_default_loc_context(loc)
    attributes["size"] = (size if (
    isinstance(size, _ods_ir.Attribute) or
    not _ods_ir.AttrBuilder.contains('I32Attr')) else
      _ods_ir.AttrBuilder.get('I32Attr')(size, context=_ods_context))
    attributes["offset"] = (offset if (
    isinstance(offset, _ods_ir.Attribute) or
    not _ods_ir.AttrBuilder.contains('I32Attr')) else
      _ods_ir.AttrBuilder.get('I32Attr')(offset, context=_ods_context))
    attributes["aux"] = (aux if (
    isinstance(aux, _ods_ir.Attribute) or
    not _ods_ir.AttrBuilder.contains('I32Attr')) else
      _ods_ir.AttrBuilder.get('I32Attr')(aux, context=_ods_context))
    if alias_scopes is not None: attributes["alias_scopes"] = (alias_scopes if (
        isinstance(alias_scopes, _ods_ir.Attribute) or
        not _ods_ir.AttrBuilder.contains('LLVM_AliasScopeArrayAttr')) else
          _ods_ir.AttrBuilder.get('LLVM_AliasScopeArrayAttr')(alias_scopes, context=_ods_context))
    if noalias_scopes is not None: attributes["noalias_scopes"] = (noalias_scopes if (
        isinstance(noalias_scopes, _ods_ir.Attribute) or
        not _ods_ir.AttrBuilder.contains('LLVM_AliasScopeArrayAttr')) else
          _ods_ir.AttrBuilder.get('LLVM_AliasScopeArrayAttr')(noalias_scopes, context=_ods_context))
    if tbaa is not None: attributes["tbaa"] = (tbaa if (
        isinstance(tbaa, _ods_ir.Attribute) or
        not _ods_ir.AttrBuilder.contains('LLVM_TBAATagArrayAttr')) else
          _ods_ir.AttrBuilder.get('LLVM_TBAATagArrayAttr')(tbaa, context=_ods_context))
    results = []
    _ods_successors = None
    super().__init__(self.OPERATION_NAME, self._ODS_REGIONS, self._ODS_OPERAND_SEGMENTS, self._ODS_RESULT_SEGMENTS, attributes=attributes, results=results, operands=operands, successors=_ods_successors, regions=regions, loc=loc, ip=ip)

  @builtins.property
  def globalPtr(self) -> _ods_ir.Value:
    return self.operation.operands[0]

  @builtins.property
  def ldsPtr(self) -> _ods_ir.Value:
    return self.operation.operands[1]

  @builtins.property
  def size(self) -> _ods_ir.IntegerAttr:
    return self.operation.attributes["size"]

  @size.setter
  def size(self, value: _ods_ir.IntegerAttr):
    if value is None:
      raise ValueError("'None' not allowed as value for mandatory attributes")
    self.operation.attributes["size"] = value

  @builtins.property
  def offset(self) -> _ods_ir.IntegerAttr:
    return self.operation.attributes["offset"]

  @offset.setter
  def offset(self, value: _ods_ir.IntegerAttr):
    if value is None:
      raise ValueError("'None' not allowed as value for mandatory attributes")
    self.operation.attributes["offset"] = value

  @builtins.property
  def aux(self) -> _ods_ir.IntegerAttr:
    return self.operation.attributes["aux"]

  @aux.setter
  def aux(self, value: _ods_ir.IntegerAttr):
    if value is None:
      raise ValueError("'None' not allowed as value for mandatory attributes")
    self.operation.attributes["aux"] = value

  @builtins.property
  def alias_scopes(self) -> _Optional[_ods_ir.ArrayAttr]:
    if "alias_scopes" not in self.operation.attributes:
      return None
    return self.operation.attributes["alias_scopes"]

  @alias_scopes.setter
  def alias_scopes(self, value: _Optional[_ods_ir.ArrayAttr]):
    if value is not None:
      self.operation.attributes["alias_scopes"] = value
    elif "alias_scopes" in self.operation.attributes:
      del self.operation.attributes["alias_scopes"]

  @alias_scopes.deleter
  def alias_scopes(self):
    del self.operation.attributes["alias_scopes"]

  @builtins.property
  def noalias_scopes(self) -> _Optional[_ods_ir.ArrayAttr]:
    if "noalias_scopes" not in self.operation.attributes:
      return None
    return self.operation.attributes["noalias_scopes"]

  @noalias_scopes.setter
  def noalias_scopes(self, value: _Optional[_ods_ir.ArrayAttr]):
    if value is not None:
      self.operation.attributes["noalias_scopes"] = value
    elif "noalias_scopes" in self.operation.attributes:
      del self.operation.attributes["noalias_scopes"]

  @noalias_scopes.deleter
  def noalias_scopes(self):
    del self.operation.attributes["noalias_scopes"]

  @builtins.property
  def tbaa(self) -> _Optional[_ods_ir.ArrayAttr]:
    if "tbaa" not in self.operation.attributes:
      return None
    return self.operation.attributes["tbaa"]

  @tbaa.setter
  def tbaa(self, value: _Optional[_ods_ir.ArrayAttr]):
    if value is not None:
      self.operation.attributes["tbaa"] = value
    elif "tbaa" in self.operation.attributes:
      del self.operation.attributes["tbaa"]

  @tbaa.deleter
  def tbaa(self):
    del self.operation.attributes["tbaa"]

@_ods_cext.register_op_adaptor(GlobalLoadAsyncLDSOp)
class GlobalLoadAsyncLDSOpAdaptor(_ods_ir.OpAdaptor):
  OPERATION_NAME = "rocdl.global.load.async.lds"

  @builtins.property
  def globalPtr(self) -> _ods_ir.Value:
    return self.operands[0]

  @builtins.property
  def ldsPtr(self) -> _ods_ir.Value:
    return self.operands[1]

  @builtins.property
  def size(self) -> _ods_ir.IntegerAttr:
    return self.attributes["size"]

  @builtins.property
  def offset(self) -> _ods_ir.IntegerAttr:
    return self.attributes["offset"]

  @builtins.property
  def aux(self) -> _ods_ir.IntegerAttr:
    return self.attributes["aux"]

  @builtins.property
  def alias_scopes(self) -> _Optional[_ods_ir.ArrayAttr]:
    if "alias_scopes" not in self.attributes:
      return None
    return self.attributes["alias_scopes"]

  @builtins.property
  def noalias_scopes(self) -> _Optional[_ods_ir.ArrayAttr]:
    if "noalias_scopes" not in self.attributes:
      return None
    return self.attributes["noalias_scopes"]

  @builtins.property
  def tbaa(self) -> _Optional[_ods_ir.ArrayAttr]:
    if "tbaa" not in self.attributes:
      return None
    return self.attributes["tbaa"]

def global_load_async_lds(global_ptr: _ods_ir.Value, lds_ptr: _ods_ir.Value, size: _Union[int, _ods_ir.IntegerAttr], offset: _Union[int, _ods_ir.IntegerAttr], aux: _Union[int, _ods_ir.IntegerAttr], *, alias_scopes: _Optional[_Union[_Any, _ods_ir.ArrayAttr]] = None, noalias_scopes: _Optional[_Union[_Any, _ods_ir.ArrayAttr]] = None, tbaa: _Optional[_Union[_Any, _ods_ir.ArrayAttr]] = None, loc: _Optional[_ods_ir.Location] = None, ip: _Optional[_ods_ir.InsertionPoint] = None) -> GlobalLoadAsyncLDSOp:
  return GlobalLoadAsyncLDSOp(globalPtr=global_ptr, ldsPtr=lds_ptr, size=size, offset=offset, aux=aux, alias_scopes=alias_scopes, noalias_scopes=noalias_scopes, tbaa=tbaa, loc=loc, ip=ip)

@_ods_cext.register_operation(_Dialect)
class GlobalLoadAsyncToLDSB8Op(_ods_ir.OpView):
  r"""
  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>
  ```
  """

  OPERATION_NAME = "rocdl.global.load.async.to.lds.b8"

  _ODS_REGIONS = (0, True)

  def __init__(self, globalPtr: _ods_ir.Value, ldsPtr: _ods_ir.Value, offset: _Union[int, _ods_ir.IntegerAttr], aux: _Union[int, _ods_ir.IntegerAttr], *, alias_scopes: _Optional[_Union[_Any, _ods_ir.ArrayAttr]] = None, noalias_scopes: _Optional[_Union[_Any, _ods_ir.ArrayAttr]] = None, tbaa: _Optional[_Union[_Any, _ods_ir.ArrayAttr]] = None, loc: _Optional[_ods_ir.Location] = None, ip: _Optional[_ods_ir.InsertionPoint] = None):
    operands = []
    attributes = {}
    regions = None
    operands.append(globalPtr)
    operands.append(ldsPtr)
    _ods_context = _ods_get_default_loc_context(loc)
    attributes["offset"] = (offset if (
    isinstance(offset, _ods_ir.Attribute) or
    not _ods_ir.AttrBuilder.contains('I32Attr')) else
      _ods_ir.AttrBuilder.get('I32Attr')(offset, context=_ods_context))
    attributes["aux"] = (aux if (
    isinstance(aux, _ods_ir.Attribute) or
    not _ods_ir.AttrBuilder.contains('I32Attr')) else
      _ods_ir.AttrBuilder.get('I32Attr')(aux, context=_ods_context))
    if alias_scopes is not None: attributes["alias_scopes"] = (alias_scopes if (
        isinstance(alias_scopes, _ods_ir.Attribute) or
        not _ods_ir.AttrBuilder.contains('LLVM_AliasScopeArrayAttr')) else
          _ods_ir.AttrBuilder.get('LLVM_AliasScopeArrayAttr')(alias_scopes, context=_ods_context))
    if noalias_scopes is not None: attributes["noalias_scopes"] = (noalias_scopes if (
        isinstance(noalias_scopes, _ods_ir.Attribute) or
        not _ods_ir.AttrBuilder.contains('LLVM_AliasScopeArrayAttr')) else
          _ods_ir.AttrBuilder.get('LLVM_AliasScopeArrayAttr')(noalias_scopes, context=_ods_context))
    if tbaa is not None: attributes["tbaa"] = (tbaa if (
        isinstance(tbaa, _ods_ir.Attribute) or
        not _ods_ir.AttrBuilder.contains('LLVM_TBAATagArrayAttr')) else
          _ods_ir.AttrBuilder.get('LLVM_TBAATagArrayAttr')(tbaa, context=_ods_context))
    results = []
    _ods_successors = None
    super().__init__(self.OPERATION_NAME, self._ODS_REGIONS, self._ODS_OPERAND_SEGMENTS, self._ODS_RESULT_SEGMENTS, attributes=attributes, results=results, operands=operands, successors=_ods_successors, regions=regions, loc=loc, ip=ip)

  @builtins.property
  def globalPtr(self) -> _ods_ir.Value:
    return self.operation.operands[0]

  @builtins.property
  def ldsPtr(self) -> _ods_ir.Value:
    return self.operation.operands[1]

  @builtins.property
  def offset(self) -> _ods_ir.IntegerAttr:
    return self.operation.attributes["offset"]

  @offset.setter
  def offset(self, value: _ods_ir.IntegerAttr):
    if value is None:
      raise ValueError("'None' not allowed as value for mandatory attributes")
    self.operation.attributes["offset"] = value

  @builtins.property
  def aux(self) -> _ods_ir.IntegerAttr:
    return self.operation.attributes["aux"]

  @aux.setter
  def aux(self, value: _ods_ir.IntegerAttr):
    if value is None:
      raise ValueError("'None' not allowed as value for mandatory attributes")
    self.operation.attributes["aux"] = value

  @builtins.property
  def alias_scopes(self) -> _Optional[_ods_ir.ArrayAttr]:
    if "alias_scopes" not in self.operation.attributes:
      return None
    return self.operation.attributes["alias_scopes"]

  @alias_scopes.setter
  def alias_scopes(self, value: _Optional[_ods_ir.ArrayAttr]):
    if value is not None:
      self.operation.attributes["alias_scopes"] = value
    elif "alias_scopes" in self.operation.attributes:
      del self.operation.attributes["alias_scopes"]

  @alias_scopes.deleter
  def alias_scopes(self):
    del self.operation.attributes["alias_scopes"]

  @builtins.property
  def noalias_scopes(self) -> _Optional[_ods_ir.ArrayAttr]:
    if "noalias_scopes" not in self.operation.attributes:
      return None
    return self.operation.attributes["noalias_scopes"]

  @noalias_scopes.setter
  def noalias_scopes(self, value: _Optional[_ods_ir.ArrayAttr]):
    if value is not None:
      self.operation.attributes["noalias_scopes"] = value
    elif "noalias_scopes" in self.operation.attributes:
      del self.operation.attributes["noalias_scopes"]

  @noalias_scopes.deleter
  def noalias_scopes(self):
    del self.operation.attributes["noalias_scopes"]

  @builtins.property
  def tbaa(self) -> _Optional[_ods_ir.ArrayAttr]:
    if "tbaa" not in self.operation.attributes:
      return None
    return self.operation.attributes["tbaa"]

  @tbaa.setter
  def tbaa(self, value: _Optional[_ods_ir.ArrayAttr]):
    if value is not None:
      self.operation.attributes["tbaa"] = value
    elif "tbaa" in self.operation.attributes:
      del self.operation.attributes["tbaa"]

  @tbaa.deleter
  def tbaa(self):
    del self.operation.attributes["tbaa"]

@_ods_cext.register_op_adaptor(GlobalLoadAsyncToLDSB8Op)
class GlobalLoadAsyncToLDSB8OpAdaptor(_ods_ir.OpAdaptor):
  OPERATION_NAME = "rocdl.global.load.async.to.lds.b8"

  @builtins.property
  def globalPtr(self) -> _ods_ir.Value:
    return self.operands[0]

  @builtins.property
  def ldsPtr(self) -> _ods_ir.Value:
    return self.operands[1]

  @builtins.property
  def offset(self) -> _ods_ir.IntegerAttr:
    return self.attributes["offset"]

  @builtins.property
  def aux(self) -> _ods_ir.IntegerAttr:
    return self.attributes["aux"]

  @builtins.property
  def alias_scopes(self) -> _Optional[_ods_ir.ArrayAttr]:
    if "alias_scopes" not in self.attributes:
      return None
    return self.attributes["alias_scopes"]

  @builtins.property
  def noalias_scopes(self) -> _Optional[_ods_ir.ArrayAttr]:
    if "noalias_scopes" not in self.attributes:
      return None
    return self.attributes["noalias_scopes"]

  @builtins.property
  def tbaa(self) -> _Optional[_ods_ir.ArrayAttr]:
    if "tbaa" not in self.attributes:
      return None
    return self.attributes["tbaa"]

def global_load_async_to_lds_b8(global_ptr: _ods_ir.Value, lds_ptr: _ods_ir.Value, offset: _Union[int, _ods_ir.IntegerAttr], aux: _Union[int, _ods_ir.IntegerAttr], *, alias_scopes: _Optional[_Union[_Any, _ods_ir.ArrayAttr]] = None, noalias_scopes: _Optional[_Union[_Any, _ods_ir.ArrayAttr]] = None, tbaa: _Optional[_Union[_Any, _ods_ir.ArrayAttr]] = None, loc: _Optional[_ods_ir.Location] = None, ip: _Optional[_ods_ir.InsertionPoint] = None) -> GlobalLoadAsyncToLDSB8Op:
  return GlobalLoadAsyncToLDSB8Op(globalPtr=global_ptr, ldsPtr=lds_ptr, offset=offset, aux=aux, alias_scopes=alias_scopes, noalias_scopes=noalias_scopes, tbaa=tbaa, loc=loc, ip=ip)

@_ods_cext.register_operation(_Dialect)
class GlobalLoadAsyncToLDSB32Op(_ods_ir.OpView):
  r"""
  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>
  ```
  """

  OPERATION_NAME = "rocdl.global.load.async.to.lds.b32"

  _ODS_REGIONS = (0, True)

  def __init__(self, globalPtr: _ods_ir.Value, ldsPtr: _ods_ir.Value, offset: _Union[int, _ods_ir.IntegerAttr], aux: _Union[int, _ods_ir.IntegerAttr], *, alias_scopes: _Optional[_Union[_Any, _ods_ir.ArrayAttr]] = None, noalias_scopes: _Optional[_Union[_Any, _ods_ir.ArrayAttr]] = None, tbaa: _Optional[_Union[_Any, _ods_ir.ArrayAttr]] = None, loc: _Optional[_ods_ir.Location] = None, ip: _Optional[_ods_ir.InsertionPoint] = None):
    operands = []
    attributes = {}
    regions = None
    operands.append(globalPtr)
    operands.append(ldsPtr)
    _ods_context = _ods_get_default_loc_context(loc)
    attributes["offset"] = (offset if (
    isinstance(offset, _ods_ir.Attribute) or
    not _ods_ir.AttrBuilder.contains('I32Attr')) else
      _ods_ir.AttrBuilder.get('I32Attr')(offset, context=_ods_context))
    attributes["aux"] = (aux if (
    isinstance(aux, _ods_ir.Attribute) or
    not _ods_ir.AttrBuilder.contains('I32Attr')) else
      _ods_ir.AttrBuilder.get('I32Attr')(aux, context=_ods_context))
    if alias_scopes is not None: attributes["alias_scopes"] = (alias_scopes if (
        isinstance(alias_scopes, _ods_ir.Attribute) or
        not _ods_ir.AttrBuilder.contains('LLVM_AliasScopeArrayAttr')) else
          _ods_ir.AttrBuilder.get('LLVM_AliasScopeArrayAttr')(alias_scopes, context=_ods_context))
    if noalias_scopes is not None: attributes["noalias_scopes"] = (noalias_scopes if (
        isinstance(noalias_scopes, _ods_ir.Attribute) or
        not _ods_ir.AttrBuilder.contains('LLVM_AliasScopeArrayAttr')) else
          _ods_ir.AttrBuilder.get('LLVM_AliasScopeArrayAttr')(noalias_scopes, context=_ods_context))
    if tbaa is not None: attributes["tbaa"] = (tbaa if (
        isinstance(tbaa, _ods_ir.Attribute) or
        not _ods_ir.AttrBuilder.contains('LLVM_TBAATagArrayAttr')) else
          _ods_ir.AttrBuilder.get('LLVM_TBAATagArrayAttr')(tbaa, context=_ods_context))
    results = []
    _ods_successors = None
    super().__init__(self.OPERATION_NAME, self._ODS_REGIONS, self._ODS_OPERAND_SEGMENTS, self._ODS_RESULT_SEGMENTS, attributes=attributes, results=results, operands=operands, successors=_ods_successors, regions=regions, loc=loc, ip=ip)

  @builtins.property
  def globalPtr(self) -> _ods_ir.Value:
    return self.operation.operands[0]

  @builtins.property
  def ldsPtr(self) -> _ods_ir.Value:
    return self.operation.operands[1]

  @builtins.property
  def offset(self) -> _ods_ir.IntegerAttr:
    return self.operation.attributes["offset"]

  @offset.setter
  def offset(self, value: _ods_ir.IntegerAttr):
    if value is None:
      raise ValueError("'None' not allowed as value for mandatory attributes")
    self.operation.attributes["offset"] = value

  @builtins.property
  def aux(self) -> _ods_ir.IntegerAttr:
    return self.operation.attributes["aux"]

  @aux.setter
  def aux(self, value: _ods_ir.IntegerAttr):
    if value is None:
      raise ValueError("'None' not allowed as value for mandatory attributes")
    self.operation.attributes["aux"] = value

  @builtins.property
  def alias_scopes(self) -> _Optional[_ods_ir.ArrayAttr]:
    if "alias_scopes" not in self.operation.attributes:
      return None
    return self.operation.attributes["alias_scopes"]

  @alias_scopes.setter
  def alias_scopes(self, value: _Optional[_ods_ir.ArrayAttr]):
    if value is not None:
      self.operation.attributes["alias_scopes"] = value
    elif "alias_scopes" in self.operation.attributes:
      del self.operation.attributes["alias_scopes"]

  @alias_scopes.deleter
  def alias_scopes(self):
    del self.operation.attributes["alias_scopes"]

  @builtins.property
  def noalias_scopes(self) -> _Optional[_ods_ir.ArrayAttr]:
    if "noalias_scopes" not in self.operation.attributes:
      return None
    return self.operation.attributes["noalias_scopes"]

  @noalias_scopes.setter
  def noalias_scopes(self, value: _Optional[_ods_ir.ArrayAttr]):
    if value is not None:
      self.operation.attributes["noalias_scopes"] = value
    elif "noalias_scopes" in self.operation.attributes:
      del self.operation.attributes["noalias_scopes"]

  @noalias_scopes.deleter
  def noalias_scopes(self):
    del self.operation.attributes["noalias_scopes"]

  @builtins.property
  def tbaa(self) -> _Optional[_ods_ir.ArrayAttr]:
    if "tbaa" not in self.operation.attributes:
      return None
    return self.operation.attributes["tbaa"]

  @tbaa.setter
  def tbaa(self, value: _Optional[_ods_ir.ArrayAttr]):
    if value is not None:
      self.operation.attributes["tbaa"] = value
    elif "tbaa" in self.operation.attributes:
      del self.operation.attributes["tbaa"]

  @tbaa.deleter
  def tbaa(self):
    del self.operation.attributes["tbaa"]

@_ods_cext.register_op_adaptor(GlobalLoadAsyncToLDSB32Op)
class GlobalLoadAsyncToLDSB32OpAdaptor(_ods_ir.OpAdaptor):
  OPERATION_NAME = "rocdl.global.load.async.to.lds.b32"

  @builtins.property
  def globalPtr(self) -> _ods_ir.Value:
    return self.operands[0]

  @builtins.property
  def ldsPtr(self) -> _ods_ir.Value:
    return self.operands[1]

  @builtins.property
  def offset(self) -> _ods_ir.IntegerAttr:
    return self.attributes["offset"]

  @builtins.property
  def aux(self) -> _ods_ir.IntegerAttr:
    return self.attributes["aux"]

  @builtins.property
  def alias_scopes(self) -> _Optional[_ods_ir.ArrayAttr]:
    if "alias_scopes" not in self.attributes:
      return None
    return self.attributes["alias_scopes"]

  @builtins.property
  def noalias_scopes(self) -> _Optional[_ods_ir.ArrayAttr]:
    if "noalias_scopes" not in self.attributes:
      return None
    return self.attributes["noalias_scopes"]

  @builtins.property
  def tbaa(self) -> _Optional[_ods_ir.ArrayAttr]:
    if "tbaa" not in self.attributes:
      return None
    return self.attributes["tbaa"]

def global_load_async_to_lds_b32(global_ptr: _ods_ir.Value, lds_ptr: _ods_ir.Value, offset: _Union[int, _ods_ir.IntegerAttr], aux: _Union[int, _ods_ir.IntegerAttr], *, alias_scopes: _Optional[_Union[_Any, _ods_ir.ArrayAttr]] = None, noalias_scopes: _Optional[_Union[_Any, _ods_ir.ArrayAttr]] = None, tbaa: _Optional[_Union[_Any, _ods_ir.ArrayAttr]] = None, loc: _Optional[_ods_ir.Location] = None, ip: _Optional[_ods_ir.InsertionPoint] = None) -> GlobalLoadAsyncToLDSB32Op:
  return GlobalLoadAsyncToLDSB32Op(globalPtr=global_ptr, ldsPtr=lds_ptr, offset=offset, aux=aux, alias_scopes=alias_scopes, noalias_scopes=noalias_scopes, tbaa=tbaa, loc=loc, ip=ip)

@_ods_cext.register_operation(_Dialect)
class GlobalLoadAsyncToLDSB64Op(_ods_ir.OpView):
  r"""
  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>
  ```
  """

  OPERATION_NAME = "rocdl.global.load.async.to.lds.b64"

  _ODS_REGIONS = (0, True)

  def __init__(self, globalPtr: _ods_ir.Value, ldsPtr: _ods_ir.Value, offset: _Union[int, _ods_ir.IntegerAttr], aux: _Union[int, _ods_ir.IntegerAttr], *, alias_scopes: _Optional[_Union[_Any, _ods_ir.ArrayAttr]] = None, noalias_scopes: _Optional[_Union[_Any, _ods_ir.ArrayAttr]] = None, tbaa: _Optional[_Union[_Any, _ods_ir.ArrayAttr]] = None, loc: _Optional[_ods_ir.Location] = None, ip: _Optional[_ods_ir.InsertionPoint] = None):
    operands = []
    attributes = {}
    regions = None
    operands.append(globalPtr)
    operands.append(ldsPtr)
    _ods_context = _ods_get_default_loc_context(loc)
    attributes["offset"] = (offset if (
    isinstance(offset, _ods_ir.Attribute) or
    not _ods_ir.AttrBuilder.contains('I32Attr')) else
      _ods_ir.AttrBuilder.get('I32Attr')(offset, context=_ods_context))
    attributes["aux"] = (aux if (
    isinstance(aux, _ods_ir.Attribute) or
    not _ods_ir.AttrBuilder.contains('I32Attr')) else
      _ods_ir.AttrBuilder.get('I32Attr')(aux, context=_ods_context))
    if alias_scopes is not None: attributes["alias_scopes"] = (alias_scopes if (
        isinstance(alias_scopes, _ods_ir.Attribute) or
        not _ods_ir.AttrBuilder.contains('LLVM_AliasScopeArrayAttr')) else
          _ods_ir.AttrBuilder.get('LLVM_AliasScopeArrayAttr')(alias_scopes, context=_ods_context))
    if noalias_scopes is not None: attributes["noalias_scopes"] = (noalias_scopes if (
        isinstance(noalias_scopes, _ods_ir.Attribute) or
        not _ods_ir.AttrBuilder.contains('LLVM_AliasScopeArrayAttr')) else
          _ods_ir.AttrBuilder.get('LLVM_AliasScopeArrayAttr')(noalias_scopes, context=_ods_context))
    if tbaa is not None: attributes["tbaa"] = (tbaa if (
        isinstance(tbaa, _ods_ir.Attribute) or
        not _ods_ir.AttrBuilder.contains('LLVM_TBAATagArrayAttr')) else
          _ods_ir.AttrBuilder.get('LLVM_TBAATagArrayAttr')(tbaa, context=_ods_context))
    results = []
    _ods_successors = None
    super().__init__(self.OPERATION_NAME, self._ODS_REGIONS, self._ODS_OPERAND_SEGMENTS, self._ODS_RESULT_SEGMENTS, attributes=attributes, results=results, operands=operands, successors=_ods_successors, regions=regions, loc=loc, ip=ip)

  @builtins.property
  def globalPtr(self) -> _ods_ir.Value:
    return self.operation.operands[0]

  @builtins.property
  def ldsPtr(self) -> _ods_ir.Value:
    return self.operation.operands[1]

  @builtins.property
  def offset(self) -> _ods_ir.IntegerAttr:
    return self.operation.attributes["offset"]

  @offset.setter
  def offset(self, value: _ods_ir.IntegerAttr):
    if value is None:
      raise ValueError("'None' not allowed as value for mandatory attributes")
    self.operation.attributes["offset"] = value

  @builtins.property
  def aux(self) -> _ods_ir.IntegerAttr:
    return self.operation.attributes["aux"]

  @aux.setter
  def aux(self, value: _ods_ir.IntegerAttr):
    if value is None:
      raise ValueError("'None' not allowed as value for mandatory attributes")
    self.operation.attributes["aux"] = value

  @builtins.property
  def alias_scopes(self) -> _Optional[_ods_ir.ArrayAttr]:
    if "alias_scopes" not in self.operation.attributes:
      return None
    return self.operation.attributes["alias_scopes"]

  @alias_scopes.setter
  def alias_scopes(self, value: _Optional[_ods_ir.ArrayAttr]):
    if value is not None:
      self.operation.attributes["alias_scopes"] = value
    elif "alias_scopes" in self.operation.attributes:
      del self.operation.attributes["alias_scopes"]

  @alias_scopes.deleter
  def alias_scopes(self):
    del self.operation.attributes["alias_scopes"]

  @builtins.property
  def noalias_scopes(self) -> _Optional[_ods_ir.ArrayAttr]:
    if "noalias_scopes" not in self.operation.attributes:
      return None
    return self.operation.attributes["noalias_scopes"]

  @noalias_scopes.setter
  def noalias_scopes(self, value: _Optional[_ods_ir.ArrayAttr]):
    if value is not None:
      self.operation.attributes["noalias_scopes"] = value
    elif "noalias_scopes" in self.operation.attributes:
      del self.operation.attributes["noalias_scopes"]

  @noalias_scopes.deleter
  def noalias_scopes(self):
    del self.operation.attributes["noalias_scopes"]

  @builtins.property
  def tbaa(self) -> _Optional[_ods_ir.ArrayAttr]:
    if "tbaa" not in self.operation.attributes:
      return None
    return self.operation.attributes["tbaa"]

  @tbaa.setter
  def tbaa(self, value: _Optional[_ods_ir.ArrayAttr]):
    if value is not None:
      self.operation.attributes["tbaa"] = value
    elif "tbaa" in self.operation.attributes:
      del self.operation.attributes["tbaa"]

  @tbaa.deleter
  def tbaa(self):
    del self.operation.attributes["tbaa"]

@_ods_cext.register_op_adaptor(GlobalLoadAsyncToLDSB64Op)
class GlobalLoadAsyncToLDSB64OpAdaptor(_ods_ir.OpAdaptor):
  OPERATION_NAME = "rocdl.global.load.async.to.lds.b64"

  @builtins.property
  def globalPtr(self) -> _ods_ir.Value:
    return self.operands[0]

  @builtins.property
  def ldsPtr(self) -> _ods_ir.Value:
    return self.operands[1]

  @builtins.property
  def offset(self) -> _ods_ir.IntegerAttr:
    return self.attributes["offset"]

  @builtins.property
  def aux(self) -> _ods_ir.IntegerAttr:
    return self.attributes["aux"]

  @builtins.property
  def alias_scopes(self) -> _Optional[_ods_ir.ArrayAttr]:
    if "alias_scopes" not in self.attributes:
      return None
    return self.attributes["alias_scopes"]

  @builtins.property
  def noalias_scopes(self) -> _Optional[_ods_ir.ArrayAttr]:
    if "noalias_scopes" not in self.attributes:
      return None
    return self.attributes["noalias_scopes"]

  @builtins.property
  def tbaa(self) -> _Optional[_ods_ir.ArrayAttr]:
    if "tbaa" not in self.attributes:
      return None
    return self.attributes["tbaa"]

def global_load_async_to_lds_b64(global_ptr: _ods_ir.Value, lds_ptr: _ods_ir.Value, offset: _Union[int, _ods_ir.IntegerAttr], aux: _Union[int, _ods_ir.IntegerAttr], *, alias_scopes: _Optional[_Union[_Any, _ods_ir.ArrayAttr]] = None, noalias_scopes: _Optional[_Union[_Any, _ods_ir.ArrayAttr]] = None, tbaa: _Optional[_Union[_Any, _ods_ir.ArrayAttr]] = None, loc: _Optional[_ods_ir.Location] = None, ip: _Optional[_ods_ir.InsertionPoint] = None) -> GlobalLoadAsyncToLDSB64Op:
  return GlobalLoadAsyncToLDSB64Op(globalPtr=global_ptr, ldsPtr=lds_ptr, offset=offset, aux=aux, alias_scopes=alias_scopes, noalias_scopes=noalias_scopes, tbaa=tbaa, loc=loc, ip=ip)

@_ods_cext.register_operation(_Dialect)
class GlobalLoadAsyncToLDSB128Op(_ods_ir.OpView):
  r"""
  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>
  ```
  """

  OPERATION_NAME = "rocdl.global.load.async.to.lds.b128"

  _ODS_REGIONS = (0, True)

  def __init__(self, globalPtr: _ods_ir.Value, ldsPtr: _ods_ir.Value, offset: _Union[int, _ods_ir.IntegerAttr], aux: _Union[int, _ods_ir.IntegerAttr], *, alias_scopes: _Optional[_Union[_Any, _ods_ir.ArrayAttr]] = None, noalias_scopes: _Optional[_Union[_Any, _ods_ir.ArrayAttr]] = None, tbaa: _Optional[_Union[_Any, _ods_ir.ArrayAttr]] = None, loc: _Optional[_ods_ir.Location] = None, ip: _Optional[_ods_ir.InsertionPoint] = None):
    operands = []
    attributes = {}
    regions = None
    operands.append(globalPtr)
    operands.append(ldsPtr)
    _ods_context = _ods_get_default_loc_context(loc)
    attributes["offset"] = (offset if (
    isinstance(offset, _ods_ir.Attribute) or
    not _ods_ir.AttrBuilder.contains('I32Attr')) else
      _ods_ir.AttrBuilder.get('I32Attr')(offset, context=_ods_context))
    attributes["aux"] = (aux if (
    isinstance(aux, _ods_ir.Attribute) or
    not _ods_ir.AttrBuilder.contains('I32Attr')) else
      _ods_ir.AttrBuilder.get('I32Attr')(aux, context=_ods_context))
    if alias_scopes is not None: attributes["alias_scopes"] = (alias_scopes if (
        isinstance(alias_scopes, _ods_ir.Attribute) or
        not _ods_ir.AttrBuilder.contains('LLVM_AliasScopeArrayAttr')) else
          _ods_ir.AttrBuilder.get('LLVM_AliasScopeArrayAttr')(alias_scopes, context=_ods_context))
    if noalias_scopes is not None: attributes["noalias_scopes"] = (noalias_scopes if (
        isinstance(noalias_scopes, _ods_ir.Attribute) or
        not _ods_ir.AttrBuilder.contains('LLVM_AliasScopeArrayAttr')) else
          _ods_ir.AttrBuilder.get('LLVM_AliasScopeArrayAttr')(noalias_scopes, context=_ods_context))
    if tbaa is not None: attributes["tbaa"] = (tbaa if (
        isinstance(tbaa, _ods_ir.Attribute) or
        not _ods_ir.AttrBuilder.contains('LLVM_TBAATagArrayAttr')) else
          _ods_ir.AttrBuilder.get('LLVM_TBAATagArrayAttr')(tbaa, context=_ods_context))
    results = []
    _ods_successors = None
    super().__init__(self.OPERATION_NAME, self._ODS_REGIONS, self._ODS_OPERAND_SEGMENTS, self._ODS_RESULT_SEGMENTS, attributes=attributes, results=results, operands=operands, successors=_ods_successors, regions=regions, loc=loc, ip=ip)

  @builtins.property
  def globalPtr(self) -> _ods_ir.Value:
    return self.operation.operands[0]

  @builtins.property
  def ldsPtr(self) -> _ods_ir.Value:
    return self.operation.operands[1]

  @builtins.property
  def offset(self) -> _ods_ir.IntegerAttr:
    return self.operation.attributes["offset"]

  @offset.setter
  def offset(self, value: _ods_ir.IntegerAttr):
    if value is None:
      raise ValueError("'None' not allowed as value for mandatory attributes")
    self.operation.attributes["offset"] = value

  @builtins.property
  def aux(self) -> _ods_ir.IntegerAttr:
    return self.operation.attributes["aux"]

  @aux.setter
  def aux(self, value: _ods_ir.IntegerAttr):
    if value is None:
      raise ValueError("'None' not allowed as value for mandatory attributes")
    self.operation.attributes["aux"] = value

  @builtins.property
  def alias_scopes(self) -> _Optional[_ods_ir.ArrayAttr]:
    if "alias_scopes" not in self.operation.attributes:
      return None
    return self.operation.attributes["alias_scopes"]

  @alias_scopes.setter
  def alias_scopes(self, value: _Optional[_ods_ir.ArrayAttr]):
    if value is not None:
      self.operation.attributes["alias_scopes"] = value
    elif "alias_scopes" in self.operation.attributes:
      del self.operation.attributes["alias_scopes"]

  @alias_scopes.deleter
  def alias_scopes(self):
    del self.operation.attributes["alias_scopes"]

  @builtins.property
  def noalias_scopes(self) -> _Optional[_ods_ir.ArrayAttr]:
    if "noalias_scopes" not in self.operation.attributes:
      return None
    return self.operation.attributes["noalias_scopes"]

  @noalias_scopes.setter
  def noalias_scopes(self, value: _Optional[_ods_ir.ArrayAttr]):
    if value is not None:
      self.operation.attributes["noalias_scopes"] = value
    elif "noalias_scopes" in self.operation.attributes:
      del self.operation.attributes["noalias_scopes"]

  @noalias_scopes.deleter
  def noalias_scopes(self):
    del self.operation.attributes["noalias_scopes"]

  @builtins.property
  def tbaa(self) -> _Optional[_ods_ir.ArrayAttr]:
    if "tbaa" not in self.operation.attributes:
      return None
    return self.operation.attributes["tbaa"]

  @tbaa.setter
  def tbaa(self, value: _Optional[_ods_ir.ArrayAttr]):
    if value is not None:
      self.operation.attributes["tbaa"] = value
    elif "tbaa" in self.operation.attributes:
      del self.operation.attributes["tbaa"]

  @tbaa.deleter
  def tbaa(self):
    del self.operation.attributes["tbaa"]

@_ods_cext.register_op_adaptor(GlobalLoadAsyncToLDSB128Op)
class GlobalLoadAsyncToLDSB128OpAdaptor(_ods_ir.OpAdaptor):
  OPERATION_NAME = "rocdl.global.load.async.to.lds.b128"

  @builtins.property
  def globalPtr(self) -> _ods_ir.Value:
    return self.operands[0]

  @builtins.property
  def ldsPtr(self) -> _ods_ir.Value:
    return self.operands[1]

  @builtins.property
  def offset(self) -> _ods_ir.IntegerAttr:
    return self.attributes["offset"]

  @builtins.property
  def aux(self) -> _ods_ir.IntegerAttr:
    return self.attributes["aux"]

  @builtins.property
  def alias_scopes(self) -> _Optional[_ods_ir.ArrayAttr]:
    if "alias_scopes" not in self.attributes:
      return None
    return self.attributes["alias_scopes"]

  @builtins.property
  def noalias_scopes(self) -> _Optional[_ods_ir.ArrayAttr]:
    if "noalias_scopes" not in self.attributes:
      return None
    return self.attributes["noalias_scopes"]

  @builtins.property
  def tbaa(self) -> _Optional[_ods_ir.ArrayAttr]:
    if "tbaa" not in self.attributes:
      return None
    return self.attributes["tbaa"]

def global_load_async_to_lds_b128(global_ptr: _ods_ir.Value, lds_ptr: _ods_ir.Value, offset: _Union[int, _ods_ir.IntegerAttr], aux: _Union[int, _ods_ir.IntegerAttr], *, alias_scopes: _Optional[_Union[_Any, _ods_ir.ArrayAttr]] = None, noalias_scopes: _Optional[_Union[_Any, _ods_ir.ArrayAttr]] = None, tbaa: _Optional[_Union[_Any, _ods_ir.ArrayAttr]] = None, loc: _Optional[_ods_ir.Location] = None, ip: _Optional[_ods_ir.InsertionPoint] = None) -> GlobalLoadAsyncToLDSB128Op:
  return GlobalLoadAsyncToLDSB128Op(globalPtr=global_ptr, ldsPtr=lds_ptr, offset=offset, aux=aux, alias_scopes=alias_scopes, noalias_scopes=noalias_scopes, tbaa=tbaa, loc=loc, ip=ip)

@_ods_cext.register_operation(_Dialect)
class GlobalLoadLDSOp(_ods_ir.OpView):
  OPERATION_NAME = "rocdl.global.load.lds"

  _ODS_REGIONS = (0, True)

  def __init__(self, globalPtr: _ods_ir.Value, ldsPtr: _ods_ir.Value, size: _Union[int, _ods_ir.IntegerAttr], offset: _Union[int, _ods_ir.IntegerAttr], aux: _Union[int, _ods_ir.IntegerAttr], *, alias_scopes: _Optional[_Union[_Any, _ods_ir.ArrayAttr]] = None, noalias_scopes: _Optional[_Union[_Any, _ods_ir.ArrayAttr]] = None, tbaa: _Optional[_Union[_Any, _ods_ir.ArrayAttr]] = None, loc: _Optional[_ods_ir.Location] = None, ip: _Optional[_ods_ir.InsertionPoint] = None):
    operands = []
    attributes = {}
    regions = None
    operands.append(globalPtr)
    operands.append(ldsPtr)
    _ods_context = _ods_get_default_loc_context(loc)
    attributes["size"] = (size if (
    isinstance(size, _ods_ir.Attribute) or
    not _ods_ir.AttrBuilder.contains('I32Attr')) else
      _ods_ir.AttrBuilder.get('I32Attr')(size, context=_ods_context))
    attributes["offset"] = (offset if (
    isinstance(offset, _ods_ir.Attribute) or
    not _ods_ir.AttrBuilder.contains('I32Attr')) else
      _ods_ir.AttrBuilder.get('I32Attr')(offset, context=_ods_context))
    attributes["aux"] = (aux if (
    isinstance(aux, _ods_ir.Attribute) or
    not _ods_ir.AttrBuilder.contains('I32Attr')) else
      _ods_ir.AttrBuilder.get('I32Attr')(aux, context=_ods_context))
    if alias_scopes is not None: attributes["alias_scopes"] = (alias_scopes if (
        isinstance(alias_scopes, _ods_ir.Attribute) or
        not _ods_ir.AttrBuilder.contains('LLVM_AliasScopeArrayAttr')) else
          _ods_ir.AttrBuilder.get('LLVM_AliasScopeArrayAttr')(alias_scopes, context=_ods_context))
    if noalias_scopes is not None: attributes["noalias_scopes"] = (noalias_scopes if (
        isinstance(noalias_scopes, _ods_ir.Attribute) or
        not _ods_ir.AttrBuilder.contains('LLVM_AliasScopeArrayAttr')) else
          _ods_ir.AttrBuilder.get('LLVM_AliasScopeArrayAttr')(noalias_scopes, context=_ods_context))
    if tbaa is not None: attributes["tbaa"] = (tbaa if (
        isinstance(tbaa, _ods_ir.Attribute) or
        not _ods_ir.AttrBuilder.contains('LLVM_TBAATagArrayAttr')) else
          _ods_ir.AttrBuilder.get('LLVM_TBAATagArrayAttr')(tbaa, context=_ods_context))
    results = []
    _ods_successors = None
    super().__init__(self.OPERATION_NAME, self._ODS_REGIONS, self._ODS_OPERAND_SEGMENTS, self._ODS_RESULT_SEGMENTS, attributes=attributes, results=results, operands=operands, successors=_ods_successors, regions=regions, loc=loc, ip=ip)

  @builtins.property
  def globalPtr(self) -> _ods_ir.Value:
    return self.operation.operands[0]

  @builtins.property
  def ldsPtr(self) -> _ods_ir.Value:
    return self.operation.operands[1]

  @builtins.property
  def size(self) -> _ods_ir.IntegerAttr:
    return self.operation.attributes["size"]

  @size.setter
  def size(self, value: _ods_ir.IntegerAttr):
    if value is None:
      raise ValueError("'None' not allowed as value for mandatory attributes")
    self.operation.attributes["size"] = value

  @builtins.property
  def offset(self) -> _ods_ir.IntegerAttr:
    return self.operation.attributes["offset"]

  @offset.setter
  def offset(self, value: _ods_ir.IntegerAttr):
    if value is None:
      raise ValueError("'None' not allowed as value for mandatory attributes")
    self.operation.attributes["offset"] = value

  @builtins.property
  def aux(self) -> _ods_ir.IntegerAttr:
    return self.operation.attributes["aux"]

  @aux.setter
  def aux(self, value: _ods_ir.IntegerAttr):
    if value is None:
      raise ValueError("'None' not allowed as value for mandatory attributes")
    self.operation.attributes["aux"] = value

  @builtins.property
  def alias_scopes(self) -> _Optional[_ods_ir.ArrayAttr]:
    if "alias_scopes" not in self.operation.attributes:
      return None
    return self.operation.attributes["alias_scopes"]

  @alias_scopes.setter
  def alias_scopes(self, value: _Optional[_ods_ir.ArrayAttr]):
    if value is not None:
      self.operation.attributes["alias_scopes"] = value
    elif "alias_scopes" in self.operation.attributes:
      del self.operation.attributes["alias_scopes"]

  @alias_scopes.deleter
  def alias_scopes(self):
    del self.operation.attributes["alias_scopes"]

  @builtins.property
  def noalias_scopes(self) -> _Optional[_ods_ir.ArrayAttr]:
    if "noalias_scopes" not in self.operation.attributes:
      return None
    return self.operation.attributes["noalias_scopes"]

  @noalias_scopes.setter
  def noalias_scopes(self, value: _Optional[_ods_ir.ArrayAttr]):
    if value is not None:
      self.operation.attributes["noalias_scopes"] = value
    elif "noalias_scopes" in self.operation.attributes:
      del self.operation.attributes["noalias_scopes"]

  @noalias_scopes.deleter
  def noalias_scopes(self):
    del self.operation.attributes["noalias_scopes"]

  @builtins.property
  def tbaa(self) -> _Optional[_ods_ir.ArrayAttr]:
    if "tbaa" not in self.operation.attributes:
      return None
    return self.operation.attributes["tbaa"]

  @tbaa.setter
  def tbaa(self, value: _Optional[_ods_ir.ArrayAttr]):
    if value is not None:
      self.operation.attributes["tbaa"] = value
    elif "tbaa" in self.operation.attributes:
      del self.operation.attributes["tbaa"]

  @tbaa.deleter
  def tbaa(self):
    del self.operation.attributes["tbaa"]

@_ods_cext.register_op_adaptor(GlobalLoadLDSOp)
class GlobalLoadLDSOpAdaptor(_ods_ir.OpAdaptor):
  OPERATION_NAME = "rocdl.global.load.lds"

  @builtins.property
  def globalPtr(self) -> _ods_ir.Value:
    return self.operands[0]

  @builtins.property
  def ldsPtr(self) -> _ods_ir.Value:
    return self.operands[1]

  @builtins.property
  def size(self) -> _ods_ir.IntegerAttr:
    return self.attributes["size"]

  @builtins.property
  def offset(self) -> _ods_ir.IntegerAttr:
    return self.attributes["offset"]

  @builtins.property
  def aux(self) -> _ods_ir.IntegerAttr:
    return self.attributes["aux"]

  @builtins.property
  def alias_scopes(self) -> _Optional[_ods_ir.ArrayAttr]:
    if "alias_scopes" not in self.attributes:
      return None
    return self.attributes["alias_scopes"]

  @builtins.property
  def noalias_scopes(self) -> _Optional[_ods_ir.ArrayAttr]:
    if "noalias_scopes" not in self.attributes:
      return None
    return self.attributes["noalias_scopes"]

  @builtins.property
  def tbaa(self) -> _Optional[_ods_ir.ArrayAttr]:
    if "tbaa" not in self.attributes:
      return None
    return self.attributes["tbaa"]

def global_load_lds(global_ptr: _ods_ir.Value, lds_ptr: _ods_ir.Value, size: _Union[int, _ods_ir.IntegerAttr], offset: _Union[int, _ods_ir.IntegerAttr], aux: _Union[int, _ods_ir.IntegerAttr], *, alias_scopes: _Optional[_Union[_Any, _ods_ir.ArrayAttr]] = None, noalias_scopes: _Optional[_Union[_Any, _ods_ir.ArrayAttr]] = None, tbaa: _Optional[_Union[_Any, _ods_ir.ArrayAttr]] = None, loc: _Optional[_ods_ir.Location] = None, ip: _Optional[_ods_ir.InsertionPoint] = None) -> GlobalLoadLDSOp:
  return GlobalLoadLDSOp(globalPtr=global_ptr, ldsPtr=lds_ptr, size=size, offset=offset, aux=aux, alias_scopes=alias_scopes, noalias_scopes=noalias_scopes, tbaa=tbaa, loc=loc, ip=ip)

@_ods_cext.register_operation(_Dialect)
class GlobalLoadTr4_B64(_ods_ir.OpView):
  r"""
  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>
  ```
  """

  OPERATION_NAME = "rocdl.global.load.tr4.b64"

  _ODS_REGIONS = (0, True)

  def __init__(self, res: _ods_ir.Type, ptr: _ods_ir.Value, *, alias_scopes: _Optional[_Union[_Any, _ods_ir.ArrayAttr]] = None, noalias_scopes: _Optional[_Union[_Any, _ods_ir.ArrayAttr]] = None, tbaa: _Optional[_Union[_Any, _ods_ir.ArrayAttr]] = None, loc: _Optional[_ods_ir.Location] = None, ip: _Optional[_ods_ir.InsertionPoint] = None):
    operands = []
    attributes = {}
    regions = None
    operands.append(ptr)
    _ods_context = _ods_get_default_loc_context(loc)
    if alias_scopes is not None: attributes["alias_scopes"] = (alias_scopes if (
        isinstance(alias_scopes, _ods_ir.Attribute) or
        not _ods_ir.AttrBuilder.contains('LLVM_AliasScopeArrayAttr')) else
          _ods_ir.AttrBuilder.get('LLVM_AliasScopeArrayAttr')(alias_scopes, context=_ods_context))
    if noalias_scopes is not None: attributes["noalias_scopes"] = (noalias_scopes if (
        isinstance(noalias_scopes, _ods_ir.Attribute) or
        not _ods_ir.AttrBuilder.contains('LLVM_AliasScopeArrayAttr')) else
          _ods_ir.AttrBuilder.get('LLVM_AliasScopeArrayAttr')(noalias_scopes, context=_ods_context))
    if tbaa is not None: attributes["tbaa"] = (tbaa if (
        isinstance(tbaa, _ods_ir.Attribute) or
        not _ods_ir.AttrBuilder.contains('LLVM_TBAATagArrayAttr')) else
          _ods_ir.AttrBuilder.get('LLVM_TBAATagArrayAttr')(tbaa, context=_ods_context))
    results = []
    results.append(res)
    _ods_successors = None
    super().__init__(self.OPERATION_NAME, self._ODS_REGIONS, self._ODS_OPERAND_SEGMENTS, self._ODS_RESULT_SEGMENTS, attributes=attributes, results=results, operands=operands, successors=_ods_successors, regions=regions, loc=loc, ip=ip)

  @builtins.property
  def ptr(self) -> _ods_ir.Value:
    return self.operation.operands[0]

  @builtins.property
  def alias_scopes(self) -> _Optional[_ods_ir.ArrayAttr]:
    if "alias_scopes" not in self.operation.attributes:
      return None
    return self.operation.attributes["alias_scopes"]

  @alias_scopes.setter
  def alias_scopes(self, value: _Optional[_ods_ir.ArrayAttr]):
    if value is not None:
      self.operation.attributes["alias_scopes"] = value
    elif "alias_scopes" in self.operation.attributes:
      del self.operation.attributes["alias_scopes"]

  @alias_scopes.deleter
  def alias_scopes(self):
    del self.operation.attributes["alias_scopes"]

  @builtins.property
  def noalias_scopes(self) -> _Optional[_ods_ir.ArrayAttr]:
    if "noalias_scopes" not in self.operation.attributes:
      return None
    return self.operation.attributes["noalias_scopes"]

  @noalias_scopes.setter
  def noalias_scopes(self, value: _Optional[_ods_ir.ArrayAttr]):
    if value is not None:
      self.operation.attributes["noalias_scopes"] = value
    elif "noalias_scopes" in self.operation.attributes:
      del self.operation.attributes["noalias_scopes"]

  @noalias_scopes.deleter
  def noalias_scopes(self):
    del self.operation.attributes["noalias_scopes"]

  @builtins.property
  def tbaa(self) -> _Optional[_ods_ir.ArrayAttr]:
    if "tbaa" not in self.operation.attributes:
      return None
    return self.operation.attributes["tbaa"]

  @tbaa.setter
  def tbaa(self, value: _Optional[_ods_ir.ArrayAttr]):
    if value is not None:
      self.operation.attributes["tbaa"] = value
    elif "tbaa" in self.operation.attributes:
      del self.operation.attributes["tbaa"]

  @tbaa.deleter
  def tbaa(self):
    del self.operation.attributes["tbaa"]

  @builtins.property
  def res(self) -> _ods_ir.OpResult:
    return self.operation.results[0]

@_ods_cext.register_op_adaptor(GlobalLoadTr4_B64)
class GlobalLoadTr4_B64Adaptor(_ods_ir.OpAdaptor):
  OPERATION_NAME = "rocdl.global.load.tr4.b64"

  @builtins.property
  def ptr(self) -> _ods_ir.Value:
    return self.operands[0]

  @builtins.property
  def alias_scopes(self) -> _Optional[_ods_ir.ArrayAttr]:
    if "alias_scopes" not in self.attributes:
      return None
    return self.attributes["alias_scopes"]

  @builtins.property
  def noalias_scopes(self) -> _Optional[_ods_ir.ArrayAttr]:
    if "noalias_scopes" not in self.attributes:
      return None
    return self.attributes["noalias_scopes"]

  @builtins.property
  def tbaa(self) -> _Optional[_ods_ir.ArrayAttr]:
    if "tbaa" not in self.attributes:
      return None
    return self.attributes["tbaa"]

def global_load_tr4_b64(res: _ods_ir.Type, ptr: _ods_ir.Value, *, alias_scopes: _Optional[_Union[_Any, _ods_ir.ArrayAttr]] = None, noalias_scopes: _Optional[_Union[_Any, _ods_ir.ArrayAttr]] = None, tbaa: _Optional[_Union[_Any, _ods_ir.ArrayAttr]] = None, loc: _Optional[_ods_ir.Location] = None, ip: _Optional[_ods_ir.InsertionPoint] = None) -> _ods_ir.OpResult:
  return GlobalLoadTr4_B64(res=res, ptr=ptr, alias_scopes=alias_scopes, noalias_scopes=noalias_scopes, tbaa=tbaa, loc=loc, ip=ip).result

@_ods_cext.register_operation(_Dialect)
class GlobalLoadTr6_B96(_ods_ir.OpView):
  r"""
  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>
  ```
  """

  OPERATION_NAME = "rocdl.global.load.tr6.b96"

  _ODS_REGIONS = (0, True)

  def __init__(self, res: _ods_ir.Type, ptr: _ods_ir.Value, *, alias_scopes: _Optional[_Union[_Any, _ods_ir.ArrayAttr]] = None, noalias_scopes: _Optional[_Union[_Any, _ods_ir.ArrayAttr]] = None, tbaa: _Optional[_Union[_Any, _ods_ir.ArrayAttr]] = None, loc: _Optional[_ods_ir.Location] = None, ip: _Optional[_ods_ir.InsertionPoint] = None):
    operands = []
    attributes = {}
    regions = None
    operands.append(ptr)
    _ods_context = _ods_get_default_loc_context(loc)
    if alias_scopes is not None: attributes["alias_scopes"] = (alias_scopes if (
        isinstance(alias_scopes, _ods_ir.Attribute) or
        not _ods_ir.AttrBuilder.contains('LLVM_AliasScopeArrayAttr')) else
          _ods_ir.AttrBuilder.get('LLVM_AliasScopeArrayAttr')(alias_scopes, context=_ods_context))
    if noalias_scopes is not None: attributes["noalias_scopes"] = (noalias_scopes if (
        isinstance(noalias_scopes, _ods_ir.Attribute) or
        not _ods_ir.AttrBuilder.contains('LLVM_AliasScopeArrayAttr')) else
          _ods_ir.AttrBuilder.get('LLVM_AliasScopeArrayAttr')(noalias_scopes, context=_ods_context))
    if tbaa is not None: attributes["tbaa"] = (tbaa if (
        isinstance(tbaa, _ods_ir.Attribute) or
        not _ods_ir.AttrBuilder.contains('LLVM_TBAATagArrayAttr')) else
          _ods_ir.AttrBuilder.get('LLVM_TBAATagArrayAttr')(tbaa, context=_ods_context))
    results = []
    results.append(res)
    _ods_successors = None
    super().__init__(self.OPERATION_NAME, self._ODS_REGIONS, self._ODS_OPERAND_SEGMENTS, self._ODS_RESULT_SEGMENTS, attributes=attributes, results=results, operands=operands, successors=_ods_successors, regions=regions, loc=loc, ip=ip)

  @builtins.property
  def ptr(self) -> _ods_ir.Value:
    return self.operation.operands[0]

  @builtins.property
  def alias_scopes(self) -> _Optional[_ods_ir.ArrayAttr]:
    if "alias_scopes" not in self.operation.attributes:
      return None
    return self.operation.attributes["alias_scopes"]

  @alias_scopes.setter
  def alias_scopes(self, value: _Optional[_ods_ir.ArrayAttr]):
    if value is not None:
      self.operation.attributes["alias_scopes"] = value
    elif "alias_scopes" in self.operation.attributes:
      del self.operation.attributes["alias_scopes"]

  @alias_scopes.deleter
  def alias_scopes(self):
    del self.operation.attributes["alias_scopes"]

  @builtins.property
  def noalias_scopes(self) -> _Optional[_ods_ir.ArrayAttr]:
    if "noalias_scopes" not in self.operation.attributes:
      return None
    return self.operation.attributes["noalias_scopes"]

  @noalias_scopes.setter
  def noalias_scopes(self, value: _Optional[_ods_ir.ArrayAttr]):
    if value is not None:
      self.operation.attributes["noalias_scopes"] = value
    elif "noalias_scopes" in self.operation.attributes:
      del self.operation.attributes["noalias_scopes"]

  @noalias_scopes.deleter
  def noalias_scopes(self):
    del self.operation.attributes["noalias_scopes"]

  @builtins.property
  def tbaa(self) -> _Optional[_ods_ir.ArrayAttr]:
    if "tbaa" not in self.operation.attributes:
      return None
    return self.operation.attributes["tbaa"]

  @tbaa.setter
  def tbaa(self, value: _Optional[_ods_ir.ArrayAttr]):
    if value is not None:
      self.operation.attributes["tbaa"] = value
    elif "tbaa" in self.operation.attributes:
      del self.operation.attributes["tbaa"]

  @tbaa.deleter
  def tbaa(self):
    del self.operation.attributes["tbaa"]

  @builtins.property
  def res(self) -> _ods_ir.OpResult:
    return self.operation.results[0]

@_ods_cext.register_op_adaptor(GlobalLoadTr6_B96)
class GlobalLoadTr6_B96Adaptor(_ods_ir.OpAdaptor):
  OPERATION_NAME = "rocdl.global.load.tr6.b96"

  @builtins.property
  def ptr(self) -> _ods_ir.Value:
    return self.operands[0]

  @builtins.property
  def alias_scopes(self) -> _Optional[_ods_ir.ArrayAttr]:
    if "alias_scopes" not in self.attributes:
      return None
    return self.attributes["alias_scopes"]

  @builtins.property
  def noalias_scopes(self) -> _Optional[_ods_ir.ArrayAttr]:
    if "noalias_scopes" not in self.attributes:
      return None
    return self.attributes["noalias_scopes"]

  @builtins.property
  def tbaa(self) -> _Optional[_ods_ir.ArrayAttr]:
    if "tbaa" not in self.attributes:
      return None
    return self.attributes["tbaa"]

def global_load_tr6_b96(res: _ods_ir.Type, ptr: _ods_ir.Value, *, alias_scopes: _Optional[_Union[_Any, _ods_ir.ArrayAttr]] = None, noalias_scopes: _Optional[_Union[_Any, _ods_ir.ArrayAttr]] = None, tbaa: _Optional[_Union[_Any, _ods_ir.ArrayAttr]] = None, loc: _Optional[_ods_ir.Location] = None, ip: _Optional[_ods_ir.InsertionPoint] = None) -> _ods_ir.OpResult:
  return GlobalLoadTr6_B96(res=res, ptr=ptr, alias_scopes=alias_scopes, noalias_scopes=noalias_scopes, tbaa=tbaa, loc=loc, ip=ip).result

@_ods_cext.register_operation(_Dialect)
class GlobalLoadTr8_B64(_ods_ir.OpView):
  r"""
  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>
  ```
  """

  OPERATION_NAME = "rocdl.global.load.tr.b64"

  _ODS_REGIONS = (0, True)

  def __init__(self, res: _ods_ir.Type, ptr: _ods_ir.Value, *, alias_scopes: _Optional[_Union[_Any, _ods_ir.ArrayAttr]] = None, noalias_scopes: _Optional[_Union[_Any, _ods_ir.ArrayAttr]] = None, tbaa: _Optional[_Union[_Any, _ods_ir.ArrayAttr]] = None, loc: _Optional[_ods_ir.Location] = None, ip: _Optional[_ods_ir.InsertionPoint] = None):
    operands = []
    attributes = {}
    regions = None
    operands.append(ptr)
    _ods_context = _ods_get_default_loc_context(loc)
    if alias_scopes is not None: attributes["alias_scopes"] = (alias_scopes if (
        isinstance(alias_scopes, _ods_ir.Attribute) or
        not _ods_ir.AttrBuilder.contains('LLVM_AliasScopeArrayAttr')) else
          _ods_ir.AttrBuilder.get('LLVM_AliasScopeArrayAttr')(alias_scopes, context=_ods_context))
    if noalias_scopes is not None: attributes["noalias_scopes"] = (noalias_scopes if (
        isinstance(noalias_scopes, _ods_ir.Attribute) or
        not _ods_ir.AttrBuilder.contains('LLVM_AliasScopeArrayAttr')) else
          _ods_ir.AttrBuilder.get('LLVM_AliasScopeArrayAttr')(noalias_scopes, context=_ods_context))
    if tbaa is not None: attributes["tbaa"] = (tbaa if (
        isinstance(tbaa, _ods_ir.Attribute) or
        not _ods_ir.AttrBuilder.contains('LLVM_TBAATagArrayAttr')) else
          _ods_ir.AttrBuilder.get('LLVM_TBAATagArrayAttr')(tbaa, context=_ods_context))
    results = []
    results.append(res)
    _ods_successors = None
    super().__init__(self.OPERATION_NAME, self._ODS_REGIONS, self._ODS_OPERAND_SEGMENTS, self._ODS_RESULT_SEGMENTS, attributes=attributes, results=results, operands=operands, successors=_ods_successors, regions=regions, loc=loc, ip=ip)

  @builtins.property
  def ptr(self) -> _ods_ir.Value:
    return self.operation.operands[0]

  @builtins.property
  def alias_scopes(self) -> _Optional[_ods_ir.ArrayAttr]:
    if "alias_scopes" not in self.operation.attributes:
      return None
    return self.operation.attributes["alias_scopes"]

  @alias_scopes.setter
  def alias_scopes(self, value: _Optional[_ods_ir.ArrayAttr]):
    if value is not None:
      self.operation.attributes["alias_scopes"] = value
    elif "alias_scopes" in self.operation.attributes:
      del self.operation.attributes["alias_scopes"]

  @alias_scopes.deleter
  def alias_scopes(self):
    del self.operation.attributes["alias_scopes"]

  @builtins.property
  def noalias_scopes(self) -> _Optional[_ods_ir.ArrayAttr]:
    if "noalias_scopes" not in self.operation.attributes:
      return None
    return self.operation.attributes["noalias_scopes"]

  @noalias_scopes.setter
  def noalias_scopes(self, value: _Optional[_ods_ir.ArrayAttr]):
    if value is not None:
      self.operation.attributes["noalias_scopes"] = value
    elif "noalias_scopes" in self.operation.attributes:
      del self.operation.attributes["noalias_scopes"]

  @noalias_scopes.deleter
  def noalias_scopes(self):
    del self.operation.attributes["noalias_scopes"]

  @builtins.property
  def tbaa(self) -> _Optional[_ods_ir.ArrayAttr]:
    if "tbaa" not in self.operation.attributes:
      return None
    return self.operation.attributes["tbaa"]

  @tbaa.setter
  def tbaa(self, value: _Optional[_ods_ir.ArrayAttr]):
    if value is not None:
      self.operation.attributes["tbaa"] = value
    elif "tbaa" in self.operation.attributes:
      del self.operation.attributes["tbaa"]

  @tbaa.deleter
  def tbaa(self):
    del self.operation.attributes["tbaa"]

  @builtins.property
  def res(self) -> _ods_ir.OpResult:
    return self.operation.results[0]

@_ods_cext.register_op_adaptor(GlobalLoadTr8_B64)
class GlobalLoadTr8_B64Adaptor(_ods_ir.OpAdaptor):
  OPERATION_NAME = "rocdl.global.load.tr.b64"

  @builtins.property
  def ptr(self) -> _ods_ir.Value:
    return self.operands[0]

  @builtins.property
  def alias_scopes(self) -> _Optional[_ods_ir.ArrayAttr]:
    if "alias_scopes" not in self.attributes:
      return None
    return self.attributes["alias_scopes"]

  @builtins.property
  def noalias_scopes(self) -> _Optional[_ods_ir.ArrayAttr]:
    if "noalias_scopes" not in self.attributes:
      return None
    return self.attributes["noalias_scopes"]

  @builtins.property
  def tbaa(self) -> _Optional[_ods_ir.ArrayAttr]:
    if "tbaa" not in self.attributes:
      return None
    return self.attributes["tbaa"]

def global_load_tr_b64(res: _ods_ir.Type, ptr: _ods_ir.Value, *, alias_scopes: _Optional[_Union[_Any, _ods_ir.ArrayAttr]] = None, noalias_scopes: _Optional[_Union[_Any, _ods_ir.ArrayAttr]] = None, tbaa: _Optional[_Union[_Any, _ods_ir.ArrayAttr]] = None, loc: _Optional[_ods_ir.Location] = None, ip: _Optional[_ods_ir.InsertionPoint] = None) -> _ods_ir.OpResult:
  return GlobalLoadTr8_B64(res=res, ptr=ptr, alias_scopes=alias_scopes, noalias_scopes=noalias_scopes, tbaa=tbaa, loc=loc, ip=ip).result

@_ods_cext.register_operation(_Dialect)
class GlobalLoadTr8_B128(_ods_ir.OpView):
  r"""
  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>
  ```
  """

  OPERATION_NAME = "rocdl.global.load.tr.b128"

  _ODS_REGIONS = (0, True)

  def __init__(self, res: _ods_ir.Type, ptr: _ods_ir.Value, *, alias_scopes: _Optional[_Union[_Any, _ods_ir.ArrayAttr]] = None, noalias_scopes: _Optional[_Union[_Any, _ods_ir.ArrayAttr]] = None, tbaa: _Optional[_Union[_Any, _ods_ir.ArrayAttr]] = None, loc: _Optional[_ods_ir.Location] = None, ip: _Optional[_ods_ir.InsertionPoint] = None):
    operands = []
    attributes = {}
    regions = None
    operands.append(ptr)
    _ods_context = _ods_get_default_loc_context(loc)
    if alias_scopes is not None: attributes["alias_scopes"] = (alias_scopes if (
        isinstance(alias_scopes, _ods_ir.Attribute) or
        not _ods_ir.AttrBuilder.contains('LLVM_AliasScopeArrayAttr')) else
          _ods_ir.AttrBuilder.get('LLVM_AliasScopeArrayAttr')(alias_scopes, context=_ods_context))
    if noalias_scopes is not None: attributes["noalias_scopes"] = (noalias_scopes if (
        isinstance(noalias_scopes, _ods_ir.Attribute) or
        not _ods_ir.AttrBuilder.contains('LLVM_AliasScopeArrayAttr')) else
          _ods_ir.AttrBuilder.get('LLVM_AliasScopeArrayAttr')(noalias_scopes, context=_ods_context))
    if tbaa is not None: attributes["tbaa"] = (tbaa if (
        isinstance(tbaa, _ods_ir.Attribute) or
        not _ods_ir.AttrBuilder.contains('LLVM_TBAATagArrayAttr')) else
          _ods_ir.AttrBuilder.get('LLVM_TBAATagArrayAttr')(tbaa, context=_ods_context))
    results = []
    results.append(res)
    _ods_successors = None
    super().__init__(self.OPERATION_NAME, self._ODS_REGIONS, self._ODS_OPERAND_SEGMENTS, self._ODS_RESULT_SEGMENTS, attributes=attributes, results=results, operands=operands, successors=_ods_successors, regions=regions, loc=loc, ip=ip)

  @builtins.property
  def ptr(self) -> _ods_ir.Value:
    return self.operation.operands[0]

  @builtins.property
  def alias_scopes(self) -> _Optional[_ods_ir.ArrayAttr]:
    if "alias_scopes" not in self.operation.attributes:
      return None
    return self.operation.attributes["alias_scopes"]

  @alias_scopes.setter
  def alias_scopes(self, value: _Optional[_ods_ir.ArrayAttr]):
    if value is not None:
      self.operation.attributes["alias_scopes"] = value
    elif "alias_scopes" in self.operation.attributes:
      del self.operation.attributes["alias_scopes"]

  @alias_scopes.deleter
  def alias_scopes(self):
    del self.operation.attributes["alias_scopes"]

  @builtins.property
  def noalias_scopes(self) -> _Optional[_ods_ir.ArrayAttr]:
    if "noalias_scopes" not in self.operation.attributes:
      return None
    return self.operation.attributes["noalias_scopes"]

  @noalias_scopes.setter
  def noalias_scopes(self, value: _Optional[_ods_ir.ArrayAttr]):
    if value is not None:
      self.operation.attributes["noalias_scopes"] = value
    elif "noalias_scopes" in self.operation.attributes:
      del self.operation.attributes["noalias_scopes"]

  @noalias_scopes.deleter
  def noalias_scopes(self):
    del self.operation.attributes["noalias_scopes"]

  @builtins.property
  def tbaa(self) -> _Optional[_ods_ir.ArrayAttr]:
    if "tbaa" not in self.operation.attributes:
      return None
    return self.operation.attributes["tbaa"]

  @tbaa.setter
  def tbaa(self, value: _Optional[_ods_ir.ArrayAttr]):
    if value is not None:
      self.operation.attributes["tbaa"] = value
    elif "tbaa" in self.operation.attributes:
      del self.operation.attributes["tbaa"]

  @tbaa.deleter
  def tbaa(self):
    del self.operation.attributes["tbaa"]

  @builtins.property
  def res(self) -> _ods_ir.OpResult:
    return self.operation.results[0]

@_ods_cext.register_op_adaptor(GlobalLoadTr8_B128)
class GlobalLoadTr8_B128Adaptor(_ods_ir.OpAdaptor):
  OPERATION_NAME = "rocdl.global.load.tr.b128"

  @builtins.property
  def ptr(self) -> _ods_ir.Value:
    return self.operands[0]

  @builtins.property
  def alias_scopes(self) -> _Optional[_ods_ir.ArrayAttr]:
    if "alias_scopes" not in self.attributes:
      return None
    return self.attributes["alias_scopes"]

  @builtins.property
  def noalias_scopes(self) -> _Optional[_ods_ir.ArrayAttr]:
    if "noalias_scopes" not in self.attributes:
      return None
    return self.attributes["noalias_scopes"]

  @builtins.property
  def tbaa(self) -> _Optional[_ods_ir.ArrayAttr]:
    if "tbaa" not in self.attributes:
      return None
    return self.attributes["tbaa"]

def global_load_tr_b128(res: _ods_ir.Type, ptr: _ods_ir.Value, *, alias_scopes: _Optional[_Union[_Any, _ods_ir.ArrayAttr]] = None, noalias_scopes: _Optional[_Union[_Any, _ods_ir.ArrayAttr]] = None, tbaa: _Optional[_Union[_Any, _ods_ir.ArrayAttr]] = None, loc: _Optional[_ods_ir.Location] = None, ip: _Optional[_ods_ir.InsertionPoint] = None) -> _ods_ir.OpResult:
  return GlobalLoadTr8_B128(res=res, ptr=ptr, alias_scopes=alias_scopes, noalias_scopes=noalias_scopes, tbaa=tbaa, loc=loc, ip=ip).result

@_ods_cext.register_operation(_Dialect)
class GlobalPrefetchOp(_ods_ir.OpView):
  r"""
  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, scope 0 : !llvm.ptr<1>
  ```
  """

  OPERATION_NAME = "rocdl.global.prefetch"

  _ODS_REGIONS = (0, True)

  def __init__(self, ptr: _ods_ir.Value, scope: _Union[int, _ods_ir.IntegerAttr], *, alias_scopes: _Optional[_Union[_Any, _ods_ir.ArrayAttr]] = None, noalias_scopes: _Optional[_Union[_Any, _ods_ir.ArrayAttr]] = None, tbaa: _Optional[_Union[_Any, _ods_ir.ArrayAttr]] = None, loc: _Optional[_ods_ir.Location] = None, ip: _Optional[_ods_ir.InsertionPoint] = None):
    operands = []
    attributes = {}
    regions = None
    operands.append(ptr)
    _ods_context = _ods_get_default_loc_context(loc)
    attributes["scope"] = (scope if (
    isinstance(scope, _ods_ir.Attribute) or
    not _ods_ir.AttrBuilder.contains('I32Attr')) else
      _ods_ir.AttrBuilder.get('I32Attr')(scope, context=_ods_context))
    if alias_scopes is not None: attributes["alias_scopes"] = (alias_scopes if (
        isinstance(alias_scopes, _ods_ir.Attribute) or
        not _ods_ir.AttrBuilder.contains('LLVM_AliasScopeArrayAttr')) else
          _ods_ir.AttrBuilder.get('LLVM_AliasScopeArrayAttr')(alias_scopes, context=_ods_context))
    if noalias_scopes is not None: attributes["noalias_scopes"] = (noalias_scopes if (
        isinstance(noalias_scopes, _ods_ir.Attribute) or
        not _ods_ir.AttrBuilder.contains('LLVM_AliasScopeArrayAttr')) else
          _ods_ir.AttrBuilder.get('LLVM_AliasScopeArrayAttr')(noalias_scopes, context=_ods_context))
    if tbaa is not None: attributes["tbaa"] = (tbaa if (
        isinstance(tbaa, _ods_ir.Attribute) or
        not _ods_ir.AttrBuilder.contains('LLVM_TBAATagArrayAttr')) else
          _ods_ir.AttrBuilder.get('LLVM_TBAATagArrayAttr')(tbaa, context=_ods_context))
    results = []
    _ods_successors = None
    super().__init__(self.OPERATION_NAME, self._ODS_REGIONS, self._ODS_OPERAND_SEGMENTS, self._ODS_RESULT_SEGMENTS, attributes=attributes, results=results, operands=operands, successors=_ods_successors, regions=regions, loc=loc, ip=ip)

  @builtins.property
  def ptr(self) -> _ods_ir.Value:
    return self.operation.operands[0]

  @builtins.property
  def scope(self) -> _ods_ir.IntegerAttr:
    return self.operation.attributes["scope"]

  @scope.setter
  def scope(self, value: _ods_ir.IntegerAttr):
    if value is None:
      raise ValueError("'None' not allowed as value for mandatory attributes")
    self.operation.attributes["scope"] = value

  @builtins.property
  def alias_scopes(self) -> _Optional[_ods_ir.ArrayAttr]:
    if "alias_scopes" not in self.operation.attributes:
      return None
    return self.operation.attributes["alias_scopes"]

  @alias_scopes.setter
  def alias_scopes(self, value: _Optional[_ods_ir.ArrayAttr]):
    if value is not None:
      self.operation.attributes["alias_scopes"] = value
    elif "alias_scopes" in self.operation.attributes:
      del self.operation.attributes["alias_scopes"]

  @alias_scopes.deleter
  def alias_scopes(self):
    del self.operation.attributes["alias_scopes"]

  @builtins.property
  def noalias_scopes(self) -> _Optional[_ods_ir.ArrayAttr]:
    if "noalias_scopes" not in self.operation.attributes:
      return None
    return self.operation.attributes["noalias_scopes"]

  @noalias_scopes.setter
  def noalias_scopes(self, value: _Optional[_ods_ir.ArrayAttr]):
    if value is not None:
      self.operation.attributes["noalias_scopes"] = value
    elif "noalias_scopes" in self.operation.attributes:
      del self.operation.attributes["noalias_scopes"]

  @noalias_scopes.deleter
  def noalias_scopes(self):
    del self.operation.attributes["noalias_scopes"]

  @builtins.property
  def tbaa(self) -> _Optional[_ods_ir.ArrayAttr]:
    if "tbaa" not in self.operation.attributes:
      return None
    return self.operation.attributes["tbaa"]

  @tbaa.setter
  def tbaa(self, value: _Optional[_ods_ir.ArrayAttr]):
    if value is not None:
      self.operation.attributes["tbaa"] = value
    elif "tbaa" in self.operation.attributes:
      del self.operation.attributes["tbaa"]

  @tbaa.deleter
  def tbaa(self):
    del self.operation.attributes["tbaa"]

@_ods_cext.register_op_adaptor(GlobalPrefetchOp)
class GlobalPrefetchOpAdaptor(_ods_ir.OpAdaptor):
  OPERATION_NAME = "rocdl.global.prefetch"

  @builtins.property
  def ptr(self) -> _ods_ir.Value:
    return self.operands[0]

  @builtins.property
  def scope(self) -> _ods_ir.IntegerAttr:
    return self.attributes["scope"]

  @builtins.property
  def alias_scopes(self) -> _Optional[_ods_ir.ArrayAttr]:
    if "alias_scopes" not in self.attributes:
      return None
    return self.attributes["alias_scopes"]

  @builtins.property
  def noalias_scopes(self) -> _Optional[_ods_ir.ArrayAttr]:
    if "noalias_scopes" not in self.attributes:
      return None
    return self.attributes["noalias_scopes"]

  @builtins.property
  def tbaa(self) -> _Optional[_ods_ir.ArrayAttr]:
    if "tbaa" not in self.attributes:
      return None
    return self.attributes["tbaa"]

def global_prefetch(ptr: _ods_ir.Value, scope: _Union[int, _ods_ir.IntegerAttr], *, alias_scopes: _Optional[_Union[_Any, _ods_ir.ArrayAttr]] = None, noalias_scopes: _Optional[_Union[_Any, _ods_ir.ArrayAttr]] = None, tbaa: _Optional[_Union[_Any, _ods_ir.ArrayAttr]] = None, loc: _Optional[_ods_ir.Location] = None, ip: _Optional[_ods_ir.InsertionPoint] = None) -> GlobalPrefetchOp:
  return GlobalPrefetchOp(ptr=ptr, scope=scope, alias_scopes=alias_scopes, noalias_scopes=noalias_scopes, tbaa=tbaa, loc=loc, ip=ip)

@_ods_cext.register_operation(_Dialect)
class GlobalStoreAsyncFromLDSB8Op(_ods_ir.OpView):
  r"""
  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>
  ```
  """

  OPERATION_NAME = "rocdl.global.store.async.from.lds.b8"

  _ODS_REGIONS = (0, True)

  def __init__(self, globalPtr: _ods_ir.Value, ldsPtr: _ods_ir.Value, offset: _Union[int, _ods_ir.IntegerAttr], aux: _Union[int, _ods_ir.IntegerAttr], *, alias_scopes: _Optional[_Union[_Any, _ods_ir.ArrayAttr]] = None, noalias_scopes: _Optional[_Union[_Any, _ods_ir.ArrayAttr]] = None, tbaa: _Optional[_Union[_Any, _ods_ir.ArrayAttr]] = None, loc: _Optional[_ods_ir.Location] = None, ip: _Optional[_ods_ir.InsertionPoint] = None):
    operands = []
    attributes = {}
    regions = None
    operands.append(globalPtr)
    operands.append(ldsPtr)
    _ods_context = _ods_get_default_loc_context(loc)
    attributes["offset"] = (offset if (
    isinstance(offset, _ods_ir.Attribute) or
    not _ods_ir.AttrBuilder.contains('I32Attr')) else
      _ods_ir.AttrBuilder.get('I32Attr')(offset, context=_ods_context))
    attributes["aux"] = (aux if (
    isinstance(aux, _ods_ir.Attribute) or
    not _ods_ir.AttrBuilder.contains('I32Attr')) else
      _ods_ir.AttrBuilder.get('I32Attr')(aux, context=_ods_context))
    if alias_scopes is not None: attributes["alias_scopes"] = (alias_scopes if (
        isinstance(alias_scopes, _ods_ir.Attribute) or
        not _ods_ir.AttrBuilder.contains('LLVM_AliasScopeArrayAttr')) else
          _ods_ir.AttrBuilder.get('LLVM_AliasScopeArrayAttr')(alias_scopes, context=_ods_context))
    if noalias_scopes is not None: attributes["noalias_scopes"] = (noalias_scopes if (
        isinstance(noalias_scopes, _ods_ir.Attribute) or
        not _ods_ir.AttrBuilder.contains('LLVM_AliasScopeArrayAttr')) else
          _ods_ir.AttrBuilder.get('LLVM_AliasScopeArrayAttr')(noalias_scopes, context=_ods_context))
    if tbaa is not None: attributes["tbaa"] = (tbaa if (
        isinstance(tbaa, _ods_ir.Attribute) or
        not _ods_ir.AttrBuilder.contains('LLVM_TBAATagArrayAttr')) else
          _ods_ir.AttrBuilder.get('LLVM_TBAATagArrayAttr')(tbaa, context=_ods_context))
    results = []
    _ods_successors = None
    super().__init__(self.OPERATION_NAME, self._ODS_REGIONS, self._ODS_OPERAND_SEGMENTS, self._ODS_RESULT_SEGMENTS, attributes=attributes, results=results, operands=operands, successors=_ods_successors, regions=regions, loc=loc, ip=ip)

  @builtins.property
  def globalPtr(self) -> _ods_ir.Value:
    return self.operation.operands[0]

  @builtins.property
  def ldsPtr(self) -> _ods_ir.Value:
    return self.operation.operands[1]

  @builtins.property
  def offset(self) -> _ods_ir.IntegerAttr:
    return self.operation.attributes["offset"]

  @offset.setter
  def offset(self, value: _ods_ir.IntegerAttr):
    if value is None:
      raise ValueError("'None' not allowed as value for mandatory attributes")
    self.operation.attributes["offset"] = value

  @builtins.property
  def aux(self) -> _ods_ir.IntegerAttr:
    return self.operation.attributes["aux"]

  @aux.setter
  def aux(self, value: _ods_ir.IntegerAttr):
    if value is None:
      raise ValueError("'None' not allowed as value for mandatory attributes")
    self.operation.attributes["aux"] = value

  @builtins.property
  def alias_scopes(self) -> _Optional[_ods_ir.ArrayAttr]:
    if "alias_scopes" not in self.operation.attributes:
      return None
    return self.operation.attributes["alias_scopes"]

  @alias_scopes.setter
  def alias_scopes(self, value: _Optional[_ods_ir.ArrayAttr]):
    if value is not None:
      self.operation.attributes["alias_scopes"] = value
    elif "alias_scopes" in self.operation.attributes:
      del self.operation.attributes["alias_scopes"]

  @alias_scopes.deleter
  def alias_scopes(self):
    del self.operation.attributes["alias_scopes"]

  @builtins.property
  def noalias_scopes(self) -> _Optional[_ods_ir.ArrayAttr]:
    if "noalias_scopes" not in self.operation.attributes:
      return None
    return self.operation.attributes["noalias_scopes"]

  @noalias_scopes.setter
  def noalias_scopes(self, value: _Optional[_ods_ir.ArrayAttr]):
    if value is not None:
      self.operation.attributes["noalias_scopes"] = value
    elif "noalias_scopes" in self.operation.attributes:
      del self.operation.attributes["noalias_scopes"]

  @noalias_scopes.deleter
  def noalias_scopes(self):
    del self.operation.attributes["noalias_scopes"]

  @builtins.property
  def tbaa(self) -> _Optional[_ods_ir.ArrayAttr]:
    if "tbaa" not in self.operation.attributes:
      return None
    return self.operation.attributes["tbaa"]

  @tbaa.setter
  def tbaa(self, value: _Optional[_ods_ir.ArrayAttr]):
    if value is not None:
      self.operation.attributes["tbaa"] = value
    elif "tbaa" in self.operation.attributes:
      del self.operation.attributes["tbaa"]

  @tbaa.deleter
  def tbaa(self):
    del self.operation.attributes["tbaa"]

@_ods_cext.register_op_adaptor(GlobalStoreAsyncFromLDSB8Op)
class GlobalStoreAsyncFromLDSB8OpAdaptor(_ods_ir.OpAdaptor):
  OPERATION_NAME = "rocdl.global.store.async.from.lds.b8"

  @builtins.property
  def globalPtr(self) -> _ods_ir.Value:
    return self.operands[0]

  @builtins.property
  def ldsPtr(self) -> _ods_ir.Value:
    return self.operands[1]

  @builtins.property
  def offset(self) -> _ods_ir.IntegerAttr:
    return self.attributes["offset"]

  @builtins.property
  def aux(self) -> _ods_ir.IntegerAttr:
    return self.attributes["aux"]

  @builtins.property
  def alias_scopes(self) -> _Optional[_ods_ir.ArrayAttr]:
    if "alias_scopes" not in self.attributes:
      return None
    return self.attributes["alias_scopes"]

  @builtins.property
  def noalias_scopes(self) -> _Optional[_ods_ir.ArrayAttr]:
    if "noalias_scopes" not in self.attributes:
      return None
    return self.attributes["noalias_scopes"]

  @builtins.property
  def tbaa(self) -> _Optional[_ods_ir.ArrayAttr]:
    if "tbaa" not in self.attributes:
      return None
    return self.attributes["tbaa"]

def global_store_async_from_lds_b8(global_ptr: _ods_ir.Value, lds_ptr: _ods_ir.Value, offset: _Union[int, _ods_ir.IntegerAttr], aux: _Union[int, _ods_ir.IntegerAttr], *, alias_scopes: _Optional[_Union[_Any, _ods_ir.ArrayAttr]] = None, noalias_scopes: _Optional[_Union[_Any, _ods_ir.ArrayAttr]] = None, tbaa: _Optional[_Union[_Any, _ods_ir.ArrayAttr]] = None, loc: _Optional[_ods_ir.Location] = None, ip: _Optional[_ods_ir.InsertionPoint] = None) -> GlobalStoreAsyncFromLDSB8Op:
  return GlobalStoreAsyncFromLDSB8Op(globalPtr=global_ptr, ldsPtr=lds_ptr, offset=offset, aux=aux, alias_scopes=alias_scopes, noalias_scopes=noalias_scopes, tbaa=tbaa, loc=loc, ip=ip)

@_ods_cext.register_operation(_Dialect)
class GlobalStoreAsyncFromLDSB32Op(_ods_ir.OpView):
  r"""
  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>
  ```
  """

  OPERATION_NAME = "rocdl.global.store.async.from.lds.b32"

  _ODS_REGIONS = (0, True)

  def __init__(self, globalPtr: _ods_ir.Value, ldsPtr: _ods_ir.Value, offset: _Union[int, _ods_ir.IntegerAttr], aux: _Union[int, _ods_ir.IntegerAttr], *, alias_scopes: _Optional[_Union[_Any, _ods_ir.ArrayAttr]] = None, noalias_scopes: _Optional[_Union[_Any, _ods_ir.ArrayAttr]] = None, tbaa: _Optional[_Union[_Any, _ods_ir.ArrayAttr]] = None, loc: _Optional[_ods_ir.Location] = None, ip: _Optional[_ods_ir.InsertionPoint] = None):
    operands = []
    attributes = {}
    regions = None
    operands.append(globalPtr)
    operands.append(ldsPtr)
    _ods_context = _ods_get_default_loc_context(loc)
    attributes["offset"] = (offset if (
    isinstance(offset, _ods_ir.Attribute) or
    not _ods_ir.AttrBuilder.contains('I32Attr')) else
      _ods_ir.AttrBuilder.get('I32Attr')(offset, context=_ods_context))
    attributes["aux"] = (aux if (
    isinstance(aux, _ods_ir.Attribute) or
    not _ods_ir.AttrBuilder.contains('I32Attr')) else
      _ods_ir.AttrBuilder.get('I32Attr')(aux, context=_ods_context))
    if alias_scopes is not None: attributes["alias_scopes"] = (alias_scopes if (
        isinstance(alias_scopes, _ods_ir.Attribute) or
        not _ods_ir.AttrBuilder.contains('LLVM_AliasScopeArrayAttr')) else
          _ods_ir.AttrBuilder.get('LLVM_AliasScopeArrayAttr')(alias_scopes, context=_ods_context))
    if noalias_scopes is not None: attributes["noalias_scopes"] = (noalias_scopes if (
        isinstance(noalias_scopes, _ods_ir.Attribute) or
        not _ods_ir.AttrBuilder.contains('LLVM_AliasScopeArrayAttr')) else
          _ods_ir.AttrBuilder.get('LLVM_AliasScopeArrayAttr')(noalias_scopes, context=_ods_context))
    if tbaa is not None: attributes["tbaa"] = (tbaa if (
        isinstance(tbaa, _ods_ir.Attribute) or
        not _ods_ir.AttrBuilder.contains('LLVM_TBAATagArrayAttr')) else
          _ods_ir.AttrBuilder.get('LLVM_TBAATagArrayAttr')(tbaa, context=_ods_context))
    results = []
    _ods_successors = None
    super().__init__(self.OPERATION_NAME, self._ODS_REGIONS, self._ODS_OPERAND_SEGMENTS, self._ODS_RESULT_SEGMENTS, attributes=attributes, results=results, operands=operands, successors=_ods_successors, regions=regions, loc=loc, ip=ip)

  @builtins.property
  def globalPtr(self) -> _ods_ir.Value:
    return self.operation.operands[0]

  @builtins.property
  def ldsPtr(self) -> _ods_ir.Value:
    return self.operation.operands[1]

  @builtins.property
  def offset(self) -> _ods_ir.IntegerAttr:
    return self.operation.attributes["offset"]

  @offset.setter
  def offset(self, value: _ods_ir.IntegerAttr):
    if value is None:
      raise ValueError("'None' not allowed as value for mandatory attributes")
    self.operation.attributes["offset"] = value

  @builtins.property
  def aux(self) -> _ods_ir.IntegerAttr:
    return self.operation.attributes["aux"]

  @aux.setter
  def aux(self, value: _ods_ir.IntegerAttr):
    if value is None:
      raise ValueError("'None' not allowed as value for mandatory attributes")
    self.operation.attributes["aux"] = value

  @builtins.property
  def alias_scopes(self) -> _Optional[_ods_ir.ArrayAttr]:
    if "alias_scopes" not in self.operation.attributes:
      return None
    return self.operation.attributes["alias_scopes"]

  @alias_scopes.setter
  def alias_scopes(self, value: _Optional[_ods_ir.ArrayAttr]):
    if value is not None:
      self.operation.attributes["alias_scopes"] = value
    elif "alias_scopes" in self.operation.attributes:
      del self.operation.attributes["alias_scopes"]

  @alias_scopes.deleter
  def alias_scopes(self):
    del self.operation.attributes["alias_scopes"]

  @builtins.property
  def noalias_scopes(self) -> _Optional[_ods_ir.ArrayAttr]:
    if "noalias_scopes" not in self.operation.attributes:
      return None
    return self.operation.attributes["noalias_scopes"]

  @noalias_scopes.setter
  def noalias_scopes(self, value: _Optional[_ods_ir.ArrayAttr]):
    if value is not None:
      self.operation.attributes["noalias_scopes"] = value
    elif "noalias_scopes" in self.operation.attributes:
      del self.operation.attributes["noalias_scopes"]

  @noalias_scopes.deleter
  def noalias_scopes(self):
    del self.operation.attributes["noalias_scopes"]

  @builtins.property
  def tbaa(self) -> _Optional[_ods_ir.ArrayAttr]:
    if "tbaa" not in self.operation.attributes:
      return None
    return self.operation.attributes["tbaa"]

  @tbaa.setter
  def tbaa(self, value: _Optional[_ods_ir.ArrayAttr]):
    if value is not None:
      self.operation.attributes["tbaa"] = value
    elif "tbaa" in self.operation.attributes:
      del self.operation.attributes["tbaa"]

  @tbaa.deleter
  def tbaa(self):
    del self.operation.attributes["tbaa"]

@_ods_cext.register_op_adaptor(GlobalStoreAsyncFromLDSB32Op)
class GlobalStoreAsyncFromLDSB32OpAdaptor(_ods_ir.OpAdaptor):
  OPERATION_NAME = "rocdl.global.store.async.from.lds.b32"

  @builtins.property
  def globalPtr(self) -> _ods_ir.Value:
    return self.operands[0]

  @builtins.property
  def ldsPtr(self) -> _ods_ir.Value:
    return self.operands[1]

  @builtins.property
  def offset(self) -> _ods_ir.IntegerAttr:
    return self.attributes["offset"]

  @builtins.property
  def aux(self) -> _ods_ir.IntegerAttr:
    return self.attributes["aux"]

  @builtins.property
  def alias_scopes(self) -> _Optional[_ods_ir.ArrayAttr]:
    if "alias_scopes" not in self.attributes:
      return None
    return self.attributes["alias_scopes"]

  @builtins.property
  def noalias_scopes(self) -> _Optional[_ods_ir.ArrayAttr]:
    if "noalias_scopes" not in self.attributes:
      return None
    return self.attributes["noalias_scopes"]

  @builtins.property
  def tbaa(self) -> _Optional[_ods_ir.ArrayAttr]:
    if "tbaa" not in self.attributes:
      return None
    return self.attributes["tbaa"]

def global_store_async_from_lds_b32(global_ptr: _ods_ir.Value, lds_ptr: _ods_ir.Value, offset: _Union[int, _ods_ir.IntegerAttr], aux: _Union[int, _ods_ir.IntegerAttr], *, alias_scopes: _Optional[_Union[_Any, _ods_ir.ArrayAttr]] = None, noalias_scopes: _Optional[_Union[_Any, _ods_ir.ArrayAttr]] = None, tbaa: _Optional[_Union[_Any, _ods_ir.ArrayAttr]] = None, loc: _Optional[_ods_ir.Location] = None, ip: _Optional[_ods_ir.InsertionPoint] = None) -> GlobalStoreAsyncFromLDSB32Op:
  return GlobalStoreAsyncFromLDSB32Op(globalPtr=global_ptr, ldsPtr=lds_ptr, offset=offset, aux=aux, alias_scopes=alias_scopes, noalias_scopes=noalias_scopes, tbaa=tbaa, loc=loc, ip=ip)

@_ods_cext.register_operation(_Dialect)
class GlobalStoreAsyncFromLDSB64Op(_ods_ir.OpView):
  r"""
  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>
  ```
  """

  OPERATION_NAME = "rocdl.global.store.async.from.lds.b64"

  _ODS_REGIONS = (0, True)

  def __init__(self, globalPtr: _ods_ir.Value, ldsPtr: _ods_ir.Value, offset: _Union[int, _ods_ir.IntegerAttr], aux: _Union[int, _ods_ir.IntegerAttr], *, alias_scopes: _Optional[_Union[_Any, _ods_ir.ArrayAttr]] = None, noalias_scopes: _Optional[_Union[_Any, _ods_ir.ArrayAttr]] = None, tbaa: _Optional[_Union[_Any, _ods_ir.ArrayAttr]] = None, loc: _Optional[_ods_ir.Location] = None, ip: _Optional[_ods_ir.InsertionPoint] = None):
    operands = []
    attributes = {}
    regions = None
    operands.append(globalPtr)
    operands.append(ldsPtr)
    _ods_context = _ods_get_default_loc_context(loc)
    attributes["offset"] = (offset if (
    isinstance(offset, _ods_ir.Attribute) or
    not _ods_ir.AttrBuilder.contains('I32Attr')) else
      _ods_ir.AttrBuilder.get('I32Attr')(offset, context=_ods_context))
    attributes["aux"] = (aux if (
    isinstance(aux, _ods_ir.Attribute) or
    not _ods_ir.AttrBuilder.contains('I32Attr')) else
      _ods_ir.AttrBuilder.get('I32Attr')(aux, context=_ods_context))
    if alias_scopes is not None: attributes["alias_scopes"] = (alias_scopes if (
        isinstance(alias_scopes, _ods_ir.Attribute) or
        not _ods_ir.AttrBuilder.contains('LLVM_AliasScopeArrayAttr')) else
          _ods_ir.AttrBuilder.get('LLVM_AliasScopeArrayAttr')(alias_scopes, context=_ods_context))
    if noalias_scopes is not None: attributes["noalias_scopes"] = (noalias_scopes if (
        isinstance(noalias_scopes, _ods_ir.Attribute) or
        not _ods_ir.AttrBuilder.contains('LLVM_AliasScopeArrayAttr')) else
          _ods_ir.AttrBuilder.get('LLVM_AliasScopeArrayAttr')(noalias_scopes, context=_ods_context))
    if tbaa is not None: attributes["tbaa"] = (tbaa if (
        isinstance(tbaa, _ods_ir.Attribute) or
        not _ods_ir.AttrBuilder.contains('LLVM_TBAATagArrayAttr')) else
          _ods_ir.AttrBuilder.get('LLVM_TBAATagArrayAttr')(tbaa, context=_ods_context))
    results = []
    _ods_successors = None
    super().__init__(self.OPERATION_NAME, self._ODS_REGIONS, self._ODS_OPERAND_SEGMENTS, self._ODS_RESULT_SEGMENTS, attributes=attributes, results=results, operands=operands, successors=_ods_successors, regions=regions, loc=loc, ip=ip)

  @builtins.property
  def globalPtr(self) -> _ods_ir.Value:
    return self.operation.operands[0]

  @builtins.property
  def ldsPtr(self) -> _ods_ir.Value:
    return self.operation.operands[1]

  @builtins.property
  def offset(self) -> _ods_ir.IntegerAttr:
    return self.operation.attributes["offset"]

  @offset.setter
  def offset(self, value: _ods_ir.IntegerAttr):
    if value is None:
      raise ValueError("'None' not allowed as value for mandatory attributes")
    self.operation.attributes["offset"] = value

  @builtins.property
  def aux(self) -> _ods_ir.IntegerAttr:
    return self.operation.attributes["aux"]

  @aux.setter
  def aux(self, value: _ods_ir.IntegerAttr):
    if value is None:
      raise ValueError("'None' not allowed as value for mandatory attributes")
    self.operation.attributes["aux"] = value

  @builtins.property
  def alias_scopes(self) -> _Optional[_ods_ir.ArrayAttr]:
    if "alias_scopes" not in self.operation.attributes:
      return None
    return self.operation.attributes["alias_scopes"]

  @alias_scopes.setter
  def alias_scopes(self, value: _Optional[_ods_ir.ArrayAttr]):
    if value is not None:
      self.operation.attributes["alias_scopes"] = value
    elif "alias_scopes" in self.operation.attributes:
      del self.operation.attributes["alias_scopes"]

  @alias_scopes.deleter
  def alias_scopes(self):
    del self.operation.attributes["alias_scopes"]

  @builtins.property
  def noalias_scopes(self) -> _Optional[_ods_ir.ArrayAttr]:
    if "noalias_scopes" not in self.operation.attributes:
      return None
    return self.operation.attributes["noalias_scopes"]

  @noalias_scopes.setter
  def noalias_scopes(self, value: _Optional[_ods_ir.ArrayAttr]):
    if value is not None:
      self.operation.attributes["noalias_scopes"] = value
    elif "noalias_scopes" in self.operation.attributes:
      del self.operation.attributes["noalias_scopes"]

  @noalias_scopes.deleter
  def noalias_scopes(self):
    del self.operation.attributes["noalias_scopes"]

  @builtins.property
  def tbaa(self) -> _Optional[_ods_ir.ArrayAttr]:
    if "tbaa" not in self.operation.attributes:
      return None
    return self.operation.attributes["tbaa"]

  @tbaa.setter
  def tbaa(self, value: _Optional[_ods_ir.ArrayAttr]):
    if value is not None:
      self.operation.attributes["tbaa"] = value
    elif "tbaa" in self.operation.attributes:
      del self.operation.attributes["tbaa"]

  @tbaa.deleter
  def tbaa(self):
    del self.operation.attributes["tbaa"]

@_ods_cext.register_op_adaptor(GlobalStoreAsyncFromLDSB64Op)
class GlobalStoreAsyncFromLDSB64OpAdaptor(_ods_ir.OpAdaptor):
  OPERATION_NAME = "rocdl.global.store.async.from.lds.b64"

  @builtins.property
  def globalPtr(self) -> _ods_ir.Value:
    return self.operands[0]

  @builtins.property
  def ldsPtr(self) -> _ods_ir.Value:
    return self.operands[1]

  @builtins.property
  def offset(self) -> _ods_ir.IntegerAttr:
    return self.attributes["offset"]

  @builtins.property
  def aux(self) -> _ods_ir.IntegerAttr:
    return self.attributes["aux"]

  @builtins.property
  def alias_scopes(self) -> _Optional[_ods_ir.ArrayAttr]:
    if "alias_scopes" not in self.attributes:
      return None
    return self.attributes["alias_scopes"]

  @builtins.property
  def noalias_scopes(self) -> _Optional[_ods_ir.ArrayAttr]:
    if "noalias_scopes" not in self.attributes:
      return None
    return self.attributes["noalias_scopes"]

  @builtins.property
  def tbaa(self) -> _Optional[_ods_ir.ArrayAttr]:
    if "tbaa" not in self.attributes:
      return None
    return self.attributes["tbaa"]

def global_store_async_from_lds_b64(global_ptr: _ods_ir.Value, lds_ptr: _ods_ir.Value, offset: _Union[int, _ods_ir.IntegerAttr], aux: _Union[int, _ods_ir.IntegerAttr], *, alias_scopes: _Optional[_Union[_Any, _ods_ir.ArrayAttr]] = None, noalias_scopes: _Optional[_Union[_Any, _ods_ir.ArrayAttr]] = None, tbaa: _Optional[_Union[_Any, _ods_ir.ArrayAttr]] = None, loc: _Optional[_ods_ir.Location] = None, ip: _Optional[_ods_ir.InsertionPoint] = None) -> GlobalStoreAsyncFromLDSB64Op:
  return GlobalStoreAsyncFromLDSB64Op(globalPtr=global_ptr, ldsPtr=lds_ptr, offset=offset, aux=aux, alias_scopes=alias_scopes, noalias_scopes=noalias_scopes, tbaa=tbaa, loc=loc, ip=ip)

@_ods_cext.register_operation(_Dialect)
class GlobalStoreAsyncFromLDSB128Op(_ods_ir.OpView):
  r"""
  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>
  ```
  """

  OPERATION_NAME = "rocdl.global.store.async.from.lds.b128"

  _ODS_REGIONS = (0, True)

  def __init__(self, globalPtr: _ods_ir.Value, ldsPtr: _ods_ir.Value, offset: _Union[int, _ods_ir.IntegerAttr], aux: _Union[int, _ods_ir.IntegerAttr], *, alias_scopes: _Optional[_Union[_Any, _ods_ir.ArrayAttr]] = None, noalias_scopes: _Optional[_Union[_Any, _ods_ir.ArrayAttr]] = None, tbaa: _Optional[_Union[_Any, _ods_ir.ArrayAttr]] = None, loc: _Optional[_ods_ir.Location] = None, ip: _Optional[_ods_ir.InsertionPoint] = None):
    operands = []
    attributes = {}
    regions = None
    operands.append(globalPtr)
    operands.append(ldsPtr)
    _ods_context = _ods_get_default_loc_context(loc)
    attributes["offset"] = (offset if (
    isinstance(offset, _ods_ir.Attribute) or
    not _ods_ir.AttrBuilder.contains('I32Attr')) else
      _ods_ir.AttrBuilder.get('I32Attr')(offset, context=_ods_context))
    attributes["aux"] = (aux if (
    isinstance(aux, _ods_ir.Attribute) or
    not _ods_ir.AttrBuilder.contains('I32Attr')) else
      _ods_ir.AttrBuilder.get('I32Attr')(aux, context=_ods_context))
    if alias_scopes is not None: attributes["alias_scopes"] = (alias_scopes if (
        isinstance(alias_scopes, _ods_ir.Attribute) or
        not _ods_ir.AttrBuilder.contains('LLVM_AliasScopeArrayAttr')) else
          _ods_ir.AttrBuilder.get('LLVM_AliasScopeArrayAttr')(alias_scopes, context=_ods_context))
    if noalias_scopes is not None: attributes["noalias_scopes"] = (noalias_scopes if (
        isinstance(noalias_scopes, _ods_ir.Attribute) or
        not _ods_ir.AttrBuilder.contains('LLVM_AliasScopeArrayAttr')) else
          _ods_ir.AttrBuilder.get('LLVM_AliasScopeArrayAttr')(noalias_scopes, context=_ods_context))
    if tbaa is not None: attributes["tbaa"] = (tbaa if (
        isinstance(tbaa, _ods_ir.Attribute) or
        not _ods_ir.AttrBuilder.contains('LLVM_TBAATagArrayAttr')) else
          _ods_ir.AttrBuilder.get('LLVM_TBAATagArrayAttr')(tbaa, context=_ods_context))
    results = []
    _ods_successors = None
    super().__init__(self.OPERATION_NAME, self._ODS_REGIONS, self._ODS_OPERAND_SEGMENTS, self._ODS_RESULT_SEGMENTS, attributes=attributes, results=results, operands=operands, successors=_ods_successors, regions=regions, loc=loc, ip=ip)

  @builtins.property
  def globalPtr(self) -> _ods_ir.Value:
    return self.operation.operands[0]

  @builtins.property
  def ldsPtr(self) -> _ods_ir.Value:
    return self.operation.operands[1]

  @builtins.property
  def offset(self) -> _ods_ir.IntegerAttr:
    return self.operation.attributes["offset"]

  @offset.setter
  def offset(self, value: _ods_ir.IntegerAttr):
    if value is None:
      raise ValueError("'None' not allowed as value for mandatory attributes")
    self.operation.attributes["offset"] = value

  @builtins.property
  def aux(self) -> _ods_ir.IntegerAttr:
    return self.operation.attributes["aux"]

  @aux.setter
  def aux(self, value: _ods_ir.IntegerAttr):
    if value is None:
      raise ValueError("'None' not allowed as value for mandatory attributes")
    self.operation.attributes["aux"] = value

  @builtins.property
  def alias_scopes(self) -> _Optional[_ods_ir.ArrayAttr]:
    if "alias_scopes" not in self.operation.attributes:
      return None
    return self.operation.attributes["alias_scopes"]

  @alias_scopes.setter
  def alias_scopes(self, value: _Optional[_ods_ir.ArrayAttr]):
    if value is not None:
      self.operation.attributes["alias_scopes"] = value
    elif "alias_scopes" in self.operation.attributes:
      del self.operation.attributes["alias_scopes"]

  @alias_scopes.deleter
  def alias_scopes(self):
    del self.operation.attributes["alias_scopes"]

  @builtins.property
  def noalias_scopes(self) -> _Optional[_ods_ir.ArrayAttr]:
    if "noalias_scopes" not in self.operation.attributes:
      return None
    return self.operation.attributes["noalias_scopes"]

  @noalias_scopes.setter
  def noalias_scopes(self, value: _Optional[_ods_ir.ArrayAttr]):
    if value is not None:
      self.operation.attributes["noalias_scopes"] = value
    elif "noalias_scopes" in self.operation.attributes:
      del self.operation.attributes["noalias_scopes"]

  @noalias_scopes.deleter
  def noalias_scopes(self):
    del self.operation.attributes["noalias_scopes"]

  @builtins.property
  def tbaa(self) -> _Optional[_ods_ir.ArrayAttr]:
    if "tbaa" not in self.operation.attributes:
      return None
    return self.operation.attributes["tbaa"]

  @tbaa.setter
  def tbaa(self, value: _Optional[_ods_ir.ArrayAttr]):
    if value is not None:
      self.operation.attributes["tbaa"] = value
    elif "tbaa" in self.operation.attributes:
      del self.operation.attributes["tbaa"]

  @tbaa.deleter
  def tbaa(self):
    del self.operation.attributes["tbaa"]

@_ods_cext.register_op_adaptor(GlobalStoreAsyncFromLDSB128Op)
class GlobalStoreAsyncFromLDSB128OpAdaptor(_ods_ir.OpAdaptor):
  OPERATION_NAME = "rocdl.global.store.async.from.lds.b128"

  @builtins.property
  def globalPtr(self) -> _ods_ir.Value:
    return self.operands[0]

  @builtins.property
  def ldsPtr(self) -> _ods_ir.Value:
    return self.operands[1]

  @builtins.property
  def offset(self) -> _ods_ir.IntegerAttr:
    return self.attributes["offset"]

  @builtins.property
  def aux(self) -> _ods_ir.IntegerAttr:
    return self.attributes["aux"]

  @builtins.property
  def alias_scopes(self) -> _Optional[_ods_ir.ArrayAttr]:
    if "alias_scopes" not in self.attributes:
      return None
    return self.attributes["alias_scopes"]

  @builtins.property
  def noalias_scopes(self) -> _Optional[_ods_ir.ArrayAttr]:
    if "noalias_scopes" not in self.attributes:
      return None
    return self.attributes["noalias_scopes"]

  @builtins.property
  def tbaa(self) -> _Optional[_ods_ir.ArrayAttr]:
    if "tbaa" not in self.attributes:
      return None
    return self.attributes["tbaa"]

def global_store_async_from_lds_b128(global_ptr: _ods_ir.Value, lds_ptr: _ods_ir.Value, offset: _Union[int, _ods_ir.IntegerAttr], aux: _Union[int, _ods_ir.IntegerAttr], *, alias_scopes: _Optional[_Union[_Any, _ods_ir.ArrayAttr]] = None, noalias_scopes: _Optional[_Union[_Any, _ods_ir.ArrayAttr]] = None, tbaa: _Optional[_Union[_Any, _ods_ir.ArrayAttr]] = None, loc: _Optional[_ods_ir.Location] = None, ip: _Optional[_ods_ir.InsertionPoint] = None) -> GlobalStoreAsyncFromLDSB128Op:
  return GlobalStoreAsyncFromLDSB128Op(globalPtr=global_ptr, ldsPtr=lds_ptr, offset=offset, aux=aux, alias_scopes=alias_scopes, noalias_scopes=noalias_scopes, tbaa=tbaa, loc=loc, ip=ip)

@_ods_cext.register_operation(_Dialect)
class IglpOpt(_ods_ir.OpView):
  r"""
  Instruction-group-level parallelism optimization hint.
  
  Example:
  ```mlir
  // IGLP optimization hint variant 0.
  rocdl.iglp.opt 0
  ```
  """

  OPERATION_NAME = "rocdl.iglp.opt"

  _ODS_REGIONS = (0, True)

  def __init__(self, variant: _Union[int, _ods_ir.IntegerAttr], *, loc: _Optional[_ods_ir.Location] = None, ip: _Optional[_ods_ir.InsertionPoint] = None):
    operands = []
    attributes = {}
    regions = None
    _ods_context = _ods_get_default_loc_context(loc)
    attributes["variant"] = (variant if (
    isinstance(variant, _ods_ir.Attribute) or
    not _ods_ir.AttrBuilder.contains('I32Attr')) else
      _ods_ir.AttrBuilder.get('I32Attr')(variant, context=_ods_context))
    results = []
    _ods_successors = None
    super().__init__(self.OPERATION_NAME, self._ODS_REGIONS, self._ODS_OPERAND_SEGMENTS, self._ODS_RESULT_SEGMENTS, attributes=attributes, results=results, operands=operands, successors=_ods_successors, regions=regions, loc=loc, ip=ip)

  @builtins.property
  def variant(self) -> _ods_ir.IntegerAttr:
    return self.operation.attributes["variant"]

  @variant.setter
  def variant(self, value: _ods_ir.IntegerAttr):
    if value is None:
      raise ValueError("'None' not allowed as value for mandatory attributes")
    self.operation.attributes["variant"] = value

@_ods_cext.register_op_adaptor(IglpOpt)
class IglpOptAdaptor(_ods_ir.OpAdaptor):
  OPERATION_NAME = "rocdl.iglp.opt"

  @builtins.property
  def variant(self) -> _ods_ir.IntegerAttr:
    return self.attributes["variant"]

def iglp_opt(variant: _Union[int, _ods_ir.IntegerAttr], *, loc: _Optional[_ods_ir.Location] = None, ip: _Optional[_ods_ir.InsertionPoint] = None) -> IglpOpt:
  return IglpOpt(variant=variant, loc=loc, ip=ip)

@_ods_cext.register_operation(_Dialect)
class LoadAsyncToLDSOp(_ods_ir.OpView):
  r"""
  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>
  ```
  """

  OPERATION_NAME = "rocdl.load.async.to.lds"

  _ODS_REGIONS = (0, True)

  def __init__(self, globalPtr: _ods_ir.Value, ldsPtr: _ods_ir.Value, size: _Union[int, _ods_ir.IntegerAttr], offset: _Union[int, _ods_ir.IntegerAttr], aux: _Union[int, _ods_ir.IntegerAttr], *, alias_scopes: _Optional[_Union[_Any, _ods_ir.ArrayAttr]] = None, noalias_scopes: _Optional[_Union[_Any, _ods_ir.ArrayAttr]] = None, tbaa: _Optional[_Union[_Any, _ods_ir.ArrayAttr]] = None, loc: _Optional[_ods_ir.Location] = None, ip: _Optional[_ods_ir.InsertionPoint] = None):
    operands = []
    attributes = {}
    regions = None
    operands.append(globalPtr)
    operands.append(ldsPtr)
    _ods_context = _ods_get_default_loc_context(loc)
    attributes["size"] = (size if (
    isinstance(size, _ods_ir.Attribute) or
    not _ods_ir.AttrBuilder.contains('I32Attr')) else
      _ods_ir.AttrBuilder.get('I32Attr')(size, context=_ods_context))
    attributes["offset"] = (offset if (
    isinstance(offset, _ods_ir.Attribute) or
    not _ods_ir.AttrBuilder.contains('I32Attr')) else
      _ods_ir.AttrBuilder.get('I32Attr')(offset, context=_ods_context))
    attributes["aux"] = (aux if (
    isinstance(aux, _ods_ir.Attribute) or
    not _ods_ir.AttrBuilder.contains('I32Attr')) else
      _ods_ir.AttrBuilder.get('I32Attr')(aux, context=_ods_context))
    if alias_scopes is not None: attributes["alias_scopes"] = (alias_scopes if (
        isinstance(alias_scopes, _ods_ir.Attribute) or
        not _ods_ir.AttrBuilder.contains('LLVM_AliasScopeArrayAttr')) else
          _ods_ir.AttrBuilder.get('LLVM_AliasScopeArrayAttr')(alias_scopes, context=_ods_context))
    if noalias_scopes is not None: attributes["noalias_scopes"] = (noalias_scopes if (
        isinstance(noalias_scopes, _ods_ir.Attribute) or
        not _ods_ir.AttrBuilder.contains('LLVM_AliasScopeArrayAttr')) else
          _ods_ir.AttrBuilder.get('LLVM_AliasScopeArrayAttr')(noalias_scopes, context=_ods_context))
    if tbaa is not None: attributes["tbaa"] = (tbaa if (
        isinstance(tbaa, _ods_ir.Attribute) or
        not _ods_ir.AttrBuilder.contains('LLVM_TBAATagArrayAttr')) else
          _ods_ir.AttrBuilder.get('LLVM_TBAATagArrayAttr')(tbaa, context=_ods_context))
    results = []
    _ods_successors = None
    super().__init__(self.OPERATION_NAME, self._ODS_REGIONS, self._ODS_OPERAND_SEGMENTS, self._ODS_RESULT_SEGMENTS, attributes=attributes, results=results, operands=operands, successors=_ods_successors, regions=regions, loc=loc, ip=ip)

  @builtins.property
  def globalPtr(self) -> _ods_ir.Value:
    return self.operation.operands[0]

  @builtins.property
  def ldsPtr(self) -> _ods_ir.Value:
    return self.operation.operands[1]

  @builtins.property
  def size(self) -> _ods_ir.IntegerAttr:
    return self.operation.attributes["size"]

  @size.setter
  def size(self, value: _ods_ir.IntegerAttr):
    if value is None:
      raise ValueError("'None' not allowed as value for mandatory attributes")
    self.operation.attributes["size"] = value

  @builtins.property
  def offset(self) -> _ods_ir.IntegerAttr:
    return self.operation.attributes["offset"]

  @offset.setter
  def offset(self, value: _ods_ir.IntegerAttr):
    if value is None:
      raise ValueError("'None' not allowed as value for mandatory attributes")
    self.operation.attributes["offset"] = value

  @builtins.property
  def aux(self) -> _ods_ir.IntegerAttr:
    return self.operation.attributes["aux"]

  @aux.setter
  def aux(self, value: _ods_ir.IntegerAttr):
    if value is None:
      raise ValueError("'None' not allowed as value for mandatory attributes")
    self.operation.attributes["aux"] = value

  @builtins.property
  def alias_scopes(self) -> _Optional[_ods_ir.ArrayAttr]:
    if "alias_scopes" not in self.operation.attributes:
      return None
    return self.operation.attributes["alias_scopes"]

  @alias_scopes.setter
  def alias_scopes(self, value: _Optional[_ods_ir.ArrayAttr]):
    if value is not None:
      self.operation.attributes["alias_scopes"] = value
    elif "alias_scopes" in self.operation.attributes:
      del self.operation.attributes["alias_scopes"]

  @alias_scopes.deleter
  def alias_scopes(self):
    del self.operation.attributes["alias_scopes"]

  @builtins.property
  def noalias_scopes(self) -> _Optional[_ods_ir.ArrayAttr]:
    if "noalias_scopes" not in self.operation.attributes:
      return None
    return self.operation.attributes["noalias_scopes"]

  @noalias_scopes.setter
  def noalias_scopes(self, value: _Optional[_ods_ir.ArrayAttr]):
    if value is not None:
      self.operation.attributes["noalias_scopes"] = value
    elif "noalias_scopes" in self.operation.attributes:
      del self.operation.attributes["noalias_scopes"]

  @noalias_scopes.deleter
  def noalias_scopes(self):
    del self.operation.attributes["noalias_scopes"]

  @builtins.property
  def tbaa(self) -> _Optional[_ods_ir.ArrayAttr]:
    if "tbaa" not in self.operation.attributes:
      return None
    return self.operation.attributes["tbaa"]

  @tbaa.setter
  def tbaa(self, value: _Optional[_ods_ir.ArrayAttr]):
    if value is not None:
      self.operation.attributes["tbaa"] = value
    elif "tbaa" in self.operation.attributes:
      del self.operation.attributes["tbaa"]

  @tbaa.deleter
  def tbaa(self):
    del self.operation.attributes["tbaa"]

@_ods_cext.register_op_adaptor(LoadAsyncToLDSOp)
class LoadAsyncToLDSOpAdaptor(_ods_ir.OpAdaptor):
  OPERATION_NAME = "rocdl.load.async.to.lds"

  @builtins.property
  def globalPtr(self) -> _ods_ir.Value:
    return self.operands[0]

  @builtins.property
  def ldsPtr(self) -> _ods_ir.Value:
    return self.operands[1]

  @builtins.property
  def size(self) -> _ods_ir.IntegerAttr:
    return self.attributes["size"]

  @builtins.property
  def offset(self) -> _ods_ir.IntegerAttr:
    return self.attributes["offset"]

  @builtins.property
  def aux(self) -> _ods_ir.IntegerAttr:
    return self.attributes["aux"]

  @builtins.property
  def alias_scopes(self) -> _Optional[_ods_ir.ArrayAttr]:
    if "alias_scopes" not in self.attributes:
      return None
    return self.attributes["alias_scopes"]

  @builtins.property
  def noalias_scopes(self) -> _Optional[_ods_ir.ArrayAttr]:
    if "noalias_scopes" not in self.attributes:
      return None
    return self.attributes["noalias_scopes"]

  @builtins.property
  def tbaa(self) -> _Optional[_ods_ir.ArrayAttr]:
    if "tbaa" not in self.attributes:
      return None
    return self.attributes["tbaa"]

def load_async_to_lds(global_ptr: _ods_ir.Value, lds_ptr: _ods_ir.Value, size: _Union[int, _ods_ir.IntegerAttr], offset: _Union[int, _ods_ir.IntegerAttr], aux: _Union[int, _ods_ir.IntegerAttr], *, alias_scopes: _Optional[_Union[_Any, _ods_ir.ArrayAttr]] = None, noalias_scopes: _Optional[_Union[_Any, _ods_ir.ArrayAttr]] = None, tbaa: _Optional[_Union[_Any, _ods_ir.ArrayAttr]] = None, loc: _Optional[_ods_ir.Location] = None, ip: _Optional[_ods_ir.InsertionPoint] = None) -> LoadAsyncToLDSOp:
  return LoadAsyncToLDSOp(globalPtr=global_ptr, ldsPtr=lds_ptr, size=size, offset=offset, aux=aux, alias_scopes=alias_scopes, noalias_scopes=noalias_scopes, tbaa=tbaa, loc=loc, ip=ip)

@_ods_cext.register_operation(_Dialect)
class LoadToLDSOp(_ods_ir.OpView):
  OPERATION_NAME = "rocdl.load.to.lds"

  _ODS_REGIONS = (0, True)

  def __init__(self, globalPtr: _ods_ir.Value, ldsPtr: _ods_ir.Value, size: _Union[int, _ods_ir.IntegerAttr], offset: _Union[int, _ods_ir.IntegerAttr], aux: _Union[int, _ods_ir.IntegerAttr], *, alias_scopes: _Optional[_Union[_Any, _ods_ir.ArrayAttr]] = None, noalias_scopes: _Optional[_Union[_Any, _ods_ir.ArrayAttr]] = None, tbaa: _Optional[_Union[_Any, _ods_ir.ArrayAttr]] = None, loc: _Optional[_ods_ir.Location] = None, ip: _Optional[_ods_ir.InsertionPoint] = None):
    operands = []
    attributes = {}
    regions = None
    operands.append(globalPtr)
    operands.append(ldsPtr)
    _ods_context = _ods_get_default_loc_context(loc)
    attributes["size"] = (size if (
    isinstance(size, _ods_ir.Attribute) or
    not _ods_ir.AttrBuilder.contains('I32Attr')) else
      _ods_ir.AttrBuilder.get('I32Attr')(size, context=_ods_context))
    attributes["offset"] = (offset if (
    isinstance(offset, _ods_ir.Attribute) or
    not _ods_ir.AttrBuilder.contains('I32Attr')) else
      _ods_ir.AttrBuilder.get('I32Attr')(offset, context=_ods_context))
    attributes["aux"] = (aux if (
    isinstance(aux, _ods_ir.Attribute) or
    not _ods_ir.AttrBuilder.contains('I32Attr')) else
      _ods_ir.AttrBuilder.get('I32Attr')(aux, context=_ods_context))
    if alias_scopes is not None: attributes["alias_scopes"] = (alias_scopes if (
        isinstance(alias_scopes, _ods_ir.Attribute) or
        not _ods_ir.AttrBuilder.contains('LLVM_AliasScopeArrayAttr')) else
          _ods_ir.AttrBuilder.get('LLVM_AliasScopeArrayAttr')(alias_scopes, context=_ods_context))
    if noalias_scopes is not None: attributes["noalias_scopes"] = (noalias_scopes if (
        isinstance(noalias_scopes, _ods_ir.Attribute) or
        not _ods_ir.AttrBuilder.contains('LLVM_AliasScopeArrayAttr')) else
          _ods_ir.AttrBuilder.get('LLVM_AliasScopeArrayAttr')(noalias_scopes, context=_ods_context))
    if tbaa is not None: attributes["tbaa"] = (tbaa if (
        isinstance(tbaa, _ods_ir.Attribute) or
        not _ods_ir.AttrBuilder.contains('LLVM_TBAATagArrayAttr')) else
          _ods_ir.AttrBuilder.get('LLVM_TBAATagArrayAttr')(tbaa, context=_ods_context))
    results = []
    _ods_successors = None
    super().__init__(self.OPERATION_NAME, self._ODS_REGIONS, self._ODS_OPERAND_SEGMENTS, self._ODS_RESULT_SEGMENTS, attributes=attributes, results=results, operands=operands, successors=_ods_successors, regions=regions, loc=loc, ip=ip)

  @builtins.property
  def globalPtr(self) -> _ods_ir.Value:
    return self.operation.operands[0]

  @builtins.property
  def ldsPtr(self) -> _ods_ir.Value:
    return self.operation.operands[1]

  @builtins.property
  def size(self) -> _ods_ir.IntegerAttr:
    return self.operation.attributes["size"]

  @size.setter
  def size(self, value: _ods_ir.IntegerAttr):
    if value is None:
      raise ValueError("'None' not allowed as value for mandatory attributes")
    self.operation.attributes["size"] = value

  @builtins.property
  def offset(self) -> _ods_ir.IntegerAttr:
    return self.operation.attributes["offset"]

  @offset.setter
  def offset(self, value: _ods_ir.IntegerAttr):
    if value is None:
      raise ValueError("'None' not allowed as value for mandatory attributes")
    self.operation.attributes["offset"] = value

  @builtins.property
  def aux(self) -> _ods_ir.IntegerAttr:
    return self.operation.attributes["aux"]

  @aux.setter
  def aux(self, value: _ods_ir.IntegerAttr):
    if value is None:
      raise ValueError("'None' not allowed as value for mandatory attributes")
    self.operation.attributes["aux"] = value

  @builtins.property
  def alias_scopes(self) -> _Optional[_ods_ir.ArrayAttr]:
    if "alias_scopes" not in self.operation.attributes:
      return None
    return self.operation.attributes["alias_scopes"]

  @alias_scopes.setter
  def alias_scopes(self, value: _Optional[_ods_ir.ArrayAttr]):
    if value is not None:
      self.operation.attributes["alias_scopes"] = value
    elif "alias_scopes" in self.operation.attributes:
      del self.operation.attributes["alias_scopes"]

  @alias_scopes.deleter
  def alias_scopes(self):
    del self.operation.attributes["alias_scopes"]

  @builtins.property
  def noalias_scopes(self) -> _Optional[_ods_ir.ArrayAttr]:
    if "noalias_scopes" not in self.operation.attributes:
      return None
    return self.operation.attributes["noalias_scopes"]

  @noalias_scopes.setter
  def noalias_scopes(self, value: _Optional[_ods_ir.ArrayAttr]):
    if value is not None:
      self.operation.attributes["noalias_scopes"] = value
    elif "noalias_scopes" in self.operation.attributes:
      del self.operation.attributes["noalias_scopes"]

  @noalias_scopes.deleter
  def noalias_scopes(self):
    del self.operation.attributes["noalias_scopes"]

  @builtins.property
  def tbaa(self) -> _Optional[_ods_ir.ArrayAttr]:
    if "tbaa" not in self.operation.attributes:
      return None
    return self.operation.attributes["tbaa"]

  @tbaa.setter
  def tbaa(self, value: _Optional[_ods_ir.ArrayAttr]):
    if value is not None:
      self.operation.attributes["tbaa"] = value
    elif "tbaa" in self.operation.attributes:
      del self.operation.attributes["tbaa"]

  @tbaa.deleter
  def tbaa(self):
    del self.operation.attributes["tbaa"]

@_ods_cext.register_op_adaptor(LoadToLDSOp)
class LoadToLDSOpAdaptor(_ods_ir.OpAdaptor):
  OPERATION_NAME = "rocdl.load.to.lds"

  @builtins.property
  def globalPtr(self) -> _ods_ir.Value:
    return self.operands[0]

  @builtins.property
  def ldsPtr(self) -> _ods_ir.Value:
    return self.operands[1]

  @builtins.property
  def size(self) -> _ods_ir.IntegerAttr:
    return self.attributes["size"]

  @builtins.property
  def offset(self) -> _ods_ir.IntegerAttr:
    return self.attributes["offset"]

  @builtins.property
  def aux(self) -> _ods_ir.IntegerAttr:
    return self.attributes["aux"]

  @builtins.property
  def alias_scopes(self) -> _Optional[_ods_ir.ArrayAttr]:
    if "alias_scopes" not in self.attributes:
      return None
    return self.attributes["alias_scopes"]

  @builtins.property
  def noalias_scopes(self) -> _Optional[_ods_ir.ArrayAttr]:
    if "noalias_scopes" not in self.attributes:
      return None
    return self.attributes["noalias_scopes"]

  @builtins.property
  def tbaa(self) -> _Optional[_ods_ir.ArrayAttr]:
    if "tbaa" not in self.attributes:
      return None
    return self.attributes["tbaa"]

def load_to_lds(global_ptr: _ods_ir.Value, lds_ptr: _ods_ir.Value, size: _Union[int, _ods_ir.IntegerAttr], offset: _Union[int, _ods_ir.IntegerAttr], aux: _Union[int, _ods_ir.IntegerAttr], *, alias_scopes: _Optional[_Union[_Any, _ods_ir.ArrayAttr]] = None, noalias_scopes: _Optional[_Union[_Any, _ods_ir.ArrayAttr]] = None, tbaa: _Optional[_Union[_Any, _ods_ir.ArrayAttr]] = None, loc: _Optional[_ods_ir.Location] = None, ip: _Optional[_ods_ir.InsertionPoint] = None) -> LoadToLDSOp:
  return LoadToLDSOp(globalPtr=global_ptr, ldsPtr=lds_ptr, size=size, offset=offset, aux=aux, alias_scopes=alias_scopes, noalias_scopes=noalias_scopes, tbaa=tbaa, loc=loc, ip=ip)

@_ods_cext.register_operation(_Dialect)
class MakeBufferRsrcOp(_ods_ir.OpView):
  OPERATION_NAME = "rocdl.make.buffer.rsrc"

  _ODS_REGIONS = (0, True)

  def __init__(self, res: _ods_ir.Type, base: _ods_ir.Value, stride: _ods_ir.Value[_ods_ir.IntegerType], numRecords: _ods_ir.Value[_ods_ir.IntegerType], flags: _ods_ir.Value[_ods_ir.IntegerType], *, loc: _Optional[_ods_ir.Location] = None, ip: _Optional[_ods_ir.InsertionPoint] = None):
    operands = []
    attributes = {}
    regions = None
    operands.append(base)
    operands.append(stride)
    operands.append(numRecords)
    operands.append(flags)
    _ods_context = _ods_get_default_loc_context(loc)
    results = []
    results.append(res)
    _ods_successors = None
    super().__init__(self.OPERATION_NAME, self._ODS_REGIONS, self._ODS_OPERAND_SEGMENTS, self._ODS_RESULT_SEGMENTS, attributes=attributes, results=results, operands=operands, successors=_ods_successors, regions=regions, loc=loc, ip=ip)

  @builtins.property
  def base(self) -> _ods_ir.Value:
    return self.operation.operands[0]

  @builtins.property
  def stride(self) -> _ods_ir.Value[_ods_ir.IntegerType]:
    return self.operation.operands[1]

  @builtins.property
  def numRecords(self) -> _ods_ir.Value[_ods_ir.IntegerType]:
    return self.operation.operands[2]

  @builtins.property
  def flags(self) -> _ods_ir.Value[_ods_ir.IntegerType]:
    return self.operation.operands[3]

  @builtins.property
  def res(self) -> _ods_ir.OpResult:
    return self.operation.results[0]

@_ods_cext.register_op_adaptor(MakeBufferRsrcOp)
class MakeBufferRsrcOpAdaptor(_ods_ir.OpAdaptor):
  OPERATION_NAME = "rocdl.make.buffer.rsrc"

  @builtins.property
  def base(self) -> _ods_ir.Value:
    return self.operands[0]

  @builtins.property
  def stride(self) -> _ods_ir.Value[_ods_ir.IntegerType]:
    return self.operands[1]

  @builtins.property
  def numRecords(self) -> _ods_ir.Value[_ods_ir.IntegerType]:
    return self.operands[2]

  @builtins.property
  def flags(self) -> _ods_ir.Value[_ods_ir.IntegerType]:
    return self.operands[3]

def make_buffer_rsrc(res: _ods_ir.Type, base: _ods_ir.Value, stride: _ods_ir.Value[_ods_ir.IntegerType], num_records: _ods_ir.Value[_ods_ir.IntegerType], flags: _ods_ir.Value[_ods_ir.IntegerType], *, loc: _Optional[_ods_ir.Location] = None, ip: _Optional[_ods_ir.InsertionPoint] = None) -> _ods_ir.OpResult:
  return MakeBufferRsrcOp(res=res, base=base, stride=stride, numRecords=num_records, flags=flags, loc=loc, ip=ip).result

@_ods_cext.register_operation(_Dialect)
class MbcntHiOp(_ods_ir.OpView):
  r"""
  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
  ```
  """

  OPERATION_NAME = "rocdl.mbcnt.hi"

  _ODS_REGIONS = (0, True)

  def __init__(self, res: _ods_ir.Type, in0: _ods_ir.Value[_ods_ir.IntegerType], in1: _ods_ir.Value[_ods_ir.IntegerType], *, arg_attrs: _Optional[_Union[_Any, _ods_ir.ArrayAttr]] = None, res_attrs: _Optional[_Union[_Any, _ods_ir.ArrayAttr]] = None, loc: _Optional[_ods_ir.Location] = None, ip: _Optional[_ods_ir.InsertionPoint] = None):
    operands = []
    attributes = {}
    regions = None
    operands.append(in0)
    operands.append(in1)
    _ods_context = _ods_get_default_loc_context(loc)
    if arg_attrs is not None: attributes["arg_attrs"] = (arg_attrs if (
        isinstance(arg_attrs, _ods_ir.Attribute) or
        not _ods_ir.AttrBuilder.contains('DictArrayAttr')) else
          _ods_ir.AttrBuilder.get('DictArrayAttr')(arg_attrs, context=_ods_context))
    if res_attrs is not None: attributes["res_attrs"] = (res_attrs if (
        isinstance(res_attrs, _ods_ir.Attribute) or
        not _ods_ir.AttrBuilder.contains('DictArrayAttr')) else
          _ods_ir.AttrBuilder.get('DictArrayAttr')(res_attrs, context=_ods_context))
    results = []
    results.append(res)
    _ods_successors = None
    super().__init__(self.OPERATION_NAME, self._ODS_REGIONS, self._ODS_OPERAND_SEGMENTS, self._ODS_RESULT_SEGMENTS, attributes=attributes, results=results, operands=operands, successors=_ods_successors, regions=regions, loc=loc, ip=ip)

  @builtins.property
  def in0(self) -> _ods_ir.Value[_ods_ir.IntegerType]:
    return self.operation.operands[0]

  @builtins.property
  def in1(self) -> _ods_ir.Value[_ods_ir.IntegerType]:
    return self.operation.operands[1]

  @builtins.property
  def arg_attrs(self) -> _Optional[_ods_ir.ArrayAttr]:
    if "arg_attrs" not in self.operation.attributes:
      return None
    return self.operation.attributes["arg_attrs"]

  @arg_attrs.setter
  def arg_attrs(self, value: _Optional[_ods_ir.ArrayAttr]):
    if value is not None:
      self.operation.attributes["arg_attrs"] = value
    elif "arg_attrs" in self.operation.attributes:
      del self.operation.attributes["arg_attrs"]

  @arg_attrs.deleter
  def arg_attrs(self):
    del self.operation.attributes["arg_attrs"]

  @builtins.property
  def res_attrs(self) -> _Optional[_ods_ir.ArrayAttr]:
    if "res_attrs" not in self.operation.attributes:
      return None
    return self.operation.attributes["res_attrs"]

  @res_attrs.setter
  def res_attrs(self, value: _Optional[_ods_ir.ArrayAttr]):
    if value is not None:
      self.operation.attributes["res_attrs"] = value
    elif "res_attrs" in self.operation.attributes:
      del self.operation.attributes["res_attrs"]

  @res_attrs.deleter
  def res_attrs(self):
    del self.operation.attributes["res_attrs"]

  @builtins.property
  def res(self) -> _ods_ir.OpResult[_ods_ir.IntegerType]:
    return self.operation.results[0]

@_ods_cext.register_op_adaptor(MbcntHiOp)
class MbcntHiOpAdaptor(_ods_ir.OpAdaptor):
  OPERATION_NAME = "rocdl.mbcnt.hi"

  @builtins.property
  def in0(self) -> _ods_ir.Value[_ods_ir.IntegerType]:
    return self.operands[0]

  @builtins.property
  def in1(self) -> _ods_ir.Value[_ods_ir.IntegerType]:
    return self.operands[1]

  @builtins.property
  def arg_attrs(self) -> _Optional[_ods_ir.ArrayAttr]:
    if "arg_attrs" not in self.attributes:
      return None
    return self.attributes["arg_attrs"]

  @builtins.property
  def res_attrs(self) -> _Optional[_ods_ir.ArrayAttr]:
    if "res_attrs" not in self.attributes:
      return None
    return self.attributes["res_attrs"]

def mbcnt_hi(res: _ods_ir.Type, in0: _ods_ir.Value[_ods_ir.IntegerType], in1: _ods_ir.Value[_ods_ir.IntegerType], *, arg_attrs: _Optional[_Union[_Any, _ods_ir.ArrayAttr]] = None, res_attrs: _Optional[_Union[_Any, _ods_ir.ArrayAttr]] = None, loc: _Optional[_ods_ir.Location] = None, ip: _Optional[_ods_ir.InsertionPoint] = None) -> _ods_ir.OpResult[_ods_ir.IntegerType]:
  return MbcntHiOp(res=res, in0=in0, in1=in1, arg_attrs=arg_attrs, res_attrs=res_attrs, loc=loc, ip=ip).result

@_ods_cext.register_operation(_Dialect)
class MbcntLoOp(_ods_ir.OpView):
  r"""
  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
  ```
  """

  OPERATION_NAME = "rocdl.mbcnt.lo"

  _ODS_REGIONS = (0, True)

  def __init__(self, res: _ods_ir.Type, in0: _ods_ir.Value[_ods_ir.IntegerType], in1: _ods_ir.Value[_ods_ir.IntegerType], *, arg_attrs: _Optional[_Union[_Any, _ods_ir.ArrayAttr]] = None, res_attrs: _Optional[_Union[_Any, _ods_ir.ArrayAttr]] = None, loc: _Optional[_ods_ir.Location] = None, ip: _Optional[_ods_ir.InsertionPoint] = None):
    operands = []
    attributes = {}
    regions = None
    operands.append(in0)
    operands.append(in1)
    _ods_context = _ods_get_default_loc_context(loc)
    if arg_attrs is not None: attributes["arg_attrs"] = (arg_attrs if (
        isinstance(arg_attrs, _ods_ir.Attribute) or
        not _ods_ir.AttrBuilder.contains('DictArrayAttr')) else
          _ods_ir.AttrBuilder.get('DictArrayAttr')(arg_attrs, context=_ods_context))
    if res_attrs is not None: attributes["res_attrs"] = (res_attrs if (
        isinstance(res_attrs, _ods_ir.Attribute) or
        not _ods_ir.AttrBuilder.contains('DictArrayAttr')) else
          _ods_ir.AttrBuilder.get('DictArrayAttr')(res_attrs, context=_ods_context))
    results = []
    results.append(res)
    _ods_successors = None
    super().__init__(self.OPERATION_NAME, self._ODS_REGIONS, self._ODS_OPERAND_SEGMENTS, self._ODS_RESULT_SEGMENTS, attributes=attributes, results=results, operands=operands, successors=_ods_successors, regions=regions, loc=loc, ip=ip)

  @builtins.property
  def in0(self) -> _ods_ir.Value[_ods_ir.IntegerType]:
    return self.operation.operands[0]

  @builtins.property
  def in1(self) -> _ods_ir.Value[_ods_ir.IntegerType]:
    return self.operation.operands[1]

  @builtins.property
  def arg_attrs(self) -> _Optional[_ods_ir.ArrayAttr]:
    if "arg_attrs" not in self.operation.attributes:
      return None
    return self.operation.attributes["arg_attrs"]

  @arg_attrs.setter
  def arg_attrs(self, value: _Optional[_ods_ir.ArrayAttr]):
    if value is not None:
      self.operation.attributes["arg_attrs"] = value
    elif "arg_attrs" in self.operation.attributes:
      del self.operation.attributes["arg_attrs"]

  @arg_attrs.deleter
  def arg_attrs(self):
    del self.operation.attributes["arg_attrs"]

  @builtins.property
  def res_attrs(self) -> _Optional[_ods_ir.ArrayAttr]:
    if "res_attrs" not in self.operation.attributes:
      return None
    return self.operation.attributes["res_attrs"]

  @res_attrs.setter
  def res_attrs(self, value: _Optional[_ods_ir.ArrayAttr]):
    if value is not None:
      self.operation.attributes["res_attrs"] = value
    elif "res_attrs" in self.operation.attributes:
      del self.operation.attributes["res_attrs"]

  @res_attrs.deleter
  def res_attrs(self):
    del self.operation.attributes["res_attrs"]

  @builtins.property
  def res(self) -> _ods_ir.OpResult[_ods_ir.IntegerType]:
    return self.operation.results[0]

@_ods_cext.register_op_adaptor(MbcntLoOp)
class MbcntLoOpAdaptor(_ods_ir.OpAdaptor):
  OPERATION_NAME = "rocdl.mbcnt.lo"

  @builtins.property
  def in0(self) -> _ods_ir.Value[_ods_ir.IntegerType]:
    return self.operands[0]

  @builtins.property
  def in1(self) -> _ods_ir.Value[_ods_ir.IntegerType]:
    return self.operands[1]

  @builtins.property
  def arg_attrs(self) -> _Optional[_ods_ir.ArrayAttr]:
    if "arg_attrs" not in self.attributes:
      return None
    return self.attributes["arg_attrs"]

  @builtins.property
  def res_attrs(self) -> _Optional[_ods_ir.ArrayAttr]:
    if "res_attrs" not in self.attributes:
      return None
    return self.attributes["res_attrs"]

def mbcnt_lo(res: _ods_ir.Type, in0: _ods_ir.Value[_ods_ir.IntegerType], in1: _ods_ir.Value[_ods_ir.IntegerType], *, arg_attrs: _Optional[_Union[_Any, _ods_ir.ArrayAttr]] = None, res_attrs: _Optional[_Union[_Any, _ods_ir.ArrayAttr]] = None, loc: _Optional[_ods_ir.Location] = None, ip: _Optional[_ods_ir.InsertionPoint] = None) -> _ods_ir.OpResult[_ods_ir.IntegerType]:
  return MbcntLoOp(res=res, in0=in0, in1=in1, arg_attrs=arg_attrs, res_attrs=res_attrs, loc=loc, ip=ip).result

@_ods_cext.register_operation(_Dialect)
class Permlane16SwapOp(_ods_ir.OpView):
  r"""
  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)>
  ```
  """

  OPERATION_NAME = "rocdl.permlane16.swap"

  _ODS_REGIONS = (0, True)

  def __init__(self, res: _ods_ir.Type, old: _ods_ir.Value[_ods_ir.IntegerType], src: _ods_ir.Value[_ods_ir.IntegerType], fi: _Union[bool, _ods_ir.BoolAttr], boundControl: _Union[bool, _ods_ir.BoolAttr], *, loc: _Optional[_ods_ir.Location] = None, ip: _Optional[_ods_ir.InsertionPoint] = None):
    operands = []
    attributes = {}
    regions = None
    operands.append(old)
    operands.append(src)
    _ods_context = _ods_get_default_loc_context(loc)
    attributes["fi"] = (fi if (
    isinstance(fi, _ods_ir.Attribute) or
    not _ods_ir.AttrBuilder.contains('I1Attr')) else
      _ods_ir.AttrBuilder.get('I1Attr')(fi, context=_ods_context))
    attributes["boundControl"] = (boundControl if (
    isinstance(boundControl, _ods_ir.Attribute) or
    not _ods_ir.AttrBuilder.contains('I1Attr')) else
      _ods_ir.AttrBuilder.get('I1Attr')(boundControl, context=_ods_context))
    results = []
    results.append(res)
    _ods_successors = None
    super().__init__(self.OPERATION_NAME, self._ODS_REGIONS, self._ODS_OPERAND_SEGMENTS, self._ODS_RESULT_SEGMENTS, attributes=attributes, results=results, operands=operands, successors=_ods_successors, regions=regions, loc=loc, ip=ip)

  @builtins.property
  def old(self) -> _ods_ir.Value[_ods_ir.IntegerType]:
    return self.operation.operands[0]

  @builtins.property
  def src(self) -> _ods_ir.Value[_ods_ir.IntegerType]:
    return self.operation.operands[1]

  @builtins.property
  def fi(self) -> _ods_ir.BoolAttr:
    return self.operation.attributes["fi"]

  @fi.setter
  def fi(self, value: _ods_ir.BoolAttr):
    if value is None:
      raise ValueError("'None' not allowed as value for mandatory attributes")
    self.operation.attributes["fi"] = value

  @builtins.property
  def boundControl(self) -> _ods_ir.BoolAttr:
    return self.operation.attributes["boundControl"]

  @boundControl.setter
  def boundControl(self, value: _ods_ir.BoolAttr):
    if value is None:
      raise ValueError("'None' not allowed as value for mandatory attributes")
    self.operation.attributes["boundControl"] = value

  @builtins.property
  def res(self) -> _ods_ir.OpResult:
    return self.operation.results[0]

@_ods_cext.register_op_adaptor(Permlane16SwapOp)
class Permlane16SwapOpAdaptor(_ods_ir.OpAdaptor):
  OPERATION_NAME = "rocdl.permlane16.swap"

  @builtins.property
  def old(self) -> _ods_ir.Value[_ods_ir.IntegerType]:
    return self.operands[0]

  @builtins.property
  def src(self) -> _ods_ir.Value[_ods_ir.IntegerType]:
    return self.operands[1]

  @builtins.property
  def fi(self) -> _ods_ir.BoolAttr:
    return self.attributes["fi"]

  @builtins.property
  def boundControl(self) -> _ods_ir.BoolAttr:
    return self.attributes["boundControl"]

def permlane16_swap(res: _ods_ir.Type, old: _ods_ir.Value[_ods_ir.IntegerType], src: _ods_ir.Value[_ods_ir.IntegerType], fi: _Union[bool, _ods_ir.BoolAttr], bound_control: _Union[bool, _ods_ir.BoolAttr], *, loc: _Optional[_ods_ir.Location] = None, ip: _Optional[_ods_ir.InsertionPoint] = None) -> _ods_ir.OpResult:
  return Permlane16SwapOp(res=res, old=old, src=src, fi=fi, boundControl=bound_control, loc=loc, ip=ip).result

@_ods_cext.register_operation(_Dialect)
class Permlane32SwapOp(_ods_ir.OpView):
  r"""
  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)>
  ```
  """

  OPERATION_NAME = "rocdl.permlane32.swap"

  _ODS_REGIONS = (0, True)

  def __init__(self, res: _ods_ir.Type, old: _ods_ir.Value[_ods_ir.IntegerType], src: _ods_ir.Value[_ods_ir.IntegerType], fi: _Union[bool, _ods_ir.BoolAttr], boundControl: _Union[bool, _ods_ir.BoolAttr], *, loc: _Optional[_ods_ir.Location] = None, ip: _Optional[_ods_ir.InsertionPoint] = None):
    operands = []
    attributes = {}
    regions = None
    operands.append(old)
    operands.append(src)
    _ods_context = _ods_get_default_loc_context(loc)
    attributes["fi"] = (fi if (
    isinstance(fi, _ods_ir.Attribute) or
    not _ods_ir.AttrBuilder.contains('I1Attr')) else
      _ods_ir.AttrBuilder.get('I1Attr')(fi, context=_ods_context))
    attributes["boundControl"] = (boundControl if (
    isinstance(boundControl, _ods_ir.Attribute) or
    not _ods_ir.AttrBuilder.contains('I1Attr')) else
      _ods_ir.AttrBuilder.get('I1Attr')(boundControl, context=_ods_context))
    results = []
    results.append(res)
    _ods_successors = None
    super().__init__(self.OPERATION_NAME, self._ODS_REGIONS, self._ODS_OPERAND_SEGMENTS, self._ODS_RESULT_SEGMENTS, attributes=attributes, results=results, operands=operands, successors=_ods_successors, regions=regions, loc=loc, ip=ip)

  @builtins.property
  def old(self) -> _ods_ir.Value[_ods_ir.IntegerType]:
    return self.operation.operands[0]

  @builtins.property
  def src(self) -> _ods_ir.Value[_ods_ir.IntegerType]:
    return self.operation.operands[1]

  @builtins.property
  def fi(self) -> _ods_ir.BoolAttr:
    return self.operation.attributes["fi"]

  @fi.setter
  def fi(self, value: _ods_ir.BoolAttr):
    if value is None:
      raise ValueError("'None' not allowed as value for mandatory attributes")
    self.operation.attributes["fi"] = value

  @builtins.property
  def boundControl(self) -> _ods_ir.BoolAttr:
    return self.operation.attributes["boundControl"]

  @boundControl.setter
  def boundControl(self, value: _ods_ir.BoolAttr):
    if value is None:
      raise ValueError("'None' not allowed as value for mandatory attributes")
    self.operation.attributes["boundControl"] = value

  @builtins.property
  def res(self) -> _ods_ir.OpResult:
    return self.operation.results[0]

@_ods_cext.register_op_adaptor(Permlane32SwapOp)
class Permlane32SwapOpAdaptor(_ods_ir.OpAdaptor):
  OPERATION_NAME = "rocdl.permlane32.swap"

  @builtins.property
  def old(self) -> _ods_ir.Value[_ods_ir.IntegerType]:
    return self.operands[0]

  @builtins.property
  def src(self) -> _ods_ir.Value[_ods_ir.IntegerType]:
    return self.operands[1]

  @builtins.property
  def fi(self) -> _ods_ir.BoolAttr:
    return self.attributes["fi"]

  @builtins.property
  def boundControl(self) -> _ods_ir.BoolAttr:
    return self.attributes["boundControl"]

def permlane32_swap(res: _ods_ir.Type, old: _ods_ir.Value[_ods_ir.IntegerType], src: _ods_ir.Value[_ods_ir.IntegerType], fi: _Union[bool, _ods_ir.BoolAttr], bound_control: _Union[bool, _ods_ir.BoolAttr], *, loc: _Optional[_ods_ir.Location] = None, ip: _Optional[_ods_ir.InsertionPoint] = None) -> _ods_ir.OpResult:
  return Permlane32SwapOp(res=res, old=old, src=src, fi=fi, boundControl=bound_control, loc=loc, ip=ip).result

@_ods_cext.register_operation(_Dialect)
class PermlaneX16Op(_ods_ir.OpView):
  r"""
  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
  ```
  """

  OPERATION_NAME = "rocdl.permlanex16"

  _ODS_REGIONS = (0, True)

  def __init__(self, res: _ods_ir.Type, old: _ods_ir.Value, src0: _ods_ir.Value, src1: _ods_ir.Value, src2: _ods_ir.Value, fi: _Union[bool, _ods_ir.BoolAttr], boundControl: _Union[bool, _ods_ir.BoolAttr], *, loc: _Optional[_ods_ir.Location] = None, ip: _Optional[_ods_ir.InsertionPoint] = None):
    operands = []
    attributes = {}
    regions = None
    operands.append(old)
    operands.append(src0)
    operands.append(src1)
    operands.append(src2)
    _ods_context = _ods_get_default_loc_context(loc)
    attributes["fi"] = (fi if (
    isinstance(fi, _ods_ir.Attribute) or
    not _ods_ir.AttrBuilder.contains('I1Attr')) else
      _ods_ir.AttrBuilder.get('I1Attr')(fi, context=_ods_context))
    attributes["boundControl"] = (boundControl if (
    isinstance(boundControl, _ods_ir.Attribute) or
    not _ods_ir.AttrBuilder.contains('I1Attr')) else
      _ods_ir.AttrBuilder.get('I1Attr')(boundControl, context=_ods_context))
    results = []
    results.append(res)
    _ods_successors = None
    super().__init__(self.OPERATION_NAME, self._ODS_REGIONS, self._ODS_OPERAND_SEGMENTS, self._ODS_RESULT_SEGMENTS, attributes=attributes, results=results, operands=operands, successors=_ods_successors, regions=regions, loc=loc, ip=ip)

  @builtins.property
  def old(self) -> _ods_ir.Value:
    return self.operation.operands[0]

  @builtins.property
  def src0(self) -> _ods_ir.Value:
    return self.operation.operands[1]

  @builtins.property
  def src1(self) -> _ods_ir.Value:
    return self.operation.operands[2]

  @builtins.property
  def src2(self) -> _ods_ir.Value:
    return self.operation.operands[3]

  @builtins.property
  def fi(self) -> _ods_ir.BoolAttr:
    return self.operation.attributes["fi"]

  @fi.setter
  def fi(self, value: _ods_ir.BoolAttr):
    if value is None:
      raise ValueError("'None' not allowed as value for mandatory attributes")
    self.operation.attributes["fi"] = value

  @builtins.property
  def boundControl(self) -> _ods_ir.BoolAttr:
    return self.operation.attributes["boundControl"]

  @boundControl.setter
  def boundControl(self, value: _ods_ir.BoolAttr):
    if value is None:
      raise ValueError("'None' not allowed as value for mandatory attributes")
    self.operation.attributes["boundControl"] = value

  @builtins.property
  def res(self) -> _ods_ir.OpResult:
    return self.operation.results[0]

@_ods_cext.register_op_adaptor(PermlaneX16Op)
class PermlaneX16OpAdaptor(_ods_ir.OpAdaptor):
  OPERATION_NAME = "rocdl.permlanex16"

  @builtins.property
  def old(self) -> _ods_ir.Value:
    return self.operands[0]

  @builtins.property
  def src0(self) -> _ods_ir.Value:
    return self.operands[1]

  @builtins.property
  def src1(self) -> _ods_ir.Value:
    return self.operands[2]

  @builtins.property
  def src2(self) -> _ods_ir.Value:
    return self.operands[3]

  @builtins.property
  def fi(self) -> _ods_ir.BoolAttr:
    return self.attributes["fi"]

  @builtins.property
  def boundControl(self) -> _ods_ir.BoolAttr:
    return self.attributes["boundControl"]

def permlanex16(res: _ods_ir.Type, old: _ods_ir.Value, src0: _ods_ir.Value, src1: _ods_ir.Value, src2: _ods_ir.Value, fi: _Union[bool, _ods_ir.BoolAttr], bound_control: _Union[bool, _ods_ir.BoolAttr], *, loc: _Optional[_ods_ir.Location] = None, ip: _Optional[_ods_ir.InsertionPoint] = None) -> _ods_ir.OpResult:
  return PermlaneX16Op(res=res, old=old, src0=src0, src1=src1, src2=src2, fi=fi, boundControl=bound_control, loc=loc, ip=ip).result

@_ods_cext.register_operation(_Dialect)
class RawBufferAtomicCmpSwap(_ods_ir.OpView):
  OPERATION_NAME = "rocdl.raw.buffer.atomic.cmpswap"

  _ODS_REGIONS = (0, True)

  def __init__(self, res: _ods_ir.Type, src: _ods_ir.Value, cmp: _ods_ir.Value, rsrc: _ods_ir.Value, offset: _ods_ir.Value[_ods_ir.IntegerType], soffset: _ods_ir.Value[_ods_ir.IntegerType], aux: _ods_ir.Value[_ods_ir.IntegerType], *, loc: _Optional[_ods_ir.Location] = None, ip: _Optional[_ods_ir.InsertionPoint] = None):
    operands = []
    attributes = {}
    regions = None
    operands.append(src)
    operands.append(cmp)
    operands.append(rsrc)
    operands.append(offset)
    operands.append(soffset)
    operands.append(aux)
    _ods_context = _ods_get_default_loc_context(loc)
    results = []
    results.append(res)
    _ods_successors = None
    super().__init__(self.OPERATION_NAME, self._ODS_REGIONS, self._ODS_OPERAND_SEGMENTS, self._ODS_RESULT_SEGMENTS, attributes=attributes, results=results, operands=operands, successors=_ods_successors, regions=regions, loc=loc, ip=ip)

  @builtins.property
  def src(self) -> _ods_ir.Value:
    return self.operation.operands[0]

  @builtins.property
  def cmp(self) -> _ods_ir.Value:
    return self.operation.operands[1]

  @builtins.property
  def rsrc(self) -> _ods_ir.Value:
    return self.operation.operands[2]

  @builtins.property
  def offset(self) -> _ods_ir.Value[_ods_ir.IntegerType]:
    return self.operation.operands[3]

  @builtins.property
  def soffset(self) -> _ods_ir.Value[_ods_ir.IntegerType]:
    return self.operation.operands[4]

  @builtins.property
  def aux(self) -> _ods_ir.Value[_ods_ir.IntegerType]:
    return self.operation.operands[5]

  @builtins.property
  def res(self) -> _ods_ir.OpResult:
    return self.operation.results[0]

@_ods_cext.register_op_adaptor(RawBufferAtomicCmpSwap)
class RawBufferAtomicCmpSwapAdaptor(_ods_ir.OpAdaptor):
  OPERATION_NAME = "rocdl.raw.buffer.atomic.cmpswap"

  @builtins.property
  def src(self) -> _ods_ir.Value:
    return self.operands[0]

  @builtins.property
  def cmp(self) -> _ods_ir.Value:
    return self.operands[1]

  @builtins.property
  def rsrc(self) -> _ods_ir.Value:
    return self.operands[2]

  @builtins.property
  def offset(self) -> _ods_ir.Value[_ods_ir.IntegerType]:
    return self.operands[3]

  @builtins.property
  def soffset(self) -> _ods_ir.Value[_ods_ir.IntegerType]:
    return self.operands[4]

  @builtins.property
  def aux(self) -> _ods_ir.Value[_ods_ir.IntegerType]:
    return self.operands[5]

def raw_buffer_atomic_cmpswap(res: _ods_ir.Type, src: _ods_ir.Value, cmp: _ods_ir.Value, rsrc: _ods_ir.Value, offset: _ods_ir.Value[_ods_ir.IntegerType], soffset: _ods_ir.Value[_ods_ir.IntegerType], aux: _ods_ir.Value[_ods_ir.IntegerType], *, loc: _Optional[_ods_ir.Location] = None, ip: _Optional[_ods_ir.InsertionPoint] = None) -> _ods_ir.OpResult:
  return RawBufferAtomicCmpSwap(res=res, src=src, cmp=cmp, rsrc=rsrc, offset=offset, soffset=soffset, aux=aux, loc=loc, ip=ip).result

@_ods_cext.register_operation(_Dialect)
class RawBufferAtomicFAddOp(_ods_ir.OpView):
  OPERATION_NAME = "rocdl.raw.buffer.atomic.fadd"

  _ODS_REGIONS = (0, True)

  def __init__(self, vdata: _ods_ir.Value, rsrc: _ods_ir.Value, offset: _ods_ir.Value, soffset: _ods_ir.Value, aux: _ods_ir.Value, *, loc: _Optional[_ods_ir.Location] = None, ip: _Optional[_ods_ir.InsertionPoint] = None):
    operands = []
    attributes = {}
    regions = None
    operands.append(vdata)
    operands.append(rsrc)
    operands.append(offset)
    operands.append(soffset)
    operands.append(aux)
    _ods_context = _ods_get_default_loc_context(loc)
    results = []
    _ods_successors = None
    super().__init__(self.OPERATION_NAME, self._ODS_REGIONS, self._ODS_OPERAND_SEGMENTS, self._ODS_RESULT_SEGMENTS, attributes=attributes, results=results, operands=operands, successors=_ods_successors, regions=regions, loc=loc, ip=ip)

  @builtins.property
  def vdata(self) -> _ods_ir.Value:
    return self.operation.operands[0]

  @builtins.property
  def rsrc(self) -> _ods_ir.Value:
    return self.operation.operands[1]

  @builtins.property
  def offset(self) -> _ods_ir.Value:
    return self.operation.operands[2]

  @builtins.property
  def soffset(self) -> _ods_ir.Value:
    return self.operation.operands[3]

  @builtins.property
  def aux(self) -> _ods_ir.Value:
    return self.operation.operands[4]

@_ods_cext.register_op_adaptor(RawBufferAtomicFAddOp)
class RawBufferAtomicFAddOpAdaptor(_ods_ir.OpAdaptor):
  OPERATION_NAME = "rocdl.raw.buffer.atomic.fadd"

  @builtins.property
  def vdata(self) -> _ods_ir.Value:
    return self.operands[0]

  @builtins.property
  def rsrc(self) -> _ods_ir.Value:
    return self.operands[1]

  @builtins.property
  def offset(self) -> _ods_ir.Value:
    return self.operands[2]

  @builtins.property
  def soffset(self) -> _ods_ir.Value:
    return self.operands[3]

  @builtins.property
  def aux(self) -> _ods_ir.Value:
    return self.operands[4]

def raw_buffer_atomic_fadd(vdata: _ods_ir.Value, rsrc: _ods_ir.Value, offset: _ods_ir.Value, soffset: _ods_ir.Value, aux: _ods_ir.Value, *, loc: _Optional[_ods_ir.Location] = None, ip: _Optional[_ods_ir.InsertionPoint] = None) -> RawBufferAtomicFAddOp:
  return RawBufferAtomicFAddOp(vdata=vdata, rsrc=rsrc, offset=offset, soffset=soffset, aux=aux, loc=loc, ip=ip)

@_ods_cext.register_operation(_Dialect)
class RawBufferAtomicFMaxOp(_ods_ir.OpView):
  OPERATION_NAME = "rocdl.raw.buffer.atomic.fmax"

  _ODS_REGIONS = (0, True)

  def __init__(self, vdata: _ods_ir.Value, rsrc: _ods_ir.Value, offset: _ods_ir.Value, soffset: _ods_ir.Value, aux: _ods_ir.Value, *, loc: _Optional[_ods_ir.Location] = None, ip: _Optional[_ods_ir.InsertionPoint] = None):
    operands = []
    attributes = {}
    regions = None
    operands.append(vdata)
    operands.append(rsrc)
    operands.append(offset)
    operands.append(soffset)
    operands.append(aux)
    _ods_context = _ods_get_default_loc_context(loc)
    results = []
    _ods_successors = None
    super().__init__(self.OPERATION_NAME, self._ODS_REGIONS, self._ODS_OPERAND_SEGMENTS, self._ODS_RESULT_SEGMENTS, attributes=attributes, results=results, operands=operands, successors=_ods_successors, regions=regions, loc=loc, ip=ip)

  @builtins.property
  def vdata(self) -> _ods_ir.Value:
    return self.operation.operands[0]

  @builtins.property
  def rsrc(self) -> _ods_ir.Value:
    return self.operation.operands[1]

  @builtins.property
  def offset(self) -> _ods_ir.Value:
    return self.operation.operands[2]

  @builtins.property
  def soffset(self) -> _ods_ir.Value:
    return self.operation.operands[3]

  @builtins.property
  def aux(self) -> _ods_ir.Value:
    return self.operation.operands[4]

@_ods_cext.register_op_adaptor(RawBufferAtomicFMaxOp)
class RawBufferAtomicFMaxOpAdaptor(_ods_ir.OpAdaptor):
  OPERATION_NAME = "rocdl.raw.buffer.atomic.fmax"

  @builtins.property
  def vdata(self) -> _ods_ir.Value:
    return self.operands[0]

  @builtins.property
  def rsrc(self) -> _ods_ir.Value:
    return self.operands[1]

  @builtins.property
  def offset(self) -> _ods_ir.Value:
    return self.operands[2]

  @builtins.property
  def soffset(self) -> _ods_ir.Value:
    return self.operands[3]

  @builtins.property
  def aux(self) -> _ods_ir.Value:
    return self.operands[4]

def raw_buffer_atomic_fmax(vdata: _ods_ir.Value, rsrc: _ods_ir.Value, offset: _ods_ir.Value, soffset: _ods_ir.Value, aux: _ods_ir.Value, *, loc: _Optional[_ods_ir.Location] = None, ip: _Optional[_ods_ir.InsertionPoint] = None) -> RawBufferAtomicFMaxOp:
  return RawBufferAtomicFMaxOp(vdata=vdata, rsrc=rsrc, offset=offset, soffset=soffset, aux=aux, loc=loc, ip=ip)

@_ods_cext.register_operation(_Dialect)
class RawBufferAtomicSMaxOp(_ods_ir.OpView):
  OPERATION_NAME = "rocdl.raw.buffer.atomic.smax"

  _ODS_REGIONS = (0, True)

  def __init__(self, vdata: _ods_ir.Value, rsrc: _ods_ir.Value, offset: _ods_ir.Value, soffset: _ods_ir.Value, aux: _ods_ir.Value, *, loc: _Optional[_ods_ir.Location] = None, ip: _Optional[_ods_ir.InsertionPoint] = None):
    operands = []
    attributes = {}
    regions = None
    operands.append(vdata)
    operands.append(rsrc)
    operands.append(offset)
    operands.append(soffset)
    operands.append(aux)
    _ods_context = _ods_get_default_loc_context(loc)
    results = []
    _ods_successors = None
    super().__init__(self.OPERATION_NAME, self._ODS_REGIONS, self._ODS_OPERAND_SEGMENTS, self._ODS_RESULT_SEGMENTS, attributes=attributes, results=results, operands=operands, successors=_ods_successors, regions=regions, loc=loc, ip=ip)

  @builtins.property
  def vdata(self) -> _ods_ir.Value:
    return self.operation.operands[0]

  @builtins.property
  def rsrc(self) -> _ods_ir.Value:
    return self.operation.operands[1]

  @builtins.property
  def offset(self) -> _ods_ir.Value:
    return self.operation.operands[2]

  @builtins.property
  def soffset(self) -> _ods_ir.Value:
    return self.operation.operands[3]

  @builtins.property
  def aux(self) -> _ods_ir.Value:
    return self.operation.operands[4]

@_ods_cext.register_op_adaptor(RawBufferAtomicSMaxOp)
class RawBufferAtomicSMaxOpAdaptor(_ods_ir.OpAdaptor):
  OPERATION_NAME = "rocdl.raw.buffer.atomic.smax"

  @builtins.property
  def vdata(self) -> _ods_ir.Value:
    return self.operands[0]

  @builtins.property
  def rsrc(self) -> _ods_ir.Value:
    return self.operands[1]

  @builtins.property
  def offset(self) -> _ods_ir.Value:
    return self.operands[2]

  @builtins.property
  def soffset(self) -> _ods_ir.Value:
    return self.operands[3]

  @builtins.property
  def aux(self) -> _ods_ir.Value:
    return self.operands[4]

def raw_buffer_atomic_smax(vdata: _ods_ir.Value, rsrc: _ods_ir.Value, offset: _ods_ir.Value, soffset: _ods_ir.Value, aux: _ods_ir.Value, *, loc: _Optional[_ods_ir.Location] = None, ip: _Optional[_ods_ir.InsertionPoint] = None) -> RawBufferAtomicSMaxOp:
  return RawBufferAtomicSMaxOp(vdata=vdata, rsrc=rsrc, offset=offset, soffset=soffset, aux=aux, loc=loc, ip=ip)

@_ods_cext.register_operation(_Dialect)
class RawBufferAtomicUMinOp(_ods_ir.OpView):
  OPERATION_NAME = "rocdl.raw.buffer.atomic.umin"

  _ODS_REGIONS = (0, True)

  def __init__(self, vdata: _ods_ir.Value, rsrc: _ods_ir.Value, offset: _ods_ir.Value, soffset: _ods_ir.Value, aux: _ods_ir.Value, *, loc: _Optional[_ods_ir.Location] = None, ip: _Optional[_ods_ir.InsertionPoint] = None):
    operands = []
    attributes = {}
    regions = None
    operands.append(vdata)
    operands.append(rsrc)
    operands.append(offset)
    operands.append(soffset)
    operands.append(aux)
    _ods_context = _ods_get_default_loc_context(loc)
    results = []
    _ods_successors = None
    super().__init__(self.OPERATION_NAME, self._ODS_REGIONS, self._ODS_OPERAND_SEGMENTS, self._ODS_RESULT_SEGMENTS, attributes=attributes, results=results, operands=operands, successors=_ods_successors, regions=regions, loc=loc, ip=ip)

  @builtins.property
  def vdata(self) -> _ods_ir.Value:
    return self.operation.operands[0]

  @builtins.property
  def rsrc(self) -> _ods_ir.Value:
    return self.operation.operands[1]

  @builtins.property
  def offset(self) -> _ods_ir.Value:
    return self.operation.operands[2]

  @builtins.property
  def soffset(self) -> _ods_ir.Value:
    return self.operation.operands[3]

  @builtins.property
  def aux(self) -> _ods_ir.Value:
    return self.operation.operands[4]

@_ods_cext.register_op_adaptor(RawBufferAtomicUMinOp)
class RawBufferAtomicUMinOpAdaptor(_ods_ir.OpAdaptor):
  OPERATION_NAME = "rocdl.raw.buffer.atomic.umin"

  @builtins.property
  def vdata(self) -> _ods_ir.Value:
    return self.operands[0]

  @builtins.property
  def rsrc(self) -> _ods_ir.Value:
    return self.operands[1]

  @builtins.property
  def offset(self) -> _ods_ir.Value:
    return self.operands[2]

  @builtins.property
  def soffset(self) -> _ods_ir.Value:
    return self.operands[3]

  @builtins.property
  def aux(self) -> _ods_ir.Value:
    return self.operands[4]

def raw_buffer_atomic_umin(vdata: _ods_ir.Value, rsrc: _ods_ir.Value, offset: _ods_ir.Value, soffset: _ods_ir.Value, aux: _ods_ir.Value, *, loc: _Optional[_ods_ir.Location] = None, ip: _Optional[_ods_ir.InsertionPoint] = None) -> RawBufferAtomicUMinOp:
  return RawBufferAtomicUMinOp(vdata=vdata, rsrc=rsrc, offset=offset, soffset=soffset, aux=aux, loc=loc, ip=ip)

@_ods_cext.register_operation(_Dialect)
class RawBufferLoadOp(_ods_ir.OpView):
  OPERATION_NAME = "rocdl.raw.buffer.load"

  _ODS_REGIONS = (0, True)

  def __init__(self, res: _ods_ir.Type, rsrc: _ods_ir.Value, offset: _ods_ir.Value, soffset: _ods_ir.Value, aux: _ods_ir.Value, *, loc: _Optional[_ods_ir.Location] = None, ip: _Optional[_ods_ir.InsertionPoint] = None):
    operands = []
    attributes = {}
    regions = None
    operands.append(rsrc)
    operands.append(offset)
    operands.append(soffset)
    operands.append(aux)
    _ods_context = _ods_get_default_loc_context(loc)
    results = []
    results.append(res)
    _ods_successors = None
    super().__init__(self.OPERATION_NAME, self._ODS_REGIONS, self._ODS_OPERAND_SEGMENTS, self._ODS_RESULT_SEGMENTS, attributes=attributes, results=results, operands=operands, successors=_ods_successors, regions=regions, loc=loc, ip=ip)

  @builtins.property
  def rsrc(self) -> _ods_ir.Value:
    return self.operation.operands[0]

  @builtins.property
  def offset(self) -> _ods_ir.Value:
    return self.operation.operands[1]

  @builtins.property
  def soffset(self) -> _ods_ir.Value:
    return self.operation.operands[2]

  @builtins.property
  def aux(self) -> _ods_ir.Value:
    return self.operation.operands[3]

  @builtins.property
  def res(self) -> _ods_ir.OpResult:
    return self.operation.results[0]

@_ods_cext.register_op_adaptor(RawBufferLoadOp)
class RawBufferLoadOpAdaptor(_ods_ir.OpAdaptor):
  OPERATION_NAME = "rocdl.raw.buffer.load"

  @builtins.property
  def rsrc(self) -> _ods_ir.Value:
    return self.operands[0]

  @builtins.property
  def offset(self) -> _ods_ir.Value:
    return self.operands[1]

  @builtins.property
  def soffset(self) -> _ods_ir.Value:
    return self.operands[2]

  @builtins.property
  def aux(self) -> _ods_ir.Value:
    return self.operands[3]

def raw_buffer_load(res: _ods_ir.Type, rsrc: _ods_ir.Value, offset: _ods_ir.Value, soffset: _ods_ir.Value, aux: _ods_ir.Value, *, loc: _Optional[_ods_ir.Location] = None, ip: _Optional[_ods_ir.InsertionPoint] = None) -> _ods_ir.OpResult:
  return RawBufferLoadOp(res=res, rsrc=rsrc, offset=offset, soffset=soffset, aux=aux, loc=loc, ip=ip).result

@_ods_cext.register_operation(_Dialect)
class RawBufferStoreOp(_ods_ir.OpView):
  OPERATION_NAME = "rocdl.raw.buffer.store"

  _ODS_REGIONS = (0, True)

  def __init__(self, vdata: _ods_ir.Value, rsrc: _ods_ir.Value, offset: _ods_ir.Value, soffset: _ods_ir.Value, aux: _ods_ir.Value, *, loc: _Optional[_ods_ir.Location] = None, ip: _Optional[_ods_ir.InsertionPoint] = None):
    operands = []
    attributes = {}
    regions = None
    operands.append(vdata)
    operands.append(rsrc)
    operands.append(offset)
    operands.append(soffset)
    operands.append(aux)
    _ods_context = _ods_get_default_loc_context(loc)
    results = []
    _ods_successors = None
    super().__init__(self.OPERATION_NAME, self._ODS_REGIONS, self._ODS_OPERAND_SEGMENTS, self._ODS_RESULT_SEGMENTS, attributes=attributes, results=results, operands=operands, successors=_ods_successors, regions=regions, loc=loc, ip=ip)

  @builtins.property
  def vdata(self) -> _ods_ir.Value:
    return self.operation.operands[0]

  @builtins.property
  def rsrc(self) -> _ods_ir.Value:
    return self.operation.operands[1]

  @builtins.property
  def offset(self) -> _ods_ir.Value:
    return self.operation.operands[2]

  @builtins.property
  def soffset(self) -> _ods_ir.Value:
    return self.operation.operands[3]

  @builtins.property
  def aux(self) -> _ods_ir.Value:
    return self.operation.operands[4]

@_ods_cext.register_op_adaptor(RawBufferStoreOp)
class RawBufferStoreOpAdaptor(_ods_ir.OpAdaptor):
  OPERATION_NAME = "rocdl.raw.buffer.store"

  @builtins.property
  def vdata(self) -> _ods_ir.Value:
    return self.operands[0]

  @builtins.property
  def rsrc(self) -> _ods_ir.Value:
    return self.operands[1]

  @builtins.property
  def offset(self) -> _ods_ir.Value:
    return self.operands[2]

  @builtins.property
  def soffset(self) -> _ods_ir.Value:
    return self.operands[3]

  @builtins.property
  def aux(self) -> _ods_ir.Value:
    return self.operands[4]

def raw_buffer_store(vdata: _ods_ir.Value, rsrc: _ods_ir.Value, offset: _ods_ir.Value, soffset: _ods_ir.Value, aux: _ods_ir.Value, *, loc: _Optional[_ods_ir.Location] = None, ip: _Optional[_ods_ir.InsertionPoint] = None) -> RawBufferStoreOp:
  return RawBufferStoreOp(vdata=vdata, rsrc=rsrc, offset=offset, soffset=soffset, aux=aux, loc=loc, ip=ip)

@_ods_cext.register_operation(_Dialect)
class RawPtrBufferAtomicCmpSwap(_ods_ir.OpView):
  OPERATION_NAME = "rocdl.raw.ptr.buffer.atomic.cmpswap"

  _ODS_REGIONS = (0, True)

  def __init__(self, res: _ods_ir.Type, src: _ods_ir.Value, cmp: _ods_ir.Value, rsrc: _ods_ir.Value, offset: _ods_ir.Value[_ods_ir.IntegerType], soffset: _ods_ir.Value[_ods_ir.IntegerType], aux: _ods_ir.Value[_ods_ir.IntegerType], *, alias_scopes: _Optional[_Union[_Any, _ods_ir.ArrayAttr]] = None, noalias_scopes: _Optional[_Union[_Any, _ods_ir.ArrayAttr]] = None, tbaa: _Optional[_Union[_Any, _ods_ir.ArrayAttr]] = None, loc: _Optional[_ods_ir.Location] = None, ip: _Optional[_ods_ir.InsertionPoint] = None):
    operands = []
    attributes = {}
    regions = None
    operands.append(src)
    operands.append(cmp)
    operands.append(rsrc)
    operands.append(offset)
    operands.append(soffset)
    operands.append(aux)
    _ods_context = _ods_get_default_loc_context(loc)
    if alias_scopes is not None: attributes["alias_scopes"] = (alias_scopes if (
        isinstance(alias_scopes, _ods_ir.Attribute) or
        not _ods_ir.AttrBuilder.contains('LLVM_AliasScopeArrayAttr')) else
          _ods_ir.AttrBuilder.get('LLVM_AliasScopeArrayAttr')(alias_scopes, context=_ods_context))
    if noalias_scopes is not None: attributes["noalias_scopes"] = (noalias_scopes if (
        isinstance(noalias_scopes, _ods_ir.Attribute) or
        not _ods_ir.AttrBuilder.contains('LLVM_AliasScopeArrayAttr')) else
          _ods_ir.AttrBuilder.get('LLVM_AliasScopeArrayAttr')(noalias_scopes, context=_ods_context))
    if tbaa is not None: attributes["tbaa"] = (tbaa if (
        isinstance(tbaa, _ods_ir.Attribute) or
        not _ods_ir.AttrBuilder.contains('LLVM_TBAATagArrayAttr')) else
          _ods_ir.AttrBuilder.get('LLVM_TBAATagArrayAttr')(tbaa, context=_ods_context))
    results = []
    results.append(res)
    _ods_successors = None
    super().__init__(self.OPERATION_NAME, self._ODS_REGIONS, self._ODS_OPERAND_SEGMENTS, self._ODS_RESULT_SEGMENTS, attributes=attributes, results=results, operands=operands, successors=_ods_successors, regions=regions, loc=loc, ip=ip)

  @builtins.property
  def src(self) -> _ods_ir.Value:
    return self.operation.operands[0]

  @builtins.property
  def cmp(self) -> _ods_ir.Value:
    return self.operation.operands[1]

  @builtins.property
  def rsrc(self) -> _ods_ir.Value:
    return self.operation.operands[2]

  @builtins.property
  def offset(self) -> _ods_ir.Value[_ods_ir.IntegerType]:
    return self.operation.operands[3]

  @builtins.property
  def soffset(self) -> _ods_ir.Value[_ods_ir.IntegerType]:
    return self.operation.operands[4]

  @builtins.property
  def aux(self) -> _ods_ir.Value[_ods_ir.IntegerType]:
    return self.operation.operands[5]

  @builtins.property
  def alias_scopes(self) -> _Optional[_ods_ir.ArrayAttr]:
    if "alias_scopes" not in self.operation.attributes:
      return None
    return self.operation.attributes["alias_scopes"]

  @alias_scopes.setter
  def alias_scopes(self, value: _Optional[_ods_ir.ArrayAttr]):
    if value is not None:
      self.operation.attributes["alias_scopes"] = value
    elif "alias_scopes" in self.operation.attributes:
      del self.operation.attributes["alias_scopes"]

  @alias_scopes.deleter
  def alias_scopes(self):
    del self.operation.attributes["alias_scopes"]

  @builtins.property
  def noalias_scopes(self) -> _Optional[_ods_ir.ArrayAttr]:
    if "noalias_scopes" not in self.operation.attributes:
      return None
    return self.operation.attributes["noalias_scopes"]

  @noalias_scopes.setter
  def noalias_scopes(self, value: _Optional[_ods_ir.ArrayAttr]):
    if value is not None:
      self.operation.attributes["noalias_scopes"] = value
    elif "noalias_scopes" in self.operation.attributes:
      del self.operation.attributes["noalias_scopes"]

  @noalias_scopes.deleter
  def noalias_scopes(self):
    del self.operation.attributes["noalias_scopes"]

  @builtins.property
  def tbaa(self) -> _Optional[_ods_ir.ArrayAttr]:
    if "tbaa" not in self.operation.attributes:
      return None
    return self.operation.attributes["tbaa"]

  @tbaa.setter
  def tbaa(self, value: _Optional[_ods_ir.ArrayAttr]):
    if value is not None:
      self.operation.attributes["tbaa"] = value
    elif "tbaa" in self.operation.attributes:
      del self.operation.attributes["tbaa"]

  @tbaa.deleter
  def tbaa(self):
    del self.operation.attributes["tbaa"]

  @builtins.property
  def res(self) -> _ods_ir.OpResult:
    return self.operation.results[0]

@_ods_cext.register_op_adaptor(RawPtrBufferAtomicCmpSwap)
class RawPtrBufferAtomicCmpSwapAdaptor(_ods_ir.OpAdaptor):
  OPERATION_NAME = "rocdl.raw.ptr.buffer.atomic.cmpswap"

  @builtins.property
  def src(self) -> _ods_ir.Value:
    return self.operands[0]

  @builtins.property
  def cmp(self) -> _ods_ir.Value:
    return self.operands[1]

  @builtins.property
  def rsrc(self) -> _ods_ir.Value:
    return self.operands[2]

  @builtins.property
  def offset(self) -> _ods_ir.Value[_ods_ir.IntegerType]:
    return self.operands[3]

  @builtins.property
  def soffset(self) -> _ods_ir.Value[_ods_ir.IntegerType]:
    return self.operands[4]

  @builtins.property
  def aux(self) -> _ods_ir.Value[_ods_ir.IntegerType]:
    return self.operands[5]

  @builtins.property
  def alias_scopes(self) -> _Optional[_ods_ir.ArrayAttr]:
    if "alias_scopes" not in self.attributes:
      return None
    return self.attributes["alias_scopes"]

  @builtins.property
  def noalias_scopes(self) -> _Optional[_ods_ir.ArrayAttr]:
    if "noalias_scopes" not in self.attributes:
      return None
    return self.attributes["noalias_scopes"]

  @builtins.property
  def tbaa(self) -> _Optional[_ods_ir.ArrayAttr]:
    if "tbaa" not in self.attributes:
      return None
    return self.attributes["tbaa"]

def raw_ptr_buffer_atomic_cmpswap(res: _ods_ir.Type, src: _ods_ir.Value, cmp: _ods_ir.Value, rsrc: _ods_ir.Value, offset: _ods_ir.Value[_ods_ir.IntegerType], soffset: _ods_ir.Value[_ods_ir.IntegerType], aux: _ods_ir.Value[_ods_ir.IntegerType], *, alias_scopes: _Optional[_Union[_Any, _ods_ir.ArrayAttr]] = None, noalias_scopes: _Optional[_Union[_Any, _ods_ir.ArrayAttr]] = None, tbaa: _Optional[_Union[_Any, _ods_ir.ArrayAttr]] = None, loc: _Optional[_ods_ir.Location] = None, ip: _Optional[_ods_ir.InsertionPoint] = None) -> _ods_ir.OpResult:
  return RawPtrBufferAtomicCmpSwap(res=res, src=src, cmp=cmp, rsrc=rsrc, offset=offset, soffset=soffset, aux=aux, alias_scopes=alias_scopes, noalias_scopes=noalias_scopes, tbaa=tbaa, loc=loc, ip=ip).result

@_ods_cext.register_operation(_Dialect)
class RawPtrBufferAtomicFaddOp(_ods_ir.OpView):
  OPERATION_NAME = "rocdl.raw.ptr.buffer.atomic.fadd"

  _ODS_REGIONS = (0, True)

  def __init__(self, vdata: _ods_ir.Value, rsrc: _ods_ir.Value, offset: _ods_ir.Value[_ods_ir.IntegerType], soffset: _ods_ir.Value[_ods_ir.IntegerType], aux: _ods_ir.Value[_ods_ir.IntegerType], *, alias_scopes: _Optional[_Union[_Any, _ods_ir.ArrayAttr]] = None, noalias_scopes: _Optional[_Union[_Any, _ods_ir.ArrayAttr]] = None, tbaa: _Optional[_Union[_Any, _ods_ir.ArrayAttr]] = None, loc: _Optional[_ods_ir.Location] = None, ip: _Optional[_ods_ir.InsertionPoint] = None):
    operands = []
    attributes = {}
    regions = None
    operands.append(vdata)
    operands.append(rsrc)
    operands.append(offset)
    operands.append(soffset)
    operands.append(aux)
    _ods_context = _ods_get_default_loc_context(loc)
    if alias_scopes is not None: attributes["alias_scopes"] = (alias_scopes if (
        isinstance(alias_scopes, _ods_ir.Attribute) or
        not _ods_ir.AttrBuilder.contains('LLVM_AliasScopeArrayAttr')) else
          _ods_ir.AttrBuilder.get('LLVM_AliasScopeArrayAttr')(alias_scopes, context=_ods_context))
    if noalias_scopes is not None: attributes["noalias_scopes"] = (noalias_scopes if (
        isinstance(noalias_scopes, _ods_ir.Attribute) or
        not _ods_ir.AttrBuilder.contains('LLVM_AliasScopeArrayAttr')) else
          _ods_ir.AttrBuilder.get('LLVM_AliasScopeArrayAttr')(noalias_scopes, context=_ods_context))
    if tbaa is not None: attributes["tbaa"] = (tbaa if (
        isinstance(tbaa, _ods_ir.Attribute) or
        not _ods_ir.AttrBuilder.contains('LLVM_TBAATagArrayAttr')) else
          _ods_ir.AttrBuilder.get('LLVM_TBAATagArrayAttr')(tbaa, context=_ods_context))
    results = []
    _ods_successors = None
    super().__init__(self.OPERATION_NAME, self._ODS_REGIONS, self._ODS_OPERAND_SEGMENTS, self._ODS_RESULT_SEGMENTS, attributes=attributes, results=results, operands=operands, successors=_ods_successors, regions=regions, loc=loc, ip=ip)

  @builtins.property
  def vdata(self) -> _ods_ir.Value:
    return self.operation.operands[0]

  @builtins.property
  def rsrc(self) -> _ods_ir.Value:
    return self.operation.operands[1]

  @builtins.property
  def offset(self) -> _ods_ir.Value[_ods_ir.IntegerType]:
    return self.operation.operands[2]

  @builtins.property
  def soffset(self) -> _ods_ir.Value[_ods_ir.IntegerType]:
    return self.operation.operands[3]

  @builtins.property
  def aux(self) -> _ods_ir.Value[_ods_ir.IntegerType]:
    return self.operation.operands[4]

  @builtins.property
  def alias_scopes(self) -> _Optional[_ods_ir.ArrayAttr]:
    if "alias_scopes" not in self.operation.attributes:
      return None
    return self.operation.attributes["alias_scopes"]

  @alias_scopes.setter
  def alias_scopes(self, value: _Optional[_ods_ir.ArrayAttr]):
    if value is not None:
      self.operation.attributes["alias_scopes"] = value
    elif "alias_scopes" in self.operation.attributes:
      del self.operation.attributes["alias_scopes"]

  @alias_scopes.deleter
  def alias_scopes(self):
    del self.operation.attributes["alias_scopes"]

  @builtins.property
  def noalias_scopes(self) -> _Optional[_ods_ir.ArrayAttr]:
    if "noalias_scopes" not in self.operation.attributes:
      return None
    return self.operation.attributes["noalias_scopes"]

  @noalias_scopes.setter
  def noalias_scopes(self, value: _Optional[_ods_ir.ArrayAttr]):
    if value is not None:
      self.operation.attributes["noalias_scopes"] = value
    elif "noalias_scopes" in self.operation.attributes:
      del self.operation.attributes["noalias_scopes"]

  @noalias_scopes.deleter
  def noalias_scopes(self):
    del self.operation.attributes["noalias_scopes"]

  @builtins.property
  def tbaa(self) -> _Optional[_ods_ir.ArrayAttr]:
    if "tbaa" not in self.operation.attributes:
      return None
    return self.operation.attributes["tbaa"]

  @tbaa.setter
  def tbaa(self, value: _Optional[_ods_ir.ArrayAttr]):
    if value is not None:
      self.operation.attributes["tbaa"] = value
    elif "tbaa" in self.operation.attributes:
      del self.operation.attributes["tbaa"]

  @tbaa.deleter
  def tbaa(self):
    del self.operation.attributes["tbaa"]

@_ods_cext.register_op_adaptor(RawPtrBufferAtomicFaddOp)
class RawPtrBufferAtomicFaddOpAdaptor(_ods_ir.OpAdaptor):
  OPERATION_NAME = "rocdl.raw.ptr.buffer.atomic.fadd"

  @builtins.property
  def vdata(self) -> _ods_ir.Value:
    return self.operands[0]

  @builtins.property
  def rsrc(self) -> _ods_ir.Value:
    return self.operands[1]

  @builtins.property
  def offset(self) -> _ods_ir.Value[_ods_ir.IntegerType]:
    return self.operands[2]

  @builtins.property
  def soffset(self) -> _ods_ir.Value[_ods_ir.IntegerType]:
    return self.operands[3]

  @builtins.property
  def aux(self) -> _ods_ir.Value[_ods_ir.IntegerType]:
    return self.operands[4]

  @builtins.property
  def alias_scopes(self) -> _Optional[_ods_ir.ArrayAttr]:
    if "alias_scopes" not in self.attributes:
      return None
    return self.attributes["alias_scopes"]

  @builtins.property
  def noalias_scopes(self) -> _Optional[_ods_ir.ArrayAttr]:
    if "noalias_scopes" not in self.attributes:
      return None
    return self.attributes["noalias_scopes"]

  @builtins.property
  def tbaa(self) -> _Optional[_ods_ir.ArrayAttr]:
    if "tbaa" not in self.attributes:
      return None
    return self.attributes["tbaa"]

def raw_ptr_buffer_atomic_fadd(vdata: _ods_ir.Value, rsrc: _ods_ir.Value, offset: _ods_ir.Value[_ods_ir.IntegerType], soffset: _ods_ir.Value[_ods_ir.IntegerType], aux: _ods_ir.Value[_ods_ir.IntegerType], *, alias_scopes: _Optional[_Union[_Any, _ods_ir.ArrayAttr]] = None, noalias_scopes: _Optional[_Union[_Any, _ods_ir.ArrayAttr]] = None, tbaa: _Optional[_Union[_Any, _ods_ir.ArrayAttr]] = None, loc: _Optional[_ods_ir.Location] = None, ip: _Optional[_ods_ir.InsertionPoint] = None) -> RawPtrBufferAtomicFaddOp:
  return RawPtrBufferAtomicFaddOp(vdata=vdata, rsrc=rsrc, offset=offset, soffset=soffset, aux=aux, alias_scopes=alias_scopes, noalias_scopes=noalias_scopes, tbaa=tbaa, loc=loc, ip=ip)

@_ods_cext.register_operation(_Dialect)
class RawPtrBufferAtomicFmaxOp(_ods_ir.OpView):
  OPERATION_NAME = "rocdl.raw.ptr.buffer.atomic.fmax"

  _ODS_REGIONS = (0, True)

  def __init__(self, vdata: _ods_ir.Value, rsrc: _ods_ir.Value, offset: _ods_ir.Value[_ods_ir.IntegerType], soffset: _ods_ir.Value[_ods_ir.IntegerType], aux: _ods_ir.Value[_ods_ir.IntegerType], *, alias_scopes: _Optional[_Union[_Any, _ods_ir.ArrayAttr]] = None, noalias_scopes: _Optional[_Union[_Any, _ods_ir.ArrayAttr]] = None, tbaa: _Optional[_Union[_Any, _ods_ir.ArrayAttr]] = None, loc: _Optional[_ods_ir.Location] = None, ip: _Optional[_ods_ir.InsertionPoint] = None):
    operands = []
    attributes = {}
    regions = None
    operands.append(vdata)
    operands.append(rsrc)
    operands.append(offset)
    operands.append(soffset)
    operands.append(aux)
    _ods_context = _ods_get_default_loc_context(loc)
    if alias_scopes is not None: attributes["alias_scopes"] = (alias_scopes if (
        isinstance(alias_scopes, _ods_ir.Attribute) or
        not _ods_ir.AttrBuilder.contains('LLVM_AliasScopeArrayAttr')) else
          _ods_ir.AttrBuilder.get('LLVM_AliasScopeArrayAttr')(alias_scopes, context=_ods_context))
    if noalias_scopes is not None: attributes["noalias_scopes"] = (noalias_scopes if (
        isinstance(noalias_scopes, _ods_ir.Attribute) or
        not _ods_ir.AttrBuilder.contains('LLVM_AliasScopeArrayAttr')) else
          _ods_ir.AttrBuilder.get('LLVM_AliasScopeArrayAttr')(noalias_scopes, context=_ods_context))
    if tbaa is not None: attributes["tbaa"] = (tbaa if (
        isinstance(tbaa, _ods_ir.Attribute) or
        not _ods_ir.AttrBuilder.contains('LLVM_TBAATagArrayAttr')) else
          _ods_ir.AttrBuilder.get('LLVM_TBAATagArrayAttr')(tbaa, context=_ods_context))
    results = []
    _ods_successors = None
    super().__init__(self.OPERATION_NAME, self._ODS_REGIONS, self._ODS_OPERAND_SEGMENTS, self._ODS_RESULT_SEGMENTS, attributes=attributes, results=results, operands=operands, successors=_ods_successors, regions=regions, loc=loc, ip=ip)

  @builtins.property
  def vdata(self) -> _ods_ir.Value:
    return self.operation.operands[0]

  @builtins.property
  def rsrc(self) -> _ods_ir.Value:
    return self.operation.operands[1]

  @builtins.property
  def offset(self) -> _ods_ir.Value[_ods_ir.IntegerType]:
    return self.operation.operands[2]

  @builtins.property
  def soffset(self) -> _ods_ir.Value[_ods_ir.IntegerType]:
    return self.operation.operands[3]

  @builtins.property
  def aux(self) -> _ods_ir.Value[_ods_ir.IntegerType]:
    return self.operation.operands[4]

  @builtins.property
  def alias_scopes(self) -> _Optional[_ods_ir.ArrayAttr]:
    if "alias_scopes" not in self.operation.attributes:
      return None
    return self.operation.attributes["alias_scopes"]

  @alias_scopes.setter
  def alias_scopes(self, value: _Optional[_ods_ir.ArrayAttr]):
    if value is not None:
      self.operation.attributes["alias_scopes"] = value
    elif "alias_scopes" in self.operation.attributes:
      del self.operation.attributes["alias_scopes"]

  @alias_scopes.deleter
  def alias_scopes(self):
    del self.operation.attributes["alias_scopes"]

  @builtins.property
  def noalias_scopes(self) -> _Optional[_ods_ir.ArrayAttr]:
    if "noalias_scopes" not in self.operation.attributes:
      return None
    return self.operation.attributes["noalias_scopes"]

  @noalias_scopes.setter
  def noalias_scopes(self, value: _Optional[_ods_ir.ArrayAttr]):
    if value is not None:
      self.operation.attributes["noalias_scopes"] = value
    elif "noalias_scopes" in self.operation.attributes:
      del self.operation.attributes["noalias_scopes"]

  @noalias_scopes.deleter
  def noalias_scopes(self):
    del self.operation.attributes["noalias_scopes"]

  @builtins.property
  def tbaa(self) -> _Optional[_ods_ir.ArrayAttr]:
    if "tbaa" not in self.operation.attributes:
      return None
    return self.operation.attributes["tbaa"]

  @tbaa.setter
  def tbaa(self, value: _Optional[_ods_ir.ArrayAttr]):
    if value is not None:
      self.operation.attributes["tbaa"] = value
    elif "tbaa" in self.operation.attributes:
      del self.operation.attributes["tbaa"]

  @tbaa.deleter
  def tbaa(self):
    del self.operation.attributes["tbaa"]

@_ods_cext.register_op_adaptor(RawPtrBufferAtomicFmaxOp)
class RawPtrBufferAtomicFmaxOpAdaptor(_ods_ir.OpAdaptor):
  OPERATION_NAME = "rocdl.raw.ptr.buffer.atomic.fmax"

  @builtins.property
  def vdata(self) -> _ods_ir.Value:
    return self.operands[0]

  @builtins.property
  def rsrc(self) -> _ods_ir.Value:
    return self.operands[1]

  @builtins.property
  def offset(self) -> _ods_ir.Value[_ods_ir.IntegerType]:
    return self.operands[2]

  @builtins.property
  def soffset(self) -> _ods_ir.Value[_ods_ir.IntegerType]:
    return self.operands[3]

  @builtins.property
  def aux(self) -> _ods_ir.Value[_ods_ir.IntegerType]:
    return self.operands[4]

  @builtins.property
  def alias_scopes(self) -> _Optional[_ods_ir.ArrayAttr]:
    if "alias_scopes" not in self.attributes:
      return None
    return self.attributes["alias_scopes"]

  @builtins.property
  def noalias_scopes(self) -> _Optional[_ods_ir.ArrayAttr]:
    if "noalias_scopes" not in self.attributes:
      return None
    return self.attributes["noalias_scopes"]

  @builtins.property
  def tbaa(self) -> _Optional[_ods_ir.ArrayAttr]:
    if "tbaa" not in self.attributes:
      return None
    return self.attributes["tbaa"]

def raw_ptr_buffer_atomic_fmax(vdata: _ods_ir.Value, rsrc: _ods_ir.Value, offset: _ods_ir.Value[_ods_ir.IntegerType], soffset: _ods_ir.Value[_ods_ir.IntegerType], aux: _ods_ir.Value[_ods_ir.IntegerType], *, alias_scopes: _Optional[_Union[_Any, _ods_ir.ArrayAttr]] = None, noalias_scopes: _Optional[_Union[_Any, _ods_ir.ArrayAttr]] = None, tbaa: _Optional[_Union[_Any, _ods_ir.ArrayAttr]] = None, loc: _Optional[_ods_ir.Location] = None, ip: _Optional[_ods_ir.InsertionPoint] = None) -> RawPtrBufferAtomicFmaxOp:
  return RawPtrBufferAtomicFmaxOp(vdata=vdata, rsrc=rsrc, offset=offset, soffset=soffset, aux=aux, alias_scopes=alias_scopes, noalias_scopes=noalias_scopes, tbaa=tbaa, loc=loc, ip=ip)

@_ods_cext.register_operation(_Dialect)
class RawPtrBufferAtomicSmaxOp(_ods_ir.OpView):
  OPERATION_NAME = "rocdl.raw.ptr.buffer.atomic.smax"

  _ODS_REGIONS = (0, True)

  def __init__(self, vdata: _ods_ir.Value, rsrc: _ods_ir.Value, offset: _ods_ir.Value[_ods_ir.IntegerType], soffset: _ods_ir.Value[_ods_ir.IntegerType], aux: _ods_ir.Value[_ods_ir.IntegerType], *, alias_scopes: _Optional[_Union[_Any, _ods_ir.ArrayAttr]] = None, noalias_scopes: _Optional[_Union[_Any, _ods_ir.ArrayAttr]] = None, tbaa: _Optional[_Union[_Any, _ods_ir.ArrayAttr]] = None, loc: _Optional[_ods_ir.Location] = None, ip: _Optional[_ods_ir.InsertionPoint] = None):
    operands = []
    attributes = {}
    regions = None
    operands.append(vdata)
    operands.append(rsrc)
    operands.append(offset)
    operands.append(soffset)
    operands.append(aux)
    _ods_context = _ods_get_default_loc_context(loc)
    if alias_scopes is not None: attributes["alias_scopes"] = (alias_scopes if (
        isinstance(alias_scopes, _ods_ir.Attribute) or
        not _ods_ir.AttrBuilder.contains('LLVM_AliasScopeArrayAttr')) else
          _ods_ir.AttrBuilder.get('LLVM_AliasScopeArrayAttr')(alias_scopes, context=_ods_context))
    if noalias_scopes is not None: attributes["noalias_scopes"] = (noalias_scopes if (
        isinstance(noalias_scopes, _ods_ir.Attribute) or
        not _ods_ir.AttrBuilder.contains('LLVM_AliasScopeArrayAttr')) else
          _ods_ir.AttrBuilder.get('LLVM_AliasScopeArrayAttr')(noalias_scopes, context=_ods_context))
    if tbaa is not None: attributes["tbaa"] = (tbaa if (
        isinstance(tbaa, _ods_ir.Attribute) or
        not _ods_ir.AttrBuilder.contains('LLVM_TBAATagArrayAttr')) else
          _ods_ir.AttrBuilder.get('LLVM_TBAATagArrayAttr')(tbaa, context=_ods_context))
    results = []
    _ods_successors = None
    super().__init__(self.OPERATION_NAME, self._ODS_REGIONS, self._ODS_OPERAND_SEGMENTS, self._ODS_RESULT_SEGMENTS, attributes=attributes, results=results, operands=operands, successors=_ods_successors, regions=regions, loc=loc, ip=ip)

  @builtins.property
  def vdata(self) -> _ods_ir.Value:
    return self.operation.operands[0]

  @builtins.property
  def rsrc(self) -> _ods_ir.Value:
    return self.operation.operands[1]

  @builtins.property
  def offset(self) -> _ods_ir.Value[_ods_ir.IntegerType]:
    return self.operation.operands[2]

  @builtins.property
  def soffset(self) -> _ods_ir.Value[_ods_ir.IntegerType]:
    return self.operation.operands[3]

  @builtins.property
  def aux(self) -> _ods_ir.Value[_ods_ir.IntegerType]:
    return self.operation.operands[4]

  @builtins.property
  def alias_scopes(self) -> _Optional[_ods_ir.ArrayAttr]:
    if "alias_scopes" not in self.operation.attributes:
      return None
    return self.operation.attributes["alias_scopes"]

  @alias_scopes.setter
  def alias_scopes(self, value: _Optional[_ods_ir.ArrayAttr]):
    if value is not None:
      self.operation.attributes["alias_scopes"] = value
    elif "alias_scopes" in self.operation.attributes:
      del self.operation.attributes["alias_scopes"]

  @alias_scopes.deleter
  def alias_scopes(self):
    del self.operation.attributes["alias_scopes"]

  @builtins.property
  def noalias_scopes(self) -> _Optional[_ods_ir.ArrayAttr]:
    if "noalias_scopes" not in self.operation.attributes:
      return None
    return self.operation.attributes["noalias_scopes"]

  @noalias_scopes.setter
  def noalias_scopes(self, value: _Optional[_ods_ir.ArrayAttr]):
    if value is not None:
      self.operation.attributes["noalias_scopes"] = value
    elif "noalias_scopes" in self.operation.attributes:
      del self.operation.attributes["noalias_scopes"]

  @noalias_scopes.deleter
  def noalias_scopes(self):
    del self.operation.attributes["noalias_scopes"]

  @builtins.property
  def tbaa(self) -> _Optional[_ods_ir.ArrayAttr]:
    if "tbaa" not in self.operation.attributes:
      return None
    return self.operation.attributes["tbaa"]

  @tbaa.setter
  def tbaa(self, value: _Optional[_ods_ir.ArrayAttr]):
    if value is not None:
      self.operation.attributes["tbaa"] = value
    elif "tbaa" in self.operation.attributes:
      del self.operation.attributes["tbaa"]

  @tbaa.deleter
  def tbaa(self):
    del self.operation.attributes["tbaa"]

@_ods_cext.register_op_adaptor(RawPtrBufferAtomicSmaxOp)
class RawPtrBufferAtomicSmaxOpAdaptor(_ods_ir.OpAdaptor):
  OPERATION_NAME = "rocdl.raw.ptr.buffer.atomic.smax"

  @builtins.property
  def vdata(self) -> _ods_ir.Value:
    return self.operands[0]

  @builtins.property
  def rsrc(self) -> _ods_ir.Value:
    return self.operands[1]

  @builtins.property
  def offset(self) -> _ods_ir.Value[_ods_ir.IntegerType]:
    return self.operands[2]

  @builtins.property
  def soffset(self) -> _ods_ir.Value[_ods_ir.IntegerType]:
    return self.operands[3]

  @builtins.property
  def aux(self) -> _ods_ir.Value[_ods_ir.IntegerType]:
    return self.operands[4]

  @builtins.property
  def alias_scopes(self) -> _Optional[_ods_ir.ArrayAttr]:
    if "alias_scopes" not in self.attributes:
      return None
    return self.attributes["alias_scopes"]

  @builtins.property
  def noalias_scopes(self) -> _Optional[_ods_ir.ArrayAttr]:
    if "noalias_scopes" not in self.attributes:
      return None
    return self.attributes["noalias_scopes"]

  @builtins.property
  def tbaa(self) -> _Optional[_ods_ir.ArrayAttr]:
    if "tbaa" not in self.attributes:
      return None
    return self.attributes["tbaa"]

def raw_ptr_buffer_atomic_smax(vdata: _ods_ir.Value, rsrc: _ods_ir.Value, offset: _ods_ir.Value[_ods_ir.IntegerType], soffset: _ods_ir.Value[_ods_ir.IntegerType], aux: _ods_ir.Value[_ods_ir.IntegerType], *, alias_scopes: _Optional[_Union[_Any, _ods_ir.ArrayAttr]] = None, noalias_scopes: _Optional[_Union[_Any, _ods_ir.ArrayAttr]] = None, tbaa: _Optional[_Union[_Any, _ods_ir.ArrayAttr]] = None, loc: _Optional[_ods_ir.Location] = None, ip: _Optional[_ods_ir.InsertionPoint] = None) -> RawPtrBufferAtomicSmaxOp:
  return RawPtrBufferAtomicSmaxOp(vdata=vdata, rsrc=rsrc, offset=offset, soffset=soffset, aux=aux, alias_scopes=alias_scopes, noalias_scopes=noalias_scopes, tbaa=tbaa, loc=loc, ip=ip)

@_ods_cext.register_operation(_Dialect)
class RawPtrBufferAtomicUminOp(_ods_ir.OpView):
  OPERATION_NAME = "rocdl.raw.ptr.buffer.atomic.umin"

  _ODS_REGIONS = (0, True)

  def __init__(self, vdata: _ods_ir.Value, rsrc: _ods_ir.Value, offset: _ods_ir.Value[_ods_ir.IntegerType], soffset: _ods_ir.Value[_ods_ir.IntegerType], aux: _ods_ir.Value[_ods_ir.IntegerType], *, alias_scopes: _Optional[_Union[_Any, _ods_ir.ArrayAttr]] = None, noalias_scopes: _Optional[_Union[_Any, _ods_ir.ArrayAttr]] = None, tbaa: _Optional[_Union[_Any, _ods_ir.ArrayAttr]] = None, loc: _Optional[_ods_ir.Location] = None, ip: _Optional[_ods_ir.InsertionPoint] = None):
    operands = []
    attributes = {}
    regions = None
    operands.append(vdata)
    operands.append(rsrc)
    operands.append(offset)
    operands.append(soffset)
    operands.append(aux)
    _ods_context = _ods_get_default_loc_context(loc)
    if alias_scopes is not None: attributes["alias_scopes"] = (alias_scopes if (
        isinstance(alias_scopes, _ods_ir.Attribute) or
        not _ods_ir.AttrBuilder.contains('LLVM_AliasScopeArrayAttr')) else
          _ods_ir.AttrBuilder.get('LLVM_AliasScopeArrayAttr')(alias_scopes, context=_ods_context))
    if noalias_scopes is not None: attributes["noalias_scopes"] = (noalias_scopes if (
        isinstance(noalias_scopes, _ods_ir.Attribute) or
        not _ods_ir.AttrBuilder.contains('LLVM_AliasScopeArrayAttr')) else
          _ods_ir.AttrBuilder.get('LLVM_AliasScopeArrayAttr')(noalias_scopes, context=_ods_context))
    if tbaa is not None: attributes["tbaa"] = (tbaa if (
        isinstance(tbaa, _ods_ir.Attribute) or
        not _ods_ir.AttrBuilder.contains('LLVM_TBAATagArrayAttr')) else
          _ods_ir.AttrBuilder.get('LLVM_TBAATagArrayAttr')(tbaa, context=_ods_context))
    results = []
    _ods_successors = None
    super().__init__(self.OPERATION_NAME, self._ODS_REGIONS, self._ODS_OPERAND_SEGMENTS, self._ODS_RESULT_SEGMENTS, attributes=attributes, results=results, operands=operands, successors=_ods_successors, regions=regions, loc=loc, ip=ip)

  @builtins.property
  def vdata(self) -> _ods_ir.Value:
    return self.operation.operands[0]

  @builtins.property
  def rsrc(self) -> _ods_ir.Value:
    return self.operation.operands[1]

  @builtins.property
  def offset(self) -> _ods_ir.Value[_ods_ir.IntegerType]:
    return self.operation.operands[2]

  @builtins.property
  def soffset(self) -> _ods_ir.Value[_ods_ir.IntegerType]:
    return self.operation.operands[3]

  @builtins.property
  def aux(self) -> _ods_ir.Value[_ods_ir.IntegerType]:
    return self.operation.operands[4]

  @builtins.property
  def alias_scopes(self) -> _Optional[_ods_ir.ArrayAttr]:
    if "alias_scopes" not in self.operation.attributes:
      return None
    return self.operation.attributes["alias_scopes"]

  @alias_scopes.setter
  def alias_scopes(self, value: _Optional[_ods_ir.ArrayAttr]):
    if value is not None:
      self.operation.attributes["alias_scopes"] = value
    elif "alias_scopes" in self.operation.attributes:
      del self.operation.attributes["alias_scopes"]

  @alias_scopes.deleter
  def alias_scopes(self):
    del self.operation.attributes["alias_scopes"]

  @builtins.property
  def noalias_scopes(self) -> _Optional[_ods_ir.ArrayAttr]:
    if "noalias_scopes" not in self.operation.attributes:
      return None
    return self.operation.attributes["noalias_scopes"]

  @noalias_scopes.setter
  def noalias_scopes(self, value: _Optional[_ods_ir.ArrayAttr]):
    if value is not None:
      self.operation.attributes["noalias_scopes"] = value
    elif "noalias_scopes" in self.operation.attributes:
      del self.operation.attributes["noalias_scopes"]

  @noalias_scopes.deleter
  def noalias_scopes(self):
    del self.operation.attributes["noalias_scopes"]

  @builtins.property
  def tbaa(self) -> _Optional[_ods_ir.ArrayAttr]:
    if "tbaa" not in self.operation.attributes:
      return None
    return self.operation.attributes["tbaa"]

  @tbaa.setter
  def tbaa(self, value: _Optional[_ods_ir.ArrayAttr]):
    if value is not None:
      self.operation.attributes["tbaa"] = value
    elif "tbaa" in self.operation.attributes:
      del self.operation.attributes["tbaa"]

  @tbaa.deleter
  def tbaa(self):
    del self.operation.attributes["tbaa"]

@_ods_cext.register_op_adaptor(RawPtrBufferAtomicUminOp)
class RawPtrBufferAtomicUminOpAdaptor(_ods_ir.OpAdaptor):
  OPERATION_NAME = "rocdl.raw.ptr.buffer.atomic.umin"

  @builtins.property
  def vdata(self) -> _ods_ir.Value:
    return self.operands[0]

  @builtins.property
  def rsrc(self) -> _ods_ir.Value:
    return self.operands[1]

  @builtins.property
  def offset(self) -> _ods_ir.Value[_ods_ir.IntegerType]:
    return self.operands[2]

  @builtins.property
  def soffset(self) -> _ods_ir.Value[_ods_ir.IntegerType]:
    return self.operands[3]

  @builtins.property
  def aux(self) -> _ods_ir.Value[_ods_ir.IntegerType]:
    return self.operands[4]

  @builtins.property
  def alias_scopes(self) -> _Optional[_ods_ir.ArrayAttr]:
    if "alias_scopes" not in self.attributes:
      return None
    return self.attributes["alias_scopes"]

  @builtins.property
  def noalias_scopes(self) -> _Optional[_ods_ir.ArrayAttr]:
    if "noalias_scopes" not in self.attributes:
      return None
    return self.attributes["noalias_scopes"]

  @builtins.property
  def tbaa(self) -> _Optional[_ods_ir.ArrayAttr]:
    if "tbaa" not in self.attributes:
      return None
    return self.attributes["tbaa"]

def raw_ptr_buffer_atomic_umin(vdata: _ods_ir.Value, rsrc: _ods_ir.Value, offset: _ods_ir.Value[_ods_ir.IntegerType], soffset: _ods_ir.Value[_ods_ir.IntegerType], aux: _ods_ir.Value[_ods_ir.IntegerType], *, alias_scopes: _Optional[_Union[_Any, _ods_ir.ArrayAttr]] = None, noalias_scopes: _Optional[_Union[_Any, _ods_ir.ArrayAttr]] = None, tbaa: _Optional[_Union[_Any, _ods_ir.ArrayAttr]] = None, loc: _Optional[_ods_ir.Location] = None, ip: _Optional[_ods_ir.InsertionPoint] = None) -> RawPtrBufferAtomicUminOp:
  return RawPtrBufferAtomicUminOp(vdata=vdata, rsrc=rsrc, offset=offset, soffset=soffset, aux=aux, alias_scopes=alias_scopes, noalias_scopes=noalias_scopes, tbaa=tbaa, loc=loc, ip=ip)

@_ods_cext.register_operation(_Dialect)
class RawPtrBufferLoadAsyncLdsOp(_ods_ir.OpView):
  r"""
  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, %aux
  ```
  """

  OPERATION_NAME = "rocdl.raw.ptr.buffer.load.async.lds"

  _ODS_REGIONS = (0, True)

  def __init__(self, rsrc: _ods_ir.Value, ldsPtr: _ods_ir.Value, size: _ods_ir.Value[_ods_ir.IntegerType], voffset: _ods_ir.Value[_ods_ir.IntegerType], soffset: _ods_ir.Value[_ods_ir.IntegerType], offset: _ods_ir.Value[_ods_ir.IntegerType], aux: _ods_ir.Value[_ods_ir.IntegerType], *, alias_scopes: _Optional[_Union[_Any, _ods_ir.ArrayAttr]] = None, noalias_scopes: _Optional[_Union[_Any, _ods_ir.ArrayAttr]] = None, tbaa: _Optional[_Union[_Any, _ods_ir.ArrayAttr]] = None, loc: _Optional[_ods_ir.Location] = None, ip: _Optional[_ods_ir.InsertionPoint] = None):
    operands = []
    attributes = {}
    regions = None
    operands.append(rsrc)
    operands.append(ldsPtr)
    operands.append(size)
    operands.append(voffset)
    operands.append(soffset)
    operands.append(offset)
    operands.append(aux)
    _ods_context = _ods_get_default_loc_context(loc)
    if alias_scopes is not None: attributes["alias_scopes"] = (alias_scopes if (
        isinstance(alias_scopes, _ods_ir.Attribute) or
        not _ods_ir.AttrBuilder.contains('LLVM_AliasScopeArrayAttr')) else
          _ods_ir.AttrBuilder.get('LLVM_AliasScopeArrayAttr')(alias_scopes, context=_ods_context))
    if noalias_scopes is not None: attributes["noalias_scopes"] = (noalias_scopes if (
        isinstance(noalias_scopes, _ods_ir.Attribute) or
        not _ods_ir.AttrBuilder.contains('LLVM_AliasScopeArrayAttr')) else
          _ods_ir.AttrBuilder.get('LLVM_AliasScopeArrayAttr')(noalias_scopes, context=_ods_context))
    if tbaa is not None: attributes["tbaa"] = (tbaa if (
        isinstance(tbaa, _ods_ir.Attribute) or
        not _ods_ir.AttrBuilder.contains('LLVM_TBAATagArrayAttr')) else
          _ods_ir.AttrBuilder.get('LLVM_TBAATagArrayAttr')(tbaa, context=_ods_context))
    results = []
    _ods_successors = None
    super().__init__(self.OPERATION_NAME, self._ODS_REGIONS, self._ODS_OPERAND_SEGMENTS, self._ODS_RESULT_SEGMENTS, attributes=attributes, results=results, operands=operands, successors=_ods_successors, regions=regions, loc=loc, ip=ip)

  @builtins.property
  def rsrc(self) -> _ods_ir.Value:
    return self.operation.operands[0]

  @builtins.property
  def ldsPtr(self) -> _ods_ir.Value:
    return self.operation.operands[1]

  @builtins.property
  def size(self) -> _ods_ir.Value[_ods_ir.IntegerType]:
    return self.operation.operands[2]

  @builtins.property
  def voffset(self) -> _ods_ir.Value[_ods_ir.IntegerType]:
    return self.operation.operands[3]

  @builtins.property
  def soffset(self) -> _ods_ir.Value[_ods_ir.IntegerType]:
    return self.operation.operands[4]

  @builtins.property
  def offset(self) -> _ods_ir.Value[_ods_ir.IntegerType]:
    return self.operation.operands[5]

  @builtins.property
  def aux(self) -> _ods_ir.Value[_ods_ir.IntegerType]:
    return self.operation.operands[6]

  @builtins.property
  def alias_scopes(self) -> _Optional[_ods_ir.ArrayAttr]:
    if "alias_scopes" not in self.operation.attributes:
      return None
    return self.operation.attributes["alias_scopes"]

  @alias_scopes.setter
  def alias_scopes(self, value: _Optional[_ods_ir.ArrayAttr]):
    if value is not None:
      self.operation.attributes["alias_scopes"] = value
    elif "alias_scopes" in self.operation.attributes:
      del self.operation.attributes["alias_scopes"]

  @alias_scopes.deleter
  def alias_scopes(self):
    del self.operation.attributes["alias_scopes"]

  @builtins.property
  def noalias_scopes(self) -> _Optional[_ods_ir.ArrayAttr]:
    if "noalias_scopes" not in self.operation.attributes:
      return None
    return self.operation.attributes["noalias_scopes"]

  @noalias_scopes.setter
  def noalias_scopes(self, value: _Optional[_ods_ir.ArrayAttr]):
    if value is not None:
      self.operation.attributes["noalias_scopes"] = value
    elif "noalias_scopes" in self.operation.attributes:
      del self.operation.attributes["noalias_scopes"]

  @noalias_scopes.deleter
  def noalias_scopes(self):
    del self.operation.attributes["noalias_scopes"]

  @builtins.property
  def tbaa(self) -> _Optional[_ods_ir.ArrayAttr]:
    if "tbaa" not in self.operation.attributes:
      return None
    return self.operation.attributes["tbaa"]

  @tbaa.setter
  def tbaa(self, value: _Optional[_ods_ir.ArrayAttr]):
    if value is not None:
      self.operation.attributes["tbaa"] = value
    elif "tbaa" in self.operation.attributes:
      del self.operation.attributes["tbaa"]

  @tbaa.deleter
  def tbaa(self):
    del self.operation.attributes["tbaa"]

@_ods_cext.register_op_adaptor(RawPtrBufferLoadAsyncLdsOp)
class RawPtrBufferLoadAsyncLdsOpAdaptor(_ods_ir.OpAdaptor):
  OPERATION_NAME = "rocdl.raw.ptr.buffer.load.async.lds"

  @builtins.property
  def rsrc(self) -> _ods_ir.Value:
    return self.operands[0]

  @builtins.property
  def ldsPtr(self) -> _ods_ir.Value:
    return self.operands[1]

  @builtins.property
  def size(self) -> _ods_ir.Value[_ods_ir.IntegerType]:
    return self.operands[2]

  @builtins.property
  def voffset(self) -> _ods_ir.Value[_ods_ir.IntegerType]:
    return self.operands[3]

  @builtins.property
  def soffset(self) -> _ods_ir.Value[_ods_ir.IntegerType]:
    return self.operands[4]

  @builtins.property
  def offset(self) -> _ods_ir.Value[_ods_ir.IntegerType]:
    return self.operands[5]

  @builtins.property
  def aux(self) -> _ods_ir.Value[_ods_ir.IntegerType]:
    return self.operands[6]

  @builtins.property
  def alias_scopes(self) -> _Optional[_ods_ir.ArrayAttr]:
    if "alias_scopes" not in self.attributes:
      return None
    return self.attributes["alias_scopes"]

  @builtins.property
  def noalias_scopes(self) -> _Optional[_ods_ir.ArrayAttr]:
    if "noalias_scopes" not in self.attributes:
      return None
    return self.attributes["noalias_scopes"]

  @builtins.property
  def tbaa(self) -> _Optional[_ods_ir.ArrayAttr]:
    if "tbaa" not in self.attributes:
      return None
    return self.attributes["tbaa"]

def raw_ptr_buffer_load_async_lds(rsrc: _ods_ir.Value, lds_ptr: _ods_ir.Value, size: _ods_ir.Value[_ods_ir.IntegerType], voffset: _ods_ir.Value[_ods_ir.IntegerType], soffset: _ods_ir.Value[_ods_ir.IntegerType], offset: _ods_ir.Value[_ods_ir.IntegerType], aux: _ods_ir.Value[_ods_ir.IntegerType], *, alias_scopes: _Optional[_Union[_Any, _ods_ir.ArrayAttr]] = None, noalias_scopes: _Optional[_Union[_Any, _ods_ir.ArrayAttr]] = None, tbaa: _Optional[_Union[_Any, _ods_ir.ArrayAttr]] = None, loc: _Optional[_ods_ir.Location] = None, ip: _Optional[_ods_ir.InsertionPoint] = None) -> RawPtrBufferLoadAsyncLdsOp:
  return RawPtrBufferLoadAsyncLdsOp(rsrc=rsrc, ldsPtr=lds_ptr, size=size, voffset=voffset, soffset=soffset, offset=offset, aux=aux, alias_scopes=alias_scopes, noalias_scopes=noalias_scopes, tbaa=tbaa, loc=loc, ip=ip)

@_ods_cext.register_operation(_Dialect)
class RawPtrBufferLoadLdsOp(_ods_ir.OpView):
  OPERATION_NAME = "rocdl.raw.ptr.buffer.load.lds"

  _ODS_REGIONS = (0, True)

  def __init__(self, rsrc: _ods_ir.Value, ldsPtr: _ods_ir.Value, size: _ods_ir.Value[_ods_ir.IntegerType], voffset: _ods_ir.Value[_ods_ir.IntegerType], soffset: _ods_ir.Value[_ods_ir.IntegerType], offset: _ods_ir.Value[_ods_ir.IntegerType], aux: _ods_ir.Value[_ods_ir.IntegerType], *, alias_scopes: _Optional[_Union[_Any, _ods_ir.ArrayAttr]] = None, noalias_scopes: _Optional[_Union[_Any, _ods_ir.ArrayAttr]] = None, tbaa: _Optional[_Union[_Any, _ods_ir.ArrayAttr]] = None, loc: _Optional[_ods_ir.Location] = None, ip: _Optional[_ods_ir.InsertionPoint] = None):
    operands = []
    attributes = {}
    regions = None
    operands.append(rsrc)
    operands.append(ldsPtr)
    operands.append(size)
    operands.append(voffset)
    operands.append(soffset)
    operands.append(offset)
    operands.append(aux)
    _ods_context = _ods_get_default_loc_context(loc)
    if alias_scopes is not None: attributes["alias_scopes"] = (alias_scopes if (
        isinstance(alias_scopes, _ods_ir.Attribute) or
        not _ods_ir.AttrBuilder.contains('LLVM_AliasScopeArrayAttr')) else
          _ods_ir.AttrBuilder.get('LLVM_AliasScopeArrayAttr')(alias_scopes, context=_ods_context))
    if noalias_scopes is not None: attributes["noalias_scopes"] = (noalias_scopes if (
        isinstance(noalias_scopes, _ods_ir.Attribute) or
        not _ods_ir.AttrBuilder.contains('LLVM_AliasScopeArrayAttr')) else
          _ods_ir.AttrBuilder.get('LLVM_AliasScopeArrayAttr')(noalias_scopes, context=_ods_context))
    if tbaa is not None: attributes["tbaa"] = (tbaa if (
        isinstance(tbaa, _ods_ir.Attribute) or
        not _ods_ir.AttrBuilder.contains('LLVM_TBAATagArrayAttr')) else
          _ods_ir.AttrBuilder.get('LLVM_TBAATagArrayAttr')(tbaa, context=_ods_context))
    results = []
    _ods_successors = None
    super().__init__(self.OPERATION_NAME, self._ODS_REGIONS, self._ODS_OPERAND_SEGMENTS, self._ODS_RESULT_SEGMENTS, attributes=attributes, results=results, operands=operands, successors=_ods_successors, regions=regions, loc=loc, ip=ip)

  @builtins.property
  def rsrc(self) -> _ods_ir.Value:
    return self.operation.operands[0]

  @builtins.property
  def ldsPtr(self) -> _ods_ir.Value:
    return self.operation.operands[1]

  @builtins.property
  def size(self) -> _ods_ir.Value[_ods_ir.IntegerType]:
    return self.operation.operands[2]

  @builtins.property
  def voffset(self) -> _ods_ir.Value[_ods_ir.IntegerType]:
    return self.operation.operands[3]

  @builtins.property
  def soffset(self) -> _ods_ir.Value[_ods_ir.IntegerType]:
    return self.operation.operands[4]

  @builtins.property
  def offset(self) -> _ods_ir.Value[_ods_ir.IntegerType]:
    return self.operation.operands[5]

  @builtins.property
  def aux(self) -> _ods_ir.Value[_ods_ir.IntegerType]:
    return self.operation.operands[6]

  @builtins.property
  def alias_scopes(self) -> _Optional[_ods_ir.ArrayAttr]:
    if "alias_scopes" not in self.operation.attributes:
      return None
    return self.operation.attributes["alias_scopes"]

  @alias_scopes.setter
  def alias_scopes(self, value: _Optional[_ods_ir.ArrayAttr]):
    if value is not None:
      self.operation.attributes["alias_scopes"] = value
    elif "alias_scopes" in self.operation.attributes:
      del self.operation.attributes["alias_scopes"]

  @alias_scopes.deleter
  def alias_scopes(self):
    del self.operation.attributes["alias_scopes"]

  @builtins.property
  def noalias_scopes(self) -> _Optional[_ods_ir.ArrayAttr]:
    if "noalias_scopes" not in self.operation.attributes:
      return None
    return self.operation.attributes["noalias_scopes"]

  @noalias_scopes.setter
  def noalias_scopes(self, value: _Optional[_ods_ir.ArrayAttr]):
    if value is not None:
      self.operation.attributes["noalias_scopes"] = value
    elif "noalias_scopes" in self.operation.attributes:
      del self.operation.attributes["noalias_scopes"]

  @noalias_scopes.deleter
  def noalias_scopes(self):
    del self.operation.attributes["noalias_scopes"]

  @builtins.property
  def tbaa(self) -> _Optional[_ods_ir.ArrayAttr]:
    if "tbaa" not in self.operation.attributes:
      return None
    return self.operation.attributes["tbaa"]

  @tbaa.setter
  def tbaa(self, value: _Optional[_ods_ir.ArrayAttr]):
    if value is not None:
      self.operation.attributes["tbaa"] = value
    elif "tbaa" in self.operation.attributes:
      del self.operation.attributes["tbaa"]

  @tbaa.deleter
  def tbaa(self):
    del self.operation.attributes["tbaa"]

@_ods_cext.register_op_adaptor(RawPtrBufferLoadLdsOp)
class RawPtrBufferLoadLdsOpAdaptor(_ods_ir.OpAdaptor):
  OPERATION_NAME = "rocdl.raw.ptr.buffer.load.lds"

  @builtins.property
  def rsrc(self) -> _ods_ir.Value:
    return self.operands[0]

  @builtins.property
  def ldsPtr(self) -> _ods_ir.Value:
    return self.operands[1]

  @builtins.property
  def size(self) -> _ods_ir.Value[_ods_ir.IntegerType]:
    return self.operands[2]

  @builtins.property
  def voffset(self) -> _ods_ir.Value[_ods_ir.IntegerType]:
    return self.operands[3]

  @builtins.property
  def soffset(self) -> _ods_ir.Value[_ods_ir.IntegerType]:
    return self.operands[4]

  @builtins.property
  def offset(self) -> _ods_ir.Value[_ods_ir.IntegerType]:
    return self.operands[5]

  @builtins.property
  def aux(self) -> _ods_ir.Value[_ods_ir.IntegerType]:
    return self.operands[6]

  @builtins.property
  def alias_scopes(self) -> _Optional[_ods_ir.ArrayAttr]:
    if "alias_scopes" not in self.attributes:
      return None
    return self.attributes["alias_scopes"]

  @builtins.property
  def noalias_scopes(self) -> _Optional[_ods_ir.ArrayAttr]:
    if "noalias_scopes" not in self.attributes:
      return None
    return self.attributes["noalias_scopes"]

  @builtins.property
  def tbaa(self) -> _Optional[_ods_ir.ArrayAttr]:
    if "tbaa" not in self.attributes:
      return None
    return self.attributes["tbaa"]

def raw_ptr_buffer_load_lds(rsrc: _ods_ir.Value, lds_ptr: _ods_ir.Value, size: _ods_ir.Value[_ods_ir.IntegerType], voffset: _ods_ir.Value[_ods_ir.IntegerType], soffset: _ods_ir.Value[_ods_ir.IntegerType], offset: _ods_ir.Value[_ods_ir.IntegerType], aux: _ods_ir.Value[_ods_ir.IntegerType], *, alias_scopes: _Optional[_Union[_Any, _ods_ir.ArrayAttr]] = None, noalias_scopes: _Optional[_Union[_Any, _ods_ir.ArrayAttr]] = None, tbaa: _Optional[_Union[_Any, _ods_ir.ArrayAttr]] = None, loc: _Optional[_ods_ir.Location] = None, ip: _Optional[_ods_ir.InsertionPoint] = None) -> RawPtrBufferLoadLdsOp:
  return RawPtrBufferLoadLdsOp(rsrc=rsrc, ldsPtr=lds_ptr, size=size, voffset=voffset, soffset=soffset, offset=offset, aux=aux, alias_scopes=alias_scopes, noalias_scopes=noalias_scopes, tbaa=tbaa, loc=loc, ip=ip)

@_ods_cext.register_operation(_Dialect)
class RawPtrBufferLoadOp(_ods_ir.OpView):
  OPERATION_NAME = "rocdl.raw.ptr.buffer.load"

  _ODS_REGIONS = (0, True)

  def __init__(self, res: _ods_ir.Type, rsrc: _ods_ir.Value, offset: _ods_ir.Value[_ods_ir.IntegerType], soffset: _ods_ir.Value[_ods_ir.IntegerType], aux: _ods_ir.Value[_ods_ir.IntegerType], *, alias_scopes: _Optional[_Union[_Any, _ods_ir.ArrayAttr]] = None, noalias_scopes: _Optional[_Union[_Any, _ods_ir.ArrayAttr]] = None, tbaa: _Optional[_Union[_Any, _ods_ir.ArrayAttr]] = None, loc: _Optional[_ods_ir.Location] = None, ip: _Optional[_ods_ir.InsertionPoint] = None):
    operands = []
    attributes = {}
    regions = None
    operands.append(rsrc)
    operands.append(offset)
    operands.append(soffset)
    operands.append(aux)
    _ods_context = _ods_get_default_loc_context(loc)
    if alias_scopes is not None: attributes["alias_scopes"] = (alias_scopes if (
        isinstance(alias_scopes, _ods_ir.Attribute) or
        not _ods_ir.AttrBuilder.contains('LLVM_AliasScopeArrayAttr')) else
          _ods_ir.AttrBuilder.get('LLVM_AliasScopeArrayAttr')(alias_scopes, context=_ods_context))
    if noalias_scopes is not None: attributes["noalias_scopes"] = (noalias_scopes if (
        isinstance(noalias_scopes, _ods_ir.Attribute) or
        not _ods_ir.AttrBuilder.contains('LLVM_AliasScopeArrayAttr')) else
          _ods_ir.AttrBuilder.get('LLVM_AliasScopeArrayAttr')(noalias_scopes, context=_ods_context))
    if tbaa is not None: attributes["tbaa"] = (tbaa if (
        isinstance(tbaa, _ods_ir.Attribute) or
        not _ods_ir.AttrBuilder.contains('LLVM_TBAATagArrayAttr')) else
          _ods_ir.AttrBuilder.get('LLVM_TBAATagArrayAttr')(tbaa, context=_ods_context))
    results = []
    results.append(res)
    _ods_successors = None
    super().__init__(self.OPERATION_NAME, self._ODS_REGIONS, self._ODS_OPERAND_SEGMENTS, self._ODS_RESULT_SEGMENTS, attributes=attributes, results=results, operands=operands, successors=_ods_successors, regions=regions, loc=loc, ip=ip)

  @builtins.property
  def rsrc(self) -> _ods_ir.Value:
    return self.operation.operands[0]

  @builtins.property
  def offset(self) -> _ods_ir.Value[_ods_ir.IntegerType]:
    return self.operation.operands[1]

  @builtins.property
  def soffset(self) -> _ods_ir.Value[_ods_ir.IntegerType]:
    return self.operation.operands[2]

  @builtins.property
  def aux(self) -> _ods_ir.Value[_ods_ir.IntegerType]:
    return self.operation.operands[3]

  @builtins.property
  def alias_scopes(self) -> _Optional[_ods_ir.ArrayAttr]:
    if "alias_scopes" not in self.operation.attributes:
      return None
    return self.operation.attributes["alias_scopes"]

  @alias_scopes.setter
  def alias_scopes(self, value: _Optional[_ods_ir.ArrayAttr]):
    if value is not None:
      self.operation.attributes["alias_scopes"] = value
    elif "alias_scopes" in self.operation.attributes:
      del self.operation.attributes["alias_scopes"]

  @alias_scopes.deleter
  def alias_scopes(self):
    del self.operation.attributes["alias_scopes"]

  @builtins.property
  def noalias_scopes(self) -> _Optional[_ods_ir.ArrayAttr]:
    if "noalias_scopes" not in self.operation.attributes:
      return None
    return self.operation.attributes["noalias_scopes"]

  @noalias_scopes.setter
  def noalias_scopes(self, value: _Optional[_ods_ir.ArrayAttr]):
    if value is not None:
      self.operation.attributes["noalias_scopes"] = value
    elif "noalias_scopes" in self.operation.attributes:
      del self.operation.attributes["noalias_scopes"]

  @noalias_scopes.deleter
  def noalias_scopes(self):
    del self.operation.attributes["noalias_scopes"]

  @builtins.property
  def tbaa(self) -> _Optional[_ods_ir.ArrayAttr]:
    if "tbaa" not in self.operation.attributes:
      return None
    return self.operation.attributes["tbaa"]

  @tbaa.setter
  def tbaa(self, value: _Optional[_ods_ir.ArrayAttr]):
    if value is not None:
      self.operation.attributes["tbaa"] = value
    elif "tbaa" in self.operation.attributes:
      del self.operation.attributes["tbaa"]

  @tbaa.deleter
  def tbaa(self):
    del self.operation.attributes["tbaa"]

  @builtins.property
  def res(self) -> _ods_ir.OpResult:
    return self.operation.results[0]

@_ods_cext.register_op_adaptor(RawPtrBufferLoadOp)
class RawPtrBufferLoadOpAdaptor(_ods_ir.OpAdaptor):
  OPERATION_NAME = "rocdl.raw.ptr.buffer.load"

  @builtins.property
  def rsrc(self) -> _ods_ir.Value:
    return self.operands[0]

  @builtins.property
  def offset(self) -> _ods_ir.Value[_ods_ir.IntegerType]:
    return self.operands[1]

  @builtins.property
  def soffset(self) -> _ods_ir.Value[_ods_ir.IntegerType]:
    return self.operands[2]

  @builtins.property
  def aux(self) -> _ods_ir.Value[_ods_ir.IntegerType]:
    return self.operands[3]

  @builtins.property
  def alias_scopes(self) -> _Optional[_ods_ir.ArrayAttr]:
    if "alias_scopes" not in self.attributes:
      return None
    return self.attributes["alias_scopes"]

  @builtins.property
  def noalias_scopes(self) -> _Optional[_ods_ir.ArrayAttr]:
    if "noalias_scopes" not in self.attributes:
      return None
    return self.attributes["noalias_scopes"]

  @builtins.property
  def tbaa(self) -> _Optional[_ods_ir.ArrayAttr]:
    if "tbaa" not in self.attributes:
      return None
    return self.attributes["tbaa"]

def raw_ptr_buffer_load(res: _ods_ir.Type, rsrc: _ods_ir.Value, offset: _ods_ir.Value[_ods_ir.IntegerType], soffset: _ods_ir.Value[_ods_ir.IntegerType], aux: _ods_ir.Value[_ods_ir.IntegerType], *, alias_scopes: _Optional[_Union[_Any, _ods_ir.ArrayAttr]] = None, noalias_scopes: _Optional[_Union[_Any, _ods_ir.ArrayAttr]] = None, tbaa: _Optional[_Union[_Any, _ods_ir.ArrayAttr]] = None, loc: _Optional[_ods_ir.Location] = None, ip: _Optional[_ods_ir.InsertionPoint] = None) -> _ods_ir.OpResult:
  return RawPtrBufferLoadOp(res=res, rsrc=rsrc, offset=offset, soffset=soffset, aux=aux, alias_scopes=alias_scopes, noalias_scopes=noalias_scopes, tbaa=tbaa, loc=loc, ip=ip).result

@_ods_cext.register_operation(_Dialect)
class RawPtrBufferStoreOp(_ods_ir.OpView):
  OPERATION_NAME = "rocdl.raw.ptr.buffer.store"

  _ODS_REGIONS = (0, True)

  def __init__(self, vdata: _ods_ir.Value, rsrc: _ods_ir.Value, offset: _ods_ir.Value[_ods_ir.IntegerType], soffset: _ods_ir.Value[_ods_ir.IntegerType], aux: _ods_ir.Value[_ods_ir.IntegerType], *, alias_scopes: _Optional[_Union[_Any, _ods_ir.ArrayAttr]] = None, noalias_scopes: _Optional[_Union[_Any, _ods_ir.ArrayAttr]] = None, tbaa: _Optional[_Union[_Any, _ods_ir.ArrayAttr]] = None, loc: _Optional[_ods_ir.Location] = None, ip: _Optional[_ods_ir.InsertionPoint] = None):
    operands = []
    attributes = {}
    regions = None
    operands.append(vdata)
    operands.append(rsrc)
    operands.append(offset)
    operands.append(soffset)
    operands.append(aux)
    _ods_context = _ods_get_default_loc_context(loc)
    if alias_scopes is not None: attributes["alias_scopes"] = (alias_scopes if (
        isinstance(alias_scopes, _ods_ir.Attribute) or
        not _ods_ir.AttrBuilder.contains('LLVM_AliasScopeArrayAttr')) else
          _ods_ir.AttrBuilder.get('LLVM_AliasScopeArrayAttr')(alias_scopes, context=_ods_context))
    if noalias_scopes is not None: attributes["noalias_scopes"] = (noalias_scopes if (
        isinstance(noalias_scopes, _ods_ir.Attribute) or
        not _ods_ir.AttrBuilder.contains('LLVM_AliasScopeArrayAttr')) else
          _ods_ir.AttrBuilder.get('LLVM_AliasScopeArrayAttr')(noalias_scopes, context=_ods_context))
    if tbaa is not None: attributes["tbaa"] = (tbaa if (
        isinstance(tbaa, _ods_ir.Attribute) or
        not _ods_ir.AttrBuilder.contains('LLVM_TBAATagArrayAttr')) else
          _ods_ir.AttrBuilder.get('LLVM_TBAATagArrayAttr')(tbaa, context=_ods_context))
    results = []
    _ods_successors = None
    super().__init__(self.OPERATION_NAME, self._ODS_REGIONS, self._ODS_OPERAND_SEGMENTS, self._ODS_RESULT_SEGMENTS, attributes=attributes, results=results, operands=operands, successors=_ods_successors, regions=regions, loc=loc, ip=ip)

  @builtins.property
  def vdata(self) -> _ods_ir.Value:
    return self.operation.operands[0]

  @builtins.property
  def rsrc(self) -> _ods_ir.Value:
    return self.operation.operands[1]

  @builtins.property
  def offset(self) -> _ods_ir.Value[_ods_ir.IntegerType]:
    return self.operation.operands[2]

  @builtins.property
  def soffset(self) -> _ods_ir.Value[_ods_ir.IntegerType]:
    return self.operation.operands[3]

  @builtins.property
  def aux(self) -> _ods_ir.Value[_ods_ir.IntegerType]:
    return self.operation.operands[4]

  @builtins.property
  def alias_scopes(self) -> _Optional[_ods_ir.ArrayAttr]:
    if "alias_scopes" not in self.operation.attributes:
      return None
    return self.operation.attributes["alias_scopes"]

  @alias_scopes.setter
  def alias_scopes(self, value: _Optional[_ods_ir.ArrayAttr]):
    if value is not None:
      self.operation.attributes["alias_scopes"] = value
    elif "alias_scopes" in self.operation.attributes:
      del self.operation.attributes["alias_scopes"]

  @alias_scopes.deleter
  def alias_scopes(self):
    del self.operation.attributes["alias_scopes"]

  @builtins.property
  def noalias_scopes(self) -> _Optional[_ods_ir.ArrayAttr]:
    if "noalias_scopes" not in self.operation.attributes:
      return None
    return self.operation.attributes["noalias_scopes"]

  @noalias_scopes.setter
  def noalias_scopes(self, value: _Optional[_ods_ir.ArrayAttr]):
    if value is not None:
      self.operation.attributes["noalias_scopes"] = value
    elif "noalias_scopes" in self.operation.attributes:
      del self.operation.attributes["noalias_scopes"]

  @noalias_scopes.deleter
  def noalias_scopes(self):
    del self.operation.attributes["noalias_scopes"]

  @builtins.property
  def tbaa(self) -> _Optional[_ods_ir.ArrayAttr]:
    if "tbaa" not in self.operation.attributes:
      return None
    return self.operation.attributes["tbaa"]

  @tbaa.setter
  def tbaa(self, value: _Optional[_ods_ir.ArrayAttr]):
    if value is not None:
      self.operation.attributes["tbaa"] = value
    elif "tbaa" in self.operation.attributes:
      del self.operation.attributes["tbaa"]

  @tbaa.deleter
  def tbaa(self):
    del self.operation.attributes["tbaa"]

@_ods_cext.register_op_adaptor(RawPtrBufferStoreOp)
class RawPtrBufferStoreOpAdaptor(_ods_ir.OpAdaptor):
  OPERATION_NAME = "rocdl.raw.ptr.buffer.store"

  @builtins.property
  def vdata(self) -> _ods_ir.Value:
    return self.operands[0]

  @builtins.property
  def rsrc(self) -> _ods_ir.Value:
    return self.operands[1]

  @builtins.property
  def offset(self) -> _ods_ir.Value[_ods_ir.IntegerType]:
    return self.operands[2]

  @builtins.property
  def soffset(self) -> _ods_ir.Value[_ods_ir.IntegerType]:
    return self.operands[3]

  @builtins.property
  def aux(self) -> _ods_ir.Value[_ods_ir.IntegerType]:
    return self.operands[4]

  @builtins.property
  def alias_scopes(self) -> _Optional[_ods_ir.ArrayAttr]:
    if "alias_scopes" not in self.attributes:
      return None
    return self.attributes["alias_scopes"]

  @builtins.property
  def noalias_scopes(self) -> _Optional[_ods_ir.ArrayAttr]:
    if "noalias_scopes" not in self.attributes:
      return None
    return self.attributes["noalias_scopes"]

  @builtins.property
  def tbaa(self) -> _Optional[_ods_ir.ArrayAttr]:
    if "tbaa" not in self.attributes:
      return None
    return self.attributes["tbaa"]

def raw_ptr_buffer_store(vdata: _ods_ir.Value, rsrc: _ods_ir.Value, offset: _ods_ir.Value[_ods_ir.IntegerType], soffset: _ods_ir.Value[_ods_ir.IntegerType], aux: _ods_ir.Value[_ods_ir.IntegerType], *, alias_scopes: _Optional[_Union[_Any, _ods_ir.ArrayAttr]] = None, noalias_scopes: _Optional[_Union[_Any, _ods_ir.ArrayAttr]] = None, tbaa: _Optional[_Union[_Any, _ods_ir.ArrayAttr]] = None, loc: _Optional[_ods_ir.Location] = None, ip: _Optional[_ods_ir.InsertionPoint] = None) -> RawPtrBufferStoreOp:
  return RawPtrBufferStoreOp(vdata=vdata, rsrc=rsrc, offset=offset, soffset=soffset, aux=aux, alias_scopes=alias_scopes, noalias_scopes=noalias_scopes, tbaa=tbaa, loc=loc, ip=ip)

@_ods_cext.register_operation(_Dialect)
class ReadfirstlaneOp(_ods_ir.OpView):
  r"""
  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>
  ```
  """

  OPERATION_NAME = "rocdl.readfirstlane"

  _ODS_REGIONS = (0, True)

  def __init__(self, res: _ods_ir.Type, src: _ods_ir.Value, *, loc: _Optional[_ods_ir.Location] = None, ip: _Optional[_ods_ir.InsertionPoint] = None):
    operands = []
    attributes = {}
    regions = None
    operands.append(src)
    _ods_context = _ods_get_default_loc_context(loc)
    results = []
    results.append(res)
    _ods_successors = None
    super().__init__(self.OPERATION_NAME, self._ODS_REGIONS, self._ODS_OPERAND_SEGMENTS, self._ODS_RESULT_SEGMENTS, attributes=attributes, results=results, operands=operands, successors=_ods_successors, regions=regions, loc=loc, ip=ip)

  @builtins.property
  def src(self) -> _ods_ir.Value:
    return self.operation.operands[0]

  @builtins.property
  def res(self) -> _ods_ir.OpResult:
    return self.operation.results[0]

@_ods_cext.register_op_adaptor(ReadfirstlaneOp)
class ReadfirstlaneOpAdaptor(_ods_ir.OpAdaptor):
  OPERATION_NAME = "rocdl.readfirstlane"

  @builtins.property
  def src(self) -> _ods_ir.Value:
    return self.operands[0]

def readfirstlane(res: _ods_ir.Type, src: _ods_ir.Value, *, loc: _Optional[_ods_ir.Location] = None, ip: _Optional[_ods_ir.InsertionPoint] = None) -> _ods_ir.OpResult:
  return ReadfirstlaneOp(res=res, src=src, loc=loc, ip=ip).result

@_ods_cext.register_operation(_Dialect)
class ReadlaneOp(_ods_ir.OpView):
  r"""
  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>
  ```
  """

  OPERATION_NAME = "rocdl.readlane"

  _ODS_REGIONS = (0, True)

  def __init__(self, res: _ods_ir.Type, src0: _ods_ir.Value, src1: _ods_ir.Value[_ods_ir.IntegerType], *, loc: _Optional[_ods_ir.Location] = None, ip: _Optional[_ods_ir.InsertionPoint] = None):
    operands = []
    attributes = {}
    regions = None
    operands.append(src0)
    operands.append(src1)
    _ods_context = _ods_get_default_loc_context(loc)
    results = []
    results.append(res)
    _ods_successors = None
    super().__init__(self.OPERATION_NAME, self._ODS_REGIONS, self._ODS_OPERAND_SEGMENTS, self._ODS_RESULT_SEGMENTS, attributes=attributes, results=results, operands=operands, successors=_ods_successors, regions=regions, loc=loc, ip=ip)

  @builtins.property
  def src0(self) -> _ods_ir.Value:
    return self.operation.operands[0]

  @builtins.property
  def src1(self) -> _ods_ir.Value[_ods_ir.IntegerType]:
    return self.operation.operands[1]

  @builtins.property
  def res(self) -> _ods_ir.OpResult:
    return self.operation.results[0]

@_ods_cext.register_op_adaptor(ReadlaneOp)
class ReadlaneOpAdaptor(_ods_ir.OpAdaptor):
  OPERATION_NAME = "rocdl.readlane"

  @builtins.property
  def src0(self) -> _ods_ir.Value:
    return self.operands[0]

  @builtins.property
  def src1(self) -> _ods_ir.Value[_ods_ir.IntegerType]:
    return self.operands[1]

def readlane(res: _ods_ir.Type, src0: _ods_ir.Value, src1: _ods_ir.Value[_ods_ir.IntegerType], *, loc: _Optional[_ods_ir.Location] = None, ip: _Optional[_ods_ir.InsertionPoint] = None) -> _ods_ir.OpResult:
  return ReadlaneOp(res=res, src0=src0, src1=src1, loc=loc, ip=ip).result

@_ods_cext.register_operation(_Dialect)
class SBarrierOp(_ods_ir.OpView):
  r"""
  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
  ```
  """

  OPERATION_NAME = "rocdl.s.barrier"

  _ODS_REGIONS = (0, True)

  def __init__(self, *, loc: _Optional[_ods_ir.Location] = None, ip: _Optional[_ods_ir.InsertionPoint] = None):
    operands = []
    attributes = {}
    regions = None
    _ods_context = _ods_get_default_loc_context(loc)
    results = []
    _ods_successors = None
    super().__init__(self.OPERATION_NAME, self._ODS_REGIONS, self._ODS_OPERAND_SEGMENTS, self._ODS_RESULT_SEGMENTS, attributes=attributes, results=results, operands=operands, successors=_ods_successors, regions=regions, loc=loc, ip=ip)

@_ods_cext.register_op_adaptor(SBarrierOp)
class SBarrierOpAdaptor(_ods_ir.OpAdaptor):
  OPERATION_NAME = "rocdl.s.barrier"

def s_barrier(*, loc: _Optional[_ods_ir.Location] = None, ip: _Optional[_ods_ir.InsertionPoint] = None) -> SBarrierOp:
  return SBarrierOp(loc=loc, ip=ip)

@_ods_cext.register_operation(_Dialect)
class SNopOp(_ods_ir.OpView):
  r"""
  Insert a number of NOP cycles.
  
  Example:
  ```mlir
  // Insert a no-op.
  rocdl.s.nop 0
  ```
  """

  OPERATION_NAME = "rocdl.s.nop"

  _ODS_REGIONS = (0, True)

  def __init__(self, count: _Union[int, _ods_ir.IntegerAttr], *, loc: _Optional[_ods_ir.Location] = None, ip: _Optional[_ods_ir.InsertionPoint] = None):
    operands = []
    attributes = {}
    regions = None
    _ods_context = _ods_get_default_loc_context(loc)
    attributes["count"] = (count if (
    isinstance(count, _ods_ir.Attribute) or
    not _ods_ir.AttrBuilder.contains('I16Attr')) else
      _ods_ir.AttrBuilder.get('I16Attr')(count, context=_ods_context))
    results = []
    _ods_successors = None
    super().__init__(self.OPERATION_NAME, self._ODS_REGIONS, self._ODS_OPERAND_SEGMENTS, self._ODS_RESULT_SEGMENTS, attributes=attributes, results=results, operands=operands, successors=_ods_successors, regions=regions, loc=loc, ip=ip)

  @builtins.property
  def count(self) -> _ods_ir.IntegerAttr:
    return self.operation.attributes["count"]

  @count.setter
  def count(self, value: _ods_ir.IntegerAttr):
    if value is None:
      raise ValueError("'None' not allowed as value for mandatory attributes")
    self.operation.attributes["count"] = value

@_ods_cext.register_op_adaptor(SNopOp)
class SNopOpAdaptor(_ods_ir.OpAdaptor):
  OPERATION_NAME = "rocdl.s.nop"

  @builtins.property
  def count(self) -> _ods_ir.IntegerAttr:
    return self.attributes["count"]

def s_nop(count: _Union[int, _ods_ir.IntegerAttr], *, loc: _Optional[_ods_ir.Location] = None, ip: _Optional[_ods_ir.InsertionPoint] = None) -> SNopOp:
  return SNopOp(count=count, loc=loc, ip=ip)

@_ods_cext.register_operation(_Dialect)
class SSleepOp(_ods_ir.OpView):
  r"""
  Sleep for a number of clock cycles.
  
  Example:
  ```mlir
  // Sleep for a minimum duration.
  rocdl.s.sleep 0
  ```
  """

  OPERATION_NAME = "rocdl.s.sleep"

  _ODS_REGIONS = (0, True)

  def __init__(self, count: _Union[int, _ods_ir.IntegerAttr], *, loc: _Optional[_ods_ir.Location] = None, ip: _Optional[_ods_ir.InsertionPoint] = None):
    operands = []
    attributes = {}
    regions = None
    _ods_context = _ods_get_default_loc_context(loc)
    attributes["count"] = (count if (
    isinstance(count, _ods_ir.Attribute) or
    not _ods_ir.AttrBuilder.contains('I32Attr')) else
      _ods_ir.AttrBuilder.get('I32Attr')(count, context=_ods_context))
    results = []
    _ods_successors = None
    super().__init__(self.OPERATION_NAME, self._ODS_REGIONS, self._ODS_OPERAND_SEGMENTS, self._ODS_RESULT_SEGMENTS, attributes=attributes, results=results, operands=operands, successors=_ods_successors, regions=regions, loc=loc, ip=ip)

  @builtins.property
  def count(self) -> _ods_ir.IntegerAttr:
    return self.operation.attributes["count"]

  @count.setter
  def count(self, value: _ods_ir.IntegerAttr):
    if value is None:
      raise ValueError("'None' not allowed as value for mandatory attributes")
    self.operation.attributes["count"] = value

@_ods_cext.register_op_adaptor(SSleepOp)
class SSleepOpAdaptor(_ods_ir.OpAdaptor):
  OPERATION_NAME = "rocdl.s.sleep"

  @builtins.property
  def count(self) -> _ods_ir.IntegerAttr:
    return self.attributes["count"]

def s_sleep(count: _Union[int, _ods_ir.IntegerAttr], *, loc: _Optional[_ods_ir.Location] = None, ip: _Optional[_ods_ir.InsertionPoint] = None) -> SSleepOp:
  return SSleepOp(count=count, loc=loc, ip=ip)

@_ods_cext.register_operation(_Dialect)
class SWaitcntOp(_ods_ir.OpView):
  r"""
  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
  ```
  """

  OPERATION_NAME = "rocdl.s.waitcnt"

  _ODS_REGIONS = (0, True)

  def __init__(self, bitfield: _Union[int, _ods_ir.IntegerAttr], *, loc: _Optional[_ods_ir.Location] = None, ip: _Optional[_ods_ir.InsertionPoint] = None):
    operands = []
    attributes = {}
    regions = None
    _ods_context = _ods_get_default_loc_context(loc)
    attributes["bitfield"] = (bitfield if (
    isinstance(bitfield, _ods_ir.Attribute) or
    not _ods_ir.AttrBuilder.contains('I32Attr')) else
      _ods_ir.AttrBuilder.get('I32Attr')(bitfield, context=_ods_context))
    results = []
    _ods_successors = None
    super().__init__(self.OPERATION_NAME, self._ODS_REGIONS, self._ODS_OPERAND_SEGMENTS, self._ODS_RESULT_SEGMENTS, attributes=attributes, results=results, operands=operands, successors=_ods_successors, regions=regions, loc=loc, ip=ip)

  @builtins.property
  def bitfield(self) -> _ods_ir.IntegerAttr:
    return self.operation.attributes["bitfield"]

  @bitfield.setter
  def bitfield(self, value: _ods_ir.IntegerAttr):
    if value is None:
      raise ValueError("'None' not allowed as value for mandatory attributes")
    self.operation.attributes["bitfield"] = value

@_ods_cext.register_op_adaptor(SWaitcntOp)
class SWaitcntOpAdaptor(_ods_ir.OpAdaptor):
  OPERATION_NAME = "rocdl.s.waitcnt"

  @builtins.property
  def bitfield(self) -> _ods_ir.IntegerAttr:
    return self.attributes["bitfield"]

def s_waitcnt(bitfield: _Union[int, _ods_ir.IntegerAttr], *, loc: _Optional[_ods_ir.Location] = None, ip: _Optional[_ods_ir.InsertionPoint] = None) -> SWaitcntOp:
  return SWaitcntOp(bitfield=bitfield, loc=loc, ip=ip)

@_ods_cext.register_operation(_Dialect)
class SchedBarrier(_ods_ir.OpView):
  r"""
  Insert a scheduling barrier with the given mask. The mask is a
  bitfield that controls which instruction types may be scheduled
  across the barrier (e.g. `0x0000` = no instructions may cross,
  `0x0001` = ALU only, `0x0010` = all VMEM, etc.). See
  https://github.com/llvm/llvm-project/blob/main/llvm/include/llvm/IR/IntrinsicsAMDGPU.td#L349
  for the full list of mask values.
  
  Example:
  ```mlir
  // Scheduling barrier with mask 0.
  rocdl.sched.barrier 0
  ```
  """

  OPERATION_NAME = "rocdl.sched.barrier"

  _ODS_REGIONS = (0, True)

  def __init__(self, mask: _Union[int, _ods_ir.IntegerAttr], *, loc: _Optional[_ods_ir.Location] = None, ip: _Optional[_ods_ir.InsertionPoint] = None):
    operands = []
    attributes = {}
    regions = None
    _ods_context = _ods_get_default_loc_context(loc)
    attributes["mask"] = (mask if (
    isinstance(mask, _ods_ir.Attribute) or
    not _ods_ir.AttrBuilder.contains('I32Attr')) else
      _ods_ir.AttrBuilder.get('I32Attr')(mask, context=_ods_context))
    results = []
    _ods_successors = None
    super().__init__(self.OPERATION_NAME, self._ODS_REGIONS, self._ODS_OPERAND_SEGMENTS, self._ODS_RESULT_SEGMENTS, attributes=attributes, results=results, operands=operands, successors=_ods_successors, regions=regions, loc=loc, ip=ip)

  @builtins.property
  def mask(self) -> _ods_ir.IntegerAttr:
    return self.operation.attributes["mask"]

  @mask.setter
  def mask(self, value: _ods_ir.IntegerAttr):
    if value is None:
      raise ValueError("'None' not allowed as value for mandatory attributes")
    self.operation.attributes["mask"] = value

@_ods_cext.register_op_adaptor(SchedBarrier)
class SchedBarrierAdaptor(_ods_ir.OpAdaptor):
  OPERATION_NAME = "rocdl.sched.barrier"

  @builtins.property
  def mask(self) -> _ods_ir.IntegerAttr:
    return self.attributes["mask"]

def sched_barrier(mask: _Union[int, _ods_ir.IntegerAttr], *, loc: _Optional[_ods_ir.Location] = None, ip: _Optional[_ods_ir.InsertionPoint] = None) -> SchedBarrier:
  return SchedBarrier(mask=mask, loc=loc, ip=ip)

@_ods_cext.register_operation(_Dialect)
class SchedGroupBarrier(_ods_ir.OpView):
  r"""
  Insert a scheduling group barrier.
  
  Example:
  ```mlir
  // Schedule group barrier with mask, size, and group id.
  rocdl.sched.group.barrier 8, 1, 0
  ```
  """

  OPERATION_NAME = "rocdl.sched.group.barrier"

  _ODS_REGIONS = (0, True)

  def __init__(self, mask: _Union[int, _ods_ir.IntegerAttr], size: _Union[int, _ods_ir.IntegerAttr], groupId: _Union[int, _ods_ir.IntegerAttr], *, loc: _Optional[_ods_ir.Location] = None, ip: _Optional[_ods_ir.InsertionPoint] = None):
    operands = []
    attributes = {}
    regions = None
    _ods_context = _ods_get_default_loc_context(loc)
    attributes["mask"] = (mask if (
    isinstance(mask, _ods_ir.Attribute) or
    not _ods_ir.AttrBuilder.contains('I32Attr')) else
      _ods_ir.AttrBuilder.get('I32Attr')(mask, context=_ods_context))
    attributes["size"] = (size if (
    isinstance(size, _ods_ir.Attribute) or
    not _ods_ir.AttrBuilder.contains('I32Attr')) else
      _ods_ir.AttrBuilder.get('I32Attr')(size, context=_ods_context))
    attributes["groupId"] = (groupId if (
    isinstance(groupId, _ods_ir.Attribute) or
    not _ods_ir.AttrBuilder.contains('I32Attr')) else
      _ods_ir.AttrBuilder.get('I32Attr')(groupId, context=_ods_context))
    results = []
    _ods_successors = None
    super().__init__(self.OPERATION_NAME, self._ODS_REGIONS, self._ODS_OPERAND_SEGMENTS, self._ODS_RESULT_SEGMENTS, attributes=attributes, results=results, operands=operands, successors=_ods_successors, regions=regions, loc=loc, ip=ip)

  @builtins.property
  def mask(self) -> _ods_ir.IntegerAttr:
    return self.operation.attributes["mask"]

  @mask.setter
  def mask(self, value: _ods_ir.IntegerAttr):
    if value is None:
      raise ValueError("'None' not allowed as value for mandatory attributes")
    self.operation.attributes["mask"] = value

  @builtins.property
  def size(self) -> _ods_ir.IntegerAttr:
    return self.operation.attributes["size"]

  @size.setter
  def size(self, value: _ods_ir.IntegerAttr):
    if value is None:
      raise ValueError("'None' not allowed as value for mandatory attributes")
    self.operation.attributes["size"] = value

  @builtins.property
  def groupId(self) -> _ods_ir.IntegerAttr:
    return self.operation.attributes["groupId"]

  @groupId.setter
  def groupId(self, value: _ods_ir.IntegerAttr):
    if value is None:
      raise ValueError("'None' not allowed as value for mandatory attributes")
    self.operation.attributes["groupId"] = value

@_ods_cext.register_op_adaptor(SchedGroupBarrier)
class SchedGroupBarrierAdaptor(_ods_ir.OpAdaptor):
  OPERATION_NAME = "rocdl.sched.group.barrier"

  @builtins.property
  def mask(self) -> _ods_ir.IntegerAttr:
    return self.attributes["mask"]

  @builtins.property
  def size(self) -> _ods_ir.IntegerAttr:
    return self.attributes["size"]

  @builtins.property
  def groupId(self) -> _ods_ir.IntegerAttr:
    return self.attributes["groupId"]

def sched_group_barrier(mask: _Union[int, _ods_ir.IntegerAttr], size: _Union[int, _ods_ir.IntegerAttr], group_id: _Union[int, _ods_ir.IntegerAttr], *, loc: _Optional[_ods_ir.Location] = None, ip: _Optional[_ods_ir.InsertionPoint] = None) -> SchedGroupBarrier:
  return SchedGroupBarrier(mask=mask, size=size, groupId=group_id, loc=loc, ip=ip)

@_ods_cext.register_operation(_Dialect)
class SetPrioOp(_ods_ir.OpView):
  r"""
  Set the wavefront scheduling priority.
  
  Example:
  ```mlir
  // Set priority to 0.
  rocdl.s.setprio 0
  ```
  """

  OPERATION_NAME = "rocdl.s.setprio"

  _ODS_REGIONS = (0, True)

  def __init__(self, priority: _Union[int, _ods_ir.IntegerAttr], *, loc: _Optional[_ods_ir.Location] = None, ip: _Optional[_ods_ir.InsertionPoint] = None):
    operands = []
    attributes = {}
    regions = None
    _ods_context = _ods_get_default_loc_context(loc)
    attributes["priority"] = (priority if (
    isinstance(priority, _ods_ir.Attribute) or
    not _ods_ir.AttrBuilder.contains('I16Attr')) else
      _ods_ir.AttrBuilder.get('I16Attr')(priority, context=_ods_context))
    results = []
    _ods_successors = None
    super().__init__(self.OPERATION_NAME, self._ODS_REGIONS, self._ODS_OPERAND_SEGMENTS, self._ODS_RESULT_SEGMENTS, attributes=attributes, results=results, operands=operands, successors=_ods_successors, regions=regions, loc=loc, ip=ip)

  @builtins.property
  def priority(self) -> _ods_ir.IntegerAttr:
    return self.operation.attributes["priority"]

  @priority.setter
  def priority(self, value: _ods_ir.IntegerAttr):
    if value is None:
      raise ValueError("'None' not allowed as value for mandatory attributes")
    self.operation.attributes["priority"] = value

@_ods_cext.register_op_adaptor(SetPrioOp)
class SetPrioOpAdaptor(_ods_ir.OpAdaptor):
  OPERATION_NAME = "rocdl.s.setprio"

  @builtins.property
  def priority(self) -> _ods_ir.IntegerAttr:
    return self.attributes["priority"]

def s_setprio(priority: _Union[int, _ods_ir.IntegerAttr], *, loc: _Optional[_ods_ir.Location] = None, ip: _Optional[_ods_ir.InsertionPoint] = None) -> SetPrioOp:
  return SetPrioOp(priority=priority, loc=loc, ip=ip)

@_ods_cext.register_operation(_Dialect)
class TensorLoadToLDSOp(_ods_ir.OpView):
  r"""
  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 cachepolicy 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 cachepolicy 0 : vector<4xi32>, vector<8xi32>
  ```
  """

  OPERATION_NAME = "rocdl.tensor.load.to.lds"

  _ODS_REGIONS = (0, True)

  def __init__(self, dgroup0: _ods_ir.Value[_ods_ir.VectorType], dgroup1: _ods_ir.Value[_ods_ir.VectorType], dgroup2: _ods_ir.Value[_ods_ir.VectorType], dgroup3: _ods_ir.Value[_ods_ir.VectorType], dgroup4: _ods_ir.Value[_ods_ir.VectorType], cachePolicy: _Union[int, _ods_ir.IntegerAttr], *, alias_scopes: _Optional[_Union[_Any, _ods_ir.ArrayAttr]] = None, noalias_scopes: _Optional[_Union[_Any, _ods_ir.ArrayAttr]] = None, tbaa: _Optional[_Union[_Any, _ods_ir.ArrayAttr]] = None, loc: _Optional[_ods_ir.Location] = None, ip: _Optional[_ods_ir.InsertionPoint] = None):
    operands = []
    attributes = {}
    regions = None
    operands.append(dgroup0)
    operands.append(dgroup1)
    operands.append(dgroup2)
    operands.append(dgroup3)
    operands.append(dgroup4)
    _ods_context = _ods_get_default_loc_context(loc)
    attributes["cachePolicy"] = (cachePolicy if (
    isinstance(cachePolicy, _ods_ir.Attribute) or
    not _ods_ir.AttrBuilder.contains('I32Attr')) else
      _ods_ir.AttrBuilder.get('I32Attr')(cachePolicy, context=_ods_context))
    if alias_scopes is not None: attributes["alias_scopes"] = (alias_scopes if (
        isinstance(alias_scopes, _ods_ir.Attribute) or
        not _ods_ir.AttrBuilder.contains('LLVM_AliasScopeArrayAttr')) else
          _ods_ir.AttrBuilder.get('LLVM_AliasScopeArrayAttr')(alias_scopes, context=_ods_context))
    if noalias_scopes is not None: attributes["noalias_scopes"] = (noalias_scopes if (
        isinstance(noalias_scopes, _ods_ir.Attribute) or
        not _ods_ir.AttrBuilder.contains('LLVM_AliasScopeArrayAttr')) else
          _ods_ir.AttrBuilder.get('LLVM_AliasScopeArrayAttr')(noalias_scopes, context=_ods_context))
    if tbaa is not None: attributes["tbaa"] = (tbaa if (
        isinstance(tbaa, _ods_ir.Attribute) or
        not _ods_ir.AttrBuilder.contains('LLVM_TBAATagArrayAttr')) else
          _ods_ir.AttrBuilder.get('LLVM_TBAATagArrayAttr')(tbaa, context=_ods_context))
    results = []
    _ods_successors = None
    super().__init__(self.OPERATION_NAME, self._ODS_REGIONS, self._ODS_OPERAND_SEGMENTS, self._ODS_RESULT_SEGMENTS, attributes=attributes, results=results, operands=operands, successors=_ods_successors, regions=regions, loc=loc, ip=ip)

  @builtins.property
  def dgroup0(self) -> _ods_ir.Value[_ods_ir.VectorType]:
    return self.operation.operands[0]

  @builtins.property
  def dgroup1(self) -> _ods_ir.Value[_ods_ir.VectorType]:
    return self.operation.operands[1]

  @builtins.property
  def dgroup2(self) -> _ods_ir.Value[_ods_ir.VectorType]:
    return self.operation.operands[2]

  @builtins.property
  def dgroup3(self) -> _ods_ir.Value[_ods_ir.VectorType]:
    return self.operation.operands[3]

  @builtins.property
  def dgroup4(self) -> _ods_ir.Value[_ods_ir.VectorType]:
    return self.operation.operands[4]

  @builtins.property
  def cachePolicy(self) -> _ods_ir.IntegerAttr:
    return self.operation.attributes["cachePolicy"]

  @cachePolicy.setter
  def cachePolicy(self, value: _ods_ir.IntegerAttr):
    if value is None:
      raise ValueError("'None' not allowed as value for mandatory attributes")
    self.operation.attributes["cachePolicy"] = value

  @builtins.property
  def alias_scopes(self) -> _Optional[_ods_ir.ArrayAttr]:
    if "alias_scopes" not in self.operation.attributes:
      return None
    return self.operation.attributes["alias_scopes"]

  @alias_scopes.setter
  def alias_scopes(self, value: _Optional[_ods_ir.ArrayAttr]):
    if value is not None:
      self.operation.attributes["alias_scopes"] = value
    elif "alias_scopes" in self.operation.attributes:
      del self.operation.attributes["alias_scopes"]

  @alias_scopes.deleter
  def alias_scopes(self):
    del self.operation.attributes["alias_scopes"]

  @builtins.property
  def noalias_scopes(self) -> _Optional[_ods_ir.ArrayAttr]:
    if "noalias_scopes" not in self.operation.attributes:
      return None
    return self.operation.attributes["noalias_scopes"]

  @noalias_scopes.setter
  def noalias_scopes(self, value: _Optional[_ods_ir.ArrayAttr]):
    if value is not None:
      self.operation.attributes["noalias_scopes"] = value
    elif "noalias_scopes" in self.operation.attributes:
      del self.operation.attributes["noalias_scopes"]

  @noalias_scopes.deleter
  def noalias_scopes(self):
    del self.operation.attributes["noalias_scopes"]

  @builtins.property
  def tbaa(self) -> _Optional[_ods_ir.ArrayAttr]:
    if "tbaa" not in self.operation.attributes:
      return None
    return self.operation.attributes["tbaa"]

  @tbaa.setter
  def tbaa(self, value: _Optional[_ods_ir.ArrayAttr]):
    if value is not None:
      self.operation.attributes["tbaa"] = value
    elif "tbaa" in self.operation.attributes:
      del self.operation.attributes["tbaa"]

  @tbaa.deleter
  def tbaa(self):
    del self.operation.attributes["tbaa"]

@_ods_cext.register_op_adaptor(TensorLoadToLDSOp)
class TensorLoadToLDSOpAdaptor(_ods_ir.OpAdaptor):
  OPERATION_NAME = "rocdl.tensor.load.to.lds"

  @builtins.property
  def dgroup0(self) -> _ods_ir.Value[_ods_ir.VectorType]:
    return self.operands[0]

  @builtins.property
  def dgroup1(self) -> _ods_ir.Value[_ods_ir.VectorType]:
    return self.operands[1]

  @builtins.property
  def dgroup2(self) -> _ods_ir.Value[_ods_ir.VectorType]:
    return self.operands[2]

  @builtins.property
  def dgroup3(self) -> _ods_ir.Value[_ods_ir.VectorType]:
    return self.operands[3]

  @builtins.property
  def dgroup4(self) -> _ods_ir.Value[_ods_ir.VectorType]:
    return self.operands[4]

  @builtins.property
  def cachePolicy(self) -> _ods_ir.IntegerAttr:
    return self.attributes["cachePolicy"]

  @builtins.property
  def alias_scopes(self) -> _Optional[_ods_ir.ArrayAttr]:
    if "alias_scopes" not in self.attributes:
      return None
    return self.attributes["alias_scopes"]

  @builtins.property
  def noalias_scopes(self) -> _Optional[_ods_ir.ArrayAttr]:
    if "noalias_scopes" not in self.attributes:
      return None
    return self.attributes["noalias_scopes"]

  @builtins.property
  def tbaa(self) -> _Optional[_ods_ir.ArrayAttr]:
    if "tbaa" not in self.attributes:
      return None
    return self.attributes["tbaa"]

def tensor_load_to_lds(dgroup0: _ods_ir.Value[_ods_ir.VectorType], dgroup1: _ods_ir.Value[_ods_ir.VectorType], dgroup2: _ods_ir.Value[_ods_ir.VectorType], dgroup3: _ods_ir.Value[_ods_ir.VectorType], dgroup4: _ods_ir.Value[_ods_ir.VectorType], cache_policy: _Union[int, _ods_ir.IntegerAttr], *, alias_scopes: _Optional[_Union[_Any, _ods_ir.ArrayAttr]] = None, noalias_scopes: _Optional[_Union[_Any, _ods_ir.ArrayAttr]] = None, tbaa: _Optional[_Union[_Any, _ods_ir.ArrayAttr]] = None, loc: _Optional[_ods_ir.Location] = None, ip: _Optional[_ods_ir.InsertionPoint] = None) -> TensorLoadToLDSOp:
  return TensorLoadToLDSOp(dgroup0=dgroup0, dgroup1=dgroup1, dgroup2=dgroup2, dgroup3=dgroup3, dgroup4=dgroup4, cachePolicy=cache_policy, alias_scopes=alias_scopes, noalias_scopes=noalias_scopes, tbaa=tbaa, loc=loc, ip=ip)

@_ods_cext.register_operation(_Dialect)
class TensorStoreFromLDSOp(_ods_ir.OpView):
  r"""
  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 cachepolicy 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 cachepolicy 0 : vector<4xi32>, vector<8xi32>
  ```
  """

  OPERATION_NAME = "rocdl.tensor.store.from.lds"

  _ODS_REGIONS = (0, True)

  def __init__(self, dgroup0: _ods_ir.Value[_ods_ir.VectorType], dgroup1: _ods_ir.Value[_ods_ir.VectorType], dgroup2: _ods_ir.Value[_ods_ir.VectorType], dgroup3: _ods_ir.Value[_ods_ir.VectorType], dgroup4: _ods_ir.Value[_ods_ir.VectorType], cachePolicy: _Union[int, _ods_ir.IntegerAttr], *, alias_scopes: _Optional[_Union[_Any, _ods_ir.ArrayAttr]] = None, noalias_scopes: _Optional[_Union[_Any, _ods_ir.ArrayAttr]] = None, tbaa: _Optional[_Union[_Any, _ods_ir.ArrayAttr]] = None, loc: _Optional[_ods_ir.Location] = None, ip: _Optional[_ods_ir.InsertionPoint] = None):
    operands = []
    attributes = {}
    regions = None
    operands.append(dgroup0)
    operands.append(dgroup1)
    operands.append(dgroup2)
    operands.append(dgroup3)
    operands.append(dgroup4)
    _ods_context = _ods_get_default_loc_context(loc)
    attributes["cachePolicy"] = (cachePolicy if (
    isinstance(cachePolicy, _ods_ir.Attribute) or
    not _ods_ir.AttrBuilder.contains('I32Attr')) else
      _ods_ir.AttrBuilder.get('I32Attr')(cachePolicy, context=_ods_context))
    if alias_scopes is not None: attributes["alias_scopes"] = (alias_scopes if (
        isinstance(alias_scopes, _ods_ir.Attribute) or
        not _ods_ir.AttrBuilder.contains('LLVM_AliasScopeArrayAttr')) else
          _ods_ir.AttrBuilder.get('LLVM_AliasScopeArrayAttr')(alias_scopes, context=_ods_context))
    if noalias_scopes is not None: attributes["noalias_scopes"] = (noalias_scopes if (
        isinstance(noalias_scopes, _ods_ir.Attribute) or
        not _ods_ir.AttrBuilder.contains('LLVM_AliasScopeArrayAttr')) else
          _ods_ir.AttrBuilder.get('LLVM_AliasScopeArrayAttr')(noalias_scopes, context=_ods_context))
    if tbaa is not None: attributes["tbaa"] = (tbaa if (
        isinstance(tbaa, _ods_ir.Attribute) or
        not _ods_ir.AttrBuilder.contains('LLVM_TBAATagArrayAttr')) else
          _ods_ir.AttrBuilder.get('LLVM_TBAATagArrayAttr')(tbaa, context=_ods_context))
    results = []
    _ods_successors = None
    super().__init__(self.OPERATION_NAME, self._ODS_REGIONS, self._ODS_OPERAND_SEGMENTS, self._ODS_RESULT_SEGMENTS, attributes=attributes, results=results, operands=operands, successors=_ods_successors, regions=regions, loc=loc, ip=ip)

  @builtins.property
  def dgroup0(self) -> _ods_ir.Value[_ods_ir.VectorType]:
    return self.operation.operands[0]

  @builtins.property
  def dgroup1(self) -> _ods_ir.Value[_ods_ir.VectorType]:
    return self.operation.operands[1]

  @builtins.property
  def dgroup2(self) -> _ods_ir.Value[_ods_ir.VectorType]:
    return self.operation.operands[2]

  @builtins.property
  def dgroup3(self) -> _ods_ir.Value[_ods_ir.VectorType]:
    return self.operation.operands[3]

  @builtins.property
  def dgroup4(self) -> _ods_ir.Value[_ods_ir.VectorType]:
    return self.operation.operands[4]

  @builtins.property
  def cachePolicy(self) -> _ods_ir.IntegerAttr:
    return self.operation.attributes["cachePolicy"]

  @cachePolicy.setter
  def cachePolicy(self, value: _ods_ir.IntegerAttr):
    if value is None:
      raise ValueError("'None' not allowed as value for mandatory attributes")
    self.operation.attributes["cachePolicy"] = value

  @builtins.property
  def alias_scopes(self) -> _Optional[_ods_ir.ArrayAttr]:
    if "alias_scopes" not in self.operation.attributes:
      return None
    return self.operation.attributes["alias_scopes"]

  @alias_scopes.setter
  def alias_scopes(self, value: _Optional[_ods_ir.ArrayAttr]):
    if value is not None:
      self.operation.attributes["alias_scopes"] = value
    elif "alias_scopes" in self.operation.attributes:
      del self.operation.attributes["alias_scopes"]

  @alias_scopes.deleter
  def alias_scopes(self):
    del self.operation.attributes["alias_scopes"]

  @builtins.property
  def noalias_scopes(self) -> _Optional[_ods_ir.ArrayAttr]:
    if "noalias_scopes" not in self.operation.attributes:
      return None
    return self.operation.attributes["noalias_scopes"]

  @noalias_scopes.setter
  def noalias_scopes(self, value: _Optional[_ods_ir.ArrayAttr]):
    if value is not None:
      self.operation.attributes["noalias_scopes"] = value
    elif "noalias_scopes" in self.operation.attributes:
      del self.operation.attributes["noalias_scopes"]

  @noalias_scopes.deleter
  def noalias_scopes(self):
    del self.operation.attributes["noalias_scopes"]

  @builtins.property
  def tbaa(self) -> _Optional[_ods_ir.ArrayAttr]:
    if "tbaa" not in self.operation.attributes:
      return None
    return self.operation.attributes["tbaa"]

  @tbaa.setter
  def tbaa(self, value: _Optional[_ods_ir.ArrayAttr]):
    if value is not None:
      self.operation.attributes["tbaa"] = value
    elif "tbaa" in self.operation.attributes:
      del self.operation.attributes["tbaa"]

  @tbaa.deleter
  def tbaa(self):
    del self.operation.attributes["tbaa"]

@_ods_cext.register_op_adaptor(TensorStoreFromLDSOp)
class TensorStoreFromLDSOpAdaptor(_ods_ir.OpAdaptor):
  OPERATION_NAME = "rocdl.tensor.store.from.lds"

  @builtins.property
  def dgroup0(self) -> _ods_ir.Value[_ods_ir.VectorType]:
    return self.operands[0]

  @builtins.property
  def dgroup1(self) -> _ods_ir.Value[_ods_ir.VectorType]:
    return self.operands[1]

  @builtins.property
  def dgroup2(self) -> _ods_ir.Value[_ods_ir.VectorType]:
    return self.operands[2]

  @builtins.property
  def dgroup3(self) -> _ods_ir.Value[_ods_ir.VectorType]:
    return self.operands[3]

  @builtins.property
  def dgroup4(self) -> _ods_ir.Value[_ods_ir.VectorType]:
    return self.operands[4]

  @builtins.property
  def cachePolicy(self) -> _ods_ir.IntegerAttr:
    return self.attributes["cachePolicy"]

  @builtins.property
  def alias_scopes(self) -> _Optional[_ods_ir.ArrayAttr]:
    if "alias_scopes" not in self.attributes:
      return None
    return self.attributes["alias_scopes"]

  @builtins.property
  def noalias_scopes(self) -> _Optional[_ods_ir.ArrayAttr]:
    if "noalias_scopes" not in self.attributes:
      return None
    return self.attributes["noalias_scopes"]

  @builtins.property
  def tbaa(self) -> _Optional[_ods_ir.ArrayAttr]:
    if "tbaa" not in self.attributes:
      return None
    return self.attributes["tbaa"]

def tensor_store_from_lds(dgroup0: _ods_ir.Value[_ods_ir.VectorType], dgroup1: _ods_ir.Value[_ods_ir.VectorType], dgroup2: _ods_ir.Value[_ods_ir.VectorType], dgroup3: _ods_ir.Value[_ods_ir.VectorType], dgroup4: _ods_ir.Value[_ods_ir.VectorType], cache_policy: _Union[int, _ods_ir.IntegerAttr], *, alias_scopes: _Optional[_Union[_Any, _ods_ir.ArrayAttr]] = None, noalias_scopes: _Optional[_Union[_Any, _ods_ir.ArrayAttr]] = None, tbaa: _Optional[_Union[_Any, _ods_ir.ArrayAttr]] = None, loc: _Optional[_ods_ir.Location] = None, ip: _Optional[_ods_ir.InsertionPoint] = None) -> TensorStoreFromLDSOp:
  return TensorStoreFromLDSOp(dgroup0=dgroup0, dgroup1=dgroup1, dgroup2=dgroup2, dgroup3=dgroup3, dgroup4=dgroup4, cachePolicy=cache_policy, alias_scopes=alias_scopes, noalias_scopes=noalias_scopes, tbaa=tbaa, loc=loc, ip=ip)

@_ods_cext.register_operation(_Dialect)
class ThreadIdXOp(_ods_ir.OpView):
  r"""
  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, 0, 64> : i32
  ```
  """

  OPERATION_NAME = "rocdl.workitem.id.x"

  _ODS_REGIONS = (0, True)

  def __init__(self, res: _ods_ir.Type, *, range: _Optional[_Union[_Any, _ods_ir.Attribute]] = None, loc: _Optional[_ods_ir.Location] = None, ip: _Optional[_ods_ir.InsertionPoint] = None):
    operands = []
    attributes = {}
    regions = None
    _ods_context = _ods_get_default_loc_context(loc)
    if range is not None: attributes["range"] = (range if (
        isinstance(range, _ods_ir.Attribute) or
        not _ods_ir.AttrBuilder.contains('LLVM_ConstantRangeAttr')) else
          _ods_ir.AttrBuilder.get('LLVM_ConstantRangeAttr')(range, context=_ods_context))
    results = []
    results.append(res)
    _ods_successors = None
    super().__init__(self.OPERATION_NAME, self._ODS_REGIONS, self._ODS_OPERAND_SEGMENTS, self._ODS_RESULT_SEGMENTS, attributes=attributes, results=results, operands=operands, successors=_ods_successors, regions=regions, loc=loc, ip=ip)

  @builtins.property
  def range(self) -> _Optional[_ods_ir.Attribute]:
    if "range" not in self.operation.attributes:
      return None
    return self.operation.attributes["range"]

  @range.setter
  def range(self, value: _Optional[_ods_ir.Attribute]):
    if value is not None:
      self.operation.attributes["range"] = value
    elif "range" in self.operation.attributes:
      del self.operation.attributes["range"]

  @range.deleter
  def range(self):
    del self.operation.attributes["range"]

  @builtins.property
  def res(self) -> _ods_ir.OpResult:
    return self.operation.results[0]

@_ods_cext.register_op_adaptor(ThreadIdXOp)
class ThreadIdXOpAdaptor(_ods_ir.OpAdaptor):
  OPERATION_NAME = "rocdl.workitem.id.x"

  @builtins.property
  def range(self) -> _Optional[_ods_ir.Attribute]:
    if "range" not in self.attributes:
      return None
    return self.attributes["range"]

def workitem_id_x(res: _ods_ir.Type, *, range: _Optional[_Union[_Any, _ods_ir.Attribute]] = None, loc: _Optional[_ods_ir.Location] = None, ip: _Optional[_ods_ir.InsertionPoint] = None) -> _ods_ir.OpResult:
  return ThreadIdXOp(res=res, range=range, loc=loc, ip=ip).result

@_ods_cext.register_operation(_Dialect)
class ThreadIdYOp(_ods_ir.OpView):
  r"""
  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, 0, 64> : i32
  ```
  """

  OPERATION_NAME = "rocdl.workitem.id.y"

  _ODS_REGIONS = (0, True)

  def __init__(self, res: _ods_ir.Type, *, range: _Optional[_Union[_Any, _ods_ir.Attribute]] = None, loc: _Optional[_ods_ir.Location] = None, ip: _Optional[_ods_ir.InsertionPoint] = None):
    operands = []
    attributes = {}
    regions = None
    _ods_context = _ods_get_default_loc_context(loc)
    if range is not None: attributes["range"] = (range if (
        isinstance(range, _ods_ir.Attribute) or
        not _ods_ir.AttrBuilder.contains('LLVM_ConstantRangeAttr')) else
          _ods_ir.AttrBuilder.get('LLVM_ConstantRangeAttr')(range, context=_ods_context))
    results = []
    results.append(res)
    _ods_successors = None
    super().__init__(self.OPERATION_NAME, self._ODS_REGIONS, self._ODS_OPERAND_SEGMENTS, self._ODS_RESULT_SEGMENTS, attributes=attributes, results=results, operands=operands, successors=_ods_successors, regions=regions, loc=loc, ip=ip)

  @builtins.property
  def range(self) -> _Optional[_ods_ir.Attribute]:
    if "range" not in self.operation.attributes:
      return None
    return self.operation.attributes["range"]

  @range.setter
  def range(self, value: _Optional[_ods_ir.Attribute]):
    if value is not None:
      self.operation.attributes["range"] = value
    elif "range" in self.operation.attributes:
      del self.operation.attributes["range"]

  @range.deleter
  def range(self):
    del self.operation.attributes["range"]

  @builtins.property
  def res(self) -> _ods_ir.OpResult:
    return self.operation.results[0]

@_ods_cext.register_op_adaptor(ThreadIdYOp)
class ThreadIdYOpAdaptor(_ods_ir.OpAdaptor):
  OPERATION_NAME = "rocdl.workitem.id.y"

  @builtins.property
  def range(self) -> _Optional[_ods_ir.Attribute]:
    if "range" not in self.attributes:
      return None
    return self.attributes["range"]

def workitem_id_y(res: _ods_ir.Type, *, range: _Optional[_Union[_Any, _ods_ir.Attribute]] = None, loc: _Optional[_ods_ir.Location] = None, ip: _Optional[_ods_ir.InsertionPoint] = None) -> _ods_ir.OpResult:
  return ThreadIdYOp(res=res, range=range, loc=loc, ip=ip).result

@_ods_cext.register_operation(_Dialect)
class ThreadIdZOp(_ods_ir.OpView):
  r"""
  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, 0, 64> : i32
  ```
  """

  OPERATION_NAME = "rocdl.workitem.id.z"

  _ODS_REGIONS = (0, True)

  def __init__(self, res: _ods_ir.Type, *, range: _Optional[_Union[_Any, _ods_ir.Attribute]] = None, loc: _Optional[_ods_ir.Location] = None, ip: _Optional[_ods_ir.InsertionPoint] = None):
    operands = []
    attributes = {}
    regions = None
    _ods_context = _ods_get_default_loc_context(loc)
    if range is not None: attributes["range"] = (range if (
        isinstance(range, _ods_ir.Attribute) or
        not _ods_ir.AttrBuilder.contains('LLVM_ConstantRangeAttr')) else
          _ods_ir.AttrBuilder.get('LLVM_ConstantRangeAttr')(range, context=_ods_context))
    results = []
    results.append(res)
    _ods_successors = None
    super().__init__(self.OPERATION_NAME, self._ODS_REGIONS, self._ODS_OPERAND_SEGMENTS, self._ODS_RESULT_SEGMENTS, attributes=attributes, results=results, operands=operands, successors=_ods_successors, regions=regions, loc=loc, ip=ip)

  @builtins.property
  def range(self) -> _Optional[_ods_ir.Attribute]:
    if "range" not in self.operation.attributes:
      return None
    return self.operation.attributes["range"]

  @range.setter
  def range(self, value: _Optional[_ods_ir.Attribute]):
    if value is not None:
      self.operation.attributes["range"] = value
    elif "range" in self.operation.attributes:
      del self.operation.attributes["range"]

  @range.deleter
  def range(self):
    del self.operation.attributes["range"]

  @builtins.property
  def res(self) -> _ods_ir.OpResult:
    return self.operation.results[0]

@_ods_cext.register_op_adaptor(ThreadIdZOp)
class ThreadIdZOpAdaptor(_ods_ir.OpAdaptor):
  OPERATION_NAME = "rocdl.workitem.id.z"

  @builtins.property
  def range(self) -> _Optional[_ods_ir.Attribute]:
    if "range" not in self.attributes:
      return None
    return self.attributes["range"]

def workitem_id_z(res: _ods_ir.Type, *, range: _Optional[_Union[_Any, _ods_ir.Attribute]] = None, loc: _Optional[_ods_ir.Location] = None, ip: _Optional[_ods_ir.InsertionPoint] = None) -> _ods_ir.OpResult:
  return ThreadIdZOp(res=res, range=range, loc=loc, ip=ip).result

@_ods_cext.register_operation(_Dialect)
class WaitAsynccntOp(_ods_ir.OpView):
  r"""
  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
  ```
  """

  OPERATION_NAME = "rocdl.s.wait.asynccnt"

  _ODS_REGIONS = (0, True)

  def __init__(self, count: _Union[int, _ods_ir.IntegerAttr], *, loc: _Optional[_ods_ir.Location] = None, ip: _Optional[_ods_ir.InsertionPoint] = None):
    operands = []
    attributes = {}
    regions = None
    _ods_context = _ods_get_default_loc_context(loc)
    attributes["count"] = (count if (
    isinstance(count, _ods_ir.Attribute) or
    not _ods_ir.AttrBuilder.contains('I16Attr')) else
      _ods_ir.AttrBuilder.get('I16Attr')(count, context=_ods_context))
    results = []
    _ods_successors = None
    super().__init__(self.OPERATION_NAME, self._ODS_REGIONS, self._ODS_OPERAND_SEGMENTS, self._ODS_RESULT_SEGMENTS, attributes=attributes, results=results, operands=operands, successors=_ods_successors, regions=regions, loc=loc, ip=ip)

  @builtins.property
  def count(self) -> _ods_ir.IntegerAttr:
    return self.operation.attributes["count"]

  @count.setter
  def count(self, value: _ods_ir.IntegerAttr):
    if value is None:
      raise ValueError("'None' not allowed as value for mandatory attributes")
    self.operation.attributes["count"] = value

@_ods_cext.register_op_adaptor(WaitAsynccntOp)
class WaitAsynccntOpAdaptor(_ods_ir.OpAdaptor):
  OPERATION_NAME = "rocdl.s.wait.asynccnt"

  @builtins.property
  def count(self) -> _ods_ir.IntegerAttr:
    return self.attributes["count"]

def s_wait_asynccnt(count: _Union[int, _ods_ir.IntegerAttr], *, loc: _Optional[_ods_ir.Location] = None, ip: _Optional[_ods_ir.InsertionPoint] = None) -> WaitAsynccntOp:
  return WaitAsynccntOp(count=count, loc=loc, ip=ip)

@_ods_cext.register_operation(_Dialect)
class WaitAsyncmarkOp(_ods_ir.OpView):
  r"""
  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
  ```
  """

  OPERATION_NAME = "rocdl.wait.asyncmark"

  _ODS_REGIONS = (0, True)

  def __init__(self, count: _Union[int, _ods_ir.IntegerAttr], *, loc: _Optional[_ods_ir.Location] = None, ip: _Optional[_ods_ir.InsertionPoint] = None):
    operands = []
    attributes = {}
    regions = None
    _ods_context = _ods_get_default_loc_context(loc)
    attributes["count"] = (count if (
    isinstance(count, _ods_ir.Attribute) or
    not _ods_ir.AttrBuilder.contains('I16Attr')) else
      _ods_ir.AttrBuilder.get('I16Attr')(count, context=_ods_context))
    results = []
    _ods_successors = None
    super().__init__(self.OPERATION_NAME, self._ODS_REGIONS, self._ODS_OPERAND_SEGMENTS, self._ODS_RESULT_SEGMENTS, attributes=attributes, results=results, operands=operands, successors=_ods_successors, regions=regions, loc=loc, ip=ip)

  @builtins.property
  def count(self) -> _ods_ir.IntegerAttr:
    return self.operation.attributes["count"]

  @count.setter
  def count(self, value: _ods_ir.IntegerAttr):
    if value is None:
      raise ValueError("'None' not allowed as value for mandatory attributes")
    self.operation.attributes["count"] = value

@_ods_cext.register_op_adaptor(WaitAsyncmarkOp)
class WaitAsyncmarkOpAdaptor(_ods_ir.OpAdaptor):
  OPERATION_NAME = "rocdl.wait.asyncmark"

  @builtins.property
  def count(self) -> _ods_ir.IntegerAttr:
    return self.attributes["count"]

def wait_asyncmark(count: _Union[int, _ods_ir.IntegerAttr], *, loc: _Optional[_ods_ir.Location] = None, ip: _Optional[_ods_ir.InsertionPoint] = None) -> WaitAsyncmarkOp:
  return WaitAsyncmarkOp(count=count, loc=loc, ip=ip)

@_ods_cext.register_operation(_Dialect)
class WaitDscntOp(_ods_ir.OpView):
  r"""
  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
  ```
  """

  OPERATION_NAME = "rocdl.s.wait.dscnt"

  _ODS_REGIONS = (0, True)

  def __init__(self, count: _Union[int, _ods_ir.IntegerAttr], *, loc: _Optional[_ods_ir.Location] = None, ip: _Optional[_ods_ir.InsertionPoint] = None):
    operands = []
    attributes = {}
    regions = None
    _ods_context = _ods_get_default_loc_context(loc)
    attributes["count"] = (count if (
    isinstance(count, _ods_ir.Attribute) or
    not _ods_ir.AttrBuilder.contains('I16Attr')) else
      _ods_ir.AttrBuilder.get('I16Attr')(count, context=_ods_context))
    results = []
    _ods_successors = None
    super().__init__(self.OPERATION_NAME, self._ODS_REGIONS, self._ODS_OPERAND_SEGMENTS, self._ODS_RESULT_SEGMENTS, attributes=attributes, results=results, operands=operands, successors=_ods_successors, regions=regions, loc=loc, ip=ip)

  @builtins.property
  def count(self) -> _ods_ir.IntegerAttr:
    return self.operation.attributes["count"]

  @count.setter
  def count(self, value: _ods_ir.IntegerAttr):
    if value is None:
      raise ValueError("'None' not allowed as value for mandatory attributes")
    self.operation.attributes["count"] = value

@_ods_cext.register_op_adaptor(WaitDscntOp)
class WaitDscntOpAdaptor(_ods_ir.OpAdaptor):
  OPERATION_NAME = "rocdl.s.wait.dscnt"

  @builtins.property
  def count(self) -> _ods_ir.IntegerAttr:
    return self.attributes["count"]

def s_wait_dscnt(count: _Union[int, _ods_ir.IntegerAttr], *, loc: _Optional[_ods_ir.Location] = None, ip: _Optional[_ods_ir.InsertionPoint] = None) -> WaitDscntOp:
  return WaitDscntOp(count=count, loc=loc, ip=ip)

@_ods_cext.register_operation(_Dialect)
class WaitExpcntOp(_ods_ir.OpView):
  r"""
  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
  ```
  """

  OPERATION_NAME = "rocdl.s.wait.expcnt"

  _ODS_REGIONS = (0, True)

  def __init__(self, count: _Union[int, _ods_ir.IntegerAttr], *, loc: _Optional[_ods_ir.Location] = None, ip: _Optional[_ods_ir.InsertionPoint] = None):
    operands = []
    attributes = {}
    regions = None
    _ods_context = _ods_get_default_loc_context(loc)
    attributes["count"] = (count if (
    isinstance(count, _ods_ir.Attribute) or
    not _ods_ir.AttrBuilder.contains('I16Attr')) else
      _ods_ir.AttrBuilder.get('I16Attr')(count, context=_ods_context))
    results = []
    _ods_successors = None
    super().__init__(self.OPERATION_NAME, self._ODS_REGIONS, self._ODS_OPERAND_SEGMENTS, self._ODS_RESULT_SEGMENTS, attributes=attributes, results=results, operands=operands, successors=_ods_successors, regions=regions, loc=loc, ip=ip)

  @builtins.property
  def count(self) -> _ods_ir.IntegerAttr:
    return self.operation.attributes["count"]

  @count.setter
  def count(self, value: _ods_ir.IntegerAttr):
    if value is None:
      raise ValueError("'None' not allowed as value for mandatory attributes")
    self.operation.attributes["count"] = value

@_ods_cext.register_op_adaptor(WaitExpcntOp)
class WaitExpcntOpAdaptor(_ods_ir.OpAdaptor):
  OPERATION_NAME = "rocdl.s.wait.expcnt"

  @builtins.property
  def count(self) -> _ods_ir.IntegerAttr:
    return self.attributes["count"]

def s_wait_expcnt(count: _Union[int, _ods_ir.IntegerAttr], *, loc: _Optional[_ods_ir.Location] = None, ip: _Optional[_ods_ir.InsertionPoint] = None) -> WaitExpcntOp:
  return WaitExpcntOp(count=count, loc=loc, ip=ip)

@_ods_cext.register_operation(_Dialect)
class WaitLoadcntOp(_ods_ir.OpView):
  r"""
  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
  ```
  """

  OPERATION_NAME = "rocdl.s.wait.loadcnt"

  _ODS_REGIONS = (0, True)

  def __init__(self, count: _Union[int, _ods_ir.IntegerAttr], *, loc: _Optional[_ods_ir.Location] = None, ip: _Optional[_ods_ir.InsertionPoint] = None):
    operands = []
    attributes = {}
    regions = None
    _ods_context = _ods_get_default_loc_context(loc)
    attributes["count"] = (count if (
    isinstance(count, _ods_ir.Attribute) or
    not _ods_ir.AttrBuilder.contains('I16Attr')) else
      _ods_ir.AttrBuilder.get('I16Attr')(count, context=_ods_context))
    results = []
    _ods_successors = None
    super().__init__(self.OPERATION_NAME, self._ODS_REGIONS, self._ODS_OPERAND_SEGMENTS, self._ODS_RESULT_SEGMENTS, attributes=attributes, results=results, operands=operands, successors=_ods_successors, regions=regions, loc=loc, ip=ip)

  @builtins.property
  def count(self) -> _ods_ir.IntegerAttr:
    return self.operation.attributes["count"]

  @count.setter
  def count(self, value: _ods_ir.IntegerAttr):
    if value is None:
      raise ValueError("'None' not allowed as value for mandatory attributes")
    self.operation.attributes["count"] = value

@_ods_cext.register_op_adaptor(WaitLoadcntOp)
class WaitLoadcntOpAdaptor(_ods_ir.OpAdaptor):
  OPERATION_NAME = "rocdl.s.wait.loadcnt"

  @builtins.property
  def count(self) -> _ods_ir.IntegerAttr:
    return self.attributes["count"]

def s_wait_loadcnt(count: _Union[int, _ods_ir.IntegerAttr], *, loc: _Optional[_ods_ir.Location] = None, ip: _Optional[_ods_ir.InsertionPoint] = None) -> WaitLoadcntOp:
  return WaitLoadcntOp(count=count, loc=loc, ip=ip)

@_ods_cext.register_operation(_Dialect)
class WaitStorecntOp(_ods_ir.OpView):
  r"""
  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
  ```
  """

  OPERATION_NAME = "rocdl.s.wait.storecnt"

  _ODS_REGIONS = (0, True)

  def __init__(self, count: _Union[int, _ods_ir.IntegerAttr], *, loc: _Optional[_ods_ir.Location] = None, ip: _Optional[_ods_ir.InsertionPoint] = None):
    operands = []
    attributes = {}
    regions = None
    _ods_context = _ods_get_default_loc_context(loc)
    attributes["count"] = (count if (
    isinstance(count, _ods_ir.Attribute) or
    not _ods_ir.AttrBuilder.contains('I16Attr')) else
      _ods_ir.AttrBuilder.get('I16Attr')(count, context=_ods_context))
    results = []
    _ods_successors = None
    super().__init__(self.OPERATION_NAME, self._ODS_REGIONS, self._ODS_OPERAND_SEGMENTS, self._ODS_RESULT_SEGMENTS, attributes=attributes, results=results, operands=operands, successors=_ods_successors, regions=regions, loc=loc, ip=ip)

  @builtins.property
  def count(self) -> _ods_ir.IntegerAttr:
    return self.operation.attributes["count"]

  @count.setter
  def count(self, value: _ods_ir.IntegerAttr):
    if value is None:
      raise ValueError("'None' not allowed as value for mandatory attributes")
    self.operation.attributes["count"] = value

@_ods_cext.register_op_adaptor(WaitStorecntOp)
class WaitStorecntOpAdaptor(_ods_ir.OpAdaptor):
  OPERATION_NAME = "rocdl.s.wait.storecnt"

  @builtins.property
  def count(self) -> _ods_ir.IntegerAttr:
    return self.attributes["count"]

def s_wait_storecnt(count: _Union[int, _ods_ir.IntegerAttr], *, loc: _Optional[_ods_ir.Location] = None, ip: _Optional[_ods_ir.InsertionPoint] = None) -> WaitStorecntOp:
  return WaitStorecntOp(count=count, loc=loc, ip=ip)

@_ods_cext.register_operation(_Dialect)
class WaitTensorcntOp(_ods_ir.OpView):
  r"""
  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
  ```
  """

  OPERATION_NAME = "rocdl.s.wait.tensorcnt"

  _ODS_REGIONS = (0, True)

  def __init__(self, count: _Union[int, _ods_ir.IntegerAttr], *, loc: _Optional[_ods_ir.Location] = None, ip: _Optional[_ods_ir.InsertionPoint] = None):
    operands = []
    attributes = {}
    regions = None
    _ods_context = _ods_get_default_loc_context(loc)
    attributes["count"] = (count if (
    isinstance(count, _ods_ir.Attribute) or
    not _ods_ir.AttrBuilder.contains('I16Attr')) else
      _ods_ir.AttrBuilder.get('I16Attr')(count, context=_ods_context))
    results = []
    _ods_successors = None
    super().__init__(self.OPERATION_NAME, self._ODS_REGIONS, self._ODS_OPERAND_SEGMENTS, self._ODS_RESULT_SEGMENTS, attributes=attributes, results=results, operands=operands, successors=_ods_successors, regions=regions, loc=loc, ip=ip)

  @builtins.property
  def count(self) -> _ods_ir.IntegerAttr:
    return self.operation.attributes["count"]

  @count.setter
  def count(self, value: _ods_ir.IntegerAttr):
    if value is None:
      raise ValueError("'None' not allowed as value for mandatory attributes")
    self.operation.attributes["count"] = value

@_ods_cext.register_op_adaptor(WaitTensorcntOp)
class WaitTensorcntOpAdaptor(_ods_ir.OpAdaptor):
  OPERATION_NAME = "rocdl.s.wait.tensorcnt"

  @builtins.property
  def count(self) -> _ods_ir.IntegerAttr:
    return self.attributes["count"]

def s_wait_tensorcnt(count: _Union[int, _ods_ir.IntegerAttr], *, loc: _Optional[_ods_ir.Location] = None, ip: _Optional[_ods_ir.InsertionPoint] = None) -> WaitTensorcntOp:
  return WaitTensorcntOp(count=count, loc=loc, ip=ip)

@_ods_cext.register_operation(_Dialect)
class WakeupBarrierOp(_ods_ir.OpView):
  r"""
  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>
  ```
  """

  OPERATION_NAME = "rocdl.s.wakeup.barrier"

  _ODS_REGIONS = (0, True)

  def __init__(self, ptr: _ods_ir.Value, *, loc: _Optional[_ods_ir.Location] = None, ip: _Optional[_ods_ir.InsertionPoint] = None):
    operands = []
    attributes = {}
    regions = None
    operands.append(ptr)
    _ods_context = _ods_get_default_loc_context(loc)
    results = []
    _ods_successors = None
    super().__init__(self.OPERATION_NAME, self._ODS_REGIONS, self._ODS_OPERAND_SEGMENTS, self._ODS_RESULT_SEGMENTS, attributes=attributes, results=results, operands=operands, successors=_ods_successors, regions=regions, loc=loc, ip=ip)

  @builtins.property
  def ptr(self) -> _ods_ir.Value:
    return self.operation.operands[0]

@_ods_cext.register_op_adaptor(WakeupBarrierOp)
class WakeupBarrierOpAdaptor(_ods_ir.OpAdaptor):
  OPERATION_NAME = "rocdl.s.wakeup.barrier"

  @builtins.property
  def ptr(self) -> _ods_ir.Value:
    return self.operands[0]

def s_wakeup_barrier(ptr: _ods_ir.Value, *, loc: _Optional[_ods_ir.Location] = None, ip: _Optional[_ods_ir.InsertionPoint] = None) -> WakeupBarrierOp:
  return WakeupBarrierOp(ptr=ptr, loc=loc, ip=ip)

@_ods_cext.register_operation(_Dialect)
class WaveBarrierOp(_ods_ir.OpView):
  r"""
  Insert a wave-level (subgroup) barrier. Synchronizes lanes within a
  single wave/wavefront without any memory ordering guarantees.
  
  Example:
  ```mlir
  rocdl.wave.barrier
  ```
  """

  OPERATION_NAME = "rocdl.wave.barrier"

  _ODS_REGIONS = (0, True)

  def __init__(self, *, loc: _Optional[_ods_ir.Location] = None, ip: _Optional[_ods_ir.InsertionPoint] = None):
    operands = []
    attributes = {}
    regions = None
    _ods_context = _ods_get_default_loc_context(loc)
    results = []
    _ods_successors = None
    super().__init__(self.OPERATION_NAME, self._ODS_REGIONS, self._ODS_OPERAND_SEGMENTS, self._ODS_RESULT_SEGMENTS, attributes=attributes, results=results, operands=operands, successors=_ods_successors, regions=regions, loc=loc, ip=ip)

@_ods_cext.register_op_adaptor(WaveBarrierOp)
class WaveBarrierOpAdaptor(_ods_ir.OpAdaptor):
  OPERATION_NAME = "rocdl.wave.barrier"

def wave_barrier(*, loc: _Optional[_ods_ir.Location] = None, ip: _Optional[_ods_ir.InsertionPoint] = None) -> WaveBarrierOp:
  return WaveBarrierOp(loc=loc, ip=ip)

@_ods_cext.register_operation(_Dialect)
class WaveId(_ods_ir.OpView):
  r"""
  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, 0, 64> : i32
  ```
  """

  OPERATION_NAME = "rocdl.wave.id"

  _ODS_REGIONS = (0, True)

  def __init__(self, res: _ods_ir.Type, *, range: _Optional[_Union[_Any, _ods_ir.Attribute]] = None, loc: _Optional[_ods_ir.Location] = None, ip: _Optional[_ods_ir.InsertionPoint] = None):
    operands = []
    attributes = {}
    regions = None
    _ods_context = _ods_get_default_loc_context(loc)
    if range is not None: attributes["range"] = (range if (
        isinstance(range, _ods_ir.Attribute) or
        not _ods_ir.AttrBuilder.contains('LLVM_ConstantRangeAttr')) else
          _ods_ir.AttrBuilder.get('LLVM_ConstantRangeAttr')(range, context=_ods_context))
    results = []
    results.append(res)
    _ods_successors = None
    super().__init__(self.OPERATION_NAME, self._ODS_REGIONS, self._ODS_OPERAND_SEGMENTS, self._ODS_RESULT_SEGMENTS, attributes=attributes, results=results, operands=operands, successors=_ods_successors, regions=regions, loc=loc, ip=ip)

  @builtins.property
  def range(self) -> _Optional[_ods_ir.Attribute]:
    if "range" not in self.operation.attributes:
      return None
    return self.operation.attributes["range"]

  @range.setter
  def range(self, value: _Optional[_ods_ir.Attribute]):
    if value is not None:
      self.operation.attributes["range"] = value
    elif "range" in self.operation.attributes:
      del self.operation.attributes["range"]

  @range.deleter
  def range(self):
    del self.operation.attributes["range"]

  @builtins.property
  def res(self) -> _ods_ir.OpResult:
    return self.operation.results[0]

@_ods_cext.register_op_adaptor(WaveId)
class WaveIdAdaptor(_ods_ir.OpAdaptor):
  OPERATION_NAME = "rocdl.wave.id"

  @builtins.property
  def range(self) -> _Optional[_ods_ir.Attribute]:
    if "range" not in self.attributes:
      return None
    return self.attributes["range"]

def wave_id(res: _ods_ir.Type, *, range: _Optional[_Union[_Any, _ods_ir.Attribute]] = None, loc: _Optional[_ods_ir.Location] = None, ip: _Optional[_ods_ir.InsertionPoint] = None) -> _ods_ir.OpResult:
  return WaveId(res=res, range=range, loc=loc, ip=ip).result

@_ods_cext.register_operation(_Dialect)
class WavefrontSizeOp(_ods_ir.OpView):
  r"""
  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, 0, 64> : i32
  ```
  """

  OPERATION_NAME = "rocdl.wavefrontsize"

  _ODS_REGIONS = (0, True)

  def __init__(self, res: _ods_ir.Type, *, range: _Optional[_Union[_Any, _ods_ir.Attribute]] = None, loc: _Optional[_ods_ir.Location] = None, ip: _Optional[_ods_ir.InsertionPoint] = None):
    operands = []
    attributes = {}
    regions = None
    _ods_context = _ods_get_default_loc_context(loc)
    if range is not None: attributes["range"] = (range if (
        isinstance(range, _ods_ir.Attribute) or
        not _ods_ir.AttrBuilder.contains('LLVM_ConstantRangeAttr')) else
          _ods_ir.AttrBuilder.get('LLVM_ConstantRangeAttr')(range, context=_ods_context))
    results = []
    results.append(res)
    _ods_successors = None
    super().__init__(self.OPERATION_NAME, self._ODS_REGIONS, self._ODS_OPERAND_SEGMENTS, self._ODS_RESULT_SEGMENTS, attributes=attributes, results=results, operands=operands, successors=_ods_successors, regions=regions, loc=loc, ip=ip)

  @builtins.property
  def range(self) -> _Optional[_ods_ir.Attribute]:
    if "range" not in self.operation.attributes:
      return None
    return self.operation.attributes["range"]

  @range.setter
  def range(self, value: _Optional[_ods_ir.Attribute]):
    if value is not None:
      self.operation.attributes["range"] = value
    elif "range" in self.operation.attributes:
      del self.operation.attributes["range"]

  @range.deleter
  def range(self):
    del self.operation.attributes["range"]

  @builtins.property
  def res(self) -> _ods_ir.OpResult:
    return self.operation.results[0]

@_ods_cext.register_op_adaptor(WavefrontSizeOp)
class WavefrontSizeOpAdaptor(_ods_ir.OpAdaptor):
  OPERATION_NAME = "rocdl.wavefrontsize"

  @builtins.property
  def range(self) -> _Optional[_ods_ir.Attribute]:
    if "range" not in self.attributes:
      return None
    return self.attributes["range"]

def wavefrontsize(res: _ods_ir.Type, *, range: _Optional[_Union[_Any, _ods_ir.Attribute]] = None, loc: _Optional[_ods_ir.Location] = None, ip: _Optional[_ods_ir.InsertionPoint] = None) -> _ods_ir.OpResult:
  return WavefrontSizeOp(res=res, range=range, loc=loc, ip=ip).result

@_ods_cext.register_operation(_Dialect)
class dot4_f32_bf8_bf8(_ods_ir.OpView):
  r"""
  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
  ```
  """

  OPERATION_NAME = "rocdl.dot4.f32.bf8.bf8"

  _ODS_REGIONS = (0, True)

  def __init__(self, res: _ods_ir.Type, a: _ods_ir.Value, b: _ods_ir.Value, c: _ods_ir.Value, *, loc: _Optional[_ods_ir.Location] = None, ip: _Optional[_ods_ir.InsertionPoint] = None):
    operands = []
    attributes = {}
    regions = None
    operands.append(a)
    operands.append(b)
    operands.append(c)
    _ods_context = _ods_get_default_loc_context(loc)
    results = []
    results.append(res)
    _ods_successors = None
    super().__init__(self.OPERATION_NAME, self._ODS_REGIONS, self._ODS_OPERAND_SEGMENTS, self._ODS_RESULT_SEGMENTS, attributes=attributes, results=results, operands=operands, successors=_ods_successors, regions=regions, loc=loc, ip=ip)

  @builtins.property
  def a(self) -> _ods_ir.Value:
    return self.operation.operands[0]

  @builtins.property
  def b(self) -> _ods_ir.Value:
    return self.operation.operands[1]

  @builtins.property
  def c(self) -> _ods_ir.Value:
    return self.operation.operands[2]

  @builtins.property
  def res(self) -> _ods_ir.OpResult:
    return self.operation.results[0]

@_ods_cext.register_op_adaptor(dot4_f32_bf8_bf8)
class dot4_f32_bf8_bf8Adaptor(_ods_ir.OpAdaptor):
  OPERATION_NAME = "rocdl.dot4.f32.bf8.bf8"

  @builtins.property
  def a(self) -> _ods_ir.Value:
    return self.operands[0]

  @builtins.property
  def b(self) -> _ods_ir.Value:
    return self.operands[1]

  @builtins.property
  def c(self) -> _ods_ir.Value:
    return self.operands[2]

def dot4_f32_bf8_bf8_(res: _ods_ir.Type, a: _ods_ir.Value, b: _ods_ir.Value, c: _ods_ir.Value, *, loc: _Optional[_ods_ir.Location] = None, ip: _Optional[_ods_ir.InsertionPoint] = None) -> _ods_ir.OpResult:
  return dot4_f32_bf8_bf8(res=res, a=a, b=b, c=c, loc=loc, ip=ip).result

@_ods_cext.register_operation(_Dialect)
class dot4_f32_bf8_fp8(_ods_ir.OpView):
  r"""
  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
  ```
  """

  OPERATION_NAME = "rocdl.dot4.f32.bf8.fp8"

  _ODS_REGIONS = (0, True)

  def __init__(self, res: _ods_ir.Type, a: _ods_ir.Value, b: _ods_ir.Value, c: _ods_ir.Value, *, loc: _Optional[_ods_ir.Location] = None, ip: _Optional[_ods_ir.InsertionPoint] = None):
    operands = []
    attributes = {}
    regions = None
    operands.append(a)
    operands.append(b)
    operands.append(c)
    _ods_context = _ods_get_default_loc_context(loc)
    results = []
    results.append(res)
    _ods_successors = None
    super().__init__(self.OPERATION_NAME, self._ODS_REGIONS, self._ODS_OPERAND_SEGMENTS, self._ODS_RESULT_SEGMENTS, attributes=attributes, results=results, operands=operands, successors=_ods_successors, regions=regions, loc=loc, ip=ip)

  @builtins.property
  def a(self) -> _ods_ir.Value:
    return self.operation.operands[0]

  @builtins.property
  def b(self) -> _ods_ir.Value:
    return self.operation.operands[1]

  @builtins.property
  def c(self) -> _ods_ir.Value:
    return self.operation.operands[2]

  @builtins.property
  def res(self) -> _ods_ir.OpResult:
    return self.operation.results[0]

@_ods_cext.register_op_adaptor(dot4_f32_bf8_fp8)
class dot4_f32_bf8_fp8Adaptor(_ods_ir.OpAdaptor):
  OPERATION_NAME = "rocdl.dot4.f32.bf8.fp8"

  @builtins.property
  def a(self) -> _ods_ir.Value:
    return self.operands[0]

  @builtins.property
  def b(self) -> _ods_ir.Value:
    return self.operands[1]

  @builtins.property
  def c(self) -> _ods_ir.Value:
    return self.operands[2]

def dot4_f32_bf8_fp8_(res: _ods_ir.Type, a: _ods_ir.Value, b: _ods_ir.Value, c: _ods_ir.Value, *, loc: _Optional[_ods_ir.Location] = None, ip: _Optional[_ods_ir.InsertionPoint] = None) -> _ods_ir.OpResult:
  return dot4_f32_bf8_fp8(res=res, a=a, b=b, c=c, loc=loc, ip=ip).result

@_ods_cext.register_operation(_Dialect)
class dot4_f32_fp8_bf8(_ods_ir.OpView):
  r"""
  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
  ```
  """

  OPERATION_NAME = "rocdl.dot4.f32.fp8.bf8"

  _ODS_REGIONS = (0, True)

  def __init__(self, res: _ods_ir.Type, a: _ods_ir.Value, b: _ods_ir.Value, c: _ods_ir.Value, *, loc: _Optional[_ods_ir.Location] = None, ip: _Optional[_ods_ir.InsertionPoint] = None):
    operands = []
    attributes = {}
    regions = None
    operands.append(a)
    operands.append(b)
    operands.append(c)
    _ods_context = _ods_get_default_loc_context(loc)
    results = []
    results.append(res)
    _ods_successors = None
    super().__init__(self.OPERATION_NAME, self._ODS_REGIONS, self._ODS_OPERAND_SEGMENTS, self._ODS_RESULT_SEGMENTS, attributes=attributes, results=results, operands=operands, successors=_ods_successors, regions=regions, loc=loc, ip=ip)

  @builtins.property
  def a(self) -> _ods_ir.Value:
    return self.operation.operands[0]

  @builtins.property
  def b(self) -> _ods_ir.Value:
    return self.operation.operands[1]

  @builtins.property
  def c(self) -> _ods_ir.Value:
    return self.operation.operands[2]

  @builtins.property
  def res(self) -> _ods_ir.OpResult:
    return self.operation.results[0]

@_ods_cext.register_op_adaptor(dot4_f32_fp8_bf8)
class dot4_f32_fp8_bf8Adaptor(_ods_ir.OpAdaptor):
  OPERATION_NAME = "rocdl.dot4.f32.fp8.bf8"

  @builtins.property
  def a(self) -> _ods_ir.Value:
    return self.operands[0]

  @builtins.property
  def b(self) -> _ods_ir.Value:
    return self.operands[1]

  @builtins.property
  def c(self) -> _ods_ir.Value:
    return self.operands[2]

def dot4_f32_fp8_bf8_(res: _ods_ir.Type, a: _ods_ir.Value, b: _ods_ir.Value, c: _ods_ir.Value, *, loc: _Optional[_ods_ir.Location] = None, ip: _Optional[_ods_ir.InsertionPoint] = None) -> _ods_ir.OpResult:
  return dot4_f32_fp8_bf8(res=res, a=a, b=b, c=c, loc=loc, ip=ip).result

@_ods_cext.register_operation(_Dialect)
class dot4_f32_fp8_fp8(_ods_ir.OpView):
  r"""
  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
  ```
  """

  OPERATION_NAME = "rocdl.dot4.f32.fp8.fp8"

  _ODS_REGIONS = (0, True)

  def __init__(self, res: _ods_ir.Type, a: _ods_ir.Value, b: _ods_ir.Value, c: _ods_ir.Value, *, loc: _Optional[_ods_ir.Location] = None, ip: _Optional[_ods_ir.InsertionPoint] = None):
    operands = []
    attributes = {}
    regions = None
    operands.append(a)
    operands.append(b)
    operands.append(c)
    _ods_context = _ods_get_default_loc_context(loc)
    results = []
    results.append(res)
    _ods_successors = None
    super().__init__(self.OPERATION_NAME, self._ODS_REGIONS, self._ODS_OPERAND_SEGMENTS, self._ODS_RESULT_SEGMENTS, attributes=attributes, results=results, operands=operands, successors=_ods_successors, regions=regions, loc=loc, ip=ip)

  @builtins.property
  def a(self) -> _ods_ir.Value:
    return self.operation.operands[0]

  @builtins.property
  def b(self) -> _ods_ir.Value:
    return self.operation.operands[1]

  @builtins.property
  def c(self) -> _ods_ir.Value:
    return self.operation.operands[2]

  @builtins.property
  def res(self) -> _ods_ir.OpResult:
    return self.operation.results[0]

@_ods_cext.register_op_adaptor(dot4_f32_fp8_fp8)
class dot4_f32_fp8_fp8Adaptor(_ods_ir.OpAdaptor):
  OPERATION_NAME = "rocdl.dot4.f32.fp8.fp8"

  @builtins.property
  def a(self) -> _ods_ir.Value:
    return self.operands[0]

  @builtins.property
  def b(self) -> _ods_ir.Value:
    return self.operands[1]

  @builtins.property
  def c(self) -> _ods_ir.Value:
    return self.operands[2]

def dot4_f32_fp8_fp8_(res: _ods_ir.Type, a: _ods_ir.Value, b: _ods_ir.Value, c: _ods_ir.Value, *, loc: _Optional[_ods_ir.Location] = None, ip: _Optional[_ods_ir.InsertionPoint] = None) -> _ods_ir.OpResult:
  return dot4_f32_fp8_fp8(res=res, a=a, b=b, c=c, loc=loc, ip=ip).result

@_ods_cext.register_operation(_Dialect)
class ds_read_tr4_b64(_ods_ir.OpView):
  OPERATION_NAME = "rocdl.ds.read.tr4.b64"

  _ODS_REGIONS = (0, True)

  def __init__(self, res: _ods_ir.Type, ptr: _ods_ir.Value, *, alias_scopes: _Optional[_Union[_Any, _ods_ir.ArrayAttr]] = None, noalias_scopes: _Optional[_Union[_Any, _ods_ir.ArrayAttr]] = None, tbaa: _Optional[_Union[_Any, _ods_ir.ArrayAttr]] = None, loc: _Optional[_ods_ir.Location] = None, ip: _Optional[_ods_ir.InsertionPoint] = None):
    operands = []
    attributes = {}
    regions = None
    operands.append(ptr)
    _ods_context = _ods_get_default_loc_context(loc)
    if alias_scopes is not None: attributes["alias_scopes"] = (alias_scopes if (
        isinstance(alias_scopes, _ods_ir.Attribute) or
        not _ods_ir.AttrBuilder.contains('LLVM_AliasScopeArrayAttr')) else
          _ods_ir.AttrBuilder.get('LLVM_AliasScopeArrayAttr')(alias_scopes, context=_ods_context))
    if noalias_scopes is not None: attributes["noalias_scopes"] = (noalias_scopes if (
        isinstance(noalias_scopes, _ods_ir.Attribute) or
        not _ods_ir.AttrBuilder.contains('LLVM_AliasScopeArrayAttr')) else
          _ods_ir.AttrBuilder.get('LLVM_AliasScopeArrayAttr')(noalias_scopes, context=_ods_context))
    if tbaa is not None: attributes["tbaa"] = (tbaa if (
        isinstance(tbaa, _ods_ir.Attribute) or
        not _ods_ir.AttrBuilder.contains('LLVM_TBAATagArrayAttr')) else
          _ods_ir.AttrBuilder.get('LLVM_TBAATagArrayAttr')(tbaa, context=_ods_context))
    results = []
    results.append(res)
    _ods_successors = None
    super().__init__(self.OPERATION_NAME, self._ODS_REGIONS, self._ODS_OPERAND_SEGMENTS, self._ODS_RESULT_SEGMENTS, attributes=attributes, results=results, operands=operands, successors=_ods_successors, regions=regions, loc=loc, ip=ip)

  @builtins.property
  def ptr(self) -> _ods_ir.Value:
    return self.operation.operands[0]

  @builtins.property
  def alias_scopes(self) -> _Optional[_ods_ir.ArrayAttr]:
    if "alias_scopes" not in self.operation.attributes:
      return None
    return self.operation.attributes["alias_scopes"]

  @alias_scopes.setter
  def alias_scopes(self, value: _Optional[_ods_ir.ArrayAttr]):
    if value is not None:
      self.operation.attributes["alias_scopes"] = value
    elif "alias_scopes" in self.operation.attributes:
      del self.operation.attributes["alias_scopes"]

  @alias_scopes.deleter
  def alias_scopes(self):
    del self.operation.attributes["alias_scopes"]

  @builtins.property
  def noalias_scopes(self) -> _Optional[_ods_ir.ArrayAttr]:
    if "noalias_scopes" not in self.operation.attributes:
      return None
    return self.operation.attributes["noalias_scopes"]

  @noalias_scopes.setter
  def noalias_scopes(self, value: _Optional[_ods_ir.ArrayAttr]):
    if value is not None:
      self.operation.attributes["noalias_scopes"] = value
    elif "noalias_scopes" in self.operation.attributes:
      del self.operation.attributes["noalias_scopes"]

  @noalias_scopes.deleter
  def noalias_scopes(self):
    del self.operation.attributes["noalias_scopes"]

  @builtins.property
  def tbaa(self) -> _Optional[_ods_ir.ArrayAttr]:
    if "tbaa" not in self.operation.attributes:
      return None
    return self.operation.attributes["tbaa"]

  @tbaa.setter
  def tbaa(self, value: _Optional[_ods_ir.ArrayAttr]):
    if value is not None:
      self.operation.attributes["tbaa"] = value
    elif "tbaa" in self.operation.attributes:
      del self.operation.attributes["tbaa"]

  @tbaa.deleter
  def tbaa(self):
    del self.operation.attributes["tbaa"]

  @builtins.property
  def res(self) -> _ods_ir.OpResult:
    return self.operation.results[0]

@_ods_cext.register_op_adaptor(ds_read_tr4_b64)
class ds_read_tr4_b64Adaptor(_ods_ir.OpAdaptor):
  OPERATION_NAME = "rocdl.ds.read.tr4.b64"

  @builtins.property
  def ptr(self) -> _ods_ir.Value:
    return self.operands[0]

  @builtins.property
  def alias_scopes(self) -> _Optional[_ods_ir.ArrayAttr]:
    if "alias_scopes" not in self.attributes:
      return None
    return self.attributes["alias_scopes"]

  @builtins.property
  def noalias_scopes(self) -> _Optional[_ods_ir.ArrayAttr]:
    if "noalias_scopes" not in self.attributes:
      return None
    return self.attributes["noalias_scopes"]

  @builtins.property
  def tbaa(self) -> _Optional[_ods_ir.ArrayAttr]:
    if "tbaa" not in self.attributes:
      return None
    return self.attributes["tbaa"]

def ds_read_tr4_b64_(res: _ods_ir.Type, ptr: _ods_ir.Value, *, alias_scopes: _Optional[_Union[_Any, _ods_ir.ArrayAttr]] = None, noalias_scopes: _Optional[_Union[_Any, _ods_ir.ArrayAttr]] = None, tbaa: _Optional[_Union[_Any, _ods_ir.ArrayAttr]] = None, loc: _Optional[_ods_ir.Location] = None, ip: _Optional[_ods_ir.InsertionPoint] = None) -> _ods_ir.OpResult:
  return ds_read_tr4_b64(res=res, ptr=ptr, alias_scopes=alias_scopes, noalias_scopes=noalias_scopes, tbaa=tbaa, loc=loc, ip=ip).result

@_ods_cext.register_operation(_Dialect)
class ds_read_tr6_b96(_ods_ir.OpView):
  OPERATION_NAME = "rocdl.ds.read.tr6.b96"

  _ODS_REGIONS = (0, True)

  def __init__(self, res: _ods_ir.Type, ptr: _ods_ir.Value, *, alias_scopes: _Optional[_Union[_Any, _ods_ir.ArrayAttr]] = None, noalias_scopes: _Optional[_Union[_Any, _ods_ir.ArrayAttr]] = None, tbaa: _Optional[_Union[_Any, _ods_ir.ArrayAttr]] = None, loc: _Optional[_ods_ir.Location] = None, ip: _Optional[_ods_ir.InsertionPoint] = None):
    operands = []
    attributes = {}
    regions = None
    operands.append(ptr)
    _ods_context = _ods_get_default_loc_context(loc)
    if alias_scopes is not None: attributes["alias_scopes"] = (alias_scopes if (
        isinstance(alias_scopes, _ods_ir.Attribute) or
        not _ods_ir.AttrBuilder.contains('LLVM_AliasScopeArrayAttr')) else
          _ods_ir.AttrBuilder.get('LLVM_AliasScopeArrayAttr')(alias_scopes, context=_ods_context))
    if noalias_scopes is not None: attributes["noalias_scopes"] = (noalias_scopes if (
        isinstance(noalias_scopes, _ods_ir.Attribute) or
        not _ods_ir.AttrBuilder.contains('LLVM_AliasScopeArrayAttr')) else
          _ods_ir.AttrBuilder.get('LLVM_AliasScopeArrayAttr')(noalias_scopes, context=_ods_context))
    if tbaa is not None: attributes["tbaa"] = (tbaa if (
        isinstance(tbaa, _ods_ir.Attribute) or
        not _ods_ir.AttrBuilder.contains('LLVM_TBAATagArrayAttr')) else
          _ods_ir.AttrBuilder.get('LLVM_TBAATagArrayAttr')(tbaa, context=_ods_context))
    results = []
    results.append(res)
    _ods_successors = None
    super().__init__(self.OPERATION_NAME, self._ODS_REGIONS, self._ODS_OPERAND_SEGMENTS, self._ODS_RESULT_SEGMENTS, attributes=attributes, results=results, operands=operands, successors=_ods_successors, regions=regions, loc=loc, ip=ip)

  @builtins.property
  def ptr(self) -> _ods_ir.Value:
    return self.operation.operands[0]

  @builtins.property
  def alias_scopes(self) -> _Optional[_ods_ir.ArrayAttr]:
    if "alias_scopes" not in self.operation.attributes:
      return None
    return self.operation.attributes["alias_scopes"]

  @alias_scopes.setter
  def alias_scopes(self, value: _Optional[_ods_ir.ArrayAttr]):
    if value is not None:
      self.operation.attributes["alias_scopes"] = value
    elif "alias_scopes" in self.operation.attributes:
      del self.operation.attributes["alias_scopes"]

  @alias_scopes.deleter
  def alias_scopes(self):
    del self.operation.attributes["alias_scopes"]

  @builtins.property
  def noalias_scopes(self) -> _Optional[_ods_ir.ArrayAttr]:
    if "noalias_scopes" not in self.operation.attributes:
      return None
    return self.operation.attributes["noalias_scopes"]

  @noalias_scopes.setter
  def noalias_scopes(self, value: _Optional[_ods_ir.ArrayAttr]):
    if value is not None:
      self.operation.attributes["noalias_scopes"] = value
    elif "noalias_scopes" in self.operation.attributes:
      del self.operation.attributes["noalias_scopes"]

  @noalias_scopes.deleter
  def noalias_scopes(self):
    del self.operation.attributes["noalias_scopes"]

  @builtins.property
  def tbaa(self) -> _Optional[_ods_ir.ArrayAttr]:
    if "tbaa" not in self.operation.attributes:
      return None
    return self.operation.attributes["tbaa"]

  @tbaa.setter
  def tbaa(self, value: _Optional[_ods_ir.ArrayAttr]):
    if value is not None:
      self.operation.attributes["tbaa"] = value
    elif "tbaa" in self.operation.attributes:
      del self.operation.attributes["tbaa"]

  @tbaa.deleter
  def tbaa(self):
    del self.operation.attributes["tbaa"]

  @builtins.property
  def res(self) -> _ods_ir.OpResult:
    return self.operation.results[0]

@_ods_cext.register_op_adaptor(ds_read_tr6_b96)
class ds_read_tr6_b96Adaptor(_ods_ir.OpAdaptor):
  OPERATION_NAME = "rocdl.ds.read.tr6.b96"

  @builtins.property
  def ptr(self) -> _ods_ir.Value:
    return self.operands[0]

  @builtins.property
  def alias_scopes(self) -> _Optional[_ods_ir.ArrayAttr]:
    if "alias_scopes" not in self.attributes:
      return None
    return self.attributes["alias_scopes"]

  @builtins.property
  def noalias_scopes(self) -> _Optional[_ods_ir.ArrayAttr]:
    if "noalias_scopes" not in self.attributes:
      return None
    return self.attributes["noalias_scopes"]

  @builtins.property
  def tbaa(self) -> _Optional[_ods_ir.ArrayAttr]:
    if "tbaa" not in self.attributes:
      return None
    return self.attributes["tbaa"]

def ds_read_tr6_b96_(res: _ods_ir.Type, ptr: _ods_ir.Value, *, alias_scopes: _Optional[_Union[_Any, _ods_ir.ArrayAttr]] = None, noalias_scopes: _Optional[_Union[_Any, _ods_ir.ArrayAttr]] = None, tbaa: _Optional[_Union[_Any, _ods_ir.ArrayAttr]] = None, loc: _Optional[_ods_ir.Location] = None, ip: _Optional[_ods_ir.InsertionPoint] = None) -> _ods_ir.OpResult:
  return ds_read_tr6_b96(res=res, ptr=ptr, alias_scopes=alias_scopes, noalias_scopes=noalias_scopes, tbaa=tbaa, loc=loc, ip=ip).result

@_ods_cext.register_operation(_Dialect)
class ds_read_tr8_b64(_ods_ir.OpView):
  OPERATION_NAME = "rocdl.ds.read.tr8.b64"

  _ODS_REGIONS = (0, True)

  def __init__(self, res: _ods_ir.Type, ptr: _ods_ir.Value, *, alias_scopes: _Optional[_Union[_Any, _ods_ir.ArrayAttr]] = None, noalias_scopes: _Optional[_Union[_Any, _ods_ir.ArrayAttr]] = None, tbaa: _Optional[_Union[_Any, _ods_ir.ArrayAttr]] = None, loc: _Optional[_ods_ir.Location] = None, ip: _Optional[_ods_ir.InsertionPoint] = None):
    operands = []
    attributes = {}
    regions = None
    operands.append(ptr)
    _ods_context = _ods_get_default_loc_context(loc)
    if alias_scopes is not None: attributes["alias_scopes"] = (alias_scopes if (
        isinstance(alias_scopes, _ods_ir.Attribute) or
        not _ods_ir.AttrBuilder.contains('LLVM_AliasScopeArrayAttr')) else
          _ods_ir.AttrBuilder.get('LLVM_AliasScopeArrayAttr')(alias_scopes, context=_ods_context))
    if noalias_scopes is not None: attributes["noalias_scopes"] = (noalias_scopes if (
        isinstance(noalias_scopes, _ods_ir.Attribute) or
        not _ods_ir.AttrBuilder.contains('LLVM_AliasScopeArrayAttr')) else
          _ods_ir.AttrBuilder.get('LLVM_AliasScopeArrayAttr')(noalias_scopes, context=_ods_context))
    if tbaa is not None: attributes["tbaa"] = (tbaa if (
        isinstance(tbaa, _ods_ir.Attribute) or
        not _ods_ir.AttrBuilder.contains('LLVM_TBAATagArrayAttr')) else
          _ods_ir.AttrBuilder.get('LLVM_TBAATagArrayAttr')(tbaa, context=_ods_context))
    results = []
    results.append(res)
    _ods_successors = None
    super().__init__(self.OPERATION_NAME, self._ODS_REGIONS, self._ODS_OPERAND_SEGMENTS, self._ODS_RESULT_SEGMENTS, attributes=attributes, results=results, operands=operands, successors=_ods_successors, regions=regions, loc=loc, ip=ip)

  @builtins.property
  def ptr(self) -> _ods_ir.Value:
    return self.operation.operands[0]

  @builtins.property
  def alias_scopes(self) -> _Optional[_ods_ir.ArrayAttr]:
    if "alias_scopes" not in self.operation.attributes:
      return None
    return self.operation.attributes["alias_scopes"]

  @alias_scopes.setter
  def alias_scopes(self, value: _Optional[_ods_ir.ArrayAttr]):
    if value is not None:
      self.operation.attributes["alias_scopes"] = value
    elif "alias_scopes" in self.operation.attributes:
      del self.operation.attributes["alias_scopes"]

  @alias_scopes.deleter
  def alias_scopes(self):
    del self.operation.attributes["alias_scopes"]

  @builtins.property
  def noalias_scopes(self) -> _Optional[_ods_ir.ArrayAttr]:
    if "noalias_scopes" not in self.operation.attributes:
      return None
    return self.operation.attributes["noalias_scopes"]

  @noalias_scopes.setter
  def noalias_scopes(self, value: _Optional[_ods_ir.ArrayAttr]):
    if value is not None:
      self.operation.attributes["noalias_scopes"] = value
    elif "noalias_scopes" in self.operation.attributes:
      del self.operation.attributes["noalias_scopes"]

  @noalias_scopes.deleter
  def noalias_scopes(self):
    del self.operation.attributes["noalias_scopes"]

  @builtins.property
  def tbaa(self) -> _Optional[_ods_ir.ArrayAttr]:
    if "tbaa" not in self.operation.attributes:
      return None
    return self.operation.attributes["tbaa"]

  @tbaa.setter
  def tbaa(self, value: _Optional[_ods_ir.ArrayAttr]):
    if value is not None:
      self.operation.attributes["tbaa"] = value
    elif "tbaa" in self.operation.attributes:
      del self.operation.attributes["tbaa"]

  @tbaa.deleter
  def tbaa(self):
    del self.operation.attributes["tbaa"]

  @builtins.property
  def res(self) -> _ods_ir.OpResult:
    return self.operation.results[0]

@_ods_cext.register_op_adaptor(ds_read_tr8_b64)
class ds_read_tr8_b64Adaptor(_ods_ir.OpAdaptor):
  OPERATION_NAME = "rocdl.ds.read.tr8.b64"

  @builtins.property
  def ptr(self) -> _ods_ir.Value:
    return self.operands[0]

  @builtins.property
  def alias_scopes(self) -> _Optional[_ods_ir.ArrayAttr]:
    if "alias_scopes" not in self.attributes:
      return None
    return self.attributes["alias_scopes"]

  @builtins.property
  def noalias_scopes(self) -> _Optional[_ods_ir.ArrayAttr]:
    if "noalias_scopes" not in self.attributes:
      return None
    return self.attributes["noalias_scopes"]

  @builtins.property
  def tbaa(self) -> _Optional[_ods_ir.ArrayAttr]:
    if "tbaa" not in self.attributes:
      return None
    return self.attributes["tbaa"]

def ds_read_tr8_b64_(res: _ods_ir.Type, ptr: _ods_ir.Value, *, alias_scopes: _Optional[_Union[_Any, _ods_ir.ArrayAttr]] = None, noalias_scopes: _Optional[_Union[_Any, _ods_ir.ArrayAttr]] = None, tbaa: _Optional[_Union[_Any, _ods_ir.ArrayAttr]] = None, loc: _Optional[_ods_ir.Location] = None, ip: _Optional[_ods_ir.InsertionPoint] = None) -> _ods_ir.OpResult:
  return ds_read_tr8_b64(res=res, ptr=ptr, alias_scopes=alias_scopes, noalias_scopes=noalias_scopes, tbaa=tbaa, loc=loc, ip=ip).result

@_ods_cext.register_operation(_Dialect)
class ds_read_tr16_b64(_ods_ir.OpView):
  OPERATION_NAME = "rocdl.ds.read.tr16.b64"

  _ODS_REGIONS = (0, True)

  def __init__(self, res: _ods_ir.Type, ptr: _ods_ir.Value, *, alias_scopes: _Optional[_Union[_Any, _ods_ir.ArrayAttr]] = None, noalias_scopes: _Optional[_Union[_Any, _ods_ir.ArrayAttr]] = None, tbaa: _Optional[_Union[_Any, _ods_ir.ArrayAttr]] = None, loc: _Optional[_ods_ir.Location] = None, ip: _Optional[_ods_ir.InsertionPoint] = None):
    operands = []
    attributes = {}
    regions = None
    operands.append(ptr)
    _ods_context = _ods_get_default_loc_context(loc)
    if alias_scopes is not None: attributes["alias_scopes"] = (alias_scopes if (
        isinstance(alias_scopes, _ods_ir.Attribute) or
        not _ods_ir.AttrBuilder.contains('LLVM_AliasScopeArrayAttr')) else
          _ods_ir.AttrBuilder.get('LLVM_AliasScopeArrayAttr')(alias_scopes, context=_ods_context))
    if noalias_scopes is not None: attributes["noalias_scopes"] = (noalias_scopes if (
        isinstance(noalias_scopes, _ods_ir.Attribute) or
        not _ods_ir.AttrBuilder.contains('LLVM_AliasScopeArrayAttr')) else
          _ods_ir.AttrBuilder.get('LLVM_AliasScopeArrayAttr')(noalias_scopes, context=_ods_context))
    if tbaa is not None: attributes["tbaa"] = (tbaa if (
        isinstance(tbaa, _ods_ir.Attribute) or
        not _ods_ir.AttrBuilder.contains('LLVM_TBAATagArrayAttr')) else
          _ods_ir.AttrBuilder.get('LLVM_TBAATagArrayAttr')(tbaa, context=_ods_context))
    results = []
    results.append(res)
    _ods_successors = None
    super().__init__(self.OPERATION_NAME, self._ODS_REGIONS, self._ODS_OPERAND_SEGMENTS, self._ODS_RESULT_SEGMENTS, attributes=attributes, results=results, operands=operands, successors=_ods_successors, regions=regions, loc=loc, ip=ip)

  @builtins.property
  def ptr(self) -> _ods_ir.Value:
    return self.operation.operands[0]

  @builtins.property
  def alias_scopes(self) -> _Optional[_ods_ir.ArrayAttr]:
    if "alias_scopes" not in self.operation.attributes:
      return None
    return self.operation.attributes["alias_scopes"]

  @alias_scopes.setter
  def alias_scopes(self, value: _Optional[_ods_ir.ArrayAttr]):
    if value is not None:
      self.operation.attributes["alias_scopes"] = value
    elif "alias_scopes" in self.operation.attributes:
      del self.operation.attributes["alias_scopes"]

  @alias_scopes.deleter
  def alias_scopes(self):
    del self.operation.attributes["alias_scopes"]

  @builtins.property
  def noalias_scopes(self) -> _Optional[_ods_ir.ArrayAttr]:
    if "noalias_scopes" not in self.operation.attributes:
      return None
    return self.operation.attributes["noalias_scopes"]

  @noalias_scopes.setter
  def noalias_scopes(self, value: _Optional[_ods_ir.ArrayAttr]):
    if value is not None:
      self.operation.attributes["noalias_scopes"] = value
    elif "noalias_scopes" in self.operation.attributes:
      del self.operation.attributes["noalias_scopes"]

  @noalias_scopes.deleter
  def noalias_scopes(self):
    del self.operation.attributes["noalias_scopes"]

  @builtins.property
  def tbaa(self) -> _Optional[_ods_ir.ArrayAttr]:
    if "tbaa" not in self.operation.attributes:
      return None
    return self.operation.attributes["tbaa"]

  @tbaa.setter
  def tbaa(self, value: _Optional[_ods_ir.ArrayAttr]):
    if value is not None:
      self.operation.attributes["tbaa"] = value
    elif "tbaa" in self.operation.attributes:
      del self.operation.attributes["tbaa"]

  @tbaa.deleter
  def tbaa(self):
    del self.operation.attributes["tbaa"]

  @builtins.property
  def res(self) -> _ods_ir.OpResult:
    return self.operation.results[0]

@_ods_cext.register_op_adaptor(ds_read_tr16_b64)
class ds_read_tr16_b64Adaptor(_ods_ir.OpAdaptor):
  OPERATION_NAME = "rocdl.ds.read.tr16.b64"

  @builtins.property
  def ptr(self) -> _ods_ir.Value:
    return self.operands[0]

  @builtins.property
  def alias_scopes(self) -> _Optional[_ods_ir.ArrayAttr]:
    if "alias_scopes" not in self.attributes:
      return None
    return self.attributes["alias_scopes"]

  @builtins.property
  def noalias_scopes(self) -> _Optional[_ods_ir.ArrayAttr]:
    if "noalias_scopes" not in self.attributes:
      return None
    return self.attributes["noalias_scopes"]

  @builtins.property
  def tbaa(self) -> _Optional[_ods_ir.ArrayAttr]:
    if "tbaa" not in self.attributes:
      return None
    return self.attributes["tbaa"]

def ds_read_tr16_b64_(res: _ods_ir.Type, ptr: _ods_ir.Value, *, alias_scopes: _Optional[_Union[_Any, _ods_ir.ArrayAttr]] = None, noalias_scopes: _Optional[_Union[_Any, _ods_ir.ArrayAttr]] = None, tbaa: _Optional[_Union[_Any, _ods_ir.ArrayAttr]] = None, loc: _Optional[_ods_ir.Location] = None, ip: _Optional[_ods_ir.InsertionPoint] = None) -> _ods_ir.OpResult:
  return ds_read_tr16_b64(res=res, ptr=ptr, alias_scopes=alias_scopes, noalias_scopes=noalias_scopes, tbaa=tbaa, loc=loc, ip=ip).result

@_ods_cext.register_operation(_Dialect)
class fdot2(_ods_ir.OpView):
  r"""
  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
  ```
  """

  OPERATION_NAME = "rocdl.fdot2"

  _ODS_REGIONS = (0, True)

  def __init__(self, res: _ods_ir.Type, a: _ods_ir.Value[_ods_ir.VectorType], b: _ods_ir.Value[_ods_ir.VectorType], c: _ods_ir.Value, *, clamp: _Optional[_Union[bool, _ods_ir.BoolAttr]] = None, loc: _Optional[_ods_ir.Location] = None, ip: _Optional[_ods_ir.InsertionPoint] = None):
    operands = []
    attributes = {}
    regions = None
    operands.append(a)
    operands.append(b)
    operands.append(c)
    _ods_context = _ods_get_default_loc_context(loc)
    if clamp is not None: attributes["clamp"] = (clamp if (
        isinstance(clamp, _ods_ir.Attribute) or
        not _ods_ir.AttrBuilder.contains('I1Attr')) else
          _ods_ir.AttrBuilder.get('I1Attr')(clamp, context=_ods_context))
    results = []
    results.append(res)
    _ods_successors = None
    super().__init__(self.OPERATION_NAME, self._ODS_REGIONS, self._ODS_OPERAND_SEGMENTS, self._ODS_RESULT_SEGMENTS, attributes=attributes, results=results, operands=operands, successors=_ods_successors, regions=regions, loc=loc, ip=ip)

  @builtins.property
  def a(self) -> _ods_ir.Value[_ods_ir.VectorType]:
    return self.operation.operands[0]

  @builtins.property
  def b(self) -> _ods_ir.Value[_ods_ir.VectorType]:
    return self.operation.operands[1]

  @builtins.property
  def c(self) -> _ods_ir.Value:
    return self.operation.operands[2]

  @builtins.property
  def clamp(self) -> _ods_ir.BoolAttr:
    return self.operation.attributes["clamp"]

  @clamp.setter
  def clamp(self, value: _ods_ir.BoolAttr):
    if value is None:
      raise ValueError("'None' not allowed as value for mandatory attributes")
    self.operation.attributes["clamp"] = value

  @builtins.property
  def res(self) -> _ods_ir.OpResult:
    return self.operation.results[0]

@_ods_cext.register_op_adaptor(fdot2)
class fdot2Adaptor(_ods_ir.OpAdaptor):
  OPERATION_NAME = "rocdl.fdot2"

  @builtins.property
  def a(self) -> _ods_ir.Value[_ods_ir.VectorType]:
    return self.operands[0]

  @builtins.property
  def b(self) -> _ods_ir.Value[_ods_ir.VectorType]:
    return self.operands[1]

  @builtins.property
  def c(self) -> _ods_ir.Value:
    return self.operands[2]

  @builtins.property
  def clamp(self) -> _ods_ir.BoolAttr:
    return self.attributes["clamp"]

def fdot2_(res: _ods_ir.Type, a: _ods_ir.Value[_ods_ir.VectorType], b: _ods_ir.Value[_ods_ir.VectorType], c: _ods_ir.Value, *, clamp: _Optional[_Union[bool, _ods_ir.BoolAttr]] = None, loc: _Optional[_ods_ir.Location] = None, ip: _Optional[_ods_ir.InsertionPoint] = None) -> _ods_ir.OpResult:
  return fdot2(res=res, a=a, b=b, c=c, clamp=clamp, loc=loc, ip=ip).result

@_ods_cext.register_operation(_Dialect)
class fdot2_bf16_bf16(_ods_ir.OpView):
  r"""
  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
  ```
  """

  OPERATION_NAME = "rocdl.fdot2.bf16.bf16"

  _ODS_REGIONS = (0, True)

  def __init__(self, res: _ods_ir.Type, a: _ods_ir.Value[_ods_ir.VectorType], b: _ods_ir.Value[_ods_ir.VectorType], c: _ods_ir.Value, *, loc: _Optional[_ods_ir.Location] = None, ip: _Optional[_ods_ir.InsertionPoint] = None):
    operands = []
    attributes = {}
    regions = None
    operands.append(a)
    operands.append(b)
    operands.append(c)
    _ods_context = _ods_get_default_loc_context(loc)
    results = []
    results.append(res)
    _ods_successors = None
    super().__init__(self.OPERATION_NAME, self._ODS_REGIONS, self._ODS_OPERAND_SEGMENTS, self._ODS_RESULT_SEGMENTS, attributes=attributes, results=results, operands=operands, successors=_ods_successors, regions=regions, loc=loc, ip=ip)

  @builtins.property
  def a(self) -> _ods_ir.Value[_ods_ir.VectorType]:
    return self.operation.operands[0]

  @builtins.property
  def b(self) -> _ods_ir.Value[_ods_ir.VectorType]:
    return self.operation.operands[1]

  @builtins.property
  def c(self) -> _ods_ir.Value:
    return self.operation.operands[2]

  @builtins.property
  def res(self) -> _ods_ir.OpResult:
    return self.operation.results[0]

@_ods_cext.register_op_adaptor(fdot2_bf16_bf16)
class fdot2_bf16_bf16Adaptor(_ods_ir.OpAdaptor):
  OPERATION_NAME = "rocdl.fdot2.bf16.bf16"

  @builtins.property
  def a(self) -> _ods_ir.Value[_ods_ir.VectorType]:
    return self.operands[0]

  @builtins.property
  def b(self) -> _ods_ir.Value[_ods_ir.VectorType]:
    return self.operands[1]

  @builtins.property
  def c(self) -> _ods_ir.Value:
    return self.operands[2]

def fdot2_bf16_bf16_(res: _ods_ir.Type, a: _ods_ir.Value[_ods_ir.VectorType], b: _ods_ir.Value[_ods_ir.VectorType], c: _ods_ir.Value, *, loc: _Optional[_ods_ir.Location] = None, ip: _Optional[_ods_ir.InsertionPoint] = None) -> _ods_ir.OpResult:
  return fdot2_bf16_bf16(res=res, a=a, b=b, c=c, loc=loc, ip=ip).result

@_ods_cext.register_operation(_Dialect)
class fdot2_f16_f16(_ods_ir.OpView):
  r"""
  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
  ```
  """

  OPERATION_NAME = "rocdl.fdot2.f16.f16"

  _ODS_REGIONS = (0, True)

  def __init__(self, res: _ods_ir.Type, a: _ods_ir.Value[_ods_ir.VectorType], b: _ods_ir.Value[_ods_ir.VectorType], c: _ods_ir.Value, *, loc: _Optional[_ods_ir.Location] = None, ip: _Optional[_ods_ir.InsertionPoint] = None):
    operands = []
    attributes = {}
    regions = None
    operands.append(a)
    operands.append(b)
    operands.append(c)
    _ods_context = _ods_get_default_loc_context(loc)
    results = []
    results.append(res)
    _ods_successors = None
    super().__init__(self.OPERATION_NAME, self._ODS_REGIONS, self._ODS_OPERAND_SEGMENTS, self._ODS_RESULT_SEGMENTS, attributes=attributes, results=results, operands=operands, successors=_ods_successors, regions=regions, loc=loc, ip=ip)

  @builtins.property
  def a(self) -> _ods_ir.Value[_ods_ir.VectorType]:
    return self.operation.operands[0]

  @builtins.property
  def b(self) -> _ods_ir.Value[_ods_ir.VectorType]:
    return self.operation.operands[1]

  @builtins.property
  def c(self) -> _ods_ir.Value:
    return self.operation.operands[2]

  @builtins.property
  def res(self) -> _ods_ir.OpResult:
    return self.operation.results[0]

@_ods_cext.register_op_adaptor(fdot2_f16_f16)
class fdot2_f16_f16Adaptor(_ods_ir.OpAdaptor):
  OPERATION_NAME = "rocdl.fdot2.f16.f16"

  @builtins.property
  def a(self) -> _ods_ir.Value[_ods_ir.VectorType]:
    return self.operands[0]

  @builtins.property
  def b(self) -> _ods_ir.Value[_ods_ir.VectorType]:
    return self.operands[1]

  @builtins.property
  def c(self) -> _ods_ir.Value:
    return self.operands[2]

def fdot2_f16_f16_(res: _ods_ir.Type, a: _ods_ir.Value[_ods_ir.VectorType], b: _ods_ir.Value[_ods_ir.VectorType], c: _ods_ir.Value, *, loc: _Optional[_ods_ir.Location] = None, ip: _Optional[_ods_ir.InsertionPoint] = None) -> _ods_ir.OpResult:
  return fdot2_f16_f16(res=res, a=a, b=b, c=c, loc=loc, ip=ip).result

@_ods_cext.register_operation(_Dialect)
class fdot2_f32_bf16(_ods_ir.OpView):
  r"""
  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
  ```
  """

  OPERATION_NAME = "rocdl.fdot2.f32.bf16"

  _ODS_REGIONS = (0, True)

  def __init__(self, res: _ods_ir.Type, a: _ods_ir.Value[_ods_ir.VectorType], b: _ods_ir.Value[_ods_ir.VectorType], c: _ods_ir.Value, *, clamp: _Optional[_Union[bool, _ods_ir.BoolAttr]] = None, loc: _Optional[_ods_ir.Location] = None, ip: _Optional[_ods_ir.InsertionPoint] = None):
    operands = []
    attributes = {}
    regions = None
    operands.append(a)
    operands.append(b)
    operands.append(c)
    _ods_context = _ods_get_default_loc_context(loc)
    if clamp is not None: attributes["clamp"] = (clamp if (
        isinstance(clamp, _ods_ir.Attribute) or
        not _ods_ir.AttrBuilder.contains('I1Attr')) else
          _ods_ir.AttrBuilder.get('I1Attr')(clamp, context=_ods_context))
    results = []
    results.append(res)
    _ods_successors = None
    super().__init__(self.OPERATION_NAME, self._ODS_REGIONS, self._ODS_OPERAND_SEGMENTS, self._ODS_RESULT_SEGMENTS, attributes=attributes, results=results, operands=operands, successors=_ods_successors, regions=regions, loc=loc, ip=ip)

  @builtins.property
  def a(self) -> _ods_ir.Value[_ods_ir.VectorType]:
    return self.operation.operands[0]

  @builtins.property
  def b(self) -> _ods_ir.Value[_ods_ir.VectorType]:
    return self.operation.operands[1]

  @builtins.property
  def c(self) -> _ods_ir.Value:
    return self.operation.operands[2]

  @builtins.property
  def clamp(self) -> _ods_ir.BoolAttr:
    return self.operation.attributes["clamp"]

  @clamp.setter
  def clamp(self, value: _ods_ir.BoolAttr):
    if value is None:
      raise ValueError("'None' not allowed as value for mandatory attributes")
    self.operation.attributes["clamp"] = value

  @builtins.property
  def res(self) -> _ods_ir.OpResult:
    return self.operation.results[0]

@_ods_cext.register_op_adaptor(fdot2_f32_bf16)
class fdot2_f32_bf16Adaptor(_ods_ir.OpAdaptor):
  OPERATION_NAME = "rocdl.fdot2.f32.bf16"

  @builtins.property
  def a(self) -> _ods_ir.Value[_ods_ir.VectorType]:
    return self.operands[0]

  @builtins.property
  def b(self) -> _ods_ir.Value[_ods_ir.VectorType]:
    return self.operands[1]

  @builtins.property
  def c(self) -> _ods_ir.Value:
    return self.operands[2]

  @builtins.property
  def clamp(self) -> _ods_ir.BoolAttr:
    return self.attributes["clamp"]

def fdot2_f32_bf16_(res: _ods_ir.Type, a: _ods_ir.Value[_ods_ir.VectorType], b: _ods_ir.Value[_ods_ir.VectorType], c: _ods_ir.Value, *, clamp: _Optional[_Union[bool, _ods_ir.BoolAttr]] = None, loc: _Optional[_ods_ir.Location] = None, ip: _Optional[_ods_ir.InsertionPoint] = None) -> _ods_ir.OpResult:
  return fdot2_f32_bf16(res=res, a=a, b=b, c=c, clamp=clamp, loc=loc, ip=ip).result

@_ods_cext.register_operation(_Dialect)
class mfma_f32_4x4x1f32(_ods_ir.OpView):
  r"""
  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, 0 : (f32, f32, vector<4xf32>) -> vector<4xf32>
  ```
  """

  OPERATION_NAME = "rocdl.mfma.f32.4x4x1f32"

  _ODS_REGIONS = (0, True)

  def __init__(self, res: _ods_ir.Type, a: _ods_ir.Value, b: _ods_ir.Value, c: _ods_ir.Value[_ods_ir.VectorType], cbsz: _Union[int, _ods_ir.IntegerAttr], abid: _Union[int, _ods_ir.IntegerAttr], blgp: _Union[int, _ods_ir.IntegerAttr], *, loc: _Optional[_ods_ir.Location] = None, ip: _Optional[_ods_ir.InsertionPoint] = None):
    operands = []
    attributes = {}
    regions = None
    operands.append(a)
    operands.append(b)
    operands.append(c)
    _ods_context = _ods_get_default_loc_context(loc)
    attributes["cbsz"] = (cbsz if (
    isinstance(cbsz, _ods_ir.Attribute) or
    not _ods_ir.AttrBuilder.contains('I32Attr')) else
      _ods_ir.AttrBuilder.get('I32Attr')(cbsz, context=_ods_context))
    attributes["abid"] = (abid if (
    isinstance(abid, _ods_ir.Attribute) or
    not _ods_ir.AttrBuilder.contains('I32Attr')) else
      _ods_ir.AttrBuilder.get('I32Attr')(abid, context=_ods_context))
    attributes["blgp"] = (blgp if (
    isinstance(blgp, _ods_ir.Attribute) or
    not _ods_ir.AttrBuilder.contains('I32Attr')) else
      _ods_ir.AttrBuilder.get('I32Attr')(blgp, context=_ods_context))
    results = []
    results.append(res)
    _ods_successors = None
    super().__init__(self.OPERATION_NAME, self._ODS_REGIONS, self._ODS_OPERAND_SEGMENTS, self._ODS_RESULT_SEGMENTS, attributes=attributes, results=results, operands=operands, successors=_ods_successors, regions=regions, loc=loc, ip=ip)

  @builtins.property
  def a(self) -> _ods_ir.Value:
    return self.operation.operands[0]

  @builtins.property
  def b(self) -> _ods_ir.Value:
    return self.operation.operands[1]

  @builtins.property
  def c(self) -> _ods_ir.Value[_ods_ir.VectorType]:
    return self.operation.operands[2]

  @builtins.property
  def cbsz(self) -> _ods_ir.IntegerAttr:
    return self.operation.attributes["cbsz"]

  @cbsz.setter
  def cbsz(self, value: _ods_ir.IntegerAttr):
    if value is None:
      raise ValueError("'None' not allowed as value for mandatory attributes")
    self.operation.attributes["cbsz"] = value

  @builtins.property
  def abid(self) -> _ods_ir.IntegerAttr:
    return self.operation.attributes["abid"]

  @abid.setter
  def abid(self, value: _ods_ir.IntegerAttr):
    if value is None:
      raise ValueError("'None' not allowed as value for mandatory attributes")
    self.operation.attributes["abid"] = value

  @builtins.property
  def blgp(self) -> _ods_ir.IntegerAttr:
    return self.operation.attributes["blgp"]

  @blgp.setter
  def blgp(self, value: _ods_ir.IntegerAttr):
    if value is None:
      raise ValueError("'None' not allowed as value for mandatory attributes")
    self.operation.attributes["blgp"] = value

  @builtins.property
  def res(self) -> _ods_ir.OpResult[_ods_ir.VectorType]:
    return self.operation.results[0]

@_ods_cext.register_op_adaptor(mfma_f32_4x4x1f32)
class mfma_f32_4x4x1f32Adaptor(_ods_ir.OpAdaptor):
  OPERATION_NAME = "rocdl.mfma.f32.4x4x1f32"

  @builtins.property
  def a(self) -> _ods_ir.Value:
    return self.operands[0]

  @builtins.property
  def b(self) -> _ods_ir.Value:
    return self.operands[1]

  @builtins.property
  def c(self) -> _ods_ir.Value[_ods_ir.VectorType]:
    return self.operands[2]

  @builtins.property
  def cbsz(self) -> _ods_ir.IntegerAttr:
    return self.attributes["cbsz"]

  @builtins.property
  def abid(self) -> _ods_ir.IntegerAttr:
    return self.attributes["abid"]

  @builtins.property
  def blgp(self) -> _ods_ir.IntegerAttr:
    return self.attributes["blgp"]

def mfma_f32_4x4x1f32_(res: _ods_ir.Type, a: _ods_ir.Value, b: _ods_ir.Value, c: _ods_ir.Value[_ods_ir.VectorType], cbsz: _Union[int, _ods_ir.IntegerAttr], abid: _Union[int, _ods_ir.IntegerAttr], blgp: _Union[int, _ods_ir.IntegerAttr], *, loc: _Optional[_ods_ir.Location] = None, ip: _Optional[_ods_ir.InsertionPoint] = None) -> _ods_ir.OpResult[_ods_ir.VectorType]:
  return mfma_f32_4x4x1f32(res=res, a=a, b=b, c=c, cbsz=cbsz, abid=abid, blgp=blgp, loc=loc, ip=ip).result

@_ods_cext.register_operation(_Dialect)
class mfma_f32_4x4x2bf16(_ods_ir.OpView):
  r"""
  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, 0 : (vector<2xi16>, vector<2xi16>, vector<4xf32>) -> vector<4xf32>
  ```
  """

  OPERATION_NAME = "rocdl.mfma.f32.4x4x2bf16"

  _ODS_REGIONS = (0, True)

  def __init__(self, res: _ods_ir.Type, a: _ods_ir.Value[_ods_ir.VectorType], b: _ods_ir.Value[_ods_ir.VectorType], c: _ods_ir.Value[_ods_ir.VectorType], cbsz: _Union[int, _ods_ir.IntegerAttr], abid: _Union[int, _ods_ir.IntegerAttr], blgp: _Union[int, _ods_ir.IntegerAttr], *, loc: _Optional[_ods_ir.Location] = None, ip: _Optional[_ods_ir.InsertionPoint] = None):
    operands = []
    attributes = {}
    regions = None
    operands.append(a)
    operands.append(b)
    operands.append(c)
    _ods_context = _ods_get_default_loc_context(loc)
    attributes["cbsz"] = (cbsz if (
    isinstance(cbsz, _ods_ir.Attribute) or
    not _ods_ir.AttrBuilder.contains('I32Attr')) else
      _ods_ir.AttrBuilder.get('I32Attr')(cbsz, context=_ods_context))
    attributes["abid"] = (abid if (
    isinstance(abid, _ods_ir.Attribute) or
    not _ods_ir.AttrBuilder.contains('I32Attr')) else
      _ods_ir.AttrBuilder.get('I32Attr')(abid, context=_ods_context))
    attributes["blgp"] = (blgp if (
    isinstance(blgp, _ods_ir.Attribute) or
    not _ods_ir.AttrBuilder.contains('I32Attr')) else
      _ods_ir.AttrBuilder.get('I32Attr')(blgp, context=_ods_context))
    results = []
    results.append(res)
    _ods_successors = None
    super().__init__(self.OPERATION_NAME, self._ODS_REGIONS, self._ODS_OPERAND_SEGMENTS, self._ODS_RESULT_SEGMENTS, attributes=attributes, results=results, operands=operands, successors=_ods_successors, regions=regions, loc=loc, ip=ip)

  @builtins.property
  def a(self) -> _ods_ir.Value[_ods_ir.VectorType]:
    return self.operation.operands[0]

  @builtins.property
  def b(self) -> _ods_ir.Value[_ods_ir.VectorType]:
    return self.operation.operands[1]

  @builtins.property
  def c(self) -> _ods_ir.Value[_ods_ir.VectorType]:
    return self.operation.operands[2]

  @builtins.property
  def cbsz(self) -> _ods_ir.IntegerAttr:
    return self.operation.attributes["cbsz"]

  @cbsz.setter
  def cbsz(self, value: _ods_ir.IntegerAttr):
    if value is None:
      raise ValueError("'None' not allowed as value for mandatory attributes")
    self.operation.attributes["cbsz"] = value

  @builtins.property
  def abid(self) -> _ods_ir.IntegerAttr:
    return self.operation.attributes["abid"]

  @abid.setter
  def abid(self, value: _ods_ir.IntegerAttr):
    if value is None:
      raise ValueError("'None' not allowed as value for mandatory attributes")
    self.operation.attributes["abid"] = value

  @builtins.property
  def blgp(self) -> _ods_ir.IntegerAttr:
    return self.operation.attributes["blgp"]

  @blgp.setter
  def blgp(self, value: _ods_ir.IntegerAttr):
    if value is None:
      raise ValueError("'None' not allowed as value for mandatory attributes")
    self.operation.attributes["blgp"] = value

  @builtins.property
  def res(self) -> _ods_ir.OpResult[_ods_ir.VectorType]:
    return self.operation.results[0]

@_ods_cext.register_op_adaptor(mfma_f32_4x4x2bf16)
class mfma_f32_4x4x2bf16Adaptor(_ods_ir.OpAdaptor):
  OPERATION_NAME = "rocdl.mfma.f32.4x4x2bf16"

  @builtins.property
  def a(self) -> _ods_ir.Value[_ods_ir.VectorType]:
    return self.operands[0]

  @builtins.property
  def b(self) -> _ods_ir.Value[_ods_ir.VectorType]:
    return self.operands[1]

  @builtins.property
  def c(self) -> _ods_ir.Value[_ods_ir.VectorType]:
    return self.operands[2]

  @builtins.property
  def cbsz(self) -> _ods_ir.IntegerAttr:
    return self.attributes["cbsz"]

  @builtins.property
  def abid(self) -> _ods_ir.IntegerAttr:
    return self.attributes["abid"]

  @builtins.property
  def blgp(self) -> _ods_ir.IntegerAttr:
    return self.attributes["blgp"]

def mfma_f32_4x4x2bf16_(res: _ods_ir.Type, a: _ods_ir.Value[_ods_ir.VectorType], b: _ods_ir.Value[_ods_ir.VectorType], c: _ods_ir.Value[_ods_ir.VectorType], cbsz: _Union[int, _ods_ir.IntegerAttr], abid: _Union[int, _ods_ir.IntegerAttr], blgp: _Union[int, _ods_ir.IntegerAttr], *, loc: _Optional[_ods_ir.Location] = None, ip: _Optional[_ods_ir.InsertionPoint] = None) -> _ods_ir.OpResult[_ods_ir.VectorType]:
  return mfma_f32_4x4x2bf16(res=res, a=a, b=b, c=c, cbsz=cbsz, abid=abid, blgp=blgp, loc=loc, ip=ip).result

@_ods_cext.register_operation(_Dialect)
class mfma_f32_4x4x4bf16_1k(_ods_ir.OpView):
  r"""
  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, 0 : (vector<4xi16>, vector<4xi16>, vector<4xf32>) -> vector<4xf32>
  ```
  """

  OPERATION_NAME = "rocdl.mfma.f32.4x4x4bf16.1k"

  _ODS_REGIONS = (0, True)

  def __init__(self, res: _ods_ir.Type, a: _ods_ir.Value[_ods_ir.VectorType], b: _ods_ir.Value[_ods_ir.VectorType], c: _ods_ir.Value[_ods_ir.VectorType], cbsz: _Union[int, _ods_ir.IntegerAttr], abid: _Union[int, _ods_ir.IntegerAttr], blgp: _Union[int, _ods_ir.IntegerAttr], *, loc: _Optional[_ods_ir.Location] = None, ip: _Optional[_ods_ir.InsertionPoint] = None):
    operands = []
    attributes = {}
    regions = None
    operands.append(a)
    operands.append(b)
    operands.append(c)
    _ods_context = _ods_get_default_loc_context(loc)
    attributes["cbsz"] = (cbsz if (
    isinstance(cbsz, _ods_ir.Attribute) or
    not _ods_ir.AttrBuilder.contains('I32Attr')) else
      _ods_ir.AttrBuilder.get('I32Attr')(cbsz, context=_ods_context))
    attributes["abid"] = (abid if (
    isinstance(abid, _ods_ir.Attribute) or
    not _ods_ir.AttrBuilder.contains('I32Attr')) else
      _ods_ir.AttrBuilder.get('I32Attr')(abid, context=_ods_context))
    attributes["blgp"] = (blgp if (
    isinstance(blgp, _ods_ir.Attribute) or
    not _ods_ir.AttrBuilder.contains('I32Attr')) else
      _ods_ir.AttrBuilder.get('I32Attr')(blgp, context=_ods_context))
    results = []
    results.append(res)
    _ods_successors = None
    super().__init__(self.OPERATION_NAME, self._ODS_REGIONS, self._ODS_OPERAND_SEGMENTS, self._ODS_RESULT_SEGMENTS, attributes=attributes, results=results, operands=operands, successors=_ods_successors, regions=regions, loc=loc, ip=ip)

  @builtins.property
  def a(self) -> _ods_ir.Value[_ods_ir.VectorType]:
    return self.operation.operands[0]

  @builtins.property
  def b(self) -> _ods_ir.Value[_ods_ir.VectorType]:
    return self.operation.operands[1]

  @builtins.property
  def c(self) -> _ods_ir.Value[_ods_ir.VectorType]:
    return self.operation.operands[2]

  @builtins.property
  def cbsz(self) -> _ods_ir.IntegerAttr:
    return self.operation.attributes["cbsz"]

  @cbsz.setter
  def cbsz(self, value: _ods_ir.IntegerAttr):
    if value is None:
      raise ValueError("'None' not allowed as value for mandatory attributes")
    self.operation.attributes["cbsz"] = value

  @builtins.property
  def abid(self) -> _ods_ir.IntegerAttr:
    return self.operation.attributes["abid"]

  @abid.setter
  def abid(self, value: _ods_ir.IntegerAttr):
    if value is None:
      raise ValueError("'None' not allowed as value for mandatory attributes")
    self.operation.attributes["abid"] = value

  @builtins.property
  def blgp(self) -> _ods_ir.IntegerAttr:
    return self.operation.attributes["blgp"]

  @blgp.setter
  def blgp(self, value: _ods_ir.IntegerAttr):
    if value is None:
      raise ValueError("'None' not allowed as value for mandatory attributes")
    self.operation.attributes["blgp"] = value

  @builtins.property
  def res(self) -> _ods_ir.OpResult[_ods_ir.VectorType]:
    return self.operation.results[0]

@_ods_cext.register_op_adaptor(mfma_f32_4x4x4bf16_1k)
class mfma_f32_4x4x4bf16_1kAdaptor(_ods_ir.OpAdaptor):
  OPERATION_NAME = "rocdl.mfma.f32.4x4x4bf16.1k"

  @builtins.property
  def a(self) -> _ods_ir.Value[_ods_ir.VectorType]:
    return self.operands[0]

  @builtins.property
  def b(self) -> _ods_ir.Value[_ods_ir.VectorType]:
    return self.operands[1]

  @builtins.property
  def c(self) -> _ods_ir.Value[_ods_ir.VectorType]:
    return self.operands[2]

  @builtins.property
  def cbsz(self) -> _ods_ir.IntegerAttr:
    return self.attributes["cbsz"]

  @builtins.property
  def abid(self) -> _ods_ir.IntegerAttr:
    return self.attributes["abid"]

  @builtins.property
  def blgp(self) -> _ods_ir.IntegerAttr:
    return self.attributes["blgp"]

def mfma_f32_4x4x4bf16_1k_(res: _ods_ir.Type, a: _ods_ir.Value[_ods_ir.VectorType], b: _ods_ir.Value[_ods_ir.VectorType], c: _ods_ir.Value[_ods_ir.VectorType], cbsz: _Union[int, _ods_ir.IntegerAttr], abid: _Union[int, _ods_ir.IntegerAttr], blgp: _Union[int, _ods_ir.IntegerAttr], *, loc: _Optional[_ods_ir.Location] = None, ip: _Optional[_ods_ir.InsertionPoint] = None) -> _ods_ir.OpResult[_ods_ir.VectorType]:
  return mfma_f32_4x4x4bf16_1k(res=res, a=a, b=b, c=c, cbsz=cbsz, abid=abid, blgp=blgp, loc=loc, ip=ip).result

@_ods_cext.register_operation(_Dialect)
class mfma_f32_4x4x4f16(_ods_ir.OpView):
  r"""
  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, 0 : (vector<4xf16>, vector<4xf16>, vector<4xf32>) -> vector<4xf32>
  ```
  """

  OPERATION_NAME = "rocdl.mfma.f32.4x4x4f16"

  _ODS_REGIONS = (0, True)

  def __init__(self, res: _ods_ir.Type, a: _ods_ir.Value[_ods_ir.VectorType], b: _ods_ir.Value[_ods_ir.VectorType], c: _ods_ir.Value[_ods_ir.VectorType], cbsz: _Union[int, _ods_ir.IntegerAttr], abid: _Union[int, _ods_ir.IntegerAttr], blgp: _Union[int, _ods_ir.IntegerAttr], *, loc: _Optional[_ods_ir.Location] = None, ip: _Optional[_ods_ir.InsertionPoint] = None):
    operands = []
    attributes = {}
    regions = None
    operands.append(a)
    operands.append(b)
    operands.append(c)
    _ods_context = _ods_get_default_loc_context(loc)
    attributes["cbsz"] = (cbsz if (
    isinstance(cbsz, _ods_ir.Attribute) or
    not _ods_ir.AttrBuilder.contains('I32Attr')) else
      _ods_ir.AttrBuilder.get('I32Attr')(cbsz, context=_ods_context))
    attributes["abid"] = (abid if (
    isinstance(abid, _ods_ir.Attribute) or
    not _ods_ir.AttrBuilder.contains('I32Attr')) else
      _ods_ir.AttrBuilder.get('I32Attr')(abid, context=_ods_context))
    attributes["blgp"] = (blgp if (
    isinstance(blgp, _ods_ir.Attribute) or
    not _ods_ir.AttrBuilder.contains('I32Attr')) else
      _ods_ir.AttrBuilder.get('I32Attr')(blgp, context=_ods_context))
    results = []
    results.append(res)
    _ods_successors = None
    super().__init__(self.OPERATION_NAME, self._ODS_REGIONS, self._ODS_OPERAND_SEGMENTS, self._ODS_RESULT_SEGMENTS, attributes=attributes, results=results, operands=operands, successors=_ods_successors, regions=regions, loc=loc, ip=ip)

  @builtins.property
  def a(self) -> _ods_ir.Value[_ods_ir.VectorType]:
    return self.operation.operands[0]

  @builtins.property
  def b(self) -> _ods_ir.Value[_ods_ir.VectorType]:
    return self.operation.operands[1]

  @builtins.property
  def c(self) -> _ods_ir.Value[_ods_ir.VectorType]:
    return self.operation.operands[2]

  @builtins.property
  def cbsz(self) -> _ods_ir.IntegerAttr:
    return self.operation.attributes["cbsz"]

  @cbsz.setter
  def cbsz(self, value: _ods_ir.IntegerAttr):
    if value is None:
      raise ValueError("'None' not allowed as value for mandatory attributes")
    self.operation.attributes["cbsz"] = value

  @builtins.property
  def abid(self) -> _ods_ir.IntegerAttr:
    return self.operation.attributes["abid"]

  @abid.setter
  def abid(self, value: _ods_ir.IntegerAttr):
    if value is None:
      raise ValueError("'None' not allowed as value for mandatory attributes")
    self.operation.attributes["abid"] = value

  @builtins.property
  def blgp(self) -> _ods_ir.IntegerAttr:
    return self.operation.attributes["blgp"]

  @blgp.setter
  def blgp(self, value: _ods_ir.IntegerAttr):
    if value is None:
      raise ValueError("'None' not allowed as value for mandatory attributes")
    self.operation.attributes["blgp"] = value

  @builtins.property
  def res(self) -> _ods_ir.OpResult[_ods_ir.VectorType]:
    return self.operation.results[0]

@_ods_cext.register_op_adaptor(mfma_f32_4x4x4f16)
class mfma_f32_4x4x4f16Adaptor(_ods_ir.OpAdaptor):
  OPERATION_NAME = "rocdl.mfma.f32.4x4x4f16"

  @builtins.property
  def a(self) -> _ods_ir.Value[_ods_ir.VectorType]:
    return self.operands[0]

  @builtins.property
  def b(self) -> _ods_ir.Value[_ods_ir.VectorType]:
    return self.operands[1]

  @builtins.property
  def c(self) -> _ods_ir.Value[_ods_ir.VectorType]:
    return self.operands[2]

  @builtins.property
  def cbsz(self) -> _ods_ir.IntegerAttr:
    return self.attributes["cbsz"]

  @builtins.property
  def abid(self) -> _ods_ir.IntegerAttr:
    return self.attributes["abid"]

  @builtins.property
  def blgp(self) -> _ods_ir.IntegerAttr:
    return self.attributes["blgp"]

def mfma_f32_4x4x4f16_(res: _ods_ir.Type, a: _ods_ir.Value[_ods_ir.VectorType], b: _ods_ir.Value[_ods_ir.VectorType], c: _ods_ir.Value[_ods_ir.VectorType], cbsz: _Union[int, _ods_ir.IntegerAttr], abid: _Union[int, _ods_ir.IntegerAttr], blgp: _Union[int, _ods_ir.IntegerAttr], *, loc: _Optional[_ods_ir.Location] = None, ip: _Optional[_ods_ir.InsertionPoint] = None) -> _ods_ir.OpResult[_ods_ir.VectorType]:
  return mfma_f32_4x4x4f16(res=res, a=a, b=b, c=c, cbsz=cbsz, abid=abid, blgp=blgp, loc=loc, ip=ip).result

@_ods_cext.register_operation(_Dialect)
class mfma_f32_16x16x1f32(_ods_ir.OpView):
  r"""
  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, 0 : (f32, f32, vector<16xf32>) -> vector<16xf32>
  ```
  """

  OPERATION_NAME = "rocdl.mfma.f32.16x16x1f32"

  _ODS_REGIONS = (0, True)

  def __init__(self, res: _ods_ir.Type, a: _ods_ir.Value, b: _ods_ir.Value, c: _ods_ir.Value[_ods_ir.VectorType], cbsz: _Union[int, _ods_ir.IntegerAttr], abid: _Union[int, _ods_ir.IntegerAttr], blgp: _Union[int, _ods_ir.IntegerAttr], *, loc: _Optional[_ods_ir.Location] = None, ip: _Optional[_ods_ir.InsertionPoint] = None):
    operands = []
    attributes = {}
    regions = None
    operands.append(a)
    operands.append(b)
    operands.append(c)
    _ods_context = _ods_get_default_loc_context(loc)
    attributes["cbsz"] = (cbsz if (
    isinstance(cbsz, _ods_ir.Attribute) or
    not _ods_ir.AttrBuilder.contains('I32Attr')) else
      _ods_ir.AttrBuilder.get('I32Attr')(cbsz, context=_ods_context))
    attributes["abid"] = (abid if (
    isinstance(abid, _ods_ir.Attribute) or
    not _ods_ir.AttrBuilder.contains('I32Attr')) else
      _ods_ir.AttrBuilder.get('I32Attr')(abid, context=_ods_context))
    attributes["blgp"] = (blgp if (
    isinstance(blgp, _ods_ir.Attribute) or
    not _ods_ir.AttrBuilder.contains('I32Attr')) else
      _ods_ir.AttrBuilder.get('I32Attr')(blgp, context=_ods_context))
    results = []
    results.append(res)
    _ods_successors = None
    super().__init__(self.OPERATION_NAME, self._ODS_REGIONS, self._ODS_OPERAND_SEGMENTS, self._ODS_RESULT_SEGMENTS, attributes=attributes, results=results, operands=operands, successors=_ods_successors, regions=regions, loc=loc, ip=ip)

  @builtins.property
  def a(self) -> _ods_ir.Value:
    return self.operation.operands[0]

  @builtins.property
  def b(self) -> _ods_ir.Value:
    return self.operation.operands[1]

  @builtins.property
  def c(self) -> _ods_ir.Value[_ods_ir.VectorType]:
    return self.operation.operands[2]

  @builtins.property
  def cbsz(self) -> _ods_ir.IntegerAttr:
    return self.operation.attributes["cbsz"]

  @cbsz.setter
  def cbsz(self, value: _ods_ir.IntegerAttr):
    if value is None:
      raise ValueError("'None' not allowed as value for mandatory attributes")
    self.operation.attributes["cbsz"] = value

  @builtins.property
  def abid(self) -> _ods_ir.IntegerAttr:
    return self.operation.attributes["abid"]

  @abid.setter
  def abid(self, value: _ods_ir.IntegerAttr):
    if value is None:
      raise ValueError("'None' not allowed as value for mandatory attributes")
    self.operation.attributes["abid"] = value

  @builtins.property
  def blgp(self) -> _ods_ir.IntegerAttr:
    return self.operation.attributes["blgp"]

  @blgp.setter
  def blgp(self, value: _ods_ir.IntegerAttr):
    if value is None:
      raise ValueError("'None' not allowed as value for mandatory attributes")
    self.operation.attributes["blgp"] = value

  @builtins.property
  def res(self) -> _ods_ir.OpResult[_ods_ir.VectorType]:
    return self.operation.results[0]

@_ods_cext.register_op_adaptor(mfma_f32_16x16x1f32)
class mfma_f32_16x16x1f32Adaptor(_ods_ir.OpAdaptor):
  OPERATION_NAME = "rocdl.mfma.f32.16x16x1f32"

  @builtins.property
  def a(self) -> _ods_ir.Value:
    return self.operands[0]

  @builtins.property
  def b(self) -> _ods_ir.Value:
    return self.operands[1]

  @builtins.property
  def c(self) -> _ods_ir.Value[_ods_ir.VectorType]:
    return self.operands[2]

  @builtins.property
  def cbsz(self) -> _ods_ir.IntegerAttr:
    return self.attributes["cbsz"]

  @builtins.property
  def abid(self) -> _ods_ir.IntegerAttr:
    return self.attributes["abid"]

  @builtins.property
  def blgp(self) -> _ods_ir.IntegerAttr:
    return self.attributes["blgp"]

def mfma_f32_16x16x1f32_(res: _ods_ir.Type, a: _ods_ir.Value, b: _ods_ir.Value, c: _ods_ir.Value[_ods_ir.VectorType], cbsz: _Union[int, _ods_ir.IntegerAttr], abid: _Union[int, _ods_ir.IntegerAttr], blgp: _Union[int, _ods_ir.IntegerAttr], *, loc: _Optional[_ods_ir.Location] = None, ip: _Optional[_ods_ir.InsertionPoint] = None) -> _ods_ir.OpResult[_ods_ir.VectorType]:
  return mfma_f32_16x16x1f32(res=res, a=a, b=b, c=c, cbsz=cbsz, abid=abid, blgp=blgp, loc=loc, ip=ip).result

@_ods_cext.register_operation(_Dialect)
class mfma_f32_16x16x2bf16(_ods_ir.OpView):
  r"""
  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, 0 : (vector<2xi16>, vector<2xi16>, vector<16xf32>) -> vector<16xf32>
  ```
  """

  OPERATION_NAME = "rocdl.mfma.f32.16x16x2bf16"

  _ODS_REGIONS = (0, True)

  def __init__(self, res: _ods_ir.Type, a: _ods_ir.Value[_ods_ir.VectorType], b: _ods_ir.Value[_ods_ir.VectorType], c: _ods_ir.Value[_ods_ir.VectorType], cbsz: _Union[int, _ods_ir.IntegerAttr], abid: _Union[int, _ods_ir.IntegerAttr], blgp: _Union[int, _ods_ir.IntegerAttr], *, loc: _Optional[_ods_ir.Location] = None, ip: _Optional[_ods_ir.InsertionPoint] = None):
    operands = []
    attributes = {}
    regions = None
    operands.append(a)
    operands.append(b)
    operands.append(c)
    _ods_context = _ods_get_default_loc_context(loc)
    attributes["cbsz"] = (cbsz if (
    isinstance(cbsz, _ods_ir.Attribute) or
    not _ods_ir.AttrBuilder.contains('I32Attr')) else
      _ods_ir.AttrBuilder.get('I32Attr')(cbsz, context=_ods_context))
    attributes["abid"] = (abid if (
    isinstance(abid, _ods_ir.Attribute) or
    not _ods_ir.AttrBuilder.contains('I32Attr')) else
      _ods_ir.AttrBuilder.get('I32Attr')(abid, context=_ods_context))
    attributes["blgp"] = (blgp if (
    isinstance(blgp, _ods_ir.Attribute) or
    not _ods_ir.AttrBuilder.contains('I32Attr')) else
      _ods_ir.AttrBuilder.get('I32Attr')(blgp, context=_ods_context))
    results = []
    results.append(res)
    _ods_successors = None
    super().__init__(self.OPERATION_NAME, self._ODS_REGIONS, self._ODS_OPERAND_SEGMENTS, self._ODS_RESULT_SEGMENTS, attributes=attributes, results=results, operands=operands, successors=_ods_successors, regions=regions, loc=loc, ip=ip)

  @builtins.property
  def a(self) -> _ods_ir.Value[_ods_ir.VectorType]:
    return self.operation.operands[0]

  @builtins.property
  def b(self) -> _ods_ir.Value[_ods_ir.VectorType]:
    return self.operation.operands[1]

  @builtins.property
  def c(self) -> _ods_ir.Value[_ods_ir.VectorType]:
    return self.operation.operands[2]

  @builtins.property
  def cbsz(self) -> _ods_ir.IntegerAttr:
    return self.operation.attributes["cbsz"]

  @cbsz.setter
  def cbsz(self, value: _ods_ir.IntegerAttr):
    if value is None:
      raise ValueError("'None' not allowed as value for mandatory attributes")
    self.operation.attributes["cbsz"] = value

  @builtins.property
  def abid(self) -> _ods_ir.IntegerAttr:
    return self.operation.attributes["abid"]

  @abid.setter
  def abid(self, value: _ods_ir.IntegerAttr):
    if value is None:
      raise ValueError("'None' not allowed as value for mandatory attributes")
    self.operation.attributes["abid"] = value

  @builtins.property
  def blgp(self) -> _ods_ir.IntegerAttr:
    return self.operation.attributes["blgp"]

  @blgp.setter
  def blgp(self, value: _ods_ir.IntegerAttr):
    if value is None:
      raise ValueError("'None' not allowed as value for mandatory attributes")
    self.operation.attributes["blgp"] = value

  @builtins.property
  def res(self) -> _ods_ir.OpResult[_ods_ir.VectorType]:
    return self.operation.results[0]

@_ods_cext.register_op_adaptor(mfma_f32_16x16x2bf16)
class mfma_f32_16x16x2bf16Adaptor(_ods_ir.OpAdaptor):
  OPERATION_NAME = "rocdl.mfma.f32.16x16x2bf16"

  @builtins.property
  def a(self) -> _ods_ir.Value[_ods_ir.VectorType]:
    return self.operands[0]

  @builtins.property
  def b(self) -> _ods_ir.Value[_ods_ir.VectorType]:
    return self.operands[1]

  @builtins.property
  def c(self) -> _ods_ir.Value[_ods_ir.VectorType]:
    return self.operands[2]

  @builtins.property
  def cbsz(self) -> _ods_ir.IntegerAttr:
    return self.attributes["cbsz"]

  @builtins.property
  def abid(self) -> _ods_ir.IntegerAttr:
    return self.attributes["abid"]

  @builtins.property
  def blgp(self) -> _ods_ir.IntegerAttr:
    return self.attributes["blgp"]

def mfma_f32_16x16x2bf16_(res: _ods_ir.Type, a: _ods_ir.Value[_ods_ir.VectorType], b: _ods_ir.Value[_ods_ir.VectorType], c: _ods_ir.Value[_ods_ir.VectorType], cbsz: _Union[int, _ods_ir.IntegerAttr], abid: _Union[int, _ods_ir.IntegerAttr], blgp: _Union[int, _ods_ir.IntegerAttr], *, loc: _Optional[_ods_ir.Location] = None, ip: _Optional[_ods_ir.InsertionPoint] = None) -> _ods_ir.OpResult[_ods_ir.VectorType]:
  return mfma_f32_16x16x2bf16(res=res, a=a, b=b, c=c, cbsz=cbsz, abid=abid, blgp=blgp, loc=loc, ip=ip).result

@_ods_cext.register_operation(_Dialect)
class mfma_f32_16x16x4bf16_1k(_ods_ir.OpView):
  r"""
  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, 0 : (vector<4xi16>, vector<4xi16>, vector<16xf32>) -> vector<16xf32>
  ```
  """

  OPERATION_NAME = "rocdl.mfma.f32.16x16x4bf16.1k"

  _ODS_REGIONS = (0, True)

  def __init__(self, res: _ods_ir.Type, a: _ods_ir.Value[_ods_ir.VectorType], b: _ods_ir.Value[_ods_ir.VectorType], c: _ods_ir.Value[_ods_ir.VectorType], cbsz: _Union[int, _ods_ir.IntegerAttr], abid: _Union[int, _ods_ir.IntegerAttr], blgp: _Union[int, _ods_ir.IntegerAttr], *, loc: _Optional[_ods_ir.Location] = None, ip: _Optional[_ods_ir.InsertionPoint] = None):
    operands = []
    attributes = {}
    regions = None
    operands.append(a)
    operands.append(b)
    operands.append(c)
    _ods_context = _ods_get_default_loc_context(loc)
    attributes["cbsz"] = (cbsz if (
    isinstance(cbsz, _ods_ir.Attribute) or
    not _ods_ir.AttrBuilder.contains('I32Attr')) else
      _ods_ir.AttrBuilder.get('I32Attr')(cbsz, context=_ods_context))
    attributes["abid"] = (abid if (
    isinstance(abid, _ods_ir.Attribute) or
    not _ods_ir.AttrBuilder.contains('I32Attr')) else
      _ods_ir.AttrBuilder.get('I32Attr')(abid, context=_ods_context))
    attributes["blgp"] = (blgp if (
    isinstance(blgp, _ods_ir.Attribute) or
    not _ods_ir.AttrBuilder.contains('I32Attr')) else
      _ods_ir.AttrBuilder.get('I32Attr')(blgp, context=_ods_context))
    results = []
    results.append(res)
    _ods_successors = None
    super().__init__(self.OPERATION_NAME, self._ODS_REGIONS, self._ODS_OPERAND_SEGMENTS, self._ODS_RESULT_SEGMENTS, attributes=attributes, results=results, operands=operands, successors=_ods_successors, regions=regions, loc=loc, ip=ip)

  @builtins.property
  def a(self) -> _ods_ir.Value[_ods_ir.VectorType]:
    return self.operation.operands[0]

  @builtins.property
  def b(self) -> _ods_ir.Value[_ods_ir.VectorType]:
    return self.operation.operands[1]

  @builtins.property
  def c(self) -> _ods_ir.Value[_ods_ir.VectorType]:
    return self.operation.operands[2]

  @builtins.property
  def cbsz(self) -> _ods_ir.IntegerAttr:
    return self.operation.attributes["cbsz"]

  @cbsz.setter
  def cbsz(self, value: _ods_ir.IntegerAttr):
    if value is None:
      raise ValueError("'None' not allowed as value for mandatory attributes")
    self.operation.attributes["cbsz"] = value

  @builtins.property
  def abid(self) -> _ods_ir.IntegerAttr:
    return self.operation.attributes["abid"]

  @abid.setter
  def abid(self, value: _ods_ir.IntegerAttr):
    if value is None:
      raise ValueError("'None' not allowed as value for mandatory attributes")
    self.operation.attributes["abid"] = value

  @builtins.property
  def blgp(self) -> _ods_ir.IntegerAttr:
    return self.operation.attributes["blgp"]

  @blgp.setter
  def blgp(self, value: _ods_ir.IntegerAttr):
    if value is None:
      raise ValueError("'None' not allowed as value for mandatory attributes")
    self.operation.attributes["blgp"] = value

  @builtins.property
  def res(self) -> _ods_ir.OpResult[_ods_ir.VectorType]:
    return self.operation.results[0]

@_ods_cext.register_op_adaptor(mfma_f32_16x16x4bf16_1k)
class mfma_f32_16x16x4bf16_1kAdaptor(_ods_ir.OpAdaptor):
  OPERATION_NAME = "rocdl.mfma.f32.16x16x4bf16.1k"

  @builtins.property
  def a(self) -> _ods_ir.Value[_ods_ir.VectorType]:
    return self.operands[0]

  @builtins.property
  def b(self) -> _ods_ir.Value[_ods_ir.VectorType]:
    return self.operands[1]

  @builtins.property
  def c(self) -> _ods_ir.Value[_ods_ir.VectorType]:
    return self.operands[2]

  @builtins.property
  def cbsz(self) -> _ods_ir.IntegerAttr:
    return self.attributes["cbsz"]

  @builtins.property
  def abid(self) -> _ods_ir.IntegerAttr:
    return self.attributes["abid"]

  @builtins.property
  def blgp(self) -> _ods_ir.IntegerAttr:
    return self.attributes["blgp"]

def mfma_f32_16x16x4bf16_1k_(res: _ods_ir.Type, a: _ods_ir.Value[_ods_ir.VectorType], b: _ods_ir.Value[_ods_ir.VectorType], c: _ods_ir.Value[_ods_ir.VectorType], cbsz: _Union[int, _ods_ir.IntegerAttr], abid: _Union[int, _ods_ir.IntegerAttr], blgp: _Union[int, _ods_ir.IntegerAttr], *, loc: _Optional[_ods_ir.Location] = None, ip: _Optional[_ods_ir.InsertionPoint] = None) -> _ods_ir.OpResult[_ods_ir.VectorType]:
  return mfma_f32_16x16x4bf16_1k(res=res, a=a, b=b, c=c, cbsz=cbsz, abid=abid, blgp=blgp, loc=loc, ip=ip).result

@_ods_cext.register_operation(_Dialect)
class mfma_f32_16x16x4f16(_ods_ir.OpView):
  r"""
  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, 0 : (vector<4xf16>, vector<4xf16>, vector<16xf32>) -> vector<16xf32>
  ```
  """

  OPERATION_NAME = "rocdl.mfma.f32.16x16x4f16"

  _ODS_REGIONS = (0, True)

  def __init__(self, res: _ods_ir.Type, a: _ods_ir.Value[_ods_ir.VectorType], b: _ods_ir.Value[_ods_ir.VectorType], c: _ods_ir.Value[_ods_ir.VectorType], cbsz: _Union[int, _ods_ir.IntegerAttr], abid: _Union[int, _ods_ir.IntegerAttr], blgp: _Union[int, _ods_ir.IntegerAttr], *, loc: _Optional[_ods_ir.Location] = None, ip: _Optional[_ods_ir.InsertionPoint] = None):
    operands = []
    attributes = {}
    regions = None
    operands.append(a)
    operands.append(b)
    operands.append(c)
    _ods_context = _ods_get_default_loc_context(loc)
    attributes["cbsz"] = (cbsz if (
    isinstance(cbsz, _ods_ir.Attribute) or
    not _ods_ir.AttrBuilder.contains('I32Attr')) else
      _ods_ir.AttrBuilder.get('I32Attr')(cbsz, context=_ods_context))
    attributes["abid"] = (abid if (
    isinstance(abid, _ods_ir.Attribute) or
    not _ods_ir.AttrBuilder.contains('I32Attr')) else
      _ods_ir.AttrBuilder.get('I32Attr')(abid, context=_ods_context))
    attributes["blgp"] = (blgp if (
    isinstance(blgp, _ods_ir.Attribute) or
    not _ods_ir.AttrBuilder.contains('I32Attr')) else
      _ods_ir.AttrBuilder.get('I32Attr')(blgp, context=_ods_context))
    results = []
    results.append(res)
    _ods_successors = None
    super().__init__(self.OPERATION_NAME, self._ODS_REGIONS, self._ODS_OPERAND_SEGMENTS, self._ODS_RESULT_SEGMENTS, attributes=attributes, results=results, operands=operands, successors=_ods_successors, regions=regions, loc=loc, ip=ip)

  @builtins.property
  def a(self) -> _ods_ir.Value[_ods_ir.VectorType]:
    return self.operation.operands[0]

  @builtins.property
  def b(self) -> _ods_ir.Value[_ods_ir.VectorType]:
    return self.operation.operands[1]

  @builtins.property
  def c(self) -> _ods_ir.Value[_ods_ir.VectorType]:
    return self.operation.operands[2]

  @builtins.property
  def cbsz(self) -> _ods_ir.IntegerAttr:
    return self.operation.attributes["cbsz"]

  @cbsz.setter
  def cbsz(self, value: _ods_ir.IntegerAttr):
    if value is None:
      raise ValueError("'None' not allowed as value for mandatory attributes")
    self.operation.attributes["cbsz"] = value

  @builtins.property
  def abid(self) -> _ods_ir.IntegerAttr:
    return self.operation.attributes["abid"]

  @abid.setter
  def abid(self, value: _ods_ir.IntegerAttr):
    if value is None:
      raise ValueError("'None' not allowed as value for mandatory attributes")
    self.operation.attributes["abid"] = value

  @builtins.property
  def blgp(self) -> _ods_ir.IntegerAttr:
    return self.operation.attributes["blgp"]

  @blgp.setter
  def blgp(self, value: _ods_ir.IntegerAttr):
    if value is None:
      raise ValueError("'None' not allowed as value for mandatory attributes")
    self.operation.attributes["blgp"] = value

  @builtins.property
  def res(self) -> _ods_ir.OpResult[_ods_ir.VectorType]:
    return self.operation.results[0]

@_ods_cext.register_op_adaptor(mfma_f32_16x16x4f16)
class mfma_f32_16x16x4f16Adaptor(_ods_ir.OpAdaptor):
  OPERATION_NAME = "rocdl.mfma.f32.16x16x4f16"

  @builtins.property
  def a(self) -> _ods_ir.Value[_ods_ir.VectorType]:
    return self.operands[0]

  @builtins.property
  def b(self) -> _ods_ir.Value[_ods_ir.VectorType]:
    return self.operands[1]

  @builtins.property
  def c(self) -> _ods_ir.Value[_ods_ir.VectorType]:
    return self.operands[2]

  @builtins.property
  def cbsz(self) -> _ods_ir.IntegerAttr:
    return self.attributes["cbsz"]

  @builtins.property
  def abid(self) -> _ods_ir.IntegerAttr:
    return self.attributes["abid"]

  @builtins.property
  def blgp(self) -> _ods_ir.IntegerAttr:
    return self.attributes["blgp"]

def mfma_f32_16x16x4f16_(res: _ods_ir.Type, a: _ods_ir.Value[_ods_ir.VectorType], b: _ods_ir.Value[_ods_ir.VectorType], c: _ods_ir.Value[_ods_ir.VectorType], cbsz: _Union[int, _ods_ir.IntegerAttr], abid: _Union[int, _ods_ir.IntegerAttr], blgp: _Union[int, _ods_ir.IntegerAttr], *, loc: _Optional[_ods_ir.Location] = None, ip: _Optional[_ods_ir.InsertionPoint] = None) -> _ods_ir.OpResult[_ods_ir.VectorType]:
  return mfma_f32_16x16x4f16(res=res, a=a, b=b, c=c, cbsz=cbsz, abid=abid, blgp=blgp, loc=loc, ip=ip).result

@_ods_cext.register_operation(_Dialect)
class mfma_f32_16x16x4f32(_ods_ir.OpView):
  r"""
  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, 0 : (f32, f32, vector<4xf32>) -> vector<4xf32>
  ```
  """

  OPERATION_NAME = "rocdl.mfma.f32.16x16x4f32"

  _ODS_REGIONS = (0, True)

  def __init__(self, res: _ods_ir.Type, a: _ods_ir.Value, b: _ods_ir.Value, c: _ods_ir.Value[_ods_ir.VectorType], cbsz: _Union[int, _ods_ir.IntegerAttr], abid: _Union[int, _ods_ir.IntegerAttr], blgp: _Union[int, _ods_ir.IntegerAttr], *, loc: _Optional[_ods_ir.Location] = None, ip: _Optional[_ods_ir.InsertionPoint] = None):
    operands = []
    attributes = {}
    regions = None
    operands.append(a)
    operands.append(b)
    operands.append(c)
    _ods_context = _ods_get_default_loc_context(loc)
    attributes["cbsz"] = (cbsz if (
    isinstance(cbsz, _ods_ir.Attribute) or
    not _ods_ir.AttrBuilder.contains('I32Attr')) else
      _ods_ir.AttrBuilder.get('I32Attr')(cbsz, context=_ods_context))
    attributes["abid"] = (abid if (
    isinstance(abid, _ods_ir.Attribute) or
    not _ods_ir.AttrBuilder.contains('I32Attr')) else
      _ods_ir.AttrBuilder.get('I32Attr')(abid, context=_ods_context))
    attributes["blgp"] = (blgp if (
    isinstance(blgp, _ods_ir.Attribute) or
    not _ods_ir.AttrBuilder.contains('I32Attr')) else
      _ods_ir.AttrBuilder.get('I32Attr')(blgp, context=_ods_context))
    results = []
    results.append(res)
    _ods_successors = None
    super().__init__(self.OPERATION_NAME, self._ODS_REGIONS, self._ODS_OPERAND_SEGMENTS, self._ODS_RESULT_SEGMENTS, attributes=attributes, results=results, operands=operands, successors=_ods_successors, regions=regions, loc=loc, ip=ip)

  @builtins.property
  def a(self) -> _ods_ir.Value:
    return self.operation.operands[0]

  @builtins.property
  def b(self) -> _ods_ir.Value:
    return self.operation.operands[1]

  @builtins.property
  def c(self) -> _ods_ir.Value[_ods_ir.VectorType]:
    return self.operation.operands[2]

  @builtins.property
  def cbsz(self) -> _ods_ir.IntegerAttr:
    return self.operation.attributes["cbsz"]

  @cbsz.setter
  def cbsz(self, value: _ods_ir.IntegerAttr):
    if value is None:
      raise ValueError("'None' not allowed as value for mandatory attributes")
    self.operation.attributes["cbsz"] = value

  @builtins.property
  def abid(self) -> _ods_ir.IntegerAttr:
    return self.operation.attributes["abid"]

  @abid.setter
  def abid(self, value: _ods_ir.IntegerAttr):
    if value is None:
      raise ValueError("'None' not allowed as value for mandatory attributes")
    self.operation.attributes["abid"] = value

  @builtins.property
  def blgp(self) -> _ods_ir.IntegerAttr:
    return self.operation.attributes["blgp"]

  @blgp.setter
  def blgp(self, value: _ods_ir.IntegerAttr):
    if value is None:
      raise ValueError("'None' not allowed as value for mandatory attributes")
    self.operation.attributes["blgp"] = value

  @builtins.property
  def res(self) -> _ods_ir.OpResult[_ods_ir.VectorType]:
    return self.operation.results[0]

@_ods_cext.register_op_adaptor(mfma_f32_16x16x4f32)
class mfma_f32_16x16x4f32Adaptor(_ods_ir.OpAdaptor):
  OPERATION_NAME = "rocdl.mfma.f32.16x16x4f32"

  @builtins.property
  def a(self) -> _ods_ir.Value:
    return self.operands[0]

  @builtins.property
  def b(self) -> _ods_ir.Value:
    return self.operands[1]

  @builtins.property
  def c(self) -> _ods_ir.Value[_ods_ir.VectorType]:
    return self.operands[2]

  @builtins.property
  def cbsz(self) -> _ods_ir.IntegerAttr:
    return self.attributes["cbsz"]

  @builtins.property
  def abid(self) -> _ods_ir.IntegerAttr:
    return self.attributes["abid"]

  @builtins.property
  def blgp(self) -> _ods_ir.IntegerAttr:
    return self.attributes["blgp"]

def mfma_f32_16x16x4f32_(res: _ods_ir.Type, a: _ods_ir.Value, b: _ods_ir.Value, c: _ods_ir.Value[_ods_ir.VectorType], cbsz: _Union[int, _ods_ir.IntegerAttr], abid: _Union[int, _ods_ir.IntegerAttr], blgp: _Union[int, _ods_ir.IntegerAttr], *, loc: _Optional[_ods_ir.Location] = None, ip: _Optional[_ods_ir.InsertionPoint] = None) -> _ods_ir.OpResult[_ods_ir.VectorType]:
  return mfma_f32_16x16x4f32(res=res, a=a, b=b, c=c, cbsz=cbsz, abid=abid, blgp=blgp, loc=loc, ip=ip).result

@_ods_cext.register_operation(_Dialect)
class mfma_f32_16x16x8_xf32(_ods_ir.OpView):
  r"""
  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, 0 : (vector<2xf32>, vector<2xf32>, vector<4xf32>) -> vector<4xf32>
  ```
  """

  OPERATION_NAME = "rocdl.mfma.f32.16x16x8.xf32"

  _ODS_REGIONS = (0, True)

  def __init__(self, res: _ods_ir.Type, a: _ods_ir.Value[_ods_ir.VectorType], b: _ods_ir.Value[_ods_ir.VectorType], c: _ods_ir.Value[_ods_ir.VectorType], cbsz: _Union[int, _ods_ir.IntegerAttr], abid: _Union[int, _ods_ir.IntegerAttr], blgp: _Union[int, _ods_ir.IntegerAttr], *, loc: _Optional[_ods_ir.Location] = None, ip: _Optional[_ods_ir.InsertionPoint] = None):
    operands = []
    attributes = {}
    regions = None
    operands.append(a)
    operands.append(b)
    operands.append(c)
    _ods_context = _ods_get_default_loc_context(loc)
    attributes["cbsz"] = (cbsz if (
    isinstance(cbsz, _ods_ir.Attribute) or
    not _ods_ir.AttrBuilder.contains('I32Attr')) else
      _ods_ir.AttrBuilder.get('I32Attr')(cbsz, context=_ods_context))
    attributes["abid"] = (abid if (
    isinstance(abid, _ods_ir.Attribute) or
    not _ods_ir.AttrBuilder.contains('I32Attr')) else
      _ods_ir.AttrBuilder.get('I32Attr')(abid, context=_ods_context))
    attributes["blgp"] = (blgp if (
    isinstance(blgp, _ods_ir.Attribute) or
    not _ods_ir.AttrBuilder.contains('I32Attr')) else
      _ods_ir.AttrBuilder.get('I32Attr')(blgp, context=_ods_context))
    results = []
    results.append(res)
    _ods_successors = None
    super().__init__(self.OPERATION_NAME, self._ODS_REGIONS, self._ODS_OPERAND_SEGMENTS, self._ODS_RESULT_SEGMENTS, attributes=attributes, results=results, operands=operands, successors=_ods_successors, regions=regions, loc=loc, ip=ip)

  @builtins.property
  def a(self) -> _ods_ir.Value[_ods_ir.VectorType]:
    return self.operation.operands[0]

  @builtins.property
  def b(self) -> _ods_ir.Value[_ods_ir.VectorType]:
    return self.operation.operands[1]

  @builtins.property
  def c(self) -> _ods_ir.Value[_ods_ir.VectorType]:
    return self.operation.operands[2]

  @builtins.property
  def cbsz(self) -> _ods_ir.IntegerAttr:
    return self.operation.attributes["cbsz"]

  @cbsz.setter
  def cbsz(self, value: _ods_ir.IntegerAttr):
    if value is None:
      raise ValueError("'None' not allowed as value for mandatory attributes")
    self.operation.attributes["cbsz"] = value

  @builtins.property
  def abid(self) -> _ods_ir.IntegerAttr:
    return self.operation.attributes["abid"]

  @abid.setter
  def abid(self, value: _ods_ir.IntegerAttr):
    if value is None:
      raise ValueError("'None' not allowed as value for mandatory attributes")
    self.operation.attributes["abid"] = value

  @builtins.property
  def blgp(self) -> _ods_ir.IntegerAttr:
    return self.operation.attributes["blgp"]

  @blgp.setter
  def blgp(self, value: _ods_ir.IntegerAttr):
    if value is None:
      raise ValueError("'None' not allowed as value for mandatory attributes")
    self.operation.attributes["blgp"] = value

  @builtins.property
  def res(self) -> _ods_ir.OpResult[_ods_ir.VectorType]:
    return self.operation.results[0]

@_ods_cext.register_op_adaptor(mfma_f32_16x16x8_xf32)
class mfma_f32_16x16x8_xf32Adaptor(_ods_ir.OpAdaptor):
  OPERATION_NAME = "rocdl.mfma.f32.16x16x8.xf32"

  @builtins.property
  def a(self) -> _ods_ir.Value[_ods_ir.VectorType]:
    return self.operands[0]

  @builtins.property
  def b(self) -> _ods_ir.Value[_ods_ir.VectorType]:
    return self.operands[1]

  @builtins.property
  def c(self) -> _ods_ir.Value[_ods_ir.VectorType]:
    return self.operands[2]

  @builtins.property
  def cbsz(self) -> _ods_ir.IntegerAttr:
    return self.attributes["cbsz"]

  @builtins.property
  def abid(self) -> _ods_ir.IntegerAttr:
    return self.attributes["abid"]

  @builtins.property
  def blgp(self) -> _ods_ir.IntegerAttr:
    return self.attributes["blgp"]

def mfma_f32_16x16x8_xf32_(res: _ods_ir.Type, a: _ods_ir.Value[_ods_ir.VectorType], b: _ods_ir.Value[_ods_ir.VectorType], c: _ods_ir.Value[_ods_ir.VectorType], cbsz: _Union[int, _ods_ir.IntegerAttr], abid: _Union[int, _ods_ir.IntegerAttr], blgp: _Union[int, _ods_ir.IntegerAttr], *, loc: _Optional[_ods_ir.Location] = None, ip: _Optional[_ods_ir.InsertionPoint] = None) -> _ods_ir.OpResult[_ods_ir.VectorType]:
  return mfma_f32_16x16x8_xf32(res=res, a=a, b=b, c=c, cbsz=cbsz, abid=abid, blgp=blgp, loc=loc, ip=ip).result

@_ods_cext.register_operation(_Dialect)
class mfma_f32_16x16x8bf16(_ods_ir.OpView):
  r"""
  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, 0 : (vector<2xi16>, vector<2xi16>, vector<4xf32>) -> vector<4xf32>
  ```
  """

  OPERATION_NAME = "rocdl.mfma.f32.16x16x8bf16"

  _ODS_REGIONS = (0, True)

  def __init__(self, res: _ods_ir.Type, a: _ods_ir.Value[_ods_ir.VectorType], b: _ods_ir.Value[_ods_ir.VectorType], c: _ods_ir.Value[_ods_ir.VectorType], cbsz: _Union[int, _ods_ir.IntegerAttr], abid: _Union[int, _ods_ir.IntegerAttr], blgp: _Union[int, _ods_ir.IntegerAttr], *, loc: _Optional[_ods_ir.Location] = None, ip: _Optional[_ods_ir.InsertionPoint] = None):
    operands = []
    attributes = {}
    regions = None
    operands.append(a)
    operands.append(b)
    operands.append(c)
    _ods_context = _ods_get_default_loc_context(loc)
    attributes["cbsz"] = (cbsz if (
    isinstance(cbsz, _ods_ir.Attribute) or
    not _ods_ir.AttrBuilder.contains('I32Attr')) else
      _ods_ir.AttrBuilder.get('I32Attr')(cbsz, context=_ods_context))
    attributes["abid"] = (abid if (
    isinstance(abid, _ods_ir.Attribute) or
    not _ods_ir.AttrBuilder.contains('I32Attr')) else
      _ods_ir.AttrBuilder.get('I32Attr')(abid, context=_ods_context))
    attributes["blgp"] = (blgp if (
    isinstance(blgp, _ods_ir.Attribute) or
    not _ods_ir.AttrBuilder.contains('I32Attr')) else
      _ods_ir.AttrBuilder.get('I32Attr')(blgp, context=_ods_context))
    results = []
    results.append(res)
    _ods_successors = None
    super().__init__(self.OPERATION_NAME, self._ODS_REGIONS, self._ODS_OPERAND_SEGMENTS, self._ODS_RESULT_SEGMENTS, attributes=attributes, results=results, operands=operands, successors=_ods_successors, regions=regions, loc=loc, ip=ip)

  @builtins.property
  def a(self) -> _ods_ir.Value[_ods_ir.VectorType]:
    return self.operation.operands[0]

  @builtins.property
  def b(self) -> _ods_ir.Value[_ods_ir.VectorType]:
    return self.operation.operands[1]

  @builtins.property
  def c(self) -> _ods_ir.Value[_ods_ir.VectorType]:
    return self.operation.operands[2]

  @builtins.property
  def cbsz(self) -> _ods_ir.IntegerAttr:
    return self.operation.attributes["cbsz"]

  @cbsz.setter
  def cbsz(self, value: _ods_ir.IntegerAttr):
    if value is None:
      raise ValueError("'None' not allowed as value for mandatory attributes")
    self.operation.attributes["cbsz"] = value

  @builtins.property
  def abid(self) -> _ods_ir.IntegerAttr:
    return self.operation.attributes["abid"]

  @abid.setter
  def abid(self, value: _ods_ir.IntegerAttr):
    if value is None:
      raise ValueError("'None' not allowed as value for mandatory attributes")
    self.operation.attributes["abid"] = value

  @builtins.property
  def blgp(self) -> _ods_ir.IntegerAttr:
    return self.operation.attributes["blgp"]

  @blgp.setter
  def blgp(self, value: _ods_ir.IntegerAttr):
    if value is None:
      raise ValueError("'None' not allowed as value for mandatory attributes")
    self.operation.attributes["blgp"] = value

  @builtins.property
  def res(self) -> _ods_ir.OpResult[_ods_ir.VectorType]:
    return self.operation.results[0]

@_ods_cext.register_op_adaptor(mfma_f32_16x16x8bf16)
class mfma_f32_16x16x8bf16Adaptor(_ods_ir.OpAdaptor):
  OPERATION_NAME = "rocdl.mfma.f32.16x16x8bf16"

  @builtins.property
  def a(self) -> _ods_ir.Value[_ods_ir.VectorType]:
    return self.operands[0]

  @builtins.property
  def b(self) -> _ods_ir.Value[_ods_ir.VectorType]:
    return self.operands[1]

  @builtins.property
  def c(self) -> _ods_ir.Value[_ods_ir.VectorType]:
    return self.operands[2]

  @builtins.property
  def cbsz(self) -> _ods_ir.IntegerAttr:
    return self.attributes["cbsz"]

  @builtins.property
  def abid(self) -> _ods_ir.IntegerAttr:
    return self.attributes["abid"]

  @builtins.property
  def blgp(self) -> _ods_ir.IntegerAttr:
    return self.attributes["blgp"]

def mfma_f32_16x16x8bf16_(res: _ods_ir.Type, a: _ods_ir.Value[_ods_ir.VectorType], b: _ods_ir.Value[_ods_ir.VectorType], c: _ods_ir.Value[_ods_ir.VectorType], cbsz: _Union[int, _ods_ir.IntegerAttr], abid: _Union[int, _ods_ir.IntegerAttr], blgp: _Union[int, _ods_ir.IntegerAttr], *, loc: _Optional[_ods_ir.Location] = None, ip: _Optional[_ods_ir.InsertionPoint] = None) -> _ods_ir.OpResult[_ods_ir.VectorType]:
  return mfma_f32_16x16x8bf16(res=res, a=a, b=b, c=c, cbsz=cbsz, abid=abid, blgp=blgp, loc=loc, ip=ip).result

@_ods_cext.register_operation(_Dialect)
class mfma_f32_16x16x16bf16_1k(_ods_ir.OpView):
  r"""
  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, 0 : (vector<4xi16>, vector<4xi16>, vector<4xf32>) -> vector<4xf32>
  ```
  """

  OPERATION_NAME = "rocdl.mfma.f32.16x16x16bf16.1k"

  _ODS_REGIONS = (0, True)

  def __init__(self, res: _ods_ir.Type, a: _ods_ir.Value[_ods_ir.VectorType], b: _ods_ir.Value[_ods_ir.VectorType], c: _ods_ir.Value[_ods_ir.VectorType], cbsz: _Union[int, _ods_ir.IntegerAttr], abid: _Union[int, _ods_ir.IntegerAttr], blgp: _Union[int, _ods_ir.IntegerAttr], *, loc: _Optional[_ods_ir.Location] = None, ip: _Optional[_ods_ir.InsertionPoint] = None):
    operands = []
    attributes = {}
    regions = None
    operands.append(a)
    operands.append(b)
    operands.append(c)
    _ods_context = _ods_get_default_loc_context(loc)
    attributes["cbsz"] = (cbsz if (
    isinstance(cbsz, _ods_ir.Attribute) or
    not _ods_ir.AttrBuilder.contains('I32Attr')) else
      _ods_ir.AttrBuilder.get('I32Attr')(cbsz, context=_ods_context))
    attributes["abid"] = (abid if (
    isinstance(abid, _ods_ir.Attribute) or
    not _ods_ir.AttrBuilder.contains('I32Attr')) else
      _ods_ir.AttrBuilder.get('I32Attr')(abid, context=_ods_context))
    attributes["blgp"] = (blgp if (
    isinstance(blgp, _ods_ir.Attribute) or
    not _ods_ir.AttrBuilder.contains('I32Attr')) else
      _ods_ir.AttrBuilder.get('I32Attr')(blgp, context=_ods_context))
    results = []
    results.append(res)
    _ods_successors = None
    super().__init__(self.OPERATION_NAME, self._ODS_REGIONS, self._ODS_OPERAND_SEGMENTS, self._ODS_RESULT_SEGMENTS, attributes=attributes, results=results, operands=operands, successors=_ods_successors, regions=regions, loc=loc, ip=ip)

  @builtins.property
  def a(self) -> _ods_ir.Value[_ods_ir.VectorType]:
    return self.operation.operands[0]

  @builtins.property
  def b(self) -> _ods_ir.Value[_ods_ir.VectorType]:
    return self.operation.operands[1]

  @builtins.property
  def c(self) -> _ods_ir.Value[_ods_ir.VectorType]:
    return self.operation.operands[2]

  @builtins.property
  def cbsz(self) -> _ods_ir.IntegerAttr:
    return self.operation.attributes["cbsz"]

  @cbsz.setter
  def cbsz(self, value: _ods_ir.IntegerAttr):
    if value is None:
      raise ValueError("'None' not allowed as value for mandatory attributes")
    self.operation.attributes["cbsz"] = value

  @builtins.property
  def abid(self) -> _ods_ir.IntegerAttr:
    return self.operation.attributes["abid"]

  @abid.setter
  def abid(self, value: _ods_ir.IntegerAttr):
    if value is None:
      raise ValueError("'None' not allowed as value for mandatory attributes")
    self.operation.attributes["abid"] = value

  @builtins.property
  def blgp(self) -> _ods_ir.IntegerAttr:
    return self.operation.attributes["blgp"]

  @blgp.setter
  def blgp(self, value: _ods_ir.IntegerAttr):
    if value is None:
      raise ValueError("'None' not allowed as value for mandatory attributes")
    self.operation.attributes["blgp"] = value

  @builtins.property
  def res(self) -> _ods_ir.OpResult[_ods_ir.VectorType]:
    return self.operation.results[0]

@_ods_cext.register_op_adaptor(mfma_f32_16x16x16bf16_1k)
class mfma_f32_16x16x16bf16_1kAdaptor(_ods_ir.OpAdaptor):
  OPERATION_NAME = "rocdl.mfma.f32.16x16x16bf16.1k"

  @builtins.property
  def a(self) -> _ods_ir.Value[_ods_ir.VectorType]:
    return self.operands[0]

  @builtins.property
  def b(self) -> _ods_ir.Value[_ods_ir.VectorType]:
    return self.operands[1]

  @builtins.property
  def c(self) -> _ods_ir.Value[_ods_ir.VectorType]:
    return self.operands[2]

  @builtins.property
  def cbsz(self) -> _ods_ir.IntegerAttr:
    return self.attributes["cbsz"]

  @builtins.property
  def abid(self) -> _ods_ir.IntegerAttr:
    return self.attributes["abid"]

  @builtins.property
  def blgp(self) -> _ods_ir.IntegerAttr:
    return self.attributes["blgp"]

def mfma_f32_16x16x16bf16_1k_(res: _ods_ir.Type, a: _ods_ir.Value[_ods_ir.VectorType], b: _ods_ir.Value[_ods_ir.VectorType], c: _ods_ir.Value[_ods_ir.VectorType], cbsz: _Union[int, _ods_ir.IntegerAttr], abid: _Union[int, _ods_ir.IntegerAttr], blgp: _Union[int, _ods_ir.IntegerAttr], *, loc: _Optional[_ods_ir.Location] = None, ip: _Optional[_ods_ir.InsertionPoint] = None) -> _ods_ir.OpResult[_ods_ir.VectorType]:
  return mfma_f32_16x16x16bf16_1k(res=res, a=a, b=b, c=c, cbsz=cbsz, abid=abid, blgp=blgp, loc=loc, ip=ip).result

@_ods_cext.register_operation(_Dialect)
class mfma_f32_16x16x16f16(_ods_ir.OpView):
  r"""
  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, 0 : (vector<4xf16>, vector<4xf16>, vector<4xf32>) -> vector<4xf32>
  ```
  """

  OPERATION_NAME = "rocdl.mfma.f32.16x16x16f16"

  _ODS_REGIONS = (0, True)

  def __init__(self, res: _ods_ir.Type, a: _ods_ir.Value[_ods_ir.VectorType], b: _ods_ir.Value[_ods_ir.VectorType], c: _ods_ir.Value[_ods_ir.VectorType], cbsz: _Union[int, _ods_ir.IntegerAttr], abid: _Union[int, _ods_ir.IntegerAttr], blgp: _Union[int, _ods_ir.IntegerAttr], *, loc: _Optional[_ods_ir.Location] = None, ip: _Optional[_ods_ir.InsertionPoint] = None):
    operands = []
    attributes = {}
    regions = None
    operands.append(a)
    operands.append(b)
    operands.append(c)
    _ods_context = _ods_get_default_loc_context(loc)
    attributes["cbsz"] = (cbsz if (
    isinstance(cbsz, _ods_ir.Attribute) or
    not _ods_ir.AttrBuilder.contains('I32Attr')) else
      _ods_ir.AttrBuilder.get('I32Attr')(cbsz, context=_ods_context))
    attributes["abid"] = (abid if (
    isinstance(abid, _ods_ir.Attribute) or
    not _ods_ir.AttrBuilder.contains('I32Attr')) else
      _ods_ir.AttrBuilder.get('I32Attr')(abid, context=_ods_context))
    attributes["blgp"] = (blgp if (
    isinstance(blgp, _ods_ir.Attribute) or
    not _ods_ir.AttrBuilder.contains('I32Attr')) else
      _ods_ir.AttrBuilder.get('I32Attr')(blgp, context=_ods_context))
    results = []
    results.append(res)
    _ods_successors = None
    super().__init__(self.OPERATION_NAME, self._ODS_REGIONS, self._ODS_OPERAND_SEGMENTS, self._ODS_RESULT_SEGMENTS, attributes=attributes, results=results, operands=operands, successors=_ods_successors, regions=regions, loc=loc, ip=ip)

  @builtins.property
  def a(self) -> _ods_ir.Value[_ods_ir.VectorType]:
    return self.operation.operands[0]

  @builtins.property
  def b(self) -> _ods_ir.Value[_ods_ir.VectorType]:
    return self.operation.operands[1]

  @builtins.property
  def c(self) -> _ods_ir.Value[_ods_ir.VectorType]:
    return self.operation.operands[2]

  @builtins.property
  def cbsz(self) -> _ods_ir.IntegerAttr:
    return self.operation.attributes["cbsz"]

  @cbsz.setter
  def cbsz(self, value: _ods_ir.IntegerAttr):
    if value is None:
      raise ValueError("'None' not allowed as value for mandatory attributes")
    self.operation.attributes["cbsz"] = value

  @builtins.property
  def abid(self) -> _ods_ir.IntegerAttr:
    return self.operation.attributes["abid"]

  @abid.setter
  def abid(self, value: _ods_ir.IntegerAttr):
    if value is None:
      raise ValueError("'None' not allowed as value for mandatory attributes")
    self.operation.attributes["abid"] = value

  @builtins.property
  def blgp(self) -> _ods_ir.IntegerAttr:
    return self.operation.attributes["blgp"]

  @blgp.setter
  def blgp(self, value: _ods_ir.IntegerAttr):
    if value is None:
      raise ValueError("'None' not allowed as value for mandatory attributes")
    self.operation.attributes["blgp"] = value

  @builtins.property
  def res(self) -> _ods_ir.OpResult[_ods_ir.VectorType]:
    return self.operation.results[0]

@_ods_cext.register_op_adaptor(mfma_f32_16x16x16f16)
class mfma_f32_16x16x16f16Adaptor(_ods_ir.OpAdaptor):
  OPERATION_NAME = "rocdl.mfma.f32.16x16x16f16"

  @builtins.property
  def a(self) -> _ods_ir.Value[_ods_ir.VectorType]:
    return self.operands[0]

  @builtins.property
  def b(self) -> _ods_ir.Value[_ods_ir.VectorType]:
    return self.operands[1]

  @builtins.property
  def c(self) -> _ods_ir.Value[_ods_ir.VectorType]:
    return self.operands[2]

  @builtins.property
  def cbsz(self) -> _ods_ir.IntegerAttr:
    return self.attributes["cbsz"]

  @builtins.property
  def abid(self) -> _ods_ir.IntegerAttr:
    return self.attributes["abid"]

  @builtins.property
  def blgp(self) -> _ods_ir.IntegerAttr:
    return self.attributes["blgp"]

def mfma_f32_16x16x16f16_(res: _ods_ir.Type, a: _ods_ir.Value[_ods_ir.VectorType], b: _ods_ir.Value[_ods_ir.VectorType], c: _ods_ir.Value[_ods_ir.VectorType], cbsz: _Union[int, _ods_ir.IntegerAttr], abid: _Union[int, _ods_ir.IntegerAttr], blgp: _Union[int, _ods_ir.IntegerAttr], *, loc: _Optional[_ods_ir.Location] = None, ip: _Optional[_ods_ir.InsertionPoint] = None) -> _ods_ir.OpResult[_ods_ir.VectorType]:
  return mfma_f32_16x16x16f16(res=res, a=a, b=b, c=c, cbsz=cbsz, abid=abid, blgp=blgp, loc=loc, ip=ip).result

@_ods_cext.register_operation(_Dialect)
class mfma_f32_16x16x32_bf8_bf8(_ods_ir.OpView):
  r"""
  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, 0 : (i64, i64, vector<4xf32>) -> vector<4xf32>
  ```
  """

  OPERATION_NAME = "rocdl.mfma.f32.16x16x32.bf8.bf8"

  _ODS_REGIONS = (0, True)

  def __init__(self, res: _ods_ir.Type, a: _ods_ir.Value, b: _ods_ir.Value, c: _ods_ir.Value[_ods_ir.VectorType], cbsz: _Union[int, _ods_ir.IntegerAttr], abid: _Union[int, _ods_ir.IntegerAttr], blgp: _Union[int, _ods_ir.IntegerAttr], *, loc: _Optional[_ods_ir.Location] = None, ip: _Optional[_ods_ir.InsertionPoint] = None):
    operands = []
    attributes = {}
    regions = None
    operands.append(a)
    operands.append(b)
    operands.append(c)
    _ods_context = _ods_get_default_loc_context(loc)
    attributes["cbsz"] = (cbsz if (
    isinstance(cbsz, _ods_ir.Attribute) or
    not _ods_ir.AttrBuilder.contains('I32Attr')) else
      _ods_ir.AttrBuilder.get('I32Attr')(cbsz, context=_ods_context))
    attributes["abid"] = (abid if (
    isinstance(abid, _ods_ir.Attribute) or
    not _ods_ir.AttrBuilder.contains('I32Attr')) else
      _ods_ir.AttrBuilder.get('I32Attr')(abid, context=_ods_context))
    attributes["blgp"] = (blgp if (
    isinstance(blgp, _ods_ir.Attribute) or
    not _ods_ir.AttrBuilder.contains('I32Attr')) else
      _ods_ir.AttrBuilder.get('I32Attr')(blgp, context=_ods_context))
    results = []
    results.append(res)
    _ods_successors = None
    super().__init__(self.OPERATION_NAME, self._ODS_REGIONS, self._ODS_OPERAND_SEGMENTS, self._ODS_RESULT_SEGMENTS, attributes=attributes, results=results, operands=operands, successors=_ods_successors, regions=regions, loc=loc, ip=ip)

  @builtins.property
  def a(self) -> _ods_ir.Value:
    return self.operation.operands[0]

  @builtins.property
  def b(self) -> _ods_ir.Value:
    return self.operation.operands[1]

  @builtins.property
  def c(self) -> _ods_ir.Value[_ods_ir.VectorType]:
    return self.operation.operands[2]

  @builtins.property
  def cbsz(self) -> _ods_ir.IntegerAttr:
    return self.operation.attributes["cbsz"]

  @cbsz.setter
  def cbsz(self, value: _ods_ir.IntegerAttr):
    if value is None:
      raise ValueError("'None' not allowed as value for mandatory attributes")
    self.operation.attributes["cbsz"] = value

  @builtins.property
  def abid(self) -> _ods_ir.IntegerAttr:
    return self.operation.attributes["abid"]

  @abid.setter
  def abid(self, value: _ods_ir.IntegerAttr):
    if value is None:
      raise ValueError("'None' not allowed as value for mandatory attributes")
    self.operation.attributes["abid"] = value

  @builtins.property
  def blgp(self) -> _ods_ir.IntegerAttr:
    return self.operation.attributes["blgp"]

  @blgp.setter
  def blgp(self, value: _ods_ir.IntegerAttr):
    if value is None:
      raise ValueError("'None' not allowed as value for mandatory attributes")
    self.operation.attributes["blgp"] = value

  @builtins.property
  def res(self) -> _ods_ir.OpResult[_ods_ir.VectorType]:
    return self.operation.results[0]

@_ods_cext.register_op_adaptor(mfma_f32_16x16x32_bf8_bf8)
class mfma_f32_16x16x32_bf8_bf8Adaptor(_ods_ir.OpAdaptor):
  OPERATION_NAME = "rocdl.mfma.f32.16x16x32.bf8.bf8"

  @builtins.property
  def a(self) -> _ods_ir.Value:
    return self.operands[0]

  @builtins.property
  def b(self) -> _ods_ir.Value:
    return self.operands[1]

  @builtins.property
  def c(self) -> _ods_ir.Value[_ods_ir.VectorType]:
    return self.operands[2]

  @builtins.property
  def cbsz(self) -> _ods_ir.IntegerAttr:
    return self.attributes["cbsz"]

  @builtins.property
  def abid(self) -> _ods_ir.IntegerAttr:
    return self.attributes["abid"]

  @builtins.property
  def blgp(self) -> _ods_ir.IntegerAttr:
    return self.attributes["blgp"]

def mfma_f32_16x16x32_bf8_bf8_(res: _ods_ir.Type, a: _ods_ir.Value, b: _ods_ir.Value, c: _ods_ir.Value[_ods_ir.VectorType], cbsz: _Union[int, _ods_ir.IntegerAttr], abid: _Union[int, _ods_ir.IntegerAttr], blgp: _Union[int, _ods_ir.IntegerAttr], *, loc: _Optional[_ods_ir.Location] = None, ip: _Optional[_ods_ir.InsertionPoint] = None) -> _ods_ir.OpResult[_ods_ir.VectorType]:
  return mfma_f32_16x16x32_bf8_bf8(res=res, a=a, b=b, c=c, cbsz=cbsz, abid=abid, blgp=blgp, loc=loc, ip=ip).result

@_ods_cext.register_operation(_Dialect)
class mfma_f32_16x16x32_bf8_fp8(_ods_ir.OpView):
  r"""
  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, 0 : (i64, i64, vector<4xf32>) -> vector<4xf32>
  ```
  """

  OPERATION_NAME = "rocdl.mfma.f32.16x16x32.bf8.fp8"

  _ODS_REGIONS = (0, True)

  def __init__(self, res: _ods_ir.Type, a: _ods_ir.Value, b: _ods_ir.Value, c: _ods_ir.Value[_ods_ir.VectorType], cbsz: _Union[int, _ods_ir.IntegerAttr], abid: _Union[int, _ods_ir.IntegerAttr], blgp: _Union[int, _ods_ir.IntegerAttr], *, loc: _Optional[_ods_ir.Location] = None, ip: _Optional[_ods_ir.InsertionPoint] = None):
    operands = []
    attributes = {}
    regions = None
    operands.append(a)
    operands.append(b)
    operands.append(c)
    _ods_context = _ods_get_default_loc_context(loc)
    attributes["cbsz"] = (cbsz if (
    isinstance(cbsz, _ods_ir.Attribute) or
    not _ods_ir.AttrBuilder.contains('I32Attr')) else
      _ods_ir.AttrBuilder.get('I32Attr')(cbsz, context=_ods_context))
    attributes["abid"] = (abid if (
    isinstance(abid, _ods_ir.Attribute) or
    not _ods_ir.AttrBuilder.contains('I32Attr')) else
      _ods_ir.AttrBuilder.get('I32Attr')(abid, context=_ods_context))
    attributes["blgp"] = (blgp if (
    isinstance(blgp, _ods_ir.Attribute) or
    not _ods_ir.AttrBuilder.contains('I32Attr')) else
      _ods_ir.AttrBuilder.get('I32Attr')(blgp, context=_ods_context))
    results = []
    results.append(res)
    _ods_successors = None
    super().__init__(self.OPERATION_NAME, self._ODS_REGIONS, self._ODS_OPERAND_SEGMENTS, self._ODS_RESULT_SEGMENTS, attributes=attributes, results=results, operands=operands, successors=_ods_successors, regions=regions, loc=loc, ip=ip)

  @builtins.property
  def a(self) -> _ods_ir.Value:
    return self.operation.operands[0]

  @builtins.property
  def b(self) -> _ods_ir.Value:
    return self.operation.operands[1]

  @builtins.property
  def c(self) -> _ods_ir.Value[_ods_ir.VectorType]:
    return self.operation.operands[2]

  @builtins.property
  def cbsz(self) -> _ods_ir.IntegerAttr:
    return self.operation.attributes["cbsz"]

  @cbsz.setter
  def cbsz(self, value: _ods_ir.IntegerAttr):
    if value is None:
      raise ValueError("'None' not allowed as value for mandatory attributes")
    self.operation.attributes["cbsz"] = value

  @builtins.property
  def abid(self) -> _ods_ir.IntegerAttr:
    return self.operation.attributes["abid"]

  @abid.setter
  def abid(self, value: _ods_ir.IntegerAttr):
    if value is None:
      raise ValueError("'None' not allowed as value for mandatory attributes")
    self.operation.attributes["abid"] = value

  @builtins.property
  def blgp(self) -> _ods_ir.IntegerAttr:
    return self.operation.attributes["blgp"]

  @blgp.setter
  def blgp(self, value: _ods_ir.IntegerAttr):
    if value is None:
      raise ValueError("'None' not allowed as value for mandatory attributes")
    self.operation.attributes["blgp"] = value

  @builtins.property
  def res(self) -> _ods_ir.OpResult[_ods_ir.VectorType]:
    return self.operation.results[0]

@_ods_cext.register_op_adaptor(mfma_f32_16x16x32_bf8_fp8)
class mfma_f32_16x16x32_bf8_fp8Adaptor(_ods_ir.OpAdaptor):
  OPERATION_NAME = "rocdl.mfma.f32.16x16x32.bf8.fp8"

  @builtins.property
  def a(self) -> _ods_ir.Value:
    return self.operands[0]

  @builtins.property
  def b(self) -> _ods_ir.Value:
    return self.operands[1]

  @builtins.property
  def c(self) -> _ods_ir.Value[_ods_ir.VectorType]:
    return self.operands[2]

  @builtins.property
  def cbsz(self) -> _ods_ir.IntegerAttr:
    return self.attributes["cbsz"]

  @builtins.property
  def abid(self) -> _ods_ir.IntegerAttr:
    return self.attributes["abid"]

  @builtins.property
  def blgp(self) -> _ods_ir.IntegerAttr:
    return self.attributes["blgp"]

def mfma_f32_16x16x32_bf8_fp8_(res: _ods_ir.Type, a: _ods_ir.Value, b: _ods_ir.Value, c: _ods_ir.Value[_ods_ir.VectorType], cbsz: _Union[int, _ods_ir.IntegerAttr], abid: _Union[int, _ods_ir.IntegerAttr], blgp: _Union[int, _ods_ir.IntegerAttr], *, loc: _Optional[_ods_ir.Location] = None, ip: _Optional[_ods_ir.InsertionPoint] = None) -> _ods_ir.OpResult[_ods_ir.VectorType]:
  return mfma_f32_16x16x32_bf8_fp8(res=res, a=a, b=b, c=c, cbsz=cbsz, abid=abid, blgp=blgp, loc=loc, ip=ip).result

@_ods_cext.register_operation(_Dialect)
class mfma_f32_16x16x32_bf16(_ods_ir.OpView):
  r"""
  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, 0 : (vector<8xbf16>, vector<8xbf16>, vector<4xf32>) -> vector<4xf32>
  ```
  """

  OPERATION_NAME = "rocdl.mfma.f32.16x16x32.bf16"

  _ODS_REGIONS = (0, True)

  def __init__(self, res: _ods_ir.Type, a: _ods_ir.Value[_ods_ir.VectorType], b: _ods_ir.Value[_ods_ir.VectorType], c: _ods_ir.Value[_ods_ir.VectorType], cbsz: _Union[int, _ods_ir.IntegerAttr], abid: _Union[int, _ods_ir.IntegerAttr], blgp: _Union[int, _ods_ir.IntegerAttr], *, loc: _Optional[_ods_ir.Location] = None, ip: _Optional[_ods_ir.InsertionPoint] = None):
    operands = []
    attributes = {}
    regions = None
    operands.append(a)
    operands.append(b)
    operands.append(c)
    _ods_context = _ods_get_default_loc_context(loc)
    attributes["cbsz"] = (cbsz if (
    isinstance(cbsz, _ods_ir.Attribute) or
    not _ods_ir.AttrBuilder.contains('I32Attr')) else
      _ods_ir.AttrBuilder.get('I32Attr')(cbsz, context=_ods_context))
    attributes["abid"] = (abid if (
    isinstance(abid, _ods_ir.Attribute) or
    not _ods_ir.AttrBuilder.contains('I32Attr')) else
      _ods_ir.AttrBuilder.get('I32Attr')(abid, context=_ods_context))
    attributes["blgp"] = (blgp if (
    isinstance(blgp, _ods_ir.Attribute) or
    not _ods_ir.AttrBuilder.contains('I32Attr')) else
      _ods_ir.AttrBuilder.get('I32Attr')(blgp, context=_ods_context))
    results = []
    results.append(res)
    _ods_successors = None
    super().__init__(self.OPERATION_NAME, self._ODS_REGIONS, self._ODS_OPERAND_SEGMENTS, self._ODS_RESULT_SEGMENTS, attributes=attributes, results=results, operands=operands, successors=_ods_successors, regions=regions, loc=loc, ip=ip)

  @builtins.property
  def a(self) -> _ods_ir.Value[_ods_ir.VectorType]:
    return self.operation.operands[0]

  @builtins.property
  def b(self) -> _ods_ir.Value[_ods_ir.VectorType]:
    return self.operation.operands[1]

  @builtins.property
  def c(self) -> _ods_ir.Value[_ods_ir.VectorType]:
    return self.operation.operands[2]

  @builtins.property
  def cbsz(self) -> _ods_ir.IntegerAttr:
    return self.operation.attributes["cbsz"]

  @cbsz.setter
  def cbsz(self, value: _ods_ir.IntegerAttr):
    if value is None:
      raise ValueError("'None' not allowed as value for mandatory attributes")
    self.operation.attributes["cbsz"] = value

  @builtins.property
  def abid(self) -> _ods_ir.IntegerAttr:
    return self.operation.attributes["abid"]

  @abid.setter
  def abid(self, value: _ods_ir.IntegerAttr):
    if value is None:
      raise ValueError("'None' not allowed as value for mandatory attributes")
    self.operation.attributes["abid"] = value

  @builtins.property
  def blgp(self) -> _ods_ir.IntegerAttr:
    return self.operation.attributes["blgp"]

  @blgp.setter
  def blgp(self, value: _ods_ir.IntegerAttr):
    if value is None:
      raise ValueError("'None' not allowed as value for mandatory attributes")
    self.operation.attributes["blgp"] = value

  @builtins.property
  def res(self) -> _ods_ir.OpResult[_ods_ir.VectorType]:
    return self.operation.results[0]

@_ods_cext.register_op_adaptor(mfma_f32_16x16x32_bf16)
class mfma_f32_16x16x32_bf16Adaptor(_ods_ir.OpAdaptor):
  OPERATION_NAME = "rocdl.mfma.f32.16x16x32.bf16"

  @builtins.property
  def a(self) -> _ods_ir.Value[_ods_ir.VectorType]:
    return self.operands[0]

  @builtins.property
  def b(self) -> _ods_ir.Value[_ods_ir.VectorType]:
    return self.operands[1]

  @builtins.property
  def c(self) -> _ods_ir.Value[_ods_ir.VectorType]:
    return self.operands[2]

  @builtins.property
  def cbsz(self) -> _ods_ir.IntegerAttr:
    return self.attributes["cbsz"]

  @builtins.property
  def abid(self) -> _ods_ir.IntegerAttr:
    return self.attributes["abid"]

  @builtins.property
  def blgp(self) -> _ods_ir.IntegerAttr:
    return self.attributes["blgp"]

def mfma_f32_16x16x32_bf16_(res: _ods_ir.Type, a: _ods_ir.Value[_ods_ir.VectorType], b: _ods_ir.Value[_ods_ir.VectorType], c: _ods_ir.Value[_ods_ir.VectorType], cbsz: _Union[int, _ods_ir.IntegerAttr], abid: _Union[int, _ods_ir.IntegerAttr], blgp: _Union[int, _ods_ir.IntegerAttr], *, loc: _Optional[_ods_ir.Location] = None, ip: _Optional[_ods_ir.InsertionPoint] = None) -> _ods_ir.OpResult[_ods_ir.VectorType]:
  return mfma_f32_16x16x32_bf16(res=res, a=a, b=b, c=c, cbsz=cbsz, abid=abid, blgp=blgp, loc=loc, ip=ip).result

@_ods_cext.register_operation(_Dialect)
class mfma_f32_16x16x32_f16(_ods_ir.OpView):
  r"""
  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, 0 : (vector<8xf16>, vector<8xf16>, vector<4xf32>) -> vector<4xf32>
  ```
  """

  OPERATION_NAME = "rocdl.mfma.f32.16x16x32.f16"

  _ODS_REGIONS = (0, True)

  def __init__(self, res: _ods_ir.Type, a: _ods_ir.Value[_ods_ir.VectorType], b: _ods_ir.Value[_ods_ir.VectorType], c: _ods_ir.Value[_ods_ir.VectorType], cbsz: _Union[int, _ods_ir.IntegerAttr], abid: _Union[int, _ods_ir.IntegerAttr], blgp: _Union[int, _ods_ir.IntegerAttr], *, loc: _Optional[_ods_ir.Location] = None, ip: _Optional[_ods_ir.InsertionPoint] = None):
    operands = []
    attributes = {}
    regions = None
    operands.append(a)
    operands.append(b)
    operands.append(c)
    _ods_context = _ods_get_default_loc_context(loc)
    attributes["cbsz"] = (cbsz if (
    isinstance(cbsz, _ods_ir.Attribute) or
    not _ods_ir.AttrBuilder.contains('I32Attr')) else
      _ods_ir.AttrBuilder.get('I32Attr')(cbsz, context=_ods_context))
    attributes["abid"] = (abid if (
    isinstance(abid, _ods_ir.Attribute) or
    not _ods_ir.AttrBuilder.contains('I32Attr')) else
      _ods_ir.AttrBuilder.get('I32Attr')(abid, context=_ods_context))
    attributes["blgp"] = (blgp if (
    isinstance(blgp, _ods_ir.Attribute) or
    not _ods_ir.AttrBuilder.contains('I32Attr')) else
      _ods_ir.AttrBuilder.get('I32Attr')(blgp, context=_ods_context))
    results = []
    results.append(res)
    _ods_successors = None
    super().__init__(self.OPERATION_NAME, self._ODS_REGIONS, self._ODS_OPERAND_SEGMENTS, self._ODS_RESULT_SEGMENTS, attributes=attributes, results=results, operands=operands, successors=_ods_successors, regions=regions, loc=loc, ip=ip)

  @builtins.property
  def a(self) -> _ods_ir.Value[_ods_ir.VectorType]:
    return self.operation.operands[0]

  @builtins.property
  def b(self) -> _ods_ir.Value[_ods_ir.VectorType]:
    return self.operation.operands[1]

  @builtins.property
  def c(self) -> _ods_ir.Value[_ods_ir.VectorType]:
    return self.operation.operands[2]

  @builtins.property
  def cbsz(self) -> _ods_ir.IntegerAttr:
    return self.operation.attributes["cbsz"]

  @cbsz.setter
  def cbsz(self, value: _ods_ir.IntegerAttr):
    if value is None:
      raise ValueError("'None' not allowed as value for mandatory attributes")
    self.operation.attributes["cbsz"] = value

  @builtins.property
  def abid(self) -> _ods_ir.IntegerAttr:
    return self.operation.attributes["abid"]

  @abid.setter
  def abid(self, value: _ods_ir.IntegerAttr):
    if value is None:
      raise ValueError("'None' not allowed as value for mandatory attributes")
    self.operation.attributes["abid"] = value

  @builtins.property
  def blgp(self) -> _ods_ir.IntegerAttr:
    return self.operation.attributes["blgp"]

  @blgp.setter
  def blgp(self, value: _ods_ir.IntegerAttr):
    if value is None:
      raise ValueError("'None' not allowed as value for mandatory attributes")
    self.operation.attributes["blgp"] = value

  @builtins.property
  def res(self) -> _ods_ir.OpResult[_ods_ir.VectorType]:
    return self.operation.results[0]

@_ods_cext.register_op_adaptor(mfma_f32_16x16x32_f16)
class mfma_f32_16x16x32_f16Adaptor(_ods_ir.OpAdaptor):
  OPERATION_NAME = "rocdl.mfma.f32.16x16x32.f16"

  @builtins.property
  def a(self) -> _ods_ir.Value[_ods_ir.VectorType]:
    return self.operands[0]

  @builtins.property
  def b(self) -> _ods_ir.Value[_ods_ir.VectorType]:
    return self.operands[1]

  @builtins.property
  def c(self) -> _ods_ir.Value[_ods_ir.VectorType]:
    return self.operands[2]

  @builtins.property
  def cbsz(self) -> _ods_ir.IntegerAttr:
    return self.attributes["cbsz"]

  @builtins.property
  def abid(self) -> _ods_ir.IntegerAttr:
    return self.attributes["abid"]

  @builtins.property
  def blgp(self) -> _ods_ir.IntegerAttr:
    return self.attributes["blgp"]

def mfma_f32_16x16x32_f16_(res: _ods_ir.Type, a: _ods_ir.Value[_ods_ir.VectorType], b: _ods_ir.Value[_ods_ir.VectorType], c: _ods_ir.Value[_ods_ir.VectorType], cbsz: _Union[int, _ods_ir.IntegerAttr], abid: _Union[int, _ods_ir.IntegerAttr], blgp: _Union[int, _ods_ir.IntegerAttr], *, loc: _Optional[_ods_ir.Location] = None, ip: _Optional[_ods_ir.InsertionPoint] = None) -> _ods_ir.OpResult[_ods_ir.VectorType]:
  return mfma_f32_16x16x32_f16(res=res, a=a, b=b, c=c, cbsz=cbsz, abid=abid, blgp=blgp, loc=loc, ip=ip).result

@_ods_cext.register_operation(_Dialect)
class mfma_f32_16x16x32_fp8_bf8(_ods_ir.OpView):
  r"""
  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, 0 : (i64, i64, vector<4xf32>) -> vector<4xf32>
  ```
  """

  OPERATION_NAME = "rocdl.mfma.f32.16x16x32.fp8.bf8"

  _ODS_REGIONS = (0, True)

  def __init__(self, res: _ods_ir.Type, a: _ods_ir.Value, b: _ods_ir.Value, c: _ods_ir.Value[_ods_ir.VectorType], cbsz: _Union[int, _ods_ir.IntegerAttr], abid: _Union[int, _ods_ir.IntegerAttr], blgp: _Union[int, _ods_ir.IntegerAttr], *, loc: _Optional[_ods_ir.Location] = None, ip: _Optional[_ods_ir.InsertionPoint] = None):
    operands = []
    attributes = {}
    regions = None
    operands.append(a)
    operands.append(b)
    operands.append(c)
    _ods_context = _ods_get_default_loc_context(loc)
    attributes["cbsz"] = (cbsz if (
    isinstance(cbsz, _ods_ir.Attribute) or
    not _ods_ir.AttrBuilder.contains('I32Attr')) else
      _ods_ir.AttrBuilder.get('I32Attr')(cbsz, context=_ods_context))
    attributes["abid"] = (abid if (
    isinstance(abid, _ods_ir.Attribute) or
    not _ods_ir.AttrBuilder.contains('I32Attr')) else
      _ods_ir.AttrBuilder.get('I32Attr')(abid, context=_ods_context))
    attributes["blgp"] = (blgp if (
    isinstance(blgp, _ods_ir.Attribute) or
    not _ods_ir.AttrBuilder.contains('I32Attr')) else
      _ods_ir.AttrBuilder.get('I32Attr')(blgp, context=_ods_context))
    results = []
    results.append(res)
    _ods_successors = None
    super().__init__(self.OPERATION_NAME, self._ODS_REGIONS, self._ODS_OPERAND_SEGMENTS, self._ODS_RESULT_SEGMENTS, attributes=attributes, results=results, operands=operands, successors=_ods_successors, regions=regions, loc=loc, ip=ip)

  @builtins.property
  def a(self) -> _ods_ir.Value:
    return self.operation.operands[0]

  @builtins.property
  def b(self) -> _ods_ir.Value:
    return self.operation.operands[1]

  @builtins.property
  def c(self) -> _ods_ir.Value[_ods_ir.VectorType]:
    return self.operation.operands[2]

  @builtins.property
  def cbsz(self) -> _ods_ir.IntegerAttr:
    return self.operation.attributes["cbsz"]

  @cbsz.setter
  def cbsz(self, value: _ods_ir.IntegerAttr):
    if value is None:
      raise ValueError("'None' not allowed as value for mandatory attributes")
    self.operation.attributes["cbsz"] = value

  @builtins.property
  def abid(self) -> _ods_ir.IntegerAttr:
    return self.operation.attributes["abid"]

  @abid.setter
  def abid(self, value: _ods_ir.IntegerAttr):
    if value is None:
      raise ValueError("'None' not allowed as value for mandatory attributes")
    self.operation.attributes["abid"] = value

  @builtins.property
  def blgp(self) -> _ods_ir.IntegerAttr:
    return self.operation.attributes["blgp"]

  @blgp.setter
  def blgp(self, value: _ods_ir.IntegerAttr):
    if value is None:
      raise ValueError("'None' not allowed as value for mandatory attributes")
    self.operation.attributes["blgp"] = value

  @builtins.property
  def res(self) -> _ods_ir.OpResult[_ods_ir.VectorType]:
    return self.operation.results[0]

@_ods_cext.register_op_adaptor(mfma_f32_16x16x32_fp8_bf8)
class mfma_f32_16x16x32_fp8_bf8Adaptor(_ods_ir.OpAdaptor):
  OPERATION_NAME = "rocdl.mfma.f32.16x16x32.fp8.bf8"

  @builtins.property
  def a(self) -> _ods_ir.Value:
    return self.operands[0]

  @builtins.property
  def b(self) -> _ods_ir.Value:
    return self.operands[1]

  @builtins.property
  def c(self) -> _ods_ir.Value[_ods_ir.VectorType]:
    return self.operands[2]

  @builtins.property
  def cbsz(self) -> _ods_ir.IntegerAttr:
    return self.attributes["cbsz"]

  @builtins.property
  def abid(self) -> _ods_ir.IntegerAttr:
    return self.attributes["abid"]

  @builtins.property
  def blgp(self) -> _ods_ir.IntegerAttr:
    return self.attributes["blgp"]

def mfma_f32_16x16x32_fp8_bf8_(res: _ods_ir.Type, a: _ods_ir.Value, b: _ods_ir.Value, c: _ods_ir.Value[_ods_ir.VectorType], cbsz: _Union[int, _ods_ir.IntegerAttr], abid: _Union[int, _ods_ir.IntegerAttr], blgp: _Union[int, _ods_ir.IntegerAttr], *, loc: _Optional[_ods_ir.Location] = None, ip: _Optional[_ods_ir.InsertionPoint] = None) -> _ods_ir.OpResult[_ods_ir.VectorType]:
  return mfma_f32_16x16x32_fp8_bf8(res=res, a=a, b=b, c=c, cbsz=cbsz, abid=abid, blgp=blgp, loc=loc, ip=ip).result

@_ods_cext.register_operation(_Dialect)
class mfma_f32_16x16x32_fp8_fp8(_ods_ir.OpView):
  r"""
  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, 0 : (i64, i64, vector<4xf32>) -> vector<4xf32>
  ```
  """

  OPERATION_NAME = "rocdl.mfma.f32.16x16x32.fp8.fp8"

  _ODS_REGIONS = (0, True)

  def __init__(self, res: _ods_ir.Type, a: _ods_ir.Value, b: _ods_ir.Value, c: _ods_ir.Value[_ods_ir.VectorType], cbsz: _Union[int, _ods_ir.IntegerAttr], abid: _Union[int, _ods_ir.IntegerAttr], blgp: _Union[int, _ods_ir.IntegerAttr], *, loc: _Optional[_ods_ir.Location] = None, ip: _Optional[_ods_ir.InsertionPoint] = None):
    operands = []
    attributes = {}
    regions = None
    operands.append(a)
    operands.append(b)
    operands.append(c)
    _ods_context = _ods_get_default_loc_context(loc)
    attributes["cbsz"] = (cbsz if (
    isinstance(cbsz, _ods_ir.Attribute) or
    not _ods_ir.AttrBuilder.contains('I32Attr')) else
      _ods_ir.AttrBuilder.get('I32Attr')(cbsz, context=_ods_context))
    attributes["abid"] = (abid if (
    isinstance(abid, _ods_ir.Attribute) or
    not _ods_ir.AttrBuilder.contains('I32Attr')) else
      _ods_ir.AttrBuilder.get('I32Attr')(abid, context=_ods_context))
    attributes["blgp"] = (blgp if (
    isinstance(blgp, _ods_ir.Attribute) or
    not _ods_ir.AttrBuilder.contains('I32Attr')) else
      _ods_ir.AttrBuilder.get('I32Attr')(blgp, context=_ods_context))
    results = []
    results.append(res)
    _ods_successors = None
    super().__init__(self.OPERATION_NAME, self._ODS_REGIONS, self._ODS_OPERAND_SEGMENTS, self._ODS_RESULT_SEGMENTS, attributes=attributes, results=results, operands=operands, successors=_ods_successors, regions=regions, loc=loc, ip=ip)

  @builtins.property
  def a(self) -> _ods_ir.Value:
    return self.operation.operands[0]

  @builtins.property
  def b(self) -> _ods_ir.Value:
    return self.operation.operands[1]

  @builtins.property
  def c(self) -> _ods_ir.Value[_ods_ir.VectorType]:
    return self.operation.operands[2]

  @builtins.property
  def cbsz(self) -> _ods_ir.IntegerAttr:
    return self.operation.attributes["cbsz"]

  @cbsz.setter
  def cbsz(self, value: _ods_ir.IntegerAttr):
    if value is None:
      raise ValueError("'None' not allowed as value for mandatory attributes")
    self.operation.attributes["cbsz"] = value

  @builtins.property
  def abid(self) -> _ods_ir.IntegerAttr:
    return self.operation.attributes["abid"]

  @abid.setter
  def abid(self, value: _ods_ir.IntegerAttr):
    if value is None:
      raise ValueError("'None' not allowed as value for mandatory attributes")
    self.operation.attributes["abid"] = value

  @builtins.property
  def blgp(self) -> _ods_ir.IntegerAttr:
    return self.operation.attributes["blgp"]

  @blgp.setter
  def blgp(self, value: _ods_ir.IntegerAttr):
    if value is None:
      raise ValueError("'None' not allowed as value for mandatory attributes")
    self.operation.attributes["blgp"] = value

  @builtins.property
  def res(self) -> _ods_ir.OpResult[_ods_ir.VectorType]:
    return self.operation.results[0]

@_ods_cext.register_op_adaptor(mfma_f32_16x16x32_fp8_fp8)
class mfma_f32_16x16x32_fp8_fp8Adaptor(_ods_ir.OpAdaptor):
  OPERATION_NAME = "rocdl.mfma.f32.16x16x32.fp8.fp8"

  @builtins.property
  def a(self) -> _ods_ir.Value:
    return self.operands[0]

  @builtins.property
  def b(self) -> _ods_ir.Value:
    return self.operands[1]

  @builtins.property
  def c(self) -> _ods_ir.Value[_ods_ir.VectorType]:
    return self.operands[2]

  @builtins.property
  def cbsz(self) -> _ods_ir.IntegerAttr:
    return self.attributes["cbsz"]

  @builtins.property
  def abid(self) -> _ods_ir.IntegerAttr:
    return self.attributes["abid"]

  @builtins.property
  def blgp(self) -> _ods_ir.IntegerAttr:
    return self.attributes["blgp"]

def mfma_f32_16x16x32_fp8_fp8_(res: _ods_ir.Type, a: _ods_ir.Value, b: _ods_ir.Value, c: _ods_ir.Value[_ods_ir.VectorType], cbsz: _Union[int, _ods_ir.IntegerAttr], abid: _Union[int, _ods_ir.IntegerAttr], blgp: _Union[int, _ods_ir.IntegerAttr], *, loc: _Optional[_ods_ir.Location] = None, ip: _Optional[_ods_ir.InsertionPoint] = None) -> _ods_ir.OpResult[_ods_ir.VectorType]:
  return mfma_f32_16x16x32_fp8_fp8(res=res, a=a, b=b, c=c, cbsz=cbsz, abid=abid, blgp=blgp, loc=loc, ip=ip).result

@_ods_cext.register_operation(_Dialect)
class mfma_f32_32x32x1f32(_ods_ir.OpView):
  r"""
  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, 0 : (f32, f32, vector<32xf32>) -> vector<32xf32>
  ```
  """

  OPERATION_NAME = "rocdl.mfma.f32.32x32x1f32"

  _ODS_REGIONS = (0, True)

  def __init__(self, res: _ods_ir.Type, a: _ods_ir.Value, b: _ods_ir.Value, c: _ods_ir.Value[_ods_ir.VectorType], cbsz: _Union[int, _ods_ir.IntegerAttr], abid: _Union[int, _ods_ir.IntegerAttr], blgp: _Union[int, _ods_ir.IntegerAttr], *, loc: _Optional[_ods_ir.Location] = None, ip: _Optional[_ods_ir.InsertionPoint] = None):
    operands = []
    attributes = {}
    regions = None
    operands.append(a)
    operands.append(b)
    operands.append(c)
    _ods_context = _ods_get_default_loc_context(loc)
    attributes["cbsz"] = (cbsz if (
    isinstance(cbsz, _ods_ir.Attribute) or
    not _ods_ir.AttrBuilder.contains('I32Attr')) else
      _ods_ir.AttrBuilder.get('I32Attr')(cbsz, context=_ods_context))
    attributes["abid"] = (abid if (
    isinstance(abid, _ods_ir.Attribute) or
    not _ods_ir.AttrBuilder.contains('I32Attr')) else
      _ods_ir.AttrBuilder.get('I32Attr')(abid, context=_ods_context))
    attributes["blgp"] = (blgp if (
    isinstance(blgp, _ods_ir.Attribute) or
    not _ods_ir.AttrBuilder.contains('I32Attr')) else
      _ods_ir.AttrBuilder.get('I32Attr')(blgp, context=_ods_context))
    results = []
    results.append(res)
    _ods_successors = None
    super().__init__(self.OPERATION_NAME, self._ODS_REGIONS, self._ODS_OPERAND_SEGMENTS, self._ODS_RESULT_SEGMENTS, attributes=attributes, results=results, operands=operands, successors=_ods_successors, regions=regions, loc=loc, ip=ip)

  @builtins.property
  def a(self) -> _ods_ir.Value:
    return self.operation.operands[0]

  @builtins.property
  def b(self) -> _ods_ir.Value:
    return self.operation.operands[1]

  @builtins.property
  def c(self) -> _ods_ir.Value[_ods_ir.VectorType]:
    return self.operation.operands[2]

  @builtins.property
  def cbsz(self) -> _ods_ir.IntegerAttr:
    return self.operation.attributes["cbsz"]

  @cbsz.setter
  def cbsz(self, value: _ods_ir.IntegerAttr):
    if value is None:
      raise ValueError("'None' not allowed as value for mandatory attributes")
    self.operation.attributes["cbsz"] = value

  @builtins.property
  def abid(self) -> _ods_ir.IntegerAttr:
    return self.operation.attributes["abid"]

  @abid.setter
  def abid(self, value: _ods_ir.IntegerAttr):
    if value is None:
      raise ValueError("'None' not allowed as value for mandatory attributes")
    self.operation.attributes["abid"] = value

  @builtins.property
  def blgp(self) -> _ods_ir.IntegerAttr:
    return self.operation.attributes["blgp"]

  @blgp.setter
  def blgp(self, value: _ods_ir.IntegerAttr):
    if value is None:
      raise ValueError("'None' not allowed as value for mandatory attributes")
    self.operation.attributes["blgp"] = value

  @builtins.property
  def res(self) -> _ods_ir.OpResult[_ods_ir.VectorType]:
    return self.operation.results[0]

@_ods_cext.register_op_adaptor(mfma_f32_32x32x1f32)
class mfma_f32_32x32x1f32Adaptor(_ods_ir.OpAdaptor):
  OPERATION_NAME = "rocdl.mfma.f32.32x32x1f32"

  @builtins.property
  def a(self) -> _ods_ir.Value:
    return self.operands[0]

  @builtins.property
  def b(self) -> _ods_ir.Value:
    return self.operands[1]

  @builtins.property
  def c(self) -> _ods_ir.Value[_ods_ir.VectorType]:
    return self.operands[2]

  @builtins.property
  def cbsz(self) -> _ods_ir.IntegerAttr:
    return self.attributes["cbsz"]

  @builtins.property
  def abid(self) -> _ods_ir.IntegerAttr:
    return self.attributes["abid"]

  @builtins.property
  def blgp(self) -> _ods_ir.IntegerAttr:
    return self.attributes["blgp"]

def mfma_f32_32x32x1f32_(res: _ods_ir.Type, a: _ods_ir.Value, b: _ods_ir.Value, c: _ods_ir.Value[_ods_ir.VectorType], cbsz: _Union[int, _ods_ir.IntegerAttr], abid: _Union[int, _ods_ir.IntegerAttr], blgp: _Union[int, _ods_ir.IntegerAttr], *, loc: _Optional[_ods_ir.Location] = None, ip: _Optional[_ods_ir.InsertionPoint] = None) -> _ods_ir.OpResult[_ods_ir.VectorType]:
  return mfma_f32_32x32x1f32(res=res, a=a, b=b, c=c, cbsz=cbsz, abid=abid, blgp=blgp, loc=loc, ip=ip).result

@_ods_cext.register_operation(_Dialect)
class mfma_f32_32x32x2bf16(_ods_ir.OpView):
  r"""
  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, 0 : (vector<2xi16>, vector<2xi16>, vector<32xf32>) -> vector<32xf32>
  ```
  """

  OPERATION_NAME = "rocdl.mfma.f32.32x32x2bf16"

  _ODS_REGIONS = (0, True)

  def __init__(self, res: _ods_ir.Type, a: _ods_ir.Value[_ods_ir.VectorType], b: _ods_ir.Value[_ods_ir.VectorType], c: _ods_ir.Value[_ods_ir.VectorType], cbsz: _Union[int, _ods_ir.IntegerAttr], abid: _Union[int, _ods_ir.IntegerAttr], blgp: _Union[int, _ods_ir.IntegerAttr], *, loc: _Optional[_ods_ir.Location] = None, ip: _Optional[_ods_ir.InsertionPoint] = None):
    operands = []
    attributes = {}
    regions = None
    operands.append(a)
    operands.append(b)
    operands.append(c)
    _ods_context = _ods_get_default_loc_context(loc)
    attributes["cbsz"] = (cbsz if (
    isinstance(cbsz, _ods_ir.Attribute) or
    not _ods_ir.AttrBuilder.contains('I32Attr')) else
      _ods_ir.AttrBuilder.get('I32Attr')(cbsz, context=_ods_context))
    attributes["abid"] = (abid if (
    isinstance(abid, _ods_ir.Attribute) or
    not _ods_ir.AttrBuilder.contains('I32Attr')) else
      _ods_ir.AttrBuilder.get('I32Attr')(abid, context=_ods_context))
    attributes["blgp"] = (blgp if (
    isinstance(blgp, _ods_ir.Attribute) or
    not _ods_ir.AttrBuilder.contains('I32Attr')) else
      _ods_ir.AttrBuilder.get('I32Attr')(blgp, context=_ods_context))
    results = []
    results.append(res)
    _ods_successors = None
    super().__init__(self.OPERATION_NAME, self._ODS_REGIONS, self._ODS_OPERAND_SEGMENTS, self._ODS_RESULT_SEGMENTS, attributes=attributes, results=results, operands=operands, successors=_ods_successors, regions=regions, loc=loc, ip=ip)

  @builtins.property
  def a(self) -> _ods_ir.Value[_ods_ir.VectorType]:
    return self.operation.operands[0]

  @builtins.property
  def b(self) -> _ods_ir.Value[_ods_ir.VectorType]:
    return self.operation.operands[1]

  @builtins.property
  def c(self) -> _ods_ir.Value[_ods_ir.VectorType]:
    return self.operation.operands[2]

  @builtins.property
  def cbsz(self) -> _ods_ir.IntegerAttr:
    return self.operation.attributes["cbsz"]

  @cbsz.setter
  def cbsz(self, value: _ods_ir.IntegerAttr):
    if value is None:
      raise ValueError("'None' not allowed as value for mandatory attributes")
    self.operation.attributes["cbsz"] = value

  @builtins.property
  def abid(self) -> _ods_ir.IntegerAttr:
    return self.operation.attributes["abid"]

  @abid.setter
  def abid(self, value: _ods_ir.IntegerAttr):
    if value is None:
      raise ValueError("'None' not allowed as value for mandatory attributes")
    self.operation.attributes["abid"] = value

  @builtins.property
  def blgp(self) -> _ods_ir.IntegerAttr:
    return self.operation.attributes["blgp"]

  @blgp.setter
  def blgp(self, value: _ods_ir.IntegerAttr):
    if value is None:
      raise ValueError("'None' not allowed as value for mandatory attributes")
    self.operation.attributes["blgp"] = value

  @builtins.property
  def res(self) -> _ods_ir.OpResult[_ods_ir.VectorType]:
    return self.operation.results[0]

@_ods_cext.register_op_adaptor(mfma_f32_32x32x2bf16)
class mfma_f32_32x32x2bf16Adaptor(_ods_ir.OpAdaptor):
  OPERATION_NAME = "rocdl.mfma.f32.32x32x2bf16"

  @builtins.property
  def a(self) -> _ods_ir.Value[_ods_ir.VectorType]:
    return self.operands[0]

  @builtins.property
  def b(self) -> _ods_ir.Value[_ods_ir.VectorType]:
    return self.operands[1]

  @builtins.property
  def c(self) -> _ods_ir.Value[_ods_ir.VectorType]:
    return self.operands[2]

  @builtins.property
  def cbsz(self) -> _ods_ir.IntegerAttr:
    return self.attributes["cbsz"]

  @builtins.property
  def abid(self) -> _ods_ir.IntegerAttr:
    return self.attributes["abid"]

  @builtins.property
  def blgp(self) -> _ods_ir.IntegerAttr:
    return self.attributes["blgp"]

def mfma_f32_32x32x2bf16_(res: _ods_ir.Type, a: _ods_ir.Value[_ods_ir.VectorType], b: _ods_ir.Value[_ods_ir.VectorType], c: _ods_ir.Value[_ods_ir.VectorType], cbsz: _Union[int, _ods_ir.IntegerAttr], abid: _Union[int, _ods_ir.IntegerAttr], blgp: _Union[int, _ods_ir.IntegerAttr], *, loc: _Optional[_ods_ir.Location] = None, ip: _Optional[_ods_ir.InsertionPoint] = None) -> _ods_ir.OpResult[_ods_ir.VectorType]:
  return mfma_f32_32x32x2bf16(res=res, a=a, b=b, c=c, cbsz=cbsz, abid=abid, blgp=blgp, loc=loc, ip=ip).result

@_ods_cext.register_operation(_Dialect)
class mfma_f32_32x32x2f32(_ods_ir.OpView):
  r"""
  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, 0 : (f32, f32, vector<16xf32>) -> vector<16xf32>
  ```
  """

  OPERATION_NAME = "rocdl.mfma.f32.32x32x2f32"

  _ODS_REGIONS = (0, True)

  def __init__(self, res: _ods_ir.Type, a: _ods_ir.Value, b: _ods_ir.Value, c: _ods_ir.Value[_ods_ir.VectorType], cbsz: _Union[int, _ods_ir.IntegerAttr], abid: _Union[int, _ods_ir.IntegerAttr], blgp: _Union[int, _ods_ir.IntegerAttr], *, loc: _Optional[_ods_ir.Location] = None, ip: _Optional[_ods_ir.InsertionPoint] = None):
    operands = []
    attributes = {}
    regions = None
    operands.append(a)
    operands.append(b)
    operands.append(c)
    _ods_context = _ods_get_default_loc_context(loc)
    attributes["cbsz"] = (cbsz if (
    isinstance(cbsz, _ods_ir.Attribute) or
    not _ods_ir.AttrBuilder.contains('I32Attr')) else
      _ods_ir.AttrBuilder.get('I32Attr')(cbsz, context=_ods_context))
    attributes["abid"] = (abid if (
    isinstance(abid, _ods_ir.Attribute) or
    not _ods_ir.AttrBuilder.contains('I32Attr')) else
      _ods_ir.AttrBuilder.get('I32Attr')(abid, context=_ods_context))
    attributes["blgp"] = (blgp if (
    isinstance(blgp, _ods_ir.Attribute) or
    not _ods_ir.AttrBuilder.contains('I32Attr')) else
      _ods_ir.AttrBuilder.get('I32Attr')(blgp, context=_ods_context))
    results = []
    results.append(res)
    _ods_successors = None
    super().__init__(self.OPERATION_NAME, self._ODS_REGIONS, self._ODS_OPERAND_SEGMENTS, self._ODS_RESULT_SEGMENTS, attributes=attributes, results=results, operands=operands, successors=_ods_successors, regions=regions, loc=loc, ip=ip)

  @builtins.property
  def a(self) -> _ods_ir.Value:
    return self.operation.operands[0]

  @builtins.property
  def b(self) -> _ods_ir.Value:
    return self.operation.operands[1]

  @builtins.property
  def c(self) -> _ods_ir.Value[_ods_ir.VectorType]:
    return self.operation.operands[2]

  @builtins.property
  def cbsz(self) -> _ods_ir.IntegerAttr:
    return self.operation.attributes["cbsz"]

  @cbsz.setter
  def cbsz(self, value: _ods_ir.IntegerAttr):
    if value is None:
      raise ValueError("'None' not allowed as value for mandatory attributes")
    self.operation.attributes["cbsz"] = value

  @builtins.property
  def abid(self) -> _ods_ir.IntegerAttr:
    return self.operation.attributes["abid"]

  @abid.setter
  def abid(self, value: _ods_ir.IntegerAttr):
    if value is None:
      raise ValueError("'None' not allowed as value for mandatory attributes")
    self.operation.attributes["abid"] = value

  @builtins.property
  def blgp(self) -> _ods_ir.IntegerAttr:
    return self.operation.attributes["blgp"]

  @blgp.setter
  def blgp(self, value: _ods_ir.IntegerAttr):
    if value is None:
      raise ValueError("'None' not allowed as value for mandatory attributes")
    self.operation.attributes["blgp"] = value

  @builtins.property
  def res(self) -> _ods_ir.OpResult[_ods_ir.VectorType]:
    return self.operation.results[0]

@_ods_cext.register_op_adaptor(mfma_f32_32x32x2f32)
class mfma_f32_32x32x2f32Adaptor(_ods_ir.OpAdaptor):
  OPERATION_NAME = "rocdl.mfma.f32.32x32x2f32"

  @builtins.property
  def a(self) -> _ods_ir.Value:
    return self.operands[0]

  @builtins.property
  def b(self) -> _ods_ir.Value:
    return self.operands[1]

  @builtins.property
  def c(self) -> _ods_ir.Value[_ods_ir.VectorType]:
    return self.operands[2]

  @builtins.property
  def cbsz(self) -> _ods_ir.IntegerAttr:
    return self.attributes["cbsz"]

  @builtins.property
  def abid(self) -> _ods_ir.IntegerAttr:
    return self.attributes["abid"]

  @builtins.property
  def blgp(self) -> _ods_ir.IntegerAttr:
    return self.attributes["blgp"]

def mfma_f32_32x32x2f32_(res: _ods_ir.Type, a: _ods_ir.Value, b: _ods_ir.Value, c: _ods_ir.Value[_ods_ir.VectorType], cbsz: _Union[int, _ods_ir.IntegerAttr], abid: _Union[int, _ods_ir.IntegerAttr], blgp: _Union[int, _ods_ir.IntegerAttr], *, loc: _Optional[_ods_ir.Location] = None, ip: _Optional[_ods_ir.InsertionPoint] = None) -> _ods_ir.OpResult[_ods_ir.VectorType]:
  return mfma_f32_32x32x2f32(res=res, a=a, b=b, c=c, cbsz=cbsz, abid=abid, blgp=blgp, loc=loc, ip=ip).result

@_ods_cext.register_operation(_Dialect)
class mfma_f32_32x32x4_xf32(_ods_ir.OpView):
  r"""
  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, 0 : (vector<2xf32>, vector<2xf32>, vector<16xf32>) -> vector<16xf32>
  ```
  """

  OPERATION_NAME = "rocdl.mfma.f32.32x32x4.xf32"

  _ODS_REGIONS = (0, True)

  def __init__(self, res: _ods_ir.Type, a: _ods_ir.Value[_ods_ir.VectorType], b: _ods_ir.Value[_ods_ir.VectorType], c: _ods_ir.Value[_ods_ir.VectorType], cbsz: _Union[int, _ods_ir.IntegerAttr], abid: _Union[int, _ods_ir.IntegerAttr], blgp: _Union[int, _ods_ir.IntegerAttr], *, loc: _Optional[_ods_ir.Location] = None, ip: _Optional[_ods_ir.InsertionPoint] = None):
    operands = []
    attributes = {}
    regions = None
    operands.append(a)
    operands.append(b)
    operands.append(c)
    _ods_context = _ods_get_default_loc_context(loc)
    attributes["cbsz"] = (cbsz if (
    isinstance(cbsz, _ods_ir.Attribute) or
    not _ods_ir.AttrBuilder.contains('I32Attr')) else
      _ods_ir.AttrBuilder.get('I32Attr')(cbsz, context=_ods_context))
    attributes["abid"] = (abid if (
    isinstance(abid, _ods_ir.Attribute) or
    not _ods_ir.AttrBuilder.contains('I32Attr')) else
      _ods_ir.AttrBuilder.get('I32Attr')(abid, context=_ods_context))
    attributes["blgp"] = (blgp if (
    isinstance(blgp, _ods_ir.Attribute) or
    not _ods_ir.AttrBuilder.contains('I32Attr')) else
      _ods_ir.AttrBuilder.get('I32Attr')(blgp, context=_ods_context))
    results = []
    results.append(res)
    _ods_successors = None
    super().__init__(self.OPERATION_NAME, self._ODS_REGIONS, self._ODS_OPERAND_SEGMENTS, self._ODS_RESULT_SEGMENTS, attributes=attributes, results=results, operands=operands, successors=_ods_successors, regions=regions, loc=loc, ip=ip)

  @builtins.property
  def a(self) -> _ods_ir.Value[_ods_ir.VectorType]:
    return self.operation.operands[0]

  @builtins.property
  def b(self) -> _ods_ir.Value[_ods_ir.VectorType]:
    return self.operation.operands[1]

  @builtins.property
  def c(self) -> _ods_ir.Value[_ods_ir.VectorType]:
    return self.operation.operands[2]

  @builtins.property
  def cbsz(self) -> _ods_ir.IntegerAttr:
    return self.operation.attributes["cbsz"]

  @cbsz.setter
  def cbsz(self, value: _ods_ir.IntegerAttr):
    if value is None:
      raise ValueError("'None' not allowed as value for mandatory attributes")
    self.operation.attributes["cbsz"] = value

  @builtins.property
  def abid(self) -> _ods_ir.IntegerAttr:
    return self.operation.attributes["abid"]

  @abid.setter
  def abid(self, value: _ods_ir.IntegerAttr):
    if value is None:
      raise ValueError("'None' not allowed as value for mandatory attributes")
    self.operation.attributes["abid"] = value

  @builtins.property
  def blgp(self) -> _ods_ir.IntegerAttr:
    return self.operation.attributes["blgp"]

  @blgp.setter
  def blgp(self, value: _ods_ir.IntegerAttr):
    if value is None:
      raise ValueError("'None' not allowed as value for mandatory attributes")
    self.operation.attributes["blgp"] = value

  @builtins.property
  def res(self) -> _ods_ir.OpResult[_ods_ir.VectorType]:
    return self.operation.results[0]

@_ods_cext.register_op_adaptor(mfma_f32_32x32x4_xf32)
class mfma_f32_32x32x4_xf32Adaptor(_ods_ir.OpAdaptor):
  OPERATION_NAME = "rocdl.mfma.f32.32x32x4.xf32"

  @builtins.property
  def a(self) -> _ods_ir.Value[_ods_ir.VectorType]:
    return self.operands[0]

  @builtins.property
  def b(self) -> _ods_ir.Value[_ods_ir.VectorType]:
    return self.operands[1]

  @builtins.property
  def c(self) -> _ods_ir.Value[_ods_ir.VectorType]:
    return self.operands[2]

  @builtins.property
  def cbsz(self) -> _ods_ir.IntegerAttr:
    return self.attributes["cbsz"]

  @builtins.property
  def abid(self) -> _ods_ir.IntegerAttr:
    return self.attributes["abid"]

  @builtins.property
  def blgp(self) -> _ods_ir.IntegerAttr:
    return self.attributes["blgp"]

def mfma_f32_32x32x4_xf32_(res: _ods_ir.Type, a: _ods_ir.Value[_ods_ir.VectorType], b: _ods_ir.Value[_ods_ir.VectorType], c: _ods_ir.Value[_ods_ir.VectorType], cbsz: _Union[int, _ods_ir.IntegerAttr], abid: _Union[int, _ods_ir.IntegerAttr], blgp: _Union[int, _ods_ir.IntegerAttr], *, loc: _Optional[_ods_ir.Location] = None, ip: _Optional[_ods_ir.InsertionPoint] = None) -> _ods_ir.OpResult[_ods_ir.VectorType]:
  return mfma_f32_32x32x4_xf32(res=res, a=a, b=b, c=c, cbsz=cbsz, abid=abid, blgp=blgp, loc=loc, ip=ip).result

@_ods_cext.register_operation(_Dialect)
class mfma_f32_32x32x4bf16(_ods_ir.OpView):
  r"""
  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, 0 : (vector<2xi16>, vector<2xi16>, vector<16xf32>) -> vector<16xf32>
  ```
  """

  OPERATION_NAME = "rocdl.mfma.f32.32x32x4bf16"

  _ODS_REGIONS = (0, True)

  def __init__(self, res: _ods_ir.Type, a: _ods_ir.Value[_ods_ir.VectorType], b: _ods_ir.Value[_ods_ir.VectorType], c: _ods_ir.Value[_ods_ir.VectorType], cbsz: _Union[int, _ods_ir.IntegerAttr], abid: _Union[int, _ods_ir.IntegerAttr], blgp: _Union[int, _ods_ir.IntegerAttr], *, loc: _Optional[_ods_ir.Location] = None, ip: _Optional[_ods_ir.InsertionPoint] = None):
    operands = []
    attributes = {}
    regions = None
    operands.append(a)
    operands.append(b)
    operands.append(c)
    _ods_context = _ods_get_default_loc_context(loc)
    attributes["cbsz"] = (cbsz if (
    isinstance(cbsz, _ods_ir.Attribute) or
    not _ods_ir.AttrBuilder.contains('I32Attr')) else
      _ods_ir.AttrBuilder.get('I32Attr')(cbsz, context=_ods_context))
    attributes["abid"] = (abid if (
    isinstance(abid, _ods_ir.Attribute) or
    not _ods_ir.AttrBuilder.contains('I32Attr')) else
      _ods_ir.AttrBuilder.get('I32Attr')(abid, context=_ods_context))
    attributes["blgp"] = (blgp if (
    isinstance(blgp, _ods_ir.Attribute) or
    not _ods_ir.AttrBuilder.contains('I32Attr')) else
      _ods_ir.AttrBuilder.get('I32Attr')(blgp, context=_ods_context))
    results = []
    results.append(res)
    _ods_successors = None
    super().__init__(self.OPERATION_NAME, self._ODS_REGIONS, self._ODS_OPERAND_SEGMENTS, self._ODS_RESULT_SEGMENTS, attributes=attributes, results=results, operands=operands, successors=_ods_successors, regions=regions, loc=loc, ip=ip)

  @builtins.property
  def a(self) -> _ods_ir.Value[_ods_ir.VectorType]:
    return self.operation.operands[0]

  @builtins.property
  def b(self) -> _ods_ir.Value[_ods_ir.VectorType]:
    return self.operation.operands[1]

  @builtins.property
  def c(self) -> _ods_ir.Value[_ods_ir.VectorType]:
    return self.operation.operands[2]

  @builtins.property
  def cbsz(self) -> _ods_ir.IntegerAttr:
    return self.operation.attributes["cbsz"]

  @cbsz.setter
  def cbsz(self, value: _ods_ir.IntegerAttr):
    if value is None:
      raise ValueError("'None' not allowed as value for mandatory attributes")
    self.operation.attributes["cbsz"] = value

  @builtins.property
  def abid(self) -> _ods_ir.IntegerAttr:
    return self.operation.attributes["abid"]

  @abid.setter
  def abid(self, value: _ods_ir.IntegerAttr):
    if value is None:
      raise ValueError("'None' not allowed as value for mandatory attributes")
    self.operation.attributes["abid"] = value

  @builtins.property
  def blgp(self) -> _ods_ir.IntegerAttr:
    return self.operation.attributes["blgp"]

  @blgp.setter
  def blgp(self, value: _ods_ir.IntegerAttr):
    if value is None:
      raise ValueError("'None' not allowed as value for mandatory attributes")
    self.operation.attributes["blgp"] = value

  @builtins.property
  def res(self) -> _ods_ir.OpResult[_ods_ir.VectorType]:
    return self.operation.results[0]

@_ods_cext.register_op_adaptor(mfma_f32_32x32x4bf16)
class mfma_f32_32x32x4bf16Adaptor(_ods_ir.OpAdaptor):
  OPERATION_NAME = "rocdl.mfma.f32.32x32x4bf16"

  @builtins.property
  def a(self) -> _ods_ir.Value[_ods_ir.VectorType]:
    return self.operands[0]

  @builtins.property
  def b(self) -> _ods_ir.Value[_ods_ir.VectorType]:
    return self.operands[1]

  @builtins.property
  def c(self) -> _ods_ir.Value[_ods_ir.VectorType]:
    return self.operands[2]

  @builtins.property
  def cbsz(self) -> _ods_ir.IntegerAttr:
    return self.attributes["cbsz"]

  @builtins.property
  def abid(self) -> _ods_ir.IntegerAttr:
    return self.attributes["abid"]

  @builtins.property
  def blgp(self) -> _ods_ir.IntegerAttr:
    return self.attributes["blgp"]

def mfma_f32_32x32x4bf16_(res: _ods_ir.Type, a: _ods_ir.Value[_ods_ir.VectorType], b: _ods_ir.Value[_ods_ir.VectorType], c: _ods_ir.Value[_ods_ir.VectorType], cbsz: _Union[int, _ods_ir.IntegerAttr], abid: _Union[int, _ods_ir.IntegerAttr], blgp: _Union[int, _ods_ir.IntegerAttr], *, loc: _Optional[_ods_ir.Location] = None, ip: _Optional[_ods_ir.InsertionPoint] = None) -> _ods_ir.OpResult[_ods_ir.VectorType]:
  return mfma_f32_32x32x4bf16(res=res, a=a, b=b, c=c, cbsz=cbsz, abid=abid, blgp=blgp, loc=loc, ip=ip).result

@_ods_cext.register_operation(_Dialect)
class mfma_f32_32x32x4bf16_1k(_ods_ir.OpView):
  r"""
  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, 0 : (vector<4xi16>, vector<4xi16>, vector<32xf32>) -> vector<32xf32>
  ```
  """

  OPERATION_NAME = "rocdl.mfma.f32.32x32x4bf16.1k"

  _ODS_REGIONS = (0, True)

  def __init__(self, res: _ods_ir.Type, a: _ods_ir.Value[_ods_ir.VectorType], b: _ods_ir.Value[_ods_ir.VectorType], c: _ods_ir.Value[_ods_ir.VectorType], cbsz: _Union[int, _ods_ir.IntegerAttr], abid: _Union[int, _ods_ir.IntegerAttr], blgp: _Union[int, _ods_ir.IntegerAttr], *, loc: _Optional[_ods_ir.Location] = None, ip: _Optional[_ods_ir.InsertionPoint] = None):
    operands = []
    attributes = {}
    regions = None
    operands.append(a)
    operands.append(b)
    operands.append(c)
    _ods_context = _ods_get_default_loc_context(loc)
    attributes["cbsz"] = (cbsz if (
    isinstance(cbsz, _ods_ir.Attribute) or
    not _ods_ir.AttrBuilder.contains('I32Attr')) else
      _ods_ir.AttrBuilder.get('I32Attr')(cbsz, context=_ods_context))
    attributes["abid"] = (abid if (
    isinstance(abid, _ods_ir.Attribute) or
    not _ods_ir.AttrBuilder.contains('I32Attr')) else
      _ods_ir.AttrBuilder.get('I32Attr')(abid, context=_ods_context))
    attributes["blgp"] = (blgp if (
    isinstance(blgp, _ods_ir.Attribute) or
    not _ods_ir.AttrBuilder.contains('I32Attr')) else
      _ods_ir.AttrBuilder.get('I32Attr')(blgp, context=_ods_context))
    results = []
    results.append(res)
    _ods_successors = None
    super().__init__(self.OPERATION_NAME, self._ODS_REGIONS, self._ODS_OPERAND_SEGMENTS, self._ODS_RESULT_SEGMENTS, attributes=attributes, results=results, operands=operands, successors=_ods_successors, regions=regions, loc=loc, ip=ip)

  @builtins.property
  def a(self) -> _ods_ir.Value[_ods_ir.VectorType]:
    return self.operation.operands[0]

  @builtins.property
  def b(self) -> _ods_ir.Value[_ods_ir.VectorType]:
    return self.operation.operands[1]

  @builtins.property
  def c(self) -> _ods_ir.Value[_ods_ir.VectorType]:
    return self.operation.operands[2]

  @builtins.property
  def cbsz(self) -> _ods_ir.IntegerAttr:
    return self.operation.attributes["cbsz"]

  @cbsz.setter
  def cbsz(self, value: _ods_ir.IntegerAttr):
    if value is None:
      raise ValueError("'None' not allowed as value for mandatory attributes")
    self.operation.attributes["cbsz"] = value

  @builtins.property
  def abid(self) -> _ods_ir.IntegerAttr:
    return self.operation.attributes["abid"]

  @abid.setter
  def abid(self, value: _ods_ir.IntegerAttr):
    if value is None:
      raise ValueError("'None' not allowed as value for mandatory attributes")
    self.operation.attributes["abid"] = value

  @builtins.property
  def blgp(self) -> _ods_ir.IntegerAttr:
    return self.operation.attributes["blgp"]

  @blgp.setter
  def blgp(self, value: _ods_ir.IntegerAttr):
    if value is None:
      raise ValueError("'None' not allowed as value for mandatory attributes")
    self.operation.attributes["blgp"] = value

  @builtins.property
  def res(self) -> _ods_ir.OpResult[_ods_ir.VectorType]:
    return self.operation.results[0]

@_ods_cext.register_op_adaptor(mfma_f32_32x32x4bf16_1k)
class mfma_f32_32x32x4bf16_1kAdaptor(_ods_ir.OpAdaptor):
  OPERATION_NAME = "rocdl.mfma.f32.32x32x4bf16.1k"

  @builtins.property
  def a(self) -> _ods_ir.Value[_ods_ir.VectorType]:
    return self.operands[0]

  @builtins.property
  def b(self) -> _ods_ir.Value[_ods_ir.VectorType]:
    return self.operands[1]

  @builtins.property
  def c(self) -> _ods_ir.Value[_ods_ir.VectorType]:
    return self.operands[2]

  @builtins.property
  def cbsz(self) -> _ods_ir.IntegerAttr:
    return self.attributes["cbsz"]

  @builtins.property
  def abid(self) -> _ods_ir.IntegerAttr:
    return self.attributes["abid"]

  @builtins.property
  def blgp(self) -> _ods_ir.IntegerAttr:
    return self.attributes["blgp"]

def mfma_f32_32x32x4bf16_1k_(res: _ods_ir.Type, a: _ods_ir.Value[_ods_ir.VectorType], b: _ods_ir.Value[_ods_ir.VectorType], c: _ods_ir.Value[_ods_ir.VectorType], cbsz: _Union[int, _ods_ir.IntegerAttr], abid: _Union[int, _ods_ir.IntegerAttr], blgp: _Union[int, _ods_ir.IntegerAttr], *, loc: _Optional[_ods_ir.Location] = None, ip: _Optional[_ods_ir.InsertionPoint] = None) -> _ods_ir.OpResult[_ods_ir.VectorType]:
  return mfma_f32_32x32x4bf16_1k(res=res, a=a, b=b, c=c, cbsz=cbsz, abid=abid, blgp=blgp, loc=loc, ip=ip).result

@_ods_cext.register_operation(_Dialect)
class mfma_f32_32x32x4f16(_ods_ir.OpView):
  r"""
  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, 0 : (vector<4xf16>, vector<4xf16>, vector<32xf32>) -> vector<32xf32>
  ```
  """

  OPERATION_NAME = "rocdl.mfma.f32.32x32x4f16"

  _ODS_REGIONS = (0, True)

  def __init__(self, res: _ods_ir.Type, a: _ods_ir.Value[_ods_ir.VectorType], b: _ods_ir.Value[_ods_ir.VectorType], c: _ods_ir.Value[_ods_ir.VectorType], cbsz: _Union[int, _ods_ir.IntegerAttr], abid: _Union[int, _ods_ir.IntegerAttr], blgp: _Union[int, _ods_ir.IntegerAttr], *, loc: _Optional[_ods_ir.Location] = None, ip: _Optional[_ods_ir.InsertionPoint] = None):
    operands = []
    attributes = {}
    regions = None
    operands.append(a)
    operands.append(b)
    operands.append(c)
    _ods_context = _ods_get_default_loc_context(loc)
    attributes["cbsz"] = (cbsz if (
    isinstance(cbsz, _ods_ir.Attribute) or
    not _ods_ir.AttrBuilder.contains('I32Attr')) else
      _ods_ir.AttrBuilder.get('I32Attr')(cbsz, context=_ods_context))
    attributes["abid"] = (abid if (
    isinstance(abid, _ods_ir.Attribute) or
    not _ods_ir.AttrBuilder.contains('I32Attr')) else
      _ods_ir.AttrBuilder.get('I32Attr')(abid, context=_ods_context))
    attributes["blgp"] = (blgp if (
    isinstance(blgp, _ods_ir.Attribute) or
    not _ods_ir.AttrBuilder.contains('I32Attr')) else
      _ods_ir.AttrBuilder.get('I32Attr')(blgp, context=_ods_context))
    results = []
    results.append(res)
    _ods_successors = None
    super().__init__(self.OPERATION_NAME, self._ODS_REGIONS, self._ODS_OPERAND_SEGMENTS, self._ODS_RESULT_SEGMENTS, attributes=attributes, results=results, operands=operands, successors=_ods_successors, regions=regions, loc=loc, ip=ip)

  @builtins.property
  def a(self) -> _ods_ir.Value[_ods_ir.VectorType]:
    return self.operation.operands[0]

  @builtins.property
  def b(self) -> _ods_ir.Value[_ods_ir.VectorType]:
    return self.operation.operands[1]

  @builtins.property
  def c(self) -> _ods_ir.Value[_ods_ir.VectorType]:
    return self.operation.operands[2]

  @builtins.property
  def cbsz(self) -> _ods_ir.IntegerAttr:
    return self.operation.attributes["cbsz"]

  @cbsz.setter
  def cbsz(self, value: _ods_ir.IntegerAttr):
    if value is None:
      raise ValueError("'None' not allowed as value for mandatory attributes")
    self.operation.attributes["cbsz"] = value

  @builtins.property
  def abid(self) -> _ods_ir.IntegerAttr:
    return self.operation.attributes["abid"]

  @abid.setter
  def abid(self, value: _ods_ir.IntegerAttr):
    if value is None:
      raise ValueError("'None' not allowed as value for mandatory attributes")
    self.operation.attributes["abid"] = value

  @builtins.property
  def blgp(self) -> _ods_ir.IntegerAttr:
    return self.operation.attributes["blgp"]

  @blgp.setter
  def blgp(self, value: _ods_ir.IntegerAttr):
    if value is None:
      raise ValueError("'None' not allowed as value for mandatory attributes")
    self.operation.attributes["blgp"] = value

  @builtins.property
  def res(self) -> _ods_ir.OpResult[_ods_ir.VectorType]:
    return self.operation.results[0]

@_ods_cext.register_op_adaptor(mfma_f32_32x32x4f16)
class mfma_f32_32x32x4f16Adaptor(_ods_ir.OpAdaptor):
  OPERATION_NAME = "rocdl.mfma.f32.32x32x4f16"

  @builtins.property
  def a(self) -> _ods_ir.Value[_ods_ir.VectorType]:
    return self.operands[0]

  @builtins.property
  def b(self) -> _ods_ir.Value[_ods_ir.VectorType]:
    return self.operands[1]

  @builtins.property
  def c(self) -> _ods_ir.Value[_ods_ir.VectorType]:
    return self.operands[2]

  @builtins.property
  def cbsz(self) -> _ods_ir.IntegerAttr:
    return self.attributes["cbsz"]

  @builtins.property
  def abid(self) -> _ods_ir.IntegerAttr:
    return self.attributes["abid"]

  @builtins.property
  def blgp(self) -> _ods_ir.IntegerAttr:
    return self.attributes["blgp"]

def mfma_f32_32x32x4f16_(res: _ods_ir.Type, a: _ods_ir.Value[_ods_ir.VectorType], b: _ods_ir.Value[_ods_ir.VectorType], c: _ods_ir.Value[_ods_ir.VectorType], cbsz: _Union[int, _ods_ir.IntegerAttr], abid: _Union[int, _ods_ir.IntegerAttr], blgp: _Union[int, _ods_ir.IntegerAttr], *, loc: _Optional[_ods_ir.Location] = None, ip: _Optional[_ods_ir.InsertionPoint] = None) -> _ods_ir.OpResult[_ods_ir.VectorType]:
  return mfma_f32_32x32x4f16(res=res, a=a, b=b, c=c, cbsz=cbsz, abid=abid, blgp=blgp, loc=loc, ip=ip).result

@_ods_cext.register_operation(_Dialect)
class mfma_f32_32x32x8bf16_1k(_ods_ir.OpView):
  r"""
  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, 0 : (vector<4xi16>, vector<4xi16>, vector<16xf32>) -> vector<16xf32>
  ```
  """

  OPERATION_NAME = "rocdl.mfma.f32.32x32x8bf16.1k"

  _ODS_REGIONS = (0, True)

  def __init__(self, res: _ods_ir.Type, a: _ods_ir.Value[_ods_ir.VectorType], b: _ods_ir.Value[_ods_ir.VectorType], c: _ods_ir.Value[_ods_ir.VectorType], cbsz: _Union[int, _ods_ir.IntegerAttr], abid: _Union[int, _ods_ir.IntegerAttr], blgp: _Union[int, _ods_ir.IntegerAttr], *, loc: _Optional[_ods_ir.Location] = None, ip: _Optional[_ods_ir.InsertionPoint] = None):
    operands = []
    attributes = {}
    regions = None
    operands.append(a)
    operands.append(b)
    operands.append(c)
    _ods_context = _ods_get_default_loc_context(loc)
    attributes["cbsz"] = (cbsz if (
    isinstance(cbsz, _ods_ir.Attribute) or
    not _ods_ir.AttrBuilder.contains('I32Attr')) else
      _ods_ir.AttrBuilder.get('I32Attr')(cbsz, context=_ods_context))
    attributes["abid"] = (abid if (
    isinstance(abid, _ods_ir.Attribute) or
    not _ods_ir.AttrBuilder.contains('I32Attr')) else
      _ods_ir.AttrBuilder.get('I32Attr')(abid, context=_ods_context))
    attributes["blgp"] = (blgp if (
    isinstance(blgp, _ods_ir.Attribute) or
    not _ods_ir.AttrBuilder.contains('I32Attr')) else
      _ods_ir.AttrBuilder.get('I32Attr')(blgp, context=_ods_context))
    results = []
    results.append(res)
    _ods_successors = None
    super().__init__(self.OPERATION_NAME, self._ODS_REGIONS, self._ODS_OPERAND_SEGMENTS, self._ODS_RESULT_SEGMENTS, attributes=attributes, results=results, operands=operands, successors=_ods_successors, regions=regions, loc=loc, ip=ip)

  @builtins.property
  def a(self) -> _ods_ir.Value[_ods_ir.VectorType]:
    return self.operation.operands[0]

  @builtins.property
  def b(self) -> _ods_ir.Value[_ods_ir.VectorType]:
    return self.operation.operands[1]

  @builtins.property
  def c(self) -> _ods_ir.Value[_ods_ir.VectorType]:
    return self.operation.operands[2]

  @builtins.property
  def cbsz(self) -> _ods_ir.IntegerAttr:
    return self.operation.attributes["cbsz"]

  @cbsz.setter
  def cbsz(self, value: _ods_ir.IntegerAttr):
    if value is None:
      raise ValueError("'None' not allowed as value for mandatory attributes")
    self.operation.attributes["cbsz"] = value

  @builtins.property
  def abid(self) -> _ods_ir.IntegerAttr:
    return self.operation.attributes["abid"]

  @abid.setter
  def abid(self, value: _ods_ir.IntegerAttr):
    if value is None:
      raise ValueError("'None' not allowed as value for mandatory attributes")
    self.operation.attributes["abid"] = value

  @builtins.property
  def blgp(self) -> _ods_ir.IntegerAttr:
    return self.operation.attributes["blgp"]

  @blgp.setter
  def blgp(self, value: _ods_ir.IntegerAttr):
    if value is None:
      raise ValueError("'None' not allowed as value for mandatory attributes")
    self.operation.attributes["blgp"] = value

  @builtins.property
  def res(self) -> _ods_ir.OpResult[_ods_ir.VectorType]:
    return self.operation.results[0]

@_ods_cext.register_op_adaptor(mfma_f32_32x32x8bf16_1k)
class mfma_f32_32x32x8bf16_1kAdaptor(_ods_ir.OpAdaptor):
  OPERATION_NAME = "rocdl.mfma.f32.32x32x8bf16.1k"

  @builtins.property
  def a(self) -> _ods_ir.Value[_ods_ir.VectorType]:
    return self.operands[0]

  @builtins.property
  def b(self) -> _ods_ir.Value[_ods_ir.VectorType]:
    return self.operands[1]

  @builtins.property
  def c(self) -> _ods_ir.Value[_ods_ir.VectorType]:
    return self.operands[2]

  @builtins.property
  def cbsz(self) -> _ods_ir.IntegerAttr:
    return self.attributes["cbsz"]

  @builtins.property
  def abid(self) -> _ods_ir.IntegerAttr:
    return self.attributes["abid"]

  @builtins.property
  def blgp(self) -> _ods_ir.IntegerAttr:
    return self.attributes["blgp"]

def mfma_f32_32x32x8bf16_1k_(res: _ods_ir.Type, a: _ods_ir.Value[_ods_ir.VectorType], b: _ods_ir.Value[_ods_ir.VectorType], c: _ods_ir.Value[_ods_ir.VectorType], cbsz: _Union[int, _ods_ir.IntegerAttr], abid: _Union[int, _ods_ir.IntegerAttr], blgp: _Union[int, _ods_ir.IntegerAttr], *, loc: _Optional[_ods_ir.Location] = None, ip: _Optional[_ods_ir.InsertionPoint] = None) -> _ods_ir.OpResult[_ods_ir.VectorType]:
  return mfma_f32_32x32x8bf16_1k(res=res, a=a, b=b, c=c, cbsz=cbsz, abid=abid, blgp=blgp, loc=loc, ip=ip).result

@_ods_cext.register_operation(_Dialect)
class mfma_f32_32x32x8f16(_ods_ir.OpView):
  r"""
  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, 0 : (vector<4xf16>, vector<4xf16>, vector<16xf32>) -> vector<16xf32>
  ```
  """

  OPERATION_NAME = "rocdl.mfma.f32.32x32x8f16"

  _ODS_REGIONS = (0, True)

  def __init__(self, res: _ods_ir.Type, a: _ods_ir.Value[_ods_ir.VectorType], b: _ods_ir.Value[_ods_ir.VectorType], c: _ods_ir.Value[_ods_ir.VectorType], cbsz: _Union[int, _ods_ir.IntegerAttr], abid: _Union[int, _ods_ir.IntegerAttr], blgp: _Union[int, _ods_ir.IntegerAttr], *, loc: _Optional[_ods_ir.Location] = None, ip: _Optional[_ods_ir.InsertionPoint] = None):
    operands = []
    attributes = {}
    regions = None
    operands.append(a)
    operands.append(b)
    operands.append(c)
    _ods_context = _ods_get_default_loc_context(loc)
    attributes["cbsz"] = (cbsz if (
    isinstance(cbsz, _ods_ir.Attribute) or
    not _ods_ir.AttrBuilder.contains('I32Attr')) else
      _ods_ir.AttrBuilder.get('I32Attr')(cbsz, context=_ods_context))
    attributes["abid"] = (abid if (
    isinstance(abid, _ods_ir.Attribute) or
    not _ods_ir.AttrBuilder.contains('I32Attr')) else
      _ods_ir.AttrBuilder.get('I32Attr')(abid, context=_ods_context))
    attributes["blgp"] = (blgp if (
    isinstance(blgp, _ods_ir.Attribute) or
    not _ods_ir.AttrBuilder.contains('I32Attr')) else
      _ods_ir.AttrBuilder.get('I32Attr')(blgp, context=_ods_context))
    results = []
    results.append(res)
    _ods_successors = None
    super().__init__(self.OPERATION_NAME, self._ODS_REGIONS, self._ODS_OPERAND_SEGMENTS, self._ODS_RESULT_SEGMENTS, attributes=attributes, results=results, operands=operands, successors=_ods_successors, regions=regions, loc=loc, ip=ip)

  @builtins.property
  def a(self) -> _ods_ir.Value[_ods_ir.VectorType]:
    return self.operation.operands[0]

  @builtins.property
  def b(self) -> _ods_ir.Value[_ods_ir.VectorType]:
    return self.operation.operands[1]

  @builtins.property
  def c(self) -> _ods_ir.Value[_ods_ir.VectorType]:
    return self.operation.operands[2]

  @builtins.property
  def cbsz(self) -> _ods_ir.IntegerAttr:
    return self.operation.attributes["cbsz"]

  @cbsz.setter
  def cbsz(self, value: _ods_ir.IntegerAttr):
    if value is None:
      raise ValueError("'None' not allowed as value for mandatory attributes")
    self.operation.attributes["cbsz"] = value

  @builtins.property
  def abid(self) -> _ods_ir.IntegerAttr:
    return self.operation.attributes["abid"]

  @abid.setter
  def abid(self, value: _ods_ir.IntegerAttr):
    if value is None:
      raise ValueError("'None' not allowed as value for mandatory attributes")
    self.operation.attributes["abid"] = value

  @builtins.property
  def blgp(self) -> _ods_ir.IntegerAttr:
    return self.operation.attributes["blgp"]

  @blgp.setter
  def blgp(self, value: _ods_ir.IntegerAttr):
    if value is None:
      raise ValueError("'None' not allowed as value for mandatory attributes")
    self.operation.attributes["blgp"] = value

  @builtins.property
  def res(self) -> _ods_ir.OpResult[_ods_ir.VectorType]:
    return self.operation.results[0]

@_ods_cext.register_op_adaptor(mfma_f32_32x32x8f16)
class mfma_f32_32x32x8f16Adaptor(_ods_ir.OpAdaptor):
  OPERATION_NAME = "rocdl.mfma.f32.32x32x8f16"

  @builtins.property
  def a(self) -> _ods_ir.Value[_ods_ir.VectorType]:
    return self.operands[0]

  @builtins.property
  def b(self) -> _ods_ir.Value[_ods_ir.VectorType]:
    return self.operands[1]

  @builtins.property
  def c(self) -> _ods_ir.Value[_ods_ir.VectorType]:
    return self.operands[2]

  @builtins.property
  def cbsz(self) -> _ods_ir.IntegerAttr:
    return self.attributes["cbsz"]

  @builtins.property
  def abid(self) -> _ods_ir.IntegerAttr:
    return self.attributes["abid"]

  @builtins.property
  def blgp(self) -> _ods_ir.IntegerAttr:
    return self.attributes["blgp"]

def mfma_f32_32x32x8f16_(res: _ods_ir.Type, a: _ods_ir.Value[_ods_ir.VectorType], b: _ods_ir.Value[_ods_ir.VectorType], c: _ods_ir.Value[_ods_ir.VectorType], cbsz: _Union[int, _ods_ir.IntegerAttr], abid: _Union[int, _ods_ir.IntegerAttr], blgp: _Union[int, _ods_ir.IntegerAttr], *, loc: _Optional[_ods_ir.Location] = None, ip: _Optional[_ods_ir.InsertionPoint] = None) -> _ods_ir.OpResult[_ods_ir.VectorType]:
  return mfma_f32_32x32x8f16(res=res, a=a, b=b, c=c, cbsz=cbsz, abid=abid, blgp=blgp, loc=loc, ip=ip).result

@_ods_cext.register_operation(_Dialect)
class mfma_f32_32x32x16_bf8_bf8(_ods_ir.OpView):
  r"""
  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, 0 : (i64, i64, vector<16xf32>) -> vector<16xf32>
  ```
  """

  OPERATION_NAME = "rocdl.mfma.f32.32x32x16.bf8.bf8"

  _ODS_REGIONS = (0, True)

  def __init__(self, res: _ods_ir.Type, a: _ods_ir.Value, b: _ods_ir.Value, c: _ods_ir.Value[_ods_ir.VectorType], cbsz: _Union[int, _ods_ir.IntegerAttr], abid: _Union[int, _ods_ir.IntegerAttr], blgp: _Union[int, _ods_ir.IntegerAttr], *, loc: _Optional[_ods_ir.Location] = None, ip: _Optional[_ods_ir.InsertionPoint] = None):
    operands = []
    attributes = {}
    regions = None
    operands.append(a)
    operands.append(b)
    operands.append(c)
    _ods_context = _ods_get_default_loc_context(loc)
    attributes["cbsz"] = (cbsz if (
    isinstance(cbsz, _ods_ir.Attribute) or
    not _ods_ir.AttrBuilder.contains('I32Attr')) else
      _ods_ir.AttrBuilder.get('I32Attr')(cbsz, context=_ods_context))
    attributes["abid"] = (abid if (
    isinstance(abid, _ods_ir.Attribute) or
    not _ods_ir.AttrBuilder.contains('I32Attr')) else
      _ods_ir.AttrBuilder.get('I32Attr')(abid, context=_ods_context))
    attributes["blgp"] = (blgp if (
    isinstance(blgp, _ods_ir.Attribute) or
    not _ods_ir.AttrBuilder.contains('I32Attr')) else
      _ods_ir.AttrBuilder.get('I32Attr')(blgp, context=_ods_context))
    results = []
    results.append(res)
    _ods_successors = None
    super().__init__(self.OPERATION_NAME, self._ODS_REGIONS, self._ODS_OPERAND_SEGMENTS, self._ODS_RESULT_SEGMENTS, attributes=attributes, results=results, operands=operands, successors=_ods_successors, regions=regions, loc=loc, ip=ip)

  @builtins.property
  def a(self) -> _ods_ir.Value:
    return self.operation.operands[0]

  @builtins.property
  def b(self) -> _ods_ir.Value:
    return self.operation.operands[1]

  @builtins.property
  def c(self) -> _ods_ir.Value[_ods_ir.VectorType]:
    return self.operation.operands[2]

  @builtins.property
  def cbsz(self) -> _ods_ir.IntegerAttr:
    return self.operation.attributes["cbsz"]

  @cbsz.setter
  def cbsz(self, value: _ods_ir.IntegerAttr):
    if value is None:
      raise ValueError("'None' not allowed as value for mandatory attributes")
    self.operation.attributes["cbsz"] = value

  @builtins.property
  def abid(self) -> _ods_ir.IntegerAttr:
    return self.operation.attributes["abid"]

  @abid.setter
  def abid(self, value: _ods_ir.IntegerAttr):
    if value is None:
      raise ValueError("'None' not allowed as value for mandatory attributes")
    self.operation.attributes["abid"] = value

  @builtins.property
  def blgp(self) -> _ods_ir.IntegerAttr:
    return self.operation.attributes["blgp"]

  @blgp.setter
  def blgp(self, value: _ods_ir.IntegerAttr):
    if value is None:
      raise ValueError("'None' not allowed as value for mandatory attributes")
    self.operation.attributes["blgp"] = value

  @builtins.property
  def res(self) -> _ods_ir.OpResult[_ods_ir.VectorType]:
    return self.operation.results[0]

@_ods_cext.register_op_adaptor(mfma_f32_32x32x16_bf8_bf8)
class mfma_f32_32x32x16_bf8_bf8Adaptor(_ods_ir.OpAdaptor):
  OPERATION_NAME = "rocdl.mfma.f32.32x32x16.bf8.bf8"

  @builtins.property
  def a(self) -> _ods_ir.Value:
    return self.operands[0]

  @builtins.property
  def b(self) -> _ods_ir.Value:
    return self.operands[1]

  @builtins.property
  def c(self) -> _ods_ir.Value[_ods_ir.VectorType]:
    return self.operands[2]

  @builtins.property
  def cbsz(self) -> _ods_ir.IntegerAttr:
    return self.attributes["cbsz"]

  @builtins.property
  def abid(self) -> _ods_ir.IntegerAttr:
    return self.attributes["abid"]

  @builtins.property
  def blgp(self) -> _ods_ir.IntegerAttr:
    return self.attributes["blgp"]

def mfma_f32_32x32x16_bf8_bf8_(res: _ods_ir.Type, a: _ods_ir.Value, b: _ods_ir.Value, c: _ods_ir.Value[_ods_ir.VectorType], cbsz: _Union[int, _ods_ir.IntegerAttr], abid: _Union[int, _ods_ir.IntegerAttr], blgp: _Union[int, _ods_ir.IntegerAttr], *, loc: _Optional[_ods_ir.Location] = None, ip: _Optional[_ods_ir.InsertionPoint] = None) -> _ods_ir.OpResult[_ods_ir.VectorType]:
  return mfma_f32_32x32x16_bf8_bf8(res=res, a=a, b=b, c=c, cbsz=cbsz, abid=abid, blgp=blgp, loc=loc, ip=ip).result

@_ods_cext.register_operation(_Dialect)
class mfma_f32_32x32x16_bf8_fp8(_ods_ir.OpView):
  r"""
  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, 0 : (i64, i64, vector<16xf32>) -> vector<16xf32>
  ```
  """

  OPERATION_NAME = "rocdl.mfma.f32.32x32x16.bf8.fp8"

  _ODS_REGIONS = (0, True)

  def __init__(self, res: _ods_ir.Type, a: _ods_ir.Value, b: _ods_ir.Value, c: _ods_ir.Value[_ods_ir.VectorType], cbsz: _Union[int, _ods_ir.IntegerAttr], abid: _Union[int, _ods_ir.IntegerAttr], blgp: _Union[int, _ods_ir.IntegerAttr], *, loc: _Optional[_ods_ir.Location] = None, ip: _Optional[_ods_ir.InsertionPoint] = None):
    operands = []
    attributes = {}
    regions = None
    operands.append(a)
    operands.append(b)
    operands.append(c)
    _ods_context = _ods_get_default_loc_context(loc)
    attributes["cbsz"] = (cbsz if (
    isinstance(cbsz, _ods_ir.Attribute) or
    not _ods_ir.AttrBuilder.contains('I32Attr')) else
      _ods_ir.AttrBuilder.get('I32Attr')(cbsz, context=_ods_context))
    attributes["abid"] = (abid if (
    isinstance(abid, _ods_ir.Attribute) or
    not _ods_ir.AttrBuilder.contains('I32Attr')) else
      _ods_ir.AttrBuilder.get('I32Attr')(abid, context=_ods_context))
    attributes["blgp"] = (blgp if (
    isinstance(blgp, _ods_ir.Attribute) or
    not _ods_ir.AttrBuilder.contains('I32Attr')) else
      _ods_ir.AttrBuilder.get('I32Attr')(blgp, context=_ods_context))
    results = []
    results.append(res)
    _ods_successors = None
    super().__init__(self.OPERATION_NAME, self._ODS_REGIONS, self._ODS_OPERAND_SEGMENTS, self._ODS_RESULT_SEGMENTS, attributes=attributes, results=results, operands=operands, successors=_ods_successors, regions=regions, loc=loc, ip=ip)

  @builtins.property
  def a(self) -> _ods_ir.Value:
    return self.operation.operands[0]

  @builtins.property
  def b(self) -> _ods_ir.Value:
    return self.operation.operands[1]

  @builtins.property
  def c(self) -> _ods_ir.Value[_ods_ir.VectorType]:
    return self.operation.operands[2]

  @builtins.property
  def cbsz(self) -> _ods_ir.IntegerAttr:
    return self.operation.attributes["cbsz"]

  @cbsz.setter
  def cbsz(self, value: _ods_ir.IntegerAttr):
    if value is None:
      raise ValueError("'None' not allowed as value for mandatory attributes")
    self.operation.attributes["cbsz"] = value

  @builtins.property
  def abid(self) -> _ods_ir.IntegerAttr:
    return self.operation.attributes["abid"]

  @abid.setter
  def abid(self, value: _ods_ir.IntegerAttr):
    if value is None:
      raise ValueError("'None' not allowed as value for mandatory attributes")
    self.operation.attributes["abid"] = value

  @builtins.property
  def blgp(self) -> _ods_ir.IntegerAttr:
    return self.operation.attributes["blgp"]

  @blgp.setter
  def blgp(self, value: _ods_ir.IntegerAttr):
    if value is None:
      raise ValueError("'None' not allowed as value for mandatory attributes")
    self.operation.attributes["blgp"] = value

  @builtins.property
  def res(self) -> _ods_ir.OpResult[_ods_ir.VectorType]:
    return self.operation.results[0]

@_ods_cext.register_op_adaptor(mfma_f32_32x32x16_bf8_fp8)
class mfma_f32_32x32x16_bf8_fp8Adaptor(_ods_ir.OpAdaptor):
  OPERATION_NAME = "rocdl.mfma.f32.32x32x16.bf8.fp8"

  @builtins.property
  def a(self) -> _ods_ir.Value:
    return self.operands[0]

  @builtins.property
  def b(self) -> _ods_ir.Value:
    return self.operands[1]

  @builtins.property
  def c(self) -> _ods_ir.Value[_ods_ir.VectorType]:
    return self.operands[2]

  @builtins.property
  def cbsz(self) -> _ods_ir.IntegerAttr:
    return self.attributes["cbsz"]

  @builtins.property
  def abid(self) -> _ods_ir.IntegerAttr:
    return self.attributes["abid"]

  @builtins.property
  def blgp(self) -> _ods_ir.IntegerAttr:
    return self.attributes["blgp"]

def mfma_f32_32x32x16_bf8_fp8_(res: _ods_ir.Type, a: _ods_ir.Value, b: _ods_ir.Value, c: _ods_ir.Value[_ods_ir.VectorType], cbsz: _Union[int, _ods_ir.IntegerAttr], abid: _Union[int, _ods_ir.IntegerAttr], blgp: _Union[int, _ods_ir.IntegerAttr], *, loc: _Optional[_ods_ir.Location] = None, ip: _Optional[_ods_ir.InsertionPoint] = None) -> _ods_ir.OpResult[_ods_ir.VectorType]:
  return mfma_f32_32x32x16_bf8_fp8(res=res, a=a, b=b, c=c, cbsz=cbsz, abid=abid, blgp=blgp, loc=loc, ip=ip).result

@_ods_cext.register_operation(_Dialect)
class mfma_f32_32x32x16_bf16(_ods_ir.OpView):
  r"""
  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, 0 : (vector<8xbf16>, vector<8xbf16>, vector<16xf32>) -> vector<16xf32>
  ```
  """

  OPERATION_NAME = "rocdl.mfma.f32.32x32x16.bf16"

  _ODS_REGIONS = (0, True)

  def __init__(self, res: _ods_ir.Type, a: _ods_ir.Value[_ods_ir.VectorType], b: _ods_ir.Value[_ods_ir.VectorType], c: _ods_ir.Value[_ods_ir.VectorType], cbsz: _Union[int, _ods_ir.IntegerAttr], abid: _Union[int, _ods_ir.IntegerAttr], blgp: _Union[int, _ods_ir.IntegerAttr], *, loc: _Optional[_ods_ir.Location] = None, ip: _Optional[_ods_ir.InsertionPoint] = None):
    operands = []
    attributes = {}
    regions = None
    operands.append(a)
    operands.append(b)
    operands.append(c)
    _ods_context = _ods_get_default_loc_context(loc)
    attributes["cbsz"] = (cbsz if (
    isinstance(cbsz, _ods_ir.Attribute) or
    not _ods_ir.AttrBuilder.contains('I32Attr')) else
      _ods_ir.AttrBuilder.get('I32Attr')(cbsz, context=_ods_context))
    attributes["abid"] = (abid if (
    isinstance(abid, _ods_ir.Attribute) or
    not _ods_ir.AttrBuilder.contains('I32Attr')) else
      _ods_ir.AttrBuilder.get('I32Attr')(abid, context=_ods_context))
    attributes["blgp"] = (blgp if (
    isinstance(blgp, _ods_ir.Attribute) or
    not _ods_ir.AttrBuilder.contains('I32Attr')) else
      _ods_ir.AttrBuilder.get('I32Attr')(blgp, context=_ods_context))
    results = []
    results.append(res)
    _ods_successors = None
    super().__init__(self.OPERATION_NAME, self._ODS_REGIONS, self._ODS_OPERAND_SEGMENTS, self._ODS_RESULT_SEGMENTS, attributes=attributes, results=results, operands=operands, successors=_ods_successors, regions=regions, loc=loc, ip=ip)

  @builtins.property
  def a(self) -> _ods_ir.Value[_ods_ir.VectorType]:
    return self.operation.operands[0]

  @builtins.property
  def b(self) -> _ods_ir.Value[_ods_ir.VectorType]:
    return self.operation.operands[1]

  @builtins.property
  def c(self) -> _ods_ir.Value[_ods_ir.VectorType]:
    return self.operation.operands[2]

  @builtins.property
  def cbsz(self) -> _ods_ir.IntegerAttr:
    return self.operation.attributes["cbsz"]

  @cbsz.setter
  def cbsz(self, value: _ods_ir.IntegerAttr):
    if value is None:
      raise ValueError("'None' not allowed as value for mandatory attributes")
    self.operation.attributes["cbsz"] = value

  @builtins.property
  def abid(self) -> _ods_ir.IntegerAttr:
    return self.operation.attributes["abid"]

  @abid.setter
  def abid(self, value: _ods_ir.IntegerAttr):
    if value is None:
      raise ValueError("'None' not allowed as value for mandatory attributes")
    self.operation.attributes["abid"] = value

  @builtins.property
  def blgp(self) -> _ods_ir.IntegerAttr:
    return self.operation.attributes["blgp"]

  @blgp.setter
  def blgp(self, value: _ods_ir.IntegerAttr):
    if value is None:
      raise ValueError("'None' not allowed as value for mandatory attributes")
    self.operation.attributes["blgp"] = value

  @builtins.property
  def res(self) -> _ods_ir.OpResult[_ods_ir.VectorType]:
    return self.operation.results[0]

@_ods_cext.register_op_adaptor(mfma_f32_32x32x16_bf16)
class mfma_f32_32x32x16_bf16Adaptor(_ods_ir.OpAdaptor):
  OPERATION_NAME = "rocdl.mfma.f32.32x32x16.bf16"

  @builtins.property
  def a(self) -> _ods_ir.Value[_ods_ir.VectorType]:
    return self.operands[0]

  @builtins.property
  def b(self) -> _ods_ir.Value[_ods_ir.VectorType]:
    return self.operands[1]

  @builtins.property
  def c(self) -> _ods_ir.Value[_ods_ir.VectorType]:
    return self.operands[2]

  @builtins.property
  def cbsz(self) -> _ods_ir.IntegerAttr:
    return self.attributes["cbsz"]

  @builtins.property
  def abid(self) -> _ods_ir.IntegerAttr:
    return self.attributes["abid"]

  @builtins.property
  def blgp(self) -> _ods_ir.IntegerAttr:
    return self.attributes["blgp"]

def mfma_f32_32x32x16_bf16_(res: _ods_ir.Type, a: _ods_ir.Value[_ods_ir.VectorType], b: _ods_ir.Value[_ods_ir.VectorType], c: _ods_ir.Value[_ods_ir.VectorType], cbsz: _Union[int, _ods_ir.IntegerAttr], abid: _Union[int, _ods_ir.IntegerAttr], blgp: _Union[int, _ods_ir.IntegerAttr], *, loc: _Optional[_ods_ir.Location] = None, ip: _Optional[_ods_ir.InsertionPoint] = None) -> _ods_ir.OpResult[_ods_ir.VectorType]:
  return mfma_f32_32x32x16_bf16(res=res, a=a, b=b, c=c, cbsz=cbsz, abid=abid, blgp=blgp, loc=loc, ip=ip).result

@_ods_cext.register_operation(_Dialect)
class mfma_f32_32x32x16_f16(_ods_ir.OpView):
  r"""
  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, 0 : (vector<8xf16>, vector<8xf16>, vector<16xf32>) -> vector<16xf32>
  ```
  """

  OPERATION_NAME = "rocdl.mfma.f32.32x32x16.f16"

  _ODS_REGIONS = (0, True)

  def __init__(self, res: _ods_ir.Type, a: _ods_ir.Value[_ods_ir.VectorType], b: _ods_ir.Value[_ods_ir.VectorType], c: _ods_ir.Value[_ods_ir.VectorType], cbsz: _Union[int, _ods_ir.IntegerAttr], abid: _Union[int, _ods_ir.IntegerAttr], blgp: _Union[int, _ods_ir.IntegerAttr], *, loc: _Optional[_ods_ir.Location] = None, ip: _Optional[_ods_ir.InsertionPoint] = None):
    operands = []
    attributes = {}
    regions = None
    operands.append(a)
    operands.append(b)
    operands.append(c)
    _ods_context = _ods_get_default_loc_context(loc)
    attributes["cbsz"] = (cbsz if (
    isinstance(cbsz, _ods_ir.Attribute) or
    not _ods_ir.AttrBuilder.contains('I32Attr')) else
      _ods_ir.AttrBuilder.get('I32Attr')(cbsz, context=_ods_context))
    attributes["abid"] = (abid if (
    isinstance(abid, _ods_ir.Attribute) or
    not _ods_ir.AttrBuilder.contains('I32Attr')) else
      _ods_ir.AttrBuilder.get('I32Attr')(abid, context=_ods_context))
    attributes["blgp"] = (blgp if (
    isinstance(blgp, _ods_ir.Attribute) or
    not _ods_ir.AttrBuilder.contains('I32Attr')) else
      _ods_ir.AttrBuilder.get('I32Attr')(blgp, context=_ods_context))
    results = []
    results.append(res)
    _ods_successors = None
    super().__init__(self.OPERATION_NAME, self._ODS_REGIONS, self._ODS_OPERAND_SEGMENTS, self._ODS_RESULT_SEGMENTS, attributes=attributes, results=results, operands=operands, successors=_ods_successors, regions=regions, loc=loc, ip=ip)

  @builtins.property
  def a(self) -> _ods_ir.Value[_ods_ir.VectorType]:
    return self.operation.operands[0]

  @builtins.property
  def b(self) -> _ods_ir.Value[_ods_ir.VectorType]:
    return self.operation.operands[1]

  @builtins.property
  def c(self) -> _ods_ir.Value[_ods_ir.VectorType]:
    return self.operation.operands[2]

  @builtins.property
  def cbsz(self) -> _ods_ir.IntegerAttr:
    return self.operation.attributes["cbsz"]

  @cbsz.setter
  def cbsz(self, value: _ods_ir.IntegerAttr):
    if value is None:
      raise ValueError("'None' not allowed as value for mandatory attributes")
    self.operation.attributes["cbsz"] = value

  @builtins.property
  def abid(self) -> _ods_ir.IntegerAttr:
    return self.operation.attributes["abid"]

  @abid.setter
  def abid(self, value: _ods_ir.IntegerAttr):
    if value is None:
      raise ValueError("'None' not allowed as value for mandatory attributes")
    self.operation.attributes["abid"] = value

  @builtins.property
  def blgp(self) -> _ods_ir.IntegerAttr:
    return self.operation.attributes["blgp"]

  @blgp.setter
  def blgp(self, value: _ods_ir.IntegerAttr):
    if value is None:
      raise ValueError("'None' not allowed as value for mandatory attributes")
    self.operation.attributes["blgp"] = value

  @builtins.property
  def res(self) -> _ods_ir.OpResult[_ods_ir.VectorType]:
    return self.operation.results[0]

@_ods_cext.register_op_adaptor(mfma_f32_32x32x16_f16)
class mfma_f32_32x32x16_f16Adaptor(_ods_ir.OpAdaptor):
  OPERATION_NAME = "rocdl.mfma.f32.32x32x16.f16"

  @builtins.property
  def a(self) -> _ods_ir.Value[_ods_ir.VectorType]:
    return self.operands[0]

  @builtins.property
  def b(self) -> _ods_ir.Value[_ods_ir.VectorType]:
    return self.operands[1]

  @builtins.property
  def c(self) -> _ods_ir.Value[_ods_ir.VectorType]:
    return self.operands[2]

  @builtins.property
  def cbsz(self) -> _ods_ir.IntegerAttr:
    return self.attributes["cbsz"]

  @builtins.property
  def abid(self) -> _ods_ir.IntegerAttr:
    return self.attributes["abid"]

  @builtins.property
  def blgp(self) -> _ods_ir.IntegerAttr:
    return self.attributes["blgp"]

def mfma_f32_32x32x16_f16_(res: _ods_ir.Type, a: _ods_ir.Value[_ods_ir.VectorType], b: _ods_ir.Value[_ods_ir.VectorType], c: _ods_ir.Value[_ods_ir.VectorType], cbsz: _Union[int, _ods_ir.IntegerAttr], abid: _Union[int, _ods_ir.IntegerAttr], blgp: _Union[int, _ods_ir.IntegerAttr], *, loc: _Optional[_ods_ir.Location] = None, ip: _Optional[_ods_ir.InsertionPoint] = None) -> _ods_ir.OpResult[_ods_ir.VectorType]:
  return mfma_f32_32x32x16_f16(res=res, a=a, b=b, c=c, cbsz=cbsz, abid=abid, blgp=blgp, loc=loc, ip=ip).result

@_ods_cext.register_operation(_Dialect)
class mfma_f32_32x32x16_fp8_bf8(_ods_ir.OpView):
  r"""
  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, 0 : (i64, i64, vector<16xf32>) -> vector<16xf32>
  ```
  """

  OPERATION_NAME = "rocdl.mfma.f32.32x32x16.fp8.bf8"

  _ODS_REGIONS = (0, True)

  def __init__(self, res: _ods_ir.Type, a: _ods_ir.Value, b: _ods_ir.Value, c: _ods_ir.Value[_ods_ir.VectorType], cbsz: _Union[int, _ods_ir.IntegerAttr], abid: _Union[int, _ods_ir.IntegerAttr], blgp: _Union[int, _ods_ir.IntegerAttr], *, loc: _Optional[_ods_ir.Location] = None, ip: _Optional[_ods_ir.InsertionPoint] = None):
    operands = []
    attributes = {}
    regions = None
    operands.append(a)
    operands.append(b)
    operands.append(c)
    _ods_context = _ods_get_default_loc_context(loc)
    attributes["cbsz"] = (cbsz if (
    isinstance(cbsz, _ods_ir.Attribute) or
    not _ods_ir.AttrBuilder.contains('I32Attr')) else
      _ods_ir.AttrBuilder.get('I32Attr')(cbsz, context=_ods_context))
    attributes["abid"] = (abid if (
    isinstance(abid, _ods_ir.Attribute) or
    not _ods_ir.AttrBuilder.contains('I32Attr')) else
      _ods_ir.AttrBuilder.get('I32Attr')(abid, context=_ods_context))
    attributes["blgp"] = (blgp if (
    isinstance(blgp, _ods_ir.Attribute) or
    not _ods_ir.AttrBuilder.contains('I32Attr')) else
      _ods_ir.AttrBuilder.get('I32Attr')(blgp, context=_ods_context))
    results = []
    results.append(res)
    _ods_successors = None
    super().__init__(self.OPERATION_NAME, self._ODS_REGIONS, self._ODS_OPERAND_SEGMENTS, self._ODS_RESULT_SEGMENTS, attributes=attributes, results=results, operands=operands, successors=_ods_successors, regions=regions, loc=loc, ip=ip)

  @builtins.property
  def a(self) -> _ods_ir.Value:
    return self.operation.operands[0]

  @builtins.property
  def b(self) -> _ods_ir.Value:
    return self.operation.operands[1]

  @builtins.property
  def c(self) -> _ods_ir.Value[_ods_ir.VectorType]:
    return self.operation.operands[2]

  @builtins.property
  def cbsz(self) -> _ods_ir.IntegerAttr:
    return self.operation.attributes["cbsz"]

  @cbsz.setter
  def cbsz(self, value: _ods_ir.IntegerAttr):
    if value is None:
      raise ValueError("'None' not allowed as value for mandatory attributes")
    self.operation.attributes["cbsz"] = value

  @builtins.property
  def abid(self) -> _ods_ir.IntegerAttr:
    return self.operation.attributes["abid"]

  @abid.setter
  def abid(self, value: _ods_ir.IntegerAttr):
    if value is None:
      raise ValueError("'None' not allowed as value for mandatory attributes")
    self.operation.attributes["abid"] = value

  @builtins.property
  def blgp(self) -> _ods_ir.IntegerAttr:
    return self.operation.attributes["blgp"]

  @blgp.setter
  def blgp(self, value: _ods_ir.IntegerAttr):
    if value is None:
      raise ValueError("'None' not allowed as value for mandatory attributes")
    self.operation.attributes["blgp"] = value

  @builtins.property
  def res(self) -> _ods_ir.OpResult[_ods_ir.VectorType]:
    return self.operation.results[0]

@_ods_cext.register_op_adaptor(mfma_f32_32x32x16_fp8_bf8)
class mfma_f32_32x32x16_fp8_bf8Adaptor(_ods_ir.OpAdaptor):
  OPERATION_NAME = "rocdl.mfma.f32.32x32x16.fp8.bf8"

  @builtins.property
  def a(self) -> _ods_ir.Value:
    return self.operands[0]

  @builtins.property
  def b(self) -> _ods_ir.Value:
    return self.operands[1]

  @builtins.property
  def c(self) -> _ods_ir.Value[_ods_ir.VectorType]:
    return self.operands[2]

  @builtins.property
  def cbsz(self) -> _ods_ir.IntegerAttr:
    return self.attributes["cbsz"]

  @builtins.property
  def abid(self) -> _ods_ir.IntegerAttr:
    return self.attributes["abid"]

  @builtins.property
  def blgp(self) -> _ods_ir.IntegerAttr:
    return self.attributes["blgp"]

def mfma_f32_32x32x16_fp8_bf8_(res: _ods_ir.Type, a: _ods_ir.Value, b: _ods_ir.Value, c: _ods_ir.Value[_ods_ir.VectorType], cbsz: _Union[int, _ods_ir.IntegerAttr], abid: _Union[int, _ods_ir.IntegerAttr], blgp: _Union[int, _ods_ir.IntegerAttr], *, loc: _Optional[_ods_ir.Location] = None, ip: _Optional[_ods_ir.InsertionPoint] = None) -> _ods_ir.OpResult[_ods_ir.VectorType]:
  return mfma_f32_32x32x16_fp8_bf8(res=res, a=a, b=b, c=c, cbsz=cbsz, abid=abid, blgp=blgp, loc=loc, ip=ip).result

@_ods_cext.register_operation(_Dialect)
class mfma_f32_32x32x16_fp8_fp8(_ods_ir.OpView):
  r"""
  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, 0 : (i64, i64, vector<16xf32>) -> vector<16xf32>
  ```
  """

  OPERATION_NAME = "rocdl.mfma.f32.32x32x16.fp8.fp8"

  _ODS_REGIONS = (0, True)

  def __init__(self, res: _ods_ir.Type, a: _ods_ir.Value, b: _ods_ir.Value, c: _ods_ir.Value[_ods_ir.VectorType], cbsz: _Union[int, _ods_ir.IntegerAttr], abid: _Union[int, _ods_ir.IntegerAttr], blgp: _Union[int, _ods_ir.IntegerAttr], *, loc: _Optional[_ods_ir.Location] = None, ip: _Optional[_ods_ir.InsertionPoint] = None):
    operands = []
    attributes = {}
    regions = None
    operands.append(a)
    operands.append(b)
    operands.append(c)
    _ods_context = _ods_get_default_loc_context(loc)
    attributes["cbsz"] = (cbsz if (
    isinstance(cbsz, _ods_ir.Attribute) or
    not _ods_ir.AttrBuilder.contains('I32Attr')) else
      _ods_ir.AttrBuilder.get('I32Attr')(cbsz, context=_ods_context))
    attributes["abid"] = (abid if (
    isinstance(abid, _ods_ir.Attribute) or
    not _ods_ir.AttrBuilder.contains('I32Attr')) else
      _ods_ir.AttrBuilder.get('I32Attr')(abid, context=_ods_context))
    attributes["blgp"] = (blgp if (
    isinstance(blgp, _ods_ir.Attribute) or
    not _ods_ir.AttrBuilder.contains('I32Attr')) else
      _ods_ir.AttrBuilder.get('I32Attr')(blgp, context=_ods_context))
    results = []
    results.append(res)
    _ods_successors = None
    super().__init__(self.OPERATION_NAME, self._ODS_REGIONS, self._ODS_OPERAND_SEGMENTS, self._ODS_RESULT_SEGMENTS, attributes=attributes, results=results, operands=operands, successors=_ods_successors, regions=regions, loc=loc, ip=ip)

  @builtins.property
  def a(self) -> _ods_ir.Value:
    return self.operation.operands[0]

  @builtins.property
  def b(self) -> _ods_ir.Value:
    return self.operation.operands[1]

  @builtins.property
  def c(self) -> _ods_ir.Value[_ods_ir.VectorType]:
    return self.operation.operands[2]

  @builtins.property
  def cbsz(self) -> _ods_ir.IntegerAttr:
    return self.operation.attributes["cbsz"]

  @cbsz.setter
  def cbsz(self, value: _ods_ir.IntegerAttr):
    if value is None:
      raise ValueError("'None' not allowed as value for mandatory attributes")
    self.operation.attributes["cbsz"] = value

  @builtins.property
  def abid(self) -> _ods_ir.IntegerAttr:
    return self.operation.attributes["abid"]

  @abid.setter
  def abid(self, value: _ods_ir.IntegerAttr):
    if value is None:
      raise ValueError("'None' not allowed as value for mandatory attributes")
    self.operation.attributes["abid"] = value

  @builtins.property
  def blgp(self) -> _ods_ir.IntegerAttr:
    return self.operation.attributes["blgp"]

  @blgp.setter
  def blgp(self, value: _ods_ir.IntegerAttr):
    if value is None:
      raise ValueError("'None' not allowed as value for mandatory attributes")
    self.operation.attributes["blgp"] = value

  @builtins.property
  def res(self) -> _ods_ir.OpResult[_ods_ir.VectorType]:
    return self.operation.results[0]

@_ods_cext.register_op_adaptor(mfma_f32_32x32x16_fp8_fp8)
class mfma_f32_32x32x16_fp8_fp8Adaptor(_ods_ir.OpAdaptor):
  OPERATION_NAME = "rocdl.mfma.f32.32x32x16.fp8.fp8"

  @builtins.property
  def a(self) -> _ods_ir.Value:
    return self.operands[0]

  @builtins.property
  def b(self) -> _ods_ir.Value:
    return self.operands[1]

  @builtins.property
  def c(self) -> _ods_ir.Value[_ods_ir.VectorType]:
    return self.operands[2]

  @builtins.property
  def cbsz(self) -> _ods_ir.IntegerAttr:
    return self.attributes["cbsz"]

  @builtins.property
  def abid(self) -> _ods_ir.IntegerAttr:
    return self.attributes["abid"]

  @builtins.property
  def blgp(self) -> _ods_ir.IntegerAttr:
    return self.attributes["blgp"]

def mfma_f32_32x32x16_fp8_fp8_(res: _ods_ir.Type, a: _ods_ir.Value, b: _ods_ir.Value, c: _ods_ir.Value[_ods_ir.VectorType], cbsz: _Union[int, _ods_ir.IntegerAttr], abid: _Union[int, _ods_ir.IntegerAttr], blgp: _Union[int, _ods_ir.IntegerAttr], *, loc: _Optional[_ods_ir.Location] = None, ip: _Optional[_ods_ir.InsertionPoint] = None) -> _ods_ir.OpResult[_ods_ir.VectorType]:
  return mfma_f32_32x32x16_fp8_fp8(res=res, a=a, b=b, c=c, cbsz=cbsz, abid=abid, blgp=blgp, loc=loc, ip=ip).result

@_ods_cext.register_operation(_Dialect)
class mfma_f64_4x4x4f64(_ods_ir.OpView):
  r"""
  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.f64.4x4x4f64 %a0, %b0, %c0, 0, 0, 0 : (f64, f64, f64) -> f64
  ```
  """

  OPERATION_NAME = "rocdl.mfma.f64.4x4x4f64"

  _ODS_REGIONS = (0, True)

  def __init__(self, res: _ods_ir.Type, a: _ods_ir.Value, b: _ods_ir.Value, c: _ods_ir.Value, cbsz: _Union[int, _ods_ir.IntegerAttr], abid: _Union[int, _ods_ir.IntegerAttr], blgp: _Union[int, _ods_ir.IntegerAttr], *, loc: _Optional[_ods_ir.Location] = None, ip: _Optional[_ods_ir.InsertionPoint] = None):
    operands = []
    attributes = {}
    regions = None
    operands.append(a)
    operands.append(b)
    operands.append(c)
    _ods_context = _ods_get_default_loc_context(loc)
    attributes["cbsz"] = (cbsz if (
    isinstance(cbsz, _ods_ir.Attribute) or
    not _ods_ir.AttrBuilder.contains('I32Attr')) else
      _ods_ir.AttrBuilder.get('I32Attr')(cbsz, context=_ods_context))
    attributes["abid"] = (abid if (
    isinstance(abid, _ods_ir.Attribute) or
    not _ods_ir.AttrBuilder.contains('I32Attr')) else
      _ods_ir.AttrBuilder.get('I32Attr')(abid, context=_ods_context))
    attributes["blgp"] = (blgp if (
    isinstance(blgp, _ods_ir.Attribute) or
    not _ods_ir.AttrBuilder.contains('I32Attr')) else
      _ods_ir.AttrBuilder.get('I32Attr')(blgp, context=_ods_context))
    results = []
    results.append(res)
    _ods_successors = None
    super().__init__(self.OPERATION_NAME, self._ODS_REGIONS, self._ODS_OPERAND_SEGMENTS, self._ODS_RESULT_SEGMENTS, attributes=attributes, results=results, operands=operands, successors=_ods_successors, regions=regions, loc=loc, ip=ip)

  @builtins.property
  def a(self) -> _ods_ir.Value:
    return self.operation.operands[0]

  @builtins.property
  def b(self) -> _ods_ir.Value:
    return self.operation.operands[1]

  @builtins.property
  def c(self) -> _ods_ir.Value:
    return self.operation.operands[2]

  @builtins.property
  def cbsz(self) -> _ods_ir.IntegerAttr:
    return self.operation.attributes["cbsz"]

  @cbsz.setter
  def cbsz(self, value: _ods_ir.IntegerAttr):
    if value is None:
      raise ValueError("'None' not allowed as value for mandatory attributes")
    self.operation.attributes["cbsz"] = value

  @builtins.property
  def abid(self) -> _ods_ir.IntegerAttr:
    return self.operation.attributes["abid"]

  @abid.setter
  def abid(self, value: _ods_ir.IntegerAttr):
    if value is None:
      raise ValueError("'None' not allowed as value for mandatory attributes")
    self.operation.attributes["abid"] = value

  @builtins.property
  def blgp(self) -> _ods_ir.IntegerAttr:
    return self.operation.attributes["blgp"]

  @blgp.setter
  def blgp(self, value: _ods_ir.IntegerAttr):
    if value is None:
      raise ValueError("'None' not allowed as value for mandatory attributes")
    self.operation.attributes["blgp"] = value

  @builtins.property
  def res(self) -> _ods_ir.OpResult:
    return self.operation.results[0]

@_ods_cext.register_op_adaptor(mfma_f64_4x4x4f64)
class mfma_f64_4x4x4f64Adaptor(_ods_ir.OpAdaptor):
  OPERATION_NAME = "rocdl.mfma.f64.4x4x4f64"

  @builtins.property
  def a(self) -> _ods_ir.Value:
    return self.operands[0]

  @builtins.property
  def b(self) -> _ods_ir.Value:
    return self.operands[1]

  @builtins.property
  def c(self) -> _ods_ir.Value:
    return self.operands[2]

  @builtins.property
  def cbsz(self) -> _ods_ir.IntegerAttr:
    return self.attributes["cbsz"]

  @builtins.property
  def abid(self) -> _ods_ir.IntegerAttr:
    return self.attributes["abid"]

  @builtins.property
  def blgp(self) -> _ods_ir.IntegerAttr:
    return self.attributes["blgp"]

def mfma_f64_4x4x4f64_(res: _ods_ir.Type, a: _ods_ir.Value, b: _ods_ir.Value, c: _ods_ir.Value, cbsz: _Union[int, _ods_ir.IntegerAttr], abid: _Union[int, _ods_ir.IntegerAttr], blgp: _Union[int, _ods_ir.IntegerAttr], *, loc: _Optional[_ods_ir.Location] = None, ip: _Optional[_ods_ir.InsertionPoint] = None) -> _ods_ir.OpResult:
  return mfma_f64_4x4x4f64(res=res, a=a, b=b, c=c, cbsz=cbsz, abid=abid, blgp=blgp, loc=loc, ip=ip).result

@_ods_cext.register_operation(_Dialect)
class mfma_f64_16x16x4f64(_ods_ir.OpView):
  r"""
  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.f64.16x16x4f64 %a0, %b0, %c0, 0, 0, 0 : (f64, f64, vector<4xf64>) -> vector<4xf64>
  ```
  """

  OPERATION_NAME = "rocdl.mfma.f64.16x16x4f64"

  _ODS_REGIONS = (0, True)

  def __init__(self, res: _ods_ir.Type, a: _ods_ir.Value, b: _ods_ir.Value, c: _ods_ir.Value[_ods_ir.VectorType], cbsz: _Union[int, _ods_ir.IntegerAttr], abid: _Union[int, _ods_ir.IntegerAttr], blgp: _Union[int, _ods_ir.IntegerAttr], *, loc: _Optional[_ods_ir.Location] = None, ip: _Optional[_ods_ir.InsertionPoint] = None):
    operands = []
    attributes = {}
    regions = None
    operands.append(a)
    operands.append(b)
    operands.append(c)
    _ods_context = _ods_get_default_loc_context(loc)
    attributes["cbsz"] = (cbsz if (
    isinstance(cbsz, _ods_ir.Attribute) or
    not _ods_ir.AttrBuilder.contains('I32Attr')) else
      _ods_ir.AttrBuilder.get('I32Attr')(cbsz, context=_ods_context))
    attributes["abid"] = (abid if (
    isinstance(abid, _ods_ir.Attribute) or
    not _ods_ir.AttrBuilder.contains('I32Attr')) else
      _ods_ir.AttrBuilder.get('I32Attr')(abid, context=_ods_context))
    attributes["blgp"] = (blgp if (
    isinstance(blgp, _ods_ir.Attribute) or
    not _ods_ir.AttrBuilder.contains('I32Attr')) else
      _ods_ir.AttrBuilder.get('I32Attr')(blgp, context=_ods_context))
    results = []
    results.append(res)
    _ods_successors = None
    super().__init__(self.OPERATION_NAME, self._ODS_REGIONS, self._ODS_OPERAND_SEGMENTS, self._ODS_RESULT_SEGMENTS, attributes=attributes, results=results, operands=operands, successors=_ods_successors, regions=regions, loc=loc, ip=ip)

  @builtins.property
  def a(self) -> _ods_ir.Value:
    return self.operation.operands[0]

  @builtins.property
  def b(self) -> _ods_ir.Value:
    return self.operation.operands[1]

  @builtins.property
  def c(self) -> _ods_ir.Value[_ods_ir.VectorType]:
    return self.operation.operands[2]

  @builtins.property
  def cbsz(self) -> _ods_ir.IntegerAttr:
    return self.operation.attributes["cbsz"]

  @cbsz.setter
  def cbsz(self, value: _ods_ir.IntegerAttr):
    if value is None:
      raise ValueError("'None' not allowed as value for mandatory attributes")
    self.operation.attributes["cbsz"] = value

  @builtins.property
  def abid(self) -> _ods_ir.IntegerAttr:
    return self.operation.attributes["abid"]

  @abid.setter
  def abid(self, value: _ods_ir.IntegerAttr):
    if value is None:
      raise ValueError("'None' not allowed as value for mandatory attributes")
    self.operation.attributes["abid"] = value

  @builtins.property
  def blgp(self) -> _ods_ir.IntegerAttr:
    return self.operation.attributes["blgp"]

  @blgp.setter
  def blgp(self, value: _ods_ir.IntegerAttr):
    if value is None:
      raise ValueError("'None' not allowed as value for mandatory attributes")
    self.operation.attributes["blgp"] = value

  @builtins.property
  def res(self) -> _ods_ir.OpResult[_ods_ir.VectorType]:
    return self.operation.results[0]

@_ods_cext.register_op_adaptor(mfma_f64_16x16x4f64)
class mfma_f64_16x16x4f64Adaptor(_ods_ir.OpAdaptor):
  OPERATION_NAME = "rocdl.mfma.f64.16x16x4f64"

  @builtins.property
  def a(self) -> _ods_ir.Value:
    return self.operands[0]

  @builtins.property
  def b(self) -> _ods_ir.Value:
    return self.operands[1]

  @builtins.property
  def c(self) -> _ods_ir.Value[_ods_ir.VectorType]:
    return self.operands[2]

  @builtins.property
  def cbsz(self) -> _ods_ir.IntegerAttr:
    return self.attributes["cbsz"]

  @builtins.property
  def abid(self) -> _ods_ir.IntegerAttr:
    return self.attributes["abid"]

  @builtins.property
  def blgp(self) -> _ods_ir.IntegerAttr:
    return self.attributes["blgp"]

def mfma_f64_16x16x4f64_(res: _ods_ir.Type, a: _ods_ir.Value, b: _ods_ir.Value, c: _ods_ir.Value[_ods_ir.VectorType], cbsz: _Union[int, _ods_ir.IntegerAttr], abid: _Union[int, _ods_ir.IntegerAttr], blgp: _Union[int, _ods_ir.IntegerAttr], *, loc: _Optional[_ods_ir.Location] = None, ip: _Optional[_ods_ir.InsertionPoint] = None) -> _ods_ir.OpResult[_ods_ir.VectorType]:
  return mfma_f64_16x16x4f64(res=res, a=a, b=b, c=c, cbsz=cbsz, abid=abid, blgp=blgp, loc=loc, ip=ip).result

@_ods_cext.register_operation(_Dialect)
class mfma_i32_4x4x4i8(_ods_ir.OpView):
  r"""
  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, 0 : (i32, i32, vector<4xi32>) -> vector<4xi32>
  ```
  """

  OPERATION_NAME = "rocdl.mfma.i32.4x4x4i8"

  _ODS_REGIONS = (0, True)

  def __init__(self, res: _ods_ir.Type, a: _ods_ir.Value, b: _ods_ir.Value, c: _ods_ir.Value[_ods_ir.VectorType], cbsz: _Union[int, _ods_ir.IntegerAttr], abid: _Union[int, _ods_ir.IntegerAttr], blgp: _Union[int, _ods_ir.IntegerAttr], *, loc: _Optional[_ods_ir.Location] = None, ip: _Optional[_ods_ir.InsertionPoint] = None):
    operands = []
    attributes = {}
    regions = None
    operands.append(a)
    operands.append(b)
    operands.append(c)
    _ods_context = _ods_get_default_loc_context(loc)
    attributes["cbsz"] = (cbsz if (
    isinstance(cbsz, _ods_ir.Attribute) or
    not _ods_ir.AttrBuilder.contains('I32Attr')) else
      _ods_ir.AttrBuilder.get('I32Attr')(cbsz, context=_ods_context))
    attributes["abid"] = (abid if (
    isinstance(abid, _ods_ir.Attribute) or
    not _ods_ir.AttrBuilder.contains('I32Attr')) else
      _ods_ir.AttrBuilder.get('I32Attr')(abid, context=_ods_context))
    attributes["blgp"] = (blgp if (
    isinstance(blgp, _ods_ir.Attribute) or
    not _ods_ir.AttrBuilder.contains('I32Attr')) else
      _ods_ir.AttrBuilder.get('I32Attr')(blgp, context=_ods_context))
    results = []
    results.append(res)
    _ods_successors = None
    super().__init__(self.OPERATION_NAME, self._ODS_REGIONS, self._ODS_OPERAND_SEGMENTS, self._ODS_RESULT_SEGMENTS, attributes=attributes, results=results, operands=operands, successors=_ods_successors, regions=regions, loc=loc, ip=ip)

  @builtins.property
  def a(self) -> _ods_ir.Value:
    return self.operation.operands[0]

  @builtins.property
  def b(self) -> _ods_ir.Value:
    return self.operation.operands[1]

  @builtins.property
  def c(self) -> _ods_ir.Value[_ods_ir.VectorType]:
    return self.operation.operands[2]

  @builtins.property
  def cbsz(self) -> _ods_ir.IntegerAttr:
    return self.operation.attributes["cbsz"]

  @cbsz.setter
  def cbsz(self, value: _ods_ir.IntegerAttr):
    if value is None:
      raise ValueError("'None' not allowed as value for mandatory attributes")
    self.operation.attributes["cbsz"] = value

  @builtins.property
  def abid(self) -> _ods_ir.IntegerAttr:
    return self.operation.attributes["abid"]

  @abid.setter
  def abid(self, value: _ods_ir.IntegerAttr):
    if value is None:
      raise ValueError("'None' not allowed as value for mandatory attributes")
    self.operation.attributes["abid"] = value

  @builtins.property
  def blgp(self) -> _ods_ir.IntegerAttr:
    return self.operation.attributes["blgp"]

  @blgp.setter
  def blgp(self, value: _ods_ir.IntegerAttr):
    if value is None:
      raise ValueError("'None' not allowed as value for mandatory attributes")
    self.operation.attributes["blgp"] = value

  @builtins.property
  def res(self) -> _ods_ir.OpResult[_ods_ir.VectorType]:
    return self.operation.results[0]

@_ods_cext.register_op_adaptor(mfma_i32_4x4x4i8)
class mfma_i32_4x4x4i8Adaptor(_ods_ir.OpAdaptor):
  OPERATION_NAME = "rocdl.mfma.i32.4x4x4i8"

  @builtins.property
  def a(self) -> _ods_ir.Value:
    return self.operands[0]

  @builtins.property
  def b(self) -> _ods_ir.Value:
    return self.operands[1]

  @builtins.property
  def c(self) -> _ods_ir.Value[_ods_ir.VectorType]:
    return self.operands[2]

  @builtins.property
  def cbsz(self) -> _ods_ir.IntegerAttr:
    return self.attributes["cbsz"]

  @builtins.property
  def abid(self) -> _ods_ir.IntegerAttr:
    return self.attributes["abid"]

  @builtins.property
  def blgp(self) -> _ods_ir.IntegerAttr:
    return self.attributes["blgp"]

def mfma_i32_4x4x4i8_(res: _ods_ir.Type, a: _ods_ir.Value, b: _ods_ir.Value, c: _ods_ir.Value[_ods_ir.VectorType], cbsz: _Union[int, _ods_ir.IntegerAttr], abid: _Union[int, _ods_ir.IntegerAttr], blgp: _Union[int, _ods_ir.IntegerAttr], *, loc: _Optional[_ods_ir.Location] = None, ip: _Optional[_ods_ir.InsertionPoint] = None) -> _ods_ir.OpResult[_ods_ir.VectorType]:
  return mfma_i32_4x4x4i8(res=res, a=a, b=b, c=c, cbsz=cbsz, abid=abid, blgp=blgp, loc=loc, ip=ip).result

@_ods_cext.register_operation(_Dialect)
class mfma_i32_16x16x4i8(_ods_ir.OpView):
  r"""
  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, 0 : (i32, i32, vector<16xi32>) -> vector<16xi32>
  ```
  """

  OPERATION_NAME = "rocdl.mfma.i32.16x16x4i8"

  _ODS_REGIONS = (0, True)

  def __init__(self, res: _ods_ir.Type, a: _ods_ir.Value, b: _ods_ir.Value, c: _ods_ir.Value[_ods_ir.VectorType], cbsz: _Union[int, _ods_ir.IntegerAttr], abid: _Union[int, _ods_ir.IntegerAttr], blgp: _Union[int, _ods_ir.IntegerAttr], *, loc: _Optional[_ods_ir.Location] = None, ip: _Optional[_ods_ir.InsertionPoint] = None):
    operands = []
    attributes = {}
    regions = None
    operands.append(a)
    operands.append(b)
    operands.append(c)
    _ods_context = _ods_get_default_loc_context(loc)
    attributes["cbsz"] = (cbsz if (
    isinstance(cbsz, _ods_ir.Attribute) or
    not _ods_ir.AttrBuilder.contains('I32Attr')) else
      _ods_ir.AttrBuilder.get('I32Attr')(cbsz, context=_ods_context))
    attributes["abid"] = (abid if (
    isinstance(abid, _ods_ir.Attribute) or
    not _ods_ir.AttrBuilder.contains('I32Attr')) else
      _ods_ir.AttrBuilder.get('I32Attr')(abid, context=_ods_context))
    attributes["blgp"] = (blgp if (
    isinstance(blgp, _ods_ir.Attribute) or
    not _ods_ir.AttrBuilder.contains('I32Attr')) else
      _ods_ir.AttrBuilder.get('I32Attr')(blgp, context=_ods_context))
    results = []
    results.append(res)
    _ods_successors = None
    super().__init__(self.OPERATION_NAME, self._ODS_REGIONS, self._ODS_OPERAND_SEGMENTS, self._ODS_RESULT_SEGMENTS, attributes=attributes, results=results, operands=operands, successors=_ods_successors, regions=regions, loc=loc, ip=ip)

  @builtins.property
  def a(self) -> _ods_ir.Value:
    return self.operation.operands[0]

  @builtins.property
  def b(self) -> _ods_ir.Value:
    return self.operation.operands[1]

  @builtins.property
  def c(self) -> _ods_ir.Value[_ods_ir.VectorType]:
    return self.operation.operands[2]

  @builtins.property
  def cbsz(self) -> _ods_ir.IntegerAttr:
    return self.operation.attributes["cbsz"]

  @cbsz.setter
  def cbsz(self, value: _ods_ir.IntegerAttr):
    if value is None:
      raise ValueError("'None' not allowed as value for mandatory attributes")
    self.operation.attributes["cbsz"] = value

  @builtins.property
  def abid(self) -> _ods_ir.IntegerAttr:
    return self.operation.attributes["abid"]

  @abid.setter
  def abid(self, value: _ods_ir.IntegerAttr):
    if value is None:
      raise ValueError("'None' not allowed as value for mandatory attributes")
    self.operation.attributes["abid"] = value

  @builtins.property
  def blgp(self) -> _ods_ir.IntegerAttr:
    return self.operation.attributes["blgp"]

  @blgp.setter
  def blgp(self, value: _ods_ir.IntegerAttr):
    if value is None:
      raise ValueError("'None' not allowed as value for mandatory attributes")
    self.operation.attributes["blgp"] = value

  @builtins.property
  def res(self) -> _ods_ir.OpResult[_ods_ir.VectorType]:
    return self.operation.results[0]

@_ods_cext.register_op_adaptor(mfma_i32_16x16x4i8)
class mfma_i32_16x16x4i8Adaptor(_ods_ir.OpAdaptor):
  OPERATION_NAME = "rocdl.mfma.i32.16x16x4i8"

  @builtins.property
  def a(self) -> _ods_ir.Value:
    return self.operands[0]

  @builtins.property
  def b(self) -> _ods_ir.Value:
    return self.operands[1]

  @builtins.property
  def c(self) -> _ods_ir.Value[_ods_ir.VectorType]:
    return self.operands[2]

  @builtins.property
  def cbsz(self) -> _ods_ir.IntegerAttr:
    return self.attributes["cbsz"]

  @builtins.property
  def abid(self) -> _ods_ir.IntegerAttr:
    return self.attributes["abid"]

  @builtins.property
  def blgp(self) -> _ods_ir.IntegerAttr:
    return self.attributes["blgp"]

def mfma_i32_16x16x4i8_(res: _ods_ir.Type, a: _ods_ir.Value, b: _ods_ir.Value, c: _ods_ir.Value[_ods_ir.VectorType], cbsz: _Union[int, _ods_ir.IntegerAttr], abid: _Union[int, _ods_ir.IntegerAttr], blgp: _Union[int, _ods_ir.IntegerAttr], *, loc: _Optional[_ods_ir.Location] = None, ip: _Optional[_ods_ir.InsertionPoint] = None) -> _ods_ir.OpResult[_ods_ir.VectorType]:
  return mfma_i32_16x16x4i8(res=res, a=a, b=b, c=c, cbsz=cbsz, abid=abid, blgp=blgp, loc=loc, ip=ip).result

@_ods_cext.register_operation(_Dialect)
class mfma_i32_16x16x16i8(_ods_ir.OpView):
  r"""
  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, 0 : (i32, i32, vector<4xi32>) -> vector<4xi32>
  ```
  """

  OPERATION_NAME = "rocdl.mfma.i32.16x16x16i8"

  _ODS_REGIONS = (0, True)

  def __init__(self, res: _ods_ir.Type, a: _ods_ir.Value, b: _ods_ir.Value, c: _ods_ir.Value[_ods_ir.VectorType], cbsz: _Union[int, _ods_ir.IntegerAttr], abid: _Union[int, _ods_ir.IntegerAttr], blgp: _Union[int, _ods_ir.IntegerAttr], *, loc: _Optional[_ods_ir.Location] = None, ip: _Optional[_ods_ir.InsertionPoint] = None):
    operands = []
    attributes = {}
    regions = None
    operands.append(a)
    operands.append(b)
    operands.append(c)
    _ods_context = _ods_get_default_loc_context(loc)
    attributes["cbsz"] = (cbsz if (
    isinstance(cbsz, _ods_ir.Attribute) or
    not _ods_ir.AttrBuilder.contains('I32Attr')) else
      _ods_ir.AttrBuilder.get('I32Attr')(cbsz, context=_ods_context))
    attributes["abid"] = (abid if (
    isinstance(abid, _ods_ir.Attribute) or
    not _ods_ir.AttrBuilder.contains('I32Attr')) else
      _ods_ir.AttrBuilder.get('I32Attr')(abid, context=_ods_context))
    attributes["blgp"] = (blgp if (
    isinstance(blgp, _ods_ir.Attribute) or
    not _ods_ir.AttrBuilder.contains('I32Attr')) else
      _ods_ir.AttrBuilder.get('I32Attr')(blgp, context=_ods_context))
    results = []
    results.append(res)
    _ods_successors = None
    super().__init__(self.OPERATION_NAME, self._ODS_REGIONS, self._ODS_OPERAND_SEGMENTS, self._ODS_RESULT_SEGMENTS, attributes=attributes, results=results, operands=operands, successors=_ods_successors, regions=regions, loc=loc, ip=ip)

  @builtins.property
  def a(self) -> _ods_ir.Value:
    return self.operation.operands[0]

  @builtins.property
  def b(self) -> _ods_ir.Value:
    return self.operation.operands[1]

  @builtins.property
  def c(self) -> _ods_ir.Value[_ods_ir.VectorType]:
    return self.operation.operands[2]

  @builtins.property
  def cbsz(self) -> _ods_ir.IntegerAttr:
    return self.operation.attributes["cbsz"]

  @cbsz.setter
  def cbsz(self, value: _ods_ir.IntegerAttr):
    if value is None:
      raise ValueError("'None' not allowed as value for mandatory attributes")
    self.operation.attributes["cbsz"] = value

  @builtins.property
  def abid(self) -> _ods_ir.IntegerAttr:
    return self.operation.attributes["abid"]

  @abid.setter
  def abid(self, value: _ods_ir.IntegerAttr):
    if value is None:
      raise ValueError("'None' not allowed as value for mandatory attributes")
    self.operation.attributes["abid"] = value

  @builtins.property
  def blgp(self) -> _ods_ir.IntegerAttr:
    return self.operation.attributes["blgp"]

  @blgp.setter
  def blgp(self, value: _ods_ir.IntegerAttr):
    if value is None:
      raise ValueError("'None' not allowed as value for mandatory attributes")
    self.operation.attributes["blgp"] = value

  @builtins.property
  def res(self) -> _ods_ir.OpResult[_ods_ir.VectorType]:
    return self.operation.results[0]

@_ods_cext.register_op_adaptor(mfma_i32_16x16x16i8)
class mfma_i32_16x16x16i8Adaptor(_ods_ir.OpAdaptor):
  OPERATION_NAME = "rocdl.mfma.i32.16x16x16i8"

  @builtins.property
  def a(self) -> _ods_ir.Value:
    return self.operands[0]

  @builtins.property
  def b(self) -> _ods_ir.Value:
    return self.operands[1]

  @builtins.property
  def c(self) -> _ods_ir.Value[_ods_ir.VectorType]:
    return self.operands[2]

  @builtins.property
  def cbsz(self) -> _ods_ir.IntegerAttr:
    return self.attributes["cbsz"]

  @builtins.property
  def abid(self) -> _ods_ir.IntegerAttr:
    return self.attributes["abid"]

  @builtins.property
  def blgp(self) -> _ods_ir.IntegerAttr:
    return self.attributes["blgp"]

def mfma_i32_16x16x16i8_(res: _ods_ir.Type, a: _ods_ir.Value, b: _ods_ir.Value, c: _ods_ir.Value[_ods_ir.VectorType], cbsz: _Union[int, _ods_ir.IntegerAttr], abid: _Union[int, _ods_ir.IntegerAttr], blgp: _Union[int, _ods_ir.IntegerAttr], *, loc: _Optional[_ods_ir.Location] = None, ip: _Optional[_ods_ir.InsertionPoint] = None) -> _ods_ir.OpResult[_ods_ir.VectorType]:
  return mfma_i32_16x16x16i8(res=res, a=a, b=b, c=c, cbsz=cbsz, abid=abid, blgp=blgp, loc=loc, ip=ip).result

@_ods_cext.register_operation(_Dialect)
class mfma_i32_16x16x32_i8(_ods_ir.OpView):
  r"""
  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, 0 : (i64, i64, vector<4xi32>) -> vector<4xi32>
  ```
  """

  OPERATION_NAME = "rocdl.mfma.i32.16x16x32.i8"

  _ODS_REGIONS = (0, True)

  def __init__(self, res: _ods_ir.Type, a: _ods_ir.Value, b: _ods_ir.Value, c: _ods_ir.Value[_ods_ir.VectorType], cbsz: _Union[int, _ods_ir.IntegerAttr], abid: _Union[int, _ods_ir.IntegerAttr], blgp: _Union[int, _ods_ir.IntegerAttr], *, loc: _Optional[_ods_ir.Location] = None, ip: _Optional[_ods_ir.InsertionPoint] = None):
    operands = []
    attributes = {}
    regions = None
    operands.append(a)
    operands.append(b)
    operands.append(c)
    _ods_context = _ods_get_default_loc_context(loc)
    attributes["cbsz"] = (cbsz if (
    isinstance(cbsz, _ods_ir.Attribute) or
    not _ods_ir.AttrBuilder.contains('I32Attr')) else
      _ods_ir.AttrBuilder.get('I32Attr')(cbsz, context=_ods_context))
    attributes["abid"] = (abid if (
    isinstance(abid, _ods_ir.Attribute) or
    not _ods_ir.AttrBuilder.contains('I32Attr')) else
      _ods_ir.AttrBuilder.get('I32Attr')(abid, context=_ods_context))
    attributes["blgp"] = (blgp if (
    isinstance(blgp, _ods_ir.Attribute) or
    not _ods_ir.AttrBuilder.contains('I32Attr')) else
      _ods_ir.AttrBuilder.get('I32Attr')(blgp, context=_ods_context))
    results = []
    results.append(res)
    _ods_successors = None
    super().__init__(self.OPERATION_NAME, self._ODS_REGIONS, self._ODS_OPERAND_SEGMENTS, self._ODS_RESULT_SEGMENTS, attributes=attributes, results=results, operands=operands, successors=_ods_successors, regions=regions, loc=loc, ip=ip)

  @builtins.property
  def a(self) -> _ods_ir.Value:
    return self.operation.operands[0]

  @builtins.property
  def b(self) -> _ods_ir.Value:
    return self.operation.operands[1]

  @builtins.property
  def c(self) -> _ods_ir.Value[_ods_ir.VectorType]:
    return self.operation.operands[2]

  @builtins.property
  def cbsz(self) -> _ods_ir.IntegerAttr:
    return self.operation.attributes["cbsz"]

  @cbsz.setter
  def cbsz(self, value: _ods_ir.IntegerAttr):
    if value is None:
      raise ValueError("'None' not allowed as value for mandatory attributes")
    self.operation.attributes["cbsz"] = value

  @builtins.property
  def abid(self) -> _ods_ir.IntegerAttr:
    return self.operation.attributes["abid"]

  @abid.setter
  def abid(self, value: _ods_ir.IntegerAttr):
    if value is None:
      raise ValueError("'None' not allowed as value for mandatory attributes")
    self.operation.attributes["abid"] = value

  @builtins.property
  def blgp(self) -> _ods_ir.IntegerAttr:
    return self.operation.attributes["blgp"]

  @blgp.setter
  def blgp(self, value: _ods_ir.IntegerAttr):
    if value is None:
      raise ValueError("'None' not allowed as value for mandatory attributes")
    self.operation.attributes["blgp"] = value

  @builtins.property
  def res(self) -> _ods_ir.OpResult[_ods_ir.VectorType]:
    return self.operation.results[0]

@_ods_cext.register_op_adaptor(mfma_i32_16x16x32_i8)
class mfma_i32_16x16x32_i8Adaptor(_ods_ir.OpAdaptor):
  OPERATION_NAME = "rocdl.mfma.i32.16x16x32.i8"

  @builtins.property
  def a(self) -> _ods_ir.Value:
    return self.operands[0]

  @builtins.property
  def b(self) -> _ods_ir.Value:
    return self.operands[1]

  @builtins.property
  def c(self) -> _ods_ir.Value[_ods_ir.VectorType]:
    return self.operands[2]

  @builtins.property
  def cbsz(self) -> _ods_ir.IntegerAttr:
    return self.attributes["cbsz"]

  @builtins.property
  def abid(self) -> _ods_ir.IntegerAttr:
    return self.attributes["abid"]

  @builtins.property
  def blgp(self) -> _ods_ir.IntegerAttr:
    return self.attributes["blgp"]

def mfma_i32_16x16x32_i8_(res: _ods_ir.Type, a: _ods_ir.Value, b: _ods_ir.Value, c: _ods_ir.Value[_ods_ir.VectorType], cbsz: _Union[int, _ods_ir.IntegerAttr], abid: _Union[int, _ods_ir.IntegerAttr], blgp: _Union[int, _ods_ir.IntegerAttr], *, loc: _Optional[_ods_ir.Location] = None, ip: _Optional[_ods_ir.InsertionPoint] = None) -> _ods_ir.OpResult[_ods_ir.VectorType]:
  return mfma_i32_16x16x32_i8(res=res, a=a, b=b, c=c, cbsz=cbsz, abid=abid, blgp=blgp, loc=loc, ip=ip).result

@_ods_cext.register_operation(_Dialect)
class mfma_i32_16x16x64_i8(_ods_ir.OpView):
  r"""
  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, 0 : (vector<4xi32>, vector<4xi32>, vector<4xi32>) -> vector<4xi32>
  ```
  """

  OPERATION_NAME = "rocdl.mfma.i32.16x16x64.i8"

  _ODS_REGIONS = (0, True)

  def __init__(self, res: _ods_ir.Type, a: _ods_ir.Value[_ods_ir.VectorType], b: _ods_ir.Value[_ods_ir.VectorType], c: _ods_ir.Value[_ods_ir.VectorType], cbsz: _Union[int, _ods_ir.IntegerAttr], abid: _Union[int, _ods_ir.IntegerAttr], blgp: _Union[int, _ods_ir.IntegerAttr], *, loc: _Optional[_ods_ir.Location] = None, ip: _Optional[_ods_ir.InsertionPoint] = None):
    operands = []
    attributes = {}
    regions = None
    operands.append(a)
    operands.append(b)
    operands.append(c)
    _ods_context = _ods_get_default_loc_context(loc)
    attributes["cbsz"] = (cbsz if (
    isinstance(cbsz, _ods_ir.Attribute) or
    not _ods_ir.AttrBuilder.contains('I32Attr')) else
      _ods_ir.AttrBuilder.get('I32Attr')(cbsz, context=_ods_context))
    attributes["abid"] = (abid if (
    isinstance(abid, _ods_ir.Attribute) or
    not _ods_ir.AttrBuilder.contains('I32Attr')) else
      _ods_ir.AttrBuilder.get('I32Attr')(abid, context=_ods_context))
    attributes["blgp"] = (blgp if (
    isinstance(blgp, _ods_ir.Attribute) or
    not _ods_ir.AttrBuilder.contains('I32Attr')) else
      _ods_ir.AttrBuilder.get('I32Attr')(blgp, context=_ods_context))
    results = []
    results.append(res)
    _ods_successors = None
    super().__init__(self.OPERATION_NAME, self._ODS_REGIONS, self._ODS_OPERAND_SEGMENTS, self._ODS_RESULT_SEGMENTS, attributes=attributes, results=results, operands=operands, successors=_ods_successors, regions=regions, loc=loc, ip=ip)

  @builtins.property
  def a(self) -> _ods_ir.Value[_ods_ir.VectorType]:
    return self.operation.operands[0]

  @builtins.property
  def b(self) -> _ods_ir.Value[_ods_ir.VectorType]:
    return self.operation.operands[1]

  @builtins.property
  def c(self) -> _ods_ir.Value[_ods_ir.VectorType]:
    return self.operation.operands[2]

  @builtins.property
  def cbsz(self) -> _ods_ir.IntegerAttr:
    return self.operation.attributes["cbsz"]

  @cbsz.setter
  def cbsz(self, value: _ods_ir.IntegerAttr):
    if value is None:
      raise ValueError("'None' not allowed as value for mandatory attributes")
    self.operation.attributes["cbsz"] = value

  @builtins.property
  def abid(self) -> _ods_ir.IntegerAttr:
    return self.operation.attributes["abid"]

  @abid.setter
  def abid(self, value: _ods_ir.IntegerAttr):
    if value is None:
      raise ValueError("'None' not allowed as value for mandatory attributes")
    self.operation.attributes["abid"] = value

  @builtins.property
  def blgp(self) -> _ods_ir.IntegerAttr:
    return self.operation.attributes["blgp"]

  @blgp.setter
  def blgp(self, value: _ods_ir.IntegerAttr):
    if value is None:
      raise ValueError("'None' not allowed as value for mandatory attributes")
    self.operation.attributes["blgp"] = value

  @builtins.property
  def res(self) -> _ods_ir.OpResult[_ods_ir.VectorType]:
    return self.operation.results[0]

@_ods_cext.register_op_adaptor(mfma_i32_16x16x64_i8)
class mfma_i32_16x16x64_i8Adaptor(_ods_ir.OpAdaptor):
  OPERATION_NAME = "rocdl.mfma.i32.16x16x64.i8"

  @builtins.property
  def a(self) -> _ods_ir.Value[_ods_ir.VectorType]:
    return self.operands[0]

  @builtins.property
  def b(self) -> _ods_ir.Value[_ods_ir.VectorType]:
    return self.operands[1]

  @builtins.property
  def c(self) -> _ods_ir.Value[_ods_ir.VectorType]:
    return self.operands[2]

  @builtins.property
  def cbsz(self) -> _ods_ir.IntegerAttr:
    return self.attributes["cbsz"]

  @builtins.property
  def abid(self) -> _ods_ir.IntegerAttr:
    return self.attributes["abid"]

  @builtins.property
  def blgp(self) -> _ods_ir.IntegerAttr:
    return self.attributes["blgp"]

def mfma_i32_16x16x64_i8_(res: _ods_ir.Type, a: _ods_ir.Value[_ods_ir.VectorType], b: _ods_ir.Value[_ods_ir.VectorType], c: _ods_ir.Value[_ods_ir.VectorType], cbsz: _Union[int, _ods_ir.IntegerAttr], abid: _Union[int, _ods_ir.IntegerAttr], blgp: _Union[int, _ods_ir.IntegerAttr], *, loc: _Optional[_ods_ir.Location] = None, ip: _Optional[_ods_ir.InsertionPoint] = None) -> _ods_ir.OpResult[_ods_ir.VectorType]:
  return mfma_i32_16x16x64_i8(res=res, a=a, b=b, c=c, cbsz=cbsz, abid=abid, blgp=blgp, loc=loc, ip=ip).result

@_ods_cext.register_operation(_Dialect)
class mfma_i32_32x32x4i8(_ods_ir.OpView):
  r"""
  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, 0 : (i32, i32, vector<32xi32>) -> vector<32xi32>
  ```
  """

  OPERATION_NAME = "rocdl.mfma.i32.32x32x4i8"

  _ODS_REGIONS = (0, True)

  def __init__(self, res: _ods_ir.Type, a: _ods_ir.Value, b: _ods_ir.Value, c: _ods_ir.Value[_ods_ir.VectorType], cbsz: _Union[int, _ods_ir.IntegerAttr], abid: _Union[int, _ods_ir.IntegerAttr], blgp: _Union[int, _ods_ir.IntegerAttr], *, loc: _Optional[_ods_ir.Location] = None, ip: _Optional[_ods_ir.InsertionPoint] = None):
    operands = []
    attributes = {}
    regions = None
    operands.append(a)
    operands.append(b)
    operands.append(c)
    _ods_context = _ods_get_default_loc_context(loc)
    attributes["cbsz"] = (cbsz if (
    isinstance(cbsz, _ods_ir.Attribute) or
    not _ods_ir.AttrBuilder.contains('I32Attr')) else
      _ods_ir.AttrBuilder.get('I32Attr')(cbsz, context=_ods_context))
    attributes["abid"] = (abid if (
    isinstance(abid, _ods_ir.Attribute) or
    not _ods_ir.AttrBuilder.contains('I32Attr')) else
      _ods_ir.AttrBuilder.get('I32Attr')(abid, context=_ods_context))
    attributes["blgp"] = (blgp if (
    isinstance(blgp, _ods_ir.Attribute) or
    not _ods_ir.AttrBuilder.contains('I32Attr')) else
      _ods_ir.AttrBuilder.get('I32Attr')(blgp, context=_ods_context))
    results = []
    results.append(res)
    _ods_successors = None
    super().__init__(self.OPERATION_NAME, self._ODS_REGIONS, self._ODS_OPERAND_SEGMENTS, self._ODS_RESULT_SEGMENTS, attributes=attributes, results=results, operands=operands, successors=_ods_successors, regions=regions, loc=loc, ip=ip)

  @builtins.property
  def a(self) -> _ods_ir.Value:
    return self.operation.operands[0]

  @builtins.property
  def b(self) -> _ods_ir.Value:
    return self.operation.operands[1]

  @builtins.property
  def c(self) -> _ods_ir.Value[_ods_ir.VectorType]:
    return self.operation.operands[2]

  @builtins.property
  def cbsz(self) -> _ods_ir.IntegerAttr:
    return self.operation.attributes["cbsz"]

  @cbsz.setter
  def cbsz(self, value: _ods_ir.IntegerAttr):
    if value is None:
      raise ValueError("'None' not allowed as value for mandatory attributes")
    self.operation.attributes["cbsz"] = value

  @builtins.property
  def abid(self) -> _ods_ir.IntegerAttr:
    return self.operation.attributes["abid"]

  @abid.setter
  def abid(self, value: _ods_ir.IntegerAttr):
    if value is None:
      raise ValueError("'None' not allowed as value for mandatory attributes")
    self.operation.attributes["abid"] = value

  @builtins.property
  def blgp(self) -> _ods_ir.IntegerAttr:
    return self.operation.attributes["blgp"]

  @blgp.setter
  def blgp(self, value: _ods_ir.IntegerAttr):
    if value is None:
      raise ValueError("'None' not allowed as value for mandatory attributes")
    self.operation.attributes["blgp"] = value

  @builtins.property
  def res(self) -> _ods_ir.OpResult[_ods_ir.VectorType]:
    return self.operation.results[0]

@_ods_cext.register_op_adaptor(mfma_i32_32x32x4i8)
class mfma_i32_32x32x4i8Adaptor(_ods_ir.OpAdaptor):
  OPERATION_NAME = "rocdl.mfma.i32.32x32x4i8"

  @builtins.property
  def a(self) -> _ods_ir.Value:
    return self.operands[0]

  @builtins.property
  def b(self) -> _ods_ir.Value:
    return self.operands[1]

  @builtins.property
  def c(self) -> _ods_ir.Value[_ods_ir.VectorType]:
    return self.operands[2]

  @builtins.property
  def cbsz(self) -> _ods_ir.IntegerAttr:
    return self.attributes["cbsz"]

  @builtins.property
  def abid(self) -> _ods_ir.IntegerAttr:
    return self.attributes["abid"]

  @builtins.property
  def blgp(self) -> _ods_ir.IntegerAttr:
    return self.attributes["blgp"]

def mfma_i32_32x32x4i8_(res: _ods_ir.Type, a: _ods_ir.Value, b: _ods_ir.Value, c: _ods_ir.Value[_ods_ir.VectorType], cbsz: _Union[int, _ods_ir.IntegerAttr], abid: _Union[int, _ods_ir.IntegerAttr], blgp: _Union[int, _ods_ir.IntegerAttr], *, loc: _Optional[_ods_ir.Location] = None, ip: _Optional[_ods_ir.InsertionPoint] = None) -> _ods_ir.OpResult[_ods_ir.VectorType]:
  return mfma_i32_32x32x4i8(res=res, a=a, b=b, c=c, cbsz=cbsz, abid=abid, blgp=blgp, loc=loc, ip=ip).result

@_ods_cext.register_operation(_Dialect)
class mfma_i32_32x32x8i8(_ods_ir.OpView):
  r"""
  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, 0 : (i32, i32, vector<16xi32>) -> vector<16xi32>
  ```
  """

  OPERATION_NAME = "rocdl.mfma.i32.32x32x8i8"

  _ODS_REGIONS = (0, True)

  def __init__(self, res: _ods_ir.Type, a: _ods_ir.Value, b: _ods_ir.Value, c: _ods_ir.Value[_ods_ir.VectorType], cbsz: _Union[int, _ods_ir.IntegerAttr], abid: _Union[int, _ods_ir.IntegerAttr], blgp: _Union[int, _ods_ir.IntegerAttr], *, loc: _Optional[_ods_ir.Location] = None, ip: _Optional[_ods_ir.InsertionPoint] = None):
    operands = []
    attributes = {}
    regions = None
    operands.append(a)
    operands.append(b)
    operands.append(c)
    _ods_context = _ods_get_default_loc_context(loc)
    attributes["cbsz"] = (cbsz if (
    isinstance(cbsz, _ods_ir.Attribute) or
    not _ods_ir.AttrBuilder.contains('I32Attr')) else
      _ods_ir.AttrBuilder.get('I32Attr')(cbsz, context=_ods_context))
    attributes["abid"] = (abid if (
    isinstance(abid, _ods_ir.Attribute) or
    not _ods_ir.AttrBuilder.contains('I32Attr')) else
      _ods_ir.AttrBuilder.get('I32Attr')(abid, context=_ods_context))
    attributes["blgp"] = (blgp if (
    isinstance(blgp, _ods_ir.Attribute) or
    not _ods_ir.AttrBuilder.contains('I32Attr')) else
      _ods_ir.AttrBuilder.get('I32Attr')(blgp, context=_ods_context))
    results = []
    results.append(res)
    _ods_successors = None
    super().__init__(self.OPERATION_NAME, self._ODS_REGIONS, self._ODS_OPERAND_SEGMENTS, self._ODS_RESULT_SEGMENTS, attributes=attributes, results=results, operands=operands, successors=_ods_successors, regions=regions, loc=loc, ip=ip)

  @builtins.property
  def a(self) -> _ods_ir.Value:
    return self.operation.operands[0]

  @builtins.property
  def b(self) -> _ods_ir.Value:
    return self.operation.operands[1]

  @builtins.property
  def c(self) -> _ods_ir.Value[_ods_ir.VectorType]:
    return self.operation.operands[2]

  @builtins.property
  def cbsz(self) -> _ods_ir.IntegerAttr:
    return self.operation.attributes["cbsz"]

  @cbsz.setter
  def cbsz(self, value: _ods_ir.IntegerAttr):
    if value is None:
      raise ValueError("'None' not allowed as value for mandatory attributes")
    self.operation.attributes["cbsz"] = value

  @builtins.property
  def abid(self) -> _ods_ir.IntegerAttr:
    return self.operation.attributes["abid"]

  @abid.setter
  def abid(self, value: _ods_ir.IntegerAttr):
    if value is None:
      raise ValueError("'None' not allowed as value for mandatory attributes")
    self.operation.attributes["abid"] = value

  @builtins.property
  def blgp(self) -> _ods_ir.IntegerAttr:
    return self.operation.attributes["blgp"]

  @blgp.setter
  def blgp(self, value: _ods_ir.IntegerAttr):
    if value is None:
      raise ValueError("'None' not allowed as value for mandatory attributes")
    self.operation.attributes["blgp"] = value

  @builtins.property
  def res(self) -> _ods_ir.OpResult[_ods_ir.VectorType]:
    return self.operation.results[0]

@_ods_cext.register_op_adaptor(mfma_i32_32x32x8i8)
class mfma_i32_32x32x8i8Adaptor(_ods_ir.OpAdaptor):
  OPERATION_NAME = "rocdl.mfma.i32.32x32x8i8"

  @builtins.property
  def a(self) -> _ods_ir.Value:
    return self.operands[0]

  @builtins.property
  def b(self) -> _ods_ir.Value:
    return self.operands[1]

  @builtins.property
  def c(self) -> _ods_ir.Value[_ods_ir.VectorType]:
    return self.operands[2]

  @builtins.property
  def cbsz(self) -> _ods_ir.IntegerAttr:
    return self.attributes["cbsz"]

  @builtins.property
  def abid(self) -> _ods_ir.IntegerAttr:
    return self.attributes["abid"]

  @builtins.property
  def blgp(self) -> _ods_ir.IntegerAttr:
    return self.attributes["blgp"]

def mfma_i32_32x32x8i8_(res: _ods_ir.Type, a: _ods_ir.Value, b: _ods_ir.Value, c: _ods_ir.Value[_ods_ir.VectorType], cbsz: _Union[int, _ods_ir.IntegerAttr], abid: _Union[int, _ods_ir.IntegerAttr], blgp: _Union[int, _ods_ir.IntegerAttr], *, loc: _Optional[_ods_ir.Location] = None, ip: _Optional[_ods_ir.InsertionPoint] = None) -> _ods_ir.OpResult[_ods_ir.VectorType]:
  return mfma_i32_32x32x8i8(res=res, a=a, b=b, c=c, cbsz=cbsz, abid=abid, blgp=blgp, loc=loc, ip=ip).result

@_ods_cext.register_operation(_Dialect)
class mfma_i32_32x32x16_i8(_ods_ir.OpView):
  r"""
  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, 0 : (i64, i64, vector<16xi32>) -> vector<16xi32>
  ```
  """

  OPERATION_NAME = "rocdl.mfma.i32.32x32x16.i8"

  _ODS_REGIONS = (0, True)

  def __init__(self, res: _ods_ir.Type, a: _ods_ir.Value, b: _ods_ir.Value, c: _ods_ir.Value[_ods_ir.VectorType], cbsz: _Union[int, _ods_ir.IntegerAttr], abid: _Union[int, _ods_ir.IntegerAttr], blgp: _Union[int, _ods_ir.IntegerAttr], *, loc: _Optional[_ods_ir.Location] = None, ip: _Optional[_ods_ir.InsertionPoint] = None):
    operands = []
    attributes = {}
    regions = None
    operands.append(a)
    operands.append(b)
    operands.append(c)
    _ods_context = _ods_get_default_loc_context(loc)
    attributes["cbsz"] = (cbsz if (
    isinstance(cbsz, _ods_ir.Attribute) or
    not _ods_ir.AttrBuilder.contains('I32Attr')) else
      _ods_ir.AttrBuilder.get('I32Attr')(cbsz, context=_ods_context))
    attributes["abid"] = (abid if (
    isinstance(abid, _ods_ir.Attribute) or
    not _ods_ir.AttrBuilder.contains('I32Attr')) else
      _ods_ir.AttrBuilder.get('I32Attr')(abid, context=_ods_context))
    attributes["blgp"] = (blgp if (
    isinstance(blgp, _ods_ir.Attribute) or
    not _ods_ir.AttrBuilder.contains('I32Attr')) else
      _ods_ir.AttrBuilder.get('I32Attr')(blgp, context=_ods_context))
    results = []
    results.append(res)
    _ods_successors = None
    super().__init__(self.OPERATION_NAME, self._ODS_REGIONS, self._ODS_OPERAND_SEGMENTS, self._ODS_RESULT_SEGMENTS, attributes=attributes, results=results, operands=operands, successors=_ods_successors, regions=regions, loc=loc, ip=ip)

  @builtins.property
  def a(self) -> _ods_ir.Value:
    return self.operation.operands[0]

  @builtins.property
  def b(self) -> _ods_ir.Value:
    return self.operation.operands[1]

  @builtins.property
  def c(self) -> _ods_ir.Value[_ods_ir.VectorType]:
    return self.operation.operands[2]

  @builtins.property
  def cbsz(self) -> _ods_ir.IntegerAttr:
    return self.operation.attributes["cbsz"]

  @cbsz.setter
  def cbsz(self, value: _ods_ir.IntegerAttr):
    if value is None:
      raise ValueError("'None' not allowed as value for mandatory attributes")
    self.operation.attributes["cbsz"] = value

  @builtins.property
  def abid(self) -> _ods_ir.IntegerAttr:
    return self.operation.attributes["abid"]

  @abid.setter
  def abid(self, value: _ods_ir.IntegerAttr):
    if value is None:
      raise ValueError("'None' not allowed as value for mandatory attributes")
    self.operation.attributes["abid"] = value

  @builtins.property
  def blgp(self) -> _ods_ir.IntegerAttr:
    return self.operation.attributes["blgp"]

  @blgp.setter
  def blgp(self, value: _ods_ir.IntegerAttr):
    if value is None:
      raise ValueError("'None' not allowed as value for mandatory attributes")
    self.operation.attributes["blgp"] = value

  @builtins.property
  def res(self) -> _ods_ir.OpResult[_ods_ir.VectorType]:
    return self.operation.results[0]

@_ods_cext.register_op_adaptor(mfma_i32_32x32x16_i8)
class mfma_i32_32x32x16_i8Adaptor(_ods_ir.OpAdaptor):
  OPERATION_NAME = "rocdl.mfma.i32.32x32x16.i8"

  @builtins.property
  def a(self) -> _ods_ir.Value:
    return self.operands[0]

  @builtins.property
  def b(self) -> _ods_ir.Value:
    return self.operands[1]

  @builtins.property
  def c(self) -> _ods_ir.Value[_ods_ir.VectorType]:
    return self.operands[2]

  @builtins.property
  def cbsz(self) -> _ods_ir.IntegerAttr:
    return self.attributes["cbsz"]

  @builtins.property
  def abid(self) -> _ods_ir.IntegerAttr:
    return self.attributes["abid"]

  @builtins.property
  def blgp(self) -> _ods_ir.IntegerAttr:
    return self.attributes["blgp"]

def mfma_i32_32x32x16_i8_(res: _ods_ir.Type, a: _ods_ir.Value, b: _ods_ir.Value, c: _ods_ir.Value[_ods_ir.VectorType], cbsz: _Union[int, _ods_ir.IntegerAttr], abid: _Union[int, _ods_ir.IntegerAttr], blgp: _Union[int, _ods_ir.IntegerAttr], *, loc: _Optional[_ods_ir.Location] = None, ip: _Optional[_ods_ir.InsertionPoint] = None) -> _ods_ir.OpResult[_ods_ir.VectorType]:
  return mfma_i32_32x32x16_i8(res=res, a=a, b=b, c=c, cbsz=cbsz, abid=abid, blgp=blgp, loc=loc, ip=ip).result

@_ods_cext.register_operation(_Dialect)
class mfma_i32_32x32x32_i8(_ods_ir.OpView):
  r"""
  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, 0 : (vector<4xi32>, vector<4xi32>, vector<16xi32>) -> vector<16xi32>
  ```
  """

  OPERATION_NAME = "rocdl.mfma.i32.32x32x32.i8"

  _ODS_REGIONS = (0, True)

  def __init__(self, res: _ods_ir.Type, a: _ods_ir.Value[_ods_ir.VectorType], b: _ods_ir.Value[_ods_ir.VectorType], c: _ods_ir.Value[_ods_ir.VectorType], cbsz: _Union[int, _ods_ir.IntegerAttr], abid: _Union[int, _ods_ir.IntegerAttr], blgp: _Union[int, _ods_ir.IntegerAttr], *, loc: _Optional[_ods_ir.Location] = None, ip: _Optional[_ods_ir.InsertionPoint] = None):
    operands = []
    attributes = {}
    regions = None
    operands.append(a)
    operands.append(b)
    operands.append(c)
    _ods_context = _ods_get_default_loc_context(loc)
    attributes["cbsz"] = (cbsz if (
    isinstance(cbsz, _ods_ir.Attribute) or
    not _ods_ir.AttrBuilder.contains('I32Attr')) else
      _ods_ir.AttrBuilder.get('I32Attr')(cbsz, context=_ods_context))
    attributes["abid"] = (abid if (
    isinstance(abid, _ods_ir.Attribute) or
    not _ods_ir.AttrBuilder.contains('I32Attr')) else
      _ods_ir.AttrBuilder.get('I32Attr')(abid, context=_ods_context))
    attributes["blgp"] = (blgp if (
    isinstance(blgp, _ods_ir.Attribute) or
    not _ods_ir.AttrBuilder.contains('I32Attr')) else
      _ods_ir.AttrBuilder.get('I32Attr')(blgp, context=_ods_context))
    results = []
    results.append(res)
    _ods_successors = None
    super().__init__(self.OPERATION_NAME, self._ODS_REGIONS, self._ODS_OPERAND_SEGMENTS, self._ODS_RESULT_SEGMENTS, attributes=attributes, results=results, operands=operands, successors=_ods_successors, regions=regions, loc=loc, ip=ip)

  @builtins.property
  def a(self) -> _ods_ir.Value[_ods_ir.VectorType]:
    return self.operation.operands[0]

  @builtins.property
  def b(self) -> _ods_ir.Value[_ods_ir.VectorType]:
    return self.operation.operands[1]

  @builtins.property
  def c(self) -> _ods_ir.Value[_ods_ir.VectorType]:
    return self.operation.operands[2]

  @builtins.property
  def cbsz(self) -> _ods_ir.IntegerAttr:
    return self.operation.attributes["cbsz"]

  @cbsz.setter
  def cbsz(self, value: _ods_ir.IntegerAttr):
    if value is None:
      raise ValueError("'None' not allowed as value for mandatory attributes")
    self.operation.attributes["cbsz"] = value

  @builtins.property
  def abid(self) -> _ods_ir.IntegerAttr:
    return self.operation.attributes["abid"]

  @abid.setter
  def abid(self, value: _ods_ir.IntegerAttr):
    if value is None:
      raise ValueError("'None' not allowed as value for mandatory attributes")
    self.operation.attributes["abid"] = value

  @builtins.property
  def blgp(self) -> _ods_ir.IntegerAttr:
    return self.operation.attributes["blgp"]

  @blgp.setter
  def blgp(self, value: _ods_ir.IntegerAttr):
    if value is None:
      raise ValueError("'None' not allowed as value for mandatory attributes")
    self.operation.attributes["blgp"] = value

  @builtins.property
  def res(self) -> _ods_ir.OpResult[_ods_ir.VectorType]:
    return self.operation.results[0]

@_ods_cext.register_op_adaptor(mfma_i32_32x32x32_i8)
class mfma_i32_32x32x32_i8Adaptor(_ods_ir.OpAdaptor):
  OPERATION_NAME = "rocdl.mfma.i32.32x32x32.i8"

  @builtins.property
  def a(self) -> _ods_ir.Value[_ods_ir.VectorType]:
    return self.operands[0]

  @builtins.property
  def b(self) -> _ods_ir.Value[_ods_ir.VectorType]:
    return self.operands[1]

  @builtins.property
  def c(self) -> _ods_ir.Value[_ods_ir.VectorType]:
    return self.operands[2]

  @builtins.property
  def cbsz(self) -> _ods_ir.IntegerAttr:
    return self.attributes["cbsz"]

  @builtins.property
  def abid(self) -> _ods_ir.IntegerAttr:
    return self.attributes["abid"]

  @builtins.property
  def blgp(self) -> _ods_ir.IntegerAttr:
    return self.attributes["blgp"]

def mfma_i32_32x32x32_i8_(res: _ods_ir.Type, a: _ods_ir.Value[_ods_ir.VectorType], b: _ods_ir.Value[_ods_ir.VectorType], c: _ods_ir.Value[_ods_ir.VectorType], cbsz: _Union[int, _ods_ir.IntegerAttr], abid: _Union[int, _ods_ir.IntegerAttr], blgp: _Union[int, _ods_ir.IntegerAttr], *, loc: _Optional[_ods_ir.Location] = None, ip: _Optional[_ods_ir.InsertionPoint] = None) -> _ods_ir.OpResult[_ods_ir.VectorType]:
  return mfma_i32_32x32x32_i8(res=res, a=a, b=b, c=c, cbsz=cbsz, abid=abid, blgp=blgp, loc=loc, ip=ip).result

@_ods_cext.register_operation(_Dialect)
class mfma_scale_f32_16x16x128_f8f6f4(_ods_ir.OpView):
  r"""
  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, 0, 0, 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, 0, 1, 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, 0, 2, 0, %scaleA, 0, %scaleB :
    (vector<8xi32>, vector<6xi32>, vector<16xf32>, i32, i32) -> vector<16xf32>
  ```
  """

  OPERATION_NAME = "rocdl.mfma.scale.f32.16x16x128.f8f6f4"

  _ODS_REGIONS = (0, True)

  def __init__(self, res: _ods_ir.Type, a: _ods_ir.Value[_ods_ir.VectorType], b: _ods_ir.Value[_ods_ir.VectorType], c: _ods_ir.Value[_ods_ir.VectorType], cbsz: _Union[int, _ods_ir.IntegerAttr], blgp: _Union[int, _ods_ir.IntegerAttr], opselA: _Union[int, _ods_ir.IntegerAttr], scaleA: _ods_ir.Value[_ods_ir.IntegerType], opselB: _Union[int, _ods_ir.IntegerAttr], scaleB: _ods_ir.Value[_ods_ir.IntegerType], *, loc: _Optional[_ods_ir.Location] = None, ip: _Optional[_ods_ir.InsertionPoint] = None):
    operands = []
    attributes = {}
    regions = None
    operands.append(a)
    operands.append(b)
    operands.append(c)
    operands.append(scaleA)
    operands.append(scaleB)
    _ods_context = _ods_get_default_loc_context(loc)
    attributes["cbsz"] = (cbsz if (
    isinstance(cbsz, _ods_ir.Attribute) or
    not _ods_ir.AttrBuilder.contains('I32Attr')) else
      _ods_ir.AttrBuilder.get('I32Attr')(cbsz, context=_ods_context))
    attributes["blgp"] = (blgp if (
    isinstance(blgp, _ods_ir.Attribute) or
    not _ods_ir.AttrBuilder.contains('I32Attr')) else
      _ods_ir.AttrBuilder.get('I32Attr')(blgp, context=_ods_context))
    attributes["opselA"] = (opselA if (
    isinstance(opselA, _ods_ir.Attribute) or
    not _ods_ir.AttrBuilder.contains('I32Attr')) else
      _ods_ir.AttrBuilder.get('I32Attr')(opselA, context=_ods_context))
    attributes["opselB"] = (opselB if (
    isinstance(opselB, _ods_ir.Attribute) or
    not _ods_ir.AttrBuilder.contains('I32Attr')) else
      _ods_ir.AttrBuilder.get('I32Attr')(opselB, context=_ods_context))
    results = []
    results.append(res)
    _ods_successors = None
    super().__init__(self.OPERATION_NAME, self._ODS_REGIONS, self._ODS_OPERAND_SEGMENTS, self._ODS_RESULT_SEGMENTS, attributes=attributes, results=results, operands=operands, successors=_ods_successors, regions=regions, loc=loc, ip=ip)

  @builtins.property
  def a(self) -> _ods_ir.Value[_ods_ir.VectorType]:
    return self.operation.operands[0]

  @builtins.property
  def b(self) -> _ods_ir.Value[_ods_ir.VectorType]:
    return self.operation.operands[1]

  @builtins.property
  def c(self) -> _ods_ir.Value[_ods_ir.VectorType]:
    return self.operation.operands[2]

  @builtins.property
  def scaleA(self) -> _ods_ir.Value[_ods_ir.IntegerType]:
    return self.operation.operands[3]

  @builtins.property
  def scaleB(self) -> _ods_ir.Value[_ods_ir.IntegerType]:
    return self.operation.operands[4]

  @builtins.property
  def cbsz(self) -> _ods_ir.IntegerAttr:
    return self.operation.attributes["cbsz"]

  @cbsz.setter
  def cbsz(self, value: _ods_ir.IntegerAttr):
    if value is None:
      raise ValueError("'None' not allowed as value for mandatory attributes")
    self.operation.attributes["cbsz"] = value

  @builtins.property
  def blgp(self) -> _ods_ir.IntegerAttr:
    return self.operation.attributes["blgp"]

  @blgp.setter
  def blgp(self, value: _ods_ir.IntegerAttr):
    if value is None:
      raise ValueError("'None' not allowed as value for mandatory attributes")
    self.operation.attributes["blgp"] = value

  @builtins.property
  def opselA(self) -> _ods_ir.IntegerAttr:
    return self.operation.attributes["opselA"]

  @opselA.setter
  def opselA(self, value: _ods_ir.IntegerAttr):
    if value is None:
      raise ValueError("'None' not allowed as value for mandatory attributes")
    self.operation.attributes["opselA"] = value

  @builtins.property
  def opselB(self) -> _ods_ir.IntegerAttr:
    return self.operation.attributes["opselB"]

  @opselB.setter
  def opselB(self, value: _ods_ir.IntegerAttr):
    if value is None:
      raise ValueError("'None' not allowed as value for mandatory attributes")
    self.operation.attributes["opselB"] = value

  @builtins.property
  def res(self) -> _ods_ir.OpResult:
    return self.operation.results[0]

@_ods_cext.register_op_adaptor(mfma_scale_f32_16x16x128_f8f6f4)
class mfma_scale_f32_16x16x128_f8f6f4Adaptor(_ods_ir.OpAdaptor):
  OPERATION_NAME = "rocdl.mfma.scale.f32.16x16x128.f8f6f4"

  @builtins.property
  def a(self) -> _ods_ir.Value[_ods_ir.VectorType]:
    return self.operands[0]

  @builtins.property
  def b(self) -> _ods_ir.Value[_ods_ir.VectorType]:
    return self.operands[1]

  @builtins.property
  def c(self) -> _ods_ir.Value[_ods_ir.VectorType]:
    return self.operands[2]

  @builtins.property
  def scaleA(self) -> _ods_ir.Value[_ods_ir.IntegerType]:
    return self.operands[3]

  @builtins.property
  def scaleB(self) -> _ods_ir.Value[_ods_ir.IntegerType]:
    return self.operands[4]

  @builtins.property
  def cbsz(self) -> _ods_ir.IntegerAttr:
    return self.attributes["cbsz"]

  @builtins.property
  def blgp(self) -> _ods_ir.IntegerAttr:
    return self.attributes["blgp"]

  @builtins.property
  def opselA(self) -> _ods_ir.IntegerAttr:
    return self.attributes["opselA"]

  @builtins.property
  def opselB(self) -> _ods_ir.IntegerAttr:
    return self.attributes["opselB"]

def mfma_scale_f32_16x16x128_f8f6f4_(res: _ods_ir.Type, a: _ods_ir.Value[_ods_ir.VectorType], b: _ods_ir.Value[_ods_ir.VectorType], c: _ods_ir.Value[_ods_ir.VectorType], cbsz: _Union[int, _ods_ir.IntegerAttr], blgp: _Union[int, _ods_ir.IntegerAttr], opsel_a: _Union[int, _ods_ir.IntegerAttr], scale_a: _ods_ir.Value[_ods_ir.IntegerType], opsel_b: _Union[int, _ods_ir.IntegerAttr], scale_b: _ods_ir.Value[_ods_ir.IntegerType], *, loc: _Optional[_ods_ir.Location] = None, ip: _Optional[_ods_ir.InsertionPoint] = None) -> _ods_ir.OpResult:
  return mfma_scale_f32_16x16x128_f8f6f4(res=res, a=a, b=b, c=c, cbsz=cbsz, blgp=blgp, opselA=opsel_a, scaleA=scale_a, opselB=opsel_b, scaleB=scale_b, loc=loc, ip=ip).result

@_ods_cext.register_operation(_Dialect)
class mfma_scale_f32_32x32x64_f8f6f4(_ods_ir.OpView):
  r"""
  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, 0, 0, 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, 0, 1, 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, 0, 2, 0, %scaleA, 0, %scaleB :
    (vector<8xi32>, vector<6xi32>, vector<16xf32>, i32, i32) -> vector<16xf32>
  ```
  """

  OPERATION_NAME = "rocdl.mfma.scale.f32.32x32x64.f8f6f4"

  _ODS_REGIONS = (0, True)

  def __init__(self, res: _ods_ir.Type, a: _ods_ir.Value[_ods_ir.VectorType], b: _ods_ir.Value[_ods_ir.VectorType], c: _ods_ir.Value[_ods_ir.VectorType], cbsz: _Union[int, _ods_ir.IntegerAttr], blgp: _Union[int, _ods_ir.IntegerAttr], opselA: _Union[int, _ods_ir.IntegerAttr], scaleA: _ods_ir.Value[_ods_ir.IntegerType], opselB: _Union[int, _ods_ir.IntegerAttr], scaleB: _ods_ir.Value[_ods_ir.IntegerType], *, loc: _Optional[_ods_ir.Location] = None, ip: _Optional[_ods_ir.InsertionPoint] = None):
    operands = []
    attributes = {}
    regions = None
    operands.append(a)
    operands.append(b)
    operands.append(c)
    operands.append(scaleA)
    operands.append(scaleB)
    _ods_context = _ods_get_default_loc_context(loc)
    attributes["cbsz"] = (cbsz if (
    isinstance(cbsz, _ods_ir.Attribute) or
    not _ods_ir.AttrBuilder.contains('I32Attr')) else
      _ods_ir.AttrBuilder.get('I32Attr')(cbsz, context=_ods_context))
    attributes["blgp"] = (blgp if (
    isinstance(blgp, _ods_ir.Attribute) or
    not _ods_ir.AttrBuilder.contains('I32Attr')) else
      _ods_ir.AttrBuilder.get('I32Attr')(blgp, context=_ods_context))
    attributes["opselA"] = (opselA if (
    isinstance(opselA, _ods_ir.Attribute) or
    not _ods_ir.AttrBuilder.contains('I32Attr')) else
      _ods_ir.AttrBuilder.get('I32Attr')(opselA, context=_ods_context))
    attributes["opselB"] = (opselB if (
    isinstance(opselB, _ods_ir.Attribute) or
    not _ods_ir.AttrBuilder.contains('I32Attr')) else
      _ods_ir.AttrBuilder.get('I32Attr')(opselB, context=_ods_context))
    results = []
    results.append(res)
    _ods_successors = None
    super().__init__(self.OPERATION_NAME, self._ODS_REGIONS, self._ODS_OPERAND_SEGMENTS, self._ODS_RESULT_SEGMENTS, attributes=attributes, results=results, operands=operands, successors=_ods_successors, regions=regions, loc=loc, ip=ip)

  @builtins.property
  def a(self) -> _ods_ir.Value[_ods_ir.VectorType]:
    return self.operation.operands[0]

  @builtins.property
  def b(self) -> _ods_ir.Value[_ods_ir.VectorType]:
    return self.operation.operands[1]

  @builtins.property
  def c(self) -> _ods_ir.Value[_ods_ir.VectorType]:
    return self.operation.operands[2]

  @builtins.property
  def scaleA(self) -> _ods_ir.Value[_ods_ir.IntegerType]:
    return self.operation.operands[3]

  @builtins.property
  def scaleB(self) -> _ods_ir.Value[_ods_ir.IntegerType]:
    return self.operation.operands[4]

  @builtins.property
  def cbsz(self) -> _ods_ir.IntegerAttr:
    return self.operation.attributes["cbsz"]

  @cbsz.setter
  def cbsz(self, value: _ods_ir.IntegerAttr):
    if value is None:
      raise ValueError("'None' not allowed as value for mandatory attributes")
    self.operation.attributes["cbsz"] = value

  @builtins.property
  def blgp(self) -> _ods_ir.IntegerAttr:
    return self.operation.attributes["blgp"]

  @blgp.setter
  def blgp(self, value: _ods_ir.IntegerAttr):
    if value is None:
      raise ValueError("'None' not allowed as value for mandatory attributes")
    self.operation.attributes["blgp"] = value

  @builtins.property
  def opselA(self) -> _ods_ir.IntegerAttr:
    return self.operation.attributes["opselA"]

  @opselA.setter
  def opselA(self, value: _ods_ir.IntegerAttr):
    if value is None:
      raise ValueError("'None' not allowed as value for mandatory attributes")
    self.operation.attributes["opselA"] = value

  @builtins.property
  def opselB(self) -> _ods_ir.IntegerAttr:
    return self.operation.attributes["opselB"]

  @opselB.setter
  def opselB(self, value: _ods_ir.IntegerAttr):
    if value is None:
      raise ValueError("'None' not allowed as value for mandatory attributes")
    self.operation.attributes["opselB"] = value

  @builtins.property
  def res(self) -> _ods_ir.OpResult:
    return self.operation.results[0]

@_ods_cext.register_op_adaptor(mfma_scale_f32_32x32x64_f8f6f4)
class mfma_scale_f32_32x32x64_f8f6f4Adaptor(_ods_ir.OpAdaptor):
  OPERATION_NAME = "rocdl.mfma.scale.f32.32x32x64.f8f6f4"

  @builtins.property
  def a(self) -> _ods_ir.Value[_ods_ir.VectorType]:
    return self.operands[0]

  @builtins.property
  def b(self) -> _ods_ir.Value[_ods_ir.VectorType]:
    return self.operands[1]

  @builtins.property
  def c(self) -> _ods_ir.Value[_ods_ir.VectorType]:
    return self.operands[2]

  @builtins.property
  def scaleA(self) -> _ods_ir.Value[_ods_ir.IntegerType]:
    return self.operands[3]

  @builtins.property
  def scaleB(self) -> _ods_ir.Value[_ods_ir.IntegerType]:
    return self.operands[4]

  @builtins.property
  def cbsz(self) -> _ods_ir.IntegerAttr:
    return self.attributes["cbsz"]

  @builtins.property
  def blgp(self) -> _ods_ir.IntegerAttr:
    return self.attributes["blgp"]

  @builtins.property
  def opselA(self) -> _ods_ir.IntegerAttr:
    return self.attributes["opselA"]

  @builtins.property
  def opselB(self) -> _ods_ir.IntegerAttr:
    return self.attributes["opselB"]

def mfma_scale_f32_32x32x64_f8f6f4_(res: _ods_ir.Type, a: _ods_ir.Value[_ods_ir.VectorType], b: _ods_ir.Value[_ods_ir.VectorType], c: _ods_ir.Value[_ods_ir.VectorType], cbsz: _Union[int, _ods_ir.IntegerAttr], blgp: _Union[int, _ods_ir.IntegerAttr], opsel_a: _Union[int, _ods_ir.IntegerAttr], scale_a: _ods_ir.Value[_ods_ir.IntegerType], opsel_b: _Union[int, _ods_ir.IntegerAttr], scale_b: _ods_ir.Value[_ods_ir.IntegerType], *, loc: _Optional[_ods_ir.Location] = None, ip: _Optional[_ods_ir.InsertionPoint] = None) -> _ods_ir.OpResult:
  return mfma_scale_f32_32x32x64_f8f6f4(res=res, a=a, b=b, c=c, cbsz=cbsz, blgp=blgp, opselA=opsel_a, scaleA=scale_a, opselB=opsel_b, scaleB=scale_b, loc=loc, ip=ip).result

@_ods_cext.register_operation(_Dialect)
class sdot2(_ods_ir.OpView):
  r"""
  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
  ```
  """

  OPERATION_NAME = "rocdl.sdot2"

  _ODS_REGIONS = (0, True)

  def __init__(self, res: _ods_ir.Type, a: _ods_ir.Value[_ods_ir.VectorType], b: _ods_ir.Value[_ods_ir.VectorType], c: _ods_ir.Value, *, clamp: _Optional[_Union[bool, _ods_ir.BoolAttr]] = None, loc: _Optional[_ods_ir.Location] = None, ip: _Optional[_ods_ir.InsertionPoint] = None):
    operands = []
    attributes = {}
    regions = None
    operands.append(a)
    operands.append(b)
    operands.append(c)
    _ods_context = _ods_get_default_loc_context(loc)
    if clamp is not None: attributes["clamp"] = (clamp if (
        isinstance(clamp, _ods_ir.Attribute) or
        not _ods_ir.AttrBuilder.contains('I1Attr')) else
          _ods_ir.AttrBuilder.get('I1Attr')(clamp, context=_ods_context))
    results = []
    results.append(res)
    _ods_successors = None
    super().__init__(self.OPERATION_NAME, self._ODS_REGIONS, self._ODS_OPERAND_SEGMENTS, self._ODS_RESULT_SEGMENTS, attributes=attributes, results=results, operands=operands, successors=_ods_successors, regions=regions, loc=loc, ip=ip)

  @builtins.property
  def a(self) -> _ods_ir.Value[_ods_ir.VectorType]:
    return self.operation.operands[0]

  @builtins.property
  def b(self) -> _ods_ir.Value[_ods_ir.VectorType]:
    return self.operation.operands[1]

  @builtins.property
  def c(self) -> _ods_ir.Value:
    return self.operation.operands[2]

  @builtins.property
  def clamp(self) -> _ods_ir.BoolAttr:
    return self.operation.attributes["clamp"]

  @clamp.setter
  def clamp(self, value: _ods_ir.BoolAttr):
    if value is None:
      raise ValueError("'None' not allowed as value for mandatory attributes")
    self.operation.attributes["clamp"] = value

  @builtins.property
  def res(self) -> _ods_ir.OpResult:
    return self.operation.results[0]

@_ods_cext.register_op_adaptor(sdot2)
class sdot2Adaptor(_ods_ir.OpAdaptor):
  OPERATION_NAME = "rocdl.sdot2"

  @builtins.property
  def a(self) -> _ods_ir.Value[_ods_ir.VectorType]:
    return self.operands[0]

  @builtins.property
  def b(self) -> _ods_ir.Value[_ods_ir.VectorType]:
    return self.operands[1]

  @builtins.property
  def c(self) -> _ods_ir.Value:
    return self.operands[2]

  @builtins.property
  def clamp(self) -> _ods_ir.BoolAttr:
    return self.attributes["clamp"]

def sdot2_(res: _ods_ir.Type, a: _ods_ir.Value[_ods_ir.VectorType], b: _ods_ir.Value[_ods_ir.VectorType], c: _ods_ir.Value, *, clamp: _Optional[_Union[bool, _ods_ir.BoolAttr]] = None, loc: _Optional[_ods_ir.Location] = None, ip: _Optional[_ods_ir.InsertionPoint] = None) -> _ods_ir.OpResult:
  return sdot2(res=res, a=a, b=b, c=c, clamp=clamp, loc=loc, ip=ip).result

@_ods_cext.register_operation(_Dialect)
class sdot4(_ods_ir.OpView):
  r"""
  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
  ```
  """

  OPERATION_NAME = "rocdl.sdot4"

  _ODS_REGIONS = (0, True)

  def __init__(self, res: _ods_ir.Type, a: _ods_ir.Value, b: _ods_ir.Value, c: _ods_ir.Value, *, clamp: _Optional[_Union[bool, _ods_ir.BoolAttr]] = None, loc: _Optional[_ods_ir.Location] = None, ip: _Optional[_ods_ir.InsertionPoint] = None):
    operands = []
    attributes = {}
    regions = None
    operands.append(a)
    operands.append(b)
    operands.append(c)
    _ods_context = _ods_get_default_loc_context(loc)
    if clamp is not None: attributes["clamp"] = (clamp if (
        isinstance(clamp, _ods_ir.Attribute) or
        not _ods_ir.AttrBuilder.contains('I1Attr')) else
          _ods_ir.AttrBuilder.get('I1Attr')(clamp, context=_ods_context))
    results = []
    results.append(res)
    _ods_successors = None
    super().__init__(self.OPERATION_NAME, self._ODS_REGIONS, self._ODS_OPERAND_SEGMENTS, self._ODS_RESULT_SEGMENTS, attributes=attributes, results=results, operands=operands, successors=_ods_successors, regions=regions, loc=loc, ip=ip)

  @builtins.property
  def a(self) -> _ods_ir.Value:
    return self.operation.operands[0]

  @builtins.property
  def b(self) -> _ods_ir.Value:
    return self.operation.operands[1]

  @builtins.property
  def c(self) -> _ods_ir.Value:
    return self.operation.operands[2]

  @builtins.property
  def clamp(self) -> _ods_ir.BoolAttr:
    return self.operation.attributes["clamp"]

  @clamp.setter
  def clamp(self, value: _ods_ir.BoolAttr):
    if value is None:
      raise ValueError("'None' not allowed as value for mandatory attributes")
    self.operation.attributes["clamp"] = value

  @builtins.property
  def res(self) -> _ods_ir.OpResult:
    return self.operation.results[0]

@_ods_cext.register_op_adaptor(sdot4)
class sdot4Adaptor(_ods_ir.OpAdaptor):
  OPERATION_NAME = "rocdl.sdot4"

  @builtins.property
  def a(self) -> _ods_ir.Value:
    return self.operands[0]

  @builtins.property
  def b(self) -> _ods_ir.Value:
    return self.operands[1]

  @builtins.property
  def c(self) -> _ods_ir.Value:
    return self.operands[2]

  @builtins.property
  def clamp(self) -> _ods_ir.BoolAttr:
    return self.attributes["clamp"]

def sdot4_(res: _ods_ir.Type, a: _ods_ir.Value, b: _ods_ir.Value, c: _ods_ir.Value, *, clamp: _Optional[_Union[bool, _ods_ir.BoolAttr]] = None, loc: _Optional[_ods_ir.Location] = None, ip: _Optional[_ods_ir.InsertionPoint] = None) -> _ods_ir.OpResult:
  return sdot4(res=res, a=a, b=b, c=c, clamp=clamp, loc=loc, ip=ip).result

@_ods_cext.register_operation(_Dialect)
class sdot8(_ods_ir.OpView):
  r"""
  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
  ```
  """

  OPERATION_NAME = "rocdl.sdot8"

  _ODS_REGIONS = (0, True)

  def __init__(self, res: _ods_ir.Type, a: _ods_ir.Value, b: _ods_ir.Value, c: _ods_ir.Value, *, clamp: _Optional[_Union[bool, _ods_ir.BoolAttr]] = None, loc: _Optional[_ods_ir.Location] = None, ip: _Optional[_ods_ir.InsertionPoint] = None):
    operands = []
    attributes = {}
    regions = None
    operands.append(a)
    operands.append(b)
    operands.append(c)
    _ods_context = _ods_get_default_loc_context(loc)
    if clamp is not None: attributes["clamp"] = (clamp if (
        isinstance(clamp, _ods_ir.Attribute) or
        not _ods_ir.AttrBuilder.contains('I1Attr')) else
          _ods_ir.AttrBuilder.get('I1Attr')(clamp, context=_ods_context))
    results = []
    results.append(res)
    _ods_successors = None
    super().__init__(self.OPERATION_NAME, self._ODS_REGIONS, self._ODS_OPERAND_SEGMENTS, self._ODS_RESULT_SEGMENTS, attributes=attributes, results=results, operands=operands, successors=_ods_successors, regions=regions, loc=loc, ip=ip)

  @builtins.property
  def a(self) -> _ods_ir.Value:
    return self.operation.operands[0]

  @builtins.property
  def b(self) -> _ods_ir.Value:
    return self.operation.operands[1]

  @builtins.property
  def c(self) -> _ods_ir.Value:
    return self.operation.operands[2]

  @builtins.property
  def clamp(self) -> _ods_ir.BoolAttr:
    return self.operation.attributes["clamp"]

  @clamp.setter
  def clamp(self, value: _ods_ir.BoolAttr):
    if value is None:
      raise ValueError("'None' not allowed as value for mandatory attributes")
    self.operation.attributes["clamp"] = value

  @builtins.property
  def res(self) -> _ods_ir.OpResult:
    return self.operation.results[0]

@_ods_cext.register_op_adaptor(sdot8)
class sdot8Adaptor(_ods_ir.OpAdaptor):
  OPERATION_NAME = "rocdl.sdot8"

  @builtins.property
  def a(self) -> _ods_ir.Value:
    return self.operands[0]

  @builtins.property
  def b(self) -> _ods_ir.Value:
    return self.operands[1]

  @builtins.property
  def c(self) -> _ods_ir.Value:
    return self.operands[2]

  @builtins.property
  def clamp(self) -> _ods_ir.BoolAttr:
    return self.attributes["clamp"]

def sdot8_(res: _ods_ir.Type, a: _ods_ir.Value, b: _ods_ir.Value, c: _ods_ir.Value, *, clamp: _Optional[_Union[bool, _ods_ir.BoolAttr]] = None, loc: _Optional[_ods_ir.Location] = None, ip: _Optional[_ods_ir.InsertionPoint] = None) -> _ods_ir.OpResult:
  return sdot8(res=res, a=a, b=b, c=c, clamp=clamp, loc=loc, ip=ip).result

@_ods_cext.register_operation(_Dialect)
class smfmac_f32_16x16x32_bf16(_ods_ir.OpView):
  r"""
  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>
  ```
  """

  OPERATION_NAME = "rocdl.smfmac.f32.16x16x32.bf16"

  _ODS_REGIONS = (0, True)

  def __init__(self, res: _ods_ir.Type, a: _ods_ir.Value[_ods_ir.VectorType], b: _ods_ir.Value[_ods_ir.VectorType], c: _ods_ir.Value[_ods_ir.VectorType], index: _ods_ir.Value[_ods_ir.IntegerType], cbsz: _Union[int, _ods_ir.IntegerAttr], abid: _Union[int, _ods_ir.IntegerAttr], *, loc: _Optional[_ods_ir.Location] = None, ip: _Optional[_ods_ir.InsertionPoint] = None):
    operands = []
    attributes = {}
    regions = None
    operands.append(a)
    operands.append(b)
    operands.append(c)
    operands.append(index)
    _ods_context = _ods_get_default_loc_context(loc)
    attributes["cbsz"] = (cbsz if (
    isinstance(cbsz, _ods_ir.Attribute) or
    not _ods_ir.AttrBuilder.contains('I32Attr')) else
      _ods_ir.AttrBuilder.get('I32Attr')(cbsz, context=_ods_context))
    attributes["abid"] = (abid if (
    isinstance(abid, _ods_ir.Attribute) or
    not _ods_ir.AttrBuilder.contains('I32Attr')) else
      _ods_ir.AttrBuilder.get('I32Attr')(abid, context=_ods_context))
    results = []
    results.append(res)
    _ods_successors = None
    super().__init__(self.OPERATION_NAME, self._ODS_REGIONS, self._ODS_OPERAND_SEGMENTS, self._ODS_RESULT_SEGMENTS, attributes=attributes, results=results, operands=operands, successors=_ods_successors, regions=regions, loc=loc, ip=ip)

  @builtins.property
  def a(self) -> _ods_ir.Value[_ods_ir.VectorType]:
    return self.operation.operands[0]

  @builtins.property
  def b(self) -> _ods_ir.Value[_ods_ir.VectorType]:
    return self.operation.operands[1]

  @builtins.property
  def c(self) -> _ods_ir.Value[_ods_ir.VectorType]:
    return self.operation.operands[2]

  @builtins.property
  def index(self) -> _ods_ir.Value[_ods_ir.IntegerType]:
    return self.operation.operands[3]

  @builtins.property
  def cbsz(self) -> _ods_ir.IntegerAttr:
    return self.operation.attributes["cbsz"]

  @cbsz.setter
  def cbsz(self, value: _ods_ir.IntegerAttr):
    if value is None:
      raise ValueError("'None' not allowed as value for mandatory attributes")
    self.operation.attributes["cbsz"] = value

  @builtins.property
  def abid(self) -> _ods_ir.IntegerAttr:
    return self.operation.attributes["abid"]

  @abid.setter
  def abid(self, value: _ods_ir.IntegerAttr):
    if value is None:
      raise ValueError("'None' not allowed as value for mandatory attributes")
    self.operation.attributes["abid"] = value

  @builtins.property
  def res(self) -> _ods_ir.OpResult[_ods_ir.VectorType]:
    return self.operation.results[0]

@_ods_cext.register_op_adaptor(smfmac_f32_16x16x32_bf16)
class smfmac_f32_16x16x32_bf16Adaptor(_ods_ir.OpAdaptor):
  OPERATION_NAME = "rocdl.smfmac.f32.16x16x32.bf16"

  @builtins.property
  def a(self) -> _ods_ir.Value[_ods_ir.VectorType]:
    return self.operands[0]

  @builtins.property
  def b(self) -> _ods_ir.Value[_ods_ir.VectorType]:
    return self.operands[1]

  @builtins.property
  def c(self) -> _ods_ir.Value[_ods_ir.VectorType]:
    return self.operands[2]

  @builtins.property
  def index(self) -> _ods_ir.Value[_ods_ir.IntegerType]:
    return self.operands[3]

  @builtins.property
  def cbsz(self) -> _ods_ir.IntegerAttr:
    return self.attributes["cbsz"]

  @builtins.property
  def abid(self) -> _ods_ir.IntegerAttr:
    return self.attributes["abid"]

def smfmac_f32_16x16x32_bf16_(res: _ods_ir.Type, a: _ods_ir.Value[_ods_ir.VectorType], b: _ods_ir.Value[_ods_ir.VectorType], c: _ods_ir.Value[_ods_ir.VectorType], index: _ods_ir.Value[_ods_ir.IntegerType], cbsz: _Union[int, _ods_ir.IntegerAttr], abid: _Union[int, _ods_ir.IntegerAttr], *, loc: _Optional[_ods_ir.Location] = None, ip: _Optional[_ods_ir.InsertionPoint] = None) -> _ods_ir.OpResult[_ods_ir.VectorType]:
  return smfmac_f32_16x16x32_bf16(res=res, a=a, b=b, c=c, index=index, cbsz=cbsz, abid=abid, loc=loc, ip=ip).result

@_ods_cext.register_operation(_Dialect)
class smfmac_f32_16x16x32_f16(_ods_ir.OpView):
  r"""
  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>
  ```
  """

  OPERATION_NAME = "rocdl.smfmac.f32.16x16x32.f16"

  _ODS_REGIONS = (0, True)

  def __init__(self, res: _ods_ir.Type, a: _ods_ir.Value[_ods_ir.VectorType], b: _ods_ir.Value[_ods_ir.VectorType], c: _ods_ir.Value[_ods_ir.VectorType], index: _ods_ir.Value[_ods_ir.IntegerType], cbsz: _Union[int, _ods_ir.IntegerAttr], abid: _Union[int, _ods_ir.IntegerAttr], *, loc: _Optional[_ods_ir.Location] = None, ip: _Optional[_ods_ir.InsertionPoint] = None):
    operands = []
    attributes = {}
    regions = None
    operands.append(a)
    operands.append(b)
    operands.append(c)
    operands.append(index)
    _ods_context = _ods_get_default_loc_context(loc)
    attributes["cbsz"] = (cbsz if (
    isinstance(cbsz, _ods_ir.Attribute) or
    not _ods_ir.AttrBuilder.contains('I32Attr')) else
      _ods_ir.AttrBuilder.get('I32Attr')(cbsz, context=_ods_context))
    attributes["abid"] = (abid if (
    isinstance(abid, _ods_ir.Attribute) or
    not _ods_ir.AttrBuilder.contains('I32Attr')) else
      _ods_ir.AttrBuilder.get('I32Attr')(abid, context=_ods_context))
    results = []
    results.append(res)
    _ods_successors = None
    super().__init__(self.OPERATION_NAME, self._ODS_REGIONS, self._ODS_OPERAND_SEGMENTS, self._ODS_RESULT_SEGMENTS, attributes=attributes, results=results, operands=operands, successors=_ods_successors, regions=regions, loc=loc, ip=ip)

  @builtins.property
  def a(self) -> _ods_ir.Value[_ods_ir.VectorType]:
    return self.operation.operands[0]

  @builtins.property
  def b(self) -> _ods_ir.Value[_ods_ir.VectorType]:
    return self.operation.operands[1]

  @builtins.property
  def c(self) -> _ods_ir.Value[_ods_ir.VectorType]:
    return self.operation.operands[2]

  @builtins.property
  def index(self) -> _ods_ir.Value[_ods_ir.IntegerType]:
    return self.operation.operands[3]

  @builtins.property
  def cbsz(self) -> _ods_ir.IntegerAttr:
    return self.operation.attributes["cbsz"]

  @cbsz.setter
  def cbsz(self, value: _ods_ir.IntegerAttr):
    if value is None:
      raise ValueError("'None' not allowed as value for mandatory attributes")
    self.operation.attributes["cbsz"] = value

  @builtins.property
  def abid(self) -> _ods_ir.IntegerAttr:
    return self.operation.attributes["abid"]

  @abid.setter
  def abid(self, value: _ods_ir.IntegerAttr):
    if value is None:
      raise ValueError("'None' not allowed as value for mandatory attributes")
    self.operation.attributes["abid"] = value

  @builtins.property
  def res(self) -> _ods_ir.OpResult[_ods_ir.VectorType]:
    return self.operation.results[0]

@_ods_cext.register_op_adaptor(smfmac_f32_16x16x32_f16)
class smfmac_f32_16x16x32_f16Adaptor(_ods_ir.OpAdaptor):
  OPERATION_NAME = "rocdl.smfmac.f32.16x16x32.f16"

  @builtins.property
  def a(self) -> _ods_ir.Value[_ods_ir.VectorType]:
    return self.operands[0]

  @builtins.property
  def b(self) -> _ods_ir.Value[_ods_ir.VectorType]:
    return self.operands[1]

  @builtins.property
  def c(self) -> _ods_ir.Value[_ods_ir.VectorType]:
    return self.operands[2]

  @builtins.property
  def index(self) -> _ods_ir.Value[_ods_ir.IntegerType]:
    return self.operands[3]

  @builtins.property
  def cbsz(self) -> _ods_ir.IntegerAttr:
    return self.attributes["cbsz"]

  @builtins.property
  def abid(self) -> _ods_ir.IntegerAttr:
    return self.attributes["abid"]

def smfmac_f32_16x16x32_f16_(res: _ods_ir.Type, a: _ods_ir.Value[_ods_ir.VectorType], b: _ods_ir.Value[_ods_ir.VectorType], c: _ods_ir.Value[_ods_ir.VectorType], index: _ods_ir.Value[_ods_ir.IntegerType], cbsz: _Union[int, _ods_ir.IntegerAttr], abid: _Union[int, _ods_ir.IntegerAttr], *, loc: _Optional[_ods_ir.Location] = None, ip: _Optional[_ods_ir.InsertionPoint] = None) -> _ods_ir.OpResult[_ods_ir.VectorType]:
  return smfmac_f32_16x16x32_f16(res=res, a=a, b=b, c=c, index=index, cbsz=cbsz, abid=abid, loc=loc, ip=ip).result

@_ods_cext.register_operation(_Dialect)
class smfmac_f32_16x16x64_bf8_bf8(_ods_ir.OpView):
  r"""
  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>
  ```
  """

  OPERATION_NAME = "rocdl.smfmac.f32.16x16x64.bf8.bf8"

  _ODS_REGIONS = (0, True)

  def __init__(self, res: _ods_ir.Type, a: _ods_ir.Value[_ods_ir.VectorType], b: _ods_ir.Value[_ods_ir.VectorType], c: _ods_ir.Value[_ods_ir.VectorType], index: _ods_ir.Value[_ods_ir.IntegerType], cbsz: _Union[int, _ods_ir.IntegerAttr], abid: _Union[int, _ods_ir.IntegerAttr], *, loc: _Optional[_ods_ir.Location] = None, ip: _Optional[_ods_ir.InsertionPoint] = None):
    operands = []
    attributes = {}
    regions = None
    operands.append(a)
    operands.append(b)
    operands.append(c)
    operands.append(index)
    _ods_context = _ods_get_default_loc_context(loc)
    attributes["cbsz"] = (cbsz if (
    isinstance(cbsz, _ods_ir.Attribute) or
    not _ods_ir.AttrBuilder.contains('I32Attr')) else
      _ods_ir.AttrBuilder.get('I32Attr')(cbsz, context=_ods_context))
    attributes["abid"] = (abid if (
    isinstance(abid, _ods_ir.Attribute) or
    not _ods_ir.AttrBuilder.contains('I32Attr')) else
      _ods_ir.AttrBuilder.get('I32Attr')(abid, context=_ods_context))
    results = []
    results.append(res)
    _ods_successors = None
    super().__init__(self.OPERATION_NAME, self._ODS_REGIONS, self._ODS_OPERAND_SEGMENTS, self._ODS_RESULT_SEGMENTS, attributes=attributes, results=results, operands=operands, successors=_ods_successors, regions=regions, loc=loc, ip=ip)

  @builtins.property
  def a(self) -> _ods_ir.Value[_ods_ir.VectorType]:
    return self.operation.operands[0]

  @builtins.property
  def b(self) -> _ods_ir.Value[_ods_ir.VectorType]:
    return self.operation.operands[1]

  @builtins.property
  def c(self) -> _ods_ir.Value[_ods_ir.VectorType]:
    return self.operation.operands[2]

  @builtins.property
  def index(self) -> _ods_ir.Value[_ods_ir.IntegerType]:
    return self.operation.operands[3]

  @builtins.property
  def cbsz(self) -> _ods_ir.IntegerAttr:
    return self.operation.attributes["cbsz"]

  @cbsz.setter
  def cbsz(self, value: _ods_ir.IntegerAttr):
    if value is None:
      raise ValueError("'None' not allowed as value for mandatory attributes")
    self.operation.attributes["cbsz"] = value

  @builtins.property
  def abid(self) -> _ods_ir.IntegerAttr:
    return self.operation.attributes["abid"]

  @abid.setter
  def abid(self, value: _ods_ir.IntegerAttr):
    if value is None:
      raise ValueError("'None' not allowed as value for mandatory attributes")
    self.operation.attributes["abid"] = value

  @builtins.property
  def res(self) -> _ods_ir.OpResult[_ods_ir.VectorType]:
    return self.operation.results[0]

@_ods_cext.register_op_adaptor(smfmac_f32_16x16x64_bf8_bf8)
class smfmac_f32_16x16x64_bf8_bf8Adaptor(_ods_ir.OpAdaptor):
  OPERATION_NAME = "rocdl.smfmac.f32.16x16x64.bf8.bf8"

  @builtins.property
  def a(self) -> _ods_ir.Value[_ods_ir.VectorType]:
    return self.operands[0]

  @builtins.property
  def b(self) -> _ods_ir.Value[_ods_ir.VectorType]:
    return self.operands[1]

  @builtins.property
  def c(self) -> _ods_ir.Value[_ods_ir.VectorType]:
    return self.operands[2]

  @builtins.property
  def index(self) -> _ods_ir.Value[_ods_ir.IntegerType]:
    return self.operands[3]

  @builtins.property
  def cbsz(self) -> _ods_ir.IntegerAttr:
    return self.attributes["cbsz"]

  @builtins.property
  def abid(self) -> _ods_ir.IntegerAttr:
    return self.attributes["abid"]

def smfmac_f32_16x16x64_bf8_bf8_(res: _ods_ir.Type, a: _ods_ir.Value[_ods_ir.VectorType], b: _ods_ir.Value[_ods_ir.VectorType], c: _ods_ir.Value[_ods_ir.VectorType], index: _ods_ir.Value[_ods_ir.IntegerType], cbsz: _Union[int, _ods_ir.IntegerAttr], abid: _Union[int, _ods_ir.IntegerAttr], *, loc: _Optional[_ods_ir.Location] = None, ip: _Optional[_ods_ir.InsertionPoint] = None) -> _ods_ir.OpResult[_ods_ir.VectorType]:
  return smfmac_f32_16x16x64_bf8_bf8(res=res, a=a, b=b, c=c, index=index, cbsz=cbsz, abid=abid, loc=loc, ip=ip).result

@_ods_cext.register_operation(_Dialect)
class smfmac_f32_16x16x64_bf8_fp8(_ods_ir.OpView):
  r"""
  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>
  ```
  """

  OPERATION_NAME = "rocdl.smfmac.f32.16x16x64.bf8.fp8"

  _ODS_REGIONS = (0, True)

  def __init__(self, res: _ods_ir.Type, a: _ods_ir.Value[_ods_ir.VectorType], b: _ods_ir.Value[_ods_ir.VectorType], c: _ods_ir.Value[_ods_ir.VectorType], index: _ods_ir.Value[_ods_ir.IntegerType], cbsz: _Union[int, _ods_ir.IntegerAttr], abid: _Union[int, _ods_ir.IntegerAttr], *, loc: _Optional[_ods_ir.Location] = None, ip: _Optional[_ods_ir.InsertionPoint] = None):
    operands = []
    attributes = {}
    regions = None
    operands.append(a)
    operands.append(b)
    operands.append(c)
    operands.append(index)
    _ods_context = _ods_get_default_loc_context(loc)
    attributes["cbsz"] = (cbsz if (
    isinstance(cbsz, _ods_ir.Attribute) or
    not _ods_ir.AttrBuilder.contains('I32Attr')) else
      _ods_ir.AttrBuilder.get('I32Attr')(cbsz, context=_ods_context))
    attributes["abid"] = (abid if (
    isinstance(abid, _ods_ir.Attribute) or
    not _ods_ir.AttrBuilder.contains('I32Attr')) else
      _ods_ir.AttrBuilder.get('I32Attr')(abid, context=_ods_context))
    results = []
    results.append(res)
    _ods_successors = None
    super().__init__(self.OPERATION_NAME, self._ODS_REGIONS, self._ODS_OPERAND_SEGMENTS, self._ODS_RESULT_SEGMENTS, attributes=attributes, results=results, operands=operands, successors=_ods_successors, regions=regions, loc=loc, ip=ip)

  @builtins.property
  def a(self) -> _ods_ir.Value[_ods_ir.VectorType]:
    return self.operation.operands[0]

  @builtins.property
  def b(self) -> _ods_ir.Value[_ods_ir.VectorType]:
    return self.operation.operands[1]

  @builtins.property
  def c(self) -> _ods_ir.Value[_ods_ir.VectorType]:
    return self.operation.operands[2]

  @builtins.property
  def index(self) -> _ods_ir.Value[_ods_ir.IntegerType]:
    return self.operation.operands[3]

  @builtins.property
  def cbsz(self) -> _ods_ir.IntegerAttr:
    return self.operation.attributes["cbsz"]

  @cbsz.setter
  def cbsz(self, value: _ods_ir.IntegerAttr):
    if value is None:
      raise ValueError("'None' not allowed as value for mandatory attributes")
    self.operation.attributes["cbsz"] = value

  @builtins.property
  def abid(self) -> _ods_ir.IntegerAttr:
    return self.operation.attributes["abid"]

  @abid.setter
  def abid(self, value: _ods_ir.IntegerAttr):
    if value is None:
      raise ValueError("'None' not allowed as value for mandatory attributes")
    self.operation.attributes["abid"] = value

  @builtins.property
  def res(self) -> _ods_ir.OpResult[_ods_ir.VectorType]:
    return self.operation.results[0]

@_ods_cext.register_op_adaptor(smfmac_f32_16x16x64_bf8_fp8)
class smfmac_f32_16x16x64_bf8_fp8Adaptor(_ods_ir.OpAdaptor):
  OPERATION_NAME = "rocdl.smfmac.f32.16x16x64.bf8.fp8"

  @builtins.property
  def a(self) -> _ods_ir.Value[_ods_ir.VectorType]:
    return self.operands[0]

  @builtins.property
  def b(self) -> _ods_ir.Value[_ods_ir.VectorType]:
    return self.operands[1]

  @builtins.property
  def c(self) -> _ods_ir.Value[_ods_ir.VectorType]:
    return self.operands[2]

  @builtins.property
  def index(self) -> _ods_ir.Value[_ods_ir.IntegerType]:
    return self.operands[3]

  @builtins.property
  def cbsz(self) -> _ods_ir.IntegerAttr:
    return self.attributes["cbsz"]

  @builtins.property
  def abid(self) -> _ods_ir.IntegerAttr:
    return self.attributes["abid"]

def smfmac_f32_16x16x64_bf8_fp8_(res: _ods_ir.Type, a: _ods_ir.Value[_ods_ir.VectorType], b: _ods_ir.Value[_ods_ir.VectorType], c: _ods_ir.Value[_ods_ir.VectorType], index: _ods_ir.Value[_ods_ir.IntegerType], cbsz: _Union[int, _ods_ir.IntegerAttr], abid: _Union[int, _ods_ir.IntegerAttr], *, loc: _Optional[_ods_ir.Location] = None, ip: _Optional[_ods_ir.InsertionPoint] = None) -> _ods_ir.OpResult[_ods_ir.VectorType]:
  return smfmac_f32_16x16x64_bf8_fp8(res=res, a=a, b=b, c=c, index=index, cbsz=cbsz, abid=abid, loc=loc, ip=ip).result

@_ods_cext.register_operation(_Dialect)
class smfmac_f32_16x16x64_bf16(_ods_ir.OpView):
  r"""
  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>
  ```
  """

  OPERATION_NAME = "rocdl.smfmac.f32.16x16x64.bf16"

  _ODS_REGIONS = (0, True)

  def __init__(self, res: _ods_ir.Type, a: _ods_ir.Value[_ods_ir.VectorType], b: _ods_ir.Value[_ods_ir.VectorType], c: _ods_ir.Value[_ods_ir.VectorType], index: _ods_ir.Value[_ods_ir.IntegerType], cbsz: _Union[int, _ods_ir.IntegerAttr], abid: _Union[int, _ods_ir.IntegerAttr], *, loc: _Optional[_ods_ir.Location] = None, ip: _Optional[_ods_ir.InsertionPoint] = None):
    operands = []
    attributes = {}
    regions = None
    operands.append(a)
    operands.append(b)
    operands.append(c)
    operands.append(index)
    _ods_context = _ods_get_default_loc_context(loc)
    attributes["cbsz"] = (cbsz if (
    isinstance(cbsz, _ods_ir.Attribute) or
    not _ods_ir.AttrBuilder.contains('I32Attr')) else
      _ods_ir.AttrBuilder.get('I32Attr')(cbsz, context=_ods_context))
    attributes["abid"] = (abid if (
    isinstance(abid, _ods_ir.Attribute) or
    not _ods_ir.AttrBuilder.contains('I32Attr')) else
      _ods_ir.AttrBuilder.get('I32Attr')(abid, context=_ods_context))
    results = []
    results.append(res)
    _ods_successors = None
    super().__init__(self.OPERATION_NAME, self._ODS_REGIONS, self._ODS_OPERAND_SEGMENTS, self._ODS_RESULT_SEGMENTS, attributes=attributes, results=results, operands=operands, successors=_ods_successors, regions=regions, loc=loc, ip=ip)

  @builtins.property
  def a(self) -> _ods_ir.Value[_ods_ir.VectorType]:
    return self.operation.operands[0]

  @builtins.property
  def b(self) -> _ods_ir.Value[_ods_ir.VectorType]:
    return self.operation.operands[1]

  @builtins.property
  def c(self) -> _ods_ir.Value[_ods_ir.VectorType]:
    return self.operation.operands[2]

  @builtins.property
  def index(self) -> _ods_ir.Value[_ods_ir.IntegerType]:
    return self.operation.operands[3]

  @builtins.property
  def cbsz(self) -> _ods_ir.IntegerAttr:
    return self.operation.attributes["cbsz"]

  @cbsz.setter
  def cbsz(self, value: _ods_ir.IntegerAttr):
    if value is None:
      raise ValueError("'None' not allowed as value for mandatory attributes")
    self.operation.attributes["cbsz"] = value

  @builtins.property
  def abid(self) -> _ods_ir.IntegerAttr:
    return self.operation.attributes["abid"]

  @abid.setter
  def abid(self, value: _ods_ir.IntegerAttr):
    if value is None:
      raise ValueError("'None' not allowed as value for mandatory attributes")
    self.operation.attributes["abid"] = value

  @builtins.property
  def res(self) -> _ods_ir.OpResult[_ods_ir.VectorType]:
    return self.operation.results[0]

@_ods_cext.register_op_adaptor(smfmac_f32_16x16x64_bf16)
class smfmac_f32_16x16x64_bf16Adaptor(_ods_ir.OpAdaptor):
  OPERATION_NAME = "rocdl.smfmac.f32.16x16x64.bf16"

  @builtins.property
  def a(self) -> _ods_ir.Value[_ods_ir.VectorType]:
    return self.operands[0]

  @builtins.property
  def b(self) -> _ods_ir.Value[_ods_ir.VectorType]:
    return self.operands[1]

  @builtins.property
  def c(self) -> _ods_ir.Value[_ods_ir.VectorType]:
    return self.operands[2]

  @builtins.property
  def index(self) -> _ods_ir.Value[_ods_ir.IntegerType]:
    return self.operands[3]

  @builtins.property
  def cbsz(self) -> _ods_ir.IntegerAttr:
    return self.attributes["cbsz"]

  @builtins.property
  def abid(self) -> _ods_ir.IntegerAttr:
    return self.attributes["abid"]

def smfmac_f32_16x16x64_bf16_(res: _ods_ir.Type, a: _ods_ir.Value[_ods_ir.VectorType], b: _ods_ir.Value[_ods_ir.VectorType], c: _ods_ir.Value[_ods_ir.VectorType], index: _ods_ir.Value[_ods_ir.IntegerType], cbsz: _Union[int, _ods_ir.IntegerAttr], abid: _Union[int, _ods_ir.IntegerAttr], *, loc: _Optional[_ods_ir.Location] = None, ip: _Optional[_ods_ir.InsertionPoint] = None) -> _ods_ir.OpResult[_ods_ir.VectorType]:
  return smfmac_f32_16x16x64_bf16(res=res, a=a, b=b, c=c, index=index, cbsz=cbsz, abid=abid, loc=loc, ip=ip).result

@_ods_cext.register_operation(_Dialect)
class smfmac_f32_16x16x64_f16(_ods_ir.OpView):
  r"""
  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>
  ```
  """

  OPERATION_NAME = "rocdl.smfmac.f32.16x16x64.f16"

  _ODS_REGIONS = (0, True)

  def __init__(self, res: _ods_ir.Type, a: _ods_ir.Value[_ods_ir.VectorType], b: _ods_ir.Value[_ods_ir.VectorType], c: _ods_ir.Value[_ods_ir.VectorType], index: _ods_ir.Value[_ods_ir.IntegerType], cbsz: _Union[int, _ods_ir.IntegerAttr], abid: _Union[int, _ods_ir.IntegerAttr], *, loc: _Optional[_ods_ir.Location] = None, ip: _Optional[_ods_ir.InsertionPoint] = None):
    operands = []
    attributes = {}
    regions = None
    operands.append(a)
    operands.append(b)
    operands.append(c)
    operands.append(index)
    _ods_context = _ods_get_default_loc_context(loc)
    attributes["cbsz"] = (cbsz if (
    isinstance(cbsz, _ods_ir.Attribute) or
    not _ods_ir.AttrBuilder.contains('I32Attr')) else
      _ods_ir.AttrBuilder.get('I32Attr')(cbsz, context=_ods_context))
    attributes["abid"] = (abid if (
    isinstance(abid, _ods_ir.Attribute) or
    not _ods_ir.AttrBuilder.contains('I32Attr')) else
      _ods_ir.AttrBuilder.get('I32Attr')(abid, context=_ods_context))
    results = []
    results.append(res)
    _ods_successors = None
    super().__init__(self.OPERATION_NAME, self._ODS_REGIONS, self._ODS_OPERAND_SEGMENTS, self._ODS_RESULT_SEGMENTS, attributes=attributes, results=results, operands=operands, successors=_ods_successors, regions=regions, loc=loc, ip=ip)

  @builtins.property
  def a(self) -> _ods_ir.Value[_ods_ir.VectorType]:
    return self.operation.operands[0]

  @builtins.property
  def b(self) -> _ods_ir.Value[_ods_ir.VectorType]:
    return self.operation.operands[1]

  @builtins.property
  def c(self) -> _ods_ir.Value[_ods_ir.VectorType]:
    return self.operation.operands[2]

  @builtins.property
  def index(self) -> _ods_ir.Value[_ods_ir.IntegerType]:
    return self.operation.operands[3]

  @builtins.property
  def cbsz(self) -> _ods_ir.IntegerAttr:
    return self.operation.attributes["cbsz"]

  @cbsz.setter
  def cbsz(self, value: _ods_ir.IntegerAttr):
    if value is None:
      raise ValueError("'None' not allowed as value for mandatory attributes")
    self.operation.attributes["cbsz"] = value

  @builtins.property
  def abid(self) -> _ods_ir.IntegerAttr:
    return self.operation.attributes["abid"]

  @abid.setter
  def abid(self, value: _ods_ir.IntegerAttr):
    if value is None:
      raise ValueError("'None' not allowed as value for mandatory attributes")
    self.operation.attributes["abid"] = value

  @builtins.property
  def res(self) -> _ods_ir.OpResult[_ods_ir.VectorType]:
    return self.operation.results[0]

@_ods_cext.register_op_adaptor(smfmac_f32_16x16x64_f16)
class smfmac_f32_16x16x64_f16Adaptor(_ods_ir.OpAdaptor):
  OPERATION_NAME = "rocdl.smfmac.f32.16x16x64.f16"

  @builtins.property
  def a(self) -> _ods_ir.Value[_ods_ir.VectorType]:
    return self.operands[0]

  @builtins.property
  def b(self) -> _ods_ir.Value[_ods_ir.VectorType]:
    return self.operands[1]

  @builtins.property
  def c(self) -> _ods_ir.Value[_ods_ir.VectorType]:
    return self.operands[2]

  @builtins.property
  def index(self) -> _ods_ir.Value[_ods_ir.IntegerType]:
    return self.operands[3]

  @builtins.property
  def cbsz(self) -> _ods_ir.IntegerAttr:
    return self.attributes["cbsz"]

  @builtins.property
  def abid(self) -> _ods_ir.IntegerAttr:
    return self.attributes["abid"]

def smfmac_f32_16x16x64_f16_(res: _ods_ir.Type, a: _ods_ir.Value[_ods_ir.VectorType], b: _ods_ir.Value[_ods_ir.VectorType], c: _ods_ir.Value[_ods_ir.VectorType], index: _ods_ir.Value[_ods_ir.IntegerType], cbsz: _Union[int, _ods_ir.IntegerAttr], abid: _Union[int, _ods_ir.IntegerAttr], *, loc: _Optional[_ods_ir.Location] = None, ip: _Optional[_ods_ir.InsertionPoint] = None) -> _ods_ir.OpResult[_ods_ir.VectorType]:
  return smfmac_f32_16x16x64_f16(res=res, a=a, b=b, c=c, index=index, cbsz=cbsz, abid=abid, loc=loc, ip=ip).result

@_ods_cext.register_operation(_Dialect)
class smfmac_f32_16x16x64_fp8_bf8(_ods_ir.OpView):
  r"""
  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>
  ```
  """

  OPERATION_NAME = "rocdl.smfmac.f32.16x16x64.fp8.bf8"

  _ODS_REGIONS = (0, True)

  def __init__(self, res: _ods_ir.Type, a: _ods_ir.Value[_ods_ir.VectorType], b: _ods_ir.Value[_ods_ir.VectorType], c: _ods_ir.Value[_ods_ir.VectorType], index: _ods_ir.Value[_ods_ir.IntegerType], cbsz: _Union[int, _ods_ir.IntegerAttr], abid: _Union[int, _ods_ir.IntegerAttr], *, loc: _Optional[_ods_ir.Location] = None, ip: _Optional[_ods_ir.InsertionPoint] = None):
    operands = []
    attributes = {}
    regions = None
    operands.append(a)
    operands.append(b)
    operands.append(c)
    operands.append(index)
    _ods_context = _ods_get_default_loc_context(loc)
    attributes["cbsz"] = (cbsz if (
    isinstance(cbsz, _ods_ir.Attribute) or
    not _ods_ir.AttrBuilder.contains('I32Attr')) else
      _ods_ir.AttrBuilder.get('I32Attr')(cbsz, context=_ods_context))
    attributes["abid"] = (abid if (
    isinstance(abid, _ods_ir.Attribute) or
    not _ods_ir.AttrBuilder.contains('I32Attr')) else
      _ods_ir.AttrBuilder.get('I32Attr')(abid, context=_ods_context))
    results = []
    results.append(res)
    _ods_successors = None
    super().__init__(self.OPERATION_NAME, self._ODS_REGIONS, self._ODS_OPERAND_SEGMENTS, self._ODS_RESULT_SEGMENTS, attributes=attributes, results=results, operands=operands, successors=_ods_successors, regions=regions, loc=loc, ip=ip)

  @builtins.property
  def a(self) -> _ods_ir.Value[_ods_ir.VectorType]:
    return self.operation.operands[0]

  @builtins.property
  def b(self) -> _ods_ir.Value[_ods_ir.VectorType]:
    return self.operation.operands[1]

  @builtins.property
  def c(self) -> _ods_ir.Value[_ods_ir.VectorType]:
    return self.operation.operands[2]

  @builtins.property
  def index(self) -> _ods_ir.Value[_ods_ir.IntegerType]:
    return self.operation.operands[3]

  @builtins.property
  def cbsz(self) -> _ods_ir.IntegerAttr:
    return self.operation.attributes["cbsz"]

  @cbsz.setter
  def cbsz(self, value: _ods_ir.IntegerAttr):
    if value is None:
      raise ValueError("'None' not allowed as value for mandatory attributes")
    self.operation.attributes["cbsz"] = value

  @builtins.property
  def abid(self) -> _ods_ir.IntegerAttr:
    return self.operation.attributes["abid"]

  @abid.setter
  def abid(self, value: _ods_ir.IntegerAttr):
    if value is None:
      raise ValueError("'None' not allowed as value for mandatory attributes")
    self.operation.attributes["abid"] = value

  @builtins.property
  def res(self) -> _ods_ir.OpResult[_ods_ir.VectorType]:
    return self.operation.results[0]

@_ods_cext.register_op_adaptor(smfmac_f32_16x16x64_fp8_bf8)
class smfmac_f32_16x16x64_fp8_bf8Adaptor(_ods_ir.OpAdaptor):
  OPERATION_NAME = "rocdl.smfmac.f32.16x16x64.fp8.bf8"

  @builtins.property
  def a(self) -> _ods_ir.Value[_ods_ir.VectorType]:
    return self.operands[0]

  @builtins.property
  def b(self) -> _ods_ir.Value[_ods_ir.VectorType]:
    return self.operands[1]

  @builtins.property
  def c(self) -> _ods_ir.Value[_ods_ir.VectorType]:
    return self.operands[2]

  @builtins.property
  def index(self) -> _ods_ir.Value[_ods_ir.IntegerType]:
    return self.operands[3]

  @builtins.property
  def cbsz(self) -> _ods_ir.IntegerAttr:
    return self.attributes["cbsz"]

  @builtins.property
  def abid(self) -> _ods_ir.IntegerAttr:
    return self.attributes["abid"]

def smfmac_f32_16x16x64_fp8_bf8_(res: _ods_ir.Type, a: _ods_ir.Value[_ods_ir.VectorType], b: _ods_ir.Value[_ods_ir.VectorType], c: _ods_ir.Value[_ods_ir.VectorType], index: _ods_ir.Value[_ods_ir.IntegerType], cbsz: _Union[int, _ods_ir.IntegerAttr], abid: _Union[int, _ods_ir.IntegerAttr], *, loc: _Optional[_ods_ir.Location] = None, ip: _Optional[_ods_ir.InsertionPoint] = None) -> _ods_ir.OpResult[_ods_ir.VectorType]:
  return smfmac_f32_16x16x64_fp8_bf8(res=res, a=a, b=b, c=c, index=index, cbsz=cbsz, abid=abid, loc=loc, ip=ip).result

@_ods_cext.register_operation(_Dialect)
class smfmac_f32_16x16x64_fp8_fp8(_ods_ir.OpView):
  r"""
  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>
  ```
  """

  OPERATION_NAME = "rocdl.smfmac.f32.16x16x64.fp8.fp8"

  _ODS_REGIONS = (0, True)

  def __init__(self, res: _ods_ir.Type, a: _ods_ir.Value[_ods_ir.VectorType], b: _ods_ir.Value[_ods_ir.VectorType], c: _ods_ir.Value[_ods_ir.VectorType], index: _ods_ir.Value[_ods_ir.IntegerType], cbsz: _Union[int, _ods_ir.IntegerAttr], abid: _Union[int, _ods_ir.IntegerAttr], *, loc: _Optional[_ods_ir.Location] = None, ip: _Optional[_ods_ir.InsertionPoint] = None):
    operands = []
    attributes = {}
    regions = None
    operands.append(a)
    operands.append(b)
    operands.append(c)
    operands.append(index)
    _ods_context = _ods_get_default_loc_context(loc)
    attributes["cbsz"] = (cbsz if (
    isinstance(cbsz, _ods_ir.Attribute) or
    not _ods_ir.AttrBuilder.contains('I32Attr')) else
      _ods_ir.AttrBuilder.get('I32Attr')(cbsz, context=_ods_context))
    attributes["abid"] = (abid if (
    isinstance(abid, _ods_ir.Attribute) or
    not _ods_ir.AttrBuilder.contains('I32Attr')) else
      _ods_ir.AttrBuilder.get('I32Attr')(abid, context=_ods_context))
    results = []
    results.append(res)
    _ods_successors = None
    super().__init__(self.OPERATION_NAME, self._ODS_REGIONS, self._ODS_OPERAND_SEGMENTS, self._ODS_RESULT_SEGMENTS, attributes=attributes, results=results, operands=operands, successors=_ods_successors, regions=regions, loc=loc, ip=ip)

  @builtins.property
  def a(self) -> _ods_ir.Value[_ods_ir.VectorType]:
    return self.operation.operands[0]

  @builtins.property
  def b(self) -> _ods_ir.Value[_ods_ir.VectorType]:
    return self.operation.operands[1]

  @builtins.property
  def c(self) -> _ods_ir.Value[_ods_ir.VectorType]:
    return self.operation.operands[2]

  @builtins.property
  def index(self) -> _ods_ir.Value[_ods_ir.IntegerType]:
    return self.operation.operands[3]

  @builtins.property
  def cbsz(self) -> _ods_ir.IntegerAttr:
    return self.operation.attributes["cbsz"]

  @cbsz.setter
  def cbsz(self, value: _ods_ir.IntegerAttr):
    if value is None:
      raise ValueError("'None' not allowed as value for mandatory attributes")
    self.operation.attributes["cbsz"] = value

  @builtins.property
  def abid(self) -> _ods_ir.IntegerAttr:
    return self.operation.attributes["abid"]

  @abid.setter
  def abid(self, value: _ods_ir.IntegerAttr):
    if value is None:
      raise ValueError("'None' not allowed as value for mandatory attributes")
    self.operation.attributes["abid"] = value

  @builtins.property
  def res(self) -> _ods_ir.OpResult[_ods_ir.VectorType]:
    return self.operation.results[0]

@_ods_cext.register_op_adaptor(smfmac_f32_16x16x64_fp8_fp8)
class smfmac_f32_16x16x64_fp8_fp8Adaptor(_ods_ir.OpAdaptor):
  OPERATION_NAME = "rocdl.smfmac.f32.16x16x64.fp8.fp8"

  @builtins.property
  def a(self) -> _ods_ir.Value[_ods_ir.VectorType]:
    return self.operands[0]

  @builtins.property
  def b(self) -> _ods_ir.Value[_ods_ir.VectorType]:
    return self.operands[1]

  @builtins.property
  def c(self) -> _ods_ir.Value[_ods_ir.VectorType]:
    return self.operands[2]

  @builtins.property
  def index(self) -> _ods_ir.Value[_ods_ir.IntegerType]:
    return self.operands[3]

  @builtins.property
  def cbsz(self) -> _ods_ir.IntegerAttr:
    return self.attributes["cbsz"]

  @builtins.property
  def abid(self) -> _ods_ir.IntegerAttr:
    return self.attributes["abid"]

def smfmac_f32_16x16x64_fp8_fp8_(res: _ods_ir.Type, a: _ods_ir.Value[_ods_ir.VectorType], b: _ods_ir.Value[_ods_ir.VectorType], c: _ods_ir.Value[_ods_ir.VectorType], index: _ods_ir.Value[_ods_ir.IntegerType], cbsz: _Union[int, _ods_ir.IntegerAttr], abid: _Union[int, _ods_ir.IntegerAttr], *, loc: _Optional[_ods_ir.Location] = None, ip: _Optional[_ods_ir.InsertionPoint] = None) -> _ods_ir.OpResult[_ods_ir.VectorType]:
  return smfmac_f32_16x16x64_fp8_fp8(res=res, a=a, b=b, c=c, index=index, cbsz=cbsz, abid=abid, loc=loc, ip=ip).result

@_ods_cext.register_operation(_Dialect)
class smfmac_f32_16x16x128_bf8_bf8(_ods_ir.OpView):
  r"""
  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>
  ```
  """

  OPERATION_NAME = "rocdl.smfmac.f32.16x16x128.bf8.bf8"

  _ODS_REGIONS = (0, True)

  def __init__(self, res: _ods_ir.Type, a: _ods_ir.Value[_ods_ir.VectorType], b: _ods_ir.Value[_ods_ir.VectorType], c: _ods_ir.Value[_ods_ir.VectorType], index: _ods_ir.Value[_ods_ir.IntegerType], cbsz: _Union[int, _ods_ir.IntegerAttr], abid: _Union[int, _ods_ir.IntegerAttr], *, loc: _Optional[_ods_ir.Location] = None, ip: _Optional[_ods_ir.InsertionPoint] = None):
    operands = []
    attributes = {}
    regions = None
    operands.append(a)
    operands.append(b)
    operands.append(c)
    operands.append(index)
    _ods_context = _ods_get_default_loc_context(loc)
    attributes["cbsz"] = (cbsz if (
    isinstance(cbsz, _ods_ir.Attribute) or
    not _ods_ir.AttrBuilder.contains('I32Attr')) else
      _ods_ir.AttrBuilder.get('I32Attr')(cbsz, context=_ods_context))
    attributes["abid"] = (abid if (
    isinstance(abid, _ods_ir.Attribute) or
    not _ods_ir.AttrBuilder.contains('I32Attr')) else
      _ods_ir.AttrBuilder.get('I32Attr')(abid, context=_ods_context))
    results = []
    results.append(res)
    _ods_successors = None
    super().__init__(self.OPERATION_NAME, self._ODS_REGIONS, self._ODS_OPERAND_SEGMENTS, self._ODS_RESULT_SEGMENTS, attributes=attributes, results=results, operands=operands, successors=_ods_successors, regions=regions, loc=loc, ip=ip)

  @builtins.property
  def a(self) -> _ods_ir.Value[_ods_ir.VectorType]:
    return self.operation.operands[0]

  @builtins.property
  def b(self) -> _ods_ir.Value[_ods_ir.VectorType]:
    return self.operation.operands[1]

  @builtins.property
  def c(self) -> _ods_ir.Value[_ods_ir.VectorType]:
    return self.operation.operands[2]

  @builtins.property
  def index(self) -> _ods_ir.Value[_ods_ir.IntegerType]:
    return self.operation.operands[3]

  @builtins.property
  def cbsz(self) -> _ods_ir.IntegerAttr:
    return self.operation.attributes["cbsz"]

  @cbsz.setter
  def cbsz(self, value: _ods_ir.IntegerAttr):
    if value is None:
      raise ValueError("'None' not allowed as value for mandatory attributes")
    self.operation.attributes["cbsz"] = value

  @builtins.property
  def abid(self) -> _ods_ir.IntegerAttr:
    return self.operation.attributes["abid"]

  @abid.setter
  def abid(self, value: _ods_ir.IntegerAttr):
    if value is None:
      raise ValueError("'None' not allowed as value for mandatory attributes")
    self.operation.attributes["abid"] = value

  @builtins.property
  def res(self) -> _ods_ir.OpResult[_ods_ir.VectorType]:
    return self.operation.results[0]

@_ods_cext.register_op_adaptor(smfmac_f32_16x16x128_bf8_bf8)
class smfmac_f32_16x16x128_bf8_bf8Adaptor(_ods_ir.OpAdaptor):
  OPERATION_NAME = "rocdl.smfmac.f32.16x16x128.bf8.bf8"

  @builtins.property
  def a(self) -> _ods_ir.Value[_ods_ir.VectorType]:
    return self.operands[0]

  @builtins.property
  def b(self) -> _ods_ir.Value[_ods_ir.VectorType]:
    return self.operands[1]

  @builtins.property
  def c(self) -> _ods_ir.Value[_ods_ir.VectorType]:
    return self.operands[2]

  @builtins.property
  def index(self) -> _ods_ir.Value[_ods_ir.IntegerType]:
    return self.operands[3]

  @builtins.property
  def cbsz(self) -> _ods_ir.IntegerAttr:
    return self.attributes["cbsz"]

  @builtins.property
  def abid(self) -> _ods_ir.IntegerAttr:
    return self.attributes["abid"]

def smfmac_f32_16x16x128_bf8_bf8_(res: _ods_ir.Type, a: _ods_ir.Value[_ods_ir.VectorType], b: _ods_ir.Value[_ods_ir.VectorType], c: _ods_ir.Value[_ods_ir.VectorType], index: _ods_ir.Value[_ods_ir.IntegerType], cbsz: _Union[int, _ods_ir.IntegerAttr], abid: _Union[int, _ods_ir.IntegerAttr], *, loc: _Optional[_ods_ir.Location] = None, ip: _Optional[_ods_ir.InsertionPoint] = None) -> _ods_ir.OpResult[_ods_ir.VectorType]:
  return smfmac_f32_16x16x128_bf8_bf8(res=res, a=a, b=b, c=c, index=index, cbsz=cbsz, abid=abid, loc=loc, ip=ip).result

@_ods_cext.register_operation(_Dialect)
class smfmac_f32_16x16x128_bf8_fp8(_ods_ir.OpView):
  r"""
  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>
  ```
  """

  OPERATION_NAME = "rocdl.smfmac.f32.16x16x128.bf8.fp8"

  _ODS_REGIONS = (0, True)

  def __init__(self, res: _ods_ir.Type, a: _ods_ir.Value[_ods_ir.VectorType], b: _ods_ir.Value[_ods_ir.VectorType], c: _ods_ir.Value[_ods_ir.VectorType], index: _ods_ir.Value[_ods_ir.IntegerType], cbsz: _Union[int, _ods_ir.IntegerAttr], abid: _Union[int, _ods_ir.IntegerAttr], *, loc: _Optional[_ods_ir.Location] = None, ip: _Optional[_ods_ir.InsertionPoint] = None):
    operands = []
    attributes = {}
    regions = None
    operands.append(a)
    operands.append(b)
    operands.append(c)
    operands.append(index)
    _ods_context = _ods_get_default_loc_context(loc)
    attributes["cbsz"] = (cbsz if (
    isinstance(cbsz, _ods_ir.Attribute) or
    not _ods_ir.AttrBuilder.contains('I32Attr')) else
      _ods_ir.AttrBuilder.get('I32Attr')(cbsz, context=_ods_context))
    attributes["abid"] = (abid if (
    isinstance(abid, _ods_ir.Attribute) or
    not _ods_ir.AttrBuilder.contains('I32Attr')) else
      _ods_ir.AttrBuilder.get('I32Attr')(abid, context=_ods_context))
    results = []
    results.append(res)
    _ods_successors = None
    super().__init__(self.OPERATION_NAME, self._ODS_REGIONS, self._ODS_OPERAND_SEGMENTS, self._ODS_RESULT_SEGMENTS, attributes=attributes, results=results, operands=operands, successors=_ods_successors, regions=regions, loc=loc, ip=ip)

  @builtins.property
  def a(self) -> _ods_ir.Value[_ods_ir.VectorType]:
    return self.operation.operands[0]

  @builtins.property
  def b(self) -> _ods_ir.Value[_ods_ir.VectorType]:
    return self.operation.operands[1]

  @builtins.property
  def c(self) -> _ods_ir.Value[_ods_ir.VectorType]:
    return self.operation.operands[2]

  @builtins.property
  def index(self) -> _ods_ir.Value[_ods_ir.IntegerType]:
    return self.operation.operands[3]

  @builtins.property
  def cbsz(self) -> _ods_ir.IntegerAttr:
    return self.operation.attributes["cbsz"]

  @cbsz.setter
  def cbsz(self, value: _ods_ir.IntegerAttr):
    if value is None:
      raise ValueError("'None' not allowed as value for mandatory attributes")
    self.operation.attributes["cbsz"] = value

  @builtins.property
  def abid(self) -> _ods_ir.IntegerAttr:
    return self.operation.attributes["abid"]

  @abid.setter
  def abid(self, value: _ods_ir.IntegerAttr):
    if value is None:
      raise ValueError("'None' not allowed as value for mandatory attributes")
    self.operation.attributes["abid"] = value

  @builtins.property
  def res(self) -> _ods_ir.OpResult[_ods_ir.VectorType]:
    return self.operation.results[0]

@_ods_cext.register_op_adaptor(smfmac_f32_16x16x128_bf8_fp8)
class smfmac_f32_16x16x128_bf8_fp8Adaptor(_ods_ir.OpAdaptor):
  OPERATION_NAME = "rocdl.smfmac.f32.16x16x128.bf8.fp8"

  @builtins.property
  def a(self) -> _ods_ir.Value[_ods_ir.VectorType]:
    return self.operands[0]

  @builtins.property
  def b(self) -> _ods_ir.Value[_ods_ir.VectorType]:
    return self.operands[1]

  @builtins.property
  def c(self) -> _ods_ir.Value[_ods_ir.VectorType]:
    return self.operands[2]

  @builtins.property
  def index(self) -> _ods_ir.Value[_ods_ir.IntegerType]:
    return self.operands[3]

  @builtins.property
  def cbsz(self) -> _ods_ir.IntegerAttr:
    return self.attributes["cbsz"]

  @builtins.property
  def abid(self) -> _ods_ir.IntegerAttr:
    return self.attributes["abid"]

def smfmac_f32_16x16x128_bf8_fp8_(res: _ods_ir.Type, a: _ods_ir.Value[_ods_ir.VectorType], b: _ods_ir.Value[_ods_ir.VectorType], c: _ods_ir.Value[_ods_ir.VectorType], index: _ods_ir.Value[_ods_ir.IntegerType], cbsz: _Union[int, _ods_ir.IntegerAttr], abid: _Union[int, _ods_ir.IntegerAttr], *, loc: _Optional[_ods_ir.Location] = None, ip: _Optional[_ods_ir.InsertionPoint] = None) -> _ods_ir.OpResult[_ods_ir.VectorType]:
  return smfmac_f32_16x16x128_bf8_fp8(res=res, a=a, b=b, c=c, index=index, cbsz=cbsz, abid=abid, loc=loc, ip=ip).result

@_ods_cext.register_operation(_Dialect)
class smfmac_f32_16x16x128_fp8_bf8(_ods_ir.OpView):
  r"""
  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>
  ```
  """

  OPERATION_NAME = "rocdl.smfmac.f32.16x16x128.fp8.bf8"

  _ODS_REGIONS = (0, True)

  def __init__(self, res: _ods_ir.Type, a: _ods_ir.Value[_ods_ir.VectorType], b: _ods_ir.Value[_ods_ir.VectorType], c: _ods_ir.Value[_ods_ir.VectorType], index: _ods_ir.Value[_ods_ir.IntegerType], cbsz: _Union[int, _ods_ir.IntegerAttr], abid: _Union[int, _ods_ir.IntegerAttr], *, loc: _Optional[_ods_ir.Location] = None, ip: _Optional[_ods_ir.InsertionPoint] = None):
    operands = []
    attributes = {}
    regions = None
    operands.append(a)
    operands.append(b)
    operands.append(c)
    operands.append(index)
    _ods_context = _ods_get_default_loc_context(loc)
    attributes["cbsz"] = (cbsz if (
    isinstance(cbsz, _ods_ir.Attribute) or
    not _ods_ir.AttrBuilder.contains('I32Attr')) else
      _ods_ir.AttrBuilder.get('I32Attr')(cbsz, context=_ods_context))
    attributes["abid"] = (abid if (
    isinstance(abid, _ods_ir.Attribute) or
    not _ods_ir.AttrBuilder.contains('I32Attr')) else
      _ods_ir.AttrBuilder.get('I32Attr')(abid, context=_ods_context))
    results = []
    results.append(res)
    _ods_successors = None
    super().__init__(self.OPERATION_NAME, self._ODS_REGIONS, self._ODS_OPERAND_SEGMENTS, self._ODS_RESULT_SEGMENTS, attributes=attributes, results=results, operands=operands, successors=_ods_successors, regions=regions, loc=loc, ip=ip)

  @builtins.property
  def a(self) -> _ods_ir.Value[_ods_ir.VectorType]:
    return self.operation.operands[0]

  @builtins.property
  def b(self) -> _ods_ir.Value[_ods_ir.VectorType]:
    return self.operation.operands[1]

  @builtins.property
  def c(self) -> _ods_ir.Value[_ods_ir.VectorType]:
    return self.operation.operands[2]

  @builtins.property
  def index(self) -> _ods_ir.Value[_ods_ir.IntegerType]:
    return self.operation.operands[3]

  @builtins.property
  def cbsz(self) -> _ods_ir.IntegerAttr:
    return self.operation.attributes["cbsz"]

  @cbsz.setter
  def cbsz(self, value: _ods_ir.IntegerAttr):
    if value is None:
      raise ValueError("'None' not allowed as value for mandatory attributes")
    self.operation.attributes["cbsz"] = value

  @builtins.property
  def abid(self) -> _ods_ir.IntegerAttr:
    return self.operation.attributes["abid"]

  @abid.setter
  def abid(self, value: _ods_ir.IntegerAttr):
    if value is None:
      raise ValueError("'None' not allowed as value for mandatory attributes")
    self.operation.attributes["abid"] = value

  @builtins.property
  def res(self) -> _ods_ir.OpResult[_ods_ir.VectorType]:
    return self.operation.results[0]

@_ods_cext.register_op_adaptor(smfmac_f32_16x16x128_fp8_bf8)
class smfmac_f32_16x16x128_fp8_bf8Adaptor(_ods_ir.OpAdaptor):
  OPERATION_NAME = "rocdl.smfmac.f32.16x16x128.fp8.bf8"

  @builtins.property
  def a(self) -> _ods_ir.Value[_ods_ir.VectorType]:
    return self.operands[0]

  @builtins.property
  def b(self) -> _ods_ir.Value[_ods_ir.VectorType]:
    return self.operands[1]

  @builtins.property
  def c(self) -> _ods_ir.Value[_ods_ir.VectorType]:
    return self.operands[2]

  @builtins.property
  def index(self) -> _ods_ir.Value[_ods_ir.IntegerType]:
    return self.operands[3]

  @builtins.property
  def cbsz(self) -> _ods_ir.IntegerAttr:
    return self.attributes["cbsz"]

  @builtins.property
  def abid(self) -> _ods_ir.IntegerAttr:
    return self.attributes["abid"]

def smfmac_f32_16x16x128_fp8_bf8_(res: _ods_ir.Type, a: _ods_ir.Value[_ods_ir.VectorType], b: _ods_ir.Value[_ods_ir.VectorType], c: _ods_ir.Value[_ods_ir.VectorType], index: _ods_ir.Value[_ods_ir.IntegerType], cbsz: _Union[int, _ods_ir.IntegerAttr], abid: _Union[int, _ods_ir.IntegerAttr], *, loc: _Optional[_ods_ir.Location] = None, ip: _Optional[_ods_ir.InsertionPoint] = None) -> _ods_ir.OpResult[_ods_ir.VectorType]:
  return smfmac_f32_16x16x128_fp8_bf8(res=res, a=a, b=b, c=c, index=index, cbsz=cbsz, abid=abid, loc=loc, ip=ip).result

@_ods_cext.register_operation(_Dialect)
class smfmac_f32_16x16x128_fp8_fp8(_ods_ir.OpView):
  r"""
  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>
  ```
  """

  OPERATION_NAME = "rocdl.smfmac.f32.16x16x128.fp8.fp8"

  _ODS_REGIONS = (0, True)

  def __init__(self, res: _ods_ir.Type, a: _ods_ir.Value[_ods_ir.VectorType], b: _ods_ir.Value[_ods_ir.VectorType], c: _ods_ir.Value[_ods_ir.VectorType], index: _ods_ir.Value[_ods_ir.IntegerType], cbsz: _Union[int, _ods_ir.IntegerAttr], abid: _Union[int, _ods_ir.IntegerAttr], *, loc: _Optional[_ods_ir.Location] = None, ip: _Optional[_ods_ir.InsertionPoint] = None):
    operands = []
    attributes = {}
    regions = None
    operands.append(a)
    operands.append(b)
    operands.append(c)
    operands.append(index)
    _ods_context = _ods_get_default_loc_context(loc)
    attributes["cbsz"] = (cbsz if (
    isinstance(cbsz, _ods_ir.Attribute) or
    not _ods_ir.AttrBuilder.contains('I32Attr')) else
      _ods_ir.AttrBuilder.get('I32Attr')(cbsz, context=_ods_context))
    attributes["abid"] = (abid if (
    isinstance(abid, _ods_ir.Attribute) or
    not _ods_ir.AttrBuilder.contains('I32Attr')) else
      _ods_ir.AttrBuilder.get('I32Attr')(abid, context=_ods_context))
    results = []
    results.append(res)
    _ods_successors = None
    super().__init__(self.OPERATION_NAME, self._ODS_REGIONS, self._ODS_OPERAND_SEGMENTS, self._ODS_RESULT_SEGMENTS, attributes=attributes, results=results, operands=operands, successors=_ods_successors, regions=regions, loc=loc, ip=ip)

  @builtins.property
  def a(self) -> _ods_ir.Value[_ods_ir.VectorType]:
    return self.operation.operands[0]

  @builtins.property
  def b(self) -> _ods_ir.Value[_ods_ir.VectorType]:
    return self.operation.operands[1]

  @builtins.property
  def c(self) -> _ods_ir.Value[_ods_ir.VectorType]:
    return self.operation.operands[2]

  @builtins.property
  def index(self) -> _ods_ir.Value[_ods_ir.IntegerType]:
    return self.operation.operands[3]

  @builtins.property
  def cbsz(self) -> _ods_ir.IntegerAttr:
    return self.operation.attributes["cbsz"]

  @cbsz.setter
  def cbsz(self, value: _ods_ir.IntegerAttr):
    if value is None:
      raise ValueError("'None' not allowed as value for mandatory attributes")
    self.operation.attributes["cbsz"] = value

  @builtins.property
  def abid(self) -> _ods_ir.IntegerAttr:
    return self.operation.attributes["abid"]

  @abid.setter
  def abid(self, value: _ods_ir.IntegerAttr):
    if value is None:
      raise ValueError("'None' not allowed as value for mandatory attributes")
    self.operation.attributes["abid"] = value

  @builtins.property
  def res(self) -> _ods_ir.OpResult[_ods_ir.VectorType]:
    return self.operation.results[0]

@_ods_cext.register_op_adaptor(smfmac_f32_16x16x128_fp8_fp8)
class smfmac_f32_16x16x128_fp8_fp8Adaptor(_ods_ir.OpAdaptor):
  OPERATION_NAME = "rocdl.smfmac.f32.16x16x128.fp8.fp8"

  @builtins.property
  def a(self) -> _ods_ir.Value[_ods_ir.VectorType]:
    return self.operands[0]

  @builtins.property
  def b(self) -> _ods_ir.Value[_ods_ir.VectorType]:
    return self.operands[1]

  @builtins.property
  def c(self) -> _ods_ir.Value[_ods_ir.VectorType]:
    return self.operands[2]

  @builtins.property
  def index(self) -> _ods_ir.Value[_ods_ir.IntegerType]:
    return self.operands[3]

  @builtins.property
  def cbsz(self) -> _ods_ir.IntegerAttr:
    return self.attributes["cbsz"]

  @builtins.property
  def abid(self) -> _ods_ir.IntegerAttr:
    return self.attributes["abid"]

def smfmac_f32_16x16x128_fp8_fp8_(res: _ods_ir.Type, a: _ods_ir.Value[_ods_ir.VectorType], b: _ods_ir.Value[_ods_ir.VectorType], c: _ods_ir.Value[_ods_ir.VectorType], index: _ods_ir.Value[_ods_ir.IntegerType], cbsz: _Union[int, _ods_ir.IntegerAttr], abid: _Union[int, _ods_ir.IntegerAttr], *, loc: _Optional[_ods_ir.Location] = None, ip: _Optional[_ods_ir.InsertionPoint] = None) -> _ods_ir.OpResult[_ods_ir.VectorType]:
  return smfmac_f32_16x16x128_fp8_fp8(res=res, a=a, b=b, c=c, index=index, cbsz=cbsz, abid=abid, loc=loc, ip=ip).result

@_ods_cext.register_operation(_Dialect)
class smfmac_f32_32x32x16_bf16(_ods_ir.OpView):
  r"""
  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>
  ```
  """

  OPERATION_NAME = "rocdl.smfmac.f32.32x32x16.bf16"

  _ODS_REGIONS = (0, True)

  def __init__(self, res: _ods_ir.Type, a: _ods_ir.Value[_ods_ir.VectorType], b: _ods_ir.Value[_ods_ir.VectorType], c: _ods_ir.Value[_ods_ir.VectorType], index: _ods_ir.Value[_ods_ir.IntegerType], cbsz: _Union[int, _ods_ir.IntegerAttr], abid: _Union[int, _ods_ir.IntegerAttr], *, loc: _Optional[_ods_ir.Location] = None, ip: _Optional[_ods_ir.InsertionPoint] = None):
    operands = []
    attributes = {}
    regions = None
    operands.append(a)
    operands.append(b)
    operands.append(c)
    operands.append(index)
    _ods_context = _ods_get_default_loc_context(loc)
    attributes["cbsz"] = (cbsz if (
    isinstance(cbsz, _ods_ir.Attribute) or
    not _ods_ir.AttrBuilder.contains('I32Attr')) else
      _ods_ir.AttrBuilder.get('I32Attr')(cbsz, context=_ods_context))
    attributes["abid"] = (abid if (
    isinstance(abid, _ods_ir.Attribute) or
    not _ods_ir.AttrBuilder.contains('I32Attr')) else
      _ods_ir.AttrBuilder.get('I32Attr')(abid, context=_ods_context))
    results = []
    results.append(res)
    _ods_successors = None
    super().__init__(self.OPERATION_NAME, self._ODS_REGIONS, self._ODS_OPERAND_SEGMENTS, self._ODS_RESULT_SEGMENTS, attributes=attributes, results=results, operands=operands, successors=_ods_successors, regions=regions, loc=loc, ip=ip)

  @builtins.property
  def a(self) -> _ods_ir.Value[_ods_ir.VectorType]:
    return self.operation.operands[0]

  @builtins.property
  def b(self) -> _ods_ir.Value[_ods_ir.VectorType]:
    return self.operation.operands[1]

  @builtins.property
  def c(self) -> _ods_ir.Value[_ods_ir.VectorType]:
    return self.operation.operands[2]

  @builtins.property
  def index(self) -> _ods_ir.Value[_ods_ir.IntegerType]:
    return self.operation.operands[3]

  @builtins.property
  def cbsz(self) -> _ods_ir.IntegerAttr:
    return self.operation.attributes["cbsz"]

  @cbsz.setter
  def cbsz(self, value: _ods_ir.IntegerAttr):
    if value is None:
      raise ValueError("'None' not allowed as value for mandatory attributes")
    self.operation.attributes["cbsz"] = value

  @builtins.property
  def abid(self) -> _ods_ir.IntegerAttr:
    return self.operation.attributes["abid"]

  @abid.setter
  def abid(self, value: _ods_ir.IntegerAttr):
    if value is None:
      raise ValueError("'None' not allowed as value for mandatory attributes")
    self.operation.attributes["abid"] = value

  @builtins.property
  def res(self) -> _ods_ir.OpResult[_ods_ir.VectorType]:
    return self.operation.results[0]

@_ods_cext.register_op_adaptor(smfmac_f32_32x32x16_bf16)
class smfmac_f32_32x32x16_bf16Adaptor(_ods_ir.OpAdaptor):
  OPERATION_NAME = "rocdl.smfmac.f32.32x32x16.bf16"

  @builtins.property
  def a(self) -> _ods_ir.Value[_ods_ir.VectorType]:
    return self.operands[0]

  @builtins.property
  def b(self) -> _ods_ir.Value[_ods_ir.VectorType]:
    return self.operands[1]

  @builtins.property
  def c(self) -> _ods_ir.Value[_ods_ir.VectorType]:
    return self.operands[2]

  @builtins.property
  def index(self) -> _ods_ir.Value[_ods_ir.IntegerType]:
    return self.operands[3]

  @builtins.property
  def cbsz(self) -> _ods_ir.IntegerAttr:
    return self.attributes["cbsz"]

  @builtins.property
  def abid(self) -> _ods_ir.IntegerAttr:
    return self.attributes["abid"]

def smfmac_f32_32x32x16_bf16_(res: _ods_ir.Type, a: _ods_ir.Value[_ods_ir.VectorType], b: _ods_ir.Value[_ods_ir.VectorType], c: _ods_ir.Value[_ods_ir.VectorType], index: _ods_ir.Value[_ods_ir.IntegerType], cbsz: _Union[int, _ods_ir.IntegerAttr], abid: _Union[int, _ods_ir.IntegerAttr], *, loc: _Optional[_ods_ir.Location] = None, ip: _Optional[_ods_ir.InsertionPoint] = None) -> _ods_ir.OpResult[_ods_ir.VectorType]:
  return smfmac_f32_32x32x16_bf16(res=res, a=a, b=b, c=c, index=index, cbsz=cbsz, abid=abid, loc=loc, ip=ip).result

@_ods_cext.register_operation(_Dialect)
class smfmac_f32_32x32x16_f16(_ods_ir.OpView):
  r"""
  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>
  ```
  """

  OPERATION_NAME = "rocdl.smfmac.f32.32x32x16.f16"

  _ODS_REGIONS = (0, True)

  def __init__(self, res: _ods_ir.Type, a: _ods_ir.Value[_ods_ir.VectorType], b: _ods_ir.Value[_ods_ir.VectorType], c: _ods_ir.Value[_ods_ir.VectorType], index: _ods_ir.Value[_ods_ir.IntegerType], cbsz: _Union[int, _ods_ir.IntegerAttr], abid: _Union[int, _ods_ir.IntegerAttr], *, loc: _Optional[_ods_ir.Location] = None, ip: _Optional[_ods_ir.InsertionPoint] = None):
    operands = []
    attributes = {}
    regions = None
    operands.append(a)
    operands.append(b)
    operands.append(c)
    operands.append(index)
    _ods_context = _ods_get_default_loc_context(loc)
    attributes["cbsz"] = (cbsz if (
    isinstance(cbsz, _ods_ir.Attribute) or
    not _ods_ir.AttrBuilder.contains('I32Attr')) else
      _ods_ir.AttrBuilder.get('I32Attr')(cbsz, context=_ods_context))
    attributes["abid"] = (abid if (
    isinstance(abid, _ods_ir.Attribute) or
    not _ods_ir.AttrBuilder.contains('I32Attr')) else
      _ods_ir.AttrBuilder.get('I32Attr')(abid, context=_ods_context))
    results = []
    results.append(res)
    _ods_successors = None
    super().__init__(self.OPERATION_NAME, self._ODS_REGIONS, self._ODS_OPERAND_SEGMENTS, self._ODS_RESULT_SEGMENTS, attributes=attributes, results=results, operands=operands, successors=_ods_successors, regions=regions, loc=loc, ip=ip)

  @builtins.property
  def a(self) -> _ods_ir.Value[_ods_ir.VectorType]:
    return self.operation.operands[0]

  @builtins.property
  def b(self) -> _ods_ir.Value[_ods_ir.VectorType]:
    return self.operation.operands[1]

  @builtins.property
  def c(self) -> _ods_ir.Value[_ods_ir.VectorType]:
    return self.operation.operands[2]

  @builtins.property
  def index(self) -> _ods_ir.Value[_ods_ir.IntegerType]:
    return self.operation.operands[3]

  @builtins.property
  def cbsz(self) -> _ods_ir.IntegerAttr:
    return self.operation.attributes["cbsz"]

  @cbsz.setter
  def cbsz(self, value: _ods_ir.IntegerAttr):
    if value is None:
      raise ValueError("'None' not allowed as value for mandatory attributes")
    self.operation.attributes["cbsz"] = value

  @builtins.property
  def abid(self) -> _ods_ir.IntegerAttr:
    return self.operation.attributes["abid"]

  @abid.setter
  def abid(self, value: _ods_ir.IntegerAttr):
    if value is None:
      raise ValueError("'None' not allowed as value for mandatory attributes")
    self.operation.attributes["abid"] = value

  @builtins.property
  def res(self) -> _ods_ir.OpResult[_ods_ir.VectorType]:
    return self.operation.results[0]

@_ods_cext.register_op_adaptor(smfmac_f32_32x32x16_f16)
class smfmac_f32_32x32x16_f16Adaptor(_ods_ir.OpAdaptor):
  OPERATION_NAME = "rocdl.smfmac.f32.32x32x16.f16"

  @builtins.property
  def a(self) -> _ods_ir.Value[_ods_ir.VectorType]:
    return self.operands[0]

  @builtins.property
  def b(self) -> _ods_ir.Value[_ods_ir.VectorType]:
    return self.operands[1]

  @builtins.property
  def c(self) -> _ods_ir.Value[_ods_ir.VectorType]:
    return self.operands[2]

  @builtins.property
  def index(self) -> _ods_ir.Value[_ods_ir.IntegerType]:
    return self.operands[3]

  @builtins.property
  def cbsz(self) -> _ods_ir.IntegerAttr:
    return self.attributes["cbsz"]

  @builtins.property
  def abid(self) -> _ods_ir.IntegerAttr:
    return self.attributes["abid"]

def smfmac_f32_32x32x16_f16_(res: _ods_ir.Type, a: _ods_ir.Value[_ods_ir.VectorType], b: _ods_ir.Value[_ods_ir.VectorType], c: _ods_ir.Value[_ods_ir.VectorType], index: _ods_ir.Value[_ods_ir.IntegerType], cbsz: _Union[int, _ods_ir.IntegerAttr], abid: _Union[int, _ods_ir.IntegerAttr], *, loc: _Optional[_ods_ir.Location] = None, ip: _Optional[_ods_ir.InsertionPoint] = None) -> _ods_ir.OpResult[_ods_ir.VectorType]:
  return smfmac_f32_32x32x16_f16(res=res, a=a, b=b, c=c, index=index, cbsz=cbsz, abid=abid, loc=loc, ip=ip).result

@_ods_cext.register_operation(_Dialect)
class smfmac_f32_32x32x32_bf8_bf8(_ods_ir.OpView):
  r"""
  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>
  ```
  """

  OPERATION_NAME = "rocdl.smfmac.f32.32x32x32.bf8.bf8"

  _ODS_REGIONS = (0, True)

  def __init__(self, res: _ods_ir.Type, a: _ods_ir.Value[_ods_ir.VectorType], b: _ods_ir.Value[_ods_ir.VectorType], c: _ods_ir.Value[_ods_ir.VectorType], index: _ods_ir.Value[_ods_ir.IntegerType], cbsz: _Union[int, _ods_ir.IntegerAttr], abid: _Union[int, _ods_ir.IntegerAttr], *, loc: _Optional[_ods_ir.Location] = None, ip: _Optional[_ods_ir.InsertionPoint] = None):
    operands = []
    attributes = {}
    regions = None
    operands.append(a)
    operands.append(b)
    operands.append(c)
    operands.append(index)
    _ods_context = _ods_get_default_loc_context(loc)
    attributes["cbsz"] = (cbsz if (
    isinstance(cbsz, _ods_ir.Attribute) or
    not _ods_ir.AttrBuilder.contains('I32Attr')) else
      _ods_ir.AttrBuilder.get('I32Attr')(cbsz, context=_ods_context))
    attributes["abid"] = (abid if (
    isinstance(abid, _ods_ir.Attribute) or
    not _ods_ir.AttrBuilder.contains('I32Attr')) else
      _ods_ir.AttrBuilder.get('I32Attr')(abid, context=_ods_context))
    results = []
    results.append(res)
    _ods_successors = None
    super().__init__(self.OPERATION_NAME, self._ODS_REGIONS, self._ODS_OPERAND_SEGMENTS, self._ODS_RESULT_SEGMENTS, attributes=attributes, results=results, operands=operands, successors=_ods_successors, regions=regions, loc=loc, ip=ip)

  @builtins.property
  def a(self) -> _ods_ir.Value[_ods_ir.VectorType]:
    return self.operation.operands[0]

  @builtins.property
  def b(self) -> _ods_ir.Value[_ods_ir.VectorType]:
    return self.operation.operands[1]

  @builtins.property
  def c(self) -> _ods_ir.Value[_ods_ir.VectorType]:
    return self.operation.operands[2]

  @builtins.property
  def index(self) -> _ods_ir.Value[_ods_ir.IntegerType]:
    return self.operation.operands[3]

  @builtins.property
  def cbsz(self) -> _ods_ir.IntegerAttr:
    return self.operation.attributes["cbsz"]

  @cbsz.setter
  def cbsz(self, value: _ods_ir.IntegerAttr):
    if value is None:
      raise ValueError("'None' not allowed as value for mandatory attributes")
    self.operation.attributes["cbsz"] = value

  @builtins.property
  def abid(self) -> _ods_ir.IntegerAttr:
    return self.operation.attributes["abid"]

  @abid.setter
  def abid(self, value: _ods_ir.IntegerAttr):
    if value is None:
      raise ValueError("'None' not allowed as value for mandatory attributes")
    self.operation.attributes["abid"] = value

  @builtins.property
  def res(self) -> _ods_ir.OpResult[_ods_ir.VectorType]:
    return self.operation.results[0]

@_ods_cext.register_op_adaptor(smfmac_f32_32x32x32_bf8_bf8)
class smfmac_f32_32x32x32_bf8_bf8Adaptor(_ods_ir.OpAdaptor):
  OPERATION_NAME = "rocdl.smfmac.f32.32x32x32.bf8.bf8"

  @builtins.property
  def a(self) -> _ods_ir.Value[_ods_ir.VectorType]:
    return self.operands[0]

  @builtins.property
  def b(self) -> _ods_ir.Value[_ods_ir.VectorType]:
    return self.operands[1]

  @builtins.property
  def c(self) -> _ods_ir.Value[_ods_ir.VectorType]:
    return self.operands[2]

  @builtins.property
  def index(self) -> _ods_ir.Value[_ods_ir.IntegerType]:
    return self.operands[3]

  @builtins.property
  def cbsz(self) -> _ods_ir.IntegerAttr:
    return self.attributes["cbsz"]

  @builtins.property
  def abid(self) -> _ods_ir.IntegerAttr:
    return self.attributes["abid"]

def smfmac_f32_32x32x32_bf8_bf8_(res: _ods_ir.Type, a: _ods_ir.Value[_ods_ir.VectorType], b: _ods_ir.Value[_ods_ir.VectorType], c: _ods_ir.Value[_ods_ir.VectorType], index: _ods_ir.Value[_ods_ir.IntegerType], cbsz: _Union[int, _ods_ir.IntegerAttr], abid: _Union[int, _ods_ir.IntegerAttr], *, loc: _Optional[_ods_ir.Location] = None, ip: _Optional[_ods_ir.InsertionPoint] = None) -> _ods_ir.OpResult[_ods_ir.VectorType]:
  return smfmac_f32_32x32x32_bf8_bf8(res=res, a=a, b=b, c=c, index=index, cbsz=cbsz, abid=abid, loc=loc, ip=ip).result

@_ods_cext.register_operation(_Dialect)
class smfmac_f32_32x32x32_bf8_fp8(_ods_ir.OpView):
  r"""
  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>
  ```
  """

  OPERATION_NAME = "rocdl.smfmac.f32.32x32x32.bf8.fp8"

  _ODS_REGIONS = (0, True)

  def __init__(self, res: _ods_ir.Type, a: _ods_ir.Value[_ods_ir.VectorType], b: _ods_ir.Value[_ods_ir.VectorType], c: _ods_ir.Value[_ods_ir.VectorType], index: _ods_ir.Value[_ods_ir.IntegerType], cbsz: _Union[int, _ods_ir.IntegerAttr], abid: _Union[int, _ods_ir.IntegerAttr], *, loc: _Optional[_ods_ir.Location] = None, ip: _Optional[_ods_ir.InsertionPoint] = None):
    operands = []
    attributes = {}
    regions = None
    operands.append(a)
    operands.append(b)
    operands.append(c)
    operands.append(index)
    _ods_context = _ods_get_default_loc_context(loc)
    attributes["cbsz"] = (cbsz if (
    isinstance(cbsz, _ods_ir.Attribute) or
    not _ods_ir.AttrBuilder.contains('I32Attr')) else
      _ods_ir.AttrBuilder.get('I32Attr')(cbsz, context=_ods_context))
    attributes["abid"] = (abid if (
    isinstance(abid, _ods_ir.Attribute) or
    not _ods_ir.AttrBuilder.contains('I32Attr')) else
      _ods_ir.AttrBuilder.get('I32Attr')(abid, context=_ods_context))
    results = []
    results.append(res)
    _ods_successors = None
    super().__init__(self.OPERATION_NAME, self._ODS_REGIONS, self._ODS_OPERAND_SEGMENTS, self._ODS_RESULT_SEGMENTS, attributes=attributes, results=results, operands=operands, successors=_ods_successors, regions=regions, loc=loc, ip=ip)

  @builtins.property
  def a(self) -> _ods_ir.Value[_ods_ir.VectorType]:
    return self.operation.operands[0]

  @builtins.property
  def b(self) -> _ods_ir.Value[_ods_ir.VectorType]:
    return self.operation.operands[1]

  @builtins.property
  def c(self) -> _ods_ir.Value[_ods_ir.VectorType]:
    return self.operation.operands[2]

  @builtins.property
  def index(self) -> _ods_ir.Value[_ods_ir.IntegerType]:
    return self.operation.operands[3]

  @builtins.property
  def cbsz(self) -> _ods_ir.IntegerAttr:
    return self.operation.attributes["cbsz"]

  @cbsz.setter
  def cbsz(self, value: _ods_ir.IntegerAttr):
    if value is None:
      raise ValueError("'None' not allowed as value for mandatory attributes")
    self.operation.attributes["cbsz"] = value

  @builtins.property
  def abid(self) -> _ods_ir.IntegerAttr:
    return self.operation.attributes["abid"]

  @abid.setter
  def abid(self, value: _ods_ir.IntegerAttr):
    if value is None:
      raise ValueError("'None' not allowed as value for mandatory attributes")
    self.operation.attributes["abid"] = value

  @builtins.property
  def res(self) -> _ods_ir.OpResult[_ods_ir.VectorType]:
    return self.operation.results[0]

@_ods_cext.register_op_adaptor(smfmac_f32_32x32x32_bf8_fp8)
class smfmac_f32_32x32x32_bf8_fp8Adaptor(_ods_ir.OpAdaptor):
  OPERATION_NAME = "rocdl.smfmac.f32.32x32x32.bf8.fp8"

  @builtins.property
  def a(self) -> _ods_ir.Value[_ods_ir.VectorType]:
    return self.operands[0]

  @builtins.property
  def b(self) -> _ods_ir.Value[_ods_ir.VectorType]:
    return self.operands[1]

  @builtins.property
  def c(self) -> _ods_ir.Value[_ods_ir.VectorType]:
    return self.operands[2]

  @builtins.property
  def index(self) -> _ods_ir.Value[_ods_ir.IntegerType]:
    return self.operands[3]

  @builtins.property
  def cbsz(self) -> _ods_ir.IntegerAttr:
    return self.attributes["cbsz"]

  @builtins.property
  def abid(self) -> _ods_ir.IntegerAttr:
    return self.attributes["abid"]

def smfmac_f32_32x32x32_bf8_fp8_(res: _ods_ir.Type, a: _ods_ir.Value[_ods_ir.VectorType], b: _ods_ir.Value[_ods_ir.VectorType], c: _ods_ir.Value[_ods_ir.VectorType], index: _ods_ir.Value[_ods_ir.IntegerType], cbsz: _Union[int, _ods_ir.IntegerAttr], abid: _Union[int, _ods_ir.IntegerAttr], *, loc: _Optional[_ods_ir.Location] = None, ip: _Optional[_ods_ir.InsertionPoint] = None) -> _ods_ir.OpResult[_ods_ir.VectorType]:
  return smfmac_f32_32x32x32_bf8_fp8(res=res, a=a, b=b, c=c, index=index, cbsz=cbsz, abid=abid, loc=loc, ip=ip).result

@_ods_cext.register_operation(_Dialect)
class smfmac_f32_32x32x32_bf16(_ods_ir.OpView):
  r"""
  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>
  ```
  """

  OPERATION_NAME = "rocdl.smfmac.f32.32x32x32.bf16"

  _ODS_REGIONS = (0, True)

  def __init__(self, res: _ods_ir.Type, a: _ods_ir.Value[_ods_ir.VectorType], b: _ods_ir.Value[_ods_ir.VectorType], c: _ods_ir.Value[_ods_ir.VectorType], index: _ods_ir.Value[_ods_ir.IntegerType], cbsz: _Union[int, _ods_ir.IntegerAttr], abid: _Union[int, _ods_ir.IntegerAttr], *, loc: _Optional[_ods_ir.Location] = None, ip: _Optional[_ods_ir.InsertionPoint] = None):
    operands = []
    attributes = {}
    regions = None
    operands.append(a)
    operands.append(b)
    operands.append(c)
    operands.append(index)
    _ods_context = _ods_get_default_loc_context(loc)
    attributes["cbsz"] = (cbsz if (
    isinstance(cbsz, _ods_ir.Attribute) or
    not _ods_ir.AttrBuilder.contains('I32Attr')) else
      _ods_ir.AttrBuilder.get('I32Attr')(cbsz, context=_ods_context))
    attributes["abid"] = (abid if (
    isinstance(abid, _ods_ir.Attribute) or
    not _ods_ir.AttrBuilder.contains('I32Attr')) else
      _ods_ir.AttrBuilder.get('I32Attr')(abid, context=_ods_context))
    results = []
    results.append(res)
    _ods_successors = None
    super().__init__(self.OPERATION_NAME, self._ODS_REGIONS, self._ODS_OPERAND_SEGMENTS, self._ODS_RESULT_SEGMENTS, attributes=attributes, results=results, operands=operands, successors=_ods_successors, regions=regions, loc=loc, ip=ip)

  @builtins.property
  def a(self) -> _ods_ir.Value[_ods_ir.VectorType]:
    return self.operation.operands[0]

  @builtins.property
  def b(self) -> _ods_ir.Value[_ods_ir.VectorType]:
    return self.operation.operands[1]

  @builtins.property
  def c(self) -> _ods_ir.Value[_ods_ir.VectorType]:
    return self.operation.operands[2]

  @builtins.property
  def index(self) -> _ods_ir.Value[_ods_ir.IntegerType]:
    return self.operation.operands[3]

  @builtins.property
  def cbsz(self) -> _ods_ir.IntegerAttr:
    return self.operation.attributes["cbsz"]

  @cbsz.setter
  def cbsz(self, value: _ods_ir.IntegerAttr):
    if value is None:
      raise ValueError("'None' not allowed as value for mandatory attributes")
    self.operation.attributes["cbsz"] = value

  @builtins.property
  def abid(self) -> _ods_ir.IntegerAttr:
    return self.operation.attributes["abid"]

  @abid.setter
  def abid(self, value: _ods_ir.IntegerAttr):
    if value is None:
      raise ValueError("'None' not allowed as value for mandatory attributes")
    self.operation.attributes["abid"] = value

  @builtins.property
  def res(self) -> _ods_ir.OpResult[_ods_ir.VectorType]:
    return self.operation.results[0]

@_ods_cext.register_op_adaptor(smfmac_f32_32x32x32_bf16)
class smfmac_f32_32x32x32_bf16Adaptor(_ods_ir.OpAdaptor):
  OPERATION_NAME = "rocdl.smfmac.f32.32x32x32.bf16"

  @builtins.property
  def a(self) -> _ods_ir.Value[_ods_ir.VectorType]:
    return self.operands[0]

  @builtins.property
  def b(self) -> _ods_ir.Value[_ods_ir.VectorType]:
    return self.operands[1]

  @builtins.property
  def c(self) -> _ods_ir.Value[_ods_ir.VectorType]:
    return self.operands[2]

  @builtins.property
  def index(self) -> _ods_ir.Value[_ods_ir.IntegerType]:
    return self.operands[3]

  @builtins.property
  def cbsz(self) -> _ods_ir.IntegerAttr:
    return self.attributes["cbsz"]

  @builtins.property
  def abid(self) -> _ods_ir.IntegerAttr:
    return self.attributes["abid"]

def smfmac_f32_32x32x32_bf16_(res: _ods_ir.Type, a: _ods_ir.Value[_ods_ir.VectorType], b: _ods_ir.Value[_ods_ir.VectorType], c: _ods_ir.Value[_ods_ir.VectorType], index: _ods_ir.Value[_ods_ir.IntegerType], cbsz: _Union[int, _ods_ir.IntegerAttr], abid: _Union[int, _ods_ir.IntegerAttr], *, loc: _Optional[_ods_ir.Location] = None, ip: _Optional[_ods_ir.InsertionPoint] = None) -> _ods_ir.OpResult[_ods_ir.VectorType]:
  return smfmac_f32_32x32x32_bf16(res=res, a=a, b=b, c=c, index=index, cbsz=cbsz, abid=abid, loc=loc, ip=ip).result

@_ods_cext.register_operation(_Dialect)
class smfmac_f32_32x32x32_f16(_ods_ir.OpView):
  r"""
  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>
  ```
  """

  OPERATION_NAME = "rocdl.smfmac.f32.32x32x32.f16"

  _ODS_REGIONS = (0, True)

  def __init__(self, res: _ods_ir.Type, a: _ods_ir.Value[_ods_ir.VectorType], b: _ods_ir.Value[_ods_ir.VectorType], c: _ods_ir.Value[_ods_ir.VectorType], index: _ods_ir.Value[_ods_ir.IntegerType], cbsz: _Union[int, _ods_ir.IntegerAttr], abid: _Union[int, _ods_ir.IntegerAttr], *, loc: _Optional[_ods_ir.Location] = None, ip: _Optional[_ods_ir.InsertionPoint] = None):
    operands = []
    attributes = {}
    regions = None
    operands.append(a)
    operands.append(b)
    operands.append(c)
    operands.append(index)
    _ods_context = _ods_get_default_loc_context(loc)
    attributes["cbsz"] = (cbsz if (
    isinstance(cbsz, _ods_ir.Attribute) or
    not _ods_ir.AttrBuilder.contains('I32Attr')) else
      _ods_ir.AttrBuilder.get('I32Attr')(cbsz, context=_ods_context))
    attributes["abid"] = (abid if (
    isinstance(abid, _ods_ir.Attribute) or
    not _ods_ir.AttrBuilder.contains('I32Attr')) else
      _ods_ir.AttrBuilder.get('I32Attr')(abid, context=_ods_context))
    results = []
    results.append(res)
    _ods_successors = None
    super().__init__(self.OPERATION_NAME, self._ODS_REGIONS, self._ODS_OPERAND_SEGMENTS, self._ODS_RESULT_SEGMENTS, attributes=attributes, results=results, operands=operands, successors=_ods_successors, regions=regions, loc=loc, ip=ip)

  @builtins.property
  def a(self) -> _ods_ir.Value[_ods_ir.VectorType]:
    return self.operation.operands[0]

  @builtins.property
  def b(self) -> _ods_ir.Value[_ods_ir.VectorType]:
    return self.operation.operands[1]

  @builtins.property
  def c(self) -> _ods_ir.Value[_ods_ir.VectorType]:
    return self.operation.operands[2]

  @builtins.property
  def index(self) -> _ods_ir.Value[_ods_ir.IntegerType]:
    return self.operation.operands[3]

  @builtins.property
  def cbsz(self) -> _ods_ir.IntegerAttr:
    return self.operation.attributes["cbsz"]

  @cbsz.setter
  def cbsz(self, value: _ods_ir.IntegerAttr):
    if value is None:
      raise ValueError("'None' not allowed as value for mandatory attributes")
    self.operation.attributes["cbsz"] = value

  @builtins.property
  def abid(self) -> _ods_ir.IntegerAttr:
    return self.operation.attributes["abid"]

  @abid.setter
  def abid(self, value: _ods_ir.IntegerAttr):
    if value is None:
      raise ValueError("'None' not allowed as value for mandatory attributes")
    self.operation.attributes["abid"] = value

  @builtins.property
  def res(self) -> _ods_ir.OpResult[_ods_ir.VectorType]:
    return self.operation.results[0]

@_ods_cext.register_op_adaptor(smfmac_f32_32x32x32_f16)
class smfmac_f32_32x32x32_f16Adaptor(_ods_ir.OpAdaptor):
  OPERATION_NAME = "rocdl.smfmac.f32.32x32x32.f16"

  @builtins.property
  def a(self) -> _ods_ir.Value[_ods_ir.VectorType]:
    return self.operands[0]

  @builtins.property
  def b(self) -> _ods_ir.Value[_ods_ir.VectorType]:
    return self.operands[1]

  @builtins.property
  def c(self) -> _ods_ir.Value[_ods_ir.VectorType]:
    return self.operands[2]

  @builtins.property
  def index(self) -> _ods_ir.Value[_ods_ir.IntegerType]:
    return self.operands[3]

  @builtins.property
  def cbsz(self) -> _ods_ir.IntegerAttr:
    return self.attributes["cbsz"]

  @builtins.property
  def abid(self) -> _ods_ir.IntegerAttr:
    return self.attributes["abid"]

def smfmac_f32_32x32x32_f16_(res: _ods_ir.Type, a: _ods_ir.Value[_ods_ir.VectorType], b: _ods_ir.Value[_ods_ir.VectorType], c: _ods_ir.Value[_ods_ir.VectorType], index: _ods_ir.Value[_ods_ir.IntegerType], cbsz: _Union[int, _ods_ir.IntegerAttr], abid: _Union[int, _ods_ir.IntegerAttr], *, loc: _Optional[_ods_ir.Location] = None, ip: _Optional[_ods_ir.InsertionPoint] = None) -> _ods_ir.OpResult[_ods_ir.VectorType]:
  return smfmac_f32_32x32x32_f16(res=res, a=a, b=b, c=c, index=index, cbsz=cbsz, abid=abid, loc=loc, ip=ip).result

@_ods_cext.register_operation(_Dialect)
class smfmac_f32_32x32x32_fp8_bf8(_ods_ir.OpView):
  r"""
  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>
  ```
  """

  OPERATION_NAME = "rocdl.smfmac.f32.32x32x32.fp8.bf8"

  _ODS_REGIONS = (0, True)

  def __init__(self, res: _ods_ir.Type, a: _ods_ir.Value[_ods_ir.VectorType], b: _ods_ir.Value[_ods_ir.VectorType], c: _ods_ir.Value[_ods_ir.VectorType], index: _ods_ir.Value[_ods_ir.IntegerType], cbsz: _Union[int, _ods_ir.IntegerAttr], abid: _Union[int, _ods_ir.IntegerAttr], *, loc: _Optional[_ods_ir.Location] = None, ip: _Optional[_ods_ir.InsertionPoint] = None):
    operands = []
    attributes = {}
    regions = None
    operands.append(a)
    operands.append(b)
    operands.append(c)
    operands.append(index)
    _ods_context = _ods_get_default_loc_context(loc)
    attributes["cbsz"] = (cbsz if (
    isinstance(cbsz, _ods_ir.Attribute) or
    not _ods_ir.AttrBuilder.contains('I32Attr')) else
      _ods_ir.AttrBuilder.get('I32Attr')(cbsz, context=_ods_context))
    attributes["abid"] = (abid if (
    isinstance(abid, _ods_ir.Attribute) or
    not _ods_ir.AttrBuilder.contains('I32Attr')) else
      _ods_ir.AttrBuilder.get('I32Attr')(abid, context=_ods_context))
    results = []
    results.append(res)
    _ods_successors = None
    super().__init__(self.OPERATION_NAME, self._ODS_REGIONS, self._ODS_OPERAND_SEGMENTS, self._ODS_RESULT_SEGMENTS, attributes=attributes, results=results, operands=operands, successors=_ods_successors, regions=regions, loc=loc, ip=ip)

  @builtins.property
  def a(self) -> _ods_ir.Value[_ods_ir.VectorType]:
    return self.operation.operands[0]

  @builtins.property
  def b(self) -> _ods_ir.Value[_ods_ir.VectorType]:
    return self.operation.operands[1]

  @builtins.property
  def c(self) -> _ods_ir.Value[_ods_ir.VectorType]:
    return self.operation.operands[2]

  @builtins.property
  def index(self) -> _ods_ir.Value[_ods_ir.IntegerType]:
    return self.operation.operands[3]

  @builtins.property
  def cbsz(self) -> _ods_ir.IntegerAttr:
    return self.operation.attributes["cbsz"]

  @cbsz.setter
  def cbsz(self, value: _ods_ir.IntegerAttr):
    if value is None:
      raise ValueError("'None' not allowed as value for mandatory attributes")
    self.operation.attributes["cbsz"] = value

  @builtins.property
  def abid(self) -> _ods_ir.IntegerAttr:
    return self.operation.attributes["abid"]

  @abid.setter
  def abid(self, value: _ods_ir.IntegerAttr):
    if value is None:
      raise ValueError("'None' not allowed as value for mandatory attributes")
    self.operation.attributes["abid"] = value

  @builtins.property
  def res(self) -> _ods_ir.OpResult[_ods_ir.VectorType]:
    return self.operation.results[0]

@_ods_cext.register_op_adaptor(smfmac_f32_32x32x32_fp8_bf8)
class smfmac_f32_32x32x32_fp8_bf8Adaptor(_ods_ir.OpAdaptor):
  OPERATION_NAME = "rocdl.smfmac.f32.32x32x32.fp8.bf8"

  @builtins.property
  def a(self) -> _ods_ir.Value[_ods_ir.VectorType]:
    return self.operands[0]

  @builtins.property
  def b(self) -> _ods_ir.Value[_ods_ir.VectorType]:
    return self.operands[1]

  @builtins.property
  def c(self) -> _ods_ir.Value[_ods_ir.VectorType]:
    return self.operands[2]

  @builtins.property
  def index(self) -> _ods_ir.Value[_ods_ir.IntegerType]:
    return self.operands[3]

  @builtins.property
  def cbsz(self) -> _ods_ir.IntegerAttr:
    return self.attributes["cbsz"]

  @builtins.property
  def abid(self) -> _ods_ir.IntegerAttr:
    return self.attributes["abid"]

def smfmac_f32_32x32x32_fp8_bf8_(res: _ods_ir.Type, a: _ods_ir.Value[_ods_ir.VectorType], b: _ods_ir.Value[_ods_ir.VectorType], c: _ods_ir.Value[_ods_ir.VectorType], index: _ods_ir.Value[_ods_ir.IntegerType], cbsz: _Union[int, _ods_ir.IntegerAttr], abid: _Union[int, _ods_ir.IntegerAttr], *, loc: _Optional[_ods_ir.Location] = None, ip: _Optional[_ods_ir.InsertionPoint] = None) -> _ods_ir.OpResult[_ods_ir.VectorType]:
  return smfmac_f32_32x32x32_fp8_bf8(res=res, a=a, b=b, c=c, index=index, cbsz=cbsz, abid=abid, loc=loc, ip=ip).result

@_ods_cext.register_operation(_Dialect)
class smfmac_f32_32x32x32_fp8_fp8(_ods_ir.OpView):
  r"""
  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>
  ```
  """

  OPERATION_NAME = "rocdl.smfmac.f32.32x32x32.fp8.fp8"

  _ODS_REGIONS = (0, True)

  def __init__(self, res: _ods_ir.Type, a: _ods_ir.Value[_ods_ir.VectorType], b: _ods_ir.Value[_ods_ir.VectorType], c: _ods_ir.Value[_ods_ir.VectorType], index: _ods_ir.Value[_ods_ir.IntegerType], cbsz: _Union[int, _ods_ir.IntegerAttr], abid: _Union[int, _ods_ir.IntegerAttr], *, loc: _Optional[_ods_ir.Location] = None, ip: _Optional[_ods_ir.InsertionPoint] = None):
    operands = []
    attributes = {}
    regions = None
    operands.append(a)
    operands.append(b)
    operands.append(c)
    operands.append(index)
    _ods_context = _ods_get_default_loc_context(loc)
    attributes["cbsz"] = (cbsz if (
    isinstance(cbsz, _ods_ir.Attribute) or
    not _ods_ir.AttrBuilder.contains('I32Attr')) else
      _ods_ir.AttrBuilder.get('I32Attr')(cbsz, context=_ods_context))
    attributes["abid"] = (abid if (
    isinstance(abid, _ods_ir.Attribute) or
    not _ods_ir.AttrBuilder.contains('I32Attr')) else
      _ods_ir.AttrBuilder.get('I32Attr')(abid, context=_ods_context))
    results = []
    results.append(res)
    _ods_successors = None
    super().__init__(self.OPERATION_NAME, self._ODS_REGIONS, self._ODS_OPERAND_SEGMENTS, self._ODS_RESULT_SEGMENTS, attributes=attributes, results=results, operands=operands, successors=_ods_successors, regions=regions, loc=loc, ip=ip)

  @builtins.property
  def a(self) -> _ods_ir.Value[_ods_ir.VectorType]:
    return self.operation.operands[0]

  @builtins.property
  def b(self) -> _ods_ir.Value[_ods_ir.VectorType]:
    return self.operation.operands[1]

  @builtins.property
  def c(self) -> _ods_ir.Value[_ods_ir.VectorType]:
    return self.operation.operands[2]

  @builtins.property
  def index(self) -> _ods_ir.Value[_ods_ir.IntegerType]:
    return self.operation.operands[3]

  @builtins.property
  def cbsz(self) -> _ods_ir.IntegerAttr:
    return self.operation.attributes["cbsz"]

  @cbsz.setter
  def cbsz(self, value: _ods_ir.IntegerAttr):
    if value is None:
      raise ValueError("'None' not allowed as value for mandatory attributes")
    self.operation.attributes["cbsz"] = value

  @builtins.property
  def abid(self) -> _ods_ir.IntegerAttr:
    return self.operation.attributes["abid"]

  @abid.setter
  def abid(self, value: _ods_ir.IntegerAttr):
    if value is None:
      raise ValueError("'None' not allowed as value for mandatory attributes")
    self.operation.attributes["abid"] = value

  @builtins.property
  def res(self) -> _ods_ir.OpResult[_ods_ir.VectorType]:
    return self.operation.results[0]

@_ods_cext.register_op_adaptor(smfmac_f32_32x32x32_fp8_fp8)
class smfmac_f32_32x32x32_fp8_fp8Adaptor(_ods_ir.OpAdaptor):
  OPERATION_NAME = "rocdl.smfmac.f32.32x32x32.fp8.fp8"

  @builtins.property
  def a(self) -> _ods_ir.Value[_ods_ir.VectorType]:
    return self.operands[0]

  @builtins.property
  def b(self) -> _ods_ir.Value[_ods_ir.VectorType]:
    return self.operands[1]

  @builtins.property
  def c(self) -> _ods_ir.Value[_ods_ir.VectorType]:
    return self.operands[2]

  @builtins.property
  def index(self) -> _ods_ir.Value[_ods_ir.IntegerType]:
    return self.operands[3]

  @builtins.property
  def cbsz(self) -> _ods_ir.IntegerAttr:
    return self.attributes["cbsz"]

  @builtins.property
  def abid(self) -> _ods_ir.IntegerAttr:
    return self.attributes["abid"]

def smfmac_f32_32x32x32_fp8_fp8_(res: _ods_ir.Type, a: _ods_ir.Value[_ods_ir.VectorType], b: _ods_ir.Value[_ods_ir.VectorType], c: _ods_ir.Value[_ods_ir.VectorType], index: _ods_ir.Value[_ods_ir.IntegerType], cbsz: _Union[int, _ods_ir.IntegerAttr], abid: _Union[int, _ods_ir.IntegerAttr], *, loc: _Optional[_ods_ir.Location] = None, ip: _Optional[_ods_ir.InsertionPoint] = None) -> _ods_ir.OpResult[_ods_ir.VectorType]:
  return smfmac_f32_32x32x32_fp8_fp8(res=res, a=a, b=b, c=c, index=index, cbsz=cbsz, abid=abid, loc=loc, ip=ip).result

@_ods_cext.register_operation(_Dialect)
class smfmac_f32_32x32x64_bf8_bf8(_ods_ir.OpView):
  r"""
  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>
  ```
  """

  OPERATION_NAME = "rocdl.smfmac.f32.32x32x64.bf8.bf8"

  _ODS_REGIONS = (0, True)

  def __init__(self, res: _ods_ir.Type, a: _ods_ir.Value[_ods_ir.VectorType], b: _ods_ir.Value[_ods_ir.VectorType], c: _ods_ir.Value[_ods_ir.VectorType], index: _ods_ir.Value[_ods_ir.IntegerType], cbsz: _Union[int, _ods_ir.IntegerAttr], abid: _Union[int, _ods_ir.IntegerAttr], *, loc: _Optional[_ods_ir.Location] = None, ip: _Optional[_ods_ir.InsertionPoint] = None):
    operands = []
    attributes = {}
    regions = None
    operands.append(a)
    operands.append(b)
    operands.append(c)
    operands.append(index)
    _ods_context = _ods_get_default_loc_context(loc)
    attributes["cbsz"] = (cbsz if (
    isinstance(cbsz, _ods_ir.Attribute) or
    not _ods_ir.AttrBuilder.contains('I32Attr')) else
      _ods_ir.AttrBuilder.get('I32Attr')(cbsz, context=_ods_context))
    attributes["abid"] = (abid if (
    isinstance(abid, _ods_ir.Attribute) or
    not _ods_ir.AttrBuilder.contains('I32Attr')) else
      _ods_ir.AttrBuilder.get('I32Attr')(abid, context=_ods_context))
    results = []
    results.append(res)
    _ods_successors = None
    super().__init__(self.OPERATION_NAME, self._ODS_REGIONS, self._ODS_OPERAND_SEGMENTS, self._ODS_RESULT_SEGMENTS, attributes=attributes, results=results, operands=operands, successors=_ods_successors, regions=regions, loc=loc, ip=ip)

  @builtins.property
  def a(self) -> _ods_ir.Value[_ods_ir.VectorType]:
    return self.operation.operands[0]

  @builtins.property
  def b(self) -> _ods_ir.Value[_ods_ir.VectorType]:
    return self.operation.operands[1]

  @builtins.property
  def c(self) -> _ods_ir.Value[_ods_ir.VectorType]:
    return self.operation.operands[2]

  @builtins.property
  def index(self) -> _ods_ir.Value[_ods_ir.IntegerType]:
    return self.operation.operands[3]

  @builtins.property
  def cbsz(self) -> _ods_ir.IntegerAttr:
    return self.operation.attributes["cbsz"]

  @cbsz.setter
  def cbsz(self, value: _ods_ir.IntegerAttr):
    if value is None:
      raise ValueError("'None' not allowed as value for mandatory attributes")
    self.operation.attributes["cbsz"] = value

  @builtins.property
  def abid(self) -> _ods_ir.IntegerAttr:
    return self.operation.attributes["abid"]

  @abid.setter
  def abid(self, value: _ods_ir.IntegerAttr):
    if value is None:
      raise ValueError("'None' not allowed as value for mandatory attributes")
    self.operation.attributes["abid"] = value

  @builtins.property
  def res(self) -> _ods_ir.OpResult[_ods_ir.VectorType]:
    return self.operation.results[0]

@_ods_cext.register_op_adaptor(smfmac_f32_32x32x64_bf8_bf8)
class smfmac_f32_32x32x64_bf8_bf8Adaptor(_ods_ir.OpAdaptor):
  OPERATION_NAME = "rocdl.smfmac.f32.32x32x64.bf8.bf8"

  @builtins.property
  def a(self) -> _ods_ir.Value[_ods_ir.VectorType]:
    return self.operands[0]

  @builtins.property
  def b(self) -> _ods_ir.Value[_ods_ir.VectorType]:
    return self.operands[1]

  @builtins.property
  def c(self) -> _ods_ir.Value[_ods_ir.VectorType]:
    return self.operands[2]

  @builtins.property
  def index(self) -> _ods_ir.Value[_ods_ir.IntegerType]:
    return self.operands[3]

  @builtins.property
  def cbsz(self) -> _ods_ir.IntegerAttr:
    return self.attributes["cbsz"]

  @builtins.property
  def abid(self) -> _ods_ir.IntegerAttr:
    return self.attributes["abid"]

def smfmac_f32_32x32x64_bf8_bf8_(res: _ods_ir.Type, a: _ods_ir.Value[_ods_ir.VectorType], b: _ods_ir.Value[_ods_ir.VectorType], c: _ods_ir.Value[_ods_ir.VectorType], index: _ods_ir.Value[_ods_ir.IntegerType], cbsz: _Union[int, _ods_ir.IntegerAttr], abid: _Union[int, _ods_ir.IntegerAttr], *, loc: _Optional[_ods_ir.Location] = None, ip: _Optional[_ods_ir.InsertionPoint] = None) -> _ods_ir.OpResult[_ods_ir.VectorType]:
  return smfmac_f32_32x32x64_bf8_bf8(res=res, a=a, b=b, c=c, index=index, cbsz=cbsz, abid=abid, loc=loc, ip=ip).result

@_ods_cext.register_operation(_Dialect)
class smfmac_f32_32x32x64_bf8_fp8(_ods_ir.OpView):
  r"""
  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>
  ```
  """

  OPERATION_NAME = "rocdl.smfmac.f32.32x32x64.bf8.fp8"

  _ODS_REGIONS = (0, True)

  def __init__(self, res: _ods_ir.Type, a: _ods_ir.Value[_ods_ir.VectorType], b: _ods_ir.Value[_ods_ir.VectorType], c: _ods_ir.Value[_ods_ir.VectorType], index: _ods_ir.Value[_ods_ir.IntegerType], cbsz: _Union[int, _ods_ir.IntegerAttr], abid: _Union[int, _ods_ir.IntegerAttr], *, loc: _Optional[_ods_ir.Location] = None, ip: _Optional[_ods_ir.InsertionPoint] = None):
    operands = []
    attributes = {}
    regions = None
    operands.append(a)
    operands.append(b)
    operands.append(c)
    operands.append(index)
    _ods_context = _ods_get_default_loc_context(loc)
    attributes["cbsz"] = (cbsz if (
    isinstance(cbsz, _ods_ir.Attribute) or
    not _ods_ir.AttrBuilder.contains('I32Attr')) else
      _ods_ir.AttrBuilder.get('I32Attr')(cbsz, context=_ods_context))
    attributes["abid"] = (abid if (
    isinstance(abid, _ods_ir.Attribute) or
    not _ods_ir.AttrBuilder.contains('I32Attr')) else
      _ods_ir.AttrBuilder.get('I32Attr')(abid, context=_ods_context))
    results = []
    results.append(res)
    _ods_successors = None
    super().__init__(self.OPERATION_NAME, self._ODS_REGIONS, self._ODS_OPERAND_SEGMENTS, self._ODS_RESULT_SEGMENTS, attributes=attributes, results=results, operands=operands, successors=_ods_successors, regions=regions, loc=loc, ip=ip)

  @builtins.property
  def a(self) -> _ods_ir.Value[_ods_ir.VectorType]:
    return self.operation.operands[0]

  @builtins.property
  def b(self) -> _ods_ir.Value[_ods_ir.VectorType]:
    return self.operation.operands[1]

  @builtins.property
  def c(self) -> _ods_ir.Value[_ods_ir.VectorType]:
    return self.operation.operands[2]

  @builtins.property
  def index(self) -> _ods_ir.Value[_ods_ir.IntegerType]:
    return self.operation.operands[3]

  @builtins.property
  def cbsz(self) -> _ods_ir.IntegerAttr:
    return self.operation.attributes["cbsz"]

  @cbsz.setter
  def cbsz(self, value: _ods_ir.IntegerAttr):
    if value is None:
      raise ValueError("'None' not allowed as value for mandatory attributes")
    self.operation.attributes["cbsz"] = value

  @builtins.property
  def abid(self) -> _ods_ir.IntegerAttr:
    return self.operation.attributes["abid"]

  @abid.setter
  def abid(self, value: _ods_ir.IntegerAttr):
    if value is None:
      raise ValueError("'None' not allowed as value for mandatory attributes")
    self.operation.attributes["abid"] = value

  @builtins.property
  def res(self) -> _ods_ir.OpResult[_ods_ir.VectorType]:
    return self.operation.results[0]

@_ods_cext.register_op_adaptor(smfmac_f32_32x32x64_bf8_fp8)
class smfmac_f32_32x32x64_bf8_fp8Adaptor(_ods_ir.OpAdaptor):
  OPERATION_NAME = "rocdl.smfmac.f32.32x32x64.bf8.fp8"

  @builtins.property
  def a(self) -> _ods_ir.Value[_ods_ir.VectorType]:
    return self.operands[0]

  @builtins.property
  def b(self) -> _ods_ir.Value[_ods_ir.VectorType]:
    return self.operands[1]

  @builtins.property
  def c(self) -> _ods_ir.Value[_ods_ir.VectorType]:
    return self.operands[2]

  @builtins.property
  def index(self) -> _ods_ir.Value[_ods_ir.IntegerType]:
    return self.operands[3]

  @builtins.property
  def cbsz(self) -> _ods_ir.IntegerAttr:
    return self.attributes["cbsz"]

  @builtins.property
  def abid(self) -> _ods_ir.IntegerAttr:
    return self.attributes["abid"]

def smfmac_f32_32x32x64_bf8_fp8_(res: _ods_ir.Type, a: _ods_ir.Value[_ods_ir.VectorType], b: _ods_ir.Value[_ods_ir.VectorType], c: _ods_ir.Value[_ods_ir.VectorType], index: _ods_ir.Value[_ods_ir.IntegerType], cbsz: _Union[int, _ods_ir.IntegerAttr], abid: _Union[int, _ods_ir.IntegerAttr], *, loc: _Optional[_ods_ir.Location] = None, ip: _Optional[_ods_ir.InsertionPoint] = None) -> _ods_ir.OpResult[_ods_ir.VectorType]:
  return smfmac_f32_32x32x64_bf8_fp8(res=res, a=a, b=b, c=c, index=index, cbsz=cbsz, abid=abid, loc=loc, ip=ip).result

@_ods_cext.register_operation(_Dialect)
class smfmac_f32_32x32x64_fp8_bf8(_ods_ir.OpView):
  r"""
  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>
  ```
  """

  OPERATION_NAME = "rocdl.smfmac.f32.32x32x64.fp8.bf8"

  _ODS_REGIONS = (0, True)

  def __init__(self, res: _ods_ir.Type, a: _ods_ir.Value[_ods_ir.VectorType], b: _ods_ir.Value[_ods_ir.VectorType], c: _ods_ir.Value[_ods_ir.VectorType], index: _ods_ir.Value[_ods_ir.IntegerType], cbsz: _Union[int, _ods_ir.IntegerAttr], abid: _Union[int, _ods_ir.IntegerAttr], *, loc: _Optional[_ods_ir.Location] = None, ip: _Optional[_ods_ir.InsertionPoint] = None):
    operands = []
    attributes = {}
    regions = None
    operands.append(a)
    operands.append(b)
    operands.append(c)
    operands.append(index)
    _ods_context = _ods_get_default_loc_context(loc)
    attributes["cbsz"] = (cbsz if (
    isinstance(cbsz, _ods_ir.Attribute) or
    not _ods_ir.AttrBuilder.contains('I32Attr')) else
      _ods_ir.AttrBuilder.get('I32Attr')(cbsz, context=_ods_context))
    attributes["abid"] = (abid if (
    isinstance(abid, _ods_ir.Attribute) or
    not _ods_ir.AttrBuilder.contains('I32Attr')) else
      _ods_ir.AttrBuilder.get('I32Attr')(abid, context=_ods_context))
    results = []
    results.append(res)
    _ods_successors = None
    super().__init__(self.OPERATION_NAME, self._ODS_REGIONS, self._ODS_OPERAND_SEGMENTS, self._ODS_RESULT_SEGMENTS, attributes=attributes, results=results, operands=operands, successors=_ods_successors, regions=regions, loc=loc, ip=ip)

  @builtins.property
  def a(self) -> _ods_ir.Value[_ods_ir.VectorType]:
    return self.operation.operands[0]

  @builtins.property
  def b(self) -> _ods_ir.Value[_ods_ir.VectorType]:
    return self.operation.operands[1]

  @builtins.property
  def c(self) -> _ods_ir.Value[_ods_ir.VectorType]:
    return self.operation.operands[2]

  @builtins.property
  def index(self) -> _ods_ir.Value[_ods_ir.IntegerType]:
    return self.operation.operands[3]

  @builtins.property
  def cbsz(self) -> _ods_ir.IntegerAttr:
    return self.operation.attributes["cbsz"]

  @cbsz.setter
  def cbsz(self, value: _ods_ir.IntegerAttr):
    if value is None:
      raise ValueError("'None' not allowed as value for mandatory attributes")
    self.operation.attributes["cbsz"] = value

  @builtins.property
  def abid(self) -> _ods_ir.IntegerAttr:
    return self.operation.attributes["abid"]

  @abid.setter
  def abid(self, value: _ods_ir.IntegerAttr):
    if value is None:
      raise ValueError("'None' not allowed as value for mandatory attributes")
    self.operation.attributes["abid"] = value

  @builtins.property
  def res(self) -> _ods_ir.OpResult[_ods_ir.VectorType]:
    return self.operation.results[0]

@_ods_cext.register_op_adaptor(smfmac_f32_32x32x64_fp8_bf8)
class smfmac_f32_32x32x64_fp8_bf8Adaptor(_ods_ir.OpAdaptor):
  OPERATION_NAME = "rocdl.smfmac.f32.32x32x64.fp8.bf8"

  @builtins.property
  def a(self) -> _ods_ir.Value[_ods_ir.VectorType]:
    return self.operands[0]

  @builtins.property
  def b(self) -> _ods_ir.Value[_ods_ir.VectorType]:
    return self.operands[1]

  @builtins.property
  def c(self) -> _ods_ir.Value[_ods_ir.VectorType]:
    return self.operands[2]

  @builtins.property
  def index(self) -> _ods_ir.Value[_ods_ir.IntegerType]:
    return self.operands[3]

  @builtins.property
  def cbsz(self) -> _ods_ir.IntegerAttr:
    return self.attributes["cbsz"]

  @builtins.property
  def abid(self) -> _ods_ir.IntegerAttr:
    return self.attributes["abid"]

def smfmac_f32_32x32x64_fp8_bf8_(res: _ods_ir.Type, a: _ods_ir.Value[_ods_ir.VectorType], b: _ods_ir.Value[_ods_ir.VectorType], c: _ods_ir.Value[_ods_ir.VectorType], index: _ods_ir.Value[_ods_ir.IntegerType], cbsz: _Union[int, _ods_ir.IntegerAttr], abid: _Union[int, _ods_ir.IntegerAttr], *, loc: _Optional[_ods_ir.Location] = None, ip: _Optional[_ods_ir.InsertionPoint] = None) -> _ods_ir.OpResult[_ods_ir.VectorType]:
  return smfmac_f32_32x32x64_fp8_bf8(res=res, a=a, b=b, c=c, index=index, cbsz=cbsz, abid=abid, loc=loc, ip=ip).result

@_ods_cext.register_operation(_Dialect)
class smfmac_f32_32x32x64_fp8_fp8(_ods_ir.OpView):
  r"""
  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>
  ```
  """

  OPERATION_NAME = "rocdl.smfmac.f32.32x32x64.fp8.fp8"

  _ODS_REGIONS = (0, True)

  def __init__(self, res: _ods_ir.Type, a: _ods_ir.Value[_ods_ir.VectorType], b: _ods_ir.Value[_ods_ir.VectorType], c: _ods_ir.Value[_ods_ir.VectorType], index: _ods_ir.Value[_ods_ir.IntegerType], cbsz: _Union[int, _ods_ir.IntegerAttr], abid: _Union[int, _ods_ir.IntegerAttr], *, loc: _Optional[_ods_ir.Location] = None, ip: _Optional[_ods_ir.InsertionPoint] = None):
    operands = []
    attributes = {}
    regions = None
    operands.append(a)
    operands.append(b)
    operands.append(c)
    operands.append(index)
    _ods_context = _ods_get_default_loc_context(loc)
    attributes["cbsz"] = (cbsz if (
    isinstance(cbsz, _ods_ir.Attribute) or
    not _ods_ir.AttrBuilder.contains('I32Attr')) else
      _ods_ir.AttrBuilder.get('I32Attr')(cbsz, context=_ods_context))
    attributes["abid"] = (abid if (
    isinstance(abid, _ods_ir.Attribute) or
    not _ods_ir.AttrBuilder.contains('I32Attr')) else
      _ods_ir.AttrBuilder.get('I32Attr')(abid, context=_ods_context))
    results = []
    results.append(res)
    _ods_successors = None
    super().__init__(self.OPERATION_NAME, self._ODS_REGIONS, self._ODS_OPERAND_SEGMENTS, self._ODS_RESULT_SEGMENTS, attributes=attributes, results=results, operands=operands, successors=_ods_successors, regions=regions, loc=loc, ip=ip)

  @builtins.property
  def a(self) -> _ods_ir.Value[_ods_ir.VectorType]:
    return self.operation.operands[0]

  @builtins.property
  def b(self) -> _ods_ir.Value[_ods_ir.VectorType]:
    return self.operation.operands[1]

  @builtins.property
  def c(self) -> _ods_ir.Value[_ods_ir.VectorType]:
    return self.operation.operands[2]

  @builtins.property
  def index(self) -> _ods_ir.Value[_ods_ir.IntegerType]:
    return self.operation.operands[3]

  @builtins.property
  def cbsz(self) -> _ods_ir.IntegerAttr:
    return self.operation.attributes["cbsz"]

  @cbsz.setter
  def cbsz(self, value: _ods_ir.IntegerAttr):
    if value is None:
      raise ValueError("'None' not allowed as value for mandatory attributes")
    self.operation.attributes["cbsz"] = value

  @builtins.property
  def abid(self) -> _ods_ir.IntegerAttr:
    return self.operation.attributes["abid"]

  @abid.setter
  def abid(self, value: _ods_ir.IntegerAttr):
    if value is None:
      raise ValueError("'None' not allowed as value for mandatory attributes")
    self.operation.attributes["abid"] = value

  @builtins.property
  def res(self) -> _ods_ir.OpResult[_ods_ir.VectorType]:
    return self.operation.results[0]

@_ods_cext.register_op_adaptor(smfmac_f32_32x32x64_fp8_fp8)
class smfmac_f32_32x32x64_fp8_fp8Adaptor(_ods_ir.OpAdaptor):
  OPERATION_NAME = "rocdl.smfmac.f32.32x32x64.fp8.fp8"

  @builtins.property
  def a(self) -> _ods_ir.Value[_ods_ir.VectorType]:
    return self.operands[0]

  @builtins.property
  def b(self) -> _ods_ir.Value[_ods_ir.VectorType]:
    return self.operands[1]

  @builtins.property
  def c(self) -> _ods_ir.Value[_ods_ir.VectorType]:
    return self.operands[2]

  @builtins.property
  def index(self) -> _ods_ir.Value[_ods_ir.IntegerType]:
    return self.operands[3]

  @builtins.property
  def cbsz(self) -> _ods_ir.IntegerAttr:
    return self.attributes["cbsz"]

  @builtins.property
  def abid(self) -> _ods_ir.IntegerAttr:
    return self.attributes["abid"]

def smfmac_f32_32x32x64_fp8_fp8_(res: _ods_ir.Type, a: _ods_ir.Value[_ods_ir.VectorType], b: _ods_ir.Value[_ods_ir.VectorType], c: _ods_ir.Value[_ods_ir.VectorType], index: _ods_ir.Value[_ods_ir.IntegerType], cbsz: _Union[int, _ods_ir.IntegerAttr], abid: _Union[int, _ods_ir.IntegerAttr], *, loc: _Optional[_ods_ir.Location] = None, ip: _Optional[_ods_ir.InsertionPoint] = None) -> _ods_ir.OpResult[_ods_ir.VectorType]:
  return smfmac_f32_32x32x64_fp8_fp8(res=res, a=a, b=b, c=c, index=index, cbsz=cbsz, abid=abid, loc=loc, ip=ip).result

@_ods_cext.register_operation(_Dialect)
class smfmac_i32_16x16x64_i8(_ods_ir.OpView):
  r"""
  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>
  ```
  """

  OPERATION_NAME = "rocdl.smfmac.i32.16x16x64.i8"

  _ODS_REGIONS = (0, True)

  def __init__(self, res: _ods_ir.Type, a: _ods_ir.Value[_ods_ir.VectorType], b: _ods_ir.Value[_ods_ir.VectorType], c: _ods_ir.Value[_ods_ir.VectorType], index: _ods_ir.Value[_ods_ir.IntegerType], cbsz: _Union[int, _ods_ir.IntegerAttr], abid: _Union[int, _ods_ir.IntegerAttr], *, loc: _Optional[_ods_ir.Location] = None, ip: _Optional[_ods_ir.InsertionPoint] = None):
    operands = []
    attributes = {}
    regions = None
    operands.append(a)
    operands.append(b)
    operands.append(c)
    operands.append(index)
    _ods_context = _ods_get_default_loc_context(loc)
    attributes["cbsz"] = (cbsz if (
    isinstance(cbsz, _ods_ir.Attribute) or
    not _ods_ir.AttrBuilder.contains('I32Attr')) else
      _ods_ir.AttrBuilder.get('I32Attr')(cbsz, context=_ods_context))
    attributes["abid"] = (abid if (
    isinstance(abid, _ods_ir.Attribute) or
    not _ods_ir.AttrBuilder.contains('I32Attr')) else
      _ods_ir.AttrBuilder.get('I32Attr')(abid, context=_ods_context))
    results = []
    results.append(res)
    _ods_successors = None
    super().__init__(self.OPERATION_NAME, self._ODS_REGIONS, self._ODS_OPERAND_SEGMENTS, self._ODS_RESULT_SEGMENTS, attributes=attributes, results=results, operands=operands, successors=_ods_successors, regions=regions, loc=loc, ip=ip)

  @builtins.property
  def a(self) -> _ods_ir.Value[_ods_ir.VectorType]:
    return self.operation.operands[0]

  @builtins.property
  def b(self) -> _ods_ir.Value[_ods_ir.VectorType]:
    return self.operation.operands[1]

  @builtins.property
  def c(self) -> _ods_ir.Value[_ods_ir.VectorType]:
    return self.operation.operands[2]

  @builtins.property
  def index(self) -> _ods_ir.Value[_ods_ir.IntegerType]:
    return self.operation.operands[3]

  @builtins.property
  def cbsz(self) -> _ods_ir.IntegerAttr:
    return self.operation.attributes["cbsz"]

  @cbsz.setter
  def cbsz(self, value: _ods_ir.IntegerAttr):
    if value is None:
      raise ValueError("'None' not allowed as value for mandatory attributes")
    self.operation.attributes["cbsz"] = value

  @builtins.property
  def abid(self) -> _ods_ir.IntegerAttr:
    return self.operation.attributes["abid"]

  @abid.setter
  def abid(self, value: _ods_ir.IntegerAttr):
    if value is None:
      raise ValueError("'None' not allowed as value for mandatory attributes")
    self.operation.attributes["abid"] = value

  @builtins.property
  def res(self) -> _ods_ir.OpResult[_ods_ir.VectorType]:
    return self.operation.results[0]

@_ods_cext.register_op_adaptor(smfmac_i32_16x16x64_i8)
class smfmac_i32_16x16x64_i8Adaptor(_ods_ir.OpAdaptor):
  OPERATION_NAME = "rocdl.smfmac.i32.16x16x64.i8"

  @builtins.property
  def a(self) -> _ods_ir.Value[_ods_ir.VectorType]:
    return self.operands[0]

  @builtins.property
  def b(self) -> _ods_ir.Value[_ods_ir.VectorType]:
    return self.operands[1]

  @builtins.property
  def c(self) -> _ods_ir.Value[_ods_ir.VectorType]:
    return self.operands[2]

  @builtins.property
  def index(self) -> _ods_ir.Value[_ods_ir.IntegerType]:
    return self.operands[3]

  @builtins.property
  def cbsz(self) -> _ods_ir.IntegerAttr:
    return self.attributes["cbsz"]

  @builtins.property
  def abid(self) -> _ods_ir.IntegerAttr:
    return self.attributes["abid"]

def smfmac_i32_16x16x64_i8_(res: _ods_ir.Type, a: _ods_ir.Value[_ods_ir.VectorType], b: _ods_ir.Value[_ods_ir.VectorType], c: _ods_ir.Value[_ods_ir.VectorType], index: _ods_ir.Value[_ods_ir.IntegerType], cbsz: _Union[int, _ods_ir.IntegerAttr], abid: _Union[int, _ods_ir.IntegerAttr], *, loc: _Optional[_ods_ir.Location] = None, ip: _Optional[_ods_ir.InsertionPoint] = None) -> _ods_ir.OpResult[_ods_ir.VectorType]:
  return smfmac_i32_16x16x64_i8(res=res, a=a, b=b, c=c, index=index, cbsz=cbsz, abid=abid, loc=loc, ip=ip).result

@_ods_cext.register_operation(_Dialect)
class smfmac_i32_16x16x128_i8(_ods_ir.OpView):
  r"""
  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>
  ```
  """

  OPERATION_NAME = "rocdl.smfmac.i32.16x16x128.i8"

  _ODS_REGIONS = (0, True)

  def __init__(self, res: _ods_ir.Type, a: _ods_ir.Value[_ods_ir.VectorType], b: _ods_ir.Value[_ods_ir.VectorType], c: _ods_ir.Value[_ods_ir.VectorType], index: _ods_ir.Value[_ods_ir.IntegerType], cbsz: _Union[int, _ods_ir.IntegerAttr], abid: _Union[int, _ods_ir.IntegerAttr], *, loc: _Optional[_ods_ir.Location] = None, ip: _Optional[_ods_ir.InsertionPoint] = None):
    operands = []
    attributes = {}
    regions = None
    operands.append(a)
    operands.append(b)
    operands.append(c)
    operands.append(index)
    _ods_context = _ods_get_default_loc_context(loc)
    attributes["cbsz"] = (cbsz if (
    isinstance(cbsz, _ods_ir.Attribute) or
    not _ods_ir.AttrBuilder.contains('I32Attr')) else
      _ods_ir.AttrBuilder.get('I32Attr')(cbsz, context=_ods_context))
    attributes["abid"] = (abid if (
    isinstance(abid, _ods_ir.Attribute) or
    not _ods_ir.AttrBuilder.contains('I32Attr')) else
      _ods_ir.AttrBuilder.get('I32Attr')(abid, context=_ods_context))
    results = []
    results.append(res)
    _ods_successors = None
    super().__init__(self.OPERATION_NAME, self._ODS_REGIONS, self._ODS_OPERAND_SEGMENTS, self._ODS_RESULT_SEGMENTS, attributes=attributes, results=results, operands=operands, successors=_ods_successors, regions=regions, loc=loc, ip=ip)

  @builtins.property
  def a(self) -> _ods_ir.Value[_ods_ir.VectorType]:
    return self.operation.operands[0]

  @builtins.property
  def b(self) -> _ods_ir.Value[_ods_ir.VectorType]:
    return self.operation.operands[1]

  @builtins.property
  def c(self) -> _ods_ir.Value[_ods_ir.VectorType]:
    return self.operation.operands[2]

  @builtins.property
  def index(self) -> _ods_ir.Value[_ods_ir.IntegerType]:
    return self.operation.operands[3]

  @builtins.property
  def cbsz(self) -> _ods_ir.IntegerAttr:
    return self.operation.attributes["cbsz"]

  @cbsz.setter
  def cbsz(self, value: _ods_ir.IntegerAttr):
    if value is None:
      raise ValueError("'None' not allowed as value for mandatory attributes")
    self.operation.attributes["cbsz"] = value

  @builtins.property
  def abid(self) -> _ods_ir.IntegerAttr:
    return self.operation.attributes["abid"]

  @abid.setter
  def abid(self, value: _ods_ir.IntegerAttr):
    if value is None:
      raise ValueError("'None' not allowed as value for mandatory attributes")
    self.operation.attributes["abid"] = value

  @builtins.property
  def res(self) -> _ods_ir.OpResult[_ods_ir.VectorType]:
    return self.operation.results[0]

@_ods_cext.register_op_adaptor(smfmac_i32_16x16x128_i8)
class smfmac_i32_16x16x128_i8Adaptor(_ods_ir.OpAdaptor):
  OPERATION_NAME = "rocdl.smfmac.i32.16x16x128.i8"

  @builtins.property
  def a(self) -> _ods_ir.Value[_ods_ir.VectorType]:
    return self.operands[0]

  @builtins.property
  def b(self) -> _ods_ir.Value[_ods_ir.VectorType]:
    return self.operands[1]

  @builtins.property
  def c(self) -> _ods_ir.Value[_ods_ir.VectorType]:
    return self.operands[2]

  @builtins.property
  def index(self) -> _ods_ir.Value[_ods_ir.IntegerType]:
    return self.operands[3]

  @builtins.property
  def cbsz(self) -> _ods_ir.IntegerAttr:
    return self.attributes["cbsz"]

  @builtins.property
  def abid(self) -> _ods_ir.IntegerAttr:
    return self.attributes["abid"]

def smfmac_i32_16x16x128_i8_(res: _ods_ir.Type, a: _ods_ir.Value[_ods_ir.VectorType], b: _ods_ir.Value[_ods_ir.VectorType], c: _ods_ir.Value[_ods_ir.VectorType], index: _ods_ir.Value[_ods_ir.IntegerType], cbsz: _Union[int, _ods_ir.IntegerAttr], abid: _Union[int, _ods_ir.IntegerAttr], *, loc: _Optional[_ods_ir.Location] = None, ip: _Optional[_ods_ir.InsertionPoint] = None) -> _ods_ir.OpResult[_ods_ir.VectorType]:
  return smfmac_i32_16x16x128_i8(res=res, a=a, b=b, c=c, index=index, cbsz=cbsz, abid=abid, loc=loc, ip=ip).result

@_ods_cext.register_operation(_Dialect)
class smfmac_i32_32x32x32_i8(_ods_ir.OpView):
  r"""
  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>
  ```
  """

  OPERATION_NAME = "rocdl.smfmac.i32.32x32x32.i8"

  _ODS_REGIONS = (0, True)

  def __init__(self, res: _ods_ir.Type, a: _ods_ir.Value[_ods_ir.VectorType], b: _ods_ir.Value[_ods_ir.VectorType], c: _ods_ir.Value[_ods_ir.VectorType], index: _ods_ir.Value[_ods_ir.IntegerType], cbsz: _Union[int, _ods_ir.IntegerAttr], abid: _Union[int, _ods_ir.IntegerAttr], *, loc: _Optional[_ods_ir.Location] = None, ip: _Optional[_ods_ir.InsertionPoint] = None):
    operands = []
    attributes = {}
    regions = None
    operands.append(a)
    operands.append(b)
    operands.append(c)
    operands.append(index)
    _ods_context = _ods_get_default_loc_context(loc)
    attributes["cbsz"] = (cbsz if (
    isinstance(cbsz, _ods_ir.Attribute) or
    not _ods_ir.AttrBuilder.contains('I32Attr')) else
      _ods_ir.AttrBuilder.get('I32Attr')(cbsz, context=_ods_context))
    attributes["abid"] = (abid if (
    isinstance(abid, _ods_ir.Attribute) or
    not _ods_ir.AttrBuilder.contains('I32Attr')) else
      _ods_ir.AttrBuilder.get('I32Attr')(abid, context=_ods_context))
    results = []
    results.append(res)
    _ods_successors = None
    super().__init__(self.OPERATION_NAME, self._ODS_REGIONS, self._ODS_OPERAND_SEGMENTS, self._ODS_RESULT_SEGMENTS, attributes=attributes, results=results, operands=operands, successors=_ods_successors, regions=regions, loc=loc, ip=ip)

  @builtins.property
  def a(self) -> _ods_ir.Value[_ods_ir.VectorType]:
    return self.operation.operands[0]

  @builtins.property
  def b(self) -> _ods_ir.Value[_ods_ir.VectorType]:
    return self.operation.operands[1]

  @builtins.property
  def c(self) -> _ods_ir.Value[_ods_ir.VectorType]:
    return self.operation.operands[2]

  @builtins.property
  def index(self) -> _ods_ir.Value[_ods_ir.IntegerType]:
    return self.operation.operands[3]

  @builtins.property
  def cbsz(self) -> _ods_ir.IntegerAttr:
    return self.operation.attributes["cbsz"]

  @cbsz.setter
  def cbsz(self, value: _ods_ir.IntegerAttr):
    if value is None:
      raise ValueError("'None' not allowed as value for mandatory attributes")
    self.operation.attributes["cbsz"] = value

  @builtins.property
  def abid(self) -> _ods_ir.IntegerAttr:
    return self.operation.attributes["abid"]

  @abid.setter
  def abid(self, value: _ods_ir.IntegerAttr):
    if value is None:
      raise ValueError("'None' not allowed as value for mandatory attributes")
    self.operation.attributes["abid"] = value

  @builtins.property
  def res(self) -> _ods_ir.OpResult[_ods_ir.VectorType]:
    return self.operation.results[0]

@_ods_cext.register_op_adaptor(smfmac_i32_32x32x32_i8)
class smfmac_i32_32x32x32_i8Adaptor(_ods_ir.OpAdaptor):
  OPERATION_NAME = "rocdl.smfmac.i32.32x32x32.i8"

  @builtins.property
  def a(self) -> _ods_ir.Value[_ods_ir.VectorType]:
    return self.operands[0]

  @builtins.property
  def b(self) -> _ods_ir.Value[_ods_ir.VectorType]:
    return self.operands[1]

  @builtins.property
  def c(self) -> _ods_ir.Value[_ods_ir.VectorType]:
    return self.operands[2]

  @builtins.property
  def index(self) -> _ods_ir.Value[_ods_ir.IntegerType]:
    return self.operands[3]

  @builtins.property
  def cbsz(self) -> _ods_ir.IntegerAttr:
    return self.attributes["cbsz"]

  @builtins.property
  def abid(self) -> _ods_ir.IntegerAttr:
    return self.attributes["abid"]

def smfmac_i32_32x32x32_i8_(res: _ods_ir.Type, a: _ods_ir.Value[_ods_ir.VectorType], b: _ods_ir.Value[_ods_ir.VectorType], c: _ods_ir.Value[_ods_ir.VectorType], index: _ods_ir.Value[_ods_ir.IntegerType], cbsz: _Union[int, _ods_ir.IntegerAttr], abid: _Union[int, _ods_ir.IntegerAttr], *, loc: _Optional[_ods_ir.Location] = None, ip: _Optional[_ods_ir.InsertionPoint] = None) -> _ods_ir.OpResult[_ods_ir.VectorType]:
  return smfmac_i32_32x32x32_i8(res=res, a=a, b=b, c=c, index=index, cbsz=cbsz, abid=abid, loc=loc, ip=ip).result

@_ods_cext.register_operation(_Dialect)
class smfmac_i32_32x32x64_i8(_ods_ir.OpView):
  r"""
  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>
  ```
  """

  OPERATION_NAME = "rocdl.smfmac.i32.32x32x64.i8"

  _ODS_REGIONS = (0, True)

  def __init__(self, res: _ods_ir.Type, a: _ods_ir.Value[_ods_ir.VectorType], b: _ods_ir.Value[_ods_ir.VectorType], c: _ods_ir.Value[_ods_ir.VectorType], index: _ods_ir.Value[_ods_ir.IntegerType], cbsz: _Union[int, _ods_ir.IntegerAttr], abid: _Union[int, _ods_ir.IntegerAttr], *, loc: _Optional[_ods_ir.Location] = None, ip: _Optional[_ods_ir.InsertionPoint] = None):
    operands = []
    attributes = {}
    regions = None
    operands.append(a)
    operands.append(b)
    operands.append(c)
    operands.append(index)
    _ods_context = _ods_get_default_loc_context(loc)
    attributes["cbsz"] = (cbsz if (
    isinstance(cbsz, _ods_ir.Attribute) or
    not _ods_ir.AttrBuilder.contains('I32Attr')) else
      _ods_ir.AttrBuilder.get('I32Attr')(cbsz, context=_ods_context))
    attributes["abid"] = (abid if (
    isinstance(abid, _ods_ir.Attribute) or
    not _ods_ir.AttrBuilder.contains('I32Attr')) else
      _ods_ir.AttrBuilder.get('I32Attr')(abid, context=_ods_context))
    results = []
    results.append(res)
    _ods_successors = None
    super().__init__(self.OPERATION_NAME, self._ODS_REGIONS, self._ODS_OPERAND_SEGMENTS, self._ODS_RESULT_SEGMENTS, attributes=attributes, results=results, operands=operands, successors=_ods_successors, regions=regions, loc=loc, ip=ip)

  @builtins.property
  def a(self) -> _ods_ir.Value[_ods_ir.VectorType]:
    return self.operation.operands[0]

  @builtins.property
  def b(self) -> _ods_ir.Value[_ods_ir.VectorType]:
    return self.operation.operands[1]

  @builtins.property
  def c(self) -> _ods_ir.Value[_ods_ir.VectorType]:
    return self.operation.operands[2]

  @builtins.property
  def index(self) -> _ods_ir.Value[_ods_ir.IntegerType]:
    return self.operation.operands[3]

  @builtins.property
  def cbsz(self) -> _ods_ir.IntegerAttr:
    return self.operation.attributes["cbsz"]

  @cbsz.setter
  def cbsz(self, value: _ods_ir.IntegerAttr):
    if value is None:
      raise ValueError("'None' not allowed as value for mandatory attributes")
    self.operation.attributes["cbsz"] = value

  @builtins.property
  def abid(self) -> _ods_ir.IntegerAttr:
    return self.operation.attributes["abid"]

  @abid.setter
  def abid(self, value: _ods_ir.IntegerAttr):
    if value is None:
      raise ValueError("'None' not allowed as value for mandatory attributes")
    self.operation.attributes["abid"] = value

  @builtins.property
  def res(self) -> _ods_ir.OpResult[_ods_ir.VectorType]:
    return self.operation.results[0]

@_ods_cext.register_op_adaptor(smfmac_i32_32x32x64_i8)
class smfmac_i32_32x32x64_i8Adaptor(_ods_ir.OpAdaptor):
  OPERATION_NAME = "rocdl.smfmac.i32.32x32x64.i8"

  @builtins.property
  def a(self) -> _ods_ir.Value[_ods_ir.VectorType]:
    return self.operands[0]

  @builtins.property
  def b(self) -> _ods_ir.Value[_ods_ir.VectorType]:
    return self.operands[1]

  @builtins.property
  def c(self) -> _ods_ir.Value[_ods_ir.VectorType]:
    return self.operands[2]

  @builtins.property
  def index(self) -> _ods_ir.Value[_ods_ir.IntegerType]:
    return self.operands[3]

  @builtins.property
  def cbsz(self) -> _ods_ir.IntegerAttr:
    return self.attributes["cbsz"]

  @builtins.property
  def abid(self) -> _ods_ir.IntegerAttr:
    return self.attributes["abid"]

def smfmac_i32_32x32x64_i8_(res: _ods_ir.Type, a: _ods_ir.Value[_ods_ir.VectorType], b: _ods_ir.Value[_ods_ir.VectorType], c: _ods_ir.Value[_ods_ir.VectorType], index: _ods_ir.Value[_ods_ir.IntegerType], cbsz: _Union[int, _ods_ir.IntegerAttr], abid: _Union[int, _ods_ir.IntegerAttr], *, loc: _Optional[_ods_ir.Location] = None, ip: _Optional[_ods_ir.InsertionPoint] = None) -> _ods_ir.OpResult[_ods_ir.VectorType]:
  return smfmac_i32_32x32x64_i8(res=res, a=a, b=b, c=c, index=index, cbsz=cbsz, abid=abid, loc=loc, ip=ip).result

@_ods_cext.register_operation(_Dialect)
class sudot4(_ods_ir.OpView):
  r"""
  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
  ```
  """

  OPERATION_NAME = "rocdl.sudot4"

  _ODS_REGIONS = (0, True)

  def __init__(self, res: _ods_ir.Type, a: _ods_ir.Value[_ods_ir.IntegerType], b: _ods_ir.Value[_ods_ir.IntegerType], c: _ods_ir.Value[_ods_ir.IntegerType], *, signA: _Optional[_Union[bool, _ods_ir.BoolAttr]] = None, signB: _Optional[_Union[bool, _ods_ir.BoolAttr]] = None, clamp: _Optional[_Union[bool, _ods_ir.BoolAttr]] = None, loc: _Optional[_ods_ir.Location] = None, ip: _Optional[_ods_ir.InsertionPoint] = None):
    operands = []
    attributes = {}
    regions = None
    operands.append(a)
    operands.append(b)
    operands.append(c)
    _ods_context = _ods_get_default_loc_context(loc)
    if signA is not None: attributes["signA"] = (signA if (
        isinstance(signA, _ods_ir.Attribute) or
        not _ods_ir.AttrBuilder.contains('I1Attr')) else
          _ods_ir.AttrBuilder.get('I1Attr')(signA, context=_ods_context))
    if signB is not None: attributes["signB"] = (signB if (
        isinstance(signB, _ods_ir.Attribute) or
        not _ods_ir.AttrBuilder.contains('I1Attr')) else
          _ods_ir.AttrBuilder.get('I1Attr')(signB, context=_ods_context))
    if clamp is not None: attributes["clamp"] = (clamp if (
        isinstance(clamp, _ods_ir.Attribute) or
        not _ods_ir.AttrBuilder.contains('I1Attr')) else
          _ods_ir.AttrBuilder.get('I1Attr')(clamp, context=_ods_context))
    results = []
    results.append(res)
    _ods_successors = None
    super().__init__(self.OPERATION_NAME, self._ODS_REGIONS, self._ODS_OPERAND_SEGMENTS, self._ODS_RESULT_SEGMENTS, attributes=attributes, results=results, operands=operands, successors=_ods_successors, regions=regions, loc=loc, ip=ip)

  @builtins.property
  def a(self) -> _ods_ir.Value[_ods_ir.IntegerType]:
    return self.operation.operands[0]

  @builtins.property
  def b(self) -> _ods_ir.Value[_ods_ir.IntegerType]:
    return self.operation.operands[1]

  @builtins.property
  def c(self) -> _ods_ir.Value[_ods_ir.IntegerType]:
    return self.operation.operands[2]

  @builtins.property
  def signA(self) -> _ods_ir.BoolAttr:
    return self.operation.attributes["signA"]

  @signA.setter
  def signA(self, value: _ods_ir.BoolAttr):
    if value is None:
      raise ValueError("'None' not allowed as value for mandatory attributes")
    self.operation.attributes["signA"] = value

  @builtins.property
  def signB(self) -> _ods_ir.BoolAttr:
    return self.operation.attributes["signB"]

  @signB.setter
  def signB(self, value: _ods_ir.BoolAttr):
    if value is None:
      raise ValueError("'None' not allowed as value for mandatory attributes")
    self.operation.attributes["signB"] = value

  @builtins.property
  def clamp(self) -> _ods_ir.BoolAttr:
    return self.operation.attributes["clamp"]

  @clamp.setter
  def clamp(self, value: _ods_ir.BoolAttr):
    if value is None:
      raise ValueError("'None' not allowed as value for mandatory attributes")
    self.operation.attributes["clamp"] = value

  @builtins.property
  def res(self) -> _ods_ir.OpResult[_ods_ir.IntegerType]:
    return self.operation.results[0]

@_ods_cext.register_op_adaptor(sudot4)
class sudot4Adaptor(_ods_ir.OpAdaptor):
  OPERATION_NAME = "rocdl.sudot4"

  @builtins.property
  def a(self) -> _ods_ir.Value[_ods_ir.IntegerType]:
    return self.operands[0]

  @builtins.property
  def b(self) -> _ods_ir.Value[_ods_ir.IntegerType]:
    return self.operands[1]

  @builtins.property
  def c(self) -> _ods_ir.Value[_ods_ir.IntegerType]:
    return self.operands[2]

  @builtins.property
  def signA(self) -> _ods_ir.BoolAttr:
    return self.attributes["signA"]

  @builtins.property
  def signB(self) -> _ods_ir.BoolAttr:
    return self.attributes["signB"]

  @builtins.property
  def clamp(self) -> _ods_ir.BoolAttr:
    return self.attributes["clamp"]

def sudot4_(res: _ods_ir.Type, a: _ods_ir.Value[_ods_ir.IntegerType], b: _ods_ir.Value[_ods_ir.IntegerType], c: _ods_ir.Value[_ods_ir.IntegerType], *, sign_a: _Optional[_Union[bool, _ods_ir.BoolAttr]] = None, sign_b: _Optional[_Union[bool, _ods_ir.BoolAttr]] = None, clamp: _Optional[_Union[bool, _ods_ir.BoolAttr]] = None, loc: _Optional[_ods_ir.Location] = None, ip: _Optional[_ods_ir.InsertionPoint] = None) -> _ods_ir.OpResult[_ods_ir.IntegerType]:
  return sudot4(res=res, a=a, b=b, c=c, signA=sign_a, signB=sign_b, clamp=clamp, loc=loc, ip=ip).result

@_ods_cext.register_operation(_Dialect)
class sudot8(_ods_ir.OpView):
  r"""
  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
  ```
  """

  OPERATION_NAME = "rocdl.sudot8"

  _ODS_REGIONS = (0, True)

  def __init__(self, res: _ods_ir.Type, a: _ods_ir.Value[_ods_ir.IntegerType], b: _ods_ir.Value[_ods_ir.IntegerType], c: _ods_ir.Value[_ods_ir.IntegerType], *, signA: _Optional[_Union[bool, _ods_ir.BoolAttr]] = None, signB: _Optional[_Union[bool, _ods_ir.BoolAttr]] = None, clamp: _Optional[_Union[bool, _ods_ir.BoolAttr]] = None, loc: _Optional[_ods_ir.Location] = None, ip: _Optional[_ods_ir.InsertionPoint] = None):
    operands = []
    attributes = {}
    regions = None
    operands.append(a)
    operands.append(b)
    operands.append(c)
    _ods_context = _ods_get_default_loc_context(loc)
    if signA is not None: attributes["signA"] = (signA if (
        isinstance(signA, _ods_ir.Attribute) or
        not _ods_ir.AttrBuilder.contains('I1Attr')) else
          _ods_ir.AttrBuilder.get('I1Attr')(signA, context=_ods_context))
    if signB is not None: attributes["signB"] = (signB if (
        isinstance(signB, _ods_ir.Attribute) or
        not _ods_ir.AttrBuilder.contains('I1Attr')) else
          _ods_ir.AttrBuilder.get('I1Attr')(signB, context=_ods_context))
    if clamp is not None: attributes["clamp"] = (clamp if (
        isinstance(clamp, _ods_ir.Attribute) or
        not _ods_ir.AttrBuilder.contains('I1Attr')) else
          _ods_ir.AttrBuilder.get('I1Attr')(clamp, context=_ods_context))
    results = []
    results.append(res)
    _ods_successors = None
    super().__init__(self.OPERATION_NAME, self._ODS_REGIONS, self._ODS_OPERAND_SEGMENTS, self._ODS_RESULT_SEGMENTS, attributes=attributes, results=results, operands=operands, successors=_ods_successors, regions=regions, loc=loc, ip=ip)

  @builtins.property
  def a(self) -> _ods_ir.Value[_ods_ir.IntegerType]:
    return self.operation.operands[0]

  @builtins.property
  def b(self) -> _ods_ir.Value[_ods_ir.IntegerType]:
    return self.operation.operands[1]

  @builtins.property
  def c(self) -> _ods_ir.Value[_ods_ir.IntegerType]:
    return self.operation.operands[2]

  @builtins.property
  def signA(self) -> _ods_ir.BoolAttr:
    return self.operation.attributes["signA"]

  @signA.setter
  def signA(self, value: _ods_ir.BoolAttr):
    if value is None:
      raise ValueError("'None' not allowed as value for mandatory attributes")
    self.operation.attributes["signA"] = value

  @builtins.property
  def signB(self) -> _ods_ir.BoolAttr:
    return self.operation.attributes["signB"]

  @signB.setter
  def signB(self, value: _ods_ir.BoolAttr):
    if value is None:
      raise ValueError("'None' not allowed as value for mandatory attributes")
    self.operation.attributes["signB"] = value

  @builtins.property
  def clamp(self) -> _ods_ir.BoolAttr:
    return self.operation.attributes["clamp"]

  @clamp.setter
  def clamp(self, value: _ods_ir.BoolAttr):
    if value is None:
      raise ValueError("'None' not allowed as value for mandatory attributes")
    self.operation.attributes["clamp"] = value

  @builtins.property
  def res(self) -> _ods_ir.OpResult[_ods_ir.IntegerType]:
    return self.operation.results[0]

@_ods_cext.register_op_adaptor(sudot8)
class sudot8Adaptor(_ods_ir.OpAdaptor):
  OPERATION_NAME = "rocdl.sudot8"

  @builtins.property
  def a(self) -> _ods_ir.Value[_ods_ir.IntegerType]:
    return self.operands[0]

  @builtins.property
  def b(self) -> _ods_ir.Value[_ods_ir.IntegerType]:
    return self.operands[1]

  @builtins.property
  def c(self) -> _ods_ir.Value[_ods_ir.IntegerType]:
    return self.operands[2]

  @builtins.property
  def signA(self) -> _ods_ir.BoolAttr:
    return self.attributes["signA"]

  @builtins.property
  def signB(self) -> _ods_ir.BoolAttr:
    return self.attributes["signB"]

  @builtins.property
  def clamp(self) -> _ods_ir.BoolAttr:
    return self.attributes["clamp"]

def sudot8_(res: _ods_ir.Type, a: _ods_ir.Value[_ods_ir.IntegerType], b: _ods_ir.Value[_ods_ir.IntegerType], c: _ods_ir.Value[_ods_ir.IntegerType], *, sign_a: _Optional[_Union[bool, _ods_ir.BoolAttr]] = None, sign_b: _Optional[_Union[bool, _ods_ir.BoolAttr]] = None, clamp: _Optional[_Union[bool, _ods_ir.BoolAttr]] = None, loc: _Optional[_ods_ir.Location] = None, ip: _Optional[_ods_ir.InsertionPoint] = None) -> _ods_ir.OpResult[_ods_ir.IntegerType]:
  return sudot8(res=res, a=a, b=b, c=c, signA=sign_a, signB=sign_b, clamp=clamp, loc=loc, ip=ip).result

@_ods_cext.register_operation(_Dialect)
class swmmac_bf16_16x16x32_bf16(_ods_ir.OpView):
  OPERATION_NAME = "rocdl.swmmac.bf16.16x16x32.bf16"

  _ODS_REGIONS = (0, True)

  def __init__(self, res: _ods_ir.Type, a: _ods_ir.Value[_ods_ir.VectorType], b: _ods_ir.Value[_ods_ir.VectorType], c: _ods_ir.Value[_ods_ir.VectorType], index: _ods_ir.Value[_ods_ir.IntegerType], *, loc: _Optional[_ods_ir.Location] = None, ip: _Optional[_ods_ir.InsertionPoint] = None):
    operands = []
    attributes = {}
    regions = None
    operands.append(a)
    operands.append(b)
    operands.append(c)
    operands.append(index)
    _ods_context = _ods_get_default_loc_context(loc)
    results = []
    results.append(res)
    _ods_successors = None
    super().__init__(self.OPERATION_NAME, self._ODS_REGIONS, self._ODS_OPERAND_SEGMENTS, self._ODS_RESULT_SEGMENTS, attributes=attributes, results=results, operands=operands, successors=_ods_successors, regions=regions, loc=loc, ip=ip)

  @builtins.property
  def a(self) -> _ods_ir.Value[_ods_ir.VectorType]:
    return self.operation.operands[0]

  @builtins.property
  def b(self) -> _ods_ir.Value[_ods_ir.VectorType]:
    return self.operation.operands[1]

  @builtins.property
  def c(self) -> _ods_ir.Value[_ods_ir.VectorType]:
    return self.operation.operands[2]

  @builtins.property
  def index(self) -> _ods_ir.Value[_ods_ir.IntegerType]:
    return self.operation.operands[3]

  @builtins.property
  def res(self) -> _ods_ir.OpResult[_ods_ir.VectorType]:
    return self.operation.results[0]

@_ods_cext.register_op_adaptor(swmmac_bf16_16x16x32_bf16)
class swmmac_bf16_16x16x32_bf16Adaptor(_ods_ir.OpAdaptor):
  OPERATION_NAME = "rocdl.swmmac.bf16.16x16x32.bf16"

  @builtins.property
  def a(self) -> _ods_ir.Value[_ods_ir.VectorType]:
    return self.operands[0]

  @builtins.property
  def b(self) -> _ods_ir.Value[_ods_ir.VectorType]:
    return self.operands[1]

  @builtins.property
  def c(self) -> _ods_ir.Value[_ods_ir.VectorType]:
    return self.operands[2]

  @builtins.property
  def index(self) -> _ods_ir.Value[_ods_ir.IntegerType]:
    return self.operands[3]

def swmmac_bf16_16x16x32_bf16_(res: _ods_ir.Type, a: _ods_ir.Value[_ods_ir.VectorType], b: _ods_ir.Value[_ods_ir.VectorType], c: _ods_ir.Value[_ods_ir.VectorType], index: _ods_ir.Value[_ods_ir.IntegerType], *, loc: _Optional[_ods_ir.Location] = None, ip: _Optional[_ods_ir.InsertionPoint] = None) -> _ods_ir.OpResult[_ods_ir.VectorType]:
  return swmmac_bf16_16x16x32_bf16(res=res, a=a, b=b, c=c, index=index, loc=loc, ip=ip).result

@_ods_cext.register_operation(_Dialect)
class swmmac_bf16_16x16x64_bf16(_ods_ir.OpView):
  OPERATION_NAME = "rocdl.swmmac.bf16.16x16x64.bf16"

  _ODS_REGIONS = (0, True)

  def __init__(self, res: _ods_ir.Type, a: _ods_ir.Value, b: _ods_ir.Value, c: _ods_ir.Value, index: _ods_ir.Value[_ods_ir.IntegerType], *, signA: _Optional[_Union[bool, _ods_ir.BoolAttr]] = None, signB: _Optional[_Union[bool, _ods_ir.BoolAttr]] = None, reuseA: _Optional[_Union[bool, _ods_ir.BoolAttr]] = None, reuseB: _Optional[_Union[bool, _ods_ir.BoolAttr]] = None, loc: _Optional[_ods_ir.Location] = None, ip: _Optional[_ods_ir.InsertionPoint] = None):
    operands = []
    attributes = {}
    regions = None
    operands.append(a)
    operands.append(b)
    operands.append(c)
    operands.append(index)
    _ods_context = _ods_get_default_loc_context(loc)
    if signA is not None: attributes["signA"] = (signA if (
        isinstance(signA, _ods_ir.Attribute) or
        not _ods_ir.AttrBuilder.contains('I1Attr')) else
          _ods_ir.AttrBuilder.get('I1Attr')(signA, context=_ods_context))
    if signB is not None: attributes["signB"] = (signB if (
        isinstance(signB, _ods_ir.Attribute) or
        not _ods_ir.AttrBuilder.contains('I1Attr')) else
          _ods_ir.AttrBuilder.get('I1Attr')(signB, context=_ods_context))
    if reuseA is not None: attributes["reuseA"] = (reuseA if (
        isinstance(reuseA, _ods_ir.Attribute) or
        not _ods_ir.AttrBuilder.contains('I1Attr')) else
          _ods_ir.AttrBuilder.get('I1Attr')(reuseA, context=_ods_context))
    if reuseB is not None: attributes["reuseB"] = (reuseB if (
        isinstance(reuseB, _ods_ir.Attribute) or
        not _ods_ir.AttrBuilder.contains('I1Attr')) else
          _ods_ir.AttrBuilder.get('I1Attr')(reuseB, context=_ods_context))
    results = []
    results.append(res)
    _ods_successors = None
    super().__init__(self.OPERATION_NAME, self._ODS_REGIONS, self._ODS_OPERAND_SEGMENTS, self._ODS_RESULT_SEGMENTS, attributes=attributes, results=results, operands=operands, successors=_ods_successors, regions=regions, loc=loc, ip=ip)

  @builtins.property
  def a(self) -> _ods_ir.Value:
    return self.operation.operands[0]

  @builtins.property
  def b(self) -> _ods_ir.Value:
    return self.operation.operands[1]

  @builtins.property
  def c(self) -> _ods_ir.Value:
    return self.operation.operands[2]

  @builtins.property
  def index(self) -> _ods_ir.Value[_ods_ir.IntegerType]:
    return self.operation.operands[3]

  @builtins.property
  def signA(self) -> _ods_ir.BoolAttr:
    return self.operation.attributes["signA"]

  @signA.setter
  def signA(self, value: _ods_ir.BoolAttr):
    if value is None:
      raise ValueError("'None' not allowed as value for mandatory attributes")
    self.operation.attributes["signA"] = value

  @builtins.property
  def signB(self) -> _ods_ir.BoolAttr:
    return self.operation.attributes["signB"]

  @signB.setter
  def signB(self, value: _ods_ir.BoolAttr):
    if value is None:
      raise ValueError("'None' not allowed as value for mandatory attributes")
    self.operation.attributes["signB"] = value

  @builtins.property
  def reuseA(self) -> _ods_ir.BoolAttr:
    return self.operation.attributes["reuseA"]

  @reuseA.setter
  def reuseA(self, value: _ods_ir.BoolAttr):
    if value is None:
      raise ValueError("'None' not allowed as value for mandatory attributes")
    self.operation.attributes["reuseA"] = value

  @builtins.property
  def reuseB(self) -> _ods_ir.BoolAttr:
    return self.operation.attributes["reuseB"]

  @reuseB.setter
  def reuseB(self, value: _ods_ir.BoolAttr):
    if value is None:
      raise ValueError("'None' not allowed as value for mandatory attributes")
    self.operation.attributes["reuseB"] = value

  @builtins.property
  def res(self) -> _ods_ir.OpResult:
    return self.operation.results[0]

@_ods_cext.register_op_adaptor(swmmac_bf16_16x16x64_bf16)
class swmmac_bf16_16x16x64_bf16Adaptor(_ods_ir.OpAdaptor):
  OPERATION_NAME = "rocdl.swmmac.bf16.16x16x64.bf16"

  @builtins.property
  def a(self) -> _ods_ir.Value:
    return self.operands[0]

  @builtins.property
  def b(self) -> _ods_ir.Value:
    return self.operands[1]

  @builtins.property
  def c(self) -> _ods_ir.Value:
    return self.operands[2]

  @builtins.property
  def index(self) -> _ods_ir.Value[_ods_ir.IntegerType]:
    return self.operands[3]

  @builtins.property
  def signA(self) -> _ods_ir.BoolAttr:
    return self.attributes["signA"]

  @builtins.property
  def signB(self) -> _ods_ir.BoolAttr:
    return self.attributes["signB"]

  @builtins.property
  def reuseA(self) -> _ods_ir.BoolAttr:
    return self.attributes["reuseA"]

  @builtins.property
  def reuseB(self) -> _ods_ir.BoolAttr:
    return self.attributes["reuseB"]

def swmmac_bf16_16x16x64_bf16_(res: _ods_ir.Type, a: _ods_ir.Value, b: _ods_ir.Value, c: _ods_ir.Value, index: _ods_ir.Value[_ods_ir.IntegerType], *, sign_a: _Optional[_Union[bool, _ods_ir.BoolAttr]] = None, sign_b: _Optional[_Union[bool, _ods_ir.BoolAttr]] = None, reuse_a: _Optional[_Union[bool, _ods_ir.BoolAttr]] = None, reuse_b: _Optional[_Union[bool, _ods_ir.BoolAttr]] = None, loc: _Optional[_ods_ir.Location] = None, ip: _Optional[_ods_ir.InsertionPoint] = None) -> _ods_ir.OpResult:
  return swmmac_bf16_16x16x64_bf16(res=res, a=a, b=b, c=c, index=index, signA=sign_a, signB=sign_b, reuseA=reuse_a, reuseB=reuse_b, loc=loc, ip=ip).result

@_ods_cext.register_operation(_Dialect)
class swmmac_bf16f32_16x16x64_bf16(_ods_ir.OpView):
  OPERATION_NAME = "rocdl.swmmac.bf16f32.16x16x64.bf16"

  _ODS_REGIONS = (0, True)

  def __init__(self, res: _ods_ir.Type, a: _ods_ir.Value, b: _ods_ir.Value, c: _ods_ir.Value, index: _ods_ir.Value[_ods_ir.IntegerType], *, signA: _Optional[_Union[bool, _ods_ir.BoolAttr]] = None, signB: _Optional[_Union[bool, _ods_ir.BoolAttr]] = None, reuseA: _Optional[_Union[bool, _ods_ir.BoolAttr]] = None, reuseB: _Optional[_Union[bool, _ods_ir.BoolAttr]] = None, loc: _Optional[_ods_ir.Location] = None, ip: _Optional[_ods_ir.InsertionPoint] = None):
    operands = []
    attributes = {}
    regions = None
    operands.append(a)
    operands.append(b)
    operands.append(c)
    operands.append(index)
    _ods_context = _ods_get_default_loc_context(loc)
    if signA is not None: attributes["signA"] = (signA if (
        isinstance(signA, _ods_ir.Attribute) or
        not _ods_ir.AttrBuilder.contains('I1Attr')) else
          _ods_ir.AttrBuilder.get('I1Attr')(signA, context=_ods_context))
    if signB is not None: attributes["signB"] = (signB if (
        isinstance(signB, _ods_ir.Attribute) or
        not _ods_ir.AttrBuilder.contains('I1Attr')) else
          _ods_ir.AttrBuilder.get('I1Attr')(signB, context=_ods_context))
    if reuseA is not None: attributes["reuseA"] = (reuseA if (
        isinstance(reuseA, _ods_ir.Attribute) or
        not _ods_ir.AttrBuilder.contains('I1Attr')) else
          _ods_ir.AttrBuilder.get('I1Attr')(reuseA, context=_ods_context))
    if reuseB is not None: attributes["reuseB"] = (reuseB if (
        isinstance(reuseB, _ods_ir.Attribute) or
        not _ods_ir.AttrBuilder.contains('I1Attr')) else
          _ods_ir.AttrBuilder.get('I1Attr')(reuseB, context=_ods_context))
    results = []
    results.append(res)
    _ods_successors = None
    super().__init__(self.OPERATION_NAME, self._ODS_REGIONS, self._ODS_OPERAND_SEGMENTS, self._ODS_RESULT_SEGMENTS, attributes=attributes, results=results, operands=operands, successors=_ods_successors, regions=regions, loc=loc, ip=ip)

  @builtins.property
  def a(self) -> _ods_ir.Value:
    return self.operation.operands[0]

  @builtins.property
  def b(self) -> _ods_ir.Value:
    return self.operation.operands[1]

  @builtins.property
  def c(self) -> _ods_ir.Value:
    return self.operation.operands[2]

  @builtins.property
  def index(self) -> _ods_ir.Value[_ods_ir.IntegerType]:
    return self.operation.operands[3]

  @builtins.property
  def signA(self) -> _ods_ir.BoolAttr:
    return self.operation.attributes["signA"]

  @signA.setter
  def signA(self, value: _ods_ir.BoolAttr):
    if value is None:
      raise ValueError("'None' not allowed as value for mandatory attributes")
    self.operation.attributes["signA"] = value

  @builtins.property
  def signB(self) -> _ods_ir.BoolAttr:
    return self.operation.attributes["signB"]

  @signB.setter
  def signB(self, value: _ods_ir.BoolAttr):
    if value is None:
      raise ValueError("'None' not allowed as value for mandatory attributes")
    self.operation.attributes["signB"] = value

  @builtins.property
  def reuseA(self) -> _ods_ir.BoolAttr:
    return self.operation.attributes["reuseA"]

  @reuseA.setter
  def reuseA(self, value: _ods_ir.BoolAttr):
    if value is None:
      raise ValueError("'None' not allowed as value for mandatory attributes")
    self.operation.attributes["reuseA"] = value

  @builtins.property
  def reuseB(self) -> _ods_ir.BoolAttr:
    return self.operation.attributes["reuseB"]

  @reuseB.setter
  def reuseB(self, value: _ods_ir.BoolAttr):
    if value is None:
      raise ValueError("'None' not allowed as value for mandatory attributes")
    self.operation.attributes["reuseB"] = value

  @builtins.property
  def res(self) -> _ods_ir.OpResult:
    return self.operation.results[0]

@_ods_cext.register_op_adaptor(swmmac_bf16f32_16x16x64_bf16)
class swmmac_bf16f32_16x16x64_bf16Adaptor(_ods_ir.OpAdaptor):
  OPERATION_NAME = "rocdl.swmmac.bf16f32.16x16x64.bf16"

  @builtins.property
  def a(self) -> _ods_ir.Value:
    return self.operands[0]

  @builtins.property
  def b(self) -> _ods_ir.Value:
    return self.operands[1]

  @builtins.property
  def c(self) -> _ods_ir.Value:
    return self.operands[2]

  @builtins.property
  def index(self) -> _ods_ir.Value[_ods_ir.IntegerType]:
    return self.operands[3]

  @builtins.property
  def signA(self) -> _ods_ir.BoolAttr:
    return self.attributes["signA"]

  @builtins.property
  def signB(self) -> _ods_ir.BoolAttr:
    return self.attributes["signB"]

  @builtins.property
  def reuseA(self) -> _ods_ir.BoolAttr:
    return self.attributes["reuseA"]

  @builtins.property
  def reuseB(self) -> _ods_ir.BoolAttr:
    return self.attributes["reuseB"]

def swmmac_bf16f32_16x16x64_bf16_(res: _ods_ir.Type, a: _ods_ir.Value, b: _ods_ir.Value, c: _ods_ir.Value, index: _ods_ir.Value[_ods_ir.IntegerType], *, sign_a: _Optional[_Union[bool, _ods_ir.BoolAttr]] = None, sign_b: _Optional[_Union[bool, _ods_ir.BoolAttr]] = None, reuse_a: _Optional[_Union[bool, _ods_ir.BoolAttr]] = None, reuse_b: _Optional[_Union[bool, _ods_ir.BoolAttr]] = None, loc: _Optional[_ods_ir.Location] = None, ip: _Optional[_ods_ir.InsertionPoint] = None) -> _ods_ir.OpResult:
  return swmmac_bf16f32_16x16x64_bf16(res=res, a=a, b=b, c=c, index=index, signA=sign_a, signB=sign_b, reuseA=reuse_a, reuseB=reuse_b, loc=loc, ip=ip).result

@_ods_cext.register_operation(_Dialect)
class swmmac_f16_16x16x32_f16(_ods_ir.OpView):
  OPERATION_NAME = "rocdl.swmmac.f16.16x16x32.f16"

  _ODS_REGIONS = (0, True)

  def __init__(self, res: _ods_ir.Type, a: _ods_ir.Value[_ods_ir.VectorType], b: _ods_ir.Value[_ods_ir.VectorType], c: _ods_ir.Value[_ods_ir.VectorType], index: _ods_ir.Value[_ods_ir.IntegerType], *, loc: _Optional[_ods_ir.Location] = None, ip: _Optional[_ods_ir.InsertionPoint] = None):
    operands = []
    attributes = {}
    regions = None
    operands.append(a)
    operands.append(b)
    operands.append(c)
    operands.append(index)
    _ods_context = _ods_get_default_loc_context(loc)
    results = []
    results.append(res)
    _ods_successors = None
    super().__init__(self.OPERATION_NAME, self._ODS_REGIONS, self._ODS_OPERAND_SEGMENTS, self._ODS_RESULT_SEGMENTS, attributes=attributes, results=results, operands=operands, successors=_ods_successors, regions=regions, loc=loc, ip=ip)

  @builtins.property
  def a(self) -> _ods_ir.Value[_ods_ir.VectorType]:
    return self.operation.operands[0]

  @builtins.property
  def b(self) -> _ods_ir.Value[_ods_ir.VectorType]:
    return self.operation.operands[1]

  @builtins.property
  def c(self) -> _ods_ir.Value[_ods_ir.VectorType]:
    return self.operation.operands[2]

  @builtins.property
  def index(self) -> _ods_ir.Value[_ods_ir.IntegerType]:
    return self.operation.operands[3]

  @builtins.property
  def res(self) -> _ods_ir.OpResult[_ods_ir.VectorType]:
    return self.operation.results[0]

@_ods_cext.register_op_adaptor(swmmac_f16_16x16x32_f16)
class swmmac_f16_16x16x32_f16Adaptor(_ods_ir.OpAdaptor):
  OPERATION_NAME = "rocdl.swmmac.f16.16x16x32.f16"

  @builtins.property
  def a(self) -> _ods_ir.Value[_ods_ir.VectorType]:
    return self.operands[0]

  @builtins.property
  def b(self) -> _ods_ir.Value[_ods_ir.VectorType]:
    return self.operands[1]

  @builtins.property
  def c(self) -> _ods_ir.Value[_ods_ir.VectorType]:
    return self.operands[2]

  @builtins.property
  def index(self) -> _ods_ir.Value[_ods_ir.IntegerType]:
    return self.operands[3]

def swmmac_f16_16x16x32_f16_(res: _ods_ir.Type, a: _ods_ir.Value[_ods_ir.VectorType], b: _ods_ir.Value[_ods_ir.VectorType], c: _ods_ir.Value[_ods_ir.VectorType], index: _ods_ir.Value[_ods_ir.IntegerType], *, loc: _Optional[_ods_ir.Location] = None, ip: _Optional[_ods_ir.InsertionPoint] = None) -> _ods_ir.OpResult[_ods_ir.VectorType]:
  return swmmac_f16_16x16x32_f16(res=res, a=a, b=b, c=c, index=index, loc=loc, ip=ip).result

@_ods_cext.register_operation(_Dialect)
class swmmac_f16_16x16x64_f16(_ods_ir.OpView):
  OPERATION_NAME = "rocdl.swmmac.f16.16x16x64.f16"

  _ODS_REGIONS = (0, True)

  def __init__(self, res: _ods_ir.Type, a: _ods_ir.Value, b: _ods_ir.Value, c: _ods_ir.Value, index: _ods_ir.Value[_ods_ir.IntegerType], *, signA: _Optional[_Union[bool, _ods_ir.BoolAttr]] = None, signB: _Optional[_Union[bool, _ods_ir.BoolAttr]] = None, reuseA: _Optional[_Union[bool, _ods_ir.BoolAttr]] = None, reuseB: _Optional[_Union[bool, _ods_ir.BoolAttr]] = None, loc: _Optional[_ods_ir.Location] = None, ip: _Optional[_ods_ir.InsertionPoint] = None):
    operands = []
    attributes = {}
    regions = None
    operands.append(a)
    operands.append(b)
    operands.append(c)
    operands.append(index)
    _ods_context = _ods_get_default_loc_context(loc)
    if signA is not None: attributes["signA"] = (signA if (
        isinstance(signA, _ods_ir.Attribute) or
        not _ods_ir.AttrBuilder.contains('I1Attr')) else
          _ods_ir.AttrBuilder.get('I1Attr')(signA, context=_ods_context))
    if signB is not None: attributes["signB"] = (signB if (
        isinstance(signB, _ods_ir.Attribute) or
        not _ods_ir.AttrBuilder.contains('I1Attr')) else
          _ods_ir.AttrBuilder.get('I1Attr')(signB, context=_ods_context))
    if reuseA is not None: attributes["reuseA"] = (reuseA if (
        isinstance(reuseA, _ods_ir.Attribute) or
        not _ods_ir.AttrBuilder.contains('I1Attr')) else
          _ods_ir.AttrBuilder.get('I1Attr')(reuseA, context=_ods_context))
    if reuseB is not None: attributes["reuseB"] = (reuseB if (
        isinstance(reuseB, _ods_ir.Attribute) or
        not _ods_ir.AttrBuilder.contains('I1Attr')) else
          _ods_ir.AttrBuilder.get('I1Attr')(reuseB, context=_ods_context))
    results = []
    results.append(res)
    _ods_successors = None
    super().__init__(self.OPERATION_NAME, self._ODS_REGIONS, self._ODS_OPERAND_SEGMENTS, self._ODS_RESULT_SEGMENTS, attributes=attributes, results=results, operands=operands, successors=_ods_successors, regions=regions, loc=loc, ip=ip)

  @builtins.property
  def a(self) -> _ods_ir.Value:
    return self.operation.operands[0]

  @builtins.property
  def b(self) -> _ods_ir.Value:
    return self.operation.operands[1]

  @builtins.property
  def c(self) -> _ods_ir.Value:
    return self.operation.operands[2]

  @builtins.property
  def index(self) -> _ods_ir.Value[_ods_ir.IntegerType]:
    return self.operation.operands[3]

  @builtins.property
  def signA(self) -> _ods_ir.BoolAttr:
    return self.operation.attributes["signA"]

  @signA.setter
  def signA(self, value: _ods_ir.BoolAttr):
    if value is None:
      raise ValueError("'None' not allowed as value for mandatory attributes")
    self.operation.attributes["signA"] = value

  @builtins.property
  def signB(self) -> _ods_ir.BoolAttr:
    return self.operation.attributes["signB"]

  @signB.setter
  def signB(self, value: _ods_ir.BoolAttr):
    if value is None:
      raise ValueError("'None' not allowed as value for mandatory attributes")
    self.operation.attributes["signB"] = value

  @builtins.property
  def reuseA(self) -> _ods_ir.BoolAttr:
    return self.operation.attributes["reuseA"]

  @reuseA.setter
  def reuseA(self, value: _ods_ir.BoolAttr):
    if value is None:
      raise ValueError("'None' not allowed as value for mandatory attributes")
    self.operation.attributes["reuseA"] = value

  @builtins.property
  def reuseB(self) -> _ods_ir.BoolAttr:
    return self.operation.attributes["reuseB"]

  @reuseB.setter
  def reuseB(self, value: _ods_ir.BoolAttr):
    if value is None:
      raise ValueError("'None' not allowed as value for mandatory attributes")
    self.operation.attributes["reuseB"] = value

  @builtins.property
  def res(self) -> _ods_ir.OpResult:
    return self.operation.results[0]

@_ods_cext.register_op_adaptor(swmmac_f16_16x16x64_f16)
class swmmac_f16_16x16x64_f16Adaptor(_ods_ir.OpAdaptor):
  OPERATION_NAME = "rocdl.swmmac.f16.16x16x64.f16"

  @builtins.property
  def a(self) -> _ods_ir.Value:
    return self.operands[0]

  @builtins.property
  def b(self) -> _ods_ir.Value:
    return self.operands[1]

  @builtins.property
  def c(self) -> _ods_ir.Value:
    return self.operands[2]

  @builtins.property
  def index(self) -> _ods_ir.Value[_ods_ir.IntegerType]:
    return self.operands[3]

  @builtins.property
  def signA(self) -> _ods_ir.BoolAttr:
    return self.attributes["signA"]

  @builtins.property
  def signB(self) -> _ods_ir.BoolAttr:
    return self.attributes["signB"]

  @builtins.property
  def reuseA(self) -> _ods_ir.BoolAttr:
    return self.attributes["reuseA"]

  @builtins.property
  def reuseB(self) -> _ods_ir.BoolAttr:
    return self.attributes["reuseB"]

def swmmac_f16_16x16x64_f16_(res: _ods_ir.Type, a: _ods_ir.Value, b: _ods_ir.Value, c: _ods_ir.Value, index: _ods_ir.Value[_ods_ir.IntegerType], *, sign_a: _Optional[_Union[bool, _ods_ir.BoolAttr]] = None, sign_b: _Optional[_Union[bool, _ods_ir.BoolAttr]] = None, reuse_a: _Optional[_Union[bool, _ods_ir.BoolAttr]] = None, reuse_b: _Optional[_Union[bool, _ods_ir.BoolAttr]] = None, loc: _Optional[_ods_ir.Location] = None, ip: _Optional[_ods_ir.InsertionPoint] = None) -> _ods_ir.OpResult:
  return swmmac_f16_16x16x64_f16(res=res, a=a, b=b, c=c, index=index, signA=sign_a, signB=sign_b, reuseA=reuse_a, reuseB=reuse_b, loc=loc, ip=ip).result

@_ods_cext.register_operation(_Dialect)
class swmmac_f16_16x16x128_bf8_bf8(_ods_ir.OpView):
  OPERATION_NAME = "rocdl.swmmac.f16.16x16x128.bf8.bf8"

  _ODS_REGIONS = (0, True)

  def __init__(self, res: _ods_ir.Type, a: _ods_ir.Value, b: _ods_ir.Value, c: _ods_ir.Value, index: _ods_ir.Value[_ods_ir.IntegerType], *, reuseA: _Optional[_Union[bool, _ods_ir.BoolAttr]] = None, reuseB: _Optional[_Union[bool, _ods_ir.BoolAttr]] = None, loc: _Optional[_ods_ir.Location] = None, ip: _Optional[_ods_ir.InsertionPoint] = None):
    operands = []
    attributes = {}
    regions = None
    operands.append(a)
    operands.append(b)
    operands.append(c)
    operands.append(index)
    _ods_context = _ods_get_default_loc_context(loc)
    if reuseA is not None: attributes["reuseA"] = (reuseA if (
        isinstance(reuseA, _ods_ir.Attribute) or
        not _ods_ir.AttrBuilder.contains('I1Attr')) else
          _ods_ir.AttrBuilder.get('I1Attr')(reuseA, context=_ods_context))
    if reuseB is not None: attributes["reuseB"] = (reuseB if (
        isinstance(reuseB, _ods_ir.Attribute) or
        not _ods_ir.AttrBuilder.contains('I1Attr')) else
          _ods_ir.AttrBuilder.get('I1Attr')(reuseB, context=_ods_context))
    results = []
    results.append(res)
    _ods_successors = None
    super().__init__(self.OPERATION_NAME, self._ODS_REGIONS, self._ODS_OPERAND_SEGMENTS, self._ODS_RESULT_SEGMENTS, attributes=attributes, results=results, operands=operands, successors=_ods_successors, regions=regions, loc=loc, ip=ip)

  @builtins.property
  def a(self) -> _ods_ir.Value:
    return self.operation.operands[0]

  @builtins.property
  def b(self) -> _ods_ir.Value:
    return self.operation.operands[1]

  @builtins.property
  def c(self) -> _ods_ir.Value:
    return self.operation.operands[2]

  @builtins.property
  def index(self) -> _ods_ir.Value[_ods_ir.IntegerType]:
    return self.operation.operands[3]

  @builtins.property
  def reuseA(self) -> _ods_ir.BoolAttr:
    return self.operation.attributes["reuseA"]

  @reuseA.setter
  def reuseA(self, value: _ods_ir.BoolAttr):
    if value is None:
      raise ValueError("'None' not allowed as value for mandatory attributes")
    self.operation.attributes["reuseA"] = value

  @builtins.property
  def reuseB(self) -> _ods_ir.BoolAttr:
    return self.operation.attributes["reuseB"]

  @reuseB.setter
  def reuseB(self, value: _ods_ir.BoolAttr):
    if value is None:
      raise ValueError("'None' not allowed as value for mandatory attributes")
    self.operation.attributes["reuseB"] = value

  @builtins.property
  def res(self) -> _ods_ir.OpResult:
    return self.operation.results[0]

@_ods_cext.register_op_adaptor(swmmac_f16_16x16x128_bf8_bf8)
class swmmac_f16_16x16x128_bf8_bf8Adaptor(_ods_ir.OpAdaptor):
  OPERATION_NAME = "rocdl.swmmac.f16.16x16x128.bf8.bf8"

  @builtins.property
  def a(self) -> _ods_ir.Value:
    return self.operands[0]

  @builtins.property
  def b(self) -> _ods_ir.Value:
    return self.operands[1]

  @builtins.property
  def c(self) -> _ods_ir.Value:
    return self.operands[2]

  @builtins.property
  def index(self) -> _ods_ir.Value[_ods_ir.IntegerType]:
    return self.operands[3]

  @builtins.property
  def reuseA(self) -> _ods_ir.BoolAttr:
    return self.attributes["reuseA"]

  @builtins.property
  def reuseB(self) -> _ods_ir.BoolAttr:
    return self.attributes["reuseB"]

def swmmac_f16_16x16x128_bf8_bf8_(res: _ods_ir.Type, a: _ods_ir.Value, b: _ods_ir.Value, c: _ods_ir.Value, index: _ods_ir.Value[_ods_ir.IntegerType], *, reuse_a: _Optional[_Union[bool, _ods_ir.BoolAttr]] = None, reuse_b: _Optional[_Union[bool, _ods_ir.BoolAttr]] = None, loc: _Optional[_ods_ir.Location] = None, ip: _Optional[_ods_ir.InsertionPoint] = None) -> _ods_ir.OpResult:
  return swmmac_f16_16x16x128_bf8_bf8(res=res, a=a, b=b, c=c, index=index, reuseA=reuse_a, reuseB=reuse_b, loc=loc, ip=ip).result

@_ods_cext.register_operation(_Dialect)
class swmmac_f16_16x16x128_bf8_fp8(_ods_ir.OpView):
  OPERATION_NAME = "rocdl.swmmac.f16.16x16x128.bf8.fp8"

  _ODS_REGIONS = (0, True)

  def __init__(self, res: _ods_ir.Type, a: _ods_ir.Value, b: _ods_ir.Value, c: _ods_ir.Value, index: _ods_ir.Value[_ods_ir.IntegerType], *, reuseA: _Optional[_Union[bool, _ods_ir.BoolAttr]] = None, reuseB: _Optional[_Union[bool, _ods_ir.BoolAttr]] = None, loc: _Optional[_ods_ir.Location] = None, ip: _Optional[_ods_ir.InsertionPoint] = None):
    operands = []
    attributes = {}
    regions = None
    operands.append(a)
    operands.append(b)
    operands.append(c)
    operands.append(index)
    _ods_context = _ods_get_default_loc_context(loc)
    if reuseA is not None: attributes["reuseA"] = (reuseA if (
        isinstance(reuseA, _ods_ir.Attribute) or
        not _ods_ir.AttrBuilder.contains('I1Attr')) else
          _ods_ir.AttrBuilder.get('I1Attr')(reuseA, context=_ods_context))
    if reuseB is not None: attributes["reuseB"] = (reuseB if (
        isinstance(reuseB, _ods_ir.Attribute) or
        not _ods_ir.AttrBuilder.contains('I1Attr')) else
          _ods_ir.AttrBuilder.get('I1Attr')(reuseB, context=_ods_context))
    results = []
    results.append(res)
    _ods_successors = None
    super().__init__(self.OPERATION_NAME, self._ODS_REGIONS, self._ODS_OPERAND_SEGMENTS, self._ODS_RESULT_SEGMENTS, attributes=attributes, results=results, operands=operands, successors=_ods_successors, regions=regions, loc=loc, ip=ip)

  @builtins.property
  def a(self) -> _ods_ir.Value:
    return self.operation.operands[0]

  @builtins.property
  def b(self) -> _ods_ir.Value:
    return self.operation.operands[1]

  @builtins.property
  def c(self) -> _ods_ir.Value:
    return self.operation.operands[2]

  @builtins.property
  def index(self) -> _ods_ir.Value[_ods_ir.IntegerType]:
    return self.operation.operands[3]

  @builtins.property
  def reuseA(self) -> _ods_ir.BoolAttr:
    return self.operation.attributes["reuseA"]

  @reuseA.setter
  def reuseA(self, value: _ods_ir.BoolAttr):
    if value is None:
      raise ValueError("'None' not allowed as value for mandatory attributes")
    self.operation.attributes["reuseA"] = value

  @builtins.property
  def reuseB(self) -> _ods_ir.BoolAttr:
    return self.operation.attributes["reuseB"]

  @reuseB.setter
  def reuseB(self, value: _ods_ir.BoolAttr):
    if value is None:
      raise ValueError("'None' not allowed as value for mandatory attributes")
    self.operation.attributes["reuseB"] = value

  @builtins.property
  def res(self) -> _ods_ir.OpResult:
    return self.operation.results[0]

@_ods_cext.register_op_adaptor(swmmac_f16_16x16x128_bf8_fp8)
class swmmac_f16_16x16x128_bf8_fp8Adaptor(_ods_ir.OpAdaptor):
  OPERATION_NAME = "rocdl.swmmac.f16.16x16x128.bf8.fp8"

  @builtins.property
  def a(self) -> _ods_ir.Value:
    return self.operands[0]

  @builtins.property
  def b(self) -> _ods_ir.Value:
    return self.operands[1]

  @builtins.property
  def c(self) -> _ods_ir.Value:
    return self.operands[2]

  @builtins.property
  def index(self) -> _ods_ir.Value[_ods_ir.IntegerType]:
    return self.operands[3]

  @builtins.property
  def reuseA(self) -> _ods_ir.BoolAttr:
    return self.attributes["reuseA"]

  @builtins.property
  def reuseB(self) -> _ods_ir.BoolAttr:
    return self.attributes["reuseB"]

def swmmac_f16_16x16x128_bf8_fp8_(res: _ods_ir.Type, a: _ods_ir.Value, b: _ods_ir.Value, c: _ods_ir.Value, index: _ods_ir.Value[_ods_ir.IntegerType], *, reuse_a: _Optional[_Union[bool, _ods_ir.BoolAttr]] = None, reuse_b: _Optional[_Union[bool, _ods_ir.BoolAttr]] = None, loc: _Optional[_ods_ir.Location] = None, ip: _Optional[_ods_ir.InsertionPoint] = None) -> _ods_ir.OpResult:
  return swmmac_f16_16x16x128_bf8_fp8(res=res, a=a, b=b, c=c, index=index, reuseA=reuse_a, reuseB=reuse_b, loc=loc, ip=ip).result

@_ods_cext.register_operation(_Dialect)
class swmmac_f16_16x16x128_fp8_bf8(_ods_ir.OpView):
  OPERATION_NAME = "rocdl.swmmac.f16.16x16x128.fp8.bf8"

  _ODS_REGIONS = (0, True)

  def __init__(self, res: _ods_ir.Type, a: _ods_ir.Value, b: _ods_ir.Value, c: _ods_ir.Value, index: _ods_ir.Value[_ods_ir.IntegerType], *, reuseA: _Optional[_Union[bool, _ods_ir.BoolAttr]] = None, reuseB: _Optional[_Union[bool, _ods_ir.BoolAttr]] = None, loc: _Optional[_ods_ir.Location] = None, ip: _Optional[_ods_ir.InsertionPoint] = None):
    operands = []
    attributes = {}
    regions = None
    operands.append(a)
    operands.append(b)
    operands.append(c)
    operands.append(index)
    _ods_context = _ods_get_default_loc_context(loc)
    if reuseA is not None: attributes["reuseA"] = (reuseA if (
        isinstance(reuseA, _ods_ir.Attribute) or
        not _ods_ir.AttrBuilder.contains('I1Attr')) else
          _ods_ir.AttrBuilder.get('I1Attr')(reuseA, context=_ods_context))
    if reuseB is not None: attributes["reuseB"] = (reuseB if (
        isinstance(reuseB, _ods_ir.Attribute) or
        not _ods_ir.AttrBuilder.contains('I1Attr')) else
          _ods_ir.AttrBuilder.get('I1Attr')(reuseB, context=_ods_context))
    results = []
    results.append(res)
    _ods_successors = None
    super().__init__(self.OPERATION_NAME, self._ODS_REGIONS, self._ODS_OPERAND_SEGMENTS, self._ODS_RESULT_SEGMENTS, attributes=attributes, results=results, operands=operands, successors=_ods_successors, regions=regions, loc=loc, ip=ip)

  @builtins.property
  def a(self) -> _ods_ir.Value:
    return self.operation.operands[0]

  @builtins.property
  def b(self) -> _ods_ir.Value:
    return self.operation.operands[1]

  @builtins.property
  def c(self) -> _ods_ir.Value:
    return self.operation.operands[2]

  @builtins.property
  def index(self) -> _ods_ir.Value[_ods_ir.IntegerType]:
    return self.operation.operands[3]

  @builtins.property
  def reuseA(self) -> _ods_ir.BoolAttr:
    return self.operation.attributes["reuseA"]

  @reuseA.setter
  def reuseA(self, value: _ods_ir.BoolAttr):
    if value is None:
      raise ValueError("'None' not allowed as value for mandatory attributes")
    self.operation.attributes["reuseA"] = value

  @builtins.property
  def reuseB(self) -> _ods_ir.BoolAttr:
    return self.operation.attributes["reuseB"]

  @reuseB.setter
  def reuseB(self, value: _ods_ir.BoolAttr):
    if value is None:
      raise ValueError("'None' not allowed as value for mandatory attributes")
    self.operation.attributes["reuseB"] = value

  @builtins.property
  def res(self) -> _ods_ir.OpResult:
    return self.operation.results[0]

@_ods_cext.register_op_adaptor(swmmac_f16_16x16x128_fp8_bf8)
class swmmac_f16_16x16x128_fp8_bf8Adaptor(_ods_ir.OpAdaptor):
  OPERATION_NAME = "rocdl.swmmac.f16.16x16x128.fp8.bf8"

  @builtins.property
  def a(self) -> _ods_ir.Value:
    return self.operands[0]

  @builtins.property
  def b(self) -> _ods_ir.Value:
    return self.operands[1]

  @builtins.property
  def c(self) -> _ods_ir.Value:
    return self.operands[2]

  @builtins.property
  def index(self) -> _ods_ir.Value[_ods_ir.IntegerType]:
    return self.operands[3]

  @builtins.property
  def reuseA(self) -> _ods_ir.BoolAttr:
    return self.attributes["reuseA"]

  @builtins.property
  def reuseB(self) -> _ods_ir.BoolAttr:
    return self.attributes["reuseB"]

def swmmac_f16_16x16x128_fp8_bf8_(res: _ods_ir.Type, a: _ods_ir.Value, b: _ods_ir.Value, c: _ods_ir.Value, index: _ods_ir.Value[_ods_ir.IntegerType], *, reuse_a: _Optional[_Union[bool, _ods_ir.BoolAttr]] = None, reuse_b: _Optional[_Union[bool, _ods_ir.BoolAttr]] = None, loc: _Optional[_ods_ir.Location] = None, ip: _Optional[_ods_ir.InsertionPoint] = None) -> _ods_ir.OpResult:
  return swmmac_f16_16x16x128_fp8_bf8(res=res, a=a, b=b, c=c, index=index, reuseA=reuse_a, reuseB=reuse_b, loc=loc, ip=ip).result

@_ods_cext.register_operation(_Dialect)
class swmmac_f16_16x16x128_fp8_fp8(_ods_ir.OpView):
  OPERATION_NAME = "rocdl.swmmac.f16.16x16x128.fp8.fp8"

  _ODS_REGIONS = (0, True)

  def __init__(self, res: _ods_ir.Type, a: _ods_ir.Value, b: _ods_ir.Value, c: _ods_ir.Value, index: _ods_ir.Value[_ods_ir.IntegerType], *, reuseA: _Optional[_Union[bool, _ods_ir.BoolAttr]] = None, reuseB: _Optional[_Union[bool, _ods_ir.BoolAttr]] = None, loc: _Optional[_ods_ir.Location] = None, ip: _Optional[_ods_ir.InsertionPoint] = None):
    operands = []
    attributes = {}
    regions = None
    operands.append(a)
    operands.append(b)
    operands.append(c)
    operands.append(index)
    _ods_context = _ods_get_default_loc_context(loc)
    if reuseA is not None: attributes["reuseA"] = (reuseA if (
        isinstance(reuseA, _ods_ir.Attribute) or
        not _ods_ir.AttrBuilder.contains('I1Attr')) else
          _ods_ir.AttrBuilder.get('I1Attr')(reuseA, context=_ods_context))
    if reuseB is not None: attributes["reuseB"] = (reuseB if (
        isinstance(reuseB, _ods_ir.Attribute) or
        not _ods_ir.AttrBuilder.contains('I1Attr')) else
          _ods_ir.AttrBuilder.get('I1Attr')(reuseB, context=_ods_context))
    results = []
    results.append(res)
    _ods_successors = None
    super().__init__(self.OPERATION_NAME, self._ODS_REGIONS, self._ODS_OPERAND_SEGMENTS, self._ODS_RESULT_SEGMENTS, attributes=attributes, results=results, operands=operands, successors=_ods_successors, regions=regions, loc=loc, ip=ip)

  @builtins.property
  def a(self) -> _ods_ir.Value:
    return self.operation.operands[0]

  @builtins.property
  def b(self) -> _ods_ir.Value:
    return self.operation.operands[1]

  @builtins.property
  def c(self) -> _ods_ir.Value:
    return self.operation.operands[2]

  @builtins.property
  def index(self) -> _ods_ir.Value[_ods_ir.IntegerType]:
    return self.operation.operands[3]

  @builtins.property
  def reuseA(self) -> _ods_ir.BoolAttr:
    return self.operation.attributes["reuseA"]

  @reuseA.setter
  def reuseA(self, value: _ods_ir.BoolAttr):
    if value is None:
      raise ValueError("'None' not allowed as value for mandatory attributes")
    self.operation.attributes["reuseA"] = value

  @builtins.property
  def reuseB(self) -> _ods_ir.BoolAttr:
    return self.operation.attributes["reuseB"]

  @reuseB.setter
  def reuseB(self, value: _ods_ir.BoolAttr):
    if value is None:
      raise ValueError("'None' not allowed as value for mandatory attributes")
    self.operation.attributes["reuseB"] = value

  @builtins.property
  def res(self) -> _ods_ir.OpResult:
    return self.operation.results[0]

@_ods_cext.register_op_adaptor(swmmac_f16_16x16x128_fp8_fp8)
class swmmac_f16_16x16x128_fp8_fp8Adaptor(_ods_ir.OpAdaptor):
  OPERATION_NAME = "rocdl.swmmac.f16.16x16x128.fp8.fp8"

  @builtins.property
  def a(self) -> _ods_ir.Value:
    return self.operands[0]

  @builtins.property
  def b(self) -> _ods_ir.Value:
    return self.operands[1]

  @builtins.property
  def c(self) -> _ods_ir.Value:
    return self.operands[2]

  @builtins.property
  def index(self) -> _ods_ir.Value[_ods_ir.IntegerType]:
    return self.operands[3]

  @builtins.property
  def reuseA(self) -> _ods_ir.BoolAttr:
    return self.attributes["reuseA"]

  @builtins.property
  def reuseB(self) -> _ods_ir.BoolAttr:
    return self.attributes["reuseB"]

def swmmac_f16_16x16x128_fp8_fp8_(res: _ods_ir.Type, a: _ods_ir.Value, b: _ods_ir.Value, c: _ods_ir.Value, index: _ods_ir.Value[_ods_ir.IntegerType], *, reuse_a: _Optional[_Union[bool, _ods_ir.BoolAttr]] = None, reuse_b: _Optional[_Union[bool, _ods_ir.BoolAttr]] = None, loc: _Optional[_ods_ir.Location] = None, ip: _Optional[_ods_ir.InsertionPoint] = None) -> _ods_ir.OpResult:
  return swmmac_f16_16x16x128_fp8_fp8(res=res, a=a, b=b, c=c, index=index, reuseA=reuse_a, reuseB=reuse_b, loc=loc, ip=ip).result

@_ods_cext.register_operation(_Dialect)
class swmmac_f32_16x16x32_bf8_bf8(_ods_ir.OpView):
  OPERATION_NAME = "rocdl.swmmac.f32.16x16x32.bf8.bf8"

  _ODS_REGIONS = (0, True)

  def __init__(self, res: _ods_ir.Type, a: _ods_ir.Value, b: _ods_ir.Value, c: _ods_ir.Value, index: _ods_ir.Value[_ods_ir.IntegerType], *, loc: _Optional[_ods_ir.Location] = None, ip: _Optional[_ods_ir.InsertionPoint] = None):
    operands = []
    attributes = {}
    regions = None
    operands.append(a)
    operands.append(b)
    operands.append(c)
    operands.append(index)
    _ods_context = _ods_get_default_loc_context(loc)
    results = []
    results.append(res)
    _ods_successors = None
    super().__init__(self.OPERATION_NAME, self._ODS_REGIONS, self._ODS_OPERAND_SEGMENTS, self._ODS_RESULT_SEGMENTS, attributes=attributes, results=results, operands=operands, successors=_ods_successors, regions=regions, loc=loc, ip=ip)

  @builtins.property
  def a(self) -> _ods_ir.Value:
    return self.operation.operands[0]

  @builtins.property
  def b(self) -> _ods_ir.Value:
    return self.operation.operands[1]

  @builtins.property
  def c(self) -> _ods_ir.Value:
    return self.operation.operands[2]

  @builtins.property
  def index(self) -> _ods_ir.Value[_ods_ir.IntegerType]:
    return self.operation.operands[3]

  @builtins.property
  def res(self) -> _ods_ir.OpResult:
    return self.operation.results[0]

@_ods_cext.register_op_adaptor(swmmac_f32_16x16x32_bf8_bf8)
class swmmac_f32_16x16x32_bf8_bf8Adaptor(_ods_ir.OpAdaptor):
  OPERATION_NAME = "rocdl.swmmac.f32.16x16x32.bf8.bf8"

  @builtins.property
  def a(self) -> _ods_ir.Value:
    return self.operands[0]

  @builtins.property
  def b(self) -> _ods_ir.Value:
    return self.operands[1]

  @builtins.property
  def c(self) -> _ods_ir.Value:
    return self.operands[2]

  @builtins.property
  def index(self) -> _ods_ir.Value[_ods_ir.IntegerType]:
    return self.operands[3]

def swmmac_f32_16x16x32_bf8_bf8_(res: _ods_ir.Type, a: _ods_ir.Value, b: _ods_ir.Value, c: _ods_ir.Value, index: _ods_ir.Value[_ods_ir.IntegerType], *, loc: _Optional[_ods_ir.Location] = None, ip: _Optional[_ods_ir.InsertionPoint] = None) -> _ods_ir.OpResult:
  return swmmac_f32_16x16x32_bf8_bf8(res=res, a=a, b=b, c=c, index=index, loc=loc, ip=ip).result

@_ods_cext.register_operation(_Dialect)
class swmmac_f32_16x16x32_bf8_fp8(_ods_ir.OpView):
  OPERATION_NAME = "rocdl.swmmac.f32.16x16x32.bf8.fp8"

  _ODS_REGIONS = (0, True)

  def __init__(self, res: _ods_ir.Type, a: _ods_ir.Value, b: _ods_ir.Value, c: _ods_ir.Value, index: _ods_ir.Value[_ods_ir.IntegerType], *, loc: _Optional[_ods_ir.Location] = None, ip: _Optional[_ods_ir.InsertionPoint] = None):
    operands = []
    attributes = {}
    regions = None
    operands.append(a)
    operands.append(b)
    operands.append(c)
    operands.append(index)
    _ods_context = _ods_get_default_loc_context(loc)
    results = []
    results.append(res)
    _ods_successors = None
    super().__init__(self.OPERATION_NAME, self._ODS_REGIONS, self._ODS_OPERAND_SEGMENTS, self._ODS_RESULT_SEGMENTS, attributes=attributes, results=results, operands=operands, successors=_ods_successors, regions=regions, loc=loc, ip=ip)

  @builtins.property
  def a(self) -> _ods_ir.Value:
    return self.operation.operands[0]

  @builtins.property
  def b(self) -> _ods_ir.Value:
    return self.operation.operands[1]

  @builtins.property
  def c(self) -> _ods_ir.Value:
    return self.operation.operands[2]

  @builtins.property
  def index(self) -> _ods_ir.Value[_ods_ir.IntegerType]:
    return self.operation.operands[3]

  @builtins.property
  def res(self) -> _ods_ir.OpResult:
    return self.operation.results[0]

@_ods_cext.register_op_adaptor(swmmac_f32_16x16x32_bf8_fp8)
class swmmac_f32_16x16x32_bf8_fp8Adaptor(_ods_ir.OpAdaptor):
  OPERATION_NAME = "rocdl.swmmac.f32.16x16x32.bf8.fp8"

  @builtins.property
  def a(self) -> _ods_ir.Value:
    return self.operands[0]

  @builtins.property
  def b(self) -> _ods_ir.Value:
    return self.operands[1]

  @builtins.property
  def c(self) -> _ods_ir.Value:
    return self.operands[2]

  @builtins.property
  def index(self) -> _ods_ir.Value[_ods_ir.IntegerType]:
    return self.operands[3]

def swmmac_f32_16x16x32_bf8_fp8_(res: _ods_ir.Type, a: _ods_ir.Value, b: _ods_ir.Value, c: _ods_ir.Value, index: _ods_ir.Value[_ods_ir.IntegerType], *, loc: _Optional[_ods_ir.Location] = None, ip: _Optional[_ods_ir.InsertionPoint] = None) -> _ods_ir.OpResult:
  return swmmac_f32_16x16x32_bf8_fp8(res=res, a=a, b=b, c=c, index=index, loc=loc, ip=ip).result

@_ods_cext.register_operation(_Dialect)
class swmmac_f32_16x16x32_bf16(_ods_ir.OpView):
  OPERATION_NAME = "rocdl.swmmac.f32.16x16x32.bf16"

  _ODS_REGIONS = (0, True)

  def __init__(self, res: _ods_ir.Type, a: _ods_ir.Value[_ods_ir.VectorType], b: _ods_ir.Value[_ods_ir.VectorType], c: _ods_ir.Value[_ods_ir.VectorType], index: _ods_ir.Value[_ods_ir.IntegerType], *, loc: _Optional[_ods_ir.Location] = None, ip: _Optional[_ods_ir.InsertionPoint] = None):
    operands = []
    attributes = {}
    regions = None
    operands.append(a)
    operands.append(b)
    operands.append(c)
    operands.append(index)
    _ods_context = _ods_get_default_loc_context(loc)
    results = []
    results.append(res)
    _ods_successors = None
    super().__init__(self.OPERATION_NAME, self._ODS_REGIONS, self._ODS_OPERAND_SEGMENTS, self._ODS_RESULT_SEGMENTS, attributes=attributes, results=results, operands=operands, successors=_ods_successors, regions=regions, loc=loc, ip=ip)

  @builtins.property
  def a(self) -> _ods_ir.Value[_ods_ir.VectorType]:
    return self.operation.operands[0]

  @builtins.property
  def b(self) -> _ods_ir.Value[_ods_ir.VectorType]:
    return self.operation.operands[1]

  @builtins.property
  def c(self) -> _ods_ir.Value[_ods_ir.VectorType]:
    return self.operation.operands[2]

  @builtins.property
  def index(self) -> _ods_ir.Value[_ods_ir.IntegerType]:
    return self.operation.operands[3]

  @builtins.property
  def res(self) -> _ods_ir.OpResult[_ods_ir.VectorType]:
    return self.operation.results[0]

@_ods_cext.register_op_adaptor(swmmac_f32_16x16x32_bf16)
class swmmac_f32_16x16x32_bf16Adaptor(_ods_ir.OpAdaptor):
  OPERATION_NAME = "rocdl.swmmac.f32.16x16x32.bf16"

  @builtins.property
  def a(self) -> _ods_ir.Value[_ods_ir.VectorType]:
    return self.operands[0]

  @builtins.property
  def b(self) -> _ods_ir.Value[_ods_ir.VectorType]:
    return self.operands[1]

  @builtins.property
  def c(self) -> _ods_ir.Value[_ods_ir.VectorType]:
    return self.operands[2]

  @builtins.property
  def index(self) -> _ods_ir.Value[_ods_ir.IntegerType]:
    return self.operands[3]

def swmmac_f32_16x16x32_bf16_(res: _ods_ir.Type, a: _ods_ir.Value[_ods_ir.VectorType], b: _ods_ir.Value[_ods_ir.VectorType], c: _ods_ir.Value[_ods_ir.VectorType], index: _ods_ir.Value[_ods_ir.IntegerType], *, loc: _Optional[_ods_ir.Location] = None, ip: _Optional[_ods_ir.InsertionPoint] = None) -> _ods_ir.OpResult[_ods_ir.VectorType]:
  return swmmac_f32_16x16x32_bf16(res=res, a=a, b=b, c=c, index=index, loc=loc, ip=ip).result

@_ods_cext.register_operation(_Dialect)
class swmmac_f32_16x16x32_f16(_ods_ir.OpView):
  OPERATION_NAME = "rocdl.swmmac.f32.16x16x32.f16"

  _ODS_REGIONS = (0, True)

  def __init__(self, res: _ods_ir.Type, a: _ods_ir.Value[_ods_ir.VectorType], b: _ods_ir.Value[_ods_ir.VectorType], c: _ods_ir.Value[_ods_ir.VectorType], index: _ods_ir.Value[_ods_ir.IntegerType], *, loc: _Optional[_ods_ir.Location] = None, ip: _Optional[_ods_ir.InsertionPoint] = None):
    operands = []
    attributes = {}
    regions = None
    operands.append(a)
    operands.append(b)
    operands.append(c)
    operands.append(index)
    _ods_context = _ods_get_default_loc_context(loc)
    results = []
    results.append(res)
    _ods_successors = None
    super().__init__(self.OPERATION_NAME, self._ODS_REGIONS, self._ODS_OPERAND_SEGMENTS, self._ODS_RESULT_SEGMENTS, attributes=attributes, results=results, operands=operands, successors=_ods_successors, regions=regions, loc=loc, ip=ip)

  @builtins.property
  def a(self) -> _ods_ir.Value[_ods_ir.VectorType]:
    return self.operation.operands[0]

  @builtins.property
  def b(self) -> _ods_ir.Value[_ods_ir.VectorType]:
    return self.operation.operands[1]

  @builtins.property
  def c(self) -> _ods_ir.Value[_ods_ir.VectorType]:
    return self.operation.operands[2]

  @builtins.property
  def index(self) -> _ods_ir.Value[_ods_ir.IntegerType]:
    return self.operation.operands[3]

  @builtins.property
  def res(self) -> _ods_ir.OpResult[_ods_ir.VectorType]:
    return self.operation.results[0]

@_ods_cext.register_op_adaptor(swmmac_f32_16x16x32_f16)
class swmmac_f32_16x16x32_f16Adaptor(_ods_ir.OpAdaptor):
  OPERATION_NAME = "rocdl.swmmac.f32.16x16x32.f16"

  @builtins.property
  def a(self) -> _ods_ir.Value[_ods_ir.VectorType]:
    return self.operands[0]

  @builtins.property
  def b(self) -> _ods_ir.Value[_ods_ir.VectorType]:
    return self.operands[1]

  @builtins.property
  def c(self) -> _ods_ir.Value[_ods_ir.VectorType]:
    return self.operands[2]

  @builtins.property
  def index(self) -> _ods_ir.Value[_ods_ir.IntegerType]:
    return self.operands[3]

def swmmac_f32_16x16x32_f16_(res: _ods_ir.Type, a: _ods_ir.Value[_ods_ir.VectorType], b: _ods_ir.Value[_ods_ir.VectorType], c: _ods_ir.Value[_ods_ir.VectorType], index: _ods_ir.Value[_ods_ir.IntegerType], *, loc: _Optional[_ods_ir.Location] = None, ip: _Optional[_ods_ir.InsertionPoint] = None) -> _ods_ir.OpResult[_ods_ir.VectorType]:
  return swmmac_f32_16x16x32_f16(res=res, a=a, b=b, c=c, index=index, loc=loc, ip=ip).result

@_ods_cext.register_operation(_Dialect)
class swmmac_f32_16x16x32_fp8_bf8(_ods_ir.OpView):
  OPERATION_NAME = "rocdl.swmmac.f32.16x16x32.fp8.bf8"

  _ODS_REGIONS = (0, True)

  def __init__(self, res: _ods_ir.Type, a: _ods_ir.Value, b: _ods_ir.Value, c: _ods_ir.Value, index: _ods_ir.Value[_ods_ir.IntegerType], *, loc: _Optional[_ods_ir.Location] = None, ip: _Optional[_ods_ir.InsertionPoint] = None):
    operands = []
    attributes = {}
    regions = None
    operands.append(a)
    operands.append(b)
    operands.append(c)
    operands.append(index)
    _ods_context = _ods_get_default_loc_context(loc)
    results = []
    results.append(res)
    _ods_successors = None
    super().__init__(self.OPERATION_NAME, self._ODS_REGIONS, self._ODS_OPERAND_SEGMENTS, self._ODS_RESULT_SEGMENTS, attributes=attributes, results=results, operands=operands, successors=_ods_successors, regions=regions, loc=loc, ip=ip)

  @builtins.property
  def a(self) -> _ods_ir.Value:
    return self.operation.operands[0]

  @builtins.property
  def b(self) -> _ods_ir.Value:
    return self.operation.operands[1]

  @builtins.property
  def c(self) -> _ods_ir.Value:
    return self.operation.operands[2]

  @builtins.property
  def index(self) -> _ods_ir.Value[_ods_ir.IntegerType]:
    return self.operation.operands[3]

  @builtins.property
  def res(self) -> _ods_ir.OpResult:
    return self.operation.results[0]

@_ods_cext.register_op_adaptor(swmmac_f32_16x16x32_fp8_bf8)
class swmmac_f32_16x16x32_fp8_bf8Adaptor(_ods_ir.OpAdaptor):
  OPERATION_NAME = "rocdl.swmmac.f32.16x16x32.fp8.bf8"

  @builtins.property
  def a(self) -> _ods_ir.Value:
    return self.operands[0]

  @builtins.property
  def b(self) -> _ods_ir.Value:
    return self.operands[1]

  @builtins.property
  def c(self) -> _ods_ir.Value:
    return self.operands[2]

  @builtins.property
  def index(self) -> _ods_ir.Value[_ods_ir.IntegerType]:
    return self.operands[3]

def swmmac_f32_16x16x32_fp8_bf8_(res: _ods_ir.Type, a: _ods_ir.Value, b: _ods_ir.Value, c: _ods_ir.Value, index: _ods_ir.Value[_ods_ir.IntegerType], *, loc: _Optional[_ods_ir.Location] = None, ip: _Optional[_ods_ir.InsertionPoint] = None) -> _ods_ir.OpResult:
  return swmmac_f32_16x16x32_fp8_bf8(res=res, a=a, b=b, c=c, index=index, loc=loc, ip=ip).result

@_ods_cext.register_operation(_Dialect)
class swmmac_f32_16x16x32_fp8_fp8(_ods_ir.OpView):
  OPERATION_NAME = "rocdl.swmmac.f32.16x16x32.fp8.fp8"

  _ODS_REGIONS = (0, True)

  def __init__(self, res: _ods_ir.Type, a: _ods_ir.Value, b: _ods_ir.Value, c: _ods_ir.Value, index: _ods_ir.Value[_ods_ir.IntegerType], *, loc: _Optional[_ods_ir.Location] = None, ip: _Optional[_ods_ir.InsertionPoint] = None):
    operands = []
    attributes = {}
    regions = None
    operands.append(a)
    operands.append(b)
    operands.append(c)
    operands.append(index)
    _ods_context = _ods_get_default_loc_context(loc)
    results = []
    results.append(res)
    _ods_successors = None
    super().__init__(self.OPERATION_NAME, self._ODS_REGIONS, self._ODS_OPERAND_SEGMENTS, self._ODS_RESULT_SEGMENTS, attributes=attributes, results=results, operands=operands, successors=_ods_successors, regions=regions, loc=loc, ip=ip)

  @builtins.property
  def a(self) -> _ods_ir.Value:
    return self.operation.operands[0]

  @builtins.property
  def b(self) -> _ods_ir.Value:
    return self.operation.operands[1]

  @builtins.property
  def c(self) -> _ods_ir.Value:
    return self.operation.operands[2]

  @builtins.property
  def index(self) -> _ods_ir.Value[_ods_ir.IntegerType]:
    return self.operation.operands[3]

  @builtins.property
  def res(self) -> _ods_ir.OpResult:
    return self.operation.results[0]

@_ods_cext.register_op_adaptor(swmmac_f32_16x16x32_fp8_fp8)
class swmmac_f32_16x16x32_fp8_fp8Adaptor(_ods_ir.OpAdaptor):
  OPERATION_NAME = "rocdl.swmmac.f32.16x16x32.fp8.fp8"

  @builtins.property
  def a(self) -> _ods_ir.Value:
    return self.operands[0]

  @builtins.property
  def b(self) -> _ods_ir.Value:
    return self.operands[1]

  @builtins.property
  def c(self) -> _ods_ir.Value:
    return self.operands[2]

  @builtins.property
  def index(self) -> _ods_ir.Value[_ods_ir.IntegerType]:
    return self.operands[3]

def swmmac_f32_16x16x32_fp8_fp8_(res: _ods_ir.Type, a: _ods_ir.Value, b: _ods_ir.Value, c: _ods_ir.Value, index: _ods_ir.Value[_ods_ir.IntegerType], *, loc: _Optional[_ods_ir.Location] = None, ip: _Optional[_ods_ir.InsertionPoint] = None) -> _ods_ir.OpResult:
  return swmmac_f32_16x16x32_fp8_fp8(res=res, a=a, b=b, c=c, index=index, loc=loc, ip=ip).result

@_ods_cext.register_operation(_Dialect)
class swmmac_f32_16x16x64_bf16(_ods_ir.OpView):
  OPERATION_NAME = "rocdl.swmmac.f32.16x16x64.bf16"

  _ODS_REGIONS = (0, True)

  def __init__(self, res: _ods_ir.Type, a: _ods_ir.Value, b: _ods_ir.Value, c: _ods_ir.Value, index: _ods_ir.Value[_ods_ir.IntegerType], *, signA: _Optional[_Union[bool, _ods_ir.BoolAttr]] = None, signB: _Optional[_Union[bool, _ods_ir.BoolAttr]] = None, reuseA: _Optional[_Union[bool, _ods_ir.BoolAttr]] = None, reuseB: _Optional[_Union[bool, _ods_ir.BoolAttr]] = None, loc: _Optional[_ods_ir.Location] = None, ip: _Optional[_ods_ir.InsertionPoint] = None):
    operands = []
    attributes = {}
    regions = None
    operands.append(a)
    operands.append(b)
    operands.append(c)
    operands.append(index)
    _ods_context = _ods_get_default_loc_context(loc)
    if signA is not None: attributes["signA"] = (signA if (
        isinstance(signA, _ods_ir.Attribute) or
        not _ods_ir.AttrBuilder.contains('I1Attr')) else
          _ods_ir.AttrBuilder.get('I1Attr')(signA, context=_ods_context))
    if signB is not None: attributes["signB"] = (signB if (
        isinstance(signB, _ods_ir.Attribute) or
        not _ods_ir.AttrBuilder.contains('I1Attr')) else
          _ods_ir.AttrBuilder.get('I1Attr')(signB, context=_ods_context))
    if reuseA is not None: attributes["reuseA"] = (reuseA if (
        isinstance(reuseA, _ods_ir.Attribute) or
        not _ods_ir.AttrBuilder.contains('I1Attr')) else
          _ods_ir.AttrBuilder.get('I1Attr')(reuseA, context=_ods_context))
    if reuseB is not None: attributes["reuseB"] = (reuseB if (
        isinstance(reuseB, _ods_ir.Attribute) or
        not _ods_ir.AttrBuilder.contains('I1Attr')) else
          _ods_ir.AttrBuilder.get('I1Attr')(reuseB, context=_ods_context))
    results = []
    results.append(res)
    _ods_successors = None
    super().__init__(self.OPERATION_NAME, self._ODS_REGIONS, self._ODS_OPERAND_SEGMENTS, self._ODS_RESULT_SEGMENTS, attributes=attributes, results=results, operands=operands, successors=_ods_successors, regions=regions, loc=loc, ip=ip)

  @builtins.property
  def a(self) -> _ods_ir.Value:
    return self.operation.operands[0]

  @builtins.property
  def b(self) -> _ods_ir.Value:
    return self.operation.operands[1]

  @builtins.property
  def c(self) -> _ods_ir.Value:
    return self.operation.operands[2]

  @builtins.property
  def index(self) -> _ods_ir.Value[_ods_ir.IntegerType]:
    return self.operation.operands[3]

  @builtins.property
  def signA(self) -> _ods_ir.BoolAttr:
    return self.operation.attributes["signA"]

  @signA.setter
  def signA(self, value: _ods_ir.BoolAttr):
    if value is None:
      raise ValueError("'None' not allowed as value for mandatory attributes")
    self.operation.attributes["signA"] = value

  @builtins.property
  def signB(self) -> _ods_ir.BoolAttr:
    return self.operation.attributes["signB"]

  @signB.setter
  def signB(self, value: _ods_ir.BoolAttr):
    if value is None:
      raise ValueError("'None' not allowed as value for mandatory attributes")
    self.operation.attributes["signB"] = value

  @builtins.property
  def reuseA(self) -> _ods_ir.BoolAttr:
    return self.operation.attributes["reuseA"]

  @reuseA.setter
  def reuseA(self, value: _ods_ir.BoolAttr):
    if value is None:
      raise ValueError("'None' not allowed as value for mandatory attributes")
    self.operation.attributes["reuseA"] = value

  @builtins.property
  def reuseB(self) -> _ods_ir.BoolAttr:
    return self.operation.attributes["reuseB"]

  @reuseB.setter
  def reuseB(self, value: _ods_ir.BoolAttr):
    if value is None:
      raise ValueError("'None' not allowed as value for mandatory attributes")
    self.operation.attributes["reuseB"] = value

  @builtins.property
  def res(self) -> _ods_ir.OpResult:
    return self.operation.results[0]

@_ods_cext.register_op_adaptor(swmmac_f32_16x16x64_bf16)
class swmmac_f32_16x16x64_bf16Adaptor(_ods_ir.OpAdaptor):
  OPERATION_NAME = "rocdl.swmmac.f32.16x16x64.bf16"

  @builtins.property
  def a(self) -> _ods_ir.Value:
    return self.operands[0]

  @builtins.property
  def b(self) -> _ods_ir.Value:
    return self.operands[1]

  @builtins.property
  def c(self) -> _ods_ir.Value:
    return self.operands[2]

  @builtins.property
  def index(self) -> _ods_ir.Value[_ods_ir.IntegerType]:
    return self.operands[3]

  @builtins.property
  def signA(self) -> _ods_ir.BoolAttr:
    return self.attributes["signA"]

  @builtins.property
  def signB(self) -> _ods_ir.BoolAttr:
    return self.attributes["signB"]

  @builtins.property
  def reuseA(self) -> _ods_ir.BoolAttr:
    return self.attributes["reuseA"]

  @builtins.property
  def reuseB(self) -> _ods_ir.BoolAttr:
    return self.attributes["reuseB"]

def swmmac_f32_16x16x64_bf16_(res: _ods_ir.Type, a: _ods_ir.Value, b: _ods_ir.Value, c: _ods_ir.Value, index: _ods_ir.Value[_ods_ir.IntegerType], *, sign_a: _Optional[_Union[bool, _ods_ir.BoolAttr]] = None, sign_b: _Optional[_Union[bool, _ods_ir.BoolAttr]] = None, reuse_a: _Optional[_Union[bool, _ods_ir.BoolAttr]] = None, reuse_b: _Optional[_Union[bool, _ods_ir.BoolAttr]] = None, loc: _Optional[_ods_ir.Location] = None, ip: _Optional[_ods_ir.InsertionPoint] = None) -> _ods_ir.OpResult:
  return swmmac_f32_16x16x64_bf16(res=res, a=a, b=b, c=c, index=index, signA=sign_a, signB=sign_b, reuseA=reuse_a, reuseB=reuse_b, loc=loc, ip=ip).result

@_ods_cext.register_operation(_Dialect)
class swmmac_f32_16x16x64_f16(_ods_ir.OpView):
  OPERATION_NAME = "rocdl.swmmac.f32.16x16x64.f16"

  _ODS_REGIONS = (0, True)

  def __init__(self, res: _ods_ir.Type, a: _ods_ir.Value, b: _ods_ir.Value, c: _ods_ir.Value, index: _ods_ir.Value[_ods_ir.IntegerType], *, signA: _Optional[_Union[bool, _ods_ir.BoolAttr]] = None, signB: _Optional[_Union[bool, _ods_ir.BoolAttr]] = None, reuseA: _Optional[_Union[bool, _ods_ir.BoolAttr]] = None, reuseB: _Optional[_Union[bool, _ods_ir.BoolAttr]] = None, loc: _Optional[_ods_ir.Location] = None, ip: _Optional[_ods_ir.InsertionPoint] = None):
    operands = []
    attributes = {}
    regions = None
    operands.append(a)
    operands.append(b)
    operands.append(c)
    operands.append(index)
    _ods_context = _ods_get_default_loc_context(loc)
    if signA is not None: attributes["signA"] = (signA if (
        isinstance(signA, _ods_ir.Attribute) or
        not _ods_ir.AttrBuilder.contains('I1Attr')) else
          _ods_ir.AttrBuilder.get('I1Attr')(signA, context=_ods_context))
    if signB is not None: attributes["signB"] = (signB if (
        isinstance(signB, _ods_ir.Attribute) or
        not _ods_ir.AttrBuilder.contains('I1Attr')) else
          _ods_ir.AttrBuilder.get('I1Attr')(signB, context=_ods_context))
    if reuseA is not None: attributes["reuseA"] = (reuseA if (
        isinstance(reuseA, _ods_ir.Attribute) or
        not _ods_ir.AttrBuilder.contains('I1Attr')) else
          _ods_ir.AttrBuilder.get('I1Attr')(reuseA, context=_ods_context))
    if reuseB is not None: attributes["reuseB"] = (reuseB if (
        isinstance(reuseB, _ods_ir.Attribute) or
        not _ods_ir.AttrBuilder.contains('I1Attr')) else
          _ods_ir.AttrBuilder.get('I1Attr')(reuseB, context=_ods_context))
    results = []
    results.append(res)
    _ods_successors = None
    super().__init__(self.OPERATION_NAME, self._ODS_REGIONS, self._ODS_OPERAND_SEGMENTS, self._ODS_RESULT_SEGMENTS, attributes=attributes, results=results, operands=operands, successors=_ods_successors, regions=regions, loc=loc, ip=ip)

  @builtins.property
  def a(self) -> _ods_ir.Value:
    return self.operation.operands[0]

  @builtins.property
  def b(self) -> _ods_ir.Value:
    return self.operation.operands[1]

  @builtins.property
  def c(self) -> _ods_ir.Value:
    return self.operation.operands[2]

  @builtins.property
  def index(self) -> _ods_ir.Value[_ods_ir.IntegerType]:
    return self.operation.operands[3]

  @builtins.property
  def signA(self) -> _ods_ir.BoolAttr:
    return self.operation.attributes["signA"]

  @signA.setter
  def signA(self, value: _ods_ir.BoolAttr):
    if value is None:
      raise ValueError("'None' not allowed as value for mandatory attributes")
    self.operation.attributes["signA"] = value

  @builtins.property
  def signB(self) -> _ods_ir.BoolAttr:
    return self.operation.attributes["signB"]

  @signB.setter
  def signB(self, value: _ods_ir.BoolAttr):
    if value is None:
      raise ValueError("'None' not allowed as value for mandatory attributes")
    self.operation.attributes["signB"] = value

  @builtins.property
  def reuseA(self) -> _ods_ir.BoolAttr:
    return self.operation.attributes["reuseA"]

  @reuseA.setter
  def reuseA(self, value: _ods_ir.BoolAttr):
    if value is None:
      raise ValueError("'None' not allowed as value for mandatory attributes")
    self.operation.attributes["reuseA"] = value

  @builtins.property
  def reuseB(self) -> _ods_ir.BoolAttr:
    return self.operation.attributes["reuseB"]

  @reuseB.setter
  def reuseB(self, value: _ods_ir.BoolAttr):
    if value is None:
      raise ValueError("'None' not allowed as value for mandatory attributes")
    self.operation.attributes["reuseB"] = value

  @builtins.property
  def res(self) -> _ods_ir.OpResult:
    return self.operation.results[0]

@_ods_cext.register_op_adaptor(swmmac_f32_16x16x64_f16)
class swmmac_f32_16x16x64_f16Adaptor(_ods_ir.OpAdaptor):
  OPERATION_NAME = "rocdl.swmmac.f32.16x16x64.f16"

  @builtins.property
  def a(self) -> _ods_ir.Value:
    return self.operands[0]

  @builtins.property
  def b(self) -> _ods_ir.Value:
    return self.operands[1]

  @builtins.property
  def c(self) -> _ods_ir.Value:
    return self.operands[2]

  @builtins.property
  def index(self) -> _ods_ir.Value[_ods_ir.IntegerType]:
    return self.operands[3]

  @builtins.property
  def signA(self) -> _ods_ir.BoolAttr:
    return self.attributes["signA"]

  @builtins.property
  def signB(self) -> _ods_ir.BoolAttr:
    return self.attributes["signB"]

  @builtins.property
  def reuseA(self) -> _ods_ir.BoolAttr:
    return self.attributes["reuseA"]

  @builtins.property
  def reuseB(self) -> _ods_ir.BoolAttr:
    return self.attributes["reuseB"]

def swmmac_f32_16x16x64_f16_(res: _ods_ir.Type, a: _ods_ir.Value, b: _ods_ir.Value, c: _ods_ir.Value, index: _ods_ir.Value[_ods_ir.IntegerType], *, sign_a: _Optional[_Union[bool, _ods_ir.BoolAttr]] = None, sign_b: _Optional[_Union[bool, _ods_ir.BoolAttr]] = None, reuse_a: _Optional[_Union[bool, _ods_ir.BoolAttr]] = None, reuse_b: _Optional[_Union[bool, _ods_ir.BoolAttr]] = None, loc: _Optional[_ods_ir.Location] = None, ip: _Optional[_ods_ir.InsertionPoint] = None) -> _ods_ir.OpResult:
  return swmmac_f32_16x16x64_f16(res=res, a=a, b=b, c=c, index=index, signA=sign_a, signB=sign_b, reuseA=reuse_a, reuseB=reuse_b, loc=loc, ip=ip).result

@_ods_cext.register_operation(_Dialect)
class swmmac_f32_16x16x128_bf8_bf8(_ods_ir.OpView):
  OPERATION_NAME = "rocdl.swmmac.f32.16x16x128.bf8.bf8"

  _ODS_REGIONS = (0, True)

  def __init__(self, res: _ods_ir.Type, a: _ods_ir.Value, b: _ods_ir.Value, c: _ods_ir.Value, index: _ods_ir.Value[_ods_ir.IntegerType], *, reuseA: _Optional[_Union[bool, _ods_ir.BoolAttr]] = None, reuseB: _Optional[_Union[bool, _ods_ir.BoolAttr]] = None, loc: _Optional[_ods_ir.Location] = None, ip: _Optional[_ods_ir.InsertionPoint] = None):
    operands = []
    attributes = {}
    regions = None
    operands.append(a)
    operands.append(b)
    operands.append(c)
    operands.append(index)
    _ods_context = _ods_get_default_loc_context(loc)
    if reuseA is not None: attributes["reuseA"] = (reuseA if (
        isinstance(reuseA, _ods_ir.Attribute) or
        not _ods_ir.AttrBuilder.contains('I1Attr')) else
          _ods_ir.AttrBuilder.get('I1Attr')(reuseA, context=_ods_context))
    if reuseB is not None: attributes["reuseB"] = (reuseB if (
        isinstance(reuseB, _ods_ir.Attribute) or
        not _ods_ir.AttrBuilder.contains('I1Attr')) else
          _ods_ir.AttrBuilder.get('I1Attr')(reuseB, context=_ods_context))
    results = []
    results.append(res)
    _ods_successors = None
    super().__init__(self.OPERATION_NAME, self._ODS_REGIONS, self._ODS_OPERAND_SEGMENTS, self._ODS_RESULT_SEGMENTS, attributes=attributes, results=results, operands=operands, successors=_ods_successors, regions=regions, loc=loc, ip=ip)

  @builtins.property
  def a(self) -> _ods_ir.Value:
    return self.operation.operands[0]

  @builtins.property
  def b(self) -> _ods_ir.Value:
    return self.operation.operands[1]

  @builtins.property
  def c(self) -> _ods_ir.Value:
    return self.operation.operands[2]

  @builtins.property
  def index(self) -> _ods_ir.Value[_ods_ir.IntegerType]:
    return self.operation.operands[3]

  @builtins.property
  def reuseA(self) -> _ods_ir.BoolAttr:
    return self.operation.attributes["reuseA"]

  @reuseA.setter
  def reuseA(self, value: _ods_ir.BoolAttr):
    if value is None:
      raise ValueError("'None' not allowed as value for mandatory attributes")
    self.operation.attributes["reuseA"] = value

  @builtins.property
  def reuseB(self) -> _ods_ir.BoolAttr:
    return self.operation.attributes["reuseB"]

  @reuseB.setter
  def reuseB(self, value: _ods_ir.BoolAttr):
    if value is None:
      raise ValueError("'None' not allowed as value for mandatory attributes")
    self.operation.attributes["reuseB"] = value

  @builtins.property
  def res(self) -> _ods_ir.OpResult:
    return self.operation.results[0]

@_ods_cext.register_op_adaptor(swmmac_f32_16x16x128_bf8_bf8)
class swmmac_f32_16x16x128_bf8_bf8Adaptor(_ods_ir.OpAdaptor):
  OPERATION_NAME = "rocdl.swmmac.f32.16x16x128.bf8.bf8"

  @builtins.property
  def a(self) -> _ods_ir.Value:
    return self.operands[0]

  @builtins.property
  def b(self) -> _ods_ir.Value:
    return self.operands[1]

  @builtins.property
  def c(self) -> _ods_ir.Value:
    return self.operands[2]

  @builtins.property
  def index(self) -> _ods_ir.Value[_ods_ir.IntegerType]:
    return self.operands[3]

  @builtins.property
  def reuseA(self) -> _ods_ir.BoolAttr:
    return self.attributes["reuseA"]

  @builtins.property
  def reuseB(self) -> _ods_ir.BoolAttr:
    return self.attributes["reuseB"]

def swmmac_f32_16x16x128_bf8_bf8_(res: _ods_ir.Type, a: _ods_ir.Value, b: _ods_ir.Value, c: _ods_ir.Value, index: _ods_ir.Value[_ods_ir.IntegerType], *, reuse_a: _Optional[_Union[bool, _ods_ir.BoolAttr]] = None, reuse_b: _Optional[_Union[bool, _ods_ir.BoolAttr]] = None, loc: _Optional[_ods_ir.Location] = None, ip: _Optional[_ods_ir.InsertionPoint] = None) -> _ods_ir.OpResult:
  return swmmac_f32_16x16x128_bf8_bf8(res=res, a=a, b=b, c=c, index=index, reuseA=reuse_a, reuseB=reuse_b, loc=loc, ip=ip).result

@_ods_cext.register_operation(_Dialect)
class swmmac_f32_16x16x128_bf8_fp8(_ods_ir.OpView):
  OPERATION_NAME = "rocdl.swmmac.f32.16x16x128.bf8.fp8"

  _ODS_REGIONS = (0, True)

  def __init__(self, res: _ods_ir.Type, a: _ods_ir.Value, b: _ods_ir.Value, c: _ods_ir.Value, index: _ods_ir.Value[_ods_ir.IntegerType], *, reuseA: _Optional[_Union[bool, _ods_ir.BoolAttr]] = None, reuseB: _Optional[_Union[bool, _ods_ir.BoolAttr]] = None, loc: _Optional[_ods_ir.Location] = None, ip: _Optional[_ods_ir.InsertionPoint] = None):
    operands = []
    attributes = {}
    regions = None
    operands.append(a)
    operands.append(b)
    operands.append(c)
    operands.append(index)
    _ods_context = _ods_get_default_loc_context(loc)
    if reuseA is not None: attributes["reuseA"] = (reuseA if (
        isinstance(reuseA, _ods_ir.Attribute) or
        not _ods_ir.AttrBuilder.contains('I1Attr')) else
          _ods_ir.AttrBuilder.get('I1Attr')(reuseA, context=_ods_context))
    if reuseB is not None: attributes["reuseB"] = (reuseB if (
        isinstance(reuseB, _ods_ir.Attribute) or
        not _ods_ir.AttrBuilder.contains('I1Attr')) else
          _ods_ir.AttrBuilder.get('I1Attr')(reuseB, context=_ods_context))
    results = []
    results.append(res)
    _ods_successors = None
    super().__init__(self.OPERATION_NAME, self._ODS_REGIONS, self._ODS_OPERAND_SEGMENTS, self._ODS_RESULT_SEGMENTS, attributes=attributes, results=results, operands=operands, successors=_ods_successors, regions=regions, loc=loc, ip=ip)

  @builtins.property
  def a(self) -> _ods_ir.Value:
    return self.operation.operands[0]

  @builtins.property
  def b(self) -> _ods_ir.Value:
    return self.operation.operands[1]

  @builtins.property
  def c(self) -> _ods_ir.Value:
    return self.operation.operands[2]

  @builtins.property
  def index(self) -> _ods_ir.Value[_ods_ir.IntegerType]:
    return self.operation.operands[3]

  @builtins.property
  def reuseA(self) -> _ods_ir.BoolAttr:
    return self.operation.attributes["reuseA"]

  @reuseA.setter
  def reuseA(self, value: _ods_ir.BoolAttr):
    if value is None:
      raise ValueError("'None' not allowed as value for mandatory attributes")
    self.operation.attributes["reuseA"] = value

  @builtins.property
  def reuseB(self) -> _ods_ir.BoolAttr:
    return self.operation.attributes["reuseB"]

  @reuseB.setter
  def reuseB(self, value: _ods_ir.BoolAttr):
    if value is None:
      raise ValueError("'None' not allowed as value for mandatory attributes")
    self.operation.attributes["reuseB"] = value

  @builtins.property
  def res(self) -> _ods_ir.OpResult:
    return self.operation.results[0]

@_ods_cext.register_op_adaptor(swmmac_f32_16x16x128_bf8_fp8)
class swmmac_f32_16x16x128_bf8_fp8Adaptor(_ods_ir.OpAdaptor):
  OPERATION_NAME = "rocdl.swmmac.f32.16x16x128.bf8.fp8"

  @builtins.property
  def a(self) -> _ods_ir.Value:
    return self.operands[0]

  @builtins.property
  def b(self) -> _ods_ir.Value:
    return self.operands[1]

  @builtins.property
  def c(self) -> _ods_ir.Value:
    return self.operands[2]

  @builtins.property
  def index(self) -> _ods_ir.Value[_ods_ir.IntegerType]:
    return self.operands[3]

  @builtins.property
  def reuseA(self) -> _ods_ir.BoolAttr:
    return self.attributes["reuseA"]

  @builtins.property
  def reuseB(self) -> _ods_ir.BoolAttr:
    return self.attributes["reuseB"]

def swmmac_f32_16x16x128_bf8_fp8_(res: _ods_ir.Type, a: _ods_ir.Value, b: _ods_ir.Value, c: _ods_ir.Value, index: _ods_ir.Value[_ods_ir.IntegerType], *, reuse_a: _Optional[_Union[bool, _ods_ir.BoolAttr]] = None, reuse_b: _Optional[_Union[bool, _ods_ir.BoolAttr]] = None, loc: _Optional[_ods_ir.Location] = None, ip: _Optional[_ods_ir.InsertionPoint] = None) -> _ods_ir.OpResult:
  return swmmac_f32_16x16x128_bf8_fp8(res=res, a=a, b=b, c=c, index=index, reuseA=reuse_a, reuseB=reuse_b, loc=loc, ip=ip).result

@_ods_cext.register_operation(_Dialect)
class swmmac_f32_16x16x128_fp8_bf8(_ods_ir.OpView):
  OPERATION_NAME = "rocdl.swmmac.f32.16x16x128.fp8.bf8"

  _ODS_REGIONS = (0, True)

  def __init__(self, res: _ods_ir.Type, a: _ods_ir.Value, b: _ods_ir.Value, c: _ods_ir.Value, index: _ods_ir.Value[_ods_ir.IntegerType], *, reuseA: _Optional[_Union[bool, _ods_ir.BoolAttr]] = None, reuseB: _Optional[_Union[bool, _ods_ir.BoolAttr]] = None, loc: _Optional[_ods_ir.Location] = None, ip: _Optional[_ods_ir.InsertionPoint] = None):
    operands = []
    attributes = {}
    regions = None
    operands.append(a)
    operands.append(b)
    operands.append(c)
    operands.append(index)
    _ods_context = _ods_get_default_loc_context(loc)
    if reuseA is not None: attributes["reuseA"] = (reuseA if (
        isinstance(reuseA, _ods_ir.Attribute) or
        not _ods_ir.AttrBuilder.contains('I1Attr')) else
          _ods_ir.AttrBuilder.get('I1Attr')(reuseA, context=_ods_context))
    if reuseB is not None: attributes["reuseB"] = (reuseB if (
        isinstance(reuseB, _ods_ir.Attribute) or
        not _ods_ir.AttrBuilder.contains('I1Attr')) else
          _ods_ir.AttrBuilder.get('I1Attr')(reuseB, context=_ods_context))
    results = []
    results.append(res)
    _ods_successors = None
    super().__init__(self.OPERATION_NAME, self._ODS_REGIONS, self._ODS_OPERAND_SEGMENTS, self._ODS_RESULT_SEGMENTS, attributes=attributes, results=results, operands=operands, successors=_ods_successors, regions=regions, loc=loc, ip=ip)

  @builtins.property
  def a(self) -> _ods_ir.Value:
    return self.operation.operands[0]

  @builtins.property
  def b(self) -> _ods_ir.Value:
    return self.operation.operands[1]

  @builtins.property
  def c(self) -> _ods_ir.Value:
    return self.operation.operands[2]

  @builtins.property
  def index(self) -> _ods_ir.Value[_ods_ir.IntegerType]:
    return self.operation.operands[3]

  @builtins.property
  def reuseA(self) -> _ods_ir.BoolAttr:
    return self.operation.attributes["reuseA"]

  @reuseA.setter
  def reuseA(self, value: _ods_ir.BoolAttr):
    if value is None:
      raise ValueError("'None' not allowed as value for mandatory attributes")
    self.operation.attributes["reuseA"] = value

  @builtins.property
  def reuseB(self) -> _ods_ir.BoolAttr:
    return self.operation.attributes["reuseB"]

  @reuseB.setter
  def reuseB(self, value: _ods_ir.BoolAttr):
    if value is None:
      raise ValueError("'None' not allowed as value for mandatory attributes")
    self.operation.attributes["reuseB"] = value

  @builtins.property
  def res(self) -> _ods_ir.OpResult:
    return self.operation.results[0]

@_ods_cext.register_op_adaptor(swmmac_f32_16x16x128_fp8_bf8)
class swmmac_f32_16x16x128_fp8_bf8Adaptor(_ods_ir.OpAdaptor):
  OPERATION_NAME = "rocdl.swmmac.f32.16x16x128.fp8.bf8"

  @builtins.property
  def a(self) -> _ods_ir.Value:
    return self.operands[0]

  @builtins.property
  def b(self) -> _ods_ir.Value:
    return self.operands[1]

  @builtins.property
  def c(self) -> _ods_ir.Value:
    return self.operands[2]

  @builtins.property
  def index(self) -> _ods_ir.Value[_ods_ir.IntegerType]:
    return self.operands[3]

  @builtins.property
  def reuseA(self) -> _ods_ir.BoolAttr:
    return self.attributes["reuseA"]

  @builtins.property
  def reuseB(self) -> _ods_ir.BoolAttr:
    return self.attributes["reuseB"]

def swmmac_f32_16x16x128_fp8_bf8_(res: _ods_ir.Type, a: _ods_ir.Value, b: _ods_ir.Value, c: _ods_ir.Value, index: _ods_ir.Value[_ods_ir.IntegerType], *, reuse_a: _Optional[_Union[bool, _ods_ir.BoolAttr]] = None, reuse_b: _Optional[_Union[bool, _ods_ir.BoolAttr]] = None, loc: _Optional[_ods_ir.Location] = None, ip: _Optional[_ods_ir.InsertionPoint] = None) -> _ods_ir.OpResult:
  return swmmac_f32_16x16x128_fp8_bf8(res=res, a=a, b=b, c=c, index=index, reuseA=reuse_a, reuseB=reuse_b, loc=loc, ip=ip).result

@_ods_cext.register_operation(_Dialect)
class swmmac_f32_16x16x128_fp8_fp8(_ods_ir.OpView):
  OPERATION_NAME = "rocdl.swmmac.f32.16x16x128.fp8.fp8"

  _ODS_REGIONS = (0, True)

  def __init__(self, res: _ods_ir.Type, a: _ods_ir.Value, b: _ods_ir.Value, c: _ods_ir.Value, index: _ods_ir.Value[_ods_ir.IntegerType], *, reuseA: _Optional[_Union[bool, _ods_ir.BoolAttr]] = None, reuseB: _Optional[_Union[bool, _ods_ir.BoolAttr]] = None, loc: _Optional[_ods_ir.Location] = None, ip: _Optional[_ods_ir.InsertionPoint] = None):
    operands = []
    attributes = {}
    regions = None
    operands.append(a)
    operands.append(b)
    operands.append(c)
    operands.append(index)
    _ods_context = _ods_get_default_loc_context(loc)
    if reuseA is not None: attributes["reuseA"] = (reuseA if (
        isinstance(reuseA, _ods_ir.Attribute) or
        not _ods_ir.AttrBuilder.contains('I1Attr')) else
          _ods_ir.AttrBuilder.get('I1Attr')(reuseA, context=_ods_context))
    if reuseB is not None: attributes["reuseB"] = (reuseB if (
        isinstance(reuseB, _ods_ir.Attribute) or
        not _ods_ir.AttrBuilder.contains('I1Attr')) else
          _ods_ir.AttrBuilder.get('I1Attr')(reuseB, context=_ods_context))
    results = []
    results.append(res)
    _ods_successors = None
    super().__init__(self.OPERATION_NAME, self._ODS_REGIONS, self._ODS_OPERAND_SEGMENTS, self._ODS_RESULT_SEGMENTS, attributes=attributes, results=results, operands=operands, successors=_ods_successors, regions=regions, loc=loc, ip=ip)

  @builtins.property
  def a(self) -> _ods_ir.Value:
    return self.operation.operands[0]

  @builtins.property
  def b(self) -> _ods_ir.Value:
    return self.operation.operands[1]

  @builtins.property
  def c(self) -> _ods_ir.Value:
    return self.operation.operands[2]

  @builtins.property
  def index(self) -> _ods_ir.Value[_ods_ir.IntegerType]:
    return self.operation.operands[3]

  @builtins.property
  def reuseA(self) -> _ods_ir.BoolAttr:
    return self.operation.attributes["reuseA"]

  @reuseA.setter
  def reuseA(self, value: _ods_ir.BoolAttr):
    if value is None:
      raise ValueError("'None' not allowed as value for mandatory attributes")
    self.operation.attributes["reuseA"] = value

  @builtins.property
  def reuseB(self) -> _ods_ir.BoolAttr:
    return self.operation.attributes["reuseB"]

  @reuseB.setter
  def reuseB(self, value: _ods_ir.BoolAttr):
    if value is None:
      raise ValueError("'None' not allowed as value for mandatory attributes")
    self.operation.attributes["reuseB"] = value

  @builtins.property
  def res(self) -> _ods_ir.OpResult:
    return self.operation.results[0]

@_ods_cext.register_op_adaptor(swmmac_f32_16x16x128_fp8_fp8)
class swmmac_f32_16x16x128_fp8_fp8Adaptor(_ods_ir.OpAdaptor):
  OPERATION_NAME = "rocdl.swmmac.f32.16x16x128.fp8.fp8"

  @builtins.property
  def a(self) -> _ods_ir.Value:
    return self.operands[0]

  @builtins.property
  def b(self) -> _ods_ir.Value:
    return self.operands[1]

  @builtins.property
  def c(self) -> _ods_ir.Value:
    return self.operands[2]

  @builtins.property
  def index(self) -> _ods_ir.Value[_ods_ir.IntegerType]:
    return self.operands[3]

  @builtins.property
  def reuseA(self) -> _ods_ir.BoolAttr:
    return self.attributes["reuseA"]

  @builtins.property
  def reuseB(self) -> _ods_ir.BoolAttr:
    return self.attributes["reuseB"]

def swmmac_f32_16x16x128_fp8_fp8_(res: _ods_ir.Type, a: _ods_ir.Value, b: _ods_ir.Value, c: _ods_ir.Value, index: _ods_ir.Value[_ods_ir.IntegerType], *, reuse_a: _Optional[_Union[bool, _ods_ir.BoolAttr]] = None, reuse_b: _Optional[_Union[bool, _ods_ir.BoolAttr]] = None, loc: _Optional[_ods_ir.Location] = None, ip: _Optional[_ods_ir.InsertionPoint] = None) -> _ods_ir.OpResult:
  return swmmac_f32_16x16x128_fp8_fp8(res=res, a=a, b=b, c=c, index=index, reuseA=reuse_a, reuseB=reuse_b, loc=loc, ip=ip).result

@_ods_cext.register_operation(_Dialect)
class swmmac_i32_16x16x32_iu4(_ods_ir.OpView):
  OPERATION_NAME = "rocdl.swmmac.i32.16x16x32.iu4"

  _ODS_REGIONS = (0, True)

  def __init__(self, res: _ods_ir.Type, a: _ods_ir.Value, b: _ods_ir.Value, c: _ods_ir.Value, index: _ods_ir.Value[_ods_ir.IntegerType], *, signA: _Optional[_Union[bool, _ods_ir.BoolAttr]] = None, signB: _Optional[_Union[bool, _ods_ir.BoolAttr]] = None, clamp: _Optional[_Union[bool, _ods_ir.BoolAttr]] = None, loc: _Optional[_ods_ir.Location] = None, ip: _Optional[_ods_ir.InsertionPoint] = None):
    operands = []
    attributes = {}
    regions = None
    operands.append(a)
    operands.append(b)
    operands.append(c)
    operands.append(index)
    _ods_context = _ods_get_default_loc_context(loc)
    if signA is not None: attributes["signA"] = (signA if (
        isinstance(signA, _ods_ir.Attribute) or
        not _ods_ir.AttrBuilder.contains('I1Attr')) else
          _ods_ir.AttrBuilder.get('I1Attr')(signA, context=_ods_context))
    if signB is not None: attributes["signB"] = (signB if (
        isinstance(signB, _ods_ir.Attribute) or
        not _ods_ir.AttrBuilder.contains('I1Attr')) else
          _ods_ir.AttrBuilder.get('I1Attr')(signB, context=_ods_context))
    if clamp is not None: attributes["clamp"] = (clamp if (
        isinstance(clamp, _ods_ir.Attribute) or
        not _ods_ir.AttrBuilder.contains('I1Attr')) else
          _ods_ir.AttrBuilder.get('I1Attr')(clamp, context=_ods_context))
    results = []
    results.append(res)
    _ods_successors = None
    super().__init__(self.OPERATION_NAME, self._ODS_REGIONS, self._ODS_OPERAND_SEGMENTS, self._ODS_RESULT_SEGMENTS, attributes=attributes, results=results, operands=operands, successors=_ods_successors, regions=regions, loc=loc, ip=ip)

  @builtins.property
  def a(self) -> _ods_ir.Value:
    return self.operation.operands[0]

  @builtins.property
  def b(self) -> _ods_ir.Value:
    return self.operation.operands[1]

  @builtins.property
  def c(self) -> _ods_ir.Value:
    return self.operation.operands[2]

  @builtins.property
  def index(self) -> _ods_ir.Value[_ods_ir.IntegerType]:
    return self.operation.operands[3]

  @builtins.property
  def signA(self) -> _ods_ir.BoolAttr:
    return self.operation.attributes["signA"]

  @signA.setter
  def signA(self, value: _ods_ir.BoolAttr):
    if value is None:
      raise ValueError("'None' not allowed as value for mandatory attributes")
    self.operation.attributes["signA"] = value

  @builtins.property
  def signB(self) -> _ods_ir.BoolAttr:
    return self.operation.attributes["signB"]

  @signB.setter
  def signB(self, value: _ods_ir.BoolAttr):
    if value is None:
      raise ValueError("'None' not allowed as value for mandatory attributes")
    self.operation.attributes["signB"] = value

  @builtins.property
  def clamp(self) -> _ods_ir.BoolAttr:
    return self.operation.attributes["clamp"]

  @clamp.setter
  def clamp(self, value: _ods_ir.BoolAttr):
    if value is None:
      raise ValueError("'None' not allowed as value for mandatory attributes")
    self.operation.attributes["clamp"] = value

  @builtins.property
  def res(self) -> _ods_ir.OpResult:
    return self.operation.results[0]

@_ods_cext.register_op_adaptor(swmmac_i32_16x16x32_iu4)
class swmmac_i32_16x16x32_iu4Adaptor(_ods_ir.OpAdaptor):
  OPERATION_NAME = "rocdl.swmmac.i32.16x16x32.iu4"

  @builtins.property
  def a(self) -> _ods_ir.Value:
    return self.operands[0]

  @builtins.property
  def b(self) -> _ods_ir.Value:
    return self.operands[1]

  @builtins.property
  def c(self) -> _ods_ir.Value:
    return self.operands[2]

  @builtins.property
  def index(self) -> _ods_ir.Value[_ods_ir.IntegerType]:
    return self.operands[3]

  @builtins.property
  def signA(self) -> _ods_ir.BoolAttr:
    return self.attributes["signA"]

  @builtins.property
  def signB(self) -> _ods_ir.BoolAttr:
    return self.attributes["signB"]

  @builtins.property
  def clamp(self) -> _ods_ir.BoolAttr:
    return self.attributes["clamp"]

def swmmac_i32_16x16x32_iu4_(res: _ods_ir.Type, a: _ods_ir.Value, b: _ods_ir.Value, c: _ods_ir.Value, index: _ods_ir.Value[_ods_ir.IntegerType], *, sign_a: _Optional[_Union[bool, _ods_ir.BoolAttr]] = None, sign_b: _Optional[_Union[bool, _ods_ir.BoolAttr]] = None, clamp: _Optional[_Union[bool, _ods_ir.BoolAttr]] = None, loc: _Optional[_ods_ir.Location] = None, ip: _Optional[_ods_ir.InsertionPoint] = None) -> _ods_ir.OpResult:
  return swmmac_i32_16x16x32_iu4(res=res, a=a, b=b, c=c, index=index, signA=sign_a, signB=sign_b, clamp=clamp, loc=loc, ip=ip).result

@_ods_cext.register_operation(_Dialect)
class swmmac_i32_16x16x32_iu8(_ods_ir.OpView):
  OPERATION_NAME = "rocdl.swmmac.i32.16x16x32.iu8"

  _ODS_REGIONS = (0, True)

  def __init__(self, res: _ods_ir.Type, a: _ods_ir.Value, b: _ods_ir.Value, c: _ods_ir.Value, index: _ods_ir.Value[_ods_ir.IntegerType], *, signA: _Optional[_Union[bool, _ods_ir.BoolAttr]] = None, signB: _Optional[_Union[bool, _ods_ir.BoolAttr]] = None, clamp: _Optional[_Union[bool, _ods_ir.BoolAttr]] = None, loc: _Optional[_ods_ir.Location] = None, ip: _Optional[_ods_ir.InsertionPoint] = None):
    operands = []
    attributes = {}
    regions = None
    operands.append(a)
    operands.append(b)
    operands.append(c)
    operands.append(index)
    _ods_context = _ods_get_default_loc_context(loc)
    if signA is not None: attributes["signA"] = (signA if (
        isinstance(signA, _ods_ir.Attribute) or
        not _ods_ir.AttrBuilder.contains('I1Attr')) else
          _ods_ir.AttrBuilder.get('I1Attr')(signA, context=_ods_context))
    if signB is not None: attributes["signB"] = (signB if (
        isinstance(signB, _ods_ir.Attribute) or
        not _ods_ir.AttrBuilder.contains('I1Attr')) else
          _ods_ir.AttrBuilder.get('I1Attr')(signB, context=_ods_context))
    if clamp is not None: attributes["clamp"] = (clamp if (
        isinstance(clamp, _ods_ir.Attribute) or
        not _ods_ir.AttrBuilder.contains('I1Attr')) else
          _ods_ir.AttrBuilder.get('I1Attr')(clamp, context=_ods_context))
    results = []
    results.append(res)
    _ods_successors = None
    super().__init__(self.OPERATION_NAME, self._ODS_REGIONS, self._ODS_OPERAND_SEGMENTS, self._ODS_RESULT_SEGMENTS, attributes=attributes, results=results, operands=operands, successors=_ods_successors, regions=regions, loc=loc, ip=ip)

  @builtins.property
  def a(self) -> _ods_ir.Value:
    return self.operation.operands[0]

  @builtins.property
  def b(self) -> _ods_ir.Value:
    return self.operation.operands[1]

  @builtins.property
  def c(self) -> _ods_ir.Value:
    return self.operation.operands[2]

  @builtins.property
  def index(self) -> _ods_ir.Value[_ods_ir.IntegerType]:
    return self.operation.operands[3]

  @builtins.property
  def signA(self) -> _ods_ir.BoolAttr:
    return self.operation.attributes["signA"]

  @signA.setter
  def signA(self, value: _ods_ir.BoolAttr):
    if value is None:
      raise ValueError("'None' not allowed as value for mandatory attributes")
    self.operation.attributes["signA"] = value

  @builtins.property
  def signB(self) -> _ods_ir.BoolAttr:
    return self.operation.attributes["signB"]

  @signB.setter
  def signB(self, value: _ods_ir.BoolAttr):
    if value is None:
      raise ValueError("'None' not allowed as value for mandatory attributes")
    self.operation.attributes["signB"] = value

  @builtins.property
  def clamp(self) -> _ods_ir.BoolAttr:
    return self.operation.attributes["clamp"]

  @clamp.setter
  def clamp(self, value: _ods_ir.BoolAttr):
    if value is None:
      raise ValueError("'None' not allowed as value for mandatory attributes")
    self.operation.attributes["clamp"] = value

  @builtins.property
  def res(self) -> _ods_ir.OpResult:
    return self.operation.results[0]

@_ods_cext.register_op_adaptor(swmmac_i32_16x16x32_iu8)
class swmmac_i32_16x16x32_iu8Adaptor(_ods_ir.OpAdaptor):
  OPERATION_NAME = "rocdl.swmmac.i32.16x16x32.iu8"

  @builtins.property
  def a(self) -> _ods_ir.Value:
    return self.operands[0]

  @builtins.property
  def b(self) -> _ods_ir.Value:
    return self.operands[1]

  @builtins.property
  def c(self) -> _ods_ir.Value:
    return self.operands[2]

  @builtins.property
  def index(self) -> _ods_ir.Value[_ods_ir.IntegerType]:
    return self.operands[3]

  @builtins.property
  def signA(self) -> _ods_ir.BoolAttr:
    return self.attributes["signA"]

  @builtins.property
  def signB(self) -> _ods_ir.BoolAttr:
    return self.attributes["signB"]

  @builtins.property
  def clamp(self) -> _ods_ir.BoolAttr:
    return self.attributes["clamp"]

def swmmac_i32_16x16x32_iu8_(res: _ods_ir.Type, a: _ods_ir.Value, b: _ods_ir.Value, c: _ods_ir.Value, index: _ods_ir.Value[_ods_ir.IntegerType], *, sign_a: _Optional[_Union[bool, _ods_ir.BoolAttr]] = None, sign_b: _Optional[_Union[bool, _ods_ir.BoolAttr]] = None, clamp: _Optional[_Union[bool, _ods_ir.BoolAttr]] = None, loc: _Optional[_ods_ir.Location] = None, ip: _Optional[_ods_ir.InsertionPoint] = None) -> _ods_ir.OpResult:
  return swmmac_i32_16x16x32_iu8(res=res, a=a, b=b, c=c, index=index, signA=sign_a, signB=sign_b, clamp=clamp, loc=loc, ip=ip).result

@_ods_cext.register_operation(_Dialect)
class swmmac_i32_16x16x64_iu4(_ods_ir.OpView):
  OPERATION_NAME = "rocdl.swmmac.i32.16x16x64.iu4"

  _ODS_REGIONS = (0, True)

  def __init__(self, res: _ods_ir.Type, a: _ods_ir.Value, b: _ods_ir.Value, c: _ods_ir.Value, index: _ods_ir.Value[_ods_ir.IntegerType], *, signA: _Optional[_Union[bool, _ods_ir.BoolAttr]] = None, signB: _Optional[_Union[bool, _ods_ir.BoolAttr]] = None, clamp: _Optional[_Union[bool, _ods_ir.BoolAttr]] = None, loc: _Optional[_ods_ir.Location] = None, ip: _Optional[_ods_ir.InsertionPoint] = None):
    operands = []
    attributes = {}
    regions = None
    operands.append(a)
    operands.append(b)
    operands.append(c)
    operands.append(index)
    _ods_context = _ods_get_default_loc_context(loc)
    if signA is not None: attributes["signA"] = (signA if (
        isinstance(signA, _ods_ir.Attribute) or
        not _ods_ir.AttrBuilder.contains('I1Attr')) else
          _ods_ir.AttrBuilder.get('I1Attr')(signA, context=_ods_context))
    if signB is not None: attributes["signB"] = (signB if (
        isinstance(signB, _ods_ir.Attribute) or
        not _ods_ir.AttrBuilder.contains('I1Attr')) else
          _ods_ir.AttrBuilder.get('I1Attr')(signB, context=_ods_context))
    if clamp is not None: attributes["clamp"] = (clamp if (
        isinstance(clamp, _ods_ir.Attribute) or
        not _ods_ir.AttrBuilder.contains('I1Attr')) else
          _ods_ir.AttrBuilder.get('I1Attr')(clamp, context=_ods_context))
    results = []
    results.append(res)
    _ods_successors = None
    super().__init__(self.OPERATION_NAME, self._ODS_REGIONS, self._ODS_OPERAND_SEGMENTS, self._ODS_RESULT_SEGMENTS, attributes=attributes, results=results, operands=operands, successors=_ods_successors, regions=regions, loc=loc, ip=ip)

  @builtins.property
  def a(self) -> _ods_ir.Value:
    return self.operation.operands[0]

  @builtins.property
  def b(self) -> _ods_ir.Value:
    return self.operation.operands[1]

  @builtins.property
  def c(self) -> _ods_ir.Value:
    return self.operation.operands[2]

  @builtins.property
  def index(self) -> _ods_ir.Value[_ods_ir.IntegerType]:
    return self.operation.operands[3]

  @builtins.property
  def signA(self) -> _ods_ir.BoolAttr:
    return self.operation.attributes["signA"]

  @signA.setter
  def signA(self, value: _ods_ir.BoolAttr):
    if value is None:
      raise ValueError("'None' not allowed as value for mandatory attributes")
    self.operation.attributes["signA"] = value

  @builtins.property
  def signB(self) -> _ods_ir.BoolAttr:
    return self.operation.attributes["signB"]

  @signB.setter
  def signB(self, value: _ods_ir.BoolAttr):
    if value is None:
      raise ValueError("'None' not allowed as value for mandatory attributes")
    self.operation.attributes["signB"] = value

  @builtins.property
  def clamp(self) -> _ods_ir.BoolAttr:
    return self.operation.attributes["clamp"]

  @clamp.setter
  def clamp(self, value: _ods_ir.BoolAttr):
    if value is None:
      raise ValueError("'None' not allowed as value for mandatory attributes")
    self.operation.attributes["clamp"] = value

  @builtins.property
  def res(self) -> _ods_ir.OpResult:
    return self.operation.results[0]

@_ods_cext.register_op_adaptor(swmmac_i32_16x16x64_iu4)
class swmmac_i32_16x16x64_iu4Adaptor(_ods_ir.OpAdaptor):
  OPERATION_NAME = "rocdl.swmmac.i32.16x16x64.iu4"

  @builtins.property
  def a(self) -> _ods_ir.Value:
    return self.operands[0]

  @builtins.property
  def b(self) -> _ods_ir.Value:
    return self.operands[1]

  @builtins.property
  def c(self) -> _ods_ir.Value:
    return self.operands[2]

  @builtins.property
  def index(self) -> _ods_ir.Value[_ods_ir.IntegerType]:
    return self.operands[3]

  @builtins.property
  def signA(self) -> _ods_ir.BoolAttr:
    return self.attributes["signA"]

  @builtins.property
  def signB(self) -> _ods_ir.BoolAttr:
    return self.attributes["signB"]

  @builtins.property
  def clamp(self) -> _ods_ir.BoolAttr:
    return self.attributes["clamp"]

def swmmac_i32_16x16x64_iu4_(res: _ods_ir.Type, a: _ods_ir.Value, b: _ods_ir.Value, c: _ods_ir.Value, index: _ods_ir.Value[_ods_ir.IntegerType], *, sign_a: _Optional[_Union[bool, _ods_ir.BoolAttr]] = None, sign_b: _Optional[_Union[bool, _ods_ir.BoolAttr]] = None, clamp: _Optional[_Union[bool, _ods_ir.BoolAttr]] = None, loc: _Optional[_ods_ir.Location] = None, ip: _Optional[_ods_ir.InsertionPoint] = None) -> _ods_ir.OpResult:
  return swmmac_i32_16x16x64_iu4(res=res, a=a, b=b, c=c, index=index, signA=sign_a, signB=sign_b, clamp=clamp, loc=loc, ip=ip).result

@_ods_cext.register_operation(_Dialect)
class swmmac_i32_16x16x128_iu8(_ods_ir.OpView):
  OPERATION_NAME = "rocdl.swmmac.i32.16x16x128.iu8"

  _ODS_REGIONS = (0, True)

  def __init__(self, res: _ods_ir.Type, a: _ods_ir.Value, b: _ods_ir.Value, c: _ods_ir.Value, index: _ods_ir.Value[_ods_ir.IntegerType], *, signA: _Optional[_Union[bool, _ods_ir.BoolAttr]] = None, signB: _Optional[_Union[bool, _ods_ir.BoolAttr]] = None, reuseA: _Optional[_Union[bool, _ods_ir.BoolAttr]] = None, reuseB: _Optional[_Union[bool, _ods_ir.BoolAttr]] = None, clamp: _Optional[_Union[bool, _ods_ir.BoolAttr]] = None, loc: _Optional[_ods_ir.Location] = None, ip: _Optional[_ods_ir.InsertionPoint] = None):
    operands = []
    attributes = {}
    regions = None
    operands.append(a)
    operands.append(b)
    operands.append(c)
    operands.append(index)
    _ods_context = _ods_get_default_loc_context(loc)
    if signA is not None: attributes["signA"] = (signA if (
        isinstance(signA, _ods_ir.Attribute) or
        not _ods_ir.AttrBuilder.contains('I1Attr')) else
          _ods_ir.AttrBuilder.get('I1Attr')(signA, context=_ods_context))
    if signB is not None: attributes["signB"] = (signB if (
        isinstance(signB, _ods_ir.Attribute) or
        not _ods_ir.AttrBuilder.contains('I1Attr')) else
          _ods_ir.AttrBuilder.get('I1Attr')(signB, context=_ods_context))
    if reuseA is not None: attributes["reuseA"] = (reuseA if (
        isinstance(reuseA, _ods_ir.Attribute) or
        not _ods_ir.AttrBuilder.contains('I1Attr')) else
          _ods_ir.AttrBuilder.get('I1Attr')(reuseA, context=_ods_context))
    if reuseB is not None: attributes["reuseB"] = (reuseB if (
        isinstance(reuseB, _ods_ir.Attribute) or
        not _ods_ir.AttrBuilder.contains('I1Attr')) else
          _ods_ir.AttrBuilder.get('I1Attr')(reuseB, context=_ods_context))
    if clamp is not None: attributes["clamp"] = (clamp if (
        isinstance(clamp, _ods_ir.Attribute) or
        not _ods_ir.AttrBuilder.contains('I1Attr')) else
          _ods_ir.AttrBuilder.get('I1Attr')(clamp, context=_ods_context))
    results = []
    results.append(res)
    _ods_successors = None
    super().__init__(self.OPERATION_NAME, self._ODS_REGIONS, self._ODS_OPERAND_SEGMENTS, self._ODS_RESULT_SEGMENTS, attributes=attributes, results=results, operands=operands, successors=_ods_successors, regions=regions, loc=loc, ip=ip)

  @builtins.property
  def a(self) -> _ods_ir.Value:
    return self.operation.operands[0]

  @builtins.property
  def b(self) -> _ods_ir.Value:
    return self.operation.operands[1]

  @builtins.property
  def c(self) -> _ods_ir.Value:
    return self.operation.operands[2]

  @builtins.property
  def index(self) -> _ods_ir.Value[_ods_ir.IntegerType]:
    return self.operation.operands[3]

  @builtins.property
  def signA(self) -> _ods_ir.BoolAttr:
    return self.operation.attributes["signA"]

  @signA.setter
  def signA(self, value: _ods_ir.BoolAttr):
    if value is None:
      raise ValueError("'None' not allowed as value for mandatory attributes")
    self.operation.attributes["signA"] = value

  @builtins.property
  def signB(self) -> _ods_ir.BoolAttr:
    return self.operation.attributes["signB"]

  @signB.setter
  def signB(self, value: _ods_ir.BoolAttr):
    if value is None:
      raise ValueError("'None' not allowed as value for mandatory attributes")
    self.operation.attributes["signB"] = value

  @builtins.property
  def reuseA(self) -> _ods_ir.BoolAttr:
    return self.operation.attributes["reuseA"]

  @reuseA.setter
  def reuseA(self, value: _ods_ir.BoolAttr):
    if value is None:
      raise ValueError("'None' not allowed as value for mandatory attributes")
    self.operation.attributes["reuseA"] = value

  @builtins.property
  def reuseB(self) -> _ods_ir.BoolAttr:
    return self.operation.attributes["reuseB"]

  @reuseB.setter
  def reuseB(self, value: _ods_ir.BoolAttr):
    if value is None:
      raise ValueError("'None' not allowed as value for mandatory attributes")
    self.operation.attributes["reuseB"] = value

  @builtins.property
  def clamp(self) -> _ods_ir.BoolAttr:
    return self.operation.attributes["clamp"]

  @clamp.setter
  def clamp(self, value: _ods_ir.BoolAttr):
    if value is None:
      raise ValueError("'None' not allowed as value for mandatory attributes")
    self.operation.attributes["clamp"] = value

  @builtins.property
  def res(self) -> _ods_ir.OpResult:
    return self.operation.results[0]

@_ods_cext.register_op_adaptor(swmmac_i32_16x16x128_iu8)
class swmmac_i32_16x16x128_iu8Adaptor(_ods_ir.OpAdaptor):
  OPERATION_NAME = "rocdl.swmmac.i32.16x16x128.iu8"

  @builtins.property
  def a(self) -> _ods_ir.Value:
    return self.operands[0]

  @builtins.property
  def b(self) -> _ods_ir.Value:
    return self.operands[1]

  @builtins.property
  def c(self) -> _ods_ir.Value:
    return self.operands[2]

  @builtins.property
  def index(self) -> _ods_ir.Value[_ods_ir.IntegerType]:
    return self.operands[3]

  @builtins.property
  def signA(self) -> _ods_ir.BoolAttr:
    return self.attributes["signA"]

  @builtins.property
  def signB(self) -> _ods_ir.BoolAttr:
    return self.attributes["signB"]

  @builtins.property
  def reuseA(self) -> _ods_ir.BoolAttr:
    return self.attributes["reuseA"]

  @builtins.property
  def reuseB(self) -> _ods_ir.BoolAttr:
    return self.attributes["reuseB"]

  @builtins.property
  def clamp(self) -> _ods_ir.BoolAttr:
    return self.attributes["clamp"]

def swmmac_i32_16x16x128_iu8_(res: _ods_ir.Type, a: _ods_ir.Value, b: _ods_ir.Value, c: _ods_ir.Value, index: _ods_ir.Value[_ods_ir.IntegerType], *, sign_a: _Optional[_Union[bool, _ods_ir.BoolAttr]] = None, sign_b: _Optional[_Union[bool, _ods_ir.BoolAttr]] = None, reuse_a: _Optional[_Union[bool, _ods_ir.BoolAttr]] = None, reuse_b: _Optional[_Union[bool, _ods_ir.BoolAttr]] = None, clamp: _Optional[_Union[bool, _ods_ir.BoolAttr]] = None, loc: _Optional[_ods_ir.Location] = None, ip: _Optional[_ods_ir.InsertionPoint] = None) -> _ods_ir.OpResult:
  return swmmac_i32_16x16x128_iu8(res=res, a=a, b=b, c=c, index=index, signA=sign_a, signB=sign_b, reuseA=reuse_a, reuseB=reuse_b, clamp=clamp, loc=loc, ip=ip).result

@_ods_cext.register_operation(_Dialect)
class udot2(_ods_ir.OpView):
  r"""
  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
  ```
  """

  OPERATION_NAME = "rocdl.udot2"

  _ODS_REGIONS = (0, True)

  def __init__(self, res: _ods_ir.Type, a: _ods_ir.Value[_ods_ir.VectorType], b: _ods_ir.Value[_ods_ir.VectorType], c: _ods_ir.Value, *, clamp: _Optional[_Union[bool, _ods_ir.BoolAttr]] = None, loc: _Optional[_ods_ir.Location] = None, ip: _Optional[_ods_ir.InsertionPoint] = None):
    operands = []
    attributes = {}
    regions = None
    operands.append(a)
    operands.append(b)
    operands.append(c)
    _ods_context = _ods_get_default_loc_context(loc)
    if clamp is not None: attributes["clamp"] = (clamp if (
        isinstance(clamp, _ods_ir.Attribute) or
        not _ods_ir.AttrBuilder.contains('I1Attr')) else
          _ods_ir.AttrBuilder.get('I1Attr')(clamp, context=_ods_context))
    results = []
    results.append(res)
    _ods_successors = None
    super().__init__(self.OPERATION_NAME, self._ODS_REGIONS, self._ODS_OPERAND_SEGMENTS, self._ODS_RESULT_SEGMENTS, attributes=attributes, results=results, operands=operands, successors=_ods_successors, regions=regions, loc=loc, ip=ip)

  @builtins.property
  def a(self) -> _ods_ir.Value[_ods_ir.VectorType]:
    return self.operation.operands[0]

  @builtins.property
  def b(self) -> _ods_ir.Value[_ods_ir.VectorType]:
    return self.operation.operands[1]

  @builtins.property
  def c(self) -> _ods_ir.Value:
    return self.operation.operands[2]

  @builtins.property
  def clamp(self) -> _ods_ir.BoolAttr:
    return self.operation.attributes["clamp"]

  @clamp.setter
  def clamp(self, value: _ods_ir.BoolAttr):
    if value is None:
      raise ValueError("'None' not allowed as value for mandatory attributes")
    self.operation.attributes["clamp"] = value

  @builtins.property
  def res(self) -> _ods_ir.OpResult:
    return self.operation.results[0]

@_ods_cext.register_op_adaptor(udot2)
class udot2Adaptor(_ods_ir.OpAdaptor):
  OPERATION_NAME = "rocdl.udot2"

  @builtins.property
  def a(self) -> _ods_ir.Value[_ods_ir.VectorType]:
    return self.operands[0]

  @builtins.property
  def b(self) -> _ods_ir.Value[_ods_ir.VectorType]:
    return self.operands[1]

  @builtins.property
  def c(self) -> _ods_ir.Value:
    return self.operands[2]

  @builtins.property
  def clamp(self) -> _ods_ir.BoolAttr:
    return self.attributes["clamp"]

def udot2_(res: _ods_ir.Type, a: _ods_ir.Value[_ods_ir.VectorType], b: _ods_ir.Value[_ods_ir.VectorType], c: _ods_ir.Value, *, clamp: _Optional[_Union[bool, _ods_ir.BoolAttr]] = None, loc: _Optional[_ods_ir.Location] = None, ip: _Optional[_ods_ir.InsertionPoint] = None) -> _ods_ir.OpResult:
  return udot2(res=res, a=a, b=b, c=c, clamp=clamp, loc=loc, ip=ip).result

@_ods_cext.register_operation(_Dialect)
class udot4(_ods_ir.OpView):
  r"""
  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
  ```
  """

  OPERATION_NAME = "rocdl.udot4"

  _ODS_REGIONS = (0, True)

  def __init__(self, res: _ods_ir.Type, a: _ods_ir.Value, b: _ods_ir.Value, c: _ods_ir.Value, *, clamp: _Optional[_Union[bool, _ods_ir.BoolAttr]] = None, loc: _Optional[_ods_ir.Location] = None, ip: _Optional[_ods_ir.InsertionPoint] = None):
    operands = []
    attributes = {}
    regions = None
    operands.append(a)
    operands.append(b)
    operands.append(c)
    _ods_context = _ods_get_default_loc_context(loc)
    if clamp is not None: attributes["clamp"] = (clamp if (
        isinstance(clamp, _ods_ir.Attribute) or
        not _ods_ir.AttrBuilder.contains('I1Attr')) else
          _ods_ir.AttrBuilder.get('I1Attr')(clamp, context=_ods_context))
    results = []
    results.append(res)
    _ods_successors = None
    super().__init__(self.OPERATION_NAME, self._ODS_REGIONS, self._ODS_OPERAND_SEGMENTS, self._ODS_RESULT_SEGMENTS, attributes=attributes, results=results, operands=operands, successors=_ods_successors, regions=regions, loc=loc, ip=ip)

  @builtins.property
  def a(self) -> _ods_ir.Value:
    return self.operation.operands[0]

  @builtins.property
  def b(self) -> _ods_ir.Value:
    return self.operation.operands[1]

  @builtins.property
  def c(self) -> _ods_ir.Value:
    return self.operation.operands[2]

  @builtins.property
  def clamp(self) -> _ods_ir.BoolAttr:
    return self.operation.attributes["clamp"]

  @clamp.setter
  def clamp(self, value: _ods_ir.BoolAttr):
    if value is None:
      raise ValueError("'None' not allowed as value for mandatory attributes")
    self.operation.attributes["clamp"] = value

  @builtins.property
  def res(self) -> _ods_ir.OpResult:
    return self.operation.results[0]

@_ods_cext.register_op_adaptor(udot4)
class udot4Adaptor(_ods_ir.OpAdaptor):
  OPERATION_NAME = "rocdl.udot4"

  @builtins.property
  def a(self) -> _ods_ir.Value:
    return self.operands[0]

  @builtins.property
  def b(self) -> _ods_ir.Value:
    return self.operands[1]

  @builtins.property
  def c(self) -> _ods_ir.Value:
    return self.operands[2]

  @builtins.property
  def clamp(self) -> _ods_ir.BoolAttr:
    return self.attributes["clamp"]

def udot4_(res: _ods_ir.Type, a: _ods_ir.Value, b: _ods_ir.Value, c: _ods_ir.Value, *, clamp: _Optional[_Union[bool, _ods_ir.BoolAttr]] = None, loc: _Optional[_ods_ir.Location] = None, ip: _Optional[_ods_ir.InsertionPoint] = None) -> _ods_ir.OpResult:
  return udot4(res=res, a=a, b=b, c=c, clamp=clamp, loc=loc, ip=ip).result

@_ods_cext.register_operation(_Dialect)
class udot8(_ods_ir.OpView):
  r"""
  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
  ```
  """

  OPERATION_NAME = "rocdl.udot8"

  _ODS_REGIONS = (0, True)

  def __init__(self, res: _ods_ir.Type, a: _ods_ir.Value, b: _ods_ir.Value, c: _ods_ir.Value, *, clamp: _Optional[_Union[bool, _ods_ir.BoolAttr]] = None, loc: _Optional[_ods_ir.Location] = None, ip: _Optional[_ods_ir.InsertionPoint] = None):
    operands = []
    attributes = {}
    regions = None
    operands.append(a)
    operands.append(b)
    operands.append(c)
    _ods_context = _ods_get_default_loc_context(loc)
    if clamp is not None: attributes["clamp"] = (clamp if (
        isinstance(clamp, _ods_ir.Attribute) or
        not _ods_ir.AttrBuilder.contains('I1Attr')) else
          _ods_ir.AttrBuilder.get('I1Attr')(clamp, context=_ods_context))
    results = []
    results.append(res)
    _ods_successors = None
    super().__init__(self.OPERATION_NAME, self._ODS_REGIONS, self._ODS_OPERAND_SEGMENTS, self._ODS_RESULT_SEGMENTS, attributes=attributes, results=results, operands=operands, successors=_ods_successors, regions=regions, loc=loc, ip=ip)

  @builtins.property
  def a(self) -> _ods_ir.Value:
    return self.operation.operands[0]

  @builtins.property
  def b(self) -> _ods_ir.Value:
    return self.operation.operands[1]

  @builtins.property
  def c(self) -> _ods_ir.Value:
    return self.operation.operands[2]

  @builtins.property
  def clamp(self) -> _ods_ir.BoolAttr:
    return self.operation.attributes["clamp"]

  @clamp.setter
  def clamp(self, value: _ods_ir.BoolAttr):
    if value is None:
      raise ValueError("'None' not allowed as value for mandatory attributes")
    self.operation.attributes["clamp"] = value

  @builtins.property
  def res(self) -> _ods_ir.OpResult:
    return self.operation.results[0]

@_ods_cext.register_op_adaptor(udot8)
class udot8Adaptor(_ods_ir.OpAdaptor):
  OPERATION_NAME = "rocdl.udot8"

  @builtins.property
  def a(self) -> _ods_ir.Value:
    return self.operands[0]

  @builtins.property
  def b(self) -> _ods_ir.Value:
    return self.operands[1]

  @builtins.property
  def c(self) -> _ods_ir.Value:
    return self.operands[2]

  @builtins.property
  def clamp(self) -> _ods_ir.BoolAttr:
    return self.attributes["clamp"]

def udot8_(res: _ods_ir.Type, a: _ods_ir.Value, b: _ods_ir.Value, c: _ods_ir.Value, *, clamp: _Optional[_Union[bool, _ods_ir.BoolAttr]] = None, loc: _Optional[_ods_ir.Location] = None, ip: _Optional[_ods_ir.InsertionPoint] = None) -> _ods_ir.OpResult:
  return udot8(res=res, a=a, b=b, c=c, clamp=clamp, loc=loc, ip=ip).result

@_ods_cext.register_operation(_Dialect)
class wmma_bf16_16x16x16_bf16(_ods_ir.OpView):
  r"""
  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>
  ```
  """

  OPERATION_NAME = "rocdl.wmma.bf16.16x16x16.bf16"

  _ODS_REGIONS = (0, True)

  def __init__(self, res: _ods_ir.Type, a: _ods_ir.Value, b: _ods_ir.Value, c: _ods_ir.Value, *, opsel: _Optional[_Union[bool, _ods_ir.BoolAttr]] = None, loc: _Optional[_ods_ir.Location] = None, ip: _Optional[_ods_ir.InsertionPoint] = None):
    operands = []
    attributes = {}
    regions = None
    operands.append(a)
    operands.append(b)
    operands.append(c)
    _ods_context = _ods_get_default_loc_context(loc)
    if opsel is not None: attributes["opsel"] = (opsel if (
        isinstance(opsel, _ods_ir.Attribute) or
        not _ods_ir.AttrBuilder.contains('I1Attr')) else
          _ods_ir.AttrBuilder.get('I1Attr')(opsel, context=_ods_context))
    results = []
    results.append(res)
    _ods_successors = None
    super().__init__(self.OPERATION_NAME, self._ODS_REGIONS, self._ODS_OPERAND_SEGMENTS, self._ODS_RESULT_SEGMENTS, attributes=attributes, results=results, operands=operands, successors=_ods_successors, regions=regions, loc=loc, ip=ip)

  @builtins.property
  def a(self) -> _ods_ir.Value:
    return self.operation.operands[0]

  @builtins.property
  def b(self) -> _ods_ir.Value:
    return self.operation.operands[1]

  @builtins.property
  def c(self) -> _ods_ir.Value:
    return self.operation.operands[2]

  @builtins.property
  def opsel(self) -> _ods_ir.BoolAttr:
    return self.operation.attributes["opsel"]

  @opsel.setter
  def opsel(self, value: _ods_ir.BoolAttr):
    if value is None:
      raise ValueError("'None' not allowed as value for mandatory attributes")
    self.operation.attributes["opsel"] = value

  @builtins.property
  def res(self) -> _ods_ir.OpResult:
    return self.operation.results[0]

@_ods_cext.register_op_adaptor(wmma_bf16_16x16x16_bf16)
class wmma_bf16_16x16x16_bf16Adaptor(_ods_ir.OpAdaptor):
  OPERATION_NAME = "rocdl.wmma.bf16.16x16x16.bf16"

  @builtins.property
  def a(self) -> _ods_ir.Value:
    return self.operands[0]

  @builtins.property
  def b(self) -> _ods_ir.Value:
    return self.operands[1]

  @builtins.property
  def c(self) -> _ods_ir.Value:
    return self.operands[2]

  @builtins.property
  def opsel(self) -> _ods_ir.BoolAttr:
    return self.attributes["opsel"]

def wmma_bf16_16x16x16_bf16_(res: _ods_ir.Type, a: _ods_ir.Value, b: _ods_ir.Value, c: _ods_ir.Value, *, opsel: _Optional[_Union[bool, _ods_ir.BoolAttr]] = None, loc: _Optional[_ods_ir.Location] = None, ip: _Optional[_ods_ir.InsertionPoint] = None) -> _ods_ir.OpResult:
  return wmma_bf16_16x16x16_bf16(res=res, a=a, b=b, c=c, opsel=opsel, loc=loc, ip=ip).result

@_ods_cext.register_operation(_Dialect)
class wmma_bf16_16x16x32_bf16(_ods_ir.OpView):
  r"""
  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 :
    (vector<16xi32>, vector<16xi32>, vector<8xf32>) -> vector<8xf32>
  ```
  """

  OPERATION_NAME = "rocdl.wmma.bf16.16x16x32.bf16"

  _ODS_REGIONS = (0, True)

  def __init__(self, res: _ods_ir.Type, a: _ods_ir.Value, b: _ods_ir.Value, c: _ods_ir.Value, *, modC: _Optional[_Union[int, _ods_ir.IntegerAttr]] = None, reuseA: _Optional[_Union[bool, _ods_ir.BoolAttr]] = None, reuseB: _Optional[_Union[bool, _ods_ir.BoolAttr]] = None, loc: _Optional[_ods_ir.Location] = None, ip: _Optional[_ods_ir.InsertionPoint] = None):
    operands = []
    attributes = {}
    regions = None
    operands.append(a)
    operands.append(b)
    operands.append(c)
    _ods_context = _ods_get_default_loc_context(loc)
    if modC is not None: attributes["modC"] = (modC if (
        isinstance(modC, _ods_ir.Attribute) or
        not _ods_ir.AttrBuilder.contains('I16Attr')) else
          _ods_ir.AttrBuilder.get('I16Attr')(modC, context=_ods_context))
    if reuseA is not None: attributes["reuseA"] = (reuseA if (
        isinstance(reuseA, _ods_ir.Attribute) or
        not _ods_ir.AttrBuilder.contains('I1Attr')) else
          _ods_ir.AttrBuilder.get('I1Attr')(reuseA, context=_ods_context))
    if reuseB is not None: attributes["reuseB"] = (reuseB if (
        isinstance(reuseB, _ods_ir.Attribute) or
        not _ods_ir.AttrBuilder.contains('I1Attr')) else
          _ods_ir.AttrBuilder.get('I1Attr')(reuseB, context=_ods_context))
    results = []
    results.append(res)
    _ods_successors = None
    super().__init__(self.OPERATION_NAME, self._ODS_REGIONS, self._ODS_OPERAND_SEGMENTS, self._ODS_RESULT_SEGMENTS, attributes=attributes, results=results, operands=operands, successors=_ods_successors, regions=regions, loc=loc, ip=ip)

  @builtins.property
  def a(self) -> _ods_ir.Value:
    return self.operation.operands[0]

  @builtins.property
  def b(self) -> _ods_ir.Value:
    return self.operation.operands[1]

  @builtins.property
  def c(self) -> _ods_ir.Value:
    return self.operation.operands[2]

  @builtins.property
  def modC(self) -> _ods_ir.IntegerAttr:
    return self.operation.attributes["modC"]

  @modC.setter
  def modC(self, value: _ods_ir.IntegerAttr):
    if value is None:
      raise ValueError("'None' not allowed as value for mandatory attributes")
    self.operation.attributes["modC"] = value

  @builtins.property
  def reuseA(self) -> _ods_ir.BoolAttr:
    return self.operation.attributes["reuseA"]

  @reuseA.setter
  def reuseA(self, value: _ods_ir.BoolAttr):
    if value is None:
      raise ValueError("'None' not allowed as value for mandatory attributes")
    self.operation.attributes["reuseA"] = value

  @builtins.property
  def reuseB(self) -> _ods_ir.BoolAttr:
    return self.operation.attributes["reuseB"]

  @reuseB.setter
  def reuseB(self, value: _ods_ir.BoolAttr):
    if value is None:
      raise ValueError("'None' not allowed as value for mandatory attributes")
    self.operation.attributes["reuseB"] = value

  @builtins.property
  def res(self) -> _ods_ir.OpResult:
    return self.operation.results[0]

@_ods_cext.register_op_adaptor(wmma_bf16_16x16x32_bf16)
class wmma_bf16_16x16x32_bf16Adaptor(_ods_ir.OpAdaptor):
  OPERATION_NAME = "rocdl.wmma.bf16.16x16x32.bf16"

  @builtins.property
  def a(self) -> _ods_ir.Value:
    return self.operands[0]

  @builtins.property
  def b(self) -> _ods_ir.Value:
    return self.operands[1]

  @builtins.property
  def c(self) -> _ods_ir.Value:
    return self.operands[2]

  @builtins.property
  def modC(self) -> _ods_ir.IntegerAttr:
    return self.attributes["modC"]

  @builtins.property
  def reuseA(self) -> _ods_ir.BoolAttr:
    return self.attributes["reuseA"]

  @builtins.property
  def reuseB(self) -> _ods_ir.BoolAttr:
    return self.attributes["reuseB"]

def wmma_bf16_16x16x32_bf16_(res: _ods_ir.Type, a: _ods_ir.Value, b: _ods_ir.Value, c: _ods_ir.Value, *, mod_c: _Optional[_Union[int, _ods_ir.IntegerAttr]] = None, reuse_a: _Optional[_Union[bool, _ods_ir.BoolAttr]] = None, reuse_b: _Optional[_Union[bool, _ods_ir.BoolAttr]] = None, loc: _Optional[_ods_ir.Location] = None, ip: _Optional[_ods_ir.InsertionPoint] = None) -> _ods_ir.OpResult:
  return wmma_bf16_16x16x32_bf16(res=res, a=a, b=b, c=c, modC=mod_c, reuseA=reuse_a, reuseB=reuse_b, loc=loc, ip=ip).result

@_ods_cext.register_operation(_Dialect)
class wmma_bf16f32_16x16x32_bf16(_ods_ir.OpView):
  r"""
  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 :
    (vector<16xbf16>, vector<16xbf16>, vector<8xf32>) -> vector<16xbf16>
  ```
  """

  OPERATION_NAME = "rocdl.wmma.bf16f32.16x16x32.bf16"

  _ODS_REGIONS = (0, True)

  def __init__(self, res: _ods_ir.Type, a: _ods_ir.Value, b: _ods_ir.Value, c: _ods_ir.Value, *, modC: _Optional[_Union[int, _ods_ir.IntegerAttr]] = None, reuseA: _Optional[_Union[bool, _ods_ir.BoolAttr]] = None, reuseB: _Optional[_Union[bool, _ods_ir.BoolAttr]] = None, loc: _Optional[_ods_ir.Location] = None, ip: _Optional[_ods_ir.InsertionPoint] = None):
    operands = []
    attributes = {}
    regions = None
    operands.append(a)
    operands.append(b)
    operands.append(c)
    _ods_context = _ods_get_default_loc_context(loc)
    if modC is not None: attributes["modC"] = (modC if (
        isinstance(modC, _ods_ir.Attribute) or
        not _ods_ir.AttrBuilder.contains('I16Attr')) else
          _ods_ir.AttrBuilder.get('I16Attr')(modC, context=_ods_context))
    if reuseA is not None: attributes["reuseA"] = (reuseA if (
        isinstance(reuseA, _ods_ir.Attribute) or
        not _ods_ir.AttrBuilder.contains('I1Attr')) else
          _ods_ir.AttrBuilder.get('I1Attr')(reuseA, context=_ods_context))
    if reuseB is not None: attributes["reuseB"] = (reuseB if (
        isinstance(reuseB, _ods_ir.Attribute) or
        not _ods_ir.AttrBuilder.contains('I1Attr')) else
          _ods_ir.AttrBuilder.get('I1Attr')(reuseB, context=_ods_context))
    results = []
    results.append(res)
    _ods_successors = None
    super().__init__(self.OPERATION_NAME, self._ODS_REGIONS, self._ODS_OPERAND_SEGMENTS, self._ODS_RESULT_SEGMENTS, attributes=attributes, results=results, operands=operands, successors=_ods_successors, regions=regions, loc=loc, ip=ip)

  @builtins.property
  def a(self) -> _ods_ir.Value:
    return self.operation.operands[0]

  @builtins.property
  def b(self) -> _ods_ir.Value:
    return self.operation.operands[1]

  @builtins.property
  def c(self) -> _ods_ir.Value:
    return self.operation.operands[2]

  @builtins.property
  def modC(self) -> _ods_ir.IntegerAttr:
    return self.operation.attributes["modC"]

  @modC.setter
  def modC(self, value: _ods_ir.IntegerAttr):
    if value is None:
      raise ValueError("'None' not allowed as value for mandatory attributes")
    self.operation.attributes["modC"] = value

  @builtins.property
  def reuseA(self) -> _ods_ir.BoolAttr:
    return self.operation.attributes["reuseA"]

  @reuseA.setter
  def reuseA(self, value: _ods_ir.BoolAttr):
    if value is None:
      raise ValueError("'None' not allowed as value for mandatory attributes")
    self.operation.attributes["reuseA"] = value

  @builtins.property
  def reuseB(self) -> _ods_ir.BoolAttr:
    return self.operation.attributes["reuseB"]

  @reuseB.setter
  def reuseB(self, value: _ods_ir.BoolAttr):
    if value is None:
      raise ValueError("'None' not allowed as value for mandatory attributes")
    self.operation.attributes["reuseB"] = value

  @builtins.property
  def res(self) -> _ods_ir.OpResult:
    return self.operation.results[0]

@_ods_cext.register_op_adaptor(wmma_bf16f32_16x16x32_bf16)
class wmma_bf16f32_16x16x32_bf16Adaptor(_ods_ir.OpAdaptor):
  OPERATION_NAME = "rocdl.wmma.bf16f32.16x16x32.bf16"

  @builtins.property
  def a(self) -> _ods_ir.Value:
    return self.operands[0]

  @builtins.property
  def b(self) -> _ods_ir.Value:
    return self.operands[1]

  @builtins.property
  def c(self) -> _ods_ir.Value:
    return self.operands[2]

  @builtins.property
  def modC(self) -> _ods_ir.IntegerAttr:
    return self.attributes["modC"]

  @builtins.property
  def reuseA(self) -> _ods_ir.BoolAttr:
    return self.attributes["reuseA"]

  @builtins.property
  def reuseB(self) -> _ods_ir.BoolAttr:
    return self.attributes["reuseB"]

def wmma_bf16f32_16x16x32_bf16_(res: _ods_ir.Type, a: _ods_ir.Value, b: _ods_ir.Value, c: _ods_ir.Value, *, mod_c: _Optional[_Union[int, _ods_ir.IntegerAttr]] = None, reuse_a: _Optional[_Union[bool, _ods_ir.BoolAttr]] = None, reuse_b: _Optional[_Union[bool, _ods_ir.BoolAttr]] = None, loc: _Optional[_ods_ir.Location] = None, ip: _Optional[_ods_ir.InsertionPoint] = None) -> _ods_ir.OpResult:
  return wmma_bf16f32_16x16x32_bf16(res=res, a=a, b=b, c=c, modC=mod_c, reuseA=reuse_a, reuseB=reuse_b, loc=loc, ip=ip).result

@_ods_cext.register_operation(_Dialect)
class wmma_f16_16x16x16_f16(_ods_ir.OpView):
  r"""
  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>
  ```
  """

  OPERATION_NAME = "rocdl.wmma.f16.16x16x16.f16"

  _ODS_REGIONS = (0, True)

  def __init__(self, res: _ods_ir.Type, a: _ods_ir.Value, b: _ods_ir.Value, c: _ods_ir.Value, *, opsel: _Optional[_Union[bool, _ods_ir.BoolAttr]] = None, loc: _Optional[_ods_ir.Location] = None, ip: _Optional[_ods_ir.InsertionPoint] = None):
    operands = []
    attributes = {}
    regions = None
    operands.append(a)
    operands.append(b)
    operands.append(c)
    _ods_context = _ods_get_default_loc_context(loc)
    if opsel is not None: attributes["opsel"] = (opsel if (
        isinstance(opsel, _ods_ir.Attribute) or
        not _ods_ir.AttrBuilder.contains('I1Attr')) else
          _ods_ir.AttrBuilder.get('I1Attr')(opsel, context=_ods_context))
    results = []
    results.append(res)
    _ods_successors = None
    super().__init__(self.OPERATION_NAME, self._ODS_REGIONS, self._ODS_OPERAND_SEGMENTS, self._ODS_RESULT_SEGMENTS, attributes=attributes, results=results, operands=operands, successors=_ods_successors, regions=regions, loc=loc, ip=ip)

  @builtins.property
  def a(self) -> _ods_ir.Value:
    return self.operation.operands[0]

  @builtins.property
  def b(self) -> _ods_ir.Value:
    return self.operation.operands[1]

  @builtins.property
  def c(self) -> _ods_ir.Value:
    return self.operation.operands[2]

  @builtins.property
  def opsel(self) -> _ods_ir.BoolAttr:
    return self.operation.attributes["opsel"]

  @opsel.setter
  def opsel(self, value: _ods_ir.BoolAttr):
    if value is None:
      raise ValueError("'None' not allowed as value for mandatory attributes")
    self.operation.attributes["opsel"] = value

  @builtins.property
  def res(self) -> _ods_ir.OpResult:
    return self.operation.results[0]

@_ods_cext.register_op_adaptor(wmma_f16_16x16x16_f16)
class wmma_f16_16x16x16_f16Adaptor(_ods_ir.OpAdaptor):
  OPERATION_NAME = "rocdl.wmma.f16.16x16x16.f16"

  @builtins.property
  def a(self) -> _ods_ir.Value:
    return self.operands[0]

  @builtins.property
  def b(self) -> _ods_ir.Value:
    return self.operands[1]

  @builtins.property
  def c(self) -> _ods_ir.Value:
    return self.operands[2]

  @builtins.property
  def opsel(self) -> _ods_ir.BoolAttr:
    return self.attributes["opsel"]

def wmma_f16_16x16x16_f16_(res: _ods_ir.Type, a: _ods_ir.Value, b: _ods_ir.Value, c: _ods_ir.Value, *, opsel: _Optional[_Union[bool, _ods_ir.BoolAttr]] = None, loc: _Optional[_ods_ir.Location] = None, ip: _Optional[_ods_ir.InsertionPoint] = None) -> _ods_ir.OpResult:
  return wmma_f16_16x16x16_f16(res=res, a=a, b=b, c=c, opsel=opsel, loc=loc, ip=ip).result

@_ods_cext.register_operation(_Dialect)
class wmma_f16_16x16x32_f16(_ods_ir.OpView):
  r"""
  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 :
    (vector<16xi32>, vector<16xi32>, vector<8xf32>) -> vector<8xf32>
  ```
  """

  OPERATION_NAME = "rocdl.wmma.f16.16x16x32.f16"

  _ODS_REGIONS = (0, True)

  def __init__(self, res: _ods_ir.Type, a: _ods_ir.Value, b: _ods_ir.Value, c: _ods_ir.Value, *, modC: _Optional[_Union[int, _ods_ir.IntegerAttr]] = None, reuseA: _Optional[_Union[bool, _ods_ir.BoolAttr]] = None, reuseB: _Optional[_Union[bool, _ods_ir.BoolAttr]] = None, loc: _Optional[_ods_ir.Location] = None, ip: _Optional[_ods_ir.InsertionPoint] = None):
    operands = []
    attributes = {}
    regions = None
    operands.append(a)
    operands.append(b)
    operands.append(c)
    _ods_context = _ods_get_default_loc_context(loc)
    if modC is not None: attributes["modC"] = (modC if (
        isinstance(modC, _ods_ir.Attribute) or
        not _ods_ir.AttrBuilder.contains('I16Attr')) else
          _ods_ir.AttrBuilder.get('I16Attr')(modC, context=_ods_context))
    if reuseA is not None: attributes["reuseA"] = (reuseA if (
        isinstance(reuseA, _ods_ir.Attribute) or
        not _ods_ir.AttrBuilder.contains('I1Attr')) else
          _ods_ir.AttrBuilder.get('I1Attr')(reuseA, context=_ods_context))
    if reuseB is not None: attributes["reuseB"] = (reuseB if (
        isinstance(reuseB, _ods_ir.Attribute) or
        not _ods_ir.AttrBuilder.contains('I1Attr')) else
          _ods_ir.AttrBuilder.get('I1Attr')(reuseB, context=_ods_context))
    results = []
    results.append(res)
    _ods_successors = None
    super().__init__(self.OPERATION_NAME, self._ODS_REGIONS, self._ODS_OPERAND_SEGMENTS, self._ODS_RESULT_SEGMENTS, attributes=attributes, results=results, operands=operands, successors=_ods_successors, regions=regions, loc=loc, ip=ip)

  @builtins.property
  def a(self) -> _ods_ir.Value:
    return self.operation.operands[0]

  @builtins.property
  def b(self) -> _ods_ir.Value:
    return self.operation.operands[1]

  @builtins.property
  def c(self) -> _ods_ir.Value:
    return self.operation.operands[2]

  @builtins.property
  def modC(self) -> _ods_ir.IntegerAttr:
    return self.operation.attributes["modC"]

  @modC.setter
  def modC(self, value: _ods_ir.IntegerAttr):
    if value is None:
      raise ValueError("'None' not allowed as value for mandatory attributes")
    self.operation.attributes["modC"] = value

  @builtins.property
  def reuseA(self) -> _ods_ir.BoolAttr:
    return self.operation.attributes["reuseA"]

  @reuseA.setter
  def reuseA(self, value: _ods_ir.BoolAttr):
    if value is None:
      raise ValueError("'None' not allowed as value for mandatory attributes")
    self.operation.attributes["reuseA"] = value

  @builtins.property
  def reuseB(self) -> _ods_ir.BoolAttr:
    return self.operation.attributes["reuseB"]

  @reuseB.setter
  def reuseB(self, value: _ods_ir.BoolAttr):
    if value is None:
      raise ValueError("'None' not allowed as value for mandatory attributes")
    self.operation.attributes["reuseB"] = value

  @builtins.property
  def res(self) -> _ods_ir.OpResult:
    return self.operation.results[0]

@_ods_cext.register_op_adaptor(wmma_f16_16x16x32_f16)
class wmma_f16_16x16x32_f16Adaptor(_ods_ir.OpAdaptor):
  OPERATION_NAME = "rocdl.wmma.f16.16x16x32.f16"

  @builtins.property
  def a(self) -> _ods_ir.Value:
    return self.operands[0]

  @builtins.property
  def b(self) -> _ods_ir.Value:
    return self.operands[1]

  @builtins.property
  def c(self) -> _ods_ir.Value:
    return self.operands[2]

  @builtins.property
  def modC(self) -> _ods_ir.IntegerAttr:
    return self.attributes["modC"]

  @builtins.property
  def reuseA(self) -> _ods_ir.BoolAttr:
    return self.attributes["reuseA"]

  @builtins.property
  def reuseB(self) -> _ods_ir.BoolAttr:
    return self.attributes["reuseB"]

def wmma_f16_16x16x32_f16_(res: _ods_ir.Type, a: _ods_ir.Value, b: _ods_ir.Value, c: _ods_ir.Value, *, mod_c: _Optional[_Union[int, _ods_ir.IntegerAttr]] = None, reuse_a: _Optional[_Union[bool, _ods_ir.BoolAttr]] = None, reuse_b: _Optional[_Union[bool, _ods_ir.BoolAttr]] = None, loc: _Optional[_ods_ir.Location] = None, ip: _Optional[_ods_ir.InsertionPoint] = None) -> _ods_ir.OpResult:
  return wmma_f16_16x16x32_f16(res=res, a=a, b=b, c=c, modC=mod_c, reuseA=reuse_a, reuseB=reuse_b, loc=loc, ip=ip).result

@_ods_cext.register_operation(_Dialect)
class wmma_f16_16x16x64_bf8_bf8(_ods_ir.OpView):
  r"""
  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 :
    (vector<16xi32>, vector<16xi32>, vector<8xf32>) -> vector<8xf32>
  ```
  """

  OPERATION_NAME = "rocdl.wmma.f16.16x16x64.bf8_bf8"

  _ODS_REGIONS = (0, True)

  def __init__(self, res: _ods_ir.Type, a: _ods_ir.Value, b: _ods_ir.Value, c: _ods_ir.Value, *, modC: _Optional[_Union[int, _ods_ir.IntegerAttr]] = None, reuseA: _Optional[_Union[bool, _ods_ir.BoolAttr]] = None, reuseB: _Optional[_Union[bool, _ods_ir.BoolAttr]] = None, loc: _Optional[_ods_ir.Location] = None, ip: _Optional[_ods_ir.InsertionPoint] = None):
    operands = []
    attributes = {}
    regions = None
    operands.append(a)
    operands.append(b)
    operands.append(c)
    _ods_context = _ods_get_default_loc_context(loc)
    if modC is not None: attributes["modC"] = (modC if (
        isinstance(modC, _ods_ir.Attribute) or
        not _ods_ir.AttrBuilder.contains('I16Attr')) else
          _ods_ir.AttrBuilder.get('I16Attr')(modC, context=_ods_context))
    if reuseA is not None: attributes["reuseA"] = (reuseA if (
        isinstance(reuseA, _ods_ir.Attribute) or
        not _ods_ir.AttrBuilder.contains('I1Attr')) else
          _ods_ir.AttrBuilder.get('I1Attr')(reuseA, context=_ods_context))
    if reuseB is not None: attributes["reuseB"] = (reuseB if (
        isinstance(reuseB, _ods_ir.Attribute) or
        not _ods_ir.AttrBuilder.contains('I1Attr')) else
          _ods_ir.AttrBuilder.get('I1Attr')(reuseB, context=_ods_context))
    results = []
    results.append(res)
    _ods_successors = None
    super().__init__(self.OPERATION_NAME, self._ODS_REGIONS, self._ODS_OPERAND_SEGMENTS, self._ODS_RESULT_SEGMENTS, attributes=attributes, results=results, operands=operands, successors=_ods_successors, regions=regions, loc=loc, ip=ip)

  @builtins.property
  def a(self) -> _ods_ir.Value:
    return self.operation.operands[0]

  @builtins.property
  def b(self) -> _ods_ir.Value:
    return self.operation.operands[1]

  @builtins.property
  def c(self) -> _ods_ir.Value:
    return self.operation.operands[2]

  @builtins.property
  def modC(self) -> _ods_ir.IntegerAttr:
    return self.operation.attributes["modC"]

  @modC.setter
  def modC(self, value: _ods_ir.IntegerAttr):
    if value is None:
      raise ValueError("'None' not allowed as value for mandatory attributes")
    self.operation.attributes["modC"] = value

  @builtins.property
  def reuseA(self) -> _ods_ir.BoolAttr:
    return self.operation.attributes["reuseA"]

  @reuseA.setter
  def reuseA(self, value: _ods_ir.BoolAttr):
    if value is None:
      raise ValueError("'None' not allowed as value for mandatory attributes")
    self.operation.attributes["reuseA"] = value

  @builtins.property
  def reuseB(self) -> _ods_ir.BoolAttr:
    return self.operation.attributes["reuseB"]

  @reuseB.setter
  def reuseB(self, value: _ods_ir.BoolAttr):
    if value is None:
      raise ValueError("'None' not allowed as value for mandatory attributes")
    self.operation.attributes["reuseB"] = value

  @builtins.property
  def res(self) -> _ods_ir.OpResult:
    return self.operation.results[0]

@_ods_cext.register_op_adaptor(wmma_f16_16x16x64_bf8_bf8)
class wmma_f16_16x16x64_bf8_bf8Adaptor(_ods_ir.OpAdaptor):
  OPERATION_NAME = "rocdl.wmma.f16.16x16x64.bf8_bf8"

  @builtins.property
  def a(self) -> _ods_ir.Value:
    return self.operands[0]

  @builtins.property
  def b(self) -> _ods_ir.Value:
    return self.operands[1]

  @builtins.property
  def c(self) -> _ods_ir.Value:
    return self.operands[2]

  @builtins.property
  def modC(self) -> _ods_ir.IntegerAttr:
    return self.attributes["modC"]

  @builtins.property
  def reuseA(self) -> _ods_ir.BoolAttr:
    return self.attributes["reuseA"]

  @builtins.property
  def reuseB(self) -> _ods_ir.BoolAttr:
    return self.attributes["reuseB"]

def wmma_f16_16x16x64_bf8_bf8_(res: _ods_ir.Type, a: _ods_ir.Value, b: _ods_ir.Value, c: _ods_ir.Value, *, mod_c: _Optional[_Union[int, _ods_ir.IntegerAttr]] = None, reuse_a: _Optional[_Union[bool, _ods_ir.BoolAttr]] = None, reuse_b: _Optional[_Union[bool, _ods_ir.BoolAttr]] = None, loc: _Optional[_ods_ir.Location] = None, ip: _Optional[_ods_ir.InsertionPoint] = None) -> _ods_ir.OpResult:
  return wmma_f16_16x16x64_bf8_bf8(res=res, a=a, b=b, c=c, modC=mod_c, reuseA=reuse_a, reuseB=reuse_b, loc=loc, ip=ip).result

@_ods_cext.register_operation(_Dialect)
class wmma_f16_16x16x64_bf8_fp8(_ods_ir.OpView):
  r"""
  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 :
    (vector<16xi32>, vector<16xi32>, vector<8xf32>) -> vector<8xf32>
  ```
  """

  OPERATION_NAME = "rocdl.wmma.f16.16x16x64.bf8_fp8"

  _ODS_REGIONS = (0, True)

  def __init__(self, res: _ods_ir.Type, a: _ods_ir.Value, b: _ods_ir.Value, c: _ods_ir.Value, *, modC: _Optional[_Union[int, _ods_ir.IntegerAttr]] = None, reuseA: _Optional[_Union[bool, _ods_ir.BoolAttr]] = None, reuseB: _Optional[_Union[bool, _ods_ir.BoolAttr]] = None, loc: _Optional[_ods_ir.Location] = None, ip: _Optional[_ods_ir.InsertionPoint] = None):
    operands = []
    attributes = {}
    regions = None
    operands.append(a)
    operands.append(b)
    operands.append(c)
    _ods_context = _ods_get_default_loc_context(loc)
    if modC is not None: attributes["modC"] = (modC if (
        isinstance(modC, _ods_ir.Attribute) or
        not _ods_ir.AttrBuilder.contains('I16Attr')) else
          _ods_ir.AttrBuilder.get('I16Attr')(modC, context=_ods_context))
    if reuseA is not None: attributes["reuseA"] = (reuseA if (
        isinstance(reuseA, _ods_ir.Attribute) or
        not _ods_ir.AttrBuilder.contains('I1Attr')) else
          _ods_ir.AttrBuilder.get('I1Attr')(reuseA, context=_ods_context))
    if reuseB is not None: attributes["reuseB"] = (reuseB if (
        isinstance(reuseB, _ods_ir.Attribute) or
        not _ods_ir.AttrBuilder.contains('I1Attr')) else
          _ods_ir.AttrBuilder.get('I1Attr')(reuseB, context=_ods_context))
    results = []
    results.append(res)
    _ods_successors = None
    super().__init__(self.OPERATION_NAME, self._ODS_REGIONS, self._ODS_OPERAND_SEGMENTS, self._ODS_RESULT_SEGMENTS, attributes=attributes, results=results, operands=operands, successors=_ods_successors, regions=regions, loc=loc, ip=ip)

  @builtins.property
  def a(self) -> _ods_ir.Value:
    return self.operation.operands[0]

  @builtins.property
  def b(self) -> _ods_ir.Value:
    return self.operation.operands[1]

  @builtins.property
  def c(self) -> _ods_ir.Value:
    return self.operation.operands[2]

  @builtins.property
  def modC(self) -> _ods_ir.IntegerAttr:
    return self.operation.attributes["modC"]

  @modC.setter
  def modC(self, value: _ods_ir.IntegerAttr):
    if value is None:
      raise ValueError("'None' not allowed as value for mandatory attributes")
    self.operation.attributes["modC"] = value

  @builtins.property
  def reuseA(self) -> _ods_ir.BoolAttr:
    return self.operation.attributes["reuseA"]

  @reuseA.setter
  def reuseA(self, value: _ods_ir.BoolAttr):
    if value is None:
      raise ValueError("'None' not allowed as value for mandatory attributes")
    self.operation.attributes["reuseA"] = value

  @builtins.property
  def reuseB(self) -> _ods_ir.BoolAttr:
    return self.operation.attributes["reuseB"]

  @reuseB.setter
  def reuseB(self, value: _ods_ir.BoolAttr):
    if value is None:
      raise ValueError("'None' not allowed as value for mandatory attributes")
    self.operation.attributes["reuseB"] = value

  @builtins.property
  def res(self) -> _ods_ir.OpResult:
    return self.operation.results[0]

@_ods_cext.register_op_adaptor(wmma_f16_16x16x64_bf8_fp8)
class wmma_f16_16x16x64_bf8_fp8Adaptor(_ods_ir.OpAdaptor):
  OPERATION_NAME = "rocdl.wmma.f16.16x16x64.bf8_fp8"

  @builtins.property
  def a(self) -> _ods_ir.Value:
    return self.operands[0]

  @builtins.property
  def b(self) -> _ods_ir.Value:
    return self.operands[1]

  @builtins.property
  def c(self) -> _ods_ir.Value:
    return self.operands[2]

  @builtins.property
  def modC(self) -> _ods_ir.IntegerAttr:
    return self.attributes["modC"]

  @builtins.property
  def reuseA(self) -> _ods_ir.BoolAttr:
    return self.attributes["reuseA"]

  @builtins.property
  def reuseB(self) -> _ods_ir.BoolAttr:
    return self.attributes["reuseB"]

def wmma_f16_16x16x64_bf8_fp8_(res: _ods_ir.Type, a: _ods_ir.Value, b: _ods_ir.Value, c: _ods_ir.Value, *, mod_c: _Optional[_Union[int, _ods_ir.IntegerAttr]] = None, reuse_a: _Optional[_Union[bool, _ods_ir.BoolAttr]] = None, reuse_b: _Optional[_Union[bool, _ods_ir.BoolAttr]] = None, loc: _Optional[_ods_ir.Location] = None, ip: _Optional[_ods_ir.InsertionPoint] = None) -> _ods_ir.OpResult:
  return wmma_f16_16x16x64_bf8_fp8(res=res, a=a, b=b, c=c, modC=mod_c, reuseA=reuse_a, reuseB=reuse_b, loc=loc, ip=ip).result

@_ods_cext.register_operation(_Dialect)
class wmma_f16_16x16x64_fp8_bf8(_ods_ir.OpView):
  r"""
  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 :
    (vector<16xi32>, vector<16xi32>, vector<8xf32>) -> vector<8xf32>
  ```
  """

  OPERATION_NAME = "rocdl.wmma.f16.16x16x64.fp8_bf8"

  _ODS_REGIONS = (0, True)

  def __init__(self, res: _ods_ir.Type, a: _ods_ir.Value, b: _ods_ir.Value, c: _ods_ir.Value, *, modC: _Optional[_Union[int, _ods_ir.IntegerAttr]] = None, reuseA: _Optional[_Union[bool, _ods_ir.BoolAttr]] = None, reuseB: _Optional[_Union[bool, _ods_ir.BoolAttr]] = None, loc: _Optional[_ods_ir.Location] = None, ip: _Optional[_ods_ir.InsertionPoint] = None):
    operands = []
    attributes = {}
    regions = None
    operands.append(a)
    operands.append(b)
    operands.append(c)
    _ods_context = _ods_get_default_loc_context(loc)
    if modC is not None: attributes["modC"] = (modC if (
        isinstance(modC, _ods_ir.Attribute) or
        not _ods_ir.AttrBuilder.contains('I16Attr')) else
          _ods_ir.AttrBuilder.get('I16Attr')(modC, context=_ods_context))
    if reuseA is not None: attributes["reuseA"] = (reuseA if (
        isinstance(reuseA, _ods_ir.Attribute) or
        not _ods_ir.AttrBuilder.contains('I1Attr')) else
          _ods_ir.AttrBuilder.get('I1Attr')(reuseA, context=_ods_context))
    if reuseB is not None: attributes["reuseB"] = (reuseB if (
        isinstance(reuseB, _ods_ir.Attribute) or
        not _ods_ir.AttrBuilder.contains('I1Attr')) else
          _ods_ir.AttrBuilder.get('I1Attr')(reuseB, context=_ods_context))
    results = []
    results.append(res)
    _ods_successors = None
    super().__init__(self.OPERATION_NAME, self._ODS_REGIONS, self._ODS_OPERAND_SEGMENTS, self._ODS_RESULT_SEGMENTS, attributes=attributes, results=results, operands=operands, successors=_ods_successors, regions=regions, loc=loc, ip=ip)

  @builtins.property
  def a(self) -> _ods_ir.Value:
    return self.operation.operands[0]

  @builtins.property
  def b(self) -> _ods_ir.Value:
    return self.operation.operands[1]

  @builtins.property
  def c(self) -> _ods_ir.Value:
    return self.operation.operands[2]

  @builtins.property
  def modC(self) -> _ods_ir.IntegerAttr:
    return self.operation.attributes["modC"]

  @modC.setter
  def modC(self, value: _ods_ir.IntegerAttr):
    if value is None:
      raise ValueError("'None' not allowed as value for mandatory attributes")
    self.operation.attributes["modC"] = value

  @builtins.property
  def reuseA(self) -> _ods_ir.BoolAttr:
    return self.operation.attributes["reuseA"]

  @reuseA.setter
  def reuseA(self, value: _ods_ir.BoolAttr):
    if value is None:
      raise ValueError("'None' not allowed as value for mandatory attributes")
    self.operation.attributes["reuseA"] = value

  @builtins.property
  def reuseB(self) -> _ods_ir.BoolAttr:
    return self.operation.attributes["reuseB"]

  @reuseB.setter
  def reuseB(self, value: _ods_ir.BoolAttr):
    if value is None:
      raise ValueError("'None' not allowed as value for mandatory attributes")
    self.operation.attributes["reuseB"] = value

  @builtins.property
  def res(self) -> _ods_ir.OpResult:
    return self.operation.results[0]

@_ods_cext.register_op_adaptor(wmma_f16_16x16x64_fp8_bf8)
class wmma_f16_16x16x64_fp8_bf8Adaptor(_ods_ir.OpAdaptor):
  OPERATION_NAME = "rocdl.wmma.f16.16x16x64.fp8_bf8"

  @builtins.property
  def a(self) -> _ods_ir.Value:
    return self.operands[0]

  @builtins.property
  def b(self) -> _ods_ir.Value:
    return self.operands[1]

  @builtins.property
  def c(self) -> _ods_ir.Value:
    return self.operands[2]

  @builtins.property
  def modC(self) -> _ods_ir.IntegerAttr:
    return self.attributes["modC"]

  @builtins.property
  def reuseA(self) -> _ods_ir.BoolAttr:
    return self.attributes["reuseA"]

  @builtins.property
  def reuseB(self) -> _ods_ir.BoolAttr:
    return self.attributes["reuseB"]

def wmma_f16_16x16x64_fp8_bf8_(res: _ods_ir.Type, a: _ods_ir.Value, b: _ods_ir.Value, c: _ods_ir.Value, *, mod_c: _Optional[_Union[int, _ods_ir.IntegerAttr]] = None, reuse_a: _Optional[_Union[bool, _ods_ir.BoolAttr]] = None, reuse_b: _Optional[_Union[bool, _ods_ir.BoolAttr]] = None, loc: _Optional[_ods_ir.Location] = None, ip: _Optional[_ods_ir.InsertionPoint] = None) -> _ods_ir.OpResult:
  return wmma_f16_16x16x64_fp8_bf8(res=res, a=a, b=b, c=c, modC=mod_c, reuseA=reuse_a, reuseB=reuse_b, loc=loc, ip=ip).result

@_ods_cext.register_operation(_Dialect)
class wmma_f16_16x16x64_fp8_fp8(_ods_ir.OpView):
  r"""
  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 :
    (vector<16xi32>, vector<16xi32>, vector<8xf32>) -> vector<8xf32>
  ```
  """

  OPERATION_NAME = "rocdl.wmma.f16.16x16x64.fp8_fp8"

  _ODS_REGIONS = (0, True)

  def __init__(self, res: _ods_ir.Type, a: _ods_ir.Value, b: _ods_ir.Value, c: _ods_ir.Value, *, modC: _Optional[_Union[int, _ods_ir.IntegerAttr]] = None, reuseA: _Optional[_Union[bool, _ods_ir.BoolAttr]] = None, reuseB: _Optional[_Union[bool, _ods_ir.BoolAttr]] = None, loc: _Optional[_ods_ir.Location] = None, ip: _Optional[_ods_ir.InsertionPoint] = None):
    operands = []
    attributes = {}
    regions = None
    operands.append(a)
    operands.append(b)
    operands.append(c)
    _ods_context = _ods_get_default_loc_context(loc)
    if modC is not None: attributes["modC"] = (modC if (
        isinstance(modC, _ods_ir.Attribute) or
        not _ods_ir.AttrBuilder.contains('I16Attr')) else
          _ods_ir.AttrBuilder.get('I16Attr')(modC, context=_ods_context))
    if reuseA is not None: attributes["reuseA"] = (reuseA if (
        isinstance(reuseA, _ods_ir.Attribute) or
        not _ods_ir.AttrBuilder.contains('I1Attr')) else
          _ods_ir.AttrBuilder.get('I1Attr')(reuseA, context=_ods_context))
    if reuseB is not None: attributes["reuseB"] = (reuseB if (
        isinstance(reuseB, _ods_ir.Attribute) or
        not _ods_ir.AttrBuilder.contains('I1Attr')) else
          _ods_ir.AttrBuilder.get('I1Attr')(reuseB, context=_ods_context))
    results = []
    results.append(res)
    _ods_successors = None
    super().__init__(self.OPERATION_NAME, self._ODS_REGIONS, self._ODS_OPERAND_SEGMENTS, self._ODS_RESULT_SEGMENTS, attributes=attributes, results=results, operands=operands, successors=_ods_successors, regions=regions, loc=loc, ip=ip)

  @builtins.property
  def a(self) -> _ods_ir.Value:
    return self.operation.operands[0]

  @builtins.property
  def b(self) -> _ods_ir.Value:
    return self.operation.operands[1]

  @builtins.property
  def c(self) -> _ods_ir.Value:
    return self.operation.operands[2]

  @builtins.property
  def modC(self) -> _ods_ir.IntegerAttr:
    return self.operation.attributes["modC"]

  @modC.setter
  def modC(self, value: _ods_ir.IntegerAttr):
    if value is None:
      raise ValueError("'None' not allowed as value for mandatory attributes")
    self.operation.attributes["modC"] = value

  @builtins.property
  def reuseA(self) -> _ods_ir.BoolAttr:
    return self.operation.attributes["reuseA"]

  @reuseA.setter
  def reuseA(self, value: _ods_ir.BoolAttr):
    if value is None:
      raise ValueError("'None' not allowed as value for mandatory attributes")
    self.operation.attributes["reuseA"] = value

  @builtins.property
  def reuseB(self) -> _ods_ir.BoolAttr:
    return self.operation.attributes["reuseB"]

  @reuseB.setter
  def reuseB(self, value: _ods_ir.BoolAttr):
    if value is None:
      raise ValueError("'None' not allowed as value for mandatory attributes")
    self.operation.attributes["reuseB"] = value

  @builtins.property
  def res(self) -> _ods_ir.OpResult:
    return self.operation.results[0]

@_ods_cext.register_op_adaptor(wmma_f16_16x16x64_fp8_fp8)
class wmma_f16_16x16x64_fp8_fp8Adaptor(_ods_ir.OpAdaptor):
  OPERATION_NAME = "rocdl.wmma.f16.16x16x64.fp8_fp8"

  @builtins.property
  def a(self) -> _ods_ir.Value:
    return self.operands[0]

  @builtins.property
  def b(self) -> _ods_ir.Value:
    return self.operands[1]

  @builtins.property
  def c(self) -> _ods_ir.Value:
    return self.operands[2]

  @builtins.property
  def modC(self) -> _ods_ir.IntegerAttr:
    return self.attributes["modC"]

  @builtins.property
  def reuseA(self) -> _ods_ir.BoolAttr:
    return self.attributes["reuseA"]

  @builtins.property
  def reuseB(self) -> _ods_ir.BoolAttr:
    return self.attributes["reuseB"]

def wmma_f16_16x16x64_fp8_fp8_(res: _ods_ir.Type, a: _ods_ir.Value, b: _ods_ir.Value, c: _ods_ir.Value, *, mod_c: _Optional[_Union[int, _ods_ir.IntegerAttr]] = None, reuse_a: _Optional[_Union[bool, _ods_ir.BoolAttr]] = None, reuse_b: _Optional[_Union[bool, _ods_ir.BoolAttr]] = None, loc: _Optional[_ods_ir.Location] = None, ip: _Optional[_ods_ir.InsertionPoint] = None) -> _ods_ir.OpResult:
  return wmma_f16_16x16x64_fp8_fp8(res=res, a=a, b=b, c=c, modC=mod_c, reuseA=reuse_a, reuseB=reuse_b, loc=loc, ip=ip).result

@_ods_cext.register_operation(_Dialect)
class wmma_f16_16x16x128_bf8_bf8(_ods_ir.OpView):
  r"""
  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 :
    (vector<16xi32>, vector<16xi32>, vector<8xf32>) -> vector<8xf32>
  ```
  """

  OPERATION_NAME = "rocdl.wmma.f16.16x16x128.bf8_bf8"

  _ODS_REGIONS = (0, True)

  def __init__(self, res: _ods_ir.Type, a: _ods_ir.Value, b: _ods_ir.Value, c: _ods_ir.Value, *, modC: _Optional[_Union[int, _ods_ir.IntegerAttr]] = None, reuseA: _Optional[_Union[bool, _ods_ir.BoolAttr]] = None, reuseB: _Optional[_Union[bool, _ods_ir.BoolAttr]] = None, loc: _Optional[_ods_ir.Location] = None, ip: _Optional[_ods_ir.InsertionPoint] = None):
    operands = []
    attributes = {}
    regions = None
    operands.append(a)
    operands.append(b)
    operands.append(c)
    _ods_context = _ods_get_default_loc_context(loc)
    if modC is not None: attributes["modC"] = (modC if (
        isinstance(modC, _ods_ir.Attribute) or
        not _ods_ir.AttrBuilder.contains('I16Attr')) else
          _ods_ir.AttrBuilder.get('I16Attr')(modC, context=_ods_context))
    if reuseA is not None: attributes["reuseA"] = (reuseA if (
        isinstance(reuseA, _ods_ir.Attribute) or
        not _ods_ir.AttrBuilder.contains('I1Attr')) else
          _ods_ir.AttrBuilder.get('I1Attr')(reuseA, context=_ods_context))
    if reuseB is not None: attributes["reuseB"] = (reuseB if (
        isinstance(reuseB, _ods_ir.Attribute) or
        not _ods_ir.AttrBuilder.contains('I1Attr')) else
          _ods_ir.AttrBuilder.get('I1Attr')(reuseB, context=_ods_context))
    results = []
    results.append(res)
    _ods_successors = None
    super().__init__(self.OPERATION_NAME, self._ODS_REGIONS, self._ODS_OPERAND_SEGMENTS, self._ODS_RESULT_SEGMENTS, attributes=attributes, results=results, operands=operands, successors=_ods_successors, regions=regions, loc=loc, ip=ip)

  @builtins.property
  def a(self) -> _ods_ir.Value:
    return self.operation.operands[0]

  @builtins.property
  def b(self) -> _ods_ir.Value:
    return self.operation.operands[1]

  @builtins.property
  def c(self) -> _ods_ir.Value:
    return self.operation.operands[2]

  @builtins.property
  def modC(self) -> _ods_ir.IntegerAttr:
    return self.operation.attributes["modC"]

  @modC.setter
  def modC(self, value: _ods_ir.IntegerAttr):
    if value is None:
      raise ValueError("'None' not allowed as value for mandatory attributes")
    self.operation.attributes["modC"] = value

  @builtins.property
  def reuseA(self) -> _ods_ir.BoolAttr:
    return self.operation.attributes["reuseA"]

  @reuseA.setter
  def reuseA(self, value: _ods_ir.BoolAttr):
    if value is None:
      raise ValueError("'None' not allowed as value for mandatory attributes")
    self.operation.attributes["reuseA"] = value

  @builtins.property
  def reuseB(self) -> _ods_ir.BoolAttr:
    return self.operation.attributes["reuseB"]

  @reuseB.setter
  def reuseB(self, value: _ods_ir.BoolAttr):
    if value is None:
      raise ValueError("'None' not allowed as value for mandatory attributes")
    self.operation.attributes["reuseB"] = value

  @builtins.property
  def res(self) -> _ods_ir.OpResult:
    return self.operation.results[0]

@_ods_cext.register_op_adaptor(wmma_f16_16x16x128_bf8_bf8)
class wmma_f16_16x16x128_bf8_bf8Adaptor(_ods_ir.OpAdaptor):
  OPERATION_NAME = "rocdl.wmma.f16.16x16x128.bf8_bf8"

  @builtins.property
  def a(self) -> _ods_ir.Value:
    return self.operands[0]

  @builtins.property
  def b(self) -> _ods_ir.Value:
    return self.operands[1]

  @builtins.property
  def c(self) -> _ods_ir.Value:
    return self.operands[2]

  @builtins.property
  def modC(self) -> _ods_ir.IntegerAttr:
    return self.attributes["modC"]

  @builtins.property
  def reuseA(self) -> _ods_ir.BoolAttr:
    return self.attributes["reuseA"]

  @builtins.property
  def reuseB(self) -> _ods_ir.BoolAttr:
    return self.attributes["reuseB"]

def wmma_f16_16x16x128_bf8_bf8_(res: _ods_ir.Type, a: _ods_ir.Value, b: _ods_ir.Value, c: _ods_ir.Value, *, mod_c: _Optional[_Union[int, _ods_ir.IntegerAttr]] = None, reuse_a: _Optional[_Union[bool, _ods_ir.BoolAttr]] = None, reuse_b: _Optional[_Union[bool, _ods_ir.BoolAttr]] = None, loc: _Optional[_ods_ir.Location] = None, ip: _Optional[_ods_ir.InsertionPoint] = None) -> _ods_ir.OpResult:
  return wmma_f16_16x16x128_bf8_bf8(res=res, a=a, b=b, c=c, modC=mod_c, reuseA=reuse_a, reuseB=reuse_b, loc=loc, ip=ip).result

@_ods_cext.register_operation(_Dialect)
class wmma_f16_16x16x128_bf8_fp8(_ods_ir.OpView):
  r"""
  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 :
    (vector<16xi32>, vector<16xi32>, vector<8xf32>) -> vector<8xf32>
  ```
  """

  OPERATION_NAME = "rocdl.wmma.f16.16x16x128.bf8_fp8"

  _ODS_REGIONS = (0, True)

  def __init__(self, res: _ods_ir.Type, a: _ods_ir.Value, b: _ods_ir.Value, c: _ods_ir.Value, *, modC: _Optional[_Union[int, _ods_ir.IntegerAttr]] = None, reuseA: _Optional[_Union[bool, _ods_ir.BoolAttr]] = None, reuseB: _Optional[_Union[bool, _ods_ir.BoolAttr]] = None, loc: _Optional[_ods_ir.Location] = None, ip: _Optional[_ods_ir.InsertionPoint] = None):
    operands = []
    attributes = {}
    regions = None
    operands.append(a)
    operands.append(b)
    operands.append(c)
    _ods_context = _ods_get_default_loc_context(loc)
    if modC is not None: attributes["modC"] = (modC if (
        isinstance(modC, _ods_ir.Attribute) or
        not _ods_ir.AttrBuilder.contains('I16Attr')) else
          _ods_ir.AttrBuilder.get('I16Attr')(modC, context=_ods_context))
    if reuseA is not None: attributes["reuseA"] = (reuseA if (
        isinstance(reuseA, _ods_ir.Attribute) or
        not _ods_ir.AttrBuilder.contains('I1Attr')) else
          _ods_ir.AttrBuilder.get('I1Attr')(reuseA, context=_ods_context))
    if reuseB is not None: attributes["reuseB"] = (reuseB if (
        isinstance(reuseB, _ods_ir.Attribute) or
        not _ods_ir.AttrBuilder.contains('I1Attr')) else
          _ods_ir.AttrBuilder.get('I1Attr')(reuseB, context=_ods_context))
    results = []
    results.append(res)
    _ods_successors = None
    super().__init__(self.OPERATION_NAME, self._ODS_REGIONS, self._ODS_OPERAND_SEGMENTS, self._ODS_RESULT_SEGMENTS, attributes=attributes, results=results, operands=operands, successors=_ods_successors, regions=regions, loc=loc, ip=ip)

  @builtins.property
  def a(self) -> _ods_ir.Value:
    return self.operation.operands[0]

  @builtins.property
  def b(self) -> _ods_ir.Value:
    return self.operation.operands[1]

  @builtins.property
  def c(self) -> _ods_ir.Value:
    return self.operation.operands[2]

  @builtins.property
  def modC(self) -> _ods_ir.IntegerAttr:
    return self.operation.attributes["modC"]

  @modC.setter
  def modC(self, value: _ods_ir.IntegerAttr):
    if value is None:
      raise ValueError("'None' not allowed as value for mandatory attributes")
    self.operation.attributes["modC"] = value

  @builtins.property
  def reuseA(self) -> _ods_ir.BoolAttr:
    return self.operation.attributes["reuseA"]

  @reuseA.setter
  def reuseA(self, value: _ods_ir.BoolAttr):
    if value is None:
      raise ValueError("'None' not allowed as value for mandatory attributes")
    self.operation.attributes["reuseA"] = value

  @builtins.property
  def reuseB(self) -> _ods_ir.BoolAttr:
    return self.operation.attributes["reuseB"]

  @reuseB.setter
  def reuseB(self, value: _ods_ir.BoolAttr):
    if value is None:
      raise ValueError("'None' not allowed as value for mandatory attributes")
    self.operation.attributes["reuseB"] = value

  @builtins.property
  def res(self) -> _ods_ir.OpResult:
    return self.operation.results[0]

@_ods_cext.register_op_adaptor(wmma_f16_16x16x128_bf8_fp8)
class wmma_f16_16x16x128_bf8_fp8Adaptor(_ods_ir.OpAdaptor):
  OPERATION_NAME = "rocdl.wmma.f16.16x16x128.bf8_fp8"

  @builtins.property
  def a(self) -> _ods_ir.Value:
    return self.operands[0]

  @builtins.property
  def b(self) -> _ods_ir.Value:
    return self.operands[1]

  @builtins.property
  def c(self) -> _ods_ir.Value:
    return self.operands[2]

  @builtins.property
  def modC(self) -> _ods_ir.IntegerAttr:
    return self.attributes["modC"]

  @builtins.property
  def reuseA(self) -> _ods_ir.BoolAttr:
    return self.attributes["reuseA"]

  @builtins.property
  def reuseB(self) -> _ods_ir.BoolAttr:
    return self.attributes["reuseB"]

def wmma_f16_16x16x128_bf8_fp8_(res: _ods_ir.Type, a: _ods_ir.Value, b: _ods_ir.Value, c: _ods_ir.Value, *, mod_c: _Optional[_Union[int, _ods_ir.IntegerAttr]] = None, reuse_a: _Optional[_Union[bool, _ods_ir.BoolAttr]] = None, reuse_b: _Optional[_Union[bool, _ods_ir.BoolAttr]] = None, loc: _Optional[_ods_ir.Location] = None, ip: _Optional[_ods_ir.InsertionPoint] = None) -> _ods_ir.OpResult:
  return wmma_f16_16x16x128_bf8_fp8(res=res, a=a, b=b, c=c, modC=mod_c, reuseA=reuse_a, reuseB=reuse_b, loc=loc, ip=ip).result

@_ods_cext.register_operation(_Dialect)
class wmma_f16_16x16x128_fp8_bf8(_ods_ir.OpView):
  r"""
  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 :
    (vector<16xi32>, vector<16xi32>, vector<8xf32>) -> vector<8xf32>
  ```
  """

  OPERATION_NAME = "rocdl.wmma.f16.16x16x128.fp8_bf8"

  _ODS_REGIONS = (0, True)

  def __init__(self, res: _ods_ir.Type, a: _ods_ir.Value, b: _ods_ir.Value, c: _ods_ir.Value, *, modC: _Optional[_Union[int, _ods_ir.IntegerAttr]] = None, reuseA: _Optional[_Union[bool, _ods_ir.BoolAttr]] = None, reuseB: _Optional[_Union[bool, _ods_ir.BoolAttr]] = None, loc: _Optional[_ods_ir.Location] = None, ip: _Optional[_ods_ir.InsertionPoint] = None):
    operands = []
    attributes = {}
    regions = None
    operands.append(a)
    operands.append(b)
    operands.append(c)
    _ods_context = _ods_get_default_loc_context(loc)
    if modC is not None: attributes["modC"] = (modC if (
        isinstance(modC, _ods_ir.Attribute) or
        not _ods_ir.AttrBuilder.contains('I16Attr')) else
          _ods_ir.AttrBuilder.get('I16Attr')(modC, context=_ods_context))
    if reuseA is not None: attributes["reuseA"] = (reuseA if (
        isinstance(reuseA, _ods_ir.Attribute) or
        not _ods_ir.AttrBuilder.contains('I1Attr')) else
          _ods_ir.AttrBuilder.get('I1Attr')(reuseA, context=_ods_context))
    if reuseB is not None: attributes["reuseB"] = (reuseB if (
        isinstance(reuseB, _ods_ir.Attribute) or
        not _ods_ir.AttrBuilder.contains('I1Attr')) else
          _ods_ir.AttrBuilder.get('I1Attr')(reuseB, context=_ods_context))
    results = []
    results.append(res)
    _ods_successors = None
    super().__init__(self.OPERATION_NAME, self._ODS_REGIONS, self._ODS_OPERAND_SEGMENTS, self._ODS_RESULT_SEGMENTS, attributes=attributes, results=results, operands=operands, successors=_ods_successors, regions=regions, loc=loc, ip=ip)

  @builtins.property
  def a(self) -> _ods_ir.Value:
    return self.operation.operands[0]

  @builtins.property
  def b(self) -> _ods_ir.Value:
    return self.operation.operands[1]

  @builtins.property
  def c(self) -> _ods_ir.Value:
    return self.operation.operands[2]

  @builtins.property
  def modC(self) -> _ods_ir.IntegerAttr:
    return self.operation.attributes["modC"]

  @modC.setter
  def modC(self, value: _ods_ir.IntegerAttr):
    if value is None:
      raise ValueError("'None' not allowed as value for mandatory attributes")
    self.operation.attributes["modC"] = value

  @builtins.property
  def reuseA(self) -> _ods_ir.BoolAttr:
    return self.operation.attributes["reuseA"]

  @reuseA.setter
  def reuseA(self, value: _ods_ir.BoolAttr):
    if value is None:
      raise ValueError("'None' not allowed as value for mandatory attributes")
    self.operation.attributes["reuseA"] = value

  @builtins.property
  def reuseB(self) -> _ods_ir.BoolAttr:
    return self.operation.attributes["reuseB"]

  @reuseB.setter
  def reuseB(self, value: _ods_ir.BoolAttr):
    if value is None:
      raise ValueError("'None' not allowed as value for mandatory attributes")
    self.operation.attributes["reuseB"] = value

  @builtins.property
  def res(self) -> _ods_ir.OpResult:
    return self.operation.results[0]

@_ods_cext.register_op_adaptor(wmma_f16_16x16x128_fp8_bf8)
class wmma_f16_16x16x128_fp8_bf8Adaptor(_ods_ir.OpAdaptor):
  OPERATION_NAME = "rocdl.wmma.f16.16x16x128.fp8_bf8"

  @builtins.property
  def a(self) -> _ods_ir.Value:
    return self.operands[0]

  @builtins.property
  def b(self) -> _ods_ir.Value:
    return self.operands[1]

  @builtins.property
  def c(self) -> _ods_ir.Value:
    return self.operands[2]

  @builtins.property
  def modC(self) -> _ods_ir.IntegerAttr:
    return self.attributes["modC"]

  @builtins.property
  def reuseA(self) -> _ods_ir.BoolAttr:
    return self.attributes["reuseA"]

  @builtins.property
  def reuseB(self) -> _ods_ir.BoolAttr:
    return self.attributes["reuseB"]

def wmma_f16_16x16x128_fp8_bf8_(res: _ods_ir.Type, a: _ods_ir.Value, b: _ods_ir.Value, c: _ods_ir.Value, *, mod_c: _Optional[_Union[int, _ods_ir.IntegerAttr]] = None, reuse_a: _Optional[_Union[bool, _ods_ir.BoolAttr]] = None, reuse_b: _Optional[_Union[bool, _ods_ir.BoolAttr]] = None, loc: _Optional[_ods_ir.Location] = None, ip: _Optional[_ods_ir.InsertionPoint] = None) -> _ods_ir.OpResult:
  return wmma_f16_16x16x128_fp8_bf8(res=res, a=a, b=b, c=c, modC=mod_c, reuseA=reuse_a, reuseB=reuse_b, loc=loc, ip=ip).result

@_ods_cext.register_operation(_Dialect)
class wmma_f16_16x16x128_fp8_fp8(_ods_ir.OpView):
  r"""
  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 :
    (vector<16xi32>, vector<16xi32>, vector<8xf32>) -> vector<8xf32>
  ```
  """

  OPERATION_NAME = "rocdl.wmma.f16.16x16x128.fp8_fp8"

  _ODS_REGIONS = (0, True)

  def __init__(self, res: _ods_ir.Type, a: _ods_ir.Value, b: _ods_ir.Value, c: _ods_ir.Value, *, modC: _Optional[_Union[int, _ods_ir.IntegerAttr]] = None, reuseA: _Optional[_Union[bool, _ods_ir.BoolAttr]] = None, reuseB: _Optional[_Union[bool, _ods_ir.BoolAttr]] = None, loc: _Optional[_ods_ir.Location] = None, ip: _Optional[_ods_ir.InsertionPoint] = None):
    operands = []
    attributes = {}
    regions = None
    operands.append(a)
    operands.append(b)
    operands.append(c)
    _ods_context = _ods_get_default_loc_context(loc)
    if modC is not None: attributes["modC"] = (modC if (
        isinstance(modC, _ods_ir.Attribute) or
        not _ods_ir.AttrBuilder.contains('I16Attr')) else
          _ods_ir.AttrBuilder.get('I16Attr')(modC, context=_ods_context))
    if reuseA is not None: attributes["reuseA"] = (reuseA if (
        isinstance(reuseA, _ods_ir.Attribute) or
        not _ods_ir.AttrBuilder.contains('I1Attr')) else
          _ods_ir.AttrBuilder.get('I1Attr')(reuseA, context=_ods_context))
    if reuseB is not None: attributes["reuseB"] = (reuseB if (
        isinstance(reuseB, _ods_ir.Attribute) or
        not _ods_ir.AttrBuilder.contains('I1Attr')) else
          _ods_ir.AttrBuilder.get('I1Attr')(reuseB, context=_ods_context))
    results = []
    results.append(res)
    _ods_successors = None
    super().__init__(self.OPERATION_NAME, self._ODS_REGIONS, self._ODS_OPERAND_SEGMENTS, self._ODS_RESULT_SEGMENTS, attributes=attributes, results=results, operands=operands, successors=_ods_successors, regions=regions, loc=loc, ip=ip)

  @builtins.property
  def a(self) -> _ods_ir.Value:
    return self.operation.operands[0]

  @builtins.property
  def b(self) -> _ods_ir.Value:
    return self.operation.operands[1]

  @builtins.property
  def c(self) -> _ods_ir.Value:
    return self.operation.operands[2]

  @builtins.property
  def modC(self) -> _ods_ir.IntegerAttr:
    return self.operation.attributes["modC"]

  @modC.setter
  def modC(self, value: _ods_ir.IntegerAttr):
    if value is None:
      raise ValueError("'None' not allowed as value for mandatory attributes")
    self.operation.attributes["modC"] = value

  @builtins.property
  def reuseA(self) -> _ods_ir.BoolAttr:
    return self.operation.attributes["reuseA"]

  @reuseA.setter
  def reuseA(self, value: _ods_ir.BoolAttr):
    if value is None:
      raise ValueError("'None' not allowed as value for mandatory attributes")
    self.operation.attributes["reuseA"] = value

  @builtins.property
  def reuseB(self) -> _ods_ir.BoolAttr:
    return self.operation.attributes["reuseB"]

  @reuseB.setter
  def reuseB(self, value: _ods_ir.BoolAttr):
    if value is None:
      raise ValueError("'None' not allowed as value for mandatory attributes")
    self.operation.attributes["reuseB"] = value

  @builtins.property
  def res(self) -> _ods_ir.OpResult:
    return self.operation.results[0]

@_ods_cext.register_op_adaptor(wmma_f16_16x16x128_fp8_fp8)
class wmma_f16_16x16x128_fp8_fp8Adaptor(_ods_ir.OpAdaptor):
  OPERATION_NAME = "rocdl.wmma.f16.16x16x128.fp8_fp8"

  @builtins.property
  def a(self) -> _ods_ir.Value:
    return self.operands[0]

  @builtins.property
  def b(self) -> _ods_ir.Value:
    return self.operands[1]

  @builtins.property
  def c(self) -> _ods_ir.Value:
    return self.operands[2]

  @builtins.property
  def modC(self) -> _ods_ir.IntegerAttr:
    return self.attributes["modC"]

  @builtins.property
  def reuseA(self) -> _ods_ir.BoolAttr:
    return self.attributes["reuseA"]

  @builtins.property
  def reuseB(self) -> _ods_ir.BoolAttr:
    return self.attributes["reuseB"]

def wmma_f16_16x16x128_fp8_fp8_(res: _ods_ir.Type, a: _ods_ir.Value, b: _ods_ir.Value, c: _ods_ir.Value, *, mod_c: _Optional[_Union[int, _ods_ir.IntegerAttr]] = None, reuse_a: _Optional[_Union[bool, _ods_ir.BoolAttr]] = None, reuse_b: _Optional[_Union[bool, _ods_ir.BoolAttr]] = None, loc: _Optional[_ods_ir.Location] = None, ip: _Optional[_ods_ir.InsertionPoint] = None) -> _ods_ir.OpResult:
  return wmma_f16_16x16x128_fp8_fp8(res=res, a=a, b=b, c=c, modC=mod_c, reuseA=reuse_a, reuseB=reuse_b, loc=loc, ip=ip).result

@_ods_cext.register_operation(_Dialect)
class wmma_f32_16x16x4_f32(_ods_ir.OpView):
  r"""
  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 :
    (vector<16xi32>, vector<16xi32>, vector<8xf32>) -> vector<8xf32>
  ```
  """

  OPERATION_NAME = "rocdl.wmma.f32.16x16x4.f32"

  _ODS_REGIONS = (0, True)

  def __init__(self, res: _ods_ir.Type, a: _ods_ir.Value, b: _ods_ir.Value, c: _ods_ir.Value, *, modC: _Optional[_Union[int, _ods_ir.IntegerAttr]] = None, reuseA: _Optional[_Union[bool, _ods_ir.BoolAttr]] = None, reuseB: _Optional[_Union[bool, _ods_ir.BoolAttr]] = None, loc: _Optional[_ods_ir.Location] = None, ip: _Optional[_ods_ir.InsertionPoint] = None):
    operands = []
    attributes = {}
    regions = None
    operands.append(a)
    operands.append(b)
    operands.append(c)
    _ods_context = _ods_get_default_loc_context(loc)
    if modC is not None: attributes["modC"] = (modC if (
        isinstance(modC, _ods_ir.Attribute) or
        not _ods_ir.AttrBuilder.contains('I16Attr')) else
          _ods_ir.AttrBuilder.get('I16Attr')(modC, context=_ods_context))
    if reuseA is not None: attributes["reuseA"] = (reuseA if (
        isinstance(reuseA, _ods_ir.Attribute) or
        not _ods_ir.AttrBuilder.contains('I1Attr')) else
          _ods_ir.AttrBuilder.get('I1Attr')(reuseA, context=_ods_context))
    if reuseB is not None: attributes["reuseB"] = (reuseB if (
        isinstance(reuseB, _ods_ir.Attribute) or
        not _ods_ir.AttrBuilder.contains('I1Attr')) else
          _ods_ir.AttrBuilder.get('I1Attr')(reuseB, context=_ods_context))
    results = []
    results.append(res)
    _ods_successors = None
    super().__init__(self.OPERATION_NAME, self._ODS_REGIONS, self._ODS_OPERAND_SEGMENTS, self._ODS_RESULT_SEGMENTS, attributes=attributes, results=results, operands=operands, successors=_ods_successors, regions=regions, loc=loc, ip=ip)

  @builtins.property
  def a(self) -> _ods_ir.Value:
    return self.operation.operands[0]

  @builtins.property
  def b(self) -> _ods_ir.Value:
    return self.operation.operands[1]

  @builtins.property
  def c(self) -> _ods_ir.Value:
    return self.operation.operands[2]

  @builtins.property
  def modC(self) -> _ods_ir.IntegerAttr:
    return self.operation.attributes["modC"]

  @modC.setter
  def modC(self, value: _ods_ir.IntegerAttr):
    if value is None:
      raise ValueError("'None' not allowed as value for mandatory attributes")
    self.operation.attributes["modC"] = value

  @builtins.property
  def reuseA(self) -> _ods_ir.BoolAttr:
    return self.operation.attributes["reuseA"]

  @reuseA.setter
  def reuseA(self, value: _ods_ir.BoolAttr):
    if value is None:
      raise ValueError("'None' not allowed as value for mandatory attributes")
    self.operation.attributes["reuseA"] = value

  @builtins.property
  def reuseB(self) -> _ods_ir.BoolAttr:
    return self.operation.attributes["reuseB"]

  @reuseB.setter
  def reuseB(self, value: _ods_ir.BoolAttr):
    if value is None:
      raise ValueError("'None' not allowed as value for mandatory attributes")
    self.operation.attributes["reuseB"] = value

  @builtins.property
  def res(self) -> _ods_ir.OpResult:
    return self.operation.results[0]

@_ods_cext.register_op_adaptor(wmma_f32_16x16x4_f32)
class wmma_f32_16x16x4_f32Adaptor(_ods_ir.OpAdaptor):
  OPERATION_NAME = "rocdl.wmma.f32.16x16x4.f32"

  @builtins.property
  def a(self) -> _ods_ir.Value:
    return self.operands[0]

  @builtins.property
  def b(self) -> _ods_ir.Value:
    return self.operands[1]

  @builtins.property
  def c(self) -> _ods_ir.Value:
    return self.operands[2]

  @builtins.property
  def modC(self) -> _ods_ir.IntegerAttr:
    return self.attributes["modC"]

  @builtins.property
  def reuseA(self) -> _ods_ir.BoolAttr:
    return self.attributes["reuseA"]

  @builtins.property
  def reuseB(self) -> _ods_ir.BoolAttr:
    return self.attributes["reuseB"]

def wmma_f32_16x16x4_f32_(res: _ods_ir.Type, a: _ods_ir.Value, b: _ods_ir.Value, c: _ods_ir.Value, *, mod_c: _Optional[_Union[int, _ods_ir.IntegerAttr]] = None, reuse_a: _Optional[_Union[bool, _ods_ir.BoolAttr]] = None, reuse_b: _Optional[_Union[bool, _ods_ir.BoolAttr]] = None, loc: _Optional[_ods_ir.Location] = None, ip: _Optional[_ods_ir.InsertionPoint] = None) -> _ods_ir.OpResult:
  return wmma_f32_16x16x4_f32(res=res, a=a, b=b, c=c, modC=mod_c, reuseA=reuse_a, reuseB=reuse_b, loc=loc, ip=ip).result

@_ods_cext.register_operation(_Dialect)
class wmma_f32_16x16x16_bf8_bf8(_ods_ir.OpView):
  r"""
  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>
  ```
  """

  OPERATION_NAME = "rocdl.wmma.f32.16x16x16.bf8_bf8"

  _ODS_REGIONS = (0, True)

  def __init__(self, res: _ods_ir.Type, a: _ods_ir.Value, b: _ods_ir.Value, c: _ods_ir.Value, *, loc: _Optional[_ods_ir.Location] = None, ip: _Optional[_ods_ir.InsertionPoint] = None):
    operands = []
    attributes = {}
    regions = None
    operands.append(a)
    operands.append(b)
    operands.append(c)
    _ods_context = _ods_get_default_loc_context(loc)
    results = []
    results.append(res)
    _ods_successors = None
    super().__init__(self.OPERATION_NAME, self._ODS_REGIONS, self._ODS_OPERAND_SEGMENTS, self._ODS_RESULT_SEGMENTS, attributes=attributes, results=results, operands=operands, successors=_ods_successors, regions=regions, loc=loc, ip=ip)

  @builtins.property
  def a(self) -> _ods_ir.Value:
    return self.operation.operands[0]

  @builtins.property
  def b(self) -> _ods_ir.Value:
    return self.operation.operands[1]

  @builtins.property
  def c(self) -> _ods_ir.Value:
    return self.operation.operands[2]

  @builtins.property
  def res(self) -> _ods_ir.OpResult:
    return self.operation.results[0]

@_ods_cext.register_op_adaptor(wmma_f32_16x16x16_bf8_bf8)
class wmma_f32_16x16x16_bf8_bf8Adaptor(_ods_ir.OpAdaptor):
  OPERATION_NAME = "rocdl.wmma.f32.16x16x16.bf8_bf8"

  @builtins.property
  def a(self) -> _ods_ir.Value:
    return self.operands[0]

  @builtins.property
  def b(self) -> _ods_ir.Value:
    return self.operands[1]

  @builtins.property
  def c(self) -> _ods_ir.Value:
    return self.operands[2]

def wmma_f32_16x16x16_bf8_bf8_(res: _ods_ir.Type, a: _ods_ir.Value, b: _ods_ir.Value, c: _ods_ir.Value, *, loc: _Optional[_ods_ir.Location] = None, ip: _Optional[_ods_ir.InsertionPoint] = None) -> _ods_ir.OpResult:
  return wmma_f32_16x16x16_bf8_bf8(res=res, a=a, b=b, c=c, loc=loc, ip=ip).result

@_ods_cext.register_operation(_Dialect)
class wmma_f32_16x16x16_bf8_fp8(_ods_ir.OpView):
  r"""
  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>
  ```
  """

  OPERATION_NAME = "rocdl.wmma.f32.16x16x16.bf8_fp8"

  _ODS_REGIONS = (0, True)

  def __init__(self, res: _ods_ir.Type, a: _ods_ir.Value, b: _ods_ir.Value, c: _ods_ir.Value, *, loc: _Optional[_ods_ir.Location] = None, ip: _Optional[_ods_ir.InsertionPoint] = None):
    operands = []
    attributes = {}
    regions = None
    operands.append(a)
    operands.append(b)
    operands.append(c)
    _ods_context = _ods_get_default_loc_context(loc)
    results = []
    results.append(res)
    _ods_successors = None
    super().__init__(self.OPERATION_NAME, self._ODS_REGIONS, self._ODS_OPERAND_SEGMENTS, self._ODS_RESULT_SEGMENTS, attributes=attributes, results=results, operands=operands, successors=_ods_successors, regions=regions, loc=loc, ip=ip)

  @builtins.property
  def a(self) -> _ods_ir.Value:
    return self.operation.operands[0]

  @builtins.property
  def b(self) -> _ods_ir.Value:
    return self.operation.operands[1]

  @builtins.property
  def c(self) -> _ods_ir.Value:
    return self.operation.operands[2]

  @builtins.property
  def res(self) -> _ods_ir.OpResult:
    return self.operation.results[0]

@_ods_cext.register_op_adaptor(wmma_f32_16x16x16_bf8_fp8)
class wmma_f32_16x16x16_bf8_fp8Adaptor(_ods_ir.OpAdaptor):
  OPERATION_NAME = "rocdl.wmma.f32.16x16x16.bf8_fp8"

  @builtins.property
  def a(self) -> _ods_ir.Value:
    return self.operands[0]

  @builtins.property
  def b(self) -> _ods_ir.Value:
    return self.operands[1]

  @builtins.property
  def c(self) -> _ods_ir.Value:
    return self.operands[2]

def wmma_f32_16x16x16_bf8_fp8_(res: _ods_ir.Type, a: _ods_ir.Value, b: _ods_ir.Value, c: _ods_ir.Value, *, loc: _Optional[_ods_ir.Location] = None, ip: _Optional[_ods_ir.InsertionPoint] = None) -> _ods_ir.OpResult:
  return wmma_f32_16x16x16_bf8_fp8(res=res, a=a, b=b, c=c, loc=loc, ip=ip).result

@_ods_cext.register_operation(_Dialect)
class wmma_f32_16x16x16_bf16(_ods_ir.OpView):
  r"""
  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>
  ```
  """

  OPERATION_NAME = "rocdl.wmma.f32.16x16x16.bf16"

  _ODS_REGIONS = (0, True)

  def __init__(self, res: _ods_ir.Type, a: _ods_ir.Value, b: _ods_ir.Value, c: _ods_ir.Value, *, loc: _Optional[_ods_ir.Location] = None, ip: _Optional[_ods_ir.InsertionPoint] = None):
    operands = []
    attributes = {}
    regions = None
    operands.append(a)
    operands.append(b)
    operands.append(c)
    _ods_context = _ods_get_default_loc_context(loc)
    results = []
    results.append(res)
    _ods_successors = None
    super().__init__(self.OPERATION_NAME, self._ODS_REGIONS, self._ODS_OPERAND_SEGMENTS, self._ODS_RESULT_SEGMENTS, attributes=attributes, results=results, operands=operands, successors=_ods_successors, regions=regions, loc=loc, ip=ip)

  @builtins.property
  def a(self) -> _ods_ir.Value:
    return self.operation.operands[0]

  @builtins.property
  def b(self) -> _ods_ir.Value:
    return self.operation.operands[1]

  @builtins.property
  def c(self) -> _ods_ir.Value:
    return self.operation.operands[2]

  @builtins.property
  def res(self) -> _ods_ir.OpResult:
    return self.operation.results[0]

@_ods_cext.register_op_adaptor(wmma_f32_16x16x16_bf16)
class wmma_f32_16x16x16_bf16Adaptor(_ods_ir.OpAdaptor):
  OPERATION_NAME = "rocdl.wmma.f32.16x16x16.bf16"

  @builtins.property
  def a(self) -> _ods_ir.Value:
    return self.operands[0]

  @builtins.property
  def b(self) -> _ods_ir.Value:
    return self.operands[1]

  @builtins.property
  def c(self) -> _ods_ir.Value:
    return self.operands[2]

def wmma_f32_16x16x16_bf16_(res: _ods_ir.Type, a: _ods_ir.Value, b: _ods_ir.Value, c: _ods_ir.Value, *, loc: _Optional[_ods_ir.Location] = None, ip: _Optional[_ods_ir.InsertionPoint] = None) -> _ods_ir.OpResult:
  return wmma_f32_16x16x16_bf16(res=res, a=a, b=b, c=c, loc=loc, ip=ip).result

@_ods_cext.register_operation(_Dialect)
class wmma_f32_16x16x16_f16(_ods_ir.OpView):
  r"""
  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>
  ```
  """

  OPERATION_NAME = "rocdl.wmma.f32.16x16x16.f16"

  _ODS_REGIONS = (0, True)

  def __init__(self, res: _ods_ir.Type, a: _ods_ir.Value, b: _ods_ir.Value, c: _ods_ir.Value, *, loc: _Optional[_ods_ir.Location] = None, ip: _Optional[_ods_ir.InsertionPoint] = None):
    operands = []
    attributes = {}
    regions = None
    operands.append(a)
    operands.append(b)
    operands.append(c)
    _ods_context = _ods_get_default_loc_context(loc)
    results = []
    results.append(res)
    _ods_successors = None
    super().__init__(self.OPERATION_NAME, self._ODS_REGIONS, self._ODS_OPERAND_SEGMENTS, self._ODS_RESULT_SEGMENTS, attributes=attributes, results=results, operands=operands, successors=_ods_successors, regions=regions, loc=loc, ip=ip)

  @builtins.property
  def a(self) -> _ods_ir.Value:
    return self.operation.operands[0]

  @builtins.property
  def b(self) -> _ods_ir.Value:
    return self.operation.operands[1]

  @builtins.property
  def c(self) -> _ods_ir.Value:
    return self.operation.operands[2]

  @builtins.property
  def res(self) -> _ods_ir.OpResult:
    return self.operation.results[0]

@_ods_cext.register_op_adaptor(wmma_f32_16x16x16_f16)
class wmma_f32_16x16x16_f16Adaptor(_ods_ir.OpAdaptor):
  OPERATION_NAME = "rocdl.wmma.f32.16x16x16.f16"

  @builtins.property
  def a(self) -> _ods_ir.Value:
    return self.operands[0]

  @builtins.property
  def b(self) -> _ods_ir.Value:
    return self.operands[1]

  @builtins.property
  def c(self) -> _ods_ir.Value:
    return self.operands[2]

def wmma_f32_16x16x16_f16_(res: _ods_ir.Type, a: _ods_ir.Value, b: _ods_ir.Value, c: _ods_ir.Value, *, loc: _Optional[_ods_ir.Location] = None, ip: _Optional[_ods_ir.InsertionPoint] = None) -> _ods_ir.OpResult:
  return wmma_f32_16x16x16_f16(res=res, a=a, b=b, c=c, loc=loc, ip=ip).result

@_ods_cext.register_operation(_Dialect)
class wmma_f32_16x16x16_fp8_bf8(_ods_ir.OpView):
  r"""
  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>
  ```
  """

  OPERATION_NAME = "rocdl.wmma.f32.16x16x16.fp8_bf8"

  _ODS_REGIONS = (0, True)

  def __init__(self, res: _ods_ir.Type, a: _ods_ir.Value, b: _ods_ir.Value, c: _ods_ir.Value, *, loc: _Optional[_ods_ir.Location] = None, ip: _Optional[_ods_ir.InsertionPoint] = None):
    operands = []
    attributes = {}
    regions = None
    operands.append(a)
    operands.append(b)
    operands.append(c)
    _ods_context = _ods_get_default_loc_context(loc)
    results = []
    results.append(res)
    _ods_successors = None
    super().__init__(self.OPERATION_NAME, self._ODS_REGIONS, self._ODS_OPERAND_SEGMENTS, self._ODS_RESULT_SEGMENTS, attributes=attributes, results=results, operands=operands, successors=_ods_successors, regions=regions, loc=loc, ip=ip)

  @builtins.property
  def a(self) -> _ods_ir.Value:
    return self.operation.operands[0]

  @builtins.property
  def b(self) -> _ods_ir.Value:
    return self.operation.operands[1]

  @builtins.property
  def c(self) -> _ods_ir.Value:
    return self.operation.operands[2]

  @builtins.property
  def res(self) -> _ods_ir.OpResult:
    return self.operation.results[0]

@_ods_cext.register_op_adaptor(wmma_f32_16x16x16_fp8_bf8)
class wmma_f32_16x16x16_fp8_bf8Adaptor(_ods_ir.OpAdaptor):
  OPERATION_NAME = "rocdl.wmma.f32.16x16x16.fp8_bf8"

  @builtins.property
  def a(self) -> _ods_ir.Value:
    return self.operands[0]

  @builtins.property
  def b(self) -> _ods_ir.Value:
    return self.operands[1]

  @builtins.property
  def c(self) -> _ods_ir.Value:
    return self.operands[2]

def wmma_f32_16x16x16_fp8_bf8_(res: _ods_ir.Type, a: _ods_ir.Value, b: _ods_ir.Value, c: _ods_ir.Value, *, loc: _Optional[_ods_ir.Location] = None, ip: _Optional[_ods_ir.InsertionPoint] = None) -> _ods_ir.OpResult:
  return wmma_f32_16x16x16_fp8_bf8(res=res, a=a, b=b, c=c, loc=loc, ip=ip).result

@_ods_cext.register_operation(_Dialect)
class wmma_f32_16x16x16_fp8_fp8(_ods_ir.OpView):
  r"""
  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>
  ```
  """

  OPERATION_NAME = "rocdl.wmma.f32.16x16x16.fp8_fp8"

  _ODS_REGIONS = (0, True)

  def __init__(self, res: _ods_ir.Type, a: _ods_ir.Value, b: _ods_ir.Value, c: _ods_ir.Value, *, loc: _Optional[_ods_ir.Location] = None, ip: _Optional[_ods_ir.InsertionPoint] = None):
    operands = []
    attributes = {}
    regions = None
    operands.append(a)
    operands.append(b)
    operands.append(c)
    _ods_context = _ods_get_default_loc_context(loc)
    results = []
    results.append(res)
    _ods_successors = None
    super().__init__(self.OPERATION_NAME, self._ODS_REGIONS, self._ODS_OPERAND_SEGMENTS, self._ODS_RESULT_SEGMENTS, attributes=attributes, results=results, operands=operands, successors=_ods_successors, regions=regions, loc=loc, ip=ip)

  @builtins.property
  def a(self) -> _ods_ir.Value:
    return self.operation.operands[0]

  @builtins.property
  def b(self) -> _ods_ir.Value:
    return self.operation.operands[1]

  @builtins.property
  def c(self) -> _ods_ir.Value:
    return self.operation.operands[2]

  @builtins.property
  def res(self) -> _ods_ir.OpResult:
    return self.operation.results[0]

@_ods_cext.register_op_adaptor(wmma_f32_16x16x16_fp8_fp8)
class wmma_f32_16x16x16_fp8_fp8Adaptor(_ods_ir.OpAdaptor):
  OPERATION_NAME = "rocdl.wmma.f32.16x16x16.fp8_fp8"

  @builtins.property
  def a(self) -> _ods_ir.Value:
    return self.operands[0]

  @builtins.property
  def b(self) -> _ods_ir.Value:
    return self.operands[1]

  @builtins.property
  def c(self) -> _ods_ir.Value:
    return self.operands[2]

def wmma_f32_16x16x16_fp8_fp8_(res: _ods_ir.Type, a: _ods_ir.Value, b: _ods_ir.Value, c: _ods_ir.Value, *, loc: _Optional[_ods_ir.Location] = None, ip: _Optional[_ods_ir.InsertionPoint] = None) -> _ods_ir.OpResult:
  return wmma_f32_16x16x16_fp8_fp8(res=res, a=a, b=b, c=c, loc=loc, ip=ip).result

@_ods_cext.register_operation(_Dialect)
class wmma_f32_16x16x32_bf16(_ods_ir.OpView):
  r"""
  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 :
    (vector<16xi32>, vector<16xi32>, vector<8xf32>) -> vector<8xf32>
  ```
  """

  OPERATION_NAME = "rocdl.wmma.f32.16x16x32.bf16"

  _ODS_REGIONS = (0, True)

  def __init__(self, res: _ods_ir.Type, a: _ods_ir.Value, b: _ods_ir.Value, c: _ods_ir.Value, *, modC: _Optional[_Union[int, _ods_ir.IntegerAttr]] = None, reuseA: _Optional[_Union[bool, _ods_ir.BoolAttr]] = None, reuseB: _Optional[_Union[bool, _ods_ir.BoolAttr]] = None, loc: _Optional[_ods_ir.Location] = None, ip: _Optional[_ods_ir.InsertionPoint] = None):
    operands = []
    attributes = {}
    regions = None
    operands.append(a)
    operands.append(b)
    operands.append(c)
    _ods_context = _ods_get_default_loc_context(loc)
    if modC is not None: attributes["modC"] = (modC if (
        isinstance(modC, _ods_ir.Attribute) or
        not _ods_ir.AttrBuilder.contains('I16Attr')) else
          _ods_ir.AttrBuilder.get('I16Attr')(modC, context=_ods_context))
    if reuseA is not None: attributes["reuseA"] = (reuseA if (
        isinstance(reuseA, _ods_ir.Attribute) or
        not _ods_ir.AttrBuilder.contains('I1Attr')) else
          _ods_ir.AttrBuilder.get('I1Attr')(reuseA, context=_ods_context))
    if reuseB is not None: attributes["reuseB"] = (reuseB if (
        isinstance(reuseB, _ods_ir.Attribute) or
        not _ods_ir.AttrBuilder.contains('I1Attr')) else
          _ods_ir.AttrBuilder.get('I1Attr')(reuseB, context=_ods_context))
    results = []
    results.append(res)
    _ods_successors = None
    super().__init__(self.OPERATION_NAME, self._ODS_REGIONS, self._ODS_OPERAND_SEGMENTS, self._ODS_RESULT_SEGMENTS, attributes=attributes, results=results, operands=operands, successors=_ods_successors, regions=regions, loc=loc, ip=ip)

  @builtins.property
  def a(self) -> _ods_ir.Value:
    return self.operation.operands[0]

  @builtins.property
  def b(self) -> _ods_ir.Value:
    return self.operation.operands[1]

  @builtins.property
  def c(self) -> _ods_ir.Value:
    return self.operation.operands[2]

  @builtins.property
  def modC(self) -> _ods_ir.IntegerAttr:
    return self.operation.attributes["modC"]

  @modC.setter
  def modC(self, value: _ods_ir.IntegerAttr):
    if value is None:
      raise ValueError("'None' not allowed as value for mandatory attributes")
    self.operation.attributes["modC"] = value

  @builtins.property
  def reuseA(self) -> _ods_ir.BoolAttr:
    return self.operation.attributes["reuseA"]

  @reuseA.setter
  def reuseA(self, value: _ods_ir.BoolAttr):
    if value is None:
      raise ValueError("'None' not allowed as value for mandatory attributes")
    self.operation.attributes["reuseA"] = value

  @builtins.property
  def reuseB(self) -> _ods_ir.BoolAttr:
    return self.operation.attributes["reuseB"]

  @reuseB.setter
  def reuseB(self, value: _ods_ir.BoolAttr):
    if value is None:
      raise ValueError("'None' not allowed as value for mandatory attributes")
    self.operation.attributes["reuseB"] = value

  @builtins.property
  def res(self) -> _ods_ir.OpResult:
    return self.operation.results[0]

@_ods_cext.register_op_adaptor(wmma_f32_16x16x32_bf16)
class wmma_f32_16x16x32_bf16Adaptor(_ods_ir.OpAdaptor):
  OPERATION_NAME = "rocdl.wmma.f32.16x16x32.bf16"

  @builtins.property
  def a(self) -> _ods_ir.Value:
    return self.operands[0]

  @builtins.property
  def b(self) -> _ods_ir.Value:
    return self.operands[1]

  @builtins.property
  def c(self) -> _ods_ir.Value:
    return self.operands[2]

  @builtins.property
  def modC(self) -> _ods_ir.IntegerAttr:
    return self.attributes["modC"]

  @builtins.property
  def reuseA(self) -> _ods_ir.BoolAttr:
    return self.attributes["reuseA"]

  @builtins.property
  def reuseB(self) -> _ods_ir.BoolAttr:
    return self.attributes["reuseB"]

def wmma_f32_16x16x32_bf16_(res: _ods_ir.Type, a: _ods_ir.Value, b: _ods_ir.Value, c: _ods_ir.Value, *, mod_c: _Optional[_Union[int, _ods_ir.IntegerAttr]] = None, reuse_a: _Optional[_Union[bool, _ods_ir.BoolAttr]] = None, reuse_b: _Optional[_Union[bool, _ods_ir.BoolAttr]] = None, loc: _Optional[_ods_ir.Location] = None, ip: _Optional[_ods_ir.InsertionPoint] = None) -> _ods_ir.OpResult:
  return wmma_f32_16x16x32_bf16(res=res, a=a, b=b, c=c, modC=mod_c, reuseA=reuse_a, reuseB=reuse_b, loc=loc, ip=ip).result

@_ods_cext.register_operation(_Dialect)
class wmma_f32_16x16x32_f16(_ods_ir.OpView):
  r"""
  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 :
    (vector<16xi32>, vector<16xi32>, vector<8xf32>) -> vector<8xf32>
  ```
  """

  OPERATION_NAME = "rocdl.wmma.f32.16x16x32.f16"

  _ODS_REGIONS = (0, True)

  def __init__(self, res: _ods_ir.Type, a: _ods_ir.Value, b: _ods_ir.Value, c: _ods_ir.Value, *, modC: _Optional[_Union[int, _ods_ir.IntegerAttr]] = None, reuseA: _Optional[_Union[bool, _ods_ir.BoolAttr]] = None, reuseB: _Optional[_Union[bool, _ods_ir.BoolAttr]] = None, loc: _Optional[_ods_ir.Location] = None, ip: _Optional[_ods_ir.InsertionPoint] = None):
    operands = []
    attributes = {}
    regions = None
    operands.append(a)
    operands.append(b)
    operands.append(c)
    _ods_context = _ods_get_default_loc_context(loc)
    if modC is not None: attributes["modC"] = (modC if (
        isinstance(modC, _ods_ir.Attribute) or
        not _ods_ir.AttrBuilder.contains('I16Attr')) else
          _ods_ir.AttrBuilder.get('I16Attr')(modC, context=_ods_context))
    if reuseA is not None: attributes["reuseA"] = (reuseA if (
        isinstance(reuseA, _ods_ir.Attribute) or
        not _ods_ir.AttrBuilder.contains('I1Attr')) else
          _ods_ir.AttrBuilder.get('I1Attr')(reuseA, context=_ods_context))
    if reuseB is not None: attributes["reuseB"] = (reuseB if (
        isinstance(reuseB, _ods_ir.Attribute) or
        not _ods_ir.AttrBuilder.contains('I1Attr')) else
          _ods_ir.AttrBuilder.get('I1Attr')(reuseB, context=_ods_context))
    results = []
    results.append(res)
    _ods_successors = None
    super().__init__(self.OPERATION_NAME, self._ODS_REGIONS, self._ODS_OPERAND_SEGMENTS, self._ODS_RESULT_SEGMENTS, attributes=attributes, results=results, operands=operands, successors=_ods_successors, regions=regions, loc=loc, ip=ip)

  @builtins.property
  def a(self) -> _ods_ir.Value:
    return self.operation.operands[0]

  @builtins.property
  def b(self) -> _ods_ir.Value:
    return self.operation.operands[1]

  @builtins.property
  def c(self) -> _ods_ir.Value:
    return self.operation.operands[2]

  @builtins.property
  def modC(self) -> _ods_ir.IntegerAttr:
    return self.operation.attributes["modC"]

  @modC.setter
  def modC(self, value: _ods_ir.IntegerAttr):
    if value is None:
      raise ValueError("'None' not allowed as value for mandatory attributes")
    self.operation.attributes["modC"] = value

  @builtins.property
  def reuseA(self) -> _ods_ir.BoolAttr:
    return self.operation.attributes["reuseA"]

  @reuseA.setter
  def reuseA(self, value: _ods_ir.BoolAttr):
    if value is None:
      raise ValueError("'None' not allowed as value for mandatory attributes")
    self.operation.attributes["reuseA"] = value

  @builtins.property
  def reuseB(self) -> _ods_ir.BoolAttr:
    return self.operation.attributes["reuseB"]

  @reuseB.setter
  def reuseB(self, value: _ods_ir.BoolAttr):
    if value is None:
      raise ValueError("'None' not allowed as value for mandatory attributes")
    self.operation.attributes["reuseB"] = value

  @builtins.property
  def res(self) -> _ods_ir.OpResult:
    return self.operation.results[0]

@_ods_cext.register_op_adaptor(wmma_f32_16x16x32_f16)
class wmma_f32_16x16x32_f16Adaptor(_ods_ir.OpAdaptor):
  OPERATION_NAME = "rocdl.wmma.f32.16x16x32.f16"

  @builtins.property
  def a(self) -> _ods_ir.Value:
    return self.operands[0]

  @builtins.property
  def b(self) -> _ods_ir.Value:
    return self.operands[1]

  @builtins.property
  def c(self) -> _ods_ir.Value:
    return self.operands[2]

  @builtins.property
  def modC(self) -> _ods_ir.IntegerAttr:
    return self.attributes["modC"]

  @builtins.property
  def reuseA(self) -> _ods_ir.BoolAttr:
    return self.attributes["reuseA"]

  @builtins.property
  def reuseB(self) -> _ods_ir.BoolAttr:
    return self.attributes["reuseB"]

def wmma_f32_16x16x32_f16_(res: _ods_ir.Type, a: _ods_ir.Value, b: _ods_ir.Value, c: _ods_ir.Value, *, mod_c: _Optional[_Union[int, _ods_ir.IntegerAttr]] = None, reuse_a: _Optional[_Union[bool, _ods_ir.BoolAttr]] = None, reuse_b: _Optional[_Union[bool, _ods_ir.BoolAttr]] = None, loc: _Optional[_ods_ir.Location] = None, ip: _Optional[_ods_ir.InsertionPoint] = None) -> _ods_ir.OpResult:
  return wmma_f32_16x16x32_f16(res=res, a=a, b=b, c=c, modC=mod_c, reuseA=reuse_a, reuseB=reuse_b, loc=loc, ip=ip).result

@_ods_cext.register_operation(_Dialect)
class wmma_f32_16x16x64_bf8_bf8(_ods_ir.OpView):
  r"""
  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 :
    (vector<16xi32>, vector<16xi32>, vector<8xf32>) -> vector<8xf32>
  ```
  """

  OPERATION_NAME = "rocdl.wmma.f32.16x16x64.bf8_bf8"

  _ODS_REGIONS = (0, True)

  def __init__(self, res: _ods_ir.Type, a: _ods_ir.Value, b: _ods_ir.Value, c: _ods_ir.Value, *, modC: _Optional[_Union[int, _ods_ir.IntegerAttr]] = None, reuseA: _Optional[_Union[bool, _ods_ir.BoolAttr]] = None, reuseB: _Optional[_Union[bool, _ods_ir.BoolAttr]] = None, loc: _Optional[_ods_ir.Location] = None, ip: _Optional[_ods_ir.InsertionPoint] = None):
    operands = []
    attributes = {}
    regions = None
    operands.append(a)
    operands.append(b)
    operands.append(c)
    _ods_context = _ods_get_default_loc_context(loc)
    if modC is not None: attributes["modC"] = (modC if (
        isinstance(modC, _ods_ir.Attribute) or
        not _ods_ir.AttrBuilder.contains('I16Attr')) else
          _ods_ir.AttrBuilder.get('I16Attr')(modC, context=_ods_context))
    if reuseA is not None: attributes["reuseA"] = (reuseA if (
        isinstance(reuseA, _ods_ir.Attribute) or
        not _ods_ir.AttrBuilder.contains('I1Attr')) else
          _ods_ir.AttrBuilder.get('I1Attr')(reuseA, context=_ods_context))
    if reuseB is not None: attributes["reuseB"] = (reuseB if (
        isinstance(reuseB, _ods_ir.Attribute) or
        not _ods_ir.AttrBuilder.contains('I1Attr')) else
          _ods_ir.AttrBuilder.get('I1Attr')(reuseB, context=_ods_context))
    results = []
    results.append(res)
    _ods_successors = None
    super().__init__(self.OPERATION_NAME, self._ODS_REGIONS, self._ODS_OPERAND_SEGMENTS, self._ODS_RESULT_SEGMENTS, attributes=attributes, results=results, operands=operands, successors=_ods_successors, regions=regions, loc=loc, ip=ip)

  @builtins.property
  def a(self) -> _ods_ir.Value:
    return self.operation.operands[0]

  @builtins.property
  def b(self) -> _ods_ir.Value:
    return self.operation.operands[1]

  @builtins.property
  def c(self) -> _ods_ir.Value:
    return self.operation.operands[2]

  @builtins.property
  def modC(self) -> _ods_ir.IntegerAttr:
    return self.operation.attributes["modC"]

  @modC.setter
  def modC(self, value: _ods_ir.IntegerAttr):
    if value is None:
      raise ValueError("'None' not allowed as value for mandatory attributes")
    self.operation.attributes["modC"] = value

  @builtins.property
  def reuseA(self) -> _ods_ir.BoolAttr:
    return self.operation.attributes["reuseA"]

  @reuseA.setter
  def reuseA(self, value: _ods_ir.BoolAttr):
    if value is None:
      raise ValueError("'None' not allowed as value for mandatory attributes")
    self.operation.attributes["reuseA"] = value

  @builtins.property
  def reuseB(self) -> _ods_ir.BoolAttr:
    return self.operation.attributes["reuseB"]

  @reuseB.setter
  def reuseB(self, value: _ods_ir.BoolAttr):
    if value is None:
      raise ValueError("'None' not allowed as value for mandatory attributes")
    self.operation.attributes["reuseB"] = value

  @builtins.property
  def res(self) -> _ods_ir.OpResult:
    return self.operation.results[0]

@_ods_cext.register_op_adaptor(wmma_f32_16x16x64_bf8_bf8)
class wmma_f32_16x16x64_bf8_bf8Adaptor(_ods_ir.OpAdaptor):
  OPERATION_NAME = "rocdl.wmma.f32.16x16x64.bf8_bf8"

  @builtins.property
  def a(self) -> _ods_ir.Value:
    return self.operands[0]

  @builtins.property
  def b(self) -> _ods_ir.Value:
    return self.operands[1]

  @builtins.property
  def c(self) -> _ods_ir.Value:
    return self.operands[2]

  @builtins.property
  def modC(self) -> _ods_ir.IntegerAttr:
    return self.attributes["modC"]

  @builtins.property
  def reuseA(self) -> _ods_ir.BoolAttr:
    return self.attributes["reuseA"]

  @builtins.property
  def reuseB(self) -> _ods_ir.BoolAttr:
    return self.attributes["reuseB"]

def wmma_f32_16x16x64_bf8_bf8_(res: _ods_ir.Type, a: _ods_ir.Value, b: _ods_ir.Value, c: _ods_ir.Value, *, mod_c: _Optional[_Union[int, _ods_ir.IntegerAttr]] = None, reuse_a: _Optional[_Union[bool, _ods_ir.BoolAttr]] = None, reuse_b: _Optional[_Union[bool, _ods_ir.BoolAttr]] = None, loc: _Optional[_ods_ir.Location] = None, ip: _Optional[_ods_ir.InsertionPoint] = None) -> _ods_ir.OpResult:
  return wmma_f32_16x16x64_bf8_bf8(res=res, a=a, b=b, c=c, modC=mod_c, reuseA=reuse_a, reuseB=reuse_b, loc=loc, ip=ip).result

@_ods_cext.register_operation(_Dialect)
class wmma_f32_16x16x64_bf8_fp8(_ods_ir.OpView):
  r"""
  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 :
    (vector<16xi32>, vector<16xi32>, vector<8xf32>) -> vector<8xf32>
  ```
  """

  OPERATION_NAME = "rocdl.wmma.f32.16x16x64.bf8_fp8"

  _ODS_REGIONS = (0, True)

  def __init__(self, res: _ods_ir.Type, a: _ods_ir.Value, b: _ods_ir.Value, c: _ods_ir.Value, *, modC: _Optional[_Union[int, _ods_ir.IntegerAttr]] = None, reuseA: _Optional[_Union[bool, _ods_ir.BoolAttr]] = None, reuseB: _Optional[_Union[bool, _ods_ir.BoolAttr]] = None, loc: _Optional[_ods_ir.Location] = None, ip: _Optional[_ods_ir.InsertionPoint] = None):
    operands = []
    attributes = {}
    regions = None
    operands.append(a)
    operands.append(b)
    operands.append(c)
    _ods_context = _ods_get_default_loc_context(loc)
    if modC is not None: attributes["modC"] = (modC if (
        isinstance(modC, _ods_ir.Attribute) or
        not _ods_ir.AttrBuilder.contains('I16Attr')) else
          _ods_ir.AttrBuilder.get('I16Attr')(modC, context=_ods_context))
    if reuseA is not None: attributes["reuseA"] = (reuseA if (
        isinstance(reuseA, _ods_ir.Attribute) or
        not _ods_ir.AttrBuilder.contains('I1Attr')) else
          _ods_ir.AttrBuilder.get('I1Attr')(reuseA, context=_ods_context))
    if reuseB is not None: attributes["reuseB"] = (reuseB if (
        isinstance(reuseB, _ods_ir.Attribute) or
        not _ods_ir.AttrBuilder.contains('I1Attr')) else
          _ods_ir.AttrBuilder.get('I1Attr')(reuseB, context=_ods_context))
    results = []
    results.append(res)
    _ods_successors = None
    super().__init__(self.OPERATION_NAME, self._ODS_REGIONS, self._ODS_OPERAND_SEGMENTS, self._ODS_RESULT_SEGMENTS, attributes=attributes, results=results, operands=operands, successors=_ods_successors, regions=regions, loc=loc, ip=ip)

  @builtins.property
  def a(self) -> _ods_ir.Value:
    return self.operation.operands[0]

  @builtins.property
  def b(self) -> _ods_ir.Value:
    return self.operation.operands[1]

  @builtins.property
  def c(self) -> _ods_ir.Value:
    return self.operation.operands[2]

  @builtins.property
  def modC(self) -> _ods_ir.IntegerAttr:
    return self.operation.attributes["modC"]

  @modC.setter
  def modC(self, value: _ods_ir.IntegerAttr):
    if value is None:
      raise ValueError("'None' not allowed as value for mandatory attributes")
    self.operation.attributes["modC"] = value

  @builtins.property
  def reuseA(self) -> _ods_ir.BoolAttr:
    return self.operation.attributes["reuseA"]

  @reuseA.setter
  def reuseA(self, value: _ods_ir.BoolAttr):
    if value is None:
      raise ValueError("'None' not allowed as value for mandatory attributes")
    self.operation.attributes["reuseA"] = value

  @builtins.property
  def reuseB(self) -> _ods_ir.BoolAttr:
    return self.operation.attributes["reuseB"]

  @reuseB.setter
  def reuseB(self, value: _ods_ir.BoolAttr):
    if value is None:
      raise ValueError("'None' not allowed as value for mandatory attributes")
    self.operation.attributes["reuseB"] = value

  @builtins.property
  def res(self) -> _ods_ir.OpResult:
    return self.operation.results[0]

@_ods_cext.register_op_adaptor(wmma_f32_16x16x64_bf8_fp8)
class wmma_f32_16x16x64_bf8_fp8Adaptor(_ods_ir.OpAdaptor):
  OPERATION_NAME = "rocdl.wmma.f32.16x16x64.bf8_fp8"

  @builtins.property
  def a(self) -> _ods_ir.Value:
    return self.operands[0]

  @builtins.property
  def b(self) -> _ods_ir.Value:
    return self.operands[1]

  @builtins.property
  def c(self) -> _ods_ir.Value:
    return self.operands[2]

  @builtins.property
  def modC(self) -> _ods_ir.IntegerAttr:
    return self.attributes["modC"]

  @builtins.property
  def reuseA(self) -> _ods_ir.BoolAttr:
    return self.attributes["reuseA"]

  @builtins.property
  def reuseB(self) -> _ods_ir.BoolAttr:
    return self.attributes["reuseB"]

def wmma_f32_16x16x64_bf8_fp8_(res: _ods_ir.Type, a: _ods_ir.Value, b: _ods_ir.Value, c: _ods_ir.Value, *, mod_c: _Optional[_Union[int, _ods_ir.IntegerAttr]] = None, reuse_a: _Optional[_Union[bool, _ods_ir.BoolAttr]] = None, reuse_b: _Optional[_Union[bool, _ods_ir.BoolAttr]] = None, loc: _Optional[_ods_ir.Location] = None, ip: _Optional[_ods_ir.InsertionPoint] = None) -> _ods_ir.OpResult:
  return wmma_f32_16x16x64_bf8_fp8(res=res, a=a, b=b, c=c, modC=mod_c, reuseA=reuse_a, reuseB=reuse_b, loc=loc, ip=ip).result

@_ods_cext.register_operation(_Dialect)
class wmma_f32_16x16x64_fp8_bf8(_ods_ir.OpView):
  r"""
  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 :
    (vector<16xi32>, vector<16xi32>, vector<8xf32>) -> vector<8xf32>
  ```
  """

  OPERATION_NAME = "rocdl.wmma.f32.16x16x64.fp8_bf8"

  _ODS_REGIONS = (0, True)

  def __init__(self, res: _ods_ir.Type, a: _ods_ir.Value, b: _ods_ir.Value, c: _ods_ir.Value, *, modC: _Optional[_Union[int, _ods_ir.IntegerAttr]] = None, reuseA: _Optional[_Union[bool, _ods_ir.BoolAttr]] = None, reuseB: _Optional[_Union[bool, _ods_ir.BoolAttr]] = None, loc: _Optional[_ods_ir.Location] = None, ip: _Optional[_ods_ir.InsertionPoint] = None):
    operands = []
    attributes = {}
    regions = None
    operands.append(a)
    operands.append(b)
    operands.append(c)
    _ods_context = _ods_get_default_loc_context(loc)
    if modC is not None: attributes["modC"] = (modC if (
        isinstance(modC, _ods_ir.Attribute) or
        not _ods_ir.AttrBuilder.contains('I16Attr')) else
          _ods_ir.AttrBuilder.get('I16Attr')(modC, context=_ods_context))
    if reuseA is not None: attributes["reuseA"] = (reuseA if (
        isinstance(reuseA, _ods_ir.Attribute) or
        not _ods_ir.AttrBuilder.contains('I1Attr')) else
          _ods_ir.AttrBuilder.get('I1Attr')(reuseA, context=_ods_context))
    if reuseB is not None: attributes["reuseB"] = (reuseB if (
        isinstance(reuseB, _ods_ir.Attribute) or
        not _ods_ir.AttrBuilder.contains('I1Attr')) else
          _ods_ir.AttrBuilder.get('I1Attr')(reuseB, context=_ods_context))
    results = []
    results.append(res)
    _ods_successors = None
    super().__init__(self.OPERATION_NAME, self._ODS_REGIONS, self._ODS_OPERAND_SEGMENTS, self._ODS_RESULT_SEGMENTS, attributes=attributes, results=results, operands=operands, successors=_ods_successors, regions=regions, loc=loc, ip=ip)

  @builtins.property
  def a(self) -> _ods_ir.Value:
    return self.operation.operands[0]

  @builtins.property
  def b(self) -> _ods_ir.Value:
    return self.operation.operands[1]

  @builtins.property
  def c(self) -> _ods_ir.Value:
    return self.operation.operands[2]

  @builtins.property
  def modC(self) -> _ods_ir.IntegerAttr:
    return self.operation.attributes["modC"]

  @modC.setter
  def modC(self, value: _ods_ir.IntegerAttr):
    if value is None:
      raise ValueError("'None' not allowed as value for mandatory attributes")
    self.operation.attributes["modC"] = value

  @builtins.property
  def reuseA(self) -> _ods_ir.BoolAttr:
    return self.operation.attributes["reuseA"]

  @reuseA.setter
  def reuseA(self, value: _ods_ir.BoolAttr):
    if value is None:
      raise ValueError("'None' not allowed as value for mandatory attributes")
    self.operation.attributes["reuseA"] = value

  @builtins.property
  def reuseB(self) -> _ods_ir.BoolAttr:
    return self.operation.attributes["reuseB"]

  @reuseB.setter
  def reuseB(self, value: _ods_ir.BoolAttr):
    if value is None:
      raise ValueError("'None' not allowed as value for mandatory attributes")
    self.operation.attributes["reuseB"] = value

  @builtins.property
  def res(self) -> _ods_ir.OpResult:
    return self.operation.results[0]

@_ods_cext.register_op_adaptor(wmma_f32_16x16x64_fp8_bf8)
class wmma_f32_16x16x64_fp8_bf8Adaptor(_ods_ir.OpAdaptor):
  OPERATION_NAME = "rocdl.wmma.f32.16x16x64.fp8_bf8"

  @builtins.property
  def a(self) -> _ods_ir.Value:
    return self.operands[0]

  @builtins.property
  def b(self) -> _ods_ir.Value:
    return self.operands[1]

  @builtins.property
  def c(self) -> _ods_ir.Value:
    return self.operands[2]

  @builtins.property
  def modC(self) -> _ods_ir.IntegerAttr:
    return self.attributes["modC"]

  @builtins.property
  def reuseA(self) -> _ods_ir.BoolAttr:
    return self.attributes["reuseA"]

  @builtins.property
  def reuseB(self) -> _ods_ir.BoolAttr:
    return self.attributes["reuseB"]

def wmma_f32_16x16x64_fp8_bf8_(res: _ods_ir.Type, a: _ods_ir.Value, b: _ods_ir.Value, c: _ods_ir.Value, *, mod_c: _Optional[_Union[int, _ods_ir.IntegerAttr]] = None, reuse_a: _Optional[_Union[bool, _ods_ir.BoolAttr]] = None, reuse_b: _Optional[_Union[bool, _ods_ir.BoolAttr]] = None, loc: _Optional[_ods_ir.Location] = None, ip: _Optional[_ods_ir.InsertionPoint] = None) -> _ods_ir.OpResult:
  return wmma_f32_16x16x64_fp8_bf8(res=res, a=a, b=b, c=c, modC=mod_c, reuseA=reuse_a, reuseB=reuse_b, loc=loc, ip=ip).result

@_ods_cext.register_operation(_Dialect)
class wmma_f32_16x16x64_fp8_fp8(_ods_ir.OpView):
  r"""
  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 :
    (vector<16xi32>, vector<16xi32>, vector<8xf32>) -> vector<8xf32>
  ```
  """

  OPERATION_NAME = "rocdl.wmma.f32.16x16x64.fp8_fp8"

  _ODS_REGIONS = (0, True)

  def __init__(self, res: _ods_ir.Type, a: _ods_ir.Value, b: _ods_ir.Value, c: _ods_ir.Value, *, modC: _Optional[_Union[int, _ods_ir.IntegerAttr]] = None, reuseA: _Optional[_Union[bool, _ods_ir.BoolAttr]] = None, reuseB: _Optional[_Union[bool, _ods_ir.BoolAttr]] = None, loc: _Optional[_ods_ir.Location] = None, ip: _Optional[_ods_ir.InsertionPoint] = None):
    operands = []
    attributes = {}
    regions = None
    operands.append(a)
    operands.append(b)
    operands.append(c)
    _ods_context = _ods_get_default_loc_context(loc)
    if modC is not None: attributes["modC"] = (modC if (
        isinstance(modC, _ods_ir.Attribute) or
        not _ods_ir.AttrBuilder.contains('I16Attr')) else
          _ods_ir.AttrBuilder.get('I16Attr')(modC, context=_ods_context))
    if reuseA is not None: attributes["reuseA"] = (reuseA if (
        isinstance(reuseA, _ods_ir.Attribute) or
        not _ods_ir.AttrBuilder.contains('I1Attr')) else
          _ods_ir.AttrBuilder.get('I1Attr')(reuseA, context=_ods_context))
    if reuseB is not None: attributes["reuseB"] = (reuseB if (
        isinstance(reuseB, _ods_ir.Attribute) or
        not _ods_ir.AttrBuilder.contains('I1Attr')) else
          _ods_ir.AttrBuilder.get('I1Attr')(reuseB, context=_ods_context))
    results = []
    results.append(res)
    _ods_successors = None
    super().__init__(self.OPERATION_NAME, self._ODS_REGIONS, self._ODS_OPERAND_SEGMENTS, self._ODS_RESULT_SEGMENTS, attributes=attributes, results=results, operands=operands, successors=_ods_successors, regions=regions, loc=loc, ip=ip)

  @builtins.property
  def a(self) -> _ods_ir.Value:
    return self.operation.operands[0]

  @builtins.property
  def b(self) -> _ods_ir.Value:
    return self.operation.operands[1]

  @builtins.property
  def c(self) -> _ods_ir.Value:
    return self.operation.operands[2]

  @builtins.property
  def modC(self) -> _ods_ir.IntegerAttr:
    return self.operation.attributes["modC"]

  @modC.setter
  def modC(self, value: _ods_ir.IntegerAttr):
    if value is None:
      raise ValueError("'None' not allowed as value for mandatory attributes")
    self.operation.attributes["modC"] = value

  @builtins.property
  def reuseA(self) -> _ods_ir.BoolAttr:
    return self.operation.attributes["reuseA"]

  @reuseA.setter
  def reuseA(self, value: _ods_ir.BoolAttr):
    if value is None:
      raise ValueError("'None' not allowed as value for mandatory attributes")
    self.operation.attributes["reuseA"] = value

  @builtins.property
  def reuseB(self) -> _ods_ir.BoolAttr:
    return self.operation.attributes["reuseB"]

  @reuseB.setter
  def reuseB(self, value: _ods_ir.BoolAttr):
    if value is None:
      raise ValueError("'None' not allowed as value for mandatory attributes")
    self.operation.attributes["reuseB"] = value

  @builtins.property
  def res(self) -> _ods_ir.OpResult:
    return self.operation.results[0]

@_ods_cext.register_op_adaptor(wmma_f32_16x16x64_fp8_fp8)
class wmma_f32_16x16x64_fp8_fp8Adaptor(_ods_ir.OpAdaptor):
  OPERATION_NAME = "rocdl.wmma.f32.16x16x64.fp8_fp8"

  @builtins.property
  def a(self) -> _ods_ir.Value:
    return self.operands[0]

  @builtins.property
  def b(self) -> _ods_ir.Value:
    return self.operands[1]

  @builtins.property
  def c(self) -> _ods_ir.Value:
    return self.operands[2]

  @builtins.property
  def modC(self) -> _ods_ir.IntegerAttr:
    return self.attributes["modC"]

  @builtins.property
  def reuseA(self) -> _ods_ir.BoolAttr:
    return self.attributes["reuseA"]

  @builtins.property
  def reuseB(self) -> _ods_ir.BoolAttr:
    return self.attributes["reuseB"]

def wmma_f32_16x16x64_fp8_fp8_(res: _ods_ir.Type, a: _ods_ir.Value, b: _ods_ir.Value, c: _ods_ir.Value, *, mod_c: _Optional[_Union[int, _ods_ir.IntegerAttr]] = None, reuse_a: _Optional[_Union[bool, _ods_ir.BoolAttr]] = None, reuse_b: _Optional[_Union[bool, _ods_ir.BoolAttr]] = None, loc: _Optional[_ods_ir.Location] = None, ip: _Optional[_ods_ir.InsertionPoint] = None) -> _ods_ir.OpResult:
  return wmma_f32_16x16x64_fp8_fp8(res=res, a=a, b=b, c=c, modC=mod_c, reuseA=reuse_a, reuseB=reuse_b, loc=loc, ip=ip).result

@_ods_cext.register_operation(_Dialect)
class wmma_f32_16x16x128_bf8_bf8(_ods_ir.OpView):
  r"""
  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 :
    (vector<16xi32>, vector<16xi32>, vector<8xf32>) -> vector<8xf32>
  ```
  """

  OPERATION_NAME = "rocdl.wmma.f32.16x16x128.bf8_bf8"

  _ODS_REGIONS = (0, True)

  def __init__(self, res: _ods_ir.Type, a: _ods_ir.Value, b: _ods_ir.Value, c: _ods_ir.Value, *, modC: _Optional[_Union[int, _ods_ir.IntegerAttr]] = None, reuseA: _Optional[_Union[bool, _ods_ir.BoolAttr]] = None, reuseB: _Optional[_Union[bool, _ods_ir.BoolAttr]] = None, loc: _Optional[_ods_ir.Location] = None, ip: _Optional[_ods_ir.InsertionPoint] = None):
    operands = []
    attributes = {}
    regions = None
    operands.append(a)
    operands.append(b)
    operands.append(c)
    _ods_context = _ods_get_default_loc_context(loc)
    if modC is not None: attributes["modC"] = (modC if (
        isinstance(modC, _ods_ir.Attribute) or
        not _ods_ir.AttrBuilder.contains('I16Attr')) else
          _ods_ir.AttrBuilder.get('I16Attr')(modC, context=_ods_context))
    if reuseA is not None: attributes["reuseA"] = (reuseA if (
        isinstance(reuseA, _ods_ir.Attribute) or
        not _ods_ir.AttrBuilder.contains('I1Attr')) else
          _ods_ir.AttrBuilder.get('I1Attr')(reuseA, context=_ods_context))
    if reuseB is not None: attributes["reuseB"] = (reuseB if (
        isinstance(reuseB, _ods_ir.Attribute) or
        not _ods_ir.AttrBuilder.contains('I1Attr')) else
          _ods_ir.AttrBuilder.get('I1Attr')(reuseB, context=_ods_context))
    results = []
    results.append(res)
    _ods_successors = None
    super().__init__(self.OPERATION_NAME, self._ODS_REGIONS, self._ODS_OPERAND_SEGMENTS, self._ODS_RESULT_SEGMENTS, attributes=attributes, results=results, operands=operands, successors=_ods_successors, regions=regions, loc=loc, ip=ip)

  @builtins.property
  def a(self) -> _ods_ir.Value:
    return self.operation.operands[0]

  @builtins.property
  def b(self) -> _ods_ir.Value:
    return self.operation.operands[1]

  @builtins.property
  def c(self) -> _ods_ir.Value:
    return self.operation.operands[2]

  @builtins.property
  def modC(self) -> _ods_ir.IntegerAttr:
    return self.operation.attributes["modC"]

  @modC.setter
  def modC(self, value: _ods_ir.IntegerAttr):
    if value is None:
      raise ValueError("'None' not allowed as value for mandatory attributes")
    self.operation.attributes["modC"] = value

  @builtins.property
  def reuseA(self) -> _ods_ir.BoolAttr:
    return self.operation.attributes["reuseA"]

  @reuseA.setter
  def reuseA(self, value: _ods_ir.BoolAttr):
    if value is None:
      raise ValueError("'None' not allowed as value for mandatory attributes")
    self.operation.attributes["reuseA"] = value

  @builtins.property
  def reuseB(self) -> _ods_ir.BoolAttr:
    return self.operation.attributes["reuseB"]

  @reuseB.setter
  def reuseB(self, value: _ods_ir.BoolAttr):
    if value is None:
      raise ValueError("'None' not allowed as value for mandatory attributes")
    self.operation.attributes["reuseB"] = value

  @builtins.property
  def res(self) -> _ods_ir.OpResult:
    return self.operation.results[0]

@_ods_cext.register_op_adaptor(wmma_f32_16x16x128_bf8_bf8)
class wmma_f32_16x16x128_bf8_bf8Adaptor(_ods_ir.OpAdaptor):
  OPERATION_NAME = "rocdl.wmma.f32.16x16x128.bf8_bf8"

  @builtins.property
  def a(self) -> _ods_ir.Value:
    return self.operands[0]

  @builtins.property
  def b(self) -> _ods_ir.Value:
    return self.operands[1]

  @builtins.property
  def c(self) -> _ods_ir.Value:
    return self.operands[2]

  @builtins.property
  def modC(self) -> _ods_ir.IntegerAttr:
    return self.attributes["modC"]

  @builtins.property
  def reuseA(self) -> _ods_ir.BoolAttr:
    return self.attributes["reuseA"]

  @builtins.property
  def reuseB(self) -> _ods_ir.BoolAttr:
    return self.attributes["reuseB"]

def wmma_f32_16x16x128_bf8_bf8_(res: _ods_ir.Type, a: _ods_ir.Value, b: _ods_ir.Value, c: _ods_ir.Value, *, mod_c: _Optional[_Union[int, _ods_ir.IntegerAttr]] = None, reuse_a: _Optional[_Union[bool, _ods_ir.BoolAttr]] = None, reuse_b: _Optional[_Union[bool, _ods_ir.BoolAttr]] = None, loc: _Optional[_ods_ir.Location] = None, ip: _Optional[_ods_ir.InsertionPoint] = None) -> _ods_ir.OpResult:
  return wmma_f32_16x16x128_bf8_bf8(res=res, a=a, b=b, c=c, modC=mod_c, reuseA=reuse_a, reuseB=reuse_b, loc=loc, ip=ip).result

@_ods_cext.register_operation(_Dialect)
class wmma_f32_16x16x128_bf8_fp8(_ods_ir.OpView):
  r"""
  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 :
    (vector<16xi32>, vector<16xi32>, vector<8xf32>) -> vector<8xf32>
  ```
  """

  OPERATION_NAME = "rocdl.wmma.f32.16x16x128.bf8_fp8"

  _ODS_REGIONS = (0, True)

  def __init__(self, res: _ods_ir.Type, a: _ods_ir.Value, b: _ods_ir.Value, c: _ods_ir.Value, *, modC: _Optional[_Union[int, _ods_ir.IntegerAttr]] = None, reuseA: _Optional[_Union[bool, _ods_ir.BoolAttr]] = None, reuseB: _Optional[_Union[bool, _ods_ir.BoolAttr]] = None, loc: _Optional[_ods_ir.Location] = None, ip: _Optional[_ods_ir.InsertionPoint] = None):
    operands = []
    attributes = {}
    regions = None
    operands.append(a)
    operands.append(b)
    operands.append(c)
    _ods_context = _ods_get_default_loc_context(loc)
    if modC is not None: attributes["modC"] = (modC if (
        isinstance(modC, _ods_ir.Attribute) or
        not _ods_ir.AttrBuilder.contains('I16Attr')) else
          _ods_ir.AttrBuilder.get('I16Attr')(modC, context=_ods_context))
    if reuseA is not None: attributes["reuseA"] = (reuseA if (
        isinstance(reuseA, _ods_ir.Attribute) or
        not _ods_ir.AttrBuilder.contains('I1Attr')) else
          _ods_ir.AttrBuilder.get('I1Attr')(reuseA, context=_ods_context))
    if reuseB is not None: attributes["reuseB"] = (reuseB if (
        isinstance(reuseB, _ods_ir.Attribute) or
        not _ods_ir.AttrBuilder.contains('I1Attr')) else
          _ods_ir.AttrBuilder.get('I1Attr')(reuseB, context=_ods_context))
    results = []
    results.append(res)
    _ods_successors = None
    super().__init__(self.OPERATION_NAME, self._ODS_REGIONS, self._ODS_OPERAND_SEGMENTS, self._ODS_RESULT_SEGMENTS, attributes=attributes, results=results, operands=operands, successors=_ods_successors, regions=regions, loc=loc, ip=ip)

  @builtins.property
  def a(self) -> _ods_ir.Value:
    return self.operation.operands[0]

  @builtins.property
  def b(self) -> _ods_ir.Value:
    return self.operation.operands[1]

  @builtins.property
  def c(self) -> _ods_ir.Value:
    return self.operation.operands[2]

  @builtins.property
  def modC(self) -> _ods_ir.IntegerAttr:
    return self.operation.attributes["modC"]

  @modC.setter
  def modC(self, value: _ods_ir.IntegerAttr):
    if value is None:
      raise ValueError("'None' not allowed as value for mandatory attributes")
    self.operation.attributes["modC"] = value

  @builtins.property
  def reuseA(self) -> _ods_ir.BoolAttr:
    return self.operation.attributes["reuseA"]

  @reuseA.setter
  def reuseA(self, value: _ods_ir.BoolAttr):
    if value is None:
      raise ValueError("'None' not allowed as value for mandatory attributes")
    self.operation.attributes["reuseA"] = value

  @builtins.property
  def reuseB(self) -> _ods_ir.BoolAttr:
    return self.operation.attributes["reuseB"]

  @reuseB.setter
  def reuseB(self, value: _ods_ir.BoolAttr):
    if value is None:
      raise ValueError("'None' not allowed as value for mandatory attributes")
    self.operation.attributes["reuseB"] = value

  @builtins.property
  def res(self) -> _ods_ir.OpResult:
    return self.operation.results[0]

@_ods_cext.register_op_adaptor(wmma_f32_16x16x128_bf8_fp8)
class wmma_f32_16x16x128_bf8_fp8Adaptor(_ods_ir.OpAdaptor):
  OPERATION_NAME = "rocdl.wmma.f32.16x16x128.bf8_fp8"

  @builtins.property
  def a(self) -> _ods_ir.Value:
    return self.operands[0]

  @builtins.property
  def b(self) -> _ods_ir.Value:
    return self.operands[1]

  @builtins.property
  def c(self) -> _ods_ir.Value:
    return self.operands[2]

  @builtins.property
  def modC(self) -> _ods_ir.IntegerAttr:
    return self.attributes["modC"]

  @builtins.property
  def reuseA(self) -> _ods_ir.BoolAttr:
    return self.attributes["reuseA"]

  @builtins.property
  def reuseB(self) -> _ods_ir.BoolAttr:
    return self.attributes["reuseB"]

def wmma_f32_16x16x128_bf8_fp8_(res: _ods_ir.Type, a: _ods_ir.Value, b: _ods_ir.Value, c: _ods_ir.Value, *, mod_c: _Optional[_Union[int, _ods_ir.IntegerAttr]] = None, reuse_a: _Optional[_Union[bool, _ods_ir.BoolAttr]] = None, reuse_b: _Optional[_Union[bool, _ods_ir.BoolAttr]] = None, loc: _Optional[_ods_ir.Location] = None, ip: _Optional[_ods_ir.InsertionPoint] = None) -> _ods_ir.OpResult:
  return wmma_f32_16x16x128_bf8_fp8(res=res, a=a, b=b, c=c, modC=mod_c, reuseA=reuse_a, reuseB=reuse_b, loc=loc, ip=ip).result

@_ods_cext.register_operation(_Dialect)
class wmma_f32_16x16x128_fp8_bf8(_ods_ir.OpView):
  r"""
  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 :
    (vector<16xi32>, vector<16xi32>, vector<8xf32>) -> vector<8xf32>
  ```
  """

  OPERATION_NAME = "rocdl.wmma.f32.16x16x128.fp8_bf8"

  _ODS_REGIONS = (0, True)

  def __init__(self, res: _ods_ir.Type, a: _ods_ir.Value, b: _ods_ir.Value, c: _ods_ir.Value, *, modC: _Optional[_Union[int, _ods_ir.IntegerAttr]] = None, reuseA: _Optional[_Union[bool, _ods_ir.BoolAttr]] = None, reuseB: _Optional[_Union[bool, _ods_ir.BoolAttr]] = None, loc: _Optional[_ods_ir.Location] = None, ip: _Optional[_ods_ir.InsertionPoint] = None):
    operands = []
    attributes = {}
    regions = None
    operands.append(a)
    operands.append(b)
    operands.append(c)
    _ods_context = _ods_get_default_loc_context(loc)
    if modC is not None: attributes["modC"] = (modC if (
        isinstance(modC, _ods_ir.Attribute) or
        not _ods_ir.AttrBuilder.contains('I16Attr')) else
          _ods_ir.AttrBuilder.get('I16Attr')(modC, context=_ods_context))
    if reuseA is not None: attributes["reuseA"] = (reuseA if (
        isinstance(reuseA, _ods_ir.Attribute) or
        not _ods_ir.AttrBuilder.contains('I1Attr')) else
          _ods_ir.AttrBuilder.get('I1Attr')(reuseA, context=_ods_context))
    if reuseB is not None: attributes["reuseB"] = (reuseB if (
        isinstance(reuseB, _ods_ir.Attribute) or
        not _ods_ir.AttrBuilder.contains('I1Attr')) else
          _ods_ir.AttrBuilder.get('I1Attr')(reuseB, context=_ods_context))
    results = []
    results.append(res)
    _ods_successors = None
    super().__init__(self.OPERATION_NAME, self._ODS_REGIONS, self._ODS_OPERAND_SEGMENTS, self._ODS_RESULT_SEGMENTS, attributes=attributes, results=results, operands=operands, successors=_ods_successors, regions=regions, loc=loc, ip=ip)

  @builtins.property
  def a(self) -> _ods_ir.Value:
    return self.operation.operands[0]

  @builtins.property
  def b(self) -> _ods_ir.Value:
    return self.operation.operands[1]

  @builtins.property
  def c(self) -> _ods_ir.Value:
    return self.operation.operands[2]

  @builtins.property
  def modC(self) -> _ods_ir.IntegerAttr:
    return self.operation.attributes["modC"]

  @modC.setter
  def modC(self, value: _ods_ir.IntegerAttr):
    if value is None:
      raise ValueError("'None' not allowed as value for mandatory attributes")
    self.operation.attributes["modC"] = value

  @builtins.property
  def reuseA(self) -> _ods_ir.BoolAttr:
    return self.operation.attributes["reuseA"]

  @reuseA.setter
  def reuseA(self, value: _ods_ir.BoolAttr):
    if value is None:
      raise ValueError("'None' not allowed as value for mandatory attributes")
    self.operation.attributes["reuseA"] = value

  @builtins.property
  def reuseB(self) -> _ods_ir.BoolAttr:
    return self.operation.attributes["reuseB"]

  @reuseB.setter
  def reuseB(self, value: _ods_ir.BoolAttr):
    if value is None:
      raise ValueError("'None' not allowed as value for mandatory attributes")
    self.operation.attributes["reuseB"] = value

  @builtins.property
  def res(self) -> _ods_ir.OpResult:
    return self.operation.results[0]

@_ods_cext.register_op_adaptor(wmma_f32_16x16x128_fp8_bf8)
class wmma_f32_16x16x128_fp8_bf8Adaptor(_ods_ir.OpAdaptor):
  OPERATION_NAME = "rocdl.wmma.f32.16x16x128.fp8_bf8"

  @builtins.property
  def a(self) -> _ods_ir.Value:
    return self.operands[0]

  @builtins.property
  def b(self) -> _ods_ir.Value:
    return self.operands[1]

  @builtins.property
  def c(self) -> _ods_ir.Value:
    return self.operands[2]

  @builtins.property
  def modC(self) -> _ods_ir.IntegerAttr:
    return self.attributes["modC"]

  @builtins.property
  def reuseA(self) -> _ods_ir.BoolAttr:
    return self.attributes["reuseA"]

  @builtins.property
  def reuseB(self) -> _ods_ir.BoolAttr:
    return self.attributes["reuseB"]

def wmma_f32_16x16x128_fp8_bf8_(res: _ods_ir.Type, a: _ods_ir.Value, b: _ods_ir.Value, c: _ods_ir.Value, *, mod_c: _Optional[_Union[int, _ods_ir.IntegerAttr]] = None, reuse_a: _Optional[_Union[bool, _ods_ir.BoolAttr]] = None, reuse_b: _Optional[_Union[bool, _ods_ir.BoolAttr]] = None, loc: _Optional[_ods_ir.Location] = None, ip: _Optional[_ods_ir.InsertionPoint] = None) -> _ods_ir.OpResult:
  return wmma_f32_16x16x128_fp8_bf8(res=res, a=a, b=b, c=c, modC=mod_c, reuseA=reuse_a, reuseB=reuse_b, loc=loc, ip=ip).result

@_ods_cext.register_operation(_Dialect)
class wmma_f32_16x16x128_fp8_fp8(_ods_ir.OpView):
  r"""
  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 :
    (vector<16xi32>, vector<16xi32>, vector<8xf32>) -> vector<8xf32>
  ```
  """

  OPERATION_NAME = "rocdl.wmma.f32.16x16x128.fp8_fp8"

  _ODS_REGIONS = (0, True)

  def __init__(self, res: _ods_ir.Type, a: _ods_ir.Value, b: _ods_ir.Value, c: _ods_ir.Value, *, modC: _Optional[_Union[int, _ods_ir.IntegerAttr]] = None, reuseA: _Optional[_Union[bool, _ods_ir.BoolAttr]] = None, reuseB: _Optional[_Union[bool, _ods_ir.BoolAttr]] = None, loc: _Optional[_ods_ir.Location] = None, ip: _Optional[_ods_ir.InsertionPoint] = None):
    operands = []
    attributes = {}
    regions = None
    operands.append(a)
    operands.append(b)
    operands.append(c)
    _ods_context = _ods_get_default_loc_context(loc)
    if modC is not None: attributes["modC"] = (modC if (
        isinstance(modC, _ods_ir.Attribute) or
        not _ods_ir.AttrBuilder.contains('I16Attr')) else
          _ods_ir.AttrBuilder.get('I16Attr')(modC, context=_ods_context))
    if reuseA is not None: attributes["reuseA"] = (reuseA if (
        isinstance(reuseA, _ods_ir.Attribute) or
        not _ods_ir.AttrBuilder.contains('I1Attr')) else
          _ods_ir.AttrBuilder.get('I1Attr')(reuseA, context=_ods_context))
    if reuseB is not None: attributes["reuseB"] = (reuseB if (
        isinstance(reuseB, _ods_ir.Attribute) or
        not _ods_ir.AttrBuilder.contains('I1Attr')) else
          _ods_ir.AttrBuilder.get('I1Attr')(reuseB, context=_ods_context))
    results = []
    results.append(res)
    _ods_successors = None
    super().__init__(self.OPERATION_NAME, self._ODS_REGIONS, self._ODS_OPERAND_SEGMENTS, self._ODS_RESULT_SEGMENTS, attributes=attributes, results=results, operands=operands, successors=_ods_successors, regions=regions, loc=loc, ip=ip)

  @builtins.property
  def a(self) -> _ods_ir.Value:
    return self.operation.operands[0]

  @builtins.property
  def b(self) -> _ods_ir.Value:
    return self.operation.operands[1]

  @builtins.property
  def c(self) -> _ods_ir.Value:
    return self.operation.operands[2]

  @builtins.property
  def modC(self) -> _ods_ir.IntegerAttr:
    return self.operation.attributes["modC"]

  @modC.setter
  def modC(self, value: _ods_ir.IntegerAttr):
    if value is None:
      raise ValueError("'None' not allowed as value for mandatory attributes")
    self.operation.attributes["modC"] = value

  @builtins.property
  def reuseA(self) -> _ods_ir.BoolAttr:
    return self.operation.attributes["reuseA"]

  @reuseA.setter
  def reuseA(self, value: _ods_ir.BoolAttr):
    if value is None:
      raise ValueError("'None' not allowed as value for mandatory attributes")
    self.operation.attributes["reuseA"] = value

  @builtins.property
  def reuseB(self) -> _ods_ir.BoolAttr:
    return self.operation.attributes["reuseB"]

  @reuseB.setter
  def reuseB(self, value: _ods_ir.BoolAttr):
    if value is None:
      raise ValueError("'None' not allowed as value for mandatory attributes")
    self.operation.attributes["reuseB"] = value

  @builtins.property
  def res(self) -> _ods_ir.OpResult:
    return self.operation.results[0]

@_ods_cext.register_op_adaptor(wmma_f32_16x16x128_fp8_fp8)
class wmma_f32_16x16x128_fp8_fp8Adaptor(_ods_ir.OpAdaptor):
  OPERATION_NAME = "rocdl.wmma.f32.16x16x128.fp8_fp8"

  @builtins.property
  def a(self) -> _ods_ir.Value:
    return self.operands[0]

  @builtins.property
  def b(self) -> _ods_ir.Value:
    return self.operands[1]

  @builtins.property
  def c(self) -> _ods_ir.Value:
    return self.operands[2]

  @builtins.property
  def modC(self) -> _ods_ir.IntegerAttr:
    return self.attributes["modC"]

  @builtins.property
  def reuseA(self) -> _ods_ir.BoolAttr:
    return self.attributes["reuseA"]

  @builtins.property
  def reuseB(self) -> _ods_ir.BoolAttr:
    return self.attributes["reuseB"]

def wmma_f32_16x16x128_fp8_fp8_(res: _ods_ir.Type, a: _ods_ir.Value, b: _ods_ir.Value, c: _ods_ir.Value, *, mod_c: _Optional[_Union[int, _ods_ir.IntegerAttr]] = None, reuse_a: _Optional[_Union[bool, _ods_ir.BoolAttr]] = None, reuse_b: _Optional[_Union[bool, _ods_ir.BoolAttr]] = None, loc: _Optional[_ods_ir.Location] = None, ip: _Optional[_ods_ir.InsertionPoint] = None) -> _ods_ir.OpResult:
  return wmma_f32_16x16x128_fp8_fp8(res=res, a=a, b=b, c=c, modC=mod_c, reuseA=reuse_a, reuseB=reuse_b, loc=loc, ip=ip).result

@_ods_cext.register_operation(_Dialect)
class wmma_i32_16x16x16_iu4(_ods_ir.OpView):
  r"""
  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>
  ```
  """

  OPERATION_NAME = "rocdl.wmma.i32.16x16x16.iu4"

  _ODS_REGIONS = (0, True)

  def __init__(self, res: _ods_ir.Type, a: _ods_ir.Value, b: _ods_ir.Value, c: _ods_ir.Value, *, signA: _Optional[_Union[bool, _ods_ir.BoolAttr]] = None, signB: _Optional[_Union[bool, _ods_ir.BoolAttr]] = None, clamp: _Optional[_Union[bool, _ods_ir.BoolAttr]] = None, loc: _Optional[_ods_ir.Location] = None, ip: _Optional[_ods_ir.InsertionPoint] = None):
    operands = []
    attributes = {}
    regions = None
    operands.append(a)
    operands.append(b)
    operands.append(c)
    _ods_context = _ods_get_default_loc_context(loc)
    if signA is not None: attributes["signA"] = (signA if (
        isinstance(signA, _ods_ir.Attribute) or
        not _ods_ir.AttrBuilder.contains('I1Attr')) else
          _ods_ir.AttrBuilder.get('I1Attr')(signA, context=_ods_context))
    if signB is not None: attributes["signB"] = (signB if (
        isinstance(signB, _ods_ir.Attribute) or
        not _ods_ir.AttrBuilder.contains('I1Attr')) else
          _ods_ir.AttrBuilder.get('I1Attr')(signB, context=_ods_context))
    if clamp is not None: attributes["clamp"] = (clamp if (
        isinstance(clamp, _ods_ir.Attribute) or
        not _ods_ir.AttrBuilder.contains('I1Attr')) else
          _ods_ir.AttrBuilder.get('I1Attr')(clamp, context=_ods_context))
    results = []
    results.append(res)
    _ods_successors = None
    super().__init__(self.OPERATION_NAME, self._ODS_REGIONS, self._ODS_OPERAND_SEGMENTS, self._ODS_RESULT_SEGMENTS, attributes=attributes, results=results, operands=operands, successors=_ods_successors, regions=regions, loc=loc, ip=ip)

  @builtins.property
  def a(self) -> _ods_ir.Value:
    return self.operation.operands[0]

  @builtins.property
  def b(self) -> _ods_ir.Value:
    return self.operation.operands[1]

  @builtins.property
  def c(self) -> _ods_ir.Value:
    return self.operation.operands[2]

  @builtins.property
  def signA(self) -> _ods_ir.BoolAttr:
    return self.operation.attributes["signA"]

  @signA.setter
  def signA(self, value: _ods_ir.BoolAttr):
    if value is None:
      raise ValueError("'None' not allowed as value for mandatory attributes")
    self.operation.attributes["signA"] = value

  @builtins.property
  def signB(self) -> _ods_ir.BoolAttr:
    return self.operation.attributes["signB"]

  @signB.setter
  def signB(self, value: _ods_ir.BoolAttr):
    if value is None:
      raise ValueError("'None' not allowed as value for mandatory attributes")
    self.operation.attributes["signB"] = value

  @builtins.property
  def clamp(self) -> _ods_ir.BoolAttr:
    return self.operation.attributes["clamp"]

  @clamp.setter
  def clamp(self, value: _ods_ir.BoolAttr):
    if value is None:
      raise ValueError("'None' not allowed as value for mandatory attributes")
    self.operation.attributes["clamp"] = value

  @builtins.property
  def res(self) -> _ods_ir.OpResult:
    return self.operation.results[0]

@_ods_cext.register_op_adaptor(wmma_i32_16x16x16_iu4)
class wmma_i32_16x16x16_iu4Adaptor(_ods_ir.OpAdaptor):
  OPERATION_NAME = "rocdl.wmma.i32.16x16x16.iu4"

  @builtins.property
  def a(self) -> _ods_ir.Value:
    return self.operands[0]

  @builtins.property
  def b(self) -> _ods_ir.Value:
    return self.operands[1]

  @builtins.property
  def c(self) -> _ods_ir.Value:
    return self.operands[2]

  @builtins.property
  def signA(self) -> _ods_ir.BoolAttr:
    return self.attributes["signA"]

  @builtins.property
  def signB(self) -> _ods_ir.BoolAttr:
    return self.attributes["signB"]

  @builtins.property
  def clamp(self) -> _ods_ir.BoolAttr:
    return self.attributes["clamp"]

def wmma_i32_16x16x16_iu4_(res: _ods_ir.Type, a: _ods_ir.Value, b: _ods_ir.Value, c: _ods_ir.Value, *, sign_a: _Optional[_Union[bool, _ods_ir.BoolAttr]] = None, sign_b: _Optional[_Union[bool, _ods_ir.BoolAttr]] = None, clamp: _Optional[_Union[bool, _ods_ir.BoolAttr]] = None, loc: _Optional[_ods_ir.Location] = None, ip: _Optional[_ods_ir.InsertionPoint] = None) -> _ods_ir.OpResult:
  return wmma_i32_16x16x16_iu4(res=res, a=a, b=b, c=c, signA=sign_a, signB=sign_b, clamp=clamp, loc=loc, ip=ip).result

@_ods_cext.register_operation(_Dialect)
class wmma_i32_16x16x16_iu8(_ods_ir.OpView):
  r"""
  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>
  ```
  """

  OPERATION_NAME = "rocdl.wmma.i32.16x16x16.iu8"

  _ODS_REGIONS = (0, True)

  def __init__(self, res: _ods_ir.Type, a: _ods_ir.Value, b: _ods_ir.Value, c: _ods_ir.Value, *, signA: _Optional[_Union[bool, _ods_ir.BoolAttr]] = None, signB: _Optional[_Union[bool, _ods_ir.BoolAttr]] = None, clamp: _Optional[_Union[bool, _ods_ir.BoolAttr]] = None, loc: _Optional[_ods_ir.Location] = None, ip: _Optional[_ods_ir.InsertionPoint] = None):
    operands = []
    attributes = {}
    regions = None
    operands.append(a)
    operands.append(b)
    operands.append(c)
    _ods_context = _ods_get_default_loc_context(loc)
    if signA is not None: attributes["signA"] = (signA if (
        isinstance(signA, _ods_ir.Attribute) or
        not _ods_ir.AttrBuilder.contains('I1Attr')) else
          _ods_ir.AttrBuilder.get('I1Attr')(signA, context=_ods_context))
    if signB is not None: attributes["signB"] = (signB if (
        isinstance(signB, _ods_ir.Attribute) or
        not _ods_ir.AttrBuilder.contains('I1Attr')) else
          _ods_ir.AttrBuilder.get('I1Attr')(signB, context=_ods_context))
    if clamp is not None: attributes["clamp"] = (clamp if (
        isinstance(clamp, _ods_ir.Attribute) or
        not _ods_ir.AttrBuilder.contains('I1Attr')) else
          _ods_ir.AttrBuilder.get('I1Attr')(clamp, context=_ods_context))
    results = []
    results.append(res)
    _ods_successors = None
    super().__init__(self.OPERATION_NAME, self._ODS_REGIONS, self._ODS_OPERAND_SEGMENTS, self._ODS_RESULT_SEGMENTS, attributes=attributes, results=results, operands=operands, successors=_ods_successors, regions=regions, loc=loc, ip=ip)

  @builtins.property
  def a(self) -> _ods_ir.Value:
    return self.operation.operands[0]

  @builtins.property
  def b(self) -> _ods_ir.Value:
    return self.operation.operands[1]

  @builtins.property
  def c(self) -> _ods_ir.Value:
    return self.operation.operands[2]

  @builtins.property
  def signA(self) -> _ods_ir.BoolAttr:
    return self.operation.attributes["signA"]

  @signA.setter
  def signA(self, value: _ods_ir.BoolAttr):
    if value is None:
      raise ValueError("'None' not allowed as value for mandatory attributes")
    self.operation.attributes["signA"] = value

  @builtins.property
  def signB(self) -> _ods_ir.BoolAttr:
    return self.operation.attributes["signB"]

  @signB.setter
  def signB(self, value: _ods_ir.BoolAttr):
    if value is None:
      raise ValueError("'None' not allowed as value for mandatory attributes")
    self.operation.attributes["signB"] = value

  @builtins.property
  def clamp(self) -> _ods_ir.BoolAttr:
    return self.operation.attributes["clamp"]

  @clamp.setter
  def clamp(self, value: _ods_ir.BoolAttr):
    if value is None:
      raise ValueError("'None' not allowed as value for mandatory attributes")
    self.operation.attributes["clamp"] = value

  @builtins.property
  def res(self) -> _ods_ir.OpResult:
    return self.operation.results[0]

@_ods_cext.register_op_adaptor(wmma_i32_16x16x16_iu8)
class wmma_i32_16x16x16_iu8Adaptor(_ods_ir.OpAdaptor):
  OPERATION_NAME = "rocdl.wmma.i32.16x16x16.iu8"

  @builtins.property
  def a(self) -> _ods_ir.Value:
    return self.operands[0]

  @builtins.property
  def b(self) -> _ods_ir.Value:
    return self.operands[1]

  @builtins.property
  def c(self) -> _ods_ir.Value:
    return self.operands[2]

  @builtins.property
  def signA(self) -> _ods_ir.BoolAttr:
    return self.attributes["signA"]

  @builtins.property
  def signB(self) -> _ods_ir.BoolAttr:
    return self.attributes["signB"]

  @builtins.property
  def clamp(self) -> _ods_ir.BoolAttr:
    return self.attributes["clamp"]

def wmma_i32_16x16x16_iu8_(res: _ods_ir.Type, a: _ods_ir.Value, b: _ods_ir.Value, c: _ods_ir.Value, *, sign_a: _Optional[_Union[bool, _ods_ir.BoolAttr]] = None, sign_b: _Optional[_Union[bool, _ods_ir.BoolAttr]] = None, clamp: _Optional[_Union[bool, _ods_ir.BoolAttr]] = None, loc: _Optional[_ods_ir.Location] = None, ip: _Optional[_ods_ir.InsertionPoint] = None) -> _ods_ir.OpResult:
  return wmma_i32_16x16x16_iu8(res=res, a=a, b=b, c=c, signA=sign_a, signB=sign_b, clamp=clamp, loc=loc, ip=ip).result

@_ods_cext.register_operation(_Dialect)
class wmma_i32_16x16x32_iu4(_ods_ir.OpView):
  r"""
  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>
  ```
  """

  OPERATION_NAME = "rocdl.wmma.i32.16x16x32.iu4"

  _ODS_REGIONS = (0, True)

  def __init__(self, res: _ods_ir.Type, a: _ods_ir.Value, b: _ods_ir.Value, c: _ods_ir.Value, *, signA: _Optional[_Union[bool, _ods_ir.BoolAttr]] = None, signB: _Optional[_Union[bool, _ods_ir.BoolAttr]] = None, clamp: _Optional[_Union[bool, _ods_ir.BoolAttr]] = None, loc: _Optional[_ods_ir.Location] = None, ip: _Optional[_ods_ir.InsertionPoint] = None):
    operands = []
    attributes = {}
    regions = None
    operands.append(a)
    operands.append(b)
    operands.append(c)
    _ods_context = _ods_get_default_loc_context(loc)
    if signA is not None: attributes["signA"] = (signA if (
        isinstance(signA, _ods_ir.Attribute) or
        not _ods_ir.AttrBuilder.contains('I1Attr')) else
          _ods_ir.AttrBuilder.get('I1Attr')(signA, context=_ods_context))
    if signB is not None: attributes["signB"] = (signB if (
        isinstance(signB, _ods_ir.Attribute) or
        not _ods_ir.AttrBuilder.contains('I1Attr')) else
          _ods_ir.AttrBuilder.get('I1Attr')(signB, context=_ods_context))
    if clamp is not None: attributes["clamp"] = (clamp if (
        isinstance(clamp, _ods_ir.Attribute) or
        not _ods_ir.AttrBuilder.contains('I1Attr')) else
          _ods_ir.AttrBuilder.get('I1Attr')(clamp, context=_ods_context))
    results = []
    results.append(res)
    _ods_successors = None
    super().__init__(self.OPERATION_NAME, self._ODS_REGIONS, self._ODS_OPERAND_SEGMENTS, self._ODS_RESULT_SEGMENTS, attributes=attributes, results=results, operands=operands, successors=_ods_successors, regions=regions, loc=loc, ip=ip)

  @builtins.property
  def a(self) -> _ods_ir.Value:
    return self.operation.operands[0]

  @builtins.property
  def b(self) -> _ods_ir.Value:
    return self.operation.operands[1]

  @builtins.property
  def c(self) -> _ods_ir.Value:
    return self.operation.operands[2]

  @builtins.property
  def signA(self) -> _ods_ir.BoolAttr:
    return self.operation.attributes["signA"]

  @signA.setter
  def signA(self, value: _ods_ir.BoolAttr):
    if value is None:
      raise ValueError("'None' not allowed as value for mandatory attributes")
    self.operation.attributes["signA"] = value

  @builtins.property
  def signB(self) -> _ods_ir.BoolAttr:
    return self.operation.attributes["signB"]

  @signB.setter
  def signB(self, value: _ods_ir.BoolAttr):
    if value is None:
      raise ValueError("'None' not allowed as value for mandatory attributes")
    self.operation.attributes["signB"] = value

  @builtins.property
  def clamp(self) -> _ods_ir.BoolAttr:
    return self.operation.attributes["clamp"]

  @clamp.setter
  def clamp(self, value: _ods_ir.BoolAttr):
    if value is None:
      raise ValueError("'None' not allowed as value for mandatory attributes")
    self.operation.attributes["clamp"] = value

  @builtins.property
  def res(self) -> _ods_ir.OpResult:
    return self.operation.results[0]

@_ods_cext.register_op_adaptor(wmma_i32_16x16x32_iu4)
class wmma_i32_16x16x32_iu4Adaptor(_ods_ir.OpAdaptor):
  OPERATION_NAME = "rocdl.wmma.i32.16x16x32.iu4"

  @builtins.property
  def a(self) -> _ods_ir.Value:
    return self.operands[0]

  @builtins.property
  def b(self) -> _ods_ir.Value:
    return self.operands[1]

  @builtins.property
  def c(self) -> _ods_ir.Value:
    return self.operands[2]

  @builtins.property
  def signA(self) -> _ods_ir.BoolAttr:
    return self.attributes["signA"]

  @builtins.property
  def signB(self) -> _ods_ir.BoolAttr:
    return self.attributes["signB"]

  @builtins.property
  def clamp(self) -> _ods_ir.BoolAttr:
    return self.attributes["clamp"]

def wmma_i32_16x16x32_iu4_(res: _ods_ir.Type, a: _ods_ir.Value, b: _ods_ir.Value, c: _ods_ir.Value, *, sign_a: _Optional[_Union[bool, _ods_ir.BoolAttr]] = None, sign_b: _Optional[_Union[bool, _ods_ir.BoolAttr]] = None, clamp: _Optional[_Union[bool, _ods_ir.BoolAttr]] = None, loc: _Optional[_ods_ir.Location] = None, ip: _Optional[_ods_ir.InsertionPoint] = None) -> _ods_ir.OpResult:
  return wmma_i32_16x16x32_iu4(res=res, a=a, b=b, c=c, signA=sign_a, signB=sign_b, clamp=clamp, loc=loc, ip=ip).result

@_ods_cext.register_operation(_Dialect)
class wmma_i32_16x16x64_iu8(_ods_ir.OpView):
  r"""
  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>
  ```
  """

  OPERATION_NAME = "rocdl.wmma.i32.16x16x64.iu8"

  _ODS_REGIONS = (0, True)

  def __init__(self, res: _ods_ir.Type, a: _ods_ir.Value, b: _ods_ir.Value, c: _ods_ir.Value, *, signA: _Optional[_Union[bool, _ods_ir.BoolAttr]] = None, signB: _Optional[_Union[bool, _ods_ir.BoolAttr]] = None, reuseA: _Optional[_Union[bool, _ods_ir.BoolAttr]] = None, reuseB: _Optional[_Union[bool, _ods_ir.BoolAttr]] = None, clamp: _Optional[_Union[bool, _ods_ir.BoolAttr]] = None, loc: _Optional[_ods_ir.Location] = None, ip: _Optional[_ods_ir.InsertionPoint] = None):
    operands = []
    attributes = {}
    regions = None
    operands.append(a)
    operands.append(b)
    operands.append(c)
    _ods_context = _ods_get_default_loc_context(loc)
    if signA is not None: attributes["signA"] = (signA if (
        isinstance(signA, _ods_ir.Attribute) or
        not _ods_ir.AttrBuilder.contains('I1Attr')) else
          _ods_ir.AttrBuilder.get('I1Attr')(signA, context=_ods_context))
    if signB is not None: attributes["signB"] = (signB if (
        isinstance(signB, _ods_ir.Attribute) or
        not _ods_ir.AttrBuilder.contains('I1Attr')) else
          _ods_ir.AttrBuilder.get('I1Attr')(signB, context=_ods_context))
    if reuseA is not None: attributes["reuseA"] = (reuseA if (
        isinstance(reuseA, _ods_ir.Attribute) or
        not _ods_ir.AttrBuilder.contains('I1Attr')) else
          _ods_ir.AttrBuilder.get('I1Attr')(reuseA, context=_ods_context))
    if reuseB is not None: attributes["reuseB"] = (reuseB if (
        isinstance(reuseB, _ods_ir.Attribute) or
        not _ods_ir.AttrBuilder.contains('I1Attr')) else
          _ods_ir.AttrBuilder.get('I1Attr')(reuseB, context=_ods_context))
    if clamp is not None: attributes["clamp"] = (clamp if (
        isinstance(clamp, _ods_ir.Attribute) or
        not _ods_ir.AttrBuilder.contains('I1Attr')) else
          _ods_ir.AttrBuilder.get('I1Attr')(clamp, context=_ods_context))
    results = []
    results.append(res)
    _ods_successors = None
    super().__init__(self.OPERATION_NAME, self._ODS_REGIONS, self._ODS_OPERAND_SEGMENTS, self._ODS_RESULT_SEGMENTS, attributes=attributes, results=results, operands=operands, successors=_ods_successors, regions=regions, loc=loc, ip=ip)

  @builtins.property
  def a(self) -> _ods_ir.Value:
    return self.operation.operands[0]

  @builtins.property
  def b(self) -> _ods_ir.Value:
    return self.operation.operands[1]

  @builtins.property
  def c(self) -> _ods_ir.Value:
    return self.operation.operands[2]

  @builtins.property
  def signA(self) -> _ods_ir.BoolAttr:
    return self.operation.attributes["signA"]

  @signA.setter
  def signA(self, value: _ods_ir.BoolAttr):
    if value is None:
      raise ValueError("'None' not allowed as value for mandatory attributes")
    self.operation.attributes["signA"] = value

  @builtins.property
  def signB(self) -> _ods_ir.BoolAttr:
    return self.operation.attributes["signB"]

  @signB.setter
  def signB(self, value: _ods_ir.BoolAttr):
    if value is None:
      raise ValueError("'None' not allowed as value for mandatory attributes")
    self.operation.attributes["signB"] = value

  @builtins.property
  def reuseA(self) -> _ods_ir.BoolAttr:
    return self.operation.attributes["reuseA"]

  @reuseA.setter
  def reuseA(self, value: _ods_ir.BoolAttr):
    if value is None:
      raise ValueError("'None' not allowed as value for mandatory attributes")
    self.operation.attributes["reuseA"] = value

  @builtins.property
  def reuseB(self) -> _ods_ir.BoolAttr:
    return self.operation.attributes["reuseB"]

  @reuseB.setter
  def reuseB(self, value: _ods_ir.BoolAttr):
    if value is None:
      raise ValueError("'None' not allowed as value for mandatory attributes")
    self.operation.attributes["reuseB"] = value

  @builtins.property
  def clamp(self) -> _ods_ir.BoolAttr:
    return self.operation.attributes["clamp"]

  @clamp.setter
  def clamp(self, value: _ods_ir.BoolAttr):
    if value is None:
      raise ValueError("'None' not allowed as value for mandatory attributes")
    self.operation.attributes["clamp"] = value

  @builtins.property
  def res(self) -> _ods_ir.OpResult:
    return self.operation.results[0]

@_ods_cext.register_op_adaptor(wmma_i32_16x16x64_iu8)
class wmma_i32_16x16x64_iu8Adaptor(_ods_ir.OpAdaptor):
  OPERATION_NAME = "rocdl.wmma.i32.16x16x64.iu8"

  @builtins.property
  def a(self) -> _ods_ir.Value:
    return self.operands[0]

  @builtins.property
  def b(self) -> _ods_ir.Value:
    return self.operands[1]

  @builtins.property
  def c(self) -> _ods_ir.Value:
    return self.operands[2]

  @builtins.property
  def signA(self) -> _ods_ir.BoolAttr:
    return self.attributes["signA"]

  @builtins.property
  def signB(self) -> _ods_ir.BoolAttr:
    return self.attributes["signB"]

  @builtins.property
  def reuseA(self) -> _ods_ir.BoolAttr:
    return self.attributes["reuseA"]

  @builtins.property
  def reuseB(self) -> _ods_ir.BoolAttr:
    return self.attributes["reuseB"]

  @builtins.property
  def clamp(self) -> _ods_ir.BoolAttr:
    return self.attributes["clamp"]

def wmma_i32_16x16x64_iu8_(res: _ods_ir.Type, a: _ods_ir.Value, b: _ods_ir.Value, c: _ods_ir.Value, *, sign_a: _Optional[_Union[bool, _ods_ir.BoolAttr]] = None, sign_b: _Optional[_Union[bool, _ods_ir.BoolAttr]] = None, reuse_a: _Optional[_Union[bool, _ods_ir.BoolAttr]] = None, reuse_b: _Optional[_Union[bool, _ods_ir.BoolAttr]] = None, clamp: _Optional[_Union[bool, _ods_ir.BoolAttr]] = None, loc: _Optional[_ods_ir.Location] = None, ip: _Optional[_ods_ir.InsertionPoint] = None) -> _ods_ir.OpResult:
  return wmma_i32_16x16x64_iu8(res=res, a=a, b=b, c=c, signA=sign_a, signB=sign_b, reuseA=reuse_a, reuseB=reuse_b, clamp=clamp, loc=loc, ip=ip).result

@_ods_cext.register_operation(_Dialect)
class wmma_scale16_f32_16x16x128_f8f6f4(_ods_ir.OpView):
  r"""
  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 :
    (vector<16xi32>, vector<16xi32>, vector<8xf32>, i32, i32) -> vector<8xf32>
  ```
  """

  OPERATION_NAME = "rocdl.wmma.scale16.f32.16x16x128.f8f6f4"

  _ODS_REGIONS = (0, True)

  def __init__(self, res: _ods_ir.Type, a: _ods_ir.Value, b: _ods_ir.Value, c: _ods_ir.Value, scaleA: _ods_ir.Value[_ods_ir.IntegerType], scaleB: _ods_ir.Value[_ods_ir.IntegerType], *, fmtA: _Optional[_Union[int, _ods_ir.IntegerAttr]] = None, fmtB: _Optional[_Union[int, _ods_ir.IntegerAttr]] = None, modC: _Optional[_Union[int, _ods_ir.IntegerAttr]] = None, scaleAType: _Optional[_Union[int, _ods_ir.IntegerAttr]] = None, fmtScaleA: _Optional[_Union[int, _ods_ir.IntegerAttr]] = None, scaleBType: _Optional[_Union[int, _ods_ir.IntegerAttr]] = None, fmtScaleB: _Optional[_Union[int, _ods_ir.IntegerAttr]] = None, reuseA: _Optional[_Union[bool, _ods_ir.BoolAttr]] = None, reuseB: _Optional[_Union[bool, _ods_ir.BoolAttr]] = None, loc: _Optional[_ods_ir.Location] = None, ip: _Optional[_ods_ir.InsertionPoint] = None):
    operands = []
    attributes = {}
    regions = None
    operands.append(a)
    operands.append(b)
    operands.append(c)
    operands.append(scaleA)
    operands.append(scaleB)
    _ods_context = _ods_get_default_loc_context(loc)
    if fmtA is not None: attributes["fmtA"] = (fmtA if (
        isinstance(fmtA, _ods_ir.Attribute) or
        not _ods_ir.AttrBuilder.contains('I32Attr')) else
          _ods_ir.AttrBuilder.get('I32Attr')(fmtA, context=_ods_context))
    if fmtB is not None: attributes["fmtB"] = (fmtB if (
        isinstance(fmtB, _ods_ir.Attribute) or
        not _ods_ir.AttrBuilder.contains('I32Attr')) else
          _ods_ir.AttrBuilder.get('I32Attr')(fmtB, context=_ods_context))
    if modC is not None: attributes["modC"] = (modC if (
        isinstance(modC, _ods_ir.Attribute) or
        not _ods_ir.AttrBuilder.contains('I16Attr')) else
          _ods_ir.AttrBuilder.get('I16Attr')(modC, context=_ods_context))
    if scaleAType is not None: attributes["scaleAType"] = (scaleAType if (
        isinstance(scaleAType, _ods_ir.Attribute) or
        not _ods_ir.AttrBuilder.contains('I32Attr')) else
          _ods_ir.AttrBuilder.get('I32Attr')(scaleAType, context=_ods_context))
    if fmtScaleA is not None: attributes["fmtScaleA"] = (fmtScaleA if (
        isinstance(fmtScaleA, _ods_ir.Attribute) or
        not _ods_ir.AttrBuilder.contains('I32Attr')) else
          _ods_ir.AttrBuilder.get('I32Attr')(fmtScaleA, context=_ods_context))
    if scaleBType is not None: attributes["scaleBType"] = (scaleBType if (
        isinstance(scaleBType, _ods_ir.Attribute) or
        not _ods_ir.AttrBuilder.contains('I32Attr')) else
          _ods_ir.AttrBuilder.get('I32Attr')(scaleBType, context=_ods_context))
    if fmtScaleB is not None: attributes["fmtScaleB"] = (fmtScaleB if (
        isinstance(fmtScaleB, _ods_ir.Attribute) or
        not _ods_ir.AttrBuilder.contains('I32Attr')) else
          _ods_ir.AttrBuilder.get('I32Attr')(fmtScaleB, context=_ods_context))
    if reuseA is not None: attributes["reuseA"] = (reuseA if (
        isinstance(reuseA, _ods_ir.Attribute) or
        not _ods_ir.AttrBuilder.contains('I1Attr')) else
          _ods_ir.AttrBuilder.get('I1Attr')(reuseA, context=_ods_context))
    if reuseB is not None: attributes["reuseB"] = (reuseB if (
        isinstance(reuseB, _ods_ir.Attribute) or
        not _ods_ir.AttrBuilder.contains('I1Attr')) else
          _ods_ir.AttrBuilder.get('I1Attr')(reuseB, context=_ods_context))
    results = []
    results.append(res)
    _ods_successors = None
    super().__init__(self.OPERATION_NAME, self._ODS_REGIONS, self._ODS_OPERAND_SEGMENTS, self._ODS_RESULT_SEGMENTS, attributes=attributes, results=results, operands=operands, successors=_ods_successors, regions=regions, loc=loc, ip=ip)

  @builtins.property
  def a(self) -> _ods_ir.Value:
    return self.operation.operands[0]

  @builtins.property
  def b(self) -> _ods_ir.Value:
    return self.operation.operands[1]

  @builtins.property
  def c(self) -> _ods_ir.Value:
    return self.operation.operands[2]

  @builtins.property
  def scaleA(self) -> _ods_ir.Value[_ods_ir.IntegerType]:
    return self.operation.operands[3]

  @builtins.property
  def scaleB(self) -> _ods_ir.Value[_ods_ir.IntegerType]:
    return self.operation.operands[4]

  @builtins.property
  def fmtA(self) -> _ods_ir.IntegerAttr:
    return self.operation.attributes["fmtA"]

  @fmtA.setter
  def fmtA(self, value: _ods_ir.IntegerAttr):
    if value is None:
      raise ValueError("'None' not allowed as value for mandatory attributes")
    self.operation.attributes["fmtA"] = value

  @builtins.property
  def fmtB(self) -> _ods_ir.IntegerAttr:
    return self.operation.attributes["fmtB"]

  @fmtB.setter
  def fmtB(self, value: _ods_ir.IntegerAttr):
    if value is None:
      raise ValueError("'None' not allowed as value for mandatory attributes")
    self.operation.attributes["fmtB"] = value

  @builtins.property
  def modC(self) -> _ods_ir.IntegerAttr:
    return self.operation.attributes["modC"]

  @modC.setter
  def modC(self, value: _ods_ir.IntegerAttr):
    if value is None:
      raise ValueError("'None' not allowed as value for mandatory attributes")
    self.operation.attributes["modC"] = value

  @builtins.property
  def scaleAType(self) -> _ods_ir.IntegerAttr:
    return self.operation.attributes["scaleAType"]

  @scaleAType.setter
  def scaleAType(self, value: _ods_ir.IntegerAttr):
    if value is None:
      raise ValueError("'None' not allowed as value for mandatory attributes")
    self.operation.attributes["scaleAType"] = value

  @builtins.property
  def fmtScaleA(self) -> _ods_ir.IntegerAttr:
    return self.operation.attributes["fmtScaleA"]

  @fmtScaleA.setter
  def fmtScaleA(self, value: _ods_ir.IntegerAttr):
    if value is None:
      raise ValueError("'None' not allowed as value for mandatory attributes")
    self.operation.attributes["fmtScaleA"] = value

  @builtins.property
  def scaleBType(self) -> _ods_ir.IntegerAttr:
    return self.operation.attributes["scaleBType"]

  @scaleBType.setter
  def scaleBType(self, value: _ods_ir.IntegerAttr):
    if value is None:
      raise ValueError("'None' not allowed as value for mandatory attributes")
    self.operation.attributes["scaleBType"] = value

  @builtins.property
  def fmtScaleB(self) -> _ods_ir.IntegerAttr:
    return self.operation.attributes["fmtScaleB"]

  @fmtScaleB.setter
  def fmtScaleB(self, value: _ods_ir.IntegerAttr):
    if value is None:
      raise ValueError("'None' not allowed as value for mandatory attributes")
    self.operation.attributes["fmtScaleB"] = value

  @builtins.property
  def reuseA(self) -> _ods_ir.BoolAttr:
    return self.operation.attributes["reuseA"]

  @reuseA.setter
  def reuseA(self, value: _ods_ir.BoolAttr):
    if value is None:
      raise ValueError("'None' not allowed as value for mandatory attributes")
    self.operation.attributes["reuseA"] = value

  @builtins.property
  def reuseB(self) -> _ods_ir.BoolAttr:
    return self.operation.attributes["reuseB"]

  @reuseB.setter
  def reuseB(self, value: _ods_ir.BoolAttr):
    if value is None:
      raise ValueError("'None' not allowed as value for mandatory attributes")
    self.operation.attributes["reuseB"] = value

  @builtins.property
  def res(self) -> _ods_ir.OpResult:
    return self.operation.results[0]

@_ods_cext.register_op_adaptor(wmma_scale16_f32_16x16x128_f8f6f4)
class wmma_scale16_f32_16x16x128_f8f6f4Adaptor(_ods_ir.OpAdaptor):
  OPERATION_NAME = "rocdl.wmma.scale16.f32.16x16x128.f8f6f4"

  @builtins.property
  def a(self) -> _ods_ir.Value:
    return self.operands[0]

  @builtins.property
  def b(self) -> _ods_ir.Value:
    return self.operands[1]

  @builtins.property
  def c(self) -> _ods_ir.Value:
    return self.operands[2]

  @builtins.property
  def scaleA(self) -> _ods_ir.Value[_ods_ir.IntegerType]:
    return self.operands[3]

  @builtins.property
  def scaleB(self) -> _ods_ir.Value[_ods_ir.IntegerType]:
    return self.operands[4]

  @builtins.property
  def fmtA(self) -> _ods_ir.IntegerAttr:
    return self.attributes["fmtA"]

  @builtins.property
  def fmtB(self) -> _ods_ir.IntegerAttr:
    return self.attributes["fmtB"]

  @builtins.property
  def modC(self) -> _ods_ir.IntegerAttr:
    return self.attributes["modC"]

  @builtins.property
  def scaleAType(self) -> _ods_ir.IntegerAttr:
    return self.attributes["scaleAType"]

  @builtins.property
  def fmtScaleA(self) -> _ods_ir.IntegerAttr:
    return self.attributes["fmtScaleA"]

  @builtins.property
  def scaleBType(self) -> _ods_ir.IntegerAttr:
    return self.attributes["scaleBType"]

  @builtins.property
  def fmtScaleB(self) -> _ods_ir.IntegerAttr:
    return self.attributes["fmtScaleB"]

  @builtins.property
  def reuseA(self) -> _ods_ir.BoolAttr:
    return self.attributes["reuseA"]

  @builtins.property
  def reuseB(self) -> _ods_ir.BoolAttr:
    return self.attributes["reuseB"]

def wmma_scale16_f32_16x16x128_f8f6f4_(res: _ods_ir.Type, a: _ods_ir.Value, b: _ods_ir.Value, c: _ods_ir.Value, scale_a: _ods_ir.Value[_ods_ir.IntegerType], scale_b: _ods_ir.Value[_ods_ir.IntegerType], *, fmt_a: _Optional[_Union[int, _ods_ir.IntegerAttr]] = None, fmt_b: _Optional[_Union[int, _ods_ir.IntegerAttr]] = None, mod_c: _Optional[_Union[int, _ods_ir.IntegerAttr]] = None, scale_a_type: _Optional[_Union[int, _ods_ir.IntegerAttr]] = None, fmt_scale_a: _Optional[_Union[int, _ods_ir.IntegerAttr]] = None, scale_b_type: _Optional[_Union[int, _ods_ir.IntegerAttr]] = None, fmt_scale_b: _Optional[_Union[int, _ods_ir.IntegerAttr]] = None, reuse_a: _Optional[_Union[bool, _ods_ir.BoolAttr]] = None, reuse_b: _Optional[_Union[bool, _ods_ir.BoolAttr]] = None, loc: _Optional[_ods_ir.Location] = None, ip: _Optional[_ods_ir.InsertionPoint] = None) -> _ods_ir.OpResult:
  return wmma_scale16_f32_16x16x128_f8f6f4(res=res, a=a, b=b, c=c, scaleA=scale_a, scaleB=scale_b, fmtA=fmt_a, fmtB=fmt_b, modC=mod_c, scaleAType=scale_a_type, fmtScaleA=fmt_scale_a, scaleBType=scale_b_type, fmtScaleB=fmt_scale_b, reuseA=reuse_a, reuseB=reuse_b, loc=loc, ip=ip).result

@_ods_cext.register_operation(_Dialect)
class wmma_scale16_f32_32x16x128_f4(_ods_ir.OpView):
  r"""
  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 :
    (vector<8xi32>, vector<8xi32>, vector<8xf32>, i32, i32) -> vector<8xf32>
  ```
  """

  OPERATION_NAME = "rocdl.wmma.scale16.f32.32x16x128.f4"

  _ODS_REGIONS = (0, True)

  def __init__(self, res: _ods_ir.Type, a: _ods_ir.Value, b: _ods_ir.Value, c: _ods_ir.Value, scaleA: _ods_ir.Value[_ods_ir.IntegerType], scaleB: _ods_ir.Value[_ods_ir.IntegerType], *, modC: _Optional[_Union[int, _ods_ir.IntegerAttr]] = None, scaleAType: _Optional[_Union[int, _ods_ir.IntegerAttr]] = None, fmtScaleA: _Optional[_Union[int, _ods_ir.IntegerAttr]] = None, scaleBType: _Optional[_Union[int, _ods_ir.IntegerAttr]] = None, fmtScaleB: _Optional[_Union[int, _ods_ir.IntegerAttr]] = None, reuseA: _Optional[_Union[bool, _ods_ir.BoolAttr]] = None, reuseB: _Optional[_Union[bool, _ods_ir.BoolAttr]] = None, loc: _Optional[_ods_ir.Location] = None, ip: _Optional[_ods_ir.InsertionPoint] = None):
    operands = []
    attributes = {}
    regions = None
    operands.append(a)
    operands.append(b)
    operands.append(c)
    operands.append(scaleA)
    operands.append(scaleB)
    _ods_context = _ods_get_default_loc_context(loc)
    if modC is not None: attributes["modC"] = (modC if (
        isinstance(modC, _ods_ir.Attribute) or
        not _ods_ir.AttrBuilder.contains('I16Attr')) else
          _ods_ir.AttrBuilder.get('I16Attr')(modC, context=_ods_context))
    if scaleAType is not None: attributes["scaleAType"] = (scaleAType if (
        isinstance(scaleAType, _ods_ir.Attribute) or
        not _ods_ir.AttrBuilder.contains('I32Attr')) else
          _ods_ir.AttrBuilder.get('I32Attr')(scaleAType, context=_ods_context))
    if fmtScaleA is not None: attributes["fmtScaleA"] = (fmtScaleA if (
        isinstance(fmtScaleA, _ods_ir.Attribute) or
        not _ods_ir.AttrBuilder.contains('I32Attr')) else
          _ods_ir.AttrBuilder.get('I32Attr')(fmtScaleA, context=_ods_context))
    if scaleBType is not None: attributes["scaleBType"] = (scaleBType if (
        isinstance(scaleBType, _ods_ir.Attribute) or
        not _ods_ir.AttrBuilder.contains('I32Attr')) else
          _ods_ir.AttrBuilder.get('I32Attr')(scaleBType, context=_ods_context))
    if fmtScaleB is not None: attributes["fmtScaleB"] = (fmtScaleB if (
        isinstance(fmtScaleB, _ods_ir.Attribute) or
        not _ods_ir.AttrBuilder.contains('I32Attr')) else
          _ods_ir.AttrBuilder.get('I32Attr')(fmtScaleB, context=_ods_context))
    if reuseA is not None: attributes["reuseA"] = (reuseA if (
        isinstance(reuseA, _ods_ir.Attribute) or
        not _ods_ir.AttrBuilder.contains('I1Attr')) else
          _ods_ir.AttrBuilder.get('I1Attr')(reuseA, context=_ods_context))
    if reuseB is not None: attributes["reuseB"] = (reuseB if (
        isinstance(reuseB, _ods_ir.Attribute) or
        not _ods_ir.AttrBuilder.contains('I1Attr')) else
          _ods_ir.AttrBuilder.get('I1Attr')(reuseB, context=_ods_context))
    results = []
    results.append(res)
    _ods_successors = None
    super().__init__(self.OPERATION_NAME, self._ODS_REGIONS, self._ODS_OPERAND_SEGMENTS, self._ODS_RESULT_SEGMENTS, attributes=attributes, results=results, operands=operands, successors=_ods_successors, regions=regions, loc=loc, ip=ip)

  @builtins.property
  def a(self) -> _ods_ir.Value:
    return self.operation.operands[0]

  @builtins.property
  def b(self) -> _ods_ir.Value:
    return self.operation.operands[1]

  @builtins.property
  def c(self) -> _ods_ir.Value:
    return self.operation.operands[2]

  @builtins.property
  def scaleA(self) -> _ods_ir.Value[_ods_ir.IntegerType]:
    return self.operation.operands[3]

  @builtins.property
  def scaleB(self) -> _ods_ir.Value[_ods_ir.IntegerType]:
    return self.operation.operands[4]

  @builtins.property
  def modC(self) -> _ods_ir.IntegerAttr:
    return self.operation.attributes["modC"]

  @modC.setter
  def modC(self, value: _ods_ir.IntegerAttr):
    if value is None:
      raise ValueError("'None' not allowed as value for mandatory attributes")
    self.operation.attributes["modC"] = value

  @builtins.property
  def scaleAType(self) -> _ods_ir.IntegerAttr:
    return self.operation.attributes["scaleAType"]

  @scaleAType.setter
  def scaleAType(self, value: _ods_ir.IntegerAttr):
    if value is None:
      raise ValueError("'None' not allowed as value for mandatory attributes")
    self.operation.attributes["scaleAType"] = value

  @builtins.property
  def fmtScaleA(self) -> _ods_ir.IntegerAttr:
    return self.operation.attributes["fmtScaleA"]

  @fmtScaleA.setter
  def fmtScaleA(self, value: _ods_ir.IntegerAttr):
    if value is None:
      raise ValueError("'None' not allowed as value for mandatory attributes")
    self.operation.attributes["fmtScaleA"] = value

  @builtins.property
  def scaleBType(self) -> _ods_ir.IntegerAttr:
    return self.operation.attributes["scaleBType"]

  @scaleBType.setter
  def scaleBType(self, value: _ods_ir.IntegerAttr):
    if value is None:
      raise ValueError("'None' not allowed as value for mandatory attributes")
    self.operation.attributes["scaleBType"] = value

  @builtins.property
  def fmtScaleB(self) -> _ods_ir.IntegerAttr:
    return self.operation.attributes["fmtScaleB"]

  @fmtScaleB.setter
  def fmtScaleB(self, value: _ods_ir.IntegerAttr):
    if value is None:
      raise ValueError("'None' not allowed as value for mandatory attributes")
    self.operation.attributes["fmtScaleB"] = value

  @builtins.property
  def reuseA(self) -> _ods_ir.BoolAttr:
    return self.operation.attributes["reuseA"]

  @reuseA.setter
  def reuseA(self, value: _ods_ir.BoolAttr):
    if value is None:
      raise ValueError("'None' not allowed as value for mandatory attributes")
    self.operation.attributes["reuseA"] = value

  @builtins.property
  def reuseB(self) -> _ods_ir.BoolAttr:
    return self.operation.attributes["reuseB"]

  @reuseB.setter
  def reuseB(self, value: _ods_ir.BoolAttr):
    if value is None:
      raise ValueError("'None' not allowed as value for mandatory attributes")
    self.operation.attributes["reuseB"] = value

  @builtins.property
  def res(self) -> _ods_ir.OpResult:
    return self.operation.results[0]

@_ods_cext.register_op_adaptor(wmma_scale16_f32_32x16x128_f4)
class wmma_scale16_f32_32x16x128_f4Adaptor(_ods_ir.OpAdaptor):
  OPERATION_NAME = "rocdl.wmma.scale16.f32.32x16x128.f4"

  @builtins.property
  def a(self) -> _ods_ir.Value:
    return self.operands[0]

  @builtins.property
  def b(self) -> _ods_ir.Value:
    return self.operands[1]

  @builtins.property
  def c(self) -> _ods_ir.Value:
    return self.operands[2]

  @builtins.property
  def scaleA(self) -> _ods_ir.Value[_ods_ir.IntegerType]:
    return self.operands[3]

  @builtins.property
  def scaleB(self) -> _ods_ir.Value[_ods_ir.IntegerType]:
    return self.operands[4]

  @builtins.property
  def modC(self) -> _ods_ir.IntegerAttr:
    return self.attributes["modC"]

  @builtins.property
  def scaleAType(self) -> _ods_ir.IntegerAttr:
    return self.attributes["scaleAType"]

  @builtins.property
  def fmtScaleA(self) -> _ods_ir.IntegerAttr:
    return self.attributes["fmtScaleA"]

  @builtins.property
  def scaleBType(self) -> _ods_ir.IntegerAttr:
    return self.attributes["scaleBType"]

  @builtins.property
  def fmtScaleB(self) -> _ods_ir.IntegerAttr:
    return self.attributes["fmtScaleB"]

  @builtins.property
  def reuseA(self) -> _ods_ir.BoolAttr:
    return self.attributes["reuseA"]

  @builtins.property
  def reuseB(self) -> _ods_ir.BoolAttr:
    return self.attributes["reuseB"]

def wmma_scale16_f32_32x16x128_f4_(res: _ods_ir.Type, a: _ods_ir.Value, b: _ods_ir.Value, c: _ods_ir.Value, scale_a: _ods_ir.Value[_ods_ir.IntegerType], scale_b: _ods_ir.Value[_ods_ir.IntegerType], *, mod_c: _Optional[_Union[int, _ods_ir.IntegerAttr]] = None, scale_a_type: _Optional[_Union[int, _ods_ir.IntegerAttr]] = None, fmt_scale_a: _Optional[_Union[int, _ods_ir.IntegerAttr]] = None, scale_b_type: _Optional[_Union[int, _ods_ir.IntegerAttr]] = None, fmt_scale_b: _Optional[_Union[int, _ods_ir.IntegerAttr]] = None, reuse_a: _Optional[_Union[bool, _ods_ir.BoolAttr]] = None, reuse_b: _Optional[_Union[bool, _ods_ir.BoolAttr]] = None, loc: _Optional[_ods_ir.Location] = None, ip: _Optional[_ods_ir.InsertionPoint] = None) -> _ods_ir.OpResult:
  return wmma_scale16_f32_32x16x128_f4(res=res, a=a, b=b, c=c, scaleA=scale_a, scaleB=scale_b, modC=mod_c, scaleAType=scale_a_type, fmtScaleA=fmt_scale_a, scaleBType=scale_b_type, fmtScaleB=fmt_scale_b, reuseA=reuse_a, reuseB=reuse_b, loc=loc, ip=ip).result

@_ods_cext.register_operation(_Dialect)
class wmma_scale_f32_16x16x128_f8f6f4(_ods_ir.OpView):
  r"""
  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 :
    (vector<16xi32>, vector<16xi32>, vector<8xf32>, i32, i32) -> vector<8xf32>
  ```
  """

  OPERATION_NAME = "rocdl.wmma.scale.f32.16x16x128.f8f6f4"

  _ODS_REGIONS = (0, True)

  def __init__(self, res: _ods_ir.Type, a: _ods_ir.Value, b: _ods_ir.Value, c: _ods_ir.Value, scaleA: _ods_ir.Value[_ods_ir.IntegerType], scaleB: _ods_ir.Value[_ods_ir.IntegerType], *, fmtA: _Optional[_Union[int, _ods_ir.IntegerAttr]] = None, fmtB: _Optional[_Union[int, _ods_ir.IntegerAttr]] = None, modC: _Optional[_Union[int, _ods_ir.IntegerAttr]] = None, scaleAType: _Optional[_Union[int, _ods_ir.IntegerAttr]] = None, fmtScaleA: _Optional[_Union[int, _ods_ir.IntegerAttr]] = None, scaleBType: _Optional[_Union[int, _ods_ir.IntegerAttr]] = None, fmtScaleB: _Optional[_Union[int, _ods_ir.IntegerAttr]] = None, reuseA: _Optional[_Union[bool, _ods_ir.BoolAttr]] = None, reuseB: _Optional[_Union[bool, _ods_ir.BoolAttr]] = None, loc: _Optional[_ods_ir.Location] = None, ip: _Optional[_ods_ir.InsertionPoint] = None):
    operands = []
    attributes = {}
    regions = None
    operands.append(a)
    operands.append(b)
    operands.append(c)
    operands.append(scaleA)
    operands.append(scaleB)
    _ods_context = _ods_get_default_loc_context(loc)
    if fmtA is not None: attributes["fmtA"] = (fmtA if (
        isinstance(fmtA, _ods_ir.Attribute) or
        not _ods_ir.AttrBuilder.contains('I32Attr')) else
          _ods_ir.AttrBuilder.get('I32Attr')(fmtA, context=_ods_context))
    if fmtB is not None: attributes["fmtB"] = (fmtB if (
        isinstance(fmtB, _ods_ir.Attribute) or
        not _ods_ir.AttrBuilder.contains('I32Attr')) else
          _ods_ir.AttrBuilder.get('I32Attr')(fmtB, context=_ods_context))
    if modC is not None: attributes["modC"] = (modC if (
        isinstance(modC, _ods_ir.Attribute) or
        not _ods_ir.AttrBuilder.contains('I16Attr')) else
          _ods_ir.AttrBuilder.get('I16Attr')(modC, context=_ods_context))
    if scaleAType is not None: attributes["scaleAType"] = (scaleAType if (
        isinstance(scaleAType, _ods_ir.Attribute) or
        not _ods_ir.AttrBuilder.contains('I32Attr')) else
          _ods_ir.AttrBuilder.get('I32Attr')(scaleAType, context=_ods_context))
    if fmtScaleA is not None: attributes["fmtScaleA"] = (fmtScaleA if (
        isinstance(fmtScaleA, _ods_ir.Attribute) or
        not _ods_ir.AttrBuilder.contains('I32Attr')) else
          _ods_ir.AttrBuilder.get('I32Attr')(fmtScaleA, context=_ods_context))
    if scaleBType is not None: attributes["scaleBType"] = (scaleBType if (
        isinstance(scaleBType, _ods_ir.Attribute) or
        not _ods_ir.AttrBuilder.contains('I32Attr')) else
          _ods_ir.AttrBuilder.get('I32Attr')(scaleBType, context=_ods_context))
    if fmtScaleB is not None: attributes["fmtScaleB"] = (fmtScaleB if (
        isinstance(fmtScaleB, _ods_ir.Attribute) or
        not _ods_ir.AttrBuilder.contains('I32Attr')) else
          _ods_ir.AttrBuilder.get('I32Attr')(fmtScaleB, context=_ods_context))
    if reuseA is not None: attributes["reuseA"] = (reuseA if (
        isinstance(reuseA, _ods_ir.Attribute) or
        not _ods_ir.AttrBuilder.contains('I1Attr')) else
          _ods_ir.AttrBuilder.get('I1Attr')(reuseA, context=_ods_context))
    if reuseB is not None: attributes["reuseB"] = (reuseB if (
        isinstance(reuseB, _ods_ir.Attribute) or
        not _ods_ir.AttrBuilder.contains('I1Attr')) else
          _ods_ir.AttrBuilder.get('I1Attr')(reuseB, context=_ods_context))
    results = []
    results.append(res)
    _ods_successors = None
    super().__init__(self.OPERATION_NAME, self._ODS_REGIONS, self._ODS_OPERAND_SEGMENTS, self._ODS_RESULT_SEGMENTS, attributes=attributes, results=results, operands=operands, successors=_ods_successors, regions=regions, loc=loc, ip=ip)

  @builtins.property
  def a(self) -> _ods_ir.Value:
    return self.operation.operands[0]

  @builtins.property
  def b(self) -> _ods_ir.Value:
    return self.operation.operands[1]

  @builtins.property
  def c(self) -> _ods_ir.Value:
    return self.operation.operands[2]

  @builtins.property
  def scaleA(self) -> _ods_ir.Value[_ods_ir.IntegerType]:
    return self.operation.operands[3]

  @builtins.property
  def scaleB(self) -> _ods_ir.Value[_ods_ir.IntegerType]:
    return self.operation.operands[4]

  @builtins.property
  def fmtA(self) -> _ods_ir.IntegerAttr:
    return self.operation.attributes["fmtA"]

  @fmtA.setter
  def fmtA(self, value: _ods_ir.IntegerAttr):
    if value is None:
      raise ValueError("'None' not allowed as value for mandatory attributes")
    self.operation.attributes["fmtA"] = value

  @builtins.property
  def fmtB(self) -> _ods_ir.IntegerAttr:
    return self.operation.attributes["fmtB"]

  @fmtB.setter
  def fmtB(self, value: _ods_ir.IntegerAttr):
    if value is None:
      raise ValueError("'None' not allowed as value for mandatory attributes")
    self.operation.attributes["fmtB"] = value

  @builtins.property
  def modC(self) -> _ods_ir.IntegerAttr:
    return self.operation.attributes["modC"]

  @modC.setter
  def modC(self, value: _ods_ir.IntegerAttr):
    if value is None:
      raise ValueError("'None' not allowed as value for mandatory attributes")
    self.operation.attributes["modC"] = value

  @builtins.property
  def scaleAType(self) -> _ods_ir.IntegerAttr:
    return self.operation.attributes["scaleAType"]

  @scaleAType.setter
  def scaleAType(self, value: _ods_ir.IntegerAttr):
    if value is None:
      raise ValueError("'None' not allowed as value for mandatory attributes")
    self.operation.attributes["scaleAType"] = value

  @builtins.property
  def fmtScaleA(self) -> _ods_ir.IntegerAttr:
    return self.operation.attributes["fmtScaleA"]

  @fmtScaleA.setter
  def fmtScaleA(self, value: _ods_ir.IntegerAttr):
    if value is None:
      raise ValueError("'None' not allowed as value for mandatory attributes")
    self.operation.attributes["fmtScaleA"] = value

  @builtins.property
  def scaleBType(self) -> _ods_ir.IntegerAttr:
    return self.operation.attributes["scaleBType"]

  @scaleBType.setter
  def scaleBType(self, value: _ods_ir.IntegerAttr):
    if value is None:
      raise ValueError("'None' not allowed as value for mandatory attributes")
    self.operation.attributes["scaleBType"] = value

  @builtins.property
  def fmtScaleB(self) -> _ods_ir.IntegerAttr:
    return self.operation.attributes["fmtScaleB"]

  @fmtScaleB.setter
  def fmtScaleB(self, value: _ods_ir.IntegerAttr):
    if value is None:
      raise ValueError("'None' not allowed as value for mandatory attributes")
    self.operation.attributes["fmtScaleB"] = value

  @builtins.property
  def reuseA(self) -> _ods_ir.BoolAttr:
    return self.operation.attributes["reuseA"]

  @reuseA.setter
  def reuseA(self, value: _ods_ir.BoolAttr):
    if value is None:
      raise ValueError("'None' not allowed as value for mandatory attributes")
    self.operation.attributes["reuseA"] = value

  @builtins.property
  def reuseB(self) -> _ods_ir.BoolAttr:
    return self.operation.attributes["reuseB"]

  @reuseB.setter
  def reuseB(self, value: _ods_ir.BoolAttr):
    if value is None:
      raise ValueError("'None' not allowed as value for mandatory attributes")
    self.operation.attributes["reuseB"] = value

  @builtins.property
  def res(self) -> _ods_ir.OpResult:
    return self.operation.results[0]

@_ods_cext.register_op_adaptor(wmma_scale_f32_16x16x128_f8f6f4)
class wmma_scale_f32_16x16x128_f8f6f4Adaptor(_ods_ir.OpAdaptor):
  OPERATION_NAME = "rocdl.wmma.scale.f32.16x16x128.f8f6f4"

  @builtins.property
  def a(self) -> _ods_ir.Value:
    return self.operands[0]

  @builtins.property
  def b(self) -> _ods_ir.Value:
    return self.operands[1]

  @builtins.property
  def c(self) -> _ods_ir.Value:
    return self.operands[2]

  @builtins.property
  def scaleA(self) -> _ods_ir.Value[_ods_ir.IntegerType]:
    return self.operands[3]

  @builtins.property
  def scaleB(self) -> _ods_ir.Value[_ods_ir.IntegerType]:
    return self.operands[4]

  @builtins.property
  def fmtA(self) -> _ods_ir.IntegerAttr:
    return self.attributes["fmtA"]

  @builtins.property
  def fmtB(self) -> _ods_ir.IntegerAttr:
    return self.attributes["fmtB"]

  @builtins.property
  def modC(self) -> _ods_ir.IntegerAttr:
    return self.attributes["modC"]

  @builtins.property
  def scaleAType(self) -> _ods_ir.IntegerAttr:
    return self.attributes["scaleAType"]

  @builtins.property
  def fmtScaleA(self) -> _ods_ir.IntegerAttr:
    return self.attributes["fmtScaleA"]

  @builtins.property
  def scaleBType(self) -> _ods_ir.IntegerAttr:
    return self.attributes["scaleBType"]

  @builtins.property
  def fmtScaleB(self) -> _ods_ir.IntegerAttr:
    return self.attributes["fmtScaleB"]

  @builtins.property
  def reuseA(self) -> _ods_ir.BoolAttr:
    return self.attributes["reuseA"]

  @builtins.property
  def reuseB(self) -> _ods_ir.BoolAttr:
    return self.attributes["reuseB"]

def wmma_scale_f32_16x16x128_f8f6f4_(res: _ods_ir.Type, a: _ods_ir.Value, b: _ods_ir.Value, c: _ods_ir.Value, scale_a: _ods_ir.Value[_ods_ir.IntegerType], scale_b: _ods_ir.Value[_ods_ir.IntegerType], *, fmt_a: _Optional[_Union[int, _ods_ir.IntegerAttr]] = None, fmt_b: _Optional[_Union[int, _ods_ir.IntegerAttr]] = None, mod_c: _Optional[_Union[int, _ods_ir.IntegerAttr]] = None, scale_a_type: _Optional[_Union[int, _ods_ir.IntegerAttr]] = None, fmt_scale_a: _Optional[_Union[int, _ods_ir.IntegerAttr]] = None, scale_b_type: _Optional[_Union[int, _ods_ir.IntegerAttr]] = None, fmt_scale_b: _Optional[_Union[int, _ods_ir.IntegerAttr]] = None, reuse_a: _Optional[_Union[bool, _ods_ir.BoolAttr]] = None, reuse_b: _Optional[_Union[bool, _ods_ir.BoolAttr]] = None, loc: _Optional[_ods_ir.Location] = None, ip: _Optional[_ods_ir.InsertionPoint] = None) -> _ods_ir.OpResult:
  return wmma_scale_f32_16x16x128_f8f6f4(res=res, a=a, b=b, c=c, scaleA=scale_a, scaleB=scale_b, fmtA=fmt_a, fmtB=fmt_b, modC=mod_c, scaleAType=scale_a_type, fmtScaleA=fmt_scale_a, scaleBType=scale_b_type, fmtScaleB=fmt_scale_b, reuseA=reuse_a, reuseB=reuse_b, loc=loc, ip=ip).result

@_ods_cext.register_operation(_Dialect)
class wmma_scale_f32_32x16x128_f4(_ods_ir.OpView):
  r"""
  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 :
    (vector<8xi32>, vector<8xi32>, vector<8xf32>, i32, i32) -> vector<8xf32>
  ```
  """

  OPERATION_NAME = "rocdl.wmma.scale.f32.32x16x128.f4"

  _ODS_REGIONS = (0, True)

  def __init__(self, res: _ods_ir.Type, a: _ods_ir.Value, b: _ods_ir.Value, c: _ods_ir.Value, scaleA: _ods_ir.Value[_ods_ir.IntegerType], scaleB: _ods_ir.Value[_ods_ir.IntegerType], *, modC: _Optional[_Union[int, _ods_ir.IntegerAttr]] = None, scaleAType: _Optional[_Union[int, _ods_ir.IntegerAttr]] = None, fmtScaleA: _Optional[_Union[int, _ods_ir.IntegerAttr]] = None, scaleBType: _Optional[_Union[int, _ods_ir.IntegerAttr]] = None, fmtScaleB: _Optional[_Union[int, _ods_ir.IntegerAttr]] = None, reuseA: _Optional[_Union[bool, _ods_ir.BoolAttr]] = None, reuseB: _Optional[_Union[bool, _ods_ir.BoolAttr]] = None, loc: _Optional[_ods_ir.Location] = None, ip: _Optional[_ods_ir.InsertionPoint] = None):
    operands = []
    attributes = {}
    regions = None
    operands.append(a)
    operands.append(b)
    operands.append(c)
    operands.append(scaleA)
    operands.append(scaleB)
    _ods_context = _ods_get_default_loc_context(loc)
    if modC is not None: attributes["modC"] = (modC if (
        isinstance(modC, _ods_ir.Attribute) or
        not _ods_ir.AttrBuilder.contains('I16Attr')) else
          _ods_ir.AttrBuilder.get('I16Attr')(modC, context=_ods_context))
    if scaleAType is not None: attributes["scaleAType"] = (scaleAType if (
        isinstance(scaleAType, _ods_ir.Attribute) or
        not _ods_ir.AttrBuilder.contains('I32Attr')) else
          _ods_ir.AttrBuilder.get('I32Attr')(scaleAType, context=_ods_context))
    if fmtScaleA is not None: attributes["fmtScaleA"] = (fmtScaleA if (
        isinstance(fmtScaleA, _ods_ir.Attribute) or
        not _ods_ir.AttrBuilder.contains('I32Attr')) else
          _ods_ir.AttrBuilder.get('I32Attr')(fmtScaleA, context=_ods_context))
    if scaleBType is not None: attributes["scaleBType"] = (scaleBType if (
        isinstance(scaleBType, _ods_ir.Attribute) or
        not _ods_ir.AttrBuilder.contains('I32Attr')) else
          _ods_ir.AttrBuilder.get('I32Attr')(scaleBType, context=_ods_context))
    if fmtScaleB is not None: attributes["fmtScaleB"] = (fmtScaleB if (
        isinstance(fmtScaleB, _ods_ir.Attribute) or
        not _ods_ir.AttrBuilder.contains('I32Attr')) else
          _ods_ir.AttrBuilder.get('I32Attr')(fmtScaleB, context=_ods_context))
    if reuseA is not None: attributes["reuseA"] = (reuseA if (
        isinstance(reuseA, _ods_ir.Attribute) or
        not _ods_ir.AttrBuilder.contains('I1Attr')) else
          _ods_ir.AttrBuilder.get('I1Attr')(reuseA, context=_ods_context))
    if reuseB is not None: attributes["reuseB"] = (reuseB if (
        isinstance(reuseB, _ods_ir.Attribute) or
        not _ods_ir.AttrBuilder.contains('I1Attr')) else
          _ods_ir.AttrBuilder.get('I1Attr')(reuseB, context=_ods_context))
    results = []
    results.append(res)
    _ods_successors = None
    super().__init__(self.OPERATION_NAME, self._ODS_REGIONS, self._ODS_OPERAND_SEGMENTS, self._ODS_RESULT_SEGMENTS, attributes=attributes, results=results, operands=operands, successors=_ods_successors, regions=regions, loc=loc, ip=ip)

  @builtins.property
  def a(self) -> _ods_ir.Value:
    return self.operation.operands[0]

  @builtins.property
  def b(self) -> _ods_ir.Value:
    return self.operation.operands[1]

  @builtins.property
  def c(self) -> _ods_ir.Value:
    return self.operation.operands[2]

  @builtins.property
  def scaleA(self) -> _ods_ir.Value[_ods_ir.IntegerType]:
    return self.operation.operands[3]

  @builtins.property
  def scaleB(self) -> _ods_ir.Value[_ods_ir.IntegerType]:
    return self.operation.operands[4]

  @builtins.property
  def modC(self) -> _ods_ir.IntegerAttr:
    return self.operation.attributes["modC"]

  @modC.setter
  def modC(self, value: _ods_ir.IntegerAttr):
    if value is None:
      raise ValueError("'None' not allowed as value for mandatory attributes")
    self.operation.attributes["modC"] = value

  @builtins.property
  def scaleAType(self) -> _ods_ir.IntegerAttr:
    return self.operation.attributes["scaleAType"]

  @scaleAType.setter
  def scaleAType(self, value: _ods_ir.IntegerAttr):
    if value is None:
      raise ValueError("'None' not allowed as value for mandatory attributes")
    self.operation.attributes["scaleAType"] = value

  @builtins.property
  def fmtScaleA(self) -> _ods_ir.IntegerAttr:
    return self.operation.attributes["fmtScaleA"]

  @fmtScaleA.setter
  def fmtScaleA(self, value: _ods_ir.IntegerAttr):
    if value is None:
      raise ValueError("'None' not allowed as value for mandatory attributes")
    self.operation.attributes["fmtScaleA"] = value

  @builtins.property
  def scaleBType(self) -> _ods_ir.IntegerAttr:
    return self.operation.attributes["scaleBType"]

  @scaleBType.setter
  def scaleBType(self, value: _ods_ir.IntegerAttr):
    if value is None:
      raise ValueError("'None' not allowed as value for mandatory attributes")
    self.operation.attributes["scaleBType"] = value

  @builtins.property
  def fmtScaleB(self) -> _ods_ir.IntegerAttr:
    return self.operation.attributes["fmtScaleB"]

  @fmtScaleB.setter
  def fmtScaleB(self, value: _ods_ir.IntegerAttr):
    if value is None:
      raise ValueError("'None' not allowed as value for mandatory attributes")
    self.operation.attributes["fmtScaleB"] = value

  @builtins.property
  def reuseA(self) -> _ods_ir.BoolAttr:
    return self.operation.attributes["reuseA"]

  @reuseA.setter
  def reuseA(self, value: _ods_ir.BoolAttr):
    if value is None:
      raise ValueError("'None' not allowed as value for mandatory attributes")
    self.operation.attributes["reuseA"] = value

  @builtins.property
  def reuseB(self) -> _ods_ir.BoolAttr:
    return self.operation.attributes["reuseB"]

  @reuseB.setter
  def reuseB(self, value: _ods_ir.BoolAttr):
    if value is None:
      raise ValueError("'None' not allowed as value for mandatory attributes")
    self.operation.attributes["reuseB"] = value

  @builtins.property
  def res(self) -> _ods_ir.OpResult:
    return self.operation.results[0]

@_ods_cext.register_op_adaptor(wmma_scale_f32_32x16x128_f4)
class wmma_scale_f32_32x16x128_f4Adaptor(_ods_ir.OpAdaptor):
  OPERATION_NAME = "rocdl.wmma.scale.f32.32x16x128.f4"

  @builtins.property
  def a(self) -> _ods_ir.Value:
    return self.operands[0]

  @builtins.property
  def b(self) -> _ods_ir.Value:
    return self.operands[1]

  @builtins.property
  def c(self) -> _ods_ir.Value:
    return self.operands[2]

  @builtins.property
  def scaleA(self) -> _ods_ir.Value[_ods_ir.IntegerType]:
    return self.operands[3]

  @builtins.property
  def scaleB(self) -> _ods_ir.Value[_ods_ir.IntegerType]:
    return self.operands[4]

  @builtins.property
  def modC(self) -> _ods_ir.IntegerAttr:
    return self.attributes["modC"]

  @builtins.property
  def scaleAType(self) -> _ods_ir.IntegerAttr:
    return self.attributes["scaleAType"]

  @builtins.property
  def fmtScaleA(self) -> _ods_ir.IntegerAttr:
    return self.attributes["fmtScaleA"]

  @builtins.property
  def scaleBType(self) -> _ods_ir.IntegerAttr:
    return self.attributes["scaleBType"]

  @builtins.property
  def fmtScaleB(self) -> _ods_ir.IntegerAttr:
    return self.attributes["fmtScaleB"]

  @builtins.property
  def reuseA(self) -> _ods_ir.BoolAttr:
    return self.attributes["reuseA"]

  @builtins.property
  def reuseB(self) -> _ods_ir.BoolAttr:
    return self.attributes["reuseB"]

def wmma_scale_f32_32x16x128_f4_(res: _ods_ir.Type, a: _ods_ir.Value, b: _ods_ir.Value, c: _ods_ir.Value, scale_a: _ods_ir.Value[_ods_ir.IntegerType], scale_b: _ods_ir.Value[_ods_ir.IntegerType], *, mod_c: _Optional[_Union[int, _ods_ir.IntegerAttr]] = None, scale_a_type: _Optional[_Union[int, _ods_ir.IntegerAttr]] = None, fmt_scale_a: _Optional[_Union[int, _ods_ir.IntegerAttr]] = None, scale_b_type: _Optional[_Union[int, _ods_ir.IntegerAttr]] = None, fmt_scale_b: _Optional[_Union[int, _ods_ir.IntegerAttr]] = None, reuse_a: _Optional[_Union[bool, _ods_ir.BoolAttr]] = None, reuse_b: _Optional[_Union[bool, _ods_ir.BoolAttr]] = None, loc: _Optional[_ods_ir.Location] = None, ip: _Optional[_ods_ir.InsertionPoint] = None) -> _ods_ir.OpResult:
  return wmma_scale_f32_32x16x128_f4(res=res, a=a, b=b, c=c, scaleA=scale_a, scaleB=scale_b, modC=mod_c, scaleAType=scale_a_type, fmtScaleA=fmt_scale_a, scaleBType=scale_b_type, fmtScaleB=fmt_scale_b, reuseA=reuse_a, reuseB=reuse_b, loc=loc, ip=ip).result
