
# 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_result_or_op_results as _get_op_result_or_op_results,
    get_op_result_or_value as _get_op_result_or_value,
    get_op_results_or_values as _get_op_results_or_values,
    segmented_accessor as _ods_segmented_accessor,
)
_ods_ir = _ods_cext.ir

import builtins
from typing import Sequence as _Sequence, Union as _Union


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

@_ods_cext.register_operation(_Dialect)
class AcosOp(_ods_ir.OpView):
  OPERATION_NAME = "chlo.acos"

  _ODS_REGIONS = (0, True)

  def __init__(self, operand, *, loc=None, ip=None):
    operands = []
    results = []
    attributes = {}
    regions = None
    operands.append(_get_op_result_or_value(operand))
    _ods_context = _ods_get_default_loc_context(loc)
    _ods_successors = None
    super().__init__(self.build_generic(attributes=attributes, operands=operands, successors=_ods_successors, regions=regions, loc=loc, ip=ip))

  @builtins.property
  def operand(self):
    return self.operation.operands[0]

  @builtins.property
  def result(self):
    return self.operation.results[0]

def acos(operand, *, loc=None, ip=None) -> _ods_ir.Value:
  return _get_op_result_or_op_results(AcosOp(operand=operand, loc=loc, ip=ip))

@_ods_cext.register_operation(_Dialect)
class AcoshOp(_ods_ir.OpView):
  OPERATION_NAME = "chlo.acosh"

  _ODS_REGIONS = (0, True)

  def __init__(self, operand, *, loc=None, ip=None):
    operands = []
    results = []
    attributes = {}
    regions = None
    operands.append(_get_op_result_or_value(operand))
    _ods_context = _ods_get_default_loc_context(loc)
    _ods_successors = None
    super().__init__(self.build_generic(attributes=attributes, operands=operands, successors=_ods_successors, regions=regions, loc=loc, ip=ip))

  @builtins.property
  def operand(self):
    return self.operation.operands[0]

  @builtins.property
  def result(self):
    return self.operation.results[0]

def acosh(operand, *, loc=None, ip=None) -> _ods_ir.Value:
  return _get_op_result_or_op_results(AcoshOp(operand=operand, loc=loc, ip=ip))

@_ods_cext.register_operation(_Dialect)
class AsinOp(_ods_ir.OpView):
  OPERATION_NAME = "chlo.asin"

  _ODS_REGIONS = (0, True)

  def __init__(self, operand, *, loc=None, ip=None):
    operands = []
    results = []
    attributes = {}
    regions = None
    operands.append(_get_op_result_or_value(operand))
    _ods_context = _ods_get_default_loc_context(loc)
    _ods_successors = None
    super().__init__(self.build_generic(attributes=attributes, operands=operands, successors=_ods_successors, regions=regions, loc=loc, ip=ip))

  @builtins.property
  def operand(self):
    return self.operation.operands[0]

  @builtins.property
  def result(self):
    return self.operation.results[0]

def asin(operand, *, loc=None, ip=None) -> _ods_ir.Value:
  return _get_op_result_or_op_results(AsinOp(operand=operand, loc=loc, ip=ip))

@_ods_cext.register_operation(_Dialect)
class AsinhOp(_ods_ir.OpView):
  OPERATION_NAME = "chlo.asinh"

  _ODS_REGIONS = (0, True)

  def __init__(self, operand, *, loc=None, ip=None):
    operands = []
    results = []
    attributes = {}
    regions = None
    operands.append(_get_op_result_or_value(operand))
    _ods_context = _ods_get_default_loc_context(loc)
    _ods_successors = None
    super().__init__(self.build_generic(attributes=attributes, operands=operands, successors=_ods_successors, regions=regions, loc=loc, ip=ip))

  @builtins.property
  def operand(self):
    return self.operation.operands[0]

  @builtins.property
  def result(self):
    return self.operation.results[0]

def asinh(operand, *, loc=None, ip=None) -> _ods_ir.Value:
  return _get_op_result_or_op_results(AsinhOp(operand=operand, loc=loc, ip=ip))

@_ods_cext.register_operation(_Dialect)
class AtanOp(_ods_ir.OpView):
  OPERATION_NAME = "chlo.atan"

  _ODS_REGIONS = (0, True)

  def __init__(self, operand, *, loc=None, ip=None):
    operands = []
    results = []
    attributes = {}
    regions = None
    operands.append(_get_op_result_or_value(operand))
    _ods_context = _ods_get_default_loc_context(loc)
    _ods_successors = None
    super().__init__(self.build_generic(attributes=attributes, operands=operands, successors=_ods_successors, regions=regions, loc=loc, ip=ip))

  @builtins.property
  def operand(self):
    return self.operation.operands[0]

  @builtins.property
  def result(self):
    return self.operation.results[0]

def atan(operand, *, loc=None, ip=None) -> _ods_ir.Value:
  return _get_op_result_or_op_results(AtanOp(operand=operand, loc=loc, ip=ip))

@_ods_cext.register_operation(_Dialect)
class AtanhOp(_ods_ir.OpView):
  OPERATION_NAME = "chlo.atanh"

  _ODS_REGIONS = (0, True)

  def __init__(self, operand, *, loc=None, ip=None):
    operands = []
    results = []
    attributes = {}
    regions = None
    operands.append(_get_op_result_or_value(operand))
    _ods_context = _ods_get_default_loc_context(loc)
    _ods_successors = None
    super().__init__(self.build_generic(attributes=attributes, operands=operands, successors=_ods_successors, regions=regions, loc=loc, ip=ip))

  @builtins.property
  def operand(self):
    return self.operation.operands[0]

  @builtins.property
  def result(self):
    return self.operation.results[0]

def atanh(operand, *, loc=None, ip=None) -> _ods_ir.Value:
  return _get_op_result_or_op_results(AtanhOp(operand=operand, loc=loc, ip=ip))

@_ods_cext.register_operation(_Dialect)
class BesselI1eOp(_ods_ir.OpView):
  OPERATION_NAME = "chlo.bessel_i1e"

  _ODS_REGIONS = (0, True)

  def __init__(self, operand, *, loc=None, ip=None):
    operands = []
    results = []
    attributes = {}
    regions = None
    operands.append(_get_op_result_or_value(operand))
    _ods_context = _ods_get_default_loc_context(loc)
    _ods_successors = None
    super().__init__(self.build_generic(attributes=attributes, operands=operands, successors=_ods_successors, regions=regions, loc=loc, ip=ip))

  @builtins.property
  def operand(self):
    return self.operation.operands[0]

  @builtins.property
  def result(self):
    return self.operation.results[0]

def bessel_i1e(operand, *, loc=None, ip=None) -> _ods_ir.Value:
  return _get_op_result_or_op_results(BesselI1eOp(operand=operand, loc=loc, ip=ip))

@_ods_cext.register_operation(_Dialect)
class BroadcastAddOp(_ods_ir.OpView):
  OPERATION_NAME = "chlo.broadcast_add"

  _ODS_REGIONS = (0, True)

  def __init__(self, lhs, rhs, *, broadcast_dimensions=None, loc=None, ip=None):
    operands = []
    results = []
    attributes = {}
    regions = None
    operands.append(_get_op_result_or_value(lhs))
    operands.append(_get_op_result_or_value(rhs))
    _ods_context = _ods_get_default_loc_context(loc)
    if broadcast_dimensions is not None: attributes["broadcast_dimensions"] = (broadcast_dimensions if (
        isinstance(broadcast_dimensions, _ods_ir.Attribute) or
        not _ods_ir.AttrBuilder.contains('DenseI64ArrayAttr')) else
          _ods_ir.AttrBuilder.get('DenseI64ArrayAttr')(broadcast_dimensions, context=_ods_context))
    _ods_successors = None
    super().__init__(self.build_generic(attributes=attributes, operands=operands, successors=_ods_successors, regions=regions, loc=loc, ip=ip))

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

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

  @builtins.property
  def broadcast_dimensions(self):
    if "broadcast_dimensions" not in self.operation.attributes:
      return None
    return self.operation.attributes["broadcast_dimensions"]

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

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

