brintos

brintos / llvm-project-archived public Read only

0
0
Text · 5.2 KiB · 9d7ab2b Raw
202 lines · plain
1// RUN: mlir-opt -split-input-file -convert-arith-to-spirv -verify-diagnostics %s2 3///===----------------------------------------------------------------------===//4// Cast ops5//===----------------------------------------------------------------------===//6 7module attributes {8  spirv.target_env = #spirv.target_env<9    #spirv.vce<v1.0, [Float16, Kernel], []>, #spirv.resource_limits<>>10} {11 12func.func @experimental_constrained_fptrunc(%arg0 : f32) {13  // expected-error@+1 {{failed to legalize operation 'arith.truncf'}}14  %3 = arith.truncf %arg0 to_nearest_away : f32 to f1615  return16}17 18} // end module19 20///===----------------------------------------------------------------------===//21// Binary ops22//===----------------------------------------------------------------------===//23 24// -----25 26module attributes {27  spirv.target_env = #spirv.target_env<28    #spirv.vce<v1.0, [Int8, Int16, Int64, Float16, Float64, Shader], []>, #spirv.resource_limits<>>29} {30 31func.func @unsupported_5elem_vector(%arg0: vector<5xi32>) {32  // expected-error@+1 {{failed to legalize operation 'arith.subi'}}33  %1 = arith.subi %arg0, %arg0: vector<5xi32>34  return35}36 37} // end module38 39// -----40 41module attributes {42  spirv.target_env = #spirv.target_env<43    #spirv.vce<v1.0, [Int8, Int16, Int64, Float16, Float64, Shader], []>, #spirv.resource_limits<>>44} {45 46func.func @unsupported_2x2elem_vector(%arg0: vector<2x2xi32>) {47  // expected-error@+1 {{failed to legalize operation 'arith.muli'}}48  %2 = arith.muli %arg0, %arg0: vector<2x2xi32>49  return50}51 52} // end module53 54// -----55 56func.func @int_vector4_invalid(%arg0: vector<2xi16>) {57  // expected-error @+2 {{failed to legalize operation 'arith.divui'}}58  // expected-error @+1 {{bitwidth emulation is not implemented yet on unsigned op}}59  %0 = arith.divui %arg0, %arg0: vector<2xi16>60  return61}62 63// -----64 65func.func @int_vector_invalid_bitwidth(%arg0: vector<2xi12>) {66  // expected-error @+1 {{failed to legalize operation 'arith.addi'}}67  %0 = arith.addi %arg0, %arg0: vector<2xi12>68  return69}70 71///===----------------------------------------------------------------------===//72// Constant ops73//===----------------------------------------------------------------------===//74 75// -----76 77func.func @unsupported_constant_i64_0() {78  // expected-error @+1 {{failed to legalize operation 'arith.constant'}}79  %0 = arith.constant 0 : i6480  return81}82 83// -----84 85func.func @unsupported_constant_i64_1() {86  // expected-error @+1 {{failed to legalize operation 'arith.constant'}}87  %0 = arith.constant 4294967296 : i64 // 2^3288  return89}90 91// -----92 93func.func @unsupported_constant_vector_2xi64_0() {94  // expected-error @+1 {{failed to legalize operation 'arith.constant'}}95  %1 = arith.constant dense<0> : vector<2xi64>96  return97}98 99// -----100 101func.func @unsupported_constant_f64_0() {102  // expected-error @+1 {{failed to legalize operation 'arith.constant'}}103  %1 = arith.constant 0.0 : f64104  return105}106 107// -----108 109func.func @unsupported_constant_vector_2xf64_0() {110  // expected-error @+1 {{failed to legalize operation 'arith.constant'}}111  %1 = arith.constant dense<0.0> : vector<2xf64>112  return113}114 115// -----116 117func.func @unsupported_constant_tensor_2xf64_0() {118  // expected-error @+1 {{failed to legalize operation 'arith.constant'}}119  %1 = arith.constant dense<0.0> : tensor<2xf64>120  return121}122 123// -----124 125func.func @constant_dense_resource_non_existant() {126  // expected-error @+2 {{failed to legalize operation 'arith.constant'}}127  // expected-error @+1 {{could not find resource blob}}128  %0 = arith.constant dense_resource<non_existant> : tensor<5xf32>  129  return130}131 132// -----133 134module {135func.func @constant_dense_resource_invalid_buffer() {136  // expected-error @+2 {{failed to legalize operation 'arith.constant'}}137  // expected-error @+1 {{resource is not a valid buffer}}138  %0 = arith.constant dense_resource<dense_resource_test_2xi32> : vector<2xi32>  139  return140  }141}142// This is a buffer of wrong type and shape143{-#144  dialect_resources: {145    builtin: {146      dense_resource_test_2xi32: "0x0800000054A3B53ED6C0B33E55D1A2BDE5D2BB3E"147    }148  }149#-}150 151///===----------------------------------------------------------------------===//152// Type emulation153//===----------------------------------------------------------------------===//154 155// -----156 157module attributes {158  spirv.target_env = #spirv.target_env<159    #spirv.vce<v1.0, [], []>, #spirv.resource_limits<>>160} {161 162// Check that we do not emualte i64 by truncating to i32.163func.func @unsupported_i64(%arg0: i64) {164  // expected-error@+1 {{failed to legalize operation 'arith.addi'}}165  %2 = arith.addi %arg0, %arg0: i64166  return167}168 169} // end module170 171// -----172 173module attributes {174  spirv.target_env = #spirv.target_env<175    #spirv.vce<v1.0, [], []>, #spirv.resource_limits<>>176} {177 178// Check that we do not emualte f64 by truncating to i32.179func.func @unsupported_f64(%arg0: f64) {180  // expected-error@+1 {{failed to legalize operation 'arith.addf'}}181  %2 = arith.addf %arg0, %arg0: f64182  return183}184 185} // end module186 187// -----188 189module attributes {190  spirv.target_env = #spirv.target_env<191    #spirv.vce<v1.0, [], []>, #spirv.resource_limits<>>192} {193 194// i64 is not a valid result type in this target env.195func.func @type_conversion_failure(%arg0: i32) {196  // expected-error@+1 {{failed to legalize operation 'arith.extsi'}}197  %2 = arith.extsi %arg0 : i32 to i64198  return199}200 201} // end module202