
# 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 = "llvm"

@_ods_cext.register_operation(_Dialect)
class ACosOp(_ods_ir.OpView):
  OPERATION_NAME = "llvm.intr.acos"

  _ODS_REGIONS = (0, True)

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

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

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

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

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

@_ods_cext.register_op_adaptor(ACosOp)
class ACosOpAdaptor(_ods_ir.OpAdaptor):
  OPERATION_NAME = "llvm.intr.acos"

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

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

def intr_acos(in_: _ods_ir.Value, *, fastmath_flags: _Optional[_Union[_Any, _ods_ir.Attribute]] = None, results: _Optional[_Sequence[_ods_ir.Type]] = None, loc: _Optional[_ods_ir.Location] = None, ip: _Optional[_ods_ir.InsertionPoint] = None) -> _ods_ir.OpResult:
  return ACosOp(in_=in_, fastmathFlags=fastmath_flags, results=results, loc=loc, ip=ip).result

@_ods_cext.register_operation(_Dialect)
class AShrOp(_ods_ir.OpView):
  OPERATION_NAME = "llvm.ashr"

  _ODS_REGIONS = (0, True)

  def __init__(self, lhs: _ods_ir.Value, rhs: _ods_ir.Value, *, isExact: _Optional[bool] = None, results: _Optional[_Sequence[_ods_ir.Type]] = None, loc: _Optional[_ods_ir.Location] = None, ip: _Optional[_ods_ir.InsertionPoint] = None):
    operands = []
    attributes = {}
    regions = None
    operands.append(lhs)
    operands.append(rhs)
    _ods_context = _ods_get_default_loc_context(loc)
    if bool(isExact): attributes["isExact"] = _ods_ir.UnitAttr.get(
      _ods_get_default_loc_context(loc))
    if results is None: results = [operands[0].type] * 1
    _ods_successors = None
    super().__init__(self.OPERATION_NAME, self._ODS_REGIONS, self._ODS_OPERAND_SEGMENTS, self._ODS_RESULT_SEGMENTS, attributes=attributes, results=results, operands=operands, successors=_ods_successors, regions=regions, loc=loc, ip=ip)

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

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

  @builtins.property
  def isExact(self) -> bool:
    return "isExact" in self.operation.attributes

  @isExact.setter
  def isExact(self, value):
    if bool(value):
      self.operation.attributes["isExact"] = _ods_ir.UnitAttr.get()
    elif "isExact" in self.operation.attributes:
      del self.operation.attributes["isExact"]

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

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

@_ods_cext.register_op_adaptor(AShrOp)
class AShrOpAdaptor(_ods_ir.OpAdaptor):
  OPERATION_NAME = "llvm.ashr"

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

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

  @builtins.property
  def isExact(self) -> bool:
    return "isExact" in self.attributes

def ashr(lhs: _ods_ir.Value, rhs: _ods_ir.Value, *, is_exact: _Optional[bool] = None, results: _Optional[_Sequence[_ods_ir.Type]] = None, loc: _Optional[_ods_ir.Location] = None, ip: _Optional[_ods_ir.InsertionPoint] = None) -> _ods_ir.OpResult:
  return AShrOp(lhs=lhs, rhs=rhs, isExact=is_exact, results=results, loc=loc, ip=ip).result

@_ods_cext.register_operation(_Dialect)
class ASinOp(_ods_ir.OpView):
  OPERATION_NAME = "llvm.intr.asin"

  _ODS_REGIONS = (0, True)

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

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

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

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

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

@_ods_cext.register_op_adaptor(ASinOp)
class ASinOpAdaptor(_ods_ir.OpAdaptor):
  OPERATION_NAME = "llvm.intr.asin"

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

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

def intr_asin(in_: _ods_ir.Value, *, fastmath_flags: _Optional[_Union[_Any, _ods_ir.Attribute]] = None, results: _Optional[_Sequence[_ods_ir.Type]] = None, loc: _Optional[_ods_ir.Location] = None, ip: _Optional[_ods_ir.InsertionPoint] = None) -> _ods_ir.OpResult:
  return ASinOp(in_=in_, fastmathFlags=fastmath_flags, results=results, loc=loc, ip=ip).result

@_ods_cext.register_operation(_Dialect)
class ATan2Op(_ods_ir.OpView):
  OPERATION_NAME = "llvm.intr.atan2"

  _ODS_REGIONS = (0, True)

  def __init__(self, a: _ods_ir.Value, b: _ods_ir.Value, *, fastmathFlags: _Optional[_Union[_Any, _ods_ir.Attribute]] = None, results: _Optional[_Sequence[_ods_ir.Type]] = None, loc: _Optional[_ods_ir.Location] = None, ip: _Optional[_ods_ir.InsertionPoint] = None):
    operands = []
    attributes = {}
    regions = None
    operands.append(a)
    operands.append(b)
    _ods_context = _ods_get_default_loc_context(loc)
    if fastmathFlags is not None: attributes["fastmathFlags"] = (fastmathFlags if (
        isinstance(fastmathFlags, _ods_ir.Attribute) or
        not _ods_ir.AttrBuilder.contains('llvm.LLVM_FastmathFlagsAttr')) else
          _ods_ir.AttrBuilder.get('llvm.LLVM_FastmathFlagsAttr')(fastmathFlags, context=_ods_context))
    if results is None: results = [operands[0].type] * 1
    _ods_successors = None
    super().__init__(self.OPERATION_NAME, self._ODS_REGIONS, self._ODS_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 fastmathFlags(self) -> _ods_ir.Attribute:
    return self.operation.attributes["fastmathFlags"]

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

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

@_ods_cext.register_op_adaptor(ATan2Op)
class ATan2OpAdaptor(_ods_ir.OpAdaptor):
  OPERATION_NAME = "llvm.intr.atan2"

  @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 fastmathFlags(self) -> _ods_ir.Attribute:
    return self.attributes["fastmathFlags"]

def intr_atan2(a: _ods_ir.Value, b: _ods_ir.Value, *, fastmath_flags: _Optional[_Union[_Any, _ods_ir.Attribute]] = None, results: _Optional[_Sequence[_ods_ir.Type]] = None, loc: _Optional[_ods_ir.Location] = None, ip: _Optional[_ods_ir.InsertionPoint] = None) -> _ods_ir.OpResult:
  return ATan2Op(a=a, b=b, fastmathFlags=fastmath_flags, results=results, loc=loc, ip=ip).result

@_ods_cext.register_operation(_Dialect)
class ATanOp(_ods_ir.OpView):
  OPERATION_NAME = "llvm.intr.atan"

  _ODS_REGIONS = (0, True)

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

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

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

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

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

@_ods_cext.register_op_adaptor(ATanOp)
class ATanOpAdaptor(_ods_ir.OpAdaptor):
  OPERATION_NAME = "llvm.intr.atan"

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

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

def intr_atan(in_: _ods_ir.Value, *, fastmath_flags: _Optional[_Union[_Any, _ods_ir.Attribute]] = None, results: _Optional[_Sequence[_ods_ir.Type]] = None, loc: _Optional[_ods_ir.Location] = None, ip: _Optional[_ods_ir.InsertionPoint] = None) -> _ods_ir.OpResult:
  return ATanOp(in_=in_, fastmathFlags=fastmath_flags, results=results, loc=loc, ip=ip).result

@_ods_cext.register_operation(_Dialect)
class AbsOp(_ods_ir.OpView):
  OPERATION_NAME = "llvm.intr.abs"

  _ODS_REGIONS = (0, True)

  def __init__(self, res: _ods_ir.Type, in_: _ods_ir.Value, is_int_min_poison: _Union[bool, _ods_ir.BoolAttr], *, loc: _Optional[_ods_ir.Location] = None, ip: _Optional[_ods_ir.InsertionPoint] = None):
    operands = []
    attributes = {}
    regions = None
    operands.append(in_)
    _ods_context = _ods_get_default_loc_context(loc)
    attributes["is_int_min_poison"] = (is_int_min_poison if (
    isinstance(is_int_min_poison, _ods_ir.Attribute) or
    not _ods_ir.AttrBuilder.contains('I1Attr')) else
      _ods_ir.AttrBuilder.get('I1Attr')(is_int_min_poison, 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 in_(self) -> _ods_ir.Value:
    return self.operation.operands[0]

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

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

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

@_ods_cext.register_op_adaptor(AbsOp)
class AbsOpAdaptor(_ods_ir.OpAdaptor):
  OPERATION_NAME = "llvm.intr.abs"

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

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

def intr_abs(res: _ods_ir.Type, in_: _ods_ir.Value, is_int_min_poison: _Union[bool, _ods_ir.BoolAttr], *, loc: _Optional[_ods_ir.Location] = None, ip: _Optional[_ods_ir.InsertionPoint] = None) -> _ods_ir.OpResult:
  return AbsOp(res=res, in_=in_, is_int_min_poison=is_int_min_poison, loc=loc, ip=ip).result

@_ods_cext.register_operation(_Dialect)
class AddOp(_ods_ir.OpView):
  OPERATION_NAME = "llvm.add"

  _ODS_REGIONS = (0, True)

  def __init__(self, lhs: _ods_ir.Value, rhs: _ods_ir.Value, overflowFlags, *, results: _Optional[_Sequence[_ods_ir.Type]] = None, loc: _Optional[_ods_ir.Location] = None, ip: _Optional[_ods_ir.InsertionPoint] = None):
    operands = []
    attributes = {}
    regions = None
    operands.append(lhs)
    operands.append(rhs)
    _ods_context = _ods_get_default_loc_context(loc)
    if results is None: results = [operands[0].type] * 1
    _ods_successors = None
    super().__init__(self.OPERATION_NAME, self._ODS_REGIONS, self._ODS_OPERAND_SEGMENTS, self._ODS_RESULT_SEGMENTS, attributes=attributes, results=results, operands=operands, successors=_ods_successors, regions=regions, loc=loc, ip=ip)

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

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

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

@_ods_cext.register_op_adaptor(AddOp)
class AddOpAdaptor(_ods_ir.OpAdaptor):
  OPERATION_NAME = "llvm.add"

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

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

def add(lhs: _ods_ir.Value, rhs: _ods_ir.Value, overflow_flags, *, results: _Optional[_Sequence[_ods_ir.Type]] = None, loc: _Optional[_ods_ir.Location] = None, ip: _Optional[_ods_ir.InsertionPoint] = None) -> _ods_ir.OpResult:
  return AddOp(lhs=lhs, rhs=rhs, overflowFlags=overflow_flags, results=results, loc=loc, ip=ip).result

@_ods_cext.register_operation(_Dialect)
class AddrSpaceCastOp(_ods_ir.OpView):
  OPERATION_NAME = "llvm.addrspacecast"

  _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(AddrSpaceCastOp)
class AddrSpaceCastOpAdaptor(_ods_ir.OpAdaptor):
  OPERATION_NAME = "llvm.addrspacecast"

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

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

@_ods_cext.register_operation(_Dialect)
class AddressOfOp(_ods_ir.OpView):
  r"""
  Creates an SSA value containing a pointer to a global value (function,
  variable or alias). The global value can be defined after its first
  referenced. If the global value is a constant, storing into it is not
  allowed.
  
  Examples:
  
  ```mlir
  func @foo() {
    // Get the address of a global variable.
    %0 = llvm.mlir.addressof @const : !llvm.ptr
  
    // Use it as a regular pointer.
    %1 = llvm.load %0 : !llvm.ptr -> i32
  
    // Get the address of a function.
    %2 = llvm.mlir.addressof @foo : !llvm.ptr
  
    // The function address can be used for indirect calls.
    llvm.call %2() : !llvm.ptr, () -> ()
  
    // Get the address of an aliased global.
    %3 = llvm.mlir.addressof @const_alias : !llvm.ptr
  }
  
  // Define the global.
  llvm.mlir.global @const(42 : i32) : i32
  
  // Define an alias.
  llvm.mlir.alias @const_alias : i32 {
    %0 = llvm.mlir.addressof @const : !llvm.ptr
    llvm.return %0 : !llvm.ptr
  }
  ```
  """

  OPERATION_NAME = "llvm.mlir.addressof"

  _ODS_REGIONS = (0, True)

  def __init__(self, res: _ods_ir.Type, global_name: _Union[str, _ods_ir.FlatSymbolRefAttr], *, 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["global_name"] = (global_name if (
    isinstance(global_name, _ods_ir.Attribute) or
    not _ods_ir.AttrBuilder.contains('FlatSymbolRefAttr')) else
      _ods_ir.AttrBuilder.get('FlatSymbolRefAttr')(global_name, 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 global_name(self) -> _ods_ir.FlatSymbolRefAttr:
    return self.operation.attributes["global_name"]

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

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

@_ods_cext.register_op_adaptor(AddressOfOp)
class AddressOfOpAdaptor(_ods_ir.OpAdaptor):
  OPERATION_NAME = "llvm.mlir.addressof"

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

def mlir_addressof(res: _ods_ir.Type, global_name: _Union[str, _ods_ir.FlatSymbolRefAttr], *, loc: _Optional[_ods_ir.Location] = None, ip: _Optional[_ods_ir.InsertionPoint] = None) -> _ods_ir.OpResult:
  return AddressOfOp(res=res, global_name=global_name, loc=loc, ip=ip).result

@_ods_cext.register_operation(_Dialect)
class AliasOp(_ods_ir.OpView):
  r"""
  `llvm.mlir.alias` is a top level operation that defines a global alias for
  global variables and functions. The operation is always initialized by
  using a initializer region which could be a direct map to another global
  value or contain some address computation on top of it.
  
  It uses a symbol for its value, which will be uniqued by the module
  with respect to other symbols in it.
  
  Similarly to functions and globals, they can also have a linkage attribute.
  This attribute is placed between `llvm.mlir.alias` and the symbol name. If
  the attribute is omitted, `external` linkage is assumed by default.
  
  Examples:
  
  ```mlir
  // Global alias use @-identifiers.
  llvm.mlir.alias external @foo_alias {addr_space = 0 : i32} : !llvm.ptr {
    %0 = llvm.mlir.addressof @some_function : !llvm.ptr
    llvm.return %0 : !llvm.ptr
  }
  
  // More complex initialization.
  llvm.mlir.alias linkonce_odr hidden @glob
  {addr_space = 0 : i32, dso_local} : !llvm.array<32 x i32> {
    %0 = llvm.mlir.constant(1234 : i64) : i64
    %1 = llvm.mlir.addressof @glob.private : !llvm.ptr
    %2 = llvm.ptrtoint %1 : !llvm.ptr to i64
    %3 = llvm.add %2, %0 : i64
    %4 = llvm.inttoptr %3 : i64 to !llvm.ptr
    llvm.return %4 : !llvm.ptr
  }
  ```
  """

  OPERATION_NAME = "llvm.mlir.alias"

  _ODS_REGIONS = (1, True)

  def __init__(self, alias_type: _Union[_ods_ir.Type, _ods_ir.TypeAttr], sym_name: _Union[str, _ods_ir.StringAttr], linkage: _Union[_Any, _ods_ir.Attribute], *, dso_local: _Optional[bool] = None, thread_local_: _Optional[bool] = None, unnamed_addr: _Optional[_Union[_Any, _ods_ir.Attribute]] = None, visibility_: _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)
    attributes["alias_type"] = (alias_type if (
    isinstance(alias_type, _ods_ir.Attribute) or
    not _ods_ir.AttrBuilder.contains('TypeAttr')) else
      _ods_ir.AttrBuilder.get('TypeAttr')(alias_type, context=_ods_context))
    attributes["sym_name"] = (sym_name if (
    isinstance(sym_name, _ods_ir.Attribute) or
    not _ods_ir.AttrBuilder.contains('StrAttr')) else
      _ods_ir.AttrBuilder.get('StrAttr')(sym_name, context=_ods_context))
    attributes["linkage"] = (linkage if (
    isinstance(linkage, _ods_ir.Attribute) or
    not _ods_ir.AttrBuilder.contains('Linkage')) else
      _ods_ir.AttrBuilder.get('Linkage')(linkage, context=_ods_context))
    if bool(dso_local): attributes["dso_local"] = _ods_ir.UnitAttr.get(
      _ods_get_default_loc_context(loc))
    if bool(thread_local_): attributes["thread_local_"] = _ods_ir.UnitAttr.get(
      _ods_get_default_loc_context(loc))
    if unnamed_addr is not None: attributes["unnamed_addr"] = (unnamed_addr if (
        isinstance(unnamed_addr, _ods_ir.Attribute) or
        not _ods_ir.AttrBuilder.contains('UnnamedAddr')) else
          _ods_ir.AttrBuilder.get('UnnamedAddr')(unnamed_addr, context=_ods_context))
    if visibility_ is not None: attributes["visibility_"] = (visibility_ if (
        isinstance(visibility_, _ods_ir.Attribute) or
        not _ods_ir.AttrBuilder.contains('Visibility')) else
          _ods_ir.AttrBuilder.get('Visibility')(visibility_, 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 alias_type(self) -> _ods_ir.TypeAttr:
    return self.operation.attributes["alias_type"]

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

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

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

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

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

  @builtins.property
  def dso_local(self) -> bool:
    return "dso_local" in self.operation.attributes

  @dso_local.setter
  def dso_local(self, value):
    if bool(value):
      self.operation.attributes["dso_local"] = _ods_ir.UnitAttr.get()
    elif "dso_local" in self.operation.attributes:
      del self.operation.attributes["dso_local"]

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

  @builtins.property
  def thread_local_(self) -> bool:
    return "thread_local_" in self.operation.attributes

  @thread_local_.setter
  def thread_local_(self, value):
    if bool(value):
      self.operation.attributes["thread_local_"] = _ods_ir.UnitAttr.get()
    elif "thread_local_" in self.operation.attributes:
      del self.operation.attributes["thread_local_"]

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

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

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

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

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

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

  @builtins.property
  def initializer(self) -> _ods_ir.Region:
    return self.regions[0]

@_ods_cext.register_op_adaptor(AliasOp)
class AliasOpAdaptor(_ods_ir.OpAdaptor):
  OPERATION_NAME = "llvm.mlir.alias"

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

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

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

  @builtins.property
  def dso_local(self) -> bool:
    return "dso_local" in self.attributes

  @builtins.property
  def thread_local_(self) -> bool:
    return "thread_local_" in self.attributes

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

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

def mlir_alias(alias_type: _Union[_ods_ir.Type, _ods_ir.TypeAttr], sym_name: _Union[str, _ods_ir.StringAttr], linkage: _Union[_Any, _ods_ir.Attribute], *, dso_local: _Optional[bool] = None, thread_local_: _Optional[bool] = None, unnamed_addr: _Optional[_Union[_Any, _ods_ir.Attribute]] = None, visibility_: _Optional[_Union[_Any, _ods_ir.Attribute]] = None, loc: _Optional[_ods_ir.Location] = None, ip: _Optional[_ods_ir.InsertionPoint] = None) -> AliasOp:
  return AliasOp(alias_type=alias_type, sym_name=sym_name, linkage=linkage, dso_local=dso_local, thread_local_=thread_local_, unnamed_addr=unnamed_addr, visibility_=visibility_, loc=loc, ip=ip)

@_ods_cext.register_operation(_Dialect)
class AllocaOp(_ods_ir.OpView):
  OPERATION_NAME = "llvm.alloca"

  _ODS_REGIONS = (0, True)

  def __init__(self, res: _ods_ir.Type, arraySize: _ods_ir.Value[_ods_ir.IntegerType], elem_type: _Union[_ods_ir.Type, _ods_ir.TypeAttr], *, alignment: _Optional[_Union[int, _ods_ir.IntegerAttr]] = None, inalloca: _Optional[bool] = None, loc: _Optional[_ods_ir.Location] = None, ip: _Optional[_ods_ir.InsertionPoint] = None):
    operands = []
    attributes = {}
    regions = None
    operands.append(arraySize)
    _ods_context = _ods_get_default_loc_context(loc)
    if alignment is not None: attributes["alignment"] = (alignment if (
        isinstance(alignment, _ods_ir.Attribute) or
        not _ods_ir.AttrBuilder.contains('I64Attr')) else
          _ods_ir.AttrBuilder.get('I64Attr')(alignment, context=_ods_context))
    attributes["elem_type"] = (elem_type if (
    isinstance(elem_type, _ods_ir.Attribute) or
    not _ods_ir.AttrBuilder.contains('TypeAttr')) else
      _ods_ir.AttrBuilder.get('TypeAttr')(elem_type, context=_ods_context))
    if bool(inalloca): attributes["inalloca"] = _ods_ir.UnitAttr.get(
      _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 arraySize(self) -> _ods_ir.Value[_ods_ir.IntegerType]:
    return self.operation.operands[0]

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

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

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

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

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

  @builtins.property
  def inalloca(self) -> bool:
    return "inalloca" in self.operation.attributes

  @inalloca.setter
  def inalloca(self, value):
    if bool(value):
      self.operation.attributes["inalloca"] = _ods_ir.UnitAttr.get()
    elif "inalloca" in self.operation.attributes:
      del self.operation.attributes["inalloca"]

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

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

@_ods_cext.register_op_adaptor(AllocaOp)
class AllocaOpAdaptor(_ods_ir.OpAdaptor):
  OPERATION_NAME = "llvm.alloca"

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

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

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

  @builtins.property
  def inalloca(self) -> bool:
    return "inalloca" in self.attributes

def alloca(res: _ods_ir.Type, array_size: _ods_ir.Value[_ods_ir.IntegerType], elem_type: _Union[_ods_ir.Type, _ods_ir.TypeAttr], *, alignment: _Optional[_Union[int, _ods_ir.IntegerAttr]] = None, inalloca: _Optional[bool] = None, loc: _Optional[_ods_ir.Location] = None, ip: _Optional[_ods_ir.InsertionPoint] = None) -> _ods_ir.OpResult:
  return AllocaOp(res=res, arraySize=array_size, elem_type=elem_type, alignment=alignment, inalloca=inalloca, loc=loc, ip=ip).result

@_ods_cext.register_operation(_Dialect)
class AndOp(_ods_ir.OpView):
  OPERATION_NAME = "llvm.and"

  _ODS_REGIONS = (0, True)

  def __init__(self, lhs: _ods_ir.Value, rhs: _ods_ir.Value, *, results: _Optional[_Sequence[_ods_ir.Type]] = None, loc: _Optional[_ods_ir.Location] = None, ip: _Optional[_ods_ir.InsertionPoint] = None):
    operands = []
    attributes = {}
    regions = None
    operands.append(lhs)
    operands.append(rhs)
    _ods_context = _ods_get_default_loc_context(loc)
    if results is None: results = [operands[0].type] * 1
    _ods_successors = None
    super().__init__(self.OPERATION_NAME, self._ODS_REGIONS, self._ODS_OPERAND_SEGMENTS, self._ODS_RESULT_SEGMENTS, attributes=attributes, results=results, operands=operands, successors=_ods_successors, regions=regions, loc=loc, ip=ip)

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

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

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

@_ods_cext.register_op_adaptor(AndOp)
class AndOpAdaptor(_ods_ir.OpAdaptor):
  OPERATION_NAME = "llvm.and"

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

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

def and_(lhs: _ods_ir.Value, rhs: _ods_ir.Value, *, results: _Optional[_Sequence[_ods_ir.Type]] = None, loc: _Optional[_ods_ir.Location] = None, ip: _Optional[_ods_ir.InsertionPoint] = None) -> _ods_ir.OpResult:
  return AndOp(lhs=lhs, rhs=rhs, results=results, loc=loc, ip=ip).result

@_ods_cext.register_operation(_Dialect)
class Annotation(_ods_ir.OpView):
  OPERATION_NAME = "llvm.intr.annotation"

  _ODS_REGIONS = (0, True)

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

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

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

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

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

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

@_ods_cext.register_op_adaptor(Annotation)
class AnnotationAdaptor(_ods_ir.OpAdaptor):
  OPERATION_NAME = "llvm.intr.annotation"

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

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

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

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

def intr_annotation(integer: _ods_ir.Value[_ods_ir.IntegerType], annotation: _ods_ir.Value, file_name: _ods_ir.Value, line: _ods_ir.Value[_ods_ir.IntegerType], *, results: _Optional[_Sequence[_ods_ir.Type]] = None, loc: _Optional[_ods_ir.Location] = None, ip: _Optional[_ods_ir.InsertionPoint] = None) -> _ods_ir.OpResult[_ods_ir.IntegerType]:
  return Annotation(integer=integer, annotation=annotation, fileName=file_name, line=line, results=results, loc=loc, ip=ip).result

@_ods_cext.register_operation(_Dialect)
class AssumeOp(_ods_ir.OpView):
  OPERATION_NAME = "llvm.intr.assume"

  _ODS_REGIONS = (0, True)

  def __init__(self, cond: _ods_ir.Value[_ods_ir.IntegerType], op_bundle_operands: _Sequence[_ods_ir.Value], op_bundle_sizes: _Union[_Sequence[int], _ods_ir.DenseI32ArrayAttr], *, op_bundle_tags: _Optional[_Union[_Sequence[_ods_ir.Attribute], _ods_ir.ArrayAttr]] = None, loc: _Optional[_ods_ir.Location] = None, ip: _Optional[_ods_ir.InsertionPoint] = None):
    operands = []
    attributes = {}
    regions = None
    operands.append(cond)
    operands.extend(_get_op_results_or_values(op_bundle_operands))
    _ods_context = _ods_get_default_loc_context(loc)
    attributes["op_bundle_sizes"] = (op_bundle_sizes if (
    isinstance(op_bundle_sizes, _ods_ir.Attribute) or
    not _ods_ir.AttrBuilder.contains('DenseI32ArrayAttr')) else
      _ods_ir.AttrBuilder.get('DenseI32ArrayAttr')(op_bundle_sizes, context=_ods_context))
    if op_bundle_tags is not None: attributes["op_bundle_tags"] = (op_bundle_tags if (
        isinstance(op_bundle_tags, _ods_ir.Attribute) or
        not _ods_ir.AttrBuilder.contains('ArrayAttr')) else
          _ods_ir.AttrBuilder.get('ArrayAttr')(op_bundle_tags, 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 cond(self) -> _ods_ir.Value[_ods_ir.IntegerType]:
    return self.operation.operands[0]

  @builtins.property
  def op_bundle_operands(self) -> _ods_ir.OpOperandList:
    _ods_variadic_group_length = len(self.operation.operands) - 2 + 1
    return self.operation.operands[1:1 + _ods_variadic_group_length]

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

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

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

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

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

@_ods_cext.register_op_adaptor(AssumeOp)
class AssumeOpAdaptor(_ods_ir.OpAdaptor):
  OPERATION_NAME = "llvm.intr.assume"

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

  @builtins.property
  def op_bundle_operands(self) -> _ods_ir.OpOperandList:
    _ods_variadic_group_length = len(self.operands) - 2 + 1
    return self.operands[1:1 + _ods_variadic_group_length]

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

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

def intr_assume(cond: _ods_ir.Value[_ods_ir.IntegerType], op_bundle_operands: _Sequence[_ods_ir.Value], op_bundle_sizes: _Union[_Sequence[int], _ods_ir.DenseI32ArrayAttr], *, op_bundle_tags: _Optional[_Union[_Sequence[_ods_ir.Attribute], _ods_ir.ArrayAttr]] = None, loc: _Optional[_ods_ir.Location] = None, ip: _Optional[_ods_ir.InsertionPoint] = None) -> AssumeOp:
  return AssumeOp(cond=cond, op_bundle_operands=op_bundle_operands, op_bundle_sizes=op_bundle_sizes, op_bundle_tags=op_bundle_tags, loc=loc, ip=ip)

@_ods_cext.register_operation(_Dialect)
class AtomicCmpXchgOp(_ods_ir.OpView):
  OPERATION_NAME = "llvm.cmpxchg"

  _ODS_REGIONS = (0, True)

  def __init__(self, ptr: _ods_ir.Value, cmp: _ods_ir.Value, val: _ods_ir.Value, success_ordering: _Union[_Any, _ods_ir.Attribute], failure_ordering: _Union[_Any, _ods_ir.Attribute], *, syncscope: _Optional[_Union[str, _ods_ir.StringAttr]] = None, alignment: _Optional[_Union[int, _ods_ir.IntegerAttr]] = None, weak: _Optional[bool] = None, volatile_: _Optional[bool] = None, access_groups: _Optional[_Union[_Any, _ods_ir.ArrayAttr]] = None, 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, results: _Optional[_Sequence[_ods_ir.Type]] = None, loc: _Optional[_ods_ir.Location] = None, ip: _Optional[_ods_ir.InsertionPoint] = None):
    operands = []
    attributes = {}
    regions = None
    operands.append(ptr)
    operands.append(cmp)
    operands.append(val)
    _ods_context = _ods_get_default_loc_context(loc)
    attributes["success_ordering"] = (success_ordering if (
    isinstance(success_ordering, _ods_ir.Attribute) or
    not _ods_ir.AttrBuilder.contains('AtomicOrdering')) else
      _ods_ir.AttrBuilder.get('AtomicOrdering')(success_ordering, context=_ods_context))
    attributes["failure_ordering"] = (failure_ordering if (
    isinstance(failure_ordering, _ods_ir.Attribute) or
    not _ods_ir.AttrBuilder.contains('AtomicOrdering')) else
      _ods_ir.AttrBuilder.get('AtomicOrdering')(failure_ordering, context=_ods_context))
    if syncscope is not None: attributes["syncscope"] = (syncscope if (
        isinstance(syncscope, _ods_ir.Attribute) or
        not _ods_ir.AttrBuilder.contains('StrAttr')) else
          _ods_ir.AttrBuilder.get('StrAttr')(syncscope, context=_ods_context))
    if alignment is not None: attributes["alignment"] = (alignment if (
        isinstance(alignment, _ods_ir.Attribute) or
        not _ods_ir.AttrBuilder.contains('I64Attr')) else
          _ods_ir.AttrBuilder.get('I64Attr')(alignment, context=_ods_context))
    if bool(weak): attributes["weak"] = _ods_ir.UnitAttr.get(
      _ods_get_default_loc_context(loc))
    if bool(volatile_): attributes["volatile_"] = _ods_ir.UnitAttr.get(
      _ods_get_default_loc_context(loc))
    if access_groups is not None: attributes["access_groups"] = (access_groups if (
        isinstance(access_groups, _ods_ir.Attribute) or
        not _ods_ir.AttrBuilder.contains('LLVM_AccessGroupArrayAttr')) else
          _ods_ir.AttrBuilder.get('LLVM_AccessGroupArrayAttr')(access_groups, 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))
    _ods_successors = None
    super().__init__(self.OPERATION_NAME, self._ODS_REGIONS, self._ODS_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 cmp(self) -> _ods_ir.Value:
    return self.operation.operands[1]

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

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

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

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

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

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

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

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

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

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

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

  @builtins.property
  def weak(self) -> bool:
    return "weak" in self.operation.attributes

  @weak.setter
  def weak(self, value):
    if bool(value):
      self.operation.attributes["weak"] = _ods_ir.UnitAttr.get()
    elif "weak" in self.operation.attributes:
      del self.operation.attributes["weak"]

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

  @builtins.property
  def volatile_(self) -> bool:
    return "volatile_" in self.operation.attributes

  @volatile_.setter
  def volatile_(self, value):
    if bool(value):
      self.operation.attributes["volatile_"] = _ods_ir.UnitAttr.get()
    elif "volatile_" in self.operation.attributes:
      del self.operation.attributes["volatile_"]

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

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

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

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

  @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(AtomicCmpXchgOp)
class AtomicCmpXchgOpAdaptor(_ods_ir.OpAdaptor):
  OPERATION_NAME = "llvm.cmpxchg"

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

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

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

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

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

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

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

  @builtins.property
  def weak(self) -> bool:
    return "weak" in self.attributes

  @builtins.property
  def volatile_(self) -> bool:
    return "volatile_" in self.attributes

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

  @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 cmpxchg(ptr: _ods_ir.Value, cmp: _ods_ir.Value, val: _ods_ir.Value, success_ordering: _Union[_Any, _ods_ir.Attribute], failure_ordering: _Union[_Any, _ods_ir.Attribute], *, syncscope: _Optional[_Union[str, _ods_ir.StringAttr]] = None, alignment: _Optional[_Union[int, _ods_ir.IntegerAttr]] = None, weak: _Optional[bool] = None, volatile_: _Optional[bool] = None, access_groups: _Optional[_Union[_Any, _ods_ir.ArrayAttr]] = None, 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, results: _Optional[_Sequence[_ods_ir.Type]] = None, loc: _Optional[_ods_ir.Location] = None, ip: _Optional[_ods_ir.InsertionPoint] = None) -> _ods_ir.OpResult:
  return AtomicCmpXchgOp(ptr=ptr, cmp=cmp, val=val, success_ordering=success_ordering, failure_ordering=failure_ordering, syncscope=syncscope, alignment=alignment, weak=weak, volatile_=volatile_, access_groups=access_groups, alias_scopes=alias_scopes, noalias_scopes=noalias_scopes, tbaa=tbaa, results=results, loc=loc, ip=ip).result

@_ods_cext.register_operation(_Dialect)
class AtomicRMWOp(_ods_ir.OpView):
  OPERATION_NAME = "llvm.atomicrmw"

  _ODS_REGIONS = (0, True)

  def __init__(self, bin_op: _Union[_Any, _ods_ir.Attribute], ptr: _ods_ir.Value, val: _ods_ir.Value, ordering: _Union[_Any, _ods_ir.Attribute], *, syncscope: _Optional[_Union[str, _ods_ir.StringAttr]] = None, alignment: _Optional[_Union[int, _ods_ir.IntegerAttr]] = None, volatile_: _Optional[bool] = None, access_groups: _Optional[_Union[_Any, _ods_ir.ArrayAttr]] = None, 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, results: _Optional[_Sequence[_ods_ir.Type]] = None, loc: _Optional[_ods_ir.Location] = None, ip: _Optional[_ods_ir.InsertionPoint] = None):
    operands = []
    attributes = {}
    regions = None
    operands.append(ptr)
    operands.append(val)
    _ods_context = _ods_get_default_loc_context(loc)
    attributes["bin_op"] = (bin_op if (
    isinstance(bin_op, _ods_ir.Attribute) or
    not _ods_ir.AttrBuilder.contains('AtomicBinOp')) else
      _ods_ir.AttrBuilder.get('AtomicBinOp')(bin_op, context=_ods_context))
    attributes["ordering"] = (ordering if (
    isinstance(ordering, _ods_ir.Attribute) or
    not _ods_ir.AttrBuilder.contains('AtomicOrdering')) else
      _ods_ir.AttrBuilder.get('AtomicOrdering')(ordering, context=_ods_context))
    if syncscope is not None: attributes["syncscope"] = (syncscope if (
        isinstance(syncscope, _ods_ir.Attribute) or
        not _ods_ir.AttrBuilder.contains('StrAttr')) else
          _ods_ir.AttrBuilder.get('StrAttr')(syncscope, context=_ods_context))
    if alignment is not None: attributes["alignment"] = (alignment if (
        isinstance(alignment, _ods_ir.Attribute) or
        not _ods_ir.AttrBuilder.contains('I64Attr')) else
          _ods_ir.AttrBuilder.get('I64Attr')(alignment, context=_ods_context))
    if bool(volatile_): attributes["volatile_"] = _ods_ir.UnitAttr.get(
      _ods_get_default_loc_context(loc))
    if access_groups is not None: attributes["access_groups"] = (access_groups if (
        isinstance(access_groups, _ods_ir.Attribute) or
        not _ods_ir.AttrBuilder.contains('LLVM_AccessGroupArrayAttr')) else
          _ods_ir.AttrBuilder.get('LLVM_AccessGroupArrayAttr')(access_groups, 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))
    _ods_successors = None
    super().__init__(self.OPERATION_NAME, self._ODS_REGIONS, self._ODS_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 val(self) -> _ods_ir.Value:
    return self.operation.operands[1]

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

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

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

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

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

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

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

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

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

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

  @builtins.property
  def volatile_(self) -> bool:
    return "volatile_" in self.operation.attributes

  @volatile_.setter
  def volatile_(self, value):
    if bool(value):
      self.operation.attributes["volatile_"] = _ods_ir.UnitAttr.get()
    elif "volatile_" in self.operation.attributes:
      del self.operation.attributes["volatile_"]

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

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

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

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

  @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(AtomicRMWOp)
class AtomicRMWOpAdaptor(_ods_ir.OpAdaptor):
  OPERATION_NAME = "llvm.atomicrmw"

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

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

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

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

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

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

  @builtins.property
  def volatile_(self) -> bool:
    return "volatile_" in self.attributes

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

  @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 atomicrmw(bin_op: _Union[_Any, _ods_ir.Attribute], ptr: _ods_ir.Value, val: _ods_ir.Value, ordering: _Union[_Any, _ods_ir.Attribute], *, syncscope: _Optional[_Union[str, _ods_ir.StringAttr]] = None, alignment: _Optional[_Union[int, _ods_ir.IntegerAttr]] = None, volatile_: _Optional[bool] = None, access_groups: _Optional[_Union[_Any, _ods_ir.ArrayAttr]] = None, 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, results: _Optional[_Sequence[_ods_ir.Type]] = None, loc: _Optional[_ods_ir.Location] = None, ip: _Optional[_ods_ir.InsertionPoint] = None) -> _ods_ir.OpResult:
  return AtomicRMWOp(bin_op=bin_op, ptr=ptr, val=val, ordering=ordering, syncscope=syncscope, alignment=alignment, volatile_=volatile_, access_groups=access_groups, alias_scopes=alias_scopes, noalias_scopes=noalias_scopes, tbaa=tbaa, results=results, loc=loc, ip=ip).result

@_ods_cext.register_operation(_Dialect)
class BitReverseOp(_ods_ir.OpView):
  OPERATION_NAME = "llvm.intr.bitreverse"

  _ODS_REGIONS = (0, True)

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

  @builtins.property
  def in_(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(BitReverseOp)
class BitReverseOpAdaptor(_ods_ir.OpAdaptor):
  OPERATION_NAME = "llvm.intr.bitreverse"

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

def intr_bitreverse(in_: _ods_ir.Value, *, results: _Optional[_Sequence[_ods_ir.Type]] = None, loc: _Optional[_ods_ir.Location] = None, ip: _Optional[_ods_ir.InsertionPoint] = None) -> _ods_ir.OpResult:
  return BitReverseOp(in_=in_, results=results, loc=loc, ip=ip).result

@_ods_cext.register_operation(_Dialect)
class BitcastOp(_ods_ir.OpView):
  OPERATION_NAME = "llvm.bitcast"

  _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(BitcastOp)
class BitcastOpAdaptor(_ods_ir.OpAdaptor):
  OPERATION_NAME = "llvm.bitcast"

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

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

@_ods_cext.register_operation(_Dialect)
class BlockAddressOp(_ods_ir.OpView):
  r"""
  Creates an SSA value containing a pointer to a basic block. The block
  address information (function and block) is given by the `BlockAddressAttr`
  attribute. This operation assumes an existing `llvm.blocktag` operation
  identifying an existing MLIR block within a function. Example:
  
  ```mlir
  llvm.mlir.global private @g() : !llvm.ptr {
    %0 = llvm.blockaddress <function = @fn, tag = <id = 0>> : !llvm.ptr
    llvm.return %0 : !llvm.ptr
  }
  
  llvm.func @fn() {
    llvm.br ^bb1
  ^bb1:  // pred: ^bb0
    llvm.blocktag <id = 0>
    llvm.return
  }
  ```
  """

  OPERATION_NAME = "llvm.blockaddress"

  _ODS_REGIONS = (0, True)

  def __init__(self, res: _ods_ir.Type, block_addr: _Union[_Any, _ods_ir.Attribute], *, 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["block_addr"] = (block_addr if (
    isinstance(block_addr, _ods_ir.Attribute) or
    not _ods_ir.AttrBuilder.contains('LLVM_BlockAddressAttr')) else
      _ods_ir.AttrBuilder.get('LLVM_BlockAddressAttr')(block_addr, 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 block_addr(self) -> _ods_ir.Attribute:
    return self.operation.attributes["block_addr"]

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

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

@_ods_cext.register_op_adaptor(BlockAddressOp)
class BlockAddressOpAdaptor(_ods_ir.OpAdaptor):
  OPERATION_NAME = "llvm.blockaddress"

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

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

@_ods_cext.register_operation(_Dialect)
class BlockTagOp(_ods_ir.OpView):
  r"""
  This operation uses a `tag` to uniquely identify an MLIR block in a
  function. The same tag is used by `llvm.blockaddress` in order to compute
  the target address.
  
  A given function should have at most one `llvm.blocktag` operation with a
  given `tag`. This operation cannot be used as a terminator.
  
  Example:
  
  ```mlir
  llvm.func @f() -> !llvm.ptr {
    %addr = llvm.blockaddress <function = @f, tag = <id = 1>> : !llvm.ptr
    llvm.br ^bb1
  ^bb1:
    llvm.blocktag <id = 1>
    llvm.return %addr : !llvm.ptr
  }
  ```
  """

  OPERATION_NAME = "llvm.blocktag"

  _ODS_REGIONS = (0, True)

  def __init__(self, tag: _Union[_Any, _ods_ir.Attribute], *, 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["tag"] = (tag if (
    isinstance(tag, _ods_ir.Attribute) or
    not _ods_ir.AttrBuilder.contains('LLVM_BlockTagAttr')) else
      _ods_ir.AttrBuilder.get('LLVM_BlockTagAttr')(tag, 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 tag(self) -> _ods_ir.Attribute:
    return self.operation.attributes["tag"]

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

@_ods_cext.register_op_adaptor(BlockTagOp)
class BlockTagOpAdaptor(_ods_ir.OpAdaptor):
  OPERATION_NAME = "llvm.blocktag"

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

def blocktag(tag: _Union[_Any, _ods_ir.Attribute], *, loc: _Optional[_ods_ir.Location] = None, ip: _Optional[_ods_ir.InsertionPoint] = None) -> BlockTagOp:
  return BlockTagOp(tag=tag, loc=loc, ip=ip)

@_ods_cext.register_operation(_Dialect)
class BrOp(_ods_ir.OpView):
  OPERATION_NAME = "llvm.br"

  _ODS_REGIONS = (0, True)

  def __init__(self, destOperands: _Sequence[_ods_ir.Value], dest: _ods_ir.Block, *, loop_annotation: _Optional[_Union[_Any, _ods_ir.Attribute]] = None, loc: _Optional[_ods_ir.Location] = None, ip: _Optional[_ods_ir.InsertionPoint] = None):
    operands = []
    attributes = {}
    regions = None
    operands.extend(_get_op_results_or_values(destOperands))
    _ods_context = _ods_get_default_loc_context(loc)
    if loop_annotation is not None: attributes["loop_annotation"] = (loop_annotation if (
        isinstance(loop_annotation, _ods_ir.Attribute) or
        not _ods_ir.AttrBuilder.contains('LoopAnnotationAttr')) else
          _ods_ir.AttrBuilder.get('LoopAnnotationAttr')(loop_annotation, context=_ods_context))
    results = []
    _ods_successors = []
    _ods_successors.append(dest)
    super().__init__(self.OPERATION_NAME, self._ODS_REGIONS, self._ODS_OPERAND_SEGMENTS, self._ODS_RESULT_SEGMENTS, attributes=attributes, results=results, operands=operands, successors=_ods_successors, regions=regions, loc=loc, ip=ip)

  @builtins.property
  def destOperands(self) -> _ods_ir.OpOperandList:
    _ods_variadic_group_length = len(self.operation.operands) - 1 + 1
    return self.operation.operands[0:0 + _ods_variadic_group_length]

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

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

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

@_ods_cext.register_op_adaptor(BrOp)
class BrOpAdaptor(_ods_ir.OpAdaptor):
  OPERATION_NAME = "llvm.br"

  @builtins.property
  def destOperands(self) -> _ods_ir.OpOperandList:
    _ods_variadic_group_length = len(self.operands) - 1 + 1
    return self.operands[0:0 + _ods_variadic_group_length]

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

def br(dest_operands: _Sequence[_ods_ir.Value], dest: _ods_ir.Block, *, loop_annotation: _Optional[_Union[_Any, _ods_ir.Attribute]] = None, loc: _Optional[_ods_ir.Location] = None, ip: _Optional[_ods_ir.InsertionPoint] = None) -> BrOp:
  return BrOp(destOperands=dest_operands, dest=dest, loop_annotation=loop_annotation, loc=loc, ip=ip)

@_ods_cext.register_operation(_Dialect)
class ByteSwapOp(_ods_ir.OpView):
  OPERATION_NAME = "llvm.intr.bswap"

  _ODS_REGIONS = (0, True)

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

  @builtins.property
  def in_(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(ByteSwapOp)
class ByteSwapOpAdaptor(_ods_ir.OpAdaptor):
  OPERATION_NAME = "llvm.intr.bswap"

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

def intr_bswap(in_: _ods_ir.Value, *, results: _Optional[_Sequence[_ods_ir.Type]] = None, loc: _Optional[_ods_ir.Location] = None, ip: _Optional[_ods_ir.InsertionPoint] = None) -> _ods_ir.OpResult:
  return ByteSwapOp(in_=in_, results=results, loc=loc, ip=ip).result

@_ods_cext.register_operation(_Dialect)
class CallIntrinsicOp(_ods_ir.OpView):
  r"""
  Call the specified llvm intrinsic. If the intrinsic is overloaded, use
  the MLIR function type of this op to determine which intrinsic to call.
  """

  OPERATION_NAME = "llvm.call_intrinsic"

  _ODS_OPERAND_SEGMENTS = [-1,-1,]

  _ODS_REGIONS = (0, True)

  def __init__(self, results_: _Optional[_ods_ir.Type], intrin: _Union[str, _ods_ir.StringAttr], args: _Sequence[_ods_ir.Value], op_bundle_operands: _Sequence[_ods_ir.Value], op_bundle_sizes: _Union[_Sequence[int], _ods_ir.DenseI32ArrayAttr], *, fastmathFlags: _Optional[_Union[_Any, _ods_ir.Attribute]] = None, op_bundle_tags: _Optional[_Union[_Sequence[_ods_ir.Attribute], _ods_ir.ArrayAttr]] = None, 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(_get_op_results_or_values(args))
    operands.append(_get_op_results_or_values(op_bundle_operands))
    _ods_context = _ods_get_default_loc_context(loc)
    attributes["intrin"] = (intrin if (
    isinstance(intrin, _ods_ir.Attribute) or
    not _ods_ir.AttrBuilder.contains('StrAttr')) else
      _ods_ir.AttrBuilder.get('StrAttr')(intrin, context=_ods_context))
    if fastmathFlags is not None: attributes["fastmathFlags"] = (fastmathFlags if (
        isinstance(fastmathFlags, _ods_ir.Attribute) or
        not _ods_ir.AttrBuilder.contains('llvm.LLVM_FastmathFlagsAttr')) else
          _ods_ir.AttrBuilder.get('llvm.LLVM_FastmathFlagsAttr')(fastmathFlags, context=_ods_context))
    attributes["op_bundle_sizes"] = (op_bundle_sizes if (
    isinstance(op_bundle_sizes, _ods_ir.Attribute) or
    not _ods_ir.AttrBuilder.contains('DenseI32ArrayAttr')) else
      _ods_ir.AttrBuilder.get('DenseI32ArrayAttr')(op_bundle_sizes, context=_ods_context))
    if op_bundle_tags is not None: attributes["op_bundle_tags"] = (op_bundle_tags if (
        isinstance(op_bundle_tags, _ods_ir.Attribute) or
        not _ods_ir.AttrBuilder.contains('ArrayAttr')) else
          _ods_ir.AttrBuilder.get('ArrayAttr')(op_bundle_tags, context=_ods_context))
    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 = []
    if results_ is not None: results.append(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 args(self) -> _ods_ir.OpOperandList:
    operand_range = _ods_segmented_accessor(
         self.operation.operands,
         self.operation.attributes["operandSegmentSizes"], 0)
    return operand_range

  @builtins.property
  def op_bundle_operands(self) -> _ods_ir.OpOperandList:
    operand_range = _ods_segmented_accessor(
         self.operation.operands,
         self.operation.attributes["operandSegmentSizes"], 1)
    return operand_range

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

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

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

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

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

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

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

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

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

  @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 results_(self) -> _Optional[_ods_ir.OpResult]:
    return None if len(self.operation.results) < 1 else self.operation.results[0]

@_ods_cext.register_op_adaptor(CallIntrinsicOp)
class CallIntrinsicOpAdaptor(_ods_ir.OpAdaptor):
  OPERATION_NAME = "llvm.call_intrinsic"

  @builtins.property
  def args(self) -> _ods_ir.OpOperandList:
    operand_range = _ods_segmented_accessor(
         self.operands,
         self.attributes["operandSegmentSizes"], 0)
    return operand_range

  @builtins.property
  def op_bundle_operands(self) -> _ods_ir.OpOperandList:
    operand_range = _ods_segmented_accessor(
         self.operands,
         self.attributes["operandSegmentSizes"], 1)
    return operand_range

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

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

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

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

  @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 call_intrinsic(results_: _Optional[_ods_ir.Type], intrin: _Union[str, _ods_ir.StringAttr], args: _Sequence[_ods_ir.Value], op_bundle_operands: _Sequence[_ods_ir.Value], op_bundle_sizes: _Union[_Sequence[int], _ods_ir.DenseI32ArrayAttr], *, fastmath_flags: _Optional[_Union[_Any, _ods_ir.Attribute]] = None, op_bundle_tags: _Optional[_Union[_Sequence[_ods_ir.Attribute], _ods_ir.ArrayAttr]] = None, 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) -> _Union[_ods_ir.OpResult, _ods_ir.OpResultList, CallIntrinsicOp]:
  op = CallIntrinsicOp(results_=results_, intrin=intrin, args=args, op_bundle_operands=op_bundle_operands, op_bundle_sizes=op_bundle_sizes, fastmathFlags=fastmath_flags, op_bundle_tags=op_bundle_tags, arg_attrs=arg_attrs, res_attrs=res_attrs, loc=loc, ip=ip); results = op.results
  return results if len(results) > 1 else (results[0] if len(results) == 1 else op)

@_ods_cext.register_operation(_Dialect)
class CallOp(_ods_ir.OpView):
  r"""
  In LLVM IR, functions may return either 0 or 1 value. LLVM IR dialect
  implements this behavior by providing a variadic `call` operation for 0- and
  1-result functions. Even though MLIR supports multi-result functions, LLVM
  IR dialect disallows them.
  
  The `call` instruction supports both direct and indirect calls. Direct calls
  start with a function name (`@`-prefixed) and indirect calls start with an
  SSA value (`%`-prefixed). The direct callee, if present, is stored as a
  function attribute `callee`. For indirect calls, the callee is of `!llvm.ptr` type
  and is stored as the first value in `callee_operands`. If and only if the
  callee is a variadic function, the `var_callee_type` attribute must carry
  the variadic LLVM function type. The trailing type list contains the
  optional indirect callee type and the MLIR function type, which differs from
  the LLVM function type that uses an explicit void type to model functions
  that do not return a value.
  
  If this operatin has the `no_inline` attribute, then this specific function call
  will never be inlined. The opposite behavior will occur if the call has `always_inline`
  attribute. The `inline_hint` attribute indicates that it is desirable to inline
  this function call.
  
  Examples:
  
  ```mlir
  // Direct call without arguments and with one result.
  %0 = llvm.call @foo() : () -> (f32)
  
  // Direct call with arguments and without a result.
  llvm.call @bar(%0) : (f32) -> ()
  
  // Indirect call with an argument and without a result.
  %1 = llvm.mlir.addressof @foo : !llvm.ptr
  llvm.call %1(%0) : !llvm.ptr, (f32) -> ()
  
  // Direct variadic call.
  llvm.call @printf(%0, %1) vararg(!llvm.func<i32 (ptr, ...)>) : (!llvm.ptr, i32) -> i32
  
  // Indirect variadic call
  llvm.call %1(%0) vararg(!llvm.func<void (...)>) : !llvm.ptr, (i32) -> ()
  ```
  """

  OPERATION_NAME = "llvm.call"

  _ODS_OPERAND_SEGMENTS = [-1,-1,]

  _ODS_REGIONS = (0, True)

  def __init__(self, result: _Optional[_ods_ir.Type], callee_operands: _Sequence[_ods_ir.Value], op_bundle_operands: _Sequence[_ods_ir.Value], op_bundle_sizes: _Union[_Sequence[int], _ods_ir.DenseI32ArrayAttr], *, var_callee_type: _Optional[_Union[_Any, _ods_ir.TypeAttr]] = None, callee: _Optional[_Union[str, _ods_ir.FlatSymbolRefAttr]] = None, fastmathFlags: _Optional[_Union[_Any, _ods_ir.Attribute]] = None, CConv: _Optional[_Union[_Any, _ods_ir.Attribute]] = None, TailCallKind: _Optional[_Union[_Any, _ods_ir.Attribute]] = None, memory_effects: _Optional[_Union[_Any, _ods_ir.Attribute]] = None, convergent: _Optional[bool] = None, no_unwind: _Optional[bool] = None, will_return: _Optional[bool] = None, noreturn: _Optional[bool] = None, returns_twice: _Optional[bool] = None, hot: _Optional[bool] = None, cold: _Optional[bool] = None, noduplicate: _Optional[bool] = None, no_caller_saved_registers: _Optional[bool] = None, nocallback: _Optional[bool] = None, modular_format: _Optional[_Union[str, _ods_ir.StringAttr]] = None, nobuiltins: _Optional[_Union[_Sequence[_ods_ir.Attribute], _ods_ir.ArrayAttr]] = None, allocsize: _Optional[_Union[_Sequence[int], _ods_ir.DenseI32ArrayAttr]] = None, optsize: _Optional[bool] = None, minsize: _Optional[bool] = None, builtin: _Optional[bool] = None, nobuiltin: _Optional[bool] = None, save_reg_params: _Optional[bool] = None, zero_call_used_regs: _Optional[_Union[str, _ods_ir.StringAttr]] = None, trap_func_name: _Optional[_Union[str, _ods_ir.StringAttr]] = None, default_func_attrs: _Optional[_Union[dict, _ods_ir.DictAttr]] = None, op_bundle_tags: _Optional[_Union[_Sequence[_ods_ir.Attribute], _ods_ir.ArrayAttr]] = None, arg_attrs: _Optional[_Union[_Any, _ods_ir.ArrayAttr]] = None, res_attrs: _Optional[_Union[_Any, _ods_ir.ArrayAttr]] = None, no_inline: _Optional[bool] = None, always_inline: _Optional[bool] = None, inline_hint: _Optional[bool] = None, access_groups: _Optional[_Union[_Any, _ods_ir.ArrayAttr]] = None, 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(_get_op_results_or_values(callee_operands))
    operands.append(_get_op_results_or_values(op_bundle_operands))
    _ods_context = _ods_get_default_loc_context(loc)
    if var_callee_type is not None: attributes["var_callee_type"] = (var_callee_type if (
        isinstance(var_callee_type, _ods_ir.Attribute) or
        not _ods_ir.AttrBuilder.contains('anonymous_1014')) else
          _ods_ir.AttrBuilder.get('anonymous_1014')(var_callee_type, context=_ods_context))
    if callee is not None: attributes["callee"] = (callee if (
        isinstance(callee, _ods_ir.Attribute) or
        not _ods_ir.AttrBuilder.contains('FlatSymbolRefAttr')) else
          _ods_ir.AttrBuilder.get('FlatSymbolRefAttr')(callee, context=_ods_context))
    if fastmathFlags is not None: attributes["fastmathFlags"] = (fastmathFlags if (
        isinstance(fastmathFlags, _ods_ir.Attribute) or
        not _ods_ir.AttrBuilder.contains('llvm.LLVM_FastmathFlagsAttr')) else
          _ods_ir.AttrBuilder.get('llvm.LLVM_FastmathFlagsAttr')(fastmathFlags, context=_ods_context))
    if CConv is not None: attributes["CConv"] = (CConv if (
        isinstance(CConv, _ods_ir.Attribute) or
        not _ods_ir.AttrBuilder.contains('CConv')) else
          _ods_ir.AttrBuilder.get('CConv')(CConv, context=_ods_context))
    if TailCallKind is not None: attributes["TailCallKind"] = (TailCallKind if (
        isinstance(TailCallKind, _ods_ir.Attribute) or
        not _ods_ir.AttrBuilder.contains('TailCallKind')) else
          _ods_ir.AttrBuilder.get('TailCallKind')(TailCallKind, context=_ods_context))
    if memory_effects is not None: attributes["memory_effects"] = (memory_effects if (
        isinstance(memory_effects, _ods_ir.Attribute) or
        not _ods_ir.AttrBuilder.contains('LLVM_MemoryEffectsAttr')) else
          _ods_ir.AttrBuilder.get('LLVM_MemoryEffectsAttr')(memory_effects, context=_ods_context))
    if bool(convergent): attributes["convergent"] = _ods_ir.UnitAttr.get(
      _ods_get_default_loc_context(loc))
    if bool(no_unwind): attributes["no_unwind"] = _ods_ir.UnitAttr.get(
      _ods_get_default_loc_context(loc))
    if bool(will_return): attributes["will_return"] = _ods_ir.UnitAttr.get(
      _ods_get_default_loc_context(loc))
    if bool(noreturn): attributes["noreturn"] = _ods_ir.UnitAttr.get(
      _ods_get_default_loc_context(loc))
    if bool(returns_twice): attributes["returns_twice"] = _ods_ir.UnitAttr.get(
      _ods_get_default_loc_context(loc))
    if bool(hot): attributes["hot"] = _ods_ir.UnitAttr.get(
      _ods_get_default_loc_context(loc))
    if bool(cold): attributes["cold"] = _ods_ir.UnitAttr.get(
      _ods_get_default_loc_context(loc))
    if bool(noduplicate): attributes["noduplicate"] = _ods_ir.UnitAttr.get(
      _ods_get_default_loc_context(loc))
    if bool(no_caller_saved_registers): attributes["no_caller_saved_registers"] = _ods_ir.UnitAttr.get(
      _ods_get_default_loc_context(loc))
    if bool(nocallback): attributes["nocallback"] = _ods_ir.UnitAttr.get(
      _ods_get_default_loc_context(loc))
    if modular_format is not None: attributes["modular_format"] = (modular_format if (
        isinstance(modular_format, _ods_ir.Attribute) or
        not _ods_ir.AttrBuilder.contains('StrAttr')) else
          _ods_ir.AttrBuilder.get('StrAttr')(modular_format, context=_ods_context))
    if nobuiltins is not None: attributes["nobuiltins"] = (nobuiltins if (
        isinstance(nobuiltins, _ods_ir.Attribute) or
        not _ods_ir.AttrBuilder.contains('ArrayAttr')) else
          _ods_ir.AttrBuilder.get('ArrayAttr')(nobuiltins, context=_ods_context))
    if allocsize is not None: attributes["allocsize"] = (allocsize if (
        isinstance(allocsize, _ods_ir.Attribute) or
        not _ods_ir.AttrBuilder.contains('DenseI32ArrayAttr')) else
          _ods_ir.AttrBuilder.get('DenseI32ArrayAttr')(allocsize, context=_ods_context))
    if bool(optsize): attributes["optsize"] = _ods_ir.UnitAttr.get(
      _ods_get_default_loc_context(loc))
    if bool(minsize): attributes["minsize"] = _ods_ir.UnitAttr.get(
      _ods_get_default_loc_context(loc))
    if bool(builtin): attributes["builtin"] = _ods_ir.UnitAttr.get(
      _ods_get_default_loc_context(loc))
    if bool(nobuiltin): attributes["nobuiltin"] = _ods_ir.UnitAttr.get(
      _ods_get_default_loc_context(loc))
    if bool(save_reg_params): attributes["save_reg_params"] = _ods_ir.UnitAttr.get(
      _ods_get_default_loc_context(loc))
    if zero_call_used_regs is not None: attributes["zero_call_used_regs"] = (zero_call_used_regs if (
        isinstance(zero_call_used_regs, _ods_ir.Attribute) or
        not _ods_ir.AttrBuilder.contains('StrAttr')) else
          _ods_ir.AttrBuilder.get('StrAttr')(zero_call_used_regs, context=_ods_context))
    if trap_func_name is not None: attributes["trap_func_name"] = (trap_func_name if (
        isinstance(trap_func_name, _ods_ir.Attribute) or
        not _ods_ir.AttrBuilder.contains('StrAttr')) else
          _ods_ir.AttrBuilder.get('StrAttr')(trap_func_name, context=_ods_context))
    if default_func_attrs is not None: attributes["default_func_attrs"] = (default_func_attrs if (
        isinstance(default_func_attrs, _ods_ir.Attribute) or
        not _ods_ir.AttrBuilder.contains('DictionaryAttr')) else
          _ods_ir.AttrBuilder.get('DictionaryAttr')(default_func_attrs, context=_ods_context))
    attributes["op_bundle_sizes"] = (op_bundle_sizes if (
    isinstance(op_bundle_sizes, _ods_ir.Attribute) or
    not _ods_ir.AttrBuilder.contains('DenseI32ArrayAttr')) else
      _ods_ir.AttrBuilder.get('DenseI32ArrayAttr')(op_bundle_sizes, context=_ods_context))
    if op_bundle_tags is not None: attributes["op_bundle_tags"] = (op_bundle_tags if (
        isinstance(op_bundle_tags, _ods_ir.Attribute) or
        not _ods_ir.AttrBuilder.contains('ArrayAttr')) else
          _ods_ir.AttrBuilder.get('ArrayAttr')(op_bundle_tags, context=_ods_context))
    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))
    if bool(no_inline): attributes["no_inline"] = _ods_ir.UnitAttr.get(
      _ods_get_default_loc_context(loc))
    if bool(always_inline): attributes["always_inline"] = _ods_ir.UnitAttr.get(
      _ods_get_default_loc_context(loc))
    if bool(inline_hint): attributes["inline_hint"] = _ods_ir.UnitAttr.get(
      _ods_get_default_loc_context(loc))
    if access_groups is not None: attributes["access_groups"] = (access_groups if (
        isinstance(access_groups, _ods_ir.Attribute) or
        not _ods_ir.AttrBuilder.contains('LLVM_AccessGroupArrayAttr')) else
          _ods_ir.AttrBuilder.get('LLVM_AccessGroupArrayAttr')(access_groups, 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 = []
    if result is not None: results.append(result)
    _ods_successors = None
    super().__init__(self.OPERATION_NAME, self._ODS_REGIONS, self._ODS_OPERAND_SEGMENTS, self._ODS_RESULT_SEGMENTS, attributes=attributes, results=results, operands=operands, successors=_ods_successors, regions=regions, loc=loc, ip=ip)

  @builtins.property
  def callee_operands(self) -> _ods_ir.OpOperandList:
    operand_range = _ods_segmented_accessor(
         self.operation.operands,
         self.operation.attributes["operandSegmentSizes"], 0)
    return operand_range

  @builtins.property
  def op_bundle_operands(self) -> _ods_ir.OpOperandList:
    operand_range = _ods_segmented_accessor(
         self.operation.operands,
         self.operation.attributes["operandSegmentSizes"], 1)
    return operand_range

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

  @builtins.property
  def convergent(self) -> bool:
    return "convergent" in self.operation.attributes

  @convergent.setter
  def convergent(self, value):
    if bool(value):
      self.operation.attributes["convergent"] = _ods_ir.UnitAttr.get()
    elif "convergent" in self.operation.attributes:
      del self.operation.attributes["convergent"]

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

  @builtins.property
  def no_unwind(self) -> bool:
    return "no_unwind" in self.operation.attributes

  @no_unwind.setter
  def no_unwind(self, value):
    if bool(value):
      self.operation.attributes["no_unwind"] = _ods_ir.UnitAttr.get()
    elif "no_unwind" in self.operation.attributes:
      del self.operation.attributes["no_unwind"]

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

  @builtins.property
  def will_return(self) -> bool:
    return "will_return" in self.operation.attributes

  @will_return.setter
  def will_return(self, value):
    if bool(value):
      self.operation.attributes["will_return"] = _ods_ir.UnitAttr.get()
    elif "will_return" in self.operation.attributes:
      del self.operation.attributes["will_return"]

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

  @builtins.property
  def noreturn(self) -> bool:
    return "noreturn" in self.operation.attributes

  @noreturn.setter
  def noreturn(self, value):
    if bool(value):
      self.operation.attributes["noreturn"] = _ods_ir.UnitAttr.get()
    elif "noreturn" in self.operation.attributes:
      del self.operation.attributes["noreturn"]

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

  @builtins.property
  def returns_twice(self) -> bool:
    return "returns_twice" in self.operation.attributes

  @returns_twice.setter
  def returns_twice(self, value):
    if bool(value):
      self.operation.attributes["returns_twice"] = _ods_ir.UnitAttr.get()
    elif "returns_twice" in self.operation.attributes:
      del self.operation.attributes["returns_twice"]

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

  @builtins.property
  def hot(self) -> bool:
    return "hot" in self.operation.attributes

  @hot.setter
  def hot(self, value):
    if bool(value):
      self.operation.attributes["hot"] = _ods_ir.UnitAttr.get()
    elif "hot" in self.operation.attributes:
      del self.operation.attributes["hot"]

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

  @builtins.property
  def cold(self) -> bool:
    return "cold" in self.operation.attributes

  @cold.setter
  def cold(self, value):
    if bool(value):
      self.operation.attributes["cold"] = _ods_ir.UnitAttr.get()
    elif "cold" in self.operation.attributes:
      del self.operation.attributes["cold"]

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

  @builtins.property
  def noduplicate(self) -> bool:
    return "noduplicate" in self.operation.attributes

  @noduplicate.setter
  def noduplicate(self, value):
    if bool(value):
      self.operation.attributes["noduplicate"] = _ods_ir.UnitAttr.get()
    elif "noduplicate" in self.operation.attributes:
      del self.operation.attributes["noduplicate"]

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

  @builtins.property
  def no_caller_saved_registers(self) -> bool:
    return "no_caller_saved_registers" in self.operation.attributes

  @no_caller_saved_registers.setter
  def no_caller_saved_registers(self, value):
    if bool(value):
      self.operation.attributes["no_caller_saved_registers"] = _ods_ir.UnitAttr.get()
    elif "no_caller_saved_registers" in self.operation.attributes:
      del self.operation.attributes["no_caller_saved_registers"]

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

  @builtins.property
  def nocallback(self) -> bool:
    return "nocallback" in self.operation.attributes

  @nocallback.setter
  def nocallback(self, value):
    if bool(value):
      self.operation.attributes["nocallback"] = _ods_ir.UnitAttr.get()
    elif "nocallback" in self.operation.attributes:
      del self.operation.attributes["nocallback"]

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

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

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

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

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

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

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

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

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

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

  @builtins.property
  def optsize(self) -> bool:
    return "optsize" in self.operation.attributes

  @optsize.setter
  def optsize(self, value):
    if bool(value):
      self.operation.attributes["optsize"] = _ods_ir.UnitAttr.get()
    elif "optsize" in self.operation.attributes:
      del self.operation.attributes["optsize"]

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

  @builtins.property
  def minsize(self) -> bool:
    return "minsize" in self.operation.attributes

  @minsize.setter
  def minsize(self, value):
    if bool(value):
      self.operation.attributes["minsize"] = _ods_ir.UnitAttr.get()
    elif "minsize" in self.operation.attributes:
      del self.operation.attributes["minsize"]

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

  @builtins.property
  def builtin(self) -> bool:
    return "builtin" in self.operation.attributes

  @builtin.setter
  def builtin(self, value):
    if bool(value):
      self.operation.attributes["builtin"] = _ods_ir.UnitAttr.get()
    elif "builtin" in self.operation.attributes:
      del self.operation.attributes["builtin"]

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

  @builtins.property
  def nobuiltin(self) -> bool:
    return "nobuiltin" in self.operation.attributes

  @nobuiltin.setter
  def nobuiltin(self, value):
    if bool(value):
      self.operation.attributes["nobuiltin"] = _ods_ir.UnitAttr.get()
    elif "nobuiltin" in self.operation.attributes:
      del self.operation.attributes["nobuiltin"]

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

  @builtins.property
  def save_reg_params(self) -> bool:
    return "save_reg_params" in self.operation.attributes

  @save_reg_params.setter
  def save_reg_params(self, value):
    if bool(value):
      self.operation.attributes["save_reg_params"] = _ods_ir.UnitAttr.get()
    elif "save_reg_params" in self.operation.attributes:
      del self.operation.attributes["save_reg_params"]

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

  @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 no_inline(self) -> bool:
    return "no_inline" in self.operation.attributes

  @no_inline.setter
  def no_inline(self, value):
    if bool(value):
      self.operation.attributes["no_inline"] = _ods_ir.UnitAttr.get()
    elif "no_inline" in self.operation.attributes:
      del self.operation.attributes["no_inline"]

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

  @builtins.property
  def always_inline(self) -> bool:
    return "always_inline" in self.operation.attributes

  @always_inline.setter
  def always_inline(self, value):
    if bool(value):
      self.operation.attributes["always_inline"] = _ods_ir.UnitAttr.get()
    elif "always_inline" in self.operation.attributes:
      del self.operation.attributes["always_inline"]

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

  @builtins.property
  def inline_hint(self) -> bool:
    return "inline_hint" in self.operation.attributes

  @inline_hint.setter
  def inline_hint(self, value):
    if bool(value):
      self.operation.attributes["inline_hint"] = _ods_ir.UnitAttr.get()
    elif "inline_hint" in self.operation.attributes:
      del self.operation.attributes["inline_hint"]

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

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

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

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

  @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 result(self) -> _Optional[_ods_ir.OpResult]:
    return None if len(self.operation.results) < 1 else self.operation.results[0]

@_ods_cext.register_op_adaptor(CallOp)
class CallOpAdaptor(_ods_ir.OpAdaptor):
  OPERATION_NAME = "llvm.call"

  @builtins.property
  def callee_operands(self) -> _ods_ir.OpOperandList:
    operand_range = _ods_segmented_accessor(
         self.operands,
         self.attributes["operandSegmentSizes"], 0)
    return operand_range

  @builtins.property
  def op_bundle_operands(self) -> _ods_ir.OpOperandList:
    operand_range = _ods_segmented_accessor(
         self.operands,
         self.attributes["operandSegmentSizes"], 1)
    return operand_range

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

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

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

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

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

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

  @builtins.property
  def convergent(self) -> bool:
    return "convergent" in self.attributes

  @builtins.property
  def no_unwind(self) -> bool:
    return "no_unwind" in self.attributes

  @builtins.property
  def will_return(self) -> bool:
    return "will_return" in self.attributes

  @builtins.property
  def noreturn(self) -> bool:
    return "noreturn" in self.attributes

  @builtins.property
  def returns_twice(self) -> bool:
    return "returns_twice" in self.attributes

  @builtins.property
  def hot(self) -> bool:
    return "hot" in self.attributes

  @builtins.property
  def cold(self) -> bool:
    return "cold" in self.attributes

  @builtins.property
  def noduplicate(self) -> bool:
    return "noduplicate" in self.attributes

  @builtins.property
  def no_caller_saved_registers(self) -> bool:
    return "no_caller_saved_registers" in self.attributes

  @builtins.property
  def nocallback(self) -> bool:
    return "nocallback" in self.attributes

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

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

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

  @builtins.property
  def optsize(self) -> bool:
    return "optsize" in self.attributes

  @builtins.property
  def minsize(self) -> bool:
    return "minsize" in self.attributes

  @builtins.property
  def builtin(self) -> bool:
    return "builtin" in self.attributes

  @builtins.property
  def nobuiltin(self) -> bool:
    return "nobuiltin" in self.attributes

  @builtins.property
  def save_reg_params(self) -> bool:
    return "save_reg_params" in self.attributes

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

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

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

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

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

  @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"]

  @builtins.property
  def no_inline(self) -> bool:
    return "no_inline" in self.attributes

  @builtins.property
  def always_inline(self) -> bool:
    return "always_inline" in self.attributes

  @builtins.property
  def inline_hint(self) -> bool:
    return "inline_hint" in self.attributes

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

  @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 call(result: _Optional[_ods_ir.Type], callee_operands: _Sequence[_ods_ir.Value], op_bundle_operands: _Sequence[_ods_ir.Value], op_bundle_sizes: _Union[_Sequence[int], _ods_ir.DenseI32ArrayAttr], *, var_callee_type: _Optional[_Union[_Any, _ods_ir.TypeAttr]] = None, callee: _Optional[_Union[str, _ods_ir.FlatSymbolRefAttr]] = None, fastmath_flags: _Optional[_Union[_Any, _ods_ir.Attribute]] = None, c_conv: _Optional[_Union[_Any, _ods_ir.Attribute]] = None, tail_call_kind: _Optional[_Union[_Any, _ods_ir.Attribute]] = None, memory_effects: _Optional[_Union[_Any, _ods_ir.Attribute]] = None, convergent: _Optional[bool] = None, no_unwind: _Optional[bool] = None, will_return: _Optional[bool] = None, noreturn: _Optional[bool] = None, returns_twice: _Optional[bool] = None, hot: _Optional[bool] = None, cold: _Optional[bool] = None, noduplicate: _Optional[bool] = None, no_caller_saved_registers: _Optional[bool] = None, nocallback: _Optional[bool] = None, modular_format: _Optional[_Union[str, _ods_ir.StringAttr]] = None, nobuiltins: _Optional[_Union[_Sequence[_ods_ir.Attribute], _ods_ir.ArrayAttr]] = None, allocsize: _Optional[_Union[_Sequence[int], _ods_ir.DenseI32ArrayAttr]] = None, optsize: _Optional[bool] = None, minsize: _Optional[bool] = None, builtin: _Optional[bool] = None, nobuiltin: _Optional[bool] = None, save_reg_params: _Optional[bool] = None, zero_call_used_regs: _Optional[_Union[str, _ods_ir.StringAttr]] = None, trap_func_name: _Optional[_Union[str, _ods_ir.StringAttr]] = None, default_func_attrs: _Optional[_Union[dict, _ods_ir.DictAttr]] = None, op_bundle_tags: _Optional[_Union[_Sequence[_ods_ir.Attribute], _ods_ir.ArrayAttr]] = None, arg_attrs: _Optional[_Union[_Any, _ods_ir.ArrayAttr]] = None, res_attrs: _Optional[_Union[_Any, _ods_ir.ArrayAttr]] = None, no_inline: _Optional[bool] = None, always_inline: _Optional[bool] = None, inline_hint: _Optional[bool] = None, access_groups: _Optional[_Union[_Any, _ods_ir.ArrayAttr]] = None, 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) -> _Union[_ods_ir.OpResult, _ods_ir.OpResultList, CallOp]:
  op = CallOp(result=result, callee_operands=callee_operands, op_bundle_operands=op_bundle_operands, op_bundle_sizes=op_bundle_sizes, var_callee_type=var_callee_type, callee=callee, fastmathFlags=fastmath_flags, CConv=c_conv, TailCallKind=tail_call_kind, memory_effects=memory_effects, convergent=convergent, no_unwind=no_unwind, will_return=will_return, noreturn=noreturn, returns_twice=returns_twice, hot=hot, cold=cold, noduplicate=noduplicate, no_caller_saved_registers=no_caller_saved_registers, nocallback=nocallback, modular_format=modular_format, nobuiltins=nobuiltins, allocsize=allocsize, optsize=optsize, minsize=minsize, builtin=builtin, nobuiltin=nobuiltin, save_reg_params=save_reg_params, zero_call_used_regs=zero_call_used_regs, trap_func_name=trap_func_name, default_func_attrs=default_func_attrs, op_bundle_tags=op_bundle_tags, arg_attrs=arg_attrs, res_attrs=res_attrs, no_inline=no_inline, always_inline=always_inline, inline_hint=inline_hint, access_groups=access_groups, alias_scopes=alias_scopes, noalias_scopes=noalias_scopes, tbaa=tbaa, loc=loc, ip=ip); results = op.results
  return results if len(results) > 1 else (results[0] if len(results) == 1 else op)

@_ods_cext.register_operation(_Dialect)
class ComdatOp(_ods_ir.OpView):
  r"""
  Provides access to object file COMDAT section/group functionality.
  
  Examples:
  ```mlir
  llvm.comdat @__llvm_comdat {
    llvm.comdat_selector @any any
  }
  llvm.mlir.global internal constant @has_any_comdat(1 : i64) comdat(@__llvm_comdat::@any) : i64
  ```
  """

  OPERATION_NAME = "llvm.comdat"

  _ODS_REGIONS = (1, True)

  def __init__(self, sym_name: _Union[str, _ods_ir.StringAttr], *, 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["sym_name"] = (sym_name if (
    isinstance(sym_name, _ods_ir.Attribute) or
    not _ods_ir.AttrBuilder.contains('SymbolNameAttr')) else
      _ods_ir.AttrBuilder.get('SymbolNameAttr')(sym_name, 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 sym_name(self) -> _ods_ir.StringAttr:
    return self.operation.attributes["sym_name"]

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

  @builtins.property
  def body(self) -> _ods_ir.Region:
    return self.regions[0]

@_ods_cext.register_op_adaptor(ComdatOp)
class ComdatOpAdaptor(_ods_ir.OpAdaptor):
  OPERATION_NAME = "llvm.comdat"

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

def comdat(sym_name: _Union[str, _ods_ir.StringAttr], *, loc: _Optional[_ods_ir.Location] = None, ip: _Optional[_ods_ir.InsertionPoint] = None) -> ComdatOp:
  return ComdatOp(sym_name=sym_name, loc=loc, ip=ip)

@_ods_cext.register_operation(_Dialect)
class ComdatSelectorOp(_ods_ir.OpView):
  r"""
  Provides access to object file COMDAT section/group functionality.
  
  Examples:
  ```mlir
  llvm.comdat @__llvm_comdat {
    llvm.comdat_selector @any any
  }
  llvm.mlir.global internal constant @has_any_comdat(1 : i64) comdat(@__llvm_comdat::@any) : i64
  ```
  """

  OPERATION_NAME = "llvm.comdat_selector"

  _ODS_REGIONS = (0, True)

  def __init__(self, sym_name: _Union[str, _ods_ir.StringAttr], comdat: _Union[_Any, _ods_ir.Attribute], *, 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["sym_name"] = (sym_name if (
    isinstance(sym_name, _ods_ir.Attribute) or
    not _ods_ir.AttrBuilder.contains('SymbolNameAttr')) else
      _ods_ir.AttrBuilder.get('SymbolNameAttr')(sym_name, context=_ods_context))
    attributes["comdat"] = (comdat if (
    isinstance(comdat, _ods_ir.Attribute) or
    not _ods_ir.AttrBuilder.contains('Comdat')) else
      _ods_ir.AttrBuilder.get('Comdat')(comdat, 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 sym_name(self) -> _ods_ir.StringAttr:
    return self.operation.attributes["sym_name"]

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

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

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

@_ods_cext.register_op_adaptor(ComdatSelectorOp)
class ComdatSelectorOpAdaptor(_ods_ir.OpAdaptor):
  OPERATION_NAME = "llvm.comdat_selector"

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

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

def comdat_selector(sym_name: _Union[str, _ods_ir.StringAttr], comdat: _Union[_Any, _ods_ir.Attribute], *, loc: _Optional[_ods_ir.Location] = None, ip: _Optional[_ods_ir.InsertionPoint] = None) -> ComdatSelectorOp:
  return ComdatSelectorOp(sym_name=sym_name, comdat=comdat, loc=loc, ip=ip)

@_ods_cext.register_operation(_Dialect)
class CondBrOp(_ods_ir.OpView):
  OPERATION_NAME = "llvm.cond_br"

  _ODS_OPERAND_SEGMENTS = [1,-1,-1,]

  _ODS_REGIONS = (0, True)

  def __init__(self, condition: _ods_ir.Value[_ods_ir.IntegerType], trueDestOperands: _Sequence[_ods_ir.Value], falseDestOperands: _Sequence[_ods_ir.Value], trueDest: _ods_ir.Block, falseDest: _ods_ir.Block, *, branch_weights: _Optional[_Union[_Sequence[int], _ods_ir.DenseI32ArrayAttr]] = None, loop_annotation: _Optional[_Union[_Any, _ods_ir.Attribute]] = None, loc: _Optional[_ods_ir.Location] = None, ip: _Optional[_ods_ir.InsertionPoint] = None):
    operands = []
    attributes = {}
    regions = None
    operands.append(condition)
    operands.append(_get_op_results_or_values(trueDestOperands))
    operands.append(_get_op_results_or_values(falseDestOperands))
    _ods_context = _ods_get_default_loc_context(loc)
    if branch_weights is not None: attributes["branch_weights"] = (branch_weights if (
        isinstance(branch_weights, _ods_ir.Attribute) or
        not _ods_ir.AttrBuilder.contains('DenseI32ArrayAttr')) else
          _ods_ir.AttrBuilder.get('DenseI32ArrayAttr')(branch_weights, context=_ods_context))
    if loop_annotation is not None: attributes["loop_annotation"] = (loop_annotation if (
        isinstance(loop_annotation, _ods_ir.Attribute) or
        not _ods_ir.AttrBuilder.contains('LoopAnnotationAttr')) else
          _ods_ir.AttrBuilder.get('LoopAnnotationAttr')(loop_annotation, context=_ods_context))
    results = []
    _ods_successors = []
    _ods_successors.append(trueDest)
    _ods_successors.append(falseDest)
    super().__init__(self.OPERATION_NAME, self._ODS_REGIONS, self._ODS_OPERAND_SEGMENTS, self._ODS_RESULT_SEGMENTS, attributes=attributes, results=results, operands=operands, successors=_ods_successors, regions=regions, loc=loc, ip=ip)

  @builtins.property
  def condition(self) -> _ods_ir.Value[_ods_ir.IntegerType]:
    operand_range = _ods_segmented_accessor(
         self.operation.operands,
         self.operation.attributes["operandSegmentSizes"], 0)
    return operand_range[0]

  @builtins.property
  def trueDestOperands(self) -> _ods_ir.OpOperandList:
    operand_range = _ods_segmented_accessor(
         self.operation.operands,
         self.operation.attributes["operandSegmentSizes"], 1)
    return operand_range

  @builtins.property
  def falseDestOperands(self) -> _ods_ir.OpOperandList:
    operand_range = _ods_segmented_accessor(
         self.operation.operands,
         self.operation.attributes["operandSegmentSizes"], 2)
    return operand_range

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

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

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

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

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

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

@_ods_cext.register_op_adaptor(CondBrOp)
class CondBrOpAdaptor(_ods_ir.OpAdaptor):
  OPERATION_NAME = "llvm.cond_br"

  @builtins.property
  def condition(self) -> _ods_ir.Value[_ods_ir.IntegerType]:
    operand_range = _ods_segmented_accessor(
         self.operands,
         self.attributes["operandSegmentSizes"], 0)
    return operand_range[0]

  @builtins.property
  def trueDestOperands(self) -> _ods_ir.OpOperandList:
    operand_range = _ods_segmented_accessor(
         self.operands,
         self.attributes["operandSegmentSizes"], 1)
    return operand_range

  @builtins.property
  def falseDestOperands(self) -> _ods_ir.OpOperandList:
    operand_range = _ods_segmented_accessor(
         self.operands,
         self.attributes["operandSegmentSizes"], 2)
    return operand_range

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

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

def cond_br(condition: _ods_ir.Value[_ods_ir.IntegerType], true_dest_operands: _Sequence[_ods_ir.Value], false_dest_operands: _Sequence[_ods_ir.Value], true_dest: _ods_ir.Block, false_dest: _ods_ir.Block, *, branch_weights: _Optional[_Union[_Sequence[int], _ods_ir.DenseI32ArrayAttr]] = None, loop_annotation: _Optional[_Union[_Any, _ods_ir.Attribute]] = None, loc: _Optional[_ods_ir.Location] = None, ip: _Optional[_ods_ir.InsertionPoint] = None) -> CondBrOp:
  return CondBrOp(condition=condition, trueDestOperands=true_dest_operands, falseDestOperands=false_dest_operands, trueDest=true_dest, falseDest=false_dest, branch_weights=branch_weights, loop_annotation=loop_annotation, loc=loc, ip=ip)

@_ods_cext.register_operation(_Dialect)
class ConstantOp(_ods_ir.OpView):
  r"""
  Unlike LLVM IR, MLIR does not have first-class constant values. Therefore,
  all constants must be created as SSA values before being used in other
  operations. `llvm.mlir.constant` creates such values for scalars, vectors,
  strings, structs, and array of structs. It has a mandatory `value` attribute
  whose type depends on the type of the constant value. The type of the constant
  value must correspond to the attribute type converted to LLVM IR type.
  
  When creating constant scalars, the `value` attribute must be either an
  integer attribute or a floating point attribute. The type of the attribute
  may be omitted for `i64` and `f64` types that are implied.
  
  When creating constant vectors, the `value` attribute must be either an
  array attribute, a dense attribute, or a sparse attribute that contains
  integers or floats. The number of elements in the result vector must match
  the number of elements in the attribute.
  
  When creating constant strings, the `value` attribute must be a string
  attribute. The type of the constant must be an LLVM array of `i8`s, and the
  length of the array must match the length of the attribute.
  
  When creating constant structs, the `value` attribute must be an array
  attribute that contains integers or floats. The type of the constant must be
  an LLVM struct type. The number of fields in the struct must match the
  number of elements in the attribute, and the type of each LLVM struct field
  must correspond to the type of the corresponding attribute element converted
  to LLVM IR.
  
  When creating an array of structs, the `value` attribute must be an array
  attribute, itself containing zero, or undef, or array attributes for each
  potential nested array type, and the elements of the leaf array attributes
  for must match the struct element types or be zero or undef attributes.
  
  Examples:
  
  ```mlir
  // Integer constant, internal i32 is mandatory
  %0 = llvm.mlir.constant(42 : i32) : i32
  
  // It's okay to omit i64.
  %1 = llvm.mlir.constant(42) : i64
  
  // Floating point constant.
  %2 = llvm.mlir.constant(42.0 : f32) : f32
  
  // Splat dense vector constant.
  %3 = llvm.mlir.constant(dense<1.0> : vector<4xf32>) : vector<4xf32>
  ```
  """

  OPERATION_NAME = "llvm.mlir.constant"

  _ODS_REGIONS = (0, True)

  def __init__(self, res: _ods_ir.Type, value: _Union[_Any, _ods_ir.Attribute], *, 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["value"] = (value if (
    isinstance(value, _ods_ir.Attribute) or
    not _ods_ir.AttrBuilder.contains('AnyAttr')) else
      _ods_ir.AttrBuilder.get('AnyAttr')(value, 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 value(self) -> _ods_ir.Attribute:
    return self.operation.attributes["value"]

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

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

@_ods_cext.register_op_adaptor(ConstantOp)
class ConstantOpAdaptor(_ods_ir.OpAdaptor):
  OPERATION_NAME = "llvm.mlir.constant"

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

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

@_ods_cext.register_operation(_Dialect)
class ConstrainedFAddIntr(_ods_ir.OpView):
  OPERATION_NAME = "llvm.intr.experimental.constrained.fadd"

  _ODS_REGIONS = (0, True)

  def __init__(self, arg_0: _ods_ir.Value, arg_1: _ods_ir.Value, roundingmode: _Union[_Any, _ods_ir.Attribute], fpExceptionBehavior: _Union[_Any, _ods_ir.Attribute], *, results: _Optional[_Sequence[_ods_ir.Type]] = None, loc: _Optional[_ods_ir.Location] = None, ip: _Optional[_ods_ir.InsertionPoint] = None):
    operands = []
    attributes = {}
    regions = None
    operands.append(arg_0)
    operands.append(arg_1)
    _ods_context = _ods_get_default_loc_context(loc)
    attributes["roundingmode"] = (roundingmode if (
    isinstance(roundingmode, _ods_ir.Attribute) or
    not _ods_ir.AttrBuilder.contains('ValidRoundingModeAttr')) else
      _ods_ir.AttrBuilder.get('ValidRoundingModeAttr')(roundingmode, context=_ods_context))
    attributes["fpExceptionBehavior"] = (fpExceptionBehavior if (
    isinstance(fpExceptionBehavior, _ods_ir.Attribute) or
    not _ods_ir.AttrBuilder.contains('FPExceptionBehaviorAttr')) else
      _ods_ir.AttrBuilder.get('FPExceptionBehaviorAttr')(fpExceptionBehavior, context=_ods_context))
    if results is None: results = [operands[0].type] * 1
    _ods_successors = None
    super().__init__(self.OPERATION_NAME, self._ODS_REGIONS, self._ODS_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_0(self) -> _ods_ir.Value:
    return self.operation.operands[0]

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

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

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

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

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

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

@_ods_cext.register_op_adaptor(ConstrainedFAddIntr)
class ConstrainedFAddIntrAdaptor(_ods_ir.OpAdaptor):
  OPERATION_NAME = "llvm.intr.experimental.constrained.fadd"

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

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

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

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

def intr_experimental_constrained_fadd(arg_0: _ods_ir.Value, arg_1: _ods_ir.Value, roundingmode: _Union[_Any, _ods_ir.Attribute], fp_exception_behavior: _Union[_Any, _ods_ir.Attribute], *, results: _Optional[_Sequence[_ods_ir.Type]] = None, loc: _Optional[_ods_ir.Location] = None, ip: _Optional[_ods_ir.InsertionPoint] = None) -> _ods_ir.OpResult:
  return ConstrainedFAddIntr(arg_0=arg_0, arg_1=arg_1, roundingmode=roundingmode, fpExceptionBehavior=fp_exception_behavior, results=results, loc=loc, ip=ip).result

@_ods_cext.register_operation(_Dialect)
class ConstrainedFDivIntr(_ods_ir.OpView):
  OPERATION_NAME = "llvm.intr.experimental.constrained.fdiv"

  _ODS_REGIONS = (0, True)

  def __init__(self, arg_0: _ods_ir.Value, arg_1: _ods_ir.Value, roundingmode: _Union[_Any, _ods_ir.Attribute], fpExceptionBehavior: _Union[_Any, _ods_ir.Attribute], *, results: _Optional[_Sequence[_ods_ir.Type]] = None, loc: _Optional[_ods_ir.Location] = None, ip: _Optional[_ods_ir.InsertionPoint] = None):
    operands = []
    attributes = {}
    regions = None
    operands.append(arg_0)
    operands.append(arg_1)
    _ods_context = _ods_get_default_loc_context(loc)
    attributes["roundingmode"] = (roundingmode if (
    isinstance(roundingmode, _ods_ir.Attribute) or
    not _ods_ir.AttrBuilder.contains('ValidRoundingModeAttr')) else
      _ods_ir.AttrBuilder.get('ValidRoundingModeAttr')(roundingmode, context=_ods_context))
    attributes["fpExceptionBehavior"] = (fpExceptionBehavior if (
    isinstance(fpExceptionBehavior, _ods_ir.Attribute) or
    not _ods_ir.AttrBuilder.contains('FPExceptionBehaviorAttr')) else
      _ods_ir.AttrBuilder.get('FPExceptionBehaviorAttr')(fpExceptionBehavior, context=_ods_context))
    if results is None: results = [operands[0].type] * 1
    _ods_successors = None
    super().__init__(self.OPERATION_NAME, self._ODS_REGIONS, self._ODS_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_0(self) -> _ods_ir.Value:
    return self.operation.operands[0]

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

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

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

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

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

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

@_ods_cext.register_op_adaptor(ConstrainedFDivIntr)
class ConstrainedFDivIntrAdaptor(_ods_ir.OpAdaptor):
  OPERATION_NAME = "llvm.intr.experimental.constrained.fdiv"

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

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

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

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

def intr_experimental_constrained_fdiv(arg_0: _ods_ir.Value, arg_1: _ods_ir.Value, roundingmode: _Union[_Any, _ods_ir.Attribute], fp_exception_behavior: _Union[_Any, _ods_ir.Attribute], *, results: _Optional[_Sequence[_ods_ir.Type]] = None, loc: _Optional[_ods_ir.Location] = None, ip: _Optional[_ods_ir.InsertionPoint] = None) -> _ods_ir.OpResult:
  return ConstrainedFDivIntr(arg_0=arg_0, arg_1=arg_1, roundingmode=roundingmode, fpExceptionBehavior=fp_exception_behavior, results=results, loc=loc, ip=ip).result

@_ods_cext.register_operation(_Dialect)
class ConstrainedFMAIntr(_ods_ir.OpView):
  OPERATION_NAME = "llvm.intr.experimental.constrained.fma"

  _ODS_REGIONS = (0, True)

  def __init__(self, arg_0: _ods_ir.Value, arg_1: _ods_ir.Value, arg_2: _ods_ir.Value, roundingmode: _Union[_Any, _ods_ir.Attribute], fpExceptionBehavior: _Union[_Any, _ods_ir.Attribute], *, results: _Optional[_Sequence[_ods_ir.Type]] = None, loc: _Optional[_ods_ir.Location] = None, ip: _Optional[_ods_ir.InsertionPoint] = None):
    operands = []
    attributes = {}
    regions = None
    operands.append(arg_0)
    operands.append(arg_1)
    operands.append(arg_2)
    _ods_context = _ods_get_default_loc_context(loc)
    attributes["roundingmode"] = (roundingmode if (
    isinstance(roundingmode, _ods_ir.Attribute) or
    not _ods_ir.AttrBuilder.contains('ValidRoundingModeAttr')) else
      _ods_ir.AttrBuilder.get('ValidRoundingModeAttr')(roundingmode, context=_ods_context))
    attributes["fpExceptionBehavior"] = (fpExceptionBehavior if (
    isinstance(fpExceptionBehavior, _ods_ir.Attribute) or
    not _ods_ir.AttrBuilder.contains('FPExceptionBehaviorAttr')) else
      _ods_ir.AttrBuilder.get('FPExceptionBehaviorAttr')(fpExceptionBehavior, context=_ods_context))
    if results is None: results = [operands[0].type] * 1
    _ods_successors = None
    super().__init__(self.OPERATION_NAME, self._ODS_REGIONS, self._ODS_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_0(self) -> _ods_ir.Value:
    return self.operation.operands[0]

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

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

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

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

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

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

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

@_ods_cext.register_op_adaptor(ConstrainedFMAIntr)
class ConstrainedFMAIntrAdaptor(_ods_ir.OpAdaptor):
  OPERATION_NAME = "llvm.intr.experimental.constrained.fma"

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

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

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

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

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

def intr_experimental_constrained_fma(arg_0: _ods_ir.Value, arg_1: _ods_ir.Value, arg_2: _ods_ir.Value, roundingmode: _Union[_Any, _ods_ir.Attribute], fp_exception_behavior: _Union[_Any, _ods_ir.Attribute], *, results: _Optional[_Sequence[_ods_ir.Type]] = None, loc: _Optional[_ods_ir.Location] = None, ip: _Optional[_ods_ir.InsertionPoint] = None) -> _ods_ir.OpResult:
  return ConstrainedFMAIntr(arg_0=arg_0, arg_1=arg_1, arg_2=arg_2, roundingmode=roundingmode, fpExceptionBehavior=fp_exception_behavior, results=results, loc=loc, ip=ip).result

@_ods_cext.register_operation(_Dialect)
class ConstrainedFMulAddIntr(_ods_ir.OpView):
  OPERATION_NAME = "llvm.intr.experimental.constrained.fmuladd"

  _ODS_REGIONS = (0, True)

  def __init__(self, arg_0: _ods_ir.Value, arg_1: _ods_ir.Value, arg_2: _ods_ir.Value, roundingmode: _Union[_Any, _ods_ir.Attribute], fpExceptionBehavior: _Union[_Any, _ods_ir.Attribute], *, results: _Optional[_Sequence[_ods_ir.Type]] = None, loc: _Optional[_ods_ir.Location] = None, ip: _Optional[_ods_ir.InsertionPoint] = None):
    operands = []
    attributes = {}
    regions = None
    operands.append(arg_0)
    operands.append(arg_1)
    operands.append(arg_2)
    _ods_context = _ods_get_default_loc_context(loc)
    attributes["roundingmode"] = (roundingmode if (
    isinstance(roundingmode, _ods_ir.Attribute) or
    not _ods_ir.AttrBuilder.contains('ValidRoundingModeAttr')) else
      _ods_ir.AttrBuilder.get('ValidRoundingModeAttr')(roundingmode, context=_ods_context))
    attributes["fpExceptionBehavior"] = (fpExceptionBehavior if (
    isinstance(fpExceptionBehavior, _ods_ir.Attribute) or
    not _ods_ir.AttrBuilder.contains('FPExceptionBehaviorAttr')) else
      _ods_ir.AttrBuilder.get('FPExceptionBehaviorAttr')(fpExceptionBehavior, context=_ods_context))
    if results is None: results = [operands[0].type] * 1
    _ods_successors = None
    super().__init__(self.OPERATION_NAME, self._ODS_REGIONS, self._ODS_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_0(self) -> _ods_ir.Value:
    return self.operation.operands[0]

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

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

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

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

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

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

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

@_ods_cext.register_op_adaptor(ConstrainedFMulAddIntr)
class ConstrainedFMulAddIntrAdaptor(_ods_ir.OpAdaptor):
  OPERATION_NAME = "llvm.intr.experimental.constrained.fmuladd"

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

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

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

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

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

def intr_experimental_constrained_fmuladd(arg_0: _ods_ir.Value, arg_1: _ods_ir.Value, arg_2: _ods_ir.Value, roundingmode: _Union[_Any, _ods_ir.Attribute], fp_exception_behavior: _Union[_Any, _ods_ir.Attribute], *, results: _Optional[_Sequence[_ods_ir.Type]] = None, loc: _Optional[_ods_ir.Location] = None, ip: _Optional[_ods_ir.InsertionPoint] = None) -> _ods_ir.OpResult:
  return ConstrainedFMulAddIntr(arg_0=arg_0, arg_1=arg_1, arg_2=arg_2, roundingmode=roundingmode, fpExceptionBehavior=fp_exception_behavior, results=results, loc=loc, ip=ip).result

@_ods_cext.register_operation(_Dialect)
class ConstrainedFMulIntr(_ods_ir.OpView):
  OPERATION_NAME = "llvm.intr.experimental.constrained.fmul"

  _ODS_REGIONS = (0, True)

  def __init__(self, arg_0: _ods_ir.Value, arg_1: _ods_ir.Value, roundingmode: _Union[_Any, _ods_ir.Attribute], fpExceptionBehavior: _Union[_Any, _ods_ir.Attribute], *, results: _Optional[_Sequence[_ods_ir.Type]] = None, loc: _Optional[_ods_ir.Location] = None, ip: _Optional[_ods_ir.InsertionPoint] = None):
    operands = []
    attributes = {}
    regions = None
    operands.append(arg_0)
    operands.append(arg_1)
    _ods_context = _ods_get_default_loc_context(loc)
    attributes["roundingmode"] = (roundingmode if (
    isinstance(roundingmode, _ods_ir.Attribute) or
    not _ods_ir.AttrBuilder.contains('ValidRoundingModeAttr')) else
      _ods_ir.AttrBuilder.get('ValidRoundingModeAttr')(roundingmode, context=_ods_context))
    attributes["fpExceptionBehavior"] = (fpExceptionBehavior if (
    isinstance(fpExceptionBehavior, _ods_ir.Attribute) or
    not _ods_ir.AttrBuilder.contains('FPExceptionBehaviorAttr')) else
      _ods_ir.AttrBuilder.get('FPExceptionBehaviorAttr')(fpExceptionBehavior, context=_ods_context))
    if results is None: results = [operands[0].type] * 1
    _ods_successors = None
    super().__init__(self.OPERATION_NAME, self._ODS_REGIONS, self._ODS_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_0(self) -> _ods_ir.Value:
    return self.operation.operands[0]

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

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

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

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

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

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

@_ods_cext.register_op_adaptor(ConstrainedFMulIntr)
class ConstrainedFMulIntrAdaptor(_ods_ir.OpAdaptor):
  OPERATION_NAME = "llvm.intr.experimental.constrained.fmul"

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

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

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

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

def intr_experimental_constrained_fmul(arg_0: _ods_ir.Value, arg_1: _ods_ir.Value, roundingmode: _Union[_Any, _ods_ir.Attribute], fp_exception_behavior: _Union[_Any, _ods_ir.Attribute], *, results: _Optional[_Sequence[_ods_ir.Type]] = None, loc: _Optional[_ods_ir.Location] = None, ip: _Optional[_ods_ir.InsertionPoint] = None) -> _ods_ir.OpResult:
  return ConstrainedFMulIntr(arg_0=arg_0, arg_1=arg_1, roundingmode=roundingmode, fpExceptionBehavior=fp_exception_behavior, results=results, loc=loc, ip=ip).result

@_ods_cext.register_operation(_Dialect)
class ConstrainedFPExtIntr(_ods_ir.OpView):
  OPERATION_NAME = "llvm.intr.experimental.constrained.fpext"

  _ODS_REGIONS = (0, True)

  def __init__(self, res: _ods_ir.Type, arg_0: _ods_ir.Value, fpExceptionBehavior: _Union[_Any, _ods_ir.Attribute], *, loc: _Optional[_ods_ir.Location] = None, ip: _Optional[_ods_ir.InsertionPoint] = None):
    operands = []
    attributes = {}
    regions = None
    operands.append(arg_0)
    _ods_context = _ods_get_default_loc_context(loc)
    attributes["fpExceptionBehavior"] = (fpExceptionBehavior if (
    isinstance(fpExceptionBehavior, _ods_ir.Attribute) or
    not _ods_ir.AttrBuilder.contains('FPExceptionBehaviorAttr')) else
      _ods_ir.AttrBuilder.get('FPExceptionBehaviorAttr')(fpExceptionBehavior, 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 arg_0(self) -> _ods_ir.Value:
    return self.operation.operands[0]

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

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

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

@_ods_cext.register_op_adaptor(ConstrainedFPExtIntr)
class ConstrainedFPExtIntrAdaptor(_ods_ir.OpAdaptor):
  OPERATION_NAME = "llvm.intr.experimental.constrained.fpext"

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

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

def intr_experimental_constrained_fpext(res: _ods_ir.Type, arg_0: _ods_ir.Value, fp_exception_behavior: _Union[_Any, _ods_ir.Attribute], *, loc: _Optional[_ods_ir.Location] = None, ip: _Optional[_ods_ir.InsertionPoint] = None) -> _ods_ir.OpResult:
  return ConstrainedFPExtIntr(res=res, arg_0=arg_0, fpExceptionBehavior=fp_exception_behavior, loc=loc, ip=ip).result

@_ods_cext.register_operation(_Dialect)
class ConstrainedFPTruncIntr(_ods_ir.OpView):
  OPERATION_NAME = "llvm.intr.experimental.constrained.fptrunc"

  _ODS_REGIONS = (0, True)

  def __init__(self, res: _ods_ir.Type, arg_0: _ods_ir.Value, roundingmode: _Union[_Any, _ods_ir.Attribute], fpExceptionBehavior: _Union[_Any, _ods_ir.Attribute], *, loc: _Optional[_ods_ir.Location] = None, ip: _Optional[_ods_ir.InsertionPoint] = None):
    operands = []
    attributes = {}
    regions = None
    operands.append(arg_0)
    _ods_context = _ods_get_default_loc_context(loc)
    attributes["roundingmode"] = (roundingmode if (
    isinstance(roundingmode, _ods_ir.Attribute) or
    not _ods_ir.AttrBuilder.contains('ValidRoundingModeAttr')) else
      _ods_ir.AttrBuilder.get('ValidRoundingModeAttr')(roundingmode, context=_ods_context))
    attributes["fpExceptionBehavior"] = (fpExceptionBehavior if (
    isinstance(fpExceptionBehavior, _ods_ir.Attribute) or
    not _ods_ir.AttrBuilder.contains('FPExceptionBehaviorAttr')) else
      _ods_ir.AttrBuilder.get('FPExceptionBehaviorAttr')(fpExceptionBehavior, 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 arg_0(self) -> _ods_ir.Value:
    return self.operation.operands[0]

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

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

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

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

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

@_ods_cext.register_op_adaptor(ConstrainedFPTruncIntr)
class ConstrainedFPTruncIntrAdaptor(_ods_ir.OpAdaptor):
  OPERATION_NAME = "llvm.intr.experimental.constrained.fptrunc"

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

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

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

def intr_experimental_constrained_fptrunc(res: _ods_ir.Type, arg_0: _ods_ir.Value, roundingmode: _Union[_Any, _ods_ir.Attribute], fp_exception_behavior: _Union[_Any, _ods_ir.Attribute], *, loc: _Optional[_ods_ir.Location] = None, ip: _Optional[_ods_ir.InsertionPoint] = None) -> _ods_ir.OpResult:
  return ConstrainedFPTruncIntr(res=res, arg_0=arg_0, roundingmode=roundingmode, fpExceptionBehavior=fp_exception_behavior, loc=loc, ip=ip).result

@_ods_cext.register_operation(_Dialect)
class ConstrainedFRemIntr(_ods_ir.OpView):
  OPERATION_NAME = "llvm.intr.experimental.constrained.frem"

  _ODS_REGIONS = (0, True)

  def __init__(self, arg_0: _ods_ir.Value, arg_1: _ods_ir.Value, roundingmode: _Union[_Any, _ods_ir.Attribute], fpExceptionBehavior: _Union[_Any, _ods_ir.Attribute], *, results: _Optional[_Sequence[_ods_ir.Type]] = None, loc: _Optional[_ods_ir.Location] = None, ip: _Optional[_ods_ir.InsertionPoint] = None):
    operands = []
    attributes = {}
    regions = None
    operands.append(arg_0)
    operands.append(arg_1)
    _ods_context = _ods_get_default_loc_context(loc)
    attributes["roundingmode"] = (roundingmode if (
    isinstance(roundingmode, _ods_ir.Attribute) or
    not _ods_ir.AttrBuilder.contains('ValidRoundingModeAttr')) else
      _ods_ir.AttrBuilder.get('ValidRoundingModeAttr')(roundingmode, context=_ods_context))
    attributes["fpExceptionBehavior"] = (fpExceptionBehavior if (
    isinstance(fpExceptionBehavior, _ods_ir.Attribute) or
    not _ods_ir.AttrBuilder.contains('FPExceptionBehaviorAttr')) else
      _ods_ir.AttrBuilder.get('FPExceptionBehaviorAttr')(fpExceptionBehavior, context=_ods_context))
    if results is None: results = [operands[0].type] * 1
    _ods_successors = None
    super().__init__(self.OPERATION_NAME, self._ODS_REGIONS, self._ODS_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_0(self) -> _ods_ir.Value:
    return self.operation.operands[0]

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

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

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

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

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

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

@_ods_cext.register_op_adaptor(ConstrainedFRemIntr)
class ConstrainedFRemIntrAdaptor(_ods_ir.OpAdaptor):
  OPERATION_NAME = "llvm.intr.experimental.constrained.frem"

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

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

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

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

def intr_experimental_constrained_frem(arg_0: _ods_ir.Value, arg_1: _ods_ir.Value, roundingmode: _Union[_Any, _ods_ir.Attribute], fp_exception_behavior: _Union[_Any, _ods_ir.Attribute], *, results: _Optional[_Sequence[_ods_ir.Type]] = None, loc: _Optional[_ods_ir.Location] = None, ip: _Optional[_ods_ir.InsertionPoint] = None) -> _ods_ir.OpResult:
  return ConstrainedFRemIntr(arg_0=arg_0, arg_1=arg_1, roundingmode=roundingmode, fpExceptionBehavior=fp_exception_behavior, results=results, loc=loc, ip=ip).result

@_ods_cext.register_operation(_Dialect)
class ConstrainedFSubIntr(_ods_ir.OpView):
  OPERATION_NAME = "llvm.intr.experimental.constrained.fsub"

  _ODS_REGIONS = (0, True)

  def __init__(self, arg_0: _ods_ir.Value, arg_1: _ods_ir.Value, roundingmode: _Union[_Any, _ods_ir.Attribute], fpExceptionBehavior: _Union[_Any, _ods_ir.Attribute], *, results: _Optional[_Sequence[_ods_ir.Type]] = None, loc: _Optional[_ods_ir.Location] = None, ip: _Optional[_ods_ir.InsertionPoint] = None):
    operands = []
    attributes = {}
    regions = None
    operands.append(arg_0)
    operands.append(arg_1)
    _ods_context = _ods_get_default_loc_context(loc)
    attributes["roundingmode"] = (roundingmode if (
    isinstance(roundingmode, _ods_ir.Attribute) or
    not _ods_ir.AttrBuilder.contains('ValidRoundingModeAttr')) else
      _ods_ir.AttrBuilder.get('ValidRoundingModeAttr')(roundingmode, context=_ods_context))
    attributes["fpExceptionBehavior"] = (fpExceptionBehavior if (
    isinstance(fpExceptionBehavior, _ods_ir.Attribute) or
    not _ods_ir.AttrBuilder.contains('FPExceptionBehaviorAttr')) else
      _ods_ir.AttrBuilder.get('FPExceptionBehaviorAttr')(fpExceptionBehavior, context=_ods_context))
    if results is None: results = [operands[0].type] * 1
    _ods_successors = None
    super().__init__(self.OPERATION_NAME, self._ODS_REGIONS, self._ODS_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_0(self) -> _ods_ir.Value:
    return self.operation.operands[0]

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

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

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

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

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

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

@_ods_cext.register_op_adaptor(ConstrainedFSubIntr)
class ConstrainedFSubIntrAdaptor(_ods_ir.OpAdaptor):
  OPERATION_NAME = "llvm.intr.experimental.constrained.fsub"

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

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

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

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

def intr_experimental_constrained_fsub(arg_0: _ods_ir.Value, arg_1: _ods_ir.Value, roundingmode: _Union[_Any, _ods_ir.Attribute], fp_exception_behavior: _Union[_Any, _ods_ir.Attribute], *, results: _Optional[_Sequence[_ods_ir.Type]] = None, loc: _Optional[_ods_ir.Location] = None, ip: _Optional[_ods_ir.InsertionPoint] = None) -> _ods_ir.OpResult:
  return ConstrainedFSubIntr(arg_0=arg_0, arg_1=arg_1, roundingmode=roundingmode, fpExceptionBehavior=fp_exception_behavior, results=results, loc=loc, ip=ip).result

@_ods_cext.register_operation(_Dialect)
class ConstrainedSIToFP(_ods_ir.OpView):
  OPERATION_NAME = "llvm.intr.experimental.constrained.sitofp"

  _ODS_REGIONS = (0, True)

  def __init__(self, res: _ods_ir.Type, arg_0: _ods_ir.Value, roundingmode: _Union[_Any, _ods_ir.Attribute], fpExceptionBehavior: _Union[_Any, _ods_ir.Attribute], *, loc: _Optional[_ods_ir.Location] = None, ip: _Optional[_ods_ir.InsertionPoint] = None):
    operands = []
    attributes = {}
    regions = None
    operands.append(arg_0)
    _ods_context = _ods_get_default_loc_context(loc)
    attributes["roundingmode"] = (roundingmode if (
    isinstance(roundingmode, _ods_ir.Attribute) or
    not _ods_ir.AttrBuilder.contains('ValidRoundingModeAttr')) else
      _ods_ir.AttrBuilder.get('ValidRoundingModeAttr')(roundingmode, context=_ods_context))
    attributes["fpExceptionBehavior"] = (fpExceptionBehavior if (
    isinstance(fpExceptionBehavior, _ods_ir.Attribute) or
    not _ods_ir.AttrBuilder.contains('FPExceptionBehaviorAttr')) else
      _ods_ir.AttrBuilder.get('FPExceptionBehaviorAttr')(fpExceptionBehavior, 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 arg_0(self) -> _ods_ir.Value:
    return self.operation.operands[0]

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

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

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

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

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

@_ods_cext.register_op_adaptor(ConstrainedSIToFP)
class ConstrainedSIToFPAdaptor(_ods_ir.OpAdaptor):
  OPERATION_NAME = "llvm.intr.experimental.constrained.sitofp"

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

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

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

def intr_experimental_constrained_sitofp(res: _ods_ir.Type, arg_0: _ods_ir.Value, roundingmode: _Union[_Any, _ods_ir.Attribute], fp_exception_behavior: _Union[_Any, _ods_ir.Attribute], *, loc: _Optional[_ods_ir.Location] = None, ip: _Optional[_ods_ir.InsertionPoint] = None) -> _ods_ir.OpResult:
  return ConstrainedSIToFP(res=res, arg_0=arg_0, roundingmode=roundingmode, fpExceptionBehavior=fp_exception_behavior, loc=loc, ip=ip).result

@_ods_cext.register_operation(_Dialect)
class ConstrainedUIToFP(_ods_ir.OpView):
  OPERATION_NAME = "llvm.intr.experimental.constrained.uitofp"

  _ODS_REGIONS = (0, True)

  def __init__(self, res: _ods_ir.Type, arg_0: _ods_ir.Value, roundingmode: _Union[_Any, _ods_ir.Attribute], fpExceptionBehavior: _Union[_Any, _ods_ir.Attribute], *, loc: _Optional[_ods_ir.Location] = None, ip: _Optional[_ods_ir.InsertionPoint] = None):
    operands = []
    attributes = {}
    regions = None
    operands.append(arg_0)
    _ods_context = _ods_get_default_loc_context(loc)
    attributes["roundingmode"] = (roundingmode if (
    isinstance(roundingmode, _ods_ir.Attribute) or
    not _ods_ir.AttrBuilder.contains('ValidRoundingModeAttr')) else
      _ods_ir.AttrBuilder.get('ValidRoundingModeAttr')(roundingmode, context=_ods_context))
    attributes["fpExceptionBehavior"] = (fpExceptionBehavior if (
    isinstance(fpExceptionBehavior, _ods_ir.Attribute) or
    not _ods_ir.AttrBuilder.contains('FPExceptionBehaviorAttr')) else
      _ods_ir.AttrBuilder.get('FPExceptionBehaviorAttr')(fpExceptionBehavior, 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 arg_0(self) -> _ods_ir.Value:
    return self.operation.operands[0]

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

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

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

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

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

@_ods_cext.register_op_adaptor(ConstrainedUIToFP)
class ConstrainedUIToFPAdaptor(_ods_ir.OpAdaptor):
  OPERATION_NAME = "llvm.intr.experimental.constrained.uitofp"

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

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

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

def intr_experimental_constrained_uitofp(res: _ods_ir.Type, arg_0: _ods_ir.Value, roundingmode: _Union[_Any, _ods_ir.Attribute], fp_exception_behavior: _Union[_Any, _ods_ir.Attribute], *, loc: _Optional[_ods_ir.Location] = None, ip: _Optional[_ods_ir.InsertionPoint] = None) -> _ods_ir.OpResult:
  return ConstrainedUIToFP(res=res, arg_0=arg_0, roundingmode=roundingmode, fpExceptionBehavior=fp_exception_behavior, loc=loc, ip=ip).result

@_ods_cext.register_operation(_Dialect)
class CopySignOp(_ods_ir.OpView):
  OPERATION_NAME = "llvm.intr.copysign"

  _ODS_REGIONS = (0, True)

  def __init__(self, a: _ods_ir.Value, b: _ods_ir.Value, *, fastmathFlags: _Optional[_Union[_Any, _ods_ir.Attribute]] = None, results: _Optional[_Sequence[_ods_ir.Type]] = None, loc: _Optional[_ods_ir.Location] = None, ip: _Optional[_ods_ir.InsertionPoint] = None):
    operands = []
    attributes = {}
    regions = None
    operands.append(a)
    operands.append(b)
    _ods_context = _ods_get_default_loc_context(loc)
    if fastmathFlags is not None: attributes["fastmathFlags"] = (fastmathFlags if (
        isinstance(fastmathFlags, _ods_ir.Attribute) or
        not _ods_ir.AttrBuilder.contains('llvm.LLVM_FastmathFlagsAttr')) else
          _ods_ir.AttrBuilder.get('llvm.LLVM_FastmathFlagsAttr')(fastmathFlags, context=_ods_context))
    if results is None: results = [operands[0].type] * 1
    _ods_successors = None
    super().__init__(self.OPERATION_NAME, self._ODS_REGIONS, self._ODS_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 fastmathFlags(self) -> _ods_ir.Attribute:
    return self.operation.attributes["fastmathFlags"]

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

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

@_ods_cext.register_op_adaptor(CopySignOp)
class CopySignOpAdaptor(_ods_ir.OpAdaptor):
  OPERATION_NAME = "llvm.intr.copysign"

  @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 fastmathFlags(self) -> _ods_ir.Attribute:
    return self.attributes["fastmathFlags"]

def intr_copysign(a: _ods_ir.Value, b: _ods_ir.Value, *, fastmath_flags: _Optional[_Union[_Any, _ods_ir.Attribute]] = None, results: _Optional[_Sequence[_ods_ir.Type]] = None, loc: _Optional[_ods_ir.Location] = None, ip: _Optional[_ods_ir.InsertionPoint] = None) -> _ods_ir.OpResult:
  return CopySignOp(a=a, b=b, fastmathFlags=fastmath_flags, results=results, loc=loc, ip=ip).result

@_ods_cext.register_operation(_Dialect)
class CoroAlignOp(_ods_ir.OpView):
  OPERATION_NAME = "llvm.intr.coro.align"

  _ODS_REGIONS = (0, True)

  def __init__(self, res: _ods_ir.Type, *, 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 = []
    results.append(res)
    _ods_successors = None
    super().__init__(self.OPERATION_NAME, self._ODS_REGIONS, self._ODS_OPERAND_SEGMENTS, self._ODS_RESULT_SEGMENTS, attributes=attributes, results=results, operands=operands, successors=_ods_successors, regions=regions, loc=loc, ip=ip)

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

@_ods_cext.register_op_adaptor(CoroAlignOp)
class CoroAlignOpAdaptor(_ods_ir.OpAdaptor):
  OPERATION_NAME = "llvm.intr.coro.align"

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

@_ods_cext.register_operation(_Dialect)
class CoroBeginOp(_ods_ir.OpView):
  OPERATION_NAME = "llvm.intr.coro.begin"

  _ODS_REGIONS = (0, True)

  def __init__(self, res: _ods_ir.Type, token: _ods_ir.Value, mem: _ods_ir.Value, *, loc: _Optional[_ods_ir.Location] = None, ip: _Optional[_ods_ir.InsertionPoint] = None):
    operands = []
    attributes = {}
    regions = None
    operands.append(token)
    operands.append(mem)
    _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 token(self) -> _ods_ir.Value:
    return self.operation.operands[0]

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

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

@_ods_cext.register_op_adaptor(CoroBeginOp)
class CoroBeginOpAdaptor(_ods_ir.OpAdaptor):
  OPERATION_NAME = "llvm.intr.coro.begin"

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

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

def intr_coro_begin(res: _ods_ir.Type, token: _ods_ir.Value, mem: _ods_ir.Value, *, loc: _Optional[_ods_ir.Location] = None, ip: _Optional[_ods_ir.InsertionPoint] = None) -> _ods_ir.OpResult:
  return CoroBeginOp(res=res, token=token, mem=mem, loc=loc, ip=ip).result

@_ods_cext.register_operation(_Dialect)
class CoroEndOp(_ods_ir.OpView):
  OPERATION_NAME = "llvm.intr.coro.end"

  _ODS_REGIONS = (0, True)

  def __init__(self, res: _ods_ir.Type, handle: _ods_ir.Value, unwind: _ods_ir.Value[_ods_ir.IntegerType], retvals: _ods_ir.Value, *, loc: _Optional[_ods_ir.Location] = None, ip: _Optional[_ods_ir.InsertionPoint] = None):
    operands = []
    attributes = {}
    regions = None
    operands.append(handle)
    operands.append(unwind)
    operands.append(retvals)
    _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 handle(self) -> _ods_ir.Value:
    return self.operation.operands[0]

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

  @builtins.property
  def retvals(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(CoroEndOp)
class CoroEndOpAdaptor(_ods_ir.OpAdaptor):
  OPERATION_NAME = "llvm.intr.coro.end"

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

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

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

def intr_coro_end(res: _ods_ir.Type, handle: _ods_ir.Value, unwind: _ods_ir.Value[_ods_ir.IntegerType], retvals: _ods_ir.Value, *, loc: _Optional[_ods_ir.Location] = None, ip: _Optional[_ods_ir.InsertionPoint] = None) -> _ods_ir.OpResult:
  return CoroEndOp(res=res, handle=handle, unwind=unwind, retvals=retvals, loc=loc, ip=ip).result

@_ods_cext.register_operation(_Dialect)
class CoroFreeOp(_ods_ir.OpView):
  OPERATION_NAME = "llvm.intr.coro.free"

  _ODS_REGIONS = (0, True)

  def __init__(self, res: _ods_ir.Type, id: _ods_ir.Value, handle: _ods_ir.Value, *, loc: _Optional[_ods_ir.Location] = None, ip: _Optional[_ods_ir.InsertionPoint] = None):
    operands = []
    attributes = {}
    regions = None
    operands.append(id)
    operands.append(handle)
    _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 id(self) -> _ods_ir.Value:
    return self.operation.operands[0]

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

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

@_ods_cext.register_op_adaptor(CoroFreeOp)
class CoroFreeOpAdaptor(_ods_ir.OpAdaptor):
  OPERATION_NAME = "llvm.intr.coro.free"

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

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

def intr_coro_free(res: _ods_ir.Type, id: _ods_ir.Value, handle: _ods_ir.Value, *, loc: _Optional[_ods_ir.Location] = None, ip: _Optional[_ods_ir.InsertionPoint] = None) -> _ods_ir.OpResult:
  return CoroFreeOp(res=res, id=id, handle=handle, loc=loc, ip=ip).result

@_ods_cext.register_operation(_Dialect)
class CoroIdOp(_ods_ir.OpView):
  OPERATION_NAME = "llvm.intr.coro.id"

  _ODS_REGIONS = (0, True)

  def __init__(self, res: _ods_ir.Type, align: _ods_ir.Value[_ods_ir.IntegerType], promise: _ods_ir.Value, coroaddr: _ods_ir.Value, fnaddrs: _ods_ir.Value, *, loc: _Optional[_ods_ir.Location] = None, ip: _Optional[_ods_ir.InsertionPoint] = None):
    operands = []
    attributes = {}
    regions = None
    operands.append(align)
    operands.append(promise)
    operands.append(coroaddr)
    operands.append(fnaddrs)
    _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 align(self) -> _ods_ir.Value[_ods_ir.IntegerType]:
    return self.operation.operands[0]

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

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

  @builtins.property
  def fnaddrs(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(CoroIdOp)
class CoroIdOpAdaptor(_ods_ir.OpAdaptor):
  OPERATION_NAME = "llvm.intr.coro.id"

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

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

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

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

def intr_coro_id(res: _ods_ir.Type, align: _ods_ir.Value[_ods_ir.IntegerType], promise: _ods_ir.Value, coroaddr: _ods_ir.Value, fnaddrs: _ods_ir.Value, *, loc: _Optional[_ods_ir.Location] = None, ip: _Optional[_ods_ir.InsertionPoint] = None) -> _ods_ir.OpResult:
  return CoroIdOp(res=res, align=align, promise=promise, coroaddr=coroaddr, fnaddrs=fnaddrs, loc=loc, ip=ip).result

@_ods_cext.register_operation(_Dialect)
class CoroPromiseOp(_ods_ir.OpView):
  OPERATION_NAME = "llvm.intr.coro.promise"

  _ODS_REGIONS = (0, True)

  def __init__(self, res: _ods_ir.Type, handle: _ods_ir.Value, align: _ods_ir.Value[_ods_ir.IntegerType], from_: _ods_ir.Value[_ods_ir.IntegerType], *, loc: _Optional[_ods_ir.Location] = None, ip: _Optional[_ods_ir.InsertionPoint] = None):
    operands = []
    attributes = {}
    regions = None
    operands.append(handle)
    operands.append(align)
    operands.append(from_)
    _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 handle(self) -> _ods_ir.Value:
    return self.operation.operands[0]

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

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

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

@_ods_cext.register_op_adaptor(CoroPromiseOp)
class CoroPromiseOpAdaptor(_ods_ir.OpAdaptor):
  OPERATION_NAME = "llvm.intr.coro.promise"

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

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

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

def intr_coro_promise(res: _ods_ir.Type, handle: _ods_ir.Value, align: _ods_ir.Value[_ods_ir.IntegerType], from_: _ods_ir.Value[_ods_ir.IntegerType], *, loc: _Optional[_ods_ir.Location] = None, ip: _Optional[_ods_ir.InsertionPoint] = None) -> _ods_ir.OpResult:
  return CoroPromiseOp(res=res, handle=handle, align=align, from_=from_, loc=loc, ip=ip).result

@_ods_cext.register_operation(_Dialect)
class CoroResumeOp(_ods_ir.OpView):
  OPERATION_NAME = "llvm.intr.coro.resume"

  _ODS_REGIONS = (0, True)

  def __init__(self, handle: _ods_ir.Value, *, loc: _Optional[_ods_ir.Location] = None, ip: _Optional[_ods_ir.InsertionPoint] = None):
    operands = []
    attributes = {}
    regions = None
    operands.append(handle)
    _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 handle(self) -> _ods_ir.Value:
    return self.operation.operands[0]

@_ods_cext.register_op_adaptor(CoroResumeOp)
class CoroResumeOpAdaptor(_ods_ir.OpAdaptor):
  OPERATION_NAME = "llvm.intr.coro.resume"

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

def intr_coro_resume(handle: _ods_ir.Value, *, loc: _Optional[_ods_ir.Location] = None, ip: _Optional[_ods_ir.InsertionPoint] = None) -> CoroResumeOp:
  return CoroResumeOp(handle=handle, loc=loc, ip=ip)

@_ods_cext.register_operation(_Dialect)
class CoroSaveOp(_ods_ir.OpView):
  OPERATION_NAME = "llvm.intr.coro.save"

  _ODS_REGIONS = (0, True)

  def __init__(self, res: _ods_ir.Type, handle: _ods_ir.Value, *, loc: _Optional[_ods_ir.Location] = None, ip: _Optional[_ods_ir.InsertionPoint] = None):
    operands = []
    attributes = {}
    regions = None
    operands.append(handle)
    _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 handle(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(CoroSaveOp)
class CoroSaveOpAdaptor(_ods_ir.OpAdaptor):
  OPERATION_NAME = "llvm.intr.coro.save"

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

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

@_ods_cext.register_operation(_Dialect)
class CoroSizeOp(_ods_ir.OpView):
  OPERATION_NAME = "llvm.intr.coro.size"

  _ODS_REGIONS = (0, True)

  def __init__(self, res: _ods_ir.Type, *, 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 = []
    results.append(res)
    _ods_successors = None
    super().__init__(self.OPERATION_NAME, self._ODS_REGIONS, self._ODS_OPERAND_SEGMENTS, self._ODS_RESULT_SEGMENTS, attributes=attributes, results=results, operands=operands, successors=_ods_successors, regions=regions, loc=loc, ip=ip)

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

@_ods_cext.register_op_adaptor(CoroSizeOp)
class CoroSizeOpAdaptor(_ods_ir.OpAdaptor):
  OPERATION_NAME = "llvm.intr.coro.size"

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

@_ods_cext.register_operation(_Dialect)
class CoroSuspendOp(_ods_ir.OpView):
  OPERATION_NAME = "llvm.intr.coro.suspend"

  _ODS_REGIONS = (0, True)

  def __init__(self, res: _ods_ir.Type, save: _ods_ir.Value, final: _ods_ir.Value[_ods_ir.IntegerType], *, loc: _Optional[_ods_ir.Location] = None, ip: _Optional[_ods_ir.InsertionPoint] = None):
    operands = []
    attributes = {}
    regions = None
    operands.append(save)
    operands.append(final)
    _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 save(self) -> _ods_ir.Value:
    return self.operation.operands[0]

  @builtins.property
  def final(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(CoroSuspendOp)
class CoroSuspendOpAdaptor(_ods_ir.OpAdaptor):
  OPERATION_NAME = "llvm.intr.coro.suspend"

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

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

def intr_coro_suspend(res: _ods_ir.Type, save: _ods_ir.Value, final: _ods_ir.Value[_ods_ir.IntegerType], *, loc: _Optional[_ods_ir.Location] = None, ip: _Optional[_ods_ir.InsertionPoint] = None) -> _ods_ir.OpResult:
  return CoroSuspendOp(res=res, save=save, final=final, loc=loc, ip=ip).result

@_ods_cext.register_operation(_Dialect)
class CosOp(_ods_ir.OpView):
  OPERATION_NAME = "llvm.intr.cos"

  _ODS_REGIONS = (0, True)

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

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

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

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

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

@_ods_cext.register_op_adaptor(CosOp)
class CosOpAdaptor(_ods_ir.OpAdaptor):
  OPERATION_NAME = "llvm.intr.cos"

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

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

def intr_cos(in_: _ods_ir.Value, *, fastmath_flags: _Optional[_Union[_Any, _ods_ir.Attribute]] = None, results: _Optional[_Sequence[_ods_ir.Type]] = None, loc: _Optional[_ods_ir.Location] = None, ip: _Optional[_ods_ir.InsertionPoint] = None) -> _ods_ir.OpResult:
  return CosOp(in_=in_, fastmathFlags=fastmath_flags, results=results, loc=loc, ip=ip).result

@_ods_cext.register_operation(_Dialect)
class CoshOp(_ods_ir.OpView):
  OPERATION_NAME = "llvm.intr.cosh"

  _ODS_REGIONS = (0, True)

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

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

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

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

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

@_ods_cext.register_op_adaptor(CoshOp)
class CoshOpAdaptor(_ods_ir.OpAdaptor):
  OPERATION_NAME = "llvm.intr.cosh"

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

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

def intr_cosh(in_: _ods_ir.Value, *, fastmath_flags: _Optional[_Union[_Any, _ods_ir.Attribute]] = None, results: _Optional[_Sequence[_ods_ir.Type]] = None, loc: _Optional[_ods_ir.Location] = None, ip: _Optional[_ods_ir.InsertionPoint] = None) -> _ods_ir.OpResult:
  return CoshOp(in_=in_, fastmathFlags=fastmath_flags, results=results, loc=loc, ip=ip).result

@_ods_cext.register_operation(_Dialect)
class CountLeadingZerosOp(_ods_ir.OpView):
  OPERATION_NAME = "llvm.intr.ctlz"

  _ODS_REGIONS = (0, True)

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

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

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

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

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

@_ods_cext.register_op_adaptor(CountLeadingZerosOp)
class CountLeadingZerosOpAdaptor(_ods_ir.OpAdaptor):
  OPERATION_NAME = "llvm.intr.ctlz"

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

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

def intr_ctlz(in_: _ods_ir.Value, is_zero_poison: _Union[bool, _ods_ir.BoolAttr], *, results: _Optional[_Sequence[_ods_ir.Type]] = None, loc: _Optional[_ods_ir.Location] = None, ip: _Optional[_ods_ir.InsertionPoint] = None) -> _ods_ir.OpResult:
  return CountLeadingZerosOp(in_=in_, is_zero_poison=is_zero_poison, results=results, loc=loc, ip=ip).result

@_ods_cext.register_operation(_Dialect)
class CountTrailingZerosOp(_ods_ir.OpView):
  OPERATION_NAME = "llvm.intr.cttz"

  _ODS_REGIONS = (0, True)

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

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

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

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

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

@_ods_cext.register_op_adaptor(CountTrailingZerosOp)
class CountTrailingZerosOpAdaptor(_ods_ir.OpAdaptor):
  OPERATION_NAME = "llvm.intr.cttz"

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

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

def intr_cttz(in_: _ods_ir.Value, is_zero_poison: _Union[bool, _ods_ir.BoolAttr], *, results: _Optional[_Sequence[_ods_ir.Type]] = None, loc: _Optional[_ods_ir.Location] = None, ip: _Optional[_ods_ir.InsertionPoint] = None) -> _ods_ir.OpResult:
  return CountTrailingZerosOp(in_=in_, is_zero_poison=is_zero_poison, results=results, loc=loc, ip=ip).result

@_ods_cext.register_operation(_Dialect)
class CtPopOp(_ods_ir.OpView):
  OPERATION_NAME = "llvm.intr.ctpop"

  _ODS_REGIONS = (0, True)

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

  @builtins.property
  def in_(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(CtPopOp)
class CtPopOpAdaptor(_ods_ir.OpAdaptor):
  OPERATION_NAME = "llvm.intr.ctpop"

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

def intr_ctpop(in_: _ods_ir.Value, *, results: _Optional[_Sequence[_ods_ir.Type]] = None, loc: _Optional[_ods_ir.Location] = None, ip: _Optional[_ods_ir.InsertionPoint] = None) -> _ods_ir.OpResult:
  return CtPopOp(in_=in_, results=results, loc=loc, ip=ip).result

@_ods_cext.register_operation(_Dialect)
class DSOLocalEquivalentOp(_ods_ir.OpView):
  r"""
  Creates an SSA value containing a pointer to a global value (function or
  alias to function). It represents a function which is functionally
  equivalent to a given function, but is always defined in the current
  linkage unit. The target function may not have `extern_weak` linkage.
  
  Examples:
  
  ```mlir
  llvm.mlir.global external constant @const() : i64 {
    %0 = llvm.mlir.addressof @const : !llvm.ptr
    %1 = llvm.ptrtoint %0 : !llvm.ptr to i64
    %2 = llvm.dso_local_equivalent @func : !llvm.ptr
    %4 = llvm.ptrtoint %2 : !llvm.ptr to i64
    llvm.return %4 : i64
  }
  ```
  """

  OPERATION_NAME = "llvm.dso_local_equivalent"

  _ODS_REGIONS = (0, True)

  def __init__(self, res: _ods_ir.Type, function_name: _Union[str, _ods_ir.FlatSymbolRefAttr], *, 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["function_name"] = (function_name if (
    isinstance(function_name, _ods_ir.Attribute) or
    not _ods_ir.AttrBuilder.contains('FlatSymbolRefAttr')) else
      _ods_ir.AttrBuilder.get('FlatSymbolRefAttr')(function_name, 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 function_name(self) -> _ods_ir.FlatSymbolRefAttr:
    return self.operation.attributes["function_name"]

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

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

@_ods_cext.register_op_adaptor(DSOLocalEquivalentOp)
class DSOLocalEquivalentOpAdaptor(_ods_ir.OpAdaptor):
  OPERATION_NAME = "llvm.dso_local_equivalent"

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

def dso_local_equivalent(res: _ods_ir.Type, function_name: _Union[str, _ods_ir.FlatSymbolRefAttr], *, loc: _Optional[_ods_ir.Location] = None, ip: _Optional[_ods_ir.InsertionPoint] = None) -> _ods_ir.OpResult:
  return DSOLocalEquivalentOp(res=res, function_name=function_name, loc=loc, ip=ip).result

@_ods_cext.register_operation(_Dialect)
class DbgDeclareOp(_ods_ir.OpView):
  OPERATION_NAME = "llvm.intr.dbg.declare"

  _ODS_REGIONS = (0, True)

  def __init__(self, addr: _ods_ir.Value, varInfo: _Union[_Any, _ods_ir.Attribute], *, locationExpr: _Optional[_Union[_Any, _ods_ir.Attribute]] = None, loc: _Optional[_ods_ir.Location] = None, ip: _Optional[_ods_ir.InsertionPoint] = None):
    operands = []
    attributes = {}
    regions = None
    operands.append(addr)
    _ods_context = _ods_get_default_loc_context(loc)
    attributes["varInfo"] = (varInfo if (
    isinstance(varInfo, _ods_ir.Attribute) or
    not _ods_ir.AttrBuilder.contains('LLVM_DILocalVariableAttr')) else
      _ods_ir.AttrBuilder.get('LLVM_DILocalVariableAttr')(varInfo, context=_ods_context))
    if locationExpr is not None: attributes["locationExpr"] = (locationExpr if (
        isinstance(locationExpr, _ods_ir.Attribute) or
        not _ods_ir.AttrBuilder.contains('LLVM_DIExpressionAttr')) else
          _ods_ir.AttrBuilder.get('LLVM_DIExpressionAttr')(locationExpr, 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 addr(self) -> _ods_ir.Value:
    return self.operation.operands[0]

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

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

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

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

@_ods_cext.register_op_adaptor(DbgDeclareOp)
class DbgDeclareOpAdaptor(_ods_ir.OpAdaptor):
  OPERATION_NAME = "llvm.intr.dbg.declare"

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

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

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

def intr_dbg_declare(addr: _ods_ir.Value, var_info: _Union[_Any, _ods_ir.Attribute], *, location_expr: _Optional[_Union[_Any, _ods_ir.Attribute]] = None, loc: _Optional[_ods_ir.Location] = None, ip: _Optional[_ods_ir.InsertionPoint] = None) -> DbgDeclareOp:
  return DbgDeclareOp(addr=addr, varInfo=var_info, locationExpr=location_expr, loc=loc, ip=ip)

@_ods_cext.register_operation(_Dialect)
class DbgLabelOp(_ods_ir.OpView):
  OPERATION_NAME = "llvm.intr.dbg.label"

  _ODS_REGIONS = (0, True)

  def __init__(self, label: _Union[_Any, _ods_ir.Attribute], *, 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["label"] = (label if (
    isinstance(label, _ods_ir.Attribute) or
    not _ods_ir.AttrBuilder.contains('LLVM_DILabelAttr')) else
      _ods_ir.AttrBuilder.get('LLVM_DILabelAttr')(label, 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 label(self) -> _ods_ir.Attribute:
    return self.operation.attributes["label"]

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

@_ods_cext.register_op_adaptor(DbgLabelOp)
class DbgLabelOpAdaptor(_ods_ir.OpAdaptor):
  OPERATION_NAME = "llvm.intr.dbg.label"

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

def intr_dbg_label(label: _Union[_Any, _ods_ir.Attribute], *, loc: _Optional[_ods_ir.Location] = None, ip: _Optional[_ods_ir.InsertionPoint] = None) -> DbgLabelOp:
  return DbgLabelOp(label=label, loc=loc, ip=ip)

@_ods_cext.register_operation(_Dialect)
class DbgValueOp(_ods_ir.OpView):
  OPERATION_NAME = "llvm.intr.dbg.value"

  _ODS_REGIONS = (0, True)

  def __init__(self, value: _ods_ir.Value, varInfo: _Union[_Any, _ods_ir.Attribute], *, locationExpr: _Optional[_Union[_Any, _ods_ir.Attribute]] = None, loc: _Optional[_ods_ir.Location] = None, ip: _Optional[_ods_ir.InsertionPoint] = None):
    operands = []
    attributes = {}
    regions = None
    operands.append(value)
    _ods_context = _ods_get_default_loc_context(loc)
    attributes["varInfo"] = (varInfo if (
    isinstance(varInfo, _ods_ir.Attribute) or
    not _ods_ir.AttrBuilder.contains('LLVM_DILocalVariableAttr')) else
      _ods_ir.AttrBuilder.get('LLVM_DILocalVariableAttr')(varInfo, context=_ods_context))
    if locationExpr is not None: attributes["locationExpr"] = (locationExpr if (
        isinstance(locationExpr, _ods_ir.Attribute) or
        not _ods_ir.AttrBuilder.contains('LLVM_DIExpressionAttr')) else
          _ods_ir.AttrBuilder.get('LLVM_DIExpressionAttr')(locationExpr, 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 value(self) -> _ods_ir.Value:
    return self.operation.operands[0]

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

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

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

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

@_ods_cext.register_op_adaptor(DbgValueOp)
class DbgValueOpAdaptor(_ods_ir.OpAdaptor):
  OPERATION_NAME = "llvm.intr.dbg.value"

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

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

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

def intr_dbg_value(value: _ods_ir.Value, var_info: _Union[_Any, _ods_ir.Attribute], *, location_expr: _Optional[_Union[_Any, _ods_ir.Attribute]] = None, loc: _Optional[_ods_ir.Location] = None, ip: _Optional[_ods_ir.InsertionPoint] = None) -> DbgValueOp:
  return DbgValueOp(value=value, varInfo=var_info, locationExpr=location_expr, loc=loc, ip=ip)

@_ods_cext.register_operation(_Dialect)
class DebugTrap(_ods_ir.OpView):
  OPERATION_NAME = "llvm.intr.debugtrap"

  _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(DebugTrap)
class DebugTrapAdaptor(_ods_ir.OpAdaptor):
  OPERATION_NAME = "llvm.intr.debugtrap"

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

@_ods_cext.register_operation(_Dialect)
class EhTypeidForOp(_ods_ir.OpView):
  OPERATION_NAME = "llvm.intr.eh.typeid.for"

  _ODS_REGIONS = (0, True)

  def __init__(self, res: _ods_ir.Type, type_info: _ods_ir.Value, *, loc: _Optional[_ods_ir.Location] = None, ip: _Optional[_ods_ir.InsertionPoint] = None):
    operands = []
    attributes = {}
    regions = None
    operands.append(type_info)
    _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 type_info(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(EhTypeidForOp)
class EhTypeidForOpAdaptor(_ods_ir.OpAdaptor):
  OPERATION_NAME = "llvm.intr.eh.typeid.for"

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

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

@_ods_cext.register_operation(_Dialect)
class Exp2Op(_ods_ir.OpView):
  OPERATION_NAME = "llvm.intr.exp2"

  _ODS_REGIONS = (0, True)

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

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

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

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

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

@_ods_cext.register_op_adaptor(Exp2Op)
class Exp2OpAdaptor(_ods_ir.OpAdaptor):
  OPERATION_NAME = "llvm.intr.exp2"

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

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

def intr_exp2(in_: _ods_ir.Value, *, fastmath_flags: _Optional[_Union[_Any, _ods_ir.Attribute]] = None, results: _Optional[_Sequence[_ods_ir.Type]] = None, loc: _Optional[_ods_ir.Location] = None, ip: _Optional[_ods_ir.InsertionPoint] = None) -> _ods_ir.OpResult:
  return Exp2Op(in_=in_, fastmathFlags=fastmath_flags, results=results, loc=loc, ip=ip).result

@_ods_cext.register_operation(_Dialect)
class Exp10Op(_ods_ir.OpView):
  OPERATION_NAME = "llvm.intr.exp10"

  _ODS_REGIONS = (0, True)

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

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

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

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

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

@_ods_cext.register_op_adaptor(Exp10Op)
class Exp10OpAdaptor(_ods_ir.OpAdaptor):
  OPERATION_NAME = "llvm.intr.exp10"

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

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

def intr_exp10(in_: _ods_ir.Value, *, fastmath_flags: _Optional[_Union[_Any, _ods_ir.Attribute]] = None, results: _Optional[_Sequence[_ods_ir.Type]] = None, loc: _Optional[_ods_ir.Location] = None, ip: _Optional[_ods_ir.InsertionPoint] = None) -> _ods_ir.OpResult:
  return Exp10Op(in_=in_, fastmathFlags=fastmath_flags, results=results, loc=loc, ip=ip).result

@_ods_cext.register_operation(_Dialect)
class ExpOp(_ods_ir.OpView):
  OPERATION_NAME = "llvm.intr.exp"

  _ODS_REGIONS = (0, True)

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

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

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

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

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

@_ods_cext.register_op_adaptor(ExpOp)
class ExpOpAdaptor(_ods_ir.OpAdaptor):
  OPERATION_NAME = "llvm.intr.exp"

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

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

def intr_exp(in_: _ods_ir.Value, *, fastmath_flags: _Optional[_Union[_Any, _ods_ir.Attribute]] = None, results: _Optional[_Sequence[_ods_ir.Type]] = None, loc: _Optional[_ods_ir.Location] = None, ip: _Optional[_ods_ir.InsertionPoint] = None) -> _ods_ir.OpResult:
  return ExpOp(in_=in_, fastmathFlags=fastmath_flags, results=results, loc=loc, ip=ip).result

@_ods_cext.register_operation(_Dialect)
class ExpectOp(_ods_ir.OpView):
  OPERATION_NAME = "llvm.intr.expect"

  _ODS_REGIONS = (0, True)

  def __init__(self, val: _ods_ir.Value[_ods_ir.IntegerType], expected: _ods_ir.Value[_ods_ir.IntegerType], *, results: _Optional[_Sequence[_ods_ir.Type]] = None, loc: _Optional[_ods_ir.Location] = None, ip: _Optional[_ods_ir.InsertionPoint] = None):
    operands = []
    attributes = {}
    regions = None
    operands.append(val)
    operands.append(expected)
    _ods_context = _ods_get_default_loc_context(loc)
    if results is None: results = [operands[0].type] * 1
    _ods_successors = None
    super().__init__(self.OPERATION_NAME, self._ODS_REGIONS, self._ODS_OPERAND_SEGMENTS, self._ODS_RESULT_SEGMENTS, attributes=attributes, results=results, operands=operands, successors=_ods_successors, regions=regions, loc=loc, ip=ip)

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

  @builtins.property
  def expected(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(ExpectOp)
class ExpectOpAdaptor(_ods_ir.OpAdaptor):
  OPERATION_NAME = "llvm.intr.expect"

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

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

def intr_expect(val: _ods_ir.Value[_ods_ir.IntegerType], expected: _ods_ir.Value[_ods_ir.IntegerType], *, results: _Optional[_Sequence[_ods_ir.Type]] = None, loc: _Optional[_ods_ir.Location] = None, ip: _Optional[_ods_ir.InsertionPoint] = None) -> _ods_ir.OpResult:
  return ExpectOp(val=val, expected=expected, results=results, loc=loc, ip=ip).result

@_ods_cext.register_operation(_Dialect)
class ExpectWithProbabilityOp(_ods_ir.OpView):
  OPERATION_NAME = "llvm.intr.expect.with.probability"

  _ODS_REGIONS = (0, True)

  def __init__(self, val: _ods_ir.Value[_ods_ir.IntegerType], expected: _ods_ir.Value[_ods_ir.IntegerType], prob: _Union[float, _ods_ir.FloatAttr], *, results: _Optional[_Sequence[_ods_ir.Type]] = None, loc: _Optional[_ods_ir.Location] = None, ip: _Optional[_ods_ir.InsertionPoint] = None):
    operands = []
    attributes = {}
    regions = None
    operands.append(val)
    operands.append(expected)
    _ods_context = _ods_get_default_loc_context(loc)
    attributes["prob"] = (prob if (
    isinstance(prob, _ods_ir.Attribute) or
    not _ods_ir.AttrBuilder.contains('F64Attr')) else
      _ods_ir.AttrBuilder.get('F64Attr')(prob, context=_ods_context))
    _ods_successors = None
    super().__init__(self.OPERATION_NAME, self._ODS_REGIONS, self._ODS_OPERAND_SEGMENTS, self._ODS_RESULT_SEGMENTS, attributes=attributes, results=results, operands=operands, successors=_ods_successors, regions=regions, loc=loc, ip=ip)

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

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

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

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

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

@_ods_cext.register_op_adaptor(ExpectWithProbabilityOp)
class ExpectWithProbabilityOpAdaptor(_ods_ir.OpAdaptor):
  OPERATION_NAME = "llvm.intr.expect.with.probability"

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

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

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

def intr_expect_with_probability(val: _ods_ir.Value[_ods_ir.IntegerType], expected: _ods_ir.Value[_ods_ir.IntegerType], prob: _Union[float, _ods_ir.FloatAttr], *, results: _Optional[_Sequence[_ods_ir.Type]] = None, loc: _Optional[_ods_ir.Location] = None, ip: _Optional[_ods_ir.InsertionPoint] = None) -> _ods_ir.OpResult:
  return ExpectWithProbabilityOp(val=val, expected=expected, prob=prob, results=results, loc=loc, ip=ip).result

@_ods_cext.register_operation(_Dialect)
class ExtractElementOp(_ods_ir.OpView):
  OPERATION_NAME = "llvm.extractelement"

  _ODS_REGIONS = (0, True)

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

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

  @builtins.property
  def position(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(ExtractElementOp)
class ExtractElementOpAdaptor(_ods_ir.OpAdaptor):
  OPERATION_NAME = "llvm.extractelement"

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

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

def extractelement(vector: _ods_ir.Value[_ods_ir.VectorType], position: _ods_ir.Value[_ods_ir.IntegerType], *, results: _Optional[_Sequence[_ods_ir.Type]] = None, loc: _Optional[_ods_ir.Location] = None, ip: _Optional[_ods_ir.InsertionPoint] = None) -> _ods_ir.OpResult:
  return ExtractElementOp(vector=vector, position=position, results=results, loc=loc, ip=ip).result

@_ods_cext.register_operation(_Dialect)
class ExtractValueOp(_ods_ir.OpView):
  OPERATION_NAME = "llvm.extractvalue"

  _ODS_REGIONS = (0, True)

  def __init__(self, res: _ods_ir.Type, container: _ods_ir.Value, position: _Union[_Sequence[int], _ods_ir.DenseI64ArrayAttr], *, loc: _Optional[_ods_ir.Location] = None, ip: _Optional[_ods_ir.InsertionPoint] = None):
    operands = []
    attributes = {}
    regions = None
    operands.append(container)
    _ods_context = _ods_get_default_loc_context(loc)
    attributes["position"] = (position if (
    isinstance(position, _ods_ir.Attribute) or
    not _ods_ir.AttrBuilder.contains('DenseI64ArrayAttr')) else
      _ods_ir.AttrBuilder.get('DenseI64ArrayAttr')(position, 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 container(self) -> _ods_ir.Value:
    return self.operation.operands[0]

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

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

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

@_ods_cext.register_op_adaptor(ExtractValueOp)
class ExtractValueOpAdaptor(_ods_ir.OpAdaptor):
  OPERATION_NAME = "llvm.extractvalue"

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

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

def extractvalue(res: _ods_ir.Type, container: _ods_ir.Value, position: _Union[_Sequence[int], _ods_ir.DenseI64ArrayAttr], *, loc: _Optional[_ods_ir.Location] = None, ip: _Optional[_ods_ir.InsertionPoint] = None) -> _ods_ir.OpResult:
  return ExtractValueOp(res=res, container=container, position=position, loc=loc, ip=ip).result

@_ods_cext.register_operation(_Dialect)
class FAbsOp(_ods_ir.OpView):
  OPERATION_NAME = "llvm.intr.fabs"

  _ODS_REGIONS = (0, True)

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

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

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

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

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

@_ods_cext.register_op_adaptor(FAbsOp)
class FAbsOpAdaptor(_ods_ir.OpAdaptor):
  OPERATION_NAME = "llvm.intr.fabs"

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

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

def intr_fabs(in_: _ods_ir.Value, *, fastmath_flags: _Optional[_Union[_Any, _ods_ir.Attribute]] = None, results: _Optional[_Sequence[_ods_ir.Type]] = None, loc: _Optional[_ods_ir.Location] = None, ip: _Optional[_ods_ir.InsertionPoint] = None) -> _ods_ir.OpResult:
  return FAbsOp(in_=in_, fastmathFlags=fastmath_flags, results=results, loc=loc, ip=ip).result

@_ods_cext.register_operation(_Dialect)
class FAddOp(_ods_ir.OpView):
  OPERATION_NAME = "llvm.fadd"

  _ODS_REGIONS = (0, True)

  def __init__(self, lhs: _ods_ir.Value, rhs: _ods_ir.Value, *, fastmathFlags: _Optional[_Union[_Any, _ods_ir.Attribute]] = None, results: _Optional[_Sequence[_ods_ir.Type]] = None, loc: _Optional[_ods_ir.Location] = None, ip: _Optional[_ods_ir.InsertionPoint] = None):
    operands = []
    attributes = {}
    regions = None
    operands.append(lhs)
    operands.append(rhs)
    _ods_context = _ods_get_default_loc_context(loc)
    if fastmathFlags is not None: attributes["fastmathFlags"] = (fastmathFlags if (
        isinstance(fastmathFlags, _ods_ir.Attribute) or
        not _ods_ir.AttrBuilder.contains('llvm.LLVM_FastmathFlagsAttr')) else
          _ods_ir.AttrBuilder.get('llvm.LLVM_FastmathFlagsAttr')(fastmathFlags, context=_ods_context))
    if results is None: results = [operands[0].type] * 1
    _ods_successors = None
    super().__init__(self.OPERATION_NAME, self._ODS_REGIONS, self._ODS_OPERAND_SEGMENTS, self._ODS_RESULT_SEGMENTS, attributes=attributes, results=results, operands=operands, successors=_ods_successors, regions=regions, loc=loc, ip=ip)

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

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

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

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

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

@_ods_cext.register_op_adaptor(FAddOp)
class FAddOpAdaptor(_ods_ir.OpAdaptor):
  OPERATION_NAME = "llvm.fadd"

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

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

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

def fadd(lhs: _ods_ir.Value, rhs: _ods_ir.Value, *, fastmath_flags: _Optional[_Union[_Any, _ods_ir.Attribute]] = None, results: _Optional[_Sequence[_ods_ir.Type]] = None, loc: _Optional[_ods_ir.Location] = None, ip: _Optional[_ods_ir.InsertionPoint] = None) -> _ods_ir.OpResult:
  return FAddOp(lhs=lhs, rhs=rhs, fastmathFlags=fastmath_flags, results=results, loc=loc, ip=ip).result

@_ods_cext.register_operation(_Dialect)
class FCeilOp(_ods_ir.OpView):
  OPERATION_NAME = "llvm.intr.ceil"

  _ODS_REGIONS = (0, True)

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

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

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

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

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

@_ods_cext.register_op_adaptor(FCeilOp)
class FCeilOpAdaptor(_ods_ir.OpAdaptor):
  OPERATION_NAME = "llvm.intr.ceil"

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

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

def intr_ceil(in_: _ods_ir.Value, *, fastmath_flags: _Optional[_Union[_Any, _ods_ir.Attribute]] = None, results: _Optional[_Sequence[_ods_ir.Type]] = None, loc: _Optional[_ods_ir.Location] = None, ip: _Optional[_ods_ir.InsertionPoint] = None) -> _ods_ir.OpResult:
  return FCeilOp(in_=in_, fastmathFlags=fastmath_flags, results=results, loc=loc, ip=ip).result

@_ods_cext.register_operation(_Dialect)
class FCmpOp(_ods_ir.OpView):
  OPERATION_NAME = "llvm.fcmp"

  _ODS_REGIONS = (0, True)

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

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

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

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

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

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

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

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

@_ods_cext.register_op_adaptor(FCmpOp)
class FCmpOpAdaptor(_ods_ir.OpAdaptor):
  OPERATION_NAME = "llvm.fcmp"

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

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

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

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

def fcmp(predicate: _Union[_Any, _ods_ir.Attribute], lhs: _ods_ir.Value, rhs: _ods_ir.Value, *, fastmath_flags: _Optional[_Union[_Any, _ods_ir.Attribute]] = None, results: _Optional[_Sequence[_ods_ir.Type]] = None, loc: _Optional[_ods_ir.Location] = None, ip: _Optional[_ods_ir.InsertionPoint] = None) -> _ods_ir.OpResult:
  return FCmpOp(predicate=predicate, lhs=lhs, rhs=rhs, fastmathFlags=fastmath_flags, results=results, loc=loc, ip=ip).result

@_ods_cext.register_operation(_Dialect)
class FDivOp(_ods_ir.OpView):
  OPERATION_NAME = "llvm.fdiv"

  _ODS_REGIONS = (0, True)

  def __init__(self, lhs: _ods_ir.Value, rhs: _ods_ir.Value, *, fastmathFlags: _Optional[_Union[_Any, _ods_ir.Attribute]] = None, results: _Optional[_Sequence[_ods_ir.Type]] = None, loc: _Optional[_ods_ir.Location] = None, ip: _Optional[_ods_ir.InsertionPoint] = None):
    operands = []
    attributes = {}
    regions = None
    operands.append(lhs)
    operands.append(rhs)
    _ods_context = _ods_get_default_loc_context(loc)
    if fastmathFlags is not None: attributes["fastmathFlags"] = (fastmathFlags if (
        isinstance(fastmathFlags, _ods_ir.Attribute) or
        not _ods_ir.AttrBuilder.contains('llvm.LLVM_FastmathFlagsAttr')) else
          _ods_ir.AttrBuilder.get('llvm.LLVM_FastmathFlagsAttr')(fastmathFlags, context=_ods_context))
    if results is None: results = [operands[0].type] * 1
    _ods_successors = None
    super().__init__(self.OPERATION_NAME, self._ODS_REGIONS, self._ODS_OPERAND_SEGMENTS, self._ODS_RESULT_SEGMENTS, attributes=attributes, results=results, operands=operands, successors=_ods_successors, regions=regions, loc=loc, ip=ip)

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

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

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

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

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

@_ods_cext.register_op_adaptor(FDivOp)
class FDivOpAdaptor(_ods_ir.OpAdaptor):
  OPERATION_NAME = "llvm.fdiv"

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

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

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

def fdiv(lhs: _ods_ir.Value, rhs: _ods_ir.Value, *, fastmath_flags: _Optional[_Union[_Any, _ods_ir.Attribute]] = None, results: _Optional[_Sequence[_ods_ir.Type]] = None, loc: _Optional[_ods_ir.Location] = None, ip: _Optional[_ods_ir.InsertionPoint] = None) -> _ods_ir.OpResult:
  return FDivOp(lhs=lhs, rhs=rhs, fastmathFlags=fastmath_flags, results=results, loc=loc, ip=ip).result

@_ods_cext.register_operation(_Dialect)
class FFloorOp(_ods_ir.OpView):
  OPERATION_NAME = "llvm.intr.floor"

  _ODS_REGIONS = (0, True)

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

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

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

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

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

@_ods_cext.register_op_adaptor(FFloorOp)
class FFloorOpAdaptor(_ods_ir.OpAdaptor):
  OPERATION_NAME = "llvm.intr.floor"

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

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

def intr_floor(in_: _ods_ir.Value, *, fastmath_flags: _Optional[_Union[_Any, _ods_ir.Attribute]] = None, results: _Optional[_Sequence[_ods_ir.Type]] = None, loc: _Optional[_ods_ir.Location] = None, ip: _Optional[_ods_ir.InsertionPoint] = None) -> _ods_ir.OpResult:
  return FFloorOp(in_=in_, fastmathFlags=fastmath_flags, results=results, loc=loc, ip=ip).result

@_ods_cext.register_operation(_Dialect)
class FMAOp(_ods_ir.OpView):
  OPERATION_NAME = "llvm.intr.fma"

  _ODS_REGIONS = (0, True)

  def __init__(self, a: _ods_ir.Value, b: _ods_ir.Value, c: _ods_ir.Value, *, fastmathFlags: _Optional[_Union[_Any, _ods_ir.Attribute]] = None, results: _Optional[_Sequence[_ods_ir.Type]] = 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 fastmathFlags is not None: attributes["fastmathFlags"] = (fastmathFlags if (
        isinstance(fastmathFlags, _ods_ir.Attribute) or
        not _ods_ir.AttrBuilder.contains('llvm.LLVM_FastmathFlagsAttr')) else
          _ods_ir.AttrBuilder.get('llvm.LLVM_FastmathFlagsAttr')(fastmathFlags, context=_ods_context))
    if results is None: results = [operands[0].type] * 1
    _ods_successors = None
    super().__init__(self.OPERATION_NAME, self._ODS_REGIONS, self._ODS_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 fastmathFlags(self) -> _ods_ir.Attribute:
    return self.operation.attributes["fastmathFlags"]

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

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

@_ods_cext.register_op_adaptor(FMAOp)
class FMAOpAdaptor(_ods_ir.OpAdaptor):
  OPERATION_NAME = "llvm.intr.fma"

  @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 fastmathFlags(self) -> _ods_ir.Attribute:
    return self.attributes["fastmathFlags"]

def intr_fma(a: _ods_ir.Value, b: _ods_ir.Value, c: _ods_ir.Value, *, fastmath_flags: _Optional[_Union[_Any, _ods_ir.Attribute]] = None, results: _Optional[_Sequence[_ods_ir.Type]] = None, loc: _Optional[_ods_ir.Location] = None, ip: _Optional[_ods_ir.InsertionPoint] = None) -> _ods_ir.OpResult:
  return FMAOp(a=a, b=b, c=c, fastmathFlags=fastmath_flags, results=results, loc=loc, ip=ip).result

@_ods_cext.register_operation(_Dialect)
class FMulAddOp(_ods_ir.OpView):
  OPERATION_NAME = "llvm.intr.fmuladd"

  _ODS_REGIONS = (0, True)

  def __init__(self, a: _ods_ir.Value, b: _ods_ir.Value, c: _ods_ir.Value, *, fastmathFlags: _Optional[_Union[_Any, _ods_ir.Attribute]] = None, results: _Optional[_Sequence[_ods_ir.Type]] = 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 fastmathFlags is not None: attributes["fastmathFlags"] = (fastmathFlags if (
        isinstance(fastmathFlags, _ods_ir.Attribute) or
        not _ods_ir.AttrBuilder.contains('llvm.LLVM_FastmathFlagsAttr')) else
          _ods_ir.AttrBuilder.get('llvm.LLVM_FastmathFlagsAttr')(fastmathFlags, context=_ods_context))
    if results is None: results = [operands[0].type] * 1
    _ods_successors = None
    super().__init__(self.OPERATION_NAME, self._ODS_REGIONS, self._ODS_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 fastmathFlags(self) -> _ods_ir.Attribute:
    return self.operation.attributes["fastmathFlags"]

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

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

@_ods_cext.register_op_adaptor(FMulAddOp)
class FMulAddOpAdaptor(_ods_ir.OpAdaptor):
  OPERATION_NAME = "llvm.intr.fmuladd"

  @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 fastmathFlags(self) -> _ods_ir.Attribute:
    return self.attributes["fastmathFlags"]

def intr_fmuladd(a: _ods_ir.Value, b: _ods_ir.Value, c: _ods_ir.Value, *, fastmath_flags: _Optional[_Union[_Any, _ods_ir.Attribute]] = None, results: _Optional[_Sequence[_ods_ir.Type]] = None, loc: _Optional[_ods_ir.Location] = None, ip: _Optional[_ods_ir.InsertionPoint] = None) -> _ods_ir.OpResult:
  return FMulAddOp(a=a, b=b, c=c, fastmathFlags=fastmath_flags, results=results, loc=loc, ip=ip).result

@_ods_cext.register_operation(_Dialect)
class FMulOp(_ods_ir.OpView):
  OPERATION_NAME = "llvm.fmul"

  _ODS_REGIONS = (0, True)

  def __init__(self, lhs: _ods_ir.Value, rhs: _ods_ir.Value, *, fastmathFlags: _Optional[_Union[_Any, _ods_ir.Attribute]] = None, results: _Optional[_Sequence[_ods_ir.Type]] = None, loc: _Optional[_ods_ir.Location] = None, ip: _Optional[_ods_ir.InsertionPoint] = None):
    operands = []
    attributes = {}
    regions = None
    operands.append(lhs)
    operands.append(rhs)
    _ods_context = _ods_get_default_loc_context(loc)
    if fastmathFlags is not None: attributes["fastmathFlags"] = (fastmathFlags if (
        isinstance(fastmathFlags, _ods_ir.Attribute) or
        not _ods_ir.AttrBuilder.contains('llvm.LLVM_FastmathFlagsAttr')) else
          _ods_ir.AttrBuilder.get('llvm.LLVM_FastmathFlagsAttr')(fastmathFlags, context=_ods_context))
    if results is None: results = [operands[0].type] * 1
    _ods_successors = None
    super().__init__(self.OPERATION_NAME, self._ODS_REGIONS, self._ODS_OPERAND_SEGMENTS, self._ODS_RESULT_SEGMENTS, attributes=attributes, results=results, operands=operands, successors=_ods_successors, regions=regions, loc=loc, ip=ip)

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

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

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

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

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

@_ods_cext.register_op_adaptor(FMulOp)
class FMulOpAdaptor(_ods_ir.OpAdaptor):
  OPERATION_NAME = "llvm.fmul"

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

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

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

def fmul(lhs: _ods_ir.Value, rhs: _ods_ir.Value, *, fastmath_flags: _Optional[_Union[_Any, _ods_ir.Attribute]] = None, results: _Optional[_Sequence[_ods_ir.Type]] = None, loc: _Optional[_ods_ir.Location] = None, ip: _Optional[_ods_ir.InsertionPoint] = None) -> _ods_ir.OpResult:
  return FMulOp(lhs=lhs, rhs=rhs, fastmathFlags=fastmath_flags, results=results, loc=loc, ip=ip).result

@_ods_cext.register_operation(_Dialect)
class FNegOp(_ods_ir.OpView):
  OPERATION_NAME = "llvm.fneg"

  _ODS_REGIONS = (0, True)

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

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

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

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

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

@_ods_cext.register_op_adaptor(FNegOp)
class FNegOpAdaptor(_ods_ir.OpAdaptor):
  OPERATION_NAME = "llvm.fneg"

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

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

def fneg(operand: _ods_ir.Value, *, fastmath_flags: _Optional[_Union[_Any, _ods_ir.Attribute]] = None, results: _Optional[_Sequence[_ods_ir.Type]] = None, loc: _Optional[_ods_ir.Location] = None, ip: _Optional[_ods_ir.InsertionPoint] = None) -> _ods_ir.OpResult:
  return FNegOp(operand=operand, fastmathFlags=fastmath_flags, results=results, loc=loc, ip=ip).result

@_ods_cext.register_operation(_Dialect)
class FPExtOp(_ods_ir.OpView):
  OPERATION_NAME = "llvm.fpext"

  _ODS_REGIONS = (0, True)

  def __init__(self, res: _ods_ir.Type, arg: _ods_ir.Value, *, fastmathFlags: _Optional[_Union[_Any, _ods_ir.Attribute]] = None, 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)
    if fastmathFlags is not None: attributes["fastmathFlags"] = (fastmathFlags if (
        isinstance(fastmathFlags, _ods_ir.Attribute) or
        not _ods_ir.AttrBuilder.contains('llvm.LLVM_FastmathFlagsAttr')) else
          _ods_ir.AttrBuilder.get('llvm.LLVM_FastmathFlagsAttr')(fastmathFlags, 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 arg(self) -> _ods_ir.Value:
    return self.operation.operands[0]

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

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

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

@_ods_cext.register_op_adaptor(FPExtOp)
class FPExtOpAdaptor(_ods_ir.OpAdaptor):
  OPERATION_NAME = "llvm.fpext"

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

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

def fpext(res: _ods_ir.Type, arg: _ods_ir.Value, *, fastmath_flags: _Optional[_Union[_Any, _ods_ir.Attribute]] = None, loc: _Optional[_ods_ir.Location] = None, ip: _Optional[_ods_ir.InsertionPoint] = None) -> _ods_ir.OpResult:
  return FPExtOp(res=res, arg=arg, fastmathFlags=fastmath_flags, loc=loc, ip=ip).result

@_ods_cext.register_operation(_Dialect)
class FPToSIOp(_ods_ir.OpView):
  OPERATION_NAME = "llvm.fptosi"

  _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(FPToSIOp)
class FPToSIOpAdaptor(_ods_ir.OpAdaptor):
  OPERATION_NAME = "llvm.fptosi"

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

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

@_ods_cext.register_operation(_Dialect)
class FPToUIOp(_ods_ir.OpView):
  OPERATION_NAME = "llvm.fptoui"

  _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(FPToUIOp)
class FPToUIOpAdaptor(_ods_ir.OpAdaptor):
  OPERATION_NAME = "llvm.fptoui"

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

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

@_ods_cext.register_operation(_Dialect)
class FPTruncOp(_ods_ir.OpView):
  OPERATION_NAME = "llvm.fptrunc"

  _ODS_REGIONS = (0, True)

  def __init__(self, res: _ods_ir.Type, arg: _ods_ir.Value, *, fastmathFlags: _Optional[_Union[_Any, _ods_ir.Attribute]] = None, 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)
    if fastmathFlags is not None: attributes["fastmathFlags"] = (fastmathFlags if (
        isinstance(fastmathFlags, _ods_ir.Attribute) or
        not _ods_ir.AttrBuilder.contains('llvm.LLVM_FastmathFlagsAttr')) else
          _ods_ir.AttrBuilder.get('llvm.LLVM_FastmathFlagsAttr')(fastmathFlags, 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 arg(self) -> _ods_ir.Value:
    return self.operation.operands[0]

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

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

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

@_ods_cext.register_op_adaptor(FPTruncOp)
class FPTruncOpAdaptor(_ods_ir.OpAdaptor):
  OPERATION_NAME = "llvm.fptrunc"

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

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

def fptrunc(res: _ods_ir.Type, arg: _ods_ir.Value, *, fastmath_flags: _Optional[_Union[_Any, _ods_ir.Attribute]] = None, loc: _Optional[_ods_ir.Location] = None, ip: _Optional[_ods_ir.InsertionPoint] = None) -> _ods_ir.OpResult:
  return FPTruncOp(res=res, arg=arg, fastmathFlags=fastmath_flags, loc=loc, ip=ip).result

@_ods_cext.register_operation(_Dialect)
class FRemOp(_ods_ir.OpView):
  OPERATION_NAME = "llvm.frem"

  _ODS_REGIONS = (0, True)

  def __init__(self, lhs: _ods_ir.Value, rhs: _ods_ir.Value, *, fastmathFlags: _Optional[_Union[_Any, _ods_ir.Attribute]] = None, results: _Optional[_Sequence[_ods_ir.Type]] = None, loc: _Optional[_ods_ir.Location] = None, ip: _Optional[_ods_ir.InsertionPoint] = None):
    operands = []
    attributes = {}
    regions = None
    operands.append(lhs)
    operands.append(rhs)
    _ods_context = _ods_get_default_loc_context(loc)
    if fastmathFlags is not None: attributes["fastmathFlags"] = (fastmathFlags if (
        isinstance(fastmathFlags, _ods_ir.Attribute) or
        not _ods_ir.AttrBuilder.contains('llvm.LLVM_FastmathFlagsAttr')) else
          _ods_ir.AttrBuilder.get('llvm.LLVM_FastmathFlagsAttr')(fastmathFlags, context=_ods_context))
    if results is None: results = [operands[0].type] * 1
    _ods_successors = None
    super().__init__(self.OPERATION_NAME, self._ODS_REGIONS, self._ODS_OPERAND_SEGMENTS, self._ODS_RESULT_SEGMENTS, attributes=attributes, results=results, operands=operands, successors=_ods_successors, regions=regions, loc=loc, ip=ip)

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

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

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

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

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

@_ods_cext.register_op_adaptor(FRemOp)
class FRemOpAdaptor(_ods_ir.OpAdaptor):
  OPERATION_NAME = "llvm.frem"

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

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

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

def frem(lhs: _ods_ir.Value, rhs: _ods_ir.Value, *, fastmath_flags: _Optional[_Union[_Any, _ods_ir.Attribute]] = None, results: _Optional[_Sequence[_ods_ir.Type]] = None, loc: _Optional[_ods_ir.Location] = None, ip: _Optional[_ods_ir.InsertionPoint] = None) -> _ods_ir.OpResult:
  return FRemOp(lhs=lhs, rhs=rhs, fastmathFlags=fastmath_flags, results=results, loc=loc, ip=ip).result

@_ods_cext.register_operation(_Dialect)
class FSubOp(_ods_ir.OpView):
  OPERATION_NAME = "llvm.fsub"

  _ODS_REGIONS = (0, True)

  def __init__(self, lhs: _ods_ir.Value, rhs: _ods_ir.Value, *, fastmathFlags: _Optional[_Union[_Any, _ods_ir.Attribute]] = None, results: _Optional[_Sequence[_ods_ir.Type]] = None, loc: _Optional[_ods_ir.Location] = None, ip: _Optional[_ods_ir.InsertionPoint] = None):
    operands = []
    attributes = {}
    regions = None
    operands.append(lhs)
    operands.append(rhs)
    _ods_context = _ods_get_default_loc_context(loc)
    if fastmathFlags is not None: attributes["fastmathFlags"] = (fastmathFlags if (
        isinstance(fastmathFlags, _ods_ir.Attribute) or
        not _ods_ir.AttrBuilder.contains('llvm.LLVM_FastmathFlagsAttr')) else
          _ods_ir.AttrBuilder.get('llvm.LLVM_FastmathFlagsAttr')(fastmathFlags, context=_ods_context))
    if results is None: results = [operands[0].type] * 1
    _ods_successors = None
    super().__init__(self.OPERATION_NAME, self._ODS_REGIONS, self._ODS_OPERAND_SEGMENTS, self._ODS_RESULT_SEGMENTS, attributes=attributes, results=results, operands=operands, successors=_ods_successors, regions=regions, loc=loc, ip=ip)

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

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

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

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

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

@_ods_cext.register_op_adaptor(FSubOp)
class FSubOpAdaptor(_ods_ir.OpAdaptor):
  OPERATION_NAME = "llvm.fsub"

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

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

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

def fsub(lhs: _ods_ir.Value, rhs: _ods_ir.Value, *, fastmath_flags: _Optional[_Union[_Any, _ods_ir.Attribute]] = None, results: _Optional[_Sequence[_ods_ir.Type]] = None, loc: _Optional[_ods_ir.Location] = None, ip: _Optional[_ods_ir.InsertionPoint] = None) -> _ods_ir.OpResult:
  return FSubOp(lhs=lhs, rhs=rhs, fastmathFlags=fastmath_flags, results=results, loc=loc, ip=ip).result

@_ods_cext.register_operation(_Dialect)
class FTruncOp(_ods_ir.OpView):
  OPERATION_NAME = "llvm.intr.trunc"

  _ODS_REGIONS = (0, True)

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

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

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

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

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

@_ods_cext.register_op_adaptor(FTruncOp)
class FTruncOpAdaptor(_ods_ir.OpAdaptor):
  OPERATION_NAME = "llvm.intr.trunc"

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

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

def intr_trunc(in_: _ods_ir.Value, *, fastmath_flags: _Optional[_Union[_Any, _ods_ir.Attribute]] = None, results: _Optional[_Sequence[_ods_ir.Type]] = None, loc: _Optional[_ods_ir.Location] = None, ip: _Optional[_ods_ir.InsertionPoint] = None) -> _ods_ir.OpResult:
  return FTruncOp(in_=in_, fastmathFlags=fastmath_flags, results=results, loc=loc, ip=ip).result

@_ods_cext.register_operation(_Dialect)
class FakeUseOp(_ods_ir.OpView):
  OPERATION_NAME = "llvm.intr.fake.use"

  _ODS_REGIONS = (0, True)

  def __init__(self, args: _Sequence[_ods_ir.Value], *, loc: _Optional[_ods_ir.Location] = None, ip: _Optional[_ods_ir.InsertionPoint] = None):
    operands = []
    attributes = {}
    regions = None
    operands.extend(_get_op_results_or_values(args))
    _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 args(self) -> _ods_ir.OpOperandList:
    _ods_variadic_group_length = len(self.operation.operands) - 1 + 1
    return self.operation.operands[0:0 + _ods_variadic_group_length]

@_ods_cext.register_op_adaptor(FakeUseOp)
class FakeUseOpAdaptor(_ods_ir.OpAdaptor):
  OPERATION_NAME = "llvm.intr.fake.use"

  @builtins.property
  def args(self) -> _ods_ir.OpOperandList:
    _ods_variadic_group_length = len(self.operands) - 1 + 1
    return self.operands[0:0 + _ods_variadic_group_length]

def intr_fake_use(args: _Sequence[_ods_ir.Value], *, loc: _Optional[_ods_ir.Location] = None, ip: _Optional[_ods_ir.InsertionPoint] = None) -> FakeUseOp:
  return FakeUseOp(args=args, loc=loc, ip=ip)

@_ods_cext.register_operation(_Dialect)
class FenceOp(_ods_ir.OpView):
  OPERATION_NAME = "llvm.fence"

  _ODS_REGIONS = (0, True)

  def __init__(self, ordering: _Union[_Any, _ods_ir.Attribute], *, syncscope: _Optional[_Union[str, _ods_ir.StringAttr]] = 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)
    attributes["ordering"] = (ordering if (
    isinstance(ordering, _ods_ir.Attribute) or
    not _ods_ir.AttrBuilder.contains('AtomicOrdering')) else
      _ods_ir.AttrBuilder.get('AtomicOrdering')(ordering, context=_ods_context))
    if syncscope is not None: attributes["syncscope"] = (syncscope if (
        isinstance(syncscope, _ods_ir.Attribute) or
        not _ods_ir.AttrBuilder.contains('StrAttr')) else
          _ods_ir.AttrBuilder.get('StrAttr')(syncscope, 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 ordering(self) -> _ods_ir.Attribute:
    return self.operation.attributes["ordering"]

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

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

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

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

@_ods_cext.register_op_adaptor(FenceOp)
class FenceOpAdaptor(_ods_ir.OpAdaptor):
  OPERATION_NAME = "llvm.fence"

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

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

def fence(ordering: _Union[_Any, _ods_ir.Attribute], *, syncscope: _Optional[_Union[str, _ods_ir.StringAttr]] = None, loc: _Optional[_ods_ir.Location] = None, ip: _Optional[_ods_ir.InsertionPoint] = None) -> FenceOp:
  return FenceOp(ordering=ordering, syncscope=syncscope, loc=loc, ip=ip)

@_ods_cext.register_operation(_Dialect)
class FractionExpOp(_ods_ir.OpView):
  OPERATION_NAME = "llvm.intr.frexp"

  _ODS_REGIONS = (0, True)

  def __init__(self, res: _ods_ir.Type, val: _ods_ir.Value, *, fastmathFlags: _Optional[_Union[_Any, _ods_ir.Attribute]] = None, loc: _Optional[_ods_ir.Location] = None, ip: _Optional[_ods_ir.InsertionPoint] = None):
    operands = []
    attributes = {}
    regions = None
    operands.append(val)
    _ods_context = _ods_get_default_loc_context(loc)
    if fastmathFlags is not None: attributes["fastmathFlags"] = (fastmathFlags if (
        isinstance(fastmathFlags, _ods_ir.Attribute) or
        not _ods_ir.AttrBuilder.contains('llvm.LLVM_FastmathFlagsAttr')) else
          _ods_ir.AttrBuilder.get('llvm.LLVM_FastmathFlagsAttr')(fastmathFlags, 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 val(self) -> _ods_ir.Value:
    return self.operation.operands[0]

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

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

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

@_ods_cext.register_op_adaptor(FractionExpOp)
class FractionExpOpAdaptor(_ods_ir.OpAdaptor):
  OPERATION_NAME = "llvm.intr.frexp"

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

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

def intr_frexp(res: _ods_ir.Type, val: _ods_ir.Value, *, fastmath_flags: _Optional[_Union[_Any, _ods_ir.Attribute]] = None, loc: _Optional[_ods_ir.Location] = None, ip: _Optional[_ods_ir.InsertionPoint] = None) -> _ods_ir.OpResult:
  return FractionExpOp(res=res, val=val, fastmathFlags=fastmath_flags, loc=loc, ip=ip).result

@_ods_cext.register_operation(_Dialect)
class FreezeOp(_ods_ir.OpView):
  OPERATION_NAME = "llvm.freeze"

  _ODS_REGIONS = (0, True)

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

  @builtins.property
  def val(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(FreezeOp)
class FreezeOpAdaptor(_ods_ir.OpAdaptor):
  OPERATION_NAME = "llvm.freeze"

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

def freeze(val: _ods_ir.Value, *, results: _Optional[_Sequence[_ods_ir.Type]] = None, loc: _Optional[_ods_ir.Location] = None, ip: _Optional[_ods_ir.InsertionPoint] = None) -> _ods_ir.OpResult:
  return FreezeOp(val=val, results=results, loc=loc, ip=ip).result

@_ods_cext.register_operation(_Dialect)
class FshlOp(_ods_ir.OpView):
  OPERATION_NAME = "llvm.intr.fshl"

  _ODS_REGIONS = (0, True)

  def __init__(self, a: _ods_ir.Value, b: _ods_ir.Value, c: _ods_ir.Value, *, results: _Optional[_Sequence[_ods_ir.Type]] = 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 results is None: results = [operands[0].type] * 1
    _ods_successors = None
    super().__init__(self.OPERATION_NAME, self._ODS_REGIONS, self._ODS_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(FshlOp)
class FshlOpAdaptor(_ods_ir.OpAdaptor):
  OPERATION_NAME = "llvm.intr.fshl"

  @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 intr_fshl(a: _ods_ir.Value, b: _ods_ir.Value, c: _ods_ir.Value, *, results: _Optional[_Sequence[_ods_ir.Type]] = None, loc: _Optional[_ods_ir.Location] = None, ip: _Optional[_ods_ir.InsertionPoint] = None) -> _ods_ir.OpResult:
  return FshlOp(a=a, b=b, c=c, results=results, loc=loc, ip=ip).result

@_ods_cext.register_operation(_Dialect)
class FshrOp(_ods_ir.OpView):
  OPERATION_NAME = "llvm.intr.fshr"

  _ODS_REGIONS = (0, True)

  def __init__(self, a: _ods_ir.Value, b: _ods_ir.Value, c: _ods_ir.Value, *, results: _Optional[_Sequence[_ods_ir.Type]] = 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 results is None: results = [operands[0].type] * 1
    _ods_successors = None
    super().__init__(self.OPERATION_NAME, self._ODS_REGIONS, self._ODS_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(FshrOp)
class FshrOpAdaptor(_ods_ir.OpAdaptor):
  OPERATION_NAME = "llvm.intr.fshr"

  @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 intr_fshr(a: _ods_ir.Value, b: _ods_ir.Value, c: _ods_ir.Value, *, results: _Optional[_Sequence[_ods_ir.Type]] = None, loc: _Optional[_ods_ir.Location] = None, ip: _Optional[_ods_ir.InsertionPoint] = None) -> _ods_ir.OpResult:
  return FshrOp(a=a, b=b, c=c, results=results, loc=loc, ip=ip).result

@_ods_cext.register_operation(_Dialect)
class GEPOp(_ods_ir.OpView):
  r"""
  This operation mirrors LLVM IRs 'getelementptr' operation that is used to
  perform pointer arithmetic.
  
  Like in LLVM IR, it is possible to use both constants as well as SSA values
  as indices. In the case of indexing within a structure, it is required to
  either use constant indices directly, or supply a constant SSA value.
  
  The no-wrap flags can be used to specify the low-level pointer arithmetic
  overflow behavior that LLVM uses after lowering the operation to LLVM IR.
  Valid options include 'inbounds' (pointer arithmetic must be within object
  bounds), 'nusw' (no unsigned signed wrap), and 'nuw' (no unsigned wrap).
  Note that 'inbounds' implies 'nusw' which is ensured by the enum
  definition. The flags can be set individually or in combination.
  
  Examples:
  
  ```mlir
  // GEP with an SSA value offset
  %0 = llvm.getelementptr %1[%2] : (!llvm.ptr, i64) -> !llvm.ptr, f32
  
  // GEP with a constant offset and the inbounds attribute set
  %0 = llvm.getelementptr inbounds %1[3] : (!llvm.ptr) -> !llvm.ptr, f32
  
  // GEP with constant offsets into a structure
  %0 = llvm.getelementptr %1[0, 1]
     : (!llvm.ptr) -> !llvm.ptr, !llvm.struct<(i32, f32)>
  ```
  """

  OPERATION_NAME = "llvm.getelementptr"

  _ODS_REGIONS = (0, True)

  def __init__(self, res: _ods_ir.Type, base: _ods_ir.Value, dynamicIndices: _Sequence[_ods_ir.Value], rawConstantIndices: _Union[_Sequence[int], _ods_ir.DenseI32ArrayAttr], elem_type: _Union[_ods_ir.Type, _ods_ir.TypeAttr], noWrapFlags, *, loc: _Optional[_ods_ir.Location] = None, ip: _Optional[_ods_ir.InsertionPoint] = None):
    operands = []
    attributes = {}
    regions = None
    operands.append(base)
    operands.extend(_get_op_results_or_values(dynamicIndices))
    _ods_context = _ods_get_default_loc_context(loc)
    attributes["rawConstantIndices"] = (rawConstantIndices if (
    isinstance(rawConstantIndices, _ods_ir.Attribute) or
    not _ods_ir.AttrBuilder.contains('DenseI32ArrayAttr')) else
      _ods_ir.AttrBuilder.get('DenseI32ArrayAttr')(rawConstantIndices, context=_ods_context))
    attributes["elem_type"] = (elem_type if (
    isinstance(elem_type, _ods_ir.Attribute) or
    not _ods_ir.AttrBuilder.contains('TypeAttr')) else
      _ods_ir.AttrBuilder.get('TypeAttr')(elem_type, 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 base(self) -> _ods_ir.Value:
    return self.operation.operands[0]

  @builtins.property
  def dynamicIndices(self) -> _ods_ir.OpOperandList:
    _ods_variadic_group_length = len(self.operation.operands) - 2 + 1
    return self.operation.operands[1:1 + _ods_variadic_group_length]

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

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

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

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

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

@_ods_cext.register_op_adaptor(GEPOp)
class GEPOpAdaptor(_ods_ir.OpAdaptor):
  OPERATION_NAME = "llvm.getelementptr"

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

  @builtins.property
  def dynamicIndices(self) -> _ods_ir.OpOperandList:
    _ods_variadic_group_length = len(self.operands) - 2 + 1
    return self.operands[1:1 + _ods_variadic_group_length]

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

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

def getelementptr(res: _ods_ir.Type, base: _ods_ir.Value, dynamic_indices: _Sequence[_ods_ir.Value], raw_constant_indices: _Union[_Sequence[int], _ods_ir.DenseI32ArrayAttr], elem_type: _Union[_ods_ir.Type, _ods_ir.TypeAttr], no_wrap_flags, *, loc: _Optional[_ods_ir.Location] = None, ip: _Optional[_ods_ir.InsertionPoint] = None) -> _ods_ir.OpResult:
  return GEPOp(res=res, base=base, dynamicIndices=dynamic_indices, rawConstantIndices=raw_constant_indices, elem_type=elem_type, noWrapFlags=no_wrap_flags, loc=loc, ip=ip).result

@_ods_cext.register_operation(_Dialect)
class GetActiveLaneMaskOp(_ods_ir.OpView):
  OPERATION_NAME = "llvm.intr.get.active.lane.mask"

  _ODS_REGIONS = (0, True)

  def __init__(self, res: _ods_ir.Type, base: _ods_ir.Value[_ods_ir.IntegerType], n: _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(n)
    _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[_ods_ir.IntegerType]:
    return self.operation.operands[0]

  @builtins.property
  def n(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(GetActiveLaneMaskOp)
class GetActiveLaneMaskOpAdaptor(_ods_ir.OpAdaptor):
  OPERATION_NAME = "llvm.intr.get.active.lane.mask"

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

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

def intr_get_active_lane_mask(res: _ods_ir.Type, base: _ods_ir.Value[_ods_ir.IntegerType], n: _ods_ir.Value[_ods_ir.IntegerType], *, loc: _Optional[_ods_ir.Location] = None, ip: _Optional[_ods_ir.InsertionPoint] = None) -> _ods_ir.OpResult:
  return GetActiveLaneMaskOp(res=res, base=base, n=n, loc=loc, ip=ip).result

@_ods_cext.register_operation(_Dialect)
class GlobalCtorsOp(_ods_ir.OpView):
  r"""
  Specifies a list of constructor functions, priorities, and associated data.
  The functions referenced by this array will be called in ascending order
  of priority (i.e. lowest first) when the module is loaded. The order of
  functions with the same priority is not defined. This operation is
  translated to LLVM's global_ctors global variable. The initializer
  functions are run at load time. However, if the associated data is not
  `#llvm.zero`, functions only run if the data is not discarded.
  
  Examples:
  
  ```mlir
  llvm.func @ctor() {
    ...
    llvm.return
  }
  llvm.mlir.global_ctors ctors = [@ctor], priorities = [0],
                                 data = [#llvm.zero]
  ```
  
  """

  OPERATION_NAME = "llvm.mlir.global_ctors"

  _ODS_REGIONS = (0, True)

  def __init__(self, ctors: _Union[_Sequence[str], _ods_ir.ArrayAttr], priorities: _Union[_Sequence[int], _ods_ir.ArrayAttr], data: _Union[_Sequence[_ods_ir.Attribute], _ods_ir.ArrayAttr], *, 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["ctors"] = (ctors if (
    isinstance(ctors, _ods_ir.Attribute) or
    not _ods_ir.AttrBuilder.contains('FlatSymbolRefArrayAttr')) else
      _ods_ir.AttrBuilder.get('FlatSymbolRefArrayAttr')(ctors, context=_ods_context))
    attributes["priorities"] = (priorities if (
    isinstance(priorities, _ods_ir.Attribute) or
    not _ods_ir.AttrBuilder.contains('I32ArrayAttr')) else
      _ods_ir.AttrBuilder.get('I32ArrayAttr')(priorities, context=_ods_context))
    attributes["data"] = (data if (
    isinstance(data, _ods_ir.Attribute) or
    not _ods_ir.AttrBuilder.contains('ArrayAttr')) else
      _ods_ir.AttrBuilder.get('ArrayAttr')(data, 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 ctors(self) -> _ods_ir.ArrayAttr:
    return self.operation.attributes["ctors"]

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

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

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

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

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

@_ods_cext.register_op_adaptor(GlobalCtorsOp)
class GlobalCtorsOpAdaptor(_ods_ir.OpAdaptor):
  OPERATION_NAME = "llvm.mlir.global_ctors"

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

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

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

def mlir_global_ctors(ctors: _Union[_Sequence[str], _ods_ir.ArrayAttr], priorities: _Union[_Sequence[int], _ods_ir.ArrayAttr], data: _Union[_Sequence[_ods_ir.Attribute], _ods_ir.ArrayAttr], *, loc: _Optional[_ods_ir.Location] = None, ip: _Optional[_ods_ir.InsertionPoint] = None) -> GlobalCtorsOp:
  return GlobalCtorsOp(ctors=ctors, priorities=priorities, data=data, loc=loc, ip=ip)

@_ods_cext.register_operation(_Dialect)
class GlobalDtorsOp(_ods_ir.OpView):
  r"""
  Specifies a list of destructor functions and priorities. The functions
  referenced by this array will be called in descending order of priority
  (i.e. highest first) when the module is unloaded. The order of functions
  with the same priority is not defined. This operation is translated to
  LLVM's global_dtors global variable. The destruction functions are run at
  load time. However, if the associated data is not `#llvm.zero`, functions
  only run if the data is not discarded.
  
  Examples:
  
  ```mlir
  llvm.func @dtor() {
    llvm.return
  }
  llvm.mlir.global_dtors dtors = [@dtor], priorities = [0],
                                 data = [#llvm.zero]
  ```
  """

  OPERATION_NAME = "llvm.mlir.global_dtors"

  _ODS_REGIONS = (0, True)

  def __init__(self, dtors: _Union[_Sequence[str], _ods_ir.ArrayAttr], priorities: _Union[_Sequence[int], _ods_ir.ArrayAttr], data: _Union[_Sequence[_ods_ir.Attribute], _ods_ir.ArrayAttr], *, 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["dtors"] = (dtors if (
    isinstance(dtors, _ods_ir.Attribute) or
    not _ods_ir.AttrBuilder.contains('FlatSymbolRefArrayAttr')) else
      _ods_ir.AttrBuilder.get('FlatSymbolRefArrayAttr')(dtors, context=_ods_context))
    attributes["priorities"] = (priorities if (
    isinstance(priorities, _ods_ir.Attribute) or
    not _ods_ir.AttrBuilder.contains('I32ArrayAttr')) else
      _ods_ir.AttrBuilder.get('I32ArrayAttr')(priorities, context=_ods_context))
    attributes["data"] = (data if (
    isinstance(data, _ods_ir.Attribute) or
    not _ods_ir.AttrBuilder.contains('ArrayAttr')) else
      _ods_ir.AttrBuilder.get('ArrayAttr')(data, 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 dtors(self) -> _ods_ir.ArrayAttr:
    return self.operation.attributes["dtors"]

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

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

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

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

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

@_ods_cext.register_op_adaptor(GlobalDtorsOp)
class GlobalDtorsOpAdaptor(_ods_ir.OpAdaptor):
  OPERATION_NAME = "llvm.mlir.global_dtors"

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

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

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

def mlir_global_dtors(dtors: _Union[_Sequence[str], _ods_ir.ArrayAttr], priorities: _Union[_Sequence[int], _ods_ir.ArrayAttr], data: _Union[_Sequence[_ods_ir.Attribute], _ods_ir.ArrayAttr], *, loc: _Optional[_ods_ir.Location] = None, ip: _Optional[_ods_ir.InsertionPoint] = None) -> GlobalDtorsOp:
  return GlobalDtorsOp(dtors=dtors, priorities=priorities, data=data, loc=loc, ip=ip)

@_ods_cext.register_operation(_Dialect)
class GlobalOp(_ods_ir.OpView):
  r"""
  Since MLIR allows for arbitrary operations to be present at the top level,
  global variables are defined using the `llvm.mlir.global` operation. Both
  global constants and variables can be defined, and the value may also be
  initialized in both cases.
  
  There are two forms of initialization syntax. Simple constants that can be
  represented as MLIR attributes can be given in-line:
  
  ```mlir
  llvm.mlir.global @variable(32.0 : f32) : f32
  ```
  
  This initialization and type syntax is similar to `llvm.mlir.constant` and
  may use two types: one for MLIR attribute and another for the LLVM value.
  These types must be compatible.
  
  More complex constants that cannot be represented as MLIR attributes can be
  given in an initializer region:
  
  ```mlir
  // This global is initialized with the equivalent of:
  //   i32* getelementptr (i32* @g2, i32 2)
  llvm.mlir.global constant @int_gep() : !llvm.ptr {
    %0 = llvm.mlir.addressof @g2 : !llvm.ptr
    %1 = llvm.mlir.constant(2 : i32) : i32
    %2 = llvm.getelementptr %0[%1]
       : (!llvm.ptr, i32) -> !llvm.ptr, i32
    // The initializer region must end with `llvm.return`.
    llvm.return %2 : !llvm.ptr
  }
  ```
  
  Only one of the initializer attribute or initializer region may be provided.
  
  `llvm.mlir.global` must appear at top-level of the enclosing module. It uses
  an @-identifier for its value, which will be uniqued by the module with
  respect to other @-identifiers in it.
  
  Examples:
  
  ```mlir
  // Global values use @-identifiers.
  llvm.mlir.global constant @cst(42 : i32) : i32
  
  // Non-constant values must also be initialized.
  llvm.mlir.global @variable(32.0 : f32) : f32
  
  // Strings are expected to be of wrapped LLVM i8 array type and do not
  // automatically include the trailing zero.
  llvm.mlir.global @string("abc") : !llvm.array<3 x i8>
  
  // For strings globals, the trailing type may be omitted.
  llvm.mlir.global constant @no_trailing_type("foo bar")
  
  // A complex initializer is constructed with an initializer region.
  llvm.mlir.global constant @int_gep() : !llvm.ptr {
    %0 = llvm.mlir.addressof @g2 : !llvm.ptr
    %1 = llvm.mlir.constant(2 : i32) : i32
    %2 = llvm.getelementptr %0[%1]
       : (!llvm.ptr, i32) -> !llvm.ptr, i32
    llvm.return %2 : !llvm.ptr
  }
  ```
  
  Similarly to functions, globals have a linkage attribute. In the custom
  syntax, this attribute is placed between `llvm.mlir.global` and the optional
  `constant` keyword. If the attribute is omitted, `external` linkage is
  assumed by default.
  
  Examples:
  
  ```mlir
  // A constant with internal linkage will not participate in linking.
  llvm.mlir.global internal constant @cst(42 : i32) : i32
  
  // By default, "external" linkage is assumed and the global participates in
  // symbol resolution at link-time.
  llvm.mlir.global @glob(0 : f32) : f32
  
  // Alignment is optional
  llvm.mlir.global private constant @y(dense<1.0> : tensor<8xf32>) : !llvm.array<8 x f32>
  ```
  
  Like global variables in LLVM IR, globals can have an (optional)
  alignment attribute using keyword `alignment`. The integer value of the
  alignment must be a positive integer that is a power of 2.
  
  Examples:
  
  ```mlir
  // Alignment is optional
  llvm.mlir.global private constant @y(dense<1.0> : tensor<8xf32>) { alignment = 32 : i64 } : !llvm.array<8 x f32>
  ```
  
  The `target_specific_attrs` attribute provides a mechanism to preserve
  target-specific LLVM IR attributes that are not explicitly modeled in the
  LLVM dialect.
  
  The attribute is an array containing either string attributes or
  two-element array attributes of strings. The value of a standalone string
  attribute is interpreted as the name of an LLVM IR attribute on the global.
  A two-element array is interpreted as a key-value pair.
  
  Example:
  
  ```mlir
  llvm.mlir.global external @example() {
    target_specific_attrs = ["value-less-attr", ["int-attr", "4"], ["string-attr", "string"]]} : f64
  ```
  """

  OPERATION_NAME = "llvm.mlir.global"

  _ODS_REGIONS = (1, True)

  def __init__(self, global_type: _Union[_ods_ir.Type, _ods_ir.TypeAttr], sym_name: _Union[str, _ods_ir.StringAttr], linkage: _Union[_Any, _ods_ir.Attribute], *, constant: _Optional[bool] = None, dso_local: _Optional[bool] = None, thread_local_: _Optional[bool] = None, externally_initialized: _Optional[bool] = None, value: _Optional[_Union[_Any, _ods_ir.Attribute]] = None, alignment: _Optional[_Union[int, _ods_ir.IntegerAttr]] = None, addr_space: _Optional[_Union[int, _ods_ir.IntegerAttr]] = None, unnamed_addr: _Optional[_Union[_Any, _ods_ir.Attribute]] = None, section: _Optional[_Union[str, _ods_ir.StringAttr]] = None, comdat: _Optional[_Union[str, _ods_ir.SymbolRefAttr]] = None, dbg_exprs: _Optional[_Union[_Any, _ods_ir.ArrayAttr]] = None, visibility_: _Optional[_Union[_Any, _ods_ir.Attribute]] = None, target_specific_attrs: _Optional[_Union[_Sequence[_ods_ir.Attribute], _ods_ir.ArrayAttr]] = 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)
    attributes["global_type"] = (global_type if (
    isinstance(global_type, _ods_ir.Attribute) or
    not _ods_ir.AttrBuilder.contains('TypeAttr')) else
      _ods_ir.AttrBuilder.get('TypeAttr')(global_type, context=_ods_context))
    if bool(constant): attributes["constant"] = _ods_ir.UnitAttr.get(
      _ods_get_default_loc_context(loc))
    attributes["sym_name"] = (sym_name if (
    isinstance(sym_name, _ods_ir.Attribute) or
    not _ods_ir.AttrBuilder.contains('StrAttr')) else
      _ods_ir.AttrBuilder.get('StrAttr')(sym_name, context=_ods_context))
    attributes["linkage"] = (linkage if (
    isinstance(linkage, _ods_ir.Attribute) or
    not _ods_ir.AttrBuilder.contains('Linkage')) else
      _ods_ir.AttrBuilder.get('Linkage')(linkage, context=_ods_context))
    if bool(dso_local): attributes["dso_local"] = _ods_ir.UnitAttr.get(
      _ods_get_default_loc_context(loc))
    if bool(thread_local_): attributes["thread_local_"] = _ods_ir.UnitAttr.get(
      _ods_get_default_loc_context(loc))
    if bool(externally_initialized): attributes["externally_initialized"] = _ods_ir.UnitAttr.get(
      _ods_get_default_loc_context(loc))
    if value is not None: attributes["value"] = (value if (
        isinstance(value, _ods_ir.Attribute) or
        not _ods_ir.AttrBuilder.contains('AnyAttr')) else
          _ods_ir.AttrBuilder.get('AnyAttr')(value, context=_ods_context))
    if alignment is not None: attributes["alignment"] = (alignment if (
        isinstance(alignment, _ods_ir.Attribute) or
        not _ods_ir.AttrBuilder.contains('I64Attr')) else
          _ods_ir.AttrBuilder.get('I64Attr')(alignment, context=_ods_context))
    if addr_space is not None: attributes["addr_space"] = (addr_space if (
        isinstance(addr_space, _ods_ir.Attribute) or
        not _ods_ir.AttrBuilder.contains('I32Attr')) else
          _ods_ir.AttrBuilder.get('I32Attr')(addr_space, context=_ods_context))
    if unnamed_addr is not None: attributes["unnamed_addr"] = (unnamed_addr if (
        isinstance(unnamed_addr, _ods_ir.Attribute) or
        not _ods_ir.AttrBuilder.contains('UnnamedAddr')) else
          _ods_ir.AttrBuilder.get('UnnamedAddr')(unnamed_addr, context=_ods_context))
    if section is not None: attributes["section"] = (section if (
        isinstance(section, _ods_ir.Attribute) or
        not _ods_ir.AttrBuilder.contains('StrAttr')) else
          _ods_ir.AttrBuilder.get('StrAttr')(section, context=_ods_context))
    if comdat is not None: attributes["comdat"] = (comdat if (
        isinstance(comdat, _ods_ir.Attribute) or
        not _ods_ir.AttrBuilder.contains('SymbolRefAttr')) else
          _ods_ir.AttrBuilder.get('SymbolRefAttr')(comdat, context=_ods_context))
    if dbg_exprs is not None: attributes["dbg_exprs"] = (dbg_exprs if (
        isinstance(dbg_exprs, _ods_ir.Attribute) or
        not _ods_ir.AttrBuilder.contains('DIGlobalVariableExpressionArrayAttr')) else
          _ods_ir.AttrBuilder.get('DIGlobalVariableExpressionArrayAttr')(dbg_exprs, context=_ods_context))
    if visibility_ is not None: attributes["visibility_"] = (visibility_ if (
        isinstance(visibility_, _ods_ir.Attribute) or
        not _ods_ir.AttrBuilder.contains('Visibility')) else
          _ods_ir.AttrBuilder.get('Visibility')(visibility_, context=_ods_context))
    if target_specific_attrs is not None: attributes["target_specific_attrs"] = (target_specific_attrs if (
        isinstance(target_specific_attrs, _ods_ir.Attribute) or
        not _ods_ir.AttrBuilder.contains('ArrayAttr')) else
          _ods_ir.AttrBuilder.get('ArrayAttr')(target_specific_attrs, 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 global_type(self) -> _ods_ir.TypeAttr:
    return self.operation.attributes["global_type"]

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

  @builtins.property
  def constant(self) -> bool:
    return "constant" in self.operation.attributes

  @constant.setter
  def constant(self, value):
    if bool(value):
      self.operation.attributes["constant"] = _ods_ir.UnitAttr.get()
    elif "constant" in self.operation.attributes:
      del self.operation.attributes["constant"]

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

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

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

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

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

  @builtins.property
  def dso_local(self) -> bool:
    return "dso_local" in self.operation.attributes

  @dso_local.setter
  def dso_local(self, value):
    if bool(value):
      self.operation.attributes["dso_local"] = _ods_ir.UnitAttr.get()
    elif "dso_local" in self.operation.attributes:
      del self.operation.attributes["dso_local"]

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

  @builtins.property
  def thread_local_(self) -> bool:
    return "thread_local_" in self.operation.attributes

  @thread_local_.setter
  def thread_local_(self, value):
    if bool(value):
      self.operation.attributes["thread_local_"] = _ods_ir.UnitAttr.get()
    elif "thread_local_" in self.operation.attributes:
      del self.operation.attributes["thread_local_"]

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

  @builtins.property
  def externally_initialized(self) -> bool:
    return "externally_initialized" in self.operation.attributes

  @externally_initialized.setter
  def externally_initialized(self, value):
    if bool(value):
      self.operation.attributes["externally_initialized"] = _ods_ir.UnitAttr.get()
    elif "externally_initialized" in self.operation.attributes:
      del self.operation.attributes["externally_initialized"]

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

  @builtins.property
  def initializer(self) -> _ods_ir.Region:
    return self.regions[0]

@_ods_cext.register_op_adaptor(GlobalOp)
class GlobalOpAdaptor(_ods_ir.OpAdaptor):
  OPERATION_NAME = "llvm.mlir.global"

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

  @builtins.property
  def constant(self) -> bool:
    return "constant" in self.attributes

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

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

  @builtins.property
  def dso_local(self) -> bool:
    return "dso_local" in self.attributes

  @builtins.property
  def thread_local_(self) -> bool:
    return "thread_local_" in self.attributes

  @builtins.property
  def externally_initialized(self) -> bool:
    return "externally_initialized" in self.attributes

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

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

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

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

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

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

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

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

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

def mlir_global(global_type: _Union[_ods_ir.Type, _ods_ir.TypeAttr], sym_name: _Union[str, _ods_ir.StringAttr], linkage: _Union[_Any, _ods_ir.Attribute], *, constant: _Optional[bool] = None, dso_local: _Optional[bool] = None, thread_local_: _Optional[bool] = None, externally_initialized: _Optional[bool] = None, value: _Optional[_Union[_Any, _ods_ir.Attribute]] = None, alignment: _Optional[_Union[int, _ods_ir.IntegerAttr]] = None, addr_space: _Optional[_Union[int, _ods_ir.IntegerAttr]] = None, unnamed_addr: _Optional[_Union[_Any, _ods_ir.Attribute]] = None, section: _Optional[_Union[str, _ods_ir.StringAttr]] = None, comdat: _Optional[_Union[str, _ods_ir.SymbolRefAttr]] = None, dbg_exprs: _Optional[_Union[_Any, _ods_ir.ArrayAttr]] = None, visibility_: _Optional[_Union[_Any, _ods_ir.Attribute]] = None, target_specific_attrs: _Optional[_Union[_Sequence[_ods_ir.Attribute], _ods_ir.ArrayAttr]] = None, loc: _Optional[_ods_ir.Location] = None, ip: _Optional[_ods_ir.InsertionPoint] = None) -> GlobalOp:
  return GlobalOp(global_type=global_type, sym_name=sym_name, linkage=linkage, constant=constant, dso_local=dso_local, thread_local_=thread_local_, externally_initialized=externally_initialized, value=value, alignment=alignment, addr_space=addr_space, unnamed_addr=unnamed_addr, section=section, comdat=comdat, dbg_exprs=dbg_exprs, visibility_=visibility_, target_specific_attrs=target_specific_attrs, loc=loc, ip=ip)

@_ods_cext.register_operation(_Dialect)
class ICmpOp(_ods_ir.OpView):
  OPERATION_NAME = "llvm.icmp"

  _ODS_REGIONS = (0, True)

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

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

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

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

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

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

@_ods_cext.register_op_adaptor(ICmpOp)
class ICmpOpAdaptor(_ods_ir.OpAdaptor):
  OPERATION_NAME = "llvm.icmp"

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

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

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

def icmp(predicate: _Union[_Any, _ods_ir.Attribute], lhs: _ods_ir.Value, rhs: _ods_ir.Value, *, results: _Optional[_Sequence[_ods_ir.Type]] = None, loc: _Optional[_ods_ir.Location] = None, ip: _Optional[_ods_ir.InsertionPoint] = None) -> _ods_ir.OpResult:
  return ICmpOp(predicate=predicate, lhs=lhs, rhs=rhs, results=results, loc=loc, ip=ip).result

@_ods_cext.register_operation(_Dialect)
class IFuncOp(_ods_ir.OpView):
  r"""
  `llvm.mlir.ifunc` is a top level operation that defines a global ifunc.
  It defines a new symbol and takes a symbol refering to a resolver function.
  IFuncs can be called as regular functions. The function type is the same
  as the IFuncType. The symbol is resolved at runtime by calling a resolver
  function.
  
  Examples:
  
  ```mlir
  // IFuncs resolve a symbol at runtime using a resovler function.
  llvm.mlir.ifunc external @foo: !llvm.func<f32 (i64)>, !llvm.ptr @resolver
  
  llvm.func @foo_1(i64) -> f32
  llvm.func @foo_2(i64) -> f32
  
  llvm.func @resolve_foo() -> !llvm.ptr attributes {
    %0 = llvm.mlir.addressof @foo_2 : !llvm.ptr
    %1 = llvm.mlir.addressof @foo_1 : !llvm.ptr
  
    // ... Logic selecting from foo_{1, 2}
  
    // Return function pointer to the selected function
    llvm.return %7 : !llvm.ptr
  }
  
  llvm.func @use_foo() {
    // IFuncs are called as regular functions
    %res = llvm.call @foo(%value) : i64 -> f32
  }
  ```
  """

  OPERATION_NAME = "llvm.mlir.ifunc"

  _ODS_REGIONS = (0, True)

  def __init__(self, sym_name: _Union[str, _ods_ir.StringAttr], i_func_type: _Union[_ods_ir.Type, _ods_ir.TypeAttr], resolver: _Union[str, _ods_ir.FlatSymbolRefAttr], resolver_type: _Union[_ods_ir.Type, _ods_ir.TypeAttr], linkage: _Union[_Any, _ods_ir.Attribute], *, dso_local: _Optional[bool] = None, address_space: _Optional[_Union[int, _ods_ir.IntegerAttr]] = None, unnamed_addr: _Optional[_Union[_Any, _ods_ir.Attribute]] = None, visibility_: _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)
    attributes["sym_name"] = (sym_name if (
    isinstance(sym_name, _ods_ir.Attribute) or
    not _ods_ir.AttrBuilder.contains('SymbolNameAttr')) else
      _ods_ir.AttrBuilder.get('SymbolNameAttr')(sym_name, context=_ods_context))
    attributes["i_func_type"] = (i_func_type if (
    isinstance(i_func_type, _ods_ir.Attribute) or
    not _ods_ir.AttrBuilder.contains('TypeAttr')) else
      _ods_ir.AttrBuilder.get('TypeAttr')(i_func_type, context=_ods_context))
    attributes["resolver"] = (resolver if (
    isinstance(resolver, _ods_ir.Attribute) or
    not _ods_ir.AttrBuilder.contains('FlatSymbolRefAttr')) else
      _ods_ir.AttrBuilder.get('FlatSymbolRefAttr')(resolver, context=_ods_context))
    attributes["resolver_type"] = (resolver_type if (
    isinstance(resolver_type, _ods_ir.Attribute) or
    not _ods_ir.AttrBuilder.contains('TypeAttr')) else
      _ods_ir.AttrBuilder.get('TypeAttr')(resolver_type, context=_ods_context))
    attributes["linkage"] = (linkage if (
    isinstance(linkage, _ods_ir.Attribute) or
    not _ods_ir.AttrBuilder.contains('Linkage')) else
      _ods_ir.AttrBuilder.get('Linkage')(linkage, context=_ods_context))
    if bool(dso_local): attributes["dso_local"] = _ods_ir.UnitAttr.get(
      _ods_get_default_loc_context(loc))
    if address_space is not None: attributes["address_space"] = (address_space if (
        isinstance(address_space, _ods_ir.Attribute) or
        not _ods_ir.AttrBuilder.contains('I32Attr')) else
          _ods_ir.AttrBuilder.get('I32Attr')(address_space, context=_ods_context))
    if unnamed_addr is not None: attributes["unnamed_addr"] = (unnamed_addr if (
        isinstance(unnamed_addr, _ods_ir.Attribute) or
        not _ods_ir.AttrBuilder.contains('UnnamedAddr')) else
          _ods_ir.AttrBuilder.get('UnnamedAddr')(unnamed_addr, context=_ods_context))
    if visibility_ is not None: attributes["visibility_"] = (visibility_ if (
        isinstance(visibility_, _ods_ir.Attribute) or
        not _ods_ir.AttrBuilder.contains('Visibility')) else
          _ods_ir.AttrBuilder.get('Visibility')(visibility_, 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 sym_name(self) -> _ods_ir.StringAttr:
    return self.operation.attributes["sym_name"]

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

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

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

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

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

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

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

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

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

  @builtins.property
  def dso_local(self) -> bool:
    return "dso_local" in self.operation.attributes

  @dso_local.setter
  def dso_local(self, value):
    if bool(value):
      self.operation.attributes["dso_local"] = _ods_ir.UnitAttr.get()
    elif "dso_local" in self.operation.attributes:
      del self.operation.attributes["dso_local"]

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

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

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

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

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

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

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

@_ods_cext.register_op_adaptor(IFuncOp)
class IFuncOpAdaptor(_ods_ir.OpAdaptor):
  OPERATION_NAME = "llvm.mlir.ifunc"

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

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

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

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

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

  @builtins.property
  def dso_local(self) -> bool:
    return "dso_local" in self.attributes

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

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

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

def mlir_ifunc(sym_name: _Union[str, _ods_ir.StringAttr], i_func_type: _Union[_ods_ir.Type, _ods_ir.TypeAttr], resolver: _Union[str, _ods_ir.FlatSymbolRefAttr], resolver_type: _Union[_ods_ir.Type, _ods_ir.TypeAttr], linkage: _Union[_Any, _ods_ir.Attribute], *, dso_local: _Optional[bool] = None, address_space: _Optional[_Union[int, _ods_ir.IntegerAttr]] = None, unnamed_addr: _Optional[_Union[_Any, _ods_ir.Attribute]] = None, visibility_: _Optional[_Union[_Any, _ods_ir.Attribute]] = None, loc: _Optional[_ods_ir.Location] = None, ip: _Optional[_ods_ir.InsertionPoint] = None) -> IFuncOp:
  return IFuncOp(sym_name=sym_name, i_func_type=i_func_type, resolver=resolver, resolver_type=resolver_type, linkage=linkage, dso_local=dso_local, address_space=address_space, unnamed_addr=unnamed_addr, visibility_=visibility_, loc=loc, ip=ip)

@_ods_cext.register_operation(_Dialect)
class IndirectBrOp(_ods_ir.OpView):
  r"""
  Transfer control flow to address in `$addr`. A list of possible target
  blocks in `$successors` can be provided and maybe used as a hint in LLVM:
  
  ```mlir
  ...
  llvm.func @g(...
    %dest = llvm.blockaddress <function = @g, tag = <id = 0>> : !llvm.ptr
    llvm.indirectbr %dest : !llvm.ptr, [
      ^head
    ]
  ^head:
    llvm.blocktag <id = 0>
    llvm.return %arg0 : i32
    ...
  ```
  
  It also supports a list of operands that can be passed to a target block:
  
  ```mlir
    llvm.indirectbr %dest : !llvm.ptr, [
      ^head(%arg0 : i32),
      ^tail(%arg1, %arg0 : i32, i32)
    ]
  ^head(%r0 : i32):
    llvm.return %r0 : i32
  ^tail(%r1 : i32, %r2 : i32):
    ...
  ```
  """

  OPERATION_NAME = "llvm.indirectbr"

  _ODS_REGIONS = (0, True)

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

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

  @builtins.property
  def succOperands(self) -> _ods_ir.OpOperandList:
    _ods_variadic_group_length = len(self.operation.operands) - 2 + 1
    return self.operation.operands[1:1 + _ods_variadic_group_length]

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

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

@_ods_cext.register_op_adaptor(IndirectBrOp)
class IndirectBrOpAdaptor(_ods_ir.OpAdaptor):
  OPERATION_NAME = "llvm.indirectbr"

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

  @builtins.property
  def succOperands(self) -> _ods_ir.OpOperandList:
    _ods_variadic_group_length = len(self.operands) - 2 + 1
    return self.operands[1:1 + _ods_variadic_group_length]

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

def indirectbr(addr: _ods_ir.Value, succ_operands: _Sequence[_ods_ir.Value], indbr_operand_segments: _Union[_Sequence[int], _ods_ir.DenseI32ArrayAttr], successors: _Sequence[_ods_ir.Block], *, loc: _Optional[_ods_ir.Location] = None, ip: _Optional[_ods_ir.InsertionPoint] = None) -> IndirectBrOp:
  return IndirectBrOp(addr=addr, succOperands=succ_operands, indbr_operand_segments=indbr_operand_segments, successors=successors, loc=loc, ip=ip)

@_ods_cext.register_operation(_Dialect)
class InlineAsmOp(_ods_ir.OpView):
  r"""
  The InlineAsmOp mirrors the underlying LLVM semantics with a notable
  exception: the embedded `asm_string` is not allowed to define or reference
  any symbol or any global variable: only the operands of the op may be read,
  written, or referenced.
  Attempting to define or reference any symbol or any global behavior is
  considered undefined behavior at this time.
  If `tail_call_kind` is used, the operation behaves like the specified
  tail call kind. The `musttail` kind it's not available for this operation,
  since it isn't supported by LLVM's inline asm.
  """

  OPERATION_NAME = "llvm.inline_asm"

  _ODS_REGIONS = (0, True)

  def __init__(self, res: _Optional[_ods_ir.Type], operands_: _Sequence[_ods_ir.Value], asm_string: _Union[str, _ods_ir.StringAttr], constraints: _Union[str, _ods_ir.StringAttr], *, has_side_effects: _Optional[bool] = None, is_align_stack: _Optional[bool] = None, tail_call_kind: _Optional[_Union[_Any, _ods_ir.Attribute]] = None, asm_dialect: _Optional[_Union[_Any, _ods_ir.Attribute]] = None, operand_attrs: _Optional[_Union[_Sequence[_ods_ir.Attribute], _ods_ir.ArrayAttr]] = None, loc: _Optional[_ods_ir.Location] = None, ip: _Optional[_ods_ir.InsertionPoint] = None):
    operands = []
    attributes = {}
    regions = None
    operands.extend(_get_op_results_or_values(operands_))
    _ods_context = _ods_get_default_loc_context(loc)
    attributes["asm_string"] = (asm_string if (
    isinstance(asm_string, _ods_ir.Attribute) or
    not _ods_ir.AttrBuilder.contains('StrAttr')) else
      _ods_ir.AttrBuilder.get('StrAttr')(asm_string, context=_ods_context))
    attributes["constraints"] = (constraints if (
    isinstance(constraints, _ods_ir.Attribute) or
    not _ods_ir.AttrBuilder.contains('StrAttr')) else
      _ods_ir.AttrBuilder.get('StrAttr')(constraints, context=_ods_context))
    if bool(has_side_effects): attributes["has_side_effects"] = _ods_ir.UnitAttr.get(
      _ods_get_default_loc_context(loc))
    if bool(is_align_stack): attributes["is_align_stack"] = _ods_ir.UnitAttr.get(
      _ods_get_default_loc_context(loc))
    if tail_call_kind is not None: attributes["tail_call_kind"] = (tail_call_kind if (
        isinstance(tail_call_kind, _ods_ir.Attribute) or
        not _ods_ir.AttrBuilder.contains('TailCallKind')) else
          _ods_ir.AttrBuilder.get('TailCallKind')(tail_call_kind, context=_ods_context))
    if asm_dialect is not None: attributes["asm_dialect"] = (asm_dialect if (
        isinstance(asm_dialect, _ods_ir.Attribute) or
        not _ods_ir.AttrBuilder.contains('AsmATTOrIntel')) else
          _ods_ir.AttrBuilder.get('AsmATTOrIntel')(asm_dialect, context=_ods_context))
    if operand_attrs is not None: attributes["operand_attrs"] = (operand_attrs if (
        isinstance(operand_attrs, _ods_ir.Attribute) or
        not _ods_ir.AttrBuilder.contains('ArrayAttr')) else
          _ods_ir.AttrBuilder.get('ArrayAttr')(operand_attrs, context=_ods_context))
    results = []
    if res is not None: results.append(res)
    _ods_successors = None
    super().__init__(self.OPERATION_NAME, self._ODS_REGIONS, self._ODS_OPERAND_SEGMENTS, self._ODS_RESULT_SEGMENTS, attributes=attributes, results=results, operands=operands, successors=_ods_successors, regions=regions, loc=loc, ip=ip)

  @builtins.property
  def operands_(self) -> _ods_ir.OpOperandList:
    _ods_variadic_group_length = len(self.operation.operands) - 1 + 1
    return self.operation.operands[0:0 + _ods_variadic_group_length]

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

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

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

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

  @builtins.property
  def has_side_effects(self) -> bool:
    return "has_side_effects" in self.operation.attributes

  @has_side_effects.setter
  def has_side_effects(self, value):
    if bool(value):
      self.operation.attributes["has_side_effects"] = _ods_ir.UnitAttr.get()
    elif "has_side_effects" in self.operation.attributes:
      del self.operation.attributes["has_side_effects"]

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

  @builtins.property
  def is_align_stack(self) -> bool:
    return "is_align_stack" in self.operation.attributes

  @is_align_stack.setter
  def is_align_stack(self, value):
    if bool(value):
      self.operation.attributes["is_align_stack"] = _ods_ir.UnitAttr.get()
    elif "is_align_stack" in self.operation.attributes:
      del self.operation.attributes["is_align_stack"]

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

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

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

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

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

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

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

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

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

  @builtins.property
  def res(self) -> _Optional[_ods_ir.OpResult]:
    return None if len(self.operation.results) < 1 else self.operation.results[0]

@_ods_cext.register_op_adaptor(InlineAsmOp)
class InlineAsmOpAdaptor(_ods_ir.OpAdaptor):
  OPERATION_NAME = "llvm.inline_asm"

  @builtins.property
  def operands_(self) -> _ods_ir.OpOperandList:
    _ods_variadic_group_length = len(self.operands) - 1 + 1
    return self.operands[0:0 + _ods_variadic_group_length]

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

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

  @builtins.property
  def has_side_effects(self) -> bool:
    return "has_side_effects" in self.attributes

  @builtins.property
  def is_align_stack(self) -> bool:
    return "is_align_stack" in self.attributes

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

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

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

def inline_asm(res: _Optional[_ods_ir.Type], operands_: _Sequence[_ods_ir.Value], asm_string: _Union[str, _ods_ir.StringAttr], constraints: _Union[str, _ods_ir.StringAttr], *, has_side_effects: _Optional[bool] = None, is_align_stack: _Optional[bool] = None, tail_call_kind: _Optional[_Union[_Any, _ods_ir.Attribute]] = None, asm_dialect: _Optional[_Union[_Any, _ods_ir.Attribute]] = None, operand_attrs: _Optional[_Union[_Sequence[_ods_ir.Attribute], _ods_ir.ArrayAttr]] = None, loc: _Optional[_ods_ir.Location] = None, ip: _Optional[_ods_ir.InsertionPoint] = None) -> _Union[_ods_ir.OpResult, _ods_ir.OpResultList, InlineAsmOp]:
  op = InlineAsmOp(res=res, operands_=operands_, asm_string=asm_string, constraints=constraints, has_side_effects=has_side_effects, is_align_stack=is_align_stack, tail_call_kind=tail_call_kind, asm_dialect=asm_dialect, operand_attrs=operand_attrs, loc=loc, ip=ip); results = op.results
  return results if len(results) > 1 else (results[0] if len(results) == 1 else op)

@_ods_cext.register_operation(_Dialect)
class InsertElementOp(_ods_ir.OpView):
  OPERATION_NAME = "llvm.insertelement"

  _ODS_REGIONS = (0, True)

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

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

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

  @builtins.property
  def position(self) -> _ods_ir.Value[_ods_ir.IntegerType]:
    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(InsertElementOp)
class InsertElementOpAdaptor(_ods_ir.OpAdaptor):
  OPERATION_NAME = "llvm.insertelement"

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

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

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

def insertelement(vector: _ods_ir.Value[_ods_ir.VectorType], value: _ods_ir.Value, position: _ods_ir.Value[_ods_ir.IntegerType], *, results: _Optional[_Sequence[_ods_ir.Type]] = None, loc: _Optional[_ods_ir.Location] = None, ip: _Optional[_ods_ir.InsertionPoint] = None) -> _ods_ir.OpResult[_ods_ir.VectorType]:
  return InsertElementOp(vector=vector, value=value, position=position, results=results, loc=loc, ip=ip).result

@_ods_cext.register_operation(_Dialect)
class InsertValueOp(_ods_ir.OpView):
  OPERATION_NAME = "llvm.insertvalue"

  _ODS_REGIONS = (0, True)

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

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

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

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

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

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

@_ods_cext.register_op_adaptor(InsertValueOp)
class InsertValueOpAdaptor(_ods_ir.OpAdaptor):
  OPERATION_NAME = "llvm.insertvalue"

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

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

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

def insertvalue(container: _ods_ir.Value, value: _ods_ir.Value, position: _Union[_Sequence[int], _ods_ir.DenseI64ArrayAttr], *, results: _Optional[_Sequence[_ods_ir.Type]] = None, loc: _Optional[_ods_ir.Location] = None, ip: _Optional[_ods_ir.InsertionPoint] = None) -> _ods_ir.OpResult:
  return InsertValueOp(container=container, value=value, position=position, results=results, loc=loc, ip=ip).result

@_ods_cext.register_operation(_Dialect)
class IntToPtrOp(_ods_ir.OpView):
  OPERATION_NAME = "llvm.inttoptr"

  _ODS_REGIONS = (0, True)

  def __init__(self, res: _ods_ir.Type, arg: _ods_ir.Value, *, dereferenceable: _Optional[_Union[_Any, _ods_ir.Attribute]] = None, 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)
    if dereferenceable is not None: attributes["dereferenceable"] = (dereferenceable if (
        isinstance(dereferenceable, _ods_ir.Attribute) or
        not _ods_ir.AttrBuilder.contains('LLVM_DereferenceableAttr')) else
          _ods_ir.AttrBuilder.get('LLVM_DereferenceableAttr')(dereferenceable, 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 arg(self) -> _ods_ir.Value:
    return self.operation.operands[0]

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

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

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

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

@_ods_cext.register_op_adaptor(IntToPtrOp)
class IntToPtrOpAdaptor(_ods_ir.OpAdaptor):
  OPERATION_NAME = "llvm.inttoptr"

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

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

def inttoptr(res: _ods_ir.Type, arg: _ods_ir.Value, *, dereferenceable: _Optional[_Union[_Any, _ods_ir.Attribute]] = None, loc: _Optional[_ods_ir.Location] = None, ip: _Optional[_ods_ir.InsertionPoint] = None) -> _ods_ir.OpResult:
  return IntToPtrOp(res=res, arg=arg, dereferenceable=dereferenceable, loc=loc, ip=ip).result

@_ods_cext.register_operation(_Dialect)
class InvariantEndOp(_ods_ir.OpView):
  OPERATION_NAME = "llvm.intr.invariant.end"

  _ODS_REGIONS = (0, True)

  def __init__(self, start: _ods_ir.Value, size: _Union[int, _ods_ir.IntegerAttr], ptr: _ods_ir.Value, *, loc: _Optional[_ods_ir.Location] = None, ip: _Optional[_ods_ir.InsertionPoint] = None):
    operands = []
    attributes = {}
    regions = None
    operands.append(start)
    operands.append(ptr)
    _ods_context = _ods_get_default_loc_context(loc)
    attributes["size"] = (size if (
    isinstance(size, _ods_ir.Attribute) or
    not _ods_ir.AttrBuilder.contains('I64Attr')) else
      _ods_ir.AttrBuilder.get('I64Attr')(size, 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 start(self) -> _ods_ir.Value:
    return self.operation.operands[0]

  @builtins.property
  def ptr(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

@_ods_cext.register_op_adaptor(InvariantEndOp)
class InvariantEndOpAdaptor(_ods_ir.OpAdaptor):
  OPERATION_NAME = "llvm.intr.invariant.end"

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

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

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

def intr_invariant_end(start: _ods_ir.Value, size: _Union[int, _ods_ir.IntegerAttr], ptr: _ods_ir.Value, *, loc: _Optional[_ods_ir.Location] = None, ip: _Optional[_ods_ir.InsertionPoint] = None) -> InvariantEndOp:
  return InvariantEndOp(start=start, size=size, ptr=ptr, loc=loc, ip=ip)

@_ods_cext.register_operation(_Dialect)
class InvariantStartOp(_ods_ir.OpView):
  OPERATION_NAME = "llvm.intr.invariant.start"

  _ODS_REGIONS = (0, True)

  def __init__(self, size: _Union[int, _ods_ir.IntegerAttr], ptr: _ods_ir.Value, *, results: _Optional[_Sequence[_ods_ir.Type]] = 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["size"] = (size if (
    isinstance(size, _ods_ir.Attribute) or
    not _ods_ir.AttrBuilder.contains('I64Attr')) else
      _ods_ir.AttrBuilder.get('I64Attr')(size, context=_ods_context))
    _ods_successors = None
    super().__init__(self.OPERATION_NAME, self._ODS_REGIONS, self._ODS_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 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 res(self) -> _ods_ir.OpResult:
    return self.operation.results[0]

@_ods_cext.register_op_adaptor(InvariantStartOp)
class InvariantStartOpAdaptor(_ods_ir.OpAdaptor):
  OPERATION_NAME = "llvm.intr.invariant.start"

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

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

def intr_invariant_start(size: _Union[int, _ods_ir.IntegerAttr], ptr: _ods_ir.Value, *, results: _Optional[_Sequence[_ods_ir.Type]] = None, loc: _Optional[_ods_ir.Location] = None, ip: _Optional[_ods_ir.InsertionPoint] = None) -> _ods_ir.OpResult:
  return InvariantStartOp(size=size, ptr=ptr, results=results, loc=loc, ip=ip).result

@_ods_cext.register_operation(_Dialect)
class InvokeOp(_ods_ir.OpView):
  OPERATION_NAME = "llvm.invoke"

  _ODS_OPERAND_SEGMENTS = [-1,-1,-1,-1,]

  _ODS_REGIONS = (0, True)

  def __init__(self, result: _Optional[_ods_ir.Type], callee_operands: _Sequence[_ods_ir.Value], normalDestOperands: _Sequence[_ods_ir.Value], unwindDestOperands: _Sequence[_ods_ir.Value], op_bundle_operands: _Sequence[_ods_ir.Value], op_bundle_sizes: _Union[_Sequence[int], _ods_ir.DenseI32ArrayAttr], normalDest: _ods_ir.Block, unwindDest: _ods_ir.Block, *, var_callee_type: _Optional[_Union[_Any, _ods_ir.TypeAttr]] = None, callee: _Optional[_Union[str, _ods_ir.FlatSymbolRefAttr]] = None, arg_attrs: _Optional[_Union[_Any, _ods_ir.ArrayAttr]] = None, res_attrs: _Optional[_Union[_Any, _ods_ir.ArrayAttr]] = None, branch_weights: _Optional[_Union[_Sequence[int], _ods_ir.DenseI32ArrayAttr]] = None, CConv: _Optional[_Union[_Any, _ods_ir.Attribute]] = None, op_bundle_tags: _Optional[_Union[_Sequence[_ods_ir.Attribute], _ods_ir.ArrayAttr]] = None, loc: _Optional[_ods_ir.Location] = None, ip: _Optional[_ods_ir.InsertionPoint] = None):
    operands = []
    attributes = {}
    regions = None
    operands.append(_get_op_results_or_values(callee_operands))
    operands.append(_get_op_results_or_values(normalDestOperands))
    operands.append(_get_op_results_or_values(unwindDestOperands))
    operands.append(_get_op_results_or_values(op_bundle_operands))
    _ods_context = _ods_get_default_loc_context(loc)
    if var_callee_type is not None: attributes["var_callee_type"] = (var_callee_type if (
        isinstance(var_callee_type, _ods_ir.Attribute) or
        not _ods_ir.AttrBuilder.contains('anonymous_1014')) else
          _ods_ir.AttrBuilder.get('anonymous_1014')(var_callee_type, context=_ods_context))
    if callee is not None: attributes["callee"] = (callee if (
        isinstance(callee, _ods_ir.Attribute) or
        not _ods_ir.AttrBuilder.contains('FlatSymbolRefAttr')) else
          _ods_ir.AttrBuilder.get('FlatSymbolRefAttr')(callee, context=_ods_context))
    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))
    if branch_weights is not None: attributes["branch_weights"] = (branch_weights if (
        isinstance(branch_weights, _ods_ir.Attribute) or
        not _ods_ir.AttrBuilder.contains('DenseI32ArrayAttr')) else
          _ods_ir.AttrBuilder.get('DenseI32ArrayAttr')(branch_weights, context=_ods_context))
    if CConv is not None: attributes["CConv"] = (CConv if (
        isinstance(CConv, _ods_ir.Attribute) or
        not _ods_ir.AttrBuilder.contains('CConv')) else
          _ods_ir.AttrBuilder.get('CConv')(CConv, context=_ods_context))
    attributes["op_bundle_sizes"] = (op_bundle_sizes if (
    isinstance(op_bundle_sizes, _ods_ir.Attribute) or
    not _ods_ir.AttrBuilder.contains('DenseI32ArrayAttr')) else
      _ods_ir.AttrBuilder.get('DenseI32ArrayAttr')(op_bundle_sizes, context=_ods_context))
    if op_bundle_tags is not None: attributes["op_bundle_tags"] = (op_bundle_tags if (
        isinstance(op_bundle_tags, _ods_ir.Attribute) or
        not _ods_ir.AttrBuilder.contains('ArrayAttr')) else
          _ods_ir.AttrBuilder.get('ArrayAttr')(op_bundle_tags, context=_ods_context))
    results = []
    if result is not None: results.append(result)
    _ods_successors = []
    _ods_successors.append(normalDest)
    _ods_successors.append(unwindDest)
    super().__init__(self.OPERATION_NAME, self._ODS_REGIONS, self._ODS_OPERAND_SEGMENTS, self._ODS_RESULT_SEGMENTS, attributes=attributes, results=results, operands=operands, successors=_ods_successors, regions=regions, loc=loc, ip=ip)

  @builtins.property
  def callee_operands(self) -> _ods_ir.OpOperandList:
    operand_range = _ods_segmented_accessor(
         self.operation.operands,
         self.operation.attributes["operandSegmentSizes"], 0)
    return operand_range

  @builtins.property
  def normalDestOperands(self) -> _ods_ir.OpOperandList:
    operand_range = _ods_segmented_accessor(
         self.operation.operands,
         self.operation.attributes["operandSegmentSizes"], 1)
    return operand_range

  @builtins.property
  def unwindDestOperands(self) -> _ods_ir.OpOperandList:
    operand_range = _ods_segmented_accessor(
         self.operation.operands,
         self.operation.attributes["operandSegmentSizes"], 2)
    return operand_range

  @builtins.property
  def op_bundle_operands(self) -> _ods_ir.OpOperandList:
    operand_range = _ods_segmented_accessor(
         self.operation.operands,
         self.operation.attributes["operandSegmentSizes"], 3)
    return operand_range

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

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

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

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

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

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

  @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 branch_weights(self) -> _Optional[_ods_ir.DenseI32ArrayAttr]:
    if "branch_weights" not in self.operation.attributes:
      return None
    return self.operation.attributes["branch_weights"]

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

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

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

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

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

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

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

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

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

  @builtins.property
  def result(self) -> _Optional[_ods_ir.OpResult]:
    return None if len(self.operation.results) < 1 else self.operation.results[0]

@_ods_cext.register_op_adaptor(InvokeOp)
class InvokeOpAdaptor(_ods_ir.OpAdaptor):
  OPERATION_NAME = "llvm.invoke"

  @builtins.property
  def callee_operands(self) -> _ods_ir.OpOperandList:
    operand_range = _ods_segmented_accessor(
         self.operands,
         self.attributes["operandSegmentSizes"], 0)
    return operand_range

  @builtins.property
  def normalDestOperands(self) -> _ods_ir.OpOperandList:
    operand_range = _ods_segmented_accessor(
         self.operands,
         self.attributes["operandSegmentSizes"], 1)
    return operand_range

  @builtins.property
  def unwindDestOperands(self) -> _ods_ir.OpOperandList:
    operand_range = _ods_segmented_accessor(
         self.operands,
         self.attributes["operandSegmentSizes"], 2)
    return operand_range

  @builtins.property
  def op_bundle_operands(self) -> _ods_ir.OpOperandList:
    operand_range = _ods_segmented_accessor(
         self.operands,
         self.attributes["operandSegmentSizes"], 3)
    return operand_range

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

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

  @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"]

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

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

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

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

def invoke(result: _Optional[_ods_ir.Type], callee_operands: _Sequence[_ods_ir.Value], normal_dest_operands: _Sequence[_ods_ir.Value], unwind_dest_operands: _Sequence[_ods_ir.Value], op_bundle_operands: _Sequence[_ods_ir.Value], op_bundle_sizes: _Union[_Sequence[int], _ods_ir.DenseI32ArrayAttr], normal_dest: _ods_ir.Block, unwind_dest: _ods_ir.Block, *, var_callee_type: _Optional[_Union[_Any, _ods_ir.TypeAttr]] = None, callee: _Optional[_Union[str, _ods_ir.FlatSymbolRefAttr]] = None, arg_attrs: _Optional[_Union[_Any, _ods_ir.ArrayAttr]] = None, res_attrs: _Optional[_Union[_Any, _ods_ir.ArrayAttr]] = None, branch_weights: _Optional[_Union[_Sequence[int], _ods_ir.DenseI32ArrayAttr]] = None, c_conv: _Optional[_Union[_Any, _ods_ir.Attribute]] = None, op_bundle_tags: _Optional[_Union[_Sequence[_ods_ir.Attribute], _ods_ir.ArrayAttr]] = None, loc: _Optional[_ods_ir.Location] = None, ip: _Optional[_ods_ir.InsertionPoint] = None) -> _Union[_ods_ir.OpResult, _ods_ir.OpResultList, InvokeOp]:
  op = InvokeOp(result=result, callee_operands=callee_operands, normalDestOperands=normal_dest_operands, unwindDestOperands=unwind_dest_operands, op_bundle_operands=op_bundle_operands, op_bundle_sizes=op_bundle_sizes, normalDest=normal_dest, unwindDest=unwind_dest, var_callee_type=var_callee_type, callee=callee, arg_attrs=arg_attrs, res_attrs=res_attrs, branch_weights=branch_weights, CConv=c_conv, op_bundle_tags=op_bundle_tags, loc=loc, ip=ip); results = op.results
  return results if len(results) > 1 else (results[0] if len(results) == 1 else op)

@_ods_cext.register_operation(_Dialect)
class IsConstantOp(_ods_ir.OpView):
  OPERATION_NAME = "llvm.intr.is.constant"

  _ODS_REGIONS = (0, True)

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

  @builtins.property
  def val(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(IsConstantOp)
class IsConstantOpAdaptor(_ods_ir.OpAdaptor):
  OPERATION_NAME = "llvm.intr.is.constant"

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

def intr_is_constant(val: _ods_ir.Value, *, results: _Optional[_Sequence[_ods_ir.Type]] = None, loc: _Optional[_ods_ir.Location] = None, ip: _Optional[_ods_ir.InsertionPoint] = None) -> _ods_ir.OpResult[_ods_ir.IntegerType]:
  return IsConstantOp(val=val, results=results, loc=loc, ip=ip).result

@_ods_cext.register_operation(_Dialect)
class IsFPClass(_ods_ir.OpView):
  OPERATION_NAME = "llvm.intr.is.fpclass"

  _ODS_REGIONS = (0, True)

  def __init__(self, res: _ods_ir.Type, in_: _ods_ir.Value, bit: _Union[int, _ods_ir.IntegerAttr], *, loc: _Optional[_ods_ir.Location] = None, ip: _Optional[_ods_ir.InsertionPoint] = None):
    operands = []
    attributes = {}
    regions = None
    operands.append(in_)
    _ods_context = _ods_get_default_loc_context(loc)
    attributes["bit"] = (bit if (
    isinstance(bit, _ods_ir.Attribute) or
    not _ods_ir.AttrBuilder.contains('I32Attr')) else
      _ods_ir.AttrBuilder.get('I32Attr')(bit, 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 in_(self) -> _ods_ir.Value:
    return self.operation.operands[0]

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

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

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

@_ods_cext.register_op_adaptor(IsFPClass)
class IsFPClassAdaptor(_ods_ir.OpAdaptor):
  OPERATION_NAME = "llvm.intr.is.fpclass"

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

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

def intr_is_fpclass(res: _ods_ir.Type, in_: _ods_ir.Value, bit: _Union[int, _ods_ir.IntegerAttr], *, loc: _Optional[_ods_ir.Location] = None, ip: _Optional[_ods_ir.InsertionPoint] = None) -> _ods_ir.OpResult:
  return IsFPClass(res=res, in_=in_, bit=bit, loc=loc, ip=ip).result

@_ods_cext.register_operation(_Dialect)
class LLVMFuncOp(_ods_ir.OpView):
  r"""
  MLIR functions are defined by an operation that is not built into the IR
  itself. The LLVM dialect provides an `llvm.func` operation to define
  functions compatible with LLVM IR. These functions have LLVM dialect
  function type but use MLIR syntax to express it. They are required to have
  exactly one result type. LLVM function operation is intended to capture
  additional properties of LLVM functions, such as linkage and calling
  convention, that may be modeled differently by the built-in MLIR function.
  
  ```mlir
  // The type of @bar is !llvm<"i64 (i64)">
  llvm.func @bar(%arg0: i64) -> i64 {
    llvm.return %arg0 : i64
  }
  
  // Type type of @foo is !llvm<"void (i64)">
  // !llvm.void type is omitted
  llvm.func @foo(%arg0: i64) {
    llvm.return
  }
  
  // A function with `internal` linkage.
  llvm.func internal @internal_func() {
    llvm.return
  }
  ```
  """

  OPERATION_NAME = "llvm.func"

  _ODS_REGIONS = (1, True)

  def __init__(self, sym_name: _Union[str, _ods_ir.StringAttr], function_type: _Union[_Any, _ods_ir.TypeAttr], *, sym_visibility: _Optional[_Union[str, _ods_ir.StringAttr]] = None, linkage: _Optional[_Union[_Any, _ods_ir.Attribute]] = None, dso_local: _Optional[bool] = None, CConv: _Optional[_Union[_Any, _ods_ir.Attribute]] = None, comdat: _Optional[_Union[str, _ods_ir.SymbolRefAttr]] = None, convergent: _Optional[bool] = None, personality: _Optional[_Union[str, _ods_ir.FlatSymbolRefAttr]] = None, garbageCollector: _Optional[_Union[str, _ods_ir.StringAttr]] = None, passthrough: _Optional[_Union[_Sequence[_ods_ir.Attribute], _ods_ir.ArrayAttr]] = None, arg_attrs: _Optional[_Union[_Any, _ods_ir.ArrayAttr]] = None, res_attrs: _Optional[_Union[_Any, _ods_ir.ArrayAttr]] = None, function_entry_count: _Optional[_Union[int, _ods_ir.IntegerAttr]] = None, memory_effects: _Optional[_Union[_Any, _ods_ir.Attribute]] = None, visibility_: _Optional[_Union[_Any, _ods_ir.Attribute]] = None, arm_streaming: _Optional[bool] = None, arm_locally_streaming: _Optional[bool] = None, arm_streaming_compatible: _Optional[bool] = None, arm_new_za: _Optional[bool] = None, arm_in_za: _Optional[bool] = None, arm_out_za: _Optional[bool] = None, arm_inout_za: _Optional[bool] = None, arm_preserves_za: _Optional[bool] = None, section: _Optional[_Union[str, _ods_ir.StringAttr]] = None, unnamed_addr: _Optional[_Union[_Any, _ods_ir.Attribute]] = None, alignment: _Optional[_Union[int, _ods_ir.IntegerAttr]] = None, vscale_range: _Optional[_Union[_Any, _ods_ir.Attribute]] = None, frame_pointer: _Optional[_Union[_Any, _ods_ir.Attribute]] = None, target_cpu: _Optional[_Union[str, _ods_ir.StringAttr]] = None, tune_cpu: _Optional[_Union[str, _ods_ir.StringAttr]] = None, reciprocal_estimates: _Optional[_Union[str, _ods_ir.StringAttr]] = None, prefer_vector_width: _Optional[_Union[str, _ods_ir.StringAttr]] = None, target_features: _Optional[_Union[_Any, _ods_ir.Attribute]] = None, no_signed_zeros_fp_math: _Optional[_Union[bool, _ods_ir.BoolAttr]] = None, denormal_fpenv: _Optional[_Union[_Any, _ods_ir.Attribute]] = None, fp_contract: _Optional[_Union[str, _ods_ir.StringAttr]] = None, instrument_function_entry: _Optional[_Union[str, _ods_ir.StringAttr]] = None, instrument_function_exit: _Optional[_Union[str, _ods_ir.StringAttr]] = None, no_inline: _Optional[bool] = None, always_inline: _Optional[bool] = None, inline_hint: _Optional[bool] = None, no_unwind: _Optional[bool] = None, will_return: _Optional[bool] = None, noreturn: _Optional[bool] = None, optimize_none: _Optional[bool] = None, returns_twice: _Optional[bool] = None, hot: _Optional[bool] = None, cold: _Optional[bool] = None, noduplicate: _Optional[bool] = None, no_caller_saved_registers: _Optional[bool] = None, nocallback: _Optional[bool] = None, modular_format: _Optional[_Union[str, _ods_ir.StringAttr]] = None, nobuiltins: _Optional[_Union[_Sequence[_ods_ir.Attribute], _ods_ir.ArrayAttr]] = None, allocsize: _Optional[_Union[_Sequence[int], _ods_ir.DenseI32ArrayAttr]] = None, optsize: _Optional[bool] = None, minsize: _Optional[bool] = None, save_reg_params: _Optional[bool] = None, zero_call_used_regs: _Optional[_Union[str, _ods_ir.StringAttr]] = None, default_func_attrs: _Optional[_Union[dict, _ods_ir.DictAttr]] = None, vec_type_hint: _Optional[_Union[_Any, _ods_ir.Attribute]] = None, work_group_size_hint: _Optional[_Union[_Sequence[int], _ods_ir.DenseI32ArrayAttr]] = None, reqd_work_group_size: _Optional[_Union[_Sequence[int], _ods_ir.DenseI32ArrayAttr]] = None, intel_reqd_sub_group_size: _Optional[_Union[int, _ods_ir.IntegerAttr]] = None, uwtable_kind: _Optional[_Union[_Any, _ods_ir.Attribute]] = None, use_sample_profile: _Optional[_Union[bool, _ods_ir.BoolAttr]] = 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)
    attributes["sym_name"] = (sym_name if (
    isinstance(sym_name, _ods_ir.Attribute) or
    not _ods_ir.AttrBuilder.contains('StrAttr')) else
      _ods_ir.AttrBuilder.get('StrAttr')(sym_name, context=_ods_context))
    if sym_visibility is not None: attributes["sym_visibility"] = (sym_visibility if (
        isinstance(sym_visibility, _ods_ir.Attribute) or
        not _ods_ir.AttrBuilder.contains('StrAttr')) else
          _ods_ir.AttrBuilder.get('StrAttr')(sym_visibility, context=_ods_context))
    attributes["function_type"] = (function_type if (
    isinstance(function_type, _ods_ir.Attribute) or
    not _ods_ir.AttrBuilder.contains('anonymous_1014')) else
      _ods_ir.AttrBuilder.get('anonymous_1014')(function_type, context=_ods_context))
    if linkage is not None: attributes["linkage"] = (linkage if (
        isinstance(linkage, _ods_ir.Attribute) or
        not _ods_ir.AttrBuilder.contains('Linkage')) else
          _ods_ir.AttrBuilder.get('Linkage')(linkage, context=_ods_context))
    if bool(dso_local): attributes["dso_local"] = _ods_ir.UnitAttr.get(
      _ods_get_default_loc_context(loc))
    if CConv is not None: attributes["CConv"] = (CConv if (
        isinstance(CConv, _ods_ir.Attribute) or
        not _ods_ir.AttrBuilder.contains('CConv')) else
          _ods_ir.AttrBuilder.get('CConv')(CConv, context=_ods_context))
    if comdat is not None: attributes["comdat"] = (comdat if (
        isinstance(comdat, _ods_ir.Attribute) or
        not _ods_ir.AttrBuilder.contains('SymbolRefAttr')) else
          _ods_ir.AttrBuilder.get('SymbolRefAttr')(comdat, context=_ods_context))
    if bool(convergent): attributes["convergent"] = _ods_ir.UnitAttr.get(
      _ods_get_default_loc_context(loc))
    if personality is not None: attributes["personality"] = (personality if (
        isinstance(personality, _ods_ir.Attribute) or
        not _ods_ir.AttrBuilder.contains('FlatSymbolRefAttr')) else
          _ods_ir.AttrBuilder.get('FlatSymbolRefAttr')(personality, context=_ods_context))
    if garbageCollector is not None: attributes["garbageCollector"] = (garbageCollector if (
        isinstance(garbageCollector, _ods_ir.Attribute) or
        not _ods_ir.AttrBuilder.contains('StrAttr')) else
          _ods_ir.AttrBuilder.get('StrAttr')(garbageCollector, context=_ods_context))
    if passthrough is not None: attributes["passthrough"] = (passthrough if (
        isinstance(passthrough, _ods_ir.Attribute) or
        not _ods_ir.AttrBuilder.contains('ArrayAttr')) else
          _ods_ir.AttrBuilder.get('ArrayAttr')(passthrough, context=_ods_context))
    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))
    if function_entry_count is not None: attributes["function_entry_count"] = (function_entry_count if (
        isinstance(function_entry_count, _ods_ir.Attribute) or
        not _ods_ir.AttrBuilder.contains('I64Attr')) else
          _ods_ir.AttrBuilder.get('I64Attr')(function_entry_count, context=_ods_context))
    if memory_effects is not None: attributes["memory_effects"] = (memory_effects if (
        isinstance(memory_effects, _ods_ir.Attribute) or
        not _ods_ir.AttrBuilder.contains('LLVM_MemoryEffectsAttr')) else
          _ods_ir.AttrBuilder.get('LLVM_MemoryEffectsAttr')(memory_effects, context=_ods_context))
    if visibility_ is not None: attributes["visibility_"] = (visibility_ if (
        isinstance(visibility_, _ods_ir.Attribute) or
        not _ods_ir.AttrBuilder.contains('Visibility')) else
          _ods_ir.AttrBuilder.get('Visibility')(visibility_, context=_ods_context))
    if bool(arm_streaming): attributes["arm_streaming"] = _ods_ir.UnitAttr.get(
      _ods_get_default_loc_context(loc))
    if bool(arm_locally_streaming): attributes["arm_locally_streaming"] = _ods_ir.UnitAttr.get(
      _ods_get_default_loc_context(loc))
    if bool(arm_streaming_compatible): attributes["arm_streaming_compatible"] = _ods_ir.UnitAttr.get(
      _ods_get_default_loc_context(loc))
    if bool(arm_new_za): attributes["arm_new_za"] = _ods_ir.UnitAttr.get(
      _ods_get_default_loc_context(loc))
    if bool(arm_in_za): attributes["arm_in_za"] = _ods_ir.UnitAttr.get(
      _ods_get_default_loc_context(loc))
    if bool(arm_out_za): attributes["arm_out_za"] = _ods_ir.UnitAttr.get(
      _ods_get_default_loc_context(loc))
    if bool(arm_inout_za): attributes["arm_inout_za"] = _ods_ir.UnitAttr.get(
      _ods_get_default_loc_context(loc))
    if bool(arm_preserves_za): attributes["arm_preserves_za"] = _ods_ir.UnitAttr.get(
      _ods_get_default_loc_context(loc))
    if section is not None: attributes["section"] = (section if (
        isinstance(section, _ods_ir.Attribute) or
        not _ods_ir.AttrBuilder.contains('StrAttr')) else
          _ods_ir.AttrBuilder.get('StrAttr')(section, context=_ods_context))
    if unnamed_addr is not None: attributes["unnamed_addr"] = (unnamed_addr if (
        isinstance(unnamed_addr, _ods_ir.Attribute) or
        not _ods_ir.AttrBuilder.contains('UnnamedAddr')) else
          _ods_ir.AttrBuilder.get('UnnamedAddr')(unnamed_addr, context=_ods_context))
    if alignment is not None: attributes["alignment"] = (alignment if (
        isinstance(alignment, _ods_ir.Attribute) or
        not _ods_ir.AttrBuilder.contains('I64Attr')) else
          _ods_ir.AttrBuilder.get('I64Attr')(alignment, context=_ods_context))
    if vscale_range is not None: attributes["vscale_range"] = (vscale_range if (
        isinstance(vscale_range, _ods_ir.Attribute) or
        not _ods_ir.AttrBuilder.contains('LLVM_VScaleRangeAttr')) else
          _ods_ir.AttrBuilder.get('LLVM_VScaleRangeAttr')(vscale_range, context=_ods_context))
    if frame_pointer is not None: attributes["frame_pointer"] = (frame_pointer if (
        isinstance(frame_pointer, _ods_ir.Attribute) or
        not _ods_ir.AttrBuilder.contains('FramePointerKindAttr')) else
          _ods_ir.AttrBuilder.get('FramePointerKindAttr')(frame_pointer, context=_ods_context))
    if target_cpu is not None: attributes["target_cpu"] = (target_cpu if (
        isinstance(target_cpu, _ods_ir.Attribute) or
        not _ods_ir.AttrBuilder.contains('StrAttr')) else
          _ods_ir.AttrBuilder.get('StrAttr')(target_cpu, context=_ods_context))
    if tune_cpu is not None: attributes["tune_cpu"] = (tune_cpu if (
        isinstance(tune_cpu, _ods_ir.Attribute) or
        not _ods_ir.AttrBuilder.contains('StrAttr')) else
          _ods_ir.AttrBuilder.get('StrAttr')(tune_cpu, context=_ods_context))
    if reciprocal_estimates is not None: attributes["reciprocal_estimates"] = (reciprocal_estimates if (
        isinstance(reciprocal_estimates, _ods_ir.Attribute) or
        not _ods_ir.AttrBuilder.contains('StrAttr')) else
          _ods_ir.AttrBuilder.get('StrAttr')(reciprocal_estimates, context=_ods_context))
    if prefer_vector_width is not None: attributes["prefer_vector_width"] = (prefer_vector_width if (
        isinstance(prefer_vector_width, _ods_ir.Attribute) or
        not _ods_ir.AttrBuilder.contains('StrAttr')) else
          _ods_ir.AttrBuilder.get('StrAttr')(prefer_vector_width, context=_ods_context))
    if target_features is not None: attributes["target_features"] = (target_features if (
        isinstance(target_features, _ods_ir.Attribute) or
        not _ods_ir.AttrBuilder.contains('LLVM_TargetFeaturesAttr')) else
          _ods_ir.AttrBuilder.get('LLVM_TargetFeaturesAttr')(target_features, context=_ods_context))
    if no_signed_zeros_fp_math is not None: attributes["no_signed_zeros_fp_math"] = (no_signed_zeros_fp_math if (
        isinstance(no_signed_zeros_fp_math, _ods_ir.Attribute) or
        not _ods_ir.AttrBuilder.contains('BoolAttr')) else
          _ods_ir.AttrBuilder.get('BoolAttr')(no_signed_zeros_fp_math, context=_ods_context))
    if denormal_fpenv is not None: attributes["denormal_fpenv"] = (denormal_fpenv if (
        isinstance(denormal_fpenv, _ods_ir.Attribute) or
        not _ods_ir.AttrBuilder.contains('LLVM_DenormalFPEnvAttr')) else
          _ods_ir.AttrBuilder.get('LLVM_DenormalFPEnvAttr')(denormal_fpenv, context=_ods_context))
    if fp_contract is not None: attributes["fp_contract"] = (fp_contract if (
        isinstance(fp_contract, _ods_ir.Attribute) or
        not _ods_ir.AttrBuilder.contains('StrAttr')) else
          _ods_ir.AttrBuilder.get('StrAttr')(fp_contract, context=_ods_context))
    if instrument_function_entry is not None: attributes["instrument_function_entry"] = (instrument_function_entry if (
        isinstance(instrument_function_entry, _ods_ir.Attribute) or
        not _ods_ir.AttrBuilder.contains('StrAttr')) else
          _ods_ir.AttrBuilder.get('StrAttr')(instrument_function_entry, context=_ods_context))
    if instrument_function_exit is not None: attributes["instrument_function_exit"] = (instrument_function_exit if (
        isinstance(instrument_function_exit, _ods_ir.Attribute) or
        not _ods_ir.AttrBuilder.contains('StrAttr')) else
          _ods_ir.AttrBuilder.get('StrAttr')(instrument_function_exit, context=_ods_context))
    if bool(no_inline): attributes["no_inline"] = _ods_ir.UnitAttr.get(
      _ods_get_default_loc_context(loc))
    if bool(always_inline): attributes["always_inline"] = _ods_ir.UnitAttr.get(
      _ods_get_default_loc_context(loc))
    if bool(inline_hint): attributes["inline_hint"] = _ods_ir.UnitAttr.get(
      _ods_get_default_loc_context(loc))
    if bool(no_unwind): attributes["no_unwind"] = _ods_ir.UnitAttr.get(
      _ods_get_default_loc_context(loc))
    if bool(will_return): attributes["will_return"] = _ods_ir.UnitAttr.get(
      _ods_get_default_loc_context(loc))
    if bool(noreturn): attributes["noreturn"] = _ods_ir.UnitAttr.get(
      _ods_get_default_loc_context(loc))
    if bool(optimize_none): attributes["optimize_none"] = _ods_ir.UnitAttr.get(
      _ods_get_default_loc_context(loc))
    if bool(returns_twice): attributes["returns_twice"] = _ods_ir.UnitAttr.get(
      _ods_get_default_loc_context(loc))
    if bool(hot): attributes["hot"] = _ods_ir.UnitAttr.get(
      _ods_get_default_loc_context(loc))
    if bool(cold): attributes["cold"] = _ods_ir.UnitAttr.get(
      _ods_get_default_loc_context(loc))
    if bool(noduplicate): attributes["noduplicate"] = _ods_ir.UnitAttr.get(
      _ods_get_default_loc_context(loc))
    if bool(no_caller_saved_registers): attributes["no_caller_saved_registers"] = _ods_ir.UnitAttr.get(
      _ods_get_default_loc_context(loc))
    if bool(nocallback): attributes["nocallback"] = _ods_ir.UnitAttr.get(
      _ods_get_default_loc_context(loc))
    if modular_format is not None: attributes["modular_format"] = (modular_format if (
        isinstance(modular_format, _ods_ir.Attribute) or
        not _ods_ir.AttrBuilder.contains('StrAttr')) else
          _ods_ir.AttrBuilder.get('StrAttr')(modular_format, context=_ods_context))
    if nobuiltins is not None: attributes["nobuiltins"] = (nobuiltins if (
        isinstance(nobuiltins, _ods_ir.Attribute) or
        not _ods_ir.AttrBuilder.contains('ArrayAttr')) else
          _ods_ir.AttrBuilder.get('ArrayAttr')(nobuiltins, context=_ods_context))
    if allocsize is not None: attributes["allocsize"] = (allocsize if (
        isinstance(allocsize, _ods_ir.Attribute) or
        not _ods_ir.AttrBuilder.contains('DenseI32ArrayAttr')) else
          _ods_ir.AttrBuilder.get('DenseI32ArrayAttr')(allocsize, context=_ods_context))
    if bool(optsize): attributes["optsize"] = _ods_ir.UnitAttr.get(
      _ods_get_default_loc_context(loc))
    if bool(minsize): attributes["minsize"] = _ods_ir.UnitAttr.get(
      _ods_get_default_loc_context(loc))
    if bool(save_reg_params): attributes["save_reg_params"] = _ods_ir.UnitAttr.get(
      _ods_get_default_loc_context(loc))
    if zero_call_used_regs is not None: attributes["zero_call_used_regs"] = (zero_call_used_regs if (
        isinstance(zero_call_used_regs, _ods_ir.Attribute) or
        not _ods_ir.AttrBuilder.contains('StrAttr')) else
          _ods_ir.AttrBuilder.get('StrAttr')(zero_call_used_regs, context=_ods_context))
    if default_func_attrs is not None: attributes["default_func_attrs"] = (default_func_attrs if (
        isinstance(default_func_attrs, _ods_ir.Attribute) or
        not _ods_ir.AttrBuilder.contains('DictionaryAttr')) else
          _ods_ir.AttrBuilder.get('DictionaryAttr')(default_func_attrs, context=_ods_context))
    if vec_type_hint is not None: attributes["vec_type_hint"] = (vec_type_hint if (
        isinstance(vec_type_hint, _ods_ir.Attribute) or
        not _ods_ir.AttrBuilder.contains('LLVM_VecTypeHintAttr')) else
          _ods_ir.AttrBuilder.get('LLVM_VecTypeHintAttr')(vec_type_hint, context=_ods_context))
    if work_group_size_hint is not None: attributes["work_group_size_hint"] = (work_group_size_hint if (
        isinstance(work_group_size_hint, _ods_ir.Attribute) or
        not _ods_ir.AttrBuilder.contains('DenseI32ArrayAttr')) else
          _ods_ir.AttrBuilder.get('DenseI32ArrayAttr')(work_group_size_hint, context=_ods_context))
    if reqd_work_group_size is not None: attributes["reqd_work_group_size"] = (reqd_work_group_size if (
        isinstance(reqd_work_group_size, _ods_ir.Attribute) or
        not _ods_ir.AttrBuilder.contains('DenseI32ArrayAttr')) else
          _ods_ir.AttrBuilder.get('DenseI32ArrayAttr')(reqd_work_group_size, context=_ods_context))
    if intel_reqd_sub_group_size is not None: attributes["intel_reqd_sub_group_size"] = (intel_reqd_sub_group_size if (
        isinstance(intel_reqd_sub_group_size, _ods_ir.Attribute) or
        not _ods_ir.AttrBuilder.contains('I32Attr')) else
          _ods_ir.AttrBuilder.get('I32Attr')(intel_reqd_sub_group_size, context=_ods_context))
    if uwtable_kind is not None: attributes["uwtable_kind"] = (uwtable_kind if (
        isinstance(uwtable_kind, _ods_ir.Attribute) or
        not _ods_ir.AttrBuilder.contains('UWTableKindAttr')) else
          _ods_ir.AttrBuilder.get('UWTableKindAttr')(uwtable_kind, context=_ods_context))
    if use_sample_profile is not None: attributes["use_sample_profile"] = (use_sample_profile if (
        isinstance(use_sample_profile, _ods_ir.Attribute) or
        not _ods_ir.AttrBuilder.contains('BoolAttr')) else
          _ods_ir.AttrBuilder.get('BoolAttr')(use_sample_profile, 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 sym_name(self) -> _ods_ir.StringAttr:
    return self.operation.attributes["sym_name"]

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

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

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

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

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

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

  @builtins.property
  def linkage(self) -> _ods_ir.Attribute:
    return self.operation.attributes["linkage"]

  @linkage.setter
  def linkage(self, value: _ods_ir.Attribute):
    if value is None:
      raise ValueError("'None' not allowed as value for mandatory attributes")
    self.operation.attributes["linkage"] = value

  @builtins.property
  def dso_local(self) -> bool:
    return "dso_local" in self.operation.attributes

  @dso_local.setter
  def dso_local(self, value):
    if bool(value):
      self.operation.attributes["dso_local"] = _ods_ir.UnitAttr.get()
    elif "dso_local" in self.operation.attributes:
      del self.operation.attributes["dso_local"]

  @dso_local.deleter
  def dso_local(self):
    del self.operation.attributes["dso_local"]

  @builtins.property
  def CConv(self) -> _ods_ir.Attribute:
    return self.operation.attributes["CConv"]

  @CConv.setter
  def CConv(self, value: _ods_ir.Attribute):
    if value is None:
      raise ValueError("'None' not allowed as value for mandatory attributes")
    self.operation.attributes["CConv"] = value

  @builtins.property
  def comdat(self) -> _Optional[_ods_ir.SymbolRefAttr]:
    if "comdat" not in self.operation.attributes:
      return None
    return self.operation.attributes["comdat"]

  @comdat.setter
  def comdat(self, value: _Optional[_ods_ir.SymbolRefAttr]):
    if value is not None:
      self.operation.attributes["comdat"] = value
    elif "comdat" in self.operation.attributes:
      del self.operation.attributes["comdat"]

  @comdat.deleter
  def comdat(self):
    del self.operation.attributes["comdat"]

  @builtins.property
  def convergent(self) -> bool:
    return "convergent" in self.operation.attributes

  @convergent.setter
  def convergent(self, value):
    if bool(value):
      self.operation.attributes["convergent"] = _ods_ir.UnitAttr.get()
    elif "convergent" in self.operation.attributes:
      del self.operation.attributes["convergent"]

  @convergent.deleter
  def convergent(self):
    del self.operation.attributes["convergent"]

  @builtins.property
  def personality(self) -> _Optional[_ods_ir.FlatSymbolRefAttr]:
    if "personality" not in self.operation.attributes:
      return None
    return self.operation.attributes["personality"]

  @personality.setter
  def personality(self, value: _Optional[_ods_ir.FlatSymbolRefAttr]):
    if value is not None:
      self.operation.attributes["personality"] = value
    elif "personality" in self.operation.attributes:
      del self.operation.attributes["personality"]

  @personality.deleter
  def personality(self):
    del self.operation.attributes["personality"]

  @builtins.property
  def garbageCollector(self) -> _Optional[_ods_ir.StringAttr]:
    if "garbageCollector" not in self.operation.attributes:
      return None
    return self.operation.attributes["garbageCollector"]

  @garbageCollector.setter
  def garbageCollector(self, value: _Optional[_ods_ir.StringAttr]):
    if value is not None:
      self.operation.attributes["garbageCollector"] = value
    elif "garbageCollector" in self.operation.attributes:
      del self.operation.attributes["garbageCollector"]

  @garbageCollector.deleter
  def garbageCollector(self):
    del self.operation.attributes["garbageCollector"]

  @builtins.property
  def passthrough(self) -> _Optional[_ods_ir.ArrayAttr]:
    if "passthrough" not in self.operation.attributes:
      return None
    return self.operation.attributes["passthrough"]

  @passthrough.setter
  def passthrough(self, value: _Optional[_ods_ir.ArrayAttr]):
    if value is not None:
      self.operation.attributes["passthrough"] = value
    elif "passthrough" in self.operation.attributes:
      del self.operation.attributes["passthrough"]

  @passthrough.deleter
  def passthrough(self):
    del self.operation.attributes["passthrough"]

  @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 function_entry_count(self) -> _Optional[_ods_ir.IntegerAttr]:
    if "function_entry_count" not in self.operation.attributes:
      return None
    return self.operation.attributes["function_entry_count"]

  @function_entry_count.setter
  def function_entry_count(self, value: _Optional[_ods_ir.IntegerAttr]):
    if value is not None:
      self.operation.attributes["function_entry_count"] = value
    elif "function_entry_count" in self.operation.attributes:
      del self.operation.attributes["function_entry_count"]

  @function_entry_count.deleter
  def function_entry_count(self):
    del self.operation.attributes["function_entry_count"]

  @builtins.property
  def memory_effects(self) -> _Optional[_ods_ir.Attribute]:
    if "memory_effects" not in self.operation.attributes:
      return None
    return self.operation.attributes["memory_effects"]

  @memory_effects.setter
  def memory_effects(self, value: _Optional[_ods_ir.Attribute]):
    if value is not None:
      self.operation.attributes["memory_effects"] = value
    elif "memory_effects" in self.operation.attributes:
      del self.operation.attributes["memory_effects"]

  @memory_effects.deleter
  def memory_effects(self):
    del self.operation.attributes["memory_effects"]

  @builtins.property
  def visibility_(self) -> _ods_ir.Attribute:
    return self.operation.attributes["visibility_"]

  @visibility_.setter
  def visibility_(self, value: _ods_ir.Attribute):
    if value is None:
      raise ValueError("'None' not allowed as value for mandatory attributes")
    self.operation.attributes["visibility_"] = value

  @builtins.property
  def arm_streaming(self) -> bool:
    return "arm_streaming" in self.operation.attributes

  @arm_streaming.setter
  def arm_streaming(self, value):
    if bool(value):
      self.operation.attributes["arm_streaming"] = _ods_ir.UnitAttr.get()
    elif "arm_streaming" in self.operation.attributes:
      del self.operation.attributes["arm_streaming"]

  @arm_streaming.deleter
  def arm_streaming(self):
    del self.operation.attributes["arm_streaming"]

  @builtins.property
  def arm_locally_streaming(self) -> bool:
    return "arm_locally_streaming" in self.operation.attributes

  @arm_locally_streaming.setter
  def arm_locally_streaming(self, value):
    if bool(value):
      self.operation.attributes["arm_locally_streaming"] = _ods_ir.UnitAttr.get()
    elif "arm_locally_streaming" in self.operation.attributes:
      del self.operation.attributes["arm_locally_streaming"]

  @arm_locally_streaming.deleter
  def arm_locally_streaming(self):
    del self.operation.attributes["arm_locally_streaming"]

  @builtins.property
  def arm_streaming_compatible(self) -> bool:
    return "arm_streaming_compatible" in self.operation.attributes

  @arm_streaming_compatible.setter
  def arm_streaming_compatible(self, value):
    if bool(value):
      self.operation.attributes["arm_streaming_compatible"] = _ods_ir.UnitAttr.get()
    elif "arm_streaming_compatible" in self.operation.attributes:
      del self.operation.attributes["arm_streaming_compatible"]

  @arm_streaming_compatible.deleter
  def arm_streaming_compatible(self):
    del self.operation.attributes["arm_streaming_compatible"]

  @builtins.property
  def arm_new_za(self) -> bool:
    return "arm_new_za" in self.operation.attributes

  @arm_new_za.setter
  def arm_new_za(self, value):
    if bool(value):
      self.operation.attributes["arm_new_za"] = _ods_ir.UnitAttr.get()
    elif "arm_new_za" in self.operation.attributes:
      del self.operation.attributes["arm_new_za"]

  @arm_new_za.deleter
  def arm_new_za(self):
    del self.operation.attributes["arm_new_za"]

  @builtins.property
  def arm_in_za(self) -> bool:
    return "arm_in_za" in self.operation.attributes

  @arm_in_za.setter
  def arm_in_za(self, value):
    if bool(value):
      self.operation.attributes["arm_in_za"] = _ods_ir.UnitAttr.get()
    elif "arm_in_za" in self.operation.attributes:
      del self.operation.attributes["arm_in_za"]

  @arm_in_za.deleter
  def arm_in_za(self):
    del self.operation.attributes["arm_in_za"]

  @builtins.property
  def arm_out_za(self) -> bool:
    return "arm_out_za" in self.operation.attributes

  @arm_out_za.setter
  def arm_out_za(self, value):
    if bool(value):
      self.operation.attributes["arm_out_za"] = _ods_ir.UnitAttr.get()
    elif "arm_out_za" in self.operation.attributes:
      del self.operation.attributes["arm_out_za"]

  @arm_out_za.deleter
  def arm_out_za(self):
    del self.operation.attributes["arm_out_za"]

  @builtins.property
  def arm_inout_za(self) -> bool:
    return "arm_inout_za" in self.operation.attributes

  @arm_inout_za.setter
  def arm_inout_za(self, value):
    if bool(value):
      self.operation.attributes["arm_inout_za"] = _ods_ir.UnitAttr.get()
    elif "arm_inout_za" in self.operation.attributes:
      del self.operation.attributes["arm_inout_za"]

  @arm_inout_za.deleter
  def arm_inout_za(self):
    del self.operation.attributes["arm_inout_za"]

  @builtins.property
  def arm_preserves_za(self) -> bool:
    return "arm_preserves_za" in self.operation.attributes

  @arm_preserves_za.setter
  def arm_preserves_za(self, value):
    if bool(value):
      self.operation.attributes["arm_preserves_za"] = _ods_ir.UnitAttr.get()
    elif "arm_preserves_za" in self.operation.attributes:
      del self.operation.attributes["arm_preserves_za"]

  @arm_preserves_za.deleter
  def arm_preserves_za(self):
    del self.operation.attributes["arm_preserves_za"]

  @builtins.property
  def section(self) -> _Optional[_ods_ir.StringAttr]:
    if "section" not in self.operation.attributes:
      return None
    return self.operation.attributes["section"]

  @section.setter
  def section(self, value: _Optional[_ods_ir.StringAttr]):
    if value is not None:
      self.operation.attributes["section"] = value
    elif "section" in self.operation.attributes:
      del self.operation.attributes["section"]

  @section.deleter
  def section(self):
    del self.operation.attributes["section"]

  @builtins.property
  def unnamed_addr(self) -> _Optional[_ods_ir.Attribute]:
    if "unnamed_addr" not in self.operation.attributes:
      return None
    return self.operation.attributes["unnamed_addr"]

  @unnamed_addr.setter
  def unnamed_addr(self, value: _Optional[_ods_ir.Attribute]):
    if value is not None:
      self.operation.attributes["unnamed_addr"] = value
    elif "unnamed_addr" in self.operation.attributes:
      del self.operation.attributes["unnamed_addr"]

  @unnamed_addr.deleter
  def unnamed_addr(self):
    del self.operation.attributes["unnamed_addr"]

  @builtins.property
  def alignment(self) -> _Optional[_ods_ir.IntegerAttr]:
    if "alignment" not in self.operation.attributes:
      return None
    return self.operation.attributes["alignment"]

  @alignment.setter
  def alignment(self, value: _Optional[_ods_ir.IntegerAttr]):
    if value is not None:
      self.operation.attributes["alignment"] = value
    elif "alignment" in self.operation.attributes:
      del self.operation.attributes["alignment"]

  @alignment.deleter
  def alignment(self):
    del self.operation.attributes["alignment"]

  @builtins.property
  def vscale_range(self) -> _Optional[_ods_ir.Attribute]:
    if "vscale_range" not in self.operation.attributes:
      return None
    return self.operation.attributes["vscale_range"]

  @vscale_range.setter
  def vscale_range(self, value: _Optional[_ods_ir.Attribute]):
    if value is not None:
      self.operation.attributes["vscale_range"] = value
    elif "vscale_range" in self.operation.attributes:
      del self.operation.attributes["vscale_range"]

  @vscale_range.deleter
  def vscale_range(self):
    del self.operation.attributes["vscale_range"]

  @builtins.property
  def frame_pointer(self) -> _Optional[_ods_ir.Attribute]:
    if "frame_pointer" not in self.operation.attributes:
      return None
    return self.operation.attributes["frame_pointer"]

  @frame_pointer.setter
  def frame_pointer(self, value: _Optional[_ods_ir.Attribute]):
    if value is not None:
      self.operation.attributes["frame_pointer"] = value
    elif "frame_pointer" in self.operation.attributes:
      del self.operation.attributes["frame_pointer"]

  @frame_pointer.deleter
  def frame_pointer(self):
    del self.operation.attributes["frame_pointer"]

  @builtins.property
  def target_cpu(self) -> _Optional[_ods_ir.StringAttr]:
    if "target_cpu" not in self.operation.attributes:
      return None
    return self.operation.attributes["target_cpu"]

  @target_cpu.setter
  def target_cpu(self, value: _Optional[_ods_ir.StringAttr]):
    if value is not None:
      self.operation.attributes["target_cpu"] = value
    elif "target_cpu" in self.operation.attributes:
      del self.operation.attributes["target_cpu"]

  @target_cpu.deleter
  def target_cpu(self):
    del self.operation.attributes["target_cpu"]

  @builtins.property
  def tune_cpu(self) -> _Optional[_ods_ir.StringAttr]:
    if "tune_cpu" not in self.operation.attributes:
      return None
    return self.operation.attributes["tune_cpu"]

  @tune_cpu.setter
  def tune_cpu(self, value: _Optional[_ods_ir.StringAttr]):
    if value is not None:
      self.operation.attributes["tune_cpu"] = value
    elif "tune_cpu" in self.operation.attributes:
      del self.operation.attributes["tune_cpu"]

  @tune_cpu.deleter
  def tune_cpu(self):
    del self.operation.attributes["tune_cpu"]

  @builtins.property
  def reciprocal_estimates(self) -> _Optional[_ods_ir.StringAttr]:
    if "reciprocal_estimates" not in self.operation.attributes:
      return None
    return self.operation.attributes["reciprocal_estimates"]

  @reciprocal_estimates.setter
  def reciprocal_estimates(self, value: _Optional[_ods_ir.StringAttr]):
    if value is not None:
      self.operation.attributes["reciprocal_estimates"] = value
    elif "reciprocal_estimates" in self.operation.attributes:
      del self.operation.attributes["reciprocal_estimates"]

  @reciprocal_estimates.deleter
  def reciprocal_estimates(self):
    del self.operation.attributes["reciprocal_estimates"]

  @builtins.property
  def prefer_vector_width(self) -> _Optional[_ods_ir.StringAttr]:
    if "prefer_vector_width" not in self.operation.attributes:
      return None
    return self.operation.attributes["prefer_vector_width"]

  @prefer_vector_width.setter
  def prefer_vector_width(self, value: _Optional[_ods_ir.StringAttr]):
    if value is not None:
      self.operation.attributes["prefer_vector_width"] = value
    elif "prefer_vector_width" in self.operation.attributes:
      del self.operation.attributes["prefer_vector_width"]

  @prefer_vector_width.deleter
  def prefer_vector_width(self):
    del self.operation.attributes["prefer_vector_width"]

  @builtins.property
  def target_features(self) -> _Optional[_ods_ir.Attribute]:
    if "target_features" not in self.operation.attributes:
      return None
    return self.operation.attributes["target_features"]

  @target_features.setter
  def target_features(self, value: _Optional[_ods_ir.Attribute]):
    if value is not None:
      self.operation.attributes["target_features"] = value
    elif "target_features" in self.operation.attributes:
      del self.operation.attributes["target_features"]

  @target_features.deleter
  def target_features(self):
    del self.operation.attributes["target_features"]

  @builtins.property
  def no_signed_zeros_fp_math(self) -> _Optional[_ods_ir.BoolAttr]:
    if "no_signed_zeros_fp_math" not in self.operation.attributes:
      return None
    return self.operation.attributes["no_signed_zeros_fp_math"]

  @no_signed_zeros_fp_math.setter
  def no_signed_zeros_fp_math(self, value: _Optional[_ods_ir.BoolAttr]):
    if value is not None:
      self.operation.attributes["no_signed_zeros_fp_math"] = value
    elif "no_signed_zeros_fp_math" in self.operation.attributes:
      del self.operation.attributes["no_signed_zeros_fp_math"]

  @no_signed_zeros_fp_math.deleter
  def no_signed_zeros_fp_math(self):
    del self.operation.attributes["no_signed_zeros_fp_math"]

  @builtins.property
  def denormal_fpenv(self) -> _Optional[_ods_ir.Attribute]:
    if "denormal_fpenv" not in self.operation.attributes:
      return None
    return self.operation.attributes["denormal_fpenv"]

  @denormal_fpenv.setter
  def denormal_fpenv(self, value: _Optional[_ods_ir.Attribute]):
    if value is not None:
      self.operation.attributes["denormal_fpenv"] = value
    elif "denormal_fpenv" in self.operation.attributes:
      del self.operation.attributes["denormal_fpenv"]

  @denormal_fpenv.deleter
  def denormal_fpenv(self):
    del self.operation.attributes["denormal_fpenv"]

  @builtins.property
  def fp_contract(self) -> _Optional[_ods_ir.StringAttr]:
    if "fp_contract" not in self.operation.attributes:
      return None
    return self.operation.attributes["fp_contract"]

  @fp_contract.setter
  def fp_contract(self, value: _Optional[_ods_ir.StringAttr]):
    if value is not None:
      self.operation.attributes["fp_contract"] = value
    elif "fp_contract" in self.operation.attributes:
      del self.operation.attributes["fp_contract"]

  @fp_contract.deleter
  def fp_contract(self):
    del self.operation.attributes["fp_contract"]

  @builtins.property
  def instrument_function_entry(self) -> _Optional[_ods_ir.StringAttr]:
    if "instrument_function_entry" not in self.operation.attributes:
      return None
    return self.operation.attributes["instrument_function_entry"]

  @instrument_function_entry.setter
  def instrument_function_entry(self, value: _Optional[_ods_ir.StringAttr]):
    if value is not None:
      self.operation.attributes["instrument_function_entry"] = value
    elif "instrument_function_entry" in self.operation.attributes:
      del self.operation.attributes["instrument_function_entry"]

  @instrument_function_entry.deleter
  def instrument_function_entry(self):
    del self.operation.attributes["instrument_function_entry"]

  @builtins.property
  def instrument_function_exit(self) -> _Optional[_ods_ir.StringAttr]:
    if "instrument_function_exit" not in self.operation.attributes:
      return None
    return self.operation.attributes["instrument_function_exit"]

  @instrument_function_exit.setter
  def instrument_function_exit(self, value: _Optional[_ods_ir.StringAttr]):
    if value is not None:
      self.operation.attributes["instrument_function_exit"] = value
    elif "instrument_function_exit" in self.operation.attributes:
      del self.operation.attributes["instrument_function_exit"]

  @instrument_function_exit.deleter
  def instrument_function_exit(self):
    del self.operation.attributes["instrument_function_exit"]

  @builtins.property
  def no_inline(self) -> bool:
    return "no_inline" in self.operation.attributes

  @no_inline.setter
  def no_inline(self, value):
    if bool(value):
      self.operation.attributes["no_inline"] = _ods_ir.UnitAttr.get()
    elif "no_inline" in self.operation.attributes:
      del self.operation.attributes["no_inline"]

  @no_inline.deleter
  def no_inline(self):
    del self.operation.attributes["no_inline"]

  @builtins.property
  def always_inline(self) -> bool:
    return "always_inline" in self.operation.attributes

  @always_inline.setter
  def always_inline(self, value):
    if bool(value):
      self.operation.attributes["always_inline"] = _ods_ir.UnitAttr.get()
    elif "always_inline" in self.operation.attributes:
      del self.operation.attributes["always_inline"]

  @always_inline.deleter
  def always_inline(self):
    del self.operation.attributes["always_inline"]

  @builtins.property
  def inline_hint(self) -> bool:
    return "inline_hint" in self.operation.attributes

  @inline_hint.setter
  def inline_hint(self, value):
    if bool(value):
      self.operation.attributes["inline_hint"] = _ods_ir.UnitAttr.get()
    elif "inline_hint" in self.operation.attributes:
      del self.operation.attributes["inline_hint"]

  @inline_hint.deleter
  def inline_hint(self):
    del self.operation.attributes["inline_hint"]

  @builtins.property
  def no_unwind(self) -> bool:
    return "no_unwind" in self.operation.attributes

  @no_unwind.setter
  def no_unwind(self, value):
    if bool(value):
      self.operation.attributes["no_unwind"] = _ods_ir.UnitAttr.get()
    elif "no_unwind" in self.operation.attributes:
      del self.operation.attributes["no_unwind"]

  @no_unwind.deleter
  def no_unwind(self):
    del self.operation.attributes["no_unwind"]

  @builtins.property
  def will_return(self) -> bool:
    return "will_return" in self.operation.attributes

  @will_return.setter
  def will_return(self, value):
    if bool(value):
      self.operation.attributes["will_return"] = _ods_ir.UnitAttr.get()
    elif "will_return" in self.operation.attributes:
      del self.operation.attributes["will_return"]

  @will_return.deleter
  def will_return(self):
    del self.operation.attributes["will_return"]

  @builtins.property
  def noreturn(self) -> bool:
    return "noreturn" in self.operation.attributes

  @noreturn.setter
  def noreturn(self, value):
    if bool(value):
      self.operation.attributes["noreturn"] = _ods_ir.UnitAttr.get()
    elif "noreturn" in self.operation.attributes:
      del self.operation.attributes["noreturn"]

  @noreturn.deleter
  def noreturn(self):
    del self.operation.attributes["noreturn"]

  @builtins.property
  def optimize_none(self) -> bool:
    return "optimize_none" in self.operation.attributes

  @optimize_none.setter
  def optimize_none(self, value):
    if bool(value):
      self.operation.attributes["optimize_none"] = _ods_ir.UnitAttr.get()
    elif "optimize_none" in self.operation.attributes:
      del self.operation.attributes["optimize_none"]

  @optimize_none.deleter
  def optimize_none(self):
    del self.operation.attributes["optimize_none"]

  @builtins.property
  def returns_twice(self) -> bool:
    return "returns_twice" in self.operation.attributes

  @returns_twice.setter
  def returns_twice(self, value):
    if bool(value):
      self.operation.attributes["returns_twice"] = _ods_ir.UnitAttr.get()
    elif "returns_twice" in self.operation.attributes:
      del self.operation.attributes["returns_twice"]

  @returns_twice.deleter
  def returns_twice(self):
    del self.operation.attributes["returns_twice"]

  @builtins.property
  def hot(self) -> bool:
    return "hot" in self.operation.attributes

  @hot.setter
  def hot(self, value):
    if bool(value):
      self.operation.attributes["hot"] = _ods_ir.UnitAttr.get()
    elif "hot" in self.operation.attributes:
      del self.operation.attributes["hot"]

  @hot.deleter
  def hot(self):
    del self.operation.attributes["hot"]

  @builtins.property
  def cold(self) -> bool:
    return "cold" in self.operation.attributes

  @cold.setter
  def cold(self, value):
    if bool(value):
      self.operation.attributes["cold"] = _ods_ir.UnitAttr.get()
    elif "cold" in self.operation.attributes:
      del self.operation.attributes["cold"]

  @cold.deleter
  def cold(self):
    del self.operation.attributes["cold"]

  @builtins.property
  def noduplicate(self) -> bool:
    return "noduplicate" in self.operation.attributes

  @noduplicate.setter
  def noduplicate(self, value):
    if bool(value):
      self.operation.attributes["noduplicate"] = _ods_ir.UnitAttr.get()
    elif "noduplicate" in self.operation.attributes:
      del self.operation.attributes["noduplicate"]

  @noduplicate.deleter
  def noduplicate(self):
    del self.operation.attributes["noduplicate"]

  @builtins.property
  def no_caller_saved_registers(self) -> bool:
    return "no_caller_saved_registers" in self.operation.attributes

  @no_caller_saved_registers.setter
  def no_caller_saved_registers(self, value):
    if bool(value):
      self.operation.attributes["no_caller_saved_registers"] = _ods_ir.UnitAttr.get()
    elif "no_caller_saved_registers" in self.operation.attributes:
      del self.operation.attributes["no_caller_saved_registers"]

  @no_caller_saved_registers.deleter
  def no_caller_saved_registers(self):
    del self.operation.attributes["no_caller_saved_registers"]

  @builtins.property
  def nocallback(self) -> bool:
    return "nocallback" in self.operation.attributes

  @nocallback.setter
  def nocallback(self, value):
    if bool(value):
      self.operation.attributes["nocallback"] = _ods_ir.UnitAttr.get()
    elif "nocallback" in self.operation.attributes:
      del self.operation.attributes["nocallback"]

  @nocallback.deleter
  def nocallback(self):
    del self.operation.attributes["nocallback"]

  @builtins.property
  def modular_format(self) -> _Optional[_ods_ir.StringAttr]:
    if "modular_format" not in self.operation.attributes:
      return None
    return self.operation.attributes["modular_format"]

  @modular_format.setter
  def modular_format(self, value: _Optional[_ods_ir.StringAttr]):
    if value is not None:
      self.operation.attributes["modular_format"] = value
    elif "modular_format" in self.operation.attributes:
      del self.operation.attributes["modular_format"]

  @modular_format.deleter
  def modular_format(self):
    del self.operation.attributes["modular_format"]

  @builtins.property
  def nobuiltins(self) -> _Optional[_ods_ir.ArrayAttr]:
    if "nobuiltins" not in self.operation.attributes:
      return None
    return self.operation.attributes["nobuiltins"]

  @nobuiltins.setter
  def nobuiltins(self, value: _Optional[_ods_ir.ArrayAttr]):
    if value is not None:
      self.operation.attributes["nobuiltins"] = value
    elif "nobuiltins" in self.operation.attributes:
      del self.operation.attributes["nobuiltins"]

  @nobuiltins.deleter
  def nobuiltins(self):
    del self.operation.attributes["nobuiltins"]

  @builtins.property
  def allocsize(self) -> _Optional[_ods_ir.DenseI32ArrayAttr]:
    if "allocsize" not in self.operation.attributes:
      return None
    return self.operation.attributes["allocsize"]

  @allocsize.setter
  def allocsize(self, value: _Optional[_ods_ir.DenseI32ArrayAttr]):
    if value is not None:
      self.operation.attributes["allocsize"] = value
    elif "allocsize" in self.operation.attributes:
      del self.operation.attributes["allocsize"]

  @allocsize.deleter
  def allocsize(self):
    del self.operation.attributes["allocsize"]

  @builtins.property
  def optsize(self) -> bool:
    return "optsize" in self.operation.attributes

  @optsize.setter
  def optsize(self, value):
    if bool(value):
      self.operation.attributes["optsize"] = _ods_ir.UnitAttr.get()
    elif "optsize" in self.operation.attributes:
      del self.operation.attributes["optsize"]

  @optsize.deleter
  def optsize(self):
    del self.operation.attributes["optsize"]

  @builtins.property
  def minsize(self) -> bool:
    return "minsize" in self.operation.attributes

  @minsize.setter
  def minsize(self, value):
    if bool(value):
      self.operation.attributes["minsize"] = _ods_ir.UnitAttr.get()
    elif "minsize" in self.operation.attributes:
      del self.operation.attributes["minsize"]

  @minsize.deleter
  def minsize(self):
    del self.operation.attributes["minsize"]

  @builtins.property
  def save_reg_params(self) -> bool:
    return "save_reg_params" in self.operation.attributes

  @save_reg_params.setter
  def save_reg_params(self, value):
    if bool(value):
      self.operation.attributes["save_reg_params"] = _ods_ir.UnitAttr.get()
    elif "save_reg_params" in self.operation.attributes:
      del self.operation.attributes["save_reg_params"]

  @save_reg_params.deleter
  def save_reg_params(self):
    del self.operation.attributes["save_reg_params"]

  @builtins.property
  def zero_call_used_regs(self) -> _Optional[_ods_ir.StringAttr]:
    if "zero_call_used_regs" not in self.operation.attributes:
      return None
    return self.operation.attributes["zero_call_used_regs"]

  @zero_call_used_regs.setter
  def zero_call_used_regs(self, value: _Optional[_ods_ir.StringAttr]):
    if value is not None:
      self.operation.attributes["zero_call_used_regs"] = value
    elif "zero_call_used_regs" in self.operation.attributes:
      del self.operation.attributes["zero_call_used_regs"]

  @zero_call_used_regs.deleter
  def zero_call_used_regs(self):
    del self.operation.attributes["zero_call_used_regs"]

  @builtins.property
  def default_func_attrs(self) -> _Optional[_ods_ir.DictAttr]:
    if "default_func_attrs" not in self.operation.attributes:
      return None
    return self.operation.attributes["default_func_attrs"]

  @default_func_attrs.setter
  def default_func_attrs(self, value: _Optional[_ods_ir.DictAttr]):
    if value is not None:
      self.operation.attributes["default_func_attrs"] = value
    elif "default_func_attrs" in self.operation.attributes:
      del self.operation.attributes["default_func_attrs"]

  @default_func_attrs.deleter
  def default_func_attrs(self):
    del self.operation.attributes["default_func_attrs"]

  @builtins.property
  def vec_type_hint(self) -> _Optional[_ods_ir.Attribute]:
    if "vec_type_hint" not in self.operation.attributes:
      return None
    return self.operation.attributes["vec_type_hint"]

  @vec_type_hint.setter
  def vec_type_hint(self, value: _Optional[_ods_ir.Attribute]):
    if value is not None:
      self.operation.attributes["vec_type_hint"] = value
    elif "vec_type_hint" in self.operation.attributes:
      del self.operation.attributes["vec_type_hint"]

  @vec_type_hint.deleter
  def vec_type_hint(self):
    del self.operation.attributes["vec_type_hint"]

  @builtins.property
  def work_group_size_hint(self) -> _Optional[_ods_ir.DenseI32ArrayAttr]:
    if "work_group_size_hint" not in self.operation.attributes:
      return None
    return self.operation.attributes["work_group_size_hint"]

  @work_group_size_hint.setter
  def work_group_size_hint(self, value: _Optional[_ods_ir.DenseI32ArrayAttr]):
    if value is not None:
      self.operation.attributes["work_group_size_hint"] = value
    elif "work_group_size_hint" in self.operation.attributes:
      del self.operation.attributes["work_group_size_hint"]

  @work_group_size_hint.deleter
  def work_group_size_hint(self):
    del self.operation.attributes["work_group_size_hint"]

  @builtins.property
  def reqd_work_group_size(self) -> _Optional[_ods_ir.DenseI32ArrayAttr]:
    if "reqd_work_group_size" not in self.operation.attributes:
      return None
    return self.operation.attributes["reqd_work_group_size"]

  @reqd_work_group_size.setter
  def reqd_work_group_size(self, value: _Optional[_ods_ir.DenseI32ArrayAttr]):
    if value is not None:
      self.operation.attributes["reqd_work_group_size"] = value
    elif "reqd_work_group_size" in self.operation.attributes:
      del self.operation.attributes["reqd_work_group_size"]

  @reqd_work_group_size.deleter
  def reqd_work_group_size(self):
    del self.operation.attributes["reqd_work_group_size"]

  @builtins.property
  def intel_reqd_sub_group_size(self) -> _Optional[_ods_ir.IntegerAttr]:
    if "intel_reqd_sub_group_size" not in self.operation.attributes:
      return None
    return self.operation.attributes["intel_reqd_sub_group_size"]

  @intel_reqd_sub_group_size.setter
  def intel_reqd_sub_group_size(self, value: _Optional[_ods_ir.IntegerAttr]):
    if value is not None:
      self.operation.attributes["intel_reqd_sub_group_size"] = value
    elif "intel_reqd_sub_group_size" in self.operation.attributes:
      del self.operation.attributes["intel_reqd_sub_group_size"]

  @intel_reqd_sub_group_size.deleter
  def intel_reqd_sub_group_size(self):
    del self.operation.attributes["intel_reqd_sub_group_size"]

  @builtins.property
  def uwtable_kind(self) -> _Optional[_ods_ir.Attribute]:
    if "uwtable_kind" not in self.operation.attributes:
      return None
    return self.operation.attributes["uwtable_kind"]

  @uwtable_kind.setter
  def uwtable_kind(self, value: _Optional[_ods_ir.Attribute]):
    if value is not None:
      self.operation.attributes["uwtable_kind"] = value
    elif "uwtable_kind" in self.operation.attributes:
      del self.operation.attributes["uwtable_kind"]

  @uwtable_kind.deleter
  def uwtable_kind(self):
    del self.operation.attributes["uwtable_kind"]

  @builtins.property
  def use_sample_profile(self) -> _Optional[_ods_ir.BoolAttr]:
    if "use_sample_profile" not in self.operation.attributes:
      return None
    return self.operation.attributes["use_sample_profile"]

  @use_sample_profile.setter
  def use_sample_profile(self, value: _Optional[_ods_ir.BoolAttr]):
    if value is not None:
      self.operation.attributes["use_sample_profile"] = value
    elif "use_sample_profile" in self.operation.attributes:
      del self.operation.attributes["use_sample_profile"]

  @use_sample_profile.deleter
  def use_sample_profile(self):
    del self.operation.attributes["use_sample_profile"]

  @builtins.property
  def body(self) -> _ods_ir.Region:
    return self.regions[0]

@_ods_cext.register_op_adaptor(LLVMFuncOp)
class LLVMFuncOpAdaptor(_ods_ir.OpAdaptor):
  OPERATION_NAME = "llvm.func"

  @builtins.property
  def sym_name(self) -> _ods_ir.StringAttr:
    return self.attributes["sym_name"]

  @builtins.property
  def sym_visibility(self) -> _Optional[_ods_ir.StringAttr]:
    if "sym_visibility" not in self.attributes:
      return None
    return self.attributes["sym_visibility"]

  @builtins.property
  def function_type(self) -> _ods_ir.TypeAttr:
    return self.attributes["function_type"]

  @builtins.property
  def linkage(self) -> _ods_ir.Attribute:
    return self.attributes["linkage"]

  @builtins.property
  def dso_local(self) -> bool:
    return "dso_local" in self.attributes

  @builtins.property
  def CConv(self) -> _ods_ir.Attribute:
    return self.attributes["CConv"]

  @builtins.property
  def comdat(self) -> _Optional[_ods_ir.SymbolRefAttr]:
    if "comdat" not in self.attributes:
      return None
    return self.attributes["comdat"]

  @builtins.property
  def convergent(self) -> bool:
    return "convergent" in self.attributes

  @builtins.property
  def personality(self) -> _Optional[_ods_ir.FlatSymbolRefAttr]:
    if "personality" not in self.attributes:
      return None
    return self.attributes["personality"]

  @builtins.property
  def garbageCollector(self) -> _Optional[_ods_ir.StringAttr]:
    if "garbageCollector" not in self.attributes:
      return None
    return self.attributes["garbageCollector"]

  @builtins.property
  def passthrough(self) -> _Optional[_ods_ir.ArrayAttr]:
    if "passthrough" not in self.attributes:
      return None
    return self.attributes["passthrough"]

  @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"]

  @builtins.property
  def function_entry_count(self) -> _Optional[_ods_ir.IntegerAttr]:
    if "function_entry_count" not in self.attributes:
      return None
    return self.attributes["function_entry_count"]

  @builtins.property
  def memory_effects(self) -> _Optional[_ods_ir.Attribute]:
    if "memory_effects" not in self.attributes:
      return None
    return self.attributes["memory_effects"]

  @builtins.property
  def visibility_(self) -> _ods_ir.Attribute:
    return self.attributes["visibility_"]

  @builtins.property
  def arm_streaming(self) -> bool:
    return "arm_streaming" in self.attributes

  @builtins.property
  def arm_locally_streaming(self) -> bool:
    return "arm_locally_streaming" in self.attributes

  @builtins.property
  def arm_streaming_compatible(self) -> bool:
    return "arm_streaming_compatible" in self.attributes

  @builtins.property
  def arm_new_za(self) -> bool:
    return "arm_new_za" in self.attributes

  @builtins.property
  def arm_in_za(self) -> bool:
    return "arm_in_za" in self.attributes

  @builtins.property
  def arm_out_za(self) -> bool:
    return "arm_out_za" in self.attributes

  @builtins.property
  def arm_inout_za(self) -> bool:
    return "arm_inout_za" in self.attributes

  @builtins.property
  def arm_preserves_za(self) -> bool:
    return "arm_preserves_za" in self.attributes

  @builtins.property
  def section(self) -> _Optional[_ods_ir.StringAttr]:
    if "section" not in self.attributes:
      return None
    return self.attributes["section"]

  @builtins.property
  def unnamed_addr(self) -> _Optional[_ods_ir.Attribute]:
    if "unnamed_addr" not in self.attributes:
      return None
    return self.attributes["unnamed_addr"]

  @builtins.property
  def alignment(self) -> _Optional[_ods_ir.IntegerAttr]:
    if "alignment" not in self.attributes:
      return None
    return self.attributes["alignment"]

  @builtins.property
  def vscale_range(self) -> _Optional[_ods_ir.Attribute]:
    if "vscale_range" not in self.attributes:
      return None
    return self.attributes["vscale_range"]

  @builtins.property
  def frame_pointer(self) -> _Optional[_ods_ir.Attribute]:
    if "frame_pointer" not in self.attributes:
      return None
    return self.attributes["frame_pointer"]

  @builtins.property
  def target_cpu(self) -> _Optional[_ods_ir.StringAttr]:
    if "target_cpu" not in self.attributes:
      return None
    return self.attributes["target_cpu"]

  @builtins.property
  def tune_cpu(self) -> _Optional[_ods_ir.StringAttr]:
    if "tune_cpu" not in self.attributes:
      return None
    return self.attributes["tune_cpu"]

  @builtins.property
  def reciprocal_estimates(self) -> _Optional[_ods_ir.StringAttr]:
    if "reciprocal_estimates" not in self.attributes:
      return None
    return self.attributes["reciprocal_estimates"]

  @builtins.property
  def prefer_vector_width(self) -> _Optional[_ods_ir.StringAttr]:
    if "prefer_vector_width" not in self.attributes:
      return None
    return self.attributes["prefer_vector_width"]

  @builtins.property
  def target_features(self) -> _Optional[_ods_ir.Attribute]:
    if "target_features" not in self.attributes:
      return None
    return self.attributes["target_features"]

  @builtins.property
  def no_signed_zeros_fp_math(self) -> _Optional[_ods_ir.BoolAttr]:
    if "no_signed_zeros_fp_math" not in self.attributes:
      return None
    return self.attributes["no_signed_zeros_fp_math"]

  @builtins.property
  def denormal_fpenv(self) -> _Optional[_ods_ir.Attribute]:
    if "denormal_fpenv" not in self.attributes:
      return None
    return self.attributes["denormal_fpenv"]

  @builtins.property
  def fp_contract(self) -> _Optional[_ods_ir.StringAttr]:
    if "fp_contract" not in self.attributes:
      return None
    return self.attributes["fp_contract"]

  @builtins.property
  def instrument_function_entry(self) -> _Optional[_ods_ir.StringAttr]:
    if "instrument_function_entry" not in self.attributes:
      return None
    return self.attributes["instrument_function_entry"]

  @builtins.property
  def instrument_function_exit(self) -> _Optional[_ods_ir.StringAttr]:
    if "instrument_function_exit" not in self.attributes:
      return None
    return self.attributes["instrument_function_exit"]

  @builtins.property
  def no_inline(self) -> bool:
    return "no_inline" in self.attributes

  @builtins.property
  def always_inline(self) -> bool:
    return "always_inline" in self.attributes

  @builtins.property
  def inline_hint(self) -> bool:
    return "inline_hint" in self.attributes

  @builtins.property
  def no_unwind(self) -> bool:
    return "no_unwind" in self.attributes

  @builtins.property
  def will_return(self) -> bool:
    return "will_return" in self.attributes

  @builtins.property
  def noreturn(self) -> bool:
    return "noreturn" in self.attributes

  @builtins.property
  def optimize_none(self) -> bool:
    return "optimize_none" in self.attributes

  @builtins.property
  def returns_twice(self) -> bool:
    return "returns_twice" in self.attributes

  @builtins.property
  def hot(self) -> bool:
    return "hot" in self.attributes

  @builtins.property
  def cold(self) -> bool:
    return "cold" in self.attributes

  @builtins.property
  def noduplicate(self) -> bool:
    return "noduplicate" in self.attributes

  @builtins.property
  def no_caller_saved_registers(self) -> bool:
    return "no_caller_saved_registers" in self.attributes

  @builtins.property
  def nocallback(self) -> bool:
    return "nocallback" in self.attributes

  @builtins.property
  def modular_format(self) -> _Optional[_ods_ir.StringAttr]:
    if "modular_format" not in self.attributes:
      return None
    return self.attributes["modular_format"]

  @builtins.property
  def nobuiltins(self) -> _Optional[_ods_ir.ArrayAttr]:
    if "nobuiltins" not in self.attributes:
      return None
    return self.attributes["nobuiltins"]

  @builtins.property
  def allocsize(self) -> _Optional[_ods_ir.DenseI32ArrayAttr]:
    if "allocsize" not in self.attributes:
      return None
    return self.attributes["allocsize"]

  @builtins.property
  def optsize(self) -> bool:
    return "optsize" in self.attributes

  @builtins.property
  def minsize(self) -> bool:
    return "minsize" in self.attributes

  @builtins.property
  def save_reg_params(self) -> bool:
    return "save_reg_params" in self.attributes

  @builtins.property
  def zero_call_used_regs(self) -> _Optional[_ods_ir.StringAttr]:
    if "zero_call_used_regs" not in self.attributes:
      return None
    return self.attributes["zero_call_used_regs"]

  @builtins.property
  def default_func_attrs(self) -> _Optional[_ods_ir.DictAttr]:
    if "default_func_attrs" not in self.attributes:
      return None
    return self.attributes["default_func_attrs"]

  @builtins.property
  def vec_type_hint(self) -> _Optional[_ods_ir.Attribute]:
    if "vec_type_hint" not in self.attributes:
      return None
    return self.attributes["vec_type_hint"]

  @builtins.property
  def work_group_size_hint(self) -> _Optional[_ods_ir.DenseI32ArrayAttr]:
    if "work_group_size_hint" not in self.attributes:
      return None
    return self.attributes["work_group_size_hint"]

  @builtins.property
  def reqd_work_group_size(self) -> _Optional[_ods_ir.DenseI32ArrayAttr]:
    if "reqd_work_group_size" not in self.attributes:
      return None
    return self.attributes["reqd_work_group_size"]

  @builtins.property
  def intel_reqd_sub_group_size(self) -> _Optional[_ods_ir.IntegerAttr]:
    if "intel_reqd_sub_group_size" not in self.attributes:
      return None
    return self.attributes["intel_reqd_sub_group_size"]

  @builtins.property
  def uwtable_kind(self) -> _Optional[_ods_ir.Attribute]:
    if "uwtable_kind" not in self.attributes:
      return None
    return self.attributes["uwtable_kind"]

  @builtins.property
  def use_sample_profile(self) -> _Optional[_ods_ir.BoolAttr]:
    if "use_sample_profile" not in self.attributes:
      return None
    return self.attributes["use_sample_profile"]

def func(sym_name: _Union[str, _ods_ir.StringAttr], function_type: _Union[_Any, _ods_ir.TypeAttr], *, sym_visibility: _Optional[_Union[str, _ods_ir.StringAttr]] = None, linkage: _Optional[_Union[_Any, _ods_ir.Attribute]] = None, dso_local: _Optional[bool] = None, c_conv: _Optional[_Union[_Any, _ods_ir.Attribute]] = None, comdat: _Optional[_Union[str, _ods_ir.SymbolRefAttr]] = None, convergent: _Optional[bool] = None, personality: _Optional[_Union[str, _ods_ir.FlatSymbolRefAttr]] = None, garbage_collector: _Optional[_Union[str, _ods_ir.StringAttr]] = None, passthrough: _Optional[_Union[_Sequence[_ods_ir.Attribute], _ods_ir.ArrayAttr]] = None, arg_attrs: _Optional[_Union[_Any, _ods_ir.ArrayAttr]] = None, res_attrs: _Optional[_Union[_Any, _ods_ir.ArrayAttr]] = None, function_entry_count: _Optional[_Union[int, _ods_ir.IntegerAttr]] = None, memory_effects: _Optional[_Union[_Any, _ods_ir.Attribute]] = None, visibility_: _Optional[_Union[_Any, _ods_ir.Attribute]] = None, arm_streaming: _Optional[bool] = None, arm_locally_streaming: _Optional[bool] = None, arm_streaming_compatible: _Optional[bool] = None, arm_new_za: _Optional[bool] = None, arm_in_za: _Optional[bool] = None, arm_out_za: _Optional[bool] = None, arm_inout_za: _Optional[bool] = None, arm_preserves_za: _Optional[bool] = None, section: _Optional[_Union[str, _ods_ir.StringAttr]] = None, unnamed_addr: _Optional[_Union[_Any, _ods_ir.Attribute]] = None, alignment: _Optional[_Union[int, _ods_ir.IntegerAttr]] = None, vscale_range: _Optional[_Union[_Any, _ods_ir.Attribute]] = None, frame_pointer: _Optional[_Union[_Any, _ods_ir.Attribute]] = None, target_cpu: _Optional[_Union[str, _ods_ir.StringAttr]] = None, tune_cpu: _Optional[_Union[str, _ods_ir.StringAttr]] = None, reciprocal_estimates: _Optional[_Union[str, _ods_ir.StringAttr]] = None, prefer_vector_width: _Optional[_Union[str, _ods_ir.StringAttr]] = None, target_features: _Optional[_Union[_Any, _ods_ir.Attribute]] = None, no_signed_zeros_fp_math: _Optional[_Union[bool, _ods_ir.BoolAttr]] = None, denormal_fpenv: _Optional[_Union[_Any, _ods_ir.Attribute]] = None, fp_contract: _Optional[_Union[str, _ods_ir.StringAttr]] = None, instrument_function_entry: _Optional[_Union[str, _ods_ir.StringAttr]] = None, instrument_function_exit: _Optional[_Union[str, _ods_ir.StringAttr]] = None, no_inline: _Optional[bool] = None, always_inline: _Optional[bool] = None, inline_hint: _Optional[bool] = None, no_unwind: _Optional[bool] = None, will_return: _Optional[bool] = None, noreturn: _Optional[bool] = None, optimize_none: _Optional[bool] = None, returns_twice: _Optional[bool] = None, hot: _Optional[bool] = None, cold: _Optional[bool] = None, noduplicate: _Optional[bool] = None, no_caller_saved_registers: _Optional[bool] = None, nocallback: _Optional[bool] = None, modular_format: _Optional[_Union[str, _ods_ir.StringAttr]] = None, nobuiltins: _Optional[_Union[_Sequence[_ods_ir.Attribute], _ods_ir.ArrayAttr]] = None, allocsize: _Optional[_Union[_Sequence[int], _ods_ir.DenseI32ArrayAttr]] = None, optsize: _Optional[bool] = None, minsize: _Optional[bool] = None, save_reg_params: _Optional[bool] = None, zero_call_used_regs: _Optional[_Union[str, _ods_ir.StringAttr]] = None, default_func_attrs: _Optional[_Union[dict, _ods_ir.DictAttr]] = None, vec_type_hint: _Optional[_Union[_Any, _ods_ir.Attribute]] = None, work_group_size_hint: _Optional[_Union[_Sequence[int], _ods_ir.DenseI32ArrayAttr]] = None, reqd_work_group_size: _Optional[_Union[_Sequence[int], _ods_ir.DenseI32ArrayAttr]] = None, intel_reqd_sub_group_size: _Optional[_Union[int, _ods_ir.IntegerAttr]] = None, uwtable_kind: _Optional[_Union[_Any, _ods_ir.Attribute]] = None, use_sample_profile: _Optional[_Union[bool, _ods_ir.BoolAttr]] = None, loc: _Optional[_ods_ir.Location] = None, ip: _Optional[_ods_ir.InsertionPoint] = None) -> LLVMFuncOp:
  return LLVMFuncOp(sym_name=sym_name, function_type=function_type, sym_visibility=sym_visibility, linkage=linkage, dso_local=dso_local, CConv=c_conv, comdat=comdat, convergent=convergent, personality=personality, garbageCollector=garbage_collector, passthrough=passthrough, arg_attrs=arg_attrs, res_attrs=res_attrs, function_entry_count=function_entry_count, memory_effects=memory_effects, visibility_=visibility_, arm_streaming=arm_streaming, arm_locally_streaming=arm_locally_streaming, arm_streaming_compatible=arm_streaming_compatible, arm_new_za=arm_new_za, arm_in_za=arm_in_za, arm_out_za=arm_out_za, arm_inout_za=arm_inout_za, arm_preserves_za=arm_preserves_za, section=section, unnamed_addr=unnamed_addr, alignment=alignment, vscale_range=vscale_range, frame_pointer=frame_pointer, target_cpu=target_cpu, tune_cpu=tune_cpu, reciprocal_estimates=reciprocal_estimates, prefer_vector_width=prefer_vector_width, target_features=target_features, no_signed_zeros_fp_math=no_signed_zeros_fp_math, denormal_fpenv=denormal_fpenv, fp_contract=fp_contract, instrument_function_entry=instrument_function_entry, instrument_function_exit=instrument_function_exit, no_inline=no_inline, always_inline=always_inline, inline_hint=inline_hint, no_unwind=no_unwind, will_return=will_return, noreturn=noreturn, optimize_none=optimize_none, returns_twice=returns_twice, hot=hot, cold=cold, noduplicate=noduplicate, no_caller_saved_registers=no_caller_saved_registers, nocallback=nocallback, modular_format=modular_format, nobuiltins=nobuiltins, allocsize=allocsize, optsize=optsize, minsize=minsize, save_reg_params=save_reg_params, zero_call_used_regs=zero_call_used_regs, default_func_attrs=default_func_attrs, vec_type_hint=vec_type_hint, work_group_size_hint=work_group_size_hint, reqd_work_group_size=reqd_work_group_size, intel_reqd_sub_group_size=intel_reqd_sub_group_size, uwtable_kind=uwtable_kind, use_sample_profile=use_sample_profile, loc=loc, ip=ip)

@_ods_cext.register_operation(_Dialect)
class LShrOp(_ods_ir.OpView):
  OPERATION_NAME = "llvm.lshr"

  _ODS_REGIONS = (0, True)

  def __init__(self, lhs: _ods_ir.Value, rhs: _ods_ir.Value, *, isExact: _Optional[bool] = None, results: _Optional[_Sequence[_ods_ir.Type]] = None, loc: _Optional[_ods_ir.Location] = None, ip: _Optional[_ods_ir.InsertionPoint] = None):
    operands = []
    attributes = {}
    regions = None
    operands.append(lhs)
    operands.append(rhs)
    _ods_context = _ods_get_default_loc_context(loc)
    if bool(isExact): attributes["isExact"] = _ods_ir.UnitAttr.get(
      _ods_get_default_loc_context(loc))
    if results is None: results = [operands[0].type] * 1
    _ods_successors = None
    super().__init__(self.OPERATION_NAME, self._ODS_REGIONS, self._ODS_OPERAND_SEGMENTS, self._ODS_RESULT_SEGMENTS, attributes=attributes, results=results, operands=operands, successors=_ods_successors, regions=regions, loc=loc, ip=ip)

  @builtins.property
  def lhs(self) -> _ods_ir.Value:
    return self.operation.operands[0]

  @builtins.property
  def rhs(self) -> _ods_ir.Value:
    return self.operation.operands[1]

  @builtins.property
  def isExact(self) -> bool:
    return "isExact" in self.operation.attributes

  @isExact.setter
  def isExact(self, value):
    if bool(value):
      self.operation.attributes["isExact"] = _ods_ir.UnitAttr.get()
    elif "isExact" in self.operation.attributes:
      del self.operation.attributes["isExact"]

  @isExact.deleter
  def isExact(self):
    del self.operation.attributes["isExact"]

  @builtins.property
  def res(self) -> _ods_ir.OpResult:
    return self.operation.results[0]

@_ods_cext.register_op_adaptor(LShrOp)
class LShrOpAdaptor(_ods_ir.OpAdaptor):
  OPERATION_NAME = "llvm.lshr"

  @builtins.property
  def lhs(self) -> _ods_ir.Value:
    return self.operands[0]

  @builtins.property
  def rhs(self) -> _ods_ir.Value:
    return self.operands[1]

  @builtins.property
  def isExact(self) -> bool:
    return "isExact" in self.attributes

def lshr(lhs: _ods_ir.Value, rhs: _ods_ir.Value, *, is_exact: _Optional[bool] = None, results: _Optional[_Sequence[_ods_ir.Type]] = None, loc: _Optional[_ods_ir.Location] = None, ip: _Optional[_ods_ir.InsertionPoint] = None) -> _ods_ir.OpResult:
  return LShrOp(lhs=lhs, rhs=rhs, isExact=is_exact, results=results, loc=loc, ip=ip).result

@_ods_cext.register_operation(_Dialect)
class LandingpadOp(_ods_ir.OpView):
  OPERATION_NAME = "llvm.landingpad"

  _ODS_REGIONS = (0, True)

  def __init__(self, res: _ods_ir.Type, _gen_arg_1: _Sequence[_ods_ir.Value], *, cleanup: _Optional[bool] = None, loc: _Optional[_ods_ir.Location] = None, ip: _Optional[_ods_ir.InsertionPoint] = None):
    operands = []
    attributes = {}
    regions = None
    operands.extend(_get_op_results_or_values(_gen_arg_1))
    _ods_context = _ods_get_default_loc_context(loc)
    if bool(cleanup): attributes["cleanup"] = _ods_ir.UnitAttr.get(
      _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 cleanup(self) -> bool:
    return "cleanup" in self.operation.attributes

  @cleanup.setter
  def cleanup(self, value):
    if bool(value):
      self.operation.attributes["cleanup"] = _ods_ir.UnitAttr.get()
    elif "cleanup" in self.operation.attributes:
      del self.operation.attributes["cleanup"]

  @cleanup.deleter
  def cleanup(self):
    del self.operation.attributes["cleanup"]

  @builtins.property
  def res(self) -> _ods_ir.OpResult:
    return self.operation.results[0]

@_ods_cext.register_op_adaptor(LandingpadOp)
class LandingpadOpAdaptor(_ods_ir.OpAdaptor):
  OPERATION_NAME = "llvm.landingpad"

  @builtins.property
  def cleanup(self) -> bool:
    return "cleanup" in self.attributes

def landingpad(res: _ods_ir.Type, _gen_arg_1: _Sequence[_ods_ir.Value], *, cleanup: _Optional[bool] = None, loc: _Optional[_ods_ir.Location] = None, ip: _Optional[_ods_ir.InsertionPoint] = None) -> _ods_ir.OpResult:
  return LandingpadOp(res=res, _gen_arg_1=_gen_arg_1, cleanup=cleanup, loc=loc, ip=ip).result

@_ods_cext.register_operation(_Dialect)
class LaunderInvariantGroupOp(_ods_ir.OpView):
  OPERATION_NAME = "llvm.intr.launder.invariant.group"

  _ODS_REGIONS = (0, True)

  def __init__(self, ptr: _ods_ir.Value, *, results: _Optional[_Sequence[_ods_ir.Type]] = 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 results is None: results = [operands[0].type] * 1
    _ods_successors = None
    super().__init__(self.OPERATION_NAME, self._ODS_REGIONS, self._ODS_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:
    return self.operation.results[0]

@_ods_cext.register_op_adaptor(LaunderInvariantGroupOp)
class LaunderInvariantGroupOpAdaptor(_ods_ir.OpAdaptor):
  OPERATION_NAME = "llvm.intr.launder.invariant.group"

  @builtins.property
  def ptr(self) -> _ods_ir.Value:
    return self.operands[0]

def intr_launder_invariant_group(ptr: _ods_ir.Value, *, results: _Optional[_Sequence[_ods_ir.Type]] = None, loc: _Optional[_ods_ir.Location] = None, ip: _Optional[_ods_ir.InsertionPoint] = None) -> _ods_ir.OpResult:
  return LaunderInvariantGroupOp(ptr=ptr, results=results, loc=loc, ip=ip).result

@_ods_cext.register_operation(_Dialect)
class LifetimeEndOp(_ods_ir.OpView):
  OPERATION_NAME = "llvm.intr.lifetime.end"

  _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(LifetimeEndOp)
class LifetimeEndOpAdaptor(_ods_ir.OpAdaptor):
  OPERATION_NAME = "llvm.intr.lifetime.end"

  @builtins.property
  def ptr(self) -> _ods_ir.Value:
    return self.operands[0]

def intr_lifetime_end(ptr: _ods_ir.Value, *, loc: _Optional[_ods_ir.Location] = None, ip: _Optional[_ods_ir.InsertionPoint] = None) -> LifetimeEndOp:
  return LifetimeEndOp(ptr=ptr, loc=loc, ip=ip)

@_ods_cext.register_operation(_Dialect)
class LifetimeStartOp(_ods_ir.OpView):
  OPERATION_NAME = "llvm.intr.lifetime.start"

  _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(LifetimeStartOp)
class LifetimeStartOpAdaptor(_ods_ir.OpAdaptor):
  OPERATION_NAME = "llvm.intr.lifetime.start"

  @builtins.property
  def ptr(self) -> _ods_ir.Value:
    return self.operands[0]

def intr_lifetime_start(ptr: _ods_ir.Value, *, loc: _Optional[_ods_ir.Location] = None, ip: _Optional[_ods_ir.InsertionPoint] = None) -> LifetimeStartOp:
  return LifetimeStartOp(ptr=ptr, loc=loc, ip=ip)

@_ods_cext.register_operation(_Dialect)
class LinkerOptionsOp(_ods_ir.OpView):
  r"""
  Pass the given options to the linker when the resulting object file is linked.
  This is used extensively on Windows to determine the C runtime that the object
  files should link against.
  
  Examples:
  ```mlir
  // Link against the MSVC static threaded CRT.
  llvm.linker_options ["/DEFAULTLIB:", "libcmt"]
  
  // Link against aarch64 compiler-rt builtins
  llvm.linker_options ["-l", "clang_rt.builtins-aarch64"]
  ```
  """

  OPERATION_NAME = "llvm.linker_options"

  _ODS_REGIONS = (0, True)

  def __init__(self, options: _Union[_Sequence[str], _ods_ir.ArrayAttr], *, 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["options"] = (options if (
    isinstance(options, _ods_ir.Attribute) or
    not _ods_ir.AttrBuilder.contains('StrArrayAttr')) else
      _ods_ir.AttrBuilder.get('StrArrayAttr')(options, 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 options(self) -> _ods_ir.ArrayAttr:
    return self.operation.attributes["options"]

  @options.setter
  def options(self, value: _ods_ir.ArrayAttr):
    if value is None:
      raise ValueError("'None' not allowed as value for mandatory attributes")
    self.operation.attributes["options"] = value

@_ods_cext.register_op_adaptor(LinkerOptionsOp)
class LinkerOptionsOpAdaptor(_ods_ir.OpAdaptor):
  OPERATION_NAME = "llvm.linker_options"

  @builtins.property
  def options(self) -> _ods_ir.ArrayAttr:
    return self.attributes["options"]

def linker_options(options: _Union[_Sequence[str], _ods_ir.ArrayAttr], *, loc: _Optional[_ods_ir.Location] = None, ip: _Optional[_ods_ir.InsertionPoint] = None) -> LinkerOptionsOp:
  return LinkerOptionsOp(options=options, loc=loc, ip=ip)

@_ods_cext.register_operation(_Dialect)
class LlrintOp(_ods_ir.OpView):
  OPERATION_NAME = "llvm.intr.llrint"

  _ODS_REGIONS = (0, True)

  def __init__(self, res: _ods_ir.Type, val: _ods_ir.Value, *, loc: _Optional[_ods_ir.Location] = None, ip: _Optional[_ods_ir.InsertionPoint] = None):
    operands = []
    attributes = {}
    regions = None
    operands.append(val)
    _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 val(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(LlrintOp)
class LlrintOpAdaptor(_ods_ir.OpAdaptor):
  OPERATION_NAME = "llvm.intr.llrint"

  @builtins.property
  def val(self) -> _ods_ir.Value:
    return self.operands[0]

def intr_llrint(res: _ods_ir.Type, val: _ods_ir.Value, *, loc: _Optional[_ods_ir.Location] = None, ip: _Optional[_ods_ir.InsertionPoint] = None) -> _ods_ir.OpResult:
  return LlrintOp(res=res, val=val, loc=loc, ip=ip).result

@_ods_cext.register_operation(_Dialect)
class LlroundOp(_ods_ir.OpView):
  OPERATION_NAME = "llvm.intr.llround"

  _ODS_REGIONS = (0, True)

  def __init__(self, res: _ods_ir.Type, val: _ods_ir.Value, *, loc: _Optional[_ods_ir.Location] = None, ip: _Optional[_ods_ir.InsertionPoint] = None):
    operands = []
    attributes = {}
    regions = None
    operands.append(val)
    _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 val(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(LlroundOp)
class LlroundOpAdaptor(_ods_ir.OpAdaptor):
  OPERATION_NAME = "llvm.intr.llround"

  @builtins.property
  def val(self) -> _ods_ir.Value:
    return self.operands[0]

def intr_llround(res: _ods_ir.Type, val: _ods_ir.Value, *, loc: _Optional[_ods_ir.Location] = None, ip: _Optional[_ods_ir.InsertionPoint] = None) -> _ods_ir.OpResult:
  return LlroundOp(res=res, val=val, loc=loc, ip=ip).result

@_ods_cext.register_operation(_Dialect)
class LoadExpOp(_ods_ir.OpView):
  OPERATION_NAME = "llvm.intr.ldexp"

  _ODS_REGIONS = (0, True)

  def __init__(self, res: _ods_ir.Type, val: _ods_ir.Value, power: _ods_ir.Value[_ods_ir.IntegerType], *, fastmathFlags: _Optional[_Union[_Any, _ods_ir.Attribute]] = None, loc: _Optional[_ods_ir.Location] = None, ip: _Optional[_ods_ir.InsertionPoint] = None):
    operands = []
    attributes = {}
    regions = None
    operands.append(val)
    operands.append(power)
    _ods_context = _ods_get_default_loc_context(loc)
    if fastmathFlags is not None: attributes["fastmathFlags"] = (fastmathFlags if (
        isinstance(fastmathFlags, _ods_ir.Attribute) or
        not _ods_ir.AttrBuilder.contains('llvm.LLVM_FastmathFlagsAttr')) else
          _ods_ir.AttrBuilder.get('llvm.LLVM_FastmathFlagsAttr')(fastmathFlags, 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 val(self) -> _ods_ir.Value:
    return self.operation.operands[0]

  @builtins.property
  def power(self) -> _ods_ir.Value[_ods_ir.IntegerType]:
    return self.operation.operands[1]

  @builtins.property
  def fastmathFlags(self) -> _ods_ir.Attribute:
    return self.operation.attributes["fastmathFlags"]

  @fastmathFlags.setter
  def fastmathFlags(self, value: _ods_ir.Attribute):
    if value is None:
      raise ValueError("'None' not allowed as value for mandatory attributes")
    self.operation.attributes["fastmathFlags"] = value

  @builtins.property
  def res(self) -> _ods_ir.OpResult:
    return self.operation.results[0]

@_ods_cext.register_op_adaptor(LoadExpOp)
class LoadExpOpAdaptor(_ods_ir.OpAdaptor):
  OPERATION_NAME = "llvm.intr.ldexp"

  @builtins.property
  def val(self) -> _ods_ir.Value:
    return self.operands[0]

  @builtins.property
  def power(self) -> _ods_ir.Value[_ods_ir.IntegerType]:
    return self.operands[1]

  @builtins.property
  def fastmathFlags(self) -> _ods_ir.Attribute:
    return self.attributes["fastmathFlags"]

def intr_ldexp(res: _ods_ir.Type, val: _ods_ir.Value, power: _ods_ir.Value[_ods_ir.IntegerType], *, fastmath_flags: _Optional[_Union[_Any, _ods_ir.Attribute]] = None, loc: _Optional[_ods_ir.Location] = None, ip: _Optional[_ods_ir.InsertionPoint] = None) -> _ods_ir.OpResult:
  return LoadExpOp(res=res, val=val, power=power, fastmathFlags=fastmath_flags, loc=loc, ip=ip).result

@_ods_cext.register_operation(_Dialect)
class LoadOp(_ods_ir.OpView):
  r"""
  The `load` operation is used to read from memory. A load may be marked as
  atomic, volatile, and/or nontemporal, and takes a number of optional
  attributes that specify aliasing information.
  
  An atomic load only supports a limited set of pointer, integer, and
  floating point types, and requires an explicit alignment.
  
  Examples:
  ```mlir
  // A volatile load of a float variable.
  %0 = llvm.load volatile %ptr : !llvm.ptr -> f32
  
  // A nontemporal load of a float variable.
  %0 = llvm.load %ptr {nontemporal} : !llvm.ptr -> f32
  
  // An atomic load of an integer variable.
  %0 = llvm.load %ptr atomic monotonic {alignment = 8 : i64}
      : !llvm.ptr -> i64
  ```
  
  See the following link for more details:
  https://llvm.org/docs/LangRef.html#load-instruction
  """

  OPERATION_NAME = "llvm.load"

  _ODS_REGIONS = (0, True)

  def __init__(self, res: _ods_ir.Type, addr: _ods_ir.Value, *, alignment: _Optional[_Union[int, _ods_ir.IntegerAttr]] = None, volatile_: _Optional[bool] = None, nontemporal: _Optional[bool] = None, invariant: _Optional[bool] = None, invariantGroup: _Optional[bool] = None, ordering: _Optional[_Union[_Any, _ods_ir.Attribute]] = None, syncscope: _Optional[_Union[str, _ods_ir.StringAttr]] = None, dereferenceable: _Optional[_Union[_Any, _ods_ir.Attribute]] = None, access_groups: _Optional[_Union[_Any, _ods_ir.ArrayAttr]] = None, 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(addr)
    _ods_context = _ods_get_default_loc_context(loc)
    if alignment is not None: attributes["alignment"] = (alignment if (
        isinstance(alignment, _ods_ir.Attribute) or
        not _ods_ir.AttrBuilder.contains('I64Attr')) else
          _ods_ir.AttrBuilder.get('I64Attr')(alignment, context=_ods_context))
    if bool(volatile_): attributes["volatile_"] = _ods_ir.UnitAttr.get(
      _ods_get_default_loc_context(loc))
    if bool(nontemporal): attributes["nontemporal"] = _ods_ir.UnitAttr.get(
      _ods_get_default_loc_context(loc))
    if bool(invariant): attributes["invariant"] = _ods_ir.UnitAttr.get(
      _ods_get_default_loc_context(loc))
    if bool(invariantGroup): attributes["invariantGroup"] = _ods_ir.UnitAttr.get(
      _ods_get_default_loc_context(loc))
    if ordering is not None: attributes["ordering"] = (ordering if (
        isinstance(ordering, _ods_ir.Attribute) or
        not _ods_ir.AttrBuilder.contains('AtomicOrdering')) else
          _ods_ir.AttrBuilder.get('AtomicOrdering')(ordering, context=_ods_context))
    if syncscope is not None: attributes["syncscope"] = (syncscope if (
        isinstance(syncscope, _ods_ir.Attribute) or
        not _ods_ir.AttrBuilder.contains('StrAttr')) else
          _ods_ir.AttrBuilder.get('StrAttr')(syncscope, context=_ods_context))
    if dereferenceable is not None: attributes["dereferenceable"] = (dereferenceable if (
        isinstance(dereferenceable, _ods_ir.Attribute) or
        not _ods_ir.AttrBuilder.contains('LLVM_DereferenceableAttr')) else
          _ods_ir.AttrBuilder.get('LLVM_DereferenceableAttr')(dereferenceable, context=_ods_context))
    if access_groups is not None: attributes["access_groups"] = (access_groups if (
        isinstance(access_groups, _ods_ir.Attribute) or
        not _ods_ir.AttrBuilder.contains('LLVM_AccessGroupArrayAttr')) else
          _ods_ir.AttrBuilder.get('LLVM_AccessGroupArrayAttr')(access_groups, 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 = []
    results.append(res)
    _ods_successors = None
    super().__init__(self.OPERATION_NAME, self._ODS_REGIONS, self._ODS_OPERAND_SEGMENTS, self._ODS_RESULT_SEGMENTS, attributes=attributes, results=results, operands=operands, successors=_ods_successors, regions=regions, loc=loc, ip=ip)

  @builtins.property
  def addr(self) -> _ods_ir.Value:
    return self.operation.operands[0]

  @builtins.property
  def alignment(self) -> _Optional[_ods_ir.IntegerAttr]:
    if "alignment" not in self.operation.attributes:
      return None
    return self.operation.attributes["alignment"]

  @alignment.setter
  def alignment(self, value: _Optional[_ods_ir.IntegerAttr]):
    if value is not None:
      self.operation.attributes["alignment"] = value
    elif "alignment" in self.operation.attributes:
      del self.operation.attributes["alignment"]

  @alignment.deleter
  def alignment(self):
    del self.operation.attributes["alignment"]

  @builtins.property
  def volatile_(self) -> bool:
    return "volatile_" in self.operation.attributes

  @volatile_.setter
  def volatile_(self, value):
    if bool(value):
      self.operation.attributes["volatile_"] = _ods_ir.UnitAttr.get()
    elif "volatile_" in self.operation.attributes:
      del self.operation.attributes["volatile_"]

  @volatile_.deleter
  def volatile_(self):
    del self.operation.attributes["volatile_"]

  @builtins.property
  def nontemporal(self) -> bool:
    return "nontemporal" in self.operation.attributes

  @nontemporal.setter
  def nontemporal(self, value):
    if bool(value):
      self.operation.attributes["nontemporal"] = _ods_ir.UnitAttr.get()
    elif "nontemporal" in self.operation.attributes:
      del self.operation.attributes["nontemporal"]

  @nontemporal.deleter
  def nontemporal(self):
    del self.operation.attributes["nontemporal"]

  @builtins.property
  def invariant(self) -> bool:
    return "invariant" in self.operation.attributes

  @invariant.setter
  def invariant(self, value):
    if bool(value):
      self.operation.attributes["invariant"] = _ods_ir.UnitAttr.get()
    elif "invariant" in self.operation.attributes:
      del self.operation.attributes["invariant"]

  @invariant.deleter
  def invariant(self):
    del self.operation.attributes["invariant"]

  @builtins.property
  def invariantGroup(self) -> bool:
    return "invariantGroup" in self.operation.attributes

  @invariantGroup.setter
  def invariantGroup(self, value):
    if bool(value):
      self.operation.attributes["invariantGroup"] = _ods_ir.UnitAttr.get()
    elif "invariantGroup" in self.operation.attributes:
      del self.operation.attributes["invariantGroup"]

  @invariantGroup.deleter
  def invariantGroup(self):
    del self.operation.attributes["invariantGroup"]

  @builtins.property
  def ordering(self) -> _ods_ir.Attribute:
    return self.operation.attributes["ordering"]

  @ordering.setter
  def ordering(self, value: _ods_ir.Attribute):
    if value is None:
      raise ValueError("'None' not allowed as value for mandatory attributes")
    self.operation.attributes["ordering"] = value

  @builtins.property
  def syncscope(self) -> _Optional[_ods_ir.StringAttr]:
    if "syncscope" not in self.operation.attributes:
      return None
    return self.operation.attributes["syncscope"]

  @syncscope.setter
  def syncscope(self, value: _Optional[_ods_ir.StringAttr]):
    if value is not None:
      self.operation.attributes["syncscope"] = value
    elif "syncscope" in self.operation.attributes:
      del self.operation.attributes["syncscope"]

  @syncscope.deleter
  def syncscope(self):
    del self.operation.attributes["syncscope"]

  @builtins.property
  def dereferenceable(self) -> _Optional[_ods_ir.Attribute]:
    if "dereferenceable" not in self.operation.attributes:
      return None
    return self.operation.attributes["dereferenceable"]

  @dereferenceable.setter
  def dereferenceable(self, value: _Optional[_ods_ir.Attribute]):
    if value is not None:
      self.operation.attributes["dereferenceable"] = value
    elif "dereferenceable" in self.operation.attributes:
      del self.operation.attributes["dereferenceable"]

  @dereferenceable.deleter
  def dereferenceable(self):
    del self.operation.attributes["dereferenceable"]

  @builtins.property
  def access_groups(self) -> _Optional[_ods_ir.ArrayAttr]:
    if "access_groups" not in self.operation.attributes:
      return None
    return self.operation.attributes["access_groups"]

  @access_groups.setter
  def access_groups(self, value: _Optional[_ods_ir.ArrayAttr]):
    if value is not None:
      self.operation.attributes["access_groups"] = value
    elif "access_groups" in self.operation.attributes:
      del self.operation.attributes["access_groups"]

  @access_groups.deleter
  def access_groups(self):
    del self.operation.attributes["access_groups"]

  @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(LoadOp)
class LoadOpAdaptor(_ods_ir.OpAdaptor):
  OPERATION_NAME = "llvm.load"

  @builtins.property
  def addr(self) -> _ods_ir.Value:
    return self.operands[0]

  @builtins.property
  def alignment(self) -> _Optional[_ods_ir.IntegerAttr]:
    if "alignment" not in self.attributes:
      return None
    return self.attributes["alignment"]

  @builtins.property
  def volatile_(self) -> bool:
    return "volatile_" in self.attributes

  @builtins.property
  def nontemporal(self) -> bool:
    return "nontemporal" in self.attributes

  @builtins.property
  def invariant(self) -> bool:
    return "invariant" in self.attributes

  @builtins.property
  def invariantGroup(self) -> bool:
    return "invariantGroup" in self.attributes

  @builtins.property
  def ordering(self) -> _ods_ir.Attribute:
    return self.attributes["ordering"]

  @builtins.property
  def syncscope(self) -> _Optional[_ods_ir.StringAttr]:
    if "syncscope" not in self.attributes:
      return None
    return self.attributes["syncscope"]

  @builtins.property
  def dereferenceable(self) -> _Optional[_ods_ir.Attribute]:
    if "dereferenceable" not in self.attributes:
      return None
    return self.attributes["dereferenceable"]

  @builtins.property
  def access_groups(self) -> _Optional[_ods_ir.ArrayAttr]:
    if "access_groups" not in self.attributes:
      return None
    return self.attributes["access_groups"]

  @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(res: _ods_ir.Type, addr: _ods_ir.Value, *, alignment: _Optional[_Union[int, _ods_ir.IntegerAttr]] = None, volatile_: _Optional[bool] = None, nontemporal: _Optional[bool] = None, invariant: _Optional[bool] = None, invariant_group: _Optional[bool] = None, ordering: _Optional[_Union[_Any, _ods_ir.Attribute]] = None, syncscope: _Optional[_Union[str, _ods_ir.StringAttr]] = None, dereferenceable: _Optional[_Union[_Any, _ods_ir.Attribute]] = None, access_groups: _Optional[_Union[_Any, _ods_ir.ArrayAttr]] = None, 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 LoadOp(res=res, addr=addr, alignment=alignment, volatile_=volatile_, nontemporal=nontemporal, invariant=invariant, invariantGroup=invariant_group, ordering=ordering, syncscope=syncscope, dereferenceable=dereferenceable, access_groups=access_groups, alias_scopes=alias_scopes, noalias_scopes=noalias_scopes, tbaa=tbaa, loc=loc, ip=ip).result

@_ods_cext.register_operation(_Dialect)
class Log2Op(_ods_ir.OpView):
  OPERATION_NAME = "llvm.intr.log2"

  _ODS_REGIONS = (0, True)

  def __init__(self, in_: _ods_ir.Value, *, fastmathFlags: _Optional[_Union[_Any, _ods_ir.Attribute]] = None, results: _Optional[_Sequence[_ods_ir.Type]] = None, loc: _Optional[_ods_ir.Location] = None, ip: _Optional[_ods_ir.InsertionPoint] = None):
    operands = []
    attributes = {}
    regions = None
    operands.append(in_)
    _ods_context = _ods_get_default_loc_context(loc)
    if fastmathFlags is not None: attributes["fastmathFlags"] = (fastmathFlags if (
        isinstance(fastmathFlags, _ods_ir.Attribute) or
        not _ods_ir.AttrBuilder.contains('llvm.LLVM_FastmathFlagsAttr')) else
          _ods_ir.AttrBuilder.get('llvm.LLVM_FastmathFlagsAttr')(fastmathFlags, context=_ods_context))
    if results is None: results = [operands[0].type] * 1
    _ods_successors = None
    super().__init__(self.OPERATION_NAME, self._ODS_REGIONS, self._ODS_OPERAND_SEGMENTS, self._ODS_RESULT_SEGMENTS, attributes=attributes, results=results, operands=operands, successors=_ods_successors, regions=regions, loc=loc, ip=ip)

  @builtins.property
  def in_(self) -> _ods_ir.Value:
    return self.operation.operands[0]

  @builtins.property
  def fastmathFlags(self) -> _ods_ir.Attribute:
    return self.operation.attributes["fastmathFlags"]

  @fastmathFlags.setter
  def fastmathFlags(self, value: _ods_ir.Attribute):
    if value is None:
      raise ValueError("'None' not allowed as value for mandatory attributes")
    self.operation.attributes["fastmathFlags"] = value

  @builtins.property
  def res(self) -> _ods_ir.OpResult:
    return self.operation.results[0]

@_ods_cext.register_op_adaptor(Log2Op)
class Log2OpAdaptor(_ods_ir.OpAdaptor):
  OPERATION_NAME = "llvm.intr.log2"

  @builtins.property
  def in_(self) -> _ods_ir.Value:
    return self.operands[0]

  @builtins.property
  def fastmathFlags(self) -> _ods_ir.Attribute:
    return self.attributes["fastmathFlags"]

def intr_log2(in_: _ods_ir.Value, *, fastmath_flags: _Optional[_Union[_Any, _ods_ir.Attribute]] = None, results: _Optional[_Sequence[_ods_ir.Type]] = None, loc: _Optional[_ods_ir.Location] = None, ip: _Optional[_ods_ir.InsertionPoint] = None) -> _ods_ir.OpResult:
  return Log2Op(in_=in_, fastmathFlags=fastmath_flags, results=results, loc=loc, ip=ip).result

@_ods_cext.register_operation(_Dialect)
class Log10Op(_ods_ir.OpView):
  OPERATION_NAME = "llvm.intr.log10"

  _ODS_REGIONS = (0, True)

  def __init__(self, in_: _ods_ir.Value, *, fastmathFlags: _Optional[_Union[_Any, _ods_ir.Attribute]] = None, results: _Optional[_Sequence[_ods_ir.Type]] = None, loc: _Optional[_ods_ir.Location] = None, ip: _Optional[_ods_ir.InsertionPoint] = None):
    operands = []
    attributes = {}
    regions = None
    operands.append(in_)
    _ods_context = _ods_get_default_loc_context(loc)
    if fastmathFlags is not None: attributes["fastmathFlags"] = (fastmathFlags if (
        isinstance(fastmathFlags, _ods_ir.Attribute) or
        not _ods_ir.AttrBuilder.contains('llvm.LLVM_FastmathFlagsAttr')) else
          _ods_ir.AttrBuilder.get('llvm.LLVM_FastmathFlagsAttr')(fastmathFlags, context=_ods_context))
    if results is None: results = [operands[0].type] * 1
    _ods_successors = None
    super().__init__(self.OPERATION_NAME, self._ODS_REGIONS, self._ODS_OPERAND_SEGMENTS, self._ODS_RESULT_SEGMENTS, attributes=attributes, results=results, operands=operands, successors=_ods_successors, regions=regions, loc=loc, ip=ip)

  @builtins.property
  def in_(self) -> _ods_ir.Value:
    return self.operation.operands[0]

  @builtins.property
  def fastmathFlags(self) -> _ods_ir.Attribute:
    return self.operation.attributes["fastmathFlags"]

  @fastmathFlags.setter
  def fastmathFlags(self, value: _ods_ir.Attribute):
    if value is None:
      raise ValueError("'None' not allowed as value for mandatory attributes")
    self.operation.attributes["fastmathFlags"] = value

  @builtins.property
  def res(self) -> _ods_ir.OpResult:
    return self.operation.results[0]

@_ods_cext.register_op_adaptor(Log10Op)
class Log10OpAdaptor(_ods_ir.OpAdaptor):
  OPERATION_NAME = "llvm.intr.log10"

  @builtins.property
  def in_(self) -> _ods_ir.Value:
    return self.operands[0]

  @builtins.property
  def fastmathFlags(self) -> _ods_ir.Attribute:
    return self.attributes["fastmathFlags"]

def intr_log10(in_: _ods_ir.Value, *, fastmath_flags: _Optional[_Union[_Any, _ods_ir.Attribute]] = None, results: _Optional[_Sequence[_ods_ir.Type]] = None, loc: _Optional[_ods_ir.Location] = None, ip: _Optional[_ods_ir.InsertionPoint] = None) -> _ods_ir.OpResult:
  return Log10Op(in_=in_, fastmathFlags=fastmath_flags, results=results, loc=loc, ip=ip).result

@_ods_cext.register_operation(_Dialect)
class LogOp(_ods_ir.OpView):
  OPERATION_NAME = "llvm.intr.log"

  _ODS_REGIONS = (0, True)

  def __init__(self, in_: _ods_ir.Value, *, fastmathFlags: _Optional[_Union[_Any, _ods_ir.Attribute]] = None, results: _Optional[_Sequence[_ods_ir.Type]] = None, loc: _Optional[_ods_ir.Location] = None, ip: _Optional[_ods_ir.InsertionPoint] = None):
    operands = []
    attributes = {}
    regions = None
    operands.append(in_)
    _ods_context = _ods_get_default_loc_context(loc)
    if fastmathFlags is not None: attributes["fastmathFlags"] = (fastmathFlags if (
        isinstance(fastmathFlags, _ods_ir.Attribute) or
        not _ods_ir.AttrBuilder.contains('llvm.LLVM_FastmathFlagsAttr')) else
          _ods_ir.AttrBuilder.get('llvm.LLVM_FastmathFlagsAttr')(fastmathFlags, context=_ods_context))
    if results is None: results = [operands[0].type] * 1
    _ods_successors = None
    super().__init__(self.OPERATION_NAME, self._ODS_REGIONS, self._ODS_OPERAND_SEGMENTS, self._ODS_RESULT_SEGMENTS, attributes=attributes, results=results, operands=operands, successors=_ods_successors, regions=regions, loc=loc, ip=ip)

  @builtins.property
  def in_(self) -> _ods_ir.Value:
    return self.operation.operands[0]

  @builtins.property
  def fastmathFlags(self) -> _ods_ir.Attribute:
    return self.operation.attributes["fastmathFlags"]

  @fastmathFlags.setter
  def fastmathFlags(self, value: _ods_ir.Attribute):
    if value is None:
      raise ValueError("'None' not allowed as value for mandatory attributes")
    self.operation.attributes["fastmathFlags"] = value

  @builtins.property
  def res(self) -> _ods_ir.OpResult:
    return self.operation.results[0]

@_ods_cext.register_op_adaptor(LogOp)
class LogOpAdaptor(_ods_ir.OpAdaptor):
  OPERATION_NAME = "llvm.intr.log"

  @builtins.property
  def in_(self) -> _ods_ir.Value:
    return self.operands[0]

  @builtins.property
  def fastmathFlags(self) -> _ods_ir.Attribute:
    return self.attributes["fastmathFlags"]

def intr_log(in_: _ods_ir.Value, *, fastmath_flags: _Optional[_Union[_Any, _ods_ir.Attribute]] = None, results: _Optional[_Sequence[_ods_ir.Type]] = None, loc: _Optional[_ods_ir.Location] = None, ip: _Optional[_ods_ir.InsertionPoint] = None) -> _ods_ir.OpResult:
  return LogOp(in_=in_, fastmathFlags=fastmath_flags, results=results, loc=loc, ip=ip).result

@_ods_cext.register_operation(_Dialect)
class LrintOp(_ods_ir.OpView):
  OPERATION_NAME = "llvm.intr.lrint"

  _ODS_REGIONS = (0, True)

  def __init__(self, res: _ods_ir.Type, val: _ods_ir.Value, *, loc: _Optional[_ods_ir.Location] = None, ip: _Optional[_ods_ir.InsertionPoint] = None):
    operands = []
    attributes = {}
    regions = None
    operands.append(val)
    _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 val(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(LrintOp)
class LrintOpAdaptor(_ods_ir.OpAdaptor):
  OPERATION_NAME = "llvm.intr.lrint"

  @builtins.property
  def val(self) -> _ods_ir.Value:
    return self.operands[0]

def intr_lrint(res: _ods_ir.Type, val: _ods_ir.Value, *, loc: _Optional[_ods_ir.Location] = None, ip: _Optional[_ods_ir.InsertionPoint] = None) -> _ods_ir.OpResult:
  return LrintOp(res=res, val=val, loc=loc, ip=ip).result

@_ods_cext.register_operation(_Dialect)
class LroundOp(_ods_ir.OpView):
  OPERATION_NAME = "llvm.intr.lround"

  _ODS_REGIONS = (0, True)

  def __init__(self, res: _ods_ir.Type, val: _ods_ir.Value, *, loc: _Optional[_ods_ir.Location] = None, ip: _Optional[_ods_ir.InsertionPoint] = None):
    operands = []
    attributes = {}
    regions = None
    operands.append(val)
    _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 val(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(LroundOp)
class LroundOpAdaptor(_ods_ir.OpAdaptor):
  OPERATION_NAME = "llvm.intr.lround"

  @builtins.property
  def val(self) -> _ods_ir.Value:
    return self.operands[0]

def intr_lround(res: _ods_ir.Type, val: _ods_ir.Value, *, loc: _Optional[_ods_ir.Location] = None, ip: _Optional[_ods_ir.InsertionPoint] = None) -> _ods_ir.OpResult:
  return LroundOp(res=res, val=val, loc=loc, ip=ip).result

@_ods_cext.register_operation(_Dialect)
class MaskedLoadOp(_ods_ir.OpView):
  OPERATION_NAME = "llvm.intr.masked.load"

  _ODS_REGIONS = (0, True)

  def __init__(self, res: _ods_ir.Type, data: _ods_ir.Value, mask: _ods_ir.Value[_ods_ir.VectorType], alignment: _Union[int, _ods_ir.IntegerAttr], *, pass_thru: _Optional[_ods_ir.Value[_ods_ir.VectorType]] = None, nontemporal: _Optional[bool] = None, loc: _Optional[_ods_ir.Location] = None, ip: _Optional[_ods_ir.InsertionPoint] = None):
    operands = []
    attributes = {}
    regions = None
    operands.append(data)
    operands.append(mask)
    if pass_thru is not None: operands.append(pass_thru)
    _ods_context = _ods_get_default_loc_context(loc)
    attributes["alignment"] = (alignment if (
    isinstance(alignment, _ods_ir.Attribute) or
    not _ods_ir.AttrBuilder.contains('I32Attr')) else
      _ods_ir.AttrBuilder.get('I32Attr')(alignment, context=_ods_context))
    if bool(nontemporal): attributes["nontemporal"] = _ods_ir.UnitAttr.get(
      _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 data(self) -> _ods_ir.Value:
    return self.operation.operands[0]

  @builtins.property
  def mask(self) -> _ods_ir.Value[_ods_ir.VectorType]:
    return self.operation.operands[1]

  @builtins.property
  def pass_thru(self) -> _Optional[_ods_ir.Value[_ods_ir.VectorType]]:
    return None if len(self.operation.operands) < 3 else self.operation.operands[2]

  @builtins.property
  def alignment(self) -> _ods_ir.IntegerAttr:
    return self.operation.attributes["alignment"]

  @alignment.setter
  def alignment(self, value: _ods_ir.IntegerAttr):
    if value is None:
      raise ValueError("'None' not allowed as value for mandatory attributes")
    self.operation.attributes["alignment"] = value

  @builtins.property
  def nontemporal(self) -> bool:
    return "nontemporal" in self.operation.attributes

  @nontemporal.setter
  def nontemporal(self, value):
    if bool(value):
      self.operation.attributes["nontemporal"] = _ods_ir.UnitAttr.get()
    elif "nontemporal" in self.operation.attributes:
      del self.operation.attributes["nontemporal"]

  @nontemporal.deleter
  def nontemporal(self):
    del self.operation.attributes["nontemporal"]

  @builtins.property
  def res(self) -> _ods_ir.OpResult[_ods_ir.VectorType]:
    return self.operation.results[0]

@_ods_cext.register_op_adaptor(MaskedLoadOp)
class MaskedLoadOpAdaptor(_ods_ir.OpAdaptor):
  OPERATION_NAME = "llvm.intr.masked.load"

  @builtins.property
  def data(self) -> _ods_ir.Value:
    return self.operands[0]

  @builtins.property
  def mask(self) -> _ods_ir.Value[_ods_ir.VectorType]:
    return self.operands[1]

  @builtins.property
  def pass_thru(self) -> _Optional[_ods_ir.Value[_ods_ir.VectorType]]:
    return None if len(self.operands) < 3 else self.operands[2]

  @builtins.property
  def alignment(self) -> _ods_ir.IntegerAttr:
    return self.attributes["alignment"]

  @builtins.property
  def nontemporal(self) -> bool:
    return "nontemporal" in self.attributes

def intr_masked_load(res: _ods_ir.Type, data: _ods_ir.Value, mask: _ods_ir.Value[_ods_ir.VectorType], alignment: _Union[int, _ods_ir.IntegerAttr], *, pass_thru: _Optional[_ods_ir.Value[_ods_ir.VectorType]] = None, nontemporal: _Optional[bool] = None, loc: _Optional[_ods_ir.Location] = None, ip: _Optional[_ods_ir.InsertionPoint] = None) -> _ods_ir.OpResult[_ods_ir.VectorType]:
  return MaskedLoadOp(res=res, data=data, mask=mask, alignment=alignment, pass_thru=pass_thru, nontemporal=nontemporal, loc=loc, ip=ip).result

@_ods_cext.register_operation(_Dialect)
class MaskedStoreOp(_ods_ir.OpView):
  OPERATION_NAME = "llvm.intr.masked.store"

  _ODS_REGIONS = (0, True)

  def __init__(self, value: _ods_ir.Value[_ods_ir.VectorType], data: _ods_ir.Value, mask: _ods_ir.Value[_ods_ir.VectorType], alignment: _Union[int, _ods_ir.IntegerAttr], *, loc: _Optional[_ods_ir.Location] = None, ip: _Optional[_ods_ir.InsertionPoint] = None):
    operands = []
    attributes = {}
    regions = None
    operands.append(value)
    operands.append(data)
    operands.append(mask)
    _ods_context = _ods_get_default_loc_context(loc)
    attributes["alignment"] = (alignment if (
    isinstance(alignment, _ods_ir.Attribute) or
    not _ods_ir.AttrBuilder.contains('I32Attr')) else
      _ods_ir.AttrBuilder.get('I32Attr')(alignment, 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 value(self) -> _ods_ir.Value[_ods_ir.VectorType]:
    return self.operation.operands[0]

  @builtins.property
  def data(self) -> _ods_ir.Value:
    return self.operation.operands[1]

  @builtins.property
  def mask(self) -> _ods_ir.Value[_ods_ir.VectorType]:
    return self.operation.operands[2]

  @builtins.property
  def alignment(self) -> _ods_ir.IntegerAttr:
    return self.operation.attributes["alignment"]

  @alignment.setter
  def alignment(self, value: _ods_ir.IntegerAttr):
    if value is None:
      raise ValueError("'None' not allowed as value for mandatory attributes")
    self.operation.attributes["alignment"] = value

@_ods_cext.register_op_adaptor(MaskedStoreOp)
class MaskedStoreOpAdaptor(_ods_ir.OpAdaptor):
  OPERATION_NAME = "llvm.intr.masked.store"

  @builtins.property
  def value(self) -> _ods_ir.Value[_ods_ir.VectorType]:
    return self.operands[0]

  @builtins.property
  def data(self) -> _ods_ir.Value:
    return self.operands[1]

  @builtins.property
  def mask(self) -> _ods_ir.Value[_ods_ir.VectorType]:
    return self.operands[2]

  @builtins.property
  def alignment(self) -> _ods_ir.IntegerAttr:
    return self.attributes["alignment"]

def intr_masked_store(value: _ods_ir.Value[_ods_ir.VectorType], data: _ods_ir.Value, mask: _ods_ir.Value[_ods_ir.VectorType], alignment: _Union[int, _ods_ir.IntegerAttr], *, loc: _Optional[_ods_ir.Location] = None, ip: _Optional[_ods_ir.InsertionPoint] = None) -> MaskedStoreOp:
  return MaskedStoreOp(value=value, data=data, mask=mask, alignment=alignment, loc=loc, ip=ip)

@_ods_cext.register_operation(_Dialect)
class MatrixColumnMajorLoadOp(_ods_ir.OpView):
  OPERATION_NAME = "llvm.intr.matrix.column.major.load"

  _ODS_REGIONS = (0, True)

  def __init__(self, res: _ods_ir.Type, data: _ods_ir.Value, stride: _ods_ir.Value[_ods_ir.IntegerType], isVolatile: _Union[bool, _ods_ir.BoolAttr], rows: _Union[int, _ods_ir.IntegerAttr], columns: _Union[int, _ods_ir.IntegerAttr], *, loc: _Optional[_ods_ir.Location] = None, ip: _Optional[_ods_ir.InsertionPoint] = None):
    operands = []
    attributes = {}
    regions = None
    operands.append(data)
    operands.append(stride)
    _ods_context = _ods_get_default_loc_context(loc)
    attributes["isVolatile"] = (isVolatile if (
    isinstance(isVolatile, _ods_ir.Attribute) or
    not _ods_ir.AttrBuilder.contains('I1Attr')) else
      _ods_ir.AttrBuilder.get('I1Attr')(isVolatile, context=_ods_context))
    attributes["rows"] = (rows if (
    isinstance(rows, _ods_ir.Attribute) or
    not _ods_ir.AttrBuilder.contains('I32Attr')) else
      _ods_ir.AttrBuilder.get('I32Attr')(rows, context=_ods_context))
    attributes["columns"] = (columns if (
    isinstance(columns, _ods_ir.Attribute) or
    not _ods_ir.AttrBuilder.contains('I32Attr')) else
      _ods_ir.AttrBuilder.get('I32Attr')(columns, 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 data(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 isVolatile(self) -> _ods_ir.BoolAttr:
    return self.operation.attributes["isVolatile"]

  @isVolatile.setter
  def isVolatile(self, value: _ods_ir.BoolAttr):
    if value is None:
      raise ValueError("'None' not allowed as value for mandatory attributes")
    self.operation.attributes["isVolatile"] = value

  @builtins.property
  def rows(self) -> _ods_ir.IntegerAttr:
    return self.operation.attributes["rows"]

  @rows.setter
  def rows(self, value: _ods_ir.IntegerAttr):
    if value is None:
      raise ValueError("'None' not allowed as value for mandatory attributes")
    self.operation.attributes["rows"] = value

  @builtins.property
  def columns(self) -> _ods_ir.IntegerAttr:
    return self.operation.attributes["columns"]

  @columns.setter
  def columns(self, value: _ods_ir.IntegerAttr):
    if value is None:
      raise ValueError("'None' not allowed as value for mandatory attributes")
    self.operation.attributes["columns"] = value

  @builtins.property
  def res(self) -> _ods_ir.OpResult[_ods_ir.VectorType]:
    return self.operation.results[0]

@_ods_cext.register_op_adaptor(MatrixColumnMajorLoadOp)
class MatrixColumnMajorLoadOpAdaptor(_ods_ir.OpAdaptor):
  OPERATION_NAME = "llvm.intr.matrix.column.major.load"

  @builtins.property
  def data(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 isVolatile(self) -> _ods_ir.BoolAttr:
    return self.attributes["isVolatile"]

  @builtins.property
  def rows(self) -> _ods_ir.IntegerAttr:
    return self.attributes["rows"]

  @builtins.property
  def columns(self) -> _ods_ir.IntegerAttr:
    return self.attributes["columns"]

def intr_matrix_column_major_load(res: _ods_ir.Type, data: _ods_ir.Value, stride: _ods_ir.Value[_ods_ir.IntegerType], is_volatile: _Union[bool, _ods_ir.BoolAttr], rows: _Union[int, _ods_ir.IntegerAttr], columns: _Union[int, _ods_ir.IntegerAttr], *, loc: _Optional[_ods_ir.Location] = None, ip: _Optional[_ods_ir.InsertionPoint] = None) -> _ods_ir.OpResult[_ods_ir.VectorType]:
  return MatrixColumnMajorLoadOp(res=res, data=data, stride=stride, isVolatile=is_volatile, rows=rows, columns=columns, loc=loc, ip=ip).result

@_ods_cext.register_operation(_Dialect)
class MatrixColumnMajorStoreOp(_ods_ir.OpView):
  OPERATION_NAME = "llvm.intr.matrix.column.major.store"

  _ODS_REGIONS = (0, True)

  def __init__(self, matrix: _ods_ir.Value[_ods_ir.VectorType], data: _ods_ir.Value, stride: _ods_ir.Value[_ods_ir.IntegerType], isVolatile: _Union[bool, _ods_ir.BoolAttr], rows: _Union[int, _ods_ir.IntegerAttr], columns: _Union[int, _ods_ir.IntegerAttr], *, loc: _Optional[_ods_ir.Location] = None, ip: _Optional[_ods_ir.InsertionPoint] = None):
    operands = []
    attributes = {}
    regions = None
    operands.append(matrix)
    operands.append(data)
    operands.append(stride)
    _ods_context = _ods_get_default_loc_context(loc)
    attributes["isVolatile"] = (isVolatile if (
    isinstance(isVolatile, _ods_ir.Attribute) or
    not _ods_ir.AttrBuilder.contains('I1Attr')) else
      _ods_ir.AttrBuilder.get('I1Attr')(isVolatile, context=_ods_context))
    attributes["rows"] = (rows if (
    isinstance(rows, _ods_ir.Attribute) or
    not _ods_ir.AttrBuilder.contains('I32Attr')) else
      _ods_ir.AttrBuilder.get('I32Attr')(rows, context=_ods_context))
    attributes["columns"] = (columns if (
    isinstance(columns, _ods_ir.Attribute) or
    not _ods_ir.AttrBuilder.contains('I32Attr')) else
      _ods_ir.AttrBuilder.get('I32Attr')(columns, 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 matrix(self) -> _ods_ir.Value[_ods_ir.VectorType]:
    return self.operation.operands[0]

  @builtins.property
  def data(self) -> _ods_ir.Value:
    return self.operation.operands[1]

  @builtins.property
  def stride(self) -> _ods_ir.Value[_ods_ir.IntegerType]:
    return self.operation.operands[2]

  @builtins.property
  def isVolatile(self) -> _ods_ir.BoolAttr:
    return self.operation.attributes["isVolatile"]

  @isVolatile.setter
  def isVolatile(self, value: _ods_ir.BoolAttr):
    if value is None:
      raise ValueError("'None' not allowed as value for mandatory attributes")
    self.operation.attributes["isVolatile"] = value

  @builtins.property
  def rows(self) -> _ods_ir.IntegerAttr:
    return self.operation.attributes["rows"]

  @rows.setter
  def rows(self, value: _ods_ir.IntegerAttr):
    if value is None:
      raise ValueError("'None' not allowed as value for mandatory attributes")
    self.operation.attributes["rows"] = value

  @builtins.property
  def columns(self) -> _ods_ir.IntegerAttr:
    return self.operation.attributes["columns"]

  @columns.setter
  def columns(self, value: _ods_ir.IntegerAttr):
    if value is None:
      raise ValueError("'None' not allowed as value for mandatory attributes")
    self.operation.attributes["columns"] = value

@_ods_cext.register_op_adaptor(MatrixColumnMajorStoreOp)
class MatrixColumnMajorStoreOpAdaptor(_ods_ir.OpAdaptor):
  OPERATION_NAME = "llvm.intr.matrix.column.major.store"

  @builtins.property
  def matrix(self) -> _ods_ir.Value[_ods_ir.VectorType]:
    return self.operands[0]

  @builtins.property
  def data(self) -> _ods_ir.Value:
    return self.operands[1]

  @builtins.property
  def stride(self) -> _ods_ir.Value[_ods_ir.IntegerType]:
    return self.operands[2]

  @builtins.property
  def isVolatile(self) -> _ods_ir.BoolAttr:
    return self.attributes["isVolatile"]

  @builtins.property
  def rows(self) -> _ods_ir.IntegerAttr:
    return self.attributes["rows"]

  @builtins.property
  def columns(self) -> _ods_ir.IntegerAttr:
    return self.attributes["columns"]

def intr_matrix_column_major_store(matrix: _ods_ir.Value[_ods_ir.VectorType], data: _ods_ir.Value, stride: _ods_ir.Value[_ods_ir.IntegerType], is_volatile: _Union[bool, _ods_ir.BoolAttr], rows: _Union[int, _ods_ir.IntegerAttr], columns: _Union[int, _ods_ir.IntegerAttr], *, loc: _Optional[_ods_ir.Location] = None, ip: _Optional[_ods_ir.InsertionPoint] = None) -> MatrixColumnMajorStoreOp:
  return MatrixColumnMajorStoreOp(matrix=matrix, data=data, stride=stride, isVolatile=is_volatile, rows=rows, columns=columns, loc=loc, ip=ip)

@_ods_cext.register_operation(_Dialect)
class MatrixMultiplyOp(_ods_ir.OpView):
  OPERATION_NAME = "llvm.intr.matrix.multiply"

  _ODS_REGIONS = (0, True)

  def __init__(self, res: _ods_ir.Type, lhs: _ods_ir.Value[_ods_ir.VectorType], rhs: _ods_ir.Value[_ods_ir.VectorType], lhs_rows: _Union[int, _ods_ir.IntegerAttr], lhs_columns: _Union[int, _ods_ir.IntegerAttr], rhs_columns: _Union[int, _ods_ir.IntegerAttr], *, loc: _Optional[_ods_ir.Location] = None, ip: _Optional[_ods_ir.InsertionPoint] = None):
    operands = []
    attributes = {}
    regions = None
    operands.append(lhs)
    operands.append(rhs)
    _ods_context = _ods_get_default_loc_context(loc)
    attributes["lhs_rows"] = (lhs_rows if (
    isinstance(lhs_rows, _ods_ir.Attribute) or
    not _ods_ir.AttrBuilder.contains('I32Attr')) else
      _ods_ir.AttrBuilder.get('I32Attr')(lhs_rows, context=_ods_context))
    attributes["lhs_columns"] = (lhs_columns if (
    isinstance(lhs_columns, _ods_ir.Attribute) or
    not _ods_ir.AttrBuilder.contains('I32Attr')) else
      _ods_ir.AttrBuilder.get('I32Attr')(lhs_columns, context=_ods_context))
    attributes["rhs_columns"] = (rhs_columns if (
    isinstance(rhs_columns, _ods_ir.Attribute) or
    not _ods_ir.AttrBuilder.contains('I32Attr')) else
      _ods_ir.AttrBuilder.get('I32Attr')(rhs_columns, 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 lhs(self) -> _ods_ir.Value[_ods_ir.VectorType]:
    return self.operation.operands[0]

  @builtins.property
  def rhs(self) -> _ods_ir.Value[_ods_ir.VectorType]:
    return self.operation.operands[1]

  @builtins.property
  def lhs_rows(self) -> _ods_ir.IntegerAttr:
    return self.operation.attributes["lhs_rows"]

  @lhs_rows.setter
  def lhs_rows(self, value: _ods_ir.IntegerAttr):
    if value is None:
      raise ValueError("'None' not allowed as value for mandatory attributes")
    self.operation.attributes["lhs_rows"] = value

  @builtins.property
  def lhs_columns(self) -> _ods_ir.IntegerAttr:
    return self.operation.attributes["lhs_columns"]

  @lhs_columns.setter
  def lhs_columns(self, value: _ods_ir.IntegerAttr):
    if value is None:
      raise ValueError("'None' not allowed as value for mandatory attributes")
    self.operation.attributes["lhs_columns"] = value

  @builtins.property
  def rhs_columns(self) -> _ods_ir.IntegerAttr:
    return self.operation.attributes["rhs_columns"]

  @rhs_columns.setter
  def rhs_columns(self, value: _ods_ir.IntegerAttr):
    if value is None:
      raise ValueError("'None' not allowed as value for mandatory attributes")
    self.operation.attributes["rhs_columns"] = value

  @builtins.property
  def res(self) -> _ods_ir.OpResult[_ods_ir.VectorType]:
    return self.operation.results[0]

@_ods_cext.register_op_adaptor(MatrixMultiplyOp)
class MatrixMultiplyOpAdaptor(_ods_ir.OpAdaptor):
  OPERATION_NAME = "llvm.intr.matrix.multiply"

  @builtins.property
  def lhs(self) -> _ods_ir.Value[_ods_ir.VectorType]:
    return self.operands[0]

  @builtins.property
  def rhs(self) -> _ods_ir.Value[_ods_ir.VectorType]:
    return self.operands[1]

  @builtins.property
  def lhs_rows(self) -> _ods_ir.IntegerAttr:
    return self.attributes["lhs_rows"]

  @builtins.property
  def lhs_columns(self) -> _ods_ir.IntegerAttr:
    return self.attributes["lhs_columns"]

  @builtins.property
  def rhs_columns(self) -> _ods_ir.IntegerAttr:
    return self.attributes["rhs_columns"]

def intr_matrix_multiply(res: _ods_ir.Type, lhs: _ods_ir.Value[_ods_ir.VectorType], rhs: _ods_ir.Value[_ods_ir.VectorType], lhs_rows: _Union[int, _ods_ir.IntegerAttr], lhs_columns: _Union[int, _ods_ir.IntegerAttr], rhs_columns: _Union[int, _ods_ir.IntegerAttr], *, loc: _Optional[_ods_ir.Location] = None, ip: _Optional[_ods_ir.InsertionPoint] = None) -> _ods_ir.OpResult[_ods_ir.VectorType]:
  return MatrixMultiplyOp(res=res, lhs=lhs, rhs=rhs, lhs_rows=lhs_rows, lhs_columns=lhs_columns, rhs_columns=rhs_columns, loc=loc, ip=ip).result

@_ods_cext.register_operation(_Dialect)
class MatrixTransposeOp(_ods_ir.OpView):
  OPERATION_NAME = "llvm.intr.matrix.transpose"

  _ODS_REGIONS = (0, True)

  def __init__(self, res: _ods_ir.Type, matrix: _ods_ir.Value[_ods_ir.VectorType], rows: _Union[int, _ods_ir.IntegerAttr], columns: _Union[int, _ods_ir.IntegerAttr], *, loc: _Optional[_ods_ir.Location] = None, ip: _Optional[_ods_ir.InsertionPoint] = None):
    operands = []
    attributes = {}
    regions = None
    operands.append(matrix)
    _ods_context = _ods_get_default_loc_context(loc)
    attributes["rows"] = (rows if (
    isinstance(rows, _ods_ir.Attribute) or
    not _ods_ir.AttrBuilder.contains('I32Attr')) else
      _ods_ir.AttrBuilder.get('I32Attr')(rows, context=_ods_context))
    attributes["columns"] = (columns if (
    isinstance(columns, _ods_ir.Attribute) or
    not _ods_ir.AttrBuilder.contains('I32Attr')) else
      _ods_ir.AttrBuilder.get('I32Attr')(columns, 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 matrix(self) -> _ods_ir.Value[_ods_ir.VectorType]:
    return self.operation.operands[0]

  @builtins.property
  def rows(self) -> _ods_ir.IntegerAttr:
    return self.operation.attributes["rows"]

  @rows.setter
  def rows(self, value: _ods_ir.IntegerAttr):
    if value is None:
      raise ValueError("'None' not allowed as value for mandatory attributes")
    self.operation.attributes["rows"] = value

  @builtins.property
  def columns(self) -> _ods_ir.IntegerAttr:
    return self.operation.attributes["columns"]

  @columns.setter
  def columns(self, value: _ods_ir.IntegerAttr):
    if value is None:
      raise ValueError("'None' not allowed as value for mandatory attributes")
    self.operation.attributes["columns"] = value

  @builtins.property
  def res(self) -> _ods_ir.OpResult[_ods_ir.VectorType]:
    return self.operation.results[0]

@_ods_cext.register_op_adaptor(MatrixTransposeOp)
class MatrixTransposeOpAdaptor(_ods_ir.OpAdaptor):
  OPERATION_NAME = "llvm.intr.matrix.transpose"

  @builtins.property
  def matrix(self) -> _ods_ir.Value[_ods_ir.VectorType]:
    return self.operands[0]

  @builtins.property
  def rows(self) -> _ods_ir.IntegerAttr:
    return self.attributes["rows"]

  @builtins.property
  def columns(self) -> _ods_ir.IntegerAttr:
    return self.attributes["columns"]

def intr_matrix_transpose(res: _ods_ir.Type, matrix: _ods_ir.Value[_ods_ir.VectorType], rows: _Union[int, _ods_ir.IntegerAttr], columns: _Union[int, _ods_ir.IntegerAttr], *, loc: _Optional[_ods_ir.Location] = None, ip: _Optional[_ods_ir.InsertionPoint] = None) -> _ods_ir.OpResult[_ods_ir.VectorType]:
  return MatrixTransposeOp(res=res, matrix=matrix, rows=rows, columns=columns, loc=loc, ip=ip).result

@_ods_cext.register_operation(_Dialect)
class MaxNumOp(_ods_ir.OpView):
  OPERATION_NAME = "llvm.intr.maxnum"

  _ODS_REGIONS = (0, True)

  def __init__(self, a: _ods_ir.Value, b: _ods_ir.Value, *, fastmathFlags: _Optional[_Union[_Any, _ods_ir.Attribute]] = None, results: _Optional[_Sequence[_ods_ir.Type]] = None, loc: _Optional[_ods_ir.Location] = None, ip: _Optional[_ods_ir.InsertionPoint] = None):
    operands = []
    attributes = {}
    regions = None
    operands.append(a)
    operands.append(b)
    _ods_context = _ods_get_default_loc_context(loc)
    if fastmathFlags is not None: attributes["fastmathFlags"] = (fastmathFlags if (
        isinstance(fastmathFlags, _ods_ir.Attribute) or
        not _ods_ir.AttrBuilder.contains('llvm.LLVM_FastmathFlagsAttr')) else
          _ods_ir.AttrBuilder.get('llvm.LLVM_FastmathFlagsAttr')(fastmathFlags, context=_ods_context))
    if results is None: results = [operands[0].type] * 1
    _ods_successors = None
    super().__init__(self.OPERATION_NAME, self._ODS_REGIONS, self._ODS_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 fastmathFlags(self) -> _ods_ir.Attribute:
    return self.operation.attributes["fastmathFlags"]

  @fastmathFlags.setter
  def fastmathFlags(self, value: _ods_ir.Attribute):
    if value is None:
      raise ValueError("'None' not allowed as value for mandatory attributes")
    self.operation.attributes["fastmathFlags"] = value

  @builtins.property
  def res(self) -> _ods_ir.OpResult:
    return self.operation.results[0]

@_ods_cext.register_op_adaptor(MaxNumOp)
class MaxNumOpAdaptor(_ods_ir.OpAdaptor):
  OPERATION_NAME = "llvm.intr.maxnum"

  @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 fastmathFlags(self) -> _ods_ir.Attribute:
    return self.attributes["fastmathFlags"]

def intr_maxnum(a: _ods_ir.Value, b: _ods_ir.Value, *, fastmath_flags: _Optional[_Union[_Any, _ods_ir.Attribute]] = None, results: _Optional[_Sequence[_ods_ir.Type]] = None, loc: _Optional[_ods_ir.Location] = None, ip: _Optional[_ods_ir.InsertionPoint] = None) -> _ods_ir.OpResult:
  return MaxNumOp(a=a, b=b, fastmathFlags=fastmath_flags, results=results, loc=loc, ip=ip).result

@_ods_cext.register_operation(_Dialect)
class MaximumOp(_ods_ir.OpView):
  OPERATION_NAME = "llvm.intr.maximum"

  _ODS_REGIONS = (0, True)

  def __init__(self, a: _ods_ir.Value, b: _ods_ir.Value, *, fastmathFlags: _Optional[_Union[_Any, _ods_ir.Attribute]] = None, results: _Optional[_Sequence[_ods_ir.Type]] = None, loc: _Optional[_ods_ir.Location] = None, ip: _Optional[_ods_ir.InsertionPoint] = None):
    operands = []
    attributes = {}
    regions = None
    operands.append(a)
    operands.append(b)
    _ods_context = _ods_get_default_loc_context(loc)
    if fastmathFlags is not None: attributes["fastmathFlags"] = (fastmathFlags if (
        isinstance(fastmathFlags, _ods_ir.Attribute) or
        not _ods_ir.AttrBuilder.contains('llvm.LLVM_FastmathFlagsAttr')) else
          _ods_ir.AttrBuilder.get('llvm.LLVM_FastmathFlagsAttr')(fastmathFlags, context=_ods_context))
    if results is None: results = [operands[0].type] * 1
    _ods_successors = None
    super().__init__(self.OPERATION_NAME, self._ODS_REGIONS, self._ODS_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 fastmathFlags(self) -> _ods_ir.Attribute:
    return self.operation.attributes["fastmathFlags"]

  @fastmathFlags.setter
  def fastmathFlags(self, value: _ods_ir.Attribute):
    if value is None:
      raise ValueError("'None' not allowed as value for mandatory attributes")
    self.operation.attributes["fastmathFlags"] = value

  @builtins.property
  def res(self) -> _ods_ir.OpResult:
    return self.operation.results[0]

@_ods_cext.register_op_adaptor(MaximumOp)
class MaximumOpAdaptor(_ods_ir.OpAdaptor):
  OPERATION_NAME = "llvm.intr.maximum"

  @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 fastmathFlags(self) -> _ods_ir.Attribute:
    return self.attributes["fastmathFlags"]

def intr_maximum(a: _ods_ir.Value, b: _ods_ir.Value, *, fastmath_flags: _Optional[_Union[_Any, _ods_ir.Attribute]] = None, results: _Optional[_Sequence[_ods_ir.Type]] = None, loc: _Optional[_ods_ir.Location] = None, ip: _Optional[_ods_ir.InsertionPoint] = None) -> _ods_ir.OpResult:
  return MaximumOp(a=a, b=b, fastmathFlags=fastmath_flags, results=results, loc=loc, ip=ip).result

@_ods_cext.register_operation(_Dialect)
class MemcpyInlineOp(_ods_ir.OpView):
  OPERATION_NAME = "llvm.intr.memcpy.inline"

  _ODS_REGIONS = (0, True)

  def __init__(self, dst: _ods_ir.Value, src: _ods_ir.Value, len: _Union[_Any, _ods_ir.IntegerAttr], isVolatile: _Union[bool, _ods_ir.BoolAttr], *, access_groups: _Optional[_Union[_Any, _ods_ir.ArrayAttr]] = None, 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, 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(dst)
    operands.append(src)
    _ods_context = _ods_get_default_loc_context(loc)
    attributes["len"] = (len if (
    isinstance(len, _ods_ir.Attribute) or
    not _ods_ir.AttrBuilder.contains('APIntAttr')) else
      _ods_ir.AttrBuilder.get('APIntAttr')(len, context=_ods_context))
    attributes["isVolatile"] = (isVolatile if (
    isinstance(isVolatile, _ods_ir.Attribute) or
    not _ods_ir.AttrBuilder.contains('I1Attr')) else
      _ods_ir.AttrBuilder.get('I1Attr')(isVolatile, context=_ods_context))
    if access_groups is not None: attributes["access_groups"] = (access_groups if (
        isinstance(access_groups, _ods_ir.Attribute) or
        not _ods_ir.AttrBuilder.contains('LLVM_AccessGroupArrayAttr')) else
          _ods_ir.AttrBuilder.get('LLVM_AccessGroupArrayAttr')(access_groups, 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))
    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 = []
    _ods_successors = None
    super().__init__(self.OPERATION_NAME, self._ODS_REGIONS, self._ODS_OPERAND_SEGMENTS, self._ODS_RESULT_SEGMENTS, attributes=attributes, results=results, operands=operands, successors=_ods_successors, regions=regions, loc=loc, ip=ip)

  @builtins.property
  def dst(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 len(self) -> _ods_ir.IntegerAttr:
    return self.operation.attributes["len"]

  @len.setter
  def len(self, value: _ods_ir.IntegerAttr):
    if value is None:
      raise ValueError("'None' not allowed as value for mandatory attributes")
    self.operation.attributes["len"] = value

  @builtins.property
  def isVolatile(self) -> _ods_ir.BoolAttr:
    return self.operation.attributes["isVolatile"]

  @isVolatile.setter
  def isVolatile(self, value: _ods_ir.BoolAttr):
    if value is None:
      raise ValueError("'None' not allowed as value for mandatory attributes")
    self.operation.attributes["isVolatile"] = value

  @builtins.property
  def access_groups(self) -> _Optional[_ods_ir.ArrayAttr]:
    if "access_groups" not in self.operation.attributes:
      return None
    return self.operation.attributes["access_groups"]

  @access_groups.setter
  def access_groups(self, value: _Optional[_ods_ir.ArrayAttr]):
    if value is not None:
      self.operation.attributes["access_groups"] = value
    elif "access_groups" in self.operation.attributes:
      del self.operation.attributes["access_groups"]

  @access_groups.deleter
  def access_groups(self):
    del self.operation.attributes["access_groups"]

  @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 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"]

@_ods_cext.register_op_adaptor(MemcpyInlineOp)
class MemcpyInlineOpAdaptor(_ods_ir.OpAdaptor):
  OPERATION_NAME = "llvm.intr.memcpy.inline"

  @builtins.property
  def dst(self) -> _ods_ir.Value:
    return self.operands[0]

  @builtins.property
  def src(self) -> _ods_ir.Value:
    return self.operands[1]

  @builtins.property
  def len(self) -> _ods_ir.IntegerAttr:
    return self.attributes["len"]

  @builtins.property
  def isVolatile(self) -> _ods_ir.BoolAttr:
    return self.attributes["isVolatile"]

  @builtins.property
  def access_groups(self) -> _Optional[_ods_ir.ArrayAttr]:
    if "access_groups" not in self.attributes:
      return None
    return self.attributes["access_groups"]

  @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"]

  @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 intr_memcpy_inline(dst: _ods_ir.Value, src: _ods_ir.Value, len: _Union[_Any, _ods_ir.IntegerAttr], is_volatile: _Union[bool, _ods_ir.BoolAttr], *, access_groups: _Optional[_Union[_Any, _ods_ir.ArrayAttr]] = None, 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, 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) -> MemcpyInlineOp:
  return MemcpyInlineOp(dst=dst, src=src, len=len, isVolatile=is_volatile, access_groups=access_groups, alias_scopes=alias_scopes, noalias_scopes=noalias_scopes, tbaa=tbaa, arg_attrs=arg_attrs, res_attrs=res_attrs, loc=loc, ip=ip)

@_ods_cext.register_operation(_Dialect)
class MemcpyOp(_ods_ir.OpView):
  OPERATION_NAME = "llvm.intr.memcpy"

  _ODS_REGIONS = (0, True)

  def __init__(self, dst: _ods_ir.Value, src: _ods_ir.Value, len: _ods_ir.Value[_ods_ir.IntegerType], isVolatile: _Union[bool, _ods_ir.BoolAttr], *, access_groups: _Optional[_Union[_Any, _ods_ir.ArrayAttr]] = None, 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, 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(dst)
    operands.append(src)
    operands.append(len)
    _ods_context = _ods_get_default_loc_context(loc)
    attributes["isVolatile"] = (isVolatile if (
    isinstance(isVolatile, _ods_ir.Attribute) or
    not _ods_ir.AttrBuilder.contains('I1Attr')) else
      _ods_ir.AttrBuilder.get('I1Attr')(isVolatile, context=_ods_context))
    if access_groups is not None: attributes["access_groups"] = (access_groups if (
        isinstance(access_groups, _ods_ir.Attribute) or
        not _ods_ir.AttrBuilder.contains('LLVM_AccessGroupArrayAttr')) else
          _ods_ir.AttrBuilder.get('LLVM_AccessGroupArrayAttr')(access_groups, 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))
    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 = []
    _ods_successors = None
    super().__init__(self.OPERATION_NAME, self._ODS_REGIONS, self._ODS_OPERAND_SEGMENTS, self._ODS_RESULT_SEGMENTS, attributes=attributes, results=results, operands=operands, successors=_ods_successors, regions=regions, loc=loc, ip=ip)

  @builtins.property
  def dst(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 len(self) -> _ods_ir.Value[_ods_ir.IntegerType]:
    return self.operation.operands[2]

  @builtins.property
  def isVolatile(self) -> _ods_ir.BoolAttr:
    return self.operation.attributes["isVolatile"]

  @isVolatile.setter
  def isVolatile(self, value: _ods_ir.BoolAttr):
    if value is None:
      raise ValueError("'None' not allowed as value for mandatory attributes")
    self.operation.attributes["isVolatile"] = value

  @builtins.property
  def access_groups(self) -> _Optional[_ods_ir.ArrayAttr]:
    if "access_groups" not in self.operation.attributes:
      return None
    return self.operation.attributes["access_groups"]

  @access_groups.setter
  def access_groups(self, value: _Optional[_ods_ir.ArrayAttr]):
    if value is not None:
      self.operation.attributes["access_groups"] = value
    elif "access_groups" in self.operation.attributes:
      del self.operation.attributes["access_groups"]

  @access_groups.deleter
  def access_groups(self):
    del self.operation.attributes["access_groups"]

  @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 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"]

@_ods_cext.register_op_adaptor(MemcpyOp)
class MemcpyOpAdaptor(_ods_ir.OpAdaptor):
  OPERATION_NAME = "llvm.intr.memcpy"

  @builtins.property
  def dst(self) -> _ods_ir.Value:
    return self.operands[0]

  @builtins.property
  def src(self) -> _ods_ir.Value:
    return self.operands[1]

  @builtins.property
  def len(self) -> _ods_ir.Value[_ods_ir.IntegerType]:
    return self.operands[2]

  @builtins.property
  def isVolatile(self) -> _ods_ir.BoolAttr:
    return self.attributes["isVolatile"]

  @builtins.property
  def access_groups(self) -> _Optional[_ods_ir.ArrayAttr]:
    if "access_groups" not in self.attributes:
      return None
    return self.attributes["access_groups"]

  @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"]

  @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 intr_memcpy(dst: _ods_ir.Value, src: _ods_ir.Value, len: _ods_ir.Value[_ods_ir.IntegerType], is_volatile: _Union[bool, _ods_ir.BoolAttr], *, access_groups: _Optional[_Union[_Any, _ods_ir.ArrayAttr]] = None, 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, 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) -> MemcpyOp:
  return MemcpyOp(dst=dst, src=src, len=len, isVolatile=is_volatile, access_groups=access_groups, alias_scopes=alias_scopes, noalias_scopes=noalias_scopes, tbaa=tbaa, arg_attrs=arg_attrs, res_attrs=res_attrs, loc=loc, ip=ip)

@_ods_cext.register_operation(_Dialect)
class MemmoveOp(_ods_ir.OpView):
  OPERATION_NAME = "llvm.intr.memmove"

  _ODS_REGIONS = (0, True)

  def __init__(self, dst: _ods_ir.Value, src: _ods_ir.Value, len: _ods_ir.Value[_ods_ir.IntegerType], isVolatile: _Union[bool, _ods_ir.BoolAttr], *, access_groups: _Optional[_Union[_Any, _ods_ir.ArrayAttr]] = None, 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, 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(dst)
    operands.append(src)
    operands.append(len)
    _ods_context = _ods_get_default_loc_context(loc)
    attributes["isVolatile"] = (isVolatile if (
    isinstance(isVolatile, _ods_ir.Attribute) or
    not _ods_ir.AttrBuilder.contains('I1Attr')) else
      _ods_ir.AttrBuilder.get('I1Attr')(isVolatile, context=_ods_context))
    if access_groups is not None: attributes["access_groups"] = (access_groups if (
        isinstance(access_groups, _ods_ir.Attribute) or
        not _ods_ir.AttrBuilder.contains('LLVM_AccessGroupArrayAttr')) else
          _ods_ir.AttrBuilder.get('LLVM_AccessGroupArrayAttr')(access_groups, 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))
    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 = []
    _ods_successors = None
    super().__init__(self.OPERATION_NAME, self._ODS_REGIONS, self._ODS_OPERAND_SEGMENTS, self._ODS_RESULT_SEGMENTS, attributes=attributes, results=results, operands=operands, successors=_ods_successors, regions=regions, loc=loc, ip=ip)

  @builtins.property
  def dst(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 len(self) -> _ods_ir.Value[_ods_ir.IntegerType]:
    return self.operation.operands[2]

  @builtins.property
  def isVolatile(self) -> _ods_ir.BoolAttr:
    return self.operation.attributes["isVolatile"]

  @isVolatile.setter
  def isVolatile(self, value: _ods_ir.BoolAttr):
    if value is None:
      raise ValueError("'None' not allowed as value for mandatory attributes")
    self.operation.attributes["isVolatile"] = value

  @builtins.property
  def access_groups(self) -> _Optional[_ods_ir.ArrayAttr]:
    if "access_groups" not in self.operation.attributes:
      return None
    return self.operation.attributes["access_groups"]

  @access_groups.setter
  def access_groups(self, value: _Optional[_ods_ir.ArrayAttr]):
    if value is not None:
      self.operation.attributes["access_groups"] = value
    elif "access_groups" in self.operation.attributes:
      del self.operation.attributes["access_groups"]

  @access_groups.deleter
  def access_groups(self):
    del self.operation.attributes["access_groups"]

  @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 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"]

@_ods_cext.register_op_adaptor(MemmoveOp)
class MemmoveOpAdaptor(_ods_ir.OpAdaptor):
  OPERATION_NAME = "llvm.intr.memmove"

  @builtins.property
  def dst(self) -> _ods_ir.Value:
    return self.operands[0]

  @builtins.property
  def src(self) -> _ods_ir.Value:
    return self.operands[1]

  @builtins.property
  def len(self) -> _ods_ir.Value[_ods_ir.IntegerType]:
    return self.operands[2]

  @builtins.property
  def isVolatile(self) -> _ods_ir.BoolAttr:
    return self.attributes["isVolatile"]

  @builtins.property
  def access_groups(self) -> _Optional[_ods_ir.ArrayAttr]:
    if "access_groups" not in self.attributes:
      return None
    return self.attributes["access_groups"]

  @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"]

  @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 intr_memmove(dst: _ods_ir.Value, src: _ods_ir.Value, len: _ods_ir.Value[_ods_ir.IntegerType], is_volatile: _Union[bool, _ods_ir.BoolAttr], *, access_groups: _Optional[_Union[_Any, _ods_ir.ArrayAttr]] = None, 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, 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) -> MemmoveOp:
  return MemmoveOp(dst=dst, src=src, len=len, isVolatile=is_volatile, access_groups=access_groups, alias_scopes=alias_scopes, noalias_scopes=noalias_scopes, tbaa=tbaa, arg_attrs=arg_attrs, res_attrs=res_attrs, loc=loc, ip=ip)

@_ods_cext.register_operation(_Dialect)
class MemsetInlineOp(_ods_ir.OpView):
  OPERATION_NAME = "llvm.intr.memset.inline"

  _ODS_REGIONS = (0, True)

  def __init__(self, dst: _ods_ir.Value, val: _ods_ir.Value[_ods_ir.IntegerType], len: _Union[_Any, _ods_ir.IntegerAttr], isVolatile: _Union[bool, _ods_ir.BoolAttr], *, access_groups: _Optional[_Union[_Any, _ods_ir.ArrayAttr]] = None, 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, 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(dst)
    operands.append(val)
    _ods_context = _ods_get_default_loc_context(loc)
    attributes["len"] = (len if (
    isinstance(len, _ods_ir.Attribute) or
    not _ods_ir.AttrBuilder.contains('APIntAttr')) else
      _ods_ir.AttrBuilder.get('APIntAttr')(len, context=_ods_context))
    attributes["isVolatile"] = (isVolatile if (
    isinstance(isVolatile, _ods_ir.Attribute) or
    not _ods_ir.AttrBuilder.contains('I1Attr')) else
      _ods_ir.AttrBuilder.get('I1Attr')(isVolatile, context=_ods_context))
    if access_groups is not None: attributes["access_groups"] = (access_groups if (
        isinstance(access_groups, _ods_ir.Attribute) or
        not _ods_ir.AttrBuilder.contains('LLVM_AccessGroupArrayAttr')) else
          _ods_ir.AttrBuilder.get('LLVM_AccessGroupArrayAttr')(access_groups, 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))
    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 = []
    _ods_successors = None
    super().__init__(self.OPERATION_NAME, self._ODS_REGIONS, self._ODS_OPERAND_SEGMENTS, self._ODS_RESULT_SEGMENTS, attributes=attributes, results=results, operands=operands, successors=_ods_successors, regions=regions, loc=loc, ip=ip)

  @builtins.property
  def dst(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 len(self) -> _ods_ir.IntegerAttr:
    return self.operation.attributes["len"]

  @len.setter
  def len(self, value: _ods_ir.IntegerAttr):
    if value is None:
      raise ValueError("'None' not allowed as value for mandatory attributes")
    self.operation.attributes["len"] = value

  @builtins.property
  def isVolatile(self) -> _ods_ir.BoolAttr:
    return self.operation.attributes["isVolatile"]

  @isVolatile.setter
  def isVolatile(self, value: _ods_ir.BoolAttr):
    if value is None:
      raise ValueError("'None' not allowed as value for mandatory attributes")
    self.operation.attributes["isVolatile"] = value

  @builtins.property
  def access_groups(self) -> _Optional[_ods_ir.ArrayAttr]:
    if "access_groups" not in self.operation.attributes:
      return None
    return self.operation.attributes["access_groups"]

  @access_groups.setter
  def access_groups(self, value: _Optional[_ods_ir.ArrayAttr]):
    if value is not None:
      self.operation.attributes["access_groups"] = value
    elif "access_groups" in self.operation.attributes:
      del self.operation.attributes["access_groups"]

  @access_groups.deleter
  def access_groups(self):
    del self.operation.attributes["access_groups"]

  @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 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"]

@_ods_cext.register_op_adaptor(MemsetInlineOp)
class MemsetInlineOpAdaptor(_ods_ir.OpAdaptor):
  OPERATION_NAME = "llvm.intr.memset.inline"

  @builtins.property
  def dst(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 len(self) -> _ods_ir.IntegerAttr:
    return self.attributes["len"]

  @builtins.property
  def isVolatile(self) -> _ods_ir.BoolAttr:
    return self.attributes["isVolatile"]

  @builtins.property
  def access_groups(self) -> _Optional[_ods_ir.ArrayAttr]:
    if "access_groups" not in self.attributes:
      return None
    return self.attributes["access_groups"]

  @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"]

  @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 intr_memset_inline(dst: _ods_ir.Value, val: _ods_ir.Value[_ods_ir.IntegerType], len: _Union[_Any, _ods_ir.IntegerAttr], is_volatile: _Union[bool, _ods_ir.BoolAttr], *, access_groups: _Optional[_Union[_Any, _ods_ir.ArrayAttr]] = None, 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, 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) -> MemsetInlineOp:
  return MemsetInlineOp(dst=dst, val=val, len=len, isVolatile=is_volatile, access_groups=access_groups, alias_scopes=alias_scopes, noalias_scopes=noalias_scopes, tbaa=tbaa, arg_attrs=arg_attrs, res_attrs=res_attrs, loc=loc, ip=ip)

@_ods_cext.register_operation(_Dialect)
class MemsetOp(_ods_ir.OpView):
  OPERATION_NAME = "llvm.intr.memset"

  _ODS_REGIONS = (0, True)

  def __init__(self, dst: _ods_ir.Value, val: _ods_ir.Value[_ods_ir.IntegerType], len: _ods_ir.Value[_ods_ir.IntegerType], isVolatile: _Union[bool, _ods_ir.BoolAttr], *, access_groups: _Optional[_Union[_Any, _ods_ir.ArrayAttr]] = None, 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, 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(dst)
    operands.append(val)
    operands.append(len)
    _ods_context = _ods_get_default_loc_context(loc)
    attributes["isVolatile"] = (isVolatile if (
    isinstance(isVolatile, _ods_ir.Attribute) or
    not _ods_ir.AttrBuilder.contains('I1Attr')) else
      _ods_ir.AttrBuilder.get('I1Attr')(isVolatile, context=_ods_context))
    if access_groups is not None: attributes["access_groups"] = (access_groups if (
        isinstance(access_groups, _ods_ir.Attribute) or
        not _ods_ir.AttrBuilder.contains('LLVM_AccessGroupArrayAttr')) else
          _ods_ir.AttrBuilder.get('LLVM_AccessGroupArrayAttr')(access_groups, 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))
    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 = []
    _ods_successors = None
    super().__init__(self.OPERATION_NAME, self._ODS_REGIONS, self._ODS_OPERAND_SEGMENTS, self._ODS_RESULT_SEGMENTS, attributes=attributes, results=results, operands=operands, successors=_ods_successors, regions=regions, loc=loc, ip=ip)

  @builtins.property
  def dst(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 len(self) -> _ods_ir.Value[_ods_ir.IntegerType]:
    return self.operation.operands[2]

  @builtins.property
  def isVolatile(self) -> _ods_ir.BoolAttr:
    return self.operation.attributes["isVolatile"]

  @isVolatile.setter
  def isVolatile(self, value: _ods_ir.BoolAttr):
    if value is None:
      raise ValueError("'None' not allowed as value for mandatory attributes")
    self.operation.attributes["isVolatile"] = value

  @builtins.property
  def access_groups(self) -> _Optional[_ods_ir.ArrayAttr]:
    if "access_groups" not in self.operation.attributes:
      return None
    return self.operation.attributes["access_groups"]

  @access_groups.setter
  def access_groups(self, value: _Optional[_ods_ir.ArrayAttr]):
    if value is not None:
      self.operation.attributes["access_groups"] = value
    elif "access_groups" in self.operation.attributes:
      del self.operation.attributes["access_groups"]

  @access_groups.deleter
  def access_groups(self):
    del self.operation.attributes["access_groups"]

  @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 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"]

@_ods_cext.register_op_adaptor(MemsetOp)
class MemsetOpAdaptor(_ods_ir.OpAdaptor):
  OPERATION_NAME = "llvm.intr.memset"

  @builtins.property
  def dst(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 len(self) -> _ods_ir.Value[_ods_ir.IntegerType]:
    return self.operands[2]

  @builtins.property
  def isVolatile(self) -> _ods_ir.BoolAttr:
    return self.attributes["isVolatile"]

  @builtins.property
  def access_groups(self) -> _Optional[_ods_ir.ArrayAttr]:
    if "access_groups" not in self.attributes:
      return None
    return self.attributes["access_groups"]

  @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"]

  @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 intr_memset(dst: _ods_ir.Value, val: _ods_ir.Value[_ods_ir.IntegerType], len: _ods_ir.Value[_ods_ir.IntegerType], is_volatile: _Union[bool, _ods_ir.BoolAttr], *, access_groups: _Optional[_Union[_Any, _ods_ir.ArrayAttr]] = None, 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, 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) -> MemsetOp:
  return MemsetOp(dst=dst, val=val, len=len, isVolatile=is_volatile, access_groups=access_groups, alias_scopes=alias_scopes, noalias_scopes=noalias_scopes, tbaa=tbaa, arg_attrs=arg_attrs, res_attrs=res_attrs, loc=loc, ip=ip)

@_ods_cext.register_operation(_Dialect)
class MinNumOp(_ods_ir.OpView):
  OPERATION_NAME = "llvm.intr.minnum"

  _ODS_REGIONS = (0, True)

  def __init__(self, a: _ods_ir.Value, b: _ods_ir.Value, *, fastmathFlags: _Optional[_Union[_Any, _ods_ir.Attribute]] = None, results: _Optional[_Sequence[_ods_ir.Type]] = None, loc: _Optional[_ods_ir.Location] = None, ip: _Optional[_ods_ir.InsertionPoint] = None):
    operands = []
    attributes = {}
    regions = None
    operands.append(a)
    operands.append(b)
    _ods_context = _ods_get_default_loc_context(loc)
    if fastmathFlags is not None: attributes["fastmathFlags"] = (fastmathFlags if (
        isinstance(fastmathFlags, _ods_ir.Attribute) or
        not _ods_ir.AttrBuilder.contains('llvm.LLVM_FastmathFlagsAttr')) else
          _ods_ir.AttrBuilder.get('llvm.LLVM_FastmathFlagsAttr')(fastmathFlags, context=_ods_context))
    if results is None: results = [operands[0].type] * 1
    _ods_successors = None
    super().__init__(self.OPERATION_NAME, self._ODS_REGIONS, self._ODS_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 fastmathFlags(self) -> _ods_ir.Attribute:
    return self.operation.attributes["fastmathFlags"]

  @fastmathFlags.setter
  def fastmathFlags(self, value: _ods_ir.Attribute):
    if value is None:
      raise ValueError("'None' not allowed as value for mandatory attributes")
    self.operation.attributes["fastmathFlags"] = value

  @builtins.property
  def res(self) -> _ods_ir.OpResult:
    return self.operation.results[0]

@_ods_cext.register_op_adaptor(MinNumOp)
class MinNumOpAdaptor(_ods_ir.OpAdaptor):
  OPERATION_NAME = "llvm.intr.minnum"

  @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 fastmathFlags(self) -> _ods_ir.Attribute:
    return self.attributes["fastmathFlags"]

def intr_minnum(a: _ods_ir.Value, b: _ods_ir.Value, *, fastmath_flags: _Optional[_Union[_Any, _ods_ir.Attribute]] = None, results: _Optional[_Sequence[_ods_ir.Type]] = None, loc: _Optional[_ods_ir.Location] = None, ip: _Optional[_ods_ir.InsertionPoint] = None) -> _ods_ir.OpResult:
  return MinNumOp(a=a, b=b, fastmathFlags=fastmath_flags, results=results, loc=loc, ip=ip).result

@_ods_cext.register_operation(_Dialect)
class MinimumOp(_ods_ir.OpView):
  OPERATION_NAME = "llvm.intr.minimum"

  _ODS_REGIONS = (0, True)

  def __init__(self, a: _ods_ir.Value, b: _ods_ir.Value, *, fastmathFlags: _Optional[_Union[_Any, _ods_ir.Attribute]] = None, results: _Optional[_Sequence[_ods_ir.Type]] = None, loc: _Optional[_ods_ir.Location] = None, ip: _Optional[_ods_ir.InsertionPoint] = None):
    operands = []
    attributes = {}
    regions = None
    operands.append(a)
    operands.append(b)
    _ods_context = _ods_get_default_loc_context(loc)
    if fastmathFlags is not None: attributes["fastmathFlags"] = (fastmathFlags if (
        isinstance(fastmathFlags, _ods_ir.Attribute) or
        not _ods_ir.AttrBuilder.contains('llvm.LLVM_FastmathFlagsAttr')) else
          _ods_ir.AttrBuilder.get('llvm.LLVM_FastmathFlagsAttr')(fastmathFlags, context=_ods_context))
    if results is None: results = [operands[0].type] * 1
    _ods_successors = None
    super().__init__(self.OPERATION_NAME, self._ODS_REGIONS, self._ODS_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 fastmathFlags(self) -> _ods_ir.Attribute:
    return self.operation.attributes["fastmathFlags"]

  @fastmathFlags.setter
  def fastmathFlags(self, value: _ods_ir.Attribute):
    if value is None:
      raise ValueError("'None' not allowed as value for mandatory attributes")
    self.operation.attributes["fastmathFlags"] = value

  @builtins.property
  def res(self) -> _ods_ir.OpResult:
    return self.operation.results[0]

@_ods_cext.register_op_adaptor(MinimumOp)
class MinimumOpAdaptor(_ods_ir.OpAdaptor):
  OPERATION_NAME = "llvm.intr.minimum"

  @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 fastmathFlags(self) -> _ods_ir.Attribute:
    return self.attributes["fastmathFlags"]

def intr_minimum(a: _ods_ir.Value, b: _ods_ir.Value, *, fastmath_flags: _Optional[_Union[_Any, _ods_ir.Attribute]] = None, results: _Optional[_Sequence[_ods_ir.Type]] = None, loc: _Optional[_ods_ir.Location] = None, ip: _Optional[_ods_ir.InsertionPoint] = None) -> _ods_ir.OpResult:
  return MinimumOp(a=a, b=b, fastmathFlags=fastmath_flags, results=results, loc=loc, ip=ip).result

@_ods_cext.register_operation(_Dialect)
class ModuleFlagsOp(_ods_ir.OpView):
  r"""
  Represents the equivalent in MLIR for LLVM's `llvm.module.flags` metadata,
  which requires a list of metadata triplets. Each triplet entry is described
  by a `ModuleFlagAttr`.
  
  Example:
  ```mlir
  llvm.module.flags [
    #llvm.mlir.module_flag<error, "wchar_size", 4>,
    #llvm.mlir.module_flag<max, "PIC Level", 2>
  ]
  ```
  """

  OPERATION_NAME = "llvm.module_flags"

  _ODS_REGIONS = (0, True)

  def __init__(self, flags: _Union[_Sequence[_ods_ir.Attribute], _ods_ir.ArrayAttr], *, 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["flags"] = (flags if (
    isinstance(flags, _ods_ir.Attribute) or
    not _ods_ir.AttrBuilder.contains('ArrayAttr')) else
      _ods_ir.AttrBuilder.get('ArrayAttr')(flags, 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 flags(self) -> _ods_ir.ArrayAttr:
    return self.operation.attributes["flags"]

  @flags.setter
  def flags(self, value: _ods_ir.ArrayAttr):
    if value is None:
      raise ValueError("'None' not allowed as value for mandatory attributes")
    self.operation.attributes["flags"] = value

@_ods_cext.register_op_adaptor(ModuleFlagsOp)
class ModuleFlagsOpAdaptor(_ods_ir.OpAdaptor):
  OPERATION_NAME = "llvm.module_flags"

  @builtins.property
  def flags(self) -> _ods_ir.ArrayAttr:
    return self.attributes["flags"]

def module_flags(flags: _Union[_Sequence[_ods_ir.Attribute], _ods_ir.ArrayAttr], *, loc: _Optional[_ods_ir.Location] = None, ip: _Optional[_ods_ir.InsertionPoint] = None) -> ModuleFlagsOp:
  return ModuleFlagsOp(flags=flags, loc=loc, ip=ip)

@_ods_cext.register_operation(_Dialect)
class MulOp(_ods_ir.OpView):
  OPERATION_NAME = "llvm.mul"

  _ODS_REGIONS = (0, True)

  def __init__(self, lhs: _ods_ir.Value, rhs: _ods_ir.Value, overflowFlags, *, results: _Optional[_Sequence[_ods_ir.Type]] = None, loc: _Optional[_ods_ir.Location] = None, ip: _Optional[_ods_ir.InsertionPoint] = None):
    operands = []
    attributes = {}
    regions = None
    operands.append(lhs)
    operands.append(rhs)
    _ods_context = _ods_get_default_loc_context(loc)
    if results is None: results = [operands[0].type] * 1
    _ods_successors = None
    super().__init__(self.OPERATION_NAME, self._ODS_REGIONS, self._ODS_OPERAND_SEGMENTS, self._ODS_RESULT_SEGMENTS, attributes=attributes, results=results, operands=operands, successors=_ods_successors, regions=regions, loc=loc, ip=ip)

  @builtins.property
  def lhs(self) -> _ods_ir.Value:
    return self.operation.operands[0]

  @builtins.property
  def rhs(self) -> _ods_ir.Value:
    return self.operation.operands[1]

  @builtins.property
  def res(self) -> _ods_ir.OpResult:
    return self.operation.results[0]

@_ods_cext.register_op_adaptor(MulOp)
class MulOpAdaptor(_ods_ir.OpAdaptor):
  OPERATION_NAME = "llvm.mul"

  @builtins.property
  def lhs(self) -> _ods_ir.Value:
    return self.operands[0]

  @builtins.property
  def rhs(self) -> _ods_ir.Value:
    return self.operands[1]

def mul(lhs: _ods_ir.Value, rhs: _ods_ir.Value, overflow_flags, *, results: _Optional[_Sequence[_ods_ir.Type]] = None, loc: _Optional[_ods_ir.Location] = None, ip: _Optional[_ods_ir.InsertionPoint] = None) -> _ods_ir.OpResult:
  return MulOp(lhs=lhs, rhs=rhs, overflowFlags=overflow_flags, results=results, loc=loc, ip=ip).result

@_ods_cext.register_operation(_Dialect)
class NamedMetadataOp(_ods_ir.OpView):
  r"""
  Represents an LLVM named metadata node (`llvm::NamedMDNode`). Named
  metadata nodes are module-level metadata that associate a name string
  with a list of metadata nodes. Each operand must be an `#llvm.md_node`.
  
  Note: cyclic metadata graphs are not supported. Because metadata attributes
  are represented as MLIR attributes (which form a tree), there is no way to
  express a metadata node that directly or transitively references itself.
  LLVM IR permits such cycles (e.g. `!0 = !{!0}`), but they cannot be
  represented here and will not round-trip through this op.
  
  Example:
  ```mlir
  llvm.named_metadata "foo.version" [
    #llvm.md_node<#llvm.md_const<2 : i32>,
                  #llvm.md_const<9 : i32>,
                  #llvm.md_const<0 : i32>
    >
  ]
  llvm.named_metadata "foo.kernel" [
    #llvm.md_node<
      #llvm.md_func<@my_kernel>,
      #llvm.md_node<>,
      #llvm.md_node<
        #llvm.md_node<#llvm.md_const<0 : i32>,
                      #llvm.md_string<"foo.buffer">
        >
      >
    >
  ]
  ```
  """

  OPERATION_NAME = "llvm.named_metadata"

  _ODS_REGIONS = (0, True)

  def __init__(self, metadata_name: _Union[str, _ods_ir.StringAttr], nodes: _Union[_Sequence[_ods_ir.Attribute], _ods_ir.ArrayAttr], *, 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["metadata_name"] = (metadata_name if (
    isinstance(metadata_name, _ods_ir.Attribute) or
    not _ods_ir.AttrBuilder.contains('StrAttr')) else
      _ods_ir.AttrBuilder.get('StrAttr')(metadata_name, context=_ods_context))
    attributes["nodes"] = (nodes if (
    isinstance(nodes, _ods_ir.Attribute) or
    not _ods_ir.AttrBuilder.contains('ArrayAttr')) else
      _ods_ir.AttrBuilder.get('ArrayAttr')(nodes, 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 metadata_name(self) -> _ods_ir.StringAttr:
    return self.operation.attributes["metadata_name"]

  @metadata_name.setter
  def metadata_name(self, value: _ods_ir.StringAttr):
    if value is None:
      raise ValueError("'None' not allowed as value for mandatory attributes")
    self.operation.attributes["metadata_name"] = value

  @builtins.property
  def nodes(self) -> _ods_ir.ArrayAttr:
    return self.operation.attributes["nodes"]

  @nodes.setter
  def nodes(self, value: _ods_ir.ArrayAttr):
    if value is None:
      raise ValueError("'None' not allowed as value for mandatory attributes")
    self.operation.attributes["nodes"] = value

@_ods_cext.register_op_adaptor(NamedMetadataOp)
class NamedMetadataOpAdaptor(_ods_ir.OpAdaptor):
  OPERATION_NAME = "llvm.named_metadata"

  @builtins.property
  def metadata_name(self) -> _ods_ir.StringAttr:
    return self.attributes["metadata_name"]

  @builtins.property
  def nodes(self) -> _ods_ir.ArrayAttr:
    return self.attributes["nodes"]

def named_metadata(metadata_name: _Union[str, _ods_ir.StringAttr], nodes: _Union[_Sequence[_ods_ir.Attribute], _ods_ir.ArrayAttr], *, loc: _Optional[_ods_ir.Location] = None, ip: _Optional[_ods_ir.InsertionPoint] = None) -> NamedMetadataOp:
  return NamedMetadataOp(metadata_name=metadata_name, nodes=nodes, loc=loc, ip=ip)

@_ods_cext.register_operation(_Dialect)
class NearbyintOp(_ods_ir.OpView):
  OPERATION_NAME = "llvm.intr.nearbyint"

  _ODS_REGIONS = (0, True)

  def __init__(self, in_: _ods_ir.Value, *, fastmathFlags: _Optional[_Union[_Any, _ods_ir.Attribute]] = None, results: _Optional[_Sequence[_ods_ir.Type]] = None, loc: _Optional[_ods_ir.Location] = None, ip: _Optional[_ods_ir.InsertionPoint] = None):
    operands = []
    attributes = {}
    regions = None
    operands.append(in_)
    _ods_context = _ods_get_default_loc_context(loc)
    if fastmathFlags is not None: attributes["fastmathFlags"] = (fastmathFlags if (
        isinstance(fastmathFlags, _ods_ir.Attribute) or
        not _ods_ir.AttrBuilder.contains('llvm.LLVM_FastmathFlagsAttr')) else
          _ods_ir.AttrBuilder.get('llvm.LLVM_FastmathFlagsAttr')(fastmathFlags, context=_ods_context))
    if results is None: results = [operands[0].type] * 1
    _ods_successors = None
    super().__init__(self.OPERATION_NAME, self._ODS_REGIONS, self._ODS_OPERAND_SEGMENTS, self._ODS_RESULT_SEGMENTS, attributes=attributes, results=results, operands=operands, successors=_ods_successors, regions=regions, loc=loc, ip=ip)

  @builtins.property
  def in_(self) -> _ods_ir.Value:
    return self.operation.operands[0]

  @builtins.property
  def fastmathFlags(self) -> _ods_ir.Attribute:
    return self.operation.attributes["fastmathFlags"]

  @fastmathFlags.setter
  def fastmathFlags(self, value: _ods_ir.Attribute):
    if value is None:
      raise ValueError("'None' not allowed as value for mandatory attributes")
    self.operation.attributes["fastmathFlags"] = value

  @builtins.property
  def res(self) -> _ods_ir.OpResult:
    return self.operation.results[0]

@_ods_cext.register_op_adaptor(NearbyintOp)
class NearbyintOpAdaptor(_ods_ir.OpAdaptor):
  OPERATION_NAME = "llvm.intr.nearbyint"

  @builtins.property
  def in_(self) -> _ods_ir.Value:
    return self.operands[0]

  @builtins.property
  def fastmathFlags(self) -> _ods_ir.Attribute:
    return self.attributes["fastmathFlags"]

def intr_nearbyint(in_: _ods_ir.Value, *, fastmath_flags: _Optional[_Union[_Any, _ods_ir.Attribute]] = None, results: _Optional[_Sequence[_ods_ir.Type]] = None, loc: _Optional[_ods_ir.Location] = None, ip: _Optional[_ods_ir.InsertionPoint] = None) -> _ods_ir.OpResult:
  return NearbyintOp(in_=in_, fastmathFlags=fastmath_flags, results=results, loc=loc, ip=ip).result

@_ods_cext.register_operation(_Dialect)
class NoAliasScopeDeclOp(_ods_ir.OpView):
  OPERATION_NAME = "llvm.intr.experimental.noalias.scope.decl"

  _ODS_REGIONS = (0, True)

  def __init__(self, scope: _Union[_Any, _ods_ir.Attribute], *, 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["scope"] = (scope if (
    isinstance(scope, _ods_ir.Attribute) or
    not _ods_ir.AttrBuilder.contains('LLVM_AliasScopeAttr')) else
      _ods_ir.AttrBuilder.get('LLVM_AliasScopeAttr')(scope, 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 scope(self) -> _ods_ir.Attribute:
    return self.operation.attributes["scope"]

  @scope.setter
  def scope(self, value: _ods_ir.Attribute):
    if value is None:
      raise ValueError("'None' not allowed as value for mandatory attributes")
    self.operation.attributes["scope"] = value

@_ods_cext.register_op_adaptor(NoAliasScopeDeclOp)
class NoAliasScopeDeclOpAdaptor(_ods_ir.OpAdaptor):
  OPERATION_NAME = "llvm.intr.experimental.noalias.scope.decl"

  @builtins.property
  def scope(self) -> _ods_ir.Attribute:
    return self.attributes["scope"]

def intr_experimental_noalias_scope_decl(scope: _Union[_Any, _ods_ir.Attribute], *, loc: _Optional[_ods_ir.Location] = None, ip: _Optional[_ods_ir.InsertionPoint] = None) -> NoAliasScopeDeclOp:
  return NoAliasScopeDeclOp(scope=scope, loc=loc, ip=ip)

@_ods_cext.register_operation(_Dialect)
class NoneTokenOp(_ods_ir.OpView):
  r"""
  Unlike LLVM IR, MLIR does not have first-class token values. They must be
  explicitly created as SSA values using `llvm.mlir.none`. This operation has
  no operands or attributes, and returns a none token value of a wrapped LLVM IR
  pointer type.
  
  Examples:
  
  ```mlir
  %0 = llvm.mlir.none : !llvm.token
  ```
  """

  OPERATION_NAME = "llvm.mlir.none"

  _ODS_REGIONS = (0, True)

  def __init__(self, *, results: _Optional[_Sequence[_ods_ir.Type]] = 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)
    _ods_successors = None
    super().__init__(self.OPERATION_NAME, self._ODS_REGIONS, self._ODS_OPERAND_SEGMENTS, self._ODS_RESULT_SEGMENTS, attributes=attributes, results=results, operands=operands, successors=_ods_successors, regions=regions, loc=loc, ip=ip)

  @builtins.property
  def res(self) -> _ods_ir.OpResult:
    return self.operation.results[0]

@_ods_cext.register_op_adaptor(NoneTokenOp)
class NoneTokenOpAdaptor(_ods_ir.OpAdaptor):
  OPERATION_NAME = "llvm.mlir.none"

def mlir_none(*, results: _Optional[_Sequence[_ods_ir.Type]] = None, loc: _Optional[_ods_ir.Location] = None, ip: _Optional[_ods_ir.InsertionPoint] = None) -> _ods_ir.OpResult:
  return NoneTokenOp(results=results, loc=loc, ip=ip).result

@_ods_cext.register_operation(_Dialect)
class OrOp(_ods_ir.OpView):
  OPERATION_NAME = "llvm.or"

  _ODS_REGIONS = (0, True)

  def __init__(self, lhs: _ods_ir.Value, rhs: _ods_ir.Value, *, isDisjoint: _Optional[bool] = None, results: _Optional[_Sequence[_ods_ir.Type]] = None, loc: _Optional[_ods_ir.Location] = None, ip: _Optional[_ods_ir.InsertionPoint] = None):
    operands = []
    attributes = {}
    regions = None
    operands.append(lhs)
    operands.append(rhs)
    _ods_context = _ods_get_default_loc_context(loc)
    if bool(isDisjoint): attributes["isDisjoint"] = _ods_ir.UnitAttr.get(
      _ods_get_default_loc_context(loc))
    if results is None: results = [operands[0].type] * 1
    _ods_successors = None
    super().__init__(self.OPERATION_NAME, self._ODS_REGIONS, self._ODS_OPERAND_SEGMENTS, self._ODS_RESULT_SEGMENTS, attributes=attributes, results=results, operands=operands, successors=_ods_successors, regions=regions, loc=loc, ip=ip)

  @builtins.property
  def lhs(self) -> _ods_ir.Value:
    return self.operation.operands[0]

  @builtins.property
  def rhs(self) -> _ods_ir.Value:
    return self.operation.operands[1]

  @builtins.property
  def isDisjoint(self) -> bool:
    return "isDisjoint" in self.operation.attributes

  @isDisjoint.setter
  def isDisjoint(self, value):
    if bool(value):
      self.operation.attributes["isDisjoint"] = _ods_ir.UnitAttr.get()
    elif "isDisjoint" in self.operation.attributes:
      del self.operation.attributes["isDisjoint"]

  @isDisjoint.deleter
  def isDisjoint(self):
    del self.operation.attributes["isDisjoint"]

  @builtins.property
  def res(self) -> _ods_ir.OpResult:
    return self.operation.results[0]

@_ods_cext.register_op_adaptor(OrOp)
class OrOpAdaptor(_ods_ir.OpAdaptor):
  OPERATION_NAME = "llvm.or"

  @builtins.property
  def lhs(self) -> _ods_ir.Value:
    return self.operands[0]

  @builtins.property
  def rhs(self) -> _ods_ir.Value:
    return self.operands[1]

  @builtins.property
  def isDisjoint(self) -> bool:
    return "isDisjoint" in self.attributes

def or_(lhs: _ods_ir.Value, rhs: _ods_ir.Value, *, is_disjoint: _Optional[bool] = None, results: _Optional[_Sequence[_ods_ir.Type]] = None, loc: _Optional[_ods_ir.Location] = None, ip: _Optional[_ods_ir.InsertionPoint] = None) -> _ods_ir.OpResult:
  return OrOp(lhs=lhs, rhs=rhs, isDisjoint=is_disjoint, results=results, loc=loc, ip=ip).result

@_ods_cext.register_operation(_Dialect)
class PoisonOp(_ods_ir.OpView):
  r"""
  Unlike LLVM IR, MLIR does not have first-class poison values. Such values
  must be created as SSA values using `llvm.mlir.poison`. This operation has
  no operands or attributes. It creates a poison value of the specified LLVM
  IR dialect type.
  
  Example:
  
  ```mlir
  // Create a poison value for a structure with a 32-bit integer followed
  // by a float.
  %0 = llvm.mlir.poison : !llvm.struct<(i32, f32)>
  ```
  """

  OPERATION_NAME = "llvm.mlir.poison"

  _ODS_REGIONS = (0, True)

  def __init__(self, res: _ods_ir.Type, *, 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 = []
    results.append(res)
    _ods_successors = None
    super().__init__(self.OPERATION_NAME, self._ODS_REGIONS, self._ODS_OPERAND_SEGMENTS, self._ODS_RESULT_SEGMENTS, attributes=attributes, results=results, operands=operands, successors=_ods_successors, regions=regions, loc=loc, ip=ip)

  @builtins.property
  def res(self) -> _ods_ir.OpResult:
    return self.operation.results[0]

@_ods_cext.register_op_adaptor(PoisonOp)
class PoisonOpAdaptor(_ods_ir.OpAdaptor):
  OPERATION_NAME = "llvm.mlir.poison"

def mlir_poison(res: _ods_ir.Type, *, loc: _Optional[_ods_ir.Location] = None, ip: _Optional[_ods_ir.InsertionPoint] = None) -> _ods_ir.OpResult:
  return PoisonOp(res=res, loc=loc, ip=ip).result

@_ods_cext.register_operation(_Dialect)
class PowIOp(_ods_ir.OpView):
  OPERATION_NAME = "llvm.intr.powi"

  _ODS_REGIONS = (0, True)

  def __init__(self, res: _ods_ir.Type, val: _ods_ir.Value, power: _ods_ir.Value[_ods_ir.IntegerType], *, fastmathFlags: _Optional[_Union[_Any, _ods_ir.Attribute]] = None, loc: _Optional[_ods_ir.Location] = None, ip: _Optional[_ods_ir.InsertionPoint] = None):
    operands = []
    attributes = {}
    regions = None
    operands.append(val)
    operands.append(power)
    _ods_context = _ods_get_default_loc_context(loc)
    if fastmathFlags is not None: attributes["fastmathFlags"] = (fastmathFlags if (
        isinstance(fastmathFlags, _ods_ir.Attribute) or
        not _ods_ir.AttrBuilder.contains('llvm.LLVM_FastmathFlagsAttr')) else
          _ods_ir.AttrBuilder.get('llvm.LLVM_FastmathFlagsAttr')(fastmathFlags, 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 val(self) -> _ods_ir.Value:
    return self.operation.operands[0]

  @builtins.property
  def power(self) -> _ods_ir.Value[_ods_ir.IntegerType]:
    return self.operation.operands[1]

  @builtins.property
  def fastmathFlags(self) -> _ods_ir.Attribute:
    return self.operation.attributes["fastmathFlags"]

  @fastmathFlags.setter
  def fastmathFlags(self, value: _ods_ir.Attribute):
    if value is None:
      raise ValueError("'None' not allowed as value for mandatory attributes")
    self.operation.attributes["fastmathFlags"] = value

  @builtins.property
  def res(self) -> _ods_ir.OpResult:
    return self.operation.results[0]

@_ods_cext.register_op_adaptor(PowIOp)
class PowIOpAdaptor(_ods_ir.OpAdaptor):
  OPERATION_NAME = "llvm.intr.powi"

  @builtins.property
  def val(self) -> _ods_ir.Value:
    return self.operands[0]

  @builtins.property
  def power(self) -> _ods_ir.Value[_ods_ir.IntegerType]:
    return self.operands[1]

  @builtins.property
  def fastmathFlags(self) -> _ods_ir.Attribute:
    return self.attributes["fastmathFlags"]

def intr_powi(res: _ods_ir.Type, val: _ods_ir.Value, power: _ods_ir.Value[_ods_ir.IntegerType], *, fastmath_flags: _Optional[_Union[_Any, _ods_ir.Attribute]] = None, loc: _Optional[_ods_ir.Location] = None, ip: _Optional[_ods_ir.InsertionPoint] = None) -> _ods_ir.OpResult:
  return PowIOp(res=res, val=val, power=power, fastmathFlags=fastmath_flags, loc=loc, ip=ip).result

@_ods_cext.register_operation(_Dialect)
class PowOp(_ods_ir.OpView):
  OPERATION_NAME = "llvm.intr.pow"

  _ODS_REGIONS = (0, True)

  def __init__(self, a: _ods_ir.Value, b: _ods_ir.Value, *, fastmathFlags: _Optional[_Union[_Any, _ods_ir.Attribute]] = None, results: _Optional[_Sequence[_ods_ir.Type]] = None, loc: _Optional[_ods_ir.Location] = None, ip: _Optional[_ods_ir.InsertionPoint] = None):
    operands = []
    attributes = {}
    regions = None
    operands.append(a)
    operands.append(b)
    _ods_context = _ods_get_default_loc_context(loc)
    if fastmathFlags is not None: attributes["fastmathFlags"] = (fastmathFlags if (
        isinstance(fastmathFlags, _ods_ir.Attribute) or
        not _ods_ir.AttrBuilder.contains('llvm.LLVM_FastmathFlagsAttr')) else
          _ods_ir.AttrBuilder.get('llvm.LLVM_FastmathFlagsAttr')(fastmathFlags, context=_ods_context))
    if results is None: results = [operands[0].type] * 1
    _ods_successors = None
    super().__init__(self.OPERATION_NAME, self._ODS_REGIONS, self._ODS_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 fastmathFlags(self) -> _ods_ir.Attribute:
    return self.operation.attributes["fastmathFlags"]

  @fastmathFlags.setter
  def fastmathFlags(self, value: _ods_ir.Attribute):
    if value is None:
      raise ValueError("'None' not allowed as value for mandatory attributes")
    self.operation.attributes["fastmathFlags"] = value

  @builtins.property
  def res(self) -> _ods_ir.OpResult:
    return self.operation.results[0]

@_ods_cext.register_op_adaptor(PowOp)
class PowOpAdaptor(_ods_ir.OpAdaptor):
  OPERATION_NAME = "llvm.intr.pow"

  @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 fastmathFlags(self) -> _ods_ir.Attribute:
    return self.attributes["fastmathFlags"]

def intr_pow(a: _ods_ir.Value, b: _ods_ir.Value, *, fastmath_flags: _Optional[_Union[_Any, _ods_ir.Attribute]] = None, results: _Optional[_Sequence[_ods_ir.Type]] = None, loc: _Optional[_ods_ir.Location] = None, ip: _Optional[_ods_ir.InsertionPoint] = None) -> _ods_ir.OpResult:
  return PowOp(a=a, b=b, fastmathFlags=fastmath_flags, results=results, loc=loc, ip=ip).result

@_ods_cext.register_operation(_Dialect)
class Prefetch(_ods_ir.OpView):
  OPERATION_NAME = "llvm.intr.prefetch"

  _ODS_REGIONS = (0, True)

  def __init__(self, addr: _ods_ir.Value, rw: _Union[int, _ods_ir.IntegerAttr], hint: _Union[int, _ods_ir.IntegerAttr], cache: _Union[int, _ods_ir.IntegerAttr], *, loc: _Optional[_ods_ir.Location] = None, ip: _Optional[_ods_ir.InsertionPoint] = None):
    operands = []
    attributes = {}
    regions = None
    operands.append(addr)
    _ods_context = _ods_get_default_loc_context(loc)
    attributes["rw"] = (rw if (
    isinstance(rw, _ods_ir.Attribute) or
    not _ods_ir.AttrBuilder.contains('I32Attr')) else
      _ods_ir.AttrBuilder.get('I32Attr')(rw, context=_ods_context))
    attributes["hint"] = (hint if (
    isinstance(hint, _ods_ir.Attribute) or
    not _ods_ir.AttrBuilder.contains('I32Attr')) else
      _ods_ir.AttrBuilder.get('I32Attr')(hint, context=_ods_context))
    attributes["cache"] = (cache if (
    isinstance(cache, _ods_ir.Attribute) or
    not _ods_ir.AttrBuilder.contains('I32Attr')) else
      _ods_ir.AttrBuilder.get('I32Attr')(cache, 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 addr(self) -> _ods_ir.Value:
    return self.operation.operands[0]

  @builtins.property
  def rw(self) -> _ods_ir.IntegerAttr:
    return self.operation.attributes["rw"]

  @rw.setter
  def rw(self, value: _ods_ir.IntegerAttr):
    if value is None:
      raise ValueError("'None' not allowed as value for mandatory attributes")
    self.operation.attributes["rw"] = value

  @builtins.property
  def hint(self) -> _ods_ir.IntegerAttr:
    return self.operation.attributes["hint"]

  @hint.setter
  def hint(self, value: _ods_ir.IntegerAttr):
    if value is None:
      raise ValueError("'None' not allowed as value for mandatory attributes")
    self.operation.attributes["hint"] = value

  @builtins.property
  def cache(self) -> _ods_ir.IntegerAttr:
    return self.operation.attributes["cache"]

  @cache.setter
  def cache(self, value: _ods_ir.IntegerAttr):
    if value is None:
      raise ValueError("'None' not allowed as value for mandatory attributes")
    self.operation.attributes["cache"] = value

@_ods_cext.register_op_adaptor(Prefetch)
class PrefetchAdaptor(_ods_ir.OpAdaptor):
  OPERATION_NAME = "llvm.intr.prefetch"

  @builtins.property
  def addr(self) -> _ods_ir.Value:
    return self.operands[0]

  @builtins.property
  def rw(self) -> _ods_ir.IntegerAttr:
    return self.attributes["rw"]

  @builtins.property
  def hint(self) -> _ods_ir.IntegerAttr:
    return self.attributes["hint"]

  @builtins.property
  def cache(self) -> _ods_ir.IntegerAttr:
    return self.attributes["cache"]

def intr_prefetch(addr: _ods_ir.Value, rw: _Union[int, _ods_ir.IntegerAttr], hint: _Union[int, _ods_ir.IntegerAttr], cache: _Union[int, _ods_ir.IntegerAttr], *, loc: _Optional[_ods_ir.Location] = None, ip: _Optional[_ods_ir.InsertionPoint] = None) -> Prefetch:
  return Prefetch(addr=addr, rw=rw, hint=hint, cache=cache, loc=loc, ip=ip)

@_ods_cext.register_operation(_Dialect)
class PtrAnnotation(_ods_ir.OpView):
  OPERATION_NAME = "llvm.intr.ptr.annotation"

  _ODS_REGIONS = (0, True)

  def __init__(self, ptr: _ods_ir.Value, annotation: _ods_ir.Value, fileName: _ods_ir.Value, line: _ods_ir.Value[_ods_ir.IntegerType], attr: _ods_ir.Value, *, results: _Optional[_Sequence[_ods_ir.Type]] = None, loc: _Optional[_ods_ir.Location] = None, ip: _Optional[_ods_ir.InsertionPoint] = None):
    operands = []
    attributes = {}
    regions = None
    operands.append(ptr)
    operands.append(annotation)
    operands.append(fileName)
    operands.append(line)
    operands.append(attr)
    _ods_context = _ods_get_default_loc_context(loc)
    _ods_successors = None
    super().__init__(self.OPERATION_NAME, self._ODS_REGIONS, self._ODS_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 annotation(self) -> _ods_ir.Value:
    return self.operation.operands[1]

  @builtins.property
  def fileName(self) -> _ods_ir.Value:
    return self.operation.operands[2]

  @builtins.property
  def line(self) -> _ods_ir.Value[_ods_ir.IntegerType]:
    return self.operation.operands[3]

  @builtins.property
  def attr(self) -> _ods_ir.Value:
    return self.operation.operands[4]

  @builtins.property
  def res(self) -> _ods_ir.OpResult:
    return self.operation.results[0]

@_ods_cext.register_op_adaptor(PtrAnnotation)
class PtrAnnotationAdaptor(_ods_ir.OpAdaptor):
  OPERATION_NAME = "llvm.intr.ptr.annotation"

  @builtins.property
  def ptr(self) -> _ods_ir.Value:
    return self.operands[0]

  @builtins.property
  def annotation(self) -> _ods_ir.Value:
    return self.operands[1]

  @builtins.property
  def fileName(self) -> _ods_ir.Value:
    return self.operands[2]

  @builtins.property
  def line(self) -> _ods_ir.Value[_ods_ir.IntegerType]:
    return self.operands[3]

  @builtins.property
  def attr(self) -> _ods_ir.Value:
    return self.operands[4]

def intr_ptr_annotation(ptr: _ods_ir.Value, annotation: _ods_ir.Value, file_name: _ods_ir.Value, line: _ods_ir.Value[_ods_ir.IntegerType], attr: _ods_ir.Value, *, results: _Optional[_Sequence[_ods_ir.Type]] = None, loc: _Optional[_ods_ir.Location] = None, ip: _Optional[_ods_ir.InsertionPoint] = None) -> _ods_ir.OpResult:
  return PtrAnnotation(ptr=ptr, annotation=annotation, fileName=file_name, line=line, attr=attr, results=results, loc=loc, ip=ip).result

@_ods_cext.register_operation(_Dialect)
class PtrMaskOp(_ods_ir.OpView):
  OPERATION_NAME = "llvm.intr.ptrmask"

  _ODS_REGIONS = (0, True)

  def __init__(self, ptr: _ods_ir.Value, mask: _ods_ir.Value, *, results: _Optional[_Sequence[_ods_ir.Type]] = None, loc: _Optional[_ods_ir.Location] = None, ip: _Optional[_ods_ir.InsertionPoint] = None):
    operands = []
    attributes = {}
    regions = None
    operands.append(ptr)
    operands.append(mask)
    _ods_context = _ods_get_default_loc_context(loc)
    _ods_successors = None
    super().__init__(self.OPERATION_NAME, self._ODS_REGIONS, self._ODS_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 mask(self) -> _ods_ir.Value:
    return self.operation.operands[1]

  @builtins.property
  def res(self) -> _ods_ir.OpResult:
    return self.operation.results[0]

@_ods_cext.register_op_adaptor(PtrMaskOp)
class PtrMaskOpAdaptor(_ods_ir.OpAdaptor):
  OPERATION_NAME = "llvm.intr.ptrmask"

  @builtins.property
  def ptr(self) -> _ods_ir.Value:
    return self.operands[0]

  @builtins.property
  def mask(self) -> _ods_ir.Value:
    return self.operands[1]

def intr_ptrmask(ptr: _ods_ir.Value, mask: _ods_ir.Value, *, results: _Optional[_Sequence[_ods_ir.Type]] = None, loc: _Optional[_ods_ir.Location] = None, ip: _Optional[_ods_ir.InsertionPoint] = None) -> _ods_ir.OpResult:
  return PtrMaskOp(ptr=ptr, mask=mask, results=results, loc=loc, ip=ip).result

@_ods_cext.register_operation(_Dialect)
class PtrToAddrOp(_ods_ir.OpView):
  r"""
  Operation mirroring LLVM's `ptrtoaddr` operation.
  
  This operation casts a pointer (or a vector of pointers) to an integer
  (or a vector of integers) without capturing the provenance of the pointer.
  Therefore, an integer returned or derived from `llvm.ptrtoaddr` does not
  create a legal-to-access pointer when used in `llvm.inttoptr`.
  Code that only cares about the address value of a pointer
  (e.g. pointer subtraction) should prefer `llvm.ptrtoaddr` over
  `llvm.ptrtoint`.
  
  The integer type used as the result type is required to be equal in width
  to the pointer type as specified in the data layout.
  Use the `llvm-target-to-data-layout` pass to derive an MLIR datalayout from
  an LLVM datalayout.
  
  Examples:
  ```
  llvm.func @default_64_bit_ptrtoaddr(%arg0 : !llvm.ptr) -> i64 {
    %0 = llvm.ptrtoaddr %arg0 : !llvm.ptr to i64
    llvm.return i64
  }
  
  module attributes { dlti.dl_spec = #dlti.dl_spec<
    #dlti.dl_entry<!llvm.ptr, dense<[/*size=*/32, 32, 64]> : vector<3xi64>>
  >} {
    llvm.func @datalayout_32_bit(%arg0 : !llvm.ptr) -> i32 {
      %0 = llvm.ptrtoaddr %arg0 : !llvm.ptr to i32
      llvm.return %0 : i32
    }
  }
  ```
  """

  OPERATION_NAME = "llvm.ptrtoaddr"

  _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(PtrToAddrOp)
class PtrToAddrOpAdaptor(_ods_ir.OpAdaptor):
  OPERATION_NAME = "llvm.ptrtoaddr"

  @builtins.property
  def arg(self) -> _ods_ir.Value:
    return self.operands[0]

def ptrtoaddr(res: _ods_ir.Type, arg: _ods_ir.Value, *, loc: _Optional[_ods_ir.Location] = None, ip: _Optional[_ods_ir.InsertionPoint] = None) -> _ods_ir.OpResult:
  return PtrToAddrOp(res=res, arg=arg, loc=loc, ip=ip).result

@_ods_cext.register_operation(_Dialect)
class PtrToIntOp(_ods_ir.OpView):
  OPERATION_NAME = "llvm.ptrtoint"

  _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(PtrToIntOp)
class PtrToIntOpAdaptor(_ods_ir.OpAdaptor):
  OPERATION_NAME = "llvm.ptrtoint"

  @builtins.property
  def arg(self) -> _ods_ir.Value:
    return self.operands[0]

def ptrtoint(res: _ods_ir.Type, arg: _ods_ir.Value, *, loc: _Optional[_ods_ir.Location] = None, ip: _Optional[_ods_ir.InsertionPoint] = None) -> _ods_ir.OpResult:
  return PtrToIntOp(res=res, arg=arg, loc=loc, ip=ip).result

@_ods_cext.register_operation(_Dialect)
class ResumeOp(_ods_ir.OpView):
  OPERATION_NAME = "llvm.resume"

  _ODS_REGIONS = (0, True)

  def __init__(self, value: _ods_ir.Value, *, loc: _Optional[_ods_ir.Location] = None, ip: _Optional[_ods_ir.InsertionPoint] = None):
    operands = []
    attributes = {}
    regions = None
    operands.append(value)
    _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 value(self) -> _ods_ir.Value:
    return self.operation.operands[0]

@_ods_cext.register_op_adaptor(ResumeOp)
class ResumeOpAdaptor(_ods_ir.OpAdaptor):
  OPERATION_NAME = "llvm.resume"

  @builtins.property
  def value(self) -> _ods_ir.Value:
    return self.operands[0]

def resume(value: _ods_ir.Value, *, loc: _Optional[_ods_ir.Location] = None, ip: _Optional[_ods_ir.InsertionPoint] = None) -> ResumeOp:
  return ResumeOp(value=value, loc=loc, ip=ip)

@_ods_cext.register_operation(_Dialect)
class ReturnOp(_ods_ir.OpView):
  OPERATION_NAME = "llvm.return"

  _ODS_REGIONS = (0, True)

  def __init__(self, *, arg: _Optional[_ods_ir.Value] = None, loc: _Optional[_ods_ir.Location] = None, ip: _Optional[_ods_ir.InsertionPoint] = None):
    operands = []
    attributes = {}
    regions = None
    if arg is not None: operands.append(arg)
    _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 arg(self) -> _Optional[_ods_ir.Value]:
    return None if len(self.operation.operands) < 1 else self.operation.operands[0]

@_ods_cext.register_op_adaptor(ReturnOp)
class ReturnOpAdaptor(_ods_ir.OpAdaptor):
  OPERATION_NAME = "llvm.return"

  @builtins.property
  def arg(self) -> _Optional[_ods_ir.Value]:
    return None if len(self.operands) < 1 else self.operands[0]

def return_(*, arg: _Optional[_ods_ir.Value] = None, loc: _Optional[_ods_ir.Location] = None, ip: _Optional[_ods_ir.InsertionPoint] = None) -> ReturnOp:
  return ReturnOp(arg=arg, loc=loc, ip=ip)

@_ods_cext.register_operation(_Dialect)
class RintOp(_ods_ir.OpView):
  OPERATION_NAME = "llvm.intr.rint"

  _ODS_REGIONS = (0, True)

  def __init__(self, in_: _ods_ir.Value, *, fastmathFlags: _Optional[_Union[_Any, _ods_ir.Attribute]] = None, results: _Optional[_Sequence[_ods_ir.Type]] = None, loc: _Optional[_ods_ir.Location] = None, ip: _Optional[_ods_ir.InsertionPoint] = None):
    operands = []
    attributes = {}
    regions = None
    operands.append(in_)
    _ods_context = _ods_get_default_loc_context(loc)
    if fastmathFlags is not None: attributes["fastmathFlags"] = (fastmathFlags if (
        isinstance(fastmathFlags, _ods_ir.Attribute) or
        not _ods_ir.AttrBuilder.contains('llvm.LLVM_FastmathFlagsAttr')) else
          _ods_ir.AttrBuilder.get('llvm.LLVM_FastmathFlagsAttr')(fastmathFlags, context=_ods_context))
    if results is None: results = [operands[0].type] * 1
    _ods_successors = None
    super().__init__(self.OPERATION_NAME, self._ODS_REGIONS, self._ODS_OPERAND_SEGMENTS, self._ODS_RESULT_SEGMENTS, attributes=attributes, results=results, operands=operands, successors=_ods_successors, regions=regions, loc=loc, ip=ip)

  @builtins.property
  def in_(self) -> _ods_ir.Value:
    return self.operation.operands[0]

  @builtins.property
  def fastmathFlags(self) -> _ods_ir.Attribute:
    return self.operation.attributes["fastmathFlags"]

  @fastmathFlags.setter
  def fastmathFlags(self, value: _ods_ir.Attribute):
    if value is None:
      raise ValueError("'None' not allowed as value for mandatory attributes")
    self.operation.attributes["fastmathFlags"] = value

  @builtins.property
  def res(self) -> _ods_ir.OpResult:
    return self.operation.results[0]

@_ods_cext.register_op_adaptor(RintOp)
class RintOpAdaptor(_ods_ir.OpAdaptor):
  OPERATION_NAME = "llvm.intr.rint"

  @builtins.property
  def in_(self) -> _ods_ir.Value:
    return self.operands[0]

  @builtins.property
  def fastmathFlags(self) -> _ods_ir.Attribute:
    return self.attributes["fastmathFlags"]

def intr_rint(in_: _ods_ir.Value, *, fastmath_flags: _Optional[_Union[_Any, _ods_ir.Attribute]] = None, results: _Optional[_Sequence[_ods_ir.Type]] = None, loc: _Optional[_ods_ir.Location] = None, ip: _Optional[_ods_ir.InsertionPoint] = None) -> _ods_ir.OpResult:
  return RintOp(in_=in_, fastmathFlags=fastmath_flags, results=results, loc=loc, ip=ip).result

@_ods_cext.register_operation(_Dialect)
class RoundEvenOp(_ods_ir.OpView):
  OPERATION_NAME = "llvm.intr.roundeven"

  _ODS_REGIONS = (0, True)

  def __init__(self, in_: _ods_ir.Value, *, fastmathFlags: _Optional[_Union[_Any, _ods_ir.Attribute]] = None, results: _Optional[_Sequence[_ods_ir.Type]] = None, loc: _Optional[_ods_ir.Location] = None, ip: _Optional[_ods_ir.InsertionPoint] = None):
    operands = []
    attributes = {}
    regions = None
    operands.append(in_)
    _ods_context = _ods_get_default_loc_context(loc)
    if fastmathFlags is not None: attributes["fastmathFlags"] = (fastmathFlags if (
        isinstance(fastmathFlags, _ods_ir.Attribute) or
        not _ods_ir.AttrBuilder.contains('llvm.LLVM_FastmathFlagsAttr')) else
          _ods_ir.AttrBuilder.get('llvm.LLVM_FastmathFlagsAttr')(fastmathFlags, context=_ods_context))
    if results is None: results = [operands[0].type] * 1
    _ods_successors = None
    super().__init__(self.OPERATION_NAME, self._ODS_REGIONS, self._ODS_OPERAND_SEGMENTS, self._ODS_RESULT_SEGMENTS, attributes=attributes, results=results, operands=operands, successors=_ods_successors, regions=regions, loc=loc, ip=ip)

  @builtins.property
  def in_(self) -> _ods_ir.Value:
    return self.operation.operands[0]

  @builtins.property
  def fastmathFlags(self) -> _ods_ir.Attribute:
    return self.operation.attributes["fastmathFlags"]

  @fastmathFlags.setter
  def fastmathFlags(self, value: _ods_ir.Attribute):
    if value is None:
      raise ValueError("'None' not allowed as value for mandatory attributes")
    self.operation.attributes["fastmathFlags"] = value

  @builtins.property
  def res(self) -> _ods_ir.OpResult:
    return self.operation.results[0]

@_ods_cext.register_op_adaptor(RoundEvenOp)
class RoundEvenOpAdaptor(_ods_ir.OpAdaptor):
  OPERATION_NAME = "llvm.intr.roundeven"

  @builtins.property
  def in_(self) -> _ods_ir.Value:
    return self.operands[0]

  @builtins.property
  def fastmathFlags(self) -> _ods_ir.Attribute:
    return self.attributes["fastmathFlags"]

def intr_roundeven(in_: _ods_ir.Value, *, fastmath_flags: _Optional[_Union[_Any, _ods_ir.Attribute]] = None, results: _Optional[_Sequence[_ods_ir.Type]] = None, loc: _Optional[_ods_ir.Location] = None, ip: _Optional[_ods_ir.InsertionPoint] = None) -> _ods_ir.OpResult:
  return RoundEvenOp(in_=in_, fastmathFlags=fastmath_flags, results=results, loc=loc, ip=ip).result

@_ods_cext.register_operation(_Dialect)
class RoundOp(_ods_ir.OpView):
  OPERATION_NAME = "llvm.intr.round"

  _ODS_REGIONS = (0, True)

  def __init__(self, in_: _ods_ir.Value, *, fastmathFlags: _Optional[_Union[_Any, _ods_ir.Attribute]] = None, results: _Optional[_Sequence[_ods_ir.Type]] = None, loc: _Optional[_ods_ir.Location] = None, ip: _Optional[_ods_ir.InsertionPoint] = None):
    operands = []
    attributes = {}
    regions = None
    operands.append(in_)
    _ods_context = _ods_get_default_loc_context(loc)
    if fastmathFlags is not None: attributes["fastmathFlags"] = (fastmathFlags if (
        isinstance(fastmathFlags, _ods_ir.Attribute) or
        not _ods_ir.AttrBuilder.contains('llvm.LLVM_FastmathFlagsAttr')) else
          _ods_ir.AttrBuilder.get('llvm.LLVM_FastmathFlagsAttr')(fastmathFlags, context=_ods_context))
    if results is None: results = [operands[0].type] * 1
    _ods_successors = None
    super().__init__(self.OPERATION_NAME, self._ODS_REGIONS, self._ODS_OPERAND_SEGMENTS, self._ODS_RESULT_SEGMENTS, attributes=attributes, results=results, operands=operands, successors=_ods_successors, regions=regions, loc=loc, ip=ip)

  @builtins.property
  def in_(self) -> _ods_ir.Value:
    return self.operation.operands[0]

  @builtins.property
  def fastmathFlags(self) -> _ods_ir.Attribute:
    return self.operation.attributes["fastmathFlags"]

  @fastmathFlags.setter
  def fastmathFlags(self, value: _ods_ir.Attribute):
    if value is None:
      raise ValueError("'None' not allowed as value for mandatory attributes")
    self.operation.attributes["fastmathFlags"] = value

  @builtins.property
  def res(self) -> _ods_ir.OpResult:
    return self.operation.results[0]

@_ods_cext.register_op_adaptor(RoundOp)
class RoundOpAdaptor(_ods_ir.OpAdaptor):
  OPERATION_NAME = "llvm.intr.round"

  @builtins.property
  def in_(self) -> _ods_ir.Value:
    return self.operands[0]

  @builtins.property
  def fastmathFlags(self) -> _ods_ir.Attribute:
    return self.attributes["fastmathFlags"]

def intr_round(in_: _ods_ir.Value, *, fastmath_flags: _Optional[_Union[_Any, _ods_ir.Attribute]] = None, results: _Optional[_Sequence[_ods_ir.Type]] = None, loc: _Optional[_ods_ir.Location] = None, ip: _Optional[_ods_ir.InsertionPoint] = None) -> _ods_ir.OpResult:
  return RoundOp(in_=in_, fastmathFlags=fastmath_flags, results=results, loc=loc, ip=ip).result

@_ods_cext.register_operation(_Dialect)
class SAddSat(_ods_ir.OpView):
  OPERATION_NAME = "llvm.intr.sadd.sat"

  _ODS_REGIONS = (0, True)

  def __init__(self, a: _ods_ir.Value, b: _ods_ir.Value, *, results: _Optional[_Sequence[_ods_ir.Type]] = None, loc: _Optional[_ods_ir.Location] = None, ip: _Optional[_ods_ir.InsertionPoint] = None):
    operands = []
    attributes = {}
    regions = None
    operands.append(a)
    operands.append(b)
    _ods_context = _ods_get_default_loc_context(loc)
    if results is None: results = [operands[0].type] * 1
    _ods_successors = None
    super().__init__(self.OPERATION_NAME, self._ODS_REGIONS, self._ODS_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 res(self) -> _ods_ir.OpResult:
    return self.operation.results[0]

@_ods_cext.register_op_adaptor(SAddSat)
class SAddSatAdaptor(_ods_ir.OpAdaptor):
  OPERATION_NAME = "llvm.intr.sadd.sat"

  @builtins.property
  def a(self) -> _ods_ir.Value:
    return self.operands[0]

  @builtins.property
  def b(self) -> _ods_ir.Value:
    return self.operands[1]

def intr_sadd_sat(a: _ods_ir.Value, b: _ods_ir.Value, *, results: _Optional[_Sequence[_ods_ir.Type]] = None, loc: _Optional[_ods_ir.Location] = None, ip: _Optional[_ods_ir.InsertionPoint] = None) -> _ods_ir.OpResult:
  return SAddSat(a=a, b=b, results=results, loc=loc, ip=ip).result

@_ods_cext.register_operation(_Dialect)
class SAddWithOverflowOp(_ods_ir.OpView):
  OPERATION_NAME = "llvm.intr.sadd.with.overflow"

  _ODS_REGIONS = (0, True)

  def __init__(self, res: _ods_ir.Type, _gen_arg_0: _ods_ir.Value, _gen_arg_1: _ods_ir.Value, *, loc: _Optional[_ods_ir.Location] = None, ip: _Optional[_ods_ir.InsertionPoint] = None):
    operands = []
    attributes = {}
    regions = None
    operands.append(_gen_arg_0)
    operands.append(_gen_arg_1)
    _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 res(self) -> _ods_ir.OpResult:
    return self.operation.results[0]

@_ods_cext.register_op_adaptor(SAddWithOverflowOp)
class SAddWithOverflowOpAdaptor(_ods_ir.OpAdaptor):
  OPERATION_NAME = "llvm.intr.sadd.with.overflow"

def intr_sadd_with_overflow(res: _ods_ir.Type, _gen_arg_0: _ods_ir.Value, _gen_arg_1: _ods_ir.Value, *, loc: _Optional[_ods_ir.Location] = None, ip: _Optional[_ods_ir.InsertionPoint] = None) -> _ods_ir.OpResult:
  return SAddWithOverflowOp(res=res, _gen_arg_0=_gen_arg_0, _gen_arg_1=_gen_arg_1, loc=loc, ip=ip).result

@_ods_cext.register_operation(_Dialect)
class SCmpOp(_ods_ir.OpView):
  OPERATION_NAME = "llvm.intr.scmp"

  _ODS_REGIONS = (0, True)

  def __init__(self, res: _ods_ir.Type, a: _ods_ir.Value, b: _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)
    _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 res(self) -> _ods_ir.OpResult:
    return self.operation.results[0]

@_ods_cext.register_op_adaptor(SCmpOp)
class SCmpOpAdaptor(_ods_ir.OpAdaptor):
  OPERATION_NAME = "llvm.intr.scmp"

  @builtins.property
  def a(self) -> _ods_ir.Value:
    return self.operands[0]

  @builtins.property
  def b(self) -> _ods_ir.Value:
    return self.operands[1]

def intr_scmp(res: _ods_ir.Type, a: _ods_ir.Value, b: _ods_ir.Value, *, loc: _Optional[_ods_ir.Location] = None, ip: _Optional[_ods_ir.InsertionPoint] = None) -> _ods_ir.OpResult:
  return SCmpOp(res=res, a=a, b=b, loc=loc, ip=ip).result

@_ods_cext.register_operation(_Dialect)
class SDivOp(_ods_ir.OpView):
  OPERATION_NAME = "llvm.sdiv"

  _ODS_REGIONS = (0, True)

  def __init__(self, lhs: _ods_ir.Value, rhs: _ods_ir.Value, *, isExact: _Optional[bool] = None, results: _Optional[_Sequence[_ods_ir.Type]] = None, loc: _Optional[_ods_ir.Location] = None, ip: _Optional[_ods_ir.InsertionPoint] = None):
    operands = []
    attributes = {}
    regions = None
    operands.append(lhs)
    operands.append(rhs)
    _ods_context = _ods_get_default_loc_context(loc)
    if bool(isExact): attributes["isExact"] = _ods_ir.UnitAttr.get(
      _ods_get_default_loc_context(loc))
    if results is None: results = [operands[0].type] * 1
    _ods_successors = None
    super().__init__(self.OPERATION_NAME, self._ODS_REGIONS, self._ODS_OPERAND_SEGMENTS, self._ODS_RESULT_SEGMENTS, attributes=attributes, results=results, operands=operands, successors=_ods_successors, regions=regions, loc=loc, ip=ip)

  @builtins.property
  def lhs(self) -> _ods_ir.Value:
    return self.operation.operands[0]

  @builtins.property
  def rhs(self) -> _ods_ir.Value:
    return self.operation.operands[1]

  @builtins.property
  def isExact(self) -> bool:
    return "isExact" in self.operation.attributes

  @isExact.setter
  def isExact(self, value):
    if bool(value):
      self.operation.attributes["isExact"] = _ods_ir.UnitAttr.get()
    elif "isExact" in self.operation.attributes:
      del self.operation.attributes["isExact"]

  @isExact.deleter
  def isExact(self):
    del self.operation.attributes["isExact"]

  @builtins.property
  def res(self) -> _ods_ir.OpResult:
    return self.operation.results[0]

@_ods_cext.register_op_adaptor(SDivOp)
class SDivOpAdaptor(_ods_ir.OpAdaptor):
  OPERATION_NAME = "llvm.sdiv"

  @builtins.property
  def lhs(self) -> _ods_ir.Value:
    return self.operands[0]

  @builtins.property
  def rhs(self) -> _ods_ir.Value:
    return self.operands[1]

  @builtins.property
  def isExact(self) -> bool:
    return "isExact" in self.attributes

def sdiv(lhs: _ods_ir.Value, rhs: _ods_ir.Value, *, is_exact: _Optional[bool] = None, results: _Optional[_Sequence[_ods_ir.Type]] = None, loc: _Optional[_ods_ir.Location] = None, ip: _Optional[_ods_ir.InsertionPoint] = None) -> _ods_ir.OpResult:
  return SDivOp(lhs=lhs, rhs=rhs, isExact=is_exact, results=results, loc=loc, ip=ip).result

@_ods_cext.register_operation(_Dialect)
class SExtOp(_ods_ir.OpView):
  OPERATION_NAME = "llvm.sext"

  _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(SExtOp)
class SExtOpAdaptor(_ods_ir.OpAdaptor):
  OPERATION_NAME = "llvm.sext"

  @builtins.property
  def arg(self) -> _ods_ir.Value:
    return self.operands[0]

def sext(res: _ods_ir.Type, arg: _ods_ir.Value, *, loc: _Optional[_ods_ir.Location] = None, ip: _Optional[_ods_ir.InsertionPoint] = None) -> _ods_ir.OpResult:
  return SExtOp(res=res, arg=arg, loc=loc, ip=ip).result

@_ods_cext.register_operation(_Dialect)
class SIToFPOp(_ods_ir.OpView):
  OPERATION_NAME = "llvm.sitofp"

  _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(SIToFPOp)
class SIToFPOpAdaptor(_ods_ir.OpAdaptor):
  OPERATION_NAME = "llvm.sitofp"

  @builtins.property
  def arg(self) -> _ods_ir.Value:
    return self.operands[0]

def sitofp(res: _ods_ir.Type, arg: _ods_ir.Value, *, loc: _Optional[_ods_ir.Location] = None, ip: _Optional[_ods_ir.InsertionPoint] = None) -> _ods_ir.OpResult:
  return SIToFPOp(res=res, arg=arg, loc=loc, ip=ip).result

@_ods_cext.register_operation(_Dialect)
class SMaxOp(_ods_ir.OpView):
  OPERATION_NAME = "llvm.intr.smax"

  _ODS_REGIONS = (0, True)

  def __init__(self, a: _ods_ir.Value, b: _ods_ir.Value, *, results: _Optional[_Sequence[_ods_ir.Type]] = None, loc: _Optional[_ods_ir.Location] = None, ip: _Optional[_ods_ir.InsertionPoint] = None):
    operands = []
    attributes = {}
    regions = None
    operands.append(a)
    operands.append(b)
    _ods_context = _ods_get_default_loc_context(loc)
    if results is None: results = [operands[0].type] * 1
    _ods_successors = None
    super().__init__(self.OPERATION_NAME, self._ODS_REGIONS, self._ODS_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 res(self) -> _ods_ir.OpResult:
    return self.operation.results[0]

@_ods_cext.register_op_adaptor(SMaxOp)
class SMaxOpAdaptor(_ods_ir.OpAdaptor):
  OPERATION_NAME = "llvm.intr.smax"

  @builtins.property
  def a(self) -> _ods_ir.Value:
    return self.operands[0]

  @builtins.property
  def b(self) -> _ods_ir.Value:
    return self.operands[1]

def intr_smax(a: _ods_ir.Value, b: _ods_ir.Value, *, results: _Optional[_Sequence[_ods_ir.Type]] = None, loc: _Optional[_ods_ir.Location] = None, ip: _Optional[_ods_ir.InsertionPoint] = None) -> _ods_ir.OpResult:
  return SMaxOp(a=a, b=b, results=results, loc=loc, ip=ip).result

@_ods_cext.register_operation(_Dialect)
class SMinOp(_ods_ir.OpView):
  OPERATION_NAME = "llvm.intr.smin"

  _ODS_REGIONS = (0, True)

  def __init__(self, a: _ods_ir.Value, b: _ods_ir.Value, *, results: _Optional[_Sequence[_ods_ir.Type]] = None, loc: _Optional[_ods_ir.Location] = None, ip: _Optional[_ods_ir.InsertionPoint] = None):
    operands = []
    attributes = {}
    regions = None
    operands.append(a)
    operands.append(b)
    _ods_context = _ods_get_default_loc_context(loc)
    if results is None: results = [operands[0].type] * 1
    _ods_successors = None
    super().__init__(self.OPERATION_NAME, self._ODS_REGIONS, self._ODS_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 res(self) -> _ods_ir.OpResult:
    return self.operation.results[0]

@_ods_cext.register_op_adaptor(SMinOp)
class SMinOpAdaptor(_ods_ir.OpAdaptor):
  OPERATION_NAME = "llvm.intr.smin"

  @builtins.property
  def a(self) -> _ods_ir.Value:
    return self.operands[0]

  @builtins.property
  def b(self) -> _ods_ir.Value:
    return self.operands[1]

def intr_smin(a: _ods_ir.Value, b: _ods_ir.Value, *, results: _Optional[_Sequence[_ods_ir.Type]] = None, loc: _Optional[_ods_ir.Location] = None, ip: _Optional[_ods_ir.InsertionPoint] = None) -> _ods_ir.OpResult:
  return SMinOp(a=a, b=b, results=results, loc=loc, ip=ip).result

@_ods_cext.register_operation(_Dialect)
class SMulWithOverflowOp(_ods_ir.OpView):
  OPERATION_NAME = "llvm.intr.smul.with.overflow"

  _ODS_REGIONS = (0, True)

  def __init__(self, res: _ods_ir.Type, _gen_arg_0: _ods_ir.Value, _gen_arg_1: _ods_ir.Value, *, loc: _Optional[_ods_ir.Location] = None, ip: _Optional[_ods_ir.InsertionPoint] = None):
    operands = []
    attributes = {}
    regions = None
    operands.append(_gen_arg_0)
    operands.append(_gen_arg_1)
    _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 res(self) -> _ods_ir.OpResult:
    return self.operation.results[0]

@_ods_cext.register_op_adaptor(SMulWithOverflowOp)
class SMulWithOverflowOpAdaptor(_ods_ir.OpAdaptor):
  OPERATION_NAME = "llvm.intr.smul.with.overflow"

def intr_smul_with_overflow(res: _ods_ir.Type, _gen_arg_0: _ods_ir.Value, _gen_arg_1: _ods_ir.Value, *, loc: _Optional[_ods_ir.Location] = None, ip: _Optional[_ods_ir.InsertionPoint] = None) -> _ods_ir.OpResult:
  return SMulWithOverflowOp(res=res, _gen_arg_0=_gen_arg_0, _gen_arg_1=_gen_arg_1, loc=loc, ip=ip).result

@_ods_cext.register_operation(_Dialect)
class SRemOp(_ods_ir.OpView):
  OPERATION_NAME = "llvm.srem"

  _ODS_REGIONS = (0, True)

  def __init__(self, lhs: _ods_ir.Value, rhs: _ods_ir.Value, *, results: _Optional[_Sequence[_ods_ir.Type]] = None, loc: _Optional[_ods_ir.Location] = None, ip: _Optional[_ods_ir.InsertionPoint] = None):
    operands = []
    attributes = {}
    regions = None
    operands.append(lhs)
    operands.append(rhs)
    _ods_context = _ods_get_default_loc_context(loc)
    if results is None: results = [operands[0].type] * 1
    _ods_successors = None
    super().__init__(self.OPERATION_NAME, self._ODS_REGIONS, self._ODS_OPERAND_SEGMENTS, self._ODS_RESULT_SEGMENTS, attributes=attributes, results=results, operands=operands, successors=_ods_successors, regions=regions, loc=loc, ip=ip)

  @builtins.property
  def lhs(self) -> _ods_ir.Value:
    return self.operation.operands[0]

  @builtins.property
  def rhs(self) -> _ods_ir.Value:
    return self.operation.operands[1]

  @builtins.property
  def res(self) -> _ods_ir.OpResult:
    return self.operation.results[0]

@_ods_cext.register_op_adaptor(SRemOp)
class SRemOpAdaptor(_ods_ir.OpAdaptor):
  OPERATION_NAME = "llvm.srem"

  @builtins.property
  def lhs(self) -> _ods_ir.Value:
    return self.operands[0]

  @builtins.property
  def rhs(self) -> _ods_ir.Value:
    return self.operands[1]

def srem(lhs: _ods_ir.Value, rhs: _ods_ir.Value, *, results: _Optional[_Sequence[_ods_ir.Type]] = None, loc: _Optional[_ods_ir.Location] = None, ip: _Optional[_ods_ir.InsertionPoint] = None) -> _ods_ir.OpResult:
  return SRemOp(lhs=lhs, rhs=rhs, results=results, loc=loc, ip=ip).result

@_ods_cext.register_operation(_Dialect)
class SSACopyOp(_ods_ir.OpView):
  OPERATION_NAME = "llvm.intr.ssa.copy"

  _ODS_REGIONS = (0, True)

  def __init__(self, operand: _ods_ir.Value, *, results: _Optional[_Sequence[_ods_ir.Type]] = None, loc: _Optional[_ods_ir.Location] = None, ip: _Optional[_ods_ir.InsertionPoint] = None):
    operands = []
    attributes = {}
    regions = None
    operands.append(operand)
    _ods_context = _ods_get_default_loc_context(loc)
    if results is None: results = [operands[0].type] * 1
    _ods_successors = None
    super().__init__(self.OPERATION_NAME, self._ODS_REGIONS, self._ODS_OPERAND_SEGMENTS, self._ODS_RESULT_SEGMENTS, attributes=attributes, results=results, operands=operands, successors=_ods_successors, regions=regions, loc=loc, ip=ip)

  @builtins.property
  def operand(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(SSACopyOp)
class SSACopyOpAdaptor(_ods_ir.OpAdaptor):
  OPERATION_NAME = "llvm.intr.ssa.copy"

  @builtins.property
  def operand(self) -> _ods_ir.Value:
    return self.operands[0]

def intr_ssa_copy(operand: _ods_ir.Value, *, results: _Optional[_Sequence[_ods_ir.Type]] = None, loc: _Optional[_ods_ir.Location] = None, ip: _Optional[_ods_ir.InsertionPoint] = None) -> _ods_ir.OpResult:
  return SSACopyOp(operand=operand, results=results, loc=loc, ip=ip).result

@_ods_cext.register_operation(_Dialect)
class SSHLSat(_ods_ir.OpView):
  OPERATION_NAME = "llvm.intr.sshl.sat"

  _ODS_REGIONS = (0, True)

  def __init__(self, a: _ods_ir.Value, b: _ods_ir.Value, *, results: _Optional[_Sequence[_ods_ir.Type]] = None, loc: _Optional[_ods_ir.Location] = None, ip: _Optional[_ods_ir.InsertionPoint] = None):
    operands = []
    attributes = {}
    regions = None
    operands.append(a)
    operands.append(b)
    _ods_context = _ods_get_default_loc_context(loc)
    if results is None: results = [operands[0].type] * 1
    _ods_successors = None
    super().__init__(self.OPERATION_NAME, self._ODS_REGIONS, self._ODS_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 res(self) -> _ods_ir.OpResult:
    return self.operation.results[0]

@_ods_cext.register_op_adaptor(SSHLSat)
class SSHLSatAdaptor(_ods_ir.OpAdaptor):
  OPERATION_NAME = "llvm.intr.sshl.sat"

  @builtins.property
  def a(self) -> _ods_ir.Value:
    return self.operands[0]

  @builtins.property
  def b(self) -> _ods_ir.Value:
    return self.operands[1]

def intr_sshl_sat(a: _ods_ir.Value, b: _ods_ir.Value, *, results: _Optional[_Sequence[_ods_ir.Type]] = None, loc: _Optional[_ods_ir.Location] = None, ip: _Optional[_ods_ir.InsertionPoint] = None) -> _ods_ir.OpResult:
  return SSHLSat(a=a, b=b, results=results, loc=loc, ip=ip).result

@_ods_cext.register_operation(_Dialect)
class SSubSat(_ods_ir.OpView):
  OPERATION_NAME = "llvm.intr.ssub.sat"

  _ODS_REGIONS = (0, True)

  def __init__(self, a: _ods_ir.Value, b: _ods_ir.Value, *, results: _Optional[_Sequence[_ods_ir.Type]] = None, loc: _Optional[_ods_ir.Location] = None, ip: _Optional[_ods_ir.InsertionPoint] = None):
    operands = []
    attributes = {}
    regions = None
    operands.append(a)
    operands.append(b)
    _ods_context = _ods_get_default_loc_context(loc)
    if results is None: results = [operands[0].type] * 1
    _ods_successors = None
    super().__init__(self.OPERATION_NAME, self._ODS_REGIONS, self._ODS_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 res(self) -> _ods_ir.OpResult:
    return self.operation.results[0]

@_ods_cext.register_op_adaptor(SSubSat)
class SSubSatAdaptor(_ods_ir.OpAdaptor):
  OPERATION_NAME = "llvm.intr.ssub.sat"

  @builtins.property
  def a(self) -> _ods_ir.Value:
    return self.operands[0]

  @builtins.property
  def b(self) -> _ods_ir.Value:
    return self.operands[1]

def intr_ssub_sat(a: _ods_ir.Value, b: _ods_ir.Value, *, results: _Optional[_Sequence[_ods_ir.Type]] = None, loc: _Optional[_ods_ir.Location] = None, ip: _Optional[_ods_ir.InsertionPoint] = None) -> _ods_ir.OpResult:
  return SSubSat(a=a, b=b, results=results, loc=loc, ip=ip).result

@_ods_cext.register_operation(_Dialect)
class SSubWithOverflowOp(_ods_ir.OpView):
  OPERATION_NAME = "llvm.intr.ssub.with.overflow"

  _ODS_REGIONS = (0, True)

  def __init__(self, res: _ods_ir.Type, _gen_arg_0: _ods_ir.Value, _gen_arg_1: _ods_ir.Value, *, loc: _Optional[_ods_ir.Location] = None, ip: _Optional[_ods_ir.InsertionPoint] = None):
    operands = []
    attributes = {}
    regions = None
    operands.append(_gen_arg_0)
    operands.append(_gen_arg_1)
    _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 res(self) -> _ods_ir.OpResult:
    return self.operation.results[0]

@_ods_cext.register_op_adaptor(SSubWithOverflowOp)
class SSubWithOverflowOpAdaptor(_ods_ir.OpAdaptor):
  OPERATION_NAME = "llvm.intr.ssub.with.overflow"

def intr_ssub_with_overflow(res: _ods_ir.Type, _gen_arg_0: _ods_ir.Value, _gen_arg_1: _ods_ir.Value, *, loc: _Optional[_ods_ir.Location] = None, ip: _Optional[_ods_ir.InsertionPoint] = None) -> _ods_ir.OpResult:
  return SSubWithOverflowOp(res=res, _gen_arg_0=_gen_arg_0, _gen_arg_1=_gen_arg_1, loc=loc, ip=ip).result

@_ods_cext.register_operation(_Dialect)
class SelectOp(_ods_ir.OpView):
  OPERATION_NAME = "llvm.select"

  _ODS_REGIONS = (0, True)

  def __init__(self, condition: _ods_ir.Value, trueValue: _ods_ir.Value, falseValue: _ods_ir.Value, *, fastmathFlags: _Optional[_Union[_Any, _ods_ir.Attribute]] = None, results: _Optional[_Sequence[_ods_ir.Type]] = None, loc: _Optional[_ods_ir.Location] = None, ip: _Optional[_ods_ir.InsertionPoint] = None):
    operands = []
    attributes = {}
    regions = None
    operands.append(condition)
    operands.append(trueValue)
    operands.append(falseValue)
    _ods_context = _ods_get_default_loc_context(loc)
    if fastmathFlags is not None: attributes["fastmathFlags"] = (fastmathFlags if (
        isinstance(fastmathFlags, _ods_ir.Attribute) or
        not _ods_ir.AttrBuilder.contains('llvm.LLVM_FastmathFlagsAttr')) else
          _ods_ir.AttrBuilder.get('llvm.LLVM_FastmathFlagsAttr')(fastmathFlags, context=_ods_context))
    _ods_successors = None
    super().__init__(self.OPERATION_NAME, self._ODS_REGIONS, self._ODS_OPERAND_SEGMENTS, self._ODS_RESULT_SEGMENTS, attributes=attributes, results=results, operands=operands, successors=_ods_successors, regions=regions, loc=loc, ip=ip)

  @builtins.property
  def condition(self) -> _ods_ir.Value:
    return self.operation.operands[0]

  @builtins.property
  def trueValue(self) -> _ods_ir.Value:
    return self.operation.operands[1]

  @builtins.property
  def falseValue(self) -> _ods_ir.Value:
    return self.operation.operands[2]

  @builtins.property
  def fastmathFlags(self) -> _ods_ir.Attribute:
    return self.operation.attributes["fastmathFlags"]

  @fastmathFlags.setter
  def fastmathFlags(self, value: _ods_ir.Attribute):
    if value is None:
      raise ValueError("'None' not allowed as value for mandatory attributes")
    self.operation.attributes["fastmathFlags"] = value

  @builtins.property
  def res(self) -> _ods_ir.OpResult:
    return self.operation.results[0]

@_ods_cext.register_op_adaptor(SelectOp)
class SelectOpAdaptor(_ods_ir.OpAdaptor):
  OPERATION_NAME = "llvm.select"

  @builtins.property
  def condition(self) -> _ods_ir.Value:
    return self.operands[0]

  @builtins.property
  def trueValue(self) -> _ods_ir.Value:
    return self.operands[1]

  @builtins.property
  def falseValue(self) -> _ods_ir.Value:
    return self.operands[2]

  @builtins.property
  def fastmathFlags(self) -> _ods_ir.Attribute:
    return self.attributes["fastmathFlags"]

def select(condition: _ods_ir.Value, true_value: _ods_ir.Value, false_value: _ods_ir.Value, *, fastmath_flags: _Optional[_Union[_Any, _ods_ir.Attribute]] = None, results: _Optional[_Sequence[_ods_ir.Type]] = None, loc: _Optional[_ods_ir.Location] = None, ip: _Optional[_ods_ir.InsertionPoint] = None) -> _ods_ir.OpResult:
  return SelectOp(condition=condition, trueValue=true_value, falseValue=false_value, fastmathFlags=fastmath_flags, results=results, loc=loc, ip=ip).result

@_ods_cext.register_operation(_Dialect)
class ShlOp(_ods_ir.OpView):
  OPERATION_NAME = "llvm.shl"

  _ODS_REGIONS = (0, True)

  def __init__(self, lhs: _ods_ir.Value, rhs: _ods_ir.Value, overflowFlags, *, results: _Optional[_Sequence[_ods_ir.Type]] = None, loc: _Optional[_ods_ir.Location] = None, ip: _Optional[_ods_ir.InsertionPoint] = None):
    operands = []
    attributes = {}
    regions = None
    operands.append(lhs)
    operands.append(rhs)
    _ods_context = _ods_get_default_loc_context(loc)
    if results is None: results = [operands[0].type] * 1
    _ods_successors = None
    super().__init__(self.OPERATION_NAME, self._ODS_REGIONS, self._ODS_OPERAND_SEGMENTS, self._ODS_RESULT_SEGMENTS, attributes=attributes, results=results, operands=operands, successors=_ods_successors, regions=regions, loc=loc, ip=ip)

  @builtins.property
  def lhs(self) -> _ods_ir.Value:
    return self.operation.operands[0]

  @builtins.property
  def rhs(self) -> _ods_ir.Value:
    return self.operation.operands[1]

  @builtins.property
  def res(self) -> _ods_ir.OpResult:
    return self.operation.results[0]

@_ods_cext.register_op_adaptor(ShlOp)
class ShlOpAdaptor(_ods_ir.OpAdaptor):
  OPERATION_NAME = "llvm.shl"

  @builtins.property
  def lhs(self) -> _ods_ir.Value:
    return self.operands[0]

  @builtins.property
  def rhs(self) -> _ods_ir.Value:
    return self.operands[1]

def shl(lhs: _ods_ir.Value, rhs: _ods_ir.Value, overflow_flags, *, results: _Optional[_Sequence[_ods_ir.Type]] = None, loc: _Optional[_ods_ir.Location] = None, ip: _Optional[_ods_ir.InsertionPoint] = None) -> _ods_ir.OpResult:
  return ShlOp(lhs=lhs, rhs=rhs, overflowFlags=overflow_flags, results=results, loc=loc, ip=ip).result

@_ods_cext.register_operation(_Dialect)
class ShuffleVectorOp(_ods_ir.OpView):
  OPERATION_NAME = "llvm.shufflevector"

  _ODS_REGIONS = (0, True)

  def __init__(self, res: _ods_ir.Type, v1: _ods_ir.Value[_ods_ir.VectorType], v2: _ods_ir.Value[_ods_ir.VectorType], mask: _Union[_Sequence[int], _ods_ir.DenseI32ArrayAttr], *, loc: _Optional[_ods_ir.Location] = None, ip: _Optional[_ods_ir.InsertionPoint] = None):
    operands = []
    attributes = {}
    regions = None
    operands.append(v1)
    operands.append(v2)
    _ods_context = _ods_get_default_loc_context(loc)
    attributes["mask"] = (mask if (
    isinstance(mask, _ods_ir.Attribute) or
    not _ods_ir.AttrBuilder.contains('DenseI32ArrayAttr')) else
      _ods_ir.AttrBuilder.get('DenseI32ArrayAttr')(mask, 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 v1(self) -> _ods_ir.Value[_ods_ir.VectorType]:
    return self.operation.operands[0]

  @builtins.property
  def v2(self) -> _ods_ir.Value[_ods_ir.VectorType]:
    return self.operation.operands[1]

  @builtins.property
  def mask(self) -> _ods_ir.DenseI32ArrayAttr:
    return self.operation.attributes["mask"]

  @mask.setter
  def mask(self, value: _ods_ir.DenseI32ArrayAttr):
    if value is None:
      raise ValueError("'None' not allowed as value for mandatory attributes")
    self.operation.attributes["mask"] = value

  @builtins.property
  def res(self) -> _ods_ir.OpResult[_ods_ir.VectorType]:
    return self.operation.results[0]

@_ods_cext.register_op_adaptor(ShuffleVectorOp)
class ShuffleVectorOpAdaptor(_ods_ir.OpAdaptor):
  OPERATION_NAME = "llvm.shufflevector"

  @builtins.property
  def v1(self) -> _ods_ir.Value[_ods_ir.VectorType]:
    return self.operands[0]

  @builtins.property
  def v2(self) -> _ods_ir.Value[_ods_ir.VectorType]:
    return self.operands[1]

  @builtins.property
  def mask(self) -> _ods_ir.DenseI32ArrayAttr:
    return self.attributes["mask"]

def shufflevector(res: _ods_ir.Type, v1: _ods_ir.Value[_ods_ir.VectorType], v2: _ods_ir.Value[_ods_ir.VectorType], mask: _Union[_Sequence[int], _ods_ir.DenseI32ArrayAttr], *, loc: _Optional[_ods_ir.Location] = None, ip: _Optional[_ods_ir.InsertionPoint] = None) -> _ods_ir.OpResult[_ods_ir.VectorType]:
  return ShuffleVectorOp(res=res, v1=v1, v2=v2, mask=mask, loc=loc, ip=ip).result

@_ods_cext.register_operation(_Dialect)
class SinOp(_ods_ir.OpView):
  OPERATION_NAME = "llvm.intr.sin"

  _ODS_REGIONS = (0, True)

  def __init__(self, in_: _ods_ir.Value, *, fastmathFlags: _Optional[_Union[_Any, _ods_ir.Attribute]] = None, results: _Optional[_Sequence[_ods_ir.Type]] = None, loc: _Optional[_ods_ir.Location] = None, ip: _Optional[_ods_ir.InsertionPoint] = None):
    operands = []
    attributes = {}
    regions = None
    operands.append(in_)
    _ods_context = _ods_get_default_loc_context(loc)
    if fastmathFlags is not None: attributes["fastmathFlags"] = (fastmathFlags if (
        isinstance(fastmathFlags, _ods_ir.Attribute) or
        not _ods_ir.AttrBuilder.contains('llvm.LLVM_FastmathFlagsAttr')) else
          _ods_ir.AttrBuilder.get('llvm.LLVM_FastmathFlagsAttr')(fastmathFlags, context=_ods_context))
    if results is None: results = [operands[0].type] * 1
    _ods_successors = None
    super().__init__(self.OPERATION_NAME, self._ODS_REGIONS, self._ODS_OPERAND_SEGMENTS, self._ODS_RESULT_SEGMENTS, attributes=attributes, results=results, operands=operands, successors=_ods_successors, regions=regions, loc=loc, ip=ip)

  @builtins.property
  def in_(self) -> _ods_ir.Value:
    return self.operation.operands[0]

  @builtins.property
  def fastmathFlags(self) -> _ods_ir.Attribute:
    return self.operation.attributes["fastmathFlags"]

  @fastmathFlags.setter
  def fastmathFlags(self, value: _ods_ir.Attribute):
    if value is None:
      raise ValueError("'None' not allowed as value for mandatory attributes")
    self.operation.attributes["fastmathFlags"] = value

  @builtins.property
  def res(self) -> _ods_ir.OpResult:
    return self.operation.results[0]

@_ods_cext.register_op_adaptor(SinOp)
class SinOpAdaptor(_ods_ir.OpAdaptor):
  OPERATION_NAME = "llvm.intr.sin"

  @builtins.property
  def in_(self) -> _ods_ir.Value:
    return self.operands[0]

  @builtins.property
  def fastmathFlags(self) -> _ods_ir.Attribute:
    return self.attributes["fastmathFlags"]

def intr_sin(in_: _ods_ir.Value, *, fastmath_flags: _Optional[_Union[_Any, _ods_ir.Attribute]] = None, results: _Optional[_Sequence[_ods_ir.Type]] = None, loc: _Optional[_ods_ir.Location] = None, ip: _Optional[_ods_ir.InsertionPoint] = None) -> _ods_ir.OpResult:
  return SinOp(in_=in_, fastmathFlags=fastmath_flags, results=results, loc=loc, ip=ip).result

@_ods_cext.register_operation(_Dialect)
class SincosOp(_ods_ir.OpView):
  OPERATION_NAME = "llvm.intr.sincos"

  _ODS_REGIONS = (0, True)

  def __init__(self, res: _ods_ir.Type, val: _ods_ir.Value, *, fastmathFlags: _Optional[_Union[_Any, _ods_ir.Attribute]] = None, loc: _Optional[_ods_ir.Location] = None, ip: _Optional[_ods_ir.InsertionPoint] = None):
    operands = []
    attributes = {}
    regions = None
    operands.append(val)
    _ods_context = _ods_get_default_loc_context(loc)
    if fastmathFlags is not None: attributes["fastmathFlags"] = (fastmathFlags if (
        isinstance(fastmathFlags, _ods_ir.Attribute) or
        not _ods_ir.AttrBuilder.contains('llvm.LLVM_FastmathFlagsAttr')) else
          _ods_ir.AttrBuilder.get('llvm.LLVM_FastmathFlagsAttr')(fastmathFlags, 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 val(self) -> _ods_ir.Value:
    return self.operation.operands[0]

  @builtins.property
  def fastmathFlags(self) -> _ods_ir.Attribute:
    return self.operation.attributes["fastmathFlags"]

  @fastmathFlags.setter
  def fastmathFlags(self, value: _ods_ir.Attribute):
    if value is None:
      raise ValueError("'None' not allowed as value for mandatory attributes")
    self.operation.attributes["fastmathFlags"] = value

  @builtins.property
  def res(self) -> _ods_ir.OpResult:
    return self.operation.results[0]

@_ods_cext.register_op_adaptor(SincosOp)
class SincosOpAdaptor(_ods_ir.OpAdaptor):
  OPERATION_NAME = "llvm.intr.sincos"

  @builtins.property
  def val(self) -> _ods_ir.Value:
    return self.operands[0]

  @builtins.property
  def fastmathFlags(self) -> _ods_ir.Attribute:
    return self.attributes["fastmathFlags"]

def intr_sincos(res: _ods_ir.Type, val: _ods_ir.Value, *, fastmath_flags: _Optional[_Union[_Any, _ods_ir.Attribute]] = None, loc: _Optional[_ods_ir.Location] = None, ip: _Optional[_ods_ir.InsertionPoint] = None) -> _ods_ir.OpResult:
  return SincosOp(res=res, val=val, fastmathFlags=fastmath_flags, loc=loc, ip=ip).result

@_ods_cext.register_operation(_Dialect)
class SinhOp(_ods_ir.OpView):
  OPERATION_NAME = "llvm.intr.sinh"

  _ODS_REGIONS = (0, True)

  def __init__(self, in_: _ods_ir.Value, *, fastmathFlags: _Optional[_Union[_Any, _ods_ir.Attribute]] = None, results: _Optional[_Sequence[_ods_ir.Type]] = None, loc: _Optional[_ods_ir.Location] = None, ip: _Optional[_ods_ir.InsertionPoint] = None):
    operands = []
    attributes = {}
    regions = None
    operands.append(in_)
    _ods_context = _ods_get_default_loc_context(loc)
    if fastmathFlags is not None: attributes["fastmathFlags"] = (fastmathFlags if (
        isinstance(fastmathFlags, _ods_ir.Attribute) or
        not _ods_ir.AttrBuilder.contains('llvm.LLVM_FastmathFlagsAttr')) else
          _ods_ir.AttrBuilder.get('llvm.LLVM_FastmathFlagsAttr')(fastmathFlags, context=_ods_context))
    if results is None: results = [operands[0].type] * 1
    _ods_successors = None
    super().__init__(self.OPERATION_NAME, self._ODS_REGIONS, self._ODS_OPERAND_SEGMENTS, self._ODS_RESULT_SEGMENTS, attributes=attributes, results=results, operands=operands, successors=_ods_successors, regions=regions, loc=loc, ip=ip)

  @builtins.property
  def in_(self) -> _ods_ir.Value:
    return self.operation.operands[0]

  @builtins.property
  def fastmathFlags(self) -> _ods_ir.Attribute:
    return self.operation.attributes["fastmathFlags"]

  @fastmathFlags.setter
  def fastmathFlags(self, value: _ods_ir.Attribute):
    if value is None:
      raise ValueError("'None' not allowed as value for mandatory attributes")
    self.operation.attributes["fastmathFlags"] = value

  @builtins.property
  def res(self) -> _ods_ir.OpResult:
    return self.operation.results[0]

@_ods_cext.register_op_adaptor(SinhOp)
class SinhOpAdaptor(_ods_ir.OpAdaptor):
  OPERATION_NAME = "llvm.intr.sinh"

  @builtins.property
  def in_(self) -> _ods_ir.Value:
    return self.operands[0]

  @builtins.property
  def fastmathFlags(self) -> _ods_ir.Attribute:
    return self.attributes["fastmathFlags"]

def intr_sinh(in_: _ods_ir.Value, *, fastmath_flags: _Optional[_Union[_Any, _ods_ir.Attribute]] = None, results: _Optional[_Sequence[_ods_ir.Type]] = None, loc: _Optional[_ods_ir.Location] = None, ip: _Optional[_ods_ir.InsertionPoint] = None) -> _ods_ir.OpResult:
  return SinhOp(in_=in_, fastmathFlags=fastmath_flags, results=results, loc=loc, ip=ip).result

@_ods_cext.register_operation(_Dialect)
class SqrtOp(_ods_ir.OpView):
  OPERATION_NAME = "llvm.intr.sqrt"

  _ODS_REGIONS = (0, True)

  def __init__(self, in_: _ods_ir.Value, *, fastmathFlags: _Optional[_Union[_Any, _ods_ir.Attribute]] = None, results: _Optional[_Sequence[_ods_ir.Type]] = None, loc: _Optional[_ods_ir.Location] = None, ip: _Optional[_ods_ir.InsertionPoint] = None):
    operands = []
    attributes = {}
    regions = None
    operands.append(in_)
    _ods_context = _ods_get_default_loc_context(loc)
    if fastmathFlags is not None: attributes["fastmathFlags"] = (fastmathFlags if (
        isinstance(fastmathFlags, _ods_ir.Attribute) or
        not _ods_ir.AttrBuilder.contains('llvm.LLVM_FastmathFlagsAttr')) else
          _ods_ir.AttrBuilder.get('llvm.LLVM_FastmathFlagsAttr')(fastmathFlags, context=_ods_context))
    if results is None: results = [operands[0].type] * 1
    _ods_successors = None
    super().__init__(self.OPERATION_NAME, self._ODS_REGIONS, self._ODS_OPERAND_SEGMENTS, self._ODS_RESULT_SEGMENTS, attributes=attributes, results=results, operands=operands, successors=_ods_successors, regions=regions, loc=loc, ip=ip)

  @builtins.property
  def in_(self) -> _ods_ir.Value:
    return self.operation.operands[0]

  @builtins.property
  def fastmathFlags(self) -> _ods_ir.Attribute:
    return self.operation.attributes["fastmathFlags"]

  @fastmathFlags.setter
  def fastmathFlags(self, value: _ods_ir.Attribute):
    if value is None:
      raise ValueError("'None' not allowed as value for mandatory attributes")
    self.operation.attributes["fastmathFlags"] = value

  @builtins.property
  def res(self) -> _ods_ir.OpResult:
    return self.operation.results[0]

@_ods_cext.register_op_adaptor(SqrtOp)
class SqrtOpAdaptor(_ods_ir.OpAdaptor):
  OPERATION_NAME = "llvm.intr.sqrt"

  @builtins.property
  def in_(self) -> _ods_ir.Value:
    return self.operands[0]

  @builtins.property
  def fastmathFlags(self) -> _ods_ir.Attribute:
    return self.attributes["fastmathFlags"]

def intr_sqrt(in_: _ods_ir.Value, *, fastmath_flags: _Optional[_Union[_Any, _ods_ir.Attribute]] = None, results: _Optional[_Sequence[_ods_ir.Type]] = None, loc: _Optional[_ods_ir.Location] = None, ip: _Optional[_ods_ir.InsertionPoint] = None) -> _ods_ir.OpResult:
  return SqrtOp(in_=in_, fastmathFlags=fastmath_flags, results=results, loc=loc, ip=ip).result

@_ods_cext.register_operation(_Dialect)
class StackRestoreOp(_ods_ir.OpView):
  OPERATION_NAME = "llvm.intr.stackrestore"

  _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(StackRestoreOp)
class StackRestoreOpAdaptor(_ods_ir.OpAdaptor):
  OPERATION_NAME = "llvm.intr.stackrestore"

  @builtins.property
  def ptr(self) -> _ods_ir.Value:
    return self.operands[0]

def intr_stackrestore(ptr: _ods_ir.Value, *, loc: _Optional[_ods_ir.Location] = None, ip: _Optional[_ods_ir.InsertionPoint] = None) -> StackRestoreOp:
  return StackRestoreOp(ptr=ptr, loc=loc, ip=ip)

@_ods_cext.register_operation(_Dialect)
class StackSaveOp(_ods_ir.OpView):
  OPERATION_NAME = "llvm.intr.stacksave"

  _ODS_REGIONS = (0, True)

  def __init__(self, res: _ods_ir.Type, *, 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 = []
    results.append(res)
    _ods_successors = None
    super().__init__(self.OPERATION_NAME, self._ODS_REGIONS, self._ODS_OPERAND_SEGMENTS, self._ODS_RESULT_SEGMENTS, attributes=attributes, results=results, operands=operands, successors=_ods_successors, regions=regions, loc=loc, ip=ip)

  @builtins.property
  def res(self) -> _ods_ir.OpResult:
    return self.operation.results[0]

@_ods_cext.register_op_adaptor(StackSaveOp)
class StackSaveOpAdaptor(_ods_ir.OpAdaptor):
  OPERATION_NAME = "llvm.intr.stacksave"

def intr_stacksave(res: _ods_ir.Type, *, loc: _Optional[_ods_ir.Location] = None, ip: _Optional[_ods_ir.InsertionPoint] = None) -> _ods_ir.OpResult:
  return StackSaveOp(res=res, loc=loc, ip=ip).result

@_ods_cext.register_operation(_Dialect)
class StepVectorOp(_ods_ir.OpView):
  OPERATION_NAME = "llvm.intr.stepvector"

  _ODS_REGIONS = (0, True)

  def __init__(self, res: _ods_ir.Type, *, 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 = []
    results.append(res)
    _ods_successors = None
    super().__init__(self.OPERATION_NAME, self._ODS_REGIONS, self._ODS_OPERAND_SEGMENTS, self._ODS_RESULT_SEGMENTS, attributes=attributes, results=results, operands=operands, successors=_ods_successors, regions=regions, loc=loc, ip=ip)

  @builtins.property
  def res(self) -> _ods_ir.OpResult[_ods_ir.VectorType]:
    return self.operation.results[0]

@_ods_cext.register_op_adaptor(StepVectorOp)
class StepVectorOpAdaptor(_ods_ir.OpAdaptor):
  OPERATION_NAME = "llvm.intr.stepvector"

def intr_stepvector(res: _ods_ir.Type, *, loc: _Optional[_ods_ir.Location] = None, ip: _Optional[_ods_ir.InsertionPoint] = None) -> _ods_ir.OpResult[_ods_ir.VectorType]:
  return StepVectorOp(res=res, loc=loc, ip=ip).result

@_ods_cext.register_operation(_Dialect)
class StoreOp(_ods_ir.OpView):
  r"""
  The `store` operation is used to write to memory. A store may be marked as
  atomic, volatile, and/or nontemporal, and takes a number of optional
  attributes that specify aliasing information.
  
  An atomic store only supports a limited set of pointer, integer, and
  floating point types, and requires an explicit alignment.
  
  Examples:
  ```mlir
  // A volatile store of a float variable.
  llvm.store volatile %val, %ptr : f32, !llvm.ptr
  
  // A nontemporal store of a float variable.
  llvm.store %val, %ptr {nontemporal} : f32, !llvm.ptr
  
  // An atomic store of an integer variable.
  llvm.store %val, %ptr atomic monotonic {alignment = 8 : i64}
      : i64, !llvm.ptr
  ```
  
  See the following link for more details:
  https://llvm.org/docs/LangRef.html#store-instruction
  """

  OPERATION_NAME = "llvm.store"

  _ODS_REGIONS = (0, True)

  def __init__(self, value: _ods_ir.Value, addr: _ods_ir.Value, *, alignment: _Optional[_Union[int, _ods_ir.IntegerAttr]] = None, volatile_: _Optional[bool] = None, nontemporal: _Optional[bool] = None, invariantGroup: _Optional[bool] = None, ordering: _Optional[_Union[_Any, _ods_ir.Attribute]] = None, syncscope: _Optional[_Union[str, _ods_ir.StringAttr]] = None, access_groups: _Optional[_Union[_Any, _ods_ir.ArrayAttr]] = None, 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(value)
    operands.append(addr)
    _ods_context = _ods_get_default_loc_context(loc)
    if alignment is not None: attributes["alignment"] = (alignment if (
        isinstance(alignment, _ods_ir.Attribute) or
        not _ods_ir.AttrBuilder.contains('I64Attr')) else
          _ods_ir.AttrBuilder.get('I64Attr')(alignment, context=_ods_context))
    if bool(volatile_): attributes["volatile_"] = _ods_ir.UnitAttr.get(
      _ods_get_default_loc_context(loc))
    if bool(nontemporal): attributes["nontemporal"] = _ods_ir.UnitAttr.get(
      _ods_get_default_loc_context(loc))
    if bool(invariantGroup): attributes["invariantGroup"] = _ods_ir.UnitAttr.get(
      _ods_get_default_loc_context(loc))
    if ordering is not None: attributes["ordering"] = (ordering if (
        isinstance(ordering, _ods_ir.Attribute) or
        not _ods_ir.AttrBuilder.contains('AtomicOrdering')) else
          _ods_ir.AttrBuilder.get('AtomicOrdering')(ordering, context=_ods_context))
    if syncscope is not None: attributes["syncscope"] = (syncscope if (
        isinstance(syncscope, _ods_ir.Attribute) or
        not _ods_ir.AttrBuilder.contains('StrAttr')) else
          _ods_ir.AttrBuilder.get('StrAttr')(syncscope, context=_ods_context))
    if access_groups is not None: attributes["access_groups"] = (access_groups if (
        isinstance(access_groups, _ods_ir.Attribute) or
        not _ods_ir.AttrBuilder.contains('LLVM_AccessGroupArrayAttr')) else
          _ods_ir.AttrBuilder.get('LLVM_AccessGroupArrayAttr')(access_groups, 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 value(self) -> _ods_ir.Value:
    return self.operation.operands[0]

  @builtins.property
  def addr(self) -> _ods_ir.Value:
    return self.operation.operands[1]

  @builtins.property
  def alignment(self) -> _Optional[_ods_ir.IntegerAttr]:
    if "alignment" not in self.operation.attributes:
      return None
    return self.operation.attributes["alignment"]

  @alignment.setter
  def alignment(self, value: _Optional[_ods_ir.IntegerAttr]):
    if value is not None:
      self.operation.attributes["alignment"] = value
    elif "alignment" in self.operation.attributes:
      del self.operation.attributes["alignment"]

  @alignment.deleter
  def alignment(self):
    del self.operation.attributes["alignment"]

  @builtins.property
  def volatile_(self) -> bool:
    return "volatile_" in self.operation.attributes

  @volatile_.setter
  def volatile_(self, value):
    if bool(value):
      self.operation.attributes["volatile_"] = _ods_ir.UnitAttr.get()
    elif "volatile_" in self.operation.attributes:
      del self.operation.attributes["volatile_"]

  @volatile_.deleter
  def volatile_(self):
    del self.operation.attributes["volatile_"]

  @builtins.property
  def nontemporal(self) -> bool:
    return "nontemporal" in self.operation.attributes

  @nontemporal.setter
  def nontemporal(self, value):
    if bool(value):
      self.operation.attributes["nontemporal"] = _ods_ir.UnitAttr.get()
    elif "nontemporal" in self.operation.attributes:
      del self.operation.attributes["nontemporal"]

  @nontemporal.deleter
  def nontemporal(self):
    del self.operation.attributes["nontemporal"]

  @builtins.property
  def invariantGroup(self) -> bool:
    return "invariantGroup" in self.operation.attributes

  @invariantGroup.setter
  def invariantGroup(self, value):
    if bool(value):
      self.operation.attributes["invariantGroup"] = _ods_ir.UnitAttr.get()
    elif "invariantGroup" in self.operation.attributes:
      del self.operation.attributes["invariantGroup"]

  @invariantGroup.deleter
  def invariantGroup(self):
    del self.operation.attributes["invariantGroup"]

  @builtins.property
  def ordering(self) -> _ods_ir.Attribute:
    return self.operation.attributes["ordering"]

  @ordering.setter
  def ordering(self, value: _ods_ir.Attribute):
    if value is None:
      raise ValueError("'None' not allowed as value for mandatory attributes")
    self.operation.attributes["ordering"] = value

  @builtins.property
  def syncscope(self) -> _Optional[_ods_ir.StringAttr]:
    if "syncscope" not in self.operation.attributes:
      return None
    return self.operation.attributes["syncscope"]

  @syncscope.setter
  def syncscope(self, value: _Optional[_ods_ir.StringAttr]):
    if value is not None:
      self.operation.attributes["syncscope"] = value
    elif "syncscope" in self.operation.attributes:
      del self.operation.attributes["syncscope"]

  @syncscope.deleter
  def syncscope(self):
    del self.operation.attributes["syncscope"]

  @builtins.property
  def access_groups(self) -> _Optional[_ods_ir.ArrayAttr]:
    if "access_groups" not in self.operation.attributes:
      return None
    return self.operation.attributes["access_groups"]

  @access_groups.setter
  def access_groups(self, value: _Optional[_ods_ir.ArrayAttr]):
    if value is not None:
      self.operation.attributes["access_groups"] = value
    elif "access_groups" in self.operation.attributes:
      del self.operation.attributes["access_groups"]

  @access_groups.deleter
  def access_groups(self):
    del self.operation.attributes["access_groups"]

  @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(StoreOp)
class StoreOpAdaptor(_ods_ir.OpAdaptor):
  OPERATION_NAME = "llvm.store"

  @builtins.property
  def value(self) -> _ods_ir.Value:
    return self.operands[0]

  @builtins.property
  def addr(self) -> _ods_ir.Value:
    return self.operands[1]

  @builtins.property
  def alignment(self) -> _Optional[_ods_ir.IntegerAttr]:
    if "alignment" not in self.attributes:
      return None
    return self.attributes["alignment"]

  @builtins.property
  def volatile_(self) -> bool:
    return "volatile_" in self.attributes

  @builtins.property
  def nontemporal(self) -> bool:
    return "nontemporal" in self.attributes

  @builtins.property
  def invariantGroup(self) -> bool:
    return "invariantGroup" in self.attributes

  @builtins.property
  def ordering(self) -> _ods_ir.Attribute:
    return self.attributes["ordering"]

  @builtins.property
  def syncscope(self) -> _Optional[_ods_ir.StringAttr]:
    if "syncscope" not in self.attributes:
      return None
    return self.attributes["syncscope"]

  @builtins.property
  def access_groups(self) -> _Optional[_ods_ir.ArrayAttr]:
    if "access_groups" not in self.attributes:
      return None
    return self.attributes["access_groups"]

  @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 store(value: _ods_ir.Value, addr: _ods_ir.Value, *, alignment: _Optional[_Union[int, _ods_ir.IntegerAttr]] = None, volatile_: _Optional[bool] = None, nontemporal: _Optional[bool] = None, invariant_group: _Optional[bool] = None, ordering: _Optional[_Union[_Any, _ods_ir.Attribute]] = None, syncscope: _Optional[_Union[str, _ods_ir.StringAttr]] = None, access_groups: _Optional[_Union[_Any, _ods_ir.ArrayAttr]] = None, 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) -> StoreOp:
  return StoreOp(value=value, addr=addr, alignment=alignment, volatile_=volatile_, nontemporal=nontemporal, invariantGroup=invariant_group, ordering=ordering, syncscope=syncscope, access_groups=access_groups, alias_scopes=alias_scopes, noalias_scopes=noalias_scopes, tbaa=tbaa, loc=loc, ip=ip)

@_ods_cext.register_operation(_Dialect)
class StripInvariantGroupOp(_ods_ir.OpView):
  OPERATION_NAME = "llvm.intr.strip.invariant.group"

  _ODS_REGIONS = (0, True)

  def __init__(self, ptr: _ods_ir.Value, *, results: _Optional[_Sequence[_ods_ir.Type]] = 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 results is None: results = [operands[0].type] * 1
    _ods_successors = None
    super().__init__(self.OPERATION_NAME, self._ODS_REGIONS, self._ODS_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:
    return self.operation.results[0]

@_ods_cext.register_op_adaptor(StripInvariantGroupOp)
class StripInvariantGroupOpAdaptor(_ods_ir.OpAdaptor):
  OPERATION_NAME = "llvm.intr.strip.invariant.group"

  @builtins.property
  def ptr(self) -> _ods_ir.Value:
    return self.operands[0]

def intr_strip_invariant_group(ptr: _ods_ir.Value, *, results: _Optional[_Sequence[_ods_ir.Type]] = None, loc: _Optional[_ods_ir.Location] = None, ip: _Optional[_ods_ir.InsertionPoint] = None) -> _ods_ir.OpResult:
  return StripInvariantGroupOp(ptr=ptr, results=results, loc=loc, ip=ip).result

@_ods_cext.register_operation(_Dialect)
class SubOp(_ods_ir.OpView):
  OPERATION_NAME = "llvm.sub"

  _ODS_REGIONS = (0, True)

  def __init__(self, lhs: _ods_ir.Value, rhs: _ods_ir.Value, overflowFlags, *, results: _Optional[_Sequence[_ods_ir.Type]] = None, loc: _Optional[_ods_ir.Location] = None, ip: _Optional[_ods_ir.InsertionPoint] = None):
    operands = []
    attributes = {}
    regions = None
    operands.append(lhs)
    operands.append(rhs)
    _ods_context = _ods_get_default_loc_context(loc)
    if results is None: results = [operands[0].type] * 1
    _ods_successors = None
    super().__init__(self.OPERATION_NAME, self._ODS_REGIONS, self._ODS_OPERAND_SEGMENTS, self._ODS_RESULT_SEGMENTS, attributes=attributes, results=results, operands=operands, successors=_ods_successors, regions=regions, loc=loc, ip=ip)

  @builtins.property
  def lhs(self) -> _ods_ir.Value:
    return self.operation.operands[0]

  @builtins.property
  def rhs(self) -> _ods_ir.Value:
    return self.operation.operands[1]

  @builtins.property
  def res(self) -> _ods_ir.OpResult:
    return self.operation.results[0]

@_ods_cext.register_op_adaptor(SubOp)
class SubOpAdaptor(_ods_ir.OpAdaptor):
  OPERATION_NAME = "llvm.sub"

  @builtins.property
  def lhs(self) -> _ods_ir.Value:
    return self.operands[0]

  @builtins.property
  def rhs(self) -> _ods_ir.Value:
    return self.operands[1]

def sub(lhs: _ods_ir.Value, rhs: _ods_ir.Value, overflow_flags, *, results: _Optional[_Sequence[_ods_ir.Type]] = None, loc: _Optional[_ods_ir.Location] = None, ip: _Optional[_ods_ir.InsertionPoint] = None) -> _ods_ir.OpResult:
  return SubOp(lhs=lhs, rhs=rhs, overflowFlags=overflow_flags, results=results, loc=loc, ip=ip).result

@_ods_cext.register_operation(_Dialect)
class SwitchOp(_ods_ir.OpView):
  OPERATION_NAME = "llvm.switch"

  _ODS_OPERAND_SEGMENTS = [1,-1,-1,]

  _ODS_REGIONS = (0, True)

  def __init__(self, value: _ods_ir.Value[_ods_ir.IntegerType], defaultOperands: _Sequence[_ods_ir.Value], caseOperands: _Sequence[_ods_ir.Value], case_operand_segments: _Union[_Sequence[int], _ods_ir.DenseI32ArrayAttr], defaultDestination: _ods_ir.Block, caseDestinations: _Sequence[_ods_ir.Block], *, case_values: _Optional[_Union[_Any, _ods_ir.DenseIntElementsAttr]] = None, branch_weights: _Optional[_Union[_Sequence[int], _ods_ir.DenseI32ArrayAttr]] = None, loc: _Optional[_ods_ir.Location] = None, ip: _Optional[_ods_ir.InsertionPoint] = None):
    operands = []
    attributes = {}
    regions = None
    operands.append(value)
    operands.append(_get_op_results_or_values(defaultOperands))
    operands.append(_get_op_results_or_values(caseOperands))
    _ods_context = _ods_get_default_loc_context(loc)
    if case_values is not None: attributes["case_values"] = (case_values if (
        isinstance(case_values, _ods_ir.Attribute) or
        not _ods_ir.AttrBuilder.contains('AnyIntElementsAttr')) else
          _ods_ir.AttrBuilder.get('AnyIntElementsAttr')(case_values, context=_ods_context))
    attributes["case_operand_segments"] = (case_operand_segments if (
    isinstance(case_operand_segments, _ods_ir.Attribute) or
    not _ods_ir.AttrBuilder.contains('DenseI32ArrayAttr')) else
      _ods_ir.AttrBuilder.get('DenseI32ArrayAttr')(case_operand_segments, context=_ods_context))
    if branch_weights is not None: attributes["branch_weights"] = (branch_weights if (
        isinstance(branch_weights, _ods_ir.Attribute) or
        not _ods_ir.AttrBuilder.contains('DenseI32ArrayAttr')) else
          _ods_ir.AttrBuilder.get('DenseI32ArrayAttr')(branch_weights, context=_ods_context))
    results = []
    _ods_successors = []
    _ods_successors.append(defaultDestination)
    _ods_successors.extend(caseDestinations)
    super().__init__(self.OPERATION_NAME, self._ODS_REGIONS, self._ODS_OPERAND_SEGMENTS, self._ODS_RESULT_SEGMENTS, attributes=attributes, results=results, operands=operands, successors=_ods_successors, regions=regions, loc=loc, ip=ip)

  @builtins.property
  def value(self) -> _ods_ir.Value[_ods_ir.IntegerType]:
    operand_range = _ods_segmented_accessor(
         self.operation.operands,
         self.operation.attributes["operandSegmentSizes"], 0)
    return operand_range[0]

  @builtins.property
  def defaultOperands(self) -> _ods_ir.OpOperandList:
    operand_range = _ods_segmented_accessor(
         self.operation.operands,
         self.operation.attributes["operandSegmentSizes"], 1)
    return operand_range

  @builtins.property
  def caseOperands(self) -> _ods_ir.OpOperandList:
    operand_range = _ods_segmented_accessor(
         self.operation.operands,
         self.operation.attributes["operandSegmentSizes"], 2)
    return operand_range

  @builtins.property
  def case_values(self) -> _Optional[_ods_ir.DenseIntElementsAttr]:
    if "case_values" not in self.operation.attributes:
      return None
    return self.operation.attributes["case_values"]

  @case_values.setter
  def case_values(self, value: _Optional[_ods_ir.DenseIntElementsAttr]):
    if value is not None:
      self.operation.attributes["case_values"] = value
    elif "case_values" in self.operation.attributes:
      del self.operation.attributes["case_values"]

  @case_values.deleter
  def case_values(self):
    del self.operation.attributes["case_values"]

  @builtins.property
  def case_operand_segments(self) -> _ods_ir.DenseI32ArrayAttr:
    return self.operation.attributes["case_operand_segments"]

  @case_operand_segments.setter
  def case_operand_segments(self, value: _ods_ir.DenseI32ArrayAttr):
    if value is None:
      raise ValueError("'None' not allowed as value for mandatory attributes")
    self.operation.attributes["case_operand_segments"] = value

  @builtins.property
  def branch_weights(self) -> _Optional[_ods_ir.DenseI32ArrayAttr]:
    if "branch_weights" not in self.operation.attributes:
      return None
    return self.operation.attributes["branch_weights"]

  @branch_weights.setter
  def branch_weights(self, value: _Optional[_ods_ir.DenseI32ArrayAttr]):
    if value is not None:
      self.operation.attributes["branch_weights"] = value
    elif "branch_weights" in self.operation.attributes:
      del self.operation.attributes["branch_weights"]

  @branch_weights.deleter
  def branch_weights(self):
    del self.operation.attributes["branch_weights"]

@_ods_cext.register_op_adaptor(SwitchOp)
class SwitchOpAdaptor(_ods_ir.OpAdaptor):
  OPERATION_NAME = "llvm.switch"

  @builtins.property
  def value(self) -> _ods_ir.Value[_ods_ir.IntegerType]:
    operand_range = _ods_segmented_accessor(
         self.operands,
         self.attributes["operandSegmentSizes"], 0)
    return operand_range[0]

  @builtins.property
  def defaultOperands(self) -> _ods_ir.OpOperandList:
    operand_range = _ods_segmented_accessor(
         self.operands,
         self.attributes["operandSegmentSizes"], 1)
    return operand_range

  @builtins.property
  def caseOperands(self) -> _ods_ir.OpOperandList:
    operand_range = _ods_segmented_accessor(
         self.operands,
         self.attributes["operandSegmentSizes"], 2)
    return operand_range

  @builtins.property
  def case_values(self) -> _Optional[_ods_ir.DenseIntElementsAttr]:
    if "case_values" not in self.attributes:
      return None
    return self.attributes["case_values"]

  @builtins.property
  def case_operand_segments(self) -> _ods_ir.DenseI32ArrayAttr:
    return self.attributes["case_operand_segments"]

  @builtins.property
  def branch_weights(self) -> _Optional[_ods_ir.DenseI32ArrayAttr]:
    if "branch_weights" not in self.attributes:
      return None
    return self.attributes["branch_weights"]

def switch(value: _ods_ir.Value[_ods_ir.IntegerType], default_operands: _Sequence[_ods_ir.Value], case_operands: _Sequence[_ods_ir.Value], case_operand_segments: _Union[_Sequence[int], _ods_ir.DenseI32ArrayAttr], default_destination: _ods_ir.Block, case_destinations: _Sequence[_ods_ir.Block], *, case_values: _Optional[_Union[_Any, _ods_ir.DenseIntElementsAttr]] = None, branch_weights: _Optional[_Union[_Sequence[int], _ods_ir.DenseI32ArrayAttr]] = None, loc: _Optional[_ods_ir.Location] = None, ip: _Optional[_ods_ir.InsertionPoint] = None) -> SwitchOp:
  return SwitchOp(value=value, defaultOperands=default_operands, caseOperands=case_operands, case_operand_segments=case_operand_segments, defaultDestination=default_destination, caseDestinations=case_destinations, case_values=case_values, branch_weights=branch_weights, loc=loc, ip=ip)

@_ods_cext.register_operation(_Dialect)
class TanOp(_ods_ir.OpView):
  OPERATION_NAME = "llvm.intr.tan"

  _ODS_REGIONS = (0, True)

  def __init__(self, in_: _ods_ir.Value, *, fastmathFlags: _Optional[_Union[_Any, _ods_ir.Attribute]] = None, results: _Optional[_Sequence[_ods_ir.Type]] = None, loc: _Optional[_ods_ir.Location] = None, ip: _Optional[_ods_ir.InsertionPoint] = None):
    operands = []
    attributes = {}
    regions = None
    operands.append(in_)
    _ods_context = _ods_get_default_loc_context(loc)
    if fastmathFlags is not None: attributes["fastmathFlags"] = (fastmathFlags if (
        isinstance(fastmathFlags, _ods_ir.Attribute) or
        not _ods_ir.AttrBuilder.contains('llvm.LLVM_FastmathFlagsAttr')) else
          _ods_ir.AttrBuilder.get('llvm.LLVM_FastmathFlagsAttr')(fastmathFlags, context=_ods_context))
    if results is None: results = [operands[0].type] * 1
    _ods_successors = None
    super().__init__(self.OPERATION_NAME, self._ODS_REGIONS, self._ODS_OPERAND_SEGMENTS, self._ODS_RESULT_SEGMENTS, attributes=attributes, results=results, operands=operands, successors=_ods_successors, regions=regions, loc=loc, ip=ip)

  @builtins.property
  def in_(self) -> _ods_ir.Value:
    return self.operation.operands[0]

  @builtins.property
  def fastmathFlags(self) -> _ods_ir.Attribute:
    return self.operation.attributes["fastmathFlags"]

  @fastmathFlags.setter
  def fastmathFlags(self, value: _ods_ir.Attribute):
    if value is None:
      raise ValueError("'None' not allowed as value for mandatory attributes")
    self.operation.attributes["fastmathFlags"] = value

  @builtins.property
  def res(self) -> _ods_ir.OpResult:
    return self.operation.results[0]

@_ods_cext.register_op_adaptor(TanOp)
class TanOpAdaptor(_ods_ir.OpAdaptor):
  OPERATION_NAME = "llvm.intr.tan"

  @builtins.property
  def in_(self) -> _ods_ir.Value:
    return self.operands[0]

  @builtins.property
  def fastmathFlags(self) -> _ods_ir.Attribute:
    return self.attributes["fastmathFlags"]

def intr_tan(in_: _ods_ir.Value, *, fastmath_flags: _Optional[_Union[_Any, _ods_ir.Attribute]] = None, results: _Optional[_Sequence[_ods_ir.Type]] = None, loc: _Optional[_ods_ir.Location] = None, ip: _Optional[_ods_ir.InsertionPoint] = None) -> _ods_ir.OpResult:
  return TanOp(in_=in_, fastmathFlags=fastmath_flags, results=results, loc=loc, ip=ip).result

@_ods_cext.register_operation(_Dialect)
class TanhOp(_ods_ir.OpView):
  OPERATION_NAME = "llvm.intr.tanh"

  _ODS_REGIONS = (0, True)

  def __init__(self, in_: _ods_ir.Value, *, fastmathFlags: _Optional[_Union[_Any, _ods_ir.Attribute]] = None, results: _Optional[_Sequence[_ods_ir.Type]] = None, loc: _Optional[_ods_ir.Location] = None, ip: _Optional[_ods_ir.InsertionPoint] = None):
    operands = []
    attributes = {}
    regions = None
    operands.append(in_)
    _ods_context = _ods_get_default_loc_context(loc)
    if fastmathFlags is not None: attributes["fastmathFlags"] = (fastmathFlags if (
        isinstance(fastmathFlags, _ods_ir.Attribute) or
        not _ods_ir.AttrBuilder.contains('llvm.LLVM_FastmathFlagsAttr')) else
          _ods_ir.AttrBuilder.get('llvm.LLVM_FastmathFlagsAttr')(fastmathFlags, context=_ods_context))
    if results is None: results = [operands[0].type] * 1
    _ods_successors = None
    super().__init__(self.OPERATION_NAME, self._ODS_REGIONS, self._ODS_OPERAND_SEGMENTS, self._ODS_RESULT_SEGMENTS, attributes=attributes, results=results, operands=operands, successors=_ods_successors, regions=regions, loc=loc, ip=ip)

  @builtins.property
  def in_(self) -> _ods_ir.Value:
    return self.operation.operands[0]

  @builtins.property
  def fastmathFlags(self) -> _ods_ir.Attribute:
    return self.operation.attributes["fastmathFlags"]

  @fastmathFlags.setter
  def fastmathFlags(self, value: _ods_ir.Attribute):
    if value is None:
      raise ValueError("'None' not allowed as value for mandatory attributes")
    self.operation.attributes["fastmathFlags"] = value

  @builtins.property
  def res(self) -> _ods_ir.OpResult:
    return self.operation.results[0]

@_ods_cext.register_op_adaptor(TanhOp)
class TanhOpAdaptor(_ods_ir.OpAdaptor):
  OPERATION_NAME = "llvm.intr.tanh"

  @builtins.property
  def in_(self) -> _ods_ir.Value:
    return self.operands[0]

  @builtins.property
  def fastmathFlags(self) -> _ods_ir.Attribute:
    return self.attributes["fastmathFlags"]

def intr_tanh(in_: _ods_ir.Value, *, fastmath_flags: _Optional[_Union[_Any, _ods_ir.Attribute]] = None, results: _Optional[_Sequence[_ods_ir.Type]] = None, loc: _Optional[_ods_ir.Location] = None, ip: _Optional[_ods_ir.InsertionPoint] = None) -> _ods_ir.OpResult:
  return TanhOp(in_=in_, fastmathFlags=fastmath_flags, results=results, loc=loc, ip=ip).result

@_ods_cext.register_operation(_Dialect)
class ThreadlocalAddressOp(_ods_ir.OpView):
  OPERATION_NAME = "llvm.intr.threadlocal.address"

  _ODS_REGIONS = (0, True)

  def __init__(self, res: _ods_ir.Type, global_: _ods_ir.Value, *, loc: _Optional[_ods_ir.Location] = None, ip: _Optional[_ods_ir.InsertionPoint] = None):
    operands = []
    attributes = {}
    regions = None
    operands.append(global_)
    _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 global_(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(ThreadlocalAddressOp)
class ThreadlocalAddressOpAdaptor(_ods_ir.OpAdaptor):
  OPERATION_NAME = "llvm.intr.threadlocal.address"

  @builtins.property
  def global_(self) -> _ods_ir.Value:
    return self.operands[0]

def intr_threadlocal_address(res: _ods_ir.Type, global_: _ods_ir.Value, *, loc: _Optional[_ods_ir.Location] = None, ip: _Optional[_ods_ir.InsertionPoint] = None) -> _ods_ir.OpResult:
  return ThreadlocalAddressOp(res=res, global_=global_, loc=loc, ip=ip).result

@_ods_cext.register_operation(_Dialect)
class Trap(_ods_ir.OpView):
  OPERATION_NAME = "llvm.intr.trap"

  _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(Trap)
class TrapAdaptor(_ods_ir.OpAdaptor):
  OPERATION_NAME = "llvm.intr.trap"

def intr_trap(*, loc: _Optional[_ods_ir.Location] = None, ip: _Optional[_ods_ir.InsertionPoint] = None) -> Trap:
  return Trap(loc=loc, ip=ip)

@_ods_cext.register_operation(_Dialect)
class TruncOp(_ods_ir.OpView):
  OPERATION_NAME = "llvm.trunc"

  _ODS_REGIONS = (0, True)

  def __init__(self, res: _ods_ir.Type, arg: _ods_ir.Value, overflowFlags, *, 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(TruncOp)
class TruncOpAdaptor(_ods_ir.OpAdaptor):
  OPERATION_NAME = "llvm.trunc"

  @builtins.property
  def arg(self) -> _ods_ir.Value:
    return self.operands[0]

def trunc(res: _ods_ir.Type, arg: _ods_ir.Value, overflow_flags, *, loc: _Optional[_ods_ir.Location] = None, ip: _Optional[_ods_ir.InsertionPoint] = None) -> _ods_ir.OpResult:
  return TruncOp(res=res, arg=arg, overflowFlags=overflow_flags, loc=loc, ip=ip).result

@_ods_cext.register_operation(_Dialect)
class UAddSat(_ods_ir.OpView):
  OPERATION_NAME = "llvm.intr.uadd.sat"

  _ODS_REGIONS = (0, True)

  def __init__(self, a: _ods_ir.Value, b: _ods_ir.Value, *, results: _Optional[_Sequence[_ods_ir.Type]] = None, loc: _Optional[_ods_ir.Location] = None, ip: _Optional[_ods_ir.InsertionPoint] = None):
    operands = []
    attributes = {}
    regions = None
    operands.append(a)
    operands.append(b)
    _ods_context = _ods_get_default_loc_context(loc)
    if results is None: results = [operands[0].type] * 1
    _ods_successors = None
    super().__init__(self.OPERATION_NAME, self._ODS_REGIONS, self._ODS_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 res(self) -> _ods_ir.OpResult:
    return self.operation.results[0]

@_ods_cext.register_op_adaptor(UAddSat)
class UAddSatAdaptor(_ods_ir.OpAdaptor):
  OPERATION_NAME = "llvm.intr.uadd.sat"

  @builtins.property
  def a(self) -> _ods_ir.Value:
    return self.operands[0]

  @builtins.property
  def b(self) -> _ods_ir.Value:
    return self.operands[1]

def intr_uadd_sat(a: _ods_ir.Value, b: _ods_ir.Value, *, results: _Optional[_Sequence[_ods_ir.Type]] = None, loc: _Optional[_ods_ir.Location] = None, ip: _Optional[_ods_ir.InsertionPoint] = None) -> _ods_ir.OpResult:
  return UAddSat(a=a, b=b, results=results, loc=loc, ip=ip).result

@_ods_cext.register_operation(_Dialect)
class UAddWithOverflowOp(_ods_ir.OpView):
  OPERATION_NAME = "llvm.intr.uadd.with.overflow"

  _ODS_REGIONS = (0, True)

  def __init__(self, res: _ods_ir.Type, _gen_arg_0: _ods_ir.Value, _gen_arg_1: _ods_ir.Value, *, loc: _Optional[_ods_ir.Location] = None, ip: _Optional[_ods_ir.InsertionPoint] = None):
    operands = []
    attributes = {}
    regions = None
    operands.append(_gen_arg_0)
    operands.append(_gen_arg_1)
    _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 res(self) -> _ods_ir.OpResult:
    return self.operation.results[0]

@_ods_cext.register_op_adaptor(UAddWithOverflowOp)
class UAddWithOverflowOpAdaptor(_ods_ir.OpAdaptor):
  OPERATION_NAME = "llvm.intr.uadd.with.overflow"

def intr_uadd_with_overflow(res: _ods_ir.Type, _gen_arg_0: _ods_ir.Value, _gen_arg_1: _ods_ir.Value, *, loc: _Optional[_ods_ir.Location] = None, ip: _Optional[_ods_ir.InsertionPoint] = None) -> _ods_ir.OpResult:
  return UAddWithOverflowOp(res=res, _gen_arg_0=_gen_arg_0, _gen_arg_1=_gen_arg_1, loc=loc, ip=ip).result

@_ods_cext.register_operation(_Dialect)
class UBSanTrap(_ods_ir.OpView):
  OPERATION_NAME = "llvm.intr.ubsantrap"

  _ODS_REGIONS = (0, True)

  def __init__(self, failureKind: _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["failureKind"] = (failureKind if (
    isinstance(failureKind, _ods_ir.Attribute) or
    not _ods_ir.AttrBuilder.contains('I8Attr')) else
      _ods_ir.AttrBuilder.get('I8Attr')(failureKind, 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 failureKind(self) -> _ods_ir.IntegerAttr:
    return self.operation.attributes["failureKind"]

  @failureKind.setter
  def failureKind(self, value: _ods_ir.IntegerAttr):
    if value is None:
      raise ValueError("'None' not allowed as value for mandatory attributes")
    self.operation.attributes["failureKind"] = value

@_ods_cext.register_op_adaptor(UBSanTrap)
class UBSanTrapAdaptor(_ods_ir.OpAdaptor):
  OPERATION_NAME = "llvm.intr.ubsantrap"

  @builtins.property
  def failureKind(self) -> _ods_ir.IntegerAttr:
    return self.attributes["failureKind"]

def intr_ubsantrap(failure_kind: _Union[int, _ods_ir.IntegerAttr], *, loc: _Optional[_ods_ir.Location] = None, ip: _Optional[_ods_ir.InsertionPoint] = None) -> UBSanTrap:
  return UBSanTrap(failureKind=failure_kind, loc=loc, ip=ip)

@_ods_cext.register_operation(_Dialect)
class UCmpOp(_ods_ir.OpView):
  OPERATION_NAME = "llvm.intr.ucmp"

  _ODS_REGIONS = (0, True)

  def __init__(self, res: _ods_ir.Type, a: _ods_ir.Value, b: _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)
    _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 res(self) -> _ods_ir.OpResult:
    return self.operation.results[0]

@_ods_cext.register_op_adaptor(UCmpOp)
class UCmpOpAdaptor(_ods_ir.OpAdaptor):
  OPERATION_NAME = "llvm.intr.ucmp"

  @builtins.property
  def a(self) -> _ods_ir.Value:
    return self.operands[0]

  @builtins.property
  def b(self) -> _ods_ir.Value:
    return self.operands[1]

def intr_ucmp(res: _ods_ir.Type, a: _ods_ir.Value, b: _ods_ir.Value, *, loc: _Optional[_ods_ir.Location] = None, ip: _Optional[_ods_ir.InsertionPoint] = None) -> _ods_ir.OpResult:
  return UCmpOp(res=res, a=a, b=b, loc=loc, ip=ip).result

@_ods_cext.register_operation(_Dialect)
class UDivOp(_ods_ir.OpView):
  OPERATION_NAME = "llvm.udiv"

  _ODS_REGIONS = (0, True)

  def __init__(self, lhs: _ods_ir.Value, rhs: _ods_ir.Value, *, isExact: _Optional[bool] = None, results: _Optional[_Sequence[_ods_ir.Type]] = None, loc: _Optional[_ods_ir.Location] = None, ip: _Optional[_ods_ir.InsertionPoint] = None):
    operands = []
    attributes = {}
    regions = None
    operands.append(lhs)
    operands.append(rhs)
    _ods_context = _ods_get_default_loc_context(loc)
    if bool(isExact): attributes["isExact"] = _ods_ir.UnitAttr.get(
      _ods_get_default_loc_context(loc))
    if results is None: results = [operands[0].type] * 1
    _ods_successors = None
    super().__init__(self.OPERATION_NAME, self._ODS_REGIONS, self._ODS_OPERAND_SEGMENTS, self._ODS_RESULT_SEGMENTS, attributes=attributes, results=results, operands=operands, successors=_ods_successors, regions=regions, loc=loc, ip=ip)

  @builtins.property
  def lhs(self) -> _ods_ir.Value:
    return self.operation.operands[0]

  @builtins.property
  def rhs(self) -> _ods_ir.Value:
    return self.operation.operands[1]

  @builtins.property
  def isExact(self) -> bool:
    return "isExact" in self.operation.attributes

  @isExact.setter
  def isExact(self, value):
    if bool(value):
      self.operation.attributes["isExact"] = _ods_ir.UnitAttr.get()
    elif "isExact" in self.operation.attributes:
      del self.operation.attributes["isExact"]

  @isExact.deleter
  def isExact(self):
    del self.operation.attributes["isExact"]

  @builtins.property
  def res(self) -> _ods_ir.OpResult:
    return self.operation.results[0]

@_ods_cext.register_op_adaptor(UDivOp)
class UDivOpAdaptor(_ods_ir.OpAdaptor):
  OPERATION_NAME = "llvm.udiv"

  @builtins.property
  def lhs(self) -> _ods_ir.Value:
    return self.operands[0]

  @builtins.property
  def rhs(self) -> _ods_ir.Value:
    return self.operands[1]

  @builtins.property
  def isExact(self) -> bool:
    return "isExact" in self.attributes

def udiv(lhs: _ods_ir.Value, rhs: _ods_ir.Value, *, is_exact: _Optional[bool] = None, results: _Optional[_Sequence[_ods_ir.Type]] = None, loc: _Optional[_ods_ir.Location] = None, ip: _Optional[_ods_ir.InsertionPoint] = None) -> _ods_ir.OpResult:
  return UDivOp(lhs=lhs, rhs=rhs, isExact=is_exact, results=results, loc=loc, ip=ip).result

@_ods_cext.register_operation(_Dialect)
class UIToFPOp(_ods_ir.OpView):
  OPERATION_NAME = "llvm.uitofp"

  _ODS_REGIONS = (0, True)

  def __init__(self, res: _ods_ir.Type, arg: _ods_ir.Value, *, nonNeg: _Optional[bool] = None, 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)
    if bool(nonNeg): attributes["nonNeg"] = _ods_ir.UnitAttr.get(
      _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 nonNeg(self) -> bool:
    return "nonNeg" in self.operation.attributes

  @nonNeg.setter
  def nonNeg(self, value):
    if bool(value):
      self.operation.attributes["nonNeg"] = _ods_ir.UnitAttr.get()
    elif "nonNeg" in self.operation.attributes:
      del self.operation.attributes["nonNeg"]

  @nonNeg.deleter
  def nonNeg(self):
    del self.operation.attributes["nonNeg"]

  @builtins.property
  def res(self) -> _ods_ir.OpResult:
    return self.operation.results[0]

@_ods_cext.register_op_adaptor(UIToFPOp)
class UIToFPOpAdaptor(_ods_ir.OpAdaptor):
  OPERATION_NAME = "llvm.uitofp"

  @builtins.property
  def arg(self) -> _ods_ir.Value:
    return self.operands[0]

  @builtins.property
  def nonNeg(self) -> bool:
    return "nonNeg" in self.attributes

def uitofp(res: _ods_ir.Type, arg: _ods_ir.Value, *, non_neg: _Optional[bool] = None, loc: _Optional[_ods_ir.Location] = None, ip: _Optional[_ods_ir.InsertionPoint] = None) -> _ods_ir.OpResult:
  return UIToFPOp(res=res, arg=arg, nonNeg=non_neg, loc=loc, ip=ip).result

@_ods_cext.register_operation(_Dialect)
class UMaxOp(_ods_ir.OpView):
  OPERATION_NAME = "llvm.intr.umax"

  _ODS_REGIONS = (0, True)

  def __init__(self, a: _ods_ir.Value, b: _ods_ir.Value, *, results: _Optional[_Sequence[_ods_ir.Type]] = None, loc: _Optional[_ods_ir.Location] = None, ip: _Optional[_ods_ir.InsertionPoint] = None):
    operands = []
    attributes = {}
    regions = None
    operands.append(a)
    operands.append(b)
    _ods_context = _ods_get_default_loc_context(loc)
    if results is None: results = [operands[0].type] * 1
    _ods_successors = None
    super().__init__(self.OPERATION_NAME, self._ODS_REGIONS, self._ODS_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 res(self) -> _ods_ir.OpResult:
    return self.operation.results[0]

@_ods_cext.register_op_adaptor(UMaxOp)
class UMaxOpAdaptor(_ods_ir.OpAdaptor):
  OPERATION_NAME = "llvm.intr.umax"

  @builtins.property
  def a(self) -> _ods_ir.Value:
    return self.operands[0]

  @builtins.property
  def b(self) -> _ods_ir.Value:
    return self.operands[1]

def intr_umax(a: _ods_ir.Value, b: _ods_ir.Value, *, results: _Optional[_Sequence[_ods_ir.Type]] = None, loc: _Optional[_ods_ir.Location] = None, ip: _Optional[_ods_ir.InsertionPoint] = None) -> _ods_ir.OpResult:
  return UMaxOp(a=a, b=b, results=results, loc=loc, ip=ip).result

@_ods_cext.register_operation(_Dialect)
class UMinOp(_ods_ir.OpView):
  OPERATION_NAME = "llvm.intr.umin"

  _ODS_REGIONS = (0, True)

  def __init__(self, a: _ods_ir.Value, b: _ods_ir.Value, *, results: _Optional[_Sequence[_ods_ir.Type]] = None, loc: _Optional[_ods_ir.Location] = None, ip: _Optional[_ods_ir.InsertionPoint] = None):
    operands = []
    attributes = {}
    regions = None
    operands.append(a)
    operands.append(b)
    _ods_context = _ods_get_default_loc_context(loc)
    if results is None: results = [operands[0].type] * 1
    _ods_successors = None
    super().__init__(self.OPERATION_NAME, self._ODS_REGIONS, self._ODS_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 res(self) -> _ods_ir.OpResult:
    return self.operation.results[0]

@_ods_cext.register_op_adaptor(UMinOp)
class UMinOpAdaptor(_ods_ir.OpAdaptor):
  OPERATION_NAME = "llvm.intr.umin"

  @builtins.property
  def a(self) -> _ods_ir.Value:
    return self.operands[0]

  @builtins.property
  def b(self) -> _ods_ir.Value:
    return self.operands[1]

def intr_umin(a: _ods_ir.Value, b: _ods_ir.Value, *, results: _Optional[_Sequence[_ods_ir.Type]] = None, loc: _Optional[_ods_ir.Location] = None, ip: _Optional[_ods_ir.InsertionPoint] = None) -> _ods_ir.OpResult:
  return UMinOp(a=a, b=b, results=results, loc=loc, ip=ip).result

@_ods_cext.register_operation(_Dialect)
class UMulWithOverflowOp(_ods_ir.OpView):
  OPERATION_NAME = "llvm.intr.umul.with.overflow"

  _ODS_REGIONS = (0, True)

  def __init__(self, res: _ods_ir.Type, _gen_arg_0: _ods_ir.Value, _gen_arg_1: _ods_ir.Value, *, loc: _Optional[_ods_ir.Location] = None, ip: _Optional[_ods_ir.InsertionPoint] = None):
    operands = []
    attributes = {}
    regions = None
    operands.append(_gen_arg_0)
    operands.append(_gen_arg_1)
    _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 res(self) -> _ods_ir.OpResult:
    return self.operation.results[0]

@_ods_cext.register_op_adaptor(UMulWithOverflowOp)
class UMulWithOverflowOpAdaptor(_ods_ir.OpAdaptor):
  OPERATION_NAME = "llvm.intr.umul.with.overflow"

def intr_umul_with_overflow(res: _ods_ir.Type, _gen_arg_0: _ods_ir.Value, _gen_arg_1: _ods_ir.Value, *, loc: _Optional[_ods_ir.Location] = None, ip: _Optional[_ods_ir.InsertionPoint] = None) -> _ods_ir.OpResult:
  return UMulWithOverflowOp(res=res, _gen_arg_0=_gen_arg_0, _gen_arg_1=_gen_arg_1, loc=loc, ip=ip).result

@_ods_cext.register_operation(_Dialect)
class URemOp(_ods_ir.OpView):
  OPERATION_NAME = "llvm.urem"

  _ODS_REGIONS = (0, True)

  def __init__(self, lhs: _ods_ir.Value, rhs: _ods_ir.Value, *, results: _Optional[_Sequence[_ods_ir.Type]] = None, loc: _Optional[_ods_ir.Location] = None, ip: _Optional[_ods_ir.InsertionPoint] = None):
    operands = []
    attributes = {}
    regions = None
    operands.append(lhs)
    operands.append(rhs)
    _ods_context = _ods_get_default_loc_context(loc)
    if results is None: results = [operands[0].type] * 1
    _ods_successors = None
    super().__init__(self.OPERATION_NAME, self._ODS_REGIONS, self._ODS_OPERAND_SEGMENTS, self._ODS_RESULT_SEGMENTS, attributes=attributes, results=results, operands=operands, successors=_ods_successors, regions=regions, loc=loc, ip=ip)

  @builtins.property
  def lhs(self) -> _ods_ir.Value:
    return self.operation.operands[0]

  @builtins.property
  def rhs(self) -> _ods_ir.Value:
    return self.operation.operands[1]

  @builtins.property
  def res(self) -> _ods_ir.OpResult:
    return self.operation.results[0]

@_ods_cext.register_op_adaptor(URemOp)
class URemOpAdaptor(_ods_ir.OpAdaptor):
  OPERATION_NAME = "llvm.urem"

  @builtins.property
  def lhs(self) -> _ods_ir.Value:
    return self.operands[0]

  @builtins.property
  def rhs(self) -> _ods_ir.Value:
    return self.operands[1]

def urem(lhs: _ods_ir.Value, rhs: _ods_ir.Value, *, results: _Optional[_Sequence[_ods_ir.Type]] = None, loc: _Optional[_ods_ir.Location] = None, ip: _Optional[_ods_ir.InsertionPoint] = None) -> _ods_ir.OpResult:
  return URemOp(lhs=lhs, rhs=rhs, results=results, loc=loc, ip=ip).result

@_ods_cext.register_operation(_Dialect)
class USHLSat(_ods_ir.OpView):
  OPERATION_NAME = "llvm.intr.ushl.sat"

  _ODS_REGIONS = (0, True)

  def __init__(self, a: _ods_ir.Value, b: _ods_ir.Value, *, results: _Optional[_Sequence[_ods_ir.Type]] = None, loc: _Optional[_ods_ir.Location] = None, ip: _Optional[_ods_ir.InsertionPoint] = None):
    operands = []
    attributes = {}
    regions = None
    operands.append(a)
    operands.append(b)
    _ods_context = _ods_get_default_loc_context(loc)
    if results is None: results = [operands[0].type] * 1
    _ods_successors = None
    super().__init__(self.OPERATION_NAME, self._ODS_REGIONS, self._ODS_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 res(self) -> _ods_ir.OpResult:
    return self.operation.results[0]

@_ods_cext.register_op_adaptor(USHLSat)
class USHLSatAdaptor(_ods_ir.OpAdaptor):
  OPERATION_NAME = "llvm.intr.ushl.sat"

  @builtins.property
  def a(self) -> _ods_ir.Value:
    return self.operands[0]

  @builtins.property
  def b(self) -> _ods_ir.Value:
    return self.operands[1]

def intr_ushl_sat(a: _ods_ir.Value, b: _ods_ir.Value, *, results: _Optional[_Sequence[_ods_ir.Type]] = None, loc: _Optional[_ods_ir.Location] = None, ip: _Optional[_ods_ir.InsertionPoint] = None) -> _ods_ir.OpResult:
  return USHLSat(a=a, b=b, results=results, loc=loc, ip=ip).result

@_ods_cext.register_operation(_Dialect)
class USubSat(_ods_ir.OpView):
  OPERATION_NAME = "llvm.intr.usub.sat"

  _ODS_REGIONS = (0, True)

  def __init__(self, a: _ods_ir.Value, b: _ods_ir.Value, *, results: _Optional[_Sequence[_ods_ir.Type]] = None, loc: _Optional[_ods_ir.Location] = None, ip: _Optional[_ods_ir.InsertionPoint] = None):
    operands = []
    attributes = {}
    regions = None
    operands.append(a)
    operands.append(b)
    _ods_context = _ods_get_default_loc_context(loc)
    if results is None: results = [operands[0].type] * 1
    _ods_successors = None
    super().__init__(self.OPERATION_NAME, self._ODS_REGIONS, self._ODS_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 res(self) -> _ods_ir.OpResult:
    return self.operation.results[0]

@_ods_cext.register_op_adaptor(USubSat)
class USubSatAdaptor(_ods_ir.OpAdaptor):
  OPERATION_NAME = "llvm.intr.usub.sat"

  @builtins.property
  def a(self) -> _ods_ir.Value:
    return self.operands[0]

  @builtins.property
  def b(self) -> _ods_ir.Value:
    return self.operands[1]

def intr_usub_sat(a: _ods_ir.Value, b: _ods_ir.Value, *, results: _Optional[_Sequence[_ods_ir.Type]] = None, loc: _Optional[_ods_ir.Location] = None, ip: _Optional[_ods_ir.InsertionPoint] = None) -> _ods_ir.OpResult:
  return USubSat(a=a, b=b, results=results, loc=loc, ip=ip).result

@_ods_cext.register_operation(_Dialect)
class USubWithOverflowOp(_ods_ir.OpView):
  OPERATION_NAME = "llvm.intr.usub.with.overflow"

  _ODS_REGIONS = (0, True)

  def __init__(self, res: _ods_ir.Type, _gen_arg_0: _ods_ir.Value, _gen_arg_1: _ods_ir.Value, *, loc: _Optional[_ods_ir.Location] = None, ip: _Optional[_ods_ir.InsertionPoint] = None):
    operands = []
    attributes = {}
    regions = None
    operands.append(_gen_arg_0)
    operands.append(_gen_arg_1)
    _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 res(self) -> _ods_ir.OpResult:
    return self.operation.results[0]

@_ods_cext.register_op_adaptor(USubWithOverflowOp)
class USubWithOverflowOpAdaptor(_ods_ir.OpAdaptor):
  OPERATION_NAME = "llvm.intr.usub.with.overflow"

def intr_usub_with_overflow(res: _ods_ir.Type, _gen_arg_0: _ods_ir.Value, _gen_arg_1: _ods_ir.Value, *, loc: _Optional[_ods_ir.Location] = None, ip: _Optional[_ods_ir.InsertionPoint] = None) -> _ods_ir.OpResult:
  return USubWithOverflowOp(res=res, _gen_arg_0=_gen_arg_0, _gen_arg_1=_gen_arg_1, loc=loc, ip=ip).result

@_ods_cext.register_operation(_Dialect)
class UndefOp(_ods_ir.OpView):
  r"""
  Unlike LLVM IR, MLIR does not have first-class undefined values. Such values
  must be created as SSA values using `llvm.mlir.undef`. This operation has no
  operands or attributes. It creates an undefined value of the specified LLVM
  IR dialect type.
  
  Example:
  
  ```mlir
  // Create a structure with a 32-bit integer followed by a float.
  %0 = llvm.mlir.undef : !llvm.struct<(i32, f32)>
  ```
  """

  OPERATION_NAME = "llvm.mlir.undef"

  _ODS_REGIONS = (0, True)

  def __init__(self, res: _ods_ir.Type, *, 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 = []
    results.append(res)
    _ods_successors = None
    super().__init__(self.OPERATION_NAME, self._ODS_REGIONS, self._ODS_OPERAND_SEGMENTS, self._ODS_RESULT_SEGMENTS, attributes=attributes, results=results, operands=operands, successors=_ods_successors, regions=regions, loc=loc, ip=ip)

  @builtins.property
  def res(self) -> _ods_ir.OpResult:
    return self.operation.results[0]

@_ods_cext.register_op_adaptor(UndefOp)
class UndefOpAdaptor(_ods_ir.OpAdaptor):
  OPERATION_NAME = "llvm.mlir.undef"

def mlir_undef(res: _ods_ir.Type, *, loc: _Optional[_ods_ir.Location] = None, ip: _Optional[_ods_ir.InsertionPoint] = None) -> _ods_ir.OpResult:
  return UndefOp(res=res, loc=loc, ip=ip).result

@_ods_cext.register_operation(_Dialect)
class UnreachableOp(_ods_ir.OpView):
  OPERATION_NAME = "llvm.unreachable"

  _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(UnreachableOp)
class UnreachableOpAdaptor(_ods_ir.OpAdaptor):
  OPERATION_NAME = "llvm.unreachable"

def unreachable(*, loc: _Optional[_ods_ir.Location] = None, ip: _Optional[_ods_ir.InsertionPoint] = None) -> UnreachableOp:
  return UnreachableOp(loc=loc, ip=ip)

@_ods_cext.register_operation(_Dialect)
class VPAShrOp(_ods_ir.OpView):
  OPERATION_NAME = "llvm.intr.vp.ashr"

  _ODS_REGIONS = (0, True)

  def __init__(self, res: _ods_ir.Type, lhs: _ods_ir.Value[_ods_ir.VectorType], rhs: _ods_ir.Value[_ods_ir.VectorType], mask: _ods_ir.Value[_ods_ir.VectorType], evl: _ods_ir.Value[_ods_ir.IntegerType], *, loc: _Optional[_ods_ir.Location] = None, ip: _Optional[_ods_ir.InsertionPoint] = None):
    operands = []
    attributes = {}
    regions = None
    operands.append(lhs)
    operands.append(rhs)
    operands.append(mask)
    operands.append(evl)
    _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 lhs(self) -> _ods_ir.Value[_ods_ir.VectorType]:
    return self.operation.operands[0]

  @builtins.property
  def rhs(self) -> _ods_ir.Value[_ods_ir.VectorType]:
    return self.operation.operands[1]

  @builtins.property
  def mask(self) -> _ods_ir.Value[_ods_ir.VectorType]:
    return self.operation.operands[2]

  @builtins.property
  def evl(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(VPAShrOp)
class VPAShrOpAdaptor(_ods_ir.OpAdaptor):
  OPERATION_NAME = "llvm.intr.vp.ashr"

  @builtins.property
  def lhs(self) -> _ods_ir.Value[_ods_ir.VectorType]:
    return self.operands[0]

  @builtins.property
  def rhs(self) -> _ods_ir.Value[_ods_ir.VectorType]:
    return self.operands[1]

  @builtins.property
  def mask(self) -> _ods_ir.Value[_ods_ir.VectorType]:
    return self.operands[2]

  @builtins.property
  def evl(self) -> _ods_ir.Value[_ods_ir.IntegerType]:
    return self.operands[3]

def intr_vp_ashr(res: _ods_ir.Type, lhs: _ods_ir.Value[_ods_ir.VectorType], rhs: _ods_ir.Value[_ods_ir.VectorType], mask: _ods_ir.Value[_ods_ir.VectorType], evl: _ods_ir.Value[_ods_ir.IntegerType], *, loc: _Optional[_ods_ir.Location] = None, ip: _Optional[_ods_ir.InsertionPoint] = None) -> _ods_ir.OpResult:
  return VPAShrOp(res=res, lhs=lhs, rhs=rhs, mask=mask, evl=evl, loc=loc, ip=ip).result

@_ods_cext.register_operation(_Dialect)
class VPAddOp(_ods_ir.OpView):
  OPERATION_NAME = "llvm.intr.vp.add"

  _ODS_REGIONS = (0, True)

  def __init__(self, res: _ods_ir.Type, lhs: _ods_ir.Value[_ods_ir.VectorType], rhs: _ods_ir.Value[_ods_ir.VectorType], mask: _ods_ir.Value[_ods_ir.VectorType], evl: _ods_ir.Value[_ods_ir.IntegerType], *, loc: _Optional[_ods_ir.Location] = None, ip: _Optional[_ods_ir.InsertionPoint] = None):
    operands = []
    attributes = {}
    regions = None
    operands.append(lhs)
    operands.append(rhs)
    operands.append(mask)
    operands.append(evl)
    _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 lhs(self) -> _ods_ir.Value[_ods_ir.VectorType]:
    return self.operation.operands[0]

  @builtins.property
  def rhs(self) -> _ods_ir.Value[_ods_ir.VectorType]:
    return self.operation.operands[1]

  @builtins.property
  def mask(self) -> _ods_ir.Value[_ods_ir.VectorType]:
    return self.operation.operands[2]

  @builtins.property
  def evl(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(VPAddOp)
class VPAddOpAdaptor(_ods_ir.OpAdaptor):
  OPERATION_NAME = "llvm.intr.vp.add"

  @builtins.property
  def lhs(self) -> _ods_ir.Value[_ods_ir.VectorType]:
    return self.operands[0]

  @builtins.property
  def rhs(self) -> _ods_ir.Value[_ods_ir.VectorType]:
    return self.operands[1]

  @builtins.property
  def mask(self) -> _ods_ir.Value[_ods_ir.VectorType]:
    return self.operands[2]

  @builtins.property
  def evl(self) -> _ods_ir.Value[_ods_ir.IntegerType]:
    return self.operands[3]

def intr_vp_add(res: _ods_ir.Type, lhs: _ods_ir.Value[_ods_ir.VectorType], rhs: _ods_ir.Value[_ods_ir.VectorType], mask: _ods_ir.Value[_ods_ir.VectorType], evl: _ods_ir.Value[_ods_ir.IntegerType], *, loc: _Optional[_ods_ir.Location] = None, ip: _Optional[_ods_ir.InsertionPoint] = None) -> _ods_ir.OpResult:
  return VPAddOp(res=res, lhs=lhs, rhs=rhs, mask=mask, evl=evl, loc=loc, ip=ip).result

@_ods_cext.register_operation(_Dialect)
class VPAndOp(_ods_ir.OpView):
  OPERATION_NAME = "llvm.intr.vp.and"

  _ODS_REGIONS = (0, True)

  def __init__(self, res: _ods_ir.Type, lhs: _ods_ir.Value[_ods_ir.VectorType], rhs: _ods_ir.Value[_ods_ir.VectorType], mask: _ods_ir.Value[_ods_ir.VectorType], evl: _ods_ir.Value[_ods_ir.IntegerType], *, loc: _Optional[_ods_ir.Location] = None, ip: _Optional[_ods_ir.InsertionPoint] = None):
    operands = []
    attributes = {}
    regions = None
    operands.append(lhs)
    operands.append(rhs)
    operands.append(mask)
    operands.append(evl)
    _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 lhs(self) -> _ods_ir.Value[_ods_ir.VectorType]:
    return self.operation.operands[0]

  @builtins.property
  def rhs(self) -> _ods_ir.Value[_ods_ir.VectorType]:
    return self.operation.operands[1]

  @builtins.property
  def mask(self) -> _ods_ir.Value[_ods_ir.VectorType]:
    return self.operation.operands[2]

  @builtins.property
  def evl(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(VPAndOp)
class VPAndOpAdaptor(_ods_ir.OpAdaptor):
  OPERATION_NAME = "llvm.intr.vp.and"

  @builtins.property
  def lhs(self) -> _ods_ir.Value[_ods_ir.VectorType]:
    return self.operands[0]

  @builtins.property
  def rhs(self) -> _ods_ir.Value[_ods_ir.VectorType]:
    return self.operands[1]

  @builtins.property
  def mask(self) -> _ods_ir.Value[_ods_ir.VectorType]:
    return self.operands[2]

  @builtins.property
  def evl(self) -> _ods_ir.Value[_ods_ir.IntegerType]:
    return self.operands[3]

def intr_vp_and(res: _ods_ir.Type, lhs: _ods_ir.Value[_ods_ir.VectorType], rhs: _ods_ir.Value[_ods_ir.VectorType], mask: _ods_ir.Value[_ods_ir.VectorType], evl: _ods_ir.Value[_ods_ir.IntegerType], *, loc: _Optional[_ods_ir.Location] = None, ip: _Optional[_ods_ir.InsertionPoint] = None) -> _ods_ir.OpResult:
  return VPAndOp(res=res, lhs=lhs, rhs=rhs, mask=mask, evl=evl, loc=loc, ip=ip).result

@_ods_cext.register_operation(_Dialect)
class VPFAddOp(_ods_ir.OpView):
  OPERATION_NAME = "llvm.intr.vp.fadd"

  _ODS_REGIONS = (0, True)

  def __init__(self, res: _ods_ir.Type, lhs: _ods_ir.Value[_ods_ir.VectorType], rhs: _ods_ir.Value[_ods_ir.VectorType], mask: _ods_ir.Value[_ods_ir.VectorType], evl: _ods_ir.Value[_ods_ir.IntegerType], *, loc: _Optional[_ods_ir.Location] = None, ip: _Optional[_ods_ir.InsertionPoint] = None):
    operands = []
    attributes = {}
    regions = None
    operands.append(lhs)
    operands.append(rhs)
    operands.append(mask)
    operands.append(evl)
    _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 lhs(self) -> _ods_ir.Value[_ods_ir.VectorType]:
    return self.operation.operands[0]

  @builtins.property
  def rhs(self) -> _ods_ir.Value[_ods_ir.VectorType]:
    return self.operation.operands[1]

  @builtins.property
  def mask(self) -> _ods_ir.Value[_ods_ir.VectorType]:
    return self.operation.operands[2]

  @builtins.property
  def evl(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(VPFAddOp)
class VPFAddOpAdaptor(_ods_ir.OpAdaptor):
  OPERATION_NAME = "llvm.intr.vp.fadd"

  @builtins.property
  def lhs(self) -> _ods_ir.Value[_ods_ir.VectorType]:
    return self.operands[0]

  @builtins.property
  def rhs(self) -> _ods_ir.Value[_ods_ir.VectorType]:
    return self.operands[1]

  @builtins.property
  def mask(self) -> _ods_ir.Value[_ods_ir.VectorType]:
    return self.operands[2]

  @builtins.property
  def evl(self) -> _ods_ir.Value[_ods_ir.IntegerType]:
    return self.operands[3]

def intr_vp_fadd(res: _ods_ir.Type, lhs: _ods_ir.Value[_ods_ir.VectorType], rhs: _ods_ir.Value[_ods_ir.VectorType], mask: _ods_ir.Value[_ods_ir.VectorType], evl: _ods_ir.Value[_ods_ir.IntegerType], *, loc: _Optional[_ods_ir.Location] = None, ip: _Optional[_ods_ir.InsertionPoint] = None) -> _ods_ir.OpResult:
  return VPFAddOp(res=res, lhs=lhs, rhs=rhs, mask=mask, evl=evl, loc=loc, ip=ip).result

@_ods_cext.register_operation(_Dialect)
class VPFDivOp(_ods_ir.OpView):
  OPERATION_NAME = "llvm.intr.vp.fdiv"

  _ODS_REGIONS = (0, True)

  def __init__(self, res: _ods_ir.Type, lhs: _ods_ir.Value[_ods_ir.VectorType], rhs: _ods_ir.Value[_ods_ir.VectorType], mask: _ods_ir.Value[_ods_ir.VectorType], evl: _ods_ir.Value[_ods_ir.IntegerType], *, loc: _Optional[_ods_ir.Location] = None, ip: _Optional[_ods_ir.InsertionPoint] = None):
    operands = []
    attributes = {}
    regions = None
    operands.append(lhs)
    operands.append(rhs)
    operands.append(mask)
    operands.append(evl)
    _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 lhs(self) -> _ods_ir.Value[_ods_ir.VectorType]:
    return self.operation.operands[0]

  @builtins.property
  def rhs(self) -> _ods_ir.Value[_ods_ir.VectorType]:
    return self.operation.operands[1]

  @builtins.property
  def mask(self) -> _ods_ir.Value[_ods_ir.VectorType]:
    return self.operation.operands[2]

  @builtins.property
  def evl(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(VPFDivOp)
class VPFDivOpAdaptor(_ods_ir.OpAdaptor):
  OPERATION_NAME = "llvm.intr.vp.fdiv"

  @builtins.property
  def lhs(self) -> _ods_ir.Value[_ods_ir.VectorType]:
    return self.operands[0]

  @builtins.property
  def rhs(self) -> _ods_ir.Value[_ods_ir.VectorType]:
    return self.operands[1]

  @builtins.property
  def mask(self) -> _ods_ir.Value[_ods_ir.VectorType]:
    return self.operands[2]

  @builtins.property
  def evl(self) -> _ods_ir.Value[_ods_ir.IntegerType]:
    return self.operands[3]

def intr_vp_fdiv(res: _ods_ir.Type, lhs: _ods_ir.Value[_ods_ir.VectorType], rhs: _ods_ir.Value[_ods_ir.VectorType], mask: _ods_ir.Value[_ods_ir.VectorType], evl: _ods_ir.Value[_ods_ir.IntegerType], *, loc: _Optional[_ods_ir.Location] = None, ip: _Optional[_ods_ir.InsertionPoint] = None) -> _ods_ir.OpResult:
  return VPFDivOp(res=res, lhs=lhs, rhs=rhs, mask=mask, evl=evl, loc=loc, ip=ip).result

@_ods_cext.register_operation(_Dialect)
class VPFMulAddOp(_ods_ir.OpView):
  OPERATION_NAME = "llvm.intr.vp.fmuladd"

  _ODS_REGIONS = (0, True)

  def __init__(self, res: _ods_ir.Type, op1: _ods_ir.Value[_ods_ir.VectorType], op2: _ods_ir.Value[_ods_ir.VectorType], op3: _ods_ir.Value[_ods_ir.VectorType], mask: _ods_ir.Value[_ods_ir.VectorType], evl: _ods_ir.Value[_ods_ir.IntegerType], *, loc: _Optional[_ods_ir.Location] = None, ip: _Optional[_ods_ir.InsertionPoint] = None):
    operands = []
    attributes = {}
    regions = None
    operands.append(op1)
    operands.append(op2)
    operands.append(op3)
    operands.append(mask)
    operands.append(evl)
    _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 op1(self) -> _ods_ir.Value[_ods_ir.VectorType]:
    return self.operation.operands[0]

  @builtins.property
  def op2(self) -> _ods_ir.Value[_ods_ir.VectorType]:
    return self.operation.operands[1]

  @builtins.property
  def op3(self) -> _ods_ir.Value[_ods_ir.VectorType]:
    return self.operation.operands[2]

  @builtins.property
  def mask(self) -> _ods_ir.Value[_ods_ir.VectorType]:
    return self.operation.operands[3]

  @builtins.property
  def evl(self) -> _ods_ir.Value[_ods_ir.IntegerType]:
    return self.operation.operands[4]

  @builtins.property
  def res(self) -> _ods_ir.OpResult:
    return self.operation.results[0]

@_ods_cext.register_op_adaptor(VPFMulAddOp)
class VPFMulAddOpAdaptor(_ods_ir.OpAdaptor):
  OPERATION_NAME = "llvm.intr.vp.fmuladd"

  @builtins.property
  def op1(self) -> _ods_ir.Value[_ods_ir.VectorType]:
    return self.operands[0]

  @builtins.property
  def op2(self) -> _ods_ir.Value[_ods_ir.VectorType]:
    return self.operands[1]

  @builtins.property
  def op3(self) -> _ods_ir.Value[_ods_ir.VectorType]:
    return self.operands[2]

  @builtins.property
  def mask(self) -> _ods_ir.Value[_ods_ir.VectorType]:
    return self.operands[3]

  @builtins.property
  def evl(self) -> _ods_ir.Value[_ods_ir.IntegerType]:
    return self.operands[4]

def intr_vp_fmuladd(res: _ods_ir.Type, op1: _ods_ir.Value[_ods_ir.VectorType], op2: _ods_ir.Value[_ods_ir.VectorType], op3: _ods_ir.Value[_ods_ir.VectorType], mask: _ods_ir.Value[_ods_ir.VectorType], evl: _ods_ir.Value[_ods_ir.IntegerType], *, loc: _Optional[_ods_ir.Location] = None, ip: _Optional[_ods_ir.InsertionPoint] = None) -> _ods_ir.OpResult:
  return VPFMulAddOp(res=res, op1=op1, op2=op2, op3=op3, mask=mask, evl=evl, loc=loc, ip=ip).result

@_ods_cext.register_operation(_Dialect)
class VPFMulOp(_ods_ir.OpView):
  OPERATION_NAME = "llvm.intr.vp.fmul"

  _ODS_REGIONS = (0, True)

  def __init__(self, res: _ods_ir.Type, lhs: _ods_ir.Value[_ods_ir.VectorType], rhs: _ods_ir.Value[_ods_ir.VectorType], mask: _ods_ir.Value[_ods_ir.VectorType], evl: _ods_ir.Value[_ods_ir.IntegerType], *, loc: _Optional[_ods_ir.Location] = None, ip: _Optional[_ods_ir.InsertionPoint] = None):
    operands = []
    attributes = {}
    regions = None
    operands.append(lhs)
    operands.append(rhs)
    operands.append(mask)
    operands.append(evl)
    _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 lhs(self) -> _ods_ir.Value[_ods_ir.VectorType]:
    return self.operation.operands[0]

  @builtins.property
  def rhs(self) -> _ods_ir.Value[_ods_ir.VectorType]:
    return self.operation.operands[1]

  @builtins.property
  def mask(self) -> _ods_ir.Value[_ods_ir.VectorType]:
    return self.operation.operands[2]

  @builtins.property
  def evl(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(VPFMulOp)
class VPFMulOpAdaptor(_ods_ir.OpAdaptor):
  OPERATION_NAME = "llvm.intr.vp.fmul"

  @builtins.property
  def lhs(self) -> _ods_ir.Value[_ods_ir.VectorType]:
    return self.operands[0]

  @builtins.property
  def rhs(self) -> _ods_ir.Value[_ods_ir.VectorType]:
    return self.operands[1]

  @builtins.property
  def mask(self) -> _ods_ir.Value[_ods_ir.VectorType]:
    return self.operands[2]

  @builtins.property
  def evl(self) -> _ods_ir.Value[_ods_ir.IntegerType]:
    return self.operands[3]

def intr_vp_fmul(res: _ods_ir.Type, lhs: _ods_ir.Value[_ods_ir.VectorType], rhs: _ods_ir.Value[_ods_ir.VectorType], mask: _ods_ir.Value[_ods_ir.VectorType], evl: _ods_ir.Value[_ods_ir.IntegerType], *, loc: _Optional[_ods_ir.Location] = None, ip: _Optional[_ods_ir.InsertionPoint] = None) -> _ods_ir.OpResult:
  return VPFMulOp(res=res, lhs=lhs, rhs=rhs, mask=mask, evl=evl, loc=loc, ip=ip).result

@_ods_cext.register_operation(_Dialect)
class VPFNegOp(_ods_ir.OpView):
  OPERATION_NAME = "llvm.intr.vp.fneg"

  _ODS_REGIONS = (0, True)

  def __init__(self, res: _ods_ir.Type, op: _ods_ir.Value[_ods_ir.VectorType], mask: _ods_ir.Value[_ods_ir.VectorType], evl: _ods_ir.Value[_ods_ir.IntegerType], *, loc: _Optional[_ods_ir.Location] = None, ip: _Optional[_ods_ir.InsertionPoint] = None):
    operands = []
    attributes = {}
    regions = None
    operands.append(op)
    operands.append(mask)
    operands.append(evl)
    _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 op(self) -> _ods_ir.Value[_ods_ir.VectorType]:
    return self.operation.operands[0]

  @builtins.property
  def mask(self) -> _ods_ir.Value[_ods_ir.VectorType]:
    return self.operation.operands[1]

  @builtins.property
  def evl(self) -> _ods_ir.Value[_ods_ir.IntegerType]:
    return self.operation.operands[2]

  @builtins.property
  def res(self) -> _ods_ir.OpResult:
    return self.operation.results[0]

@_ods_cext.register_op_adaptor(VPFNegOp)
class VPFNegOpAdaptor(_ods_ir.OpAdaptor):
  OPERATION_NAME = "llvm.intr.vp.fneg"

  @builtins.property
  def op(self) -> _ods_ir.Value[_ods_ir.VectorType]:
    return self.operands[0]

  @builtins.property
  def mask(self) -> _ods_ir.Value[_ods_ir.VectorType]:
    return self.operands[1]

  @builtins.property
  def evl(self) -> _ods_ir.Value[_ods_ir.IntegerType]:
    return self.operands[2]

def intr_vp_fneg(res: _ods_ir.Type, op: _ods_ir.Value[_ods_ir.VectorType], mask: _ods_ir.Value[_ods_ir.VectorType], evl: _ods_ir.Value[_ods_ir.IntegerType], *, loc: _Optional[_ods_ir.Location] = None, ip: _Optional[_ods_ir.InsertionPoint] = None) -> _ods_ir.OpResult:
  return VPFNegOp(res=res, op=op, mask=mask, evl=evl, loc=loc, ip=ip).result

@_ods_cext.register_operation(_Dialect)
class VPFPExtOp(_ods_ir.OpView):
  OPERATION_NAME = "llvm.intr.vp.fpext"

  _ODS_REGIONS = (0, True)

  def __init__(self, res: _ods_ir.Type, src: _ods_ir.Value[_ods_ir.VectorType], mask: _ods_ir.Value[_ods_ir.VectorType], evl: _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(mask)
    operands.append(evl)
    _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 mask(self) -> _ods_ir.Value[_ods_ir.VectorType]:
    return self.operation.operands[1]

  @builtins.property
  def evl(self) -> _ods_ir.Value[_ods_ir.IntegerType]:
    return self.operation.operands[2]

  @builtins.property
  def res(self) -> _ods_ir.OpResult:
    return self.operation.results[0]

@_ods_cext.register_op_adaptor(VPFPExtOp)
class VPFPExtOpAdaptor(_ods_ir.OpAdaptor):
  OPERATION_NAME = "llvm.intr.vp.fpext"

  @builtins.property
  def src(self) -> _ods_ir.Value[_ods_ir.VectorType]:
    return self.operands[0]

  @builtins.property
  def mask(self) -> _ods_ir.Value[_ods_ir.VectorType]:
    return self.operands[1]

  @builtins.property
  def evl(self) -> _ods_ir.Value[_ods_ir.IntegerType]:
    return self.operands[2]

def intr_vp_fpext(res: _ods_ir.Type, src: _ods_ir.Value[_ods_ir.VectorType], mask: _ods_ir.Value[_ods_ir.VectorType], evl: _ods_ir.Value[_ods_ir.IntegerType], *, loc: _Optional[_ods_ir.Location] = None, ip: _Optional[_ods_ir.InsertionPoint] = None) -> _ods_ir.OpResult:
  return VPFPExtOp(res=res, src=src, mask=mask, evl=evl, loc=loc, ip=ip).result

@_ods_cext.register_operation(_Dialect)
class VPFPToSIOp(_ods_ir.OpView):
  OPERATION_NAME = "llvm.intr.vp.fptosi"

  _ODS_REGIONS = (0, True)

  def __init__(self, res: _ods_ir.Type, src: _ods_ir.Value[_ods_ir.VectorType], mask: _ods_ir.Value[_ods_ir.VectorType], evl: _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(mask)
    operands.append(evl)
    _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 mask(self) -> _ods_ir.Value[_ods_ir.VectorType]:
    return self.operation.operands[1]

  @builtins.property
  def evl(self) -> _ods_ir.Value[_ods_ir.IntegerType]:
    return self.operation.operands[2]

  @builtins.property
  def res(self) -> _ods_ir.OpResult:
    return self.operation.results[0]

@_ods_cext.register_op_adaptor(VPFPToSIOp)
class VPFPToSIOpAdaptor(_ods_ir.OpAdaptor):
  OPERATION_NAME = "llvm.intr.vp.fptosi"

  @builtins.property
  def src(self) -> _ods_ir.Value[_ods_ir.VectorType]:
    return self.operands[0]

  @builtins.property
  def mask(self) -> _ods_ir.Value[_ods_ir.VectorType]:
    return self.operands[1]

  @builtins.property
  def evl(self) -> _ods_ir.Value[_ods_ir.IntegerType]:
    return self.operands[2]

def intr_vp_fptosi(res: _ods_ir.Type, src: _ods_ir.Value[_ods_ir.VectorType], mask: _ods_ir.Value[_ods_ir.VectorType], evl: _ods_ir.Value[_ods_ir.IntegerType], *, loc: _Optional[_ods_ir.Location] = None, ip: _Optional[_ods_ir.InsertionPoint] = None) -> _ods_ir.OpResult:
  return VPFPToSIOp(res=res, src=src, mask=mask, evl=evl, loc=loc, ip=ip).result

@_ods_cext.register_operation(_Dialect)
class VPFPToUIOp(_ods_ir.OpView):
  OPERATION_NAME = "llvm.intr.vp.fptoui"

  _ODS_REGIONS = (0, True)

  def __init__(self, res: _ods_ir.Type, src: _ods_ir.Value[_ods_ir.VectorType], mask: _ods_ir.Value[_ods_ir.VectorType], evl: _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(mask)
    operands.append(evl)
    _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 mask(self) -> _ods_ir.Value[_ods_ir.VectorType]:
    return self.operation.operands[1]

  @builtins.property
  def evl(self) -> _ods_ir.Value[_ods_ir.IntegerType]:
    return self.operation.operands[2]

  @builtins.property
  def res(self) -> _ods_ir.OpResult:
    return self.operation.results[0]

@_ods_cext.register_op_adaptor(VPFPToUIOp)
class VPFPToUIOpAdaptor(_ods_ir.OpAdaptor):
  OPERATION_NAME = "llvm.intr.vp.fptoui"

  @builtins.property
  def src(self) -> _ods_ir.Value[_ods_ir.VectorType]:
    return self.operands[0]

  @builtins.property
  def mask(self) -> _ods_ir.Value[_ods_ir.VectorType]:
    return self.operands[1]

  @builtins.property
  def evl(self) -> _ods_ir.Value[_ods_ir.IntegerType]:
    return self.operands[2]

def intr_vp_fptoui(res: _ods_ir.Type, src: _ods_ir.Value[_ods_ir.VectorType], mask: _ods_ir.Value[_ods_ir.VectorType], evl: _ods_ir.Value[_ods_ir.IntegerType], *, loc: _Optional[_ods_ir.Location] = None, ip: _Optional[_ods_ir.InsertionPoint] = None) -> _ods_ir.OpResult:
  return VPFPToUIOp(res=res, src=src, mask=mask, evl=evl, loc=loc, ip=ip).result

@_ods_cext.register_operation(_Dialect)
class VPFPTruncOp(_ods_ir.OpView):
  OPERATION_NAME = "llvm.intr.vp.fptrunc"

  _ODS_REGIONS = (0, True)

  def __init__(self, res: _ods_ir.Type, src: _ods_ir.Value[_ods_ir.VectorType], mask: _ods_ir.Value[_ods_ir.VectorType], evl: _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(mask)
    operands.append(evl)
    _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 mask(self) -> _ods_ir.Value[_ods_ir.VectorType]:
    return self.operation.operands[1]

  @builtins.property
  def evl(self) -> _ods_ir.Value[_ods_ir.IntegerType]:
    return self.operation.operands[2]

  @builtins.property
  def res(self) -> _ods_ir.OpResult:
    return self.operation.results[0]

@_ods_cext.register_op_adaptor(VPFPTruncOp)
class VPFPTruncOpAdaptor(_ods_ir.OpAdaptor):
  OPERATION_NAME = "llvm.intr.vp.fptrunc"

  @builtins.property
  def src(self) -> _ods_ir.Value[_ods_ir.VectorType]:
    return self.operands[0]

  @builtins.property
  def mask(self) -> _ods_ir.Value[_ods_ir.VectorType]:
    return self.operands[1]

  @builtins.property
  def evl(self) -> _ods_ir.Value[_ods_ir.IntegerType]:
    return self.operands[2]

def intr_vp_fptrunc(res: _ods_ir.Type, src: _ods_ir.Value[_ods_ir.VectorType], mask: _ods_ir.Value[_ods_ir.VectorType], evl: _ods_ir.Value[_ods_ir.IntegerType], *, loc: _Optional[_ods_ir.Location] = None, ip: _Optional[_ods_ir.InsertionPoint] = None) -> _ods_ir.OpResult:
  return VPFPTruncOp(res=res, src=src, mask=mask, evl=evl, loc=loc, ip=ip).result

@_ods_cext.register_operation(_Dialect)
class VPFRemOp(_ods_ir.OpView):
  OPERATION_NAME = "llvm.intr.vp.frem"

  _ODS_REGIONS = (0, True)

  def __init__(self, res: _ods_ir.Type, lhs: _ods_ir.Value[_ods_ir.VectorType], rhs: _ods_ir.Value[_ods_ir.VectorType], mask: _ods_ir.Value[_ods_ir.VectorType], evl: _ods_ir.Value[_ods_ir.IntegerType], *, loc: _Optional[_ods_ir.Location] = None, ip: _Optional[_ods_ir.InsertionPoint] = None):
    operands = []
    attributes = {}
    regions = None
    operands.append(lhs)
    operands.append(rhs)
    operands.append(mask)
    operands.append(evl)
    _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 lhs(self) -> _ods_ir.Value[_ods_ir.VectorType]:
    return self.operation.operands[0]

  @builtins.property
  def rhs(self) -> _ods_ir.Value[_ods_ir.VectorType]:
    return self.operation.operands[1]

  @builtins.property
  def mask(self) -> _ods_ir.Value[_ods_ir.VectorType]:
    return self.operation.operands[2]

  @builtins.property
  def evl(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(VPFRemOp)
class VPFRemOpAdaptor(_ods_ir.OpAdaptor):
  OPERATION_NAME = "llvm.intr.vp.frem"

  @builtins.property
  def lhs(self) -> _ods_ir.Value[_ods_ir.VectorType]:
    return self.operands[0]

  @builtins.property
  def rhs(self) -> _ods_ir.Value[_ods_ir.VectorType]:
    return self.operands[1]

  @builtins.property
  def mask(self) -> _ods_ir.Value[_ods_ir.VectorType]:
    return self.operands[2]

  @builtins.property
  def evl(self) -> _ods_ir.Value[_ods_ir.IntegerType]:
    return self.operands[3]

def intr_vp_frem(res: _ods_ir.Type, lhs: _ods_ir.Value[_ods_ir.VectorType], rhs: _ods_ir.Value[_ods_ir.VectorType], mask: _ods_ir.Value[_ods_ir.VectorType], evl: _ods_ir.Value[_ods_ir.IntegerType], *, loc: _Optional[_ods_ir.Location] = None, ip: _Optional[_ods_ir.InsertionPoint] = None) -> _ods_ir.OpResult:
  return VPFRemOp(res=res, lhs=lhs, rhs=rhs, mask=mask, evl=evl, loc=loc, ip=ip).result

@_ods_cext.register_operation(_Dialect)
class VPFSubOp(_ods_ir.OpView):
  OPERATION_NAME = "llvm.intr.vp.fsub"

  _ODS_REGIONS = (0, True)

  def __init__(self, res: _ods_ir.Type, lhs: _ods_ir.Value[_ods_ir.VectorType], rhs: _ods_ir.Value[_ods_ir.VectorType], mask: _ods_ir.Value[_ods_ir.VectorType], evl: _ods_ir.Value[_ods_ir.IntegerType], *, loc: _Optional[_ods_ir.Location] = None, ip: _Optional[_ods_ir.InsertionPoint] = None):
    operands = []
    attributes = {}
    regions = None
    operands.append(lhs)
    operands.append(rhs)
    operands.append(mask)
    operands.append(evl)
    _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 lhs(self) -> _ods_ir.Value[_ods_ir.VectorType]:
    return self.operation.operands[0]

  @builtins.property
  def rhs(self) -> _ods_ir.Value[_ods_ir.VectorType]:
    return self.operation.operands[1]

  @builtins.property
  def mask(self) -> _ods_ir.Value[_ods_ir.VectorType]:
    return self.operation.operands[2]

  @builtins.property
  def evl(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(VPFSubOp)
class VPFSubOpAdaptor(_ods_ir.OpAdaptor):
  OPERATION_NAME = "llvm.intr.vp.fsub"

  @builtins.property
  def lhs(self) -> _ods_ir.Value[_ods_ir.VectorType]:
    return self.operands[0]

  @builtins.property
  def rhs(self) -> _ods_ir.Value[_ods_ir.VectorType]:
    return self.operands[1]

  @builtins.property
  def mask(self) -> _ods_ir.Value[_ods_ir.VectorType]:
    return self.operands[2]

  @builtins.property
  def evl(self) -> _ods_ir.Value[_ods_ir.IntegerType]:
    return self.operands[3]

def intr_vp_fsub(res: _ods_ir.Type, lhs: _ods_ir.Value[_ods_ir.VectorType], rhs: _ods_ir.Value[_ods_ir.VectorType], mask: _ods_ir.Value[_ods_ir.VectorType], evl: _ods_ir.Value[_ods_ir.IntegerType], *, loc: _Optional[_ods_ir.Location] = None, ip: _Optional[_ods_ir.InsertionPoint] = None) -> _ods_ir.OpResult:
  return VPFSubOp(res=res, lhs=lhs, rhs=rhs, mask=mask, evl=evl, loc=loc, ip=ip).result

@_ods_cext.register_operation(_Dialect)
class VPFmaOp(_ods_ir.OpView):
  OPERATION_NAME = "llvm.intr.vp.fma"

  _ODS_REGIONS = (0, True)

  def __init__(self, res: _ods_ir.Type, op1: _ods_ir.Value[_ods_ir.VectorType], op2: _ods_ir.Value[_ods_ir.VectorType], op3: _ods_ir.Value[_ods_ir.VectorType], mask: _ods_ir.Value[_ods_ir.VectorType], evl: _ods_ir.Value[_ods_ir.IntegerType], *, loc: _Optional[_ods_ir.Location] = None, ip: _Optional[_ods_ir.InsertionPoint] = None):
    operands = []
    attributes = {}
    regions = None
    operands.append(op1)
    operands.append(op2)
    operands.append(op3)
    operands.append(mask)
    operands.append(evl)
    _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 op1(self) -> _ods_ir.Value[_ods_ir.VectorType]:
    return self.operation.operands[0]

  @builtins.property
  def op2(self) -> _ods_ir.Value[_ods_ir.VectorType]:
    return self.operation.operands[1]

  @builtins.property
  def op3(self) -> _ods_ir.Value[_ods_ir.VectorType]:
    return self.operation.operands[2]

  @builtins.property
  def mask(self) -> _ods_ir.Value[_ods_ir.VectorType]:
    return self.operation.operands[3]

  @builtins.property
  def evl(self) -> _ods_ir.Value[_ods_ir.IntegerType]:
    return self.operation.operands[4]

  @builtins.property
  def res(self) -> _ods_ir.OpResult:
    return self.operation.results[0]

@_ods_cext.register_op_adaptor(VPFmaOp)
class VPFmaOpAdaptor(_ods_ir.OpAdaptor):
  OPERATION_NAME = "llvm.intr.vp.fma"

  @builtins.property
  def op1(self) -> _ods_ir.Value[_ods_ir.VectorType]:
    return self.operands[0]

  @builtins.property
  def op2(self) -> _ods_ir.Value[_ods_ir.VectorType]:
    return self.operands[1]

  @builtins.property
  def op3(self) -> _ods_ir.Value[_ods_ir.VectorType]:
    return self.operands[2]

  @builtins.property
  def mask(self) -> _ods_ir.Value[_ods_ir.VectorType]:
    return self.operands[3]

  @builtins.property
  def evl(self) -> _ods_ir.Value[_ods_ir.IntegerType]:
    return self.operands[4]

def intr_vp_fma(res: _ods_ir.Type, op1: _ods_ir.Value[_ods_ir.VectorType], op2: _ods_ir.Value[_ods_ir.VectorType], op3: _ods_ir.Value[_ods_ir.VectorType], mask: _ods_ir.Value[_ods_ir.VectorType], evl: _ods_ir.Value[_ods_ir.IntegerType], *, loc: _Optional[_ods_ir.Location] = None, ip: _Optional[_ods_ir.InsertionPoint] = None) -> _ods_ir.OpResult:
  return VPFmaOp(res=res, op1=op1, op2=op2, op3=op3, mask=mask, evl=evl, loc=loc, ip=ip).result

@_ods_cext.register_operation(_Dialect)
class VPIntToPtrOp(_ods_ir.OpView):
  OPERATION_NAME = "llvm.intr.vp.inttoptr"

  _ODS_REGIONS = (0, True)

  def __init__(self, res: _ods_ir.Type, src: _ods_ir.Value[_ods_ir.VectorType], mask: _ods_ir.Value[_ods_ir.VectorType], evl: _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(mask)
    operands.append(evl)
    _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 mask(self) -> _ods_ir.Value[_ods_ir.VectorType]:
    return self.operation.operands[1]

  @builtins.property
  def evl(self) -> _ods_ir.Value[_ods_ir.IntegerType]:
    return self.operation.operands[2]

  @builtins.property
  def res(self) -> _ods_ir.OpResult:
    return self.operation.results[0]

@_ods_cext.register_op_adaptor(VPIntToPtrOp)
class VPIntToPtrOpAdaptor(_ods_ir.OpAdaptor):
  OPERATION_NAME = "llvm.intr.vp.inttoptr"

  @builtins.property
  def src(self) -> _ods_ir.Value[_ods_ir.VectorType]:
    return self.operands[0]

  @builtins.property
  def mask(self) -> _ods_ir.Value[_ods_ir.VectorType]:
    return self.operands[1]

  @builtins.property
  def evl(self) -> _ods_ir.Value[_ods_ir.IntegerType]:
    return self.operands[2]

def intr_vp_inttoptr(res: _ods_ir.Type, src: _ods_ir.Value[_ods_ir.VectorType], mask: _ods_ir.Value[_ods_ir.VectorType], evl: _ods_ir.Value[_ods_ir.IntegerType], *, loc: _Optional[_ods_ir.Location] = None, ip: _Optional[_ods_ir.InsertionPoint] = None) -> _ods_ir.OpResult:
  return VPIntToPtrOp(res=res, src=src, mask=mask, evl=evl, loc=loc, ip=ip).result

@_ods_cext.register_operation(_Dialect)
class VPLShrOp(_ods_ir.OpView):
  OPERATION_NAME = "llvm.intr.vp.lshr"

  _ODS_REGIONS = (0, True)

  def __init__(self, res: _ods_ir.Type, lhs: _ods_ir.Value[_ods_ir.VectorType], rhs: _ods_ir.Value[_ods_ir.VectorType], mask: _ods_ir.Value[_ods_ir.VectorType], evl: _ods_ir.Value[_ods_ir.IntegerType], *, loc: _Optional[_ods_ir.Location] = None, ip: _Optional[_ods_ir.InsertionPoint] = None):
    operands = []
    attributes = {}
    regions = None
    operands.append(lhs)
    operands.append(rhs)
    operands.append(mask)
    operands.append(evl)
    _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 lhs(self) -> _ods_ir.Value[_ods_ir.VectorType]:
    return self.operation.operands[0]

  @builtins.property
  def rhs(self) -> _ods_ir.Value[_ods_ir.VectorType]:
    return self.operation.operands[1]

  @builtins.property
  def mask(self) -> _ods_ir.Value[_ods_ir.VectorType]:
    return self.operation.operands[2]

  @builtins.property
  def evl(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(VPLShrOp)
class VPLShrOpAdaptor(_ods_ir.OpAdaptor):
  OPERATION_NAME = "llvm.intr.vp.lshr"

  @builtins.property
  def lhs(self) -> _ods_ir.Value[_ods_ir.VectorType]:
    return self.operands[0]

  @builtins.property
  def rhs(self) -> _ods_ir.Value[_ods_ir.VectorType]:
    return self.operands[1]

  @builtins.property
  def mask(self) -> _ods_ir.Value[_ods_ir.VectorType]:
    return self.operands[2]

  @builtins.property
  def evl(self) -> _ods_ir.Value[_ods_ir.IntegerType]:
    return self.operands[3]

def intr_vp_lshr(res: _ods_ir.Type, lhs: _ods_ir.Value[_ods_ir.VectorType], rhs: _ods_ir.Value[_ods_ir.VectorType], mask: _ods_ir.Value[_ods_ir.VectorType], evl: _ods_ir.Value[_ods_ir.IntegerType], *, loc: _Optional[_ods_ir.Location] = None, ip: _Optional[_ods_ir.InsertionPoint] = None) -> _ods_ir.OpResult:
  return VPLShrOp(res=res, lhs=lhs, rhs=rhs, mask=mask, evl=evl, loc=loc, ip=ip).result

@_ods_cext.register_operation(_Dialect)
class VPLoadOp(_ods_ir.OpView):
  OPERATION_NAME = "llvm.intr.vp.load"

  _ODS_REGIONS = (0, True)

  def __init__(self, res: _ods_ir.Type, ptr: _ods_ir.Value, mask: _ods_ir.Value[_ods_ir.VectorType], evl: _ods_ir.Value[_ods_ir.IntegerType], *, loc: _Optional[_ods_ir.Location] = None, ip: _Optional[_ods_ir.InsertionPoint] = None):
    operands = []
    attributes = {}
    regions = None
    operands.append(ptr)
    operands.append(mask)
    operands.append(evl)
    _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 mask(self) -> _ods_ir.Value[_ods_ir.VectorType]:
    return self.operation.operands[1]

  @builtins.property
  def evl(self) -> _ods_ir.Value[_ods_ir.IntegerType]:
    return self.operation.operands[2]

  @builtins.property
  def res(self) -> _ods_ir.OpResult:
    return self.operation.results[0]

@_ods_cext.register_op_adaptor(VPLoadOp)
class VPLoadOpAdaptor(_ods_ir.OpAdaptor):
  OPERATION_NAME = "llvm.intr.vp.load"

  @builtins.property
  def ptr(self) -> _ods_ir.Value:
    return self.operands[0]

  @builtins.property
  def mask(self) -> _ods_ir.Value[_ods_ir.VectorType]:
    return self.operands[1]

  @builtins.property
  def evl(self) -> _ods_ir.Value[_ods_ir.IntegerType]:
    return self.operands[2]

def intr_vp_load(res: _ods_ir.Type, ptr: _ods_ir.Value, mask: _ods_ir.Value[_ods_ir.VectorType], evl: _ods_ir.Value[_ods_ir.IntegerType], *, loc: _Optional[_ods_ir.Location] = None, ip: _Optional[_ods_ir.InsertionPoint] = None) -> _ods_ir.OpResult:
  return VPLoadOp(res=res, ptr=ptr, mask=mask, evl=evl, loc=loc, ip=ip).result

@_ods_cext.register_operation(_Dialect)
class VPMergeMinOp(_ods_ir.OpView):
  OPERATION_NAME = "llvm.intr.vp.merge"

  _ODS_REGIONS = (0, True)

  def __init__(self, res: _ods_ir.Type, cond: _ods_ir.Value[_ods_ir.VectorType], true_val: _ods_ir.Value[_ods_ir.VectorType], false_val: _ods_ir.Value[_ods_ir.VectorType], evl: _ods_ir.Value[_ods_ir.IntegerType], *, loc: _Optional[_ods_ir.Location] = None, ip: _Optional[_ods_ir.InsertionPoint] = None):
    operands = []
    attributes = {}
    regions = None
    operands.append(cond)
    operands.append(true_val)
    operands.append(false_val)
    operands.append(evl)
    _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 cond(self) -> _ods_ir.Value[_ods_ir.VectorType]:
    return self.operation.operands[0]

  @builtins.property
  def true_val(self) -> _ods_ir.Value[_ods_ir.VectorType]:
    return self.operation.operands[1]

  @builtins.property
  def false_val(self) -> _ods_ir.Value[_ods_ir.VectorType]:
    return self.operation.operands[2]

  @builtins.property
  def evl(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(VPMergeMinOp)
class VPMergeMinOpAdaptor(_ods_ir.OpAdaptor):
  OPERATION_NAME = "llvm.intr.vp.merge"

  @builtins.property
  def cond(self) -> _ods_ir.Value[_ods_ir.VectorType]:
    return self.operands[0]

  @builtins.property
  def true_val(self) -> _ods_ir.Value[_ods_ir.VectorType]:
    return self.operands[1]

  @builtins.property
  def false_val(self) -> _ods_ir.Value[_ods_ir.VectorType]:
    return self.operands[2]

  @builtins.property
  def evl(self) -> _ods_ir.Value[_ods_ir.IntegerType]:
    return self.operands[3]

def intr_vp_merge(res: _ods_ir.Type, cond: _ods_ir.Value[_ods_ir.VectorType], true_val: _ods_ir.Value[_ods_ir.VectorType], false_val: _ods_ir.Value[_ods_ir.VectorType], evl: _ods_ir.Value[_ods_ir.IntegerType], *, loc: _Optional[_ods_ir.Location] = None, ip: _Optional[_ods_ir.InsertionPoint] = None) -> _ods_ir.OpResult:
  return VPMergeMinOp(res=res, cond=cond, true_val=true_val, false_val=false_val, evl=evl, loc=loc, ip=ip).result

@_ods_cext.register_operation(_Dialect)
class VPMulOp(_ods_ir.OpView):
  OPERATION_NAME = "llvm.intr.vp.mul"

  _ODS_REGIONS = (0, True)

  def __init__(self, res: _ods_ir.Type, lhs: _ods_ir.Value[_ods_ir.VectorType], rhs: _ods_ir.Value[_ods_ir.VectorType], mask: _ods_ir.Value[_ods_ir.VectorType], evl: _ods_ir.Value[_ods_ir.IntegerType], *, loc: _Optional[_ods_ir.Location] = None, ip: _Optional[_ods_ir.InsertionPoint] = None):
    operands = []
    attributes = {}
    regions = None
    operands.append(lhs)
    operands.append(rhs)
    operands.append(mask)
    operands.append(evl)
    _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 lhs(self) -> _ods_ir.Value[_ods_ir.VectorType]:
    return self.operation.operands[0]

  @builtins.property
  def rhs(self) -> _ods_ir.Value[_ods_ir.VectorType]:
    return self.operation.operands[1]

  @builtins.property
  def mask(self) -> _ods_ir.Value[_ods_ir.VectorType]:
    return self.operation.operands[2]

  @builtins.property
  def evl(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(VPMulOp)
class VPMulOpAdaptor(_ods_ir.OpAdaptor):
  OPERATION_NAME = "llvm.intr.vp.mul"

  @builtins.property
  def lhs(self) -> _ods_ir.Value[_ods_ir.VectorType]:
    return self.operands[0]

  @builtins.property
  def rhs(self) -> _ods_ir.Value[_ods_ir.VectorType]:
    return self.operands[1]

  @builtins.property
  def mask(self) -> _ods_ir.Value[_ods_ir.VectorType]:
    return self.operands[2]

  @builtins.property
  def evl(self) -> _ods_ir.Value[_ods_ir.IntegerType]:
    return self.operands[3]

def intr_vp_mul(res: _ods_ir.Type, lhs: _ods_ir.Value[_ods_ir.VectorType], rhs: _ods_ir.Value[_ods_ir.VectorType], mask: _ods_ir.Value[_ods_ir.VectorType], evl: _ods_ir.Value[_ods_ir.IntegerType], *, loc: _Optional[_ods_ir.Location] = None, ip: _Optional[_ods_ir.InsertionPoint] = None) -> _ods_ir.OpResult:
  return VPMulOp(res=res, lhs=lhs, rhs=rhs, mask=mask, evl=evl, loc=loc, ip=ip).result

@_ods_cext.register_operation(_Dialect)
class VPOrOp(_ods_ir.OpView):
  OPERATION_NAME = "llvm.intr.vp.or"

  _ODS_REGIONS = (0, True)

  def __init__(self, res: _ods_ir.Type, lhs: _ods_ir.Value[_ods_ir.VectorType], rhs: _ods_ir.Value[_ods_ir.VectorType], mask: _ods_ir.Value[_ods_ir.VectorType], evl: _ods_ir.Value[_ods_ir.IntegerType], *, loc: _Optional[_ods_ir.Location] = None, ip: _Optional[_ods_ir.InsertionPoint] = None):
    operands = []
    attributes = {}
    regions = None
    operands.append(lhs)
    operands.append(rhs)
    operands.append(mask)
    operands.append(evl)
    _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 lhs(self) -> _ods_ir.Value[_ods_ir.VectorType]:
    return self.operation.operands[0]

  @builtins.property
  def rhs(self) -> _ods_ir.Value[_ods_ir.VectorType]:
    return self.operation.operands[1]

  @builtins.property
  def mask(self) -> _ods_ir.Value[_ods_ir.VectorType]:
    return self.operation.operands[2]

  @builtins.property
  def evl(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(VPOrOp)
class VPOrOpAdaptor(_ods_ir.OpAdaptor):
  OPERATION_NAME = "llvm.intr.vp.or"

  @builtins.property
  def lhs(self) -> _ods_ir.Value[_ods_ir.VectorType]:
    return self.operands[0]

  @builtins.property
  def rhs(self) -> _ods_ir.Value[_ods_ir.VectorType]:
    return self.operands[1]

  @builtins.property
  def mask(self) -> _ods_ir.Value[_ods_ir.VectorType]:
    return self.operands[2]

  @builtins.property
  def evl(self) -> _ods_ir.Value[_ods_ir.IntegerType]:
    return self.operands[3]

def intr_vp_or(res: _ods_ir.Type, lhs: _ods_ir.Value[_ods_ir.VectorType], rhs: _ods_ir.Value[_ods_ir.VectorType], mask: _ods_ir.Value[_ods_ir.VectorType], evl: _ods_ir.Value[_ods_ir.IntegerType], *, loc: _Optional[_ods_ir.Location] = None, ip: _Optional[_ods_ir.InsertionPoint] = None) -> _ods_ir.OpResult:
  return VPOrOp(res=res, lhs=lhs, rhs=rhs, mask=mask, evl=evl, loc=loc, ip=ip).result

@_ods_cext.register_operation(_Dialect)
class VPPtrToIntOp(_ods_ir.OpView):
  OPERATION_NAME = "llvm.intr.vp.ptrtoint"

  _ODS_REGIONS = (0, True)

  def __init__(self, res: _ods_ir.Type, src: _ods_ir.Value[_ods_ir.VectorType], mask: _ods_ir.Value[_ods_ir.VectorType], evl: _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(mask)
    operands.append(evl)
    _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 mask(self) -> _ods_ir.Value[_ods_ir.VectorType]:
    return self.operation.operands[1]

  @builtins.property
  def evl(self) -> _ods_ir.Value[_ods_ir.IntegerType]:
    return self.operation.operands[2]

  @builtins.property
  def res(self) -> _ods_ir.OpResult:
    return self.operation.results[0]

@_ods_cext.register_op_adaptor(VPPtrToIntOp)
class VPPtrToIntOpAdaptor(_ods_ir.OpAdaptor):
  OPERATION_NAME = "llvm.intr.vp.ptrtoint"

  @builtins.property
  def src(self) -> _ods_ir.Value[_ods_ir.VectorType]:
    return self.operands[0]

  @builtins.property
  def mask(self) -> _ods_ir.Value[_ods_ir.VectorType]:
    return self.operands[1]

  @builtins.property
  def evl(self) -> _ods_ir.Value[_ods_ir.IntegerType]:
    return self.operands[2]

def intr_vp_ptrtoint(res: _ods_ir.Type, src: _ods_ir.Value[_ods_ir.VectorType], mask: _ods_ir.Value[_ods_ir.VectorType], evl: _ods_ir.Value[_ods_ir.IntegerType], *, loc: _Optional[_ods_ir.Location] = None, ip: _Optional[_ods_ir.InsertionPoint] = None) -> _ods_ir.OpResult:
  return VPPtrToIntOp(res=res, src=src, mask=mask, evl=evl, loc=loc, ip=ip).result

@_ods_cext.register_operation(_Dialect)
class VPReduceAddOp(_ods_ir.OpView):
  OPERATION_NAME = "llvm.intr.vp.reduce.add"

  _ODS_REGIONS = (0, True)

  def __init__(self, res: _ods_ir.Type, satrt_value: _ods_ir.Value[_ods_ir.IntegerType], val: _ods_ir.Value[_ods_ir.VectorType], mask: _ods_ir.Value[_ods_ir.VectorType], evl: _ods_ir.Value[_ods_ir.IntegerType], *, loc: _Optional[_ods_ir.Location] = None, ip: _Optional[_ods_ir.InsertionPoint] = None):
    operands = []
    attributes = {}
    regions = None
    operands.append(satrt_value)
    operands.append(val)
    operands.append(mask)
    operands.append(evl)
    _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 satrt_value(self) -> _ods_ir.Value[_ods_ir.IntegerType]:
    return self.operation.operands[0]

  @builtins.property
  def val(self) -> _ods_ir.Value[_ods_ir.VectorType]:
    return self.operation.operands[1]

  @builtins.property
  def mask(self) -> _ods_ir.Value[_ods_ir.VectorType]:
    return self.operation.operands[2]

  @builtins.property
  def evl(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(VPReduceAddOp)
class VPReduceAddOpAdaptor(_ods_ir.OpAdaptor):
  OPERATION_NAME = "llvm.intr.vp.reduce.add"

  @builtins.property
  def satrt_value(self) -> _ods_ir.Value[_ods_ir.IntegerType]:
    return self.operands[0]

  @builtins.property
  def val(self) -> _ods_ir.Value[_ods_ir.VectorType]:
    return self.operands[1]

  @builtins.property
  def mask(self) -> _ods_ir.Value[_ods_ir.VectorType]:
    return self.operands[2]

  @builtins.property
  def evl(self) -> _ods_ir.Value[_ods_ir.IntegerType]:
    return self.operands[3]

def intr_vp_reduce_add(res: _ods_ir.Type, satrt_value: _ods_ir.Value[_ods_ir.IntegerType], val: _ods_ir.Value[_ods_ir.VectorType], mask: _ods_ir.Value[_ods_ir.VectorType], evl: _ods_ir.Value[_ods_ir.IntegerType], *, loc: _Optional[_ods_ir.Location] = None, ip: _Optional[_ods_ir.InsertionPoint] = None) -> _ods_ir.OpResult:
  return VPReduceAddOp(res=res, satrt_value=satrt_value, val=val, mask=mask, evl=evl, loc=loc, ip=ip).result

@_ods_cext.register_operation(_Dialect)
class VPReduceAndOp(_ods_ir.OpView):
  OPERATION_NAME = "llvm.intr.vp.reduce.and"

  _ODS_REGIONS = (0, True)

  def __init__(self, res: _ods_ir.Type, satrt_value: _ods_ir.Value[_ods_ir.IntegerType], val: _ods_ir.Value[_ods_ir.VectorType], mask: _ods_ir.Value[_ods_ir.VectorType], evl: _ods_ir.Value[_ods_ir.IntegerType], *, loc: _Optional[_ods_ir.Location] = None, ip: _Optional[_ods_ir.InsertionPoint] = None):
    operands = []
    attributes = {}
    regions = None
    operands.append(satrt_value)
    operands.append(val)
    operands.append(mask)
    operands.append(evl)
    _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 satrt_value(self) -> _ods_ir.Value[_ods_ir.IntegerType]:
    return self.operation.operands[0]

  @builtins.property
  def val(self) -> _ods_ir.Value[_ods_ir.VectorType]:
    return self.operation.operands[1]

  @builtins.property
  def mask(self) -> _ods_ir.Value[_ods_ir.VectorType]:
    return self.operation.operands[2]

  @builtins.property
  def evl(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(VPReduceAndOp)
class VPReduceAndOpAdaptor(_ods_ir.OpAdaptor):
  OPERATION_NAME = "llvm.intr.vp.reduce.and"

  @builtins.property
  def satrt_value(self) -> _ods_ir.Value[_ods_ir.IntegerType]:
    return self.operands[0]

  @builtins.property
  def val(self) -> _ods_ir.Value[_ods_ir.VectorType]:
    return self.operands[1]

  @builtins.property
  def mask(self) -> _ods_ir.Value[_ods_ir.VectorType]:
    return self.operands[2]

  @builtins.property
  def evl(self) -> _ods_ir.Value[_ods_ir.IntegerType]:
    return self.operands[3]

def intr_vp_reduce_and(res: _ods_ir.Type, satrt_value: _ods_ir.Value[_ods_ir.IntegerType], val: _ods_ir.Value[_ods_ir.VectorType], mask: _ods_ir.Value[_ods_ir.VectorType], evl: _ods_ir.Value[_ods_ir.IntegerType], *, loc: _Optional[_ods_ir.Location] = None, ip: _Optional[_ods_ir.InsertionPoint] = None) -> _ods_ir.OpResult:
  return VPReduceAndOp(res=res, satrt_value=satrt_value, val=val, mask=mask, evl=evl, loc=loc, ip=ip).result

@_ods_cext.register_operation(_Dialect)
class VPReduceFAddOp(_ods_ir.OpView):
  OPERATION_NAME = "llvm.intr.vp.reduce.fadd"

  _ODS_REGIONS = (0, True)

  def __init__(self, res: _ods_ir.Type, satrt_value: _ods_ir.Value[_ods_ir.FloatType], val: _ods_ir.Value[_ods_ir.VectorType], mask: _ods_ir.Value[_ods_ir.VectorType], evl: _ods_ir.Value[_ods_ir.IntegerType], *, loc: _Optional[_ods_ir.Location] = None, ip: _Optional[_ods_ir.InsertionPoint] = None):
    operands = []
    attributes = {}
    regions = None
    operands.append(satrt_value)
    operands.append(val)
    operands.append(mask)
    operands.append(evl)
    _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 satrt_value(self) -> _ods_ir.Value[_ods_ir.FloatType]:
    return self.operation.operands[0]

  @builtins.property
  def val(self) -> _ods_ir.Value[_ods_ir.VectorType]:
    return self.operation.operands[1]

  @builtins.property
  def mask(self) -> _ods_ir.Value[_ods_ir.VectorType]:
    return self.operation.operands[2]

  @builtins.property
  def evl(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(VPReduceFAddOp)
class VPReduceFAddOpAdaptor(_ods_ir.OpAdaptor):
  OPERATION_NAME = "llvm.intr.vp.reduce.fadd"

  @builtins.property
  def satrt_value(self) -> _ods_ir.Value[_ods_ir.FloatType]:
    return self.operands[0]

  @builtins.property
  def val(self) -> _ods_ir.Value[_ods_ir.VectorType]:
    return self.operands[1]

  @builtins.property
  def mask(self) -> _ods_ir.Value[_ods_ir.VectorType]:
    return self.operands[2]

  @builtins.property
  def evl(self) -> _ods_ir.Value[_ods_ir.IntegerType]:
    return self.operands[3]

def intr_vp_reduce_fadd(res: _ods_ir.Type, satrt_value: _ods_ir.Value[_ods_ir.FloatType], val: _ods_ir.Value[_ods_ir.VectorType], mask: _ods_ir.Value[_ods_ir.VectorType], evl: _ods_ir.Value[_ods_ir.IntegerType], *, loc: _Optional[_ods_ir.Location] = None, ip: _Optional[_ods_ir.InsertionPoint] = None) -> _ods_ir.OpResult:
  return VPReduceFAddOp(res=res, satrt_value=satrt_value, val=val, mask=mask, evl=evl, loc=loc, ip=ip).result

@_ods_cext.register_operation(_Dialect)
class VPReduceFMaxOp(_ods_ir.OpView):
  OPERATION_NAME = "llvm.intr.vp.reduce.fmax"

  _ODS_REGIONS = (0, True)

  def __init__(self, res: _ods_ir.Type, satrt_value: _ods_ir.Value[_ods_ir.FloatType], val: _ods_ir.Value[_ods_ir.VectorType], mask: _ods_ir.Value[_ods_ir.VectorType], evl: _ods_ir.Value[_ods_ir.IntegerType], *, loc: _Optional[_ods_ir.Location] = None, ip: _Optional[_ods_ir.InsertionPoint] = None):
    operands = []
    attributes = {}
    regions = None
    operands.append(satrt_value)
    operands.append(val)
    operands.append(mask)
    operands.append(evl)
    _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 satrt_value(self) -> _ods_ir.Value[_ods_ir.FloatType]:
    return self.operation.operands[0]

  @builtins.property
  def val(self) -> _ods_ir.Value[_ods_ir.VectorType]:
    return self.operation.operands[1]

  @builtins.property
  def mask(self) -> _ods_ir.Value[_ods_ir.VectorType]:
    return self.operation.operands[2]

  @builtins.property
  def evl(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(VPReduceFMaxOp)
class VPReduceFMaxOpAdaptor(_ods_ir.OpAdaptor):
  OPERATION_NAME = "llvm.intr.vp.reduce.fmax"

  @builtins.property
  def satrt_value(self) -> _ods_ir.Value[_ods_ir.FloatType]:
    return self.operands[0]

  @builtins.property
  def val(self) -> _ods_ir.Value[_ods_ir.VectorType]:
    return self.operands[1]

  @builtins.property
  def mask(self) -> _ods_ir.Value[_ods_ir.VectorType]:
    return self.operands[2]

  @builtins.property
  def evl(self) -> _ods_ir.Value[_ods_ir.IntegerType]:
    return self.operands[3]

def intr_vp_reduce_fmax(res: _ods_ir.Type, satrt_value: _ods_ir.Value[_ods_ir.FloatType], val: _ods_ir.Value[_ods_ir.VectorType], mask: _ods_ir.Value[_ods_ir.VectorType], evl: _ods_ir.Value[_ods_ir.IntegerType], *, loc: _Optional[_ods_ir.Location] = None, ip: _Optional[_ods_ir.InsertionPoint] = None) -> _ods_ir.OpResult:
  return VPReduceFMaxOp(res=res, satrt_value=satrt_value, val=val, mask=mask, evl=evl, loc=loc, ip=ip).result

@_ods_cext.register_operation(_Dialect)
class VPReduceFMinOp(_ods_ir.OpView):
  OPERATION_NAME = "llvm.intr.vp.reduce.fmin"

  _ODS_REGIONS = (0, True)

  def __init__(self, res: _ods_ir.Type, satrt_value: _ods_ir.Value[_ods_ir.FloatType], val: _ods_ir.Value[_ods_ir.VectorType], mask: _ods_ir.Value[_ods_ir.VectorType], evl: _ods_ir.Value[_ods_ir.IntegerType], *, loc: _Optional[_ods_ir.Location] = None, ip: _Optional[_ods_ir.InsertionPoint] = None):
    operands = []
    attributes = {}
    regions = None
    operands.append(satrt_value)
    operands.append(val)
    operands.append(mask)
    operands.append(evl)
    _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 satrt_value(self) -> _ods_ir.Value[_ods_ir.FloatType]:
    return self.operation.operands[0]

  @builtins.property
  def val(self) -> _ods_ir.Value[_ods_ir.VectorType]:
    return self.operation.operands[1]

  @builtins.property
  def mask(self) -> _ods_ir.Value[_ods_ir.VectorType]:
    return self.operation.operands[2]

  @builtins.property
  def evl(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(VPReduceFMinOp)
class VPReduceFMinOpAdaptor(_ods_ir.OpAdaptor):
  OPERATION_NAME = "llvm.intr.vp.reduce.fmin"

  @builtins.property
  def satrt_value(self) -> _ods_ir.Value[_ods_ir.FloatType]:
    return self.operands[0]

  @builtins.property
  def val(self) -> _ods_ir.Value[_ods_ir.VectorType]:
    return self.operands[1]

  @builtins.property
  def mask(self) -> _ods_ir.Value[_ods_ir.VectorType]:
    return self.operands[2]

  @builtins.property
  def evl(self) -> _ods_ir.Value[_ods_ir.IntegerType]:
    return self.operands[3]

def intr_vp_reduce_fmin(res: _ods_ir.Type, satrt_value: _ods_ir.Value[_ods_ir.FloatType], val: _ods_ir.Value[_ods_ir.VectorType], mask: _ods_ir.Value[_ods_ir.VectorType], evl: _ods_ir.Value[_ods_ir.IntegerType], *, loc: _Optional[_ods_ir.Location] = None, ip: _Optional[_ods_ir.InsertionPoint] = None) -> _ods_ir.OpResult:
  return VPReduceFMinOp(res=res, satrt_value=satrt_value, val=val, mask=mask, evl=evl, loc=loc, ip=ip).result

@_ods_cext.register_operation(_Dialect)
class VPReduceFMulOp(_ods_ir.OpView):
  OPERATION_NAME = "llvm.intr.vp.reduce.fmul"

  _ODS_REGIONS = (0, True)

  def __init__(self, res: _ods_ir.Type, satrt_value: _ods_ir.Value[_ods_ir.FloatType], val: _ods_ir.Value[_ods_ir.VectorType], mask: _ods_ir.Value[_ods_ir.VectorType], evl: _ods_ir.Value[_ods_ir.IntegerType], *, loc: _Optional[_ods_ir.Location] = None, ip: _Optional[_ods_ir.InsertionPoint] = None):
    operands = []
    attributes = {}
    regions = None
    operands.append(satrt_value)
    operands.append(val)
    operands.append(mask)
    operands.append(evl)
    _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 satrt_value(self) -> _ods_ir.Value[_ods_ir.FloatType]:
    return self.operation.operands[0]

  @builtins.property
  def val(self) -> _ods_ir.Value[_ods_ir.VectorType]:
    return self.operation.operands[1]

  @builtins.property
  def mask(self) -> _ods_ir.Value[_ods_ir.VectorType]:
    return self.operation.operands[2]

  @builtins.property
  def evl(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(VPReduceFMulOp)
class VPReduceFMulOpAdaptor(_ods_ir.OpAdaptor):
  OPERATION_NAME = "llvm.intr.vp.reduce.fmul"

  @builtins.property
  def satrt_value(self) -> _ods_ir.Value[_ods_ir.FloatType]:
    return self.operands[0]

  @builtins.property
  def val(self) -> _ods_ir.Value[_ods_ir.VectorType]:
    return self.operands[1]

  @builtins.property
  def mask(self) -> _ods_ir.Value[_ods_ir.VectorType]:
    return self.operands[2]

  @builtins.property
  def evl(self) -> _ods_ir.Value[_ods_ir.IntegerType]:
    return self.operands[3]

def intr_vp_reduce_fmul(res: _ods_ir.Type, satrt_value: _ods_ir.Value[_ods_ir.FloatType], val: _ods_ir.Value[_ods_ir.VectorType], mask: _ods_ir.Value[_ods_ir.VectorType], evl: _ods_ir.Value[_ods_ir.IntegerType], *, loc: _Optional[_ods_ir.Location] = None, ip: _Optional[_ods_ir.InsertionPoint] = None) -> _ods_ir.OpResult:
  return VPReduceFMulOp(res=res, satrt_value=satrt_value, val=val, mask=mask, evl=evl, loc=loc, ip=ip).result

@_ods_cext.register_operation(_Dialect)
class VPReduceMulOp(_ods_ir.OpView):
  OPERATION_NAME = "llvm.intr.vp.reduce.mul"

  _ODS_REGIONS = (0, True)

  def __init__(self, res: _ods_ir.Type, satrt_value: _ods_ir.Value[_ods_ir.IntegerType], val: _ods_ir.Value[_ods_ir.VectorType], mask: _ods_ir.Value[_ods_ir.VectorType], evl: _ods_ir.Value[_ods_ir.IntegerType], *, loc: _Optional[_ods_ir.Location] = None, ip: _Optional[_ods_ir.InsertionPoint] = None):
    operands = []
    attributes = {}
    regions = None
    operands.append(satrt_value)
    operands.append(val)
    operands.append(mask)
    operands.append(evl)
    _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 satrt_value(self) -> _ods_ir.Value[_ods_ir.IntegerType]:
    return self.operation.operands[0]

  @builtins.property
  def val(self) -> _ods_ir.Value[_ods_ir.VectorType]:
    return self.operation.operands[1]

  @builtins.property
  def mask(self) -> _ods_ir.Value[_ods_ir.VectorType]:
    return self.operation.operands[2]

  @builtins.property
  def evl(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(VPReduceMulOp)
class VPReduceMulOpAdaptor(_ods_ir.OpAdaptor):
  OPERATION_NAME = "llvm.intr.vp.reduce.mul"

  @builtins.property
  def satrt_value(self) -> _ods_ir.Value[_ods_ir.IntegerType]:
    return self.operands[0]

  @builtins.property
  def val(self) -> _ods_ir.Value[_ods_ir.VectorType]:
    return self.operands[1]

  @builtins.property
  def mask(self) -> _ods_ir.Value[_ods_ir.VectorType]:
    return self.operands[2]

  @builtins.property
  def evl(self) -> _ods_ir.Value[_ods_ir.IntegerType]:
    return self.operands[3]

def intr_vp_reduce_mul(res: _ods_ir.Type, satrt_value: _ods_ir.Value[_ods_ir.IntegerType], val: _ods_ir.Value[_ods_ir.VectorType], mask: _ods_ir.Value[_ods_ir.VectorType], evl: _ods_ir.Value[_ods_ir.IntegerType], *, loc: _Optional[_ods_ir.Location] = None, ip: _Optional[_ods_ir.InsertionPoint] = None) -> _ods_ir.OpResult:
  return VPReduceMulOp(res=res, satrt_value=satrt_value, val=val, mask=mask, evl=evl, loc=loc, ip=ip).result

@_ods_cext.register_operation(_Dialect)
class VPReduceOrOp(_ods_ir.OpView):
  OPERATION_NAME = "llvm.intr.vp.reduce.or"

  _ODS_REGIONS = (0, True)

  def __init__(self, res: _ods_ir.Type, satrt_value: _ods_ir.Value[_ods_ir.IntegerType], val: _ods_ir.Value[_ods_ir.VectorType], mask: _ods_ir.Value[_ods_ir.VectorType], evl: _ods_ir.Value[_ods_ir.IntegerType], *, loc: _Optional[_ods_ir.Location] = None, ip: _Optional[_ods_ir.InsertionPoint] = None):
    operands = []
    attributes = {}
    regions = None
    operands.append(satrt_value)
    operands.append(val)
    operands.append(mask)
    operands.append(evl)
    _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 satrt_value(self) -> _ods_ir.Value[_ods_ir.IntegerType]:
    return self.operation.operands[0]

  @builtins.property
  def val(self) -> _ods_ir.Value[_ods_ir.VectorType]:
    return self.operation.operands[1]

  @builtins.property
  def mask(self) -> _ods_ir.Value[_ods_ir.VectorType]:
    return self.operation.operands[2]

  @builtins.property
  def evl(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(VPReduceOrOp)
class VPReduceOrOpAdaptor(_ods_ir.OpAdaptor):
  OPERATION_NAME = "llvm.intr.vp.reduce.or"

  @builtins.property
  def satrt_value(self) -> _ods_ir.Value[_ods_ir.IntegerType]:
    return self.operands[0]

  @builtins.property
  def val(self) -> _ods_ir.Value[_ods_ir.VectorType]:
    return self.operands[1]

  @builtins.property
  def mask(self) -> _ods_ir.Value[_ods_ir.VectorType]:
    return self.operands[2]

  @builtins.property
  def evl(self) -> _ods_ir.Value[_ods_ir.IntegerType]:
    return self.operands[3]

def intr_vp_reduce_or(res: _ods_ir.Type, satrt_value: _ods_ir.Value[_ods_ir.IntegerType], val: _ods_ir.Value[_ods_ir.VectorType], mask: _ods_ir.Value[_ods_ir.VectorType], evl: _ods_ir.Value[_ods_ir.IntegerType], *, loc: _Optional[_ods_ir.Location] = None, ip: _Optional[_ods_ir.InsertionPoint] = None) -> _ods_ir.OpResult:
  return VPReduceOrOp(res=res, satrt_value=satrt_value, val=val, mask=mask, evl=evl, loc=loc, ip=ip).result

@_ods_cext.register_operation(_Dialect)
class VPReduceSMaxOp(_ods_ir.OpView):
  OPERATION_NAME = "llvm.intr.vp.reduce.smax"

  _ODS_REGIONS = (0, True)

  def __init__(self, res: _ods_ir.Type, satrt_value: _ods_ir.Value[_ods_ir.IntegerType], val: _ods_ir.Value[_ods_ir.VectorType], mask: _ods_ir.Value[_ods_ir.VectorType], evl: _ods_ir.Value[_ods_ir.IntegerType], *, loc: _Optional[_ods_ir.Location] = None, ip: _Optional[_ods_ir.InsertionPoint] = None):
    operands = []
    attributes = {}
    regions = None
    operands.append(satrt_value)
    operands.append(val)
    operands.append(mask)
    operands.append(evl)
    _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 satrt_value(self) -> _ods_ir.Value[_ods_ir.IntegerType]:
    return self.operation.operands[0]

  @builtins.property
  def val(self) -> _ods_ir.Value[_ods_ir.VectorType]:
    return self.operation.operands[1]

  @builtins.property
  def mask(self) -> _ods_ir.Value[_ods_ir.VectorType]:
    return self.operation.operands[2]

  @builtins.property
  def evl(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(VPReduceSMaxOp)
class VPReduceSMaxOpAdaptor(_ods_ir.OpAdaptor):
  OPERATION_NAME = "llvm.intr.vp.reduce.smax"

  @builtins.property
  def satrt_value(self) -> _ods_ir.Value[_ods_ir.IntegerType]:
    return self.operands[0]

  @builtins.property
  def val(self) -> _ods_ir.Value[_ods_ir.VectorType]:
    return self.operands[1]

  @builtins.property
  def mask(self) -> _ods_ir.Value[_ods_ir.VectorType]:
    return self.operands[2]

  @builtins.property
  def evl(self) -> _ods_ir.Value[_ods_ir.IntegerType]:
    return self.operands[3]

def intr_vp_reduce_smax(res: _ods_ir.Type, satrt_value: _ods_ir.Value[_ods_ir.IntegerType], val: _ods_ir.Value[_ods_ir.VectorType], mask: _ods_ir.Value[_ods_ir.VectorType], evl: _ods_ir.Value[_ods_ir.IntegerType], *, loc: _Optional[_ods_ir.Location] = None, ip: _Optional[_ods_ir.InsertionPoint] = None) -> _ods_ir.OpResult:
  return VPReduceSMaxOp(res=res, satrt_value=satrt_value, val=val, mask=mask, evl=evl, loc=loc, ip=ip).result

@_ods_cext.register_operation(_Dialect)
class VPReduceSMinOp(_ods_ir.OpView):
  OPERATION_NAME = "llvm.intr.vp.reduce.smin"

  _ODS_REGIONS = (0, True)

  def __init__(self, res: _ods_ir.Type, satrt_value: _ods_ir.Value[_ods_ir.IntegerType], val: _ods_ir.Value[_ods_ir.VectorType], mask: _ods_ir.Value[_ods_ir.VectorType], evl: _ods_ir.Value[_ods_ir.IntegerType], *, loc: _Optional[_ods_ir.Location] = None, ip: _Optional[_ods_ir.InsertionPoint] = None):
    operands = []
    attributes = {}
    regions = None
    operands.append(satrt_value)
    operands.append(val)
    operands.append(mask)
    operands.append(evl)
    _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 satrt_value(self) -> _ods_ir.Value[_ods_ir.IntegerType]:
    return self.operation.operands[0]

  @builtins.property
  def val(self) -> _ods_ir.Value[_ods_ir.VectorType]:
    return self.operation.operands[1]

  @builtins.property
  def mask(self) -> _ods_ir.Value[_ods_ir.VectorType]:
    return self.operation.operands[2]

  @builtins.property
  def evl(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(VPReduceSMinOp)
class VPReduceSMinOpAdaptor(_ods_ir.OpAdaptor):
  OPERATION_NAME = "llvm.intr.vp.reduce.smin"

  @builtins.property
  def satrt_value(self) -> _ods_ir.Value[_ods_ir.IntegerType]:
    return self.operands[0]

  @builtins.property
  def val(self) -> _ods_ir.Value[_ods_ir.VectorType]:
    return self.operands[1]

  @builtins.property
  def mask(self) -> _ods_ir.Value[_ods_ir.VectorType]:
    return self.operands[2]

  @builtins.property
  def evl(self) -> _ods_ir.Value[_ods_ir.IntegerType]:
    return self.operands[3]

def intr_vp_reduce_smin(res: _ods_ir.Type, satrt_value: _ods_ir.Value[_ods_ir.IntegerType], val: _ods_ir.Value[_ods_ir.VectorType], mask: _ods_ir.Value[_ods_ir.VectorType], evl: _ods_ir.Value[_ods_ir.IntegerType], *, loc: _Optional[_ods_ir.Location] = None, ip: _Optional[_ods_ir.InsertionPoint] = None) -> _ods_ir.OpResult:
  return VPReduceSMinOp(res=res, satrt_value=satrt_value, val=val, mask=mask, evl=evl, loc=loc, ip=ip).result

@_ods_cext.register_operation(_Dialect)
class VPReduceUMaxOp(_ods_ir.OpView):
  OPERATION_NAME = "llvm.intr.vp.reduce.umax"

  _ODS_REGIONS = (0, True)

  def __init__(self, res: _ods_ir.Type, satrt_value: _ods_ir.Value[_ods_ir.IntegerType], val: _ods_ir.Value[_ods_ir.VectorType], mask: _ods_ir.Value[_ods_ir.VectorType], evl: _ods_ir.Value[_ods_ir.IntegerType], *, loc: _Optional[_ods_ir.Location] = None, ip: _Optional[_ods_ir.InsertionPoint] = None):
    operands = []
    attributes = {}
    regions = None
    operands.append(satrt_value)
    operands.append(val)
    operands.append(mask)
    operands.append(evl)
    _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 satrt_value(self) -> _ods_ir.Value[_ods_ir.IntegerType]:
    return self.operation.operands[0]

  @builtins.property
  def val(self) -> _ods_ir.Value[_ods_ir.VectorType]:
    return self.operation.operands[1]

  @builtins.property
  def mask(self) -> _ods_ir.Value[_ods_ir.VectorType]:
    return self.operation.operands[2]

  @builtins.property
  def evl(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(VPReduceUMaxOp)
class VPReduceUMaxOpAdaptor(_ods_ir.OpAdaptor):
  OPERATION_NAME = "llvm.intr.vp.reduce.umax"

  @builtins.property
  def satrt_value(self) -> _ods_ir.Value[_ods_ir.IntegerType]:
    return self.operands[0]

  @builtins.property
  def val(self) -> _ods_ir.Value[_ods_ir.VectorType]:
    return self.operands[1]

  @builtins.property
  def mask(self) -> _ods_ir.Value[_ods_ir.VectorType]:
    return self.operands[2]

  @builtins.property
  def evl(self) -> _ods_ir.Value[_ods_ir.IntegerType]:
    return self.operands[3]

def intr_vp_reduce_umax(res: _ods_ir.Type, satrt_value: _ods_ir.Value[_ods_ir.IntegerType], val: _ods_ir.Value[_ods_ir.VectorType], mask: _ods_ir.Value[_ods_ir.VectorType], evl: _ods_ir.Value[_ods_ir.IntegerType], *, loc: _Optional[_ods_ir.Location] = None, ip: _Optional[_ods_ir.InsertionPoint] = None) -> _ods_ir.OpResult:
  return VPReduceUMaxOp(res=res, satrt_value=satrt_value, val=val, mask=mask, evl=evl, loc=loc, ip=ip).result

@_ods_cext.register_operation(_Dialect)
class VPReduceUMinOp(_ods_ir.OpView):
  OPERATION_NAME = "llvm.intr.vp.reduce.umin"

  _ODS_REGIONS = (0, True)

  def __init__(self, res: _ods_ir.Type, satrt_value: _ods_ir.Value[_ods_ir.IntegerType], val: _ods_ir.Value[_ods_ir.VectorType], mask: _ods_ir.Value[_ods_ir.VectorType], evl: _ods_ir.Value[_ods_ir.IntegerType], *, loc: _Optional[_ods_ir.Location] = None, ip: _Optional[_ods_ir.InsertionPoint] = None):
    operands = []
    attributes = {}
    regions = None
    operands.append(satrt_value)
    operands.append(val)
    operands.append(mask)
    operands.append(evl)
    _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 satrt_value(self) -> _ods_ir.Value[_ods_ir.IntegerType]:
    return self.operation.operands[0]

  @builtins.property
  def val(self) -> _ods_ir.Value[_ods_ir.VectorType]:
    return self.operation.operands[1]

  @builtins.property
  def mask(self) -> _ods_ir.Value[_ods_ir.VectorType]:
    return self.operation.operands[2]

  @builtins.property
  def evl(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(VPReduceUMinOp)
class VPReduceUMinOpAdaptor(_ods_ir.OpAdaptor):
  OPERATION_NAME = "llvm.intr.vp.reduce.umin"

  @builtins.property
  def satrt_value(self) -> _ods_ir.Value[_ods_ir.IntegerType]:
    return self.operands[0]

  @builtins.property
  def val(self) -> _ods_ir.Value[_ods_ir.VectorType]:
    return self.operands[1]

  @builtins.property
  def mask(self) -> _ods_ir.Value[_ods_ir.VectorType]:
    return self.operands[2]

  @builtins.property
  def evl(self) -> _ods_ir.Value[_ods_ir.IntegerType]:
    return self.operands[3]

def intr_vp_reduce_umin(res: _ods_ir.Type, satrt_value: _ods_ir.Value[_ods_ir.IntegerType], val: _ods_ir.Value[_ods_ir.VectorType], mask: _ods_ir.Value[_ods_ir.VectorType], evl: _ods_ir.Value[_ods_ir.IntegerType], *, loc: _Optional[_ods_ir.Location] = None, ip: _Optional[_ods_ir.InsertionPoint] = None) -> _ods_ir.OpResult:
  return VPReduceUMinOp(res=res, satrt_value=satrt_value, val=val, mask=mask, evl=evl, loc=loc, ip=ip).result

@_ods_cext.register_operation(_Dialect)
class VPReduceXorOp(_ods_ir.OpView):
  OPERATION_NAME = "llvm.intr.vp.reduce.xor"

  _ODS_REGIONS = (0, True)

  def __init__(self, res: _ods_ir.Type, satrt_value: _ods_ir.Value[_ods_ir.IntegerType], val: _ods_ir.Value[_ods_ir.VectorType], mask: _ods_ir.Value[_ods_ir.VectorType], evl: _ods_ir.Value[_ods_ir.IntegerType], *, loc: _Optional[_ods_ir.Location] = None, ip: _Optional[_ods_ir.InsertionPoint] = None):
    operands = []
    attributes = {}
    regions = None
    operands.append(satrt_value)
    operands.append(val)
    operands.append(mask)
    operands.append(evl)
    _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 satrt_value(self) -> _ods_ir.Value[_ods_ir.IntegerType]:
    return self.operation.operands[0]

  @builtins.property
  def val(self) -> _ods_ir.Value[_ods_ir.VectorType]:
    return self.operation.operands[1]

  @builtins.property
  def mask(self) -> _ods_ir.Value[_ods_ir.VectorType]:
    return self.operation.operands[2]

  @builtins.property
  def evl(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(VPReduceXorOp)
class VPReduceXorOpAdaptor(_ods_ir.OpAdaptor):
  OPERATION_NAME = "llvm.intr.vp.reduce.xor"

  @builtins.property
  def satrt_value(self) -> _ods_ir.Value[_ods_ir.IntegerType]:
    return self.operands[0]

  @builtins.property
  def val(self) -> _ods_ir.Value[_ods_ir.VectorType]:
    return self.operands[1]

  @builtins.property
  def mask(self) -> _ods_ir.Value[_ods_ir.VectorType]:
    return self.operands[2]

  @builtins.property
  def evl(self) -> _ods_ir.Value[_ods_ir.IntegerType]:
    return self.operands[3]

def intr_vp_reduce_xor(res: _ods_ir.Type, satrt_value: _ods_ir.Value[_ods_ir.IntegerType], val: _ods_ir.Value[_ods_ir.VectorType], mask: _ods_ir.Value[_ods_ir.VectorType], evl: _ods_ir.Value[_ods_ir.IntegerType], *, loc: _Optional[_ods_ir.Location] = None, ip: _Optional[_ods_ir.InsertionPoint] = None) -> _ods_ir.OpResult:
  return VPReduceXorOp(res=res, satrt_value=satrt_value, val=val, mask=mask, evl=evl, loc=loc, ip=ip).result

@_ods_cext.register_operation(_Dialect)
class VPSDivOp(_ods_ir.OpView):
  OPERATION_NAME = "llvm.intr.vp.sdiv"

  _ODS_REGIONS = (0, True)

  def __init__(self, res: _ods_ir.Type, lhs: _ods_ir.Value[_ods_ir.VectorType], rhs: _ods_ir.Value[_ods_ir.VectorType], mask: _ods_ir.Value[_ods_ir.VectorType], evl: _ods_ir.Value[_ods_ir.IntegerType], *, loc: _Optional[_ods_ir.Location] = None, ip: _Optional[_ods_ir.InsertionPoint] = None):
    operands = []
    attributes = {}
    regions = None
    operands.append(lhs)
    operands.append(rhs)
    operands.append(mask)
    operands.append(evl)
    _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 lhs(self) -> _ods_ir.Value[_ods_ir.VectorType]:
    return self.operation.operands[0]

  @builtins.property
  def rhs(self) -> _ods_ir.Value[_ods_ir.VectorType]:
    return self.operation.operands[1]

  @builtins.property
  def mask(self) -> _ods_ir.Value[_ods_ir.VectorType]:
    return self.operation.operands[2]

  @builtins.property
  def evl(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(VPSDivOp)
class VPSDivOpAdaptor(_ods_ir.OpAdaptor):
  OPERATION_NAME = "llvm.intr.vp.sdiv"

  @builtins.property
  def lhs(self) -> _ods_ir.Value[_ods_ir.VectorType]:
    return self.operands[0]

  @builtins.property
  def rhs(self) -> _ods_ir.Value[_ods_ir.VectorType]:
    return self.operands[1]

  @builtins.property
  def mask(self) -> _ods_ir.Value[_ods_ir.VectorType]:
    return self.operands[2]

  @builtins.property
  def evl(self) -> _ods_ir.Value[_ods_ir.IntegerType]:
    return self.operands[3]

def intr_vp_sdiv(res: _ods_ir.Type, lhs: _ods_ir.Value[_ods_ir.VectorType], rhs: _ods_ir.Value[_ods_ir.VectorType], mask: _ods_ir.Value[_ods_ir.VectorType], evl: _ods_ir.Value[_ods_ir.IntegerType], *, loc: _Optional[_ods_ir.Location] = None, ip: _Optional[_ods_ir.InsertionPoint] = None) -> _ods_ir.OpResult:
  return VPSDivOp(res=res, lhs=lhs, rhs=rhs, mask=mask, evl=evl, loc=loc, ip=ip).result

@_ods_cext.register_operation(_Dialect)
class VPSExtOp(_ods_ir.OpView):
  OPERATION_NAME = "llvm.intr.vp.sext"

  _ODS_REGIONS = (0, True)

  def __init__(self, res: _ods_ir.Type, src: _ods_ir.Value[_ods_ir.VectorType], mask: _ods_ir.Value[_ods_ir.VectorType], evl: _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(mask)
    operands.append(evl)
    _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 mask(self) -> _ods_ir.Value[_ods_ir.VectorType]:
    return self.operation.operands[1]

  @builtins.property
  def evl(self) -> _ods_ir.Value[_ods_ir.IntegerType]:
    return self.operation.operands[2]

  @builtins.property
  def res(self) -> _ods_ir.OpResult:
    return self.operation.results[0]

@_ods_cext.register_op_adaptor(VPSExtOp)
class VPSExtOpAdaptor(_ods_ir.OpAdaptor):
  OPERATION_NAME = "llvm.intr.vp.sext"

  @builtins.property
  def src(self) -> _ods_ir.Value[_ods_ir.VectorType]:
    return self.operands[0]

  @builtins.property
  def mask(self) -> _ods_ir.Value[_ods_ir.VectorType]:
    return self.operands[1]

  @builtins.property
  def evl(self) -> _ods_ir.Value[_ods_ir.IntegerType]:
    return self.operands[2]

def intr_vp_sext(res: _ods_ir.Type, src: _ods_ir.Value[_ods_ir.VectorType], mask: _ods_ir.Value[_ods_ir.VectorType], evl: _ods_ir.Value[_ods_ir.IntegerType], *, loc: _Optional[_ods_ir.Location] = None, ip: _Optional[_ods_ir.InsertionPoint] = None) -> _ods_ir.OpResult:
  return VPSExtOp(res=res, src=src, mask=mask, evl=evl, loc=loc, ip=ip).result

@_ods_cext.register_operation(_Dialect)
class VPSIToFPOp(_ods_ir.OpView):
  OPERATION_NAME = "llvm.intr.vp.sitofp"

  _ODS_REGIONS = (0, True)

  def __init__(self, res: _ods_ir.Type, src: _ods_ir.Value[_ods_ir.VectorType], mask: _ods_ir.Value[_ods_ir.VectorType], evl: _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(mask)
    operands.append(evl)
    _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 mask(self) -> _ods_ir.Value[_ods_ir.VectorType]:
    return self.operation.operands[1]

  @builtins.property
  def evl(self) -> _ods_ir.Value[_ods_ir.IntegerType]:
    return self.operation.operands[2]

  @builtins.property
  def res(self) -> _ods_ir.OpResult:
    return self.operation.results[0]

@_ods_cext.register_op_adaptor(VPSIToFPOp)
class VPSIToFPOpAdaptor(_ods_ir.OpAdaptor):
  OPERATION_NAME = "llvm.intr.vp.sitofp"

  @builtins.property
  def src(self) -> _ods_ir.Value[_ods_ir.VectorType]:
    return self.operands[0]

  @builtins.property
  def mask(self) -> _ods_ir.Value[_ods_ir.VectorType]:
    return self.operands[1]

  @builtins.property
  def evl(self) -> _ods_ir.Value[_ods_ir.IntegerType]:
    return self.operands[2]

def intr_vp_sitofp(res: _ods_ir.Type, src: _ods_ir.Value[_ods_ir.VectorType], mask: _ods_ir.Value[_ods_ir.VectorType], evl: _ods_ir.Value[_ods_ir.IntegerType], *, loc: _Optional[_ods_ir.Location] = None, ip: _Optional[_ods_ir.InsertionPoint] = None) -> _ods_ir.OpResult:
  return VPSIToFPOp(res=res, src=src, mask=mask, evl=evl, loc=loc, ip=ip).result

@_ods_cext.register_operation(_Dialect)
class VPSMaxOp(_ods_ir.OpView):
  OPERATION_NAME = "llvm.intr.vp.smax"

  _ODS_REGIONS = (0, True)

  def __init__(self, res: _ods_ir.Type, lhs: _ods_ir.Value[_ods_ir.VectorType], rhs: _ods_ir.Value[_ods_ir.VectorType], mask: _ods_ir.Value[_ods_ir.VectorType], evl: _ods_ir.Value[_ods_ir.IntegerType], *, loc: _Optional[_ods_ir.Location] = None, ip: _Optional[_ods_ir.InsertionPoint] = None):
    operands = []
    attributes = {}
    regions = None
    operands.append(lhs)
    operands.append(rhs)
    operands.append(mask)
    operands.append(evl)
    _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 lhs(self) -> _ods_ir.Value[_ods_ir.VectorType]:
    return self.operation.operands[0]

  @builtins.property
  def rhs(self) -> _ods_ir.Value[_ods_ir.VectorType]:
    return self.operation.operands[1]

  @builtins.property
  def mask(self) -> _ods_ir.Value[_ods_ir.VectorType]:
    return self.operation.operands[2]

  @builtins.property
  def evl(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(VPSMaxOp)
class VPSMaxOpAdaptor(_ods_ir.OpAdaptor):
  OPERATION_NAME = "llvm.intr.vp.smax"

  @builtins.property
  def lhs(self) -> _ods_ir.Value[_ods_ir.VectorType]:
    return self.operands[0]

  @builtins.property
  def rhs(self) -> _ods_ir.Value[_ods_ir.VectorType]:
    return self.operands[1]

  @builtins.property
  def mask(self) -> _ods_ir.Value[_ods_ir.VectorType]:
    return self.operands[2]

  @builtins.property
  def evl(self) -> _ods_ir.Value[_ods_ir.IntegerType]:
    return self.operands[3]

def intr_vp_smax(res: _ods_ir.Type, lhs: _ods_ir.Value[_ods_ir.VectorType], rhs: _ods_ir.Value[_ods_ir.VectorType], mask: _ods_ir.Value[_ods_ir.VectorType], evl: _ods_ir.Value[_ods_ir.IntegerType], *, loc: _Optional[_ods_ir.Location] = None, ip: _Optional[_ods_ir.InsertionPoint] = None) -> _ods_ir.OpResult:
  return VPSMaxOp(res=res, lhs=lhs, rhs=rhs, mask=mask, evl=evl, loc=loc, ip=ip).result

@_ods_cext.register_operation(_Dialect)
class VPSMinOp(_ods_ir.OpView):
  OPERATION_NAME = "llvm.intr.vp.smin"

  _ODS_REGIONS = (0, True)

  def __init__(self, res: _ods_ir.Type, lhs: _ods_ir.Value[_ods_ir.VectorType], rhs: _ods_ir.Value[_ods_ir.VectorType], mask: _ods_ir.Value[_ods_ir.VectorType], evl: _ods_ir.Value[_ods_ir.IntegerType], *, loc: _Optional[_ods_ir.Location] = None, ip: _Optional[_ods_ir.InsertionPoint] = None):
    operands = []
    attributes = {}
    regions = None
    operands.append(lhs)
    operands.append(rhs)
    operands.append(mask)
    operands.append(evl)
    _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 lhs(self) -> _ods_ir.Value[_ods_ir.VectorType]:
    return self.operation.operands[0]

  @builtins.property
  def rhs(self) -> _ods_ir.Value[_ods_ir.VectorType]:
    return self.operation.operands[1]

  @builtins.property
  def mask(self) -> _ods_ir.Value[_ods_ir.VectorType]:
    return self.operation.operands[2]

  @builtins.property
  def evl(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(VPSMinOp)
class VPSMinOpAdaptor(_ods_ir.OpAdaptor):
  OPERATION_NAME = "llvm.intr.vp.smin"

  @builtins.property
  def lhs(self) -> _ods_ir.Value[_ods_ir.VectorType]:
    return self.operands[0]

  @builtins.property
  def rhs(self) -> _ods_ir.Value[_ods_ir.VectorType]:
    return self.operands[1]

  @builtins.property
  def mask(self) -> _ods_ir.Value[_ods_ir.VectorType]:
    return self.operands[2]

  @builtins.property
  def evl(self) -> _ods_ir.Value[_ods_ir.IntegerType]:
    return self.operands[3]

def intr_vp_smin(res: _ods_ir.Type, lhs: _ods_ir.Value[_ods_ir.VectorType], rhs: _ods_ir.Value[_ods_ir.VectorType], mask: _ods_ir.Value[_ods_ir.VectorType], evl: _ods_ir.Value[_ods_ir.IntegerType], *, loc: _Optional[_ods_ir.Location] = None, ip: _Optional[_ods_ir.InsertionPoint] = None) -> _ods_ir.OpResult:
  return VPSMinOp(res=res, lhs=lhs, rhs=rhs, mask=mask, evl=evl, loc=loc, ip=ip).result

@_ods_cext.register_operation(_Dialect)
class VPSRemOp(_ods_ir.OpView):
  OPERATION_NAME = "llvm.intr.vp.srem"

  _ODS_REGIONS = (0, True)

  def __init__(self, res: _ods_ir.Type, lhs: _ods_ir.Value[_ods_ir.VectorType], rhs: _ods_ir.Value[_ods_ir.VectorType], mask: _ods_ir.Value[_ods_ir.VectorType], evl: _ods_ir.Value[_ods_ir.IntegerType], *, loc: _Optional[_ods_ir.Location] = None, ip: _Optional[_ods_ir.InsertionPoint] = None):
    operands = []
    attributes = {}
    regions = None
    operands.append(lhs)
    operands.append(rhs)
    operands.append(mask)
    operands.append(evl)
    _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 lhs(self) -> _ods_ir.Value[_ods_ir.VectorType]:
    return self.operation.operands[0]

  @builtins.property
  def rhs(self) -> _ods_ir.Value[_ods_ir.VectorType]:
    return self.operation.operands[1]

  @builtins.property
  def mask(self) -> _ods_ir.Value[_ods_ir.VectorType]:
    return self.operation.operands[2]

  @builtins.property
  def evl(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(VPSRemOp)
class VPSRemOpAdaptor(_ods_ir.OpAdaptor):
  OPERATION_NAME = "llvm.intr.vp.srem"

  @builtins.property
  def lhs(self) -> _ods_ir.Value[_ods_ir.VectorType]:
    return self.operands[0]

  @builtins.property
  def rhs(self) -> _ods_ir.Value[_ods_ir.VectorType]:
    return self.operands[1]

  @builtins.property
  def mask(self) -> _ods_ir.Value[_ods_ir.VectorType]:
    return self.operands[2]

  @builtins.property
  def evl(self) -> _ods_ir.Value[_ods_ir.IntegerType]:
    return self.operands[3]

def intr_vp_srem(res: _ods_ir.Type, lhs: _ods_ir.Value[_ods_ir.VectorType], rhs: _ods_ir.Value[_ods_ir.VectorType], mask: _ods_ir.Value[_ods_ir.VectorType], evl: _ods_ir.Value[_ods_ir.IntegerType], *, loc: _Optional[_ods_ir.Location] = None, ip: _Optional[_ods_ir.InsertionPoint] = None) -> _ods_ir.OpResult:
  return VPSRemOp(res=res, lhs=lhs, rhs=rhs, mask=mask, evl=evl, loc=loc, ip=ip).result

@_ods_cext.register_operation(_Dialect)
class VPSelectMinOp(_ods_ir.OpView):
  OPERATION_NAME = "llvm.intr.vp.select"

  _ODS_REGIONS = (0, True)

  def __init__(self, res: _ods_ir.Type, cond: _ods_ir.Value[_ods_ir.VectorType], true_val: _ods_ir.Value[_ods_ir.VectorType], false_val: _ods_ir.Value[_ods_ir.VectorType], evl: _ods_ir.Value[_ods_ir.IntegerType], *, loc: _Optional[_ods_ir.Location] = None, ip: _Optional[_ods_ir.InsertionPoint] = None):
    operands = []
    attributes = {}
    regions = None
    operands.append(cond)
    operands.append(true_val)
    operands.append(false_val)
    operands.append(evl)
    _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 cond(self) -> _ods_ir.Value[_ods_ir.VectorType]:
    return self.operation.operands[0]

  @builtins.property
  def true_val(self) -> _ods_ir.Value[_ods_ir.VectorType]:
    return self.operation.operands[1]

  @builtins.property
  def false_val(self) -> _ods_ir.Value[_ods_ir.VectorType]:
    return self.operation.operands[2]

  @builtins.property
  def evl(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(VPSelectMinOp)
class VPSelectMinOpAdaptor(_ods_ir.OpAdaptor):
  OPERATION_NAME = "llvm.intr.vp.select"

  @builtins.property
  def cond(self) -> _ods_ir.Value[_ods_ir.VectorType]:
    return self.operands[0]

  @builtins.property
  def true_val(self) -> _ods_ir.Value[_ods_ir.VectorType]:
    return self.operands[1]

  @builtins.property
  def false_val(self) -> _ods_ir.Value[_ods_ir.VectorType]:
    return self.operands[2]

  @builtins.property
  def evl(self) -> _ods_ir.Value[_ods_ir.IntegerType]:
    return self.operands[3]

def intr_vp_select(res: _ods_ir.Type, cond: _ods_ir.Value[_ods_ir.VectorType], true_val: _ods_ir.Value[_ods_ir.VectorType], false_val: _ods_ir.Value[_ods_ir.VectorType], evl: _ods_ir.Value[_ods_ir.IntegerType], *, loc: _Optional[_ods_ir.Location] = None, ip: _Optional[_ods_ir.InsertionPoint] = None) -> _ods_ir.OpResult:
  return VPSelectMinOp(res=res, cond=cond, true_val=true_val, false_val=false_val, evl=evl, loc=loc, ip=ip).result

@_ods_cext.register_operation(_Dialect)
class VPShlOp(_ods_ir.OpView):
  OPERATION_NAME = "llvm.intr.vp.shl"

  _ODS_REGIONS = (0, True)

  def __init__(self, res: _ods_ir.Type, lhs: _ods_ir.Value[_ods_ir.VectorType], rhs: _ods_ir.Value[_ods_ir.VectorType], mask: _ods_ir.Value[_ods_ir.VectorType], evl: _ods_ir.Value[_ods_ir.IntegerType], *, loc: _Optional[_ods_ir.Location] = None, ip: _Optional[_ods_ir.InsertionPoint] = None):
    operands = []
    attributes = {}
    regions = None
    operands.append(lhs)
    operands.append(rhs)
    operands.append(mask)
    operands.append(evl)
    _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 lhs(self) -> _ods_ir.Value[_ods_ir.VectorType]:
    return self.operation.operands[0]

  @builtins.property
  def rhs(self) -> _ods_ir.Value[_ods_ir.VectorType]:
    return self.operation.operands[1]

  @builtins.property
  def mask(self) -> _ods_ir.Value[_ods_ir.VectorType]:
    return self.operation.operands[2]

  @builtins.property
  def evl(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(VPShlOp)
class VPShlOpAdaptor(_ods_ir.OpAdaptor):
  OPERATION_NAME = "llvm.intr.vp.shl"

  @builtins.property
  def lhs(self) -> _ods_ir.Value[_ods_ir.VectorType]:
    return self.operands[0]

  @builtins.property
  def rhs(self) -> _ods_ir.Value[_ods_ir.VectorType]:
    return self.operands[1]

  @builtins.property
  def mask(self) -> _ods_ir.Value[_ods_ir.VectorType]:
    return self.operands[2]

  @builtins.property
  def evl(self) -> _ods_ir.Value[_ods_ir.IntegerType]:
    return self.operands[3]

def intr_vp_shl(res: _ods_ir.Type, lhs: _ods_ir.Value[_ods_ir.VectorType], rhs: _ods_ir.Value[_ods_ir.VectorType], mask: _ods_ir.Value[_ods_ir.VectorType], evl: _ods_ir.Value[_ods_ir.IntegerType], *, loc: _Optional[_ods_ir.Location] = None, ip: _Optional[_ods_ir.InsertionPoint] = None) -> _ods_ir.OpResult:
  return VPShlOp(res=res, lhs=lhs, rhs=rhs, mask=mask, evl=evl, loc=loc, ip=ip).result

@_ods_cext.register_operation(_Dialect)
class VPStoreOp(_ods_ir.OpView):
  OPERATION_NAME = "llvm.intr.vp.store"

  _ODS_REGIONS = (0, True)

  def __init__(self, val: _ods_ir.Value[_ods_ir.VectorType], ptr: _ods_ir.Value, mask: _ods_ir.Value[_ods_ir.VectorType], evl: _ods_ir.Value[_ods_ir.IntegerType], *, loc: _Optional[_ods_ir.Location] = None, ip: _Optional[_ods_ir.InsertionPoint] = None):
    operands = []
    attributes = {}
    regions = None
    operands.append(val)
    operands.append(ptr)
    operands.append(mask)
    operands.append(evl)
    _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 val(self) -> _ods_ir.Value[_ods_ir.VectorType]:
    return self.operation.operands[0]

  @builtins.property
  def ptr(self) -> _ods_ir.Value:
    return self.operation.operands[1]

  @builtins.property
  def mask(self) -> _ods_ir.Value[_ods_ir.VectorType]:
    return self.operation.operands[2]

  @builtins.property
  def evl(self) -> _ods_ir.Value[_ods_ir.IntegerType]:
    return self.operation.operands[3]

@_ods_cext.register_op_adaptor(VPStoreOp)
class VPStoreOpAdaptor(_ods_ir.OpAdaptor):
  OPERATION_NAME = "llvm.intr.vp.store"

  @builtins.property
  def val(self) -> _ods_ir.Value[_ods_ir.VectorType]:
    return self.operands[0]

  @builtins.property
  def ptr(self) -> _ods_ir.Value:
    return self.operands[1]

  @builtins.property
  def mask(self) -> _ods_ir.Value[_ods_ir.VectorType]:
    return self.operands[2]

  @builtins.property
  def evl(self) -> _ods_ir.Value[_ods_ir.IntegerType]:
    return self.operands[3]

def intr_vp_store(val: _ods_ir.Value[_ods_ir.VectorType], ptr: _ods_ir.Value, mask: _ods_ir.Value[_ods_ir.VectorType], evl: _ods_ir.Value[_ods_ir.IntegerType], *, loc: _Optional[_ods_ir.Location] = None, ip: _Optional[_ods_ir.InsertionPoint] = None) -> VPStoreOp:
  return VPStoreOp(val=val, ptr=ptr, mask=mask, evl=evl, loc=loc, ip=ip)

@_ods_cext.register_operation(_Dialect)
class VPStridedLoadOp(_ods_ir.OpView):
  OPERATION_NAME = "llvm.intr.experimental.vp.strided.load"

  _ODS_REGIONS = (0, True)

  def __init__(self, res: _ods_ir.Type, ptr: _ods_ir.Value, stride: _ods_ir.Value[_ods_ir.IntegerType], mask: _ods_ir.Value[_ods_ir.VectorType], evl: _ods_ir.Value[_ods_ir.IntegerType], *, loc: _Optional[_ods_ir.Location] = None, ip: _Optional[_ods_ir.InsertionPoint] = None):
    operands = []
    attributes = {}
    regions = None
    operands.append(ptr)
    operands.append(stride)
    operands.append(mask)
    operands.append(evl)
    _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 stride(self) -> _ods_ir.Value[_ods_ir.IntegerType]:
    return self.operation.operands[1]

  @builtins.property
  def mask(self) -> _ods_ir.Value[_ods_ir.VectorType]:
    return self.operation.operands[2]

  @builtins.property
  def evl(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(VPStridedLoadOp)
class VPStridedLoadOpAdaptor(_ods_ir.OpAdaptor):
  OPERATION_NAME = "llvm.intr.experimental.vp.strided.load"

  @builtins.property
  def ptr(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 mask(self) -> _ods_ir.Value[_ods_ir.VectorType]:
    return self.operands[2]

  @builtins.property
  def evl(self) -> _ods_ir.Value[_ods_ir.IntegerType]:
    return self.operands[3]

def intr_experimental_vp_strided_load(res: _ods_ir.Type, ptr: _ods_ir.Value, stride: _ods_ir.Value[_ods_ir.IntegerType], mask: _ods_ir.Value[_ods_ir.VectorType], evl: _ods_ir.Value[_ods_ir.IntegerType], *, loc: _Optional[_ods_ir.Location] = None, ip: _Optional[_ods_ir.InsertionPoint] = None) -> _ods_ir.OpResult:
  return VPStridedLoadOp(res=res, ptr=ptr, stride=stride, mask=mask, evl=evl, loc=loc, ip=ip).result

@_ods_cext.register_operation(_Dialect)
class VPStridedStoreOp(_ods_ir.OpView):
  OPERATION_NAME = "llvm.intr.experimental.vp.strided.store"

  _ODS_REGIONS = (0, True)

  def __init__(self, val: _ods_ir.Value[_ods_ir.VectorType], ptr: _ods_ir.Value, stride: _ods_ir.Value[_ods_ir.IntegerType], mask: _ods_ir.Value[_ods_ir.VectorType], evl: _ods_ir.Value[_ods_ir.IntegerType], *, loc: _Optional[_ods_ir.Location] = None, ip: _Optional[_ods_ir.InsertionPoint] = None):
    operands = []
    attributes = {}
    regions = None
    operands.append(val)
    operands.append(ptr)
    operands.append(stride)
    operands.append(mask)
    operands.append(evl)
    _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 val(self) -> _ods_ir.Value[_ods_ir.VectorType]:
    return self.operation.operands[0]

  @builtins.property
  def ptr(self) -> _ods_ir.Value:
    return self.operation.operands[1]

  @builtins.property
  def stride(self) -> _ods_ir.Value[_ods_ir.IntegerType]:
    return self.operation.operands[2]

  @builtins.property
  def mask(self) -> _ods_ir.Value[_ods_ir.VectorType]:
    return self.operation.operands[3]

  @builtins.property
  def evl(self) -> _ods_ir.Value[_ods_ir.IntegerType]:
    return self.operation.operands[4]

@_ods_cext.register_op_adaptor(VPStridedStoreOp)
class VPStridedStoreOpAdaptor(_ods_ir.OpAdaptor):
  OPERATION_NAME = "llvm.intr.experimental.vp.strided.store"

  @builtins.property
  def val(self) -> _ods_ir.Value[_ods_ir.VectorType]:
    return self.operands[0]

  @builtins.property
  def ptr(self) -> _ods_ir.Value:
    return self.operands[1]

  @builtins.property
  def stride(self) -> _ods_ir.Value[_ods_ir.IntegerType]:
    return self.operands[2]

  @builtins.property
  def mask(self) -> _ods_ir.Value[_ods_ir.VectorType]:
    return self.operands[3]

  @builtins.property
  def evl(self) -> _ods_ir.Value[_ods_ir.IntegerType]:
    return self.operands[4]

def intr_experimental_vp_strided_store(val: _ods_ir.Value[_ods_ir.VectorType], ptr: _ods_ir.Value, stride: _ods_ir.Value[_ods_ir.IntegerType], mask: _ods_ir.Value[_ods_ir.VectorType], evl: _ods_ir.Value[_ods_ir.IntegerType], *, loc: _Optional[_ods_ir.Location] = None, ip: _Optional[_ods_ir.InsertionPoint] = None) -> VPStridedStoreOp:
  return VPStridedStoreOp(val=val, ptr=ptr, stride=stride, mask=mask, evl=evl, loc=loc, ip=ip)

@_ods_cext.register_operation(_Dialect)
class VPSubOp(_ods_ir.OpView):
  OPERATION_NAME = "llvm.intr.vp.sub"

  _ODS_REGIONS = (0, True)

  def __init__(self, res: _ods_ir.Type, lhs: _ods_ir.Value[_ods_ir.VectorType], rhs: _ods_ir.Value[_ods_ir.VectorType], mask: _ods_ir.Value[_ods_ir.VectorType], evl: _ods_ir.Value[_ods_ir.IntegerType], *, loc: _Optional[_ods_ir.Location] = None, ip: _Optional[_ods_ir.InsertionPoint] = None):
    operands = []
    attributes = {}
    regions = None
    operands.append(lhs)
    operands.append(rhs)
    operands.append(mask)
    operands.append(evl)
    _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 lhs(self) -> _ods_ir.Value[_ods_ir.VectorType]:
    return self.operation.operands[0]

  @builtins.property
  def rhs(self) -> _ods_ir.Value[_ods_ir.VectorType]:
    return self.operation.operands[1]

  @builtins.property
  def mask(self) -> _ods_ir.Value[_ods_ir.VectorType]:
    return self.operation.operands[2]

  @builtins.property
  def evl(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(VPSubOp)
class VPSubOpAdaptor(_ods_ir.OpAdaptor):
  OPERATION_NAME = "llvm.intr.vp.sub"

  @builtins.property
  def lhs(self) -> _ods_ir.Value[_ods_ir.VectorType]:
    return self.operands[0]

  @builtins.property
  def rhs(self) -> _ods_ir.Value[_ods_ir.VectorType]:
    return self.operands[1]

  @builtins.property
  def mask(self) -> _ods_ir.Value[_ods_ir.VectorType]:
    return self.operands[2]

  @builtins.property
  def evl(self) -> _ods_ir.Value[_ods_ir.IntegerType]:
    return self.operands[3]

def intr_vp_sub(res: _ods_ir.Type, lhs: _ods_ir.Value[_ods_ir.VectorType], rhs: _ods_ir.Value[_ods_ir.VectorType], mask: _ods_ir.Value[_ods_ir.VectorType], evl: _ods_ir.Value[_ods_ir.IntegerType], *, loc: _Optional[_ods_ir.Location] = None, ip: _Optional[_ods_ir.InsertionPoint] = None) -> _ods_ir.OpResult:
  return VPSubOp(res=res, lhs=lhs, rhs=rhs, mask=mask, evl=evl, loc=loc, ip=ip).result

@_ods_cext.register_operation(_Dialect)
class VPTruncOp(_ods_ir.OpView):
  OPERATION_NAME = "llvm.intr.vp.trunc"

  _ODS_REGIONS = (0, True)

  def __init__(self, res: _ods_ir.Type, src: _ods_ir.Value[_ods_ir.VectorType], mask: _ods_ir.Value[_ods_ir.VectorType], evl: _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(mask)
    operands.append(evl)
    _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 mask(self) -> _ods_ir.Value[_ods_ir.VectorType]:
    return self.operation.operands[1]

  @builtins.property
  def evl(self) -> _ods_ir.Value[_ods_ir.IntegerType]:
    return self.operation.operands[2]

  @builtins.property
  def res(self) -> _ods_ir.OpResult:
    return self.operation.results[0]

@_ods_cext.register_op_adaptor(VPTruncOp)
class VPTruncOpAdaptor(_ods_ir.OpAdaptor):
  OPERATION_NAME = "llvm.intr.vp.trunc"

  @builtins.property
  def src(self) -> _ods_ir.Value[_ods_ir.VectorType]:
    return self.operands[0]

  @builtins.property
  def mask(self) -> _ods_ir.Value[_ods_ir.VectorType]:
    return self.operands[1]

  @builtins.property
  def evl(self) -> _ods_ir.Value[_ods_ir.IntegerType]:
    return self.operands[2]

def intr_vp_trunc(res: _ods_ir.Type, src: _ods_ir.Value[_ods_ir.VectorType], mask: _ods_ir.Value[_ods_ir.VectorType], evl: _ods_ir.Value[_ods_ir.IntegerType], *, loc: _Optional[_ods_ir.Location] = None, ip: _Optional[_ods_ir.InsertionPoint] = None) -> _ods_ir.OpResult:
  return VPTruncOp(res=res, src=src, mask=mask, evl=evl, loc=loc, ip=ip).result

@_ods_cext.register_operation(_Dialect)
class VPUDivOp(_ods_ir.OpView):
  OPERATION_NAME = "llvm.intr.vp.udiv"

  _ODS_REGIONS = (0, True)

  def __init__(self, res: _ods_ir.Type, lhs: _ods_ir.Value[_ods_ir.VectorType], rhs: _ods_ir.Value[_ods_ir.VectorType], mask: _ods_ir.Value[_ods_ir.VectorType], evl: _ods_ir.Value[_ods_ir.IntegerType], *, loc: _Optional[_ods_ir.Location] = None, ip: _Optional[_ods_ir.InsertionPoint] = None):
    operands = []
    attributes = {}
    regions = None
    operands.append(lhs)
    operands.append(rhs)
    operands.append(mask)
    operands.append(evl)
    _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 lhs(self) -> _ods_ir.Value[_ods_ir.VectorType]:
    return self.operation.operands[0]

  @builtins.property
  def rhs(self) -> _ods_ir.Value[_ods_ir.VectorType]:
    return self.operation.operands[1]

  @builtins.property
  def mask(self) -> _ods_ir.Value[_ods_ir.VectorType]:
    return self.operation.operands[2]

  @builtins.property
  def evl(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(VPUDivOp)
class VPUDivOpAdaptor(_ods_ir.OpAdaptor):
  OPERATION_NAME = "llvm.intr.vp.udiv"

  @builtins.property
  def lhs(self) -> _ods_ir.Value[_ods_ir.VectorType]:
    return self.operands[0]

  @builtins.property
  def rhs(self) -> _ods_ir.Value[_ods_ir.VectorType]:
    return self.operands[1]

  @builtins.property
  def mask(self) -> _ods_ir.Value[_ods_ir.VectorType]:
    return self.operands[2]

  @builtins.property
  def evl(self) -> _ods_ir.Value[_ods_ir.IntegerType]:
    return self.operands[3]

def intr_vp_udiv(res: _ods_ir.Type, lhs: _ods_ir.Value[_ods_ir.VectorType], rhs: _ods_ir.Value[_ods_ir.VectorType], mask: _ods_ir.Value[_ods_ir.VectorType], evl: _ods_ir.Value[_ods_ir.IntegerType], *, loc: _Optional[_ods_ir.Location] = None, ip: _Optional[_ods_ir.InsertionPoint] = None) -> _ods_ir.OpResult:
  return VPUDivOp(res=res, lhs=lhs, rhs=rhs, mask=mask, evl=evl, loc=loc, ip=ip).result

@_ods_cext.register_operation(_Dialect)
class VPUIToFPOp(_ods_ir.OpView):
  OPERATION_NAME = "llvm.intr.vp.uitofp"

  _ODS_REGIONS = (0, True)

  def __init__(self, res: _ods_ir.Type, src: _ods_ir.Value[_ods_ir.VectorType], mask: _ods_ir.Value[_ods_ir.VectorType], evl: _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(mask)
    operands.append(evl)
    _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 mask(self) -> _ods_ir.Value[_ods_ir.VectorType]:
    return self.operation.operands[1]

  @builtins.property
  def evl(self) -> _ods_ir.Value[_ods_ir.IntegerType]:
    return self.operation.operands[2]

  @builtins.property
  def res(self) -> _ods_ir.OpResult:
    return self.operation.results[0]

@_ods_cext.register_op_adaptor(VPUIToFPOp)
class VPUIToFPOpAdaptor(_ods_ir.OpAdaptor):
  OPERATION_NAME = "llvm.intr.vp.uitofp"

  @builtins.property
  def src(self) -> _ods_ir.Value[_ods_ir.VectorType]:
    return self.operands[0]

  @builtins.property
  def mask(self) -> _ods_ir.Value[_ods_ir.VectorType]:
    return self.operands[1]

  @builtins.property
  def evl(self) -> _ods_ir.Value[_ods_ir.IntegerType]:
    return self.operands[2]

def intr_vp_uitofp(res: _ods_ir.Type, src: _ods_ir.Value[_ods_ir.VectorType], mask: _ods_ir.Value[_ods_ir.VectorType], evl: _ods_ir.Value[_ods_ir.IntegerType], *, loc: _Optional[_ods_ir.Location] = None, ip: _Optional[_ods_ir.InsertionPoint] = None) -> _ods_ir.OpResult:
  return VPUIToFPOp(res=res, src=src, mask=mask, evl=evl, loc=loc, ip=ip).result

@_ods_cext.register_operation(_Dialect)
class VPUMaxOp(_ods_ir.OpView):
  OPERATION_NAME = "llvm.intr.vp.umax"

  _ODS_REGIONS = (0, True)

  def __init__(self, res: _ods_ir.Type, lhs: _ods_ir.Value[_ods_ir.VectorType], rhs: _ods_ir.Value[_ods_ir.VectorType], mask: _ods_ir.Value[_ods_ir.VectorType], evl: _ods_ir.Value[_ods_ir.IntegerType], *, loc: _Optional[_ods_ir.Location] = None, ip: _Optional[_ods_ir.InsertionPoint] = None):
    operands = []
    attributes = {}
    regions = None
    operands.append(lhs)
    operands.append(rhs)
    operands.append(mask)
    operands.append(evl)
    _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 lhs(self) -> _ods_ir.Value[_ods_ir.VectorType]:
    return self.operation.operands[0]

  @builtins.property
  def rhs(self) -> _ods_ir.Value[_ods_ir.VectorType]:
    return self.operation.operands[1]

  @builtins.property
  def mask(self) -> _ods_ir.Value[_ods_ir.VectorType]:
    return self.operation.operands[2]

  @builtins.property
  def evl(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(VPUMaxOp)
class VPUMaxOpAdaptor(_ods_ir.OpAdaptor):
  OPERATION_NAME = "llvm.intr.vp.umax"

  @builtins.property
  def lhs(self) -> _ods_ir.Value[_ods_ir.VectorType]:
    return self.operands[0]

  @builtins.property
  def rhs(self) -> _ods_ir.Value[_ods_ir.VectorType]:
    return self.operands[1]

  @builtins.property
  def mask(self) -> _ods_ir.Value[_ods_ir.VectorType]:
    return self.operands[2]

  @builtins.property
  def evl(self) -> _ods_ir.Value[_ods_ir.IntegerType]:
    return self.operands[3]

def intr_vp_umax(res: _ods_ir.Type, lhs: _ods_ir.Value[_ods_ir.VectorType], rhs: _ods_ir.Value[_ods_ir.VectorType], mask: _ods_ir.Value[_ods_ir.VectorType], evl: _ods_ir.Value[_ods_ir.IntegerType], *, loc: _Optional[_ods_ir.Location] = None, ip: _Optional[_ods_ir.InsertionPoint] = None) -> _ods_ir.OpResult:
  return VPUMaxOp(res=res, lhs=lhs, rhs=rhs, mask=mask, evl=evl, loc=loc, ip=ip).result

@_ods_cext.register_operation(_Dialect)
class VPUMinOp(_ods_ir.OpView):
  OPERATION_NAME = "llvm.intr.vp.umin"

  _ODS_REGIONS = (0, True)

  def __init__(self, res: _ods_ir.Type, lhs: _ods_ir.Value[_ods_ir.VectorType], rhs: _ods_ir.Value[_ods_ir.VectorType], mask: _ods_ir.Value[_ods_ir.VectorType], evl: _ods_ir.Value[_ods_ir.IntegerType], *, loc: _Optional[_ods_ir.Location] = None, ip: _Optional[_ods_ir.InsertionPoint] = None):
    operands = []
    attributes = {}
    regions = None
    operands.append(lhs)
    operands.append(rhs)
    operands.append(mask)
    operands.append(evl)
    _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 lhs(self) -> _ods_ir.Value[_ods_ir.VectorType]:
    return self.operation.operands[0]

  @builtins.property
  def rhs(self) -> _ods_ir.Value[_ods_ir.VectorType]:
    return self.operation.operands[1]

  @builtins.property
  def mask(self) -> _ods_ir.Value[_ods_ir.VectorType]:
    return self.operation.operands[2]

  @builtins.property
  def evl(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(VPUMinOp)
class VPUMinOpAdaptor(_ods_ir.OpAdaptor):
  OPERATION_NAME = "llvm.intr.vp.umin"

  @builtins.property
  def lhs(self) -> _ods_ir.Value[_ods_ir.VectorType]:
    return self.operands[0]

  @builtins.property
  def rhs(self) -> _ods_ir.Value[_ods_ir.VectorType]:
    return self.operands[1]

  @builtins.property
  def mask(self) -> _ods_ir.Value[_ods_ir.VectorType]:
    return self.operands[2]

  @builtins.property
  def evl(self) -> _ods_ir.Value[_ods_ir.IntegerType]:
    return self.operands[3]

def intr_vp_umin(res: _ods_ir.Type, lhs: _ods_ir.Value[_ods_ir.VectorType], rhs: _ods_ir.Value[_ods_ir.VectorType], mask: _ods_ir.Value[_ods_ir.VectorType], evl: _ods_ir.Value[_ods_ir.IntegerType], *, loc: _Optional[_ods_ir.Location] = None, ip: _Optional[_ods_ir.InsertionPoint] = None) -> _ods_ir.OpResult:
  return VPUMinOp(res=res, lhs=lhs, rhs=rhs, mask=mask, evl=evl, loc=loc, ip=ip).result

@_ods_cext.register_operation(_Dialect)
class VPURemOp(_ods_ir.OpView):
  OPERATION_NAME = "llvm.intr.vp.urem"

  _ODS_REGIONS = (0, True)

  def __init__(self, res: _ods_ir.Type, lhs: _ods_ir.Value[_ods_ir.VectorType], rhs: _ods_ir.Value[_ods_ir.VectorType], mask: _ods_ir.Value[_ods_ir.VectorType], evl: _ods_ir.Value[_ods_ir.IntegerType], *, loc: _Optional[_ods_ir.Location] = None, ip: _Optional[_ods_ir.InsertionPoint] = None):
    operands = []
    attributes = {}
    regions = None
    operands.append(lhs)
    operands.append(rhs)
    operands.append(mask)
    operands.append(evl)
    _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 lhs(self) -> _ods_ir.Value[_ods_ir.VectorType]:
    return self.operation.operands[0]

  @builtins.property
  def rhs(self) -> _ods_ir.Value[_ods_ir.VectorType]:
    return self.operation.operands[1]

  @builtins.property
  def mask(self) -> _ods_ir.Value[_ods_ir.VectorType]:
    return self.operation.operands[2]

  @builtins.property
  def evl(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(VPURemOp)
class VPURemOpAdaptor(_ods_ir.OpAdaptor):
  OPERATION_NAME = "llvm.intr.vp.urem"

  @builtins.property
  def lhs(self) -> _ods_ir.Value[_ods_ir.VectorType]:
    return self.operands[0]

  @builtins.property
  def rhs(self) -> _ods_ir.Value[_ods_ir.VectorType]:
    return self.operands[1]

  @builtins.property
  def mask(self) -> _ods_ir.Value[_ods_ir.VectorType]:
    return self.operands[2]

  @builtins.property
  def evl(self) -> _ods_ir.Value[_ods_ir.IntegerType]:
    return self.operands[3]

def intr_vp_urem(res: _ods_ir.Type, lhs: _ods_ir.Value[_ods_ir.VectorType], rhs: _ods_ir.Value[_ods_ir.VectorType], mask: _ods_ir.Value[_ods_ir.VectorType], evl: _ods_ir.Value[_ods_ir.IntegerType], *, loc: _Optional[_ods_ir.Location] = None, ip: _Optional[_ods_ir.InsertionPoint] = None) -> _ods_ir.OpResult:
  return VPURemOp(res=res, lhs=lhs, rhs=rhs, mask=mask, evl=evl, loc=loc, ip=ip).result

@_ods_cext.register_operation(_Dialect)
class VPXorOp(_ods_ir.OpView):
  OPERATION_NAME = "llvm.intr.vp.xor"

  _ODS_REGIONS = (0, True)

  def __init__(self, res: _ods_ir.Type, lhs: _ods_ir.Value[_ods_ir.VectorType], rhs: _ods_ir.Value[_ods_ir.VectorType], mask: _ods_ir.Value[_ods_ir.VectorType], evl: _ods_ir.Value[_ods_ir.IntegerType], *, loc: _Optional[_ods_ir.Location] = None, ip: _Optional[_ods_ir.InsertionPoint] = None):
    operands = []
    attributes = {}
    regions = None
    operands.append(lhs)
    operands.append(rhs)
    operands.append(mask)
    operands.append(evl)
    _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 lhs(self) -> _ods_ir.Value[_ods_ir.VectorType]:
    return self.operation.operands[0]

  @builtins.property
  def rhs(self) -> _ods_ir.Value[_ods_ir.VectorType]:
    return self.operation.operands[1]

  @builtins.property
  def mask(self) -> _ods_ir.Value[_ods_ir.VectorType]:
    return self.operation.operands[2]

  @builtins.property
  def evl(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(VPXorOp)
class VPXorOpAdaptor(_ods_ir.OpAdaptor):
  OPERATION_NAME = "llvm.intr.vp.xor"

  @builtins.property
  def lhs(self) -> _ods_ir.Value[_ods_ir.VectorType]:
    return self.operands[0]

  @builtins.property
  def rhs(self) -> _ods_ir.Value[_ods_ir.VectorType]:
    return self.operands[1]

  @builtins.property
  def mask(self) -> _ods_ir.Value[_ods_ir.VectorType]:
    return self.operands[2]

  @builtins.property
  def evl(self) -> _ods_ir.Value[_ods_ir.IntegerType]:
    return self.operands[3]

def intr_vp_xor(res: _ods_ir.Type, lhs: _ods_ir.Value[_ods_ir.VectorType], rhs: _ods_ir.Value[_ods_ir.VectorType], mask: _ods_ir.Value[_ods_ir.VectorType], evl: _ods_ir.Value[_ods_ir.IntegerType], *, loc: _Optional[_ods_ir.Location] = None, ip: _Optional[_ods_ir.InsertionPoint] = None) -> _ods_ir.OpResult:
  return VPXorOp(res=res, lhs=lhs, rhs=rhs, mask=mask, evl=evl, loc=loc, ip=ip).result

@_ods_cext.register_operation(_Dialect)
class VPZExtOp(_ods_ir.OpView):
  OPERATION_NAME = "llvm.intr.vp.zext"

  _ODS_REGIONS = (0, True)

  def __init__(self, res: _ods_ir.Type, src: _ods_ir.Value[_ods_ir.VectorType], mask: _ods_ir.Value[_ods_ir.VectorType], evl: _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(mask)
    operands.append(evl)
    _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 mask(self) -> _ods_ir.Value[_ods_ir.VectorType]:
    return self.operation.operands[1]

  @builtins.property
  def evl(self) -> _ods_ir.Value[_ods_ir.IntegerType]:
    return self.operation.operands[2]

  @builtins.property
  def res(self) -> _ods_ir.OpResult:
    return self.operation.results[0]

@_ods_cext.register_op_adaptor(VPZExtOp)
class VPZExtOpAdaptor(_ods_ir.OpAdaptor):
  OPERATION_NAME = "llvm.intr.vp.zext"

  @builtins.property
  def src(self) -> _ods_ir.Value[_ods_ir.VectorType]:
    return self.operands[0]

  @builtins.property
  def mask(self) -> _ods_ir.Value[_ods_ir.VectorType]:
    return self.operands[1]

  @builtins.property
  def evl(self) -> _ods_ir.Value[_ods_ir.IntegerType]:
    return self.operands[2]

def intr_vp_zext(res: _ods_ir.Type, src: _ods_ir.Value[_ods_ir.VectorType], mask: _ods_ir.Value[_ods_ir.VectorType], evl: _ods_ir.Value[_ods_ir.IntegerType], *, loc: _Optional[_ods_ir.Location] = None, ip: _Optional[_ods_ir.InsertionPoint] = None) -> _ods_ir.OpResult:
  return VPZExtOp(res=res, src=src, mask=mask, evl=evl, loc=loc, ip=ip).result

@_ods_cext.register_operation(_Dialect)
class VaArgOp(_ods_ir.OpView):
  OPERATION_NAME = "llvm.va_arg"

  _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(VaArgOp)
class VaArgOpAdaptor(_ods_ir.OpAdaptor):
  OPERATION_NAME = "llvm.va_arg"

  @builtins.property
  def arg(self) -> _ods_ir.Value:
    return self.operands[0]

def va_arg(res: _ods_ir.Type, arg: _ods_ir.Value, *, loc: _Optional[_ods_ir.Location] = None, ip: _Optional[_ods_ir.InsertionPoint] = None) -> _ods_ir.OpResult:
  return VaArgOp(res=res, arg=arg, loc=loc, ip=ip).result

@_ods_cext.register_operation(_Dialect)
class VaCopyOp(_ods_ir.OpView):
  OPERATION_NAME = "llvm.intr.vacopy"

  _ODS_REGIONS = (0, True)

  def __init__(self, dest_list: _ods_ir.Value, src_list: _ods_ir.Value, *, loc: _Optional[_ods_ir.Location] = None, ip: _Optional[_ods_ir.InsertionPoint] = None):
    operands = []
    attributes = {}
    regions = None
    operands.append(dest_list)
    operands.append(src_list)
    _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 dest_list(self) -> _ods_ir.Value:
    return self.operation.operands[0]

  @builtins.property
  def src_list(self) -> _ods_ir.Value:
    return self.operation.operands[1]

@_ods_cext.register_op_adaptor(VaCopyOp)
class VaCopyOpAdaptor(_ods_ir.OpAdaptor):
  OPERATION_NAME = "llvm.intr.vacopy"

  @builtins.property
  def dest_list(self) -> _ods_ir.Value:
    return self.operands[0]

  @builtins.property
  def src_list(self) -> _ods_ir.Value:
    return self.operands[1]

def intr_vacopy(dest_list: _ods_ir.Value, src_list: _ods_ir.Value, *, loc: _Optional[_ods_ir.Location] = None, ip: _Optional[_ods_ir.InsertionPoint] = None) -> VaCopyOp:
  return VaCopyOp(dest_list=dest_list, src_list=src_list, loc=loc, ip=ip)

@_ods_cext.register_operation(_Dialect)
class VaEndOp(_ods_ir.OpView):
  OPERATION_NAME = "llvm.intr.vaend"

  _ODS_REGIONS = (0, True)

  def __init__(self, arg_list: _ods_ir.Value, *, loc: _Optional[_ods_ir.Location] = None, ip: _Optional[_ods_ir.InsertionPoint] = None):
    operands = []
    attributes = {}
    regions = None
    operands.append(arg_list)
    _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 arg_list(self) -> _ods_ir.Value:
    return self.operation.operands[0]

@_ods_cext.register_op_adaptor(VaEndOp)
class VaEndOpAdaptor(_ods_ir.OpAdaptor):
  OPERATION_NAME = "llvm.intr.vaend"

  @builtins.property
  def arg_list(self) -> _ods_ir.Value:
    return self.operands[0]

def intr_vaend(arg_list: _ods_ir.Value, *, loc: _Optional[_ods_ir.Location] = None, ip: _Optional[_ods_ir.InsertionPoint] = None) -> VaEndOp:
  return VaEndOp(arg_list=arg_list, loc=loc, ip=ip)

@_ods_cext.register_operation(_Dialect)
class VaStartOp(_ods_ir.OpView):
  OPERATION_NAME = "llvm.intr.vastart"

  _ODS_REGIONS = (0, True)

  def __init__(self, arg_list: _ods_ir.Value, *, loc: _Optional[_ods_ir.Location] = None, ip: _Optional[_ods_ir.InsertionPoint] = None):
    operands = []
    attributes = {}
    regions = None
    operands.append(arg_list)
    _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 arg_list(self) -> _ods_ir.Value:
    return self.operation.operands[0]

@_ods_cext.register_op_adaptor(VaStartOp)
class VaStartOpAdaptor(_ods_ir.OpAdaptor):
  OPERATION_NAME = "llvm.intr.vastart"

  @builtins.property
  def arg_list(self) -> _ods_ir.Value:
    return self.operands[0]

def intr_vastart(arg_list: _ods_ir.Value, *, loc: _Optional[_ods_ir.Location] = None, ip: _Optional[_ods_ir.InsertionPoint] = None) -> VaStartOp:
  return VaStartOp(arg_list=arg_list, loc=loc, ip=ip)

@_ods_cext.register_operation(_Dialect)
class VarAnnotation(_ods_ir.OpView):
  OPERATION_NAME = "llvm.intr.var.annotation"

  _ODS_REGIONS = (0, True)

  def __init__(self, val: _ods_ir.Value, annotation: _ods_ir.Value, fileName: _ods_ir.Value, line: _ods_ir.Value[_ods_ir.IntegerType], attr: _ods_ir.Value, *, loc: _Optional[_ods_ir.Location] = None, ip: _Optional[_ods_ir.InsertionPoint] = None):
    operands = []
    attributes = {}
    regions = None
    operands.append(val)
    operands.append(annotation)
    operands.append(fileName)
    operands.append(line)
    operands.append(attr)
    _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 val(self) -> _ods_ir.Value:
    return self.operation.operands[0]

  @builtins.property
  def annotation(self) -> _ods_ir.Value:
    return self.operation.operands[1]

  @builtins.property
  def fileName(self) -> _ods_ir.Value:
    return self.operation.operands[2]

  @builtins.property
  def line(self) -> _ods_ir.Value[_ods_ir.IntegerType]:
    return self.operation.operands[3]

  @builtins.property
  def attr(self) -> _ods_ir.Value:
    return self.operation.operands[4]

@_ods_cext.register_op_adaptor(VarAnnotation)
class VarAnnotationAdaptor(_ods_ir.OpAdaptor):
  OPERATION_NAME = "llvm.intr.var.annotation"

  @builtins.property
  def val(self) -> _ods_ir.Value:
    return self.operands[0]

  @builtins.property
  def annotation(self) -> _ods_ir.Value:
    return self.operands[1]

  @builtins.property
  def fileName(self) -> _ods_ir.Value:
    return self.operands[2]

  @builtins.property
  def line(self) -> _ods_ir.Value[_ods_ir.IntegerType]:
    return self.operands[3]

  @builtins.property
  def attr(self) -> _ods_ir.Value:
    return self.operands[4]

def intr_var_annotation(val: _ods_ir.Value, annotation: _ods_ir.Value, file_name: _ods_ir.Value, line: _ods_ir.Value[_ods_ir.IntegerType], attr: _ods_ir.Value, *, loc: _Optional[_ods_ir.Location] = None, ip: _Optional[_ods_ir.InsertionPoint] = None) -> VarAnnotation:
  return VarAnnotation(val=val, annotation=annotation, fileName=file_name, line=line, attr=attr, loc=loc, ip=ip)

@_ods_cext.register_operation(_Dialect)
class XOrOp(_ods_ir.OpView):
  OPERATION_NAME = "llvm.xor"

  _ODS_REGIONS = (0, True)

  def __init__(self, lhs: _ods_ir.Value, rhs: _ods_ir.Value, *, results: _Optional[_Sequence[_ods_ir.Type]] = None, loc: _Optional[_ods_ir.Location] = None, ip: _Optional[_ods_ir.InsertionPoint] = None):
    operands = []
    attributes = {}
    regions = None
    operands.append(lhs)
    operands.append(rhs)
    _ods_context = _ods_get_default_loc_context(loc)
    if results is None: results = [operands[0].type] * 1
    _ods_successors = None
    super().__init__(self.OPERATION_NAME, self._ODS_REGIONS, self._ODS_OPERAND_SEGMENTS, self._ODS_RESULT_SEGMENTS, attributes=attributes, results=results, operands=operands, successors=_ods_successors, regions=regions, loc=loc, ip=ip)

  @builtins.property
  def lhs(self) -> _ods_ir.Value:
    return self.operation.operands[0]

  @builtins.property
  def rhs(self) -> _ods_ir.Value:
    return self.operation.operands[1]

  @builtins.property
  def res(self) -> _ods_ir.OpResult:
    return self.operation.results[0]

@_ods_cext.register_op_adaptor(XOrOp)
class XOrOpAdaptor(_ods_ir.OpAdaptor):
  OPERATION_NAME = "llvm.xor"

  @builtins.property
  def lhs(self) -> _ods_ir.Value:
    return self.operands[0]

  @builtins.property
  def rhs(self) -> _ods_ir.Value:
    return self.operands[1]

def xor(lhs: _ods_ir.Value, rhs: _ods_ir.Value, *, results: _Optional[_Sequence[_ods_ir.Type]] = None, loc: _Optional[_ods_ir.Location] = None, ip: _Optional[_ods_ir.InsertionPoint] = None) -> _ods_ir.OpResult:
  return XOrOp(lhs=lhs, rhs=rhs, results=results, loc=loc, ip=ip).result

@_ods_cext.register_operation(_Dialect)
class ZExtOp(_ods_ir.OpView):
  OPERATION_NAME = "llvm.zext"

  _ODS_REGIONS = (0, True)

  def __init__(self, res: _ods_ir.Type, arg: _ods_ir.Value, *, nonNeg: _Optional[bool] = None, 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)
    if bool(nonNeg): attributes["nonNeg"] = _ods_ir.UnitAttr.get(
      _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 nonNeg(self) -> bool:
    return "nonNeg" in self.operation.attributes

  @nonNeg.setter
  def nonNeg(self, value):
    if bool(value):
      self.operation.attributes["nonNeg"] = _ods_ir.UnitAttr.get()
    elif "nonNeg" in self.operation.attributes:
      del self.operation.attributes["nonNeg"]

  @nonNeg.deleter
  def nonNeg(self):
    del self.operation.attributes["nonNeg"]

  @builtins.property
  def res(self) -> _ods_ir.OpResult:
    return self.operation.results[0]

@_ods_cext.register_op_adaptor(ZExtOp)
class ZExtOpAdaptor(_ods_ir.OpAdaptor):
  OPERATION_NAME = "llvm.zext"

  @builtins.property
  def arg(self) -> _ods_ir.Value:
    return self.operands[0]

  @builtins.property
  def nonNeg(self) -> bool:
    return "nonNeg" in self.attributes

def zext(res: _ods_ir.Type, arg: _ods_ir.Value, *, non_neg: _Optional[bool] = None, loc: _Optional[_ods_ir.Location] = None, ip: _Optional[_ods_ir.InsertionPoint] = None) -> _ods_ir.OpResult:
  return ZExtOp(res=res, arg=arg, nonNeg=non_neg, loc=loc, ip=ip).result

@_ods_cext.register_operation(_Dialect)
class ZeroOp(_ods_ir.OpView):
  r"""
  Unlike LLVM IR, MLIR does not have first-class zero-initialized values.
  Such values must be created as SSA values using `llvm.mlir.zero`. This
  operation has no operands or attributes. It creates a zero-initialized
  value of the specified LLVM IR dialect type.
  
  Example:
  
  ```mlir
  // Create a zero-initialized value for a structure with a 32-bit integer
  // followed by a float.
  %0 = llvm.mlir.zero : !llvm.struct<(i32, f32)>
  ```
  """

  OPERATION_NAME = "llvm.mlir.zero"

  _ODS_REGIONS = (0, True)

  def __init__(self, res: _ods_ir.Type, *, 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 = []
    results.append(res)
    _ods_successors = None
    super().__init__(self.OPERATION_NAME, self._ODS_REGIONS, self._ODS_OPERAND_SEGMENTS, self._ODS_RESULT_SEGMENTS, attributes=attributes, results=results, operands=operands, successors=_ods_successors, regions=regions, loc=loc, ip=ip)

  @builtins.property
  def res(self) -> _ods_ir.OpResult:
    return self.operation.results[0]

@_ods_cext.register_op_adaptor(ZeroOp)
class ZeroOpAdaptor(_ods_ir.OpAdaptor):
  OPERATION_NAME = "llvm.mlir.zero"

def mlir_zero(res: _ods_ir.Type, *, loc: _Optional[_ods_ir.Location] = None, ip: _Optional[_ods_ir.InsertionPoint] = None) -> _ods_ir.OpResult:
  return ZeroOp(res=res, loc=loc, ip=ip).result

@_ods_cext.register_operation(_Dialect)
class masked_compressstore(_ods_ir.OpView):
  OPERATION_NAME = "llvm.intr.masked.compressstore"

  _ODS_REGIONS = (0, True)

  def __init__(self, value: _ods_ir.Value[_ods_ir.VectorType], ptr: _ods_ir.Value, mask: _ods_ir.Value[_ods_ir.VectorType], *, 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(value)
    operands.append(ptr)
    operands.append(mask)
    _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 = []
    _ods_successors = None
    super().__init__(self.OPERATION_NAME, self._ODS_REGIONS, self._ODS_OPERAND_SEGMENTS, self._ODS_RESULT_SEGMENTS, attributes=attributes, results=results, operands=operands, successors=_ods_successors, regions=regions, loc=loc, ip=ip)

  @builtins.property
  def value(self) -> _ods_ir.Value[_ods_ir.VectorType]:
    return self.operation.operands[0]

  @builtins.property
  def ptr(self) -> _ods_ir.Value:
    return self.operation.operands[1]

  @builtins.property
  def mask(self) -> _ods_ir.Value[_ods_ir.VectorType]:
    return self.operation.operands[2]

  @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"]

@_ods_cext.register_op_adaptor(masked_compressstore)
class masked_compressstoreAdaptor(_ods_ir.OpAdaptor):
  OPERATION_NAME = "llvm.intr.masked.compressstore"

  @builtins.property
  def value(self) -> _ods_ir.Value[_ods_ir.VectorType]:
    return self.operands[0]

  @builtins.property
  def ptr(self) -> _ods_ir.Value:
    return self.operands[1]

  @builtins.property
  def mask(self) -> _ods_ir.Value[_ods_ir.VectorType]:
    return self.operands[2]

  @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 intr_masked_compressstore(value: _ods_ir.Value[_ods_ir.VectorType], ptr: _ods_ir.Value, mask: _ods_ir.Value[_ods_ir.VectorType], *, 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) -> masked_compressstore:
  return masked_compressstore(value=value, ptr=ptr, mask=mask, arg_attrs=arg_attrs, res_attrs=res_attrs, loc=loc, ip=ip)

@_ods_cext.register_operation(_Dialect)
class masked_expandload(_ods_ir.OpView):
  OPERATION_NAME = "llvm.intr.masked.expandload"

  _ODS_REGIONS = (0, True)

  def __init__(self, res: _ods_ir.Type, ptr: _ods_ir.Value, mask: _ods_ir.Value[_ods_ir.VectorType], passthru: _ods_ir.Value[_ods_ir.VectorType], *, 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(ptr)
    operands.append(mask)
    operands.append(passthru)
    _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 ptr(self) -> _ods_ir.Value:
    return self.operation.operands[0]

  @builtins.property
  def mask(self) -> _ods_ir.Value[_ods_ir.VectorType]:
    return self.operation.operands[1]

  @builtins.property
  def passthru(self) -> _ods_ir.Value[_ods_ir.VectorType]:
    return self.operation.operands[2]

  @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:
    return self.operation.results[0]

@_ods_cext.register_op_adaptor(masked_expandload)
class masked_expandloadAdaptor(_ods_ir.OpAdaptor):
  OPERATION_NAME = "llvm.intr.masked.expandload"

  @builtins.property
  def ptr(self) -> _ods_ir.Value:
    return self.operands[0]

  @builtins.property
  def mask(self) -> _ods_ir.Value[_ods_ir.VectorType]:
    return self.operands[1]

  @builtins.property
  def passthru(self) -> _ods_ir.Value[_ods_ir.VectorType]:
    return self.operands[2]

  @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 intr_masked_expandload(res: _ods_ir.Type, ptr: _ods_ir.Value, mask: _ods_ir.Value[_ods_ir.VectorType], passthru: _ods_ir.Value[_ods_ir.VectorType], *, 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:
  return masked_expandload(res=res, ptr=ptr, mask=mask, passthru=passthru, arg_attrs=arg_attrs, res_attrs=res_attrs, loc=loc, ip=ip).result

@_ods_cext.register_operation(_Dialect)
class masked_gather(_ods_ir.OpView):
  OPERATION_NAME = "llvm.intr.masked.gather"

  _ODS_REGIONS = (0, True)

  def __init__(self, res: _ods_ir.Type, ptrs: _ods_ir.Value[_ods_ir.VectorType], mask: _ods_ir.Value[_ods_ir.VectorType], pass_thru: _Sequence[_ods_ir.Value[_ods_ir.VectorType]], alignment: _Union[int, _ods_ir.IntegerAttr], *, loc: _Optional[_ods_ir.Location] = None, ip: _Optional[_ods_ir.InsertionPoint] = None):
    operands = []
    attributes = {}
    regions = None
    operands.append(ptrs)
    operands.append(mask)
    operands.extend(_get_op_results_or_values(pass_thru))
    _ods_context = _ods_get_default_loc_context(loc)
    attributes["alignment"] = (alignment if (
    isinstance(alignment, _ods_ir.Attribute) or
    not _ods_ir.AttrBuilder.contains('I32Attr')) else
      _ods_ir.AttrBuilder.get('I32Attr')(alignment, 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 ptrs(self) -> _ods_ir.Value[_ods_ir.VectorType]:
    return self.operation.operands[0]

  @builtins.property
  def mask(self) -> _ods_ir.Value[_ods_ir.VectorType]:
    return self.operation.operands[1]

  @builtins.property
  def pass_thru(self) -> _ods_ir.OpOperandList[_ods_ir.VectorType]:
    _ods_variadic_group_length = len(self.operation.operands) - 3 + 1
    return self.operation.operands[2:2 + _ods_variadic_group_length]

  @builtins.property
  def alignment(self) -> _ods_ir.IntegerAttr:
    return self.operation.attributes["alignment"]

  @alignment.setter
  def alignment(self, value: _ods_ir.IntegerAttr):
    if value is None:
      raise ValueError("'None' not allowed as value for mandatory attributes")
    self.operation.attributes["alignment"] = value

  @builtins.property
  def res(self) -> _ods_ir.OpResult[_ods_ir.VectorType]:
    return self.operation.results[0]

@_ods_cext.register_op_adaptor(masked_gather)
class masked_gatherAdaptor(_ods_ir.OpAdaptor):
  OPERATION_NAME = "llvm.intr.masked.gather"

  @builtins.property
  def ptrs(self) -> _ods_ir.Value[_ods_ir.VectorType]:
    return self.operands[0]

  @builtins.property
  def mask(self) -> _ods_ir.Value[_ods_ir.VectorType]:
    return self.operands[1]

  @builtins.property
  def pass_thru(self) -> _ods_ir.OpOperandList[_ods_ir.VectorType]:
    _ods_variadic_group_length = len(self.operands) - 3 + 1
    return self.operands[2:2 + _ods_variadic_group_length]

  @builtins.property
  def alignment(self) -> _ods_ir.IntegerAttr:
    return self.attributes["alignment"]

def intr_masked_gather(res: _ods_ir.Type, ptrs: _ods_ir.Value[_ods_ir.VectorType], mask: _ods_ir.Value[_ods_ir.VectorType], pass_thru: _Sequence[_ods_ir.Value[_ods_ir.VectorType]], alignment: _Union[int, _ods_ir.IntegerAttr], *, loc: _Optional[_ods_ir.Location] = None, ip: _Optional[_ods_ir.InsertionPoint] = None) -> _ods_ir.OpResult[_ods_ir.VectorType]:
  return masked_gather(res=res, ptrs=ptrs, mask=mask, pass_thru=pass_thru, alignment=alignment, loc=loc, ip=ip).result

@_ods_cext.register_operation(_Dialect)
class masked_scatter(_ods_ir.OpView):
  OPERATION_NAME = "llvm.intr.masked.scatter"

  _ODS_REGIONS = (0, True)

  def __init__(self, value: _ods_ir.Value[_ods_ir.VectorType], ptrs: _ods_ir.Value[_ods_ir.VectorType], mask: _ods_ir.Value[_ods_ir.VectorType], alignment: _Union[int, _ods_ir.IntegerAttr], *, loc: _Optional[_ods_ir.Location] = None, ip: _Optional[_ods_ir.InsertionPoint] = None):
    operands = []
    attributes = {}
    regions = None
    operands.append(value)
    operands.append(ptrs)
    operands.append(mask)
    _ods_context = _ods_get_default_loc_context(loc)
    attributes["alignment"] = (alignment if (
    isinstance(alignment, _ods_ir.Attribute) or
    not _ods_ir.AttrBuilder.contains('I32Attr')) else
      _ods_ir.AttrBuilder.get('I32Attr')(alignment, 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 value(self) -> _ods_ir.Value[_ods_ir.VectorType]:
    return self.operation.operands[0]

  @builtins.property
  def ptrs(self) -> _ods_ir.Value[_ods_ir.VectorType]:
    return self.operation.operands[1]

  @builtins.property
  def mask(self) -> _ods_ir.Value[_ods_ir.VectorType]:
    return self.operation.operands[2]

  @builtins.property
  def alignment(self) -> _ods_ir.IntegerAttr:
    return self.operation.attributes["alignment"]

  @alignment.setter
  def alignment(self, value: _ods_ir.IntegerAttr):
    if value is None:
      raise ValueError("'None' not allowed as value for mandatory attributes")
    self.operation.attributes["alignment"] = value

@_ods_cext.register_op_adaptor(masked_scatter)
class masked_scatterAdaptor(_ods_ir.OpAdaptor):
  OPERATION_NAME = "llvm.intr.masked.scatter"

  @builtins.property
  def value(self) -> _ods_ir.Value[_ods_ir.VectorType]:
    return self.operands[0]

  @builtins.property
  def ptrs(self) -> _ods_ir.Value[_ods_ir.VectorType]:
    return self.operands[1]

  @builtins.property
  def mask(self) -> _ods_ir.Value[_ods_ir.VectorType]:
    return self.operands[2]

  @builtins.property
  def alignment(self) -> _ods_ir.IntegerAttr:
    return self.attributes["alignment"]

def intr_masked_scatter(value: _ods_ir.Value[_ods_ir.VectorType], ptrs: _ods_ir.Value[_ods_ir.VectorType], mask: _ods_ir.Value[_ods_ir.VectorType], alignment: _Union[int, _ods_ir.IntegerAttr], *, loc: _Optional[_ods_ir.Location] = None, ip: _Optional[_ods_ir.InsertionPoint] = None) -> masked_scatter:
  return masked_scatter(value=value, ptrs=ptrs, mask=mask, alignment=alignment, loc=loc, ip=ip)

@_ods_cext.register_operation(_Dialect)
class vector_deinterleave2(_ods_ir.OpView):
  OPERATION_NAME = "llvm.intr.vector.deinterleave2"

  _ODS_REGIONS = (0, True)

  def __init__(self, res: _ods_ir.Type, vec: _ods_ir.Value[_ods_ir.VectorType], *, loc: _Optional[_ods_ir.Location] = None, ip: _Optional[_ods_ir.InsertionPoint] = None):
    operands = []
    attributes = {}
    regions = None
    operands.append(vec)
    _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 vec(self) -> _ods_ir.Value[_ods_ir.VectorType]:
    return self.operation.operands[0]

  @builtins.property
  def res(self) -> _ods_ir.OpResult:
    return self.operation.results[0]

@_ods_cext.register_op_adaptor(vector_deinterleave2)
class vector_deinterleave2Adaptor(_ods_ir.OpAdaptor):
  OPERATION_NAME = "llvm.intr.vector.deinterleave2"

  @builtins.property
  def vec(self) -> _ods_ir.Value[_ods_ir.VectorType]:
    return self.operands[0]

def intr_vector_deinterleave2(res: _ods_ir.Type, vec: _ods_ir.Value[_ods_ir.VectorType], *, loc: _Optional[_ods_ir.Location] = None, ip: _Optional[_ods_ir.InsertionPoint] = None) -> _ods_ir.OpResult:
  return vector_deinterleave2(res=res, vec=vec, loc=loc, ip=ip).result

@_ods_cext.register_operation(_Dialect)
class vector_extract(_ods_ir.OpView):
  OPERATION_NAME = "llvm.intr.vector.extract"

  _ODS_REGIONS = (0, True)

  def __init__(self, res: _ods_ir.Type, srcvec: _ods_ir.Value[_ods_ir.VectorType], pos: _Union[int, _ods_ir.IntegerAttr], *, loc: _Optional[_ods_ir.Location] = None, ip: _Optional[_ods_ir.InsertionPoint] = None):
    operands = []
    attributes = {}
    regions = None
    operands.append(srcvec)
    _ods_context = _ods_get_default_loc_context(loc)
    attributes["pos"] = (pos if (
    isinstance(pos, _ods_ir.Attribute) or
    not _ods_ir.AttrBuilder.contains('I64Attr')) else
      _ods_ir.AttrBuilder.get('I64Attr')(pos, 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 srcvec(self) -> _ods_ir.Value[_ods_ir.VectorType]:
    return self.operation.operands[0]

  @builtins.property
  def pos(self) -> _ods_ir.IntegerAttr:
    return self.operation.attributes["pos"]

  @pos.setter
  def pos(self, value: _ods_ir.IntegerAttr):
    if value is None:
      raise ValueError("'None' not allowed as value for mandatory attributes")
    self.operation.attributes["pos"] = value

  @builtins.property
  def res(self) -> _ods_ir.OpResult[_ods_ir.VectorType]:
    return self.operation.results[0]

@_ods_cext.register_op_adaptor(vector_extract)
class vector_extractAdaptor(_ods_ir.OpAdaptor):
  OPERATION_NAME = "llvm.intr.vector.extract"

  @builtins.property
  def srcvec(self) -> _ods_ir.Value[_ods_ir.VectorType]:
    return self.operands[0]

  @builtins.property
  def pos(self) -> _ods_ir.IntegerAttr:
    return self.attributes["pos"]

def intr_vector_extract(res: _ods_ir.Type, srcvec: _ods_ir.Value[_ods_ir.VectorType], pos: _Union[int, _ods_ir.IntegerAttr], *, loc: _Optional[_ods_ir.Location] = None, ip: _Optional[_ods_ir.InsertionPoint] = None) -> _ods_ir.OpResult[_ods_ir.VectorType]:
  return vector_extract(res=res, srcvec=srcvec, pos=pos, loc=loc, ip=ip).result

@_ods_cext.register_operation(_Dialect)
class vector_insert(_ods_ir.OpView):
  OPERATION_NAME = "llvm.intr.vector.insert"

  _ODS_REGIONS = (0, True)

  def __init__(self, dstvec: _ods_ir.Value[_ods_ir.VectorType], srcvec: _ods_ir.Value[_ods_ir.VectorType], pos: _Union[int, _ods_ir.IntegerAttr], *, results: _Optional[_Sequence[_ods_ir.Type]] = None, loc: _Optional[_ods_ir.Location] = None, ip: _Optional[_ods_ir.InsertionPoint] = None):
    operands = []
    attributes = {}
    regions = None
    operands.append(dstvec)
    operands.append(srcvec)
    _ods_context = _ods_get_default_loc_context(loc)
    attributes["pos"] = (pos if (
    isinstance(pos, _ods_ir.Attribute) or
    not _ods_ir.AttrBuilder.contains('I64Attr')) else
      _ods_ir.AttrBuilder.get('I64Attr')(pos, context=_ods_context))
    _ods_successors = None
    super().__init__(self.OPERATION_NAME, self._ODS_REGIONS, self._ODS_OPERAND_SEGMENTS, self._ODS_RESULT_SEGMENTS, attributes=attributes, results=results, operands=operands, successors=_ods_successors, regions=regions, loc=loc, ip=ip)

  @builtins.property
  def dstvec(self) -> _ods_ir.Value[_ods_ir.VectorType]:
    return self.operation.operands[0]

  @builtins.property
  def srcvec(self) -> _ods_ir.Value[_ods_ir.VectorType]:
    return self.operation.operands[1]

  @builtins.property
  def pos(self) -> _ods_ir.IntegerAttr:
    return self.operation.attributes["pos"]

  @pos.setter
  def pos(self, value: _ods_ir.IntegerAttr):
    if value is None:
      raise ValueError("'None' not allowed as value for mandatory attributes")
    self.operation.attributes["pos"] = value

  @builtins.property
  def res(self) -> _ods_ir.OpResult[_ods_ir.VectorType]:
    return self.operation.results[0]

@_ods_cext.register_op_adaptor(vector_insert)
class vector_insertAdaptor(_ods_ir.OpAdaptor):
  OPERATION_NAME = "llvm.intr.vector.insert"

  @builtins.property
  def dstvec(self) -> _ods_ir.Value[_ods_ir.VectorType]:
    return self.operands[0]

  @builtins.property
  def srcvec(self) -> _ods_ir.Value[_ods_ir.VectorType]:
    return self.operands[1]

  @builtins.property
  def pos(self) -> _ods_ir.IntegerAttr:
    return self.attributes["pos"]

def intr_vector_insert(dstvec: _ods_ir.Value[_ods_ir.VectorType], srcvec: _ods_ir.Value[_ods_ir.VectorType], pos: _Union[int, _ods_ir.IntegerAttr], *, results: _Optional[_Sequence[_ods_ir.Type]] = None, loc: _Optional[_ods_ir.Location] = None, ip: _Optional[_ods_ir.InsertionPoint] = None) -> _ods_ir.OpResult[_ods_ir.VectorType]:
  return vector_insert(dstvec=dstvec, srcvec=srcvec, pos=pos, results=results, loc=loc, ip=ip).result

@_ods_cext.register_operation(_Dialect)
class vector_interleave2(_ods_ir.OpView):
  OPERATION_NAME = "llvm.intr.vector.interleave2"

  _ODS_REGIONS = (0, True)

  def __init__(self, res: _ods_ir.Type, vec1: _ods_ir.Value[_ods_ir.VectorType], vec2: _ods_ir.Value[_ods_ir.VectorType], *, loc: _Optional[_ods_ir.Location] = None, ip: _Optional[_ods_ir.InsertionPoint] = None):
    operands = []
    attributes = {}
    regions = None
    operands.append(vec1)
    operands.append(vec2)
    _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 vec1(self) -> _ods_ir.Value[_ods_ir.VectorType]:
    return self.operation.operands[0]

  @builtins.property
  def vec2(self) -> _ods_ir.Value[_ods_ir.VectorType]:
    return self.operation.operands[1]

  @builtins.property
  def res(self) -> _ods_ir.OpResult:
    return self.operation.results[0]

@_ods_cext.register_op_adaptor(vector_interleave2)
class vector_interleave2Adaptor(_ods_ir.OpAdaptor):
  OPERATION_NAME = "llvm.intr.vector.interleave2"

  @builtins.property
  def vec1(self) -> _ods_ir.Value[_ods_ir.VectorType]:
    return self.operands[0]

  @builtins.property
  def vec2(self) -> _ods_ir.Value[_ods_ir.VectorType]:
    return self.operands[1]

def intr_vector_interleave2(res: _ods_ir.Type, vec1: _ods_ir.Value[_ods_ir.VectorType], vec2: _ods_ir.Value[_ods_ir.VectorType], *, loc: _Optional[_ods_ir.Location] = None, ip: _Optional[_ods_ir.InsertionPoint] = None) -> _ods_ir.OpResult:
  return vector_interleave2(res=res, vec1=vec1, vec2=vec2, loc=loc, ip=ip).result

@_ods_cext.register_operation(_Dialect)
class vector_reduce_add(_ods_ir.OpView):
  OPERATION_NAME = "llvm.intr.vector.reduce.add"

  _ODS_REGIONS = (0, True)

  def __init__(self, res: _ods_ir.Type, in_: _ods_ir.Value[_ods_ir.VectorType], *, loc: _Optional[_ods_ir.Location] = None, ip: _Optional[_ods_ir.InsertionPoint] = None):
    operands = []
    attributes = {}
    regions = None
    operands.append(in_)
    _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 in_(self) -> _ods_ir.Value[_ods_ir.VectorType]:
    return self.operation.operands[0]

  @builtins.property
  def res(self) -> _ods_ir.OpResult:
    return self.operation.results[0]

@_ods_cext.register_op_adaptor(vector_reduce_add)
class vector_reduce_addAdaptor(_ods_ir.OpAdaptor):
  OPERATION_NAME = "llvm.intr.vector.reduce.add"

  @builtins.property
  def in_(self) -> _ods_ir.Value[_ods_ir.VectorType]:
    return self.operands[0]

def intr_vector_reduce_add(res: _ods_ir.Type, in_: _ods_ir.Value[_ods_ir.VectorType], *, loc: _Optional[_ods_ir.Location] = None, ip: _Optional[_ods_ir.InsertionPoint] = None) -> _ods_ir.OpResult:
  return vector_reduce_add(res=res, in_=in_, loc=loc, ip=ip).result

@_ods_cext.register_operation(_Dialect)
class vector_reduce_and(_ods_ir.OpView):
  OPERATION_NAME = "llvm.intr.vector.reduce.and"

  _ODS_REGIONS = (0, True)

  def __init__(self, res: _ods_ir.Type, in_: _ods_ir.Value[_ods_ir.VectorType], *, loc: _Optional[_ods_ir.Location] = None, ip: _Optional[_ods_ir.InsertionPoint] = None):
    operands = []
    attributes = {}
    regions = None
    operands.append(in_)
    _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 in_(self) -> _ods_ir.Value[_ods_ir.VectorType]:
    return self.operation.operands[0]

  @builtins.property
  def res(self) -> _ods_ir.OpResult:
    return self.operation.results[0]

@_ods_cext.register_op_adaptor(vector_reduce_and)
class vector_reduce_andAdaptor(_ods_ir.OpAdaptor):
  OPERATION_NAME = "llvm.intr.vector.reduce.and"

  @builtins.property
  def in_(self) -> _ods_ir.Value[_ods_ir.VectorType]:
    return self.operands[0]

def intr_vector_reduce_and(res: _ods_ir.Type, in_: _ods_ir.Value[_ods_ir.VectorType], *, loc: _Optional[_ods_ir.Location] = None, ip: _Optional[_ods_ir.InsertionPoint] = None) -> _ods_ir.OpResult:
  return vector_reduce_and(res=res, in_=in_, loc=loc, ip=ip).result

@_ods_cext.register_operation(_Dialect)
class vector_reduce_fadd(_ods_ir.OpView):
  OPERATION_NAME = "llvm.intr.vector.reduce.fadd"

  _ODS_REGIONS = (0, True)

  def __init__(self, res: _ods_ir.Type, start_value: _ods_ir.Value[_ods_ir.FloatType], input: _ods_ir.Value[_ods_ir.VectorType], *, fastmathFlags: _Optional[_Union[_Any, _ods_ir.Attribute]] = None, loc: _Optional[_ods_ir.Location] = None, ip: _Optional[_ods_ir.InsertionPoint] = None):
    operands = []
    attributes = {}
    regions = None
    operands.append(start_value)
    operands.append(input)
    _ods_context = _ods_get_default_loc_context(loc)
    if fastmathFlags is not None: attributes["fastmathFlags"] = (fastmathFlags if (
        isinstance(fastmathFlags, _ods_ir.Attribute) or
        not _ods_ir.AttrBuilder.contains('llvm.LLVM_FastmathFlagsAttr')) else
          _ods_ir.AttrBuilder.get('llvm.LLVM_FastmathFlagsAttr')(fastmathFlags, 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 start_value(self) -> _ods_ir.Value[_ods_ir.FloatType]:
    return self.operation.operands[0]

  @builtins.property
  def input(self) -> _ods_ir.Value[_ods_ir.VectorType]:
    return self.operation.operands[1]

  @builtins.property
  def fastmathFlags(self) -> _ods_ir.Attribute:
    return self.operation.attributes["fastmathFlags"]

  @fastmathFlags.setter
  def fastmathFlags(self, value: _ods_ir.Attribute):
    if value is None:
      raise ValueError("'None' not allowed as value for mandatory attributes")
    self.operation.attributes["fastmathFlags"] = value

  @builtins.property
  def res(self) -> _ods_ir.OpResult:
    return self.operation.results[0]

@_ods_cext.register_op_adaptor(vector_reduce_fadd)
class vector_reduce_faddAdaptor(_ods_ir.OpAdaptor):
  OPERATION_NAME = "llvm.intr.vector.reduce.fadd"

  @builtins.property
  def start_value(self) -> _ods_ir.Value[_ods_ir.FloatType]:
    return self.operands[0]

  @builtins.property
  def input(self) -> _ods_ir.Value[_ods_ir.VectorType]:
    return self.operands[1]

  @builtins.property
  def fastmathFlags(self) -> _ods_ir.Attribute:
    return self.attributes["fastmathFlags"]

def intr_vector_reduce_fadd(res: _ods_ir.Type, start_value: _ods_ir.Value[_ods_ir.FloatType], input: _ods_ir.Value[_ods_ir.VectorType], *, fastmath_flags: _Optional[_Union[_Any, _ods_ir.Attribute]] = None, loc: _Optional[_ods_ir.Location] = None, ip: _Optional[_ods_ir.InsertionPoint] = None) -> _ods_ir.OpResult:
  return vector_reduce_fadd(res=res, start_value=start_value, input=input, fastmathFlags=fastmath_flags, loc=loc, ip=ip).result

@_ods_cext.register_operation(_Dialect)
class vector_reduce_fmax(_ods_ir.OpView):
  OPERATION_NAME = "llvm.intr.vector.reduce.fmax"

  _ODS_REGIONS = (0, True)

  def __init__(self, res: _ods_ir.Type, in_: _ods_ir.Value[_ods_ir.VectorType], *, fastmathFlags: _Optional[_Union[_Any, _ods_ir.Attribute]] = None, loc: _Optional[_ods_ir.Location] = None, ip: _Optional[_ods_ir.InsertionPoint] = None):
    operands = []
    attributes = {}
    regions = None
    operands.append(in_)
    _ods_context = _ods_get_default_loc_context(loc)
    if fastmathFlags is not None: attributes["fastmathFlags"] = (fastmathFlags if (
        isinstance(fastmathFlags, _ods_ir.Attribute) or
        not _ods_ir.AttrBuilder.contains('llvm.LLVM_FastmathFlagsAttr')) else
          _ods_ir.AttrBuilder.get('llvm.LLVM_FastmathFlagsAttr')(fastmathFlags, 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 in_(self) -> _ods_ir.Value[_ods_ir.VectorType]:
    return self.operation.operands[0]

  @builtins.property
  def fastmathFlags(self) -> _ods_ir.Attribute:
    return self.operation.attributes["fastmathFlags"]

  @fastmathFlags.setter
  def fastmathFlags(self, value: _ods_ir.Attribute):
    if value is None:
      raise ValueError("'None' not allowed as value for mandatory attributes")
    self.operation.attributes["fastmathFlags"] = value

  @builtins.property
  def res(self) -> _ods_ir.OpResult:
    return self.operation.results[0]

@_ods_cext.register_op_adaptor(vector_reduce_fmax)
class vector_reduce_fmaxAdaptor(_ods_ir.OpAdaptor):
  OPERATION_NAME = "llvm.intr.vector.reduce.fmax"

  @builtins.property
  def in_(self) -> _ods_ir.Value[_ods_ir.VectorType]:
    return self.operands[0]

  @builtins.property
  def fastmathFlags(self) -> _ods_ir.Attribute:
    return self.attributes["fastmathFlags"]

def intr_vector_reduce_fmax(res: _ods_ir.Type, in_: _ods_ir.Value[_ods_ir.VectorType], *, fastmath_flags: _Optional[_Union[_Any, _ods_ir.Attribute]] = None, loc: _Optional[_ods_ir.Location] = None, ip: _Optional[_ods_ir.InsertionPoint] = None) -> _ods_ir.OpResult:
  return vector_reduce_fmax(res=res, in_=in_, fastmathFlags=fastmath_flags, loc=loc, ip=ip).result

@_ods_cext.register_operation(_Dialect)
class vector_reduce_fmaximum(_ods_ir.OpView):
  OPERATION_NAME = "llvm.intr.vector.reduce.fmaximum"

  _ODS_REGIONS = (0, True)

  def __init__(self, res: _ods_ir.Type, in_: _ods_ir.Value[_ods_ir.VectorType], *, fastmathFlags: _Optional[_Union[_Any, _ods_ir.Attribute]] = None, loc: _Optional[_ods_ir.Location] = None, ip: _Optional[_ods_ir.InsertionPoint] = None):
    operands = []
    attributes = {}
    regions = None
    operands.append(in_)
    _ods_context = _ods_get_default_loc_context(loc)
    if fastmathFlags is not None: attributes["fastmathFlags"] = (fastmathFlags if (
        isinstance(fastmathFlags, _ods_ir.Attribute) or
        not _ods_ir.AttrBuilder.contains('llvm.LLVM_FastmathFlagsAttr')) else
          _ods_ir.AttrBuilder.get('llvm.LLVM_FastmathFlagsAttr')(fastmathFlags, 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 in_(self) -> _ods_ir.Value[_ods_ir.VectorType]:
    return self.operation.operands[0]

  @builtins.property
  def fastmathFlags(self) -> _ods_ir.Attribute:
    return self.operation.attributes["fastmathFlags"]

  @fastmathFlags.setter
  def fastmathFlags(self, value: _ods_ir.Attribute):
    if value is None:
      raise ValueError("'None' not allowed as value for mandatory attributes")
    self.operation.attributes["fastmathFlags"] = value

  @builtins.property
  def res(self) -> _ods_ir.OpResult:
    return self.operation.results[0]

@_ods_cext.register_op_adaptor(vector_reduce_fmaximum)
class vector_reduce_fmaximumAdaptor(_ods_ir.OpAdaptor):
  OPERATION_NAME = "llvm.intr.vector.reduce.fmaximum"

  @builtins.property
  def in_(self) -> _ods_ir.Value[_ods_ir.VectorType]:
    return self.operands[0]

  @builtins.property
  def fastmathFlags(self) -> _ods_ir.Attribute:
    return self.attributes["fastmathFlags"]

def intr_vector_reduce_fmaximum(res: _ods_ir.Type, in_: _ods_ir.Value[_ods_ir.VectorType], *, fastmath_flags: _Optional[_Union[_Any, _ods_ir.Attribute]] = None, loc: _Optional[_ods_ir.Location] = None, ip: _Optional[_ods_ir.InsertionPoint] = None) -> _ods_ir.OpResult:
  return vector_reduce_fmaximum(res=res, in_=in_, fastmathFlags=fastmath_flags, loc=loc, ip=ip).result

@_ods_cext.register_operation(_Dialect)
class vector_reduce_fmin(_ods_ir.OpView):
  OPERATION_NAME = "llvm.intr.vector.reduce.fmin"

  _ODS_REGIONS = (0, True)

  def __init__(self, res: _ods_ir.Type, in_: _ods_ir.Value[_ods_ir.VectorType], *, fastmathFlags: _Optional[_Union[_Any, _ods_ir.Attribute]] = None, loc: _Optional[_ods_ir.Location] = None, ip: _Optional[_ods_ir.InsertionPoint] = None):
    operands = []
    attributes = {}
    regions = None
    operands.append(in_)
    _ods_context = _ods_get_default_loc_context(loc)
    if fastmathFlags is not None: attributes["fastmathFlags"] = (fastmathFlags if (
        isinstance(fastmathFlags, _ods_ir.Attribute) or
        not _ods_ir.AttrBuilder.contains('llvm.LLVM_FastmathFlagsAttr')) else
          _ods_ir.AttrBuilder.get('llvm.LLVM_FastmathFlagsAttr')(fastmathFlags, 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 in_(self) -> _ods_ir.Value[_ods_ir.VectorType]:
    return self.operation.operands[0]

  @builtins.property
  def fastmathFlags(self) -> _ods_ir.Attribute:
    return self.operation.attributes["fastmathFlags"]

  @fastmathFlags.setter
  def fastmathFlags(self, value: _ods_ir.Attribute):
    if value is None:
      raise ValueError("'None' not allowed as value for mandatory attributes")
    self.operation.attributes["fastmathFlags"] = value

  @builtins.property
  def res(self) -> _ods_ir.OpResult:
    return self.operation.results[0]

@_ods_cext.register_op_adaptor(vector_reduce_fmin)
class vector_reduce_fminAdaptor(_ods_ir.OpAdaptor):
  OPERATION_NAME = "llvm.intr.vector.reduce.fmin"

  @builtins.property
  def in_(self) -> _ods_ir.Value[_ods_ir.VectorType]:
    return self.operands[0]

  @builtins.property
  def fastmathFlags(self) -> _ods_ir.Attribute:
    return self.attributes["fastmathFlags"]

def intr_vector_reduce_fmin(res: _ods_ir.Type, in_: _ods_ir.Value[_ods_ir.VectorType], *, fastmath_flags: _Optional[_Union[_Any, _ods_ir.Attribute]] = None, loc: _Optional[_ods_ir.Location] = None, ip: _Optional[_ods_ir.InsertionPoint] = None) -> _ods_ir.OpResult:
  return vector_reduce_fmin(res=res, in_=in_, fastmathFlags=fastmath_flags, loc=loc, ip=ip).result

@_ods_cext.register_operation(_Dialect)
class vector_reduce_fminimum(_ods_ir.OpView):
  OPERATION_NAME = "llvm.intr.vector.reduce.fminimum"

  _ODS_REGIONS = (0, True)

  def __init__(self, res: _ods_ir.Type, in_: _ods_ir.Value[_ods_ir.VectorType], *, fastmathFlags: _Optional[_Union[_Any, _ods_ir.Attribute]] = None, loc: _Optional[_ods_ir.Location] = None, ip: _Optional[_ods_ir.InsertionPoint] = None):
    operands = []
    attributes = {}
    regions = None
    operands.append(in_)
    _ods_context = _ods_get_default_loc_context(loc)
    if fastmathFlags is not None: attributes["fastmathFlags"] = (fastmathFlags if (
        isinstance(fastmathFlags, _ods_ir.Attribute) or
        not _ods_ir.AttrBuilder.contains('llvm.LLVM_FastmathFlagsAttr')) else
          _ods_ir.AttrBuilder.get('llvm.LLVM_FastmathFlagsAttr')(fastmathFlags, 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 in_(self) -> _ods_ir.Value[_ods_ir.VectorType]:
    return self.operation.operands[0]

  @builtins.property
  def fastmathFlags(self) -> _ods_ir.Attribute:
    return self.operation.attributes["fastmathFlags"]

  @fastmathFlags.setter
  def fastmathFlags(self, value: _ods_ir.Attribute):
    if value is None:
      raise ValueError("'None' not allowed as value for mandatory attributes")
    self.operation.attributes["fastmathFlags"] = value

  @builtins.property
  def res(self) -> _ods_ir.OpResult:
    return self.operation.results[0]

@_ods_cext.register_op_adaptor(vector_reduce_fminimum)
class vector_reduce_fminimumAdaptor(_ods_ir.OpAdaptor):
  OPERATION_NAME = "llvm.intr.vector.reduce.fminimum"

  @builtins.property
  def in_(self) -> _ods_ir.Value[_ods_ir.VectorType]:
    return self.operands[0]

  @builtins.property
  def fastmathFlags(self) -> _ods_ir.Attribute:
    return self.attributes["fastmathFlags"]

def intr_vector_reduce_fminimum(res: _ods_ir.Type, in_: _ods_ir.Value[_ods_ir.VectorType], *, fastmath_flags: _Optional[_Union[_Any, _ods_ir.Attribute]] = None, loc: _Optional[_ods_ir.Location] = None, ip: _Optional[_ods_ir.InsertionPoint] = None) -> _ods_ir.OpResult:
  return vector_reduce_fminimum(res=res, in_=in_, fastmathFlags=fastmath_flags, loc=loc, ip=ip).result

@_ods_cext.register_operation(_Dialect)
class vector_reduce_fmul(_ods_ir.OpView):
  OPERATION_NAME = "llvm.intr.vector.reduce.fmul"

  _ODS_REGIONS = (0, True)

  def __init__(self, res: _ods_ir.Type, start_value: _ods_ir.Value[_ods_ir.FloatType], input: _ods_ir.Value[_ods_ir.VectorType], *, fastmathFlags: _Optional[_Union[_Any, _ods_ir.Attribute]] = None, loc: _Optional[_ods_ir.Location] = None, ip: _Optional[_ods_ir.InsertionPoint] = None):
    operands = []
    attributes = {}
    regions = None
    operands.append(start_value)
    operands.append(input)
    _ods_context = _ods_get_default_loc_context(loc)
    if fastmathFlags is not None: attributes["fastmathFlags"] = (fastmathFlags if (
        isinstance(fastmathFlags, _ods_ir.Attribute) or
        not _ods_ir.AttrBuilder.contains('llvm.LLVM_FastmathFlagsAttr')) else
          _ods_ir.AttrBuilder.get('llvm.LLVM_FastmathFlagsAttr')(fastmathFlags, 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 start_value(self) -> _ods_ir.Value[_ods_ir.FloatType]:
    return self.operation.operands[0]

  @builtins.property
  def input(self) -> _ods_ir.Value[_ods_ir.VectorType]:
    return self.operation.operands[1]

  @builtins.property
  def fastmathFlags(self) -> _ods_ir.Attribute:
    return self.operation.attributes["fastmathFlags"]

  @fastmathFlags.setter
  def fastmathFlags(self, value: _ods_ir.Attribute):
    if value is None:
      raise ValueError("'None' not allowed as value for mandatory attributes")
    self.operation.attributes["fastmathFlags"] = value

  @builtins.property
  def res(self) -> _ods_ir.OpResult:
    return self.operation.results[0]

@_ods_cext.register_op_adaptor(vector_reduce_fmul)
class vector_reduce_fmulAdaptor(_ods_ir.OpAdaptor):
  OPERATION_NAME = "llvm.intr.vector.reduce.fmul"

  @builtins.property
  def start_value(self) -> _ods_ir.Value[_ods_ir.FloatType]:
    return self.operands[0]

  @builtins.property
  def input(self) -> _ods_ir.Value[_ods_ir.VectorType]:
    return self.operands[1]

  @builtins.property
  def fastmathFlags(self) -> _ods_ir.Attribute:
    return self.attributes["fastmathFlags"]

def intr_vector_reduce_fmul(res: _ods_ir.Type, start_value: _ods_ir.Value[_ods_ir.FloatType], input: _ods_ir.Value[_ods_ir.VectorType], *, fastmath_flags: _Optional[_Union[_Any, _ods_ir.Attribute]] = None, loc: _Optional[_ods_ir.Location] = None, ip: _Optional[_ods_ir.InsertionPoint] = None) -> _ods_ir.OpResult:
  return vector_reduce_fmul(res=res, start_value=start_value, input=input, fastmathFlags=fastmath_flags, loc=loc, ip=ip).result

@_ods_cext.register_operation(_Dialect)
class vector_reduce_mul(_ods_ir.OpView):
  OPERATION_NAME = "llvm.intr.vector.reduce.mul"

  _ODS_REGIONS = (0, True)

  def __init__(self, res: _ods_ir.Type, in_: _ods_ir.Value[_ods_ir.VectorType], *, loc: _Optional[_ods_ir.Location] = None, ip: _Optional[_ods_ir.InsertionPoint] = None):
    operands = []
    attributes = {}
    regions = None
    operands.append(in_)
    _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 in_(self) -> _ods_ir.Value[_ods_ir.VectorType]:
    return self.operation.operands[0]

  @builtins.property
  def res(self) -> _ods_ir.OpResult:
    return self.operation.results[0]

@_ods_cext.register_op_adaptor(vector_reduce_mul)
class vector_reduce_mulAdaptor(_ods_ir.OpAdaptor):
  OPERATION_NAME = "llvm.intr.vector.reduce.mul"

  @builtins.property
  def in_(self) -> _ods_ir.Value[_ods_ir.VectorType]:
    return self.operands[0]

def intr_vector_reduce_mul(res: _ods_ir.Type, in_: _ods_ir.Value[_ods_ir.VectorType], *, loc: _Optional[_ods_ir.Location] = None, ip: _Optional[_ods_ir.InsertionPoint] = None) -> _ods_ir.OpResult:
  return vector_reduce_mul(res=res, in_=in_, loc=loc, ip=ip).result

@_ods_cext.register_operation(_Dialect)
class vector_reduce_or(_ods_ir.OpView):
  OPERATION_NAME = "llvm.intr.vector.reduce.or"

  _ODS_REGIONS = (0, True)

  def __init__(self, res: _ods_ir.Type, in_: _ods_ir.Value[_ods_ir.VectorType], *, loc: _Optional[_ods_ir.Location] = None, ip: _Optional[_ods_ir.InsertionPoint] = None):
    operands = []
    attributes = {}
    regions = None
    operands.append(in_)
    _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 in_(self) -> _ods_ir.Value[_ods_ir.VectorType]:
    return self.operation.operands[0]

  @builtins.property
  def res(self) -> _ods_ir.OpResult:
    return self.operation.results[0]

@_ods_cext.register_op_adaptor(vector_reduce_or)
class vector_reduce_orAdaptor(_ods_ir.OpAdaptor):
  OPERATION_NAME = "llvm.intr.vector.reduce.or"

  @builtins.property
  def in_(self) -> _ods_ir.Value[_ods_ir.VectorType]:
    return self.operands[0]

def intr_vector_reduce_or(res: _ods_ir.Type, in_: _ods_ir.Value[_ods_ir.VectorType], *, loc: _Optional[_ods_ir.Location] = None, ip: _Optional[_ods_ir.InsertionPoint] = None) -> _ods_ir.OpResult:
  return vector_reduce_or(res=res, in_=in_, loc=loc, ip=ip).result

@_ods_cext.register_operation(_Dialect)
class vector_reduce_smax(_ods_ir.OpView):
  OPERATION_NAME = "llvm.intr.vector.reduce.smax"

  _ODS_REGIONS = (0, True)

  def __init__(self, res: _ods_ir.Type, in_: _ods_ir.Value[_ods_ir.VectorType], *, loc: _Optional[_ods_ir.Location] = None, ip: _Optional[_ods_ir.InsertionPoint] = None):
    operands = []
    attributes = {}
    regions = None
    operands.append(in_)
    _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 in_(self) -> _ods_ir.Value[_ods_ir.VectorType]:
    return self.operation.operands[0]

  @builtins.property
  def res(self) -> _ods_ir.OpResult:
    return self.operation.results[0]

@_ods_cext.register_op_adaptor(vector_reduce_smax)
class vector_reduce_smaxAdaptor(_ods_ir.OpAdaptor):
  OPERATION_NAME = "llvm.intr.vector.reduce.smax"

  @builtins.property
  def in_(self) -> _ods_ir.Value[_ods_ir.VectorType]:
    return self.operands[0]

def intr_vector_reduce_smax(res: _ods_ir.Type, in_: _ods_ir.Value[_ods_ir.VectorType], *, loc: _Optional[_ods_ir.Location] = None, ip: _Optional[_ods_ir.InsertionPoint] = None) -> _ods_ir.OpResult:
  return vector_reduce_smax(res=res, in_=in_, loc=loc, ip=ip).result

@_ods_cext.register_operation(_Dialect)
class vector_reduce_smin(_ods_ir.OpView):
  OPERATION_NAME = "llvm.intr.vector.reduce.smin"

  _ODS_REGIONS = (0, True)

  def __init__(self, res: _ods_ir.Type, in_: _ods_ir.Value[_ods_ir.VectorType], *, loc: _Optional[_ods_ir.Location] = None, ip: _Optional[_ods_ir.InsertionPoint] = None):
    operands = []
    attributes = {}
    regions = None
    operands.append(in_)
    _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 in_(self) -> _ods_ir.Value[_ods_ir.VectorType]:
    return self.operation.operands[0]

  @builtins.property
  def res(self) -> _ods_ir.OpResult:
    return self.operation.results[0]

@_ods_cext.register_op_adaptor(vector_reduce_smin)
class vector_reduce_sminAdaptor(_ods_ir.OpAdaptor):
  OPERATION_NAME = "llvm.intr.vector.reduce.smin"

  @builtins.property
  def in_(self) -> _ods_ir.Value[_ods_ir.VectorType]:
    return self.operands[0]

def intr_vector_reduce_smin(res: _ods_ir.Type, in_: _ods_ir.Value[_ods_ir.VectorType], *, loc: _Optional[_ods_ir.Location] = None, ip: _Optional[_ods_ir.InsertionPoint] = None) -> _ods_ir.OpResult:
  return vector_reduce_smin(res=res, in_=in_, loc=loc, ip=ip).result

@_ods_cext.register_operation(_Dialect)
class vector_reduce_umax(_ods_ir.OpView):
  OPERATION_NAME = "llvm.intr.vector.reduce.umax"

  _ODS_REGIONS = (0, True)

  def __init__(self, res: _ods_ir.Type, in_: _ods_ir.Value[_ods_ir.VectorType], *, loc: _Optional[_ods_ir.Location] = None, ip: _Optional[_ods_ir.InsertionPoint] = None):
    operands = []
    attributes = {}
    regions = None
    operands.append(in_)
    _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 in_(self) -> _ods_ir.Value[_ods_ir.VectorType]:
    return self.operation.operands[0]

  @builtins.property
  def res(self) -> _ods_ir.OpResult:
    return self.operation.results[0]

@_ods_cext.register_op_adaptor(vector_reduce_umax)
class vector_reduce_umaxAdaptor(_ods_ir.OpAdaptor):
  OPERATION_NAME = "llvm.intr.vector.reduce.umax"

  @builtins.property
  def in_(self) -> _ods_ir.Value[_ods_ir.VectorType]:
    return self.operands[0]

def intr_vector_reduce_umax(res: _ods_ir.Type, in_: _ods_ir.Value[_ods_ir.VectorType], *, loc: _Optional[_ods_ir.Location] = None, ip: _Optional[_ods_ir.InsertionPoint] = None) -> _ods_ir.OpResult:
  return vector_reduce_umax(res=res, in_=in_, loc=loc, ip=ip).result

@_ods_cext.register_operation(_Dialect)
class vector_reduce_umin(_ods_ir.OpView):
  OPERATION_NAME = "llvm.intr.vector.reduce.umin"

  _ODS_REGIONS = (0, True)

  def __init__(self, res: _ods_ir.Type, in_: _ods_ir.Value[_ods_ir.VectorType], *, loc: _Optional[_ods_ir.Location] = None, ip: _Optional[_ods_ir.InsertionPoint] = None):
    operands = []
    attributes = {}
    regions = None
    operands.append(in_)
    _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 in_(self) -> _ods_ir.Value[_ods_ir.VectorType]:
    return self.operation.operands[0]

  @builtins.property
  def res(self) -> _ods_ir.OpResult:
    return self.operation.results[0]

@_ods_cext.register_op_adaptor(vector_reduce_umin)
class vector_reduce_uminAdaptor(_ods_ir.OpAdaptor):
  OPERATION_NAME = "llvm.intr.vector.reduce.umin"

  @builtins.property
  def in_(self) -> _ods_ir.Value[_ods_ir.VectorType]:
    return self.operands[0]

def intr_vector_reduce_umin(res: _ods_ir.Type, in_: _ods_ir.Value[_ods_ir.VectorType], *, loc: _Optional[_ods_ir.Location] = None, ip: _Optional[_ods_ir.InsertionPoint] = None) -> _ods_ir.OpResult:
  return vector_reduce_umin(res=res, in_=in_, loc=loc, ip=ip).result

@_ods_cext.register_operation(_Dialect)
class vector_reduce_xor(_ods_ir.OpView):
  OPERATION_NAME = "llvm.intr.vector.reduce.xor"

  _ODS_REGIONS = (0, True)

  def __init__(self, res: _ods_ir.Type, in_: _ods_ir.Value[_ods_ir.VectorType], *, loc: _Optional[_ods_ir.Location] = None, ip: _Optional[_ods_ir.InsertionPoint] = None):
    operands = []
    attributes = {}
    regions = None
    operands.append(in_)
    _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 in_(self) -> _ods_ir.Value[_ods_ir.VectorType]:
    return self.operation.operands[0]

  @builtins.property
  def res(self) -> _ods_ir.OpResult:
    return self.operation.results[0]

@_ods_cext.register_op_adaptor(vector_reduce_xor)
class vector_reduce_xorAdaptor(_ods_ir.OpAdaptor):
  OPERATION_NAME = "llvm.intr.vector.reduce.xor"

  @builtins.property
  def in_(self) -> _ods_ir.Value[_ods_ir.VectorType]:
    return self.operands[0]

def intr_vector_reduce_xor(res: _ods_ir.Type, in_: _ods_ir.Value[_ods_ir.VectorType], *, loc: _Optional[_ods_ir.Location] = None, ip: _Optional[_ods_ir.InsertionPoint] = None) -> _ods_ir.OpResult:
  return vector_reduce_xor(res=res, in_=in_, loc=loc, ip=ip).result

@_ods_cext.register_operation(_Dialect)
class vscale(_ods_ir.OpView):
  OPERATION_NAME = "llvm.intr.vscale"

  _ODS_REGIONS = (0, True)

  def __init__(self, res: _ods_ir.Type, *, 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 = []
    results.append(res)
    _ods_successors = None
    super().__init__(self.OPERATION_NAME, self._ODS_REGIONS, self._ODS_OPERAND_SEGMENTS, self._ODS_RESULT_SEGMENTS, attributes=attributes, results=results, operands=operands, successors=_ods_successors, regions=regions, loc=loc, ip=ip)

  @builtins.property
  def res(self) -> _ods_ir.OpResult:
    return self.operation.results[0]

@_ods_cext.register_op_adaptor(vscale)
class vscaleAdaptor(_ods_ir.OpAdaptor):
  OPERATION_NAME = "llvm.intr.vscale"

def intr_vscale(res: _ods_ir.Type, *, loc: _Optional[_ods_ir.Location] = None, ip: _Optional[_ods_ir.InsertionPoint] = None) -> _ods_ir.OpResult:
  return vscale(res=res, loc=loc, ip=ip).result
