|
| 1 | +// RUN: mlir-opt --arith-emulate-wide-int="widest-int-supported=32" \ |
| 2 | +// RUN: --split-input-file --verify-diagnostics %s |
| 3 | + |
| 4 | +// Make sure we do not crash on unsupported types. |
| 5 | + |
| 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 |
| 12 | + return %3 : i64 |
| 13 | +} |
| 14 | + |
| 15 | +// ----- |
| 16 | + |
| 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> |
| 24 | +} |
| 25 | + |
| 26 | +// ----- |
| 27 | + |
| 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> |
| 33 | +} |
| 34 | + |
| 35 | +// ----- |
| 36 | + |
| 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> |
| 42 | +} |
| 43 | + |
0 commit comments