[Mlir-commits] [mlir] 3819789 - [MLIR][SPIRVToLLVM] Added Bitcast conversion pattern
Lei Zhang
llvmlistbot at llvm.org
Mon Jun 29 17:36:27 PDT 2020
Author: George Mitenkov
Date: 2020-06-29T20:32:48-04:00
New Revision: 3819789be6b83ac7af619b8279a0c480f9bffeeb
URL: https://github.com/llvm/llvm-project/commit/3819789be6b83ac7af619b8279a0c480f9bffeeb
DIFF: https://github.com/llvm/llvm-project/commit/3819789be6b83ac7af619b8279a0c480f9bffeeb.diff
LOG: [MLIR][SPIRVToLLVM] Added Bitcast conversion pattern
Added conversion pattern and tests for `spv.Bitcast` op. This one has
a direct mapping in LLVM dialect so `DirectConversionPattern` was used.
Differential Revision: https://reviews.llvm.org/D82748
Added:
Modified:
mlir/lib/Conversion/SPIRVToLLVM/ConvertSPIRVToLLVM.cpp
mlir/test/Conversion/SPIRVToLLVM/cast-ops-to-llvm.mlir
Removed:
################################################################################
diff --git a/mlir/lib/Conversion/SPIRVToLLVM/ConvertSPIRVToLLVM.cpp b/mlir/lib/Conversion/SPIRVToLLVM/ConvertSPIRVToLLVM.cpp
index 83be1c546e37..771610e45b7d 100644
--- a/mlir/lib/Conversion/SPIRVToLLVM/ConvertSPIRVToLLVM.cpp
+++ b/mlir/lib/Conversion/SPIRVToLLVM/ConvertSPIRVToLLVM.cpp
@@ -388,6 +388,7 @@ void mlir::populateSPIRVToLLVMConversionPatterns(
NotPattern<spirv::NotOp>,
// Cast ops
+ DirectConversionPattern<spirv::BitcastOp, LLVM::BitcastOp>,
DirectConversionPattern<spirv::ConvertFToSOp, LLVM::FPToSIOp>,
DirectConversionPattern<spirv::ConvertFToUOp, LLVM::FPToUIOp>,
DirectConversionPattern<spirv::ConvertSToFOp, LLVM::SIToFPOp>,
diff --git a/mlir/test/Conversion/SPIRVToLLVM/cast-ops-to-llvm.mlir b/mlir/test/Conversion/SPIRVToLLVM/cast-ops-to-llvm.mlir
index 6a772245e869..0d101f348a9f 100644
--- a/mlir/test/Conversion/SPIRVToLLVM/cast-ops-to-llvm.mlir
+++ b/mlir/test/Conversion/SPIRVToLLVM/cast-ops-to-llvm.mlir
@@ -1,5 +1,39 @@
// RUN: mlir-opt -convert-spirv-to-llvm %s | FileCheck %s
+//===----------------------------------------------------------------------===//
+// spv.Bitcast
+//===----------------------------------------------------------------------===//
+
+func @bitcast_float_to_integer_scalar(%arg0 : f32) {
+ // CHECK: {{.*}} = llvm.bitcast {{.*}} : !llvm.float to !llvm.i32
+ %0 = spv.Bitcast %arg0: f32 to i32
+ return
+}
+
+func @bitcast_float_to_integer_vector(%arg0 : vector<3xf32>) {
+ // CHECK: {{.*}} = llvm.bitcast {{.*}} : !llvm<"<3 x float>"> to !llvm<"<3 x i32>">
+ %0 = spv.Bitcast %arg0: vector<3xf32> to vector<3xi32>
+ return
+}
+
+func @bitcast_vector_to_scalar(%arg0 : vector<2xf32>) {
+ // CHECK: {{.*}} = llvm.bitcast {{.*}} : !llvm<"<2 x float>"> to !llvm.i64
+ %0 = spv.Bitcast %arg0: vector<2xf32> to i64
+ return
+}
+
+func @bitcast_scalar_to_vector(%arg0 : f64) {
+ // CHECK: {{.*}} = llvm.bitcast {{.*}} : !llvm.double to !llvm<"<2 x i32>">
+ %0 = spv.Bitcast %arg0: f64 to vector<2xi32>
+ return
+}
+
+func @bitcast_vector_to_vector(%arg0 : vector<4xf32>) {
+ // CHECK: {{.*}} = llvm.bitcast {{.*}} : !llvm<"<4 x float>"> to !llvm<"<2 x i64>">
+ %0 = spv.Bitcast %arg0: vector<4xf32> to vector<2xi64>
+ return
+}
+
//===----------------------------------------------------------------------===//
// spv.ConvertFToS
//===----------------------------------------------------------------------===//
More information about the Mlir-commits
mailing list