[Mlir-commits] [mlir] d0b09f8 - [NFC][mlir] Adding more operators to EDSC TemplatedIndexedValue

Alex Zinenko llvmlistbot at llvm.org
Fri Feb 21 04:27:33 PST 2020


Author: Kern Handa
Date: 2020-02-21T13:27:25+01:00
New Revision: d0b09f89e0ed01730173e8b609f25da33e826fa6

URL: https://github.com/llvm/llvm-project/commit/d0b09f89e0ed01730173e8b609f25da33e826fa6
DIFF: https://github.com/llvm/llvm-project/commit/d0b09f89e0ed01730173e8b609f25da33e826fa6.diff

LOG: [NFC][mlir] Adding more operators to EDSC TemplatedIndexedValue

This change adds some missing arithmetic and logical operators to
`TemplatedIndexedValue` for EDSC usage.

Differential Revision: https://reviews.llvm.org/D74686

Added: 
    

Modified: 
    mlir/include/mlir/Dialect/AffineOps/EDSC/Builders.h
    mlir/include/mlir/EDSC/Builders.h

Removed: 
    


################################################################################
diff  --git a/mlir/include/mlir/Dialect/AffineOps/EDSC/Builders.h b/mlir/include/mlir/Dialect/AffineOps/EDSC/Builders.h
index c20c8d72ae96..f750a1d41f8a 100644
--- a/mlir/include/mlir/Dialect/AffineOps/EDSC/Builders.h
+++ b/mlir/include/mlir/Dialect/AffineOps/EDSC/Builders.h
@@ -92,7 +92,7 @@ ValueHandle operator>=(ValueHandle lhs, ValueHandle rhs);
 
 } // namespace op
 
-/// Operator overloadings.
+/// Arithmetic operator overloadings.
 template <typename Load, typename Store>
 ValueHandle TemplatedIndexedValue<Load, Store>::operator+(ValueHandle e) {
   using op::operator+;
@@ -113,7 +113,18 @@ ValueHandle TemplatedIndexedValue<Load, Store>::operator/(ValueHandle e) {
   using op::operator/;
   return static_cast<ValueHandle>(*this) / e;
 }
+template <typename Load, typename Store>
+ValueHandle TemplatedIndexedValue<Load, Store>::operator%(ValueHandle e) {
+  using op::operator%;
+  return static_cast<ValueHandle>(*this) % e;
+}
+template <typename Load, typename Store>
+ValueHandle TemplatedIndexedValue<Load, Store>::operator^(ValueHandle e) {
+  using op::operator^;
+  return static_cast<ValueHandle>(*this) ^ e;
+}
 
+/// Assignment-arithmetic operator overloadings.
 template <typename Load, typename Store>
 OperationHandle TemplatedIndexedValue<Load, Store>::operator+=(ValueHandle e) {
   using op::operator+;
@@ -134,6 +145,60 @@ OperationHandle TemplatedIndexedValue<Load, Store>::operator/=(ValueHandle e) {
   using op::operator/;
   return Store(*this / e, getBase(), {indices.begin(), indices.end()});
 }
+template <typename Load, typename Store>
+OperationHandle TemplatedIndexedValue<Load, Store>::operator%=(ValueHandle e) {
+  using op::operator%;
+  return Store(*this % e, getBase(), {indices.begin(), indices.end()});
+}
+template <typename Load, typename Store>
+OperationHandle TemplatedIndexedValue<Load, Store>::operator^=(ValueHandle e) {
+  using op::operator^;
+  return Store(*this ^ e, getBase(), {indices.begin(), indices.end()});
+}
+
+/// Logical operator overloadings.
+template <typename Load, typename Store>
+ValueHandle TemplatedIndexedValue<Load, Store>::operator&&(ValueHandle e) {
+  using op::operator&&;
+  return static_cast<ValueHandle>(*this) && e;
+}
+template <typename Load, typename Store>
+ValueHandle TemplatedIndexedValue<Load, Store>::operator||(ValueHandle e) {
+  using op::operator||;
+  return static_cast<ValueHandle>(*this) || e;
+}
+
+/// Comparison operator overloadings.
+template <typename Load, typename Store>
+ValueHandle TemplatedIndexedValue<Load, Store>::operator==(ValueHandle e) {
+  using op::operator==;
+  return static_cast<ValueHandle>(*this) == e;
+}
+template <typename Load, typename Store>
+ValueHandle TemplatedIndexedValue<Load, Store>::operator!=(ValueHandle e) {
+  using op::operator!=;
+  return static_cast<ValueHandle>(*this) != e;
+}
+template <typename Load, typename Store>
+ValueHandle TemplatedIndexedValue<Load, Store>::operator<(ValueHandle e) {
+  using op::operator<;
+  return static_cast<ValueHandle>(*this) < e;
+}
+template <typename Load, typename Store>
+ValueHandle TemplatedIndexedValue<Load, Store>::operator<=(ValueHandle e) {
+  using op::operator<=;
+  return static_cast<ValueHandle>(*this) <= e;
+}
+template <typename Load, typename Store>
+ValueHandle TemplatedIndexedValue<Load, Store>::operator>(ValueHandle e) {
+  using op::operator>;
+  return static_cast<ValueHandle>(*this) > e;
+}
+template <typename Load, typename Store>
+ValueHandle TemplatedIndexedValue<Load, Store>::operator>=(ValueHandle e) {
+  using op::operator>=;
+  return static_cast<ValueHandle>(*this) >= e;
+}
 
 } // namespace edsc
 } // namespace mlir

