1// RUN: mlir-opt %s -canonicalize="test-convergence" | FileCheck %s 2 3//===----------------------------------------------------------------------===// 4// UnrealizedConversionCastOp 5//===----------------------------------------------------------------------===// 6 7// Test folding conversion casts feeding into other casts. 8// CHECK-LABEL: func @multiple_conversion_casts 9// CHECK-SAME: %[[ARG0:.*]]: i32, %[[ARG1:.*]]: 10func.func @multiple_conversion_casts(%arg0: i32, %arg1: i32) -> (i32, i32) { 11 // CHECK-NOT: unrealized_conversion_cast 12 // CHECK: return %[[ARG0]], %[[ARG1]] 13 %inputs:2 = builtin.unrealized_conversion_cast %arg0, %arg1 : i32, i32 to i64, i64 14 %outputs:2 = builtin.unrealized_conversion_cast %inputs#0, %inputs#1 : i64, i64 to i32, i32 15 return %outputs#0, %outputs#1 : i32, i32 16} 17 18// CHECK-LABEL: func @multiple_conversion_casts 19func.func @multiple_conversion_casts_failure(%arg0: i32, %arg1: i32, %arg2: i64) -> (i32, i32) { 20 // CHECK: unrealized_conversion_cast 21 // CHECK: unrealized_conversion_cast 22 %inputs:2 = builtin.unrealized_conversion_cast %arg0, %arg1 : i32, i32 to i64, i64 23 %outputs:2 = builtin.unrealized_conversion_cast %arg2, %inputs#1 : i64, i64 to i32, i32 24 return %outputs#0, %outputs#1 : i32, i32 25} 26