brintos

brintos / llvm-project-archived public Read only

0
0
Text · 3.2 KiB · c08fd86 Raw
119 lines · plain
1// RUN: mlir-opt %s -convert-openacc-to-scf -split-input-file | FileCheck %s2 3func.func @testenterdataop(%a: memref<f32>, %ifCond: i1) -> () {4  %0 = acc.create varPtr(%a : memref<f32>) -> memref<f32>5  acc.enter_data if(%ifCond) dataOperands(%0 : memref<f32>)6  return7}8 9// CHECK:      func @testenterdataop(%{{.*}}: memref<f32>, [[IFCOND:%.*]]: i1)10// CHECK:        scf.if [[IFCOND]] {11// CHECK-NEXT:     acc.enter_data dataOperands(%{{.*}} : memref<f32>)12// CHECK-NEXT:   }13 14// -----15 16func.func @testexitdataop(%a: memref<f32>, %ifCond: i1) -> () {17  %0 = acc.getdeviceptr varPtr(%a : memref<f32>) -> memref<f32>18  acc.exit_data if(%ifCond) dataOperands(%0 : memref<f32>)19  acc.delete accPtr(%0 : memref<f32>)20  return21}22 23// CHECK:      func @testexitdataop(%{{.*}}: memref<f32>, [[IFCOND:%.*]]: i1)24// CHECK:        scf.if [[IFCOND]] {25// CHECK-NEXT:     acc.exit_data dataOperands(%{{.*}} : memref<f32>)26// CHECK-NEXT:   }27 28// -----29 30func.func @testupdateop(%a: memref<f32>, %ifCond: i1) -> () {31  %0 = acc.update_device varPtr(%a : memref<f32>) -> memref<f32>32  acc.update if(%ifCond) dataOperands(%0 : memref<f32>)33  return34}35 36// CHECK:      func @testupdateop(%{{.*}}: memref<f32>, [[IFCOND:%.*]]: i1)37// CHECK:        scf.if [[IFCOND]] {38// CHECK:          acc.update dataOperands(%{{.*}} : memref<f32>)39// CHECK-NEXT:   }40 41// -----42 43func.func @update_true(%arg0: memref<f32>) {44  %true = arith.constant true45  %0 = acc.update_device varPtr(%arg0 : memref<f32>) -> memref<f32>46  acc.update if(%true) dataOperands(%0 : memref<f32>)47  return48}49 50// CHECK-LABEL: func.func @update_true51// CHECK-NOT:     if52// CHECK:         acc.update dataOperands53 54// -----55 56func.func @update_false(%arg0: memref<f32>) {57  %false = arith.constant false58  %0 = acc.update_device varPtr(%arg0 : memref<f32>) -> memref<f32>59  acc.update if(%false) dataOperands(%0 : memref<f32>)60  return61}62 63// CHECK-LABEL: func.func @update_false64// CHECK-NOT:     acc.update dataOperands65 66// -----67 68func.func @enter_data_true(%d1 : memref<f32>) {69  %true = arith.constant true70  %0 = acc.create varPtr(%d1 : memref<f32>) -> memref<f32>71  acc.enter_data async if(%true) dataOperands(%0 : memref<f32>)72  return73}74 75// CHECK-LABEL: func.func @enter_data_true76// CHECK-NOT:     if77// CHECK:           acc.enter_data async dataOperands78 79// -----80 81func.func @enter_data_false(%d1 : memref<f32>) {82  %false = arith.constant false83  %0 = acc.create varPtr(%d1 : memref<f32>) -> memref<f32>84  acc.enter_data async if(%false) dataOperands(%0 : memref<f32>)85  return86}87 88// CHECK-LABEL: func.func @enter_data_false89// CHECK-NOT:     acc.enter_data90 91// -----92 93func.func @exit_data_true(%d1 : memref<f32>) {94  %true = arith.constant true95  %0 = acc.getdeviceptr varPtr(%d1 : memref<f32>) -> memref<f32>96  acc.exit_data async if(%true) dataOperands(%0 : memref<f32>)97  acc.delete accPtr(%0 : memref<f32>)98  return99}100 101// CHECK-LABEL: func.func @exit_data_true102// CHECK-NOT:if103// CHECK:acc.exit_data async dataOperands104 105// -----106 107func.func @exit_data_false(%d1 : memref<f32>) {108  %false = arith.constant false109  %0 = acc.getdeviceptr varPtr(%d1 : memref<f32>) -> memref<f32>110  acc.exit_data async if(%false) dataOperands(%0 : memref<f32>)111  acc.delete accPtr(%0 : memref<f32>)112  return113}114 115// CHECK-LABEL: func.func @exit_data_false116// CHECK-NOT:acc.exit_data117 118// -----119