1 // RUN: mlir-opt --arith-emulate-wide-int="widest-int-supported=32" \
2 // RUN: --split-input-file --verify-diagnostics %s
4 // Make sure we do not crash on unsupported types.
6 // Unsupported result type in `arith.extsi`.
7 func.func @unsupported_result_integer(%arg0: i64) -> i64 {
8 // expected-error@+1 {{failed to legalize operation 'arith.extsi' that was explicitly marked illegal}}
9 %0 = arith.extsi %arg0: i64 to i128
10 %2 = arith.muli %0, %0 : i128
11 %3 = arith.trunci %2 : i128 to i64
17 // Unsupported result type in `arith.extsi`.
18 func.func @unsupported_result_vector(%arg0: vector<4xi64>) -> vector<4xi64> {
19 // expected-error@+1 {{failed to legalize operation 'arith.extsi' that was explicitly marked illegal}}
20 %0 = arith.extsi %arg0: vector<4xi64> to vector<4xi128>
21 %2 = arith.muli %0, %0 : vector<4xi128>
22 %3 = arith.trunci %2 : vector<4xi128> to vector<4xi64>
23 return %3 : vector<4xi64>
28 // Unsupported function return type.
29 // expected-error@+1 {{failed to legalize operation 'func.func' that was explicitly marked illegal}}
30 func.func @unsupported_return_type(%arg0: vector<4xi64>) -> vector<4xi128> {
31 %0 = arith.extsi %arg0: vector<4xi64> to vector<4xi128>
32 return %0 : vector<4xi128>
37 // Unsupported function argument type.
38 // expected-error@+1 {{failed to legalize operation 'func.func' that was explicitly marked illegal}}
39 func.func @unsupported_argument_type(%arg0: vector<4xi128>) -> vector<4xi64> {
40 %0 = arith.trunci %arg0: vector<4xi128> to vector<4xi64>
41 return %0 : vector<4xi64>