461 lines · plain
1// RUN: mlir-translate -mlir-to-llvmir -split-input-file -verify-diagnostics %s2 3 4llvm.func @atomic_hint(%v : !llvm.ptr, %x : !llvm.ptr, %expr : i32) {5 // expected-warning@below {{hint clause discarded}}6 omp.atomic.capture hint(uncontended) {7 omp.atomic.read %x = %v : !llvm.ptr, !llvm.ptr, i328 omp.atomic.write %v = %expr : !llvm.ptr, i329 }10 11 // expected-warning@below {{hint clause discarded}}12 omp.atomic.read %x = %v hint(contended) : !llvm.ptr, !llvm.ptr, i3213 14 // expected-warning@below {{hint clause discarded}}15 omp.atomic.write %v = %expr hint(nonspeculative) : !llvm.ptr, i3216 17 // expected-warning@below {{hint clause discarded}}18 omp.atomic.update hint(speculative) %x : !llvm.ptr {19 ^bb0(%arg0: i32):20 %result = llvm.add %arg0, %expr : i3221 omp.yield(%result : i32)22 }23 24 llvm.return25}26 27// -----28 29llvm.func @distribute_allocate(%lb : i32, %ub : i32, %step : i32, %x : !llvm.ptr) {30 // expected-error@below {{not yet implemented: Unhandled clause allocate in omp.distribute operation}}31 // expected-error@below {{LLVM Translation failed for operation: omp.distribute}}32 omp.distribute allocate(%x : !llvm.ptr -> %x : !llvm.ptr) {33 omp.loop_nest (%iv) : i32 = (%lb) to (%ub) step (%step) {34 omp.yield35 }36 }37 llvm.return38}39 40// -----41 42llvm.func @distribute_order(%lb : i32, %ub : i32, %step : i32) {43 // expected-error@below {{not yet implemented: Unhandled clause order in omp.distribute operation}}44 // expected-error@below {{LLVM Translation failed for operation: omp.distribute}}45 omp.distribute order(concurrent) {46 omp.loop_nest (%iv) : i32 = (%lb) to (%ub) step (%step) {47 omp.yield48 }49 }50 llvm.return51}52 53// -----54 55llvm.func @ordered_region_par_level_simd() {56 // expected-error@below {{not yet implemented: Unhandled clause parallelization-level in omp.ordered.region operation}}57 // expected-error@below {{LLVM Translation failed for operation: omp.ordered.region}}58 omp.ordered.region par_level_simd {59 omp.terminator60 }61 llvm.return62}63 64// -----65 66llvm.func @parallel_allocate(%x : !llvm.ptr) {67 // expected-error@below {{not yet implemented: Unhandled clause allocate in omp.parallel operation}}68 // expected-error@below {{LLVM Translation failed for operation: omp.parallel}}69 omp.parallel allocate(%x : !llvm.ptr -> %x : !llvm.ptr) {70 omp.terminator71 }72 llvm.return73}74 75// -----76 77llvm.func @sections_allocate(%x : !llvm.ptr) {78 // expected-error@below {{not yet implemented: Unhandled clause allocate in omp.sections operation}}79 // expected-error@below {{LLVM Translation failed for operation: omp.sections}}80 omp.sections allocate(%x : !llvm.ptr -> %x : !llvm.ptr) {81 omp.terminator82 }83 llvm.return84}85 86// -----87 88omp.private {type = private} @x.privatizer : i32 init {89^bb0(%mold: !llvm.ptr, %private: !llvm.ptr):90 %c0 = llvm.mlir.constant(0 : i32) : i3291 llvm.store %c0, %private : i32, !llvm.ptr92 omp.yield(%private: !llvm.ptr)93}94llvm.func @sections_private(%x : !llvm.ptr) {95 // expected-error@below {{not yet implemented: Unhandled clause privatization in omp.sections operation}}96 // expected-error@below {{LLVM Translation failed for operation: omp.sections}}97 omp.sections private(@x.privatizer %x -> %arg0 : !llvm.ptr) {98 omp.terminator99 }100 llvm.return101}102 103 104// -----105 106llvm.func @simd_linear(%lb : i32, %ub : i32, %step : i32, %x : !llvm.ptr) {107 // expected-error@below {{not yet implemented: Unhandled clause linear in omp.simd operation}}108 // expected-error@below {{LLVM Translation failed for operation: omp.simd}}109 omp.simd linear(%x = %step : !llvm.ptr) {110 omp.loop_nest (%iv) : i32 = (%lb) to (%ub) step (%step) {111 omp.yield112 }113 }114 llvm.return115}116 117// -----118 119omp.declare_reduction @add_f32 : f32120init {121^bb0(%arg: f32):122 %0 = llvm.mlir.constant(0.0 : f32) : f32123 omp.yield (%0 : f32)124}125combiner {126^bb1(%arg0: f32, %arg1: f32):127 %1 = llvm.fadd %arg0, %arg1 : f32128 omp.yield (%1 : f32)129}130atomic {131^bb2(%arg2: !llvm.ptr, %arg3: !llvm.ptr):132 %2 = llvm.load %arg3 : !llvm.ptr -> f32133 llvm.atomicrmw fadd %arg2, %2 monotonic : !llvm.ptr, f32134 omp.yield135}136llvm.func @scan_reduction(%lb : i32, %ub : i32, %step : i32, %x : !llvm.ptr) {137 // expected-error@below {{not yet implemented: Unhandled clause reduction with modifier in omp.wsloop operation}}138 // expected-error@below {{LLVM Translation failed for operation: omp.wsloop}}139 omp.wsloop reduction(mod:inscan, @add_f32 %x -> %prv : !llvm.ptr) {140 omp.loop_nest (%iv) : i32 = (%lb) to (%ub) step (%step) {141 omp.scan inclusive(%prv : !llvm.ptr)142 omp.yield143 }144 }145 llvm.return146}147 148// -----149 150llvm.func @single_allocate(%x : !llvm.ptr) {151 // expected-error@below {{not yet implemented: Unhandled clause allocate in omp.single operation}}152 // expected-error@below {{LLVM Translation failed for operation: omp.single}}153 omp.single allocate(%x : !llvm.ptr -> %x : !llvm.ptr) {154 omp.terminator155 }156 llvm.return157}158 159// -----160 161omp.private {type = private} @x.privatizer : i32 init {162^bb0(%mold: !llvm.ptr, %private: !llvm.ptr):163 %c0 = llvm.mlir.constant(0 : i32) : i32164 llvm.store %c0, %private : i32, !llvm.ptr165 omp.yield(%private: !llvm.ptr)166}167llvm.func @single_private(%x : !llvm.ptr) {168 // expected-error@below {{not yet implemented: Unhandled clause privatization in omp.single operation}}169 // expected-error@below {{LLVM Translation failed for operation: omp.single}}170 omp.single private(@x.privatizer %x -> %arg0 : !llvm.ptr) {171 omp.terminator172 }173 llvm.return174}175 176// -----177 178llvm.func @target_allocate(%x : !llvm.ptr) {179 // expected-error@below {{not yet implemented: Unhandled clause allocate in omp.target operation}}180 // expected-error@below {{LLVM Translation failed for operation: omp.target}}181 omp.target allocate(%x : !llvm.ptr -> %x : !llvm.ptr) {182 omp.terminator183 }184 llvm.return185}186 187// -----188 189llvm.func @target_device(%x : i32) {190 // expected-error@below {{not yet implemented: Unhandled clause device in omp.target operation}}191 // expected-error@below {{LLVM Translation failed for operation: omp.target}}192 omp.target device(%x : i32) {193 omp.terminator194 }195 llvm.return196}197 198// -----199 200omp.declare_reduction @add_f32 : f32201init {202^bb0(%arg: f32):203 %0 = llvm.mlir.constant(0.0 : f32) : f32204 omp.yield (%0 : f32)205}206combiner {207^bb1(%arg0: f32, %arg1: f32):208 %1 = llvm.fadd %arg0, %arg1 : f32209 omp.yield (%1 : f32)210}211atomic {212^bb2(%arg2: !llvm.ptr, %arg3: !llvm.ptr):213 %2 = llvm.load %arg3 : !llvm.ptr -> f32214 llvm.atomicrmw fadd %arg2, %2 monotonic : !llvm.ptr, f32215 omp.yield216}217llvm.func @target_in_reduction(%x : !llvm.ptr) {218 // expected-error@below {{not yet implemented: Unhandled clause in_reduction in omp.target operation}}219 // expected-error@below {{LLVM Translation failed for operation: omp.target}}220 omp.target in_reduction(@add_f32 %x -> %prv : !llvm.ptr) {221 omp.terminator222 }223 llvm.return224}225 226// -----227 228llvm.func @target_is_device_ptr(%x : !llvm.ptr) {229 // expected-error@below {{not yet implemented: Unhandled clause is_device_ptr in omp.target operation}}230 // expected-error@below {{LLVM Translation failed for operation: omp.target}}231 omp.target is_device_ptr(%x : !llvm.ptr) {232 omp.terminator233 }234 llvm.return235}236 237// -----238 239llvm.func @target_enter_data_depend(%x: !llvm.ptr) {240 // expected-error@below {{not yet implemented: Unhandled clause depend in omp.target_enter_data operation}}241 // expected-error@below {{LLVM Translation failed for operation: omp.target_enter_data}}242 omp.target_enter_data depend(taskdependin -> %x : !llvm.ptr) {243 omp.terminator244 }245 llvm.return246}247 248// -----249 250llvm.func @target_exit_data_depend(%x: !llvm.ptr) {251 // expected-error@below {{not yet implemented: Unhandled clause depend in omp.target_exit_data operation}}252 // expected-error@below {{LLVM Translation failed for operation: omp.target_exit_data}}253 omp.target_exit_data depend(taskdependin -> %x : !llvm.ptr) {254 omp.terminator255 }256 llvm.return257}258 259// -----260 261llvm.func @target_update_depend(%x: !llvm.ptr) {262 // expected-error@below {{not yet implemented: Unhandled clause depend in omp.target_update operation}}263 // expected-error@below {{LLVM Translation failed for operation: omp.target_update}}264 omp.target_update depend(taskdependin -> %x : !llvm.ptr) {265 omp.terminator266 }267 llvm.return268}269 270// -----271 272llvm.func @task_allocate(%x : !llvm.ptr) {273 // expected-error@below {{not yet implemented: Unhandled clause allocate in omp.task operation}}274 // expected-error@below {{LLVM Translation failed for operation: omp.task}}275 omp.task allocate(%x : !llvm.ptr -> %x : !llvm.ptr) {276 omp.terminator277 }278 llvm.return279}280 281// -----282 283omp.declare_reduction @add_f32 : f32284init {285^bb0(%arg: f32):286 %0 = llvm.mlir.constant(0.0 : f32) : f32287 omp.yield (%0 : f32)288}289combiner {290^bb1(%arg0: f32, %arg1: f32):291 %1 = llvm.fadd %arg0, %arg1 : f32292 omp.yield (%1 : f32)293}294atomic {295^bb2(%arg2: !llvm.ptr, %arg3: !llvm.ptr):296 %2 = llvm.load %arg3 : !llvm.ptr -> f32297 llvm.atomicrmw fadd %arg2, %2 monotonic : !llvm.ptr, f32298 omp.yield299}300llvm.func @task_in_reduction(%x : !llvm.ptr) {301 // expected-error@below {{not yet implemented: Unhandled clause in_reduction in omp.task operation}}302 // expected-error@below {{LLVM Translation failed for operation: omp.task}}303 omp.task in_reduction(@add_f32 %x -> %prv : !llvm.ptr) {304 omp.terminator305 }306 llvm.return307}308 309// -----310 311llvm.func @taskgroup_allocate(%x : !llvm.ptr) {312 // expected-error@below {{not yet implemented: Unhandled clause allocate in omp.taskgroup operation}}313 // expected-error@below {{LLVM Translation failed for operation: omp.taskgroup}}314 omp.taskgroup allocate(%x : !llvm.ptr -> %x : !llvm.ptr) {315 omp.terminator316 }317 llvm.return318}319 320// -----321 322omp.declare_reduction @add_f32 : f32323init {324^bb0(%arg: f32):325 %0 = llvm.mlir.constant(0.0 : f32) : f32326 omp.yield (%0 : f32)327}328combiner {329^bb1(%arg0: f32, %arg1: f32):330 %1 = llvm.fadd %arg0, %arg1 : f32331 omp.yield (%1 : f32)332}333atomic {334^bb2(%arg2: !llvm.ptr, %arg3: !llvm.ptr):335 %2 = llvm.load %arg3 : !llvm.ptr -> f32336 llvm.atomicrmw fadd %arg2, %2 monotonic : !llvm.ptr, f32337 omp.yield338}339llvm.func @taskgroup_task_reduction(%x : !llvm.ptr) {340 // expected-error@below {{not yet implemented: Unhandled clause task_reduction in omp.taskgroup operation}}341 // expected-error@below {{LLVM Translation failed for operation: omp.taskgroup}}342 omp.taskgroup task_reduction(@add_f32 %x -> %prv : !llvm.ptr) {343 omp.terminator344 }345 llvm.return346}347 348// -----349 350llvm.func @taskloop(%lb : i32, %ub : i32, %step : i32) {351 // expected-error@below {{not yet implemented: omp.taskloop}}352 // expected-error@below {{LLVM Translation failed for operation: omp.taskloop}}353 omp.taskloop {354 omp.loop_nest (%iv) : i32 = (%lb) to (%ub) step (%step) {355 omp.yield356 }357 }358 llvm.return359}360 361// -----362 363llvm.func @taskloop_untied(%lb : i32, %ub : i32, %step : i32) {364 // expected-error@below {{not yet implemented: omp.taskloop}}365 // expected-error@below {{LLVM Translation failed for operation: omp.taskloop}}366 omp.taskloop untied {367 omp.loop_nest (%iv) : i32 = (%lb) to (%ub) step (%step) {368 omp.yield369 }370 }371 llvm.return372}373 374// -----375 376llvm.func @taskwait_depend(%x: !llvm.ptr) {377 // expected-error@below {{not yet implemented: Unhandled clause depend in omp.taskwait operation}}378 // expected-error@below {{LLVM Translation failed for operation: omp.taskwait}}379 omp.taskwait depend(taskdependin -> %x : !llvm.ptr) {380 omp.terminator381 }382 llvm.return383}384 385// -----386 387llvm.func @taskwait_nowait() {388 // expected-error@below {{not yet implemented: Unhandled clause nowait in omp.taskwait operation}}389 // expected-error@below {{LLVM Translation failed for operation: omp.taskwait}}390 omp.taskwait nowait {391 omp.terminator392 }393 llvm.return394}395 396// -----397 398llvm.func @teams_allocate(%x : !llvm.ptr) {399 // expected-error@below {{not yet implemented: Unhandled clause allocate in omp.teams operation}}400 // expected-error@below {{LLVM Translation failed for operation: omp.teams}}401 omp.teams allocate(%x : !llvm.ptr -> %x : !llvm.ptr) {402 omp.terminator403 }404 llvm.return405}406 407// -----408 409omp.private {type = private} @x.privatizer : i32 init {410^bb0(%mold: !llvm.ptr, %private: !llvm.ptr):411 %c0 = llvm.mlir.constant(0 : i32) : i32412 llvm.store %c0, %private : i32, !llvm.ptr413 omp.yield(%private: !llvm.ptr)414}415llvm.func @teams_private(%x : !llvm.ptr) {416 // expected-error@below {{not yet implemented: Unhandled clause privatization in omp.teams operation}}417 // expected-error@below {{LLVM Translation failed for operation: omp.teams}}418 omp.teams private(@x.privatizer %x -> %arg0 : !llvm.ptr) {419 omp.terminator420 }421 llvm.return422}423 424// -----425 426llvm.func @wsloop_allocate(%lb : i32, %ub : i32, %step : i32, %x : !llvm.ptr) {427 // expected-error@below {{not yet implemented: Unhandled clause allocate in omp.wsloop operation}}428 // expected-error@below {{LLVM Translation failed for operation: omp.wsloop}}429 omp.wsloop allocate(%x : !llvm.ptr -> %x : !llvm.ptr) {430 omp.loop_nest (%iv) : i32 = (%lb) to (%ub) step (%step) {431 omp.yield432 }433 }434 llvm.return435}436 437// -----438 439llvm.func @wsloop_linear(%lb : i32, %ub : i32, %step : i32, %x : !llvm.ptr) {440 // expected-error@below {{not yet implemented: Unhandled clause linear in omp.wsloop operation}}441 // expected-error@below {{LLVM Translation failed for operation: omp.wsloop}}442 omp.wsloop linear(%x = %step : !llvm.ptr) {443 omp.loop_nest (%iv) : i32 = (%lb) to (%ub) step (%step) {444 omp.yield445 }446 }447 llvm.return448}449 450// -----451llvm.func @wsloop_order(%lb : i32, %ub : i32, %step : i32) {452 // expected-error@below {{not yet implemented: Unhandled clause order in omp.wsloop operation}}453 // expected-error@below {{LLVM Translation failed for operation: omp.wsloop}}454 omp.wsloop order(concurrent) {455 omp.loop_nest (%iv) : i32 = (%lb) to (%ub) step (%step) {456 omp.yield457 }458 }459 llvm.return460}461