def broadcast_add(lhs, rhs, *, broadcast_dimensions=None, loc=None, ip=None) -> _ods_ir.Value:
  return _get_op_result_or_op_results(BroadcastAddOp(lhs=lhs, rhs=rhs, broadcast_dimensions=broadcast_dimensions, loc=loc, ip=ip))

@_ods_cext.register_operation(_Dialect)
class BroadcastAndOp(_ods_ir.OpView):
  OPERATION_NAME = "chlo.broadcast_and"

  _ODS_REGIONS = (0, True)

  def __init__(self, lhs, rhs, *, broadcast_dimensions=None, loc=None, ip=None):
    operands = []
    results = []
    attributes = {}
    regions = None
    operands.append(_get_op_result_or_value(lhs))
    operands.append(_get_op_result_or_value(rhs))
    _ods_context = _ods_get_default_loc_context(loc)
    if broadcast_dimensions is not None: attributes["broadcast_dimensions"] = (broadcast_dimensions if (
        isinstance(broadcast_dimensions, _ods_ir.Attribute) or
        not _ods_ir.AttrBuilder.contains('DenseI64ArrayAttr')) else
          _ods_ir.AttrBuilder.get('DenseI64ArrayAttr')(broadcast_dimensions, context=_ods_context))
    _ods_successors = None
    super().__init__(self.build_generic(attributes=attributes, operands=operands, successors=_ods_successors, regions=regions, loc=loc, ip=ip))

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

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

  @builtins.property
  def broadcast_dimensions(self):
    if "broadcast_dimensions" not in self.operation.attributes:
      return None
    return self.operation.attributes["broadcast_dimensions"]

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

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

def broadcast_and(lhs, rhs, *, broadcast_dimensions=None, loc=None, ip=None) -> _ods_ir.Value:
  return _get_op_result_or_op_results(BroadcastAndOp(lhs=lhs, rhs=rhs, broadcast_dimensions=broadcast_dimensions, loc=loc, ip=ip))

@_ods_cext.register_operation(_Dialect)
class BroadcastAtan2Op(_ods_ir.OpView):
  OPERATION_NAME = "chlo.broadcast_atan2"

  _ODS_REGIONS = (0, True)

  def __init__(self, lhs, rhs, *, broadcast_dimensions=None, loc=None, ip=None):
    operands = []
    results = []
    attributes = {}
    regions = None
    operands.append(_get_op_result_or_value(lhs))
    operands.append(_get_op_result_or_value(rhs))
    _ods_context = _ods_get_default_loc_context(loc)
    if broadcast_dimensions is not None: attributes["broadcast_dimensions"] = (broadcast_dimensions if (
        isinstance(broadcast_dimensions, _ods_ir.Attribute) or
        not _ods_ir.AttrBuilder.contains('DenseI64ArrayAttr')) else
          _ods_ir.AttrBuilder.get('DenseI64ArrayAttr')(broadcast_dimensions, context=_ods_context))
    _ods_successors = None
    super().__init__(self.build_generic(attributes=attributes, operands=operands, successors=_ods_successors, regions=regions, loc=loc, ip=ip))

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

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

  @builtins.property
  def broadcast_dimensions(self):
    if "broadcast_dimensions" not in self.operation.attributes:
      return None
    return self.operation.attributes["broadcast_dimensions"]

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

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

def broadcast_atan2(lhs, rhs, *, broadcast_dimensions=None, loc=None, ip=None) -> _ods_ir.Value:
  return _get_op_result_or_op_results(BroadcastAtan2Op(lhs=lhs, rhs=rhs, broadcast_dimensions=broadcast_dimensions, loc=loc, ip=ip))

@_ods_cext.register_operation(_Dialect)
class BroadcastCompareOp(_ods_ir.OpView):
  OPERATION_NAME = "chlo.broadcast_compare"

  _ODS_REGIONS = (0, True)

  def __init__(self, lhs, rhs, comparison_direction, *, broadcast_dimensions=None, compare_type=None, loc=None, ip=None):
    operands = []
    results = []
    attributes = {}
    regions = None
    operands.append(_get_op_result_or_value(lhs))
    operands.append(_get_op_result_or_value(rhs))
    _ods_context = _ods_get_default_loc_context(loc)
    if broadcast_dimensions is not None: attributes["broadcast_dimensions"] = (broadcast_dimensions if (
        isinstance(broadcast_dimensions, _ods_ir.Attribute) or
        not _ods_ir.AttrBuilder.contains('DenseI64ArrayAttr')) else
          _ods_ir.AttrBuilder.get('DenseI64ArrayAttr')(broadcast_dimensions, context=_ods_context))
    attributes["comparison_direction"] = (comparison_direction if (
    isinstance(comparison_direction, _ods_ir.Attribute) or
    not _ods_ir.AttrBuilder.contains('CHLO_ComparisonDirectionAttr')) else
      _ods_ir.AttrBuilder.get('CHLO_ComparisonDirectionAttr')(comparison_direction, context=_ods_context))
    if compare_type is not None: attributes["compare_type"] = (compare_type if (
        isinstance(compare_type, _ods_ir.Attribute) or
        not _ods_ir.AttrBuilder.contains('CHLO_ComparisonTypeAttr')) else
          _ods_ir.AttrBuilder.get('CHLO_ComparisonTypeAttr')(compare_type, context=_ods_context))
    _ods_successors = None
    super().__init__(self.build_generic(attributes=attributes, operands=operands, successors=_ods_successors, regions=regions, loc=loc, ip=ip))

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

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

  @builtins.property
  def broadcast_dimensions(self):
    if "broadcast_dimensions" not in self.operation.attributes:
      return None
    return self.operation.attributes["broadcast_dimensions"]

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

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

  @builtins.property
  def comparison_direction(self):
    return self.operation.attributes["comparison_direction"]

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

  @builtins.property
  def compare_type(self):
    if "compare_type" not in self.operation.attributes:
      return None
    return self.operation.attributes["compare_type"]

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

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

def broadcast_compare(lhs, rhs, comparison_direction, *, broadcast_dimensions=None, compare_type=None, loc=None, ip=None) -> _ods_ir.Value:
  return _get_op_result_or_op_results(BroadcastCompareOp(lhs=lhs, rhs=rhs, comparison_direction=comparison_direction, broadcast_dimensions=broadcast_dimensions, compare_type=compare_type, loc=loc, ip=ip))

