[Mlir-commits] [mlir] 73c5804 - [mlir] Add std op for X raised to the power of Y
Tres Popp
llvmlistbot at llvm.org
Tue Dec 15 08:06:39 PST 2020
Author: Tres Popp
Date: 2020-12-15T17:06:26+01:00
New Revision: 73c580405ffae0243c113a1db6b77c0b595adf05
URL: https://github.com/llvm/llvm-project/commit/73c580405ffae0243c113a1db6b77c0b595adf05
DIFF: https://github.com/llvm/llvm-project/commit/73c580405ffae0243c113a1db6b77c0b595adf05.diff
LOG: [mlir] Add std op for X raised to the power of Y
Proposal:
https://llvm.discourse.group/t/rfc-standard-add-powop-to-std-dialect/2377
Differential Revision: https://reviews.llvm.org/D93119
Added:
Modified:
mlir/include/mlir/Dialect/StandardOps/IR/Ops.td
mlir/test/IR/core-ops.mlir
Removed:
################################################################################
diff --git a/mlir/include/mlir/Dialect/StandardOps/IR/Ops.td b/mlir/include/mlir/Dialect/StandardOps/IR/Ops.td
index c218618eb111..481dfaf4b34d 100644
--- a/mlir/include/mlir/Dialect/StandardOps/IR/Ops.td
+++ b/mlir/include/mlir/Dialect/StandardOps/IR/Ops.td
@@ -2352,6 +2352,39 @@ def OrOp : IntArithmeticOp<"or", [Commutative]> {
let hasFolder = 1;
}
+//===----------------------------------------------------------------------===//
+// PowFOp
+//===----------------------------------------------------------------------===//
+
+def PowFOp : FloatArithmeticOp<"powf"> {
+ let summary = "floating point raised to the power of operation";
+ let description = [{
+ Syntax:
+
+ ```
+ operation ::= ssa-id `=` `std.powf` ssa-use `,` ssa-use `:` type
+ ```
+
+ The `powf` operation takes two operands and returns one result, each of
+ these is required to be the same type. This type may be a floating point
+ scalar type, a vector whose element type is a floating point type, or a
+ floating point tensor.
+
+ Example:
+
+ ```mlir
+ // Scalar exponentiation.
+ %a = powf %b, %c : f64
+
+ // SIMD pointwise vector exponentiation
+ %f = powf %g, %h : vector<4xf32>
+
+ // Tensor pointwise exponentiation.
+ %x = powf %y, %z : tensor<4x?xbf16>
+ ```
+ }];
+}
+
//===----------------------------------------------------------------------===//
// PrefetchOp
//===----------------------------------------------------------------------===//
diff --git a/mlir/test/IR/core-ops.mlir b/mlir/test/IR/core-ops.mlir
index 9af0c01bf555..502e7fb358fb 100644
--- a/mlir/test/IR/core-ops.mlir
+++ b/mlir/test/IR/core-ops.mlir
@@ -86,6 +86,9 @@ func @standard_instrs(tensor<4x4x?xf32>, f32, i32, index, i64, f16) {
// CHECK: %[[I6:.*]] = muli %[[I2]], %[[I2]] : i32
%i6 = muli %i2, %i2 : i32
+ // CHECK: %[[F7:.*]] = powf %[[F2]], %[[F2]] : f32
+ %f7 = powf %f2, %f2 : f32
+
// CHECK: %[[C0:.*]] = create_complex %[[F2]], %[[F2]] : complex<f32>
%c0 = "std.create_complex"(%f2, %f2) : (f32, f32) -> complex<f32>
More information about the Mlir-commits
mailing list