diff  --git a/mlir/include/mlir/EDSC/Builders.h b/mlir/include/mlir/EDSC/Builders.h
index 5309187d1714..c907f2d1ea5e 100644
--- a/mlir/include/mlir/EDSC/Builders.h
+++ b/mlir/include/mlir/EDSC/Builders.h
@@ -538,15 +538,13 @@ class TemplatedIndexedValue {
 
   ValueHandle getBase() const { return base; }
 
-  /// Operator overloadings.
+  /// Arithmetic operator overloadings.
   ValueHandle operator+(ValueHandle e);
   ValueHandle operator-(ValueHandle e);
   ValueHandle operator*(ValueHandle e);
   ValueHandle operator/(ValueHandle e);
-  OperationHandle operator+=(ValueHandle e);
-  OperationHandle operator-=(ValueHandle e);
-  OperationHandle operator*=(ValueHandle e);
-  OperationHandle operator/=(ValueHandle e);
+  ValueHandle operator%(ValueHandle e);
+  ValueHandle operator^(ValueHandle e);
   ValueHandle operator+(TemplatedIndexedValue e) {
     return *this + static_cast<ValueHandle>(e);
   }
@@ -559,6 +557,20 @@ class TemplatedIndexedValue {
   ValueHandle operator/(TemplatedIndexedValue e) {
     return *this / static_cast<ValueHandle>(e);
   }
+  ValueHandle operator%(TemplatedIndexedValue e) {
+    return *this % static_cast<ValueHandle>(e);
+  }
+  ValueHandle operator^(TemplatedIndexedValue e) {
+    return *this ^ static_cast<ValueHandle>(e);
+  }
+
+  /// Assignment-arithmetic operator overloadings.
+  OperationHandle operator+=(ValueHandle e);
+  OperationHandle operator-=(ValueHandle e);
+  OperationHandle operator*=(ValueHandle e);
+  OperationHandle operator/=(ValueHandle e);
+  OperationHandle operator%=(ValueHandle e);
+  OperationHandle operator^=(ValueHandle e);
   OperationHandle operator+=(TemplatedIndexedValue e) {
     return this->operator+=(static_cast<ValueHandle>(e));
   }
@@ -571,6 +583,48 @@ class TemplatedIndexedValue {
   OperationHandle operator/=(TemplatedIndexedValue e) {
     return this->operator/=(static_cast<ValueHandle>(e));
   }
+  OperationHandle operator%=(TemplatedIndexedValue e) {
+    return this->operator%=(static_cast<ValueHandle>(e));
+  }
+  OperationHandle operator^=(TemplatedIndexedValue e) {
+    return this->operator^=(static_cast<ValueHandle>(e));
+  }
+
+  /// Logical operator overloadings.
+  ValueHandle operator&&(ValueHandle e);
+  ValueHandle operator||(ValueHandle e);
+  ValueHandle operator&&(TemplatedIndexedValue e) {
+    return *this && static_cast<ValueHandle>(e);
+  }
+  ValueHandle operator||(TemplatedIndexedValue e) {
+    return *this || static_cast<ValueHandle>(e);
+  }
+
+  /// Comparison operator overloadings.
+  ValueHandle operator==(ValueHandle e);
+  ValueHandle operator!=(ValueHandle e);
+  ValueHandle operator<(ValueHandle e);
+  ValueHandle operator<=(ValueHandle e);
+  ValueHandle operator>(ValueHandle e);
+  ValueHandle operator>=(ValueHandle e);
+  ValueHandle operator==(TemplatedIndexedValue e) {
+    return *this == static_cast<ValueHandle>(e);
+  }
+  ValueHandle operator!=(TemplatedIndexedValue e) {
+    return *this != static_cast<ValueHandle>(e);
+  }
+  ValueHandle operator<(TemplatedIndexedValue e) {
+    return *this < static_cast<ValueHandle>(e);
+  }
+  ValueHandle operator<=(TemplatedIndexedValue e) {
+    return *this <= static_cast<ValueHandle>(e);
+  }
+  ValueHandle operator>(TemplatedIndexedValue e) {
+    return *this > static_cast<ValueHandle>(e);
+  }
+  ValueHandle operator>=(TemplatedIndexedValue e) {
+    return *this >= static_cast<ValueHandle>(e);
+  }
 
 private:
   TemplatedIndexedValue(ValueHandle base, ArrayRef<ValueHandle> indices)


        


More information about the Mlir-commits mailing list