@_ods_cext.register_operation(_Dialect)
class BroadcastComplexOp(_ods_ir.OpView):
  OPERATION_NAME = "chlo.broadcast_complex"

  _ODS_REGIONS = (0, True)

  def __init__(self, lhs, rhs, *, broadcast_dimensions=None, loc=None, ip=None):
    operands = []
    results = []
    attributes = {}
    regions = None
    operands.append(_get_op_result_or_value(lhs))
    operands.append(_get_op_result_or_value(rhs))
    _ods_context = _ods_get_default_loc_context(loc)
    if broadcast_dimensions is not None: attributes["broadcast_dimensions"] = (broadcast_dimensions if (
        isinstance(broadcast_dimensions, _ods_ir.Attribute) or
        not _ods_ir.AttrBuilder.contains('DenseI64ArrayAttr')) else
          _ods_ir.AttrBuilder.get('DenseI64ArrayAttr')(broadcast_dimensions, context=_ods_context))
    _ods_successors = None
    super().__init__(self.build_generic(attributes=attributes, operands=operands, successors=_ods_successors, regions=regions, loc=loc, ip=ip))

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

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

  @builtins.property
  def broadcast_dimensions(self):
    if "broadcast_dimensions" not in self.operation.attributes:
      return None
    return self.operation.attributes["broadcast_dimensions"]

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

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

def broadcast_complex(lhs, rhs, *, broadcast_dimensions=None, loc=None, ip=None) -> _ods_ir.Value:
  return _get_op_result_or_op_results(BroadcastComplexOp(lhs=lhs, rhs=rhs, broadcast_dimensions=broadcast_dimensions, loc=loc, ip=ip))

@_ods_cext.register_operation(_Dialect)
class BroadcastDivOp(_ods_ir.OpView):
  OPERATION_NAME = "chlo.broadcast_divide"

  _ODS_REGIONS = (0, True)

  def __init__(self, lhs, rhs, *, broadcast_dimensions=None, loc=None, ip=None):
    operands = []
    results = []
    attributes = {}
    regions = None
    operands.append(_get_op_result_or_value(lhs))
    operands.append(_get_op_result_or_value(rhs))
    _ods_context = _ods_get_default_loc_context(loc)
    if broadcast_dimensions is not None: attributes["broadcast_dimensions"] = (broadcast_dimensions if (
        isinstance(broadcast_dimensions, _ods_ir.Attribute) or
        not _ods_ir.AttrBuilder.contains('DenseI64ArrayAttr')) else
          _ods_ir.AttrBuilder.get('DenseI64ArrayAttr')(broadcast_dimensions, context=_ods_context))
    _ods_successors = None
    super().__init__(self.build_generic(attributes=attributes, operands=operands, successors=_ods_successors, regions=regions, loc=loc, ip=ip))

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

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

  @builtins.property
  def broadcast_dimensions(self):
    if "broadcast_dimensions" not in self.operation.attributes:
      return None
    return self.operation.attributes["broadcast_dimensions"]

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

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

def broadcast_divide(lhs, rhs, *, broadcast_dimensions=None, loc=None, ip=None) -> _ods_ir.Value:
  return _get_op_result_or_op_results(BroadcastDivOp(lhs=lhs, rhs=rhs, broadcast_dimensions=broadcast_dimensions, loc=loc, ip=ip))

@_ods_cext.register_operation(_Dialect)
class BroadcastMaxOp(_ods_ir.OpView):
  OPERATION_NAME = "chlo.broadcast_maximum"

  _ODS_REGIONS = (0, True)

  def __init__(self, lhs, rhs, *, broadcast_dimensions=None, loc=None, ip=None):
    operands = []
    results = []
    attributes = {}
    regions = None
    operands.append(_get_op_result_or_value(lhs))
    operands.append(_get_op_result_or_value(rhs))
    _ods_context = _ods_get_default_loc_context(loc)
    if broadcast_dimensions is not None: attributes["broadcast_dimensions"] = (broadcast_dimensions if (
        isinstance(broadcast_dimensions, _ods_ir.Attribute) or
        not _ods_ir.AttrBuilder.contains('DenseI64ArrayAttr')) else
          _ods_ir.AttrBuilder.get('DenseI64ArrayAttr')(broadcast_dimensions, context=_ods_context))
    _ods_successors = None
    super().__init__(self.build_generic(attributes=attributes, operands=operands, successors=_ods_successors, regions=regions, loc=loc, ip=ip))

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

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

  @builtins.property
  def broadcast_dimensions(self):
    if "broadcast_dimensions" not in self.operation.attributes:
      return None
    return self.operation.attributes["broadcast_dimensions"]

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

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

def broadcast_maximum(lhs, rhs, *, broadcast_dimensions=None, loc=None, ip=None) -> _ods_ir.Value:
  return _get_op_result_or_op_results(BroadcastMaxOp(lhs=lhs, rhs=rhs, broadcast_dimensions=broadcast_dimensions, loc=loc, ip=ip))

@_ods_cext.register_operation(_Dialect)
class BroadcastMinOp(_ods_ir.OpView):
  OPERATION_NAME = "chlo.broadcast_minimum"

  _ODS_REGIONS = (0, True)

  def __init__(self, lhs, rhs, *, broadcast_dimensions=None, loc=None, ip=None):
    operands = []
    results = []
    attributes = {}
    regions = None
    operands.append(_get_op_result_or_value(lhs))
    operands.append(_get_op_result_or_value(rhs))
    _ods_context = _ods_get_default_loc_context(loc)
    if broadcast_dimensions is not None: attributes["broadcast_dimensions"] = (broadcast_dimensions if (
        isinstance(broadcast_dimensions, _ods_ir.Attribute) or
        not _ods_ir.AttrBuilder.contains('DenseI64ArrayAttr')) else
          _ods_ir.AttrBuilder.get('DenseI64ArrayAttr')(broadcast_dimensions, context=_ods_context))
    _ods_successors = None
    super().__init__(self.build_generic(attributes=attributes, operands=operands, successors=_ods_successors, regions=regions, loc=loc, ip=ip))

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

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

  @builtins.property
  def broadcast_dimensions(self):
    if "broadcast_dimensions" not in self.operation.attributes:
      return None
    return self.operation.attributes["broadcast_dimensions"]

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

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

def broadcast_minimum(lhs, rhs, *, broadcast_dimensions=None, loc=None, ip=None) -> _ods_ir.Value:
  return _get_op_result_or_op_results(BroadcastMinOp(lhs=lhs, rhs=rhs, broadcast_dimensions=broadcast_dimensions, loc=loc, ip=ip))

@_ods_cext.register_operation(_Dialect)
class BroadcastMulOp(_ods_ir.OpView):
  OPERATION_NAME = "chlo.broadcast_multiply"

  _ODS_REGIONS = (0, True)

  def __init__(self, lhs, rhs, *, broadcast_dimensions=None, loc=None, ip=None):
    operands = []
    results = []
    attributes = {}
    regions = None
    operands.append(_get_op_result_or_value(lhs))
    operands.append(_get_op_result_or_value(rhs))
    _ods_context = _ods_get_default_loc_context(loc)
    if broadcast_dimensions is not None: attributes["broadcast_dimensions"] = (broadcast_dimensions if (
        isinstance(broadcast_dimensions, _ods_ir.Attribute) or
        not _ods_ir.AttrBuilder.contains('DenseI64ArrayAttr')) else
          _ods_ir.AttrBuilder.get('DenseI64ArrayAttr')(broadcast_dimensions, context=_ods_context))
    _ods_successors = None
    super().__init__(self.build_generic(attributes=attributes, operands=operands, successors=_ods_successors, regions=regions, loc=loc, ip=ip))

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

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

  @builtins.property
  def broadcast_dimensions(self):
    if "broadcast_dimensions" not in self.operation.attributes:
      return None
    return self.operation.attributes["broadcast_dimensions"]

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

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

