brintos

brintos / llvm-project-archived public Read only

0
0
Text · 10.5 KiB · 6aaaa60 Raw
443 lines · plain
1// RUN: mlir-opt -split-input-file -verify-diagnostics %s | FileCheck %s2 3//===----------------------------------------------------------------------===//4// spirv.CL.exp5//===----------------------------------------------------------------------===//6 7func.func @exp(%arg0 : f32) -> () {8  // CHECK: spirv.CL.exp {{%.*}} : f329  %2 = spirv.CL.exp %arg0 : f3210  return11}12 13func.func @expvec(%arg0 : vector<3xf16>) -> () {14  // CHECK: spirv.CL.exp {{%.*}} : vector<3xf16>15  %2 = spirv.CL.exp %arg0 : vector<3xf16>16  return17}18 19// -----20 21func.func @exp(%arg0 : i32) -> () {22  // expected-error @+1 {{op operand #0 must be 16/32/64-bit float or fixed-length vector of 16/32/64-bit float values}}23  %2 = spirv.CL.exp %arg0 : i3224  return25}26 27// -----28 29func.func @exp(%arg0 : vector<5xf32>) -> () {30  // expected-error @+1 {{op operand #0 must be 16/32/64-bit float or fixed-length vector of 16/32/64-bit float values of length 2/3/4}}31  %2 = spirv.CL.exp %arg0 : vector<5xf32>32  return33}34 35// -----36 37func.func @exp(%arg0 : f32, %arg1 : f32) -> () {38  // expected-error @+1 {{expected ':'}}39  %2 = spirv.CL.exp %arg0, %arg1 : i3240  return41}42 43// -----44 45func.func @exp(%arg0 : i32) -> () {46  // expected-error @+1 {{expected non-function type}}47  %2 = spirv.CL.exp %arg0 :48  return49}50 51// -----52 53//===----------------------------------------------------------------------===//54// spirv.CL.fabs55//===----------------------------------------------------------------------===//56 57func.func @fabs(%arg0 : f32) -> () {58  // CHECK: spirv.CL.fabs {{%.*}} : f3259  %2 = spirv.CL.fabs %arg0 : f3260  return61}62 63func.func @fabsvec(%arg0 : vector<3xf16>) -> () {64  // CHECK: spirv.CL.fabs {{%.*}} : vector<3xf16>65  %2 = spirv.CL.fabs %arg0 : vector<3xf16>66  return67}68 69func.func @fabsf64(%arg0 : f64) -> () {70  // CHECK: spirv.CL.fabs {{%.*}} : f6471  %2 = spirv.CL.fabs %arg0 : f6472  return73}74 75// -----76 77func.func @fabs(%arg0 : i32) -> () {78  // expected-error @+1 {{op operand #0 must be 16/32/64-bit float or fixed-length vector of 16/32/64-bit float values}}79  %2 = spirv.CL.fabs %arg0 : i3280  return81}82 83// -----84 85func.func @fabs(%arg0 : vector<5xf32>) -> () {86  // expected-error @+1 {{op operand #0 must be 16/32/64-bit float or fixed-length vector of 16/32/64-bit float values of length 2/3/4}}87  %2 = spirv.CL.fabs %arg0 : vector<5xf32>88  return89}90 91// -----92 93func.func @fabs(%arg0 : f32, %arg1 : f32) -> () {94  // expected-error @+1 {{expected ':'}}95  %2 = spirv.CL.fabs %arg0, %arg1 : i3296  return97}98 99// -----100 101func.func @fabs(%arg0 : i32) -> () {102  // expected-error @+1 {{expected non-function type}}103  %2 = spirv.CL.fabs %arg0 :104  return105}106 107// -----108 109//===----------------------------------------------------------------------===//110// spirv.CL.s_abs111//===----------------------------------------------------------------------===//112 113func.func @sabs(%arg0 : i32) -> () {114  // CHECK: spirv.CL.s_abs {{%.*}} : i32115  %2 = spirv.CL.s_abs %arg0 : i32116  return117}118 119func.func @sabsvec(%arg0 : vector<3xi16>) -> () {120  // CHECK: spirv.CL.s_abs {{%.*}} : vector<3xi16>121  %2 = spirv.CL.s_abs %arg0 : vector<3xi16>122  return123}124 125func.func @sabsi64(%arg0 : i64) -> () {126  // CHECK: spirv.CL.s_abs {{%.*}} : i64127  %2 = spirv.CL.s_abs %arg0 : i64128  return129}130 131func.func @sabsi8(%arg0 : i8) -> () {132  // CHECK: spirv.CL.s_abs {{%.*}} : i8133  %2 = spirv.CL.s_abs %arg0 : i8134  return135}136 137// -----138 139func.func @sabs(%arg0 : f32) -> () {140  // expected-error @+1 {{op operand #0 must be 8/16/32/64-bit integer or fixed-length vector of 8/16/32/64-bit integer values}}141  %2 = spirv.CL.s_abs %arg0 : f32142  return143}144 145// -----146 147func.func @sabs(%arg0 : vector<5xi32>) -> () {148  // expected-error @+1 {{op operand #0 must be 8/16/32/64-bit integer or fixed-length vector of 8/16/32/64-bit integer values of length 2/3/4}}149  %2 = spirv.CL.s_abs %arg0 : vector<5xi32>150  return151}152 153// -----154 155func.func @sabs(%arg0 : i32, %arg1 : i32) -> () {156  // expected-error @+1 {{expected ':'}}157  %2 = spirv.CL.s_abs %arg0, %arg1 : i32158  return159}160 161// -----162 163func.func @sabs(%arg0 : i32) -> () {164  // expected-error @+1 {{expected non-function type}}165  %2 = spirv.CL.s_abs %arg0 :166  return167}168 169// -----170 171//===----------------------------------------------------------------------===//172// spirv.CL.fma173//===----------------------------------------------------------------------===//174 175func.func @fma(%a : f32, %b : f32, %c : f32) -> () {176  // CHECK: spirv.CL.fma {{%[^,]*}}, {{%[^,]*}}, {{%[^,]*}} : f32177  %2 = spirv.CL.fma %a, %b, %c : f32178  return179}180 181// -----182 183func.func @fma(%a : vector<3xf32>, %b : vector<3xf32>, %c : vector<3xf32>) -> () {184  // CHECK: spirv.CL.fma {{%[^,]*}}, {{%[^,]*}}, {{%[^,]*}} : vector<3xf32>185  %2 = spirv.CL.fma %a, %b, %c : vector<3xf32>186  return187}188 189// -----190 191//===----------------------------------------------------------------------===//192// spirv.CL.mix193//===----------------------------------------------------------------------===//194 195func.func @mix(%a : f32, %b : f32, %c : f32) -> () {196  // CHECK: spirv.CL.mix {{%[^,]*}}, {{%[^,]*}}, {{%[^,]*}} : f32197  %2 = spirv.CL.mix %a, %b, %c : f32198  return199}200 201// -----202 203func.func @mix(%a : vector<3xf32>, %b : vector<3xf32>, %c : vector<3xf32>) -> () {204  // CHECK: spirv.CL.mix {{%[^,]*}}, {{%[^,]*}}, {{%[^,]*}} : vector<3xf32>205  %2 = spirv.CL.mix %a, %b, %c : vector<3xf32>206  return207}208 209// -----210 211//===----------------------------------------------------------------------===//212// spirv.CL.{F|S|U}{Max|Min}213//===----------------------------------------------------------------------===//214 215func.func @fmaxmin(%arg0 : f32, %arg1 : f32) {216  // CHECK: spirv.CL.fmax {{%.*}}, {{%.*}} : f32217  %1 = spirv.CL.fmax %arg0, %arg1 : f32218  // CHECK: spirv.CL.fmin {{%.*}}, {{%.*}} : f32219  %2 = spirv.CL.fmin %arg0, %arg1 : f32220  return221}222 223func.func @fmaxminvec(%arg0 : vector<3xf16>, %arg1 : vector<3xf16>) {224  // CHECK: spirv.CL.fmax {{%.*}}, {{%.*}} : vector<3xf16>225  %1 = spirv.CL.fmax %arg0, %arg1 : vector<3xf16>226  // CHECK: spirv.CL.fmin {{%.*}}, {{%.*}} : vector<3xf16>227  %2 = spirv.CL.fmin %arg0, %arg1 : vector<3xf16>228  return229}230 231func.func @fmaxminf64(%arg0 : f64, %arg1 : f64) {232  // CHECK: spirv.CL.fmax {{%.*}}, {{%.*}} : f64233  %1 = spirv.CL.fmax %arg0, %arg1 : f64234  // CHECK: spirv.CL.fmin {{%.*}}, {{%.*}} : f64235  %2 = spirv.CL.fmin %arg0, %arg1 : f64236  return237}238 239func.func @iminmax(%arg0: i32, %arg1: i32) {240  // CHECK: spirv.CL.s_max {{%.*}}, {{%.*}} : i32241  %1 = spirv.CL.s_max %arg0, %arg1 : i32242  // CHECK: spirv.CL.u_max {{%.*}}, {{%.*}} : i32243  %2 = spirv.CL.u_max %arg0, %arg1 : i32244  // CHECK: spirv.CL.s_min {{%.*}}, {{%.*}} : i32245  %3 = spirv.CL.s_min %arg0, %arg1 : i32246  // CHECK: spirv.CL.u_min {{%.*}}, {{%.*}} : i32247  %4 = spirv.CL.u_min %arg0, %arg1 : i32248  return249}250 251// -----252 253//===----------------------------------------------------------------------===//254// spirv.CL.rint255//===----------------------------------------------------------------------===//256 257// CHECK-LABEL: func.func @rint(258func.func @rint(%arg0 : f32) -> () {259  // CHECK: spirv.CL.rint {{%.*}} : f32260  %0 = spirv.CL.rint %arg0 : f32261  return262}263 264// CHECK-LABEL: func.func @rintvec(265func.func @rintvec(%arg0 : vector<3xf16>) -> () {266  // CHECK: spirv.CL.rint {{%.*}} : vector<3xf16>267  %0 = spirv.CL.rint %arg0 : vector<3xf16>268  return269}270 271// -----272 273//===----------------------------------------------------------------------===//274// spirv.CL.printf275//===----------------------------------------------------------------------===//276// CHECK-LABEL: func.func @printf(277func.func @printf(%fmt : !spirv.ptr<i8, UniformConstant>, %arg1 : i32, %arg2 : i32) -> i32 {278  // CHECK: spirv.CL.printf {{%.*}} {{%.*}}, {{%.*}} : !spirv.ptr<i8, UniformConstant>, i32, i32 -> i32279  %0 = spirv.CL.printf %fmt %arg1, %arg2 : !spirv.ptr<i8, UniformConstant>, i32, i32 -> i32280  return %0 : i32281}282 283// -----284 285func.func @tan(%arg0 : f32) -> () {286  // CHECK: spirv.CL.tan {{%.*}} : f32287  %2 = spirv.CL.tan %arg0 : f32288  return289}290 291// -----292 293func.func @tan(%arg0 : vector<4xf16>) -> () {294  // CHECK: spirv.CL.tan {{%.*}} : vector<4xf16>295  %2 = spirv.CL.tan %arg0 : vector<4xf16>296  return297}298 299// -----300 301func.func @atan(%arg0 : f32) -> () {302  // CHECK: spirv.CL.atan {{%.*}} : f32303  %2 = spirv.CL.atan %arg0 : f32304  return305}306 307// -----308 309func.func @atan(%arg0 : vector<4xf16>) -> () {310  // CHECK: spirv.CL.atan {{%.*}} : vector<4xf16>311  %2 = spirv.CL.atan %arg0 : vector<4xf16>312  return313}314 315// -----316 317func.func @atanh(%arg0 : f32) -> () {318  // CHECK: spirv.CL.atanh {{%.*}} : f32319  %2 = spirv.CL.atanh %arg0 : f32320  return321}322 323// -----324 325func.func @atanh(%arg0 : vector<4xf16>) -> () {326  // CHECK: spirv.CL.atanh {{%.*}} : vector<4xf16>327  %2 = spirv.CL.atanh %arg0 : vector<4xf16>328  return329}330 331// -----332 333func.func @sinh(%arg0 : f32) -> () {334  // CHECK: spirv.CL.sinh {{%.*}} : f32335  %2 = spirv.CL.sinh %arg0 : f32336  return337}338 339// -----340 341func.func @sinh(%arg0 : vector<4xf16>) -> () {342  // CHECK: spirv.CL.sinh {{%.*}} : vector<4xf16>343  %2 = spirv.CL.sinh %arg0 : vector<4xf16>344  return345}346 347// -----348 349func.func @cosh(%arg0 : f32) -> () {350  // CHECK: spirv.CL.cosh {{%.*}} : f32351  %2 = spirv.CL.cosh %arg0 : f32352  return353}354 355// -----356 357func.func @cosh(%arg0 : vector<4xf16>) -> () {358  // CHECK: spirv.CL.cosh {{%.*}} : vector<4xf16>359  %2 = spirv.CL.cosh %arg0 : vector<4xf16>360  return361}362 363// -----364 365func.func @asin(%arg0 : f32) -> () {366  // CHECK: spirv.CL.asin {{%.*}} : f32367  %2 = spirv.CL.asin %arg0 : f32368  return369}370 371// -----372 373func.func @asin(%arg0 : vector<4xf16>) -> () {374  // CHECK: spirv.CL.asin {{%.*}} : vector<4xf16>375  %2 = spirv.CL.asin %arg0 : vector<4xf16>376  return377}378 379// -----380 381func.func @asinh(%arg0 : f32) -> () {382  // CHECK: spirv.CL.asinh {{%.*}} : f32383  %2 = spirv.CL.asinh %arg0 : f32384  return385}386 387// -----388 389func.func @asinh(%arg0 : vector<4xf16>) -> () {390  // CHECK: spirv.CL.asinh {{%.*}} : vector<4xf16>391  %2 = spirv.CL.asinh %arg0 : vector<4xf16>392  return393}394 395// -----396 397func.func @acos(%arg0 : f32) -> () {398  // CHECK: spirv.CL.acos {{%.*}} : f32399  %2 = spirv.CL.acos %arg0 : f32400  return401}402 403// -----404 405func.func @acos(%arg0 : vector<4xf16>) -> () {406  // CHECK: spirv.CL.acos {{%.*}} : vector<4xf16>407  %2 = spirv.CL.acos %arg0 : vector<4xf16>408  return409}410 411// -----412 413func.func @acosh(%arg0 : f32) -> () {414  // CHECK: spirv.CL.acosh {{%.*}} : f32415  %2 = spirv.CL.acosh %arg0 : f32416  return417}418 419// -----420 421func.func @acosh(%arg0 : vector<4xf16>) -> () {422  // CHECK: spirv.CL.acosh {{%.*}} : vector<4xf16>423  %2 = spirv.CL.acosh %arg0 : vector<4xf16>424  return425}426 427// -----428 429func.func @atan2(%arg0 : f32, %arg1 : f32) -> () {430  // CHECK: spirv.CL.atan2 {{%.*}}, {{%.*}} : f32431  %2 = spirv.CL.atan2 %arg0, %arg1 : f32432  return433}434 435// -----436 437func.func @atan2(%arg0 : vector<4xf16>, %arg1 : vector<4xf16>) -> () {438  // CHECK: spirv.CL.atan2 {{%.*}}, {{%.*}} : vector<4xf16>439  %2 = spirv.CL.atan2 %arg0, %arg1 : vector<4xf16>440  return441}442 443