[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