def broadcast_multiply(lhs, rhs, *, broadcast_dimensions=None, loc=None, ip=None) -> _ods_ir.Value:
  return _get_op_result_or_op_results(BroadcastMulOp(lhs=lhs, rhs=rhs, broadcast_dimensions=broadcast_dimensions, loc=loc, ip=ip))

@_ods_cext.register_operation(_Dialect)
class BroadcastNextAfterOp(_ods_ir.OpView):
  OPERATION_NAME = "chlo.broadcast_next_after"

  _ODS_REGIONS = (0, True)

  def __init__(self, lhs, rhs, *, broadcast_dimensions=None, loc=None, ip=None):
    operands = []
    results = []
    attributes = {}
    regions = None
    operands.append(_get_op_result_or_value(lhs))
    operands.append(_get_op_result_or_value(rhs))
    _ods_context = _ods_get_default_loc_context(loc)
    if broadcast_dimensions is not None: attributes["broadcast_dimensions"] = (broadcast_dimensions if (
        isinstance(broadcast_dimensions, _ods_ir.Attribute) or
        not _ods_ir.AttrBuilder.contains('DenseI64ArrayAttr')) else
          _ods_ir.AttrBuilder.get('DenseI64ArrayAttr')(broadcast_dimensions, context=_ods_context))
    _ods_successors = None
    super().__init__(self.build_generic(attributes=attributes, operands=operands, successors=_ods_successors, regions=regions, loc=loc, ip=ip))

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

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

  @builtins.property
  def broadcast_dimensions(self):
    if "broadcast_dimensions" not in self.operation.attributes:
      return None
    return self.operation.attributes["broadcast_dimensions"]

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

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

def broadcast_next_after(lhs, rhs, *, broadcast_dimensions=None, loc=None, ip=None) -> _ods_ir.Value:
  return _get_op_result_or_op_results(BroadcastNextAfterOp(lhs=lhs, rhs=rhs, broadcast_dimensions=broadcast_dimensions, loc=loc, ip=ip))

@_ods_cext.register_operation(_Dialect)
class BroadcastOrOp(_ods_ir.OpView):
  OPERATION_NAME = "chlo.broadcast_or"

  _ODS_REGIONS = (0, True)

  def __init__(self, lhs, rhs, *, broadcast_dimensions=None, loc=None, ip=None):
    operands = []
    results = []
    attributes = {}
    regions = None
    operands.append(_get_op_result_or_value(lhs))
    operands.append(_get_op_result_or_value(rhs))
    _ods_context = _ods_get_default_loc_context(loc)
    if broadcast_dimensions is not None: attributes["broadcast_dimensions"] = (broadcast_dimensions if (
        isinstance(broadcast_dimensions, _ods_ir.Attribute) or
        not _ods_ir.AttrBuilder.contains('DenseI64ArrayAttr')) else
          _ods_ir.AttrBuilder.get('DenseI64ArrayAttr')(broadcast_dimensions, context=_ods_context))
    _ods_successors = None
    super().__init__(self.build_generic(attributes=attributes, operands=operands, successors=_ods_successors, regions=regions, loc=loc, ip=ip))

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

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

  @builtins.property
  def broadcast_dimensions(self):
    if "broadcast_dimensions" not in self.operation.attributes:
      return None
    return self.operation.attributes["broadcast_dimensions"]

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

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

def broadcast_or(lhs, rhs, *, broadcast_dimensions=None, loc=None, ip=None) -> _ods_ir.Value:
  return _get_op_result_or_op_results(BroadcastOrOp(lhs=lhs, rhs=rhs, broadcast_dimensions=broadcast_dimensions, loc=loc, ip=ip))

@_ods_cext.register_operation(_Dialect)
class BroadcastPolygammaOp(_ods_ir.OpView):
  OPERATION_NAME = "chlo.broadcast_polygamma"

  _ODS_REGIONS = (0, True)

  def __init__(self, lhs, rhs, *, broadcast_dimensions=None, loc=None, ip=None):
    operands = []
    results = []
    attributes = {}
    regions = None
    operands.append(_get_op_result_or_value(lhs))
    operands.append(_get_op_result_or_value(rhs))
    _ods_context = _ods_get_default_loc_context(loc)
    if broadcast_dimensions is not None: attributes["broadcast_dimensions"] = (broadcast_dimensions if (
        isinstance(broadcast_dimensions, _ods_ir.Attribute) or
        not _ods_ir.AttrBuilder.contains('DenseI64ArrayAttr')) else
          _ods_ir.AttrBuilder.get('DenseI64ArrayAttr')(broadcast_dimensions, context=_ods_context))
    _ods_successors = None
    super().__init__(self.build_generic(attributes=attributes, operands=operands, successors=_ods_successors, regions=regions, loc=loc, ip=ip))

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

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

  @builtins.property
  def broadcast_dimensions(self):
    if "broadcast_dimensions" not in self.operation.attributes:
      return None
    return self.operation.attributes["broadcast_dimensions"]

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

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

def broadcast_polygamma(lhs, rhs, *, broadcast_dimensions=None, loc=None, ip=None) -> _ods_ir.Value:
  return _get_op_result_or_op_results(BroadcastPolygammaOp(lhs=lhs, rhs=rhs, broadcast_dimensions=broadcast_dimensions, loc=loc, ip=ip))

@_ods_cext.register_operation(_Dialect)
class BroadcastPowOp(_ods_ir.OpView):
  OPERATION_NAME = "chlo.broadcast_power"

  _ODS_REGIONS = (0, True)

  def __init__(self, lhs, rhs, *, broadcast_dimensions=None, loc=None, ip=None):
    operands = []
    results = []
    attributes = {}
    regions = None
    operands.append(_get_op_result_or_value(lhs))
    operands.append(_get_op_result_or_value(rhs))
    _ods_context = _ods_get_default_loc_context(loc)
    if broadcast_dimensions is not None: attributes["broadcast_dimensions"] = (broadcast_dimensions if (
        isinstance(broadcast_dimensions, _ods_ir.Attribute) or
        not _ods_ir.AttrBuilder.contains('DenseI64ArrayAttr')) else
          _ods_ir.AttrBuilder.get('DenseI64ArrayAttr')(broadcast_dimensions, context=_ods_context))
    _ods_successors = None
    super().__init__(self.build_generic(attributes=attributes, operands=operands, successors=_ods_successors, regions=regions, loc=loc, ip=ip))

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

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

  @builtins.property
  def broadcast_dimensions(self):
    if "broadcast_dimensions" not in self.operation.attributes:
      return None
    return self.operation.attributes["broadcast_dimensions"]

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

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

def broadcast_power(lhs, rhs, *, broadcast_dimensions=None, loc=None, ip=None) -> _ods_ir.Value:
  return _get_op_result_or_op_results(BroadcastPowOp(lhs=lhs, rhs=rhs, broadcast_dimensions=broadcast_dimensions, loc=loc, ip=ip))

