[PATCH] D113657: [fir] Add !fir.vector type conversion

Valentin Clement via Phabricator via llvm-commits llvm-commits at lists.llvm.org
Thu Nov 11 02:07:51 PST 2021


clementval created this revision.
clementval added reviewers: jeanPerier, svedanayagam, sscalpone, kiranchandramohan, jdoerfert, schweitz, pmccormick, rovka, AlexisPerry, PeteSteinfeld, awarzynski.
Herald added a subscriber: mehdi_amini.
Herald added a project: Flang.
clementval requested review of this revision.
Herald added a project: LLVM.
Herald added a subscriber: llvm-commits.

This patch adds the !fir.vector type conversion. The type is converted
to the builtin vector type.

This patch is part of the upstreaming effort from fir-dev branch.

Co-authored-by: Eric Schweitz <eschweitz at nvidia.com>


Repository:
  rG LLVM Github Monorepo

https://reviews.llvm.org/D113657

Files:
  flang/lib/Optimizer/CodeGen/TypeConverter.h
  flang/test/Fir/types-to-llvm.fir


Index: flang/test/Fir/types-to-llvm.fir
===================================================================
--- flang/test/Fir/types-to-llvm.fir
+++ flang/test/Fir/types-to-llvm.fir
@@ -131,3 +131,75 @@
 func private @foo5(%arg0: !fir.complex<16>)
 // CHECK-LABEL: foo5
 // CHECK-SAME: !llvm.struct<(f128, f128)>)
+
+// -----
+
+// Test `!fir.vector<>` conversion.
+
+func private @foo0(%arg0: !fir.vector<2:f16>)
+// CHECK-LABEL: foo0
+// CHECK-SAME: vector<2xf16>
+
+func private @foo1(%arg0: !fir.vector<20:bf16>)
+// CHECK-LABEL: foo1
+// CHECK-SAME: vector<20xbf16>
+
+func private @foo2(%arg0: !fir.vector<30:f32>)
+// CHECK-LABEL: foo2
+// CHECK-SAME: vector<30xf32>
+
+func private @foo3(%arg0: !fir.vector<55:f64>)
+// CHECK-LABEL: foo3
+// CHECK-SAME: vector<55xf64>
+
+func private @foo4(%arg0: !fir.vector<15:f80>)
+// CHECK-LABEL: foo4
+// CHECK-SAME: vector<15xf80>
+
+func private @foo5(%arg0: !fir.vector<28:f128>)
+// CHECK-LABEL: foo5
+// CHECK-SAME: vector<28xf128>
+
+func private @foo6(%arg0: !fir.vector<100:i1>)
+// CHECK-LABEL: foo6
+// CHECK-SAME: vector<100xi1>
+
+func private @foo7(%arg0: !fir.vector<10:i8>)
+// CHECK-LABEL: foo7
+// CHECK-SAME: vector<10xi8>
+
+func private @foo8(%arg0: !fir.vector<12:i16>)
+// CHECK-LABEL: foo8
+// CHECK-SAME: vector<12xi16>
+
+func private @foo9(%arg0: !fir.vector<20:i32>)
+// CHECK-LABEL: foo9
+// CHECK-SAME: vector<20xi32>
+
+func private @foo10(%arg0: !fir.vector<30:i64>)
+// CHECK-LABEL: foo10
+// CHECK-SAME: vector<30xi64>
+
+func private @foo11(%arg0: !fir.vector<2:!fir.real<2>>)
+// CHECK-LABEL: foo11
+// CHECK-SAME: vector<2xf16>
+
+func private @foo12(%arg0: !fir.vector<2:!fir.real<3>>)
+// CHECK-LABEL: foo12
+// CHECK-SAME: vector<2xbf16>
+
+func private @foo13(%arg0: !fir.vector<2:!fir.real<4>>)
+// CHECK-LABEL: foo13
+// CHECK-SAME: vector<2xf32>
+
+func private @foo14(%arg0: !fir.vector<2:!fir.real<8>>)
+// CHECK-LABEL: foo14
+// CHECK-SAME: vector<2xf64>
+
+func private @foo15(%arg0: !fir.vector<2:!fir.real<10>>)
+// CHECK-LABEL: foo15
+// CHECK-SAME: vector<2xf80>
+
+func private @foo16(%arg0: !fir.vector<2:!fir.real<16>>)
+// CHECK-LABEL: foo16
+// CHECK-SAME: vector<2xf128>
Index: flang/lib/Optimizer/CodeGen/TypeConverter.h
===================================================================
--- flang/lib/Optimizer/CodeGen/TypeConverter.h
+++ flang/lib/Optimizer/CodeGen/TypeConverter.h
@@ -65,8 +65,13 @@
         [&](fir::RealType real) { return convertRealType(real.getFKind()); });
     addConversion(
         [&](fir::ReferenceType ref) { return convertPointerLike(ref); });
-    addConversion(
-        [&](SequenceType sequence) { return convertSequenceType(sequence); });
+    addConversion([&](fir::SequenceType sequence) {
+      return convertSequenceType(sequence);
+    });
+    addConversion([&](fir::VectorType vecTy) {
+      return mlir::VectorType::get(llvm::ArrayRef<int64_t>(vecTy.getLen()),
+                                   convertType(vecTy.getEleTy()));
+    });
     addConversion([&](mlir::TupleType tuple) {
       LLVM_DEBUG(llvm::dbgs() << "type convert: " << tuple << '\n');
       llvm::SmallVector<mlir::Type> inMembers;


-------------- next part --------------
A non-text attachment was scrubbed...
Name: D113657.386454.patch
Type: text/x-patch
Size: 3160 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20211111/2d98ef4c/attachment.bin>


More information about the llvm-commits mailing list