From b389c80963fb6276d5df62afe9bd4bd08239887b Mon Sep 17 00:00:00 2001 From: Benjamin Kramer Date: Thu, 29 Apr 2021 15:26:10 +0200 Subject: [PATCH] [mlir] Fix lowering of multi-dimensional vector log1p to LLVM This was using the untransformed operand, leading to invalid IR. Differential Revision: https://reviews.llvm.org/D101531 --- mlir/lib/Conversion/StandardToLLVM/StandardToLLVM.cpp | 2 +- mlir/test/Conversion/StandardToLLVM/standard-to-llvm.mlir | 13 +++++++++++++ 2 files changed, 14 insertions(+), 1 deletion(-) diff --git a/mlir/lib/Conversion/StandardToLLVM/StandardToLLVM.cpp b/mlir/lib/Conversion/StandardToLLVM/StandardToLLVM.cpp index ddfb349..32ff6b5 100644 --- a/mlir/lib/Conversion/StandardToLLVM/StandardToLLVM.cpp +++ b/mlir/lib/Conversion/StandardToLLVM/StandardToLLVM.cpp @@ -2396,7 +2396,7 @@ struct Log1pOpLowering : public ConvertOpToLLVMPattern { auto one = rewriter.create(loc, llvm1DVectorTy, splatAttr); auto add = rewriter.create(loc, llvm1DVectorTy, one, - transformed.operand()); + operands[0]); return rewriter.create(loc, llvm1DVectorTy, add); }, rewriter); diff --git a/mlir/test/Conversion/StandardToLLVM/standard-to-llvm.mlir b/mlir/test/Conversion/StandardToLLVM/standard-to-llvm.mlir index 1d12eb9..b53de92 100644 --- a/mlir/test/Conversion/StandardToLLVM/standard-to-llvm.mlir +++ b/mlir/test/Conversion/StandardToLLVM/standard-to-llvm.mlir @@ -24,6 +24,19 @@ func @log1p(%arg0 : f32) { // ----- +// CHECK-LABEL: func @log1p_2dvector( +func @log1p_2dvector(%arg0 : vector<4x3xf32>) { + // CHECK: %[[EXTRACT:.*]] = llvm.extractvalue %arg0[0] : !llvm.array<4 x vector<3xf32>> + // CHECK: %[[ONE:.*]] = llvm.mlir.constant(dense<1.000000e+00> : vector<3xf32>) : vector<3xf32> + // CHECK: %[[ADD:.*]] = llvm.fadd %[[ONE]], %[[EXTRACT]] : vector<3xf32> + // CHECK: %[[LOG:.*]] = "llvm.intr.log"(%[[ADD]]) : (vector<3xf32>) -> vector<3xf32> + // CHECK: %[[INSERT:.*]] = llvm.insertvalue %[[LOG]], %0[0] : !llvm.array<4 x vector<3xf32>> + %0 = math.log1p %arg0 : vector<4x3xf32> + std.return +} + +// ----- + // CHECK-LABEL: func @rsqrt( // CHECK-SAME: f32 func @rsqrt(%arg0 : f32) { -- 2.7.4