@_ods_cext.register_operation(_Dialect)
class BroadcastRemOp(_ods_ir.OpView):
  OPERATION_NAME = "chlo.broadcast_remainder"

  _ODS_REGIONS = (0, True)

  def __init__(self, lhs, rhs, *, broadcast_dimensions=None, loc=None, ip=None):
    operands = []
    results = []
    attributes = {}
    regions = None
    operands.append(_get_op_result_or_value(lhs))
    operands.append(_get_op_result_or_value(rhs))
    _ods_context = _ods_get_default_loc_context(loc)
    if broadcast_dimensions is not None: attributes["broadcast_dimensions"] = (broadcast_dimensions if (
        isinstance(broadcast_dimensions, _ods_ir.Attribute) or
        not _ods_ir.AttrBuilder.contains('DenseI64ArrayAttr')) else
          _ods_ir.AttrBuilder.get('DenseI64ArrayAttr')(broadcast_dimensions, context=_ods_context))
    _ods_successors = None
    super().__init__(self.build_generic(attributes=attributes, operands=operands, successors=_ods_successors, regions=regions, loc=loc, ip=ip))

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

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

  @builtins.property
  def broadcast_dimensions(self):
    if "broadcast_dimensions" not in self.operation.attributes:
      return None
    return self.operation.attributes["broadcast_dimensions"]

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

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

def broadcast_remainder(lhs, rhs, *, broadcast_dimensions=None, loc=None, ip=None) -> _ods_ir.Value:
  return _get_op_result_or_op_results(BroadcastRemOp(lhs=lhs, rhs=rhs, broadcast_dimensions=broadcast_dimensions, loc=loc, ip=ip))

@_ods_cext.register_operation(_Dialect)
class BroadcastSelectOp(_ods_ir.OpView):
  OPERATION_NAME = "chlo.broadcast_select"

  _ODS_REGIONS = (0, True)

  def __init__(self, pred, on_true, on_false, *, loc=None, ip=None):
    operands = []
    results = []
    attributes = {}
    regions = None
    operands.append(_get_op_result_or_value(pred))
    operands.append(_get_op_result_or_value(on_true))
    operands.append(_get_op_result_or_value(on_false))
    _ods_context = _ods_get_default_loc_context(loc)
    _ods_successors = None
    super().__init__(self.build_generic(attributes=attributes, operands=operands, successors=_ods_successors, regions=regions, loc=loc, ip=ip))

  @builtins.property
  def pred(self):
    return self.operation.operands[0]

  @builtins.property
  def on_true(self):
    return self.operation.operands[1]

  @builtins.property
  def on_false(self):
    return self.operation.operands[2]

def broadcast_select(pred, on_true, on_false, *, loc=None, ip=None) -> _ods_ir.Value:
  return _get_op_result_or_op_results(BroadcastSelectOp(pred=pred, on_true=on_true, on_false=on_false, loc=loc, ip=ip))

@_ods_cext.register_operation(_Dialect)
class BroadcastShiftLeftOp(_ods_ir.OpView):
  OPERATION_NAME = "chlo.broadcast_shift_left"

  _ODS_REGIONS = (0, True)

  def __init__(self, lhs, rhs, *, broadcast_dimensions=None, loc=None, ip=None):
    operands = []
    results = []
    attributes = {}
    regions = None
    operands.append(_get_op_result_or_value(lhs))
    operands.append(_get_op_result_or_value(rhs))
    _ods_context = _ods_get_default_loc_context(loc)
    if broadcast_dimensions is not None: attributes["broadcast_dimensions"] = (broadcast_dimensions if (
        isinstance(broadcast_dimensions, _ods_ir.Attribute) or
        not _ods_ir.AttrBuilder.contains('DenseI64ArrayAttr')) else
          _ods_ir.AttrBuilder.get('DenseI64ArrayAttr')(broadcast_dimensions, context=_ods_context))
    _ods_successors = None
    super().__init__(self.build_generic(attributes=attributes, operands=operands, successors=_ods_successors, regions=regions, loc=loc, ip=ip))

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

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

  @builtins.property
  def broadcast_dimensions(self):
    if "broadcast_dimensions" not in self.operation.attributes:
      return None
    return self.operation.attributes["broadcast_dimensions"]

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

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

def broadcast_shift_left(lhs, rhs, *, broadcast_dimensions=None, loc=None, ip=None) -> _ods_ir.Value:
  return _get_op_result_or_op_results(BroadcastShiftLeftOp(lhs=lhs, rhs=rhs, broadcast_dimensions=broadcast_dimensions, loc=loc, ip=ip))

@_ods_cext.register_operation(_Dialect)
class BroadcastShiftRightArithmeticOp(_ods_ir.OpView):
  OPERATION_NAME = "chlo.broadcast_shift_right_arithmetic"

  _ODS_REGIONS = (0, True)

  def __init__(self, lhs, rhs, *, broadcast_dimensions=None, loc=None, ip=None):
    operands = []
    results = []
    attributes = {}
    regions = None
    operands.append(_get_op_result_or_value(lhs))
    operands.append(_get_op_result_or_value(rhs))
    _ods_context = _ods_get_default_loc_context(loc)
    if broadcast_dimensions is not None: attributes["broadcast_dimensions"] = (broadcast_dimensions if (
        isinstance(broadcast_dimensions, _ods_ir.Attribute) or
        not _ods_ir.AttrBuilder.contains('DenseI64ArrayAttr')) else
          _ods_ir.AttrBuilder.get('DenseI64ArrayAttr')(broadcast_dimensions, context=_ods_context))
    _ods_successors = None
    super().__init__(self.build_generic(attributes=attributes, operands=operands, successors=_ods_successors, regions=regions, loc=loc, ip=ip))

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

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

  @builtins.property
  def broadcast_dimensions(self):
    if "broadcast_dimensions" not in self.operation.attributes:
      return None
    return self.operation.attributes["broadcast_dimensions"]

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

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

def broadcast_shift_right_arithmetic(lhs, rhs, *, broadcast_dimensions=None, loc=None, ip=None) -> _ods_ir.Value:
  return _get_op_result_or_op_results(BroadcastShiftRightArithmeticOp(lhs=lhs, rhs=rhs, broadcast_dimensions=broadcast_dimensions, loc=loc, ip=ip))

@_ods_cext.register_operation(_Dialect)
class BroadcastShiftRightLogicalOp(_ods_ir.OpView):
  OPERATION_NAME = "chlo.broadcast_shift_right_logical"

  _ODS_REGIONS = (0, True)

  def __init__(self, lhs, rhs, *, broadcast_dimensions=None, loc=None, ip=None):
    operands = []
    results = []
    attributes = {}
    regions = None
    operands.append(_get_op_result_or_value(lhs))
    operands.append(_get_op_result_or_value(rhs))
    _ods_context = _ods_get_default_loc_context(loc)
    if broadcast_dimensions is not None: attributes["broadcast_dimensions"] = (broadcast_dimensions if (
        isinstance(broadcast_dimensions, _ods_ir.Attribute) or
        not _ods_ir.AttrBuilder.contains('DenseI64ArrayAttr')) else
          _ods_ir.AttrBuilder.get('DenseI64ArrayAttr')(broadcast_dimensions, context=_ods_context))
    _ods_successors = None
    super().__init__(self.build_generic(attributes=attributes, operands=operands, successors=_ods_successors, regions=regions, loc=loc, ip=ip))

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

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

  @builtins.property
  def broadcast_dimensions(self):
    if "broadcast_dimensions" not in self.operation.attributes:
      return None
    return self.operation.attributes["broadcast_dimensions"]

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

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

def broadcast_shift_right_logical(lhs, rhs, *, broadcast_dimensions=None, loc=None, ip=None) -> _ods_ir.Value:
  return _get_op_result_or_op_results(BroadcastShiftRightLogicalOp(lhs=lhs, rhs=rhs, broadcast_dimensions=broadcast_dimensions, loc=loc, ip=ip))

@_ods_cext.register_operation(_Dialect)
class BroadcastSubOp(_ods_ir.OpView):
  OPERATION_NAME = "chlo.broadcast_subtract"

  _ODS_REGIONS = (0, True)

  def __init__(self, lhs, rhs, *, broadcast_dimensions=None, loc=None, ip=None):
    operands = []
    results = []
    attributes = {}
    regions = None
    operands.append(_get_op_result_or_value(lhs))
    operands.append(_get_op_result_or_value(rhs))
    _ods_context = _ods_get_default_loc_context(loc)
    if broadcast_dimensions is not None: attributes["broadcast_dimensions"] = (broadcast_dimensions if (
        isinstance(broadcast_dimensions, _ods_ir.Attribute) or
        not _ods_ir.AttrBuilder.contains('DenseI64ArrayAttr')) else
          _ods_ir.AttrBuilder.get('DenseI64ArrayAttr')(broadcast_dimensions, context=_ods_context))
    _ods_successors = None
    super().__init__(self.build_generic(attributes=attributes, operands=operands, successors=_ods_successors, regions=regions, loc=loc, ip=ip))

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

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

  @builtins.property
  def broadcast_dimensions(self):
    if "broadcast_dimensions" not in self.operation.attributes:
      return None
    return self.operation.attributes["broadcast_dimensions"]

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

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

def broadcast_subtract(lhs, rhs, *, broadcast_dimensions=None, loc=None, ip=None) -> _ods_ir.Value:
  return _get_op_result_or_op_results(BroadcastSubOp(lhs=lhs, rhs=rhs, broadcast_dimensions=broadcast_dimensions, loc=loc, ip=ip))

@_ods_cext.register_operation(_Dialect)
class BroadcastXorOp(_ods_ir.OpView):
  OPERATION_NAME = "chlo.broadcast_xor"

  _ODS_REGIONS = (0, True)

  def __init__(self, lhs, rhs, *, broadcast_dimensions=None, loc=None, ip=None):
    operands = []
    results = []
    attributes = {}
    regions = None
    operands.append(_get_op_result_or_value(lhs))
    operands.append(_get_op_result_or_value(rhs))
    _ods_context = _ods_get_default_loc_context(loc)
    if broadcast_dimensions is not None: attributes["broadcast_dimensions"] = (broadcast_dimensions if (
        isinstance(broadcast_dimensions, _ods_ir.Attribute) or
        not _ods_ir.AttrBuilder.contains('DenseI64ArrayAttr')) else
          _ods_ir.AttrBuilder.get('DenseI64ArrayAttr')(broadcast_dimensions, context=_ods_context))
    _ods_successors = None
    super().__init__(self.build_generic(attributes=attributes, operands=operands, successors=_ods_successors, regions=regions, loc=loc, ip=ip))

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

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

  @builtins.property
  def broadcast_dimensions(self):
    if "broadcast_dimensions" not in self.operation.attributes:
      return None
    return self.operation.attributes["broadcast_dimensions"]

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

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

def broadcast_xor(lhs, rhs, *, broadcast_dimensions=None, loc=None, ip=None) -> _ods_ir.Value:
  return _get_op_result_or_op_results(BroadcastXorOp(lhs=lhs, rhs=rhs, broadcast_dimensions=broadcast_dimensions, loc=loc, ip=ip))

@_ods_cext.register_operation(_Dialect)
class BroadcastZetaOp(_ods_ir.OpView):
  OPERATION_NAME = "chlo.broadcast_zeta"

  _ODS_REGIONS = (0, True)

  def __init__(self, lhs, rhs, *, broadcast_dimensions=None, loc=None, ip=None):
    operands = []
    results = []
    attributes = {}
    regions = None
    operands.append(_get_op_result_or_value(lhs))
    operands.append(_get_op_result_or_value(rhs))
    _ods_context = _ods_get_default_loc_context(loc)
    if broadcast_dimensions is not None: attributes["broadcast_dimensions"] = (broadcast_dimensions if (
        isinstance(broadcast_dimensions, _ods_ir.Attribute) or
        not _ods_ir.AttrBuilder.contains('DenseI64ArrayAttr')) else
          _ods_ir.AttrBuilder.get('DenseI64ArrayAttr')(broadcast_dimensions, context=_ods_context))
    _ods_successors = None
    super().__init__(self.build_generic(attributes=attributes, operands=operands, successors=_ods_successors, regions=regions, loc=loc, ip=ip))

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

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

  @builtins.property
  def broadcast_dimensions(self):
    if "broadcast_dimensions" not in self.operation.attributes:
      return None
    return self.operation.attributes["broadcast_dimensions"]

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

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

def broadcast_zeta(lhs, rhs, *, broadcast_dimensions=None, loc=None, ip=None) -> _ods_ir.Value:
  return _get_op_result_or_op_results(BroadcastZetaOp(lhs=lhs, rhs=rhs, broadcast_dimensions=broadcast_dimensions, loc=loc, ip=ip))

@_ods_cext.register_operation(_Dialect)
class ConjOp(_ods_ir.OpView):
  OPERATION_NAME = "chlo.conj"

  _ODS_REGIONS = (0, True)

  def __init__(self, operand, *, loc=None, ip=None):
    operands = []
    results = []
    attributes = {}
    regions = None
    operands.append(_get_op_result_or_value(operand))
    _ods_context = _ods_get_default_loc_context(loc)
    _ods_successors = None
    super().__init__(self.build_generic(attributes=attributes, operands=operands, successors=_ods_successors, regions=regions, loc=loc, ip=ip))

  @builtins.property
  def operand(self):
    return self.operation.operands[0]

  @builtins.property
  def result(self):
    return self.operation.results[0]

def conj(operand, *, loc=None, ip=None) -> _ods_ir.Value:
  return _get_op_result_or_op_results(ConjOp(operand=operand, loc=loc, ip=ip))

@_ods_cext.register_operation(_Dialect)
class ConstantLikeOp(_ods_ir.OpView):
  OPERATION_NAME = "chlo.constant_like"

  _ODS_REGIONS = (0, True)

  def __init__(self, value, operand, *, loc=None, ip=None):
    operands = []
    results = []
    attributes = {}
    regions = None
    operands.append(_get_op_result_or_value(operand))
    _ods_context = _ods_get_default_loc_context(loc)
    attributes["value"] = (value if (
    isinstance(value, _ods_ir.Attribute) or
    not _ods_ir.AttrBuilder.contains('TypedAttrInterface')) else
      _ods_ir.AttrBuilder.get('TypedAttrInterface')(value, context=_ods_context))
    _ods_successors = None
    super().__init__(self.build_generic(attributes=attributes, operands=operands, successors=_ods_successors, regions=regions, loc=loc, ip=ip))

  @builtins.property
  def operand(self):
    return self.operation.operands[0]

  @builtins.property
  def value(self):
    return self.operation.attributes["value"]

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

def constant_like(value, operand, *, loc=None, ip=None) -> _ods_ir.Value:
  return _get_op_result_or_op_results(ConstantLikeOp(value=value, operand=operand, loc=loc, ip=ip))

@_ods_cext.register_operation(_Dialect)
class ConstantOp(_ods_ir.OpView):
  OPERATION_NAME = "chlo.constant"

  _ODS_REGIONS = (0, True)

  def __init__(self, value, *, loc=None, ip=None):
    operands = []
    results = []
    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('ElementsAttr')) else
      _ods_ir.AttrBuilder.get('ElementsAttr')(value, context=_ods_context))
    _ods_successors = None
    super().__init__(self.build_generic(attributes=attributes, operands=operands, successors=_ods_successors, regions=regions, loc=loc, ip=ip))

  @builtins.property
  def value(self):
    return self.operation.attributes["value"]

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

  @builtins.property
  def output(self):
    return self.operation.results[0]

def constant(value, *, loc=None, ip=None) -> _ods_ir.Value:
  return _get_op_result_or_op_results(ConstantOp(value=value, loc=loc, ip=ip))

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

  _ODS_REGIONS = (0, True)

  def __init__(self, operand, *, loc=None, ip=None):
    operands = []
    results = []
    attributes = {}
    regions = None
    operands.append(_get_op_result_or_value(operand))
    _ods_context = _ods_get_default_loc_context(loc)
    _ods_successors = None
    super().__init__(self.build_generic(attributes=attributes, operands=operands, successors=_ods_successors, regions=regions, loc=loc, ip=ip))

  @builtins.property
  def operand(self):
    return self.operation.operands[0]

  @builtins.property
  def result(self):
    return self.operation.results[0]

def cosh(operand, *, loc=None, ip=None) -> _ods_ir.Value:
  return _get_op_result_or_op_results(CoshOp(operand=operand, loc=loc, ip=ip))

@_ods_cext.register_operation(_Dialect)
class DigammaOp(_ods_ir.OpView):
  OPERATION_NAME = "chlo.digamma"

  _ODS_REGIONS = (0, True)

  def __init__(self, operand, *, loc=None, ip=None):
    operands = []
    results = []
    attributes = {}
    regions = None
    operands.append(_get_op_result_or_value(operand))
    _ods_context = _ods_get_default_loc_context(loc)
    _ods_successors = None
    super().__init__(self.build_generic(attributes=attributes, operands=operands, successors=_ods_successors, regions=regions, loc=loc, ip=ip))

  @builtins.property
  def operand(self):
    return self.operation.operands[0]

  @builtins.property
  def result(self):
    return self.operation.results[0]

def digamma(operand, *, loc=None, ip=None) -> _ods_ir.Value:
  return _get_op_result_or_op_results(DigammaOp(operand=operand, loc=loc, ip=ip))

@_ods_cext.register_operation(_Dialect)
class ErfInvOp(_ods_ir.OpView):
  OPERATION_NAME = "chlo.erf_inv"

  _ODS_REGIONS = (0, True)

  def __init__(self, operand, *, loc=None, ip=None):
    operands = []
    results = []
    attributes = {}
    regions = None
    operands.append(_get_op_result_or_value(operand))
    _ods_context = _ods_get_default_loc_context(loc)
    _ods_successors = None
    super().__init__(self.build_generic(attributes=attributes, operands=operands, successors=_ods_successors, regions=regions, loc=loc, ip=ip))

  @builtins.property
  def operand(self):
    return self.operation.operands[0]

  @builtins.property
  def result(self):
    return self.operation.results[0]

def erf_inv(operand, *, loc=None, ip=None) -> _ods_ir.Value:
  return _get_op_result_or_op_results(ErfInvOp(operand=operand, loc=loc, ip=ip))

@_ods_cext.register_operation(_Dialect)
class ErfOp(_ods_ir.OpView):
  OPERATION_NAME = "chlo.erf"

  _ODS_REGIONS = (0, True)

  def __init__(self, operand, *, loc=None, ip=None):
    operands = []
    results = []
    attributes = {}
    regions = None
    operands.append(_get_op_result_or_value(operand))
    _ods_context = _ods_get_default_loc_context(loc)
    _ods_successors = None
    super().__init__(self.build_generic(attributes=attributes, operands=operands, successors=_ods_successors, regions=regions, loc=loc, ip=ip))

  @builtins.property
  def operand(self):
    return self.operation.operands[0]

  @builtins.property
  def result(self):
    return self.operation.results[0]

def erf(operand, *, loc=None, ip=None) -> _ods_ir.Value:
  return _get_op_result_or_op_results(ErfOp(operand=operand, loc=loc, ip=ip))

@_ods_cext.register_operation(_Dialect)
class ErfcOp(_ods_ir.OpView):
  OPERATION_NAME = "chlo.erfc"

  _ODS_REGIONS = (0, True)

  def __init__(self, operand, *, loc=None, ip=None):
    operands = []
    results = []
    attributes = {}
    regions = None
    operands.append(_get_op_result_or_value(operand))
    _ods_context = _ods_get_default_loc_context(loc)
    _ods_successors = None
    super().__init__(self.build_generic(attributes=attributes, operands=operands, successors=_ods_successors, regions=regions, loc=loc, ip=ip))

  @builtins.property
  def operand(self):
    return self.operation.operands[0]

  @builtins.property
  def result(self):
    return self.operation.results[0]

def erfc(operand, *, loc=None, ip=None) -> _ods_ir.Value:
  return _get_op_result_or_op_results(ErfcOp(operand=operand, loc=loc, ip=ip))

@_ods_cext.register_operation(_Dialect)
class IsInfOp(_ods_ir.OpView):
  OPERATION_NAME = "chlo.is_inf"

  _ODS_REGIONS = (0, True)

  def __init__(self, operand, *, loc=None, ip=None):
    operands = []
    results = []
    attributes = {}
    regions = None
    operands.append(_get_op_result_or_value(operand))
    _ods_context = _ods_get_default_loc_context(loc)
    _ods_successors = None
    super().__init__(self.build_generic(attributes=attributes, operands=operands, successors=_ods_successors, regions=regions, loc=loc, ip=ip))

  @builtins.property
  def operand(self):
    return self.operation.operands[0]

  @builtins.property
  def result(self):
    return self.operation.results[0]

def is_inf(operand, *, loc=None, ip=None) -> _ods_ir.Value:
  return _get_op_result_or_op_results(IsInfOp(operand=operand, loc=loc, ip=ip))

@_ods_cext.register_operation(_Dialect)
class IsNegInfOp(_ods_ir.OpView):
  OPERATION_NAME = "chlo.is_neg_inf"

  _ODS_REGIONS = (0, True)

  def __init__(self, operand, *, loc=None, ip=None):
    operands = []
    results = []
    attributes = {}
    regions = None
    operands.append(_get_op_result_or_value(operand))
    _ods_context = _ods_get_default_loc_context(loc)
    _ods_successors = None
    super().__init__(self.build_generic(attributes=attributes, operands=operands, successors=_ods_successors, regions=regions, loc=loc, ip=ip))

  @builtins.property
  def operand(self):
    return self.operation.operands[0]

  @builtins.property
  def result(self):
    return self.operation.results[0]

def is_neg_inf(operand, *, loc=None, ip=None) -> _ods_ir.Value:
  return _get_op_result_or_op_results(IsNegInfOp(operand=operand, loc=loc, ip=ip))

@_ods_cext.register_operation(_Dialect)
class IsPosInfOp(_ods_ir.OpView):
  OPERATION_NAME = "chlo.is_pos_inf"

  _ODS_REGIONS = (0, True)

  def __init__(self, operand, *, loc=None, ip=None):
    operands = []
    results = []
    attributes = {}
    regions = None
    operands.append(_get_op_result_or_value(operand))
    _ods_context = _ods_get_default_loc_context(loc)
    _ods_successors = None
    super().__init__(self.build_generic(attributes=attributes, operands=operands, successors=_ods_successors, regions=regions, loc=loc, ip=ip))

  @builtins.property
  def operand(self):
    return self.operation.operands[0]

  @builtins.property
  def result(self):
    return self.operation.results[0]

def is_pos_inf(operand, *, loc=None, ip=None) -> _ods_ir.Value:
  return _get_op_result_or_op_results(IsPosInfOp(operand=operand, loc=loc, ip=ip))

@_ods_cext.register_operation(_Dialect)
class LgammaOp(_ods_ir.OpView):
  OPERATION_NAME = "chlo.lgamma"

  _ODS_REGIONS = (0, True)

  def __init__(self, operand, *, loc=None, ip=None):
    operands = []
    results = []
    attributes = {}
    regions = None
    operands.append(_get_op_result_or_value(operand))
    _ods_context = _ods_get_default_loc_context(loc)
    _ods_successors = None
    super().__init__(self.build_generic(attributes=attributes, operands=operands, successors=_ods_successors, regions=regions, loc=loc, ip=ip))

  @builtins.property
  def operand(self):
    return self.operation.operands[0]

  @builtins.property
  def result(self):
    return self.operation.results[0]

def lgamma(operand, *, loc=None, ip=None) -> _ods_ir.Value:
  return _get_op_result_or_op_results(LgammaOp(operand=operand, loc=loc, ip=ip))

@_ods_cext.register_operation(_Dialect)
class NextAfterOp(_ods_ir.OpView):
  OPERATION_NAME = "chlo.next_after"

  _ODS_REGIONS = (0, True)

  def __init__(self, x, y, *, loc=None, ip=None):
    operands = []
    results = []
    attributes = {}
    regions = None
    operands.append(_get_op_result_or_value(x))
    operands.append(_get_op_result_or_value(y))
    _ods_context = _ods_get_default_loc_context(loc)
    _ods_successors = None
    super().__init__(self.build_generic(attributes=attributes, operands=operands, successors=_ods_successors, regions=regions, loc=loc, ip=ip))

  @builtins.property
  def x(self):
    return self.operation.operands[0]

  @builtins.property
  def y(self):
    return self.operation.operands[1]

  @builtins.property
  def result(self):
    return self.operation.results[0]

def next_after(x, y, *, loc=None, ip=None) -> _ods_ir.Value:
  return _get_op_result_or_op_results(NextAfterOp(x=x, y=y, loc=loc, ip=ip))

@_ods_cext.register_operation(_Dialect)
class PolygammaOp(_ods_ir.OpView):
  OPERATION_NAME = "chlo.polygamma"

  _ODS_REGIONS = (0, True)

  def __init__(self, n, x, *, loc=None, ip=None):
    operands = []
    results = []
    attributes = {}
    regions = None
    operands.append(_get_op_result_or_value(n))
    operands.append(_get_op_result_or_value(x))
    _ods_context = _ods_get_default_loc_context(loc)
    _ods_successors = None
    super().__init__(self.build_generic(attributes=attributes, operands=operands, successors=_ods_successors, regions=regions, loc=loc, ip=ip))

  @builtins.property
  def n(self):
    return self.operation.operands[0]

  @builtins.property
  def x(self):
    return self.operation.operands[1]

  @builtins.property
  def result(self):
    return self.operation.results[0]

def polygamma(n, x, *, loc=None, ip=None) -> _ods_ir.Value:
  return _get_op_result_or_op_results(PolygammaOp(n=n, x=x, loc=loc, ip=ip))

@_ods_cext.register_operation(_Dialect)
class SinhOp(_ods_ir.OpView):
  OPERATION_NAME = "chlo.sinh"

  _ODS_REGIONS = (0, True)

  def __init__(self, operand, *, loc=None, ip=None):
    operands = []
    results = []
    attributes = {}
    regions = None
    operands.append(_get_op_result_or_value(operand))
    _ods_context = _ods_get_default_loc_context(loc)
    _ods_successors = None
    super().__init__(self.build_generic(attributes=attributes, operands=operands, successors=_ods_successors, regions=regions, loc=loc, ip=ip))

  @builtins.property
  def operand(self):
    return self.operation.operands[0]

  @builtins.property
  def result(self):
    return self.operation.results[0]

def sinh(operand, *, loc=None, ip=None) -> _ods_ir.Value:
  return _get_op_result_or_op_results(SinhOp(operand=operand, loc=loc, ip=ip))

@_ods_cext.register_operation(_Dialect)
class TanOp(_ods_ir.OpView):
  OPERATION_NAME = "chlo.tan"

  _ODS_REGIONS = (0, True)

  def __init__(self, operand, *, loc=None, ip=None):
    operands = []
    results = []
    attributes = {}
    regions = None
    operands.append(_get_op_result_or_value(operand))
    _ods_context = _ods_get_default_loc_context(loc)
    _ods_successors = None
    super().__init__(self.build_generic(attributes=attributes, operands=operands, successors=_ods_successors, regions=regions, loc=loc, ip=ip))

  @builtins.property
  def operand(self):
    return self.operation.operands[0]

  @builtins.property
  def result(self):
    return self.operation.results[0]

def tan(operand, *, loc=None, ip=None) -> _ods_ir.Value:
  return _get_op_result_or_op_results(TanOp(operand=operand, loc=loc, ip=ip))

@_ods_cext.register_operation(_Dialect)
class TopKOp(_ods_ir.OpView):
  OPERATION_NAME = "chlo.top_k"

  _ODS_REGIONS = (0, True)

  def __init__(self, operand, k, *, loc=None, ip=None):
    operands = []
    results = []
    attributes = {}
    regions = None
    operands.append(_get_op_result_or_value(operand))
    _ods_context = _ods_get_default_loc_context(loc)
    attributes["k"] = (k if (
    isinstance(k, _ods_ir.Attribute) or
    not _ods_ir.AttrBuilder.contains('I64Attr')) else
      _ods_ir.AttrBuilder.get('I64Attr')(k, context=_ods_context))
    _ods_successors = None
    super().__init__(self.build_generic(attributes=attributes, operands=operands, successors=_ods_successors, regions=regions, loc=loc, ip=ip))

  @builtins.property
  def operand(self):
    return self.operation.operands[0]

  @builtins.property
  def k(self):
    return self.operation.attributes["k"]

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

  @builtins.property
  def values(self):
    return self.operation.results[0]

  @builtins.property
  def indices(self):
    return self.operation.results[1]

def top_k(operand, k, *, loc=None, ip=None) -> _Sequence[_ods_ir.Value]:
  return _get_op_result_or_op_results(TopKOp(operand=operand, k=k, loc=loc, ip=ip))

@_ods_cext.register_operation(_Dialect)
class ZetaOp(_ods_ir.OpView):
  OPERATION_NAME = "chlo.zeta"

  _ODS_REGIONS = (0, True)

  def __init__(self, x, q, *, loc=None, ip=None):
    operands = []
    results = []
    attributes = {}
    regions = None
    operands.append(_get_op_result_or_value(x))
    operands.append(_get_op_result_or_value(q))
    _ods_context = _ods_get_default_loc_context(loc)
    _ods_successors = None
    super().__init__(self.build_generic(attributes=attributes, operands=operands, successors=_ods_successors, regions=regions, loc=loc, ip=ip))

  @builtins.property
  def x(self):
    return self.operation.operands[0]

  @builtins.property
  def q(self):
    return self.operation.operands[1]

  @builtins.property
  def result(self):
    return self.operation.results[0]

def zeta(x, q, *, loc=None, ip=None) -> _ods_ir.Value:
  return _get_op_result_or_op_results(ZetaOp(x=x, q=q, loc=loc, ip=ip))
